oldi

Процессорная микроархитектура AMD Bulldozer

Сергей Пахомов

Общие сведения

Особенности микроархитектуры AMD Bulldozer

Выборка инструкций из кэша

Процесс декодирования

Диспетчеризация и переупорядочение макроопераций

Выполнение макроопераций

Заключение

 

В прошлом номере нашего журнала мы подробно рассмотрели новую процессорную микроархитектуру Sandy Bridge, которая станет основой мобильных, настольных и серверных процессоров Intel уже в следующем году. В этом номере журнала также рассказывается о новой процессорной микроархитектуре Bobcat от компании AMD (см. статью «Микроархитектура AMD Bobcat против Intel Atom»), которая послужит основой процессоров для нетбуков, неттопов, планшетов и прочих мобильных гаджетов. Что ж, для полноты картины осталось рассмотреть еще одну новую процессорную микроархитектуру компании AMD, известную под кодовым названием Bulldozer. В следующем году она станет основой для серверных и настольных процессоров AMD.

Общие сведения

После появления микроархитектуры Intel Core положение компании AMD на рынке мобильных и настольных процессоров стало весьма плачевным. В плане производительности процессоры AMD просто не могли конкурировать с процессорами Intel. И лишь в низшем ценовом сегменте, исключительно благодаря невысокой стоимости процессоров AMD, наблюдался своеобразный паритет процессоров Intel и AMD.

Напомним, что микроархитектура Intel Core была представлена компанией Intel в 2006 году и пришла на смену уже морально устаревшей процессорной микроархитектуре Intel NetBurst. В то время компания AMD производила процессоры на основе микроархитектуры K8, которая была представлена еще в 2003 году. И если процессоры AMD на базе микроархитектуры K8 вполне успешно конкурировали и даже во многом превосходили процессоры Intel на базе микроархитектуры NetBurst, то с выходом микроархитектуры Intel Core компания AMD стала аутсайдером.

В 2007 году AMD попыталась взять реванш, представив микроархитектуру K10. Однако микроархитектура AMD K10 являлась лишь незначительным моддингом всё той же мик­роархитектуры K8 и серьезных дивидендов принести не могла. Тем более что в 2008 году компания Intel также выпустила обновленную версию микроархитектуры Intel Core под названием Nehalem. В следующем году и Intel и AMD представят новые процессорные микроархитектуры. Компания AMD — микроархитектуру Bulldozer для серверных и настольных процессоров, а компания Intel — микроархитектуру Sandy Bridge для серверных, настольных и мобильных процессоров. Причем даже поверхностный анализ говорит о том, что речь идет не об очередном апгрейде микроархитектур предыдущего поколения, а об их существенной переработке. И кому достанутся лавры победителя в этой борьбе за производительность — еще не известно. Правда, у компании Intel есть одно неоспоримое преимущество: ее новые процессоры появятся несколько раньше процессоров AMD и у компании будет достаточно времени, чтобы завоевать рынок.

Итак, давайте детально рассмотрим особенности новой микроархитектуры AMD Bulldozer.

Сегодня достоверно известно, что процессоры AMD на базе микроархитектуры Bulldozer станут первыми процессорами AMD, которые будут производиться по 32-нм техпроцессу.

Первоначально компания выпустит три серии новых процессоров с кодовыми на-именованиями Interlagos, Valencia и Zambezi. Процессоры Interlagos и Valencia — это серверные процессоры, а процессор Zambezi ориентирован на рынок высокопроизводительных настольных ПК. Процессор Interlagos будет 16-ядерным, а процессоры Valencia и Zambezi — 8-ядерными.

Тут очень важно подчеркнуть, что понятие ядра в микроархитектуре AMD Bulldozer и процессорные ядра в других микроархитектурах — это не одно и то же. Поэтому не вполне корректно сравнивать по количеству ядер новые процессоры AMD с какими-либо другими процессорами. Дело в том, что процессоры AMD на базе микроархитектуры AMD Bulldozer предусматривают модульную архитектуру. Каждый модуль сам по себе (в терминологии компании AMD) является двухъядерным. К примеру, в 8-ядерном процессоре Zambezi будут четыре двухъядерных модуля (рис. 1).

 

