csci-2500: computer organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · csci-2500...

186
CSCI-2500: Computer Organization Processor Design

Upload: others

Post on 08-Aug-2020

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500:Computer Organization

Processor Design

Page 2: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Datapathn The datapath is the interconnection of

the components that make up the processor.

n The datapath must provide connections for moving bits between memory, registers and the ALU.

Page 3: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Controln The control is a collection of signals

that enable/disable the inputs/outputs of the various components.

n You can think of the control as the brain, and the datapath as the body. n the datapath does only what the brain tells

it to do.

Page 4: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Processor Design

The sequencing and execution of instructions

n We already know about many of the individual components that are necessary:n ALU, Multiplexors, Decoders, Flip-Flops

n We need to discuss how to use a clock

n We need to think about registers and memory.

Page 5: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

The ClockThe clock generates a never-ending

sequence of alternating 1s and 0s.

All operations are synchronized to the clock.

Page 6: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Clocking Methodologyn Determines when (relative to the clock)

a signal can be read and written.n Read: signal value is used by some

component.n Written: a signal value is generated by

some component.

Page 7: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Simple Example: Enabled ANDn We want an AND gate that holds it’s

output value constant until the clock switches from 0 (lo) to 1 (hi).

n We can use a flip-flop to hold the inputs to the AND gate constant during the time we want the output constant.

n We use a clocked flip-flop to make things happen when the clock changes.

Page 8: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

D Flip-Flop Reminder

DQ

Q

Clock

The output (Q) changes to reflect D only when the Clock is a 1.

Page 9: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

D Flip-Flop Timing

Q

D

C1

0

1

0

1

0

Page 10: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Clocked AND gate

Dflip-flop

Dflip-flop

D

CQ

D

CQ

A

B

A•B (clocked)

Clock

Page 11: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Edge-triggered Clockingn Values stored are updated (can change)

only on a clock edge.n When the clock switches from 0 to 1

everybody allows signals in.n everybody means state elementsn combinational elements always do the same

thing, they don’t care about the clock (that’s why we added the flip-flops to our AND gate).

Page 12: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

State Elementsn Any component that stores one or more

values is a state element.n The entire processor can be viewed as a

circuit that moves from one state (collection of all the state elements) to another state.

n At time i a component uses values generated at time i-1.

Page 13: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Register FileRead registernumber 1 Read

data 1

Readdata 2

Read registernumber 2

Register fileWriteregister

Writedata Write

Contains multiple registers•each holds 32 bits

•Two output ports (read ports)

•One input port (write port)

•To change the value of a register:•supply register number•supply data•clock (the Write control signal)

Page 14: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Implementation of Read Ports

Figure B.19

Mux

Register 0

Register 1

Register n – 1

Register n

Mux

Read data 1

Read data 2

Read registernumber 1

Read registernumber 2

Page 15: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Implementation of Write

n - t o - 1

d e c o d e r

R e g i s t e r 0

R e g i s t e r 1

R e g i s t e r n – 1

C

C

D

D

R e g i s t e r n

C

C

D

D

R e g i s t e r n u m b e r

W r i t e

R e g i s t e r d a t a

0

1

n – 1

n

Page 16: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Memoryn Memory is similar to a very large register file:

n single read port (output)n chip select input signaln output enable input signaln write enable input signaln address lines (determine which memory element)n data input lines (used to write a memory element)

Page 17: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

4 x 2 Memory (SRAM)D

latch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

Dlatch Q

D

C

Enable

2-to-4decoder

Write enable

Address

Din[0]Din[1]

Dout[1] Dout[0]

0

1

2

3

Page 18: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Memory Usagen For now, we treat memory as a single

component that supports 2 operations:n write (we change the value stored in a

memory location)n read (we get the value currently stored in a

memory location).n We can only do one operation at a time!

Page 19: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction & Data Memoryn It is useful to treat the memory that

holds instructions as a separate component.n instruction memory is read-only

n Typically there is really one memory that holds both instructions and data.n as we will see when we talk more about

memory, the processor often has two interfaces to the memory, one for instructions and one for data!

Page 20: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Designing a Datapath for MIPSn We start by looking at the datapaths

needed to support a simple subset of MIPS instructions:n a few arithmetic and logical instructionsn load and store wordn beq and j instructions

Page 21: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Functions for MIPS Instructions

n We can generalize the functions we need to:n using the PC register as the address, read a

value from the memory (read the instruction)

n Read one or two register values (depends on the specific instruction).

n ALU Operation , Memory read or write, …n Possibly change the value of a register.

Page 22: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Fetching the next instructionn PC Register holds the addressn Memory holds the instruction

n we need to read from memory.n Need to update the PC

n add 4 to current value

Page 23: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction Fetch DataPath

PC

Instructionmemory

Readaddress

Instruction

4

Add

Page 24: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Supporting R-format instructions

Includes add, sub, slt, and & orinstructions.

Generalization: n read 2 registers and send to ALU.n perform ALU operationn store result in a register

rsop rt rd shamt funct

6 bits5 bits6 bits 5 bits 5 bits 5 bits

Page 25: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MIPS Registersn MIPS has 32 general purpose registers.n Register File holds all 32 registers

n need 5 bits to select a registern rs, rt & rd fields in R-format instructions.

n MIPS Register File has 2 read ports. n can get at both source registers at the

same time.

Page 26: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Datapath for R-format Instructions

InstructionRegisters

Writeregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

ALUresult

ALUZero

RegWrite

ALU operation3

Page 27: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Load and Store InstructionsNeed to compute the address

n offset (part of the instruction)

n base (stored in a register).For Load:

n read from memoryn store in a register

For Store:n read from registern write to memory

Page 28: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Computing the addressn 16 bit signed offset is part of the

instruction.n We have a 32 bit ALU.

n need to sign extend the offset (to 32 bits).n Feed the 32 bit offset and the contents

of a register to the ALUn Tell the ALU to “add”.

Page 29: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Load/Store Datapath

Instruction

16 32

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Datamemory

Writedata

Readdata

Writedata

Signextend

ALUresult

ZeroALU

Address

MemRead

MemWrite

RegWrite

ALU operation3

Page 30: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Supporting beqn 2 registers compared for equality

n 16 bit offset used to compute target address.n signed offset is relative to the PCn offset is in words not in bytes!

