Масивно паралелни системи (MPP)
Проблемите, присъщи на многопроцесорните системи със споделена памет, лесно и естествено се елиминират в масивно паралелни системи. Компютрите от този тип са мултипроцесорни системи с разпределена памет, в които еднородни изчислителни възли се комбинират с помощта на някакъв комуникационен носител (фиг. 1.2).

Фигура: 1.2. Архитектура на разпределена памет.
Всеки от възлите се състои от един или повече процесори, собствена памет с произволен достъп, комуникационно оборудване, входна/изходна подсистема, т.е. притежава всичко необходимо за самостоятелно функциониране. В същото време на всеки възел може да функционира или пълноценна операционна система (както в системата RS/6000 SP2), или съкратена версия, която поддържа само основни функции на ядрото, а пълноценна ОС работи на специална контролен компютър (както в системите Cray T3E, nCUBE2).
Процесорите в такива системи имат директен достъп само до своята локална памет. Достъпът до паметта на други възли обикновено се осъществява с помощта на механизма за предаване на съобщения. Тази архитектура на изчислителната система елиминира както проблема с конфликтите при достъп до паметта, така и проблема с кохерентността на кеш паметта. Това позволява почти неограничено увеличаване на броя на процесорите в системата, като по този начин увеличава нейната производителност. Системите MPP със стотици и хиляди процесори (ASCI White - 8192, Blue Mountain - 6144) работят успешно. Ефективността на най-мощните системи достига 10 трилиона оп/сек (10 Tflops). Важно свойство на MPP системите е тяхната висока степен на мащабируемост. В зависимост от изчислителните нужди, за да постигнете необходимата производителност, просто трябва да съберете система с необходимия брой възли.
На практика, разбира се, всичко е много по-сложно. Премахването на някои проблеми, както обикновено се случва, поражда други. За MPP системите на преден план излиза проблемът за ефективността на комуникационната среда. Лесно е да се каже: „Нека изградим система от 1000 възела“. Но как може такъв набор от възли да бъде свързан в едно цяло? Най-простото и ефективно би било да свържете всеки процесор към всеки. Но тогава на всеки възел ще са необходими 999 комуникационни канала, за предпочитане двупосочни. Това очевидно е нереалистично. Различните производители на MPP системи използват различни топологии. В компютрите Intel Paragon процесорите оформяха правоъгълна двумерна мрежа. За това са достатъчни четири комуникационни канала във всеки възел. Компютрите Cray T3D/T3E използваха триизмерна торология на тора. Съответно във възлите на този компютър имаше шест комуникационни канала. Компанията nCUBE използва n-мерната топология на хиперкуба в своите компютри. Всяка от разглежданите топологии има свои предимства и недостатъци. Имайте предвид, че когато данните се обменят между процесори, които не са най-близки съседи, данните се предават през междинни възли. Очевидно възлите трябва да бъдат снабдени с някакъв вид хардуер, който да освободи централния процесор от участие в транслацията на данни. Напоследък йерархична система от високоскоростни комутатори се използва по-често за свързване на изчислителни възли, както беше приложено за първи път в компютрите на IBM SP2. Тази топология дава възможност за директен обмен на данни между всякакви възли, без участието на междинни възли.
Разпределените системи с памет са идеални за паралелно изпълнение на независими програми, тъй като всяка програма работи на свой собствен възел и по никакъв начин не влияе върху изпълнението на други програми. При разработването на паралелни програми обаче трябва да се вземе предвид по-сложна организация на паметта, отколкото в SMP системите. RAM в MPP системи има структура от 3 нива:
- локална памет с произволен достъп на възела;
- RAM на други възли.
В същото време няма възможност за директен достъп до данни, разположени в други възли. За да ги използвате, тези данни трябва предварително да бъдат прехвърлени към възела, който се нуждае от тях в момента. Това прави програмирането много по-трудно. Освен това обменът на данни между възлите е много по-бавен от обработката на данни в локалната памет с произволен достъп на възлите. Следователно писането на ефективни паралелни програми за такива компютри е по-трудна задача, отколкото за SMP системи.