43_Ho3 / 6-ЯЗЫК МИКРООПЕРАЦИЙ
.DOC3.2. ЯЗЫК МИКРООПЕРАЦИИ
Язык микроопераций предназначен для описания цифровых устройств, функционирование которых рассматривается на уровне регистров. Поэтому иногда такой язык называют регистровым или языком регистровых передач. Он имеет простые и наглядные средства описания слов и регистров, массивов и памятей, элементов и частей слов и массивов и соответственно элементов регистров и памятей, операций передачи слов и частей слов и др.
Описание слов, регистров и шин. Описание слова (числа, логического кода и др.) содержит его название — идентификатор и разрядный указатель. Идентификатором служит произвольная последовательность букв и цифр, начинающаяся с буквы. Разрядный указатель состоит из номеров старшего и младшего разрядов слова, разделенных знаком —. Указатель заключается в квадратные скобки. Например, слово — число
Х15 = 0 1 …. n,
где i, — двоичные разряды, можно представить в виде
X15 [0n].
Разрядный указатель слова может опускаться, если это не вызывает недоразумений, в частности, если ранее слово уже полностью описано. Одноразрядное слово описывается только идентификатором без разрядного указателя.
Аналогичным образом описание регистра состоит из названия (идентификатора) регистра и разрядного указателя. Например, описание регистра команды на Рис. 3.2 имеет вид: РгК [0 31], а его отдельных (подрегистров) и соответственно полей команды
Рис. 3.2. К описанию регистра
РгК [0 7] или РгК [КОп],
РгК [20 31] или РгК [А2],
т. е. в разрядном указателе подрегистра можно указывать идентификатор подрегистра (поля слова). Значение некоторого, например седьмого, разряда регистра РгК выделяется записью РгК.
Совокупность линий (цепей), предназначенных для передачи слова или, в более общем случае, кодов и сигналов, объединенных общим функциональным назначением, называется шиной. Шина, по которой в цифровое устройство извне поступает или во внешнюю среду выдается слово, описывается, как и регистр, идентификатором шины и разрядным указателем. Например, описание шины, по которой поступает 32-разрядная команда, обозначается UIK[0 31].
Описание массива и памяти. Описание массива, т. е. совокупности слов одинаковой длины и памяти, содержит его (ее) название — идентификатор (например, ОП2 для модуля 2 оперативной памяти) и в квадратных скобках — наименьший и наибольший номера слов и нижнюю и верхнюю границу массива (наименьший и наибольший номера ячеек памяти), а также порядок нумерации разрядов в словах. Пример описания модуля памяти ОП2 (массива), содержащего r n-разрядных ячеек (слов): ОП2 [0 r -1,0 п— 1]. В таком случае j-я n-разрядная ячейка памяти (j-е слово) и k-й разряд памяти (столбец массива) представляются записями соответственно ОП2 [j, 0 п— 1] и ОП2 [0r—I, k].
Описание микрооперации. Микрооперация осуществляет некоторое преобразование над данными. Это преобразование может быть логическим, т. е. выполняемым над операндом или двумя операндами поразрядно, арифметическим или функциональным. Например, это может быть установка некоторого слова в регистре, передача, взятие обратного кода, операции И и ИЛИ над двумя операндами, составление слова, сдвиг, операция счета, операции сложения и вычитания, сравнение на равенство и др. Микрооперации могут быть одноместными или многоместными, в них участвует соответствующее число операндов. Микрооперация описывается микрооператором и меткой — идентификатором управляющего сигнала, вызывающего выполнение микрооперации. Характерный вид описания двухместной микрооперации
Формула микрооператора
, (3.1)
Метка Микрооператор
Метка (идентификатор) управляющего сигнала отделяется двоеточием от микрооператора. Представление микрооператора основано на использовании «операции присваивания», обозначаемой знаком: =. Выражение, стоящее справа от этого знака (правая часть микрооператора), называется «формулой микрооператора». Формула определяет преобразование [в (5.1) обозначено знаком *], производимое микрооперацией до завершения предусмотренной в ней передачи данных, и участвующих в нем операндов, или, точнее, их местоположение. Слева от знака присваивания (в левой части микрооператора) указывается регистр (или его часть), в который передается результат преобразования, описанного формулой микрооператора. Если в левой части микрооператора указана некоторая часть регистра (подрегистр), то после выполнения микрооперации остальные разряды регистра сохраняют прежнее значение.
Действие микрооператора состоит в том, что в конце такта выполнения микрооперации на регистре (шине и др.), описанном в левой части микрооператора, устанавливается слово, полученное в результате указанных в формуле микрооператора преобразований над значениями операндов в начале такта. В частном случае, если микрооперация состоит в передаче слова, формула микрооператора содержит лишь описание слова, точнее, регистра (или части регистра), из которого происходит передача. Например, микрооперацию приема адреса второго операнда А2 из регистра команды РгК в регистр адреса РгВ (Рис. 3.3) можно представить в виде
ПрВ: РгВ[121]: = РгК[2031];
или в более простой форме
ПрВ:РгВ: = РгК[А2];
здесь ПрВ — метка управляющего сигнала Прием в РгВ адреса А2 из РгК. Управляющий сигнал показан условно на Рис. 3.3 тонкой стрелкой.
Рис. 3.3. Пример совмещенных во времени микрооператоров
Управляющий сигнал микрооперации и его метка, рассматриваемая как переменная, принимают лишь два значения: 1 — микрооперация возбуждается, 0 — микрооперация не возбуждается. Один управляющий сигнал (метка) может инициировать выполнение в одном такте нескольких микрооператоров. Тогда последние записываются подряд и отделяются друг от друга запятыми. Точка с запятой разделяет микрооператоры, выполняющиеся в разных тактах.
Пусть, например, на Рис. 3.4 прием из счетчика команд СчК в регистр РгВ и из регистра РгD в СчК выполняются за один такт. Тогда можно записать
ПрDСчКВ: РгВ: = СчК, СчК: = РгD;
Рис. 3.4. Микрооперация: прием адреса А2 из регистра РгК в регистр РгВ
Рассмотрим еще некоторые примеры микроопераций. Приращение счетчика. В счетчике на Рис. 3.5 определены микрооперации: установка в 0 (УОСч), прием кода с шины ШИВх {ПрСч) и увеличение содержимого счетчика на 1 ( + 1Сч). Последнюю микрооперацию можно записать в виде
+1Сч :Сч : =Сч + 1;
Сдвиг. Различают сдвиги арифметический, логический, циклический. В описаниях микроопераций им соответствуют обозначения СдвА, СдвЛ, СдвЦ. Далее за этим обозначением указываются направление сдвига (правый П или левый Л) и в скобках число разрядов, на которое производится сдвиг. Например, описание микрооперации арифметического сдвига содержимого регистра С вправо на четыре разряда имеет вид
Сдв :РгС : = СдвАП(4) РгС,
При арифметическом сдвиге знаковый разряд не сдвигается. Освобождающиеся при сдвиге разряды заполняются 0. Выдвигающиеся из регистра биты слова теряются.
При логическом сдвиге сдвигаются все разряды кода, включая знаковый разряд. При циклическом сдвиге крайние разряды регистру соединяются между собой так, что выдвигающиеся из крайнего разряд да регистра биты поступают в другой его крайний разряд.
Сдвиг часто производится путем «косой передачи» слова из одного регистра в другой. Микрооперации передачи содержимого РгA в РгВ со сдвигом на k разрядов вправо или влево обозначаются соответственно
СдвК:РгВ:==П(к)РгА,
СдвК: РгВ: = Л {k) РгА,
Конкатенация или составление слова. Пусть, например, в регистр В должно быть передано слово, отдельные разряды которого соответствуют содержимому некоторых разрядов регистра А, счетчика Сч, триггера переполнения ТгП и константе 0, как это показано на Рис. 3.6. Описание соответствующей микрооперации имеет вид
ПрРгВ : РгВ [1 16] : = РгА [8 15] | Сч [0 3] | ТгП |000;
Вертикальная линия является знаком операции составления слова. Для описания требуемой последовательности выполнения микроопераций в ЯМ используется оператор перехода, который для удобства будем называть микрооператором, не связывая его выполнение с выполнением микрооперации.
Рис. 3.5. Микрооперации счетчика
Рис. 3.6. Микрооперация составления (конкатенации) слова
Микрооператор перехода идти к М, позволяет задавать в микропрограмме переход к микрооператор) с меткой М.
Условные микрооператоры. Часто в микропрограммах в зависимости от того, соблюдается или не соблюдается некоторое условие, должна выполняться та или иная микрооперация или, что фактически одно и то же, должна выполняться или пропускаться некоторая микрооперация. В этих случаях для записи микрооперации используются условные микрооператоры одного из следующих типов: если (условие) то микрооператор(ы) (или метка) иначе микрооператор(ы) (или метка);
если (условие) то микрооператор(ы) (или метка);
Вместо микрооператора в условном микрооператоре может стоять метка, отсылающая к микрооператору, определенному в другом месте микропрограммы.
Для записи микрооперации можно воспользоваться также условным микрооператором вида (для двухместных микроопераций)
РгА [k k + 1]: = если (условие) то РгВ [т т+l]* РгС [n п + l] иначе РгD[рp+l]*РгЕ[qq+l];
Условие можно представить как равенство (или отсутствие равенства) содержимого некоторого регистра (или разряда регистра)„определенной величине, например См = 0 или РгА [0] 0, или в форме неравенства (См > 0), или в виде логической функции двоичных переменных, в качестве которых могут выступать значения определенных разрядов регистров. В последнем случае условие выполняется, если логическая функция принимает значение 1 (истинно).
Если описания микроопераций составляются не для проектирования устройства, а только для описания процесса функционирования, метки управляющих сигналов могут опускаться.
Запись микрооперации можно сопровождать пояснениями, которые должны при этом выделяться скобками <. >.
Описание микрокоманды. Описание микрокоманды .производится аналогично описанию микрооперации и представляет собой метку микрокоманды и разделенную запятыми совокупность микрооперато-1 ров, выполняемых в микрокоманде, или меток соответствующих управляющих сигналов. В общем случае можно говорить о микрокоманду так как микрооперация является частным случаем микрокоманды, coдержащей только одну микрооперацию.
Обычно даже очень простые операции преобразования информации занимают несколько тактов, требуя выполнения определенной пoследовательности микрокоманд. Например, если на Рис. 3.3 прием в РгА адреса требует предварительной установки РгА в 0, то прием в РгА адреса второго операнда А2 будет производиться последовательностью микрокоманд (т. е. микропрограммой)
1-й такт УстО РгА :РгА : =0,
2-й такт ПрАг: РгА: = РгК [А2];
Восприятие микропрограммы облегчается, если отдельные микро команды или группы микрокоманд, соответствующие определенным; функциональным операциям, обозначить «метками операций». Метка операции предшествует описанию первой микрокоманды из ее группы и отделяется от этой микрокоманды знаком ::.
Микропрограмма может быть изображена в виде графа, отдельные вершины которого соответствуют микрокомандам или rpyппам последовательно выполняемых микрокоманд. Безусловные микрокоманды обозначаются прямоугольниками, а условные — ромбами с показом разветвлений. Внутри прямоугольников и ромбов записывают выражения для микрооператоров. Метки, если они используются проставляют сбоку прямоугольника.
В качестве примера на Рис. 3.7 приведена представленная в виде графа микропрограмма рабочего цикла памяти с произвольным обращением и с разрушающим считыванием, словесное описание функционирования которой приводилось в §4.2. Как видно из рис. 4.2, в блок управления памятью БУП поступают извне управляющие сигналы Обращение (сигнал начала рабочего цикла) и Операция (1 — считывание, 0 — запись); БУП генерирует в необходимой последовательности управляющие сигналы, инициирующие соответствующие микрооперации: ПрРгА -прием адреса с шин ША в РгА, Выборка - возбуждение шин адресной выборки ячейки памяти со сбрасыванием содержимого ячейки в 0; Считывание — открытие усилителей считывания и передача считанного кода в РгИ, ПрРгИ - прием в РгИ слова с ШИВх; Запись - возбуждение разрядных усилителей записи; ПрШИВых - выдача слова из РгИ на ШИВых.
Рис. 3.7. Микропрограмма рабочего цикла памяти и с разрушающим считыванием
произвольным обращением