CH9.1 cache的組織結(jié)構(gòu)

cache的組織結(jié)構(gòu)

Cache的容量很小,它保存的內(nèi)容只是主存內(nèi)容的一個子集,且Cache與主存的數(shù)據(jù)交換是以塊為單位的。為了把信息放到Cache中,必須應(yīng)用某種函數(shù)把主存地址定位到Cache中,這稱為地址映射。在信息按這種映射關(guān)系裝入Cache后,CPU執(zhí)行程序時,會將程序中的主存地址變換成Cache地址,這個變換過程叫做地址變換。
Cache的地址映射方式有直接映射、全相聯(lián)映射和組相聯(lián)映射。假設(shè)某臺計算機主存容量為l MB,被分為2048塊,每塊512B;Cache容量為8KB,被分為16塊,每塊也是512B。

基本的計算機都會是組相連映射,所以我只是總結(jié)下組相連的樣子:

組相聯(lián)映射

組相聯(lián)映射實際上是直接映射和全相聯(lián)映射的折中方案,其組織結(jié)構(gòu)如圖3-16所示。主存和Cache都分組,主存中一個組內(nèi)的塊數(shù)與Cache中的分組數(shù)相同,組間采用直接映射,組內(nèi)采用全相聯(lián)映射。也就是說,將Cache分成u組,每組v塊,主存塊存放到哪個組是固定的,至于存到該組哪一塊則是靈活的。例如,主存分為256組,每組8塊,Cache分為8組,每組2塊。

image.gif

主存中的各塊與Cache的組號之間有固定的映射關(guān)系,但可自由映射到對應(yīng)Cache組中的任何一塊。例如,主存中的第0塊、第8塊……均映射于Cache的第0組,但可映射到Cache第0組中的第0塊或第1塊;主存的第1塊、第9塊……均映射于Cache的第1組,但可映射到Cache第1組中的第2塊或第3塊。
常采用的組相聯(lián)結(jié)構(gòu)Cache,每組內(nèi)有2、4、8、16塊,稱為2路、4路、8路、16路組相聯(lián)Cache。組相聯(lián)結(jié)構(gòu)Cache是前兩種方法的折中方案,適度兼顧二者的優(yōu)點,盡量避免二者的缺點,因而得到普遍采用。

下圖更清晰一點:

image.png

根據(jù)上圖我們知道:每隔 2^(c-r) - 1個字塊都映射向同一個cache set。我們稱這個距離為critical stride,critical stride 可有下列公式計算得:
(critical stride) = (number of sets) * (line size) = (total cache size) / (number of ways);

一次內(nèi)存訪問示意圖

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章 計算機組成與體系結(jié)構(gòu) 1.1 計算機系統(tǒng)組成 1.1.1 計算機硬件的組成 控制器。控制器是分析和執(zhí)行指令...
    步積閱讀 2,149評論 0 15
  • CPU在一段較短的時間內(nèi),是對連續(xù)地址的一段很小的主存空間頻繁地進行訪問,而對此范圍以外地址的訪問甚少,這種現(xiàn)象稱...
    lintong閱讀 1,044評論 0 2
  • Cache entries 數(shù)據(jù)在主存和緩存之間以固定大小的”塊(block)”為單位傳遞,也就是每次從main ...
    yuwh_507閱讀 38,847評論 3 23
  • 預(yù)讀:CPU發(fā)起預(yù)讀操作(現(xiàn)在基本分工給cache了),cache根據(jù)局部性原理將主存的子集調(diào)入,同時保存cach...
    SetsunaChiya閱讀 1,397評論 0 0
  • 前言:繼續(xù)補硬件知識 存儲器的層次結(jié)構(gòu) 列出的時間和容量會隨時間變化,但數(shù)量級相對關(guān)系不變。 層次化存儲器結(jié)構(gòu)(M...
    madao756閱讀 8,025評論 0 6

友情鏈接更多精彩內(nèi)容