Рисунок

Рис. 1. Блок-схема 8-ядерного процессора Zambezi

Однако то, что компания называет в данном случае ядром, на самом деле до настоящего процессорного ядра не дотягивает. Собственно, тут весь фокус в терминологии. Модуль, в котором расположены два ядра, вполне можно было бы назвать ядром, а сами ядра — вычислительными целочисленными кластерами. То есть, на наш взгляд, более корректно говорить не о модуле с двумя ядрами, а о ядре с двумя вычислительными кластерами. Конечно, операционной системой каждый такой модуль в процессоре будет восприниматься как два отдельных ядра, но ведь и каждое ядро процессора Intel с технологией Hyper-Threading воспринимается операционной системой как два отдельных ядра, и при этом мы говорим об одном ядре, способном одновременно обрабатывать два потока.

Впрочем, оставим особенности терминологии. Главное помнить, что в случае модуля AMD речь идет не об истинных двух ядрах, а о неком решении, способном одновременно обрабатывать два потока. Причем в плане эффективности такой двухъядерный модуль AMD превосходит одно ядро Intel с поддержкой Hyper-Threading, но уступает по эффективности двухпоточной обработки двум отдельным истинным ядрам.

Впрочем, не будем ходить вокруг да около и поясним, почему между двухъядерными модулями AMD и двумя истинными ядрами нельзя ставить знак равенства. Более детальную информацию мы предоставим чуть позже, а пока лишь заметим, что в каждом двухъядерном модуле AMD часть ресурсов выполнена разделяемой между обоими ядрами. Например, в схему любого классического процессора x86 входит так называемый предпроцессор (Front End), отвечающий за выборку инструкций из кэша инструкций L1I, их декодирование и продвижение к исполнительным блокам. Так вот, в модуле AMD предпроцессор вместе с кэшем инструкций L1I разделяется между обоими ядрами (рис. 2), как и кэш L2. Особенностью модуля AMD является и то обстоятельство, что сами по себе ядра имеют лишь целочисленные исполнительные конвейеры, а для работы с вещественными данными используют разделяемый FP-кластер. Это напоминает ситуацию, когда центральный процессор x86 дополнялся сопроцессором x87 для выполнения арифметических операций с плавающей запятой. И хотя сама компания AMD этот исполнительный FP-кластер не называет сопроцессором, по сути, это именно сопроцессор, разделяемый между двумя ядрами, которые могут выполнять только целочисленные операции.

 

Рисунок

Рис. 2. Блок-схема двухъядерного модуля
в процессорной микроархитектуре AMD Bulldozer

Более подробно особенности ядер и разделяемого FP-кластера мы рассмотрим далее, а пока вернемся к особенностям процессоров на базе микроархитектуры AMD Bulldozer.

Помните, компания Intel выпускала четырехъядерные процессоры, выполненные как два двухъядерных процессора в одной упаковке (2x2)? Маркетологи AMD окрестили их тогда псевдочетырехъядерными. Так вот, новый процессор AMD Interlagos также с полным основанием можно назвать псевдошестнадцатиядерным (рис. 3). Дело в том, что этот процессор будет построен по схеме 2x8, то есть будет объединять в одной упаковке два 8-ядерных чипа (Multi-Chip Module, MCM). Так что теперь и компания AMD снизошла до псевдомного­ядерных процессоров.

 

Рисунок

Рис. 3. Блок-схема процессора Interlagos

Если каждый процессорный модуль в микроархитектуре AMD Bulldozer наделен разделяемым между двумя ядрами кэшем L2, то кэш L3 является разделяемым между всеми процессорными модулями.

Предположительно размер кэша L3 будет составлять 8 Мбайт в одном 8-ядерном чипе процессора Interlagos. Соответственно суммарный размер кэша L3 в процессоре Interlagos будет равен 16 Мбайт.

