我们提供了一个处理器,其指令以8字节操作数进行操作,并且其指令也使用8字节进行编码。我们使用的是16 KB 包含1024组的4路组关联缓存。缓存总共有4 * 1024 = 4096个缓存行。这就是说,每个高速缓存行为16KB = 4096 = 4字节,因此每个操作数和每条指令都需要存储在两条高速缓存行中,这对于每次加载/存储操作和指令提取都需要两次访问高速缓存。我们被告知缓存不能应用空间局部性,但是为什么呢?在这种情况下,空间局部性是什么意思?
答案 0 :(得分:1)
那么您的机器根本没有单字节加载/存储吗?
如果每个负载都是一个完整的高速缓存行(或多条完整的高速缓存行),那么将一行加载到一个负载中将永远不会使空间上相邻的另一负载受益。
(除非您具有硬件预取功能以检测顺序访问并开始获取相邻的缓存行...)