以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控課件_第1頁
以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控課件_第2頁
以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控課件_第3頁
以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控課件_第4頁
以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

TheMIPSProcessorImplementation:

Datapath&Control“ComputerOrganization&Design”JohnHennessy,DavidPatterson2003-5-151llxx@TheMIPSProcessorImplementatContent以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和控制部件單周期實現(xiàn)多周期實現(xiàn)2003-5-152llxx@Content以兩種不同的方式構(gòu)建MIPS指令集的數(shù)據(jù)通路和MIPS指令格式100余條指令(Hennessy中33條),共32個通用寄存器指令格式:定長32位R-type:arithmeticinstructionI-type:datatransfer,arithmeticinstruction(如addi)J-type:branchinstruction(conditional&unconditional)op(6bits)rs(5bits)rt(5bits)rd(5bits)shamt(5bits)funct(6bits)op(6bits)rs(5bits)rt(5bits)addr/immediate(16bits)R-typeI-typeop(6bits)rs(5bits)rt(5bits)addr(16bits)J-typeop(6bits)addr(26bits)2003-5-153llxx@MIPS指令格式100余條指令(Hennessy中33條),MIPS尋址模式立即尋址寄存器尋址:R-type基址尋址:I-typePC相對尋址偽直接尋址(pseudodirectaddressing)注意:字長32位26位形式地址左移2位(字對準),與PC的高4位拼接ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegister1.

Immediate

addressing2.

Register

addressing3.

Base

addressing4.

PC-relative

addressing5.

Pseudodirect

addressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrd.

.

.functImmediatePCPC++2003-5-154llxx@MIPS尋址模式立即尋址ByteHalfwordWordReOverview實現(xiàn)不同指令的多數(shù)工作都是相同的,與指令類型無關(guān)取指:將PC送往MEM取數(shù):根據(jù)指令字中的地址域讀寄存器對于Load,只需讀一個寄存器;其他指令,需要兩個寄存器其后的操作各個指令不同,但同類指令非常類似不同類型指令之間也有相同之處,如都要使用ALU訪存指令使用ALU計算地址算邏指令使用ALU完成計算分支指令使用ALU進行條件比較其后,各個指令的工作就不同了訪存指令對存儲器進行讀寫算邏指令將ALU結(jié)果寫回寄存器分支指令將基于比較結(jié)果修改下一條指令的地址2003-5-155llxx@Overview實現(xiàn)不同指令的多數(shù)工作都是相同的,與指令類型AsubsetofcoreMIPSinstructionsetMemory-referenceinstruction(I-type):lw,swlw$s1,100($s2);loadswords,based$s2(rs)sw$s1,100($s2)Arithmetic-logicalinstruction(R-type):add,sub,and,oradd$t1,$t2,$t3;$t2+$t3->$t1

slt$s1,$s2,$s3(if($s2<$s3)then$s1=1,else$s1=0)op(6bits)rs(5bits)rt(5bits)addr(16bits)I-typeop(6bits)rs(5bits)rt(5bits)rd(5bits)shamt(5bits)funct(6bits)R-type2003-5-156llxx@AsubsetofcoreMIPSinstructAsubsetofcoreMIPSinstructionset(con’t)Branchinstruction(J-type):beq,jumpbeq為相對尋址:以npc為基準,指令中的target為16位,進行32位有符號擴展后左移兩位(補“00”,字對準)。jump為pseudodirect:指令中的target為26位,而PC為32位。將target左移2位拼裝在PC的低28位上,PC高4位保持不變。op(6bits)rs(5bits)rt(5bits)addr(16bits)J-typeop(6bits)addr(26bits)2003-5-157llxx@AsubsetofcoreMIPSinstructMIPS指令數(shù)據(jù)通路總圖RegistersRegister

#DataRegister

#DatamemoryAddressDataRegister

#PCInstructionALUInstructionmemoryAddressloadstorearithmeticaddr2003-5-158llxx@MIPS指令數(shù)據(jù)通路總圖RegistersRegister邏輯電路與時鐘組合邏輯(combinational)部件VS.時序邏輯(sequential)部件組合邏輯:輸出只與當前的輸入有關(guān),如ALU順序邏輯:輸出與當前的輸入和狀態(tài)有關(guān),如Reg和MEM。時鐘控制順序邏輯的狀態(tài)變化時刻時鐘邊沿觸發(fā)方式Clock

