Разное

Intel hyper threading: Про Intel Hyper-Threading и производительность виртуальных машин / Хабр

03.12.2004

Содержание

Про Intel Hyper-Threading и производительность виртуальных машин / Хабр

Всегда относился к Intel Hyper-Threading как к маркетинговому продукту. Но недавно я взглянул на эту технологию под другим углом.

Настал момент, когда лицензия vSphere Standart позволила создавать и запускать виртуальные машины с количеством виртуальных процессоров равных 8. О том, чем это грозит в случае установленного процессора с 4-мя физическими ядрами и поддержкой Hyper-Threading, читайте дальше.

Думаю, данный материал нужно рассматривать как продолжение моих попыток ускорить работу терминального сервера, про это я писал тут.

Про Hyper-Threading

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

Следуя слогану Intel «Чем больше задач, тем выше эффективность работы», чтобы увидеть результат я буду запускать в разных сессиях на терминальном сервере просмотр фильмов. Чем больше я смогу запустить фильмов, тем лучше; снижение нагрузки на процессор также приветствуется.

На VM, подготовленную для тестирования, установлена ОС ws2008 R2 Standart. На момент тестирования были установлены все обновления. Для воспроизведения роликов установлен кодек и плеер DIVX.

Тестовый стенд собран из сервера HP ML350 G6 c процессором Intel Xeon E5620 1шт.

E5620 Specifications

Launch Date Q1’10
of Cores 4
of Threads 8
Base Frequency 2.4 GHz

Начну с результатов ESXi

На сервер установлена версия ESXi сервера 5.1-1483097.

Про логику работы ESXi + Hyperthreading на Хабре опубликован интересный материал «Оптимизация работы виртуальной инфраструктуры на базе VMWare vSphere», рекомендую к ознакомлению.

Несколько экспериментов с размерами vcpu, технология intel HT активна, воспроизводился тестовый ролик с качеством 480p.

Как видно из результатов, при использовании 8 потоков на терминальном сервере удалось запустить еще одну копию фильма и получить средний прирост в 20%. А вот разница между виртуальными процессорами и виртуальными ядрами в случае одного физического процессором незаметна.

Нагрузку я фиксировал с VM, если фиксировать с хоста — цифры будут другими, по какой-то причине хост сервер фиксирует отличный от VM результат. Вот как это выглядит при работе реальных пользователей:

В следующих тестах я буду выключать HT в биосе и воспроизводить ролики с качеством 480р, 720р и 1080р.

Результаты Hyper-V 2012

На сервер установлена ОС ws2012 R2 Standart и установлены все обновления на момент тестирования.

Тестовая VM портировалась с платформы VMware на платформу Microsoft.

Показания производительности снимались с хоста:

Результаты Hyper-V 2008

На сервер установлена ОС ws2008 R2 Standart и установлены все обновления на момент тестирования.

Показания производительности снимались с хоста, однако платформа Hyper-V 2008 с активным HT не позволила создать VM с 8 vcpu, в связи с чем получены странные результаты.

После того как, я не смог запустить VM в конфигурации 8 vcpu решил проверить работу Hyper-V 2008 в связке с VDI. Были созданы несколько VM с ОС Windows 7 x86, все обновления установлены.

Результаты для 4 vcpu per VM:

Результаты для 2 vcpu per VM:

Конфигурация с 2 vcpu per VM показала результат лучше, очень заметно для ролика 1080р.

Результаты физического сервера ws2008 R2

Эти данные будут использоваться как эталонные:

Сравнения всех платформ

Для сравнения буду использовать результаты, полученные для видео 480р:

Можно сделать следующие выводы:

Использование HT дает результат, который можно заметить в много поточных задачах. Пользу HT в задачах более «узких» нужно проверять.

В проведенных тестах явного лидера между платформами нет. А обладателям лицензий ws2008, которые используются для Hyper-V, стоит задуматься про апдейт, если есть необходимость использовать большие VM.

Получить результат максимально приближенный к ФС позволит инфраструктура VDI.
Думаю, данный результат обеспечил кодек RemoteFX 8.

AMD и Hyper-Threading / Хабр

Многим технология Hyper-Threading запомнилась, как технология созданная компанией INTEL. Хотя истории создания самой технологии я не нашел, нашлась небольшая подсказка, ведущая к другой, более мелкой компании. И здесь я решил разобраться.



Введение

Как мы помним технология Hyper-threading(далее HT), принадлежит Интел, и используется в широком спектре процессоров, допустим она использовалась в процессорах Pentium 4, Core i3/i5/i7, а также в линейке серверных процессорах. Википедия говорит про данную технологию «технология, разработанная компанией Intel для процессоров на микроархитектуре NetBurst», а также английская википедия отсылается к Intel, говоря расплывчато.

Как многие помнят, HT это «программный комплекс»(информация взята с форума в 201х году, к сожалению ссылка утеряна прим. авт.). Хотя он реализован в железе, о истории создания этой технологии практически ничего не известно. И тут стоит разобраться.

Начало поиска

Итак, благодаря

сервису Google

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

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

Поиск информации

И логично обратится к истории создания HT, но тут тоже фиаско, все ведет к Интелу, никаких догадок. И наконец я ввел в гугле «hyper threading patent» и выдало несколько статей:

Из этих результатов меня заинтересовал третий. Я решил сделать его перевод в вольном стиле:

«Еще в 1999 году AMD подала заявку на патент, который дает им право выпустить процессор с технологией Hyper-Threading. Название технологии имело иное наименование, но это дает полное понимание технологии: „Microprocessor configured to execute multiple threads including interrupt service routines“ (Конфигурация процессора для выполнения нескольких потоков, включающее прерывание). Патент, как несложно догадаться, описывает как процессор может выполнять несколько потоков одновременно.

В рамках этого патента мы могли-бы увидеть технологию Hyper-Threading в процессорах Athlon, ожидающихся в 2003 году. В ином случае AMD может не выдержать конкурентной борьбы с INTEL.»

Меня заинтересовала эта новость. А именно технология указанная в этой статье.

Разрыв покрова

Вернувшись в патенты гугла я решил забить эту технологию, и мне выдало очень интересный результат:

При клике на первый результат, как и сказано в новости, мы получаем дату патента со стороны АМД 1999 год, а технология заявлена в 1996 году.

А теперь пройдемся по истории покупок патента:

Меня заинтересовала лицензирование патента в 2002 году «Анонимным» игроком на рынке, немного загуглив, любой может выведать информацию о том, с какой технологией в тот месяц вышел процессор серии Pentium 4. И ему понравилось настолько, что он решил продлить патент еще на 8 лет, а потом на 12. Думаю выводы более менее очевидны.

Выводы

Ничего точно сказать я не могу, ибо мои знания английского не позволяют мне переводить этот патент, длинною в жизнь. Но данная статья заставила меня задуматься, о некоторых аспектах HT, допустим, что «изначальная» реализация данной технологии лежит на красном гиганте, а вот последующая, имеющая название «Hyper-threading», уже лежит на другой небезызвестной компании.

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

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

Под названием Hyper-Threading.

Терминология

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

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

Hyper-Threading

Так что же такое технология hyper-threading? Термин Hyper-threading
используется компанией Intel для определения их технологии, которая
позволяет операционной системе воспринимать одно ядро ЦП, как два ядра.
Таким образом, операционная система работает с таким ядром так же, как с
любым многоядерным чипом, направляя на него одновременно несколько
процессов. Хотя при помощи этой технологии можно заставить систему

воспринимать одно ядро, как три или более ядер, сложность архитектуры
ограничила компанию Intel до выпуска hyper-threaded ядер, которые могут
восприниматься только как два ядра.

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

hyper-threading-совместимые ядра представляют собой не совсем то же
самое, что многоядерные процессоры; не любой процесс может одновременно
выполняться с другим процессом, он должен использовать отдельную часть
ядра для своих операций.

Hyper-threading представляет собой пример одновременной
многопоточности (Simultaneous Multi-Threading — SMT). SMT является одним
из двух типов многопоточности. Другой тип называется временной
многопоточностью (Temporal Multi-Threading — TMT). При TMT ядро
процессора выполняет инструкции сначала от одного потока, затем от
другого, и затем снова от первого, и поэтому пользователю кажется, что
выполняется сразу два потока, когда на самом деле потоки просто делят
время ЦП между собой. При SMT инструкции от каждого потока могут
выполняться одновременно. Эти технологии могут использоваться для
повышения производительности.

Пользователям также следует знать, что не все ОС поддерживают
технологию hyper-threading. По заявлению компании Intel следующие ОС от
Microsoft полностью оптимизированы под поддержку технологии
hyper-threading:

    Microsoft Windows XP Professional Edition

    Microsoft Windows XP Home Edition

    Microsoft Windows Vista Home Basic

    Microsoft Windows Vista Home Premium

    Microsoft Windows Vista Home Ultimate

    Microsoft Windows Vista Home Business

И как говорят в компании Intel, следующие ОС не полностью
оптимизированы под технологию hyper-threading, и поэтому данная
технология должна быть отключена в настройках BIOS:

Иногда у таких приложений, как FireFox ,
возникают проблемы с hyper-threading. Лучшим способом решения этой
проблемы является запуск приложения в режиме совместимости с Windows 98.
Для этого нужно нажать правой клавишей мыши на значке приложения,
перейти в свойства, выбрать совместимость и отметить флажком опцию
«Запустить приложение в режиме совместимости (Run this program in
compatibility mode)», выбрав Windows 98. Это отключит технологию
hyper-threading для данного приложения, поскольку Windows 98 не
поддерживает hyper-threading.

Преимущества Hyper-Threading

Есть множество преимуществ hyper-threading. Компания Intel
утверждает, что дублирование определенных областей ядра ЦП увеличивает
размер ядра примерно на 5 процентов, но при этом обеспечивает прирост
производительности на 30 процентов по сравнению с другими идентичными
ядрами процессоров без hyper-threading.

Недостатки Hyper-Threading

//
//]]—>



Хотя hyper-threaded ядра ЦП не обеспечивают полного объема
преимуществ многоядерных процессоров, они все же имеют значительные
преимущества по сравнению с обычными одноядерными процессорами. Конечно,
всегда полезно знать о том, какие недостатки имеются у технологии,
прежде чем ее использовать. Одним недостатком многих применений является
высокий уровень энергопотребления. Поскольку все области ядра нуждаются
в питании (даже в режиме ожидания), общий уровень энергопотребления
hyper-threading ядер, а также всех ядер с поддержкой SMT, выше. Без
максимального использования улучшений скорости, предлагаемых
hyper-threaded ядром, оно просто будет ядром, потребляющим больше
электроэнергии. Для многих ситуаций, включая фермы серверов, и мобильные
компьютеры, такое повышенное энергопотребление нежелательно.

Более того, если сравнить hyper-threaded ядро ЦП с non-hyper-threaded
ядром, вы заметите значительное повышение переполнения кэша. ARM
утверждает, что это повышение может составлять до 42%. Сравните это
значение с многоядерными процессорами, где переполнение кэша снижено на
37%, и это действительно станет важным.

