|
|||
реклама у нас | |||
*** |
Процессор Pentium 4 3.06 и технология HyperThreadingАвтор: Макс Курмаз Одной из полезных особенностей архитектуры процессора Pentium 4 является возможность достижения очень высоких тактовых частот. Почему это стало возможным? Не будем вдаваться в детали: поскольку исполнительный конвейер у этого процессора длиннее, чем у предшественников и конкурирующих процессоров, общее время выполнения одной команды поделено на несколько коротких этапов, каждый из которых может выполняться достаточно быстро. Сокращение длины одного такта - это ничто иное, как увеличение тактовой частоты. Поэтому, отлаживая технологию производства, корпорация Intel может постепенно наращивать частоту процессора. Что она и делает, с завидной периодичностью объявляя все новые и новые модели Pentium 4. ИдеяДля чего применяется многопроцессорная обработка - понятно: если в системе имеются два и более вычислительных устройства, их можно загрузить работой и тем самым увеличить быстродействие системы. Вопрос только в том, как разбить задачу на несколько независимых подзадач, которые можно выполнять параллельно. Но современные операционные системы уже являются многозадачными и многопоточными - они одновременно выполняют множество служебных и прикладных задач. Очевидно, что выигрыш от наличия нескольких процессоров, хотя бы теоретический, должен получить любой компьютер, работающий под управлением многозадачной ОС. Преимущества и недостаткиПроцессор, поддерживающий HyperThreading, эмулирует в системе работу двух одинаковых логических процессоров, принимая команды, идущие для каждого из них. На самом деле внутри процессора нет двух вычислительных ядер, как, например, в серверном процессоре IBM POWER4. Удвоены только массивы регистров - как общего назначения, так и служебных. Получается, что оба логических процессора конкурируют за ресурсы одного вычислительного ядра и потому используют его более эффективно, нежели одно ядро, как в процессорах, не поддерживающих HyperThreading.Процессор рассматривает оба потока команд и по очереди запускает на выполнение команды то из одного, то из другого, или сразу их двух, если есть свободные вычислительные ресурсы. Нельзя сказать, что один из потоков является приоритетным - процессор старается обработать оба. Если один из потоков команд останавливается в ожидании события или зацикливается, то процессор просто переключается на второй поток команд. С этим связан эффект ускорения низкоуровневых операций (доступ к подсистемам ввода-вывода), когда работающий драйвер не вызывает блокировки системы. Однако один процессор не может работать с такой же скоростью, как два процессора. Он может лишь более эффективно использовать свои внутренние ресурсы. Это особенно хорошо заметно, если потоки команд, грубо говоря, не похожи друг на друга, то есть содержат разные типы команд. Тогда обработка одного потока может совмещаться с замедленной обработкой другого, то есть процессор за одно и то же время будет успевать делать полтора дела. Несколько одновременно запущенных приложений, использующих разные алгоритмы обработки данных, будут получать серьезный выигрыш от HyperThreading. И в то же время не стоит забывать, что эффективность новой технологии зависит от работы операционной системы. Разделять команды на потоки будет именно она. И если операционка будет нагружать один из процессоров своими внутренними, системными задачами, то даже одно приложение сможет ускорить работу благодаря HyperThreading. От приложения тоже зависит, сможет ли оно использовать новые возможности новой технологии. Оно должно выполняться в нескольких потоках, причем эти потоки должны быть спроектированы так, чтобы не пересекаться и не зависеть друг от друга. Ведь если, например, один поток ждет результата работы второго, то HyperThreading может давать отрицательный эффект из-за того, что один поток может забрать почти все ресурсы и не давать работать второму. В общем, прирост скорости сильно зависит от выполняемых задач. В некоторых случаях он может достигать 25-35% (по данным Intel). Или, например, "заточенные" под многозадачность программы ускоряются на 15-20%. А в других случаях разница не будет заметна или вообще будет отрицательной. ПоддержкаНа самом деле технология HyperThreading не так уж и нова. Ее поддержка была заложена в самые первые процессоры семейства Pentium 4 (те самые, с ядром Willamette), но до последнего времени не работала. В смежном рынке серверов и рабочих станций, на процессорах Xeon она была включена раньше, более года назад. Однако на настольном рынке ее появление было задержано. И только после объявления Pentium 4 3.06 было решено, что в обновленной линейке процессоров, как младших, так и старших, еще не вышедших, HyperThreading будет поддерживаться в обязательном порядке.
О чипсетах других производителей есть следующие сведения:
Для работы новой технологии нужна также одна из двух операционных систем - либо Windows XP (Home или Pro - не важно), либо Linux с новым ядром, поддерживающим HyperThreading. ТестированиеИ вот, достав все необходимые компоненты - процессор (Pentium 4 3.06), плату (Intel D845PEBT2, i845PE), BIOS (P06) и операционную систему (Windows XP Professional), я решил проверить, какой реальный прирост обеспечивает новая технология. Использовать для этого какие-то специфические приложения я не стал, поскольку меня интересовала работа системы в обычных условиях дома или офиса. То, что профессиональные приложения можно "заточить" под HyperThreading, не вызывает сомнений, однако с ними работает далеко не каждый пользователь. А вот в игры, например, играют многие.После включения HyperThreading в BIOS пришлось переустановить операционку, чтобы заменить ядро (HAL) на поддерживающее многопроцессорность, поскольку обычное ACPI-ядро Windows XP успешно определят два процессора, но использует только один из них. В принципе, можно обойтись и без переустановки - замена ядра подробно описана в различных FAQ по Windows 2000/XP. Далее я прогнал обычный набор своих тестов.
И ни один из них не сообщил о заметном увеличении производительности, кроме, разве что, SYSmark2002 Content Creation - около 1% прироста, что, в принципе, можно списать на погрешность измерений. Очевидно, что методика измерения скорости выполнения тестов не рассчитана на многозадачность - в частности, тесты полагается запускать после полной перезагрузки, сняв все лишние задачи и службы и т.п. Кроме того, выполнение одного приложения, "захватывающего" все ресурсы системы, может замедляться из-за того, что операционка "думает", что у нее есть второй свободный процессор, хотя на самом деле процессор только один, и он уже занят по полной программе. Этим я и объясняю снизившиеся из-за HyperThreading результаты некоторых тестов (Quake3, Serious Sam, Winstone2001). Работа одиночных приложений от включения HyperThreading, как и в случае с тестами, не изменилась - разве что VirtualDub сжал видео на 8% быстрее.
Добавление Media Player при отсутствии HyperThreading привело к снижению скорости на 20-25% (в случае SPECviewperf - на 10%). А если HyperThreading включена, то потери стали меньше на 5% (в случае SPECviewperf - на 3,5%). Это не такой уж замечательный результат, но он есть. Итог
Ясно только, что HyperThreading - неоднозначное и очень оригинальное техническое решение, которое позволяет с минимальными затратами реализовать, хоть и не совсем настоящую, но все же многопроцессорность на однопроцессорной машине. Осталось только решить вопрос, как добиться выигрыша от ее применения.
Источник: http://www.hw.by |
|
Copyright © Internet
Zone, info@izcity.com Условия использования материалов смотрите здесь. |