Cache 三种的映射方法
转眼都期末了,而Cache的三种映射方式还没有搞清楚,好在看到了这篇简洁的文章,感觉比书上啰啰嗦嗦的好几页讲的清楚多了。
转载自:Cache 功能、映射方法
cache是一种高速缓冲寄存器,是为解决CPU和主存之间速度不匹配而采用的一项重要技术。
主存与cache的地址映射方式有全相联方式、直接方式和组相联方式三种。
直接映射(directmapping)
将一个主存块存储到唯一的一个Cache行。
全相联映射(fullyassociative mapping)
可以将一个主存块存储到任意一个Cache行。
组相联映射(setassociative mapping)
可以将一个主存块存储到唯一的一个Cache组中任意一个行。
直接映射
多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。
cache的行号i和主存的块号j有如下函数关系:i=j mod m (m为cache中的总行数)
优点:硬件简单,容易实现
缺点:命中率低, Cache的存储空间利用率低
全相联映射
主存的一个块直接拷贝到cache中的任意一行上
优点:命中率较高,Cache的存储空间利用率高
缺点:线路复杂,成本高,速度低
组相联映射
将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:cache总行数m=u×v 组号q=j mod u
组间采用直接映射,组内为全相联
硬件较简单,速度较快,命中率较高
关于Cache的命中率问题:
影响Cache命中率的因素很多,如Cache的容量,块的大小,映象方式,替换策略以及程序执行中地址流的分布情况等等。一般地说, Cache容量越大则命中率越高, 当容量达到一定程度后,容量的增加命中率的改善并不大;Cache块容量加大, 命中率也明显增加,但增加到一定值之后反而出现命中率下降的现象;直接映象法命中率比较低,全相联方式命中率比较高,在组相联方式中,组数分得多,则命中率下降。
小白学代码。。。: 你好,我想请教您几个问题,这个hhblits只能在Linux上运行吗?我想得到蛋白质对应的aln文件,是不是必须得下载uniclust30数据库,我的电脑需要下载一天,因为我用的虚拟机且在家网不好
zlnleo: 好哥哥还在吗,求一份思维导图的文件,1149182821@qq.com
@HZHong: 这oj题纯纯考阅读理解,不明白学校为啥要出这道题
weixin_48220725: 大佬求一份思维导图 谢谢啦 1946653597@qq.com
YEXY804: 求一份xmind思维导图,谢谢啊3031539005@qq.com