习题1:Cache性能优化
在本题中,你将探讨几种常用的编译优化方法用于提高Cache性能。
习题1.A 循环排序
考察一个1KB的直接映射的Cache,每行4字。对于下面两个用C语言写的循环、计算
一个64*16的矩阵各元素累加和。 (各元素均为32位的整型数)
Loop A Loop B
for(i=0;i<64;i++) for(j=0;j<16;j++)
for(j=0;j<16;j++) for(i=0;i<64;i++)
sum+=A[i][j] sum+=A[i][j]
矩阵A按行连续存储在内存中,和Cache行的边界一致。假定其它变量均是分配在寄存
器中,且只有读写Cache才涉及到矩阵元素。
计算运行Loop A和LoopB时Cache发生的不命中率。这两个值是否一样?解释为什么一
样或不一样。