Микроархитектура Sandy Bridge, страница 7

Блок предсказания ветвлений (BranchPredictionUnit) Sandy Bridge, по сравнению с предшествовавшей микроархитектурой Nehalem, также существенно улучшен. Например, буфер блока предсказания ветвлений (Branch Target Buffer, BTB) вмещает в два раза больше адресов результатов ветвления и вдвое большую историю комбинаций команд. Кроме того, увеличены размеры области хранения истории ветвлений, в том числе предсказанных и выполненных. Этим удалось существенно снизить количество неудачных предсказаний ветвлений и таким образом как увеличить производительность процессора, за счет уменьшения времени вынужденного простоя для сброса конвейера с обработанными впустую инструкциями, так и уменьшить потребление энергии, затраченной зря на обработку неудачных ветвлений.

Сформированный поток микрокоманд поступает в блок переименования, распределения и переупорядочения (Rename/Allocate/Retirement), а именнов так называемый буфер декодированных,  но еще не выполненных команд – ReservationStation (RS). Там же содержится специальный физический регистровый файл, PRF (PhysicalRegisterFile), который состоит из совокупности регистров, для хранения целочисленных данных, емкостью 160 отдельных 64-битных записей и совокупности регистров для хранения векторно-вещественных данных с плавающей запятой, емкостью 144 256-битных записей, т.е. регистров YMM c новыми векторными командами  AVX (х86-64) целиком. В этом регистровом файле фиксируются результаты отслеживания и переименования микроопераций.

Кроме того, этот блок включает в себя буфер переупорядочения ROB (Re-OrderBuffer), который служит для реализации алгоритма последовательности исполнения микрокоманд не в порядке их поступления, а таким образом, чтобы впоследствии можно было реализовать их наиболее эффективное выполнение в исполнительных блоках. После чего его задачей является последующее восстановлением их последовательности, которая задана программой. Буфер переупорядочения способен обрабатывать до 168 микроопераций одновременно.

Идея переименования и распределения дополнительных регистров, которые не определены архитектурой набора команд регистров, заключается в следующем. В архитектуре Х86  количество регистров общего назначения сравнительно невелико: доступно восемь регистров в 32-битном режиме, и 16 – в 64 битном. Представим, что исполняемая микрокоманда дожидается загрузки значений операндов в регистр из памяти. Это долгая операция, и хорошо бы на это время разрешить использовать этот регистр для другой команды, операнды которой находятся ближе (например, в кэш-памяти L1). Для этого временно переименовывается «ждущий» регистр и отслеживается история переименования. А «готовому к работе» регистру присваивается стандартное имя, чтобы снабженную операндами команду исполнить прямо сейчас. Когда придут данные из памяти, обращаются к истории переименования и возвращают изначальному регистру его законное имя. Переименование регистров позволяет добиться исполнения команд вне очереди. Таким образом, техника переименования регистров позволяет сократить простои, а ведение истории переименования применяется для нивелирования конфликтов.

В целом, компоненты блока, в котором формируется информация для наиболее эффективной ее обработки, не в порядке ее поступления в соответствие с программой (Out-of-Order), представлены в табл. X.2.

Загрузка микрокоманд всех типов: SIMD, целочисленных и с плавающей запятой,  осуществляется по одинаковому сценарию, единым унифицированным планировщиком-распределителем (Scheduler), динамически распределенным между всеми потоками. Исполнительный модуль (ExecutionCluster) включает в себя три вычислительных порта, определенным образом специализированных (Port 0, Port 1 и Port 5), два порта загрузки данных (Port 2, Port3), и порт сохранения (выдачи) данных (Port 4).

                                                                                                          Табл.X.2

 №

 п/п

Наименование компонентов модуля Out-of-Order обработки

  Емкость

компонента

  1

Буфер переупорядочения – ROB (Re-Order Buffer)

   168 μops

  2

Физический регистровый файл – PRF (Physical Register File), Integer

  160×64 bit

  3

Физический регистровый файл – PRF (Physical Register File), FP/Vector

      144×256 bit

  4

Буфер декодированных, но еще не выполненных команд – RS (Reservation Station)

     54 μops

  5

Буферы записи – Load Buffers

   64×32 bit

  6

Буферы чтения – Save Buffers

   36×16 bit

Управление адресами загрузки и сохранения данных осуществляется контроллером памяти (MemoryControl). Кэш L1 данных представляет собой, четырехканальную (четырехвходовую) множественно-ассоциативную память, емкостью 32 Кбайт, с длиной строки также 64 байт. Обмен информацией между памятью кэш L1 данных и исполнительным модулем осуществляется с быстродействием 48 байт за такт.

Кэш L2 каждого ядра представляет собой также восьмиканальную множественно-ассоциативную память, но емкостью 256 Кбайт каждая.

В заключении рассмотрим наиболее важные технологии, которые используются в микропроцессорах архитектуры Sandy Bridge.

Технология Simultaneous Multi-Threading (SMT)