天天看点

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的存储空间利用率高

缺点:线路复杂,成本高,速度低

Cache 三种的映射方法

组相联映射

将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:cache总行数m=u×v       组号q=j mod u

组间采用直接映射,组内为全相联

硬件较简单,速度较快,命中率较高

继续阅读