Работоспособность технологии Hyper-Threading в играх. Технология Intel Hyper-Threading — что это и как работает


Компания Intel внедрила в свои процессоры, основанные на микропроцессорной архитектуре Nehalem, много новаторских разработок. Сегодня мы рассмотрим одну из них, а именно Hyper-Threading.

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

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

Будет интересно проверить, насколько эффективна эта технология в современных играх на примере процессора Intel Core i7 i920.

На текущий момент большинство покупателей интересует не дорогая старшая линейка процессоров Intel Core i7 LGA 1366, а более доступные Core i5 и i7 в исполнении LGA 1156. Сегодняшнее тестирование покажет, есть ли польза от поддержки технологии Hyper-Threading двух- и четырехъядерными процессорами Intel.

Подробно ознакомиться с технологией Hyper-Threading можно на официальном сайте Intel .

Тестовая конфигурация

Тесты проводились на следующем стенде:

  • Процессор: Intel Core i7 920 (Bloomfield, D0, L3 8 Мб), 1.18 В, Turbo Boost - on, Hyper Threading - off/on - 2660 @ 4000 МГц
  • Материнская плата: GigaByte GA-EX58-UD5, BIOS F5
  • Видеокарта: Zotac GeForce GTX 260 896 Mбайт (576/1242/2000 МГц) - 2 шт
  • Система охлаждения CPU: Cooler Master V8 (~1100 об/мин)
  • Оперативная память: 2 x 2048 Мбайт DDR3 Corsair TR3X6G1600C7 (Spec: 1528 МГц / 8-8-8-20-1t / 1.5 В) , X.M.P. - off
  • Дисковая подсистема: SATA-II 500 Гбайт, WD 5000KS, 7200 об/мин, 16 Мбайт
  • Блок питания: FSP Epsilon 700 Ватт (штатный вентилятор: 120-мм на вдув)
  • Корпус: открытый тестовый стенд
  • Монитор: 24" BenQ V2400W (Wide LCD, 1920x1200 / 60 Гц)

Программное обеспечение:

  • Операционная система: Windows 7 build 7600 RTM x86
  • Драйвер видеокарты: NVIDIA Display Driver 195.62
  • RivaTuner 2.24c
  • MSI AFTERBURNER 1.4.2

Инструментарий и методика тестирования

Сегодня будет проверена работоспособность Hyper-Threading у двух- и четырехъядерных процессоров. Двухъядерный процессор был получен путем отключения двух ядер у CPU i920 через БИОС материнской платы. Таким же путем был съэмулирован трехъядерный процессор, чтобы получить полную картину производительности двух-, трех- и четырехъядерных процессоров с отключенным Hyper-Threading и двух- и четырехъядерных CPU с включенным Hyper-Threading, в разных играх.

Результаты тестирования на диаграммах представлены в следующей последовательности:

  • 2 ядра, технология Hyper-Threading отключена
  • 2 ядра, технология Hyper-Threading включена
  • 3 ядра, технология Hyper-Threading отключена
  • 4 ядра, технология Hyper-Threading отключена
  • 4 ядра, технология Hyper-Threading включена

Во-первых, такая последовательность, предположительно, должна соответствовать теоретическому распределению производительности. По опыту, технология Hyper-Threading обеспечивает прирост производительности в пределах 30%. Этого явно недостаточно для победы двухъядерного процессора с включенной технологией Hyper-Threading над "честным" трёхядерным, если только не имеется ошибки в реализации программного обеспечения (например, если ядер меньше четырёх, программа работает только на двух ядрах, при этом третье не используется в принципе - в таком варианте виртуальные четыре ядра могут быть быстрее реальных трёх). Мы, однако, не будем полагаться на небрежность и возможные ошибки программистов.

Во-вторых, при таком размещении можно более удобно сравнивать строки, отвечающие на актуальный вопрос: а нужно ли владельцу "игровой" машины активировать технологию Hyper-Threading в своём процессоре? Даёт ли эта технология преимущества именно в играх?

