Procesory
Artykuł
Wojciech Koczyk, Środa, 23 sierpnia 2017, 11:30

Być może niektórzy z Was myślą, że pamięć podręczna (cache) nie ma większego znaczenia. Tymczasem taka pamięć pełni kluczową funkcję w każdym procesorze. Liczę, że poniższy felieton rozwieje wiele wątpliwości, a zarazem wytłumaczy ideę i działanie tego elementu. Tłumaczę zależność na przykładzie oryginalnej analogii i staram się przekazać te informacje w przystępny sposób.

Obiegowa opinia głosi, że przeciętny klient sklepu komputerowego kieruje się przede wszystkim ceną, a dopiero potem kolorem komputera. To oczywiście żart, ale nadal prawdą jest to, że kluczowe znaczenie ma, poza kwotą na metce, raczej marka niż rzeczywiste parametry sprzętu. Jeżeli klient zwraca na coś uwagę, to zwykle jest to taktowanie procesora („procesor trzy gigaherce!!!”), ewentualnie liczba rdzeni („ośmiordzeniowy FX!!!”). Są to aspekty ważne, ale jest jeszcze nie mniej istotny, a zupełnie pomijany element budowy współczesnego procesora (CPU): pamięć podręczna (cache). Podejrzewam, że nawet tutaj, wśród świadomych użytkowników komputera, jeśli już pojawi się myśl o pamięci podręcznej, to zostanie wyrażona hasłem „im więcej, tym lepiej”. Jest ono bardzo proste i jak każde uproszczenie – nie zawsze prawdziwe.

Pamięć podręczna w samej idei ma być „niewidzialna” dla użytkownika, ale nie można zapominać o tym, że znajduje się również w dyskach twardych, SSD czy kartach graficznych. Bez tej techniki dzisiejsze komputery wciąż miałyby wydajność sprzętu sprzed 20 lat.

386DX w wersji produkowanej przez AMD. Cztery kości oznaczone symbolem całki tworzą pamięć podręczną (cache) o rozmiarze 128 kB

Dziś temat ten zyskuje na aktualności. Przez wiele ostatnich lat Intel nie zmieniał organizacji pamięci podręcznej w swoich procesorach. Zrobił to dopiero w układach Skylake-X: z „inclusive” na „non-inclusive”, przy czym zmniejszył pamięć trzeciego poziomu, L3, a zwiększył pamięć drugiego poziomu, L2. Z drugiej strony AMD bywa krytykowane za rozdzielenie w układach Threadripper pamięci L3 na dwa osobne moduły. Co decyzja Intela oznacza w praktyce? Czy krytyka AMD jest słuszna?

Zanim przejdę do odpowiedzi, wyjaśnię w obrazowy sposób, w jakim celu powstała pamięć podręczna w CPU. Omówię też historię jej rozwoju.

Krótka historia młodego naukowca

Wyobraźmy sobie młodego człowieka z małej miejscowości. Osobnik ten, nazwijmy go dla prostoty wywodu X, jest niezwykle zdolny, pracowity i ambitny. Chce więc zostać wybitnym naukowcem, który zmieni świat. Dlatego już w dzieciństwie mnóstwo czyta. Na swoje nieszczęście pochodzi z małego miasta, w którym nie ma nawet biblioteki, więc książki musi zamawiać. Nim listonosz przyniesie mu kolejną pozycję, zazwyczaj mija kilka dni, które należy uznać za zmarnowane. To pierwszy etap jego kariery, niezbyt satysfakcjonujący, ale niezbędny.

X jednak się nie poddaje i po pewnym czasie udaje mu się przenieść do większego miasta. W nim ma już bibliotekę. Wypożyczenie właściwej pozycji trwa kilka godzin, resztę czasu można poświęcić na naukę. Jest to, oczywiście, ogromny postęp, ale należy pamiętać, że X już nie jest dzieckiem. Czyta znacznie szybciej, a więc potrzebuje więcej książek. Wciąż się zdarza, że tej właściwej nie ma w miejskiej bibliotece i trzeba ją zamówić. To etap drugi.

Trzeci to początek naukowej kariery. Młody naukowiec zostaje zatrudniony w ośrodku badawczym. Dostaje swoje biurko, szafkę na trochę książek i dokumentów oraz atrakcyjną asystentkę. Jej zadaniem jest dbanie o to, by w szafce znajdowały się akurat te pozycje, które w danej chwili są X potrzebne. Do zadań asystentki należy kontakt z biblioteką, albo wręcz zamawianie publikacji z innych miast. Szafka nie może być jednak zbyt duża, ponieważ im będzie większa, tym więcej czasu X będzie tracił na znalezienie w niej tego, czego potrzebuje, a przecież nie o to chodzi. Przez jakiś czas wydaje się, że sytuacja jest idealna. Niestety, X pracuje coraz szybciej, a badane przez niego problemy są coraz bardziej szczegółowe i wymagają coraz większej ilości informacji, często rozproszonych. Asystentka uwija się jak może, ale w końcu nie daje rady i stwierdza, że potrzebuje pomocy.

