Архитектура процессоров AMD

Опубликовано в Компоненты ПК, Процессоры

Архитектура процессоров AMD. Перейдем к рассмотрению микроархитектуры про­цессора AMD Athlon 64, который лежит в основе процессоров 10 поколения (Phenom II). Как ожидается, в середине 2010 года на смену этой отлично обкатанной, но устаревшей архитектуре придет новая, известная в данный момент под кодовым именем Bulldozer

Существует достаточно много версий ядра про­цессоров AMD Athlon 64, которые различаются технологией производства, размером кэш-памяти и другими незначительными изменениями архи­тектуры.



Однако в основе всех этих ядер лежит одна и та же микроархитектура. Микроархитектура AMD существенно отличается от рассмотренной микроархи­тектуры процессоров Intel. Сравнивая конструктивную схему ядра процессора на основе микроархитектуры AMD 64 со схемой легендарного К7 (ядра, ставшего основой процессоров AMD Athlon), можно заметить, что общих черт у них больше, чем различий. Однако, несмотря на внешнее сходство, новое ядро процессора все же претерпело существенные изменения. Итак, обо всем по порядку.

Архитектура процессоров AMD

Ядро процессора AMD

Схема работы ядра нового процессора в полной мере соответствует рассмотренной схеме «классического» процессора. Поток инструкций в формате х86-64 ISA (о том, что это такое, мы расскажем чуть позже) поступает в схему предпроцессора (Front End) из кэша L1. Кэш первого уровня (L1) остался точно таким же, как и в процессорах семейства Athlon ХР, то есть имеет общий размер 128 Кбайт и разделен на кэш данных (D-cache) и кэш инструкций (I-cache), каждый размером по 64 Кбайт. Кэш L1 остался ассоциативным двухканальным с размером кэш-блока 64 байт. Кэш инструкций поддерживает два набора дескрипторов (тегов): fetch port (порт выборки) и snoop (слежение).



Кэш данных поддерживает 40-битный физический и 48-битный линейный адреса и уже три типа тегов: port A, port В и snoop. Кроме того, кэш данных поддерживает две 64-битные операции записи/чтения за один такт в различные банки кэша. Кэш второго уровня (L2) может иметь максимальный размер до 1 Мбайт. Сам кэш является эксклюзивным по отношению к кэшу L1,16-канальным, ассоциативным. Как и в большинстве современных х86-совместимых процессоров, имеющих внут­реннюю RISC-архитектуру, в процессоре с архитектурой AMD 64 внешние CISC- команды декодируются во внутренние RISC-инструкции, для чего используется декодер команд.

Сначала инструкции х86 разделяются на большие (Large х86 Instruction) и малень­кие (Small х86 Instruction). Большие, или сложные, инструкции поступают в программный (Microcode Engine) декодер, а маленькие, или простые, — в аппа­ратный (Fastpath) декодер. Оба декодера выполняют одну и ту же задачу — транс­лируют х86-инструкции в простейшие машинные команды (микрооперации), на­зываемые Ops. Сами х86-команды могут быть переменной длины, а вот длина микроопераций уже фиксированная.

Простые инструкции при декодировании представляются с помощью двух-трех Ops-команд, и с этой задачей вполне может справиться аппаратный декодер, по­строенный на логических схемах. Сложные команды при декодировании могут представляться несколькими десятками и даже сотнями Ops-инструкций. Чтобы их декодировать, используется специализированный программный декодер, пред­ставляющий собой своеобразный процессор. Такой декодер содержит программный код, хранящийся в MIS (Microcode Instruction Sequencer), на основе которого воспроизводится последовательность Ops-инструкций.

Структурная схема процессора AMD Athlon 64

Структурная схема процессора AMD Athlon 64

Каждый из двух декодеров может обрабатывать инструкцию длиной до 16 байт и выдавать по три Ops-инструкции за такт, поэтому в общей сложности оба деко­дера производят шесть декодированных инструкций за каждый такт процессора.

Попутно отметим, что декодер в новом ядре претерпел существенные изменения. Именно в него были добавлены две ступени конвейера по сравнению с ядром про­цессора Athlon ХР. Кроме того, известно, что если в ядре Athlon ХР команды SSE декодировались с использованием Microcode Engine, то есть считались сложными, то в новом ядре эти команды декодируются с использованием Fastpath, то есть являются простыми.



После прохождения декодера Ops-инструкции (по три за каждый такт) поступа­ют во временный буфер хранения, называемый Instruction Control Unit (ICU). Этот буфер рассчитан на хранение 72 декодированных инструкций. Впрочем, хра­нение — не единственное предназначение ICU, а его главная задача заключается в диспетчеризации трех инструкций за такт по функциональным устройствам. То есть ICU распределяет инструкции в зависимости от их назначения и посы­лает инструкции по работе с целыми числами в целочисленный планировщик (Int. Scheduler), а инструкции для работы с вещественными числами — в плани­ровщик для работы с вещественными числами (FPU Scheduler).

