Cache的地址映射方法
1、直接映像:
指主存的一个字块只能映像到Cache的一个准确确定的字块中
特点:主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。
成本低,命中率低,效率较低
直接映射中先将主存按照cache行号的大小分组(这里cache共有16行。),则主存共分为2047/16=128组。要给128组编码,则要用到7位二进制数。则主存字块标记为7位。
直接映射就是cache中的某页必须跟主存中每组的某页进行对应。如图中所示的cache中0页对主存中各组的0页。1页对主存中各组的1页
直接映射主存地址有主存区号,cache页号及快内地至组成。在本图中16页要有4位二进制编码。
2、全相联映像:
指主存的一个字块可以映像到整个Cache的任何一个字块中。
特点:贮存中的字块可以喝Cache的任何字块对应,利用率高,方式灵活
标记位较长,使用成本太高
全相联映射指cache中的某页可以随意的指向内存中的某页。
这里主存块标记比较长。因为主存没有分区,2048页进行编码,需要11位(2的11次方位2048),cache页占4位。
3、组相联映像:
是对全相联和直接映像的一种折中的处理方案。既不在主存和Cache之间实现字块的完全随意对应,也不在主存和Cache之间实现字块的多对一的硬性对应,而是实现一种有限度的随意对应。
特点:折中方案。组间全相联,组内直接映像。
集中了两个方式的优点。成本也不太高。最常见的Cache映像方式。
组相联映像
方式既包含直接相联,又包含组相联。首先,主存按照cache的大小进行分区(与直接相联一样),这里128个区,主存区号所占长度7位。你可能会疑问,标记是8位啊,别急,我们接着看,在每一个分区中,我们又进行了分组。一组两页。则需要1位二进制来进行标记。则标记位变成8位。
而主存地址中,主存区号占7位,然后组地址占3位(一组共16页,分成了8组)。然后是组内行号占1位(1组2块)。然后是块内地址。
主存与cache组与组之间的对应仍然为直接映摄方式。但是每组内的页的对应则为全相联映像。是可以随意进行对应的。