Относительно размера кэша L3 в процессорах Valencia и Zambezi достоверных данных пока нет.

Размер L2-кэша в каждом процессорном модуле новых процессоров будет составлять 2 Мбайт.

Отметим, что в микроархитектурах Intel и AMD используется разная иерархия кэшей. Так, в новых процессорах Intel c микроархитектурой Sandy Bridge, а также в процессорах с микроархитектурой Nehalem и Intel Core применяется инклюзивный (включающий) кэш L3, а в процессорах AMD — эксклюзивный (исключающий).

Каждый 8-ядерный чип в процессоре Interlagos имеет два интегрированных независимых 64-битных DDR3-контроллера памяти, предположительная ширина полосы пропускания каждого из которых 1,86 GT/s. Соответственно суммарная полоса пропускания контроллера памяти составляет 29,76 Гбайт/с. Отметим, что два независимых 64-битных контроллера памяти вместо одного 128-битного стали использоваться еще в микроархитектуре AMD K10. Чтобы понять, почему применение двух независимых 64-битных контроллеров памяти более эффективно, чем одного 128-битного, давайте вспомним, что современные модули памяти являются именно 64-битными. Для увеличения пропускной способности подсистемы памяти используется одновременный доступ к двум различным модулям памяти по двум 64-битным каналам (двухканальный режим работы). Теоретически это позволяет вдвое увеличить пропускную способность подсистемы памяти, поскольку за каждый такт работы контроллера памяти можно считывать две порции данных объемом по 64 бита, то есть всего 128 бит.

Однако применение двухканальной схемы работы контроллера памяти имеет свои нюансы. Проблема заключается в том, что если процессору потребовались 64 бита данных (данные A), хранящиеся по адресу #1, то вместе с ними одновременно будут считаны и 64 бита данных (данные B), хранящиеся по соседнему адресу #2 в другом модуле памяти. В операциях линейного чтения больших объемов данных это лишь удваивает пропускную способность памяти. Однако может оказаться, что процессору не нужны считанные данные B, а нужны только данные A. В таком случае двухканальный режим работы памяти не позволяет получить выигрыш в производительности, соответственно 128-битный контроллер памяти будет функционировать с эффективностью одного 64-битного.

Применение двух независимых 64-битных контроллеров памяти позволяет одновременно загружать блоки данных с произвольными адресами из различных модулей памяти.

Предположим, к примеру, что процессору необходимо выполнить операцию умножения двух чисел. Первое число — это Data A, которое имеет адрес #1, а второе число — Data D, имеющее адрес #4. Пусть Data A хранится в первом модуле памяти, а Data В — во втором. В случае использования 128-битного контроллера памяти придется сначала загрузить 64 бита данных по адресу #1 (Data A) из первого модуля памяти и одновременно с этим 64 бита данных по адресу #2 (Data B), которые процессору не нужны. Далее будут загружены 64 бита данных по адресу #3 (Data C), которые также не нужны процессору, и 64 бита данных по адресу #4 (Data D). Как видите, применение 128-битного контроллера памяти в таком случае малоэффективно. Если же используются два независимых 64-битных контроллера памяти, то за один такт загружается 64 бита данных по адресу #1 (Data A) и 64 бита данных по адресу #4 (Data D).

Также каждый 8-ядерный чип процессора Interlagos имеет четыре 16-битовых интерфейса HyperTransport 3.1 (HT) с пропускной способностью 6,4 GT/s (102,4 Гбайт/с в обоих направлениях). Два 8-ядерных чипа связаны друг с другом посредством шины HT.

Напомним, что в микроархитектуре AMD K10 было предусмотрено применение шины HyperTransport 3.0.

После изложения общих сведений о новых процессорах AMD давайте сконцентрируемся на самой процессорной микроархитектуре Bulldozer.

Особенности микроархитектуры AMD Bulldozer

