《計(jì)算機(jī)體系結(jié)構(gòu)》對整型pipeline增加浮點(diǎn)數(shù)處理 RISC-V_第1頁
《計(jì)算機(jī)體系結(jié)構(gòu)》對整型pipeline增加浮點(diǎn)數(shù)處理 RISC-V_第2頁
《計(jì)算機(jī)體系結(jié)構(gòu)》對整型pipeline增加浮點(diǎn)數(shù)處理 RISC-V_第3頁
《計(jì)算機(jī)體系結(jié)構(gòu)》對整型pipeline增加浮點(diǎn)數(shù)處理 RISC-V_第4頁
《計(jì)算機(jī)體系結(jié)構(gòu)》對整型pipeline增加浮點(diǎn)數(shù)處理 RISC-V_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)體系結(jié)構(gòu)Topic III: Pipelining多周期操作的處理對整型pipeline增加浮點(diǎn)數(shù)處理RISC-V7/18/2022chapter3.2多周期操作的處理問題浮點(diǎn)操作在12個(gè)cycles完成是不現(xiàn)實(shí)的,一般要花費(fèi)較長時(shí)間在MIPS中如何處理現(xiàn)假設(shè)FP指令與整數(shù)指令采用相同的流水線,那么EX 段需要循環(huán)多次來完成FP操作,循環(huán)次數(shù)取決于操作類型有多個(gè)FP功能部件,如果發(fā)射出的指令導(dǎo)致結(jié)構(gòu)或數(shù)據(jù)相關(guān),需暫停7/18/2022chapter3.3chapter3.4對MIPS的擴(kuò)充四個(gè)功能部件Integer 部件處理:Loads, Store, Integer ALU操作和Bra

2、nchFP/Integer 乘法部件:處理浮點(diǎn)數(shù)和整數(shù)乘法FP加法器:處理FP加,減和類型轉(zhuǎn)換FP/Integer除法部件:處理浮點(diǎn)數(shù)和整數(shù)除法7/18/2022chapter3.5擴(kuò)展的MIPS流水線7/18/2022假設(shè)這些部件沒有流水線化整數(shù)流水線和浮點(diǎn)流水線分開Latency & Repeat Interval延時(shí)(Latency) If latency=x, then (x+1)th instruction can use the result循環(huán)間隔(Repeat/Initiation interval)發(fā)射相同類型的操作所需的間隔周期數(shù)對于EX部件流水化的新的MIPS7/18/2

