Процессор — проблема выбора

Сергей Пахомов

Общие замечания

Процессор Intel Pentium 4

Процессор AMD Athlon XP

 

2002 год запомнится как невероятно насыщенный в плане выпуска компаниями AMD и Intel новых моделей процессоров. Для компании Intel речь идет о целом спектре моделей процессоров Intel Pentium 4 и Intel Celeron, а для компании AMD — о модельном ряде Athlon XP. В этой статье мы намерены сравнить две различные технологии процессоров Intel Pentium 4 и Athlon XP, не затрагивая, однако, вопроса их производительности.

Общие замечания

Прежде чем приступить к рассмотрению архитектур реальных процессоров, необходимо напомнить основные принципы работы процессоров на основе конструктивной схемы простейшего гипотетического, или «классического», процессора.

В основе архитектуры любого процессора есть несколько конструктивных элементов: кэш команд и данных, предпроцессор (Front End) и постпроцессор, называемый также блоком исполнения команд (Execution Engine; рис. 1).

Процесс обработки данных состоит из нескольких характерных этапов. Прежде всего инструкции и данные забираются из кэша L1 (который разделен на кэш данных и кэш инструкций). Эта процедура называется выборкой. После этого выбранные из кэша инструкции декодируются в понятные для данного процессора примитивы (машинные команды). Данная процедура называется декодированием. Далее декодированные команды поступают на исполнительные блоки процессора, выполняются, а результат записывается в оперативную память.

Процессы выборки инструкций из кэша, их декодирование и продвижение к исполнительным блокам осуществляются в предпроцессоре, а процесс выполнения декодированных команд — в постпроцессоре. Таким образом, даже в самом простейшем случае команда проходит как минимум четыре стадии обработки:

  • выборка из кэша;
  • декодирование;
  • выполнение;
  • запись результатов.

Данные стадии принято называть конвейером обработки команд. В нашем случае конвейер является четырехступенчатым. Важно, что каждую из этих ступеней команда должна проходить ровно за один такт. Соответственно для четырехступенчатого конвейера на выполнение одной команды отводится ровно четыре такта.

Конечно, рассмотренный нами процессор является в определенной мере гипотетическим. В реальных процессорах конвейер обработки команд может быть более сложным и включать большее количество ступеней. К примеру, как мы увидим в дальнейшем, конвейер процессора Intel Pentium 4 включает 20 ступеней. Однако сама идеология построения процессора остается неизменной. Причина увеличения длины конвейера заключается в том, что многие команды являются довольно сложными и не могут быть выполнены за один такт процессора, особенно при высоких тактовых частотах. Поэтому каждая из четырех стадий обработки команд (выборка, декодирование, выполнение, запись) может состоять из нескольких ступеней конвейера. Собственно, длина конвейера является одной из наиболее значимых характеристик любого процессора.

Всякий процессор в конечном счете должен быть сконструирован таким образом, чтобы за минимальное время выполнять максимальное количество инструкций. Именно количество выполняемых за единицу времени инструкций и определяет производительность процессора.

Существует два принципиально различных подхода к повышению производительности процессора (не считая, конечно, увеличения тактовой частоты). Суть первого заключается в том, чтобы за счет уменьшения длины конвейера увеличивать количество исполнительных блоков. Таким образом, по существу реализуется множество параллельных коротких конвейеров. При этом постпроцессор работает по классической схеме: осуществляет выборку команд, их декодирование и посылку на множество исполнительных блоков. Такой подход позволяет в полной мере реализовать параллелизм на уровне инструкций (Instruction-Level Parallelism, ILP), когда несколько инструкций выполняются одновременно в различных исполнительных блоках процессора. Важно, что количество ступеней конвейера внутри постпроцессора (исполнительного блока) здесь невелико, поэтому инструкции выполняются за небольшое количество циклов.

