Мультипроцесор (от англ. multiprocessor, multiprocessing[1]) — це підклас багатопроцесорних комп'ютерних систем, де є декілька процесорів і один адресний простір, видимий для всіх процесорів. В таксономії Флінна мультипроцесори відносяться до класу SM-MIMD-машин. Мультипроцесор запускає одну копію ОС з одним набором таблиць, в том числі ті, які слідкують які сторінки пам'яті вільні.

КласифікаціяРедагувати

По ролям, які грають процесори в мультипроцесорній системі, відрізняють: симетричні мультипроцесори (SMP) - всі процесори грають однакову роль і мають однаковий доступ до пам'яті і периферії, і асиметричні мультипроцесори (AMP) - процесори грають різні ролі або по-різному відносяться до периферичних пристроїв . Технологія AMP була лише перехідною в 60-х роках до того моменту, коли була оброблена технологія SMP.

По способу адресації пам'яті розрізняютьдекілька типів мультипроцесорів, серед яких: UMA (Uniform Memory Access), NUMA (Non Uniform Memory Access) і COMA (Cache Only Memory Access).

Поміж того мультипроцесори можуть бути гомогенного типу, коли всі процесори в системі однакові, або гетерогенного типу - коли процесори в системі різного типу.

ПрограмуванняРедагувати

В програмуванні мультипроцесорів можна використовувати дві модели програмуваннябагатопотоковість, де на кожному процесорі запускається потік виконання, і вини обмінюються один з одним даними через спільні зміні в спільній пам'яті, або (більш складний) message passing, коли на кожному процесорі запускається один процес, і вони обмінюються даними один з одним шляхом обміну повідомленнями. Багатопотокове програмування використовується або явно (в компеляційних мовах програмування за допомогою системних API (наприклад в C/C++ за допомогою POSIX Threads, а також за допомогою boost::thread або std::thread в C++, починаючи з стандарта C++11), в інтерпретуємих мовах (Java и C#) за допомогою конструкцій мов), або неявно (декларативно за допомогою декларативів компілятора (OpenMP) або автоматично самим компілятором (High Performance Fortran)).

ІсторіяРедагувати

Мультипроцесорні машини (SMP/UMA) стали пропонуватися на ринку спочатку кінця 1980-х — на початку 1990-х років, спочатку як мінісуперкомп'ютер (наприклад, продукція компаній Alliant (англ.), Convex, Sequent, Encore (англ.) і Synapse), потім як сервера обробки даних, і швидко набрали популярність на ринку серверного оборудования. Першими мультипроцесорами з архітектурою x86 на базі процесорів Intel 80386 і Intel 486 стали сервера Compaq SystemPro, з'явившись на ринок в кінці 1989 — на початку 1990 року. Ріст пропозицій на ринку мультипроцесорних x86-серверів привела компанію Intel до створення стандарту MultiProcessor Specification, який став на довгі роки стандартом де-факто для SMP-машин з архітектурою x86.

Приклади SMP/UMA систем в 1998 році
Система Процесор Максимум процесорів
SGI Power Challenge MIPS R10000 36
DEC AlphaServer 8400 Alpha 21164 14
Sun E6000 UltraSPARC II 30
Sun E10000 UltraSPARC II 64
HP/Convex Exemplar PA-8000 16
Cray T90 Cray Vector 32

Першими мультипроцесорами ccNUMA-типу були комп'ютер KSR1 компанії Kendall Square Research і Denelcor HEP компанії Denelcor в середині 1980-х років.

Приклади ccNUMA систем в 1998 році
Система Процесор Процесорів на вузол Максимум процесорів
Data General AV-20000 Pentium 4 32
Sequent NUMA-Q 2000 Pentium 4 32
SGI Origin 2000 MIPS R10000 2 128
HP Exemplar X-Class PA-8000 16 256
HP 9000 V-Class

Були створені також мультипроцесори і без когерентності кеша (nccNUMA):

Приклади nccNUMA систем в 1998 році
Система Процесор Процесорів на вузол Максимум процесорів
Cray T3E Alpha 21164 2 2048
BBN TC-2000 Motorola MC88100 1 256
BBN TC-2000 Motorola 604 2 512

Розвиток мінітюаризації в обчислювальній електроніці дозволило розміщувати декілька процесорів в одному корпусі або на одному кристалі (англ. chip-level multiprocessing, CMP), створюючи мульти-ядерні процесори. Це дозволяло підвищувати продуктивність процесорів шляхом простого збільшення кількості простих по дизайну обчислювальних ядер, замість традиційних спроб підвищення тактової частоти або ускладнення обчислювального конвеєра одноядерного процесора. При цьому багатоядерні процесори більш ефективно використовують пам'ять, працюють з багато-додатками, витрачають мало електроенергії і не розсіюють багато потужності, що идельно підходить для масштабування дата-центрів.

Починаючи приблизно з 2005 року всі процесори для споживчого ринку обчислювальної техніки випускаються в багатоядерному варіанті, тобто є по суті мініатюрними Мультіпроцесори (точніше SMP-машинами з UMA-доступом до пам'яті, з деякими застереженнями). Подальший розвиток цього напрямку призвело до появи багатоядерних мультипроцессоров - систем, де присутні кілька процесорів, а ці процесори в свою чергу містять по кілька ядер. Найбільш поширений варіант серверів в дата-центрах на 2016 рік - сервер з двома 8-ядерними процесорами класу Intel Xeon, Oracle SPARC або IBM POWER, які при цьому ще й апаратно підтримують одночасне виконання декількох потоків.

См. такожРедагувати

ЛітератураРедагувати

  • Charles Severance, Kevin Dowd. High Performance Computing (RISC Architectures, Optimization & Benchmarks), 2nd Edition. — O'Reilly Media, 1998. — 466 p. — ISBN 156592312X. (англ.)
  • Современные операционные системы (пер. с англ.), Эндрю С. Таненбаум. Глава 8.1 Мультипроцессоры (англ.)

ПриміткиРедагувати

  1.  "1930–35; multi- + process + -ing 1" — Dictionary.com Unabridged: "multiprocessor"