XDR DRAM - XDR DRAM

XDR-DRAM.

XDR DRAM ( Dynamic Random Access Memory mit extremer Datenrate ) ist eine leistungsstarke dynamische Direktzugriffsspeicherschnittstelle . Es basiert auf RDRAM und ist dessen Nachfolger . Konkurrierende Technologien umfassen DDR2 und GDDR4 .

Überblick

XDR wurde entwickelt, um in kleinen Consumer-Systemen mit hoher Bandbreite, Hochleistungsspeicheranwendungen und High-End- GPUs effektiv zu sein . Es beseitigt die ungewöhnlich hohen Latenzprobleme, die frühe Formen von RDRAM plagten. Außerdem legt XDR DRAM großen Wert auf die Bandbreite pro Pin, was einer weiteren Kostenkontrolle bei der Leiterplattenproduktion zugute kommen kann. Dies liegt daran, dass bei gleicher Bandbreite weniger Lanes benötigt werden. Rambus besitzt die Rechte an der Technologie. XDR wird von Sony in der PlayStation 3- Konsole verwendet.

Technische Spezifikationen

Performance

  • Anfängliche Taktrate bei 400 MHz.
  • Oktale Datenrate (ODR): Acht Bits pro Taktzyklus pro Spur.
  • Jeder Chip bietet 8, 16 oder 32 programmierbare Spuren mit bis zu 230,4  Gbit / s (28,8  GB / s) bei 900 MHz (7,2 GHz effektiv).

Eigenschaften

  • Bidirektionale differentielle Rambus-Signalpegel (DRSL)
    • Dies verwendet einen Differential- Open-Collector- Treiber mit einem Spannungshub von 0,2 V. Es ist nicht dasselbe wie LVDS . [1]
  • Programmierbare On-Chip-Terminierung
  • Adaptive Impedanzanpassung
  • Acht Bankspeicherarchitektur
  • Bis zu vier bankverschachtelte Transaktionen bei voller Bandbreite
  • Punkt-zu-Punkt-Datenverbindung
  • Verpackungsverpackung im Chip-Maßstab
  • Dynamische Anforderungsplanung
  • Early-Read-After-Write-Unterstützung für maximale Effizienz
  • Keine Overhead-Aktualisierung

Leistungsbedarf

  • 1,8 V Vdd
  • Programmierbarer Ultra-Niederspannungs-DRSL-200-mV-Schwung
  • PLL / DLL- Design mit geringem Stromverbrauch
  • Selbstaktualisierungsunterstützung beim Ausschalten
  • Unterstützung für dynamische Datenbreite mit dynamischem Clock-Gating
  • Per-Pin-E / A-Abschaltung
  • Unterstützung für die Aktivierung von Unterseiten

Einfaches Systemdesign

  • FlexPhase- Schaltungen pro Bit kompensieren eine Auflösung von 2,5 ps
  • XDR Interconnect verwendet die minimale Pinanzahl

Latenz

  • 1,25 / 2,0 / 2,5 / 3,33 ns Anforderungspakete

Protokoll

Die Hochgeschwindigkeitssignale eines XDR-RAM-Chips sind ein Differenztakteingang (Takt vom Master, CFM / CFMN), ein 12-Bit- Single-Ended- Anforderungs- / Befehlsbus (RQ11..0) und ein bidirektionaler Differenzdatenbus bis zu 16 Bits breit (DQ15..0 / DQN15..0). Der Anforderungsbus kann parallel mit mehreren Speicherchips verbunden sein, aber der Datenbus ist Punkt zu Punkt; Es darf nur ein RAM-Chip daran angeschlossen werden. Um unterschiedliche Speichermengen mit einem Speichercontroller mit fester Breite zu unterstützen, verfügen die Chips über eine programmierbare Schnittstellenbreite. Ein 32-Bit-breiter DRAM-Controller kann 2 16-Bit-Chips unterstützen oder mit 4 Speicherchips verbunden sein, von denen jeder 8 Datenbits liefert, oder mit bis zu 16 Chips, die mit 2-Bit-Schnittstellen konfiguriert sind.

Darüber hinaus verfügt jeder Chip über einen seriellen Bus mit niedriger Geschwindigkeit, mit dem seine Funktionen ermittelt und seine Schnittstelle konfiguriert werden. Dies besteht aus drei gemeinsam genutzten Eingängen: einer Rücksetzleitung (RST), einem seriellen Befehlseingang (CMD) und einer seriellen Uhr (SCK) sowie seriellen Dateneingangs- / -ausgangsleitungen (SDI und SDO), die miteinander verkettet sind und schließlich eine Verbindung herstellen an einen einzelnen Pin des Speichercontrollers.

