Могут ли два процесса работать одновременно на одном ядре процессора? - PullRequest
8 голосов
/ 19 января 2012

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

Edit: Спасибо за обсуждение и обмен! Мой кошелек для публикации моего вопроса здесь не для обсуждения параллельных вычислений. Он будет слишком большим, чтобы обсуждать его здесь. Я просто хочу знать, может ли многопоточное приложение получить большую выгоду от гиперпоточности, чем многопроцессорное приложение. После дальнейшего прочтения у меня есть следующие учебные записи.

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

2) Многопоточность выигрывает от гиперпоточности только в том случае, если в некотором исполняемом потоке возникают задержки. Я думаю, что эта точка может точно соответствовать общей причине того, почему и когда программист использует многопоточность. Если многопоточное приложение было оптимизировано. Это может не принести никакой пользы от потоков Hypter.

3) Если состояние процессора отображается на состояние процесса, я считаю, что Марк прав, что многопоточное приложение может даже получить больше преимуществ от технологии гиперпоточности.

4) Когда производитель ЦП говорит «поток», похоже, что его «поток» отличается от потока, который я знаю как программист java?

Ответы [ 3 ]

2 голосов
/ 19 января 2012

Нет, ядро ​​CPU с гиперпоточностью все еще имеет только один конвейер выполнения. Несмотря на то, что он выглядит как два ЦП для вышележащей ОС, в любой момент времени по-прежнему выполняется только одна инструкция.

Гиперпоточность была предназначена для того, чтобы ЦП мог продолжать выполнение одного потока, пока другой поток был остановлен, ожидая завершения ресурса или другой операции, не оставляя слишком много этапов конвейера пустыми и бесполезными. Это восходит к Pentium 4, с его абсурдно длинным конвейером - стойло было по сути катастрофическим для эффективности и пропускной способности, а гиперпоточность позволила Intel занимать процессор другими делами, пока он очищался от стойла.

1 голос
/ 21 января 2012

Несмотря на то, что ответ Марка Б является в значительной степени окончательным изложением работы HT, я просто хочу внести небольшой вклад, соединив эту статью, которая должна прояснить многое о HT: http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology/

0 голосов
/ 19 марта 2019

Краткий ответ, да.

Одноядерный процессор (процессор), может запускать 2 или более потоков одновременно.Эти потоки могут принадлежать одной программе, или они могут принадлежать различным программам и, следовательно, процессам.Этот тип многопоточности называется одновременным многопоточностью (SMT).

Информация о том, что ядро ​​ЦП может выполнять только одну инструкцию в любой момент времени, также не соответствует действительности.Современные процессоры используют параллелизм на уровне команд (ILP) путем дублирования ресурсов конвейера (например, 2 ALU вместо 1).Этот тип конвейера называется «суперскалярным» конвейером.

Страница википедии одновременного многопоточности:

одновременная многопоточность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...