Для того чтобы реализовать параллелизм на уровне инструкций, необходимо, чтобы поступающие на исполнительные блоки команды можно было выполнять параллельно. Однако если, к примеру, для выполнения следующей по порядку инструкции требуется знать результат выполнения предыдущей инструкции (взаимозависимые инструкции), то в этом случае параллельное выполнение невозможно. Поэтому препроцессор прежде всего проверяет взаимозависимость команд и переупорядочивает их не в порядке поступления (out of order), а так, чтобы их можно было выполнять параллельно. На последних ступенях конвейера инструкции выстраиваются в исходном порядке.

Короткий конвейер, как, впрочем, и длинный, имеет свои сильные и слабые стороны. Чем больше количество ступеней, на которые разбит конвейер, тем меньшее количество работы выполняется на каждой ступени и, следовательно, тем меньше времени требуется для прохождения командой данной ступени. С учетом того, что каждая ступень выполняется за один процессорный такт, длинные конвейеры позволяют повышать тактовые частоты процессора, что невозможно в случае коротких конвейеров.

Итак, при коротком конвейере на каждой ступени процессор способен выполнять большее количество работы, однако на прохождение инструкции через каждую ступень конвейера здесь требуется больше времени, что ограничивает повышение тактовой частоты процессора. В этом случае увеличение числа команд, выполняемых за единицу времени, достигается за счет распараллеливания инструкций и наращивания исполнительных блоков процессора.

При использовании длинного конвейера возможно увеличение тактовой частоты процессора, то есть сам конвейер оказывается более быстрым. Использование длинных конвейеров с высокими тактовыми частотами процессора — это второй подход к увеличению производительности процессора. Именно такая идеология длинного конвейера заложена в архитектуре процессора Intel Pentium 4. При использовании длинного конвейера в постпроцессоре, то есть на стадии исполнения инструкций, задействуется меньшее количество исполнительных блоков, каждый из которых обладает длинным и соответственно быстрым конвейером. Это означает, что каждый блок исполнения (Execution Unit) имеет больше доступных для выполнения тактов и способен одновременно выполнять довольно много инструкций. К примеру, вместо трех устройств для выполнения операций с вещественными числами (FPU), имеющих короткий конвейер, у процессора может быть только один блок FPU с длинным конвейером, на различных ступенях которого может одновременно выполняться большее количество инструкций.

Как мы уже отмечали, длинный конвейер имеет свои подводные камни. Дело в том, что в случае длинного конвейера постпроцессора предпроцессору необходимо обеспечивать его соответствующую загрузку. Для этого предпроцессор должен обладать довольно большим буфером, способным вмещать достаточное количество инструкций. Если же в кэше L1 отсутствует инструкция или данные для конвейера, то образуются так называемые pipeline bubbles (конвейерные пузырьки). Такие pipeline bubbles проходят все ступени конвейера, ни на одной из которых не производятся никакие действия. Наличие таких pipeline bubbles негативно отражается на производительности процессора, поскольку ресурсы процессора просто-напросто простаивают. Избежать возникновения подобных нежелательных простоев в процессорах позволяют различные хитроумные алгоритмы.

В начало В начало

Процессор Intel Pentium 4

Итак, ознакомившись с общей информацией о возможных архитектурах процессора, перейдем к рассмотрению микроархитектуры процессора Intel Pentium 4.

Конечно, новым этот процессор назвать нельзя. Время его рождения — август 2000 года. Но, пожалуй, именно 2002-й можно считать годом его окончательной победы и завоевания всеобщего признания как самим процессором, так и новой процессорной микроархитектурой.

Начав со скромной (по сегодняшним меркам) тактовой частоты в 1,4 ГГц в 2000 году, сегодня Intel Pentium 4 перешагнул рубеж в 3 ГГц, но наряду с количественным ростом тактовой частоты изменение претерпела и микроархитектура процессора — к концу 2002 года корпорация Intel анонсировала процессор с поддержкой революционной технологии Hyper-Threading.

