Может ли два процесса одновременно работать на одном ядре процессора, который имеет гиперпоточность? Я узнаю из Интернета. Но я не вижу ясного прямого ответа.Могут ли два процесса одновременно работать на одном ядре ЦП?
Редактировать: Спасибо за обсуждение и обмен! Мой кошелек, чтобы опубликовать мой вопрос здесь, - это не обсуждение параллельных вычислений. Это будет слишком большой, чтобы быть обсужденным здесь. Я просто хочу знать, может ли многопоточное приложение получить больше от гиперпоточности, чем многопроцессорное приложение. После дальнейшего чтения я слежу за своими учебными заметками.
1) Технология ядра с поддержкой технологии Hyper-Threading имеет два набора состояний процессора и логику прерываний. Между тем, он имеет только один набор единиц исполнения и кеш. (Я еще не изучил, что такое конвейер)
2) Преимущества многопоточности от Hyper Threading только в том случае, если в некоторых выполненных потоках есть латентность. Я думаю, что этот момент может точно соответствовать общей причине, почему и когда программист использует многопоточность. Если оптимизировано многопоточное приложение. Это может не принести пользы от резьбы Hypter.
3) Если состояние ЦП соответствует состоянию процесса, я считаю, что Марк прав, что многопроцессное приложение может даже выиграть от технологии гиперпотоков.
4) Когда производитель процессора говорит «поток», похоже, что их «поток» отличается от потока, который я знаю как java-программист?
Спасибо за подтверждение что два процесса не могут работать на одном ядре ЦП одновременно. Но вы также упомянули о потоке в своем ответе. Мне кажется, что два потока тоже не могут работать одновременно? Или вы говорите только о случае, когда два потока разделяют ресурсы? Два потока, которые не имеют общего ресурса, могут работать одновременно на одном и том же ядре с гиперпотоком, правда? –
Внутри конвейера любого заданного ядра могут быть две нити, на разных этапах декодирования/предварительной обработки/выполнения/завершения. Там, где все это происходит, фактическое «выполнение» зависит от того, как вы определяете «выполнение». На каждой стадии конвейера никогда не будет более одной инструкции (-ов) нити, так что параллельного выполнения все равно не будет. просто параллельный. –
спасибо за разъяснение. похоже, что наше обсуждение сводится к параллельному исполнению и многозадачному и многопоточному программированию. По моему мнению, до сих пор я думаю, что мы можем сказать, что многопоточное приложение имеет шанс получить преимущество от гиперпотокового процессора. и многопроцессное приложение не может получить выгоду от гиперпоточности. ты согласен со мной? –