Dlaczego rozmiar pamięci podręcznej L1 nie wzrósł znacznie w ciągu ostatnich 20 lat?

35

Intel i486 posiada 8 KB pamięci podręcznej L1. Intel Nehalem ma 32 KB L1 cache instrukcji i 32 KB L1 cache danych na jeden rdzeń.

Ilość pamięci podręcznej L1 nie wzrosła prawie tak szybko, jak szybkość zegara wzrosła.

Dlaczego nie?

jedenaście81
źródło
Porównujesz jabłka do pomarańczy. Częstotliwość taktowania wzrosła, ale nie ma korelacji z potrzebą większej pamięci podręcznej. To, że możesz zrobić coś szybciej, nie oznacza, że ​​korzystasz z większego wiadra.
Keltari
Nadmiar pamięci podręcznej i koszty zarządzania mogą spowolnić system. Znaleźli słodkie miejsce i tam pozostanie.
Fiasco Labs

Odpowiedzi:

17

30 tys. Tekstów z Wikipedii nie jest tak pomocne, jak wyjaśnienie, dlaczego zbyt duża pamięć podręczna jest mniej optymalna. Gdy pamięć podręczna staje się zbyt duża, opóźnienie znalezienia elementu w pamięci podręcznej (faktoring w pamięci podręcznej nie trafia) zaczyna zbliżać się do opóźnienia wyszukiwania elementu w pamięci głównej. Nie wiem do jakich proporcji dążą projektanci procesorów, ale sądzę, że jest to coś analogicznego do wytycznych 80-20: Chciałbyś znaleźć swoje najczęstsze dane w pamięci podręcznej w 80% przypadków, a pozostałe 20 % czasu będziesz musiał przejść do pamięci głównej, aby ją znaleźć. (lub niezależnie od proporcji, jakie zamierzali projektanci CPU).

EDYCJA: Jestem pewien, że to nigdzie blisko 80% / 20%, więc zamień X i 1-X. :)

JMD
źródło
6
„Gdy pamięć podręczna staje się zbyt duża, opóźnienie znalezienia elementu w pamięci podręcznej (faktoring w pamięci podręcznej nie trafia) zaczyna zbliżać się do opóźnienia wyszukiwania elementu w pamięci głównej”. Jesteś tego pewien? Na przykład podwojenie ilości zainstalowanej pamięci RAM z pewnością nie zwiększy opóźnienia, dlaczego miałoby to być prawdą dla pamięci podręcznej? A także, dlaczego pamięć podręczna L2 powiększałaby się o nowe procesory, jeśli jest to problem? Nie jestem w tym ekspertem, naprawdę chcę wiedzieć :)
sYnfo,
2
Przygotowałem duży, długi opis buforowania w oprogramowaniu i pomiaru, kiedy pamięć podręczna się przerosła i powinna zostać zrzucona / odbudowana, ale wtedy zdecydowałem, że najlepiej przyznać, że nie jestem projektantem sprzętu. :) W obu przypadkach podejrzewam, że odpowiedź można streścić w prawie malejących zysków. Tj. Więcej nie zawsze jest lepsze.
JMD,
3
Z mojej długiej historii majstrowania przy sprzęcie na niskich poziomach, ale tak naprawdę nie będąc projektantem, powiedziałbym, że opóźnienie wydaje się być związane z tym, na ile sposobów pamięć podręczna jest skojarzona, a nie z wielkością. Domyślam się, że dodatkowe tranzystory, które trafiłyby do pamięci podręcznej, okazały się bardziej skuteczne w innych obszarach ogólnej wydajności.
Brian Knoblauch,
1
@JMD Byłbym jednak zainteresowany tym opisem;) Chociaż komentarze prawdopodobnie nie są najlepszym miejscem na to, prawda. @Brian Więc, jeśli dobrze to rozumiem, postanowili umieścić mniej tranzystorów w pamięci podręcznej L1 i jednocześnie znacznie więcej w L2, co jest znacznie wolniejsze? Proszę się nie
obrazić
10

