在Skylake中正确禁用使用MSR进行的硬件预取

时间:2019-02-18 18:36:25

标签: caching prefetch microprocessors papi msr

我正在尝试在计算机上禁用硬件预取:

CPU系列:6

型号:78

型号名称:Intel(R)CoreTM i5-6200U CPU @ 2.30GHz

我已经检查过:gcc -march = native -Q --help = target | grep march-命令,它是Skylake微体系结构。

我已经安装了msr-tools。 grep -i msr / boot / config-$(uname -r)给出结果:CONFIG_X86_MSR = m-我不确定是否有必要将其设置为Y,或者如何设置。我正在尝试使用此帖子:

How do I programmatically disable hardware prefetching?

Unable to disable Hardware prefetcher in Core i7

但是我认为帖子有些旧,并且不使用0x1a4地址。另外,在注释中也没有描述如何使用该地址来完成此操作,也没有描述修改0x1a4或0x1a0之间是否没有区别。

我已经阅读了这篇文章:https://software.intel.com/en-us/articles/disclosure-of-hw-prefetcher-control-on-some-intel-processors,它说可以通过将0x1A4中的0-3位设置为1来禁用预取。 modprobe msr-执行此命令不会产生错误(也不打印任何消息)。然后我正在尝试这两个命令:

sudo wrmsr -p 0 0x1a4 15 //对于核心0

sudo wrmsr -p 2 0x1a4 15 //对于核心2

15用于将所有后4位设置为1

您能帮我确保我正确禁用了预取器吗?由于我对sudo wrmsr -p 0 0x1a4 15-命令做了很多假设,所以我不确定我是否正确使用了它。我试图提供所有信息,但是如果有其他必要,请告诉我。 (我缩短了帖子,因为我认为这太久了,无法完成)

1 个答案:

答案 0 :(得分:1)

我发现此命令运行正常。 sudo modprobe msr-虽然应该首先执行。主要问题是我使用papi事件对其进行测试的方式