计算机组成原理单周期mips,计算机组成原理CPU单周期数据通路(MIPS)
計(jì)算機(jī)組成原理CPU單周期數(shù)據(jù)通路(MIPS)
【計(jì)算機(jī)組成原理】CPU:單周期數(shù)據(jù)通路(MIPS)
寄存器傳送語(yǔ)言RTL
1)R(r)表示寄存器r的內(nèi)容
2)M(address)表示主存儲(chǔ)器地址address的內(nèi)容
3)傳輸方向“←”表示,從右向左傳輸
4)程序計(jì)數(shù)器PC的內(nèi)容直接用PC表示
輸出信號(hào)改變時(shí)機(jī)
1)setup建立時(shí)間:觸發(fā)時(shí)鐘邊緣之前保持穩(wěn)定一段時(shí)間
2)hold保持時(shí)間:觸發(fā)時(shí)鐘邊緣之后保持穩(wěn)定一段時(shí)間
3)clk-2-Q time鎖存延遲:觸發(fā)時(shí)鐘邊緣之后不能立即變化,有一點(diǎn)點(diǎn)延遲
即:輸入的信號(hào)(1或0)在輸入之前(下跳沿到達(dá)之前)要穩(wěn)住自己,不能出差錯(cuò),在到達(dá)下調(diào)沿時(shí)輸入信號(hào)不會(huì)立刻影響輸出,而是經(jīng)歷一點(diǎn)點(diǎn)延遲(clk2Q)輸出才改變,而與此同時(shí)輸入信號(hào)會(huì)保持更長(zhǎng)一段時(shí)間。
寄存器組解讀
1)ReadinA\RB兩個(gè)讀入接口,符合組合邏輯,輸入5-bit寄存器編號(hào),選擇32個(gè)寄存器之一的內(nèi)容,耗費(fèi)一小段時(shí)間(取數(shù)時(shí)間AccessTime),從BusA\busB輸出(2^5=32)。
2)busWrite是寫(xiě)入接口,是時(shí)序邏輯,在(WriteEnable=1)&&(時(shí)鐘下降沿到達(dá))的情況下經(jīng)過(guò)延遲(CLK2Q)將busW的值寫(xiě)入RW讀入接口指定的寄存器中;WE=0時(shí)即使下降沿到來(lái)也不會(huì)寫(xiě)入。
內(nèi)部結(jié)構(gòu)圖
3)理想數(shù)據(jù)存儲(chǔ)器
① add指令(R-type)
指令:add rd,rs,rt
RTL:
1)M[PC];
2)R[rd]←R[rs]+R[rt];
3)PC ← PC + 4
設(shè)計(jì)思路:不考慮1)3)兩個(gè)公共操作:
(1)Rs、Rt表示兩個(gè)源寄存器編號(hào),故與RA、RB相連,讀取這兩個(gè)寄存器的值,分別由busA、busB送入ALU計(jì)算,由func控制ALUctr進(jìn)行add操作;
(2)結(jié)果送入busW寫(xiě)入RW指定的寄存器,故RW連接Rd,只有當(dāng)結(jié)果不溢出且RegWr=1的情況下才將結(jié)果寫(xiě)入,結(jié)果溢出(OF=1)則送出到溢出處理通路。
花費(fèi)時(shí)間:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取指令時(shí)間+寄存器組取數(shù)時(shí)間+ALU延遲+寄存器建立時(shí)間+時(shí)鐘偏移
ALUctr=add,RegWr=1
② ori指令(I-type)
指令:ori rt,rs,imm16
RTL:
1)M[PC];
2)R[rt] ← R[rs] or ZeroExt(imm16);
3)PC ← PC + 4
設(shè)計(jì)思路:不考慮1)3)兩個(gè)公共操作:
(1)因?yàn)槟康募拇嫫魇莚t,跟R-type的rd不一樣,所以得在RW裝個(gè)多路選擇器,用RegDst控制是用哪個(gè)做目的寄存器(R-type用0,I-type用1);
(2)由于要進(jìn)行立即數(shù)零擴(kuò)展(32位才能送入ALU),添加一個(gè)擴(kuò)展器,用ExtOp=1控制進(jìn)行符號(hào)擴(kuò)展,ExtOp=0控制進(jìn)行零擴(kuò)展;
(3)由于R-type是兩個(gè)寄存器數(shù)運(yùn)算,I-type有一個(gè)來(lái)自立即數(shù),所以要在ALU一個(gè)輸入接口裝一個(gè)多路選擇器,用ALUSrc=0控制寄存器輸入,ALUSrc=1控制立即數(shù)輸入。
時(shí)間:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取數(shù)時(shí)間+寄存器組取數(shù)時(shí)間+ALU延遲+寫(xiě)寄存器的建立時(shí)間+時(shí)鐘偏移
ALUctr=or,RegWr=1,RegDst=1,ExtOp=0,ALUSrc=1
③lw、sw指令(I-type)
指令:lw:lw rt,rs,imm16;sw:sw rt, rs,imm16
RTL:
1)M[PC];
2)Addr←R[rs]+SignExt(imm16);
3)lw:R[rt]←M[Addr];sw:M[Addr]←R[rt];
4)PC ← PC + 4)
設(shè)計(jì)思路:不考慮1)4)兩個(gè)公共操作:
(1)因?yàn)閷?xiě)入目的寄存器的數(shù)據(jù)來(lái)源不是ALU結(jié)果,而是存儲(chǔ)器的輸出,所以要在busW加一個(gè)多路選擇器,用MemtoReg=0控制ALU結(jié)果寫(xiě)入,MemtoReg=1控制存儲(chǔ)器讀出數(shù)據(jù)寫(xiě)入;
(2)因?yàn)橐獜臄?shù)據(jù)存儲(chǔ)器取數(shù),所以添加了一個(gè)數(shù)據(jù)存儲(chǔ)器部件,存儲(chǔ)器的取數(shù)地址由ALU計(jì)算R[rs]+SignExt(imm16)得到,所以ALU結(jié)果連接Adr端,圖中busB輸出端連接DataIn將數(shù)據(jù)寫(xiě)入實(shí)現(xiàn)的是指令sw的功能,注意該寫(xiě)入是時(shí)序邏輯。
花費(fèi)時(shí)間:
lw:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取數(shù)時(shí)間+寄存器組取數(shù)時(shí)間+ALU延遲+數(shù)據(jù)存儲(chǔ)器取數(shù)時(shí)間+寫(xiě)寄存器的建立時(shí)間+時(shí)鐘偏移
sw:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取數(shù)時(shí)間+寄存器組取數(shù)時(shí)間+ALU延遲+寫(xiě)存儲(chǔ)器的建立時(shí)間+時(shí)鐘偏移
ALUctr=addu,RegWr=1,RegDst=1,ExtOp=1,ALUSrc=1,
MemWr=1,MemtoReg=1
④beq指令(I-type)
指令:beq rs,rt,imm16
RTL:
1)M[PC];
2)Cond ←R[rs]-R[rt];
3)if (Cond = 0) {PC ← PC + 4 + (SignExt(imm16) x 4)} else{PC ← PC + 4}
設(shè)計(jì)思路:不考慮1)4)兩個(gè)公共操作:
(1)因?yàn)镻C下地址產(chǎn)生不同,所以增加了下地址邏輯,輸出下一條指令地址,用Branch=1使用分支功能,Branch=0不使用;
(2)Zero為R[rs]-R[rt]的零標(biāo)志,在Branch=1啟用分支功能時(shí),Zero=0表示兩個(gè)源寄存器內(nèi)容相等,應(yīng)該走PC ← PC + 4 + ( SignExt(imm16)x4)這一路,反之走普通的PC←PC + 4,Branch=0時(shí)不用考慮Zero的值,因?yàn)闆](méi)有啟用分支。注意這里的立即數(shù)是相對(duì)偏移指令數(shù),前面的立即數(shù)是相對(duì)偏移存儲(chǔ)單元數(shù)。
時(shí)間:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取數(shù)時(shí)間+寄存器組取數(shù)時(shí)間+ALU延遲+寄存器建立時(shí)間(寫(xiě)入PC)+時(shí)鐘偏移
ALUctr=subu,RegWr=0,RegDst=1/0,ExtOp=1/0,MemWr=0,MemtoReg=1/0,ALUSrc=1,Branch=1
因?yàn)橹噶铋L(zhǎng)度32-bit,主存按字節(jié)編址,所以指令的地址總是4的倍數(shù),所以低兩位總是00,所以PC只用存放前30位,即PC<31:2>,所以下條指令的計(jì)算方法如下:
順序執(zhí)行時(shí):PC<31:2> = PC<31:2> + 1
轉(zhuǎn)移執(zhí)行時(shí):PC<31:2> = PC<31:2> + 1 + SignExt[imm16]
取指令時(shí):指令地址=PC<31:2> 串接“00”
另外:這里用Adder是因?yàn)闊o(wú)需ALUctr
⑤Jump指令(J-type)
指令:j target
RTL:
1)M[PC];
2)PC<31:2>←PC<31:28>串接 target<25:0>
設(shè)計(jì)思路:不考慮1)4)兩個(gè)公共操作:
(1)因?yàn)楣δ苁菬o(wú)條件將目標(biāo)地址寫(xiě)到PC中,所以主要修改的是取指令部件;
(2)因?yàn)樗偷较乱粋€(gè)PC的值不再僅僅是計(jì)算結(jié)果,也可能是直接跳越的結(jié)果,所以在PC的寫(xiě)入端加一個(gè)多路選擇器,用Jump=1控制寫(xiě)入跳躍目的地址,Jump=0控制寫(xiě)入計(jì)算結(jié)果。
時(shí)間:PC的CLK2Q時(shí)間+指令存儲(chǔ)器取數(shù)時(shí)間+寄存器建立時(shí)間(寫(xiě)入PC)+時(shí)鐘偏移
ALUctr=1/0,RegWr=0,RegDst=1/0,ExtOp=1/0,ALUSrc=1/0,MemWr=1,MemtoReg=0,Jump=1
跳轉(zhuǎn)指令的范圍:2^28=256MB的內(nèi)存
【計(jì)算機(jī)組成原理】CPU:單周期數(shù)據(jù)通路(MIPS)
加我一起學(xué)習(xí)
公眾號(hào):凡古一往
計(jì)算機(jī)組成原理CPU單周期數(shù)據(jù)通路(MIPS)相關(guān)教程
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理单周期mips,计算机组成原理CPU单周期数据通路(MIPS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 台山南门坐801路车可以到台山皮肤站?
- 下一篇: 关于行业下面说法正确的是()A房产属于主