3、022chapter3.6Function UnitLatencyRepeat IntervalInteger ALU01Data Memory (Integer and FP loads(1 less for store latency)11FP Add31FP multiply61FP Divide (also integer divide and FP sqrt)2425chapter3.7將部分執(zhí)行部件流水化后的MIPS流水線7/18/2022新的相關(guān)和定向問題結(jié)構(gòu)沖突增多非流水的Divide部件,使得EX段增長24個(gè)cycles在一個(gè)周期內(nèi)可能有多個(gè)寄存器寫操作可能指令亂序完成(亂序

4、到達(dá)WB段)有可能存在WAW 由于在ID段讀,還不會(huì)有 WAR 相關(guān)亂序完成導(dǎo)致異常處理復(fù)雜由于指令的延遲加大導(dǎo)致RAW 相關(guān)的stall數(shù)增多需要付出更多的代價(jià)來增加定向路徑7/18/2022chapter3.8新的結(jié)構(gòu)相關(guān)縱向檢查指令所使用的資源第10個(gè)cycle,三條指令同時(shí)進(jìn)入MEM,但由于MULTD和ADDD在MEM段沒有實(shí)際動(dòng)作,這種情況沒有關(guān)系第11個(gè)cycle,三條指令同時(shí)進(jìn)入WB段,存在結(jié)構(gòu)相關(guān)7/18/2022chapter3.9解決方法Option 1在ID段跟蹤寫端口的使用情況,以便能暫停該指令的發(fā)射一旦發(fā)現(xiàn)沖突,暫停當(dāng)前指令的發(fā)射Option 2在進(jìn)入MEM或WB段時(shí)

5、,暫停沖突的指令,讓有較長延時(shí)的指令先做. 這里假設(shè)較長延時(shí)的指令,可能會(huì)更容易引起其他RAW相關(guān),從而導(dǎo)致更多的stalls7/18/2022chapter3.10關(guān)于數(shù)據(jù)相關(guān)7/18/2022chapter3.11S.D 多延遲一個(gè)cycle,以消解與ADD.D的沖突新的沖突源GPR與FPR間的數(shù)據(jù)傳送造成的數(shù)據(jù)相關(guān)MOVI2FP and MOVFP2I instructions如果在ID段進(jìn)行相關(guān)檢測,指令發(fā)射前須做如下檢測:結(jié)構(gòu)相關(guān)循環(huán)間隔檢測確定寄存器寫端口是否可用RAW相關(guān)列表所有待寫的目的寄存器不發(fā)射以待寫寄存器做為源寄存器的指令,插入latency個(gè)stallWAW相關(guān)仍然使用

6、上述待寫寄存器列表不發(fā)射那些目的寄存器與待寫寄存器列表中的指令有WAW沖突的指令,延遲1個(gè)cycle發(fā)射。7/18/2022chapter3.12精確中斷與長流水線例如DIVF F0,F2,F4ADDF F10,F10,F8SUBF F12,F12,F14ADDF 和SUBF都在DIVF前完成如果DIVF導(dǎo)致異常,會(huì)如何?非精確中斷Ideas?7/18/2022chapter3.13精確中斷與非精確中斷精確中斷如果流水線可以控制使得引起異常的指令前序指令都執(zhí)行完,故障后的指令可以重新執(zhí)行,則稱該流水線支持精確中斷按照指令的邏輯序處理異常理想情況,引起故障的指令沒有改變機(jī)器的狀態(tài)要正確的處理這類

7、異常請求,必須保證故障指令不產(chǎn)生副作用在有些機(jī)器上,浮點(diǎn)數(shù)異常流水線段數(shù)多,在發(fā)現(xiàn)故障前,故障點(diǎn)后的指令就已經(jīng)寫了結(jié)果,在這種情況下,必須有辦法處理。很多高性能計(jì)算機(jī),Alpha 21164,MIPS R10000等支持精確中斷,但精確模式要慢10+倍,一般用在代碼調(diào)試時(shí),很多系統(tǒng)要求精確中斷模式,如IEEE FP標(biāo)準(zhǔn)處理程序,虛擬存儲器等。精確中斷對整數(shù)流水線而言,不是太難實(shí)現(xiàn)指令執(zhí)行的中途改變機(jī)器的狀態(tài)7/18/2022chapter3.14MIPS中的異常 IF page fault, misaligned address, memory protection violationID u

8、ndefined or illegal opcodeEX arithmetic exceptionMEM page fault, misaligned address, memory protection violationWB none7/18/2022chapter3.15處理中斷4種可能的辦法方法1:忽略這種問題,當(dāng)非精確處理原來的supercomputer的方法但現(xiàn)代計(jì)算機(jī)對IEEE 浮點(diǎn)標(biāo)準(zhǔn)的異常處理,虛擬存儲的異常處理要求必須是精確中斷。方法2:緩存操作結(jié)果,直到早期發(fā)射的指令執(zhí)行完。當(dāng)指令運(yùn)行時(shí)間較長時(shí),Buffer區(qū)較大Future file (Power PC620 MIPS

9、 R10000)緩存執(zhí)行結(jié)果,按指令序確認(rèn)history file (CYBER 180/990)盡快確認(rèn)緩存區(qū)存放原來的操作數(shù),如果異常發(fā)生,回卷到合適的狀態(tài)7/18/2022chapter3.16第3 & 4種方法方法3:以非精確方式處理,用軟件來修正為軟件修正保存足夠的狀態(tài)讓軟件仿真尚未執(zhí)行完的指令的執(zhí)行例如Instruction 1 A 執(zhí)行時(shí)間較長,引起中斷的指令I(lǐng)nstruction 2, instruction 3, .instruction n-1 未執(zhí)行完的指令I(lǐng)nstruction n 已執(zhí)行完的指令由于第n條指令已執(zhí)行完,希望中斷返回后從第n+1條指令開始執(zhí)行,如果我們保

10、存所有的流水線的PC值,那么軟件可以仿真Instruction1 到Instruction n-1 的執(zhí)行方法4:暫停發(fā)射,直到確定先前的指令都可無異常的完成,再發(fā)射下面的指令。在EX段的前期確認(rèn)(MIPS流水線在前三個(gè)周期中)MIPS R2K to R4K 以及Pentium使用這種方法7/18/2022chapter3.17MIPS流水線的性能7/18/2022chapter3.18Stalls per FP operation for each major type of FP operation for the SPEC89 FP benchmarks平均每條指令的stall數(shù)7/18

11、/2022chapter3.19The stalls occurring for the MIPS FP pipeline for five for the SPEC89 FP benchmarks.MIPS R4000 (1991)實(shí)際的 64-bit 機(jī)器主頻100MHz 200MHz較深的流水線(級數(shù)較多)(有時(shí)也稱為 superpipelining)7/18/202220MIPS R4000的8 級整數(shù)流水線IF取指階段前半部分;選擇PC值,初始化指令cache的訪問IS取指階段后半部分,主要完成訪問指令cache的操作RF指令譯碼,寄存器讀取,相關(guān)檢測以及指令cache命中檢測EX執(zhí)

12、行,包括:計(jì)算有效地址,進(jìn)行ALU操作,計(jì)算分支目標(biāo)地址和檢測分支條件DF取數(shù)據(jù),訪問數(shù)據(jù)cache的前半部分DS訪問數(shù)據(jù)cache的后半部分TCtag 檢測,確定數(shù)據(jù)cache是否命中WBLoad操作和R-R操作的結(jié)果寫回7/18/2022chapter3.21需注意的問題在使用定向技術(shù)的情況下,Load 延遲為2個(gè)cyclesLoad和與其相關(guān)的指令間必須有2條指令或兩個(gè)bubbles原因:load的結(jié)果在DS結(jié)束時(shí)可用分支延遲3個(gè)cycles分支與目標(biāo)指令間需要3條指令或3個(gè)bubbles原因:目標(biāo)地址在EX段后才能知道R4000的流水線中,到ALU輸入端有四個(gè)定向源EX/DF, DF/

13、DS, DS/ TC, TC/WB7/18/2022chapter3.22圖示7/18/2022chapter3.23IFISIFRFISIFEXRFISIFDFEXRFISIFDSDFEXRFISIFTCDSDFEXRFISIFWBTCDSDFEXRFISIFTWO CycleLoad LatencyIFISIFRFISIFEXRFISIFDFEXRFISIFDSDFEXRFISIFTCDSDFEXRFISIFWBTCDSDFEXRFISIFTHREE CycleBranch Latency(conditions evaluated during EX phase)Delay slot pl

14、us two stallsBranch likely cancels delay slot if not takenALU輸入端的定向源7/18/2022chapter03.24MIPS R4000 浮點(diǎn)數(shù)操作3個(gè)功能部件組成:FP Adder, FP Multiplier, FP Divider在乘/除操作的最后一步要使用FP Adder FP操作需要2(negate)-112個(gè)(square root)cycles8 種類型的FP units:StageFunctional unitDescriptionAFP adderMantissa ADD stage DFP dividerDivi

15、de pipeline stageEFP multiplierException test stageMFP multiplierFirst stage of multiplierNFP multiplierSecond stage of multiplierRFP adderRounding stageSFP adderOperand shift stageUUnpack FP numbers7/18/2022chapter3.25尾數(shù)Each Stage has one single copy 7/18/2022chapter03.26雙精度浮點(diǎn)數(shù)操作延遲及初始化間隔7/18/2022ch

16、apter03.27浮點(diǎn)指令初始化間隔延遲使用的流水段加、減43U,S+A,A+R,R+S乘84U,E+M,M,M,M,N,N+A,R除3635U,A,R,D28,D+A,D+R,D+A,D+R,A,R求平方根112111U,E,(A+R) 108,A,R取反21U,S求絕對值21U,S浮點(diǎn)比較32U,A,RMIPS FP 流水段7/18/2022chapter3.28FP Instr 1 2 3 4 5 6 7 8Add, SubtractU S+A A+R R+SMultiplyU E+M M M M N N+A RDivideU A R D28 D+A,D+R, D+R, D+A, D+

17、R, A, RSquare rootU E (A+R)108 ARNegateU SAbsolute valueU SFP compareU A RStages:MFirst stage of multiplierNSecond stage of multiplierRRounding stageSOperand shift stageUUnpack FP numbersAMantissa ADD stage DDivide pipeline stageEException test stagechapter3.297/18/2022第二列指出是否add指令可以在n cycles后被發(fā)射cha

18、pter3.307/18/2022A multiply issuing after an Add can always proceed without stallingchapter3.317/18/2022chapter3.327/18/2022R4000性能(1)7/18/2022chapter3.33R4000 性能(2)7/18/2022chapter3.34FP result stall because of FP RAW Hazards基本流水線小結(jié)流水線提高的是指令帶寬(吞吐率),而不是單條指令的執(zhí)行速度相關(guān)限制了流水線性能的發(fā)揮結(jié)構(gòu)相關(guān):需要更多的硬件資源數(shù)據(jù)相關(guān):需要定向,編譯器調(diào)度控制相關(guān):盡早檢測條件,計(jì)算目標(biāo)地址,延遲轉(zhuǎn)移,預(yù)測增加流水線的級數(shù)會(huì)增加相關(guān)產(chǎn)生的可能性異常,浮點(diǎn)運(yùn)算使得流水線控制更加復(fù)雜編譯器可降低數(shù)據(jù)相關(guān)和控制相關(guān)的開銷Load 延遲槽Branch 延遲槽Branch預(yù)測chapter3.357/18/2022Review 流水線技術(shù)并不能提高單個(gè)任務(wù)的執(zhí)行效率,它可以提高整個(gè)系統(tǒng)的吞吐率多個(gè)任務(wù)同時(shí)執(zhí)行,但使用不同的資源流水線性能分析:吞吐率、加速比、效率流水線中的瓶頸最慢的那一段其潛在的加速比流水線的級數(shù)流水段所需時(shí)間不均衡將降低加速比流水線存在裝入時(shí)間和排空時(shí)間,使得加速比降低由于存在相關(guān)問題,會(huì)導(dǎo)致流水線停頓結(jié)

溫馨提示

  • 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論