Cache在POWERPC處理器板中的應(yīng)用
摘要:高速緩沖存儲(chǔ)器Cache技術(shù)是現(xiàn)代處理器設(shè)計(jì)中的核心技術(shù),文中詳細(xì)討論了Cache如何應(yīng)用在POWERPC計(jì)算機(jī)板中。
關(guān)鍵詞:L1Cache;L2Cache;主存;命中率
Gibson提出高速緩存存儲(chǔ)器(Cache)技術(shù)后,1969年首先在IBM360/80計(jì)算機(jī)上得以實(shí)現(xiàn)這種技術(shù)?,F(xiàn)在,這一技術(shù)不僅為大、中型計(jì)算機(jī)而且也為小型、微型計(jì)算機(jī)廣泛采用。解決主存與CPU的速度差異問(wèn)題的技術(shù)措施有多種,設(shè)置Cache是提高存儲(chǔ)系統(tǒng)速度一個(gè)有效方法。 Cache是介于主存和CPU之間、速度數(shù)倍于主存而容量較小的快速存儲(chǔ)器,它的作用是使CPU能使用一個(gè)速度與CPU相當(dāng),而容量與主存相同的存儲(chǔ)系統(tǒng)。使用這種方法可使微機(jī)系統(tǒng)在成本增加不大的前提下性能得到較大提高。
一般的處理器中只有一級(jí)Cache,它與主存儲(chǔ)器構(gòu)成一個(gè)兩級(jí)的存儲(chǔ)系統(tǒng)。一些高性能的處理器都采用兩級(jí)Cache,第一級(jí)Cache在CPU內(nèi)部,容量很小,速度很快;第二級(jí)Cache在主板上,容量較大,速度比第一級(jí)低5倍左右。
Cache與主存儲(chǔ)器相比容量較小,它所保存的信息只是主存內(nèi)容的一個(gè)子集。特別要注意的是,CPU與Cache之間的信息交換以“字”為單位,而Cache與主存之間的信息交換是以“塊”為單位,一個(gè)塊由若干字組成,是定長(zhǎng)的。塊的大小通常取一個(gè)主存周期所訪問(wèn)到的字節(jié)數(shù)。
當(dāng)CPU試圖讀取主存一個(gè)字時(shí),發(fā)出此字內(nèi)存地址到Cache和主存,此時(shí)Cache控制邏輯依據(jù)地址進(jìn)行判斷此字當(dāng)前是否在Cache中。若是,此字立即遞交給CPU,否則,要用主存讀取周期把這個(gè)字從主存讀出送到CPU,與此同時(shí)把含有這個(gè)字的整個(gè)數(shù)據(jù)塊從主存讀出送到Cache中。由于程序的存儲(chǔ)器訪問(wèn)具有局部性,當(dāng)為滿足一次訪問(wèn)需求而取來(lái)一數(shù)據(jù)塊時(shí),下面的多次訪問(wèn)很可能讀取此塊中的其他字。
1 局部性原理和命中率
對(duì)大量典型程序運(yùn)行情況的分析結(jié)果表明,在一個(gè)較短的時(shí)間間隔內(nèi),程序?qū)Υ鎯?chǔ)器的訪問(wèn)不是任意的、隨機(jī)的,而是對(duì)某一局部范圍的存儲(chǔ)器地址頻繁訪問(wèn),對(duì)此范圍以外地址則訪問(wèn)很少,這就是程序訪問(wèn)的局部性。根據(jù)程序的局部性原理,可以在主存和CPU之間設(shè)置一個(gè)高速的容量相對(duì)較小的存儲(chǔ)器,把正在執(zhí)行的指令地址附近的一部分指令或數(shù)據(jù)從主存調(diào)入這個(gè)存儲(chǔ)器,供CPU在一段時(shí)間內(nèi)使用。這對(duì)提高程序的運(yùn)行速度有很大的作用。這個(gè)介于主存和CPU之間的高速小容量存儲(chǔ)器稱(chēng)作高速緩沖存儲(chǔ)器(Cache)。CPU訪問(wèn)存儲(chǔ)器時(shí),首先檢查Cache,如果訪問(wèn)的數(shù)據(jù)在Cache中,則CPU就能很快完成訪問(wèn),這種情況稱(chēng)之命中。命中率越高,正確獲取數(shù)據(jù)的可靠性就越大。一般來(lái)說(shuō),Cache的命中率決定于Cache容量、Cache控制算法和Cache的結(jié)構(gòu)。設(shè)計(jì)較好的Cache系統(tǒng),命中率應(yīng)存90%以上。至于沒(méi)有命中的數(shù)據(jù),CPU只好直接從主存中獲取,同時(shí)也把它復(fù)制到Cache中,以備下次訪問(wèn)。
2 Cache一致性與寫(xiě)策略
在由Cache和主存儲(chǔ)器共同構(gòu)成的Cache存儲(chǔ)系統(tǒng)中,從工作原理可知,CPU只對(duì)Cache某行信息進(jìn)行修改,而主存儲(chǔ)器內(nèi)容卻沒(méi)有修改,而其他的主控者(處理器、I/O控制器等)全由主存儲(chǔ)器得到過(guò)時(shí)的信息。同樣,若其他主控者修改主存儲(chǔ)器信息,而Cache卻沒(méi)有得到修改相應(yīng)行的通知,CPU會(huì)由Cache得到過(guò)時(shí)的信息。這兩方面都會(huì)導(dǎo)致Cache與主存容不一致,也就是Cache的一致性問(wèn)題。
為了維護(hù)Cache的一致性必須從兩方面入手,一方面涉及到處理器所采用的Cache寫(xiě)策略,另一方面涉及到處理器所采用的Cache一致性協(xié)議。
2.1 寫(xiě)直達(dá)法(Write—Through)
中文譯名稱(chēng)為寫(xiě)貫通法。顧名思義,它的做法是當(dāng)Cache寫(xiě)命中,Cache與主存同時(shí)發(fā)生寫(xiě)修改。這種策略顯然較好地維護(hù)了Cache與主存的內(nèi)容一致性,但這并不等于說(shuō)全部解決一致性問(wèn)題。例如在多處理器系統(tǒng)中各CPU都有自己的Cache,一個(gè)主存塊若在多個(gè)Cache中都有一份拷貝的話,某個(gè)CPU以寫(xiě)直達(dá)法來(lái)修改它的Cache和主存時(shí),其他Cache中的原拷貝就過(guò)時(shí)了。即使在單處理器系統(tǒng)中,也有I/O設(shè)備不經(jīng)過(guò)Cache向主存寫(xiě)入的情況。
2.2 寫(xiě)回法(Write—Back)
當(dāng)CPU對(duì)Cache寫(xiě)命中時(shí),只修改Cache的內(nèi)容不立即寫(xiě)入主存,只當(dāng)此行被換出時(shí)才寫(xiě)回主存。這種策略使Cache在CPU-主存之間,不僅在讀方向而且在寫(xiě)方向上都起到高速緩存作用。對(duì)一Cache行的多次寫(xiě)命中都在Cache中快速完成修改,只是需要替換時(shí)才寫(xiě)回主存,減少了訪問(wèn)主存的次數(shù)從而提高了效率。
2.3 寫(xiě)一次法(Write—Once)
寫(xiě)一次法是一種基于寫(xiě)回法又結(jié)合了寫(xiě)直達(dá)法的寫(xiě)策略,即寫(xiě)命中和寫(xiě)未命中的處理與寫(xiě)回法基本相同,只是第一次寫(xiě)命中時(shí)要同時(shí)寫(xiě)入主存。這種方法主要用于某些處理器的片內(nèi)Cache。
L1Cache在POWERPC中的使用MPC755處理器內(nèi)部Cache的執(zhí)行有以下特點(diǎn):
分別有兩個(gè)32-Kbyte的數(shù)據(jù)和指令Cache;
指令和數(shù)據(jù)Cache有8種設(shè)置聯(lián)系方式;
Cache的地址是物理尋址的,物理地址的標(biāo)簽儲(chǔ)藏在Cache的地址錄中;
每一種Cache的打開(kāi)與設(shè)置,可以通過(guò)設(shè)置寄存器HID0和特殊的寄存器SPR來(lái)設(shè)置。
2.4 在POWERPC處理器中設(shè)置Cache
在Memory中設(shè)置WIMG。其中,WIM改變是在頁(yè)表方式和塊方式下進(jìn)行改變和設(shè)置的。
配置MMU寄存器,對(duì)MMU寄存器的塊模式進(jìn)行配置。
配置HID0寄存器的Cache管理化。
3 L2Cache在POWERPC中的使用
PPC755配置成1M的L2Cache,如下圖。
3.1 L2Cache的初始化
清除L2CR的L2E,L2CR地址為“1017”;
設(shè)置L2CR的參數(shù);
置 L2CR[L2I]位,執(zhí)行L2Cahe的global_invalidata動(dòng)作;
判 L2CR[IP]位,如果為“1”,則表示global_invalidata動(dòng)作完成,否則繼續(xù)判,直到變?yōu)?ldquo;1”;
如果 L2CR[IP]位變?yōu)?ldquo;1”,則清除L2CR[L2I]位;
使能 L2Cache,設(shè)置L2CR[L2E]位為“1”。
3.2 2Cache有效性測(cè)試
在原有程序基礎(chǔ)上,初始化L2Cache,使能L1Cache和L2Cache;
運(yùn)行某段程序(或任務(wù)),通過(guò)設(shè)置輸出離散量的高低電平,觀察示波器波形長(zhǎng)短,來(lái)判斷L2Cache的有效性。
4 結(jié)束語(yǔ)
在計(jì)算機(jī)系統(tǒng)中,Cache技術(shù)有效地解決了處理器和存儲(chǔ)器速度問(wèn)不匹配問(wèn)題。通過(guò)對(duì)POWERPC處理器L1Cache與L2Cache的使用,使POW ERPC處理器的性能得到了很大的提高。
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論