第5章標量處理機(5.4,5.5,5.6) 流水線的沖突MIPS流水線_第1頁
第5章標量處理機(5.4,5.5,5.6) 流水線的沖突MIPS流水線_第2頁
第5章標量處理機(5.4,5.5,5.6) 流水線的沖突MIPS流水線_第3頁
第5章標量處理機(5.4,5.5,5.6) 流水線的沖突MIPS流水線_第4頁
第5章標量處理機(5.4,5.5,5.6) 流水線的沖突MIPS流水線_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、5.4 流水線的相關(guān)與沖突流水線的相關(guān)與沖突5.4.1 一條經(jīng)典的一條經(jīng)典的5段流水線段流水線5.4.2 相關(guān)與流水線的沖突相關(guān)與流水線的沖突計算機科學與技術(shù)系計算機科學與技術(shù)系介紹一條經(jīng)典的5段RISC流水線 首先討論在非流水情況下是如何實現(xiàn)的w一條指令的執(zhí)行過程分為以下5個周期:取指令周期(IF)q以程序計數(shù)器以程序計數(shù)器PC中的內(nèi)容作為地址,從存儲器中取中的內(nèi)容作為地址,從存儲器中取出指令并放入指令寄存器出指令并放入指令寄存器IR;q同時同時PC值加值加4(假設(shè)每條指令占(假設(shè)每條指令占4個字節(jié)),指向順個字節(jié)),指向順序的下一條指令。序的下一條指令。5.4 流水線的相關(guān)與沖突5.4.1

2、 一條經(jīng)典的5段流水線計算機科學與技術(shù)系計算機科學與技術(shù)系指令譯碼/讀寄存器周期(ID) 對指令進行譯碼,并讀出寄存器的內(nèi)容。用對指令進行譯碼,并讀出寄存器的內(nèi)容。用IR中的寄中的寄存器地址去訪問通用寄存器組,讀出所需的操作數(shù)。由于存器地址去訪問通用寄存器組,讀出所需的操作數(shù)。由于指令的立即數(shù)部分也保存在相同的位置,需要擴展立即數(shù)指令的立即數(shù)部分也保存在相同的位置,需要擴展立即數(shù)的操作也在本段完成。的操作也在本段完成。 執(zhí)行/有效地址計算周期(EX) 不同指令所進行的操作不同:qload和和store指令指令:ALU把指令中所指定的寄存器的內(nèi)容與把指令中所指定的寄存器的內(nèi)容與偏移量相加,形成訪

3、存有效地址。偏移量相加,形成訪存有效地址。q寄存器寄存器寄存器寄存器ALU指令指令:ALU按照操作碼指定的操作按照操作碼指定的操作對從通用寄存器組中讀出的數(shù)據(jù)進行運算。對從通用寄存器組中讀出的數(shù)據(jù)進行運算。計算機科學與技術(shù)系計算機科學與技術(shù)系q寄存器立即數(shù)寄存器立即數(shù)ALU指令指令:ALU按照操作碼指定的操作按照操作碼指定的操作對從通用寄存器組中讀出的操作數(shù)和指令中給出的立即對從通用寄存器組中讀出的操作數(shù)和指令中給出的立即數(shù)進行運算。數(shù)進行運算。q分支指令分支指令:ALU把指令中給出的偏移量與把指令中給出的偏移量與PC值相加,形值相加,形成轉(zhuǎn)移目標的地址。同時,對在前一個周期讀出的操作成轉(zhuǎn)移目

4、標的地址。同時,對在前一個周期讀出的操作數(shù)進行判斷,確定分支是否成功。數(shù)進行判斷,確定分支是否成功。存儲器訪問分支完成周期(MEM) 該周期處理的指令只有l(wèi)oad、store和分支指令。 其它類型的指令在此周期不做任何操作。計算機科學與技術(shù)系計算機科學與技術(shù)系qloadload和和storestore指令指令loadload指令:指令:用上一個周期計算出的有效地址從存儲器中用上一個周期計算出的有效地址從存儲器中 讀出相應(yīng)的數(shù)據(jù);讀出相應(yīng)的數(shù)據(jù);storestore指令:指令:把指定的數(shù)據(jù)寫入這個有效地址所指出的存把指定的數(shù)據(jù)寫入這個有效地址所指出的存 儲器單元。儲器單元。q分支指令分支指令 分

5、支分支“成功成功”,就把轉(zhuǎn)移目標地址送入,就把轉(zhuǎn)移目標地址送入PCPC。 分支指令執(zhí)行完成。分支指令執(zhí)行完成。計算機科學與技術(shù)系計算機科學與技術(shù)系寫回周期(WB) ALU運算指令和load指令在這個周期把結(jié)果數(shù)據(jù)寫入通用寄存器組。 ALUALU運算指令:運算指令:結(jié)果數(shù)據(jù)來自結(jié)果數(shù)據(jù)來自ALUALU。 loadload指令:指令:結(jié)果數(shù)據(jù)來自存儲器。結(jié)果數(shù)據(jù)來自存儲器。 在這個實現(xiàn)方案中:p分支指令需要分支指令需要4 4個時鐘個時鐘周期(如果把分支指令的執(zhí)行周期(如果把分支指令的執(zhí)行 提前到提前到IDID周期,則只需要周期,則只需要2 2個個周期);周期);pstorestore指令需要指令需

6、要4 4個個周期;周期;p其它指令需要其它指令需要5 5個個周期才能完成。周期才能完成。w在更先進的實現(xiàn)中,在ID段完成對寄存器的內(nèi)容進行比較,判斷是否為轉(zhuǎn)移指令,若為真,將PC與帶符號的位移量相加,生成的轉(zhuǎn)移目標地址寫人PC,在ID段完成對轉(zhuǎn)移的處理。計算機科學與技術(shù)系計算機科學與技術(shù)系w將上述實現(xiàn)方案修改為流水線實現(xiàn)一條經(jīng)典的5段流水線 q每一個周期作為一個流水段;每一個周期作為一個流水段;q在各段之間加上鎖存器(流水寄存器)。在各段之間加上鎖存器(流水寄存器)。 IM Reg ALU DM Reg IF 段段 ID 段段 EX 段段 MEM 段段 WB 段段 流流水水寄寄存存器器 計算機

