主存到Cache直接對映 全相聯對映和組相聯對映

2021-08-08 03:15:49 字數 2790 閱讀 2080

---- cache的容量很小,它儲存的內容只是主存內容的乙個子集,且cache與主存的資料交換是以塊為單位的。

---- 為了把資訊放到cache中,必須應用某種函式把主存位址定位到cache中,這稱為位址對映

---- 在資訊按這種對映關係裝入cache後,cpu執行程式時,會將程式中的主存位址變換成cache位址,這個變換過程叫做位址變換。

cache的位址對映方式有直接對映全相聯對映組相聯對映

假設某台計算機主存容量為l mb,被分為2048塊,每塊512b;cache容量為8kb,被分為16塊,每塊也是512b。下面以此為例介紹三種基本的位址對映方法。

1. 直接對映

---- 直接對映的cache組織如圖3-14所示。主存中的乙個塊只能對映到cache的某一特定塊中去。

例如,主存的第0塊、第16塊、……、第2032塊,只能對映到cache的第0塊;而主存的第1塊、第17塊、……、第2033塊,只能對映到cache的第1塊……。

直接對映是最簡單的位址對映方式,它的硬體簡單,成本低,位址變換速度快,而且不涉及替換演算法問題。但是這種方式不夠靈活,cache的儲存空間得不到充分利用,每個主存塊只有乙個固定位置可存放,容易產生衝突,使cache效率下降,因此只適合大容量cache採用。例如,如果乙個程式需要重複引用主存中第0塊與第16塊,最好將主存第0塊與第16塊同時複製到cache中,但由於它們都只能複製到cache的第0塊中去,即使cache中別的儲存空間空著也不能占用,因此這兩個塊會不斷地交替裝入cache中,導致命中率降低。

2. 全相聯對映

---- 圖3-15 是全相聯對映的cache組織,主存中任何一塊都可以對映到cache中的任何一塊位置上。

全相聯對映方式比較靈活,主存的各塊可以對映到cache的任一塊中,cache的利用率高,塊衝突概率低,只要淘汰cache中的某一塊,即可調入主存的任一塊。

但是,由於cache比較電路的設計和實現比較困難,這種方式只適合於小容量cache採用。

3. 組相聯對映

---- 組相聯對映實際上是直接對映和全相聯對映的折中方案,其組織結構如圖3-16所示。

主存和cache都分組,主存中乙個組內的塊數與cache中的分組數相同,組間採用直接對映,組內採用全相聯對映。

也就是說,將cache分成u組,每組v塊,主存塊存放到哪個組是固定的,至於存到該組哪一塊則是靈活的。

例如,主存分為256組,每組8塊,cache分為8組,每組2塊。

主存中的各塊與cache的組號之間有固定的對映關係,但可自由對映到對應cache組中的任何一塊。

例如,主存中的第0塊、第8塊……均對映於cache的第0組,但可對映到cache第0組中的第0塊或第1塊;

主存的第1塊、第9塊……均對映於cache的第1組,但可對映到cache第1組中的第2塊或第3塊。

常採用的組相聯結構cache,每組內有2、4、8、16塊,稱為2路、4路、8路、16路組相聯cache。

組相聯結構cache是前兩種方法的折中方案,適度兼顧二者的優點,盡量避免二者的缺點,因而得到普遍採用。

例項分析:

1.容量為64塊的cache採用組相聯方式映像,字塊大小為128位元組,每4塊為一組,若主容量為4096塊,且以字編址,那麼主存位址為(____)位,主存區號為(____)位。

組相聯的位址構成為:區號+組號+塊號+塊內位址。

主存的每個分割槽大小與整個cache大小相等,故此主存需要分的區數為:4096/64=64,因為26=64,因此需要6位來表示區號。(直接相聯?)

每4塊為一組,故共有組數 64/4 = 16 ,因為24=16,因此需要4位表示組號。

每組4塊,故表示塊號需要2位。

塊內位址共128位元組,27=128,所以塊內地需要7位表示。

所以:主存位址的位數=6+4+2+7 = 19

主存區號的位數=6

個人見解:cache有u組,每組有v塊,即u = 16,v = 4,cache大小:64塊×128b = 8kb。

主存大小:4096×128b = 2^12*2^7 = 2^19,即主存位址有19位。

4096/64= 2^6主存區號為6位。

2.某 32 位計算機的 cache 容量為 16kb,cache 塊的大小為 16b,若主存與 cache 的位址對映採用直接對映方式,則主存位址為 1234e8f8(十六進製制)的單元裝入的 cache 位址為____。

a. 00 0100 0100 1101 (二進位制)

b. 01 0010 0011 0100 (二進位制)

c. 10 1000 1111 1000 (二進位制)

d. 11 0100 1110 1000 (二進位制)

:cache大小為16kb,塊大小為16b,所以cache被分成16kb/16b=1024塊,因210=1024故需要10位來表示塊數。

24=16故塊內位址需要4位來表示。所以cache的位址線位置為14位。

由於採用直接映像的方式,所以主存的後14位就是要裝入的到cache中的位置。故選 c.

個人見解:cache的容量是16kb = 16×1024b = 16384b,主存的位址為0x1234e8f8/(16×1024b)= 18643. 該位址對應的是主存的第18643塊。

根據公式:cache的塊位址i = 主存的塊位址 % 16384 = 1234e8f8 - 1234c000 = 0x28f8 選c

主存到Cache直接對映 全相聯對映和組相聯對映

cache的容量很小,它儲存的內容只是主存 記憶體 內容的乙個子集,且cache與主存的資料交換是以塊 cache line 為單位的。為了把資訊放到cache中,必須應用某種函式把主存位址定位到cache中,這稱為位址對映。在資訊按這種對映關係裝入cache後,cpu執行程式時,會將程式中的主存位...

主存cache的位址對映

cpu對儲存器的訪問,通常是一次讀寫乙個字單元。當 cpu訪 cache 不命中時,需將儲存在主存中的字單元連同其後若干個字一同調入 cache 中,之所以這樣做,是為了使其後的訪存能在 cache 中命中。因此,主存和 cache 之間一次交換的資料單位應該是乙個資料塊。資料塊的大小是固定的,由若...

Cache和主存位址對映關係

cache的位址映像方式中,發生塊衝突次數最小的是 a 全相聯映像 b 組相聯映像 c 直接映像 d 無法確定的 全相聯映像塊衝突最小,其次為組相聯映像,直接映像塊衝突最大。容量為64塊的cache採用組相聯方式映像,字塊大小為128位元組,每4塊為一組,若主容量為4096塊,且以字編址,那麼主存位...