Przykładowe poziomy pamięci podręcznej w procesorze AMD Phenom II X4

Na szczęście X wciąż się rozwija, zaczyna też lepiej zarabiać, więc nie ma problemu z finansowaniem jego potrzeb. Pracodawca zapewnia mu dodatkowy pokój i pracownika do pomocy. Po co? Teraz, gdy jakiś dokument przestaje być potrzebny, asystentka, zamiast zwracać go do biblioteki, może na wszelki wypadek odnieść go do pokoju obok. Być może jeszcze się przyda? (Warto to zapamiętać, wrócę do tego później). Jest jeszcze drugi powód. Powiedzmy, że X komunikuje asystentce, że potrzebny mu do badań 20. numer pewnego czasopisma. Sprytny pracownik z pokoju obok może założyć, że wkrótce potrzebny będzie też 21., i zamówić go od razu, tak na wszelki wypadek. Jeśli będzie miał rację, X zaoszczędzi trochę czasu.

Ten czwarty poziom rozwoju zapewnia naukowcowi doskonałe warunki pracy. W swojej podręcznej szafce zazwyczaj ma dokładnie to, czego potrzebuje. Dodatkowo łatwo mu to znaleźć, bo panuje tam ład i porządek. Dba o to asystentka, która nie musi się przemęczać, biegając do biblioteki, bo tym zajmuje się pracownik w pokoju obok. Ten czwarty etap właściwie mógłby trwać cały czas, gdyby nie brutalna rzeczywistość.

X dociera do szczytu swoich możliwości. Ma ogromną wiedzę i nie mniejsze doświadczenie, ale już nie jest najmłodszy. Oczywiście, pracuje wydajnie, rozwiązuje skomplikowane problemy, ale liczba zadań go przerasta. Okazuje się jednak, że w tym samym mieście jest inny wybitny specjalista. Początkowo zostawiają sobie notatki w bibliotece, ale z czasem kolega po fachu zostaje zatrudniony w tym samym ośrodku na tych samych zasadach, a więc z własną asystentką i pomocniczym pokojem.

Ponieważ naukowcy często pracują nad podobnymi zagadnieniami, ośrodek badawczy finansuje trzecie pomieszczenie. To mała, wewnętrzna biblioteczka, w której naukowcy mogą się wymieniać swoimi wewnętrznymi notatkami, istotnymi publikacjami i niezbędnymi informacjami. Na tym etapie kariery przestajemy śledzić losy X, wrócimy do niego w następnym artykule.

Ocena artykułu:
Ocen: 55
Zaloguj się, by móc oceniać
matekmz (2017.08.23, 11:40)

0%
Prosiliście na forum o bardziej przystępne podejście do skomplikowanych zagadnień. Ciekaw jestem, czy ten artykuł spełni to zadanie - no i proszę o wyrozumiałość dla Wojtka, to jego debiut na łamach PCLaba! ;)
motiff (2017.08.23, 11:51)
Ocena: 0

0%
Wszystko ma swoją cenę i swoje ograniczenia.
AMD dużo eksperymentuje i na szczęście wyciąga wnioski.
Czas na zabawy niebieskich, którzy zabetonowali architekturę, że to błąd to zbierają teraz cięgi.
matekmz (2017.08.23, 12:03)

0%
SunTzu @ 2017.08.23 11:42  Post: 1090360
Rozumiem, że to coś raczej dla mniej obeznanych... interesujące są za to ostatnie fragmenty...
'AMD niesłusznie rozbiło pamięć podręczną na niezależne bloki?'

Jestem ciekaw czemu AMD nie zroibło jednej współdzielonej. To o tyle dziwne, że ten sam układ jest od Ryzenów po Epyci.... wydaje się to dość dziwne.
Jedyny argument to taki, że łatwiej wyłączyć uszkodzoną cache ale to dotyczy tylko niektórych procesorów, gdzie za rogiem są już APU.


Tak, to artykuł, który powinien trafić do osób mniej zaawansowanych technicznie.
Kubon16 (2017.08.23, 12:05)
Ocena: 41

0%
No i o to chodziło- można sie czegoś nauczyć, a nie wiecznie testy myszek.
Promilus1984 (2017.08.23, 12:07)
Ocena: 15

