Архитектуры с полным и сокращенным набором команд

 

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых — облегчить процесс написания программ. Более 90% всего процесса программирования осуществляют на ЯВУ. К сожале­нию, операции, характерные для ЯВУ, отличаются от операций, реализуемых ма­шинными командами. Эта проблема получила название семантического разрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодо­леть семантический разрыв, разработчики ВМ расширяют систему команд, допол­няя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уров­не, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованы эти средства, принято называть ВМ с полным набором команд (CISC – Complex Instruction Set Computer). К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускае­мых в настоящее время.

Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который, как уже отмечалось, является одним из наиболее перспектив­ных путей повышения производительности ВМ. Все это заставило более внима­тельно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований, в результате которых обнаружились интересные закономерности:

· Реализация сложных команд, эквивалентных операторам ЯВУ, требует увели­чения емкости управляющей памяти в микропрограммном УУ. Микропрограм­мы сложных команд могут занимать до 60% управляющей памяти, в то время как их доля в общем объеме программы зачастую не превышает 0,2%.

· В откомпилированной программе операторы ЯВУ реализуются в виде проце­дур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки.

· При вызове процедуры вызывающая программа передает этой процедуре неко­торое количество аргументов. В 98% случаев число передавае­мых аргументов не превышает шести. Примерно такое же положение сложи­лось и с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой, являются локаль­ными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее. Количество локальных переменных, создаваемых отдельной процедурой, в 92% случаев не превышает шести.

· Почти половину операций в ходе вычислений составляет операция присваива­ния, сводящаяся к пересылке данных между регистрами, ячейками памяти или регистрами и памятью.

Детальный анализ результатов исследований привел к серьезному пересмотру традиционных архитектурных решений, следствием чего стало появление архи­тектуры с сокращенным, набором команд (RISC — Reduced Instruction Set Compu­ter). Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.