Pentium 4 3,06 GHz c Hyper-Threading: удваивать можно не только частоту

20 ноябрь, 2002 - 00:00Евгений Севериновский
Опытного пользователя, достаточно долго проработавшего на двухпроцессорной системе, потом, как правило, очень сложно пересадить за однопроцессорную, пусть и в несколько раз более производительную по тактовой частоте. До сих пор некоторые профи работают на двухпроцессорных Pentium Pro 200 MHz 6-летней давности, напрочь отказываясь от апгрейдов на современные "гигагерцы". Но если раньше многопроцессорность была уделом лишь high-end-систем, то теперь, с выходом нового Pentium 4, настольные ПК тоже становятся "отчасти двухпроцессорными". Hyper-Threading -- понятие, уже более года используемое в серверах и рабочих станциях, -- теперь напрямую относится и к нынешним мощным десктопам.

Больше гигагерц, хороших и... дуальных

14 ноября 2002 г. компания Intel выпустила очередной процессор для десктоп-систем -- Pentium 4 с тактовой частотой 3,06 GHz и поддержкой фирменной технологии Hyper-Threading. Событие это знаменательно вдвойне. Во-первых, частота 3,06 GHz является юбилейной, и новый рубеж можно считать взятым. Во-вторых, технология Hyper-Threading, с помощью которой один физический процессор представляется операционной системе и приложениям как два логических CPU, в определенном смысле уникальна, принося в массовые настольные системы понятие двухпроцессорности (пусть и с неизменной приставкой "псевдо"). Но если с первым пунктом все более или менее ясно -- высокая тактовая частота и, следовательно, возросшая производительность, -- то со вторым поначалу возникает немало вопросов. Лучше ли "два" процессора, чем просто один?.. если да, то насколько?.. и когда от этого есть реальная польза?..

Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту Как бы там ни было, но в итоге именно покупатель "голосует рублем" (гривней, долларом) "за" или "против" нового продукта и реализованных в нем технологий. А для этого нужно не что иное, как детальная информация о самом продукте и его возможностях. Предлагаемый материал несколько нестандартный: традиционная тестовая часть будет предваряться изрядным количеством теоретических рассуждений. Ведь если в мире систем high-end такие понятия, как SMP, двухпроцессорность/дуальность, многопоточные вычисления -- более чем родные, то для пользователей настольных ПК наверняка требуются некоторые разъяснения.

