Wie viele Bits werden durch einen CAS-Befehl im DRAM adressiert?

Soweit ich weiß, entspricht eine Spalten- und Zeilenpaarung 64 Bit vom DRAM-Chip, aber dies lässt mich denken, dass man dann für JEDE Übertragung die CAS-Latenz (~ 18 Taktzyklen in DDR4) verursachen würde. Ich habe das Gefühl, dass dies offensichtlich nicht der Fall ist, da sonst DRAM durch die CAS-Verzögerung und nicht durch die verfügbare Bandbreite stark eingeschränkt würde. Danke für die Hilfe!

Liegt es nicht ganz am jeweiligen Chip?
Mit dem richtigen Gerät (einem, das den Seitenmodus unterstützt) können Sie 256 Bits von einem CAS-Zugriff erhalten.
Vergessen Sie nicht, dass DDR-Chips intern mehrere Bänke haben, was bedeutet, dass Sie Operationen auf einzelnen Bänken verschachteln können, um die I/O-Bandbreite gefüllt zu halten, selbst wenn eine einzelne Bank dies nicht alleine tun kann. Dies tun wir normalerweise in Videosystemen mit hoher Bandbreite, wo das Problem etwas vereinfacht ist, weil fast alle Zugriffe sowieso sequentiell sind.
Toller Punkt Dave. Können Sie erläutern, was Sie mit mehreren "Banken" meinen? Ich bin mit dem Konzept der Ränge in Gedächtnissystemen vertraut. Sind sie gleich?
Ich weiß nicht, was ein "Rang" in diesem Zusammenhang ist. Ein typischer DDR-Chip hat 4 Bänke, die im Wesentlichen unabhängig voneinander arbeiten, mit der Ausnahme, dass sie sich einen gemeinsamen Satz von Eingangs- (Adresse und Befehl) und I/O-Bussen (Daten) teilen. Sie können normalerweise bis zu 8 Datenworte in einem DDR-Burst übertragen. Sie können einen Burst-Transfer auf Bank 0 initiieren, und während dies intern und auf dem Datenbus geschieht, können Sie einen Burst auf Bank 1 mit den Befehls- und Adressbussen initiieren und so weiter. Wenn der Burst auf Bank 3 gestartet wurde, ist Bank 0 nun bereit für eine neue Operation.
... 32 Datenworte werden in jedem "Super Burst" über alle vier Bänke übertragen. Selbst mit einer Mischung aus Lese- und Schreibvorgängen können Sie in der Regel eine Busauslastung von >90 % erreichen.

Antworten (1)

Wie viele Bits von der Breite des Speicherchips abhängen, können Sie immer mehr parallel setzen, um mehr Daten gleichzeitig zu erhalten. Jeder Zugriffszyklus ist also unabhängig von der Breite des Chips.

Es kann variieren, aber im Allgemeinen können Sie auf mehrere Zeilenadressen zugreifen, ohne die Spalte erneut festlegen zu müssen, solange sie gleich ist.

Wenn sich die Zeilen alle in einem Block befinden, können Sie noch schneller sein und einen Burst ausführen, bei dem der Chip selbst die Zeilenadresse intern automatisch erhöht.

In einem PC (mein Wissen hier ist hier veraltet, also entschuldigen Sie, wenn es sich seitdem geändert hat) wird auf den DRAM immer in Bursts von 4 Zyklen zugegriffen, jeder Burst hat eine vollqualifizierte Adresse mit gesetztem CAS und RAS. Andere Speichercontroller können sich jedoch sehr unterschiedlich verhalten und die potenziellen Geschwindigkeitsvorteile je nach Anwendung besser nutzen.

In einem x86_64-PC beträgt die L2-Cache-Zeilengröße 64 Byte, also ist dies die natürliche Größe, in der Sie auf jeden RAM höherer Ebene (plus vielleicht ECC-Bits) zugreifen (lesen) möchten.
DDR4 ist 64 Bit breit, was bedeuten würde, dass, wenn Sie den Speicher paarweise einbauen müssen, ein Lesevorgang 128 Bit beträgt und es einen Burst von 4 Zyklen dauern würde, um eine Cache-Zeile zu füllen. Das scheint also gut zusammenzupassen.
Danke für die Antworten. Kennt jemand gutes Lesematerial, das dieselben Informationen oder einfach viele grundlegende Dinge über SDRAM enthalten könnte? Am liebsten etwas Seriöses, das ich in einer informellen Präsentation zitieren könnte.