Аппаратный контроль
Общие принципы
Для контроля правильности передачи и хранения информации в регистрах служат схемы контроля чётности. Технически они идентичны аналогичным схемам процессора ЭВМ ЕС-1020, что неудивительно: обе машины создавались на одной элементной базе в одно и то же время, поэтому базовые схемотехнические решения у них тоже близки, а временами и совпадают. На следующем рисунке представлена стандартная схема контроля чётности, обеспечивающая проверку одного байта информации. Для её работы требуются прямые и инверсные значения каждого из контролируемых битов. Это не влечёт дополнительных аппаратных затрат, поскольку, в силу использования триггеров, собранных из отдельных логических элементов, оба выхода каждого триггера (прямой и инверсный) всегда доступны.
На приведённой схеме сигнал вида +A[n] соответствует неинвертированному значению бита n, а вида –A[n] — инвертированному. Элемент, обозначенный как M2 — это так называемая «свёртка по модулю 2», технически являющаяся элементом 2,2И-2ИЛИ-НЕ (две штуки в одной микросхеме К155ЛР1), к инверсному выходу которого для получения прямого значения подключён инвертор (обычно получаемый из элемента 2И-НЕ, т. е. выполненный на микросхеме К155ЛА3).
Помимо обычной проверки чётности, данная схема выявляет так называемые двухпроводные сбои, когда и прямое, и инверсное значение некоторого бита совпадают. Легко подсчитать, что на эту схему требуется четыре микросхемы К155ЛР1 (восемь элементов 2,2И-2ИЛИ-НЕ) и две с четвертью микросхемы К155ЛА3 (девять элементов 2И-НЕ).
Изрядная часть оборудования процессора контролируется путём предсказания нового значения на основе старого значения и планируемой модификации; об этом несколько подробнее будет сказано ниже. Ряд узлов контролируется дублированием. В любом случае, сравнение ожидаемой и фактической информации выполняется с помощью схем, подобных схеме контроля чётности.
Распределение контрольных точек в процессоре показано на рисунке.
Контроль сумматора
Контроль сумматора состоит из нескольких отдельных видов контроля.
Во-первых, контролируется чётность полусуммы. Сама по себе полусумма H — это результат операции «исключающее или» между парами битов исходных операндов: Hi=Ai⊕Bi. Но операция «исключающее или», как известно, лежит и в основе формирования контрольных разрядов. Легко показать, что чётность каждого байта полусуммы равна результату операции «исключающее или» между значениями контрольных битов соответствующих байтов исходного операнда: PH=PA⊕PB. Таким образом, контроль чётности полусуммы сводится к вычислению контрольного бита для каждого байта полусуммы и сравнения его с результатом операции «исключающее или» между контрольными битами исходных байтов.
Та же идея служит для проверки правильности вычисления полной суммы. Каждый бит полной суммы — это результат операции «исключающее или» между полусуммой и переносом в этот разряд: Si=Hi⊕Ci. Соответственно, чётность результата равна результату операции «исключающее или» между чётностью полусуммы и чётностью переносов: PS=PH⊕PC.
Контроль правильности формирования переносов выполняется дублированием схем формирования переносов.
Информация об ошибках формирования полусуммы и переносов принимается в регистр ошибок микрооперацией РМО[0/4]:=КСМ
.
Приём информации в регистр Р5 с выходов сумматора вместе с предсказанными битами чётности осуществляется по тактовому сигналу С1. На выходе регистра расположена схема контроля чётности, проверяющая правильность работы и самого регистра, и сумматора. Однако время её работы превышает полтакта, и сформированный сигнал ошибки не может быть принят в регистр ошибок по тактовому сигналу С2 того же такта. По этой причине индикаторы ошибок байтов Р5 временно сохраняются в специальных триггерах и принимаются в регистр ошибок по тактовому сигналу С1 следующего такта по микрооперации РМО[5/8]:=КР5
, кодируемой в микрокоманде, следующей за микрокомандой суммирования и приёма результата в Р5.
Результат суммирования может приниматься в Р5 не только прямо, но и со сдвигом (микрооперации вида Р5:=ПР(1) СМ
). Сам по себе сдвиг никаких сложностей не вызывает, однако необходимо корректировать контрольные разряды, чтобы они соответствовали именно тем битам, которые попадают в соответствующие байты Р5. С этой целью вычисляется чётность информации, которая «идёт мимо» данного байта регистра или, наоборот, попадает в него, хотя относится к соседнему байту. Эти вычисления основываются на значениях переносов и полусуммы, т. е. выполняются, не дожидаясь определения полной суммы, что позволяет исключить лишние задержки. Например, чётность второго байта результата при сдвиге вправо или влево на один бит вычисляется следующим образом:
PS2 ПР(1)=PHS2⊕H7⊕H15⊕C16⊕C8⊕PC[8/15],
PS2 ЛВ(1)=PHS2⊕H8⊕H16⊕C17⊕C9⊕PC[8/15].
Контроль дополнительного сумматора и его регистров
У четырёхразрядного регистра Р6 имеется два контрольных бита — Р6[4] и Р6[4*]. Обычно они совпадают, поскольку содержимое Р6[4] тактовым сигналом С2 переписывается в Р6[4*].
Дополнительный контрольный разряд понадобился из-за того, что информация в Р6 может приниматься не только в весь регистр целиком, но и в его отдельные разряды (например, по микрооперации Р6[0/1]:=СМ[30/31]
). Старое значение контрольного бита, сохраняемое в Р6[4*], используется для формирования нового значения Р6[4] с учётом изменения только определённых битов регистра. Правда, как именно это выполняется, имеющиеся источники не описывают.
Результат работы дополнительного сумматора, включая предсказанное значение контрольного бита, принимается в регистр Р6″ целиком.
Контроля содержимого регистров как такового нет, он выполняется лишь при передаче сформированной на СМД суммы через Р6″ и Р6 в Р5.
Контроль десятичного сумматора
Контроль десятичного сумматора основан на тех же идеях, что и контроль основного сумматора (чётность полусуммы, чётность переносов), при этом проверка результата осуществляется лишь при передаче результата суммирования в Р5. Однако наличие цепей коррекции первого операнда на 6 и результата на 10 требует выполнения коррекции предсказанной чётности результата, которая вычисляется по формуле:
PS=Pa⊕Pb⊕Pc⊕P6⊕P10,
где Pa и Pb — чётности исходных операндов, Pc — чётность внутренних переносов сумматора, P6 и P10 — признаки коррекции чётности при увеличении первого операнда и результата на 6 и 10 соответственно.
Признак корректности чётности при увеличении первого операнда на 6 формируется следующим образом:
P6=(A1∙A2⊕A5∙A6)∙F,
где F — признак прибавления 6 к первому операнду (равен нулю, если прибавление не выполняется).
Признак коррекции чётности по результатам вычитания 10 определяется следующим образом:
P10=S1∙S2∙C1ГР⊕S5∙S6∙C2ГР,
где С1ГР и С2ГР — переносы из старшей и младшей тетрад сумматора соответственно.
Схема контроля десятичного сумматора приведена на рисунке. Признаки ошибок принимаются микрооперацией РМО[10,12]:=КСМ ДЕС
.
Контроль узла обработки байтов
Общие принципы контроля узла обработки байтов из [1] понять возможно, а вот детали реализации — нет, поскольку эта книга содержит изрядное количество ошибок. В частности, в разделе, посвящённом контролю УОБ, она утверждает, что этот блок выполняет операции побитового сравнения («исключающее или-не»), логического умножения («логическое и») и логического сложения («логическое или») — однако последнее неверно, что видно из описания УОБ, приводимого ранее в этой же книге: третьей выполняемой им операцией является «исключающее или», или «сложение по модулю 2», как её обычно именуют в советской литературе.
Исходная информация для УОБ хранится в двух однобайтовых регистрах РC и РD. Помимо восьми информационных разрядов 0:7, они содержат по два контрольных бита, получивших номера 8 и 9 — по одному биту на каждый полубайт. Такая организация хранения контрольных разрядов связана, несомненно, с тем, что содержимое этих регистров может передаваться и участвовать в операции УОБ не только прямо, но и крест-накрест, причём либо целыми байтами, либо отдельными полубайтами. Но она влечёт за собой проблему правильной установки контрольных разрядов при приёме информации в эти регистры. [1] говорит о том, что если информация принимается не во весь регистр целиком, он предварительно должен быть обнулён, при этом контрольные разряды примут единичные значения — контроль, как обычно, осуществляется дополнением информации до нечётного числа единиц. Говорится также о том, что микрооперация РC[0/3]:=ЗОНА
, заносящая в старший полубайт РC код зоны (0011 либо 1111 в зависимости от того, установлен ли режим КОИ-8 или ДКОИ), вообще не воздействует на контрольный бит этого полубайта, поскольку при предшествующем обнулении он уже был установлен в правильное (единичное) значение. Но совершенно непонятным остаётся, как, например, формируются контрольные разряды при выполнении микрооперации вроде РC[4/5]:=РС3
или РD[0]:=Р3[0]
: они изменяют не полубайт, а меньшее число разрядов.
Говоря о контроле операции побитового сравнения, [1] приводит следующую формулу предсказания чётности её результата:
Pбс = (C0⊕D0)⊕(C1⊕D1)⊕…⊕(C7⊕D7) = PC⊕ PD
Здесь Pбс — предсказанная чётность операции побитового сравнения, Ci и Di — значения битов исходных операндов, PC и PD — значения битов чётности исходных операндов.
На самом деле, как видно из формулы, между исходными операндами выполняется не операция побитового сравнения, а операция «исключающее или». Кроме того, при результате, содержащем чётное число единиц (в частности, при нулевом результате), будет получено нулевое значение предсказанной чётности — а она должна быть единичной, ведь информация контролируется дополнением до нечётного числа единиц. Чтобы получить правильный контрольный бит, необходимо инвертировать результат этой формулы.
Ещё одной странностью является то, что, согласно [1], результат операции побитового сравнения контролируется путём сравнения предсказанной чётности с фактической чётностью результата, занесённого в регистр Р7 и вычисленного стандартной схемой проверки чётности на выходе этого регистра, причём признак ошибки фиксируется микрооперацией РМО[9]:=КГОБ
. Но, как известно из этой же книги и о чём уже говорилось выше, результат операции побитового сравнения не заносится в регистр Р7, туда может попасть лишь результат операции «исключающее или»! Ещё один вопрос связан с мнемоникой КГОБ: узел обработки байтов в [1], за исключением данного места, всегда обозначается УОБ, хотя в [2] обозначение ГОБ встречается несколько раз. Впрочем, не исключено, что это опечатки: подготовку и вёрстку любого издания явно осуществляли не инженеры, разрабатывавшие процессор, а «девочки-дизайнеры» и не такие ляпы допускать умеют.
Для Операции логического умножения («логическое и») предсказать чётность результата разумными средствами невозможно, поэтому сама операция выполняется двумя независимыми блоками. Результат одного из них принимается в Р7, а результат второго используется для формирования предсказанной чётности:
Pлу = (C0·D0)⊕(C1·D1)⊕…⊕(C7·D7)
Как и в предыдущем случае, предсказанная чётность, если её вычислять по приведённой формуле, будет инвертированной по сравнению со значением бита чётности, который должен быть сформирован. Это может быть как следствием того, что в формулах забывают указать инверсию, так и тем, что технически при контроле используются не истинные, а инвертированные значения контрольных битов — вполне возможно, что их проще формировать технически.
Далее [1] сообщает о контроле логического сложения и приводит следующую формулу предсказания бита чётности результата:
Pлс = PC⊕ PD⊕Pлу
Эта формула выглядит совершенной бессмыслицей, не годящейся ни для какой реальной операции — не говоря о том, что логическое сложение (обычное «логическое или»), если верить той же [1], как и [2], УОБ не выполняет.
Насчёт собственно проверки результата операции ясности тоже нет. О контроле результата «как бы побитового сравнения» говорилось выше: контрольные биты двух полубайтов результата формируются одновременно с битами самого результата и заносятся в соответствующие разряды регистра Р7 (он тоже имеет не один, а два контрольных разряда). А вот для логического умножения и «как бы логического сложения» применяется весьма сложное, если не сказать извращённое, решение. Во время выполнения одной из этих микроопераций в Р7 принимается лишь её результат, но не предсказанная чётность — к этому моменту она ещё не сформирована. Кроме того, по тактовому сигналу С2 устанавливается один из триггеров ТХО1 и ТХО2, показывающий, какая именно операция выполнялась. В следующей микрокоманде всегда выполняется микрооперация пересылки содержимого Р7 в один из байтов Р5, при этом информационные разряды байта Р5 устанавливаются равными информационным разрядам регистра Р7, однако в контрольный бит байта Р5 передаётся предсказанная чётность PЛУ или PЛС. Дальнейшая проверка выполняется схемой контроля содержимого Р5: если реальная чётность принятого байта отличается от его предсказанной чётности, занесённой в контрольный бит, фиксируется ошибка.
Вероятно, если отсутствуют микрооперации, устанавливающие один из триггеров ТХО1 и ТХО2, они по тактовому сигналу С2 сбрасываются, что обеспечивает выдачу в Р5 контрольного бита, сформированного из двух контрольных разрядов Р7.
Контроль счётчиков
Счётчики для каждого своего разряда имеют два триггера: пока один хранит старое значение, второй принимает новое, сформированное из старого; затем значение из «нового» триггера пересылается в старый. Их контроль выполняется путём предсказания чётности результата изменения значения счётчика и сравнения его с реальной чётностью результата. Объединённый сигнал ошибки чётности счётчиков РС1–РС6 принимается в регистр ошибок микрооперацией РМО[17]:=РС1/РС6
.
РССП[40/63] технически тоже является счётчиком, причём каждый его байт имеет собственный контрольный разряд. Контроль инкремента тоже выполняется предсказанием чётности результата; индикатор ошибки запоминается микрооперацией РМО[11]:=КРССП[40/63]
.
Контроль регистров Р4 и Р4*
Регистры Р4 и Р4* образуют сдвиговый регистр. На выходе каждого байта регистра Р4 имеются стандартные схемы контроля чётности, которые проверяют содержимое регистра до и после сдвига.
Правильность выполнения сдвига контролируется путём предсказания значений контрольных разрядов, для чего берётся исходное значение бита чётности и он корректируется, исходя из вдвигаемых и выдвигаемых разрядов данного байта. Кроме того, предусмотрены схемы коррекции значений контрольных разрядов, используемые при небайтовых передачах информации в этот регистр; коррекция основывается на сопоставлении чётности новых и старых разрядов в пределах частично изменяемого байта.
Из [1] складывается впечатление, что ошибка чётности Р4 принимается в РМО[16] аппаратно, без явно заданной микрооперации, что кажется не очень правдоподобным, ведь остальные сигналы ошибок фиксируются микрооперациями.
Контроль оперативной памяти
Сигналы ошибки адреса и информации ОП формируются схемами контроля, расположенными на выходах регистров адреса и информации памяти РАОП и РИОП. Эти сигналы являются объединёнными сигналами ошибок, поступающими из четырёх блоков ОП, и технически относятся к оборудованию ОП, а не процессора.
Схема обработки ошибок памяти при обращении процессора или таймера приведена на рисунке (ошибки при обращении канала обрабатываются оборудованием общего канала, рассмотрение работы которого, как и ввода-вывода в целом, выходит за рамки данной публикации).
При поступлении объединённого сигнала ошибок для определения блока ОП, в котором произошла ошибка, выполняется анализ разрядов РАСП[5/6], кодирующих номер блока ОП, к которому выполняется обращение. Выходы дешифратора определяют бит РМО, устанавливаемый при обнаружении ошибки. Биты РМО[24/27] указывают на ошибку в регистре информации блоков ОП 1–4, а биты РМО[28/31] — на ошибку в регистре адреса.
Сигнал разрешения приёма в РМО вырабатывает триггер ТПС. Как видно по схеме, он устанавливается довольно сложным образом. Первая его установка производится по тактовому сигналу С2 в то время, когда установлен триггер ТИ3*, т. е. во время полутакта ТТИ3* блока обращения к ОП. В предыдущем полутакте ТТИ3 БООП запускает операцию в ОП, что обеспечивает, в частности, приём в РАОП адреса обращения. Соответственно, к моменту начала полутакта ТТИ3* принятый в РАОП адрес уже проверен схемами контроля на его выходе и при наличии ошибки выдан соответствующий сигнал — и данная установка ТПС обеспечивает приём этого сигнала в один из разрядов РМО[28/31]. Установленный ТПС по следующему тактовому сигналу С1 устанавливает вспомогательный триггер Т2ПС, а последний по С2 вновь устанавливает ТПС, а также ещё один вспомогательный триггер Т1ПС. Из этого понятно, что данная вторичная установка ТПС происходит через полтора полутакта с момента запуска ОП — а к этому времени данные, считанные из ОП или подлежащие записи в неё, уже занесены в РИОП и проверены схемами его контроля. Соответственно, эта установка обеспечивает приём сигнала ошибки РИОП в один из разрядов РМО[24/27]. Установка же Т1ПС обеспечивает сброс Т2ПС и, по всей вероятности, ТПС — схема сброса последнего не показана.
Если ошибка РИОП или РАОП приводит к установке соответствующего разряда РМО, то она при соблюдении некоторых дополнительных условий устанавливает триггеры ТРРСП и ТБУОП. Последний блокирует управление ОП, т. е. прекращает работу БООП, что используется в начале записи состояния оборудования на момент возникновения ошибки. Дополнительными условиями для установки этих триггеров являются:
-
разрешённое состояние прерываний от схем контроля (единица в разряде РССП[13]): запись состояния оборудования возможна лишь в рамках обработки прерывания от схем контроля, а если они запрещены, факт ошибки просто фиксируется в РМО, а процессор пытается продолжать работу;
-
сброшенное состояние триггера игнорирования ошибок ТИОП; подробнее о нём будет сказано в разделе, посвящённом обработке ошибок;
-
отсутствие сигнала ОСТ — он имеется, если переключатель режимов контроля на пульте находится в состоянии, вызывающем немедленный останов процессора при сбоях;
-
сброшенное состояние триггера ТРОП, назначение которого неизвестно. Возможно, его название расшифровывается как «триггер ручных операций» и он устанавливается, когда управление процессором осуществляется с пульта.
Сброс триггеров ТРРСП и ТБУОП выполняется по сигналам сброса системы, сброса блока диагностики и на определённых этапах записи состояния в процессе обработки машинной ошибки, что подробнее будет описано ниже.
Заметим, что возникновение ошибки в РАОП аппаратно блокирует операцию записи: вместо неё выполняется чтение ОП с последующей регенерацией прочитанного значения. Исключением является запись в прямоадресуемую (фиксированную) ячейку 1, которая всё равно будет выполнена: она используется в процессе записи состояния машины при возникновении аппаратных сбоев. Возможно, состояние РАОП игнорируется и при обращении к другим прямоадресуемым ячейкам, поскольку для доступа к ним используется не обычный адрес в РАОП, а установка того или иного триггера фиксированной ячейки по отдельным сигналам, что описывалось в статье, посвящённом памяти.
Регистр ошибок
Для фиксации признаков обнаруженных машинных ошибок служит 32-разрядный регистр машинных ошибок РМО, чьи разряды имеют следующее назначение:
-
биты 0:3 — ошибки при формировании полусуммы в основном сумматоре (для каждого из байтов — свой бит);
-
бит 4 — ошибка формирования переноса в основном сумматоре;
-
биты 5:8 — ошибка в байтах регистра Р5 (в частности, ошибка на выходах основного сумматора, если результат суммирования принимался в Р5);
-
бит 9 — ошибка «полусумматора», т. е. схемы «исключающее или-не», узла обработки байтов;
-
бит 10 — ошибка полусуммы десятичного сумматора;
-
бит 11 — ошибка РССП[40/63], т. е. в адресе следующей команды;
-
бит 12 — ошибка переноса десятичного сумматора;
-
биты 13:14 — не используются;
-
бит 15 — искусственная ошибка (используется в процессе диагностики оборудования);
-
бит 16 — ошибка сдвигающего регистра Р4;
-
бит 17 — ошибка счётчиков РС1–РС6;
-
бит 18 — ошибка РИДЗУ[0/31];
-
бит 19 — ошибка РИДЗУ[32/63];
-
бит 20 — ошибка РИДЗУ[64/71];
-
биты 21:23 — не используются;
-
биты 24:27 — ошибка в РИОП того или иного модуля ОП;
-
биты 28:31 — ошибка в РАОП того или иного модуля ОП.
Текущее содержимое РМО отображается на пульте управления. В ходе прерывания от схем контроля оно сохраняется в ОП, после чего микропрограммно очищается.
Обработка машинных ошибок
Начало обработки ошибки
Хотя в [1] довольно много места отведено описанию обработки машинных ошибок, совершенно полную и непротиворечивую картину по приводимой информации получить невозможно. В [2] никакой информации на этот счёт нет; скорей всего, контролю работы машины был посвящён отдельный курс лекций, который не сохранился.
Общая схема обработки ошибок при работе процессора приведена на рисунке.
Все используемые разряды РМО объединяются схемой «или» в общий сигнал РМО≠0 — появление на нём высокого уровня говорит о том, что в РМО был зафиксирован сбой аппаратуры.
Дальнейшее прохождение сигнала РМО≠0 может блокироваться триггером игнорирования ошибки ТИОП. Как видно по схеме, этот триггер имеет и микропрограммное, и схемное управление:
-
сброс выполняется одним из сигналов СБ СИСТ (сброс системы) и СБ БД (сброс блока диагностики), а также микрооперацией
ТИОП:=0
; -
установка выполняется микрооперацией
ТИОП:=1
, сигналом БЛОК по тактовому импульсу С1 (вероятно, сигнал БЛОК приходит с пульта управления от переключателя «Режим контроля», чтобы обеспечить игнорирование возникающих машинных ошибок; его приём по С1 выполняется, чтобы не изменить состояние ТИОП в неподходящий момент) и безымянным триггером, который устанавливается по тактовому сигналу С2 в начале обработки сбоя, о чём будет сказано чуть ниже.
Блокировка обработки ошибок с помощью ТИОП применяется, в частности, на время обработки уже возникшей ошибки «для предотвращения зависания», как сказано в [1]. Строго говоря, это неправильно: если в процессе обработки сбоя возникает новый сбой, процессор должен перейти в состояние «стоп при сбое», т. е. полностью прекратить любую работу, включая останов синхронизации. Разработчики ЕС-1030 проигнорировали этот принцип.
Дальнейшая обработка сигнала РМО≠0 возможна при одновременном соблюдении следующих условий:
-
прерывания от схем контроля машины разрешены (установлен бит РССП[13]);
-
переключатель пульта управления «Режим контроля» не задаёт останов при сбое (нет сигнала ОСТ);
-
сброшен триггер игнорирования ошибки ТИОП;
-
сброшен триггер ТРОП, чьё назначение, как уже говорилось, неизвестно, но предположительно он устанавливается при работе с пульта управления.
Если хотя бы одно из указанных условий не соблюдается, процессор продолжает обычную работу, однако сама ошибка остаётся зафиксированной в РМО и приведёт к началу её обработки, как только для этого сложатся условия.
Когда все условия для начала обработки соблюдены, выполняются следующие действия:
-
через безымянный промежуточный триггер, устанавливаемый по синхросигналу С2, устанавливается триггер ТИОП для игнорирования последующих сбоев;
-
устанавливаются триггеры ТЧДЗУ и ТЧП. Заметим, что надписи на приведённой выше схеме из [1] противоречат тексту этой книги: согласно последнему, приём в РАДЗУ, а соответственно, считывание новой микрокоманды блокируется установкой «триггера часов процессора» ТЧП, а ТЧДЗУ блокирует дешифраторы микроопераций, т. е. запрещает выработку управляющих сигналов на основе микрокоманды, находящейся в РИДЗУ;
-
устанавливается триггер записи ситуации ТЗС;
-
устанавливаются нулевые разряды регистров РТУ и РСП (установка последнего на данной схеме не показана, но о ней можно получить представление из следующей схемы). Расшифровки этих аббревиатур, как и явного описания функций этих регистров, нет, однако из дальнейшего изложения и приводимых схем становится ясным, что триггеры РТУ соответствуют выполняемым полутактам записи информации, а регистр РСП содержит код текущей последовательности тактов; вместе они определяют, какой именно регистр сейчас записывается в память и на какой стадии находится процесс записи.
Заметим, что РТУ[0] устанавливается разрешённым сигналом РМО≠0 лишь в случае, если весь регистр РТУ равен нулю (сигнал РТУ[0/11]=0), т. е. начало последовательности сигналов управления записью состояния блокируется, если эта последовательность уже активна. Этот триггер может быть установлен также микрооперацией
РТУ:=1
либо сигналом +1РТУ; их назначение не описывается, но, судя по информации о процессе диагностики неисправностей, они используются блоком диагностики — в частности, для записи состояния процессора после выполнения очередного диагностического теста; -
устанавливается триггер со сложным названием ТБ+2РССП[40/63];
-
если в регистрах памяти (РИОП и РАОП) ошибки нет, индикатором чего является сброшенный триггер ТРРСП, про который говорилось выше в разделе «Контроль оперативной памяти», устанавливается триггер ТРДЗУ. Кроме того, при этом устанавливается триггер ТРРОТЛН (он явно относится к диагностике: ТЛН — тест локализации неисправностей), который впоследствии, в такте Т10 последовательности РСП=000, вновь установит ТРДЗУ. Как будет видно из дальнейшего, ТРРОТЛН используется для установки ТРДЗУ по завершении записи РИОП и РАОП, выполняемой только при наличии ошибок в этих регистрах, но если ошибок нет и ТРДЗУ устанавливается сразу, смысла в установке ТРРОТЛН вместе с ТРДЗУ не видно; впрочем, приведённая схема далеко не полна, и причины тех или иных решений просматриваются далеко не всегда.
Имеются и другие случаи установки и сброса указанных триггеров, некоторые из которых будут описаны дальше, а другие в [1] не упоминаются, и их точное назначение неизвестно. Можно предположить, что часть дополнительных способов управления триггерами, связанными с обработкой ошибок, используется аппаратурой и микропрограммами диагностики процессора.
Описанные действия, и в первую очередь установка нулевого разряда РТУ, запускают процесс аппаратной записи состояния процессора в определённые ячейки памяти. Эта запись выполняется в три этапа:
-
если возник сбой в регистрах ОП, т. е. если установлен триггер ТРРСП, выполняется запись состояния РИОП и РАОП; если сбоя БООП не было, их запись не выполняется. Как говорилось выше, сам сбой регистров ОП вызывает останов работы БООП, поэтому процессом записи этих регистров целиком и полностью управляют схемы обработки ошибок, как описывается ниже;
-
после записи РИОП и РАОП, если она требовалась, выполняется запись адреса команды (содержимого РССП[40/63]), РАДЗУ и РИДЗУ. Этот этап записи выполняется аппаратно, но БООП, если он останавливался из-за ошибки, уже снова запущен в работу в конце предыдущего этапа, и запись выполняется под его управлением;
-
выполняется запись остальных сохраняемых регистров процессора под управлением содержимого ДЗУ (но не микропрограммно в полном смысле слова, как можно было бы ожидать).
Важную роль в записи состояния играет регистр коммутатора процессора РКП — через него, как и при обычной работе процессора, проходит вся информация, подлежащая записи; кроме того, он используется для отображения содержимого различных регистров на индикаторах пульта управления, когда процессор находится в состоянии останова. По сути, РКП — это огромный мультиплексор с регистром на выходе, собирающий информацию с большей части регистров и триггеров процессора и временно запоминающий её.
Запись РИОП и РАОП
Схема управления записью состояния РИОП и РАОП в память приведена на следующем рисунке, который позволяет также сделать некоторые разумные предположения о реальном функционировании РСП и РТУ.
Как видно из этой схемы, РТУ состоит из 12 триггеров, выходы которых определяют те или иные этапы сохранения состояния процессора. Управление этим регистром не показано, за исключением единственного сигнала РТУ[0]:=1, но, как видно из первой схемы, этот разряд РТУ может быть установлен несколькими разными способами. В данном случае, надо полагать, изображён условный сигнал, вызывающий установку нулевого бита РТУ, без конкретизации условий такой установки. Резонно предположить также, что имеется сигнал, сбрасывающий все триггеры РТУ — он должен вырабатываться при сбросе процессора или блока диагностики.
Как уже было сказано, РИОП и РАОП сохраняются полностью под управлением РТУ и РСП, без участия цепочки тактовых импульсов БООП, обычно управляющей обращениями к памяти: БООП в это время остановлен из-за возникшей ошибки. Для обеспечения необходимого порядка следования полутактов работы памяти триггеры РТУ должны устанавливаться и сбрасываться подобно триггерам ЦТИ: каждый установленный триггер вызывает в следующем полутакте установку следующего и сброс предыдущего триггера, причём состояние одних триггеров изменяется по тактовому сигналу С2, а других — по С1. Установленный РТУ[11] вызывает в следующем полутакте установку РТУ[0], если вся последовательность записи состояния ещё не завершена, и такой «бег по кругу» продолжается до тех пор, пока все этапы записи не будут выполнены.
Текущая стадия записи состояния определяется дешифрованным состоянием регистра РСП, а конкретные выполняемые в некотором полутакте действия — комбинацией дешифрованного состояния РСП и состояния триггеров РТУ. Как видно из схемы, триггер ТРРСП, устанавливаемый при обнаружении ошибки БООП, разрешает дешифрацию РСП, чем обеспечивается выполнение первого этапа сохранения состояния — сохранение РИОП и РАОП.
Что касается управления работой самого РТУ, на схеме можно заметить лишь сигнал +1РСП, формируемый при одновременно установленных бите РТУ[0] (Т0) и триггере записи состояния ТЗС. Поскольку к выходу РСП подключён дешифратор с восемью выходами, становится ясным, что технически РСП является, по меньшей мере, трёхразрядным счётчиком, последовательно увеличивающим своё значение от 0 до 7 включительно, а вырабатываемые дешифратором сигналы вида РСП=001 указывают стадии выполнения записи состояния. Поскольку установка РТУ[0] и ТЗС выполняется одновременно в самом начале выполнения записи состояния, а все операции записи, как видно по схеме, выполняются при РСП=001 или РСП=010, становится ясным, что на момент начала записи РСП содержит нуль. Вероятно, он сбрасывается одновременно со сбросом РТУ или при окончании записи состояния, а установка нулевого разряда РСП, о которой [1] говорит вместе с установкой ТЗС и РТУ[0], на самом деле является обычным инкрементом этого счётчика, выполняемым не одновременно, а сразу после установки РТУ[0] и ТЗС.
Собственно запись РИОП и РАОП, судя по данной схеме и по описанию работы БООП, выполняется, как показано в следующей таблице.
РСП |
РТУ |
Действия схемы записи состояния |
Действия памяти |
---|---|---|---|
000 |
Т0 |
Инкремент РСП |
|
001 |
Т1 |
Установка ТПА1 (триггер прямоадресуемой ячейки №1) |
|
|
|
Установка ТЗАП1 (аналог микрооперации |
|
|
|
Установка ТПК (передача РИОП в РКП аналогично микрооперации |
|
001 |
Т2 |
Установка ТРКП (передача РКП в РИОП — аналог микрооперации |
|
|
|
Вероятно, сброс ТПК, так как передача из РИОП в РКП уже была выполнена и теперь выполняется обратная передача |
|
001 |
Т3 |
Выдача сигнала ПРА1 |
Приём индикатора обращения к фиксированной ячейке по адресу 8016 и запуск её стирания |
001 |
Т4 |
|
|
001 |
Т5 |
|
Завершение стирания информации в ОП и начало записи РИОП |
001 |
Т6 |
Сброс ТРКП |
|
001 |
Т7 |
|
Конец записи РИОП в ОП |
001 |
Т8 |
Передача РАОП в РИОП |
|
001 |
Т9 |
Сброс ТПА1 |
|
|
|
Сброс ТЗАП1 |
|
|
|
Установка ТПК (передача РИОП в РКП) |
|
001 |
Т10 |
Установка ТРКП (передача РКП в РИОП) |
|
|
|
Вероятно, сброс ТПК |
|
001 |
Т11 |
Установка ТПА2 |
|
|
|
Установка ТЗАП1 |
|
001 |
Т0 |
Инкремент РСП |
|
010 |
Т1 |
Выдача сигнала ПРА1 |
Приём индикатора обращения к фиксированной ячейке по адресу 8416 и запуск её стирания |
010 |
Т2 |
|
|
010 |
Т3 |
|
Завершение стирания и начало записи РИОП |
010 |
Т4 |
Сброс ТРКП |
|
010 |
Т5 |
|
Конец записи РИОП в ОП |
010 |
Т6 |
|
|
010 |
Т7 |
Сброс ТПА2 |
|
|
|
Сброс ТЗАП1 |
|
|
|
ТБУОП:=0 |
|
010 |
Т8 |
|
|
010 |
Т9 |
Пуск БООП |
Возобновление обычной работы БООП |
010 |
Т10 |
|
|
|
|
нет операций |
нет операций |
000 |
Т8 |
ТРРОТЛН:=1 |
|
000 |
Т9 |
|
|
000 |
Т10 |
Установка ТРДЗУ из-за установленного ТРРОТЛН (см. предыдущую схему) |
|
000 |
Т11 |
ТРРСП:=0 |
|
Строго говоря, моменты приёма информации в РКП и РИОП в [1] не указаны; приведённая выше схема показывает лишь установку триггеров и выдачу сигналов, управляющих передачей информации. Однако, поскольку эти регистры наверняка построены на триггерах-защёлках как более простых по конструкции, смело можно предположить с практически стопроцентной вероятностью, что при активном сигнале, разрешающем приём информации, регистр становится «прозрачным», пропуская информацию со своего входа на выход, а при снятии этого сигнала фиксирует данные, проходящие через него в этот момент.
Схема не показывает моменты сброса триггера ТПК, а соответственно, прекращения приёма информации в РКП из РИОП, но логичным является сделать это в следующем полутакте: для передачи информации из одного регистра в другой много времени не требуется.
Для чего нужен сигнал ПРА1, информации нет. Однако, сопоставив операции, выполняемые рассматриваемой схемой записи состояния, с описанной в соответствующем разделе обычной БООП, можно предположить, что ПРА1 инициирует передачу адреса, а точней, признака обращения к первой фиксированной ячейке, в ОП, что запускает считывание (стирание) адресуемой ячейки памяти и последующую запись информации из РИОП.
Как видно из схемы, весь процесс записи РИОП и РАОП выполняется, пока РСП содержит комбинации 001 и 010, причём в полутакте Т9 при РСП=010 в БООП выдаётся сигнал возобновления работы. Думается, что после этих действий РСП продолжает свою работу, для чего «бегущая единица» в РТУ продолжает свой «бег по кругу». Когда из-за переполнения РСП вновь станет равным нулю, в полутакте Т8 произойдёт установка триггера ТРРОТЛН, показанного на предыдущей схеме, что приведёт к установке триггера ТРДЗУ в полутакте Т10 — это необходимо для начала выполнения второго этапа сохранения состояния.
Запись РССП[32/63], РИДЗУ и РАДЗУ
Второй этап записи состояния выполняет сохранение младшей половины PSW, т. е. разрядов РССП[32/63], и содержимого РИДЗУ и РАДЗУ. Осуществляющая этот процесс схема показана на очередном рисунке.
Расписывать столь подробно, как предыдущий, этот этап особого смысла нет: идеи здесь те же самые, только ОП работает уже под управлением БООП, а не по сигналам от РТУ и РСП, как на первом этапе. Стоит, однако, отметить следующие особенности.
РСП в данном случае не задаёт прямо номер выполняемой последовательности: его содержимое в полутакте Т1 (т. е. при установленном бите РТУ[1]) принимается в регистр операции тестов локализации неисправностей РОТЛН, на выходе которого собран дешифратор.
Адрес ячейки, в которую будет выполняться сохранение, заносится в биты РССП[40/63], в которых обычно хранится адрес следующей команды: эта часть РССП технически является счётчиком, и подобное его использование позволяет сократить объём аппаратуры. С другой стороны, это требует сначала сохранить его значение, а заодно и значение РССП[32/39], что и производится в начале выполнения второго этапа сохранения, при РСП, содержащем 001: как говорит поясняющий текст, в полутакте Т1 содержимое РССП[32/63] передаётся в РКП и далее в РИОП, а в полутакте Т5 в РССП[40/63] заносится адрес 9016, по которому будет выполняться запись значения из РКП. В полутакте Т6 произойдёт сброс триггера ТБ+2РССП[40/63], в установленном состоянии блокирующего инкремент РССП[40/63] (он устанавливается при инициировании процедуры сохранения, что было описано выше). После сброса этого триггера адрес в РССП будет увеличиваться на 2 в полутактах Т9 и Т5, чем к началу записи следующего слова обеспечивается увеличение адреса на 4 (РССП[40/63] по своему основному назначению — счётчик команд, а последние состоят из полуслов, поэтому он обеспечивает инкремент на 2, а не на 4).
Кроме этого, в такте Т6 устанавливаются триггеры ТЗАПР, ТЗАП2, ТОКК и ТПРИОП[0/31], запускающие запись по адресу 9016 содержимого РКП, т. е. ранее пересланного туда содержимого РССП[32/63]. Триггер ТОКК, как можно предположить из схемы, служит для передачи в контрольные разряды РИОП значений, сформированных схемой контроля РИОП на основе содержимого информационных разрядов этого регистра. Здесь дело в том, что ни РССП, ни РИДЗУ, ни РАДЗУ, сохраняемые на этом этапе, не являются «нормальными» регистрами хранения данных, и у них контрольные разряды либо отсутствуют вовсе, либо имеются не для всех байтов, либо входят в состав информационных разрядов, а не являются отдельными битами, дополняющими 32 основных разряда. Соответственно, при передаче этих регистров в РКП и далее в РИОП готовых контрольных разрядов у них попросту нет, и их нужно сформировать.
После сохранения РССП[40/63] в последующих словах памяти сохраняются РИДЗУ[0/31], РИДЗУ[32/63] и РИДЗУ[71/64] вместе с РАДЗУ.
Следует заметить, что [1] утверждает, что «в шестом цикле работы РТУ устанавливаются триггеры ТРДЗУ и ТРРОТЛН и начинается третий этап записи ситуации». Однако это противоречит приведённым там же схемам, а также упоминанию установки ТРДЗУ для начала второго, а не третьего этапа. Противоречие исчезает, если читать текст дальше: окажется, что имелась в виду «установка на 0», т. е. сброс.
Запись остальных регистров
Итак, третий этап записи состояния (его схема приведена на следующем рисунке) начинается, когда в шестом цикле второго этапа, т. е. когда в РСП находится код 110, во время такта Т2 будет сброшен ТРРОТЛН. В такте Т4 произойдёт сброс триггера ТЧДЗУ, в Т5 — обычный инкремент адреса записи в РССП[40/63], а также занесение в РАДЗУ фиксированного адреса микрокоманды FC0, а в Т6 — установка ТЧДЗУ, что вызовет считывание микрокоманды по адресу, находящемуся в РАДЗУ, и занесение её в РИДЗУ.
Регистры, сохраняемые на третьем этапе, записываются под управлением того же регистра РОТЛН, однако код в него заносится не из счётчика РСП, а из поля Г микрокоманды (биты РИДЗУ[2/7]), что происходит в такте Т1 каждого цикла РТУ. Сама запись выполняется подобно второму этапу: дешифровка РОТЛН определяет, какие биты каких регистров будут переданы в РКП для дальнейшей записи в память; адрес ячейки для записи находится в РССП[40/63] и увеличивается в тактах Т5 и Т9, в тактах Т4 и Т6 сбрасывается и затем устанавливается ТЧДЗУ для считывания очередной микрокоманды, в тактах Т7 производится установка триггеров, обеспечивающих передачу информации из РКП в РИОП, а затем и собственно выполнение записи. Единственным важным отличием является то, что в одном цикле РТУ в память записывается содержимое информационных разрядов очередного регистра, при этом контрольные биты в РИОП формируются аппаратно, исходя из записываемой информации, а в следующем цикле РТУ записываются контрольные биты сохраняемого регистра; сохранением информационных или контрольных битов управляет младший бит РОТЛН. Благодаря этому в память записывается не только 32 бита информации из регистра, но и его контрольные разряды, что позволяет в дальнейшем определить, корректным ли было содержимое того или иного регистра.
Заметим, что содержимое РИДЗУ не используется как настоящая микрокоманда: весь процесс записи управляется чисто схемным путём; единственное её считываемых из ДЗУ «микрокоманд» — формировать нужные значения в РОТЛН. За один цикл РТУ производится запись информации, закодированной занесённым в РОТЛН значением, и считывание микрокоманды для занесения в РОТЛН нового значения в начале следующего цикла РТУ. Всего в этом процессе используется 32 микрокоманды, расположенные по адресам FC0–FDF. Как формируется адрес следующей микрокоманды, [1] молчит, но можно предположить, что для этого используется обычное поле следующего адреса из самой микрокоманды.
Последней стадией третьего этапа записи состояния является перепись содержимого ячеек, записанных на первом этапе и содержащих значения РИОП и РАОП, в конец области сохранения. Подробности этого процесса не приведены, как не указан и смысл этого копирования.
Завершение обработки сбоя
После завершения сохранения в РОТЛН из очередной микрокоманды заносится код, завершающий процедуру сохранения. При этом сбрасываются триггеры ТРДЗУ, ТЧДЗУ и ТЧП, что возобновляет нормальное выполнение микрокоманд. Дальнейшие действия зависят от состояния триггера ТРТЛН. Если он сброшен, что имеет место при обычной работе машины, выполняется микропрограмма прерывания от схем контроля, которая:
-
записывает старое PSW прерываний от схем контроля, содержащее информацию на момент возникновения сбоя;
-
обнуляет регистр машинных ошибок РМО, триггер игнорирования машинных ошибок ТИОП и возможные запросы прерываний программных и по вызову супервизора (РФП[1,2]);
-
считывает новое PSW прерываний от схем контроля;
-
возобновляет выполнение программы под управлением нового PSW; этой программой обычно является обработчик прерываний от схем контроля, входящий в состав операционной системы.
Установленное состояние ТРТЛН означает, что выполняются тесты локализации неисправности (ТЛН) процессора, описываемые в следующем разделе.
Полный список регистров, сохраняемый схемами записи состояния при ошибке, в [1] отсутствует, но эта информация доступна в документации на операционную систему ОС ЕС, см. следующий рисунок. Из него, в частности, видно, что в двойном слове по адресу 10016 сохраняется, помимо прочего, состояние «тактовой цепочки», т. е. триггеров ЦТИ, и содержимое РОЧ. Эту информацию можно сохранять лишь пока БООП остановлен, то есть во время первого этапа сохранения информации, но в [1] об этом не сказано ни слова.
Диагностика процессора
Достаточно сложные машины, выполненные на не очень надёжной элементной базе, для быстрого поиска и устранения неисправностей нуждаются в развитой системе диагностики. В процессорах с микропрограммным управлением диагностика обычно выполняется с помощью диагностических микропрограмм. Разработчики ЕС-1030, однако, пошли своим путём, и изрядная часть диагностики выполняется аппаратными или аппаратно-микропрограммными средствами. В ДЗУ хранится лишь некий минимальный набор микропрограмм, а большая часть диагностики выполняется с помощью так называемых тестов локализации неисправностей (ТЛН), загружаемых с магнитной ленты. Очевидно, что для реализации подобной системы необходимо иметь значительно больший объём заведомо исправного оборудования; в частности, требуется полная работоспособность младших 4 Кбайт основной памяти, а также изрядной части электроники, управляющей памятью, наличие хотя бы одного исправного селекторного канала, исправного контроллера (устройства управления) НМЛ и собственно накопителя на магнитной ленте. Кроме того, использовать для загрузки тестовой информации те же механизмы, что используются при загрузке программы, нельзя, поскольку ТЛН являются не программами, а массивами информации для аппаратуры диагностики, поэтому потребовались дополнительные схемы управления, запускающие считывание информации с ленты и записывающие её в память.
Этапы выполнения диагностики приведены на рисунке, и первым из них является проверка ОП.
Диагностика основной памяти
Для того, чтобы более-менее гарантировать работоспособность ОП, без чего невозможно применять штатные средства диагностики процессора, в состав процессора включён специальный блок проверки ОП, схема которого приведена на рисунке.
В состав блока входят:
-
пятнадцатиразрядный регистр-счётчик-имитатор адреса РСИА;
-
датчик тяжёлого кода ДТК, представляющий собой схему, реализующую функцию:
f = A14·A5 + A14·A5,
где A5 и A14 – значения 5-го и 14-го разрядов РСИА соответственно. Значения функции f задают запись всех нулей или всех единиц по адресу, определяемому РСИА, что обеспечивает чередование нулей и единиц через каждые 32 ячейки памяти;
-
схема анализа считанной из памяти информации;
-
триггер ошибки ТОШ, устанавливаемый в 1 при ошибке чётности РАОП и при несовпадении считанной информации с эталонной;
-
двухбитный счётчик тяжёлого кода РСТК с дешифратором на выходе, обеспечивающий четырёхкратное обращение к каждой ячейке памяти при чтении тяжёлого и обратного тяжёлого кодов;
-
пульт управления блока проверки ОП, являющийся частью пульта управления процессора. Выполняемые операции — запись или контрольное считывание, контрольное значение и др. — и запуск записи, а затем контрольного считывания задаются с пульта вручную.
Помимо аппаратуры самого блока проверки, в диагностике ОП используются регистр РТУ из состава аппаратуры записи состояния при ошибках, который вырабатывает последовательность из двенадцати тактовых сигналов Т0–Т11, используемых для управления порядком выполнения операций, и регистр РКП. В последнем формируется подлежащая записи информация, которая затем передаётся в РИОП и записывается в память. При контрольном считывании информация из накопителя памяти попадает в РИОП, оттуда передаётся в РКП и проверяется на совпадение с ожидаемой. Чтобы проверить работу схем контроля чётности, РКП имеет цепи, позволяющие его полностью обнулить, включая контрольные разряды — это образует недопустимую комбинацию битов в каждом байте РКП.
Проверка ОП возможна в четырёх режимах: запись-чтение нулей, единиц, тяжёлого кода и обратного тяжёлого кода. В любой момент времени блок способен проверять один из четырёх блоков накопителя памяти ёмкостью 32 килослова. Выбор проверяемого блока осуществляется переключателями на пульте.
При записи контрольной информации в такте Т0 выполняется сброс триггера записи-чтения ТЗП/ЧТ и формирование контрольных разрядов адреса в счётчике РСИА[14/0] (изначально там находится нуль). Для этого разряды адреса из РСИА всегда поступают на схемы формирования двух контрольных разрядов, информация с выходов которых в такте Т0 заносятся в два дополнительных бита РСИА[16/15]. Заметим, что это довольно странное решение: контрольные биты с выхода схем их формирования можно было бы напрямую передавать в регистр адреса памяти РАОП; хранить их в РСИА нет никакой нужды.
В такте Т1 в регистр РКП заносится константа для записи в ОП: все нули в режиме записи нулей, все единицы в режиме записи единиц и либо нули, либо единицы в режиме записи тяжёлого или обратного тяжёлого кода в зависимости от выхода датчика тяжёлого кода. Почему код называется тяжёлым, литература не сообщает.
В такте Т3 вырабатывается сигнал разрешения приёма адреса из РСИА в РИОП, одновременно запускающий выбранный переключателями блок ОП.
В такте Т4 устанавливается триггер записи ТЗП. Если чётность адреса, зафиксированного в РАОП и далее в РАСП, оказалась неверной, по сигналу ОШИБКА РАОП будет установлен триггер ошибки ТОШ.
В такте Т9 обычно происходят приращение РСИА и сброс триггера записи. Однако при ошибке РАОП, т. е. при установке ТОШ, приращение РСИА блокируется, что даёт возможность увидеть проблемный адрес на индикаторах пульта.
Запись в ОП продолжается до тех пор, пока не будет нажата кнопка «Ост.». После ручного останова для выполнения проверки записанных значений на пульте производятся необходимые переключения и нажимается кнопка сброса схем проверки, запускающая операцию проверки.
Такты Т0–Т3 при считывании аналогичны тактам записи: в них формируется и передаётся в РАОП адрес очередного слова с контрольными разрядами и производится пуск блока памяти.
В такте Т4 вырабатываются сигналы «Разрешение выдачи числа» и РКП:=РИОП, обеспечивающие приём считанной из ОП информации в РКП, после чего содержимое РКП сравнивается с ожидаемым и при несовпадении устанавливается ТОШ.
В такте Т9 происходит обычное приращение РСИА, если только оно не заблокировано в результате обнаружения ошибки.
В зависимости от установленного режима при обнаружении ошибки блок проверки либо останавливает работу, либо продолжает операцию, но блокирует приращение адреса в РСИА, т. е. зацикливается на обращении к проблемной ячейке.
В режимах «Тяжёлый код» и «Обратный тяжёлый код» происходит четырёхкратное обращение к каждой ячейке памяти; их подсчёт ведёт двухбитный счётчик РСТК. Все состояния РСТК, кроме 00, блокируют модификацию адреса ОП. Приращение РСТК происходит в такте Т5 при каждом обращении к ОП в режимах «ТК» и «ОТК» (чтение).
При первом обращении к ОП (РСТК = 00) выполняются чтение информации из ячейки, адрес которой определяется содержимым РСИА, и сравнение её с ожидаемым результатом. При втором обращении к этой же ячейке (РСТК = 01) происходит запись в эту ячейку информации, инверсной по отношению к считанной (если считаны нули, то записываются единицы, и наоборот). При третьем обращении к той же ячейке (РСТК = 10) выполняется чтение информации, записанной в неё при втором обращении, и сравнение её с ожидаемой. При четвёртом обращении к той же ячейке ОП (РСТК = 11) происходит запись в неё информации, инверсной по отношению к считанной.
После четырёхкратного обращения к одной ячейке ОП исходная информация в ней восстанавливается. При несовпадении считанных данных с ожидаемыми при первом и третьем обращениях к ОП блок проверки либо останавливается, либо зацикливается.
Загрузка тестов процессора
После проверки оперативной памяти в неё с магнитной ленты должны загружаться тестовые наборы для проверки работы процессора. От обычной начальной загрузки программы (IPL) загрузка тестов отличается как управлением (чисто схемное, а не микропрограммно-аппаратное), так и тем, что общий канал, т. е. аппаратура сопряжения всех имеющихся у машины каналов ввода-вывода с памятью и процессором, работает в так называемом режиме загрузки ТЛН, при котором два следующих подряд слова, считанных с магнитной ленты, накладываются друг на друга, т. е. записываются в одну и ту же ячейку ОП. Запись с наложением позволяет сформировать в ячейке памяти произвольные значения всех 36 разрядов, включая контрольные, что отличает её от обычной операции записи, где контрольные биты определяются содержимым информационных разрядов.
Диагностика ДЗУ
Поскольку для выполнения диагностических микропрограмм необходима нормальная работа памяти микропрограмм (ДЗУ) и связанных с ней регистров, перед запуском собственно тестов процессора аппаратными средствами выполняется контроль работы ДЗУ. Схема проверки показана на рисунке.
Сначала в ОП в режиме ТЛН загружаются тесты ДЗУ. По окончании загрузки формируется сигнал пуска РТУ, и последний обычным образом начинает вырабатывать сигналы Т0–Т11. Они обеспечивают считывание слова ОП по адресу, находящемуся в РССП[40/63], причём контрольные разряды слова поступают в регистр операций тестов локализации неисправности РОТЛН и задают код диагностической операции (естественно, работа схем контроля РИОП при этом заблокирована, поскольку в данном случае контрольные биты вовсе не обязательно соответствуют чётности байтов информации); для теста ДЗУ код операции равен 7. Эта операция задаёт передачу содержимого битов РИОП[19/30] в РАДЗУ, что определяет адрес слова ДЗУ, которое должно быть прочитано и проверено на чётность. Параллельно с выборкой слова ДЗУ и его проверкой в тактах Т5 и Т9 производится инкремент РССП[40/63], чтобы подготовить адрес следующего слова ОП.
При обнаружении ошибки чётности прочитанного слова ДЗУ дальнейшее выполнение теста останавливается; адрес слова с ошибкой отображается индикаторами на пульте управления ЭВМ. Для определения вышедшего из строя разряда производится ручное сравнение информации в РИДЗУ, также отображаемой на пульте, с таблицами прошивки ДЗУ, приведёнными в документации на машину.
При нажатии кнопки «Пуск» выполнение теста продолжается, что позволяет за один проход проверить все подлежащие контролю слова ДЗУ.
В последнем слове теста контрольные биты содержат код диагностической операции 8. Эта операция устанавливает триггер ТЗТЛН, запускающий считывание следующего блока тестовой информации с магнитной ленты.
Диагностика процессора
Диагностика процессора, не считая описанной выше проверки ДЗУ, делится на три этапа: проверку диагностического ядра, диагностику схем памяти, т. е. триггеров и регистров процессора, и диагностику комбинационных схем. Общая идея всех трёх этапов одинакова, различие заключается, главным образом, в проверяемом оборудовании. Блок-схема процесса тестирования приведена на рисунке.
Сначала микропрограммно производится установка исходных значений регистров. Эти значения задаются в так называемом формате теста, т. е. в информации, считанной с магнитной ленты в основную память в составе ТЛН. Если необходимо занести информацию и в регистры, не имеющие прямого микропрограммного управления, а также для проверки комбинационных схем выполняются микрокоманды, передающие данные с необходимой их обработкой из одного регистра в другой.
После завершения подготовительных действий в РАДЗУ из формата теста заносится адрес начала микропрограммы собственно теста и устанавливаются или сбрасываются необходимые триггеры. Кроме того, в некоторых случаях загружается специальный счётчик, определяющий, сколько микрокоманд нужно выполнить до остановки процесса тестирования.
Затем выполняется сам микропрограммный тест. Если последний относится к проверке диагностического ядра, его результат контролируется визуально, для чего микропрограмма зацикливается на отображении необходимого значения на индикаторах пульта управления, а переход к следующему тесту производится при нажатии кнопки «Пуск». Если же выполняются последующие тесты, т. е. при заведомо исправном диагностическом ядре, контроль выполняется микропрограммно путём сравнения состояния определённых регистров и триггеров с ожидаемым, содержащимся в формате теста, и в зависимости от результата сравнения либо запускается следующий тест, либо производится останов процессора с соответствующей индикацией на пульте.
Структура типичного формата теста приведена на следующем рисунке.
Семь первых слов теста предназначены для установки триггеров и регистров процессора в определённое состояние.
В осьмое слово теста задаёт выполняемую микрооперацию или их последовательность, устанавливает счётчик РСП и триггеры ТРТЛН, ТВМП, ТРСМК и ТРТЛНК. Операция задаётся адресом микрокоманды, которую необходимо выполнить. Если устанавливается триггер ТРСМК, будет выполнено несколько (до семи включительно) микрокоманд, для чего дополнительный код их количества загружается в РСП. В отношении триггера ТВМП описание в [1] маловразумительно, но складывается впечатление, то при его нулевом значении будет выполняться только та микрокоманда, чей адрес задан восьмым словом, а при единичном — группа микрокоманд, определяемая адресом первой микрокоманды, и в любом из этих случаев общее количество выполненных микрокоманд задаётся счётчиком РСП.
При завершении выполнения проверяемых микрокоманд производится запись текущего состояния процессора, для чего используется тот же механизм, что и при обработке машинных ошибок, однако имеется и ряд отличий:
-
при диагностике выполняется только третий этап записи состояния, т. е. РИОП, РАОП, РССП[32/63], РАДЗУ и РИДЗУ не сохраняются;
-
запись производится в диагностическую область ОП, начиная с адреса 9416;
-
при диагностике установлен триггер ТРТЛН, поэтому по завершении сохранения состояния производится переход на микропрограмму сравнения полученных результатов с ожидаемыми, а не на микропрограмму обработки прерываний от схем контроля.
На следующем рисунке показаны регистры процессора, которые устанавливаются теми или иными словами формата теста (для них указаны номера соответствующих слов формата), и регистры, состояние которых можно записать и проверить (отмечены штриховкой).
Регистры, имеющие непосредственную установку и опрос, проверяются в нулевом цикле, остальные регистры и комбинационные схемы – в единичном цикле.
Сравнение полученного и ожидаемого результатов производится в два этапа. Сначала на результат операции, считанный в РИОП, накладывается маска, заданная одиннадцатым словом формата теста. Эта маска содержит единицы во всех разрядах, кроме того разряда, который должен быть проверен, а наложение выполняется путём записи маски в РИОП без его предварительного сброса, благодаря чему проверяемый бит сохранит своё значение, прочитанное из памяти, а остальные биты будут установлены. Если проверяемый бит равен нулю, содержимое РИОП будет иметь неверную чётность, если же проверяемый бит равен единице — правильную. Таким образом, значение проверяемого определяется состоянием сигнала ОШИБКА РИОП. Если проверяемый бит равен единице, происходит изменение состояния триггера счёта успеха ТСУСП, который предварительно сбрасывается; если проверяемый бит равен нулю, состояние триггера ТСУСП не изменяется, т. е. он остаётся сброшенным.
На втором этапе из двенадцатого слова формата теста считывается эталонное значение и на него накладывается маска. Если эталонный бит равен единице, сигнал ОШИБКА РИОП снова вызывает изменение состояния ТСУСП. Как следствие, если и полученный при тестировании, и эталонный биты совпадают, состояние ТСУСП не изменяется ни разу либо изменяется дважды, и в итоге он будет сброшен; если же полученный и эталонный биты не совпадают, ТСУСП изменяется только один раз и будет установлен, что и служит индикатором неудачного выполнения теста.
Для перехода к следующему тесту каждый тест должен быть успешно выполнен 16 раз, что повышает шансы на обнаружение неустойчивых ошибок. Повтор и переход осуществляются автоматически. При неудачном выполнении теста производится либо останов, либо переход к другому тесту, позволяющему точнее установить причину неисправности.
ссылка на оригинал статьи https://habr.com/ru/articles/870170/
Добавить комментарий