Классификация по составу и сложности команд Если взять в качестве признака классификации состав и сложность команд, то можно выделить следующие системы команд: · полный набор команд (архитектура CISC – Complex Instruction Set Computer); · сокращенный набор команд (архитектура RISC – Reduced Instruction Set Computer); · набор команд сверхбольшой длины (VLIW – Very Long Instruction Word). ЭВМ с архитектурой CISC имеют в своем составе сложные команды, приближающиеся к операторам языков высокого уровня. Основоположником CISC–архитектур является компания IBM со своим семейством S/360. Этот подход фирма продолжила и в последующих семействах S/370, S/390 и т.д. Эта же архитектурабыла реализована в советских ЭВМ семейств ЕС ЭВМ. Такой же подход использует и компания Intel для своих микропроцессоров архитектуры x86. Для CISC-процессоров характерно: 1. Сравнительно небольшое число регистров общего назначения. 2. Большое количество машинных команд, некоторые из которых нагружены семантически аналогично операторам высокоуровневых языков программирования и выполняются за много тактов. 3. Большое количество методов адресации. 4. Большое количество форматов команд различной разрядности. 5. Преобладание двухадресного формата команд. 6. Наличие команд обработки типа «регистр-память», «память-память». ЭВМ с архитектурой CISC имеют достаточно сложный аппаратный состав, главным образом УУ, что негативно сказывается на производительности. Проведенные рядом авторов исследования показали, что доля команд, эквивалентных операторам языков высокого уровня, в объеме программ низка и не превышает 10-20%. В то же время объем аппаратных средств для их реализации весьма велик. Так, например, емкость памяти микропрограмм при поддержании сложных команд может увеличиваться на 60%. Эти недостатки CISC-архитектур и привели к необходимости разработки ЭВМ с сокращенным набором команд или RISC-архитектур . Этот термин впервые был использован Д. Паттерсоном и Д. Дитцелем в 1980 г. Зачатки этой архитектуры уходят своими корнями к ЭВМ CDC6600 (1952г.), разработчики которой (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры С. Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако, окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета. Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались, и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д. Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981 году Дж. Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки. Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд, использовались команды фиксированной длины и фиксированного формата. Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются 32 или большее число регистров по сравнению с 8-32 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило,используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки. Таким образом, для RISC-компьютеров характерными чертами являются: 1. Отделение команд обработки от команд работы с памятью. 2. Реализация конвейерной обработки данных. 3. Реализация как аппаратного, так и микропрограммного принципа управления. 4. Наличие большого числа регистров. 5. Использование преимущественно 3-х адресных команд. 6. Простота архитектуры. Ко времени завершения университетских проектов (1983-1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвержденная этими проектами, вызвали большой интерес в компьютерной индустрии, и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта архитектура прочно занимает лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов. Развитие архитектуры RISC в значительной степени определялось и прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд. В предлагаемой архитектуре используется ограниченный набор команд, наиболее часто используемых в программах и оперирующих данными, размещенными только в регистрах процессора. Для обращения к памяти используются специальные команды чтения и записи. Уменьшение количества форматов команд, способов адресации, отделение операций обработки данных от операций обращения к памяти позволило существенно упростить аппаратные средства ЭВМ и повысить их быстродействие. В простейшем случае время выполнения любой программы можно оценить по следующему выражению: Твып. = Nком. ∙ tпр. ∙ hcpu., | (2.1) | где Nком. – число команд в программе; tпр. – длительность такта процессора; hcpu – среднее количество тактов процессора, приходящееся на одну команду. В RISC-архитектурах сокращаются величины tпр. и hcpu. Примерами RISC-архитектуры являются процессоры SPARC фирмы Sun и PowerPC фирмы IBM. Следует отметить, что в последнее время прослеживается тенденция к сближению архитектур CISC и RISC. Например, компания Intel в своих микропроцессорах использует автоматическую трансляцию CISC-кода в последовательность RISC-команд, которые выполняются RISC-ядром процессора. Набор команд VLIW базируется на RISC-архитектуре. VLIW-машины выдают на выполнение фиксированное количество команд, которые сформатированы либо как одна большая команда, либо как пакет команд фиксированного формата. Планирование работы VLIW-машины всегда осуществляется компилятором. Архитектура VLIW базируется на множестве независимых функциональных устройств. Вместо того, чтобы пытаться параллельно выдавать в эти устройства независимые команды, в таких машинах несколько операций упаковываются в одну очень длинную команду. VLIW-команда может включать, например, две целочисленные операции, две операции с плавающей точкой, две операции обращения к памяти и операцию перехода. Такая команда будет иметь набор полей для каждого функционального устройства, возможно от 16 до 24 бит на устройство, что приводит к команде длиною от 112 до 168 бит. Для машин с VLIW-архитектурой был разработан новый метод планирования выдачи команд, названный «трассировочным планированием». При использовании этого метода из последовательности исходной программы генерируются длинные команды путем просмотра программы за пределами базовых блоков - линейных участков программы без ветвлений. Компилятор с трассировочным планированием определяет участок программы без обратных дуг (переходов назад), который становится кандидатом для составления расписания. Обратные дуги обычно имеются в программах с циклами. Для увеличения размера тела цикла широко используется методика раскрутки циклов, что приводит к образованию больших фрагментов программы, не содержащих обратных дуг. Если имеется программа, содержащая только переходы вперед, компилятор делает эвристическое предсказание выбора условных ветвей. Путь, имеющий наибольшую вероятность выполнения (его называют трассой), используется для оптимизации, проводимой с учетом зависимостей по данным между командами и ограничений аппаратных ресурсов. Во время планирования генерируется длинное командное слово. Все операции длинного командного слова выдаются одновременно и выполняются параллельно. После обработки первой трассы планируется следующий путь, имеющий наибольшую вероятность выполнения (предыдущая трасса больше не рассматривается). Процесс упаковки команд последовательной программы в длинные командные слова продолжается до тех пор, пока не будет оптимизирована вся программа. Ключевым условием достижения эффективной работы VLIW-машины является корректное предсказание выбора условных ветвей. Отмечено, например, что прогноз условных ветвей для научных программ часто оказывается точным. Примерами VLIW-архитектуры являются процессоры Itanium фирмы Intel и процессоры семейства TMS320C62xx фирмы Texas Instruments. |