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

时间:2010-02-16 19:12:26

标签: linux prefetch amd-processor

有没有办法在AMD系统上以编程方式禁用硬件预取器,就像在this topic

中讨论的英特尔系统一样

专门针对AMD Opteron Barcelona或Istanbul架构。

2 个答案:

答案 0 :(得分:4)

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

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

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

    • 此预取程序的主要控制在PCI配置空间,功能2,偏移11Ch,在功能2中具有附加控制,在巴塞罗那之后为处理器偏移1B0h。
    • 通过/ dev / mem设备驱动程序更新PCI配置空间中的值,我成功地在“实时”Barcelona系统上禁用和重新启用此预取器。 (不要在家里试试!)
    • 内存控制器预取程序的活动由硬件性能计数器事件1F0h显示,UnitMasks 02和04.
    • 请注意,上海/伊斯坦布尔/ MagnyCours的内存控制器预取程序“连贯”运行(意味着缓存一致性探测操作与内存预取一起发布),而巴塞罗那的内存控制器预取程序不会发出缓存一致性操作(它们在核心对高速缓存行的请求到达内存控制器之前不要发出。)
  3. 上面的内容记录在BIOS和内核开发人员家庭10h处理器指南中:http://support.amd.com/us/Processor_TechDocs/31116.pdf

答案 1 :(得分:1)

使用msr工具更改p407上AMD支持文档中指定的DC_CFG位

http://support.amd.com/us/Processor_TechDocs/31116.pdf

相关问题