Что касается гипотетического трёхъядерника, то он здесь присутствует скорее ради научного интереса, так как подобного процессора в природе не существует и не ожидается. Однако благодаря наличию этой строки в диаграмме можно судить о том, есть ли смысл в выпуске подобного процессора компанией Intel так же, как это ранее сделала AMD.

Тестирование игровых приложений проводилось в разрешениях 1280х1024, в котором видеокарты выдают максимальный результат, за счет чего легче отследить разницу в производительности процессора, с активированными двумя, тремя, четырьмя ядрами и включенном/выключенным Hyper-Threading (далее кратко - НТ).

В следующих играх использовались средства измерения быстродействия (бенчмарк):

  • Batman: Arkham Asylum
  • Colin McRae: DIRT 2
  • Crysis Warhead (ambush)
  • Far Cry 2 (ranch small)
  • Lost Planet: Colonies (area1)
  • Resident Evil 5 (scene 1)
  • Tom Clancy"s H.A.W.X.
  • S.T.A.L.K.E.R.: Call of Pripyat (SunShafts)
  • Street Fighter 4
  • World in Conflict: Soviet Assault

Игра, в которой производительность замерялась путем загрузки демо сцен:

  • Left 4 Dead 2

В данных играх производительность измерялась с помощью утилиты FRAPS v3.0.3 build 10809:

  • Anno 1404
  • Bionic Commando
  • Borderlands
  • Call of Duty 4: Modern Warfare 2
  • Dragon Age: Origin
  • Fallout 3: Broken Steel
  • Gears of War
  • Grand Theft Auto 4
  • Mass Effect
  • Mirrors Edge
  • Need for Speed: SHIFT
  • Operation Flashpoint: Dragon Rising
  • Overlord 2
  • Prototype
  • Race Driver: GRID
  • Red Faction: Guerrilla
  • Risen
  • Sacred 2: Fallen Angel

Во всех играх замерялись минимальные и средние значения FPS.

В тестах, в которых отсутствовала возможность замера min fps , это значение измерялось утилитой FRAPS.

VSync при проведении тестов был отключен.

Чтобы избежать ошибок и минимизировать погрешности измерений, все тесты производились по три раза. При вычислении avg fps за итоговый результат бралось среднеарифметическое значение результатов всех прогонов. В качестве min fps выбиралось минимальное значение показателя по результатам трех прогонов.

Перейдем непосредственно к тестам.

Многие процессоры 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 или, наоборот, дезактивировать, мы определили. Дело, вероятно, в практическом использовании ее преимуществ, которые можно задействовать, убедившись, что ПК в аппаратных и программных компонентах поддерживает технологию.

Если вы внимательно просматривали содержимое BIOS Setup, то вы вполне могли заметить там опцию CPU Hyper Threading Technology. И возможно, задавались вопросом, что же такое Hyper Threading(Сверехпоточность или гиперпоточность, официальное название - Hyper Threading Technology, HTT), и для чего нужна данная опция.

Hyper Threading – это сравнительно новая технология, разработанная компанией Intel для процессоров архитектуры Pentium. Как показала практика, использование технологии Hyper Threading позволило во многих случаях увеличить производительность CPU приблизительно на 20-30%.

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

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

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

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

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

Поддержка технологии Hyper Threading впервые появилась в процессорах в 2002 году. Это были процессоры семейства Pentium 4 и серверные процессоры Xeon с тактовой частотой выше 2 ГГц. Первоначально технология носила кодовое название Jackson, но потом ее название сменилось на более понятное для широкой публики Hyper Threading – что можно перевести примерно как «сверхпоточность».

При этом, по утверждению Intel, поверхность кристалла процессора, поддерживающего Hyper Threading, увеличилась по сравнению с предшествующей моделью, ее не поддерживающей, всего на 5% при увеличении производительности в среднем на 20%.

