Ноу Інти, лекція, багатопроцесорні і багатомашинні обчислювальні системи

Багатопроцесорні і багатомашинні обчислювальні системи

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

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

Існує кілька варіантів класифікації систем паралельної обробки даних. За -видимому, найбільш ранній і найбільш відомою є класифікація архітектур обчислювальних систем, запропонована в 1966 році М. Флінном. Класифікація базується на понятті потоку, під яким розуміється послідовність елементів, команд або даних, обробляється процесором. На основі числа потоків команд і потоків даних виділяються чотири класи архітектур:

SISD (sINgle INsTRuction sTReam / sINgle data sTReam) - одиночний потік команд і одиночний потік даних. До цього класу належать насамперед класичні послідовні машини, або, інакше, машини фон-неймановского типу. У таких машинах є тільки один потік команд. всі команди обробляються послідовно один за одним і кожна команда ініціює одну операцію з одним потоком даних. Не має значення той факт, що для збільшення швидкості обробки команд і швидкості виконання арифметичних операцій процесор може використовувати конвеєрну обробку. В такому розумінні машини даного класу фактично не належать до паралельних систем.

SIMD (sINgle INsTRuction sTReam / multIPle data sTReam) - одиночний потік команд і множинний потік даних. Стосовно до одного мікропроцесора цей підхід реалізований в MMX - і SSE - розширеннях сучасних мікропроцесорів. Мікропроцесорні системи типу SIMD складаються з великого числа ідентичних процесорних елементів. мають власну пам'ять. Всі процесорні елементи в такій машині виконують одну і ту ж програму. Це дозволяє виконувати одну арифметичну операцію відразу над багатьма даними - елементамівектора. Очевидно, що така система, складена з великого числа процесорів, може забезпечити істотне підвищення продуктивності тільки на тих завданнях, при вирішенні яких всі процесори можуть робити одну і ту ж роботу.

MISD (multIPe INsTRuction sTReam / sINgle data sTReam) - множинний потік команд і одиночний потік даних. Визначення має на увазі наявність в архітектурі багатьох процесорів, що обробляють один і той же потік даних. Ряд дослідників до даного класу відносять конвеєрні машини.

MIMD (multIPe INsTRuction sTReam / multIPle data sTReam) - множинний потік команд і множинний потік даних. Базовою моделлю обчислень в цьому випадку є сукупність незалежних процесів, епізодично звертаються до даних, що розділяються. У такій системі кожен процесорний елемент виконує свою програму достатньо незалежно від інших процесорних елементів. Архітектура MIMD дає велику гнучкість: при наявності адекватної підтримки з боку апаратних засобів і програмного забезпечення MIMD може працювати як розрахована на одного користувача система, забезпечуючи високопродуктивну обробку даних для однієї прикладної задачі, як багатопрограмна машина, що виконує безліч завдань паралельно, і як деяка комбінація цих можливостей. До того ж архітектура MIMD може використовувати всі переваги сучасної мікропроцесорної технології на основі суворого обліку співвідношення вартість / продуктивність. Насправді практично всі сучасні багатопроцесорні системи будуються на тих же мікропроцесорах, які можна знайти в персональних комп'ютерах, робочих станціях і невеликих однопроцесорних серверах.

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

У цьому випадку виділяють наступні 4 класу систем:

  • системи із симетричною мультипроцесорної обробкою (symmeTRic multIProcessINg), або SMP-системи;
  • системи, побудовані за технологією неоднорідного доступу до пам'яті (non-un IForm memory access), або NUMA-системи;
  • кластери;
  • системи обчислень з масовим паралелізмом (massively parallel processor), або MPP-системи.

Найвищим рівнем інтеграції ресурсів має система із симетричною мультипроцесорної обробкою, або SMP-система (рис. 13.1).

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

Ноу Інти, лекція, багатопроцесорні і багатомашинні обчислювальні системи


Мал. 13.1. Система із симетричною мультипроцесорної обробкою

З точки зору прикладної задачі, SMP-система являє собою єдиний обчислювальний комплекс з обчислювальними ресурсами, пропорційними кількості процесорів. Розпаралелювання обчислень забезпечується операційною системою, встановленою на одному з процесорів. Вся система працює під управлінням єдиної ОС (зазвичай UNIX-подібної, але для Intel-платформ підтримується WINdows NT).

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

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

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

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

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

Так, для забезпечення можливості роботи на загальну магістраль кожен мікропроцесор фірми Intel починаючи з Pentium Pro має вбудовану підтримку двухразрядного ідентифікатора процесора - APIC (Advanced Programmable INTerrupt ConTRoller). За замовчуванням CPU з найвищим номером ідентифікатора стає процесором початкового завантаження. Така ідентифікація полегшує арбітраж шини даних в SMP-системі. Подібні засоби ми бачили і в МП Power4, де на апаратному рівні підтримується створення мікросхемного модуля MCM з 4 мікропроцесорів, що включає в сукупності 8 процесорних ядер.

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

Решта будуть простоювати до вивільнення критичної області.

Природно, при цьому різко знижується продуктивність додатків реального часу.

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

Ноу Інти, лекція, багатопроцесорні і багатомашинні обчислювальні системи


Мал. 13.2. Система, побудована за технологією неоднорідного до ступа до пам'яті

При використанні найбільш поширеного зараз варіанти cc-NUMA (cache- coherent NUMA - неоднорідний доступ до пам'яті з узгодженням вмісту кеш-пам'яті) забезпечується кешування даних оперативної пам'яті інших вузлів.

Зазвичай вся система працює під управлінням єдиної ОС, як в SMP. Можливі також варіанти динамічного поділу системи, коли окремі розділи системи працюють під управлінням різних ОС.

Досить великий час доступу до оперативної пам'яті сусідніх вузлів у порівнянні з доступом до ОП свого вузла в NUMA-системах на даний момент робить таке використання не цілком оптимальним.

Так що повною функціональністю SMP-сістемNUMA-комп'ютери на сьогоднішній день не володіють. Однак серед систем загального призначення NUMA-системи мають один з найвищих показників по масштабованості і, відповідно, по продуктивності. На сьогодні максимальне число процесорів в cc-NUMA-системи може перевищувати 1000 (серія OrigIN3000). Один з найбільш продуктивних суперкомп'ютерів - Tera 10 - має продуктивністю 60 Тфлопс і складається з 544 SMP -узлов, в кожному з яких знаходиться від 8 до 16 процесорів Itanium 2.

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