Выбрать главу

Новый набор SIMD-инструкций в чипах Sandy Bridge получил название AVX - Advanced Vector Extensions, то есть "расширенные векторные инструкции". Фактически это очередное поколение SIMD-инструкций (Single Instruction, Multiple Data - "одиночный поток команд, множественный поток данных" SSE5, альтернативная набору x86, разработанному в AMD. Разрядность регистров XMM в инструкциях AVX увеличен вдвое с 128 до 256 бит, появились 12 новых инструкций с поддержкой четырёхоперандных команд. Поддерживаются технология аппаратного шифрования Advanced Encryption Standard (AES) и система виртуализации Virtual Machine Extensions (VMX).

Несмотря на схожую конструкцию, у чипов Sandy Bridge больше исполнительных блоков, чем у Nehalem: 15 против 12 (см. блок-схему). Каждый исполнительный блок подключён к планировщику инструкций через 128-битный канал. Для выполнения новых инструкций AVX, содержащих 256-разрядные данные, одновременно используются два исполнительных блока.

Чипы Sandy Bridge cпособны обрабатывать до четырёх инструкций за такт благодаря четырём декодерам, встроенным в блоки выборки команд. Эти декодеры преобразуют инструкции x86 в простые RISC-подобные микроинструкции.

Важнейшее нововведение в процессорах Sandy Bridge - это так называемый "кэш нулевого уровня" L0, в принципе отсутствовавший в процессорах предыдущего поколения. Этот кэш способен хранить до 1536 декодированных микроинструкций: его смысл заключается в том, что когда исполняемая программа входит в кольцевой цикл, то есть повторно выполняет одни и те же инструкции, не требуется заново декодировать одни и те же инструкции. Такая схема позволяет заметно повысить производительность: по оценкам специалистов Intel, L0 используется в 80% машинного времени, то есть в подавляющем большинстве случаев. Кроме того, при использовании L0 отключаются декодеры и кэш-память первого уровня, а чип потребляет меньше энергии и выделяет меньше тепла.

В связи с появлением в чипах Sandy Bridge "кэша нулевого уровня" часто вспоминают трассировочный кэш (trace cache) "ветеранов гонки гигагерц" - процессоров Pentium 4 на базе архитектуры NetBurst. Между тем, эти буферы работают по-разному: в трассировочном кэше инструкции записываются точно в таком порядке, в каком они исполнялись, поэтому в нём могут несколько раз повторяться одни и те же инструкции. В L0 хранятся единичные инструкции, что, разумеется, более рационально.

Претерпел заметные изменения блок предсказания ветвлений, получивший буфер предсказания результата ветвлений (branch target buffer) удвоенного объёма. Кроме того, в буфере теперь используется специальный алгоритм сжатия данных, благодаря чему блок способен подготавливать большие объёмы инструкций, тем самым повышая производительность расчётов.

Подсистема памяти в Sandy Brigde была также оптимизирована для работы с 256-битными инструкциями AVX. Напомним, что в Nehalem использовались выделенные порты загрузки, хранения адресов и хранения данных, привязанные к отдельным дисптчерским портам, что означает возможность загрузки 128 бит данных из кэш-памяти L1 за такт. В Sandy Brigde порты загрузки и хранения при необходимости могут изменять назначение и одновременно выступать в роли пары портов загрузки или хранения, что позволяет работать с 256 битами данных за такт.

Для связи компонентов чипа, то есть вычислительных ядер, кэш-памяти L3, графического ядра и системного агента (контроллеров памяти, PCI Express, питания и дисплея), Sandy Bridge используется кольцевая шина (ring interconnect). За основу была взята скоростная шина QPI (Quick Path Interconnect, пропускная способность до 6,4 Гбайт/с на частоте 3,2 ГГц), впервые реализованная в чипах Nehalem Lynnfield (Core i7 9xxx для Socket LGA1366), адресованных энтузиастам.

По сути кольцевая шина в Sandy Bridge представляет собой четыре 32-байных кольца: шины данных, шины запросов, шины подтверждения и шины мониторинга. Обработка запросов осуществляется на частоте работы вычислительных ядер, при этом при тактовой частоте 3 ГГц пропускная способность шины достигает 96 Гбайт в секунду. При этом система автоматически определяет кратчайший путь передачи данных, обеспечивая минимальную латентность.

Использование кольцевой шины позволило иным способом реализовать кэш-память третьего уровня L3, которая в Sandy Bridge получила название LLC (Last Level Cache, то есть "кэш последнего уровня"). В отличие от Nehalem, здесь LLC не является общим для всех ядер, но при этом он может при необходимости распределяться между всеми ядрами, а также графикой и системным агентом. Важно отметить, что хотя для каждого вычислительного ядра выделен свой сегмент LLC, этот сегмент не привязан жёстко к "своему" ядру и его объём может посредством кольцевой шины распределяться между другими компонентами.