В состав блока микропрограммного управления (БМУ, см. рис) входят:
12-разрядный регистр адреса долговременного запоминающего устройства РАДЗУ, т. е. регистр адреса микрокоманды, с логикой формирования его содержимого;
долговременное запоминающее устройство (ДЗУ), являющееся памятью микропрограмм, со схемами дешифрации адреса (ДШ);
72-разрядный регистр информации РИДЗУ, т. е. регистр микрокоманды;
36-разрядный дополнительный регистр информации РИДЗУД;
-
дешифраторы полей микрокоманды (ДШ МО и ДШ АН).
Долговременное запоминающее устройство
ДЗУ, логически являясь частью блока микропрограммного управления, «юридически», подобно всем остальным блокам памяти, считается отдельным устройством с шифром ЕС-3603 и спроектировано достаточно универсальным, чтобы при необходимости его можно было бы использовать в других устройствах с микропрограммным управлением, хотя вряд ли эта возможность использовалась на практике.
Ёмкость ДЗУ составляет 4096 72-разрядных слов; время выборки — 450 нс, а полное время цикла — 600 нс.
Для питания ДЗУ используются напряжения +5 В и –5 В, потребляемая мощность составляет порядка 50 Вт.
ДЗУ занимает две панели стойки процессора: в одной панели находится собственно накопитель, а во второй — управляющая им электроника (для последней потребовалось 32 ТЭЗа из 40 возможных на одной панели). Его структурная схема приведена на рисунке.
В состав ДЗУ входят:
регистр адреса РА (из блок-схемы БМУ становится ясным, что РА и РАДЗУ — один и тот же регистр, просто носящий разные наименования внутри и снаружи ДЗУ);
дешифраторы адреса ДШ1 и ДШ2;
блок накопителя БН;
регистр информации РИ — он же РИДЗУ, но снаружи ДЗУ;
местное устройство управления памятью (УП).
Заметим, что в официальной документации (техническом описании) обозначения составных частей несколько отличаются от принятых в [1]; например, регистры адреса и информации обозначаются соответственно ГРА и ГРИ. Представленная временная диаграмма работы ДЗУ взята как раз из технического описания.
Работа ДЗУ запускается отрицательным перепадом, т. е. переходом из логической 1 в логический 0, сигнала ГПРА (вероятно, его название расшифровывается как «приём адреса». По этому сигналу в РА (ГРА), выполненном на четырёх ТЭЗах, запоминается поступивший от процессора адрес обращения к памяти. Кроме того, ГПРА запускает внутренние цепи, синхронизирующие последующие действия ДЗУ. В частности, через 150 нс после его поступления производится установка триггера формирования импульса выборки жгутов ГТФОР, который остаётся установленным 300 нс и управляет работой дешифратора ДШ2.
Дешифраторы адреса ДШ1 и ДШ2 технически идентичны. Каждый из них имеет 6 входов и 64 выхода и занимает четыре идентичных ТЭЗа. В роли основных «строительных блоков» дешифратора выступают элементы 8И-НЕ (по одному элементу в микросхеме К155ЛА2), на входы которых поступают прямые либо инверсные выходы регистра адреса в зависимости от того, какое значение адреса должно декодироваться данным элементом. На выходах К155ЛА2 находятся инверторы, чтобы получить прямые, а не инверсные сигналы.
ДШ1 непрерывно декодирует старшие шесть разрядов адреса из РА; соответственно, состояние его выходов меняется только при приёме нового адреса.
ДШ2 декодирует шесть младших разрядов адреса из РА, а его работа разрешается триггером ГТФОР, поэтому в процессе считывания на выходе ДШ2, соответствующем заданному адресу, формируется импульс, совпадающий по времени (с небольшой задержкой) с сигналом ГТФОР.
Собственно накопитель ДЗУ вполне традиционно выполнен на трансформаторах. Основой запоминающего элемента для одного разряда является многостержневой магнитопровод, состоящий из 33 П-образных сердечников, расположенных вплотную друг к другу (см. рис.). Всего имеется 72 таких сердечника — по числу разрядов слова памяти.
Выходная обмотка (обмотка считывания) охватывает каждый из стержней магнитопровода (по пять витков на стержень; на рисунке отдельные витки не показаны), но делает это в противоположных направлениях для соседних стержней. Выводы обмотки подключены к усилителю считывания соответствующего разряда.
«Запись» единицы или нуля в некоторый разряд осуществляется прокладкой («прошивкой» — отсюда и пошёл данный термин) так называемого числового провода (на рисунке не показаны) либо через чётную, либо через нечётную ячейку, образованную соседними магнитопроводами. Поскольку считывающая обмотка проходит через них в противоположных направлениях, импульс, появившийся в числовом проводе, вызовет появление ответного импульса в обмотке считывания, но полярность последнего будет зависеть от того, через чётную или нечётную ячейку был проложен числовой провод.
Всего в накопителе 4096 числовых проводов — по одному для каждого слова памяти. Поскольку через каждую ячейку проходит множество числовых проводов, находящихся на разном расстоянии от сердечников, для уменьшения влияния физического положения числового провода на амплитуду выходных сигналов поверхность сердечников металлизирована. Для демпфирования колебательных процессов, возникающих в числовых проводах из-за паразитной ёмкостной связи между ними, на стержни надеты короткозамкнутые витки сопротивлением порядка 0,5 Ом.
Схема выборки числовых проводов приведена на рисунке.
Соединённые последовательно с разделительными диодами Д129–Д4224 числовые провода образуют диодную матрицу, имеющую по 64 шины двух разных направлений: верхние шины объединяют аноды разделительных диодов, а нижние — свободные концы числовых проводов.
Каждая верхняя шина соединена с эмиттером одного из транзисторов Т1–Т64, а нижняя — с коллектором одного из транзисторов Т65–Т128. При выборке информации на базу одного из транзисторов Т1–Т64 через диоды Д1–Д64 от ДШ1 (ГДШ1) поступает высокий потенциал, а на базу одного из транзисторов Т65–Т128 через диоды Д4225–Д4288 от ДШ2 (ГДШ2) — положительный импульс длительностью порядка 300 нс; на остальные диоды и через них них на базы транзисторов подаётся низкий уровень.
Собственно считывание выполняется подачей положительного импульса длительностью 100 нс на катоды диодов Д65–Д128, что вызывает появление импульса в выбранном числовом проводе. Резисторы R65–R128 служат для быстрого восстановления нулевого потенциала на верхних шинах после снятия считывающего импульса.
Для уменьшения помех, совпадающих по времени со считанными сигналами, на коллекторы транзисторов Т65–Т128 через резисторы R129–R129 подаётся напряжение +5 В. Для уменьшения помех, не совпадающих по времени со считанными сигналами, между коллекторами и базами транзисторов Т65–Т128 включены конденсаторы C1–C64. Диоды Д4289 и Д4290 обеспечивают надёжное запирание транзисторов Т65–Т128.
Резисторы R1–R64 и R193–R256 обеспечивают открывание соответствующих транзисторов при высоком уровне на выходах дешифраторов, подключённых через диоды. Их сопротивления выбираются исходя из максимально допустимого тока для микросхем 155-й серии, на которых выполнены дешифраторы.
Сигналы, поступающие с выходных обмоток, имеют амплитуду 30–50 мВ; для их усиления до уровня 0,5–1 В используются упоминавшиеся ранее гибридные микросхемы (микросборки) 2УН541.
Собственно накопитель, описанные выше диодно-транзисторные оконечные ступени дешифраторов адреса и усилители считывания конструктивно размещены на четырёх платах, соединённых друг с другом с помощью шарниров (см. рисунок). В рабочем состоянии БН складывается и вставляется в конструкцию, размещаемую в стандартной панели стойки процессора. При необходимости технического обслуживания или для поиска неисправностей БН вынимается из панели и раскрывается, что даёт доступ ко всем его элементам.
Регистр информации РИ (ГРИ) занимает 18 идентичных ТЭЗов, по четыре бита на одном ТЭЗе. С выходов усилителей считывания сигналы через модуль трансформаторов поступают на транзисторные ключи, половина которых срабатывает от положительных сигналов, а другая половина — от отрицательных. Эти ключи переключают состояние триггеров РИ, однако не совсем напрямую, а через схемы совпадения, учитывающие состояние соседних триггеров: это делается для блокирования помех, возникающих непосредственно после считывания информации. Перед выполнением считывания РИ сбрасывается, для чего устройство управления формирует сигнал У"0"ГРИ. Схема РИ в доступных источниках отсутствует, поэтому нельзя сказать точно, как именно эта блокировка работает.
Узел управления занимает один ТЭЗ. Для формирования необходимых длительностей и интервалов между сигналами используются линии задержки — надо полагать, на отрезках коаксиального кабеля, как это сделано в других блоках ЭВМ.
Формат микрокоманды
72-разрядная микрокоманда разделена на 19 полей, как показано на рисунке. К сожалению, в отличие от ЕС-1020 и ряда других ЭВМ, описание назначения отдельных полей и полные перечни кодируемых ими микроопераций в доступных источниках отсутствуют, известны лишь базовые принципы и некоторое количество подробностей, описываемых ниже.
Биты 0, 32 и 64 обеспечивают контроль по нечётности соответственно разрядов 0:31, 32:63 и 64:71; эти три бита нередко обозначают К.
В отличие от большинства других ЭВМ с микропрограммным управлением, в процессоре ЕС-1030 поля микрокоманды не имеют более-менее строгого функционального назначения: одно и то же поле может кодировать микрооперации, управляющие разными функциональными узлами процессора. Теоретически, это позволяет сократить общий размер микрокоманды, максимально плотно используя каждое поле с учётом того, какие микрооперации могут встречаться совместно, а какие — нет. На практике достижимость этого весьма сомнительна: для гарантированного получения положительного результата требуется несколько итераций проработки и микропрограмм, и аппаратуры, что требует, по меньшей мере, значительного времени.
Двенадцать полей микрокоманды — Г, В, Б, А, Н, Д, Ж, И, М, Е, Р, П (разряды 2:31, 33:46, 48:51, 65:71) — называются операционной частью и управляет работой всех блоков процессора, кроме блока микропрограммного управления (хотя, строго говоря, некоторые коды в полях Г, В, Б, А, задающие микрооперации анализов, влияют и на работу БМУ, о чём будет сказано ниже). В зависимости от состояния поля С (бит 47) к операционной части может также относиться поле Л (биты 52:55).
Поля В, Н, Ж, И, М, Л, Е, У, С позволяют кодировать две микрооперации одновременно: одна из них выполняется по тактовому сигналу С1, а вторая — по С2. Например, код микрооперации Е26 (т. е. десятичное значение 26 в поле Е, занимающем разряды 65:69 микрокоманды) задаёт микрооперацию РСА:=+1
, выполняемую по С1, и РАМП[2/5]:= РСА
, выполняемую по С2.
Коды микроопераций, выполняемых по С1, хранятся в составе всей 72-разрядной микрокоманды в регистре РИДЗУ, информация в который принимается «автоматически» в конце цикла считывания из ДЗУ, а сам РИДЗУ физически является частью ДЗУ. Коды микроопераций, выполняемых по С2, по тактовому сигналу С1 переписываются из РИДЗУ в РИДЗУД и сохраняются там до следующего занесения, что позволяет сразу после завершения сигнала С1 принимать в РИДЗУ новую микрокоманду. РИДЗУД содержит 36 разрядов и хранит значения полей В, Н, Ж, И, М, Л, Е, У, С; он выполнен на трёх ТЭЗах типа Т000/0001, находящихся по адресам 2E15, 2E16 и 2E17 рамы B.
В теории, одна микрокоманда позволяет одновременно задавать до 13 микроопераций для первого полутакта и до семи для второго (поля У и С сами по себе никаких микроопераций не задают, но влияют на другие поля, что описывается ниже). Всего же процессор реализует 612 различных микроопераций. Около двух третей из них упоминается в [1] и [2]; их названия появляются в статьях этого цикла при описании управляемых ими блоков процессора.
Дешифраторы микроопераций, выполняемых по тактовому сигналу С1, собраны на выходах регистра РИДЗУ, по С2 — на выходах РИДЗУД. Они размещаются в различных блоках процессора и выполнены на ТЭЗах трёх типов: 2030/0070, 2030/0071, 2030/0072 (в [2] последний обозначен как 2031/0072, что, очевидно, является ошибкой). Надо полагать, разные ТЭЗы соответствуют дешифраторам разной разрядности, а самые широкие дешифраторы, не умещающиеся на одном ТЭЗе, собираются из нескольких однотипных ТЭЗов. Основой дешифраторов являются элементы 8И-НЕ в виде микросхем К155ЛА2; на их входы в зависимости от дешифруемого значения поступают прямые и/или инверсные выходы соответствующих разрядов РИДЗУ или РИДЗУД.
Насколько можно судить из [2], в текстах микропрограмм для каждой микрокоманды указываются названия задаваемых ей микроопераций, рядом с которыми помещаются их десятичные коды, предваряемые буквой, указывающей поле микрокоманды, например:
ТИС:=ТРС (Б14), ТРС=1 (В48)
Сами по себе микрооперации, задаваемые микрокомандой, выполняются по одному из тактовых сигналов, однако инициированные ими действия могут продолжаться несколько тактов. Например, микрооперация РЗПР[4]:=1
, устанавливающая по тактовому сигналу С1 четвёртый разряд регистра запроса памяти, запускает процесс обращения к основной (оперативной) памяти, занимающий несколько тактов, что будет описано в отдельной статье, посвящённой ОП и блоку обращения к ней.
Как минимум одна микрооперация — РМО[5/8]:=КР5
, задаваемая единицей в поле П — задаётся не в микрокоманде, к которой она логически относится, а в следующей за ней. Эта микрооперация выполняется по тактовому сигналу С1 и задаёт занесение в разряды 5:8 регистра машинных ошибок РМО признаков ошибок байтов регистра Р5, информация в который может приниматься в предыдущей микрокоманде. Необходимость её выполнения в начале следующего такта объясняется, вероятно, слишком медленной работой схем контроля содержимого Р5.
Поля У и С (биты 1 и 47) называются битами блокировки. Первое из них задаёт, каким образом декодируются поля В, Г и Е, что, в теории, удваивает количество кодируемых ими микроопераций. Многие, но не все микрооперации, кодируемые при У=1, используются в микропрограммах диагностики. Единичное значение поля С блокирует дешифрацию полей М и Л (биты 48:55), что позволяет разместить в них константу, которая может быть принята в различные регистры процессора по микрооперациям вида Рn:=КОНСТ
, кодируемым другими полями.
Формирование адреса микрокоманды
Вся микропрограммная память разделена на 16 секторов по 256 слов; соответственно, адрес микрокоманды делится на четырёхразрядную базу в битах РАДЗУ[0/3] и восьмиразрядное смещение в РАДЗУ[4/11].
В документации адреса микрокоманд записываются в десятичном виде, но отдельно для каждой группы из четырёх разрядов. Например, запись 3.5.13 соответствует двоичному адресу 0011 0101 1101. Почему не использовалась шестнадцатеричная система, непонятно, но можно предположить, что создатели машины посчитали её слишком непривычной: помимо десятичной и двоичной, к концу 1960-х годов в СССР использовалась, главным образом, восьмеричная система. Далее будет использоваться либо шестнадцатеричная запись адресов без разделяющих точек, либо десятичная с точками.
Информация в РАДЗУ поступает из регистров РИДЗУ[56/63], регистра выполняемой операции РВО[0/7], регистра информации оперативной памяти РИОП[19/30] и регистра адреса пульта управления РАПУ[12/23], а также от схем формирования фиксированных адресов. Занесение адреса в РАДЗУ автоматически запускает процесс считывания соответствующей микрокоманды из ДЗУ и её занесение в РИДЗУ.
При обычном выполнении микропрограммы адрес следующей микрокоманды определяется содержимым текущей микрокоманды. Биты РИДЗУ[56/63] являются полем следующего адреса и обычно заносятся в младшие восемь разрядов РАДЗУ, определяя смещение следующей микрокоманды в секторе. Номер сектора, содержащийся в старших четырёх битах РАДЗУ, как правило, не изменяется. Для перехода в другой сектор микрокоманда должна содержать микрооперацию РАДЗУ:=КОНСТ N
, по которой содержимое поля Л, равное N, передаётся в РАДЗУ[0/3], определяя, тем самым, номер сектора, в котором размещается следующая микрокоманда. Эта микрокоманда кодируется значением 1 в поле Ж, а в поле С, как уже отмечалось, должна находиться единица, чтобы заблокировать использование поля Л для формирования какой-либо микрооперации. Соответственно, в микрокоманде, осуществляющей переход к другому сектору, записывается нечто вроде «С1, Л6, Ж1», что расшифровывается как «поле С равно 1, поле Л равно 6, поле Ж равно 1»; в результате в РАДЗУ[0/3] попадёт значение 0110.
В одной микрокоманде можно проверить выполнение одного, двух, трёх или четырёх условий одновременно, что обеспечивает условный переход по 2, 4, 8 или 16 направлениям. Микрооперации анализа задаются в полях А, Б, В и Г и определяют значение битов 11:8 адреса следующей микрокоманды соответственно. Если какое-либо из этих полей задаёт анализ условия, соответствующий бит РАДЗУ формируется по результату анализа (устанавливается, если условие выполняется, и сбрасывается в противном случае), а содержимое соответствующего бита поля адреса следующей микрокоманды игнорируется. Анализ выполняется в первом полутакте микрокоманды, т. е. анализируются условия, возникшие при выполнении предыдущих микрокоманд. При наличии в каком-либо из указанных полей микрооперации анализа занесение в соответствующий бит РАДЗУ значения бита РИДЗУ блокируется.
Анализы задаются кодами 16 и старше в полях А и Б и кодами 32 и старше в поле Г. Со значениями поля В, задающими микрооперации анализов, полной ясности нет. В [1] утверждается, что дополнительно принимается во внимание значение поля У: если оно равно нулю, то анализы задаются кодами поля В от 16 и старше, а если равно единице — значениями от 32 и старше. В то же время в [2] говорится, что анализы задаются кодами свыше 47, а поле У не упоминается. Не исключено, что верны оба описания, но относятся они к разным вариантам машины (более раннему и более позднему), но достоверно ничего по этому поводу сказать нельзя.
Помимо обычных анализов, каждый из которых формирует значение лишь одного бита адреса следующей микрокоманды, имеются микрооперации, а также аппаратно формируемые сигналы, воздействующие сразу на несколько разрядов.
Микрооперация анализа регистра фиксации запросов на прерывания (РФПД) имеет мнемонику АН РФПД
и код Б23. Она вызывает одновременное формирование разрядов адреса 9:11 в зависимости от наличия запросов прерываний разных видов. Логическая схема реализации её функций приведена на рисунке.
Собственно регистром фиксации запросов является РФП, обновляющий своё состояние по тактовому сигналу С1. РФПД является дополнительным регистром, куда по С2 принимается содержимое РФП. На выходе РФПД собрана схема анализа, определяющая наличие запросов разных видов и выделяющая самый приоритетный из них. Формируемые ей сигналы поступают в РАДЗУ[9/11] и в зависимости от наличия запросов прерываний имеют следующие значения:
001 — есть запрос программного прерывания (имеет наивысший приоритет);
010 — есть запрос прерывания по вызову супервизора;
101 — есть запрос внешнего прерывания;
110 — есть запрос прерывания ввода-вывода (имеет низший приоритет);
111 — запросы прерывания отсутствуют.
Чтобы эта микрооперация была выполнена правильно, необходимо заблокировать приём в РАДЗУ[9/11] соответствующих разрядов из битов РИДЗУ[61/63], т. е. из поля следующего адреса.
Описание этой микрооперации в [1] выглядит довольно странным. С одной стороны, утверждается, что блокировка приёма в бит 10 из РИДЗУ[62] реализуется «бесплатно» самой микрооперацией анализа РФПД, поскольку её код превышает 16 и она кодируется полем Б, а для блокировки приёма в биты 11 и 9 задаются специально предназначенные для этого микрооперации А63 и В63, т. е. что данная микрооперация кодируется, по сути, не одним, а тремя полями. С другой стороны, утверждается, что если в РИДЗУ[61/63] содержатся нули, блокировка не нужна, но тогда возникает вопрос: а зачем она вообще нужна, если можно просто указывать нулевые значения в тех разрядах адреса следующей микрокоманды, которые должны формироваться путём анализа каких-либо условий?
Фрагмент микропрограммы, приведённый в [2], показывает, что микрооперация Б23 действительно сопровождается блокировками А63 и В63, а заодно даёт понять, что эти операции носят названия АН РФПД
и БЛОК(А63,В63)
соответственно. Одновременно в этой же микрокоманде, расположенной по адресу 1.0.1, указывается адрес следующей микрокоманды 0.15, т. е. РИДЗУ[61/63] без всякой на то нужды установлены.
Микрооперация РАДЗУ:=РВО
(код А15) заносит в биты РАДЗУ[4/11] содержимое регистра выполняемой операции РВО, т. е. код операции текущей выполняемой команды, при этом занесение из поля следующего адреса РИДЗУ автоматически блокируется. Одновременно с этим в биты РАДЗУ[0/3] заносятся нули, хотя неясно, выполняется это автоматически по коду А15 или же в микрокоманде должна присутствовать микрооперация РАДЗУ:=КОНСТ 0
, что требует наличия микроопераций Ж1, С1, Л0, как описывалось выше; последнее выглядит более вероятным. Результатом этих действий является переход на шестнадцатеричный адрес от 000 до 0FF в соответствии с кодом операции.
Микрооперации РАДЗУ[9/10]:=РИОП[0/1]
(код Б19) и РАДЗУ[9/10]:= РИОП[16/17]
(код Б20) используются для ветвлений по формату команды, что производится в процессе её выборки для того, чтобы подготовить операнды команды для её последующего выполнения. Сам формат определяется, в первую очередь, двумя старшими битами старшего байта кода команды, положение которых в РИОП зависит от адреса команды (начинается ли она чётным или нечётным полусловом). Вместе с этими микрооперациями нужно также указывать микрооперацию БЛОК(В63)
.
Микрооперации РАДЗУ[9/10]:=РС4
(код Б62) и РАДЗУ[10/11]:=РС6
(код Б63) обеспечивают ветвление по содержимому двухбитных счётчиков РС4 и РС6, что используется при реализации команд, работающих с операндами переменной длины, расположенными в ОП, для определения положения байтов операндов в текущем слове. Первой из этих микроопераций нужна также микрооперация БЛОК(В63)
, а второй — БЛОК(А63)
.
Микрооперация РАДЗУ:=РИОП[19/30]
принимает адрес следующей микрокоманды из регистра информации оперативной памяти, что используется тестовыми микропрограммами. Она может быть задана в самой микрокоманде (код Г5, при этом поле У должно содержать 1) либо формироваться аппаратно блоком диагностики. Занесение из поля следующего адреса РИДЗУ при наличии этой микрооперации автоматически блокируется.
Помимо перечисленных, имеется большое число микроопераций анализов типа РС1[0/1]≠0
, позволяющих выполнить переход в зависимости от соблюдения того или иного условия; все они кодируются полями А, Б, В и Г.
Сигнал РАДЗУ:=РАПУ формируется аппаратурой при нажатии на пульте кнопки «Начало». По нему в РАДЗУ заносится содержимое регистра адреса пульта РАПУ. Очевидно, что эта возможность используется в процессе наладки процессора, обеспечивая запуск микропрограммы с определённого адреса.
Нажатие ряда других кнопок пульта формирует и заносит в РАДЗУ один из фиксированных адресов:
«Вкл. пит» — E01;
«Сброс системы» — E02;
«Ввод» — E04;
«Повт. РССП» — E08;
«Уст. РССП [40/63]» — E10;
«Запись» — E20;
«Счит.» — E40.
Появление сигнала «Приём фиксированного адреса диагностики» вызывает занесение в РАДЗУ одного из четырёх фиксированных адресов EC0, EC4, EC8, ECC, выбор которого определяется наличием одного из четырёх сигналов Т1Д, Т2Д, Т3Д и Т4Д соответственно (каждый из этих сигналов соответствует состоянию одноимённого диагностического триггера).
Любые сигналы приёма фиксированных адресов блокируют занесение адреса на основании содержимого РИДЗУ.
Из [2] известно, что адрес следующей микрокоманды формируется, главным образом, с помощью элементов И-ИЛИ-НЕ (К155ЛР1 и ЛР3): на один из входов некоторого элемента И подаётся возможный источник адреса для данного разряда, а на второй — сигнал выбора этого источника.
Блокировка дешифраторов микроопераций
В ряде случаев работа тех или иных дешифраторов блокируется, что подавляет выполнение микроопераций, закодированных в соответствующих полях. Условия блокировки дешифраторов делятся на общие и частные; первые относятся ко всем дешифраторам сразу, вторые — только к дешифраторам определённых полей микрокоманды.
В [1] приведена следующая схема появления условий блокировки дешифраторов.
Как можно видеть из схемы, работа всех дешифраторов запрещается при наличии сигнала БЛ ПУ ДШ МО («Блокировка пультом управления дешифраторов микроопераций»). Одна из причин его появления — наличие сигнала БЛ ДШ, отражающего состояние переключателя «Бл. ДШ» на пульте управления: полная блокировка дешифраторов нужна в процессе наладки ДЗУ, чтобы добиться правильного считывания микрокоманд без их фактического выполнения.
Остальные причины полной блокировки, согласно схеме, действуют лишь при наличии сигнала ТАКТ. Из описания функций пульта управления становится ясно, что этот сигнал позволяет остановить выполнение микропрограммы при возникновении одного из описываемых ниже условий и возобновить работу при нажатии кнопки «Нач.». Возможными причинами останова являются следующие:
переключатель рода работы находится в положении «Один.» (режим выполнения по одной микрокоманде). В этом случае нажатие кнопки «Нач.» позволит выполнить одну микрокоманду (сигнал ТАКТ снимается на время одного такта), после чего процессор опять остановится;
нажатие одной из кнопок, заносящих в РАДЗУ фиксированный адрес. В данном случае блокировка подавляет выполнение микрокоманды, пока в РАДЗУ не будет загружен новый адрес и не произойдёт выборка в РИДЗУ соответствующей ему новой микрокоманды, т. е. обеспечивает переход на начало микропрограммы, выполняющей действия, задаваемые нажатой кнопкой;
совпадение адреса ДЗУ, набранного на пульте, с адресом в РАДЗУ (останов по адресу микрокоманды);
установленное состояние «триггера часов процессора» ТЧП. Этот триггер никакого отношения к часам не имеет: последние впервые появились лишь в Системе 370 и в процессоре ЭВМ ЕС-1030, естественно, отсутствуют. всей вероятности, разработчики машины так его назвали, исходя из английского названия тактовых сигналов — clock (не вызывает сомнения, что в процессе работы они знакомились с доступной информацией по машинам самой IBM). Этот триггер, согласно [1], устанавливается, если в РИДЗУ попадает микрокоманда с неверной чётностью, а также в начале процедуры обработки возникшего сбоя, зафиксированного в регистре машинных ошибок РМО, и приводит к блокировке приёма нового адреса микрокоманды, а соответственно, к прекращению выборки новых микрокоманд. Синхросигналы С1 и С2 как таковые, однако, при этом не блокируются.
Частные блокировки имеют место в следующих случаях:
перевод тумблера «Цикл./Такт.» в положение «Цикл.» (это вызывает зацикливание выполнения текущей микрокоманды) блокирует микрооперации анализов, чтобы оставить неизменным содержимое разрядов РАДЗУ[8/11];
появление сигнала «Приём фиксированного адреса диагностики» также блокирует дешифраторы всех микроопераций анализов;
единичное значение поля С блокирует дешифраторы полей М и Л, что позволяет использовать их для хранения константы;
в зависимости от значения поля У блокируются те или иные дешифраторы полей В, Г и Е. В данном случае это не столько блокировка как таковая, сколько способ расширить набор микроопераций, кодируемых этими полями: по сути, поле У является старшим разрядом кода микрооперации, общим для всех трёх полей. Технически, однако, это реализовано подачей сигналов блокировки на определённые дешифраторы.
Заметим, что процессор позволяет блокировать микрооперации, выполняемые по тактовому сигналу С1, по С2 или по обоим сигналам в зависимости от состояния соответствующего переключателя на пульте.
Работа блока микропрограммного управления
Временная диаграмма работы блока микропрограммного управления приведена на рисунке.
В первом полутакте (С1) такта Т1 в РАДЗУ заносится адрес А1, что запускает процесс считывания следующей микрокоманды из ДЗУ. Считывание занимает примерно 450 нс и заканчивается приёмом микрокоманды М1 в РИДЗУ в конце второго полутакта (С2).
Микрокоманда М1 выполняется в такте Т2. В полутакте С1 выполняются заданные микрокомандой микрооперации, относящиеся к этому полутакту, включая все микрооперации анализов. Сформированный адрес следующей микрокоманды принимается в РАДЗУ, что запускает считывание следующей микрокоманды. Кроме того, в первом же полутакте часть содержимого РИДЗУ передаётся в РИДЗУД.
В полутакте С2 выполняются микрооперации, относящиеся к этому полутакту, — именно их коды были занесены в РИДЗУД в полутакте С1. Это позволяет выполнять эти микрооперации одновременно с загрузкой в РИДЗУ следующей микрокоманды.
Считывание из ДЗУ запускается самим фактом занесения адреса в РАДЗУ, т. е. при обычном приёме следующего адреса, сформированного под управлением текущей выполняемой микрокоманды (сигнал РАДЗУ[4/11]:=РИДЗУ[56/63]), или при наличии любого из сигналов РАДЗУ:=РВО, РАДЗУ:=РИОП[19/30], РАДЗУ:=РАПУ, «Приём фиксированного адреса ПУ», «Приём фиксированного адреса диагностики».
Приём адреса в РАДЗУ, а соответственно, выборка микрокоманды блокируется в следующих случаях:
если произошёл останов по адресу ДЗУ;
если переключатель режима работы находится в положении «Один.»;
если установлен триггер останова синхронизации (триггер часов ТЧП).
netch80
В этих рассказах много интересного с исторической точки зрения, но если не заглубляться, то первым из интересного становится разница в принципиальных подходах и в терминологии.
Например, почему ЗУ, в котором надо физически переставлять проводки для изменения, называется "долговременным", а не "постоянным"? Я бы однозначно ожидал, что ДЗУ - это диск, лента, даже перфокарта, но не такой агрегат... он таки типовое ПЗУ.
Почему биты управления общим принципом расшифровки основных полей это "биты блокировки" - тоже что-то очень древнее. Вспоминается, что в центре переливания крови отдел выдачи готовых препаратов называется "экспедиция". Или как в старом ГОСТ на шифрование контрольная сумма с криптографической надёжностью это "имитовставка". Это ещё не ломоносовский "распущенный подонок", но приближается:))
Это не только у них. Посмотрите, например, стандарты ECMA, типа ECMA-48 (ASCII плюс правила использования 8-битного расширения): коды заданы не в виде 3fh или 0x3f или хотя бы 3f₁₆, а в виде 03/15. Аналогичное видел в ANSI стандартах. Видимо, общий подход того периода. Суффиксы и префиксы тоже не устоялись: в документации по VAX, например (а это уже 1990, в моём экземпляре) постоянно запись в стиле "A8, hex".
4 ТЭЗ на один дешифратор адреса - это крайне мелкая интеграция... понятно, почему и откуда, но с современной точки зрения обидно.
С точки зрения анализа инженерных трюков, одно из самых интересных, это как вообще могла выполняться самодиагностика машины с достаточно точным показом места проблемы, и без дополнительных технических средств. Как по мне, это почти всегда высший пилотаж конструкторской мысли. Вот эту тему хотелось бы развить подробнее.
SIISII Автор
Ну, в ЕС-1020 вовсю использовалась шестнадцатеричная система, хотя в "минсках", если правильно помню, -- восьмеричная. Т.е. там в те же самые годы не побоялись перейти на шестнадцатеричную как более подходящую для Системы 360.
По-настоящему устоявшейся терминологии не было, Скажем, минчане говорили "локальная память", а армяне -- "местная память", имея в виду логически одно и то же. С основной памятью вообще бардак по всему Союзу: если исходить из IBMовской терминологии, она должна называться именно основной (main storage), но у нас её именовали то основной, то оперативной. Особенно это сбивало с толку в, например, ЕС-1020 и ЕС-1130, где часть физической оперативной памяти использовалась не как основная память (видимая программисту), а для других целей (как локальная и мультиплексная в ЕС-1020, как память каналов и область почтового ящика для общения процессора и каналов в ЕС-1130).
Ну а что крайне мелкая интеграция... Первые же несколько типов микросхем 155-й серии; самые сложные -- К155ЛР1 и К155ЛР3. Плюс, печатные платы ещё двухсторонние, а не многослойные, поэтому всего максимум 24 микросхемы на ТЭЗ. Так что ничего удивительного, что их по 4 штуки на один дешифратор уходило.
sim2q
Да на эти платы горько было смотреть сколько там места свободного, причём они часто не все забиты. А вот многослойки от ЕС1056 (если не ошибаюсь) на ЭСЛ наоборот поражали плотностью, что выпаять что то было сложно.
SIISII Автор
Кажется, ЕС-1056 в природе не было. ЕС-1055 была (ГДРовская). Но все ЕСки, кроме 1020, 1030, 1022 и, наверное, 1033, были на многослойках и с плотным размещением микросхем -- порядка 70 на ТЭЗ вместо 24 на означенных машинах с двухсторонними платами.
Плюс добавьте малое количество контактов на разъёме -- всего 48. На многослойках, кроме ЕС-1050/52, использовался разъём со 135 контактами (правда, часть из них могла физически отсутствовать -- в 1035, если память не изменяет, было 113 контактов, остальные места пустые).
Плюс ручная трассировка с шагом 1,25 -- большую плотность связей не сделаешь. Впрочем, такая оставалась и на большинстве многослоек, лишь в каких-то поздних старших машинах (1065?) перешли на шаг 0,5.
Но многослойки на момент создания 1050 только учились делать, так что неудивительно, что для более слабых машин, разрабатывавшихся одновременно с ней, использовали двухсторонние платы.