Co to jest pamięć podręczna procesora?

Nowoczesne procesory działają niesamowicie szybko; mogą znacznie przewyższać systemową pamięć RAM. Ta nierównowaga prędkości między procesorem a pamięcią spowodowałaby, że procesor często byłby bezczynny, czekając na przesłanie do niego danych, aby mógł kontynuować działanie procesu. Aby temu zapobiec, pozwalając procesorom na szybsze i szybsze działanie, używana jest pamięć podręczna procesora.

Jak pamięć podręczna procesora przyspiesza procesor?

Pamięć podręczna procesora została zaprojektowana tak, aby była jak najszybsza, a następnie buforowała dane, których żąda procesor. Pamięć podręczna procesora jest zoptymalizowana na trzy sposoby: opóźnienie, przepustowość i bliskość. Pamięć podręczna procesora działa z bardzo małymi opóźnieniami, minimalizując czas potrzebny na zwrócenie wyniku. Na przykład Intel i9-9900k ma opóźnienie pamięci podręcznej wynoszące odpowiednio 0,8, 2,4 i 11,1 nanosekund dla pamięci podręcznej L1, L2 i L3. Dla porównania, opóźnienie nowoczesnej szybkiej pamięci RAM jest rzędu 14 nanosekund.

Wskazówka: poziomy pamięci podręcznej zostaną wyjaśnione bardziej szczegółowo później, ale po prostu niższe warstwy pamięci podręcznej są szybsze, ale są droższe, więc mają mniejszą pojemność. Nanosekunda to jedna miliardowa sekundy, więc opóźnienie wynoszące 0,8 sekundy oznacza, że ​​uzyskanie wyniku zajmuje mniej niż jedną miliardową sekundy.

Pod względem przepustowości pamięć podręczna procesora zapewnia znaczną poprawę wydajności w porównaniu z tradycyjną pamięcią masową i pamięcią RAM. Prędkości odczytu pamięci podręcznej L1 i L3 mogą osiągać szczytowe wartości odpowiednio 2,3 TB/si 370 GB/s, podczas gdy przepustowość pamięci RAM wynosi zwykle około 40 GB/s. Ta zwiększona przepustowość oznacza, że ​​pamięć podręczna procesora może przesyłać dane do procesora znacznie szybciej niż pamięć RAM.

Aby osiągnąć maksymalne możliwe prędkości, pamięć podręczna procesora jest w rzeczywistości wbudowana w krzem samej kości procesora. Minimalizuje to odległość, jaką muszą pokonać wszelkie sygnały elektryczne, dzięki czemu opóźnienie jest możliwie najniższe. Na przykład, gdy pamięć podręczna L3 została po raz pierwszy przeniesiona z płyty głównej na kość procesora, ówczesny procesor (Pentium 4 EE) był w stanie uzyskać poprawę wydajności o 10-20%.

Architektura pamięci podręcznej procesora

Nowoczesne procesory zazwyczaj używają trzech warstw pamięci podręcznej procesora, oznaczonych jako L1-3, przy czym pamięci podręczne o niższych numerach są bliżej rdzeni procesora, szybsze i droższe. Każdy pojedynczy rdzeń procesora w procesorze wielordzeniowym ma własną pamięć podręczną L1. Zwykle dzieli się na dwie części, L1I i L1D. L1I służy do buforowania instrukcji dla procesora, podczas gdy L1D służy do buforowania danych, na których te instrukcje mają być wykonywane.

Każdy rdzeń procesora zazwyczaj ma również własną pamięć podręczną L2 w nowoczesnym procesorze. Pamięć podręczna L2 jest większa i wolniejsza niż pamięć podręczna L1 i służy głównie do przechowywania danych, które w przeciwnym razie nie zmieściłyby się w pamięci podręcznej L2. Dzięki dedykowanej pamięci podręcznej L2 na rdzeń unika się rywalizacji o pamięć podręczną. Rywalizacja o pamięć podręczną to sytuacja, w której różne rdzenie walczą o miejsce w pamięci podręcznej dla własnych obciążeń, co może prowadzić do usunięcia ważnych danych z pamięci podręcznej.

Pamięć podręczna L3 jest zwykle współdzielona przez wszystkie rdzenie procesora. Ponownie pamięć podręczna L3 jest wolniejsza niż pamięć podręczna L2, ale jest tańsza i większa. Udostępniając współdzieloną pamięć podręczną, można zmniejszyć ilość danych, które byłyby duplikowane na niższych poziomach pamięci podręcznej na rdzeń.

Wskazówka: na przykład w rozmiarach pamięci podręcznej Intel i9-9900K ma 64 KB L1 i 256 KB pamięci podręcznej L2 na rdzeń (łącznie 512 KB L1 i 2 MB L2), ma również 16 MB współdzielonej pamięci podręcznej L3.

Jak jest używana pamięć podręczna procesora?

Wszystkie poziomy pamięci podręcznej procesora służą do przyspieszenia wydajności procesora poprzez buforowanie danych z pamięci RAM. Gdy procesor żąda danych, zwykle najpierw przeszukuje warstwy pamięci podręcznej, próbując uzyskać dane tak szybko, jak to możliwe. Jeśli dane zostaną znalezione w trafieniu w pamięci podręcznej, procesor może kontynuować przetwarzanie. Jeśli danych nie ma w pamięci podręcznej, w tzw. braku pamięci podręcznej, procesor musi sprawdzić pamięć RAM, a następnie dysk twardy, jeśli danych też tam nie ma. Szybsze warstwy są zawsze najpierw sprawdzane pod kątem maksymalnej wydajności.

Aby pomóc procesorowi w przechowywaniu danych, których potrzebuje w pamięci podręcznej, gdy ich potrzebuje, pamięć podręczna próbuje wyprzedzić, jakie dane procesor może potrzebować w następnej kolejności. Na przykład, jeśli procesor zażądał pewnych danych dla obrazu, renderuje pamięć podręczna może próbować zapobiegawczo buforować więcej danych obrazu, aby można je było przesłać do procesora tak szybko, jak to możliwe.