Для тех, у кого еще не было возможности самим (свой опыт всегда дороже) выяснить все особенности и характеристики новенького процессора от Интел, я имею ввиду тот самый Pentium 4 3.06 ГГц, что живет на 133 МГц (533 QDR) с технологией HT - Hyperthreading, теперь достаточно просто прочесть готовый обзор в Сети. Обзор претендует на звание очень полного и предельно ясного, только с некоторыми оговорками. Сама в своем оригинальном виде для русскоязычного сёрфера Сети не очень-то читабельна:(Но.. всегда можно найти простое решение и еще проще :) В общем, тем кто заинтересуется особыми подробностями, я предлагаю прочесть первый вариант, а тем кого не смутит вариант двойного перевода отечественного онлайнового переводчика и то, что осталось от статьи оригинала в его исполнении - милости прошу проследовать по второй ссылке. Ну а правильней всего, особо не напрягаясь, расслабиться и никуда более не кликая, прочесть обзор на любимом сайте :)

Для начала, посмотрим на то, как новый процессор опознается с помощью программы WinCPUid. Вот что она нам может сообщить о новом камне:

Всевозможные сравнения и тестирования (в том числе и разгон) процессора проводилось в такой конфигурации:

Тайминги памяти:
Процессор:

INTEL Pentium 4 3.06 ГГц/INTEL Pentium 4 2.66 ГГц/INTEL Celeron 2 ГГц

материнская плата

Asus P4ge-v (i845GE)

Ревизия BIOS:
Память:
Частота памяти:

166 MГц (DDR333/PC2700)

CASE 2.5t-2t-2t-5t

Видеокарта:
Винчестер:
Звук:
Питание:

Enermax 365 Ватт

Сразу оговорюсь, что во многочисленных тестах (для получения адекватных результатов) принимало участие несколько разных процессоров Интел. А для сравнения новичка со своим основным конкурентом, производимым компанией AMD (имеется ввиду, конечно же, процессор Athlon XP 2800+ (2250 МГц)) была еще использована такая тестовая платформа: Процессор:

Athlon XP 2800+ (2250 MГц)/Athlon XP 2000+ (1667 MГц)

материнская плата Память:

2x 256 Мбайт GDR PC3200 CASES 2.5 Kingmax

Частота памяти:

166 MГц (DDR333/PC2700) - Dual Channel

Тайминги памяти:

CASE 2.5t-2t-2t-5t

Видеокарта:

nVidia GeForce 4 Ti4600 (Prolink) 128 Мбайт

Винчестер:

Western DIGITAL 80 Go IDE 7200 об.\мин.(2 Мбайт)

Звук:

Creative Labs Sound Blaster Live! 5.1

Питание:

Enermax 365 Ватт

Asus A7V8X (Via KT400)

Ревизия BIOS:
Этим железом управляли такие драйвера:
  • Чипсет Интел: INTEL: 4.04.1007
  • INTEL Accelerator Application: 2.2.2
  • Видео драйвер: Detonator 40.72
  • Pack Service: SP1 для XP, SP3 для 2K
  • Драйвер для чипсета VIA: Via in1 4.43

Далее в обзоре подробно и грамотно описано на каких кремниевых подложках, по какой технологии и с какими нормами выпускаются процессоры, приведено много фотографий, на которых можно увидеть не только процессорное ядро в большом увеличении, но и снимки из лаборатории. Также сравниваются тех. процессы для процессоров с ядром Willamette-128k и Northwood-512k, указаны соответствующие степпинги и CPUid процессоров. Еще более подробная информация о Pentium-4 может быть найдена здесь.

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

Казалось бы, параллелизм, "два в одном", даже в Windows определяется как два процессора сразу, следовало бы ожидать (в идеале) такой картины:

На рисунке показан ожидаемый теоретический прирост производительности по сравнению с обычным процессором, "обделённым" технологией HT, но как все выглядит в действительности, покажут тесты. Для проведения такого полномасштабного тестирования было использовано большое количество программ, как утилизирующих новые возможности процессора (использующие, оптимизированные под Hyperthreading), так и не использующие его "преимущества".

Естественно, что в приложениях не использующих новые инструкции, решающую роль сыграла только частота процессора (Интел), или архитектура процессора (AMD). Например, процессор Athlon XP 2800+ оказался быстрее всех в тесте CPUMark 99. А вот уже в PcMark 2002 можно заметить кое-какой выигрыш от использования Hyperthreading, но не слишком значительный. Гораздо же солиднее выглядит Pentium 4 3.06 ГГц (HT) в таких тестах как:

Тест на кодирование mp3 программой GoGoMP3, которая частично оптимизирована под использование инструкций SSE и Multi-Threading:

и также в программе MTB (Multi-Threaded Benchmark):

В остальных же тестовых приложениях либо выигрывает Athlon XP 2800+ (с более низкой частотой!), как, например, в графическом тесте 3D Mark 2001 SE,

либо наблюдается небольшое преимущество Pentium 4 3.06 ГГц (HT) как в игре Quake3 Arena. А вот в Unreal Tournament 2003 процессор с Hyperthreading выигрывает аж 10 FPS у такого же, но не оснащенного технологией Hyperthreading процессора Pentium 4 3.06 ГГц. При этом разница с Athlon XP 2800+ составляет внушительные 32.74 кадра в секунду!

Значит, кое какой толк от использования самых новых процессоров в самых новых играх уже есть! Вспоминая разницу в полкадра в секунду при использовании патча, реализующего поддержку инструкций 3Dnow! в игре Quakе-2, как-то даже смешно становится:)

Пожалуй, самой интересной нашим читателям должна показаться та часть, в которой говорится о разгоне:) (а для чего мы тут, собственно, собрались:) ?)

В ноябре 2002г. корпорация Intel выпустила процессор Pentium 4 с частотой 3,06 ГГц, оснащенный технологией Hyper-Threading, которая превращает персональный компьютер с одним физическим процессором в систему с двумя логическими процессорами, работающими во многом независимо друг от друга. Технология превращения однопроцессорного ПК в фактически двухпроцессорную машину (именно так она и видится операционными системами) как нельзя лучше подходит для использования ПК в качестве рабочей станции.

Hyper-Threading - это многопроцессорность, только виртуальная, так как процессор Pentium 4 на самом деле один, а процессоров ОС видит - два. У процессора предусмотрены два основных режима работы: Single-Task (ST) и Multi-Task (MT). В режиме ST активным является только один логический процессор, который безраздельно пользуется доступными ресурсами (режимы ST0 и ST1); другой LP остановлен командой HALT. При появлении второго программного потока бездействовавший логический процессор активируется (посредством прерывания), и физический CPU переводится в режим MT.

Не все ОС, даже поддерживающие многопроцессорность, могут работать с таким CPU. ОС без поддержки ACPI, второй логический процессор увидеть не смогут. Кроме того, BIOS системной платы также должен уметь определять наличие процессора с поддержкой Hyper-Threading. Кроме ОС, BIOS и электронной платы, с технологией Hyper-Threading должен быть совместим еще и чипсет.

Intel Pentium 4 3.06 гГц является первым cpu в семействе, поддерживающем технологию Hyper-Threading, и имеет следующие характеристики:

    Частота ядра – 3066 МГц, частота шины Quad Pumped Bus - 533 МГц;

    Размер кэша первого уровня: 8 Кбайт – для данных, 12 Кбайт – для инструкций. Размер кэша второго уровня – 512 Кбайт;

    Процессорное ядро Northwood. Технология производства – 0.13 мкм с использованием медных соединений;

    Номинальное напряжение питания ядра – 1.525 В;

    Площадь ядра – 131 кв. мм, число транзисторов – 55 миллионов;

    Физический интерфейс – Socket 478;

    Поддержка наборов инструкций MMX, SSE, SSE2;

    Поддержка технологии Hyper-Threading.

Intel Pentium IV Prescott

Долгое время компания Intel говорила о выходе нового ядра, которое в СМИ уже успели назвать Pentium 5. Долгое время выпуск нового ядра под названием Prescott переносился сначала с осени 2003 года на декабрь, а затем и вовсе на первый квартал 2004 года. Понимая, что ждать более нельзя Intel решилась на его выпуск. Линейка процессоров на ядре Prescott была представлена 2 февраля 2004 года. Также были представлены Pentium 4 на ядре Northwood, с частотой 3,40 ГГц и Pentium 4 Extreme Edition, с такой же частотой и прежними параметрами.

Традиционно, каждый принципиально новый процессор ассоциируется с новым техпроцессом. И действительно, все ждали появления новых технологических норм 90 нм, которые были обещаны компанией еще в 2003 году. И, наконец, Prescott, выполненный по техпроцессу 0,09 мкм появился. Каждый новый техпроцесс предполагает увеличение выгодности производства путем получения большего количества кристаллов с одной пластины, уменьшение размеров кристалла вместе с уменьшением его тепловыделения и, наконец, большие частоты работы самих кристаллов. Только вот с проектной нормой 90 нм ситуация оказалась гораздо сложнее. Во-первых, транзисторы такого размера достаточно сложно производить одинаковыми. При таких размерах и многослойной металлизации возникает несовпадение напылённых и окисленных областей, которые образуют затворы и исток со стоком, в результате чего возникает большой разброс параметров транзисторов. Во-вторых, из-за маленькой длины затвора сложно управлять параметрами транзистора. С одной стороны это улучшает скоростные показатели транзистора (переключение происходит быстрее), но с другой – увеличивает токи утечки транзистора. Это заставляет поднимать напряжение для управления током через затвор для гарантированного переключения транзистора, что в свою очередь увеличивает тепловыделение. Так вот, технология 90 нм неожиданно привела производителей к большим рабочим температурам кристалла. Это и есть главная причина, по которой выпуск нового Prescott постоянно откладывался.

Новая линейка Prescott, состоит из моделей с частотами от 2,8 до 3,4 ГГц. Все модели выпущены с частотой шины 800 МГц. Для отличия от аналогичных моделей на ядре Northwood маркируются постфиксом E. Кроме того, модель 2,8 также выпущена с шиной 533 МГц и маркируется как 2,8А. Prescott содержит 125 млн. транзисторов, при том, что площадь кристалла даже немного уменьшилась и стала 112 мм 2 .

В Prescott используется большое количество нововведений. Среди них – использование семислойной медной металлизации между транзисторами, применение диэлектрика CDO (Carbon Doped Oxide) с низким диэлектрическим коэффициентом вместо прежнего SIOF в межсоединениях. В новом процессоре увеличили объем кэша данных L1 до 16 КБ и L2 до 1 МБ. Новинка также отличается дополнительными буферами, поддержкой SSE3. Главной особенностью новой архитектуры Prescottстало удлинение конвейера с 20 до 31 стадии. Конвейер стал длиннее, но сами стадии укоротились по времени. Соответственно изменилось и прохождение инструкций по конвейеру. Увеличение количества стадий позволило поднять тактовую частоту. Как известно, увеличение стадий конвейера грозит потерями тактов при перезагрузке конвейера в случае неправильного предсказания ветвления. Поэтому, была улучшена схема предсказания ветвлений. Теперь процессор может анализировать возможную длину перехода и наличие цикла, а также распознавать его тип. Конвейер Prescott был специально изменен для большего параллелизма. Разработчики ввели понятие асинхронных потоков, которые делятся на главные и виртуальные (вспомогательные). Главный поток выполняется с наибольшим приоритетом, а виртуальный меж собой переключается и чередуется.

Для усовершенствования архитектуры также было увеличено число всевозможных буферов. Прежде всего, это WC-буферы, которые отвечают за сбрасывание данных в оперативную память при переполнении кэша L2. Их количество пришлось увеличить примерно до 4000, видимо, из-за удвоения кэша L2.

