轉眼都期末了,而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
組間采用直接映射,組内為全相聯
硬體較簡單,速度較快,命中率較高