double arrow

Стековая архитектура

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

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

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

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

В конечном итоге, цель тех и других – реализация вычислений наиболее эффективным образом, то есть за минимальное время, и здесь важнейшую роль играет правильный выбор архитектуры системы команд.

В упрощенной трактовке время выполнения программы (T выч) можно определить через число команд в программе (N ком), среднее количество тактов процессора, приходящихся на одну команду (CPI), и длительность тактового периода :

.

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

Рис. 2.45. Взаимосвязь между системой команд и факторами,

определяющими эффективность вычислений

Сложившуюся на настоящий момент ситуацию в области архитектуры системы команд иллюстрирует рис. 2.46.

Рис. 2.46. Хронология развития архитектур системы команд

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

• архитектуру с полным набором команд: CISC (Complex Instruction Set Computer);

• архитектуру с сокращенным набором команд: RISC (Reduced Instruction Set. Computer);

• архитектуру с командными словами сверхбольшой длины: (Very Long Instruction Word).

В вычислительных машинах типа CISC проблема семантического разрыва решается за счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам языка высокого уровня. Основоположником CISC-архитектуры считается компания IBM, которая начала применять данный подход с семейства машин IBM 360 и продолжает его в своих мощных современных универсальных вычислительных машинах, таких как IBM ES/9000. Аналогичный подход характерен и для компании Intel в ее микропроцессорах серии 8086 и Pentium. К типу CISC можно отнести практически все вычислительные, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время.Для CISC-архитектуры характерно:

• наличие в процессоре сравнительно небольшого числа регистров общего назначения;

• большое количество машинных команд, некоторые из них аппаратно реализуют сложные операторы языка высокого уровня;

• разнообразие способов адресации операндов;

• множество форматов команд различной разрядности;

• наличие команд, где обработка совмещается с обращением к памяти.

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

Идея RISC-архитектуры заключается в ограничении списка команд вычислительной машины наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессорах. Обращение к памяти допускается лишь с помощью специальных команд чтения и записи. Резко уменьшено количество форматов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства вычислительной машины и повысить их быстродействие. RISC-архитектура разрабатывалась таким образом, чтобы уменьшить за счет сокращения и . Как следствие, реализация сложных команд за счет последовательности из простых, но быстрых RISC-команд оказывается не менее эффективной, чем аппаратный вариант сложных команд в CISC-архитектуре.

Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и суперЭВМ компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных вычислительных машинах, например в процессорах Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т.п.

В последних микропроцессорах фирмы Intel и AMD широко используются идеи, свойственные RISC-архитектуре, так что многие различия между CISC и RISC постепенно стираются.

Архитектура с командными словами сверхбольшой длины (VLIW) базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане архитектуры системы команд архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений, в силу чего архитектуру VLIW логичнее адресовать не к вычислительным машинам, а к вычислительным системам.

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

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

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

• стековую;

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

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

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

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

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

Рис. 2.47. Принцип действия стековой памяти

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

Рис. 2.48. Последовательность вычисления выражения

на вычислительной машине со стековой архитектурой

Основные узлы и информационные тракты одного из возможных вариантов вычислительной машины на основе стековой архитектуры системы команд показаны на рис. 2.49.

Рис. 2.49. Архитектура вычислительной машины на базе стека

Информация может быть занесена в вершину стека из памяти или из АЛУ. Для записи в стек содержимого ячейки памяти с адресом x выполняется команда push x, по которой информация считывается из ячейки памяти, заносится в регистр данных, а затем проталкивается в стек. Результат операции из АЛУ заносится в вершину стека автоматически.

Сохранение содержимого вершины стека в ячейке памяти с адресом х производится командой pop x. По этой команде содержимое верхней ячейки стека подается на шину, с которой и производится запись в ячейку х, после чего все содержимое стека проталкивается на одну позицию вверх.

Для выполнения арифметической или логической операции на вход АЛУ подается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, то есть операнды из стека удаляются). Результат операции заталкивается в вершину стека. Возможен вариант, когда результат сразу же переписывается в память с помощью автоматически выполняемой операции pop x.

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: