Architektura systemów komputerowych Pamięć, c.d. Cezary Bolek Katedra Informatyki Plan wykładu Strategie zapisu Bufor zapisu Strategie wymiany bloków w pamięci Współczynniki trafień i chybień Wstrzymania przez pamięć Poprawa wydajności pamięci podręcznej Wielopoziomowa pamięć Strategie współpracy poziomów Architektura systemów komputerowych Cezary Bolek 2 Strategie zapisu Zapis przezroczysty (write-through) Zapis do pamięci i pamięci niŝszego poziomu Bit kontrolny : 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 Bity kontrolne : bity waŝności (valid) oraz modyfikacji (modified) Modyfikowane dane w zapisywane do pamięci (write-back), gdy blok jest zastępowany innym Wielokrotny zapis bloku w pamięci 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 Poprzedni blok z pamięci zapisywany do pamięci Bez alokacji Zapis danych tylko do pamięci niŝszego poziomu Pamięć 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 Chybienie odczytu Trafienie zapisu Chybienie zapisu Przeźroczysty C M P C P M P M Zwrotny bez alokacji C M C M P C P M Zwrotny z alokacją C M C M P C C M C M P C Architektura systemów komputerowych 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 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 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 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 4-droŜne 8-droŜne Rozmiar LRU Rand FIFO LRU 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 256 KB 92.2 92.1 92.5 92.1 92.1 92.5 92.1 92.1 92.5 Dla małego 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 instrukcji Współczynnik chybień D-Cache = współczynnik chybień dla pamięci 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- oraz D-? 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 Podczas odczytu instrukcji z pamięci instrukcji (I-) Podczas ładowania/zapisu danych do pamięci danych (D-) 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 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- i D- 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 = 10 6 30% instrukcji stanowią odwołania do pamięci (load, store) Współczynnik chybień D- wynosi 5%, współczynnik chybień I- 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 = 10 6 2.5 = 2,500,000 Architektura systemów komputerowych Cezary Bolek 14 Czas wstrzymania CPU przez pamięć Czas CPU = Liczba instrukcji CPI WstrzPam Cykl zegara CPI WstrzPam = CPI IdealnyCache + Cykle wstrzymania przez pamięć na instrukcję CPI IdealnyCache CPI WstrzPam = CPI dla idealnego (brak chybień) = 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- i D- Jaki wpływ na CPI ma pamięć główna? Rozwiązanie: Instrukcje dane Liczba wstrz. przez pam. = 0,02 100 + 0,2 0,05 100 = 3 CPI WstrzPam = 1,5 + 3 = 4,5 cykli na instrukcję CPI WstrzPam / CPI IdealnyCache = 4,5 / 1,5 = 3 Procesor jest 3 razy wolniejszy z powodu pamięci. CPI BezCache = 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 + Współczynnik chybień Kara za chybienie Średni czas dostępu do w przypadku trafień i chybień Przykład: Jaki jest średni czas dla 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, 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 + Współczynnik chybień Kara za chybienie UŜywany jako podstawa dla optymalizacji Redukcja Czasu wyszukiwania w Mały i prosty Redukcja Współczynnika chybień Większy, zwiększenie droŝności w mapowaniu skojarzeniowym, większy rozmiar bloku Redukcja Kary za chybienie Wielopoziomowy Architektura systemów komputerowych Cezary Bolek 18
Mały i prosty Czas wyszukiwania w pamięci 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 pozwala na szybkie indeksowanie i wyszukiwanie danych Indeksowanie danych w jest czasochłonne Wyszukiwanie znaczników (tagów) zwiększa czas wyszukiwania w 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 Chybienia nieuniknione: po uruchomieniu programu w nie ma Ŝadnego bloku Zwane takŝe: chybienia zimnego startu Występuje zawsze, nawet przy nieskończonej pamięci Chybienia z braku miejsca: pamięć 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 na chybienia Współczynnik chybień 14% 12% 10% 8% 6% 4% 2% Chybienia nieuniknione (powodowane inicjowaniem) są niezaleŝne od rozmiaru (bardzo niewielki udział dla długo działających programów) 1-droŜna 2- droŝna 4-droŜna Liczba chybień z braku miejsca maleje wraz ze wzrostem rozmiaru 8-droŜna Liczba chybień związanych z kojarzeniem maleje ze wzrostem droŝności (liczby bloków na sekcję) Chybienia z braku miejsca Chybienia nieuniknione 0 1 2 4 8 16 32 64 128 KB Strategia wymiany bloków - LRU Architektura systemów komputerowych Cezary Bolek 21
Wpływ rozmiaru bloku na liczbę chybienia Najprostszym sposobem zmniejszenia współczynnika chybień jest zwiększenie rozmiaru bloku Jednak, powoduje to wzrost liczby chybień związanych z kojarzeniem bloków dla małych 25% Wzrost związana z kojarzeniem Współczynnik chybień 20% 15% 10% 5% 0% 16 32 64 128 256 1K 4K 16K 64K 256K Rozmiar bloku (bajty) 64-bajtowe bloki powszechnie stosuje się w poziomu 1 128-bajtowe bloki w poziomu 2 Architektura systemów komputerowych Cezary Bolek 22 Wielopoziomowa struktura pamięci Pamięć najwyŝszego poziomu powinna być niezbyt duŝa Aby zapewnić szybkość (procesora) zegara Dodanie kolejnego poziomu Zmniejsza czas dostępu do pamięci Zmniejsza obciąŝenie magistrali pamięci Lokalny współczynnik chybień Liczba chybień pamięci / Liczba odwołań do danej pamięci Współczynnik chybień L1 dla L1, Współczynnik chybień L2 dla L2 Globalny współczynnik chybień I-Cache Liczba chybień pamięci / Liczba odwołań do pamięci wygenerowanych przez CPU Połączony Cache L2 Main Memory Współczynnik chybień L1 dla L1, Współczynnik chybień L1 Współczynnik chybień L2 dla L2 D-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 Pojemność pamięci określa rozmiar pamięci największej CPU L1 L2 Memory Obiekt jest albo w warstwie wyŝszej albo w niŝszej - Exclusive Pojemność pamięci określa suma poszczególnych pamięci CPU L1 L2 Memory Architektura systemów komputerowych Cezary Bolek 24
Pamięć wielopoziomowa - strategie Inclusive Dane w L1 jest zawsze powielana w L2 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 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 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