recap: the basic idea pipeline 1 -...
TRANSCRIPT
![Page 1: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/1.jpg)
Pipeline 1
Computer Organization IICS@VT ©2005-2020 WD McQuain
Recap: the Basic Idea
Can we operate the stages independently, using an earlier one to begin the next
instruction before the previous instruction has completed?
We have 5 stages,
which will mean that on
any given cycle up to 5
different instructions will
be in various points of
execution.
![Page 2: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/2.jpg)
Pipeline 2
Computer Organization IICS@VT ©2005-2020 WD McQuain
Hazards
Situations that prevent starting the next instruction in the next cycle
Structural hazards
– A required resource is busy
Data hazard
– Need to wait for previous instruction to complete its data read/write
Control hazard
– Deciding on control action depends on previous instruction
![Page 3: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/3.jpg)
Pipeline 3
Computer Organization IICS@VT ©2005-2020 WD McQuain
Structural Hazards
Conflict for use of a resource
In MIPS pipeline with a single memory
– Load/store both require memory access
– So does instruction fetch
– Instruction fetch would have to stall for that cycle
Hence, MIPS pipeline require separate instruction/data memories
– Or separate instruction/data caches
– Or dual-ported memories
For example:
![Page 4: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/4.jpg)
Pipeline 4
Computer Organization IICS@VT ©2005-2020 WD McQuain
Data Hazards
An instruction depends on completion of a write to a register by a previous instruction
add $s0, $t0, $t1 // writes $s0 from WB stage
sub $t2, $s0, $t3 // needs value in ID stage
2-stage stall
![Page 5: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/5.jpg)
Pipeline 5
Computer Organization IICS@VT ©2005-2020 WD McQuain
Forwarding (aka Bypassing)
Use result when it is computed
– Don’t wait for it to be stored in a register
– Requires extra connections in the datapath (& more control logic?)
no stall
![Page 6: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/6.jpg)
Pipeline 6
Computer Organization IICS@VT ©2005-2020 WD McQuain
Load-Use Data Hazard
Can’t always avoid stalls by forwarding
– If value not computed when needed, can’t forward backward in time!
1-stage stall
![Page 7: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/7.jpg)
Pipeline 7
Computer Organization IICS@VT ©2005-2020 WD McQuain
Code Scheduling to Avoid Stalls
Reorder code to avoid use of load result in the next instruction
C code for A = B + E; C = B + F;
lw $t1, 0($t0)
lw $t2, 4($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
stall
stall
lw $t1, 0($t0)
lw $t2, 4($t0)
lw $t4, 8($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
11 cycles13 cycles
Who reorders the code?
![Page 8: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/8.jpg)
Pipeline 8
Computer Organization IICS@VT ©2005-2020 WD McQuain
Control Hazards: beq
Branch determines flow of control
Fetching next instruction depends on branch outcome
Register comparison done in EX stage
MUX selection done in MEM stage
Branch target address computed in EX stage
What instruction do we fetch when BEQ is in ID stage?
![Page 9: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/9.jpg)
Pipeline 9
Computer Organization IICS@VT ©2005-2020 WD McQuain
Control Hazards: beq
How can we deal with BEQ?
Stall until we know whether (& where) to branch?
Make the decision and calculate the address earlier?
Guess whether the branch will be taken?
![Page 10: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/10.jpg)
Pipeline 10
Computer Organization IICS@VT ©2005-2020 WD McQuain
Stall on Branch
Wait until branch outcome determined before fetching next instruction
How many cycles does this cost?
![Page 11: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/11.jpg)
Pipeline 11
Computer Organization IICS@VT ©2005-2020 WD McQuain
Early Decision
What new hardware would be needed to decide earlier?
Must compare the registers before the EX stage
Must compute the branch target address before the EX stage
Can we know what to do by the time BEQ enters the ID stage?
![Page 12: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/12.jpg)
Pipeline 12
Computer Organization IICS@VT ©2005-2020 WD McQuain
Branch Prediction
Longer pipelines can’t readily determine branch outcome early
– Stall penalty becomes unacceptable
Predict outcome of branch
– Only stall if prediction is wrong
In MIPS pipeline
– Can predict branches will not be taken
– Fetch sequential instruction after branch, with no delay
![Page 13: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/13.jpg)
Pipeline 13
Computer Organization IICS@VT ©2005-2020 WD McQuain
MIPS with Predict-Not-Taken
Prediction
correct
Prediction
incorrect
![Page 14: Recap: the Basic Idea Pipeline 1 - courses.cs.vt.educourses.cs.vt.edu/cs2506/Spring2020/notes/L09_PipelineHazards.pdf · Recap: the Basic Idea Can we operate the stages independently,](https://reader035.vdocuments.net/reader035/viewer/2022071216/60480f531a331232f8239c3a/html5/thumbnails/14.jpg)
Pipeline 14
Computer Organization IICS@VT ©2005-2020 WD McQuain
Pipeline Summary
Pipelining improves performance by increasing instruction throughput
– Executes multiple instructions in parallel
– Each instruction has the same latency
Subject to hazards
– Structure, data, control
Instruction set design affects complexity of pipeline implementation