Flynn's Taxonomy is a pretty simple classification of how computers process data. You have data, and you have instructions. How many of each can the processor handle at once? Your options are "just one" or "more than one", leading to four combinations.
Single Instruction, Single Data (SISD)
A processor that can only do one job at a time from start to finish. Early computers were like this until the advent of pipelining.
Single Instruction, Multiple Data (SIMD)
Commonly called a vector processor, this type takes multiple pieces of datum and does the same operation to all of them.
Common applications include digital signal processors (DSP) and graphics processors
. The problem with SIMD style processing is that it tickles the way programmers write code. Instead of writing a loop to add numbers from two arrays one by one, you tell the program to take the numbers from two arrays at once and add them together. The other issue is that a lot of algorithms don't necessary benefit from SIMD style computing, especially when some parts of the data stream rely on the results of another not in sequence.
Some examples include:
- A Multi-Core Processor in a properly threaded task.
- The PlayStation 2's VU0 and VU1, which were the forefront of the graphics and other math related tasks. The graphical part would be sent off to its Emotion Engine for further processing.
- Supercomputers that crunch a ton of data.
Multiple Instructions, Single Data (MISD)
A rare type, since data throughput is limited.
One example could be a superscalar pipeline
, but it's arguable since the datum can't be considered the same throughout. Another is multiple redundant systems on spacecraft and airplanes. However, once they're done with the task, they can't save the processed datum until they agree on the answer.
In a naive sense this could be two independent machines working on one piece of data, such as two people working a page in TV Tropes
. However, this creates a problem: when one person saves then the other, the previous person's data is overwritten. Hence there's a lock. This problem is called a race condition.
Multiple Instructions, Multiple Data (MIMD)
The modern, multicore, superscalar processor. It can do multiple things on multiple sets of data independently. Also the modern GPU fits this category very well with shader units that are agnostic to what they're doing. A GPU can do geometry work, pixel coloring, physics, and even generic computing. But at the same time, it can morph into a SIMD processor.