20
Week 11 Spring 2006 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming [Adapted from Dave Patterson’s UCB CS152 slides and Mary Jane Irwin’s PSU CSE331 slides]

14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

  • Upload
    amil

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming. [Adapted from Dave Patterson’s UCB CS152 slides and Mary Jane Irwin’s PSU CSE331 slides]. Simplifying Control Design. For an implementation of the full MIPS ISA - PowerPoint PPT Presentation

Citation preview

Page 1: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

14:332:331Computer Architecture and Assembly Language

Spring 2006

Week 11: Microprogramming

[Adapted from Dave Patterson’s UCB CS152 slides and

Mary Jane Irwin’s PSU CSE331 slides]

Page 2: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Simplifying Control Design For an implementation of the full MIPS ISA

instructions can take from 1 clock cycle to 20 clock cycles

resulting in finite state machines with hundreds to thousands of states with even more arcs (state sequences)

Graphical representations become impossibly complex

Instead, represent the set of control signals that are asserted during a state as a low-level control “instruction” to be executed by the datapath

microinstructions

“Executing” the microinstruction is equivalent to asserting the control signals specified by the microinstruction

Page 3: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Microprogramming Microinstruction has to specify

what control signals should be asserted what microinstruction should be executed next

Each microinstruction corresponds to one state in the FSM and is assigned a state number (or “address”)

1. Sequential behavior – increment the state (address) of the current microinstruction to get to the state (address) of the next

2. Jump to the microinstruction that begins execution of the next MIPS instruction (state 0)

3. Branch to a microinstruction based on control unit input using dispatch tables

- need one for microinstructions following state 1

- need another for microinstructions following state 2

The set of microinstructions that define a MPS assembly language instruction (macroinstruction) is its microroutine

Page 4: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Defining a Microinstruction Format

Format – the fields of the microinstruction and the control signals that are affected by each field

control signals specified by a field usually have functions that are related

format is chosen to simplify the representation and to make it difficult to write inconsistent microinstructions

- i.e., that allow a given control signal be set to two different values

Make each field of the microinstruction responsible for specifying a nonoverlapping set of control signals

signals that are never asserted simultaneously may share the same field

seven fields for our simple machine- ALU control; SRC1; SRC2; Register control; Memory;

PCWrite control; Sequencing

Page 5: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Review: Multicycle Data and Control Path

Address

Read Data(Instr. or Data)

Memory

PC

Write Data

Read Addr 1

Read Addr 2

Write Addr

Register

File

Read Data 1

Read Data 2

ALU

Write Data

IRM

DR

AB

AL

Uo

ut

SignExtend

Shiftleft 2 ALU

control

Shiftleft 2

ALUOpControl

FSM

IRWriteMemtoReg

MemWriteMemRead

IorD

PCWrite

PCWriteCond

RegDstRegWrite

ALUSrcAALUSrcB

zero

PCSource

1

1

1

1

1

10

0

0

0

0

0

2

2

3

4

Instr[5-0]

Instr[25-0]

PC[31-28]

Instr[15-0]

Instr[3

1-2

6]

32

28

Page 6: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Review: Multicycle RTL Summary

Step R-type Mem Ref Branch Jump

Instr fetch

IR = Memory[PC]; PC = PC + 4;

Decode A = Reg[IR[25-21]];B = Reg[IR[20-16]];

ALUOut = PC +(sign-extend(IR[15-0])<< 2);

Execute ALUOut = A op B;

ALUOut = A + sign-extend

(IR[15-0]);

if (A==B) PC =

ALUOut;

PC = PC[31-28] ||(IR[25-0]

<< 2);

Memory access

Reg[IR[15-11]] = ALUOut;

MDR = Memory[ALUOut];

orMemory[ALUOut] = B;

Write-back

Reg[IR[20-16]] = MDR;

Page 7: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Our Microinstruction FormatField Value Signal setting Comments

ALU control

Add ALUOp = 00 Cause ALU to add

Subt ALUOp = 01 Cause ALU to subtract (compare op for beq)

Func code ALUOp = 10 Use IR function code to determine ALU control

SRC1 PC ALUSrcA = 0 Use PC as top ALU input

A ALUSrcA = 1 Use reg A as top ALU input

SRC2 B ALUSrcB = 00 Use reg B as bottom ALU input

4 ALUSrcB = 01 Use 4 as bottom ALU input

Extend ALUSrcB = 10 Use sign extension output as bottom ALU input

Extshft ALUSrcB = 11 Use shift-by-two output as bottom ALU input

Register control

Read Read RegFile using rs and rt fields of IR as read addr’s; put data into A and B

Write ALU RegWrite, RegDst = 1, MemtoReg = 0

Write RegFile using rd field of IR as write addr and ALUOut as write data

Write MDR RegWrite, RegDst = 0, MemtoReg = 1

Write RegFile using rt field of IR as write addr and MDR as write data

Page 8: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Our Microinstruction Format, con’tField Value Signal setting Comments

Memory Read PC MemRead, IorD = 0,IRWrite

Read memory using PC as addr; write result into IR (and MDR)

Read ALU MemRead, lorD = 1

Read memory using ALUOut as addr; write results into MDR

Write ALU MemWrite, IorD = 1

Write memory using ALUOut as addr and B as write data

PC write control

ALU PCSource = 00 PCWrite

Write PC with output of ALU

ALUOut-cond

PCSource = 01, PCWriteCond

If Zero output of ALU is true, write PC with the contents of ALUOut

Jump address

PCSource = 10, PCWrite

Write PC with IR jump address after shift-by-two

Sequen-cing

Seq AddrCtl = 11 Choose next microinstruction sequentially

Fetch AddrCtl = 00 Jump to the first microinstruction (i.e., Fetch) to begin a new instruction

