Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сравнение архитектур процессоров AMD K7 Athlon против Pentium III - Andreas Stiller.pdf
Скачиваний:
49
Добавлен:
24.05.2014
Размер:
198.27 Кб
Скачать

Сравнение архитектур процессоров : AMD K7 Athlon против Pentium III

Внешне они почти одинаковы, Athlon и Pentium III, но работают очень по разному. Athlon на несколько лет моложе и существенно сильнее благодаря своим кэш - мускулам. Но и у Pentium III есть некоторые (немногие) плюсы в архитектуре.

Когда главный конструктор AMD Dirk Meyer представил основы архитектуры Athlon на Microprocessor Forum в октябре 1998 (тогда процессор всё ещё назывался К7), более чем 1500 присутствующих - и среди них много работников Intel - были, очевидно, под впечатлением от увиденного. Вскоре после этого Intel решил опубликовать дополнительные детали относительно своего Merced, чтобы привлечь какое - то внимание.

И на самом деле чип от AMD с 22 млн. транзисторов мог показать впечатляющие результаты: до девяти модулей могут работать одновременно - три целочисленных модуля

IEU (equal integer units), три модуля вычисления адреса и три floating point/MMX/multimedia модуля. Дополнительно существуют модули погрузки/хранения и ветвления.

Интересный факт: уже в первых прототипах K6-3D было три целочисленный конвейера. Однако декодер не мог поставлять данные достаточно быстро. Поэтому третий конвейер практически всегда простаивал, и AMD удалила его из финальной конструкции. Но для Athlon всё по другому: декодер команд способен выдавать три х86 команды за такт и поставлять их на конвейеры. Как и у К6, он изменяет х86 команды 1:1 в упрощённые структурированные основные инструкции, так называемые ROP, которые произведены из RISC - схемы. Дополнительно присутствует четвёртый декодер, который переводит сложные команды с "векторным путём" и микрокодами ROM, и изменяет их в несколько ROP - инструкций.

Athlon способен загружать до 72 таких декодированных ROP в свой "модуль контроля команд". В Pentium III только два декодера, работающих параллельно, и кроме них ещё один специальный декодер, интерпретирующий сложные команды в команды микрокода.

Athlon способен декодировать три простых x86 команды параллельно (Direct Path); четвёртый декодер отвечает за сложные команды

(Vector Path).

(Кликните на картинке, чтобы получить увеличенное изображение, 36К)

Декодер модифицирует х86 инструкции в RISC - подобные операции, называемые OP, и передаёт их во временное хранилище 'Reservation Station', в котором помещаются до 20 ОР, а уже оттуда они передаются на одиннадцать вычислительных модулей, но через только пять портов. Каждый порт может передать одну ОР / такт, то есть максимум пять инструкций могут быть переданы одновременно. Имеются два целочисленных исполняющих модуля (порты 0 и 1). Дополнительно порт 0 собирает операции целочисленного деления DIV, сдвига, и три FPU - FMUL, FDIV и FADD. Порт 1 также используется для выполнения операций ветвления. Другие порты зарезервированы для загрузки данных и адресных вычислений.

Покажи мне свой конвейер

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

Конвейер должен иметь адекватную длину. Если он слишком короткий, параллелизм такого решения невысок. Вдобавок, каждый элемент такого конвейера должен работать интенсивнее, что приводит к необходимости снижения рабочей частоты конвейера. Если конвейер слишком длинный, это позволяет ему работать на высоких частотах и достигать высокого параллелизма, однако такое решение очень чувствительно к ветвлению программ, так как требуется большее время, чтобы заполнить конвейер. Теоретические вычисления дают оптимум в 8-9 ступеней для классических целочисленных бенчмарок. Со своими 10 тактами Athlon близок к этому оптимуму, а вот у Pentium III 12-17, иногда больше тактов, и это перебор.

С десятью тактами конвейер Athlon-а находится в области оптимума...

