Wydajność systemów a organizacja pamięci

Transkrypt

Wydajność systemów a organizacja pamięci
Wydajność systemów a organizacja pamięci
Krzysztof Banaś, Obliczenia wysokiej wydajności.
1
Wydajność obliczeń



Dla wielu programów wydajność obliczeń można
traktować jako wydajność pobierania z pamięci i
przetwarzania przez procesor
W rzeczywistości często występują algorytmy
(programy), w których wydajność jest ograniczana
wyłącznie przez wydajność procesora lub wyłącznie
przez wydajność układu pobierania danych z pamięci
Ta ostatnia sytuacja jest w ostatnich latach coraz
powszechniejsza
Krzysztof Banaś, Obliczenia wysokiej wydajności.
2
„Memory wall”
Krzysztof Banaś, Obliczenia wysokiej wydajności.
3
Szacowanie wydajności pamięci

Jak szacować czas realizacji operacji pobierania z
pamięci (w algorytmach o wydajności ograniczanej
przez pamięć ten czas służy do określania
ostatecznej wydajności przy realizacji algorytmu):


tmem = liczba_dostępów * czas_dostępu
Czas dostępu do pojedynczej danej (pojedynczego
argumentu) jest często podawany jako parametr pamięci i
dla pamięci RAM wynosi ok. kilkudziesięciu ns
Krzysztof Banaś, Obliczenia wysokiej wydajności.
4
Szacowanie wydajności pamięci



Przykład oszacowania dla algorytmu mnożenia macierz razy
wektor (rozmiar macierzy nxn):
 liczba_dostępów - 2n 2
 czas_dostępu – 100ns
2
 t
=
200n
[ns]
mem
Dla porównania czas wykonania 2n2 operacji algorytmu w
przypadku uwzględnienia teoretycznych możliwości
czterodrożnego procesora o częstotliwości 2.5GHz
2
 t
=
0.2n
[ns]
proc
Pamięć spowalnia wykonanie zadania 1000 razy ?
Krzysztof Banaś, Obliczenia wysokiej wydajności.
5
Szacowanie wydajności pamięci


Obydwa czasy wykonania można wykorzystać do
obliczenia wydajności przy realizacji algorytmu:
 GFLOPS = liczba_operacji / czas_realizacji
 ograniczona przez CPU – 10 GFLOPS
 ograniczona przez pamięć – 0.01 GFLOPS!
Wydajność ograniczoną przez pamięć można obliczać z
wzoru stosującego ważny parametr charakteryzujący
algorytmy – spm liczba operacji na jedno pobranie danych:


GFLOPS = spm / czas_dostępu
W rzeczywistości czas dostępu musi być znacznie krótszy
niż przyjęty w przykładzie – projektanci dążą do tworzenia
systemów zrównoważonych
Krzysztof Banaś, Obliczenia wysokiej wydajności.
6
Pamięć podręczna


Przyczyna nr 1 skrócenia rzeczywistego czasu dostępu – pamięć podręczna
Przybliżone przykładowe rozmiary i czasy dostępu dla różnych rodzajów pamięci:






rejestry
podręczna (L1)
podręczna (L2­3)
główna
dyskowa
kilkaset B kilkanaście kB
kilka MB
kilka GB
kilkaset GB
< 1ns
ok. 1 ns
kilka ns
kilkadziesiąt ns
kilka ms


Optymalne wykorzystanie pamięci podręcznej ma kluczowe znaczenie dla wydajności programów.
Krzysztof Banaś, Obliczenia wysokiej wydajności.
7
Pamięć podręczna

Orientacyjne rozmiary pamięci różnych poziomów i
czasy dostępu (tym razem w liczbie taktów)
Krzysztof Banaś, Obliczenia wysokiej wydajności.
8
Pamięć podręczna
Działanie pamięci podręcznej:




procesor zgłasza chęć dostępu do komórki pamięci
sprawdzana jest odpowiadająca jej linia pamięci podręcznej (lub zbiór linii):
 trafienie (hit) – wartość jest udostępniana
 chybienie (miss) – przeładowywana jest zawartość całej linii pamięci odczyt lub zapis komórki z pamięci podręcznej
jeśli procesor dokonuje zapisu konieczna jest strategia utrzymywania spójności pamięci podręcznej (w stosunku do pamięci głównej) Krzysztof Banaś, Obliczenia wysokiej wydajności.
9
Pamięć podręczna
Organizacja pamięci podręcznej:


linie pamięci o pojemności kilku słów (np. 64B, 128B)
odwzorowanie obszarów (bloków) pamięci głównej w linie pamięci podręcznej



statyczne – bezpośrednie, direct mapped (każdy blok ma swoją linię)
dynamiczne:
 skojarzeniowe, fully associative (każdy blok może być odwzorowany w dowolną linię całej pamięci)
 sekcyjno­skojarzeniowe, set associative (każdy blok może być odwzorowany w dowolną linię z pewnej grupy)
architektura harvardzka: osobna pamięć podręczna dla danych, osobna dla kodu (dla unikania hazardu zasobów)
Krzysztof Banaś, Obliczenia wysokiej wydajności.
10
Pamięć podręczna
Krzysztof Banaś, Obliczenia wysokiej wydajności.
11
Pamięć podręczna
Działanie pamięci podręcznej:

strategie podmiany linii w dynamicznych pamięciach podręcznych:
 losowo
 FIFO – najdłużej przechowywana
 LRU (least recently used) – najdawniej użyta
 LFU (least frequently used) – najrzadziej używana
