В статье, посвященной новому микропроцессору Intel Pentium 4, достигшему наивысших среди всех серийно выпускаемых процессоров тактовых частот, проведен анализ его микроархитектуры NetBurst. Значительное внимание уделено особенностям, связанным с повышением частоты. Реализация NetBurst в Pentium 4 сопоставлена с микроархитектурой других процессоров, в первую очередь с Intel Pentium III и AMD Athlon. Приведены сравнительные данные о производительности Pentium 4.

Последний год характеризовался жесткой конкурентной борьбой на рынке высокопроизводительных микропроцессоров х86-совместимой архитектуры – Intel Pentium III и AMD Athlon. Аналогичное соперничество на втором плане, среди недорогих процессоров, шло между Intel Celeron и AMD Duron. В ходе этого противостояния процессоры от Intel и AMD достигли рекордных тактовых частот, обойдя по этому параметру RISC-процессоры, в том числе Alpha. Стоит отметить, что после перехода на более сложную микроархитектуру Alpha 21264 тактовые частоты этих процессоров, многие годы лидировавших в этой гонке, стали уступать частотам Pentium III и Athlon.

Конечно, тактовая частота не самоцель: производители процессоров стремятся к увеличению производительности. В этом соревновании Alpha по-прежнему остается лидером за счет более совершенной и соответственно более сложной микроархитектуры. Как у Alpha 21264, так и у Intel Itanium достигнутые значения тактовых частот почти вдвое ниже, чем у новейших Pentium 4, но между тем Alpha 21264 и Itanium предназначаются для более мощных систем.

Достижению высшей производительности способствуют два фактора: и особенности микроархитектуры, и тактовая частота; при этом, до некоторого периода повышения производительности можно добиваться главным образом за счет роста частоты. На ранних этапах эволюции Alpha его создатели шли именно по этому пути; теперь этим же путем идет Intel.

В последнее время этим же путем следовала и AMD. Однако после обюявления Intel о поставках новых процессоров Pentium 4 с частотами 1,4/1,5 ГГц появились сообщения о том, что AMD выходит из гонки частот. Возможно, в AMD предпочли сделать ставку на процессоры с новой 64-разрядной архитектурой.

Как бы то ни было, Pentium 4 стали абсолютными лидерами по тактовой частоте. Достижение столь высоких частот связано со значительными трудностями. Несмотря на прогресс в технологии (прежде всего, в уменьшении размера элементов) приходится учитывать конечность скорости распространения сигнала: задержки, связанные с его распространением, накладывают определенные ограничения, с которыми столкнулись еще разработчики Alpha 21264.

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

Микроархитектура NetBurst

Для Intel характерно, что микроархитектура нескольких поколений процессоров логически близка друг к другу (например, Pentium Pro – Pentium II – Pentium III). В таком случае обычно говорят об общем «микропроцессорном ядре» (в данном примере его называют Р6). В Intel используют термин «микроархитектура» именно в этом, последнем смысле. В этой терминологии микроархитектура NetBurst пришла на смену P6, а первой конкретной реализацией NetBurst «в кремнии» является Pentium 4.

C моей точки зрения, основная задача NetBurst (если отвлечься от SSE2-расширений IA-32, вносимых Pentium 4) состоит в том, чтобы обеспечить возможность дальнейшего роста тактовой частоты. Уже сейчас в Pentium 4 достигнут рубеж в 1,5 ГГц, и по заявлениям представителей Intel, в не столь отдаленном будущем можно ожидать «беспроблемного» роста частоты до 3 ГГц.

Как мне кажется, усовершенствования в NetBurst по сравнению с микроархитектурой P6 не столь кардинальны, как это было при переходе от P5 к Р6. Основные архитектурные идеи Р6, связанные с декодированием х86-команд во внутренние RISC-подобные микрооперации, их постановкой в очередь и внеочередным спекулятивным выполнением с последующим изыманием завершившихся микроопераций (Intel называет этот процесс «retirement»), сохранились и в NetBurst. Основные особенности NetBurst таковы [1]:

  • гиперконвейерная технология;
  • кэш трассировки исполнения (TC);
  • 400-мегагерцевая системная шина;
  • механизм ускоренного выполнения (в целочисленных АЛУ);
  • расширенное динамическое выполнение (одновременно до 126 команд);
  • потоковые расширения SIMD 2;
  • усовершенствования функционального исполнительного устройства с плавающей запятой/мультимедийной обработки;
  • усовершенствованная кэш-память.

