Professional Documents
Culture Documents
Parallel Programming
WHY
ILP?
Instruction pipelining
Superscalar
Out-of-order execution
Register renaming
Speculative execution
Branch prediction
INSTRUCTION PIPELINE
Simple Model F1 D1 E1
Instruction Fetch F2 D2 E2
Instruction Decode F3 D3 E3
Instruction Execute
pipeline
Not
e: variations depending on processor
Slight
Without Pipelining
• Normally, you would perform the fetch, decode,
execute, operate, and write steps of an instruction
and then move on to the next
1 2 3 4 5 6 7 8 9 10
Instr
1
Instr
2
With Pipelining
Instr 1
Instr 2
Instr 3
Instr 4
EXAMPLE
• For example, the RISC pipeline is broken into five stages
with a set of flip flops between each stage as follow:
Instruction fetch
Instruction decode & register fetch
Execute
Memory access
Register
Instruction fetch.
The instruction waits in the queue until its input operands are available.
Only after all older instructions have their results written back to the register
file, then this result is written back to the register.
OTHER ILP TECHNIQUES
Register renaming which is a technique used to avoid unnecessary
serialization of program operations caused by the reuse of registers by
those operations, in order to enable out-of-order execution.