Gdzie dokładnie znajdują się pamięci podręczne L1, L2 i L3 w komputerze?

32

Gdzie dokładnie znajdują się pamięci podręczne L1, L2 i L3 w komputerze?

Wiem, że używamy pamięci podręcznej w celu zwiększenia wydajności, pobierając dane i instrukcje z pamięci podręcznej zamiast pamięci głównej.

Oto moje pytania

  1. Gdzie dokładnie znajduje się pamięć podręczna L1? . jest na układzie CPU?
  2. Gdzie dokładnie znajduje się pamięć podręczna L2?

  3. Gdzie dokładnie znajduje się pamięć podręczna L3? jest na płycie głównej?

Myślę, że najnowsze procesory SMP używają pamięci podręcznej 3-poziomowej, więc chcę zrozumieć hierarchię poziomu pamięci podręcznej i ich architekturę.

Kok
źródło
1
Dokładna hierarchia różni się w zależności od procesora. Aby dowiedzieć się o hierarchii pamięci podręcznej na własnym komputerze, możesz użyć narzędzia CoreInfo.exe firmy SysInternal ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )
2
Ponadto, im większa pamięć podręczna (L3> L2> 1), tym dalej znajduje się od samego rdzenia (na przykład opóźnienie dostępu do L3 większe niż L1).

Odpowiedzi:

48

Zacznijmy od tego:

Myślę, że najnowsze procesory SMP używają pamięci podręcznej 3-poziomowej, więc chcę zrozumieć hierarchię poziomu pamięci podręcznej i ich architekturę.

Aby zrozumieć pamięć podręczną, musisz wiedzieć kilka rzeczy:

Procesor ma rejestry. Wartości w tym mogą być użyte bezpośrednio. Nic nie jest szybsze.

Nie możemy jednak dodawać nieskończonych rejestrów do układu. Te rzeczy zajmują miejsce. Jeśli zwiększymy układ, staje się on droższy. Częściowo dlatego, że potrzebujemy większego układu (więcej krzemu), ale także dlatego, że rośnie liczba układów z problemami.

(Wyobraź sobie wyimaginowany opłatek z 500 cm 2. Wycinam z niego 10 żetonów, każdy z nich ma rozmiar 50 cm 2. Jeden z nich jest zepsuty. Odrzucam go i pozostawiam 9 działających żetonów. Teraz weź ten sam wafel i kroję 100 żetonów, każdy dziesięć razy mniejszy. Jeden z nich, jeśli jest złamany. Odrzucam zepsuty układ i pozostało mi 99 działających żetonów. To ułamek straty, którą w innym przypadku miałbym. Zrekompensować większe chipy musiałbym zapytać o wyższe ceny. Więcej niż cena dodatkowego krzemu)

To jeden z powodów, dla których chcemy małych, niedrogich układów.

Jednak im bliżej procesora znajduje się pamięć podręczna, tym szybciej można uzyskać do niej dostęp.

Łatwo to również wyjaśnić; Sygnały elektryczne zbliżają się do prędkości światła. To jest szybkie, ale wciąż skończona prędkość. Nowoczesne procesory współpracują z zegarami GHz. To też jest szybkie. Jeśli wezmę procesor 4 GHz, sygnał elektryczny może podróżować około 7,5 cm na takt zegara. To 7,5 cm w linii prostej. (Żetony nie są prostymi połączeniami). W praktyce potrzebujesz znacznie mniej niż 7,5 cm, ponieważ nie pozwala to czipom na prezentację żądanych danych i na powrót sygnału.

Podsumowując, chcemy, aby pamięć podręczna była jak najbliżej fizycznie. Co oznacza duże żetony.

Te dwa elementy muszą być zrównoważone (wydajność vs. koszt).

Gdzie dokładnie są pamięci podręczne L1, L2 i L3 w komputerze?

Zakładając, że sprzęt jest tylko w stylu PC (komputery mainframe są zupełnie inne, w tym pod względem stosunku wydajności do kosztów);

IBM XT
Oryginalny 4.77 MHz jeden: brak pamięci podręcznej. CPU uzyskuje bezpośredni dostęp do pamięci. Odczyt z pamięci byłby zgodny z następującym wzorem:

  • Procesor umieszcza adres, który chce odczytać, na szynie pamięci i potwierdza flagę odczytu
  • Pamięć umieszcza dane na szynie danych.
  • CPU kopiuje dane z magistrali danych do swoich wewnętrznych rejestrów.

80286 (1982)
Nadal brak pamięci podręcznej. Dostęp do pamięci nie stanowił dużego problemu w przypadku wersji o niższej prędkości (6 MHz), ale szybszy model pracował do 20 MHz i często musiał opóźniać dostęp do pamięci.

Otrzymasz taki scenariusz:

  • Procesor umieszcza adres, który chce odczytać, na szynie pamięci i potwierdza flagę odczytu
  • Pamięć zaczyna umieszczać dane na szynie danych. Procesor czeka.
  • Pamięć zakończyła pobieranie danych i jest teraz stabilna na magistrali danych.
  • CPU kopiuje dane z magistrali danych do swoich wewnętrznych rejestrów.

To dodatkowy krok spędzony na oczekiwaniu na pamięć. W nowoczesnym systemie, który może być z łatwością 12 kroków, dlatego mamy pamięć podręczną .

80386 : (1985)
Procesory stają się szybsze. Zarówno na zegar, jak i przy wyższych częstotliwościach zegara.
Pamięć RAM jest szybsza, ale nie tak szybsza jak procesory.
W rezultacie potrzeba więcej stanów oczekiwania. Niektóre płyty główne to obejść dodając cache (który byłby 1 st poziom cache) na płycie głównej.

Odczyt z pamięci zaczyna się teraz od sprawdzenia, czy dane są już w pamięci podręcznej. Jeśli tak, jest odczytywany ze znacznie szybszej pamięci podręcznej. Jeśli nie ta sama procedura, jak opisana w 80286

80486 : (1989)
Jest to pierwszy procesor tej generacji, który ma trochę pamięci podręcznej na procesorze.
Jest to zunifikowana pamięć podręczna o pojemności 8 KB, co oznacza, że ​​jest używana do przechowywania danych i instrukcji.

W tym czasie powszechne staje się umieszczanie 256 KB szybkiej pamięci statycznej na płycie głównej jako pamięci podręcznej drugiego poziomu. Zatem 1 st poziom pamięci podręcznej procesora, 2 nd cache na płycie głównej poziom.

Płyta główna 486 z zaznaczoną lokalizacją procesora i pamięcią podręczną drugiego poziomu

80586 (1993)
Model 586 lub Pentium-1 wykorzystuje pamięć podręczną podziału poziomu 1. 8 KB każdy na dane i instrukcje. Pamięć podręczna została podzielona, ​​aby pamięć podręczną danych i instrukcji można było indywidualnie dostroić do konkretnego zastosowania. Nadal mają mały, ale bardzo szybko 1 st cache pobliżu procesora i większe, ale wolniej 2 nd cache na płycie głównej. (W większej odległości fizycznej).

W tym samym obszarze Pentium 1 Intel wyprodukował Pentium Pro („80686”). W zależności od modelu układ ten miał wbudowaną pamięć podręczną o pojemności 256 KB, 512 KB lub 1 MB. Był również znacznie droższy, co łatwo wyjaśnić za pomocą poniższego obrazu.

Obraz procesora Pentium Pro, model pamięci podręcznej 256 KB

Zauważ, że pamięć podręczna zajmuje połowę miejsca w układzie. Dotyczy to modelu 256 KB. Większa pamięć podręczna była technicznie możliwa, a niektóre modele były produkowane z pamięcią podręczną 512 KB i 1 MB. Cena rynkowa tych produktów była wysoka.

Zauważ też, że ten układ zawiera dwie matryce. Jeden z rzeczywistą CPU i 1 st cache, oraz drugą dyszę z 256KB 2 nd pamięci podręcznej.

Pentium-2

Pentium 2 jest rdzeniem pro pentium. Ze względów ekonomicznych nie 2 nd cache jest w CPU. Zamiast tego, co jest sprzedawane aa CPU nam PCB z oddzielnych chipów dla procesora (i 1 st cache) i 2 nd pamięci podręcznej.

Wraz z postępem technologii i zaczniemy stawiać tworzyć chipy z mniejszych elementów dostaje to możliwe finansowo umieścić 2 nd cache powrotem w rzeczywistej matrycy procesora. Jednak nadal istnieje podział. Bardzo szybka 1 st cache przytuliła się do CPU. Z jednej 1 st cache na rdzeń procesora i większej, ale mniejszej fast 2 nd cache obok rdzenia.

Obraz procesora pentium 2 (zarówno z pokrywą, jak i bez)

Pentium-3
Pentium-4
Nie zmienia się to dla pentium-3 ani pentium-4.

W tym czasie osiągnęliśmy praktyczny limit szybkości taktowania procesorów. 8086 lub 80286 nie wymagały chłodzenia. Pentium-4 działający z częstotliwością 3,0 GHz wytwarza tak dużo ciepła i zużywa tyle energii, że bardziej praktyczne staje się umieszczenie dwóch oddzielnych procesorów na płycie głównej zamiast jednego szybkiego.

(Dwa procesory 2,0 GHz zużywałyby mniej energii niż pojedynczy identyczny procesor 3,0 GHz, ale mogłyby wykonać więcej pracy).

Można to rozwiązać na trzy sposoby:

  1. Zwiększ wydajność procesorów, aby działały więcej przy tej samej prędkości.
  2. Użyj wielu procesorów
  3. Użyj wielu procesorów w tym samym „układzie”.

1) Jest procesem ciągłym. Nie jest nowy i nie przestanie.

2) Dokonano tego wcześnie (np. Z podwójnymi płytami głównymi Pentium-1 i chipsetem NX). Do tej pory była to jedyna opcja budowy szybszego komputera.

3) Wymaga procesorów, w których wiele „rdzeni procesora” jest wbudowanych w jeden układ. (Nazwaliśmy ten procesor dwurdzeniowym procesorem, aby zwiększyć zamieszanie. Dziękujemy za marketing :))

Obecnie nazywamy procesor „rdzeniem”, aby uniknąć nieporozumień.

Otrzymujesz teraz układy takie jak pentium-D (duet), czyli w zasadzie dwa rdzenie pentium-4 na tym samym układzie.

Early pentium-D (2 rdzenie P4)

Pamiętasz zdjęcie starego Pentium-Pro? Przy ogromnym rozmiarze pamięci podręcznej?
Widzisz dwa duże obszary na tym zdjęciu?

Okazuje się, że możemy udostępnić drugą pamięć podręczną obu rdzeniom procesora. Prędkość nieznacznie spadnie, ale współużytkowana pamięć podręczna drugiego rzędu 512 kB jest często szybsza niż dodanie dwóch niezależnych pamięci podręcznych drugiego poziomu o połowę mniejszej wielkości.

To ważne dla twojego pytania.

Oznacza to, że jeśli przeczytasz coś z jednego rdzenia procesora, a później spróbujesz go odczytać z innego rdzenia, który dzieli tę samą pamięć podręczną, otrzymasz trafienie w pamięć podręczną. Pamięć nie będzie musiała być dostępna.

Ponieważ programy migrują między procesorami, w zależności od obciążenia, liczby rdzenia i harmonogramu, można uzyskać dodatkową wydajność, przypinając programy korzystające z tych samych danych do tego samego procesora (trafienia w pamięci podręcznej na poziomie L1 i niższym) lub na tych samych procesorach, które współużytkować pamięć podręczną L2 (i w ten sposób uzyskać spudłowanie na L1, ale trafienia na odczytach z pamięci podręcznej L2).

Dlatego w późniejszych modelach zobaczysz współdzielone pamięci podręczne poziomu 2.

Obraz otwartego procesora Core2

Jeśli programujesz dla nowoczesnych procesorów, masz dwie opcje:

  1. Nie przejmuj się. System operacyjny powinien być w stanie zaplanować różne rzeczy. Harmonogram ma duży wpływ na wydajność komputera, a ludzie włożyli wiele wysiłku w optymalizację tego. O ile nie zrobisz czegoś dziwnego lub nie zoptymalizujesz pod kątem konkretnego modelu komputera, lepiej będzie, jeśli użyjesz domyślnego harmonogramu.
  2. Jeśli potrzebujesz każdej ostatniej wydajności i szybszego sprzętu nie jest opcją, spróbuj pozostawić bieżniki, które mają dostęp do tych samych danych na tym samym rdzeniu lub na rdzeniu z dostępem do wspólnej pamięci podręcznej.