0%
Fajnie napisane i względnie dobre analogie, aczkolwiek czegoś brak... 3 poziomowy cache miał K6-III na płycie Socket7 (czy też supersocket7) lub K6-2+/K6-III+ jeśli były zamontowane na płycie z cache. Z historii wiemy, że taka konfiguracja miała drobną przewagę mimo iż ten L3 nie był nijak tak funkcjonalny jak L3 z obecnych procesorów.
Dalej - niektóre procesory intela miały nawet L4 w postaci eDRAM - jaką on konkretnie funkcję pełnił? Dodatkowo cache to nie tylko same pamięci, to także cała logika je obsługująca. Czyli np. TLB. Warto zaznaczyć, że przestrzeń adresowa 64bitowego procesora wynosi 64bity, ale zazwyczaj jest mniej fizycznych linii. Zatem takie phenomy miały 40 bitową przestrzeń fizycznej pamięci i 48bit wirtualnej. Z tego co wiem w kolejnych procesorach x86-64 ta przestrzeń będzie rozszerzana aż do 64bit wirtualnej i 52bit fizycznej.
kain (2017.08.23, 12:11)
Ocena: 20

0%
SunTzu @ 2017.08.23 11:42  Post: 1090360
Rozumiem, że to coś raczej dla mniej obeznanych... interesujące są za to ostatnie fragmenty...
'AMD niesłusznie rozbiło pamięć podręczną na niezależne bloki?'

To jest bardzo niefortunnie wyciety fragment ;)

Jestem ciekaw czemu AMD nie zroibło jednej współdzielonej. To o tyle dziwne, że ten sam układ jest od Ryzenów po Epyci.... wydaje się to dość dziwne.
Jedyny argument to taki, że łatwiej wyłączyć uszkodzoną cache ale to dotyczy tylko niektórych procesorów, gdzie za rogiem są już APU.

Na to masz odpowiedz w tekscie nawet. Zrobienie dwa razy wiekszego 'niedzielonego' bloku bylo by wielokrotnie drozsze.


matekmz @ 2017.08.23 12:03  Post: 1090363

Tak, to artykuł, który powinien trafić do osób mniej zaawansowanych technicznie.


Oraz takich jak SunTzu - myslacych ze sa bardziej zaawansowane niz sa w rzeczywistosci :E
kain (2017.08.23, 12:18)
Ocena: 9

0%
Promilus1984 @ 2017.08.23 12:07  Post: 1090365
Fajnie napisane i względnie dobre analogie, aczkolwiek czegoś brak... 3 poziomowy cache miał K6-III na płycie Socket7 (czy też supersocket7) lub K6-2+/K6-III+ jeśli były zamontowane na płycie z cache. Z historii wiemy, że taka konfiguracja miała drobną przewagę mimo iż ten L3 nie był nijak tak funkcjonalny jak L3 z obecnych procesorów.

Mam K6, K6-2, K6-2+,K6-III i K-6-III+, dodanie L2 w niektorych zastosowaniach zwiekszylo wydajnosc czterokrotnie. W tym kontekscie to L3 no jest, ale jego rola jest na granicy bledu pomiarowego. Niemniej jestem tego swiadom, ale tematem artykulu nie jest historia CPU gdzie bylo by miejsce na wszystkie smaczki i ciekawostki. Taki przygotowuje :)

Dalej - niektóre procesory intela miały nawet L4 w postaci eDRAM - jaką on konkretnie funkcję pełnił? Dodatkowo cache to nie tylko same pamięci, to także cała logika je obsługująca. Czyli np. TLB. Warto zaznaczyć, że przestrzeń adresowa 64bitowego procesora wynosi 64bity, ale zazwyczaj jest mniej fizycznych linii. Zatem takie phenomy miały 40 bitową przestrzeń fizycznej pamięci i 48bit wirtualnej. Z tego co wiem w kolejnych procesorach x86-64 ta przestrzeń będzie rozszerzana aż do 64bit wirtualnej i 52bit fizycznej.

A to juz kwestia balansu miedzy 'proste', a 'techniczne'. Wyszla i tak sciana tekstu, jakbym sie mial przebijac przez powyzsze kwestie musialbym napisac kolejnych kilka stron, ale mysle ze powstal by wtedy artykul dla nikogo. Poczatkujacych by przerazila trudniejsza czesc, zaawansowanych znudzila prostsza.
Edytowane przez autora (2017.08.23, 12:27)
matekmz (2017.08.23, 12:20)

0%
Zgadza się - chodzi o właściwy balans. W tym artykule nie chodziło o dokładne odwołanie się do każdego elementu historii budowy i działania procesorów, tylko przekazanie w przystępny sposób, jak działa pamięć podręczna i do czego ona tak właściwie służy.

To i tak długi tekst, ale wszelkie bardzo dokładne wyjaśnienia i odniesienia techniczne nie były jego założeniem ;)
Stjepan (2017.08.23, 12:20)
Ocena: 6

0%
Bardzo dobry tekst, ale chyba pominęliście Celerona A, bez L2, procesor kręcił się jak szalony, a nie miał cache L2.
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane