Flynn’s Taxonomy is a simple but powerful framework for classifying computer architectures based on how instructions and data are handled during execution. It was proposed by Michael J. Flynn in 1966, and it’s still widely used today in computer architecture discussions.
Flynn’s model classifies systems into four categories:
The 4 Categories of Flynn’s Taxonomy
| Classification | Instruction Stream | Data Stream | Example Systems |
|---|---|---|---|
| SISD | Single | Single | Classical CPUs (e.g., Intel 8086, MIPS) |
| SIMD | Single | Multiple | GPUs, Vector Processors, MMX/SSE |
| MISD | Multiple | Single | Rare, fault-tolerant systems |
| MIMD | Multiple | Multiple | Multicore CPUs, Clusters, Supercomputers |
1. SISD – Single Instruction, Single Data
-
Classic sequential machines.
-
One instruction executes at a time, on one piece of data.
-
Used in: traditional single-core CPUs.
int a = b + c;One instruction, working on one set of values.
2. SIMD – Single Instruction, Multiple Data
-
One instruction is applied to many data elements at once.
-
Ideal for parallel data processing, such as in graphics or signal processing.
-
Used in: GPUs, vector processors, AVX, NEON, etc.
// Adds 4 pairs of integers in parallel
vector_add([1,2,3,4], [5,6,7,8]) → [6,8,10,12]3. MISD – Multiple Instruction, Single Data
-
Rare and not used in general-purpose computing.
-
Multiple operations on the same data stream — sometimes used in fault-tolerant systems or redundant computations (e.g., spacecraft systems).
-
Think of multiple processors analyzing the same sensor input in different ways.
4. MIMD – Multiple Instruction, Multiple Data
-
Each processor executes its own instructions on its own data.
-
Most modern multicore and distributed systems fall in this category.
-
Can be symmetric (shared memory) or asymmetric (distributed memory).
// Core 1:
a = b + c;
// Core 2:
x = y * z;Extended Classifications (Modern Usage)
Flynn’s taxonomy is fundamental, but modern systems often blend features. Some newer classifications include:
-
SPMD: Single Program, Multiple Data (e.g., CUDA kernels)
-
MIMD + SIMD hybrids: Seen in CPUs with SIMD vector units per core