Домой / Разное / Поддержка технологии hyper threading. Технология Hyper-Threading от Intel. Производительности всегда мало

Поддержка технологии hyper threading. Технология Hyper-Threading от Intel. Производительности всегда мало

Пользователи, которые хоть раз занимались настройкой BIOS, уже вероятно замечали, что там встречается непонятный многим параметр Intel Hyper Threading. Многие не знают, что это за технология и с какой целью она используется. Попробуем разобраться, что собой представляет Hyper Threading и как можно включить использование этой поддержки. Также постараемся разобраться, какие преимущества для работы компьютера дает данная настройка. Здесь в принципе нет ничего сложного для понимания.

Intel Hyper Threading: что это такое?
Если не лезть глубоко в дебри компьютерной терминологии, а выражаться простым языком, то данная технология была разработана для того, чтобы увеличить поток команд, обрабатываемых одновременно центральным процессором. Современные процессорные чипы, как правило, используют имеющиеся вычислительные возможности всего на 70%. Остальное остается, так сказать, про запас. Что же касается обработки потока данных, то в большинстве случаев используется всего один поток, несмотря на то, что в системе применяется многоядерный процессор.

Основные принципы работы
Для того чтобы увеличить возможности центрального процессора, была разработана специальная технология Hyper Threading. Данная технология позволяет легко разбивать один поток команд на два. Также существует возможность добавлять второй поток к уже имеющемуся. Только такой поток является виртуальным и не работает на физическом уровне. Такой подход позволяет существенно увеличить производительность процессора. Вся система, соответственно, начинает работать быстрее. Прирост производительности центрального процессора может достаточно сильно колебаться. Об этом речь еще пойдет отдельно. Однако сами разработчики технологии Hyper Threading утверждают, что до полноценного ядра она не дотягивает. В некоторых случаях использование данной технологии является оправданным на все сто. Если знать суть процессоров Hyper Threading, то результат не заставит долго ждать.

Историческая справка
Окунемся немного в историю данной разработки. Поддержка Hyper Threading впервые появилась только в процессорах Intel Pentium 4. Позже реализация данной технологии была продолжена в серии Intel Core iX (X здесь обозначает серии процессоров). Стоит отметить, что в линейке процессорных чипов Core 2 она по какой-то причине отсутствует. Правда, тогда прирост производительности был довольно слабым: где-то на уровне 15-20%. Это говорило о том, что процессор не обладал необходимой вычислительной мощностью, а созданная технология практически обогнала свое время. Сегодня поддержка технологии Hyper Threading имеется уже практически во всех современных чипах. Для увеличения мощности центрального процессора сам процесс использует всего 5% поверхности кристалла, оставляя при этом место для обработки команд и данных.

Вопрос конфликтов и производительности
Все это конечно хорошо, но при обработке данных в некоторых случаях может наблюдаться замедление работы. Это по большей части связано с так называемым модулем предсказания ветвления и недостаточным объемом кэша, когда осуществляется его постоянная перезагрузка. Если же говорить об основном модуле, то в данном случае ситуация складывается так, что в некоторых случаях первый поток может потребовать данные из второго, которые могут в этот момент оказаться не обработаны или находятся в очереди на обработку. Также не менее распространенными являются ситуации, когда ядро центрального процессора имеет очень серьезную нагрузку, а основной модуль несмотря на это, продолжает посылать не него данные. Некоторые программы и приложения, например, ресурсоемкие онлайн-игры, могут серьезно притормаживать только по тому, что в них отсутствует оптимизация под применение технологии Hyper Threading. Что же получается с играми? Пользовательская компьютерная система со своей стороны пытается оптимизировать потоки данных из приложения на сервере. Проблема в том, что игра не умеет самостоятельно распределять потоки данных, сваливая все в одну кучу. По большому счету, она может быть просто не рассчитана на это. Иногда в двухядерных процессорах рост производительности получается существенно выше, чем в 4-ядерных. Просто у последних не хватает вычислительной мощности.

Как включить Hyper Threading в BIOS?
Мы уже немного разобрались с тем, что собой представляет технология Hyper Threading, и познакомились с историей ее развития. Мы вплотную подобрались к пониманию того, что собой представляет технология Hyper Threading. Как активировать данную технологию для использования в работе процессора? Здесь все делается достаточно просто. Необходимо использовать подсистему управления BIOS. Вход в подсистему осуществляется при использовании клавиш Del, F1, F2, F3, F8, F12, F2+Del и т.д. Если вы используете ноутбук Sony Vaio, то для них предусмотрен специфичный вход при использовании специализированной клавиши ASSIST. В настройках BIOS, если используемый вами процессор поддерживает технологию Hyper Threading, должна иметься специальная строка настройка. В большинстве случаев она выглядит как Hyper Threading Technology, а иногда – как Function. В зависимости от разработчика подсистемы и версии BIOS, настройка данного параметра может содержаться либо в главном меню, либо в расширенных настройках. Чтобы задействовать данную технологию, необходимо войти в меню параметров и установить значение на Enabled. После этого необходимо сохранить выполненные изменения и осуществить перезагрузку системы.

