Flynn's Taxonomy (computer archs)
1. Overview
- Flynn’s Taxonomy:
- A classification system for computer architectures developed by Michael J. Flynn in 1966.
- Categorizes computer systems based on the number of concurrent instruction and data streams they can handle.
- Four Categories of Flynn's Taxonomy:
- Single Instruction, Single Data (SISD):
- A single processor executing a single instruction stream to operate on data stored in a single memory.
- Traditional von Neumann architecture falls under this category.
- Single Instruction, Multiple Data (SIMD):
- A single instruction stream controls multiple processing elements (PEs), each executing the same instruction on different pieces of data.
- Used in applications like image processing and matrix operations.
- Multiple Instruction, Single Data (MISD):
- Multiple instruction streams operate on a single data stream.
- Rarely used in practice but can be seen in certain fault-tolerant systems that employ redundancy.
- Multiple Instruction, Multiple Data (MIMD):
- Multiple processors with independent instruction and data streams.
- Common in many modern multi-core and distributed systems.
- Connections and Applications:
- SISD is typical in general-purpose computing.
- SIMD is widely used in graphics processing units (GPUs) and vector processors for parallel processing tasks.
- MISD finds niche applications in specialized fields like space systems where redundancy and fault tolerance are prioritized.
- MIMD is favored in complex computing tasks that require high parallelism, like scientific computations and simulations.
1.1. SPMD and MPMD
- Single Program, Multiple Data (SPMD):
- A parallel computing model where multiple autonomous processors simultaneously execute the same program on different pieces of distributed data.
- Often considered a subtype or an extension of the MIMD model.
- Common in distributed computing environments like clusters and supercomputers, using frameworks such as MPI (Message Passing Interface).
- Multiple Program, Multiple Data (MPMD):
- A parallel computing model where different processors execute different programs on different sets of data.
- Suitable for heterogeneous computing environments where different tasks need to be carried out on various datasets.
- Used in complex workflows where diverse processing is necessary; for example, different nodes might perform distinct roles in a larger distributed application.
- Connections and Evolution:
- Both SPMD and MPMD can be implemented on MIMD architectures, which provides the flexibility to run diverse and complex workloads.
- SPMD simplifies programming by using a single program logic across multiple datasets but still requires careful data synchronization.
- MPMD offers greater flexibility at the potential cost of increased complexity in managing different program executions and coordinating data exchanges.
Tags::arch:compute: