2 - Katedra Informatyki > Home

Transkrypt

2 - Katedra Informatyki > Home
Architektura systemów komputerowych
Pamięć cache, c.d.
Cezary Bolek
Katedra Informatyki
Plan wykładu
Strategie zapisu
Bufor zapisu
Strategie wymiany bloków w pamięci cache
Współczynniki trafień i chybień
Wstrzymania przez pamięć
Poprawa wydajności pamięci podręcznej
Wielopoziomowa pamięć cache
Strategie współpracy poziomów
Architektura systemów komputerowych
Cezary Bolek
2
Strategie zapisu
Zapis przezroczysty (write-through)
Zapis do pamięci cache i pamięci niŜszego poziomu
Bit kontrolny cache: niezbędny tylko bit waŜności (valid)
W pamięci zawsze aktualne dane, zachowanie spójności danych
Zawsze moŜna zastąpić dane przy odczycie bloku pamięci
Zapis zwrotny (write-back)
Zapis tylko do pamięci cache
Bity kontrolne cache: bity waŜności (valid) oraz modyfikacji (modified)
Modyfikowane dane w cache zapisywane do pamięci (write-back), gdy blok jest
zastępowany innym
Wielokrotny zapis bloku w pamięci cache wymaga tylko jednego zapisu do pamięci
Większa wydajność niŜ dla zapisu przezroczystego
Bardziej złoŜona implementacja niŜ dla zapisu przezroczystego
Architektura systemów komputerowych
Cezary Bolek
3
Strategie zapisu przy chybieniu
Z alokacją
Alokacja nowego bloku w pamięci cache
Poprzedni blok z pamięci cache zapisywany do pamięci
Bez alokacji
Zapis danych tylko do pamięci niŜszego poziomu
Pamięć cache nie jest modyfikowana
Dla zapisu zwrotnego (write-back) stosuje się najczęściej
zapis z alokacją
Ale takŜe zapis bez alokacji
Dla zapisu przezroczystego (write-through) praktycznie
tylko bez alokacji
Architektura systemów komputerowych
Cezary Bolek
4
Porównanie strategii odczytu i zapisu
Zapis przezroczysty zasadniczo wolniejszy od zwrotnego
Przy zapisie przezroczystym dane w pamięci zawsze
aktualne
Typ zapisu
Trafienie
odczytu
Przeźroczysty
P←C
Zwrotny bez
alokacji
P←C
Zwrotny z
alokacją
P←C
Chybienie
odczytu
Trafienie
zapisu
C←M
P→C
P←C
P→M
Chybienie
zapisu
P→M
C→M
C←M
P→C
P→M
P←C
Architektura systemów komputerowych
C→M
C←M
C→M
P→C
P←C
C←M
P→C
Cezary Bolek
5
Bufor zapisu
Buforowanie operacji zapisu z CPU do pamięci
Pozwala na zapis bez wstrzymywania procesora aŜ do momentu
zapełnienia bufora
Write-through: wszystkie zapisy bezpośrednio do pamięci
Bufor zapisu eliminuje potrzebę wstrzymywania procesora przy kolejnych
zapisach do pamięci
Write-back: modyfikowane bloki zapisywane tylko przy zamianie
Bufor zapisu uŜywany tylko dla zamienianych blokach
W buforze zapisywany adres i modyfikowane dane
Z punktu widzenia CPU, zapis jest zakończony
CPU kontynuuje działanie, podczas gdy bufor przygotowuje dane do zapisu
do pamięci
Gdy bufor jest pełny, CPU jest wstrzymywane aŜ do momentu
pojawienia się miejsca w buforze
Architektura systemów komputerowych
Cezary Bolek
6
Chybienie - czynności
Cache wysyła sygnał chybienia w celu wstrzymania procesora
Decyzja, który blok zaalokować/zamienić
Tylko jedna moŜliwość w przypadku cache o mapowaniu bezpośrednim
Wiele moŜliwości dla mapowania skojarzeniowego (sekcyjnego i pełnego)
Transfer bloku z pamięci niŜszego poziomu do pamięci cache
Ustawienie bitu waŜności (valid) oraz polu znacznika (tag) ze starszych
bitów adresu
Dla strategii write-back, gdy blok oznaczony jest jako zmodyfikowany,
zapisywany jest do pamięci niŜszego poziomu
Zmodyfikowany blok wysyłany jest do bufora zapisu
Gdy blok nie jest oznaczony jak zmodyfikowany (dla write-back i
zawsze dla write-through) usuwany jest z pamięci
Restart instrukcji, która spowodowała chybienie
Kara za chybienie: liczba cykli, które naleŜy wykonać przy chybieniu
Architektura systemów komputerowych
Cezary Bolek
7
Strategie wymiany bloków w pamięci cache
Dla mapowania bezpośredniego – brak alternatyw
Dla mapowania sekcyjno-skojarzeniowego m-droŜnego,
m moŜliwych bloków do wyboru
Wymiana losowa
Bloki wybierane (pseudo)losowo
Jeden licznik dla wszystkich sekcji (liczący od 0 do m-1)
– zwiększany przy kaŜdym cyklu
Przy chybieniu wymieniany blok wskazywany przez licznik
Wymiana na zasadzie kolejki FIFO (First In First Out)
Wymiana najstarszego bloku (z punktu widzenia wymiany)
Jeden licznik na sekcję (liczący od 0 do m-1) – zwiększany przy
kaŜdym chybieniu w sekcji
Licznik wskazuje najstarszy blok
Architektura systemów komputerowych
Cezary Bolek
8
Strategie wymiany bloków
Najdawniej uŜywany – Least Recently Used (LRU)
Wymiana bloku, który nie był uŜywany najdłuŜej
Uporządkowanie bloków w sekcji w kolejności najdawniejnajwcześniej uŜyty
Uaktualnienie uporządkowania po kaŜdym trafieniu
Dla m bloków w sekcji w sekcji istnieje m! moŜliwych permutacji
Czysty LRU jest bardzo (nadmiernie) kosztowny dla m>4
m=2, tylko 2 permutacje (wystarczy jeden bit do zapamiętania kolej.)
m=4, 24 permutacje
W praktyce stosuje się metody przybliŜone
Dla duŜych m>4
Wymiana losowa jest niemalŜe tak samo efektywna
Architektura systemów komputerowych
Cezary Bolek
9
Porównanie strategii losowej, FIFO i LRU
Liczba chybień na 1000 instrukcji
10 testów SPEC2000, procesor Alpha
Rozmiar bloku – 64 bajty
2-droŜne
Rozmiar
cache
LRU
4-droŜne
Rand FIFO
LRU
8-droŜne
Rand FIFO
LRU
Rand FIFO
16 KB
114.1 117.3 115.5
111.7 115.1 113.3
109.0 111.8 110.4
64 KB
103.4 104.3 103.9
102.4 102.3 103.1
99.7
100.5 100.3
92.2
92.1
92.1
92.1
256 KB
92.1
92.5
92.1
92.5
92.5
Dla małego cache strategie LRU i FFIO wyraźnie lepsze od losowej
Dla duŜego, róŜnice nieznaczne
LRU jest kosztowne dla mapowań wielodroŜnych
Losowa strategia – najłatwiejsza do zaimplementowania
Architektura systemów komputerowych
Cezary Bolek
10
Współczynniki trafień i chybień
Współczynnik trafień (Hit Rate)
= Trafienia / (Trafienia + Chybienia)
Współczynnik chybień (Miss Rate) = Chybienia / (Trafienia + Chybienia)
Współczynnik chybień I-Cache = współczynnik chybień dla pamięci
cache instrukcji
Współczynnik chybień D-Cache = współczynnik chybień dla pamięci
cache danych
Przykład:
Na 1000 pobranych instrukcji, 150 było chybionych w I-Cache
25% wszystkich instrukcji odwołuje się do pamięci
50 chybionych w D-Cache
Jakie są współczynniki chybień I-cache oraz D-cache?
Współczynnik chybień I-Cache = 150 / 1000 = 15%
Współczynnik chybień D-Cache = 50 / (25% × 1000) = 50 / 250 = 20%
Architektura systemów komputerowych
Cezary Bolek
11
Cykle wstrzymania przez pamięć
Procesor musi być wstrzymany przy chybieniu cache
Podczas odczytu instrukcji z pamięci cache instrukcji (I-cache)
Podczas ładowania/zapisu danych do pamięci cache danych (D-cache)
Cykle wstrzymania przez pamięć = Chybienia × Kara za chybienie
Kara za chybienie: liczba cykli, które naleŜy wykonać przy chybieniu
Chybienia = Chybienia I-Cache + Chybienia D-Cache
Chybienia I-Cache = Liczba instrukcji × Współczynnik chybień I-Cache
Chybienia D-Cache = Liczba instr. LS × Współczynnik chybień D-Cache
Liczba instr. LS (Load & Store) = Liczba instrukcji × Częstość LS
Chybienia cache najczęściej wyraŜa się w odniesieniu do tysiąca
instrukcji
Architektura systemów komputerowych
Cezary Bolek
12
Cykle wstrzymania przez pamięć na instrukcję
Cykle wstrzymania przez pamięć na instrukcję =
Liczba chybień na instrukcję × Kara za chybienie
ZałoŜenie: Kara za chybienie taka sama dla I-cache i D-cache
ZałoŜenie: Kara za chybienie taka sama dla odczytu i zapisu
Liczba chybień na instrukcję =
Współczynnik chybień I-Cache +
Częstość LS × Współczynnik chybień D-Cache
Dlatego:
Cykle wstrzymania przez pamięć na instrukcję =
Współczynnik chybień I-Cache × Kara za chybienie +
Częstość LS × Współczynnik chybień D-Cache × Kara za chybienie
Architektura systemów komputerowych
Cezary Bolek
13
Cykle wstrzymania przez pamięć - przykład
ZałoŜenia
Liczba wykonanych instrukcji = 106
30% instrukcji stanowią odwołania do pamięci (load, store)
Współczynnik chybień D-cache wynosi 5%,
współczynnik chybień I-cache wynosi 1%
Kara za chybienie - 100 cykli dla D-Cache i I-Cache
Wyznaczyć liczbę chybień na instrukcję oraz liczbę cykli wstrzymania
powodowanych przez pamięć
Liczba chybień na instrukcję dla I-Cache and D-Cache
1% + 30% × 5% = 0,025 chybień na instrukcję
Czyli 25 chybień na kaŜde 1000 instrukcji
Cykle wstrzymania powodowane przez pamięć
0,025 × 100 (kara za chybienie) = 2,5 cykli wstrzymania na instrukcję
Łączna liczba cykli wstrzymania = 106 × 2.5 = 2,500,000
Architektura systemów komputerowych
Cezary Bolek
14
Czas wstrzymania CPU przez pamięć
Czas CPU = Liczba instrukcji × CPIWstrzPam × Cykl zegara
CPIWstrzPam = CPIIdealnyCache +
Cykle wstrzymania przez pamięć na instrukcję
CPIIdealnyCache = CPI dla idealnego cache (brak chybień)
CPIWstrzPam
= CPI przy wstrzymywaniu przez pamięć
Wstrzymywanie przez pamięć powoduje wzrost CPI
Architektura systemów komputerowych
Cezary Bolek
15
CPI w przypadku wstrzymywania przez pamięć
ZałoŜenia:
CPI = 1,5 (bez wstrzymań przez pamięć)
Współczynnik chybień: 2% dla instrukcji i 5% dla danych
20% instrukcji to instrukcje zapisu/odczytu
Kara za chybienie: 100 cykli zegara dla I-cache i D-cache
Jaki wpływ na CPI ma pamięć główna?
dane
Instrukcje
Rozwiązanie:
Liczba wstrz. przez pam. = 0,02×100 + 0,2×0,05×100 = 3
CPIWstrzPam = 1,5 + 3 = 4,5 cykli na instrukcję
CPIWstrzPam / CPIIdealnyCache = 4,5 / 1,5 = 3
Procesor jest 3 razy wolniejszy z powodu pamięci.
CPIBezCache = 1,5 + (1 + 0,2) × 100 = 121,5 (duŜo gorzej !)
Architektura systemów komputerowych
Cezary Bolek
16
Średni czas odwołania do danych w pamięci
Average Memory Access Time (AMAT)
AMAT = Czas wyszukiwania w cache +
Współczynnik chybień × Kara za chybienie
Średni czas dostępu do cache w przypadku trafień i chybień
Przykład: Jaki jest średni czas dla cache przy załoŜeniu:
Czas dostępu przy trafieniu - 1 cykl = 2 ns
Kara za chybienie: 60 cykli zegarowych
Współczynnik chybień: 0,05
Rozwiązanie:
AMAT = 1 + 0,05 × 60 = 6 cykle = 8 ns
Bez pamięci cache, AMAT równy jest karze za chybienie = 60 cykli
= 120 ns
Architektura systemów komputerowych
Cezary Bolek
17
Poprawa wydajności pamięci podręcznej
Średni czas odwołania do danych w pamięci
(Average Memory Access Time)
AMAT = Czas wyszukiwania w cache +
Współczynnik chybień × Kara za chybienie
UŜywany jako podstawa dla optymalizacji
Redukcja Czasu wyszukiwania w cache
Mały i prosty cache
Redukcja Współczynnika chybień
Większy cache, zwiększenie droŜności w mapowaniu
skojarzeniowym, większy rozmiar bloku
Redukcja Kary za chybienie
Wielopoziomowy cache
Architektura systemów komputerowych
Cezary Bolek
18
Mały i prosty cache
Czas wyszukiwania w pamięci cache jest niezwykle istotny:
wpływa na długość cyklu zegara
Szybki zegar moŜe być zastosowany gdy pamięć poziomu 1 ma
prostą konstrukcję i jest mała
Mały cache pozwala na szybkie indeksowanie i
wyszukiwanie danych
Indeksowanie danych w cache jest czasochłonne
Wyszukiwanie znaczników (tagów) zwiększa czas wyszukiwania w
cache
Mapowanie bezpośrednie pozwala na uniknięcie
wyszukiwania znaczników
Mapowanie skojarzeniowe wymaga dodatkowo zastosowanie czyli
wzrost czasu wyszukiwania
Architektura systemów komputerowych
Cezary Bolek
19
Przyczyny chybień pamięci cache
Chybienia nieuniknione: po uruchomieniu programu w
cache nie ma Ŝadnego bloku
Zwane takŜe: chybienia zimnego startu
Występuje zawsze, nawet przy nieskończonej pamięci cache
Chybienia z braku miejsca: pamięć cache ma skończoną
pojemność
Bloki muszą być nieustannie wymieniane
Chybienia, które występowałyby w przypadku idealnego pełnego
mapowania skojarzeniowego
Konflikt miejsca: powodowane przez nieidealną realizację
kojarzeń bloków
Ograniczona liczba bloków przypadających na sekcję
Nieoptymalny algorytm strategii wymiany bloków
Architektura systemów komputerowych
Cezary Bolek
20
Wpływ wielkości i konstrukcji cache na chybienia
Chybienia nieuniknione (powodowane inicjowaniem)
są niezaleŜne od rozmiaru cache
Współczynnik (bardzo niewielki udział dla długo działających programów)
chybień
14%
Liczba chybień z braku miejsca maleje wraz
ze wzrostem rozmiaru cache
1-droŜna
12%
2- droŜna
10%
4-droŜna
8%
8-droŜna
6%
Liczba chybień związanych z
kojarzeniem maleje ze wzrostem
droŜności (liczby bloków na sekcję)
Chybienia z braku miejsca
4%
Chybienia nieuniknione
2%
0
1
4
2
8
Architektura systemów komputerowych
16
32
64
128 KB
Strategia
wymiany bloków
- LRU
Cezary Bolek
21
Wpływ rozmiaru bloku na liczbę chybienia
Najprostszym sposobem zmniejszenia współczynnika
chybień jest zwiększenie rozmiaru bloku
Współczynnik chybień
Jednak, powoduje to wzrost liczby chybień związanych z
kojarzeniem bloków dla małych cache
25%
Wzrost związana z kojarzeniem
20%
1K
15%
4K
10%
16K
64-bajtowe bloki
powszechnie
stosuje się w
cache poziomu 1
64K
5%
256K
128-bajtowe
bloki w cache
poziomu 2
0%
16
32
64
Architektura systemów komputerowych
128
256 Rozmiar bloku (bajty)
Cezary Bolek
22
Wielopoziomowa struktura pamięci cache
Pamięć cache najwyŜszego poziomu powinna być niezbyt duŜa
Aby zapewnić szybkość (procesora) zegara
Dodanie kolejnego poziomu cache
Zmniejsza czas dostępu do pamięci
I-Cache
D-Cache
Połączony Cache L2
Zmniejsza obciąŜenie magistrali pamięci
Main Memory
Lokalny współczynnik chybień
Liczba chybień pamięci cache / Liczba odwołań do danej pamięci cache
Współczynnik chybieńL1 dla L1 cache,
Współczynnik chybieńL2 dla L2 cache
Globalny współczynnik chybień
Liczba chybień pamięci cache / Liczba odwołań do pamięci
wygenerowanych przez CPU
Współczynnik chybieńL1 dla L1 cache,
Współczynnik chybieńL1 × Współczynnik chybieńL2 dla L2 cache
Architektura systemów komputerowych
Cezary Bolek
23
Pamięć wielopoziomowa - strategie
KaŜdy obiekt z warstwy wyŜszej jest takŜe obecny w
warstwie niŜszej - Inclusive cache
Pojemność pamięci określa rozmiar pamięci największej
CPU
L1
cache
L2
cache
Memory
Obiekt jest albo w warstwie wyŜszej albo w niŜszej Exclusive cache
Pojemność pamięci określa suma poszczególnych pamięci
CPU
Architektura systemów komputerowych
Cezary Bolek
L1
cache
L2
cache
Memory
24
Pamięć wielopoziomowa - strategie
Inclusive cache
Dane w cache L1 jest zawsze powielana w L2 cache L2
Chybienie w L1 i trafienie w L2 powoduje skopiowanie bloku danych
z L2 do L1
Chybienie w L1 i L2 powoduje umieszczenie bloku danych w L1 i L2
Zapis do pamięci powoduje zapis bloku do L1 i L2
Najczęściej, pomiędzy L1 i L2 stosowana jest strategia zapisu
przezroczystego (write-through)
Najczęściej, pomiędzy L2 i główną pamięcią stosowana jest
strategia zapisu zwrotnego (write-back)
Aby zredukować obciąŜenie (ruch) szyny danych
Zamiana bloku w L2 musi zostać przepropagowana do L2
Architektura systemów komputerowych
Cezary Bolek
25
Pamięć wielopoziomowa - strategie
Exclusive cache
Dane z L1 nigdy nie są umieszczane w L2 – aby nie marnować
miejsca
Chybienie w L1 i trafienie w L2 powoduje wymianę bloków
Chybienie w L1 i L2 powoduje umieszczenie bloku tylko w L1
Blok wymieniany w L1 umieszczany jest w L2
Przykład: AMD Athlon
Rozmiary bloków w cache L1 i L2
Zastosowanie większego rozmiaru bloku w L2 pozwala zwiększyć
wydajność
Jednak architektura z blokami o róŜnych rozmiarach jest trudniejsza
do zaimplementowania
Przykład: Pentium 4, 64-bajtowe bloki 2 L1 i 128-bajtowe w L2
Architektura systemów komputerowych
Cezary Bolek
26
Koniec
Architektura systemów komputerowych
Cezary Bolek
2
7

Podobne dokumenty