我在不同负载和配置条件下进行了许多试验和测量,但结果是相同的。在使用CPUFreq进行一些试验后(没有运行应用程序,我在每个核心上设置了不同的频率,最终测得的频率与cpufreq-info -w相等),我想知道CPU核心是否真的可以以不同的独立频率运行,或者是否存在硬件策略或约束。
最后,是否存在一种CPU型号,使得这种精细的频率缩放成为可能?
我正在使用的CPU是Intel Core i5 750。
您无法单独控制活动核的频率。但是,您可以控制所有活动核心的频率相同。原因在前面的答案中已经解释 - 所有核都在相同的活动电压平面上。 希望下一代Haswell处理器将使单独控制每个核心成为可能。
我认为你缺少一个重要的知识点!
了解电源和时钟域。域内的所有处理器核心都以相同的P状态(即相同的频率和电压)运行。在该域中,所有核心将运行的P状态始终是请求该域中最高P状态的核心的P状态。MSR根本不反映这一点,内核暴露的接口也不是这样。
Anandtech有一篇很好的文章: http://www.anandtech.com/show/2658/2
“这与AMD的Phenom非常相似,但两者之间的区别在于它们如何处理电源管理。虽然AMD允许单个核心请求不同的时钟速度,但Nehalem试图以相同的频率运行其所有核心; 如果一个核心处于空闲状态,则它只是被电源门控,并且核心实际上被关闭。”
我没有将功率计连接到SB / IB,但我猜测行为是相同的。
cpufreq-info 会显示哪些核心需要在它们的 P-state 中同步:
[root@navi ~]# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0 1 <---- THIS
CPUs which need to have their frequency coordinated by software: 0 <--- and THIS
maximum transition latency: 10.0 us.
至少因为这个原因,我建议通过cpufreq接口而不是直接设置寄存器,并且使其能够在可能具有不常见要求的非英特尔CPU上运行。
如果您还没有这样做,请检查如何使内核线程粘附到特定的核心,以避免意外切换。
我想感谢每个人的贡献! 进一步调查后,我发现了其他细节并与社区分享。
正如建议的那样,Nehalem将所有核心放置在单个时钟域中,因此在所有核心中设置的最大频率应用于所有核心;一些工具可能会显示空闲核心上的不同频率,但只需运行任何应用程序即可使频率提高到最大。 从我的测试中可以看出,这也适用于Sandy Bridge,其中核心和LLC切片都驻留在相同的频率/电压域中。 我认为这种行为也会发生在Ivy Bridge上,因为它只是一个“tick”迭代。 相反,我认为Haswell将核心和LLC切片放置在不同的、单一的域中,从而实现每个核心的频率。这也在多个页面上进行了广告宣传,例如 http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4