SIMD
SIMD is Single Instruction Multiple Data.
This refers to
each machine instruction operating on more than one piece
of data at once.
The data are transformed in parallel,
instead of sequentially.
This parallel processing requires that
the data be in vectors.
A vector
is a set of things. A single thing is a
scalar.
A single number is a scalar.
A set of numbers is a vector.
For example, here is a single number: 5
That is a scalar.
Here is a set of numbers: 5 18 3 2
That is a vector of four scalars.
A vector can consist of only one scalar.
For some SIMD instructions, a data vector
may contain only one scalar.
You could say that is scalar processing.
But from the SIMD point of view, it is
vector processing, just a special case
where the vector only has one scalar in it.
For SIMD processing, you simply write programs for the
computer's ISA:
|
|
The defining trait of general-purpose processors
is a high degree of programmability via a general
instruction-set architecture
(ISA)
The ISA is a contract between hardware and software [ 1 ]
|
|
This makes SIMD programming for ISA
much more portable than other types of programming
including non-ISA SIMD programming and CISC
programming.
|
This is in contrast to domain-specific processors
such as network processors and graphics processors [ 2 ]
unlike vector processors, superscalar processors
allow more sophisticated mixtures of operations to efficiently
load their pipelined units than just basic array operations.
But normally such mixtures are rather specific for each
superscalar processor and therefore are not portable. [ 3 ]
|
|
|
 |
References:
|
1.
|
Rotenberg & Anantaraman,
Architecture of Embedded Microprocessors,
Ch. 4 in
Multiprocessor Systems-on-Chips,
Jerraya & Wolf eds.,
p. 83-84.
|
|
|
|
2.
|
Ibid.
|
|
|
|
3.
|
A.L. Lastovetsky,
Parallel Computing on Heterogeneous Networks,
p. 22.
|
|