CPU 条读写指令统计(包括程序读取)

Statistics of CPU read versus write instructions ( including reading of program )

我正在寻找内存读取和写入 CPU 指令(包括获取程序的读取指令)之间的百分比,但我找不到任何此类统计数据。一个合理的数量可以是 1 条指令读取、1 条数据读取、1 条数据写入。因此读取与写入相比可能是 2/1。但我想它应该更高(大约 3/1)。有这方面的信息吗?

Hennessey 和 Patterson 的计算机体系结构:定量方法 提供了 MIPS 的五个 SPEC CPU2000 整数基准测试(gap、gcc、gzip、mcf、perlbmk)的统计数据:

           % loads   % stores
gap           26.5      10.3
gcc           25.1      13.2
gzip          20.1       5.1
mcf           30.3       4.3
perlbmk       28.7      16.2

如您所见,一个不错的经验法则是大约四分之一的指令是负载,而存储的数量是负载的一半。

您还可以看到,即使在整数工作站基准测试中,也存在显着差异。

从这些统计数据中看不到的是 ISA 和编译器(以及选择的优化级别)的影响。复杂指令的可用性往往会减少执行的指令数量。更高编译器优化下的大量寄存器往往会减少内存流量。

通过编译器优化,可以减少(例如,循环展开可以消除分支指令)或增加(例如,强度将常量乘法减少为移位和加法,用条件移动替换预测不佳的分支)可以增加指令数)。编译器优化还可以减少加载和存储的数量(例如,使用来自 link 时间代码生成或内联的扩展活动信息更好地分配寄存器)或增加加载或存储的数量(例如,使用加载和 -操作指令可能会降低寄存器压力,从而允许循环的软件流水线完全隐藏操作延迟。