Я слышал термины "гиперпоточность" и "многопоточность", но в чем именно разница между ними? Какой процессор Intel их использует?
Я слышал термины "гиперпоточность" и "многопоточность", но в чем именно разница между ними? Какой процессор Intel их использует?
Ответы:
Многопоточность относится к общей задаче запуска более чем одного потока выполнения в операционной системе. Многопоточность в более общем смысле называется «многопроцессорность», которая может включать в себя несколько системных процессов (простым примером в 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-ядерный процессор.
Многопоточность - это термин для параллельной обработки на уровне операционной системы. Процессор не имеет ничего общего с многопоточностью.
Гиперпоточность - это концепция Intel, которая реализует «одновременную» обработку нескольких потоков в одном ядре процессора. Операционная система видит два процессорных ядра, хотя есть только одно физическое ядро.