資源描述:
《cache和主存之間的映像》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、3.7.3Cache和主存之間的映像方式 為了把信息放到Cache中,必須應用某種函數(shù)把主存地址映像到Cache中定位,稱為地址映像(映射)。而將主存地址變換成Cache地址,稱做地址變換,它們之間是密切相關(guān)的。常用的地址映像方式有三種,分別是全相聯(lián)映像、直接映像和組相聯(lián)映像?! ?.全相聯(lián)映像 全相聯(lián)映像是指將內(nèi)存和Cache按照固定的相同的大小進行分塊。內(nèi)存的塊和Cache的塊可以任意對應,即內(nèi)存的任何一塊都可以映像到Cache的任何一塊。在Cache的存儲空間被占滿的情況下,也允許確實已被占滿的Cac
2、he存儲器中替換出任何一個舊塊,具體如圖3-14所示?! ?.直接映像 直接映像先將Cache分成若干塊,每個塊的大小相同,并對每個塊進行編號。同時根據(jù)Cache容量大小將內(nèi)存分成若干區(qū)(頁),每個區(qū)的容量都跟Cache的容量相同,然后對內(nèi)存進行分塊,每塊的大小跟Cache塊的大小相同,同樣對區(qū)內(nèi)的塊進行編號。映像時,內(nèi)存的某個區(qū)的塊只能保存在與其塊號相同的Cache塊中。如圖3-15所示,內(nèi)存各區(qū)中的第0塊只能映像到Cache的第0塊,而不能映像到其他塊。3.組相聯(lián)映像 組相聯(lián)映像實際上是直接映像和全相聯(lián)
3、映像的折中方案。組相聯(lián)映像方式先將Cache分成大小相同的若干區(qū)(組),對每個區(qū)按照直接映像的方式進行分塊,并且編號,因此,Cache中有多個編號相同的塊。對內(nèi)存按照Cache區(qū)的大小進行分頁,再對每頁按照Cache塊的大小進行分塊,每個內(nèi)存塊可以對應不同Cache區(qū)中的相同塊號的塊。如圖3-16中內(nèi)存第0頁的第0塊,可以對應Cache的第0區(qū)的第0塊,也可以對應第j區(qū)的第0塊?! ≡谌N方式中,全相聯(lián)映像方式比較靈活,Cache的塊沖突概率最低、空間利用率最高,但是地址變換速度慢,而且成本高,實現(xiàn)起來比較困難
4、;直接映像方式是最簡單的地址映像方式,成本低,易實現(xiàn),地址變換速度快,而且不涉及其他兩種映像方式中的替換算法問題。但這種方式不夠靈活,Cache的塊沖突概率最高、空間利用率最低;組相聯(lián)映像實際上是全相聯(lián)映像和直接映像的折中方案,其優(yōu)點和缺點介于全相聯(lián)和直接映像方式的優(yōu)缺點之間。知識點:Cache與主存地址映像?Cache和主存都被分成若干個大小相等的塊,每塊由若干個字節(jié)組成,主存和Cache的數(shù)據(jù)交換是以塊為單位,需要考慮二者地址的邏輯關(guān)系。?地址映像:把主存地址空間映像到Cache地址空間,即按某種規(guī)則把主存
5、的塊復制到Cache中。?一、全相連映像?主存中任何一個塊均可以映像裝入到Cache中的任何一個塊的位置上。主存地址分為塊號和塊內(nèi)地址兩部分,Cache地址也分為塊號和塊內(nèi)地址。Cache的塊內(nèi)地址部分直接取自主存地址的塊內(nèi)地址段。主存塊號和Cache塊號不相同,Cache塊號根據(jù)主存塊號從塊表中查找。Cache保存的各數(shù)據(jù)塊互不相關(guān),Cache必須對每個塊和塊自身的地址加以存儲。當請求數(shù)據(jù)時,Cache控制器要把請求地址同所有的地址加以比較,進行確認。?特點:靈活,塊沖突率低,只有在Cache中的塊全部裝滿后
6、才會出現(xiàn)沖突,Cache利用率高。但地址變換機構(gòu)復雜,地址變換速度慢,成本高。?公式:?????主存地址位數(shù)=塊號+塊內(nèi)地址;?????Cache地址位數(shù)=塊號+塊內(nèi)地址。?二、直接映像?把主存分成若干區(qū),每區(qū)與Cache大小相同。區(qū)內(nèi)分塊,主存每個區(qū)中塊的大小和Cache中塊的大小相等,主存中每個區(qū)包含的塊的個數(shù)與Cache中塊的個數(shù)相等。任意一個主存塊只能映像到Cache中唯一指定的塊中,即相同塊號的位置。主存地址分為三部分:區(qū)號、塊號和塊內(nèi)地址,Cache地址分為:塊號和塊內(nèi)地址。直接映像方式下,數(shù)據(jù)塊只
7、能映像到Cache中唯一指定的位置,故不存在替換算法的問題。它不同于全相連Cache,地址僅需比較一次。?特點:地址變換簡單、速度快,可直接由主存地址提取出Cache地址。但不靈活,塊沖突率較高,Cache空間得不到充分利用。?公式:????主存地址位數(shù)=區(qū)號+區(qū)內(nèi)分塊號+塊內(nèi)地址;????Cache地址位數(shù)=塊號+塊內(nèi)地址。?三、組相連映像?組相連映像是前兩種方式的折衷。主存按Cache容量分區(qū),每個區(qū)分為若干組,每組包含若干塊。Cache也進行同樣的分組和分塊。主存中一個組內(nèi)的塊數(shù)與Cache中一個組內(nèi)的塊
8、數(shù)相等。組間采用直接方式,組內(nèi)采用全相連方式。組的容量=1時,即直接映像,組的容量=整個Cache的容量時,即全相連映像。Cache的存在對于程序員透明,Cache的地址變換和數(shù)據(jù)塊的替換算法都采用硬件實現(xiàn)。?公式:?主存地址位數(shù)=區(qū)號+組號+主存塊號+塊內(nèi)地址;Cache地址位數(shù)=組號+組內(nèi)塊號+塊內(nèi)地址。??四、主存地址和Cache地址的相關(guān)計算?&主存地址的位數(shù)A由主存容量N決定