Итак, сделан еще один шаг на пути, указанном Гордоном Муром, - был выпущен первый процессор по проектным нормам 0,09 мкм. Результаты отчасти разочаровывают: резко увеличилось тепловыделение, тесты не показывают заметного роста производительности, причем значительная доля из них вообще говорит о снижении вычислительной мощи. Процессор, которому прочили звание процессора нового поколения – Pentium 5 – оказался лишь технологическим развитием старой линейки Northwood, тем более что стартовал он на тех же частотах, что и его предшественник, выполненный по техпроцессу 0,13 мкм. Что касается разгона кристаллов, то новый Prescott 3,20 едва ли «дотягивает» до 3,40, в то время как новый Northwood 3.40 спокойно «заводится» на 4 ГГц. Но не все так плохо - реальные приложения, в отличие от тестов, оказываются более чувствительными к увеличению объема кэш-памяти. Высокая температура кристалла процессора, малый разгон кристаллов – всё это говорит о том, что существующее ядро Prescott вовсе не окончательное, а переходное. И не смотря на все недостатки нового процессора, будущее технологий, так или иначе, за Prescott!


Казалось бы не так уж и давно вышел Pentium 4 2,8 ГГц, но неугомонная компания Intel видать настолько горда способностью своего нового процессорного ядра к постоянному «разгону», что не дает нам покоя анонсами все новых и новых процессоров:). Однако сегодняшний наш герой отличается от предыдущей топовой модели не только на 200 с небольшим мегагерц — то, о чем давно мечтали некоторые особо продвинутые пользователи, наконец-то свершилось: технология эмуляции двух процессоров на одном процессорном ядре, ранее бывшая достоянием лишь сверхдорогих Xeon, наконец-то «освобождена» и отправлена в «свободное десктопное плавание». Хотите двухпроцессорный домашний компьютер? Их есть у нас! Все последующие модели Pentium 4, начиная с рассматриваемой в этом материале, будут обладать поддержкой Hyper-Threading. Однако кто-то может вполне резонно поинтересоваться: «А зачем мне двухпроцессорная машина дома? У меня же не сервер какой-нибудь!». И действительно — зачем? Именно это мы и постарались объяснить ниже. Итак: Hyper-Threading — что это такое и зачем он может быть нужен в обычных персональных компьютерах?

SMP и Hyper-Threading: «галопом по европам»

Для начала, давайте сделаем вид, что начинаем «с чистого листа» т. е. механизмы функционирования многопроцессорных систем нам неизвестны. Мы не собираемся начинать данной статьей цикл монографий, посвященных этому вопросу:), поэтому сложных моментов, связанных, к примеру, с виртуализацией прерываний и прочими вещами, трогать не будем. Фактически, нам нужно просто представлять как работает классическая SMP(Symmetric Multi-Processor)-система с точки зрения обычной логики. Нужно это хотя бы потому, что не так уж велико количество пользователей, хорошо себе представляющих как работает SMP-система, и в каких случаях от использования двух процессоров вместо одного можно ожидать реального увеличения быстродействия, а в каких — нет. Честное слово, один из авторов этого материала как-то угробил часа полтора времени, доказывая своему, скажем так, «не бедному» другу, что Unreal Tournament у него на многопроцессорной машине будет работать ничуть не быстрее, чем на обычной:). Смешно? Уверяю вас — только со стороны. Итак, представим, что у нас есть, к примеру, два процессора (остановимся на этом, самом простом примере) вместо одного. Что это нам дает?

В общем-то… ничего. Потому что в дополнение к этому нам нужна еще и операционная система, умеющая эти два процессора задействовать. Система эта должна быть по определению многозадачной (иначе никакого смысла в наличии двух CPU просто быть не может), но кроме этого, ее ядро должно уметь распараллеливать вычисления на несколько CPU. Классическим примером многозадачной ОС, которая этого делать не умеет, являются все ОС от Microsoft, называемые обычно для краткости «Windows 9x» — 95, 95OSR2, 98, 98SE, Me. Они просто-напросто не могут определить наличие более чем одного процессора в системе… ну и, собственно, дальше объяснять уже нечего:). Поддержкой SMP обладают ОС этого же производителя, построенные на ядре NT: Windows NT 4, Windows 2000, Windows XP. Также в силу своих корней, этой поддержкой обладают все ОС, основанные на идеологии Unix — всевозможные Free- Net- BSD, коммерческие Unix (такие как Solaris, HP-UX, AIX), и многочисленные разновидности Linux. Да, к слову — MS DOS многопроцессорность в общем случае тоже «не понимает»:).

Если же два процессора все же определились системой, то дальнейший механизм их задействования в общем-то (на «логическом», подчеркнем, уровне!) довольно-таки прост. Если в данный момент времени исполняется одно приложение — то все ресурсы одного процессора будут отданы ему, второй же будет просто простаивать. Если приложений стало два — второе будет отдано на исполнение второму CPU, так что по идее скорость выполнения первого уменьшиться не должна вообще никак. Это в примитиве. Однако на самом деле все сложнее. Для начала: исполняемое пользовательское приложение у нас может быть запущено всего одно, но количество процессов (т. е. фрагментов машинного кода, предназначенных для выполнения некой задачи) в многозадачной ОС всегда намного больше. Начнем с того, что сама ОС — это тоже приложение… ну и не будем углубляться — логика понятна. Поэтому на самом деле второй CPU способен немного «помочь» даже одиночной задаче, взяв на себя обслуживание процессов, порожденных операционной системой. Опять-таки, к слову об упрощениях — именно так, идеально, разделить CPU между пользовательским приложением и ОС, конечно, все равно не получится, но, по крайней мере, процессор, занятый исполнением «полезной» задачи, будет меньше отвлекаться.

Кроме того, даже одно приложение может порождать потоки (threads), которые при наличии нескольких CPU могут исполняться на них по отдельности. Так, например, поступают почти все программы рендеринга — они специально писались с учетом возможности работы на многопроцессорных системах. Поэтому в случае использования потоков выигрыш от SMP иногда довольно весо м даже в «однозадачной» ситуации. По сути, поток отличается от процесса только двумя вещами — он во-первых никогда не порождается пользователем (процесс может запустить как система, так и человек, в последнем случае процесс = приложение; появление потока инициируется исключительно запущенным процессом), и во-вторых — поток умирает вместе с родительским процессом независимо от своего желания — к примеру, если родительский процесс «глюкнул и упал» — все порожденные им потоки ОС считает бесхозными и «прибивает» уже сама, автоматически.

Также не стоит забывать, что в классической SMP-системе оба процессора работают каждый со своим кэшем и набором регистров, но память у них общая. Поэтому если две задачи одновременно работают с ОЗУ, мешать они друг другу будут все равно, даже если CPU у каждой «свой собственный». Ну и наконец последнее: в реальности мы имеем дело не с одним, не с двумя, и даже не с тремя процессами. На приведенном коллаже (это действительно коллаж, потому что со скриншота Task Manager были удалены все пользовательские процессы, т. е. приложения, запускаемые «для работы») хорошо видно, что «голая» Windows XP, сама по себе, не запустив еще ни одного приложения, уже породила 12 процессов, причем многие из них к тому же еще и многопоточные, и общее количество потоков достигает двухсот восьми штук (!!!).

Поэтому рассчитывать на то, что нам удастся прийти к схеме «по собственному CPU на каждую задачу» совершенно не приходится, и переключаться между фрагментами кода процессоры будут все равно — и физические, и виртуальные, и будь они хоть виртуальные в квадрате и по 10 штук на каждое физическое ядро:). Впрочем, на самом деле все не так грустно — при грамотно написанном коде ничего в данный момент не делающий процесс (или поток) процессорного времени практически не занимает (это тоже видно на коллаже).

Теперь, разобравшись с «физической» многопроцессорностью, перейдем к Hyper-Threading. Фактически — это тоже многопроцессорность, только… виртуальная. Ибо процессор Pentium 4 на самом деле один — вот он, стоит в сокете, сверху кулер пришлепнут:). Второго сокета — нет. А процессоров ОС видит — два. Как это? В общем-то, очень просто. Смотрим на рисунок.

Здесь нам придется все-таки немного углубиться в технические детали, потому что иначе, увы, что-либо объяснить не получится. Впрочем, те, кому оные детали неинтересны, могут данный абзац просто пропустить. Итак, классическому «одноядерному» процессору в нашем случае добавили еще один блок AS — IA-32 Architectural State. Architectural State содержит состояние регистров (общего назначения, управляющих, APIC, служебных). Фактически, AS#1 плюс единственное физическое ядро (блоки предсказания ветвлений, ALU, FPU, SIMD-блоки и пр.) представляет из себя один логический процессор (LP1), а AS#2 плюс все то же физическое ядро — второй логический процессор (LP2). У каждого LP есть свой собственный контроллер прерываний (APIC — Advanced Programmable Interrupt Controller) и набор регистров. Для корректного использования регистров двумя LP существует специальная таблица — RAT (Register Alias Table), согласно данным в которой можно установить соответствие между регистрами общего назначения физического CPU. RAT у каждого LP своя. В результате мы получили схему, при которой на одном и том же ядре могут свободно выполняться два независимых фрагмента кода т. е. де-факто — многопроцессорную систему!

Hyper-Threading: совместимость

Кроме того, возвращаясь к вещам практическим и приземленным, хотелось бы затронуть еще один немаловажный аспект: не все ОС, даже поддерживающие многопроцессорность, могут работать с таким CPU как с двумя . Связано это с таким «тонким» моментом, как изначальное определение количества процессоров при инициализации операционной системы. Intel прямо говорит, что ОС без поддержки ACPI второй логический процессор увидеть не смогут. Кроме того, BIOS системной платы также должен уметь определять наличие процессора с поддержкой Hyper-Threading и соответствующим образом «рапортовать» системе. Фактически, применительно, к примеру, к Windows, это означает, что «в пролете» у нас оказывается не только линейка Windows 9x, но и Windows NT — последняя ввиду отсутствия поддержки ACPI не сможет работать с одним новым Pentium 4 как с двумя. А вот что приятно — это то, что несмотря на заблокированную возможность работы с двумя физическими процессорами, с двумя логическими, получаемыми с помощью Hyper-Threading, сможет работать Windows XP Home Edition. А Windows XP Professional, кстати, несмотря на ограничение количества физических процессоров до двух, при двух установленных CPU с поддержкой Hyper-Threading честно «видит» четыре:).

Теперь немного о «железе». То, что новые CPU с частотой более 3 ГГц могут потребовать замены системной платы, знают, наверное, уже все — земля (а точнее — Internet) слухами полнится уже давно. К сожалению, это на самом деле так. Даже при номинальном сохранении все того же процессорного разъема Socket 478 Intel не удалось оставить в неприкосновенности потребляемую мощность и тепловыделение новых процессоров — потребляют они больше, и греются, соответственно, тоже. Можно предположить (хоть это и не подтверждено официально), что увеличение потребления по току связано не только с ростом частоты, но и с тем, что из-за ожидаемого использования «виртуальной многопроцессорности» нагрузка на ядро в среднем вырастет, следовательно, возрастет и средняя потребляемая мощность. «Старые» системные платы в некоторых случаях могут быть совместимы с новыми CPU — но только если делались «с запасом». Грубо говоря, те производители, которые делали свои PCB в соответствии с рекомендациями самой Intel относительно потребляемой Pentium 4 мощности, оказались в проигрыше по отношению к тем, кто немного «перестраховался», поставив на плату VRM с запасом и соответствующим образом ее разведя. Но и это еще не все. Кроме ОС, BIOS и электроники платы, с технологией Hyper-Threading должен быть совместим еще и чипсет . Поэтому счастливыми обладателями двух процессоров по цене одного:) смогут стать только те, чья системная плата основана на одном из новых чипсетов с поддержкой 533 МГц FSB: i850E, i845E, i845PE/GE. Несколько особняком стоит i845G — первая ревизия этого набора микросхем Hyper-Threading не поддерживает , более поздняя — уже совместима.

