encyklopedia.space

Cache (pamięć podręczna)

Cache (z ang. cache, w języku polskim powszechnie określany jako pamięć podręczna) jest szybkim magazynem danych używanym do tymczasowego przechowywania najczęściej wykorzystywanych informacji w celu przyspieszenia ich dostępu. Systemy komputerowe, sieci oraz aplikacje internetowe wykorzystują różne rodzaje cache, aby zmniejszyć opóźnienia i obciążenie zasobów.

Historia

Idea pamięci podręcznej sięga lat 1970, ale pierwsze praktyczne zastosowania pojawiły się w latach 1980 w kontekście procesorów CPU. Rozwój technologii dysków twardych i Internetu w latach 1990 przyczynił się do powstania kolejnych warstw cache, takich jak buforowanie stron WWW.

Podstawowe rodzaje cache

Mechanizmy działania

Cache działa na zasadzie zasady lokalności (zasada lokalności), czyli tendencji programów do wielokrotnego odwoływania się do tych samych danych w krótkim czasie. Najważniejsze elementy mechanizmu to:

  1. Wpisywanie (write) – po odczycie lub modyfikacji danych, ich kopia jest umieszczana w pamięci podręcznej.
  2. Odczyt (read) – przy żądaniu danych najpierw sprawdzany jest cache (operacja lookup). Jeśli dane znajdują się w cache (zjawisko cache hit), zwracane są natychmiast.
  3. Utrzymanie integralności – w przypadku zmian w źródłowym miejscu przechowywania danych, wpisy w cache muszą zostać zaktualizowane lub usunięte (strategia write-through lub write-back).

Algorytmy zamiany (algorytmy wyparcia)

Gdy pamięć podręczna jest pełna, konieczne jest wybranie danych, które zostaną usunięte. Najczęściej stosowane algorytmy to:

Zastosowania

Cache znajduje zastosowanie w praktycznie każdym obszarze informatyki:

Problemy i wyzwania

Mimo licznych korzyści, cache niesie ze sobą pewne problemy:

  • Starość danych (stale data) – nieaktualne wpisy mogą prowadzić do nieścisłości, co wymaga stosowania strategii inwalidacji i mechanizmów odświeżania.
  • Koherencja cache – w systemach wieloprocesorowych konieczne jest zapewnienie spójności między różnymi kopiami pamięci podręcznej (protokoły MESI).
  • Rozmiar i koszt – zwiększanie pojemności cache podnosi koszty i zużycie energii, co jest krytyczne w urządzeniach mobilnych.

Przykłady implementacji

Niektóre popularne biblioteki i rozwiązania programistyczne oferujące gotowe mechanizmy cache to:

  • Memcached – rozproszony cache w pamięci operacyjnej.
  • Redis – baza danych typu klucz-wartość z wbudowanym mechanizmem cache.
  • Guava Cache – biblioteka Java z wieloma strategiami wyparcia.
  • Cache HTTP – definiowany nagłówkami Cache-Control, ETag i Expires.

Powiązane pojęcia

  • Bufor – tymczasowy magazyn danych, często współdziałający z cache.
  • Wirtualna pamięć – system zarządzania pamięcią, w którym cache odgrywa rolę przy wymianie stron.
  • Hipernadzorowanie lokalności – pojęcie opisujące stosowanie wielu warstw cache.
  • Latencja – opóźnienie, które cache stara się minimalizować.

Literatura

  1. Hennessy, J. L.; Patterson, D. A. Computer Architecture: A Quantitative Approach. 5th ed., Morgan Kaufmann, 2011.
  2. Silberschatz, A.; Galvin, P. B.; Gagne, G. Operating System Concepts. 10th ed., Wiley, 2018.
  3. Wilkes, J.; et al. Cache Performance and Design. Springer, 2019.

Cache jest kluczowym elementem współczesnych systemów informatycznych, zapewniającym znaczące przyspieszenie działania dzięki inteligentnemu zarządzaniu najczęściej używanymi danymi.