Alle Single-Ended-Leitungen sind aktiv-niedrig . Ein bestätigtes Signal oder eine logische 1 wird durch eine niedrige Spannung dargestellt.

Der Anforderungsbus arbeitet mit doppelter Datenrate relativ zum Takteingang. Zwei aufeinanderfolgende 12-Bit-Übertragungen (beginnend mit der fallenden Flanke von CFM) ergeben ein 24-Bit-Befehlspaket.

Der Datenbus arbeitet mit der 8-fachen Taktrate. Ein 400-MHz-Takt erzeugt 3200 MT / s. Alle Datenlese- und -schreibvorgänge werden in 16 Übertragungsbursts ausgeführt, die 2 Taktzyklen dauern.

Die Anforderungspaketformate lauten wie folgt:

XDR DRAM-Anforderungspaketformate
Clock
Rand
Bit NOP Spalte lesen / schreiben Kalibrieren / Ausschalten Vorladen / Auffrischen Zeile aktivieren Maskiertes Schreiben
Bit Bit Beschreibung Bit Beschreibung Bit Beschreibung Bit Beschreibung Bit Beschreibung
RQ11 0 0 COL Opcode 0 COLX-Opcode 0 ROWP-Opcode 0 ROWA-Opcode 1 COLM-Opcode
RQ10 0 0 0 0 1 M3 Schreiben Sie
niedrige Masken der Maske
RQ9 0 0 1 1 R9 Zeilenadresse
hohe Bits
M2
RQ8 0 1 0 1 R10 M1
RQ7 x WRX Schreib- / Lesebit x reserviert POP1 Vorladeverzögerung (0–3) R11 M0
RQ6 x C8
Hohe Bits der Spaltenadresse
x POP0 R12 reserviert C8
Hohe Bits der Spaltenadresse
RQ5 x C9 x x reserviert R13 C9
RQ4 x C10 reserviert x x R14 C10 reserviert
RQ3 x C11 XOP3 Subopcode x R15 C11
RQ2 x BC2 Bankadresse XOP2 BP2 Bank vorladen BA2 Bankadresse BC2 Bankadresse
RQ1 x BC1 XOP1 BP1 BA1 BC1
RQ0 x BC0 XOP0 BP0 BA0 BC0
RQ11 x DELC Befehlsverzögerung (0–1) x reserviert POP2 Vorladefreigabe DELA Befehlsverzögerung (0–1) M7 Schreiben Sie
hohe Masken für die Maske
RQ10 x x reserviert x ROP2 Befehl aktualisieren R8
Niedrige Bits der Zeilenadresse
M6
RQ9 x x x ROP1 R7 M5
RQ8 x x x ROP0 R6 M4
RQ7 x C7
Niedrige Bits der Spaltenadresse
x DELR1 Aktualisierungsverzögerung (0–3) R5 C7
Niedrige Bits der Spaltenadresse
RQ6 x C6 x DELR0 R4 C6
RQ5 x C5 x x reserviert R3 C5
RQ4 x C4 x x R2 C4
RQ3 x SC3 Unterspaltenadresse x x R1 SC3 Unterspaltenadresse
RQ2 x SC2 x BR2 Bank aktualisieren R0 SC2
RQ1 x SC1 x BR1 SR1 Unterzeilenadresse SC1
RQ0 x SC0 x BR0 SR0 SC0

Es gibt eine große Anzahl von Zeiteinschränkungen, die Mindestzeiten angeben, die zwischen verschiedenen Befehlen vergehen müssen (siehe Dynamischer Direktzugriffsspeicher § Speicherzeitpunkt ). Der sie sendende DRAM-Controller muss sicherstellen, dass alle erfüllt sind.

Einige Befehle enthalten Verzögerungsfelder. Diese verzögern die Wirkung dieses Befehls um die gegebene Anzahl von Taktzyklen. Dadurch können mehrere Befehle (an verschiedene Bänke) im selben Taktzyklus wirksam werden.

Befehl zur Zeilenaktivierung

Dies entspricht dem Aktivierungsbefehl des Standard-SDRAM und gibt eine Zeilenadresse an, die in das Sense-Verstärker-Array der Bank geladen werden soll. Um Energie zu sparen, kann ein Chip so konfiguriert sein, dass nur ein Teil des Erfassungsverstärkerarrays aktiviert wird. In diesem Fall geben die SR1..0-Bits die Hälfte oder das Viertel der zu aktivierenden Zeile an, und die Spaltenadressen der folgenden Lese- / Schreibbefehle müssen auf diesen Teil beschränkt sein. (Aktualisierungsvorgänge verwenden immer die vollständige Zeile.)

Lese- / Schreibbefehle

