16.2 Pipelining 541
Conventional computers are built according to theVon Neumannarchitecture,
shown in the figure below:
Memory CPU I/O
There is one processor, the CPU (central processing unit), which communicates
with the internal memory and with the I/O devices such as keyboards, screens,
printers, tape streamers and disks. Therefore every piece of data to be manipulated
must pass through the processor which can perform elementary operations at a fixed
rate of one operation perclock cycle. The clock cycle time determines the maximal
speed at which the computer can operate. This limit on the performance speed with
this type of architecture is called theVon Neumann bottleneck.
In the next two sections the two methods for overcoming the Von Neumann
bottleneck, pipelining and parallelism, are discussed, and in the last section we
present a parallel molecular dynamics algorithm in some detail.
16.2 Pipelining
16.2.1 Architectural aspects
Pipelining orvector processingis closely related to a pipeline arrangement in a
production line in a factory. Consider the addition of two floating point numbers,
0.92× 104 , and 0.93× 103 , in a computer. We shall assume that the numbers in
our computer are represented according to the decimal (base 10) system – in reality
mostly a base 2 (binary) or 16 (hexadecimal) system is used. The exponents (powers
of 10) are always chosen such that the mantissas (0.92 and 0.93) lie between 0.1
and 1.0.
The computer will first change the representation of one of the two numbers so
that it has the same exponent as the other, in our case 0.93× 103 →0.093× 104 ,
then the two mantissas (0.92 and 0.093) are added to give the result 1.013× 104
and then the representation of this number will be changed into one in which the
mantissa has a value between 0.1 and 1.0: 1.013× 104 →0.1013× 105. All in
all, a number of steps must be carried out in the processor in order to perform this
floating point operation:
Load the two numbers to be added from memory;
Compare exponents;
Line exponents up;
Add mantissas;