Czy 4 MB pamięci podręcznej trzeciego poziomu to dużo, czy mało? Warto dopłacić do procesora, który ma jej więcej? Jaki wpływ na wydajność ma „cache L3”? Te pytania bardzo często pojawiają się w wątkach na forach dyskusyjnych w działach poświęconych procesorom. Dziś postanowiliśmy sprawdzić wpływ tego parametru na osiągi. Porównaliśmy ze sobą układy w tej samej architekturze i działające w tych samych ustawieniach, ale wyposażone w różną ilość zarówno L2, jak i L3.
Spis treści
- Dlaczego pamięć podręczna jest ważna?
- Platforma testowa i ustawienia
- AMD Athlon II X4 640, Athlon II X4 651, Phenom II X4 945 (grupa 1.)
- Grupa 1. Wyniki cząstkowe – gry
- Grupa 1. Wyniki cząstkowe – aplikacje
- AMD Athlon X4 750K, FX-4300 (grupa 2.)
- Grupa 2. Wyniki cząstkowe – gry
- Grupa 2. Wyniki cząstkowe – aplikacje
- Intel Pentium E5300, Core 2 Duo E7400, Core 2 Duo E8400 (grupa 3.)
- Grupa 3. Wyniki cząstkowe – gry
- Grupa 3. Wyniki cząstkowe – aplikacje
- Intel Core i5-2500K, Core i7-2600K (HT wył.) (grupa 4.)
- Grupa 4. Wyniki cząstkowe – gry
- Grupa 4. Wyniki cząstkowe – aplikacje
- Podsumowanie
Dlaczego pamięć podręczna jest ważna?
Pamięć podręczna to swoisty bufor danych (niezarządzany z poziomu systemu operacyjnego w przeciwieństwie do pamięci RAM), które były, są lub będą wykorzystywane przez jednostki obliczeniowe procesora. Nowoczesne procesory mają przynajmniej dwa jej poziomy (L1 oraz L2), a większość tych najwydajniejszych ma jeszcze trzeci (L3). Praktycznie zawsze pojemność poszczególnych poziomów rośnie wraz z liczbą przy literze. Dlaczego ten parametr jest tak ważny?
Poniżej zamieszczamy dwa wykresy obrazujące przepustowość poszczególnych sekcji pamięci podręcznej i RAM-u oraz czas dostępu do nich. No właśnie: co to za układ? Pozostawimy to tajemnicą, poczekamy na Wasze propozycje. Jedyną wskazówką niech będzie to, że działał on ze standardową częstotliwością :)
Wróćmy do analizy wykresów. Łatwo z nich wyczytać, że L1 zapewnia około pięciokrotnie większą przepustowość (w odczycie) niż RAM. Jednak to nie wszystko: czas dostępu do pamięci podręcznej pierwszego poziomu jest krótszy nawet 25-krotnie!
Jeśli dodamy, że procesor cały czas operuje na jakichś danych, to łatwo będzie sobie wyobrazić, jaka byłaby wydajność dzisiejszych układów, gdyby były one pozbawione jakiejkolwiek pamięci podręcznej.
Dlaczego AMD i Intel nie sprzedają procesorów na przykład z 50 MB pamięci podręcznej?
Producenci – zarówno AMD, jak i Intel – muszą tu zawsze iść na pewien kompromis. Najważniejszym powodem są ograniczenia konstrukcyjne. Pamięć podręczna zajmuje ogromną liczbę tranzystorów i jest też jednym z głównych elementów pochłaniających energię. Dlatego dobierając jej pojemność, trzeba niejako wyważyć wydajność, pobór energii oraz powierzchnię rdzenia, a tym samym koszt produkcji. Chodzi też o to, że w specyficznych konstrukcjach im więcej pamięci podręcznej, tym czas dostępu do niej może być dłuższy, co wydaje się logiczne, biorąc pod uwagę, że większy obszar pamięci trzeba „przeszukać”.
Właśnie z tych powodów tańsze jednostki są pozbawione trzeciego poziomu pamięci podręcznej – są znacznie tańsze w produkcji. Bardzo dobrym przykładem jest tutaj porównanie pierwszego Phenoma z Phenomem II. Ten pierwszy miał 2 MB L3 i 450 mln tranzystorów, drugi zaś miał 6 MB L3, a liczba tranzystorów wynosiła w nim 758 mln. Większość z tej różnicy przypada właśnie na L3.
Poziomy pamięci podręcznej w Phenomie II X4 (Deneb)
No dobrze, ale po co w takim razie są te trzy poziomy?
To, co przed chwilą napisaliśmy, pośrednio wskazuje, dlaczego procesory wyposaża się w dwa lub trzy poziomy pamięci podręcznej. Dane zgromadzone w L1 to te, które akurat teraz są potrzebne, do nich jednostki wykonawcze sięgają lub mogą sięgnąć w każdej chwili. Jest ona względnie mało pojemna, ale dzięki temu czas dostępu do niej (znów – patrz wykresy powyżej) jest tak krótki. L2 to po prostu kolejny poziom buforu. Są do niego ściągane – z L3 lub bezpośrednio z RAM-u – te dane, które mogą być na przykład za chwilę potrzebne. Ponieważ czas dostępu do L2 nie jest już tak kluczowy, to może być jej więcej, a jej konstrukcja może być prostsza. Z L3 jest identycznie. Obecnie jest ona bardzo często używana do synchronizowania pracy wielu rdzeni: najczęściej to za jej pośrednictwem wymieniają się tymi samymi lub w jakiś sposób powiązanymi ze sobą danymi, na których operują.
Każdy poziom pamięci podręcznej jest i tak znacznie szybszy od nawet najszybszego RAM-u, zatem bardzo duża jej pojemność jest wskazana z punktu widzenia wydajności. Jest to szczególnie ważne w przypadku procesorów wielordzeniowych. Nie bez powodu sześciordzeniowe Core i7 mają jej 12 MB lub 16 MB, a czterordzeniowe – maksymalnie 8 MB.
Dlaczego AMD FX-8350 ma łącznie 16 MB tej pamięci, a Intel Core i7-3770K – tylko 8 MB?
Wynika to z tego, że pamięć podręczna w procesorach AMD jest typu „exclusive”, czyli dane znajdujące się w L1 nie znajdują się również (jako kopia) w L2. W przypadku jednostek Intela, w których jest ona typu „inclusive”, dane zawarte w L1 generalnie znajdują się również w L2, jak i L3 (jeśli jest). Pomijając korzyści i straty płynące z użycia każdego z tych rozwiązań, w przypadku jednostek AMD rzeczywiście możemy sumować pojemność poszczególnych poziomów, natomiast w przypadku Intela – nie. Nie należy jednak wyciągać z tego jakichkolwiek wniosków co do wydajności tych układów!
Więcej pamięci podręcznej nie zawsze oznacza wyższą wydajność!
Dzieje się tak w sytuacji, gdy dane właśnie potrzebne do obliczeń nie znajdą się w żadnym z poziomów pamięci podręcznej. Procesor działa bowiem w ten sposób, że w pierwszej kolejności szuka danych w L1. Jeśli ich nie znajdzie, to szuka w L2, a jeżeli i tam ich nie ma, to szuka w L3, jeśli zaś i tutaj ich nie będzie, to dopiero wówczas sięgnie do RAM-u. Łatwo teraz wyobrazić sobie sytuację, w której procesor z 2 MB L3 sięgnie do pamięci operacyjnej wcześniej niż ten sam procesor, ale wyposażony w 6 MB L3.
Oczywiście, celem konstruktorów jest całkowite wyeliminowanie tego problemu poprzez system pobrań wyprzedzających oraz przewidywania (predykcji) rozgałęzień kodu. Jeśli te funkcje działają poprawnie, to do wyżej opisanej sytuacji nigdy nie dochodzi. Dobre algorytmy wczesnego pobierania danych mogą skutecznie zastąpić większą pojemność pamięci podręcznej (szczególnie przy kiepskich algorytmach).
Co porównaliśmy?
Test podzieliliśmy na cztery etapy, obejmujące różne rodziny procesorów. Wyników nie należy ze sobą porównywać, gdyż dobór parametrów często wynikał z tego, że mieliśmy już przetestowany jakiś procesor w danym ustawieniu (do innego testu, który wcześniej ukazał się na łamach PCLab.pl).
- Grupa 1. AMD Athlon II X4 640 (4 × 512 kB L2, 0 MB L3), AMD Athlon X4 (4 × 1024 kB L2, 0 MB L3) oraz AMD Phenom II X4 945 (4 × 512 kB L2, 6 MB L3) – wszystkie taktowane z częstotliwością 3 GHz.
- Grupa 2. AMD Athlon X4 750K (2 × 2 MB L2, 0 MB L3) kontra AMD FX-4300 (2 × 2 MB L2, 4 MB L3) – obydwa taktowane z częstotliwością 4,5 GHz.
- Grupa 3. Intel Pentium E5300 (2 MB L2), Intel Core 2 Duo E7400 (3 MB L2), Intel Core 2 Duo E8400 (6 MB L2) – wszystkie taktowane z częstotliwością 4 GHz.
- Grupa 4. Intel Core i5-2500K (6 MB L3), Intel Core i7-2600K z wyłączoną funkcją Hyper-Threading (8 MB L3) – obydwa taktowane z częstotliwością 4,5 GHz.
Co ważne, wnioski dotyczące wpływu pamięci podręcznej w danej architekturze nie mają przełożenia na inną, a tym bardziej nie można ich odnosić do nadchodzących konstrukcji!
- Dlaczego pamięć podręczna jest ważna?
- Platforma testowa i ustawienia
- AMD Athlon II X4 640, Athlon II X4 651, Phenom II X4 945 (grupa 1.)
- Grupa 1. Wyniki cząstkowe – gry
- Grupa 1. Wyniki cząstkowe – aplikacje
- AMD Athlon X4 750K, FX-4300 (grupa 2.)
- Grupa 2. Wyniki cząstkowe – gry
- Grupa 2. Wyniki cząstkowe – aplikacje
- Intel Pentium E5300, Core 2 Duo E7400, Core 2 Duo E8400 (grupa 3.)
- Grupa 3. Wyniki cząstkowe – gry
- Grupa 3. Wyniki cząstkowe – aplikacje
- Intel Core i5-2500K, Core i7-2600K (HT wył.) (grupa 4.)
- Grupa 4. Wyniki cząstkowe – gry
- Grupa 4. Wyniki cząstkowe – aplikacje
- Podsumowanie
Tak czy siak dobra robota, wreszcie można się przekonać naocznie gdzie i kiedy przydaje się cache.
Odnoszę wrażenie, że czym nowsza gra tym gorzej działa bez cache - mam rację?
Raczej nie. Chyba, że za każdym razem gra robiłaby dokładnie to samo. Problem z przewidywaniem jest w wielu miejscach i nie jest to taka prosta sprawa, jak to może wyglądać. Polecam poczytać chociażby: http://wazniak.mimuw.edu.pl/index.php?titl...w_komputerowych