Классификация по составу и сложности команд
Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная цель которых – облегчить процесс программирования. Например, для микроконтроллеров (однокристальных микро-ЭВМ) разработчики часто указывают “система команд оптимизирована под С”, так как считается, что сразу после разработки ВМ должны появиться компиляторы с ассемблера и С. Переход к ЯВУ, однако, породил серьезную проблему: сложные операторы, характерные для ЯВУ, существенно отличаются от простых машинных операций, реализуемых в большинстве вычислительных машин. Проблема получила название семантического разрыва, а ее следствием становится недостаточно эффективное выполнение программ на ВМ. Пытаясь это преодолеть, разработчики вычислительных машин в настоящее время выбирают один из трех подходов и, соответственно, один из трех типов АСК:
1. архитектуру с полным набором команд: CISC (Complex Instruction Set Computer);
2. архитектуру с сокращенным набором команд: RISC (Reduced Instruction Set Computer);
3. архитектуру с командными словами сверхбольшой длины: VLIW (Very Long Instruction Word).
В вычислительных машинах типа CISC проблема семантического разрыва решается за счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам ЯВУ. Основоположником CISC-архитектуры считается компания IBM, которая начала применять данный подход с семейства машин IBM-360. Аналогичный подход характерен и для компании Intel в ее микропроцессорах серии 8086 и Pentium. Для CISC-архитектуры типичны:
а. наличие в процессоре сравнительно небольшого числа регистров общего назначения;
б. большое количество машинных команд, некоторые из них аппаратно реализуют сложные операторы ЯВУ;
в. разнообразие способов адресации операндов;
г. множество форматов команд различной разрядности;
д. наличие команд, где обработка совмещается с обращением к памяти.
К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности ВМ в целом.
Анализ результатов исследований системы команд привел к серьезному пересмотру традиционных решений, следствием чего стало появление RISC архитектуры. Термин RISC впервые был использован Д.Паттерсоном и Д.Дитцелем в 1980 году. Идея заключается в ограничении списка команд ВМ наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессорах. Обращение к памяти допускается лишь помощью специальных команд чтения и записи. Резко уменьшено количество форматов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства ВМ и повысить их быстродействие. RISC-архитектура разрабатывалась таким образом, чтобы уменьшить время вычисления команды за счет сокращения количества тактов на одну команду и длительности такта процессора. Как следствие, реализация сложных команд за счет последовательности из простых, но быстрых RISC-команд оказывается не менее эффективной, чем аппаратный вариант сложных команд в CISC-архитектуре.
Элементы RISC-архитектуры впервые появились в вычислительных машинах компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных ВМ, например в процессорах Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т. п.
Отметим, что в последних микропроцессорах фирмы Intel и AMD широко используются идеи, свойственные RISC-архитектуре, так что многие различия между CISC и RISC постепенно стираются. Например, у современных микроконтроллеров, построенных по принципу RISC-архитектуры, число команд значительно превышает 100 [3] (правда, можно отметить, что современные компьютеры на базе процессоров Pentium и более поздних, имеют набор несколько сотен команд).
Помимо CISC- и RISC-архитектур в общей классификации был упомянут еще один тип АСК – архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений, в силу чего архитектуру VLIW логичнее адресовать не к вычислительным машинам, а к вычислительным системам.