Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Materialy_Arhitektura.doc
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
1.84 Mб
Скачать

15.Багатопроцесорна архітектура

Відносно великі накладні витрати, пов'язані з обробкою переривань, незрідка роблять доцільним включення в систему додаткових процесорів. Є і інші аргументи на користь створення багатопроцесорних обчислювальних систем.

Одним з аргументів є підвищення надійності обчислювальної системи за допомогою багатократного резервування. Якщо один з процесорів багатопроцесорної системи відмовляє, система може перерозподілити завантаження між тими, що залишилися. Для комп'ютерів перших поколінь, біля яких напрацювання апаратури процесора на відмову було відносно невелике, підвищення надійності в такий спосіб часто виявлялося доцільним, особливо в додатках, що вимагали цілодобової доступності.

Примітка

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

Іншим аргументом на користь включення в систему додаткових процесорів є той факт, що алгоритми, використовувані для вирішення багатьох прикладних завдань, незрідка піддаються розпаралелюванню : розділенню роботи між декількома більш менш незалежно працюючими процесорами. Залежно від алгоритму (і, побічно, від природи вирішуваного завдання) рівень досяжного паралелізму може сильно розрізнятися. Відношення продуктивності системи до кількості процесорів і продуктивності однопроцесорної машини називають коефіцієнтом масштабування. Для різних завдань, алгоритмів, ОС і апаратної архітектури цей коефіцієнт різний, але завжди менше одиниці і завжди убуває у міру збільшення кількості процесорів.

Деякі завдання, наприклад, побудова фотореалістичних зображень методом трасування променів, злом шифрів повним перебором простору ключів або пошук позаземних цивілізацій піддаються масштабуванню дуже добре: можна включити в роботу десятки і сотні тисяч процесорів, передаючи при цьому між ними відносно малі об'єми даних. У цих випадках часто виявляється Доцільно навіть не встановлювати процесори в одну машину, а використовувати безліч окремих комп'ютерів, сполучених відносно низькошвидкісними каналами передачі даних. Це дозволяє задіювати процесори, підключені до мережі (наприклад, до Інтернет) і не зайняті в даний момент іншою корисною роботою.

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

Многопроцессорность в таких системах зазвичай застосовується лише для ц0. вышения продуктивності, але вочевидь, що її ж можна використовувати і для підвищення надійності: коли функціонують всі процесори, система працює швидко, а з частиною процесорів працює хоч щось, хай і повільніше.

Деякі багатопроцесорні системи підтримують виконання на ных процесорах різних ОС — так, на IBM z90 частину процесорів M виконувати Linux, а останні — z/OS. У такій конфігурації, що працює під управлінням Linux Web-сервер може взаємодіяти з тим, що працює під z/OS сервером транзакцій через загальну фізичну пам'ять. Багатопроцесорні сервери Sun Fire можуть виконувати декілька копій Solaris.

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

Сучасні суперкомп'ютери цього типа (IBM „SP6000, Cray Origin) складаються з десятків, сотень, а інколи і тисяч окремих процесорних модулів (кожен модуль є відносно самостійною обчислювальною системою, зазвичай багатопроцесорною, з власною пам'яттю і, незрідка, з власною дисковою підсистемою), сполучених між собою високошвидкісними каналами

Багатопроцесорні системи різного роду набувають все більш і більш широкого поширення. Якщо продуктивність окремого процесора подвоюється в середньому кожні півтора роки ("закон Мура"), то продуктивність багатопроцесорних систем подвоюється десять кожного місяця

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

Насправді, оперативна пам'ять має кінцеву, і невелику в порівнянні з циклом центрального процесора, швидкість доступу. Навіть один сучасний процесор легко може зайняти всі цикли доступу ОЗУ, а декілька процесорів непродуктивно витрачатимуть час, чекаючи доступу до пам'яті. Багатопортове ОЗУ могло б вирішити цю проблему, але така пам'ять набагато дорожче звичайною, однопортовою, і застосовується лише в особливих випадках і в невеликих об'ємах.

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

Більшість контроллерів кешів сучасних процесорів надають засоби забезпечення когерентності кеша — синхронізацію вмісту кеш-пам'ятей декількох процесорів без обов'язкового запису даних в основне ОЗУ.

Суперскалярні процесори, біля яких порядок реального виконання операцій може не збігатися з порядком, в якому відповідні команди слідують в програмі, додатково посилюють проблему.

Порядок доступу до пам'яті в SPARC

