高速緩存與主存的三種映射方式

1、全相聯映射方式

全相聯映射是指主存中任意一個塊都可以映射到cache中任意一個塊的方式,也就是說,當主存中的某一塊需調入cache時,可根據當時cache的塊佔用或分配情況,選擇一個塊給主存塊存儲,所選的cache塊可以是cache中的任意一個塊。例如,設cache共有2^C塊,主存共有2^M塊,當主存的某一塊j需調進cache中時,它可以存入cache的塊0、塊1、…、塊i、…或塊2^C - 1的任意一塊上。如下圖所示:


優點:命中率比較高,cache存儲空間利用率高;

缺點:存儲映射信息的相聯存儲器龐大,比較電路複雜,查詢相聯存儲器時,每次都要與全部內容比較,速度低,成本高,因而只適合於小容量的cache之用,應用少。


2、直接相聯映射方式

直接相聯映射方式是指主存的某塊j只能映射到滿足如下特定關係的cachei中:

ij mod 2^C

上圖中,主存的第02^C、2^(C1)、…塊只能映射到cache的第0塊,主存的第12^C+12^(C1)+1、…塊只能映射到cache的第1塊,……,主存的第2^C-12^(C1)-1、…2^M-1塊只能映射到cache的第2^C-1塊。即:對2^C求餘後餘數相同的主存塊對應cache中同一個塊。如下圖所示:


優點:比較電路最簡單,地址映射方式簡單,數據訪問時,只需檢查區號是否相等即可,因而可以得到比較快的訪問速度,硬件設備簡單。

缺點:cache塊衝突率較高,餘數相同的主存塊無法同時進入cache,從而降低了cache的利用率。由於主存的每一塊只能映射到cache的一個特定塊上,當主存的某塊需調入cache時,如果對應的cache特定塊已被佔用,而cache中的其它塊即使空閒,主存的塊也只能通過替換的方式調入特定塊的位置,不能放置到其它塊的位置上,替換操作頻繁,命中率比較低。


3、組相聯映射方式

組相聯映射方式下,將cache分成2^u組,每組包含2^v塊。主存的塊與cache的組之間採用直接相聯映射,而與組內的各塊則採用全相聯映射。也就是說,主存的某塊只能映射到cache的特定組中的任意一塊。主存的某塊jcache的組k之間滿足如下關係:kj mod 2^u

設主存共有2^2^u塊(即Ms+u),則它們的映射關係如下圖所示:


圖中,主存的塊02^u、2^(u1)、…、[2^(s-1)]2^u可以映射到cache的第0組的任意一塊,主存的塊12^u+12^(u1)+1、…、[2^(s-1)]2^u+1可以映射到cache的第1組的任意一塊,……,主存的塊2^u-12^(u1)-1、…、2^M-1可以映射到cache的第2^u-1組的任意一塊。

優點:塊的衝突概率比較低,塊的利用率大幅度提高,塊失效率明顯降低。

缺點:實現難度和造價要比直接映射方式高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章