Warum verkürzt sich die Zugriffszeit auf RAM (jeder Typ) so langsam?

22

Dieser Artikel zeigt, dass der DDR4-SDRAM etwa das 8-fache der Bandbreite des DDR1-SDRAM aufweist. Die Zeit vom Einstellen der Spaltenadresse bis zur Verfügbarkeit der Daten hat sich jedoch nur um 10% (13,5 ns) verringert. Eine Schnellsuche zeigt, dass die Zugriffszeit der schnellste Async ist. SRAM (18 Jahre alt) ist 7ns. Warum hat sich die SDRAM-Zugriffszeit so langsam verringert? Ist der Grund ökonomisch, technologisch oder grundlegend?

Arseniy
quelle
1
Könnte ein anderer möglicher Grund sein, dass es einfach nicht so notwendig ist?
Sebastiaan van den Broek
Beispielsweise ist eine geringe Zugriffszeit erforderlich, um die Suche nach Daten im Speicher zu beschleunigen.
Arseniy
Mir ist klar, dass zusätzliche Geschwindigkeit immer gut ist, aber aus Sicht der Softwareentwickler ist RAM-Geschwindigkeit im Vergleich zu allen anderen E / A- und Architekturen (einschließlich Mikrodiensten, die buchstäblich in verschiedenen Rechenzentren ausgeführt werden können) kein so großer Engpass nicht mehr. Manchmal ist 'gut genug' gut oder rechtfertigt die zusätzliche Forschung und Entwicklung nicht, um sie zu beschleunigen. Ich würde in Betracht ziehen, dies auch als möglichen Grund für Ihre Frage hinzuzufügen.
Sebastiaan van den Broek
1
Laut Wikipedia DDR3-2200 eine erste Wortlatenzzeit von 6,36 ns hat, das ist , wie lange es ein Signal 3ft auf FR4 fortzupflanzen um dauert, würde ich sagen , dass wir ziemlich nahe an die physikalischen Grenzen sind
Mark Omo

Antworten:

33

Es ist einfacher und billiger, die Bandbreite des DRAM zu erhöhen, als die Latenz zu verringern. Um die Daten aus einer offenen RAM-Reihe abzurufen, ist ein nicht unerheblicher Arbeitsaufwand erforderlich.

Die Spaltenadresse muss decodiert werden, die Multiplexer, die auswählen, auf welche Leitungen zugegriffen werden soll, müssen angesteuert werden, und die Daten müssen über den Chip zu den Ausgangspuffern gelangen. Dies nimmt etwas Zeit in Anspruch, zumal die SDRAM-Chips nach einem auf hohe RAM-Dichten und nicht auf hohe Logikgeschwindigkeiten zugeschnittenen Verfahren hergestellt werden. Um die Bandbreite beispielsweise mithilfe von DDR (1, 2, 3 oder 4) zu erhöhen, kann der größte Teil der Logik entweder erweitert oder per Pipeline übertragen werden und mit der gleichen Geschwindigkeit wie in der vorherigen Generation betrieben werden. Das einzige, was schneller sein muss, ist der E / A-Treiber für die DDR-Pins.

Um die Latenz zu verringern, muss dagegen der gesamte Vorgang beschleunigt werden, was sehr viel schwieriger ist. Höchstwahrscheinlich müssten Teile des RAM in einem ähnlichen Prozess wie bei Hochgeschwindigkeits-CPUs hergestellt werden, was die Kosten erheblich erhöht (der Hochgeschwindigkeitsprozess ist teurer und jeder Chip muss zwei verschiedene Prozesse durchlaufen).

Wenn Sie CPU-Caches mit RAM und Festplatte / SSD vergleichen, besteht eine umgekehrte Beziehung zwischen großem und schnellem Speicher. Ein L1 $ ist sehr schnell, kann aber nur zwischen 32 und 256 KB Daten speichern. Der Grund, warum es so schnell ist, ist, dass es klein ist:

  • Es kann sehr nahe an der CPU platziert werden, sodass die Daten eine kürzere Strecke zurücklegen müssen, um dorthin zu gelangen
  • Die Drähte können kürzer gemacht werden, was wiederum bedeutet, dass die Daten weniger Zeit benötigen, um sie zu durchlaufen
  • Es nimmt nicht viel Fläche oder viele Transistoren ein, so dass es nicht so teuer ist, es in einem geschwindigkeitsoptimierten Prozess zu machen und viel Energie pro gespeichertem Bit zu verbrauchen

Wenn Sie die Hierarchie nach oben verschieben, wird jede Speicheroption in der Kapazität größer, aber auch in der Fläche und weiter vom verwendeten Gerät entfernt, was bedeutet, dass das Gerät langsamer werden muss.

C_Elegans
quelle
21
Gute Antwort. Ich möchte nur den physischen Abstandsfaktor betonen: Bei vielleicht 10 cm für den am weitesten entfernten RAM-Stick, 1/3 bis 1/2 der Lichtgeschwindigkeit als Signalgeschwindigkeit, plus etwas zusätzliche Länge zum Routen und Anpassen der Leiterplattenspuren, könnten Sie leicht bei 2ns Hin- und Rückfahrt sein. Wenn ~ 15% Ihrer Verspätung durch das unzerbrechliche universelle Tempolimit verursacht werden ... sind Sie meiner Meinung nach wirklich gut.
mbrig
1
L1 ist auch eindeutig organisiert, befindet sich direkt in dem Kern, der es verwendet, und verwendet SRAM.
Wald
@forest Und hat auch eine ziemlich strenge Größenbeschränkung - mach es zu groß und es gibt keine Möglichkeit, es so schnell zu halten.
Luaan,
Der L1d-Cache kann auch stark auf Latenz optimiert werden, z. B. indem Tags und Daten auf alle Arten im Set parallel abgerufen werden. Wenn also eine Tag-Übereinstimmung vorliegt, werden die Daten nur auf die Ausgabe gemuxt, anstatt dass sie aus dem SRAM abgerufen werden müssen. Dies kann auch parallel zur TLB-Suche auf den oberen Bits der Adresse geschehen, wenn die Indexbits alle aus dem seiteninternen Offset-Teil einer Adresse stammen. (Das ist also eine feste Größenbeschränkung, wie bei @Luaan erwähnt: Größe / Assoziativität <= Seitengröße für diesen VIPT = PIPT-Geschwindigkeits-Hack. Siehe VIPT-Cache: Verbindung zwischen TLB und Cache? )
Peter Cordes,
6

C_Elegans liefert einen Teil der Antwort - es ist schwierig , die Gesamtlatenz eines Speicherzyklus zu verringern.

Der andere Teil der Antwort ist , dass in der modernen hierarchischen Speichersystemen (mehrere Ebenen von Caching), Speicherbandbreite einen viel stärkeren Einfluss auf die Gesamtleistung des Systems als Speicher - Latenz , und so das ist , wo alle aktuellen Entwicklungsbemühungen konzentriert haben.

Dies gilt sowohl für die allgemeine Datenverarbeitung, bei der viele Prozesse / Threads parallel ausgeführt werden, als auch für eingebettete Systeme. Bei der HD-Videoarbeit, die ich mache, interessieren mich Latenzen in der Größenordnung von Millisekunden nicht, aber ich benötige mehrere Gigabyte / Sekunde Bandbreite.

Dave Tweed
quelle
Und es sollte auf jeden Fall erwähnt werden, dass Software in den meisten Fällen relativ einfach für die "hohe" Latenz ausgelegt werden kann, verglichen mit dem Schwierigkeitsgrad und den Kosten für die Verringerung der Latenz. Beide CPUs und ihre Software sind in den meisten Fällen sehr gut darin, die effektive Latenz zu eliminieren. Letztendlich erreichen Sie das Latenzlimit nicht so oft, wie Sie vielleicht denken, es sei denn, Sie wissen nicht, wie die Speicherarchitektur und das Caching / Pre-Fetching von CPU usw. funktionieren. Der einfache Ansatz funktioniert normalerweise gut genug für die meisten Programme, insbesondere Single-Threaded.
Luaan
Bei modernen Intel-CPUs ist die Speicherlatenz der begrenzende Faktor für die Single-Core- Bandbreite: Die Bandbreite darf max_concurrency / latency nicht überschreiten, und ein Single-Core hat eine begrenzte Kapazität für Off-Core-Anfragen, die gleichzeitig im Flug sind. Ein Xeon mit vielen Kernen (mit einer höheren Latenz ohne Kern von mehr Sprüngen auf dem Ringbus) hat eine schlechtere Single-Core-Bandbreite als ein Quad-Core-Desktop-Chip, obwohl er über mehr DRAM-Controller verfügt. Warum ist Skylake beim Single-Threaded-Speicherdurchsatz so viel besser als Broadwell-E? . Bei einem Xeon mit vielen Kernen sind viel mehr Threads erforderlich, um den Speicher in Schwarzweiß zu füllen.
Peter Cordes
Alles in allem ist Ihr Hauptpunkt richtig: Die meisten Zugriffe werden wegen geringer Latenz im Cache ausgeführt, um zu vermeiden, dass das Back-End für nicht ordnungsgemäße Zugriffe zum Stillstand kommt. HW-Prefetch benötigt meist nur Bandbreite, um mit sequenziellen Zugriffen Schritt zu halten und Daten im Cache bereit zu halten, bevor der Core sie benötigt. Die DRAM-Latenz beträgt Hunderte von Kerntaktzyklen. Daher muss eine effiziente Software so optimiert werden, dass Zugriffsmuster verwendet werden, die keine Fehler zwischenspeichern, indem sowohl die räumliche / zeitliche Lokalität als auch das HW-Prefetching beseitigt werden. Insbesondere für Ladevorgänge, da Speicherpuffer die Speicherlatenz vom Rest des Backends für nicht ordnungsgemäße Speicherung entkoppeln können.
Peter Cordes
Bei Festplatten-E / A-Vorgängen sind Latenzen von Millisekunden von Bedeutung, wenn Readahead-Vorablesezugriffe nicht vorhanden sind, um sie für sequenzielle Zugriffe auszublenden. Aber je höher die Latenz, desto schwerer ist es, sich zu verstecken. (Je besser Ihre Prefetch-Algorithmen sein müssen und je vorhersehbarer Ihre Zugriffsmuster sein müssen.) Und je mehr Anforderungen / Datenbytes Sie im Flug halten müssen, um die gewünschte Bandbreite zu erhalten.
Peter Cordes
2

