⑴ 內存Cache直接映射、全相聯映射和組相聯映射
1. 直接映射
---- 一個內存地址能被映射到的Cache line是固定的。就如每個人的停車位是固定分配好的,可以直接找到。缺點是:因為人多車位少,很可能幾個人爭用同一個車位,導致Cache 淘汰換出頻繁 ,需要頻繁的從主存讀取數據到Cache,這個代價也較高。
2. 全相聯映射
---- 主存中的一個地址可被映射進任意cache line,問題是:當尋找一個地址是否已經被cache時,需要遍歷每一個cache line來尋找,這個代價很高。就像停車位可以大家隨便停一樣,停的時候簡單,找車的時候需要一個一個停車位的找了。
主存中任何一塊都可以映射到Cache中的任何一塊位置上。
全相聯映射方式 比較靈活 ,主存的各塊可以映射到Cache的任一塊中,Cache的利用率高,塊沖突概率低,只要淘汰Cache中的某一塊,即可調入主存的任一塊。但是,由於Cache比較電路的設計和實現比較困難,這種方式只適合於 小容量 Cache採用。
3. 組相聯映射
---- 組相聯映射實際上是直接映射和全相聯映射的折中方案,其組織結構如圖(3)所示。
主存和Cache都 分組 ,主存中一個 組內的塊數 與Cache中的 分組數 相同,組間採用直接映射,組內採用全相聯映射。也就是說,將Cache分成2^u組,每組包含2^v塊,主存塊存放到哪個組是固定的,至於存到該組哪一塊則是靈活的。即主存的某塊只能映射到Cache的特定組中的任意一塊。主存的某塊b與Cache的組k之間滿足以下關系:k=b%(2^u).
⑵ cache是什麼的映射
主要有三種地址映射方式,分別為全相聯映射、直接相聯映射和組相聯映射。
1. 全相聯映射
全相聯映射是指主存中任一塊都可以映射到Cache中任一塊的方式,也就是說,當主存中的一塊需調入Cache時,可根據當時Cache的塊佔用或分配情況,選擇一個塊給主存塊存儲,所選的Cache塊可以是Cache中的任意一塊。
2. 直接相聯映射
直接相聯映射方式是指主存的某塊j只能映射到滿足如下特定關系的Cache塊。
3. 組相聯映射
以上兩種方式各有優缺 點,而且非常有趣的是,它們的優缺點正好相反,也就是說,對於全相聯映射方式來說為優點的恰是直接相聯映射方式的缺點,而對於全相聯映射方式來說為缺點的 恰是直接相聯映射方式的優點。那麼,可否找到一種能較好地兼顧這兩種方式的優點的映射方式呢?下面我們就來看看組相聯映射方式 在這種方式下,將Cache分成2u組,每組包含2v塊。主存的塊與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內存的地址映射主要有以下三種方式:一、直接映像:
二、全相聯映像:
三、組相聯映像:
cache的替換演算法有:
①Hybrid演算法:演算法對Cache中的每一個對象賦予一個效用函數,將效用最小的對象替換出Cache;
②LowestRelativeValue演算法:將效用值最低的對象替換出Cache;
③(LCNR)演算法:該演算法使用一個關於文檔訪問頻次、傳輸時間和大小的推理函數來確定替換文檔;
④Bolot等人提出了一種基於文檔傳輸時間代價、大小、和上次訪問時間的權重推理函數來確定文檔替換;
⑤SizeAdjustLRU(SLRU)演算法:對緩存的對象按代價與大小的比率進行排序,並選取比率最小的對象進行替換。
⑸ 主存和cache之間的映像方式有哪幾種
1.直接映像(Direct Mapping)
採用直接映像時,Cache的某一塊只能和固定的一些主存塊建立映像關系,主存的某一塊只能對應一個Cache塊。直接映像的優點是硬體簡單、成本低;缺點是不夠靈活,主存的若干塊只能對應惟一的Cache塊,即使Cache中還有空位,也不能利用。
2.全相聯映像(Associative Mapping)
採用全相聯映像時,Cache的某一塊可以和任一主存塊建立映像關系,而主存中某一塊也可以映像到(2ache中任一塊位置上。由於Cache的某一塊可 以和任一主存塊建立映像關系,所以Cache的標記部分必須記錄主存塊塊地址的全部信息。例如,主存分為2n塊,塊的地址為n位,標記也應為n位。 採用全相聯映像方式時,主存地址被理解為由兩部分組成:標記(主存塊號)和塊內地址。CPU 在訪問存儲器時,為了判斷是否命中,主存地址的標記部分需要和Cache的所有塊的標記進行比較。為了縮短比較的時間,將主存地址的標記部分和Cache 的所有塊的標記同時進行比較。如果命中,則按塊內地址訪問Cache中的命中塊(其標記與主存地址給出的標記相同);如果未命中,則訪問主存。
全相聯映像的優點是靈活,Cache利用率高。缺點有兩個:一是標記位數增加了(需要記錄主存塊塊地址的全部信息),使得Cache的電路規模變 大,成本變高;二是比較器難於設計和實現(通常採用「按內容定址的」相聯存儲器)。因此,只有小容量Cache才採用這種映像方式。
3.組相聯映像(Set Associative Mapping)
組相聯映像方式是介於直接映像和全相聯映像之間的一種折中方案。設Cache中共有m個塊,在採用組相聯映像方式時,將m個Cache塊分成u組(set),每組k個塊(即m=u
×k),組間直接映像,而組內全相聯映像。所謂組間直接映像,是指某組中的Cache塊只能與固定的一些主存塊建立映像關系。