DLX處理器流水線性能優化(一)

學識都 人氣:2.1W

摘要 :DLX虛擬微處理機提供了一個基於PC機的研究平臺,研究者可以在PC機上模擬新的處理機技術。本文先介紹DLX微處理機針對流水線處理的結構調整和流水線的一些問題,並且結合一個實例,研究了流水線性能的優化。

DLX處理器流水線性能優化(一)

關鍵詞  DLX微處理機;流水線;計算機系統結構

 1  導言
 DLX 是一種虛擬的32位微處理機系統結構,Patterson 和  Anderson在其“Computer Architecture——A Quantitative  Approach ”一書中首次提出的。它不僅體現了當今多種機器系統結構的共同特點 ,還將體現未來一些機器的指令集結構的特點。這些機器的指令集結構設計思想都和DLX指令集結構的設計思想十分相似,它們都強調:具有一個簡單的Load/Store指令集;注重指令流水效率;簡化指令的譯碼;高效支持編譯器。WinDLX是一個基於 Windows的DLX模擬器,用於模擬DLX流水線的工作過程。可以靈活、方便地設置參數、控制執行、統計數據等。WinDLX提供了直觀的窗口顯示。本文先介紹DLX微處理機針對流水線處理的結構調整,以及流水線所面臨的一些問題,然後結合實例對DLX流水線性能的優化作簡單的分析,Win DLX模擬器能夠演示DLX流水線是如何工作的。
 
 2  基於流水線操作原理
 2.1  DLX處理機流水線概念
   DLX的數據通路的實現,它允許在4或5個時鐘周期內完成一條指令。雖然這些功能部件出現在它們被讀出的週期。但是PC在存儲器訪問週期(同樣在取值週期)被寫入,而存儲器在回寫週期被寫入。在這兩種情況下,在後面節拍的寫入可以由回送數值給PC或者寄存器的開關輸出(在存儲器訪問和回寫週期)來指明。這些迴流的信號太大地增加了流水線地複雜度。圖一給出了一條指令如何沿着數據通路進行流動。
 在每一個時鐘週期啓動一條新的指令便可以使圖一所示的數據通路流起水來,前面的每一個時鐘週期便成了一個流水節拍:流水線的一個週期。這樣便有圖二所示的指令執行模式,它使用流水線結構的典型畫法。其中,每一條指令經過五個時鐘週期執行完成,在每個時鐘週期內,硬件將初始化一條新的`指令並執行五個不同指令的某個部分。在一個簡單的流水線中,在每一個時鐘週期都有一條新的指令取進來並開始長達五個時鐘週期的執行。 若在每一個時鐘週期都啓動一條新的指令,那
 
                       圖1  DLX流水線數據通路的實現

麼性能將是不進行流水線的及其的五倍。流水線每個節拍的名稱 : IF=取指令,ID=分析指令,EX=執行指令,MEM=存儲器訪問,WB=寫回。

指令號 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  簡單的DLX流水線
  
 2.2  DLX流水引出的問題
 (1) 確定機器在每一個時鐘週期都進行什麼樣的動作,並保證在同一個時鐘週期沒有兩條指令使用相同的數據通路資源。比如一個ALU不能同時用於計算有效地址和劍法運算。因此,必須得保證流水線中指令得重疊不會導致這樣的衝突。在簡化的DLX數據通路,主要的功能部件都在不同的時鐘週期使用,所以多條指令的重疊執行相對來說幾乎所沒有引入衝突。
   (2) 圖一的基本數據通路已經使用了分開的指令和數據存儲器,其典型的實現方式是使用分開的指令和數據Cache。使用獨立的Cache避免了對單一存儲器進行取指和訪問數據操作之間的衝突。如果流水線機的時鐘週期和未流水的機器相同時,存儲系統的帶寬需要時原先的五倍,這便是取得高性能的代價。
   (3) 簡單地DLX數據通路中沒有涉及到PC,爲了在每個時鐘週期都啓動一條新的指令,需要對PC進行自加運算並存回,這項工作必須在IF節拍完成,爲下一條指令做準備。如果考慮要分支的影響,問題就這樣產生了,因爲它也要改變PC,但是在MEM節拍進行。在我們的多週期的非流水線結構中,這不成爲一個問題,因爲只在MEM節拍寫一次PC。在這裏我們將只在IF節拍對PC進行寫操作,寫入自增後的PC或者前面分支的目標地址。
 
DLX流水線的實例性能分析
 爲了具體瞭解DLX虛擬處理機如何解決流水線的問題,以一個流水線的實例進行測試。優化後進行性能分析。這裏使用 WinDLX 彙編器中的彙編文件 fact.s ,這個程序計算數(通過鍵盤輸入)的階乘。這需要用到文件input.s,它用於接收從鍵盤輸入的數。加載了這兩個文件後可以看見一條DLX指令的執行需要5個週期:IF(取指週期)、ID(分析指令/寄存器週期)、EX(執行週期)、MEM(存儲器訪問/分支完成周期)、WB(回寫週期)。其中執行段分爲4個單元,分別是intEX(整數操作)、addEX(浮點加減)、fmulEX(浮點乘法)、fdivEX(浮點除法),如圖三。
 
                  圖3   DLX的指令執行流程
 
 指令流調整技術和數據重定向技術,這兩種技術各有各的有優缺點,如何使CPU的性能達到最好,同時儘可能減少硬件和軟件的投入。實驗表明,同時應用指令流調整技術和數據重定向技術,可以使CPU的優化達到最大化。下面通過實例的優化來分析證明這個結論。
 
DLX的代碼分析
 上面提到的加載了fact.s和input.s這兩個文件,這裏先分析一下fact.s