Как мы уже отмечали, ключевой особенностью микроархитектруры AMD Bulldozer является наличие разделяемых блоков в одном двухъядерном процессорном модуле.

Напомним, что процесс обработки данных процессором включает несколько этапов. В простейшем случае можно выделить четыре этапа обработки команд:

  • выборка из кэша;
  • декодирование;
  • выполнение;
  • запись результатов.

Сначала инструкции и данные забираются из кэша L1, который разделен на кэш данных D-cache и кэш инструкций I-cache, — этот процесс называется выборкой (Fetch). Затем выбранные из кэша инструкции декодируются в понятные для данного процессора примитивы (машинные команды) — такой процесс называется декодированием. Далее декодированные команды поступают на исполнительные блоки процессора, выполняются, а результат записывается в оперативную память.

Процесс выборки инструкций из кэша, их декодирование и продвижение к исполнительным блокам осуществляются в предпроцессоре (Front End), а процесс выполнения декодированных команд — в постпроцессоре, называемом также блоком исполнения команд (Execution Engine).

Напомним, что в микроархитектуре AMD Bulldozer предпроцессор является разделяемым между двумя исполнительными ядрами одного процессорного модуля.

Выборка инструкций из кэша

В соответствии со схемой классического процессора процедура исполнения кода процессором начинается с выборки инструкций в формате x86 и из кэша L1I (рис. 4).

 

Рисунок

Рис. 4. Выборка инструкций в микроархитектуре AMD Bulldozer

В случае микроархитектуры AMD Bulldozer размер кэша инструкций L1I составляет 64 Кбайт, причем сам кэш является двухканальным.

Выборка инструкций из кэша L1I производится на спекулятивной основе и с использованием блока предсказания ветвлений (Branch Predictors).

В микроархитектуре AMD Bulldozer блок предсказания ветвлений и переходов (Branch Predictors), как и другие элементы предпроцессора, является разделяемым между двумя ядрами процессорного модуля и отделен от модуля выбора инструкций (Instruction Fetch Unit) двумя буферами очередей предсказанных относительных указателей инструкций (Relative Instruction Pointers, RIP) — по одному RIP Queues на каждое ядро. Блок предсказания ветвлений и переходов может осуществлять упреждающие предсказания относительных указателей инструкций до тех пор, пока буферы очередей (RIP Queues) не заполнятся.

Буфер ассоциативной трансляции использует его для доступа в L1I и ITLB. Напомним, что буфер ассоциативной трансляции (Translation Lookaside Buffer, TLB) выполняет трансляцию виртуальных адресов страниц памяти в физические. В микроархитектуре AMD Bulldozer, так же как и в микроархитектуре AMD K10, применяется двухуровневая иерархия TLB-кэшей инструкций.

ITLB-кэш первого уровня (L1) рассчитан на 72 записи, причем поддерживаются записи для различных страниц памяти (Small Page, Large Page). TLB-буфер второго уровня рассчитан на 512 записей, причем поддерживаются записи только для страниц памяти размером 4K (Small Page). Отметим, что кэш L1 ITLB является полностью ассоциативным, а кэш L2 ITLB — 4-канальным.

Итак, мы рассмотрели блок предсказания ветвлений и переходов, буфер указателей предсказанных инструкций и блок выборки предсказанных инструкций.

Инструкции x86 имеют переменную длину, причем информация о длине инструкций сохраняется в специальных полях в кэше инструкций L1I. Загрузка инструкций переменной длины x86 из кэша L1I происходит блоками определенной длины, из которых в дальнейшем выделяются инструкции, подвергаемые декодированию. В процессорах на базе микроархитектуры K8, а также во всех процессорах Intel (включая процессоры с микроархитектурой SandyBridge) инструкции из кэша L1I загружаются блоками длиной 16 байт (128 бит). При выборке 16-байтного блока инструкций за такт процессоры могут выбирать и соответственно отправлять на декодирование до четырех инструкций за один такт средней длиной 4 байта. Однако длина одной x86-инструкции может быть и больше 4 байт и достигать 16 байт. Рассмотрим, к примеру, ситуацию, когда последовательно идут три инструкции размером 4 байта и инструкция размером 5 байт. В этом случае в 16-байтном блоке будут содержаться только три целые инструкции длиной по 4 байт, а четвертая инструкция размером 5 байт будет выбрана лишь в следующем 16-байтном блоке. Понятно, что в ситуациях, когда инструкции попадают на границы 16-байтных блоков, эффективность выборки, а следовательно, и декодирования снижается.