Современный модельный ряд процессоров Intel Pentium 4 весьма широк и включает модели, различающиеся как тактовой частотой, так и размером кэша L2, частотой процессорной шины, технологией производства, ядром процессора.

Процессор Intel Pentium 4 может быть построен на ядре Willamette или на ядре Northwood. Разница между этими двумя типами процессоров следующая:

  1. Процессоры на ядре Willamette изготавливаются по 0,18-микронной технологии и имеют кэш-память второго уровня (L2), равную 256 Кбайт.
  2. Процессоры на ядре Northwood изготавливаются по 0,13-микронной технологии и имеют в два раза большую кэш-память второго уровня, то есть 512 Кбайт.

У процессоров Intel Pentium 4 бывает либо 400-мегагерцевая, либо 533-мегагерцевая процессорная шина. Разрядность этих шин одинаковая, и различаются они только своей максимальной пропускной способностью. В случае 533-мегагерцевой шины она составляет 4,2 Гбайт/с, а у 400-мегагерцевой — 3,2 Гбайт/с.

Процессоры Intel Celeron аналогичны Intel Pentium 4, но отличаются вдвое меньшим размером кэша второго уровня (128 Кбайт). Кроме того, все процессоры Intel Celeron рассчитаны на 400-мегагерцевую шину.

Процессоры Intel Pentium 4 и Intel Celeron, независимо от размера кэша и ядра, объединяет одно: микроархитектура Intel NetBurst. Именно с нее мы и начнем наше рассмотрение процессоров Intel.

Как уже отмечалось выше, процессор Intel Pentium 4 имеет беспрецедентно длинный конвейер — 20 ступеней (Hyper-Pipelined Technology). Архитектура, заложенная в процессоре, получила название Intel NetBurst. Структурная схема процессора изображена на рис. 2.

Сравнивая схему классического процессора со схемой процессора Intel Pentium 4, можно заметить несколько конструктивных различий. Прежде всего, инструкции поступают в предпроцессор из кэша L2, а не из кэша L1, как в классической схеме.

Кэш второго уровня L2 процессоров семейства Pentium 4 получил название Advanced Transfer Cache. Имеющий 256-битную шину, работающую на частоте ядра, и усовершенствованную схему передачи данных, этот кэш обеспечивает высочайшую пропускную способность, столь важную для потоковых процессов обработки.

Кроме того, в схеме предпроцессора появился новый элемент — кэш L1 декодированных микроинструкций с отслеживанием исполнения (Trace Cache). Наличие такого кэша  — одна из составляющих архитектуры NetBurst. (Кэш L1 данных размеров (8 Кбайт) также присутствует в процессоре, но разнесен с кэшем L1 инструкций.)

Давайте попробуем разобраться, зачем потребовалось изменять классическую схему процессора и вводить новый кэш микроинструкций. При работе процессора инструкции выбираются из кэша L2, транслируются в команды х86 и декодируются. При этом с учетом того, что конвейер имеет много ступеней и должен быть достаточно быстрым, при декодировании инструкции разбиваются на более мелкие микрокоманды, которые затем поступают в Trace Cache. Для выборки команд из кэша L2, их транслирования в команды х86 и последующего декодирования отводится несколько начальных ступеней конвейера (восемь ступеней). Соответственно при выполнении фрагмента программного кода для декодирования команд будет использовано восемь процессорных тактов. Однако во многих современных (прежде всего мультимедийных) приложениях один и тот же фрагмент кода может повторяться многократно. В этом случае тратить процессорные такты на повторную выборку, транслирование и декодирование было бы нерационально. Выгоднее хранить уже готовые к исполнению микроинструкции в специальном кэше L1, где из них формируются мини-программы, называемые отслеживаниями (traces). При попадании в кэш L1 происходит внеочередное выполнение команд; при этом значительно экономятся ресурсы процессора, так как по своей сути внеочередное выполнение команд подразумевает устранение восьми первых ступеней конвейера, фактическая длина которого в этом случае составляет уже 20 ступеней. В кэше с отслеживанием может храниться до 12 000 декодированных микрокоманд. (При этом заметим, что в процессоре Intel Pentium 4 процент попадания в кэш составляет более 90%.)

