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

SMP-системи дозволяють будь-якому процесору працювати над будь-яким завданням незалежно від того, де в пам'яті зберігаються дані для цього завдання; за належної підтримки операційною системою, SMP-системи можуть легко переміщувати завдання між процесорами ефективно розподіляючи навантаження. З іншого боку, пам'ять набагато повільніша процесорів, які до неї звертаються, тож навіть однопроцесорним машинам доводиться витрачати значний час на отримання даних з пам'яті. У системах SMP ситуація ще більш ускладнюється, бо лише один процесор може звертатися до пам'яті в певний момент часу.

Симетрична мультипроцесорність (англ. Symmetric Multiprocessing, SMP) — архітектура багатопроцесорних комп'ютерів, в якій два або більше однакових процесора порівнянної продуктивності підключаються одноманітно до загальної пам'яті (і периферійних пристроїв) і виконують одні і ті ж функції (чому, власне, система і називається симетричною). В англійській мові SMP-системи носять також назва tightly coupled multiprocessors, так як в цьому класі систем процесори тісно пов'язані один з одним через загальну шину і мають рівний доступ до всіх ресурсів обчислювальної системи (пам'яті і пристроїв введення-виведення) і управляються всі однією копією операційної системи.

В таксономії Флінна SMP-машини належать до класу SM-MIMD-машин. Більшість багатопроцесорних систем сьогодні використовують архітектуру SMP.

Опис

SMP-системи дозволяють будь-якому процесору працювати над будь-яким завданням незалежно від того, де в пам'яті зберігаються дані для цього завдання, — за належної підтримки операційною системою SMP-системи можуть легко переміщати завдання між процесорами, ефективно розподіляючи навантаження.

Різні SMP-системи з'єднують процесори із загальною пам'яттю по-різному. Найпростіший і дешевий підхід — це з'єднання по спільній шині (system bus)[1][2]. У цьому випадку тільки один процесор може звертатися до пам'яті в кожен даний момент, що накладає істотне обмеження на кількість процесорів, підтримуваних в таких системах. Чим більше процесорів, тим більше навантаження на загальну шину, тим довше повинен чекати кожен процесор, поки звільниться шина, щоб звернутися до пам'яті. Зниження загальної продуктивності такої системи з ростом кількості процесорів відбувається дуже швидко, тому зазвичай в таких системах кількість процесорів не перевищує 2-4. Прикладом SMP-машин з таким способом з'єднання процесорів є будь-які багатопроцесорні сервери початкового рівня.

Thumb
Діаграма пристрою системи з симетричною мультироцесорністью. Процесори звертаються до спільної пам'яті по спільній шині

Другий спосіб з'єднання процесорів — через комутоване з'єднання (crossbar switch)[1][2]. При такому з'єднанні вся загальна пам'ять ділиться на банки пам'яті, кожен банк пам'яті має свою власну шину, і процесори з'єднані з усіма шинами, маючи доступ по ним до будь-якого з банків пам'яті. Таке з'єднання більш складне, але воно дозволяє процесорам звертатися до загальної пам'яті одночасно. Це дозволяє збільшити кількість процесорів в системі до 8-16 без помітного зниження загальної продуктивності. Прикладом таких SMP-машин є багатопроцесорні робочі станції RS / 6000.

Thumb
SMP-машина з комутованим з'єднанням процесорів

Альтернативи SMP (NUMA, ASMP)

SMP — це лише один підхід до побудови багатопроцесорної машини; іншим підходом є NUMA, яка надає процесорам окремі банки пам'яті. Це дозволяє працювати з пам'яттю паралельно, та може значно підвищити її пропускну здатність, у разі коли дані прив'язані до конкретного процесу (а отже і процесору). З другого боку, NUMA підвищує вартість переміщення даних між процесорами, значить і балансування завантаження обходиться дорожче. Переваги NUMA обмежені специфічним колом завдань, в основному серверами, де дані часто тісно прив'язані до конкретних задач або користувачів.

Іншими підходами є асиметрична мультипроцесування (ASMP), в якому окремі спеціалізовані процесори використовуються для конкретних завдань, та кластерна мультипроцесорність (Beowulf), в якому не вся пам'ять доступна всім процесорам. Такі підходи не часто застосовуються (хоча високопродуктивні 3D чипсети в сучасних відеокартах можуть розглядатися як форма асиметричної мультипроцесорності), у той час як кластерні системи широко застосовуються при побудові дуже великих суперкомп'ютерів.

SMP — лише один варіант побудови багатопроцесорної машини. Інша концепція NUMA, яка надає процесорам окремі банки пам'яті. Це дозволяє процесорам працювати з пам'яттю паралельно, і це може значно підвищити пропускну здатність пам'яті в разі коли дані прив'язані до конкретного процесу (а, отже, і процесору). З іншого боку, NUMA підвищує вартість переміщення даних між процесорами, значить, і балансування завантаження обходиться дорожче. Переваги NUMA обмежені специфічним колом завдань, в основному серверами, де дані часто жорстко прив'язані до конкретних завдань або користувачів.

