Cache 的功能
高速緩沖存儲器,是一個相對于主存來說容量很小、速度特快、用靜態(tài)存儲器器件實現(xiàn)的存儲器系統(tǒng)。它的作用在于緩解主存速度慢、跟不上CPU讀寫速度要求的矛盾。它是把CPU最近最可能用到的少量信息(數(shù)據(jù)或指令)從主存復(fù)制到cache中,當(dāng)CPU下次再用這些信息時,它就不必訪問慢速的主存,而直接從快速的cache中得到,從而提高了得到這些信息的速度,使CPU有更高的運(yùn)行效率。
Cache 的工作原理
Cache的工作原理是基于程序訪問的局部性。對大量典型程序運(yùn)行情況的分析結(jié)果表明,在一個較短的時間間隔內(nèi),由程序產(chǎn)生的地址往往集中在存儲器邏輯地址空間的很小范圍內(nèi)。指令地址的分布本來就是連續(xù)的,再加上循環(huán)程序段和子程序段要重復(fù)執(zhí)行多次。因此,對這些地址的訪問就自然地具有時間上集中分布的傾向。此外。對數(shù)組的存儲和訪問以及工作單元的選擇都可以使存儲器地址相對集中。這種對局部范圍的存儲器地址頻繁訪問,而對此范圍以外的地址則訪問甚少的現(xiàn)象,就稱為程序訪問的局部性。
根據(jù)程序的局部性原理,可以在主存和CPU之間設(shè)置一個速度更高但容量較小的存儲器,把正在執(zhí)行的指令地址附近的一部分指令或數(shù)據(jù)從主存調(diào)入這個存儲器,供CPU在一段時間內(nèi)使用,這對提高程序的運(yùn)行速度有很大的作用。
因此,高速緩存的成功和失敗就取決于將哪些內(nèi)容放到Cache中。根據(jù)局部性原理,在訪問存儲器的某個字后,并將該字和它的相鄰單元從低速的大容量存儲器系統(tǒng)中讀到高速緩存中。這樣,下次訪問它時,可以訪問得快一些。如果,在一個短的時間片內(nèi),需要對這個塊中的字訪問k次,CPU就只要訪問低速存儲器一次,另外k-1次就可以訪問快速的高速緩存,訪問次數(shù)越多,總體性能就越好。
Cache 的結(jié)構(gòu)
硬盤的組成
Cache 的結(jié)構(gòu),如圖6.13所示。主存由2n個單元構(gòu)成,地址碼的位數(shù)為n,主存分成若干個塊,每塊有2b個字節(jié)。同樣Cache分成若干塊,每塊內(nèi)又包含若干個字,它們的塊大小相同(即塊內(nèi)的字?jǐn)?shù)相同)。由于Cache的塊數(shù)c遠(yuǎn)小于主存的塊數(shù)m,因此,一個緩存塊不能惟一地、永久地只對應(yīng)一個主存塊,故每個緩存塊需設(shè)一個標(biāo)記用來表示當(dāng)前存放的是哪一個主存塊,該標(biāo)記的內(nèi)容相當(dāng)于主存塊的編號。CPU讀信息時,要將主存地址的高m位 (或m位中的一部分)與緩存塊的標(biāo)記進(jìn)行比較,以判斷所讀的信息是否已在緩存中。
Cache的容量與塊長是影響Cache效率的重要因素,通常用“命中率”來衡量Cache的效率。命中率是指CPU要訪問的信息已在Cache內(nèi)的比率。一般而言,Cache容量越大,其CPU的命中率就越高。當(dāng)然也沒必要太大,太大會增加成本,而且當(dāng)Cache容量達(dá)到一定值時,命中率已不因容量的增大而有明顯的提高。因此,Cache容量是總成本價與命中率的折中值。如80386的主存最大容量為4GB,與其配套的Cache容量為16KB或32KB,其命中率可達(dá)95%以上。
圖6.13 Cache/主存存儲空間的基本結(jié)構(gòu).
Cache 的工作流程
高速緩存的工作流程如圖6.14所示,由工作流程圖可知,當(dāng)CPU送出主存地址(大)后,經(jīng)過地址映像變換機(jī)構(gòu)的比較后,得到比較結(jié)果是否命中,如果命中,就將此大地址變換成Cache地址(?。┖笏偷紺ache,以選中所需要的字,并將該字傳送到CPU數(shù)據(jù)總線;如果不命中,即去主存將所需的字讀出后送到數(shù)據(jù)總線,同時,將此字的所在塊(若干個字)讀出,在送到Cache前,還要判斷,如果Cache中可以裝入就直接寫入,如不能裝入就調(diào)用替換策略。
圖6.14 Cache的工作流程
csche的三種地址映像方式
為了把信息放到Cache中,必須應(yīng)用某種函數(shù)或規(guī)則把主存地址映象到Cache,這種地址的邏輯對應(yīng)關(guān)系稱作地址映象。當(dāng)信息按這種映象關(guān)系裝入Cache后,執(zhí)行程序時,應(yīng)將主存地址變換成Cache地址,這個變換過程叫作地址變換,地址映象和地址變換是密切相關(guān)的。Cache的地址映象方式主要有全相聯(lián)映象、直接映象和組相聯(lián)映象三種。
1.全相聯(lián)映像
如圖6.15所示,這種主存與cache的地址映像關(guān)系比較簡單,它允許主存中的一個字塊映像到cache存儲器的任何一個字塊位置上,也允許從確實已被占滿的cache存儲器中替換出任何一個字塊。
圖6.15全相聯(lián)映像
圖6.16為地址變換過程示意,可以將主存地址分成兩段,主存塊號和塊內(nèi)地址,將cache的地址分成cache塊號和塊內(nèi)地址,兩者的塊內(nèi)地址即字地址且相同。
圖6.16 全相聯(lián)映像的地址變換
全相聯(lián)映像的優(yōu)點是塊沖突率低,只有當(dāng)Cache中全部裝滿后,才有可能出現(xiàn)塊沖突。缺點是訪問速度慢(相對于讀出一個單元內(nèi)容的其他方法),這是因為要與所有標(biāo)記全部比較一遍,才能確定是否命中;另外實現(xiàn)比較復(fù)雜,成本比較高。因此,全相聯(lián)映像一般用于較小的Cache 。
2.直接映像
這種地址映像如圖6.17所示,圖(a)中,它以Cache的容量為單位,將主存分為若干個區(qū);圖(b)中的點虛線、雙點劃虛線和實線清楚地看出,主存每個區(qū)中的塊只能裝入與Cache對應(yīng)的塊,即直接映象。
圖6.17 直接映像
一般情況下,Cache存儲空間被分為n個塊,塊號為j,主存空間被分為m個區(qū),主存塊號分別為i,區(qū)號分別為k。顯然,主存第0區(qū)的第0塊、1 塊、... n+1塊只能映象到Cache的第0塊、1 塊、... n+1塊。同樣,主存第1區(qū)的第n塊、n+1 塊、...2 n-1塊,只能映象到Cache的第0塊、1 塊、... n+1塊。因此,直接映象函數(shù)定義為:
j = i mod 2c (其中2c為cache的塊數(shù),即n=2c,“mod”為求模取余)
此外,還可以根據(jù)主存塊號求出主存區(qū):k = [i / 2c],其中k是主存的區(qū)號,i是主存的塊號,2c為cache的塊數(shù),即n,“[ ]”為取整。
圖6.18為直接映像的地址變換過程示意,假設(shè)將主存地址分成3段,區(qū)號、區(qū)內(nèi)塊號和塊內(nèi)地址,將cache的地址分成cache塊號和塊內(nèi)地址。因為直接映像,所以區(qū)內(nèi)塊號與cache塊號兩者一定相同,因此,區(qū)號是鑒別不同塊的唯一標(biāo)志。圖中虛線框內(nèi)為按地址訪問的高速存儲器,它屬于cache控制器,存放著裝入主存信息后的主存區(qū)號等標(biāo)志,也稱塊表。當(dāng)主存地址到達(dá)后,以區(qū)內(nèi)塊號作為地址,讀出塊表內(nèi)的區(qū)號標(biāo)志,并與當(dāng)前的區(qū)號比較,如果相同,為命中,即將當(dāng)前cache塊號與塊內(nèi)地址一起送到cache,對cache進(jìn)行字訪問。如果不命中,就要訪問主存。
圖6.18 直接映像的地址變換
直接映像是簡單的地址映像,地址變換速度較快,且遇到?jīng)_突替換時,只要將所在的塊替換出來,不需要替換算法,但它的命中率略低,但硬件實現(xiàn)更容易。
3.組相聯(lián)映像
如果將圖6.19中的cache再分成若干個組,主存的區(qū)也分成相同的組,就成為組相聯(lián)映像,由圖(a)中的虛線、雙點劃虛線可清楚地看出,主存中每個區(qū)中的組都直接映像到cache中的相應(yīng)組,由圖(b)所示,組內(nèi)的每一塊可以全相聯(lián)映象到Cache中相應(yīng)組內(nèi)的任何一個任何塊,即組間直接映像,組內(nèi)全相聯(lián)映像。即主存數(shù)據(jù)塊所在的組只能直接映像到cache的相應(yīng)的組中,該組號確定后,數(shù)據(jù)塊本身就可以全相聯(lián)映像到cache該組的任意一塊。
圖6.19 組相聯(lián)映像
由于組相聯(lián)映像判斷塊命中和替換算法上都比全相聯(lián)映像簡單,所以實現(xiàn)起來容易得多,訪問沖突的概率比直接映像來得低,命中率接近于全相聯(lián)映像,所以組相聯(lián)映像被很多機(jī)器廣泛采用。
好了,這篇文章的內(nèi)容發(fā)貨聯(lián)盟就和大家分享到這里,如果大家網(wǎng)絡(luò)推廣引流創(chuàng)業(yè)感興趣,可以添加微信:80709525 備注:發(fā)貨聯(lián)盟引流學(xué)習(xí); 我拉你進(jìn)直播課程學(xué)習(xí)群,每周135晚上都是有實戰(zhàn)干貨的推廣引流技術(shù)課程免費(fèi)分享!