В микроархитектуре Sandy Bridge для того, чтобы нивелировать влияние недостаточного объема выборки, используется специальный буфер или кэш декодированных инструкций.

В микроархитектурах K10 и Bulldozer длина блока выборки увеличена вдвое, то есть составляет 32 байта (256 бит), что вполне согласуется с возможностями декодера.

Выбранные блоками по 32 байта х86-инструкции поступают в буфер IBB (Instruction Byte Buffer). Собственно, таких IBB-буферов два — по одному на каждое ядро процессорного модуля. Каждый IBB-буфер рассчитан на 16 записей размером по 16 байт, то есть имеет полную емкость 256 байт (на каждое ядро).

Процесс декодирования

После выборки инструкций x86 из кэша L1I наступает этап их декодирования (трансляции) в машинные команды. Этап декодирования присущ любому современному х86-совместимому процессору, имеющему внутреннюю RISC-архитектуру. В этих процессорах внешние CISC-команды длины декодируются во внутренние RISC-инструкции, для чего используется декодер команд.

Напомним, что х86-команды могут быть переменной длины, а вот длина микроопераций фиксированная.

Прежде чем рассмотреть процесс декодирования инструкций в микроархитектуре AMD Bulldozer, давайте определимся с терминологией. Дело в том, что компании Intel и AMD традиционно используют разную терминологию в отношении декодированных и недекодированных инструкций. При рассмот­рении микроархитектуры процессоров Intel x86- инструкции переменной длины называют макрооперациями (Macro-operations), а декодированные x86-инструкции фиксированной длины — микрооперациями (micro-ops, или uops). Терминология AMD совершенно иная. Недекодированные x86-инструкции переменной длины иногда называют инструкциями AMD64, но самое главное, что в терминологии AMD декодированные инструкции фиксированной длины называются макрооперациями (Macro-operations, или Mops). Макрооперации могут включать одновременно как арифметические операции, так и операции с памятью. К примеру, одна макрооперация может быть типа read-modify-write (прочитать­модифицировать-записать). Такие макрооперации иногда называют сложными (complex ops, или cops). Кроме макроопераций, которые содержат одновременно несколько действий, в микроархитектуре AMD рассматриваются микрооперации (uops). Разница между Mops и uops заключается в том, что uops может содержать только одну элементарную операцию (арифметическую операцию, операцию чтения или записи), а Mops содержит комбинацию нескольких элементарных операций. Теоретически каждая операция Mops может транслироваться в три операции uops.

В микроархитектуре AMD Bulldozer (как и в микроархитектуре K10) все x86-инструкции делятся на три категории: FastPath Singles, FastPath Doubles и VectorPath. Инструкции типа FastPath Singles — это простые инструкции, которые при декодировании транслируются в одну макрооперацию (Mops). Инструкции типа FastPath Doubles при декодировании транслируются в две макрооперации. Ну а инструкции типа VectorPath — это сложные инструкции, транслируемые в более чем две макрооперации.

При декодировании простые инструкции типа FastPath Singles и FastPath Doubles отсылаются в аппаратный декодер, построенный на логических схемах и называемый DirectPath, а сложные — в микропрограммный (Microcode Engine) декодер, называемый VectorPath (рис. 5). Этот декодер представляет собой своеобразный программный процессор. Он содержит программный код, хранящийся в MIS (Microcode Instruction Sequencer), на основе которого воспроизводится последовательность макроопераций.

 

Рисунок

Рис. 5. Декодер в микроархитектуре AMD Bulldozer

