ch06 管線處理.pptVIP

  • 4
  • 0
  • 约1.56万字
  • 约 201页
  • 2018-05-19 发布于四川
  • 举报
第二種為WAR(Write After Read),即資料必須先從暫存器讀出,後續的指令才能做寫入,這是超級管線才會發生的問題。 第三種為WAW(Write After Write),即資料必須先寫入暫存器,後續的指令才能做寫入同一暫存器動作,這也是超級管線才會發生的問題。 紀錄板(Scoreboard)技術 在超級管線的設計裡,指令會以非依序方式執行,而發生各種資料障礙,造成程式結果錯誤;所以必須要有一個處理資料障礙的機制,讓指令能在非依序中執行。 通常要做到多條管線的充份使用,電路在指令讀取上會採用高速讀取,甚至一次讀取多個指令的設計,然後在解碼後,將大量的指令先排入指令緩衝區,由控制與分配電路,檢查那些指令執行管線可以運用?以及那些指令已可進入執行?這種規劃與分派指令的動作,稱為動態排程(Dynamic Scheduling)。 在超級管線中,有設計一個指令緩衝區,存放大量解碼後的指令,由一個指令流程紀錄控制電路(稱為紀錄板),安排這些指令進入不同的指令執行管線,此種動態排程,就稱為紀錄板技術。 紀錄板內部的設計 紀錄板的功能在於: 1、記載目前在執行管線中有那些指令在執行。 2、記載指令所要的運算元是否已取得?若已取得標示OK;若沒有取得則標示,資料在哪一個指令(行號),還沒有算出。 3、紀錄在執行管線中,哪些指令已在執行? 哪些仍在等待? 紀錄板繼續引導指令的執行,行號第10指令完成後,接著行號20也執行完成,請注意這種指令依序的執行控制,已使指令成為依序執行而避免了資料障礙;由於指令20完成了,指令40就可進入一個運算元管線執行,且其R3與指令30的ADD指令所要的R3都獲得,而可以執行了。 最後指令30與40都完成了,指令50才能入兩運算元管線執行,並其資料R4、R1都已獲得,而此時指令60的CLR指令,也獲得指令40的R3,而可以執行了;當然CLR指令會比ST指令先完成,不過紀錄板的技術,是依指令間資料需求的順序執行,雖然較簡易的指令會先做完,但如果先前的指令資料沒有計算出來,指令就算先入管線仍無法執行,必須等待。 所以紀錄板技術雖是屬於資料流(Data Flow),但在設計時,仍是以指令的資料為追索,依循著前面指令資料的算出,做順序執行,以避開資料障礙的。 預留站(Reservation Station)技術 在動態排程的處理方面,Robert Tomasulo所發明的預留站技術,主要是在每一個執行管線及記憶體資料存取時,建立一個指令緩衝區,即稱為預留站,然後依站名給每個指令的暫存器重新命名(Register Rename),以此避免資料障礙,每個指令在暫存器值都到齊時,就進入管線執行。 指令解碼時,不同的指令至各自的預留站,並依預留站名給予暫存器重新命名,準備進入執行管線。 暫存器重新命名 預留站的技術在於暫存器重新命名,經由預留站的位置來重新命名後,每個指令所需要的暫存器,會有唯一的暫存器名稱,絕不因非依序執行,而產生資料障礙而錯誤,如果資料未算出,就先停在預留站中等待。 暫存器的重命名,使得暫存器不再以編號為根據,而是以指令所在的預留站位置編排,所以每個指令會很清楚所需要的運算元,以避免資料障礙,這也改變了一般使用的暫存器名稱或編號的用法。 分散執行 預留站還有一個優點是分散執行,每個預留站內的指令,可同時進入執行管線及記憶體資料存取中執行;各預留站同時執行,比紀錄板效率高。 個人電腦的CPU設計 目前個人電腦的CPU,大多採用超級管線,而內部多以預留站技術做設計,分散執行可加速指令的處理,並避免資料障礙,完成指令的非依序完成。 在一般的超級管線中,執行管線通常分成整數運算部份及浮點運算部份,而整數運算有:整數加減運算管線、整數記憶體存取管線、整數乘除運算管線。 在浮點運算方面有:浮點加減運算管線、浮數乘法運算管線、浮數除法運算管線及浮數記憶體存取管線。 這些分類的執行管線設計,其電路與執行時間各有不同,在CPU設計時會因為整數指令較常使用,而設置多個運算執行管線;而乘除電路因設計複雜,有時也合併成一個執行管線。 前置處理 指令在讀取階段,CPU會有前置處理(Pre-Process),這有兩種狀況,一是大部份的編譯程式所產生的低階語言,是Intel的80X86系列的組合語言,所以其他廠牌的CPU在執行時,必須轉譯成自己所使用的低階語言。 另一原因是管線設計為求指令一致,而多採精簡指令集,使管線儘可能單一化,但有些CPU是採用複雜指令集,所以讀入指令時,必須先將複雜的指令轉譯成簡易的指令,使管線電路易於設計,而執行的指令也單純化。 超級管線的中斷處理 當然同時有多個指令在執行,突然要求程式中斷,除非是可預知的中斷要求,可由系統安排在定時或定點(程式中斷點),做程式中斷的處理,否則很可能就

文档评论(0)

1亿VIP精品文档

相关文档