Гиперконвейерная технология

Название гиперконвейерной технологии, очевидно, построено по аналогии со словом «суперконвейерный» и призвано, вероятно, подчеркнуть сверхбольшую длину конвейера. Интересно отметить, что число стадий базового конвейера при смене микроархитектуры процессоров Intel каждый раз удваивалось: 5 стадий в Р5, 10 стадий в Р6 (кстати, столько же в Athlon), и, наконец, 20 стадий в Pentium 4.

На стадиях 1 и 2 с использованием значения счетчика команд из BTB (Branch Target Buffer, – буфер адресов переходов) в кэш трассировки ТС помещаются микрооперации (рис. 1 [2, 3]). На стадиях 3 и 4 происходит выборка микроопераций из ТС, и на стадии 5 микрооперации передаются в блок распределения ресурсов/переименования регистров. (Отметим, что стадия 5 целиком вызвана задержкой передачи данных по проводникам.) На стадии 6 происходит распределение ресурсов, требуемых для выполнения микрооперации (буферов загрузки регистров/записи в память и т.д.).

На стадиях 7 и 8 происходит переименование регистров (логических регистров типа EAX в физические). Надо сказать, что, по мнению автора, переименование регистров для IA-32 просто необходимо: число регистров в этой архитектуре крайне ограничено, что способно вызывать многочисленные зависимости между микрооперациями, препятствуя одновременному их выполнению. Логические регистры переименовываются в физические, количество которых в Pentium 4 достаточно внушительное: 128. Работа с большим числом физических регистров позволяет во многих случаях «расшить» взаимозависимости.

На стадии 9 происходит помещение микроопераций в очередь, откуда они выбираются, когда освобождается соответствующее место в планировщиках, отвечающих за работу с разными типами функциональных исполнительных устройств. На стадиях 10-12 осуществляется собственно планирование, т.е. запись в планировщики, определение зависимостей между микрооперациями и ожидание разрешения этих зависимостей. На стадиях 13-14 микрооперациии диспетчеризуются (посылаются) в конвейер с плавающей запятой или в один из целочисленных конвейеров.

На стадиях 15-16 происходит чтение из файлов регистров: целочисленных или с плавающей запятой. Стадия 17 – это стадия выполнения. Анализируя здесь базовый конвейер, мы предполагаем, что выполнение занимает 1 такт (хотя операции с плавающей запятой обычно требуют больше тактов, а некоторые простые целочисленные операции, как будет показано далее, могут запускаться каждые полтакта). На стадии 18 осуществляется вычисление значения флагов («равно нулю», «больше нуля» и т.д.), которые используются командами условных переходов. На стадии 19 происходит сравнение реального «результата» команды перехода со сделанным ранее предсказанием.

Наконец, последняя стадия осуществляет запись результата проверки перехода, выполненного на предыдущей стадии, в ВТВ (эта задержка обуславливается временем передачи информации по проводникам).

Как указано в [3], возникающая задержка при неверном предсказании перехода («штраф») по порядку величины равна глубине конвейера, т.е. порядка 20 стадий. Это весьма значительная величина и, для того чтобы минимизировать отрицательные последствия для производительности, разработчики постарались максимально повысить точность предсказания переходов.

Логические блоки NetBurst

Перейдем теперь к рассмотрению блоков Pentium 4, через которые данные протекают по мере своего движения в базовом конвейере. Обратимся для этого к рис. 1, на котором представлены ключевые элементы микроархитектуры NetBurst.