Аппаратный декодер DirectPath является четырехканальным и может декодировать за один такт четыре x86-инструкции FastPath Singles и FastPath Doubles, но так, чтобы скорость декодирования не превышала 4 Mops за такт. К примеру, это могут быть две инструкции FastPath Doubles, либо одна инструкция FastPath Doubles и две инструкции FastPath Singles, либо четыре инструкции FastPath Singles.

При декодировании сложных инструкций с использованием декодера VectorPath работа декодера DirectPath блокируется, то есть сложные инструкции не могут декодироваться одновременно с простыми. Микропрограммный декодер VectorPath предположительно способен выдавать по три Mops за каждый такт.

Примечательно, что в микроархитектуре AMD Bulldozer используется технология слияния x86-инструкций, аналогичная технологии Macro-Fusion в микроархитектуре Intel Core и Sandy Bridge. В терминологии AMD эта технология называется Branch Fusion. Смысл технологии Branch Fusion заключается в слиянии двух x86-инструкций в одну и ее декодировании в одну макрооперацию. Естественно, что слияние возможно только для определенного набора инструкций.

Макрооперации, полученные в результате декодирования инструкций, поступают в буфер Dispatch Group Buffers, где они объединяются в группы по 4 Mops. Далее группы по 4 Mops отправляются на исполнение.

Диспетчеризация и переупорядочение макроопераций

Как уже отмечалось, процесс выборки инструкций и их декодирования в микроархитектуре AMD Bulldozer является разделяемым между двумя ядрами в процессорном модуле. Из буфера Dispatch Group Buffers макрооперации, объединенные в группы по 4 Mops, направляются на исполнение на одно из двух ядер.

Первоначально группы по 4 Mops поступают в блок очереди отставки команд (Retirement Queue), который рассчитан на 128 записей (рис. 6).

 

Рисунок

Рис. 6. Блок внеочередного выполнения команд

Вообще, в любом современном процессоре x86 (исключение составляет только процессор Intel Atom) после декодирования команды поступают в блок внеочередного выполнения команд (Out-of-Order). Первоначально происходит переименование и распределение дополнительных регистров процессора, которые не определены архитектурой набора команд. Переименование регистров позволяет добиться исполнения команд вне очереди. На следующем этапе осуществляется переупорядочение декодированных инструкций не в порядке их поступления (Out-of-Order) с тем, чтобы впоследствии можно было реализовать их более эффективное выполнение на исполнительных блоках.

Существует два подхода к организации вне­очередного выполнения команд: с использованием буфера переупорядочение (ReOrder Buffer, ROB) и с применением физических регистровых файлов (Physical Register File, PRF).

При использовании ROB-буфера каждая декодированная инструкция имеет копию операнда или операндов, которые ей требуются. В случае применения физических регистровых файлов все операнды сохраняются именно в PRF. Это позволяет самим декодированным инструкциям сохранять лишь указатели на операнды, но не сами операнды. С одной стороны, такой подход позволяет снизить энергопотреб­ление процессора, поскольку перемещение по конвейеру микроопераций вместе с их операндами требует существенных затрат энергопотребления, а с другой — использование физического регистрового файла позволяет сэкономить место на кристалле.

В микроархитектуре AMD Bulldozer для сохранения операндов применяются как раз физические регистровые файлы. Все Mops переупорядочиваются в блоке отставки (Retirement Queue) и содержат лишь указатели на операнды, которые сохраняются в PRF-файлах. Для целочисленных операций и операций для работы с памятью используется физический регистровый файл на 96 записей, который содержит все переименованные регистры.

Для всех FP- и SIMD-макроопераций применяется отдельный регистровый файл на 160 записей.

Тут нужно напомнить, что вычислительный кластер для работы с FP-данными является разделяемым между двумя ядрами. Соответственно, как только в блоке очереди отставки операций (Retirement Queue) какого-либо ядра процессора встречается FP- или SIMD-макрооперация, она посылается на вычислительный FP-кластер, однако статус отставки этой операции отслеживается в целочисленном ядре в блоке Retirement Queue.

