




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第4 4章章 指令級并行指令級并行Review: Review: 基本流水線基本流水線 流水線提高的是指令帶寬(吞吐率),而不是單條指令的流水線提高的是指令帶寬(吞吐率),而不是單條指令的執行速度執行速度 相關限制了流水線性能的發揮相關限制了流水線性能的發揮 結構相關:需要更多的硬件資源結構相關:需要更多的硬件資源 數據相關:需要定向,編譯器調度數據相關:需要定向,編譯器調度 控制相關:盡早檢測條件,計算目標地址,延遲轉移,預測控制相關:盡早檢測條件,計算目標地址,延遲轉移,預測 增加流水線的級數會增加相關產生的可能性增加流水線的級數會增加相關產生的可能性 異常,浮點運算使得流水線控制更加復
2、雜異常,浮點運算使得流水線控制更加復雜 編譯器可降低數據相關和控制相關的開銷編譯器可降低數據相關和控制相關的開銷 Load 延遲槽延遲槽 Branch 延遲槽延遲槽 Branch預測預測指令級并行的概念指令級并行的概念 計算機系統的并行性,從執行程序的角度,分為:計算機系統的并行性,從執行程序的角度,分為: 指令內部并行:指令內部的微操作指令內部并行:指令內部的微操作 指令級并行:并行執行兩條或多條指令指令級并行:并行執行兩條或多條指令 任務級或過程級并行:并行執行兩個或多個過程或任務任務級或過程級并行:并行執行兩個或多個過程或任務 作業或程序級并行:在多個作業或程序間并行作業或程序級并行:在
3、多個作業或程序間并行 從處理數據的角度,并行性等級分為:從處理數據的角度,并行性等級分為: 字串位串字串位串 字串位并字串位并 字并位串字并位串 全并行全并行 提高并行的三種途徑提高并行的三種途徑 時間重疊時間重疊 資源重復資源重復 資源共享資源共享4.1 4.1 先進流水線技術和指令級并行先進流水線技術和指令級并行(Instruction Level Parallelism)Instruction Level Parallelism) ILP: 無關的指令重疊執行無關的指令重疊執行 流水線的平均流水線的平均CPI Pipeline CPI = Ideal Pipeline CPI + Str
4、uct Stalls + RAW Stalls + WAR Stalls + WAW Stalls + Control Stalls 本章研究本章研究 減少停頓(減少停頓(stalls)數的方法和技術數的方法和技術 基本途徑基本途徑 軟件方法(編譯器優化)軟件方法(編譯器優化) Gcc: 17%控制類指令控制類指令 5 instructions + 1 branch 在基本塊上,得到更多的并行性在基本塊上,得到更多的并行性 挖掘循環級并行挖掘循環級并行 硬件方法硬件方法 動態調度方法動態調度方法 以以DLX的浮點數操作為例的浮點數操作為例采用的基本技術采用的基本技術本章遵循的指令延時本章遵循的
5、指令延時產生結果的指令產生結果的指令使用結果的指令使用結果的指令所需延時所需延時FP ALU opAnother FP ALU op3FP ALU opStore double2 Load doubleFP ALU op1Load doubleStore double0Integer opInteger op0基本塊內的指令級并行基本塊內的指令級并行 基本塊的定義基本塊的定義 直線型代碼,無分支直線型代碼,無分支 單入口單入口 整個程序是由分支語句連接基本塊構成整個程序是由分支語句連接基本塊構成 循環級并行循環級并行 for (i=1; i=1000; i+) x(i) = x(i) + s;
6、 計算計算x(i)時沒有相關時沒有相關 可以并行產生可以并行產生1000個數據個數據這里沒有相關是指沒有數據相關這里沒有相關是指沒有數據相關問題是在生成代碼時會有問題是在生成代碼時會有Branch指令控制相關指令控制相關預測比較容易,但我們必須有預測方案預測比較容易,但我們必須有預測方案 向量處理機模型向量處理機模型 load vectors x and y (up to some machine dependent max) then do result-vec = xvec + yvec in a single instruction簡單循環及其對應的匯編程序簡單循環及其對應的匯編程序fo
7、r (i=1; i=1000; i+) x(i) = x(i) + s; Loop:LDF0,0(R1);F0=vector element ADDD F4,F0,F2;add scalar from F2 SD0(R1),F4;store result SUBIR1,R1,8;decrement pointer 8B (DW) BNEZ R1,Loop;branch R1!=zero NOP;delayed branch slotFP FP 循環中的相關循環中的相關Loop:LDF0,0(R1);F0=vector element ADDD F4,F0,F2;add scalar from
8、F2 SD0(R1),F4;store result SUBIR1,R1,8;decrement pointer 8B (DW) BNEZ R1,Loop;branch R1!=zero NOP;delayed branch slot產生結果的指令產生結果的指令 使用結果的指令使用結果的指令所需的延時所需的延時FP ALU opAnother FP ALU op3FP ALU opStore double2 Load doubleFP ALU op1Load doubleStore double0Integer opInteger op0 需要在哪里加需要在哪里加stalls?FP FP 循環
9、中的相關循環中的相關Loop:LDF0,0(R1);F0=vector element ADDD F4,F0,F2;add scalar in F2 SD0(R1),F4;store result SUBIR1,R1,8;decrement pointer 8B (DW) BNEZ R1,Loop;branch R1!=zero NOP;delayed branch slot產生結果的指令產生結果的指令 使用結果的指令使用結果的指令所需的延時所需的延時FP ALU opAnother FP ALU op3FP ALU opStore double2 Load doubleFP ALU op1L
10、oad doubleStore double0Integer opInteger op0FP FP 循環中的循環中的StallsStalls 10 clocks: 是否可以通過調整代碼順序使是否可以通過調整代碼順序使stalls減到最小減到最小 1 Loop:LDF0,0(R1);F0=vector element 2stall 3ADDD F4,F0,F2;add scalar in F2 4stall 5stall 6 SD0(R1),F4;store result 7 SUBIR1,R1,8;decrement pointer 8B (DW) 8 stall ;書上有錯書上有錯 9 BN
11、EZR1,Loop;branch R1!=zero 10stall;delayed branch slot產生結果的指令產生結果的指令 使用結果的指令使用結果的指令所需的延時所需的延時FP ALU opAnother FP ALU op3FP ALU opStore double2 Load doubleFP ALU op1Load doubleStore double0Integer opInteger op0FP FP 循環中的最少循環中的最少StallsStalls數數 6 clocks: 通過循環展開通過循環展開4次是否可以提高性能次是否可以提高性能? 1 Loop:LDF0,0(R1
12、) 書上書上P135 有錯有錯 2SUBIR1,R1,8 3ADDD F4,F0,F2 2stall 5BNEZ R1,Loop;delayed branch 6 SD8(R1),F4;altered when move past SUBISwap BNEZ and SD by changing address of SD產生結果的指令產生結果的指令 使用結果的指令使用結果的指令所需的延時所需的延時FP ALU opAnother FP ALU op3FP ALU opStore double2 Load doubleFP ALU op1Load doubleStore double0Inte
13、ger opInteger op0循環展開循環展開4 4次次(straightforward way)(straightforward way) Rewrite loop to minimize stalls? 1 Loop: LDF0,0(R1) stall 2ADDDF4,F0,F2 stall stall 3SD0(R1),F4 ;drop SUBI & BNEZ 4LDF6,-8(R1) stall 5ADDDF8,F6,F2 stall stall 6SD-8(R1),F8 ;drop SUBI & BNEZ 7LDF10,-16(R1) stall 8ADDDF12
14、,F10,F2 stall 9SD-16(R1),F12 ;drop SUBI & BNEZ 10LDF14,-24(R1) stall 11ADDDF16,F14,F2 stall stall 12SD-24(R1),F16 13SUBIR1,R1,#32 stall ;alter to 4*8 14BNEZR1,LOOP 15NOP 15 + 4 x (1+2) + 1 = 28 cycles, or 7 per iteration Assumes R1 is multiple of 4StallsStalls數最小的循環展開數最小的循環展開 代碼移動后代碼移動后 SD移動到移動到
15、SUBI后,注意后,注意偏移量的修改偏移量的修改 Loads移動到移動到SD前,注意前,注意偏移量的修改偏移量的修改1 Loop: LDF0,0(R1)2LDF6,-8(R1)3LDF10,-16(R1)4LDF14,-24(R1)5ADDDF4,F0,F26ADDDF8,F6,F27ADDDF12,F10,F28ADDDF16,F14,F29SD0(R1),F410SD-8(R1),F811SUBIR1,R1,#3212SD16(R1),F1213BNEZR1,LOOP14SD8(R1),F16; 8-32 = -24 14 clock cycles, or 3.5 per iteratio
16、n注意第注意第11,12行,行,P137有錯有錯循環展開示例小結循環展開示例小結移動移動SDSD到到SUBISUBI和和BNEZBNEZ后,需要調整后,需要調整 SD中的偏移偏移循環展開對循環間無關的程序是有效的降低循環展開對循環間無關的程序是有效的降低stallsstalls的手段的手段( (對循環級并行)對循環級并行). .不同次的循環,使用不同的寄存器不同次的循環,使用不同的寄存器. .刪除不必要的測試和分支后,需調整循環步長等刪除不必要的測試和分支后,需調整循環步長等控制循環的代碼控制循環的代碼. .注意循環展開中的注意循環展開中的LoadLoad和和Store,Store,不同次循環
17、的不同次循環的Load Load 和和Store Store 是相互獨立的。需要分析對存儲是相互獨立的。需要分析對存儲器的引用,保證他們沒有引用同一地址器的引用,保證他們沒有引用同一地址. .指令調度,必須保證程序運行的結果不變指令調度,必須保證程序運行的結果不變從編譯器角度看代碼移動(從編譯器角度看代碼移動(1/5)1/5) 編譯器分析程序的相關性依賴于給定的流水線編譯器分析程序的相關性依賴于給定的流水線 編譯器進行指令調度來消除相關編譯器進行指令調度來消除相關 (True) (True) 數據相關(數據相關(Data dependenciesData dependencies), ,對于指
18、令對于指令i i和和j j,如果如果 Instruction jInstruction j使用指令使用指令I I產生的結果產生的結果 , , 或或 Instruction j Instruction j 與與instruction kinstruction k相關相關, , 并且并且instruction k instruction k 與與insinstructiontruction I I有數據相關有數據相關. . 如果相關如果相關, , 不能并行執行不能并行執行 對于寄存器比較容易確定對于寄存器比較容易確定(fixed names)(fixed names) 但對但對memorymemo
19、ry的引用,比較難確定的引用,比較難確定: : 100(R4) = 20(R6)?100(R4) = 20(R6)? 在不同次的循環中,在不同次的循環中,does 20(R6) = 20(R6)?does 20(R6) = 20(R6)?下列程序哪里有數據相關下列程序哪里有數據相關? ? 1 Loop:LDF0,0(R1) 2ADDD F4,F0,F2 3SUBIR1,R1,8 4BNEZ R1,Loop;delayed branch 5 SD8(R1),F4;altered when move past SUBI從編譯器角度看代碼移動從編譯器角度看代碼移動(2/5)(2/5) 另一種相關稱為
20、名相關(另一種相關稱為名相關( name dependence): 兩條指令使用同一個名子兩條指令使用同一個名子(register or memory location) 但但不交換數據不交換數據 反相關(反相關(Antidependence) (WAR if a hazard for HW) Instruction j 所寫的寄存器或存儲單元,與所寫的寄存器或存儲單元,與 instruction i 所讀的寄存所讀的寄存器或存儲單元相同,注器或存儲單元相同,注instruction i 是先執行是先執行 輸出相關輸出相關(Output dependence) (WAW if a hazard
21、 for HW) Instruction i 和和instruction j 對同一寄存器或存儲單元進行寫操作,對同一寄存器或存儲單元進行寫操作,必須保證兩條指令的寫順序必須保證兩條指令的寫順序 下列是否有名相關下列是否有名相關? ? 1 Loop: LDF0,0(R1) 2ADDDF4,F0,F2 3SD0(R1),F4 ;drop SUBI & BNEZ 4LDF0,-8(R1) 2ADDDF4,F0,F2 3SD-8(R1),F4 ;drop SUBI & BNEZ 7LDF0,-16(R1) 8ADDDF4,F0,F2 9SD-16(R1),F4 ;drop SUBI
22、& BNEZ 10LDF0,-24(R1) 11ADDDF4,F0,F2 12SD-24(R1),F4 13SUBIR1,R1,#32;alter to 4*8 14BNEZR1,LOOP 15NOP 如何消除名相關如何消除名相關?下列是否存在名相關下列是否存在名相關? ? 1 Loop: LDF0,0(R1) 2ADDDF4,F0,F2 3SD0(R1),F4 ;drop SUBI & BNEZ 4LDF6,-8(R1) 5ADDDF8,F6,F2 6SD-8(R1),F8 ;drop SUBI & BNEZ 7LDF10,-16(R1) 8ADDDF12,F10,F
23、2 9SD-16(R1),F12 ;drop SUBI & BNEZ 10LDF14,-24(R1) 11ADDDF16,F14,F2 12SD-24(R1),F16 13SUBIR1,R1,#32;alter to 4*8 14BNEZR1,LOOP 15NOP 這種方法稱為寄存器重命名這種方法稱為寄存器重命名“register renaming”從編譯器角度看代碼移動(從編譯器角度看代碼移動(3/5)3/5) 訪問存儲單元時,很難判斷名相關訪問存儲單元時,很難判斷名相關 100(R4) = 20(R6)? 不同次的循環,不同次的循環,20(R6) = 20(R6)? 我們給出的示例
24、要求編譯器知道假設我們給出的示例要求編譯器知道假設R1不變,因此不變,因此:0(R1) -8(R1) -16(R1) -24(R1) 因此因此loads和和stores之間相互無關可以移動之間相互無關可以移動從編譯器角度看代碼移動(從編譯器角度看代碼移動(4/5)4/5) 最后一種相關稱為控制相關最后一種相關稱為控制相關( control dependence) Exampleif p1 S1;if p2 S2; S1 依賴于依賴于P1的測試結果,的測試結果,S2依賴于依賴于P2的測試。的測試。從編譯器角度看代碼移動(從編譯器角度看代碼移動(5/5)5/5) 處理控制相關的原則:處理控制相關的
25、原則:: 受分支指令控制的指令,不能移到控制指令之前,以免該指令受分支指令控制的指令,不能移到控制指令之前,以免該指令的執行不在分支指令的控制范圍的執行不在分支指令的控制范圍. 不受分支指令控制的指令,不能移到控制指令之后,以免該指不受分支指令控制的指令,不能移到控制指令之后,以免該指令的執行受分支指令的控制令的執行受分支指令的控制. 減少控制相關可以提高指令的并行性減少控制相關可以提高指令的并行性下列程序段的控制相關下列程序段的控制相關 1 Loop: LDF0,0(R1) 2ADDDF4,F0,F2 3SD0(R1),F4 4SUBIR1,R1,8 5BEQZR1,exit6LDF0,0(
26、R1) 7ADDDF4,F0,F2 8SD0(R1),F4 9SUBIR1,R1,8 10BEQZR1,exit 11LDF0,0(R1) 12ADDDF4,F0,F2 13SD0(R1),F4 14SUBIR1,R1,8 15BEQZR1,exit.循環展開(循環展開(1/3)1/3) Example: 下列程序段存在哪些數據相關下列程序段存在哪些數據相關? (A,B,C 指向不同的存儲區且不存在覆蓋區指向不同的存儲區且不存在覆蓋區)for (i=1; i=100; i=i+1) Ai+1 = Ai + Ci; /* S1 */Bi+1 = Bi + Ai+1; /* S2 */1. S2使
27、用由使用由S1在同一循環計算出的在同一循環計算出的 Ai+1. 2. S1 使用由使用由S1在前一次循環中計算的值,同樣在前一次循環中計算的值,同樣S2也使用由也使用由S2在前一次在前一次循環中計算的值循環中計算的值. 這種存在于循環間的相關,我們稱為這種存在于循環間的相關,我們稱為 “loop-carried dependence” 這表示循環間存在相關,不能并行執行,它與我們前面的例這表示循環間存在相關,不能并行執行,它與我們前面的例子中循環間無關是有區別的子中循環間無關是有區別的循環展開(循環展開(2/3)2/3) Example:A,B,C,D distinct & nonov
28、erlappingfor (i=1; i=100; i=i+1) AI+1 = Ai + Bi; /* S1 */Bi+1 = Ci + Di; /* S2 */1. S1和和S2沒有相關,沒有相關,S1和和S2互換不會影響程序的正確性互換不會影響程序的正確性 2. 在第一次循環中,在第一次循環中,S1依賴于前一次循環的依賴于前一次循環的B1.循環展開(循環展開(3/3)3/3)A1 = A1 + B1;for (i=1; i=99; i=i+1) Bi+1 = Ci + Di;Ai+1 = Ai+1 + Bi+1;B101 = C100 + D100;for (i=1; i out-of-o
29、rder completion硬件方案之一硬件方案之一: : 記分牌記分牌記分牌的基本概念示意圖記分牌的基本概念示意圖記分牌技術要點記分牌技術要點(1/2)1/2) Out-of-order execution 將將ID 段分為段分為:1.Issue譯碼,檢測結構相關譯碼,檢測結構相關2.Read operands等待到無數據相關時,讀操作數等待到無數據相關時,讀操作數 起源于起源于1963年推出的年推出的CDC6600 4 FPU 5 MMU 7 IU 集中相關檢查,互鎖機制解決相關集中相關檢查,互鎖機制解決相關 CDC 6600: 順序發射,亂序執行,亂序完成,順序發射,亂序執行,亂序完成
30、,CDC6600流流水線沒有采用定向技術,只實現非精確中斷水線沒有采用定向技術,只實現非精確中斷 Load /store結構結構 采用這種技術的微處理器企業采用這種技術的微處理器企業 MIPS,HP, IBM Sun 公司的公司的UltraSparc DEC Alpha記分牌技術要點記分牌技術要點(2/2)(2/2) Out-of-order completion = WAR, WAW hazards? WAR的一般解決方案的一般解決方案 對操作排隊,并復制操作數對操作排隊,并復制操作數 僅在讀操作數階段讀寄存器僅在讀操作數階段讀寄存器 對對WAW而言而言, 檢測到相關后,停止發射前一條指令,
31、直到前一條指令檢測到相關后,停止發射前一條指令,直到前一條指令完成完成 要提高效率,需要有多條指令進入執行階段要提高效率,需要有多條指令進入執行階段=必須有多個執行部件或必須有多個執行部件或執行部件是流水化的執行部件是流水化的 記分牌保存相關操作和狀態記分牌保存相關操作和狀態 記分牌用四段代替記分牌用四段代替ID, EX, WB 三段三段帶有記分牌控制的帶有記分牌控制的DLXDLX記分牌控制的四階段(記分牌控制的四階段(1/1/1. Issue指令譯碼,檢測結構相關指令譯碼,檢測結構相關 如果當前指令所使用的功能部件空閑,并且沒有其他活動如果當前指令所使用的功能部件空閑,并且沒有其他活動的指令
32、使用相同的目的寄存器(的指令使用相同的目的寄存器(WAW), 記分牌發射該指令記分牌發射該指令到功能部件,并更新記分牌內部數據,如果有結構相關或到功能部件,并更新記分牌內部數據,如果有結構相關或WAW相關,則該指令的發射暫停,并且也不發射后繼指令相關,則該指令的發射暫停,并且也不發射后繼指令,直到相關解除,直到相關解除. 2. Read operands沒有數據相關時,讀操作數沒有數據相關時,讀操作數如果先前已發射的正在運行的指令不對當前指令的源操作如果先前已發射的正在運行的指令不對當前指令的源操作數寄存器進行寫操作,或者一個正在工作的功能部件已經數寄存器進行寫操作,或者一個正在工作的功能部件
33、已經完成了對該寄存器的寫操作,則該操作數有效完成了對該寄存器的寫操作,則該操作數有效. 操作數有效操作數有效時,記分牌控制功能部件讀操作數,準備執行。時,記分牌控制功能部件讀操作數,準備執行。 記分牌在這一步動態地解決了記分牌在這一步動態地解決了RAW相關,指令可能會亂相關,指令可能會亂序發射序發射.記分牌控制的四階段(記分牌控制的四階段(2 2/2/2)3.Execution取到操作數后執行取到操作數后執行 (EX) 接收到操作數后,功能部件開始執行接收到操作數后,功能部件開始執行. 當計算出結果后,它當計算出結果后,它通知記分牌,可以結束該條指令的執行通知記分牌,可以結束該條指令的執行.
34、4.Write resultfinish execution (WB) 一旦記分牌得到功能部件執行完畢的信息后,記分牌檢測一旦記分牌得到功能部件執行完畢的信息后,記分牌檢測WAR相關,如果沒有相關,如果沒有WAR相關,就寫結果,如果有相關,就寫結果,如果有WAR 相關,則暫停該條指令。相關,則暫停該條指令。Example: DIVDF0,F2,F4 ADDD F10,F0,F8 SUBD F8,F8,F14 CDC 6600 scoreboard 將暫停將暫停 SUBD 直到直到ADDD 讀取操作讀取操作數后,才進入數后,才進入WR段處理。段處理。記分牌的結構記分牌的結構1. Instruct
35、ion status記錄正在執行的各條指令處于四步中的哪一步記錄正在執行的各條指令處于四步中的哪一步2. Functional unit status記錄功能部件記錄功能部件(FU)的狀態。用的狀態。用9個域記錄每個功個域記錄每個功能部件的能部件的9個參量:個參量:Busy指示該部件是否空閑指示該部件是否空閑Indicates whether the unit is busy or notOp該部件所完成的操作該部件所完成的操作Operation to perform in the unit (e.g., + or )Fi其目的寄存器編號其目的寄存器編號Destination register
36、Fj, Fk源寄存器編號源寄存器編號Qj, Qk產生源操作數產生源操作數Fi, Fk的功能部件的功能部件Rj, Rk標識源操作數標識源操作數Fj, Fk是否就緒的標志是否就緒的標志3. Register result status如果存在功能部件對某一寄存器進行寫操作,指如果存在功能部件對某一寄存器進行寫操作,指示具體是哪個功能部件對該寄存器進行寫操作。如果沒有指令對該寄存器示具體是哪個功能部件對該寄存器進行寫操作。如果沒有指令對該寄存器進行寫操作,則該域進行寫操作,則該域 為為Blank記分牌流水線控制記分牌流水線控制Read operandsExecution completeInstru
37、ction statusWrite resultIssueBookkeepingRj No; Rk Nof(if Qj(f)=FU then Rj(f) Yes);f(if Qk(f)=FU then Rk(f) Yes); Result(Fi(FU) 0; Busy(FU) NoBusy(FU) yes; Op(FU) op; Fi(FU) D; Fj(FU) S1; Fk(FU) S2; Qj Result(S1); Qk Result(S2); Rj not Qj; Rk not Qk; Result(D) FU;Rj and RkFunctional unit doneWait unt
38、ilf(Fj( f )Fi(FU) or Rj( f )=No) & (Fk( f ) Fi(FU) or Rk( f )=No)Not busy (FU) and not result(D)*表示方法說明見表示方法說明見 p144Scoreboard ExampleScoreboard ExampleInstruction status ReadExecutionWriteInstructionjkIssueoperands complete ResultLDF634+R2LDF245+R3MULTD F0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Func
39、tional unit statusdestS1S2FU for j FU for kFj?Fk?TimeNameBusyOpFiFjFkQjQkRjRkIntegerNoMult1NoMult2NoAddNoDivideNoRegister result statusClockF0F2F4F6F8F10F12.F30FUInstruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21LDF245+ R3MULTDF0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functi
40、onal unit status:destS1S2FUFUFj?Fk?Ti m e Nam eBusyOpFiFjFkQjQkRjRkIntegerYesLoadF6R2YesMult1NoMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F12.F301FUIntegerScoreboard Example: Cycle 1Scoreboard Example: Cycle 1Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF
41、634+ R212LDF245+ R3MULTDF0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF6R2YesMult1NoMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F12.F302FUInteger Issue 2nd LD?Scoreboard Example: Cycle 2Scoreboard Example: C
42、ycle 2Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R2123LDF245+ R3MULTDF0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF6R2NoMult1NoMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F
43、12.F303FUInteger Issue MULT?Scoreboard Example: Cycle 3Scoreboard Example: Cycle 3Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R3MULTDF0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNoMult
44、1NoMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F12.F304FUIntegerScoreboard Example: Cycle 4Scoreboard Example: Cycle 4Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35MULTDF0F2F4SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functional unit status:destS
45、1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF2R3YesMult1NoMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F12.F305FUIntegerScoreboard Example: Cycle 5Scoreboard Example: Cycle 5Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R356MU
46、LTDF0F2F46SUBDF8F6F2DIVDF10F0F6ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF2R3YesMult1YesMultF0F2F4IntegerNoYesMult2NoAddNoDivideNoRegister result status:ClockF0F2F4F6F8F10 F12.F306FUMult1 IntegerScoreboard Example: Cycle 6Scoreboard Example: Cycle
47、6Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R3567M ULTDF0F2F46SUBDF8F6F27DIVDF10F0F6ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF2R3NoMult1YesMultF0F2F4IntegerNoYesMult2NoAddYesSubF8F6F2IntegerYesNoDivi
48、deNoRegister result status:ClockF0F2F4F6F8F10 F12.F307FUMult1 IntegerAdd Read multiply operands?Scoreboard Example: Cycle 7Scoreboard Example: Cycle 7Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R3567MULTDF0F2F46SUBDF8F6F27DIVDF10F0F68ADDDF6F8F2Functiona
49、l unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerYesLoadF2R3NoMult1YesMultF0F2F4IntegerNoYesMult2NoAddYesSubF8F6F2IntegerYesNoDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F308FUMult1 IntegerAddDivideScoreboard Example: Cycle 8a Scoreboard Example: Cyc
50、le 8a (First half of clock cycle)(First half of clock cycle)Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F46SUBDF8F6F27DIVDF10F0F68ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNoMult1YesMultF0F2F4Y
51、esYesMult2NoAddYesSubF8F6F2YesYesDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F308FUMult1AddDivideScoreboard Example: Cycle 8b Scoreboard Example: Cycle 8b (Second half of clock cycle)(Second half of clock cycle)Instruction status:Read Exec WriteInstructionjkIssue Oper
52、Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F279DIVDF10F0F68ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNo10 Mult1YesMultF0F2F4YesYesMult2No2 AddYesSubF8F6F2YesYesDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F30
53、9FUMult1AddDivide Read operands for MULT & SUB? Issue ADDD?Note RemainingScoreboard Example: Cycle 9Scoreboard Example: Cycle 9Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F279DIVDF10F0F68ADDDF6F8F2Functional unit status:de
54、stS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNo9 Mult1YesMultF0F2F4NoNoMult2No1 AddYesSubF8F6F2NoNoDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F3010FUMult1AddDivideScoreboard Example: Cycle 10Scoreboard Example: Cycle 10Instruction status:Read Exec WriteInstruct
55、ionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F27911DIVDF10F0F68ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNo8 Mult1YesMultF0F2F4NoNoMult2No0 AddYesSubF8F6F2NoNoDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6
56、F8F10 F12.F3011FUMult1AddDivideScoreboard Example: Cycle 11Scoreboard Example: Cycle 11Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F2791112DIVDF10F0F68ADDDF6F8F2Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQ
57、kRjRkIntegerNo7 Mult1YesMultF0F2F4NoNoMult2NoAddNoDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F3012FUMult1Divide Read operands for DIVD?Scoreboard Example: Cycle 12Scoreboard Example: Cycle 12Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+
58、R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F2791112DIVDF10F0F68ADDDF6F8F213Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNo6 Mult1YesMultF0F2F4NoNoMult2NoAddYesAddF6F8F2YesYesDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F3013FUMult1AddDivide
59、Scoreboard Example: Cycle 13Scoreboard Example: Cycle 13Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F2791112DIVDF10F0F68ADDDF6F8F21314Functional unit status:destS1S2FUFUFj?Fk?Time NameBusyOpFiFjFkQjQkRjRkIntegerNo5 Mult1YesMul
60、tF0F2F4NoNoMult2No2 AddYesAddF6F8F2YesYesDivideYesDivF10F0F6Mult1NoYesRegister result status:ClockF0F2F4F6F8F10 F12.F3014FUMult1AddDivideScoreboard Example: Cycle 14Scoreboard Example: Cycle 14Instruction status:Read Exec WriteInstructionjkIssue Oper Comp ResultLDF634+ R21234LDF245+ R35678MULTDF0F2F469SUBDF8F6F2791112DIVDF10F0F68ADDDF6F8F2131
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 園林綠化工程承包合同
- 2024年份1月份民間戲曲劇團巡演經費借貸協議
- 醫護人員的勞動合同范本
- 電工基礎習題(附參考答案)
- 無抵押別墅購房合同范本
- 個體經營者合作合同樣本
- 公共場所廣告位租賃合同書范本
- 櫥柜金牌店長培訓
- 旅行社與租車公司合同模板
- 茶旅游線路設計
- 互動式醫學課堂教學設計
- 某大型三甲醫院智能化設計方案
- 2024年社會工作者之初級社會綜合能力考試題庫含答案
- 短視頻運營(初級)營銷師-巨量認證考試題(附答案)
- 事故調查規程
- 紅木家具營銷策劃方案
- 2024-2030年中國負載均衡器行業競爭狀況及投資趨勢分析報告
- 電力工業企業檔案分類表0-5
- 2025高考語文小說文本:人物形象特點概括分析
- 消防系統維保項目的售后服務方案
- 2023年4月1日江蘇省事業單位統考《綜合知識和能力素質》(管理崗客觀題)原卷+答案
評論
0/150
提交評論