Теперь, после прочтения информации обо всех этих недостатках вы,
возможно, решите, что эти hyper-threaded ядра бесполезны. И вы правы, в
некоторых ситуациях. Например, если энергопотребление является основным
аспектом в вашей ситуации, то hyper-threaded ядра (или любые другие ядра
с поддержкой SMT) будут нежелательными. Однако даже если потребление
мощности стоит высоко в списке ваших требований, hyper-threaded ядра
могут быть подходящим вариантом. Возьмём для примера серверную ферму.
Обычно во внимание принимается энергопотребление фермами серверов (эти
счета могут составлять многие тысячи долларов в месяц!). Однако в
сегодняшних фермах серверов многие серверы являются виртуальными.
Поэтому вполне может быть, что у вас есть несколько виртуальных серверов
на одном физическом сервере, при этом требования производительности
этих серверов не выше среднего. Вполне возможно, что такой тип
конфигурации обеспечит достаточный уровень использования ЦП, чтобы
использовать максимальный объем производительности hyper-threaded ядер,
при этом энергопотребление будет сведено до минимума.

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

Рассел
Хичкок (Russell Hitchcock) работает консультантом, в его обязанности
входит сетевое аппаратное обеспечение (networked hardware), контрольные
системы и антенны. Рассел также пишет технические статьи на различные

Компания 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, 1920×1200 / 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

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

В данных играх производительность измерялась с помощью утилиты 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 . А точнее, ее отсутствие в процессоре, или наличие. За что же отвечает эта технология? Intel Hyper-Threading , это технология для эффективного использования ресурсов ядер процессора (CPU), позволяя одновременно обрабатывать несколько потоков на одно ядро.

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

Даже самое мощное процессорное ядро должно получать информацию без задержек, чтобы оперативно обрабатывать ее. Как только на входе образуется «пробка» из данных, процессор начинает простаивать, ожидая, когда же до него дойдет та, или иная информация для обработки.

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

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

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

В эпоху одноядерных процессоров (Intel Pentium 4), технология HT стала спасением для тех, кто не мог купить более дорогой процессор (Pentium D). Но сегодня известны случаи снижения производительности при активации HT. Почему так происходит? Все довольно просто. Для распараллеливания данных, и правильной обработки процесса тоже уходят некоторые мощности процессора. И как только физических ядер становится достаточно для обработки информации без простоя блоков, производительность немного снижается из-за отобранных технологией HT ресурсов. Поэтому самый худший вариант работы Hyper-Threading, это не отсутствие увеличения производительности, а ее снижение. Но на практике такое случается очень редко.

С выходом восьмитысячной линейки процессоров Intel семейства Core, этот вопрос стал особенно актуален – а нужен ли Hyper-Threading вообще? Ведь даже процессоры Core i5 несут в себе полноценные шесть ядер. Если не говорить о профессиональных приложениях по обработке графики, рендеринге и т.д., то есть вероятность, что шесть физических ядер хватит на все офисные приложения и игры. Поэтому, если изначально считалось, что технология HT прибавляет процессору до 30% производительности, то теперь это не аксиома, и все будет зависеть от вашего стиля работы за компьютером и набора пользуемых утилит.

Разумеется, текст был бы неполным без тестирования. Поэтому мы возьмём имеющиеся у нас процессоры Intel Core i7 8700K и 7700K , и проверим в нескольких играх и приложениях производительность процессоров с активированным Hyper-Threading , и деактивированным. По итогу тестирования станет понятно, в каких приложениях виртуальные ядра добавляют производительности, а в каких остаются незамеченными.

Популярный 3DMark не особо охотно откликается на увеличение ядер и потоков. Прирост есть, но он ничтожный.

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

В играх ситуация проще. В большинстве случаев увеличение количества потоков не дает результатов, т.е. играм достаточно 4 физических ядер, а в большинстве случаев, даже меньше. Исключение составил лишь GTA5, которая очень хорошо отозвалась на отключение НТ, и прибавила 7% производительности, и только на шестиядерном процессоре 8700К. Отключение многопоточности на 7700К не дало никаких результатов. Мы несколько раз перепрогнали бенчмарки и результаты были неизменны. Но это скорее исключение из правил. Все протестированные игр легко довольствуются четырьмя ядрами.