Чем полезна технология Hyper Threading?
В заключение хотелось бы говорить о преимуществах, которые дает использование технологии Hyper Threading. Для чего все это нужно? Зачем необходимо увеличить мощность процессора при обработке информации? Тем пользователям, которые работают с ресурсоемкими приложениями и программами, ничего объяснять не нужно. Многие наверняка знают, что графические, математические, проектировочные пакеты программ в процессе работы требуют очень много системных ресурсов. Из-за этого вся система нагружается настолько, что начинает жутко тормозить. Чтобы этого не происходило, рекомендуется активировать поддержку Hyper Threading.

Многие процессоры Intel включают модули с поддержкой Hyper-Threading Technology, которая, в соответствии с идеей разработчиков, должна способствовать увеличению производительности микросхемы и ускорению работы ПК в целом. Какова специфика данного решения от американской корпорации? Каким образом можно использовать преимущества Hyper-Threading?

Основные сведения о технологии

Рассмотрим ключевые сведения о Hyper-Threading. Что это за технология? Ее разработала компания Intel и впервые представила общественности в 2001 году. Целью ее создания было увеличение производительности серверов. Основной принцип, реализованный в Hyper-Threading — распределение процессорных вычислений на несколько потоков. Причем это возможно, даже если на соответствующего типа микросхеме установлено только одно ядро (в свою очередь, если их 2 и более, и потоки в процессоре уже распределены — технология удачно дополняет этот механизм).

Обеспечение работы главной микросхемы ПК в рамках нескольких потоков осуществляется за счет создания копий архитектурных состояний в ходе вычислений. При этом задействуется один и тот же набор ресурсов на микросхеме. Если приложение использует соответствущую возможность, то практически значимые операции осуществляются намного быстрее. Важно также, чтобы технологию, о которой идет речь, поддерживала система ввода-вывода компьютера — BIOS.

Включение Hyper-Threading

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

Необходимо войти в главный интерфейс BIOS. Для этого в самом начале загрузки компьютера нужно нажать DEL, иногда — F2, F10, реже — иные клавиши, но нужная всегда появляется в одной из строчек текста, отображаемых на экране сразу после включения ПК. В интерфейсе BIOS нужно найти пункт Hyper-Threading: в поддерживающих его версиях системы ввода-вывода он обычно расположен на видном месте. Выбрав соответствующую опцию, следует нажать Enter и активировать ее, отметив как Enabled. Если данный режим уже задан, то значит Hyper-Threading Technology работает. Можно задействовать все ее преимущества. Активировав технологию в настройках, следует сохранить все записи в BIOS, выбрав пункт Save and Exit Setup. После этого компьютер перезагрузится в режиме, когда процессор работает с поддержкой Hyper-Theading. Схожим образом осуществляется отключение Hyper-Threading. Для этого нужно выбрать в соответствующем пункте другую опцию - Disabled и сохранить настройки.

Изучив, как включить Hyper-Threading и дезактивировать данную технологию, рассмотрим ее особенности подробнее.

Процессоры с поддержкой Hyper Threading

Первый процессор, на котором была реализована рассматриваемая концепция компании, согласно некоторым данным — Intel Xeon MP, также известный как Foster MP. Данная микросхема в ряде архитектурных компонентов схожа с Pentium 4, на котором также впоследствии была реализована технология, о которой идет речь. Впоследствии функция многопоточных вычислений была внедрена на серверных процессорах Xeon с ядром Prestonia.

Если говорить о текущей распространенности Hyper-Threading — какие «процы» поддерживают ее? В числе самых популярных микросхем данного типа — те, что относятся к семействам Core и Xeon. Также есть сведения о том, что схожие алгоритмы внедрены в процессорах типа Itanium и Atom.

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

История разработки

Как мы отметили выше, компания Intel показала концепцию, о которой идет речь, общественности в 2001 году. Но первые шаги в создании технологии были сделаны еще в начале 90-х. Инженерами американской компании было замечено, что ресурсы процессоров ПК при выполнении ряда операций задействуются не полностью.

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

Однако большинство IT-специалистов сходилось во мнении, что пусть и не 70% мощностей процессора простаивает, но весьма значительный их объем.

Главная задача разработчиков

Компания Intel решила исправить это положение дел за счет качественно нового подхода к обеспечению эффективности работы главных микросхем ПК. Было предложено создать технологию, которая бы способствовала более активному использованию возможностей процессоров. В 1996 году специалисты Intel начали ее практическую разработку.

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

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

Аспекты совместимости с технологией

Насколько качественно реализована поддержка технологии Hyper-Threading в операционных системах? Можно отметить, что если речь идет о современных версиях Windows, то никаких проблем с тем, чтобы пользователь полноценно задействовал преимущества Intel Hyper-Threading Technology, не возникнет. Разумеется, очень важно также и то, чтобы технологию поддерживала система ввода-вывода — об этом мы сказали выше.

Программные и аппаратные факторы

Касательно старых версий ОС — Windows 98, NT и относительно устаревшей XP, необходимое условие совместимости с Hyper-Threading — поддержка ACPI. Если в ОС она не реализована, то не все потоки вычислений, которые образованы соответствующими модулями, будут распознаны компьютером. Отметим, что Windows XP в целом обеспечивает задействование преимуществ рассматриваемой технологии. Также крайне желательно, чтобы алгоритмы многопоточности были реализованы и в используемых владельцем ПК приложениях.

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

Критерии ускорения

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

Итак, базовые условия для того, чтобы технология была успешно задействована:

Поддержка Hyper-Threading системой ввода-вывода;

Совместимость материнской платы с процессором соответствующего типа;