Несмотря на то, что технология в целом хорошо себя зарекомендовала, тем не менее, по ряду причин корпорация Intel решила отключить технологию Hyper Threading в сменивших Pentium 4 процессорах семейства Core 2. Hyper Threading, однако, позже снова появилась в процессорах архитектур Sandy Bridge, Ivy Bridge и Haswell, будучи в них существенно переработанной.

Суть технологии

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

Несмотря на все успехи, которые были достигнуты процессорами, у них есть один существенный недостаток – они могут исполнять лишь одну инструкцию одновременно. Допустим, что вы запустили одновременно такие приложения, как текстовый редактор, браузер и Skype. С точки зрения пользователя, это программное окружение можно назвать многозадачным, однако, с точки зрения процессора это далеко не так. Ядро процессора будет выполнять по-прежнему одну инструкцию за определенный промежуток времени. При этом в задачу процессора входит распределение ресурсов процессорного времени между отдельными приложениями. Поскольку это последовательное выполнение инструкций происходит чрезвычайно быстро, вы этого не замечаете. И вам кажется, что никакой задержки не существует.

Но задержка все-таки есть. Задержка появляется из-за способа снабжения процессора данными каждой из программ. Каждый поток данных должен поступать в определенное время и обрабатываться процессором индивидуально. Технология Hyper Threading делает возможным каждому ядру процессора планировать обработку данных и распределять ресурсы одновременно для двух потоков.

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

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

Стоит вам включить компьютер с двуядерным процессором, поддерживающим Hyper Threading и открыть Windows Task Manager (Диспетчер задач) на вкладке Performance (Быстродействие), как вы обнаружите в нем четыре графика. Но это отнюдь не означает, что на самом деле у вас 4 ядра процессора.

Это происходит потому, что Windows считает, что у каждого ядра есть по два логических процессора. Термин «логический процессор» звучит забавно, но он означает процессор, которого физически не существует. Windows может посылать потоки данных к каждому логическому процессору, но на самом деле выполняет работу только одно ядро. Поэтому одно ядро с технологией Hyper Threading существенно отличается от раздельных физических ядер.

Для работы технологии Hyper Threading требуется ее поддержка со стороны следующих аппаратных и программных средств:

  • Процессор
  • Чипсет материнской платы
  • Операционная система

Преимущества технологии

Теперь рассмотрим следующий вопрос – насколько все же технология Hyper Threading увеличивает производительность компьютера? В повседневных задачах, таких, как Интернет-серфинг и набор текстов, преимущества технологии не столь очевидны. Однако следует иметь в виду, что сегодняшние процессоры настолько мощны, что повседневные задачи редко загружают процессор полностью. Кроме того, многое зависит еще и от того, как написано программное обеспечение. У вас может быть запущено сразу несколько программ, однако, посмотрев на график загрузки, вы увидите, что используется только один логический процессор на ядро. Это происходит потому, что программное обеспечение не поддерживает распределение процессов между ядрами.

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

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

Заключение

Поскольку максимальное повышение производительности при использовании Hyper Threading составляет 30%, то нельзя сказать, что технология эквивалентна удвоению количества ядер процессора. Тем не менее, Hyper Threading – это полезная опция, и вам, как владельцу компьютера, она не помешает. Ее преимущество особо заметно, например, в таких случаях, когда вы редактируете мультимедиа-файлы или используете компьютер в качестве рабочей станции для таких профессиональных программ, как Photoshop или Maya.

"…И мы горды — и враг наш горд
Рука, забудь о лени. Посмотрим,
кто у чьих ботфорт в конце
концов склонит свои колени…"
© х/ф "Д"артаньян и три мушкетера"

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

Для начала сформулируем, что же именно мы знаем про технологию Hyper Threading:

1. Данная технология предназначена для увеличения эффективности работы процессора. Дело в том, что, по оценкам Intel, большую часть времени работает всего 30% (кстати, достаточно спорная цифра — подробности ее вычисления неизвестны ) всех исполнительных устройств в процессоре. Согласитесь, это достаточно обидно. И то, что возникла идея каким-то образом "догрузить" остальные 70% — выглядит вполне логично (тем более что сам по себе процессор Pentium 4, в котором и внедрят эту технологию, отнюдь не страдает от избыточной производительности на мегагерц ). Так что эту идею автор вынужден признать вполне здравой.

2. Суть технологии Hyper Threading состоит в том, что во время исполнения одной "нити" программы простаивающие исполнительные устройства могут заняться исполнением другой "нити" программы (или "нити" другой программы ). Или, например, исполняя одну последовательность команд, ожидать данных из памяти для исполнения другой последовательности.

3. Естественно, выполняя различные "нити", процессор должен каким-либо образом отличать, какие команды к какой "нити" относятся. Значит, есть какой-то механизм (некая метка ), благодаря которой процессор отличает, к какой "нити" относятся команды.

4. Ясно также, что, учитывая небольшое количество регистров общего назначения в архитектуре х86 (всего 8 ), у каждой нити свой набор регистров. Впрочем, это уже давно не новость — данное ограничение архитектуры уже довольно давно обходится при помощи "переименования регистров". Другими словами, физических регистров намного больше, чем логических. В процессоре Pentium III их 40. Наверняка это число для Pentium 4 больше — у автора есть ничем не обоснованное (кроме соображений "симметрии" :-) мнение, что их порядка сотни. Никаких достоверных сведений об их количестве найти не удалось. По неподтвержденным пока данным, их 256 . По другим данным — другое число. В общем, полная неопределенность…. Кстати, позиция Intel по этому поводу совершенно непонятна:-(— автору непонятно, чем вызвана подобная секретность .

5. Также известно, что в случае, когда несколько "нитей" претендуют на одни и те же ресурсы, либо одна из "нитей" ждет данных — во избежание падения производительности программисту необходимо вставлять специальную команду — "pause". Естественно, это потребует очередной перекомпиляции программ.

6. Также понятно, что возможны ситуации, когда попытки одновременного исполнения нескольких "нитей" приведут к падению производительности. Например, из-за того, что размер кэша L2 не бесконечный, а активные "нити" будут пытаться загрузить кэш — возможна ситуация, когда такая "борьба за кэш" приведет к постоянной очистке и перезагрузке данных в кэше второго уровня.

7. Intel утверждает, что при оптимизации программ под данную технологию выигрыш будет составлять до 30%. (Вернее, Intel утверждает, что на сегодняшних серверных приложениях и сегодняшних системах до 30% ) Гм…. Это более чем достаточный стимул для оптимизации.

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

У автора сложилось впечатление (возможно, ошибочное ), что в данном случае имеется ввиду программный фрагмент, который мультизадачная операционная система назначает на исполнение одному из процессоров мультипроцессорной аппаратной системы. "Постойте!" — заявит внимательный читатель — "это же одно из определений! Что тут нового?". А ничего — в данном вопросе автор на оригинальность не претендует. Разобраться бы, что "наоригинальничала" Intel:-). Ну что же — примем в качестве рабочей гипотезы.

Далее — исполняется некоторая нить. Тем временем декодер команд (кстати, полностью асинхронный и не входящий в пресловутые 20 стадий Net Burst ) осуществляет выборку и дешифрацию (со всеми взаимозависимостями ) в микроинструкции . Здесь надо пояснить, что автор подразумевает под словом "асинхронный" — дело в том, что результат "разваливания" х86 команд в микроинструкции происходит в блоке дешифрации. Каждая команда х86 может быть декодирована в одну, две, или более микроинструкций. При этом на стадии обработки выясняются взаимозависимости, доставляются необходимые данные по системной шине. Соответственно, скорость работы этого блока часто будет зависеть от скорости доступа данных из памяти — и в худшем случае определяется именно ею. Было бы логично "отвязать" его от того конвейера, в котором, собственно, и происходит выполнение микроопераций. Это было сделано путем помещения блока дешифрации перед trace cache. Чего мы этим добиваемся? А добиваемся мы при помощи такой "перестановки блоков" местами простой вещи — если в trace cache есть микроинструкции для исполнения — процессор работает более эффективно. Естественно, этот блок работает на частоте процессора — в отличие от Rapid Engine. Кстати, у автора сложилось впечатление, что данный декодер представляет собой нечто вроде конвейера длиной до 10–15 стадий. Таким образом, от выборки данных из кэша до получения результата проходит, по всей видимости, порядка 30 — 35 стадий (включая конвейер Net Burst , см. Microdesign Resources August2000 Microprocessor report Volume14 Archive8, page12).

Полученный набор микроинструкций вместе со всеми взаимозависимостями накапливается в trace cache — в том самом, который приблизительно 12 000 микроопераций. По приблизительным оценкам источник такой оценки — строение микроинструкции P6; дело в том, что принципиально длина инструкций вряд ли кардинально поменялась (считая длину микроинструкции вместе со служебными полями порядка 100 бит ) размер trace cache получается от 96 КБ до 120 КБ!!! Однако! На фоне этого кэш данных размером 8 КБ выглядит как-то несимметрично:-)… и бледно. Конечно, при увеличении размера увеличиваются задержки доступа (к примеру, при увеличении до 32КБ задержки вместо двух тактов составят 4 ). Но неужели так важна скорость доступа в этот самый кэш данных, что увеличение задержки на 2 такта (на фоне общей длины всего конвейера ) делает такое увеличение объема невыгодным? Или дело просто в нежелании увеличивать размер кристалла? Но тогда при переходе на 0.13 мкм первым делом стоило увеличить именно этот кэш (а не кэш второго уровня ). Сомневающимся в данном тезисе стоило бы припомнить переход с Pentium на Pentium MMX — благодаря увеличению кэша первого уровня вдвое практически все программы получали 10 — 15% прироста производительности. Что же говорить об увеличении вчетверо (особенно учитывая, что скорости процессоров выросли до 2ГГц, а коэффициент умножения — с 2.5 до 20 )? По неподтвержденным данным, в следующей модификации ядра Pentium4 (Prescott) кэш первого уровня таки увеличат до 16 или 32 КБ. Также увеличится кэш второго уровня. Впрочем, на сегодняшний момент все это не более чем слухи. Откровенно говоря, слегка непонятная ситуация. Хотя — оговоримся — автор вполне допускает, что подобной идее мешает некая конкретная причина. Как пример — подойдут некие требования по геометрии расположения блоков или банальная нехватка свободного места вблизи конвейера (ясно ведь, что необходимо расположить кэш данных поближе к ALU ).

Не отвлекаясь, смотрим на процесс дальше. Конвейер работает — пусть нынешние команды задействуют ALU. Ясно, что FPU, SSE, SSE2 и прочие при этом простаивают. Не тут-то было — вступает в действие Hyper Threading. Заметив, что готовы микроинструкции вместе с данными для новой нити, блок переименования регистров выделяет новой нити порцию физических регистров. Кстати, возможны два варианта — блок физических регистров общий для всех нитей, или же отдельный для каждого. Судя по тому, что в презентации Hyper Threading от Intel в качестве блоков, которые надо изменять, блок переименования регистров не указан — выбран первый вариант. Это хорошо или плохо? С точки зрения технологов — явно хорошо, ибо экономит транзисторы. С точки зрения программистов — пока неясно. Если количество физических регистров действительно 128, то при любом разумном количестве нитей ситуации "нехватка регистров" возникнуть не может. Затем они (микроинструкции ) отправляются в планировщик, который, собственно, направляет их на исполнительное устройство (если оно не занято ) или "в очередь", если данное исполнительное устройство сейчас недоступно. Таким образом, в идеале достигается более эффективное спользование имеющихся исполнительных устройств. В это время сам процессор с точки зрения ОС выглядит как два "логических" процессора . Гм… Неужели все так безоблачно? Давайте присмотримся к ситуации: часть оборудования (как-то кэши, Rapid Engine, модуль предсказания переходов ) являются общими для обоих процессоров. Кстати, точность предсказания переходов от этого, скорее всего, слегка пострадает . Особенно, если исполняемые одновременно нити не связаны друг с другом. А часть (например, MIS — планировщик последовательности микрокоманд — подобие ПЗУ, содержащее набор заранее запрограммированных последовательностей обычных операций и RAT — таблица переименования [псевдонимов] регистров ) блоков должна отличать различные нити, запущенные на "разных" процессорах. Попутно (из общности кэша ) следует, что, если две нити являются "жадными" к кэшу (то есть увеличение кэша дает большой эффект ), то применение Hyper Threading способно даже снизить скорость . Это происходит потому, что на сегодняшний момент реализован "конкурентный" механизм борьбы за кэш — "активная" в данный момент нить вытесняет "неактивную". Впрочем, механизм кэширования, по-видимому, может измениться. Также понятно, что скорость (по крайней мере, на текущий момент ) будет снижаться в тех приложениях, в которых она снижалась и в честном SMP. Как пример — SPEC ViewPerf обычно на однопроцессорных системах показывает более высокие результаты. А посему наверняка на системе с Hyper Threading результаты будут меньше, чем без нее. Собственно, результаты практического тестирования Hyper Threading можно посмотреть по .

