有没有一种方法可以像在 Intel 系统中那样以编程方式禁用 AMD 系统上的硬件预取器,如这个话题 https://stackoverflow.com/questions/784041/how-do-i-programatically-disable-hardware-prefetching
专门针对 AMD Opteron 巴塞罗那或伊斯坦布尔架构。
所有 AMD 系列 10h 处理器(包括巴塞罗那和伊斯坦布尔)都有两个不同的硬件预取器。
第一个是传统的数据缓存预取器,它识别升序或降序缓存行访问的连续流。可以通过将 MSRC001_1022 的位 13 设置为“1”来禁用它。
-
另一个硬件预取器是“内存控制器预取器”。这是一个更通用的预取器,但仅在内存控制器内运行(即,它不会将预取的数据发送到核心 - 它只是使内存控制器能够在核心请求时更快地返回数据)。
- 该预取器的主要控制位于 PCI 配置空间、功能 2、偏移量 11Ch 中,对于巴塞罗那之后的处理器,在功能 2、偏移量 1B0h 中具有附加控制。
- 我通过 /dev/mem 设备驱动程序更新 PCI 配置空间中的值,成功地在“实时”巴塞罗那系统上禁用和重新启用此预取器。 (不要在家尝试这个!)
- 内存控制器预取器的活动由硬件性能计数器事件 1F0h 以及 UnitMasks 02 和 04 显示。
- 请注意,上海/伊斯坦布尔/MagnyCours 的内存控制器预取器“一致”运行(意味着缓存一致性探测操作与内存预取一起发出),而巴塞罗那的内存控制器预取器不会发出缓存一致性操作(它们不发出缓存一致性探测操作)。直到内核对缓存线的请求到达内存控制器为止)。
上述内容记录在 10h 系列处理器的 BIOS 和内核开发人员指南中:http://support.amd.com/us/Processor_TechDocs/31116.pdf http://support.amd.com/us/Processor_TechDocs/31116.pdf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)