What is the difference between SIMD and vector processors? My current understanding is that Vector processing is a subset of SIMD. But I was told that "SIMD is not restricted to vectors" and I don't know exactly what that means. Any concrete examples?
Also, why are scalar architectures preferred to vector architectures? Is it because they are easier to implement and program?
I am aware that we have SISD (regular 1 core CPUs), SIMD (SSE extensions on single/multi core processors), MIMD (errmm.. roughly something like MPI I guess, so clustering!), and MISD (which has been deemed impractical/infeasible). Apart from this, some other things I have read about are Vector processing and Superscalar architectures. Any new architectures that I missed and should know about? Thanks!
Vectors are also called SIMD operands or packed operands. SIMD processing exploits data-level parallelism. Data-level parallelism means that the operations required to transform a set of vector elements can be performed on all elements of the vector at the same time.
SIMD was the basis for vector supercomputers of the early 1970s such as the CDC Star-100 and the Texas Instruments ASC, which could operate on a "vector" of data with a single instruction. Vector processing was especially popularized by Cray in the 1970s and 1980s.
A vector architecture specifies that the same operation is performed on every element in a vector. It does not specify how this is implemented in the microarchitecture. For example, the T0 processor has 8 pipes, thereby allowing a vector operation to be performed in parallel on 8 elements of the vector.
SIMD stands for 'Single Instruction and Multiple Data Stream'. It represents an organization that includes many processing units under the supervision of a common control unit. All processors receive the same instruction from the control unit but operate on different items of data.
Flynn's Taxonomy is a classification of computer architectures. By Flynn's Taxonomy vector processing falls into the class of SIMD. There are architectures which are not vector processors but fall into the SIMD class. Examples are e.g. the Connection Machine and many GPUs where multiple processors execute the same instructions.
MMX, SSE, Altivec, etc fall into vector processing as well as the SIMD class. There are many names referring to the same concept: subword parallelism, small scale SIMD, short vector processing, SIMD within a register (SWAR) or most commonly multimedia extensions.
Traditionally vector processors like the Cray or the STAR have used larger and variable vector sizes.
Superscalar is a way to implement a processor but does not make any statement about its instruction set like Flynn's Taxonomy does.
A practical example could be found from comparison of ARM Neon vs ARM VFP. The first is more classical SIMD evaluating 2,4,8 or 16 items in parallel (or mostly parallel). The other is a floating point extension, that is programmed to sequentially iterate over two sets of successive registers (perhaps allowing a skip by 2) eg. S0..S3, S8..S11 and writing the result to S12..S15.
The latter architecture handles a variable number (1-4) operations with the same instruction using 1-4 clock cycles to complete the task. If the architecture would allow say 128 operations per instruction, the conceptual difference between the systems would be clearer -- even though both would be vector and SIMD architectures.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With