Обзор микроархитектур современных десктопных процессоров. Часть 1
Страница 7. Выборка и декодирование инструкций


Выборка и декодирование инструкций

Большинство процессоров, рассматриваемых в данной статье (за исключением RISC-процессора IBM PPC970) обрабатывают и исполняют инструкции архитектуры x86 (называемой также IA-32) и расширенной архитектуры x86-64 (называемой также AMD64 либо EM64T). Принципиальных различий по структуре машинной инструкции между архитектурами x86 и x86-64 нет, поэтому по тексту будем везде использовать общее наименование «x86-инструкции». Эти инструкции имеют очень сложный и нерегулярный формат и могут состоять из нескольких составных частей: одного или нескольких однобайтных префиксов, кода операции длиной от 1 до 3 байтов, описателя типа адресации операндов (ModR/M), указателя регистров базы, индекса и масштаба индексирования (SIB), поля смещения адреса и непосредственного операнда. Длина x86-инструкции может варьироваться от 1 до 15 байтов.

Для суперскалярной обработки необходимо в каждом такте извлекать из входного потока несколько инструкций переменной длины и отправлять каждую из них в отдельный блок декодирования для преобразования в микрооперации (МОПы). Эта задача представляется очень трудоёмкой, поэтому необходимо применение специальных средств, которые позволили бы её облегчить. В разных процессорах x86 используются различные приёмы и механизмы, обеспечивающие бесперебойную обработку инструкций. Лишь для процессора PPC970 не требуется никаких ухищрений, так как в RISC-архитектуре IBM Power машинные инструкции имеют фиксированную длину (4 байта) и регулярный формат. По типу используемых механизмов рассматриваемые процессоры можно разбить на четыре класса:

  1. PPC970: Не используется никакой механизм, так как инструкции имеют фиксированную длину и формат.
  2. P-III, P8: После выборки из I-кэша производится разметка инструкций (определение их границ и положения кода операции) в устройстве, называемом определителем длины инструкций (Instruction Length Decoder, ILD).
  3. K8: Перед помещением блоков инструкций в I-кэш производится предварительное декодирование (предекодирование) с аналогичной разметкой, информация о разметке записывается в дополнительные биты при каждом байте в I-кэше.
  4. P-4: Перед помещением в кэш производится полное декодирование инструкций, сформированные МОПы записываются в этот кэш (Т-кэш) в виде трасс.

В данном разделе будет рассмотрена работа устройств, выполняющих предварительную обработку инструкций перед помещением в кэш (если необходимо), выборку из кэша, декодирование с преобразованием в МОПы и подготовку к отправке сформированных групп МОПов в буфер переупорядочения и очереди планировщика для их последующего исполнения. Процессоры будут рассматриваться в указанном выше порядке — то есть в порядке усложнения механизма, обеспечивающего бесперебойную выборку инструкций.

 
« Предыдущая статья   Следующая статья »