Ну, вот, вроде бы с теорией и совместимостью разобрались. Но не будем спешить. ОК, у нас есть два «логических» процессора, у нас есть Hyper-Threading, вау! — это круто. Но как уже было сказано выше, физически у нас процессор как был один, так и остался. Зачем же тогда нужна такая сложная «эмуляционная» технология, отбрасывая то, что можно горделиво демонстрировать Task Manager с графиками загруженности двух CPU друзьям и знакомым?

Hyper-Threading: зачем она нужна?

Против обыкновения, в этой статье мы немного больше чем обычно уделим внимания рассуждениям т. е. не технической прозе (где все в общем-то довольно однозначно трактуется и на основании одних и тех же результатов совершенно независимые люди чаще всего делают тем не менее весьма похожие выводы), а «технической лирике» — т. е. попытке понять, что же такое нам предлагает Intel и как к этому следует относиться. Я уже неоднократно писал в «Колонке редактора» на нашем сайте, и повторю здесь, что эта компания, если внимательно посмотреть, никогда не отличалась абсолютным совершенством своих продуктов, более того — вариации на те же темы от других производителей подчас получались гораздо более интересными и концептуально стройными. Однако, как оказалось, абсолютно все делать совершенным и не нужно — главное чтобы чип олицетворял собой какую-то идею, и идея эта приходилась очень вовремя и к месту. И еще — чтобы ее просто не было у других.

Так было с Pentium, когда Intel противопоставила весьма шустрому в «целочисленке» AMD Am5x86 мощный FPU. Так было с Pentium II, который получил толстую шину и быстрый кэш второго уровня, благодаря чему за ним так и не смогли угнаться все процессоры Socket 7. Так было (ну, по крайней мере, я считаю это свершившимся фактом) и с Pentium 4, который противопоставил всем остальным наличие поддержки SSE2 и быстрый рост частоты — и тоже де-факто выиграл. Сейчас Intel предлагает нам Hyper-Threading. И мы отнюдь не призываем в священной истерике биться лбом о стенку и кричать «господи помилуй», «аллах велик» или «Intel rulez forever». Нет, мы просто предлагаем задуматься — почему производитель, известный грамотностью своих инженеров (ни слова про маркетологов! :)) и громадными суммами, которые он тратит на исследования, предлагает нам эту технологию.

Объявить Hyper-Threading «очередной маркетинговой штучкой», конечно, проще простого. Однако не стоит забывать, что это технология , она требует исследований, денег на разработку, времени, сил… Не проще ли было нанять за меньшую сумму еще одну сотню PR-менеджеров или сделать еще десяток красивых рекламных роликов? Видимо, не проще. А значит, «что-то в этом есть». Вот мы сейчас и попытаемся понять даже не то, что получилось в результате, а то, чем руководствовались разработчики IAG (Intel Architecture Group), когда принимали решение (а такое решение наверняка принималось!) — разрабатывать «эту интересную мысль» дальше, или отложить в сундук для идей забавных, но бесполезных.

Как ни странно, для того чтобы понять как функционирует Hyper-Threading, вполне достаточно понимать как работает… любая многозадачная операционная система. И действительно — ну ведь исполняет же каким-то образом один процессор сразу десятки задач? Этот «секрет» всем уже давно известен — на самом деле одновременно все равно выполняется только одна (на однопроцессорной системе), просто переключение между кусками кода разных задач выполняется настолько быстро, что создается иллюзия одновременной работы большого количества приложений.

По сути, Hyper-Threading предлагает нам то же самое, но реализована аппаратно, внутри самого CPU. Есть некоторое количество различных исполняющих блоков (ALU, MMU, FPU, SIMD), и есть два «одновременно» исполняемых фрагмента кода. Специальный блок отслеживает, какие команды из каждого фрагмента необходимо выполнить в данный момент, после чего проверяет, загружены ли работой все исполняющие блоки процессора. Если один из них простаивает, и именно он может исполнить эту команду — ему она и передается. Естественно, существует и механизм принудительного «посыла» команды на выполнение — в противном случае один процесс мог бы захватить весь процессор (все исполняющие блоки) и исполнение второго участка кода (исполняемого на втором «виртуальном CPU») было бы прервано. Насколько мы поняли, данный механизм (пока?) не является интеллектуальным т. е. не способен оперировать различными приоритетами, а просто чередует команды из двух разных цепочек в порядке живой очереди т. е. просто по принципу «я твою команду исполнил — теперь уступи место другому потоку». Если, конечно, не возникает ситуации, когда команды одной цепочки по исполняющим блокам нигде не конкурируют с командами другой. В этом случае мы получаем действительно на 100% параллельное исполнение двух фрагментов кода.

Теперь давайте подумаем, чем Hyper-Threading потенциально хороша, и чем — нет. Самое очевидное следствие ее применения — повышение коэффициента полезного действия процессора. Действительно — если одна из программ использует в основном целочисленную арифметику, а вторая — выполняет вычисления с плавающей точкой, то во время исполнения первой FPU просто ничего не делает, а во время исполнения второй — наоборот, ничего не делает ALU. Казалось бы, на этом можно закончить. Однако мы рассмотрели лишь идеальный (с точки зрения применения Hyper-Threading) вариант. Давайте теперь рассмотрим другой: обе программы задействуют одни и те же блоки процессора. Понятно, что ускорить выполнение в данном случае довольно сложно — ибо физическое количество исполняющих блоков от «виртуализации» не изменилось. А вот не замедлится ли оно? Давайте разберемся. В случае с процессором без Hyper-Threading мы имеем просто «честное» поочередное выполнение двух программ на одном ядре с арбитром в виде операционной системы (которая сама представляет собой еще одну программу), и общее время их работы определяется:

  1. временем выполнения кода программы №1
  2. временем выполнения кода программы №2
  3. временными издержками на переключение между фрагментами кода программ №1 и №2

Что мы имеем в случае с Hyper-Threading? Схема становится немного другой:

  1. время выполнения программы №1 на процессоре №1 (виртуальном)
  2. время выполнения программы №2 на процессоре №2 (виртуальном)
  3. время на переключение одного физического ядра (как набора требуемых обеим программам исполняющих блоков) между двумя эмулируемыми «виртуальными CPU»

Остается признать, что и тут Intel поступает вполне логично : конкурируют между собой по быстродействию у нас только пункты за номером три, и если в первом случае действие выполняется программно-аппаратно (ОС управляет переключением между потоками, задействуя для этого функции процессора), то во втором случае мы фактически имеем полностью аппаратное решение — процессор все делает сам. Теоретически, аппаратное решение всегда оказывается быстрее. Подчеркнем — теоретически. Практикум у нас еще впереди.

Но и это еще не все. Также одним из серьезнейших… нет, не недостатков, а скорее, неприятных моментов является то, что команды, увы, не исполняются в безвоздушном пространстве, но вместо этого Pentium 4 приходится иметь дело с классическим x86-кодом, в котором активно используется прямое адресование ячеек и даже целых массивов, находящихся за пределами процессора — в ОЗУ. Да и вообще, к слову, большинство обрабатываемых данных чаще всего находится там:). Поэтому «драться» между собой наши виртуальные CPU будут не только за регистры, но и за общую для обоих процессорную шину, минуя которую данные в CPU попасть просто не могут. Однако тут есть один тонкий момент: на сегодняшний день «честные» двухпроцессорные системы на Pentium III и Xeon находятся в точно такой же ситуации ! Ибо наша старая добрая шина AGTL+, доставшаяся в наследство всем сегодняшним процессорам Intel от знаменитого Pentium Pro (в дальнейшем ее лишь подвергали модификациям, но идеологию практически не трогали) — ВСЕГДА ОДНА, сколько бы CPU ни было установлено в системе. Вот такой вот «процессорный коаксиал»:). Отойти от этой схемы на x86 попробовала только AMD со своим Athlon MP — у AMD 760MP/760MPX от каждого процессора к северному мосту чипсета идет отдельная шина. Впрочем, даже в таком «продвинутом» варианте мы все равно убегаем от проблем не очень далеко — ибо уж что-что, а шина памяти у нас точно одна — причем вот в этом случае уже везде (напоминаем, разговор идет про x86-системы).

Однако нет худа без добра, и даже из этого в общем-то не очень приятного момента Hyper-Threading может помочь извлечь какую-то пользу. Дело в том, что по идее мы должны будем наблюдать существенный прирост производительности не только в случае с несколькими задачами, использующими разные функциональные блоки процессора, но и в том случае, если задачи по-разному работают с данными, находящимися в ОЗУ. Возвращаясь к старому примеру в новом качестве — если одно приложение у нас что-то усиленно считает «внутри себя», другое же — постоянно подкачивает данные из ОЗУ, то общее время выполнения их в случае использования Hyper-Threading по идее должно уменьшиться даже если они используют одинаковые блоки исполнения инструкций — хотя бы потому, что команды на чтение данных из памяти смогут обрабатываться в то время, пока наше первое приложение будет что-то усиленно считать.

Итак, подведем итог: технология Hyper-Threading с теоретической точки зрения выглядит весьма неплохо и, мы бы сказали, «адекватно», т. е. соответствует реалиям сегодняшнего дня. Уже довольно редко можно застать пользователя с одним сиротливо открытым окном на экране — всем хочется одновременно и музыку слушать, и по Internet бродить, и диски с любимыми MP3 записывать, а может даже, и поиграть на этом фоне в какую-нибудь стрелялку или стратегию, которые, как известно, процессор «любят» ну просто со страшной силой:). С другой стороны, общеизвестно, что конкретная реализация способна иногда своей «кривизной» убить любую самую превосходную идею, и с этим мы тоже не раз встречались на практике. Поэтому закончив с теорией, перейдем к практике — тестам. Они-то и должны нам помочь ответить на второй главный вопрос: так ли хороша Hyper-Threading сейчас — и уже не в качестве идеи, а в качестве конкретной реализации этой идеи «в кремнии». Тестирование

Тестовый стенд:

  • Процессор: Intel Pentium 4 3,06 ГГц с поддержкой технологии Hyper-Threading, Socket 478
  • Материнская плата: Gigabyte 8PE667 Ultra (версия BIOS F3) на чипсете i845PE
  • Память: 512 МБ PC2700(DDR333) DDR SDRAM DIMM Samsung, CL 2
  • Видеокарта: Palit Daytona GeForce4 Ti 4600
  • Жесткий диск: IBM IC35L040AVER07-0, 7200 об/мин

Программное обеспечение:

  • OC и драйверы:
    • Windows XP Professional SP1
    • DirectX 8.1b
    • Intel Chipset Software Installation Utility 4.04.1007
    • Intel Application Accelerator 2.2.2
    • Audiodrivers 3.32
    • NVIDIA Detonator XP 40.72 (VSync=Off)
  • Тестовые приложения:
    • (с поддержкой мультипроцессорности и технологии Hyper-Threading)
    • RazorLame 1.1.5.1342 + Lame codec 3.92
    • VirtualDub 1.4.10 + DivX codec 5.02 Pro
    • WinAce 2.2
    • Discreet 3ds max 4.26
    • BAPCo & MadOnion SYSmark 2002
    • MadOnion 3DMark 2001 SE build 330
    • Gray Matter Studios & Nerve Software Return to Castle Wolfenstein v1.1
    • Croteam/GodGames Serious Sam: The Second Encounter v1.07

