Instruction Level Parallelism (ILP)
Instruction Level Parallelism (ILP)
Instruction Level Parallelism (ILP)
(ILP)
What is a parallel instruction?
• ILP is a measure of the number of instructions that can
be performed during a single clock cycle.
• Parallel instructions are a set of instructions that do not
depend on each other to be executed.
►Hierarchy
Bit level Parallelism
► 16 bit add on 8 bit processor
Instruction level Parallelism
Loop level Parallelism
► for (i=1; i<=1000; i= i+1)
x[i] = x[i] + y[i];
Thread level Parallelism (SMT, multi-core
computers)
Loop-level parallelism exploits parallelism among
iterations of a loop. A completely parallel loop
adding two 1000-element arrays:
•Human
•Write code yourself, directly controlling
each processor
•Compiler
•Let the compiler convert your sequential
code into parallel instructions.
•Hardware
Implementations of ILP
• Pipelining
• Superscalar Architecture
• Dependency checking on chip.
• Multiple Processing Elements eg. ALU, Shift
• Multi operation instructions requires a larger
number of bits to encode
• VLIW (Very Long Instruction Word Architecture)
• Simple hardware, Complex Compiler
• EPIC explicitly parallel instruction computer
• Pipelining
http://en.wikipedia.org/wiki/Image:Fivestagespipeline.png
► Superscalar
http://en.wikipedia.org/wiki/Image:Superscalarpipeline.png
Identifying parallel instructions
• http://en.wikipedia.org/wiki/Image:Fivestagespipeline.png
• http://en.wikipedia.org/wiki/Image:Superscalarpipeline.png
• http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/instrLevParal.html