当前位置: 首页 > 面试题库 >

如何以编程方式禁用硬件预取?

芮雪风
2023-03-14
问题内容

我想以编程方式禁用硬件预取。

从使用硬件实现的预取器在英特尔®酷睿™微体系结构上优化应用程序性能以及
如何在32位英特尔®架构上的硬件和软件预取之间进行选择,我需要更新MSR以禁用硬件预取。

以下是相关片段:

“通过编写用于更改IA32_MISC_ENABLE 寄存器中位的设备驱动程序实用程序,还可以通过编程方式更改DPL预取和L2流预取设置MSR 0x1A0。这种实用程序提供了启用或禁用预取机制的能力,而无需任何服务器停机时间。

下表显示了中的位,这些位IA32_MISC_ENABLE MSR必须更改才能控制DPL和L2流预取:

Prefetcher Type MSR (0x1A0) Bit Value 
DPL (Hardware Prefetch) Bit 9 0 = Enable 1 = Disable 
L2 Streamer (Adjacent Cache Line Prefetch) Bit 19 0 = Enable 1 = Disable"

我尝试使用http://etallen.com/msr.html,但这没有用。我也尝试直接使用wrmsrin
asm/msr.h,但存在段错误。我尝试在内核模块中执行此操作……并杀死了计算机。

顺便说一句-我正在使用内核2.6.18-92.el5,它已MSR链接到内核中:

$ grep -i msr /boot/config-$(uname -r)
CONFIG_X86_MSR=y
...

问题答案:

从Intel参考:
必须在特权级别0或实地址模式下执行此指令;否则,将生成一般保护异常#GP(0)。在ECX中指定保留的或未实现的MSR地址也会导致一般保护异常


在使用此指令之前,应使用CPUID指令确定是否支持MSR(EDX [5] = 1)。

因此,您的故障可能与不支持MSR或使用错误MSR地址的CPU有关。

在内核源中使用MSR的例子很多:

在内核源中,对于单个cpu,它演示了在arch / i386 / kernel / cpu / intel.c中通过功能禁用Xeon的预取:

static void __cpuinit Intel_errata_workarounds(struct cpuinfo_x86 * c)

rdmsr函数参数是msr号,指向低32位字的指针和指向高32位字的指针。
wrmsr函数的参数是msr号,低32位字值和高32位字值。

多核或smp系统必须将cpu结构作为第一个参数传递:
void rdmsr_on_cpu(unsigned int cpu,u32 msr_no,u32 * l,u32 * h);
void wrmsr_on_cpu(unsigned int cpu,u32 msr_no,u32 l,u32 h);



 类似资料:
  • 是否有一种编程(基于属性)的方法在Spring引导(1.2.2)中禁用RabbitAutoConfiguration。 看起来像Spring。rabbitmq。dynamic=false仅禁用AmqpAdmin,而不禁用连接工厂等。 我们想要一个模型,其中应用程序属性可以来自Spring Cloud config(包括控制总线)或通过-D jvm args。这个决定是在部署时做出的。当属性来自-D

  • 问题内容: Linux提供了stime(2)调用来设置系统时间。但是,虽然这将更新系统时间,但不会将BIOS硬件时钟设置为与新系统时间匹配。 Linux系统通常会在关机时并定期将硬件时钟与系统时间同步。但是,如果在这些自动同步之一之前重启机器,则重新启动机器的时间将不正确。 设置系统时间时,如何确保更新硬件时钟? 问题答案: 查看rtc手册页以获取详细信息,但是如果您以root用户身份登录,则如下

  • 问题内容: 使用jQuery,我想禁用主体的滚动: 我的想法是: 组 捕获当前 绑定到正文滚动事件,将scrollTop / scrollLeft设置为捕获的值。 有没有更好的办法? 更新: 我知道有人会在想“为什么他不只是在面板上使用?”。 请不要提出这个建议,因为我还有其他原因。 问题答案: 我发现执行此操作的唯一方法与您所描述的类似: 抓住当前滚动位置(不要忘记水平轴!)。 将溢出设置为隐藏

  • 我正在开发一个应用程序,用户可以通过点击按钮启用/禁用移动网络。我在谷歌上搜索过这个问题,但我只得到了飞机模式的解决方案。在飞行模式下,WI-FI和蓝牙也被禁用。我不希望他们使用飞机模式的概念来禁用。我只想禁用移动网络。按语法实现它的可能方式是什么?

  • 请在这里参考我的问题。这个问题是它的延伸: 如何在有线耳机和免提电话之间检查和重定向音频? 通过包含权限,我能够部分解决我的问题 在我的Android清单中,同样的代码。现在,我可以启用和禁用手机扬声器,但当有线耳机仍与手机物理连接时,我无法以编程方式关闭有线耳机连接。 有人能在这里帮助我吗?我是否可以使用特定的意图来禁用和启用有线耳机连接?

  • 问题内容: 我需要从Windows XP中的脚本启用/禁用完全网络接口。我正在寻找python解决方案,但是任何通用的方式(例如WMI,某些命令行ànetsh,某些Windows调用)都是受欢迎的,并且会进行调整。谢谢。 问题答案: 使用netsh接口用法设置接口[name =] IfName [[admin =] ENABLED | DISABLED [connect =] CONNECTED