7、科學與技術(shù)系計算機科學與技術(shù)系w流水寄存器流水寄存器保證了流水線中不同段的指令不會相互影響。每個時鐘周期結(jié)束之后,該段的所有執(zhí)行結(jié)果都保存在流水段寄存器中,在下一個時鐘周期開始作為下一個段的輸入。 IM Reg ALU DM Reg IF 段段 ID 段段 EX 段段 MEM 段段 WB 段段 流流水水寄寄存存器器 計算機科學與技術(shù)系計算機科學與技術(shù)系w第一種描述(類似于時空圖)5段流水線的兩種描述方式計算機科學與技術(shù)系計算機科學與技術(shù)系流水線的實現(xiàn)必須關(guān)注:w需要確定處理器在每一個時鐘周期都進行什么樣的動作。w要保證在同一個周期沒有兩條指令使用相同的數(shù)據(jù)通路資源。w可以采用流水線方式下簡化的

8、RISC數(shù)據(jù)通路圖來表示:計算機科學與技術(shù)系計算機科學與技術(shù)系第二種描述(按時間錯開的數(shù)據(jù)通路序列)計算機科學與技術(shù)系計算機科學與技術(shù)系 w采用流水線方式實現(xiàn)時,應(yīng)解決好以下幾個問題:要保證不會在同一時鐘周期要求同一個功能段做 兩件不同的工作。例如:不能要求例如:不能要求ALUALU同時做有效地址計算和算術(shù)運算。同時做有效地址計算和算術(shù)運算。避免IF段的訪存(取指令)與MEM段的訪存(讀/寫數(shù)據(jù))發(fā)生沖突。q可以采用分離的指令存儲器和數(shù)據(jù)存儲器;可以采用分離的指令存儲器和數(shù)據(jù)存儲器;q一般采用分離的指令一般采用分離的指令CacheCache和數(shù)據(jù)和數(shù)據(jù)CacheCache。ID段和WB段都要訪

9、問同一寄存器文件。 IDID段:讀段:讀WBWB段:寫段:寫計算機科學與技術(shù)系計算機科學與技術(shù)系寄存器堆在寄存器堆在ID段被讀,在段被讀,在WE段被寫,所以在數(shù)據(jù)通路中出現(xiàn)兩段被寫,所以在數(shù)據(jù)通路中出現(xiàn)兩次次計算機科學與技術(shù)系計算機科學與技術(shù)系對于在一個時鐘周期內(nèi)同一寄存器堆進行操作,在時鐘的前半部對于在一個時鐘周期內(nèi)同一寄存器堆進行操作,在時鐘的前半部分進行寫寄存器的操作,后半部分進行讀寄存器的操作。分進行寫寄存器的操作,后半部分進行讀寄存器的操作。計算機科學與技術(shù)系計算機科學與技術(shù)系如何解決對同一寄存器的訪問沖突? 把寫操作安排在時鐘周期的前半拍完成,把讀操作安排在后半拍完成。邊框畫實線表

10、示操作,畫虛線表示不做任何操作。計算機科學與技術(shù)系計算機科學與技術(shù)系w考慮考慮PCPC的問題的問題流水線為了能夠每個時鐘周期啟動一條新的指令,流水線為了能夠每個時鐘周期啟動一條新的指令,就必須在每個時鐘周期進行就必須在每個時鐘周期進行PCPC值的加值的加4 4操作,并保操作,并保留新的留新的PCPC值。這種操作值。這種操作必須在必須在IFIF段完成,段完成,以便為以便為取下一條指令做好準備。取下一條指令做好準備。 (需設(shè)置一個專門的加法器)(需設(shè)置一個專門的加法器)但分支指令也可能改變但分支指令也可能改變P PC C的值,而且是在的值,而且是在MEMMEM段段進進行,這會導致沖突。行,這會導致

11、沖突。請考慮一下,如何處理分支指令?請考慮一下,如何處理分支指令?計算機科學與技術(shù)系計算機科學與技術(shù)系w相關(guān):兩條指令之間存在某種依賴關(guān)系。 如果兩條指令相關(guān),則它們就有可能不能在流水線中重疊執(zhí)行或者只能部分重疊執(zhí)行。5.4.2.1 相關(guān)與流水線沖突5.4.2 相關(guān)與流水線沖突計算機科學與技術(shù)系計算機科學與技術(shù)系 流水線沖突是指對于具體的流水線來說,由于相關(guān)的存在,使得指令流中的下一條指令不能在指定的時鐘周期執(zhí)行。 流水線沖突有3種類型:q結(jié)構(gòu)沖突:結(jié)構(gòu)沖突:因硬件資源滿足不了指令重疊執(zhí)行的要因硬件資源滿足不了指令重疊執(zhí)行的要 求而發(fā)生的沖突。求而發(fā)生的沖突。q數(shù)據(jù)沖突:數(shù)據(jù)沖突:當指令在流水

12、線中重疊執(zhí)行時,因需要當指令在流水線中重疊執(zhí)行時,因需要 用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。q控制沖突:控制沖突:流水線遇到分支指令和其它會改變流水線遇到分支指令和其它會改變PCPC值值 的指令所引起的沖突。的指令所引起的沖突。流水線沖突計算機科學與技術(shù)系計算機科學與技術(shù)系w導致錯誤的執(zhí)行結(jié)果。w流水線可能會出現(xiàn)停頓,從而降低流水線的效率和實際的加速比。w我們約定 當一條指令被暫停時,在該暫停指令之后流出的所有指令都要被暫停,而在該暫停指令之前流出的指令則繼續(xù)進行(否則就永遠無法消除沖突)。帶來的幾個問題:計算機科學與技術(shù)系計算機科學與技術(shù)系在流水線處理機

13、中,為了能夠使各種組合的指令在流水線處理機中,為了能夠使各種組合的指令 都能順利地重疊執(zhí)行,需要對功能部件進行流水都能順利地重疊執(zhí)行,需要對功能部件進行流水 或重復設(shè)置資源?;蛑貜驮O(shè)置資源。如果某種指令組合因為資源沖突而不能正常執(zhí)如果某種指令組合因為資源沖突而不能正常執(zhí) 行,則稱該處理機有行,則稱該處理機有結(jié)構(gòu)沖突。結(jié)構(gòu)沖突。常見的導致結(jié)構(gòu)常見的導致結(jié)構(gòu)沖突沖突的原因:的原因:q功能部件不是完全流水功能部件不是完全流水q資源份數(shù)不夠資源份數(shù)不夠結(jié)構(gòu)沖突計算機科學與技術(shù)系計算機科學與技術(shù)系結(jié)構(gòu)沖突舉例:訪存沖突訪存沖突 有些流水線處理機只有一個存儲器,將數(shù)據(jù)和指令放在一起,訪存指令會導致訪存沖突