Напомним постоянным читателям, что суть Hyper-Threading (далее HT) мы однажды уже детально освещали. Впервые HT был реализован в процессорах для рабочих станций и серверов Intel Xeon, и наш подробный тест дуальной системы на Xeon 2,2 GHz опубликован в "Компьютерном Обозрении" (# 12, 2002). Но Xeon -- это все-таки не "настольный" процессор, и направленность предыдущего материала была соответствующей, "профессиональной". Поэтому сейчас, перед тем как перейти к рассмотрению Pentium 4 3,06 GHz, стоит немного "встать на местность" и обрести четкое понимание, чего же можно ожидать от технологии Hyper-Threading, этого "гостя из мира high-end".


Многопроцессорность: одна голова хорошо, а две... зачастую лучше

Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Использование ресурсов процессора в обычной системе (а), двухпроцессорной (б) и системе с Hyper-Threading (в)

Сама идея применения более чем одного процессора родилась достаточно давно. В серьезных системах производительности всегда не хватало, и если ее не мог обеспечить один процессор, то почему бы не использовать несколько CPU, так или иначе распределяющих между собой нагрузку? Например, "главный" процессор может заниматься основными вычислениями, а периферийный -- резервным копированием данных. Расчет большого массива может быть распараллелен между всеми CPU. Или же разные процессоры будут исполнять каждый "свое" приложение, в результате чего общее время выполнения программ значительно сокращается.

Существует несколько вариантов построения многопроцессорных систем. Однако в мире x86 наиболее прижилось так называемое симметричное мультипроцессирование (SMP, Symmetric MultiProcessing) -- схема, в которой все процессоры равноправны и используют общую оперативную память. Распределение работы между ними выполняется на программном уровне (операционной системой или приложением). Простейшей и самой "привычной" реализацией SMP является двухпроцессорная система (системы с числом процессоров 4, 8 и намного дороже, и менее распространены). Именно на двухпроцессорные, или дуальные системы (от англ. dual -- сдвоенный, парный) мы будем ориентироваться в рассмотрении, тем более что технология Hyper-Threading реализует как раз два логических процессора на системе с Pentium 4.

Итак, что же необходимо, чтобы на двухпроцессорной системе программы выполнялись быстрее, чем на однопроцессорной (что и является конечной целью)? В общем случае для этого требуется "четырехсторонняя поддержка" -- со стороны BIOS, чипсета, операционной системы и самого приложения. BIOS должен правильно опознать оба процессора, инициализировать их и заполнить соответствующие структуры данных информацией о них. На чипсет возлагается правильное распределение прерываний между процессорами. Операционная система обязана поддерживать многозадачность и многопроцессорность и уметь распределять задачи между разными процессорами (например, при работе в DOS, не подозревавшей о существовании SMP, напрасно ожидать ускорения выполнения какого бы то ни было приложения). Ну и наконец, весьма желательно, чтобы само приложение также умело распараллеливать свою работу, используя несколько процессоров. Например, классическим случаем являются программы рендеринга трехмерных сцен (такие как 3D Studio MAX, LightWave, Cinema 4D и др.), которые способны разбивать сцену на части для независимого обсчета этих частей на разных процессорах. Как показывают тесты, производительность на двухпроцессорной системе в таком случае может увеличиваться почти вдвое.

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

Уместно вспомнить, что абсолютное большинство современных "настольных" приложений не рассчитаны на работу в SMP-режиме. Однако у серьезного пользователя Windows, не особо стесненного малым объемом памяти ПК, одновременно бывают запущены (начинайте загибать пальцы): офисный пакет, несколько окон броузера, почтовый клиент, Instant Messenger, MP3-плеер, антивирус... Если добавить к этому саму ОС, у которой также немало забот по обслуживанию очереди печати, сети, функций безопасности, кэша и пр., то получим вполне многозадачную среду, и дополнительный процессор ей совсем не помешал бы... Ведь именно "торможения", когда один процесс временно забирает все ресурсы CPU и не дает выполняться другим приложениям, сильнее всего раздражают пользователя. Если эти задержки удается уменьшить с помощью организации хоть сколько-нибудь параллельной работы программ -- значит, пользователи будут довольны и станут эту технологию покупать.


Hyper-Threading: когда один -- почти как два

Многопроцессорность -- это, безусловно, хорошо и полезно... но достаточно недешево. Кроме дороговизны двух CPU по сравнению с одним, требуется еще и соответствующая платформа для них -- материнская плата с двумя процессорными гнездами, оснащенная намного более сложным BIOS и пр. Поэтому настоящая многопроцессорность по-прежнему остается уделом high-end-систем -- серверов и рабочих станций, где вопрос стоимости обычно отходит на второй план.

Что же делать простым пользователям, которым (хотя и далеко не всем) требуется все более высокая производительность? Чтобы удовлетворить такие запросы, Intel решила перенести в настольные системы свою технологию Hyper-Threading, за счет более эффективного использования ресурсов CPU реализующей два логических процессора на одном физическом. Как уже упоминалось, HT увидела свет в процессорах Xeon. Но, как это часто бывает, появившаяся в мире "серьезных" систем технология через какое-то время перекочевала в десктопы (вспомним RAID-массивы, двухканальную память, управление очередью команд в жестких дисках...).

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

В одном физическом процессоре формируются два логических (LP -- Logical Processor), которые разделяют между собой вычислительные ресурсы CPU. Операционная система и приложения "видят" именно два CPU и способны распределять работу между ними, как и в случае полноценной двухпроцессорной системы. Два потока, использующие разные ресурсы, могут комбинироваться примерно так, как показано на рисунке. Ресурсы одного физического процессора подразделяются на четыре класса:

  • дублируемые (Duplicated);
  • полностью разделяемые (Fully Shared);
  • с дескрипторами элементов (Entry Tagged);
  • динамически разделяемые (Partitioned).


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

  • При наличии только одного активного потока все ресурсы полностью отдаются ему, вне зависимости от того, на каком из двух логических процессоров он выполняется; второй логический процессор в этот момент останавливается командой HALT (заведует этим операционная система).
  • Для реализации Hyper-Threading потребовалась небольшая модификация процессора, и часть блоков все же была дублирована (например, блоки ITLB -- Instruction Translation Look-aside Buffer).
  • Технология получилась практически "бесплатной": для воплощения HT в процессоре число транзисторов увеличилось не более чем на 5%. Примерно на столько же возросло энергопотребление по сравнению с обычным процессором без HT.
  • Технология Hyper-Threading не является обязательной -- процессор может работать и в обычном режиме; отключение HT, как правило, производится отдельным пунктом в BIOS Setup.
  • Как и на полноценной двухпроцессорной системе, на ПК с поддерживающим Hyper-Threading процессором могут ускоряться даже обычные приложения, не оптимизированные под SMP (за счет параллельной работы разных задач на двух логических CPU).

Хотя, как будет показано далее, HT дает вполне ощутимый прирост производительности в многозадачных системах, существуют приложения, чье быстродействие при включении Hyper-Threading может падать. Например, "неправильными" в этом смысле оказываются программы, использующие циклы ожидания, при которых процесс занимает все ресурсы физического CPU. Для предотвращения этого Intel рекомендует вместо пустых циклов ожидания применять инструкцию PAUSE (появилась в IA-32 начиная с Pentium 4). Но наибольший прирост быстродействия на системах с HT показывают приложения, оптимизированные с учетом этой технологии (т. е. правильно использующие многопоточную архитектуру). Оптимизация может проводиться как вручную (для этого доступен довольно богатый набор вспомогательного ПО -- например Intel Threading Tools), так и в автоматическом режиме: зачастую достаточно просто перекомпилировать приложение с использованием одного из оптимизирующих компиляторов Intel.

x86+Hyper-Threading против VLIW?

Общеизвестно, что разговоры о "изначальном несовершенстве" архитектуры x86, которое в перспективе может стать серьезным препятствием дальнейшему росту производительности спроектированных на основе этой архитектуры систем, идут уже давно. Правда, мы бы немного сместили акценты: не "несовершенна" она была, а просто совсем для других целей разрабатывалась (вспомним родоначальников -- IBM PC и Intel i8086). Также общеизвестно, что в качестве панацеи от "болячек x86" многие предлагают строить процессоры будущего на других принципах, в частности -- на архитектуре со сверхдлинным командным словом (VLIW -- Very Long Instruction Word). Однако если приглядеться, то концепции VLIW и Hyper-Threading в чем-то очень похожи! В первом случае одна команда внутри процессора разбивается на части, каждая из которых (в идеале) исполняется на независимом, отдельном блоке. В случае c Hyper-Threading мы имеем несколько команд из разных потоков, одновременно исполняемых на одном физическом процессоре (опять-таки, на разных его блоках). Но, в отличие от VLIW, Hyper-Threading не предусматривает перекомпиляции ПО и позволяет использовать уже всем давно знакомый x86-код, правда, при условии его оптимизации под мультипоточность. Конечно, делать прогнозы сейчас еще очень рано, но все же... Быть может, Hyper-Threading -- это реальный шанс отсрочить "революции" и "глобальные перемены" еще на некоторое время?


Новый Pentium 4 и его платформа

Ну вот, наконец, мы подобрались к самому знакомству с новинкой -- Pentium 4 с частотой 3,06 GHz и поддержкой Hyper-Threading. Внешне процессор остался практически неизменным: тот же корпус с покрывающим кристалл теплорассеивателем, те же 478 ножек для установки в соответствующий разъем Socket 478... Наиболее заметных внешних изменений лишь два, да и то напрямую процессора не касающихся. Во-первых, изменился логотип Pentium 4, в котором появились буквы "H" и "T" (как нетрудно догадаться, обозначающие Hyper-Threading). Во-вторых, поставляемый с новым процессором кулер теперь имеет несколько иную форму и медный сердечник радиатора. Как бы там ни было, а тепловыделение у 3-гигагерцевого Pentium 4 несколько выросло.

Pentium 4 3,06 GHz использует то же ядро Northwood, что и предыдущие модели (естественно, с небольшими изменениями, касающимися поддержки Hyper-Threading). Соответственно, и основные характеристики также унаследованы: частота системной шины 533 MHz (133 MHz Quad-Pumped Bus), объем L2-кэша 512 KB, технология изготовления 0,13 мкм.

Примечательно, что в этот раз выход, в общем-то, нового процессора не сопровождается выпуском каких-либо обновленных чипсетов. Целых шесть существующих наборов логики Intel работают с Hyper-Threading -- это все чипсеты, поддерживающие частоту FSB 533 MHz:

  • Intel 850E (PC1066 RDRAM);
  • Intel i845E (DDR266);
  • Intel 845PE (DDR333);
  • Intel 845GE (DDR333, интегрированная графика);
  • Intel 845G (DDR266, интегрированная графика);
  • Intel 845GV (DDR333, интегрированная графика).

Исключение составляет лишь 845G A-stepping, в котором поддержка HT отсутствует. Да, все эти чипсеты Intel выпустила заранее, и производители материнских плат уже успели подготовить немало соответствующих моделей. В результате к выходу Pentium 4 с Hyper-Threading все эти платы оказались тем самым "роялем в кустах", для "игры на котором" (т. е. для корректной работы с HT) как максимум требуется обновление BIOS. Такую подготовку плацдарма можно только приветствовать: появление Hyper-Threading в настольных системах имеет шанс пройти достаточно гладко и без очередных революций, от которых компьютерный мир уже изрядно подустал. Заметим, что в чипсетах VIA и SiS под Pentium 4 поддержка Hyper-Threading пока не реализована.

Но, хотя вместе с выходом Pentium 4 с HT новые чипсеты и не объявлялись, 18 ноября (т. е. через четыре дня после выхода процессора) Intel все же представила еще один чипсет для Pentium 4 с поддержкой Hyper-Threading. Это E7205 (кодовое название Granite Bay), ориентированный на рабочие станции, и проще всего его охарактеризовать так: сильно урезанный однопроцессорный вариант E7500 (Plumas) с поддержкой FSB 533 MHz и AGP 8X для систем с Pentium 4 (каждое слово должно читаться с соответствующим ударением). Детально на особенностях Granite Bay мы остановимся в другой раз, когда для этого будет реальный повод (как минимум одна система на E7205). Пока же ограничимся констатацией того, что в середине ноября 2002 года семейство Pentium 4 получило не только новый мощный процессор с частотой 3,06 GHz и поддержкой Hyper-Threading, но и новую платформу более высокого класса.


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

В данном материале мы вполне осознанно пошли на шаг, который многим может показаться спорным, однако, взвесив все "за" и "против", все же решили, что альтернативные варианты получаются не то чтобы "лучше", но скорее "значительно хуже" выбранного. Итак, нам необходимо исследовать производительность процессора Intel Pentium 4 3,06 GHz с поддержкой технологии Hyper-Threading. Вроде бы все просто, но недаром народная мудрость гласит, что "простота хуже воровства". Потому что на самом деле вышеупомянутая формулировка за своей обманчивой простотой прячет очень, очень многовариантную задачу...

  • Напомним, что "...исследовать... с поддержкой технологии Hyper-Threading". Так все-таки "с поддержкой" исследовать или без? Ведь как раз именно производительность в зависимости от этого может существенно измениться!
  • На каком чипсете? Их сейчас для Pentium 4 (даже убрав несовместимые с новейшей 533 MHz FSB) как бы не около десятка. Причем для двух различных типов памяти (DDR SDRAM и RDRAM) и даже внутри "DDR-группы" -- для двух ее разновидностей (DDR266 и DDR333).
  • При этом, если чипсет будет не от Intel -- решение "проблемы Hyper-Threading" приходит само собой, ибо пока только наборы микросхем от Intel поддерживают данную технологию.
  • Кроме всего прочего, исследование производительности по привычной методике даже с включенной Hyper-Threading никоим образом преимущество новой технологии не покажет, потому что большое количество применяемого тестового ПО -- однопоточное.

Решение же этой нетривиальной задачи было найдено такое: исследуем производительность на одном чипсете (самом быстром) и "с упором" на Hyper-Threading, т. е. преимущественно в многопоточных приложениях или в нескольких одновременно работающих. Почему? Потому что это самое интересное, во всяком случае, нам кажется именно так. Действительно -- ну неужели можно назвать эпохальным событием простое повышение частоты верхнего процессора линейки Pentium 4 еще на 200 MHz? Сколько уже их было, этих "повышений"... и сколько еще будет... Получается, что Pentium 4 3,06 GHz без Hyper-Threading -- это, в общем-то, всего лишь "еще один Pentium 4". Конечно, более быстрый, с "юбилейной" частотой, но с точки зрения производительности -- вполне предсказуемый. Итак, вооружившись P4 3,06 GHz, 512 MB PC1066 RDRAM и системной платой Intel D850EMVR (чипсет i850E), мы приступили к разработке новой методики. Методики, которая должна продемонстрировать преимущества (или же недостатки) технологии HT обычному домашнему или офисному пользователю.


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

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


3ds max 5

Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту
Pentium 4 3,06 GHz c Hyper-Threading удваивать можно не только частоту

Новая версия популярного пакета для 3D-моделирования, хорошо известная нашим читателям и давно использующаяся Тестовой лабораторией "Компьютерного Обозрения" в качестве одной из программ для измерения производительности процессоров. Методика в данном случае была следующей: при включенной и выключенной поддержке HT замерялось общее время рендеринга четырех сцен (для полноты охвата -- с разными эффектами). Кроме того, замерялось время рендеринга одной из сцен (самой сложной) при параллельно запущенном в фоновом режиме процессе архивирования большого массива данных с помощью 7-zip. Ну и напоследок -- предыдущая задача, в комбинации с проигрыванием видеофильма в формате DivX с помощью стандартного Windows Media Player 8 -- в этом случае в качестве background-процесса выступала уже сама 3ds max 5. Таким образом, оказались охвачены все наиболее распространенные ситуации:

1.Собственно работа в 3ds max 5.
2.То же, но на фоне "мешающего" процесса (интересовало, насколько сильно он станет мешать основной программе).
3.Рендеринг сцены на фоне "развлекательного" процесса (интересовало, насколько медленнее он будет происходить и не помешает ли это просмотру фильма).

Диаграммы довольно красноречивы: применение HT "помогает" системе вполне неплохо (если учесть, что на физическом уровне мы ничего не меняем, а просто "разрешаем" или "запрещаем" использование некой особенности CPU). Однако на одном пункте хотелось бы остановиться особо -- рендеринги в 3ds max при проигрывании видеофильма. Легко заметить, что вместе с привычными "Hyper-Threading on" и "Hyper-Threading off" на этой диаграмме присутствует еще и столбик "Hyper-Threading + affinity". Названием этим он обязан специальному пункту контекстного меню процесса в Windows Task Manager, который позволяет принудительно указать, какой CPU данный процесс имеет право использовать. Так вот -- фильм стало возможно смотреть только тогда, когда при включенной HT Windows Media Player и 3ds max было указано использовать разные виртуальные CPU. Во всех остальных случаях воспроизведение происходило с рывками и пропаданиями звука, что, согласитесь, удовольствия во время просмотра никак не прибавляет. Делаем первый вывод: в этой ситуации Hyper-Threading позволила решить задачу в принципе, но не без некоторой "ручной доводки".


Alias|Wavefront Maya 4.5 и Cinema 4D 8 Demo

Еще два пакета для трехмерного моделирования с поддержкой SMP и многопоточности. Останавливаться подробно на описании методики проведения тестов не будем, ибо по сути она идентична используемой в случае с 3ds max -- замерялось время рендеринга сцены (сцен) в "одиночном" режиме работы и в комбинации с другими задачами. На диаграммах хорошо видно, что даже если приложения работают без дополнительных "мешающих" факторов, польза от включения поддержки HT есть, и довольно большая. Отдельного комментария заслуживает фоновый рендеринг в Maya при просмотре видеофильма: пункт "Hyper-Threading on" без affinity мы в данном случае решили не приводить, ибо одного раза вполне достаточно, практического же значения он не имеет: как и 3ds max, Maya без назначения "эксклюзивного" CPU "выедала" ресурсы обоих процессоров настолько, что проигрывание фильма становилось похожим на слайд-шоу. То же самое наблюдалось и в случае отказа от использования Hyper-Threading, т. е. при одном CPU, видимом системой.

Более интересна ситуация с Cinema 4D. Диаграмму с результатами рендеринга на фоне архивации с помощью 7-zip приводить нет совершенно никакого смысла по одной причине: чтобы достичь "нужного эффекта", она не нужна. Итак: рендеринг самой сложной из имеющихся сцен при включенной поддержке Hyper-Threading занял около 6 минут, а вот при выключенной... мы подождали сорок минут (!!!), констатировали, что процесс не завершен и наполовину... и решили, что даже теоретического интереса дальнейшее продолжение эксперимента не представляет. Насколько нам известно, поддержка Hyper-Threading на уровне кода в Cinema 4D есть, а ведь состоит она преимущественно в своего рода "умении кооперироваться", т. е. "отдавать процессор" другому ПО. В данном случае это привело к неожиданному эффекту: при отсутствии второго виртуального CPU Cinema 4D настолько хорошо "делилась" ресурсами с 7-zip, что ей самой просто "ничего не оставалось"! Наверное, столь очевидную ошибку исправят -- ведь у нас была всего лишь демо-версия, причем сделанная на основе "беты" пакета (релиз Cinema 4D 8.0 еще не вышел). Однако запомним и эту интересную особенность HT-оптимизированного ПО.


7-zip

Единственный известный нам архиватор для Windows, поддерживающий многопоточность... И результаты, при первом взгляде на которые так и хочется повторить незабвенную фразу фрекен Бок: "Тра-ля ля-ля ля-ля, а я сошла с ума -- какая досада!". Действительно: использование опции --mmt (включение многопоточности) стабильно приводит к ухудшению результатов, но... включение поддержки Hyper-Threading с не менее завидным постоянством приводит к их улучшению, причем существенному! Парадокс? На самом деле -- не совсем. Проведенное нами мини-исследование показало, что даже без указания в командной строке опции --mmt, 7-zip все равно создает в процессе работы четыре потока (в случае ее наличия число потоков просто возрастает до шести, т. е. добавляются еще два). Вердикт странный, но в то же самое время подтвержденный результатами многократных повторений тестов: HT демонстрирует себя с лучшей стороны... только если не включать поддержку многопоточности в самом архиваторе!


Кодирование MP3

Сам по себе кодек LAME многопоточность не поддерживает, а от использовавшегося нами ранее GOGO (обладающего данным свойством) пришлось, увы, отказаться ввиду того, что он... слишком быстро работает! Кодирование 300-мегабайтового WAV-файла с помощью GOGO на нашей системе занимало не более полутора минут, а учитывая, что за это время программе требуется как минимум прочитать эти самые 300 MB, возникло существенное подозрение о большом влиянии дисковой подсистемы на результаты тестов, что, естественно, недопустимо. Однако что с того, что SMP не поддерживает сам кодек! -- решили мы. Значит, нужно подобрать ему "достойного компаньона". Решение очевидное, можно сказать, напрашивающееся: если пользователь занимается кодированием MP3, то, скорее всего, и другие виды компьютерных развлечений ему не чужды. Почему бы, к примеру, во время нудного и скучного процесса преобразования форматов не посмотреть фильм? Именно эту ситуацию мы и смоделировали: фоновым процессом выступал MP3-кодек LAME, основным же -- Windows Medial Player в полноэкранном режиме. И опять Hyper-Threading показала себя с наилучшей стороны. Справедливости ради отметим, что в данном случае "игры с affinity" не понадобились, более того -- даже в "однопроцессорном" режиме кодирование MP3 просмотру фильма ничуть не мешало. Но насколько быстрее завершается этот процесс при наличии "виртуального" второго CPU! Комментарии, как говорится, излишни.


...и игры...

Ну а куда же без них! Все-таки технология Hyper-Threading ориентируется теперь не только на рынок рабочих станций и серверов, но и десктопов, а десктопы -- это в том числе домашние мультимедийно-игровые ПК. Не мудрствуя лукаво (чем меньше ПО используется в тестах -- тем больше шансов их корректно провести и разобраться как следует с результатами), мы решили "поиграть" в Return to Castle Wolfenstein на фоне кодирования WAV->MP3 с помощью все того же LAME. Результаты, скажем прямо -- более чем приличные. Выигрыш почти на 50% -- и за счет чего?! -- всего лишь за счет включения поддержки технологии, позволяющей самым оптимальным образом задействовать ресурсы одного и того же процессора! Фактически именно этот тест можно назвать "апофеозом достижений Hyper-Threading" в рамках данного материала -- технология стопроцентно убедительно доказала свою нужность и полезность.


Выводы

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

  • А каким, интересно, образом она может быть "плоха", если данная технология совершенно безболезненно отключается?
  • "Брать за один процессор цену двух" Intel, судя по всему, не собирается -- конечно, новоявленный Pentium 4 3,06 GHz стоить поначалу будет дорого, но такова уж судьба всех "топовых" CPU, и особенных различий между текущей ценой Pentium 4 3,06 GHz и стоимостью того же Pentium 4 2,8 GHz сразу же после его выхода мы не заметили.
  • Результаты тестов практически нигде не показали отрицательного влияния от включения Hyper-Threading -- их можно иногда назвать "труднообъяснимыми" и "странными", но никак не "плохими".

Таким образом, правильный вопрос будет звучать несколько по-другому: "А настолько ли хороша новая технология, чтобы "огород городить"?". Давайте разберемся, исходя из имеющихся данных. С одной стороны, у нас откровенно ошибочное поведение бета-версии ("бета"!) Cinema 4D и "загадочно-непонятные" результаты 7-zip. С другой -- вполне успешные эксперименты с одновременной работой нескольких программ (особенно отличилась популярная игра Return to Castle Wolfenstein на пару с MP3-кодеком LAME). Где-то посередине -- небольшой прирост производительности в популярных пакетах 3D-моделирования (примерно 10--15%). Общий вывод?..

Но для начала вернемся в недавнее прошлое. Лично нам появление Pentium 4 с поддержкой Hyper-Threading очень напомнило... выход этого же процессора как такового! Вспомните, как было сперва: некоторые программы вдруг неожиданно оказались очень лояльными к новичку (к примеру, так любимый компанией Intel Quake III, в котором Pentium 4 сразу же "скакнул" на недосягаемую высоту, где и находится до сих пор). Некоторые -- наоборот, "пребывали в легком недоумении" и быстро работать на новой архитектуре отказывались категорически. Чем все закончилось? Для "строптивого" ПО выпустили патчи или новые "подправленные" версии, прочее уже изначально разрабатывали с учетом существования нового процессора, пошла повальная оптимизация под SSE2... В результате через некоторое время компьютерная индустрия Pentium 4 "переварила и успокоилась", а пользователи получили еще один весьма быстрый процессор, стоящий, скажем так, вполне разумных денег (гнаться за топовыми частотами никто никого не заставляет, а цена того же Pentium 4 1700 MHz -- около $130).

Что нас ждет в ближайшем будущем? Можно предположить, что примерно то же самое. Те производители ПО, которые захотят воспользоваться новыми возможностями, -- подвергнут свои продукты частичной модификации. Кто не захочет... а вот тут все зависит от того, насколько для их программ быстродействие критично. В конце концов, "затачивать" под Hyper-Threading (или MMX, или SSE2) что-нибудь типа файлового менеджера вряд ли имеет смысл. Грубые ошибки, если таковые вдруг возникнут в программах при их работе в "псевдомногопроцессорных" системах, естественно, устранят все (кому охота терять пользователей?).

А сама технология, судя по всему, "приживется". Ну кто откажется от явных преимуществ при отсутствии ярковыраженных недостатков? Поэтому оптимистам -- "добро пожаловать в эру виртуальной многопроцессорности!", а пессимистам... ну, вас ведь всего лишь приглашают, силком никто не тащит, правда?

Оборудование для подготовки материала предоставлено украинским представительством компании Intel: тел. (044) 490-6417