Вопреки обычаю, мы не будем сегодня тестировать производительность нового Pentium 4 3,06 ГГц в сопоставлении с предыдущими моделями или же с процессорами-конкурентами. Ибо это по большому счету бессмысленно. Тесты, составляющие нашу методику, не менялись уже довольно продолжительный период времени, и желающие провести необходимые сопоставления могут воспользоваться данными из предыдущих материалов , мы же сосредоточимся на основном моменте, не распыляясь на детали. А основным в этом материале, как, наверное, нетрудно догадаться, является исследование технологии Hyper-Threading и ее влияния на производительность… на производительность чего ? Не столь уж и праздный вопрос, как оказывается. Впрочем, не будем забегать вперед. Начнем с традиционных тестов, через которые мы плавно подойдем (в контексте данного материала) к основным.

Кодирование WAV в MP3 (Lame)
Кодирование VideoCD в MPEG4 (DivX)
Архивация с помощью WinAce с 4-мегабайтным словарем

Хоть сколько-нибудь явного преимущества Hyper-Threading не продемонстрировала, но надо сказать, что мы и шансов-то особых данной технологии не дали — почти все приложения «однопроцессорные», одновременно исполняемых потоков не порождают (проверено!), и, стало быть, в этих случаях мы имеем дело с обычным Pentium 4, которому чуть-чуть подняли частоту. Говорить о каких-то тенденциях на фоне таких мизерных расхождений вряд ли уместно… хотя если все же высасывать их из пальца, то они даже немного в пользу Hyper-Threading.

3ds max 4.26

Классический тест, но в то же самое время — первое из приложений в этом обзоре, которое в явном виде поддерживает многопроцессорность. Конечно, колоссальным преимущество системы с включенной поддержкой Hyper-Threading не назовешь (оно составляет порядка 3%), однако не будем забывать, что в данном случае Hyper-Threading работала далеко не в самой лучшей для себя ситуации: 3ds max реализует поддержку SMP за счет порождения потоков , причем все они используются для одной и той же цели (рендеринг сцены) и, стало быть, содержат примерно одинаковые команды, а потому и работают тоже одинаково (по одной схеме). Мы уже писали, что Hyper-Threading лучше подходит для того случая, когда параллельно исполняются разные программы, задействующие разные блоки CPU. Тем более приятно, что даже в такой ситуации технология смогла «на ровном месте» обеспечить пусть и небольшой, но прирост быстродействия. Ходят слухи, что 3ds max 5.0 дает больший выигрыш при задействовании Hyper-Threading, и учитывая рвение, с которым Intel «проталкивает» свои технологии в области ведения производителей ПО, это как минимум следует проверить. Несомненно, так мы и сделаем, но уже в более поздних материалах на эту тему.

3DMark 2001SE

Результаты в общем-то вполне закономерные, и вряд ли могут вызвать у кого-то удивление. Быть может, лучше все-таки использовать бенчмарки для 3D именно для того, для чего они предназначены — тестирования скорости видеокарт, а не процессоров? Наверное, так оно и есть. Впрочем, результаты, как известно, лишними не бывают. Несколько настораживает чуть меньший балл у системы с задействованной Hyper-Threading. Впрочем, учитывая что разница составляет около 1%, мы бы не делали из этого далеко идущих выводов.

Return to Castle Wolfenstein,
Serious Sam: The Second Encounter

Примерно аналогичная ситуация. Впрочем, мы еще не подобрались даже близко к тестам, способным хоть как-то продемонстрировать плюсы (или минусы) Hyper-Threading. Иногда (на неощутимо малую величину) задействование «псевдо-многопроцессорности» дает отрицательный результат. Однако это не те сенсации, которых мы ждем, не так ли? :) Не слишком помогает даже тестирование со звуком, который, по идее, должен обсчитываться отдельным потоком и потому давать шанс проявить себя второму логическому процессору.

SYSmark 2002 (Office Productivity и Internet Content Creation)

А вот теперь так и хочется во весь голос крикнуть: «Ну, кто сомневался в том, что Hyper-Threading реально способна повысить быстродействие на реальных задачах?!». Результат: +16—20% — действительно ошеломляет. Причем что самое интересное — ведь SYSmark пытается эмулировать именно ту схему работы, которую Intel считает самой «удачной» для технологии Hyper-Threading — запуск различных приложений и одновременная работа с ними. Причем в процессе исполнения своего скрипта, SYSmark 2002 поступает вполне грамотно с точки зрения имитации работы пользователя, «отправляя в background» некоторые приложения, которые уже получили свое «долгосрочное задание». Так, например, кодирование видео происходит на фоне исполнения прочих приложений из скрипта Internet Content Creation, а в офисном подтесте действует вездесущее антивирусное ПО и декодирование речи в текст с помощью Dragon Naturally Speaking. По сути — первый тест, в котором созданы более или менее «вольготные» условия для технологии Hyper-Threading, и она тут же показала себя с наилучшей стороны! Впрочем, мы решили не полагаться во всем на тесты, написанные не нами, и провели «для закрепления эффекта» несколько показательных собственных экспериментов. Экспериментируем с Hyper-Threading

Одновременное выполнение рендеринга в 3ds max и архивирования в WinAce

Вначале на фоне заведомо более длительного процесса архивирования была отрендерена стандартная тестовая сцена в 3ds max. Затем на фоне рендеринга специально растянутой сцены было выполнено стандартное тестовое архивирование файла в WinAce. Результат сравнивался со временем окончания последовательного выполнения тех же самых стандартных тестов. К полученным цифрам применялись два корректирующих коэффициента: для выравнивания времени исполнения заданий (мы полагаем, что эффект ускорения от параллельного выполнения двух приложений может быть корректно подсчитан только при условии одинаковой продолжительности выполняемых заданий) и для «снятия» эффекта от неравномерности выделяемых процессорных ресурсов для foreground-/background-приложений. В итоге мы «насчитали» положительный эффект ускорения на 17% от использования технологии Hyper-Threading.

Итак, впечатляющие результаты SYSmark получили подтверждение в тесте с соседством двух реальных программ. Конечно же, ускорение не двукратное, да и тесты в пару мы выбирали сами, исходя из наиболее благоприятной, по нашему мнению, ситуации для задействования Hyper-Threading. Но давайте задумаемся над этими результатами вот в каком разрезе: процессор, производительность которого мы сейчас исследуем — в общем-то, за исключением поддержки Hyper-Threading — просто давно привычный Pentium 4. Фактически, столбик «без Hyper-Threading» — это то, что мы могли бы видеть если бы эту технологию не стали переводить в десктопы . Несколько другое чувство сразу же возникает, правда? Давайте все-таки не будем жаловаться (по отечественной традиции) на то, что «все не так хорошо, как могло бы быть», а просто подумаем о том, что нам вместе с новым процессором дали еще один способ ускорить выполнение некоторых операций.

Фоновое архивирование в WinAce + проигрывание фильма
Рендеринг в 3ds max + фоновое проигрывание музыки

Методика выполнения теста совершенно тривиальна: в пару к просмотру фильма, сжатого предварительно в формат MPEG4 при помощи кодека DivX, фоном запускалось архивирование в WinAce (разумеется, в случае пропуска кадров и подтормаживания при просмотре, данный тест не имел бы практического смысла, но нареканий на качество просмотра не было). Аналогично, во время рендеринга обычной тестовой сцены в 3ds max фоном проигрывалась (через WinAmp) музыка из файла формата MP3 (и отслеживались не замеченные ни разу в итоге «заикания» звука). Обратите внимание на естественное распределение ролей «главное-фоновое» в каждой паре приложений. В качестве результата, как обычно, бралось время архивации и полного рендеринга сцены соответственно. Эффект от Hyper-Threading в цифрах: +13% и +8%.

Достаточно реальная ситуация, именно такие мы и старались воспроизвести. Вообще (и об этом будет сказано далее) Hyper-Threading не настолько очевидна, как кажется. Простой подход «в лоб» («у нас в ОС видны два процессора — давайте относиться к ним как к двум процессорам») не дает ощутимого эффекта, и возникает даже некоторое чувство обманутости. Однако, возвращаясь к вышесказанному, попробуем оценивать результаты с несколько других позиций: задачи, которые в обычной ситуации исполняются за одно время, в случае задействования Hyper-Threading, выполняются за меньшее время . Кто попробует возразить, что «нечто» хуже, чем «ничто»? В этом-то вся и суть — отнюдь не панацею нам предлагают, а «всего лишь» средство ускорить уже имеющееся процессорное ядро, кардинальных изменений не претерпевшее. Получается? Да. Ну и какие, по большому счету, могут быть еще вопросы? Конечно, до обещанных в пресс-релизе 30% в большинстве случаев оказывается далеко, однако не стоит делать вид, что в жизни случается, сопоставив пресс-релиз компании X с пресс-релизом компании Y, убедиться, что в первом обещаний меньше и они более «сбыточные». :)

Тестирование в CPU RightMark 2002B

Новая версия CPU RM поддерживает многопоточность (соответственно, и Hyper-Threading), и, естественно, мы не могли не воспользоваться возможностью протестировать новый процессор с помощью этого бенчмарка. Оговоримся, что пока это только первый «выход» CPU RM в тестах многопроцессорных систем, поэтому можно сказать что исследование было «обоюдосторонним» — мы тестировали Hyper-Threading как частный случай SMP на системе с Pentium 4 3,06 ГГц, а эта система, в свою очередь, тестировала наш бенчмарк:) на предмет валидности результатов, и, соответственно, правильной реализации в нем поддержки мультипоточности. Без преувеличения скажем, что результатами остались довольны обе стороны:). Несмотря на то, что пока CPU RM все еще «не полностью многопроцессорный» (несколько потоков создаются только в блоке рендеринга, Math Solving блок остается однопоточным), полученные нами результаты явственно свидетельсвуют о том, что поддержка SMP и Hyper-Threading присутствует, и польза от их наличия видна невооруженным глазом. Кстати, реализация многопоточности в блоке «решателя» в общем-то задача намного менее тривиальная, чем в блоке рендеринга, поэтому если у кого-то из читателей будут некие идеи по этому поводу — мы ждем ваших комментариев, идей, и предложений. Напоминаем, что проект CPU RightMark — это бенчмарк с открытыми исходными текстами, так что интересующиеся программированием могут не только воспользоваться им, но и вносить предложения по поводу усовершенствования кода.

Перед тем как перейти к диаграммам, остановимся поподробнее на методике. По подписям столбцов, легко заметить, что тестировалась производительность системы в целых двенадцати (!) вариантах. Однако ничего страшного в этом нет, и разобраться достаточно просто. Итак, изменяемыми были следующие факторы:

  1. Тесты проводились со включенной Hyper-Threading и с отключенной.
  2. Использовались установки CPU RM для количества создаваемых потоков: один, два, и четыре.
  3. Использовались установки CPU RM для используемого типа инструкций в расчетном модуле: SSE2 и «классические» x87 FPU.

