5.7 Koncepcja pamięci podręcznej (cache).doc

(446 KB) Pobierz

Koncepcja pamięci podręcznej (cache)

 

Koncepcja pamięci cache jest podobna do koncepcji pamięci wirtualnej i wynika z własności pamięci SRAM i DRAM. Przypominamy krótko, że pamięci statyczne są szybsze od pamięci dynamicznych, natomiast pobierają więcej energii i są zdecydowanie droższe. Ponadto są układami o niższym stopniu scalenia. Z tych powodów nie jest możliwe zbudowanie całej pamięci operacyjnej z pamięci statycznych. Z drugiej strony, pamięci dynamiczne są zbyt wolne dla szybkich, współczesnych procesorów i wymagają przy dostępie stanów oczekiwania. Wynika to zarówno z dużej częstotliwości zegara taktującego te procesory, jak i na przykład z występującej w procesorach Pentium pracy dwupotokowej czy też dynamicznej realizacji instrukcji. Aby zmniejszyć ten efekt, wprowadzono następującą koncepcje. Pamięć systemu składa się z relatywnie dużej pamięci operacyjnej (rzędu kilkuset MB do pojedynczych GB) zbudowanej z pamięci dynamicznych oraz z mniejszej (kilka do kilkuset kB), lecz znacznie szybszej pamięci cache zbudowanej z pamięci statycznych. Ponadto w systemie musi znajdować się sterownik pamięci cache koordynujący w systemie współpracę pamięci z pozostałymi układami. W przypadku operacji na pamięci sterownik ten sprawdza, czy poszukiwana informacja znajduje się w pamięci cache. Jeżeli tak, operacja jest wykonywana na pamięci cache, bez stanów oczekiwania. Sytuacja taka nazywana jest trafieniem (ang. cache hit). W przypadku nieobecności informacji w pamięci cache następuje dostęp do pamięci operacyjnej z koniecznymi stanami oczekiwania. Jest to tak zwane chybienie (ang. cache miss).

 

1.      Architektura systemu z pamięcią cache

 

We współczesnych systemach z pamięcią cache występują dwa rodzaje architektury: Lookthrough i Lookaside.

 

1.1.  Architektura Look – through

Sposób podłączenia pamięci cache w przypadku architektury Lookthrough pokazany jest na rysunku 31.

Rysunek 31 Architektura Look – through

 

W architekturze tej pamięć cache, połączona magistralą lokalną z procesorem, oddziela go od reszty systemu. W przypadku trafienia główna magistrala systemu nie jest w ogóle używana, co powoduje dodatkowe zwiększenie szybkości działania systemu. Związane jest to z możliwością korzystania z magistrali głównej przez innych zarządców magistrali (np. sterownik DMA) w trakcie realizacji operacji na pamięci cache. Żądanie dostępu do pamięci jest przekazywane do pamięci głównej (PAO) tylko w wypadku chybienia. Inicjowany jest wówczas cykl magistrali głównej z koniecznymi stanami oczekiwania.

 

1.2.  Architektura Lookaside

Sposób współpracy pamięci cache z systemem przy zastosowaniu architektury Lookaside przedstawia rysunek 32.

Rysunek 32 Architektura Look – aside

 

W przypadku tej architektury procesor nie jest odizolowany od reszty układów przez cache. Dostęp do pamięci powoduje rozpoczęcie normalnego cyklu magistrali. W przypadku trafienia cykl ten jest zawieszany, a operacja jest wykonywana w pamięci cache bez stanów oczekiwania. W przypadku chybienia wykonywany jest normalny cykl magistrali ze stanami oczekiwania.

Przy zastosowaniu architektury Look-aside, nawet w przypadku trafienia, magistrala nie jest dostępna dla innych zarządców magistral. Nie są też możliwe równolegle operacje dla dwóch zarządców magistral. Zaletami architektury Look-aside są natomiast: prostsza konstrukcja, niższy koszt i nieco szybsza realizacja operacii w przypadku chybienia (normalny cykl magistrali jest rozpoczynany od razu po żądaniu dostępu do pamięci).

 

