InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Pentium 4: революция не бывает половинчатой!


Станислав Гарматюк, ITC Online


Всем было понятно, что Intel необходимо выпустить новый CPU. Конкуренты буквально "наступают на пятки", ядро Coppermine практически достигло своего предела частот, требования к производительности процессоров растут не по дням, а по часам, стремительно набирает обороты рынок домашней мультимедиа... Пользователь уже не довольствовался простым повышением частоты, его душа томилась по чему-то принципиально новому, свежему, неизведанному. И вот -- вышел Pentium 4. Революция свершилась. Но революция не бывает "мягкой"...
Pentium 4 -- совсем не Pentium III

Новая архитектура



Pentium 4 собственной персоной

Проще перечислить, что в новом процессоре Intel не изменилось: он все еще 64-битовый и все еще поддерживает систему команд x86. Собственно, если перечислять именно то, чего изменения совсем не коснулись, то на этом список заканчивается. Группа разработчиков Pentium 4 "отряхнула с колен прах Pentium III" и создала архитектуру нового CPU практически "с нуля".

Но старую аксиому "не сломалось -- не чини" в R&D-отделе Intel знают наверняка. Поэтому сперва попробуем понять, почему понадобилось настолько сильно переделывать (а кое-где и создавать заново) архитектуру Pentium 4 вместо того, чтобы подвергать дальнейшим усовершенствованиям ядро Pentium Pro (а мы уже писали ранее, что фактически именно этот процессор служит родоначальником серии Pentium II/III).


Как работают современные процессоры



"В девичестве" -- северный мост, ныне -- MCH. Еще одна новация -- компоновка микросхемы очень похожа... на Pentium III Coppermine и последние Celeron. Скорее всего, это сделано для облегчения отвода тепла

Для начала -- небольшая, но совершенно необходимая теоретическая часть. Во-первых, все современные CPU используют конвейерную (pipelined) архитектуру в различных ее вариантах. Это означает, что любая команда выполняется не одним, а несколькими блоками, объединенными в конвейер. Первым процессором, в котором было применено такое решение, стал Intel 486, он имел конвейер из пяти ступеней.
Однако это еще не все. Дело в том, что внутри любой современный CPU уже давно "наполовину RISC", т. е. фактически он исполняет совсем другие команды, а не те, что поступают к нему из ОЗУ. Эра процессоров, "напрямую" выполнявших команды x86-ассемблера, закончилась еще с приходом Intel Pentium Pro/II и AMD K5/K6. Все последующие CPU сначала осуществляют преобразование довольно "емких" x86-команд в более простой RISC-подобный код (как правило, при этом одна команда преобразуется в несколько), исполнением которого и занимается непосредственно ядро процессора. Такой, на первый взгляд, сложный путь был избран потому, что ядро, исполняющее простые команды, гораздо легче "переносит" высокие частоты работы. В общем, спор между низкочастотным сложным ядром и высокочастотным простым уже давно и однозначно решен в пользу последнего.

При этом появляется еще одна возможность увеличения скорости исполнения команд -- параллелизация обработки. То есть несколько RISC-подобных команд обрабатываются параллельно -- за один такт, но на разных участках конвейера. Ну и кроме того, начиная с Intel Pentium, архитектура современных CPU стала "суперскалярной" (superpipelined), это означает, что конвейеров в них несколько и работают они параллельно.


Конвейерная архитектура: плюсы и минусы, проблемы и решения



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

Однако на этом пути возникла существенная проблема, связанная уже с недостатком самой конвейерной архитектуры. Поток команд, поступающих на конвейер, очень желательно сделать постоянным и непрерывным. В противном случае из-за "заминки" на любой его стадии те операции, для которых необходимо "знать" результат исполнения предыдущей команды, будут просто ждать ее завершения, и все "замрет". Для устранения этой проблемы используются два приема: внеочередное исполнение (Out-of-Order Execution) и предсказание ветвлений (Branch Prediction).

Внеочередное исполнение -- термин, понимать который следует именно буквально: команды, поступающие на конвейер позже, исполняются -- раньше. Рассмотрим простой пример "программы":

A = B + C
N = A + 2
C = B + 3

В этом случае для выполнения второй операции необходимо завершить первую, так как значение A + 2 невозможно узнать до тех пор, пока в результате предыдущей операции не будет установлено значение A. Однако для выполнения третьей команды результаты двух предшествующих знать не обязательно! Значит, чтобы конвейер не простаивал, следует исполнять сначала первую команду, потом сразу же можно приступать к третьей, а уж пока она будет выполняться, "подоспеет" значение А, необходимое для выполнения второй. Именно выявлением подобных последовательностей и занимаются современные CPU, что позволяет им в результате сократить время простоя.