Jednym z czynników jest to, że pobieranie L1 rozpoczyna się przed ukończeniem translacji TLB, aby zmniejszyć opóźnienie. Przy wystarczająco małej pamięci podręcznej i wystarczająco wysokim poziomie bity indeksu dla pamięci podręcznej będą takie same między adresami wirtualnymi i fizycznymi. Prawdopodobnie zmniejsza to koszt utrzymania spójności pamięci dzięki wirtualnie indeksowanej, fizycznie tagowanej pamięci podręcznej.

AJW
źródło
1
najciekawsza odpowiedź :)
GameDeveloper
1
Myślę, że to jest powód, ale pozwól mi podać numer. Rozmiar strony w architekturze x86 wynosi 4096 bajtów. Pamięć podręczna chce wybrać segment pamięci podręcznej, w którym ma znaleźć się wiersz wiersza pamięci podręcznej (64 bajty) przed zakończeniem tłumaczenia strony. Wybór zbyt dużej liczby pozycji w wiadrze byłby kosztowny, dlatego każde wiadro zawiera tylko 8 wpisów. W rezultacie przez ostatnie dziesięć lat wszystkie drogie procesory x86 miały dokładnie 32768 bajtów (512 linii pamięci podręcznej) w pamięci podręcznej danych L1.
b_jonas
Ponieważ jest to tak trudne do zwiększenia, procesory dodają średni poziom pamięci podręcznej, dlatego teraz mamy osobne pamięci podręczne L2 i L3. Ponadto pamięć podręczna kodu L1 i pamięć podręczna danych L1 są osobne, ponieważ procesor wie, czy uzyskuje dostęp do kodu lub danych.
b_jonas
8

Na wielkość pamięci podręcznej ma wpływ wiele czynników:

  1. Prędkość sygnałów elektrycznych (powinna być, jeśli nie prędkość światła, coś tego samego rzędu wielkości):

    • 300 metrów w ciągu jednej mikrosekundy.
    • 30 centymetrów w ciągu jednej nanosekundy.
  2. Koszt ekonomiczny (obwody na różnych poziomach pamięci podręcznej mogą być różne, a niektóre rozmiary pamięci podręcznej mogą być niegodne)

    • Podwojenie rozmiaru pamięci podręcznej nie podwaja wydajności (nawet jeśli fizyka pozwoliła na taki rozmiar) w przypadku małych rozmiarów podwojenie daje znacznie więcej niż podwójną wydajność, w przypadku dużych rozmiarów podwojenie wielkości pamięci podręcznej prawie nie daje dodatkowej wydajności.
    • Na wikipedii można znaleźć wykres pokazujący na przykład, jak niegodne jest zwiększanie pojemności pamięci podręcznej powyżej 1 MB (faktycznie istnieją większe pamięci podręczne, ale należy pamiętać, że są to rdzenie wieloprocesorowe).
    • W przypadku pamięci podręcznych L1 powinny istnieć inne wykresy (których dostawcy nie pokazują), które sprawiają, że rozmiar 64 Kb jest wygodny.

Jeśli rozmiar pamięci podręcznej L1 nie zmienił się po 64 KB, to dlatego, że nie był już wart. Zauważ też, że teraz istnieje większa „kultura” pamięci podręcznej i wielu programistów pisze kod „przyjazny dla pamięci podręcznej” i / lub używa instrukcji prefetech, aby zmniejszyć opóźnienia.

Próbowałem kiedyś stworzyć prosty program, który uzyskiwał dostęp do losowych lokalizacji w tablicy (kilku MegaBajtów): ten program prawie zamroził komputer, ponieważ dla każdego losowego odczytu cała strona była przenoszona z pamięci RAM do pamięci podręcznej, a ponieważ było to wykonywane bardzo często tak prosto program wyczerpał całe pasmo, pozostawiając naprawdę mało zasobów dla systemu operacyjnego.

