Vector Processing. Ben Helmer Matt Sagerstrand Daniel Yingling. EARLY VECTOR PROCESSING. Vector Processing was used in supercomputers of the 1970's.
The Cray-1 machine was the first computer to fully exploit Vector Processing.
Rather than leaving the vector instructions in memory (as did the ASC and Cyber 100), the Cray-1 used sixty-four 64-bit "vector registers" for its Vector Processing.THE CRAY-1
A number of companies attempted to follow up on the success of the Cray-1 machine, but none could really compete with Cray.
Cray continued its dominance of the Vector Processing field with its Cray-2, Cray X-MP, and Cray Y-MP computers.LATER VECTOR PROCESSING
Since this time, however, the supercomputer industry has shifted its focus to "massive parallel processing" with Vector Processing now much less popular.
Elements of Vector Processing are now common to most home PC's, though they are now referred to as SIMD (Single Instruction, Multiple Data).
SIMD implementations generally run beside the main, scalar CPU and are only used when necessary.LATER VECTOR PROCESSING (Cont’d)
do 5 i = 1, n
X(i) = Y(i) + Z(i)
T = s + aN
s = startup time
a = an instruction dependent constant (which is usually
either 1/2, 1, or 2)
N = the length of the vector
v0 = v1 * v2
v3 = v2 * v4
Speedup(a,T) = -----------------
a + (1 - a) / T
a = the non-vectorizable portion of the program
T = number of times the vector execution is faster than the sequential execution
Since the Cray Y-MP, the super computer market has focused mostly on implementations of massively parallel processing as opposed to vector processor implementations.Vector Processor Implementation
Now implemented in most modern computers under the name SIMD (Single Input, Multiple Data), which is often used in multimedia processing, such as in the DIV-X codecs.
The picture to the left shows the development of the Fifth Element, which used graphics exploiting vector processing.Implementation in Multimedia
X * Y = Z, where X, Y, and Z are 100- value vectors (arrays of size 100).
DO 10 I = 1, 100
Z(I) = X(I) * Y(I)
VLOAD Y VR2 //loading Y into VR2, a vector register
VMULT VR1 VR2 VR3 //vector multiplying VR1 by VR2, storing results in VR3
VSTORE VR3 Z //store vector register VR3 into main memory as Z