Dlaczego czas dostępu do pamięci RAM (dowolnego typu) spada tak wolno?

22

Ten artykuł pokazuje, że DDR4 SDRAM ma około 8x większą przepustowość DDR1 SDRAM. Ale czas od ustawienia adresu kolumny do momentu dostępności danych zmniejszył się tylko o 10% (13,5ns). Szybkie wyszukiwanie pokazuje, że czas dostępu do najszybszej asynchronizacji. SRAM (18 lat) ma 7ns. Dlaczego czas dostępu do pamięci SDRAM skrócił się tak wolno? Czy przyczyna jest ekonomiczna, technologiczna czy fundamentalna?

Arsenij
źródło
1
Czy inny możliwy powód może być taki, że po prostu nie jest to konieczne?
Sebastiaan van den Broek
Na przykład krótki czas dostępu jest niezbędny, aby wyszukiwanie danych w pamięci było szybsze.
Arsenij
Zdaję sobie sprawę, że dodatkowa prędkość jest zawsze przyjemna, ale z perspektywy programisty, być może w porównaniu do wszystkich innych operacji IO i architektury (w tym mikrousług, które mogą dosłownie działać na różnych centrach danych), szybkość pamięci RAM po prostu nie jest wąskim gardłem już. Czasami „wystarczająco dobry” jest dobry, a przynajmniej nie gwarantuje dodatkowych badań i rozwoju w celu przyspieszenia. Rozważę dodanie tego również jako potencjalnego powodu w twoim pytaniu.
Sebastiaan van den Broek
1
Według Wikipedii DDR3-2200 ma opóźnienie w pierwszym słowie wynoszące 6,36 ns, czyli tyle, ile czasu zajmuje sygnał do propagacji około 3 stóp na FR4, powiedziałbym, że jesteśmy bardzo blisko fizycznych ograniczeń
Mark Omo

Odpowiedzi:

33

Jest tak, ponieważ łatwiej i taniej jest zwiększyć przepustowość pamięci DRAM niż zmniejszyć opóźnienie. Aby uzyskać dane z otwartego wiersza pamięci RAM, niezbędna jest nietrywialna ilość pracy.

Adres kolumny musi zostać zdekodowany, multipleksery wybierają, które linie dostępu muszą być sterowane, a dane muszą przejść przez układ do buforów wyjściowych. Zajmuje to trochę czasu, zwłaszcza biorąc pod uwagę, że układy SDRAM są wytwarzane w procesie dostosowanym do wysokich gęstości pamięci RAM i niezbyt wysokich prędkości logicznych. Aby zwiększyć przepustowość, powiedzmy za pomocą DDR (1,2,3 lub 4), większość logiki może być poszerzona lub potokowa i może działać z taką samą prędkością jak w poprzedniej generacji. Jedyne, co musi być szybsze, to sterownik I / O dla pinów DDR.

W przeciwieństwie do tego, aby zmniejszyć opóźnienie, należy przyspieszyć całą operację, co jest znacznie trudniejsze. Najprawdopodobniej część pamięci RAM musiałaby być wykonana w procesie podobnym do tego w przypadku szybkich procesorów, znacznie zwiększając koszty (proces o wysokiej prędkości jest droższy, a każdy procesor musi przejść 2 różne procesy).

Jeśli porównasz pamięci podręczne procesora z pamięcią RAM i dyskiem twardym / SSD, istnieje odwrotna zależność między pamięcią dużą a szybką pamięcią. L1 $ jest bardzo szybki, ale może pomieścić tylko od 32 do 256 kB danych. Jest tak szybki, ponieważ jest mały:

  • Można go ustawić bardzo blisko procesora, co oznacza, że ​​dane muszą przebyć krótszy dystans, aby się do niego dostać
  • Przewody na nim można skrócić, co oznacza, że ​​przesyłanie danych zajmuje mniej czasu
  • Nie zajmuje dużo miejsca ani wielu tranzystorów, więc przejście na proces zoptymalizowany pod kątem prędkości i użycie dużej ilości energii na przechowywany bit nie jest tak drogie

W miarę przesuwania się w górę hierarchii każda opcja przechowywania staje się większa, ale także większa i oddalona od urządzenia, co oznacza, że ​​urządzenie musi działać wolniej.

