Wykład 8 Systemy komputerowe ze współdzieloną pamięcią

Transkrypt

Wykład 8 Systemy komputerowe ze współdzieloną pamięcią
Wykład 8
Systemy komputerowe ze współdzieloną pamięcią
operacyjną, struktury i cechy funkcjonalne.
Części wykładu:
1. Ogólny podział struktur systemów równoległych
2. Rodzaje systemów komputerowych z pamięcią wspólną
3. Pamięć wspólna w realizacji mikroprocesorów wielordzeniowych
1. Ogólny podział struktur systemów równoległych
Dane i kod programu równoległego są przechowywane w systemie
równoległym w pamięci operacyjnej dostępnej dla procesorów systemu.
Ze względu na sposób organizacji i wykorzystywania pamięci operacyjnej
przez procesory systemy wieloprocesorowego systemy równoległe dzielimy
na:
• systemy ze wspólną pamięcią (współdzieloną, dzieloną) (ang. shared
memory system)
• systemy z pamięcią rozproszoną (ang. distributed memory systems)
• systemy z rozproszoną pamięcią wspólną (ang. distributed shared
memory system, virtual shared memory system).
System wieloprocesorowy z współdzieloną pamięcią (silnie związany)
Procesor 1
Procesor 2
Procesor n
Sieć łącząca procesory z modułami pamięci i układami wejścia/wyjścia
Pamięć 1
Pamięć 2
Pamięć m
Współdzielone moduły pamięci
We/Wy 1
We/Wy k
Układy We/Wy
Schemat ogólny systemu
W systemie ze wspólną pamięcią, wszystkie procesory mają prawo korzystać
z całej przestrzeni adresowej pamięci operacyjnej systemu. Fragmenty tej
przestrzeni są zwykle ulokowane w odrębnych modułach pamięciowych,
wyposażonych w odrębne dekodery adresu.
Komunikacja między procesorami (fragmentami programów) w systemie ze
wspólną pamięcią odbywa się za pomocą rozkazów dostępu do zmiennych
dzielonych w pamięci.
Jest ona nazywana komunikacją przez zmienne dzielone (ang.
communication through shared variables).
Pobieranie rozkazów do wykonania w procesorach również odbywa się ze
wspólnej pamięci.
Efektywność dostępu do modułów pamięci zależy od budowy i własności
sieci łączącej. Sieć ta jest czynnikiem ograniczającym przepustowość dostępu
do pamięci dla większej liczby procesorów. Ogranicza to liczbę procesorów w
tych systemach, przy których zapewniona jest dobra wydajność obliczeń
równoległych.
Systemy wieloprocesorowe ze wspólną pamięcią nazywane są systemami
silnie związanymi (ang. tightly coupled system) lub wieloprocesorami
(ang. multiprocessor).
Ze względu na symetryczny dostęp wszystkich procesorów do wszystkich
modułów pamięci, obliczenia w tych systemach nazywane są w literaturze
symetrycznym wieloprzetwarzaniem (ang. Symmetric Multiprocessing –
SMP).
SMP jest czasem również tłumaczone na Shared Memory Processor system
System wieloprocesorowy z rozproszoną pamięcią (luźno związany)
Pamięć
lokalna 1
Pamięć
We/Wy1 lokalna 2
We/Wy2
Szyna
lokalna
Procesor 1
Łącze
Pamięć
lokalna n
We/Wy n
Szyna
lokalna
Procesor 2
Szyna
lokalna
Procesor n
Łącze
Łącze
Sieć łącząca procesory
Schemat ogólny systemu
W systemie wieloprocesorowym z rozproszoną pamięcią, każdy procesor jest
wyposażony we własną pamięć lokalną (ang. local memory) z przestrzenią
adresową dostępną tylko dla tego procesora.
Systemy wieloprocesorowe z rozproszoną pamięcią nazywane są w literaturze
systemami luźno związanymi (ang. loosely coupled system) lub
wielokomputerami (ang. multicomputers).
Procesory mogą wymieniać dane poprzez sieć łączącą procesory realizując
komunikację przez przesyłanie komunikatów (ang. message passing).
W programach wykonywane są do tego celu rozkazy „nadaj komunikat” i
„odbierz komunikat”.
Komunikaty są wysyłane używając w rozkazach identyfikatorów obiektów
(zmiennych) zwanych kanałami komunikacyjnymi (ang. communication
channel).
Kanały reprezentują połączenie (ang. connection) istniejące (lub stworzone w
sieci połączeń) między łączami komunikacyjnymi (ang. communication
link) procesorów.
Łącza komunikacyjne mogą być szeregowe lub równoległe.
Istnieją procesory przystosowane do przesyłania komunikatów, które mają
kilka łączy - od 4 do 6 (transputer – 4 łącza szeregowe, wybrane procesory
DSP – Data Signal Processors – SHARC, firmy Analog Devices – 6 łączy
równoległych).
Z każdym z łączy współpracuje niezależny kontroler procesora, sterujący
zewnętrznymi transmisjami danych.
Przy realizacji przesłania komunikatu, jest on pobierany z pamięci procesora a
przy odbiorze przesyłany do pamięci.
Kontrolerami dla przesyłania komunikatów są często kontrolery typu DMA (ang. Direct Memory Access).
W systemach rozproszoną pamięcią jest możliwe połączenie bardzo wielu
procesorów przy dużej efektywności komunikacji między procesorami i
obliczeń w procesorach (wynika to z rozproszenia dostępów do pamięci).
Dlatego systemy takie nazywane są również
systemami z masywnym przetwarzaniem równoległym (ang. Massively
Parallel Processing – MPP).
System wieloprocesorowy z rozproszoną pamięcią wspólną
Pamięć
lokalna 1
Pamięć
We/Wy1 lokalna 2
Szyna
lokalna
Ster.
Procesor 1 dostępu
m
Pamięć
lokalna n
We/Wy2
Ster.
Procesor 2 dostępu
We/Wy n
Szyna
lokalna
Szyna
lokalna
Ster.
Procesor n dostępu
Sieć dostępu do odległych modułów pamięci
Schemat ogólny
Systemy z rozproszoną pamięcią wspólną (ang. distributed shared
memory) inaczej zwaną wirtualną pamięcią dzieloną (ang. virtual shared
memory każdy procesor ma lokalną pamięć operacyjną.
Jednakże, każda pamięć jest umieszczona we wspólnej przestrzeni adresowej
całego systemu. Oznacza to, że każdy procesor może mieć dostęp do pamięci
lokalnej dowolnego innego procesora.
W systemach z rozproszoną pamięcią wspólną, komunikacja między
procesorami odbywa się przez dostęp do zmiennych dzielonych.
Odbywa się to po prostu przez wykonanie rozkazu czytaj lub zapisz wspólne
zmienne w pamięci innego procesora.
W każdym procesorze istnieje układ sterowania dostępem do pamięci, który
rozpoznaje bieżące adresy używane w rozkazach procesora i kieruje je do
szyny dostępu do lokalnej pamięci albo wysyła adres wraz ze wskazaniem
rodzaju operacji (odczyt/zapis) do innego procesora (ściślej do jego układu
sterowania dostępem).
Przesłanie adresu a później danych odbywa się za pośrednictwem sieci
łączącej wszystkie procesory (ich układy sterowania dostępem do pamięci).
Systemy z rozproszoną pamięcią wspólną są obecnie najsilniej rozwijane w
formie systemów superkomputerowych.
Ten typ systemu jest nazywany w literaturze systemem ze skalowalnym
przetwarzaniem równoległym (ang. Scalable Parallel Processing - SPP).
Przyczyną dla nazwy MPP jest to , że ze wzrostem liczby procesorów w
systemie, użytych do wykonania danego programu równoległego, wydajność
systemu rośnie zgodnie ze współczynnikiem wzrostu liczby procesorów.
Tę cechę nazywamy skalowalnością systemu równoległego (ang. parallel
system scalability).
2. Rodzaje systemów komputerowych z pamięcią wspólną
Systemy ze wspólną pamięcia dzieli się na 4 klasy w zależności od sposobu
organizacji ich pamięci i schemat dostępu do danych w tych pamięciach:
•
Systemy typu UMA - (ang. Uniform Memory Access),
•
Systemy typu NUMA - (ang. Non-Uniform Memory Access),
•
•
Systemy typu CC-NUMA - (ang. Cache Coherent Non-Uniform Memory
Access),
Systemy typu COMA - (ang. Cache-Only Memory Accesss).
Systemy UMA są systemami ze współdzieloną przez procesory pamięcią
operacyjną, ktora jest fizycznie wspólna.
Systemy NUMA, CC-NUMA, COMA są systemami ze wspóldzielona przez
procesory pamiecią operacyjną, która jest fizycznie rozproszoną między
procesory.
Systemy typu UMA
Schemat systemu UMA z pojedyńczaą szyną pamięciową
W systemach typu UMA procesory P1...Pk mają jednakowo uprawniony
dostęp do pamięci wspólnej zwykle zbudowanej z wielu równolegle
pracujących banków (M1...Mn). Czas dostępu dla każdego procesora do
dowolnej komórki pamięci jest jednakowy lub podobny, stąd nazwa.
W systemach UMA sieć połączeń jest współdzielona przez wszystkie
procesory i może ona być typu:
•
Szyna (magistrala) (ang. bus)
•
Przełącznik krzyżowy (ang. crossbar switch),
•
Wielostopniowa sieć połączeń (ang. multistage connection network).
Szyna moze być pojedyńcza (ang. single bus) lub wielokrotna (ang.
multibus).
Szyna wielokrotna jest często stosowana aby zredukować spiętrzenia
transakcji na szynie (ang. bus contention) wystepujace powszechnie w
systemach typu UMA.
Małe systemy UMA (mała liczba procesorów) byly budowane od lat 80-tych
w oparciu o szyny pamięciowe. W większych systemach stosowano
wielostopniowe sieci łączące co umozliwiało rónoległy doste p do wielu
banków pamięci wspólnej.
Systemy typu NUMA
Ogólna struktura systemu NUMA
Systemy NUMA mają pamięci lokalne (M0...Mn) zlokalizowane przy
procesorach (P0...Pn). Pamięci lokalne unieszczone sa we przestrzeni
adresowej systemu wspólnej dla wszystkich procesorów. Komputery typu
NUMA pozwalają wyeliminować spietrzenia transakcji na szynie pamięci
wspólnej. Sieć połączeń umożliwia procesorom dostep do danych w
odległych procesorach. Dostęp do pamieci lokalnej jest znacznie krótszy niż
dostęp do pamięci innego procesora, stąd nazwa tego typu systemów.
Komunikacja danych w systemiach NUMA odbywa sie przez dostęp do
wspólnych zmiennych.
Dostep do zdalnych danych jest zrealizowany na podobnych zasadach jak
przesyłanie komunikatów, jednakże poprzez wykonanie instrukcji dostępu do
pamięci (czytaj, zapisz).
Instrukcja dostępu do pamięci jest analizowana przez lokalny kontroler
pamięci. Jeśli adres dotyczy pamięci lokalnej, realizowany jest bezpośredni
dostęp. Jeśli adres jest w pamięci innego procesora, kontroler pamięci wysyła
żądanie sprowadzenia odległych danych do pamięci lokalnej. Przeslanie
realizuje kontroler pamięci innego procesora.
W systemach NUMA, dane sprowadzane z pamięci odległej nie są
automatycznie wprowadzane do pamięci podręcznej lokalnego procesora. Do
tej pamięci są sprowadzane tylko dane lokalne, w miarę dostępu do nich przze
lokalny procesor.
W systemach NUMA, utrzymywanie spójności danych pochodzących z
innego procesora, zmodyfikowanych lokalnie, jest skomplikowane. Jest to
rozwiazywane programowo, bez wspomagania przez system.
Systemy typu CC-NUMA
Ogólna struktura systemu CC-NUMA
W systemach CC-NUMA dane pobierane przez procesory (P0...Pn) z pamięci
(M0...Mn) innych procesorów, będących we wspólnej przestrzeni adresowej,
są automatycznie wprowadzane do lokalnej pamięci podręcznej (C0...Cn)
procesora pobierającego.
Systemy CC-NUMA zapewniają wsparcie systemowe i sprzętowe dla
zapewnienia spójności (ang. coherence) kopii danych modyfikowanych
lokalnie w wielu procesorach a przechowywanych w ich lokalnych
pamięciach podręcznych.
Realizują to mechanizmy kontroli control spójności pamięci podręcznych
(ang. cache coherence mechanisms) istniejące zawsze w tych systemach.
Zasady realizacji tej kontroli i uaktualniania kopii danych, aby zapewnić
spójne ich wartości przy użyciu kopii danych zapisanych w wielu pamięciach
podręcznych na raz są zawarte w protokołach spójności pamięci
podręcznych (ang. cache coherence protocols).
Protokoły spójności pamięci podręcznych dzielą się na dwie klasy:
•
•
Sprzętowe protokoły spójności (ang. hardware-based coherency
protocols),
Programowe protokoły spójności (ang. software-based coherency
protocols)
Sprzętowe protokoły spójności danych pamięci podręcznych zależą od typu
sieci łączącej procesory w systemie CC-NUMA.
Wyróżnione są następujące typy tych protokołów:
•
•
•
protokoły z podglądem szyn (ang. snoopy cache protocols) dla systemów
z sieciami jednoszynowymi,
protokoły z katalogami (ang. directory-based protocols) dla systemów z
wielostopniowymi sieciami połączeń
protokoły hierarchiczne (ang. hierarchical cache protocols) dla
systemów z sieciami wieloszynowymi.
Programowe protokoły spójności pamięci podręcznych dzielą się na :
•
•
nieselektywne zabronienie dostępu do pamięci podręcznej (ang.
indiscriminate invalidation)
selektywne zabronienie dostępu do pamięci podręcznej (ang.
indiscriminate invalidation)
Obydwa protokoły programowe działają przy współpracy z kompilatorem,
który analizuje program i klasyfikuje dane ze wzgledu na operacje zapisu i
odczytu przez procesy. Tylko dane czytane lub modyfikowane przez jeden
dodatkowy proces mają możliwość zapisu w odleglych pamięciach
podręcznych. Protokół wstrzymuje dostęp danych w pamięciach podręcznych
(poprzez specjalne wspomaganie sprzętowe) po zakończeniu wykonywania
wyróżnionych przez kompilator sekcji programu, w których nastąpiła
modyfikacja wspólnej skopiowanych zmiennych. Dostęp jest
odblokowywany, po usunięciu niespójności metodami programowymi.
Systemy typu COMA
Ogólna struktura systemu COMA
W systemach COMA procesory (P0...Pn) są wyposażone jedynie w pamieci
podreczne (C0...Cn). Nie wystepują tam lokalne pamięci operacyjne jak w
sytemach UMA ani centralne pamięci współdzielone jak w systemach
NUMA.
W systemach COMA alokacja danych jest na żądanie wywołane przez
:chybienie" w lokalnej pamięci podręcznej. Sprowadzanie danych jest
realizowane przez rozszerzone protokoły spójności danych w pamięciach
podręcznych, które powodują, że przy "chybieniu" dane są automatycznie
przesyłane do lokalnych pamięci podręcznych procesorów, które ich
potrzebują.
Jako protokoly bazowe dla sytemow COMA są stosowane sprzętowe
protokoły opracowane dla dużych systemów rownoległych takie jak protokoły
z katalogami i protokoły hierarchiczne.
Klasyfikacja architektury systemów z pamięcią wspólną
Komercyjne przykładowe systemy superkomputerowe ze wspólną pamięcią:
UMA: Encore Multimax, Power Challenge SGI - USA
NUMA: Cray T3D, Cray T3E, IBM RP3 - USA
CC-NUMA: Flash, Convex Exemplar - USA
COMA: DDM, KSR1 - USA
3. Pamięć wspólna w realizacji mikroprocesorów
wielordzeniowych
System SMP z rozdzielnymi pamięciami podręcznymi L1, L2 i wspólną
jednoblokową pamięcią operacyjną
System CMP (Chip Multi-Processor) z rozdzielnymi pamięciami podręcznymi
L1, L2 i wielkoblokową wspólną pamięcią operacyjną
System CMP (Chip Multi-Processor) z prywatnymi pamięciami podręcznymi
L1, wspólną pamięcią L2 i wspólną pamięcią operacyjną
System CMP (Chip Multi-Processor) ze wspólną pamięcią podręczną L1, L2
i wspólną pamięcią operacyjną
Schemat blokowy mikroprocesora 4-rdzeniowego z lokalnymi pamięciami
L1, wspólną pamięcią L2
Realizacja 4-rdzeniowego mikroprocesora Intel Core 2 Extreme Edition
z pamięcią podręczną L3 oraz operacyjną współdzieloną poza układem
scalonym procesora.
Schemat ogólny mikroprocesora dwurdzeniowego AMD Athlon 64 X2
z pamięcią L3 oraz operacyjną, współdzieloną poza układem scalonym
procesora
Geometria układu scalonego mikroprocesora 4-rdzeniowego firmy Intel z
architekturą Nehalem w edycji technologicznej Sandy Bridge, 32 nm, z
prywatnymi pamięciami podręcznymi L1 oraz L2 rdzeni oraz wspólną
pamięcią podręczną L3 umieszczoną w układzie scalonym procesora,

Podobne dokumenty