Блок предсказания ветвлений (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)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.