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