我正在为我的爱好OS编写CPU检测和通用环境检测代码。是否存在需要多次调用CPUID的情况?也就是说,如果系统有多个内核,操作系统是否需要在每个内核上调用CPUID?NUMA也是如此。
AMD和Intel CPUID手册在这一点上都不清楚。在osdev wiki上有一篇文章提到调用名为Detecting CPU Topology的CPUID,但我的阅读并不清楚什么时候需要调用CPUID以及需要调用多少次。
发布于 2011-12-26 02:24:42
因为已经快一个星期了,没有人能够回答这个问题(可能是因为假期),我无论如何都会尝试回答这个问题。
我认为答案是肯定的,,你可能需要在每个内核上调用CPUID。其中一个原因是,目前并不是所有(即使是x86)系统都是同构的。
例如,我在一个超频论坛上读到(我找不到链接),它可以在一些双插槽服务器主板上混合两种不同的处理器型号。这个人有一个双插槽1366系统,有两个不同速度的处理器。(和不同的型号)
因此,在这种情况下,调用CPUID将取决于线程所在的处理器-因此,您需要在每个处理器上调用它一次,以获取所有信息。
在我的一个服务器主板的手册中,它还说明您可以混合使用不同型号的处理器(有一定的限制)。当然,可以混合使用同一处理器型号的两个不同的steppings。
这个原因(异构拓扑)本身就是需要在每个核心上调用CPUID的原因。
https://stackoverflow.com/questions/8568135
复制相似问题