程序代写代做代考 compiler Chapter …
Chapter …
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 1
Chapter 4 — The Processor — 88
EX for Store
Chapter 4 — The Processor — 89
MEM for Store
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 2
Chapter 4 — The Processor — 90
WB for Store
Chapter 4 — The Processor — 91
Multi-Cycle Pipeline Diagram
Form showing resource usage
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 3
Chapter 4 — The Processor — 92
Multi-Cycle Pipeline Diagram
Traditional form
Pop Quiz
How many cycles would it take the
following instructions to complete?
A: 5
B: 6
C: 7
D: 8
Chapter 4 — The Processor — 93
add $t2, $t0, $t1
lw $t3, 0($t2)
add $t4, $t5, $t3
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 4
Pop Quiz (answer)
Chapter 4 — The Processor — 94
1. add $t2, $t0, $t1
2. lw $t3, 0($t2)
3. add $t4, $t5, $t3
1 2 3 4 5 6 7 8
—————
F D X M W
F D X M W
* * * * *
F D X M W
Chapter 4 — The Processor — 95
Single-Cycle Pipeline Diagram
State of pipeline in a given cycle
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 5
Chapter 4 — The Processor — 96
Pipelined Control (Simplified)
Chapter 4 — The Processor — 97
Pipelined Control
Control signals derived from instruction
As in single-cycle implementation
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 6
Chapter 4 — The Processor — 98
Pipelined Control
Chapter 4 — The Processor — 99
Data Hazards in ALU Instructions
Consider this sequence:
sub $2, $1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
We can resolve hazards with forwarding
How do we detect when to forward?
§
4
.7
D
a
ta
H
a
z
a
rd
s
: F
o
rw
a
rd
in
g
v
s
. S
ta
llin
g
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 7
Chapter 4 — The Processor — 100
Dependencies & Forwarding
Chapter 4 — The Processor — 101
Detecting the Need to Forward
Pass register numbers along pipeline
e.g., ID/EX.RegisterRs = register number for
Rs sitting in ID/EX pipeline register
ALU operand register numbers in EX stage
are given by
ID/EX.RegisterRs, ID/EX.RegisterRt
Data hazards when
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
Fwd from
EX/MEM
pipeline reg
Fwd from
MEM/WB
pipeline reg
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 8
Chapter 4 — The Processor — 102
Detecting the Need to Forward
But only if forwarding instruction will
write to a register!
EX/MEM.RegWrite, MEM/WB.RegWrite
And only if Rd for that instruction is not
$zero
EX/MEM.RegisterRd ≠ 0,
MEM/WB.RegisterRd ≠ 0
Chapter 4 — The Processor — 103
Forwarding Paths
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 9
Chapter 4 — The Processor — 104
Forwarding Conditions
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
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
Pop Quiz
We can always ”forward” our way around
instruction dependencies:
A: True
B: False
Chapter 4 — The Processor — 105
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 10
Chapter 4 — The Processor — 106
Double Data Hazard
Consider the sequence:
add $1,$1,$2
add $1,$1,$3
add $1,$1,$4
Both hazards occur
Want to use the most recent
Revise MEM hazard condition
Only fwd if EX hazard condition isn’t true
Chapter 4 — The Processor — 107
Revised Forwarding Condition
MEM hazard
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)
and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRs))
and (MEM/WB.RegisterRd = ID/EX.RegisterRs))
ForwardA = 01
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)
and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRt))
and (MEM/WB.RegisterRd = ID/EX.RegisterRt))
ForwardB = 01
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 11
Chapter 4 — The Processor — 108
Datapath with Forwarding
Chapter 4 — The Processor — 109
Load-Use Data Hazard
Need to stall
for one cycle
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 12
Chapter 4 — The Processor — 110
Load-Use Hazard Detection
Check when using instruction is decoded
in ID stage
ALU operand register numbers in ID
stage are given by
IF/ID.RegisterRs, IF/ID.RegisterRt
Load-use hazard when
ID/EX.MemRead and
((ID/EX.RegisterRt = IF/ID.RegisterRs)
or
(ID/EX.RegisterRt = IF/ID.RegisterRt))
If detected, stall and insert bubble
Chapter 4 — The Processor — 111
How to Stall the Pipeline
Force control values in ID/EX register
to 0
EX, MEM and WB do nop (no-operation)
Prevent update of PC and IF/ID
register
Using instruction is decoded again
Following instruction is fetched again
1-cycle stall allows MEM to read data for
lw
Can subsequently forward to EX stage
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 13
Chapter 4 — The Processor — 112
Stall/Bubble in the Pipeline
Stall inserted
here
Chapter 4 — The Processor — 113
Stall/Bubble in the Pipeline
Or, more
accurately…
Morgan Kaufmann Publishers 6 November, 2018
Chapter 4 — The Processor 14
Chapter 4 — The Processor — 114
Datapath with Hazard Detection
Chapter 4 — The Processor — 115
Stalls and Performance
Stalls reduce performance
But are required to get correct results
Compiler can arrange code to avoid
hazards and stalls
Requires knowledge of the pipeline
structure
The BIG Picture