- 相關(guān)推薦
DLX處理器流水線性能優(yōu)化(一)
摘要 :DLX虛擬微處理機(jī)提供了一個(gè)基于PC機(jī)的研究平臺(tái),研究者可以在PC機(jī)上模擬新的處理機(jī)技術(shù)。本文先介紹DLX微處理機(jī)針對(duì)流水線處理的結(jié)構(gòu)調(diào)整和流水線的一些問(wèn)題,并且結(jié)合一個(gè)實(shí)例,研究了流水線性能的優(yōu)化。
關(guān)鍵詞 DLX微處理機(jī);流水線;計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)
1 導(dǎo)言
DLX 是一種虛擬的32位微處理機(jī)系統(tǒng)結(jié)構(gòu),Patterson 和 Anderson在其“Computer Architecture——A Quantitative Approach ”一書(shū)中首次提出的。它不僅體現(xiàn)了當(dāng)今多種機(jī)器系統(tǒng)結(jié)構(gòu)的共同特點(diǎn) ,還將體現(xiàn)未來(lái)一些機(jī)器的指令集結(jié)構(gòu)的特點(diǎn)。這些機(jī)器的指令集結(jié)構(gòu)設(shè)計(jì)思想都和DLX指令集結(jié)構(gòu)的設(shè)計(jì)思想十分相似,它們都強(qiáng)調(diào):具有一個(gè)簡(jiǎn)單的Load/Store指令集;注重指令流水效率;簡(jiǎn)化指令的譯碼;高效支持編譯器。WinDLX是一個(gè)基于 Windows的DLX模擬器,用于模擬DLX流水線的工作過(guò)程。可以靈活、方便地設(shè)置參數(shù)、控制執(zhí)行、統(tǒng)計(jì)數(shù)據(jù)等。WinDLX提供了直觀的窗口顯示。本文先介紹DLX微處理機(jī)針對(duì)流水線處理的結(jié)構(gòu)調(diào)整,以及流水線所面臨的一些問(wèn)題,然后結(jié)合實(shí)例對(duì)DLX流水線性能的優(yōu)化作簡(jiǎn)單的分析,Win DLX模擬器能夠演示DLX流水線是如何工作的。
2 基于流水線操作原理
2.1 DLX處理機(jī)流水線概念
DLX的數(shù)據(jù)通路的實(shí)現(xiàn),它允許在4或5個(gè)時(shí)鐘周期內(nèi)完成一條指令。雖然這些功能部件出現(xiàn)在它們被讀出的周期。但是PC在存儲(chǔ)器訪問(wèn)周期(同樣在取值周期)被寫(xiě)入,而存儲(chǔ)器在回寫(xiě)周期被寫(xiě)入。在這兩種情況下,在后面節(jié)拍的寫(xiě)入可以由回送數(shù)值給PC或者寄存器的開(kāi)關(guān)輸出(在存儲(chǔ)器訪問(wèn)和回寫(xiě)周期)來(lái)指明。這些回流的信號(hào)太大地增加了流水線地復(fù)雜度。圖一給出了一條指令如何沿著數(shù)據(jù)通路進(jìn)行流動(dòng)。
在每一個(gè)時(shí)鐘周期啟動(dòng)一條新的指令便可以使圖一所示的數(shù)據(jù)通路流起水來(lái),前面的每一個(gè)時(shí)鐘周期便成了一個(gè)流水節(jié)拍:流水線的一個(gè)周期。這樣便有圖二所示的指令執(zhí)行模式,它使用流水線結(jié)構(gòu)的典型畫(huà)法。其中,每一條指令經(jīng)過(guò)五個(gè)時(shí)鐘周期執(zhí)行完成,在每個(gè)時(shí)鐘周期內(nèi),硬件將初始化一條新的指令并執(zhí)行五個(gè)不同指令的某個(gè)部分。在一個(gè)簡(jiǎn)單的流水線中,在每一個(gè)時(shí)鐘周期都有一條新的指令取進(jìn)來(lái)并開(kāi)始長(zhǎng)達(dá)五個(gè)時(shí)鐘周期的執(zhí)行。 若在每一個(gè)時(shí)鐘周期都啟動(dòng)一條新的指令,那
圖1 DLX流水線數(shù)據(jù)通路的實(shí)現(xiàn)
么性能將是不進(jìn)行流水線的及其的五倍。流水線每個(gè)節(jié)拍的名稱(chēng) : IF=取指令,ID=分析指令,EX=執(zhí)行指令,MEM=存儲(chǔ)器訪問(wèn),WB=寫(xiě)回。
指令號(hào) 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流水線
2.2 DLX流水引出的問(wèn)題
(1) 確定機(jī)器在每一個(gè)時(shí)鐘周期都進(jìn)行什么樣的動(dòng)作,并保證在同一個(gè)時(shí)鐘周期沒(méi)有兩條指令使用相同的數(shù)據(jù)通路資源。比如一個(gè)ALU不能同時(shí)用于計(jì)算有效地址和劍法運(yùn)算。因此,必須得保證流水線中指令得重疊不會(huì)導(dǎo)致這樣的沖突。在簡(jiǎn)化的DLX數(shù)據(jù)通路,主要的功能部件都在不同的時(shí)鐘周期使用,所以多條指令的重疊執(zhí)行相對(duì)來(lái)說(shuō)幾乎所沒(méi)有引入沖突。
(2) 圖一的基本數(shù)據(jù)通路已經(jīng)使用了分開(kāi)的指令和數(shù)據(jù)存儲(chǔ)器,其典型的實(shí)現(xiàn)方式是使用分開(kāi)的指令和數(shù)據(jù)Cache。使用獨(dú)立的Cache避免了對(duì)單一存儲(chǔ)器進(jìn)行取指和訪問(wèn)數(shù)據(jù)操作之間的沖突。如果流水線機(jī)的時(shí)鐘周期和未流水的機(jī)器相同時(shí),存儲(chǔ)系統(tǒng)的帶寬需要時(shí)原先的五倍,這便是取得高性能的代價(jià)。
(3) 簡(jiǎn)單地DLX數(shù)據(jù)通路中沒(méi)有涉及到PC,為了在每個(gè)時(shí)鐘周期都啟動(dòng)一條新的指令,需要對(duì)PC進(jìn)行自加運(yùn)算并存回,這項(xiàng)工作必須在IF節(jié)拍完成,為下一條指令做準(zhǔn)備。如果考慮要分支的影響,問(wèn)題就這樣產(chǎn)生了,因?yàn)樗惨淖働C,但是在MEM節(jié)拍進(jìn)行。在我們的多周期的非流水線結(jié)構(gòu)中,這不成為一個(gè)問(wèn)題,因?yàn)橹辉贛EM節(jié)拍寫(xiě)一次PC。在這里我們將只在IF節(jié)拍對(duì)PC進(jìn)行寫(xiě)操作,寫(xiě)入自增后的PC或者前面分支的目標(biāo)地址。
DLX流水線的實(shí)例性能分析
為了具體了解DLX虛擬處理機(jī)如何解決流水線的問(wèn)題,以一個(gè)流水線的實(shí)例進(jìn)行測(cè)試。優(yōu)化后進(jìn)行性能分析。這里使用 WinDLX 匯編器中的匯編文件 fact.s ,這個(gè)程序計(jì)算數(shù)(通過(guò)鍵盤(pán)輸入)的階乘。這需要用到文件input.s,它用于接收從鍵盤(pán)輸入的數(shù)。加載了這兩個(gè)文件后可以看見(jiàn)一條DLX指令的執(zhí)行需要5個(gè)周期:IF(取指周期)、ID(分析指令/寄存器周期)、EX(執(zhí)行周期)、MEM(存儲(chǔ)器訪問(wèn)/分支完成周期)、WB(回寫(xiě)周期)。其中執(zhí)行段分為4個(gè)單元,分別是intEX(整數(shù)操作)、addEX(浮點(diǎn)加減)、fmulEX(浮點(diǎn)乘法)、fdivEX(浮點(diǎn)除法),如圖三。
圖3 DLX的指令執(zhí)行流程
指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù),這兩種技術(shù)各有各的有優(yōu)缺點(diǎn),如何使CPU的性能達(dá)到最好,同時(shí)盡可能減少硬件和軟件的投入。實(shí)驗(yàn)表明,同時(shí)應(yīng)用指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù),可以使CPU的優(yōu)化達(dá)到最大化。下面通過(guò)實(shí)例的優(yōu)化來(lái)分析證明這個(gè)結(jié)論。
DLX的代碼分析
上面提到的加載了fact.s和input.s這兩個(gè)文件,這里先分析一下fact.sborted”。其原因是:第二條命令(jal)是無(wú)條件分支指令, 但只有在第三個(gè)時(shí)鐘周期, jal 指令被譯碼后才知道,這時(shí),下一條命令movi2fp已經(jīng)取出,但需執(zhí)行的下一條命令在另一個(gè)地址處,因而,movi2fp的執(zhí)行應(yīng)被取消,在流水線中留下氣泡。
點(diǎn)擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時(shí)鐘周期14。trap 0x5行如圖五所示。其原因是,無(wú)論何時(shí)遇到一條trap指令時(shí),DLX 處理器中的流水線都將被清空。
圖5 優(yōu)化前時(shí)鐘周期14的時(shí)空?qǐng)D
圖6 未經(jīng)優(yōu)化的時(shí)空?qǐng)D
由于沒(méi)有優(yōu)化代碼,出現(xiàn)了很多“寫(xiě)寫(xiě)相關(guān)”“讀寫(xiě)相關(guān)”“功能部件沖突”等數(shù)據(jù)相關(guān),然后看一下Statistics窗口中的各種統(tǒng)計(jì)數(shù)字:總的周期數(shù)(215) 和暫停數(shù)(17 RAW, 25 Control, 12 Trap; 54 Total),然后關(guān)閉窗口。點(diǎn)擊主窗口中Configuration中的Enable Forwarding使重定向技術(shù)無(wú)效(去掉小鉤),其中PC被復(fù)位為0x00000100。激活Breakpoints子窗口,點(diǎn)擊主窗口中Breakpoints菜單,刪除所有斷點(diǎn)。然后按F5鍵,鍵入20后,按Enter鍵,程序?qū)⒁恢蹦M運(yùn)行到結(jié)束。重新查看Statistics子窗口,你會(huì)看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數(shù)增加到236。如圖七所示是優(yōu)化后的時(shí)空?qǐng)D。
圖7 優(yōu)化后的時(shí)空?qǐng)D
再一次查看Statistics子窗口,可以看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數(shù)增加到236。
3.2 基于流水線的性能分析
圖8 fact.s程序段指令優(yōu)化前后的部分統(tǒng)計(jì)
加速比 s==236 / 215 = 1.098
可以分析得出即DLXforwarded比 DLXnot forwarded 快9.8%。
4 總結(jié)
流水線過(guò)去是,而且將來(lái)還是提高計(jì)算機(jī)性能的最有效技術(shù)之一。DLX虛擬處理器為設(shè)計(jì)和研究流水線結(jié)構(gòu)提供方便直觀的平臺(tái) ,如跟蹤程序運(yùn)行的時(shí)空?qǐng)D,在時(shí)空?qǐng)D上可直接看到數(shù)據(jù)旁路(用箭頭表示)或延時(shí)的情況 ,程序運(yùn)行結(jié)果的統(tǒng)計(jì)數(shù)據(jù)較全面地報(bào)告了流水線運(yùn)行狀態(tài)等。本文探討了DLX流水線使用的主要技術(shù) ,利用DLX處理機(jī),采用對(duì)流水線實(shí)例的優(yōu)化處理分析,驗(yàn)證了指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù)對(duì)DLX指令流水線的優(yōu)化作用,得出了一個(gè)結(jié)論,在正常的情況下同時(shí)使用兩種優(yōu)化技術(shù),可以使代碼的執(zhí)行的速度得很大的提高。通過(guò)計(jì)算還可以知道使用優(yōu)化技術(shù)后加速比也得到了很好的提高大概是以前4倍左右。
參考文獻(xiàn)
[1] 鄭緯民, 湯志忠. 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)[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)數(shù)流水線性能的研究[J]. 計(jì)算機(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ùn)行,對(duì)比優(yōu)化前后的時(shí)空?qǐng)D,并進(jìn)行性能的評(píng)價(jià)分析,得出結(jié)論。
圖4 第一次循環(huán)的流水線時(shí)空?qǐng)D
在窗口中,可以看到模擬第一次循環(huán)正在第四時(shí)鐘周期,第一條命令正在ME M段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為“a
【DLX處理器流水線性能優(yōu)化(一)】相關(guān)文章:
供給鏈系統(tǒng)的柔性性能06-03
數(shù)據(jù)關(guān)聯(lián)算法綜述及其性能評(píng)估05-05
論我國(guó)消費(fèi)環(huán)境的優(yōu)化05-11
金融貿(mào)易結(jié)構(gòu)優(yōu)化研討05-30
我國(guó)氣壓盤(pán)式制動(dòng)結(jié)構(gòu)性能和前景分析05-11
變電站接地網(wǎng)優(yōu)化設(shè)計(jì)08-24
稅制改革、優(yōu)化與稅收征管均衡發(fā)展06-01
商品期貨優(yōu)化投資組合的實(shí)證檢驗(yàn)08-26
高性能數(shù)據(jù)采集系統(tǒng)芯片LM12H458及其應(yīng)用05-28
優(yōu)化小學(xué)數(shù)學(xué)作業(yè)設(shè)計(jì)的研究開(kāi)題報(bào)告08-18