Одним из важнейших элементов в позиционировании процессоров Intel внутри линеек, является технология Hyper-Threading. А точнее, ее отсутствие в процессоре, или наличие. За что же отвечает эта технология? Intel Hyper-Threading, это технология для эффективного использования ресурсов ядер процессора (CPU), позволяя одновременно обрабатывать несколько потоков на одно ядро. Попробуем привести пример аналогичной системы из жизни. Представьте себе пограничный пост с контролем каждой машины, множеством таможенников и одной полосой на подъезд для автомобилей. Скапливается пробка, процесс тормозится сам по себе даже вне зависимости от скорости работы сотрудников. А учитывая, что полоса одна, то половина сотрудников просто скучает. И тут внезапно открывают еще одну полосу для автотранспорта и автомобили начинают подъезжать в два потока. Скорость работы увеличивается, свободные сотрудники начинают работать, а пробка из желающих пересечь границу становится значительно меньше. Как итог, не увеличивая размеров таможни и количества сотрудников, увеличилась пропускная способность и эффективность работы одного поста. Даже самое мощное процессорное ядро должно получать информацию без задержек, чтобы оперативно обрабатывать ее. Как только на входе образуется «пробка» из данных, процессор начинает простаивать, ожидая, когда же до него дойдет та, или иная информация для обработки. Чтобы избежать этого, в далеком 2002 году появилась технология Hyper-Threading, которая имитировала появление второго ядра в системе, благодаря чему, заполнение мощностей ядра происходило оперативней. Как показала практика, мало кто знает, как на самом деле работает технология Intel Hyper-Threading. Большинство уверено, что у них в процессоре просто живет несколько дополнительных виртуальных ядер. Но на самом деле, количество ядер не изменяется, изменяется именно количество потоков, и это критически важно. Просто у каждого ядра появляется дополнительный канал ввода-вывода информации. Ниже видео, как оно работает на самом деле. Как же устроена технология HT, и откуда берутся дополнительные потоки? На самом деле, все достаточно просто. Для реализации этой технологии, к каждому ядру дополняется один контроллер и набор регистров. Таким образом, как только поток данных становится больше, чем пропускная способность одного канала, подключается второй канал. Таким образом, устраняется простой незадействованных блоков процессора. В эпоху одноядерных процессоров (Intel Pentium 4), технология HT стала спасением для тех, кто не мог купить более дорогой процессор (Pentium D). Но сегодня известны случаи снижения производительности при активации HT. Почему так происходит? Все довольно просто. Для распараллеливания данных, и правильной обработки процесса тоже уходят некоторые мощности процессора. И как только физических ядер становится достаточно для обработки информации без простоя блоков, производительность немного снижается из-за отобранных технологией HT ресурсов. Поэтому самый худший вариант работы Hyper-Threading, это не отсутствие увеличения производительности, а ее снижение. Но на практике такое случается очень редко. С выходом восьмитысячной линейки процессоров Intel семейства Core, этот вопрос стал особенно актуален – а нужен ли Hyper-Threading вообще? Ведь даже процессоры Core i5 несут в себе полноценные шесть ядер. Если не говорить о профессиональных приложениях по обработке графики, рендеринге и т.д., то есть вероятность, что шесть физических ядер хватит на все офисные приложения и игры. Поэтому, если изначально считалось, что технология HT прибавляет процессору до 30% производительности, то теперь это не аксиома, и все будет зависеть от вашего стиля работы за компьютером и набора пользуемых утилит. Разумеется, текст был бы…

Было время, когда понадобилось оценить производительность памяти в контексте технологии 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 килобайт.

В прошлом мы рассказывали о технологии одновременной многопоточности (Simultaneous Multi-Threading — SMT), которая применяется в процессорах Intel. И хотя первоначально она создавалась под кодовым именем «технология Джексона» (Jackson Technology) как возможный, вероятный вариант, Intel официально анонсировала свою технологию на форуме IDF прошлой осенью. Кодовое имя Jackson было заменено более подходящим Hyper-Threading. Итак, для того чтобы разобраться, как работает новая технология, нам нужны кое-какие первоначальные знания. А именно, нам нужно знать, что такое поток, как выполняются эти потоки. Почему работает приложение? Как процессор узнает, какие операции и над какими данными он должен совершать? Вся эта информация содержится в откомпилированном коде выполняемого приложения. И как только приложение получает от пользователя какую-либо команду, какие-либо данные, – процессору сразу же отправляются потоки, в результате чего он и выполняет то, что должен выполнить в ответ на запрос пользователя. С точки зрения процессора, поток – это набор инструкций, которые необходимо выполнить. Когда в вас попадает снаряд в Quake III Arena, или когда вы открываете документ Microsoft Word, процессору посылается определенный набор инструкций, которые он должен выполнить.

Процессор точно знает, где брать эти инструкции. Для этой цели предназначен редко упоминаемый регистр, называемый счетчиком команд (Program Counter, PC). Этот регистр указывает на место в памяти, где хранится следующая для выполнения команда. Когда поток отправляется на процессор, адрес памяти потока загружается в этот счетчик команд, чтобы процессор знал, с какого именно места нужно начать выполнение. После каждой инструкции значение этого регистра увеличивается. Весь этот процесс выполняется до завершения потока. По окончании выполнения потока, в счетчик команд заносится адрес следующей инструкции, которую нужно выполнить. Потоки могут прерывать друг друга, при этом процессор запоминает значение счетчика команд в стеке и загружает в счетчик новое значение. Но ограничение в этом процессе все равно существует – в каждую единицу времени можно выполнять лишь один поток.

Существует общеизвестный способ решения данной проблемы. Заключается он в использовании двух процессоров – если один процессор в каждый момент времени может выполнять один поток, то два процессора за ту же единицу времени могут выполнять уже два потока. Отметим, что этот способ не идеален. При нем возникает множество других проблем. С некоторыми, вы уже, вероятно, знакомы. Во-первых, несколько процессоров всегда дороже, чем один. Во-вторых, управлять двумя процессорами тоже не так-то просто. Кроме того, не стоит забывать о разделении ресурсов между процессорами. Например, до появления чипсета AMD 760MP, все x86 платформы с поддержкой многопроцессорности разделяли всю пропускную способность системной шины между всеми имеющимися процессорами. Но основной недостаток в другом – для такой работы и приложения, и сама операционная система должны поддерживать многопроцессорность. Способность распределить выполнение нескольких потоков по ресурсам компьютера часто называют многопоточностью. При этом и операционная система должна поддерживать многопоточность. Приложения также должны поддерживать многопоточность, чтобы максимально эффективно использовать ресурсы компьютера. Не забывайте об этом, когда мы будем рассматривать ещё один подход решения проблемы многопоточности, новую технологию Hyper-Threading от Intel.

Производительности всегда мало

