
Сегодня наибольшее распространение имеют одно-, двух- и трехадресные команды (рис. 5.2). Трехадресные команды характерны для компьютеров с сокращенным набором команд. Первый и второй адреса такой команды указывают месторасположение операндов, в третий адрес (ячейку памяти) заносится результат операции. Для определения адреса следующей выполняемой команды служит счетчик команд (IP), к содержимому которого после выполнения любой команды добавляется ее длина в байтах. Для перехода к выполнению команды, которая занимает не следующую по порядку ячейку памяти, в машине предусматривают специальные команды переходов. Трехадресные команды используются в так называемых RISC-компьютерах (машинах с сокращенным набором команд); в них операнды размещают в регистрах общего назначения, число которых может достигать 256. Загрузка этих регистров из памяти осуществляется специальной схемой, называемой контроллером или процессором загрузки.
Команды RISC-процессора обычно имеют фиксированный формат, что позволяет извлекать команду из памяти за одно обращение. Однако фиксированный формат исключает прямую адресацию памяти. Дешифрация кода операции, осуществляемая исключительно аппаратными средствами, также выполняется за один такт. Такие процессоры используют трехадресные операционные команды типа RR и содержат кэш-памяти достаточно большого объема. Все это приводит к ускорению выполнения программ, несмотря на то что их длина (т. е. число команд) несколько увеличивается.
В RISC-процессорах реализуются средства повышения производительности, характерные для CISC-систем: суперскалярность (несколько команд выполняются за один машинный такт) и предсказание переходов.
Для RISC-процессоров характерно наличие средств поддержки мультипроцессности и компиляторов, позволяющих выполнять оптимизацию программ. Кроме того, на компилятор возлагаются дополнительные функции по контролю над вычислительным процессом, в том числе:
распределение регистров, уменьшающее число команд пересылки данных между регистрами и памятью;
защита памяти;
контроль переполнения;
предотвращение блокировок конвейеров и т. п.
Компилятор должен так формировать программу, чтобы признаки результата использовались не следующей по порядку командой, а через одну (или две).
В настоящее время большинство процессоров персональных компьютеров выполняют в виде одной или, реже, нескольких интегральных схем, которые принято делить на процессоры общего назначения и специализированные. К числу процессоров общего назначения относятся популярные процессоры Pentium фирмы Intel, большинство процессоров фирмы AMD, а также фирмы Apple. Из-за большой сложности таких процессоров число изготавливающих их фирм очень мало. Процессоры персональных компьютеров изготавливаются в виде БИС и требуют сложнейшего оборудования стоимостью в сотни миллионов долларов.
Для повышения производительности в микропроцессорах персональных компьютеров используют технические решения, подобные тем, что применяются в современных быстродействующих RISC-процессорах. Наиболее часто для повышения производительности процессоров в персональных компьютерах используют:
суперскалярную обработку данных, предусматривающую запуск и параллельное выполнение нескольких команд из одной программы;
увеличение разрядности шины для передачи данных и команд между процессором и памятью до 64 бит, а иногда и больше;
внутреннюю кэш-память команд и данных первого уровня достаточно большой емкости;
внешнюю кэш-память второго уровня, емкость которой составляет несколько сотен килобайт.
Кроме того, в большинстве этих микропроцессоров предусматривается:
изменение последовательности выполнения команд, т.е. выполнение команд в последовательности, отличной от той, в которой они находятся в программе. Это повышает производительность процессора, так как ему не нужно ждать результатов предыдущих операций для выполнения последующих;
переименование регистров, позволяющее «увеличить» размеры блока регистров, т. е. ослабить влияние самого главного недостатка архитектуры CISC.
Однако перед рассмотрением перечисленных механизмов повышения производительности нужно познакомиться с функциями и структурой устройства управления.