Відкрити головне меню

Класифікація паралельних обчислювальних систем

SISD (Single Instruction Single Data)Редагувати

Single Instruction Single Data — це звичайні послідовні комп'ютери. Програма приймає один потік даних і виконує один потік інструкцій з обробки цих даних . Іншими словами, інструкції виконуються послідовно, і кожна інструкція оперує мінімальною кількістю даних (наприклад, додавання двох чисел).

MISD (Multiple Instruction Single Data)Редагувати

Multiple Instruction Single Data різні потоки інструкцій виконуються з одними і тими ж даними. Зазвичай такі системи не призводять до прискорення обчислень, так як різні інструкції оперують одними і тими ж даними, в результаті на виході системи виходить один потік даних. До таких систем відносять різні системи дублювання і захисту від збоїв, коли, наприклад, кілька процесорів дублюють обчислення один одного для надійності. Іноді до цієї категорії відносять конвеєрні архітектури. Серед процесорів виробництва Intel, конвеєр присутній починаючи з процесора Pentium.

SIMD (Single Instruction Multiple Data)Редагувати

Single Instruction Multiple Data один потік інструкцій виконує обчислення одночасно з різними даними. Наприклад, виконується додавання одночасно восьми пар чисел. Такі комп'ютери називаються векторними, тому що подібні операції виконуються аналогічно операціям з векторами (коли, наприклад, додавання двох векторів означає одночасне складання всіх їх компонентів). Найчастіше векторні інструкції присутні на додаток до звичайних «скалярним» інструкціям, і називаються SIMD-розширенням (або векторним розширенням). Приклади популярних SIMD-розширень: MMX, 3DNow !, SSE та ін.

MIMD (Multiple Instruction Multiple Data)Редагувати

Multiple Instruction Multiple Data різні потоки інструкцій оперують різними даними. Це системи найбільш загального вигляду, тому їх простіше всього використовувати для вирішення різних паралельних завдань.
MIMD -системи, в свою чергу, прийнято розділяти (класифікація Джонсона) на системи із загальною пам'яттю (кілька обчислювачів мають спільну пам'ять) і системи з розподіленою пам'яттю (кожен обчислювач має свою пам'ять ; обчислювачі можуть обмінюватися даними) . Крім того, існують системи з неоднорідним доступом до пам'яті (NUMA) — в яких доступ до пам'яті інших обчислювачів існує, але він значно повільніше, ніж доступ до "своєї " пам'яті.

Системи із загальною пам'яттюРедагувати

Системами із загальною пам'яттю називають системи, в яких кілька процесорів мають спільну оперативну пам'ять. Найчастіше зустрічаються системи цього типу — комп'ютери з багатоядерними процесорами (multi — core) .

ПеревагиРедагувати
  • Не потрібно обмін даними: дані, поміщені в пам'ять одним процесором, автоматично стають доступними іншим процесорам. Відповідно, система не повинна витрачати час на пересилку даних
  • Для таких систем просто писати програми: можна, наприклад, створити кілька обчислювальних потоків. Крім того, можливе повністю автоматичне розпаралелювання програми компілятором
  • Компактність систем: може бути реалізована у вигляді декількох процесорів на одній материнській платі, або у вигляді декількох ядер всередині процесора
