Wyjaśnienie pamięci podręcznej procesora: L1, L2 i L3 oraz ich działanie w celu uzyskania najwyższej wydajności

Jeśli jesteś początkującym młodym entuzjastą technologii lub po prostu zwykłym nabywcą komputera PC, być może widziałeś „pamięć podręczną” wymienioną w specyfikacjach tego lub innego procesora i zastanawiałeś się, co to dokładnie jest. Od dziesięcioleci jest to główny punkt marketingowy procesorów, a ostatnio stał się nawet przedmiotem dyskusji w przypadku procesorów graficznych.

„Cache” wymawiane w języku angielskim podobnie jak „gotówka” (w rezultacie czasami skracane przez „$”) jest zasadniczo formą przechowywania. Podobnie jak pamięć RAM, dyski SSD i dyski twarde, pamięć podręczna służy do przechowywania instrukcji programów i danych, nad którymi procesor może pracować. Jeśli myślisz „no cóż, to wydaje się zbędne”, gratulujemy myślenia! Jednak nie jest to tak zbędne, jak się wydaje na podstawie tego uproszczonego opisu. Sprawdźmy dlaczego.

Advertisement

Pamięć l2cache płyty głównej 486
Chipy w niebieskim pudełku zapewniają 64 KB pamięci podręcznej L2 dla tego systemu 486.

Na początku komputery działały całkowicie wykorzystując pamięć główną. Jednak wydajność procesora szybko zaczęła przewyższać poprawę opóźnienia dostępu do pamięci. Oznaczało to, że procesory zaczęły zużywać dużo czasu, czekając na instrukcje i dane w pamięci RAM. Oczywiście, czas oczekiwania procesora jest czasem, w którym NIE działa. Co robić? Umieść mniejszą i szybszą pamięć znacznie bliżej rdzenia procesora. Ta niewielka „pamięć podręczna” może dostarczać często używane instrukcje i dane do wymagającego procesora bez konieczności czekania na wolną pamięć główną.

Pomysł wykorzystania lokalnej pamięci podręcznej do dostępu do pamięci tak naprawdę powstał w latach 60. XX wieku, przed wynalezieniem mikroprocesora, jednak do komputerów domowych trafiły one dopiero w latach 80. XX wieku. Zależy to od tego, jak dokładnie zdefiniujesz „pamięć podręczną”, ale chociaż procesory Intel 80286, Motorola 68020 i Intel 80486 mają uzasadnione roszczenia do tytułu „pierwszego procesora komputera PC ze zintegrowaną pamięcią podręczną”, większość ludzi oznaczy procesor 486 jako pierwszy chip, który ma coś w rodzaju nowoczesnej koncepcji pamięci podręcznej procesora. Zawierał 8 KB (później 16 KB) wbudowanej pamięci podręcznej, obecnie nazywanej pamięcią podręczną L1. Niedługo potem Pentium Pro (na zdjęciu u góry) został dostarczony zarówno z wbudowaną pamięcią podręczną L1, jak i drugą krzemową kością, mieszczącą aż do pełnego megabajta pamięci podręcznej L2.

Poziomy pamięci podręcznej 7800x3d

Obecnie procesory mają zwykle dwa lub trzy różne „poziomy” pamięci podręcznej, umieszczone w fizycznie różnych miejscach na płycie procesora lub obudowie procesora. Zwykle pamięć podręczna L1 znajduje się bezpośrednio w każdym rdzeniu procesora; jest to często podzielone na osobne sekcje dotyczące instrukcji procesora i przetwarzanych danych. Dostęp do pamięci podręcznej L1 jest niezwykle szybki, a gdy niezbędne dane lub instrukcje są już w niej zapisane, procesor może niemal natychmiast wznowić pracę. Wadą jest to, że ze względu na lokalizację jest bardzo mały: zwykle 96 KB lub mniej.

Następnie na krawędzi lub na zewnątrz jednostek funkcjonalnych rdzenia będzie znajdować się pamięć podręczna L2, która będzie współdzielona zarówno przez instrukcje, jak i dane. W niektórych konstrukcjach procesorów pamięć podręczna L2 będzie współdzielona przez wiele rdzeni, tak jak w przypadku obecnych „e-rdzeniowych” Intela, które mają od dwóch do czterech megabajtów pamięci podręcznej L2 współdzielonej przez każdy czterordzeniowy klaster. Dostęp do pamięci podręcznej L2 jest nieco wolniejszy niż do pamięci podręcznej L1, ale wadą jest to, że jest ona znacznie, znacznie większa — rzędu całego megabajta w Zen 4 i pełnych dwóch megabajtów w Raptor Cove.

Advertisement

amd 3d v szczegóły pamięci podręcznej slajd 2

