Улучшение архитектуры процессора
Начнем этот обзор с нового способа обработки инструкций в архитектуре Sandy Bridge.
Есть четыре инструкции декодирования, а это означает, что процессор может декодировать до четырех инструкций за такт. Эти декодеры отвечают за декодирование IA32 (ака x86) инструкций в RISC-подобные микрокоманды (?ops), которые используются внутри процессора. Как и предыдущие процессоры Intel, архитектура Sandy Bridge поддерживает macro- и micro-fusion. Мacro-Fusion позволяет процессору объединять две похожие инструкции x86 в одну, а micro-Fusion соединяет две похожие микрокоманды в одну. Конечно, цель подобных объединений — повышение производительности.
Что совершенно новое, так это добавление кэш-памяти для декодированных микрокоманд, объемом в 1536 микрокоманд (до 6 Кб). Intel назвал эту кэш-память как ?кэш L0″. Функции ее довольно просты. Когда программа, входит в цикл (то есть, нужно повторить те же инструкции несколько раз), процессору не нужно будет расшифровать снова инструкций x86: они уже будут расшифрованы в кэш L0, при этом, экономя время и, следовательно, повышая производительность.
Может возникнуть вопрос, а не эта же идея реализована в архитектуре Netburst (то есть в процессорах Pentium 4), под названием Trace Cache, которая также хранит декодированные микрокоманды. Trace Cache работает иначе, чем Кэш для микрокоманд: она хранит инструкции в том же порядке в котором они запускались. Таким образом, когда программа входит в цикл, скажем в 10 раз, Trace Cache будет хранить те же инструкции 10 раз. А следовательно, есть много повторяющихся инструкций в кэш-памяти. В Кэш L0 немного иначе, в памяти хранятся только отдельные декодированные инструкции.
Когда используется кэш микрокоманд, процессор переключает кэш инструкций L1 и декодеры в «спящий режим», в результате чего процессор экономит энергию.
Планировщик в архитектуре Sandy Bridge аналогичен тому, который используется в архитектуре Nehalem, с шестью портами отправки (три порта для исполнительных устройств и три порта для операций с памятью).
Хотя конфигурация та же, архитектура Sandy Bridge имеет больше исполнительных блоков: в то время как архитектура Nehalem имеет 12, а Sandy Bridge имеет 15 (см. рисунок 2). По данным Intel, они были изменены в целях повышения производительности при работе с плавающей точкой.
Рисунок 2: исполнительные устройства (стандартная конфигурация)
Каждое исполнительное устройство подключено к планировщику используя 128-битный канал. Для того, чтобы выполнить новые инструкции AVX, которые используют 256-битные данные, и не добавлять 256-битные каналы, две исполненные единицы «объединены» (т. е. используются одновременно). Это отмечено на рисунке 3.
Более подробно об инструкции AVX будет рассказано в продолжении обзора, который появится через несколько дней. На данный момент все время забирает прокладка СКС.
Рисунок 3: исполнительные устройства (при работе AVX инструкций)
После выполнения инструкции, она не копируется обратно в буфер, как это было в предыдущих архитектурах Intel, а указывает, что операция выполнена. Таким образом, процессор сохраняет биты и повышает эффективность.
Другое отличие состоит в портах памяти. Архитектура Nehalem имеет один загрузчик, одно хранилище адресов и одно хранилище данных, каждый из которых подключен к отдельному порту. Это означает, что Nehalem-процессор может загрузить из кэш-памяти L1 128 бит данных за такт.
В архитектуре Sandy Bridge, загрузчик и хранилище адресов может быть использовано и как загрузчик или как хранилище адресов. Это изменение позволяет передавать в два раза больше данных из кэша L1 за одно время (за счет двух 128-бит каналов вместо одного), тем самым повышая производительность. Таким образом, процессоры на базе Sandy Bridge может загрузить 256 бит данных из кэша L1 за такт.
Рисунок 4: архитектура Sandy Bridge