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,