Bosh sahifa Wiki Multiple Instruction Multiple Data

Multiple Instruction Multiple Data

Multiple Instruction Multiple Data — bir nechta hisoblash birligi mustaqil buyruq oqimlarini turli ma’lumotlar ustida bir vaqtda bajaradigan parallel arxitektura modeli. MIMD ko‘p yadroli protsessor, ko‘p socketli server va taqsimlangan klasterlarning umumiy tashkilotini tavsiflaydi. Har worker o‘z Program Counter’i va nazorat oqimiga ega.

Shared va distributed memory

Shared-memory MIMD’da yadrolar umumiy manzil makonini ko‘radi. Har yadroda xususiy kesh bo‘lishi mumkin, Cache Coherence bir manzil nusxalarini muvofiqlashtiradi. Threadlar mutex, atomic va memory ordering orqali ma’lumot almashadi.

Distributed-memory tizimda har tugun o‘z lokal xotirasiga ega, ma’lumot tarmoq xabarlari bilan uzatiladi. MPI kabi model qaysi buffer qaysi tugunga yuborilishini aniq ifodalaydi. Klasterda coherence butun global xotirani avtomatik birlashtirmaydi.

NUMA server bu ikki ko‘rinish orasida: bitta virtual manzil makoni mavjud, ammo lokal va masofaviy xotira latency hamda bandwidth’i farq qiladi. Threadni ma’lumotiga yaqin yadroga joylash muhim.

Vazifani taqsimlash

Task parallelism turli ishlarni turli workerga beradi. Data parallelism bitta algoritmning bo‘laklarini mustaqil instruction streamlarda bajaradi. Dinamik scheduler navbatdan vazifa oladi, work stealing bo‘sh yadroga boshqa navbatdan ish ko‘chirish imkonini beradi.

Ish hajmi teng bo‘lmasa ba’zi yadro erta tugab, boshqalari critical path’da qoladi. Mayda task load balance’ni yaxshilaydi, lekin scheduling va synchronization overhead’ini oshiradi. Granularity hisoblash xarajati va worker soniga mos tanlanadi.

Sinxronizatsiya

Mustaqil buyruq oqimlari bir obyektga raqobatli murojaat qilsa data race yuz beradi. Lock mutual exclusion beradi, atomic lock-free protokollarni quradi, barrier barcha worker ma’lum bosqichga yetishini kutadi. Memory model yozuvlar qachon boshqa yadroga ko‘rinishini belgilaydi.

False sharing’da turli o‘zgaruvchi bir cache line’da joylashib, mustaqil yozuvlar coherence trafikini keltiradi. Padding yoki data partitioning satr egaligini ajratadi. Bu mantiqiy lock contention bo‘lmasa ham performance muammosi bo‘lishi mumkin.

SIMD bilan munosabat

MIMD’da har yadro boshqa branch va buyruqni bajarishi mumkin. SIMD’da bir buyruq ko‘p lane’ni boshqaradi. Zamonaviy CPU MIMD yadrolarining har birida SIMD vector unit saqlab, thread-level va data-level parallelizmni birlashtiradi.

MIMD avtomatik tezlik bermaydi. Ketma-ket qism Amdahl qonuni bo‘yicha umumiy speedup’ni cheklaydi; tarmoq, xotira va synchronization xarajati worker ko‘payganda ortadi. Correctness uchun deadlock, livelock va nondeterministic xatolar alohida sinov qilinadi.

Izchillik va debugging

MIMD bajarilish tartibi scheduler, tarmoq va cache vaqtiga bog‘liq bo‘lgani sabab bir xato har ishga tushishda takrorlanmasligi mumkin. Deterministic replay threadlararo hodisalar va kirishlarni qayd etib, nosoz interleaving’ni qayta qurishga yordam beradi. Oddiy logning o‘zi boshqa timing yaratib, race’ni yashirishi ehtimol.

Parallel algoritm natijasi matematik jihatdan bir xil bo‘lsa ham floating-point reduction tartibi worker soniga qarab o‘zgaradi. Reproducible mode qat’iy daraxt yoki yuqori aniqlikli accumulator ishlatadi. Bu throughput va xotira xarajati evaziga ilmiy tekshiruv uchun barqaror natija beradi.

MIMD tizimni masshtablashda hisoblash bilan birga aloqa hajmi ham o‘sadi. Vazifa juda mayda bo‘lsa scheduling, lock va message xarajati foydali ishni bosib ketadi. Grain size tanlovi yadro soni, cache locality va tarmoq kechikishiga moslashtiriladi.

Bog‘liq tushunchalar

MIMD, multicore processor, shared memory, distributed memory, NUMA, task parallelism