Dispatch 1 AddrCtl = 01 Branch using PLA_1

Dispatch 2 AddrCtl = 10 Branch using PLA_2

Page 9: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Dispatch (Branch) Logic

Dispatch operations are implemented using special logic (PLAs)

Microcode Dispatch PLA_1

Opcode field

Opcode Value (Addr)

000000 R-format Rexec (6)

000010 jmp Jump (9)

000100 beq Beq (8)

100011 lw Maddr (2)

101011 sw Maddr (2)

Microcode Dispatch PLA_2

Opcode field

Opcode Value (Addr)

100011 lw Memlw (3)

101011 sw Memsw (5)

Page 10: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Creating the Microprogram

Fetch microinstruction

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

Fetch (0)

Add PC 4 Read PC ALU Seq

compute PC + 4 fetch instr into IR

write ALU output into

PC

go to instr 1

Label field represents the state (address) of the microinstruction

Fetch microinstruction assigned state (address) 0

Page 11: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Creating the Microprogram, con’t

Decode microinstruction

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

Decode (1)

Add PC Ext shft

Read Disp 1

compute branch target (PC + sign_ext(IR[15-0])<<2)) and store it in

ALUOut

use rs and rt to read

RegFile and store output in

A and B

use dispatch table in

ROM_1 to choose next

instr

Decode microinstruction assigned state (address) 1

Page 12: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Creating the Microprogram, con’t Memory-reference (lw & sw) microinstructions

Label (Addr)

ALU control

SRC1 SRC2 Reg control Memory PCWrite control

Seq’ing

Maddr (2)

Add A Extend Disp 2

Memlw (3)

Read ALU Seq

Memwb (4)

Write MDR Fetch

Memsw (5)

Write ALU Fetch

compute memory address (RegFile(rs) + sign_ext(IR[15-0])) and

store it in ALUOut

on lw – first read memory at ALUOut and store output in

MDR; then write MDR into RegFile at rt

on sw – write B into memory at

address in ALUOut

Assigned states (addresses) 2, 3, 4, and 5

Page 13: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Creating the Microprogram, con’t R-type instruction microinstructions

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

Rexec (6)

Func code

A B Seq

Rwb (7)

Write ALU

Fetch

perform the ALU operation specified in the instr. function field

using contents of A and B and store the result

in ALUOut

when done, go to fetch cycle

for next instruction

Assigned states (addresses) 6 and 7

write ALUOut in the RegFile at rd

Page 14: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Creating the Microprogram, con’t Branch (beq) and jump microinstructions

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

Beq (8)

Subt A B ALUOut-cond

Fetch

Jump (9)

Jump address

Fetch

for beq – do operand comparison (A - B) to produce Zero output

on j – load jump target addr into

PC

on beq – load ALUOut into PC if Zero is true

Assigned states (addresses) 8 and 9

Page 15: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

The Entire Control MicroprogramAddr ALU

controlSRC1 SRC2 Reg

controlMemory PCWrite

controlSeq’ing

0 Add PC 4 Read PC ALU Seq

1 Add PC Ext shft Read Disp 1

2 Add A Extend Disp 2

3 Read ALU Seq

4 Write MDR

Fetch

5 Write ALU

Fetch

6 Func code

A B Seq

7 Write ALU

Fetch

8 Subt A B ALUOut-cond

Fetch

9 Jump address

Fetch

Page 16: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Microprogram to Microcode A microassember is used to convert the mnemonic

microprogram into the actual control signals (0’s and 1’) or microcode, for example

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

Fetch (0)

Add PC 4 Read PC ALU Seq

Label (Addr)

ALU control

SRC1 SRC2 Reg control

Memory PCWrite control

Seq’ing

ALUOp ALU SrcA

ALU SrcB

RegWrite, RegDst, MemtoReg

MemRead, MemWrite, IRWrite, IorD

PCSource, PCWrite, PCWriteCond

AddrCtl

00…0 00 0 01 0,X,X 1,0,1,0 00, 1, X 11

Page 17: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Microcode Implementation

ControlPLA

Inst[31-26]

sequencingcontrol

Out

puts

Op0

Op1

Op2

Op3

Op4

Op5

PCWritePCWriteCondIorDMemReadMemWriteIRWriteMemtoRegPCSourceALUOpALUSourceBALUSourceARegWriteRegDst

System clock

Microprogram Counter

1

Adder

Addr select logic

AddrCtl

Page 18: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Address Select Logic

Inst[31-26]

Op0

Op1

Op2

Op3

Op4

Op5

System ClockMicroprogram Counter

AddrCtl (sequencingcontrol from microcode memory)

1

Adder

Addr select logic

to control PLA

3 2 1 0

Dispatch PLA_2

Dispatch PLA_1

0

dispatch table in

PLA_2 to choose

next instr 3 or 5

dispatch table in

PLA_1 to choose

next instr 2, 6, 8 or 9

Page 19: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Review: FSM Implementation

Combinationalcontrol logic

State RegInst[31-26]

NextState

Inputs

Out

puts

Op0

Op1

Op2

Op3

Op4

Op5

PCWritePCWriteCondIorDMemReadMemWriteIRWriteMemtoRegPCSourceALUOpALUSourceBALUSourceARegWriteRegDst

System Clock

Page 20: 14:332:331 Computer Architecture and Assembly Language Spring 2006 Week 11: Microprogramming

Week 11 Spring 2006

Control Path Design Alternatives

Initialrepresentation

Sequencingcontrol

Logicrepresentation

Implementationtechnique

Finite statediagram Microprogram

Explicit nextstate function

Microprogram counter+ dispatch PLAs

MicrocodeLogic

equations

ProgrammableLogic Array (PLA)

Microprogram representation advantages Easier to design, write, and debug