Условно логическую схему NetBurst и соответственно Pentium 4 можно разбить на три крупные части:

  • фронтальную, обеспечивающую предварительную выборку (prefetch), выборку и декодирование команд, кэширование микроопераций в ТС и предсказание переходов (эта часть работает последовательно в порядке, указанном в программном коде);
  • часть, отвечающую за выполнение (внеочередное и, возможно, спекулятивное) микроопераций;
  • завершающую часть, обеспечивающую изымание закончивших выполнение микроопераций из блока ROB (ReOrder Buffer, известный уже по микроархитектуре Р6 [4]) и «сборку» из них результатов в порядке, задаваемом исходными программными кодами в соответствии с правилами архитектуры IA-32 (процедура «retirement»).

Начнем анализ с фронтальной части Pentium 4. Прежде всего следует отметить увеличение эффективной частоты системной шины до 400 МГц против сегодняшних 133 МГц. Это приводит к повышению максимально допустимой пропускной способности оперативной памяти до 3,2 Гбайт/с. Побудительная причина такого ускорения очевидна: в противном случае столь высокочастотный процессор не смог бы вовремя получать необходимые данные. Как известно, Athlon теоретически может поддерживать системную шину с такой же частотой и пропускной способностью [5], однако на практике на сегодня достигается пропускная способность 2,1 Гбайт/с (память DDR SDRAM/ 266 МГц).

От системной шины данные и команды могут попасть в кэш третьего уровня. Он предусмотрен в микроархитектуре NetBurst для серверных вариантов процессора [3], но Pentium 4, по крайней мере, в настоящее время им не комплектуется. Далее данные и команды попадают в интегрированный в Pentium 4 кэш второго уровня емкостью 256 Кбайт, который по своим техническим характеристикам близок к используемому в Pentium III. В обоих процессорах применяется технология Advanced Transfer Cache, они работают на частоте ядра, а ширина шины кэша составляет 32 байт. Оба кэша являются 8-канальными наборно-ассоциативными. Однако в Pentium 4 увеличена длина строки кэша второго уровня – до 128 байт (2 сектора по 64 байт).

Задержка по обращению в кэш второго уровня в Pentium 4 составляет 7 тактов. Пропускная способность кэша второго уровня при частоте 1,5 ГГц составляет соответственно 48 Гбайт/с. Для замещения информации в кэше второго уровня, как и в других типах кэш-памяти Pentium 4, используется алгоритм псевдо-LRU. При непопадании в кэш второго уровня требуется 12 тактов процессора на организацию взаимодействия с системной шиной, и еще не менее 6-12 тактов шины (если она свободна) на доступ в подсистему оперативной памяти.

С моей точки зрения, одним из основных недостатков современных процессоров архитектуры х86 с интегрированным кэшем второго уровня (AMD Athlon/Thunderbird, Intel Pentium III Coppermine/Pentium 4) является его уменьшенная вдвое емкость по сравнению с предшественниками. Этот недостаток компенсируется, в частности, увеличением тактовой частоты кэша до частоты ядра процессора и увеличением ширины шины кэша. Но все-таки для больших серверных приложений деловой направленности, для которых характерно частое обращение в память, обычно применяется кэш большей емкости.

Что до кэша данных первого уровня, то он является 4-канальным наборно-ассоциативным и имеет длину строки 64 байт. В Pentium 4 его емкость уменьшилась вдвое по сравнению с Pеntium III – до 8 Кбайт (в Athlon емкость кэша данных первого уровня равна 64 Кбайт). По мнению некоторых специалистов, это вызвано стремлением инженеров Pentium 4 обеспечить задержку выборки из кэша первого уровня, равную 2 тактам (в предыдущих процессорах Intel она равнялась 3 тактам).

На мой взгляд, такое решение выглядит несколько «рискованным». Известно, что время выполнения команды загрузки в ряде современных RISC-процессоров уже достаточно давно достигло 2 тактов. Однако известно также, что для применявшегося в Alpha 21164 кэша первого уровня емкостью всего 8 Кбайт слишком часто возникала ситуация непопадания в кэш, что отрицательно сказывалось на производительности. По некоторым неофициальным данным, Intel якобы планирует увеличить емкость кэша данных первого уровня после перехода к 0,13-микронную технологии производства в ядре Northwood.

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

Кэш второго уровня кроме данных содержит также команды, которые попадают из него в декодер. В Pentium 4 декодер всего один (против трех в Athlon). Фронтальная часть NetBurst устроена таким образом, что декодирование вообще исключено из базового конвейера: непрерывность подачи микроопераций в «исполняющую» часть Pentium 4 обеспечивается потоком микроопераций из ТС, который фактически служит кэшем команд первого уровня, в котором команды сохраняются в декодированном виде, как микрооперации. В идеальном случае ТС может выдать 3 микрооперации за такт, как и декодеры Athlon (также в лучшем случае).

Применение в Pentium 4 схемы с ТС вместо множественных декодеров имеет свои преимущества по сравнению со схемой, используемой в Athlon [6]. Во-первых, если в Athlon будут декодироваться сразу три сложные х86-команды, темп поступления микроопераций может упасть практически до нуля. Во-вторых, когда имеется маленький цикл, в Athlon его команды понадобится декодировать при каждом проходе, а в Pentium 4 он окажется декодированнным в ТС. Наконец, применение ТС в Pentium 4 позволяет в ряде случаев эффективнее бороться с угрозой снижения производительности из-за переходов.

В [6] приведены также прикидки типовой длины микрооперации, которая, по этим данным, может достигать длины 118 бит. Из оценок размера емкости ТС в 92-96 Кбайт (такая оценка предложена исходя из площади этого блока на увеличенной фотографиии Pentium 4; официальные данные отсутствуют) при содержании в нем 12 тысяч микроопераций (это уже данные Intel) средняя длина микрооперации составляет 64 разряда. Полезно напомнить, что емкость кэша команд первого уровня в Pentium III равна 16 Кбайт, в Athlon – 64 Кбайт.

В том случае, когда Pentium 4 требуется декодировать сложную x86-команду, которая преобразуется в длинную последовательность микроопераций, взводится специальный флаг, и эти микрооперации извлекаются не из ТС, а из памяти микроопераций ROM-типа (рис. 1). Поскольку такие команды в программах встречаются редко, это не оказывает отрицательного влияния на производительность.

Обратимся теперь еще к двум особенностям Pentium 4 – к механизму предварительной выборки и предсказанию переходов, за реализацию которых также отвечает фронтальная часть процессора.

Процессор осуществляет автоматическую предварительную выборку команд в буферы командных потоков из пути, предсказанного в ВТВ. Делается это порциями по 32 байта, начиная с адреса перехода. Кроме того, поддерживается автоматическая выборка данных и команд в кэш второго уровня (а также, возможно, третьего). Следует отметить, что аппаратная предварительная выборка – довольно редкая вещь для современных процессоров. Насколько мне известно, она поддерживается, например, в PA-8x00.

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

Однако в Intel отмечают, что эти команды требуют много процессорных ресурсов, и их применение следует ограничить (в многопроцессорных SMP-системах их использовать не рекомендуется).

Что касается предсказания переходов, то этот компонент микроархитектуры является одной из определяющих производительность Pentium 4. Если предсказание верно, то в базовом конвейере вообще не возникает дополнительных задержек, а при неверном, как говорилось выше, потери весьма велики. По утверждению разработчиков, реализация предсказания переходов в Pentium 4 превосходит технологии конкурентов (имеются в виду те, которые были «публично раскрыты»), в том числе алгоритм G-share в AMD Thunderbird и гибридные схемы [2, 6]. При этом, как сообщается, число неправильных предсказаний в Pentium 4 по сравнению с Pentium III уменьшилось на одну треть.

С другой стороны, известно, что точность предсказания переходов в современных процессорах превысила 90% еще до появления Pentium 4. Обычно она измеряется на тестах SPECint. Так, например, сообщается, что точность предсказания переходов у AMD K6 и Alpha 21264 достигла 95% (вероятно, на тестах SPECint95). К сожалению, я не располагаю аналогичными данными о точности предсказания переходов в Pentium 4.

В микроархитектуре NetBurst могут предсказываться все типы ближних (near) переходов, включая условные, безусловные, непрямые (indirect) и переходы типа вызов/возврат из подпрограммы (CALL/RET). Наоборот, предсказания для дальних (far) переходов не делаются. При этом используется несколько механизмов предсказаний. Начнем со статических предсказаний. В соответствии с ними, переход назад (к младшим адресам) предсказывается, а вперед – нет. Смысл такого предсказания очевиден: переход назад соответствует циклу. Такие статические предсказания были известны и ранее, например, в HP PA-8x00.

Pentium 4 отличается и эффективным предсказанием переходов CALL/RET. При этом RET всегда предсказывается происходящим, а адрес возврата берется из стека адресов возврата, имеющего емкость 16 строк. Такая схема хорошо работает, если делается раскрутка цикла (unroll), содержащего вызовы подпрограмм, и позволяет уменьшить потребности во включении режима оптимизации inline с прямым встраиванием кодов подпрограмм. Кстати, полезно отметить, что команда перехода и его цель могут оказаться в одной строке TC, что способствует максимизации пропускной способности доставки микроопераций из фронтальной части.

Динамическое предсказание переходов (т.е. направления и адреса перехода) основывается на традиционной таблице предсказания переходов и буфере адресов переходов BTB емкостью 4096 строк. Если в ВТВ не имеется необходимой информации, применяется статическое предсказание. Наконец, в NetBurst предусмотрен еще один вид предсказания переходов – «подсказка» со стороны программного обеспечения. Эта подсказка реализована в форме префикса команд условного перехода (префикс игнорируется всеми процессорами архитектуры 86, кроме Pentium 4). Подсказки должны порождаться компилятором (или пишущим на ассемблере программистом); они используются в процессе декодирования команд в последовательность микроопераций в ТС.

Если информации о переходе нет в ВТВ, то подсказка имеет приоритет над статическим предсказанием. Из других современных процессоров, в которых широко используются подсказки, можно упомянуть PA-8x00. Отрицательной стороной применения подсказок является небольшое увеличение размера кода программы [3].

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

На каждом такте ядро может диспетчировать микрооперации в один из четырех портов, причем 2 из них могут выдавать на исполнение по 2 микрооперации за такт (точнее, по одной микрооперации каждые полтакта). Таким образом, на каждом такте ядро может запустить на выполнение до 6 микроопераций.

Нулевой порт за первые полтакта может отправить на выполнение команды «неарифметические» команды с плавающей запятой (FXCH и др.), или отправить в АЛУ0 арифметико-логические команды, а на втором полутакте отправить на выполнение еще одну арифметико-логическую команду.

Первый порт на первом полутакте может запускать все SIMD-команды и арифметические команды с плавающей запятой (сложение/умножение/деление и т.п.), либо целочисленные команды с обычной скоростью выполнения (умножение, сдвиг и др.), а также АЛУ-команды. На втором полутакте первый порт может выдать еще одну АЛУ-операцию. Второй порт запускает одну операцию загрузки регистра за такт (L), а третий порт – одну операцию записи в память (ST) за такт.

Для того чтобы обеспечить высокий «уровень суперскалярности» (число одновременно исполняемых микроопераций), в Pentium 4 широко используется внеочередное суперскалярное выполнение. Всего в ядре Pentium 4 может одновременно находиться на разных стадиях выполнения до 126 микроопераций (почти втрое больше, чем в Pentium III). В частности, поддерживается спекулятивное выполнение операций L и их переупорядочение. Следует отметить также интересную особенность Pentium 4, позволяющую разрешать зависимости между операциями L и ST: «перенаправление данных» от ST к L. При этом если данные, которые ST записывает в память, нужны для последующей команды L, это обнаруживается, и данные направляются в команду L напрямую. Всего в Pentium 4 имеется 48 буферов для команд L и 24 буфера для команд ST. Это обеспечивает отсутствие блокировки кэшей данных при промахах (cache miss).

Завершая анализ суперскалярного ядра Pentium 4, целесообразно привести краткую информацию о мультимедийном расширении SSE2 системы команд Pentium 4. В этом процессоре имеются 144 новых команд, которые, как правило, работают с операндами, расположенными в памяти или ХММ-регистрах. Впервые в Pentium 4 стали поддерживаться операции над двумерными векторами, элементами которых являются 64-празрядные числа с плавающей запятой двойной точности.

В таблице 1 приведены некоторые общие данные, сопоставляющие Pentium III и Pentium 4, а в таблице 2 – времена выполнения некоторых традиционных х87-команд с плавающей запятой. Из этих данных видно, что тенденция увеличения длины конвейера в Pentium 4 охватила также и конвейеры с плавающей запятой. Применение SIMD-расширения SSE2 позволяет Pentium 4 выполнять две операции с плавающей запятой двойной точности за такт (ранее такой же уровень был достигнут в Athlon c применением x87-команд).

Более того, соответствующие конвейеры SSE2-операций оказываются подчас короче, чем у x87-команд. Очевидно, что Intel фактически предлагает заменять х87-команды на SSE2. Команды SSE2 генерируются последней версией Intel Reference Fortran Compiler, который применялся компанией в тестах SPECfp2000. По моей оценке, в компиляторах других фирм поддержка SSE2 может появиться примерно через год. Следует отметить, что при переходе от х87 к SSE2 80-разрядное представление чисел с плавающей запятой заменяется 64-разрядным. К недостаткам реализации SSE2 в Pentium 4 я отнес бы неполную конвейеризацию не только 64-разрядного умножения, но и сложения с плавающей запятой: каждая последующая SSE2-команда может запускаться на выполнение только с пропуском одного такта.

Применение SSE2 позволяет теперь работать не только с парами 64-разрядных целых чисел, но и с 128-разрядными целыми числами, что является уникальной особенностью. Детальное описание SSE2 можно найти в [7].

Производительность и перспективы

Из проведенного анализа легко сделать вывод, что Pentium 4 будет достигать наивысшей производительности при работе с длинными векторами, что характерно для многих приложений научного характера. Такие приложения позволят достигнуть хорошей локализации в кэш-памяти и не будут вызывать потери производительности из-за неверного предсказания переходов. Кроме того, очевидно, при переходе на Pentium 4 ускорятся такие приложения, как трехмерная графика, распознавание речи, обработка изображений и другие мультимедийные приложения – при условии, что в них будет применяться SSE2.

Сравнительные оценки производительности Pentium 4 даны в таблицах 3 и 4. Эти данные подтверждают сказанное и также показывают, что современные офисные приложения (см. результаты тестов SYSMark2000) практически не выигрывают от перехода на Pentium 4. Однако результаты тестов SPECint2000 и SPECfp2000 однозначно говорят о том, что достигнутая общая производительность Pentium 4 существенно выше, чем у Pentium III. Для того чтобы увидеть рост производительности на реальных приложениях, необходимо, однако, перетранслировать их с использованием новых компиляторов, которые будут явно использовать особенности Pentium 4 и, в частности, генерировать новые команды SSE2. В более простых случаях достаточно заменить на более эффективные библиотеки программ (например, графические DLL, или, скажем, BLAS) – тогда, когда они будут созданы.

Более того, на этих тестах Pentium4/1,5 ГГц обгоняет все другие процессоры, в том числе, RISC-архитектуры, за исключением Alpha 21264A/833 МГц: последние заметно опережают Pentium 4 на тестах плавающей запятой (658 единиц по SPECfp2000 против 558 у Pentium 4). На целочисленных тестах SPECint2000 Pentium 4 слегка уступает Alpha и HP PA-8600/552 МГц (544/541/536 единиц для Alpha 21264/PA-8600/Pentium 4 соответственно). Такой успех связан и с высокой тактовой частотой (фактически 3 ГГц на коротких целочисленных операциях!), и с применением быстродействующих микросхем памяти Rambus.

Pentium 4 изготавливаются по 0,18-микронной технологии и содержат 42 млн. транзисторов (для сравнения, Athlon при той же технологии имеет 37 млн. транзисторов). Однако площадь Pentium 4 почти вдвое больше, чем у Pentium III и Athlon. Pentium 4 поставляется в защищенном корпусе FC-PGA и устанавливается в разюем Socket423 c 423 контактами.

Необходимо отметить, что применение Pentium 4 требует более дорогой «инфраструктуры». Отличные результаты тестов SPEC2000 во многом связаны, вероятно, и с применением дорогой памяти Rambus. Поддерживающий Pentium 4 набор микросхем i850 довольно дорог, и плюс к этому требуется применение 6-слойных материнских плат. Наконец, повышенное энергопотребление Pentium 4 (52-55 Вт) потребовало перехода на новый тип блока питания. Поэтому при решении вопроса о целесообразности приобретения компьютера на базе Pentium 4 нужно принимать во внимание и соотношение стоимость/производительность.

