




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 第一講 流水線數(shù)據(jù)通路和控制主 要 內(nèi) 容°°°°日常生活中的流水線處理例子:洗衣服單周期處理器模型和流水線性能比較什么樣的指令集適合于流水線方式執(zhí)行如何設(shè)計流水線數(shù)據(jù)通路以MIPS指令子集來說明詳細(xì)設(shè)計取指令部件詳細(xì)設(shè)計執(zhí)行部件分析每條指令在流水線中的執(zhí)行過程,遇到各種問題:-資源沖突寄存器和存儲器的信號競爭分支指令的延遲指令間數(shù)據(jù)相關(guān)°如何設(shè)計流水線控制邏輯 分析每條指令執(zhí)行過程中的控制信號 給出控制器設(shè)計過程2009年5月18日星期一Pipeline.2 復(fù)習(xí):A Single Cycle ProcessorRegDst ALUSrc:
2、BranchJump Zero<31:26>Instruction<31:0>opInstruction Fetch UnitClkALUop3RdImm16RtRd<5:0>funcRegDst10MuxRs5Rt3RegWr55ALUctrMemtoRegbusAMemWrZeroRwRaRbbusW3232 32-bit Registers032ClkbusB323203211Data In32imm16 Instr<15:0>3216ClkALUSrcExtOp2009年5月18日星期一Pipeline.3MuxALUMux<0:1
3、5><11:15><21:25>Extender<16:20>WrEn AdrData MemoryALUControlMain Control 復(fù)習(xí):Multiple Cycle Processor° MCP: 一個功能部件在一個指令周期中可以被使用多次。PCWrPCWrCondPCSrcBrWrZeroALUSelAIorDMemWrIRWrRegDstRegWr1323200Zero32Rs0RaRb3232RAdrIdeal Memory WrAdr532RtbusA1325Reg FileRw32014Rt01323232Rd32D
4、inDoutbusW busB321232ALUControl Mux103<< 2ExtendImm1632MemtoRegALUOpExtOpALUSelB2009年5月18日星期一Pipeline.4ALU Mux MuxMuxInstruction Reg MuxPCTarget復(fù)習(xí):Timing Diagram of a Load InstructionInstruction FetchInstr Decode /Reg. FetchData MemoryAddressReg WrClkClk-to-QOld ValueNew ValuePCInstruction Mem
5、ory Access TimeRs, Rt, Rd,Old ValueNew ValueOp, Func1Delay through Control LogicALUctrOld ValueNew ValueExtOpOld ValueNew ValueALUSrcOld ValueNew ValueRegWrOld ValueNew Value2Register File Access TimebusAOld ValueNew Value3Delay through Extender & MuxbusBOld ValueNew ValueALU DelayAddressOld Val
6、ueNew ValueData Memory Access TimebusWOld ValueNew2009年5月18日星期一Pipeline.5Register File Write Time一個日常生活中的例子洗衣服° Laundry ExampleAnn, Brian, Cathy, Daveeach have one load of clothes to wash, dry, and foldABCDWasher takes Dryer takes“Folder” takes30 minutes40 minutes20 minutes如果讓你來管理洗衣店,你會如何安排?Pip
7、elining: Its Natural !2009年5月18日星期一Pipeline.6Sequential Laundry(串行方式)6 PMMidnight789Time111030 4020 3040 20 3040 203040 20Ta s kABOr d e rCD°串行方式下, 4 批衣服需要花費(fèi) 6 小時(4x(30+40+20)=360分鐘)°N批衣服,需花費(fèi)的時間為Nx(30+40+20) = 3N x 30°如果用流水線方式洗衣服,則花多少時間呢?2009年5月18日星期一Pipeline.7Pipelined Laundry: (Star
8、t work ASAP)6 PMMidnight789Time1110304040404020Ta s kA串行方式為6小時,N批則為90N分鐘只需30+4x40+20=210分 (3.5小時)如果有N批衣服呢?所花時間為:30+Nx40+20分鐘假定每一步時間均衡,則比串行方式提高約3倍!BOr d e rCD流水方式下,所花時間主要與最長階段時間有關(guān)!2009年5月18日星期一Pipeline.8 復(fù)習(xí):Load指令的5個階段階段 4階段1階段 2階段 3階段5°Ifetch (取指) : 從指令存儲器取指令并計算PC+4 (用到哪些部件?)指令存儲器、AdderReg/Dec
9、(取數(shù)和譯碼) : 寄存器取數(shù),同時對指令進(jìn)行譯碼 (用到哪些部件?)寄存器堆讀口、指令譯碼器°°Exec (執(zhí)行) : 計算內(nèi)存單元地址 (用到哪些部件?)擴(kuò)展器、ALUMem (讀存儲器) : 從數(shù)據(jù)存儲器中讀 (用到哪些部件?)數(shù)據(jù)存儲器Wr(寫寄存器): 將數(shù)據(jù)寫到寄存器中 (用到哪些部件?)寄存器堆寫口這里寄存器堆的讀口和寫口可看成兩個不同的部件。°°指令的執(zhí)行過程是否和“洗衣”過程類似?是否可以采用類似方式來執(zhí)行指令呢?2009年5月18日星期一Pipeline.9IfetchReg/DecExecMemWr單周期指令模型與流水線性能
10、6;假定以下每步操作所花時間為:-取指:2ns寄存器讀:1nsALU操作:2ns 存儲器讀:2ns 寄存器寫:1nsLoad指令執(zhí)行時間總計為:8ns(假定控制單元、PC訪問、信號傳遞等沒有延遲)°單周期模型每條指令在一個時鐘周期內(nèi)完成時鐘周期等于最長的lw指令的執(zhí)行時間,即:8ns串行執(zhí)行時,N條指令的執(zhí)行時間為:8Nns°流水線性能時鐘周期等于最長階段所花時間為:2ns每條指令的執(zhí)行時間為: 10nsN條指令的執(zhí)行時間為:(2+2xN+1)ns 在N很大時,比串行方式提高約 4 倍若各階段操作均衡,則提高倍數(shù)為:非流水線執(zhí)行時間 / 流水線執(zhí)行時間 = 流水線步驟數(shù)流水
11、線方式下,單條指令的執(zhí)行時間不能縮短,但能大大提高指令的吞吐量2009年5月18日星期一Pipeline.10 流水線指令集的設(shè)計具有什么特征的指令集有利于流水線執(zhí)行呢?°指令長度盡量一致,有利于簡化取指令和指令譯碼操作-MIPS指令都是32位,每次取四個單元的指令,且下址計算方便: PC+4X86指令從1字節(jié)到17字節(jié)不等,使取指部件及其復(fù)雜指令格式少,且源寄存器位置相同,有利于在指令未知時就可取操作數(shù)-MIPS指令的Rs和Rt位置一定,在指令譯碼時就可讀Rs和Rt的值(若位置隨指令不同而不同,則需先譯碼確定指令后才能取寄存器編號)只有l(wèi)oad / Store指令才能訪問存儲器,有
12、利于減少操作步驟,規(guī)整流水線-可以把lw/sw指令的地址計算和運(yùn)算指令的執(zhí)行步驟規(guī)整在同一個周期X86運(yùn)算類指令的操作數(shù)可以是內(nèi)存數(shù)據(jù),故需計算地址、訪存、執(zhí)行數(shù)據(jù)和指令在內(nèi)存中要”對齊”存放,有利于減少訪存次數(shù)和流水線的規(guī)整總之,規(guī)整、簡單和一致等特性有利于指令的流水線執(zhí)行指令的流水線執(zhí)行方式能大大提高指令的吞吐率,現(xiàn)代計算機(jī)都采用流水線方式2009年5月18日星期一Pipeline.11 Load指令的流水線Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Clock1st lw2nd lw3rd lw每個周期有五個功能部件同時在工作后面指令
13、在前面完成取指后馬上開始每個load指令仍然需要五個周期完成但是吞吐率(throughput)提高許多,理想情況下,有:每個周期有一條指令進(jìn)入流水線每個周期都有一條指令完成每條指令的有效周期(CPI)為12009年5月18日星期一Pipeline.12IfetchReg/DecExecMemWrIfetchReg/DecExecMemWrIfetchReg/DecExecMemWr R-type指令的4個階段Cycle 1Cycle 2Cycle 3Cycle 4R-type°°°°Ifetch:取指令并計算PC+4Reg/Dec: 從寄存器取數(shù),同時指
14、令在譯碼器進(jìn)行譯碼Exec:在ALU中對操作數(shù)進(jìn)行計算Wr:ALU計算的結(jié)果寫到寄存器2009年5月18日星期一Pipeline.13IfetchReg/DecExecWr 含R-type和 Load 指令的流水線Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9ClockOps!We have a problem!R-typeR-typeLoadR-typeR-type°上述流水線有個問題: 兩條指令試圖同時寫寄存器 Load在第5階段用寄存器寫口 R-type在第4階段用寄存器寫口把一個功能部件同時被多條
15、指令使用的現(xiàn)象稱為結(jié)構(gòu)冒險(Struture Hazard)為了流水線能順利工作,規(guī)定: 每個功能部件每條指令只能用一次(如:寫口不能用兩次或以上) 每個功能部件必須在相同的階段被使用(如:寫口總是在第五階段被使用)可以用以下兩種方法解決上述結(jié)構(gòu)冒險問題!°°2009年5月18日星期一Pipeline.14IfetchReg/DecExecWrIfetchReg/DecExecWrIfetchReg/DecExecMemWrIfetchReg/DecExecWrIfetchReg/DecExecWr 解決方案1: 在流水線中插入“Bubble”(氣泡)Cycle 1Cycl
16、e 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9ClockLoadR-typePipelineBubbleR-typeR-type° 插入“Bubble”到流水線中,以禁止同一周期有兩次寫寄存器。缺點: 控制邏輯復(fù)雜 第5周期沒有指令被完成(CPI不是1,而實際上是2)方案不可行!2009年5月18日星期一Pipeline.15IfetchReg/DecExecReg/DecExecWrIfetchExecWrIfetchReg/DecWrIfetchReg/DecExecIfetchReg/DecExecMemWrIfetch
17、Reg/DecExecWr 解決方案2: R-type的Wr操作延后一個周期執(zhí)行NOOP!12345R-type° 加一個NOP階段以延遲“寫”操作: 把“寫”操作安排在第5階段, 這樣使R-Type的Mem階段為空NOPCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9ClockR-typeR-typeLoadR-typeR-type這樣使流水線中的每條指令都有相同多個階段!2009年5月18日星期一Pipeline.16IfetchReg/DecExecMemWrIfetchReg/DecExecMemW
18、rIfetchReg/DecExecMemWrIfetchReg/DecExecMemWrIfetchReg/DecExecMemWrIfetchReg/DecExecMemWr Store指令的四個階段Cycle 1Cycle 2Cycle 3Cycle 4NOOP!Store°°°°Ifetch:取指令并計算PC+4Reg/Dec: 從寄存器取數(shù),同時指令在譯碼器進(jìn)行譯碼Exec:16位立即數(shù)符號擴(kuò)展后與寄存器值相加,計算主存地址Mem:將寄存器讀出的數(shù)據(jù)寫到主存°Wr: 加一個空的寫階段,使流水線更規(guī)整!2009年5月18日星期一Pipe
19、line.17IfetchReg/DecExecMemWr Beq的四個階段Cycle 1Cycle 2Cycle 3Cycle 4NOOP!Beq°°°Ifetch: 取指令并計算PC+4Reg/Dec:從寄存器取數(shù),同時指令在譯碼器進(jìn)行譯碼Exec: 執(zhí)行階段 ALU中比較兩個寄存器的大?。ㄗ鰷p法) Adder中計算轉(zhuǎn)移地址Mem: 如果比較相等, 則: 轉(zhuǎn)移目標(biāo)地址寫到PC給出的流水線通路中的處理過程和多周期通路中的有什么不同? 多周期通路中,在Reg/Dec階段投機(jī)進(jìn)行了轉(zhuǎn)移地址的計算!可以減少Branch指令的時鐘數(shù)為什么流水線中不進(jìn)行“投機(jī)”計算?因為
20、,流水線中所有指令的執(zhí)行階段一樣多,Branch指令無需節(jié)省時鐘,因為有比它更復(fù)雜的指令。°°Wr: 加一個空的寫階段,使流水線更規(guī)整!按照上述方式,把所有指令都按照最復(fù)雜的“l(fā)oad”指令所需的五個階段來劃分,不需要的階段加一個“NOP”操作Pipeline.182009年5月18日星期一IfetchReg/DecExecMemWrA Pipelined Datapath(五階段流水線數(shù)據(jù)通路)Clock-to-Q delayClkIfetch (IF)Reg/Dec (ID)Exec (Ex)MemWr有!寄存器寫口ExtOpALUOpBranchRegWr10PC+4
21、PC+4Imm16Imm16ZeroRsDatabusAbusBExecUnitARaRbRFileRw DiMem RA Do WADi1RtRt010IRd為什么需要這些Reg?保存每個周期執(zhí)行的結(jié)果!不同于PC,屬于內(nèi)部寄存器,對P程pe序line員19透明,不需作為現(xiàn)場保存ALUSrcRegDstMemWrMemtoReg下面看一下每條指令在流水線通路中的執(zhí)行過程2009年5月18日星期一 MuxWr階段沒有DataPath嗎?Mem/Wr RegisterEx/Mem RegisterID/Ex RegisterIF/ID RegisterIUnitPC+4PC 取指令(Ifetch
22、) 階段° 第10單元指令:lw $1, 0x100($2)You are here!功能:$1 <-Mem ($2) +0x100ClkIfetchReg/DecExecMemExtOpALUOpBranchRegWr10PC+4PC+4Imm16Imm16ZeroRsbusAbusBExecUnitARaRbRFile1RtRw DiRt010IRd下一目標(biāo):設(shè)計IUnit有誰發(fā)現(xiàn)這里有一個假設(shè)有問題?MIPS指令的地址可能是10嗎?Pipeline.20ALUSrcRegDstMemWrMemtoReg2009年5月18日星期一 MuxMem/Wr RegisterEx/
23、Mem RegisterID/Ex RegisterIF/ID: lw $1, 100 ($2)IUnitPC+4PC = 14Data Me RAmDo WADi 指令部件 IUnit的設(shè)計° 第10單元指令: : lw$1, 0x100($2)隨后的指令在14號單元中!You are here!指令部件的功能是什么?Instr <- MemPC PC<- PC+4ClkReg/DecIfetch10開始從14號單元取指令!這里MUX的控制信號由其他階段產(chǎn)生!“4”10PC 新值(14) 舊輸出(10)應(yīng)該把哪些信息保存到流水段寄存器IF/ID中?應(yīng)保存后面階段要用到的
24、指令和PC+4的值!取指階段有哪些控制信號?不需要控制信號,因為每條指令所執(zhí)行的功能都一樣,是確 定的操作,無需根據(jù)指令的不同來控制執(zhí)行不同的操作!Pipeline.21指令在隨后階段送出譯碼!PC+4用來計算轉(zhuǎn)移目標(biāo)地址!2009年5月18日星期一IF/ID: lw $1, 100 ($2)AdderPC = 14AddressInstruction Memory Instruction流水段寄存器用來存放每個階段(一個時鐘內(nèi))的執(zhí)行結(jié)果總是在下個時鐘到來后的Clock-to-Q寫入 譯碼/取數(shù)(Reg/Dec)階段° Location 10: lw$1, 0x100($2)功能:
25、$1 <- Mem($2) + 0x100You are here!ClkIfetchReg/DecExecMemExtOpALUOpBranchRegWr10PC+4PC+4Imm16Imm16ZeroRsbusAbusBExecUnitARaRbRFile1Rt指令還要存在ID/EX中嗎?Rw DiRt不要,只要存010I相關(guān)信息!RdRegRs,RegRt,Rt,Rd,Imm16, PC+4等被保存在ID/EXE中ALUSrcRegDstMemWrMemtoReg該階段有哪些控制信號?沒有!因是所有指令的公共操作,故無控制信號!2009年5月18日星期一Pipeline.22 Mu
26、xMem/Wr RegisterEx/Mem RegisterID/Ex: Reg. 2 & 0x100IF/ID:IUnitPC+4PCData MemRA Do WADi Load指令的地址計算階段° Location 10: lw $1, 0x100($2)功能:$1 <- Mem($2) + 0x100You are here!指令已被譯碼,可確定執(zhí)行部件的控制信號!ClkIfetchReg/DecExecALUOp=?MemBranchRegWrExtOp=?10PC+4PC+4Imm16Imm16ZeroRsbusAbusBExecUnitARaRbRFil
27、e1RtRw DiRt010IRd如果目的寄存器Rt不傳遞下去,會怎樣?ALUSrc=?MemWr其他指令的Rt作為目的地址,指令執(zhí)行錯誤!RegDst=0MemtoReg下一目標(biāo):設(shè)計執(zhí)行部件(Exec Unit)2009年5月18日星期一Pipeline.23 MuxMem/Wr RegisterEx/Mem: Loads AddressID/Ex RegisterIF/ID:IUnitPC+4PCData MemRA Do WADi執(zhí)行部件(Exec Unit)的設(shè)計You are here!執(zhí)行部件功能是什么?綜合前面每條指令在執(zhí)行階段的功能,Clk 可知: 計算數(shù)據(jù)內(nèi)存地址 計算轉(zhuǎn)移
28、目標(biāo)地址ExecAdder用于計算分支指令的轉(zhuǎn)移地址Mem 一般ALU運(yùn)算Target32Load指令的各控制信號取值?RegDes=0, ALUSrc=1 ALUop=add, Extop=1PC+4busA3232ZeroALUout 32 指令呢?StoreRegDes=x, ALUSrc=1 ALUop=abb, Extop=1Branch指令呢? RegDes=x, ALUSrc=0 ALUop=sub, Extop=1Ori指令呢? RegDes=0, ALUSrc=1 ALUop=or, Extop=0busB032imm1616ALUct31r323ALUOp=?ALUSrc=
29、?ExtOp=?RegDes=1, ALUSrc=0R型指令呢?ALUop=func, Extop=x2009年5月18日星期一Pipeline.24Ex/Mem: Loads Memory AddressALUAdder MuxExtenderID/Ex RegisterALUControl<< 2 Load指令的存儲器讀(Mem)周期°Location 10: lw$1, 0x100($2)功能: $1 <- Mem($2) + 0x100You are here!ClkIfetchReg/DecExecMemExtOpALUOpBranch=0RegWr10P
30、C+4PC+4Imm16Imm16RsZerobusAbusBExecUnitARaRbRFile1RtRw DiRt010IRd比較洗衣流水線,指令流水線有什么不同?洗衣流程不能反向進(jìn)行,但該階段有反向數(shù)據(jù)流,可能會引起結(jié)構(gòu)冒險!以后介紹。Pipeline.25ALUSrcRegDstMemWr=0MemtoReg周期以最長操作為準(zhǔn)設(shè)計Cycle > Tread2009年5月18日星期一 MuxMem/Wr: Loads DataEx/Mem RegisterID/Ex RegisterIF/ID:IUnitPC+4PCData MemRA Do WADi Load指令的回寫(Writ
31、e Back)階段° Location 10: lw$1, 0x100($2)功能:$1 <- Mem($2) + 0x100ClkIfetchReg/DecExecMemWrExtOpALUOpBranchRegWr=110PC+4PC+4Imm16Imm16RsZerobusAbusBExecUnitARaRbRFile1RtRw DiRt010IRd比較洗衣流水線,指令流水線有什么不同?洗衣流程不能反向進(jìn)行,但 該階段有反向數(shù)據(jù)流,可能會引起結(jié)構(gòu)冒險!以后介紹。Pipeline.26ALUSrcRegDstMemWrMemtoReg=1各階段所經(jīng)DataPath已有,控制
32、信號如何得到?2009年5月18日星期一 MuxMem/Wr RegisterEx/Mem RegisterID/Ex RegisterIF/ID:IUnitPC+4PCData MemRA Do WADi 流水線中的Control Signals如何獲得?° 主要考察: 第N階段的控制信號,它取決于是哪條指令的哪個階段。N = Exec, Mem, or Wr (只有這三個階段有控制信號)例: Load的Exec段的控制信號 = Func (Loads Exec)IfetchReg/DecWrRegWrExecALUOp=AddMemBranchExtOp=110PC+4PC+4I
33、mm16Imm16RsZerobusAbusBExecUnitARaRbRFile1RtRw DiRt010IRd為什么 1st 和 2nd 階段沒有控制信號?ALUSrc=1RegDst=0MemWrMemtoRegIF和ID階段的功能對每條指令來說都一樣,且各階段功能部件獨(dú)立!2009年5月18日星期一Pipeline.27 MuxMem/Wr RegisterEx/Mem: Loads AddressID/Ex RegisterIF/ID:IUnitPC+4PCData MemRA Do WADi Load指令:流水線中的控制信號°在取數(shù)/譯碼(Reg/Dec)階段產(chǎn)生本指令每
34、個階段的所有控制信號Exec信號 (ExtOp, ALUSrc, .) 在1個周期后使用Mem信號 (MemWr, Branch) 在2個周期后使用Wr信號 (MemtoReg, RegWr) 在3個周期后使用所以,控制信號也要保存在流水段寄存器中!Reg/DecExecMemWrExtOp ALUSrc ALUOpRegDstMemWr BranchMemtoReg RegWrExtOp ALUSrc ALUOpRegDstMemWr BranchMemtoReg RegWrMemWr BranchMemtoRegRegWrMemtoRegRegWr各個流水段部件在一個時鐘內(nèi)完成某條指令的某
35、個階段的工作!然后,在下個時鐘到達(dá)時,把執(zhí)行的結(jié)果以及前面?zhèn)鬟f過來的后面各階段要用到的所有數(shù) 據(jù)(如:指令、立即數(shù)、目的寄存器等)和控制信號保存到流水線寄存器中!2009年5月18日星期一Pipeline.28Mem/Wr RegisterEx/Mem RegisterID/Ex RegisterIF/ID RegisterMain Control 流水線中的Control Signals通過對前面流水線數(shù)據(jù)通路的分析,得知:°因為每個時鐘都會改變PC的值,所以PC不需要寫控制信號流水段寄存器每個時鐘都會寫入一次,也不需要寫控制信號Ifecth階段和Dec/Reg階段都沒有控制信號E
36、xec階段的控制信號有四個-ExtOp (擴(kuò)展器操作):1- 符號擴(kuò)展;0- 零擴(kuò)展ALUSrc (ALU的B口來源):1- 來源于擴(kuò)展器;0- 來源于BusB ALUOp (主控制器輸出,用于輔助局部ALU控制邏輯來決定ALUCtrl)RegDst (指定目的寄存器):1- Rd;0- RtMem階段的控制信號有兩個-MemWr (DM的寫信號):Store指令時為1,其他指令為0Branch (是否為分支指令):分支指令時為1,其他指令為0Wr階段的控制信號有兩個-MemtoReg (寄存器的寫入源):1- DM輸出;0- ALU輸出RegWr (寄存器堆寫信號):結(jié)果寫寄存器的指令都為1
37、,其他指令為02009年5月18日星期一Pipeline.29 控制邏輯 Control)的設(shè)計流水線控制邏輯的設(shè)計 每條指令的控制信號在指令執(zhí)行期間都不變(誰記得單周期和多周期時是怎樣的情況?) 與單周期控制邏輯設(shè)計類似(誰記得單周期和多周期控制邏輯各是怎樣設(shè)計的?)°設(shè)計過程-控制邏輯分成兩部分主控制邏輯:生成ALUop和其他控制信號局部ALU控制邏輯:根據(jù)ALUop和func字段生成ALUCtrl-用真值表建立指令和控制信號之間的關(guān)系寫出每個控制信號的邏輯表達(dá)式控制的輸出在ID階段生成,并存放在ID/EX流水段寄存器中,然后每來一個時鐘跟著指令傳送到下一級流水段寄存器每個階段所
38、用到的控制信號不同忘記單周期和多周期控制設(shè)計的同學(xué),復(fù)習(xí)一下第五章的內(nèi)容!2009年5月18日星期一Pipeline.30 Load指令:流水線中的控制信號°在取數(shù)/譯碼(Reg/Dec)階段產(chǎn)生本指令每個階段的所有控制信號Exec信號 (ExtOp, ALUSrc, .) 在1個周期后使用Mem信號 (MemWr, Branch) 在2個周期后使用Wr信號 (MemtoReg, RegWr) 在3個周期后使用(這里是否會有問題?)Rt和Data在RegWr后到達(dá)怎么辦?所以,控制信號也要保存在流水段寄存器中!Reg/DecExecMemWr同樣,這里也有問題!ExtOp ALUSr
39、c ALUOpRegDstMemWr BranchMemtoReg RegWrExtOp ALUSrc ALUOpRegDstMemWr BranchMemtoReg RegWrRtMemWr BranchMemtoReg RegWrDataMemtoRegRegWr保存在流水段寄存器中的信息(包括前面階段傳遞來或執(zhí)行的結(jié)果及控制信號)一起被傳遞到下一個流水段!2009年5月18日星期一Pipeline.32Mem/Wr RegisterEx/Mem RegisterID/Ex RegisterIF/ID RegisterMain Control Wr階段的開始: 存在一個實際的問題!ClkC
40、lkRegAdrWrAdrRegWrMemWrRegWrs Clk-to-QMemWrs Clk-to-QRegAdrs Clk-to-QWrAdrs Clk-to-QRegWrMemWrRegAdrDataWrAdrData° 在流水線中也存在地址 和 寫使能之間的“競爭”問題 Wr段開始時,如果RegAdrs (Rd/Rt) Clk-to-Q>RegWrs Clk-to-Q, 則錯寫寄存器! Mem 階段開始時,如果WrAdrs Clk-to-Q° 不能用多周期中的方法!為什么?>MemWrs Clk-to-Q, 則錯寫存儲器!哪個同學(xué)記得多周期中是如何處理
41、“競爭”問題的?Pipeline.332009年5月18日星期一Ex/MemMem/WrData MemoryReg File 流水線中的“競爭”問題° 多周期中解決 Addr 和 WrEn之間競爭問題的方法:保證Addr信號在WriteEnable信號之前到達(dá) 在第 N周期結(jié)束時,讓Addr信號有效 在第 N + 1周期讓W(xué)rEn有效° 上述方法在流水線設(shè)計中不能用,因為: 每個周期必須能夠?qū)慠egister 每個周期必須能夠?qū)慚emoryClockStoreStoreR-typeR-type°如何解決?2009年5月18日星期一Pipeline.34Ifetc
42、hReg/DecExecMemWrIfetchReg/DecExecMemWrIfetchReg/DecExecMemWrIfetchReg/DecExecMemWr 寄存器組的同步和存儲器的同步° 解決方案:將Write Enable和時鐘信號“與”須由電路專家確保不會發(fā)生“定時錯誤”(即:能合理設(shè)計“Clock”!)Clk1. Address, Data, 和 WrEn 必須在Clk邊沿到來后至少穩(wěn)定一個 set-up時間I_AddrI_WrEn2.Clk高電平時間 大于 寫入時間C_WrEnActual writeWrEnC_WrEnWrEnAddressI_WrEnDataC
43、lk等價于I_AddrI_DataReg File or MemoryAddressData相當(dāng)于單周期通路中的理想寄存器和存儲器2009年5月18日星期一Pipeline.35Reg File or Memory第一講小結(jié)°°°°°°指令的執(zhí)行可以像洗衣服一樣,用流水線方式進(jìn)行流水線方式下,若各階段均衡,則指令吞吐率提高N倍(N為流水段數(shù)) 流水線方式下,并不能縮短一條指令的執(zhí)行時間流水段數(shù)以最復(fù)雜指令所需步驟數(shù)為準(zhǔn)(有些指令的某些階段為空操作)每個階段的寬度以最復(fù)雜階段所需時間為準(zhǔn)(盡量調(diào)整使各階段均衡) 以Load指令為準(zhǔn),分為五個階段取指令段(IFetch):取指令、計算PC+4譯碼/讀寄存器(ID/Reg)段:對指令譯碼生成控制信號、讀Rs和Rt 執(zhí)行(EXE)段:計算轉(zhuǎn)移目標(biāo)地址、ALU執(zhí)行相應(yīng)運(yùn)算存儲器(M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南寧房地產(chǎn)市場區(qū)域分化現(xiàn)狀及投資機(jī)遇研究報告
- 2024年秋七年級數(shù)學(xué)上冊第2章整式加減2.2整式加減2.2.2去括號添括號第2課時添括號同步練習(xí)新版滬科版
- 2024年高中物理第三章6第一課時帶電粒子在勻強(qiáng)磁場中的運(yùn)動練習(xí)含解析新人教版選修3-1
- 公共政策制定-洞察及研究
- 12.2.3趨勢圖 課堂檢測(含答案)人教版七年級數(shù)學(xué)下冊
- 數(shù)控裁板鋸項目投資風(fēng)險評估報告
- 汽車點煙器項目投資風(fēng)險評估報告
- 節(jié)溫器項目投資風(fēng)險評估報告
- 2025至2030年中國珊瑚絨毯行業(yè)市場發(fā)展規(guī)模及投資趨勢研判報告
- 公路管理與養(yǎng)護(hù)服務(wù)項目投資風(fēng)險評估報告
- 低碳智慧建筑技術(shù)創(chuàng)新發(fā)展白皮書2024(運(yùn)行管理篇)
- 五朵金花抗抑郁藥
- 2025校招:網(wǎng)絡(luò)工程師筆試題庫及答案
- 2025年下半年江蘇省南通海門區(qū)應(yīng)急管理局招聘政府購買服務(wù)人員2人易考易錯模擬試題(共500題)試卷后附參考答案
- 《結(jié)締組織病本》課件
- 會計理論數(shù)智時代變革邏輯:范式創(chuàng)新與結(jié)構(gòu)重塑
- 2025-2030中國煤制油行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資前景預(yù)測研究報告
- 農(nóng)村供水保障工程項目可行性研究報告(范文參考)
- 活板(含答案與解析)-2024年中考語文之文言文對比閱讀(全國版)
- 新課標(biāo)背景下動態(tài)分層教學(xué)法在初中籃球教學(xué)的實驗研究
- 2025武漢鐵路職業(yè)技術(shù)學(xué)院教師招聘考試試題及答案
評論
0/150
提交評論