Windows是否知道如何将线程适当地分配给具有超线程的四核处理器?


0

所以,我一直试图谷歌这个答案,但我找不到这个问题的直接技术答案。 (或者如果确实如此,那就是令人困惑的方式)

所以,假设你有一个使用2个线程的程序/游戏,只有2个线程。使用四核CPU和超线程,它是否会知道仍然使用两个PHYSICAL核心而不是仅仅两个线程,使用50%的CPU而不是25%的cpu?超线程是否会导致这种类型的问题,人为地使用它真正能够/应该做的一半? Windows如何知道如何处理所有这些?

谢谢!对不起,如果我问这个问题的方式很奇怪,只是想简明扼要地说清楚。


1
您创建了一个名为的帐户 困惑的超线程 :D
ADTC

1
它给了我一个选择作为匿名访客注册,然后它要求一个名字......所以我给了它一个哈哈
ConfusedHyperThreader

有人知道这个问题的答案......没人?
ConfusedHyperThreader

对不起,还没有人回答。也许你可以扩展你的问题,你已经走了多远,到目前为止你学到了什么,以及究竟什么不清楚。 我用Google搜索了一下,但我也运气不好:)
ADTC

我没有源,但我相信Vista和up是“超线程感知”,并且知道真实和超线程内核之间的区别。
LawrenceC

Answers:


1

是的,它做你想要的。 Windows知道哪个逻辑处理器在哪个核心。它将只使用每个核心一个“逻辑处理器”,直到您有更多的线程想要同时运行而不是核心。

(“逻辑处理器”是Windows内部用于“可以运行线程的东西”的名称。如果你没有打开HT,每个核心就有一个LP。如果你打开HT,每个核心有两个LP。这使我们总能简单地谈论“逻辑处理器”,而不必经常对事物进行限定。)

选择“在哪里运行线程”的确切算法描述于 Windows内部 所罗门,鲁西诺维奇和伊内斯库。这是一个冗长的描述,包括许多“边缘情况”,例如驻留核心,NUMA机器(具有两个或更多物理CPU封装,每个都有自己的RAM存储区)等。

但是,是的:Windows尝试在每个核心中保留一个LP空闲,直到有多个线程要运行而不是核心。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.