设arr是维数为16的数组x 20
这里是所提到的代码片段的valgrind输出。输出来自cachegrind。Valgrind输出解释
for (i = 0; i < 20; i++)
arr[0][i] = 0;
Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw
64 0 0 41 0 0 1 0 0
60 0 0 20 0 0 20 2 2
我已阅读了valgrind文档中这些单独参数的含义。但是,我无法用上述数字来计算。像for循环一样,我们是否真的有41个缓存数据读取?或者对于数组arr,我们怎么能有2个L2写入未命中呢?
我的配置是L1d = L1I = 32KB,L2 = 2MB,64字节高速缓存行大小和8路组关联。
您是否特指cachegrind,如果是的话那么您可能应该指定它。我尽可能使用KCacheGrind来帮助理解cachegrind和callgrind。如果您需要其他分析,那么显然您需要编写自己的脚本/图表。 http://kcachegrind.sourceforge.net/这显然不是你的问题,只是一个(希望)有用的评论。 – 2010-10-26 15:17:22