Klasyfikacja systemów wieloprocesorowych

Istnieje wiele metod realizacji przetwarzania równoległego. Pewne charakterystyczne cechy zastosowanych rozwiązań dały początek klasyfikacji wieloprocesorowości wg trzech podstawowych kategorii: strumieni (danych i kontroli), zasobów (lokalności i globalności) oraz ziarnistości kodu (wielkości równolegle przetwarzanych fragmentów). Kategorie te przedstawiamy państwu w skrócie, jako uzupełnienie do rozpoczętego właśnie cyklu o maszynach wieloprocesorowych.

Istnieje wiele metod realizacji przetwarzania równoległego. Pewne charakterystyczne cechy zastosowanych rozwiązań dały początek klasyfikacji wieloprocesorowości wg trzech podstawowych kategorii: strumieni (danych i kontroli), zasobów (lokalności i globalności) oraz ziarnistości kodu (wielkości równolegle przetwarzanych fragmentów). Kategorie te przedstawiamy państwu w skrócie, jako uzupełnienie do rozpoczętego właśnie cyklu o maszynach wieloprocesorowych.

Po pierwsze, musimy wyjaśnić pewne niejasności występujące w terminologii. Otóż termin "wieloprocesorowość" może być rozumiany dwojako. Pierwsze to bardzo ogólne określenie komputera mającego co najmniej dwa procesory mogące pracować w tym samym czasie. Takie właśnie określenie postanowiliśmy stosować w naszym cyklu, wobec braku jednoznacznego terminu określającego maszynę o wielu jednostkach przetwarzających (nazywaną także komputerem równoległym).

Drugie znaczenie bardziej zawęża klasyfikację, określając mianem wieloprocesorowej maszynę o wielu jednostkach centralnych, która pracuje w trybie wieloprocesowym (poszczególne procesory zajmują się odrębnymi zadaniami, wykonują inne procesy). Tę klasę komputerów określa się zazwyczaj jako maszyny SMP (Symmetric MultiProcessing) i tego właśnie terminu będziemy używać w naszym cyklu.

Podobne problemy związane są ze znaczeniem terminu "komputer równoległy". Niektórzy tym mianem określają po prostu komputer wieloprocesorowy. My zdecydowaliśmy się zawęzić nieco tę klasyfikację, opierając się na znaczeniu angielskiego terminu "parallel computer". Tak więc komputerami równoległymi nazwiemy maszyny, w których poszczególne jednostki przetwarzające zajmują się jedynie pewną zawężoną (w stosunku do klasycznego procesora) klasą zadań. Tak więc niektóre z nich obsługują użytkowników, inne zajmują się obsługą wejścia/wyjścia, jeszcze inne wykonują tylko obliczenia numeryczne, nie muszą więc nawet posiadać własnej kopii systemu operacyjnego. W komputerach równoległych do wyspecjalizowanych funkcji stosuje się zazwyczaj procesory z pełnym zestawem instrukcji, lecz niektóre z nich można by z powodzeniem zastąpić przez prostsze układy elektroniczne.

Niektóre komputery wieloprocesorowe określane są także jako multikomputery. Oznacza to, że w maszynie równolegle pracują całkowicie niezależne zestawy sprzętowe, zawierające oprócz procesora także własne układy pomocnicze i zasoby (pamięć, I/O). Wygląda to tak, jakby system zbudowany był z mniejszych, pracujących równolegle komputerów sekwencyjnych.

Klasyfikacja wg kryterium strumieni

Sposób przetwarzania informacji dzieli się ogólnie na sekwencyjny i równoległy. Istnieje jednak kilka podklas równoległości, zasadniczo różniących się od siebie. Podział metod przetwarzania informacji na cztery klasy, zaproponował już w 1966 r. M. Flynn, wprowadzając określenie strumieni: instrukcji i danych. Doprowadziło to do utworzenia czterech klas: SISD, MISD, SIMD i MIMD.

SISD (Single Instruction stream - Single Data stream) to sposób przetwarzania informacji przy którym w danej chwili przez komputer przepływa jeden strumień danych, kontrolowany jednym strumieniem instrukcji. SISD jest w gruncie rzeczy synonimem przetwarzania sekwencyjnego, chociaż do tej klasy można też zaliczyć charakterystyczne dla maszyn wektorowych przetwarzanie potokowe, gdzie pewne instrukcje są wykonywane równolegle do siebie.

MISD (Multiple Instruction stream - Single Data stream) to architektura praktycznie nie występująca w żadnej istniejącej maszynie (ze względu na jej małą użyteczność). Teoretycznie oznacza to, że na dokładnie tych samych danych wykonuje się jednocześnie wiele różnych instrukcji. Tego typu przetwarzanie może być użyteczne do zastosowań statystycznych, np. przy porównywaniu działania wielu zestawów instrukcji na pewnej jednostce informacji.

SIMD (Single Instruction stream - Multiple Data stream) to organizacja charakterystyczna dla dużych komputerów równoległych. Oznacza to w praktyce, że wiele procesorów otrzymuje jednocześnie tę samą instrukcję i wykonuje ją na odmiennych zestawach danych. Tego typu działanie jest bardzo przydatne przy obliczeniach na macierzach danych czy też przy niektórych algorytmach równoległych, jak sortowanie czy wyszukiwanie informacji w bazie danych.

MIMD (Multiple Instruction stream - Multiple Data stream) to najbardziej ogólna organizacja przetwarzania równoległego, w której w danym momencie kilka procesorów może wykonywać całkowicie różne instrukcje na odrębnych zestawach danych. Jest to organizacja wykorzystywana przede wszystkim w maszynach SMP, gdzie każdy procesor zajmuje się w danym momencie zadaniem w dużym stopniu niezależnym od stanu reszty systemu.

Klasyfikacja wg kryterium zasobów

Maszyny wieloprocesorowe dzieli się także na systemy luźno sprzężone i ściśle sprzężone. Pierwsze z nich mają zasoby dzielone, co oznacza, że wszystkie procesory mają dostęp do tej samej, globalnej pamięci czy też do obsługi urządzeń I/O. Teoretycznie w maszynach ściśle sprzężonych wszystkie zasoby powinny być globalne, lecz w praktyce dotyczy to zazwyczaj pamięci RAM, zaś niektóre urządzenia I/O mogą być obsługiwane lokalnie przez poszczególne procesory.

W systemach luźno sprzężonych wszystkie zasoby są lokalne, co oznacza, że jedynie procesory będące właścicielami zasobu mają do niego dostęp. Dostęp do zasobów lokalnych należących do innego procesora można uzyskać jedynie poprzez wysłanie do niego prośby o udostępnienie odpowiednich informacji (obsługę żądania).

W praktyce klasyfikacja wg kryterium lokalności zasobów ma klasy pośrednie. Tak więc istnieją np. systemy, gdzie zasoby w sensie fizycznym są lokalne dla danego procesora, lecz istnieje możliwość dostępu do nich bez udziału jednostki macierzystej, korzystając z usług dodatkowego układu elektronicznego zwanego kontrolerem. Oznacza to, że wspomniane zasoby są logicznie lokalne, bowiem istnieje możliwość sięgnięcia do nich bez udziału innej jednostki przetwarzającej.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200