Flynn’s taxonomy:
- SISD
- SIMD
- Vectorial
- Matrix
- MISD
- MIMD
SISD
Single instruction stream, Single data stream (SISD). It corresponds to the Von Neumann architecture.
SIMD
Single instruction stream, Multiple data stream (SIMD).
Segmentation or pipelining consists on adding a task or instruction to different units that perform different steps, so single instructions can be parallelized.
n vector
A subtype of SIMD is vectorial. It assumes that data can have dimensions.
A matrix computer contains as many ALUs as there is data.
MISD
Multiple instruction stream, Single Data stream (MISD) is also known as systolic.
MISD is only theoretical.
MIMD
Multiple instruction stream, multiple data stream (MIMD)
MIMD Memory architecture
MIMD memory access categories:
- Uniformed memory access (UMA)
- Not uniformed memory access (NUMA)
Uniformed memory access (UMA) means that all processors access memory with equal latency.
It introduces the idea of hierarchy memory, where ALUs have individual cache memory but there is still a common shared memory.
In UMA, all units use memory in the same way, with the same frequency.
Not uniformed memory access (NUMA) means that memory access time varies depending on the location of the memory with respect to the process.
MIMD memory architectures:
- SMP
- DSM
Symmetric multiprocessing memory (SMM) and
Ways in which SMP manages memory:
- Uniformed memory access (UMA)
- Not uniformed memory access (NUMA)
Distributed Shared Memory (DSM) is a type of memory that is physically distributed across multiple nodes, but logically shared.
In conclusion, MIMD-SMM can be only UMA while MIMD-DSM can be UMA or NUMA .
MIMD Processing Models
A symmetric multiprocessing (SMP) or Shared Memory Processor is high in coupling. It is used in modern multi-core processors.
Symmetric multiprocessing at Wikipedia
A Massively Parallel Processor (MPP) system consists of multiple independent processors (or nodes), each with its own local memory and interconnect network. They are low in coupling.
MPP adds complexity when allocating cache, local memo.
MPP may use DSM, but it usually uses message passing (MPI, PVM, etc.) instead of memory sharing.