单选题 对于给定大小的高速缓存,如何确定高速缓存块的大小,对高速缓存的性能影响很大,这需要在现实的基准程序代码上进行大量的模拟才能确定下来,但从定性的角度来考虑的话,下列叙述中正确的有______。
  • A.较大的块能利用程序的时间局部性,帮助提高命中率
  • B.较大的块能利用程序的空间局部性,帮助提高命中率
  • C.块越大,对利用程序的时间局部性和空间局部性越有利
  • D.块越大,对利用程序的时间局部性和空间局部性越不利
【正确答案】 B
【答案解析】[解析] 大的块有利有弊。一方面,较大的块能利用程序中可能存在的空间局部性,帮助提高命中率。不过,对于给定的高速缓存大小,块越大就意味着高速缓存行数越少,这会损害时间局部性比空间局部性更好的程序的命中率。
若上面的结论不好理解,可以考虑一个极端的情况,即整个高速缓存就是一个块,它能充分利用空间局部性。但对于时间局部性来说,这是不利的,因为数据驻留在高速缓存的时间被大大减少了,只要一次访问未命中,就会把整个高速缓存内容替换掉。
知识点回顾:
高速缓存行、组和块有什么区别?
·块是一个固定大小的信息包,在高速缓存和主存(或下一层高速缓存)之间来回传送。
·行是高速缓存中存储块以及其他信息(如有效位和标记位)的容器。
·组是一个或多个行的集合。直接映射高速缓存中的组只由一行组成。组相联和全相联高速缓存中的组是由多个行组成的。
在直接映射高速缓存中,组和行确实是等价的。不过,在相联高速缓存中,组和行是不一样的,这两个词不能互换使用。
因为一行总是存储一个块,术语“行”和“块”通常互换使用,例如,系统专家总是说高速缓存的“行大小”,实际上指的是块大小。这种说法十分普遍,考生只要理解块和行之间的区别,就不会造成任何误会。