Klasyfikacja systemów wieloprocesorowych

Klasyfikacja wg kryterium ziarnistości kodu

Kod wykonywany na maszynach wieloprocesorowych dzieli się na gruboziarnisty (coarse-grained) i drobnoziarnisty (fine-grained). Kod gruboziarnisty to zadania, gdzie jedynie bardzo duże fragmenty programu mogą być wykonywane wzajemnie równolegle. Ta klasa kodu nie wymaga dużego natężenia wymiany informacji, nadaje się więc świetnie do komputerów o ubogiej sieci połączeń między elementami. Zadania tego typu są więc realizowane na systemach SMP, z pomocą wieloprocesowych systemów operacyjnych. Skrajnym przypadkiem gruboziarnistości są systemy jednoprocesowe (np. DOS), gdzie nie ma miejsca na jakąkolwiek równoległość. Nieco mniej gruboziarniste są wielozadaniowe systemy operacyjne, gdzie równolegle mogą wykonywać się jedynie poszczególne procesy

(np. Unix) oraz systemy umożliwiające tzw. multithreading (wielowątkowość), gdzie procesy można dzielić na tzw. wątki, także wykonywane równolegle (np. w Windows NT).

Zadania drobnoziarniste to programy, w których praktycznie pojedyncze instrukcje zawarte w kodzie wynikowym mogą być wykonywane równolegle. Oczywiście dotyczy to jedynie wzajemnie niezależnych instrukcji, a nie całego kodu zawartego w programie. Zadania drobnoziarniste wymagają bogatej komunikacji między procesorami, co umożliwia ich efektywną realizację jedynie na maszynach klasy MPP (Massively Parallel Processing). Do takich zadań należą np. obliczenia matematyczne na macierzach (stosowane w modelowaniu danych) i sortowanie czy wyszukiwanie informacji w dużych bazach danych.

Terminy związane z przetwarzaniem równoległym

wieloprocesorowość - istnienie w komputerze co najmniej dwóch jednostek jednocześnie przetwarzających informacje;

SMP - (Symmetric Multi-Processing) przetwarzanie pojedynczych zadań równolegle na wielu procesorach; inaczej: wieloprocesowość na maszynie wieloprocesorowej;

komputer równoległy - komputer wieloprocesorowy, w którym poszczególne jednostki przetwarzające zajmują się wyspecjalizowanymi funkcjami;

multikomputer - komputer wieloprocesorowy (luźno sprzężony), złożony z równolegle pracujących zestawów, w skład których oprócz procesora wchodzą także układy pomocnicze i zasoby (pamięć, I/O).

Klasyfikacja komputerów wg kryterium strumieni instrukcji i danych

SISD - jeden strumień instrukcji, jeden strumień danych; (przetwarzanie sekwencyjne lub potokowe)

MISD - wiele strumieni instrukcji, jeden strumień danych; (praktycznie niestosowane)

SIMD - jeden strumień instrukcji, wiele strumieni danych; (stosowane w superkomputerach i serwerach baz danych)

MIMD - wiele strumieni instrukcji, wiele strumieni danych; (stosowane we wszystkich klasach maszyn wieloprocesorowych)

Klasyfikacja komputerów wieloprocesorowych wg kryterium zasobów

System ściśle sprzężony - system wieloprocesorowy, gdzie wszystkie zasoby są globalne, tzn. dzielone przez wszystkie jednostki przetwarzające;

System luźno sprzężony - system wieloprocesorowy, gdzie wszystkie zasoby są lokalne, tzn. są własnością poszczególnych jednostek przetwarzających; dostęp do zasobów realizowany jest poprzez przekazywanie wiadomości (explicit message passing);

Klasyfikacja kodu równoległego wg kryterium ziarnistości

* Kod gruboziarnisty - program, gdzie jedynie bardzo duże fragmenty kodu (poszczególne procesy bądź wątki) mogą być wykonywane równolegle; w skrajnym przypadku program sekwencyjny;

* Kod drobnoziarnisty - program, gdzie bardzo drobne fragmenty kodu (pojedyncze instrukcje lub ich niewielkie grupy) mogą być wykonywane równolegle;


TOP 200