我有一个直接映射的缓存,如下所示:
25位标记,4位设置,3位字节偏移
每个数据集的数据大小为8个字节(块大小= 8个字节)。
让我们说我有两个整数,x和y,彼此相邻,有这些内存地址:
some-tag set boff
0000 000 x
0000 100 y
显然x和y进入同一组,现在我的问题是:
当我读取x(并且它是高速缓存未命中)时,x被放入高速缓存集的前4个字节中,y也被放入后4个字节以填满该高速缓存集的整个块?
我相信是这种情况,因为否则当你读取y并在缓存集中找到匹配的标记时,你会得到错误的值。
我感到困惑的是这个:当我读到y并且它是高速缓存未命中时,内存中的前4个字节是否也被读入以填充块?当然一定是这样,因为否则读取x将导致缓存命中,返回无效数据。