Pamięć podręczna procesorów L1, L2 i L3 są wykonane z SRAM?

10

Czy wszystkie pamięci podręczne procesorów L1, L2 i L3 są wykonane z SRAM? Jeśli to prawda, dlaczego L1 jest szybszy niż L2, a L2 jest szybszy niż L3? Nie zrozumiałem tej części, kiedy o nich przeczytałem.

Acaz Souza
źródło
Powiązane pytanie: Dlaczego potrzebujemy wielu poziomów pamięci podręcznej? . Również nieco spokrewniony: czym właściwie jest wielopoziomowa pamięć podręczna w procesorach? . Z twojego komentarza wynika, że ​​znalazłeś już to ostatnie pytanie.
Paul A. Clayton

Odpowiedzi:

12

Ogólnie wszystkie są zaimplementowane w SRAM.

(Chipy IBM POWER i zArchitecture używają pamięci DRAM dla L3. Nazywa się to wbudowaną pamięcią DRAM, ponieważ jest zaimplementowana w tym samym typie technologii procesowej co logika, umożliwiając szybką logikę zintegrowaną w tym samym układzie co DRAM. W przypadku POWER4 off- chip L3 używał eDRAM; POWER7 ma L3 na tym samym układzie co rdzenie przetwarzające.)

Chociaż używają SRAM, nie wszystkie używają tego samego projektu SRAM. SRAM dla L2 i L3 są zoptymalizowane pod kątem wielkości (w celu zwiększenia wydajności, biorąc pod uwagę ograniczony rozmiar wytwarzanego chipa lub zmniejszenia kosztu danej pojemności), podczas gdy SRAM dla L1 jest bardziej prawdopodobnie zoptymalizowany pod kątem szybkości.

Co ważniejsze, czas dostępu jest związany z fizycznym rozmiarem pamięci. Dzięki dwuwymiarowemu układowi można oczekiwać, że fizyczne opóźnienie dostępu będzie w przybliżeniu proporcjonalne do pierwiastka kwadratowego pojemności. (Niejednolita architektura pamięci podręcznej wykorzystuje to, aby zapewnić podzbiór pamięci podręcznej przy niższych opóźnieniach. Wycinki L3 najnowszych procesorów Intel mają podobny efekt; trafienie w lokalnym wycinku ma znacznie mniejsze opóźnienie.) Ten efekt może przyspieszyć buforowanie pamięci DRAM niż pamięć podręczna SRAM przy dużych pojemnościach, ponieważ pamięć DRAM jest fizycznie mniejsza.

Innym czynnikiem jest to, że większość pamięci podręcznych L2 i L3 korzysta z szeregowego dostępu do znaczników i danych, podczas gdy większość pamięci podręcznych L1 ma dostęp do znaczników i danych równolegle. Jest to optymalizacja mocy (częstości braków w L2 są wyższe niż częstości braków w L1, więc dostęp do danych jest bardziej zmarnowany); dostęp do danych L2 zwykle wymaga więcej energii - w zależności od pojemności -; a pamięci podręczne L2 mają zwykle większą asocjację co oznacza, że ​​więcej wpisów danych musiałoby zostać odczytanych spekulacyjnie). Oczywiście konieczność oczekiwania na dopasowanie tagu przed uzyskaniem dostępu do danych wydłuży czas potrzebny na pobranie danych. (Dostęp L2 zwykle zaczyna się dopiero po potwierdzeniu braku L1, więc opóźnienie wykrycia L1 jest dodawane do całkowitego opóźnienia dostępu L2.)

Ponadto pamięć podręczna L2 jest fizycznie bardziej oddalona od silnika wykonawczego. Umieszczenie pamięci podręcznej danych L1 w pobliżu silnika wykonawczego (tak, że częsty przypadek trafienia L1 jest szybki) ogólnie oznacza, że ​​L2 należy umieścić dalej.

Paul A. Clayton
źródło
Świetna odpowiedź. Ale nie zgadzam się z twoim stwierdzeniem, że wskaźniki braków L2 są wyższe niż wskaźniki braków L1. Gdy przechodzimy niżej w hierarchii pamięci, mamy większe struktury zapewniające mniejsze błędy, ale o większym opóźnieniu.
Harshavardhan Ramanna
@HarshavardhanRamanna Tak zwiększenie pojemności i asocjatywność pomaga w pomijaniu wskaźnika, ale dostęp do filtru niższych poziomów jest możliwy (tradycyjny transfer całego bloku z L2 odfiltrowuje krótkoterminową lokalizację przestrzenną w bloku; trafienie liczy się tylko dla jednego dostępu w L2, podczas gdy sam blok najprawdopodobniej zapewni trafienia w L1 w celu uzyskania dodatkowych dostępów). Łączna stawka panna idzie w dół (np L2 z godnej 80% trafień i L1 z 95% trafień dostaje całkowitą 99% trafień).
Paul A. Clayton