2.      Elementy systemu pamięci cache

 

System pamięci cache składa się z trzech elementów:

·         banku danych pamięci cache (pamięć danych),

·         katalogu pamięci cache (często nazywanego TAG-RAM-em),

·         sterownika pamięci cache.

 

W banku danych pamięci cache przechowywana jest zapisywana i odczytywana informacja, natomiast katalog pamięci cache służy do szybkiego sprawdzania, czy poszukiwana informacja znajduje się w pamięci danych cache (konkretnie, czy dany adres jest odwzorowany w pamięci cache). Stanowi to zadanie sterownika pamięci cache, który ponadto organizuje współpracę pamięci cache z systemem. Jednym z bardzo ważnych elementów tej współpracy jest zapewnienie zgodności (ang. consistency lub coherency) zawartości pamięci cache z pamięcią główną. Problemowi temu poświęcony jest następny podpunkt.

 

3.      Sposoby zapewniania zgodności pamięci cache

 

Niezgodność zawartości pamięci cache z zawartością pamięci głównej występuje w dwóch przypadkach: nastąpił zapis do pamięci cache bez zapisu do pamięci głównej lub nastąpił zapis do pamięci głównej baz zapisu do pamięci cache. Pierwsza sytuacja występuje w przypadku trafienia przy zapisie. Druga występuje na przykład w przypadku transmisji DMA do pamięci głównej (gdy z magistrali głównej korzystał inny zarządca magistral niż procesor). Czasowa niezgodność pamięci jest dopuszczalna, nie wolno natomiast dopuścić do sytuacji, w której zostanie użyta nieaktualna informacja.

W przypadku zapisu do pamięci cache stosowane są następujące strategie utrzymania zgodności:

·         Write-through,

·         buforowane Write-through,

·         Write-back.

 

W strategii Write-through każdy zapis do pamięci cache powoduje jednocześnie zapis do pamięci głównej. Jest to rozwiązanie bardzo proste i pewne, niestety powodujące zmniejszenie szybkości działania systemu (każdy zapis trafia do „wolnej” pamięci głównej).

Buforowane (lub inaczej opóźnione) Write-through polega na zapisaniu informacji zarówno w przypadku trafienia, jak i chybienia do bufora sterownika cache, przy czym procesor widzi tę operację jako dostęp do pamięci bez stanów oczekiwania. W rzeczywistości operacja zapisu do pamięci głównej jest realizowana później (jest opóźniona). Stany oczekiwania występują dla procesora jedynie w przypadku kolejno po sobie następujących zapisów do pamięci. Pomiędzy zapisem informacji do pamięci cache dostęp do magistrali dla innych zarządców magistrali jest blokowany w celu uniknięcia użycia nieaktualnej informacji (dodatkowy powód tej operacji to potrzeba dostępności magistrali w celu dokonania przepisania informacji z bufora).

W przypadku strategii Write-back zawartości pamięci cache i pamięci głównej są uzgadniane tylko w przypadku takiej potrzeby. Występuje ona, gdy inny zarządca magistrali chce skorzystać z komórki pamięci głównej, która zawiera nieaktualną informację, lub gdy w pamięci cache wymieniana jest linia zawierająca nową informację. Budowa pamięci cache stosującej strategię Write-back jest bardziej skomplikowana, gdyż jak wynika z podanego opisu, należy śledzić operacje magistrali w pamięci głównej dotyczące innych zarządców magistrali. W przypadku operacji w komórkach odwzorowanych w pamięci cache należy przeprowadzić jej uaktualnienie.

Drugi przypadek, w którym może dojść do niezgodności pamięci głównej i pamięci cache, występuje, gdy inny (niż procesor główny) zarządca magistrali dokonuje zapisu (lub. dla pamięci cache ze strategią Write-back, także odczytu) do pamięci. Najczęściej używaną metodą utrzymania zgodności w takim przypadku jest śledzenie przez sterownik cache operacji magistrali (ang. bus snooping). Reakcja systemu pamięci cache zależy od strategii stosowanej do utrzymania zgodności przy zapisie informacji przez procesor. W przypadku strategii Write-through sterownik pamięci cache może unieważnić linię odwzorowującą w niej modyfikowaną komórkę pamięci. Powoduje to w przypadku odwołania się procesora do tej informacji w pamięci cache chybienie i w konsekwencji jej odczyt z pamięci głównej.

W przypadku strategii Write-back proste unieważnienie linii nie jest możliwe, gdyż może ona zawierać informacje wpisane do cache przez procesor, a nie odwzorowane w pamięci głównej, które ulegną straceniu. Sterownik pamięci cache musi więc spowodować wstrzymanie na pewien czas zapisu przez zarządcę magistrali, przepisanie linii do pamięci głównej i dopiero wtedy jej unieważnienie. Po tej operacji zarządca magistrali może wznowić operację zapisu.

Trzecia możliwość występuje zarówno dla architektury Write-through, jak i Write-back. W przypadku wykrycia zapisu do komórki, która jest odwzorowywana w pamięci cache, informacja jest przechwytywana przez sterownik pamięci cache i jednocześnie do niej zapisywana.

W przypadku stosowania strategii Write-back sterownik pamięci cache musi śledzić także operacje odczytu. Jeżeli zarządca magistrali próbuje odczytać komórkę pamięci głównej, która jest odwzorowana w pamięci cache i była zmieniana, sterownik pamięci cache musi wstrzymać cykl magistrali, uaktualnić pamięć główną i dopiero wtedy zezwolić na odczyt.

 

4.      Organizacja pamięci cache

 

W celu zapewnienia możliwości szybkiego sprawdzenia, czy komórka pamięci w której ma być wykonana operacja, jest odwzorowana w pamięci cache, dwie części pamięci cache, bank danych i katalog, tworzą tak zwaną jednoblokową pamięć asocjacyjną (ang. One-way Set-associative lub Direct-mapped). W takiej organizacji pamięć cache stanowi jeden blok, który jest dzielony na zestawy. Pamięć główna dzielona jest na strony o rozmiarze równym rozmiarowi bloku pamięci cache. Strony są z kolei również dzielone na zestawy, przy czym liczba zestawów w stronie jest identyczna jak w bloku pamięci cache. Każdy zestaw w pamięci cache ma swoją pozycję w katalogu (TAG-RAM). Zawiera ona adres strony, z którego pochodzi dany zestaw. Każdy zestaw jest wpisywany na miejsce w pamięci cache do zestawu o numerze zgodnym z numerem zestawu w stronie. Umożliwia to bardzo szybkie sprawdzenie obecności zestawu - nie musimy bowiem przeszukiwać katalogu, lecz sprawdzamy adres bloku w określonej pozycji katalogu. Interpretacja graficzna struktury jednoblokowej pamięci asocjacyjnej cache oraz jej relacje z pamięcią główną przedstawia rysunek 33.

Rysunek 33 Przykład organizacji pamięci cache

 

W przypadku wymiany zestawu na danej pozycji modyfikowany jest adres bloku w pozycji katalogu odpowiadającej temu zestawowi. Przykładowo na rysunku 33 w wyniku odczytu odpowiednich komórek w pamięci cache są odwzorowane zestawy 4 i 5 ze strony 0 oraz zestaw dwa ze strony 1. Jeżeli teraz nastąpi odwołanie do zestawu 4 na stronie 2, to zestaw ten zostanie wpisany w banku pamięci cache na miejsce zestawu 4 ze strony 0. Jednocześnie w pozycji katalogu cache odpowiadającej danemu zestawowi w miejsce strony 0 zostanie wpisana strona 2.

Jeżeli bank danych pamięci cache dzielimy na dwa lub cztery bloki, mówimy odpowiednio o dwu- lub czteroblokowej pamięci asocjacyjnej (ang. two-ways set-associative memory lub four-ways set-associative memory).

 

...
Zgłoś jeśli naruszono regulamin