МультипроцесорМультипроцесор (от англ. 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.
Першими мультипроцесорами ccNUMA-типу були комп'ютер KSR1 компанії Kendall Square Research і Denelcor HEP компанії Denelcor в середині 1980-х років.
Були створені також мультипроцесори і без когерентності кешу (nccNUMA):
Розвиток мінітюаризації в обчислювальній електроніці дозволило розміщувати декілька процесорів в одному корпусі або на одному кристалі (англ. chip-level multiprocessing, CMP), створюючи мульти-ядерні процесори. Це дозволяло підвищувати продуктивність процесорів шляхом простого збільшення кількості простих по дизайну обчислювальних ядер, замість традиційних спроб підвищення тактової частоти або ускладнення обчислювального конвеєра одноядерного процесора. При цьому багатоядерні процесори більш ефективно використовують пам'ять, працюють з багато-додатками, витрачають мало електроенергії і не розсіюють багато потужності, що идельно підходить для масштабування дата-центрів. Починаючи приблизно з 2005 року всі процесори для споживчого ринку обчислювальної техніки випускаються в багатоядерному варіанті, тобто є по суті мініатюрними Мультіпроцесори (точніше SMP-машинами з UMA-доступом до пам'яті, з деякими застереженнями). Подальший розвиток цього напрямку призвело до появи багатоядерних мультипроцессоров - систем, де присутні кілька процесорів, а ці процесори в свою чергу містять по кілька ядер. Найбільш поширений варіант серверів в дата-центрах на 2016 рік - сервер з двома 8-ядерними процесорами класу Intel Xeon, Oracle SPARC або IBM POWER, які при цьому ще й апаратно підтримують одночасне виконання декількох потоків. См. такожЛітература
Примітки
|
Portal di Ensiklopedia Dunia