我正在为期末考试而学习,下面是教授回答的示例问题:
问题
指令缓存(I缓存)的存储容量为524288字节并使用128字节的缓存行。缓存所在的内存使用的大小为209715200字节。多少个不同的内存块可能会映射到4向集合关联中的集合10缓存?
答案
任何存储块的块号的第16至7位等于0000001010将映射到集合10。由于内存为209715200字节,大小(= 0xC800000),因此只有地址的低28位非零。也就是说,最多需要28位来指定任何地址在内存中。因此高28-10-7 = 11位将决定许多不同的块映射到单个集合。上边的值11位范围是0到11000111111 =十进制1599。约有1600种块映射到4路集关联缓存中的集10。
有人可以解释这个答案吗?我对以下各项感到特别困惑。我以为高11位是标签。为什么这与是否映射到设置10有关。我也不明白11位的11000111111的上限是哪里来的?
本质上是找到一个集合可以映射到的块的数量,只计算可以给定物理内存的大小以及设置位和偏移位的大小的标签可能性的数量。