Микропрограммный способ формирования УС основан на том, что входные сигналы автомата управления можно представлять как адреса некоторой памяти, ячейки которой содержат требуемые комбинации выходных сигналов. Поэтому формирование сигналов управления в текущий момент времени можно представить как выборку по n-битному адресу, каждый бит которого соответствует текущему значению одного из n входных сигналов Xi, одного из 2n слов памяти, содержащего требуемую m-битную комбинацию, соответствующую текущим значениям каждого из m выходных сигналов Yj. Тогда проблема формирования сигналов управления выполнением команд процессора сводится к организации последовательности выборок слов из памяти по адресам, соответствующим последовательности комбинаций входных сигналов, которая обеспечит требуемую последовательность комбинаций значений управляющих сигналов.
Поскольку набор микроопераций, выполняемых в текущем такте с помощью сформированных в этом такте управляющих сигналов, называется микрокомандой, а последовательность микрокоманд образует микропрограмму выполнения машинной команды, то память, хранящая набор микропрограмм для выполнения каждой команды процессора, называется микропрограммной памятью, а данный способ управления выполнением комад – микропрограммным управлением (МПУ). Идею построения МПУ впервые предложил M. Wilks (Кембридж) в 50-х годах прошлого века, но активная реализация МПУ началась только в середине 60-х. г.г. по мере развития технологии разработки ИС (в частности, схем памяти).
Структурная схема устройства микропрограммного управления представлена на рис. 4.2.
На рисунке приняты следующие обозначения: МПЗУ – микропрограммное запоминающее устройство (память микропрограмм), РгКом и КОП – соответственно регистр команд (машинных) и его поле кода операции, РгАМК – регистр адреса текущей микрокоманды длиной n бит, РгМК – регистр текущей микрокоманды длиной m бит, ОпЧМК и АЧМК – соответственно операционная (длиной m’) и адресная (длиной m”) части микрокоманды, ФАСлМК – формирователь адреса следующей микрокоманды, ФормУС – формирователь управляющих сигналов Уi , ГТ – генератор тактов, РгСостВУ – регистр состояния внешнего устройства.
Код операции выполняемой машинной команды подается в РгАМК и определяет адрес в МПЗУ начала микропрограммы, реализующей эту машинную команду. На РгМК выбирается первая микрокоманда, операционная часть которой поступает на формирователь сигналов, управляющих выполнением микроопераций, входящих в состав этой МК, а адресная часть поступает на формирователь адреса следующей МК. Адрес следующей МК либо принудительно задается в коде текущей МК, либо формируется в зависимости от условий {Qi} завершения текущей МК. Сформированный адрес следующей МК поступает на РгАМК и из МПЗУ выбирается следующая МК. Этот процесс повторяется до завершения микропрограммы выполняемой машинной команды, после чего на РгКом выбирается следующая машинная команда, инициирующая выполнение микропрограммы этой команды.Основными достоинствами микропрограммного управления являются:
Регулярная структура устройства управления позволяет реализовать его на основе серийных БИС.
Большая гибкость в плане изменения или специализации набора команд ВМ путем замены (в случае ПЗУ) или перезаписи (в случае ППЗУ) микропрограммной памяти.
Возможность рационального распределения аппаратного и микропрограммного управления порождает семейство машин с одним набором команд, но разной производительностью.
Микропрограммное управление предоставляет возможность эмуляции на микропрограммном уровне новых архитектур машин на имеющейся инструментальной машине.
Микропрограммная реализация системных программ (компиляторы, файловые системы) значительно повышает производительность ВМ и широко используется в суперкомпьютерах.
Основные недостатки микропрограммного управления:
Снижение производительности процессора из-за замедления выполнения каждой микрокоманды, связанного с обращением к МПЗУ.
Увеличение площади кристалла, необходимой для размещения устройства МПУ.
Способы кодирования микрокоманд
Обычно число различных микроопераций в несколько раз превышает число машинных команд. Кроме того, в составе микрокоманды требуется указывать прямой адрес следующей микрокоманды в МПЗУ. Это приводит к тому, что длина микрокоманды Lмк может достигать больших размеров (до 200 бит и более). В то же время эффективно использовать все 200 бит микрокоманды невозможно. Поэтому возрастает роль выбираемого способа кодирования микрокоманд. Различают следующие основные способы:
Горизонтальное или унитарное кодирование (по существу, отсутствие какого-либо кодирования).
Как видно из рис. 4.3, здесь каждый бит ОпЧМК определяет выполнение только одной микрооперации (МОп). Это позволяет в одной МК задавать любые сочетания МОп и соответствующих им УС Уi , обеспечивая их параллельное выполнение. Кроме того, отсутствует необходимость в декодировании ОпЧМК. В то же время длина ОпЧМК определяется максимально возможным числом микроопераций
LОпЧМК = (NМОп)max
Это основной недостаток горизонтального кодирования, увеличивающий расход памяти в МПЗУ при низкой эффективности использования разрядов ОпЧМК в конкретной МК.
Рис. 4.3
Достоинствами горизонтального кодирования являются:
простота и высокая скорость формирования управляющих сигналов;
максимальный параллелизм выполнения МОп.
Вертикальное кодирование микрокоманд .
В случае вертикального кодирования каждой микрооперации присваивается отдельная двоичная комбинация, например, соответствующая двоичному коду ее номера в общем списке возможных МОп. Рарядность этого двоичного кода будет определять длину ОпЧМК в соответствии с выражением
LОпЧМК = Int [log2 (NМОп)max] +1, где Int(Х) – целая часть числа Х .
При этом ОпЧМК будет иметь минимальную длину и это приведет к уменьшению затрат памяти на хранение микропрограмм. С другой стороны, для распознавания кода микрооперации необходим дешифратор МК, преобразующий код МОп в соответствующий УС и требующий на это некоторое время. Кроме того, в каждой МК можно задать только 1 МОп, что увеличивает длину микропрограммы и время ее реализации.
Смешанное кодирование микрокоманд.
В этом случае весь набор микроопераций делится на группы, связанные с управлением конкретными устройствами (АЛУ, память и т.п.), как показано на рис.4.4. В каждую группу включаются взаимно несовместные МОп, которые не встречаются вместе в одной МК. При этом УС, формируемые в одном и том же такте, оказываются в разных группах и могут выполняться параллельно.
Управление регистрами Управление АЛУ Управление памятью
___
ОпЧМК
n1 n2 n3
ДШ 1 ДШ 2 ДШ 3
↓ … ↓ ↓ … ↓ ↓ … ↓
{Yi} {Yi} {Yi}
2 n1 2 n2 2 n3 (число
выходов ДШ)
Рис. 4.4


