Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Athlon от микропроцессоров к материнским платам - Михаил Кузьминский.pdf
Скачиваний:
50
Добавлен:
24.05.2014
Размер:
317.83 Кб
Скачать

Журнал "Открытые системы", #01-02, 2000 год

Athlon: от микропроцессоров к материнским платам

Михаил Кузьминский

16.01.2000

Появление AMD Athlon (предварительное название К7 указывало на то, что производитель относит его к седьмому поколению своих х86-совместимых микропроцессоров) cтало одним из наиболее ярких событий последнего времени как на рынке ПК. Вне зависимости от того, следует ли считать архитектуру IA-32 тупиковой, которую вытеснит IA-64, или нет, К7 свидетельствует о достижении процессорами x86 новых рубежей как по производительности, так и по соотношению стоимость/производительность.

Традиционно низкая стоимость микропроцессоров AMD и материнских плат на их основе делает новые продукты компании в отечественных условиях особенно привлекательными. К тому же, как мы увидим ниже, при равных тактовых частотах К7 превосходят по производительности конкурирующие с ними Intel Pentium III (но не высокочастотные Pentium III Coppermine с интегрированным кэшем второго уровня).

Кроме того, если ранее AMD не обеспечивала поддержку SMP-архитектур, то теперь такая функция реализована, причем ее следует признать даже более эффективной, чем у Intel. Это означает, что Athlon претендует и на новый для AMD сегмент рынка на многопроцессорные серверы. Все это и обуславливает очень высокий интерес к ним, в том числе и в России. Оставив в стороне финансовые, маркетинговые и тому подобные темы (которые, конечно, во многом влияют на успех продукции), обсудим только их технические особенности.

Микроархитектура AMD Athlon

Общее представление об микроархитектуре К7 дает рис. 1. В этой микроархитектуре немало усовершенствований по сравнению с AMD K6 [1], включая последнюю модификацию К6-3, и среди них достаточно трудно выделить одно, главное. (С моей точки зрения следует, однако, отметить, что К7 способен выполнять за такт больше команд.)

Начнем с кэша. Кэш-память первого уровня включает 2-канальные частичноассоциативные (наборно-ассоциативные) кэши команд и данных емкостью по 64 Кбайт каждый. Это в вдвое больше, чем в К6-3, и вчетверо больше, чем в Pentium III (табл.1). Однако из-за того, что кэши команд и данных первого уровня в Pentium III являются 4- канальными частично-ассоциативными, во многих случаях их «эффективная» емкость,

Рис. 1. Упрощенная схема микроархитектуры AMD K7

грубо говоря, увеличивается в два раза по сравнению с 2-канальной схемой.

Кэш данных К7 имеет 8 банков и обеспечивает одновременный доступ к двум 64разрядным величинам при выполнении команд загрузки регистров/записи в память. Другой важной особенностью К7 является наличие в блоке кэша команд специальной кэш-памяти предварительного декодирования, которая используется декодерами команд. Напомним, что в современных высокопроизводительных х86-совместимых процессорах (включая Intel Pentium II/III и AMD K6/K7) произошел отказ от выполнения х86-команд, поскольку они неудобны для достижения максимума производительности. Вместо этого х86-команды декодируются в более простые и эффективные внутренние RISC-подобные команды фиксированной длины, которые собственно и исполняются микропроцессором [1]. В K7 таких декодера три, и они работают параллельно, поэтому кэш предварительного декодирования в существенной степени способствует увеличению пропускной способности.

Кроме того, кэш команд первого уровня в К7 содержит двухуровневый блок быстрой переадресации страниц TLB, используемый для преобразования виртуальных адресов в физические: TLB первого уровня имеет емкость 24 строки, а TLB второго уровня256 строк. Аналогичный блок TLB в кэше данных первого уровня включает TLB первого уровня емкостью 32 строки и TLB второго уровня емкостью 256 строк. Отметим, что емкость TLB по сравнению с К6 сильно возросла. Наконец, кэш команд первого уровня содержит большую таблицу предсказания переходов емкостью 2048 строк, что позволяет достигнуть высокой вероятности правильного динамического предсказания переходов. Несколько неожиданным является то, что емкость этой таблицы оказалась ниже, чем в К6.

Из декодеров команды попадают в ICU-устройство управления командами (рис. 1) емкостью 72 строки. AMD K7, как и Pentium III, является суперскалярным микропроцессором с внеочередным спекулятивным выполнением команд. Большая емкость устройства управления командами позволяет К7 эффективно использовать свои ресурсы: число функциональных исполнительных устройств в этом процессоре больше, чем в К6 и Pentium III.

