Блок обработки команд

Блок обработки команд состоит из двух узлов: узла загрузки/дешифровки и памяти Microcode ROM, содержащей коды микрокоманд.

Узел загрузки/дешифровки выполняет упреждающую загрузку команд на основе информации, выданной блоком предсказания переходов и данных на основе предположения о требуемых команде данных (data speculation), а также дешифровку команд. Узел загружает сразу несколько команд, в соответствии с последовательностью команд, выданной блоком предсказания переходов. Данные также загружаются порциями по 32 бита. Помимо загрузки данных, выполняемой аппаратными средствами, можно использовать программные средства – команды набора SSE. Загружаемые данные и команды автоматически помещаются в кэш-память L2.

Набор команд процессора обычно велик (сто и более команд). Процессоры, в которых реализован полный набор команд, называются CISC-процессорами (Complete Instruction Set Chip – чип с полным набором команд). Команды IA-32 являются командами для CISC-процессора.

Противоположный подход заключается в задании небольшого количества простых и быстро выполняемых инструкций. Процессоры, содержащие уменьшенный набор инструкций, называются RISC-процессорами (Reduced Instruction Set Chip – чип с уменьшенным набором инструкций). Поскольку в RISC-процессорах набор инструкций меньше, процессор получается проще, и время выполнения одной команды меньше, чем в CISC-процессорах.

Недостатком RISC-процессоров является увеличение времени выполнения некоторых операций: те операции, которые в CISC-процессорах выполняются с помощью одной инструкции, в RISC-процессорах требует выполнения двух или более инструкций. Так, в CISC-процессорах есть инструкции копирования данных из памяти в регистр, копирование данного из регистра в память, а также копирование данных из одного участка памяти в другой. Если удалить из набора команд последнюю инструкцию, то копирование данных из одного участка одного участка памяти в другой можно выполнить с помощью последовательности из двух инструкций: копирования данного из памяти в регистр и копирования данного из регистра в память. Частично этот недостаток компенсируется тщательным выбором набора инструкций потому, что обычно в программе некоторые инструкции выполняются значительно чаще, чем другие. Например, если в программе производится ввод и суммирование ста чисел и вывод результата, то команды, выполняющие ввод и суммирование чисел будут выполняться 100 раз, а команды, выполняющие вывод результата – только один раз. Поэтому обычно в набор команд RISC-процессора включаются, те команды, которые чаще всего выполняются в программах.

Процессоры от Intel 4004 до Intel 80486 были CISC-процессорами, однако, начиная с первого процессора Pentium, ядро процессора стало выполняться как RISC-процессор. Поэтому при дешифровке предварительно загруженных команд и команд, поступивших от блока предсказания переходов, они разбиваются на последовательность более простых команд, называемых микрокомандами. Команды, поступившие от блока предсказания переходов, после дешифровки передаются в кэш-память команд первого уровня (L1), поэтому, если предварительно загруженная команда совпадает с предсказанной, она не дешифруется, а соответствующие ей микрокоманды просто берутся из кэш-памяти. При дешифровке некоторых сложных команд используются дешифрованные микрокоманды, хранящиеся в Microcode ROM (памяти только для чтения).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: