architektura komputerów w. 7 Cache Pamięci cache - zasada lokalności Program używa danych i rozkazów, które były niedawno używane - temporal locality kody rozkazów pętle programowe struktury danych zmienne robocze struktury regularne: wielokrotne użycie elementów Rozkazy i dane używane w krótkich odstępach czasu są zwykle zlokalizowane blisko siebie - spatial locality kody rozkazów rozmieszczone i wykonywane sekwencyjnie struktury danych skupione (zmienne robocze) lub regularne (tablice) Peter Denning The locality principle, CACM, July 2005 architektura komputerów w 7 1
Pamięci cache - zasada działania użycie bufora jest z założenia przezroczyste dla programu (realizacja całkowicie hardwareowa) sposób wykonania rozkazu nie może zależeć od obecności bufora Zastosowanie pamięci buforowej nie otwiera osobnej przestrzeni adresowej nie ma potrzeby tworzenia specjalnych rozkazów dostępu do bufora Zastosowanie bufora jest widoczne jedynie w skróceniu (lub nie) czasu wykonania programu Pamięci cache - zasada działania cache PAO CPU słowo trafienie Kopie bloku Linia - typowo 4-16 słów linia jednostka wymiany danych między buforem a pamięcią główną bloki są wyrównywane w sposób naturalny adres pierwszego słowa jest podzielny przez długość bloku architektura komputerów w 7 2
Pamięci cache - zasada działania cache PAO CPU słowo Przesłanie bloku Chybienie (inaczej pudło) Pamięci cache ilościowa ocena skuteczności Współczynnik trafień (hit rate) h określa jaka część odwołań została obsłużona przez cache. Współczynnik chybień (miss rate) m=1-h t mp średnia strata czasu w razie chybienia (miss penalty) Średni czas dostępu w sytemie z pamięcią cache (jednopoziomową) wynosi t av = ht c + (1-h)t m gdzie t c - czas dostępu pamięci cache t m - czas dostępu pamięci głównej architektura komputerów w 7 3
Pamięci cache ilościowa ocena skuteczności Współczynnik trafień zależy od Pojemności cache Organizacji i algorytmów wymiany Wykonywanego programu W zakresie do 0,9 współczynnik trafień zależy głównie od wielkości pamięci cache Powyżej na współczynnik trafień wpływ ma organizacja pamięci i algorytmy wymiany Pamięci cache ilościowa ocena skuteczności Wpływ wielkości bloku Dla większych bloków współczynnik trafień zmniejsza się, bowiem bloków jest w tej samej pojemności mniej Kara za pudło zwykle przewyższa efekt wzrostu współczynnika trafień architektura komputerów w 7 4
Pamięć cache asocjacyjna Adres żądanej komórki CACHE PAO Indeks słowa Blok 1 Blok 2 N Etykieta bloku porównywana jest z mi bloków przechowywanych w pamięci cache. Jeżeli taki blok jest w cache, pobierane jest odpowiednie słowo. Adres obszar Pamięć cache direct-mapped słowo PAO 0 00 {... cache N obszar Blok 0 01 0 01 {... 1 N... N 05 0 {... N Zbudowana na bazie szybkiej pamięci RAM Prosta w realizacji i wydajna Może mieć dużą pojemność architektura komputerów w 7 5
Adres obszar Pamięć cache direct-mapped słowo ZZ cache Blok Nr obszaru adresuje blok w pamięci cache Adres obszar Pamięć cache direct-mapped słowo ZZ cache Blok Adres słowa w bloku komparator Wybór słowa trafienie Porównywane jest pole etykiety, adresowane słowo w bloku architektura komputerów w 7 6
Adres Pamięć cache direct-mapped ZZ cache Adres słowa w bloku Blok komparator Wybór słowa trafienie Porównywane jest pole etykiety, adresowane słowo w bloku dana Adres Pamięć cache direct-mapped ZZ cache Adres słowa w bloku Blok XY komparator Wybór słowa niezgodność Porównywane jest pole etykiety, adresowane słowo w bloku architektura komputerów w 7 7
Pamięć cache direct-mapped Problemem jest to, że tylko jedna linia o numerze obszaru NN może być jednocześnie w cache. Jeżeli program odwołuje się na przemian do komórek należących do dwóch różnych linii (o różnej etykiecie) z jednakowym indeksem obszarowym (środkową częścią adresu) wystąpi migotanie bloków. W praktyce nie jest to częste ale może się zdarzyć Rozwiązanie - zbiorowe odwzorowanie asocjacyjne. Jeżeli zbiór roboczy programu obejmuje w miare ciagły obszar adresowy to cache przyspiesza odwołania do pamięci dla zbiorów roboczych mniejszych niż dwukrotna pojemność cache. zbiorowe odwzorowanie asocjacyjne Cache typu zbiorowe odwzorowanie asocjacyjne powstaje przez połączenie kilku bloków cache bezpośrednio adresowanej. W cache może być tyle linii o tym samym indeksie, ile jest bloków. Zestaw takich linii nazywany jest zbiorem. Właściwa linia wybierana jest z bloku poprzez wybór asocjacyjny. Cache złożony z wielu bloków nazywany jest również cache wielodrożnym (np. dwu-, czterodrożnym). architektura komputerów w 7 8
zbiorowe odwzorowanie asocjacyjne ZZ Adres słowa w bloku Blok Wybór słowa Wybór słowa Wybór słowa Pobranie na żądanie (fetch on demand) Pamięci cache. Strategie pobierania linii Pobranie uprzedzające (prefetching). Najczęstsza metoda one block lookahead automatyczne (prefetch always) obciążenie magistral o 20 80% większe niż w pobraniach wymuszonych implikowane w razie chybienia (prefetch on a miss) obciążenie magistral nieznacznie większe ni w pobraniach wymuszonych markowane (tagged prefetch) obciążenie magistral podobne jak w pobraniach wymuszonych architektura komputerów w 7 9
Pamięci cache. Strategie wymiany linii Dla cache direct mapped zagadnienie nie istnieje Stosowane strategie: Losowa Kolejkowa (FIFO) LFU LRU Za najskuteczniejsze uważane są LFU i LRU, wymagają jednak rozbudowy linii o bity historii. Różnica efektywności pomiędzy nimi a strategią losową jest niewielka. Strategie wymiany bufora przy przełączania zadań bufor ciepły (warm cache) część bufora nie jest wymieniana bufor zimny (cold cache) unieważnianie całego bufora Pamięci cache. rodzaje Cache asocjacyjny nie jest stosowany do zapisu kodu lub danych Najczęściej stosowana jest organizacja zbiorowo-asocjacyjna Jeżeli czas dostępu jest krytyczny używa się pamięci o niskim stopniu asocjacyjności Tam gdzie wymagania na szybkość są bardzo ostre używana jest pamięć bezpośrednio adresowana lub zbiorowo-asocjacyjna dwudrożna architektura komputerów w 7 10
Pamięci cache. Zagadnienie spójności Zapis danych do pamięci powoduje, że zawartość kopii w cache może różnić się od zawartości w PAO Spójność zgodność wszystkich kopii informacji, albo znajomość lokalizacji informacji aktualnej technologie zapisu: write throught write -back (zapis z opóźnieniem) Zapewnienie spójności nie oznacza zapewnienia zgodności wszystkich kopii lecz jedynie zapewnienie że każdy dostęp będzie dotyczył wartości aktualnej Pamięci cache. Zagadnienie wydajności t mem h 5 10 50 0,9 1,4 1,9 5,9 0,95 1,2 1,45 3,45 0,99 1,04 1,09 1,49 Średni czas dostępu w zależności od współczynnika trafień i różnicy wydajności pamięci cache i pamięci głównej Użycie cache pozwala zniwelować różnicę w wydajności pamięci cache i pamięci głównej wielkości jednego rzędu dziesiętnego Poprawienie średniego czasu dostępu wymaga poprawienia wydajności innych poziomów pamięci Można użyć cache drugiego poziomu (L2), Może być większy Może być bardziej asocjacyjny architektura komputerów w 7 11
Pamięci cache. Cache inkluzywna Każdy obiekt z L1 ma swoja kopię w L2 Przepływ danych pamięć główna L2 L1 procesor Pojemność L2 jest znacząco większa od L1 Rozwiązanie stosowane do r. 2000. procesor L1 L2 Pamięć Pamięci cache. Cache ekskluzywna L2 zawiera obiekty usuwane z L1 Pojemność równa jest sumie L1 i L2 L2 nie musi być większy niż L1 Stopień asocjacyjności L2 wyższy niż L1 Stosowane od r 2000:.AMD K7,K8, Intel Pentium 4, Core procesor L1 L2 Pamięć architektura komputerów w 7 12
Pamięci cache. Cache L2 Pamięci cache. Cache L2 Ponieważ cache L1 ma bezpośredni wpływ na projekt procesora i cykl rozkazowy, to powinna być prosta i mała Większość technik optymalizacji można łatwiej zastosować do L2 cache, w tym duży rozmiar i blok, wysoki poziom asocjacyjności itp Techniki redukcji współczynnika chybień w praktyce łatwiej się implementuje w cache L2 architektura komputerów w 7 13
Pamięci cache pamięć podręczna Pentium I - 2 x 8KB L1, L2 - na płycie głównej MMX - 2 x 16KB L1, L2 - na płycie głównej Pentium Pro - 2 x 16KB L1, L2-256KB II - 2 x 16KB L1, L2-512KB III - 2 x 16KB L1, L2-512KB unified, non-blocking, or an integrated 256KB Advanced Transfer Cache IV - Level 1 Execution Trace Cache stores 12K micro-ops, 8KB L1 data cache, 512KB L2 Cache (for 2A GHz and Faster) or 256KB Cache (for 2 GHz and Slower) architektura komputerów w 7 14