Ich habe nicht so viele Einsichten, aber ich erwarte, dass es ein bisschen von allem ist.

Wirtschaftlich

Für die meisten Computer / Telefone ist die Geschwindigkeit mehr als ausreichend. Für schnellere Datenspeicher wurde SSD entwickelt. Menschen können Video / Musik und andere geschwindigkeitsintensive Aufgaben (fast) in Echtzeit ausführen. Daher ist weniger Geschwindigkeit erforderlich (außer für bestimmte Anwendungen wie Wettervorhersagen usw.).

Ein weiterer Grund ist, eine sehr hohe RAM-Geschwindigkeit zu verarbeiten, es werden CPUs benötigt, die schnell sind. Und das kommt mit viel Stromverbrauch. Da die Tendenz, sie in Batteriegeräten (wie Mobiltelefonen) zu verwenden, die Verwendung von sehr schnellem RAM (und CPUs) verhindert, ist es auch wirtschaftlich nicht sinnvoll, sie herzustellen.

Technisch

Durch die abnehmende Größe der Chips / ICs (nm-Level jetzt) ​​steigt die Geschwindigkeit, aber nicht signifikant. Es wird häufiger zum Erhöhen des Arbeitsspeichers verwendet, der schwerer benötigt wird (auch aus wirtschaftlichen Gründen).

Grundlegend

Als Beispiel (beide sind Schaltkreise): Der einfachste Weg, mehr Geschwindigkeit zu erzielen (von SSD verwendet), besteht darin, die Last einfach auf mehrere Komponenten zu verteilen. Auf diese Weise summieren sich auch die Verarbeitungsgeschwindigkeiten. Vergleichen Sie mit 8 USB-Sticks, die gleichzeitig lesen und die Ergebnisse kombinieren, anstatt Daten von 1 USB-Stick nacheinander zu lesen (8-mal so lange).

Michel Keijzers
quelle
1
Was genau haben SSDs mit der SDRAM-Latenz zu tun?
C_Elegans
@C_Elegans sie sind beide Stromkreise, für diese "generische" Frage denke ich nicht, dass es so viel Unterschied gibt.
Michel Keijzers
2
Die Zeit zum Öffnen einer Seite hat sich aufgrund des Vorladezyklus nicht wesentlich verringert. Der Energiebedarf ist heute nicht wesentlich anders als vor einem Jahrzehnt. Das dominiert nach meiner Erfahrung die Zugriffszeit.
Peter Smith
5
@MichelKeijzers Obwohl SSDs und SDRAM beide Schaltkreise sind, bedienen sie sich sehr unterschiedlicher Anwendungsfälle und verwenden unterschiedliche Techniken zum Speichern von Daten. Die Aussage, dass CPUs nicht wirklich schnelleren Arbeitsspeicher benötigen, macht nicht viel Sinn. Der Grund dafür, dass die meisten modernen CPUs über 3 Cache-Ebenen verfügen, ist, dass der Arbeitsspeicher nicht schnell genug für die CPU hergestellt werden kann.
C_Elegans
1
Sie sagten, für größeren Speicher gibt es SSDs. Meinten Sie schneller ? Es ist teurer, auf einer SSD dieselbe Menge an Speicherplatz zu haben wie auf einer Festplatte. Das Hauptverkaufsargument von SSDs ist die Geschwindigkeit und möglicherweise das Rauschen und die Zuverlässigkeit. Bei der Kapazität sind die Festplatten immer noch besser
user198712