Планировщик для работы с вещественными числами рассчитан на 36 инструкций (как и в процессоре Athlon ХР), и его основная задача заключается в том, чтобы распределять команды по исполнительным блокам по мере их готовности. Про­сматривая все 36 поступающих инструкций, FPU-планировщик переупорядочи­вает следование команд, строя спекулятивные предположения о дальнейшем ходе программы, чтобы создать несколько полностью независимых друг от друга очере­дей инструкций, которые можно выполнять параллельно. В ядре процессора име­ются три исполнительных блока нужных в работе с вещественными числами (FADD, FMUL и FMISC), поэтому FPU-планировщик должен формировать по три инструк­ции за такт, направляя их на исполнительные блоки.

Все целочисленные инструкции направляются в планировщик инструкций для работы с целыми числами, образованный тремя станциями резервирования (RES), каждая из которых рассчитана на восемь инструкций. Все три станции, таким об­разом, формируют планировщик на 24 инструкции (емкость аналогичного плани­ровщика в процессоре Athlon ХР составляла 18 инструкций). Этот планировщик выполняет те же функции, что и FPU-планировщик. Различие заключается в том, что в процессоре имеется семь функциональных исполнительных блоков по ра­боте с целыми числами (три устройства ALU, три устройства AGU и одно устрой­ство MULT).

Исполнительные устройства также претерпели некоторые изменения по сравнению с процессором Athlon ХР. Как уже отмечалось, для работы с вещественными чис­лами реализовано три функциональных устройства FPU, каждое из которых пред­ставляет собой 17-ступенчатый конвейер (как и в процессоре Athlon ХР), то есть  в работе с вещественными числами предусмотрено три разделенных конвейера. Подобная реализация блока FPU позволяет выполнять до трех вещественных операций за такт, причем такая производительность является рекордной для х86-совместимых процессоров.



Блок операций с целыми числами также полностью конвейеризирован, но по сравнению с процессором Athlon ХР длина конвейера увеличена с 10 до 12 сту­пеней. Блок состоит из трех распараллеленных частей, что в итоге позволяет выполнять три целочисленные операции за один такт (кроме умножения). В умножении требуется три такта в случае 32-битных чисел и пять тактов в случае 64-битных.

Говоря об архитектурных особенностях нового ядра, нельзя не упомянуть об изме­нениях, коснувшихся кэша TLB (Translation Look-aside Buffers). Кэш TLB — это специальный кэш процессора, хранящий карту декодированных адресов инструк­ций и данных, что позволяет значительно сократить время доступа к ним. Данный кэш предназначен для уменьшения времени преобразования виртуального адреса данных или инструкций в физический. Дело в том, что процессор, в силу своих особенностей, не может хранить и использовать физические адреса, а пользуется виртуальной адресацией. Преобразование виртуального адреса в физический за­нимает приблизительно три такта процессора. TLB-кэш хранит результаты преды­дущих преобразований, благодаря чему преобразование адреса данных, использо­вавшихся ранее, возможно осуществлять за один такт.

Ядро процессора имеет двухуровневый TLB (LI TLB и L2 TLB), также разделя­ющийся на буфер данных и буфер инструкций. LI TLB кэширует 40 адресов инструкций и 40 адресов данных. Этот кэш является полностью ассоциативным и поддерживает страницы емкостью как 4 Кбайт, так и 2 или 4 Мбайт.

Кэш L2 TLB является четырехканальным ассоциативным кэшем с поддержкой страниц емкостью 4 Кбайт. Этот кэш рассчитан на 512 записей, что в два раза боль­ше, чем в процессоре Athlon ХР.

64-разрядная архитектура процессоров AMD

Как уже отмечалось, одним из главных новшеств процессоров AMD Athlon 64 является 64-разрядная архитектура х86-64 ISA. Прежде всего попытаемся ответить на вопрос: зачем вообще нужны 64-разрядные процессоры и имеют ли они преиму­щество перед 32-разрядными? Давайте вспомним, что 32-разрядная адресация памяти позволяет адресовать только 4 Гбайт памяти. Конечно, для пользовательских приложений на данный момент такого объема вполне хватает, но... это сейчас. А завтра все может измениться. В серверных приложениях 4 Гбайт памяти уже сегодня может оказаться явно недостаточно. Правда, современные серверные про­цессоры и чипсеты с х86-32-архитектурой позволяют адресовать более чем 4 Гбайт памяти (типичным значением является 12 Гбайт), но достигается это не за счет плоской прямой адресации, а за счет эмуляции 36-битной адресации (которая позволяет адресовать до 64 Гбайт памяти). Впрочем, такая адресация имеет и свои минусы. Во-первых, это отражается на производительности, а во-вторых, при такой эмуляции максимальная память, которую может использовать один поток прило­жения, все равно не превышает 4 Гбайт.