Кстати, в интернет проскакивала информация о том, что ALU в Pentium 4 16 разрядные . Сначала автор относился к подобной информации весьма скептически — дескать, чего завистники удумали:-). А потом публикация подобной информации в Micro Design Report заставила таки задуматься — а вдруг правда? И, хотя информация об этом к теме статьи прямого отношения не имеет - трудно удержаться:-). Насколько автору "хватило понимания", суть в том, что ALU действительно 16-разрядный. Подчеркиваю — только ALU . К разрядности самого процессора это отношения не имеет. Таким образом, за полтакта (это называется тик, tick ) ALU (удвоенной частоты, как Вы помните ) вычисляет только 16 разрядов. Вторые 16 вычисляются за следующие полтакта. Отсюда, кстати, легко понятна необходимость сделать ALU вдвое быстрее — это необходимо для своевременного "перемалывания" данных. Таким образом, полных 32 разряда вычисляются за полный такт. На самом деле, по-видимому, необходимы 2 такта из-за необходимости "склеивать" и "расклеивать" разряды — но этот вопрос необходимо уточнить. Собственно, раскопки (про которые можно написать отдельную поэму) дали следующее: каждое ALU поделено на 2 16-разрядные половинки. Первые полтакта первая половинка обрабатывает 16 разрядов двух чисел и формируют биты переносов для вторых половинок. Вторая половинка в это время заканчивает обработку предыдущих чисел. Второй тик — первая половинка ALU обрабатывает 16 разрядов от следующей пары чисел и формирует их переносы. Вторая половинка обрабатывает старшие 16 разрядов первой пары чисел и получает готовый 32-разрядный результат. Задержка получения 1 результата — 1 такт, но потом каждые полтакта вылезает по 1 32-разрядному результату. Достаточно остроумно и эффективно. Почему же была выбрана именно такая модель ALU? По видимому, подобной организацией Intel убивает несколько "зайцев":

1. Ясно, что конвейер "шириной" 16 разрядов разгонять легче, чем шириной 32 разряда — просто по причине наличия перекрестных помех и К о

2. По-видимому, Интел счел операции целочисленного вычисления достаточно часто встречающимися, чтобы ускорять именно ALU, а не, скажем, FPU. Вероятно, при вычислении результатов целочисленных операций используются либо таблицы, либо схемы "с накоплением переноса". Для сравнения, одна 32-битная таблица это 2E32 адресов, т.е. 4гигабайта. Две 16-разрядные таблицы это 2х64кб или 128 килобайт — почувствуйте разницу! Да и накопление переносов в двух 16-разрядных порциях происходит быстрее, чем в одной 32-разрядной.

3. Экономит транзисторы и… тепло. Ведь ни для кого не секрет, что все эти архитектурные ухищрения греются. По видимому, это была достаточно большая (а, возможно, и главная ) проблема — чего стоит, к примеру, Thermal Monitor как технология! Ведь необходимости в подобной технологии как таковой не очень много — то есть, конечно, приятно, что она есть. Но давайте говорить честно — простой блокировки хватило бы для достаточной надежности. Раз такая сложная технология была предусмотрена — значит, всерьез рассматривался вариант, когда подобные изменения частоты на ходу были одним из штатных режимов работы. А, может, основным? Ведь не зря ходили слухи, что Pentium 4 задумывался с гораздо большим количеством исполнительных устройств. Тогда проблема тепла должна была стать просто основной. Вернее, по тем же слухам, тепловыделение должно было составить до 150 Вт . А тогда очень логично принять меры к тому, чтобы процессор работал "в полную силу" только в таких системах, где обеспечено нормальное охлаждение. Тем более, что большинство корпусов "китайского" происхождения продуманностью конструкции с точки зрения охлаждения отнюдь не блещут. Гм…. Далековато забрались:-)

Но все это теоретизирования. Есть ли сегодня процессоры, в которых применяется эта технология? Есть. Это Xeon (Prestonia ) и XeonMP. Причем, интересно, что XeonМР от Xeon отличается поддержкой до 4 процессоров (чипсеты типа IBM Summit поддерживают до 16 процессоров, методика приблизительно такая же, как и в чипсете ProFusion ) и наличием кэша третьего уровня объемом 512 КБ и 1 МБ, интегрированного в ядро. Кстати, а почему интегрировали кэш именно третьего уровня? Почему не увеличен кэш первого уровня ? Должна же быть какая-то разумная причина…. Почему не увеличили кэш второго уровня? Возможно, причина в том, что Advanced Transfer Cache нуждается в относительно небольших задержках. А увеличение объема кэша приводит к увеличению задержек. Посему кэш третьего уровня для ядра и кэша второго уровня вообще «представляется» как шина. Просто шина:-). Так что прогресс налицо — сделано все, чтобы данные подавались в ядро как можно быстрее (а, попутно, поменьше загружалась шина памяти ).

Ну что же — получается, никаких особо узких мест и нет? Что же автор, так и не сможет "поворчать"? Один процессор - а ОС видит два. Хорошо! Два процессора — а ОС видит 4! Кррасота! Стоп! А какая это ОС у нас работает с 4-мя процессорами? Операционные системы от Микрософт, которые понимают больше двух процессоров, стоят совсем других денег. Например, 2000 Professional, XP Professional, NT4.0 понимают только два процессора. А, учитывая, что пока что данная технология предназначается на рынок рабочих станций (и серверов ) и есть только в соответствующих процессорах - получается просто чертовски обидно. На сегодня мы можем использовать процессора с такой технологией, только купив двухпроцессорную плату и поставив один процессор. Чем дальше, тем "страньше", как говаривала Алиса в стране чудес…. То есть, человек, жаждущий использовать данную технологию, просто вынужден покупать версии Server и Advanced Server нынешних операционных систем. Ох, и дороговат выходит "бесплатный" процессор…. Стоит добавить, пожалуй, что в настоящий момент Intel активно "общается" с Microsoft, пытаясь привязать политику лицензирования к физическому процессору. По крайней мере, согласно документу , новые операционные системы от Microsoft будут лицензироваться по физическим процессорам. По крайней мере, WindowsXP лицензируется именно по количеству физических процессоров.

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

Ну что же — не забываем достаточно важный вывод: применение Hyper Threading способно привести как к выигрышу, так и к проигрышу в производительности . Ну а поскольку проигрыш нами уже обсужден — попробуем понять, что же необходимо для выигрыша: а для выигрыша необходимо, чтобы об этой технологии знали:

  1. BIOS материнской платы
  2. Операционная система (!!!)
  3. Собственно, само приложение

