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
- Gdzie dokładnie znajduje się pamięć podręczna L1? . jest na układzie CPU?
Gdzie dokładnie znajduje się pamięć podręczna L2?
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ę.
Odpowiedzi:
Zacznijmy od tego:
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).
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:
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:
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.
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.
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.
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) 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.
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.
Jeśli programujesz dla nowoczesnych procesorów, masz dwie opcje:
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.
źródło
Ż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 :
Zdjęcie procesora (przepraszam, nie znam dokładnego modelu). Widać, że pamięć podręczna zajmuje znaczny obszar na chipie:
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło