Архитектура системы команд

 

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

 

Рис.20. Архитектура системы команд как интерфейс

между программным и аппаратным обеспечением

 

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

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

Tвыч=NкомCPInp.

 

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

 

Рис.21. Взаимосвязь между системой команд и факторами, определяющими эффективность вычислений

 

Общая характеристика архитектуры системы команд вычислительной машины определяется следующими факторами:

1. Какого вида данные будут представлены в вычислительной машине и в

какой форме?

2. Где эти данные могут храниться помимо основной памяти?

3. Каким образом будет осуществляться доступ к данным?

4. Какие операции могут быть выполнены над данными?

5. Сколько операндов может присутствовать в команде?

6. Как будет определяться адрес очередной команды?

7. Каким образом будут закодированы команды?

Рассмотрим наиболее распространенные архитектуры системы команд, как в описательном плане, так и с позиций эффективности. Далее приводятся доступные статистические данные, позволяющие дополнить качественный анализ различных АСК количественными показателями. Большинство представленных статистических данных почерпнуто из общепризнанного источника — публикаций Д. Хеннеси и Д. Паттерсона приведенных в [2]. Данные были получены в результате реализации на вычислительной машине DEC VAX трех программных продуктов: компилятора с языка С GCC, текстового редактора ТеХ и системы автоматизированного проектирования Spice. Считается, что GCC и ТеХ показательны для программных приложений, где превалируют целочисленные вычисления и обработка текстов, a Spice может рассматриваться как типичный представитель вычислений с вещественными числами. С учетом того, что архитектура вычислительной машины VAX в известном смысле уже устарела, Хеннеси и Паттерсоном, а также приверженцами их методики были проведены дополнительные исследования, где программы GCC, Spice и ТеХ выполнялись на более современной ВМ, в частности MIPS R2000. Доступные данные для этого варианта также приводятся.

 

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

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

 

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

 

 

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

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

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная цель которых — облегчить процесс программирования. Переход к ЯВУ, однако, породил серьезную проблему: сложные операторы, характерные для ЯВУ, существенно отличаются от простых машинных операций, реализуемых в большинстве вычислительных машин. Проблема получила название семантического разрыва, а ее следствием становится недостаточно эффективное выполнение программ на ВМ. Пытаясь преодолеть семантический разрыв, разработчики вычислительных машин в настоящее время выбирают один из трех подходов и, соответственно, один из трех типов АСК:

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

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

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

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

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

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

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

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

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

К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности ВМ в целом. Это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований , в результате которых обнаружилось, что доля дополнительных команд, эквивалентных операторам ЯВУ, в общем объеме программ не превышает 10-20%, а для некоторых наиболее сложных команд даже 0,2%. В то же время объем аппаратных средств, требуемых для реализации дополнительных команд, возрастает весьма существенно. Так, емкость микропрограммной памяти при поддержании сложных команд может увеличиваться на 60%.

Детальный анализ результатов упомянутых исследований привел к серьезному пересмотру традиционных решений, следствием чего стало появление RISC-архитектуры. Идея заключается в ограничении списка команд ВМ наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессорах. Обращение к памяти допускается лишь с помощью специальных команд чтения и записи. Резко уменьшено количество форматов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства ВМ и повысить их быстродействие. Термин RISC впервые был использован Д. Паттерсоном и Д. Дит-Целем в 1980 году. 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 логичнее адресовать не к вычислительным машинам, а к вычислительным системам.

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

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

 

Таблица 1. позволяет оценить наиболее существенные различия в архитектурах типа CISC, RISC и VLIW.

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

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

· стековую;

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

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

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

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