Объясним последнее. Казалось бы, отказываться от использования SSE2 на Pentium 4 — полный, извините, бред (о чем мы уже неоднократно писали раньше). Однако в данном случае чисто теоретически это было неплохим шансом проверить функционирование и результативность технологии Hyper-Threading. Дело в том, что инструкции FPU использовались только в расчетном модуле , в модуле же рендеринга по-прежнему оставалась включенной поддержка SSE. Таким образом, те, кто внимательно читал теоретическую часть, наверняка уже поняли «где собака зарыта» — мы принудительно заставили разные части бенчмарка использовать разные вычислительные блоки CPU ! По идее, в случае принудительного отказа от SSE2, Math Solving блок CPU RM должен был оставлять «нетронутым» блоки исполнения SSE/SSE2 инструкций, что давало возможность на полную катушку воспользоваться ими блоку рендеринга того же CPU RM. Вот теперь самое время перейти к результатам, и посмотреть насколько правильными оказались наши предположения. Также заметим, что с целью увеличения валидности и стабильности результатов, была изменена еще одна установка: количество фреймов (по умолчанию — 300) было увеличено до 2000.

Тут, собственно, комментировать практически нечего. Как мы уже говорили выше, блок «решателя» (Math Solving) остался нетронутым, поэтому на его производительность Hyper-Threading не оказывает никакого влияния. Однако в то же время отрадно… что не вредит! Ведь мы уже знаем, что теоретически возникновение ситуаций когда «виртуальная многопроцессорность» может мешать работе программ — возможно. Однако один факт советуем крепко запомнить: посмотрите, как сильно влияет на производительность блока «решателя» отказ от использования SSE2! Мы еще вернемся к этой теме чуть позже, и в весьма неожиданном ключе…

И вот — долгожданный триумф. Легко заметить, что как только количество потоков в блоке рендеринга становится больше одного (в последнем случае использовать возможности Hyper-Threading, мягко говоря, трудновато:) — сразу же это обеспечивает данной конфигурации одно из первых мест. Также заметно, что именно два потока являются оптимальными для систем с Hyper-Threading. Правда, быть может, кто-то вспомнит скриншот Task Manager, которым мы «стращали» вас выше, поэтому сделаем оговорку — два активно работающих потока. В общем-то, это очевидно и вполне логично — раз у нас два виртуальных CPU, то наиболее правильно создать ситуацию, когда и потоков тоже будет два. Четыре — уже «перебор», потому что за каждый из виртуальных CPU начинают «драться» по несколько потоков. Однако даже в этом случае системе со включенной Hyper-Threading удалось обогнать «однопроцессорного» конкурента.

Об удачах всегда принято говорить подробно и со вкусом, и естественно, еще подробнее и вкуснее о них говорить когда они — твои собственные. Констатируем, что «эксперимент с переходом на инструкции FPU» также безусловно удался. Казалось бы, отказ от SSE2 должен был сильнейшим образом ударить по производительности (быстренько вспоминаем разгромные результаты Math Solving Speed с применением инструкций FPU на первой диаграмме этого раздела). Однако что мы видим! — во второй строчке, на самом верху, среди чемпионов — именно такая конфигурация! Причины опять-таки понятны, и это очень радует, потому что их понятность позволяет сделать вывод о предсказуемости поведения систем с поддержкой технологии Hyper-Threading. «Минусовый» результат блока Math Solving на системе с включенной Hyper-Threading «компенсировал» своим вкладом в общую производительность блок рендеринга, которому полностью отдали на откуп исполняющие блоки SSE/SSE2. Причем компенсировал настолько хорошо, что по результатам такая система оказалась в первых рядах. Остается пожалуй только еще раз повторить то, о чем неоднократно шла речь выше: в полную силу возможности Hyper-Threading проявляются в тех ситуациях, когда активно работающие программы (или потоки) используют разные исполняющие блоки CPU. В данной ситуации эта особенность проявилась особенно сильно, поскольку мы имели дело с хорошо, тщательно оптимизированным кодом CPU RM. Однако главный вывод состоит в том, что в принципе Hyper-Threading работает — значит, будет работать и в других программах. Естественно, тем лучше, чем больше их разработчики будут уделять времени оптимизации кода.

Выводы

…В очередной раз, к радости всего прогрессивного человечества, Intel выпустила новый Pentium 4, производительность которого еще выше чем у предыдущего Pentium 4, но это еще не предел, и скоро мы увидим еще более быстрый Pentium 4… М-да… Не то что бы это неправда — действительно, так и есть. Однако мы уже договорились, что не будем рассматривать в данной статье производительность вышеуказанного Pentium 4 3,06 ГГц в связке с другими процессорами по той самой причине, что… см. выше по тексту. Нас, видите ли, интересует Hyper-Threading. Вот такие мы привередливые — не важны нам предсказуемые результаты повышения еще на 200 МГц частоты работы давно знакомого и предсказуемого процессорного ядра, подавай нам «свежатинку», ранее не рассматриваемую. И как уже наверное догадались прозорливые читатели, выводы наши будут посвящены опять-таки этой самой навязшей в зубах технологии и всему что с ней связано. Почему? Наверное, потому, что все остальное вы отлично знаете сами..

И раз уж речь идет о Hyper-Threading, давайте для начала определим для себя главное: как к ней относиться? Что она из себя представляет? Не претендуя на истину в последней инстанции, сформулируем общее мнение, которое возникло у нас на основании результатов тестов: Hyper-Threading — это не SMP . «Ага!!!» — закричат поклонники альтернативы. «Мы так и знали!!!» — завопят они что есть мочи. «Hyper-Threading — это нечестный SMP!!!» — крики сии еще долго будут разноситься по бескрайним просторам Рунета… Мы же, как умудренные саксаулами аксакалы (или наоборот? :), возразим: «Ребята, а кто, собственно, обещал?». Кто произнес эту крамольную аббревиатуру? SMP, напомним — это Symmetric Multi-Processing, сиречь многопроцессорная архитектура. А у нас, пардон, процессор всего один . Да, он снабжен некой, простонародно выражаясь, «фичей», которая позволяет делать вид, что вроде бы оных процессоров два. Однако делает ли кто-то секрет из того, что на самом деле это не так? Вроде бы этого мы не заметили… Стало быть, мы имеем дело именно с «фичей», и не более того. И относиться к ней стоит именно таким образом, и никак иначе. Поэтому давайте не будем ниспровергать никем не возводимых идолов, и спокойно подумаем, имеет ли данная фича какой-то смысл.

Результаты тестов свидетельствуют, что в некоторых случаях — имеет. Фактически, то, о чем мы чисто теоретически рассуждали в первой части статьи, нашло свое практическое подтверждение — технология Hyper-Threading позволяет увеличить коэффициент полезного действия процессора в определенных ситуациях. В частности — в ситуациях, когда одновременно исполняются разнородные по характеру приложения. Зададим сами себе вопрос: «Это — плюс?». Наш ответ: «Да, это — плюс». Является ли он всеобъемлющим и глобальным? Похоже, что нет — ибо эффект от Hyper-Threading наблюдается исключительно в некоторых случаях. Однако так ли это важно если мы рассматриваем технологию в целом? Понятно, что появление CPU, способного в два раза быстрее делать все то, что делалось ранее — это громадный прорыв. Однако как говорили еще древние китайцы «упаси нас Господи жить в эпоху перемен». Intel не стал инициировать начало такой эпохи, просто добавив своему процессору возможность кое-что делать быстрее. Классический западный принцип, не очень хорошо воспринимаемый в нашем «шаролюбивом» обществе: «Вы можете получить нечто получше, если заплатите несколько больше».

Возвращаясь к практике: Hyper-Threading нельзя назвать «бумажной» технологией, ибо при определенных комбинациях она дает вполне ощутимый эффект. Добавим — даже намного больший эффект, чем иногда наблюдается при сравнении, к примеру, двух платформ с одним процессором на разных чипсетах. Однако следует четко понимать, что эффект этот наблюдается не всегда, и существенно зависит от… наверное, самым приемлемым термином будет «стиль». От стиля работы пользователя с компьютером. Причем именно здесь проявляется то, о чем мы сказали в самом начале: Hyper-Threading — это не SMP . «Классический SMP-стиль», где пользователь рассчитывает на реакцию столь же классической «честной» многопроцессорной системы, здесь не даст желаемого результата.

«Стиль Hyper-Threading» — это сочетание процессов, не побоимся этого слова, «развлекательных» или «служебных» с процессами «рабочими». Вы не получите существенного ускорения от CPU с поддержкой этой технологии в большинстве классических многопроцессорных задач, или если по привычке запускаете только одно приложение в один момент времени. Но вы скорее всего получите уменьшение времени исполнения многих фоновых задач , исполняемых в качестве «довеска» к обычной работе. Фактически, Intel просто еще раз напомнила всем нам, что операционные системы, в которых мы работаем — многозадачные . И предложила способ ускорения — но не столько одного какого-то процесса самого по себе, сколько комплекса выполняемых одновременно приложений . Это интересный подход, и, как нам кажется, достаточно востребованный. Теперь он обрел свое имя. Не мудрствуя лукаво, хочется сказать: просто хорошо, что эта оригинальная идея пришла кому-то в голову. Тем более неплохо, что он смог ее воплотить в конкретный продукт. В остальном, как и всегда — время покажет.

В соперничестве двух микропроцессорных гигантов, Intel и AMD, лидерство полностью перешло к первому. На анонс Pentium 4 с частотой 2.8 ГГц AMD еще смогла ответить хоть как-то, объявив о выпуске практически недоступного на рынке Athlon XP 2800+. Но в дальнейшем до конца этого года AMD никаких шагов на рынке настольных CPU предпринимать уже не будет. Intel же наоборот на конец года заготовил выпуск наиболее интересной своей новинки, процессора Pentium 4 3.06 ГГц. Этим, во-первых, он окончательно оставил позади линейку Athlon XP по производительности, а во-вторых, внедрил в процессоры для настольных компьютеров еще одну не применявшуюся ранее в CPU этого класса технологию Simultaneous Multi-Threading. Таким образом, перед началом сезона рождественских продаж в негласном соревновании AMD и Intel поставлена точка. В результате, в понимании большинства пользователей лидером этого года становится Intel, а AMD имеет возможность переломить эту тенденцию лишь в следующем году, когда в ее распоряжении будут новое процессорное ядро для Barton с 512-килобайтным кешем второго уровня и процессоры восьмого поколения семейства Hammer.
Следует отметить, что преодоление Intel трехгигагерцового рубежа стало более знаменательным событием, чем планировалось ранее. И дело тут в поддержке Simultaneous Multi-Threading, окрещенной Intel «поддержкой технологии Hyper-Threading» (в дальнейшем мы будем использовать интеловский термин). Технология Hyper-Threading уже используется Intel в линейке серверных процессоров компании - Xeon, а в настольные процессоры, как предполагалось ранее, она должна была прийти одновременно с выходом CPU c 0.09-микронным ядром Prescott. Однако, острая конкурентная борьба с AMD, а также маячащий на горизонте выход процессоров восьмого поколения Hammer от AMD, вынудил Intel скорректировать свои планы. В результате, технология Hyper-Threading появилась в процессорах Pentium 4 уже сейчас, почти на год ранее запланированного срока.
Технология Hyper-Threading представляет собой сравнительно недорогой с точки зрения увеличения площади процессорного ядра способ увеличения производительности процессоров, поэтому в этой статье принципам функционирования этой технологии будет уделено значительное внимание. Также, мы остановимся и на вопросах быстродействия Pentium 4 3.06 ГГц, а кроме того посмотрим, какой выигрыш в производительности дает "в чистом виде" Hyper-Threading в каждом конкретном случае.
Перед тем, как перейти непосредственно к описанию технологии, хочется заострить внимание на одном важном моменте. Как известно, существует масса способов усовершенствования процессорной архитектуры для увеличения производительности. Сюда относится конвейеризация, суперскаляризация, исполнение с изменением порядка следования команд, увеличение объема кеш-памяти и прочее. Однако использование всех этих общепринятых методов требует достаточно сильного увеличения размера процессорного ядра, а как следствие, стоимости и тепловыделения процессора. Технология же Hyper-Threading – это идеологически несколько иной подход, не столь дорогой с точки зрения «дополнительных транзисторов», однако для своего использования требующий поддержки со стороны операционной системы и программного обеспечения, другими словами, дополнительных усилий со стороны программистов.

