Procesory wielordzeniowe (multiprocessor on a chip) 1
Procesory wielordzeniowe 2
Procesory wielordzeniowe 3
Konsekwencje prawa Moore'a 4
Procesory wielordzeniowe 5
Intel Nehalem 6
Architektura Intel Nehalem 7
Procesory wielordzeniowe Problem podstawowy: wielowątkowy dostęp do hierarchii pamięci L1 prywatna dla rdzenia L2 prywatna lub w pewien sposób współdzielona L3 wspólna (jeśli jest) Problemy konkretne: spójność pamięci podręcznej wydajność dostępu minimalizacja liczby chybień cache oblivious algorithms false sharing i wspólna sterta dla wątków 8
Procesory wielordzeniowe Problemy szeregowania zadań dla procesorów wielordzeniowych afiniczność i lokalność odniesień do pamięci podział zadań i iteracji pętli uwzględniający afiniczność Systemy NUMA lokalne chybienia pamięci podręcznej odległe (zdalne, remote) chybienia pamięci podręcznej koszt false sharing 9
NUMA Architektura AMD Opteron 10
Pamięć podręczna Działanie pamięci podręcznej: strategie utrzymywania zgodności pamięci podręcznej (cache coherence protocols) write through każdy zapis do pamięci podręcznej jest przenoszony do pamięci głównej copy back zapis do pamięci podręcznej jest przenoszony do pamięci głównej przy podmianie linii (linia musi wiedzieć czy była zmieniona) inne, bardziej złożone np. MESI 11
Protokoły zgodności pamięci podręcznej protokoły katalogowe (directory protocols) istnieje katalog z informacją o zawartości pamięci podręcznej i centralny sterownik katalogu pośredniczący w wymianie danych protokoły podglądania (snoopy protocols) procesory podglądają stan pamięci podręcznych i rozgłaszają zmiany zapis z aktualizacją (procesor dokonujący zmianę rozgłasza ją i wszystkie procesory aktualizują swoje pamięci podręczne) zapis z unieważnieniem (procesor dokonujący zmiany unieważnia zawartość pamięci podręcznych innych procesorów); przykład MESI 12
Protokół MESI Blok w pamięci podręcznej może być w jednym z czterech stanów: M (modified): zmodyfikowany w pamięci podręcznej, różny od odpowiedniego bloku w pamięci głównej E (exclusive): wyłącznie w jednej pamięci podręcznej, zawartość identyczna jak w pamięci głównej S (shared): w kilku pamięciach podręcznych, zawartość identyczna jak w pamięci głównej I (invalid): unieważniony przez zmiany dokonane w innej pamięci podręcznej 13
Pamięć odległa (zdalna) Jednym z najpoważniejszych ograniczeń systemów jedno i wieloprocesorowych (wielordzeniowych) o jednorodnym dostępie do pamięci jest zbyt mała przepustowość połączenia pamięć procesory Ograniczenie to można usunąć wyposażając procesory (lub grupy procesorów rdzeni) w lokalne pamięci Łączna przepustowość pamięć procesor takich systemów staje się wtedy skalowalna rośnie wraz z rosnącą liczbą procesorów 14
Pamięć odległa (zdalna) Systemy z pamięciami lokalnymi procesorów są systemami o niejednorodnym dostępie do pamięci W programach równoległych pojawia się kolejny szczebel hierarchii pamięci oprócz lokalnej pamięci głównej, pamięć główna odległa (remote memory) Dostęp do pamięci odległej można uzyskać, albo bezpośrednio jeśli system operacyjny i środowisko programowania i realizacji udostępnia taką możliwość, albo poprzez wymianę informacji z innym procesorem, dla którego pamięć jest pamięcią lokalną 15
Pamięć odległa (zdalna) W przypadku bezpośredniego dostępu do pamięci odległej (np. w rozszerzeniach standardu OpenMP dla klastrów) system może umożliwiać istnienie danych globalnych i ich (niejawnych) lokalnych kopii Dla zwiększenia wydajności procesory mogą wykonywać operacje (w tym zapis) na swoich lokalnych kopiach danych Pojawia się wtedy, podobnie jak w przypadku pamięci podręcznej, problem utrzymania zgodności pomiędzy lokalnymi kopiami i danymi globalnymi 16
Pamięć odległa (zdalna) Czas dostępu do pamięci odległej jest zawsze znacznie dłuższy od czasu dostępu do pamięci lokalnej (rzędu mikrosekund, a nie nanosekund) Należy projektować algorytmy i ich odwzorowanie na procesory w taki sposób, aby minimalizować liczbę odniesień do pamięci odległej Czas realizacji dostępu do pamięci odległej uwzględnia się przy analizie wydajności obliczeń równoległych jako czas komunikacji 17
Pamięć odległa (zdalna) W przypadku programowania w modelu przesyłania komunikatów każde odniesienie do pamięci jest odniesieniem lokalnym, każde odniesienie do pamięci odległej odbywa się w sposób jawny poprzez wymianę komunikatów ułatwia to szacowanie wydajności programów w fazach projektowania, analizy i optymalizacji 18
Wydajność pamięci 1 2 3 4 5 6 7 8 STREAM (GB/s) 5.57 10.71 8.53 11.03 9.25 8.55 7.03 8.46 mat_vec (sek.) 0.22 0.13 0.14 0.11 0.13 0.14 0.12 0.12 19
Tendencje Mało dużych rdzeni rozbudowane potoki wykonanie poza kolejnością wyrafinowane przewidywanie rozgałęzień wiele jednostek funkcjonalnych Dużo małych rdzeni prostsza budowa, krótsze potoki wykonanie w kolejności proste przewidywanie rozgałęzień mniej jednostek funkcjonalnych 20
ATI FireStream 21
NVIDIA Tesla 22
NVIDIA Fermi 23
Architektury hybrydowe 24