Поддержка технологии операционной системой и конкретным приложением, работающим в ней.

Если по первым двум пунктам особых проблем не должно появиться, то в аспекте совместимости программ с Hyper-Threading все же могут возникать некоторые накладки. Но можно отметить, что если приложение поддерживает, к примеру, работу с двухъядерными процессорами, то оно будет совместимо, практически гарантированно, с технологией от Intel.

По крайней мере есть исследования, подтверждающие рост производительности программ, адаптированных к двухъядерным микросхемам, примерно на 15-18%, если в процессоре работают модули Intel Hyper Threading. Как отключить их — мы уже знаем (на случай, если у пользователя возникнут сомнения в целесообразности задействования технологии). Но ощутимых поводов для их появления, вероятно, очень немного.

Практическая полезность Hyper-Threading

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

Аппаратная обработка данных

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

Можно отметить, что среди 4 те микросхемы, которые были оснащены модулями поддержки рассматриваемой технологии, работали существенно эффективнее первых модификаций. Во многом это выражалось в способности ПК функционировать в режиме реальной многозадачности — когда открыто несколько разнотипных приложений Windows, и крайне нежелательно, чтобы в силу активизации потребления ресурсов системы одним из них снижалась скорость работы других.

Одновременное решение разных задач

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

Аналогичные разработки

Технология Hyper-Threading — не единственная, которая создана с целью повышения производительности ПК за счет многопоточных вычислений. У нее есть аналоги.

Например, в процессорах POWER5, выпущенных компанией IBM, также реализована поддержка многопоточности. То есть каждое из (всего на нем установлено 2 соответствующих элемента), может выполнять задачи в рамках 2 потоков. Тем самым микросхема обрабатывает 4 потока вычислений одновременно.

В компании AMD также есть отличные результаты работы в области концепций многопоточности. Так, известно, что в архитектуре Bulldozer задействуются алгоритмы, схожие с Hyper-Threading. Особенность решения от AMD в том, что каждый из потоков обрабатывает отдельные блоки процессора. При второго уровня остается общим. Схожие концепции реализованы и в разработанной AMD архитектуре Bobcat, которая адаптирована для ноутбуков и небольших ПК.

Разумеется, прямыми аналогами концепции от AMD, IBM и Intel считать можно очень условно. Равно как и подходы к конструированию архитектуры процессоров в целом. Но принципы, реализованные в соответствующих технологиях, можно считать вполне схожими, а цели, которые поставлены разработчиками в аспекте повышения эффективности функционирования микросхем — очень близкими по сути, если не идентичными.

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

Hyper-Threading (hyper threading, ‘хайпер тридинг’ , гипер поточность — рус.) — технология разработанная компанией Intel , позволяющая ядру процессора исполнять больше потоков данных чем один (обычно два). Так как было выяснено, что обычный процессор в большинстве задач использует не более 70% всей вычислительной мощности, было решено использовать технологию, позволяющую при простое определённых вычислительных блоков — нагрузить их работой с другим потоком. Это позволяет увеличить производительность ядра от 10 до 80% в зависимости от задачи.

Представление, как Hyper-Threading работает .

Допустим процессор выполняет простые вычисления и при этом простаивает блок инструкций и SIMD расширения.

Модуль адресации это обнаруживает и посылает туда данные для последующего вычисления. Если данные специфичные, то данные блоки будут выполнять их медленней, однако простаивать данные не будут. Либо они предварительно их обработают, для дальнейшей быстрой обработки соответствующим блоком. Это и даёт дополнительный выигрыш в производительности.

Естественно, виртуальный поток никак не дотягивает до полноценного ядра, но это позволяет добиться практически 100% эффективности вычислительной мощности, загрузив практически весь процессор работой, не давая ему простаивать. При всём при этом, для реализации технологии HT требуется всего около 5% дополнительного места на кристалле, а производительность иногда может добавиться на 50% . В эту дополнительную область входят дополнительные блоки регистров и предсказания ветвлений, которые потоково вычисляют, где можно использоваться вычислительные мощности в данный момент и отправляют туда данные из дополнительного блока адресации.

Впервые, технология появилась на процессорах Pentium 4 , но большого прироста производительности не получилось, так как сам процессор не обладал высокой вычислительной мощностью. Прирост составлял в лучшем случае 15-20% , да и во многих задачах процессор работал значительно медленнее чем без HT .

Замедление работы процессора из-за технологии Hyper Threading , происходит если:

  • Недостаточно кэша для всех данный и он циклически перезагружается, тормозя работу процессора.
  • Данные не могут быть правильно обработаны блоком предсказания ветвления. Происходит в основном из-за отсутствия оптимизации под определённое ПО или поддержки со стороны операционной системы.
  • Также может происходить из-за зависимости данных , когда к примеру, первый поток требует немедленных данных со второго, а они ещё не готовы, либо стоят на очереди в другой поток. Либо циклическим данным требуются определённые блоки для быстрой обработки, а они нагружаются другими данными. Вариаций зависимости данных может быть много.
  • Если ядро и так сильно нагружено, а «недостаточно умный» модуль предсказания ветвлений всё равно посылает данные, которые тормозят работу процессора (актуально для Pentium 4 ).

После Pentium 4 , Intel начала использовать технологию только начиная с Core i7 первого поколения, пропустив серию 2 .

