Professional Documents
Culture Documents
65 25065 CC311 2013 1 1 1 Control
65 25065 CC311 2013 1 1 1 Control
2
Review: MIPS Instruction Format
31 26 21 16 11 6 0
R-type op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
31 26 21 16 0
I-type op rs rt immediate
6 bits 5 bits 5 bits 16 bits
31 26 0
J- op target address
type 6 bits 26 bits
3
Observations on Instruction Format
4
ALU Control
Summary
ALU control Action
0000 AND
0001 OR
0010 add
0110 subtract
0111 set-on-less-than
1100 NOR
The ALU has 4 control inputs
Allows 16 possible combinations
Only 6 combinations are used.
The rest could be used as don’t-care in minimization
5
ALU Control
Remember:
ALU is needed for all instruction categories
lw and sw (I-Format):
Compute memory address
Arithmetic/logic(R-Format):
Perform arithmetic / logic operation
Branch(beq)(I-Format):
Subtract registers
We need to find ALU control signals from the
information in the instruction
6
ALU Control
How ALU control bits are set
ALUOp = 00 or 01
They are of I-type format
Depend on “op” field & does not depend on “funct” field
lw: 100011 sssss ttttt iiiiiiiiiiiiiiii
7
ALU Control
How the ALU control bits are set depends on ALUOp control
bits and the different function codes for R-type instructions
See fig 5.12, p. 302
ALU
Instruction Instruction Desired ALU control
Opcode ALUOp operation Funct field action input
lw 00 load word XXXXXX add 0010
sw 00 store word XXXXXX add 0010
Branch equal 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
R-type 10 subtract 100010 subtract 0110
R-type 10 AND 100100 and 0000
R-type 10 OR 100101 or 0001
R-type 10 set on less than 101010 set on less than 0111
R-type 11 nor 100111 nor 1100
8
ALU Control
Truth table for the 4 ALU control bits
See Fig 5.13, p. 302
Once the truth table is constructed, it can be optimized and
turned into gates
9
Truth Tables for ALU Control Bits
We need to find the logical functions for O3, O2, O1, and O0
10
Truth Tables for ALU Control Bits
For Operation O3 = 1
ALUOp Funct field Operation Instruction
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 O3 O2 O1 O0
0 0 X X X X X X 0 0 1 0 lw/sw
X 1 X X X X X X 0 1 1 0 beq
1 X X X 0 0 0 0 0 0 1 0 add
1 X X X 0 0 1 0 0 1 1 0 sub
1 X X X 0 1 0 0 0 0 0 0 and
1 X X X 0 1 0 1 0 0 0 1 or
1 X X X 1 0 1 0 0 1 1 1 sll
1 1 X X 0 1 1 1 1 1 0 0 nor
O2 = ALUOp1.ALUOp0 ALUOp1
1
ALUOp0
1
F5 F4 F3 F2 F1 F0
X X X X X X
12
Truth Tables for ALU Control Bits
For Operation O1 =1
ALUOp Funct field Operation Instruction
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 O3 O2 O1 O0
0 0 X X X X X X 0 0 1 0 lw/sw
X 1 X X X X X X 0 1 1 0 beq
1 X X X 0 0 0 0 0 0 1 0 add
1 X X X 0 0 1 0 0 1 1 0 sub
1 X X X 0 1 0 0 0 0 0 0 and
1 X X X 0 1 0 1 0 0 0 1 or
1 X X X 1 0 1 0 0 1 1 1 sll
1 1 X X 0 1 1 1 1 1 0 0 nor
ALOP1.ALUOp0 ALUOp1
ALUOp
ALUOp0 F5
Funct field
F4 F3 F2 F1 F0
0 0 X X X X X X
1 1 X X X X X X
13
Truth Tables for ALU Control Bits
For Operation O0 =1
ALUOp Funct field Operation Instruction
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 O3 O2 O1 O0
0 0 X X X X X X 0 0 1 0 lw/sw
X 1 X X X X X X 0 1 1 0 beq
1 X X X 0 0 0 0 0 0 1 0 add
1 X X X 0 0 1 0 0 1 1 0 sub
1 X X X 0 1 0 0 0 0 0 0 and
1 X X X 0 1 0 1 0 0 0 1 or
1 X X X 1 0 1 0 0 1 1 1 sll
1 1 X X 0 1 1 1 1 1 0 0 nor
14
ALU Control: Logic Circuit
ALU operation
?
F3 Operation3 (Control signals)
Operation2
F (5– 0) F2 4
Operation1
F1
6 Operation0
F0
15
ALU Control
The datapath with necessary multiplexors and
all control lines
16
ALU Control
9 control lines
2 for ALUOp
00 for load/store
10 for R-Format
18
ALU Control
19
Main Control Unit
Input:
6-bit opcode field from the instruction
Output:
9 signals
3 signals for multiplexors
RegDest
MemtoReg
ALUSrc
3 signals to control reads & writes in register file & data
memory
RegWrite
MemRead
MemWrite
1 signal to control whether to Branch or not
Branch
2 signals for ALU
ALUOp
20
Main Control Unit
23
Datapath Operation for R-Format (add)
24
Multicycle Implementation
Each instruction is broken into a series of steps
corresponding to the functional unit operations
needed
Each step executes in one clock cycle
Advantages:
Allows functional units to be used more than once per
instruction
Help reduce HW cost
25
Multicycle Implementation
Major difference from single cycle datapath:
Single memory unit used for both instruction and data
Single ALU instead of three
One or more registers are added after every major functional unit to
hold the output of that unit until the value is used in subsequent clock
cycle
Added registers
Instruction register (IR)
Saves output from memory for instruction read
Memory data register (MDR)
Saves output from memory for data read
A and B registers
Hold the register operands read from register file
ALUOut register
Holds the output from ALU
26
Multicycle Implementation
Multicycle datapath supporting jump and branch instructions
27
Breaking Instructions
Steps:
1. Instruction fetch
2. Instruction decode & register fetch
3. Execution, memory address computation, or
branch completion
4. Memory access or R-type instruction completion
5. Memory read completion
29
Breaking Instructions
1. Instruction fetch
Action taken (in Verilog
terminology)
IR <= Memory[PC]
PC <= PC + 4
Control signals required
MemRead asserted
IRWrite asserted
IorD set to 0 (to select PC)
ALUSrcA set to 0
ALUSrcB set to 01 (to send 4
to ALU)
ALUOp set to 00 (choose
addition)
PCSource set to 00
PCWrite asserted
30
Breaking Instructions
33
Breaking Instructions
4. Memory access or R-type
instruction completion
Determined by the instruction
class
Memory reference (load or
store)
Action taken
MDR <=
Memory[ALUOut];
or
Memory [ALUOut] <=
B;
Control signals required
MemRead asserted (for
load)
MemWrite asserted (for
store)
IorD set to 1
Arithmetic-logical (R-type)
Action taken
Reg [IR [15:11]] <=
ALUOut;
Control signals required
MemtoReg set to 0
RegWrite asserted
34
Breaking Instructions
35
Finite State Machine
36
Finite State Machine
37
Finite State Machine
38
Finite State Machine
39
Finite State Machine
R-type instructions
40
Finite State Machine
Branch instructions
41
Finite State Machine
Jump instructions
42
Finite State Machine
43
Finite State Machine
Complete finite
state machine
control for the
datapath
44
Review: Actions of 1- Bit Control Signals
PCWriteCond None The PC is written if the Zero output from the ALU is also active
Review: Actions of 2- Bit Control Signals
User program
Main plus Data
ADD
Memory SUB this can change!
AND
.
.
.
one of these is
DATA
mapped into one
of these
execution
unit
Microprogramming:
Designing the control as a program that implements
machine instructions in terms of simpler
microinstructions
Microinstruction:
A set of datapath signals that must be asserted in a
given state
Usually stored in ROM or PLA (Appendixes B &C)
Has memory addresses
Executing a microinstruction:
Asserting the control signals specified by the
microinstruction
Terminology
Inconsistent microinstruction
If the instruction requires that a given control signal
be set to 2 different values
Microinstructions are assumed to be executed
sequentially, except for branching
Subroutines in microcode:
Idea is also incorporated in microprogramming.
Microcode could be reused
Microcode control units that are used to implement
complex microprograms often provide support for
microcode subroutines
Designing a Microinstruction Set
1. Start with list of control signals
2. Group signals together that make sense (vs.
random), called “fields”
3. Place fields in some logical order (e.g., ALU
operation & ALU operands first and
microinstruction sequencing last)
4. Create a symbolic legend for the microinstruction
format, showing name of field values and how they
set the control signals
– Use computers to design computers
5. To minimize the width, encode operations that will
never be used at the same time
Fields of Microinstruction
ALU control:
Specify the operation being done by the ALU during this clock; the
result is always written in ALUOut
SRC1:
Specify the source for the first ALU operand
SRC2:
Specify the source for the second ALU operand
Register control:
Specify the read or write for the register file, and the source of the
value for the write
Memory:
Specify the read or write, and the source for the memory.
For a read, specify the destination register
PCWrite control:
Specify the writing for the PC
Sequencing:
Specify how to choose the next microinstruction to be executed
Format of Microinstructions
Should simplify the representation (easy to write &
understand)
Requirements:
A field to control the ALU
3 fields to determine the ALU’s source & destination
registers
Should prevent writing inconsistent microinstructions
Could be achieved by specifying non-overlapping set of control
signals
Signals that that are never asserted simultaneously, can share the
same field
Micro-assemblers check consistency of microcode
Possible Next Microinstruction
1. Sequential:
Increment address of current microinstruction
Put Seq in sequencing field
2. Branch:
Begin execution of next MIPS instruction (initial
microinstruction = state(0))
Put Fetch in sequencing field
3. Dispatch:
Next microinstruction based on control unit input
Creates a table (Dispatch table) containing the
address of target microinstruction
Usually there are more than one dispatch table
Put Dispatch i in sequencing field, where i is
the dispatch table number
Format of Microinstructions
Field name Value Signals active Comment
Used to specify labels to control microcode sequencing. Labels that ends with 1
or 2 are used for dispatching with a jump table that is indexed based on the
opcode
Label A ny string Other labels are used as direct target in microinstruction sequencing
Labels don't generate control signalsdirectly but are used to define contents of
dispatch tables and generate control for the Sequencing field
A dd A LUOp = 00 Cause the A LU to add.
A LU control Subt A LUOp = 01 Cause the A LU to subtract; this implements the compare for branches.
Func code A LUOp = 10 Use the instruction's function code to determine A LU control.
SRC1 PC A LUSrcA = 0 Use the PC as the first A LU input.
A A LUSrcA = 1 Register A is the first A LU input.
B A LUSrcB = 00 Register B is the second A LU input.
SRC2 4 A LUSrcB = 01 Use 4 as the second A LU input.
Extend A LUSrcB = 10 Use output of the sign extension unit as the second A LU input.
Extshft A LUSrcB = 11 Use the output of the shift-by-two unit as the second A LU input.
Read Read two registers using the rs and rt fields of the IR as the register
numbers and putting the data into registers A and B.
Write A LU RegWrite, Write a register using the rd field of the IR as the register number and
Register RegDst = 1, the contents of the A LUOut as the data.
control MemtoReg = 0
Write MDR RegWrite, Write a register using the rt field of the IR as the register number and
RegDst = 0, the contents of the MDR as the data.
MemtoReg = 1
Read PC MemRead, Read memory using the PC as address; write result into IR (and
lorD = 0 the MDR).
Memory Read A LU MemRead, Read memory using the A LUOut as address; write result into MDR.
lorD = 1
Write A LU MemWrite, Write memory using the A LUOut as address, contents of B as the
lorD = 1 data.
A LU PCSource = 00 Write the output of the A LU into the PC.
PCWrite
PC write control A LUOut-cond PCSource = 01, If the Zero output of the A LU is active, write the PC with the contents
PCWriteCond of the register A LUOut.
jump address PCSource = 10, Write the PC with the jump address from the instruction.
PCWrite
Seq A ddrCtl = 11 Choose the next microinstruction sequentially.
Sequencing Fetch A ddrCtl = 00 Go to the first microinstruction to begin a new instruction.
Dispatch 1 A ddrCtl = 01 Dispatch using the ROM 1.
Dispatch 2 A ddrCtl = 10 Dispatch using the ROM 2.
Fetch, Decode, & Increment PC
Microinstructions needed
Microinstruction ALU Register PCWrite
number Label Control SRC1 SRC2 control Memory control Sequencing
1 Fetch Add PC 4 Read PC ALU Seq
2 Add PC ExtShft Read Dispatch 1
1st microinstruction
Fields Effect
ALU control, SRC1, SRC2 Compute PC + 4. (The value is also written into
ALUOut though it will never be read from there.)
Memory Fetch instruction into IR
PCWrite control Causes the output of the ALU to be written into
the pC
Sequencing Go to the next microinstruction
2nd microinstruction
Fields Effect
ALU control, SRC1, SRC2 Store PC + sign extension(IR[15:0]) << 2 into
ALUOut
Use the rs & rt fields to read the registers placing
Register control the data in A and B
Use dispatch table 1 to choose the next
Sequencing microinstruction address
Memory Reference Instructions
Microinstructions needed
Microinstruction ALU Register PCWrite
number Label Control SRC1 SRC2 control Memory control Sequencing
1 Mem1 Add A Extend Dispatch 2
2-a-1 Lw2 Read ALU Seq
2-a-2 Write MDR Fetch
2-b Sw2 Write ALU Fetch
Fields Effect
Mem1
ALU control, SRC1, SRC2 Compute the memory address: Register(rs) + sign-
extend (IR[15:0]), writing the result into ALUOut
Sequencing Use dispatch table 2 to jump to the
microinstruction labeled either LW2 or SW2
Fields Effect
Fields Effect
LW2-a-2
Register control Write the contents of the MDR into the register file
entry specified by rt
Sequencing Go to the microinstruction labeled "Fetch"
Fields Effect
SW2
Memory Write memory using contents of ALUOut as the
address and the contents of B as the value
Sequencing Go to the microinstruction labeled "Fetch"
R-Type Instructions
Microinstructions needed
Microinstruction ALU Register PCWrite
number Label Control SRC1 SRC2 control Memory control Sequencing
1 RFormat 1 Func code A B Seq
2 Write ALU Fetch
1st Instruction
Fields Effect
Thte ALU operates on the contents of the A and B
ALU control, SRC1, SRc2 registers, using the function field to specify the
ALU operation
Sequencing Go to the next microinstruction
2nd Instruction
Fields Effect
Register control The value in ALUOut is written into the register file
entry specified by the rd field
Sequencing Go to the microinstruction labeled "Fetch"
Beq Instructions
Microinstructions needed
Microinstruction ALU Register PCWrite
number Label Control SRC1 SRC2 control Memory control Sequencing
1 BEQ1 Subt A B ALUOut-cond Fetch
Fields Effect
The ALU subtracts the operands in A and B to
ALU control,SRC1, SRC2 generate thePC
Causes the Zero
to outoput
be written using the value
already in ALUOut, if Zero output of the ALU is
PCWrite control true
Sequencing Go to the microinstruction labeled "Fetch"
Jump Instructions
Microinstructions needed
Microinstruction ALU Register PCWrite
number Label Control SRC1 SRC2 control Memory control Sequencing
1 JUMP1 Jump address Fetch
Fields Effect
Causes the PC to be written using the jump target
PCWrite control address
Sequencing Go to the microinstruction labeled "Fetch"
Complete Microprogram
M i c r o p r o g r a m c o u n te r
A dder
A d d r e s s s e le c t lo g i c
O p[5– 0]
Instruction register
Opcode field
Microprogramming Pros &Cons
Pros:
Ease of design
Flexibility
Easy to adapt to changes in organization, timing, technology
Can make changes late in design cycle, or even in the field
Can implement very powerful instruction sets (just more
control memory)
Generality
Can implement multiple instruction sets on same machine.
Can tailor instruction set to application.
Compatibility
Many organizations, same instruction set
Cons:
Costly to implement
Slow
Homework Assignment
Compare between:
Hardwired Control
Micro-program Control
66