OS-Pipelining and Vector Processing


PIPELINING:

Pipelining is a technique of decomposing a sequential process into suboperations, with each subprocess being executed in a special dedicated segment that operates concurrently with all other segments. It is characteristic of pipelines that several computations can be in progress in distinct segments at the same time. Multi-stage pipelines are much like assembly lines automobile factories. Each station in the instruction pipeline performs a different operation on an instruction then the instruction moves on to the next station; all stations operate in parallel. Pipelines enable many instructions, each in different phases of execution, to be in progress at once. These phases typically include instruction fetch, operand fetch, instruction decode and instruction execution. In the most general case, the computer needs to process each instruction with the following sequence of steps.
  1.  Fetch the instruction from memory.
  2.  Decode the instruction
  3.  Calculate the effective address.
  4.  Fetch the operands from memory.
  5.  Execute the instruction
  6.  Store the result in the proper place
Early computers executed a single machine language instruction at a time, start to finish. Today’s pipelined systems being working on the next instruction, and often the next several, which the current instruction is executing.

VECTOR PROCESSING:

There is a class of computational problems that are beyond the capabilities of a conventional computer. These problems are characterized by the fact that they require a vast number of computations that will take a conventional computer days or even weeks to complete. In many science and engineering applications, the problems can be formulated in terms of vectors and matrices that lend themselves to vector processing.

Computers with vector processing capabilities are in demand in specialized applications. The following are representative application areas where vector processing is of the utmost importance.
  1.  Long-range weather forecasting
  2.  Petroleum explorations
  3.  Seismic Data Analysis
  4.  Medical Diagnosis
  5.  Aerodynamics and Space Flight Simulations
  6.  Artificial Intelligence and Expert Systems
  7.  Mapping the Human Genome
  8.  Image Processing

Without sophisticated computers, many of the required computations cannot be completed within a reasonable amount of time. To achieve the required level of high performance it is necessary to utilize the fastest and most reliable hardware and apply innovative procedures from vector and parallel processing techniques.

Vector processing requires pipelined hardware, but not vice versa. Many scientific problems require arithmetic operations on large arrays of numbers. These numbers are usually formulated as vectors and matrices of floating-point numbers. A vector is an ordered set of a one-dimensional array of data

items. A vector V of length n is represented as a row vector by V=[V1 V2 V3 …. VN] . It may be represented as a column vector if the data items are listed in a column. A conventional sequential computer is capable of processing operands one at a time. Consequently, operations on vectors must be broken down into single computations with subscripted variables.

A vector instruction indicates the operation to be performed, and specifies the list of operands(called a vector) on which it is to operate. It allows operations to be specified with a single vector instruction of the form

     C(1:100)=A(1:100)+B(1:100)

The vector instruction includes the initial address of the operands, the length of the vectors, and the operation to be performed, all in one composite instruction.

When a vector instruction is executed, the elements of the vector are fed into the appropriate pipeline one at a time, delayed by the time it takes to complete into the appropriate pipeline one at a time, delayed by the time it takes to complete one stage of the pipeline. Compilers “vectorize” programs to run efficiently on vector processors. The Cray-1 Vector processor has 13 pipelines that can operate in parallel; these are dedicated to operations such as floating addition, floating multiplication, reciprocal approximation, fixed addition and so on.
Share this article :
 
Copyright © 2012. Best Online Tutorials | Source codes | Programming Languages - All Rights Reserved