cycleStateelement1Combinational

logicStateelement22003-5-159llxx@邏輯電路與時鐘組合邏輯(combinational)部件V單周期實現(xiàn)數(shù)據(jù)通路設(shè)計ALU控制主控制部件2003-5-1510llxx@單周期實現(xiàn)數(shù)據(jù)通路設(shè)計2003-5-1510llxx@ust單周期采用時鐘邊沿觸發(fā)方式,所有指令在時鐘的一個邊開始執(zhí)行,在下一個邊執(zhí)行結(jié)束這種方式?jīng)]有實用價值。因為它比允許不同指令類使用不同時鐘數(shù)的方式慢。2003-5-1511llxx@單周期采用時鐘邊沿觸發(fā)方式,所有指令在時鐘的一個邊開始執(zhí)行,取指PCInstructionmemoryReadaddressInstruction4Add指令字長32位2003-5-1512llxx@取指PCInstructionmemoryReadaddreR-type指令的執(zhí)行InstructionRegistersWriteregisterReaddata

1Readdata

2Readregister

1Readregister

2WritedataALUresultALUZeroRegWriteALU

operation3寄存器號寄存器堆操作讀:給出寄存器編號,則寄存器的值自動送到輸出端口寫:需要寄存器編號和控制信號RegWrite,時鐘邊沿觸發(fā)在一個周期內(nèi),可以同時完成讀寫操作,但讀出的是上一個周期寫入的值op(6bits)rs(5bits)rt(5bits)rd(5bits)shamt(5bits)funct(6bits)R-type2003-5-1513llxx@R-type指令的執(zhí)行InstructionRegisterI-type指令的執(zhí)行l(wèi)w$t1,offset($t2);M($t2+offset)->$t1sw$t1,offset($t2);$t1->M($t2+offset)需要對指令字中的16位偏移進行32位帶符號擴展Instruction1632RegistersWriteregisterReaddata

1Readdata

2Readregister

1Readregister

2DatamemoryWritedataReaddataWritedataSignextendALUresultZeroALUAddressMemReadMemWriteRegWriteALU

operation3lwsw2003-5-1514llxx@I-type指令的執(zhí)行l(wèi)w$t1,offset($t2)訪存指令和算邏指令的數(shù)據(jù)通路綜合PCInstructionmemoryReadaddressInstruction1632RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2SignextendALUresultZeroDatamemoryAddressWritedataReaddataMux4AddMuxALURegWriteALU

operation3MemReadMemWriteALUSrcMemtoRegR-typeI-type算邏?訪存?I-type2003-5-1515llxx@訪存指令和算邏指令的數(shù)據(jù)通路綜合PCInstructionm條件轉(zhuǎn)移beqbeq$t1,$t2,offset以分支指令的下一條指令地址為基址Offset左移2位形成“32位字地址”(見PC的形成)1632SignextendZeroALUSumShiftleft

2To

branchcontrol

logicBranch

targetPC

+

4

from

instruction

datapathInstructionAddRegistersWriteregisterReaddata

1Readdata

2Readregister

1Readregister

2WritedataRegWriteALU

operation32003-5-1516llxx@條件轉(zhuǎn)移beqbeq$t1,$t2,offset163R-/I-/J-type操作數(shù)據(jù)通路總圖PCInstructionmemoryReadaddressInstruction1632AddALUresultMuxRegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2Shiftleft

24MuxALU