А именно, К7 имеет 9 функциональных исполнительных устройств, которые являются конвейерными и способны к внеочередному выполнению команд. В числе этих 9 устройств: 3 адресных конвейера, 3 целочисленных конвейера и 3 конвейера с плавающей запятой. Соответственно этому К7 может выполнять до 9 команд за такт, что больше, чем в К6-3 и Pentium III. Общая длина целочисленного конвейера в К7 составляет 10 стадий (в Pentium III – не менее 10 стадий), а конвейера с плавающей запятой – 15 стадий.

Сама AMD характеризует К7 как суперскалярный (т.е. способный выполнять несколько команд за такт) и суперконвейерный процессор. Последнее означает, что конвейеры К7 имеют большую длину (много стадий). Это, как известно, облегчает увеличение тактовой частоты. И действительно, длина целочисленного конвейера в Alpha 21264 почти в 2 раза короче [2]. Поэтому, в частности, неудивительно, что максимальная достигнутая на сегодня тактовая частота К7 (1 ГГц) выше, чем у известных своими высокими частотами процессоров Alpha (700 МГц у Alpha 21264). Однако напомним, что увеличение числа стадий имеет и свой минус: длинные конвейеры сложнее заполнять, и поэтому эффективность их использования может оказаться ниже.

Емкость «целочисленного» планировщика команд составляет 18 строк; через него команды поступают как в целочисленные, так и в адресные функциональные устройства. Аналогичный планировщик команд с плавающей запятой имеет емкость 36 строк. На работе блока команд с плавающей запятой стоит остановиться подробнее.

Прежде всего отметим, что этот блок обеспечивает работу в соответствии со стандартами IEEE754 и IEEE854 с одинарной (32 разряда), двойной (64 разряда) и расширенной (80 разрядов) точностью. Кроме того, эти функциональные исполнительные устройства работают с данными в форматах команд ММХ и 3DNow!.

Исполнительное устройство FSTORE выполняет команды загрузки регистров/записи в память. FADD, кроме сложения операндов с плавающей запятой, выполняет команды сложения из набора 3DNow! и ММХ-команды АЛУ и сдвига. FMUL, кроме умножения чисел с плавающей запятой, выполняет ММХ-команды АЛУ и умножения, команды 3DNow! с плавающей запятой, обращение чисел и специальные операции для поддержки деления.

Таким образом, К7 может одновременно выполнять сложение и умножение чисел с плавающей запятой в FADD и FMUL. Это дает пиковую производительность в 2 операции с плавающей запятой за такт, что вдвое больше, чем у Pentium III (мы не рассматриваем здесь мультимедийные команды, которые работают с одинарной точностью).

Это во многом и обуславливает тот факт, что именно по производительности с плавающей запятой К7 наиболее существенно опережает Pentium III (исключая Coppermine, что обусловлено иными причинами, которые мы рассмотрим ниже). Времена выполнения команд с плавающей запятой и пропускная способность (1 означает полностью конвейеризованную операцию) соответствующих функциональных исполнительных устройств приведены в табл. 2. Эти данные показывают, что время (длина конвейера) выполнения сложения в К7 на 1 такт больше, чем у Pentium III, зато умножение на 1 такт короче. Но гораздо важнее то, что умножение в К7 полностью конвейеризировано (пропускная способность равна 1 такту). У Pentium III это не так; по завершению умножения там возникает дополнительная задержка в 1 такт.

Обратимся теперь к мультимедийным командам К7, среди которых имеются и специализированные команды с плавающей запятой. Если ММХ-команды K7 совпадают с Intel x86, то поднабор команд AMD 3DNow! отличается от SSE. Общее число команд SSE равно 71, что много больше, чем в 3DNow!. В AMD K6-3 число команд 3DNow! равно 21; в AMD K7 к ним были добавлены еще 24 новые команды, в том числе 12 команд целочисленной математики (для обработки видео, распознавания речи и др.), 7 команд пересылки данных (используемых, например, в графических Webприложениях) и 5 команд, ориентированных на цифровую обработку сигналов, не имеющие аналогов в Pentium III.

Не стану пытаться выяснять, что лучше – 3DNow! или SSE, укажу лишь на одну общую особенность: эти расширения позволяют поддерживающим их процессорам AMD и Intel достигать пиковой производительности при операциях с плавающей запятой одинарной точности в 2 раза больше, чем тактовая частота (то есть 2 операции за такт). Это стало возможным благодаря применению SIMD-команд с двухмерными векторами.