Внутри каждой группы МОп кодируются вертикальным способом и двоичный код группы поступает на соответствующий дешифратор, где выполняется его декодирование. Такой способ смешанного кодирования называется горизонтально-вертикальным, так как выбор группы осуществляется по горизонтальному принципу, а внутри группы используется вертикальное кодирование.
При использовании К независимых групп длина ОпЧМК определяется соотношением
К
LОпЧМК = ni , где ni = Int[Log2(NМОп)i] + 1
i=1
Такой способ смешанного кодирования сочетает достоинства и снижает влияние недостатков чисто горизонтального (большая длина МК при низкой эффективности использования разрядов ОпЧМК) и чисто вертикального (увеличение времени выполнения микропрограммы) способов кодирования.
Способы адресации микрокоманд.
В зависимости от способа указания адреса очередной МК различают устройства МПУ с принудительным и естественным порядком следования МК. В случае принудительной адресации МК адрес следующей МК указывется непосредственно в текущей МК. Этот адрес может задаваться безусловно или выбираться в зависимости от условия, определяемого по признакам (флажкам) выполнения текущей МК, что позволяет реализовать ветвления в микропрограммах. Естественный порядок следования МК предусматривает выборку очередной МК из ячейки памяти с адресом на 1 больше адреса текущей МК. В этом случае роль формирователя адреса следующей МК может выполнять обычный счетчик, необходимость в адресной части МК фактически отпадает и МК может содержать только операционную часть (операционная МК или ОМК). Но в этом случае в микропрограмме (МПМ) нельзя реализовать ветвления. Для обеспечения ветвлений в МПМ надо ввести дополнительный формат МК – управляющие (УМК), содержащие только поле логического условия (ЛУ) и поле адреса очередной МК, к которой осуществляется переход при выполнении этого условия. В случае невыполнения ЛУ адрес следующей МК равен текущему, увеличенному на 1. Безусловные переходы реализуются УМК с нулевым полем ЛУ. Для различения ОМК и УМК в обоих форматах надо применять однобитовое поле признака.
Компютеры с сокращенным набором команд (КСНК) – более известные по английской аббревиатуре как RISC-компьютеры (RISC – Reduced Instruction Set Computer) – воплощают направление развития архитектуры ВМ, связанное с возвращением к принципам аппаратного управления выполнением команд с целью повышения производительности.
Система команд первого и частично второго поколений машин содержали не более пятидесяти команд. Основная проблема, по которой набор команд не расширялся, – это цена аппаратуры (и управляющая, и обрабатывающая части процессора реализовывались аппаратно), а также необходимость программирования в кодах (программист не мог запомнить большое количество команд). Период доминирования аппаратного управления 50-е – начало 60-х годов, можно назвать «эрой аппаратчиков».
С середины 60-х до 80-х годов доминирует микропрограммное управление выполнением команд, воплощающее «эру программистов», основным лозунгом которой было: «Больше команд хороших и разных!». Этот лозунг соответствовал основным требованиям к процессорам того времени:
Минимизация длины кода программы
Упрощение реализации компиляторов за счет снижения семантического разрыва между ЯВУ и машинными командами.
Это вызвало рост набора команд компьютеров за счет увеличения их сложности и увеличения числа форматов от 50 до 300 команд (рекордсменом был Vaх11/780, у него было 303 команды). Компьютеры с большим набором команд и разнообразием их форматов получили название CISC-компьютеров (Complex Instruction Set Computer – машина со сложным набором команд). Для них характерно увеличение сложности и соответственно размеров микропрограммного устройства управления, которое интерпретировало выполнение этих команд. К тому времени благодаря технологическим достижениям тактовая частота процессоров стала достигать 100 Мгц и повышение производительности требовало размещения всех частей процессора на одном кристалле для сокращения длины соединений его элементов. В то же время микропрограммное управление из-за своей сложности стало занимать до шестидесяти процентов площади кристалла, что либо не допускало использования эффективных средств арифметической обработки данных, либо требовало размещения частей процессора на разных кристаллах. Все это приводило к существенному ограничению производительности, увеличивало сроки разработки и снижало выход годных кристаллов.
В 80-х годах рядом исследователей было замечено, что при выполнении большинства программ наиболее активно используется около 30% сравнительно простых команд арифметики и управления. Постепенно стало формироваться направление развития архитектуры компьютеров, требующее чтобы система команд процессора содержала минимальный набор наиболее часто используемых и наиболее простых команд (возврат к примерно 50 командам). Это направление получает название компьютеров с сокращенным набором команд или RISC-компьютеров и имеет лозунг: «Меньше команд, выше скорость выполнения!».
В результате в конце 80-х гг. благодаря развитию технологии производства СБИС и их удешевлению, а также развитию методов и опыта разработки оптимизирующих компиляторов, постепенно сложились основные принципы (или законы) RISC-архитектур:
Основной набор команд не должен интерпретироваться микрокомандами, а должен выполняться аппаратным обеспечением.
Все команды должны иметь одинаковую длину и минимальное число форматов (обычно не более 2–3), это упрощает логику управления при выборе и при исполнении команды.
Любая команда основного набора должна выполняться за один машинный цикл, обратно пропорциональный тактовой частоте процессора (стандартом является команда сложения регистра с регистром, занимающая от 3–10 нс); это достигается одновременным (параллельным) выполнением максимально возможного числа команд путем конвейеризации или использования нескольких обрабатывающих узлов
Обращение к памяти производиться только по специально выделенным командам работы с памятью типа: Load – загрузка и Store – сохранение, а вся обработка данных должна вестись в регистровом формате; при этом количество регистров должно быть велико (100 и более).
Система команд должна обеспечивать поддержку компиляции с конкретного языка программирования (компиляторы для RISC на порядок сложнее, чем компиляторы для CISC).
Немного истории: Идея создания RISC-компьютера впервые была реализована в машинах Cray–1. В 1975 г. сотрудник фирмы IBM John Cook впервые попытался применить RISC-архитектуру при создании модели IBM7095, производительность при этом повысилось в два – три раза. Само название RISC появилось в середине восьмидесятых годах в университете Беркли, где под руководством Дэвида Паттерсона и Карло Секвина была создана машина RISC–1, а затем последовал RISC–2, позже принятый за основу машин семейства SPARC фирмы Sun. Почти одновременно в Стэнфордском университете был разработан процессор MIPS, положивший начало серийному выпуску машин R4000 – R10000 фирмы MIPS.
Затем почти все ведущие производители ЭВМ стали разрабатывать и выпускать машины на основе RISC-архитектур:
Hewlett - Packard – PA7xxx – PA9xxx (PA – Precision Architecture)
DEC – Alpha 21xxx
IBM + Apple – Power PC .
Формат команд и структура процессора RISC–1
В большинстве RISC-процессоров команды являются трехадресными (рис. 5.1)
|
7 |
1 |
5 |
5 |
1 |
13 |
|
КОП |
Усл |
Dest |
SRC1 |
IMM |
SRC2 |
|
31 25 |
24 |
23 19 |
18 14 |
13 |
12 0 |
Рис. 5.1
КОП – код операции.
Усл – бит условия (для команд переходов).
Dest – номер регистра назначения (длина пять бит – NPOH = 32).
SRC1 – номер регистра-источника 1.
SRC2 – номер регистра или непосредственного значения источника 2:
если IMM = 1 SRC2 – непосредственное данное, если IMM = 0 SRC2 – регистр.
В процессоре RISC-1 используется два вида формата команды.
Rd Rs1 oper S2 – для выпонения операций обработки;
Rd M((Rs1) + S2) – для выпонения обмена с памятью.
Шина процессор-память
Кэш команд
АЛУ
Буфер предвыборки
и логика управления Блок Блок
Рг1 Рг2
Логика Регистр Логика
выборки резуль- выборки
Рг1 тата Рг2
Структура процессора RISC -1 показана на рис. 5.2.












