Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Лучшие статьи журнала ╚Компьютеры+Программы╩


Информационный Канал Subscribe.Ru

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

Евгений Патий,
testlab_chief@comizdat.com

Pentium 4 3,06 ГГц:
один пишем, два в уме

Технология Hyper-Threading применительно к настольным системам — обзор процессора Intel Pentium 4 с тактовой частотой 3,06 ГГц

Технология Hyper-Threading от Intel — отнюдь не сногсшибательная новинка, говорилось и писалось о ней уже не раз. Однако до недавнего времени эта технология была чем-то неосязаемым и далеким, неким явлением из мира серьезных систем — высокопроизводительных серверов и рабочих станций, в которых используются процессоры Intel Xeon. Именно в этих чипах была впервые реализована технология, которая, не побоюсь этого слова, произвела переворот в понимании вычислительного процесса как такового.

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

Рисунок: Pentium 4 3.06 ГГц в процессорном сокете

Рисунок: Pentium 4 3.06 ГГц в процессорном сокете

Время идет, и вот процессоры от Intel с технологией Hyper-Threading уже доступны для использования в настольных системах. Конечно же, речь идет об анонсированном 14 ноября Pentium 4 с тактовой частотой 3,06 ГГц. Безусловно, 3,06 — очередная «историческая» веха, как и все круглые частоты (еще свежа память об ажиотаже, связанном с выпуском процессора Intel Pentium III с тактовой частотой 1 ГГц). Однако для меня лично на первом плане — не частота нового Pentium 4, а поддержка технологии Hyper-Threading.

Hyper-Threading изнутри

Итак, приведем некоторые теоретические выкладки, связанные с этой технологией, постараемся «творчески переосмыслить» перспективы Hyper-Threading применительно к настольным системам. Кстати, вероятность возможного появления процессоров Pentium 4 с поддержкой Hyper-Threading имелась еще со времен анонсирования Intel Xeon MP (Foster), в которых использовалось ядро Willamette. На самом деле так и оказалось — даже процессоры Pentium 4 с ядром Willamette оснащены этой технологией, хотя она и запрещена на аппаратном уровне.

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

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

Рисунок: Вот такой он — Pentium 4 3.06 ГГц

Мы подошли вплотную к механизму работы Hyper-Threading. Любая вычислительная задача разделяется на несколько «нитей» (или «тредов», threads), число которых больше или равно единице. В то время как первая (вполне возможно, что и единственная) нить задачи выполняется первым логическим процессором, второй процессор может быть занят либо выполнением другой нити (если таковая имеется) текущей задачи, либо (в случае отсутствия других нитей) выполнением нити другой задачи. Другая задача найдется всегда (по крайней мере, в условиях современных операционных систем) это либо процессы и задачи Windows, либо демоны и процессы Unix. Другими словами, если даже текущая задача не подлежит распараллеливанию на несколько нитей, второму логическому процессору все равно найдется занятие.

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

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

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

На самом деле технология Hyper-Threading не является еще полной эмуляцией двух логических процессоров одним физическим. Для успешной работы этой технологии необходимы следующие условия: поддержка Hyper-Threading чипсетом системной платы, BIOS'ом системной платы, а также операционной системой. Другими словами, наличие в системе процессора Pentium 4 с тактовой частотой 3,06 ГГц само по себе вовсе не гарантирует возникновения как по мановению волшебной палочки двух логических процессоров.

Рисунок: Hyper-Threading с точки зрения менеджера устройств Windows XP

Полной поддержкой Hyper-Threading обладают такие операционные системы, как MS Windows XP Home, Windows XP Professional, Windows .NET и Linux 2.4.x (имеется в виду ядро). Достоверно известно, что Windows 2000 (все интерпретации этой системы) не обладает полноценной поддержкой Hyper-Threading: ОС увидит все логические процессоры, в менеджере задач появятся диаграммы загрузки всех логических процессоров, однако система не будет знать, как корректно работать с этими процессорами. Разработчики объясняют этот факт необходимостью коренной переработки ядра ОС, разработанного несколько лет назад,  что нецелесообразно как с маркетинговой, так и с технологической точек зрения. По имеющимся на текущий момент сведениям, последующие сервис-паки для Windows 2000 проблему не решат.