14、。q解決辦法解決辦法:插入暫停周期插入暫停周期 (“流水線氣泡流水線氣泡”或或“氣泡氣泡”) 引入暫停后的時空圖引入暫停后的時空圖q解決方法解決方法: 設(shè)置相互獨立的指令存儲器和數(shù)據(jù)存儲器設(shè)置相互獨立的指令存儲器和數(shù)據(jù)存儲器 或設(shè)置相互獨立的指令或設(shè)置相互獨立的指令CacheCache和數(shù)據(jù)和數(shù)據(jù)CacheCache。計算機科學與技術(shù)系計算機科學與技術(shù)系由于訪問同一個存儲器而引起的結(jié)構(gòu)沖突由于訪問同一個存儲器而引起的結(jié)構(gòu)沖突 訪存沖突返回計算機科學與技術(shù)系計算機科學與技術(shù)系 時間(時鐘周期)時間(時鐘周期) 1 2 3 4 5 6 M Reg ALU M Reg M Reg ALU M Reg

15、 M Reg ALU M Reg 7 8 load 指令指令 i+1 指令指令 i+2 暫暫 停停 M Reg ALU M 指令指令 i+3 氣泡氣泡 氣泡氣泡 氣泡氣泡 氣泡氣泡 氣泡氣泡 為消除結(jié)構(gòu)沖突而插入的流水線氣泡為消除結(jié)構(gòu)沖突而插入的流水線氣泡 計算機科學與技術(shù)系計算機科學與技術(shù)系引入暫停后的時空圖引入暫停后的時空圖指令編號指令編號 時鐘周期時鐘周期 1 12 23 34 45 56 67 78 89 91010指令指令i i IF IF ID ID EX EX MEM MEM WB WB 指令指令i+1 i+1 IF IF ID ID EX EX MEM MEM WB WB 指令

16、指令i+2 i+2 IF IF ID ID EX EX MEM MEM WB WB 指令指令i+3 i+3 stallstall IFIFID ID EX EX MEM MEM WB WB 指令指令i+4 i+4 IFIFID ID EX EX MEM MEM WB WB 指令指令i+5 i+5 IFIFIDIDEX EX MEM MEM 計算機科學與技術(shù)系計算機科學與技術(shù)系w有時流水線設(shè)計者允許結(jié)構(gòu)沖突的存在主要原因:減少硬件成本如果把流水線中的所有功能單元完全流水化,或者重復設(shè)置足夠份數(shù),那么所花費的成本將相當高。 計算機科學與技術(shù)系計算機科學與技術(shù)系w數(shù)據(jù)沖突數(shù)據(jù)沖突 當相關(guān)的指令靠得足

