3.3. Слабозв’язані потоки

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

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

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

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

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

процесорів

Рис.3.18. Типова архітектура мультипроцесорної системи із загальною пам'яттю.

Таким чином, існуючі багатопроцесорні системи розпадаються на два основні класи в залежності від способу організації пам'яті та методики їхнього з'єднання. До першої групи відносятьсямашини із загальною (розділюваною) основною пам'яттю(Truesharedmemory), що об'єднують до декількох десятків (зазвичай менше 32 ) процесорів. Порівняно невелика кількість процесорів у таких машинах дозволяє мати одну централізовану загальну пам'ять та об'єднати процесори та пам'ять за допомогою однієїшини. За наявності у процесорів кеш-пам'яті достатнього обсягу високопродуктивна шина та загальна пам'ять можуть задовольнити звернення до пам'яті, що надходять від кількох процесорів. Оскільки є єдина пам'ять з тим самим часом доступу, ці машини іноді називаютьсяUMA(Uniform Memory Access). Структура такої системи представлена ​​рис.3.18.

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

П

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

Рис.3.19. Типова архітектура машин із розподіленою пам'яттю.

(ЛП – локальна пам'ять, ПВВ – підсистема введення/виводу)

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

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

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

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

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

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

Основними перевагами обміну за допомогою передачі повідомлень є:

апаратна підтримка обміну може бути більш простою, особливо в порівнянні з моделлю пам'яті, що розділяється, яка підтримує масштабовану когерентність кеш-пам'яті.

моделі обміну зрозумілі, примушують програмістів (або компілятори) приділяти увагу обміну (мінімізувати), який зазвичай має високу тимчасову вартість.

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

Оцінюючи будь-якого механізму обміну критичними є три характеристики продуктивності:

Смуга пропускання:в ідеалі смуга пропускання механізму обміну буде обмежена смугами пропускання процесора, пам'яті та системи міжз'єднань, а не будь-якими аспектами механізму обміну. Пов'язані з механізмом обміну накладні витрати (наприклад, довжина міжпроцесорного зв'язку) прямо впливають смугу пропускання.

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

Приховування затримки:наскільки добре механізм приховує затримку шляхом перекриття обміну з обчисленнями або з іншими обмінами.

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

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

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

Розглянемо два типи (або, точніше, три, з урахуванням розподілу систем другого типу на два досить різні класи) багатопроцесорних систем більш докладно.