版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單周期CPU高小鵬北京航空航天大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)組成與實(shí)現(xiàn)目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器MIPS-C0指令集加減法指令addurd,rs,rtsuburd,rs,rt立即數(shù)指令orirt,rs,imm16存儲(chǔ)訪問指令lwrt,rs,imm16swrt,rs,imm16分支指令beqrs,rt,imm16函數(shù)調(diào)用指令jaltarget函數(shù)返回指令jrrs312625212016151110650oprsrtrdshamtfunct6位5位5位5位5位6位312625212016151110650oprsrtimm166位5位5位16位312625212016151110650oprsrtimm166位5位5位16位3126250opimm266位5位5位16位312625212016151110650oprsrtimm166位5位5位16位31262521201110650oprs000000000000000funct6位5位5位5位5位6位MIPS-C0指令集加減法指令addurd,rs,rtsuburd,rs,rt立即數(shù)指令orirt,rs,imm16存儲(chǔ)訪問指令lwrt,rs,imm16swrt,rs,imm16分支指令beqrs,rt,imm16函數(shù)調(diào)用指令jaltarget函數(shù)返回指令jrrs312625212016151110650oprsrtrdshamtfunct6位5位5位5位5位6位312625212016151110650oprsrtimm166位5位5位16位312625212016151110650oprsrtimm166位5位5位16位3126250opimm266位5位5位16位312625212016151110650oprsrtimm166位5位5位16位31262521201110650oprs000000000000000funct6位5位5位5位5位6位MIPS-C0指令集從功能角度,MIPS-C0可以構(gòu)造程序設(shè)計(jì)的絕大多數(shù)功能lw、sw:存儲(chǔ)指令的典型代表addu、subu:運(yùn)算類指令的典型代表beq:分支類指令的典型代表jal、jr:支持函數(shù)從結(jié)構(gòu)角度,MIPS-C0包含了所有3種指令格式R型:addu、subu、jrI型:lw、sw、beqJ型:jal注意Jr是R型指令,而不是J型指令MIPS-C0的RTL描述任何指令執(zhí)行的第一步都是取指令R-format:{op,rs,rt,rd,shamt,funct}
MEM[PC]I-format:{op,rs,rt,imm16}
MEM[PC]MIPS-C0的RTL描述指令RTL描述adduR[rd]
R[rs]+R[rt];PC
PC+4subuR[rd]
R[rs]–R[rt];PC
PC+4oriR[rt]
R[rs]|zero_ext(imm16);PC
PC+4lwR[rt]
MEM[R[rs]+sign_ext(imm16)];PC
PC+4swMEM[R[rs]+sign_ext(imm16)]
R[rt];PC
PC+4beqif(R[rs]==R[rt])
thenPC
PC+4+(sign_ext(imm16)||00)
elsePC
PC+4jalPC
PC31..28||instr_index||02;R[31]
PC+4jrPC
R[rs]CPU開發(fā)過程概述5步驟1)分析每條指令的RTL,梳理和總結(jié)出數(shù)據(jù)通路的設(shè)計(jì)需求2)選擇恰當(dāng)?shù)臄?shù)據(jù)通路功能部件3)組裝數(shù)據(jù)通路根據(jù)指令RLT,分析并建立功能部件間的正確連接關(guān)系4)根據(jù)指令RTL,分析功能部件應(yīng)執(zhí)行的功能,反推相應(yīng)的控制信號(hào)取值5)生成控制器構(gòu)造控制信號(hào)真值表,然后推導(dǎo)出控制信號(hào)的最簡(jiǎn)表達(dá)式根據(jù)最簡(jiǎn)表達(dá)式構(gòu)造門電路目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器數(shù)據(jù)通路的主要功能部件指令存儲(chǔ)器(InstructionMemory,IM)讀數(shù)據(jù):輸入地址,輸出數(shù)據(jù)(即指令)數(shù)據(jù)存儲(chǔ)器(DataMemory,DM)讀數(shù)據(jù):輸入地址,輸出數(shù)據(jù)寫數(shù)據(jù):輸入地址&數(shù)據(jù)寄存器堆(RegisterFile,RF)讀寄存器:輸入2個(gè)讀寄存器編號(hào),輸出兩個(gè)32位值寫寄存器:輸入寫寄存器編號(hào)&32位值PCNPC(NextPC,NPC)計(jì)算下一個(gè)PC值:輸入PC,輸入Imm,輸出計(jì)算結(jié)果ALU(ArithmeticandLogicUnit,ALU)加/減/或:輸入2個(gè)操作數(shù),輸出計(jì)算結(jié)果注意模型刻畫了指令執(zhí)行過程中的主要信息流的基本流動(dòng)路徑。模型不是完整的設(shè)計(jì)。對(duì)于分析更細(xì)微、更精確的設(shè)計(jì)細(xì)節(jié)的依賴與連接關(guān)系,模型具有重要指導(dǎo)意義。數(shù)據(jù)通路的抽象模型指令執(zhí)行的主要步驟取指令、譯碼/讀操作數(shù)、執(zhí)行、訪存、回寫
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm數(shù)據(jù)通路分解1/5第1步:取指令(包含2個(gè)同時(shí)執(zhí)行的功能)功能1:PC驅(qū)動(dòng)IM輸出指令功能2:PC驅(qū)動(dòng)NPC計(jì)算下一個(gè)PC值
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm數(shù)據(jù)通路分解2/5第2步:譯碼/讀操作數(shù)(包含2個(gè)同時(shí)執(zhí)行的功能)功能1:IM驅(qū)動(dòng)控制器(圖中未畫)分析指令的opcode和funct域功能2:IM驅(qū)動(dòng)RF讀出2個(gè)寄存器值
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm數(shù)據(jù)通路分解3/5第3步:執(zhí)行RF輸出的寄存器值驅(qū)動(dòng)ALU完成相應(yīng)的計(jì)算算數(shù)運(yùn)算(+,-,*,/),移位,邏輯(&,|),比較(slt,==)同時(shí)還承擔(dān)計(jì)算lw和sw的地址
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm第4步:訪存lw:DM輸入地址后,就輸出數(shù)據(jù)sw:DM有2個(gè)輸入,地址&要寫入的數(shù)據(jù)
只有l(wèi)w和sw指令在該環(huán)節(jié)有實(shí)際操作,其他指令不涉及該環(huán)節(jié)數(shù)據(jù)通路分解4/5
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm第5步:回寫操作:寫ALU計(jì)算結(jié)果或數(shù)據(jù)存儲(chǔ)器讀出的數(shù)據(jù)至寄存器堆beq、jal、jr、sw不涉及該環(huán)節(jié)數(shù)據(jù)通路分解5/5
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫rsrtrdimm對(duì)于很多指令來說,它具有雙重功效它在第3階段服務(wù)于讀取操作數(shù)它在第5階段服務(wù)于回寫結(jié)果為邏輯清晰起見,可以“再部署”一個(gè)寄存器堆前者代表讀出,后者代表寫入寄存器堆在數(shù)據(jù)通路中的獨(dú)特地位
指令存儲(chǔ)器寄存器堆
數(shù)據(jù)存儲(chǔ)器PCNPCALU寄存器堆1.取指令2.譯碼/讀操作數(shù)3.執(zhí)行4.訪存5.回寫為什么是5個(gè)階段?是否可以有不同的階段數(shù)?可以有不同的階段數(shù)早期CPU的階段數(shù)甚至只有2-3個(gè)現(xiàn)代CPU的階段數(shù)甚至可能達(dá)到20-30個(gè)為什么MIPS采用5階段?雖然有些指令用不到5階段,但lw卻必須用到5階段事實(shí)上,有些早期MIPS也不是5階段目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模寄存器組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器1位D寄存器:標(biāo)準(zhǔn)的寄存器1位D寄存器1234567891011moduled_ff(d,q,clk);inputd,clk;outputq;regr;assignq=r;always@(posedgeclk)r<=d;endmodule19r:寄存器將r從q輸出告訴編譯器,以下行為按寄存器建模時(shí)鐘上升沿時(shí),將輸入保存至r1位寫使能D寄存器1位寫使能D寄存器12345678910111213moduled_ff(d,we,q,clk);inputd,we;outputq;inputclk;regr;assignq=r;always@(posedgeclk)if(we)r<=d;endmodule20寄存器建模的完整寫法:if(we)r<=d;elser<=r;Q:為什么可以忽略else?A:對(duì)于缺少的分支,編譯器會(huì)自動(dòng)補(bǔ)充“r<=r”。1位寫使能D異步復(fù)位寄存器1位寫使能D異步復(fù)位寄存器123456789101112131415moduled_ff(d,we,q,clk,rst);inputd,we;outputq;inputclk,rst;regr;assignq=r;always@(posedgeclkorposedgerst)if(rst
)r<=1’b0;elseif(we
)r<=d;endmodule21TIPS:分析方法由于rst在敏感表中,因此rst的有效和clk的有效,均會(huì)導(dǎo)致always語句塊執(zhí)行。這意味著rst對(duì)d的作用與clk無關(guān),故這就是異步復(fù)位。Q:在設(shè)計(jì)中如何選擇異步復(fù)位or同步復(fù)位?32位寫使能寄存器32位寫使能寄存器1234567891011121314moduled32(d,we,q,clk);input[31:0]d;inputwe;output[31:0]q;inputclk;reg[31:0]r;assignq=r;always@(posedgeclk)if(we
)r<=d;endmodule22TIPS:對(duì)于N位寄存器,僅僅改變輸入信號(hào)、輸出信號(hào)和內(nèi)部寄存器定義的位數(shù)即可。目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模PC組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器PCPC就是一個(gè)32位的寄存器因?yàn)槊織l指令占用4B,所以PC的b1與b0恒為032位寄存器可以優(yōu)化為30位寄存器PC需要在系統(tǒng)復(fù)位后有一個(gè)確定的初值,即第1條指令的地址這里先假設(shè)為0000_0000hCLKDI3232DO功能描述Reset有效,寄存器置初值0x0000_0000信號(hào)名方向描述ClkIMIPS-C處理器時(shí)鐘ResetI復(fù)位信號(hào)DI[31:0]I32位輸入DO[31:0]O32位輸出目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模NPC組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器NPC任何指令的第一步除了取指令外,還要更新PCNPC的用途是計(jì)算出下一條指令的地址
指令存儲(chǔ)器PCNPC指令3216指令NPC執(zhí)行的計(jì)算順序執(zhí)行指令addu/subu/ori/lw/swPC+4分支beqPC+4PC+4+imm16信號(hào)名方向描述PC[31:0]I當(dāng)前指令的地址imm16[15:0]I16位偏移brIbeq指令標(biāo)志1:當(dāng)前指令是beq0:當(dāng)前指令不是beqNPC[31:0]O下一條指令的地址NPC(增加zero)任何指令的第一步除了取指令外,還要更新PC更新PC,首先是NPC要計(jì)算出下一條指令的地址
指令存儲(chǔ)器PCNPC指令3216指令NPC執(zhí)行的計(jì)算順序執(zhí)行指令addu/subu/ori/lw/swPC+4分支beqPC+4PC+4+imm16信號(hào)名方向描述PC[31:0]I當(dāng)前指令的地址imm16[15:0]I16位偏移brIbeq指令標(biāo)志1:當(dāng)前指令是beq0:當(dāng)前指令不是beqzeroIrs與rt相等的比較結(jié)果NPC[31:0]O下一條指令的地址beq的RTLPC(rs==rt)?PC+4+sext(imm16):PC+4目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模寄存器堆組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器寄存器堆寄存器堆包含32個(gè)寄存器RD1和RD2:讀出的2個(gè)寄存器值WD:寫回的值寄存器編號(hào)A1和A2:讀取的第1個(gè)和第2個(gè)寄存器的編號(hào)A3:寫入的寄存器編號(hào)寫使能并非所有的指令都要寫寄存器,因此寄存器堆需要有寫使能信號(hào)Wr在時(shí)鐘上升沿時(shí),如果Wr=1,則WD3才能被寫入A3寄存器中與指令存儲(chǔ)類似,寄存器堆執(zhí)行讀出操作時(shí)可視為組合邏輯A1/A2有效一段時(shí)間后,RD1/RD2就輸出正確的值WrA1A2A3WDRD1RD2555323232寄存器堆的設(shè)計(jì)考慮內(nèi)部需要多少個(gè)32位寄存器?31個(gè)。0號(hào)寄存器采用接地的特殊設(shè)計(jì)讀出數(shù)據(jù)功能:32位31選1MUX2個(gè)讀出端口是獨(dú)立工作無需彼此等待寫入數(shù)據(jù)功能:關(guān)鍵是寫使能每個(gè)寄存器需要一個(gè)寫使能DEMUX:分離器/解碼器N位編碼產(chǎn)生2N個(gè)輸出有且僅有1個(gè)輸出有效30WrA1A2A3WDRD1RD2555323232R1R31013101310131&&ENENA3WDWrA1A2RD1RD2XCLKDEMUXdemultiplexer~DEMUX寄存器堆的設(shè)計(jì)考慮示例:2-4型DEMUXA為輸入2位,Y3至Y0均為1位輸出31R1R31013101310131&&ENENA3WDWrA1A2RD1RD2XCLK5-32型DEMUXAY3Y2Y1Y0000001010010100100111000
用行為建模方法建模RFRF寫入語句利用了RW是輸入信號(hào)(即RW是變值)這一特性Verilog建模RF32reg[31:0]rf[31:1];always@(posedgeclk)if(WE)rf[A3]<=WD;assignRD1=(A1==0)?32’b0:rf[A1];assignRD2=…R1R31013101310131&&ENENA3WDWEA1A2RD1RD2XCLK目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模指令存儲(chǔ)器組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器指令存儲(chǔ)器存儲(chǔ)器可以理解為一個(gè)數(shù)組存儲(chǔ)器的地址就是數(shù)組的下標(biāo)給出存儲(chǔ)器地址,存儲(chǔ)器就輸出對(duì)應(yīng)單元的數(shù)據(jù)執(zhí)行讀出操作時(shí),存儲(chǔ)器行為可視為組合邏輯地址A有效一段時(shí)間后,數(shù)據(jù)RD就輸出正確的值這個(gè)所謂的“一段時(shí)間”被稱為訪問時(shí)間accesstime~訪問時(shí)間有關(guān)不同存儲(chǔ)器類型的詳細(xì)內(nèi)容,在存儲(chǔ)層次中介紹D目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模數(shù)據(jù)存儲(chǔ)器組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器數(shù)據(jù)存儲(chǔ)器與指令存儲(chǔ)器不同,數(shù)據(jù)存儲(chǔ)器要支持寫入WD:寫入的數(shù)據(jù)寫使能與寄存器堆類似,數(shù)據(jù)存儲(chǔ)器需要有寫使能信號(hào)Wr存儲(chǔ)器訪問讀:Wr=0,A單元數(shù)據(jù)從RD輸出讀出操作時(shí)可視為組合邏輯,即A有效一段時(shí)間后,RD就輸出正確的值寫:在時(shí)鐘上升沿時(shí),如果Wr=1,則WD被寫入A單元中
CLK只對(duì)寫操作有效,對(duì)讀操作無效WrARDWD3232建模要點(diǎn):內(nèi)部是reg陣列時(shí)序特點(diǎn):寫入的數(shù)據(jù)滯后1個(gè)cycle輸出由寄存器特性決定Verilog建模存儲(chǔ)器37moduleMEM4KB(A,DI,We,DO,clk
);input[9:0]A;input[31:0]DI;inputWe;output[31:0]DO;inputclk;reg[31:0]array[1023:0];assignDO=array[A];always@(posedgeclk)if(We)array[A]<=DI;endmodule123456789101112131415TIPS:建模類似于RF。實(shí)際設(shè)計(jì)芯片時(shí),會(huì)采用定制的庫,而不會(huì)用寄存器方式實(shí)現(xiàn)存儲(chǔ)器。對(duì)于P8,存儲(chǔ)器要用FPGA芯片內(nèi)置的塊存儲(chǔ)器。目錄設(shè)計(jì)方法學(xué)概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模ALU組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器ALU需求分析計(jì)算需求:加、減、或、相等相等方法1:設(shè)計(jì)獨(dú)立的比較電路,例如利用XOR運(yùn)算方法2:執(zhí)行減法運(yùn)算,然后再判斷結(jié)果是否全0指令RTL描述adduR[rd]
R[rs]+R[rt];PC
PC+4subuR[rd]
R[rs]–R[rt];PC
PC+4oriR[rt]
R[rs]|zero_ext(imm16);PC
PC+4lwR[rt]
MEM[R[rs]+sign_ext(imm16)];PC
PC+4swMEM[R[rs]+sign_ext(imm16)]
R[rt];PC
PC+4beqif(R[rs]==R[rt])
thenPC
PC+4+(sign_ext(imm16)||00)
elsePC
PC+4采用方法2,減法電路被重用VerilogHDL建模4位ALU40ALU的功能:加、減、或加/減:不支持overflowop:控制信號(hào)00~加法;01~減法;10~或;11~保留建模方法:利用assign語句實(shí)現(xiàn)加法與減法的2選1`include“head.v”moduleALU(a,b,c,op
);input[3:0]a,b;input[1:0]op;output[3:0]c;assignc=(op==`ALU_ADDU)?(a+b):(op==`ALU_SUBU)?(a+~b+1):(op==`ALU_OR)?(a|b):4’b0000;endmodule123456789101112`defineALU_ADDU
2’b00`defineALU_SUBU
2’b01`defineALU_OR2’b10head.v加減或保留減法運(yùn)算
+ABY32323241相等采用重用減法的思路先執(zhí)行減法,然后再判斷結(jié)果是否全0Zero0:A≠B1:A=BBA323232+++313003020001+++。。。+Cin?0Zero32?01.減法2.判全0問題1判0電路需要多少OR門?問題2如果采用XOR實(shí)現(xiàn)相等,需要多少AND門、OR門、NOT門?42集成
FAB01M1+CinM1SelCin32320?ZeroCM2M2Sel322OR01控制器43根據(jù)控制器的功能表,結(jié)合ALU內(nèi)部結(jié)構(gòu)設(shè)計(jì),可以建立內(nèi)部各控制信號(hào)的真正表,進(jìn)而推導(dǎo)出表達(dá)式,從而構(gòu)造出控制器的門電路結(jié)構(gòu)F功能00加01減10或目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器組裝數(shù)據(jù)通路每條指令都有各自的功能需求,對(duì)應(yīng)的功能部件及其連接關(guān)系也是不同的數(shù)據(jù)通路就是所有功能部件及其連接關(guān)系的集合如何根據(jù)RTL需求組裝數(shù)據(jù)通路?根據(jù)指令的RTL,選取和添加相應(yīng)的部件,并建立正確的連接關(guān)系重復(fù)上述過程數(shù)據(jù)通路的共性階段所有指令都需要:取指令(IF)PC驅(qū)動(dòng)IM,IM輸出指令PC驅(qū)動(dòng)NPC,NPC計(jì)算PC+4然后再輸出至PC(目的是更新PC)IMADPCNPCNPCPC32指令現(xiàn)階段先假設(shè)所有指令都是順序執(zhí)行的32位指令的分解將指令的32位信號(hào)分解為各個(gè)域原理:類似于一路入戶電分成多路室內(nèi)電以Instr[5:0]為例分一路為imm的最低5位另一路為funct分線Splitter32Instr55556166opcodersrtrdshamtfunctimm16
assignfunct=Instr[05:00]assignimm16=Instr[15:00]assignimm26=Instr[25:00]Q:1位信號(hào),分多少路都容易。但多位信號(hào)分若干路,如何確保信號(hào)間不會(huì)產(chǎn)生交叉(短路)?R
IADDU&SUBADDU:R[rd]
R[rs]+R[rt]硬件需求:寄存器堆:2路讀出信號(hào),1路寫回信號(hào)ALU:執(zhí)行加/減RFA1A2A3WDRD1RD2ALUZeroAB555ADDU&SUBADDU:R[rd]
R[rs]+R[rt]連接寄存器堆的輸出
ALU的輸入指令分解出的rs/rs/rd寄存器堆的A1/A2/A3寄存器堆的寫使能RFWr;ALU的控制碼ALUOpRFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdQ1:RFWr取值為0還是1?Q2:ALUOp取值為什么?ORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求zero_ext():這是一個(gè)新的計(jì)算需求原有的功能部件無法滿足該需求RFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求zero_ext():這是一個(gè)新的計(jì)算需求原有的功能部件無法滿足該需求EXT:新增功能部件,用于將16位數(shù)進(jìn)行0擴(kuò)展為32位數(shù)HDL建模:Extender.vmoduleEXT(Imm16,Ext);。。。assignExt={16{0},Imm16};endmodule信號(hào)名稱方向描述Imm16[15:0]輸入16位輸入。Ext[31:0]輸出32位0擴(kuò)展結(jié)果。ORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求如何傳遞32位擴(kuò)展結(jié)果給ALU?如何讓ALU結(jié)果寫入rt而不是rd?RFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdORIORI:R[rt]
R[rs]ORzero_ext(imm16)增加新硬件EXT、2個(gè)MUXRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():這是一個(gè)新的計(jì)算需求EXT無法滿足該需求RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():這是一個(gè)新的計(jì)算需求zero_ext()與sign_ext(),其輸入位數(shù)、輸出位數(shù)及基本目的均相同根據(jù)“高內(nèi)聚、低耦合”原則,由EXT同時(shí)實(shí)現(xiàn)兩種擴(kuò)展較為合理由于EXT同時(shí)支持兩種擴(kuò)展,因此必須增加控制信號(hào)EXTOp信號(hào)名稱方向描述Imm[15:0]輸入16位輸入。EXTOp輸入擴(kuò)展功能選擇0:符號(hào)擴(kuò)展1:無符號(hào)擴(kuò)展Ext[31:0]輸出32位0擴(kuò)展結(jié)果。LWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():這是一個(gè)新的計(jì)算需求zero_ext()與sign_ext(),其輸入位數(shù)、輸出位數(shù)及基本目的均相同根據(jù)“高內(nèi)聚、低耦合”原則,由EXT同時(shí)實(shí)現(xiàn)兩種擴(kuò)展較為合理由于EXT同時(shí)支持兩種擴(kuò)展,因此必須增加控制信號(hào)EXTOpHDL建模:Extender.vmoduleEXT(Imm,F,Ext);。。。assignExt=EXTOp==`ZEXT?{16{0},Imm}:{16{Imm[15]},Imm};endmodule
書寫表達(dá)式時(shí),盡量多使用宏,增加可讀性。LWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求需要DMRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求需要DM需要回寫RFRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelSWSW:MEM[R[rs]+sign_ext(imm16)]
R[rt]連接RF的第2個(gè)輸出
DM的WDRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrBEQ本質(zhì)上,beq涉及2大功能功能1:寄存器比較讓ALU執(zhí)行減法,然后把比較結(jié)果zero傳遞給NPCRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4ZeroBEQ本質(zhì)上,beq涉及2大功能功能2:根據(jù)比較的結(jié)果計(jì)算PC這屬于NPC的功能范疇RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4ZeroBEQ本質(zhì)上,beq涉及2大功能功能2:根據(jù)比較的結(jié)果,計(jì)算PC。這屬于NPC的功能范疇對(duì)于NPC,現(xiàn)在需要知道當(dāng)前指令是否是beq及zero的結(jié)果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信號(hào)名方向描述PC[31:0]I32位輸入Imm[15:0]I16位立即數(shù)BrIbeq指令標(biāo)志1:當(dāng)前指令是beq0:當(dāng)前指令不是beqZero1rs和rt相等標(biāo)志1:相等0:不等NPC[31:0]O32位輸出Adder+4PC擴(kuò)展Adder01PCImmNPCBrZero???PC+4PC+4+sign_ext(imm16||00)注意:此處NPC設(shè)計(jì),未考慮jal和jr指令!BEQ本質(zhì)上,beq涉及2大功能功能2:根據(jù)比較的結(jié)果,計(jì)算PC。這屬于NPC的功能范疇對(duì)于NPC,現(xiàn)在需要知道當(dāng)前指令是否是beq及zero的結(jié)果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信號(hào)名方向描述PC[31:0]I32位輸入Imm[15:0]I16位立即數(shù)BrIbeq指令標(biāo)志1:當(dāng)前指令是beq0:當(dāng)前指令不是beqZero1rs和rt相等標(biāo)志1:相等0:不等NPC[31:0]O32位輸出Adder+4PC擴(kuò)展Adder01PCImmNPCBrZeroBrZeroMUX000010100111&BEQ本質(zhì)上,beq涉及2大功能功能2:根據(jù)比較的結(jié)果,計(jì)算PC。這屬于NPC的功能范疇對(duì)于NPC,現(xiàn)在需要知道當(dāng)前指令是否是beq及zero的結(jié)果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信號(hào)名方向描述PC[31:0]I32位輸入Imm[15:0]I16位立即數(shù)BrIbeq指令標(biāo)志1:當(dāng)前指令是beq0:當(dāng)前指令不是beqZero1rs和rt相等標(biāo)志1:相等0:不等NPC[31:0]O32位輸出
圖中未包含Br和ZeroBEQ組裝if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zero目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器CPU開發(fā)過程概述5步驟1)分析每條指令的RTL,梳理和總結(jié)出數(shù)據(jù)通路的設(shè)計(jì)需求2)選擇恰當(dāng)?shù)臄?shù)據(jù)通路功能部件3)組裝數(shù)據(jù)通路根據(jù)指令RLT,分析并建立功能部件間的正確連接關(guān)系4)根據(jù)指令RTL,分析功能部件應(yīng)執(zhí)行的功能,反推相應(yīng)的控制信號(hào)取值5)生成控制器構(gòu)造控制信號(hào)真值表,然后推導(dǎo)出控制信號(hào)的最簡(jiǎn)表達(dá)式根據(jù)最簡(jiǎn)表達(dá)式構(gòu)造門電路數(shù)據(jù)通路的控制信號(hào)EXTOp: 0
“zero”;1
“sign”BSel: 0
RD2; 1
EXT32ALUOp: “ADD”,“SUB”,“OR”Br: 0+4;1branchDMWr: 1
DM寫使能有效WDSel: 0
ALU;1
MemWRSel: 0
“rt”;1
“rd”RFWr: 1RF寫使能有效RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zero執(zhí)行路徑:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zerorsrtrdimm16執(zhí)行路徑:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrZerorsrtrdimm16執(zhí)行路徑:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=?ALUOp=?01WRSel=?EXT01BSel=?DMARDWD01EXTOp=?WDSel=?DMWr=?ZeroNPCNPCIMMPCPC4IMADPCZeroBr=?rsrtrdimm16執(zhí)行路徑:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=ADD01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=0DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16執(zhí)行路徑:subuSUBU:R[rd]
R[rs]-R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=SUB01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=0DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16執(zhí)行路徑:oriORI:R[rt]
R[rs]ORzero_ext(imm16)RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=OR01WRSel=0EXT01BSel=1DMARDWD01EXTOp=0WDSel=1DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16執(zhí)行路徑:lwLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=ADD01WRSel=0EXT01BSel=1DMARDWD01EXTOp=1WDSel=1DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16執(zhí)行路徑:swSW:MEM[R[rs]+sign_ext(imm16)]
R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=0ALUOp=ADD01WRSel=XEXT01BSel=1DMARDWD01EXTOp=1WDSel=XDMWr=1ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16執(zhí)行路徑:beqBEQRFA1A2A3WDRD1RD2ALUZeroABRFWr=0ALUOp=SUB01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=XDMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=BRif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4目錄概述單周期CPU設(shè)計(jì)模型數(shù)據(jù)通路基礎(chǔ)部件建模組裝數(shù)據(jù)通路控制介紹綜合數(shù)據(jù)通路與控制器合成各指令的控制信號(hào)取值矩陣示例:建立addu的控制信號(hào)取值指令NPCOpRFWrEXTOpALUOpDMWrWRSelWDSelBSeladdu+41
XADD
0100rsrtrdimm16RFA1A2A3WDRD1RD2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年A股市場(chǎng)分析白皮書
- 2026年中藥調(diào)劑(中藥用量控制)試題及答案
- 2026年住房供給側(cè)結(jié)構(gòu)性改革背景下的政策動(dòng)向
- 2025年高職財(cái)務(wù)管理(財(cái)務(wù)會(huì)計(jì))試題及答案
- 2025年大學(xué)管理學(xué)(市場(chǎng)營(yíng)銷原理)試題及答案
- 2025年大學(xué)漢語言文學(xué)(文學(xué)概論)試題及答案
- 2025年大學(xué)大三(操作系統(tǒng))進(jìn)程管理實(shí)踐測(cè)試試題及答案
- 2025年中職物聯(lián)網(wǎng)應(yīng)用技術(shù)(物聯(lián)網(wǎng)感知技術(shù))試題及答案
- 2025年大學(xué)現(xiàn)代種業(yè)技術(shù)(基因育種應(yīng)用)試題及答案
- 2025年高職(網(wǎng)絡(luò)營(yíng)銷與直播電商)直播電商階段測(cè)試題及答案
- 2025年全國(guó)職業(yè)院校技能大賽中職組(母嬰照護(hù)賽項(xiàng))考試題庫(含答案)
- 2026江蘇鹽城市阜寧縣科技成果轉(zhuǎn)化服務(wù)中心選調(diào)10人考試參考題庫及答案解析
- 托管機(jī)構(gòu)客戶投訴處理流程規(guī)范
- 2026年及未來5年中國(guó)建筑用腳手架行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報(bào)告
- 銀行客戶信息安全課件
- 2026年四川單招單招考前沖刺測(cè)試題卷及答案
- 2026年全國(guó)公務(wù)員考試行測(cè)真題解析及答案
- 2025新疆華夏航空招聘筆試歷年難易錯(cuò)考點(diǎn)試卷帶答案解析
- (2025)70周歲以上老年人換長(zhǎng)久駕照三力測(cè)試題庫(附答案)
- 金太陽山西省名校三晉聯(lián)盟2025-2026學(xué)年高三上學(xué)期12月聯(lián)合考試語文(26-177C)(含答案)
- 2026年泌尿護(hù)理知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論