Большинство сложных научно-технических приложений требуют вычислений с двойной точностью, при работе с которой лишь K7 способен выполнять 2 команды за такт. Кроме того, для достижения максимума производительности необходимо, чтобы компиляторы генерировали коды, содержащие SIMD-команды при работе с плавающей запятой одинарной точности. На момент написания статьи подобные компиляторы автору не были известны. Кстати, новые процессоры Pentium III Willamette будут содержать SIMD-команды и для работы с двойной точностью.

Внешние интерфейсы и другие характеристики К7

Важнейшим компонентом, определяющим производительность микропроцессора, являются характеристики внешнего кэша второго уровня и внешней системной шины процессора. Начнем с кэша. Выделенная шина между К7 и кэшем второго уровня имеет ширину 64 разряда плюс 8 разрядов на поддержку кодов ECC. Максимальная емкость кэша второго уровня в К7 составляет 8 Мбайт; внешний кэш большей емкости сегодня не поставляется ни с одним микропроцессором.

Реально поставляемые в настоящее время AMD K7 комплектуются кэшем второго уровня емкостью 512 Кбайт, как и Pentium III (у Pentium III Xeon внешний кэш

вместительнее; высокочастотные Pentium III Coppermine, напротив, имеют интегрированный кэш второго уровня емкостью всего 256 Кбайт).

Применение с К7 кэша второго уровня емкостью 512 Кбайт в определенном смысле наиболее эффективно, поскольку интегрированный в К7 контроллер кэша второго уровня содержит полные теги для кэша емкостью 512 Кбайт; при большей емкости кэша контроллер будет содержать только часть тега.

Сейчас при частотах K7 от 500 до 650 МГц кэш второго уровня работает на половинной частоте процессора, в моделях на 750/800 МГц применяется 2/5 частоты, от 900 МГц и выше – 1/3 частоты. Для сравнения, в Pentium III на шине кэша второго уровня используется половинная частота, но в Pentium III Xeon и Pentium III Coppermine кэш второго уровня работает на частоте процессора.

В К7 инженеры AMD впервые ввели поддержку SMP-архитектур, догнав в этом отношении Intel. Протокол, с помощью которого поддерживается когерентность кэша в K7, называется MOESI (от первых букв возможных состояний кэша-Modify, Owner, Exclusive, Shared, Invalid). По утверждению AMD, этот протокол впервые реализован в х86-совместимых процессорах.

Кэш первого уровня в К7 имеет отдельный snoop-порт, через который проходит трафик, обусловленной поддержкой когерентности. Трафик поддержки когерентности кэша также отделен от основного трафика и на системной шине, к рассмотрению которой мы и приступаем. Естественно, отделение snoop-трафика повышает эффективную пропускную способность шины, и, следовательно, эффективность SMP-конфигураций.

У шины AMD K7 есть два замечательных свойства. Во-первых, это не обычная общая шина, как в Pentium III, а коммутатор. Это очевидный плюс: коммутатор обеспечивает гарантированную пропускную способность для соединений «точка-точка», в то время как на общей шине возможны конфликты. Во-вторых, шина К7 имеет частоту 200 МГц (и может быть увеличена до 400 МГц). При ширине шины 64 разряда плюс 8 разрядов ЕСС она имеет пропускную способность 1,6 Гбайт/с при частоте 200 МГц против 800 Мбайт/с в 100-мегагерцевой шине Pentium III.

Такая более быстрая шина нужна не только для поддержки более быстрой оперативной памяти (скажем, РС133 или DDR), но и для обеспечения трафика ввода-вывода от шин PCI и графической платы. К этому вопросу мы еще вернемся при обсуждении наборов микросхем.

Такую высокую тактовую частоту системной шины AMD смогла достигнуть, в частности, благодаря более совершенной технологии синхронизации (управления временами событий). Собственно интерфейс системной шины К7 электрически совместим с протоколом шины Alpha EV6 [2]. Микропроцессор К7 подсоединяется через Slot A, который механически совместим со Slot 1, используемом в Pentium III. Соответственно число используемых контактов в Slot 1 и в Slot A совпадает (по 242).

Еще одной важной особенностью, влияющей на пропускную способность шины К7, является объем передаваемых по шине пакетов. Такая пакетная передача данных способствует конвейеризации обработки транзакций на шине. Для К7 размер пакета 64 байта (длина строки кэша), что вдвое больше, чем для Pentium III и AMD K6-3. При больших объемах передаваемых данных это, очевидно, плюс, но при маленьких передачах может несколько повысить задержки.

Другая важная особенность К7, способствующая эффективному использованию системной шины, является расщепленная обработка транзакций. Она, как известно, позволяет перекрывать выполнение различных транзакций во времени, разрешая начинать обработку новых транзакций, не дожидаясь завершения предыдущих. Если в Pentium III возможно выполнение до 8 транзакций на шине, то в К7 – уже до 24.