All Topics  
Instruction level parallelism

 

   Email Print
   Bookmark   Link






 

Instruction level parallelism



 
 
Instruction-level parallelism (ILP) is a measure of how many of the operations in a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 can be performed simultaneously. Consider the following program:

1. e = a + b 2. f = c + d 3. g = e * f

Operation 3 depends on the results of operations 1 and 2, so it cannot be calculated until both of them are completed. However, operations 1 and 2 do not depend on any other operation, so they can be calculated simultaneously.






Discussion
Ask a question about 'Instruction level parallelism'
Start a new discussion about 'Instruction level parallelism'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Instruction-level parallelism (ILP) is a measure of how many of the operations in a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 can be performed simultaneously. Consider the following program:

1. e = a + b 2. f = c + d 3. g = e * f

Operation 3 depends on the results of operations 1 and 2, so it cannot be calculated until both of them are completed. However, operations 1 and 2 do not depend on any other operation, so they can be calculated simultaneously. (See also: Data dependency
Data dependency

A data dependency in computer science is a situation in which a program statement refers to the data of a preceding statement. In compiler theory, the technique used to discover data dependencies among statements is called Dependence analysis....
) If we assume that each operation can be completed in one unit of time then these three instructions can be completed in a total of two units of time, giving an ILP of 3/2.

A goal of compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
 and processor
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 designers is to identify and take advantage of as much ILP as possible. Ordinary programs are typically written under a sequential execution model where instructions execute one after the other and in the order specified by the programmer. ILP allows the compiler and the processor to overlap the execution of multiple instructions or even to change the order in which instructions are executed.

How much ILP exists in programs is very application specific. In certain fields, such as graphics and scientific computing the amount can be very large. However, workloads such as cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
 exhibit much less parallelism.

Micro-architectural techniques that are used to exploit ILP include:
  • Instruction pipelining where the execution of multiple instructions can be partially overlapped.
  • Superscalar
    Superscalar

    A superscalar Central processing unit architecture implements a form of parallel computer called instruction level parallelism within a single processor....
     execution in which multiple execution unit
    Execution unit

    In computer engineering, an execution unit is a part of a central processing unit that performs the operations and calculations called for by the computer program....
    s are used to execute multiple instructions in parallel. In typical superscalar processors, the instructions executing simultaneously are adjacent in the original program order.
  • Out-of-order execution
    Out-of-order execution

    In computer engineering, out-of-order execution, OoOE, is a paradigm used in most high-performance microprocessors to make use of Instruction cycle that would otherwise be wasted by a certain type of costly delay....
     where instructions execute in any order that does not violate data dependencies. Note that this technique is independent of both pipelining and superscalar.
  • Register renaming
    Register renaming

    In computer engineering, register renaming refers to a technique usedto avoid unnecessary serialization of program operations imposed by the reuse...
     which refers to a technique used to avoid unnecessary serialization of program operations imposed by the reuse of registers by those operations, used to enable out-of-order execution.
  • Speculative execution
    Speculative execution

    In computer science, speculative execution is the execution of Code , the result of which may not be needed. In the context of functional programming, the term "speculative evaluation" is used instead....
     which allow the execution of complete instructions or parts of instructions before being certain whether this execution should take place. A commonly used form of speculative execution is control flow speculation where instructions past a control flow instruction (e.g., a branch) are executed before the target of the control flow instruction is determined. Several other forms of speculative execution have been proposed and are in use including speculative execution driven by value prediction, memory dependence prediction
    Memory dependence prediction

    Memory dependence prediction is a technique, employed by high-performance out-of-order execution microprocessors that execute primary storage access operations out of program order, to predict true dependences between loads and stores at instruction execution time....
     and cache latency prediction.
  • Branch prediction which is used to avoid stalling for control dependencies to be resolved. Branch prediction is used with speculative execution.


Current implementations of out-of-order execution dynamically
Runtime

In computer science, runtime or run time describes the operation of a computer program, the duration of its execution, from beginning to termination ....
 (i.e., while the program is executing and without any help from the compiler) extract ILP from ordinary programs. An alternative is to extract this parallelism at compile time
Compile time

In computer science, compile time refers to either the operations performed by a compiler , programming language requirements that must be met by source code for it to be successfully compiled , or properties of the program that can be reasoned about at compile time....
 and somehow convey this information to the hardware. Due to the complexity of scaling the out-of-order execution technique, the industry has re-examined instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
s which explicitly encode multiple independent operations per instruction. These instruction set types include:

  • VLIW
    Very long instruction word

    Very Long Instruction Word or VLIW refers to a Central processing unit architecture designed to take advantage of instruction level parallelism ....
     and the closely related Explicitly Parallel Instruction Computing
    Explicitly Parallel Instruction Computing

    Explicitly Parallel Instruction Computing is a term coined in 1997 by the Itanium to describe a computing paradigm that began to be researched in the early 1980s....
     concepts


Dataflow architecture
Dataflow architecture

Dataflow architecture is a computer architecture that directly contrasts the traditional von Neumann architecture or control flow architecture. Dataflow architectures do not have a program counter or the executability and execution of instructions is solely determined based on the availability of input arguments to the instructions....
s are another class of architectures where ILP is explicitly specified, but they have not been actively researched since the 1980s.

In recent years, ILP techniques have been used to provide performance improvements in spite of the growing disparity between processor operating frequencies and memory access times (early ILP designs such as the IBM 360 used ILP techniques to overcome the limitations imposed by a relatively small register file). Presently, a cache miss penalty to main memory costs several hundreds of CPU cycles. While in principle it is possible to use ILP to tolerate even such memory latencies the associated resource and power dissipation costs are disproportionate. Moreover, the complexity and often the latency of the underlying hardware structures results in reduced operating frequency further reducing any benefits. Hence, the aforementioned techniques prove inadequate to keep the CPU from stalling for the off-chip data. Instead, the industry is heading towards exploiting higher levels of parallelism that can be exploited through techniques such as multiprocessing
Multiprocessing

Multiprocessing is the use of two or more CPU within a single computer system. The term also refers to the ability of a system to support more than one processor and/or the ability to allocate tasks between them....
 and multithreading.

See also

  • Data dependency
    Data dependency

    A data dependency in computer science is a situation in which a program statement refers to the data of a preceding statement. In compiler theory, the technique used to discover data dependencies among statements is called Dependence analysis....
  • Memory level parallelism
    Memory level parallelism

    Memory Level Parallelism or MLP is a term in computer architecture referring to the ability to have pending multiple memory operations, in particular cache misses, at the same time....
    , MLP.


External links