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

24488
Gordon Gustafson

Я недавно слышал термин гиперпоточность, что такое гиперпоточность и почему это важно?

30
vs многоядерный: http://superuser.com/questions/133082/hyper-threading-and-dual-core-whats-the-difference?rq=1 Ciro Santilli 新疆改造中心 六四事件 法轮功 8 лет назад 0

4 ответа на вопрос

23
Earlz

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

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

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

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

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

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

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

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

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

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

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

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

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

2
Johnny Blaze

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

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

В деталях

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

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


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

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

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

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

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

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

Ссылки:

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

Intel Image

Похожие вопросы