首页 > 代码库 > 高速缓冲存储器--地址映射

高速缓冲存储器--地址映射


高速缓冲存储器

 

组成:控制部分和Cache存储器部分

 

Cache存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址,未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。

 

地址映像方法

CPU工作时,送出的是主存地址,而应从Cache存储器中读写信息。这就需要将主存地址转换成Cache存储器的地址。

 

直接映像


对于直相联来说,每个块号都限定了必须在Cache中的某个块号中,也就是第0区的第0块只能放在Cache的第0块中,而且块号的大小和Cache的大小相同。

Cache中只能存放0--n块且每块只有一个(不可能存在两个块0),如果10块存进Cache中的0块了,那么其他区的0块就没办法往Cache中存入了。所以已知块号就能确定区号!固只需要比较区号是否相等即可!

 

                 


                 


上图的比较过程:已知块号,查看区表存储器中的区号是否和主存中的区号相等,相等则存在即命中,否则不命中.下面的类似

 

优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。

缺点:替换操作频繁,命中率比较低。

 

 

 

全相联映像

 

                 


                  


对于全相联来说,主存与Cahce存储器均分成容量相同的块。允许主存中的任意一块可以调入Cache存储器中的任何一块空间中。

 

优点:命中率比较高,Cache存储空间利用率高。

缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。

 

 

组相联映像


                  

                


对于组相联映像来说,是前面两种方式的折中,即将Cache中的块再分成组。规定组采用直接映像方式而块采用全相联方式。通过直接映像方式来决定组号,在组内再用全相联映像方式来决定Cache中的块号。

这种方式,根据组号可以确定区号,根据主存给的组号确定块表中的组号是否和Cache中的组号相等,相等继续比较,组内的块号(遍历全部块号看是否存在),如果组号不等则没有比较下去的意义。

 

优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。

缺点:实现难度和造价要比直接映象方式高。

 

对于这三种映像方式和前面介绍的存储方式类似(页式,段式,段页式)且每一种都是对上一种方式的优化,学习时结合以前的知识,这样掌握起来就容易很多,学会用已有的知识来学习,这样的学习效果事半功倍!