Симетрична мультипроцесорність
Симетричне мультипроцесування (англ. 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-машин з таким способом з'єднання процесорів є будь-які багатопроцесорні сервери початкового рівня.
Другий спосіб з'єднання процесорів — через комутоване з'єднання (crossbar switch)[1][2]. При такому з'єднанні вся загальна пам'ять ділиться на банки пам'яті, кожен банк пам'яті має свою власну шину, і процесори з'єднані з усіма шинами, маючи доступ по ним до будь-якого з банків пам'яті. Таке з'єднання більш складне, але воно дозволяє процесорам звертатися до загальної пам'яті одночасно. Це дозволяє збільшити кількість процесорів в системі до 8-16 без помітного зниження загальної продуктивності. Прикладом таких SMP-машин є багатопроцесорні робочі станції RS / 6000.
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.
- ↑ а б в Severance_Dowd, 1998.
- ↑ а б Chevance, 2004.
- Charles Severance, Kevin Dowd. High Performance Computing (RISC Architectures, Optimization & Benchmarks), 2nd Edition. — O'Reilly Media, 1998. — 466 p. — ISBN 156592312X.
- René J. Chevance. Server Architectures: Multiprocessors, Clusters, Parallel Systems, Web Servers, Storage Solutions. — Digital Press, 2004. — 784 p. — ISBN 1555583334.
- Dhananjay Dhamdhere. Operating Systems. — McGraw-Hill Science/Engineering/Math, 2008. — 864 p. — ISBN 0072957697.
- William Stallings. Operating Systems - Internals and Design Principles, 7th Edition. — Prentice Hall, 2011. — 816 p. — ISBN 013230998X.
- Sizing Up Parallel Architectures (май 1998 года) [Архівовано 8 листопада 2016 у Wayback Machine.](рос.)(рус.) — хороша стаття, яка розповідає, що таке SMP, і про її місце серед інших багатопроцесорних технологій
Це незавершена стаття про апаратне забезпечення. Ви можете допомогти проєкту, виправивши або дописавши її. |
Це незавершена стаття про операційні системи. Ви можете допомогти проєкту, виправивши або дописавши її. |