Если рассмотреть работу процессора Intel Pentium 4 при внеочередном выполнении команд, то есть когда происходит попадание в Trace Cache и используются уже декодированные команды, то схема работы процессора Intel Pentium 4 будет подобна схеме работы классического процессора. Режим работы процессора при внеочередном выполнении команд является естественным для процессора Intel Pentium 4 (рис. 3), поэтому, когда мы говорим о длине конвейера в 20 ступеней, мы имеем в виду длину основного конвейера без учета восьми первых ступеней, которые используются при необходимости выборки команд, их трансляции, декодирования и сохранения в Trace Cache полученных микрокоманд. Общая же длина конвейера составляет 28 ступеней.

Для того чтобы обеспечить высокий процент попаданий в кэш L1 с отслеживаниями (Trace Cache) и построение в нем мини-программ, используется специальный блок предсказания ветвлений (Branch Targets Buffers, BTB и Instruction Translation Look-aside Buffers, I-TLB). Этот блок предсказания позволяет модифицировать мини-программы, основываясь на спекулятивном предсказании. Так, если в программном коде имеется точка ветвления, то блок предсказаний может предположить дальнейший ход программы вдоль одной из возможных ветвей и с учетом этого спекулятивного предсказания построить мини-программу. Кроме того, с кэшем L1 связан также 4-Кбайт буфер ветвлений (BTB).

Технология использования кэша с отслеживанием вкупе с усовершенствованным алгоритмом предсказания получила название Advanced Dynamic Execution и является составляющей частью технологии NetBurst.

Кэш микроинструкций с отслеживаниями имеет еще одну особенность. Дело в том, что большинство команд х86 при декодировании преобразуются в две-три микроинструкции. Однако встречаются и такие команды, для декодирования которых потребовались бы десятки и даже сотни микрокоманд. Естественно, что сохранять такие декодированные команды в кэше L1 было бы нерационально. Для этих целей используется специальная ROM-память (uСode ROM), а в самом кэше L1 сохраняется лишь метка на область ROM-памяти, где хранятся соответствующие микрокоманды. При попадании на такую метку управление потоком инструкций передается ROM-памяти.

Рассмотрим теперь процесс продвижения микроинструкций по основному конвейеру, то есть когда процессор работает в режиме внеочередного выполнения инструкций. В течение первых двух тактов в Trace Cache передается указатель на следующие выполняемые инструкции — это первые две ступени конвейера, называемые Trace Cache next instruction pointer. После получения указателя в течение двух тактов происходит выборка инструкций из кэша (Trace Cache Fetch) — это две следующие ступени конвейера. После этого выбранные инструкции должны быть отосланы на внеочередное выполнение. Для того чтобы обеспечить продвижение выбранных инструкций по процессору, то есть доставить их из предпроцессора в постпроцессор, используется еще одна дополнительная, или передаточная, ступень конвейера, называемая Drive. На этой ступени не происходит обработки инструкции. Фактически такая «пустая» ступень конвейера представляет собой временную задержку и вводится для компенсации высоких тактовых частот.

На следующих трех ступенях (6, 7 и 8) конвейера, называемых Allocate & Rename, происходит переименование и распределение дополнительных регистров процессора. В процессоре Intel Pentium 4 содержится 128 дополнительных регистров, которые не определены архитектурой набора команд. Переименование регистров позволяет добиться их бесконфликтного существования.

На 9-й ступени конвейера формируются две очереди микрокоманд: очередь микрокоманд памяти (Mem Queue) и очередь арифметических микрокоманд (Int/FP Queue).

