Dlaczego pamięć podręczna procesora jest tak szybka?


58

Co sprawia, że ​​pamięć podręczna procesora jest o wiele szybsza niż pamięć główna? Widzę pewne korzyści w wielowarstwowym systemie pamięci podręcznej. Ma to sens, że wyszukiwanie w mniejszej pamięci podręcznej jest szybsze. Ale musi być coś więcej.


2
Co rozumiesz przez pamięć główną ?
marcocs

1
@marcocs edytowane dla jasności. Mam na myśli pamięć podręczną procesora i główną pamięć systemową, tj. Wymienne ściemniacze na większości płyt głównych.
ConditionRacer


2
@ratchetfreak Uh ... OP dość wyraźnie prosi o bliższą przyczynę, a nie ostateczną przyczynę.
Kyle Strand

1
Wow, nie sądziłem, że kiedykolwiek skorzystam z mojego stopnia inżynierii komputerowej. Przyjęta odpowiedź nie jest tak naprawdę odpowiedzią. Jest tak, ponieważ pamięć podręczna procesora działa ze znacznie wyższą częstotliwością taktowania (częstotliwość taktowania procesora, około 4 GHz), podczas gdy pamięć główna działa z częstotliwością taktowania magistrali (około 1600 MHz). Co więcej, pamięć podręczna procesora może być odczytywana w 4 cyklach zegara, ale pamięć RAM systemu może zająć 100 cykli zegara. Również systemowa pamięć RAM ma problem z innymi urządzeniami peryferyjnymi, takimi jak dysk lub sieć, podczas gdy pamięć podręczna procesora jest dedykowana. Im dłuższy drut, tym wolniejsza częstotliwość zegara może działać. tinyurl.com/zkdsstd
Chloe

Odpowiedzi:


115

W przypadku pamięci podręcznej procesora jest szybszy, ponieważ jest na tej samej kości co procesor. Innymi słowy, żądane dane nie muszą być przesyłane do procesora; już tam jest.

W przypadku pamięci podręcznej na dysku twardym jest szybsza, ponieważ znajduje się w pamięci półprzewodnikowej, a nie na obracających się talerzach.

W przypadku pamięci podręcznej na stronie internetowej jest to szybsze, ponieważ dane zostały już pobrane z bazy danych (która w niektórych przypadkach może być zlokalizowana w dowolnym miejscu na świecie).

Więc chodzi o miejscowości , przeważnie. Pamięć podręczna eliminuje krok przesyłania danych .

Lokalizacja to fantazyjny sposób na powiedzenie danych, które są „blisko siebie” w czasie lub przestrzeni. Buforowanie z mniejszą, szybszą (ale ogólnie droższą) pamięcią działa, ponieważ zazwyczaj stosunkowo niewielka ilość danych ogólnych to dane, do których najczęściej uzyskuje się dostęp.

Dalsza
pamięć podręczna (przetwarzanie) na Wikipedii


29
Myślę, że to dobra odpowiedź. Warto jednak dodać, że istnieje również hierarchia kosztów buforowania: pamięć sieciowa jest tańsza niż lokalny dysk twardy, który jest tańszy niż pamięć RAM, która jest znacznie tańsza niż pamięć podręczna na procesorze. Gdyby tak nie było, po prostu produkowalibyśmy procesory z 120 GB pamięci na układzie i gotowe.
Charles E. Grant

1
@ConditionRacer: Te same powody. L1 jest szybszy, ale droższy, więc dają ci trochę bardzo drogiego L1 i więcej tańszego, ale wolniejszego L2. Zobacz także stackoverflow.com/questions/3699582/...
Robert Harvey

9
„Dlaczego L1 jest szybszy niż L2” - pytanie nie
wchodzi w grę