Вычислительной мощности процессоров стало достаточно для полноценной реализации гиперпоточности без особого вреда, даже для не оптимизированных приложений. Позже, Hyper-Threading появилась на процессорах среднего класса и даже бюджетного и портативного. Используется на всех сериях Core i (i3 ; i5 ; i7 ) и на мобильных процессорах Atom (не на всех). Что интересно, двухъядерные процессоры с HT , получают больший выигрыш в производительности, чем четырёх ядерные от использования Hyper-Threading , становясь на 75% полноценными четырёх ядерными.

Где полезна технология HyperThreading?

Полезна она будет для использования вкупе с профессиональными, графическими, аналитическими, математическими и научными программами, видео и аудио редакторами, архиваторами (Photoshop, Corel Draw, Maya, 3D’s Max, WinRar, Sony Vegas & etc). Всем программам в которых используется большое количество вычислений, HT будет однозначно полезна полезна. Благо, в 90% случаев, такие программы неплохо оптимизированы для её использования.

HyperThreading незаменим для серверных систем. Собственно для этой ниши он частично и разрабатывался. Благодаря HT , можно значительно увеличить отдачу от работы процессора при наличии большого числа задач. Каждый поток, будет разгружен вполовину, что благотворно сказывается на адресации данных и предсказании ветвлений.

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

На материнских платах, которые поддерживают HT , в всегда можно отключить технологию гиперпоточности.

20 января 2015 в 19:43

Еще раз о Hyper-Threading

  • Тестирование IT-систем ,
  • Программирование

Было время, когда понадобилось оценить производительность памяти в контексте технологии Hyper-threading . Мы пришли к выводу, что ее влияние не всегда позитивно. Когда появился квант свободного времени, возникло желание продолжить исследования и рассмотреть происходящие процессы с точностью до машинных тактов и битов, используя программное обеспечение собственной разработки.

Исследуемая платформа

Объект экспериментов – ноутбук ASUS N750JK c процессором Intel Core i7-4700HQ. Тактовая частота 2.4GHz, повышаемая в режиме Intel Turbo Boost до 3.4GHz. Установлено 16 гигабайт оперативной памяти DDR3-1600 (PC3-12800), работающей в двухканальном режиме. Операционная система – Microsoft Windows 8.1 64 бита.

Рис.1 Конфигурация исследуемой платформы.

Процессор исследуемой платформы содержит 4 ядра, что при включении технологии Hyper-Threading обеспечивает аппаратную поддержку 8 потоков или логических процессоров. Эту информацию Firmware платформы передает операционной системе посредством ACPI-таблицы MADT (Multiple APIC Description Table). Поскольку платформа содержит только один контроллер оперативной памяти, таблица SRAT (System Resource Affinity Table), декларирующая приближенность процессорных ядер к контроллерам памяти, отсутствует. Очевидно, исследуемый ноутбук не является NUMA-платформой , но операционная система, в целях унификации, рассматривает его как NUMA-систему с одним доменом, о чем говорит строка NUMA Nodes = 1. Факт, принципиальный для наших экспериментов – кэш память данных первого уровня имеет размер 32 килобайта на каждое из четырех ядер. Два логических процессора, разделяющие одно ядро, используют кэш-память первого и второго уровней совместно.

Исследуемая операция

Исследовать будем зависимость скорости чтения блока данных от его размера. Для этого выберем наиболее производительный метод, а именно чтение 256-битных операндов посредством AVX-инструкции VMOVAPD. На графиках по оси X отложен размер блока, по оси Y – скорость чтения. В окрестности точки X, соответствующей размеру кэш-памяти первого уровня, ожидаем увидеть точку перегиба, поскольку производительность должна упасть после того, как обрабатываемый блок выйдет за пределы кэш-памяти. В нашем тесте, в случае многопоточной обработки, каждый из 16 инициируемых потоков, работает с отдельным диапазоном адресов. Для управления технологией Hyper-Threading в рамках приложения, в каждом из потоков используется API-функция SetThreadAffinityMask, задающая маску, в которой каждому логическому процессору соответствует один бит. Единичное значение бита разрешает использовать заданный процессор заданным потоком, нулевое значение – запрещает. Для 8 логических процессоров исследуемой платформы, маска 11111111b разрешает использовать все процессоры (Hyper-Threading включен), маска 01010101b разрешает использовать по одному логическому процессору в каждом ядре (Hyper-Threading выключен).

На графиках используются следующие сокращения:

MBPS (Megabytes per Second) скорость чтения блока в мегабайтах в секунду ;

CPI (Clocks per Instruction) количество тактов на инструкцию ;

TSC (Time Stamp Counter) счетчик процессорных тактов .

Примечание.Тактовая частота регистра TSC может не соответствовать тактовой частоте процессора при работе в режиме Turbo Boost. Это необходимо учитывать при интерпретации результатов.

В правой части графиков визуализируется шестнадцатеричный дамп инструкций, составляющих тело цикла целевой операции, выполняемой в каждом из программных потоков, или первые 128 байт этого кода.

Опыт №1. Один поток



Рис.2 Чтение одним потоком

Максимальная скорость 213563 мегабайт в секунду. Точка перегиба имеет место при размере блока около 32 килобайт.

Опыт №2. 16 потоков на 4 процессора, Hyper-Threading выключен



Рис.3 Чтение шестнадцатью потоками. Количество используемых логических процессоров равно четырем