На следующих трех ступенях конвейера происходит планирование и распределение (Schedule) микрокоманд. Планировщик выполняет две основные функции: переупорядочивание микрокоманд и распределение их по функциональным устройствам. Суть переупорядочивания микрокоманд заключается в том, что планировщик (Scheduler) определяет, какую из микрокоманд уже можно выполнять, и в соответствии с их готовностью меняет порядок их следования. Распределение микрокоманд происходит по четырем функциональным устройствам, то есть формируются четыре очереди. Первые две из них предназначены для устройств памяти (Load/Store Unit). Эти очереди формируются из очереди памяти Mem Queue. Микрокоманды из очереди арифметических микрокоманд (Int/FP Queue) также распределяются в очереди соответствующих функциональных устройств. Для этого предназначено три распределителя: Fast ALU Scheduler, Slow ALU/General FPU Scheduler и Simple FP Scheduler.

Fast ALU Scheduler — это распределитель простых целочисленных операций. Он собирает простейшие микроинструкции для работы с целыми числами, чтобы затем послать их на исполнительный блок ALU, работающий на двойной скорости. В процессоре Pentium 4 имеется два исполнительных блока ALU, работающих на удвоенной скорости. К примеру, если тактовая частота процессора составляет 2,8 ГГц, то эти два устройства ALU работают с частотой 4,8 ГГц и в параллельном режиме способны выполнять четыре целочисленные операции за один такт. Эти два блока ALU получили название Rapid Execution Engine (блоки быстрого исполнения).

Slow ALU/General FPU Scheduler — распределитель целочисленных операций/распределитель операций с плавающей точкой. Это устройство распределяет остальные операции ALU и операции с плавающей точкой.

Simple FP Scheduler — распределитель простых операций с плавающей точкой. Это устройство формирует очередь простых операций с плавающей точкой и операций по доступу к памяти с плавающей точкой.

Следующие две ступени конвейера — этап диспетчеризации (Dispatch). На этих ступенях инструкции попадают на один из четырех портов диспетчеризации (dispatch ports), которые выполняют функцию шлюзов к функциональным устройствам.

После того как инструкции пройдут порты диспетчеризации, они загружаются в блок регистров для дальнейшего выполнения. Для этого предназначены следующие две ступени процессора, называемые Register Files.

Таким образом, после загрузки инструкций в блок регистров все готово для непосредственного выполнения команд. Процесс непосредственного выполнения инструкций в исполнительных устройствах происходит на следующей, семнадцатой, ступени конвейера, которая называется Execute.

Следующие три ступени конвейера: ступень изменения состоянии флагов (Flags)  — если результат выполнения инструкции этого требует; ступень проверки ветвления (Branch Check), на которой процессор узнает, сбылось ли предсказание ветвления. Последняя ступень процессора — еще одна передаточная ступень Drive, назначение которой мы уже рассматривали.

Заканчивая рассмотрение микроархитектуры процессора Intel Pentium 4, давайте еще раз остановимся на ключевых аспектах технологии Intel NetBurst:

  • 400/533-мегагерцевая системная шина;
  • конвейер длиной в 20 ступеней (Hyper-Pipelined Technology);
  • Advanced Dynamic Execution;
  • кэш L1 с отслеживанием исполнения (Trace Cache);
  • Rapid Execution Engine (два устройства ALU, работающие на удвоенной частоте);
  • Advanced Transfer Cache (кэш L2);
  • Streaming SIMD Extensions 2 (SSE2).

Все эти ключевые моменты мы уже представили, за исключением последнего, то есть нового набора инструкций SSE2. Этот набор является расширением набора инструкций SSE потоковых SIMD-расширений (Streaming SIMD Extensions). В SSE2 к уже существующим 70 SIMD-инструкциям было добавлено еще 144 новые инструкции.

Напомним, что набор инструкций SSE позволял оперировать с восемью 128-битными регистрами, в которых хранилось по четыре вещественных числа одинарной точности. При этом все SSE-операции проводились одновременно над четверками чисел. Набор инструкций SSE2 оперирует все с теми же 128-битными регистрами, однако позволяет использовать их не только для записи четырех вещественных чисел одинарной точности, но и для записи пары вещественных чисел двойной точности, а также всевозможных целых чисел (шестнадцати однобайтовых, восьми коротких двухбайтовых, четырех четырехбайтовых, двух восьмибайтовых и шестнадцати байтовых). Таким образом, SSE2, представляя собой симбиоз MMX и SSE, позволяет работать с любыми типами данных, которые умещаются в 128-битные регистры.

В начало В начало

Процессор AMD Athlon XP

В течение этого года компания AMD, стремясь не отстать от Intel, также не переставала радовать нас новыми моделями процессоров. Так, в марте 2002 года на международной выставке CeBIT представители компании AMD объявили о выпуске трех новых процессоров, пополнивших завоевавшее заслуженную популярность семейство AMD Athlon. В числе анонсированных процессоров была модель для настольных компьютеров — AMD Athlon XP 2100+, модель для серверов и рабочих станций — AMD Athlon MP 2000+, а также модель из мобильной линейки — AMD Athlon 4 1600+. В конце года были анонсированы процессоры AMD Athlon XP 2700+ и Athlon XP 2800+, выполненные на ядре Thoroughbred по 0,13-микронному технологическому процессу. Эти процессоры имеют кэш L2 размером 384 Кбайт, поддерживают высокоскоростную системную шину с частотой 333 МГц и построены на основе архитектуры, называемой QuantiSpeed.

Теперь перейдем к рассмотрению архитектуры процессора Athlon. Как видно из рис. 4, по сравнению с процессором Intel Pentium 4, с точки зрения архитектуры Athlon является классическим процессором.

Поток инструкций в формате x86 поступает в схему предпроцессора (Front End) из кэша L1. Кэш первого уровня (L1) имеет общий размер 128 Кбайт и разделен на кэш данных и кэш инструкций по 64 Кбайт каждый.

Как и в большинстве современных х86-совместимых процессоров, имеющих внутреннюю RISC-архитектуру, в процессоре AMD Athlon внешние CISC-команды декодируются во внутренние RISC-инструкции, для чего используется декодер команд, состоящий из трех независимых блоков.

Предварительно инструкции x86 разделяются на большие (Large x86 instruction) и маленькие (Small x86 instruction). Большие, или сложные, инструкции поступают в программный (Microcode decoder) декодер, а маленькие, или простые, инструкции  — в аппаратный (Hardware decoder) декодер. Оба декодера выполняют одну и ту же задачу — транслируют x86-инструкции в простейшие машинные команды, называемые MacroOps (в процессоре Intel Pentium 4 аналогичные по смыслу команды называются :Ops — от англ. micro operations). Возникает вопрос: зачем понадобилось два декодера и зачем вообще делить x86-инструкции на два потока? Дело в том, что инструкции могут быть простыми и сложными. Простые инструкции при декодировании представляются с помощью 2-3 MacroOps-команд. С задачей декодирования таких простых инструкций может легко справиться аппаратный декодер, построенный на логических схемах. Однако некоторые x86-команды бывают довольно сложными. Такие команды при декодировании могут представляться несколькими десятками и даже сотнями MacroOps-инструкций. Для того чтобы их декодировать, используется специализированный программный декодер, представляющий собой своеобразный процессор. Такой декодер содержит программный код, на основе которого воспроизводится последовательность MacroOps-инструкций. Если вы помните, нечто подобное для борьбы со сложными x86-командами применяется и в архитектуре процессора Intel Pentium 4. Правда, там в этой роли выступает не декодер, а uCode ROM-память, содержащая длинные последовательности декодированных инструкций.

