6.32
A:地址格式
因为地址宽13位且题目所给地址为0x0718,转换成二进制表示为 0 0111 0001 1000,填下表:
B:存储器引用
由题S=8,E=4,B=4,m=13所以s=3,b=2,t=m-(s+b)=8,0-1位是块偏移,2-4位是组索引,5-12是标记位,故根据题A中二进制地址表示可知,CO为00,CI为110,CT为00111000,由题中所给高速缓存表查看索引为0x6、标记位为0x38、块偏移量为0x0的数据为FA,命中。填下表:
6.33
A:地址格式
因为地址宽13位且题目所给地址为0x16EC,转换成二进制表示为 1 0110 1110 1100,填下表:
B:存储器引用
由题S=8,E=4,B=4,m=13所以s=3,b=2,t=m-(s+b)=8,0-1位是块偏移,2-4位是组索引,5-12是标记位,故根据题A中二进制地址表示可知,CO为00,CI为011,CT为10110111,由题中所给高速缓存表查看索引为0x3、标记位为0xb7、块偏移量为0x0的数据,标记位不匹配,不命中。填下表:
6.37
A:因为高速缓存的大小为1024,整个数组的大小为22564=2048,E=1,x[0][i]和x[1][i]对应的是同一个块的位置,每次读x[0][i]或者x[1][i]时都会发生冲突不命中,故不命中率为100%。
B:因为高速缓存足够保存整个数组,每8个连续的数据都有自己的组索引,由于高速缓存最开始是空的,故每次读的时候每8个数据只有第一个数据冷不命中,后面7个数据都会命中,所以不命中率为1/8,即12.5%。
C:两路组相联,虽然x[0][i]和x[1][i]对应的是同一个组,但是E=2,每次读x[0][i]和x[1][i]时都放在同一个组的不同的行里,B=32,每行放8个数据,所以每8次循环x[0][i]和x[1][i]都只有第一个数发生不命中,后面7个数都命中,所以不命中率为1/8,即12.5%。
D:增大高速缓存,由于情形3块的大小不变,受块大小限制,每8个数据定有一个不命中,所以不命中率为1/8,所以只更改高速缓存的大小不会降低不命中率。
E:换用更大的块,和情况3相比,每行数据的读入量就增大了,除了块偏移为0x0的位置不命中,后面的都会命中,所以更大的块会帮助降低不命中率。
6.42
答:E=1,B=4,每行只放4个字节也即是只能放一个元素buffer[i][j],每次循环都只有buffer[i][j].r不命中,后面三个都命中,故不命中率为25%。