Hyper-Threading выключен. Максимальная скорость 797598 мегабайт в секунду. Точка перегиба имеет место при размере блока около 32 килобайт. Как и ожидалось, по сравнению с чтением одним потоком, скорость выросла приблизительно в 4 раза, по количеству работающих ядер.

Опыт №3. 16 потоков на 8 процессоров, Hyper-Threading включен



Рис.4 Чтение шестнадцатью потоками. Количество используемых логических процессоров равно восьми

Hyper-Threading включен. Максимальная скорость 800722 мегабайт в секунду, в результате включения Hyper-Threading почти не выросла. Большой минус – точка перегиба имеет место при размере блока около 16 килобайт. Включение Hyper-Threading немного увеличило максимальную скорость, но падение скорости теперь наступает при вдвое меньшем размере блока – около 16 килобайт, поэтому существенно упала средняя скорость. Это не удивительно, каждое ядро имеет собственную кэш-память первого уровня, в то время, как логические процессоры одного ядра, используют ее совместно.

Выводы

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

Мы писали, что использование однопроцессорных Xeon-систем лишено всякого смысла, поскольку при более высокой цене их производительность будет такой же, как и у Pentium 4 той же частоты. Теперь же, после более тщательного изучения, в это утверждение наверняка придется внести небольшую поправку. Технология Hyper-Threading, реализованная в Intel Xeon с ядром Prestonia, действительно работает и дает вполне ощутимый эффект. Хотя и вопросов при ее использовании тоже возникает немало…

Даешь производительность

"Быстрее, еще быстрее…". Гонка за производительностью длится уже не первый год, и порой даже трудно сказать, какой из компонентов компьютера ускоряется быстрее. Для этого изобретаются все новые и новые способы, и чем дальше, тем больше квалифицированного труда и высококачественных мозгов вкладывается в этот лавинообразный процесс.

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

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

Итак, какими же способами добиться увеличения их быстродействия?

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

Наращивание ресурсов процессора - например, наращивание объема кэша, добавление новых блоков (Execution Units). Все это влечет за собой рост числа транзисторов, усложнение процессора, увеличение площади кристалла, а следовательно, стоимости.

Кроме того, предыдущие два способа дают, как правило, отнюдь не линейное повышение производительности. Это хорошо известно на примере Pentium 4: ошибки в предсказании ветвлений и прерывания вызывают сброс длинного конвейера, что сильно сказывается на общем быстродействии.

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

Кроме "чистой" многопроцессорности, существует несколько "промежуточных" вариантов, позволяющих ускорить выполнение приложений:

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

Time-Slice Multithreading . Процессор переключается между программными потоками через фиксированные промежутки времени. Накладные расходы порой получаются довольно внушительными, особенно если какой-либо процесс находится в ожидании.

Switch-on-Event Multithreading . Переключение задач при возникновении длительных пауз, например "непопаданий в кэш" (cache misses), большое число которых характерно для серверных приложений. В этом случае процесс, ожидающий загрузки данных из сравнительно медленной памяти в кэш, приостанавливается, высвобождая ресурсы CPU для других процессов. Однако Switch-on-Event Multithreading, как и Time-Slice Multithreading, не всегда позволяет достичь оптимального использования ресурсов процессора, - в частности из-за ошибок в предсказании ветвлений, зависимости инструкций и т. д.

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

Как работает Hyper-Threading

Как известно, нынешняя "парадигма компьютинга" предполагает многопоточные вычисления. Это касается не только серверов, где такое понятие существует изначально, но и рабочих станций и настольных систем. Потоки (threads) могут относиться как к одному, так и к разным приложениям, но почти всегда активных потоков больше, чем один (чтобы убедиться в этом, достаточно в Windows 2000/XP открыть Task Manager и включить отображение числа потоков). Вместе с тем обычный процессор может в один момент времени выполнять только один из потоков и вынужден постоянно переключаться между ними.

Впервые технология Hyper-Threading была реализована в процессоре Intel Xeon MP (Foster MP), на котором и шла ее "обкатка". Напомним, что Xeon MP, официально представленный на IDF Spring 2002, использует родственное Pentium 4 Willamette ядро, содержит 256 KB L2-кэша и 512 KB/1 MB L3-кэша и поддерживает работу в 4-процессорных конфигурациях. Также поддержка Hyper-Threading наличествует в процессоре для рабочих станций - Intel Xeon (ядро Prestonia, 512 KB L2-кэша), вышедшем на рынок несколько раньше, чем Xeon MP. С двухпроцессорными конфигурациями на Intel Xeon наши читатели уже знакомы , поэтому мы рассмотрим возможности Hyper-Threading именно на примере этих CPU - как теоретически, так и практически. Как бы там ни было, а "простой" Xeon - вещь более приземленная и удобоваримая, чем Xeon MP в 4-процессорных системах…

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

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

Для каждого из двух LP хранится так называемый Architecture State (AS), что включает в себя состояние регистров различного типа - общего назначения, управляющих, APIC и служебных. У каждого LP есть свои APIC (контроллер прерываний) и набор регистров, для корректной работы с которыми вводится понятие Register Alias Table (RAT), отслеживающей соответствие между восемью регистрами общего назначения IA-32 и 128 регистрами физического CPU (по одной RAT на каждый LP).