Krzysztof Banaś, Obliczenia wysokiej wydajności.
12
Pamięć podręczna
Strategia korzystania z
hierarchii pamięci w
procesorach Opteron


L2 do przechowywania
linijek usuniętych z L1
Odczyt z RAM z
pominięciem L2
Krzysztof Banaś, Obliczenia wysokiej wydajności.
13
Lokalność odniesień
Przydatność pamięci podręcznej zależy od stopnia lokalności odniesień do danych w programie


lokalność czasowa: dane raz użyte niedługo zostaną użyte ponownie (warto je zachować w szybszej pamięci)
lokalność przestrzenna: jeśli w programie użyto jakichś danych to za chwile zostaną użyte dane sąsiadujące w pamięci (warto pobierać do pamięci podręcznej całe bloki)
Miarą lokalności odniesień w trakcie wykonywania programu jest współczynnik trafień (hit ratio) – proporcja trafień do chybień Krzysztof Banaś, Obliczenia wysokiej wydajności.
14
Lokalność odniesień



Zastosowanie pamięci podręcznej przynosi zazwyczaj wzrost wydajności, ponieważ wiele programów ma w sposób naturalny wysoki stopień lokalności odniesień (w praktyce stosunek trafień do chybień sięga nawet powyżej 90%)
Chcąc zwiększać wydajność programów dzięki optymalnemu wykorzystaniu pamięci podręcznej należy maksymalizować stopień lokalności odniesień w kodzie (grupować odniesienia do tych samych i sąsiadujących danych w jedno miejsce) Ciekawą alternatywą są tzw. cache oblivious algorithms
Krzysztof Banaś, Obliczenia wysokiej wydajności.
15
Czas dostępu do pamięci
Obliczenie średniego czasu dostępu do danej w pamięci dla konkretnego programu
tc – czas dostępu do pamięci podręcznej (czas obsługi trafienia)
tm – czas dostępu do pamięci głównej
h – współczynnik trafień w pamieć podręczną
tav­ średni czas dostępu do danej dla programu
tav = h tc + (1­h) tm Wydajność: spm / tav Czas dostępu może być wyrażany w liczbie taktów zegara, należy go wtedy odpowiednio przeliczyć.
Krzysztof Banaś, Obliczenia wysokiej wydajności.
16
Czas dostępu do pamięci
Dla pamięci podręcznej wielopoziomowej można stosować wzór:
tci – czas dostępu do pamięci podręcznej (hit time) poziomu i
tmi­ czas obsługi chybienia w pamięci podręcznej poziomu i (m.in. podmiany linii) – miss time
mi – współczynnik chybień w pamięć podręczną poziomu i
tav­ średni czas dostępu do danej dla programu
tav = tc1 + m1 * ( tc2 + m2 * ( tc3 + m3 * tm3 )
Powyższy wzór zakłada 3­poziomową pamięć podręczną o identycznym sposobie działania dla każdego poziomu (co jak wiadomo nie zawsze ma miejsce, np. przypadek victim cache)
Krzysztof Banaś, Obliczenia wysokiej wydajności.
17
Czas dostępu do pamięci
Przykład (mnożenie macierz­wektor): • tc=4ns, tm=100ns
• h=0.875 ­> tav = 16ns

spm= 2n2/2n2 = 1 ­> wydajność 0.0625 GFLOPS
• wynik wciąż silnie zależy od bardzo długiego czasu dostępu do pamięci głównej
• czas dostępu do pamięci nie uwzględnia technik ukrywania opóźnienia (latency hiding – np. wielobankowość pamięci) i jest z tego względu pesymistyczny
Krzysztof Banaś, Obliczenia wysokiej wydajności.
18
Rzeczywisty współczynnik trafień

Współczynnik trafień w programach SPEC_int
Krzysztof Banaś, Obliczenia wysokiej wydajności.
19
Rzeczywisty czas dostępu do pamięci
Krzysztof Banaś, Obliczenia wysokiej wydajności.
20
Optymalizacja wydajności pamięci podręcznej

Parametry wydajności pamięci podręcznej:





czas obsługi trafienia (hit time)
współczynnik trafień (hit rate) lub chybień (miss rate)
czas obsługi chybienia (miss penalty)
przepustowość pamięci podręcznej (dla sekwencji operacji)
– dostęp do sekwencji 1000 wartości może być znacznie
szybszy niż 1000 odrębnych dostępów (dzięki np. pamięci
podręcznej: potokowej, wielobankowej, nieblokującej itp.)
Do dyspozycji programisty:


maksymalizacja współczynnika trafień
redukcja wpływu czasu obsługi chybienia przez pobieranie z
wyprzedzeniem (software prefetching)
Krzysztof Banaś, Obliczenia wysokiej wydajności.
21
Przydatne wzory

Jeśli czas wykonania w całości przeznaczony na
dostęp do pamięci (obliczenia „w tle”):




Tw = La x tav
tav - obliczane na podstawie czasów dostępu do różnych
poziomów hierarchii pamięci
 powinno uwzględniać sposób dostępu (access pattern)
 w praktyce uzyskiwane eksperymentalnie
ta = rozmiar_danych / przepustowość_pamięci
w takim wypadku wydajność obliczana z wzoru
 L / T
= Lo / ( La x tav ) = spm x przepustowość_pamięci
o
w

ważny parametr charakteryzujący algorytmy – spm
liczba operacji na jedno pobranie danych
Krzysztof Banaś, Obliczenia wysokiej wydajności.
22

Podobne dokumenty