n Might branch, might not (need to decide).

Page 31: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Computing target addressn Recall that the offset is actually

relative to the address of the next instruction.n we always add 4 to the PC, we must make

sure we use this value as the base.n Word vs. Byte offset

n we just need to shift the 16 bit offset 2 bits to the right (fill with 2 zeros).

Page 32: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Branch Datapath

1 6 3 2S ig n

ex te nd

Z er oA L U

S u m

S h iftl e ft 2

T o b ra n c hc o ntro l l o g ic

B ra nc h ta rg e t

P C + 4 fro m in st r uc ti o n da ta p a t h

I n s tr u c tio n

A d d

R e gis te r sW ritere gi s te r

R e a dd a ta 1

R e a dd a ta 2

R e a dre gi s te r 1

R e a dre gi s te r 2

W rited a t a

R e g W rit e

A L U op e r a ti o n3

Page 33: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

Control & DataPath

Ref: Chapter 4

Page 34: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Datapathn The datapath is the interconnection of

the components that make up the processor.

n The datapath must provide connections for moving bits between memory, registers and the ALU.

Page 35: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Controln The control is a collection of signals

that enable/disable the inputs/outputs of the various components.

n You can think of the control as the brain, and the datapath as the body. n the datapath does only what the brain tells

it to do.

Page 36: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Datapaths

We looked at individual datapaths that support:

1. Fetching Instructions2. Arithmetic/Logical Instructions3. Load & Store Instructions4. Conditional branch

We need to combine these in to a single datapath.

Page 37: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Issuesn When designing one datapath that can

be used for any operation:n the goal is to be able to handle one

instruction per cycle.n must make sure no datapath resource needs

to be used more than once at the same time.

n if so – we need to provide more than one!

Page 38: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Sharing Resourcesn We can share datapath resources by

adding a multiplexor (and a control line).n for example, the second input to the ALU

could come from either:n a register (as in an arithmetic instruction)n from the instruction (as in a load/store – when

computing the memory address).

Page 39: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Sharing with a Multiplexor Example

Control

ADD

Operand 1

B Operand 2C

AA+B (Control==0)

A+C (Control==1)

Page 40: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Combining Datapaths for memory instructions and arithmetic instructions

n Need to share the ALUn For memory instructions used to compute

the address in memory.n For Arithmetic/Logical instructions used to

perform arithmetic/logical operation.

Page 41: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s t r u c t i o n

1 6 3 2

R e g i s t e r s

W r i t e

r e g i s t e r

R e a d

d a t a 1

R e a d

d a t a 2

R e a d

r e g i s t e r 1

R e a d

r e g i s t e r 2

D a t a

m e m o r y

W r i t e

d a t a

R e a d

d a t a

M

u

x

M

u

xW r i t e

d a t a

S i g n

e x t e n d

A L U

r e s u lt

Z e r o

A L U

A d d r e s s

R e g W r i t e

A L U o p e r a t i o n3

M e m R e a d

M e m W r i t e

A L U S r c

M e m t o R e g

Sharing Multiplexors

New Controls

Page 42: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Adding the Instruction Fetchn One memory for instructions, separate

memory for data.n otherwise we might need to use the memory

twice in the same instruction.n Dedicated Adder for updating the PC

n otherwise we might need to use the ALU twice in the same instruction.

Page 43: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

P C

I n s t r u c t i o n

m e m o r y

R e a d

a d d r e s s

I n s t r u c t i o n

1 6 3 2

R e g i s t e r s

W r i t er e g i s t e r

W r i t ed a t a

R e a d

d a t a 1

R e a d

d a t a 2

R e a dr e g i s t e r 1

R e a dr e g i s t e r 2

S i g n

e x t e n d

A L Ur e s u l t

Z e r o

D a t a

m e m o r y

A d d r e s s

W r i t e

d a t a

R e a d

d a t aMux

4

A d d

Mux

A L U

R e g W r i t e

A L U o p e r a t i o n3

M e m R e a d

M e m W r i t e

A L U S r cM e m t o R e g

Two Memory Units

Dedicated Adder

Page 44: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Need to add datapath for beqn Register comparison (requires ALU).

n Another adder to compute target address.n One input to adder is sign extended offset,

shifted by 2 bits.n Other input to adder is PC+4

Page 45: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

PC

Instructionmemory

Readaddress

Instruction

16 32

Add ALUresult

Mux

Registers

WriteregisterWritedata

Readdata 1

Readdata 2

Readregister 1Readregister 2

Shiftleft 2

4

Mux

ALU operation3

RegWrite

MemRead

MemWrite

PCSrc

ALUSrcMemtoReg

ALUresult

ZeroALU

Datamemory

Address

Writedata

Readdata M

ux

Signextend

Add

New adder and mux

Page 46: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Whew!

n Keep in mind that the datapath we now have supports just a few MIPS instructions!

n Things get worse (more complex) as we support other instructions:

j jal jr addi

n We won’t worry about them now…

Page 47: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Control Unitn We need something that can generate

the controls in the datapath.n Depending on what kind of instruction

we are executing, different controls should be turned on (asserted) and off (deasserted).

n We need to treat each control individually (as a separate boolean function).

Page 48: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Controlsn Our datapath includes a bunch of

controls:n ALU operation (3 bits)n RegWriten ALUSrcn MemWriten MemtoRegn MemReadn PCSrc

Page 49: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

ALU Operation Controln A 3 bit control (assumes the ALU

designed in chapter 4):

ALU Control Input Operation000 AND001 OR010 add110 subtract111 slt

Page 50: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

ALU Functions for other instructionslw , sw (load/store): addition

beq: subtraction

add, sub, and, or, slt(arithmetic/logical): All R-format instructions

Page 51: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

R-Format Instructions

rsop rt rd shamt funct

6 bits5 bits6 bits 5 bits 5 bits 5 bits

Operation is specified by some bits in the funct field in the instruction.

Page 52: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MIPS Instruction OPCODEs

n The MS 6 bits are an OPCODE that identifies the instruction.

n R-Format: always 000000 n (funct identifies the operation)

lw sw beq100011 101011 000100

varies depending on instructionop

6 bits

Page 53: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Generating ALU Controls

We can view the 3 bit ALU control as 3 boolean functions. Inputs are:n the op field (OPCODE) n funct field (for R-format instructions

only)