НедолікиРедагувати
  • Проблема спільного доступу до пам'яті: потрібно обережно працювати з тими ділянками пам'яті, для яких можливе одночасне виконання запису одним процесором та іншої операції (запису або читання) іншим процесором.
  • Проблема синхронності кешу: для прискорення доступу до пам'яті процесори забезпечуються кешами. Якщо один процесор змінив дані в оперативній пам'яті, і ці дані прокешіровани іншими процесорами, то їх кеші повинні автоматично оновитися. Дана проблема відсутня в багатоядерних процесорах, що використовують загальний кеш.
  • Проблема повільного звернення до оперативної пам'яті і її обмеженого обсягу: процесор працює швидко, а пам'ять — повільно, тому навіть одному процесору доводиться чекати завантаження даних з оперативної пам'яті. Якщо ж процесорів декілька, то їм доводиться чекати ще довше. Швидкість роботи кожного процесора з пам'яттю стає тим менше, чим більше число процесорів є в системі. Крім того, обсяг пам'яті не може бути зроблений як завгодно великим, так як для цього доведеться збільшувати розрядність шини пам'яті.
  • Проблема масштабованості: дуже складно зробити подібну систему з великим числом процесорів, так як дуже сильно зростає вартість і падає ефективність роботи через описаних вище проблем. Практично всі подібні системи мають ≤ 8 процесорів.

Системи з розподіленою пам'яттюРедагувати


Система містить кілька процесорів, кожен має свою оперативну пам'ять. Для забезпечення обміну інформацією процесори з'єднані каналами зв'язку. За характером зв'язків такі системи діляться на системи з універсальною комутацією (кожен процесор може передати інформацію будь-якого іншого процесору) і системи з жорсткою (фіксованою) комутацією (кожен процесор може передати інформацію тільки обмеженому числу інших процесорів).


Системи з розподіленою пам'яттю, в яких кожен обчислювальний вузол являє собою повноцінний комп'ютер зі своєю копією операційної системи, називають кластерними (або «кластерами»). Кластери звичайно являють собою шафи з компактними системними блоками, які з'єднані один з одним каналами зв'язку (за допомогою спеціальних комутаторів), які передають дані зі швидкістю 10 Гбіт / сек

ПеревагиРедагувати
  • Простота побудови: можна взяти велику кількість звичайних комп'ютерів, з'єднати їх каналами зв'язку (наприклад, Ethernet), і отримати кластер
  • Ефективне вирішення завдань, що вимагають малого обміну даними: кожен комп'ютер буде працювати в повну потужність, не чекаючи, поки звільниться доступ до оперативної пам'яті
  • Можливість вирішувати завдання, що вимагають дуже великих обсягів оперативної пам'яті: сумарний обсяг пам'яті системи можна зробити як завгодно великим. Потрібно лише, щоб задача розбивалася на відносно незалежні підзадачі.
  • Можливість масштабування: можна з'єднати скільки завгодно обчислювальних вузлів разом, при цьому вартість системи буде пропорційна числу вузлів. У зв'язку з цим більшість найпотужніших обчислювальних систем в світі є кластерними
НедолікиРедагувати
  • Проблема обміну даними: обмін даними в таких системах зазвичай йде дуже повільно в порівнянні зі швидкістю обчислень (і з великими затримками). Тому завдання, що вимагають інтенсивного обміну, неможливо вирішити на таких системах ефективно.
  • Складне програмування: програміст повинен продумати обмін даними, який буде присутній в системі, повинен сам запрограмувати цей обмін (наприклад, за допомогою MPI). При неправильному програмуванні велика ймовірність взаємних блокувань: коли, наприклад, два процесори чекають даних один від одного. Проблема блокувань є і в системах із загальною пам'яттю, але тут вона проявляє себе набагато частіше. Автоматична організація обміну даними можлива лише для деяких окремих випадків.
  • Великий розмір систем і велике енергоспоживання: кластерні системи займають цілі кімнати (рис. 1.1) і навіть будівлі.


Гібридні системиРедагувати

Багато сучасних системи являють собою ієрархію описаних вище систем. Наприклад, сучасні процесори є конвеєрними процесорами, і мають набір векторних інструкцій (MMX, SSE тощо), що дозволяють виконувати одночасні обчислення з різними даними. Крім того, процесор може мати два ядра, або може бути кілька процесорів в комп'ютері. Таким чином, на цьому рівні система являє собою систему із загальною пам'яттю. Потім можна з'єднати декілька таких комп'ютерів в кластер, утворивши новий рівень ієрархії: систему з розподіленою пам'яттю.