5
@ConditionRacer IIRC, dotyczy technologii stosowanej do implementacji pamięci. Myślę, że L2 to DRAM na chipie, podczas gdy L1 to SRAM lub coś w tym rodzaju; znacznie droższy, ale znacznie szybszy. Minęło ponad dziesięć lat, odkąd pracowałem przy projektowaniu procesorów…
Donal Fellows

4
@ CharlesE.Grant: chociaż hierarchia kosztów jest dobrym przykładem, istnieje jeszcze jeden powód, dla którego nie mamy 120 GB pamięci podręcznej na chipie: adresowanie większej pamięci wymaga większych adresów, a więc większych instrukcji lub większej liczby cykli procesora. Aby być najszybszym, liczba rejestrów musi pozostać stosunkowo niewielka. Oczywiście oprócz rejestrów można mieć pamięć na chipie , ale najszybszy poziom musi pozostać mały, inaczej nie byłby już tak szybki.
vsz

33

Jest szybszy, ponieważ oba są bliżej i ponieważ jest to SRAM, a nie DRAM.

SRAM jest i może być znacznie szybszy niż DRAM, wartości są przechowywane statycznie (S w S RAM), więc nie trzeba ich odświeżać, co zabiera cykle. DRAM jest dynamiczny, podobnie jak małe akumulatory, musisz je regularnie ładować, aby nie wyczerpały się i nie stały się zerami. To kradnie czas cyklu oprócz tego, jak musisz uzyskać dostęp do bitów itp.

Będąc na tej samej kości, co procesor lub w jego pobliżu, zmniejsza on podróż w obie strony, zarówno L1, jak i L2 są szybsze niż DRAM z perspektywy dostępu.

Dostęp do pamięci SRAM jest szybszy niż w przypadku pamięci DRAM przenoszonej z jabłek do jabłek, a pamięci podręczne są zwykle na chipie lub bliżej lub w szybszych autobusach niż pamięć DRAM, co również przyspiesza czas dostępu.


1
SRAM jest również bardziej energochłonny na bit, więc musisz dodać do niego grzejniki, a wszystko, co zasilane jest baterią, ucierpi.
9000

1
Nie wspominając już o tym, że powiększenie SRAM sprawia, że ​​DZIAŁA wolniej.
Darkhogg

zgodził się, więcej mocy i wolniej w porównaniu do innych sramów. Myślę, że to 4 tranzystory na bit dla sram i 1 na bit dla dram. dram polega na pojemności u płodu, gdzie sram opiera się na starej, dobrej logice. więc musisz cały czas zasilać wszystkie tranzystory, a nie tylko okresowo pompować ładunek.
old_timer

4
SRAM w pamięci podręcznej zwykle wynosi 6T, a nie 4T. Ponadto SRAM (z pewnością wariant 6T) jest bardziej energooszczędny. Rzeczywistym poborem mocy w pamięci DRAM jest cykl odświeżania, a SRAM po prostu tego nie potrzebuje. Tranzystory SRAM pobierają energię podczas przełączania, kondensator DRAM cały czas przecieka. Jeśli zastąpisz nieszczelną osłonę pamięci DRAM, uzyskasz pamięć EEPROM, ale to nie jest szybkie: jeśli trudno jest wyciec ładunku, trudno jest go również usunąć w normalny sposób.
MSalters

@dwelch Przetworniki CMOS FET nie pobierają energii, jeśli są w stanie otwartym lub zamkniętym, więc argument dotyczący zużycia energii jest nieprawidłowy. Co więcej, jest to przełączanie logiczne CMOS, które powoduje, że procesory zużywają najwięcej mocy - obecne szczyty w stanie pośrednim (nie-1 i nie-0), więc sytuacja jest odwrotna do tego, co mówisz :)
Ruslan

21