Twórca gier
źródło
6

Wierzę, że można to podsumować po prostu stwierdzając, że im większa pamięć podręczna, tym wolniejszy będzie dostęp. Większa pamięć podręczna po prostu nie pomaga, ponieważ pamięć podręczna została zaprojektowana w celu zmniejszenia wolnej komunikacji magistrali do pamięci RAM.

Ponieważ szybkość procesora gwałtownie rośnie, pamięć podręczna tej samej wielkości musi działać coraz szybciej, aby nadążyć za nią. Pamięć podręczna może być znacznie lepsza (pod względem prędkości), ale nie pod względem pamięci.

(Jestem facetem od oprogramowania, więc mam nadzieję, że to nie jest tak źle)

Andrew Flanagan
źródło
3

Z pamięci podręcznej L1 :

Pamięć podręczna poziomu 1 lub podstawowa pamięć podręczna znajduje się w CPU i służy do tymczasowego przechowywania instrukcji i danych zorganizowanych w blokach po 32 bajty. Podstawowa pamięć podręczna jest najszybszą formą przechowywania. Ponieważ jest wbudowany w układ z interfejsem zerowego stanu oczekiwania (opóźnienia) do jednostki wykonawczej procesora, jego rozmiar jest ograniczony .

SRAM wykorzystuje dwa tranzystory na bit i może przechowywać dane bez pomocy zewnętrznej, dopóki zasilanie jest dostarczane do obwodu. Kontrastuje to z dynamiczną pamięcią RAM (DRAM), która musi być odświeżana wiele razy na sekundę, aby zachować zawartość danych.

Procesor Intel P55 MMX, uruchomiony na początku 1997 r., Był godny uwagi ze względu na zwiększenie wielkości pamięci podręcznej poziomu 1 do 32 KB. Układy AMD K6 i Cyrix M2 wprowadzone na rynek w tym samym roku jeszcze bardziej podniosły stawkę, dostarczając pamięci podręczne poziomu 1 o pojemności 64 KB. 64Kb pozostaje standardowym rozmiarem pamięci podręcznej L1, chociaż różne procesory wielordzeniowe mogą go używać w różny sposób.

EDYCJA: Należy pamiętać, że ta odpowiedź pochodzi z 2009 roku, a procesory ewoluowały ogromnie w ciągu ostatnich 10 lat. Jeśli dotarłeś do tego postu, nie traktuj wszystkich naszych odpowiedzi tutaj zbyt poważnie.

harrymc
źródło
Typowa komórka SRAM składa się z sześciu tranzystorów MOSFET. Każdy bit w pamięci SRAM jest przechowywany na czterech tranzystorach (M1, M2, M3, M4), które tworzą dwa falowniki sprzężone krzyżowo. Źródło Drugie źródło
lukecampbell
Jest to tylko opis sytuacji i nie wyjaśnia niczego, dlaczego.
Eonil
@Eonil - Nie moglibyśmy udzielić odpowiedzi „dlaczego”, gdybyśmy chcieli. Jednak malejące zwroty z wydajności są realnym uzasadnionym wyjaśnieniem. Kiedy pytanie zostało napisane prawie dziesięć lat temu, było znacznie droższe, aby zwiększyć rozmiar bez uwzględnienia przeboju wydajności. Ta odpowiedź próbowała przynajmniej odpowiedzieć na zadane pytanie, które zostało zadane.
Ramhound
-4

