孫彩霞,隋兵才,王 蕾,王永文,黃立波,李文哲,王俊輝
(國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073)
?
亂序超標(biāo)量處理器核的性能分析與優(yōu)化*
孫彩霞,隋兵才,王 蕾,王永文,黃立波,李文哲,王俊輝
(國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073)
隨著處理器微體系結(jié)構(gòu)日益復(fù)雜,性能分析在處理器研制過(guò)程中的作用越來(lái)越重要。常用的性能分析方法是建立性能模型,該方法主要用于研制初期的設(shè)計(jì)空間探索,如果用于微體系結(jié)構(gòu)級(jí)的分析和優(yōu)化,速度和精度都會(huì)成為限制因素。因此,提出一種基于計(jì)數(shù)器的性能分析方法,該方法以項(xiàng)目組已經(jīng)完成的一款處理器核的硬件實(shí)現(xiàn)代碼為基礎(chǔ),在處理器核外部添加一個(gè)專用性能監(jiān)測(cè)單元,收集微體系結(jié)構(gòu)分析和優(yōu)化需要的各種事件,并通過(guò)結(jié)果分析器對(duì)統(tǒng)計(jì)的事件進(jìn)行分析,得到微體系結(jié)構(gòu)實(shí)現(xiàn)的性能受限因素。采用此方法,在現(xiàn)場(chǎng)可編程門(mén)陣列原型系統(tǒng)上對(duì)SPEC CPU2000測(cè)試程序運(yùn)行時(shí)的性能受限因素進(jìn)行分析,并根據(jù)分析結(jié)果采取相應(yīng)的優(yōu)化措施,優(yōu)化后的處理器核性能得到了明顯提升。
性能分析;計(jì)數(shù)器;處理器核;微體系結(jié)構(gòu)
為了追求更高的處理器性能,多發(fā)射、分支預(yù)測(cè)、寄存器重命名、亂序執(zhí)行、前瞻執(zhí)行等技術(shù)被廣泛采用,使得處理器微體系結(jié)構(gòu)變得日益復(fù)雜,僅僅依靠直覺(jué)或經(jīng)驗(yàn)設(shè)計(jì)處理器變得幾乎不可能。性能分析成為處理器研制過(guò)程中必不可少的一個(gè)環(huán)節(jié)。
性能分析可以分為硅前和硅后兩個(gè)階段。硅前分析主要進(jìn)行處理器設(shè)計(jì)空間探索,確定滿足期望目標(biāo)的處理器實(shí)現(xiàn),常用手段是使用性能模擬器。主流處理器生產(chǎn)廠商雖然沒(méi)有過(guò)多披露他們?cè)谛阅芊治龇矫娴膶?shí)現(xiàn)細(xì)節(jié),但是從公開(kāi)的資料中能夠了解到他們對(duì)性能分析的重視以及為此所做的努力。IBM公司開(kāi)發(fā)了一整套用于PowerPC處理器微體系結(jié)構(gòu)探索的環(huán)境和工具(Micro-architecture Environment Toolset,MET)[1],2004年Singhal等[2]介紹了Pentium4處理器性能分析過(guò)程中使用的蹤跡驅(qū)動(dòng)的性能模型,中科院計(jì)算機(jī)所在龍芯系列處理器研制過(guò)程中開(kāi)發(fā)了Sim-Godson性能模擬器[3]。不僅在工業(yè)界,還在學(xué)術(shù)界發(fā)布了很多好用的開(kāi)源性能模擬器,如SimpleScalar[4],GEMS[5],M5[6],Gem5[7]等。性能模擬器的抽象層次通常較高,但精度有限。此外為了加快模擬速度,模擬時(shí)通常會(huì)采用一些加速技術(shù),比如采樣[8],這些技術(shù)會(huì)帶來(lái)精度上的損失。硅后分析主要根據(jù)芯片實(shí)際表現(xiàn)來(lái)驗(yàn)證和優(yōu)化硅前分析方法或進(jìn)行編譯器的優(yōu)化[9-10],常用手段是使用硬件性能計(jì)數(shù)器?,F(xiàn)代處理器幾乎都在硬件上實(shí)現(xiàn)了性能監(jiān)測(cè)單元[11-12],以對(duì)一些事件進(jìn)行統(tǒng)計(jì),并通過(guò)性能計(jì)數(shù)器呈現(xiàn)出來(lái)。Intel VTune性能分析器就是利用這些計(jì)數(shù)器進(jìn)行應(yīng)用的性能優(yōu)化。但是受限于硬件實(shí)現(xiàn)代價(jià),處理器通常只設(shè)置少量性能計(jì)數(shù)器,所統(tǒng)計(jì)的事件也非常有限,不足以指導(dǎo)微體系結(jié)構(gòu)級(jí)的性能分析與優(yōu)化。
本文提出在硅前利用性能計(jì)數(shù)器分析處理器核在運(yùn)行應(yīng)用程序時(shí)的性能受限因素,指導(dǎo)處理器核微體系結(jié)構(gòu)的優(yōu)化。該方法以項(xiàng)目組已經(jīng)研制完成的一款處理器核(簡(jiǎn)稱XMC)的硬件實(shí)現(xiàn)代碼為基礎(chǔ),在處理器核外部添加一個(gè)專用性能監(jiān)測(cè)單元,收集微體系結(jié)構(gòu)分析需要的各種事件,并通過(guò)結(jié)果分析器對(duì)統(tǒng)計(jì)的事件進(jìn)行分析,得到微體系結(jié)構(gòu)實(shí)現(xiàn)的性能受限因素,以指導(dǎo)下一代處理器核的設(shè)計(jì)。采用此方法,我們?cè)贔PGA原型系統(tǒng)上對(duì)SPEC CPU2000測(cè)試程序運(yùn)行時(shí)的性能受限因素進(jìn)行了分析,并根據(jù)分析結(jié)果采取了相應(yīng)的優(yōu)化措施,優(yōu)化后的處理器核性能得到了明顯提升。
圖1給出了XMC處理器核的微體系結(jié)構(gòu)。每個(gè)周期,取指單元(Instruction Fetch Unit, IFU)取出128位、4條指令存入指令隊(duì)列(instruction queue);每個(gè)周期最多譯碼4條指令,譯碼后的指令進(jìn)入譯碼隊(duì)列(decode queue);根據(jù)寄存器映射表(rename table),每個(gè)周期最多對(duì)4條指令進(jìn)行重命名,重命名后的指令進(jìn)入分派隊(duì)列(dispatch queue)。如果沒(méi)有足夠的重命名寄存器,重命名過(guò)程會(huì)發(fā)生阻塞;每個(gè)周期最多分派4條指令,分派后的指令根據(jù)其類型進(jìn)入相應(yīng)的發(fā)射隊(duì)列,同時(shí)也會(huì)進(jìn)入重定序緩沖(ReOrder Buffer,ROB);指令發(fā)射是亂序進(jìn)行的,只要發(fā)射隊(duì)列中指令的操作數(shù)準(zhǔn)備就緒并且功能單元空閑,指令就可以發(fā)射到功能單元執(zhí)行;指令提交順序進(jìn)行,提交時(shí)會(huì)把重命名寄存器文件(Rename Register File, RRF)中的結(jié)果寫(xiě)回到體系結(jié)構(gòu)寄存器文件(Architectural Register File, ARF)。
圖1 XMC處理器核微體系結(jié)構(gòu)Fig.1 Micro-architecture of XMC
XMC使用全局歷史緩沖(Global History Buffer,GHB)預(yù)測(cè)分支方向,GHB中每一項(xiàng)都是一個(gè)2位飽和計(jì)數(shù)器,用于指明分支跳轉(zhuǎn)方向;過(guò)程返回指令由返回棧緩沖(Return Stack Buffer,RSB)提供跳轉(zhuǎn)地址,其他分支指令由分支目標(biāo)緩沖(Branch Target Buffer,BTB)提供跳轉(zhuǎn)地址。
XMC在進(jìn)行寄存器重命名時(shí),整數(shù)寄存器和浮點(diǎn)寄存器共享同一個(gè)重命名寄存器文件。重命名寄存器文件共有64項(xiàng),每項(xiàng)64位。
發(fā)射隊(duì)列采用分布式結(jié)構(gòu),即每種功能部件擁有獨(dú)立的發(fā)射隊(duì)列。XMC處理器核中共有3種發(fā)射隊(duì)列:整數(shù)發(fā)射隊(duì)列(int issueQ),浮點(diǎn)發(fā)射隊(duì)列(FP issueQ)和訪存發(fā)射隊(duì)列(LS issueQ)。每種發(fā)射隊(duì)列負(fù)責(zé)向相應(yīng)的功能部件提供指令,其中分支指令在整數(shù)部件執(zhí)行。
受限于硬件實(shí)現(xiàn)代價(jià),處理器通常只實(shí)現(xiàn)少量硬件性能計(jì)數(shù)器,所統(tǒng)計(jì)的事件也非常有限。為了利用性能計(jì)數(shù)器提供的信息進(jìn)行微體系結(jié)構(gòu)層面的性能分析和優(yōu)化,需要進(jìn)一步統(tǒng)計(jì)微體系結(jié)構(gòu)實(shí)現(xiàn)有關(guān)的參數(shù)。
圖2給出了基于計(jì)數(shù)器的性能分析方法的示意圖。XMC的性能監(jiān)測(cè)單元實(shí)現(xiàn)了多個(gè)性能計(jì)數(shù)器,可以分時(shí)統(tǒng)計(jì)多個(gè)事件,通過(guò)統(tǒng)計(jì)事件可以計(jì)算出每拍完成的指令數(shù)(Instructions Per Cycle,IPC)、分支預(yù)測(cè)失誤率、核內(nèi)各級(jí)Cache失效率和TLB失效率等,但是這些事件還不足以分析微體系結(jié)構(gòu)的性能受限因素。為此,在XMC處理器核外實(shí)現(xiàn)了一個(gè)專用性能監(jiān)測(cè)單元,進(jìn)行微體系結(jié)構(gòu)優(yōu)化需要的任何事件(處理器核內(nèi)部硬件信號(hào))都可以送到該單元進(jìn)行統(tǒng)計(jì)。數(shù)據(jù)收集單元收集性能監(jiān)測(cè)單元統(tǒng)計(jì)的各類事件,數(shù)據(jù)收集可以在整個(gè)性能統(tǒng)計(jì)過(guò)程結(jié)束后進(jìn)行,也可以按照一定時(shí)間間隔定期進(jìn)行。收集到的數(shù)據(jù)送給結(jié)果分析器進(jìn)行分析,尋找處理器核運(yùn)行應(yīng)用程序時(shí)的性能受限因素。
圖2 使用計(jì)數(shù)器的性能分析方法示意圖Fig.2 Performance analysis method using counters
專用性能監(jiān)測(cè)單元和數(shù)據(jù)收集單元都用可綜合代碼進(jìn)行實(shí)現(xiàn),同XMC的寄存器傳輸級(jí)(Register Transfer Level,RTL)代碼構(gòu)成了硬件實(shí)現(xiàn)部分,可運(yùn)行在NC-Verilog/VCS模擬器上,也可運(yùn)行在硬件仿真器或現(xiàn)場(chǎng)可編程門(mén)陣列(Field-Programmable Gate Array,F(xiàn)PGA)原型系統(tǒng)上。本文面向SPEC CPU2000測(cè)試程序進(jìn)行分析,考慮到模擬速度,選擇FPGA原型系統(tǒng)進(jìn)行模擬并收集數(shù)據(jù)[13],收集的數(shù)據(jù)通過(guò)通用異步收發(fā)器(Universal Asynchronous Receiver Transmitter,UART)串口輸出送給性能分析器。
在一個(gè)應(yīng)用程序運(yùn)行結(jié)束后,性能監(jiān)測(cè)單元中計(jì)數(shù)器的值表示這個(gè)應(yīng)用程序執(zhí)行期間計(jì)數(shù)器統(tǒng)計(jì)的事件發(fā)生的次數(shù)。如果要繼續(xù)統(tǒng)計(jì)另一個(gè)應(yīng)用程序運(yùn)行時(shí)相應(yīng)事件發(fā)生的次數(shù),那么計(jì)數(shù)器首先應(yīng)該被清0。為了能夠通過(guò)軟件對(duì)專用性能監(jiān)測(cè)單元中的性能計(jì)數(shù)器進(jìn)行清0操作,借用了XMC處理器核的性能監(jiān)測(cè)單元中第0號(hào)性能計(jì)數(shù)器的有關(guān)控制信號(hào),如圖3所示。對(duì)性能監(jiān)測(cè)單元中第0號(hào)性能計(jì)數(shù)器的清0操作可以同時(shí)將專用性能監(jiān)測(cè)單元中的所有性能計(jì)數(shù)器清0。
圖3 專用性能計(jì)數(shù)器的控制Fig.3 Controls for specialized performance counters
XMC的機(jī)器寬度為4,理想的IPC可以達(dá)到4。但是在FPGA原型系統(tǒng)上得到的SPEC CPU2000測(cè)試程序的IPC平均只有1.23。為了獲得微體系結(jié)構(gòu)實(shí)現(xiàn)上的性能受限因素,從重命名和分派兩處作為切入點(diǎn)進(jìn)行分析。圖4給出了SPEC CPU2000測(cè)試程序平均每拍重命名的指令數(shù)(renaming IPC)和平均每拍分派的指令數(shù)(dispatching IPC)。
圖4 SPEC CPU2000平均每拍重命名和分派的指令數(shù)Fig.4 Renaming IPC and dispatching IPC of SPEC CPU2000
重命名寬度和分派寬度都是4,但是實(shí)際上平均每拍重命名和分派的指令數(shù)分別為1.38和1.35,最大時(shí)也沒(méi)有超過(guò)2,是什么導(dǎo)致指令的重命名和分派不能進(jìn)行呢?
首先分析重命名阻塞原因。為此,統(tǒng)計(jì)了如下事件:譯碼隊(duì)列無(wú)指令,重命名寄存器缺乏和分派隊(duì)列無(wú)空閑項(xiàng)。圖5給出了SPEC CPU2000測(cè)試程序重命名阻塞的原因分布。
圖5 重命名阻塞的原因分布Fig.5 Reasons for renaming stalls
可以看出,對(duì)于浮點(diǎn)測(cè)試程序(圖5中左邊8個(gè)程序),重命名寄存器缺乏和分派隊(duì)列沒(méi)有空閑項(xiàng)是主要原因,譯碼隊(duì)列無(wú)指令占的比例很小;而對(duì)于整數(shù)測(cè)試程序(圖5中右邊8個(gè)程序),重命名阻塞原因則有所不同,重命名寄存器相對(duì)并不是受限因素,而譯碼隊(duì)列沒(méi)有指令占的比例較大,分派隊(duì)列沒(méi)有空閑項(xiàng)同樣也是主要原因之一。
譯碼隊(duì)列沒(méi)有指令是因?yàn)榱魉€前端指令供應(yīng)不足。為此,統(tǒng)計(jì)了對(duì)取指有影響的一級(jí)指令Cache失效率、分支比例(可預(yù)測(cè)分支指令在所有指令中所占的比例)以及分支誤預(yù)測(cè)率,如圖6、圖7、圖8所示。
圖6 一級(jí)指令Cache失效率Fig.6 L1 ICache miss rate
圖7 分支比例Fig.7 Proportion of predictable branches to all instructions
圖8 分支誤預(yù)測(cè)率Fig.8 Branch misprediction rate
可以看出,相對(duì)于浮點(diǎn)測(cè)試程序,整數(shù)測(cè)試程序在這三個(gè)指標(biāo)上都相對(duì)較大,尤其是分支比例和分支誤預(yù)測(cè)率方面,整數(shù)測(cè)試程序要高出很多。改善分支預(yù)測(cè)結(jié)構(gòu)(比如提高分支預(yù)測(cè)準(zhǔn)確率,降低分支預(yù)測(cè)延遲)對(duì)整數(shù)測(cè)試程序性能的提高會(huì)更有幫助。一級(jí)指令Cache失效率非常低,最大時(shí)也不到1%,優(yōu)化空間不大。
分派隊(duì)列沒(méi)有空閑項(xiàng)接收重命名的指令是因?yàn)榉峙砂l(fā)生了阻塞。從第一章描述可知,分派隊(duì)列沒(méi)有指令、發(fā)射隊(duì)列沒(méi)有空閑項(xiàng)、ROB沒(méi)有空閑項(xiàng)都會(huì)導(dǎo)致分派阻塞。為此,對(duì)這些事件進(jìn)行了統(tǒng)計(jì)。圖9給出了分派阻塞的原因分布。
圖9 分派阻塞的原因分布Fig.9 Reasons for dispatching stalls
分派隊(duì)列沒(méi)有指令是因?yàn)橹孛枞麑?dǎo)致的,前面已經(jīng)分析了原因。當(dāng)有指令可以分派時(shí),ROB沒(méi)有空閑項(xiàng)對(duì)個(gè)別程序比較明顯,比如vortex,但總的來(lái)說(shuō)并不突出,而發(fā)射隊(duì)列沒(méi)有空閑項(xiàng)成了主要原因。在XMC處理核的設(shè)計(jì)中,發(fā)射隊(duì)列采用的是分布式結(jié)構(gòu),這樣可以降低設(shè)計(jì)的復(fù)雜度,但是從利用率的角度考慮并不好。
通過(guò)以上分析,發(fā)現(xiàn)SPEC CPU2000測(cè)試程序在XMC處理器核上運(yùn)行時(shí)的性能受限因素如下:
1)對(duì)于浮點(diǎn)測(cè)試程序,重命名寄存器個(gè)數(shù)不足導(dǎo)致重命名阻塞嚴(yán)重;
2)優(yōu)化分支預(yù)測(cè)結(jié)構(gòu)對(duì)整數(shù)測(cè)試程序的性能提升更有幫助;
3)無(wú)論整數(shù)還是浮點(diǎn)測(cè)試程序,發(fā)射隊(duì)列項(xiàng)數(shù)不足導(dǎo)致分派阻塞嚴(yán)重。
依據(jù)上述分析結(jié)果,從以下幾個(gè)方面優(yōu)化XMC處理器核的微體系結(jié)構(gòu)。
分支預(yù)測(cè)結(jié)構(gòu)方面,使用更加先進(jìn)的分支預(yù)測(cè)算法來(lái)提高預(yù)測(cè)精度。當(dāng)前比較流行并被廣泛采用的預(yù)測(cè)算法有Tournament[11, 14]和TAGE[15-16],本文選擇了TAGE預(yù)測(cè)算法進(jìn)行分支方向預(yù)測(cè)。首先在軟件模擬器上對(duì)TAGE算法和XMC處理器核之前采用的分支預(yù)測(cè)算法進(jìn)行了比較,TAGE算法確實(shí)具有更高的預(yù)測(cè)精度,提高了近2%。TAGE算法的RTL實(shí)現(xiàn)工作正在進(jìn)行中。
針對(duì)重命名寄存器個(gè)數(shù)不足問(wèn)題,修改RTL代碼,并通過(guò)參數(shù)化使得重命名寄存器的個(gè)數(shù)可以在64,96和128之間進(jìn)行選擇,以從性能和實(shí)現(xiàn)代價(jià)方面綜合評(píng)價(jià)。
圖10給出了128個(gè)重命名寄存器下,SPEC CPU2000測(cè)試程序相對(duì)于64個(gè)重命名寄存器時(shí)的性能提升百分比。
圖10 128個(gè)重命名寄存器和64個(gè)重命名寄存器的性能比較Fig.10 Performance with 128 rename registers compared to that with 64 rename registers
如同第3節(jié)分析的一樣,重命名寄存器個(gè)數(shù)不足導(dǎo)致浮點(diǎn)測(cè)試程序的重命名阻塞嚴(yán)重,增加重命名寄存器有效提高了浮點(diǎn)測(cè)試程序的性能,平均達(dá)到了5.32%,最高達(dá)到了13.21%。對(duì)于整數(shù)測(cè)試程序,性能提升并不顯著,平均只有0.72%。
此外,對(duì)96和128個(gè)重命名寄存器下SPEC CPU2000的性能進(jìn)行了對(duì)比,圖11給出了96個(gè)重命名寄存器下,SPEC CPU2000測(cè)試程序相對(duì)于128個(gè)重命名寄存器時(shí)的性能降低百分比。對(duì)于整數(shù)測(cè)試程序,影響非常小,平均降低了0.09%。對(duì)于浮點(diǎn)測(cè)試程序,重命名寄存器個(gè)數(shù)從128減少到96,平均性能不但沒(méi)有降低,反而增加了0.33%,這主要是由于apsi程序的性能不降反增導(dǎo)致的*重命名寄存器個(gè)數(shù)增加是有可能導(dǎo)致性能不增反降。這是因?yàn)椋辉搱?zhí)行的指令(異?;蚍种д`預(yù)測(cè)被清除的指令)可能因?yàn)橹孛拇嫫鱾€(gè)數(shù)的增加而有機(jī)會(huì)進(jìn)入流水線,增加了清除代價(jià)。。如果去除apsi的結(jié)果,浮點(diǎn)測(cè)試程序的性能平均降低了1.02%,降低最多的程序是wupwise,達(dá)到了3.39%。
圖11 96個(gè)重命名寄存器和128個(gè)重命名寄存器的性能比較Fig.11 Performance with 96 rename registers compared to that with 128 rename registers
96個(gè)重命名寄存器相比128個(gè)重命名寄存器,性能雖然會(huì)有所下降,但是實(shí)現(xiàn)代價(jià)也會(huì)相對(duì)變小。對(duì)XMC處理器核進(jìn)行了綜合,相對(duì)于64個(gè)重命名寄存器,96個(gè)重命名寄存器時(shí)的XMC處理器核的面積增加了4.70%,128個(gè)重命名寄存器時(shí)的XMC處理器核的面積增加了7.84%??梢?jiàn),實(shí)現(xiàn)96個(gè)重命名寄存器時(shí),XMC處理器核的性能代價(jià)比較高。
最后,針對(duì)發(fā)射隊(duì)列項(xiàng)數(shù)不足問(wèn)題,分別增加了整數(shù)發(fā)射隊(duì)列和浮點(diǎn)發(fā)射隊(duì)列的項(xiàng)數(shù),但是發(fā)現(xiàn)單純?cè)黾影l(fā)射隊(duì)列項(xiàng)數(shù)并不能帶來(lái)明顯的性能提升。這暴露了目前基于計(jì)數(shù)器分析微體系結(jié)構(gòu)級(jí)性能受限因素方法的不足,即提取的事件相對(duì)比較獨(dú)立,未充分將處理器核內(nèi)各流水線級(jí)的事件有效關(guān)聯(lián)起來(lái),還有待進(jìn)一步完善。
處理器微體系結(jié)構(gòu)日益復(fù)雜,性能分析成為處理器研制過(guò)程中的重要環(huán)節(jié)。本文提出了一種基于計(jì)數(shù)器的性能分析方法,該方法在已有的處理器核硬件實(shí)現(xiàn)代碼外部添加一個(gè)專用的性能監(jiān)測(cè)單元,用于收集微體系結(jié)構(gòu)分析需要的各種事件,并把統(tǒng)計(jì)的事件送給結(jié)果分析器進(jìn)行分析,獲得微體系結(jié)構(gòu)實(shí)現(xiàn)的性能受限因素。
以處理器核XMC為基礎(chǔ),面向SPEC CPU2000測(cè)試程序,基于FPGA原型系統(tǒng)仿真平臺(tái),以流水線中重命名和分派兩處作為切入點(diǎn),采用基于計(jì)數(shù)器的性能分析方法尋找重命名阻塞和分派阻塞的原因,可以發(fā)現(xiàn):
1)對(duì)于浮點(diǎn)測(cè)試程序,重命名寄存器個(gè)數(shù)不足導(dǎo)致重命名阻塞嚴(yán)重;
2)優(yōu)化分支預(yù)測(cè)結(jié)構(gòu)對(duì)整數(shù)測(cè)試程序的性能提升更有幫助;
3)無(wú)論整數(shù)還是浮點(diǎn)測(cè)試程序,發(fā)射隊(duì)列項(xiàng)數(shù)不足導(dǎo)致分派阻塞嚴(yán)重。
根據(jù)以上發(fā)現(xiàn),采取了相應(yīng)的優(yōu)化措施。當(dāng)把重命名寄存器個(gè)數(shù)從64個(gè)增加到128個(gè)時(shí),浮點(diǎn)測(cè)試程序的性能平均提高了5.32%,最高達(dá)到了13.21%。但是增加發(fā)射隊(duì)列項(xiàng)數(shù)并沒(méi)有帶來(lái)預(yù)期的性能改善,這暴露了目前的方法還存在不足,需要進(jìn)一步完善。
References)
[1] Moudgill M, Wellman J D, Moreno J H. Environment for PowerPC micro-architecture exploration[J]. IEEE Micro, 1999, 19(3): 15-25.
[2] Singhal R, Venkatraman K S, Cohn E R, et al. Performance analysis and validation of the Intel Pentium 4 processor on 90nm technology[J]. Intel Technology Journal, 2004, 8(1): 39.[3] 張福新, 章隆兵, 胡偉武. 基于SimpleScalar的龍芯CPU模擬器Sim-Godson[J]. 計(jì)算機(jī)學(xué)報(bào), 2007, 30(1): 68-73.
ZHANG Fuxin, ZHANG Longbing, HU Weiwu. Sim-Godson: a godson processor simulator based on SimpleScalar[J]. Chinese Journal of Computers, 2007, 30(1): 68-73.(in Chinese)
[4] Austin T, Larson E, Ernst D.SimpleScalar: an infrastructure for computer system modeling[J]. Computer, 2002, 35(2): 59-67.
[5] Martin M M K, Sorin D J, Beckmann B M, et al. Multifacet′s general execution-driven multiprocessor simulator (GEMS) toolset[J]. ACM SIGARCH Computer Architecture News, 2005, 33(4): 92-99.
[6] Binkert N L, Dreslinski R G, Hsu L R, et al. The M5 simulator: modeling networked systems[J]. IEEE Micro, 2006, 26(4): 52-60.
[7] Binkert N L,Beckmann B,Black G, et al. The GEM5 simulator[J]. ACM SIGARCH Computer Architecture News, 2011, 39(2): 1-7.
[8] Wunderlich R E, Wenisch T F, Falsafi B, et al. SMARTS: accelerating micro-architecture simulation via rigorous statistical sampling[J]. Computer Architecture NEWS, 2003, 31(2): 84-95.
[9] 朱艷玲, 朱怡安, 王云嵐. 基于硬件性能計(jì)數(shù)器的編譯器性能測(cè)試與分析[J]. 微電子學(xué)與計(jì)算機(jī), 2008, 25(3): 192-196.
ZHU Yanling, ZHU Yian, WANG Yunlan. Compiler performance test and analysis based on hardware performance counters[J]. Microelectronics & Computer, 2008, 25(3): 192-196.(in Chinese)
[10] 車永剛, 王正華, 李曉梅. 一個(gè)基于硬件計(jì)數(shù)器的程序性能測(cè)試與分析工具[J]. 計(jì)算機(jī)科學(xué), 2004, 31(1): 170-174.
CHE Yonggang, WANG Zhenghua, LI Xiaomei. A hardware counter based tool for application′s performance measurement and analysis[J]. Computer Science, 2004, 31(1): 170-174.(in Chinese)
[11] Kalla R, Sinharoy B, Starke W J, et al.Power7: IBM's next-generation server processor[J]. IEEE Micro, 2010, 30(2): 7-15.
[12] Sprunt B. Pentium 4 performance-monitoring features[J]. IEEE Micro, 2002, 22(4): 72-82.
[13] Huang L B, Wang Y W, Dou Q, et al. Fast FPGA system for micro-architecture optimization on synthesizable modern processor design[C]//Proceedings of 25th International Conference on Field-programmable Logic and Applications (FPL), 2015.
[14] Evers M, Chang P Y, Patt Y N. Using hybrid branch predictors to improve branch prediction accuracy in the presence of context switches[C]//Proceedings of the 23rd Annual International Symposium on Computer Architecture, 1996.
[15] Seznec A. A new case for the tage branch predictor[C]//Proceedings of the 44th Annual IEEE/ACM International Symposium on Micro-architecture, 2011.
[16] Seznec A. TAGE-SC-L branch predictors[C]//Proceedings of the 4th Championship Branch Prediction, 2014.
Counters based performance analysis and optimization of an out-of-order superscalar processor core
SUN Caixia, SUI Bingcai, WANG Lei, WANG Yongwen, HUANG Libo, LI Wenzhe, WANG Junhui
(College of Computer, National University of Defense Technology, Changsha 410073, China)
With the ever-increasing design complexity in the processor micro-architecture, performance analysis becomes more and more important in the research and design of processors. Performance models are used widely in the performance analysis, which are more suitable for the design space exploration in the early stage. When used in micro-architecture optimizations, the accuracy and the speed of performance models are the limiting factors. Therefore, a performance analysis method based on counters was proposed. In this method, the RTL register transfer level code of a processor core was used as a baseline, and a specialized performance monitor unit was added to collect the events needed by the micro-architecture analysis and optimization. Then the collected events were sent to a result analyzer, where the factors affecting the performance were obtained. By a dopting the method, we analyzed what affects the performance in running SPEC CPU2000 benchmarks on FPGA(field-programmable gate array) prototyping, and optimized the micro-architecture of processor core according to the analysis results. The performance of the optimized processor core is improved obviously.
performance analysis; counters; processor core; micro-architecture
10.11887/j.cn.201605003
http://journal.nudt.edu.cn
2015-11-25
國(guó)家自然科學(xué)基金資助項(xiàng)目(61103011,61170045,61402501)
孫彩霞(1979—),女,黑龍江綏化人,副研究員,博士,碩士生導(dǎo)師,E-mail:cxsun@nudt.edu.cn
TP302.1
A
1001-2486(2016)05-014-06