Professional Documents
Culture Documents
Department of Computer Science Faculty of Computer and Information Sciences Hosei University, Tokyo 184-8584 Japan http://cis.k.hosei.ac.jp/yamin/
op 6 bits
rs 5 bits
rt 5 bits
rd 5 bits
shamt 5 bits
func 6 bits
op 6 bits
rs 5 bits
rt 5 bits
immediate 16 bits
J-format instruction ( j )
31 26 25 0
op 6 bits
address 26 bits
Single-Cycle MIPS CPU p.2/31
sub $17, $18, $19 # $17=$18$19 6-bit op 0 000000 5-bit rs 18 10010 5-bit rt 19 10011 5-bit rd 17 10001 5-bit shamt 0 00000 6-bit funct 34 100010
or $17, $18, $19 # $17=$18 OR $19 6-bit op 0 000000 5-bit rs 18 10010 5-bit rt 19 10011 5-bit rd 17 10001 5-bit shamt 0 00000 6-bit funct 37 100101
sw $17, 100($18) # $Memory[$18+100]=$17 6-bit op 43 101011 5-bit rs 18 10010 5-bit rt 17 10001 16-bit Address 100 0000 0000 0110 0100
j 10000 # jump to 10000 6-bit op 2 000010 26-bit Target address 2500 00 0000 0000 0000 1001 1100 0100
ALU
A[3..0] B[31..0]
mux4x32 Zero
a0[31..0]
a1[31..0] as32 y[31..0] a[31..0] S[31..0] s[31..0] b[31..0] sub ALUC[2..0] ALUC[2] ALUC[1] ALUC[0] 32 0,0,...,0,0,S[31] s1 s0 a3[31..0] a2[31..0] Result[31..0]
ALUC[2..0] Func 000 001 010 110 111 and or add sub slt
Multiplexer
Multiplexer: input A0, A1, S; output Y; if (S==0) Y=A0; else Y=A1; S 0 0 0 0 1 1 1 1 Truth table Input Output A0 A1 Y 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1
Single-Cycle MIPS CPU p.9/31
S 0 1
N1[4..0]
gnd
Read port 1
Write port
DI[31..0]
ck
y[31..0]
Q2[31..0]
a31[31..0]
CK N2[4..0]
Read port 2
Single-Cycle MIPS CPU p.11/31
2-4 Decoder
Input Output e a1 a0 d3 d2 d1 d0 1 1 1 1 0 0 0 0 0 X 0 0 0 0 X 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0
2-4 Decoder
a0 a1 d0 dec2e a0 d0 a1 d1 d2 e d2 Symbol
d1
d2
d3
+
Inst. mem
func
P C
Clock
+
Inst. mem
P C
Data mem
Clock
immediate
Sign extend
+
Inst. mem
P C
Data mem
WE
Clock
immediate
Sign extend
Branch ALUC[2-0] WriteReg NPC[31..0] RegFile Shift left 2 WE N1 N2 Q1 A Zero Result ALU Q2 B 0
+
Inst. mem
rs rt
P C
ND DI CK
Clock
immediate
Sign extend
op
Cntl unit
Jump
Shift left 2
NPC[31..28],A[25..0],0,0 NPC[31..28]
1 0
+
Inst. mem
P C
Clock
MemToReg
RegDes
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
lw
Single-Cycle MIPS CPU p.22/31
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
sw
Single-Cycle MIPS CPU p.23/31
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
beq
Single-Cycle MIPS CPU p.24/31
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
j
Single-Cycle MIPS CPU p.25/31
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
op[5-0] 000000 000000 000000 000000 000000 100011 101011 000100 000010
= =
op[5] op[4] op[3] op[2] op[1] op[0] Rtype func[5] func[4] func[3] func[2] func[1] func[0]
Zero op
Jump
rs
rt
rd
func
Branch
I-format op rs rt immediate
J-format op address
4 PC[31..0]
+
Inst. mem
NPC[31..0]
RegFile rs rt 1 rd ND 0 DI CK Q2 0 N1 N2 Q1 WE
Shift left 2
P C
Data mem
A Zero Result ALU B 1 Write data Mem Data Address 0 1 WE
Clock
immediate Sign extend
Exercise
Design a single-cycle MIPS CPU that can execute the following 13 instructions: add, sub, and, or, slt, lw, sw, beq, j, bne, addi, andi, ori. addi $17, $18, 1 # $17=$181
6-bit op 8 001000 5-bit rs 18 10010 5-bit rt 17 10001 16-bit Immediate 1 1111 1111 1111 1111