35

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

4 ответа4

27

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

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

9

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

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

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

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

2

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

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

В деталях

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

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


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

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

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

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

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

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

Ссылки:

Википедия
Переполнение стека
Многоядерное программирование Digital_Edition стр. 8

Intel Image

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .