Особенности интеграции элементов RISC-архитектуры в процессорах серии x86
Организация первых моделей процессоров - i8086/8088 -была направлена, в частности, на сокращение объёма программ, отличавшихся малой оперативной памятью. Расширение спектра операций, реализуемых системой команд, позволило уменьшить размер программ, трудоёмкость их написания и отладки, но повы-сило трудоёмкость их разработки.
Последнее проявилось в удлинении сроков разработки CISC-процессоров и проявлении различных ошибок в их работе. Кроме того, нерегулярность потока команд ограничила развитие топологии временным параллелизмом обработки инструкций на конвейере «выборка команды, дешифрация команды, выборка данных, вычисление - запись результата».
Эти недостатки обусловили необходимость разработки аль-тернативной архитектуры, нацеленной, прежде всего, на снижение нерегулярности потока команд уменьшением их общего количест-ва. Это было реализовано в RISC-процессорах.
Сокращение нерегулярности потока команд позволило обо-гатить топологию RISC-процессоров пространственным паралле-лизмом, специализированными аппаратными АЛУ, независимыми кэш данных и команд, раздельными шинами ввода-вывода. По-следние, в частности, увеличили длину конвейеров команд. Всё это повысило и производительность - увеличением числа опера-ций, выполняемых за один такт, и быстродействие - сокращением пути транзактов - RISC-процессоров. При этом срок разработки данных чипов свидетельствует о том, что её трудоёмкость меньше, чем в случае CISC-процессоров.
На мировых рынках CISC-процессоры представлены, в ос-новном, клонами процессоров Intel серии x86, производимыми AMD, Cyrix, а RISC -чипами Alpha, PowerPC, SPARC. Уступая во многом последним, процессоры x86 сохранили лидерство на рын-ке персональных систем лишь благодаря совместимостис программным обеспечением младших моделей. В свою очередь, достоинства RISC-процессоров укрепили их позиции на рынке высокопроизводительных машин.
Несмотря на формальное разделение «сфер влияния», меж-ду представителями этих архитектур в начале 90-х годов началась острая конкуренция за улучшение характеристик. В первую оче-редь, производительности и её отношения к трудоёмкости разра-ботки процессоров.
Первыми к этому пришли разработчики Intel, реализовав-шие в i80486 пространственный параллелизм вычислений с фик-сированной и плавающей запятой. Поддержка каждого АЛУ своей шиной данных/команд и регистровым блоком повысила произво-дительность i80486 одновременным выполнением указанных ко-манд. Кроме того, интеграция кэш-памяти и очереди команд по-зволила поднять частоту ядра процессора в 2-3 раза в сравнении с системной шиной. Однако совместное размещение данных и ко-манд ограничило эффективность кэш необходимостью его полной перезагрузки после выполнения команд переходов.
Для устранения недостатка в Pentium реализованы раздель-ные кэш для команд и данных, позволяющие после переходов пе-резагружать лишь команды- такое решение называется Гарвард-ской архитектурой, а также предсказание переходов, снижающее частоту перезагрузок. Последнее достигается предварительной за-грузкой в кэш команд с обоих разветвлений. Введение второго це-лочисленного тракта, состоящего из АЛУ, адресного блока, шин данных/команд, и работающего на общий блок регистров, повы-сило производительность поддержкой параллельной обработки целочисленных данных. Развитием данной тенденции стало обо-гащение Pentium MMX мультимедийным трактом, образованным АЛУ, шинами данных/команд и регистровым файлом.
При этом в случае выборки двух целочисленных команд, зависящих по данным, каждая из них выполняется последователь-но, что снижает эффективность работы процессора. Частично по-правило ситуацию создание оптимизирующих рекомпиляторов, например, Pen-Opt фирмы Intel, разделяющих по возможности та-кие команды.
Реализация описанного управления обработкой команд CISC-формата вызвала дополнительный рост трудоёмкости раз-работки Pentium в сравнении с i8086/i80486, что привело не только к увеличению её реального срока на 27% в сравнении с ожидае-мым, но и к проявлению ошибок в первых моделях данного про-цессора
Учтя это, компания Intel реализовала в Pentium Pro RISC-подобную организацию вычислений. Интерпретация команд 80?86 внутренними - RISC86 - инструкциями VLIW-формата по-мимо снижения нерегулярности их потока, обеспечила синхрон-ную загрузку четырёх операционных - по два с плавающей и фик-сированной запятой - АЛУ этого чипа. Термин VLIW расшифро-вывается как "очень длинное командное слово" (Very Long Instruction Word). Инструкции этого формата содержат команды для всех параллельных АЛУ.
Обогащение управления обработкой предвыборкой данных и команд, предполагаемых к обработке в ближайшие 20 тактов, повысило регулярность загрузки вычислительных трактов. В свою очередь, осуществление предвыборки из интегрированного на кристалле кэш второго уровня, обслуживаемого раздельными ши-нами «интерфейс-кэш» и «кэш-АЛУ» и работающего на частоте АЛУ, повысило быстродействие подготовки команд в сравнении с внешними кэш. Дополнительное повышение производительности Pentium Pro обеспечило увеличение длины команд до 11 ступеней введением ступеней трансляции и предвыборки. Кроме того, инте-грация кэш второго уровня позволила умножать частоту ядра в 5-6 раз.
В архитектуре Р6 RISC - решения впервые в семействе 80?86 перестали быть лишь дополнением исконных CISC - средств повышения производительности - роста разрядности, от-ложенной записи шины и других. Поэтому частица PRO в назва-нии первого процессора этой серии обозначает «полноценная RISC-архитектура» (Precision RISC Organization).
Топологические новинки Pentium II - интеграция тракта MMX, мультипроцессорный интерфейс Xeon, вынесение кэш вто-рого уровня на кристалл в корпусе чипа, как и полное устранение кэш второго уровня в Celeron, не имеют в данном случае качест-венной роли и направлены на оптимизацию отношения характеристик этих процессоров, к их цене.
Снижение трудоёмкости и длительности разработки аппа-ратно – программных реализаций алгоритмов работы Pentium Pro, позволило достигнуть роста характеристик сочетанием преиму-ществ RISC&CISC архитектур.
Сказанное иллюстрирует и организация современных RISC-процессоров. Их отличает, в данном случае, развитие систем команд с целью сохранения иерархической совместимости и сни-жения трудоёмкости разработки программ. Это сближает техноло-гии обработки команд процессорами упомянутых архитектур. На-пример, SuperSparc взяли от последних моделей 80?86 предсказа-ние переходов и предварительную интерпретацию кода.
Таким образом, развиваясь, каждая из рассмотренных архи-тектур, «отказавшись» от своих черт - CISC от скалярности вы-числений, RISC от «простоты» системы команд, приобрела луч-шие характеристики её представителей. Это подтверждает и про-цессор Merced, разработанный Intel и Hewlett Packard.
Имеющиеся сведения позволяют предположить, что его ар-хитектура продолжит тенденции Pentium Pro по оптимизации об-работки внутренних VLIW – подобных команд реализацией эф-фективных архитектурных решений при одновременной оптими-зации преобразования «внешних» инструкций. Особо отмечаются намерения создания двух вариантов этого чипа, различающихся лишь множеством этих инструкций. Первый совместим с CISC-семейством 80?86, второй - с RISC-процессорами Alpha.
Merced в известной степени прекратил соперничество CISC и RISC, в ходе которого представители данных архитектур улуч-шили свои характеристики. Это позволило предположить, что дальнейшее развитие массовых процессоров пройдёт по пути раз-вития топологических и микропрограммных решений вычисли-тельного ядра RISC - организации при одновременном повышении возможностей CISC - подобной системы команд.
4.2. МП с традиционной архитектурой
4.2.1. Intel Pentium 4
Одной из особенностей архитектуры процессора Pentium 4 является гарвардская внутренняя структура, реализуемая путем разделения потоков команд и данных, поступающих от системной шины через блок внешнего интерфейса и размещённую на кри-сталле процессора общую кэш-память 2-го уровня L2 (рис. 3).
Блок внешнего интерфейса реализует обмен пpоцессоpа с системной шиной, к которой подключается память, контроллеры ввода / вывода и другие активные устройства системы. Обмен по системной шине осуществляется с помощью 64-разрядной двуна-правленной шины данных, 41-разрядной шины адреса (33 адрес-ных линии и 8 линий выбора байтов), обеспечивающей адресацию до 64 Гб внешней памяти.
Архитектура МП является суперскалярной, что обеспечива-ет одновременное выполнение нескольких команд в параллельно работающих исполнительных устройствах. Суперскалярность ар-хитектуры реализуется путем организации исполнительного ядра процессора в виде ряда параллельно работающих блоков. Арифме-тико-логические блоки ALU производят обработку целочисленных операндов, которые поступают из заданных регистров блока реги-стров замещения (БРЗ). В эти же регистры заносится и результат операции. При этом проверяются также условия ветвления для ко-манд условных переходов и выдаются сигналы перезагрузки кон-вейера команд в случае неправильно предсказанного ветвления. Исполнительное ядро работает с повышенной скоростью выпол-нения операций.
Адреса операндов, выбираемых из памяти, вычисляются блоком формирования адреса (БФА), который реализует интер-фейс с кэш-памятью данных L1 ёмкостью 8 Кбайт. В соответствии с заданными в декодированных командах способами адресации формируются 48 адресов для загрузки операндов из памяти в ре-гистр БРЗ и 24 адреса для записи из регистра в память. При этом БФА формирует адреса операндов для команд, которые ещё не по-ступили на выполнение.
При обращении к памяти БФА одновременно выдаёт адреса двух операндов: один для загрузки операнда в заданный регистр БРЗ, второй - для пересылки результата из БРЗ в память. Таким образом реализуется процедура предварительного чтения дан-ных для последующей их обработки в исполнительных блоках, ко-торая называется спекулятивной выборкой.
Рис. 3
Аналогичным образом организуется параллельная работа блоков SSE, FPU, MMX, которые используют отдельный набор ре-гистров и блок формирования адресов операндов. Хотя конвейер Pentium 4 является намного более длин-ным, он выполняет те же функции что и конвейеры других про-цессоров.
Из-за сложности архитектуры на рис. 2 не изображена каж-дая из ступеней конвейера. Тем не менее, связанные ступени сгруппированы воедино, чтобы можно было представить всю схе-му процессора и схему потока команд.
Особое внимание стоит уделить тому, что кэш-память L1 разделена и кэш инструкций находится фактически на препроцес-соре. Он называется отслеживающим кэшем (Trace Cache) и явля-ется одной из важных инноваций в Pentium 4. Эта кэш-память ока-зывает сильное влияние и на конвейер, и на основной поток инст-рукций.
Если рассмотреть процессоры Pentium III или Athlon, то можно отметить, что инструкции поступают в их декодер из кэш-памяти инструкций, в декодере они разбиваются на меньшие час-ти, более единообразные, с которыми проще работать, - микроко-манды. Фактически, эти инструкции применяются при внеочеред-ном выполнении команд, исполнительный модуль выполняет их планирование, исполнение и сброс. Такое разбиение случается всякий раз, когда процессор выполняет инструкцию, поэтому на эту операцию в начале конвейера отводится несколько ступеней (на рис. 3 и 4 эти ступени объединены, на самом же деле выборка инструкций занимает несколько ступеней, транслирование - не-сколько ступеней, декодирование - несколько, и т.д.).
Если взять фрагмент кода, повторно выполняющийся всего несколько раз по ходу программы, то для него такая потеря не-скольких тактов мало что означает. Но для фрагмента кода, где инструкции исполняются тысячи и тысячи раз (например, в цикле в мультимедийном приложении, выполняющем несколько опера-ций над большим файлом), количество повторных трансляций и декодирований может отнимать ощутимые ресурсы. Для того, чтобы избежать таких циклов, процессор Pentium 4 не осуществля-ет повторного разбиения 80x86-инструкций на микрокоманды при их выполнении.
Рис. 3
Кэш инструкций в Pentium 4 принимает транслированные и декодированные микрокоманды, готовые к передаче на внеоче-редное выполнение, и формирует из них мини-программы, назо-вем их трейс-последовательностями (traces). Именно эти мини-программы (а не 80x86-код, созданный компилятором) и выполня-ет Pentium 4 в том случае, если происходит попадание в кэш-память L1 (процент попадания - 90%). До тех пор, пока требуемый код находится в кэш-памяти L1. Схема выполнения представлена на рис. 4.
По мере выполнения препроцессором накопленных трейс-последовательностей, отслеживающий кэш посылает до трех мик-рокоманд за такт напрямую на внеочередной модуль выполнения, ведь процессору уже не нужно проводить команды через логику трансляции или декодирования. И только в случае промаха кэш-
86
памяти L1 препроцессор нарушит этот порядок и начнёт выби-рать и декодировать инструкции из кэш-памяти L2.
Рис. 4
В этом случае к началу основного конвейера добавляется ещё восемь ступеней. Как видно, кэш с отслеживанием может из-бавить от довольно большого количества тактов при выполнении программы.
Отслеживающий кэш может работать в двух режимах. Ис-полнительный режим (execute mode) был только что рассмотрен. Здесь отслеживающий кэш снабжает логику выполнения инструк-циями. В этом режиме он обычно и работает. Когда наступает промах кэш-памяти L1, он переходит в так называемый режим по-строения отслеживаемых сегментов (trace segment build mode) В этом режиме препроцессор выбирает 80x86-инструкции из кэш-памяти L2, транслирует их в микрокоманды, создает отслеживаемый сегмент, который затем перемещается в отслеживающий кэш и далее выполняется.
Из рис. 4 видно, что когда работает отслеживающий кэш, устройство предсказания ветвлений не участвует в работе, равно как не работают и ступени выборки/декодирования инструкций. На самом деле отслеживаемый сегмент - это нечто большее, чем просто фрагмент транслированного и декодированного кода 80x86, выданного компилятором и полученного препроцессором из кэш-памяти L2. В действительности, при создании мини-программы отслеживающий кэш все же использует предсказание ветвлений. Он может добавить в мини-программу (где содержится предназначенный для выполнения код) код, который только пред-полагается к выполнению при предсказании ветвления. Поэтому если имеется фрагмент x86-кода с ветвлением, отслеживающий кэш построит трейс-последовательность из инструкций до ветвле-ния, включая саму инструкцию ветвления. Затем он продолжит спекулятивно строить мини-программу вдоль предсказанной ветви (рис. 5).
Такое спекулятивное выполнение даёт отслеживающему кэшу два больших преимущества по сравнению с обычным кэшем инструкций. Во-первых, в стандартном процессоре для работы устройства предсказания ветвлений требуется некоторое время. При обработке условной инструкции ветвления устройство ветв-ления (BPU) должно определить, какую из ветвей нужно спекуля-тивно выполнять, найти адрес кода после ветвления и т.д. Весь этот процесс добавляет, по крайней мере, еще один такт задержки для каждой условной инструкции ветвления. Такая задержка часто не может быть заполнена выполнением другого кода, что приво-дит к появлению нежелательного пузырька (пустая ячейка в кон-вейере - pipeline bubble). В случае же использования отслеживаю-щего кэша, код после ветвления уже готов к выполнению сразу же после инструкции ветвления, поэтому показанных задержек не возникает.
Второе преимущество также связано с возможностью хра-нения спекулятивных ветвей. Когда стандартный кэш инструкций L1 считывает строку кэш-памяти, он прекращает считывание при попадании на инструкцию ветвления, поэтому оставшаяся часть строки остается пустой. Если инструкция ветвления находится вначале строки кэш-памяти L1, то в считанной строчке будет на-ходиться только одна эта инструкция. При использовании отсле-живающего кэша считанные строчки могут содержать как инст-рукции ветвления, так и спекулятивный код после них. Таким об-разом, в 6-командных строчках не возникает потерянного места.
Рис.5.
Кстати, большинство компиляторов сталкиваются именно с описанными двумя проблемами: с задержками в инструкциях ветвления и с неполными строками из кэш-памяти. Как видно, от-слеживающий кэш по-своему позволяет решать эти проблемы. Ес-ли программы оптимизированы с учетом этих возможностей, то они будут быстрее выполняться.
Ещё один интересный эффект, производимый отслеживаю-щим кэшем на препроцессор Pentium 4 заключается в том, что пропускная способность ступеней транслирования и декодирова-ния 80x86-команд не зависит от пропускной способности ступени диспетчеризации. Если вспомнить процессор AMD K7, то он расходует множество транзисторов на усиленный блок декодирова-ния 80x86-макрокоманд, что позволяет за цикл декодировать дос-таточно много громоздких 80x86-инструкций в микрокоманды для загрузки исполнительного модуля. В случае же с Pentium 4 нали-чие отслеживающего кэша означает, что большая часть кода заби-рается из него уже в виде готовых микрокоманд, так что здесь от-падает надобность в трансляторах и декодерах с высокой пропуск-ной способностью.
Процессор начинает декодирование только лишь в случае промаха кэш-памяти L1. Поэтому он разработан таким образом, чтобы декодировать только одну 80x86-инструкцию за такт. Это составляет всего треть от максимальной теоретической пропуск-ной способности декодера Athlon, но отслеживающий кэш в Pentium 4 позволяет ему достичь или даже обойти производитель-ность Athlon (2,5 диспетчеризации за такт).
Стоит обратить внимание и на то, как отслеживающий кэш обращается с очень длинными 80x86-инструкциями из нескольких циклов. Большинство 80x86-инструкций декодируются примерно в две или три микрокоманды. Но встречаются и такие инструкции, которые декодируются в сотни микрокоманд, например, инструк-ции по строковой обработке. Как и в Athlon, в Pentium 4 существу-ет специальное ПЗУ микрокода, которое обрабатывает эти гро-моздкие инструкции, что позволяет разгрузить аппаратный деко-дер для работы только с небольшими, быстрыми инструкциями.
Каждый раз, когда встречается громоздкая инструкция, ПЗУ находит готовую последовательность микрокоманд и выдаёт их дальше в по очереди. Чтобы не засорять отслеживающий кэш этими длинными последовательностями микрокоманд, разработ-чики поступили следующим образом: как только при создании от-слеживаемого сегмента отслеживающий кэш встречает такую большую 80x86-инструкцию, вместо того, чтобы разбивать её на последовательность микрокоманд, он вставляет в отслеживаемый сегмент метку (tag), которая указывает на место в ПЗУ, содержа-щее последовательность микрокоманд данной инструкции. Позд-нее, в режиме выполнения, когда отслеживающий кэш будет пере-давать поток инструкций на ступень выполнения, при попадании на такую метку он временно приостановит работу и на время передаст управление потоком инструкций ПЗУ микрокода. Здесь уже ПЗУ будет выдавать в поток инструкций требуемую последо-вательность микрокоманд (как определено меткой). После этого, оно возвратит управление обратно, и отслеживающий кэш про-должит передавать инструкции. Исполнительному модулю безраз-лично, откуда поступает поток инструкций (из отслеживающего кэша или из ПЗУ). Для него все это выглядит как непрерывный по-ток команд.
Единственным недостатком отслеживающего кэша является его размер: он слишком мал. Точные размеры его неизвестны. Он может содержать до 12 тысяч микрокоманд. Intel уверяет, что это примерно эквивалентно обычному кэшу команд на 16-18 тысяч инструкций. Но так как отслеживающий кэш работает совсем ина-че, нежели стандартный кэш инструкций L1, то для того, чтобы оценить, как его размер влияет на производительность всей систе-мы, нельзя обойтись простым сравнением его размера с кэш-памятью другого процессора.
Общая архитектура процессора определяет комплекс средств, предоставляемых пользователю для решения различных задач. Эта архитектура задаёт базовую систему команд процессора и реализуемых способов адресации, набор программно-доступных регистров (регистровая модель), возможные режимы работы про-цессора и обращения к памяти и внешним устройствам (организа-ция памяти и реализация обмена по системной шине), средства об-работки прерываний и исключений.
В процессоре Pentium 4 реализуется архитектура IA-32 (Intel Architеcture-32), общая для всех 32-разрядных микропроцес-соров Intel, начиная с 80386. Модели Pentium II Xeon и Pentium III Xeon ориентированы на работу в высокопроизводительных муль-типроцессорных системах (серверах, рабочих станциях). Для этих же приложений в 2001 году выпущена модификация процессора Pentium 4 с поддержкой мультипроцессорного режима работы (на ядре Foster).
В процессе развития IA-32 производилось расширение воз-можностей обработки данных, представленных в различных фор-матах (рис. 6). Процессоры 80386 выполняли обработку только целочисленных операндов. Для обработки чисел с плавающей точ кой использовался внешний сопроцессор 80387, подключаемый к микропроцессору. В состав процессоров 80486 и последующих моделей Pentium введён специальный блок FPU (Floating-Point Unit), выполняющий операции над числами с "плавающей точкой". В процессорах Pentium MMX была впервые реализована групповая обработка нескольких целочисленных операндов разрядностью 1, 2, 4 или 8 байт с помощью одной команды. Такая обработка обес-печивается введением дополнительного блока MMX.
Рис. 6
Название блока отражает его направленность на обработку видео- и аудиоданных, когда одновременное выполнение одной операции над несколькими операндами позволяет существенно повысить скорость обработки изображений и звуковых сигналов. Начиная с модели Pentium III, в процессоры вводится блок SSE (Streaming SIMD Extension) для групповой обработки чисел с пла-вающей точкой.
Таким образом, если первые модели процессоров Pentium выполняли только пооперандную обработку данных по принципу "одна команда - одни данные" (SISD), то, начиная с процессора Pentium MMX, реализуется также их групповая обработка по принципу "одна команда - много данных" (SIMD).
Соответственно, расширяется и набор регистров процессо-ра, используемых для промежуточного хранения данных (рис. 7).
Кроме 32-разрядных регистров для хранения целочисленных опе-рандов, процессоры Pentium содержат 80-разрядные регистры, ко-торые обслуживают блоки FPU и MMX. При работе FPU регистры ST0-ST7 образуют кольцевой стек, в котором хранятся числа с плавающей точкой, представленные в формате с расширенной точностью (80 разрядов). При реализации MMX-операций они ис-пользуются как 64-разрядные регистры MM0-MM7, где могут хра-ниться несколько операндов (8 8-разрядных, 4 16-разрядных, 2 32-разрядных или один 64-разрядный), над которыми одновременно выполняется поступившая в процессор команда (арифметическая, логическая, сдвиг и т.д.).
Рис.7
Блок SSE2, введённый в состав процессора Pentium 4, зна-чительно расширяет возможности обработки нескольких операн-дов по принципу SIMD, по сравнению с блоком SSE в модели Pentium III. Этот блок реализует 144 новые команды, обеспечи-вающих одновременное выполнение операций над несколькими операндами, которые раcполагаются в памяти и в 128-разрядных регистрах XMM0-XMM7. В регистрах могут храниться и одновременно обрабатываться 2 числа с плавающей точкой в формате двойной точности (64 разряда) или 4 числа в формате одинарной точности (32 разряда). Этот блок может также одновременно об-рабатывать целочисленные операнды: 16 8-разрядных, 8 16-разрядных, 4 32-разрядных или 2 64-разрядных. В результате про-изводительность процессора Pentium 4 при выполнении таких опе-раций оказывается вдвое выше, чем Pentium III.
Операции SSE2 позволяют существенно повысить эффек-тивность процессора при реализации трехмерной графики и ин-тернет-приложений, обеспечении сжатия и кодирования аудио- и видео-данных. Что касается базового набора команд и используе-мых способов адресации операндов, то они практически полно-стью совпадают с набором команд и способов адресации в преды-дущих моделях Pentium. Процессор обеспечивает реальный и за-щищённый режимы работы, реализует сегментную и страничную организации памяти. Таким образом, пользователь имеет дело с хорошо знакомым набором регистров и способов адресации, мо-жет работать с базовой системой команд и известными ва-риантами реализации прерываний и исключений, которые харак-терны для всех моделей семейства Pentium.
Pentium 4 является первым IA-32 (32-bit Intel Architecture) процессором, использующим не P6 архитектуру. Сегодня эта ар-хитектура получает название с использованием терминологии - Intel NetBurst.
Первой особенностью NetBurst архитектуры является то, что Intel называет гиперконвейерной технологией, что является несколько причудливым термином для 20-ти шагового конвейера Pentium 4. Эти 20 шагов или стадий – вдвое длиннее P6 конвейера, которым оснащен Pentium III и в четыре раза длиннее, чем P5 кон-вейер. Как известно, более длинный конвейер имеет свои “за” и “против”.
20-ти шаговый конвейер Pentium 4, позволяет ему работать на более высокой тактовой частоте. По этой причине Pentium 4 бу-дет дебютировать на скорости 1.4 ГГц и выше. Но 20-ти шаговый конвейер Pentium 4 приводит к уменьшению значения IPC (инст-рукций за такт).
Имеется множество путей восполнения низкого IPC. Один из них, наиболее очевидный, заключается в простом увели-чении тактовой частоты, что Intel и сделала. Нет сомнения, что на любом современном эталонном тесте 1ГГц Pentium III по-сравнению с гипотетическим 1ГГц Pentium 4 показал бы значи-тельно больший результат, потому что выполняет больше инст-рукций за такт, чем Pentium 4.
В современных процессорах предусмотрены средства уве-личения эффективности конвейеров засчет предсказания хода программы. Когда процессор правильно предсказывает следую-щую команду, все идет согласно плану, но когда предсказание сделано неверно, цикл обработки должен начаться с начала. Из-за этого процессор с 10 шаговым конвейером имеет несколько мень-ший штраф за неправильный переход, чем процессор с 20 шаго-вым конвейером.
Для уменьшения недостатков более длинного конвейера, архитектура NetBurst имеет несколько особенностей.
Как уже указывалось ранее, АЛУ Pentium 4 работает на уд-военной тактовой частоте. Это означает, что АЛУ 1.4ГГц Pentium 4 работает на 2.8ГГц, а у 1.5ГГц Pentium 4 на 3.0ГГц. Считается, что это дает Pentium 4 явное преимущество в производительности в целочисленных операциях. Однако практика показала, что ос-новной причиной удвоенной частоты АЛУ является восполнение более низкий IPC NetBurst архитектуры.
Другая особенность связана со снижением влияния более длинного конвейера заключается в том, что Intel называет Execution Trace Cache. Декодер любого 80x86 процессора (модуль, который берет выбранные инструкции и декодирует их в форму, понятную вычислительным модулям) является одним из самых медленных модулей. Execution Trace Cache действует как посред-ник между стадией декодирования и первой стадией выполнения. Trace cache по существу кэширует декодированные micro-ops (ин-струкции после того, как они были выбраны и декодированы, т.е. полностью готовы к выполнению) так, чтобы вместо прохождения процесса выборки и декодирования при выполнении новой коман-ды Pentium 4 мог обратиться к trace cache, получить декодирован-ные micro-ops и начинать выполнение.
Это помогает уменьшать штраф, связанный с неправиль-но предсказанным переходом в длинном конвейере Pentium 4. Другой особенностью trace cache является, то, что он кэширует micro-ops в предсказанном пути выполнения, означая, что, если Pentium 4 выбрал 3 инструкции из trace cache, то они уже пред-ставлены в порядке выполнения. Это добавляет некоторый потен-циал для неправильного предсказания пути выполнения кэшируе-мых micro-ops, однако Intel уверена, что это будет компенсиро-ваться новыми алгоритмами предсказания, используемых в Pentium 4.
Intel отказалась от обычного метода определения размера кэш-памяти, по крайней мере для Execution Trace Cache. Вместо этого заявлено, что trace cache может кэшировать приблизительно 12K micro-ops. В дополнение к Execution Trace Cache, Pentium 4 имеет 8KB L1 Data Cache. Очевидно, что это меньше 16KB L1 Data Cache Pentium III. Такой размер кэш-памяти был сделан для дос-тижения лучшего отношения цены и производительности для Pentium 4.
Pentium 4 также имеет 256KB L2, работающий на основной тактовой частоте процессора. Этот кэш имеет большую ширину полосы частот, чем текущий 256KB L2 в Pentium III. Основной причиной является работа на большей тактовой частоте, а также передача данных на каждом такте.
В терминах полосы частот, доступной L2, гипотетический Pentium III работающий на тактовой частоте 1.5ГГц имел бы ско-рость передачи 24GB/s. Pentium 4 на той же тактовой частоте име-ет 48GB/s. L1 в Pentium 4 (включая Execution Trace Cache) дубли-руется в L2.
4.2.2. AMD Athlon
Микроархитектура Athlon представлена на рис.8. С целью увеличения пропускной способности декодеров, которые переко-дируют 80х86-команды во внутренние макрооперации, в блок кэш-памяти команд первого уровня добавлена специальная кэш-память предварительного декодирования. Эти макрооперации представ-ляют собой по сути RISC-команды, которые, собственно, и исполняются. Подобная схема перекодирования из 80х86 в RISC ис-пользуется и в Pentium III, и в предыдущих процессорах AMD, и в некоторых других 80х86-совместимых процессорах.
Рис.8
В Athlon таких декодеров три, а число выдаваемых на вы-полнение за такт команд больше, чем в Pentium III. Команды в де-кодеры попадают из кэш команд первого уровня. Он является двухканальным, а его емкость составляет 64 Кбайт, что в четыре раза выше, чем в Pentium III. Кроме того, блок кэш команд в AMD содержит два уровня буферов быстрой переадресации TLB: перво-го уровня — на 24 строки, а второго — на 256.
Емкость кэш данных первого уровня в Athlon также в четы-ре раза больше, чем в Pentium III, и составляет 64 Кбайт. Он явля-ется двухканальным и включает двухуровневый блок TLB. Кэш данных имеет восемь банков, что позволяет одновременно загру-жать в регистры или писать из них в кэш до двух 64-разрядных ве-личин. Команды из кэш команд поступают в декодеры, а оттуда — в блок управления командами, емкость которого 72 строки.
Athlon является суперскалярным микропроцессором с вне-очередным спекулятивным выполнением команд. Большая ем-кость очереди команд позволяет Athlon эффективно использовать свои ресурсы: число функциональных исполнительных устройств в нем больше, чем в Pentium III.
Совокупность вышеуказанных факторов уже объясняет, по-чему производительность Athlon выше, чем в Pentium III. В Athlon имеется три целочисленных устройства и три устройства с пла-вающей запятой. Кроме того, Athlon содержит три адресных уст-ройства. Все исполнительные устройства способны работать во внеочередном режиме. Для этого в арифметических устройствах имеются «планировщики», содержащие очереди команд емкостью 18 (для целочисленных устройств) и 36 (для вещественных уст-ройств) строк соответственно.
Следует отметить, что в составе МП имеются следующие устройства с плавающей запятой: cумматор, умножитель и модуль загрузки регистров/записи в память. Они могут работать парал-лельно, поэтому производительность микропроцессора (в MFLOPS) в два раза выше, чем его тактовая частота (1,3 GFLOPS при 650 МГц), и в два раза выше, чем у Pentium III при той же час-тоте. Кроме того, умножитель Athlon - это настоящий конвейер. Физических регистров с плавающей запятой в Athlon - 88, что по-зволяет использовать технологию переименования регистров.
Athlon не только суперскалярный, но еще так называемый и суперконвейерный микропроцессор. С одной стороны, большое число ступеней конвейеров (10 — в целочисленном и 15 — в ве-щественном конвейере) позволяет легче поднимать тактовую час-тоту. С другой стороны, это вызывает проблему заполнения кон-вейеров: если они не заполняются, производительность падает. Наиболее «опасными» будут при этом программы нерегулярного характера с большим числом условных переходов, которые трудно динамически предсказывать. Кстати, в Athlon блок динамического предсказания переходов включает таблицу предыстории на 2048 строк. Такой большой объем позволяет добиться очень высокого качества предсказания переходов.
В Athlon расширена система команд 3D–Now!. Их теперь 45, из них 24 - новых, в том числе: 12 команд целочисленной ма-тематики для обработки видео и распознавания речи; 7 команд пе-ресылки данных, ориентированных на программы, подобные Inter-net-приложениям, работающим с графическими данными; 5 новых команд для цифровой обработки сигналов
Кроме рассмотренных выше блоков микропроцессора, Ath-lon имеет встроенное управление внешней кэш-памятью второго уровня и сопряжение с системной шиной. Интеграция в микро-процессор функций управления внешней кэш-памятью позволяет Athlon иметь L2, расположенный на выделенной шине с програм-мируемой частотой. Поддерживается совместимость с индустри-альными стандартами SRAM, в том числе DDR и SDR. Кроме то-го, этот блок содержит память тегов для L2 наиболее популярного размера 512 Кбайт, при этом емкость L2 может составлять до 8 Мбайт.
Системный интерфейс Athlon обеспечивает соединения «точка-точка», то есть фактически мы имеем дело с коммутатором, а не с общей системной шиной, как у Pentium III. Важным пре-имуществом коммутаторов является то, что в отличие от систем-ной шины они не имеют конфликтов и обеспечивают гарантиро-ванный уровень пропускной способности. Это особенно важно для многопроцессорных SMP-систем.
Системный интерфейс шириной 8 байт может работать на частотах от 200 до 400 МГц, что обеспечивает гораздо более высо-кую пропускную способность, чем у шины Pentium III. Однако, по некоторым данным, на тестах пропускной способности оператив-ной памяти (STREAM) Athlon лишь незначительно опережает Pen-tium III. Важным преимуществом системного интерфейса Athlon является расщепленная обработка транзакций (до 24 на процессор против 4 в Pentium III). При этом пакетный протокол может пере-давать блоки в 64 байт против 32 байт у Pentium III.
Максимальная поддерживаемая емкость оперативной памя-ти составляет у Athlon 7 Тбайт против 64 Гбайт в Pentium III; впрочем, это отличие вряд ли имеет сегодня практическое значе-ние. Учитывая высокую пропускную способность системного ин-терфейса, он явно проектировался в расчете на использование с Athlon технологии RAMBUS. Увеличилась и надежность: теперь как шина внешней кэш-памяти, так и системный интерфейс ис-пользуют ECC-коды.
Athlon имеет площадь 128 кв. мм и производится по 0,18-микронной технологии с шестислойной металлизацией. Он ис-пользует разъем типа Slot A, механически совместимый со Slot 1 и близкий к применяемому в Alpha EV6.
Оглавление |
|