Dlaczego pamięć podręczna L1 jest szybsza niż pamięć podręczna L2?

14

Próbuję zrozumieć, dlaczego niektóre pamięci podręczne procesora są szybsze od innych. Podczas porównywania pamięci podręcznej z czymś takim, jak pamięć główna, występują różnice w typie pamięci (SRAM vs DRAM) oraz problemy z lokalizacją (na chipie vs konieczność przejścia przez magistralę pamięci), które mogą wpływać na prędkości dostępu. Ale L1 i L2 są na ogół na tym samym chipie, a przynajmniej na tej samej kości, i myślę, że są tego samego rodzaju pamięcią. Dlaczego więc L1 jest szybszy?

ConditionRacer
źródło
9
Ponieważ jest zbudowany w ten sposób.
Ignacio Vazquez-Abrams
Istnieje wiele sposobów budowania tego samego typu pamięci RAM. Niektóre sposoby powodują, że pamięć RAM jest szybsza niż pamięć RAM wbudowana w inny sposób.
Ignacio Vazquez-Abrams
Ten sam powód, dla którego pamięć RAM DDR jest szybsza niż dysk twardy ...
hassan789,
1
powiązane: moja odpowiedź na i pytanie SO dotyczące wielkości pamięci podręcznej wyjaśnia również niektóre powody kompromisu prędkości / zużycia energii związane z posiadaniem wielopoziomowych pamięci podręcznych. Zasadniczo tworzenie superszybkiej pamięci podręcznej kosztuje moc i obszar matrycy, aby robić więcej równolegle, i jest niezgodne z dużymi rozmiarami / łączeniem, które chcesz w pamięci podręcznej ostatniego poziomu.
Peter Cordes

Odpowiedzi:

24

Nie, nie są to ten sam rodzaj pamięci RAM, nawet jeśli są na tym samym układzie, który wykorzystuje ten sam proces produkcyjny.

Ze wszystkich pamięci podręcznych pamięć podręczna L1 musi mieć możliwie najkrótszy czas dostępu (najniższe opóźnienie), w porównaniu do tego, ile pojemności musi mieć, aby zapewnić odpowiedni wskaźnik „trafień”. Dlatego jest zbudowany z wykorzystaniem większych tranzystorów i szerszych metalowych ścieżek, zmniejszając przestrzeń i moc dla prędkości. Pamięci podręczne wyższego poziomu muszą mieć większą pojemność, ale mogą sobie pozwolić na wolniejszą pamięć, dlatego używają mniejszych tranzystorów, które są ściślej upakowane.

Dave Tweed
źródło
3
Właśnie tego szukam, dzięki. Czy znasz jakieś dobre źródła, z których mogę przeczytać więcej na temat różnic?
ConditionRacer
Nie, nie od razu. Szczegóły tych kompromisów między przestrzenią / mocą / czasem, a także wybory dotyczące pojemności pamięci podręcznej i architektury, są bardzo ściśle powiązane z zastrzeżonymi szczegółami procesów producenta, więc bardzo niewiele (jeśli w ogóle) jest na ten temat publikowanych. Mogę mówić tylko ogólnie.
Dave Tweed
10
L1 jest również mniejsze, co oznacza, że ​​propagacja sygnału w jego obrębie zajmuje mniej cykli zegara: często rozmiar L1 jest określany jako największa pamięć dostępna w 1 (lub 2) zegarach.
Brian Drummond
6
Oprócz punktu Briana Drummonda, L1 zwykle wykorzystuje również dostęp równoległy do ​​znaczników danych. L2 zazwyczaj uzyskuje dostęp do znaczników najpierw (określając, w jaki sposób, jeśli jakiekolwiek trafienie), a następnie dane, zwiększając opóźnienie, ale oszczędzając energię (znaczny, biorąc pod uwagę większy rozmiar, wyższą asocjatywność i wyższą częstotliwość opuszczania). (Dostęp do L2 zwykle rozpoczyna się również po potwierdzeniu braku L1, co zwiększa jego efektywne opóźnienie).
Paul A. Clayton
@BrianDrummond - mniejszy zarówno pod względem obciążenia drutu, jak i głębokości bramy (nie sądzę, że to oczywiste z twojego komentarza).
Sean Houlihane,
5

L1 jest zwykle używany jako pamięć dla dekodowanych instrukcji, podczas gdy L2 jest ogólną pamięcią podręczną dla pojedynczego rdzenia. Im mniejsza pamięć podręczna, tym mniejszy jest rozmiar i zwykle jest on szybszy. Z grubsza ogólna zasada dotycząca procesorów komputerowych:

