Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архит_ч1_А4.pdf
Скачиваний:
56
Добавлен:
20.03.2015
Размер:
1 Мб
Скачать
☆

ГЛАВА 7. АРХИТЕКТУРА ПРОЦЕССОРОВ AMD

Американская компания AMD (Advanced Micro Devices, Inc.) в настоящий момент является второй по масштабам среди производителей x86 и x64-совместимых процессоров.

Ядро процессоров с архитектурой AMD использует другие принципы своего функционирования, по сравнению с Intel. По сути Athlon является RISC процессором – в режиме реального времени выполняется преобразование потока CISC команд в унифицированные RISC команды, которые согласно AMD-й терминологии называются MacroOps (mOP).

К8 – классический процессор Гарвардской архитектуры, см. рис. 7.1. Архитектура K8 используется во многих современных серверных, настольных и мобильных процессорах AMD (Opteron, Sempron, Athlon 64 и Athlon 64 X2). Эффективная длина конвейера (время в тактах от начала исполнения инструкции до момента, когда результаты выполнения будут записаны в оперативную память) варьируется от 10-12 стадий (для целочисленных, логических вычислений и обращений к оперативной памяти) до 17 стадий (вычисления с плавающей точкой). Количество одновременно исполняемых инструкций за такт в устоявшемся режиме – до трех; тактовые частоты серийно выпускаемых процессоров – от 1,6 до 2,8 ГГц.

Объем кэшей L1 D-cache (для данных) и L1 I-cache (для кода) – фиксирован и составляет по 64 Кбайт. В К8 имеется общий кэш второго уровня объемом от 128 до 1024 Кбайт. Кэш третьего и более низких уровней не предусмотрен.

Исполнение инструкций на конвейере K8 начинается с блока выборки инструкций. За один такт блок выбирает из кэша 16 байт данных и выделяет из них от одной до трех инструкций x86 – сколько в выбранных данных поместилось. Поскольку средняя длина инструкции x86 составляет 5-6 байт, то, как правило, блоку удается выбрать три инструкции за такт. Чтобы облегчить процесс декодирования, инструкции, хранящиеся в кэшах L1, тегированы (т.е. в линейках кэша сохраняется информация о том, как внутри этой линейки распределены инструкции x86). Попутно с помощью блока предсказания переходов в этом же такте определяется адрес блока, с которого начнется выборка в следующем такте. Тегирование производится при выборке данных из кэша L2 в кэш L1 I- cache. На втором такте работы конвейера, выбранные одна-три инструкции x86, распределяются по трем блокам декодирования инструкций. Самые сложные инструкции, требующие декодирования с использованием микрокода процессора, отправляются в декодер VectorPath. Более простые – в декодеры DirectPath или в сдвоенный DirectPath Double. Начиная с этого момента, процессор переключается на работу с внутренними микроинструкциями (mOP).

Весь дальнейший конвейер строится на том, что работа с mOP – и происходит тройками инструкций (AMD называет их линиями, line). С логической точки зрения конвейер K8 строится таким образом, что обрабатывает именно линии, а не x86 – инструкции или отдельные микрооперации. При этом в одной линии может быть меньше трех микроопераций. В этом случае «нехватку» в тройке заполняют специальные пустые операции (null-mOP). При этом со «сложными» vector-инструкциями все элементарно – VectorPath-декодер подставляет на их место прошитые в микрокоде процессора линии. А вот декодирование «простых» инструкций превращается в сложный процесс преобразования x86-инструкции в один (DirectPath) или два (DirectPath Double) mOP-а, которые потом упаковываются в одну линию специальным упаковщиком. Сгенерированные линии от VectorPath- и DirectPath-декодеров по одной за такт поступают в специальное устройство – Instructions Control Unit (ICU), где подготовленные к исполнению линии накапливаются в специальной очереди (24 линии).

Из очереди в 24 линии по три mOP-а в каждой ICU выбирает в наиболее удобной для исполнения последовательности один-три mOP-а и пересылает их либо на ALU, либо на FPU – в зависимости от типа микрооперации. В случае ALU микрооперации сразу же попадают в очередь планировщика (шесть элементов по три mOP-а), который подготавливает необходимые для исполнения микрооперации ресурсы, дожидается их готовности и только потом отправляет mOP вместе со всеми необходимыми данными на исполнение.

101

I-Cache (L1 code)

 

 

 

 

 

Выборка и предсказание

 

Блок предсказания

переходов

 

переходов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Direct

 

Direct Path

 

 

 

Vector

 

 

 

Микрокод

Path

 

Double

 

 

 

Path

 

 

процессора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Inter - Instructions decoding

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Decode

 

Decode

 

 

Decode

 

 

 

Decode

 

 

Decode

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Такт 6 Такт 4 и 5 Такт 3 Такт 1 и 2

Decode

Такт 7

 

 

 

 

Reorder Buffer

 

 

Reorder Buffer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reorder Buffer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sche-

 

 

Sche-

 

Sche-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

duler

 

 

duler

 

duler

 

 

 

 

STKREN

 

 

 

STKREN

 

STKREN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REGREN

 

 

 

REGREN

 

REGREN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11 и 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FP Scheduler

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Такт

AGU

) ALU

 

 

AGU

) ALU

 

AGU

) ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Load DATA

 

 

Load DATA

 

 

Load DATA

dataL1 fetch )

multiplication

 

 

dataL1 fetch )

multiplication

 

dataL1 fetch )

multiplication

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Unit

 

 

 

 