Рассматривая операции с плавающей точкой, разница в дизайне процессоров ещё больше. Хотя Intel никогда не публиковал архитектуру конвейера, судя по времени задержки - это около 30 ступеней, а у Athlon - 15.

Для процессора с более длинным конвейером предсказание ветвлений должно быть как можно более точным. Athlon работает с двумя большими таблицами, в которых запоминается ветвление программы: BHT (Branch History Table) и BTB (Branch Target Buffer). BHT состоит из 4096 индивидуальных 2-битных счётчиков, а в BTB помещается до 2048 адресов. Предполагается, что эта система должна обеспечить в среднем до 95% правильных предсказаний. У Pentium III система содержит BTB на 512 адресов, что даёт вероятность правильного прогноза 90%.

Оба используют трюк для подпрограмм, который Cyrix использовал в своих 5х86: стек возврата. Обычно алгоритм, вызываемый CALL, заканчивается командой RET. Процессор запоминает адрес возврата и состояние конвейеров в своём внутреннем стеке и не ждёт, пока эти данные будут читаться из кэша или из памяти при возврате из подпрограммы. Это сильно ускоряет работу для программ с короткими и часто вызываемыми подпрограммами. Для Athlon стек возврата имеет 12 ступеней (а у К6 даже 16). У Pentium III таких ступеней, вероятно (это незадокументировано), только 4, что маловато.

Богатство кэша

Кэш первого уровня L1 у Athlon в четыре раза больше, чем у Pentium III (2х64КВ против 2х16КВ), что, несомненно, отражается на производительности. Кэш второго уровня L2 так же расположен вне кристалла процессора. Но скорость работы, у P III - половина частоты процессора, у Athlon может принимать значения 1:1, 2:3, 1:2 и 1:3.

Тогда как у Pentium III контроллер кэша расположен как отдельный компонент на модуле, у Athlon он интегрирован на кристалле. Он поддерживает размер кэша от 512КВ до 8МВ и работает с ним по отдельной 72-битной backside шине: 64 + 8 бит для ЕСС (error correction). В качестве системной Athlon использует шину, которая выглядит, как у Pentium II, но работает совсем по другому. AMD лицензировала у Digital протокол шины EV6 от Alpha 21264, который работает с 64 битами на 100 MHz, используя оба фронта

волны тика (так называемый DDR: Double Data Rate) что даёт эффективную скорость работы 200 MHz. Таким образом шина, которую AMD называет 'S2K', достигает максимальной скорости трансфера 1,6 GByte/s, что в два раза больше, чем у конкурента. Дальнейшие воплощения будут работать на 133 MHz, и, наконец, на 200 MHz, давая таким образом 3,2 GByte/s.

Шина, как она есть

Шина S2K в основном, пакетная. Если адреса не идут друг за другом, то их выборка становится сравнительно трудоёмким занятием. Фактически шина имеет только 13 адресных каналов для направления. Процессору необходимо прочитать направление, чтобы проверить, не нужен ли адрес, находящийся в кэше, другому процессору или busmaster.

Это ограничение - цена за недорогой слот (AMD называет его Slot A), обязанный работать с большими потоками данных: почти половина из 242 пин Slot A заняты под заземление и питание ядра процессора, так что не остаётся достаточно места для 64 каналов данных, 36 адресных каналов и нескольких управляющих каналов. А вот Slot 1 у Pentium III использует только четверть пин для заземления и питания.

Athlon может сохранять до 72 декодированных ROP. Все девять модулей (IEU: Целочисленный, AGU: Генерации адреса, FPU: Плавающей точки) могут работать параллельно.

Архитектура Pentium III позволяет сохранять до 20 OP, которые могут передаваться через пять портов.

Чтение пакетами - довольно общий метод, в том числе и для шин PCI или AGP. Доступ к основной памяти с большей вероятностью будет прыгать по адресам, но для динамической памяти применяется расщепление адреса на две части (RAS и CAS), так что применение хорошего протокола расщепления адресов на более мелкие части должно уменьшать задержки. Адресное пространство Athlon - 43 бита (8 терабайт), что значительно больше, чем 36 бит у Pentium.

