Сравнительная оценка CISC-, RISC- и VLIW-архитектур

Характеристика CISC RISC VLIW
Длина команды Варьируется Единая Единая
Расположение полей в команде Варьируется Неизменное Неизменное
Количество регистров Несколько (часто специализированных) Много регистров общего назначения Много регистров общего назначения
Доступ к памяти Может выполняться как часть команд различных типов Выполняется только специальными командами Выполняется только специальными командами

Классификация по месту хранения операндов

Количество команд и их сложность, безусловно, являются важнейшими фактора ми, однако не меньшую роль при выборе АСК играет ответ на вопрос о том, где могут храниться операнды и каким образом к ним осуществляется доступ.

С этих позиций различают следующие виды архитектур системы команд:

- стековую;

- аккумуляторную;

- регистровую;

- с выделенным доступом к памяти.

Выбор той или иной архитектуры влияет на принципиальные моменты:

- сколько адресов будет содержать адресная часть команд;

- какова будет длина этих адресов;

- насколько просто будет происходить доступ к операндам;

- какой будет общая длина команд.

Стековая архитектура. Стеком называется память, по своей структурной организации отличная от основной памяти ВМ.

Стек образует множество логически взаимосвязанных ячеек, взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).

Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. В вычислительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стековой памяти. Результат операции заносится в стек.

К достоинствам АСК на базе стека следует отнести возможность сокращения адресной части команд, поскольку все операции производятся через вершину стека, то есть адреса операндов и результата в командах арифметической и логической обработки информации указывать не нужно. Код программы получается компактным. Достаточно просто реализуется декодирование команд.

С другой стороны, стековая АСК по определению не предполагает произвольного доступа к памяти, из-за чего компилятору трудно создать эффективный программный код, хотя создание самих компиляторов упрощается.

Кроме того, стек становится «узким местом» ВМ в плане повышения производительности. В силу упомянутых причин, данный вид АСК долгое время считался неперспективным и встречался, главным образом, в вычислительных машинах 1960-х годов, например в ВМ фирмы Burroughs (B5500, В6500) или фирмы Hewlett-Packard (HP2116В, HP 3000/70).

Последние события в области вычислительной техники свидетельствуют о возрождении интереса к стековой архитектуре ВМ. Связано это с популярностью языка Java и расширением сферы применения языка Forth, семантике которых наиболее близка именно стековая архитектура.

Аккумуляторная архитектура

Архитектура на базе аккумулятора исторически возникла одной из первых.

В ней для хранения одного из операндов арифметической или логической операции в процессоре имеется выделенный регистр — аккумулятор.

В этот же регистр заносится и результат операции.

Поскольку адрес одного из операндов предопределен, в командах обработки достаточно явно указать местоположение только второго операнда.

Изначально оба операнда хранятся в основной памяти, и до выполнения операции один из них нужно загрузить в аккумулятор. После выполнения команды обработки результат находится в аккумуляторе и, если он не является операндом для последующей команды, его требуется сохранить в ячейке памяти.

Для выполнения операции в АЛУ производится считывание одного из операндов из памяти в регистр данных. Второй операнд находится в аккумуляторе. Выходы регистра данных и аккумулятора подключаются к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.

Достоинствами аккумуляторной АСК можно считать короткие команды и простоту декодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.

АСК на базе аккумулятора была популярна в ранних ВМ, таких, например, как IBM 7090.

Регистровая архитектура

B машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения (РОН). Эти регистры, в каком-то смысле, можно рассматривать как явно управляемый кэш для хранения недавно использовавшихся данных.

Размер регистров обычно фиксирован и совпадает с размером машинного слова.

К любому регистру можно обратиться, указав его номер.

Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32). Для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата).

RISC-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.

Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки:

- регистр-регистр;

- регистр-память;

- память-память.

В варианте «регистр-регистр» операнды могут находиться только в регистрах. В них же засылается и результат. Подтип «регистр-память» предполагает, что один из операндов размещается в регистре, а второй в основной памяти. Результат обычно замещает один из операндов. В командах типа «память-память» оба операнда хранятся в основной памяти. Результат заносится в память. Каждому из вариантов свойственны свои достоинства и недостатки (табл. 2.4).

Таблица Сравнительная оценка вариантов размещения операндов

Вариант Достоинства Недостатки
Регистр-регистр (0,3) Простота реализации, фиксированная длина команд; простая модель формирования объектного кода при компиляции программ, возможность выполнения всех команд за одинаковое количество тактов. Большая длина объектного кода, из-за фиксированной длины команд часть разрядов в коротких командах не используется.
Регистр-память (1,2) Данные могут быть доступны без загрузки в регистры процессора, Простота кодирования команд Объектный код получается достаточно компактным Потеря одного из операндов при записи результата, Длинное поле адреса памяти в коде команды сокращает место под номер регистра, что ограничивает общее число РОН, CPI зависит от места размещения операнда
Память-память (3,3) Компактность объектного кода Малая потребность в регистрах для хранения промежуточных данных Разнообразие форматов команд и времени их исполнения Низкое быстродействие из-за обращений к памяти

В выражениях вида (m,n), приведенных в первом столбце таблицы, m означает количество операндов, хранящихся в основной памяти, а n — общее число операндов в команде арифметической или логической обработки.

Вариант «регистр-регистр» является основным в вычислительных машинах типа RISC.

Команды типа «регистр-память» характерны для CISC-машин.

Вариант «память-память» считается неэффективным, хотя и остается в наиболее сложных моделях машин класса CISC.

Операции загрузки регистров из памяти и сохранения содержимого регистров в памяти идентичны таким же операциям с аккумулятором. Отличие состоит в этапе выбора нужного регистра, обеспечиваемого соответствующими селекторами.

Выполнение операции в АЛУ включает в себя:

- выбор регистра первого операнда;

- определение расположения второго операнда (память или регистр);

- подачу на вход АЛУ операндов и выполнение операции;

- выбор регистра результата и занесение в него результата операции из АЛУ.

Между АЛУ и регистровым файлом должны быть, по крайней мере, три шины.

К достоинствам регистровых АСК следует отнести:

- компактность получаемого кода,

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

Недостатки:

- данная архитектура требует более длинных инструкций по сравнению с аккумуляторной архитектурой.

Примерами машин на базе РОН могут служить IBM 360/370, все современные персональные компьютеры. В наши дни этот вид архитектуры системы команд является преобладающим.

Наши рекомендации