Page 54: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Simplifying The OpcodeFor building the ALU Operation Controls,

we are interested in only 4 different opcodes.

We can simplify things by first reducing the 6 bit op field to a 2 bit value we will call ALUOp

Page 55: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction ALUOp funct ALU action ALU controls

lw 00 ?????? add 010

sw 00 ?????? add 010

beq 01 ?????? subtract 110

add 10 100000 add 010

sub 10 100010 subtract 110

and 10 100100 and 000

or 10 100101 or 001

slt 10 101010 slt 111

Page 56: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Build a Truth Tablen We can now build a truth table for the 3

bit ALU control.n Inputs are:

n 2 bit ALUOpn 6 bit funct field

n Abbreviated Truth Table: only show the rows we care about!

Page 57: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

ALUOp funct ALU Control

0 0 x x x x x x 010x 1 x x x x x x 1101 x x x 0 0 0 0 0101 x x x 0 0 1 0 1101 x x x 0 1 0 0 0001 x x x 0 1 0 1 0011 x x x 1 0 1 0 111

x means “don’t care”

Page 58: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Adding the ALU Controln We can now add the ALU control to the

datapath:n inputs to this control come from the

instruction and from ALUOpn If we try to show all the details the

picture becomes too complex:n just plop in an “ALU Control” box.

Page 59: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

M e mto R e g

M e m R e a d

M e m Wri te

A L U O p

A L U Src

R e g D st

P C

I n s tru ct io nm e m o ry

R e a da d d re s s

In s tr u ctio n[3 1 – 0]

In st ruc tio n [2 0 – 1 6]

In st ruc tio n [2 5 – 2 1]

A d d

I n st ru c tio n [5 – 0 ]

R e g Wri te

4

16 3 2In st ru c tio n [1 5 – 0 ]

0Re gis te rs

Wr itere g is te rWr ited a ta

Writed a ta

R e a dd a ta 1

R e a dd a ta 2

R e a dre g is te r 1

R e a dre g is te r 2

S ig ne x te nd

A L Ure su l t

Ze ro

D a tam e m o ry

A d d re s s R e a dd a ta

Mux

1

0

Mux

1

0

Mux

1

0

Mux

1

In st ruc tio n [1 5 – 1 1]

A L Uco ntro l

S h i ftle ft 2

P C S rc

A L U

A dd A L Ure s u lt

Shows which bits from the instructionare fed to register file inputs ALU Control

Page 60: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Implementing Other Controlsn The other controls in out datapath must

also be specified as functions.n We need to determine the inputs to all

the functions.n primarily the inputs are part of the

instructions, but there are exceptions.n Need to define precisely what

conditions should turn on each control.

Page 61: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

RegDst Control Line

n Controls a multiplexor that selects on of the fields rt or rd from an R-format or I-format instruction.

n I-Format is used for load and store.n sw needs to write to the register rt.

rsop rt rd shamt funct

rsop rt address

R-formatI-format

Page 62: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

RegDst usagen RegDst should be

n 0 to send rt to the write register # input.n 1 to send rd to the write register # input.

n RegDst is a function of the opcode field:n If instruction is sw, RegDst should be 0n For all other instructions RegDst should be 1

Page 63: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

RegWrite Controln a 1 tells the register file to write a

register.n whatever register is specified by the write

register # input is written with the data on the write register data inputs.

n Should be a 1 for arithmetic/logical instructions and for a store.

n Should be a 0 for load or beq.

Page 64: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

ALUSrc Control

n MUX that selects the source for the second ALU operand.n 1 means select the second register file

output (read data 2).n 0 means select the sign-extended 16 bit

offset (part of the instruction).n Should be a 1 for load and store.n Should be a 0 for everything else.

Page 65: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MemRead Control

• A 1 tells the memory to put the contents of the memory location (specified by the address lines) on the Read data output.

• Should be a 1 for load.• Should be a 0 for everything else.

Page 66: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MemWrite Control

• 1 means that memory location (specified by memory address lines) should get the value specified on the memory Write Data input.

• Should be a 1 for store.• Should be a 0 for everything else.

Page 67: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MemToReg Control

• MUX that selects the value to be stored in a register (that goes to register write data input).– 1 means select the value coming from the memory

data output.– 0 means select value coming from the ALU output.

• Should be a 1 for load and any arithmetic/logical instructions.

• Should be a 0 for everything else (sw, beq).

Page 68: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

PCSrc Control

• MUX that selects the source for the value written in to the PC register.– 1 means select the output of the Adder used to

compute the relative address for a branch.– 0 means select the output of the PC+4 adder.

• Should be a 1 for beq if registers are equal!• Should be a 0 for other instructions or if

registers are different.

Page 69: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

PCSrc depends on result of ALU operation!

n This control line can’t be simply a function of the instruction (all the others can).

n PCSrc should be a 1 only when:n beq AND ALU zero output is a 1

n We will generate a signal called “branch” that we can AND with the ALU zero output.

Page 70: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Truth Table for ControlInstructi

onRegDst ALUSrc Memto-

RegReg

WriteMemRead

MemWrite

Branch ALUOp

R-format

1 0 0 1 0 0 0 10

lw 0 1 1 1 1 0 0 00

sw x 1 x 0 0 1 0 00

beq x 0 x 0 0 0 1 01

Page 71: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

P C

I n str u c ti o nm e m o ry

R e a da d dr e s s

I n s tr u c t io n[ 3 1 – 0 ]

I n s tr u ct i o n [2 0 1 6]

I n s tr u ct i o n [2 5 2 1]

A d d

I ns t ru ct io n [5 0 ]

M e mto R e g

A L U O p

M e m W r it e

R e g W rit e

M e m R e a d

B r a nc h

R e g D s t

A L U S rc

I n s tr u c t i o n [ 3 1 2 6]

4

1 6 3 2I n s tr u c t i o n [ 1 5 0 ]

0

0Mux

0

1

C o n tr o l

A d dA L U

re s u lt

Mux

0

1

R e gi s t er sW r it er e g i s te r

W r it ed a t a

R e a dd a t a 1

R e a dd a t a 2

R e a dr e g i s te r 1

R e a dr e g i s te r 2

S i g ne x t e n d

Mux

1

A L Ur e s ul t

Z er o

