版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rè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)與流水線的沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系介紹一條經(jīng)典的5段RISC流水線 首先討論在非流水情況下是如何實(shí)現(xiàn)的w一條指令的執(zhí)行過程分為以下5個(gè)周期:取指令周期(IF)q以程序計(jì)數(shù)器以程序計(jì)數(shù)器PC中的內(nèi)容作為地址,從存儲(chǔ)器中取中的內(nèi)容作為地址,從存儲(chǔ)器中取出指令并放入指令寄存器出指令并放入指令寄存器IR;q同時(shí)同時(shí)PC值加值加4(假設(shè)每條指令占(假設(shè)每條指令占4個(gè)字節(jié)),指向順個(gè)字節(jié)),指向順序的下一條指令。序的下一條指令。5.4 流水線的相關(guān)與沖突5.4.1
2、 一條經(jīng)典的5段流水線計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系指令譯碼/讀寄存器周期(ID) 對指令進(jìn)行譯碼,并讀出寄存器的內(nèi)容。用對指令進(jìn)行譯碼,并讀出寄存器的內(nèi)容。用IR中的寄中的寄存器地址去訪問通用寄存器組,讀出所需的操作數(shù)。由于存器地址去訪問通用寄存器組,讀出所需的操作數(shù)。由于指令的立即數(shù)部分也保存在相同的位置,需要擴(kuò)展立即數(shù)指令的立即數(shù)部分也保存在相同的位置,需要擴(kuò)展立即數(shù)的操作也在本段完成。的操作也在本段完成。 執(zhí)行/有效地址計(jì)算周期(EX) 不同指令所進(jìn)行的操作不同:qload和和store指令指令:ALU把指令中所指定的寄存器的內(nèi)容與把指令中所指定的寄存器的內(nèi)容與偏移量相加,形成訪
3、存有效地址。偏移量相加,形成訪存有效地址。q寄存器寄存器寄存器寄存器ALU指令指令:ALU按照操作碼指定的操作按照操作碼指定的操作對從通用寄存器組中讀出的數(shù)據(jù)進(jìn)行運(yùn)算。對從通用寄存器組中讀出的數(shù)據(jù)進(jìn)行運(yùn)算。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系q寄存器立即數(shù)寄存器立即數(shù)ALU指令指令:ALU按照操作碼指定的操作按照操作碼指定的操作對從通用寄存器組中讀出的操作數(shù)和指令中給出的立即對從通用寄存器組中讀出的操作數(shù)和指令中給出的立即數(shù)進(jìn)行運(yùn)算。數(shù)進(jìn)行運(yùn)算。q分支指令分支指令:ALU把指令中給出的偏移量與把指令中給出的偏移量與PC值相加,形值相加,形成轉(zhuǎn)移目標(biāo)的地址。同時(shí),對在前一個(gè)周期讀出的操作成轉(zhuǎn)移目
4、標(biāo)的地址。同時(shí),對在前一個(gè)周期讀出的操作數(shù)進(jìn)行判斷,確定分支是否成功。數(shù)進(jìn)行判斷,確定分支是否成功。存儲(chǔ)器訪問分支完成周期(MEM) 該周期處理的指令只有l(wèi)oad、store和分支指令。 其它類型的指令在此周期不做任何操作。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系qloadload和和storestore指令指令loadload指令:指令:用上一個(gè)周期計(jì)算出的有效地址從存儲(chǔ)器中用上一個(gè)周期計(jì)算出的有效地址從存儲(chǔ)器中 讀出相應(yīng)的數(shù)據(jù);讀出相應(yīng)的數(shù)據(jù);storestore指令:指令:把指定的數(shù)據(jù)寫入這個(gè)有效地址所指出的存把指定的數(shù)據(jù)寫入這個(gè)有效地址所指出的存 儲(chǔ)器單元。儲(chǔ)器單元。q分支指令分支指令 分
5、支分支“成功成功”,就把轉(zhuǎn)移目標(biāo)地址送入,就把轉(zhuǎn)移目標(biāo)地址送入PCPC。 分支指令執(zhí)行完成。分支指令執(zhí)行完成。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系寫回周期(WB) ALU運(yùn)算指令和load指令在這個(gè)周期把結(jié)果數(shù)據(jù)寫入通用寄存器組。 ALUALU運(yùn)算指令:運(yùn)算指令:結(jié)果數(shù)據(jù)來自結(jié)果數(shù)據(jù)來自ALUALU。 loadload指令:指令:結(jié)果數(shù)據(jù)來自存儲(chǔ)器。結(jié)果數(shù)據(jù)來自存儲(chǔ)器。 在這個(gè)實(shí)現(xiàn)方案中:p分支指令需要分支指令需要4 4個(gè)時(shí)鐘個(gè)時(shí)鐘周期(如果把分支指令的執(zhí)行周期(如果把分支指令的執(zhí)行 提前到提前到IDID周期,則只需要周期,則只需要2 2個(gè)個(gè)周期);周期);pstorestore指令需要指令需
6、要4 4個(gè)個(gè)周期;周期;p其它指令需要其它指令需要5 5個(gè)個(gè)周期才能完成。周期才能完成。w在更先進(jìn)的實(shí)現(xiàn)中,在ID段完成對寄存器的內(nèi)容進(jìn)行比較,判斷是否為轉(zhuǎn)移指令,若為真,將PC與帶符號(hào)的位移量相加,生成的轉(zhuǎn)移目標(biāo)地址寫人PC,在ID段完成對轉(zhuǎn)移的處理。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w將上述實(shí)現(xiàn)方案修改為流水線實(shí)現(xiàn)一條經(jīng)典的5段流水線 q每一個(gè)周期作為一個(gè)流水段;每一個(gè)周期作為一個(gè)流水段;q在各段之間加上鎖存器(流水寄存器)。在各段之間加上鎖存器(流水寄存器)。 IM Reg ALU DM Reg IF 段段 ID 段段 EX 段段 MEM 段段 WB 段段 流流水水寄寄存存器器 計(jì)算機(jī)
7、科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w流水寄存器流水寄存器保證了流水線中不同段的指令不會(huì)相互影響。每個(gè)時(shí)鐘周期結(jié)束之后,該段的所有執(zhí)行結(jié)果都保存在流水段寄存器中,在下一個(gè)時(shí)鐘周期開始作為下一個(gè)段的輸入。 IM Reg ALU DM Reg IF 段段 ID 段段 EX 段段 MEM 段段 WB 段段 流流水水寄寄存存器器 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w第一種描述(類似于時(shí)空圖)5段流水線的兩種描述方式計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系流水線的實(shí)現(xiàn)必須關(guān)注:w需要確定處理器在每一個(gè)時(shí)鐘周期都進(jìn)行什么樣的動(dòng)作。w要保證在同一個(gè)周期沒有兩條指令使用相同的數(shù)據(jù)通路資源。w可以采用流水線方式下簡化的
8、RISC數(shù)據(jù)通路圖來表示:計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系第二種描述(按時(shí)間錯(cuò)開的數(shù)據(jù)通路序列)計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 w采用流水線方式實(shí)現(xiàn)時(shí),應(yīng)解決好以下幾個(gè)問題:要保證不會(huì)在同一時(shí)鐘周期要求同一個(gè)功能段做 兩件不同的工作。例如:不能要求例如:不能要求ALUALU同時(shí)做有效地址計(jì)算和算術(shù)運(yùn)算。同時(shí)做有效地址計(jì)算和算術(shù)運(yùn)算。避免IF段的訪存(取指令)與MEM段的訪存(讀/寫數(shù)據(jù))發(fā)生沖突。q可以采用分離的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;可以采用分離的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;q一般采用分離的指令一般采用分離的指令CacheCache和數(shù)據(jù)和數(shù)據(jù)CacheCache。ID段和WB段都要訪
9、問同一寄存器文件。 IDID段:讀段:讀WBWB段:寫段:寫計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系寄存器堆在寄存器堆在ID段被讀,在段被讀,在WE段被寫,所以在數(shù)據(jù)通路中出現(xiàn)兩段被寫,所以在數(shù)據(jù)通路中出現(xiàn)兩次次計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系對于在一個(gè)時(shí)鐘周期內(nèi)同一寄存器堆進(jìn)行操作,在時(shí)鐘的前半部對于在一個(gè)時(shí)鐘周期內(nèi)同一寄存器堆進(jìn)行操作,在時(shí)鐘的前半部分進(jìn)行寫寄存器的操作,后半部分進(jìn)行讀寄存器的操作。分進(jìn)行寫寄存器的操作,后半部分進(jìn)行讀寄存器的操作。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系如何解決對同一寄存器的訪問沖突? 把寫操作安排在時(shí)鐘周期的前半拍完成,把讀操作安排在后半拍完成。邊框畫實(shí)線表
10、示操作,畫虛線表示不做任何操作。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w考慮考慮PCPC的問題的問題流水線為了能夠每個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,流水線為了能夠每個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,就必須在每個(gè)時(shí)鐘周期進(jìn)行就必須在每個(gè)時(shí)鐘周期進(jìn)行PCPC值的加值的加4 4操作,并保操作,并保留新的留新的PCPC值。這種操作值。這種操作必須在必須在IFIF段完成,段完成,以便為以便為取下一條指令做好準(zhǔn)備。取下一條指令做好準(zhǔn)備。 (需設(shè)置一個(gè)專門的加法器)(需設(shè)置一個(gè)專門的加法器)但分支指令也可能改變但分支指令也可能改變P PC C的值,而且是在的值,而且是在MEMMEM段段進(jìn)進(jìn)行,這會(huì)導(dǎo)致沖突。行,這會(huì)導(dǎo)致
11、沖突。請考慮一下,如何處理分支指令?請考慮一下,如何處理分支指令?計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w相關(guān):兩條指令之間存在某種依賴關(guān)系。 如果兩條指令相關(guān),則它們就有可能不能在流水線中重疊執(zhí)行或者只能部分重疊執(zhí)行。5.4.2.1 相關(guān)與流水線沖突5.4.2 相關(guān)與流水線沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 流水線沖突是指對于具體的流水線來說,由于相關(guān)的存在,使得指令流中的下一條指令不能在指定的時(shí)鐘周期執(zhí)行。 流水線沖突有3種類型:q結(jié)構(gòu)沖突:結(jié)構(gòu)沖突:因硬件資源滿足不了指令重疊執(zhí)行的要因硬件資源滿足不了指令重疊執(zhí)行的要 求而發(fā)生的沖突。求而發(fā)生的沖突。q數(shù)據(jù)沖突:數(shù)據(jù)沖突:當(dāng)指令在流水
12、線中重疊執(zhí)行時(shí),因需要當(dāng)指令在流水線中重疊執(zhí)行時(shí),因需要 用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。q控制沖突:控制沖突:流水線遇到分支指令和其它會(huì)改變流水線遇到分支指令和其它會(huì)改變PCPC值值 的指令所引起的沖突。的指令所引起的沖突。流水線沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w導(dǎo)致錯(cuò)誤的執(zhí)行結(jié)果。w流水線可能會(huì)出現(xiàn)停頓,從而降低流水線的效率和實(shí)際的加速比。w我們約定 當(dāng)一條指令被暫停時(shí),在該暫停指令之后流出的所有指令都要被暫停,而在該暫停指令之前流出的指令則繼續(xù)進(jìn)行(否則就永遠(yuǎn)無法消除沖突)。帶來的幾個(gè)問題:計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系在流水線處理機(jī)
13、中,為了能夠使各種組合的指令在流水線處理機(jī)中,為了能夠使各種組合的指令 都能順利地重疊執(zhí)行,需要對功能部件進(jìn)行流水都能順利地重疊執(zhí)行,需要對功能部件進(jìn)行流水 或重復(fù)設(shè)置資源?;蛑貜?fù)設(shè)置資源。如果某種指令組合因?yàn)橘Y源沖突而不能正常執(zhí)如果某種指令組合因?yàn)橘Y源沖突而不能正常執(zhí) 行,則稱該處理機(jī)有行,則稱該處理機(jī)有結(jié)構(gòu)沖突。結(jié)構(gòu)沖突。常見的導(dǎo)致結(jié)構(gòu)常見的導(dǎo)致結(jié)構(gòu)沖突沖突的原因:的原因:q功能部件不是完全流水功能部件不是完全流水q資源份數(shù)不夠資源份數(shù)不夠結(jié)構(gòu)沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系結(jié)構(gòu)沖突舉例:訪存沖突訪存沖突 有些流水線處理機(jī)只有一個(gè)存儲(chǔ)器,將數(shù)據(jù)和指令放在一起,訪存指令會(huì)導(dǎo)致訪存沖突
14、。q解決辦法解決辦法:插入暫停周期插入暫停周期 (“流水線氣泡流水線氣泡”或或“氣泡氣泡”) 引入暫停后的時(shí)空圖引入暫停后的時(shí)空圖q解決方法解決方法: 設(shè)置相互獨(dú)立的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器設(shè)置相互獨(dú)立的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器 或設(shè)置相互獨(dú)立的指令或設(shè)置相互獨(dú)立的指令CacheCache和數(shù)據(jù)和數(shù)據(jù)CacheCache。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系由于訪問同一個(gè)存儲(chǔ)器而引起的結(jié)構(gòu)沖突由于訪問同一個(gè)存儲(chǔ)器而引起的結(jié)構(gòu)沖突 訪存沖突返回計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 時(shí)間(時(shí)鐘周期)時(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)沖突而插入的流水線氣泡 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系引入暫停后的時(shí)空圖引入暫停后的時(shí)空圖指令編號(hào)指令編號(hào) 時(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 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w有時(shí)流水線設(shè)計(jì)者允許結(jié)構(gòu)沖突的存在主要原因:減少硬件成本如果把流水線中的所有功能單元完全流水化,或者重復(fù)設(shè)置足夠份數(shù),那么所花費(fèi)的成本將相當(dāng)高。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w數(shù)據(jù)沖突數(shù)據(jù)沖突 當(dāng)相關(guān)的指令靠得足
17、夠近時(shí),它們在流水線中當(dāng)相關(guān)的指令靠得足夠近時(shí),它們在流水線中的的重疊執(zhí)行或者重新排序重疊執(zhí)行或者重新排序會(huì)改變指令讀會(huì)改變指令讀/寫操作數(shù)寫操作數(shù)的順序,使之不同于它們串行執(zhí)行時(shí)的順序,則發(fā)的順序,使之不同于它們串行執(zhí)行時(shí)的順序,則發(fā)生了生了數(shù)據(jù)沖突。數(shù)據(jù)沖突。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 時(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操作由于前半個(gè)周期寫寄存器對,后半個(gè)周期讀寄存器堆,可以正確執(zhí)行。OR操作也能正確執(zhí)行,此時(shí)R1的值已經(jīng)被正確寫人計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系根據(jù)
19、指令讀訪問和寫訪問的順序,可以將數(shù)據(jù)沖 突分為3種類型。 考慮考慮兩條指令兩條指令i i和和j j ,且,且i i在在j j之前進(jìn)入流水線,之前進(jìn)入流水線,可能發(fā)生的數(shù)據(jù)沖突有:可能發(fā)生的數(shù)據(jù)沖突有:q寫后讀沖突(寫后讀沖突(RAWRAW) 在在 i i 寫入之前,寫入之前,j j 先去讀。先去讀。 j j 讀出的內(nèi)容是錯(cuò)誤的。讀出的內(nèi)容是錯(cuò)誤的。 這是最常見的一種數(shù)據(jù)沖突,它對應(yīng)于真數(shù)據(jù)相這是最常見的一種數(shù)據(jù)沖突,它對應(yīng)于真數(shù)據(jù)相關(guān)。關(guān)。 數(shù)據(jù)沖突的三種類型計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系q寫后寫沖突(寫后寫沖突(WAWWAW) 在在 i i 寫入之前,寫入之前,j j 先寫。先寫。 最
20、后寫入的結(jié)果是最后寫入的結(jié)果是 i i 的。錯(cuò)誤!的。錯(cuò)誤! 這種沖突對應(yīng)于輸出相關(guān)。這種沖突對應(yīng)于輸出相關(guān)。 寫后寫沖突僅發(fā)生在這樣的流水線中:n流水線中不只一個(gè)段可以進(jìn)行寫操作;流水線中不只一個(gè)段可以進(jìn)行寫操作;n指令被重新排序了。指令被重新排序了。 前面介紹的5段流水線不會(huì)發(fā)生寫后寫沖突。(只在(只在WBWB段寫寄存器)段寫寄存器) 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系q讀后寫沖突(讀后寫沖突(WARWAR) 在在 i i 讀之前,讀之前,j j 先寫。先寫。 i i 讀出的內(nèi)容是錯(cuò)誤的!讀出的內(nèi)容是錯(cuò)誤的! 由反相關(guān)引起。由反相關(guān)引起。 這種沖突僅發(fā)生在這樣的情況下:n有些指令的寫結(jié)果
21、操作提前了,而且有些指令有些指令的寫結(jié)果操作提前了,而且有些指令 的讀操作滯后了;的讀操作滯后了;n指令被重新排序了。指令被重新排序了。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w通過通過定向技術(shù)定向技術(shù)減少數(shù)據(jù)沖突引起的停頓減少數(shù)據(jù)沖突引起的停頓 (定向技術(shù)也稱為旁路或短路)(定向技術(shù)也稱為旁路或短路)關(guān)鍵思想:關(guān)鍵思想:在計(jì)算結(jié)果尚未出來之前,后面等待在計(jì)算結(jié)果尚未出來之前,后面等待使用該結(jié)果的指令并不真正立即需要該計(jì)算結(jié)果,使用該結(jié)果的指令并不真正立即需要該計(jì)算結(jié)果,如果能夠?qū)⒃撚?jì)算結(jié)果從其產(chǎn)生的地方直接送到如果能夠?qū)⒃撚?jì)算結(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的輸入的輸入鎖存器,則不需要引入停頓。鎖存器,則不需要引入停頓。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 時(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ù)通路 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系工作過程演示計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w定向的實(shí)現(xiàn)EX段和MEM段之間的流水寄存器中保存的ALU運(yùn)算結(jié)果總是回送到ALU的入口。當(dāng)定向硬件檢測到前一個(gè)ALU運(yùn)算結(jié)果寫入的寄存器就是當(dāng)前ALU操作的源寄存器時(shí),那么控制邏輯就選擇定向的數(shù)據(jù)作為ALU的輸入,而不采用從通用寄存器組讀出的數(shù)據(jù)。1. 在使用直通時(shí),如果DSUB操作被停頓,那么DADD操作將被完整執(zhí)行
24、,沒有必要激活旁路。當(dāng)兩個(gè)操作之間有一個(gè)中斷也是如此。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系直通的實(shí)現(xiàn)w直通思想可以一般化:可以將結(jié)果直接送到需要它的單元,并不限制在同一個(gè)單元的輸出到輸入。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系并不是所有的數(shù)據(jù)沖突都可以用定向技術(shù)來解決。 舉例: LD LD R1R1,0 0(R2R2)DADD R4DADD R4,R1R1,R5R5AND R6AND R6,R1R1,R7R7XOR R8XOR R8,R1R1,R9R9增加流水線互鎖機(jī)制,插入“暫?!?。 作用:檢測發(fā)現(xiàn)數(shù)據(jù)沖突,并使流水線停頓,直至沖突消失。 舉例:演示A(資源圖表示) 演示B(時(shí)空圖表示)需要
25、停頓的數(shù)據(jù)沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 時(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指令指令 采用定向無法解決返回返回計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w依靠編譯器解決數(shù)據(jù)沖突 讓編譯器重新組織指令順序來消除沖突,這種技術(shù)稱為指令調(diào)度或流水線調(diào)度。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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、為下列表達(dá)式生成沒有暫停的指令序列請為下列表達(dá)式生成沒有暫停的指令序列: : ABC ; DEF ; 假設(shè)載入延遲為假設(shè)載入延遲為1 1個(gè)個(gè)時(shí)鐘周期。時(shí)鐘周期。 題解題解計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w控制沖突 執(zhí)行分支指令的結(jié)果有兩種q分支成功:分支成功:PCPC值改變?yōu)榉种мD(zhuǎn)移的目標(biāo)地址。值改變?yōu)榉种мD(zhuǎn)移的目標(biāo)地址。 在條件判定和轉(zhuǎn)移地址計(jì)算都完成后,才改變在條件判定和轉(zhuǎn)移地址計(jì)算都完成后,才改變PCPC值。值。q不成功或者失?。翰怀晒蛘呤。篜CPC的值保持正常遞增,的值保持正常遞增, 指向順序的下一條指令。指向順序的下一條指令。處理分支指令最簡單的方法:“凍結(jié)凍結(jié)”或者或者“排
28、空排空”流水線流水線 優(yōu)點(diǎn):優(yōu)點(diǎn):簡單簡單p前述前述5 5段流水線中,改變段流水線中,改變PCPC值是在值是在MEMMEM段進(jìn)行的。段進(jìn)行的。 給流水線帶來了給流水線帶來了3 3個(gè)時(shí)鐘周期的延遲個(gè)時(shí)鐘周期的延遲控制沖突計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系分支指令分支指令 IF IF ID ID EX EX MEM MEM WBWB 分支目標(biāo)分支目標(biāo)指令指令 IFIF stallstall stallstall IFIF ID ID EX EX MEM MEM WB WB 分支目標(biāo)分支目標(biāo)指令指令+1 +1 IF IF ID ID EX EX MEMMEM WB WB 分支目標(biāo)分支目標(biāo)指令指令+
29、2 +2 IF IF ID ID EX EX MEMMEM 分支目標(biāo)分支目標(biāo)指令指令+3 +3 IF IF ID ID EX EX 簡單處理分支指令:分支成功的情況簡單處理分支指令:分支成功的情況 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系把由分支指令引起的延遲稱為分支延遲。分支指令在目標(biāo)代碼中出現(xiàn)的頻度q每每3 34 4條指令就有一條是分支指令。條指令就有一條是分支指令。 假設(shè):假設(shè):分支指令出現(xiàn)的頻度是分支指令出現(xiàn)的頻度是3030 流水線理想流水線理想 CPICPI1 1 那么:那么:流水線的實(shí)際流水線的實(shí)際 CPI CPI 1.91.9可采取兩種措施來減少分支延遲。q在流水線中盡早判斷出分支轉(zhuǎn)
30、移是否成功;在流水線中盡早判斷出分支轉(zhuǎn)移是否成功;q盡早計(jì)算出分支目標(biāo)地址。盡早計(jì)算出分支目標(biāo)地址。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系下面的討論中,我們假設(shè): 這兩步工作被提前到ID段完成,即分支指令是在ID段的末尾執(zhí)行完成,所帶來的分支延遲為一個(gè)時(shí)鐘周期。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系3種通過軟件(編譯器)來減少分支延遲的方法 共同點(diǎn):n對分支的處理方法在程序的執(zhí)行過程中始終是對分支的處理方法在程序的執(zhí)行過程中始終是 不變的,是不變的,是靜態(tài)靜態(tài)的。(在整個(gè)程序的執(zhí)行過程中對的。(在整個(gè)程序的執(zhí)行過程中對每個(gè)轉(zhuǎn)移的處理都是一樣的)每個(gè)轉(zhuǎn)移的處理都是一樣的)n要么總是預(yù)測分支成功,要
31、么總是預(yù)測分支失敗。要么總是預(yù)測分支成功,要么總是預(yù)測分支失敗。q預(yù)測分支失敗預(yù)測分支失敗 n允許分支指令后的指令繼續(xù)在流水線中流動(dòng),就允許分支指令后的指令繼續(xù)在流水線中流動(dòng),就 好象什么都沒發(fā)生似的;好象什么都沒發(fā)生似的;n若確定分支失敗,將分支指令看作是一條普通指若確定分支失敗,將分支指令看作是一條普通指 令,流水線正常流動(dòng);令,流水線正常流動(dòng);計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系n若確定分支成功,流水線就把在分支指令之后若確定分支成功,流水線就把在分支指令之后 取出的所有指令轉(zhuǎn)化為空操作,并按分支目地取出的所有指令轉(zhuǎn)化為空操作,并按分支目地 重新取指令執(zhí)行。重新取指令執(zhí)行。要保證:要保證
32、:分支結(jié)果出來之前不能改變處理機(jī)的狀態(tài),以分支結(jié)果出來之前不能改變處理機(jī)的狀態(tài),以 便一旦猜錯(cuò)時(shí),處理機(jī)能夠回退到原先的狀態(tài)。便一旦猜錯(cuò)時(shí),處理機(jī)能夠回退到原先的狀態(tài)。流水線的處理過程流水線的處理過程計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系轉(zhuǎn)移不成功和轉(zhuǎn)移成功兩種情況下的流水線序列計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系q預(yù)測分支成功:預(yù)測分支成功:假設(shè)分支轉(zhuǎn)移成功,并從分支目假設(shè)分支轉(zhuǎn)移成功,并從分支目標(biāo)地址處取指令執(zhí)行。標(biāo)地址處取指令執(zhí)行。q起作用的前題:起作用的前題:先知道分支目標(biāo)地址,后知道分先知道分支目標(biāo)地址,后知道分支是否成功。支是否成功。q前述前述5 5段流水線中,這種方法沒有任何好處。
33、段流水線中,這種方法沒有任何好處。q無論采用預(yù)測不成功還是預(yù)測成功,編譯器都能無論采用預(yù)測不成功還是預(yù)測成功,編譯器都能通過組織代碼來實(shí)現(xiàn)與硬件的最佳匹配。通過組織代碼來實(shí)現(xiàn)與硬件的最佳匹配。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 不論采用剛才說的哪種策略,編譯器都能通過組織代碼來實(shí)現(xiàn)與硬件的最佳匹配。q延遲分支延遲分支主要思想:主要思想: 從邏輯上從邏輯上“延長延長”分支指令的執(zhí)行時(shí)間。分支指令的執(zhí)行時(shí)間。把延遲分支看成是由原來的分支指令和若干把延遲分支看成是由原來的分支指令和若干個(gè)延遲槽構(gòu)成,不管分支是否成功,都要按個(gè)延遲槽構(gòu)成,不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。順序執(zhí)行延遲槽
34、中的指令。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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))目標(biāo)地址的指令(如果轉(zhuǎn)移被選中)目標(biāo)地址的指令(如果轉(zhuǎn)移被選中) w執(zhí)行過程w雖然延遲槽的長度可以大于1,實(shí)際上,所有帶轉(zhuǎn)移延遲的處理器一般只延遲一條指令,并使用其它技術(shù)來處理更多有關(guān)延遲的開銷計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系任務(wù):在延遲槽中放入有用的指令由編譯器完成。能否帶來好處取決于編譯器能否把有用的指令調(diào)度到延遲槽中。三種調(diào)度方法: 解決究竟將什么指令裝
35、入延遲槽?從前調(diào)度(將轉(zhuǎn)移指令之前的指令裝入延遲槽)從目標(biāo)處調(diào)度(將轉(zhuǎn)移目標(biāo)地址處的指令裝入延遲槽)從失敗處調(diào)度(將延遲槽后的指令裝入延遲槽)分支延遲指令的調(diào)度計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系從前面調(diào)度來自前面:將分支指令之前的一條獨(dú)立指令調(diào)度到延遲槽計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系具有一個(gè)分支延遲槽的流水線的執(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分支目標(biāo)指令分支目標(biāo)指令j j IF IF ID ID EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令j+1 j+1 IF IF ID I
37、D EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系從目標(biāo)處調(diào)度n來自目標(biāo)地址:將目標(biāo)來自目標(biāo)地址:將目標(biāo)處的指令拷貝到延遲槽同處的指令拷貝到延遲槽同時(shí)修改分支指令的目標(biāo)地時(shí)修改分支指令的目標(biāo)地址。由于從別的路徑可能址。由于從別的路徑可能也要執(zhí)行到該指令,所以也要執(zhí)行到該指令,所以不能簡單的移指令,而是不能簡單的移指令,而是復(fù)制。采用這種方法實(shí)際復(fù)制。采用這種方法實(shí)際上是猜測分支成功,所以上是猜測分支成功,所以對于循環(huán)等分支轉(zhuǎn)移成功對于循環(huán)等分支轉(zhuǎn)移成功概率較高的采用此方法較概率較高
38、的采用此方法較好好計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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分支目標(biāo)指令分支目標(biāo)指令j +1j +1IF IF ID ID EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令jj+2jj+2IF IF ID ID EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令j+3j+3IF IF ID ID EX EX MEMMEMWBWB預(yù)測分支成功的情況下,分支取消機(jī)制的執(zhí)行情況預(yù)測分支成功的情況下,分支取消機(jī)制的執(zhí)行情況 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系從失敗處調(diào)度w將延遲槽后的指令裝入延遲槽。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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分支目標(biāo)指令分支目標(biāo)指令j j IF IF ID ID EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令j+1 j+1 IF IF ID ID EX EX MEMMEMWBWB分支目標(biāo)指令分支目標(biāo)指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB預(yù)測分支不轉(zhuǎn)移的情況下,分支取消機(jī)制的執(zhí)行情況預(yù)測分支不轉(zhuǎn)移的情況下,分支取消機(jī)制的執(zhí)行情況 從失敗處調(diào)度從失敗處調(diào)度計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系調(diào)度前和調(diào)度后的代碼計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系三種方法的要求及效果調(diào) 度 策 略對調(diào)度的要求什么情況下起作用?從從
42、 前前 調(diào)調(diào) 度度從目標(biāo)處調(diào)度從目標(biāo)處調(diào)度從失敗處調(diào)度從失敗處調(diào)度必須保證在分支失敗時(shí)執(zhí)行被調(diào)度必須保證在分支失敗時(shí)執(zhí)行被調(diào)度的指令不會(huì)導(dǎo)致錯(cuò)誤。有可能需要的指令不會(huì)導(dǎo)致錯(cuò)誤。有可能需要復(fù)制指令。復(fù)制指令。被調(diào)度的指令必須與分支無關(guān)被調(diào)度的指令必須與分支無關(guān)必須保證在分支成功時(shí)執(zhí)行被調(diào)度必須保證在分支成功時(shí)執(zhí)行被調(diào)度的指令不會(huì)導(dǎo)致錯(cuò)誤。的指令不會(huì)導(dǎo)致錯(cuò)誤。任何情況任何情況 分支成功時(shí)分支成功時(shí)( (但由于復(fù)制指令,有但由于復(fù)制指令,有可能會(huì)增大程序空間可能會(huì)增大程序空間) )分支失敗時(shí)分支失敗時(shí)計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系分支延遲受到兩個(gè)方面的限制:q可以被放入延遲槽中的指令要滿足一定
43、的條件;可以被放入延遲槽中的指令要滿足一定的條件;q編譯器預(yù)測分支轉(zhuǎn)移方向的能力。編譯器預(yù)測分支轉(zhuǎn)移方向的能力。進(jìn)一步改進(jìn):分支取消機(jī)制(取消分支) 當(dāng)分支的實(shí)際執(zhí)行方向和事先所預(yù)測的一樣時(shí),當(dāng)分支的實(shí)際執(zhí)行方向和事先所預(yù)測的一樣時(shí),執(zhí)行分支延遲槽中的指令,否則就將分支延遲槽中的執(zhí)行分支延遲槽中的指令,否則就將分支延遲槽中的指令轉(zhuǎn)化成一個(gè)空操作。此時(shí),轉(zhuǎn)移指令帶有對轉(zhuǎn)移指令轉(zhuǎn)化成一個(gè)空操作。此時(shí),轉(zhuǎn)移指令帶有對轉(zhuǎn)移能否被選中的預(yù)測。預(yù)測準(zhǔn)確時(shí),延遲槽中的指令像能否被選中的預(yù)測。預(yù)測準(zhǔn)確時(shí),延遲槽中的指令像通常一樣執(zhí)行,否則就將延遲槽中的指令變成空操作。通常一樣執(zhí)行,否則就將延遲槽中的指令變成空
44、操作。5.5 流水線的實(shí)現(xiàn)流水線的實(shí)現(xiàn)5.5.1 MIPS的一種簡單實(shí)現(xiàn)的一種簡單實(shí)現(xiàn)5.5.2 基本的基本的MIPS流水線流水線計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w實(shí)現(xiàn)MIPS指令子集的一種簡單數(shù)據(jù)通路。該數(shù)據(jù)通路的操作分成5個(gè)時(shí)鐘周期q取指令取指令q指令譯碼指令譯碼/讀寄存器讀寄存器q執(zhí)行執(zhí)行/有效地址計(jì)算有效地址計(jì)算q存儲(chǔ)器訪問存儲(chǔ)器訪問/分支完成分支完成q寫回寫回 只討論整數(shù)指令整數(shù)指令的實(shí)現(xiàn)(包括:(包括:loadload和和storestore,等于,等于0 0轉(zhuǎn)轉(zhuǎn)移,整數(shù)移,整數(shù)ALUALU指令等。)指令等。) 5.5.1 MIPS的一種簡單實(shí)現(xiàn)5.5 流水線的實(shí)現(xiàn)計(jì)算機(jī)科學(xué)與
45、技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)置了一些臨時(shí)寄存器。其作用如下:qPC:程序計(jì)數(shù)器,存放當(dāng)前指令的地址。:程序計(jì)數(shù)器,存放當(dāng)前指令的地址。qNPC:下一條程序計(jì)數(shù)器,存放下一條指令的地址。:下一條程序計(jì)數(shù)器,存放下一條指令的地址。qIR:指令寄存器,存放當(dāng)前正在處理的指令。:指令寄存器,存放當(dāng)前正在處理的指令。qA:第一操作數(shù)寄存器,存放從通用寄存器組讀出來:第一操作數(shù)寄存器,存放從通用寄存器組讀出來的操作數(shù)。的操作數(shù)。qB:第二操作數(shù)寄存器,存放從通用寄存器組讀出來:第二操作數(shù)寄存器,存放從通用寄存器組讀出來的另一個(gè)操作數(shù)。的另一個(gè)操作數(shù)。qImm:存放符號(hào)擴(kuò)展
46、后的立即數(shù)操作數(shù)。:存放符號(hào)擴(kuò)展后的立即數(shù)操作數(shù)。qCond:存放條件判定的結(jié)果。為:存放條件判定的結(jié)果。為“真真”表示分支成功。表示分支成功。qALUo:存放:存放ALU的運(yùn)算結(jié)果。的運(yùn)算結(jié)果。qLMD:存放:存放load指令從存儲(chǔ)器讀出的數(shù)據(jù)。指令從存儲(chǔ)器讀出的數(shù)據(jù)。臨時(shí)寄存器的作用計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)w尋址方式編碼到操作碼中w所有的指令都是32位的w操作碼占6位w3種指令格式 3種格式中,同名字段的位置固定不變。種格式中,同名字段的位置固定不變。 MIPS的指令格式計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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ù)或偏移量。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)qloadload指令指令 訪存有效地址:訪存有效地址:RegsrsRegsrsimmediateimmediate 從存儲(chǔ)器取來的數(shù)據(jù)放入寄存器從存儲(chǔ)器取來的數(shù)據(jù)放
48、入寄存器rtrtqstorestore指令指令 訪存有效地址:訪存有效地址:RegsrsRegsrsimmediateimmediate 要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rtrt中中q立即數(shù)指令立即數(shù)指令 Regsrt Regsrs op immediateRegsrt Regsrs op immediateq分支指令分支指令 轉(zhuǎn)移目標(biāo)地址轉(zhuǎn)移目標(biāo)地址 (PC)(PC)immediateimmediateq寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標(biāo)地址為轉(zhuǎn)移目標(biāo)地址為RegsrsR計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系MIPS指令系統(tǒng)結(jié)構(gòu)R類指令q
49、包括包括ALUALU指令,專用寄存器讀指令,專用寄存器讀/ /寫指令,寫指令,movemove指令等。指令等。qALUALU指令指令 Regsrd Regsrs funct RegsrtRegsrd Regsrs funct Regsrt funct funct為具體的運(yùn)算操作編碼為具體的運(yùn)算操作編碼操操作作碼碼 rs 6 5 5 6 rt 5 rd funct 0 5 6 10 11 15 16 31 20 21 sham25 26 5 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w一條MIPS指令最多需要以下5個(gè)時(shí)鐘周期:取指令周期(IF) 操作pIRIRMemPCMemPCpNPCNPCPC+4PC+4指令譯碼/讀寄存器周期(ID) 操作qA A RegsrsRegsrsqB B RegsrtRegsrtImm IR的立即數(shù)字段進(jìn)行符號(hào)擴(kuò)展 指令的譯碼操作指令的譯碼操作和和讀寄存器操作讀寄存器操
51、作是并行進(jìn)行的。是并行進(jìn)行的。 原因:在原因:在MIPSMIPS指令格式中,操作碼字段以及指令格式中,操作碼字段以及rsrs、rtrt 字段都是在固定的位置。這種技術(shù)稱為字段都是在固定的位置。這種技術(shù)稱為固定字段譯碼固定字段譯碼技術(shù)技術(shù)。 由于指令的立即數(shù)部分在由于指令的立即數(shù)部分在MIPS格式中都有相同的位置,格式中都有相同的位置,所以要是下一個(gè)時(shí)鐘周期需要使用立即數(shù),帶符號(hào)立即所以要是下一個(gè)時(shí)鐘周期需要使用立即數(shù),帶符號(hào)立即數(shù)的符號(hào)擴(kuò)展操作也在當(dāng)前時(shí)鐘周期完成。數(shù)的符號(hào)擴(kuò)展操作也在當(dāng)前時(shí)鐘周期完成。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系執(zhí)行/有效地址計(jì)算周期(EX) 不同指令所進(jìn)行的操作不同
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)計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 將有效地址計(jì)算周期和執(zhí)行周期合并為一個(gè)時(shí)將有效地址計(jì)算周期和執(zhí)行周期合并為一個(gè)時(shí)鐘周期,這是
53、因?yàn)殓娭芷?,這是因?yàn)镸IPSMIPS指令集采用指令集采用loadloadstorestore結(jié)結(jié)構(gòu),沒有任何指令需要同時(shí)進(jìn)行數(shù)據(jù)有效地址的計(jì)構(gòu),沒有任何指令需要同時(shí)進(jìn)行數(shù)據(jù)有效地址的計(jì)算、轉(zhuǎn)移目標(biāo)地址的計(jì)算和對數(shù)據(jù)進(jìn)行運(yùn)算。算、轉(zhuǎn)移目標(biāo)地址的計(jì)算和對數(shù)據(jù)進(jìn)行運(yùn)算。存儲(chǔ)器訪問/分支完成周期(MEM)q所有指令都要在該周期對所有指令都要在該周期對PCPC進(jìn)行更新。進(jìn)行更新。 除了分支指令,其它指令都是做:除了分支指令,其它指令都是做:PCPCNPCNPCq在該周期內(nèi)處理的在該周期內(nèi)處理的MIPSMIPS指令僅僅有指令僅僅有l(wèi)oadload、storestore和分和分支支三種指令。三種指令。計(jì)算機(jī)
54、科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(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計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系MIPS的數(shù)據(jù)通路的實(shí)現(xiàn)計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系每一個(gè)時(shí)鐘周期完成的工作看作是流水線的一段,每個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,就可以使前面的數(shù)據(jù)通路流水。w流水實(shí)現(xiàn)的數(shù)據(jù)通路設(shè)置了流水寄存器 所有用于在同一條指令的各個(gè)時(shí)鐘周期之間保存臨時(shí)數(shù)據(jù)的寄存器都要?dú)w入流水寄存器這一類中q段與段之間設(shè)置流水寄存器段與段之間設(shè)置流水寄存器q流水寄存器的名稱流水寄存器的名稱 用其相鄰的兩個(gè)段的名稱拼合而成。用其相鄰的兩個(gè)段的名稱拼合而成。 例如:例如:IDID段段
56、與與EXEX段段之間的流水寄存器用之間的流水寄存器用ID/EXID/EX表示表示q每個(gè)流水寄存器是由若干個(gè)寄存器構(gòu)成的每個(gè)流水寄存器是由若干個(gè)寄存器構(gòu)成的 5.5.2 基本的MIPS流水線計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 MEM/WB 數(shù)據(jù) 存儲(chǔ)器 通用寄存器組 符號(hào) 位 擴(kuò)展 ALU PC =0? ADD 16 32 4 存儲(chǔ)器 分之 結(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、實(shí)現(xiàn)的數(shù)據(jù)通路流水實(shí)現(xiàn)的數(shù)據(jù)通路計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w寄存器的命名形式為:x.yw所包含的字段的命名形式為:x.ys 其中:x:流水寄存器名稱 y:具體寄存器名稱 s:字段名稱 例如: ID/EX.IR:流水寄存器ID/EX中的子寄存器IR IRID/EX.IRop:該寄存器的op字段(即操作碼字段)w流水寄存器的作用 將各段的工作隔開,使得它們不會(huì)互相干擾。保存相應(yīng)段的處理結(jié)果。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w屬于IF/ID部分的指令寄存器IR的各個(gè)字段,在用于提供寄存器名時(shí)就將其標(biāo)記。qIRrsIRrsIRIR6.106.10qIRrtIRrtIRIR11.1511.
58、15qIRrdIRrdIRIR16.2016.20w流水線寄存器在兩個(gè)相鄰的流水段之間既傳遞數(shù)據(jù)也傳遞控制信息。后面流水段需要的數(shù)據(jù),必須能從一個(gè)流水寄存器復(fù)制到下一個(gè)流水寄存器,直到不再需要為止。w所以流水寄存器與非流水通路中使用的臨時(shí)寄存器不一樣。計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系例如:EX/MEM.ALUo:保存EX段ALU的運(yùn)算結(jié)果MEM/WB.LMD:保存MEM段從數(shù)據(jù)存儲(chǔ)器讀出的數(shù)據(jù)q向后傳遞后面將要用到的數(shù)據(jù)或者控制信息向后傳遞后面將要用到的數(shù)據(jù)或者控制信息 所有有用的數(shù)據(jù)和控制信息每個(gè)時(shí)鐘周期 會(huì)隨著指令在流水線中的流動(dòng)往后流動(dòng)一段。w 增加了向后傳遞IR和從MEM/WB.I
59、R回送到通用寄存 器組的連接。w 將對PC的修改移到了IF段,以便PC能及時(shí)地加 4,為取下一條指令做好準(zhǔn)備。 計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系 MEM/WB 數(shù)據(jù) 存儲(chǔ)器 通用寄存器組 符號(hào) 位 擴(kuò)展 ALU PC =0? ADD 16 32 4 存儲(chǔ)器 分支 結(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 指令 流水實(shí)現(xiàn)的數(shù)據(jù)通路流水實(shí)現(xiàn)的數(shù)據(jù)通路計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系w流水線
60、的控制主要是如何控制四個(gè)多路選擇器。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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)生網(wǎng)上簽約合同范本
- 2024車位所有權(quán)變更協(xié)議范本
- 2024年事業(yè)單位用工協(xié)議規(guī)范格式
- 2024年四號(hào)采購協(xié)議書樣本
- 工程建設(shè)進(jìn)度控制學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 文學(xué)2學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 食說膳語學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 宣傳補(bǔ)助合同范本
- 浙江寧波大學(xué)附屬人民醫(yī)院招聘護(hù)理人員真題
- 2023年岳陽市華容縣人民醫(yī)院招聘考試真題
- 2024-2030年組氨酸行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 教育信息化教學(xué)資源建設(shè)規(guī)劃
- 屠宰場食品安全管理制度
- 部編版(2024秋)語文一年級上冊 6 .影子課件
- 2024秋期國家開放大學(xué)??啤缎淌略V訟法學(xué)》一平臺(tái)在線形考(形考任務(wù)一至五)試題及答案
- 病例討論英文
- 2024秋期國家開放大學(xué)??啤兑簤号c氣壓傳動(dòng)》一平臺(tái)在線形考(形考任務(wù)+實(shí)驗(yàn)報(bào)告)試題及答案
- 【課件】植物體的結(jié)構(gòu)層次課件-2024-2025學(xué)年人教版生物七年級上冊
- 24秋國家開放大學(xué)《0-3歲嬰幼兒的保育與教育》期末大作業(yè)參考答案
- 相對濕度計(jì)算公式
- 2024版腫瘤患者靜脈血栓防治指南解讀 課件
評論
0/150
提交評論