超线程CPU上的硬件线程(逻辑核心)+调度程序

4
我知道软件线程会获得一定的执行时间,并且每个软件线程轮流执行该块时间,但它们不会同时(在单个硬件线程上)执行。
我的问题是,当一个核心有2个或更多硬件线程时,每个硬件线程是在该核心上并行运行,还是像软件线程一样获得执行块的时间,玩“轮流执行”游戏?
硬件线程=逻辑核心。

什么是“硬件线程”?超线程? - H H
硬件线程 = 逻辑核心 - Dustin Davis
2个回答

4

每个(逻辑)核心只有1个(硬件)线程。

英特尔通过在1个物理核心上运行两个逻辑线程来使问题变得复杂,因此只有对某些处理器才适用您的问题。而超线程是复杂的,但大多数情况下是并发的。

对于我们程序员来说,只存在一次运行1个线程的逻辑核心。


我进行了额外的研究,证实了你所说的“大多数是并发的”。操作系统不知道HT的细节,但必须具备HTT意识以在逻辑核心上安排工作。由于HT使用多个寄存器集和独立执行,我认为它要么是并发的,要么就像你所说的那样大多数是并发的。 - Dustin Davis

0

如果你在谈论一个支持超线程的处理器,那么这个处理器对于大多数执行周期都有额外的执行管道。就 .net 应用程序而言,你将不会拥有软件线程所具有的时间分片和锁定。但你仍然需要确保你的操作是线程安全的,否则你需要自己进行锁定以确保你不会在同时从多个线程调用对象时破坏它们。验证这一点的快速测试是使用支持超线程的计算机,生成一些执行处理器密集型操作的线程,并查看 CPU 使用率。如果你看到所有虚拟核心都达到了 100%,那么你就成功了。


不回答我关于硬件线程的时间调度或这些线程的并发性的问题。 - Dustin Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接