17、夠近時,它們在流水線中當相關(guān)的指令靠得足夠近時,它們在流水線中的的重疊執(zhí)行或者重新排序重疊執(zhí)行或者重新排序會改變指令讀會改變指令讀/寫操作數(shù)寫操作數(shù)的順序,使之不同于它們串行執(zhí)行時的順序,則發(fā)的順序,使之不同于它們串行執(zhí)行時的順序,則發(fā)生了生了數(shù)據(jù)沖突。數(shù)據(jù)沖突。 計算機科學與技術(shù)系計算機科學與技術(shù)系舉例: DADD DADD R1R1,R2R2,R3R3 DSUB R4 DSUB R4,R1R1,R5R5 XOR R6 XOR R6,R1R1,R7R7 AND R8 AND R8,R1R1,R9R9 OR R10 OR R10,R1R1,R11R計算機科學與技術(shù)系計算機科學與技術(shù)系 時間(時

18、鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1, R2, R3 DSUB R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 流水線的數(shù)據(jù)沖突舉例流水線的數(shù)據(jù)沖突舉例 ADD在WB段寫R1,SUB則在ID段讀R1,產(chǎn)生了數(shù)據(jù)相關(guān)。XOR也受到數(shù)據(jù)相關(guān)的影響AND操作由于前半個周期寫寄存器對,后半個周期讀寄存器堆,可以正確執(zhí)行。OR操作也能正確執(zhí)行,此時R1的值已經(jīng)被正確寫人計算機科學與技術(shù)系計算機科學與技術(shù)系根據(jù)

19、指令讀訪問和寫訪問的順序,可以將數(shù)據(jù)沖 突分為3種類型。 考慮考慮兩條指令兩條指令i i和和j j ,且,且i i在在j j之前進入流水線,之前進入流水線,可能發(fā)生的數(shù)據(jù)沖突有:可能發(fā)生的數(shù)據(jù)沖突有:q寫后讀沖突(寫后讀沖突(RAWRAW) 在在 i i 寫入之前,寫入之前,j j 先去讀。先去讀。 j j 讀出的內(nèi)容是錯誤的。讀出的內(nèi)容是錯誤的。 這是最常見的一種數(shù)據(jù)沖突,它對應(yīng)于真數(shù)據(jù)相這是最常見的一種數(shù)據(jù)沖突,它對應(yīng)于真數(shù)據(jù)相關(guān)。關(guān)。 數(shù)據(jù)沖突的三種類型計算機科學與技術(shù)系計算機科學與技術(shù)系q寫后寫沖突(寫后寫沖突(WAWWAW) 在在 i i 寫入之前,寫入之前,j j 先寫。先寫。 最

20、后寫入的結(jié)果是最后寫入的結(jié)果是 i i 的。錯誤!的。錯誤! 這種沖突對應(yīng)于輸出相關(guān)。這種沖突對應(yīng)于輸出相關(guān)。 寫后寫沖突僅發(fā)生在這樣的流水線中:n流水線中不只一個段可以進行寫操作;流水線中不只一個段可以進行寫操作;n指令被重新排序了。指令被重新排序了。 前面介紹的5段流水線不會發(fā)生寫后寫沖突。(只在(只在WBWB段寫寄存器)段寫寄存器) 計算機科學與技術(shù)系計算機科學與技術(shù)系q讀后寫沖突(讀后寫沖突(WARWAR) 在在 i i 讀之前,讀之前,j j 先寫。先寫。 i i 讀出的內(nèi)容是錯誤的!讀出的內(nèi)容是錯誤的! 由反相關(guān)引起。由反相關(guān)引起。 這種沖突僅發(fā)生在這樣的情況下:n有些指令的寫結(jié)果

21、操作提前了,而且有些指令有些指令的寫結(jié)果操作提前了,而且有些指令 的讀操作滯后了;的讀操作滯后了;n指令被重新排序了。指令被重新排序了。 計算機科學與技術(shù)系計算機科學與技術(shù)系w通過通過定向技術(shù)定向技術(shù)減少數(shù)據(jù)沖突引起的停頓減少數(shù)據(jù)沖突引起的停頓 (定向技術(shù)也稱為旁路或短路)(定向技術(shù)也稱為旁路或短路)關(guān)鍵思想:關(guān)鍵思想:在計算結(jié)果尚未出來之前,后面等待在計算結(jié)果尚未出來之前,后面等待使用該結(jié)果的指令并不真正立即需要該計算結(jié)果,使用該結(jié)果的指令并不真正立即需要該計算結(jié)果,如果能夠?qū)⒃撚嬎憬Y(jié)果從其產(chǎn)生的地方直接送到如果能夠?qū)⒃撚嬎憬Y(jié)果從其產(chǎn)生的地方直接送到其它指令需要它的地方,那么就可以避免停頓。

22、其它指令需要它的地方,那么就可以避免停頓。采用定向技術(shù)消除上例中的相關(guān)采用定向技術(shù)消除上例中的相關(guān)DSUB操作是在操作是在DADD操作產(chǎn)生了結(jié)果之后才使操作產(chǎn)生了結(jié)果之后才使用該結(jié)果的,考慮將用該結(jié)果的,考慮將DADD的結(jié)果從的結(jié)果從EX/MEM寄寄存器移到存器移到DSUB需要的地方,也就是需要的地方,也就是ALU的輸入的輸入鎖存器,則不需要引入停頓。鎖存器,則不需要引入停頓。計算機科學與技術(shù)系計算機科學與技術(shù)系 時間(時鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1,R

23、2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 采用定向技術(shù)后的流水線數(shù)據(jù)通路采用定向技術(shù)后的流水線數(shù)據(jù)通路 計算機科學與技術(shù)系計算機科學與技術(shù)系工作過程演示計算機科學與技術(shù)系計算機科學與技術(shù)系w定向的實現(xiàn)EX段和MEM段之間的流水寄存器中保存的ALU運算結(jié)果總是回送到ALU的入口。當定向硬件檢測到前一個ALU運算結(jié)果寫入的寄存器就是當前ALU操作的源寄存器時,那么控制邏輯就選擇定向的數(shù)據(jù)作為ALU的輸入,而不采用從通用寄存器組讀出的數(shù)據(jù)。1. 在使用直通時,如果DSUB操作被停頓,那么DADD操作將被完整執(zhí)行

24、,沒有必要激活旁路。當兩個操作之間有一個中斷也是如此。 計算機科學與技術(shù)系計算機科學與技術(shù)系直通的實現(xiàn)w直通思想可以一般化:可以將結(jié)果直接送到需要它的單元,并不限制在同一個單元的輸出到輸入。計算機科學與技術(shù)系計算機科學與技術(shù)系并不是所有的數(shù)據(jù)沖突都可以用定向技術(shù)來解決。 舉例: LD LD R1R1,0 0(R2R2)DADD R4DADD R4,R1R1,R5R5AND R6AND R6,R1R1,R7R7XOR R8XOR R8,R1R1,R9R9增加流水線互鎖機制,插入“暫停”。 作用:檢測發(fā)現(xiàn)數(shù)據(jù)沖突,并使流水線停頓,直至沖突消失。 舉例:演示A(資源圖表示) 演示B(時空圖表示)需要

25、停頓的數(shù)據(jù)沖突計算機科學與技術(shù)系計算機科學與技術(shù)系 時間(時鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 無法將無法將LDLD指令的結(jié)果定向到指令的結(jié)果定向到DADDDADD指令指令 采用定向無法解決返回返回計算機科學與技術(shù)系計算機科學與技術(shù)系w依靠編譯器解決數(shù)據(jù)沖突 讓編譯器重新組織指令順序來消除沖突,這種技術(shù)稱為指令調(diào)度或流水線調(diào)度。計算機科學與技術(shù)系計算機科學與技術(shù)系調(diào)度前的代

26、碼調(diào)度前的代碼 調(diào)度后的代碼調(diào)度后的代碼 LD RbLD Rb,B BLD RcLD Rc,C CDADD RaDADD Ra,RbRb,Rc Rc SD RaSD Ra,A ALD ReLD Re,E ELD RfLD Rf,F(xiàn) FDSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D LD RbLD Rb,B BLD RcLD Rc,C CLD ReLD Re,E E DADD RaDADD Ra,RbRb,RcRcLD RfLD Rf,F(xiàn) FSD RaSD Ra,A A DSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D p舉例:舉例: 請

27、為下列表達式生成沒有暫停的指令序列請為下列表達式生成沒有暫停的指令序列: : ABC ; DEF ; 假設(shè)載入延遲為假設(shè)載入延遲為1 1個個時鐘周期。時鐘周期。 題解題解計算機科學與技術(shù)系計算機科學與技術(shù)系w控制沖突 執(zhí)行分支指令的結(jié)果有兩種q分支成功:分支成功:PCPC值改變?yōu)榉种мD(zhuǎn)移的目標地址。值改變?yōu)榉种мD(zhuǎn)移的目標地址。 在條件判定和轉(zhuǎn)移地址計算都完成后,才改變在條件判定和轉(zhuǎn)移地址計算都完成后,才改變PCPC值。值。q不成功或者失?。翰怀晒蛘呤。篜CPC的值保持正常遞增,的值保持正常遞增, 指向順序的下一條指令。指向順序的下一條指令。處理分支指令最簡單的方法:“凍結(jié)凍結(jié)”或者或者“排

28、空排空”流水線流水線 優(yōu)點:優(yōu)點:簡單簡單p前述前述5 5段流水線中,改變段流水線中,改變PCPC值是在值是在MEMMEM段進行的。段進行的。 給流水線帶來了給流水線帶來了3 3個時鐘周期的延遲個時鐘周期的延遲控制沖突計算機科學與技術(shù)系計算機科學與技術(shù)系分支指令分支指令 IF IF ID ID EX EX MEM MEM WBWB 分支目標分支目標指令指令 IFIF stallstall stallstall IFIF ID ID EX EX MEM MEM WB WB 分支目標分支目標指令指令+1 +1 IF IF ID ID EX EX MEMMEM WB WB 分支目標分支目標指令指令+

29、2 +2 IF IF ID ID EX EX MEMMEM 分支目標分支目標指令指令+3 +3 IF IF ID ID EX EX 簡單處理分支指令:分支成功的情況簡單處理分支指令:分支成功的情況 計算機科學與技術(shù)系計算機科學與技術(shù)系把由分支指令引起的延遲稱為分支延遲。分支指令在目標代碼中出現(xiàn)的頻度q每每3 34 4條指令就有一條是分支指令。條指令就有一條是分支指令。 假設(shè):假設(shè):分支指令出現(xiàn)的頻度是分支指令出現(xiàn)的頻度是3030 流水線理想流水線理想 CPICPI1 1 那么:那么:流水線的實際流水線的實際 CPI CPI 1.91.9可采取兩種措施來減少分支延遲。q在流水線中盡早判斷出分支轉(zhuǎn)

30、移是否成功;在流水線中盡早判斷出分支轉(zhuǎn)移是否成功;q盡早計算出分支目標地址。盡早計算出分支目標地址。計算機科學與技術(shù)系計算機科學與技術(shù)系下面的討論中,我們假設(shè): 這兩步工作被提前到ID段完成,即分支指令是在ID段的末尾執(zhí)行完成,所帶來的分支延遲為一個時鐘周期。 計算機科學與技術(shù)系計算機科學與技術(shù)系3種通過軟件(編譯器)來減少分支延遲的方法 共同點:n對分支的處理方法在程序的執(zhí)行過程中始終是對分支的處理方法在程序的執(zhí)行過程中始終是 不變的,是不變的,是靜態(tài)靜態(tài)的。(在整個程序的執(zhí)行過程中對的。(在整個程序的執(zhí)行過程中對每個轉(zhuǎn)移的處理都是一樣的)每個轉(zhuǎn)移的處理都是一樣的)n要么總是預測分支成功,要

31、么總是預測分支失敗。要么總是預測分支成功,要么總是預測分支失敗。q預測分支失敗預測分支失敗 n允許分支指令后的指令繼續(xù)在流水線中流動,就允許分支指令后的指令繼續(xù)在流水線中流動,就 好象什么都沒發(fā)生似的;好象什么都沒發(fā)生似的;n若確定分支失敗,將分支指令看作是一條普通指若確定分支失敗,將分支指令看作是一條普通指 令,流水線正常流動;令,流水線正常流動;計算機科學與技術(shù)系計算機科學與技術(shù)系n若確定分支成功,流水線就把在分支指令之后若確定分支成功,流水線就把在分支指令之后 取出的所有指令轉(zhuǎn)化為空操作,并按分支目地取出的所有指令轉(zhuǎn)化為空操作,并按分支目地 重新取指令執(zhí)行。重新取指令執(zhí)行。要保證:要保證

32、:分支結(jié)果出來之前不能改變處理機的狀態(tài),以分支結(jié)果出來之前不能改變處理機的狀態(tài),以 便一旦猜錯時,處理機能夠回退到原先的狀態(tài)。便一旦猜錯時,處理機能夠回退到原先的狀態(tài)。流水線的處理過程流水線的處理過程計算機科學與技術(shù)系計算機科學與技術(shù)系轉(zhuǎn)移不成功和轉(zhuǎn)移成功兩種情況下的流水線序列計算機科學與技術(shù)系計算機科學與技術(shù)系q預測分支成功:預測分支成功:假設(shè)分支轉(zhuǎn)移成功,并從分支目假設(shè)分支轉(zhuǎn)移成功,并從分支目標地址處取指令執(zhí)行。標地址處取指令執(zhí)行。q起作用的前題:起作用的前題:先知道分支目標地址,后知道分先知道分支目標地址,后知道分支是否成功。支是否成功。q前述前述5 5段流水線中,這種方法沒有任何好處。

33、段流水線中,這種方法沒有任何好處。q無論采用預測不成功還是預測成功,編譯器都能無論采用預測不成功還是預測成功,編譯器都能通過組織代碼來實現(xiàn)與硬件的最佳匹配。通過組織代碼來實現(xiàn)與硬件的最佳匹配。計算機科學與技術(shù)系計算機科學與技術(shù)系 不論采用剛才說的哪種策略,編譯器都能通過組織代碼來實現(xiàn)與硬件的最佳匹配。q延遲分支延遲分支主要思想:主要思想: 從邏輯上從邏輯上“延長延長”分支指令的執(zhí)行時間。分支指令的執(zhí)行時間。把延遲分支看成是由原來的分支指令和若干把延遲分支看成是由原來的分支指令和若干個延遲槽構(gòu)成,不管分支是否成功,都要按個延遲槽構(gòu)成,不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。順序執(zhí)行延遲槽

34、中的指令。計算機科學與技術(shù)系計算機科學與技術(shù)系w有些處理器中也稱為延遲轉(zhuǎn)移延遲轉(zhuǎn)移,在早期的RISC處理器中被廣泛使用。w在被延遲的轉(zhuǎn)移中,轉(zhuǎn)移延遲為1的執(zhí)行周期如下:轉(zhuǎn)移指令轉(zhuǎn)移指令后續(xù)指令后續(xù)指令1(放在延遲槽內(nèi))(放在延遲槽內(nèi))目標地址的指令(如果轉(zhuǎn)移被選中)目標地址的指令(如果轉(zhuǎn)移被選中) w執(zhí)行過程w雖然延遲槽的長度可以大于1,實際上,所有帶轉(zhuǎn)移延遲的處理器一般只延遲一條指令,并使用其它技術(shù)來處理更多有關(guān)延遲的開銷計算機科學與技術(shù)系計算機科學與技術(shù)系任務(wù):在延遲槽中放入有用的指令由編譯器完成。能否帶來好處取決于編譯器能否把有用的指令調(diào)度到延遲槽中。三種調(diào)度方法: 解決究竟將什么指令裝

35、入延遲槽?從前調(diào)度(將轉(zhuǎn)移指令之前的指令裝入延遲槽)從目標處調(diào)度(將轉(zhuǎn)移目標地址處的指令裝入延遲槽)從失敗處調(diào)度(將延遲槽后的指令裝入延遲槽)分支延遲指令的調(diào)度計算機科學與技術(shù)系計算機科學與技術(shù)系從前面調(diào)度來自前面:將分支指令之前的一條獨立指令調(diào)度到延遲槽計算機科學與技術(shù)系計算機科學與技術(shù)系具有一個分支延遲槽的流水線的執(zhí)行過程分分支支失失敗敗 分支指令分支指令i i IF IF ID ID EX EX MEM MEM WBWB延遲槽指令延遲槽指令 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+1 i+1 IF IF ID ID EX EX MEM MEM WBWB指

36、令指令 i+2 i+2 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+3 i+3 IF IF ID ID EX EX MEMMEMWBWB分支延遲槽中的指令分支延遲槽中的指令“掩蓋掩蓋”了流水線原來必需插入的暫停周期。了流水線原來必需插入的暫停周期。分分支支成成功功 分支指令分支指令i i IF IF ID ID EX EX MEMMEMWBWB 延遲槽指令延遲槽指令 IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j j IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j+1 j+1 IF IF ID I

37、D EX EX MEMMEMWBWB分支目標指令分支目標指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB計算機科學與技術(shù)系計算機科學與技術(shù)系從目標處調(diào)度n來自目標地址:將目標來自目標地址:將目標處的指令拷貝到延遲槽同處的指令拷貝到延遲槽同時修改分支指令的目標地時修改分支指令的目標地址。由于從別的路徑可能址。由于從別的路徑可能也要執(zhí)行到該指令,所以也要執(zhí)行到該指令,所以不能簡單的移指令,而是不能簡單的移指令,而是復制。采用這種方法實際復制。采用這種方法實際上是猜測分支成功,所以上是猜測分支成功,所以對于循環(huán)等分支轉(zhuǎn)移成功對于循環(huán)等分支轉(zhuǎn)移成功概率較高的采用此方法較概率較高

38、的采用此方法較好好計算機科學與技術(shù)系計算機科學與技術(shù)系分分支支不不跳跳轉(zhuǎn)轉(zhuǎn)分支指令分支指令i i IF IF ID ID EX EX MEM MEM WBWB延遲槽指令延遲槽指令I(lǐng)F IF idleidle idle idle idle idle idleidle指令指令 i+1 i+1 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+2 i+2 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+3 i+3 IF IF ID ID EX EX MEMMEMWBWB分分支支跳跳轉(zhuǎn)轉(zhuǎn) 分支指令分支指令i i IF IF ID ID EX EX MEMM

39、EMWBWB 延遲槽指令延遲槽指令 IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j +1j +1IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令jj+2jj+2IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j+3j+3IF IF ID ID EX EX MEMMEMWBWB預測分支成功的情況下,分支取消機制的執(zhí)行情況預測分支成功的情況下,分支取消機制的執(zhí)行情況 計算機科學與技術(shù)系計算機科學與技術(shù)系從失敗處調(diào)度w將延遲槽后的指令裝入延遲槽。計算機科學與技術(shù)系計算機科學與技術(shù)系分分支支不不跳跳轉(zhuǎn)轉(zhuǎn)

40、分支指令分支指令i i IF IF ID ID EX EX MEM MEM WBWB延遲槽指令延遲槽指令 i+1i+1 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+2 i+2 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+3 i+3 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+4 i+4 IF IF ID ID EX EX MEMMEMWBWB分分支支跳跳轉(zhuǎn)轉(zhuǎn)分支指令分支指令i i IF IF ID ID EX EX MEMMEMWBWB 延遲槽指令延遲槽指令 i+1i+1 IF IF idleidle idle

41、idle idle idle idleidle分支目標指令分支目標指令j j IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j+1 j+1 IF IF ID ID EX EX MEMMEMWBWB分支目標指令分支目標指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB預測分支不轉(zhuǎn)移的情況下,分支取消機制的執(zhí)行情況預測分支不轉(zhuǎn)移的情況下,分支取消機制的執(zhí)行情況 從失敗處調(diào)度從失敗處調(diào)度計算機科學與技術(shù)系計算機科學與技術(shù)系調(diào)度前和調(diào)度后的代碼計算機科學與技術(shù)系計算機科學與技術(shù)系三種方法的要求及效果調(diào) 度 策 略對調(diào)度的要求什么情況下起作用?從從

42、 前前 調(diào)調(diào) 度度從目標處調(diào)度從目標處調(diào)度從失敗處調(diào)度從失敗處調(diào)度必須保證在分支失敗時執(zhí)行被調(diào)度必須保證在分支失敗時執(zhí)行被調(diào)度的指令不會導致錯誤。有可能需要的指令不會導致錯誤。有可能需要復制指令。復制指令。被調(diào)度的指令必須與分支無關(guān)被調(diào)度的指令必須與分支無關(guān)必須保證在分支成功時執(zhí)行被調(diào)度必須保證在分支成功時執(zhí)行被調(diào)度的指令不會導致錯誤。的指令不會導致錯誤。任何情況任何情況 分支成功時分支成功時( (但由于復制指令,有但由于復制指令,有可能會增大程序空間可能會增大程序空間) )分支失敗時分支失敗時計算機科學與技術(shù)系計算機科學與技術(shù)系分支延遲受到兩個方面的限制:q可以被放入延遲槽中的指令要滿足一定

43、的條件;可以被放入延遲槽中的指令要滿足一定的條件;q編譯器預測分支轉(zhuǎn)移方向的能力。編譯器預測分支轉(zhuǎn)移方向的能力。進一步改進:分支取消機制(取消分支) 當分支的實際執(zhí)行方向和事先所預測的一樣時,當分支的實際執(zhí)行方向和事先所預測的一樣時,執(zhí)行分支延遲槽中的指令,否則就將分支延遲槽中的執(zhí)行分支延遲槽中的指令,否則就將分支延遲槽中的指令轉(zhuǎn)化成一個空操作。此時,轉(zhuǎn)移指令帶有對轉(zhuǎn)移指令轉(zhuǎn)化成一個空操作。此時,轉(zhuǎn)移指令帶有對轉(zhuǎn)移能否被選中的預測。預測準確時,延遲槽中的指令像能否被選中的預測。預測準確時,延遲槽中的指令像通常一樣執(zhí)行,否則就將延遲槽中的指令變成空操作。通常一樣執(zhí)行,否則就將延遲槽中的指令變成空

44、操作。5.5 流水線的實現(xiàn)流水線的實現(xiàn)5.5.1 MIPS的一種簡單實現(xiàn)的一種簡單實現(xiàn)5.5.2 基本的基本的MIPS流水線流水線計算機科學與技術(shù)系計算機科學與技術(shù)系w實現(xiàn)MIPS指令子集的一種簡單數(shù)據(jù)通路。該數(shù)據(jù)通路的操作分成5個時鐘周期q取指令取指令q指令譯碼指令譯碼/讀寄存器讀寄存器q執(zhí)行執(zhí)行/有效地址計算有效地址計算q存儲器訪問存儲器訪問/分支完成分支完成q寫回寫回 只討論整數(shù)指令整數(shù)指令的實現(xiàn)(包括:(包括:loadload和和storestore,等于,等于0 0轉(zhuǎn)轉(zhuǎn)移,整數(shù)移,整數(shù)ALUALU指令等。)指令等。) 5.5.1 MIPS的一種簡單實現(xiàn)5.5 流水線的實現(xiàn)計算機科學與

45、技術(shù)系計算機科學與技術(shù)系計算機科學與技術(shù)系計算機科學與技術(shù)系設(shè)置了一些臨時寄存器。其作用如下:qPC:程序計數(shù)器,存放當前指令的地址。:程序計數(shù)器,存放當前指令的地址。qNPC:下一條程序計數(shù)器,存放下一條指令的地址。:下一條程序計數(shù)器,存放下一條指令的地址。qIR:指令寄存器,存放當前正在處理的指令。:指令寄存器,存放當前正在處理的指令。qA:第一操作數(shù)寄存器,存放從通用寄存器組讀出來:第一操作數(shù)寄存器,存放從通用寄存器組讀出來的操作數(shù)。的操作數(shù)。qB:第二操作數(shù)寄存器,存放從通用寄存器組讀出來:第二操作數(shù)寄存器,存放從通用寄存器組讀出來的另一個操作數(shù)。的另一個操作數(shù)。qImm:存放符號擴展

46、后的立即數(shù)操作數(shù)。:存放符號擴展后的立即數(shù)操作數(shù)。qCond:存放條件判定的結(jié)果。為:存放條件判定的結(jié)果。為“真真”表示分支成功。表示分支成功。qALUo:存放:存放ALU的運算結(jié)果。的運算結(jié)果。qLMD:存放:存放load指令從存儲器讀出的數(shù)據(jù)。指令從存儲器讀出的數(shù)據(jù)。臨時寄存器的作用計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)w尋址方式編碼到操作碼中w所有的指令都是32位的w操作碼占6位w3種指令格式 3種格式中,同名字段的位置固定不變。種格式中,同名字段的位置固定不變。 MIPS的指令格式計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)rt rs 立立即即數(shù)數(shù)(imm

47、ediate) 操操作作碼碼 6 5 5 16 0 5 6 10 11 15 16 31 I類指令q包括所有的包括所有的loadload和和storestore指令,立即數(shù)指令,分支指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。q立即數(shù)字段為立即數(shù)字段為1616位,用于提供立即數(shù)或偏移量。位,用于提供立即數(shù)或偏移量。計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)qloadload指令指令 訪存有效地址:訪存有效地址:RegsrsRegsrsimmediateimmediate 從存儲器取來的數(shù)據(jù)放入寄存器從存儲器取來的數(shù)據(jù)放