Zdaję sobie sprawę, że nie wspomniałem jeszcze o pamięci podręcznej L3, ale nie są one różne. Pamięć podręczna L3 działa w ten sam sposób. Większy niż L2, wolniejszy niż L2. I często jest dzielony między rdzeniami. Jeśli jest obecny, jest znacznie większy niż pamięć podręczna L2 (w przeciwnym razie nie miałoby to sensu) i często jest dzielony ze wszystkimi rdzeniami.

modernCPUwithL3.png

Hennes
źródło
Cóż za wspaniały napis!
lukas.pukenis
„ale współużytkowana druga pamięć podręczna 512 MB to„ Myślę, że to 512 KB.
lukas.pukenis
taka doskonała odpowiedź! dzięki za udostępnienie człowieka
samsamara,
14

Że pamięci podręczne są wewnętrznymi procesorami. Niektóre są współdzielone między rdzeniami, inne są indywidualne, zależy od implementacji. Ale wszystkie z nich znajdują się na chipie. Kilka szczegółów: procesor Intel Intel® Core ™ i7, tutaj :

  • Instrukcja 32 KB i pamięć podręczna pierwszego poziomu 32 KB dla każdego rdzenia
  • Współużytkowana pamięć podręczna drugiego poziomu instrukcji / danych (L2) o wielkości 256 KB dla każdego rdzenia
  • 8 MB współdzielonej pamięci podręcznej instrukcji / danych ostatniego poziomu (L3), współdzielonej przez wszystkie rdzenie

Zdjęcie procesora (przepraszam, nie znam dokładnego modelu). Widać, że pamięć podręczna zajmuje znaczny obszar na chipie:

alternatywny tekst

Andrey
źródło
1
Jeśli przez chip masz na myśli krzemową matrycę, to ostatni poziom bufora może być poza chipem. Np. IBM zEC12 ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) wykorzystuje moduł wieloukładowy z sześcioma procesorami i dwoma współużytkowanymi pamięciami podręcznymi z pamięcią podręczną L4. Crystal Well firmy Intel zapewnia także pamięć podręczną poza układem L4 (również przy użyciu eDRAM).
Paul A. Clayton,
5

Pamięć podręczna jest prawie zawsze w układzie, co zapewnia najszybszy dostęp. Oto ładny schemat przedstawiający czterordzeniową matrycę procesora Intel z podświetloną pamięcią podręczną L3. Kiedy patrzysz na takie zdjęcia kości procesora, duże jednolite obszary są zwykle bankami pamięci na chipie używanymi jako pamięć podręczna.

Nehalem Die (http://www.legitreviews.com/article/824/1/)

Michael Petito
źródło
5

Obecnie pamięci podręczne są na kości procesora. Kiedyś znajdowały się czasem na płycie głównej lub na płycie głównej procesora, ale nie sądzę, że istnieją obecnie procesory, które używają pamięci podręcznych układów.

Douglas Leeder
źródło
1
+1 za część tych dni . W dawnych czasach było inaczej. (np. pamięć podręczna L2 na płycie głównej w czasie Cyrix / Pentium-1)
Hennes,
0

Nie jestem pewien co do L3, ale L1 / L2 zawsze znajduje się na procesorze. Hierarchicznie rzecz biorąc, L1 jest zwykle pamięcią podręczną instrukcji, L2 i L3 są pamięciami podręcznymi danych.

Jas
źródło
L1 może być współdzieloną pamięcią podręczną (pamięć podręczną instrukcji i danych). Istnieją również procesory z danymi L1 i pamięcią podręczną instrukcji L1. Pamięć podręczna L2 nie zawsze znajduje się na procesorze (nawet L1 nie musi być na procesorze, ale pamiętam tylko jeden komputer, na którym tak było).
Hennes,
0

L1 znajduje się na układzie procesora, L2 znajduje się między procesorem a pamięcią główną, ale warto wiedzieć, że w niektórych systemach L2 znajduje się na układzie procesora, podczas gdy w innym systemie L2 znajduje się na płycie głównej, a L3 jest stale znajduje się na chipie płyty głównej.

Qurban Yazdani
źródło