P C S r c

D at am e m or y

W ri ted a t a

R e adda ta

Mux

1

I n s tr u c t i o n [ 1 5 1 1]

A L Uco n tr o l

S h i f tl e ft 2

A L UA d d r e ss

Page 72: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Single Cycle Instructionsn View the entire datapath as a

combinational circuit.n We can follow the flow of an instruction

through the datapath.n single cycle instruction means that there

are not really any steps – everything just happens and becomes finalized when the clock cycle is over.

Page 73: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

add $t1,$t2,$t3n Control Lines:

n ALU Controls specify an ALU add operation.n RegWrite will be a 1 so that when the clock

cycle ends the value on the Register Write Input lines will be written to a register.

n all other control lines are 0.

Page 74: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

lw $t1,offset($t2)

n Control Lines:n ALU Control set for an add operation.n ALUSrc is set to 1 to indicate the second

operand is sign extended offset.n MemRead would be a 1.n RegDst would select the correct bits from

the instruction to specify the dest. register.

n RegWrite would be a 1.

Page 75: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Disadvantage of single cycle operation

If we have instructions execute in a single cycle, then the cycle time must be long enough for the slowest instruction.n all instructions take the same time as the

slowest.

Page 76: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Multicycle Implementationn Chop up the processing of instructions in

to discrete stages.n Each stage takes one clock cycle.

n we can implement each stage as a big combinational circuit (like we just did for the whole thing).

n provide some way to sequence through the stages.

Page 77: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Advantages of Multicyclen Only need those stages required by an

instruction.n the control unit is more complex, but

instructions only take as long as necessary.n We can share components

n perhaps 2 different stages can use the same ALU.

n We don’t need to duplicate resources.

Page 78: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Additional Resources for Multicycle

n To implement a multicycle implementation we need some additional registers that can be used to hold intermediate values.n instructionn computed addressn result of ALU operationn …

Page 79: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

PC

Memory

Address

Instruct ionor data

Data

Instructionregister

RegistersRegister #

Data

Register #

Register #

ALUMemory

dataregister

A

B

ALUOut

Multicycle Datapath

Page 80: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Multicycle Datapath for MIPS

Page 81: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MC DP with Control

Page 82: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction Stagesn Instruction Fetchn Instruction decode/register fetchn ALU operation/address computationn Memory Accessn Register Write

Page 83: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Complete Multicyle Datapath & Control

Page 84: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction Fetch/Decode (IF/ID) State Machine

Page 85: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Memory Reference State Machine

Page 86: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

R-type Instruction State Machine

Page 87: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Branch/Jump State Machine

Page 88: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Put it all together!

Page 89: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Control for Multicyclen Need to define the controlsn Need to come up with some way to

sequence the controlsn Two techniques

n finite state machinen microprogramming

Page 90: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Finite State Machine

Page 91: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

MicroProgramming (sec. 5.7)n The idea is to build a (very small)

processor to generate the controls signals at the right time.

n At each stage (cycle) one microinstruction is executed – the result changes the value of the control signals.

n Somebody writes the microinstructionsthat make up each MIPS instruction.

Page 92: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Example microinstructionsFetch next instruction:

n turn on instruction memory readn feed PC to memory address inputn write memory data output in to a holding

register.

Compute Address:n route contents of base register to ALUn route sign-extended offset to ALUn perform ALU addn write ALU output in to a holding register.

Control Signals

microinstruction

Page 93: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Sequencingn In addition to setting some control

signals, each microinstruction must specify the next microinstruction that should be executed.

n 3 Options:n execute next microinstruction (default)n start next MIPS instruction (Fetch)n Dispatch (depends on control unit inputs).

Page 94: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Microinstruction Formatn A bunch of bits – one for each control

line needed by the control unit.n bits specify the values of the control lines

directly.n Some bits that are used to determine

the next microinstruction executed.

Page 95: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Dispatch Sequencingn Can be implemented as a table lookup.

n bits in the microinstruction tell what row in the table.

n inputs to the control unit tell what column.n value stored in table determines the

microaddress of the next microinstruction.n This is a simplified description (called a

microdescription)

Page 96: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Exceptions & Interruptsn Hardest part of control is implementing

exceptions and interrupts – i.e., events that change the normal flow of instruction execution.

n MIPS conventionn Exception refers to any unexpected change in

control flow w/o knowing if the cause is internal or external.

n Interrupts refer to only events who are externally caused.

n Ex. Interrupts: I/O device request (ignore for now)

n Ex. Exceptions: undefined instruction, arithmetic overflow

Page 97: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Handling Exceptionsn Let’s implemented exceptions for handling

n Undefined instructionn Overflow

n Basic actionsn Save the offending instruction address in the Exception Program

Counter (EPC).n Transfer control to the OS at some specified addressn Once exception is handled by OS, then either terminate the

program or continue on using the EPC to determine where to restart.n OS actions are determined based on what caused the exception.

n So, OS needs a Cause register which determines which path w/i the exception

n Alternative implementation – Vectored Interrupts – where each cause of an exception or interrupt is given a specific OS address to jump to.

n We’ll use the first method.

Page 98: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Extending the Multicycle D&Cn What datapath elements to add?

n EPC: a 32-bit register used to hold the address of the affected instruction.

n Cause: A 32-bit register used to record the cause of the exception. (undef instruction = 0 and overflow = 1).

n What control lines to add?n EPCWrite and Cause write control signals to allow

regs to be written.n IntCause (1-bit) control signal to set the low-order

bit of the cause register to the appropriate value.

Page 99: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Revised Datapath & Control

Page 100: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Final FSM w/ exception handling

Page 101: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

Pipelining

Page 102: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Multicycle Instructionsn Chop each instruction in to stages.n Each stage takes one cycle.n We need to provide some way to

sequence through the stages:n microinstructions

n Stages can share resources (ALU, Memory).

Page 103: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipeliningn We can overlap the execution of

multiple instructions.n At any time, there are multiple

instructions being executed – each in a different stage.

n So much for sharing resources ?!?

Page 104: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

The Laundry AnalogyNon-pipelined approach:

1. run 1 load of clothes through washer2. run load through dryer3. fold the clothes (optional step for

students)4. put the clothes away (also optional).

Two loads? Start all over.

Page 105: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined Laundryn While the first load is drying, put the second

