AlgoPlusAlgoPlus
Learn/Computer Architecture
Lesson

Flynn's Taxonomy

Classifying machines by how many instruction and data streams run at once: SISD, SIMD, MISD, and MIMD.

7 min read Watch it move Build it

Flynn's taxonomy is the standard way to classify computer architectures by how much they do in parallel. It asks just two questions: how many instruction streams (separate sequences of commands) run at once, and how many data streams (separate pieces of data) are processed at once. Two yes/no axes give four categories.

The four classes

  1. 1SISD — Single Instruction, Single Data: one instruction stream over one data stream. The classic sequential, single-core processor.
  2. 2SIMD — Single Instruction, Multiple Data: one instruction applied to many data items simultaneously. This is how GPUs and CPU vector units (SSE, AVX, NEON) work.
  3. 3MISD — Multiple Instruction, Single Data: many different operations on the same data stream. Very rare; mostly fault-tolerant or specialized designs.
  4. 4MIMD — Multiple Instruction, Multiple Data: independent processors each running their own instructions on their own data. Modern multicore CPUs and clusters.
Two axes, four boxes
Read the names literally. The first word is the *instruction* count (Single or Multiple), the second is the *data* count. SIMD shares one instruction across lots of data; MIMD lets every core run a different instruction. SISD is the plain uniprocessor; MISD is the oddball almost nobody builds.

Worked example — adding two arrays

Suppose you add two arrays of 8 numbers element by element.

  1. 1SISD: one core loops 8 times, doing one add per iteration — 8 sequential operations.
  2. 2SIMD: a single vector add instruction operates on all 8 lanes at once — one operation, eight results. This is exactly why GPUs crush data-parallel work like graphics and matrix math.
  3. 3MIMD: 8 cores could each add a pair independently, each running its own instruction stream — useful when the tasks differ, not just the data.
SIMD is not the same as multicore
SIMD gets its parallelism from width — one instruction, many lanes — and is cheap because there is only one control unit. MIMD gets its parallelism from independent cores, each with its own control unit, so they can run *different* programs. GPUs lean heavily on SIMD; a multicore server is MIMD. Real machines combine both.
OperationTimeSpace
SISD · sequential uniprocessor1 instr / 1 data1 core
SIMD · GPUs, vector units1 instr / many datamany lanes, 1 control
MISD · fault-tolerant nichemany instr / 1 datarare
MIMD · multicore, clustersmany instr / many datamany cores
Check yourself
A single vector instruction adds all 8 elements of two arrays at once. Which Flynn class is this, and what real hardware uses it?