64-битная адресация, используемая в процессорах AMD Athlon 64, является полно­стью совместимой с архитектурой х86-32, то есть на таком процессоре вполне можно использовать и 32-разрядные приложения — просто при этом возможности процес­сора задействуются не в полной мере, но в любом случае дополнительный запас адресации не повредит. Последнее обстоятельство, то есть возможность использо­вания обычных 32-разрядных приложений, в этом плане особенно важно. Для таких процессоров не потребуется специализированных операционных систем и программ, и нет нужды ждать, пока производители ПО перекомпилируют свои приложения.

Для реализации 64-разрядности в процессор добавлено несколько новых регистров, а существующие регистры соответственно расширены с 32 до 64 бит. Так, к восьми регистрам общего назначения добавлено еще восемь 64-битных регистров, исполь­зование которых возможно только при соответствующей перекомпиляции про­граммного кода.

Расширение 32-битных регистров до 64-битных осуществляется точно так же, как в свое время (с момента появления процессора i386) 16-битные регистры были расширены до 32-битных.

Для реализации возможности работы как с 32-битными, так и с 64-битными при­ложениями процессор поддерживает два режима работы: Long Mode и Legacy Mode. В Long Mode используется 64-битный режим работы, причем здесь также преду­смотрено два режима: 64-битный и Compability Mode (совместимый). 64-битный режим работы — это, собственно, истинный 64-битный режим, задействующий все дополнительные регистры процессора и 64-битные расширенные регистры. Для ра­боты в этом режиме требуется соответствующая перекомпиляция ПО.

В режиме Compability Mode дополнительные регистры не задействуются, а в реги­страх общего назначения используется только 32-битная часть. Единственное, что в данном случае напоминает о 64-битной архитектуре, — это использование 64-разрядной адресации и 64-битной операционной системы. В данном режиме не требуется перекомпиляции приложений для их нормальной работы.

В режиме Legacy Mode используется 32-разрядная операционная система, то есть 32-разрядная адресация. Кроме того, не задействуются дополнительные регистры, а в регистрах общего назначения используются только первые 32 бита. Таким об­разом, Legacy Mode — это традиционный 32-битный режим работы процессора.



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

Контроллер памяти

Контроллер памяти в AMD Athlon 64 интегрирован в сам процессор. Традиционно он располагается в северном мосте чипсета на материнской плате. Собственно, контроллер памяти — это основной функциональный блок северного моста. Неда­ром в чипсетах Intel этот мост называют МСН (Memory Controller Hub). Преиму­щество такого решения очевидно — контроллер памяти, интегрированный в про­цессор, обеспечивает низкую латентность при обращении к памяти. Контроллер памяти процессора поддерживает ООИ2-память (DDR2-533/667/800) в двухканальном режиме работы и имеет ширину шины 64 бита.

Сам по себе контроллер памяти включает два функциональных блока: контроллер памяти МСТ и контроллер DRAM DCT. DCT — это физический интерфейс, зави­сящий от конкретного типа используемой памяти. МСТ — интерфейс согласования ядра процессора с DCT, не зависящий от типа используемой памяти.

Контроллер HyperTransport

Революционным новшеством процессора AMD Athlon 64 является поддержка шины Hyper Transport — универсальной шины межчипового соединения. В ее осно­ву положены две концепции: универсальность и масштабируемость. Универсаль­ность шины Hyper Transport заключается в том, что она позволяет связывать меж­ду собой не только процессоры, но и другие компоненты материнской платы, о чем мы еще расскажем. Масштабируемость шины дает возможность наращивать про­пускную способность в зависимости от конкретных нужд пользователя.



Устройства, связываемые по шине Hyper Transport, соединяются по принципу «точка — точка» (peer-to-peer), что подразумевает возможность связывания в це­почку множества устройств без использования специализированных коммутаторов. Передача и прием данных могут происходить в асинхронном режиме, причем пе­редача данных организована в виде пакетов длиной до 64 байт.

Масштабируемость шины HyperTransport обеспечивается посредством магистра­ли шириной 2, 4, 8,16 и 32 бита в каждом направлении. Кроме того, предусматри­вается возможность работы на различных тактовых частотах. При этом передача данных происходит по обоим фронтам тактового импульса.