load in the washing machine.n When the first load is being folded and the

second load is in the dryer, put the third load in the washing machine.

n Admittedly unrealistic scenario for CS students, as most only own 1 load of clothes…

Page 106: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Time76 PM 8 9 10 11 12 1 2 AM

A

B

C

D

Time76 PM 8 9 10 11 12 1 2 AM

A

B

C

D

Taskorder

Taskorder

Page 107: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Laundry Performancen For 4 loads:

n non-pipelined approach takes 16 units of time.

n pipelined approach takes 7 units of time.

n For 816 loads:n non-pipelined approach takes 3264 units of

time.n pipelined approach takes 819 units of time.

Page 108: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Execution Time vs. Throughputn It still takes the same amount of time

to get your favorite pair of socks clean, pipelining won’t help.

n However, the total time spent away from CompOrg homework is reduced.

It's the classic “Socks vs. CompOrg” issue.

Page 109: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instruction PipeliningFirst we need to break instruction

execution into discrete stages:1. Instruction Fetch2. Instruction Decode/ Register Fetch3. ALU Operation4. Data Memory access5. Write result into register

Page 110: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Operation Timingsn Some estimated timings for each of

the stages:

Instruction Fetch 200 ps

Register Read 100 ps

ALU Operation 200 ps

Data Memory 200 ps

Register Write 100 ps

Page 111: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Comparison

I n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

800 p sI n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

800 p sI n s t r u c t i o n

f e t c h

800 p s

T i m e

l w $ 1 , 1 0 0 ( $ 0 )

l w $ 2 , 2 0 0 ( $ 0 )

l w $ 3 , 3 0 0 ( $ 0 )

2 4 6 8 1 0 1 2 1 4 1 6 1 8

2 4 6 8 1 0 1 2 1 4

. . .

P r o g r a m

e x e c u t i o n

o r d e r

( i n i n s t r u c t i o n s )

I n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

T i m e

l w $ 1 , 1 0 0 ( $ 0 )

l w $ 2 , 2 0 0 ( $ 0 )

l w $ 3 , 3 0 0 ( $ 0 )

200 p sI n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

200 p sI n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

200 p s 200 p s 200 p s 200 p s 200 p s

P r o g r a m

e x e c u t i o n

o r d e r

( i n i n s t r u c t i o n s )

Page 112: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

RISC and Pipeliningn One of the major advantages of RISC

instruction sets is the relative simplicity of a pipeline implementation.n It’s much more complex in a CISC processor!!

n RISC (MIPS) design features that make pipelining easy include:n single length instruction (always 1 word)n relatively few instruction formatsn load/store instruction setn operands must be aligned in memory (a single

data transfer instruction requires a single memory operation).

Page 113: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipeline Hazardn Something happens that means the next

instruction cannot execute in the following clock cycle.

n Three kinds of hazards:n structural hazardn control hazardn data hazard

Page 114: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Structural Hazardsn Two stages require the same resource.

n What if we only had enough electricity to run either the washer or the dryer at any given time?

n What if MIPS datapath had only one memory unit instead of separate instruction and data memory?

Page 115: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Avoiding Structural Hazardsn Design the pipeline carefully.n Might need to duplicate resources

n an Adder to update PC, and ALU to perform other operations.

n Detecting structural hazards at execution time (and delaying execution) is not something we want to do (structural hazards are minimized in the design phase).

Page 116: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Control Hazardsn When one instruction needs to make a

decision based on the results of another instruction that has not yet finished.

n Example: conditional branchn The instruction that is fed to the pipeline

right after a beq depends on whether or not the branch is taken.

Page 117: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

beq Control Hazard

slt $t0,$s0,$s1beq $t0,$zero,skipaddi $s0,$s0,1

skip:lw $s3,0($t3)

slt

beq

???

The instruction to follow the beq could be either the addi or the lw, it depends on the result of the beqinstruction.

a = b+c;if (x!=0)

y++;...

Page 118: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

One possible solution - stalln We can include in the control unit the

ability to stall (to keep new instructions from entering the pipeline until we know which one).

n Unfortunately conditional branches are very common operations, and this would slow things down considerably.

Page 119: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

A Stall

I n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

T i m e

b e q $ 1 , $ 2 , 4 0

a d d $ 4 , $ 5 , $ 6

l w $ 3 , 3 0 0 ( $ 0 )4 n s

I n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

2 n s

I n s t r u c t i o n

f e t c hR e g A L U

D a t a

a c c e s sR e g

2 n s

2 4 6 8 1 0 1 2 1 4 1 6

P r o g r a m

e x e c u t i o n

o r d e r

( i n i n s t r u c t i o n s )

To achieve a 1 cycle stall (as shown above), we need to modify the implementation of the beq instruction so that the decision is made by the end of the second stage.

Page 120: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Another strategy

n Predict whether or not the branch will be taken.

n Go ahead with the predictedinstruction (feed it into the pipeline next).

n If your prediction is right, you don't lose any time.

n If your prediction is wrong, you need to undo some things and start the correct instruction

Page 121: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Predicting branch not taken

Instructionfetch Reg ALU Data

access Reg

Time

beq $1, $2, 40

add $4, $5, $6

lw $3, 300($0)

Instructionfetch Reg ALU Data

access Reg2 ns

Instructionfetch Reg ALU Data

access Reg2 ns

Programexecutionorder(in instructions)

Instructionfetch Reg ALU Data

access Reg

Time

beq $1, $2, 40

add $4, $5 ,$6

or $7, $8, $9

Instructionfetch Reg ALU Data

access Reg

2 4 6 8 10 12 14

2 4 6 8 10 12 14

Instructionfetch Reg ALU Data

access Reg

2 ns

4 ns

bubble bubble bubble bubble bubble

Programexecutionorder(in instructions)

Page 122: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Dynamic Branch Predictionn The idea is to build hardware that will

come up with a prediction based on the past history of the specific branch instruction.

n Predict the branch will be taken if it has been taken more often than not in the recent past.n This works great for loops! (90% + correct).n We’ll talk more about this …

Page 123: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Yet another strategy: delayed branch

n The compiler rearranges instructions so that the branch actually occurs delayed by one instruction from where its execution starts

n This gives the hardware time to compute the address of the next instruction.

n The new instruction is hopefully useful whether or not the branch is taken (this is tricky - compilers must be careful!).

Page 124: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Delayed Branch

add $s2,$s3,$s4beq $t0,$zero,skipaddi $s0,$s0,1

skip:lw $s3,0($t3)

beq

add

Order reversed!

The compiler must generate code that differs from what you would expect.

a = b+c;if (x!=0)

y++;...

Page 125: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Data Hazardn One of the values needed by an

instruction is not yet available (the instruction that computes it isn't done yet).

n This will cause a data hazard:add $t0,$s1,$s2addi $t0,$t0,17

Page 126: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

IF Reg ALU DataAccess Reg

IF Reg ALU DataAccess Reg

add $t0,$s1,$s2

addi $t0,$t0,17

selects $s1 and $s2 for ALU op

adds $s1 and $s2

stores sum in $t0

selects $t0 for ALU optime

Page 127: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Handling Data Hazards

n We can hope that the compiler can arrange instructions so that data hazards never appear.n this doesn't work, as programs generally

need to use previously computed values for everything!

n Some data hazards aren't real - the value needed is available, just not in the right place.

Page 128: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

IF Reg ALU DataAccess Reg

IF Reg ALU DataAccess Reg

add $t0,$s1,$s2

addi $t0,$t0,17

ALU has finished computing sum

ALU needs sum from the previous ALU operationtime

The sum is available when needed!

Page 129: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Forwardingn It's possible to forward the value

directly from one resource to another (in time).

n Hardware needs to detect (and handle) these situations automatically!n This is difficult, but necessary.

Page 130: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

add $s0, $t0, $t1

sub $t2, $s0, $t3

Programexecutionorder(in instructions)

IF ID WBEX

IF ID MEMEX

Time2 4 6 8 10

MEM

WBMEM

Picture of Forwarding

Page 131: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Another Example

Ti m e2 4 6 8 1 0 1 2 1 4

l w $ s0, 2 0( $t1 )

su b $t2 , $ s0 , $ t3

Prog ra mexe c utio nord er(in in st ructio n s)

IF I D W BM E ME X

I F I D W BM E ME X

bu b ble bu bble bu b ble bu b ble bu bble

Page 132: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelining and CPIn If we keep the pipeline full, one

instruction completes every cycle.n Another way of saying this: the average

time per instruction is 1 cycle.n even though each instruction actually takes

5 cycles (5 stage pipeline).

CPI=1

Page 133: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

CorrectnessPipeline and compiler designers must be

careful to ensure that the various schemes to avoid stalling do not change what the program does!n only when and how it does it.n It's impossible to test all possible

combinations of instructions (to make sure the hardware does what is expected).

n It's impossible to test all combinations even without pipelining!

Page 134: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined DatapathWe need to use a multicycle datapath.

n includes registers that store the result of each stage (to pass on to the next stage).

n can't have a single resource used by more than one stage at time.

Page 135: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Instructionmemory

Address

4

32

0

Add Addresult

Shiftleft 2

Inst

r uct

ion

IF/ID EX/MEM MEM/WB

Mux

0

1

Add

PC

0Writedata

Mux

1Registers

Readdata 1

Readdata 2

Readregister 1

Readregister 2

16Sign

extend

Writeregister

Writedata

Readdata

1

ALUresultM

ux

ALUZero

ID/EX

Datamemory

Address

Pipelined Datapath – 5 stages

Page 136: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

lw and pipelined datapathn We can trace the execution of a load

word instruction through the datapath.

n We need to keep in mind that other instructions are using the stages not in use by our lw instruction!

Page 137: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s tr u c t i o n

m e m o r y

A d d r e s s

4

3 2

0

A d d A d dr e s ul t

S h i f t

l e ft 2

Ins

t ru

cti o

nI F / I D E X/ M E M M E M / W B

Mux

0

1

A d d

P C

0W ri t ed a t a

Mux

1

R e g i st e r s

R e a dd at a 1

R e a dd at a 2

R e a dr e g i s t er 1

R e a dr e g i s t er 2

1 6S i g n

e x t e n d

W ri ter e g i s t er

W ri ted a t a

R e a dd a t a

1

A L Ur e s u l t

Mux

A L U

Z e r o

ID / E X

I n s t r u c t i o n f e t c h

l w

A d d r e s s

D at a

m e m or y

Stage 1: Instruction Fetch (IF)

Page 138: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s t r u c t i o n

m e m o r y

A d d r e s s

4

3 2

0

A d dA d d

r e s u l t

S h if t

l e ft 2

Ins

t ru

ctio

n

I F /I D E X / M E M

Mux

0

1

A d d

P C

0W ri t ed a t a

Mux

1

R e g i st e r s

R e a dd a t a 1

R e a dd a t a 2

R e a dr e g is t e r 1

R e a dr e g is t e r 2

1 6S i g n

e x t e n d

W ri t er e g is t e r

W ri t ed a t a

R e a dd a t a

1

A L Ur e s u l t

Mux

A L U

Z e r o

I D / E X M E M / W B

I n s t r u c t i o n d e c o d e

l w

A d d r e s s

D at a

m e m o r y

Stage 2: Instruction Decode (ID)

Page 139: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s t r u c t i o n

m e m o r y

A d d r e s s

4

3 2

0

A d dA d d

r e s u l t

S h if t

l e ft 2

Ins

t ru

ctio

n

I F /I D E X / M E M

Mux

0

1

A d d

P C

0W ri t ed a t a

Mux

1

R e g i st e r s

R e a dd a t a 1

R e a dd a t a 2

R e a dr e g is t e r 1

R e a dr e g is t e r 2

1 6S i g n

e x t e n d

W ri t er e g is t e r

W ri t ed a t a

R e a dd a t a

1

A L Ur e s u l t

Mux

A L U

Z e r o

I D / E X M E M / W B

I n s t r u c t i o n d e c o d e

l w

A d d r e s s

D at a

m e m o r y

Stage 2: Instruction Decode (ID)

Page 140: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s t r u c t i o n

m e m o r y

A d d r e s s

4

3 2

0

A d dA d d

r e s u l t

S h if t

l e f t 2

Ins

tru

cti

on

I F /I D E X / M E M

Mux

0

1

A d d

P C

0W ri t ed a t a

Mux

1

R e g i s t e r s

R e a dd a t a 1

R e a dd a t a 2

R e a dre g i s t e r 1

R e a dre g i s t e r 2

1 6S i g n

e x t e n d

W r i t ere g i s t e r

W r i t ed a t a

R e a dd a t a

1

A L Ur e s u l t

Mux

A L U

Z e r o

I D / E X M E M / W B

E x e c u t i o n

l w

A d d r e s s

D a t a

m e m o r y

Stage 3: Execute (EX)

Page 141: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

I n s t r u c t i o n

m e m o r y

A d d r e s s

4

3 2

0

A d dA d d

r e s u l t

S h i f t

l e f t 2

Inst

ruc

tio

nI F / I D E X / M E M

Mux

0

1

A d d

P C

0W r i t ed a t a

Mux

1

R e g i s t e r s

R e a dd a t a 1

R e a dd a t a 2

R e a dr e g i s t e r 1

R e a dr e g i s t e r 2

1 6S i g n

e x t e n d

W r it er e g i s t e r

W r it ed a t a

R e a dd a t a

D a t a

m e m o r y

1

A L Ur e s u l t

Mux

A L U

Z e r o

I D / E X M E M / W B

M e m o r y

l w

A d d r e s s

Stage 4: Memory Access (MEM)

Page 142: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

In str u c ti on

m e m o r y

A d d r e s s

4

3 2

0

A d dA d d

r e s u l t

S h if t

l e f t 2

Inst

ruct

i on

I F /I D E X / M E M

Mux

0

1

A d d

P C

0W ri t ed at a

Mux

1

R e g i st e r s

R e a dd at a 1

R e a dd at a 2

R e a dr e g is t er 1

R e a dr e g is t er 2

1 6S i g n

e x t e n d

W ri t ed a t a

R e a dd a t aD a t a

m e m o r y

1

A L Ur e s u l t

Mux

A L U

Z e r o

I D / E X M E M / W B

W r i t e b a c k

l w

W ri t er e g is t er

A d d r e s s

Stage 5: WriteBack (WB)

Page 143: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

A Bug!n When the value read from memory is

written back to the register file, the inputs to the register file (write register #) are from a different instruction!

n To fix the bug we need to save the part of the lw instruction (5 bits of it specify which register should get the value from memory).

Page 144: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

New Datapath

Instructionmemory

Address

4

32

0

A dd A ddresul t

Shi ftl eft 2

Ins t

ruc ti

on

IF/ID EX/MEM MEM/WB

Mux

0

1

Add

PC

0

A ddress

Wri tedata

Mux

1Regi sters

Readdata 1

Readdata 2

Readregi ster 1

Readregi ster 2

16Si gn

ex tend

Wri teregi ster

Wri tedata

Readdata

Datamemory

1

A LUresul t

Mux

A LUZero

ID/EX

Figure 4.41

Page 145: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Store Word (sw) Data Path Flow (EX)

Page 146: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

SW Data Path (cont.)

Page 147: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Final Corrected Datapath

Page 148: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Ex. With 5 instructions

Page 149: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Ex: Alt View

Page 150: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

Pipeline Control

Page 151: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined DP w/ signals

Page 152: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Control lines for pipeline stages

Page 153: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined DP w/ Control

Page 154: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined Dependencies

Page 155: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipeline w/ Forwarding Values

Page 156: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

ALU & Regs: B4, After Fwding

Page 157: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Datapath w/ forwarding

Page 158: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Forwarding Control Table

ForwardA = 00 ID/EX 1st ALU op from reg file

ForwardA= 10 EX/MEM 1st ALU op fwd from prior ALU result

ForwardA = 01 MEM/WB 1st ALU op fwd from data mem or earlier result

MUX Control Source Reason

Page 159: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Forwarding Control Table (cont.)

ForwardB = 00 ID/EX 2nd ALU op from reg file

ForwardB= 10 EX/MEM 2nd ALU op fwd from prior ALU result

ForwardB = 01 MEM/WB 2nd ALU op fwd from data mem or earlier result

MUX Control Source Reason

Page 160: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

EX Stage Hazard Detection and Resolution

n if( EX/MEM.RegWrite && EX/MEM.RegisterRd != 0 && EX/MEM.RegisterRd == ID/EX.RegisterRs )

ForwardA = 10n if( EX/MEM.RegWrite &&

EX/MEM.RegisterRd != 0 && EX/MEM.RegisterRd == ID/EX.RegisterRt )

ForwardB = 10

Page 161: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Mem Stage Hazard Detection & Resolution

n if( MEM/WB.RegWrite && MEM/WB.RegisterRd != 0 && EX/MEM.RegisterRd != ID/EX.RegisterRs && MEM/WB.RegisterRd = ID/EX.RegisterRs) ForwardA = 01

n if( MEM/WB.RegWrite && MEM/WB.RegisterRd != 0 && EX/MEM.RegisterRd != ID/EX.RegisterRt && MEM/WB.RegisterRd = ID/EX.RegisterRt) ForwardB = 01

Page 162: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Data Hazards & Stallsn Need Hazard detection unit in addition

to forwarding unit.n Check for Load Instructions based on…

n if( ID/EX.MemRead && (ID/EX.RegisterRt==IF/ID.RegisterRs || ID/EX.RegisterRt==IF/ID.RegisterRt)) StallThePipeline

Page 163: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Where Forwarding Fails…must stall

Page 164: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

How Stalls Are Inserted

Page 165: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipelined control w/ fwding & hazard detection

Page 166: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

What about those crazy branches?

Problem: if the branch is taken, PC goes to addr 72, but don’t know until after 3 other instructions are processed

Page 167: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Branch Hazards: Assume Branch Not Taken

n Recall stalling until branch is complete is too ssssssllllooooowwww!!

n So, assume the branch is not taken…n If taken, instructions fetched/decoded must be

discarded or “squashed”n discard instructions, just change the original control

values to 0’s (similar to load-use hazard), n BIG DIFFERENCE: must flush the pipeline in the IF, ID

and EX stagesn How can we reduce the “flush” costs when a branch is

taken?

Page 168: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Reducing the Delay of Branchesn Let’s move the branch execution earlier

in the pipeline.n EFFECT: fewer instructions need to be

flushed.n NEED two actions:

n Compute branch target address (EASY –can do on IF/ID stage).

n Eval of branch decision (HARD)

Page 169: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Faster Branch Decisionn Recall, for BEQ instruction, we would

compare two regs during the ID stage and test for equality.

n Equality can be tested by XORing the two regs. (a.k.a. equality unit)

n Need additional ID stage forwarding and hazard detection hardware

n This has 2 complicating factors…

Page 170: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Faster Branch Decison: Complex Factors

1. In ID stage, now we need to decide whether a “bypass” path to the “equality” unit is needed.

• ALU forwarding logic is not sufficient, and so we need new forwarding logic for the equality unit.

2. Can stall due to a data hazard. • if an r-type instruction comes before the branch

who operands are used in the comparision in the branch, a stall is needed

Page 171: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Example Pipelined Branch

36 sub $10, $4, $840 beq $1, $3, 744 and $12, $2, $548 or $13, $2, $652 and $14, $4, $256 slt $15, $6, $7

……..72 lw $4, 50($7)

Page 172: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Branch Processing Example

Page 173: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Dynamic Branch Predictionn From the phase “There is no such thing as a typical

program”, this implies that programs will branch is different ways and so there is no “one size fits all” branch algorithm.

n Alt approach: keep a history (1 bit) on each branch instruction and see if it was last taken or not.

n Implementation: branch prediction buffer or branch history table.n Index based on lower part of branch addressn Single bit indicates if branch at address was last taken or

not. (1 or 0)

Page 174: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Problem with 1-bit Branch Predictorsn Consider a loop branch

n Suppose it occurs 9 times in a row, then is not taken.

n What’s the branch prediction accuracy?n ANSWER: 1-bit predictor will mispredict

the entry and exit points of the loop.n Yields only an 80% accuracy when there is

potential for 90% (i.e., you have to guess wrong on the exit of the loop).

Page 175: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Solution: 2-bit Branch Predictor

Must be wrong twice before changing predictionLearns if the branch is more biased towards “taken” or “not taken”

Page 176: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Performance: Single vs Multicycle vs. PL

n Assume: 200 ps for memory access, 100 ps for ALU ops, 50 ps for register access

n Single-cycle clock cycle:n 600 ps: 200 + 50 + 100 + 200 + 50

n Futher assume instruction mixn 25% loads, 10% stores, 11% branches, 2% jumps, 52%

ALU instructionsn Assume CPI for multi-cycle is 3.50n Multicycle clock cycle: must be longest unit which is

200 psn Total time for an “avg” instruction is 3.5 * 200 ps =

700ps

Page 177: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Pipeline performance (cont)n For pipelined design…

n Loads take 1 cycle when no load-use dependence and 2 cycles when there is yielding an average of 1.5 cycles per load.

n Stores and ALU instructions take 1 cycle.n Branches take 1 cycle when predicted correctly and

2 cycles when not. Assume 75% accuracy, average branch cycles is 1.25.

n Jumps are 2 cycles.n Avg CPI then is:

1.5 x 25% + 1 x 10% + 1 x 52% + 1.25 x 11% + 2 x 2% = 1.17n Longest stage is 200 ps, so 200 x 1.17 = 234

ps

Page 178: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Even more performance…

n Ultimately we want greater and greater Instruction Level Parallelism (ILP)

n How?n Multiple instruction issue.

n Results in CPI’s less than one.n Here, instructions are grouped into “issue slots”.n So, we usually talk about IPC (instructions per

cycle)n Static: uses the compiler to assist with grouping

instructions and hazard resolution. Compiler MUST remove ALL hazards.

n Dynamic: (i.e., superscalar) hardware creates the instruction schedule based on dynamically detected hazards

Page 179: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Example Static 2-issue Datapath

Additions include:

•32 bits from intr. Mem

•Two read, 1 write ports on reg file

•1 more ALU (top handles address calc)

Page 180: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Ex. 2-Issue Code Schedule

Loop: lw $t0, 0($s1) #t0=array elementaddiu $t0, $t0, $s2 #add scalar in $s2sw $t0, 0($s1) #store resultaddi $s1, $s1, -4 # dec pointerbne $s1, $zero, Loop # branch $s1!=0

ALU/Branch Data Xfer Inst. CyclesLoop: lw $t0, 0($s1) 1

addi $s1, $s1, -4 2addu $t0, $t0, $s2 3bne $s1, $zero, Loop sw $t0, 4($s1) 4

It take 4 clock cycles for 5 instructions or IPC of 1.25

Page 181: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

More Performance: Loop Unrollingn Technique where multiple copies of the loop body are

made.n Make more ILP available by removing dependencies.n How? Complier introduces additional registers via

“register renaming”.n This removes “name” or “anti” dependence

n where an instruction order is purely a consequence of the reuse of a register and not a real data dependence.

n Ex. lw $t0, 0($s1), addu $t0, $t0, $s2 and sw $t0, 4($s1)n No data values flow between one pair and the next pairn Let’s assume we unroll a block of 4 interations of the loop..

Page 182: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Loop Unrolling ScheduleALU/Branch Instructions

Data Xfer Cycles

Loop addi $s1, $s1, -16 lw $t0, 0($s1) 1lw $t1, 12($s1) 2

addu $t0, $t0, $s2 lw $t2, 8($s1) 3addu $t1, $t1, $s2 lw $t3, 4($s1) 4addu $t2, $t2, $s2 sw $t0, 16($s1) 5addu $t3, $t3, $s2 sw $t1, 12($s1) 6

sw $t2, 8($s1) 7bne $s1, $zero, loop sw $t3, 4($s1) 8

Page 183: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Performance of Instruction Schedule

n 12 of 14 instructions execute in a pair.n Takes 8 clock cycles for 4 loop

iterationsn Yields 2 clock cycles per iterationn CPI = 8/14 è 0.57n Cost of improvement: 4 temp regs + lots

of additional code

Page 184: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Dynamic Scheduled Pipeline

Page 185: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Intel P4 Dynamic Pipeline

Page 186: CSCI-2500: Computer Organizationrpi-csci-2500-2016-spring.github.io/slides/pdf/ch4.pdf · CSCI-2500 SPRING 2016, Processor Design, Chapter 4 Control n The control is a collection

CSCI-2500 SPRING 2016, Processor Design, Chapter 4

Summary of Pipeline TechnologyWe’ve

exhausted this!!