При работе двух потоков поддерживаются два соответствующих набора Next Instruction Pointers. Большая часть инструкций берется из Trace Cache (TC), где они хранятся в декодированном виде, и доступ к TC два активных LP получают поочередно, через такт. В то же время, когда активен только один LP, он получает монопольный доступ к TC без чередования по тактам. Аналогичным же образом происходит и доступ к Microcode ROM. Блоки ITLB (Instruction Translation Look-aside Buffer), задействующиеся при отсутствии необходимых инструкций в кэше команд, дублируются и доставляют команды каждый для своего потока. Блок декодирования инструкций IA-32 Instruction Decode является разделяемым и в случае, когда требуется декодирование инструкций для обоих потоков, обслуживает их поочередно (опять-таки через такт). Блоки Uop Queue и Allocator разделяются надвое, отводя по половине элементов для каждого LP. Schedulers числом 5 штук обрабатывают очереди декодированных команд (Uops) несмотря на принадлежность к LP0/LP1 и направляют команды на выполнение нужным Execution Units - в зависимости от готовности к выполнению первых и доступности вторых. Кэши всех уровней (L1/L2 для Xeon, а также L3 для Xeon MP) являются полностью разделяемыми между двумя LP, однако для обеспечения целостности данных записи в DTLB (Data Translation Look-aside Buffer) снабжаются дескрипторами в виде ID логических процессоров.

Таким образом, инструкции обоих логических CPU могут выполняться одновременно на ресурсах одного физического процессора, которые подразделяются на четыре класса:

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

При этом большинство приложений, получающих ускорение в многопроцессорных системах, могут также ускоряться и на CPU со включенным Hyper-Threading без каких-либо модификаций. Но существуют и проблемы: например, если один процесс находится в цикле ожидания, он может занять все ресурсы физического CPU, препятствуя работе второго LP. Таким образом, производительность при использовании Hyper-Threading может иногда и падать (до 20%). Для предотвращения этого Intel рекомендует вместо пустых циклов ожидания использовать инструкцию PAUSE (появилась в IA-32 начиная с Pentium 4). Также ведется достаточно серьезная работа по автоматической и полуавтоматической оптимизации кода при компиляции - например, в этом отношении ощутимо продвинулись компиляторы серии Intel OpenMP C++/Fortran Compilers ().

Еще одной целью первой реализации Hyper-Threading, по словам Intel, было сведение к минимуму роста числа транзисторов, площади кристалла и энергопотребления при заметном приросте быстродействия. Первая часть этого обязательства уже выполнена: добавление в Xeon/Xeon MP поддержки Hyper-Threading увеличило площадь кристалла и энергопотребление менее чем на 5%. Что же получилось со второй частью (производительностью), нам еще предстоит проверить.

Практическая часть

По вполне понятным причинам мы не проводили тестов 4-процессорных серверных систем на Xeon MP со включенным Hyper-Threading. Во-первых, это достаточно трудоемко. А во-вторых, решись мы на такой подвиг - все равно сейчас, менее чем через месяц после официального объявления, абсолютно нереально заполучить это дорогостоящее оборудование. Поэтому решено было ограничиться той же системой с двумя Intel Xeon 2.2 GHz, на которой проводилось первое тестирование этих процессоров (см. ссылку в начале статьи). Система основывалась на материнской плате Supermicro P4DC6+ (чипсет Intel i860), содержала 512 MB RDRAM-памяти, видеокарту на чипе GeForce3 (64 MB DDR, драйверы Detonator 21.85), жесткий диск Western Digital WD300BB и 6X DVD-ROM; в качестве ОС использовалась Windows 2000 Professional SP2.

Для начала несколько общих впечатлений. При установке одного Xeon с ядром Prestonia на старте системы BIOS выводит сообщение о наличии двух CPU; если же установлены два процессора, пользователь видит сообщение о четырех CPU. Операционная система нормально распознает "оба процессора", но только если выполнены два условия.

Во-первых, в CMOS Setup у последних версий BIOS плат Supermicro P4DCxx появился пункт Enable Hyper-Threading, без разрешения которого ОС распознает только физический процессор(-ы). Во-вторых, для сообщения ОС о наличии дополнительных логических процессоров используются возможности ACPI. Поэтому для задействования Hyper-Threading в CMOS Setup должна быть включена опция ACPI, и для самой ОС также должен быть установлен HAL (Hardware Abstraction Layer) с поддержкой ACPI. Благо, в Windows 2000 смена HAL со Standard PC (или MPS Uni-/Multiprocessor PC) на ACPI Uni-/Multiprocessor PC производится легко - заменой "драйвера компьютера" в менеджере устройств. В то же время для Windows XP единственным законным способом перехода на ACPI HAL является переустановка системы поверх существующей инсталляции.

Но вот все приготовления сделаны, и наша Windows 2000 Pro уже свято верит в то, что работает на двухпроцессорной системе (хотя на самом деле процессор установлен только один). Теперь по традиции пора определиться с целями тестирования. Итак, мы хотим:

  • Оценить влияние Hyper-Threading на производительность приложений различного класса.
  • Сравнить этот эффект с эффектом от установки второго процессора.
  • Проверить, насколько "честно" ресурсы отдаются активному логическому процессору, когда второй LP бездействует.

