|Quotes • Headscratchers • Playing With • Useful Notes • Analysis • Image Links • Haiku • Laconic|
Flynn's Taxonomy is a pretty simple classification of how computers process data. You have data, instructions, one or more. So it breaks it down into for categories.
Single Instruction, Single Data (SISD)
A processor that does only one thing at a time. Which is pretty much every common day computer built until the 1980s. This includes mainframes and personal computers.
Single Instruction, Multiple Data (SIMD)
A processor that takes more than one piece of data and does the same operation to all of them. Commonly called a vector processor. 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 Play Station 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.
- And supercomputers. In particular, render farms.
Multiple Instructions, Single Data (MISD)
This is used in redundant systems, such as the computers installed in space craft or air planes. Upon completion of the instruction, they have to agree on the answer. However, they also can't save the data until they agree on it. Independent processors that operate on the same piece of data creates a hazard known as the 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.