- •2.3. Устройства ввода вывода
- •ГЛАВА 3. АРИФМЕТИЧЕСКИЕ ОСНОВЫ ЭВМ
- •3.1 Системы счисления и понятие кода
- •3.2. Арифметические основы ЭВМ
- •3.2.1 Форма представление чисел с фиксированной запятой
- •ГЛАВА 4. ЛОГИЧЕСКИЕ ОСНОВЫ ЭВМ
- •4.1. Логические основы построения и работы компьютеров
- •4.2. Электронные технологии логических элементов ЭВМ
- •ГЛАВА 5. ПРОГРАММНАЯ МОДЕЛЬ МИКРОПРОЦЕССОРА
- •ГЛАВА 6. СТРУКТУРА ПРОЦЕССОРОВ IA-32
- •ГЛАВА 7. АРХИТЕКТУРА ПРОЦЕССОРОВ AMD
ГЛАВА 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
