
Pamięć podręczna procesora (ang. CPU cache) – jest pamięcią typu SRAM (pamięć statyczna) o krótkim czasie dostępu. Zlokalizowana jest często bezpośrednio w jądrze procesora. Zastosowanie wielopoziomowej hierarchii pamięci podręcznej zmniejsza średni czas dostępu do pamięci głównej.
Współcześnie stosuje się 2 i 3-poziomowe pamięci podręczne. Najważniejszymi parametrami funkcjonalnymi pamięci podręcznych są pojemność i czas dostępu. Pod względem budowy można wyróżnić 3 podstawowe typy organizacji pamięci:
Zlokalizowana we wnętrzu procesora pamięć podręczna pierwszego poziomu przyspiesza dostęp do bloków pamięci wyższego poziomu, który stanowi zależnie od konstrukcji pamięć operacyjną lub pamięć podręczną drugiego poziomu (L-2). Z uwagi na ograniczenia rozmiarów i mocy procesora zawsze jest najmniejsza. Umieszczona jest najbliżej głównego jądra procesora i umożliwia najszybszą komunikację procesora. Typowe pamięci L-1 współczesnych procesorów są 8-drożne, posiadają rozdzieloną pamięć danych i kodu, a długość linii wynosi 64 bajty.
Pamięć drugiego poziomu, o rozmiarze od 64 KB do 12 MB, 2, 4 lub 8-drożna, o długości linii od 64 do 128 bajtów, jest wykorzystywana jako bufor pomiędzy stosunkowo wolną pamięcią RAM a jądrem procesora i pamięcią cache L1. Ostatnimi procesorami nie posiadającymi pamięci podręcznej drugiego poziomu były pierwsze procesory Celeron (jądro Convington, taktowane 266–300 MHz). Obecność pamięci drugiego poziomu powoduje duży wzrost wydajności w wielu aplikacjach – dzieje się tak, ponieważ dane poddawane obróbce muszą być pobierane z pamięci RAM, która ma opóźnienia rzędu kilkudziesięciu-kilkuset nanosekund. Dzisiejsze procesory są wyposażone w złożone układy przewidywania, jakie dane będą potrzebne – dane te są pobierane z wyprzedzeniem do pamięci cache, która ma opóźnienia rzędu kilku-kilkunastu nanosekund, co znacznie skraca czas oczekiwania procesora na dane do obliczeń.
Pamięć podręczna procesora trzeciego poziomu jest wykorzystywana, gdy pamięć L2 jest niewystarczająca, aby pomieścić potrzebne dane. Obecność cache trzeciego poziomu pozwala na znaczącą poprawę wydajności w stosunku do procesorów o konstrukcji pamięci dwupoziomowej w wielu aplikacjach i programach. W systemach z wieloma procesorami lub rdzeniami, pamięć cache trzeciego poziomu najczęściej jest współdzielona przez wszystkie rdzenie i ma od kilku do kilkudziesięciu megabajtów.
W systemach wieloprocesorowych ze współdzieloną pamięcią zastosowanie pamięci cache jest kluczowe dla zapewnienia lokalności i możliwej niezależności działania poszczególnych procesorów od wspólnych elementów systemu (współdzielonej pamięci oraz magistrali zapewniającej do niej dostęp). Jest to niezbędne dla zapewnienia maksymalnej wydajności pracy poszczególnych procesorów. Wymaga to jednak odpowiednich metod zapewniających spójność (koherencję) danych zapisanych w pamięci (w języku angielskim jest to określane jako cache coherency). Można wyróżnić dwa typy pamięci cache[1]:
Pierwszy jest dużo prostszy technicznie w realizacji, ale powoduje nadmierne przesyłanie danych przez magistalę zapewniającą dostęp do pamięci (na przykład, w sytuacji gdy dana komórka jest wielokrotnie zapisywana przez jeden procesor a nie jest odczytywana przez żaden inny). Drugi, zapewniający znacznie optymalniejsze wykorzystanie zasobów, wymaga odpowiednich mechanizmów zapewniających spójność danych w pamięci dostępnych dla poszczególnych procesorów systemu. Jest więc bardziej skomplikowany i kosztowniejszy w realizacji[1].