48、入寄存器rtrtqstorestore指令指令 訪存有效地址:訪存有效地址:RegsrsRegsrsimmediateimmediate 要存入存儲器的數(shù)據(jù)放在寄存器要存入存儲器的數(shù)據(jù)放在寄存器rtrt中中q立即數(shù)指令立即數(shù)指令 Regsrt Regsrs op immediateRegsrt Regsrs op immediateq分支指令分支指令 轉(zhuǎn)移目標地址轉(zhuǎn)移目標地址 (PC)(PC)immediateimmediateq寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標地址為轉(zhuǎn)移目標地址為RegsrsR計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)R類指令q

49、包括包括ALUALU指令,專用寄存器讀指令,專用寄存器讀/ /寫指令,寫指令,movemove指令等。指令等。qALUALU指令指令 Regsrd Regsrs funct RegsrtRegsrd Regsrs funct Regsrt funct funct為具體的運算操作編碼為具體的運算操作編碼操操作作碼碼 rs 6 5 5 6 rt 5 rd funct 0 5 6 10 11 15 16 31 20 21 sham25 26 5 計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)J類指令q包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異

50、常返回指令。指令。q在這類指令中,指令字的低在這類指令中,指令字的低2626位是偏移量,它與位是偏移量,它與PCPC值相值相加形成跳轉(zhuǎn)的地址。加形成跳轉(zhuǎn)的地址。26 操作碼操作碼 6 與與 PC 相加的偏移量相加的偏移量 31 0 5 6 計算機科學與技術(shù)系計算機科學與技術(shù)系w一條MIPS指令最多需要以下5個時鐘周期:取指令周期(IF) 操作pIRIRMemPCMemPCpNPCNPCPC+4PC+4指令譯碼/讀寄存器周期(ID) 操作qA A RegsrsRegsrsqB B RegsrtRegsrtImm IR的立即數(shù)字段進行符號擴展 指令的譯碼操作指令的譯碼操作和和讀寄存器操作讀寄存器操

