-qcache
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qcache | ✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
指定特定执行机器的高速缓存配置。
如果您知道程序的执行系统类型,并且该系统的指令或数据高速缓存配置与缺省情况不同,请使用此选项来指定确切的高速缓存特征。 编译器使用此信息来计算与高速缓存相关的优化的优点。
-qcache 选项必须与 -O4, -O5或 -qipa一起指定。
语法
缺省值
由 -qtune 选项的设置自动确定。
参数
- 阿索克
- 指定高速缓存的集合关联性。
- 号
- 是下列其中一项:
- 0
- 直接映射的高速缓存
- 1
- 完全关联的高速缓存
- N>1
- n-way set 关联高速缓存
- 自动
- 自动检测编译机器的特定高速缓存配置。 这假定执行环境将与编译环境相同。
- 成本
- 指定高速缓存不命中所导致的性能损失。
- 循环
- 表示 CPU 周期的整数。
- 级别
- 指定受影响的高速缓存级别。 如果机器具有多个级别的高速缓存,请使用单独的 -qcache 选项。
- 级别
- 是下列其中一项:
- 1
- 基本高速缓存
- 2
- Level-2 高速缓存 ,或者,如果没有 level-2 高速缓存,那么表后备缓冲区 (TLB)
- 3
- 表后备缓冲区 (TLB)
- 行
- 指定高速缓存的行大小。
- 字节
- 表示高速缓存行的字节数的整数。
- 大小
- 指定高速缓存的总大小。
- kbytes
- 表示总高速缓存的千字节数的整数。
- 类型
- 指定设置应用于指定的 cache_type。
- cache_type
- 是下列其中一项:
- c
- 组合数据和指令高速缓存
- d
- 数据高速缓存 (data cache)
- i
- 指令高速缓存
使用量
-qtune 设置确定大多数典型编译的最佳缺省 -qcache 设置。 您可以使用 -qcache 来覆盖这些缺省设置。 但是,如果为高速缓存配置指定了错误的值,或者在具有其他配置的机器上运行该程序,那么该程序将正常工作,但可能稍慢。
指定 -qcache 子选项时,请遵循以下准则:
- 指定尽可能多的配置参数的信息。
- 如果目标执行系统具有多个级别的高速缓存,请使用单独的 -qcache 选项来描述每个高速缓存级别。
- 如果不确定目标执行机器上高速缓存的确切大小,请在小端指定估算的高速缓存大小。 最好保留一些未使用的高速缓存内存,而不是通过指定大于实际存在的高速缓存大小而迂到高速缓存未命中或缺页故障。
- 与指令高速缓存相比,数据高速缓存对程序性能的影响更大。 如果可用于试验不同高速缓存配置的时间有限,请先确定数据高速缓存的最佳配置规范。
- 如果为高速缓存配置指定了错误的值,或者在具有其他配置的机器上运行程序,那么程序性能可能会降低,但程序输出仍将与预期一样。
- -O4 和 -O5 优化选项会自动选择编译机器的高速缓存特征。 如果指定 -qcache 选项以及 -O4 或 -O5 选项,那么最后指定的选项优先。
- 除非指定了 -qcache=auto ,否则在使用 -qcache 选项时,必须同时指定 type 和 level 子选项。 否则,将发出警告消息。
预定义的宏
无。
示例
要调整具有组合指令和数据 level-1 高速缓存的系统的性能,其中高速缓存大小为 2-way 关联, 8 KB 且具有 64 字节高速缓存行,请输入:
xlc -O4 -qcache=type=c:level=1:size=8:line=64:assoc=2 file.c