Что такое гиперпоточность и как она работает?

Ответы:

38

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

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

Earlz
источник
6
+1 следует добавить, что гиперпоточность специфична для реализации SMT в Intel, например, в процессоре SPARC реализована другая форма SMT, но с аналогичными целями.
Sybreon
@ Эрлз, вы предлагаете, чтобы процессор работал с двумя потоками, разделив ядра на две части? или похоже, что параллелизм, созданный в реальности, гиперпоточность заставляет процессор переключаться с одного потока на другой?
Doopy Doo
4
@DoopyDoo тоже нет. По сути, процессор имеет два «ядра выполнения», которые являются конвейером для инструкций и тому подобного, и он также имеет два набора регистров и другие важные вещи. Разница между гиперпоточностью и обычным двухъядерным процессором состоит в том, что некоторые вещи НЕ являются дублируется. Например, может быть только один ALU. Таким образом, это будет означать, что, в то время как двухъядерный процессор может добавлять два отдельных набора чисел одновременно, поскольку процессору с многопоточностью придется заставить одно из виртуальных ядер ждать, пока не наступит очередь с ALU. Конечно, это упрощенный пример
Эрлз
12

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

Гиперпоточность заставляет ОС думать, что процессор имеет вдвое больше ядер, и часто дает улучшение производительности, но только в районе 15-30% в целом - хотя в некоторых обстоятельствах может фактически наблюдаться снижение производительности (= <20%).

В настоящее время большинство чипов Atom и все i7 (и Xeon-эквивалентные чипы) имеют гиперпоточность, как и некоторые старые P4. В случае с Atoms это отчаянная попытка улучшить производительность без значительного увеличения энергопотребления; в случае i7s он отличает их от чипов i5.

Сложная обработка не принесет много пользы от HT, но определенные (простые, многопоточные) задачи, такие как кодирование видео, выигрывают от HT. На самом деле в этом не так много ...

CJM
источник
95% правильно. Если нормальное ядро ​​= A + B, то ядро ​​с гиперпоточностью больше похоже на A + 2 x B. Они МОГУТ выполнять два потока одновременно, если оба потока не нуждаются в A.
Винсент Ванкалберг
5

Когда одноядерный может действовать как двухъядерный

это гиперпоточность

В деталях

Внедрение Intel технологии одновременной многопоточности известно как технология Hyper-Threading, или технология HT.

Технология HT делает один процессор с
точки зрения программного обеспечения похожим на несколько логических процессоров. Это позволяет операционным системам и приложениям планировать несколько потоков для логических процессоров так же, как
в многопроцессорных системах.


Гиперпоточность позволяет одному процессору выполнять два потока одновременно, но не во всех условиях.

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

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

Основная функция

Гиперпоточность заключается в увеличении количества независимых инструкций в конвейере; он использует суперскалярную архитектуру, в которой несколько команд работают с отдельными данными параллельно

Intel говорит, что гиперпоточность очень эффективна, потому что она использует ресурсы, которые в противном случае были бы простаивали или использовались недостаточно.

Ссылки:

Wikipedia
StackOverflow
Многоядерное программирование Digital_Edition стр. 8

введите описание изображения здесь

Intel Image

Джонни Блейз
источник
3

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

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

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

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

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

thomasrutter
источник