51、作是并行進行的。是并行進行的。 原因:在原因:在MIPSMIPS指令格式中,操作碼字段以及指令格式中,操作碼字段以及rsrs、rtrt 字段都是在固定的位置。這種技術(shù)稱為字段都是在固定的位置。這種技術(shù)稱為固定字段譯碼固定字段譯碼技術(shù)技術(shù)。 由于指令的立即數(shù)部分在由于指令的立即數(shù)部分在MIPS格式中都有相同的位置,格式中都有相同的位置,所以要是下一個時鐘周期需要使用立即數(shù),帶符號立即所以要是下一個時鐘周期需要使用立即數(shù),帶符號立即數(shù)的符號擴展操作也在當前時鐘周期完成。數(shù)的符號擴展操作也在當前時鐘周期完成。計算機科學與技術(shù)系計算機科學與技術(shù)系執(zhí)行/有效地址計算周期(EX) 不同指令所進行的操作不同

52、:qloadload指令和指令和storestore指令指令 操作操作 ALUoALUoA + ImmA + Immq寄存器寄存器寄存器寄存器ALUALU指令指令 操作操作 ALUoALUoA funct BA funct Bq寄存器立即值寄存器立即值A(chǔ)LUALU指令指令 操作操作 ALUoALUoA op ImmA op Immq分支指令分支指令 操作操作 ALUoALUoNPC+NPC+(Imm2Imm2);); condcond(A = = 0A = = 0)計算機科學與技術(shù)系計算機科學與技術(shù)系 將有效地址計算周期和執(zhí)行周期合并為一個時將有效地址計算周期和執(zhí)行周期合并為一個時鐘周期,這是

