Мультипроцесор
Мультипроцесор (от англ. 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.
Система | Процесор | Максимум процесорів |
---|---|---|
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-х років.
Система | Процесор | Процесорів на вузол | Максимум процесорів |
---|---|---|---|
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):
Система | Процесор | Процесорів на вузол | Максимум процесорів |
---|---|---|---|
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 Мультипроцессоры (англ.)