Diese arbeiten analog zu den Lese- oder Schreibbefehlen eines Standard-SDRAM und geben eine Spaltenadresse an. Daten werden dem Chip einige Zyklen nach einem Schreibbefehl (typischerweise 3) zur Verfügung gestellt und vom Chip einige Zyklen nach einem Lesebefehl (typischerweise 6) ausgegeben. Wie bei anderen SDRAM-Formen ist der DRAM-Controller dafür verantwortlich, dass der Datenbus nicht gleichzeitig in beide Richtungen verwendet werden soll. Daten werden immer in Bursts mit 16 Übertragungen übertragen, die 2 Taktzyklen dauern. Somit werden für ein × 16-Gerät 256 Bits (32 Bytes) pro Burst übertragen.

Wenn der Chip einen Datenbus verwendet, der weniger als 16 Bit breit ist, werden eines oder mehrere der Unterspalten-Adressbits verwendet, um den Teil der Spalte auszuwählen, der auf dem Datenbus dargestellt werden soll. Wenn der Datenbus 8 Bit breit ist, wird SC3 verwendet, um zu identifizieren, auf welche Hälfte der gelesenen Daten zugegriffen werden soll; Wenn der Datenbus 4 Bit breit ist, werden SC3 und SC2 usw. verwendet.

Im Gegensatz zum herkömmlichen SDRAM ist die Auswahl der Reihenfolge, in der die Daten innerhalb eines Bursts geliefert werden, nicht vorgesehen. Daher ist es nicht möglich, zuerst kritische Wörter zu lesen.

Maskierter Schreibbefehl

Der maskierte Schreibbefehl ähnelt einem normalen Schreibbefehl, es ist jedoch keine Befehlsverzögerung zulässig, und ein Maskenbyte wird bereitgestellt. Dies ermöglicht die Steuerung, welche 8-Bit-Felder geschrieben werden. Dies ist keine Bitmap, die angibt, welche Bytes geschrieben werden sollen. Es wäre nicht groß genug für die 32 Bytes in einem Schreibburst. Es ist vielmehr ein Bitmuster, mit dem der DRAM-Controller ungeschriebene Bytes füllt. Der DRAM-Controller ist dafür verantwortlich, ein Muster zu finden, das nicht in den anderen zu schreibenden Bytes erscheint. Da es 256 mögliche Muster und nur 32 Bytes im Burst gibt, ist es einfach, eines zu finden. Selbst wenn mehrere Geräte parallel geschaltet sind, kann ein Maskenbyte immer gefunden werden, wenn der Bus höchstens 128 Bit breit ist. (Dies würde 256 Bytes pro Burst erzeugen, aber ein maskierter Schreibbefehl wird nur verwendet, wenn mindestens einer von ihnen nicht geschrieben werden soll.)

Jedes Byte sind die 8 aufeinanderfolgenden Bits, die während eines bestimmten Taktzyklus über eine Datenleitung übertragen werden. M0 wird an das erste während eines Taktzyklus übertragene Datenbit angepasst, und M7 wird an das letzte Bit angepasst.

Diese Konvention stört auch das Ausführen von Lesevorgängen mit kritischen Wörtern zuerst. Jedes Wort muss Bits von mindestens den ersten 8 übertragenen Bits enthalten.

Befehl zum Vorladen / Aktualisieren

Dieser Befehl ähnelt einer Kombination der Vorlade- und Aktualisierungsbefehle eines herkömmlichen SDRAM. Die Bits POP x und BP x geben eine Vorladeoperation an, während die Bits ROP x , DELR x und BR x eine Aktualisierungsoperation angeben. Jeder kann separat aktiviert werden. Wenn aktiviert, kann jeder eine andere Befehlsverzögerung haben und muss an eine andere Bank adressiert werden.

Vorladebefehle können jeweils nur an eine Bank gesendet werden. Im Gegensatz zu einem herkömmlichen SDRAM gibt es keinen Befehl "Alle Banken vorladen".