На мультипроцессорных чипсетах Pentium III процессоры должны делить каналы, а следовательно, и полосу пропускания. А для шины EV6 применяются соединения типа точка-к-точке, иногда называемое порт. Например, такого же рода разница и между PCI и AGР.

В случае EV6 каждый процессор имеет свой собственный "путь" к чипсету, таким образом имея доступ ко всей полосе пропускания. Это сильно усложняет разработку материнских плат для мультипроцессорных систем, так как каждый процессор должен иметь доступ к своим 140 каналам. Управление такой системой при 200 MHz требует длительной разработки, но к счастью для AMD, это всё уже разработал Digital. У него также есть чипсет на два процессора (Tsunami), пока только для систем Alpha. А сам протокол шины поддерживает до 14 процессоров, но чипсеты пока отсутствуют.

Для EV6 каждый процессор имеет backside шину кэша L2 и свой собственный путь

кчипсету (Point-to-Point-Topology).

Вшине также присутствуют пережитки прошлого из времён 8-битных РС - например, mask signal для линии А20. Вместо того, чтобы отказаться от этой бессмыслицы и не вставлять А20 в новую шину, AMD передала всё это и на процессор Alpha, который использует эту же шину (под названием Slot B) на новых платах UP1000 и UP2000 от API (Alpha Processor Inc.). Правда, скорее всего, Alpha будет игнорировать эту чепуху.

Турбо-FPU

В Athlon присутствуют модули, выполняющие операции с плавающей точкой инструкции мультимедиа - FPU, MMX или 3DNow!. В К6 FPU было слабым звеном: не было никакой конвейерной обработки, то есть следующая команда всегда должна была дожидаться выполнения предыдущей. Поэтому производительность операций с плавающей точкой была значительно ниже, чем у Pentium II. У Athlon всё по другому - FPU обрабатывается конвейером, то есть каждый следующий такт начинается обработка следующей команды. С некоторыми ограничениями это справедливо и для FMUL и FDIV, которые всё ещё не обрабатываются конвейером в Pentium III.

Кроме того, эти три модуля разделяют работу: один отвечает за обычные операции FPU, другой за умножение и третий за хранение. Плюс к этому AMD улучшила время задержки, и в целом FPU показывает на 50% лучшую производительность, чем у Pentium II/III.

На первый взгляд модули MMX и 3DNow! почти такие же, как у K6-2/III. Так же работают два канала. Но плюс к этому AMD добавил 24 команды к набору инструкций. Это все те расширения, что Intel использовал для Pentium III, например, усреднение байта или слова для вычислений минимума и максимума, или перетасовка байтов или слов. Присутствуют также команды MASKMOVQ и PMOVMSKB, которые передают результаты сравнения в память или целый регистр. Однако это относительно медленный процесс, потому что эти инструкции обрабатываются по "векторному пути".

Кстати, у Pentium III для ММХ задержка меньше - один такт, а не два. Так что Athlon нужно более качественное программирование для выполнения последовательных инструкций. Однако, для скоростей около 1 GHz применять задержку в один такт станет очень трудно.

3DNow! Пока притормаживает

Набор команд 3DNow! для Athlon расширен по сравнению с K6-III - например, введена команда переставления половинок 32-битного слова (PSWAPD). Для Athlon возможно подавать каждый такт две инструкции в оба конвейера, но задержка для большинства команд 3DNow! - четыре такта, против двух у K6-2/III, а при необходимости обращения к модулю загрузки/хранения время задержки может быть ещё больше. На той же самой частоте K6-III немного лучше, чем Athlon выполняет инструкции 3DNow!.

Однако, при 500 MHz K6-III достигает предела возможностей, а вот для Athlon это только начало. Его цель - 1 GHz и выше, а это требует более длинных конвейеров и большего времени задержки. Однако применяя более тщательное программирование, можно "скрыть" эти задержки, и для большинства задач оптимальная производительность (две инструкции за такт) вполне достижима. Помощь в виде оптимизирующих инструментов