Unit

 

 

 

Unit

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FMISC

 

 

 

FMUL

 

 

FADD

(if

(if

 

 

(if

(if

 

(if

(if

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D-Cache

Load

mOPs

 

(L1 data)

 

Регистры процессора

 

 

Такт 8

Такт 9

Такт 10

Такт с 14 по 17 Такт 13

Рис. 7.1. Схема исполнения инструкций в AMD К8

Причем при исполнении одного mOP-а на самом деле может происходить исполнение сразу двух действий – несложных арифметических вычислений, которые часто возникают при обращении к оперативной памяти (ими занимается блок Address Generation Unit, AGU), и «сложных», требующих вмешательства ALU, – соответствующая «двойка» микроинструкций (ROP) закладывается в mOP еще на стадии декодирования. Подготовка данных в планировщике занимает (в идеальном случае) один такт, исполнение – от одного (подавляющее большинство инструкций) до трех (при обращении к оперативной памяти) и даже пяти (64-битное умножение) тактов.

В блоке FPU все чуточку сложнее. Для начала вышедшие из ICU mOP проходят две стадии по подготовке их операндов. Затем – накапливаются в планировщике FPU (двенадцать элементов по три mOP), который, дожидается, пока данные для этих mOP-ов будут готовы, а исполнительные устройства освободятся, и разбрасывает накопленные mOP-ы по трем исполнительным устройствам. Но в отличие от целочисленной части конвейера (где содержатся по три одинаковых блока ALU и AGU), исполнительные устройства FPU «специализированы» – каждое производит только свой специфический набор действий над числами с плавающей запятой. Время выполнения: два такта на переименование и отображение регистров, один такт (в идеале) на планирование и ожидание операндов, четыре такта на собственно исполнение.

Механизм прогнозирования в процессорах AMD более продвинутый, чем у аналогов из Intel, в частности используется не только таблица BTB, но и таблица глобальной истории переходов GHBC (Global History Bimodal Counters). И если BTB позволяет предсказывать переходы исходя из информации о предыдущих исходах именно этой команды, то GHBC позволяет учесть при

102

прогнозировании и исходы определенного количества условных переходов выполненных до текущего.

Еще применяется прогнозирование адреса возврата, используется специальный буфер, в который заносится следующий EIP после выборки CALL. При выборке ret процессор достает адрес возврата из своего буфера, а не из стека (попытки его перезаписать отслеживаются).

Целочисленное устройство в процессорах AMD выглядит следующим образом, см. рис. 7.2.

Instruction Control Unit and Register Files

(Устройство управления потоком команд и регистрами)

Микрооперации (МacroOPs) Микрооперации (МacroOPs)

Integer Scheduler (18-entry)

(Целочисленный планировцик)

IEU0

AGU0

 

IEU1

AGU1

 

IEU2

AGU2

 

 

 

 

 

 

 

 

Integer Multiply (IMUL)

Рис. 7.2. Целочисленный блок в процессорах AMD

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

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

У Intel, хотя и используются разные функциональные блоки, регистры FPU имеют такой же статус, как и регистры IEU и обслуживаются одной и той же RAT (RAT – Register Alias Table) и ROB (ROB – ReOrder Buffer).

Здесь же имеем полную изоляцию от целочисленного устройства, см. рис. 7.3.

Instruction Control

 

Такты

Unit

 

7

 

Stack Map

 

 

 

 

8

Register Rename

 

9,

Scheduler (36 – entry)

10

 

 

 

 

 

FPU Register File (88 – entry)

11

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

FADD

 

FMUL

 

FSTORE

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.3. Блок операций с плавающей точкой в процессорах AMD

103

После выполнения микроопераций в работу включается LSU (Load/Store Unit). Шины результата заведены именно на него. Кроме того, строки буфера могут использоваться как операнды.

В конце 2010 года компания AMD поделилась некоторой информацией о готовящихся к выходу процессорах, основанных на архитектурах Bulldozer и Bobcat, которые должны поступить на рынок в 2011 году.

Процессорная архитектура Bulldozer предназначена для создания чипов, ориентированных на применение в составе серверов, настольных компьютеров и ноутбуков. В то же время процессоры Bobcat будут использоваться в нетбуках, неттопах и мобильных устройствах. Первым чипом Bobcat станет 32-нанометровый APU (accelerated processing unit) Ontario, он в рамках одного кристалла получит одно вычислительное x86 ядро, контроллер памяти, графическое ядро и 512 КБ кэш-памяти второго уровня. Сообщается, что энергопотребление ядра такого устройства составит до 1 Вт. При этом уровень производительности процессора будет на уровне 90% относительно современных массовых решений, но при значительно меньших размерах чипа.

Архитектура Bulldozer дебютирует в серверном сегменте в рамках платформ Interlagos и Valencia Opteron. Первые процессоры также будут изготавливаться по нормам 32-нанометрового технологического процесса. Они получат модульную структуру, при этом каждый модуль включает в себя: один блок Float Point Scheduler, два блока Integer Scheduler с собственной кэш-памятью первого уровня для каждого блока, общую кэш-память второго уровня. При этом заявлено увеличение количества используемых ядер на 33% и увеличение производительности на 50% по сравнению с процессорами предшествующего поколения.

Вопросы для самоконтроля

1.Назовите основные блоки и их функциональное назначение в структуре процессоров

AMD.

2.В чем заключается отлицие архитектуры процессоров AMD от Intel?

Литература для самостоятельной подготовки по теме:

12, 13, 20.

104