Вот на этом моменте позвольте остановиться поподробнее — дело в том, что за BIOS дело не станет. Операционную систему мы обсудили чуть ранее. А вот в те нити, которые, например, ожидают данных из памяти — придется вводить специальную команду pause , чтобы не замедлять работу процессора; ведь при отсутствии данных нить способна блокировать те или иные исполнительные устройства. А чтобы вставить эту команду, приложения придется перекомпилировать — это не есть хорошо, но, с легкой руки Intel, к этому в последнее время все стали привыкать:-). Таким образом, основной (по мнению автора ) недостаток технологии Hyper Threading — это необходимость очередной компиляции. Основное преимущество такого подхода - подобная перекомпиляция попутно (и, скорее всего, более заметно:-) подымет производительность в "честных" двухпроцессорных системах — а это можно только приветствовать. Кстати, уже есть экспериментальные , которые подтверждают, что в большинстве случаев программы, оптимизированные под SMP , выигрывают от Hyper Threading от 15% до 18%. Это весьма неплохо. Кстати, там же можно увидеть, в каких случаях Hyper Threading приводит к падению производительности.

И напоследок давайте попробуем пофантазировать, что же может измениться (улучшиться ) в дальнейшем развитии этой идеи. Достаточно очевидно, что развитие данной технологии будет прямо связано с развитием ядра Pentium 4. Таким образом, представим себе потенциальные изменения в ядре. Что там у нас дальше по плану? 0.09 микронная технология, более известная как 90нм…. Автор склонен считать (на сегодняшний момент ), что развитие данного семейства процессоров пойдет сразу по нескольким направлениям:

  • Благодаря более "тонкому" техпроцессу частота процессора станет еще выше.
  • Будем надеяться, что кэш данных увеличат. Хотя бы до 32КБ.
  • Сделают "честное", 32 разрядное ALU. Это должно поднять производительность.
  • Увеличат скорость системной шины (впрочем, это уже в ближайших планах ).
  • Сделают двухканальную DDR память (опять же, ждать осталось относительно недолго ).
  • Возможно, введут аналог технологии х86-64, если данная технология (усилиями AMD ) приживется. При этом автор изо всех сил надеется, что этот аналог будет совместимым с х86-64. Хватит уже плодить несовместимых друг с другом расширений…. Опять же, небезынтересным для нас будет Джерри Сандерса, в котором тот заявил, что AMD и Intel в прошлом году договорились о кросс-лицензировании на все, кроме системной шины Pentium4. Значит ли это, что Intel встроит х86-64 в следующее ядро Pentium4 (Prescott), а AMD встроит в свои процессора Hyper Threading? Вопрос интересный….
  • Возможно, будет увеличено количество исполнительных устройств. Правда, как и предыдущий, это достаточно спорный пункт, поскольку требует практически полного перепроектирования ядра — а это долгий и трудоемкий процесс.

Интересно, будет ли развиваться идея Hyper Threading? Дело в том, что в количественном отношении ей развиваться особо некуда — понятно, что два физических процессора лучше трех логических. Да и позиционировать будет нелегко…. Интересно, что Hyper Threading может пригодиться и при интегрировании двух (или более ) процессоров на кристалл. Ну а под качественными изменениями автор имеет ввиду, что наличие такой технологии в обычных десктопах приведет к тому, что фактически большинство пользователей будут работать на [почти] двухпроцессорных машинах — что очень хорошо. Хорошо потому, что подобные машины работают не в пример "плавнее" и "отзывчивее" на действия пользователя даже под большой нагрузкой. Сие, с точки зрения автора, есть весьма хорошо.

Вместо послесловия

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

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

Автор хотел подчеркнуть бы свою признательность Максиму Леню (aka C.A.R.C.A.S.S.) и Илье Вайцману (aka Stranger_NN) за неоднократную и неоценимую помощь при написании статьи.
Также хотелось бы сказать спасибо всем участникам форума, которые неоднократно высказывали ценные замечания.

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 , в всегда можно отключить технологию гиперпоточности.







2024 © maximum03.ru.