劉彩霞,石 峰,鄧 寧,宋 紅,薛立成
(北京理工大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,北京100081,lcxhxb@gmail.com)
多核(Chip Multi-Processor,CMP)處理器能夠充分開發(fā)不同粒度的并行性,因而成為微處理器的主流發(fā)展方向.本質(zhì)上多核設(shè)計(jì)的瓶頸還在于解決片內(nèi)多核之間的互聯(lián)和通信機(jī)制問題,也就是需要一個(gè)快速的數(shù)據(jù)存儲和傳輸路徑[1-3].存儲系統(tǒng)在多核系統(tǒng)中不再僅僅意味著對數(shù)據(jù)的組織和存儲,合理的存儲體系對于提高多核系統(tǒng)并行通信性能甚至系統(tǒng)整體性能起著至關(guān)重要的作用[4-5].
基于將不同的存儲體系的優(yōu)勢結(jié)合的目的,本文提出一種使用多通道Cache作為L2 Cache的可擴(kuò)展可配置CMP體系A(chǔ)rchitecture Utilizing Multi-Channel Cache,AUMCC.根據(jù)所設(shè)計(jì)的多通道Cache的不同工作模式,AUMCC可以配置成私有L2 Cache結(jié)構(gòu)或共享L2 Cache結(jié)構(gòu).AUMCC的共享模式中,多通道Cache的多個(gè)獨(dú)立的訪問通道確保了核間共享數(shù)據(jù)的高效并行傳輸,提高了核間通信帶寬;同時(shí)多通道Cache的分離訪問模式簡化了對L1 Cache的一致性維護(hù)開銷.基于LEON3處理器的原型系統(tǒng)上性能模擬及測試表明,AUMCC體系能提供高效的并行通信,通信性能相對于基于總線共享Cache結(jié)構(gòu)約高出37%,系統(tǒng)的層次化特點(diǎn)使得系統(tǒng)具有良好的擴(kuò)展性.
AUMCC體系是一種采用多數(shù)據(jù)通道Cache作為L2 Cache的層次化可擴(kuò)展可配置CMP結(jié)構(gòu)[6](如圖1所示).系統(tǒng)中每個(gè)核擁有私有分離L1指令和數(shù)據(jù)Cache,L2 Cache可以根據(jù)多通道Cache的訪問模式動(dòng)態(tài)配置成私有或共享兩種方式,因而AUMCC體系相應(yīng)的可以配置成私有L2 Cache結(jié)構(gòu)或共享L2 Cache結(jié)構(gòu).每個(gè)核對應(yīng)一個(gè)通道,各個(gè)通道依次順序編址.內(nèi)核間可以通過底層的互聯(lián)網(wǎng)絡(luò)通信,也可以通過共享模式中的多通道L2 Cache交換數(shù)據(jù).共享模式的AUMCC中,內(nèi)核可以讀寫本地通道內(nèi)的存儲體,可以讀其他通道內(nèi)的存儲體,因而不存在多核之間的寫沖突問題,簡化了對L1 Cache的一致性維護(hù)開銷,提高了系統(tǒng)性能,同時(shí)Cache的多通道特性可以緩解傳統(tǒng)基于總線共享Cache結(jié)構(gòu)的總線帶寬的瓶頸問題,提高系統(tǒng)訪問帶寬和可擴(kuò)展性.
圖1 AUMCC總體架構(gòu)
圖1中該結(jié)構(gòu)具有明顯的層次性.各功能核及多通道L2 Cache可以看作系統(tǒng)的“超核”.按照構(gòu)建“超核”的方式,可以通過共享更高級的多通道Cache構(gòu)成更大規(guī)模的系統(tǒng),相似的構(gòu)建方式可以應(yīng)用于memory或輔助存儲器.
實(shí)驗(yàn)中,節(jié)點(diǎn)數(shù)2、3、4時(shí)的平均精度分別為98.82%、90.29%、76.72%,可見,隨著預(yù)測節(jié)點(diǎn)數(shù)增多,預(yù)測精度降低,預(yù)測結(jié)果的穩(wěn)定性也開始下滑.這是因?yàn)?當(dāng)預(yù)測的節(jié)點(diǎn)數(shù)增多時(shí),所有節(jié)點(diǎn)組成區(qū)域內(nèi)的鏈路組合數(shù)量呈指數(shù)倍增長,而組合數(shù)越多,使得預(yù)測結(jié)果的搜索空間越大,模型越難準(zhǔn)確地命中真實(shí)的情況,從而導(dǎo)致其預(yù)測穩(wěn)定性的下滑;同時(shí),當(dāng)數(shù)據(jù)集大小有限時(shí),對于每種組合下的輸入數(shù)據(jù)就會(huì)更少,即每種標(biāo)簽下對應(yīng)的訓(xùn)練樣本變少,使得各標(biāo)簽的訓(xùn)練過程不充分,模型出現(xiàn)欠擬合現(xiàn)象,從而導(dǎo)致其預(yù)測精度變低.
利用CACTI進(jìn)行的對比實(shí)驗(yàn)表明,4個(gè)1 KB大小的單端口SRAM在工作頻率和面積上都優(yōu)于一個(gè)4端口4 KB的全定制SRAM模塊,而且單端口SRAM可以由EDA工具快速編譯生成,便于設(shè)計(jì)實(shí)現(xiàn).因此本文采用存儲體多體交叉的方式實(shí)現(xiàn)本體系中的多通道Cache[7-9],其硬件組織結(jié)構(gòu)如圖2所示.
設(shè)計(jì)意圖:簡潔的問題拉近了教師與學(xué)生的距離,讓學(xué)生有親切感并迅速進(jìn)入問題探究.邏輯的學(xué)習(xí)應(yīng)該避免簡單機(jī)械的記憶和抽象的理解,而應(yīng)通過學(xué)生具體、生動(dòng)的舉例來體會(huì)邏輯用語.
本文在Xilinx的開發(fā)板DS-KIT-4VLX60 MB上利用Xilinx FPGA XC4VLX60-10 FF1148C建立了基于LEON3[11]處理器的AUMCC體系以及基于總線共享Cache結(jié)構(gòu)(SCA)的原形平臺.首先利用VHDL語言設(shè)計(jì)實(shí)現(xiàn)多通道Cache控制器,并將其嵌入編譯到Grlib庫的總線控制器中,實(shí)例化該庫中三端口SRAM生成多端口Cache存儲陣列.將LEON3軟核和VHDL設(shè)計(jì)文件一起利用make工具編譯生成庫IP核.之后由XST綜合工具生成的FPGA網(wǎng)表文件并由Xilinx公司的布局布線和下載工具生成相應(yīng)的 SOF文件,通過JTAG端口將SOF文件下載到FPGA上進(jìn)行硬件配置.使用LEON3的基于GCC的LECCS交叉編譯系統(tǒng)對基準(zhǔn)程序進(jìn)行編譯,得到二進(jìn)制代碼以后,通過串行口下載到FPGA開發(fā)板上執(zhí)行,系統(tǒng)配置參數(shù)如圖4所示.
圖2 多通道Cache組織結(jié)構(gòu)圖
本文為多通道Cache設(shè)計(jì)了“私有”和“共享”兩種工作模式.1)在私有模式下,任意核core-i只能讀/寫與其對應(yīng)通道內(nèi)的多個(gè)存儲體,不能訪問其他的通道;2)在共享模式下,每個(gè)核可以讀取其他通道的數(shù)據(jù),但不能向其中寫入數(shù)據(jù).任意核必須通過其對應(yīng)通道的存儲體與其他核交換共享數(shù)據(jù).
在AUMCC體系的私有工作模式下,每一個(gè)功能核只讀寫L2 Cache本地通道的數(shù)據(jù),因而不存在L1 Cache的一致性問題.在共享工作模式下,任意功能核只能讀取L2 Cache非本地通道的數(shù)據(jù),因而共享模式下L1 Cache的一致性協(xié)議可以采用簡化的MESI協(xié)議——M協(xié)議:為每一個(gè)L1 Cache塊設(shè)置一位“M”位,用來標(biāo)識在共享模式中讀取的L2非本地通道內(nèi)的數(shù)據(jù)是否被通道擁有核修改.當(dāng)任意功能核修改了L2 Cache本地通道內(nèi)的數(shù)據(jù)時(shí),會(huì)通過廣播方式通知其他所有核,其他核接收到通知后會(huì)根據(jù)Tag位和通道標(biāo)識(CID)將相應(yīng)的L1 Cache中的M狀態(tài)位置“1”.L1 Cache在進(jìn)行Tag比較的同時(shí)會(huì)查看狀態(tài)位是否為“1”,若狀態(tài)位為“1”,則即使Tag命中,也會(huì)發(fā)出L1 Cache“缺失”請求,進(jìn)而產(chǎn)生共享讀請求,訪問L2非本地通道.L2 Cache會(huì)根據(jù)核標(biāo)識(CID)將命中的數(shù)據(jù)送入相應(yīng)的CPU及L1 Cache中.依據(jù)這樣的L1 Cache一致性協(xié)議,AUMCC Cache體系結(jié)構(gòu)如圖3所示.
本文以基準(zhǔn)程序集 MediaBench[12]和 OOPACK[13]為基礎(chǔ),從不同的分類中選擇了7個(gè)典型的基準(zhǔn)測試程序basicmath,bitcount,blowfish,matrix,dijkstra,fft和stringsearch.測試結(jié)果給出了8核AUMCC體系及SCA體系中各基準(zhǔn)測試程序運(yùn)行時(shí)間(如圖5所示).相比SCA結(jié)構(gòu),AUM-CC體系中不存在L1 Cache的一致性維護(hù)開銷,而且L2 Cache的多通道支持高效的并行訪問,因而AUMCC體系中各種測試程序的運(yùn)行性能均有所提高,平均加速比可以達(dá)到37%.通信與交互比較多的應(yīng)用在兩種體系中的性能都最好,說明共享Cache結(jié)構(gòu)能滿足核間高速、低延遲的通信需求.對于通信和并行交互比較多的測試程序,AUMCC的性能加速比更高,分別達(dá)到 1.52,1.46,因而相對SCA體系,AUMCC體系可以提供更高效的并行通信性能,支持核間共享數(shù)據(jù)的高效并行傳輸.
我走到那十幾個(gè)孩子身邊,輕輕擁著第一個(gè)孩子,真誠地說:“寶貝們,都抬起頭來。你們都有資格擁有徐老師做的小紅花,因?yàn)槔蠋熡浀媚銈兯龅拿恳患屛腋袆?dòng)的事情。小輝主動(dòng)去到垃圾,回來時(shí)把垃圾筒洗得干干凈凈,弄得我們都不好意思往里面丟垃圾了,對嗎?”
因此,在寫入第1塊共享數(shù)據(jù)之后,讀寫操作就可以并行執(zhí)行.當(dāng)多方的計(jì)算負(fù)載均衡,速度匹配的時(shí)候,核之間可以進(jìn)行流水并行傳輸.同步等待延遲最小,傳輸效率達(dá)到最高.
可見,在私有模式下,所有的存儲體都不存在訪問競爭.在共享模式下,AUMCC不存在多核寫沖突的問題,簡化了維護(hù)L1 Cache數(shù)據(jù)一致性的硬件開銷,提高了核間共享數(shù)據(jù)的傳輸速度,有利于提高系統(tǒng)應(yīng)用的實(shí)時(shí)性.在共享模式下,通道內(nèi)存儲體的低地址交叉方式消除了核間的讀沖突.
圖3 AUMCC Cache體系結(jié)構(gòu)
AUMCC原型系統(tǒng)的構(gòu)建平臺及構(gòu)建方案設(shè)置為:系統(tǒng)環(huán)境為Windows with Cygwin,仿真器為Modelsim 6.1f,綜合工具為Xilinx ISE 8.1,開發(fā)板為Xilinx的DS-KIT-4VLX60 MB.
第三模塊是素質(zhì)拓展模塊,通過就業(yè)講座、社會(huì)實(shí)踐、各種比賽等形式,提高學(xué)生的綜合素質(zhì),更好地適應(yīng)用人單位的需求。
多通道Cache由交叉開關(guān)和單端口Cache以多體交叉方式構(gòu)成.該方案中,m個(gè)核通過一個(gè)m*n的交叉開關(guān)(crossbar)共享一個(gè)具有m個(gè)訪問通道、n個(gè)訪問端口的Cache存儲陣列.每個(gè)通道內(nèi)設(shè)置了p片單端口Cache.每一個(gè)Cache模塊擁有獨(dú)立的Cache控制器,可以提供獨(dú)立的訪問端口.通道間以高位地址交叉方式編碼形成多通道Cache地址,存儲器的多體交叉是提高其數(shù)據(jù)帶寬的有效方法[10].通道間高位交叉使得多通道Cache的相鄰地址分布在同一個(gè)Cache通道內(nèi),可以減少通道沖突.而通道內(nèi)各Cache則以低地址交叉方式形成通道地址,低地址交叉方式可以為訪問同一通道的各請求提供基于“生產(chǎn)者-消費(fèi)者”的流水并行訪問方式,降低共享沖突.
在任務(wù)流水的計(jì)算模式下,核間的共享數(shù)據(jù)相繼構(gòu)成“生產(chǎn)者-消費(fèi)者”關(guān)系:前一個(gè)核的計(jì)算輸出直接作為下一個(gè)核的計(jì)算輸入.為了有效支持這種傳輸模式,在AUMCC中采用了交叉訪問的機(jī)制:1)當(dāng)“生產(chǎn)者”core-i向其對應(yīng)通道內(nèi)的存儲體Bank-i寫入第1塊共享數(shù)據(jù)之后,釋放該存儲體,轉(zhuǎn)而向Bank-i+1寫入第2塊共享數(shù)據(jù);2)“消費(fèi)者”core-j(j≠i)啟動(dòng)讀訪問,從Bank-i讀出第1塊共享數(shù)據(jù);core-i釋放Bank-i+1,向Bank-i+2寫入第3塊數(shù)據(jù).依此類推,直至全部并行流水傳輸完成.
在消除了多通道Cache的訪問沖突之后,所有核可以同時(shí)訪問不同的存儲體.理論上看,AUMCC的訪問帶寬可以隨著核數(shù)量的增長而線性增長,具有良好的可擴(kuò)展性.為此,定義AUMCC體系的帶寬B為在某個(gè)單位時(shí)間內(nèi)所能完成的訪問請求的數(shù)目,模擬時(shí)以每拍實(shí)際完成的訪問請求的數(shù)目DPC(Demands per cycle)來衡量共享數(shù)據(jù)Cache的帶寬,N為核的數(shù)量.7個(gè)基準(zhǔn)程序的擴(kuò)展性模擬結(jié)果如圖6所示.
圖4 系統(tǒng)參數(shù)配置
圖5 兩種體系下基準(zhǔn)程序得運(yùn)行時(shí)間
路遙:鼓舞億萬農(nóng)村青年投身改革開放的優(yōu)秀作家。路遙,原名王衛(wèi)國,陜西清澗人,1949年12月出生,1992年11月去世,曾任中國作家協(xié)會(huì)陜西分會(huì)黨組成員、副主席,先后創(chuàng)作了《人生》《驚心動(dòng)魄的一幕》《在困難的日子里》等作品,榮獲“陜西省有突出貢獻(xiàn)專家”稱號,享受國務(wù)院政府特殊津貼。特別是他勇于改革文壇風(fēng)氣,創(chuàng)作了長篇小說《平凡的世界》,展現(xiàn)了我國城鄉(xiāng)社會(huì)生活和人民思想情感的巨大變化,頌揚(yáng)了拼搏奮進(jìn)、敢為人先的時(shí)代精神,激勵(lì)了一代又一代青年人向上向善、自強(qiáng)不息。
圖6 AUMCC系統(tǒng)有效訪問帶寬與核數(shù)量的關(guān)系
由實(shí)驗(yàn)結(jié)果可見,當(dāng)N<12時(shí),B快速增長,與N呈近似的線性關(guān)系.隨著N的進(jìn)一步增大,核與存儲體之間的控制邏輯開銷、互連總線和交叉開關(guān)端口數(shù)量以O(shè)(N2)數(shù)量級增長,AUMCC的工作頻率開始下降,訪問延遲越來越大,有效訪問帶寬增長十分緩慢.當(dāng)N<8時(shí),帶寬的平均增長率為30%;當(dāng)8<N<12時(shí),平均增長率為13%;當(dāng)N>12時(shí),帶寬增長率低于5%.因此,AUMCC適合于12核以內(nèi)的多核CMP.當(dāng)核數(shù)量超過8核以上時(shí),將以4核為一個(gè)超節(jié)點(diǎn)進(jìn)行結(jié)構(gòu)擴(kuò)展.超節(jié)點(diǎn)內(nèi)部采用AUMCC實(shí)現(xiàn)緊耦合的數(shù)據(jù)傳輸,超節(jié)點(diǎn)之間通過片上網(wǎng)絡(luò)或者其他共享存儲結(jié)構(gòu)進(jìn)行數(shù)據(jù)傳輸.
1)提出一種面向多核系統(tǒng)的使用多通道Cache作為L2 Cache的高效存儲架構(gòu)AUMCC.
黎永蘭母親李玉憤恨地說,自己的女兒還是一個(gè)副區(qū)長,但平日里穿的衣服都是淘寶上買的幾十塊的平價(jià)貨,遇到重大場合才舍得穿一件幾百塊錢的好衣服,生活品質(zhì)連剛畢業(yè)的大學(xué)生都不如。
2)針對性能需求設(shè)計(jì)了多通道Cache的體系,其兩種分離訪問模式不僅簡化了L1 Cache的一致性維護(hù)開銷,同時(shí)使得AUMCC可以分別配置成共享L2 Cache和私有L2 Cache兩種架構(gòu).
3)采用LEON3處理器基于FPGA構(gòu)建了AUMCC體系原型系統(tǒng)并進(jìn)行了系統(tǒng)性能仿真模擬,結(jié)果表明,AUMCC體系相對于傳統(tǒng)基于總線共享的存儲架構(gòu)而言有37%的性能提升.同時(shí)系統(tǒng)擴(kuò)展性試驗(yàn)表明,該體系具有明顯的層次化特點(diǎn),易于擴(kuò)展.
[1]OLUKOTUN K,HAMMOND L.QUEUE:The future of microprocessors[J].ACM,2005,3(7):26-29.
[2]Costin Iancu,Steven Hofmeyr.Runtime optimization of vector operations on large scale SMP clusters[C]//Proceedings of the 17th International Conference on Parallel Architectures and Compilation Techniques.New York,NY:ACM,2008:122-132.
[3]HOEFLER T,GOTTSCHLING P,LUMSDAINE A.Leveraging non-blocking collective communication in highperformance applications[C]//Proceedings of the Twentieth Annual Symposium on Parallelism in Algorithms and Architectures.New York,NY:ACM,2008:113-115.
[4]LEE Jaejin,SEO Sangmin,KIM Chihun,et al.COMIC:A coherent shared memory interface for cell be[C]//Proceedings of the 17th International Conference on Parallel Architectures and Compilation Techniques. New York,NY:ACM,2008:303-314.
[5]OZTURK O,KANDEMIR M,CHEN G,et al.Customized on-chip memories for embedded chip multiprocessors[C]//Proceedings of the 2005 Asia and South Pacific Design Automation Conference.New York,NY: ACM,2005:743-748.
[6]Haroon-Ur-Rashid,SHI Feng,JI Weixing,et al.Tri-BA:A novel scalable architecture for high performance parallel computing applications[C]//Proceedings of the 6th Conference on WSEAS International Conference on Applied Computer Science.Stevens Point,Wisconsin: World Scientific and Engineering Academy and Society (WSEAS),2007:396-401.
[7]AMD.AMD AthlonTM64處理器[EB/OL].[2005-03 -08].http://www.amd.com.cn/CHCN/Processors/ Product Information/0,30-118-9484,00.html.
[8] OZTURK O,KANDEMIR M.Data replication in banked DRAMs for reducing energy consumption[C]// Proceedings of the 7th International Symposium on Quality Electronic Design.Washington,DC:IEEE Computer Society,2006:551-556.
[9]劉彩霞,石峰,薛立誠,等.一種塊傳輸多端口存儲控制器:中國,200710098503.7[P/OL].[2007-10-09].http://search.sipo.gov.cn/sipo/zljs/hyjs-jieguo. jsp.
[10]HENNESSY J L,PATTERSON D A.計(jì)算機(jī)體系結(jié)構(gòu):量化研究方法[M].3版.北京:機(jī)械工業(yè)出版社,2002.
[11]Grlib-gpl-1.0.19-b3188.tar.gz[OL].[2008-09-30].http://www.gaisler.com/cms/index.php?option =com-content&task=view&id=156&Itemid=104.
[12]GUTHAUS M R,RINGENBERG J S,EMST D,et al. MiBench:A free,commercially representative embedded benchmark suite[C]//Proceedings of the 4thAnnual Workshop on Workload Characterization.Washington,DC:IEEE Computer Society,2001:3-14.
[13]Evaluating Performance and Power of Object-Oriented vs. Procedural Programming in Embedded Processors.[EB/ OL].[2008-9-19].http://www.auto.tuwien.ac. at/AE2002/Presentations/chatzigeorgion/ADA.ppt.