operation3RegWriteMemReadMemWritePCSrcALUSrcMemtoRegALUresultZeroALUDatamemoryAddressWritedataReaddataMuxSignextendAdd順序?分支?2003-5-1517llxx@R-/I-/J-type操作數(shù)據(jù)通路總圖PCInstructALU控制信號InstructionopcodeALUopInstructionoperationFunctfielddesiredALUactionALUctrlinputLW00Loadwordxxxxxxadd010sw00storewordxxxxxxadd010beq01Brancheqxxxxxxsubtract110R-type10Add100000Add010R-type10Substract100010Substract110R-type10And100100And000R-type10Or100101Or001R-type10Setonlessthan101010Setonlessthan1112003-5-1518llxx@ALU控制信號InstructionopcodeALUop指令譯碼指令格式分析操作碼:在31-26,需要參考5-0Load/store:rs+addr目的地址:對R-type指令,在rd;對load,在rt。因此需要對目的寄存器進行選擇控制0(31-26)rs(25-21)rt(20-16)rd(15-11)shamt(10-6)funct(5-0)35/31rs(25-21)rt(20-16)addr(16bits)R-typeI-type4rs(5bits)rt(5bits)addr(16bits)J-type2003-5-1519llxx@指令譯碼指令格式分析0(31-26)rs(25-21)rt(目的地址選擇兩位的ALUop和func組合產(chǎn)生ALU控制選擇MemtoRegMemReadMemWriteALUOpALUSrcRegDstPCInstructionmemoryReadaddressInstruction[31–0]Instruction

[20–16]Instruction

[25–21]AddInstruction

[5–0]RegWrite41632Instruction

[15–0]0RegistersWriteregisterWritedataWritedataReaddata

1Readdata

2Readregister

1Readregister

2SignextendALUresultZeroDatamemoryAddressReaddataMux10Mux10Mux10Mux1Instruction

[15–11]ALUcontrolShiftleft

2PCSrcALUAddALUresult2003-5-1520llxx@目的地址選擇兩位的ALUop和func組合產(chǎn)生ALU控制選擇控制信號列表RegDst:選擇rt或rd作為寫操作的目的寄存器(R-type指令與load指令)RegWrite:寄存器寫操作控制(R-type指令與store指令)ALUSrc:ALU的第二個操作數(shù)來源(R-type指令與branch指令)MemRead:存儲器讀控制MemWrite:存儲器寫控制MemtoReg:目的寄存器數(shù)據(jù)來源(R-type指令與load指令)PCSrc:NPC控制(順序執(zhí)行與分支)所有信號(除PCSrc)都可以根據(jù)op域譯碼產(chǎn)生PCSrc依據(jù)兩個條件指令是否是beq——增加一個“branch”控制信號指示ALU的Zero狀態(tài)2003-5-1521llxx@控制信號列表RegDst:選擇rt或rd作為寫操作的目的寄存主控制部件PCInstructionmemoryReadaddressInstruction[31–0]Instruction

[20

16]Instruction

[25

21]AddInstruction

[5

0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction

[31

26]41632Instruction

[15

0]00Mux01ControlAddALUresultMux01RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2SignextendMux1ALUresultZeroPCSrcDatamemoryWritedataReaddataMux1Instruction

[15

11]ALUcontrolShiftleft

2ALUAddress2003-5-1522llxx@主控制部件PCInstructionmemoryReadadR-type指令的執(zhí)行過程在一個周期內(nèi)完成如下動作第一步:取指和PC+1第二步:讀兩個源操作數(shù)寄存器$t1和$t2第三步:ALU操作第四步:結(jié)果寫回目的寄存器$t32003-5-1523llxx@R-type指令的執(zhí)行過程在一個周期內(nèi)完成如下動作2003-R-type指令的執(zhí)行路徑PCInstructionmemoryReadaddressInstruction[31–0]Instruction

[20

16]Instruction

[25

21]AddInstruction

[5

0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction

[31

26]41632Instruction

[15

0]00Mux01ALUcontrolControlShiftleft

2AddALUresultMux01RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2SignextendMux1ALUresultZeroDatamemoryWritedataReaddataMux1Instruction

[15

11]ALUAddress2003-5-1524llxx@R-type指令的執(zhí)行路徑PCInstructionmemolw指令的執(zhí)行過程第一步:取指和PC+1第二步:讀寄存器$t2第三步:ALU操作完成$t2與符號擴展后的16位offset加第四步:ALU的結(jié)果作為訪存地址,送往數(shù)據(jù)MEM內(nèi)存中的數(shù)據(jù)送往$t12003-5-1525llxx@lw指令的執(zhí)行過程第一步:取指和PC+12003-5-152lw指令的執(zhí)行路徑PCInstructionmemoryReadaddressInstruction[31–0]Instruction

[15–11]Instruction

[20–16]Instruction

[25–21]AddInstruction

[5–0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction

[31–26]41632Instruction

[15–0]00Mux01ALUcontrolControlShiftleft

2AddALUresultMux01RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2SignextendMux1ALUresultZeroDatamemoryWritedataReaddataMux1ALUAddress2003-5-1526llxx@lw指令的執(zhí)行路徑PCInstructionmemoryRebeq指令的執(zhí)行過程第一步:取指和PC+1第二步:讀寄存器$t1,$t2第三步:ALU將$t1和$t2相減;PC+4與被左移兩位并進行符號擴展后的16位offset相加,作為分支目標地址第四步:ALU的Zero確定應(yīng)送往PC的值2003-5-1527llxx@beq指令的執(zhí)行過程第一步:取指和PC+12003-5-15beq的執(zhí)行路徑PCInstructionmemoryReadaddressInstruction[31–0]Instruction

[15–11]Instruction

[20–16]Instruction

[25–21]AddInstruction

[5–0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction

[31–26]41632Instruction

[15–0]Shiftleft

20Mux01ALUcontrolControlRegistersWriteregisterWritedataReaddata

1Readregister

1Readregister

2Signextend1ALUresultZeroDatamemoryWritedataReaddataMuxReaddata

2AddALUresultMux01Mux10ALUAddress2003-5-1528llxx@beq的執(zhí)行路徑PCInstructionmemoryRea控制部件真值表SignalnameR-typelwswbeqinputsop50110op40000op30010op20001op10110op00110outputsRegDst10xxALUSrc0110MemtoReg01xxRegWrite1100MemRead0100MemWrite0010Branch0001ALUop11000ALUop000012003-5-1529llxx@控制部件真值表SignalnameR-typelwswbejump指令的實現(xiàn)無條件轉(zhuǎn)移,關(guān)鍵在于目標地址的拼裝PC+4的最高4位指令字中的26位地址最低兩位補00“拼裝”:只需合并地址總線增加一個jump指令識別控制J-type2(31-26)addr(25-0)2003-5-1530llxx@jump指令的實現(xiàn)無條件轉(zhuǎn)移,關(guān)鍵在于目標地址的拼裝J-tyjump指令的實現(xiàn)Shiftleft

2PCInstructionmemoryReadaddressInstruction[31–0]DatamemoryReaddataWritedataRegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2Instruction

[15–11]Instruction

[20–16]Instruction

[25–21]AddALUresultZeroInstruction

[5–0]MemtoRegALUOpMemWriteRegWriteMemReadBranchJumpRegDstALUSrcInstruction

[31–26]4MuxInstruction

[25–0]Jump

address

[31–0]PC+4

[31–28]Signextend1632Instruction

[15–0]1Mux10Mux01Mux01ALUcontrolControlAddALUresultMux010ALUShiftleft

22628Address2003-5-1531llxx@jump指令的實現(xiàn)Shiftleft2PCInstruct單周期實現(xiàn)性能討論CPI=1時鐘以執(zhí)行路徑最長的指令為準例:設(shè)MEM=2ns,ALU和加法器=2ns,Reg=1ns,其他部件沒有延時。指令instMEMRegReadALUDataMEMRegWriteTotalR-Type21216nslw212218nssw21227nsbeq2125nsjump22ns用到的部件2003-5-1532llxx@單周期實現(xiàn)性能討論CPI=1指令instMEMRegALU單周期實現(xiàn)性能討論(con’t)設(shè)程序中l(wèi)oad有24%,store有12%,R-type有44%,beq有18%,jump有2%。試比較時鐘定長單周期實現(xiàn)和不定長單周期實現(xiàn)的性能。程序執(zhí)行時間=指令數(shù)×CPI×時鐘寬度定長單周期的時鐘為8ns不定長單周期的時鐘可以是2ns~8ns。其平均指令執(zhí)行時間=8×24%+7×12%+6×44%+5×18%+2×2%=6.3ns因此,變長實現(xiàn)較定長實現(xiàn)快8/6.3=1.27倍2003-5-1533llxx@單周期實現(xiàn)性能討論(con’t)設(shè)程序中l(wèi)oad有24%,s多周期實現(xiàn)根據(jù)指令執(zhí)行所使用的功能部件將執(zhí)行過程劃分成多個階段,每個階段一個周期功能部件可以在不同的階段(周期)復用,有利于降低硬件實現(xiàn)復雜度假設(shè)一個周期內(nèi)可以完成一次MEM訪問,or一次寄存器訪問(2readsoronewrite),or一次ALU操作2003-5-1534llxx@多周期實現(xiàn)根據(jù)指令執(zhí)行所使用的功能部件將執(zhí)行過程劃分成多個階Overview只有一個MEM。一個ALU(單周期中為1個ALU和2個加法器)。增加暫存寄存器IR、MDR、A、B、ALUOut等。PCMemoryAddressInstructionor

dataDataInstructionregisterRegistersRegister

#DataRegister

#Register

#ALUMemorydata

registerABALUOut2003-5-1535llxx@Overview只有一個MEM。一個ALU(單周期中為1個A多周期數(shù)據(jù)通路Shiftleft

2PCMemoryMemDataWritedataMux01RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2Mux01Mux014Instruction[15–0]Signextend3216Instruction[25–21]Instruction[20–16]Instruction[15–0]Instructionregister1Mux032MuxALUresultALUZeroMemorydataregisterInstruction[15–11]ABALUOut01Address取指數(shù)據(jù)訪問PC+4lw/swbeqsw2003-5-1536llxx@多周期數(shù)據(jù)通路Shiftleft2PCMemoryMemD多周期控制信號Shiftleft

2MemtoRegIorDMemReadMemWritePCMemoryMemDataWritedataMux01RegistersWriteregisterWritedataReaddata

1Readdata

2Readregister

1Readregister

2Instruction[15–11]Mux01Mux014ALUOpALUSrcBRegDstRegWriteInstruction[15–0]Instruction

[5–0]Signextend3216Instruction[25–21]Instruction[20–16]Instruction[15–0]Instructionregister1Mux032ALUcontrolMux01ALUresultALUALUSrcAZeroABALUOutIRWriteAddressMemorydataregisterop(6bits)rs(5bits)rt(5bits)rd(5bits)shamt(5bits)funct(6bits)op(6bits)rs(5bits)rt(5bits)addr/immediate(16bits)op(6bits)addr(26bits)2003-5-1537llxx@多周期控制信號Shiftleft2MemtoRegIorDPC的寫控制在一個指令周期內(nèi),PC不能變,因此需要寫控制信號3種情況ALU:PC+4的輸出直接存入PCALUOut:beq指令的目標地址jump指令需要兩個寫控制無條件寫PCWrite:PC+4,jump有條件寫PCWriteCond:beq2003-5-1538llxx@PC的寫控制在一個指令周期內(nèi),PC不能變,因此需要寫控制信號主控制部件2003-5-1539llxx@主控制部件2003-5-1539llxx@.指令執(zhí)行的階段劃分時鐘周期確定每個周期的工作盡量平衡在一個周期內(nèi)的各個部件并行工作共5個階段取指譯碼階段R-type指令執(zhí)行、存儲器地址計算、分支完成階段訪存和R-type指令完成階段存儲器讀完成階段2003-5-1540llxx@指令執(zhí)行的階段劃分時鐘周期確定2003-5-1540llxx取指階段、譯碼階段取指根據(jù)PC從MEM中取指,IR=MEM[PC]計算NPC,PC=PC+4NPC要到下一周期(指“機器周期”)才寫入PC控制信號:MemRead,IRWrite,IorD,ALUSrcA,ALUSrcB,ALUOp,PCWrite指令譯碼和讀寄存器將rs和rt送往A和B:A=Reg[IR[25-21]],B=Reg[IR[20-16]]計算beq目標地址,ALUOut=PC+(sign-extend(IR[15-0]<<2)控制信號:ALUSrcA,ALUSrcB,ALUOp由于此時尚不知是何指令,所以讀寄存器和計算分支地址可能無效,但亦無害,可以節(jié)省后面的操作2003-5-1541llxx@取指階段、譯碼階段取指2003-5-1541llxx@ustR-type指令執(zhí)行、存儲器地址計算、

分支完成階段依賴于指令類型訪存指令A(yù)LUOut=A+(sign-extend(IR[15-0])R-type指令A(yù)LUOut=AopBbeq指令if(A==B)PC=ALUOutjump指令PC=PC[31-28]||(IR[25-0]<<2)需要的控制信號2003-5-1542llxx@R-type指令執(zhí)行、存儲器地址計算、

分支完成階段依賴于指訪存和R-type指令完成階段、存儲器讀完成階段訪存和R-type指令完成階段訪存指令load:MDR=MEM[ALUOut]store:MEM[ALUOut]=B此時store指令完成R-type指令Reg[IR[15-11]]=ALUOut所需的控制信號存儲器讀完成階段Reg[IR[15-11]]=ALUOut2003-5-1543llxx@訪存和R-type指令完成階段、存儲器讀完成階段訪存和R-t控制部件實現(xiàn)有限狀態(tài)機模型(FSM)Moore型(EdwardMoore):輸出僅僅依賴于當前狀態(tài),與輸入無關(guān)Mealy型(GeorgeMealy):輸出與當前狀態(tài)和輸入相關(guān)兩種狀態(tài)機可以相互轉(zhuǎn)換。Moore型速度快。因為輸出與輸入無關(guān),可以在周期一開始就提供控制信號。Mealy型電路較小。EDA工具可以根據(jù)FSM自動綜合生成控制器存儲部件組合邏輯2003-5-1544llxx@控制部件實現(xiàn)有限狀態(tài)機模型(FSM)存儲部件組合邏輯2003多周期控制的MooreFSM,每個狀態(tài)需要一個周期。PCWritePCSource

=

10ALUSrcA

=

1ALUSrcB

=

00ALUOp

=

01PCWriteCondPCSource

=

01ALUSrcA

=1ALUSrcB

=

00ALUOp=

10RegDst

=

1RegWriteMemtoReg

=

0MemWriteIorD

=

1MemReadIorD

=

1ALUSrcA

=

1ALUSrcB

=

10ALUOp

=

00RegDst=0RegWriteMemtoReg=1ALUSrcA

=

0ALUSrcB

=

11ALUOp

=

00MemReadALUSrcA

=

0IorD

=

0IRWriteALUSrcB

=

01ALUOp

=

00PCWritePCSource

=

00Instruction

fetchInstruction

decode/register

fetchJumpcompletionBranchcompletionExecutionMemory

addresscomputationMemoryaccessMemoryaccessR-type

completionWrite-back

step

(Op

=

'LW')

or

(Op

=

'SW')(Op

=

R-type)(Op

=

'BEQ')(Op

=

'J')

(Op

=

'SW')(Op

=

'LW')4019862753Start2003-5-1545llxx@多周期控制的MooreFSM,每個狀態(tài)需要一個周期。PCWr異常處理設(shè)計控制部件的難點在于異常處理,檢查異常和采取相關(guān)的動作通常在關(guān)鍵路徑上進行,影響時鐘周期寬度的確定。討論兩種異常:非法指令和算術(shù)溢出基本的動作是將受干擾的指令的地址保存在EPC中,將控制轉(zhuǎn)移給OS。OS決定采取的處理:為用戶程序提供某些服務(wù);對溢出進行響應(yīng);停止異常程序的執(zhí)行并報告錯誤等。設(shè)異常處理程序地址在c00000000H,它根據(jù)狀態(tài)寄存器cause中的異常原因分別處理異常。2003-5-1546llxx@異常處理設(shè)計控制部件的難點在于異常處理,檢查異常和采取相關(guān)的中斷處理Shiftleft

2MemoryMemDataWritedataMux01Instruction[15–11]Mux014Instruction[15–0]Signextend3216Instruction[25–21]Instruction[20–16]Instruction[15–0]InstructionregisterALUcontrolALUresultALUZeroMemorydataregisterABIorDMemReadMemWriteMemtoRegPCWriteCondPCWriteIRWriteControlOutputsOp[5–0]Instruction[31-26]Instruction

[5–0]Mux02Jumpaddress

[31-0]Instruction

[25–0]2628Shiftleft

2PC

[31-28]1AddressEPCCO

00

00

003CauseALUOpALUSrcBALUSrcARegDs

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論