Системная магистраль: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Строка 31: Строка 31:


=== Канал связи (КС) ===
=== Канал связи (КС) ===
«Канал связи» — это две тетрады, в которые главный [[ИК1302|процессор]] может поместить число — байт с [[Русская мнемоника|кодом операции]].
«Канал связи» — это две тетрады, в которые [[ИК1302|главный процессор]] может поместить число — байт с [[Русская мнемоника|кодом операции]].


Если при [[Режим выполнения программы|работе по программе]] или в [[Режим автоматической работы|ручном режиме]] головной процессор не может обработать операцию с каким-то кодом своими силами, то он кладет код операции в регистр КС кольца и начинает ждать.
Если при [[Режим выполнения программы|работе по программе]] или в [[Режим автоматической работы|ручном режиме]] [[ИК1302|головной процессор]] не может обработать операцию с каким-то кодом своими силами, то он кладет код операции в регистр КС кольца и начинает ждать.


Ведомые процессоры все время следят за регистром КС в [[Системная магистраль|кольце данных]]. Как только появляется [[Русская мнемоника|код операции]], который может обработать ведомый процессор, он начинает его обрабатывать, например, выполнять [[+|функцию сложения]], [[F SIN|вычисление синуса]] и т. д. Ведомый процессор самостоятельно извлекает из [[Системная магистраль|кольца]] нужные регистры, когда они приходят к нему по [[Системная магистраль|кольцу]], производит с ними операции, и результат помещает обратно. После выполнения процессором своих действий, он очищает регистр канала связи, затерев младшую тетраду числом «F». То есть если в канале связи появилось число 10 (код [[+|сложения]]), то по окончанию счета в регистре КС будет записано число 1F.
Ведомые процессоры все время следят за регистром КС в [[Системная магистраль|кольце данных]]. Как только появляется [[Русская мнемоника|код операции]], который может обработать ведомый процессор, он начинает его обрабатывать, например, выполнять [[+|функцию сложения]], [[F SIN|вычисление синуса]] и т. д. Ведомый процессор самостоятельно извлекает из [[Системная магистраль|кольца]] нужные регистры, когда они приходят к нему по [[Системная магистраль|кольцу]], производит с ними операции, и результат помещает обратно. После выполнения процессором своих действий, он очищает регистр канала связи, затерев младшую тетраду числом «F». То есть если в канале связи появилось число 10 (код [[+|сложения]]), то по окончанию счета в регистре КС будет записано число 1F.


Одновременно с выставлением кода операции в канал связи в головном чипе включается специальный счетчик ожидания по типу сторожевого таймера. Если ни один ведомый процессор не сможет обработать команду по каналу связи, то через определенное время головной процессор сам очистит канал связи и выдаст на индикаторе сообщение об ошибке «ЕГГОГ».  
Одновременно с выставлением [[Русская мнемоника|кода операции]] в канал связи в головном чипе включается специальный счетчик ожидания по типу сторожевого таймера. Если ни один ведомый процессор не сможет обработать команду по каналу связи, то через определенное время головной процессор сам очистит канал связи и выдаст на индикаторе сообщение об ошибке {{ЕГГ0Г}}.  


Этим таймаутом пользуются ведомые чипы, если в процессе вычисления произошла ошибка с числом. Например, пользователь попытался извлечь корень из отрицательного числа. В этом случае ведомый чип ничего не выставляет в канал связи, а головной процессор через несколько секунд сам выводит сообщение об ошибке. Оттого в калькуляторах вывод надписи «ЕГГОГ» при подобного рода ошибках занимал так много времени.
Этим таймаутом пользуются ведомые чипы, если в процессе вычисления произошла ошибка с числом. Например, пользователь попытался [[F SQRT|извлечь корень]] из отрицательного числа. В этом случае ведомый чип ничего не выставляет в канал связи, а [[ИК1302|головной процессор]] через несколько секунд сам выводит сообщение об ошибке. Оттого в калькуляторах вывод надписи {{ЕГГ0Г}} при подобного рода ошибках занимал так много времени.
 