Для оценки производительности мы взяли уже знакомый читателям набор приложений, использовавшийся в тестированиях workstation-систем. Начнем, пожалуй, с конца и проверим "равноправность" логических CPU. Все предельно просто: сначала мы проводим тесты на одном процессоре с отключенным Hyper-Threading, а затем повторяем процесс, включив Hyper-Threading и используя только один из двух логических CPU (с помощью Task Manager). Поскольку в данном случае нас интересуют лишь относительные значения, результаты всех тестов приведены к виду "больше - лучше" и нормализованы (за единицу взяты показатели однопроцессорной системы без Hyper-Threading).

Что ж, как можно видеть, обещания Intel здесь выполнены: при наличии только одного активного потока производительность каждого из двух LP в точности равна быстродействию физического CPU без Hyper-Threading. Бездействующий LP (причем как LP0, так и LP1) действительно приостанавливается, а разделяемые ресурсы, насколько об этом можно судить по полученным результатам, полностью передаются в пользование активному LP.

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

Рендеринг . Результаты четырех тестов в пакетах 3D-моделирования 3D Studio MAX 4.26, Lightwave 7b и A|W Maya 4.0.1 объединены в одну диаграмму ввиду их похожести.

Во всех четырех случаях (для Lightwave - две различные сцены) загрузка CPU при наличии одного процессора с выключенным Hyper-Threading практически постоянно держится на уровне 100%. Тем не менее при включении Hyper-Threading расчет сцен ускоряется (в результате чего у нас даже родилась шутка о загрузке CPU более 100%). В трех тестах виден прирост производительности от Hyper-Threading 14--18% - с одной стороны, негусто по сравнению со вторым CPU, но с другой - весьма неплохо, учитывая "бесплатность" этого эффекта. В одном из двух тестов с Lightwave прирост быстродействия практически нулевой (видимо, сказывается специфика этого полного странностей приложения). Но отрицательного результата нет нигде, а заметный прирост в трех других случаях обнадеживает. И это при том, что параллельные процессы рендеринга делают сходную работу и наверняка не лучшим образом могут одновременно задействовать ресурсы физического CPU.

Photoshop и MP3-кодирование . Кодек GOGO-no-coda 2.39c один из немногих поддерживает SMP, и на нем заметен 34%-ный прирост быстродействия от двухпроцессорности. Вместе с тем эффект от Hyper-Threading в данном случае нулевой (разницу в 3% мы существенной не считаем). А вот в тесте с Photoshop 6.0.1 (скрипт, состоящий из большого набора команд и фильтров) видно замедление при включении Hyper-Threading, хотя второй физический CPU добавляет в этом случае 12% производительности. Вот, собственно, первый случай, когда Hyper-Threading вызывает падение быстродействия…

Профессиональный OpenGL . То, что SPEC ViewPerf и многие другие OpenGL-приложения часто замедляются в SMP-системах, известно давно.

OpenGL и двухпроцессорность: почему они не дружат

Много раз в статьях мы обращали внимание читателей на то, что двухпроцессорные платформы при выполнении профессиональных OpenGL-тестов очень редко показывают хоть сколько-нибудь существенное преимущество по сравнению с однопроцессорными. И мало того, нередки случаи, когда установка второго процессора наоборот, ухудшает быстродействие системы при отрисовке динамичных трехмерных сцен.

Естественно, замечали эту странность не только мы. Некоторые тестеры просто молча обходили этот факт - например, приводя результаты сравнения по тестам SPEC ViewPerf только для двухпроцессорных конфигураций, избегая таким образом объяснений "почему двухпроцессорная система медленнее?". Другие же строили все возможные фантастические предположения о когерентности кэшей, необходимости ее поддерживать, возникающих из-за этого накладных расходах и т.п. И почему-то никого не удивляло, что, например, следить за когерентностью процессорам почему-то приспичило именно при оконном OpenGL-рендеринге (по своей "вычислительной" сути мало чем отличающемся от любой другой расчетной задачи).

На самом же деле объяснение, на наш взгляд, намного более простое. Как известно, приложение может выполняться на двух процессорах быстрее, чем на одном, если:

  • есть более два или больше одновременно выполняющихся программных потока (threads);
  • эти потоки не мешают выполнению один другого - например, не конкурируют за общий ресурс вроде внешнего накопителя или сетевого интерфейса.

Теперь же упрощенно рассмотрим как выглядит OpenGL-рендеринг, выполняемый двумя потоками. Если приложение, "видя" два процессора, создает два потока OpenGL-рендеринга, то для каждого из них, согласно правилам OpenGL, создается свой gl-контекст. Соответственно каждый поток выполняет рендеринг в свой gl-контекст. Но проблема в том, что для окна, в которое происходит вывод изображения, только один gl-контекст может быть текущим в каждый момент. Соответственно потоки в этом случае просто "по очереди" выводят сгенерированное изображение в окно, делая попеременно свой контекст текущим. Нужно ли говорить, что такое "чередование контекстов" может очень дорого обходиться в смысле накладных расходов?

Также для примера приведем графики использования двух CPU в нескольких приложениях, отображающих OpenGL-сцены. Все измерения проведены на платформе следующей конфигурации:

  • один или два Intel Xeon 2.2 GHz (Hyper-Threading отключен);
  • 512 MB RDRAM-памяти;
  • материнская плата Supermicro P4DC6+;
  • видеокарта ASUS V8200 Deluxe (NVidia GeForce3, 64 MB DDR SDRAM, драйверы Detonator 21.85);
  • Windows 2000 Professional SP2;
  • видеорежим 1280x1024x32 bpp, 85 Hz, Vsync отключен.

