<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • DLX處理器流水線性能優(yōu)化(一)

    時間:2024-08-17 04:05:39 計算機(jī)畢業(yè)論文 我要投稿
    • 相關(guān)推薦

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

    摘要 :DLX虛擬微處理機(jī)提供了一個基于PC機(jī)的研究平臺,研究者可以在PC機(jī)上模擬新的處理機(jī)技術(shù)。本文先介紹DLX微處理機(jī)針對流水線處理的結(jié)構(gòu)調(diào)整和流水線的一些問題,并且結(jié)合一個實例,研究了流水線性能的優(yōu)化。

    關(guān)鍵詞  DLX微處理機(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 ”一書中首次提出的。它不僅體現(xiàn)了當(dāng)今多種機(jī)器系統(tǒng)結(jié)構(gòu)的共同特點 ,還將體現(xiàn)未來一些機(jī)器的指令集結(jié)構(gòu)的特點。這些機(jī)器的指令集結(jié)構(gòu)設(shè)計思想都和DLX指令集結(jié)構(gòu)的設(shè)計思想十分相似,它們都強(qiáng)調(diào):具有一個簡單的Load/Store指令集;注重指令流水效率;簡化指令的譯碼;高效支持編譯器。WinDLX是一個基于 Windows的DLX模擬器,用于模擬DLX流水線的工作過程。可以靈活、方便地設(shè)置參數(shù)、控制執(zhí)行、統(tǒng)計數(shù)據(jù)等。WinDLX提供了直觀的窗口顯示。本文先介紹DLX微處理機(jī)針對流水線處理的結(jié)構(gòu)調(diào)整,以及流水線所面臨的一些問題,然后結(jié)合實例對DLX流水線性能的優(yōu)化作簡單的分析,Win DLX模擬器能夠演示DLX流水線是如何工作的。
     
     2  基于流水線操作原理
     2.1  DLX處理機(jī)流水線概念
       DLX的數(shù)據(jù)通路的實現(xiàn),它允許在4或5個時鐘周期內(nèi)完成一條指令。雖然這些功能部件出現(xiàn)在它們被讀出的周期。但是PC在存儲器訪問周期(同樣在取值周期)被寫入,而存儲器在回寫周期被寫入。在這兩種情況下,在后面節(jié)拍的寫入可以由回送數(shù)值給PC或者寄存器的開關(guān)輸出(在存儲器訪問和回寫周期)來指明。這些回流的信號太大地增加了流水線地復(fù)雜度。圖一給出了一條指令如何沿著數(shù)據(jù)通路進(jìn)行流動。
     在每一個時鐘周期啟動一條新的指令便可以使圖一所示的數(shù)據(jù)通路流起水來,前面的每一個時鐘周期便成了一個流水節(jié)拍:流水線的一個周期。這樣便有圖二所示的指令執(zhí)行模式,它使用流水線結(jié)構(gòu)的典型畫法。其中,每一條指令經(jīng)過五個時鐘周期執(zhí)行完成,在每個時鐘周期內(nèi),硬件將初始化一條新的指令并執(zhí)行五個不同指令的某個部分。在一個簡單的流水線中,在每一個時鐘周期都有一條新的指令取進(jìn)來并開始長達(dá)五個時鐘周期的執(zhí)行。 若在每一個時鐘周期都啟動一條新的指令,那
     
                           圖1  DLX流水線數(shù)據(jù)通路的實現(xiàn)

    么性能將是不進(jìn)行流水線的及其的五倍。流水線每個節(jié)拍的名稱 : IF=取指令,ID=分析指令,EX=執(zhí)行指令,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) 確定機(jī)器在每一個時鐘周期都進(jìn)行什么樣的動作,并保證在同一個時鐘周期沒有兩條指令使用相同的數(shù)據(jù)通路資源。比如一個ALU不能同時用于計算有效地址和劍法運算。因此,必須得保證流水線中指令得重疊不會導(dǎo)致這樣的沖突。在簡化的DLX數(shù)據(jù)通路,主要的功能部件都在不同的時鐘周期使用,所以多條指令的重疊執(zhí)行相對來說幾乎所沒有引入沖突。
       (2) 圖一的基本數(shù)據(jù)通路已經(jīng)使用了分開的指令和數(shù)據(jù)存儲器,其典型的實現(xiàn)方式是使用分開的指令和數(shù)據(jù)Cache。使用獨立的Cache避免了對單一存儲器進(jìn)行取指和訪問數(shù)據(jù)操作之間的沖突。如果流水線機(jī)的時鐘周期和未流水的機(jī)器相同時,存儲系統(tǒng)的帶寬需要時原先的五倍,這便是取得高性能的代價。
       (3) 簡單地DLX數(shù)據(jù)通路中沒有涉及到PC,為了在每個時鐘周期都啟動一條新的指令,需要對PC進(jìn)行自加運算并存回,這項工作必須在IF節(jié)拍完成,為下一條指令做準(zhǔn)備。如果考慮要分支的影響,問題就這樣產(chǎn)生了,因為它也要改變PC,但是在MEM節(jié)拍進(jìn)行。在我們的多周期的非流水線結(jié)構(gòu)中,這不成為一個問題,因為只在MEM節(jié)拍寫一次PC。在這里我們將只在IF節(jié)拍對PC進(jìn)行寫操作,寫入自增后的PC或者前面分支的目標(biāo)地址。
     
    DLX流水線的實例性能分析
     為了具體了解DLX虛擬處理機(jī)如何解決流水線的問題,以一個流水線的實例進(jìn)行測試。優(yōu)化后進(jìn)行性能分析。這里使用 WinDLX 匯編器中的匯編文件 fact.s ,這個程序計算數(shù)(通過鍵盤輸入)的階乘。這需要用到文件input.s,它用于接收從鍵盤輸入的數(shù)。加載了這兩個文件后可以看見一條DLX指令的執(zhí)行需要5個周期:IF(取指周期)、ID(分析指令/寄存器周期)、EX(執(zhí)行周期)、MEM(存儲器訪問/分支完成周期)、WB(回寫周期)。其中執(zhí)行段分為4個單元,分別是intEX(整數(shù)操作)、addEX(浮點加減)、fmulEX(浮點乘法)、fdivEX(浮點除法),如圖三。
     
                      圖3   DLX的指令執(zhí)行流程
     
     指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù),這兩種技術(shù)各有各的有優(yōu)缺點,如何使CPU的性能達(dá)到最好,同時盡可能減少硬件和軟件的投入。實驗表明,同時應(yīng)用指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù),可以使CPU的優(yōu)化達(dá)到最大化。下面通過實例的優(yōu)化來分析證明這個結(jié)論。
     
    DLX的代碼分析
     上面提到的加載了fact.s和input.s這兩個文件,這里先分析一下fact.sborted”。其原因是:第二條命令(jal)是無條件分支指令, 但只有在第三個時鐘周期, jal 指令被譯碼后才知道,這時,下一條命令movi2fp已經(jīng)取出,但需執(zhí)行的下一條命令在另一個地址處,因而,movi2fp的執(zhí)行應(yīng)被取消,在流水線中留下氣泡。
    點擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時鐘周期14。trap 0x5行如圖五所示。其原因是,無論何時遇到一條trap指令時,DLX 處理器中的流水線都將被清空。


                      圖5   優(yōu)化前時鐘周期14的時空圖 


                      圖6   未經(jīng)優(yōu)化的時空圖

     由于沒有優(yōu)化代碼,出現(xiàn)了很多“寫寫相關(guān)”“讀寫相關(guān)”“功能部件沖突”等數(shù)據(jù)相關(guān),然后看一下Statistics窗口中的各種統(tǒng)計數(shù)字:總的周期數(shù)(215) 和暫停數(shù)(17 RAW, 25 Control, 12 Trap; 54 Total),然后關(guān)閉窗口。點擊主窗口中Configuration中的Enable Forwarding使重定向技術(shù)無效(去掉小鉤),其中PC被復(fù)位為0x00000100。激活Breakpoints子窗口,點擊主窗口中Breakpoints菜單,刪除所有斷點。然后按F5鍵,鍵入20后,按Enter鍵,程序?qū)⒁恢蹦M運行到結(jié)束。重新查看Statistics子窗口,你會看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數(shù)增加到236。如圖七所示是優(yōu)化后的時空圖。
     

                   圖7   優(yōu)化后的時空圖
     
     再一次查看Statistics子窗口,可以看到Control暫停和Trap暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數(shù)增加到236。
     
     3.2  基于流水線的性能分析

                 圖8     fact.s程序段指令優(yōu)化前后的部分統(tǒng)計

    加速比 s==236 / 215 = 1.098
    可以分析得出即DLXforwarded比 DLXnot forwarded 快9.8%。

     4 總結(jié)
     流水線過去是,而且將來還是提高計算機(jī)性能的最有效技術(shù)之一。DLX虛擬處理器為設(shè)計和研究流水線結(jié)構(gòu)提供方便直觀的平臺 ,如跟蹤程序運行的時空圖,在時空圖上可直接看到數(shù)據(jù)旁路(用箭頭表示)或延時的情況 ,程序運行結(jié)果的統(tǒng)計數(shù)據(jù)較全面地報告了流水線運行狀態(tài)等。本文探討了DLX流水線使用的主要技術(shù) ,利用DLX處理機(jī),采用對流水線實例的優(yōu)化處理分析,驗證了指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù)對DLX指令流水線的優(yōu)化作用,得出了一個結(jié)論,在正常的情況下同時使用兩種優(yōu)化技術(shù),可以使代碼的執(zhí)行的速度得很大的提高。通過計算還可以知道使用優(yōu)化技術(shù)后加速比也得到了很好的提高大概是以前4倍左右。
     
    參考文獻(xiàn)
    [1]  鄭緯民, 湯志忠. 計算機(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處理器浮點數(shù)流水線性能的研究[J]. 計算機(jī)工程,2006,5,32(9).

    ,這段碼實現(xiàn)了求階乘的運算,通過這段代碼的一些圖,則可以得出指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù)在實際運用中的作用。并且可以得出在現(xiàn)實中指令流調(diào)整技術(shù)和數(shù)據(jù)重定向技術(shù)對CPU性能的影響。
     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)化前后的時空圖,并進(jìn)行性能的評價分析,得出結(jié)論。

                     圖4   第一次循環(huán)的流水線時空圖  
     在窗口中,可以看到模擬第一次循環(huán)正在第四時鐘周期,第一條命令正在ME M段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為“a

    【DLX處理器流水線性能優(yōu)化(一)】相關(guān)文章:

    連續(xù)實時信號處理器的性能分析03-19

    網(wǎng)絡(luò)視頻系統(tǒng)性能測試及優(yōu)化11-22

    2k-8k FFT處理器ROM面積的優(yōu)化03-30

    簡化加權(quán)數(shù)據(jù)融合算法對時差定位性能的優(yōu)化03-07

    高性能計算機(jī)分布式內(nèi)存文件系統(tǒng)的網(wǎng)絡(luò)性能優(yōu)化方法論文11-08

    五種提高SQL性能的方法(一)11-22

    ARM處理器的Boot與Remap03-07

    為微處理器核心供電03-18

    黃岡本地傳輸網(wǎng)絡(luò)優(yōu)化(一)03-07

    主站蜘蛛池模板: 亚洲精品成a人在线观看| 日韩精品极品视频在线观看免费| 久久久久一级精品亚洲国产成人综合AV区| 国产精品福利在线观看免费不卡| 97久久超碰成人精品网站| 92国产精品午夜福利| 久久精品国产精品亚洲下载| 99re热这里只有精品视频中文字幕| 国产99re在线观看只有精品| 午夜精品久久久久久久无码| 久久久久无码精品国产不卡| 国产一区二区精品久久岳| 日韩精品欧美国产在线| 欧美一区二区精品系列在线观看| 91精品国产麻豆国产自产在线 | 国产高清在线精品一本大道| 精品熟女少妇av免费久久| 久久久久国产成人精品亚洲午夜| 2022国产精品福利在线观看| 亚洲国产另类久久久精品小说 | 亚洲精品无码成人片久久| 精品一区二区三区免费观看| 尤物国精品午夜福利视频| 国产在线精品免费aaa片| 亚洲av午夜成人片精品电影| 久久精品国产亚洲Aⅴ蜜臀色欲| 国产成人精品一区二区三区| 久久久久人妻精品一区三寸蜜桃 | mm1313亚洲国产精品无码试看| 2022国产精品自产拍在线观看| 久久精品亚洲日本波多野结衣| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 亚洲国产精品SSS在线观看AV| 老年人精品视频在线| 国内精品视频在线观看| mm1313亚洲国产精品无码试看| 亚洲精品福利视频| 最新精品露脸国产在线| 国产成人精品无码一区二区| 91不卡在线精品国产| 久久国产精品99久久久久久老狼 |