如何在英特尔至强可扩展处理器上禁用L3缓存预取器?

3

我已经查阅了英特尔手册Vol.4。MSR 0x1a4 可以控制L1缓存预取器和L2缓存预取器,但是我只想禁用L3缓存预取器。哪个MSR可以控制它?

1个回答

4
当前Intel处理器中没有专门的L3预取器。 但是,从Sandy Bridge开始,L2流预取器可以选择将数据预取到L3缓存或L2缓存中。这在Intel Optimization Manual中简要讨论。
LLC预取可以单独禁用,但Intel仅向BIOS供应商披露了如何执行此操作。 在任何一代Xeon SP上,都有一个名为“LLC预取”的BIOS选项,您可以使用它来启用或禁用LLC预取。 如果禁用,则可能会降低L2流预取器的侵略性,但仍然可以将数据预取到L2缓存中。正如您可能已经知道的那样,Intel已披露如何通过MSR寄存器完全禁用所有Intel x86处理器上的L1D和L2预取器。
Xeon SP上的其他相关预取机制包括,如果对L3的访问被预测为未命中,则向本地可缓存地址发送预取请求,以及类似地向远程可缓存位置(特别是跨套接字)发送预取请求。这些机制很有用,因为L2-miss访问延迟的相当大一部分时间花费在了用于确定命中/未命中的L3查找操作上。也有BIOS选项来控制这些预取机制,确切的名称取决于BIOS供应商。但请注意,这些情况下的预取行会绕过L3,就像任何其他核发起的请求一样。从技术上讲,这样的预取请求是由L3发送的。
所有预取机制通常默认启用,除了LLC预取可能默认禁用。

2
所有我的戴尔服务器默认禁用LLC预取机制。我启用了它并进行了一些测试,发现对性能只有极小的影响 - 有时会更快,有时会更慢,大多数情况下非常相似。SKX/CLX处理器具有不寻常的特性,即对于许多内存访问模式,单线程跨套接字带宽高于单线程本地带宽。 - John D McCalpin
@JohnDMcCalpin 很好的观察。我刚在PowerEdge R440服务器上检查了一下,LLC预取选项默认是禁用的。我想知道为什么。这可能是因为英特尔默认禁用了它,而戴尔只是保留了英特尔出于某种原因选择的默认值。据我所知,在任何客户端系统中都没有这样的BIOS选项,因此至少在客户端上,它应该是由英特尔默认启用的。 - Hadi Brais

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接