8

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

3 ответа3

17

Многопоточность относится к общей задаче запуска более одного потока выполнения в операционной системе. Многопоточность в более общем смысле называется "многопроцессорность", которая может включать в себя несколько системных процессов (простым примером в 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-ядерный процессор.

4

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

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

-1

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

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