Cache抖动的实验
关于cpu中的cache抖动现象,简单研究了一下,个人认为cache抖动分为三个阶段:无抖动现象阶段,剧烈抖动阶段和稳定抖动阶段。
实验环境:Ubuntu17.04+valgrind模拟器
实验硬件:Cache 64组*4路组相联*64B每路
实验文件:main.cpp ,代码如下:
#include <stdio.h>
#define column 16
#define row 1000 //row的值需要不断进行改变,从而观察miss数
int matrix[row][column];
int main()
{
for(int i=0; i<column; i++)
{
for(int j=0; j<row; j++)
{
matrix[j][i] = 1;
}
}
return 0;
}
主要原理:
1.数组的每一行恰好对应cache的每一路,以此简化操作;
2.通过更改row的数量,观察写操作过程中的miss数量,从而分析各个阶段的特点;
3.(1)无抖动阶段:当row<=64*4时,所有数据都能放到cache中&#