Ponadto większość procesorów ma obecnie także pamięć podręczną L3, która zwykle znajduje się poza samym klastrem rdzeniowym. Ta pamięć podręczna L3 jest zwykle współdzielona przez wszystkie lokalne rdzenie procesora, chociaż wiele współczesnych procesorów ma podzieloną pamięć L3, w której część pamięci podręcznej jest dołączona do każdego klastra rdzenia. Widać to zwłaszcza w procesorach AMD Ryzen, gdzie każda „Core Complex Die” (CCD) ma własne 32 MB pamięci podręcznej L3. Rdzenie na różnych dyskach CCD mogą uzyskać dostęp do pamięci podręcznej innego przetwornika CCD, a to i tak jest szybsze niż dostęp do pamięci głównej, ale jest nieco wolniejsze niż korzystanie z lokalnej pamięci podręcznej.

Wreszcie, niektóre procesory w przeszłości były wyposażone w pamięć podręczną L4. Jest to dość rzadkie zjawisko i zostało stwierdzone tylko w kilku procesorach; przede wszystkim niektóre konstrukcje z rodziny IBM POWER i kilka układów Intel 4. i 5. generacji. Jeśli jest obecna, pamięć podręczna L4 zwykle działa jak pamięć podręczna na poziomie systemu, zdolna nie tylko do buforowania danych dla rdzeni procesora, ale także prawdopodobnie dla procesora graficznego i innych funkcji systemowych. Niektóre wczesne przecieki sugerowały, że Intel Meteor Lake mógł mieć pamięć podręczną L4, ale dotychczasowe procesory Core Ultra jeszcze jej nie posiadały.

wykres opóźnień

Zatem nowoczesna pamięć RAM jest superszybka, prawda? W przypadku pamięci DDR5 prędkość na pin sięga aż 7,5 Gb/s. Jaki jest sens pamięci podręcznej procesora w dzisiejszych czasach? Cóż, po pierwsze, pamięć podręczna procesora jest o wiele, wiele szybsza. Co więcej, problem polega na tym, że nawet jeśli masz pamięć główną o bardzo małych opóźnieniach, wciąż mówisz o czasie dostępu ponad pięć razy wolniejszym niż pamięć podręczna L3 procesora – a sama pamięć L3 jest prawie pięć razy wolniejsza niż pamięć podręczna L3. L2. Sprawdź powyższą tabelę, aby zobaczyć kilka interesujących porównań.

Większość instrukcji procesora nie jest wykonywana w jednym cyklu, ale nawet dostęp do pamięci podręcznej L1 zajmie około czterech cykli. Jeśli Twoich danych nie ma w pamięci podręcznej, będziesz musiał przejść całą drogę do pamięci głównej, co zajmie ponad 270 cykli procesora w oczekiwaniu. Jeśli twoich danych nie ma w pamięci RAM, zajmie to trochę czasu — równie dobrze możesz w międzyczasie przełączyć się na inne zadanie na tym rdzeniu, jeśli coś innego ma już gotowe dane. Nawiasem mówiąc, ta koncepcja jest podstawą wielozadaniowości.

Advertisement

Jeśli masz trudności ze zrozumieniem zakresu dużych liczb u góry wykresu, sprawdź ostatnią kolumnę. Oznacza to, ile czasu zajęłaby każda operacja, gdyby ten sam procesor działał z szybkością jednego cyklu na sekundę zamiast czterech miliardów cykli na sekundę. Zmienia to czas wymagany na dostęp do pamięci podręcznej L2 do 11,2 sekundy, co prawdopodobnie nadal wydaje się dość szybkie w porównaniu z prawie 90 godzinami wymaganymi na dostęp do dysku SSD.

przycięty 5800x3d Aida64

Należy jednak wziąć pod uwagę coś więcej niż tylko opóźnienie. Powyższe dane pochodzą z wyników testu porównawczego pamięci podręcznej i pamięci AIDA64 przeprowadzonego na komputerze autora. Jak widać, szybkość transferu przy odczycie z pamięci DDR4 3600 MT/s systemu wynosi prawie 51 gigabajtów na sekundę. Porównaj to z prawie 600 gigabajtami na sekundę podczas odczytu z pamięci podręcznej L3, a zobaczysz, jak posiadanie dużej pamięci podręcznej może mieć ogromny wpływ na wydajność.

Najlepiej widać to w ostatnich latach w przypadku procesorów AMD „X3D” wyposażonych w pamięć podręczną 3D V-Cache. Układając pionowo dodatkowy kawałek krzemu w procesorach Zen 3 „Vermeer” i Zen 4 „Raphael”, AMD było w stanie potroić pamięć podręczną L3 dostępną dla jednego rdzenia chipletu, czyli CCD. Wymaga to niewielkiego obniżenia częstotliwości taktowania procesora w porównaniu do modelu standardowego, a mimo to zapewnia ogromną poprawę wydajności niektórych aplikacji, szczególnie gier 3D. Dlaczego?

GTA V
Pomyśl o GTA Online: potrzebuje UX, danych wejściowych, symulacji, grafiki, dźwięku, sieci i nie tylko.

Sprowadza się to do tego, że – być może jak na ironię – gry wideo to jedne z najbardziej wymagających zadań, jakie można uruchomić na komputerze. Gry stale ładują nowe fragmenty programu i nowe fragmenty danych, które mają być przetwarzane przez te fragmenty programu. Ze względu na ogromną różnorodność rzeczy, które dzieją się we współczesnych grach 3D, szczególnie w sieciowych grach 3D, bardzo łatwo jest przepełnić pamięć podręczną procesora, zmuszając aplikację do znacznie częstszego uruchamiania się i uderzania w pamięć główną. Potrojenie rozmiaru i tak już dużej pamięci podręcznej L3 procesora Ryzen sprawia, że ​​jest to znacznie mniej prawdopodobne, co pozwala procesorowi spędzić więcej czasu na pracy, a mniej na czekaniu na dane lub kod.

Advertisement

Żeby było jasne, jest dużo więcej do nauczenia się na temat buforowania procesora. Ten artykuł jest jedynie podstawowym wyjaśnieniem koncepcji pamięci podręcznej i nie będziemy wdawać się w szczegóły wyjaśniające różne sposoby implementacji pamięci podręcznych ani różne typy pamięci podręcznej procesora. Ostatecznie jako konsument musisz wiedzieć, że rozmiar pamięci podręcznej może mieć ogromny wpływ na wydajność aplikacji i w przeciwieństwie do liczby rdzeni procesora, więcej zawsze oznacza lepiej — ale jeśli więcej oznacza prawie zawsze lepiej, dlaczego nie po prostu stworzyć każdego procesora z ogromnymi porcjami pamięci podręcznej? A nie prościej włożyć całą pamięć RAM do procesora? Dobrze…

przydatny schemat rdzenia zen3
Adnotacja rdzenia procesora Zen 3 autorstwa Szarańcza. (Trudno to przeczytać, więc kliknij, aby powiększyć.)

To opatrzone komentarzem zdjęcie pojedynczego rdzenia procesora Zen 3 pokazuje, jaka część nowoczesnego rdzenia procesora jest przeznaczona na pamięć podręczną. Nawet jeśli zignorujemy przeważnie niebieską prawą połowę rdzenia, nadal istnieją ogromne części rdzenia procesora wydzielone dla pamięci podręcznej L1 32+32 KB i pamięci podręcznej L2 512 KB, a także gigantyczne 4 MB pamięci podręcznej L3 plus wszystko powiązanego sprzętu sterującego.

Krótko mówiąc, pamięć SRAM (pamięć używana do przechowywania pamięci podręcznej) jest niezwykle duża i umieszczenie jej dużej ilości na kości bardzo szybko pochłania obszar kości. To sprawia, że ​​procesory stają się zbyt drogie w bardzo szybkiej produkcji. Dlatego AMD wymyśliło technologię 3D V-Cache: zamiast produkować coraz większe chipy w celu dodawania coraz większych pamięci podręcznych, firma może produkować osobne chiplety pamięci podręcznej i zszywać je w swoich istniejących procesorach.

Przez chwilę skupialiśmy się tutaj na AMD, ale nie jest tak, że Intel jest ślepy na zalety pamięci podręcznej procesorów. Intel to firma, która od czasu do czasu eksperymentuje z pamięciami podręcznymi L4, a największą zmianą pomiędzy Golden Cove (architektura P-core dla Alder Lake) i Raptor Cove (architektura P-core w Raptor Lake) jest wzrost o 63% ilość pamięci podręcznej L2 dostępnej na rdzeń P, przy czym rdzenie E całkowicie podwajają pamięć podręczną L2. Nie ma wielu innych różnic w architekturze pomiędzy procesorami Intel Core 12. i 13. generacji, a mimo to Raptor Lake zdecydowanie pokonuje Alder Lake w większości zastosowań, zwłaszcza w grach. Teraz wiesz dlaczego.

Advertisement

ruch nvidia ada vram
NVIDIA wyjaśnia, że ​​ośmiokrotność pamięci podręcznej L2 oznacza drastycznie ograniczony dostęp do pamięci VRAM.

Pamięci podręczne zaczynają odgrywać ważną rolę także w grafice. Rodzina procesorów graficznych AMD RDNA 2, seria Radeon RX 6000, wykorzystywała duże „Infinity Cache”, aby zrekompensować względny brak przepustowości pamięci w porównaniu z konkurencyjnymi procesorami graficznymi „Ampere” firmy NVIDIA. NVIDIA najwyraźniej uznała to za dobry pomysł, ponieważ radykalnie zwiększyła (8-krotnie) rozmiar pamięci podręcznej L2 w swojej architekturze Ada Lovelace, aby uwzględnić zmniejszenie szerokości magistrali pamięci w tych procesorach graficznych w porównaniu z poprzednią generacją. Możemy się spodziewać, że buforowanie będzie w przyszłości kluczowym elementem projektowania procesorów graficznych i że jednostki NPU również wkrótce zaczną opracowywać własne pamięci podręczne.

Daj nam znać, jeśli uważasz, że to wyjaśnienie było w jakikolwiek sposób pomocne, jeśli masz dalsze pytania lub chcesz nas poprawić w związku z czymś, w czym się potknęliśmy. Ponadto, jeśli chcesz zobaczyć więcej takich treści wyjaśniających, zostaw nam komentarz z taką informacją.

Advertisement