C_Elegans
źródło
21
Świetna odpowiedź. Chcę tylko podkreślić fizyczny współczynnik odległości: może być 10 cm dla najdalszego pendrive'a, 1/3 do 1/2 prędkości światła jako prędkości sygnału, a także dodatkowa długość do trasy i dopasowania ścieżek PCB, możesz łatwo być w czasie podróży w obie strony 2ns. Jeśli ~ 15% twojego opóźnienia jest spowodowane niezniszczalnym uniwersalnym ograniczeniem prędkości ... moim zdaniem dobrze sobie radzisz.
mbrig
1
L1 jest również zorganizowany w sposób wyjątkowy, jest bezpośrednio w rdzeniu, który go używa i używa SRAM.
las
@forest A także ma dość ścisły limit rozmiaru - ustaw go za duży i nie ma sposobu, aby utrzymać go tak szybko.
Luaan
Pamięć podręczną L1d można również znacznie zoptymalizować pod kątem opóźnień, np. Równoległe pobieranie tagów i danych na wszystkie sposoby w zestawie. Tak więc, gdy tag pasuje, wystarczy zmiksować dane z danymi wyjściowymi, zamiast konieczności pobierania ich z SRAM. Może się to również zdarzyć równolegle z wyszukiwaniem TLB na wysokich bitach adresu, jeśli wszystkie bity indeksu pochodzą z części adresu przesuniętej w obrębie strony. (Więc to jeden twardy limit rozmiaru, jak wspomniano @Luaan: rozmiar / skojarzenie <= rozmiar strony dla tego hacka VIPT = PIPT do działania. Zobacz Pamięć podręczna VIPT: Połączenie między TLB a pamięcią podręczną? )
Peter Cordes
6

C_Elegans stanowi jedną część odpowiedzi - trudno jest zmniejszyć ogólne opóźnienie cyklu pamięci.

Inną częścią odpowiedzi jest to, że we współczesnych hierarchicznych systemach pamięci (wiele poziomów buforowania) przepustowość pamięci ma znacznie większy wpływ na ogólną wydajność systemu niż opóźnienie pamięci , i dlatego na tym skupiły się wszystkie najnowsze wysiłki rozwojowe.

Dotyczy to zarówno komputerów ogólnych, w których wiele procesów / wątków działa równolegle, jak również systemów wbudowanych. Na przykład w pracy nad filmem HD nie dbam o opóźnienia rzędu milisekund, ale potrzebuję wielu gigabajtów na sekundę przepustowości.

Dave Tweed
źródło
I zdecydowanie należy wspomnieć, że oprogramowanie można w większości przypadków dość łatwo zaprojektować pod kątem „wysokiego” opóźnienia, w porównaniu z trudnością i kosztem zmniejszenia opóźnienia. Zarówno procesory, jak i ich oprogramowanie są bardzo dobre w eliminowaniu efektywnego opóźnienia w większości przypadków. Ostatecznie nie osiągasz limitu opóźnień tak często, jak mogłoby się wydawać, chyba że nie masz pojęcia o tym, jak działa architektura pamięci i buforowanie / pobieranie danych z procesora itp. Proste podejście zwykle działa wystarczająco dobrze w przypadku większości programów, zwłaszcza jednowątkowych.
Luaan
W nowoczesnych procesorach Intel opóźnienie pamięci jest czynnikiem ograniczającym przepustowość jednordzeniową : przepustowość nie może przekraczać max_konkurencji / opóźnienia, a pojedynczy rdzeń ma ograniczoną pojemność dla żądań pozordzeniowych jednocześnie. Wielordzeniowy Xeon (z większym opóźnieniem uncore od większej liczby przeskoków na szynie pierścieniowej) ma gorszą przepustowość jednordzeniową niż czterordzeniowy układ stacjonarny, pomimo większej liczby kontrolerów DRAM. Dlaczego Skylake jest o wiele lepszy niż Broadwell-E w zakresie przepustowości pamięci jednowątkowej? . Nasycenie pamięci B / W na wielordzeniowym Xeonie wymaga o wiele więcej wątków.
Peter Cordes
Ogólnie rzecz biorąc, twój główny punkt jest poprawny: większość dostępów trafia do pamięci podręcznej z małym opóźnieniem, aby uniknąć zablokowania zaplecza poza kolejnością. Pobieranie wstępne sprzętu zwykle wymaga tylko przepustowości, aby nadążać za sekwencyjnym dostępem i mieć gotowość danych w pamięci podręcznej, zanim rdzeń będzie tego potrzebować. Opóźnienie pamięci DRAM to setki cykli taktowania rdzenia, więc wydajne oprogramowanie musi zostać dostrojone, aby wykorzystywać wzorce dostępu, które nie buforują braków, pokonując zarówno lokalizację przestrzenną / czasową, jak i wstępne pobieranie sprzętu. Zwłaszcza w przypadku obciążeń, ponieważ bufory sklepu mogą oddzielić opóźnienie przechowywania od reszty backendu poza kolejnością.
Peter Cordes
W przypadku dyskowych operacji we / wy opóźnienia w milisekundach byłyby ważne, gdybyśmy nie mieli wstępnego pobierania z wyprzedzeniem w celu ukrycia go dla sekwencyjnego dostępu. Ale im większe opóźnienie, tym trudniej jest ukryć. (Im lepsze muszą być algorytmy pobierania wstępnego i tym bardziej przewidywalne muszą być wzorce dostępu.) I im więcej bajtów żądań / danych potrzebujesz, aby utrzymać w locie, aby uzyskać pożądaną przepustowość.
Peter Cordes
2

Nie mam zbyt wielu spostrzeżeń, ale spodziewam się, że to wszystko.

Gospodarczy

W przypadku większości komputerów / telefonów prędkość jest większa niż wystarczająca. Aby przyspieszyć przechowywanie danych, opracowano dysk SSD. Ludzie mogą korzystać z wideo / muzyki i innych zadań wymagających dużej prędkości w (prawie) czasie rzeczywistym. Dlatego nie ma potrzeby zwiększania prędkości (z wyjątkiem określonych zastosowań, takich jak prognozowanie pogody itp.).

Innym powodem jest przetwarzanie bardzo dużej prędkości pamięci RAM, potrzebne są szybkie procesory. A to wiąże się z dużym zużyciem energii. Ponieważ tendencja do używania ich w urządzeniach bateryjnych (takich jak telefony komórkowe), uniemożliwia użycie bardzo szybkiej pamięci RAM (i procesorów), a tym samym sprawia, że ​​ich ekonomicznie nie jest użyteczne.

Techniczny

Wraz ze zmniejszającym się rozmiarem układów scalonych / układów scalonych (teraz poziom nm) prędkość rośnie, ale nie znacząco. Jest częściej wykorzystywany do zwiększania ilości pamięci RAM, która jest bardziej potrzebna (również z przyczyn ekonomicznych).

Fundamentalny

Jako przykład (oba są obwodami): najłatwiejszym sposobem na uzyskanie większej prędkości (wykorzystywanej przez SSD) jest po prostu rozłożenie obciążenia na wiele komponentów, w ten sposób sumuje się również szybkość „przetwarzania”. Porównaj, używając 8 pamięci USB jednocześnie odczytując i łącząc wyniki, zamiast odczytywać dane z 1 pamięci USB po sobie (zajmuje to 8 razy dłużej).

Michel Keijzers
źródło
1
Co dokładnie mają wspólnego dyski SSD z opóźnieniem SDRAM?
C_Elegans
@ C_Elegans to oba obwody, w przypadku tego „ogólnego” pytania nie sądzę, aby była tak duża różnica.
Michel Keijzers,
2
Ilość czasu na otwarcie strony tak naprawdę nie zmniejszyła się tak bardzo z powodu cyklu ładowania wstępnego; ilość potrzebnej energii nie różni się dziś znacząco niż dziesięć lat temu. To z mojego punktu widzenia dominuje czas dostępu.
Peter Smith
5
@MichelKeijzers Chociaż oba są obwodami, dyski SSD i SDRAM służą do bardzo różnych przypadków użycia i wykorzystują różne techniki przechowywania danych. Ponadto powiedzenie, że procesory tak naprawdę nie potrzebują szybszej pamięci RAM, nie ma większego sensu, głównym powodem, dla którego większość współczesnych procesorów ma 3 poziomy pamięci podręcznej, jest to, że ich RAM nie może być wystarczająco szybki, aby obsługiwać procesor.
C_Elegans
1
Powiedziałeś, że dla większej przestrzeni dyskowej są dyski SSD. Miałeś na myśli szybciej ? Bardziej kosztowne jest uzyskanie takiej samej ilości miejsca na dysku SSD niż na dysku HDD. Głównym punktem sprzedaży dysków SSD jest szybkość, a być może hałas i niezawodność. Jeśli chodzi o pojemność, dyski twarde są jeszcze lepsze
198712