Выводы

В микроархитектуре NetBurst предложен целый ряд оригинальных технических новинок, позволяющих Pentium 4 достичь и поддерживать рекордный уровень тактовой частоты. В сочетании с высокой пропускной способностью используемой оперативной памяти это позволило Pentium 4/1,5 ГГц стать лидером по целочисленной производительности (SPECint2000), уступая по производительности с плавающей запятой (SPECfp2000) лишь Alpha 21264A/833 МГц.

Однако применение Pentium 4 связано с использованием дорогостоящей «инфраструктуры», в частности, дорогой оперативной памяти.

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

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

Михаил Кузьминский – старший научный сотрудник Центра компьютерного обеспечения химических исследований РАН. С ним можно связаться по телефону (095) 135-6388.

Литература

[1] Pentium 4 Processor Architecture and Desktop Performance Evaluation Guide, Intel, 2000

[2] D. Carmean, «Inside the Pentium 4 Processor Microarchitecture», Intel Development Forum, 2000

[3] Intel Pentium 4 Processor Optimization Reference Manual, Intel, 1999-2000

[4] Михаил Кузьминский, «Открытые системы», 1995, б№11

[5] Михаил Кузьминский, «Athlon: от микропроцессоров к материнским платам», «Открытые системы», 2000, б№1-2, c.8-13

[6] T. Pabst, http://www.tomshardware.com/ cpu/00q4/001120/index.html

[7] IA-32 Intel Architecture Software Developer Manual. Vol. 1, Chapter 11; Vol. 2, Chapter 3. Intel, 2000


Таблица 1. Сравнение некоторых характеристик Pentium III и Pentium 4 (по данным [2])
Pentium IIIPentium 4
Частота, ГГц1Б??1,4
Время целочисленного сложения1нсБ??0,4 нс
Пиковая производительность2 GFLOPSБ??5,6 GFLOPS
Емкость D-кэша L1, Кбайт168
Время доступа в D-кэш L13 нсБ??1,4 нс
Пропускная способность D-кэша L116 Гбайт/сБ??44,8 Гбайт/с
Пропускная способность кэша L216 Гбайт/сБ??44,8 Гбайт/с
Число одновременно выпоняемых команд40126
в т.ч. команд загрузки регистров1648
в т.ч. команд записи в память1224
Емкость ВТВ, строк5124092
Пропускная способность системной шины1,1 Гбайт/с3.2 Гбайт/с

Вернуться


Таблица 2. Выполнение команд с плавающей запятой
Времена выполнения некоторых х87-команд с плавающей запятой в Intel Pentium 4 [3], Pentium III и AMD Athlon [5]: задержка / пропускная способность (в тактах)
AthlonPentium IIIPentium 4
FADD4/13/15/1
FMUL4/15/27/2
FDIV (DP)20/1732/3238/38
FSQRT (DP)27/2457/5738/38
FSQRT (SP)19/1628/2823/23

Вернуться


Таблица 3. Сравнение производительности МП Pentium III и Pentium 4 [1]
Pentium III 1 ГГцPentium 4 1,4 ГГцPentium 4 1,5 ГГц
SPECint2000443517536 (**)
SPECfp2000314541561 (**)
3DWinBench1,932,442,55
3DMark2000393434457
SYSMarkJ (*)185320132073
Quake3149202210
Video2000/MPEG2303638
(*) Тест «производительности internet»; тестируется МП, память и графическая подсистема.

(**) Данные http://www.specbench.org


Таблица 4. Сравнение производительности Pentium III, Pentium 4 и Athlon [8]
Pentium III 1 ГГцPentium 4 1,4 ГГцPentium 4 1,5 ГГцAthlon 1,2 ГГц
WebMark 2001 (*)185224236208
Quake3154212219192
SYSMark2000201200210233
(*) Включает тесты Java, JavaScript, XML, SSL, Acrobat Reader и др.

Вернуться