Aktualisierungsbefehle unterscheiden sich auch von einem herkömmlichen SDRAM. Es gibt keinen Befehl "Alle Bänke aktualisieren", und der Aktualisierungsvorgang ist in separate Aktivierungs- und Vorladevorgänge unterteilt, sodass das Timing vom Speichercontroller bestimmt wird. Der Auffrischungszähler kann auch von der Steuerung programmiert werden. Operationen sind:

  • 000: NOPR Keine Aktualisierungsoperation ausführen
  • 001: REFP Refresh Precharge; Beenden Sie den Aktualisierungsvorgang für die ausgewählte Bank.
  • 010: REFA Refresh aktivieren; Aktivieren Sie die vom REFH / M / L-Register und der ausgewählten Bank zur Aktualisierung ausgewählte Zeile.
  • 011: REFI Refresh & Inkrement; wie bei REFA, aber auch das REFH / M / L-Register erhöhen.
  • 100: LRR0 Ladeaktualisierungsregister niedrig; Kopieren Sie RQ7–0 in die niedrigen 8 Bits des Aktualisierungszählers REFL. Keine Befehlsverzögerung.
  • 101: LRR1 Lade das Aktualisierungsregister in der Mitte; Kopieren Sie RQ7–0 in die mittleren 8 Bits des Aktualisierungszählers REFM. Keine Befehlsverzögerung.
  • 110: LRR2 Ladeaktualisierungsregister hoch; Kopieren Sie RQ7–0 in die hohen 8 Bits des Aktualisierungszählers REFH (falls implementiert). Keine Befehlsverzögerung.
  • 111 reserviert

Befehl Kalibrieren / Herunterfahren

Dieser Befehl führt eine Reihe verschiedener Funktionen aus, die durch das XOP x- Feld bestimmt werden. Obwohl es 16 Möglichkeiten gibt, werden tatsächlich nur 4 verwendet. Drei Unterbefehle starten und stoppen die Kalibrierung des Ausgangstreibers (die regelmäßig alle 100 ms durchgeführt werden muss).

Der vierte Unterbefehl versetzt den Chip in den Ausschaltmodus. In diesem Modus führt es eine interne Aktualisierung durch und ignoriert die Hochgeschwindigkeitsdatenleitungen. Es muss mit dem langsamen seriellen Bus geweckt werden.

Serieller Low-Speed-Bus

XDR-DRAMs werden unter Verwendung eines seriellen Busses mit niedriger Geschwindigkeit geprüft und konfiguriert. Die RST-, SCK- und CMD-Signale werden von der Steuerung parallel zu jedem Chip angesteuert. Die SDI- und SDO-Leitungen sind in Reihe geschaltet, wobei der letzte SDO-Ausgang mit dem Controller verbunden und der erste SDI-Eingang hoch gebunden ist (logisch 0).

Beim Zurücksetzen treibt jeder Chip seinen SDO-Pin auf Low (1). Wenn das Zurücksetzen freigegeben wird, wird eine Reihe von SCK-Impulsen an die Chips gesendet. Jeder Chip treibt seinen SDO-Ausgang einen Zyklus hoch (0), nachdem sein SDI-Eingang hoch (0) ist. Außerdem wird die Anzahl der Zyklen gezählt, die zwischen dem Freigeben des Zurücksetzens und dem Anzeigen des hohen SDI-Eingangs vergehen, und Kopien, die in ein internes Chip-ID-Register zählen. Vom Controller über die CMD-Leitung gesendete Befehle enthalten eine Adresse, die mit dem Chip-ID-Feld übereinstimmen muss.

Allgemeine Befehlsstruktur

Jeder Befehl liest oder schreibt ein einzelnes 8-Bit-Register unter Verwendung einer 8-Bit-Adresse. Dies erlaubt bis zu 256 Register, aber derzeit ist nur der Bereich 1–31 zugewiesen.

Normalerweise bleibt die CMD-Leitung hoch (logisch 0) und SCK-Impulse haben keine Auswirkung. Um einen Befehl zu senden, wird eine Folge von 32 Bits über die CMD-Leitungen getaktet:

  • 4 Bits 1100eines Befehlsstartsignals.
  • Ein Lese- / Schreibbit. Wenn 0, ist dies ein Lesevorgang, wenn 1 ein Schreibvorgang ist.
  • Ein Single / Broadcast-Bit. Bei 0 wird nur das Gerät mit der passenden ID ausgewählt. Bei 1 führen alle Geräte den Befehl aus.
  • 6 Bit serielle Geräte-ID. Geräte-IDs werden beim Zurücksetzen des Geräts automatisch beginnend mit 0 zugewiesen.
  • 8 Bit Registeradresse
  • Ein einzelnes Bit von "0". Dies bietet Zeit, um Leseanforderungen zu verarbeiten und die SDO-Ausgabe im Falle eines Lesens zu aktivieren.
  • 8 Datenbits. Wenn dies ein Lesebefehl ist, müssen die bereitgestellten Bits 0 sein, und der Wert des Registers wird am SDO-Pin des ausgewählten Chips erzeugt. Alle nicht ausgewählten Chips verbinden ihre SDI-Eingänge mit ihren SDO-Ausgängen, sodass der Controller den Wert sieht.
  • Ein einzelnes Bit von "0". Dies beendet den Befehl und bietet Zeit zum Deaktivieren der SDO-Ausgabe.

Siehe auch

Verweise

Externe Links