56 Глава 2. Архитектура системы команд
помощью специальных команд чтения и записи. Резко уменьшено количество фор­матов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства ВМ и повысить их быстродействие. RISC-архитектура разрабатывалась таким образом, чтобы уменьшить выч за счет со­кращения CPI и τ,ιρ. Как следствие, реализация сложных команд за счет последова­тельности из простых, но быстрых RISC-команд оказывается не менее эффективной, чем аппаратный вариант сложных команд в CISC-архитектуре.
Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и суперЭВМ компании Cray Research. Достаточно успешно реализует­ся RISC-архитектура и в современных ВМ, например в процессорах Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т. п.
Отметим, что в последних микропроцессорах фирмы Intel и AMD широко ис­пользуются идеи, свойственные RISC-архитектуре, так что многие различия меж­ду CISC и RISC постепенно стираются.
Помимо CISC- и RISC-архитектур в общей классификации был упомянут еще один тип АСК — архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появил­ся лишь дополнительный уровень параллелизма вычислений, в силу чего архитек­туру VLIW логичнее адресовать не к вычислительным машинам, а к вычислитель­ным системам.
Таблица 2.1. Сравнительная оценка CISC-, RISC- и VUW-архитектур
Характеристика
CISC
RISC
VIJW
Длина команды
Варьируется
Единая
Единая
Расположение полей в команде
Варьируется
Неизменное
Неизменное
Количество регистров
Несколько (часто специализированных)
Много регистров общего назначения
Много регистров общего назначения
Доступ к памяти
Может выполняться как часть команд различных типов
Выполняется только специальными коман­дами
Выполняется толь­ко специальными командами -
Таблица 2.1 позволяет оценить наиболее существенные различия в архитекту­рах типа CISC, RISC и VLIW.
Классификация по месту хранения операндов
Количество команд и их сложность, безусловно, являются важнейшими фактора­ми, однако не меньшую роль при выборе АСК играет ответ на вопрос о том, где могут храниться операнды и каким образом к ним осуществляется доступ. С этих позиций различают следующие виды архитектур системы команд:
ш ·стековую;
Ш · аккумуляторную;
Классификация архитектур системы команд 57
, · регистровую; • с выделенным доступом к памяти.
Выбор той или иной архитектуры влияет на принципиальные моменты: сколь­ко адресов будет содержать адресная часть команд, какова будет длина этих адре­сов, насколько просто будет происходить доступ к операндам и какой, в конечном итоге, будет общая длина команд!
Стековая архитектура
Стеком называется память, по своей структурной организации отличная от ос­новной памяти ВМ. Принципы построения стековой памяти детально рассматри­ваются позже, здесь же выделим только те аспекты, которые требуются для пояс­нения особенностей АСК на базе стека.
Стек образует множество логически взаимосвязанных ячеек (рис. 2.4), вза­имодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).
Рис.2.4. Принцип действия стековой памяти
Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмот­рены две операции: push (проталкивание данных в стек) ирор (выталкивание дан­ных из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хра­нящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информа­ция удаляется из стека, а оставшееся его содержимое продвигается вверх. В вы­числительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стеко­вой памяти. Результат операции заносится в стек. Принцип действия стековой машины поясним на примере вычисления выражения а = а + b + ay. с.
При описании вычислений с использованием стека обычно используется иная форма записи математических выражений, известная как обратная польская за­пись (обратная польская нотация), которую предложил польский математик Я. Лу­кашевич. Особенность ее в том, что в выражении отсутствуют скобки, а знак опе­рации располагается не между операндами, а следует за ними (постфиксная форма). Последовательность операций определяется их приоритетами (табл. 2.2).
Таблица 2.2. Приоритеты операций в обратной польской нотации
58 Глава 2. Архитектура системы команд Таблица 2.2 (продолжение)
Операция
Символ операции
Приоритет
Сложение | вычитание
+ |-
2
Умножение деление
*/
3
Возведение в степень
**
4
При преобразовании традиционной записи выражения в постфиксную исполь­зуется логическая структура, аналогичная стеку, которую, чтобы не путать ее со стеком вычислительной машины, назовем стеком последовательности операций (СПО). Формирование выходной строки с выражением в обратной польской но­тации осуществляется в соответствии со следующим алгоритмом:
1.    Исходная строка с выражением просматривается слева направо.
2.    Операнды переписываются в выходную строку.
3.   Знаки операций заносятся в СПО по следующим правилам:
•    если СПО пуст, то операция из входной строки переписывается в СПО;
•    операция выталкивает из СПО в выходную строку все операции с большим или равным приоритетом;
•    если очередной символ из исходной строки есть открывающая скобка, то он проталкивается в СПО;
•    закрывающая круглая скобка выталкивает все операции из СПО до ближай­шей открывающей скобки, сами скобки в выходную строку не переписыва­ются , а уничтожают друг друга.
Процесс получения обратной польской записи для правой части выражения а ш а +Ь + а с представлен в табл. 2.3.
Таблица 2.3. Формирование обратной польской записи для выражения а = а + Ь + ахс
Просматриваемый символ
1
2
3
4
5
6
7
8
9
Входная строка
а
+
b
+
а
X
с
Состояние стека последовательности операций
+
+
X
+
+
Выходная строка
а
b
+
а
с
X
+
Таким образом, рассмотренное выше выражение в польской записи имеет вид: а = ab+acx+. Данная форма записи однозначно определяет порядок загрузки опе­рандов и операций в стек (рис. 2.5).
push а
push b
add
push a
push с
mul
add
pop a
а
b
a+b
a
с
a*c
a+b+a*c
а
a+b
a
a+b
a+b
Рис. 2.5. Последовательность вычисления выражения a -ab+acx+ на вычислительной машине
со стековой архитектурой
Классификация архитектур системы команд 5 9
Рис. 2.6. Архитектура вычислительной машины на базе стека
Основные узлы и информационные тракты одного из возможных вариантов ВМ на основе стековой АСК показаны на рис. 2.6.
Информация может быть занесена в вершину стека из памяти или из АЛУ. Для Записи в стек содержимого ячейки памяти с адресом г выполняется команда^ш7г х, До которой информация считывается из ячейки памяти, заносится в регистр дан­ных, а затем проталкивается в стек. Результат операции из АЛУ заносится в вер­шину                       стека                    автоматически.
у- Сохранение содержимого вершины стека в ячейке памяти с адресом х произво­дится командой pop х. По этой команде содержимое верхней ячейки стека подает­ся на шину, с которой и производится запись в ячейку х, после чего вся находяща­яся в стеке информация проталкивается на одну позицию вверх. ■ ' Для выполнения арифметической или логической операции на вход АЛУ по­ддается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, то есть операнды из стека удаляются). ^Результат операции заталкивается в вершину стека. Возможен вариант, когда ре­зультат сразу же переписывается в память с помощью автоматически выполняе­мой операции pop х.
■у' Верхние ячейки стековой памяти, где хранятся операнды и куда заносится ре-;%льтат операции, как правило, делаются более быстродействующими и размеща-3 ются в процессоре, в то время как остальная часть стека может располагаться в ос­новной памяти и частично даже на магнитном диске.
h-\> К достоинствам АСК на базе стека следует отнести возможность сокращения :адресной части команд, поскольку все операции производятся через вершину сте-'■t то есть адреса операндов и результата в командах арифметической и логичес-j кой обработки информации указывать не нужно. Код программы получается ком­пактным. Достаточно просто реализуется декодирование команд. $?- С другой стороны, стековая АСК по определению не предполагает произволь­ного доступа к памяти, из-за чего компилятору трудно создать эффективный про-
60 Глава 2. Архитектура системы команд
граммный код, хотя создание самих компиляторов упрощается. Кроме того, стек становится «узким местом» ВМ в плане повышения производительности. В силу упомянутых причин, данный вид АСК долгое время считался неперспективным и встречался, главным образом, в вычислительных машинах 1960-х годов, напри­мер в ВМ фирмы Burroughs (В5500, В6500) или фирмы Hewlett-Packard (НР2116В, HP 3000/70).
Последние события в области вычислительной техники свидетельствуют о воз­рождении интереса к стековой архитектуре ВМ. Связано это с популярностью язы­ка Java и расширением сферы применения языка Forth, семантике которых наибо­лее близка именно стековая архитектура. Среди современных ВМ со стековой АСК можно упомянуть машины JEM 1 и JEM 2 компании ajile Systems и Clip фирмы Imsys. Особо следует отметить стековую машину IGNITE компании Patriot Scien­tist, которую ее авторы считают представителем нового вида АСК — 'архитекту­рой с безоперандным набором команд. Для обозначения таких ВМ они предлагают аббревиатуру ROSC (Removed Operand Set Computer). ROSC-архитектура зало­жена и в некоторые российские проекты, например разработки ИТФ «Технофорт». Строго говоря, по своей сути ROSC мало отличается от традиционной архитекту­ры на базе стека, и выделение ее в отдельный вид представляется не вполне обо­снованным.
Аккумуляторная архитектура
Архитектура на базе аккумулятора исторически возникла одной из первых. В ней для хранения одного из операндов арифметической или логической операции в процессоре имеется выделенный регистр — аккумулятор. В этот же регистр зано­сится и результат операции. Поскольку адрес одного из операндов предопределен, в командах обработки достаточно явно указать местоположение только второго операнда. Изначально оба операнда хранятся в основной памяти, и до выполнения операции один из них нужно загрузить в аккумулятор. После выполнения коман­ды обработки результат находится в аккумуляторе и, если он не является операн­дом для последующей команды, его требуется сохранить в ячейке памяти.
Типичная архитектура ВМ на базе аккумулятора показана на рис. 2.7.
Для загрузки в аккумулятор содержимого ячейки х предусмотрена команда за­грузки loadx.Ho этой команде информация считывается из ячейки памятих, вы­ход памяти подключается к входам аккумулятора и происходит занесение считан­ных данных в аккумулятор.
Запись содержимого аккумулятора в ячейку х осуществляется командой со­хранения store х, при выполнении которой выходы аккумулятора подключаются к шине, после чего информация с шины записывается в память.
Для выполнения операции в АЛУ производится считывание одного из операн­дов из памяти в регистр данных. Второй операнд находится в аккумуляторе. Вы­ходы регистра данных и аккумулятора подключаются к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.
Достоинствами аккумуляторной АСК можно считать короткие команды и про­стоту декодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.                                                       ,
Классификация архитектур системы команд 61
Рис. 2.7. Архитектура вычислительной машины на базе аккумулятора
АСК на базе аккумулятора была популярна в ранних ВМ, таких, например, как IBM 7090, DEC PDP-8, MOS 6502.
Регистровая архитектура
В машинах данного типа процессор включает в себя массив регистров (регистро­вый файл), известных как регистры общего назначения (РОН). Эти регистры, в каком-то смысле, можно рассматривать как явно управляемый кэш для хране­ния недавно использовавшихся данных.
Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления но­мера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISC-архитектурапредполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.
Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного раз­мещения операндов в рамках регистровых АСК выделяют три подвида команд обработки:
•     регистр-регистр;
•    регистр-память;
•    память-память.
В варианте «регистр-регистр» операнды могут находиться только в регистрах. В них же засылается и результат. Подтип «регистр-память» предполагает, что один
62 Глава 2. Архитектура системы команд
из операндов размещается в регистре, а второй в основной памяти. Результат обыч­но замещает один из операндов. В командах типа «память-память» оба операнда хранятся в основной памяти. Результат заносится в память. Каждому из вариан­тов свойственны свои достоинства и недостатки (табл. 2.4).
Таблица 2.4. Сравнительная оценка вариантов размещения операндов
Вариант
Достоинства
Недостатки
Регистр-регистр (0,3)
Простота реализации, фиксиро­ванная длина команд, простая модель формирования объект­ного кода при компиляции программ, возможность выполне­ния всех команд за одинаковое количество тактов
Большая длина объектного кода, из-за фиксированной длины команд часть разрядов в коротких командах не используется
Регистр-память (1.2)
Данные могут быть доступны без загрузки в регистры процессора, простота кодирования команд, объектный код получается достаточно компактным
Потеря одного из операндов при записи результата, длинное поле адреса памяти в коде команды сокращает место под номер регистра, что ограничивает общее число РОН. CPI зависит от места размещения операнда
Память-память (3,3)
Компактность объектного кода, малая потребность в регистрах для хранения промежуточных данных
Разнообразие форматов команд и времени их исполнения,низкое быстродействие из-за обращения к памяти
В выражениях вида (т, п), приведенных в первом столбце таблицы, т означает количество операндов, хранящихся в основной памяти, а и - общее число операн­дов в команде арифметической или логической обработки.
Вариант «регистр-регистр» является основным в вычислительных машинах типа RISC. Команды типа «регистр-память» характерны для CISC-машин. Нако­нец, вариант «память-память» считается неэффективным, хотя и остается в наи­более сложных моделях машин класса CISC.
Возможную структуру и информационные тракты вычислительной машины с регистровой архитектурой системы команд иллюстрирует рис. 2.8.
Операции загрузки регистров из памяти и сохранения содержимого регистров в памяти идентичны таким же операциям с аккумулятором. Отличие состоит в этапе выбора нужного регистра, обеспечиваемого соответствующими селекторами.
Выполнение операции в АЛУ включает в себя:
•   выбор регистра первого операнда;
•   определение расположения второго операнда (память или регистр);
•   подачу на вход АЛУ операндов и выполнение операции;
•   выбор регистрарезультата и занесение в него результата операции из АЛУ.
Обратим внимание на то, что между АЛУ и регистровым файлом должны быть по(крайней мере три шины.
Классификация архитектур системы команд 63
Рис. 2.8. Архитектура вычислительной машины на базе регистров общего назначения
К достоинствам регистровых АСК следует отнести: компактность получаемого кода, высокую скорость вычислений за счет замены обращений к основной памя­ти на обращения к быстрым регистрам. С другой стороны, данная архитектура тре­бует более длинных инструкций по сравнению с аккумуляторной архитектурой.
Примерами машин на базе РОН могут служить CDC 6600, IBM 360/370, PDP-11, все современные персональные компьютеры. Правомочно утверждать, что в наши дни этот вид архитектуры системы команд является преобладающим.
Архитектура с выделенным доступом к памяти
В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: loadu store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и но­мер регистра). Пересылка информации в противоположном направлении произ­водится командой store (сохранение). Операнды во всех командах обработки ин­формации могут находиться только в регистрах процессора (чаще всего в регистрах общего назначения). Результат операции также заносится в регистр. В архитекту­ре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. Допускается наличие в АСК ограниченного числа команд, где операнд является частью кода команды.
Состав и информационные тракты ВМ с выделенным доступом к памяти пока­заны на рис. 2.9. Две из трех шин, расположенных между массивом РОН и АЛУ,
Hosted by uCoz