Сучасні процесори надають можливість управляти порядком доступу команд до пам'яті. Наприклад, біля мікропроцесорів SPARCvQ визначено три режими роботи з пам'яттю (моделі пам'яті), перемикані бітами в статусному регістрі процесора.

Вільний доступ до пам'яті (RMO, Relaxed Memory Order), коли процесор використовує всі засоби кешування і динамічного переупорядковування команд, і не намагається забезпечити жодних вимог до впорядкованості выбор-ки і збереженню операндів в основній пам'яті.

Частково впорядкований доступ (PSO, Partial Store Order), коли процесор як і раніше використовує і кешування, і переупорядковування, але в потоці команд можуть зустрічатися команди MEMBAR. Зустрівши таку команду, сміття зобов'язане гарантувати, що всі операції читання і запису з пам'яті, зако дированные до цієї команди, будуть виконані (в даному випадку під виконання мається на увазі перенесення результатів всіх операцій з кеша в ОЗУ), д0 того, як процесор спробує виробити будь-яку з операцій доступу до пам'яті, наступних за MEMBAR.

Повністю впорядкований доступ (TSO, Total Store Order), коли процесор гарантує, що операції доступу до пам'яті звертатимуться до основного ОЗА в точності в тому порядку, в якому закодовані.

Кожен наступний режим підвищує упевненість програміста в тому, що його програма прочитає з пам'яті саме те, що туди записав інший процесор, але одночасно наводить і до падіння продуктивності. Найбільший програш забезпечує наївна реалізація режиму TSO, коли ми просто вимикаємо і динамічне переупорядковування команд, і кешування даних (кешування коди можна залишити, якщо лише ми не намагаємося виконати код, який піддається паралельній модифікації іншим задатчиком шини).

Іншим вузьким местомом багатопроцесорних систем є системна шина. Сучасні комп'ютери загального призначення, як правило, мають шинну архітектуру тобто і процесори, і ОЗУ, і адаптери шин зовнішніх пристроїв (PCI і т. д.) сполучені загальною магістраллю даних, системною шиною або системною магістраллю. У кожен момент магістраль може займати лише пара пристроїв задатчик і ведений. Зазвичай, задатчиком служить процесор — як центральний, так і канальний — або контроллер ПДП, а веденим може бути пам'ять або периферійний пристрій. При синхронізації вмісту кешів процесорний модуль також може виявитися в ролі веденого.

Доступ до шини регулюється арбітром шини. Практично застосовуються дві основні стратегії арбітражу — пріоритетнаколи пристрій, що має високий пріоритет, завжди дістає доступ, у тому числі і за наявності запитів від низькопріоритетних пристроїв, і справедлива (fair) коли арбітр гарантує всім пристроям доступ до шини протягом деякої кількості циклів.

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

Втім, при великій кількості вузлів проблеми виникають і біля систем з настільки високошвидкісною шиною, як FirePane. Крім того, у міру зростання фізичних розмірів системи, стає необхідно брати до уваги фізичну швидкість передачі сигналів — як сигналів самої магістралі, так і запитів до арбітра шини і його відповідей. Тому шинна топологія з'єднань при багатьох десятках і сотнях вузлів виявляється .неприемлема, і застосовуються складніші топології.

Системи NUMA-Q

Багатопроцесорні сервери IBM NUMA-Q складаються з окремих процесорних модулів. Кожен модуль має власну оперативну пам'ять і чотири процесори х86. Модулі називаються quad (четвірки)

Четвірки сполучені високошвидкісними каналами IQ-Link з центральним комутатором. Заміна загальної шини на зіркоподібну топологію з центральним комутатором дозволяє вирішити проблеми арбітражу доступу до шини, зокрема, усунути затримки при запиті до арбітра шини і чеканні його відповіді запрошуючому пристрою. NUMA-системы фірми IBM можуть містити до 16 четвірок, тобто до 64 процесорів.

Архітектура дозволяє також включати в ці системи процесори з архітектурою, відмінною від х86, наприклад RS/6000 і System/390, дозволяючи, таким чином, створити в межах однієї машини гетерогенну мережу з надвисокошвидкісними каналами зв'язку.

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

При гіперкубічному з'єднанні, кількість вузлів N пропорційно міри двійки, а кожен вузол має log2N з'єднань з іншими вузлами. Кожен вузол здатний не лише обмінюватися повідомленнями з безпосередніми сусідами по топології, але і маршрутизувати повідомлення між вузлами, що не мають прямого з'єднання. Щонайдовша дорога між вузлами, що знаходяться в протилежних вершинах куба, має довжину log2N і не є єдиним (мал. 6.6). Завдяки множинності доріг, маршрутизатори можуть вибирати для кожного повідомлення найменш завантажену в даний момент дорогу або обходити вузли, що відмовили.

Масивно паралельні системи Cray/SGI Origin

Вузли суперкомп'ютерів сімейства Cray/SGI Origin сполучені в гіперкуб каналами з пропускною спроможністю 1 Гбайт/с. Адаптери з'єднань забезпечують не просто обмін даними, а прозорий (хоча і з падінням продуктивності) доступ процесорів кожного з вузлів до оперативної пам'яті інших вузлів і забезпечення когерентності процесорних кешів.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]