首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法禁用核心i7中的硬件预取程序

无法禁用核心i7中的硬件预取程序
EN

Stack Overflow用户
提问于 2013-10-17 19:43:41
回答 2查看 3.7K关注 0票数 7

当我试图在我的核心i7系统中禁用硬件预取程序时,我遇到了错误。我遵循链接如何以编程方式禁用硬件预取?的方法

在我的系统里

grep -i msr /boot/config-$(uname -r)

CONFIG_X86_DEBUGCTLMSR=y

CONFIG_X86_MSR=y

CONFIG_SCSI_ARCMSR=m

这是我的错误信息

根@ ./rdmsr 0x1a0 850089 [root@ ./wrmsr -p 0 0x1a0 0x850289 (禁用核心i7中的硬件预取程序) wrmsr:pwrite:输入输出错误

在禁用相邻缓存行预取器时,我也会遇到相同的错误。

知道如何解决这个问题吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-03-31 17:02:07

结果表明,对于奔腾4和其他一些旧型号,0x1A0位9和19是正确的MSR/bits,但0x1A4位0-3是最近几种新型号的MSR位。我在Skylake服务器上测试了0x1A4,它也能工作,而0x1A0没有。

这里的快速文档:一些Intel处理器H/W预取器控制的公开

在开发人员手册的vol3:(点击这里)上有更多关于这个和其他MSR的更完整的文档。该文档还确认,0x1A0位9和19用于较旧的处理器模型,而0x14A用于更新的模型。

另一个MSR看起来也很有趣(“禁用L3缓存”有人吗?)只需确保在正确的处理器家族下寻找MSRs!

票数 5
EN

Stack Overflow用户

发布于 2014-01-27 14:12:02

MSR规范特定于英特尔处理器系列,因此,您必须首先检查是否可以通过Intel架构软件开发人员手册禁用CPU预取程序,然后检查必须为此切换哪些寄存器位。

对于我的处理器,IntelXeon5650 (06_2CH系列)手册指定了地址0x1A0的寄存器IA32_MISC_ENABLE的10到8位。我猜这意味着我不能通过MSR切换预取器。根据英特尔员工这里的回答:"Intel has not disclosed how to disable the prefetchers on processors from Nehalem onward. You'll need to disable the prefetchers using options in the BIOS."

在我的工作站上运行

代码语言:javascript
复制
sudo wrmsr -p 0 0x1a0 0x850289

在以下方面的成果:

代码语言:javascript
复制
wrmsr: CPU 0 cannot set MSR 0x000001a0 to 0x0000000000850289

代码语言:javascript
复制
sudo wrmsr -p 0 0x1a0 0x850088

很管用。

这似乎证实了我不能禁用使用MSR的预取。请注意,此错误与您的错误不同,在阅读了上面第35.9章中提到的Intel手册之后,您的处理器似乎也无法用msr取消预取器。我不知道为什么我们没有相同的错误消息,您的msr模块和Linux内核的版本是什么?(modinfo msr)

因此,BIOS可能是禁用不同预取程序的唯一方法,这是我的Xeon 5650的情况。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19435788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档