W rzeczywistości rozmiar pamięci podręcznej L1 JEST największym wąskim gardłem w szybkości we współczesnych komputerach. Żałośnie małe rozmiary pamięci podręcznej L1 mogą być cenne dla ceny, ale nie dla wydajności. Pamięć podręczna L1 jest dostępna przy częstotliwościach GHz, takich samych jak operacje procesora, w przeciwieństwie do dostępu do pamięci RAM 400x wolniej. Jest to drogie i trudne do wdrożenia w obecnym dwuwymiarowym projekcie, jednak jest technicznie wykonalne, a pierwsza firma, która z powodzeniem to zrobi, będzie miała komputery 100 razy szybsze i nadal fajne, co przyniosłoby duże innowacje w wielu pola i są obecnie dostępne tylko dzięki drogim i trudnym do zaprogramowania konfiguracjom ASIC / FPGA. Niektóre z tych problemów dotyczą problemów własnościowych / własności intelektualnej i korporacyjnej chciwości od dziesięcioleci, gdzie kiepska i nieskuteczna kadra inżynierów jest jedynymi, którzy mają dostęp do wewnętrznych mechanizmów, i którzy w większości otrzymują rozkaz marszu, aby wycisnąć opłacalne, zaciemnione protekcjonistyczne bzdury. Nadmiernie sprywatyzowane badania zawsze prowadzą do takiej technologicznej stagnacji lub dławienia (jak widzieliśmy w przemyśle lotniczym i motoryzacyjnym przez wielkich producentów, a wkrótce farmacji). Otwarte i bardziej rozsądne uregulowania dotyczące patentów i tajemnic handlowych przynoszące korzyści wynalazcom i opinii publicznej (a nie szefom i udziałowcom firmy) bardzo by tu pomogły. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. i którzy w większości otrzymują rozkaz marszu, aby wycisnąć opłacalne, zaciemnione protekcjonistyczne bzdury. Nadmiernie sprywatyzowane badania zawsze prowadzą do takiej technologicznej stagnacji lub dławienia (jak widzieliśmy w przemyśle lotniczym i motoryzacyjnym przez wielkich producentów, a wkrótce farmacji). Otwarte i bardziej rozsądne uregulowania dotyczące patentów i tajemnic handlowych przynoszące korzyści wynalazcom i opinii publicznej (a nie szefom i udziałowcom firmy) bardzo by tu pomogły. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. i którzy w większości otrzymują rozkaz marszu, aby wycisnąć opłacalne, zaciemnione protekcjonistyczne bzdury. Nadmiernie sprywatyzowane badania zawsze prowadzą do takiej technologicznej stagnacji lub dławienia (jak widzieliśmy w przemyśle lotniczym i motoryzacyjnym przez wielkich producentów, a wkrótce farmacji). Otwarte i bardziej rozsądne uregulowania dotyczące patentów i tajemnic handlowych przynoszące korzyści wynalazcom i opinii publicznej (a nie szefom i udziałowcom firmy) bardzo by tu pomogły. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. Nadmiernie sprywatyzowane badania zawsze prowadzą do takiej technologicznej stagnacji lub dławienia (jak widzieliśmy w przemyśle lotniczym i motoryzacyjnym przez wielkich producentów, a wkrótce farmacji). Otwarte i bardziej rozsądne uregulowania dotyczące patentów i tajemnic handlowych przynoszące korzyści wynalazcom i opinii publicznej (a nie szefom i udziałowcom firmy) bardzo by tu pomogły. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. Nadmiernie sprywatyzowane badania zawsze prowadzą do takiej technologicznej stagnacji lub dławienia (jak widzieliśmy w przemyśle lotniczym i motoryzacyjnym przez wielkich producentów, a wkrótce farmacji). Otwarte i bardziej rozsądne uregulowania dotyczące patentów i tajemnic handlowych przynoszące korzyści wynalazcom i opinii publicznej (a nie szefom i udziałowcom firmy) bardzo by tu pomogły. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli. Opracowywanie znacznie większych pamięci podręcznych L1 powinno być oczywiste, a to powinno i powinno być opracowane kilkadziesiąt lat temu. Bylibyśmy o wiele dalej w dziedzinie komputerów i wielu dziedzin naukowych korzystających z nich, gdybyśmy mieli.

Zack Barkley
źródło