Jedną z rzeczy, o których należy wyraźnie wspomnieć, jest wpływ prędkości światła. Na tym filmie Grace Hopper pokazuje kawałek drutu o długości około stopy, czyli o tym, jak daleko może pokonać sygnał elektryczny w ciągu jednej nanosekundy *. Jeśli procesor pracuje z częstotliwością 3GHz, oznacza to odległość 4 "na cykl zegara. Jest to twardy fizyczny limit prędkości dostępu do pamięci. Jest to duża część tego, dlaczego bliskość procesora (jak pamięć podręczna L1), pozwala pamięć ma być szybsza.

EDYCJA * w rzeczywistości, jak daleko światło może podróżować w próżni, odległość przez miedź / krzem jest mniejsza.


2
Twardy limit dla miedzi. To dobra uwaga, nie zastanawiałem się, jak absurdalnie szybkie są nowoczesne procesory.
ConditionRacer

@ConditionRacer Właśnie dodałem poprawkę, 11,8 cala jest lekka w próżni.
Matthew Finlay

2
Musisz zmniejszyć tę liczbę o połowę, ponieważ potrzebujesz odzyskać pamięć w obie strony. To tylko 5 cm, a nie 10 cm na cykl opóźnienia w próżni .
CodesInChaos

2
Prędkość światła jest dlaczego główny zegar magistrali pamięci zatrzymał coraz szybsze kilka lat temu (2000ish?) Nie jest to bezpośredni efekt - że ma do czynienia z sygnałów logicznych CMOS nie jest już idealne fale kwadratowych przy częstotliwości magistrali - ale c pokazy wysoko w matematyce.
zwolnienie

5

Inne odpowiedzi obejmowały już wszystkie odpowiednie bity: lokalizację (i związane z tym koszty transferu danych, szerokość magistrali i zegar itd.); prędkość światła (ponownie, związana z kosztami transferu oraz szerokością i przepustowością magistrali); inna technologia pamięci (SRAM vs.DRAM). Wszystko to w świetle stosunku kosztów do wydajności .

Jeden fragment został pominięty i wspomniany właśnie w komentarzu Darkhogga: większe skrzynki mają lepsze wskaźniki trafień, ale dłuższe opóźnienia. Wprowadzono wiele poziomów pamięci podręcznej, aby rozwiązać ten problem.

Istnieje doskonałe pytanie i odpowiedź na ten temat na temat elektroniki SE

Na podstawie odpowiedzi wydaje mi się, że należy podkreślić: logika, która wykonuje wszystkie wymagane operacje odczytu pamięci podręcznej, nie jest taka prosta (szczególnie jeśli pamięć podręczna jest skojarzona z zestawem, jak większość dzisiejszych pamięci podręcznych). Wymaga bram i logiki. Tak więc, nawet jeśli wykluczymy koszt i umieramy przestrzeń

Gdyby ktoś próbował zaimplementować absurdalnie dużą pamięć podręczną L1, logika wykonująca wszystkie wymagane operacje odczytu pamięci podręcznej również stałaby się duża. W pewnym momencie opóźnienie propagacji w całej tej logice byłoby zbyt długie, a operacje, które wcześniej zajęły tylko jeden cykl zegara, musiałyby zostać podzielone na kilka cykli zegara. Zwiększy to opóźnienie.


5

W innych odpowiedziach pojawia się wiele dobrych punktów, ale wydaje się, że brakuje jednego czynnika: opóźnienia dekodowania adresu.

Poniżej przedstawiono znaczne uproszczenie działania dekodowania adresu pamięci, ale daje dobre wyobrażenie o tym, dlaczego duże układy DRAM są generalnie dość powolne.