Pamięć podręczna L1: 2-3 cykl dostępu

Pamięć podręczna L2: ~ 10 cykl dostępu

Pamięć podręczna L3: ~ 20-30 dostęp do cyklu zegara

Pamięć podręczna L1 powinna mieć na celu maksymalizację częstości trafień (prawdopodobieństwo, że pożądany adres instrukcji lub adres danych znajdzie się w pamięci podręcznej), przy jednoczesnym utrzymaniu możliwie najniższego opóźnienia pamięci podręcznej. Intel używa pamięci podręcznej L1 z opóźnieniem 3 cykli. Pamięć podręczna L2 jest współdzielona przez jedną lub więcej pamięci podręcznych L1 i często jest znacznie, znacznie większa. Podczas gdy pamięć podręczna L1 ma na celu maksymalizację wskaźnika trafień, pamięć podręczna L2 ma na celu zminimalizowanie kary za spóźnienie (opóźnienie powstałe, gdy zdarzy się spóźnienie L1). W przypadku układów z pamięcią podręczną L3 cel jest specyficzny dla konstrukcji układu. W przypadku Intela pamięci podręczne L3 pojawiły się po raz pierwszy w 4-drożnych systemach wieloprocesorowych (procesory Pentium 4 Xeon MP) w 2002 r. Pamięć podręczna L3 w tym sensie znacznie zmniejszyła opóźnienia w środowiskach wielowątkowych i odciążyła FSB. Wtedy,

Cytat pochodzi tutaj z odpowiedzi „Pinhedda”.

EasyOhm
źródło
1
L1 jest również używany do danych, ale prawdą jest, że często dane L1 i instrukcja L1 są oddzielne, gdy L2 jest współdzielony: programmers.stackexchange.com/questions/44731/... (jednym z powodów, dla których można je udostępnić, jest to, że ma więcej możliwości ).
Guy Sirton,
1
Procesory mają osobne pamięci podręczne instrukcji i danych na poziomie L1. Z pewnością prawda o późniejszych układach x86 i SPARC. Niektóre pamięci podręczne instrukcji L1 nie przechowują zdekodowanych instrukcji. Pentium 4 przechowywał dekodowane instrukcje, ale potem Intel wrócił do zwykłych pamięci podręcznych I, a następnie ostatnio dodał dekodowane instrukcje do swoich układów.
Craig S. Anderson
3

Jest kilka powodów, dla których prędkość jest odwrotnie proporcjonalna do wielkości. Pierwsze, co przychodzi mi do głowy, to fizyczna dominacja przewodników, w których propagacja sygnału ogranicza się do pewnego współczynnika prędkości światła. Operacja może trwać tak długo, jak długo sygnał elektryczny pokona najdłuższy odcinek wewnątrz płytki pamięci iz powrotem. Innym powiązanym powodem jest oddzielenie domen zegarowych. Każdy procesor korzysta z własnego generatora zegarowego, który pozwala procesorowi pracować na zegarach wieloczęstotliwościowych. Pamięć podręczna poziomu 1 działa i jest synchronizowana z zegarem procesora, który jest najszybszy w systemie. Z drugiej strony pamięć podręczna poziomu 2 musi obsługiwać wiele procesorów i działa w innej (wolniejszej) domenie zegara. Nie tylko wolniejszy zegar L2 (większy kafelek), ale przekroczenie granicy domeny zegarowej dodaje kolejne opóźnienie. Potem oczywiście są kwestie związane z fan-outem (już wspomniane).

LR24
źródło
1

Oprócz nieodłącznych cech wydajnościowych, rolę odgrywa także lokalizacja (L1 jest bliżej procesora). Zgodnie z tym, co każdy programista powinien wiedzieć o pamięci :

Warto zauważyć, że w przypadku pamięci podręcznej L2 w trybie on-die duża część (prawdopodobnie nawet większość) czasu dostępu jest spowodowana opóźnieniami drutowymi. Jest to fizyczne ograniczenie, które może się pogorszyć tylko wraz ze wzrostem wielkości pamięci podręcznej. Tylko zmniejszenie procesu (na przykład, przejście z 60 nm dla Merom do 45 nm dla Penryna w składzie Intela) może poprawić te liczby.

assylias
źródło
Myślę, że dotyczy to głównie dużych pamięci podręcznych - nie dotyczy to wszystkich typów procesorów (chociaż opóźnienie drutu jest znaczne).
Sean Houlihane