Jediný instrukční proud |
Vícenásobné toky instrukcí | |
---|---|---|
Jeden datový tok (jediná data) |
SISD (OKOD) |
MISD (MISD) |
Více datových toků |
SIMD (JMD) |
MIMD (MKMD) |
MIMD ( anglicky Multiple Instruction stream, Multiple Data stream - Multiple Command Stream, Multiple Data Stream , zkráceně MKMD ) je koncept počítačové architektury používaný k dosažení paralelních výpočtů. Jedna z tříd výpočetních systémů ve Flynnově klasifikaci .
Stroje mají více procesorů , které pracují asynchronně a nezávisle. V každém daném okamžiku mohou různé procesory provádět různé instrukce na různých kusech dat. Architektury MIMD lze použít v řadě oblastí, jako je počítačově podporovaný návrh/výroba podporovaná počítačem, simulace a komunikační přepínače . MIMD stroje mohou být buď sdílená paměť, nebo sdílená paměť. Tato klasifikace je založena na tom, jak procesory MIMD přistupují k paměti. Tato třída předpokládá, že ve výpočetním systému existuje několik zařízení pro zpracování příkazů, sjednocených do jednoho komplexu a každé pracující s vlastním příkazem a datovým tokem.
Zpracování je rozděleno do několika vláken, z nichž každé má svůj vlastní stav hardwaru procesoru, v rámci jednoho softwarově definovaného procesu nebo napříč více procesy. Protože systém má více vláken čekajících na spuštění (systémová nebo uživatelská vlákna), tato architektura efektivně využívá hardwarové prostředky.
V MIMD mohou nastat problémy se zablokováním a spory o zdroje, protože vlákna pokoušející se o přístup ke zdrojům mohou nepředvídatelným způsobem kolidovat. MIMD vyžaduje speciální kódování v operačním systému počítače , ale nevyžaduje změny v aplikačních programech, pokud samotné programy nepoužívají více vláken (MIMD je transparentní pro programy s jedním vláknem ve většině operačních systémů, pokud samotné programy neodmítají kontrolu z OS). Systémový i uživatelský software mohou potřebovat použít programovací konstrukce, jako jsou semafory , aby se zabránilo rušení jednoho vlákna s jiným, pokud obsahují odkaz na stejná data. Tím se zvyšuje složitost kódu, snižuje výkon a výrazně se zvyšuje množství potřebného testování, i když obvykle nestačí k tomu, aby se vyvrátily výhody multiprocesingu.
Takové konflikty mohou vznikat na hardwarové úrovni mezi procesory a musí být obvykle vyřešeny hardwarem nebo kombinací softwaru a hardwaru.
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |