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.
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.
Odpowiedzi:
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.
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.
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.
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.
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.
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