Cache與主存之間的全相聯映射,直接映射和組相聯映射的區別
1.高速緩衝存儲器的功能、結構與工作原理
高速緩衝存儲器是存在於主存與CPU之間的一級存儲器, 由靜態存儲芯片(SRAM)組成,容量比較小但速度比主存高得多,接近於CPU的速度。 Cache的功能是用來存放那些近期需要運行的指令與數據。目的是提高CPU對存儲器的訪問速度。爲此需要解決2個技術問題:一是主存地址與緩存地址的映象及轉換; 二是按一定原則對Cache的內容進行替換。
Cache的結構和工作原理如圖2.3.1所示。
主要由三大部分組成:
Cache存儲體:存放由主存調入的指令與數據塊。
地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。
替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。
2.地址映象與轉換
地址映象是指某一數據在內存中的地址與在緩衝中的地址,兩者之間的對應關係。下面介紹三種地址映象的方式。
1.全相聯方式
地址映象規則:主存的任意一塊可以映象到Cache中的任意一塊
(1) 主存與緩存分成相同大小的數據塊。
(2) 主存的某一數據塊可以裝入緩存的任意一塊空間中。
全相聯方式的對應關係如圖2.3.2所示。如果Cache的塊數爲Cb,主存的塊數爲Mb,則映象關係共有Cb×Mb種。
圖2.3.3示出了目錄表的格式及地址變換規則。 目錄表存放在相關(聯)存儲器中,其中包括三部分:數據塊在主存的塊地址、存入緩存後的塊地址、及有效位(也稱裝入位)。由於是全相聯方式,因此,目錄表的容量應當與緩存的塊數相同。
舉例:某機主存容量爲1M,Cache的容量爲32KB, 每塊的大小爲16個字(或字節)。 劃出主、緩存的地址格式、 目錄表格式及其容量。
容量:與緩衝塊數量相同即211=2048(或32K/16=2048)。
優點:命中率比較高,Cache存儲空間利用率高。
缺點:訪問相關存儲器時,每次都要與全部內容比較,速度低,成本高,因而應用少。
2.直接相聯方式
地址映象規則: 主存儲器中一塊只能映象到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)。
3.組相聯映象方式
組相聯的映象規則:
(1) 主存和Cache按同樣大小劃分成塊。
(2) 主存和Cache按同樣大小劃分成組。
(3) 主存容量是緩存容量的整數倍,將主存空間按緩衝區的大小分成區,主存中每一區的組數與緩存的組數相同。
(4) 當主存的數據調入緩存時,主存與緩存的組號應相等,也就是各區中的某一塊只能存入緩存的同組號的空間內,但組內各塊地址之間則可以任意存放, 即從主存的組到Cache的組之間採用直接映象方式;在兩個對應的組內部採用全相聯映象方式。
圖2.3.6示出了組相聯的映象關係, 圖中緩存共分Cg個組,每組包含有Gb塊; 主存是緩存的Me倍,所以共分有Me個區, 每個區有Cg組,每組有Gb塊。那麼, 主存地址格式中應包含4個字段:區號、區內組號、組內塊號和塊內地址。 而緩存中包含3個字段:組號、組內塊號、塊內地址。主存地址與緩存地址的轉換有兩部分,組地址是按直接映象方式,按地址進行訪問,而塊地址是採用全相聯方式,按內容訪問。組相聯的地址轉換部件也是採用相關存儲器實現,見圖2.3.7。
相關存儲器中每個單元包含有: 主存地址中的區號E與組內塊號B,兩者結合在一起,其對應的字段是緩存塊地址b。相關存儲器的容量,應與緩存的塊數相同。當進行數據訪問時,先根據組號,在目錄表中找到該組所包含的各塊的目錄,然後將被訪數據的主存區號與組內塊號,與本組內各塊的目錄同時進行比較。如果比較相等,而且有效位爲“1”則命中。
將其對應的緩存塊地址b送到緩存地址寄存器的塊地址字段,與組號及塊內地址組裝即形成緩存地址。如果比較不相等,說明沒命中,所訪問的數據塊尚沒有進入緩存,則進行組內替換;如果有效位爲0,則說明緩存的該塊尚未利用, 或是原來數據作廢,可重新調入新塊。
優點:塊的衝突概率比較低,塊的利用率大幅度提高,塊失效率明顯降低。
缺點:實現難度和造價要比直接映象方式高。