Wydajność systemów a organizacja pamięci, czyli dlaczego jednak
Transkrypt
Wydajność systemów a organizacja pamięci, czyli dlaczego jednak
Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Organizacja pamięci Organizacja pamięci współczesnych systemów komputerowych • pojedynczy procesor – wielopoziomowa pamięć podręczna – pamięć wirtualna • komputery wieloprocesorowe – pamięć wspólna (UMA, NUMA, ccNUMA) – pamięć rozproszona Krzysztof Banaś, Obliczenia wysokiej wydajności. 2 Wydajność pamięci Parametrami pamięci wykorzystywanymi w oszacowaniach mogą być: czas dostępu do pamięci – czas pobrania pojedynczej danej (w rzeczywistości pobrane zostaje do pamięci podręcznej więcej danych – ten efekt daje się uwzględnić poprzez współczynnik trafień pamięci podręcznej, trudniej uwzględnić wielobankowość, wielokanałowość pamięci) teoretyczna przepustowość (która? wydajność magistrali (chipsetu), pamięci, sterownika pamięci?) przepustowość z testów układu pamięćprocesor (uwzględnia pobieranie z pamięci z optymalnym wykorzystaniem pamięci podręcznej) Krzysztof Banaś, Obliczenia wysokiej wydajności. 3 Parametrami podawanymi przez producentów są: wydajność układu pamięci procesora (kiedyś w GB/s, obecnie w GT/s) wydajność chipsetu wydajność pamięci: częstotliwość i szerokość łącza: 1333 GHz, 64B wydajność: np. PC6400 Przy wydajności pamięci postaci Wmem [liczba_dostępów/s] wydajność programu wynosi: GFLOPS = spm* Wmem Krzysztof Banaś, Obliczenia wysokiej wydajności. 4 Wydajność pamięci Przykład: obliczenie iloczynu macierzwektor, rozmiar macierzy nxn, stosunek liczby operacji do optymalnej liczby odniesień, spm = 1 wydajność pamięci z testów 8GB/s (109 dostępów = liczb podwójnej precyzji na sekundę) – założenie: każda liczba pobrana z pamięci z taką właśnie szybkością, każda liczba z algorytmu pobrana tylko raz, nie pobierane żadne inne liczby maksymalna wydajność dla optymalnego wykorzystania pamięci – 1GFLOPS Krzysztof Banaś, Obliczenia wysokiej wydajności. 5 Wydajność pamięci Przykład cd.: w algorytmach nieoptymalnych może dojść do niepotrzebnego pobierania danych, ze względu na nieuwzględnienie mechanizmu pamięci podręcznej wersja_2 – każdy element macierzy pobrany 8 razy (linia pamięci podręcznej 64B=8 liczb, pobranie każdej liczby powoduje przeładowanie pamięci podręcznej, a więc pobranie jednej potrzebnej i 7 niepotrzebnych liczb, które nie zostaną wykorzystane) spm = 0.125 maksymalna wydajność 0.125GFLOPS Krzysztof Banaś, Obliczenia wysokiej wydajności. 6 Wydajność pamięci uwagi Dla wszystkich poziomów pamięci obowiązuje reguła: linie pamięci podręcznej, liczby banków pamięci RAM są zazwyczaj potęgami 2 aby uniknąć sporów o pamięć (memory contention) poprzez odwzorowanie kolejno pobieranych danych w tę samą linijkę pamięci podręcznej, ten sam bank pamięci itd. należy unikać wymiarów tablic będących potęgami 2 Krzysztof Banaś, Obliczenia wysokiej wydajności. 7 Pamięć wirtualna Pamięć wirtualna – poszerzenie zakresu adresowania pamięci w stosunku do pamięci głównej (fizycznej) dokonywane przez system operacyjny Pamięć główna zawiera tylko fragment przestrzeni adresowej Pamięć główna dzielona jest na ramki, w których zawarte są strony pamięci wirtualnej Jeśli żądana przez procesor strona nie znajduje się w żadnej z ramek pamięci głównej następuje błąd strony (page fault) i podmiana stron (jak podmiana linii w pamięci podręcznej – podobne strategie podmiany) Krzysztof Banaś, Obliczenia wysokiej wydajności. 8 Pamięć wirtualna Mechanizm tłumaczenia adresów z wirtualnych na rzeczywiste (uwzględniające stronicowanie pamięci) i sprawdzania czy strony znajdują się w pamięci głównej opiera się na wykorzystaniu tablicy stron Tablica stron może być bardzo duża, a dostęp do niej powinien być szybki – do jej przechowywania stosuje się całą hierarchię pamięci, łącznie ze specjalną pamięcią podręczną zwaną buforem translacji adresów (translation lookaside buffer TLB) Krzysztof Banaś, Obliczenia wysokiej wydajności. 9 Pamięć wirtualna W momencie kiedy procesor tłumaczy adres wirtualny na rzeczywisty sprawdza najpierw czy dany wpis znajduje się w pamięci TLB Jeśli nie, następuje obsługa chybienia pamięci TLB Programy zajmujące duże obszary pamięci mogą nie mieścić adresów wszystkich swoich stron w pamięci TLB Aby przeciwdziałać znacznemu spadkowi wydajności (do kilkudziesięciu razy!) w takich przypadkach, można próbować zwiększyć rozmiar pojedynczych stron związanych z programem (współczesne systemy operacyjne zazwyczaj Krzysztof Banaś, Obliczenia wysokiej wydajności. 10 Pamięć wirtualna Procedura obsługi dostępu do pamięci w przypadku błędu strony jest złożona i czasochłonna W programach wysokiej wydajności nie powinno się dopuszczać do błędów stron (poza początkowymi, gdy program i dane po raz pierwszy ładowane są do pamięci) Nie można powodować szamotania (thrashing) – ciągłego przeładowywania stron mogącego zużywać ponad 90% czasu CPU Krzysztof Banaś, Obliczenia wysokiej wydajności. 11 Przykład Jak wiele czasu może zająć pobranie jednej liczby z pamięci: translacja adresu z TLB, liczba w L1 – kilka taktów zegara translacja adresu: miejsce w tablicy stron poza TLB, poza pamięcią RAM – na dysku, strona poza pamięcią RAM – na dysku, liczba poza pamięcią podręczną L1, poza pamięcią podręczną L2, w pamięci RAM (przed chwilą pobrana z dysku) – kilka milionów taktów zegara Różnica w czasie dostępu: kilka rzędów wielkości Krzysztof Banaś, Obliczenia wysokiej wydajności. 12 Opteron Krzysztof Banaś, Obliczenia wysokiej wydajności. 13 Wydajność pamięci podsumowanie Analizując teoretyczną wydajność danego układu procesor pamięć możemy uzyskać kilka charakterystyk, np.: maksymalną wydajność przetwarzania rozkazów (MIPS – jako iloczyn drożności procesora i częstości taktowania) maksymalną wydajność przetwarzania rozkazów zmiennoprzecinkowych (jak wyżej, ale tylko w odniesieniu do operacji zmiennoprzecinkowych – MFLOPS) maksymalną przepustowość układu pamięćprocesor (wynikającą z częstości taktowania i drożności magistrali oraz własności pamięci – MB/s) opóźnienie w dostępie do pamięci (czas dostępu) Krzysztof Banaś, Obliczenia wysokiej wydajności. 14 Wydajność pamięci podsumowanie Podobnie jak złożoność funkcjonowania procesora uniemożliwia określenie jego rzeczywistej wydajności w konkretnym programie, tak złożoność pamięci uniemożliwia szczegółowe szacowanie jej wydajności Dla niektórych algorytmów można posługiwać się pewnymi uproszczonymi modelami i szacować wydajność dla tych modeli, uwzględniając jednocześnie jak wydajność rzeczywista ma się do wydajności modelu Krzysztof Banaś, Obliczenia wysokiej wydajności. 15 Wydajność pamięci podsumowanie Podstawowym parametrem charakteryzującym konkretny program pod względem wykorzystania pamięci jest liczba odniesień do pamięci w programie Często stosowanym wskaźnikiem intensywności korzystania z pamięci jest stosunek liczby operacji na danych do liczby odniesień do pamięci koniecznych do realizacji operacji Dzięki temu wskaźnikowi i parametrom pamięci można obliczyć maksymalną wydajność jaką układ procesor pamięć może uzyskać w danych obliczeniach Krzysztof Banaś, Obliczenia wysokiej wydajności. 16 Wydajność pamięci podsumowanie Rzeczywista wydajność obliczeń jest zawsze mniejsza od optymistycznych oszacowań uzyskanych z analizy działania procesora i układu pamięć procesor Zawsze warto dokonać oszacowania jaka jest każda z tych teoretycznych wydajności dla konkretnego systemu i uzyskać pomiar wydajności rzeczywistej Rzeczywista wydajność na poziomie kilkudziesięciu procent minimum z wydajności teoretycznych oznacza prawidłową implementacje dla danego systemu Krzysztof Banaś, Obliczenia wysokiej wydajności. 17