53、因為鐘周期,這是因為MIPSMIPS指令集采用指令集采用loadloadstorestore結(jié)結(jié)構(gòu),沒有任何指令需要同時進行數(shù)據(jù)有效地址的計構(gòu),沒有任何指令需要同時進行數(shù)據(jù)有效地址的計算、轉(zhuǎn)移目標地址的計算和對數(shù)據(jù)進行運算。算、轉(zhuǎn)移目標地址的計算和對數(shù)據(jù)進行運算。存儲器訪問/分支完成周期(MEM)q所有指令都要在該周期對所有指令都要在該周期對PCPC進行更新。進行更新。 除了分支指令,其它指令都是做:除了分支指令,其它指令都是做:PCPCNPCNPCq在該周期內(nèi)處理的在該周期內(nèi)處理的MIPSMIPS指令僅僅有指令僅僅有l(wèi)oadload、storestore和分和分支支三種指令。三種指令。計算機

54、科學與技術(shù)系計算機科學與技術(shù)系qloadload指令和指令和storestore指令指令 操作操作 LMD LMDMemALUo MemALUo 或者或者 MemALUoMemALUoB Bq分支指令分支指令 操作操作 if if (condcond) PC PC ALUo else PCALUo else PCNPCNPC寫回周期(WB)不同的指令在寫回周期完成的工作也不一樣。不同的指令在寫回周期完成的工作也不一樣。q寄存器寄存器寄存器寄存器ALUALU指令指令 操作操作 RegsrdRegsrd ALUo ALUoq寄存器立即數(shù)寄存器立即數(shù)ALUALU指令指令 操作操作 RegsrtReg

