【组原】主存与cache的地址映射
主存与cache的地址映射
全相联
理解:主存被分割成一个个具有一定大小的块,这些块内部又以行为单位继续进行分割。
通过块的大小和字长可以确定出行的大小和字地址长度(确定是哪一行)。
同时要使得设计出的地址能够将主存容量中的所有数据囊括其中,要好好算好标记位和字号位的大小总和。进而,可知一求一。
直接映射
直接映射方式也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。cache的行号 i 和主存的块号 j 有如下函数关系:
i = j mod m
式中m为cache中的总行数。显然,主存的第0块,第m块,第2m块,…,第2s - m块只能映射到cache的第0行;而主存的第1块,第m + 1块,第2m + 1块,…只能映射到cache的第1行。
cache假设为8行,主存假设为256块,故以8为模进行映射。这样,允许存于cache第0行的主存块号是$$B_0, B_8, B_{16}, …,B_{248} $$(共32块)。同样,能映射到第7行的主存块也是32块。假设cache容量16行,主存容量256块,则地址2,18,34, ….., 242等都存放在cache的第2行内,如果第一次地址2在cache中,下次如果访问地址34的内容,则不管cache其他位置的内容访问情况,都会引起cache第2行内容的替换
直接映射用cache的空间大小来作为模数,将块地址进行了拆分,形成了标记部分和行部分(取决于这个模数,相当于对这个模数进行取余得到后的结果)。
组相联
对cache进行划分,分为一组一组的。主存中的某个位置先对应到组再对应到块。
这样的话一共有8组,按字节编址也就是说一个内存单元里面存放的是一个字节的量。主存129号单元=32*4+1,在第5块主存块中(注意,编号从0开始)。
选C