Cache與主存之間的全相聯映射、直接映射和組相聯映射的區別

Cache與主存之間的全相聯映射、直接映射和組相聯映射的區別

高速緩衝存儲器的功能、結構與工作原理

高速緩衝存儲器是存在於主存與CPU之間的一級存儲器, 由靜態存儲芯片(SRAM)組成,容量比較小但速度比主存高得多,接近於CPU的速度。 Cache的功能是用來存放那些近期需要運行的指令與數據。目的是提高CPU對存儲器的訪問速度。爲此需要解決2個技術問題:一是主存地址與緩存地址的映象及轉換; 二是按一定原則對Cache的內容進行替換。

Cache組成與工作原理

主要由三大部分組成:
1. Cache存儲體:存放由主存調入的指令與數據塊。
2. 地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。
3. 替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。

地址映象與轉換

地址映象是指某一數據在內存中的地址與在緩衝中的地址,兩者之間的對應關係。下面介紹三種地址映象的方式。

全相聯方式

地址映象規則:主存的任意一塊可以映象到Cache中的任意一塊
1. 主存與緩存分成相同大小的數據塊。
2. 主存的某一數據塊可以裝入緩存的任意一塊空間中。

全相聯映射方式
如果Cache的塊數爲Cb,主存的塊數爲Mb,則映象關係共有Cb×Mb種。

目錄表存放在相關(聯)存儲器中,其中包括三部分:數據塊在主存的塊地址、存入緩存後的塊地址、及有效位(也稱裝入位)。
由於是全相聯方式,因此,目錄表的容量應當與緩存的塊數相同。

全相聯地址轉換

舉例:某機主存容量爲1M,Cache的容量爲32KB, 每塊的大小爲16個字(或字節)。 劃出主、緩存的地址格式、 目錄表格式及其容量。

全相聯地址格式

容量:與緩衝塊數量相同即211=2048(或32K/16=2048)。  
優點:命中率比較高,Cache存儲空間利用率高。
缺點:訪問相關存儲器時,每次都要與全部內容比較,速度低,成本高,因而應用少。

直接相聯方式

地址映象規則: 主存儲器中一塊只能映象到Cache的一個特定的塊中。
1. 主存與緩存分成相同大小的數據塊。
2. 主存容量應是緩存容量的整數倍,將主存空間按緩存的容量分成區,主存中每一區的塊數與緩存的總塊數相等。
3. 主存中某區的一塊存入緩存時只能存入緩存中塊號相同的位置。
  圖2.3.4示出了直接相聯映象規則。 可見,主存中各區內相同塊號的數據塊都可以分別調入緩存中塊號相同的地址中,但同時只能有一個區的塊存入緩存。由於主、緩存塊號相同,因此,目錄登記時,只記錄調入塊的區號即可。

直接相聯映射方式

圖2.3.5示出了主、 緩衝地址格式、目錄表的格式及地址變換規則。主、緩存塊號及塊內地址兩個字段完全相同。目錄表存放在高速小容量存儲器中,其中包括二部分:數據塊在主存的區號和有效位。目錄表的容量與緩存的塊數相同。

直接相聯地址轉換

地址變換過程:用主存地址中的塊號B去訪問目錄存儲器, 把讀出來的區號與主存地址中的區號E進行比較, 比較結果相等,有效位爲1,則Cache命中,可以直接用塊號及塊內地址組成的緩衝地址到緩存中取數;比較結果不相等,有效位爲1, 可以進行替換,如果有效位爲0,可以直接調入所需塊。

優點:地址映象方式簡單,數據訪問時,只需檢查區號是否相等即可,因而可以得到比較快的訪問速度,硬件設備簡單。
缺點:替換操作頻繁,命中率比較低。

舉例:上例中,主存容量爲1M, Cache的容量爲32KB,每塊的大小爲16個字(或字節)。劃出主、緩存的地址格式、目錄表格式及其容量。
容量:與緩衝塊數量相同即211=2048(或32K/16=2048)。

組相聯映象方式

直接映射雖然簡單方便,但是如果程序同時用到了對應於同一個cache行中的兩個主存地址,那麼就會發生衝突,結果就是導致這個cache行不停的進行替換操作。所以就有了組相聯映射。

將這cache存儲器中的256個行分爲了4路,每路有64個cache行。這時根據組索引找到的 cache行不再是一個,而是同時找到 4個 cache行,所以才被稱爲組索引。每路中包含一個cache行。如下圖12.7所示,便是一個組相聯映射的cache。 因爲現在每路中有 64 個 cache 行,所以組索引的寬度變成了6位,而標籤域的標籤寬度變成了12位。 直接映射中組索引一次只能對應一個cache 行,而現在組相聯映射中組索引一次能對應4個cache行,所以現在主存中的一個地址可以存放到4個cache行中的任意一行。 而在直接映射中,主存中的一個地址只能存放到對應的一個cache行中。所以一個cache行被替換的概率減少爲原來的四分之一。

一個4KB四路組相聯cache

組相聯映象關係

優點:塊的衝突概率比較低,塊的利用率大幅度提高,塊失效率明顯降低。
缺點:實現難度和造價要比直接映象方式高。

Reference

ARM的cache和寫緩存

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