Об эффективности всегда много говорят. И не только в корпоративном окружении, в каких-то серьезных проектах, но и в повседневной жизни. Говорят, homo sapiens лишь частично задействуют возможности своего мозга. То же самое относится и к процессорам современных компьютеров.

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

Чтобы проиллюстрировать ситуацию, давайте вообразим себе процессор с тремя исполнительными устройствами: арифметико-логическим (целочисленным – ALU), устройством для работы с плавающей точкой (FPU), и устройством загрузки/хранения (для записи и чтения данных из памяти). Кроме того, предположим, что наш процессор может выполнять любую операцию за один такт и может распределять операции по всем трем устройствам одновременно. Давайте представим, что к этому процессору на выполнение отправляется поток из следующих инструкций:

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

Итак, вы видите, что в каждый такт используется только 33% всех исполнительных устройств. В этот раз FPU остается вообще незадействованным. В соответствии с данными Intel, большинство программ для IA-32 x86 используют не более 35% исполнительных устройств процессора Pentium 4.

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

И снова загруженность исполнительных устройств составляет лишь на 33%.

Хорошим выходом из данной ситуации будет параллелизм на уровне инструкций (Instruction Level Parallelism — ILP). В этом случае одновременно выполняются сразу нескольких инструкций, поскольку процессор способен заполнять сразу несколько параллельных исполнительных устройств. К сожалению, большинство x86 программ не приспособлены к ILP в должной степени. Поэтому приходится изыскивать другие способы увеличения производительности. Так, например, если бы в системе использовалось сразу два процессора, то можно было бы одновременно выполнять сразу два потока. Такое решение называется параллелизмом на уровне потоков (thread-level parallelism, TLP). К слову сказать, такое решение достаточно дорогое.

Какие же ещё существуют способы увеличения исполнительной мощи современных процессоров архитектуры x86?

Hyper-Threading

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

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

Hyper-Threading – это название технологии, существовавшей и ранее вне x86 мира, технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии проста. Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. В обоих случаях операционная система направляет потоки как на двухпроцессорную систему. Далее все вопросы решаются на аппаратном уровне.

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

Официально технология была объявлена на форуме Intel Developer Forum прошлой осенью. Технология демонстрировалась на процессоре Xeon, где проводился рендеринг с помощью Maya. В этом тесте Xeon с Hyper-Threading показал на 30% лучшие результаты, чем стандартный Xeon. Приятный прирост производительности, но больше всего интересно то, что технология уже присутствует в ядрах Pentium 4 и Xeon, только она выключена.

Технология пока ещё не выпущена, однако те из вас, кто приобрел 0,13 мкм Xeon, и установил этот процессор на платы с обновленным BIOS, наверняка были удивлены, увидев в BIOS опцию включения/отключения Hyper-Threading.

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

Остается очень интересный вопрос, почему Intel хочет оставить эту опцию выключенной?

Углубляемся в технологию

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

Как и ранее, синие прямоугольники указывают на выполнение инструкции первого потока, а зеленые — на выполнение инструкции второго потока. Серые прямоугольники показывают незадействованные исполнительные устройства, а красные — конфликт, когда на одно устройство пришло сразу две разных инструкции из разных потоков.

Итак, что же мы видим? Параллелизм на уровне потоков дал сбой – исполнительные устройства стали использоваться ещё менее эффективно. Вместо параллельного выполнения потоков, процессор выполняет их медленнее, чем если бы он выполнял их без Hyper-Threading. Причина довольно проста. Мы пытались одновременно выполнить сразу два очень похожих потока. Ведь оба они состоят из операций по загрузке/сохранению и операций сложения. Если бы мы параллельно запускали «целочисленное» приложение и приложение, работающее с плавающей точкой, мы бы оказались куда в лучшей ситуации. Как видим, эффективность Hyper-Threading сильно зависит от вида нагрузки на ПК.

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

На рабочих же станциях возможностей для увеличения производительности у Hyper-Threading больше. Но с другой стороны, все зависит от конкретного использования компьютера. Рабочая станция может означать как high-end компьютер для обработки 3D графики, так и просто сильно нагруженный компьютер.

Наибольший же прирост в производительности от использования Hyper-Threading наблюдается в серверных приложениях. Главным образом это объясняется широким разнообразием посылаемых процессору операций. Сервер баз данных, использующих транзакции, может работать на 20-30% быстрее при включенной опции Hyper-Threading. Чуть меньший прирост производительности наблюдается на веб-серверах и в других сферах.

Максимум эффективности от Hyper-Threading

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

С использованием второго целочисленного устройства, единственный конфликт случился только на последней операции. Наш теоретический процессор в чем-то похож на Pentium 4. В нем имеется целых три целочисленных устройства (два ALU и одно медленное целочисленное устройство для циклических сдвигов). А что ещё более важно, оба целочисленных устройства Pentium 4 способны работать с двойной скоростью – выполнять по две микрооперации за такт. А это, в свою очередь, означает, что любое из этих двух целочисленных устройств Pentium 4/Xeon могло выполнить те две операции сложения из разных потоков за один такт.

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

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

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

Выводы

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

При существующих ограничениях и при имеющейся технологии упаковки, Hyper-Threading кажется более разумным выбором для потребительского рынка, чем, например, подход AMD в SledgeHammer – в этих процессорах используется целых два ядра. И до тех пор, пока не станут совершенными технологии упаковки, такие как Bumpless Build-Up Layer , стоимость разработки многоядерных процессоров может оказаться слишком высокой.

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

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

Измерение Hyper-Threading и Turbo Boost