Hyper-Threading: приобретая один процессор, второй получаешь бесплатно

Как известно, в общем случае производительность процессора складывается из двух составляющих - из тактовой частоты процессора и числа инструкций, исполняемых им за такт. Архитектура Pentium 4 изначально была предназначена для достижения высоких тактовых частот, так в этом процессоре используется чрезвычайно длинный по современным меркам 20-ступенчатый конвейер. Благодаря этому частоты Pentium 4 растут как на дрожжах, однако производительность этих CPU остается сравнимой со скоростью Athlon XP с гораздо меньшими тактовыми частотами. Объясняется это тем, что, во-первых, Athlon XP имеет большее число исполнительных модулей, работающих параллельно, а во-вторых, гораздо быстрее восстанавливает свой 10-ступенчатый конвейер после неправильных предсказаний переходов. Таким образом, Athlon XP исполняет большее число инструкций за такт, однако и он тоже не идеален. Впрочем, в дальнейшем рассказ будет идти в первую очередь касательно Pentium 4, поскольку именно этот процессор является героем сегодняшней статьи. Тем не менее, необходимо учитывать, что все сказанное равным образом (с необходимыми оговорками) можно перенести и на архитектуру Athlon XP.
Основная проблема увеличения производительности современных процессоров заключается в том, что число исполняемых за такт инструкций растет не пропорционально числу исполняемых модулей в процессоре, а гораздо медленнее. В частности, хотя Pentium 4 и содержит четыре параллельных блока для операций с целыми числами, два блока для работы с вещественными числами и два блока для работы с памятью, одновременно все эти ресурсы практически никогда не используются. В подавляющем большинстве случаев существенная часть процессора простаивает либо в ожидании данных, либо из-за ее ненужности при исполнении очередной операции. Если с простоями при отсутствии данных еще можно как-то бороться, наращивая объем кеш-памяти, то загрузить весь процессор целиком при существующей концепции последовательных вычислений никак не получится. Например, если уж программа выполняет сложение целых чисел, блоки операций с вещественными числами задействованы не будут ни при каком раскладе. В итоге, получаем достаточно печальную картину: большинство существующих x86 программ использует одновременно не более 35% исполнительных устройств процессора Pentium 4.
Именно этому факту и обязана своим появлением технология Hyper-Threading. Основная идея этой технологии была предложена еще в 1993 году почетным сотрудником корпорации Intel Гленом Хинтоном, заметившим еще почти десять лет тому назад, что ресурсы процессора используются не в полной мере. В 1996 году инженеры Intel приступили к интеграции этой технологии в разрабатываемую перспективную архитектуру процессоров следующего поколения - Willamette/Foster. 28 августа 2001 года новая технология Hyper-Threading, наконец, была представлена, а 6 февраля 2002 года были официально объявлены первые процессоры семейства Intel Xeon с Hyper-Threading. Сегодня же, 14 ноября 2002 года, Hyper-Threading пришел и в Pentium 4.
C 1993 года в компьютерном мире изменилось многое. В частности, рынок полностью завоевали многозадачные операционные системы, идеология которых построена на одновременном существовании нескольких вычислительных потоков (threads), относящихся к одному или разным активным приложениям, либо к самой операционной системе. Если на многопроцессорных системах эти потоки могут выполняться одновременно (по одному на процессор), то в однопроцессорных системах CPU вынуждены непрерывно переключаться между потоками, квантуя процессорное время между исполнением их различных частей.
Таким образом, если разрешить процессору одновременное выполнение более чем одного потока, его мощности можно загрузить более эффективно. Именно в этом и состоит основная идея Hyper-Threading. Благодаря технологии Hyper-Threading один физический процессор воспринимается операционной системой и приложениями как два логических процессора. Соответственно, операционная система и приложения предполагают, что CPU с технологией Hyper-Threading может одновременно выполнять два потока и загружает такой процессор работой гораздо сильнее.






Сам же процессор при этом подвергнут лишь незначительным изменениям и использует для выполнения второго потока свои простаивающие ресурсы. То есть, Hyper-Threading – суть технология для увеличения коэффициента полезного действия процессора, действенная, впрочем, только в многозадачных и многопоточных средах.



Коротко остановимся на изменениях, внесенных в процессоры с Hyper-Threading. Поскольку физический процессор с технологией Hyper-Threading представляет собой два логических CPU, в таких процессорах продублированы некоторые блоки. Причем, дубляжу подверглись лишь отдельные управляющие элементы, основные же исполнительные ресурсы остались теми же – теперь они попросту загружаются более плотно и эффективно. В итоге, в процессорах с Hyper-Threading дублированы регистры, включая регистры общего назначения и управляющие регистры, усовершенствованный программируемый контроллер прерываний (Advanced Programmable Interrupt Controller - APIC) и некоторые служебные регистры, например, Next Instruction Pointer – указатели на очередную инструкцию для исполнения. Остальные же ресурсы, включая кеши, исполнительные блоки, логику предсказания переходов, контроллер шины и т.п. логические процессоры разделяют друг с другом. Именно поэтому реализация технологии Hyper-Threading обошлась разработчикам достаточно дешево – площадь процессорного ядра увеличилась всего лишь примерно на 5%.


Hyper-Threading в действии

Рассмотрим работу процессора с технологией Hyper-Threading несколько подробнее (этот раздел предполагает знакомство читателя с архитектурой Pentium 4).
Начальная часть конвейера Pentium 4 отвечает за подачу микроопераций (uops – декодированных x86 инструкций) на исполнительную часть конвейера. Именно тут в основном и находятся дублирующиеся блоки для каждого из двух логических процессоров. На рисунке ниже приведена начальная часть конвейера в двух случаях – при наличии очередной инструкции в Trace Cache (a) и при ее отсутствии там (b).


Trace Cache содержит уже декодированные инструкции, называемые uops. Большинство команд при реальной работе процессора уже было декодировано ранее и находится в trace cache. Trace Cache не дублируется для каждого из логических процессоров, а разделяется между ними. Тем не менее, у каждого логического CPU существует свой собственный Instruction Pointer, ссылающийся на следующую инструкцию для выполнения для обоих логических CPU. Инструкции из Trace Cache выбираются по очереди и становятся в так называемую очередь выборки (uop queue), также индивидуальную для обоих логических процессоров.
При отсутствии очередной инструкции в Trace Cache, являющемся в Pentium 4 по своей иерархии кешем первого уровня для инструкций, процессор должен декодировать очередную x86 инструкцию из L2 кеша. Выборка инструкции осуществляется при участии Instruction Translation Lookaside Buffer (ITLB), переводящем адрес, хранящийся в Instruction Pointer, в физический адрес. ITLB является также индивидуальным для каждого процессора, а вот L2-кеш разделяется между логическими CPU. Декодер x86 инструкций в процессорах с технологией Hyper-Threading общий, поскольку его загрузка невелика – большинство декодированных инструкций уже хранится в Trace Cache. Если же оба логических процессора обращаются к декодеру одновременно, он чередует свою работу между логическими процессорами, но только после выполнения полного цикла декодирования для одного из логических CPU. Декодированные инструкции записываются в Trace Cache.
К исполнительному устройству декодированные последовательности инструкций приходят в двух очередях – для каждого из логических CPU. А вот, что происходит с ними дальше:



В первую очередь инструкции из двух входящих очередей проходят через блоки Allocator и Register Rename. Здесь происходит выделение необходимых ресурсов для исполнения команд. Машинные регистры и буфера при этом делятся поровну между логическими процессорами, однако при отказе одного из логических процессоров от использования тех или иных ресурсов они могут быть всецело выделены только одному логическому процессору.
После прохождения этой стадии команды попадают в две отсортированные очереди – для операций с памятью и для остальных операций, которые также разделены пополам – для каждого из логических процессоров.
Затем, рассортированные микрооперации приходят на стадию определения очередности выполнения (Scheduling), где выполняется сортировка порядка следования инструкций при поступлении на исполнительные устройства. Операции на блоки-планировщики приходят по мере поступления. При необходимости, планировщики переключаются с очередей одного логического процессора на очереди другого. На этом этапе, кстати, происходит окончательное смешение микроопераций, приходящих с логических процессоров, для возможности их одновременного исполнения. Поскольку машинные регистры физического процессора к этому моменту оказываются жестко привязанными к регистрам обоих логических процессоров, исполнение инструкций действительно становится возможным без разбора принадлежности команд.
После этапа выполнения, на котором процессор не различает логические процессоры, следует блок восстановления (Retirement), где восстанавливается изначальный порядок инструкций и их принадлежность к каждому из логических процессоров. При этом Re-Order Buffer делится пополам между логическими процессорами.
Заметим также, что хотя кеши первого и второго уровня являются разделяемыми между логическими процессорами, Data Translation Lookaside Buffer (DTLB), сопоставляющий адреса данных и их физические адреса, хоть и делится между процессорами, но записи в нем дополнены идентификатором процессора, которому принадлежит каждая из строк буфера.
Таким образом, технология Hyper-Threading действительно позволяет загрузить исполнительные устройства процессора значительно сильнее за счет одновременного выполнения двух потоков. Однако, следует понимать, что эффект от такого приема не всегда может быть положительным. Во-первых, если выполняемые потоки похожи по типу выполняемых инструкций, выигрыша может не быть вовсе, поскольку один из потоков будет полностью занимать все ресурсы, необходимые и другому потоку. Простои же остальных исполнительных устройств процессора от этого не исчезнут. Во-вторых, возможна и куда более катастрофичная ситуация. Один из потоков может попросту занять ресурсы, необходимые другому потоку, и ожидать при этом, например, поступления данных. Операционная система же при этом, пребывая в уверенности, что имеется два CPU, не будет предпринимать никаких действий, на самом же деле функционирование процессора будет попросту парализовано. Именно поэтому Intel призывает разработчиков программного обеспечения оптимизировать свои программы для Hyper-Threading. Один из основных принципов такой оптимизации – применение новой инструкции PAUSE, не блокирующей работу физического процессора, вместо пустых циклов ожидания.

Требования к системе

Естественно, поддержка технологии Hyper-Threading необходима не только со стороны программного обеспечения и операционной системы. Требуется она также и со стороны аппаратного обеспечения, поскольку процессор с технологией Hyper-Threading все же отличается от обычных CPU. Активизация обоих логических процессоров требует, как минимум, поддержку со стороны материнской платы и BIOS двух APIC и поддержки специфических алгоритмов перевода логических и физического процессоров в режимы энергосбережения.
В итоге, для того, чтобы в системе работал процессор с поддержкой технологии Hyper-Threading, помимо самого процессора требуется и материнская плата, основанная на наборе логики, поддерживающем эту технологию. Что касается современных чипсетов для Socket 478 материнских плат, то можно утверждать следующее. Все интеловские наборы микросхем, имеющие поддержку 533-мегагерцовой системной шины, Hyper-Threading поддерживают. Впрочем, есть и исключение. Набор микросхем i845G поддерживает Hyper-Threading только начиная с ревизии B. Старые же чипсеты i845G ревизии A технологию Hyper-Threading не поддерживают. С чипсетами других производителей ситуация менее определенная. По утверждениям VIA, их чипсеты Hyper-Threading поддерживают, SiS же, как ожидается, начнет выпуск обновленных ревизий своих наборов логики с поддержкой технологии Hyper-Threading в ближайшем будущем. Важно понимать, что Hyper-Threading является полностью открытой технологией, и производители наборов логики не должны платить никаких лицензионных отчислений Intel за ее реализацию в своих продуктах.
Помимо поддержки в чипсете, технология Hyper-Threading должна опознаваться и инициализироваться BIOS материнской платы. Только в этом случае оба логических процессора могут быть успешно инициализированы и распознаны операционной системой. В противном случае – если либо в чипсете, либо в BIOS технология Hyper-Threading не поддерживается – процессор с технологией Hyper-Threading будет опознан операционной системой как один обычный процессор.
В случае, если поддержка со стороны аппаратной платформы реализована верно, операционная система будет пребывать в уверенности, что в системе имеется два процессора:




