Sun Studio 12:C 用户指南

B.2.128 -xprefetch[= val[,val]]

(SPARC) 在支持预取的体系结构中启用预取指令。

显式预取只应在度量支持的特殊环境下使用。

val 必须是以下值之一:

表 B–35 -xprefetch 标志

标志 

含义 

latx:factor

根据指定的因子,调整编译器假定的“预取到装入”和“预取到存储”延迟。只能将此标志与 -xprefetch=auto 结合使用。请参见B.2.128.1 预取等待时间比率

[no%]auto

[禁用] 启用预取指令的自动生成 

[no%]explicit

(SPARC) [禁用] 启用显式预取宏 

yes

已废弃 - 不使用。改用 -xprefetch=auto,explicit

no

已废弃 - 不使用。改用 -xprefetch=no%auto,no%explicit

缺省值为 -xprefetch=auto,explicit。此缺省值会对实质上具有非线性内存访问模式的应用程序造成负面影响。要覆盖该缺省值,请指定 -xprefetch=no%auto,no%explicit

sun_prefetch.h 头文件提供了可用来指定显式预取指令的宏。预取的位置大约为可执行文件中对应于宏出现的位置。

B.2.128.1 预取等待时间比率

预取延迟是从执行预取指令到所预取的数据在高速缓存中可用那一刻之间的硬件延迟。

该因子必须是形式为 n.n. 的正数。

在决定放置使用预取数据的预取指令和装入或存储指令的距离时,编译器会假定预取延迟值。在预取和装入之间假定的延迟可能与在预取和存储之间假定的延迟不同。

编译器可以在众多计算机与应用程序间调整预取机制,以获得最佳性能。这种调整并非总能达到最优。对于占用大量内存的应用程序,尤其是要在大型多处理器上运行的应用程序,可以通过增加预取延迟值来提高性能。要增加值,请使用大于 1 的因子。介于 .5 和 2.0 之间的值最有可能提供最佳性能。

对于数据集完全位于外部高速缓存中的应用程序,可以通过减小预取延迟值来提高性能。要减小此值,请使用小于 1 的因子。

要使用 latx:factor 子选项,则以接近 1.0 的因子值开始并对应用程序进行性能测试。然后适当增加或减小该因子,并再次运行性能测试。不断调整因子并运行性能测试,直到获得最优性能。以很小的增量逐渐增加或减小因子时,前几步中不会看到性能差异,然后会突然出现差异,最后再趋于稳定。