MIMD steht für Multiple Instruction, Multiple Data und ist die dominante Klasse paralleler Rechnerarchitekturen der Flynn-Taxonomie: Mehrere Prozessoren oder Kerne führen gleichzeitig verschiedene Befehle auf verschiedenen Daten aus. Jeder Kern arbeitet dabei weitgehend unabhängig — echte Parallelität statt bloßer Datenparallelität wie bei SIMD.

Gemeinsamer oder verteilter Speicher

MIMD-Systeme unterscheidet man nach ihrer Speicherorganisation:

  • Shared Memory: Alle Kerne greifen auf denselben Hauptspeicher zu (Symmetrisches Multiprozessor-System, SMP). Programmiert wird mit Threads oder OpenMP; Zugriffe auf gemeinsame Daten müssen synchronisiert werden, sonst entstehen Race Conditions.
  • Distributed Memory: Jeder Knoten hat seinen eigenen Speicher; kommuniziert wird über Nachrichten, typischerweise mit MPI. Mehrere Knoten bilden einen Cluster.

Das häufigste Programmiermodell ist SPMD (Single Program, Multiple Data): Alle Prozesse führen dasselbe Programm, aber auf verschiedenen Daten aus — so arbeiten praktisch alle HPC-Anwendungen.

Wo MIMD heute steckt

Jeder moderne Multikern-Prozessor in Laptop, Server und Smartphone ist ein MIMD-System: Die Kerne laufen asynchron und teilen sich den Speicher. Auch Supercomputer und HPC-Cluster kombinieren Shared-Memory-Knoten mit verteiltem Speicher zwischen den Knoten — die mit Abstand wichtigste Klasse für Nebenläufigkeit im großen Stil.

Abgrenzung

Während SISD den skalaren Einzelkern beschreibt und SIMD nur Daten parallelisiert (ein Befehl, viele Werte), können MIMD-Kerne gleichzeitig völlig unterschiedliche Aufgaben lösen — vom Betriebssystem-Scheduler bis zur Nebenläufigkeit großer Berechnungen.

Verwandte Grundlagen: SISD, Vektorprozessor, SIMD, Multikern-Prozessor.