Факт поддержки технологии в Linux представляется также весьма неоднозначным. Хотя стабильные ядра ветки 2.4.x способны корректно работать с Hyper-Threading, вопрос об оптимизации остальных программных пакетов, входящих в дистрибутивы помимо ядра, остается открытым до сих пор. Так как Intel имеет в своем арсенале различные средства разработки и рекомендации, нацеленные на оптимизацию программного обеспечения с целью получения максимального прироста производительности, вкупе с технологией Hyper-Threading, никаких препятствий для пересборки дистрибутивов сегодня нет. В качестве реального примера таких мероприятий приведем дистрибутив Mandrake Linux, который в свое время был полностью оптимизирован для работы на процессорах класса Pentium.

Рисунок: Два логических процессора в менеджере задач Windows XP

Существует еще один щекотливый аспект, на котором нельзя не остановиться. Это функционирование операционных систем в зависимости от числа процессоров. Известно, что некоторые системы, например Windows XP Professional, способны работать, максимум, с двумя процессорами. Компания Microsoft заявляет, что это ограничение распространяется только на физические процессоры, то есть при установке этой ОС на систему с процессором Pentium 4 3,06 ГГц приличия будут соблюдены. Но если взять двухпроцессорную системную плату и установить туда два этих процессора, то логических Pentium 4 3,06 ГГц будет уже четыре. Как в данном случае поведет себя ОС — сказать трудно. Будут ли в данном случае задействованы все четыре процессора или же только два «предписанных» — большой вопрос.

Процессор

«Виновник торжества» — Pentium 4 3,06 ГГц — конструктивно ничем не отличается от своего предшественника с тактовой частотой 2,80 ГГц, за исключением поднятого флажка «Hyper-Threading». Процессор основан на уже хорошо известном ядре Northwood, что говорит о 0,13-мкм технологическом процессе и 512 Кб кэш-памяти второго уровня. Частота системной шины составляет, разумеется, 533 МГц (реальная частота генератора — 133 МГц, эффективная частота FSB — 533 МГц), коэффициент умножения — 23.

Тестирование процессора проходило на стенде следующей конфигурации:

  • системная плата Intel D850EMV2, чипсет Intel 850, BIOS P19;
  • оперативная память — 2 модуля RDRAM PC1066 Samsung 256 Мб;
  • видеокарта — Sparkle GeForce 4 MX440 64 Мб DDR SDRAM;
  • жесткий диск — Seagate Barracuda IV 80 Гб UltraATA/100 7200 об/мин.

Использовавшееся программное обеспечение:

  • Microsoft Windows XP Professional 5.1.2600 Service Pack 1;
  • Bapco SysMark 2002;
  • MAXON CINEMA 4D Release 8 Cinebench Benchmark (Preview version);
  • Quake III Arena 1.31;
  • Tsunami MPEG Encoder ver. 2.57.41.146;
  • VirtualDub 1.4.11;
  • CDex 1.50 beta 7 (Lame encoder ver. 3.92 MMX).

Для всех устройств были инсталлированы самые свежие официальные драйверы. Сначала тесты проводились при отключенной в BIOS системной платы функции Hyper-Threading. Затем Hyper-Threading включался в BIOS, драйвер компьютера в менеджере устройств ОС Windows XP обновлялся с «ACPI System» до «ACPI Multiprocessor PC» — и все тесты проводились снова. Основной целью тестирования ставилось определение влияния технологии Hyper-Threading на суммарную производительность системы в различных приложениях.

Рисунок: Quake III Arena 1.31

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

Первым — из спортивного интереса — мы запустили Quake III. Честно сказать, я не ожидал сколько-нибудь значительного прироста FPS в этой программе — хотя бы потому, что экспериментально доказана «неуживчивость» Hyper-Threading, да и вообще мультипроцессорности, и OpenGL. В принципе, возможна ситуация, когда производительность системы при использовании двух логических процессоров во время выполнения OpenGL-приложения оказывается ниже, чем производительность однопроцессорной системы при прочих равных условиях. Это, кстати, справедливо и для двух физических процессоров, то есть в «настоящей» SMP-конфигурации. Прирост в каждом из десяти прогонов в режиме 800x600x32 bit High Quality составил в среднем честных 5 FPS.

Рисунок: SysMark 2002

Один из наиболее признанных тестовых пакетов — SysMark 2002 — показал неоднозначные результаты. Хотя общая оценка системы с включенным Hyper-Threading выше, однако этот выигрыш достигнут только за счет теста Internet Content Creation, так как тест Office Productivity показал более высокие результаты на системе без Hyper-Threading.

В случае с мультимедийными приложениями мы имеем просто хрестоматийные случаи поведения программ в многопроцессорных конфигурациях. Итак, для первого теста с обычного аудио-CD был «рипнут» WAV-файл объемом 125 Мб с длительностью звучания 12 мин 27 с. С помощью популярного кодировщика Lame 3.92 (в данном случае использовалась версия, оптимизированная для набора инструкций MMX) требовалось получить аудиофайл в формате MPEG-1 Layer 3. Параметры искомого MP3-потока следующие: VBR, минимальный поток 192 Кбит/с, максимальный — 256 Кбит/c, причем для Lame задается пресет — alt-preset-extreme. По результатам этого теста можно сделать вывод, что кодировщик Lame практически не подлежит разделению на нити: 2 мин 59 с на системе с выключенным Hyper-Threading и 2 мин 58 с — на системе с функционирующим Hyper-Threading. Разницу в одну секунду можно отнести либо к погрешности измерений, либо все-таки к работе Hyper-Threading — возможно, второй логический процессор все-таки был занят системными фоновыми задачами.

Рисунок: Мультимедийные приложения

Совершенно аналогична и ситуация с чрезвычайно популярной программой для обработки видео — VirtualDub. В этом случае включение Hyper-Threading привело к замедлению кодирования тестового видеоклипа из формата MPEG-1 в формат DivX 5.0.2 Pro. Отсюда делаем вывод, что VirtualDub также не подлежит распараллеливанию на отдельные нити.

Последнее мультимедийное приложение, в некотором роде аналог VirtualDub,— Tsunami MPEG Encoder — полностью оправдало возлагаемые на Hyper-Threading надежды. Дело в том, что эта программа умеет работать с несколькими процессорами, причем в ее настройках можно указать количество процессоров в системе, а также степень разделения нитей между несколькими процессорами. Итак, тестовый клип в формате DivX 5.0.2 был закодирован в формат MPEG-2 за 2 мин 1 с на системе без Hyper-Threading и за 1 мин 38 с — при включенном Hyper-Threading. Налицо отличная проработка алгоритмов кодирования применительно к многопроцессорным конфигурациям — в данном случае выигрыш от использования второго логического процессора составил 23%.

Рисунок: Maxon Cinema 4D Release 8 Cinebench Benchmark

Последний использовавшийся тестовый пакет — CINEMA 4D Release 8 Cinebench Benchmark. Здесь включение функции Hyper-Threading также принесло ощутимый прирост скорости обсчета трехмерных сцен. Интересно наблюдать за процессом рендеринга на многопроцессорной системе — картинка начинает рендериться с нескольких независимых точек (в данном случае, с двух).

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

Евгений Патий,
testlab_chief@comizdat.com


Подписаться на дискуссионный лист
Послать письмо на дискуссионный лист
Задать вопрос
Прислать свою статью для публикации в журнале
Просто поговорить
Получить именной бланк подписки на "бумажную" версию

До следующего выпуска!
Елена Полонская, редактор "К+П"
www.comizdat.com

Перепечатка материалов этой рассылки разрешается только по согласованию с редакцией журнала "Компьютеры+Программы"



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное