Два в одном. Технология Hyper-Threading в действии

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

Дело в том, что процессор обладает исполнительными ресурсами — маленькими вычислительными заводами, отвечающими за различные операции. У Pentium 4 этих ресурсов — великое множество, и при этом одной программе часто бывает не под силу заполнить все исполнительные ресурсы — следовательно, часть из них остается незадействованной. Конечно же, если мы хотим выжать из процессора максимум производительности, то подобные простои нельзя назвать выгодными. Поэтому Intel вполне логично решила выполнять на процессоре две программы одновременно — чтобы вторая программа смогла использовать те ресурсы, которые не может задействовать первая. Таким образом, эффективность совместного выполнения программ, а значит, и производительность возрастают. Остается оценить, насколько сильно возрастает производительность — стоит ли покупать новый процессор, чтобы обзавестись поддержкой Hyper-Threading?
Если сравнить однопроцессорную систему с Hyper-Threading с двухпроцессорной системой без поддержки этой технологии, то вполне очевидно, что вторая система будет работать быстрее. Действительно, два физических процессора обладают в два раза большим числом исполнительных ресурсов, поэтому увеличение производительности при переходе от одного процессора к двум на некоторых приложениях (скажем, на базах данных), составляет до 90%. В случае использования Hyper-Threading у нас имеется один физический процессор с одним набором исполнительных ресурсов, который мы превращаем в два логических процессора. При выполнении двух программ существуют исполнительные ресурсы, за которые программам придется конкурировать между собой — поэтому производительность однопроцессорной системы с Hyper-Threading будет ниже, чем двухпроцессорной системы без Hyper-Threading.
А теперь позвольте перейти к более интересному сравнению — однопроцессорной системы на Pentium 4 с Hyper-Threading и однопроцессорной системы на Pentium 4 без поддержки этой технологии. Но сначала давайте проанализируем, каким требованиям должен удовлетворять ваш компью­тер, чтобы на нем работала технология Hyper-Threading. Мы будем рассматривать только настольные конфигурации, без учета серверов и мобильных компьютеров.
1. Hyper-Threading должен поддерживать процессор.
Этому требованию удовлетворяют следующие настольные процессоры:
— Intel Pentium 4 3.06 ГГц с FSB 533 МГц (ядро Northwood, кэш L2 512 Кбайт);
— Intel Pentium 4 2.4C/2.6C/2.8C/3.0/3.2/3.4 ГГц с FSB 800 МГц (ядро Northwood, кэш L2 512 Кбайт);
— Intel Pentium 4 Extreme Edition 3.2/3.4 ГГц с FSB 800 МГц (ядро Northwood, кэш L2 2 Мбайт);
— Intel Pentium 4 2.8E/3E/3.2E/3.4E с FSB 800 МГц (ядро Prescott, кэш L2 1 Мбайт).
Следует отметить, что выпущенный 2 февраля процессор Intel Pentium 4 2.8A хоть и имеет ядро Prescott, но работает на FSB 533 МГц и технологию Hyper-Threading не поддерживает.
2. Технологию Hyper-Threading должна поддерживать материнская плата (точнее, чипсет).
Такой поддержкой обладают следующие настольные чипсеты:
— Intel 845E, 845G (кроме A-step), 845GV, 845GE, 845PE, 850E — при условии поддержки BIOS;
— Intel 875P, 865P, 865G, 865PE, 848P;
— ALi M1681, M1683;
— ATi 9100IGP;
— SiS 648FX, 655FX, 655TX, 661FX, R659;
— VIA PT800, PT880.
3. Технологию должна поддерживать операционная система.
Hyper-Threading поддерживают следующие настольные ОС:
— Windows XP Home и Professional;
— Linux (версия ядра выше 2.4.x).
Если использовать Hyper-Threading с операционными системами, не поддерживающими многопроцессорность, то ОС просто не увидит второй процессор и будет работать в обычном режиме. Скажем, установив Windows 98 на компьютер с Hyper-Threading, никакой разницы с обычным процессором вы не обнаружите.
Если же система умеет работать с несколькими процессорами, но не знает о существовании Hyper-Threading, то поддержку технологии лучше выключить в BIOS. Скажем, если вы установите на компьютер с Hyper-Threading Windows 2000, то производительность может даже снизиться. Дело в том, что Windows 2000 рассматривает два виртуальных процессора, как два физических (не зная о Hyper-Threading), распределяя нагрузку в расчете на удвоенное число исполнительных ресурсов.
Все три упомянутых требования являют­ся обязательными для работы Intel Hyper-Threading. Теперь следует назвать еще одно требование, которое не обязательно, но желательно для получения максимальной производительности.
4. Приложение должно быть многопоточным.
Дело в том, что изначально приложения (программы) были однопоточными, то есть разрабатывались с учетом работы на одном процессоре — ведь раньше все компьютеры были однопроцессорными. Такая программа будет работать с одной и той же скоростью, независимо от того, сколько процессоров установлено в системе — она просто не умеет их использовать.
Затем серверы начали оснащаться двумя и более процессорами, и приложения стали писать так, чтобы они смогли использовать вычислительные ресурсы всех процессоров в системе. Для этого приложение разбивает свою работу на несколько более маленьких заданий, называемых потоками, и каждый поток выдается на выполнение своему процессору. В итоге все процессоры в системе заняты и приложение выполняется примерно во столько раз быстрее, сколько процессоров установлено в системе (точного масштабирования не происходит, поскольку процессы используют некоторые общие ресурсы). Такие приложения называются многопоточными.
Вполне логично, что однопоточное приложение на компьютере с Hyper-Threading не будет работать быстрее — оно просто не сможет использовать второй процессор. А вот многопоточные приложения будут использовать оба логических процессора и, следовательно, работать быстрее. Конечно, не с такой скоростью, как на системе с двумя физическими процессорами, но все же.
Рассмотрим изменение производительности, которое происходит при включении технологии Hyper-Threading (за основу бралась одна и та же система с процессором Intel Pentium4 3.4E ГГц на ядре Prescott). Здесь, опять же, мы рассмотрим три случая.
1. Выполнение одного однопоточного приложения.
Чаще всего никакого прироста производительности не произойдет. В некоторых случаях производительность может даже понизиться, в некоторых — чуть повыситься.
2. Выполнение одного многопоточного приложения.
Практически все современные приложения по работе с мультимедиа-информацией являются многопоточными (к примеру, Adobe After Effects 5.5, Adobe Photoshop 7.0.1, DivX 5.01 и выше и так далее). Они демонстрируют прирост производительности при включении Hyper-Threading на 10-30%.
3. Выполнение нескольких различных приложений одновременно.
При одновременном выполнении нескольких приложений уменьшение суммарного времени выполнения при включении Hyper-Threading достигает 5-30%. Скажем, если вы одновременно запустите кодирование фильма в XMPEG 4.5 и проверку жесткого диска на вирусы, то при использовании технологии Hyper-Threading вы быстрее проверите жесткий диск на вирусы и быстрее закодируете фильм, чем без ее использования.
Наконец, при включении Hyper-Threading пользователь сразу же ощутит, что операционная система стала отзывчивее — она будет быстрее переключаться между приложениями, быстрее реагировать на «зависшие» приложения и так далее. Это связано с тем, что код системы будет выполняться на одном виртуальном процессоре, в то время как «зависшее» приложение — на другом.
Подведем итог. Технология Hyper-Threading позволяет бесплатно получить из одного процессора два — конечно, не физических процессора, но все же. Операционной системе, пользователю и приложениям будет казаться, что в компьютере на самом деле присутствуют два процессора. При этом на современных многопоточных приложениях выигрыш производительности при включении Hyper-Threading может достигать 30%. Пока это, по большей части, относится к приложениям по обработке мультимедиа, но с выходом Half-Life 2 и DooM III технология Hyper-Threading будет полезна и для игр. Не будем забывать, что Hyper-Threading покажет увеличение производительности, если на своем компьютере вы одновременно запускаете две и более программы.


Рекомендуем почитать: