Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MDE_orgvm_v2.docx
Скачиваний:
5
Добавлен:
19.09.2019
Размер:
1.04 Mб
Скачать

Усовершенствования вычислительного ядра

Несмотря на то, что процессоры семейства Nehalem преподносятся Intel, как носители новой микроархитектуры, основная их часть – вычислительное ядро – по сравнению с Core изменилась не столь значительно, наибольшие улучшения кроются в инфраструктуре.

Сначала х86 инструкции выбираются (Fletch) из кэш-памяти команд. Если в потоке команд оказывается команда условного перехода (ветвление программы), то включается механизм предсказания ветвления, который формирует адрес следующей выбираемой команды до того, как будет определено условие выполнения перехода. Основной частью блока предсказания ветвлений является ассоциативная память, называемая буфером адресов ветвлений ВТВ (Branch Target Buffer), в котором хранятся адреса ранее выполненных переходов. Кроме того, ВТВ содержит биты, хранящие предысторию ветвления, которые указывают, выполнялся ли переход при предыдущих выборках данной команды.

Далее разделенные х86 инструкции (Pre Decode) на простые и сложные организуются в виде очередей (Instruction Queues) на входах четырех декодеров. Декодеры преобразуют х86 команды в микрокоманды, под управлением которых в процессоре выполняются элементарные операции (микрооперации). Как в Intel Core, три декодера используются для обработки простых инструкций, один – для сложных. Каждая простая х86 инструкция преобразуется в 1–2 микрокоманды, а для сложной инструкции из памяти микрокода (u Code ROM) выбирается последовательность микрокоманд (микропрограмма), которая содержит более двух микрокоманд (технология micro-ops fusion). Используя технологию macro fusion, четыре декодера могут обработать одновременно пять х86 команд, преобразуя их в четыре микрокоманды.

Следующее усовершенствование, связанное с повышением продуктивности начальной части исполнительного конвейера, коснулось блока обнаружения циклов в программе Loop Stream Detector. Этот блок появился впервые в процессорах с микроархитектурой Core и предназначался для ускорения обработки циклов. Определяя в программе циклы небольшой длины, Loop Stream Detector (LSD) сохранял их в специальном буфере, что давало возможность процессору обходиться без их многократной выборки из кэша и предсказания переходов внутри этих циклов. В процессорах Nehalem блок LSD стал ещё более эффективен благодаря его переносу за стадию декодирования инструкций.

Новая структура кэш-памяти

К двум уровням кэша в Nehalem добавился и L3 кэш, который объединяет ядра между собой и является разделяемым. В результате, L2 кэш выступает буфером при обращениях процессорных ядер в разделяемую кэш-память, имеющую достаточно большой объём.

Использование трёхуровневой кэш-памяти невольно вызывает ассоциации с процессорами AMD с микроархитектурой K10, однако кэш-память Nehalem устроена всё же совершенно по-другому. Во-первых, L3 кэш в Nehalem работает на более высокой частоте, которая для первых представителей этого семейства установлена равной 2,66 ГГц. Во-вторых, Intel не стал отказываться от дублирования данных, хранящихся в кэшах первого и второго уровней, в L3 кэше, что обеспечивает в многоядерных процессорах более высокую скорость работы подсистемы памяти.

Кроме того существенно увеличился размер TLB (Translation-Lookaside Buffer). TLB – это высокоскоростной буфер, который используется для установления соответствия между виртуальными и физическими адресами страниц. Увеличение размера TLB, таким образом, позволяет повысить число страниц памяти, которые могут быть одновременно использованы без дополнительных дорогостоящих преобразований по таблицам трансляции адресов, находящимся в обычной памяти.

Более того, TLB в процессорах Nehalem стал двухуровневым. Фактически, к унаследованному от процессоров Core 2 TLB был добавлен ещё один буфер второго уровня. При этом новый L2 TLB отличается не только высокой вместительностью. Ещё одна особенность L2 TLB заключается в том, что он унифицирован и способен транслировать адреса страниц любого размера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]