Архитектуры с полным и сокращенным набором команд
Архитектура процессора и набор команд служат границей между аппаратурой и программным обеспечением и представляет ту часть системы, которая видна программисту или разработчику компиляторов. Программисты, работающие на языках высокого уровня, могут этих различий и не видеть.
Двумя основными архитектурами набора команд, используемыми компьютерной промышленностью на современном этапе развития вычислительной техники являются архитектуры CISC (с большим числом команд) и RISC (с уменьшенным числом команд). Ранее RISC-процессоры определялись как микропроцессоры с количеством команд меньше 128, сейчас же они имеют 200 команд - для сравнения в CISC используется 300 и более команд.
Основой современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд (RISC - Reduced Instruction Set Computer).
Вычислительная архитектура с сокращенным набором машинных команд (RISC) реализует метод компьютерной обработки, использующий правило 80/20, по которому в 80% работы центрального процессора используется только малая часть общего набора команд микропроцессора. Причем наиболее сложные, редко используемые команды, можно заменить несколькими простыми. Создатели RISC-процессоров взяли этот уменьшенный, упрощенный набор команд и объединили его с такими технологиями, как конвейерная и параллельная обработка, которые позволяют микропроцессору выполнять множество команд за один процессорный цикл. В результате получился процессор, который имеет лучшую производительность для большинства приложений и теоретически стоит меньше, поскольку сам он небольшой и его производство обходится дешевле.
Процессоры архитектуры RISC придерживаются наиболее важных отличительных особенностей:
- фиксированной длины команд
- архитектуры регистр-регистр
- простых способов адресации (2 - 3 метода)
- простых (не требующих интерпретации) команд
- большого регистрового файла (регистров > 10)
- трехоперандного (неразрушительного) формата команд
Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры Сеймур Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.
Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981году Дж.Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки.
Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата.
Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются 32 или большее число регистров по сравнению с 8 - 16 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило, используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки.
Ко времени завершения университетских проектов (1983-1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвержденная этими проектами, вызвали большой интерес в компьютерной индустрии и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта архитектура прочно занимает лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов.
Развитие архитектуры RISC в значительной степени определялось прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.
Десять-пятнадцать лет назад RISC-процессоры фирм MIPS, Sun, Hewlett-Packard, а также более новые архитектуры - DEC Alpha и IBM POWER - обгоняли процессоры Intel в разы. Казалось, что архитектура IA-32 (х86) обречена, а будущее целиком и полностью принадлежит RISC-чипам. Правда, выпущенный в 1993 году Pentium довольно близко подобрался к RISC-процессорам в целочисленных тестах, но отставание в вычислениях с плавающей точкой по-прежнему было огромным. Почему же высокопроизводительные RISC-процессоры при такой разнице в производительности не нашли применения в ПК? Для этого были очень веские причины.
- Несовместимость наборов инструкций (ISA). RISC-процессоры обладают несовместимыми с х86 наборами инструкций, поэтому единственным способом исполнения кода х86 была эмуляция. Тогда (впрочем, как и сейчас) эмуляция означала падение производительности от десятков до сотен процентов, что сводило на нет скоростные преимущества RISC-процессоров. Некоторые фирмы выделяли значительные ресурсы на создание эффективных эмуляторов (например, FX!32 для процессоров DEC Alpha), но скорость их работы все же была неудовлетворительной.
- Программное обеспечение. Традиционной операционной системой для ПК была DOS, под которую написано огромное количество популярных и хорошо знакомых пользователям программ. В дальнейшем к DOS присоединились 16-битные версии Microsoft Windows. Различные RISC-платформы обычно использовали несовместимые между собой разновидности Unix, для которых существовало значительно меньше программ, главным образом научно-технических (для рабочих станций) либо сетевых приложений (для серверов).
- Дороговизна RISC-процессоров и систем на их основе. Хотя первоначальная "идея RISC" подразумевала упрощение процессора за счет уменьшения числа команд и их фиксированной длины, реальные RISC-чипы начала 90-х обычно были крупнее и дороже, чем процессоры Intel. Более того, среди них встречались даже целые наборы из микросхем (IBM POWER), поскольку полупроводниковые технологии тех времен не позволяли разместить на одном кристалле столько транзисторов, сколько требовалось. К тому же шина данных этих процессоров частенько была шириной 128 или даже 256 бит (сравним с 32 битами у i486 и 64 битами у Pentium), что означало усложнение чипсета и системной платы. RISC-процессоры предназначались для рабочих станций стоимостью десятки тысяч долларов, поэтому разработчики могли применять схемотехнические решения, слишком дорогие для использования в ПК. Но даже специальные, "дешевые" варианты RISC-компьютеров стоили гораздо дороже сравнимых с ними Intel-ПК по причине малых объемов производства.
- Отсутствие интереса у самих производителей RISC-систем. Многие "серьезные" фирмы вроде DEC или Sun полагали, что нет нужды удешевлять свои RISC-станции, потому что пользователи все равно выберут их системы из-за очевидных технических преимуществ.