孫佳佳,劉財(cái)坤
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
高速緩存單元原理及設(shè)計(jì)實(shí)現(xiàn)
孫佳佳,劉財(cái)坤
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
Cache是一種容量小、速度快的存儲(chǔ)器陣列,位于主存和CPU內(nèi)核之間,保存著最近一段時(shí)間處理器涉及到的主存塊內(nèi)容。為了改善系統(tǒng)性能,CPU盡可能從Cache中讀取數(shù)據(jù),減小慢速存儲(chǔ)器給CPU內(nèi)核造成的存儲(chǔ)器訪問瓶頸問題的影響。
高速緩存;處理器;主存
高速緩存(Cache),位于主存儲(chǔ)器和CPU之間,用來提高存儲(chǔ)系統(tǒng)的性能。高速緩沖存儲(chǔ)器是全部用硬件來實(shí)現(xiàn)的,不僅對(duì)應(yīng)用程序員是透明的,對(duì)系統(tǒng)程序員也是透明的。cache與主存儲(chǔ)器之間以塊(cache Line)為單位進(jìn)行數(shù)據(jù)交換。當(dāng)CPU讀取數(shù)據(jù)或者指令時(shí),同時(shí)將讀取到的數(shù)據(jù)或者指令保存到一個(gè)cache塊中。這樣當(dāng)CPU第二次需要讀取相同的數(shù)據(jù)或指令時(shí),可以從相應(yīng)的Cache塊中得到相應(yīng)的數(shù)據(jù)或指令。因?yàn)閏ache的速度遠(yuǎn)遠(yuǎn)大于主存儲(chǔ)器的速度,因此系統(tǒng)整體性能就得到很大提高。
圖1 帶cache的系統(tǒng)
在cache存儲(chǔ)系統(tǒng)中,把cache和主存儲(chǔ)器都劃分成相同大小的塊。因此,主存地址可以由塊號(hào)B和塊內(nèi)地址W兩部分組成。同樣,cache的地址也可以由塊號(hào)B和塊內(nèi)地址W組成。當(dāng)CPU要訪問cache時(shí),CPU送來主存地址,放到主存地址寄存器中。通過地址變換部件把主存地址中的塊號(hào)B變換成cache的塊號(hào)B,并放到cache地址寄存器中。同時(shí)將主存地址中的塊內(nèi)地址W直接作為cache的塊內(nèi)地址W裝入到cache地址寄存器中。如果變換成功(稱為cache命中),就用得到的cache地址去訪問cache,從cache中取出數(shù)據(jù)送到CPU中。如果變換不成功,則產(chǎn)生cache失效信息,并且用主存地址訪問主存儲(chǔ)器。從主存儲(chǔ)器中讀出一個(gè)字送往CPU,同時(shí)把包含被訪問字在內(nèi)的一整塊都從主存儲(chǔ)器讀出來,裝入到cache中去。這時(shí),如果cache已經(jīng)滿了,則要采用某種cache替換策略把不常用的塊先調(diào)出到主存儲(chǔ)中相應(yīng)的塊中,以便騰出空間來存放新調(diào)入的塊。由于程序具有局部性特點(diǎn),每次塊失效時(shí)都把一塊(由多個(gè)字組成)調(diào)入到cache中,能夠提高cache的命中率。圖2為cache工作原理圖。
圖2 cache工作原理
3.1 地址映像方式設(shè)計(jì)
Cache一般多采用組相聯(lián)映像設(shè)計(jì)方式。在組相聯(lián)的地址映像和變換方式中,把主存和cache按同樣大小劃分成組(set),每一個(gè)組都由相同的塊數(shù)組成。由于主存儲(chǔ)器的容量比cache的容量大得多,因此,主存的組數(shù)要比cache的組數(shù)多。從主存組到cache組之間采用直接映像方式。在主存中的一組與cache中的一組之間建立了直接映像關(guān)系之后,在兩個(gè)對(duì)應(yīng)的組內(nèi)部采用全相聯(lián)映像方式。
3.2 替換算法設(shè)計(jì)
在把主存地址變換成cache地址的過程中,如果發(fā)現(xiàn)cache塊失效,則需要從主存中調(diào)入一個(gè)新塊到cache中。而來自主存中的這個(gè)新塊往往可以裝入到cache的多個(gè)塊中。當(dāng)可以裝入這個(gè)新塊的幾個(gè)cache塊都已經(jīng)裝滿時(shí),就要使用cache替換算法,從那些塊中找出一個(gè)不常用的塊,把它調(diào)回到主存中原來存放它的那個(gè)地方,騰出一個(gè)塊存放從主存中調(diào)來的新塊。替換算法一般有兩種:隨機(jī)替換算法和輪轉(zhuǎn)法。
隨機(jī)替換算法通過一個(gè)偽隨機(jī)數(shù)發(fā)生器產(chǎn)生一個(gè)偽隨機(jī)數(shù),用新塊將編號(hào)為該偽隨機(jī)數(shù)的cache塊替換掉。這種算法很簡(jiǎn)單,易于實(shí)現(xiàn)。但是它沒有考慮程序的局部性特點(diǎn),也沒有利用歷史上的塊地址流分布情況,因而效果較差。同時(shí)這種算法不易預(yù)測(cè)最壞情況下cache的性能。
輪轉(zhuǎn)法維護(hù)一個(gè)邏輯計(jì)數(shù)器,利用該計(jì)數(shù)器依次選擇將要被替換出去的cache塊。這種算法容易預(yù)測(cè)最壞情況下cache的性能。但它有一個(gè)明顯缺點(diǎn),在程序發(fā)生很小變化時(shí),可能造成cache平均性能急劇變化。
3.3 結(jié)構(gòu)設(shè)計(jì)
Cache有兩個(gè)重要組成部分:Cache控制器和Cache存儲(chǔ)器。Cache存儲(chǔ)器是一個(gè)專用存儲(chǔ)器陣列,它由3部分組成:目錄存儲(chǔ)段、狀態(tài)信息段和數(shù)據(jù)項(xiàng)段,其訪問單元稱為Cache行,每一個(gè)Cache行都由這3部分組成。
Cache必須知道Cache存儲(chǔ)器中每個(gè)Cache行所對(duì)應(yīng)于每個(gè)主存中的位置,Cache使用目錄存儲(chǔ)段來記錄每個(gè)Cache行是由主存的什么地方拷貝得來。該目錄項(xiàng)就是Cache標(biāo)簽(tag)。同時(shí),Cache存儲(chǔ)器必須存儲(chǔ)來自主存的信息,這些信息被存放在數(shù)據(jù)項(xiàng)段里。在Cache存儲(chǔ)器里還有記錄狀態(tài)信息的狀態(tài)位,比較常見的狀態(tài)位是有效位(valid)和臟位(dirty)。有效位用來標(biāo)記當(dāng)前的Cache行是活動(dòng)的,即有效的;臟位用來標(biāo)記Cache行中所含的內(nèi)容與主存中相應(yīng)的內(nèi)容是否一致。Cache結(jié)構(gòu)如圖3所示。
圖3 Cache的結(jié)構(gòu)
圖4為以8Kb大小為例,每路cache有2Kb大小,每塊(Line)cache有8字大小,所以每片cache的塊(Line)數(shù)為64Cache。組相聯(lián)Cache存儲(chǔ)器的一般結(jié)構(gòu)設(shè)計(jì)如圖4所示。
Cache控制器是完全由硬件實(shí)現(xiàn)的,將主存中的數(shù)據(jù)或者代碼自動(dòng)拷貝到Cache存儲(chǔ)器中,這個(gè)過程自動(dòng)完成,對(duì)應(yīng)用軟件完全透明。
首先,讀寫存儲(chǔ)器的請(qǐng)求在被傳送到存儲(chǔ)器控制器之前,會(huì)被Cache控制器截獲,Cache控制器將該請(qǐng)求的地址信息分為3部分:標(biāo)簽域、組索引域和數(shù)據(jù)索引域,控制器通過組索引域在Cache存儲(chǔ)器中確定可能包含所要求代碼或數(shù)據(jù)的Cache行位置,Cache行中還包含標(biāo)簽和狀態(tài)位,Cache控制器就是通過他們來確定數(shù)據(jù)的實(shí)際存儲(chǔ)位置。
接下來,控制器檢查有效位,以確定尋址到的Cache行是否有效,并且將請(qǐng)求地址的標(biāo)簽域值與Cache行的標(biāo)簽域進(jìn)行比較,如果Cache行當(dāng)前有效,并且標(biāo)簽域的比較結(jié)果相等,則Cache命中,否則Cache失效。在Cache失效的情況下,控制器從主存中拷貝整個(gè)Cache行到Cache存儲(chǔ)器中,為CPU提供相應(yīng)的代碼或數(shù)據(jù)。Cache控制器的結(jié)構(gòu)設(shè)計(jì)大致如圖5所示。
圖4 Cache存儲(chǔ)器組相聯(lián)的一般結(jié)構(gòu)
圖5 Cache控制器的一般結(jié)構(gòu)
對(duì)于功能驗(yàn)證,采用的驗(yàn)證平臺(tái)為能夠組成的最小系統(tǒng),連接CPU、Flash存儲(chǔ)器、PSRAM存儲(chǔ)器和LCD等部件。驗(yàn)證過程是在復(fù)位之后進(jìn)入工作狀態(tài),將Flash中的程序搬運(yùn)到PSRAM中,然后執(zhí)行PSRAM中的程序。在程序運(yùn)行過程中,通過開關(guān)Cache來驗(yàn)證Cache在系統(tǒng)中起到的作用??梢钥吹?,在打開Cache之后,程序的運(yùn)行速度明顯加快。圖6為驗(yàn)證平臺(tái)結(jié)構(gòu)圖。
圖6 驗(yàn)證平臺(tái)結(jié)構(gòu)框圖
通過仿真驗(yàn)證,實(shí)現(xiàn)了cache的功能,結(jié)構(gòu)合理。文中的設(shè)計(jì)思想,對(duì)帶有cache的嵌入式CPU的設(shè)計(jì),具有非常大的實(shí)用價(jià)值。
[1]Steve Furber.ARM SoC體系結(jié)構(gòu)[M].田澤,于敦山,盛世敏,譯.北京:北京航空航天大學(xué)出版社,2002.
[2]杜春雷,編著.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
Theory and Im plementation of Design on Cache
SUN Jia-jia,LIU Cai-kun
(The 47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110032,China)
The cache,as amemory array with low capacity and high speed,is located between the main memory and CPU,which storages the latest contents of the main memory block processed by the processor.For improving the performance of storage system,CPU reads data or instructions from the corresponding Cache block to decrease the effect caused by the low speed of themain memory.
Cache;CPU;Main memory
10.3969/j.issn.1002-2279.2014.03.003
TN4
:B
:1002-2279(2014)03-0008-03
孫佳佳(1980-),女,遼寧沈陽人,工程師,主研方向:集成電路設(shè)計(jì)。
2013-12-27