在AMD系统上以编程方式禁用硬件预取。

6

有没有一种编程方式可以像在这个主题中讨论的那样,在AMD系统上禁用硬件预取功能,就像在Intel系统中一样。

特别是针对AMD Opteron Barcelona或Istanbul架构。

2个回答

5

所有AMD Family 10h处理器(包括巴塞罗那和伊斯坦布尔)都有两个不同的硬件预取器。

  1. 第一个是传统的数据缓存预取器,它能识别连续的升序或降序缓存行访问流。可以通过将MSRC001_1022的第13位设置为“1”来禁用它。

  2. 另一个硬件预取器是“内存控制器预取器”。这是一个更通用的预取器,但仅在内存控制器内部运作(即不将预取的数据发送到核心 - 它只是使内存控制器在核心请求时更快地返回数据)。

    • 此预取器的主要控制在PCI配置空间中的Function 2,偏移11Ch中,对于巴塞罗那之后的处理器还有额外的控制在Function 2,偏移1B0h中。
    • 我成功地通过更新PCI配置空间中的值来禁用和重新启用“内存控制器预取器”在一个“活跃”的巴塞罗那系统上。(请勿在家中尝试!)
    • 内存控制器预取器的活动由硬件性能计数器事件1F0h显示,其中UnitMasks 02和04。
    • 请注意,上海/伊斯坦布尔/曼尼科尔的内存控制器预取器是“一致的”(意味着缓存一致性探测操作与内存预取一起发出),而巴塞罗那的内存控制器预取器不会发出缓存一致性操作(直到核心请求缓存行到达内存控制器时才会发出)。
上面的内容在 Family 10h 处理器的 BIOS 和内核开发人员指南中有记录:http://support.amd.com/us/Processor_TechDocs/31116.pdf

0

链接已失效。 - Andreas Abel

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