В чем разница между гиперпоточностью и несколькими ядрами?

42

В разговоре с сетевым администратором я упомянул, что моя машина была двухъядерной. Он сказал мне, что это не так. Я открыл диспетчер задач, перешел на вкладку производительности и показал ему, что есть два отдельных графика использования процессора. У меня дома есть четырехъядерный компьютер с четырьмя графиками. Он сказал, что на этой конкретной машине есть два графика из-за гиперпоточности. Раньше у меня был сверхпоточный процессор Pentium 4, но я так и не понял, что это значит. Так в чем же разница между гиперпоточностью и двухъядерностью? И как вы говорите, какой у вас есть?

Джош Стодола
источник

Ответы:

20

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

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

Существуют и другие многоядерные чипы, которые имеют более двух ядер, и, как отметил Свиш, последние предложения Intel по многоядерности также поддерживают Hyper-Threading на всех ядрах.

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

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

Если у вас есть процессор Intel, вы можете вместо этого загрузить утилиту Intel ID процессора .

грабить
источник
И многоядерные чипы, которые поддерживают гиперпоточность, поэтому вы получаете вдвое больше логических ядер.
Свиш,
Поблагодарить! Как мне сказать (изнутри ОС), какой у меня тип процессора?
Джош Стодола
3
UltraSparc T2 + имеет 8 ядер, каждый из которых поддерживает 8 потоков, что делает его 64 виртуальными процессорами на одном чипе: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre
Способ узнать, какой у вас процессор, зависит от операционной системы, которую вы используете.
jlliagre
@jilliagre: хорошо!
ограбить
16

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

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

Смотрите также: этот вопрос

Earlz
источник
6

Гиперпоточность - более дешевая и медленная альтернатива двухъядерным процессорам.

Intel Руководство Volume 3 Система Руководство по программированию - 325384-056US сентября 2015 8,7 «INTEL Гиперпоточность TECHNOLOGY АРХИТЕКТУРА» описывает HT кратко. Он содержит следующую диаграмму:

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

TODO на сколько процентов медленнее в среднем в реальных приложениях?

Гиперпоточность возможна, потому что современные ядра с одним ЦП уже выполняют несколько инструкций одновременно с конвейером команд https://en.wikipedia.org/wiki/Instruction_pipelining

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

Гиперпоточность далее разделяет функции, используя:

  • единый бэкэнд, который на самом деле выполняет инструкции со своим конвейером.

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

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

    Двухъядерный также будет иметь 2 фронтэнда, по одному на каждый бэкэнд.

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

Два гиперпотока в одном ядре совместно используют дополнительные уровни кэша (TODO сколько? L1?), Чем два разных ядра, которые разделяют только L3, см .:

Интерфейс, который каждая гиперпотока предоставляет операционной системе, подобен интерфейсу реального ядра, и обоими можно управлять отдельно. Так cat /proc/cpuinfoпоказывает мне 4 процессора, хотя у меня только 2 ядра с 2-мя гиперпотоками в каждом.

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

Это видео LinusTechTips содержит безрассудное нетехническое объяснение: https://www.youtube.com/watch?v=wnS50lJicXc

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
1
Собираетесь ли вы ответить на ваши вопросы "TODO"?
pacoverflow
1
@pacoverflow, если я когда-нибудь узнаю ответ, или если кто-то отредактирует ответ для меня :-)
Сиро Сантилли 改造 改造 中心 法轮功 六四 事件