Anda di halaman 1dari 53

Lecture 8

Pipelining
Technique in which multiple instructions are overlapped in
execution

Non-pipelined Vs Pipelined performance


MIPS instruction execution involves the following
steps
Fetch instruction from memory
Read registers while decoding the instruction
Execute the operation or calculate an address
Access an operand in data memory
Write the result into a register

Non-pipelined Vs Pipelined performance


Consider the following

Non-pipelined Vs Pipelined Performance


For the non-pipelined operation

Non-pipelined Vs Pipelined Performance


For the pipelined operation

Pipeline Hazards
Situations in pipelining when the next instruction
cannot execute in the following clock cycle
Three types
i.

Structural hazard

ii. Data hazard (Pipe-line data hazard)


iii. Control hazard (Branch hazard)

Structural Hazards
A planned instruction cannot execute in the proper
clock cycle because the hardware cant support the
combination of instructions that are set to execute in
the given clock cycle

Data Hazards
A planned instruction cannot execute in the proper
clock cycle because data that is needed to execute
the instruction is not yet available
To solve this we use forwarding or bypassing
technique
Forwarding - Retrieving the missing data element from
internal buffers rather than waiting for it to arrive from
programmer-visible registers or memory

Data Hazards

Data Hazards
Load-use data hazard A data hazard in which the
data requested by a load instruction has not yet
become available when it is requested
We need a pipeline stall to resolve this
Pipeline stall (Bubble) - A stall initiated to resolve a
hazard

Data Hazards

Control Hazards
A planned instruction cannot execute in the proper
clock cycle because the instruction that was fetched is
not the one that is needed; i.e., the flow of instruction
addresses is not what the pipeline expected
Arises from the need to make a decision based on the
results of one instruction while others are executing

Control Hazards
When the branch is not taken

Control Hazards
When the branch is to be taken

Control Hazards
Branch prediction - A method of resolving a branch
hazard by assuming a given outcome for the branch
and proceeding from that assumption rather than
waiting to ascertain the actual outcome
Dynamic branch prediction works by keeping a history
for each branch as taken or untaken, and then using
the recent past behavior to predict the future

Control Hazards
Delayed branch is another solution
MIPS software will place an instruction immediately
after the delayed branch instruction that is not affected
by the branch

Pipelined datapath

Pipelined datapath

Pipelined datapath with pipeline registers

Stages of lw instruction

Stages of lw instruction

Stages of lw instruction

Stages of lw instruction

Stages of lw instruction

Stages of sw instruction

Stages of sw instruction

Stages of sw instruction

Stages of sw instruction

Stages of sw instruction

Corrected datapath for lw instruction

Pipelined Control

Data hazards & forwarding

Two pairs of hazard conditions


1a. EX/MEM.RegisterRd = ID/ EX.RegisterRs
1b. EX/MEM.RegisterRd = ID/EX.RegisterRt
2a. MEM/WB.RegisterRd = ID/EX.RegisterRs
2b. MEM/WB.RegisterRd = ID/EX.RegisterRt

Data hazards & forwarding

ALU and pipeline registers before adding


forwarding

ALU and pipeline registers with forwarding

The control values for the forwarding multiplexors

Conditions for detecting hazards with control


signals
EX hazard:
if (EX/MEM.RegWrite
and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10
if (EX/MEM.RegWrite
and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10

Conditions for detecting hazards with control


signals.
MEM hazard:
if (MEM/WB.RegWrite
and (MEM/WB.RegisterRd 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01
if (MEM/WB.RegWrite
and (MEM/WB.RegisterRd 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

Data hazards & stalls

if (ID/EX.MemRead and
((ID/EX.RegisterRt = IF/ID.RegisterRs) or
(ID/EX.RegisterRt = IF/ID.RegisterRt)))
stall the pipeline

Data hazards & stalls

Pipeline with Forwarding and Hazard


Detection Unit

Branch hazards

Branch hazards
When a branch is taken we will discard or flush the
instruction in IF, ID & EX stages by setting the control
signals to 0
Calculate the branch target address and make the branch
decision at ID stage of the pipeline.
Dynamic branch prediction
Delayed branch
36 sub $10, $4, $8
40 beq $1, $3, 7 # PC-relative branch to 40 + 4 + 7 * 4 = 72
44 and $12, $2, $5
48 or $13, $2, $6
52 add $14, $4, $2
56 slt $15, $6, $7
...
72 lw $4, 50($7)

Exceptions

40hex sub $11, $2, $4


44hex and $12, $2, $5
48hex or $13, $2, $6
4Chex add $1, $2, $1
50hex slt $15, $6, $7
54hex lw $16, 50($7)
assume the instructions to be invoked on an exception
begin like this:
40000040hex sw $25, 1000($0)
40000044hex sw $26, 1004($0)

Anda mungkin juga menyukai