Организация интегральной операционной части
Интегральные ОЧ (микропроцессоры с микропрограммным управлением) содержат на кристалле необходимые средства для реализации алгоритмически полных систем микроинструкций. Под алгоритмической полнотой понимается возможность отображения любого вычислительного алгоритма в данной системе микроинструкций. Обычно интегральные ОЧ имеют избыточную систему микроинструкций, что обеспечивает возможность многовариантной реализации исходного алгоритма с целью дальнейшего выбора оптимального варианта.
Интегральные ОЧ выпускаются в виде разряднонаращиваемых процессорных секций (ПС) по 2, 4, 8, 16 бит. Процесс проектирования ОЧ на базе ПС упрощается по сравнению с ранее рассмотренным алгоритмом разработки ОЧ на дискретных компонентах.
Разработка фактически заканчивается на структурном этапе, если отображение алгоритма в системе микроинструкций произошло удовлетворительно, в противном случае интегральные ОЧ наращивают дополнительными аппаратными средствами вне кристалла, тогда все этапы ранее рассмотренного алгоритма сохраняются, а сама интегральная ОЧ представляется как дискретный компонент.
В качестве примера рассмотриморганизацию интегральной ОЧ типа К584ВМ1 (рис. 13). Этот микропроцессор выполнен по технологии И2Л (интегральной инжекционной логики), относится к системам среднего быстродействия, по входам и выходам совместим с элементами ТТЛ технологий, обеспечивает реализацию микроинструкций за цикл, равный 300 – 500 нс. ПС имеет разрядность 4 бита, разряднонаращиваема, выполняет 512 микроинструкций, что позволяет реализовать любую требуемую систему операций.
Основу ОЧ составляет комбинационное арифметико-логическое устройство (АЛУ), выполняющее 8 логических и 8 арифметических действий над двоичными дополнительными кодами. АЛУ имеет два входа, подключенных к мультиплексору первого операнда (МА) и к мультиплексору второго операнда (МВ). Мультиплексоры коммутируют выходные шины возможных источников операндов: усилителей входной шины (ШИНВх), блока регистров общего назначения (БРОН), рабочего регистра (аккумулятора) (РР), расширителя (РРР). Результат с выхода АЛУ может поступать на буферы (ВБ) шины выхода (ШИНВых) и во все вышеперечисленные регистры.
Регистры РОН0 - РОН7 используются как внутренняя сверхоперативная память, РОН7 также может использоваться как накапливающий регистр программного счётчика ПСч, который состоит из РОН7 и комбинационного инкрементора ИПСч. Код с выхода АЛУ также может сдвигаться влево или вправо в мультиплексорах одинарного сдвига СДВ1 и в мультиплексорах сдвига двойного слова СДВ2. Результаты сдвигов фиксируются в РР и в РРР.
АЛУ, ПСч, сдвигатели разрядно наращиваются соответственно по входу и выходу переноса АЛУ (ПАЛУ), инверсным входу и выходу ПСч, двунаправленным инверсным входам/выходам !СД1, !СД2. ИПСч в младшей позиции, в зависимости от условий на входе управления инкрементом (УИ), может вести счёт на +1 или +2, что позволяет использовать ПСч как источник адреса командного цикла с выводом результата на адресную шину (ШинА). Через мультиплексор адреса (МАДР) на ШинА можно также выводить принудительно адрес из РР или РРР при пассивном состоянии сигнала ПР (приоритет).
Управление ПС осуществляется кодом микроинструкции, который вводится по 9-разрядной шине кода микроинструкции (КМИ). Дополнительно в большинстве микроинструкций в управлении участвует входной перенос (ВхПАЛУ). Кроме этого, на ряд операций могут влиять сигналы на входах сдвига !СД1, !СД2. Код микроинструкции на внутренней программируемой логической матрице (ПЛМ) разворачивается в 20-разрядный внутренний код управления (ВнУПР), который фиксируется в регистре операций (РО). Фиксация внутреннего кода управления в РО осуществляется по синхроимпульсу (СИ). Период СИ определяет длительность микрокомандного цикла.
На ПЛМ также воздействуют два бита позиции (ПОЗ 1,0), которые определяют модификацию инструкции в зависимости от позиции ПС в разрядной сетке ОЧ. В старшей секции необходимо обрабатывать знаки. В младшей секции учитывать входные переносы АЛУ, ПСч и воздействие сигнала управления инкрементом. В средних секциях модификации микроинструкции не осуществляется. Кодировка ПОЗ для каждой секции задается жестко путём распайки на плате. ЛУ по окончании
каждого микрокомандного цикла могут выводиться на шины ВыхПАЛУ, старший бит мультиплексора А3, старший бит мультиплексора В3, выходы сдвигов !СД1, !СД2, 3/0 бит (старший/младший бит РРР). Многоразрядные коды, как условия, можно выводить на ШИНВых и ШИНА с дальнейшим анализом в блоке микропрограммного управления (до 8 битов/цикл).
Примеры реализации операций в интегральной ОЧ
При отображении алгоритма выполняемой операции в системе микроинструкций используется следующая методика.
1. Исходный алгоритм детализируется до уровня регистровых пересылок.
2. Размещение необходимых переменных и констант закрепляется за определенными регистрами интегральной ОЧ (распределение аппаратных средств).
3. Формальным регистрам, задействованным в алгоритме, ставятся в соответствие физические регистры ОЧ, при этом учитывается, что сумматор комбинационный (нет накопления результата).
4. Осуществляется отображение исходного алгоритма в системе микроинструкций.
5.
Выполняется моделирование исполнения микропрограммы на инструментальных средствах либо отладка на макете ОЧ.
Рассмотрим пример выполнения логической операции. В соответствии с приведённой выше методикой исходный алгоритм (рис. 14 а) детализируется до уровня регистровых пересылок (рис. 14 б). Закрепляем за логическим регистром R1 физический регистр РОН0, а за логическим регистром R2 – РОН1. Для размещения результата будем использовать РОН2. Учитывая систему микроинструкций и комбинационные свойства сумматора, для сохранения промежуточных результатов и пересылок используем РР.
Результирующая микропрограмма приведена на рис. 14 в.
Если в ОЧ реализуется набор микропрограмм (операций), то рекомендуется в общем алгоритме работы микроЭВМ реализовать общий протокол ввода и общий протокол вывода для всех операций, то есть исходные операнды и результаты будут размещаться в одних и тех же регистрах для всех операций.
Пример фрагмента микропрограммы операции суммирования чисел в прямых кодах представлен в табл. 4. Исходным считаем алгоритм, приведённый на рис. 9, а отображение на уровень регистровых пересылок выполнено при разработке соответствующей ГСА (см. рис. 11). За исходными операндами закрепляются РОН0, РОН1, за результатом – РОН2. В РОН3 хранится константа вида 10…0, РОН4 и РОН5 используются для временного размещения модулей операндов. Мнемокоды инструкций соответствуют требованиям отладчика К584EMUL.
Таблица 4
Микропрограмма операции суммирования
№ | Адрес | Мнемокод инструкции | Примечание |
00 0000 | PОН0:=ШИНвх | Ввод операнда А | |
00 0001 | PОН1:=ШИНвх | Ввод операнда В | |
00 0010 | РР:=!PОН0+П (П=1) | А = 0 ? Если да, то идти к 27 | |
00 0011 | РР:=!PОН1+П (П=1) | В = 0 ? Если да, то идти к 29 | |
00 0100 | РР:=!П (П=1) | РР = 0..0 | |
00 0101 | РР:=СЦП (РР+П) (П=1) | РР = 10...0 | |
00 0110 | PОН3:=РР+П (П=0) | Сохранение маски 10...0 в РОН3 | |
00 0111 | РР:=PОН0+П (П=0) | Пересылка А | |
00 1000 | РР:=!PОН3 and РР | Выделение Ам | |
00 1001 | PОН4:=РР+П (П=0) | Сохранение Ам | |
00 1010 | РР:=PОН1+П (П=0) | Пересылка В | |
00 1011 | РР:=!PОН3 and РР | Выделение Вм | |
00 1100 | PОН5:=РР+П (П=0) | Сохранение Вм | |
00 1101 | РР:=PОН0+П (П=0) | Пересылка А | |
00 1110 | РР:=PОН1 xor РР | Сравнение знаков | |
00 1111 | РР:=СЦЛ (РР+П) (П=0) | Если !СД1 = 0, идти к 30 | |
01 0000 | РР:=PОН4+П (П=0) | Пересылка Ам | |
01 0001 | РР:=PОН5+РР+П (П=0) | См = Ам + Вм | |
01 0010 | PОН2:=РР+П (П=0) | Сохранение См | |
01 0011 | РР:=СЦЛ (РР+П) (П=0) | Если !СД1=0, идти к 36 | |
01 0100 | РР:=PОН0+П (П=0) | Пересылка А в РР |
Продолжение табл. 4
01 0101 | РР:=PОН3 and РР | Формирование ЗнС | |
01 0110 | PОН2:=PОН2 or РР | Формирование С | |
01 0111 | РРР:=!П (П=1) | Сообщение «Переполнения нет» | |
01 1000 | ШИНвых:=РРР+П(П=0) | Вывод сообщения | |
01 1001 | ШИНвых:=PОН2 | Вывод С, "Конец" | |
01 1010 | РР:=PОН1+П (П=0) | Пересылка В в РР | |
01 1011 | PОН2:=РР+П (П=0) | Сохранение С, идти к 24 на вывод | |
01 1100 | РР:=PОН0+П (П=0) | Пересылка А в РР, идти к 28 | |
01 1101 | РР:=PОН4+П (П=0) | Пересылка Ам в РР | |
01 1110 | РР:=РР-PОН1-1+П (П=1) | См = Ам – Вм | |
01 1111 | PОН2:=РР+П (П=0) | Сохранение См | |
10 0000 | РР:=!РР+П (П=1) | Если См = 0, идти к 37 | |
10 0001 | РР:=PОН2+П (П=0) | Пересылка См в РР | |
10 0010 | РР:=СЦЛ (РР+П) (П=0) | Если !СД1=0, идти к 38, иначе к 21 | |
10 0011 | РРР:=!П (П=0) | «Переполнение», идти к 25 | |
10 0100 | PОН2:=!П (П=1) | С = 0, идти к 24 | |
10 0101 | РР:=PОН5+П (П=0) | Пересылка Вм в РР | |
10 0110 | РР:=РР-PОН4-1+П (П=1) | См = Вм – Ам | |
10 0111 | PОН2:=РР+П (П=0) | Пересылка См | |
10 1000 | РР:=PОН1+П (П=0) | Пересылка В в РР, идти к 22 |
Так как система микроинструкций алгоритмически избыточна, реализовать конкретную микропрограмму можно многими путями с учетом требований технического задания. Например, если требуется самая дешевая реализация без ограничений во времени, алгоритм реализуется программным путем, без привлечения дополнительных аппаратных средств. Если требуется ускоренная реализация, привлекаются внешние аппаратные средства, ускоряющие выполнение тех или иных инструкций.
В первом случае все требуемые константы можно формировать внутри процессора программным путем. Во втором случае все требуемые константы желательно вводить из внешней постоянной памяти, а функции, требующие ускорения, реализовать во внешних аппаратных средствах (быстром умножителе, быстром сдвигателе и т.п.).