首页 > 代码库 > 高速缓冲存储器--地址映射
高速缓冲存储器--地址映射
高速缓冲存储器
组成:控制部分和Cache存储器部分
Cache存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址,未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
地址映像方法
在CPU工作时,送出的是主存地址,而应从Cache存储器中读写信息。这就需要将主存地址转换成Cache存储器的地址。
直接映像
对于直相联来说,每个块号都限定了必须在Cache中的某个块号中,也就是第0区的第0块只能放在Cache的第0块中,而且块号的大小和Cache的大小相同。
Cache中只能存放0--n块且每块只有一个(不可能存在两个块0),如果1区0块存进Cache中的0块了,那么其他区的0块就没办法往Cache中存入了。所以已知块号就能确定区号!固只需要比较区号是否相等即可!
上图的比较过程:已知块号,查看区表存储器中的区号是否和主存中的区号相等,相等则存在即命中,否则不命中.下面的类似
优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。
缺点:替换操作频繁,命中率比较低。
全相联映像
对于全相联来说,主存与Cahce存储器均分成容量相同的块。允许主存中的任意一块可以调入Cache存储器中的任何一块空间中。
优点:命中率比较高,Cache存储空间利用率高。
缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。
组相联映像
对于组相联映像来说,是前面两种方式的折中,即将Cache中的块再分成组。规定组采用直接映像方式而块采用全相联方式。通过直接映像方式来决定组号,在组内再用全相联映像方式来决定Cache中的块号。
这种方式,根据组号可以确定区号,根据主存给的组号确定块表中的组号是否和Cache中的组号相等,相等继续比较,组内的块号(遍历全部块号看是否存在),如果组号不等则没有比较下去的意义。
优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。
缺点:实现难度和造价要比直接映象方式高。
对于这三种映像方式和前面介绍的存储方式类似(页式,段式,段页式)且每一种都是对上一种方式的优化,学习时结合以前的知识,这样掌握起来就容易很多,学会用已有的知识来学习,这样的学习效果事半功倍!