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

标签 linux prefetch amd-processor

有没有一种方法可以像在 Intel 系统中那样以编程方式禁用 AMD 系统上的硬件预取器,如 this topic 中所述

专用于 AMD Opteron Barcelona 或 Istanbul 架构。

最佳答案

所有 AMD 系列 10h 处理器(包括 Barcelona 和 Istanbul)都有两个不同的硬件预取器。

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

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

    • 此预取器的主要控制在 PCI 配置空间中,功能 2,偏移量 11Ch,在功能 2 中的附加控制,Barcelona 之后的处理器的偏移量 1B0h。
    • 我通过/dev/mem 设备驱动程序更新 PCI 配置空间中的值,成功地在“实时”Barcelona 系统上禁用和重新启用此预取器。 (不要在家里尝试这个!)
    • 内存 Controller 预取器的事件由硬件性能计数器事件 1F0h 和 UnitMasks 02 和 04 显示。
    • 请注意,上海/ Istanbul 尔/MagnyCours 的内存 Controller 预取器“一致”运行(意味着缓存一致性探测操作与内存预取一起发出),而巴塞罗那的内存 Controller 预取器不发出缓存一致性操作(它们在内核对高速缓存行的请求到达内存 Controller 之前不会发出。

上述内容记录在 BIOS 和内核开发人员指南中,适用于 10h 系列处理器:http://support.amd.com/us/Processor_TechDocs/31116.pdf

关于linux - 以编程方式禁用 AMD 系统上的硬件预取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275587/

相关文章:

linux - "Error while loading shared libraries: libnss3.so"在运行 Gitlab CI 作业以使用 webdriverio 执行自动化测试时

android - RecyclerView 中的预取文本布局,无法解析方法 setTextFuture

assembly - 为什么使用 AVX ymm(m256) 指令比 xmm(m128) 慢约 4 倍

linux - 当我从一个地方复制文件时,出现权限被拒绝的错误

linux - xmlstarlet,根据子标签在XML中找到一个标题

linux - 可执行文件不是用 Qt 制作的

c - 预取对齐内存

html - Google Chrome 预渲染中的 "cookie conflict"

opencl - 如何计算 GPGPU 硬件中的峰值 FLOPS?

sdk - 适用于 AMD/Nvidia 的 OpenCL 代码