После того как все макрооперации переименованы, они направляются на планировщик инструкций (Scheduler). В целочисленном ядре планировщик инструкций рассчитан на 40 записей. Причем целочисленный планировщик является унифицированным, поскольку используется как для арифметических операций для работы с целочисленными данными, так и для операций с памятью. В разделяемом FP-кластере применяется свой планировщик инструкций на 60 записей.

В планировщике макрооперации сохраняются до тех пор, пока для их исполнения не будут готовы все необходимые данные.

Выполнение макроопераций

После того как все макрооперации прошли диспетчеризацию и переупорядочение в соответствующих планировщиках, они могут быть выполнены в соответствующих исполнительных устройствах.

Блок операций с целыми числами (рис. 7) состоит из четырех функциональных устройств: двух устройств для работы с адресами памяти (AGU0 и AGU1) и двух устройств для выполнения арифметических операций (ALU0 и ALU1). По мере готовности данных планировщик может запускать на исполнение из каждой очереди одну целочисленную операцию в устройство ALU и одну адресную операцию в устройство AGU. Количество одновременных обращений к памяти ограничено двумя. Таким образом, за каждый такт могут запускаться на исполнение три целочисленные операции, обрабатываемые в устройствах ALU, и две операции с памятью, обрабатываемые в устройствах AGU.

 

Рисунок

Рис. 7. Исполнительный блок в микроархитектуре AMDF Bulldozer

Разделяемый FP-кластер содержит четыре исполнительных устройства. Причем все исполнительные устройства являются 128-битными. Это особенно важно отметить с учетом того обстоятельства, что процессоры на базе микроархитектуры AMD Bulldozer поддерживают выполнение 256-битных AVX-инструкций. По всей видимости, каждая AVX-инструкция декодируется как два 128-битных Mops.

Как уже отмечалось, для работы с памятью (операции чтения и записи) в микроарахитектуре AMD Bulldozer предусмотрено по два исполнительных устройства AGU в каждом ядре процессорного модуля (рис. 8). Каждое устройство AGU связано с буфером загрузки (Load queue) на 40 записей и буфером записи (Store queue) на 24 записи, которые, в свою очередь, связаны уже с кэшем данных L1D размером 16 Кбайт. Этот кэш является 4-канальным с размером строки 64 байт.

 

Рисунок

Рис. 8. Подсистема памяти в микроархитектуре AMD Bulldozer

Для трансляции логических адресов памяти в физические используется полностью ассоциативный кэш L1 DTLB, рассчитанный на 32 записи. В случае промаха в кэше L1 DTLB данные запрашиваются в 8-канальном кэше L2 DTLB, который уже рассчитан на 1024 записи. Отметим, что и кэш L1 DTLB, и кэш L2 DTLB поддерживают не только 4-килобайтные страницы памяти (Small Page), но и 2-мегабайтные и гигабайтные страницы памяти (Large Page).

Теоретически кэш L1D может за один такт выдавать два 128-битных значения (операции Load) и записывать (операции Store) одно 128-битное значение, то есть имеет пропускную способность 48 байт за такт. Однако наличие лишь двух AGU не позволяет осуществлять три одновременных обращения к кэшу L1D.

Заключение

Завершая обзор новой процессорной мик­роархитектуры AMD Bulldozer, еще раз подчеркнем, что речь идет не просто о моддинге микроархитектуры предыдущего поколения, а о действительно новой микроархитектуре (рис. 9) Пока еще преждевременно делать выводы относительно производительности и конкурентоспособности новых процессоров AMD, однако тот факт, что с выходом новых процессоров компания AMD попытается взять реванш, сомнения не вызывает. Что ж, остается только занять места в партере и следить за этим увлекательным соревнованием.

 

Рисунок

Рис. 9. Микроархитектура AMD Bulldozer

 

В начало В начало

КомпьютерПресс 11'2010