Gdy procesor potrzebuje dostępu do pamięci, wysyła polecenie do układu pamięci, aby wybrać określone słowo, którego chce użyć. To polecenie nazywa się Wybór adresu kolumny (na razie będziemy ignorować adresy wierszy). Układ pamięci musi teraz aktywować żądaną kolumnę, co robi, wysyłając adres kaskadą bramek logicznych, aby wykonać pojedynczy zapis, który łączy się ze wszystkimi komórkami w kolumnie. W zależności od tego, w jaki sposób zostanie zaimplementowany, dla każdego bitu adresu będzie pewien czas opóźnienia, aż wynik wyjdzie na drugi koniec. Nazywa się to opóźnieniem CAS pamięci. Ponieważ te bity muszą być badane sekwencyjnie, proces ten trwa znacznie dłużej niż cykl procesora (który zwykle czeka tylko kilka tranzystorów w sekwencji). Zajmuje to również dużo dłużej niż cykl magistrali (który jest zwykle kilka razy wolniejszy niż cykl procesora). Polecenie CAS na typowym układzie pamięci najprawdopodobniej przyjmie kolejność 5ns (IIRC - minęło trochę czasu, odkąd spojrzałem na taktowanie), co jest o ponad rząd wielkości wolniejsze niż cykl procesora.

Na szczęście dzielimy adresy na trzy części (kolumna, wiersz i rząd), co pozwala na mniejsze części i przetwarzamy je jednocześnie, w przeciwnym razie opóźnienie byłoby jeszcze dłuższe.

Pamięć podręczna procesora nie ma jednak tego problemu. Jest nie tylko znacznie mniejszy, więc tłumaczenie adresu jest łatwiejszym zadaniem, tak naprawdę nie musi tłumaczyć więcej niż niewielkiego fragmentu adresu (w niektórych wariantach wcale go nie ma), ponieważ jest skojarzony. Oznacza to, że obok każdej buforowanej linii pamięci znajdują się dodatkowe komórki pamięci, które przechowują część (lub całość) adresu. Oczywiście powoduje to, że pamięć podręczna jest jeszcze droższa, ale oznacza to, że można zapytać wszystkie komórki, aby sprawdzić, czy mają one konkretną linię pamięci, której chcemy jednocześnie, a następnie tylko (mam nadzieję), że ma odpowiednie dane, zrzuci ją na magistrali, która łączy całą pamięć z głównym rdzeniem procesora. Dzieje się to w czasie krótszym niż cykl, ponieważ jest to o wiele prostsze.


-2

Jedną z filozofii, które badałem, był ruch sprzętowy polegający na uzyskiwaniu maksymalnej przepustowości przy minimalnym sprzęcie, gdy mówimy o jakiejkolwiek pamięci opartej na pamięci podręcznej, czy to w tym celu pamięci podręcznej procesora, pamięci podręcznej bufora czy pamięci podręcznej. Podstawowy motyw osiąga się, gdy ruch sprzętu jest najmniejszy lub nie ma go wcale w celu pobierania / odczytu / zapisu danych, a operacja kończy się szybciej.

Transfer danych z dysku -> pamięć główna (RAM) (pamięć tymczasowa) -> pamięć podręczna procesora (mniejsza pamięć tymczasowa w pobliżu procesora dla często używanych danych) -> procesor (przetwarzanie).

Pamięć podręczna procesora to mniejsza, szybsza pamięć, w której przechowywane są kopie danych z ostatnio używanych lokalizacji pamięci głównej.

Bufor bufora to główny obszar pamięci, w którym przechowywane są kopie danych z ostatnio używanych lokalizacji dysków.

Pamięć podręczna przeglądarki to katalog lub podobna przestrzeń, w której przechowywane są kopie danych z ostatnio odwiedzanych witryn przez użytkowników.

Odniesienie: Jak działa pamięć komputera


„filozofia systemów operacyjnych to…” - czy to tylko Twoja opinia, czy możesz to jakoś poprzeć?
komara

Został o tym nauczony podczas nauki Unixa przez Maurice'a Bacha. Niestety brak dokumentacji pomocniczej. Edytowane ..
roshan4074

5
Howstuffworks jest notorycznie niewiarygodne w uzyskiwaniu wiarygodnych informacji technicznych. Są dobre dla rażących uproszczeń, które przeciętny Joe i Jane mogą zrozumieć, ale o to chodzi.
jwenting
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.