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

35809
rose

Я слышал термины «гиперпоточность» и «многопоточность», но в чем именно разница между ними? Какой процессор Intel их использует?

8
Вы пытаетесь сравнить вещи, которые не сопоставимы напрямую; просто связано. Это все равно что спросить: "В чем разница между ногой и обувью?" Кроме того, что показало ваше исследование? Где именно вы зацикливаетесь на определении различий, основанных на определениях, которые можно легко найти в Интернете? Ƭᴇcʜιᴇ007 10 лет назад 1
Связанный: [Hyper-Threading и Dual-Core, в чем разница?] (Http://superuser.com/questions/133082/hyper-threading-and-dual-core-whats-the-difference?rq=1), [Что такое гиперпоточность и как она работает?] (Http://superuser.com/questions/122536/what-is-hyper-threading-and-how-does-it-work?lq=1) Ƭᴇcʜιᴇ007 10 лет назад 1
я не знаю ни многопоточности, ни гиперпоточности, меня просят узнать их rose 10 лет назад 1
Нацисты переполнения стека закрыли тему как «не по теме» ... Это очень хороший вопрос, популярный и не должен закрываться. Robbo_UK 7 лет назад 0
http://superuser.com/questions/133082/hyper-threading-and-dual-core-whats-the-difference?noredirect=1&lq=1 Ciro Santilli 新疆改造中心 六四事件 法轮功 7 лет назад 0

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

17
Horn OK Please

Многопоточность относится к общей задаче запуска более одного потока выполнения в операционной системе. Многопоточность в более общем смысле называется «многопроцессорность», которая может включать в себя несколько системных процессов (простым примером в Windows может быть, например, одновременный запуск Internet Explorer и Microsoft Word), или она может состоять из одного процесса, который имеет несколько потоков внутри Это.

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

Обратите внимание, что всякий раз, когда программные потоки выполнения пытаются выполнить в любой момент времени больше, чем доступные аппаратные (одновременные) потоки выполнения, эти программные потоки будут «чередоваться» среди доступных ядер. В случае «однопроцессорного» (одно ядро ​​ЦП без гиперпоточности), если у вас более одного программного потока, они всегда будутчередоваться Если у вас 4-ядерный ЦП с гиперпоточностью, это 8 «аппаратных потоков», то есть ЦП может одновременно выполнять 8 потоков выполнения, поэтому, если у вас было 8 программных потоков, пытающихся работать, все они могли работать одновременно ; но если бы у вас было 9 программных потоков, один из аппаратных потоков должен был бы чередовать пару потоков (точная пара выбранных потоков зависела бы от реализации планировщика операционной системы).


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

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

Возьмем следующий пример, где предполагается, что «1 ядро» работает одинаково во всех примерах:

Пример 1: 2 ядра, без гиперпоточности.
Пример 2: 4 ядра, без гиперпоточности.
Пример 3: 2 ядра с гиперпоточностью.
Пример 4: 4 ядра с гиперпоточностью.

В этом случае Пример 4 всегда будет самым быстрым. Пример 2 иногда может быть примерно таким же быстрым, как в примере 4, для рабочих нагрузок, которые крайне плохо подходят для использования преимуществ оптимизации Hyperthreading.

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

Конечно, пример 1 будет самым медленным из всех примеров, но иногда он может быть примерно таким же быстрым, как пример 3, когда выполняется рабочая нагрузка, плохо подходящая для гиперпоточности.

В реальных тестах производительности современных процессоров Intel мы обычно обнаруживаем, что гиперпоточность приводит, в общем-то, к повышению производительности на 20-40% по сравнению с отсутствием гиперпоточности (при этом случай «без гиперпоточности» сравнивается с отключением функции гиперпоточности в BIOS). Иногда возникают рабочие нагрузки, в которых отключение гиперпоточности демонстрирует преимущество в производительности, но эти рабочие нагрузки могут быть редкими при реальном использовании. Но если бы у меня был выбор между 4 ядрами с гиперпоточностью или 8 ядрами, предполагая, что каждое ядро ​​имеет одинаковую производительность, я бы каждый раз выбирал 8-ядерный процессор.

Точнее говоря, многопоточность и многопроцессорность - это не одно и то же. Потоки делят контекст выполнения с процессом, с которым они связаны, в то время как процессы имеют свои собственные контексты выполнения. Однако для этого ответа это различие не так важно. Tero Kilkanen 10 лет назад 2
Технология гиперпоточности не была «создана Intel»; для mainline x86 это просто название торговой марки для одновременной многопоточности. Если бы Альфа 21464 была произведена, она была бы одним из первых выдающихся пользователей SMT. Intel действительно впервые выпустила SMT (возможно, за исключением менее известных процессоров) с некоторыми процессорами Pentium 4, но основная идея не была изобретением Intel. Paul A. Clayton 10 лет назад 1
Quibble: Hyperthreading не ** строго ** медленнее, чем отдельные ядра. Можно придумать (искусственные) случаи, когда совместное использование кэшей L1 является большим преимуществом, чем полное использование ресурсов ядра. Другой специфический случай может быть, когда один поток постоянно активен, а другой кратко обрабатывает прерывистые события; прерывистое пробуждение ядра обходится дороже, чем пробуждение потока на активном ядре. Для потоков с чрезвычайно низким ILP, если проблема с кэшем не является проблемой, тогда более высокая энергоэффективность при использовании одного ядра может обеспечить более высокую турбобустинг (лучшую производительность). Paul A. Clayton 10 лет назад 2
Ответы редактируются на SU, поэтому, если вы, ребята, хотите улучшить его, пожалуйста, не стесняйтесь. Кроме того, имейте в виду очевидный уровень знаний ОП; даже мой ответ сам по себе, вероятно, более технический, чем они ожидали или хотели. Я намеренно замалчивал некоторые детали в пользу простоты объяснения. Я сомневаюсь, что OP собирается разрабатывать процессоры в ближайшее время и отчаянно должен знать все эти детали. Интересные комментарии, тем не менее. Horn OK Please 10 лет назад 1
Предлагаемые изменения, которые изменяют содержание (т. Е. Не просто исправление грамматики / опечаток или перефразирование для ясности), скорее всего, будут отклонены. Paul A. Clayton 10 лет назад 1
4
Tero Kilkanen

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

Гиперпоточность - это концепция Intel, которая реализует «одновременную» обработку нескольких потоков в одном ядре процессора. Операционная система видит два процессорных ядра, хотя есть только одно физическое ядро.

-1
mtak

Гиперпоточность - это реализация Intel (одновременной) многопоточности.

В отличие, скажем, многоядерный или SMP? ;) Ƭᴇcʜιᴇ007 10 лет назад 1
Неверно: см. Ответ allquixotic. Tonny 10 лет назад 1
Многопоточность также относится к концепции вычислительной архитектуры, а не к программной архитектуре: http://en.m.wikipedia.org/wiki/Multithreading_(computer_architecture) mtak 10 лет назад 2
Технически, гиперпоточность также была применена к Itanium Switch-on-Event-MultiThreading, то есть кажется, что это общее название Intel для аппаратной многопоточности. До сих пор Intel не внедрила Fine-Grained MT (с чередованием) или SoEMT в основной x86. (Xeon Phi * может * быть средним звеном между гибким чередованием и обработкой бочек, так как инструкции из одного и того же потока не могут быть выданы в последовательных циклах, но есть 4 потока. Гиперпоточность, по-видимому, не используется для Xeon Phi. ) Paul A. Clayton 10 лет назад 1
Чтобы уточнить, термин * термин * гиперпоточность, похоже, не применяется * к Xeon Phi (хотя он более "гипер" по скорости переключения потоков, чем гиперпоточность Itanium [каждый цикл против более грубого переключения] и более "гипер" по количеству потоков, чем любая другая гиперпоточность [4 против 2 потоков]). Paul A. Clayton 10 лет назад 1

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