Мы часто проводим эксперименты по измерению производительности оборудования, чтобы улучшить наше понимание и предоставить информацию нашим партнерам по оборудованию. Недавно мы хотели узнать больше о Hyper-Threading и Turbo Boost. В последний раз мы оценивали эти две технологии, когда еще развертывали процессоры Intel Xeon (Skylake/Purley), но, начиная с наших серверов Gen X, мы перешли на AMD EPYC (Zen 2/Rome). Этот блог посвящен нашей последней попытке количественно оценить влияние Hyper-Threading и Turbo Boost на производительность наших серверов на базе AMD, на которых работает наш программный стек.

Intel кратко представила Hyper-Threading с NetBurst (Northwood) еще в 2002 году, а шесть лет спустя повторно представила Hyper-Threading с Nehalem вместе с Turbo Boost. AMD представила свою собственную реализацию этих технологий с Zen в 2017 году, но версия Turbo Boost от AMD фактически восходит к AMD K10 (Thuban) в 2010 году, когда она называлась Turbo Core. Начиная с Zen технологии Hyper-Threading и Turbo Boost известны как одновременная многопоточность (SMT) и Core Performance Boost (CPB) соответственно.Базовая реализация Hyper-Threading и Turbo Boost у двух поставщиков различается, но общая концепция остается неизменной.

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

Turbo Boost или Core Performance Boost случайным образом позволяет процессору работать за пределами его номинальной базовой частоты, пока процессор работает в соответствии с рекомендациями, установленными Intel или AMD. Вообще говоря, чем выше частота, тем быстрее процессор завершает задачу.

Смоделированная среда

Спецификация процессора

Наши серверы Gen X или 10-го поколения работают на процессоре AMD EPYC 7642 на основе микроархитектуры Zen 2.Подавляющее большинство процессоров на базе Zen 2, а также его преемник Zen 3, на котором основаны наши серверы Gen 11, поддерживают одновременную многопоточность и Core Performance Boost.

Аналогично Intel Hyper-Threading, AMD реализовала двустороннюю одновременную многопоточность. AMD EPYC 7642 имеет 48 ядер и при включенной одновременной многопоточности может одновременно выполнять 96 аппаратных потоков. Core Performance Boost позволяет AMD EPYC 7642 работать на частоте от 2,3 до 3,3 ГГц, в зависимости от рабочей нагрузки и ограничений, накладываемых на процессор.С отключенным Core Performance Boost процессор будет работать на частоте 2,3 ГГц, номинальной базовой частоте для AMD EPYC 7642. Мы использовали нашу обычную смоделированную схему трафика с кэшированными активами размером 10 КБ по HTTPS, предоставленную нашей командой по производительности, для создания устойчивой рабочей нагрузки. это насытило процессор до 100% загрузки ЦП.

Результаты

После установления базового уровня с отключением одновременной многопоточности и Core Performance Boost мы начали включать по одной функции за раз.Когда мы включили Core Performance Boost, процессор работал на пиковой турбо-частоте, колеблясь между 3,2 и 3,3 ГГц, что более чем на 39% выше базовой частоты. Более высокая рабочая частота непосредственно приводит к 40% дополнительных запросов в секунду. Затем мы отключили Core Performance Boost и включили одновременную многопоточность. Подобно Core Performance Boost, одновременная многопоточность сама по себе увеличила количество запросов в секунду на 43%. Наконец, включив обе функции, мы наблюдали улучшение количества запросов в секунду на 86%.

Задержки обычно снижались за счет повышения производительности ядра и одновременной многопоточности. В то время как Core Performance Boost постоянно поддерживал меньшую задержку, чем базовый уровень, одновременная многопоточность постепенно занимала больше времени для обработки запроса, поскольку он достиг хвостовой задержки. Хотя это и не показано на рисунке ниже, когда мы рассмотрели значение выше p9999 или 99,99-го процентиля, одновременная многопоточность, даже с помощью Core Performance Boost, экспоненциально увеличила задержку более чем на 150% по сравнению с базовым уровнем, предположительно из-за двух аппаратных потоков. борьба за общий ресурс внутри ядра.

Производственная среда

Переходя к производственной среде, поскольку наш трафик колеблется в течение дня, мы взяли четыре идентичных сервера Gen X и провели параллельные измерения в часы пик. Единственные изменения, которые мы внесли в серверы, заключались в включении и отключении одновременной многопоточности и Core Performance Boost для создания комплексной тестовой матрицы. Мы провели эксперимент в двух разных регионах, чтобы выявить любые аномалии и несоответствующие тенденции. Все тенденции были одинаковыми.

Прежде чем углубляться в результаты, мы должны отметить, что базовый сервер работал с более высокой загрузкой ЦП, чем другие.Каждое поколение наших серверов обеспечивает заметное улучшение производительности. Поэтому наш балансировщик нагрузки под названием Unimog отправляет различное количество подключений к целевому серверу в зависимости от его генерации, чтобы сбалансировать загрузку ЦП. Когда мы отключили одновременную многопоточность и повышение производительности ядра, производительность базового сервера снизилась до такой степени, что Unimog столкнулся с «ограждением» или нижним пределом запросов, отправляемых на сервер, и вместо этого увеличилась загрузка ЦП.Учитывая, что базовый сервер работал с более высокой загрузкой ЦП, базовый сервер обрабатывал больше запросов в секунду, чтобы соответствовать минимальному порогу производительности.

Результаты

Из-за искаженного базового уровня при включенном повышении производительности ядра мы наблюдали только 7% дополнительных запросов в секунду. Далее, одна только одновременная многопоточность увеличила количество запросов в секунду на 41%. Наконец, при включении обеих функций мы увидели улучшение количества запросов в секунду на 86%.

Хотя у нас нет конкретных исходных данных, мы можем нормализовать запросы в секунду по загрузке ЦП, чтобы приблизить улучшение для каждого сценария.После нормализации расчетное увеличение числа запросов в секунду за счет увеличения производительности ядра и одновременной многопоточности составило 36 % и 80 % соответственно. При включении обеих функций количество запросов в секунду увеличилось на 136%.

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

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

Добавим данные о мощности. Поскольку наш базовый сервер работал с более высокой загрузкой ЦП, мы знали, что он обслуживает больше запросов и, следовательно, потребляет больше энергии, чем необходимо. Включение Core Performance Boost позволило процессору разогнаться до пиковой частоты в турборежиме, увеличив энергопотребление на 35 % по сравнению с базовым уровнем.Что еще более интересно, включение одновременной многопоточности увеличило энергопотребление всего на 7%. Сочетание Core Performance Boost с одновременной многопоточностью привело к увеличению энергопотребления на 58%.

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

Заключение

В нашей оценке реализации Hyper-Threading и Turbo Boost компанией AMD исходный эксперимент, который мы разработали для измерения запросов в секунду и задержки, не дал ожидаемых результатов. Как только мы приступили к работе, наши базовые измерения были искажены из-за дисбаланса в использовании ЦП и лишь частично воспроизводили результаты наших лабораторных исследований.

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

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

Что такое технология Hyper-Threading и как она повышает производительность Chromebook

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

Современные компьютерные процессоры, в том числе мобильные, портативные и настольные кремниевые, представляют собой многоядерные чипы, которые могут одновременно решать целый ряд задач.Даже Chromebook  — доступные и простые в использовании ноутбуки с доступом в Интернет — поддерживают многоядерные процессы, хотя они в основном используются для работы в Интернете и работы с легкими приложениями. Программное обеспечение, которое работает на всех Chromebook, предназначено специально для набора приложений Google для повышения производительности, включая электронную почту, хранилище файлов и фотографий. Chrome OS разработана Google и оптимизирована для сервисов компании, обеспечивая стабильную производительность при недорогом оборудовании. Тем не менее, для пользователей, пытающихся использовать все возможности своего Chromebook, некоторые ноутбуки имеют поддержку Hyper-Threading, которая повысит производительность.

Хотя программное обеспечение полностью создано Google для создания безопасной экосистемы, включающей приложения и службы компании, аппаратное обеспечение — это совсем другая история.Chromebook выпускаются разными производителями и могут сильно различаться по цене, техническим характеристикам и функциям. Некоторые устройства под управлением Chrome OS имеют форм-фактор традиционного планшета или устройства «два в одном», но вместо Android используют полнофункциональную операционную систему. Другие созданы, чтобы выдержать испытание временем и предназначены для образовательных учреждений, например защищенные Chromebook производства HP. Однако ключевые различия могут заключаться в процессоре Chromebook — Intel и Qualcomm, среди прочих, производят чипы, на которых работают ноутбуки.

Связано: Можете ли вы использовать приложения Android в Chrome OS Flex? Что вы должны знать

Во-первых, что такое гиперпоточность? Это вычислительный процесс, который пытается разделить работу над данной задачей между несколькими ядрами процессора с помощью «потоков», созданных в программном обеспечении.Гиперпоточность отличается от многопоточности, которая распределяет задачи между несколькими ядрами, но ограничивается одним потоком на ядро. На процессоре с четырьмя ядрами многопоточность может выполнять только четыре потока одновременно. Однако ограничений многопоточности не существует, когда процессор поддерживает гиперпоточность. Процесс может запускать несколько потоков на одном ядре, что позволяет выполнять множество задач одновременно. Технология гиперпоточности, присутствующая в некоторых процессорах Intel для энтузиастов, позволяет двум потокам одновременно работать на каждом ядре.

Как включить Hyper-Threading

Chromebook с процессорами Intel может поддерживать технологию Hyper-Threading, что может повысить производительность ноутбука.Согласно странице поддержки Google, гиперпоточность по умолчанию отключена, но ее можно легко включить с установленной Chrome OS 74 и новее. В адресной строке веб-браузера Chrome пользователи должны ввести « chrome://flags#scheduler-configuration », чтобы отобразить меню настроек. Под заголовком « Конфигурация расписания » есть параметр « Включает гиперпоточность на соответствующих процессорах. » После включения гиперпоточности пользователи должны нажать кнопку, чтобы перезагрузить свой компьютер.Процесс такой же, как и для отключения Hyper-Threading — пользователям нужно только ввести адрес, чтобы вызвать скрытое меню настроек и выбрать « Отключает Hyper-Threading на соответствующих процессорах. »

Может показаться несложным включить гиперпоточность и получить всю производительность Chromebook, но, согласно странице поддержки Chromium, с этой функцией связаны серьезные риски безопасности.Используя функцию гиперпоточности Intel, Chromebook также использует микроархитектурную выборку данных, которая представляет собой группу уязвимостей безопасности, которые могут позволить хакеру прочитать пользовательские данные. Если взлом был успешно выполнен, возможно, что пароли, информация о кредитной карте или файлы cookie могут быть скомпрометированы. Из-за эксплойтов, которые могут совпадать с включением гиперпоточности, в Chrome OS эта функция отключена по умолчанию, но технология Intel может обеспечить огромный прирост производительности для современных Chromebook .

Далее: Steam появится на Chromebook вскоре после преждевременного объявления

Источник: Google, Chromium, Intel

.

Съемки и вырезанные сцены «Доктора Стрэнджа 2» были заказаны Marvel, говорит актер