Каждый из двух декодеров в процессоре Athlon способен выдавать по три MacroOps-инструкции за такт, поэтому оба декодера в совокупности производят шесть декодированных инструкций за каждый такт процессора. Далее эти шесть инструкций поступают на шестипозиционный параллельный декодер (six-position parallel decoder), который, в свою очередь, выдает по три MacroOps-инструкции за такт.

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

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

Все целочисленные инструкции направляются в планировщик инструкций для работы с целыми числами (Int Scheduler). Этот планировщик рассчитан на хранение 18 инструкций и выполняет те же функции, что и FPU-планировщик. Различие заключается в том, что в процессоре имеется шесть функциональных исполнительных блоков для работы с целыми числами (три устройства ALU и три устройства AGU), поэтому Int Scheduler должен формировать на выходе по шесть команд за каждый такт.

После того как все инструкции пройдут диспетчеризацию в соответствующих планировщиках, они могут быть выполнены в соответствующих функциональных блоках.

Как уже отмечалось, для работы с вещественными числами в процессоре Athlon предусмотрено три функциональных устройства FPU, каждое из которых представляет собой 15-ступенчатый конвейер, то есть для работы с вещественными числами предусмотрено три разделенных конвейера:

  • FSTORE — конвейер хранения вещественных чисел;
  • FADD — конвейер для выполнения простейших арифметических операций (сложение, вычитание, сравнение);
  • FMUL — конвейер для выполнения сложных арифметических операций (умножение, деление, вычисление квадратных корней.

Подобная реализация блока FPU позволяет выполнять до трех вещественных операций за такт, причем такая производительность является рекордной среди х86-совместимых процессоров и по сей день.

Блок операций с целыми числами также полностью конвейеризирован (10 ступеней) и состоит из трех распараллеленных частей, обеспечивая в результате выполнение трех целочисленных операций за один такт.

Для повышения производительности процессора при работе с приложениями, требующими потоковой обработки данных, процессор Athlon поддерживает выполнение набора инструкций потоковых SIMD-расширений, который носит фирменное название Enhanced 3DNow!.

Говоря об архитектурных особенностях процессора Athlon, нельзя не упомянуть и о таком нововведении, как многоуровневый кэш TLB (Translation Look-aside Buffers), хранящий карту декодированных адресов инструкций и данных, что позволяет значительно сократить время доступа к ним. Процессоры AMD Athlon имеют двухуровневый TLB (L1 TLB и L2 TLB), в свою очередь, имеющий деление на буфер данных и буфер инструкций. L1 TLB кэширует 24 адреса инструкций и 32 адреса данных, в то время как L2 TLB хранит 256 адресов как для инструкций, так и для данных.

И в заключение, рассматривая особенности архитектуры процессора Athlon, следует отметить поддерживаемую им системную шину Alpha EV-6, которую компания AMD лицензировала у Digital Equipment Corp (DEC). Первоначально была применена системная шина EV-6, работающая на частоте FSB 200 МГц, но затем в последней модификации AMD Athlon на ядре Thunderbird частота системной шины была увеличена до 266 МГц, а в последних моделях процессора — до 333 МГц.

Итак, подводя итог, давайте еще раз выделим основные особенности архитектуры QuantiSpeed Architecture:

  • суперскалярная, суперконвейерная микроархитектура с возможностью обработки девяти инструкций за такт;
  • аппаратно реализованная предварительная выборка данных (Hardware Data Prefetch), смысл которой состоит в том, что данные, которые могут потребоваться для дальнейших вычислений (critical data), выбираются из системной памяти в кэш данных первого уровня (кэш данных L1);
  • эксклюзивные спекулятивные буферы ветвлений TLB (Translation Look-aside Buffers), позволяющие увеличить количество сохраняемых транслированных адресов (за счет отсутствия дублирования L1 TLB и L2 TLB) и ускорить генерацию карт, необходимых для дальнейших вычислений данных. Помимо этого TLB L1 для данных (D-TLB L1) был увеличен с 32 до 40 записей.

КомпьютерПресс 12'2002

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует