Многопроцессорность (мультипроцесорні. Многопроцессорная обробка. Англ. Multiprocessing) - використання пари або більшої кількості фізичних процесорів в одній комп'ютерній системі. Термін також відноситься до здатності системи підтримати більше ніж один процесор і / або здатність розподілити завдання між ними. Існує багато варіантів даного поняття, і визначення многопроцессорности може змінюватися в залежності від контексту, головним чином в залежності від того, як визначені процесори (багато ядер в одному кристалі. Безліч чіпів в одному корпусі, безліч корпусів в одному системному модулі, і т. Д .).
Багатопроцесорних іноді називають виконання множинних паралельних програмних процесів в системі на противагу виконання одного процесу в будь-який момент часу. Однак терміни багатозадачність або мультипрограмування є більш придатними для опису цього поняття, яке здійснено головним чином в програмному забезпеченні. тоді як многопроцессорная обробка є більш відповідною, щоб описати використання множинних апаратних процесорів. Система не може бути і многопроцессорной і мультіпрограммірованной, тільки однієї з двох, або ні тієї і ні інший.
процесорна симетричність
У багатопроцесорної системі всі центральні процесори можуть бути рівними, або деякі можуть бути зарезервовані для особливих цілей. Комбінація конструктивних міркувань програмного забезпечення апаратної та операційної системи визначає симетрію (або відсутність її) в даній системі. Наприклад, апаратні або програмні міркування можуть зажадати, щоб тільки один центральний процесор відповідав на всі апаратні переривання, тоді як вся інша робота в системі може бути розподілена однаково серед процесорів; або виконання коду привілейованого режиму може бути обмежена тільки одним процесором (або певним процесором, або тільки один процесор за один раз), тоді як код непривилегированного режиму може бути виконаний на будь-якій комбінації процесорів. Часто багатопроцесорні системи простіше проектувати, якщо введені такі обмеження, але вони мають тенденцію бути менш ефективними ніж системи, в яких використовуються всі центральні процесори.
Системи, які обробляють всі центральні процесори однаково, називають системами із симетричною багатопроцесорної обробкою (SMP). В системах, де всі центральні процесори не рівні, системні ресурси можуть бути розділені багатьма способами, в тому числі асиметричною багатопроцесорної обробкою (ASMP), многопроцессорной обробкою з неоднорідним доступом до пам'яті (NUMA) і кластерізованний многопроцессорной обробкою (qq.v.).
Потоки команд і даних
У багатопроцесорної обробці процесори можуть використовуватися для виконання однієї послідовності команд у численних контекстах (єдина машинна команда, множинні дані або SIMD. Часто використовуваний в векторної обробки), множинні послідовності команд в єдиному контексті ( «множинний потік команд, одиночний потік даних» або Архітектура MISD , яка використовується для надмірності в відмовостійких системах і іноді застосовується, щоб описати конвеєрні процесори або гіперпоточность), або множинні е послідовності команд у численних контекстах ( «множинний потік команд, множинні потік даних» або MIMD).
з'єднання процесорів
Багатопроцесорні (багатоядерні) чіпи, включає більше одного процесора, поміщеного в однокристальну схему, і можуть вважатися граничною формою багатопроцесорної обробки з сильним зв'язком. Мейнфреймовие системи з безліччю процесорів - часто є системами з сильним зв'язком.
Багатопроцесорні системи з гнучкою зв'язком (англ. Loosely-coupled multiprocessor systems), часто звані кластерами. засновані на множинних автономних одиночних або подвійних комп'ютерах, пов'язаних через високошвидкісну систему зв'язку (наприклад, Gigabit Ethernet). Кластер Беовульфа під управлінням Linux - приклад гнучко пов'язаної системи.
Системи з сильним зв'язком працюють краще і фізично вони менше, ніж гнучко пов'язані системи, але історично зажадали великих початкових інвестицій і можуть швидко амортізовиваться; вузли в гнучко пов'язаної системі - зазвичай недорогі комп'ютери і можуть бути використані як незалежні машини після видалення з кластера.
Системи з сильним зв'язком мають тенденцію бути набагато більше енергоефективними. ніж кластери. Значна енергоефективність досягається за рахунок того, що компоненти в таких системах заздалегідь проектуються для роботи в конкретній системі, в той час як гнучко пов'язані системи часто використовують компоненти спроектовані для роботи в більш широкому класі систем.
програмні реалізації
Многопроцессорная обробка з SISD
У комп'ютері з одиночним потоком команд і одиночним потоком даних один процесор послідовно обробляє команди; кожна машинна команда обробляє один елемент даних. Приклад - фон-неймановская архітектура.
Многопроцессорная обробка SIMD
У комп'ютері з одиночним потоком команд і множинним потоком даних один процесор обробляє потік команд, кожна з яких може виконати паралельні обчислення на безлічі даних.
Многопроцессорная обробка SIMD добре підходить для паралельної або векторної обробки, в якій великий набір даних може бути розділений на частини, які обробляються ідентичними, але незалежним операціями. Одиночний потік команд направляє [куди? ] Операцію модулів мультипрограммирования для виконання однотипних маніпуляцій одночасно на потенційно великій кількості даних.
Для певних типів обчислювальних додатків цей тип архітектури може дати значне збільшення продуктивності з точки зору витраченого часу. Однак, недолік цієї архітектури полягає в тому, що велика частина системи починає простоювати при виконанні програм або системних задач, які не можуть бути розділені на модулі (підзадачі), які можуть бути оброблені паралельно.
Многопроцессорная обробка SIMD знаходить широке застосування в деяких областях, таких як комп'ютерне моделювання. але малокорисна в універсальному настільному комп'ютері та бізнес-завдання.
Многопроцессорная обробка MISD
Многопроцессорная обробка з множинним потоком команд і одиночним потоком даних пропонує головним чином перевага надмірності, так як модулі мультипрограммирования виконують одні завдання на одних даних, зменшуючи можливості неправильних результатів, якщо один з модулів виходить з ладу. Архітектура MISD дозволяє порівнювати результати обчислень з метою виявлення відмов. Крім надмірності і відмовостійкості у цього типу багатопроцесорної обробки трохи переваг. До того ж він весма доріг. Він не збільшує продуктивність.
Многопроцессорная обробка MIMD
Архітектура багатопроцесорної обробки MIMD є підходящою для великої кількості різноманітних завдань, в яких реалізовано повністю незалежне і паралельне виконання команд, що стосуються різних наборів даних. З цієї причини і тому що це просто здійснити, MIMD переважає в багатопроцесорної обробці.
Обробка розділена на кілька потоків, кожен з власним апаратним станом процесора, в рамках єдиного певного програмним забезпеченням процесу або в межах множинних процесів. Оскільки система має кілька потоків, які очікують виконання (системні або призначені для користувача потоки), ця архітектура ефективно використовує апаратні ресурси.
У MIMD можуть виникнути проблеми взаємного блокування та змагання за володіння ресурсами, так як потоки, намагаючись отримати доступ до ресурсів, можуть зіткнутися непередбачуваним способом. MIMD вимагає спеціального кодування в операційній системі комп'ютера, але не вимагає змін в прикладних програмах, крім випадків коли програми самі використовують множинні потоки (MIMD прозорий для однопоточних програм під керуванням більшості операційних систем, якщо програми самі не відмовляються від управління з боку ОС). І системне і користувальницьке програмне забезпечення, можливо, повинні використовувати програмні конструкції, такі як семафори. щоб перешкоджати тому, щоб один потік втрутився в інший, в разі якщо вони містять посилання на одні й ті ж дані. Така дія збільшує складність коду, знижує продуктивність і значно збільшують кількість необхідного тестування, хоча зазвичай не настільки щоб звести нанівець переваги багатопроцесорної обробки.
Подібні конфлікти можуть виникнути на апаратному рівні між процесорами, і повинен зазвичай вирішуватися апаратними засобами, або з комбінацією програмного забезпечення і устаткування.