Лекции по программированию

 

 _УПРАВЛЯЮЩИЕ АВТОМАТЫ.

 _ОСНОВНЫЕ СПОСОБЫ АДРЕСАЦИИ МИКРОКОМАНД

Начнем с рассмотрения простейшего варианта управления, в

котором не участвуют предикатные функции (переменные), т.е. в

микропрограмме переходы только безусловные. В таком случае УА

является автономным синхронным автоматом.

В более общем случае функция переходов УА зависит от

предикатных переменных, но УА должен быть автоматом Мура.

Условимся о некоторых ограничениях, позволяющих упрос-

тить схему на начальных этапах проектирования (от которых

легко впоследствии и отказаться):

- на каждом шаге процесса вычислений ветвление может осу-

ществляться только по одной двузначной предикатной перемен-

ной (т.е. разветвление возможно лишь на два направления);

- начальные значения всех регистров УА являются нулевыми.

Впредь на схемах УА не будем показывать цепей установки на-

чальных значений.

Для реализации в самом общем случае микропрограмм произ-

вольной структуры будем строить УА так, чтобы основным мате-

риальным носителем управляющей (автоматной) компоненты мик-

ропрограммы являлась бы управляющая память (реализованная,

например, в виде ПЗУ). В этом случае структура слова управля-

ющей памяти - МИКРОИНСТРУКЦИЯ - состоит из двух составных

частей: микрокоманды и адресной части.

Адресная часть микроинструкции содержит информацию, поз-

воляющую в следующем такте работы выбрать ( указать ) новый

адрес управляющей памяти. Реализация именно этого момента яв-

ляется основным предметом дальнейшего рассмотрения и опреде-

ляет, в основном, структуру, объем аппаратуры и быстродей-

ствие УА. При этом подлежит рассмотрению реализация следующих

типов переходов как между шагами алгоритма, так, соот-

ветственно, и между микроинструкциями:

- безусловный переход,

- условный переход,

- функциональный переход,

- переход к микроподпрограмме с возвратом.

Будем изучать работу управляющих автоматов различной

структуры, демонстрирующие основные применяемые варианты ад-

ресации микроинструкций, на следующем алгоритме:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 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

_