Архитектура AMD Bulldozer. Структура процессора

AMD BulldozerAMD решила использовать  совершенно другой подход для новой архитектуры Bulldozer. Было решено создать двухядерные модули, которые вместе используют некоторые ресурсы (L2 кэш-память, модуль вычислений с плавающей запятой), но не являются полностью независимыми друг от друга. (смотрите рисунок ниже)
По словам AMD это было сделано в целях оптимизации процессора и в то же время для уменьшения цены процессора. Оптимизация заключается в том, что на обычных многоядерных процессорах, некоторые модули могут бездействовать, и такие модули могут быть объединены в архитектуре Bulldozer. А если будет меньше модулей – значит, будет меньше потрачено материала, а это, в свою очередь, позитивно повлияет на стоимость, на экономию энергии и на уменьшение количества тепла.
Поэтому, хоть AMD и будет называть свои новые процессоры на архитектуре Bulldozer двухъядерными, на самом деле они не будут истинно двухъядерными, поскольку у них не будет полностью независимых ядер. А название “двухядерный процессор” будет использоваться в маркетинговых целях.

Для создания “четырехъядерных процессоров“, AMD использует два таких блока, так что процессор фактически имеет два “процессора” внутри (два стандартных блоков указаны на рисунке ниже), а не четыре. AMD по-прежнему будет называть новые процессоры четырехядерными.

AMD Bulldozer
Восемиядерный процессор на архитектуре Bulldozer.

Теперь давайте подробно рассмотрим модули Fetch и Decode, используемые в архитектуре Bulldozer.

Модули Fetch и Decode

Модуль выборки Fetch отвечает за получение инструкций для декодирования из кэш памяти или из оперативной памяти.

AMD Bulldozer

Модули Fetch и Decode.

Как уже было замечено, модули выборки используют сразу два “ядра”. Кэш инструкции L1 также используются двумя ядрами одновременно, но каждое процессорное ядро имеет свою собственную кэш данных L1.
AMD уже анонсировала, что кэш инструкции L1, используемые в архитектуре Bulldozer, состоят из двухканального множественно-ассоциативного кэша объемом 64 Кб. Та же конфигурация используются в процессорах с архитектурой AMD64, но с разницей, что процессоры AMD64 имеют кэш-памяти L1 на каждое ядро, а процессоры Bulldozer будут иметь одну кэш-памяти L1 на каждую пару ядер. Однако, кэш данных будет иметь только 16 КБ, что значительно меньше, чем 64 КБ для каждого ядра, которые используются в  процессорах на основе архитектуры AMD64.

TLBs (Translation Look-aside Buffer – буфер сверхбыстрой памяти). Размеры TLBs были раскрыты. Это буферы, с небольшим объемом памяти, предназначенные для преобразования виртуальных адресов памяти, в физические адреса.
Виртуальная память, больше известная как файл подкачки, это технология, где объем оперативной памяти «увеличивается» за счет специального файла на жестком диске.

Программы для компьютера пишутся с использованием инструкций x86, но в настоящее время процессоры понимают только собственные RISC инструкции. Модуль декодирования отвечает за преобразование x86 инструкций программ, в RISC микрокоманды. Архитектура Bulldozer имеет четыре декодера, но в данный момент AMD не раскрывает информацию о том, какие инструкции выполняет каждый декодер. Обычно один из этих декодеров выполняет сложные комплексные инструкции, используя предоставленный микрокод ROM (“µcode” или “microcode”). Декодирование сложных инструкций завершается через несколько тактов, после чего они преобразовываются в несколько микрокоманд. Обычно производители оптимизируют свои процессоры таким образом, что при декодировании наиболее распространенных инструкций – они выполнялись всего за один такт.

Архитектура AMD Bulldozer. Инструкции

Архитектура AMD Bulldozer. Модули вычисления

Архитектура AMD Bulldozer. Структура процессора