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
1SISD — Single Instruction, Single Data: one instruction stream over one data stream. The classic sequential, single-core processor.
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.
3MISD — Multiple Instruction, Single Data: many different operations on the same data stream. Very rare; mostly fault-tolerant or specialized designs.
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.
1SISD: one core loops 8 times, doing one add per iteration — 8 sequential operations.
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.
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.