MIMD

Flynn klassifikation
  Enkelt instruktionsstrøm
Flere instruktionsstrømme
Enkelt datastrøm
(enkelt data)
SISD
(OKOD)
MISD
(MISD)
Flere datastrømme
SIMD
(JMD)
MIMD
(MKMD)

MIMD ( Eng.  Multiple Instruction stream, Multiple Data stream  - Multiple Command Stream, Multiple Data Stream , forkortet MKMD ) er et computerarkitekturkoncept , der bruges til at opnå parallel computing. En af klasserne af computersystemer i Flynns klassifikation .

Maskiner har flere processorer , der fungerer asynkront og uafhængigt. På ethvert givet tidspunkt kan forskellige processorer udføre forskellige instruktioner på forskellige stykker data. MIMD-arkitekturer kan bruges inden for en række områder, såsom computerstøttet design/computerstøttet fremstilling , simulering og kommunikationskontakter .  MIMD-maskiner kan enten være delt hukommelse eller delt hukommelse. Denne klassifikation er baseret på, hvordan MIMD-processorer får adgang til hukommelsen. Denne klasse antager, at der er flere kommandobehandlingsenheder i computersystemet, forenet i et enkelt kompleks og hver arbejder med sin egen kommando- og datastrøm.

Behandling er opdelt i flere tråde, hver med sin egen processorhardwaretilstand, inden for en enkelt softwaredefineret proces eller på tværs af flere processer. Fordi systemet har flere tråde, der venter på at blive eksekveret (system- eller brugertråde), gør denne arkitektur effektiv brug af hardwareressourcer.

I MIMD kan der opstå dødvande og ressourcekonflikter, fordi tråde, der forsøger at få adgang til ressourcer, kan kollidere på uforudsigelige måder. MIMD kræver speciel kodning i computerens operativsystem , men kræver ikke ændringer i applikationsprogrammer, medmindre programmerne selv bruger flere tråde (MIMD er gennemsigtigt for enkelt-trådede programmer under de fleste operativsystemer, så længe programmerne i sig selv ikke nægter kontrol fra OS). Både system- og brugersoftware skal muligvis bruge programmeringskonstruktioner såsom semaforer for at forhindre en tråd i at forstyrre en anden, hvis de har en reference til de samme data. At gøre det øger kodekompleksiteten, reducerer ydeevnen og øger i høj grad mængden af ​​test, der kræves, selvom det normalt ikke er nok til at ophæve fordelene ved multiprocessing.

Sådanne konflikter kan opstå på hardwareniveau mellem processorer og skal normalt løses med hardware eller en kombination af software og hardware.