- 相關(guān)推薦
DLX處理器流水線(xiàn)性能優(yōu)化(一)
摘要 :DLX虛擬微處理機提供了一個(gè)基于PC機的研究平臺,研究者可以在PC機上模擬新的處理機技術(shù)。本文先介紹DLX微處理機針對流水線(xiàn)處理的結構調整和流水線(xiàn)的一些問(wèn)題,并且結合一個(gè)實(shí)例,研究了流水線(xiàn)性能的優(yōu)化。
關(guān)鍵詞 DLX微處理機;流水線(xiàn);計算機系統結構
1 導言
DLX 是一種虛擬的32位微處理機系統結構,Patterson 和 Anderson在其“Computer Architecture——A Quantitative Approach ”一書(shū)中首次提出的。它不僅體現了當今多種機器系統結構的共同特點(diǎn) ,還將體現未來(lái)一些機器的指令集結構的特點(diǎn)。這些機器的指令集結構設計思想都和DLX指令集結構的設計思想十分相似,它們都強調:具有一個(gè)簡(jiǎn)單的Load/Store指令集;注重指令流水效率;簡(jiǎn)化指令的譯碼;高效支持編譯器。WinDLX是一個(gè)基于 Windows的DLX模擬器,用于模擬DLX流水線(xiàn)的工作過(guò)程?梢造`活、方便地設置參數、控制執行、統計數據等。WinDLX提供了直觀(guān)的窗口顯示。本文先介紹DLX微處理機針對流水線(xiàn)處理的結構調整,以及流水線(xiàn)所面臨的一些問(wèn)題,然后結合實(shí)例對DLX流水線(xiàn)性能的優(yōu)化作簡(jiǎn)單的分析,Win DLX模擬器能夠演示DLX流水線(xiàn)是如何工作的。
2 基于流水線(xiàn)操作原理
2.1 DLX處理機流水線(xiàn)概念
DLX的數據通路的實(shí)現,它允許在4或5個(gè)時(shí)鐘周期內完成一條指令。雖然這些功能部件出現在它們被讀出的周期。但是PC在存儲器訪(fǎng)問(wèn)周期(同樣在取值周期)被寫(xiě)入,而存儲器在回寫(xiě)周期被寫(xiě)入。在這兩種情況下,在后面節拍的寫(xiě)入可以由回送數值給PC或者寄存器的開(kāi)關(guān)輸出(在存儲器訪(fǎng)問(wèn)和回寫(xiě)周期)來(lái)指明。這些回流的信號太大地增加了流水線(xiàn)地復雜度。圖一給出了一條指令如何沿著(zhù)數據通路進(jìn)行流動(dòng)。
在每一個(gè)時(shí)鐘周期啟動(dòng)一條新的指令便可以使圖一所示的數據通路流起水來(lái),前面的每一個(gè)時(shí)鐘周期便成了一個(gè)流水節拍:流水線(xiàn)的一個(gè)周期。這樣便有圖二所示的指令執行模式,它使用流水線(xiàn)結構的典型畫(huà)法。其中,每一條指令經(jīng)過(guò)五個(gè)時(shí)鐘周期執行完成,在每個(gè)時(shí)鐘周期內,硬件將初始化一條新的指令并執行五個(gè)不同指令的某個(gè)部分。在一個(gè)簡(jiǎn)單的流水線(xiàn)中,在每一個(gè)時(shí)鐘周期都有一條新的指令取進(jìn)來(lái)并開(kāi)始長(cháng)達五個(gè)時(shí)鐘周期的執行。 若在每一個(gè)時(shí)鐘周期都啟動(dòng)一條新的指令,那
圖1 DLX流水線(xiàn)數據通路的實(shí)現
么性能將是不進(jìn)行流水線(xiàn)的及其的五倍。流水線(xiàn)每個(gè)節拍的名稱(chēng) : IF=取指令,ID=分析指令,EX=執行指令,MEM=存儲器訪(fǎng)問(wèn),WB=寫(xiě)回。
指令號 1 2 3 4 5 6 7 8 9
指令i IF ID EX MEM WB
指令i+1 IF ID EX MEM WB
指令i+2 IF ID EX MEM WB
指令i+3 IF ID EX MEM WB
指令i+4 IF ID EX MEM WB
圖2 簡(jiǎn)單的DLX流水線(xiàn)
2.2 DLX流水引出的問(wèn)題
(1) 確定機器在每一個(gè)時(shí)鐘周期都進(jìn)行什么樣的動(dòng)作,并保證在同一個(gè)時(shí)鐘周期沒(méi)有兩條指令使用相同的數據通路資源。比如一個(gè)ALU不能同時(shí)用于計算有效地址和劍法運算。因此,必須得保證流水線(xiàn)中指令得重疊不會(huì )導致這樣的沖突。在簡(jiǎn)化的DLX數據通路,主要的功能部件都在不同的時(shí)鐘周期使用,所以多條指令的重疊執行相對來(lái)說(shuō)幾乎所沒(méi)有引入沖突。
(2) 圖一的基本數據通路已經(jīng)使用了分開(kāi)的指令和數據存儲器,其典型的實(shí)現方式是使用分開(kāi)的指令和數據Cache。使用獨立的Cache避免了對單一存儲器進(jìn)行取指和訪(fǎng)問(wèn)數據操作之間的沖突。如果流水線(xiàn)機的時(shí)鐘周期和未流水的機器相同時(shí),存儲系統的帶寬需要時(shí)原先的五倍,這便是取得高性能的代價(jià)。
(3) 簡(jiǎn)單地DLX數據通路中沒(méi)有涉及到PC,為了在每個(gè)時(shí)鐘周期都啟動(dòng)一條新的指令,需要對PC進(jìn)行自加運算并存回,這項工作必須在IF節拍完成,為下一條指令做準備。如果考慮要分支的影響,問(wèn)題就這樣產(chǎn)生了,因為它也要改變PC,但是在MEM節拍進(jìn)行。在我們的多周期的非流水線(xiàn)結構中,這不成為一個(gè)問(wèn)題,因為只在MEM節拍寫(xiě)一次PC。在這里我們將只在IF節拍對PC進(jìn)行寫(xiě)操作,寫(xiě)入自增后的PC或者前面分支的目標地址。
DLX流水線(xiàn)的實(shí)例性能分析
為了具體了解DLX虛擬處理機如何解決流水線(xiàn)的問(wèn)題,以一個(gè)流水線(xiàn)的實(shí)例進(jìn)行測試。優(yōu)化后進(jìn)行性能分析。這里使用 WinDLX 匯編器中的匯編文件 fact.s ,這個(gè)程序計算數(通過(guò)鍵盤(pán)輸入)的階乘。這需要用到文件input.s,它用于接收從鍵盤(pán)輸入的數。加載了這兩個(gè)文件后可以看見(jiàn)一條DLX指令的執行需要5個(gè)周期:IF(取指周期)、ID(分析指令/寄存器周期)、EX(執行周期)、MEM(存儲器訪(fǎng)問(wèn)/分支完成周期)、WB(回寫(xiě)周期)。其中執行段分為4個(gè)單元,分別是intEX(整數操作)、addEX(浮點(diǎn)加減)、fmulEX(浮點(diǎn)乘法)、fdivEX(浮點(diǎn)除法),如圖三。
圖3 DLX的指令執行流程
指令流調整技術(shù)和數據重定向技術(shù),這兩種技術(shù)各有各的有優(yōu)缺點(diǎn),如何使CPU的性能達到最好,同時(shí)盡可能減少硬件和軟件的投入。實(shí)驗表明,同時(shí)應用指令流調整技術(shù)和數據重定向技術(shù),可以使CPU的優(yōu)化達到最大化。下面通過(guò)實(shí)例的優(yōu)化來(lái)分析證明這個(gè)結論。
DLX的代碼分析
上面提到的加載了fact.s和input.s這兩個(gè)文件,這里先分析一下fact.sborted”。其原因是:第二條命令(jal)是無(wú)條件分支指令, 但只有在第三個(gè)時(shí)鐘周期, jal 指令被譯碼后才知道,這時(shí),下一條命令movi2fp已經(jīng)取出,但需執行的下一條命令在另一個(gè)地址處,因而,movi2fp的執行應被取消,在流水線(xiàn)中留下氣泡。
點(diǎn)擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時(shí)鐘周期14。trap 0x5行如圖五所示。其原因是,無(wú)論何時(shí)遇到一條trap指令時(shí),DLX 處理器中的流水線(xiàn)都將被清空。
圖5 優(yōu)化前時(shí)鐘周期14的時(shí)空圖
圖6 未經(jīng)優(yōu)化的時(shí)空圖
由于沒(méi)有優(yōu)化代碼,出現了很多“寫(xiě)寫(xiě)相關(guān)”“讀寫(xiě)相關(guān)”“功能部件沖突”等數據相關(guān),然后看一下Statistics窗口中的各種統計數字:總的周期數(215) 和暫停數(17 RAW, 25 Control, 12 Trap; 54 Total),然后關(guān)閉窗口。點(diǎn)擊主窗口中Configuration中的Enable Forwarding使重定向技術(shù)無(wú)效(去掉小鉤),其中PC被復位為0x00000100。激活Breakpoints子窗口,點(diǎn)擊主窗口中Breakpoints菜單,刪除所有斷點(diǎn)。然后按F5鍵,鍵入20后,按Enter鍵,程序將一直模擬運行到結束。重新查看Statistics子窗口,你會(huì )看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數增加到236。如圖七所示是優(yōu)化后的時(shí)空圖。
圖7 優(yōu)化后的時(shí)空圖
再一次查看Statistics子窗口,可以看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數增加到236。
3.2 基于流水線(xiàn)的性能分析
圖8 fact.s程序段指令優(yōu)化前后的部分統計
加速比 s==236 / 215 = 1.098
可以分析得出即DLXforwarded比 DLXnot forwarded 快9.8%。
4 總結
流水線(xiàn)過(guò)去是,而且將來(lái)還是提高計算機性能的最有效技術(shù)之一。DLX虛擬處理器為設計和研究流水線(xiàn)結構提供方便直觀(guān)的平臺 ,如跟蹤程序運行的時(shí)空圖,在時(shí)空圖上可直接看到數據旁路(用箭頭表示)或延時(shí)的情況 ,程序運行結果的統計數據較全面地報告了流水線(xiàn)運行狀態(tài)等。本文探討了DLX流水線(xiàn)使用的主要技術(shù) ,利用DLX處理機,采用對流水線(xiàn)實(shí)例的優(yōu)化處理分析,驗證了指令流調整技術(shù)和數據重定向技術(shù)對DLX指令流水線(xiàn)的優(yōu)化作用,得出了一個(gè)結論,在正常的情況下同時(shí)使用兩種優(yōu)化技術(shù),可以使代碼的執行的速度得很大的提高。通過(guò)計算還可以知道使用優(yōu)化技術(shù)后加速比也得到了很好的提高大概是以前4倍左右。
參考文獻
[1] 鄭緯民, 湯志忠. 計算機系統結構[M]. 北京: 清華大學(xué)出版社, 1998.
[2] Patterson D A., Hennessy J L. Computer Architecture: A Quantitive Approach 3ed[M]. San Francisco: Morgan Kanfmann Publishers, 2003.
[3] 蔡啟先, 李日初. DLX處理器浮點(diǎn)數流水線(xiàn)性能的研究[J]. 計算機工程,2006,5,32(9).
Fact.s其中的主要代碼如下:
main:
;*** Read value from stdin into R1
addi r1,r0,Prompt
jal InputUnsigned
;*** init values
movi2fp f10,r1 ;R1 -> D0 D0..Count register
cvti2d f0,f10
addi r2,r0,1 ;1 -> D2 D2..result
movi2fp f11,r2
cvti2d f2,f11
movd f4,f2 ;1-> D4 D4..Constant 1
;*** Break loop if D0 = 1
Loop: led f0,f4 ;D0<=1 ?
bfpt Finish
;*** Multiplication and next loop
multd f2,f2,f0
subd f0,f0,f4
j Loop
Finish: ;*** write result to stdout
sd PrintfValue,f2
addi r14,r0,PrintfPar
trap 5
;*** end
trap 0
將代碼裝載并運行,對比優(yōu)化前后的時(shí)空圖,并進(jìn)行性能的評價(jià)分析,得出結論。
圖4 第一次循環(huán)的流水線(xiàn)時(shí)空圖
在窗口中,可以看到模擬第一次循環(huán)正在第四時(shí)鐘周期,第一條命令正在ME M段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為“a
【DLX處理器流水線(xiàn)性能優(yōu)化(一)】相關(guān)文章:
網(wǎng)絡(luò )視頻系統性能測試及優(yōu)化11-22
2k-8k FFT處理器ROM面積的優(yōu)化03-30
簡(jiǎn)化加權數據融合算法對時(shí)差定位性能的優(yōu)化03-07
高性能計算機分布式內存文件系統的網(wǎng)絡(luò )性能優(yōu)化方法論文11-08
五種提高SQL性能的方法(一)11-22
ARM處理器的Boot與Remap03-07
為微處理器核心供電03-18