- •Глава 9
- •Синхронные линейные конвейеры
- •Метрики эффективности конвейеров
- •Нелинейные конвейеры
- •Конвейер команд
- •Конфликты в конвейере команд
- •Методы решения проблемы условного перехода
- •Предсказание переходов
- •Статическое предсказание переходов
- •Динамическое предсказание переходов
- •Суперконвейерные процессоры
- •Архитектуры с полным и сокращенным набором команд
- •Основные черты risc-архитектуры
- •Регистры в risc-процессорах
- •Преимущества и недостатки risc
- •Суперскалярные процессоры
- •Особенности реализации суперскалярных процессоров
- •Стратегии выдачи и завершения команд
- •Аппаратная поддержка суперскалярных операций
- •Переименование регистров
- •Переупорядочивание команд
- •Контрольные вопросы
Архитектуры с полным и сокращенным набором команд
Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых —облегчить процесс написания программ. Более 90% всего процесса программирования осуществляют на ЯВУ. К сожалению, операции, характерные для ЯВУ, отличаются от операций, реализуемых машинными командами. Эта проблема получила название семантического разрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодолеть семантический разрыв, разработчики ВМ расширяют систему команд, дополняя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уровне, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованы эти средства, принято называть ВМ с полным набором команд (CISC — Complex Instruction Set Computer). К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускаемых в настоящее время.
Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который, как уже отмечалось, является одним из наиболее перспективных путей повышения производительности ВМ. Все это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ, Был предпринят комплекс исследований [128,158,177,178,209], в результате которых обнаружились интересные закономерности:
■ Реализация сложных команд, эквивалентных операторам ЯВУ, требует увеличения емкости управляющей памяти в микропрограммном УУ. Микропрограммы сложных команд могут занимать до 60% управляющей памяти, в то время как их доля в общем объеме программы зачастую не превышает 0,2%.
■ В откомпилированной программе операторы ЯВУ реализуются в виде процедур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки.
■ При вызове процедуры вызывающая программа передает этой процедуре некоторое количество аргументов. Согласно [209], в 98% случаев число передаваемых аргументов не превышает шести. Примерно такое же положение сложилось и с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой [177,178], являются локальными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее. Количество локальных переменных, создаваемых отдельной процедурой, в 92% случаев не превышает шести [209].
■ Почти половину операций в ходе вычислений составляет операция присваивания, сводящаяся к пересылке данных между регистрами, ячейками памяти или регистрами и памятью.
Детальный анализ результатов исследований привел к серьезному пересмотру традиционных архитектурных решений, следствием чего стало появление «архитектуры с сокращенным набором команд (RISC — Reduced Instruction Set Computer) Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.