Механизм предсказания ветвлений -- штука более сложная, однако получить некоторое представление о нем на простейшем примере тоже можно. Правда, необходимо знать хотя бы азы программирования (к примеру, BASIC). Итак, представим себе цикл FOR I = 1 TO 10 ... NEXT I. При компиляции этого цикла в машинный код он преобразуется примерно в такую последовательность команд:

10 I = 1
20 ...
30 I = I + 1
40 IF I <= 10 THEN GOTO 20
50 ...

Как видите, переход со строки 40 в десяти случаях осуществляется на строку 20 и только в одном -- на строку 50. Механизм предсказания при этом просто "запомнит", куда произошел переход по условию в самый первый раз, после чего будет предполагать, что и в следующий раз переход осуществится туда же. И ошибется всего лишь один раз из десяти! А ведь в реальных задачах встречаются циклы с гораздо большим количеством повторений... Зная же, какие команды последуют за операцией перехода, можно, соответственно, начать декодировать их задолго до того, как сама операция совершится. И опять-таки конвейер будет "спасен" от простоя.

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


Pentium 4: гиперконвейеризация



"Охлаждающий набор" для Pentium 4: шприц с термопастой и кулер, снабженный специальным креплением

Как мы уже говорили ранее -- чем примитивнее команды, тем на большей частоте способно работать исполняющее их ядро. Однако элементы конвейера также подпадают под это правило: чем проще одна ступень конвейера -- тем с большей скоростью он может "продвигаться". Но простая ступень может выполнять только простое действие, следовательно, количество их должно возрасти. Собственно, здесь мы уже вплотную подошли к ответу на вопрос, почему ядру Coppermine, наследнику "старичка" Pentium Pro, с таким трудом "давались" большие частоты: его конвейер из 12 ступеней приблизился уже к самому пределу своей максимально возможной частоты. Даже теоретически для 0,18-микронного процесса это значение составляет порядка 1,2 GHz, а ведь общеизвестно, что теоретический предел редко достижим на практике: "идеальных" кристаллов, увы, не бывает. Поэтому было принято кардинальное решение: увеличить длину конвейера сразу до... 20 ступеней! При этом многие части CPU, ранее входившие в конвейер (к примеру, блок декодирования команд), были вообще вынесены за его пределы и работают теперь как бы "сами по себе". Данная архитектура получила название "гиперконвейерной" (hyperpipelined) -- в честь конвейера небывалой длины. Естественно, возможная частота работы возросла, что с успехом подтверждают новые Pentium 4, вышедшие сразу же на частотах 1,4 и 1,5 GHz. И это при сохранении того же 0,18-микронного процесса! Однако далось такое увеличение частот работы отнюдь не "бесплатно".

Простой конвейера: старые проблемы, умноженные
на новые частоты


Приведенное ранее описание работы механизма предсказания ветвлений осталось все же немного незавершенным: мы закончили его на "победном" варианте: ветка предсказана правильно, процессор начал декодирование команд "наперед", переход осуществился к "угаданному" адресу, находящиеся там команды готовы к исполнению (или даже уже частично исполнены). Но что происходит, если "штатный предсказатель" все же ошибся? А происходит "воистину страшное" -- весь конвейер приходится очищать от ненужных команд и в срочном порядке начинать готовить к исполнению новые, находящиеся еще в памяти и совсем по другому адресу. Естественно, ядро CPU во время всего этого "разбора полетов" просто исполняет холостой цикл, так как ни подготовленных данных, ни команд к нему не поступает. И наверняка наш читатель уже догадался сам об основной проблеме гиперконвейерной архитектуры нового процессора: чем длиннее конвейер, тем больше работы идет насмарку и тем дольше придется ждать, пока он будет "вычищен" от непонадобившихся команд и снова заполнен нужными. К тому же высокая частота работы в данном случае автоматически означает, что с момента ошибки в предсказании перехода до момента ее обнаружения "лишней" работы процессор успеет сделать больше. Да, такова реальность: не всегда высокая частота означает высокое быстродействие. Однако не все так плохо -- естественно, проблема эта была известна еще задолго до выхода процессора, и минимизации потерь было уделено серьезное внимание.

Предсказания должны сбываться!


Модули RIMM и "заглушки" (CRIMM). Последними обязательно должны быть "закрыты" все свободные разъемы. Кстати, модулей RIMM меньше двух тоже быть не может --двухканальная шина i850 не допускает "одномодульной" конфигурации