Синим и красным изображены графики загруженности CPU 0 и CPU 1 соответственно. Линия посередине - итоговый график CPU Usage. Три графика соответствуют двум сценам из 3D Studio MAX 4.26 и части теста SPEC ViewPerf (AWadvs-04).


CPU Usage: анимация 3D Studio MAX 4.26 - Anibal (with manipulators).max


CPU Usage: анимация 3D Studio MAX 4.26 - Rabbit.max


CPU Usage: SPEC ViewPerf 6.1.2 - AWadvs-04

Такая же картина повторяется еще в массе других приложений, задействующих OpenGL. Два процессора совершенно не утруждаются работой, и общий CPU Usage оказывается на уровне 50-60%. В то же время для однопроцессорной системы во всех этих случаях CPU Usage уверенно держится на уровне 100%.

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

Мы можем констатировать, что при двух логических CPU падение быстродействия еще более значительно, что вполне объяснимо: два логических процессора мешают друг другу точно так же, как и два физических. Но их общая производительность, естественно, оказывается при этом ниже, поэтому при включении Hyper-Threading она снижается еще больше, чем просто при работе двух физических CPU. Результат предсказуемый и вывод простой: Hyper-Threading, как и "настоящий" SMP, для OpenGL бывает противопоказан.

CAD-приложения . Предыдущий вывод подтверждается и результатами двух CAD-тестов - SPECapc for SolidEdge V10 и SPECapc for SolidWorks. Показатели графических составляющих этих тестов для Hyper-Threading похожи (хотя в случае SMP-системы для SolidEdge V10 результат немного выше). А вот результаты нагружающих процессор тестов CPU_Score заставляют задуматься: 5--10%-ный прирост от SMP и 14--19%-ное замедление от Hyper-Threading.

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

Подведение итогов, или "Внимание, правильный вопрос"

Hyper-Threading работает, в этом никаких сомнений не остается. Безусловно, технология не универсальна: есть приложения, которым "плохеет" от Hyper-Threading, и в случае распространения этой технологии их желательно будет модифицировать. Но разве не то же самое произошло в свое время с MMX и SSE и продолжает происходить с SSE2?..

Однако здесь встает вопрос о применимости этой технологии к нашим реалиям. Вариант однопроцессорной системы на Xeon с Hyper-Threading мы отбросим сразу (или допустим только как временный, в ожидании покупки второго процессора): даже 30%-ный прирост производительности никак не оправдывает цену - тогда уж лучше приобрести обычный Pentium 4. Остается число CPU от двух и выше.

А теперь давайте вообразим, что мы покупаем двухпроцессорную систему на Xeon (скажем, с Windows 2000/XP Professional). Два CPU установлены, Hyper-Threading включен, BIOS находит целых четыре логических процессора, сейчас ух как взлетим… Стоп. А вот сколько процессоров увидит наша операционная система? Правильно, два. Всего два, поскольку на большее число она просто не рассчитана. Это будут два физических процессора, т. е. работать все будет точно так же, как и при отключенном Hyper-Threading, - не медленнее (два "дополнительных" логических CPU просто остановятся), но и не быстрее (проверено дополнительными тестами, результаты не приводим по причине их полной очевидности). М-да, приятного мало…

Что же остается? Ну не ставить же Advanced Server или.NET Server на нашу workstation в самом деле? Нет, система-то установится, опознает все четыре логических процессора и будет функционировать. Вот только серверная ОС смотрится на рабочей станции, мягко говоря, немного странно (не говоря уже о финансовых аспектах). Единственный разумный случай - это когда наша двухпроцессорная Xeon-система и будет выполнять роль сервера (по крайней мере, некоторые сборщики ничтоже сумняшеся уже наладили выпуск серверов на workstation-процессорах Xeon). Но вот для дуальных workstation с соответствующими ОС применимость Hyper-Threading остается под вопросом. Intel сейчас активно выступает за лицензирование ОС по числу не логических, а физических CPU. Дискуссии пока еще идут, и, в общем-то, многое зависит от того, увидим ли мы ОС для рабочих станций с поддержкой четырех процессоров.

Ну а с серверами все выходит достаточно просто. Например, Windows 2000 Advanced Server, установленный на двухпроцессорную Xeon-систему со включенным Hyper-Threading, "увидит" четыре логических процессора и будет преспокойно на ней работать. Для оценки того, что дает Hyper-Threading в серверных системах, мы приводим результаты Intel Microprocessor Software Labs для двухпроцессорных систем на Xeon MP и нескольких серверных приложений Microsoft.

Прибавка производительности 20--30% для двухпроцессорного сервера "задаром" - вещь более чем заманчивая (особенно по сравнению с покупкой "настоящей" 4-процессорной системы).

Вот и выходит, что на текущий момент практическая применимость Hyper-Threading возможна только в серверах. Вопрос же с рабочими станциями зависит от решения с лицензированием ОС. Хотя и еще одно применение Hyper-Threading вполне реально - если и настольные процессоры получат поддержку этой технологии. К примеру (пофантазируем), чем плоха система с Pentium 4 с поддержкой Hyper-Threading, на которую установлена Windows 2000/XP Professional с поддержкой SMP?.. Впрочем, ничего невероятного в этом нет: полные энтузиазма разработчики Intel обещают повсеместное внедрение Hyper-Threading - от серверов до настольных и мобильных систем.