2012-01-18 1 views
8

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

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

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

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

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

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

ответ

2

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

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

+0

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

+0

Внутри конвейера любого заданного ядра могут быть две нити, на разных этапах декодирования/предварительной обработки/выполнения/завершения. Там, где все это происходит, фактическое «выполнение» зависит от того, как вы определяете «выполнение». На каждой стадии конвейера никогда не будет более одной инструкции (-ов) нити, так что параллельного выполнения все равно не будет. просто параллельный. –

+0

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

1

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

+0

Спасибо за обмен. После быстрого чтения я узнаю два термина: программный поток и аппаратный поток. Позвольте мне узнать больше. –

Смежные вопросы