流水線中的相關(guān)培訓(xùn)教程[4]
流水線中的相關(guān)培訓(xùn)教程[4]
下面討論如何利用編譯器技術(shù)來(lái)減少這種必須的暫停,然后論述如何在流水線中實(shí)現(xiàn)數(shù)據(jù)相關(guān)檢測(cè)和定向。
??? 5. 對(duì)數(shù)據(jù)相關(guān)的編譯器調(diào)度方法
??? 流水線常常會(huì)遇到許多種類型的暫停。比如,采用典型的代碼生成方法對(duì)A = B + C這種常用的表達(dá)式進(jìn)行處理,可以得到如圖3.3.14所示的指令序列。從圖3.3.14可以看出,在 ADD 指令的流水過(guò)程中必須插入一個(gè)暫停時(shí)鐘周期,以保證變量C的讀入值有效。既然定向無(wú)法消除指令序列中所包含的這種暫停,那么能否讓編譯器在進(jìn)行代碼生成時(shí)就消除這些潛在的暫停呢?
實(shí)際上,編譯器的確可以通過(guò)重新組織代碼順序來(lái)消除這種暫停。通常稱這種重新組織代碼順序消除暫停的技術(shù)為流水線調(diào)度(pipeline scheduling)或指令調(diào)度(instruction scheduling)。
??? 例 3.6 請(qǐng)為下列表達(dá)式生成沒(méi)有暫停的DLX代碼序列。假設(shè)載入延遲為1個(gè)時(shí)鐘周期。
??? a = b - c;
??? d = e - f;
??? 解: 調(diào)度前后的指令序列如表3.2所示。可以看出,兩條ALU指令(ADD Ra,Rb,Rc 和 SUB Rd,Re,Rf)分別和兩條Load指令(LW Rc,c和LW Rf,f)之間存在數(shù)據(jù)相關(guān)。為了保證流水線正確執(zhí)行調(diào)度前的指令序列,必須在指令執(zhí)行過(guò)程中插入兩個(gè)時(shí)鐘周期的暫停。但是考察調(diào)度后的指令序列不難發(fā)現(xiàn),由于流水線允許定向,就不必在指令執(zhí)行過(guò)程中插入任何暫停周期。
6. 對(duì)DLX流水線控制的實(shí)現(xiàn)
??? 讓一條指令從流水線的指令譯碼段(ID)移動(dòng)到執(zhí)行段(EX)的過(guò)程通常稱為指令發(fā)射,而經(jīng)過(guò)了該過(guò)程的指令為已發(fā)射的指令。
??? 對(duì)于 DLX 標(biāo)量流水線而言,所有的數(shù)據(jù)相關(guān)均可以在流水線的 ID段 檢測(cè)到,如果存在數(shù)據(jù)相關(guān),指令在其發(fā)射之前就會(huì)被暫停。這樣,我們可以在 ID段 決定需要什么樣的定向,然后設(shè)置相應(yīng)的控制。在流水線中較早地檢測(cè)到相關(guān),可以降低實(shí)現(xiàn)流水線的硬件復(fù)雜度,因?yàn)檫@樣不必在流水過(guò)程中被迫將一條已經(jīng)改變了機(jī)器狀態(tài)的指令掛起。另外一種方法是在使用一個(gè)操作數(shù)的時(shí)鐘周期開(kāi)始(DLX 流水線的 EX 和 MEM 段的開(kāi)始)檢測(cè)相關(guān),確定必需的定向。
??? 為了說(shuō)明這兩種方法的不同,我們將以 Load 指令所引起的 RAW 相關(guān)為例,論述如何通過(guò)在 ID段 的檢測(cè)來(lái)實(shí)現(xiàn)流水線控制,其中到 ALU 輸入的定向路徑可以在 EX 段。表3.3列出了流水線相關(guān)檢測(cè)硬件可以檢測(cè)到的各種相關(guān)情況。
?現(xiàn)在來(lái)看看如何實(shí)現(xiàn)流水線互鎖。如果某條指令和 Load 指令有一個(gè) RAW 相關(guān)時(shí),該指令處于 ID段,Load 指令處于 EX段。我們可以用表3.4來(lái)描述此時(shí)所有可能的相關(guān)情況。
??? 一旦硬件檢測(cè)到上述 RAW 相關(guān),流水線互鎖必須在流水線中插入暫停周期,使正處于 IF 和 ID段 的指令不再前進(jìn)。另外,還必須暫停向前傳送 IF/ID 寄存器組的內(nèi)容,使得流水線能夠保持被暫停的指令。
??? 對(duì)定向而言,雖然可能要考慮許多情況,但是定向邏輯的實(shí)現(xiàn)方法是類似的。實(shí)現(xiàn)定向邏輯的關(guān)鍵是,流水線寄存器不僅包含了被定向的數(shù)據(jù),而且包含了目標(biāo)和源寄存器域。從上面的討論可知,所有定向都是從 ALU 或數(shù)據(jù)存儲(chǔ)器的輸出到 ALU、數(shù)據(jù)存儲(chǔ)器或0檢測(cè)單元的輸入的定向,我們可以分別將 EX/MEM 和 MEM/WB 段的寄存器 IR 同 ID/EX 和 EX/MEM 段中的寄存器 IR 相比較,決定是否需要定向,從而實(shí)現(xiàn)必需的定向控制。
定向的控制硬件除了需要用比較器和組合邏輯來(lái)確定什么時(shí)候打開(kāi)哪一條定向路徑之外,還需要在 ALU 輸入端采用具有多個(gè)輸入的多路器,并增加相應(yīng)的定向路徑連接通路。改進(jìn)圖3.2.17中的相關(guān)硬件,可以得到圖3.3.15,圖中畫出了所增設(shè)的定向路徑。
?
?
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] 多周期cpu的設(shè)計(jì)思想是什么?怎樣實(shí)現(xiàn)cpu多流水線? 2023-10-19
- [電子說(shuō)] 單周期cpu和多周期cpu的區(qū)別 多周期cpu和流水線的區(qū)別 2023-10-19
- [電子說(shuō)] 大模型時(shí)代,如何搭建數(shù)據(jù)的“智能化流水線”? 2023-10-16
- [電子說(shuō)] ARMv7-A架構(gòu)學(xué)習(xí)筆記:通用寄存器與流水線 2023-10-16
- [PCB設(shè)計(jì)] 簡(jiǎn)單平行式結(jié)構(gòu)貼片機(jī) 2023-09-26
- [模擬技術(shù)] 流水線ADC結(jié)構(gòu)解析 流水線ADC和其它ADC的比較 2023-09-26
- [電子說(shuō)] 流水線ADC的內(nèi)部結(jié)構(gòu)和工作原理是什么 2023-09-26
- [電子說(shuō)] 流水線Andon安燈呼叫系統(tǒng)解決方案及應(yīng)用背景 2023-09-25
( 發(fā)表人:admin )