
Существует два подхода к повышению производительности компьютера: создание машин с архитектурой CISC (Complex Instruction Set Computer — компьютер со сложным набором команд) и RISC (Reduced Instruction Set Computer — компьютер с сокращенным набором команд). Оба подхода обладают достоинствами и недостатками, поэтому в последних процессорах, например Pentium IV, принято компромиссное решение.
В компьютерах с архитектурой CISC увеличение производительности достигается за счет расширения числа аппаратно и микропрограммно реализуемых операций. Считалось, что расширение системы команд за счет включения в нее все более сложных операций представляет один из признанных архитектурных принципов повышения быстродействия процессора, поэтому все мощные компьютеры строились с архитектурой CISC. Для такой архитектуры характерно:
большое число машинных операций (именно поэтому архитектура и названа CISC), некоторые из которых для своего выполнения требуют нескольких тактов, так как для реализации этих операций широко используется принцип микропрограммирования;
разнообразие способов адресации, часто приводящих к необходимости нескольких обращений в память при выполнении одной команды;
преобладание двухадресных команд, причем в команде прямо указывается адрес памяти (или регистра), куда следует поместить результат;
наличие сравнительно небольшого числа регистров общего назначения, что вызвано ограничениями на длину команды;
широкое использование микрокомандного принципа управления.
Однако введение в систему команд таких команд, которые для своего выполнения требуют нескольких машинных тактов, имеют различную длину и используют разные способы адресации, сильно усложняет логику управления и весь процессор в целом. На пути повышения производительности машины за счет расширения системы ее команд возникает, таким образом, ряд трудностей.
Во-первых, реализовать сложную систему команд с помощью только аппаратных средств довольно трудно, поэтому для ее реализации почти всегда используют микропрограммные средства, т.е. дополнительную память с соответствующими каждой сложной операции микропрограммами. В этом случае каждая команда выполняется как бы за два этапа: первый этап связан с получением команды и операндов из памяти, а второй — с выполнением микропрограммы, хранящейся в памяти микропрограмм. Такое двухэтапное выполнение команды замедляет ее выполнение.
Во-вторых, микропрограммы «сложных» команд занимают значительную часть управляющей памяти.
В-третьих, аппаратная реализация редко встречающихся операций не приводит к заметному увеличению быстродействия процессора, но значительно усложняет его структуру и отдельных интегральных схем.
В-четвертых, усложнение интегральных схем означает увеличение числа вентилей и длины проводников, т. е. ведет к увеличению задержек сигналов, а следовательно, к снижению скорости выполнения операций.
Все это обусловило появление архитектуры с сокращенным набором команд — RISC-архитектуры, в которой команды извлекаются из памяти в виде равномерного потока, а процессор постоянно загружен. Для повышения быстродействия при сокращении набора команд служат следующие основные предпосылки:
подавляющее большинство команд (более 90 %) при решении определенной задачи образует компактное множество; команды, не входящие в это множество, при решении данной задачи встречаются чрезвычайно редко;
сравнительно небольшой набор команд можно эффективно реализовать аппаратными средствами так, что каждая операция реализуется за один такт;
для современного этапа развития технологии характерно заметное уменьшение различия в быстродействии оперативной и постоянной памяти микропрограмм, что делает многоуровневый принцип программирования нецелесообразным;
современный уровень развития технологии позволяет на одном кристалле микропроцессора размещать большое число регистров, так называемый регистровый пул, а это делает возможным обращение к регистрам, а не к оперативной памяти. Для RISC-процессоров характерно:
малое число операций, причем каждая из них выполняется аппаратными средствами строго за один такт;
постоянный формат команд, что ускоряет расшифровку команд и делает возможным быстро получать их из памяти (обычно число форматов команд и способов адресации не превышает четырех);
преобладание трехадресных команд;
неразрушающий принцип обращения к ОП, т.е. полученный результат выполненной операции не затирает значения операнда в памяти, а помещается в отдельный регистр;
разделение команд обработки (эти команды имеют формат RR) и обмена с памятью (формат RS), причем команды обмена с памятью выполняются независимым блоком;
наличие большого регистрового пула, т. е. число регистров общего назначения составляет не менее 32, а в большинстве современных RISC-компьютеров 256 (известны компьютеры и с большим числом регистров);
использование принципа «жесткой» логики для схем управления процессором.
Система команд RISC-процессора включает в себя небольшое (по сравнению с CISC) число операций и использует ограниченное число способов адресации; к этим командам относятся команды работы с памятью, копирования и некоторых арифметических операций. Поскольку число команд небольшое, то длина программы увеличивается и, как показали исследования, она становится примерно на 30 % длиннее аналогичной программы CISC-компьютера.
Команды обращения к памяти выполняются отдельным блоком и служат для загрузки регистров процессора, число которых может достигать нескольких десятков и даже сотен. Очень важно, что загрузка регистров из памяти, а также передача их содержимого в память осуществляется совершенно независимо от работы собственно процессора. Все регистры объединены в несколько перекрывающихся окон — регистры одного из окон загружаются из памяти, в то время как регистры из другого окна служат для работы с процессором. Перекрытие окон обеспечивает возможность непрерывного размещения команд и взаимодействия процессора со средствами загрузки. Большое число регистров дает неоспоримые преимущества, но усложняет схемы декодирования номера регистра, что приводит к некоторому увеличению времени обращения к ним.
Команды RISC-процессора обычно имеют фиксированный формат, что позволяет извлекать команду из памяти за одно обращение. Однако фиксированный формат исключает прямую адресацию памяти. Дешифрация кода операции, осуществляемая исключительно аппаратными средствами, также выполняется за один такт. Такие процессоры используют трехадресные операционные команды типа RR и содержат кэш-памяти достаточно большого объема. Все это приводит к ускорению выполнения программ, несмотря на то что их длина (т. е. число команд) несколько увеличивается.
В RISC-процессорах реализуются средства повышения производительности, характерные для CISC-систем: суперскалярность (несколько команд выполняются за один машинный такт) и предсказание переходов.
Для RISC-процессоров характерно наличие средств поддержки мультипроцессности и компиляторов, позволяющих выполнять оптимизацию программ. Кроме того, на компилятор возлагаются дополнительные функции по контролю над вычислительным процессом, в том числе:
распределение регистров, уменьшающее число команд пересылки данных между регистрами и памятью;
защита памяти;
контроль переполнения;
предотвращение блокировок конвейеров и т. п.
Компилятор должен так формировать программу, чтобы признаки результата использовались не следующей по порядку командой, а через одну (или две).
В настоящее время большинство процессоров персональных компьютеров выполняют в виде одной или, реже, нескольких интегральных схем, которые принято делить на процессоры общего назначения и специализированные. К числу процессоров общего назначения относятся популярные процессоры Pentium фирмы Intel, большинство процессоров фирмы AMD, а также фирмы Apple. Из-за большой сложности таких процессоров число изготавливающих их фирм очень мало. Процессоры персональных компьютеров изготавливаются в виде БИС и требуют сложнейшего оборудования стоимостью в сотни миллионов долларов.
Для повышения производительности в микропроцессорах персональных компьютеров используют технические решения, подобные тем, что применяются в современных быстродействующих RISC-процессорах. Наиболее часто для повышения производительности процессоров в персональных компьютерах используют:
суперскалярную обработку данных, предусматривающую запуск и параллельное выполнение нескольких команд из одной программы;
увеличение разрядности шины для передачи данных и команд между процессором и памятью до 64 бит, а иногда и больше;
внутреннюю кэш-память команд и данных первого уровня достаточно большой емкости;
внешнюю кэш-память второго уровня, емкость которой составляет несколько сотен килобайт.
Кроме того, в большинстве этих микропроцессоров предусматривается:
изменение последовательности выполнения команд, т.е. выполнение команд в последовательности, отличной от той, в которой они находятся в программе. Это повышает производительность процессора, так как ему не нужно ждать результатов предыдущих операций для выполнения последующих;
переименование регистров, позволяющее «увеличить» размеры блока регистров, т. е. ослабить влияние самого главного недостатка архитектуры CISC.
Однако перед рассмотрением перечисленных механизмов повышения производительности нужно познакомиться с функциями и структурой устройства управления.
124