55、srt ALUo ALUoqloadload指令指令 操作操作 RegsrtRegsrt LMD LMD計算機科學與技術(shù)系計算機科學與技術(shù)系MIPS的數(shù)據(jù)通路的實現(xiàn)計算機科學與技術(shù)系計算機科學與技術(shù)系每一個時鐘周期完成的工作看作是流水線的一段,每個時鐘周期啟動一條新的指令,就可以使前面的數(shù)據(jù)通路流水。w流水實現(xiàn)的數(shù)據(jù)通路設(shè)置了流水寄存器 所有用于在同一條指令的各個時鐘周期之間保存臨時數(shù)據(jù)的寄存器都要歸入流水寄存器這一類中q段與段之間設(shè)置流水寄存器段與段之間設(shè)置流水寄存器q流水寄存器的名稱流水寄存器的名稱 用其相鄰的兩個段的名稱拼合而成。用其相鄰的兩個段的名稱拼合而成。 例如:例如:IDID段段

56、與與EXEX段段之間的流水寄存器用之間的流水寄存器用ID/EXID/EX表示表示q每個流水寄存器是由若干個寄存器構(gòu)成的每個流水寄存器是由若干個寄存器構(gòu)成的 5.5.2 基本的MIPS流水線計算機科學與技術(shù)系計算機科學與技術(shù)系 MEM/WB 數(shù)據(jù) 存儲器 通用寄存器組 符號 位 擴展 ALU PC =0? ADD 16 32 4 存儲器 分之 結(jié)果 M U X 1 M U X 2 M U X 3 M U X 4 IR A B Imm IRrs IRrt MEM/WB.IR NPC NPC IR cond ALUo B IR LMD ALUo IR EX/MEM ID/EX IF/ID 指令 流水

57、實現(xiàn)的數(shù)據(jù)通路流水實現(xiàn)的數(shù)據(jù)通路計算機科學與技術(shù)系計算機科學與技術(shù)系w寄存器的命名形式為:x.yw所包含的字段的命名形式為:x.ys 其中:x:流水寄存器名稱 y:具體寄存器名稱 s:字段名稱 例如: ID/EX.IR:流水寄存器ID/EX中的子寄存器IR IRID/EX.IRop:該寄存器的op字段(即操作碼字段)w流水寄存器的作用 將各段的工作隔開,使得它們不會互相干擾。保存相應(yīng)段的處理結(jié)果。計算機科學與技術(shù)系計算機科學與技術(shù)系w屬于IF/ID部分的指令寄存器IR的各個字段,在用于提供寄存器名時就將其標記。qIRrsIRrsIRIR6.106.10qIRrtIRrtIRIR11.1511.

58、15qIRrdIRrdIRIR16.2016.20w流水線寄存器在兩個相鄰的流水段之間既傳遞數(shù)據(jù)也傳遞控制信息。后面流水段需要的數(shù)據(jù),必須能從一個流水寄存器復制到下一個流水寄存器,直到不再需要為止。w所以流水寄存器與非流水通路中使用的臨時寄存器不一樣。計算機科學與技術(shù)系計算機科學與技術(shù)系例如:EX/MEM.ALUo:保存EX段ALU的運算結(jié)果MEM/WB.LMD:保存MEM段從數(shù)據(jù)存儲器讀出的數(shù)據(jù)q向后傳遞后面將要用到的數(shù)據(jù)或者控制信息向后傳遞后面將要用到的數(shù)據(jù)或者控制信息 所有有用的數(shù)據(jù)和控制信息每個時鐘周期 會隨著指令在流水線中的流動往后流動一段。w 增加了向后傳遞IR和從MEM/WB.I

59、R回送到通用寄存 器組的連接。w 將對PC的修改移到了IF段,以便PC能及時地加 4,為取下一條指令做好準備。 計算機科學與技術(shù)系計算機科學與技術(shù)系 MEM/WB 數(shù)據(jù) 存儲器 通用寄存器組 符號 位 擴展 ALU PC =0? ADD 16 32 4 存儲器 分支 結(jié)果 M U X 1 M U X 2 M U X 3 M U X 4 IR A B Imm IRrs IRrt MEM/WB.IR NPC NPC IR cond ALUo B IR LMD ALUo IR EX/MEM ID/EX IF/ID 指令 流水實現(xiàn)的數(shù)據(jù)通路流水實現(xiàn)的數(shù)據(jù)通路計算機科學與技術(shù)系計算機科學與技術(shù)系w流水線

60、的控制主要是如何控制四個多路選擇器。qMUX2(根據(jù)指令類型是否是轉(zhuǎn)移操作來設(shè)定根據(jù)指令類型是否是轉(zhuǎn)移操作來設(shè)定)if (ID/EX.IRop=“分支指令分支指令”) MUX2_outputID/EX.NPC ;else MUX2_outputID/EX.A; /MUX2_output表示表示MUX2的輸出的輸出qMUX3(根據(jù)指令類型是(根據(jù)指令類型是R-R的的ALU操作還是其他指令來操作還是其他指令來設(shè)定)設(shè)定)if (ID/EX.IRop=“寄存器寄存器型寄存器寄存器型ALU指令指令”) MUX3_outputID/EX.B ;else MUX3_outputID/EX.Imm; /MUX3_output表示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論