the alu control unit
TRANSCRIPT
The ALU Control UnitLecture 33
Section 4.3, Appendix D
Robb T. Koether
Hampden-Sydney College
Mon, Nov 18, 2019
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 1 / 19
1 The Control Unit
2 The ALU Control Unit
3 Assignment
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 2 / 19
Outline
1 The Control Unit
2 The ALU Control Unit
3 Assignment
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 3 / 19
The Control Unit
The Control Unit
RegWriteRegDest MemToReg MemRead MemWriteALUSrc Branch
Control Unit ALUOp ALUOp
Operation
RegWriteRegDest MemToReg MemRead MemWriteALUSrc Branch
Data Path
ALU
Instruction
32 6 6[31:26] [5:0]
2
4
The ALU Control Unit receives input from the Control Unit (derivedfrom the opcode) and from the funct field of the instruction.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 4 / 19
The Control Unit
The Control Unit
RegWriteRegDest MemToReg MemRead MemWriteALUSrc Branch
Control Unit ALUOp ALUOp
Operation
RegWriteRegDest MemToReg MemRead MemWriteALUSrc Branch
Data Path
ALU
Instruction
32 6 6[31:26] [5:0]
2
4
The ALU Control Unit output is a 4-bit value that determines thearithmetic or logical operation performed by the ALU.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 4 / 19
The Op Codes
Instruction op Field funct Fieldlw 100011 XXXXXXsw 101011 XXXXXXbeq 000100 XXXXXXaddi 001000 XXXXXXadd 000000 100000sub 000000 100010and 000000 100100or 000000 100101nor 000000 100111slt 000000 101010
The funct field matters only for R-type instructions.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 5 / 19
The ALUOp Codes
Instruction op Field ALUOpLoad/store word 100011 00
Branch equal 000100 01Add immediate 001000 11
R-type 000000 10
The ALUOp is determined by the op code of the instruction.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 6 / 19
Summary of the Control Unit Output
Control Unit Output
Reg
Writ
e
Reg
Dst
Mem
toR
eg
Mem
Rea
d
Mem
Writ
e
Bra
nch
ALU
Op1
ALU
Op0
RT
lw
sw
beq
OP Op5 Op4 Op3 Op2 Op1 Op0
Input
Output
0 0 0 0 0 0
1 0 0 0 1 1
1 0 1 0 1 1
0 0 0 1 0 0
101 0 0 0 0 1
010 1 1 0 0 0
X1X 0 0 1 0 0X0X 0 0 0 1 0
ALU
Src
0
0
01
addi 0 0 01 0 0 0 1 0 1 0 0 0 1 1
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 7 / 19
The Control Unit
opCode0opCode1opCode2opCode3opCode4opCode5
R-Type lw sw beqRegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
ALUOp1
ALUOp0
addi
Branch
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 8 / 19
Outline
1 The Control Unit
2 The ALU Control Unit
3 Assignment
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 9 / 19
The ALU Control Unit Codes
Instruction funct ALU ALU ControlOperation ALUOp Field Action InputLoad word 00 XXXXXX Add 0010Store word 00 XXXXXX Add 0010
Branch equal 01 XXXXXX Subtract 0110Add immediate 11 XXXXXX Add 0010
Add 10 XX0000 Add 0010Subtract 10 XX0010 Subtract 0110
And 10 XX0100 And 0000Or 10 XX0101 Or 0001Nor 10 XX0111 Nor 1100
Set on less than 10 XX1010 Set on less than 0111
The ALU Control Unit output is determined by the ALUOp and thefunct field.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 10 / 19
The Truth Table
Main Control funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Operationlw 0 0 X X X X X X 0010sw 0 0 X X X X X X 0010beq 0 1 X X X X X X 0110addi 1 1 X X X X X X 0010add 1 0 X X 0 0 0 0 0010sub 1 0 X X 0 0 1 0 0110and 1 0 X X 0 1 0 0 0000or 1 0 X X 0 1 0 1 0001nor 1 0 X X 0 1 1 1 1100slt 1 0 X X 1 0 1 0 0111
What are the Boolean functions that determine the ALU Control Unit’soutput?
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 11 / 19
ALU Op0
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op0
lw 0 0 X X X X X X 0sw 0 0 X X X X X X 0beq 0 1 X X X X X X 0addi 1 1 X X X X X X 0add 1 0 X X 0 0 0 0 0sub 1 0 X X 0 0 1 0 0and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 1nor 1 0 X X 0 1 1 1 0slt 1 0 X X 1 0 1 0 1
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 12 / 19
ALU Op0
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op0
lw 0 0 X X X X X X 0sw 0 0 X X X X X X 0beq 0 1 X X X X X X 0addi 1 1 X X X X X X 0add 1 0 X X 0 0 0 0 0sub 1 0 X X 0 0 1 0 0and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 1nor 1 0 X X 0 1 1 1 0slt 1 0 X X 1 0 1 0 1
Op0 = ALUOp1 · ALUOp0 · (F3 + F1 · F0).
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 12 / 19
ALU Op1
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op1
lw 0 0 X X X X X X 1sw 0 0 X X X X X X 1beq 0 1 X X X X X X 1addi 1 1 X X X X X X 1add 1 0 X X 0 0 0 0 1sub 1 0 X X 0 0 1 0 1and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 0slt 1 0 X X 1 0 1 0 1
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 13 / 19
ALU Op1
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op1
lw 0 0 X X X X X X 1sw 0 0 X X X X X X 1beq 0 1 X X X X X X 1addi 1 1 X X X X X X 1add 1 0 X X 0 0 0 0 1sub 1 0 X X 0 0 1 0 1and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 0slt 1 0 X X 1 0 1 0 1
Op1 = ALUOp1 + ALUOp0 + F2.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 13 / 19
ALU Op2
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op2
sw 0 0 X X X X X X 0lw 0 0 X X X X X X 0beq 0 1 X X X X X X 1addi 1 1 X X X X X X 0add 1 0 X X 0 0 0 0 0sub 1 0 X X 0 0 1 0 1and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 1slt 1 0 X X 1 0 1 0 1
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 14 / 19
ALU Op2
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op2
sw 0 0 X X X X X X 0lw 0 0 X X X X X X 0beq 0 1 X X X X X X 1addi 1 1 X X X X X X 0add 1 0 X X 0 0 0 0 0sub 1 0 X X 0 0 1 0 1and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 1slt 1 0 X X 1 0 1 0 1
Op2 =(
ALUOp1 · ALUOp0
)+(
ALUOp1 · ALUOp0 · F1
).
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 14 / 19
ALU Op3
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op3
lw 0 0 X X X X X X 0sw 0 0 X X X X X X 0beq 0 1 X X X X X X 0addi 1 0 X X 0 0 0 0 0add 1 0 X X 0 0 1 0 0sub 1 0 X X 0 1 0 0 0and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 1slt 1 0 X X 1 0 1 0 0
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 15 / 19
ALU Op3
Instruction funct FieldInstr ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 Op3
lw 0 0 X X X X X X 0sw 0 0 X X X X X X 0beq 0 1 X X X X X X 0addi 1 0 X X 0 0 0 0 0add 1 0 X X 0 0 1 0 0sub 1 0 X X 0 1 0 0 0and 1 0 X X 0 1 0 0 0or 1 0 X X 0 1 0 1 0nor 1 0 X X 0 1 1 1 1slt 1 0 X X 1 0 1 0 0
Op3 = ALUOp1 · ALUOp0 · F1 · F0.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 15 / 19
The ALU Control Unit
Op0 = ALUOp1 · ALUOp0 · (F3 + F1 · F0),
Op1 = ALUOp1 + ALUOp0 + F2,
Op2 =(
ALUOp1 · ALUOp0
)+(
ALUOp1 · ALUOp0 · F1
),
Op3 = ALUOp1 · ALUOp0 · F1 · F0.
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 16 / 19
The ALU Control Unit
The ALU Control Unit
ALUOp
F[6:0]
Op
ALUOp0
Op2
ALUOp1
F0F1F2F3
Op1
Op0
2
6
4
0Op3
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 17 / 19
Outline
1 The Control Unit
2 The ALU Control Unit
3 Assignment
Robb T. Koether (Hampden-Sydney College) The ALU Control Unit Mon, Nov 18, 2019 18 / 19