зание адреса следующей микрокоманды в каждой из микрокоманд независимо от того, совершается услов ный переход или нет. В этом случае переход не требует отдельного шага микропрограммы и может быть выпол нен одновременно с другими операциями. Кроме того, облегчается распределение микрокоманд в памяти и ис-
Ф у н к ц и с н а л б н б /е с и г н а л ы
|
2 |
3 |
4 |
S |
|
|
|
/.7 |
/ f f |
f f |
7 |
0 |
• • • |
0 |
ff |
7 |
ff |
ff |
7 |
• |
• |
• |
ff |
ff |
ff |
7 |
ff |
ff |
. . . |
ff |
ff |
f f |
f f |
f f |
f f |
« |
» • |
7 |
|
|
|
|
|
I |
( |
t |
• |
|
|
|
|
|
• |
• |
• |
• |
|
|
|
|
|
• |
* |
* |
• |
f f |
f f |
f f |
f f |
7 |
|
|
|
f f /7 |
Р и с . 5 - 2 4 . М и к р о к о м а н д а п р и г о р и з о н т а л ь н о м м и к р о п р о г р а м
м и р о в а н и и . .
пользование различными микропрограммами общих мик рокоманд.
Для управления последовательностью выборки в мик рокоманде на рис. 5-23 служат поля А и КВ. Если после выполнения текущей микрокоманды отсутствует ветвле ние микропрограммы, то в поле КВ записывается нуль и адрес следующей микрокоманды определяется полем Л.
Если после выполнения текущей микрокоманды про исходит ветвление микропрограммы по какому-либо признаку, то в поле КВ записывается соответствующий код и данный признак передается в младший разряд адреса следующей микрокоманды. Предположим, что
( после выполнения микрокоманды сложения необходим переход к микрокоманде, находящейся в ячейке 160 ПЗУ,
если содержимое аккумулятора равно нулю, и к микро команде из ячейки 161, если содержимое аккумулятора не равно нулю. Данной проверке присваивается опреде ленный код ветвления (например, 3) и этот код записы вается в поле КВ, а в поле А записывается код 160. Пос ле выполнения данной микрокоманды в старшие разря ды адресного регистра ПЗУ передается код 160, а в младший разряд принимается сигнал «аккумуляторѣ Ѣ0». Таким образом, в случае равенства содержимого аккумулятора нулю следующая микрокоманда будет считываться из ячейки с адресом 160, а в случае нера венства нулю— из ячейки с адресом 161.
Можно провести следующую классификацию систем микропрограммного управления.
По способу формирования функциональных сигналов различают горизонтальное и вертикальное микропро граммирование.
По способу определения адреса следующей микроко манды различают последовательное и параллельное мик ропрограммирование.
По структуре кодирования микроопераций различают микропрограммирование с прямым и косвенным коди рованием микрокоманд.
При горизонтальном микропрограммировании каждо му разряду микрокоманды соответствует определенная микрооперация, выполняемая независимо от содержания других разрядов. Микропрограмма при горизонтальном микропрограммировании может быть представлена в ви де матрицы (рис. 5-24), в которой каждая строка соот ветствует одной микрокоманде, а колонка — одной мик рооперации (функциональному сигналу). Наличие еди ницы в пересечении какой-либо строки и колонки означает посылку данного функционального сигнала в данной микрокоманде, а наличие нуля означает отсутст вие функционального сигнала.
Рассмотрим примерный формат горизонтальной мик рокоманды и некоторые возможные значения ее разря дов.
1 2 3 4 5 6 7 8 А
Значение разрядов микрокоманды (микрооперации): 1. Гашение аккумулятора.
2.Гашение указателя переполнения.
3.Обратный код аккумулятора.
4.Гашение регистра множителя — частного.
5. Обратный код регистра множителя — частного.
6.Сдвиг аккумулятора влево.
7.Сдвиг аккумулятора вправо.
8.Прибавление единицы к аккумулятору.
9.Чтение из памяти в аккумулятор и т. д.
Аопределяет адрес следующей микрокоманды. Размещая единицы в нескольких разрядах микроко
манды, можно одновременно выполнить несколько мик роопераций. Например, микрокоманда 010011000... по зволяет одновременно погасить указатель переполнения, взять обратный код регистра множителя— частного и сдвинуть содержимое аккумулятора влево. Конечно, воз буждаемые микрооперации должны быть совместимы; так, например, микрокоманда 001000011... является не допустимой, так как она предполагает одновременное выполнение взаимно исключающих действий: чтение в аккумулятор из памяти, взятие обратного кода в нем и прибавление к аккумулятору единицы. Для расширения логических возможностей микрокоманды иногда исполь зуется многотактный принцип исполнения микрокоман ды. В соответствии с этим принципом каждому разряду микрокоманды присваивается номер такта, в котором выполняется данная микрооперация; всем совместимым действиям может быть отведен один и тот же такт, а между взаимно исключающими действиями может быть установлена очередность, соответствующая наиболее употребительным комбинациям этих действий. Если в последнем примере установить следующую очередность действий: чтение в аккумулятор из памяти — 1-й такт; взятие обратного кода аккумулятора —2-й такт, прибав ление к аккумулятору единицы —3-й такт, то одна мик рокоманда 001000011... позволяет осуществить прием из памяти числа в дополнительном коде. Очевидно, однако, что нелегко установить универсальную очередность мик роопераций в микрокоманде, которая годилась бы для большинства случаев.
Достоинствами горизонтального микропрограммиро вания являются возможность одновременного выполне ния нескольких микроопераций и простота формирования функциональных импульсов, так как последние могут возбуждаться непосредственно от сигналов, получаемых
из регистра хранения микрокоманды без каких-либо про межуточных схем дешифрации. Однако оно имеет и су щественный недостаток, заключающийся в том, что тре буется большая длина микрокоманды, поскольку число функциональных импульсов в современном процессоре может достигать нескольких сотен. Соответственно для хранения микрокоманд требуются запоминающие уст ройства с большой разрядностью ячейки, что является экономически невыгодным. Из-за ограничений, обуслов ленных совместимостью микроопераций, а также вслед ствие последовательного характера алгоритмов выполне ния операций лишь небольшое число разрядов в каждой микрокоманде будет отмечено единицами, в основном же матрица, изображенная на рис. 5-24, будет состоять из нулей. Это приведет к неэффективному использованию емкости ЗУ для микропрограмм. Поэтому хотя и извест ны случаи практического применения горизонтального микропрограммирования, например в машинах НАПРИ, большее распространение получил другой принцип — принцип вертикального микропрограммирования.
При вертикальном микропрограммировании микро операция определяется не состоянием одного из разря дов микрокоманды, а двоичным кодом, содержащимся в определенном поле микрокоманды. Пример вертикальной микрокоманды показан на рис. 5-23 и рассмотрен выше. В известном смысле формат вертикальной микрокоман ды подобен формату команды обычной вычислительной машины. Он содержит код микрооперации и адресную часть, определяющую источник участвующих в микроопе рации данных и место назначения результата. Отличие заключается главным образом в том, что производится более элементарное действие (микрооперация вместо операции), а адресная часть в большинстве случаев оп ределяет не ячейки памяти, а операционные регистры процессора.
При параллельном микропрограммировании форми рование адреса и чтение следующей микрокоманды про изводится параллельно с выполнением текущей микро команды.
В этом случае при необходимости ветвления после данной микрокоманды условия ветвления следует форми ровать в предыдущей микрокоманде.
При последовательном микропрограммировании фор мирование адреса последующей микрокоманды всегда