klasyfikacja_komputerow_mimd [mgr Wiki]

[[klasyfikacja_komputerow_mimd]]
mgr Wiki

# Klasyfikacja komputerów MIMD.

## Klasyfikacja systemów komputerowych

### Taksonomia Flynna:

podstawą tej klasyfikacji jest: liczba strumieni danych, liczba strumieni instrukcji

- SISD ( Single Instruction Stream- Single Data Stream)
  - Klasyczna architektura (Johna) von Neumanna
- SIMD (Single Instruction Stream- Multiple Data Stream)
  - SM-SIMD – maszyny wektorowe (Sherd Memory)
  - DM-SIMD – tablica procesów (Disk Memory)
- MISD (Multiple Instruction Stream- Single Data Stream)
- MIMD (Multiple Instruction Stream- Multiple Data Stream)
  - SM-MIND - wieloprocesory (z pamięcią dzieloną)
  - DM-MIND - wielokomputery (z pamięcia prywatną)

## Klasyfikacja maszyn typu MIMD

SM-MIND - wieloprocesory/multiprocesory

SM - Shared Memory

PRAM – parrarel RAM
UMA – uniform memory acces
SMP – symmetric multi-processing

Przełącznica krzyżowa (ang. Crossbar switch)

Magistrala danych
- przełączników

1 cykl dostępu do pamięci
Najgorszy przypadek: p przełączników, p cykli opóźnionych w dostępie
Najczęściej spotykany – Snopy bar protocol - najszybszy

DM-MIND - wielokomputery/multikomputery

DM - Distributed Memory

średnica d (diameter) – największa odległość między dwoma procesorami (z pamięcią) w systemie zgodnie z obowiązującym algorytmem routingu mierzony w przeskokach.

przekrój połówkowy Hipersześcian (hiperkostka, hypercube)
Hipesześcian wymiaru 0 - jest to pojedynczy procesor bez etykiety. Hipesześcian wymiaru n tworzy się kopiując 2 razy h. wymiaru n-1 łącząc parami odpowiadające sobie węzły (wierzchołki oraz dodając 0 do etykiet pierwszej kopii i 1 do drugiej)

## Klasyfikacja komputerów MIMD

- silnie powiązane: Wieloprocesory (multiprocessors) – komputery wyposażone we wspólną pamięć (shared memory). W wieloprocesorze istnieje pojedyncza fizyczna przestrzeń adresowa, współdzielona przez wszystkie procesory. Są używane zazwyczaj jako systemy równoległe (do rozwiązywania pojedynczych problemów, między jednostkami opóźnienia komunikatów –małe oraz szybkość przesyłania bardzo duża)
- słabo powiązane: Multikomputery (multicomputers) – komputery bez pamięci wspólnej (pamięć prywatna). Stosuje się je głównie w systemach rozproszonych (do prac nad wieloma osobnymi problemami, ale może również być wykonywany ten sam problem; opóźnienia komunikatów duże, szybkość przesyłania mała)

Rysunek: Architektura systemów rozproszonych

## Zależnie od architektury połączeń między komputerami można wyróżnić dwie kategorie systemów:

- z pojedynczą szyną (ang. bus-based) - istnieje pojedyncza sieć, szkielet, szyna, kabel lub inne medium transmisyjne, które łączy wszystkie komputery (tak działa telewizja kablowa);
- z przełącznikami (ang. switched) - nie ma pojedynczej sieci szkieletowej, komputery są połączone między sobą różnymi kablami, przy przejściu komunikatu z jednego kabla do drugiego trzeba podejmować jawną decyzję (tak działa tradycyjna telefonia). Przełączniki przełącza się sprzętowo. Wiele CPU może mieć równocześnie dostęp do pamięci (do różnych bloków). Pełna siatka wymaga n x n przełączników, sieć typu omega wymaga mniejszej liczby, ale bardziej skomplikowanych (droższych) przełączników (w przykładowej sieci każdy ma dwa wejścia i dwa wyjścia).

Rysunek: Typy połączeń (źródło: Tanenbaum, Distributed Systems)

Można zredukować koszt przełączników budując systemy hierarchiczne. Każde CPU ma szybki dostęp do własnej lokalnej pamięci i dłuższy dostęp do pamięci innych CPU. Takie architektury nazywają się NUMA (ang. Non-uniform memory access). Mają one krótszy średni czas dostępu niż systemy z sieciami typu omega, ale ten czas zależy od właściwego rozmieszczenia kodu i danych programów w pamięciach lokalnych. Tradycyjne wieloprocesory określa się terminem UMA (ang. Uniform Memory Access), a wielokomputery terminem NORMA (ang. No Remote Memory Access).

Wieloprocesory:

- w systemie z pojedynczą szyną szyna jest potencjalnym wąskim gardłem,
- w systemie z przełącznikami można dodawać procesory, ale system jest złożony, wolny i kosztowny,
- programowanie jest proste: dostęp do wspólnej pamięci, programowe mechanizmy synchronizacji procesów.

Wielokomputery:

- łatwo się buduje,
- rozwiązanie jest skalowalne,
- programowanie jest trudne: komunikacja poprzez przesyłanie komunikatów, problem gubionych komunikatów, buforowania, zakładania blokad itp.

## Przydatne linki:

http://rainbow.mimuw.edu.pl/SO/Wyklady-html/11_distr/

# Pobierz dokument

9.2.doc

klasyfikacja_komputerow_mimd.txt · Last modified: 2006/05/23 14:24 by 213.134.174.237