headerphoto

Komputery równoległe

Taksonomia Flynna

Punktem wyjścia w temacie klasyfikacji komputerów równoległych jest systematyka wprowadzona w 1972 r. przez Michaela J. Flynna. Klasyfikacja opiera się na prostej analizie strumieni instrukcji i strumieni danych płynących do procesora. Strumień instrukcji to zdefiniowana sekwencja poleceń dla jednostki sterującej procesora, zaś strumień danych to nic innego jak ruch danych między pamięcią a procesorem. Według założeń Flynna strumienie instrukcji i strumienie danych mogą być pojedyncze lub wielokrotne. Klasyfikując komputery według takiego kryterium otrzymujemy cztery kategorie architektur:

  • pojedynczy strumień instrukcji, pojedynczy strumień danych (SISD)
  • pojedynczy strumień instrukcji, wiele strumieni danych (SIMD)
  • wielokrotny strumień instrukcji, pojedynczy strumień danych (MISD)
  • wielokrotny strumień instrukcji, wiele strumieni danych (MIMD)

Architektura SISD

Do tej grupy zaliczamy klasyczne komputery sekwencyjne von Neumanna składające się z jednego procesora z jednym strumieniem instrukcji i jednym strumieniem danych1. Procesor takiej maszyny wykonuje w danej chwili tylko jedną operację (rys. 1). Częściowa równoległość przetwarzania danych uzyskana została poprzez zaimplementowanie w procesorze dodatkowych zestawów instrukcji strumieniowych, takich jak np. "Streaming SIMD Extensions" w procesorach Pentium III czy "Hyper-Threading" w jednostkach Pentium IV.



Rys. 1. Schemat najprostszej z architektur Flynna - architektura SISD.

Architektura SIMD

Architektura SIMD dotyczy tzw. komputerów wektorowych (mających skalarną i wektorową architekturę), które z założenia przeznaczone są do realizacji ściśle wyspecjalizowanych zadań. Procesory wchodzące w skład takich maszyn, wykonują jednakowe instrukcje (single instructions), operując na wielu danych (multiple-data). Komputer taki posiada jedną jednostkę sterującą, która nadzoruje i synchronizuje pracę wszystkich dostępnych procesorów (rys. 2). Ta charakterystyczna cecha komputerów wektorowych powoduje, że doskonale sprawdzają się w przetwarzaniu dużych struktur danych. Skutecznie wspomagają modelowanie różnych zjawisk fizycznych przy użyciu tablic, macierzy i wektorów. Doskonale sprawdzają się również w dziedzinie przetwarzania grafiki i animacji. Pierwsze wektorowe superkomputery oparte na architekturze SIMD to ILLIAC-IV z 1972 r., młodszy o dwa lata STARAN, a także legendarny Cray-1. Z biegiem czasu, procesory wchodzące w skład domowych komputerów PC, wyposażone zostały w instrukcje potokowe z rodziny SIMD. Początkowo był to zestaw instrukcji MMX, potem 3DNow!, aż po dzisiejsze SSE (czyli wspomniane już wcześniej "Streaming SIMD Extensions").



Rys. 2. Jedna jednostka sterująca nadzoruje wszystkimi procesorami - architektura SIMD.

Architektura MISD

Następnym modelem architektury komputerów równoległych jest rzadko stosowana architektura MISD. Opiera się ona na schemacie przetwarzania pojedynczego strumienia danych, za pomocą wielu strumieni instrukcji. MISD jest modelem czysto teoretycznym, który nie znalazł szerszego zastosowania w praktyce. Właściwie jedynym znanym zastosowaniem tego typu architektury, mogą być komputery wykorzystujące redundancję do minimalizacji błędów (czyli wielokrotnie wykonujące te same obliczenia)2.

Architektura MIMD

Żadna z omówionych wyżej architektur, nie nadaje się do tzw. "obliczeń ogólnego przeznaczenia". Komputery typu SISD z powodu przestarzałej architektury odchodzą powoli do lamusa, zaś komputery SIMD i MISD są zbyt wyspecjalizowane do realizacji bardziej ogólnych zadań obliczeniowych. Komputery równoległe potrzebowały modelu architektury otwartego na bardziej ogólne zastosowania. Modelu, w którym każdy z procesorów maszyny równoległej byłby w stanie realizować jednocześnie wiele operacji, na wielu strumieniach danych.

Założenia te idealnie realizuje architektura MIMD, stanowiąc tym samym solidny fundament dla wszystkich współczesnych komputerów równoległych. Często w literaturze, można spotkać definicję komputerów opartych na architekturze MIMD, jako zbiorze niezależnych procesorów, które w trakcie wykonywania zadań obliczeniowych korzystają ze wspólnej pamięci operacyjnej. Może być też tak, że każdy z szeregu procesorów w systemie równoległym MIMD posiada własną (lokalną) pamięć operacyjną, a z modułami pamięci innych procesorów kontaktuje się za pomocą specjalnej sieci połączeń (ang. interconnection network)3 (rys. 3).



Rys. 3. Każdy procesor nadzorowany jest przez oddzielną jednostkę sterującą - architektura MIMD.

Model architektury MIMD jest zdecydowanie najbardziej zaawansowanym technologicznie i z racji swojej wielozadaniowości najbardziej popularnym typem architektury komputera równoległego. Komputery MIMD to silne, wieloprocesorowe maszyny zdolne udźwignąć bardzo skompilowane zadania obliczeniowe. Warto więc przyjrzeć się im nieco bliżej.


1 Andrew S. Tanenbaum, Struktura i organizacja systemów komputerowych. Wydanie V, Wydawnictwo Helion S.A, Gliwice, s. 630.
2 http://en.wikipedia.org/wiki/MISD
3 M. Abd-El-Barr, H. El-Rewini, Fundamentals of Computer Organization and Architecture, Wiley-Interscience, New Jersey 2005, s.246.