|
Лекции по программированию
Лекции по программированию _УПРАВЛЯЮЩИЕ АВТОМАТЫ. _ОСНОВНЫЕ СПОСОБЫ АДРЕСАЦИИ МИКРОКОМАНД Начнем с рассмотрения простейшего варианта управления, в
котором не участвуют предикатные функции (переменные), т.е. в
микропрограмме переходы только безусловные. В таком случае УА
является автономным синхронным автоматом. В более общем случае функция переходов УА зависит от
предикатных переменных, но УА должен быть автоматом Мура. Условимся о некоторых ограничениях, позволяющих упрос-
тить схему на начальных этапах проектирования (от которых
легко впоследствии и отказаться): - на каждом шаге процесса вычислений ветвление может осу-
ществляться только по одной двузначной предикатной перемен-
ной (т.е. разветвление возможно лишь на два направления); - начальные значения всех регистров УА являются нулевыми.
Впредь на схемах УА не будем показывать цепей установки на-
чальных значений. Для реализации в самом общем случае микропрограмм произ-
вольной структуры будем строить УА так, чтобы основным мате-
риальным носителем управляющей (автоматной) компоненты мик-
ропрограммы являлась бы управляющая память (реализованная,
например, в виде ПЗУ). В этом случае структура слова управля-
ющей памяти - МИКРОИНСТРУКЦИЯ - состоит из двух составных
частей: микрокоманды и адресной части. Адресная часть микроинструкции содержит информацию, поз-
воляющую в следующем такте работы выбрать ( указать ) новый
адрес управляющей памяти. Реализация именно этого момента яв-
ляется основным предметом дальнейшего рассмотрения и опреде-
ляет, в основном, структуру, объем аппаратуры и быстродей-
ствие УА. При этом подлежит рассмотрению реализация следующих
типов переходов как между шагами алгоритма, так, соот-
ветственно, и между микроинструкциями: - безусловный переход, - условный переход, - функциональный переход, - переход к микроподпрограмме с возвратом. Будем изучать работу управляющих автоматов различной
структуры, демонстрирующие основные применяемые варианты ад-
ресации микроинструкций, на следующем алгоритме: - 2 - --- ----¬¦ ¦ -VV-¬
n1¦ ¦m1 ¦ n1 { m1 } ¦ L-T-- ¦ --V-¬ n2 { m2 }
n2¦ ¦m2 ¦ ¦ L-T-- g1 <<GO(a;g1,n3)>> ¦ ¦<--¬ ¦ -V¬ 0¦ n3 { m3 }
g1¦ < a >-- ¦ LT- n4 { m4 } ¦ 1¦<----¬ ¦ ¦----¬¦ g2 <<GO((a,b);n5,n3,n1,n1)>> ¦ --VV¬ ¦¦
n3¦ ¦m3 ¦ ¦¦ n5 { m5 } ¦ L-T-- ¦¦ ¦ --V-¬ ¦¦ g3 <<GO(a;n5,n3)>>
n4¦ ¦m4 ¦ ¦¦ ¦ L-T-- ¦¦ ¦10 -V¬ 01¦¦
g2L--< ab>---¦ 11 LT- ¦ 00¦----¬¦ --VV¬ ¦¦
n5 ¦m5 ¦ ¦¦ L-T-- ¦¦ -V¬ 0 ¦¦
g3 < a >---¦ LT- 1 ¦ L------ Укажем на некоторые особенности этого алгоритма: Опера-
тор перехода (предикатная вершина), помеченный меткой g1,
называют ждущим. Оператор, помеченный меткой g2, использует
для перехода 4-значный предикат, что не удовлeтворяет выше-
указанному ограничению. Поэтому потребуются эквивалентные
преобразования алгоритма для того, чтобы удовлетворить этому
ограничению. Алогоритмы эквмвалентны, если они преобразуют информа-
цию одинаковым образом. Наиболее распространенным приемом эк-
вивалентного преобразования алгоритмов и микропрограмм явля-
ется включение микроблоков и, соответственно, тактов, в кото-
рых не выполняется модификация памяти ОА - "нет операции".
Но и это преобразование может быть не эквивалентным - см.при-
мер при определении понятия "микроблок"; кроме того, следует
учесть различное поведение во времени предикатных переменных
типа "РА" и "РВ" - см. раздел "Взаимодействие ОА и УА". ( Запретить модификацию памяти можно, вводя условную
синхронизацию ОА, но для этого должна быть изменена микроко-
манда, предшествующая добавляемому такту.) - 3 - _СХЕМА С АДРЕСНЫМ ПЗУ Начнем рассмотрение с управляющего автомата, структура
которого совпадает с канонической структурой автомата Мура. ----¬ ----¬ -T--T¬ ----¬ ¦MUX¦ q ¦ROM¦ ¦¦RG¦¦ ¦ROM¦ a->+0 +-->+ ¦ S' ¦¦ ¦¦ S ¦ ¦ Y b->+1 ¦ ¦ ¦===>¦¦ ¦¦=T>¦ ¦==> ¦ ¦ г>¦ ¦ ¦¦ ¦¦ ¦ ¦ +-¬ ¦А ¦ ¦ ¦ 2 ¦ C¦¦ ¦¦ ¦ ¦ 1 ¦ ¦ LA--- ¦ L---- -/++--+- ¦ L---- ¦ ¦ H L=================- ¦ L------------------------------- Функцию перехода и функцию выхода реализуем в виде ПЗУ.
В литературе, рассматривающей микропрограммные устройства уп-
равления, УА с такой структурой называют микропрограммным ав-
томатом Уилкса. В ПЗУ (ROM_1), реализующем функцию выхода, следует раз-
местить микрокоманды; при этом их распределение по определен-
ным адресам совершенно произвольно, за исключением начальной
микрокоманды, которая в силу вышеуказанного ограничения дол-
жна располагаться по нулевому адресу. ПЗУ (ROM_2), реализующее функцию переходов автомата,
можно трактовать как адресное ПЗУ. Ячеек в адресном ПЗУ в два
раза больше, чем в ПЗУ микрокоманд. Каждой ячейке ПЗУ микро-
команд соответствуют две ячейки в адресном ПЗУ, в которых за-
писываются два альтернативных адреса.
n1 { m1 } S¦ Y H¦ S q¦S'¦ -+----+ ---+--+
n2 { m2 } 0¦m1 x¦ 0 0¦ 1¦ ¦ ¦ 0 1¦ 1¦ <<GO(a;d1,n3)>> ¦ ¦ ¦ ¦ 1¦m2 0¦ 1 0¦ 2¦
d1 { m0 } ¦ ¦ 1 1¦ 3¦ ¦ ¦ ¦ ¦ <<GO(a;d1,n3)>> 2¦m0 0¦ 2 0¦ 2¦ ¦ ¦ 2 1¦ 3¦
n3 { m3 } ¦ ¦ ¦ ¦ 3¦m3 x¦ 3 0¦ 4¦
n4 { m4 } ¦ ¦ 3 1¦ 4¦ ¦ ¦ ¦ ¦ <<GO(a;d2,n1)>> 4¦m4 0¦ 4 0¦ 5¦ ¦ ¦ 4 1¦ 0¦
d2 { m0 } ¦ ¦ ¦ ¦ 5¦m0 1¦ 5 0¦ 6¦ <<GO(b;n5,n3)>> ¦ ¦ 5 1¦ 4¦ ¦ ¦ ¦ ¦
n5 { m5 } 6¦m6 0¦ 6 0¦ 6¦ ¦ ¦ 6 1¦ 4¦ <<GO(a;n5,n3)>> -+----- ---+--- Конвейерный вариант схемы с таким же способом адресации
должен программироваться с учетом замечаний, сделанных в раз-
деле "Взаимодействие ОА и УА". Кроме того, ограничения на
расположение микрокоманд в ROM_1 выглядят несколько иначе: по
0-адресу в ROM_1 можно расположить микрокоманду, после кото-
рой безусловно выполняется начальная микрокоманда. - 4 - ----¬ q ----¬ ----¬ -T--T¬ ¦MUX+---------->+ROM¦ ¦ROM¦Y ¦¦RG¦¦ Y' a->+0 ¦ C ¦ ¦ S ¦ ¦==>¦¦ ¦¦==> b->+1 ¦ -/TT--T¬ ¦ ¦=T>¦ ¦H ¦¦ ¦¦ ¦ ¦ г>¦¦RG¦¦=>¦ ¦ ¦ ¦ +-->+¦ ¦+¬ ¦А ¦ ¦ ¦¦ ¦¦S'¦ 2 ¦ ¦ ¦ 1 ¦ C¦¦ ¦¦¦ LA--- ¦ L+--+- L---- ¦ L---- -/++--+-¦ ¦H' L===============- ¦ L------------------------------------- _СХЕМА С ЯВНЫМ УКАЗАНИЕМ АЛЬТЕРНАТИВНЫХ АДРЕСОВ г===========================¬ ¦г=========================¬¦ ¦¦ ----¬ -T--T¬ ----¬A0¦¦ ¦¦ ¦MUX¦ ¦¦RG¦¦ ¦ROM¦==-¦ ¦L>¦0 ¦ ¦¦ ¦¦A ¦ ¦A1 ¦ ----¬L=>¦1 ¦===>¦¦ ¦¦=>¦ ¦===- ¦MUX¦ ¦ ¦ ¦¦ ¦¦ ¦ ¦==>Y a->+0 ¦ ¦А ¦ C¦¦ ¦¦ ¦ +¬ b->+1 ¦ LA--- -/++--+- L----¦H ¦А +----- ¦ LA--- ¦ L----------------------------- Конвейерный вариант г============================¬ ¦г==========================¬¦ ¦¦ ----¬ -----¬A0 -T--T¬A0'¦¦ ¦¦ ¦MUX¦ ¦ROM ¦==>¦¦RG¦¦===-¦ ¦¦ ¦ ¦ ¦ ¦A1 ¦¦ ¦¦A1' ¦ ¦L>¦0 ¦A ¦ ¦==>¦¦ ¦¦====- ----¬L=>¦1 ¦=>¦ ¦ Y ¦¦ ¦¦ Y' ¦MUX¦ ¦ ¦ ¦ ¦==>¦¦ ¦¦==> ¦ ¦ ¦ ¦ ¦ ¦ H ¦¦ ¦¦ a->+0 ¦ ¦А ¦ ¦ +-->+¦ ¦+¬H' b->+1 ¦ LA--- L----- -/++--+-¦ ¦А +----- C ¦ LA--- ¦ L----------------------------- Эта схема отличается от предыдущей тем, что, по сущес-
тву, тот же способ адресации выполнен с использованием только
одного ПЗУ. В этом варианте альтернативные адреса записывают-
ся в той же микроинструкции, что и микрокоманда.
n1 { m1 } A¦ Y H A0 A1¦ -+----------+
n2 { m2 } 0¦m1 x 1 1¦ ¦ ¦ <<GO(a;d1,n3)>> 1¦m2 0 2 3¦ ¦ ¦
d1 { m0 } 2¦m0 0 2 3¦ ¦ ¦ <<GO(a;d1,n3)>> 3¦m3 x 4 4¦ ¦ ¦
n3 { m3 } 4¦m4 0 5 0¦ ¦ ¦
n4 { m4 } 5¦m0 1 6 4¦ ¦ ¦ <<GO(a;d2,n1)>> 6¦m5 0 6 4¦ -+-----------
d2 { m0 } - 5 - <<GO(b;n5,n3)>>
n5 { m5 } <<GO(a;n5,n3)>> _СХЕМА С ЧАСТИЧНОЙ ЗАПИСЬЮ АДРЕСА Последовательный вариант Конвейерный вариант -------------------------¬ --------------------------¬ ¦ ----¬ -T--T¬ ----¬¦e ¦ ----¬ ----¬ e -T--T¬¦ ¦ ¦MUX¦ q ¦¦RG¦¦q'¦ROM+- ¦ ¦MUX¦ q'¦ROM+---->+¦RG¦+- L>+0 +---->+¦ ¦+->+ ¦ Y L>+0 +-->+ ¦ Y ¦¦ ¦¦Y'
a->+1 ¦ S ¦¦ ¦¦S'¦ ¦==> a->+1 ¦ S'¦ ¦====>¦¦ ¦¦=>
b->+2 ¦ г==>¦¦ ¦¦=>¦ ¦==¬ b->+2 ¦ г>¦ ¦ H ¦¦ ¦¦ ¦А ¦ ¦ C¦¦ ¦¦ ¦ ¦¬ ¦ ¦ ¦ ¦ ¦ +---->+¦ ¦¦=¬ LA--- ¦ -/++--+- L----¦ ¦ ¦ ¦ ¦ ¦ ¦ S ¦¦ ¦¦ ¦ ¦ H L================- ¦ ¦А ¦ ¦ ¦ ¦====>¦¦ ¦¦¬¦ L=======================- LA--- ¦ L---- -/++--+-¦¦ ¦ H' ¦ C ¦¦ ¦ L=================-¦ L=======================- При этом способе адресации альтернативные адреса отлича-
ются только одним разрядом ( в данном варианте - младшим ),
формируемым входным сигналом. Остальные разряды адреса указы-
ваются вместе с микрокомандой в одной и той же микроинструк-
ции. При безусловном переходе в данном варианте схемы младший
разряд также указывается в микроинструкции. При адресации
одного и того же микроблока различными операторами условного
перехода может возникнуть КОНФЛИКТ АДРЕСАЦИИ. В этом случае
одну и ту же микроинструкцию приходится располагать в различ-
ных ячейках управляющей памяти. Если различные операторы ус-
ловного перехода одними и теми же предикатными значениями
указывают на одни и те же микроблоки, то нет и конфликта ад-
ресации. Адрес
n1 { m1 } --(0,0),(2,1) S'q'¦ Y H S e¦ ----+--------+
n2 { m2 } --(4,0) 0 0 ¦m1 0 4 0¦ ¦ ¦ <<GO(a;d1,n3)>>-- 1,x 0 1 ¦m4 1 2 x¦ ¦ ¦
d1 { m0 } --(1,0) 1 0 ¦m0 1 1 x¦ ¦ ¦ <<GO(a;d1,n3)>>-- 1,x 1 1 ¦m3 0 0 1¦ ¦ ¦
n3 { m3 } --(1,1),(3,1) 2 0 ¦m0 2 3 x¦ ¦ ¦
n4 { m4 } --(0,1) 2 1 ¦m1 0 4 0¦ ¦ ¦ <<GO(a;d2,n1)>>-- 2,x 3 0 ¦m5 1 3 x¦ ¦ ¦
d2 { m0 } --(2,0) 3 1 ¦m3 0 0 1¦ ¦ ¦ <<GO(b;n5,n3)>>-- 3,x 4 0 ¦m2 1 1 x¦ ¦ ¦
n5 { m5 } --(3,0) ----+--------- <<GO(a;n5,n3)>>-- 3,x Распределять микроинструкции по ячейкам памяти удобно
в следующем порядке: - 6 - - связать с различными операторами условного перехода, кон-
фликтующими между собой по адресации, различающиеся между со-
бой старшие разряды адреса; - распределить микроблоки по ячейкам памяти с учетом назнач-
енных старших разрядов адреса и входных значений; - оставшимся нераспределенным микроблокам назначить произ-
вольные свободные адреса. _СХЕМА С СОКРАЩЕННЫМ ТАКТОМ Использование этой схемы позволяет при сохранении пре-
имуществ последовательного варианта взаимодействия сократить
наиболее длинные цепи, общие для ОА и УА, до длины цепей кон-
вейерного варианта.
-----------------------------------¬ --T----------T
¦ г==========================¬¦ ROM_0 A'¦ Y H A e¦
¦ ¦ -----¬ ¦¦ --+----------+
¦ ¦ ¦ROM ¦=+A ¦¦ 0 ¦m1 0 4 0¦
¦ ¦ ¦ +-+e ¦¦ 1 ¦m0 1 1 x¦
¦ ¦>¦ ¦=+Y ----¬ -T--T¬¦¦ 2 ¦m0 2 3 x¦
¦ ¦ ¦ ¦=+H ¦MUX¦ ¦¦RG¦¦-¦ 3 ¦m5 1 3 x¦
¦ ¦ ¦ 0 ¦ L==>¦0 ¦ ¦¦ ¦+--e' 4 ¦m2 1 1 x¦
¦ A'¦ +----+ ¦ ¦ ¦¦ ¦¦ --+-----------
¦ ¦ ¦ROM ¦=+A ¦ ¦==>¦¦ ¦¦==>Y' --T----------T
¦ ----¬¦ ¦ ¦ ¦==>¦1 ¦ ¦¦ ¦¦ ROM_1 A'¦ Y H A e¦
¦ ¦MUX¦L>¦ +-+e ¦А ¦ C¦¦ ¦¦¬H' --+----------+
L>+0 ¦ ¦ ¦=+Y LA--- -/++--+-¦ 0 ¦m4 1 2 x¦
a>+1 ¦ ¦ 1 ¦=+H ¦ ¦ 1 ¦m3 0 0 1¦
b>+2 ¦ L----- ¦ ¦ 2 ¦m1 0 4 0¦ ¦А +--------------- ¦ 3 ¦m3 0 0 1¦ LA--- ¦ --+----------+ L==============================- Способ адресации, по существу, такой же, как и в преды-
дущей схеме. Только в рассматриваемой схеме входной сигнал
управляет выбором одного из двух блоков ПЗУ (можно интерпре-
тировать этот сигнал как старший разряд адреса). _СХЕМА С РЕГУЛЯРНОЙ АДРЕСАЦИЕЙ ----¬ ---¬ 0W- +1 ¦MUX+->+M2+--¬ 1W- загрузка 0->+0 ¦->+ ¦ -VTT--T¬ ----¬ Y a->+1 ¦¦ L--- W¦¦CT¦¦ ¦ROM¦==> b->+2 ¦¦ ¦¦ ¦¦ ¦ ¦H ¦ ¦¦ ¦¦ ¦¦A ¦ ¦====¬ ¦А ¦¦ г==>¦¦ ¦¦=>¦ ¦e ¦ LA---¦ ¦ ¦¦ ¦¦ ¦ +--¬ ¦ ¦ ¦ ¦ C¦¦ ¦¦ ¦ ¦=¬¦ ¦ ¦ ¦ ¦ -/++--+- L----S¦¦ ¦ ¦ ¦ L=================-¦ ¦ ¦ L------------------------ ¦ L=============================- В этой схеме при разветвлении процесса вычислений пара
альтернативных адресов получается следующим образом: один ад-
рес всегда на единицу больше, чем текущий ( т.е. изменяется
"регулярным" образом ), второй адрес - произвольный и содер-
жится вместе с микрокомандой в микроинструкции. Элементом, "вычисляющим" адрес, является счетчмк, управ-
ляемый сигналом, являющимся входным для УА. При различных
значениях входного сигнала счетчик выполняет две функции: ли-
бо прибавляет единицу к значению, которое хранилось в счетчи-
ке и являлось текущим адресом, либо загружается значением ад-
реса из управляющей памяти. - 7 - В схему введен элемент М2, позволяющий инвертировать
значение входного сигнала, что облегчает распределение микро-
инструкций по ячейкам управляющей памяти. Адрес
n1 { m1 } -- 0 A ¦ Y H e S¦ --+-----------+
n2 { m2 } -- 1 0 ¦m1 x x 1¦ ¦ ¦ <<GO(a;d1,n3)>> 1 ¦m2 1 0 3¦ ¦ ¦
d1 { m0 } -- 2 2 ¦m0 1 1 2¦ ¦ ¦ <<GO(a;d1,n3)>> 3 ¦m3 x x 4¦ ¦ ¦
n3 { m3 } -- 3 4 ¦m4 1 0 0¦ ¦ ¦
n4 { m4 } -- 4 5 ¦m0 2 0 3¦ ¦ ¦ <<GO(a;d2,n1)>> 6 ¦m5 1 1 6¦ ¦ ¦
d2 { m0 } -- 5 7 ¦m0 0 1 3¦ --+------------ <<GO(b;n5,n3)>>
n5 { m5 } -- 6 <<GO(a;n5,n3)>> В схеме для конвейерного варианта взаимодействия регу-
лярное изменение адреса приходится организовывать так, чтобы
не увеличивать число мест конвейера. г==============================¬ ¦г=====================¬ ¦ ¦¦ -T--T¬ ----¬¦ ----¬S¦ ¦¦ ----¬ ¦¦RG¦¦ ¦MUX¦¦ ¦ROM¦=- ¦L=>¦INC¦=>¦¦ ¦¦>¦0 ¦¦ ¦ ¦Y -T--T¬Y' ¦ L---- C¦¦ ¦¦ ¦ ¦¦ ¦ ¦==>¦¦RG¦¦==> ¦ -/++--+- ¦ ¦¦>¦ ¦ ¦¦ ¦¦ ¦ -/TT--T¬ ¦ ¦A ¦ ¦H ¦¦ ¦¦H' ¦ C¦¦RG¦¦ ¦ ¦ ¦ ¦==>¦¦ ¦¦==¬ L=========>¦¦ ¦¦>¦1 ¦ ¦ ¦e ¦¦ ¦¦e'¦ ¦¦ ¦¦ ¦А ¦ ¦ +-->+¦ ¦+¬ ¦ ----¬ L+--+- LA--- L---- -/++--+-¦ ¦ ¦MUX¦ ---¬ ¦ C ¦ ¦ 0->+0 +->+M2+----- ¦ ¦ a->+1 ¦->+ ¦ ¦ ¦ b->+2 ¦¦ L--- ¦ ¦ ¦А ¦¦ ¦ ¦ LA---L------------------------------ ¦ L===================================- - 8 - _СХЕМА С ЕСТЕСТВЕННОЙ АДРЕСАЦИЕЙ И _СОВМЕЩЕННЫМ НАЗНАЧЕНИЕМ РАЗРЯДОВ ЯЧЕЙКИ ПЗУ
г============================¬ C
¦г===================¬ ¦ -/TT--T¬H'
¦¦ -T--T¬ ----¬¦ ----¬ ¦ г==>¦¦RG¦¦==¬
¦¦ ----¬ ¦¦RG¦¦ ¦MUX¦¦ ¦ROM¦ ¦ ¦ ->+¦ ¦+-¬¦
¦L>¦INC¦>¦¦ ¦¦>¦0 ¦¦ ¦ ¦S¦H¦e¦ L+--+- ¦¦
¦ L----C¦¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ -T--T¬Y¦¦ для RG"Y"
¦ -/++--+- ¦ ¦¦>¦ ¦------>¦¦RG¦¦>¦¦
¦ -/TT--T¬ ¦ ¦A ¦ ¦ w c¦¦ ¦¦ ¦¦ 0w-загрузка
¦ C¦¦RG¦¦ ¦ ¦ ¦ ¦ -A-/++--+- ¦¦
L=======>¦¦ ¦¦>¦1 ¦ ¦ ¦k ¦ -T-T¬k'¦¦ 1w-нет загрузки ¦¦ ¦¦ ¦ А ¦ ¦ +----+->+¦T¦+¬ ¦¦ ----¬ L+--+- L-A-- L---- -/++-+-¦ ¦¦ k ----¬ ¦MUX¦ ---¬ --¬¦ C ¦ ¦¦ L----+ 1 +- CC
0>+0 +->+M2+->+&+- ¦ ¦¦ -----+ ¦
a>+1 ¦->+ ¦->+ ¦ ¦ ¦¦ SYN L----
b>+2 ¦¦ L---¦ L-- ¦ ¦¦ ¦А ¦¦e' L--------------------------- ¦¦ где CC - LA---L-----------------------------------¦ синхронизация ОА L=======================================- Эта схема используется только в конвейерном варианте
взаимодействия. Метод вычисления адреса для следующего такта
такой же, как и в схеме с регулярной адресацией. (Другой тер-
мин -"естественный" - употреблен только ради различения самих
схем.) Но в этой схеме, по сравнению с уже рассмотренными,
разряд управляющей памяти с одним и тем же номером (разрядный
срез) в различных микроинструкциях может быть использован
различным образом. Будем различать микроинструкции двух ти-
пов: - операционные, - алресации (выбора). В лданном варианте схемы тип микроинструкции устанавли-
вается разрядом с именем "k". При k=0 выполняется микро-
инструкция операционного типа. Все остальные разряды ячейки
загружаются в регистр микрокоманды и управляют выполнением
микроопераций в ОА. Следующий адрес всегда на единицу больше. При k=1 выполняется микроинструкция адресации. Все
разряды микроинструкции могут быть использованы для вычисле-
ния следующего адреса. В данном варианте схемы, так же как и
в схеме с регулярной адресацией, один из адресов явно записы-
вается в микроинструкцию, другой альтернативный адрес на еди-
ницу больше текущего. Адрес A ¦k¦ Y ¦
n1 { m1 } -- 0 ¦ ¦ H¦ e¦ S¦ --¦-+--+--+--+
n2 { m2 } -- 1 0 ¦0¦ m1 ¦ 1 ¦0¦ m2 ¦
g1 <<GO(a;g1,n3)>>-- 2 --¦-+--T--T--+ 2 ¦1¦ 1¦ 1¦ 2¦
n3 { m3 } -- 3 --¦-+--+--+--+ 3 ¦0¦ m3 ¦
n4 { m4 } -- 4 4 ¦0¦ m4 ¦ --¦-+--T--T--+
g2 <<GO(a;g3,n1)>>-- 5 5 ¦1¦ 1¦ 0¦ 0¦ 6 ¦1¦ 2¦ 0¦ 3¦
g3 <<GO(b;n5,n3)>>-- 6 --¦-+--+--+--+ 7 ¦0¦ m5 ¦
n5 { m5 } -- 7 --¦-+--T--T--+ 8 ¦1¦ 1¦ 1¦ 7¦
g4 <<GO(a;n5,n3)>>-- 8 9 ¦1¦ 0¦ 1¦ 3¦ Вместе с этой схемой обычно используется условная син-
хронизация, которая позволяет удлинить такт выполнения микро- - 9 -
команды в ОА на время выполнения микроинструкций адресации.
SYN -----------¬ -----------¬ -----------¬ -----------¬ ----- L-- L-- L-- L-- L-- | | | | |
k 0 -------- 0 ---------------------------------- 0 ---
--------------------------- 1 -------- 1 ---------------- | | | | |
CC¬ -----------¬ -------------------------------------¬ ----- L-- L-- L-- | | | | |
Y------------------------------------------------------------
------------------------------------------------------------- _ФУНКЦИОНАЛЬНЫЙ ПЕРЕХОД. _ПЕРЕХОД НА МИКРОПОДПРОГРАММУ С ВОЗВРАТОМ Функциональный переход При необходимости выполнения нескольких вычислительныых
функций, управление которыми представляется в виде независи-
мых микропрограмм, необходимо организовать независимый вызов
этих микропрограмм. Начальные адреса микропрограмм, управляющих вычислениями
различных функций, обычно существуют вне управляющей памяти.
В УА достаточно предусмотреть механизм коммутации, позволя-
ющий сделать начальный адрес текущим. Это можно осуществить в
любой из рассмотренных схем. (К механизму коммутации относят-
ся, кроме аппаратуры, специальные разряды управляющей памяти
и специальные микроинструкции.) - 10 - г======================¬ C г======¦==============¬ ¦ -/ TT--T¬H' ¦ ¦ ----¬¦ ----¬ ¦ г==>¦¦RG¦¦==¬ ¦ ¦ ¦MUX¦¦ ¦ROM¦ ¦ ¦ ->+¦ ¦+-¬¦
F =¦======¦========>¦0 ¦¦ ¦ ¦ ¦ ¦ ¦ L+--+- ¦¦ ¦ ¦ -T--T¬ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦ ¦¦RG¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ L>¦¦ ¦¦=>¦1 ¦¦ ¦ ¦S¦H¦e¦ ¦¦ ¦ C¦¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ -T--T¬Y¦¦ для RG"Y" ¦ -/++--+- ¦ ¦¦>¦ ¦------>¦¦RG¦¦>¦¦ ¦ -T--T¬ ¦ ¦A ¦ ¦ ¦¦ ¦¦ ¦¦ 0w-загрузка ¦ ----¬ ¦¦RG¦¦ ¦ ¦ ¦ ¦ w c¦¦ ¦¦ ¦¦ L>¦INC¦=>¦¦ ¦¦T>¦2 ¦ ¦ ¦ -A-/++--+- ¦¦ 1w-нет загр. L---- C¦¦ ¦¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ -/++--+-¦ ¦ ¦ ¦ ¦ ¦ ¦¦ г==========- ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ -T-----T¬ ¦ ¦ ¦ ¦ --k ¦¦ L>¦¦STACK¦¦=>¦3 ¦ ¦ ¦K ¦ -T--T¬K' ¦¦ L+----A+- ¦ ¦ ¦ ¦===¦>¦¦RG¦¦¬ ¦¦ ¦ ¦ А ¦ ¦ ¦ ¦¦ ¦¦¦ ¦¦ ¦ L-A-- L---- -/++--+-¦ ¦¦ ----¬ ¦ ¦ C ¦ ¦¦ ¦MUX¦ ---¬ -¦------¦¬ ¦ ¦¦
0>+0 +->+M2+>+ CS ¦<==================- ¦¦
a>+1 ¦->+ ¦ ¦ ¦ ¦¦
b>+2 ¦¦ L--- L--------- ¦¦ k ----¬ ¦А ¦¦e' ¦¦ L-+ 1 +-CC LA---L---------------------------------------¦ --+ ¦ L===========================================- SYN L---- Переход к микроподпрограмме с возвратом При реализации достаточно сложных вычислений удобно вос-
пользоваться механизмом микроподпрограмм. Одна и та же микроподпрограмма может быть вызвана из
разных точек вызывающих микропрограмм. Поэтому при вызове
микроподпрограммы необходимо запомнить адрес, с тем, чтобы
восстановить его при возвращении из микроподпрограммы. Чтобы
запомнить и восстановить адреса возврата от вложенных вызо-
вов, используется безадресная память - стек (stack). Принцип (дисциплина) работы стека описывается условием
"последний вошел - первым вышел" (Last In - First Out, LIFO).
чтобы описать этот принцип будем считать, что слова, хранящи-
еся в стеке, перенумерованы с помощью первых натуральных чи-
сел 1,2,...,N. Слово с наибольшим номером называют вершиной
стека. Стек может выполнять следующие действия: -"чтение" слова с наибольшим номером, -"выталкивание" (стирание) из памяти слова с наибольшим но- мером, -"запись" нового слова с присваиванием ему наибольшего номе- ра. При вызове микроподпрограммы выполняется операция "запи-
си" адреса возврата в стек. При возвращении из микроподпрог-
раммы выполняется операция "чтения" адреса возврата, затем -
"выталкивания" его же из стека. Операция "чтения" без "выталкивания" выполняется при ис- - 11 -
пользовании стека для организации циклов. Разряды с именем "К" определяют тип выполняемой микро-
инструкции. В связи с тем, что теперь в схеме существует 4
источника адреса для управляющей памяти, возможны 4 типа бе-
зусловных переходов, кроме того, возможны различные условные
переходы в различных сочетаниях комбинирующие эти источники
адреса и входные переменные. С помощью комбинационной схемы CS разряды микроинструкции
"К" преобразуются в сигналы управления стеком и мультиплексо-
ром. _УПРАВЛЕНИЕ С ПРЕДВОСХИЩЕНИЕМ В конвейерном варианте для команд переходов по предикат-
ным переменным, зависящих без сдвига от сигналов управления,
приходится добавлять еще один такт для того, чтобы "увидеть"
значение переменной, по которой выполняется ветвление, и выб-
рать нужную МКИ. Можно построить управляющий автомат, в котором для уско-
рения выполнения программы выполняются следующие действия:
Предварительно выбирается из ПЗУ одна из двух альтернативных
МКИ, соответствующая наиболее вероятному значению переменной
ветвления. Это значение должно храниться в той МКИ, после ко-
торой выполняется ветвление. В конце такта выработанное ре-
альное значение переменной сравнивается с предсказанным, если
они совпадают, то выбранная из ПЗУ МКИ записывается в выход-
ной регистр, если нет, то предыдущий такт продлевается, т.е.
не синхронизируются ОА и RG'МКИ. Микропрограмма будет такой
же как и для последовательного варианта взаимодействия ОА и
УА, но в МКИ добавляются два разряда: F = { 1, если используется предвосхищение; 0, если нет }, P - наиболее вероятное значение переменной ветвления. Фрагмент схемы УА, обеспечивающий предвосхищение может
быть таким: --------------¬ ¦ ¦W -T--T¬ ¦ -VT---¬ q -A---¬ f t ¦¦RG¦¦ L-->+MUX+--->+ SS +<----------------------¬ --T--->+¦ ¦+---->+ ¦--->+ +<---------------------¬¦ ¦ ¦¦ ¦¦ ¦ ¦¦t ¦ ¦ p ¦¦ ¦ -\++--+- L----¦ -\+T---- ¦¦ ¦ ¦ ¦ ¦ ¦j ¦¦ L---+----------------- ¦-VT---¬ ------¬ P -T--T¬p¦¦ ¦ ¦ ¦MUX¦ ¦ ROM +--->+¦RG¦+--¦ ¦ ¦ ¦ ¦ ¦ ¦ F ¦¦ ¦¦f ¦ ¦ ¦ ¦ +--->+¦ ¦+--- ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦--->¦¦ ¦¦--> ¦ ¦ ¦ ¦ ¦¦ ¦¦ C ¦ ¦ L------ -\A++--+- ----+-------------------+--------------------L------ W Пусть c=1 в конце такта. Схема SS это автомат, который может находиться в одном
из двух состояний s0 и s1,
если s0, 0f, то w=1, j=q
если s0, 1f, 0c, то w=0, j=p
если s0, 1f, 1c, p==t, то w=1, j=p
если s0, 1f, 1c, p=/=t, то w=0, j=x, переход в s1
если s1, то w=1, j=q, переход в s0
2Антик М.И. 11_03_91 МИРЭА _АЛГОРИТМЫ ПРОЦЕДУРНОГО ТИПА. ОПЕРАЦИОННЫЕ УСТРОЙСТВА Алгоритмы этого типа являются следующим этапом обобщения
описаний вычислительных процессов. Теперь, по сравнению с ал-
горитмами автоматного типа, на каждом шаге, помимо модифика-
ции памяти, идентифицирующей шаг алгоритма, разрешается изме-
нять любую другую память устройства локально (по частям) или
глобально (всю сразу). Устройство-исполнитель алгоритма этого типа будем назы-
вать операционным устройством (ОУ). ОУ можно рассматривать как один синхронный автомат со
сложно структурированной памятью - состоянием: часть памяти
используется для идентификации шага алгоритма, остальная па-
мять используется для запоминания промежуточных данных, вы-
числяемых в процессе последовательного, по шагам, выполнения
алгоритма. Такая модель вычислителя особенно удобна для рас-
чета продолжительности одного такта работы устройства. Другой удобной моделью вычислителя является совокуп-
ность взаимодействующих синхронных автоматов, один из которых
называется управляющим автоматом (УА), а объединение всех ос-
тальных автоматов называется операционным автоматом (ОА). УА является исполнителем алгоритма автоматного типа, ко-
торый входит составной частью в любой алгоритм процедурного
типа. Кроме того, УА инициирует действия отдельных шагов ал-
горитма и участвует в их выполнении. ОА выполняет все вычисления на отдельных шагах алгоритма
под управлением УА; кроме того, к ОА удобно отнести все вы-
числения предикатных функций, оставив УА только анализ вычис-
ленных предикатных значений. Прежде чем переходить к точным терминам, рассмотрим сле-
дующиe примеры алгоритмов процедурного типа. Например, каноническое описание синхронного конечного
автомата может быть интерпретировано (истолковано) как одно-
шаговый алгоритм процедурного типа. - -------¬ ¦ ¦ ---V--V-----¬ ¦ ¦ B=FO(S,A) ¦ ¦ ¦ ¦ ¦ ¦ S:=FS(S,A)¦ ¦ L-----T------ L---------- Исполнитель этого алгоритма состоит только из ОА. На
каждом шаге этого алгоритма изменяется вся память устройства,
поэтому управление памятью не требуется, идентифицировать ша-
ги этого алгоритма не надо. Например, инкрементор с одноразрядным входом и однораз-
рядным выходом может быть реализацией следующих преобразова-
ний: - - p:=1 - - ---------¬ ¦ ¦ ------V-V-------¬ ¦ ¦ (p:, b) = a+p ¦ ¦ L-------T-------- L----------- - 2 -
ОА, реализующий инкрементор в целом, будет следующим: ---T-¬ a ------------------+HS¦S+----_b --T-¬p ¦ ¦ ¦
начальное значен.-+S¦T+--+ ¦P+--¬ +-+ ¦ L--+-- ¦ SYN ---------/C¦ ¦ ¦ -+D¦ ¦ ¦ ¦L-+-- ¦ L----------------
Конечно, эта реализация совпадает с реализацией алгоритма ав-
томатного типа, если состояние р1 кодируется 1, а состояние
р0 - 0. Этот пример показывает,что до начала вычислений может
потребоваться начальная установка памяти. На самом деле это
необходимо было уже в алгоритмах автоматного типа, так как
код начального состояния требует предварительной установ-
ки. Ограничимся здесь обозначением этой проблемы, а решение
ее, связанное прежде всего с корректной синхронизацией ус-
тройства в первом такте его работы, рассмотрим ниже. При рассмотрении процедуры построения автомата Мура эк-
вивалентного автомату Мили , не обсуждалась простая возмож-
ность ее реализации и на структурном уровне. Например, только
что рассмотренный автомат Мили может быть преобразован в эк-
вивалентный автомат Мура по одному из следующих вариантов: -T-T¬t---T-¬ ---T-¬ -T-T¬
a --_+¦T¦+_+HS¦S+-_b a -----_+HS¦S+-_+¦T¦+-_b -/++-+- ¦ ¦ ¦ ¦ ¦ ¦-/++-+- C ¦ ¦ ¦ C ¦ ¦ ¦ C -/TT-T¬p¦ ¦ ¦ -/TT-T¬p¦ ¦ ¦ -_+¦T¦+_+ ¦P+¬ -_+¦T¦+_+ ¦P+¬ ¦ L+-+- L--+--¦ ¦ L+-+- L--+--¦ L-------------- L-------------- При таких структурных преобразованиях проще истолковы-
вать алгоритмы как процедурные. - - - p:=1; t:=0 - - p:=1 - - - ---------¬ ¦ ---------¬ ¦ ¦ ------V-V-------¬ ¦ ------V-V-------¬ ¦ ¦t:=a;(p:,b)=t+p¦ ¦ ¦ (p , b):= a+p ¦ ¦ L-------T-------- ¦ L-------T-------- L----------- L----------- БЛОК-ТЕКСТ. Способ описания автоматного алгоритма после
некоторых дополнений может быть использован и для описания
алгоритмов в процедурной форме: Блок-текст состоит из трех частей: 1)- Описание переменных и начальных значений памяти. 2)- Описания функций и связей. Записываются любые функции и
функциональные связи (в том числе предикатные), не использу-
ющие запоминания. Переменные из левой части операции присва-
ивания таких функциональных описаний используются в блоках
процедуры. 3)- Процедура, состоящая из блоков (микроблоков) операторных
и блоков переходов:
- операторные - в скобках вида {.....},
- перехода - в скобках вида <<...>>;
и те, и другие блоки могут снабжаться метками, стоящими перед
блоком. В блоках перехода используется оператор GO в одной
из двух форм: GO m - безусловный переход, GO (P; m0,m1,m2,...) - условный переход.
здесь m0,m1,... - метки блоков, P - предикатное значение,интерпретируемое оператором GO - 3 -
как неотрицательное целое число, являющееся порядковым номе-
ром метки в списке меток оператора GO. С этой метки должно
быть продолжено выполнение алгоритма. Блоки условных перехо-
дов эквивалентны предикатным вершинам блок-схемы алгоритма. На следующем более сложном примере демонстрируется пос-
ледовательность синтеза операционного устройства. Пример. Вычислитель наибольшего общего делителя (НОД)
двух натуральных чисел (8-разрядных). 1) Разработаем интерфейс вычислителя: 8 ---T-----T--¬ ===+=>¦I1¦ НОД ¦ ¦ ¦ ¦ ¦ ¦ 8 8 ¦ ¦ ¦D ¦==+==> ===+=>¦I2¦ ¦ ¦ +--+ +--+ ----->+rI¦ ¦rO+-----> +--+ ¦ ¦ ----->+ C¦ ¦ ¦ L--+-----+--- I1[7..0], I2[7..0] -входные информационные шины. rI -входной сигнал готовности: если rI=1, то на входах I1,
I2 готовы операнды. D[7..0] -выходная информационная шина . rO -выходной сигнал готовности: если rO=1, то готов резуль-
тат на шине D, который сохраняется до появления новых операн-
дов. 2) Математическое обоснование алгоритма вычислений: Идея алгоритма, следуя Евклиду (IIIв. до р.Х.), заключа-
ется в том, что НОД двух натуральных чисел А и В в случае ра-
венства этих чисел совпадает с любым из них, а в случае их
неравенства совпадает с НОД двух других чисел: меньшего и
разности между большим и меньшим. Последовательно, уменьшая
числа, получим два равных числа -значение одного из них и бу-
дет НОД исходных чисел. 3) Блок-схема алгоритма (микропрограмма в содержательном
виде): - 4 - - ¦ -------V------¬ m1¦ rO: = 0 ¦ L------T------- ¦-------------------¬ ¦¦------¬ ¦ -VVV- ¦ ¦ / \ 0 ¦ ¦ < rI>------ ¦ \_/ ¦ ¦1 ¦ -------V------¬ ¦ ¦ rO: = 0 ¦ ¦ ¦ ¦ ¦ m2¦ А: = I1 ¦ ¦ ¦ ¦ ¦ ¦ B: = I2 ¦ ¦ L------T------- ¦ --------------------¬¦ ¦ ¦ ------VV------¬ ¦ ¦ m3¦ (p,S)=A - B ¦ ¦ ¦ L------T------- ¦ ¦ -V- m6 ¦ ¦ / \ =0 -----------¬¦ ¦ z <S==0>--->+ rO:=1;D=A+- ¦ \__/ L----------- ¦ ¦+0 ¦ V ¦ 0 / \ 1 ¦ --------< p >--------¬ ¦ --------V------¬ \_/ --------V------¬ ¦m4¦ (x,B:)=-A+B ¦ m5¦ (x,A:)=A - B ¦ ¦ L-------T------- L-------T------- L----------+--------------------- Или в виде блок-текста:
I1[7..0], I2[7..0] --входные шины
D[7..0] --выходная шина
rI, rO --сигналы готовности
A[7..0]:, B[7..0]: --память текущих значений
S[7..0] --разность
z, p --предикатные переменные
z=¬(!/S) --сжатие(свертка) S[7..0] по ИЛИ-НЕ --можно записать иначе z=(S==0)
D=A
------------------------------------------------------------------- m1{rO:=0} g1<<GO(rI;g1,m2)>> m2{rO:=0; A:=I1; B:=I2} m3{(p,S)=A-B} <<GO(z;g2,m6)>> g2<<GO(p;m4,m5)>> m4{(x,B:)=-A+B} <<GO m3>> m5{(x,A:)= A-B} <<GO m3>> m6{rO:=1} <<GO g1>> - 5 -
4) Разработка функциональной схемы операционного автомата. В ОА должны быть реализованы все переменные с памятью и
без,а также вычислительные операции,используемые в алгоритме. A г==============================>D -/TT--T¬ ¦ -------------¬ C¦¦RG¦¦ ¦ ¦ f1=(A-B) ¦ ¦¦ ¦¦ ¦ A¦ ¦ I1=====>==>¦¦ ¦¦==- =>¦ f2=(-A+B)¦ --¬ ¦¦ ¦¦ ¦ ¦S S¦1¦ ¦¦ ¦¦ ¦ ¦> =>+ o--->z ++--+- ¦ ¦ ¦ ¦ B ¦ ¦ L-- -/TT--T¬ ¦ ¦ C¦¦RG¦¦ ¦ +------------>p ¦¦ ¦¦B B¦ ¦ I2=====>=>¦¦ ¦¦> =>¦ ¦ -/TT-T¬ ¦¦ ¦¦ ¦ ¦ C¦¦ ¦+>rO ¦¦ ¦¦ ¦ ¦ ¦¦ ¦¦ rI----->++--+- L------------- L+-+- Кроме того, в ОА необходимо реализовать все информацион-
ные связи, соответствующие микрооперации коммутации, а также
микрооперации запоминания (загрузки, записи) и обнуления. г==============================================¬ ¦ A г======================¦=======>D ¦ -----¬ -/TT--T¬ ¦ -----¬ -------¬ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦ ¦M2*8¦ 1->+cr SM¦ ¦ ¦=>+0 ¦ ¦¦ ¦¦ ¦ ¦ ¦ +- ¦ ¦
I1==¦=>+1 ¦======>¦¦ ¦¦==¦==>¦ ¦===>¦I1 ¦ ¦ --¬ ¦ + ¦ ¦¦ ¦¦ A ¦ ¦ ¦ ¦ ¦ ¦1¦ ¦ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ S¦=¦>¦ o--->z ¦ LA---- -A++--+- LA---- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-- ¦ umA uA uiA ¦ ¦ ¦ B ¦ ¦ ¦ -----¬ -/TT--T¬ -----¬ ¦ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦M2*8¦ ¦ p+--------->p L=>¦0 ¦ ¦¦ ¦¦ B ¦ ¦ ¦ ¦
I2====>¦1 ¦======>¦¦ ¦¦=====>¦ ¦===>¦I2 ¦ C + ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ -/TT-T¬ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ ¦1->+¦T¦+>rO LA---- -A++--+- LA---- L-------R W¦¦ ¦¦ ¦ ¦ ¦ -A-A++-+- uMB uB uiB urO uwO 5) Формулировка требований к управляющему автомату. При формировании управляющих сигналов следует обратить
внимание не только на операции, которые необходимо выполнить
на данном шаге, но и на те оперции, которые нельзя выполнять
на этом шаге, это - как правило, операции изменения памяти. Будем считать, что операция активна, если значение уп-
равляющего сигнала равно 1. - 6 -
Для управления вычислениями на каждом шаге алгоритма
потребуются следующие управляющие сигналы: ¦umA¦umB¦uwA¦uwB¦uiA¦uiB¦urO¦uwO¦ ==+===+===+===+===+===+===+===+===¦ m1¦ ¦ ¦ ¦ ¦ ¦ ¦ 1 ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m2¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦ ¦ ¦ 1 ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m3¦ ¦ ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m4¦ ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m5¦ 0 ¦ ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m6¦ ¦ ¦ 0 ¦ ¦ ¦ ¦ 0 ¦ 1 ¦ --¦---+---+---+---+---+---+---+---- В незаполненных клетках сигналы безразличны. Заметив, что umA = umB , uiB = ¬uiA , окончательно полу-
чаем: г==============================================¬ ¦ A г======================¦=======>D ¦ -----¬ -/TT--T¬ ¦ -----¬ -------¬ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦ ¦M2*8¦ 1->+cr SM¦ ¦ ¦=>¦0 ¦ ¦¦ ¦¦ ¦ ¦ ¦ +- ¦ ¦
I1==¦=>¦1 ¦======>¦¦ ¦¦==¦==>¦ ¦===>¦I1 ¦ ¦ --¬ ¦ + ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦1¦ ¦ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ S¦=¦>¦ o--->z ¦ LA---- -A++--+- LA---- ¦ ¦ ¦ ¦ ¦ L----¬ --- B ------ +- ¦ L-- ¦ -----¬¦ ¦-/TT--T¬ ¦ -----¬ ¦ ¦ ¦ ¦ MUX¦¦ ¦ C¦¦RG¦¦ ¦ ¦M2*8¦ ¦ p+--------->p L=>¦0 ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦
I2====>¦1 ¦¦===¦=>+¦ ¦¦==¦==>+ ¦===>¦I2 ¦ + ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦А ¦¦ ¦ W¦¦ ¦¦ ¦ +- ¦ ¦ ¦ C LA----¦ ¦-A++--+- ¦ LA---- L------- -/TT-T¬ ¦ ¦ ¦ L-¬ ¦ --¬¦ 1->+¦T¦+>rO ¦ ¦ ¦ ¦ +>+ o- R W¦¦ ¦¦ +----- ¦ ¦ ¦ L-- -A-A++-+- umB uwA uwB uiA urO uwO ---¦--------¦----¦-----¦----------------------¦-¦----- y1 y2 y3 y4 y5 y6 ¦y1¦y2¦y3¦y4¦y5¦y6¦ ==+==+==+==+==+==+==¦ m1¦ ¦ ¦ ¦ ¦ 1¦ 0¦ --+--+--+--+--+--+--+ m2¦ 1¦ 1¦ 1¦ ¦ 1¦ 0¦ --+--+--+--+--+--+--+ m3¦ ¦ 0¦ 0¦ 0¦ ¦ 0¦ --+--+--+--+--+--+--+ m4¦ 0¦ 0¦ 1¦ 1¦ ¦ 0¦ --+--+--+--+--+--+--+ m5¦ 0¦ 1¦ 0¦ 0¦ ¦ 0¦ --+--+--+--+--+--+--+ m6¦ ¦ 0¦ ¦ ¦ 0¦ 1¦ --¦--+--+--+--+--+--- - 7 -
Структура вычислителя: ---------------------------------¬ ==>¦I1 ¦ ¦ ¦ ==>¦I2 ОА D¦==> ¦ ¦ ---/C rO+--> ¦ ¦ ¦ ¦ ¦z p umB uwA uwB uiA urO uwO ¦ ¦ LT--T--A---A---A---A---A---A------ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ -V--V--+---+---+---+---+---+-----¬ ¦ ¦z p y1 y2 y3 y4 y5 y6 ¦ ¦ ¦ ¦ +--/C ¦ ¦ УА ¦ -->+rI ¦ L--------------------------------- УА должен выполнять следующий алгоритм автоматного типа,
представленный в виде блок-текста: m1{xxxx10} g1<<GO(rI;g1,m2)>> m2{111x10} m3{x000x0} <<GO(z;g2,m6)>> g2<<GO(p;m4,m5>> m4{0011x0} <<GO m3>> m5{0100x0} <<GO m3>> m6{x0xx01} <<GO g1>> _МИКРОПРОГРАММИРОВАНИЕ. ОПРЕДЕЛЕНИЯ. МИКРООПЕРАЦИЯ - базисное (элементарное) действие, необ-
ходимое для получения (вычисления) значения одной или более
переменных. Микрооперация присваивания В=А означает, что переменные
левой части получают значения выражения из правой части.
Всегда разрядность левой части равна разрядности правой час-
ти. При этом биты, расположенные на одной и той же позиции в
левой и правой частях, равны. Неиспользуемые разряды в левой части и произвольные зна-
чения в правой части микрооперации присваивания обозначаются
(х). Например: (В[7],x,B[6..0]) = (A[7..0],x)
означает арифметический сдвиг влево на один разряд 8-разряд-
ного числа с присваиванием произвольного значения младшему
разряду и с потерей старшего после знака разряда. А, напри-
мер, микрооперация (B[7..0],d) = (A[7],A[7..0])
означает арифметический сдвиг вправо на один разряд.
Микрооперация (p,S[3..0]) = A[3..0] + B[3..0] + q
описывает действие, выполняемое стандартным 4-разрядным сум-
матором, если ( А,В,q ) являются его непосредственными входа-
ми, а ( р,S ) - выходами. Микрооперация ( : ) - двоеточие - означает запоминание
(изменение значения) в памяти устройства. Переменная типа па-
мять сохраняет свое значение между двумя очередными присва-
иваниями. - 8 - Микрооперации всегда входят в состав микрооператоров. МИКРООПЕРАТОР - набор взаимосвязанных микроопераций (или
одна микрооперация ), выполняемых одновременно и необходимых
для получения одного или более значений. Например: ( e,D:) = R1 + R2 + c
Фрагмент аппаратуры, реализующей этот микрооператор, мог бы
быть, например, таким: ----¬ c ¦MUX¦
-T--T¬ ¦ ¦ ----¬
¦¦T ¦+--->+0 ¦ -----¬ ¦MUX¦ D
L+--+- -->+1 ¦ ¦ SM¦ ¦ ¦ -T--T¬ -->+А +--->+cr ¦ ===>¦0 ¦===>¦¦RG¦¦==> +---+ ¦ S¦=====>¦1 ¦ L+--+- R1 ¦MUX¦ ¦ ¦ ===>¦А ¦
-T--T¬ ¦ ¦ ¦ ¦ L----
¦¦RG¦¦===>¦0 ¦===>¦I1 ¦ ----¬
L+--+- ==>¦1 ¦ ¦ ¦ ¦MUX¦ ==>¦А ¦ ¦ ¦ ¦ +------------>e +---+ ¦ p+----->+0 ¦ R2 ¦MUX¦===>¦I2 ¦ --->+1 ¦
-T--T¬ ¦ ¦ L----- --->+А ¦
¦¦RG¦¦===>¦0 ¦ L----
L+--+- ==>¦1 ¦ ==>¦А ¦ L----
Имена всех переменных, используемых в этом микрооператоре,
означают выполнение микроопераций коммутации ( транспортиров-
ки ). Значения переменных коммутируются на входы суммматора,
а результат суммирования - в места расположения переменных. МИКРОБЛОК - набор микрооператоров, выполняемых одновре-
менно ( в одном такте ) и синхронно. В одном микроблоке любо-
му из битов присваивается только одно значение. Синхронность означает, что во всех микрооператорах одно-
го микроблока используется только "старое" значение памяти.
Например: { (p,A):= A + B (C,r):= A + D }
- и в том, и в другом микрооператоре используется одно и то
же старое значение А. В то же время в микроблоке: { (C,x):= A + D (x,A)= C + B }
в первом микрооператоре используется новое значение А , а во
втором - старое значение С. Разумеется, эти два действия вы-
полняются одновременнo на двух разных сумматорах. При реализации микроблока { A:= B ; B:= 0 } обязательна
синхронная реализация В:=0 ( хотя обычно такое действие проще
реализовать асинхронно, но это приводит к ошибке ). Другой
правильный вариант: можно выполнить В:=0 асинхронно, но в
следющем такте. Всегда предполагается, что предикат вычисляется вместе
(в одном такте) с тем микроблоком, за которым непосредственно
следует его использование.Таким образом, здесь, также как и в
микроблоке, используется старое значение памяти, существовав-
шее перед входом в микроблок. Это связано с особенностями
взаимодействия ОА и УА. Например: - 9 - - - - CT:=(+0)- - CT:=(+0)- - - ¦ ¦ -----V---¬ -----V---¬ m1¦ CT:=3 ¦ m1¦ CT:=3 ¦ L----T---- L----T----
------->¦ ------->¦
¦ -V- ¦ -V-
¦ / \ =0 ¦ / \ =0
¦ <CT==0>-> ¦ <CT==0>->
¦ \___/ ¦ \___/
¦ ¦+0 ¦ ¦+0
¦ -----V---¬ ¦ -----V---¬
¦m2¦........¦ ¦m2¦........¦
¦ ¦ ¦ ¦ ¦ ¦
¦ ¦CT:=CT-1¦ ¦ ¦CT:=CT-1¦
¦ L----T---- ¦ L----T----
L-------- ¦ -----V---¬ ¦m3¦........¦ ¦ L----T---- L--------
В первом случае цикл будет выполнен 4 раза; во втором - если
в микроблоке m3 нет операций, модифицирующих СТ, - 3 ра-
за. ( Обратите внимание на начальное значение СТ!) МИКРОКОМАНДА - набор сигналов, поступающий из УА в ОА и
интерпретируемый как управляющий,т.е. необходимый для выпол-
нения всех микроопераций одного микроблока. Сигналы, входящие
в микрокоманду, могут принимать участие в микрооперациях и в
качестве информационных. Микрокомандой также иногда называют слово управляющей
памяти (обычно ПЗУ), являющееся частью УА. Для различения
этих понятий слово управляющей памяти будем называть МИКРО-
ИНСТРУКЦИЕЙ. МИКРОПРОГРАММА СОДЕРЖАТЕЛЬНАЯ - алгоритм, представленный
в виде микроблоков и предикатных блоков в одной из принятых
форм, например, в виде блок-схемы или блок-текста. МИКРОПРОГРАММА КОДИРОВАННАЯ - аппаратная форма содержа-
тельной микропрограммы в виде кодов, заполняющих управляющую
память. _КАНОНИЧЕСКАЯ СТРУКТУРА ОПЕРАЦИОННОГО АВТОМАТА В общем случае каноническая структура операционного ав-
томата имеет вид:
-----------------------------------------------------------
- -
- -----------¬ -T------T¬ -----------¬ --------¬ -
-->¦коммутация¦ ¦¦память¦¦ ¦коммутация¦ ¦функции¦--- ¦ ¦--->¦¦ ¦¦-->¦ ¦-->¦ ¦
-->¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦---> L-A--------- -/-++---A--+- L--A-------- L--A----- - --¬¦CC - - - - SYN->+&+- - - - - -+ ¦ - - - - yC¦L-- - - - L------------------------------------------------- сигналы управления
Столь четкого разграничения операций на зоны (память, комму-
тация, функции) может и не быть. Например, такие широко ис-
пользуемые функции как сдвиги либо хорошо совмещаются с
коммутацией, либо интегрируются с регистрами хранения.Также
часто интегрируются с хранением функции инкремента и - 10 -
декремента (счетчики обычные и реверсивные). Особо выделим сигнал yС, управляющий доступом синхросиг-
налов в ОА. Такой вариант управления, называемый условной
синхронизацией, позволяет запретить любые изменения памяти ОА
в каком-либо такте. Причем, если рабочим является срез (зад-
ний фронт) сигнала синхронизации, то используется элемент И,
как и показано на рисунке.Если же рабочим является фронт (пе-
редний фронт) сигнала, то используется элемент ИЛИ. (Первый
перепад сигнала синхронизации в новом такте не должен быть
рабочим.) _ОПТИМИЗАЦИЯ ОПЕРАЦИОННОГО АВТОМАТА При проектировании вычислительного устройства основными
являются ограничения на: 1)- время вычисления; 2)- объем аппаратуры, реализующей вычисления; 3)- тип применяемых базовых функций. ОПТИМИЗАЦИЯ АПППАРАТУРЫ ПРИ СОХРАНЕНИИ МИНИМАЛЬНОГО ВРЕМЕНИ Алгоритм функционального типа обладает максимальным по-
тенциальным параллелизмом (в рамках данной алгоритмической
идеи), и,следовательно, его реализация в виде КС обладает
максимальным быстродействием по сравнению с любыми другими
вычислителями. Невозможность реализации вычислителя в виде КС
может быть обусловлена следующими причинами: - слишком велик объем аппаратуры КС; - функциональное представление и его реализация являются
статическим отображением входных объектов на выходные: это
исключает возможность работы с объектами, которые "ведут се-
бя" более сложно во времени; невозможно также реализовать
принципиально рекуррентные алгоритмы (см.,например,алгоритм
Евклида для нахождения НОД). Тем не менее, если формально алгоритм функционального
типа может быть записан, то проектирование устройства надо
начинать с записи именно такого алгоритма. Минимизация аппаратуры "сложной" КС с переходом на про-
цедурный вариант реализации связан с "экономией" числа опера-
ционных элементов, т.е. со слиянием некоторых из них в один
функциональный модуль, выполняющий эти операции по очереди.
Такое решение потребует запоминания всех переменных (входных
и выходных),связанных с выполнением этих операций. Требуется
также управление памятью, связанной с этим функциональным мо-
дулем, а также - может быть - управление самим функциональным
модулем, если он объединил существенно различные функции. Переход к процедурной реализации и, следовательно, к
дискретизации времени неизбежно увеличит время вычисления од-
ного результата - даже при реализации структуры подобной КС.
При этом, как ни странно, может уменьшиться время следующих
друг за другом вычислений именно за счет дискретизации време-
ни и применения так называемых "конвейерных" вычислений - но
об этом речь пойдет в другом курсе. Рассмотрим возможность сокращения аппаратуры без увели-
чения времени решения, достигнутого в алгоритме функциональ-
ного типа. Сопоставим схеме устройства, реализующего алгоритм
функционального типа, простую модель в виде направленного
графа. Вершины графа будут соответствовать операциям, а дуги
- переменным алгоритма. Назовем такой граф сигнальным (графом
потоков данных). Заметим, что сигнальный граф всегда будет
ациклическим. Минимальность времени вычислений сохранится, если совме-
щать в один функциональный модуль операции, которые располо-
жены на одном и том же пути в сигнальном графе, либо на аль-
тернативных путях решения. - 11 - _МИНИМИЗАЦИЯ АППАРАТУРЫ Может оказаться, что на одном пути в сигнальном графе
расположены операции, плохо или вовсе не совмещаемые друг с
другом (т.е. совмещение не дает экономии в аппаратуре функци-
онального модуля). Возможно также, что проведенная минимиза-
ция, сохраняющая минимальное время, не позволяет выполнить
ограничение на объем аппаратуры. В таком случае необходима
более глубокая минимизация,охватывающая параллельные ветви
сигнального графа. Минимизация должна быть взаимосвязанной по
всем компонентам ОА: по памяти, функциональным модулям и ком-
мутации. В настоящее время процедуры минимизации не формализованы
и сводятся к перебору "правдоподобных" вариантов. Можно предложить следующую последовательность действий: 1)- все "похожие" функции (операции) реализовать на одном
функциональном модуле, например, все суммирования выполнять
на одном сумматоре; 2)-скорректировать алгоритм так, чтобы в одном микроблоке не
выполнялось более одной операции на одном и том же функци-
ональном модуле; 3)- минимизировать память автомата, т.е. число запоминаемых
промежуточных переменных; Выполнение этих этапов может привести к усложнению ком-
мутации, а значит, и к увеличению этой компоненты в аппарату-
ре ОА. Если ограничение по объему аппаратуры все еще наруше-
но, то повторить этапы 1 - 3 с другим вариантом объединения
функциональных модулей и памяти. При реализации ОА - во избежание ошибок -необходимо бук-
вально следовать описанию алгоритма, но в то же время, при
проектировании самого алгоритма надо представлять себе реали-
зацию микроблоков. Реализация одних и тех же вычислений может
быть существенно различной по объему аппаратуры. Например, вычисления в цикле потребуют реализации: -T- ¦ --------V-------¬ A -----¬ ¦ J:=0 ¦ -T--T-¬ ¦ MUX¦ -----¬ L-------T-------- ¦¦RG¦0+--->+0 ¦ ¦ f ¦
-------¬ ¦ ¦¦ ¦.¦ . ¦. ¦A[J] ¦ ¦
¦ -----V--V-------¬ ¦¦ ¦.¦ . ¦. +---->+ ¦
¦ ¦ ..... ¦ ¦¦ ¦.¦ . ¦. ¦ ¦ ¦ B
¦ ¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦==>
¦ ¦ B= f(...,A[J])¦ ¦¦ ¦K+--->+K ¦ ¦ ¦
¦ ¦ ¦ ¦¦ ¦.¦ ¦. ¦ ==>¦ ¦
¦ ¦ J:=J+1 ¦ ¦¦ ¦.¦ ¦. ¦ ¦ ¦
¦ L-------T-------- ¦¦ ¦.¦ ¦. ¦ ¦ ¦
¦ -V- L+--+-- +- ¦ L-----
¦ <K / \ =K J=========>¦А ¦
L------<J==K>-----> L----- \__/
(реализация счетчика J не показанa). - 12 - Запишем этот фрагмент алгоритма иначе так, чтобы нужный
бит извлекался за счет сдвига в регистре D. Тогда получим: ---T-- A D ¦ -T--T¬ -T--T-¬ A[J] ------¬ --------V-------¬ ¦¦RG¦¦ ¦¦RG¦0+----->+ f ¦ ¦ J:=0 ¦ ¦¦ ¦¦ ¦¦ ¦.¦ ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦->¦.¦ ¦ ¦ B ¦ D:=A ¦ ¦¦ ¦¦======>¦¦ ¦.¦ ¦ ¦==> L-------T-------- ¦¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦
-------¬ ¦ ¦¦ ¦¦ ¦¦ ¦K+ ¦ ¦
¦ -----V--V-------¬ ¦¦ ¦¦ x -->+Dn ¦.¦ ¦ ¦
¦ ¦ ..... ¦ ¦¦ ¦¦ ¦¦ ¦.¦ ==>¦ ¦
¦ ¦ ¦ ¦¦ ¦¦ S W¦¦ ¦.¦ ¦ ¦
¦ ¦ B= f(...,D[0])¦ L+--+- -v-v++--+-- L------
¦ ¦ ¦
¦ ¦ (D,x):=(x,D) ¦
¦ ¦ ¦
¦ ¦ J:=J+1 ¦
¦ L-------T--------
¦ -V-
¦ <K / \ =K
L------<J==K>-----> \__/
Промежуточный регистр A введен для общности, если потребуется
сохранить слово А (чаще всего он и не нужен). Другой пример: фрагмент алгоритма, реализующий регуляр-
ную запись отдельных бит слова и его реализация имеют вид: ---T-- -T-T¬B[0] ¦ a ------------T----->+¦T¦+----> --------V-------¬ ¦ W¦¦ ¦¦ ¦ J:=0 ¦ ----¬ ¦ -A++-+- L-------T-------- ¦DC ¦ ---+------| |
-------¬ ¦ ¦ 0+-- ¦ | |
¦ -----V--V-------¬ ¦ .¦. ¦ -T-T¬B[K]
¦ ¦ ..... ¦ ¦ .¦. L----->+¦T¦+---->
¦ ¦ ¦ ¦ .¦. W¦¦ ¦¦
¦ ¦ a=f(...) ¦ J ==>¦ ¦ -A++-+-
¦ ¦ ¦ ¦ K+-----------
¦ ¦ B[J]:=a ¦ ¦ .¦
¦ ¦ ¦ ¦ .¦
¦ ¦ J:=J+1 ¦ ¦ .¦
¦ L-------T-------- L----
¦ -V-
¦ <K / \ =K
L------<J==K>-----> \__/
Слово В нельзя реализовать в виде регистра, а только в виде
отдельных триггеров. Можно формировать слово с использованием операции сдви-
га при обязательном условии D[K..0], тогда алгоритм и его ре-
ализация имеют вид: - 13 - ---T-- ¦ D B --------V-------¬ ---T--T¬ -T--T¬ ¦ J:=0 ¦ ¦ ¦RG¦¦ ¦¦RG¦¦ L-------T-------- ¦ ¦->¦¦ ¦¦ ¦¦
-------¬ ¦ a ¦ ¦ ¦¦=====>¦¦ ¦¦
¦ -----V--V-------¬ -->+Dk¦ ¦¦ ¦¦ ¦¦
¦ ¦ ..... ¦ S¦ ¦ ¦¦ W¦¦ ¦¦
¦ ¦ ¦ -v+--+--+- -v++--+-
¦ ¦ a=f(...) ¦
¦ ¦ ¦
¦ ¦ (D,x):=(a,D) ¦
¦ ¦ ¦
¦ ¦ J:=J+1 ¦
¦ L-------T--------
¦ -V-
¦ <K / \ =K -----¬
L------<J==K>-->+B:=D+> \__/ L-----
В этом случае, так же, как и в предыдущем, чаще всего не ну-
жен промежуточный регистр (В). _УНИВЕРСАЛЬНЫЙ ОА Использование при проектировании универсальных ОА с за-
ранее фиксированной и минимизированной структурой оправдано
тем, что такие универсальные ОА изготавливаются промышлен-
ностью в виде БИС большим тиражом и поэтому они сравнительно
дешевы. Такие универсальные ОА входят в микропроцессорные на-
боры 582, 583, 584, 588, 589, 1800, 1804 и т.д., которые на-
зываются микропрограммируемыми, секционными, разрядно-модуль-
ными. В основе перечисленных универсальных ОА лежит следующая
структура: г==================T===========================¬ ¦ ¦ ¦ ¦ ¦ SYN¬ ACC ¦ ¦ --T-----T¬ ¦ -/TT--T¬ ------¬ ¦ ¦ ¦ ¦ RGF ¦¦ ¦ C¦¦RG¦¦ ¦ ALU ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦¦ L====>¦¦ ¦¦=====>¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ ¦===¦=>DO L===>¦D¦ ¦¦ L+--+- ¦ ¦ ¦ ¦ ¦¦ T ¦ ¦ ¦ ¦ ¦¦ -T--T¬ ¦ ¦=====>P ¦ ¦ ¦¦ ¦¦RG¦¦ ¦ ¦ ¦ ¦ ¦¦=========>¦¦ ¦¦=====>¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ ¦ C W¦А¦ ¦¦ C¦¦ ¦¦ г=>¦ ¦ -o-A+A+-----+- -T++--+- ¦ L--A--- SYN- ¦ ¦ SYN- ¦ ¦ ¦ ¦ ¦ ¦ yW YA DI=====- YF ALU - арифметико-логическое устройство - комбинационная
схема с небольшим, но универсальным набором арифметических и
логических операций. RGF - регистровый файл - адресуемая память RAM со стати-
ческой синхронизацией при записи. RG'T' - регистр-фиксатор со статической синхронизацией. RG'АCC' - регистр-аккумулятор с динамической синхрониза-
цией. DI,DO - входная и выходная информационные шины. - 14 - Р - предикатные сигналы (флажки). YF - сигналы управления выбором функции. YA - адрес чтения и/или записи RGF. yW - разрешение записи в RGF. Память сравнительно большого объема, какой является RGF,
дешевле реализовать со статической синхронизацией. Для то-
го,чтобы такая память могла работать в замкнутом информацион-
ном кольце и при этом не возникали бы гонки, добавляется еше
один промежуточный регистр RG'T' со статической синхрониза-
цией. Если передний фронт является рабочим для регистров уп-
равляющего автомата и RG'ACC', то на первой фазе синхрониза-
ции при SYN=1 информация читается из RGF; при этом RG'T'
прозрачен. На следующей фазе синхронизации при SYN=0 информа-
ция фиксируется в RG'T', т.е. он закрыт для записи, а запись
(если она разрешена) производится в RGF. Фиксируется информа-
ция в RGF и RG'ACC' с началом следующего такта, т.е. на пе-
реднем фронте сигнала. _ВЗАИМОДЕЙСТВИЕ ОА и УА Для исключения гонок при взаимодействии ОА и УА будем
проектировать УА как автомат Мура. Схема их взаимодействия
может быть представлена в виде: г==========================¬ ¦-----¬ -T--T¬ -----¬ ¦ L¦ CS ¦ ¦¦RG¦¦ ¦CS ¦<- ¦ ¦<=T=¦¦ ¦¦<==¦ ¦ ----+ b ¦ ¦ ¦¦ ¦¦ ¦ c +<----¬ ¦ L----- ¦ L+--++A- L----- ¦ ¦ -----¬ ¦ L-----------¬ ¦ ¦ ¦CS ¦<=- ¦ ¦ ¦---+ a +<-------------------¬ ¦ ¦ ОА ¦¦ L----- ¦ ¦ ¦ ----¦¦----------------------------¦-¦-¦-- УА ¦¦РА-----¬ -T--T¬ ------¬¦ ¦ ¦¬ ¦L->+ CS¦ ¦¦RG¦¦ ¦ CS +- ¦ ¦¦ L-->+ ¦====>¦¦ ¦¦=>¦ +--- ¦¦Y РВ ¦ ¦ ¦¦ ¦¦ ¦ +-----¦ г>¦ p ¦ ¦¦ ¦¦ ¦ y ¦=¬ - ¦ L----- L+--+- L------ ¦ L============================-
Отметим, что РА(t)=f(Y(t)) зависит без сдвига от сигналов управления, PB(t+1)=F(Y(t)) зависит со сдвигом от сигналов управления,
где РА и РВ - предикатные перемнные. Продолжительность такта работы схемы определяется наибо-
лее длинными цепями между регистрами. Для данной схемы, кото-
рую будем называть последовательной схемой взаимодействия,
зададимся (так чаще всего бывает), что такой критической
цепью является цепь (CSy,CSa,CSp,RG). Поэтому длительность
такта определяется: Т > ty + ta + tp + trg,
где tj- время установления соответствующего компонента цепи. Чтобы сократить длину этой цепи, применяют другой вари-
ант взаимодействия автоматов - конвейерный: - 15 - г==========================¬ ¦-----¬ -T--T¬ -----¬ ¦ L¦ CS ¦ ¦¦RG¦¦ ¦CS ¦<- ¦ ¦<=T=¦¦ ¦¦<==¦ ¦ ------------+ b ¦ ¦ ¦¦ ¦¦ ¦ c +<----¬ ¦ FF L----- ¦ L+--++A- L----- ¦ ¦ -T--T¬ -----¬ ¦ L-----------¬ ¦ ¦--+¦RG¦¦<==¦ CS ¦<=- ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ a +<-------------------¬ ¦ ¦ ¦¦ L+--++A- L----- ¦ ¦ ¦ ОА ¦¦ L--------------------------¬ ¦ ¦ ¦ ---¦¦----------------------------------¦-¦-¦-¦-- УА ¦¦ MK ¦ ¦ ¦ ¦ ¦¦ PA -----T----¬ -T--T¬¦ ¦ ¦ ¦¬ ¦L---->+ CS¦ CS ¦ ¦¦RG¦+- ¦ ¦ ¦¦ ¦ РВ ¦ ¦ ¦ ¦¦ ¦+--- ¦ ¦¦Y L----->+ ¦ ¦===========>¦¦ ¦+----- ¦¦ ¦ ¦ ¦ ¦¦ ¦+-------¦ г>¦ p ¦ y ¦ ¦¦ ¦¦=¬ - ¦ L----+----- L+--+- ¦ L===============================- При этом варианте взаимодействия такой длинной цепи, как
в предыдущем случае, не возникает.Эта цепь разделена регис-
трами RG'FF' (регистр флажков) и RG'MK' (регистр микрокоман-
ды) на две цепи. Продолжительность такта становится меньше и
ее можно определить следующим образом: T > max( ta,(tp + ty) )+ trg , При конвейерном варианте взаимодействия PA(t+1)=f(Y(t)), т.е. и эти значения стали зависить со
сдвигом от сигналов управления. Тогда фрагмент микропрограммы mS{...;pA=f(...)} << GO(pA;mi,mj)>>,
выполняемый в последовательной схеме за один такт, в кон-
вейерном варианте за один такт выполнен быть не может и дол-
жен быть модифицирован следующим образом: mS{...,pA=f(...)} mS'{нет операции} << GO(pA;mi,mj)>>
Таким образом, время выполнения этого фрагмента не только не
уменьшилось, но даже возросло несмотря на уменьшение продол-
жительности каждого из тактов. Зато во всех остальных случа-
ях (при безусловных переходах, при переходах по значению РВ)
время выполнения микропрограммы уменьшается. _НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ СИНХРОННОЙ СХЕМЫ Пусть устройство, кроме сигнала синхронизации SYN, имеет
еще один сигнал Н, обозначающий начало и конец синхронной ра-
боты устройства. При Н=0 - нерабочее состояние - можно выпол-
нять начальную установку значений памяти устройства. Измене-
ние значения Н с 0 на 1 происходит в случайный момент времени
(асинхронно), но при этом начальный такт работы устройства
должен быть полным. "Затягивание" асинхронного сигнала Н в
синхронный режим происходит с помощью простейшего синхронного
автомата с диаграммой: -----------¬ ---------¬ V 0H/CONST¦ V 1H/SYN¦ -------------- ------------ >¦ 0 ¦-------------->¦ 1 ¦------¬ ----- 1H/CONST ----- 0H/X ¦ л ¦ L-----------------------------
У этого автомата простейшей является функция переходов, так
как диаграмма автомата совпадает с диаграммой переходов - 16 -
D-триггера. Схема автомата вместе с цепями условной синхронизации
выглядит следующим образом (для синхронизации по фронтам): а)-по переднему фронту, б)- по заднему фронту: ---¬ ---¬
SYN --T----------+ 1+-- CC SYN --T----------+ &+-- CC ¦ --T-¬ --+ ¦ ¦ --T-¬ --+ ¦ L-/C¦T¦ ¦ L--- L-\C¦T¦ ¦ L--- ¦ ¦ + ¦ ¦ ¦ +--- --+D¦ ¦ ¦ --+D¦ ¦ ¦ +-+ o--- ¦ +-+ o- +-oR¦ ¦ +-oR¦ ¦ H ¦ L-+--уст. нач. зн. H ¦ L-+--уст. нач. зн. --+------------------- --+-------------------
Такая разница в цепях условной синхронизации, как уже объяс-
нялось выше, определяется тем, что первый перепад сигнала СС
не должен быть рабочим.
Антик М.И. 11_03_91 МИРЭА АЛГОРИТМЫ ПРОЦЕДУРНОГО ТИПА. ОПЕРАЦИОННЫЕ УСТРОЙСТВА Алгоритмы этого типа являются следующим этапом обобщения
описаний вычислительных процессов. Теперь, по сравнению с ал-
горитмами автоматного типа, на каждом шаге, помимо модифика-
ции памяти, идентифицирующей шаг алгоритма, разрешается изме-
нять любую другую память устройства локально (по частям) или
глобально (всю сразу). Устройство-исполнитель алгоритма этого типа будем назы-
вать операционным устройством (ОУ). ОУ можно рассматривать как один синхронный автомат со
сложно структурированной памятью - состоянием: часть памяти
используется для идентификации шага алгоритма, остальная па-
мять используется для запоминания промежуточных данных, вы-
числяемых в процессе последовательного, по шагам, выполнения
алгоритма. Такая модель вычислителя особенно удобна для рас-
чета продолжительности одного такта работы устройства. Другой удобной моделью вычислителя является совокуп-
ность взаимодействующих синхронных автоматов, один из которых
называется управляющим автоматом (УА), а объединение всех ос-
тальных автоматов называется операционным автоматом (ОА). УА является исполнителем алгоритма автоматного типа, ко-
торый входит составной частью в любой алгоритм процедурного
типа. Кроме того, УА инициирует действия отдельных шагов ал-
горитма и участвует в их выполнении. ОА выполняет все вычисления на отдельных шагах алгоритма
под управлением УА; кроме того, к ОА удобно отнести все вы-
числения предикатных функций, оставив УА только анализ вычис-
ленных предикатных значений. Прежде чем переходить к точным терминам, рассмотрим сле-
дующиe примеры алгоритмов процедурного типа. Например, каноническое описание синхронного конечного
автомата может быть интерпретировано (истолковано) как одно-
шаговый алгоритм процедурного типа. - -------¬ ¦ ¦ ---V--V-----¬ ¦ ¦ B=FO(S,A) ¦ ¦ ¦ ¦ ¦ ¦ S:=FS(S,A)¦ ¦ L-----T------ L---------- Исполнитель этого алгоритма состоит только из ОА. На
каждом шаге этого алгоритма изменяется вся память устройства,
поэтому управление памятью не требуется, идентифицировать ша-
ги этого алгоритма не надо. Например, инкрементор с одноразрядным входом и однораз-
рядным выходом может быть реализацией следующих преобразова-
ний: - - p:=1 - - ---------¬ ¦ ¦ ------V-V-------¬ ¦ ¦ (p:, b) = a+p ¦ ¦ L-------T-------- L-----------
ОА, реализующий инкрементор в целом, будет следующим: ---T-¬ a ------------------+HS¦S+----_b --T-¬p ¦ ¦ ¦
начальное значен.-+S¦T+--+ ¦P+--¬ +-+ ¦ L--+-- ¦ SYN ---------/C¦ ¦ ¦ -+D¦ ¦ ¦ ¦L-+-- ¦ L----------------
Конечно, эта реализация совпадает с реализацией алгоритма ав-
томатного типа, если состояние р1 кодируется 1, а состояние
р0 - 0. Этот пример показывает,что до начала вычислений может
потребоваться начальная установка памяти. На самом деле это
необходимо было уже в алгоритмах автоматного типа, так как
код начального состояния требует предварительной установ-
ки. Ограничимся здесь обозначением этой проблемы, а решение
ее, связанное прежде всего с корректной синхронизацией ус-
тройства в первом такте его работы, рассмотрим ниже. При рассмотрении процедуры построения автомата Мура эк-
вивалентного автомату Мили , не обсуждалась простая возмож-
ность ее реализации и на структурном уровне. Например, только
что рассмотренный автомат Мили может быть преобразован в эк-
вивалентный автомат Мура по одному из следующих вариантов: -T-T¬t---T-¬ ---T-¬ -T-T¬
a --_+¦T¦+_+HS¦S+-_b a -----_+HS¦S+-_+¦T¦+-_b -/++-+- ¦ ¦ ¦ ¦ ¦ ¦-/++-+- C ¦ ¦ ¦ C ¦ ¦ ¦ C -/TT-T¬p¦ ¦ ¦ -/TT-T¬p¦ ¦ ¦ -_+¦T¦+_+ ¦P+¬ -_+¦T¦+_+ ¦P+¬ ¦ L+-+- L--+--¦ ¦ L+-+- L--+--¦ L-------------- L-------------- При таких структурных преобразованиях проще истолковы-
вать алгоритмы как процедурные. - - - p:=1; t:=0 - - p:=1 - - - ---------¬ ¦ ---------¬ ¦ ¦ ------V-V-------¬ ¦ ------V-V-------¬ ¦ ¦t:=a;(p:,b)=t+p¦ ¦ ¦ (p , b):= a+p ¦ ¦ L-------T-------- ¦ L-------T-------- L----------- L----------- БЛОК-ТЕКСТ. Способ описания автоматного алгоритма после
некоторых дополнений может быть использован и для описания
алгоритмов в процедурной форме: Блок-текст состоит из трех частей: 1)- Описание переменных и начальных значений памяти. 2)- Описания функций и связей. Записываются любые функции и
функциональные связи (в том числе предикатные), не использу-
ющие запоминания. Переменные из левой части операции присва-
ивания таких функциональных описаний используются в блоках
процедуры. 3)- Процедура, состоящая из блоков (микроблоков) операторных
и блоков переходов:
- операторные - в скобках вида {.....},
- перехода - в скобках вида <<...>>;
и те, и другие блоки могут снабжаться метками, стоящими перед
блоком. В блоках перехода используется оператор GO в одной
из двух форм: GO m - безусловный переход, GO (P; m0,m1,m2,...) - условный переход.
здесь m0,m1,... - метки блоков, P - предикатное значение,интерпретируемое оператором GO
как неотрицательное целое число, являющееся порядковым номе-
ром метки в списке меток оператора GO. С этой метки должно
быть продолжено выполнение алгоритма. Блоки условных перехо-
дов эквивалентны предикатным вершинам блок-схемы алгоритма. На следующем более сложном примере демонстрируется пос-
ледовательность синтеза операционного устройства. Пример. Вычислитель наибольшего общего делителя (НОД)
двух натуральных чисел (8-разрядных). 1) Разработаем интерфейс вычислителя: 8 ---T-----T--¬ ===+=>¦I1¦ НОД ¦ ¦ ¦ ¦ ¦ ¦ 8 8 ¦ ¦ ¦D ¦==+==> ===+=>¦I2¦ ¦ ¦ +--+ +--+ ----->+rI¦ ¦rO+-----> +--+ ¦ ¦ ----->+ C¦ ¦ ¦ L--+-----+--- I1[7..0], I2[7..0] -входные информационные шины. rI -входной сигнал готовности: если rI=1, то на входах I1,
I2 готовы операнды. D[7..0] -выходная информационная шина . rO -выходной сигнал готовности: если rO=1, то готов резуль-
тат на шине D, который сохраняется до появления новых операн-
дов. 2) Математическое обоснование алгоритма вычислений: Идея алгоритма, следуя Евклиду (IIIв. до р.Х.), заключа-
ется в том, что НОД двух натуральных чисел А и В в случае ра-
венства этих чисел совпадает с любым из них, а в случае их
неравенства совпадает с НОД двух других чисел: меньшего и
разности между большим и меньшим. Последовательно, уменьшая
числа, получим два равных числа -значение одного из них и бу-
дет НОД исходных чисел. 3) Блок-схема алгоритма (микропрограмма в содержательном
виде): - ¦ -------V------¬ m1¦ rO: = 0 ¦ L------T------- ¦-------------------¬ ¦¦------¬ ¦ -VVV- ¦ ¦ / \ 0 ¦ ¦ < rI>------ ¦ \_/ ¦ ¦1 ¦ -------V------¬ ¦ ¦ rO: = 0 ¦ ¦ ¦ ¦ ¦ m2¦ А: = I1 ¦ ¦ ¦ ¦ ¦ ¦ B: = I2 ¦ ¦ L------T------- ¦ --------------------¬¦ ¦ ¦ ------VV------¬ ¦ ¦ m3¦ (p,S)=A - B ¦ ¦ ¦ L------T------- ¦ ¦ -V- m6 ¦ ¦ / \ =0 -----------¬¦ ¦ z <S==0>--->+ rO:=1;D=A+- ¦ \__/ L----------- ¦ ¦+0 ¦ V ¦ 0 / \ 1 ¦ --------< p >--------¬ ¦ --------V------¬ \_/ --------V------¬ ¦m4¦ (x,B:)=-A+B ¦ m5¦ (x,A:)=A - B ¦ ¦ L-------T------- L-------T------- L----------+--------------------- Или в виде блок-текста:
I1[7..0], I2[7..0] --входные шины
D[7..0] --выходная шина
rI, rO --сигналы готовности
A[7..0]:, B[7..0]: --память текущих значений
S[7..0] --разность
z, p --предикатные переменные
z=¬(!/S) --сжатие(свертка) S[7..0] по ИЛИ-НЕ --можно записать иначе z=(S==0)
D=A
------------------------------------------- m1{rO:=0} g1<<GO(rI;g1,m2)>> m2{rO:=0; A:=I1; B:=I2} m3{(p,S)=A-B} <<GO(z;g2,m6)>> g2<<GO(p;m4,m5)>> m4{(x,B:)=-A+B} <<GO m3>> m5{(x,A:)= A-B} <<GO m3>> m6{rO:=1} <<GO g1>> 4) Разработка функциональной схемы операционного автома-
та. В ОА должны быть реализованы все переменные с памятью и
без,а также вычислительные операции,используемые в алгоритме. A г==============================>D -/TT--T¬ ¦ -------------¬ C¦¦RG¦¦ ¦ ¦ f1=(A-B) ¦ ¦¦ ¦¦ ¦ A¦ ¦
I1=====> ==>¦¦ ¦¦==- =>¦ f2=(-A+B)¦ --¬ ¦¦ ¦¦ ¦ ¦S S¦1¦ ¦¦ ¦¦ ¦ ¦> =>+ o--->z ++--+- ¦ ¦ ¦ ¦ B ¦ ¦ L-- -/TT--T¬ ¦ ¦ C¦¦RG¦¦ ¦ +------------>p ¦¦ ¦¦B B¦ ¦
I2=====> =>¦¦ ¦¦> =>¦ ¦ -/TT-T¬ ¦¦ ¦¦ ¦ ¦ C¦¦ ¦+>rO ¦¦ ¦¦ ¦ ¦ ¦¦ ¦¦
rI-----> ++--+- L------------- L+-+- Кроме того, в ОА необходимо реализовать все информацион-
ные связи, соответствующие микрооперации коммутации, а также
микрооперации запоминания (загрузки, записи) и обнуления. г==============================================¬ ¦ A г======================¦=======>D ¦ -----¬ -/TT--T¬ ¦ -----¬ -------¬ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦ ¦M2*8¦ 1->+cr SM¦ ¦ ¦=>+0 ¦ ¦¦ ¦¦ ¦ ¦ ¦ +- ¦ ¦
I1==¦=>+1 ¦======>¦¦ ¦¦==¦==>¦ ¦===>¦I1 ¦ ¦ --¬ ¦ + ¦ ¦¦ ¦¦ A ¦ ¦ ¦ ¦ ¦ ¦1¦ ¦ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ S¦=¦>¦ o--->z ¦ LA---- -A++--+- LA---- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L-- ¦ umA uA uiA ¦ ¦ ¦ B ¦ ¦ ¦ -----¬ -/TT--T¬ -----¬ ¦ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦M2*8¦ ¦ p+--------->p L=>¦0 ¦ ¦¦ ¦¦ B ¦ ¦ ¦ ¦
I2====>¦1 ¦======>¦¦ ¦¦=====>¦ ¦===>¦I2 ¦ C + ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ -/TT-T¬ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ ¦1->+¦T¦+>rO LA---- -A++--+- LA---- L-------R W¦¦ ¦¦ ¦ ¦ ¦ -A-A++-+- uMB uB uiB urO uwO 5) Формулировка требований к управляющему автомату. При формировании управляющих сигналов следует обратить
внимание не только на операции, которые необходимо выполнить
на данном шаге, но и на те оперции, которые нельзя выполнять
на этом шаге, это - как правило, операции изменения памяти. Будем считать, что операция активна, если значение уп-
равляющего сигнала равно 1. Для управления вычислениями на каждом шаге алгоритма
потребуются следующие управляющие сигналы: ¦umA¦umB¦uwA¦uwB¦uiA¦uiB¦urO¦uwO¦ ==+===+===+===+===+===+===+===+===¦ m1¦ ¦ ¦ ¦ ¦ ¦ ¦ 1 ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m2¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦ ¦ ¦ 1 ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m3¦ ¦ ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m4¦ ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m5¦ 0 ¦ ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ ¦ 0 ¦ --+---+---+---+---+---+---+---+---+ m6¦ ¦ ¦ 0 ¦ ¦ ¦ ¦ 0 ¦ 1 ¦ --¦---+---+---+---+---+---+---+---- В незаполненных клетках сигналы безразличны. Заметив, что umA = umB , uiB = ¬uiA , окончательно полу-
чаем: г==============================================¬ ¦ A г======================¦=======>D ¦ -----¬ -/TT--T¬ ¦ -----¬ -------¬ ¦ ¦ ¦ MUX¦ C¦¦RG¦¦ ¦ ¦M2*8¦ 1->+cr SM¦ ¦ ¦=>¦0 ¦ ¦¦ ¦¦ ¦ ¦ ¦ +- ¦ ¦
I1==¦=>¦1 ¦======>¦¦ ¦¦==¦==>¦ ¦===>¦I1 ¦ ¦ --¬ ¦ + ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦1¦ ¦ ¦А ¦ W¦¦ ¦¦ +- ¦ ¦ S¦=¦>¦ o--->z ¦ LA---- -A++--+- LA---- ¦ ¦ ¦ ¦ ¦ L----¬ --- B ------ +- ¦ L-- ¦ -----¬¦ ¦-/TT--T¬ ¦ -----¬ ¦ ¦ ¦ ¦ MUX¦¦ ¦ C¦¦RG¦¦ ¦ ¦M2*8¦ ¦ p+--------->p L=>¦0 ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦
I2====>¦1 ¦¦===¦=>+¦ ¦¦==¦==>+ ¦===>¦I2 ¦ + ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦А ¦¦ ¦ W¦¦ ¦¦ ¦ +- ¦ ¦ ¦ C LA----¦ ¦-A++--+- ¦ LA---- L------- -/TT-T¬ ¦ ¦ ¦ L-¬ ¦ --¬¦ 1->+¦T¦+>rO ¦ ¦ ¦ ¦ +>+ o- R W¦¦ ¦¦ +----- ¦ ¦ ¦ L-- -A-A++-+- umB uwA uwB uiA urO uwO ---¦--------¦----¦-----¦----------------------¦-¦----- y1 y2 y3 y4 y5 y6 ¦y1¦y2¦y3¦y4¦y5¦y6¦ ==+==+==+==+==+==+==¦ m1¦ ¦ ¦ ¦ ¦ 1¦ 0¦ --+--+--+--+--+--+--+ m2¦ 1¦ 1¦ 1¦ ¦ 1¦ 0¦ --+--+--+--+--+--+--+ m3¦ ¦ 0¦ 0¦ 0¦ ¦ 0¦ --+--+--+--+--+--+--+ m4¦ 0¦ 0¦ 1¦ 1¦ ¦ 0¦ --+--+--+--+--+--+--+ m5¦ 0¦ 1¦ 0¦ 0¦ ¦ 0¦ --+--+--+--+--+--+--+ m6¦ ¦ 0¦ ¦ ¦ 0¦ 1¦ --¦--+--+--+--+--+--- Структура вычислителя: ---------------------------------¬ ==>¦I1 ¦ ¦ ¦ ==>¦I2 ОА D¦==> ¦ ¦ ---/C rO+--> ¦ ¦ ¦ ¦ ¦z p umB uwA uwB uiA urO uwO ¦ ¦ LT--T--A---A---A---A---A---A------ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ -V--V--+---+---+---+---+---+-----¬ ¦ ¦z p y1 y2 y3 y4 y5 y6 ¦ ¦ ¦ ¦ +--/C ¦ ¦ УА ¦ -->+rI ¦ L--------------------------------- УА должен выполнять следующий алгоритм автоматного типа,
представленный в виде блок-текста: m1{xxxx10} g1<<GO(rI;g1,m2)>> m2{111x10} m3{x000x0} <<GO(z;g2,m6)>> g2<<GO(p;m4,m5>> m4{0011x0} <<GO m3>> m5{0100x0} <<GO m3>> m6{x0xx01} <<GO g1>> МИКРОПРОГРАММИРОВАНИЕ. ОПРЕДЕЛЕНИЯ. МИКРООПЕРАЦИЯ - базисное (элементарное) действие, необ-
ходимое для получения (вычисления) значения одной или более
переменных. Микрооперация присваивания В=А означает, что переменные
левой части получают значения выражения из правой части.
Всегда разрядность левой части равна разрядности правой час-
ти. При этом биты, расположенные на одной и той же позиции в
левой и правой частях, равны. Неиспользуемые разряды в левой части и произвольные зна-
чения в правой части микрооперации присваивания обозначаются
(х). Например: (В[7],x,B[6..0]) = (A[7..0],x)
означает арифметический сдвиг влево на один разряд 8-разряд-
ного числа с присваиванием произвольного значения младшему
разряду и с потерей старшего после знака разряда. А, напри-
мер, микрооперация (B[7..0],d) = (A[7],A[7..0])
означает арифметический сдвиг вправо на один разряд.
Микрооперация (p,S[3..0]) = A[3..0] + B[3..0] + q
описывает действие, выполняемое стандартным 4-разрядным сум-
матором, если ( А,В,q ) являются его непосредственными входа-
ми, а ( р,S ) - выходами. Микрооперация ( : ) - двоеточие - означает запоминание
(изменение значения) в памяти устройства. Переменная типа па-
мять сохраняет свое значение между двумя очередными присва-
иваниями. Микрооперации всегда входят в состав микрооператоров. МИКРООПЕРАТОР - набор взаимосвязанных микроопераций (или
одна микрооперация ), выполняемых одновременно и необходимых
для получения одного или более значений. Например: ( e,D:) = R1 + R2 + c
Фрагмент аппаратуры, реализующей этот микрооператор, мог бы
быть, например, таким: ----¬ c ¦MUX¦
-T--T¬ ¦ ¦ ----¬
¦¦T ¦+--->+0 ¦ -----¬ ¦MUX¦ D
L+--+- -->+1 ¦ ¦ SM¦ ¦ ¦ -T--T¬ -->+А +--->+cr ¦ ===>¦0 ¦===>¦¦RG¦¦==> +---+ ¦ S¦=====>¦1 ¦ L+--+- R1 ¦MUX¦ ¦ ¦ ===>¦А ¦
-T--T¬ ¦ ¦ ¦ ¦ L----
¦¦RG¦¦===>¦0 ¦===>¦I1 ¦ ----¬
L+--+- ==>¦1 ¦ ¦ ¦ ¦MUX¦ ==>¦А ¦ ¦ ¦ ¦ +------------>e +---+ ¦ p+----->+0 ¦ R2 ¦MUX¦===>¦I2 ¦ --->+1 ¦
-T--T¬ ¦ ¦ L----- --->+А ¦
¦¦RG¦¦===>¦0 ¦ L----
L+--+- ==>¦1 ¦ ==>¦А ¦ L----
Имена всех переменных, используемых в этом микрооператоре,
означают выполнение микроопераций коммутации ( транспортиров-
ки ). Значения переменных коммутируются на входы суммматора,
а результат суммирования - в места расположения переменных. МИКРОБЛОК - набор микрооператоров, выполняемых одновре-
менно ( в одном такте ) и синхронно. В одном микроблоке любо-
му из битов присваивается только одно значение. Синхронность означает, что во всех микрооператорах одно-
го микроблока используется только "старое" значение памяти.
Например: { (p,A):= A + B (C,r):= A + D }
- и в том, и в другом микрооператоре используется одно и то
же старое значение А. В то же время в микроблоке: { (C,x):= A + D (x,A)= C + B }
в первом микрооператоре используется новое значение А , а во
втором - старое значение С. Разумеется, эти два действия вы-
полняются одновременнo на двух разных сумматорах. При реализации микроблока { A:= B ; B:= 0 } обязательна
синхронная реализация В:=0 ( хотя обычно такое действие проще
реализовать асинхронно, но это приводит к ошибке ). Другой
правильный вариант: можно выполнить В:=0 асинхронно, но в
следющем такте. Всегда предполагается, что предикат вычисляется вместе
(в одном такте) с тем микроблоком, за которым непосредственно
следует его использование.Таким образом, здесь, также как и в
микроблоке, используется старое значение памяти, существовав-
шее перед входом в микроблок. Это связано с особенностями
взаимодействия ОА и УА. Например: - - - CT:=(+0)- - CT:=(+0)- - - ¦ ¦ -----V---¬ -----V---¬ m1¦ CT:=3 ¦ m1¦ CT:=3 ¦ L----T---- L----T----
------->¦ ------->¦
¦ -V- ¦ -V-
¦ / \ =0 ¦ / \ =0
¦ <CT==0>-> ¦ <CT==0>->
¦ \___/ ¦ \___/
¦ ¦+0 ¦ ¦+0
¦ -----V---¬ ¦ -----V---¬
¦m2¦........¦ ¦m2¦........¦
¦ ¦ ¦ ¦ ¦ ¦
¦ ¦CT:=CT-1¦ ¦ ¦CT:=CT-1¦
¦ L----T---- ¦ L----T----
L-------- ¦ -----V---¬ ¦m3¦........¦ ¦ L----T---- L--------
В первом случае цикл будет выполнен 4 раза; во втором - если
в микроблоке m3 нет операций, модифицирующих СТ, - 3 ра-
за. ( Обратите внимание на начальное значение СТ!) МИКРОКОМАНДА - набор сигналов, поступающий из УА в ОА и
интерпретируемый как управляющий,т.е. необходимый для выпол-
нения всех микроопераций одного микроблока. Сигналы, входящие
в микрокоманду, могут принимать участие в микрооперациях и в
качестве информационных. Микрокомандой также иногда называют слово управляющей
памяти (обычно ПЗУ), являющееся частью УА. Для различения
этих понятий слово управляющей памяти будем называть МИКРО-
ИНСТРУКЦИЕЙ. МИКРОПРОГРАММА СОДЕРЖАТЕЛЬНАЯ - алгоритм, представленный
в виде микроблоков и предикатных блоков в одной из принятых
форм, например, в виде блок-схемы или блок-текста. МИКРОПРОГРАММА КОДИРОВАННАЯ - аппаратная форма содержа-
тельной микропрограммы в виде кодов, заполняющих управляющую
память. КАНОНИЧЕСКАЯ СТРУКТУРА ОПЕРАЦИОННОГО АВТОМАТА В общем случае каноническая структура операционного ав-
томата имеет вид:
-----------------------------------------------------------
- -
- -----------¬ -T------T¬ -----------¬ --------¬ -
-->¦коммутация¦ ¦¦память¦¦ ¦коммутация¦ ¦функции¦--- ¦ ¦--->¦¦ ¦¦-->¦ ¦-->¦ ¦
-->¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦---> L-A--------- -/-++---A--+- L--A-------- L--A----- - --¬¦CC - - - - SYN->+&+- - - - - -+ ¦ - - - - yC¦L-- - - - L------------------------------------------------- сигналы управления
Столь четкого разграничения операций на зоны (память, комму-
тация, функции) может и не быть. Например, такие широко ис-
пользуемые функции как сдвиги либо хорошо совмещаются с
коммутацией, либо интегрируются с регистрами хранения.Также
часто интегрируются с хранением функции инкремента и
декремента (счетчики обычные и реверсивные). Особо выделим сигнал yС, управляющий доступом синхросиг-
налов в ОА. Такой вариант управления, называемый условной
синхронизацией, позволяет запретить любые изменения памяти ОА
в каком-либо такте. Причем, если рабочим является срез (зад-
ний фронт) сигнала синхронизации, то используется элемент И,
как и показано на рисунке.Если же рабочим является фронт (пе-
редний фронт) сигнала, то используется элемент ИЛИ. (Первый
перепад сигнала синхронизации в новом такте не должен быть
рабочим.) ОПТИМИЗАЦИЯ ОПЕРАЦИОННОГО АВТОМАТА При проектировании вычислительного устройства основными
являются ограничения на: 1)- время вычисления; 2)- объем аппаратуры, реализующей вычисления; 3)- тип применяемых базовых функций. ОПТИМИЗАЦИЯ АПППАРАТУРЫ ПРИ СОХРАНЕНИИ МИНИМАЛЬНОГО ВРЕМЕНИ Алгоритм функционального типа обладает максимальным по-
тенциальным параллелизмом (в рамках данной алгоритмической
идеи), и,следовательно, его реализация в виде КС обладает
максимальным быстродействием по сравнению с любыми другими
вычислителями. Невозможность реализации вычислителя в виде КС
может быть обусловлена следующими причинами: - слишком велик объем аппаратуры КС; - функциональное представление и его реализация являются
статическим отображением входных объектов на выходные: это
исключает возможность работы с объектами, которые "ведут се-
бя" более сложно во времени; невозможно также реализовать
принципиально рекуррентные алгоритмы (см.,например,алгоритм
Евклида для нахождения НОД). Тем не менее, если формально алгоритм функционального
типа может быть записан, то проектирование устройства надо
начинать с записи именно такого алгоритма. Минимизация аппаратуры "сложной" КС с переходом на про-
цедурный вариант реализации связан с "экономией" числа опера-
ционных элементов, т.е. со слиянием некоторых из них в один
функциональный модуль, выполняющий эти операции по очереди.
Такое решение потребует запоминания всех переменных (входных
и выходных),связанных с выполнением этих операций. Требуется
также управление памятью, связанной с этим функциональным мо-
дулем, а также - может быть - управление самим функциональным
модулем, если он объединил существенно различные функции. Переход к процедурной реализации и, следовательно, к
дискретизации времени неизбежно увеличит время вычисления од-
ного результата - даже при реализации структуры подобной КС.
При этом, как ни странно, может уменьшиться время следующих
друг за другом вычислений именно за счет дискретизации време-
ни и применения так называемых "конвейерных" вычислений - но
об этом речь пойдет в другом курсе. Рассмотрим возможность сокращения аппаратуры без увели-
чения времени решения, достигнутого в алгоритме функциональ-
ного типа. Сопоставим схеме устройства, реализующего алгоритм
функционального типа, простую модель в виде направленного
графа. Вершины графа будут соответствовать операциям, а дуги
- переменным алгоритма. Назовем такой граф сигнальным (графом
потоков данных). Заметим, что сигнальный граф всегда будет
ациклическим. Минимальность времени вычислений сохранится, если совме-
щать в один функциональный модуль операции, которые располо-
жены на одном и том же пути в сигнальном графе, либо на аль-
тернативных путях решения. МИНИМИЗАЦИЯ АППАРАТУРЫ Может оказаться, что на одном пути в сигнальном графе
расположены операции, плохо или вовсе не совмещаемые друг с
другом (т.е. совмещение не дает экономии в аппаратуре функци-
онального модуля). Возможно также, что проведенная минимиза-
ция, сохраняющая минимальное время, не позволяет выполнить
ограничение на объем аппаратуры. В таком случае необходима
более глубокая минимизация,охватывающая параллельные ветви
сигнального графа. Минимизация должна быть взаимосвязанной по
всем компонентам ОА: по памяти, функциональным модулям и ком-
мутации. В настоящее время процедуры минимизации не формализованы
и сводятся к перебору "правдоподобных" вариантов. Можно предложить следующую последовательность действий: 1)- все "похожие" функции (операции) реализовать на одном
функциональном модуле, например, все суммирования выполнять
на одном сумматоре; 2)-скорректировать алгоритм так, чтобы в одном микроблоке не
выполнялось более одной операции на одном и том же функци-
ональном модуле; 3)- минимизировать память автомата, т.е. число запоминаемых
промежуточных переменных; Выполнение этих этапов может привести к усложнению ком-
мутации, а значит, и к увеличению этой компоненты в аппарату-
ре ОА. Если ограничение по объему аппаратуры все еще наруше-
но, то повторить этапы 1 - 3 с другим вариантом объединения
функциональных модулей и памяти. При реализации ОА - во избежание ошибок -необходимо бук-
вально следовать описанию алгоритма, но в то же время, при
проектировании самого алгоритма надо представлять себе реали-
зацию микроблоков. Реализация одних и тех же вычислений может
быть существенно различной по объему аппаратуры. Например, вычисления в цикле потребуют реализации: -T- ¦ --------V-------¬ A -----¬ ¦ J:=0 ¦ -T--T-¬ ¦ MUX¦ -----¬ L-------T-------- ¦¦RG¦0+--->+0 ¦ ¦ f ¦
-------¬ ¦ ¦¦ ¦.¦ . ¦. ¦A[J] ¦ ¦
¦ -----V--V-------¬ ¦¦ ¦.¦ . ¦. +---->+ ¦
¦ ¦ ..... ¦ ¦¦ ¦.¦ . ¦. ¦ ¦ ¦ B
¦ ¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦==>
¦ ¦ B= f(...,A[J])¦ ¦¦ ¦K+--->+K ¦ ¦ ¦
¦ ¦ ¦ ¦¦ ¦.¦ ¦. ¦ ==>¦ ¦
¦ ¦ J:=J+1 ¦ ¦¦ ¦.¦ ¦. ¦ ¦ ¦
¦ L-------T-------- ¦¦ ¦.¦ ¦. ¦ ¦ ¦
¦ -V- L+--+-- +- ¦ L-----
¦ <K / \ =K J=========>¦А ¦
L------<J==K>-----> L----- \__/
(реализация счетчика J не показанa). Запишем этот фрагмент алгоритма иначе так, чтобы нужный
бит извлекался за счет сдвига в регистре D. Тогда получим: ---T-- A D ¦ -T--T¬ -T--T-¬ A[J] ------¬ --------V-------¬ ¦¦RG¦¦ ¦¦RG¦0+----->+ f ¦ ¦ J:=0 ¦ ¦¦ ¦¦ ¦¦ ¦.¦ ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦->¦.¦ ¦ ¦ B ¦ D:=A ¦ ¦¦ ¦¦======>¦¦ ¦.¦ ¦ ¦==> L-------T-------- ¦¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦
-------¬ ¦ ¦¦ ¦¦ ¦¦ ¦K+ ¦ ¦
¦ -----V--V-------¬ ¦¦ ¦¦ x -->+Dn ¦.¦ ¦ ¦
¦ ¦ ..... ¦ ¦¦ ¦¦ ¦¦ ¦.¦ ==>¦ ¦
¦ ¦ ¦ ¦¦ ¦¦ S W¦¦ ¦.¦ ¦ ¦
¦ ¦ B= f(...,D[0])¦ L+--+- -v-v++--+-- L------
¦ ¦ ¦
¦ ¦ (D,x):=(x,D) ¦
¦ ¦ ¦
¦ ¦ J:=J+1 ¦
¦ L-------T--------
¦ -V-
¦ <K / \ =K
L------<J==K>-----> \__/
Промежуточный регистр A введен для общности, если потребуется
сохранить слово А (чаще всего он и не нужен). Другой пример: фрагмент алгоритма, реализующий регуляр-
ную запись отдельных бит слова и его реализация имеют вид: ---T-- -T-T¬B[0] ¦ a ------------T----->+¦T¦+----> --------V-------¬ ¦ W¦¦ ¦¦ ¦ J:=0 ¦ ----¬ ¦ -A++-+- L-------T-------- ¦DC ¦ ---+------| |
-------¬ ¦ ¦ 0+-- ¦ | |
¦ -----V--V-------¬ ¦ .¦. ¦ -T-T¬B[K]
¦ ¦ ..... ¦ ¦ .¦. L----->+¦T¦+---->
¦ ¦ ¦ ¦ .¦. W¦¦ ¦¦
¦ ¦ a=f(...) ¦ J ==>¦ ¦ -A++-+-
¦ ¦ ¦ ¦ K+-----------
¦ ¦ B[J]:=a ¦ ¦ .¦
¦ ¦ ¦ ¦ .¦
¦ ¦ J:=J+1 ¦ ¦ .¦
¦ L-------T-------- L----
¦ -V-
¦ <K / \ =K
L------<J==K>-----> \__/
Слово В нельзя реализовать в виде регистра, а только в виде
отдельных триггеров. Можно формировать слово с использованием операции сдви-
га при обязательном условии D[K..0], тогда алгоритм и его ре-
ализация имеют вид: ---T-- ¦ D B --------V-------¬ ---T--T¬ -T--T¬ ¦ J:=0 ¦ ¦ ¦RG¦¦ ¦¦RG¦¦ L-------T-------- ¦ ¦->¦¦ ¦¦ ¦¦
-------¬ ¦ a ¦ ¦ ¦¦=====>¦¦ ¦¦
¦ -----V--V-------¬ -->+Dk¦ ¦¦ ¦¦ ¦¦
¦ ¦ ..... ¦ S¦ ¦ ¦¦ W¦¦ ¦¦
¦ ¦ ¦ -v+--+--+- -v++--+-
¦ ¦ a=f(...) ¦
¦ ¦ ¦
¦ ¦ (D,x):=(a,D) ¦
¦ ¦ ¦
¦ ¦ J:=J+1 ¦
¦ L-------T--------
¦ -V-
¦ <K / \ =K -----¬
L------<J==K>-->+B:=D+> \__/ L-----
В этом случае, так же, как и в предыдущем, чаще всего не ну-
жен промежуточный регистр (В). УНИВЕРСАЛЬНЫЙ ОА Использование при проектировании универсальных ОА с за-
ранее фиксированной и минимизированной структурой оправдано
тем, что такие универсальные ОА изготавливаются промышлен-
ностью в виде БИС большим тиражом и поэтому они сравнительно
дешевы. Такие универсальные ОА входят в микропроцессорные на-
боры 582, 583, 584, 588, 589, 1800, 1804 и т.д., которые на-
зываются микропрограммируемыми, секционными, разрядно-модуль-
ными. В основе перечисленных универсальных ОА лежит следующая
структура: г==================T===========================¬ ¦ ¦ ¦ ¦ ¦ SYN¬ ACC ¦ ¦ --T-----T¬ ¦ -/TT--T¬ ------¬ ¦ ¦ ¦ ¦ RGF ¦¦ ¦ C¦¦RG¦¦ ¦ ALU ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦¦ L====>¦¦ ¦¦=====>¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ ¦===¦=>DO L===>¦D¦ ¦¦ L+--+- ¦ ¦ ¦ ¦ ¦¦ T ¦ ¦ ¦ ¦ ¦¦ -T--T¬ ¦ ¦=====>P ¦ ¦ ¦¦ ¦¦RG¦¦ ¦ ¦ ¦ ¦ ¦¦=========>¦¦ ¦¦=====>¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ ¦ C W¦А¦ ¦¦ C¦¦ ¦¦ г=>¦ ¦ -o-A+A+-----+- -T++--+- ¦ L--A--- SYN- ¦ ¦ SYN- ¦ ¦ ¦ ¦ ¦ ¦ yW YA DI=====- YF ALU - арифметико-логическое устройство - комбинационная
схема с небольшим, но универсальным набором арифметических и
логических операций. RGF - регистровый файл - адресуемая память RAM со стати-
ческой синхронизацией при записи. RG'T' - регистр-фиксатор со статической синхронизацией. RG'АCC' - регистр-аккумулятор с динамической синхрониза-
цией. DI,DO - входная и выходная информационные шины. Р - предикатные сигналы (флажки). YF - сигналы управления выбором функции. YA - адрес чтения и/или записи RGF. yW - разрешение записи в RGF. Память сравнительно большого объема, какой является RGF,
дешевле реализовать со статической синхронизацией. Для то-
го,чтобы такая память могла работать в замкнутом информацион-
ном кольце и при этом не возникали бы гонки, добавляется еше
один промежуточный регистр RG'T' со статической синхрониза-
цией. Если передний фронт является рабочим для регистров уп-
равляющего автомата и RG'ACC', то на первой фазе синхрониза-
ции при SYN=1 информация читается из RGF; при этом RG'T'
прозрачен. На следующей фазе синхронизации при SYN=0 информа-
ция фиксируется в RG'T', т.е. он закрыт для записи, а запись
(если она разрешена) производится в RGF. Фиксируется информа-
ция в RGF и RG'ACC' с началом следующего такта, т.е. на пе-
реднем фронте сигнала. ВЗАИМОДЕЙСТВИЕ ОА и УА Для исключения гонок при взаимодействии ОА и УА будем
проектировать УА как автомат Мура. Схема их взаимодействия
может быть представлена в виде: г==========================¬ ¦-----¬ -T--T¬ -----¬ ¦ L¦ CS ¦ ¦¦RG¦¦ ¦CS ¦<- ¦ ¦<=T=¦¦ ¦¦<==¦ ¦ ----+ b ¦ ¦ ¦¦ ¦¦ ¦ c +<----¬ ¦ L----- ¦ L+--++A- L----- ¦ ¦ -----¬ ¦ L-----------¬ ¦ ¦ ¦CS ¦<=- ¦ ¦ ¦---+ a +<-------------------¬ ¦ ¦ ОА ¦¦ L----- ¦ ¦ ¦ ----¦¦----------------------------¦-¦-¦-- УА ¦¦РА-----¬ -T--T¬ ------¬¦ ¦ ¦¬ ¦L->+ CS¦ ¦¦RG¦¦ ¦ CS +- ¦ ¦¦ L-->+ ¦====>¦¦ ¦¦=>¦ +--- ¦¦Y РВ ¦ ¦ ¦¦ ¦¦ ¦ +-----¦ г>¦ p ¦ ¦¦ ¦¦ ¦ y ¦=¬ - ¦ L----- L+--+- L------ ¦ L============================-
Отметим, что РА(t)=f(Y(t)) зависит без сдвига от сигналов управления, PB(t+1)=F(Y(t)) зависит со сдвигом от сигналов управления,
где РА и РВ - предикатные перемнные. Продолжительность такта работы схемы определяется наибо-
лее длинными цепями между регистрами. Для данной схемы, кото-
рую будем называть последовательной схемой взаимодействия,
зададимся (так чаще всего бывает), что такой критической
цепью является цепь (CSy,CSa,CSp,RG). Поэтому длительность
такта определяется: Т > ty + ta + tp + trg,
где tj- время установления соответствующего компонента цепи. Чтобы сократить длину этой цепи, применяют другой вари-
ант взаимодействия автоматов - конвейерный: г==========================¬ ¦-----¬ -T--T¬ -----¬ ¦ L¦ CS ¦ ¦¦RG¦¦ ¦CS ¦<- ¦ ¦<=T=¦¦ ¦¦<==¦ ¦ ------------+ b ¦ ¦ ¦¦ ¦¦ ¦ c +<----¬ ¦ FF L----- ¦ L+--++A- L----- ¦ ¦ -T--T¬ -----¬ ¦ L-----------¬ ¦ ¦--+¦RG¦¦<==¦ CS ¦<=- ¦ ¦ ¦¦ ¦¦ ¦¦ ¦ a +<-------------------¬ ¦ ¦ ¦¦ L+--++A- L----- ¦ ¦ ¦ ОА ¦¦ L--------------------------¬ ¦ ¦ ¦ ---¦¦----------------------------------¦-¦-¦-¦-- УА ¦¦ MK ¦ ¦ ¦ ¦ ¦¦ PA -----T----¬ -T--T¬¦ ¦ ¦ ¦¬ ¦L---->+ CS¦ CS ¦ ¦¦RG¦+- ¦ ¦ ¦¦ ¦ РВ ¦ ¦ ¦ ¦¦ ¦+--- ¦ ¦¦Y L----->+ ¦ ¦===========>¦¦ ¦+----- ¦¦ ¦ ¦ ¦ ¦¦ ¦+-------¦ г>¦ p ¦ y ¦ ¦¦ ¦¦=¬ - ¦ L----+----- L+--+- ¦ L===============================- При этом варианте взаимодействия такой длинной цепи, как
в предыдущем случае, не возникает.Эта цепь разделена регис-
трами RG'FF' (регистр флажков) и RG'MK' (регистр микрокоман-
ды) на две цепи. Продолжительность такта становится меньше и
ее можно определить следующим образом: T > max( ta,(tp + ty) )+ trg , При конвейерном варианте взаимодействия PA(t+1)=f(Y(t)), т.е. и эти значения стали зависить со
сдвигом от сигналов управления. Тогда фрагмент микропрограммы mS{...;pA=f(...)} << GO(pA;mi,mj)>>,
выполняемый в последовательной схеме за один такт, в кон-
вейерном варианте за один такт выполнен быть не может и дол-
жен быть модифицирован следующим образом: mS{...,pA=f(...)} mS'{нет операции} << GO(pA;mi,mj)>>
Таким образом, время выполнения этого фрагмента не только не
уменьшилось, но даже возросло несмотря на уменьшение продол-
жительности каждого из тактов. Зато во всех остальных случа-
ях (при безусловных переходах, при переходах по значению РВ)
время выполнения микропрограммы уменьшается. НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ СИНХРОННОЙ СХЕМЫ Пусть устройство, кроме сигнала синхронизации SYN, имеет
еще один сигнал Н, обозначающий начало и конец синхронной ра-
боты устройства. При Н=0 - нерабочее состояние - можно выпол-
нять начальную установку значений памяти устройства. Измене-
ние значения Н с 0 на 1 происходит в случайный момент времени
(асинхронно), но при этом начальный такт работы устройства
должен быть полным. "Затягивание" асинхронного сигнала Н в
синхронный режим происходит с помощью простейшего синхронного
автомата с диаграммой: -----------¬ ---------¬ V 0H/CONST¦ V 1H/SYN¦ -------------- ------------ >¦ 0 ¦-------------->¦ 1 ¦------¬ ----- 1H/CONST ----- 0H/X ¦ л ¦ L-----------------------------
У этого автомата простейшей является функция переходов, так
как диаграмма автомата совпадает с диаграммой переходов
D-триггера. Схема автомата вместе с цепями условной синхронизации
выглядит следующим образом (для синхронизации по фронтам): а)-по переднему фронту, б)- по заднему фронту: ---¬ ---¬
SYN --T----------+ 1+-- CC SYN --T----------+ &+-- CC ¦ --T-¬ --+ ¦ ¦ --T-¬ --+ ¦ L-/C¦T¦ ¦ L--- L-\C¦T¦ ¦ L--- ¦ ¦ + ¦ ¦ ¦ +--- --+D¦ ¦ ¦ --+D¦ ¦ ¦ +-+ o--- ¦ +-+ o- +-oR¦ ¦ +-oR¦ ¦ H ¦ L-+--уст. нач. зн. H ¦ L-+--уст. нач. зн. --+------------------- --+-------------------
Такая разница в цепях условной синхронизации, как уже объяс-
нялось выше, определяется тем, что первый перепад сигнала СС
не должен быть рабочим.
_ ЛИТЕРАТУРА 0. Любые литературные источники, рекомендованные по дис-
циплине "Основы дискретной математики". 1. Токхейм Р. Основы цифровой электроники.-М.: Мир,'88 2. Каган Б.М. Электронные вычислительные машины и систе-
мы.-М.: Энергоатомиздат, 1991 - 340 с. 3. Цифровая и вычислительная техника /под ред. Э.В.Евре-
инова.-М.: РиС,1991.-464с. 4. Майоров С.А., Новиков Г.И. Структура электронных вы-
числительных машин.-Л.: Машиностроение, 1979 - 384 с. 5. Самофалов К.Г., Романкевич А.М., Валуйский А.М. Прик-
ладная теория цифровых автоматов.-К.: Вища шк. 1987 - 470 с. 6. Савельев А.Я. Прикладная теория цифровых автоматов.
-М.: Высшая школа, '87 7. Рабинович З.Л. Основы теории элементарных структур
ЭВМ. -М.: РиС, '82 - 280 с. 8. Рабинович З.Л., Раманаускас В.А. Типовые операции в
вычислительных машинах. Киев: Техника, '80 - 264 с. 9. Карцев М.А. Арифметика цифровых машин. -М.: Наука,'69
- 575 с. 10. Карцев М.А., Брик В.А. Вычислительные системы и син-
хронная арифметика. -М.: РиС, '81 - 360 с. 11. Байков В.Д., Смолов В.Б. Специализированные процес-
соры: итерационные алгоритмы и структуры. М.:РиС,1985 - 288с. 12. Баранов С.И. и др. Цифровые устройства на программи-
руемых БИС с матричной структурой.-М.:РиС,1986-272 с. 13. Баранов С.И. Синтез микропрограммных автоматов. -Л.:
Энергия, 1979 - 232 с. 14. Баранов С.И., Скляров В.А. Цифровые устройства на
программмируемых БИС с матричной структурой. -М.: РиС '86 -
272 с. 15. Клингман Э. Проектирование специализированных микро-
процесссорных систем.-М.: Мир, 1985.- 363 с. 16. Проектирование цифровых систем на комплектах микро-
программируемых БИС /Под ред. В.Г.Колесникова.-М.: Радио и
связь, 1984.- 240 с. 17. Мик Дж., Брик Дж. Проектирование микропроцессорных
устройств с разрядно-модульной организацией. Т.1.-М.: Мир,
1984.- 253 с. 18. Потемкин И.С. Функциональные узлы цифровой автомати-
ки. -М.: Энергоатомизд.,'88 - 320 с. 19. Угрюмов Е.П. Проектирование элементов и узлов ЭВМ.
-М.:ВШ,1987.-318 с. 20. Букреев И.Н.,Горячев В.Н.,Мансуров Б.М. Микроэлек-
тронные схемы цифровых устройств.-М.:РиС,1990-416с. 21. Пухальский Г.И.,Новосельцева Т.Я. Проектирование
дискретных устройств на интегральных микросхемах:Справочник.
-М.:РиС,1990-304с. 22. Шило В.Л. Популярные цифровые микросхемы:Справочник.
-М:РиС,1987-352с. 23. Применение интегральных микросхем в электронной вы-
числительной технике:Справочник/под ред. Б.Н.Файзулаева,
Б.В.Тарабрина. -М:РиС,1986-384с. 24. Закревский А.Д. Логический синтез каскадных схем.
-М.: Наука, 1981 - 414 с. 25. Фридман А.,Менон П. Теория и проектирование переклю-
чательных схем. -М:Мир,1978-580с. 26. Гилл А. Введение в теорию конечных автоматов. -М.:
Наука '66 - 272 c. 27. Гилл А. Линейные последовательностные машины. -М.:
Наука '74 - 288 с. 28. Кудрявцев В.Б., Алешин С.В., Подколзин А.С. Введение
в теорию автоматов.-М.: Наука '85 - 320 с. 29. Марков А.Я. Введение в теорию кодирования.-М.: Наука
'82 - 192 с. 30. Ангер С. Асинхронные последовательностные схемы.
-М:Наука,1977-400с. 31. Апериодические автоматы /под ред. Варшавского В.И.
-М:Наука,1976,-423с. 32. Автоматное управление асинхронными процессами в ЭВМ и
дискретных системах /под ред. Варшавского В.И. -М:На-
ука,1986,-400с.
_
Антик М.И. 11_03_91 МИРЭА УПРАВЛЯЮЩИЕ АВТОМАТЫ. ОСНОВНЫЕ СПОСОБЫ АДРЕСАЦИИ МИКРОКОМАНД Начнем с рассмотрения простейшего варианта управления, в
котором не участвуют предикатные функции (переменные), т.е. в
микропрограмме переходы только безусловные. В таком случае УА
является автономным синхронным автоматом. В более общем случае функция переходов УА зависит от
предикатных переменных, но УА должен быть автоматом Мура. Условимся о некоторых ограничениях, позволяющих упрос-
тить схему на начальных этапах проектирования (от которых
легко впоследствии и отказаться): - на каждом шаге процесса вычислений ветвление может осу-
ществляться только по одной двузначной предикатной перемен-
ной (т.е. разветвление возможно лишь на два направления); - начальные значения всех регистров УА являются нулевыми.
Впредь на схемах УА не будем показывать цепей установки на-
чальных значений. Для реализации в самом общем случае микропрограмм произ-
вольной структуры будем строить УА так, чтобы основным мате-
риальным носителем управляющей (автоматной) компоненты мик-
ропрограммы являлась бы управляющая память (реализованная,
например, в виде ПЗУ). В этом случае структура слова управля-
ющей памяти - МИКРОИНСТРУКЦИЯ - состоит из двух составных
частей: микрокоманды и адресной части. Адресная часть микроинструкции содержит информацию, поз-
воляющую в следующем такте работы выбрать ( указать ) новый
адрес управляющей памяти. Реализация именно этого момента яв-
ляется основным предметом дальнейшего рассмотрения и опреде-
ляет, в основном, структуру, объем аппаратуры и быстродей-
ствие УА. При этом подлежит рассмотрению реализация следующих
типов переходов как между шагами алгоритма, так, соот-
ветственно, и между микроинструкциями: - безусловный переход, - условный переход, - функциональный переход, - переход к микроподпрограмме с возвратом. Будем изучать работу управляющих автоматов различной
структуры, демонстрирующие основные применяемые варианты ад-
ресации микроинструкций, на следующем алгоритме: --- ----¬¦ ¦ -VV-¬
n1¦ ¦m1 ¦ n1 { m1 } ¦ L-T-- ¦ --V-¬ n2 { m2 }
n2¦ ¦m2 ¦ ¦ L-T-- g1 <<GO(a;g1,n3)>> ¦ ¦<--¬ ¦ -V¬ 0¦ n3 { m3 }
g1¦ < a >-- ¦ LT- n4 { m4 } ¦ 1¦<----¬ ¦ ¦----¬¦ g2 <<GO((a,b);n5,n3,n1,n1)>> ¦ --VV¬ ¦¦
n3¦ ¦m3 ¦ ¦¦ n5 { m5 } ¦ L-T-- ¦¦ ¦ --V-¬ ¦¦ g3 <<GO(a;n5,n3)>>
n4¦ ¦m4 ¦ ¦¦ ¦ L-T-- ¦¦ ¦10 -V¬ 01¦¦
g2L--< ab>---¦ 11 LT- ¦ 00¦----¬¦ --VV¬ ¦¦
n5 ¦m5 ¦ ¦¦ L-T-- ¦¦ -V¬ 0 ¦¦
g3 < a >---¦ LT- 1 ¦ L------ Укажем на некоторые особенности этого алгоритма: Опера-
тор перехода (предикатная вершина), помеченный меткой g1,
называют ждущим. Оператор, помеченный меткой g2, использует
для перехода 4-значный предикат, что не удовлeтворяет выше-
указанному ограничению. Поэтому потребуются эквивалентные
преобразования алгоритма для того, чтобы удовлетворить этому
ограничению. Алогоритмы эквмвалентны, если они преобразуют информа-
цию одинаковым образом. Наиболее распространенным приемом эк-
вивалентного преобразования алгоритмов и микропрограмм явля-
ется включение микроблоков и, соответственно, тактов, в кото-
рых не выполняется модификация памяти ОА - "нет операции".
Но и это преобразование может быть не эквивалентным - см.при-
мер при определении понятия "микроблок"; кроме того, следует
учесть различное поведение во времени предикатных переменных
типа "РА" и "РВ" - см. раздел "Взаимодействие ОА и УА". ( Запретить модификацию памяти можно, вводя условную
синхронизацию ОА, но для этого должна быть изменена микроко-
манда, предшествующая добавляемому такту.) СХЕМА С АДРЕСНЫМ ПЗУ Начнем рассмотрение с управляющего автомата, структура
которого совпадает с канонической структурой автомата Мура. ----¬ ----¬ -T--T¬ ----¬ ¦MUX¦ q ¦ROM¦ ¦¦RG¦¦ ¦ROM¦ a->+0 +-->+ ¦ S' ¦¦ ¦¦ S ¦ ¦ Y b->+1 ¦ ¦ ¦===>¦¦ ¦¦=T>¦ ¦==> ¦ ¦ г>¦ ¦ ¦¦ ¦¦ ¦ ¦ +-¬ ¦А ¦ ¦ ¦ 2 ¦ C¦¦ ¦¦ ¦ ¦ 1 ¦ ¦ LA--- ¦ L---- -/++--+- ¦ L---- ¦ ¦ H L=================- ¦ L------------------------------- Функцию перехода и функцию выхода реализуем в виде ПЗУ.
В литературе, рассматривающей микропрограммные устройства уп-
равления, УА с такой структурой называют микропрограммным ав-
томатом Уилкса. В ПЗУ (ROM_1), реализующем функцию выхода, следует раз-
местить микрокоманды; при этом их распределение по определен-
ным адресам совершенно произвольно, за исключением начальной
микрокоманды, которая в силу вышеуказанного ограничения дол-
жна располагаться по нулевому адресу. ПЗУ (ROM_2), реализующее функцию переходов автомата,
можно трактовать как адресное ПЗУ. Ячеек в адресном ПЗУ в два
раза больше, чем в ПЗУ микрокоманд. Каждой ячейке ПЗУ микро-
команд соответствуют две ячейки в адресном ПЗУ, в которых за-
писываются два альтернативных адреса.
n1 { m1 } S¦ Y H¦ S q¦S'¦ -+----+ ---+--+
n2 { m2 } 0¦m1 x¦ 0 0¦ 1¦ ¦ ¦ 0 1¦ 1¦ <<GO(a;d1,n3)>> ¦ ¦ ¦ ¦ 1¦m2 0¦ 1 0¦ 2¦
d1 { m0 } ¦ ¦ 1 1¦ 3¦ ¦ ¦ ¦ ¦ <<GO(a;d1,n3)>> 2¦m0 0¦ 2 0¦ 2¦ ¦ ¦ 2 1¦ 3¦
n3 { m3 } ¦ ¦ ¦ ¦ 3¦m3 x¦ 3 0¦ 4¦
n4 { m4 } ¦ ¦ 3 1¦ 4¦ ¦ ¦ ¦ ¦ <<GO(a;d2,n1)>> 4¦m4 0¦ 4 0¦ 5¦ ¦ ¦ 4 1¦ 0¦
d2 { m0 } ¦ ¦ ¦ ¦ 5¦m0 1¦ 5 0¦ 6¦ <<GO(b;n5,n3)>> ¦ ¦ 5 1¦ 4¦ ¦ ¦ ¦ ¦
n5 { m5 } 6¦m6 0¦ 6 0¦ 6¦ ¦ ¦ 6 1¦ 4¦ <<GO(a;n5,n3)>> -+----- ---+--- Конвейерный вариант схемы с таким же способом адресации
должен программироваться с учетом замечаний, сделанных в раз-
деле "Взаимодействие ОА и УА". Кроме того, ограничения на
расположение микрокоманд в ROM_1 выглядят несколько иначе: по
0-адресу в ROM_1 можно расположить микрокоманду, после кото-
рой безусловно выполняется начальная микрокоманда. ----¬ q ----¬ ----¬ -T--T¬ ¦MUX+---------->+ROM¦ ¦ROM¦Y ¦¦RG¦¦ Y' a->+0 ¦ C ¦ ¦ S ¦ ¦==>¦¦ ¦¦==> b->+1 ¦ -/TT--T¬ ¦ ¦=T>¦ ¦H ¦¦ ¦¦ ¦ ¦ г>¦¦RG¦¦=>¦ ¦ ¦ ¦ +-->+¦ ¦+¬ ¦А ¦ ¦ ¦¦ ¦¦S'¦ 2 ¦ ¦ ¦ 1 ¦ C¦¦ ¦¦¦ LA--- ¦ L+--+- L---- ¦ L---- -/++--+-¦ ¦H' L===============- ¦ L------------------------------------- СХЕМА С ЯВНЫМ УКАЗАНИЕМ АЛЬТЕРНАТИВНЫХ АДРЕСОВ г===========================¬ ¦г=========================¬¦ ¦¦ ----¬ -T--T¬ ----¬A0¦¦ ¦¦ ¦MUX¦ ¦¦RG¦¦ ¦ROM¦==-¦ ¦L>¦0 ¦ ¦¦ ¦¦A ¦ ¦A1 ¦ ----¬L=>¦1 ¦===>¦¦ ¦¦=>¦ ¦===- ¦MUX¦ ¦ ¦ ¦¦ ¦¦ ¦ ¦==>Y a->+0 ¦ ¦А ¦ C¦¦ ¦¦ ¦ +¬ b->+1 ¦ LA--- -/++--+- L----¦H ¦А +----- ¦ LA--- ¦ L----------------------------- Конвейерный вариант г============================¬ ¦г==========================¬¦ ¦¦ ----¬ -----¬A0 -T--T¬A0'¦¦ ¦¦ ¦MUX¦ ¦ROM ¦==>¦¦RG¦¦===-¦ ¦¦ ¦ ¦ ¦ ¦A1 ¦¦ ¦¦A1' ¦ ¦L>¦0 ¦A ¦ ¦==>¦¦ ¦¦====- ----¬L=>¦1 ¦=>¦ ¦ Y ¦¦ ¦¦ Y' ¦MUX¦ ¦ ¦ ¦ ¦==>¦¦ ¦¦==> ¦ ¦ ¦ ¦ ¦ ¦ H ¦¦ ¦¦ a->+0 ¦ ¦А ¦ ¦ +-->+¦ ¦+¬H' b->+1 ¦ LA--- L----- -/++--+-¦ ¦А +----- C ¦ LA--- ¦ L----------------------------- Эта схема отличается от предыдущей тем, что, по сущес-
тву, тот же способ адресации выполнен с использованием только
одного ПЗУ. В этом варианте альтернативные адреса записывают-
ся в той же микроинструкции, что и микрокоманда.
n1 { m1 } A¦ Y H A0 A1¦ -+----------+
n2 { m2 } 0¦m1 x 1 1¦ ¦ ¦ <<GO(a;d1,n3)>> 1¦m2 0 2 3¦ ¦ ¦
d1 { m0 } 2¦m0 0 2 3¦ ¦ ¦ <<GO(a;d1,n3)>> 3¦m3 x 4 4¦ ¦ ¦
n3 { m3 } 4¦m4 0 5 0¦ ¦ ¦
n4 { m4 } 5¦m0 1 6 4¦ ¦ ¦ <<GO(a;d2,n1)>> 6¦m5 0 6 4¦ -+-----------
d2 { m0 } <<GO(b;n5,n3)>>
n5 { m5 } <<GO(a;n5,n3)>> СХЕМА С ЧАСТИЧНОЙ ЗАПИСЬЮ АДРЕСА Последовательный вариант Конвейерный вариант -------------------------¬ --------------------------¬ ¦ ----¬ -T--T¬ ----¬¦e ¦ ----¬ ----¬ e -T--T¬¦ ¦ ¦MUX¦ q ¦¦RG¦¦q'¦ROM+- ¦ ¦MUX¦ q'¦ROM+---->+¦RG¦+- L>+0 +---->+¦ ¦+->+ ¦ Y L>+0 +-->+ ¦ Y ¦¦ ¦¦Y'
a->+1 ¦ S ¦¦ ¦¦S'¦ ¦==> a->+1 ¦ S'¦ ¦====>¦¦ ¦¦=>
b->+2 ¦ г==>¦¦ ¦¦=>¦ ¦==¬ b->+2 ¦ г>¦ ¦ H ¦¦ ¦¦ ¦А ¦ ¦ C¦¦ ¦¦ ¦ ¦¬ ¦ ¦ ¦ ¦ ¦ +---->+¦ ¦¦=¬ LA--- ¦ -/++--+- L----¦ ¦ ¦ ¦ ¦ ¦ ¦ S ¦¦ ¦¦ ¦ ¦ H L================- ¦ ¦А ¦ ¦ ¦ ¦====>¦¦ ¦¦¬¦ L=======================- LA--- ¦ L---- -/++--+-¦¦ ¦ H' ¦ C ¦¦ ¦ L=================-¦ L=======================- При этом способе адресации альтернативные адреса отлича-
ются только одним разрядом ( в данном варианте - младшим ),
формируемым входным сигналом. Остальные разряды адреса указы-
ваются вместе с микрокомандой в одной и той же микроинструк-
ции. При безусловном переходе в данном варианте схемы младший
разряд также указывается в микроинструкции. При адресации
одного и того же микроблока различными операторами условного
перехода может возникнуть КОНФЛИКТ АДРЕСАЦИИ. В этом случае
одну и ту же микроинструкцию приходится располагать в различ-
ных ячейках управляющей памяти. Если различные операторы ус-
ловного перехода одними и теми же предикатными значениями
указывают на одни и те же микроблоки, то нет и конфликта ад-
ресации. Адрес
n1 { m1 } --(0,0),(2,1) S'q'¦ Y H S e¦ ----+--------+
n2 { m2 } --(4,0) 0 0 ¦m1 0 4 0¦ ¦ ¦ <<GO(a;d1,n3)>>-- 1,x 0 1 ¦m4 1 2 x¦ ¦ ¦
d1 { m0 } --(1,0) 1 0 ¦m0 1 1 x¦ ¦ ¦ <<GO(a;d1,n3)>>-- 1,x 1 1 ¦m3 0 0 1¦ ¦ ¦
n3 { m3 } --(1,1),(3,1) 2 0 ¦m0 2 3 x¦ ¦ ¦
n4 { m4 } --(0,1) 2 1 ¦m1 0 4 0¦ ¦ ¦ <<GO(a;d2,n1)>>-- 2,x 3 0 ¦m5 1 3 x¦ ¦ ¦
d2 { m0 } --(2,0) 3 1 ¦m3 0 0 1¦ ¦ ¦ <<GO(b;n5,n3)>>-- 3,x 4 0 ¦m2 1 1 x¦ ¦ ¦
n5 { m5 } --(3,0) ----+--------- <<GO(a;n5,n3)>>-- 3,x Распределять микроинструкции по ячейкам памяти удобно
в следующем порядке: - связать с различными операторами условного перехода, кон-
фликтующими между собой по адресации, различающиеся между со-
бой старшие разряды адреса; - распределить микроблоки по ячейкам памяти с учетом назнач-
енных старших разрядов адреса и входных значений; - оставшимся нераспределенным микроблокам назначить произ-
вольные свободные адреса. СХЕМА С СОКРАЩЕННЫМ ТАКТОМ Использование этой схемы позволяет при сохранении пре-
имуществ последовательного варианта взаимодействия сократить
наиболее длинные цепи, общие для ОА и УА, до длины цепей кон-
вейерного варианта.
-----------------------------------¬ --T----------T
¦ г==========================¬¦ ROM_0 A'¦ Y H A e¦
¦ ¦ -----¬ ¦¦ --+----------+
¦ ¦ ¦ROM ¦=+A ¦¦ 0 ¦m1 0 4 0¦
¦ ¦ ¦ +-+e ¦¦ 1 ¦m0 1 1 x¦
¦ ¦>¦ ¦=+Y ----¬ -T--T¬¦¦ 2 ¦m0 2 3 x¦
¦ ¦ ¦ ¦=+H ¦MUX¦ ¦¦RG¦¦-¦ 3 ¦m5 1 3 x¦
¦ ¦ ¦ 0 ¦ L==>¦0 ¦ ¦¦ ¦+--e' 4 ¦m2 1 1 x¦
¦ A'¦ +----+ ¦ ¦ ¦¦ ¦¦ --+-----------
¦ ¦ ¦ROM ¦=+A ¦ ¦==>¦¦ ¦¦==>Y' --T----------T
¦ ----¬¦ ¦ ¦ ¦==>¦1 ¦ ¦¦ ¦¦ ROM_1 A'¦ Y H A e¦
¦ ¦MUX¦L>¦ +-+e ¦А ¦ C¦¦ ¦¦¬H' --+----------+
L>+0 ¦ ¦ ¦=+Y LA--- -/++--+-¦ 0 ¦m4 1 2 x¦
a>+1 ¦ ¦ 1 ¦=+H ¦ ¦ 1 ¦m3 0 0 1¦
b>+2 ¦ L----- ¦ ¦ 2 ¦m1 0 4 0¦ ¦А +--------------- ¦ 3 ¦m3 0 0 1¦ LA--- ¦ --+----------+ L==============================- Способ адресации, по существу, такой же, как и в преды-
дущей схеме. Только в рассматриваемой схеме входной сигнал
управляет выбором одного из двух блоков ПЗУ (можно интерпре-
тировать этот сигнал как старший разряд адреса). СХЕМА С РЕГУЛЯРНОЙ АДРЕСАЦИЕЙ ----¬ ---¬ 0W- +1 ¦MUX+->+M2+--¬ 1W- загрузка 0->+0 ¦->+ ¦ -VTT--T¬ ----¬ Y a->+1 ¦¦ L--- W¦¦CT¦¦ ¦ROM¦==> b->+2 ¦¦ ¦¦ ¦¦ ¦ ¦H ¦ ¦¦ ¦¦ ¦¦A ¦ ¦====¬ ¦А ¦¦ г==>¦¦ ¦¦=>¦ ¦e ¦ LA---¦ ¦ ¦¦ ¦¦ ¦ +--¬ ¦ ¦ ¦ ¦ C¦¦ ¦¦ ¦ ¦=¬¦ ¦ ¦ ¦ ¦ -/++--+- L----S¦¦ ¦ ¦ ¦ L=================-¦ ¦ ¦ L------------------------ ¦ L=============================- В этой схеме при разветвлении процесса вычислений пара
альтернативных адресов получается следующим образом: один ад-
рес всегда на единицу больше, чем текущий ( т.е. изменяется
"регулярным" образом ), второй адрес - произвольный и содер-
жится вместе с микрокомандой в микроинструкции. Элементом, "вычисляющим" адрес, является счетчмк, управ-
ляемый сигналом, являющимся входным для УА. При различных
значениях входного сигнала счетчик выполняет две функции: ли-
бо прибавляет единицу к значению, которое хранилось в счетчи-
ке и являлось текущим адресом, либо загружается значением ад-
реса из управляющей памяти. В схему введен элемент М2, позволяющий инвертировать
значение входного сигнала, что облегчает распределение микро-
инструкций по ячейкам управляющей памяти. Адрес
n1 { m1 } -- 0 A ¦ Y H e S¦ --+-----------+
n2 { m2 } -- 1 0 ¦m1 x x 1¦ ¦ ¦ <<GO(a;d1,n3)>> 1 ¦m2 1 0 3¦ ¦ ¦
d1 { m0 } -- 2 2 ¦m0 1 1 2¦ ¦ ¦ <<GO(a;d1,n3)>> 3 ¦m3 x x 4¦ ¦ ¦
n3 { m3 } -- 3 4 ¦m4 1 0 0¦ ¦ ¦
n4 { m4 } -- 4 5 ¦m0 2 0 3¦ ¦ ¦ <<GO(a;d2,n1)>> 6 ¦m5 1 1 6¦ ¦ ¦
d2 { m0 } -- 5 7 ¦m0 0 1 3¦ --+------------ <<GO(b;n5,n3)>>
n5 { m5 } -- 6 <<GO(a;n5,n3)>> В схеме для конвейерного варианта взаимодействия регу-
лярное изменение адреса приходится организовывать так, чтобы
не увеличивать число мест конвейера. г==============================¬ ¦г=====================¬ ¦ ¦¦ -T--T¬ ----¬¦ ----¬S¦ ¦¦ ----¬ ¦¦RG¦¦ ¦MUX¦¦ ¦ROM¦=- ¦L=>¦INC¦=>¦¦ ¦¦>¦0 ¦¦ ¦ ¦Y -T--T¬Y' ¦ L---- C¦¦ ¦¦ ¦ ¦¦ ¦ ¦==>¦¦RG¦¦==> ¦ -/++--+- ¦ ¦¦>¦ ¦ ¦¦ ¦¦ ¦ -/TT--T¬ ¦ ¦A ¦ ¦H ¦¦ ¦¦H' ¦ C¦¦RG¦¦ ¦ ¦ ¦ ¦==>¦¦ ¦¦==¬ L=========>¦¦ ¦¦>¦1 ¦ ¦ ¦e ¦¦ ¦¦e'¦ ¦¦ ¦¦ ¦А ¦ ¦ +-->+¦ ¦+¬ ¦ ----¬ L+--+- LA--- L---- -/++--+-¦ ¦ ¦MUX¦ ---¬ ¦ C ¦ ¦ 0->+0 +->+M2+----- ¦ ¦ a->+1 ¦->+ ¦ ¦ ¦ b->+2 ¦¦ L--- ¦ ¦ ¦А ¦¦ ¦ ¦ LA---L------------------------------ ¦ L===================================- СХЕМА С ЕСТЕСТВЕННОЙ АДРЕСАЦИЕЙ И СОВМЕЩЕННЫМ НАЗНАЧЕНИЕМ РАЗРЯДОВ ЯЧЕЙКИ ПЗУ
г============================¬ C
¦г===================¬ ¦ -/TT--T¬H'
¦¦ -T--T¬ ----¬¦ ----¬ ¦ г==>¦¦RG¦¦==¬
¦¦ ----¬ ¦¦RG¦¦ ¦MUX¦¦ ¦ROM¦ ¦ ¦ ->+¦ ¦+-¬¦
¦L>¦INC¦>¦¦ ¦¦>¦0 ¦¦ ¦ ¦S¦H¦e¦ L+--+- ¦¦
¦ L----C¦¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ -T--T¬Y¦¦ для RG"Y"
¦ -/++--+- ¦ ¦¦>¦ ¦------>¦¦RG¦¦>¦¦
¦ -/TT--T¬ ¦ ¦A ¦ ¦ w c¦¦ ¦¦ ¦¦ 0w-загрузка
¦ C¦¦RG¦¦ ¦ ¦ ¦ ¦ -A-/++--+- ¦¦
L=======>¦¦ ¦¦>¦1 ¦ ¦ ¦k ¦ -T-T¬k'¦¦ 1w-нет загрузки ¦¦ ¦¦ ¦ А ¦ ¦ +----+->+¦T¦+¬ ¦¦ ----¬ L+--+- L-A-- L---- -/++-+-¦ ¦¦ k ----¬ ¦MUX¦ ---¬ --¬¦ C ¦ ¦¦ L----+ 1 +- CC
0>+0 +->+M2+->+&+- ¦ ¦¦ -----+ ¦
a>+1 ¦->+ ¦->+ ¦ ¦ ¦¦ SYN L----
b>+2 ¦¦ L---¦ L-- ¦ ¦¦ ¦А ¦¦e' L--------------------------- ¦¦ где CC - LA---L-----------------------------------¦ синхронизация ОА L=======================================- Эта схема используется только в конвейерном варианте
взаимодействия. Метод вычисления адреса для следующего такта
такой же, как и в схеме с регулярной адресацией. (Другой тер-
мин -"естественный" - употреблен только ради различения самих
схем.) Но в этой схеме, по сравнению с уже рассмотренными,
разряд управляющей памяти с одним и тем же номером (разрядный
срез) в различных микроинструкциях может быть использован
различным образом. Будем различать микроинструкции двух ти-
пов: - операционные, - алресации (выбора). В лданном варианте схемы тип микроинструкции устанавли-
вается разрядом с именем "k". При k=0 выполняется микро-
инструкция операционного типа. Все остальные разряды ячейки
загружаются в регистр микрокоманды и управляют выполнением
микроопераций в ОА. Следующий адрес всегда на единицу больше. При k=1 выполняется микроинструкция адресации. Все
разряды микроинструкции могут быть использованы для вычисле-
ния следующего адреса. В данном варианте схемы, так же как и
в схеме с регулярной адресацией, один из адресов явно записы-
вается в микроинструкцию, другой альтернативный адрес на еди-
ницу больше текущего. Адрес A ¦k¦ Y ¦
n1 { m1 } -- 0 ¦ ¦ H¦ e¦ S¦ --¦-+--+--+--+
n2 { m2 } -- 1 0 ¦0¦ m1 ¦ 1 ¦0¦ m2 ¦
g1 <<GO(a;g1,n3)>>-- 2 --¦-+--T--T--+ 2 ¦1¦ 1¦ 1¦ 2¦
n3 { m3 } -- 3 --¦-+--+--+--+ 3 ¦0¦ m3 ¦
n4 { m4 } -- 4 4 ¦0¦ m4 ¦ --¦-+--T--T--+
g2 <<GO(a;g3,n1)>>-- 5 5 ¦1¦ 1¦ 0¦ 0¦ 6 ¦1¦ 2¦ 0¦ 3¦
g3 <<GO(b;n5,n3)>>-- 6 --¦-+--+--+--+ 7 ¦0¦ m5 ¦
n5 { m5 } -- 7 --¦-+--T--T--+ 8 ¦1¦ 1¦ 1¦ 7¦
g4 <<GO(a;n5,n3)>>-- 8 9 ¦1¦ 0¦ 1¦ 3¦ Вместе с этой схемой обычно используется условная син-
хронизация, которая позволяет удлинить такт выполнения микро-
команды в ОА на время выполнения микроинструкций адресации.
SYN -----------¬ -----------¬ -----------¬ -----------¬ ----- L-- L-- L-- L-- L-- | | | | |
k 0 -------- 0 ---------------------------------- 0 ---
--------------------------- 1 -------- 1 ---------------- | | | | |
CC¬ -----------¬ -------------------------------------¬ ----- L-- L-- L-- | | | | |
Y------------------------------------------------------------
------------------------------------------------------------- ФУНКЦИОНАЛЬНЫЙ ПЕРЕХОД. ПЕРЕХОД НА МИКРОПОДПРОГРАММУ С ВОЗВРАТОМ Функциональный переход При необходимости выполнения нескольких вычислительныых
функций, управление которыми представляется в виде независи-
мых микропрограмм, необходимо организовать независимый вызов
этих микропрограмм. Начальные адреса микропрограмм, управляющих вычислениями
различных функций, обычно существуют вне управляющей памяти.
В УА достаточно предусмотреть механизм коммутации, позволя-
ющий сделать начальный адрес текущим. Это можно осуществить в
любой из рассмотренных схем. (К механизму коммутации относят-
ся, кроме аппаратуры, специальные разряды управляющей памяти
и специальные микроинструкции.) г======================¬ C г======¦==============¬ ¦ -/ TT--T¬H' ¦ ¦ ----¬¦ ----¬ ¦ г==>¦¦RG¦¦==¬ ¦ ¦ ¦MUX¦¦ ¦ROM¦ ¦ ¦ ->+¦ ¦+-¬¦
F =¦======¦========>¦0 ¦¦ ¦ ¦ ¦ ¦ ¦ L+--+- ¦¦ ¦ ¦ -T--T¬ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ ¦ ¦¦RG¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ L>¦¦ ¦¦=>¦1 ¦¦ ¦ ¦S¦H¦e¦ ¦¦ ¦ C¦¦ ¦¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦ -T--T¬Y¦¦ для RG"Y" ¦ -/++--+- ¦ ¦¦>¦ ¦------>¦¦RG¦¦>¦¦ ¦ -T--T¬ ¦ ¦A ¦ ¦ ¦¦ ¦¦ ¦¦ 0w-загрузка ¦ ----¬ ¦¦RG¦¦ ¦ ¦ ¦ ¦ w c¦¦ ¦¦ ¦¦ L>¦INC¦=>¦¦ ¦¦T>¦2 ¦ ¦ ¦ -A-/++--+- ¦¦ 1w-нет загр. L---- C¦¦ ¦¦¦ ¦ ¦ ¦ ¦ ¦ ¦¦ -/++--+-¦ ¦ ¦ ¦ ¦ ¦ ¦¦ г==========- ¦ ¦ ¦ ¦ ¦ ¦¦ ¦ -T-----T¬ ¦ ¦ ¦ ¦ --k ¦¦ L>¦¦STACK¦¦=>¦3 ¦ ¦ ¦K ¦ -T--T¬K' ¦¦ L+----A+- ¦ ¦ ¦ ¦===¦>¦¦RG¦¦¬ ¦¦ ¦ ¦ А ¦ ¦ ¦ ¦¦ ¦¦¦ ¦¦ ¦ L-A-- L---- -/++--+-¦ ¦¦ ----¬ ¦ ¦ C ¦ ¦¦ ¦MUX¦ ---¬ -¦------¦¬ ¦ ¦¦
0>+0 +->+M2+>+ CS ¦<==================- ¦¦
a>+1 ¦->+ ¦ ¦ ¦ ¦¦
b>+2 ¦¦ L--- L--------- ¦¦ k ----¬ ¦А ¦¦e' ¦¦ L-+ 1 +-CC LA---L---------------------------------------¦ --+ ¦ L===========================================- SYN L---- Переход к микроподпрограмме с возвратом При реализации достаточно сложных вычислений удобно вос-
пользоваться механизмом микроподпрограмм. Одна и та же микроподпрограмма может быть вызвана из
разных точек вызывающих микропрограмм. Поэтому при вызове
микроподпрограммы необходимо запомнить адрес, с тем, чтобы
восстановить его при возвращении из микроподпрограммы. Чтобы
запомнить и восстановить адреса возврата от вложенных вызо-
вов, используется безадресная память - стек (stack). Принцип (дисциплина) работы стека описывается условием
"последний вошел - первым вышел" (Last In - First Out, LIFO).
чтобы описать этот принцип будем считать, что слова, хранящи-
еся в стеке, перенумерованы с помощью первых натуральных чи-
сел 1,2,...,N. Слово с наибольшим номером называют вершиной
стека. Стек может выполнять следующие действия: -"чтение" слова с наибольшим номером, -"выталкивание" (стирание) из памяти слова с наибольшим но- мером, -"запись" нового слова с присваиванием ему наибольшего номе- ра. При вызове микроподпрограммы выполняется операция "запи-
си" адреса возврата в стек. При возвращении из микроподпрог-
раммы выполняется операция "чтения" адреса возврата, затем -
"выталкивания" его же из стека. Операция "чтения" без "выталкивания" выполняется при ис-
пользовании стека для организации циклов. Разряды с именем "К" определяют тип выполняемой микро-
инструкции. В связи с тем, что теперь в схеме существует 4
источника адреса для управляющей памяти, возможны 4 типа бе-
зусловных переходов, кроме того, возможны различные условные
переходы в различных сочетаниях комбинирующие эти источники
адреса и входные переменные. С помощью комбинационной схемы CS разряды микроинструкции
"К" преобразуются в сигналы управления стеком и мультиплексо-
ром. УПРАВЛЕНИЕ С ПРЕДВОСХИЩЕНИЕМ В конвейерном варианте для команд переходов по предикат-
ным переменным, зависящих без сдвига от сигналов управления,
приходится добавлять еще один такт для того, чтобы "увидеть"
значение переменной, по которой выполняется ветвление, и выб-
рать нужную МКИ. Можно построить управляющий автомат, в котором для уско-
рения выполнения программы выполняются следующие действия:
Предварительно выбирается из ПЗУ одна из двух альтернативных
МКИ, соответствующая наиболее вероятному значению переменной
ветвления. Это значение должно храниться в той МКИ, после ко-
торой выполняется ветвление. В конце такта выработанное ре-
альное значение переменной сравнивается с предсказанным, если
они совпадают, то выбранная из ПЗУ МКИ записывается в выход-
ной регистр, если нет, то предыдущий такт продлевается, т.е.
не синхронизируются ОА и RG'МКИ. Микропрограмма будет такой
же как и для последовательного варианта взаимодействия ОА и
УА, но в МКИ добавляются два разряда: F = { 1, если используется предвосхищение; 0, если нет }, P - наиболее вероятное значение переменной ветвления. Фрагмент схемы УА, обеспечивающий предвосхищение может
быть таким: --------------¬ ¦ ¦W -T--T¬ ¦ -VT---¬ q -A---¬ f t ¦¦RG¦¦ L-->+MUX+--->+ SS +<----------------------¬ --T--->+¦ ¦+---->+ ¦--->+ +<---------------------¬¦ ¦ ¦¦ ¦¦ ¦ ¦¦t ¦ ¦ p ¦¦ ¦ -\++--+- L----¦ -\+T---- ¦¦ ¦ ¦ ¦ ¦ ¦j ¦¦ L---+----------------- ¦-VT---¬ ------¬ P -T--T¬p¦¦ ¦ ¦ ¦MUX¦ ¦ ROM +--->+¦RG¦+--¦ ¦ ¦ ¦ ¦ ¦ ¦ F ¦¦ ¦¦f ¦ ¦ ¦ ¦ +--->+¦ ¦+--- ¦ ¦ ¦ ¦ ¦¦ ¦¦ ¦ ¦ ¦ ¦--->¦¦ ¦¦--> ¦ ¦ ¦ ¦ ¦¦ ¦¦ C ¦ ¦ L------ -\A++--+- ----+-------------------+--------------------L------ W Пусть c=1 в конце такта. Схема SS это автомат, который может находиться в одном
из двух состояний s0 и s1,
если s0, 0f, то w=1, j=q
если s0, 1f, 0c, то w=0, j=p
если s0, 1f, 1c, p==t, то w=1, j=p
если s0, 1f, 1c, p=/=t, то w=0, j=x, переход в s1
если s1, то w=1, j=q, переход в s0
_
|
|
|