Главный процессор может не знать, какие есть в кольце другие процессоры. Он всего лишь выставляет код в канал связи, а его обрабатывают другие процессоры. Можно, например, заменить микросхему К745ИК1306 на другую или сделать свою разработку на основе микроконтроллера, как сделали еще в советские времена в калькуляторе "Электроника МС-1104".


[[ИК1302|Главный процессор]] может не знать, какие есть в [[Системная магистраль|кольце]] другие процессоры. Он всего лишь выставляет код в канал связи, а его обрабатывают другие процессоры. Можно, например, заменить микросхему [[К745ИК1306]] на другую или сделать свою разработку на основе микроконтроллера, как сделали еще в советские времена в калькуляторе [[«Электроника МС-1104»]].


== Ссылки ==
== Ссылки ==
* Практически вся приведённая здесь информация взята из статьи [https://habr.com/ru/post/467501/ «Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»»] на Хабре
* Практически вся приведённая здесь информация взята из статьи [https://habr.com/ru/post/467501/ «Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»»] на Хабре
* См. также книгу Я.К. Трохименко [[Программируемые микрокалькуляторы. Устройство и пользование. (книга)| Программируемые микрокалькуляторы. Устройство и пользование.]]
* См. также книгу Я.К. Трохименко [[Программируемые микрокалькуляторы. Устройство и пользование. (книга)| Программируемые микрокалькуляторы. Устройство и пользование.]]

Версия от 06:28, 11 июня 2020

Суммарно два регистра M (см. ИК13) и два регистра по 1008 бит (см. ИР2) образуют системную магистраль ПМК — кольцо размером в 42*4 + 42*4 + 1008 + 1008 = 2352 бита.

Всё поле данных разработчики разбили на три одинаковые области по 784 бита (196 тетрад или 98 байт). В первой области М3 хранится программа пользователя (98 шагов), во второй области М1 — регистры данных (14 регистров с номерами 0-9, a, b, c, d по 14 тетрад каждый), а третья область М2 — служебная.

Три области не идут друг за другом. В синхропрограмме есть несколько повторяющихся операций, которые отнимают три такта и приводят к тому, что числа в регистрах хранятся на каждой третьей ячейке. В данных кольца это и реализовано. Сначала передается первая тетрада области М1, затем первая тетрада области М2 и затем первая тетрада области М3. Потом идут вторые тетрады и так далее. И пока за три такта отрабатываются микрокоманды 3, 4, 5 в синхропрограмме, ненужные области пропускаются.

Через несколько лет после появления Б3-34 появились две новые модели — МК-61 и МК-52. У них добавился еще один чип К745ИК1306, где вычисляются операции с градусами и логические операции.

В К745ИК1306 есть такой же регистр М, как и в К145ИК1302 и К145ИК1303. Появление этого чипа добавило в кольцо один регистр памяти (14 тетрад), еще семь шагов программы (14 тетрад) и на 14 тетрад увеличилась служебная область.

Область памяти М1

В области М1 находятся регистры памяти 0-9, a, b, c, d, e. В них интересно то, что для хранения чисел надо 12 тетрад (1 — знак мантиссы, 8 — мантисса, 3 — порядок), а на один регистр выделяется 14 тетрад (чтобы делилось на 42 в процессоре). В итоге две тетрады на каждый регистр не используются.

Область памяти М3

В области М3 располагается память программ. Там всё просто — 98 шагов для Б3-34 и 105 шагов (на 14 тетрад больше) для МК-61 и МК-52.

Область памяти М2

Область М2 самая интересная. В нем кроме регистров X, Y, Z, T, BX, располагается область Ms, канал связи КС и Метка.

Подобласть Ms

Область, обозначенная как Ms, довольно большая. Она занимает одну шестую часть области данных кольца. И эта область не используется в калькуляторе. При разработке архитектуры разработчики предусматривали возможность сделать «область программ-данных». Это — такая область, в которую можно записывать или программу, или регистры с данными. Причем довольно большая область — 56 программных шагов.

В калькуляторах предполагались включить специальные функции в комбинации с кнопкой [К] для обмена (над кнопками 1 и 2, сейчас там пустое место). В серийных моделях эта область пропала, а так у нас могло бы быть больше регистров памяти или программа длиннее на 56 шагов. Об этой области вскользь упоминалось в журнале «Техника-молодежи», № 7 за 1986 год.

Метка

Самый важный элемент синхронизации в данных кольца — так называемая «Метка». Это последовательность из девяти тетрад, состоящих из единиц. При появлении кода «Метка» внутренний счетчик у процессоров сбрасывается, и начинается отсчет данных кольца относительно кода Метка. В самом начале после включения машинки головной процессор К145ИК1302 инициализирует кольцо и формирует Метку. Команды и содержимое регистров подобраны так, что код Метка не может встретиться ни в данных, ни в программе.

Продвинутые пользователи калькуляторов семейства Б3-34 наслышаны о «пустышке» — недокументированной ситуации, когда на индикаторе отображается только десятичная точка. Это — код, состоящий только из единиц. Когда этот код появляется, внутренний счетчик сбивается, и калькулятор начинает чудить — появляется два кода Метка и вся синхронизация сбивается — калькулятор принимает одну область памяти за другую.

Внутренняя адресация относительна относительно кода Метка. При появлении чип К745ИК1306 с дополнительным регистром М, количество ячеек увеличилось, и они условно добавились в конец, потому что в архитектуре вся область данных в кольце непрерывна. В этой архитектуре можно добавить еще один процессор ИК13, тогда станет больше еще на один регистр памяти, и добавится еще 7 шагов программы (максимально — 112).

Канал связи (КС)

«Канал связи» — это две тетрады, в которые главный процессор может поместить число — байт с кодом операции.

Если при работе по программе или в ручном режиме головной процессор не может обработать операцию с каким-то кодом своими силами, то он кладет код операции в регистр КС кольца и начинает ждать.

Ведомые процессоры все время следят за регистром КС в кольце данных. Как только появляется код операции, который может обработать ведомый процессор, он начинает его обрабатывать, например, выполнять функцию сложения, вычисление синуса и т. д. Ведомый процессор самостоятельно извлекает из кольца нужные регистры, когда они приходят к нему по кольцу, производит с ними операции, и результат помещает обратно. После выполнения процессором своих действий, он очищает регистр канала связи, затерев младшую тетраду числом «F». То есть если в канале связи появилось число 10 (код сложения), то по окончанию счета в регистре КС будет записано число 1F.

Одновременно с выставлением кода операции в канал связи в головном чипе включается специальный счетчик ожидания по типу сторожевого таймера. Если ни один ведомый процессор не сможет обработать команду по каналу связи, то через определенное время головной процессор сам очистит канал связи и выдаст на индикаторе сообщение об ошибке  ЕГГOГ .

Этим таймаутом пользуются ведомые чипы, если в процессе вычисления произошла ошибка с числом. Например, пользователь попытался извлечь корень из отрицательного числа. В этом случае ведомый чип ничего не выставляет в канал связи, а головной процессор через несколько секунд сам выводит сообщение об ошибке. Оттого в калькуляторах вывод надписи  ЕГГOГ  при подобного рода ошибках занимал так много времени.

Главный процессор может не знать, какие есть в кольце другие процессоры. Он всего лишь выставляет код в канал связи, а его обрабатывают другие процессоры. Можно, например, заменить микросхему К745ИК1306 на другую или сделать свою разработку на основе микроконтроллера, как сделали еще в советские времена в калькуляторе «Электроника МС-1104».

Ссылки