Cache相關(guān)原理
當(dāng)用虛地址訪問主存時(shí),機(jī)器自動(dòng)地把它經(jīng)輔助軟件、硬件變換成主存實(shí)地址。查看這個(gè)地址所對(duì)應(yīng)的單元內(nèi)容是否已經(jīng)裝入主存,如果在主存就進(jìn)行訪問,如果不在主存內(nèi)就經(jīng)輔助軟件、硬件把它所在的那塊程序和數(shù)據(jù)由輔存調(diào)入主存,而后進(jìn)行訪問。這些操作都不必由程序員來(lái)安排,也就是說(shuō),對(duì)應(yīng)用程員員是透明的。 主-輔存層次解決了存儲(chǔ)器大容量要求和低成本之間的矛盾。 在速度方面,計(jì)算機(jī)的主存和CPU直保持了大約一個(gè)數(shù)量級(jí)的差距。顯然這個(gè)差距限制了CPU速度潛力的發(fā)揮。為了彌合這個(gè)差距,僅采用一種工藝的單一存儲(chǔ)器是行不通的,必須進(jìn)一步從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)和組織上去研究。設(shè)置高速緩沖存儲(chǔ)器(Cache)是解決存取速度的重要方法。在CPU和主存中間設(shè)置高速緩沖存儲(chǔ)器,構(gòu)成高速緩存(Cache)-主存層次,要求Cache在速度上能跟得上CPU的要求。Cache-主存間的地址映象和調(diào)度吸取了比它較早出現(xiàn)的主-輔存存儲(chǔ)層次的技術(shù),不同的是因其速度要求高,不是由軟、硬件結(jié)合而完全由硬件來(lái)實(shí)現(xiàn)。
地址映象是指某一數(shù)據(jù)在內(nèi)存中的地址與在緩沖中的地址,兩者之間的對(duì)應(yīng)關(guān)系。下面介紹三種地址映象的方式。1.全相聯(lián)方式地址映象規(guī)則:主存的任意一塊可以映象到Cache中的任意一塊(1) 主存與緩存分成相同大小的數(shù)據(jù)塊。(2) 主存的某一數(shù)據(jù)塊可以裝入緩存的任意一塊空間中。如果Cache的塊數(shù)為Cb,主存的塊數(shù)為Mb,則映象關(guān)系共有Cb×Mb種。目錄表存放在相關(guān)(聯(lián))存儲(chǔ)器中,其中包括三部分:數(shù)據(jù)塊在主存的塊地址、存入緩存后的塊地址、及有效位(也稱裝入位)。由于是全相聯(lián)方式,因此,目錄表的容量應(yīng)當(dāng)與緩存的塊數(shù)相同。優(yōu)點(diǎn):命中率比較高,Cache存儲(chǔ)空間利用率高。缺點(diǎn):訪問相關(guān)存儲(chǔ)器時(shí),每次都要與全部?jī)?nèi)容比較,速度低,成本高,因而應(yīng)用少。2.直接相聯(lián)方式地址映象規(guī)則: 主存儲(chǔ)器中一塊只能映象到Cache的一個(gè)特定的塊中。
(1) 主存與緩存分成相同大小的數(shù)據(jù)塊。(2) 主存容量應(yīng)是緩存容量的整數(shù)倍,將主存空間按緩存的容量分成區(qū),主存中每一區(qū)的塊數(shù)與緩存的總塊數(shù)相等。(3) 主存中某區(qū)的一塊存入緩存時(shí)只能存入緩存中塊號(hào)相同的位置。主存中各區(qū)內(nèi)相同塊號(hào)的數(shù)據(jù)塊都可以分別調(diào)入緩存中塊號(hào)相同的地址中,但同時(shí)只能有一個(gè)區(qū)的塊存入緩存。由于主、緩存塊號(hào)相同,因此,目錄登記時(shí),只記錄調(diào)入塊的區(qū)號(hào)即可。主、緩存塊號(hào)及塊內(nèi)地址兩個(gè)字段完全相同。目錄表存放在高速小容量存儲(chǔ)器中,其中包括二部分:數(shù)據(jù)塊在主存的區(qū)號(hào)和有效位。目錄表的容量與緩存的塊數(shù)相同。優(yōu)點(diǎn):地址映象方式簡(jiǎn)單,數(shù)據(jù)訪問時(shí),只需檢查區(qū)號(hào)是否相等即可,因而可以得到比較快的訪問速度,硬件設(shè)備簡(jiǎn)單。缺點(diǎn):替換操作頻繁,命中率比較低。3.組相聯(lián)映象方式組相聯(lián)的映象規(guī)則:(1) 主存和Cache按同樣大小劃分成塊。(2) 主存和Cache按同樣大小劃分成組。(3) 主存容量是緩存容量的整數(shù)倍,將主存空間按緩沖區(qū)的大小分成區(qū),主存中每一區(qū)的組數(shù)與緩存的組數(shù)相同。(4) 當(dāng)主存的數(shù)據(jù)調(diào)入緩存時(shí),主存與緩存的組號(hào)應(yīng)相等,也就是各區(qū)中的某一塊只能存入緩存的同組號(hào)的空間內(nèi),但組內(nèi)各塊地址之間則可以任意存放,即從主存的組到Cache的組之間采用直接映象方式;在兩個(gè)對(duì)應(yīng)的組內(nèi)部采用全相聯(lián)映象方式。主存地址與緩存地址的轉(zhuǎn)換有兩部分,組地址是按直接映象方式,按地址進(jìn)行訪問,而塊地址是采用全相聯(lián)方式,按內(nèi)容訪問。組相聯(lián)的地址轉(zhuǎn)換部件也是采用相關(guān)存儲(chǔ)器實(shí)現(xiàn)。優(yōu)點(diǎn):塊的沖突概率比較低,塊的利用率大幅度提高,塊失效率明顯降低。缺點(diǎn):實(shí)現(xiàn)難度和造價(jià)要比直接映象方式高。