Применительно к соответствующему блоку процессора данная фраза выглядит как самое что ни на есть благое пожелание. И разработчики Pentium 4 сделали все от них зависящее, чтобы так это и происходило. Блок предсказания ветвлений нового CPU подвергся значительным модификациям -- размер буфера, в котором хранятся адреса возможных переходов (BTB -- Branch Target Buffer), увеличился до 4 KB (512 байт у Pentium III), кроме того, сам алгоритм был усовершенствован и теперь учитывает большее количество возможных факторов. В итоге, по заявлениям разработчиков, результативность предсказаний увеличилась на треть, и сейчас их точность достигает 94%.

Усовершенствованное внеочередное исполнение


Для того чтобы найти команду, претендующую на внеочередное исполнение, нужно иметь место, где ее искать. Анализировать "наперед" код, содержащийся в памяти, -- операция накладная, да и медленная. Поэтому у всех современных процессоров есть так называемая "резервация" (Reservation Station), в которой хранятся декодированные и готовые к исполнению команды. У Pentium 4 соответствующий блок называется "окном команд" (Instruction Window), но, по сути, эти два наименования обозначают одно и то же -- буфер для инструкций. Окно команд Pentium 4 тоже существенно выросло, теперь для внеочередного исполнения процессору предлагают "на выбор" более 120 инструкций (точные данные еще не опубликованы).

Удвоенная внутренняя частота ALU


Арифметико-логические блоки (Arithmetical Logic Units) в Pentium 4 работают на удвоенной частоте. Так, к примеру, ALU у Pentium 4 1,5 GHz функционирует на частоте 3 GHz! Это позволяет выполнять многие операции фактически даже не за один, а за полтакта, или две операции за такт.

SSE-2


Вот так будут поставляться Pentium 4

Поскольку производительность нового процессора очень сильно зависит от скорости поступления команд в исполнительные блоки конвейера, "напрашивается" еще один способ ускорения его работы -- сократить количество команд, необходимых для выполнения ключевых операций. Однако в рамках существующего x86-набора это сделать попросту невозможно: если хоть что-то в нем изменить, CPU потеряет совместимость со старыми программами. Ведь то, что даже на самом современном процессоре до сих пор может исполняться код, написанный для родоначальника всего семейства -- Intel 8086, является особым предметом гордости Intel. Но если нельзя изменить, никто не запрещает дополнить. Так и сделали -- Pentium 4 поддерживает расширенный набор SIMD-команд под кодовым наименованием SSE-2. Во-первых, давайте разберемся с самим термином. SIMD (Single Instruction -- Multiple Data) -- это специальный тип инструкций, когда в качестве аргумента одной команды выступает достаточно большой массив данных. SSE-2 (Streaming SIMD Extensions 2, Потоковые SIMD Расширения 2) -- значительно расширенная версия набора SSE, знакомого нам по Pentium III Coppermine. Набор SSE-2 включает в себя 144 новые инструкции, специально ориентированные на обработку больших входящих потоков данных. Использование SSE-2, по заявлениям Intel, способно поднять на невиданные доселе высоты производительность в мультимедиа-приложениях и играх -- кодирование/декодирование аудио- и видеоданных, распознавание речи, трехмерные компьютерные игры -- вот область применения новых команд. Основной упор делается на то, что теперь многие операции, ранее требовавшие написания целого фрагмента программы, могут быть осуществлены с помощью одной-двух инструкций SSE-2.

Платформа для Pentium 4


Intel Desktop Board D850GB на "том самом" Intel i850 -- пока что единственном чипсете для процессоров Pentium 4

Естественно, процессор с таким количеством архитектурных новшеств требовал и принципиально новой платформы. Ее роль на данный момент выполняет новый чипсет Intel i850. Основным моментом, который хотелось бы отметить, является организация работы с памятью в рамках всей связки Pentium 4 <--> i850. Высокоскоростная 400-мегагерцевая RDRAM связана с чипсетом через двухканальную шину, разрядность каждого канала -- 32 бита. Таким образом, в сумме имеем 64 бита и частоту 400 MHz, т. е. пропускную способность порядка 3,2 GBps. Дальше -- больше: полоса пропускания шины FSB, по которой процессор "общается" с чипсетом, также эквивалентна 400 MHz! А учитывая, что сам процессор -- 64-битовый, мы видим, что фактически шина, соединяющая процессор и чипсет, имеет такую же пропускную способность, как шина, соединяющая чипсет с памятью! И опять-таки хочется заметить, что при всей революционности подходов выглядит новая архитектура Intel весьма стройно -- в ней действительно все строго ориентировано на основные приоритеты Pentium 4: потоковое видео и аудио, Internet, мультимедиа, игры.