Также, очевидно, что для полноценного использования ресурсов процессоров с технологией Hyper-Threading необходима мультизадачная операционная система с поддержкой двухпроцессорных конфигураций. Однако для того, чтобы производительность системы при этом действительно увеличивалась, требуется специальная оптимизация операционной системы под технологию Hyper-Threading, заключающаяся, в частности, в том, что системные потоки не должны использовать пустых циклов, о чем нами говорилось ранее.
В настоящее время для технологии Hyper-Threading оптимизированы две операционные системы – Linux 2.4.x и Microsoft Windows XP (включая Professional и Home Edition). Распространенные Windows 98 и Windows Me Hyper-Threading не поддерживают в силу отсутствия в них поддержки мультипроцессорности. Что же касается Windows 2000, то хотя эта система и поддерживает конфигурации с несколькими CPU и опознает процессор с технологией Hyper-Threading как два процессора, производительность этих процессоров будет в ряде случаев ниже, чем процессоров с аналогичными характеристиками, но без Hyper-Threading. Дело как раз заключается в том, что системные потоки Windows 2000 часто используют пустые циклы, являющиеся «грозой» Hyper-Threading.

Подробнее о Intel Pentium 4 3.06 ГГц

Итак, сегодня, 14 ноября 2002 года, компания Intel официально анонсировала свой очередной процессор в семействе Pentium 4, Intel Pentium 4 3.06 ГГц. Этот процессор является первым CPU в семействе, поддерживающем технологию Hyper-Threading, и имеет следующие характеристики:

Частота ядра – 3066 МГц, частота шины Quad Pumped Bus - 533 МГц, коэффициент умножения – 23x.
Размер кеша первого уровня: 8 Кбайт – для данных, 12 Кбайт – для инструкций. Размер кеша второго уровня – 512 Кбайт.
Процессорное ядро Northwood. Технология производства – 0.13 мкм с использованием медных соединений.
Номинальное напряжение питания ядра – 1.525 В.
Площадь ядра – 131 кв. мм, число транзисторов – 55 миллионов.
Физический интерфейс – Socket 478.
Поддержка наборов инструкций MMX, SSE, SSE2.
Поддержка технологии Hyper-Threading.

Как можно заметить, согласно приведенным данным процессорное ядро Pentium 4 3.06 ГГц имеет такую же площадь и количество транзисторов, как и у предшествующего Pentium 4 2.8 ГГц. Странно, не правда ли? Ведь, как говорилось выше, реализация технологии Hyper-Threading потребовала увеличения площади ядра примерно на 5%. Однако, объясняется этот факт достаточно просто. Оказывается, технология Hyper-Threading была встроена в интеловские процессоры семейства Pentium 4 гораздо раньше, а теперь она всего лишь активизирована. Как это не выглядит странным, но все процессоры, основанные на ядре Northwood, имели необходимые элементы для реализации Hyper-Threading. Более того, дублирующиеся блоки, требуемые для Hyper-Threading, присутствовали и в Pentium 4 на 0.18-микронном ядре Willamette с самых первых моделей. Однако до сегодняшнего дня на этапе сборки полупроводниковых кристаллов Intel аппаратно отключал поддержку Hyper-Threading в своих CPU. Поэтому, владельцы более старых Pentium 4, хотя их процессоры и имеют те самые дополнительные 5% транзисторов, включить Hyper-Threading в своих CPU не смогут.
Совершенно логичным после вышесказанного выглядит и то, что процессор Pentium 4 3.06 ГГц имеет тот же самый степпинг C1 процессорного ядра, что и его предшественник, Pentium 4 2.8 ГГц, и выпускается с использованием подложек диаметром 300 мм.
Следует заметить, что хотя полупроводниковые кристаллы, используемые в Pentium 4 3.06 ГГц и в процессорах с младшими тактовыми частотами по сути не отличаются друг от друга, Intel не собирается добавлять технологию Hyper-Threading в процессоры с меньшими частотами. Таким образом, Hyper-Threading останется прерогативой процессоров Pentium 4 с частотами свыше 3 ГГц.
Вторая модель CPU для рынка настольных компьютеров, в которой будет содержаться поддержка технологии Hyper-Threading, будет выпущена Intel во втором квартале 2003 года. Ею станет Pentium 4 с частотой 3.2 ГГц и также основанный на 0.13-микронном процессорном ядре Northwood. Далее, Hyper-Threading будет содержаться во всех CPU семейства Pentium 4, основанных на 90-нанометровом ядре Prescott, которое должно будет появиться во второй половине следующего года.
Теперь о больном месте процессоров семейства Pentium 4 – высоком тепловыделении. К сожалению, внедрение технологии Hyper-Threading влечет за собой достаточно серьезный рост типичного тепловыделения процессоров. Естественно, поскольку исполняющие блоки CPU теперь используются более активно, процессор с поддержкой Hyper-Threading выделяет больше тепла, чем аналогичный CPU без этой технологии. Вследствие этого, Intel был вынужден изменить требования к термальным и электрическим характеристикам систем, в которых предполагается использование процессоров Pentium 4 с поддержкой технологии Hyper-Threading.
Первоначальная версия требований Intel к дизайну материнских плат предполагала, что процессор будет рассеивать не более 77 Вт. Теперь же Intel пересмотрел свои требования и выпустил их новую версию, названную FMB2. Согласно ей, процессоры Pentium 4 теперь могут выделять до 82 Вт. В соответствии с этим производители материнских плат должны проверить и при необходимости изменить дизайн своих продуктов. Кроме того, возрос и максимальный ток, который может потреблять CPU. Теперь он составляет 70 А, в то время как согласно первоначальным требованиям он не превышал 60 А. В итоге, современные материнские платы, совместимые с процессорами Pentium 4 с частотами свыше 3 ГГц должны соответствовать обновленным требованиям к питанию и тепловому режиму.
Кроме того, естественно, Pentium 4 3.06 ГГц требует и лучшего охлаждения. В частности, теперь Intel рекомендует использовать новые и более производительные кулеры с медными вставками. Также, будет изменен и дизайн кулера, который будет поставлять сам Intel вместе с Pentium 4 3.06 в коробочных версиях. Новая модель кулера имеет медное основание, большое количество ребер и более производительный пятилопастной вентилятор с изменяемой скоростью вращения:






Однако, и это еще не все. Изменил Intel и требования к тепловому режиму корпусов, в которых предполагается использовать процессоры Pentium 4 с частотами более 3 ГГц. Одним из основных изменений следует считать то, что теперь температура воздуха внутри корпуса, который используется для охлаждения процессора, не должна превышать 42 градусов, в то время как ранее допускались температуры не более 45 градусов. Да и вообще, теперь Intel будет активно ратовать за использование внутри корпусов воздуховодов, позволяющих забирать воздух для обдува кулера процессора непосредственно извне системы.

Как мы тестировали

Целью данного тестирования являлось выяснение производительности нового Pentium 4 3.06 ГГц с технологией Hyper-Threading. Производительность этого CPU мы сравнивали со скоростью этого же процессора с отключенной технологией Hyper-Threading (технология Hyper-Threading может быть разрешена или запрещена в BIOS Setup материнских плат), а также со скоростью предшественника – процессора Pentium 4 2.8 ГГц. Учитывая то, что в системах на базе Pentium 4 в данный момент возможно применение двух принципиально разных типов памяти: RDRAM и DDR SDRAM, в тестах было использовано две платформы, использующие различные типы памяти и основанные на чипсетах i850E и i845PE. Эти чипсеты поддерживают технологию Hyper-Threading и позволяют использование наиболее производительных на сегодняшний день модификаций памяти – DDR333 SDRAM и PC1066 RDRAM.
Быстродействие систем, использующих процессоры Pentium 4, сопоставлялось со скоростями конкурирующих продуктов от компании AMD, наиболее скоростных процессоров Athlon XP с процессорным рейтингом 2700+ и 2800+. Системы с Athlon XP были построены на базе самого производительного на данный момент Socket A чипсета NVIDIA nForce2 с двухканальным DDR333 SDRAM интерфейсом.
Итак, состав тестовых систем, принимавших участие в подготовке этого обзора, описывается следующей таблицей:


Pentium 4
i850E
Pentium 4
i845PE
Athlon XP
NVIDIA nForce2
Процессоры Intel Pentium 4 3.06 with Hyper-Threading technology
Intel Pentium 4 3.06, Hyper-Threading technology disabled
Intel Pentium 4 2.8
AMD Athlon XP 2800+
AMD Athlon XP 2700+
Системные платы ASUS P4T533-C ASUS P4PE ASUS A7N8X
Память Samsung PC1066 RDRAM, 512 Мбайт Crucial DDR333 CL2 SDRAM, 512 Мбайт
Видеокарта ATI RADEON 9700 Pro
Жесткий диск Seagate Barracuda ATA IV, 80 Гбайт

Все тесты выполнялись в операционной системе MS Windows XP Professional, а BIOS Setup материнских плат был настроен на максимальное быстродействие.

Производительность в офисных приложениях и приложениях для создания контента

Итак, в первую очередь мы решили посмотреть на скорость работы нового Pentium 4 3.06 ГГц с технологией Htyper-Threading в классических тестах.



Тест SYSmark 2002 моделирует работу обычного пользователя в офисных приложениях и приложениях для создания контента. Как видим, даже в этом случае использование новой технологии Hyper-Threading способно дать определенный эффект: выигрыш от ее применения составляет в данном случае 3-5%. Достигается он как раз за счет того, что процессор с Hyper-Threading позволяет одновременное исполнение двух потоков, а многие из современных приложений разработаны многопоточными. Более того, и в однопоточных приложениях Hyper-Threading способен также дать некоторое ускорение, благодаря тому, что фоновые потоки, принадлежащие сервисам операционной системы, имеют возможность исполняться параллельно основной задаче.



В приложениях для создания цифрового контента эффект от Hyper-Threading проявляется гораздо сильнее в системе с PC1066 RDRAM. Объясняется это, по-видимому, тем, что исполнение двух потоков параллельно накладывает более жесткие требования на пропускную способность памяти, и в платформе, где использована DDR333 SDRAM, подсистема памяти становится узким местом.



Как можно заметить по результатам SYSmark 2002 конкурирующие продукты от AMD, процессоры Athlon XP, оказываются далеко позади Pentium 4. Однако, AMD имеет существенные претензии к разработчикам теста, компании BAPCO, обвиняя их в оптимизации своего теста под Pentium 4. Поэтому, нами также были использованы альтернативные тесты от E-Testing Labs, моделирующие типичную работу пользователя в офисных приложениях и приложениях для создания контента.



