部分英特尔处理器硬件预取器的发布

部分英特尔处理器硬件预取器的发布

本文发布的 MST 设置可用来控制基于以下微架构的英特尔处理器上可用的各种硬件预取器: Nehalem、Westmere、Sandy Bridge、Ivy Bridge、Haswell 和 Broadwell。

上述处理器支持 4 种硬件预取器预取数据。 其中 2 种预取器与一级高速缓存相关(也称 DCU),2 种预取器与二级高速缓存相关。 在每个内核上都有一个带有 0x1A4 地址的特定型号寄存器 (MSR),它可用于控制这 4 种预取器。 该寄存器中的第 0-3 位可用于启用或禁用这些预取器。 该 MSR 中的其他位予以保留。

预取器

Bit# in MSR 0x1A4

描述

二级硬件硬件预取器

0

将其他代码或数据行预取到二级高速缓存

二级相邻高速缓存行预取器

1

预取包含高速缓存行对(128 个字节)的高速缓存行

DCU 预取器

2

将下一个高速缓存行预取至 L1-D 高速缓存

DCU IP 预取器

3

根据顺序负载历史(基于以前的负载的指令指针)来确定是否能够预取额外行

如果上述任何字节在内核上设置为 1,那么将会在该内核上禁用该预取器。 清除该字节(将其设置为 0)将会启用相应的预取器。 请注意,该 MSR 在每个内核中都会显示,对内核 MSR 的变更仅对该内核中的预取器产生影响。 如果启用了超线程,两个线程将会共享相同的 MSR。

多数 BIOS 部署可能会让所有预取器保持在启用状态(如 MSR 0x1A4 值保持在 0),因为预取器对大部分应用的性能不会产生影响或产生积极的影响。 但是,这些预取器的对应用的影响情况将很大程度上取决于应用的数据访问模式。

这些字节可随时启用/禁用 任何变更都会对变更适用的内核上运行的预取器(从而对所有应用的性能)产生影响。

测量内存延迟和带宽的工具可能需要将预取器设置为已知状态,以便更好地控制测量。 它们可以在测量过程中更改预取器设置,但是完成后需要将其还原到初始状态。 例如,英特尔内存延迟检查程序工具 (http://www.intel.com/software/mlc) 可以通过写入 MSR 0x1a4 以测量确切延迟并在退出时将其还原至初始状态来修改预取器。

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.