Об авторе Брэди Снайдер (опубликовано 93 статьи)

Брэди Снайдер учится на факультете журналистики и информатики в Сент-Луисе.Университет Джона. Брейди хорошо разбирается в технологиях, аппаратном и программном обеспечении, уделяя особое внимание Apple и MacOS.

Другие работы Брэди Снайдера

Что такое Hyper-Threading? [Объяснение технологии]

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

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

Давайте посмотрим, что на самом деле означает Hyper-Threading .

Краткая история Hyper-Threading

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

Правда не так мрачна.Hyper-Threading какое-то время был доступен на некоторых процессорах Intel Pentium 4 и Intel Xeon. Он был прекращен не потому, что сама функция была плохой, а потому, что процессор, который ее использовал, оказался ошибкой по другим причинам. Архитектура Pentium 4 была небольшой катастрофой для Intel, потому что она была неспособна двигаться в том направлении, на которое надеялась Intel (Intel хотела иметь процессоры Pentium 4 с тактовой частотой до 10 ГГц). В результате Intel вернулась к разработке процессоров на основе генеалогического древа Pentium Pro.

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

Хорошие темы, мужчина

Несмотря на все достижения в мире процессоров, у них все еще есть одно серьезное ограничение — отдельное ядро ​​процессора может выполнять только одну команду за раз.Допустим, например, что у вас одновременно открыты MS Office, Firefox и Skype. Вы чувствуете, что работаете в многозадачном режиме, но с точки зрения процессора это не так. Ядро процессора, выполняющее данные, связанные с этими программами, выполняет одну инструкцию за раз, но поскольку это происходит так быстро, вы не замечаете никаких задержек.

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

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

Не то же самое, что удвоение ядер

Если вы загрузите двухъядерный процессор с технологией Hyper-Threading и откроете диспетчер задач Windows, вы обнаружите, что смотрите на четыре графика. Именно здесь возникает большая часть путаницы по поводу удвоения числа ядер Hyper-Threading.Я даже разговаривал с одним бедолагой, который решил, что купил восьмиядерный процессор, потому что увидел восемь графиков в диспетчере задач Windows. Это то, что сказал ему торговый представитель, поэтому, когда он пришел домой и увидел восемь графиков, он зацепился. Видеть было верить.

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

Преимущества Hyper-Threading

Ладно, хватит технической чепухи. Теперь давайте приступим к самой важной части — как Hyper-Threading повлияет на производительность компьютера, который вы планируете собрать или купить.

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

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

Заключение

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

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

10 причин, почему вам не следует использовать Spotify

Читать Далее

Об авторе

Мэтт Смит (опубликовано 564 статьи)

Мэтью Смит — писатель-фрилансер, живущий в Портленде, штат Орегон.Он также пишет и редактирует для Digital Trends.

Более От Мэтта Смита
Подпишитесь на нашу рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться

Поддерживает ли Mac mini (2018 г.) Intel Hyper-Threading?

Поддерживает ли Mac mini (2018 г.) Intel Hyper-Threading? — Спроси у другого
Сеть обмена стеками

Сеть Stack Exchange состоит из 179 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

Посетите биржу стека
  1. 0
  2. +0
  3. Войти
  4. Зарегистрироваться

Ask Different — это сайт вопросов и ответов для опытных пользователей аппаратного и программного обеспечения Apple.Регистрация занимает всего минуту.

Зарегистрируйтесь, чтобы присоединиться к этому сообществу

Любой может задать вопрос

Любой может ответить

Лучшие ответы голосуются и поднимаются на вершину

спросил

Просмотрено 3к раз

Я использую Mac mini (2018 г.) с версией 3.6-ядерный процессор Intel Core i5 с тактовой частотой 0 ГГц. Насколько я понимаю, этот чип имеет 6 физических ядер.

Монитор активности показывает графики производительности для 6 ядер. На других компьютерах Mac с Hyper-Threading, включенным по умолчанию, Activity Monitor показывает количество эффективных/виртуальных ядер, т. е. удвоенное количество физических ядер.

Так что означает отображение 6 ядер на этом Mac mini:

  • Этот чип не поддерживает технологию Hyper-Threading?

  • Hyper-Threading теперь отключен Apple по умолчанию (вероятно, из-за недостатков процессора Intel)?

  • У этого чипа действительно всего 3 ядра, а виртуальных 6?

Нимеш Нима♦

44.7k1515 золотых знаков128128 серебряных знаков184184 бронзовых знака

спросил 2 июля, 2019 в 6:21

Базиль БуркБэзил Бурк

9 9813131 золотой знак9595 серебряных знаков165165 бронзовых знаков

  • Этот чип не поддерживает технологию Hyper-Threading?

Правильно.Этот чип , а не поддерживает технологию Intel Hyper-Threading.

Hyper-Threading теперь Apple отключена по умолчанию

У этого чипа действительно всего 3 ядра, а виртуальных 6?

Этот чип имеет 6 физических ядер.


Из всех вариантов, предлагаемых Apple, функция Hyper-Threading доступна только в варианте с 6-ядерным процессором Intel Core i7 8-го поколения с тактовой частотой 3,2 ГГц.

Примечание для технически подкованных: протестированная нами модель Core i3 не предлагает технологии Turbo Boost или Hyper-Threading.Если вы обновитесь до модели Core i5, вы получите Turbo Boost, который позволяет увеличивать тактовую частоту для коротких всплесков. Если вы выберете модель Core i7, вы получите как Turbo Boost, так и Hyper-Threading для большей многопоточности.

Добавить комментарий

Ваш адрес email не будет опубликован.