你正在编写一个新的3D游戏,希望能名利双收。现在正在写一个函数,使得在画下一帧之前先清空屏幕缓冲区。工作的屏幕是640X480像素数组。工作的机器有一个64KB直接映射高速缓存,每行4个字节。使用下面的C语言数据结构:
struct pixel{
char r;
char g;
char b;
char a;
};
struct pixel buffer[480][640];
int i,j;
char *cptr;
char *iptr; 有如下假设:
- sizeof(char)==1和sizeof(int)==4
- buffer起始于内存地址0
- 高速缓存初始为空。
- 唯一的内存访问是对于buffer数组中元素的访问。变量i,j,cptr和iptr存放在寄存器中。
下面代码中百分之多少的写会在高速缓存中补命中?
for(j=0;j<640;j++){
for(i=0;i<480;i++){
buffer[i][j].r=0;
buffer[i][j].g=0;
buffer[i][j].b=0;
buffer[i][j].a=0;
}
}