Действительно, в Business Winstone 2001 скорость Athlon XP уже не так уж и низка. Однако, новые Pentium 4 с частотой 3.06 ГГц все же обгоняют старший Athlon XP 2800+ как со включенной технологией Hyper-Threading, так и без нее. Впрочем, тут выигрыш от использования этой новомодной технологии от Intel не так уж и велик и находится на уровне менее 1%.



Content Creation Winstone 2002 же и вовсе является первым примером теста, в котором технология Hyper-Threading дает не прирост в производительности, а ее уменьшение. О возможных причинах этого явления нами говорилось выше.

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


При банальном сжатии информации с помощью WinRAR использование Hyper-Threading дает неплохой прирост в скорости, составляющий порядка 3-5%. Однако ни это, ни увеличение тактовой частоты до 3.06 ГГц не дает возможности процессору Pentium 4 обогнать Athlon XP 2800+. Впрочем, это и неудивительно. Скорость сжатия информации во многом связана с пропускной способностью подсистемы памяти, а после выхода Socket A чипсета NVIDIA nForce2 с двумя каналами DDR SDRAM состязаться с Athlon XP-системами по этому параметру стало до поры до времени бесполезно.



Кодирование звука в формат mp3 демонстрирует преимущества Hyper-Threading и NetBurst архитектуры процессоров семейства Pentium 4. Включение Hyper-Threading увеличивает скорость обработки на Pentium 4 на 8%. Впрочем, кодек LAME, использовавшийся нами, поддерживает многопоточность, а посему подобный результат совершенно неудивителен.



Кодирование видео – еще один тип задач, где технология Hyper-Threading приходится явно к месту, и прирост от ее активизации достигает 10%. Объясняется это, в частности тем, что используемое нами приложение вновь использует многопоточность.

Производительность в игровых приложениях



Как видим, скорости процессоров Pentium 4 в 3DMark2001 не различаются при включении и отключении технологии Hyper-Threading (имеющееся различие между результатами – погрешность измерений). Действительно, как и большинство игровых приложений 3DMark2001 не использует многопоточность, в результате чего Hyper-Threading в данном случае оказывается совершенно бесполезной вещью.



Аналогичная ситуация и в Return to Castle Wolfenstein. Впрочем, в этой игре, построенной на движке Quake3, Pentium 4 значительно обгоняет Athlon XP и без технологии Hyper-Threading.



Зато в новейшем Unreal Tournament 2003 ситуация обратная. Athlon XP достаточно сильно превосходит в скорости Pentium 4, несмотря на их гораздо более высокие тактовые частоты. Не спасает интеловские процессоры и технология Hyper-Threading, которая, как показали тесты, в играх является совершенно никчемной.

Производительность при 3D-рендеринге


Прирост производительности от технологии Hyper-Threading при финальном рендеринге в 3ds max 5.0 оказывается чрезвычайно высоким и составляет более 15%. Таким образом, это дает нам ясно понять, что при качественной оптимизации от Hyper-Threading можно ожидать многого.






А вот тестирование в Lightwave 7.5 дает нам понять и обратное. Несмотря на то, что это приложение поддерживает многопоточность, прироста от активизации Hyper-Threading в нем нет практически совсем. По-видимому, при расчете финальных сцен Lightwave формирует похожие по характеру выполняемых инструкций потоки, в результате чего их параллельное выполнение на мощностях одного процессора оказывается невозможным.
Также, отметим и еще один факт. Хотя выполнение финального рендеринга представляет собой чисто вычислительную задачу, где ранее по быстродействию лидировали процессоры Athlon XP, теперь ситуация изменилась. Дело в том, что разработчики постепенно оптимизировали алгоритмы, применяемые в их пакетах под использование набора инструкций SSE2, который в Athlon XP не поддерживается. В результате, Athlon XP утратил свое лидерство в этом классе задач.

Производительность в CAD



Результаты измерения общей производительности в AutoCAD 2002 выявляют два факта: Athlon XP является более быстрым процессором в этом пакете, а технология Hyper-Threading не дает Pentium 4 ничего хорошего. Ознакомимся с результатами подробнее.



При использовании каркасного 3D режима ничего интересного выявить не удается. Pentium 4 3.06 ГГц опережает Athlon XP 2800+ только в случае использования самого быстрого набора логики i850E и активизации технологии Hyper-Threading.



Быстродействие систем в AutoCAD во многом зависит от пропускной системы памяти. Поэтому, гораздо больший прирост производительности у Pentium 4 обеспечивается переходом на использование PC1066 RDRAM, нежели активизацией технологии Hyper-Threading. Про скорость Athlon XP и говорить даже не хочется – все и так понятно из картинки. :)



Хотя AutoCAD сам по себе поддерживает многопоточые вычисления, вычислительная производительность при активизации Hyper-Threading практически не растет. Дело тут, видимо, в том же, что и при финальном рендеринге в Lightwave – приложение оптимизировано под физическую многопроцессорность, но никак не под виртуальную.



Оказывается, Hyper-Threading способен не только увеличивать производительность системы, но и значительно уменьшать ее. Причины «торможения» Pentium 4 с Hyper-Threading обсуждались нами выше, тут же мы видим, каких масштабов оно может достичь. При работе с 2D графикой в AutoCAD скорость от Hyper-Threading падает на 10-12%.

То, что в задачах физического моделирования или криптографии процессоры семейства Athlon XP показывают себя с наилучшей стороны, известно давно. Здесь мы видим еще одно подтверждение этого факта. Hyper-Threading же в данном случае также оказывается к месту, обеспечивая прирост производительности, достигающий 17% в тесте Molecular Dynamics Benchmark, в котором различные потоки выполняют различающиеся по характеру вычисления. В остальных двух случаях потоки похожи по составу выполняемых инструкций, и быстродействие растет не так уж и впечатляюще.

Производительность в профессиональных OpenGL приложениях


















В бенчмарках, входящих в состав пакета SPECviewperf 7.0, процессоры Athlon XP достаточно сильны. Причины уже не раз обсуждались нами: используемые в тестах алгоритмы достаточно стары и не используют SSE2 инструкций. Ну а при выполнении интенсивной вычислительной работы равных Athlon XP все еще нет.
Кроме того, в тестах пакета вновь прослеживается тенденция, что Hyper-Threading «вредит» производительности. Впрочем, ничего другого можно было и не ожидать. Потоки, создаваемые SPECviewperf 7.0, похожи по своему характеру и борются друг с другом за один и тот же ресурс – OpenGL контекст.

Производительность при многозадачности

Технология Hyper-Threading, как мы заметили, приводит к увеличению производительности в некоторых многопоточных приложениях. Однако, очевидно, что наибольший эффект от этой новой технологии должен быть виден в многозадачных средах в ситуации, когда различные приложения используют различные ресурсы процессора. Такое распределение вычислительных нагрузок позволит более эффективно озадачивать исполнительные устройства физического процессора. Поэтому нами было принято решение испытать Pentium 4 3.06 ГГц с технологией Hyper-Threading и в таких условиях.
Для тестирования применялась следующая методика. На системе с испытуемым процессором запускалась одна из пяти задач, достаточно сильно загружающая процессор: WinRAR 3.0, FlasK 0.78.39/DiVX 5.02, 3ds max 5, Lighwave 7.5 или ScienceMark. Параллельно работающему приложению из приведенного списка запускалось демо dm-antalus из игры Unreal Tournament 2003, при помощи которого измерялась производительность. В результате, были получены следующие цифры, характеризующие скорость работы Unreal Tournament 2003 при работе «в параллели» с иными приложениями различного характера:
Pentium 4 3.06 with Hyper-Threading Pentium 4 3.06, Hyper-Threading Disabled Пророст от использования Hyper-Threading
Idle 59.5 59.3 0.30%
Data Compression, WinRAR 3.0 35.41 28.36 24.90%
MPEG-4 Encoding, FlasK 0.78.39/DiVX 5.02 33.88 27.01 25.40%
3ds max 5, Final Rendering 29.59 29.73 -0.50%
Lighwave 7.5, Final Rendering 43.3 29.71 45.70%
ScienceMark, Primordia 39.75 29.19 36.20%

Как видим, при работе двух различных приложений одновременно производительность системы от использования технологии Hyper-Threading может возрастать достаточно ощутимо. Максимальная величина прироста, полученная нами, составила более 45%. Однако, как показала практика, при этом существуют и ситуации, когда производительность от включения Hyper-Threading не возрастает вовсе. Как уже говорилось не раз, все зависит от характера приложений, выполняемых одновременно и от того, как они используют ресурсы системы. Впрочем, можно говорить и о том, что в среднем прирост производительности в многозадачных средах от использования Hyper-Threading составляет порядка 20-30%.
Заметим также, что при работе со включенной технологией Hyper-Threading характер функционирования Unreal Tournament 2003, работающего параллельно с другими приложениями, изменяется качественно. Те из наших читателей, кто в своей жизни уделяет большое внимание компьютерным играм, знают, что в обычных условиях играть на компьютере, где кроме самой игры запущены еще какие-то приложения, невозможно. Причина этого кроется в том, что из-за постоянного переключения процессора между задачами игра работает заметными «рывками», что при сохранении достаточного среднего fps приводит к полной неиграбельности. Технология же Hyper-Threading в значительной мере позволяет избавиться от этого эффекта. Действительно, при работе Unreal Tournament 2003 параллельно с другими приложениями, характерное «подтормаживание» отсутствовало, что вполне может позволить играть во время работы других приложений в системах, оборудованных процессорами с технологией Hyper-Threading.

Выводы

Выпустив сегодня новый процессор семейства Pentium 4 с тактовой частотой 3.06 ГГц, Intel смог не только поднять планку производительности своих CPU, добившись лидерства в производительности над продуктами AMD в целом классе задач, но и представил чрезвычайно интересную технологию Hyper-Threading.
Оценивать же Hyper-Threading однозначно сегодня нельзя. С одной стороны, эта технология откроет дорогу виртуальным двухпроцессорным системам на рынок производительных домашних и офисных компьютеров. Плюсы очевидны – во многих случаях повысится как производительность, так и быстрота реакции при работе с существующими приложениями. Однако у этой технологии есть и обратные стороны. Многие сегодняшние задачи, имеющие оптимизацию под настоящую, а не под «виртуальную» многопроцессорность, от использования Hyper-Threading способны замедляться, причем порой достаточно существенно. Также, существует достаточно широкий круг задач, в первую очередь компьютерные игры, скорость в которых никак от Hyper-Threading не зависит. Однако, положительный эффект все же преобладает над отрицательным, и в большинстве случаев, если на систему не возложено никаких специальных задач, использование Hyper-Threading не лишено смысла.
Еще один большой плюс Hyper-Threading – достаточно небольшое увеличение процессорного ядра. Это означает, что производство процессоров с этой технологией будет практически не дороже, чем выпуск CPU без этой технологии. Таким образом, Intel, внедривший Hyper-Threading в свои CPU, повысил их производительность достаточно малой кровью.
К сожалению, розничная цена процессоров Intel Pentium 4 3.06 ГГц в настоящий момент баснословно высока и приближается к $650. В результате, говорить о том, что выпуск нового процессора может как-то повлиять на соотношение сил на рынке, не приходится. В то же время, в следующем году число моделей Pentium 4 с Hyper-Threading значительно увеличится, и эта технология вполне может прийти и в массовые компьютеры.
Внедрение технологии Hyper-Threading в массовые процессоры также означает и то, что новые программные средства будут разрабатываться оптимизированными и под нее. А это значит, что в скором времени Pentium 4 станет еще более привлекательным продуктом.