Wie erfolgt die DDR3-SDRAM-Adressierung?

Um an der Programmierung eines DDR3-SDRAM zu arbeiten, ging ich die JEDEC-Standard-DDR3-SDRAM-Spezifikation durch (Link zu pdf, Seite 30).
Ich war ein bisschen verwirrt über die DDR3-Adressierung, von der ein Schnappschuss unten ist.
Geben Sie hier die Bildbeschreibung ein
Korrigieren Sie mich, wenn ich falsch liege. 512 MB entsprechen der Gesamtzahl von Bits, die SDRAM speichern kann. Es kann 3 Konfigurationen geben, in denen Daten gespeichert werden können, 128 MB x 4, 64 MB x 8, 32 MB x 16.
Die 4, 8 und 16 in der obigen Konfiguration sind meiner Meinung nach die Länge jeder Position im SDRAM, dh in 128 MB x 4-Konfiguration gibt es 128 MB Speicherplatz mit jeweils 4 Bits. Ähnlich für die anderen 2 Konfigurationen.

Was ich nicht verstehe, ist, dass DDR3-SDRAM 64 Daten-I/Os hat, nämlich DDR_DQ-Pins. Warum gibt es also keine Konfiguration wie 8 MB x 64, um alle 64 I/O-Datenpins zu nutzen?

Oder habe ich das komplett falsch verstanden?

Wo genau sehen Sie einen Verweis auf 64 E / A-Pins? Üblicherweise werden breite Busse unterstützt, indem mehrere Chips parallel betrieben werden, wie auf einem Speichermodul.

Antworten (1)

Dies ist eine Adressierung für einzelne Chips. Hier sind 6 verschiedene Chips aufgelistet, drei mit 512 MB und drei mit 1 GB. Zwei der Chips haben 4 DQ-Pins, zwei haben 8 und zwei haben 16 Pins. Der DDR3-Standard unterstützt 4, 8 oder 16 DQ-Pins pro Chip. Wenn Chips zu Modulen kombiniert werden, müssen Sie insgesamt 64 DQ-Pins erhalten. Sie könnten also beispielsweise ein Modul mit vier 64Mx16, acht 128Mx8 oder sechzehn 256Mx4 bauen. Die Adresspins werden dann von allen Chips auf dem Modul geteilt. Es ist auch möglich, ein „Dual-Rank“-Modul zu bauen, bei dem jeder DQ-Pin des Moduls mit zwei Chips verbunden ist. Dies erhöht die Speicherkapazität auf Kosten der Geschwindigkeit – nur ein Rang kann die DQ-Pins gleichzeitig verwenden,

Also wird ein einzelner Lesevorgang auf einem der Chips 4, 8 oder 16 Bits auf dem DQ zurückgeben?
Ja. Aber auf einem DIMM ist es unmöglich, einen einzigen Chip zu lesen oder zu schreiben. Auf alle Chips im gleichen Rang wird parallel zugegriffen, wobei sie zusammen 64 Bit bereitstellen.
Ok, das verstehe ich (zumindest ist es ein Problem mit dem Speichercontroller von Intel, eine ganz andere Frage wäre: "Wie wird auf den RAM zugegriffen? Ist er der Firmware zugeordnet und undurchsichtig?"). Ich war nur verwirrt, wie die eigentliche Einheit der Lagerung. Wählen Sie also eine Bank, wählen Sie eine Zeilenadresse, wählen Sie eine Spaltenadresse und Sie erhalten einen 8-Bit-Wert.
Es ist kein Problem mit einem Speichercontroller, sondern wie die Chips physisch verdrahtet sind. Die Lese- und Schreibsteuersignale werden parallel zu allen Chips auf dem Modul geschaltet. Es ist unmöglich, einen Lesebefehl nur an einen der Chips auszugeben. Was das Schreiben betrifft, gibt es Byte-Freigaben, um das Schreiben byteweise zu deaktivieren ... aber wenn das Modul aus 4-Bit-Chips besteht, dann können Sie die Chips nur paarweise steuern. Der springende Punkt ist, dass es keine Rolle spielt, wie der Bus aufgeteilt und auf separaten Chips gespeichert wird.
Ich habe nur aus der Perspektive von jemandem gefragt, der den Initialisierungscode schreibt, bevor das UEFI-BIOS starten kann, der Teil, der den RAM initialisiert und testet. Ich vermute, dass es wahrscheinlich gerätespezifisch ist.
Nun, das ist eine ziemlich tiefgründige Frage. Ich bin mir nicht sicher, wie es auf einem modernen Intel-Motherboard funktioniert ... aber irgendetwas muss die SPD-EEPROMs auf den Speichermodulen auslesen und dann die Konfiguration des Speichercontrollers entsprechend einrichten. Dies wird wahrscheinlich spezifisch für die genaue Hardwarekonfiguration sein. Ich würde empfehlen, sich ein Speichercontroller-Datenblatt anzusehen, um eine Vorstellung davon zu bekommen, worum es geht.