Інша концепція асиметричне мультипроцесорування (ASMP), в якому окремі спеціалізовані процесори використовуються для конкретних завдань, і кластерна мультипроцесорність (Beowulf), в якій не вся пам'ять доступна всім процесорам. Такі підходи нечасто використовуються (хоча високопродуктивні 3D-чипсети в сучасних відеокартах можуть розглядатися як форма асиметричної мультипроцесорності), в той час як кластерні системи широко застосовуються при побудові дуже великих суперкомп'ютерів.

Переваги та недоліки

Системи SMP часто застосовується в науці, промисловості, бізнесі, де програмне забезпечення спеціально розробляється для багатопотокового виконання. У той же час, більшість користувацьких продуктів, таких як текстові редактори та комп'ютерні ігри написані так, що вони не можуть отримати високий приріст продуктивності від SMP-систем. У випадку ігор це найчастіше пов'язане з тим, що оптимізація програми під SMP-системи призведе до втрати продуктивності при роботі на однопроцесорних системах, які займають велику частину ринку. У силу природи різних методів програмування, для максимальної продуктивності будуть потрібні окремі проекти для підтримки одного процесора та SMP-систем. І все ж програми, запущені на SMP-системах, одержують певний приріст продуктивності, навіть якщо вони були написані для однопроцесорних систем. Це пов'язано з тим, що апаратні переривання, зазвичай припиняють виконання програми для їх обробки ядром, можуть оброблятися на вільному процесорі. Ефект у більшості програм виявляється не стільки в прирості продуктивності, скільки у відчутті, що програма виконується більш плавно. У деяких додатках, зокрема програмних компіляторах і деяких проектах розподілених обчислень, підвищення продуктивності буде майже прямо пропорційним числу додаткових процесорів.

Підтримка SMP повинна бути вбудована в операційну систему. Інакше додаткові процесори будуть залишатися не завантаженими і система буде працювати як однопроцесорна.

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

Вихід з ладу одного процесора призводить до некоректної роботи всієї системи і вимагає перезавантаження всієї системи для відключення несправного процесора.

Обмеження кількості процесорів

При збільшенні кількості процесорів помітно збільшується вимога до смуги пропускання шини пам'яті. Це накладає обмеження на кількість процесорів в SMP-архітектурі. Сучасні конструкції дозволяють розмістити до чотирьох процесорів на одній системній платі.

Проблема когерентності кеш-пам'яті

Проблема, про яку йде мова, виникає через те, що значення елементу даних у пам'яті, що зберігається в двох різних процесорах, доступне цим процесорам тільки через їх власні Кеші. Якщо процесор змінить значення елементу даних у своєму кеші, то при спробі виведення даних з пам'яті, буде отримано старе значення. Навпаки, якщо підсистема вводу/виводу вводить в комірку основної пам'яті нове значення, в кеш-пам'яті процесора, як і раніше залишається старе.

Обмеження на кількість процесорів

При збільшенні числа процесорів помітно збільшується вимога до смуги пропускання шини пам'яті. Це накладає обмеження на кількість процесорів в SMP архітектурі. Сучасні SMP-системи дозволяють ефективно працювати при 16 процесорах.

Проблема когерентності кеш-пам'яті

Кожен сучасний процесор обладнаний багаторівневою кеш-пам'яттю для більш швидкої вибірки даних і інструкцій з основної пам'яті, яка працює повільніше, ніж процесор. У багатопроцесорній системі наявність кеш-пам'яті у процесорів знижує навантаження на загальну шину або на комутоване з'єднання, що дуже сприятливо позначається на загальній продуктивності системи. Але, так як кожен процесор обладнаний своєю індивідуальною кеш-пам'яттю, виникає небезпека, що в кеш-пам'ять одного процесора потрапить значення змінної відмінне від того, що зберігається в основній пам'яті і в кеш-пам'яті другого процесора. Уявімо, що процесор змінює значення змінної в своєму кеші, а інший процесор запрошує цю змінну з основної пам'яті. І він отримає старе значення змінної. Або, наприклад, підсистема вводу-виводу записує в основну пам'ять нове значення змінної, а в кеш-пам'яті процесора і раніше залишається старе. Вирішення цієї проблеми покладено на протокол узгодження кешів (cache coherence protocol), який покликаний забезпечити узгодженість («когерентність») кешів всіх процесорів і основної пам'яті без втрати загальної продуктивності.[1].

Підтримка операційної системи

Підтримка SMP повинна бути вбудована в операційну систему, інакше додаткові процесори не будуть діяти, і система буде працювати як однопроцесорна. Більшість сучасних операційних систем підтримує симетричну мультипроцесорність, але в різному ступені.

Підтримка багатопроцесорності в ОС Linux була додана в версії ядра 2.0 і вдосконалена в версії 2.6. ОС Windows NT спочатку створювалася з підтримкою багатопроцесорності. Але ось Windows 9x не підтримували SMP до виходу Windows XP, що стало розвитком Windows 2000, тобто гілки Windows NT.

Див. також

Примітки

Література

Посилання

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.