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, cc­NUMA)
– 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 macierz­wektor, 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

Podobne dokumenty