Кэш первого и второго уровня


Относительно L2-кэша, видимо, разработчики посчитали, что "лучшее -- враг хорошего", поэтому он остался таким же, как у Pentium III Coppermine: "учетверенной" ширины 256-битовая шина и работа на частоте ядра. А вот объем L1-кэша уменьшился вдвое и составляет по 8 КВ на команды и данные. Несколько странное решение, однако, возможно, дело просто в том, что процессор "не резиновый", и учитывая количество всех остальных модулей, больший размер L1 просто не удалось интегрировать в ядро. К тому же не стоит забывать, что Pentium 4 обладает существенно увеличенными в объеме "скрытыми кэшами" -- фактически и 4-килобайтовый Branch Target Buffer, и Instruction Window по принципу своей работы вполне подходят под это определение.

Тестирование


Тестовая платформа...


...была собрана в полном соответствии с рекомендациями самой Intel по тестированию Pentium 4. Собственно, а почему бы им не последовать? Производителю всегда виднее, в какой конфигурации его процессор покажет себя лучше всего, для нас же главное -- сделать так, чтобы Pentium 4 смог продемонстрировать себя "во всей красе". Поэтому в данном случае цели совпадают. Итак, конфигурация тестовой системы для Intel Pentium 4:

  • материнская плата Intel Desktop Board D850GB (чипсет i850);
  • два модуля RDRAM (RIMM) PC800 по 64 MB каждый;
  • видеокарта ELSA Gladiac (NVidia GeForce2 GTS, 32 MB DDR SDRAM);
  • жесткий диск Western Digital WD300BB (UltraATA/100, 7200 RPM, 30 GB);
  • процессоры Intel Pentium 4 1,4 и 1,5 GHz.
В качестве конкурента выступал Pentium III Coppermine (Slot 1), работающий на максимальной из ныне доступных на украинском рынке частот -- 1 GHz. Тестовая система для Pentium III 1 GHz:
  • материнская плата Intel Desktop Board VC820 (чипсет i820);
  • те же два модуля RDRAM, что и в предыдущей конфигурации;
  • аналогичные жесткий диск и видеокарта.

Тестирование проводилось под управлением Windows 98SE с установленным DirectX 8.0 (релиз). Конечно же, может возникнуть вопрос: почему производительность Intel Pentium 4 не сравнивалась ни с Pentium III 1 GHz + i815 + PC133 SDRAM, ни, к примеру, с AMD Athlon "Thunderbird"

1 GHz + VIA KT133? Разумеется, и такое сопоставление было бы интересно. Однако при "первом знакомстве" мы решили все же создать максимально равные условия для "конкурентов", тем более что самый важный вопрос на данный момент -- это не то, как соотносится производительность нового процессора Intel с продукцией конкурирующих фирм, а то, как повлияли изменения в архитектуре, внесенные в Pentium 4, на его быстродействие. Поэтому логичным был и выбор процессора-"оппонента" (предыдущее поколение Pentium), и памяти (RDRAM в обоих случаях).

Тестовые программы


Мы попытались охватить как можно более широкий спектр задач, которые могут потребовать применения современного мощного CPU. Однако основной упор все же сделали на мультимедийные и игровые приложения, поскольку сама Intel позиционирует Pentium 4 прежде всего для них. Поэтому в наших тестах так много игр и "игроподобных" тестов. Кроме привычных нашим читателям SYSmark 2000, Quake III Arena и используемого с недавних пор в качестве основного Direct3D-теста Unreal, приняли участие в испытаниях и MadOnion 3DMark 2000, и малоизвестный (но поддерживающий Hardware T&L!) Tirtanium.

Также хотелось бы остановиться подробнее на тесте Pentium 4 Application Launcher. Фактически он аналогичен по построению SYSmark 2000 (а немного "покопавшись" в инсталляционном пакете, мы обнаружили настолько много совпадений, что невольно приходит в голову мысль о сотрудничестве BAPCo и Intel в разработке данного теста). Правда, приложения, входящие в этот пакет, отобраны совсем по другому признаку: все они должны хорошо работать именно на Pentium 4, так как максимально используют его новые возможности и особенности архитектуры. Думаем, что тест этот тоже показателен: взглянув на состав приложений, читатель сразу же поймет, для какого класса программ предназначен новый процессор Intel.

