Обзор микроархитектур современных десктопных процессоров. Часть 1
Страница 12. Intel Pentium 4


Intel Pentium 4

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

При последующем исполнении трассы МОПы считываются из Т-кэша в темпе 1 блок за 2 такта — то есть по 3 МОПа за такт. Если исходная инструкция при декодировании не могла быть преобразована в короткую последовательность (до четырёх МОПов), она заменялась вызовом «микрокодовой подпрограммы». При исполнении трассы, содержащей такой вызов, недостающие МОПы выбираются из микропрограммной памяти по соответствующему адресу и отправляются на последующую обработку (также по 3 МОПа за такт).

Предельный темп считывания МОПов достигается только в том случае, если МОПы размещаются в Т-кэше плотно, без фрагментации. Имеется несколько причин, которые могут привести к неполному заполнению блоков кэша и снижению темпа считывания МОПов:

  • необходимость размещения всех МОПов, составляющих x86-инструкцию, в одном блоке кэша;
  • наличие в x86-инструкции литеральной константы или смещения адреса с длиной значимой части более 16 разрядов (в некоторых случаях это может потребовать выделения дополнительной ячейки Т-кэша);
  • вызов «микрокодовой» подпрограммы для сложной инструкции;
  • превышение ограничения на число операций перехода в блоке;
  • завершение трассы по инструкции косвенного перехода, вызова подпрограммы или возврата из подпрограммы, по концу цикла, по достижению максимальной длины трассы.

В процессоре P-4 при декодировании инструкций загрузки из памяти с последующим исполнением (Load-Op) порождаются отдельные МОПы для загрузки и для выполнения. Для инструкций выгрузки в память в некоторых случаях также порождаются два отдельных МОПа: один для вычисления адреса, другой — для осуществления записи (МОП для вычисления адреса не нужен при применении простых схем адресации без использования байта SIB). Разделение таких инструкций на два МОПа также ведёт к снижению эффективного темпа обработки инструкций.

С другой стороны, упакованные операции SSE преобразуются в монолитные «128-битные» МОПы, что ведёт к снижению числа порождаемых МОПов (в сравнении с процессорами P-III и K8) и повышению эффективной плотности их потока. Это позволяет при активном использовании таких инструкций добиться высокого уровня загрузки функциональных устройств FPU (SSE), близкого к предельному.

Благодаря тому, что декодирование x86-инструкций производится заранее, перед помещением в T-кэш, в декодере не накладывается никаких ограничений на их длину и структурную сложность. В частности, скорость считывания и исполнения операций не зависит от числа префиксов в исходной инструкции.

Таким образом, специфика процессора P-4, работающего на повышенной частоте, привела к необходимости полного отделения процесса декодирования инструкций от их последующей обработки и исполнения. Это позволило исключить этапы конвейера, занимающиеся декодированием, из основного цикла выполнения программы (когда инструкции считываются из кэша), и благодаря этому сократить длину конвейера непредсказанного перехода.

Несмотря на то, что МОПы выходят из Т-кэша группами по три, в последующих трактах они обрабатываются и отслеживаются по отдельности. Также по отдельности МОПы отправляются в отставку — отставка производится в темпе до трёх МОПов за такт, без привязки к исходным группам, в составе которых они считывались из Т-кэша.

Для переназначения (переименования) регистров результатов используются раздельные наборы внутренних (физических) регистров для целочисленной арифметики и для арифметики с плавающей точкой FPU. Число регистров в каждом наборе соответствует размеру буфера переупорядочения и равно 128. В отличие от процессоров семейства P6/P6+, архитектурные регистры не хранятся отдельно от внутренних, и не производится копирование содержимого между этими наборами. Вместо этого используются дополнительные таблицы отображения номеров архитектурных регистров в номера физических регистров. Регистры FPU имеют длину 128 разрядов, и для хранения 128-битного регистра XMM используется один внутренний регистр.

По материалам ixbt.com
 
« Предыдущая статья   Следующая статья »