映射方式有全相聯方式、直接方式和群組相聯方式三種。直接映射可以將一個主存塊儲存到唯一的一個Cache行;全相聯映射可以將一個主存塊存儲到任意一個Cache行;組相聯映射可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
本教學操作環境:windows10系統、Dell G3電腦。
cache是一種高速緩衝暫存器,是為解決CPU和主記憶體之間速度不匹配而採用的一項重要技術。
CPU對記憶體的訪問,通常是一次讀寫一個字單元。當CPU訪Cache不命中時,需將儲存在主記憶體中的字單元連同其後若干個字一同調入Cache中,之所以這樣做,是為了使其後的訪存能在Cache中命中。
因此,主記憶體和Cache之間一次交換的資料單位應該是一個資料塊。資料塊的大小是固定的,由若干個字組成,且主記憶體和Cache的資料塊大小是相同的。
從Cache-主記憶體實現的目標看,一方面既要使CPU的訪問速度接近於訪Cache的速度,另一方面為使用者程式提供的運作空間應保持為主存容量大小的儲存空間。
在採用Cache-主記憶體的系統中,Cache對使用者程式而言是透明的,也就是說,使用者程式可以不需要知道Cache的存在。因此,CPU每次訪存時,依然和未使用Cache的情況一樣,給出的是一個主記憶體位址。但在Cache-主記憶體中,CPU首先存取的是Cache,並不是主記憶體。
為此,需要一種機制將CPU的訪主存位址轉換成訪Cache位址。而主記憶體位址與Cache位址之間的轉換是與主記憶體與Cache塊之間的映射關係緊密聯繫的,也就是說,當CPU訪Cache未命中時,需要將欲存取的字所在主記憶體中的區塊調入Cache中,以什麼樣的策略調入,直接影響到主記憶體位址與Cache位址的對應關係,也就是本小節要解決的主記憶體與Cache的位址對映問題。
主記憶體與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的位址映射方式有哪三種的詳細內容。更多資訊請關注PHP中文網其他相關文章!