headerphoto

Komputery równoległe (typu MIMD)

Wielokomputery

Procesory wchodzące w skład komputerów równoległych, muszą wymieniać między sobą informacje, aby wspólnie rozwiązać dany problem obliczeniowy. Superkomputery połączone szybkimi, dedykowanymi sieciami lub klastry stacji roboczych wymieniają między sobą informację za pomocą tzw. komunikatów. Łatwo jest to zobrazować na przykładzie klastra, składającego się z szeregu zwykłych komputerów PC sprzęgniętych w jedną sieć, w celu uzyskania dużej mocy obliczeniowej. Każdy z komputerów w klastrze ma własny procesor i własną pamięć operacyjną, której nie dzieli z innym komputerem. Zatem, jeśli jeden procesor chce uzyskać dostęp do danych z pamięci przypisanej innemu procesorowi, musi wysłać komunikat z zapytaniem o dane potrzebne mu do wykonania obliczeń (rys. 4). Taki rodzaj organizacji pamięci operacyjnej w komputerze równoległym to tzw. "message-passing organization". Komputery oparte na tej technologii nazywamy krótko: wielokomputerami, czyli komputerami składającymi się z wielu niezależnie działających procesorów, mających swoją własną (lokalną) pamięć operacyjną. Wielokomputery charakteryzują się dużą skalowalnością (do klastra bardzo łatwo jest dołączyć nowe komputery) a także niskim kosztem rozbudowy.



Rys. 4. Organizacja pamięci operacyjnej typu "message-passing organization".

Wieloprocesory

Brak wspólnej pamięci operacyjnej w przypadku wielokomputerów, nakłada na programistę dodatkowy obowiązek dbania o komunikację między procesorami. Co prawda obowiązek ten jest zredukowany do minimum poprzez stosowanie odpowiednich standardów programowania równoległego (np. MPI), jednak dużo prościej byłoby, gdyby pamięć komputera równoległego nie była podzielona na odrębne obszary, przypisane lokalnie każdemu z procesorów. Ucieleśnieniem takiej idei są komputery równoległe z pamięcią współdzieloną, czyli wieloprocesory. Procesory takiego komputera wykorzystują ten sam moduł pamięci, odwołując się do wspólnej przestrzeni adresowej RAM. Taki sposób organizacji pamięci nazywamy: "shared-memory organization" (rys. 5).

Łatwość programowania wieloprocesorów okupiona jest niestety bardzo ograniczoną skalowalnością i wysokim kosztem ich rozbudowy.



Rys. 5. Organizacja pamięci operacyjnej typu "shared-memory organization".