Естественно, не забыты и тесты памяти: нужно же было увидеть "воочию", как новая шина Pentium 4 повлияет на скорость доступа к ОЗУ и прочие критичные параметры. В этом случае использовался также традиционный для нашей лаборатории Cachemem -- максимально информативный тест, к тому же с очень высокой повторяемостью результатов (что для профессионального тестирования чрезвычайно важно).

Результаты тестов


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

SYSmark 2000 очень интересно сравнивать с "близким родственником" Pentium 4 Application Launcher: хорошо видна разница между приложениями, учитывающими особенности новой архитектуры, и "старыми", код которых был написан до выхода Pentium 4. Различие, нужно сказать, разительное. Однако и здесь не все так плохо: обратите внимание на Windows Media Encoder из комплекта SYSmark 2000 -- программа, использующая потоковый метод обработки информации, оказалась оптимизированной под Pentium 4, даже "сама о том не ведая". Также следует обратить внимание на общий балл SYSmark 2000: несмотря на небольшое отставание в усредненной производительности, в создании Internet-контента (приложения, работающие с графикой и звуком) Pentium 4 1,5 GHz смог победить в общем зачете даже на не оптимизированных под него программах.


В игровых и специальных 3D-тестах ситуация сложная: некоторые игры реагируют на новую архитектуру резким увеличением производительности (наиболее показательны результаты Quake III), некоторые -- гораздо более "сдержаны". И опять-таки -- скорее всего, решающим фактором в данном случае являются алгоритмы, используемые в приложениях. Интересны также и значения производительности 3DMark 2000: DirectX 8.0, содержащий оптимизированный под SSE-2 код, явно "пришелся по душе" новому процессору, что и сказалось на результатах "продвинутого" Direct3D-теста.


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


Ну и наконец, значения скорости чтения из ОЗУ и латентности по тесту Cachemem расставляют все на свои места: система на Pentium 4 продемонстрировала потрясающую скорость линейного чтения из памяти и... чрезвычайно высокую латентность. Вот она -- сильная и одновременно слабая черта новой архитектуры: Pentium 4 однозначно рассчитан на работу именно с потоковым типом данных, он "не любит" читать "чуть-чуть из одного места, чуть-чуть из другого".


Выводы


Intel Pentium 4 -- процессор во всех отношениях новаторский. Фактически впервые в x86-семействе появился CPU, изначально спроектированный в расчете на быстродействие в определенных классах задач, но в то же самое время являющийся универсальным по набору команд. К тому же, говоря о самом процессоре, не стоит забывать и об архитектуре всей остальной системы. В нашем случае она действительно почти идеально сбалансирована, причем опять-таки -- именно для строго определенных целей. Естественно (не будем закрывать глаза на очевидные вещи), кое-чем пришлось пожертвовать, и этими жертвами оказались "неудобные" новому CPU программы и алгоритмы работы. Логику Intel примерно можно представить так: "пусть в некоторых задачах наш процессор окажется на 10--15% медленнее, зато в остальных он получит возможность быть в 1,5--2 раза быстрее!". Такая ситуация и сложилась, судя по результатам наших тестов.

Следовательно, успех нового CPU во многом зависит от поддержки со стороны производителей ПО и распространенности программ именно того типа, на которые он ориентирован. Ну, в последнем пункте можно не сомневаться -- игры и домашняя мультимедиа даже в нашей стране завоевывают все большую популярность, не говоря уже о Западе. А вот касательно учета особенностей Pentium 4 при разработке программ -- здесь, несомненно, должны оказать немалое влияние "громкое" имя Intel и ее репутация, а также хорошая раскрученность марки "Pentium" во всем мире.

Отрадно и то, что переход на программы и процессор "нового века" Intel не намеревается осуществлять прямо завтра и на все 100%. Как следует из официальных заявлений самой компании, производство Pentium 4 только в 2002 г. сравняется с объемами выпуска Pentium III, так что и пользователи, и разработчики программного обеспечения будут располагать достаточным количеством времени для того, чтобы присмотреться к новому процессору. Наверняка не последнюю роль в принятии именно такой схемы сыграл и фактор стоимости памяти для новых систем -- все же RDRAM сейчас намного дороже привычной PC133 SDRAM. Однако Intel надеется, что к тому времени, когда Pentium 4 распространится широко, ситуация успеет измениться в лучшую сторону.

Редакция благодарит киевское представительство
компании Intel: тел. (044) 490-1201 за содействие,
оказанное при подготовке данного материала.
Часть оборудования для тестирования предоставлена
компанией e.service: тел. (044) 464-7777


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua