我希望找到内存读写CPU指令之间的百分比(包括读取程序的读取指令),但我找不到任何此类统计信息。合理的数量可以是1个指令读取,1个数据读取,1个数据写入。所以读取与写入相比可能是2/1。但它应该更高我想(比如3/1)。关于那个的任何信息?
答案 0 :(得分:2)
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和编译器的影响(以及选择的优化级别)。复杂指令的可用性将倾向于减少执行的指令数量。在更高编译器优化下的大量寄存器将倾向于减少内存流量。
通过编译器优化,可以减少执行的指令数量(例如,循环展开可以消除分支指令)或增加(例如,强度减少乘以常数到移位和增加,用条件移动替换预测不佳的分支可以增加指令数)。编译器优化还可以减少加载和存储的数量(例如,使用来自链接时代码生成或内联的扩展活跃度信息的更好的寄存器分配)或增加加载或存储的数量(例如,使用加载和操作指令可能减少注册压力允许软件流水线化循环以完全隐藏操作延迟。)