-
STAND DER TECHNIK
-
1. Gebiet der Erfindung
-
Die
vorliegende Offenbarung betrifft das Gebiet der Datenverarbeitungssysteme.
Im Besonderen betrifft die vorliegende Offenbarung die Initialisierung
oder Konfiguration von Speichervorrichtungen in einem Speicherkanal.
-
2. Beschreibung des Stands
der Technik
-
Speichervorrichtungen
und Speicherteilsysteme bzw. Speicher-Subsysteme weisen für gewöhnlich bestimmte
Initialisierungsschritte und/oder Registerwerte auf, die vor dem
normalen Betrieb programmiert werden müssen. Empfohlene Schritte und
Werte sind häufig
in einer Speicherspezifikation ausgeführt, die den Systementwicklern
bereitgestellt wird, die andere Systemhardware entwickeln, die Schnittstellenverbindungen mit
den Speichervorrichtungen bzw. Speicherbausteinen herstellen. Wenn
Initialisierungsroutinen weiter optimiert werden, so kann die Initialisierung
schneller abgeschlossen werden, was es in vorteilhafter Weise ermöglicht,
dass die Systemverarbeitung schneller beginnen kann.
-
Ein
Kanal (d. h. eine Buskonfiguration), der vor einem ordnungsgemäßen Betrieb
eine Initialisierung in erheblichem Umfang erfordert, ist ein RambusTM Direct Rambus Dynamic Random Access Memory
Kanal (ein Direct RDRAMTM Kanal). Dieser
Kanal ist im Detail beschrieben in Dokumentationen, die von der
Rambus Corporation, Mountain View, Kalifornien, USA, erhältlich sind.
RDRAM-Speicher und Speichersteuereinheiten, die eine Schnittstellenverbindung
mit einem Rambus-Kanal herstellen, weisen verschiedene Register
auf, die während
dem Initialisierungsvorgang gesetzt werden müssen.
-
Aus
der Dokumentation von Rambus ist es ersichtlich, dass eine Reihe
von Initialisierungsoperationen ausgeführt werden muss, bevor ein
Rambus-Kanal eingesetzt werden kann. Im Allgemeinen liest die Speichersteuereinheit
alle Nur-Leseregister in allen RDRAMs, verarbeitet diese Informationen
und schreibt danach alle Schreib-Lese-Register in dem entsprechenden
Betriebsmodus an die entsprechende Stelle in den RDRAMs. Die Register
DeviceID und TRDLY sind wichtige Schreib-Lese-Register, die entsprechend
die Speicheradresse für
Speichertransaktionen und den Verzögerungswert für Speicherlesedaten
festlegen.
-
Ein
eindeutiger bzw. einzigartiger Vorrichtungsserienidentifikationswert
kann für
jeden RDRAM in dem Kanal festgelegt werden, indem die ganze serielle
Kette in einer Schleife durchlaufen wird, und wobei sequentielle
Serienidentifikationsnummern zugewiesen werden (siehe z. B. S. 28
des Datenblatts Direct RDRAMTM 64/72 Mbit).
Ein zweiter ID-Wert, der einfach als Vorrichtungs-ID bezeichnet
wird, ermöglicht
Speicherzugriffe über
den Rambus-Kanal
bei normalem Betrieb. Eine eindeutige Vorrichtungs-ID muss auch
für aktive
Vorrichtungen in dem Kanal festgelegt werden, wobei in der Literatur
jedoch keine spezielle Technik für
die Zuweisung bzw. Zuordnung von Vorrichtungs-IDs beschrieben wird.
-
Darüber hinaus
können
RDRAMs die Funktionen Auffrischen (Refresh), Vorladen (Precharge),
Stromkalibrierung, Stromabtastung und verschiedene andere Funktionen
ausführen
(siehe z. B. Seiten 8–9
des Datenblatts Direct RDRAMTM 64/72 Mbit).
Diese Befehle werden zwar allgemein in dem Datenblatt Direct RDRAMTM 64/72 Mbit beschrieben, wobei jedoch keine
vollständige
Initialisierungssequenz bereitgestellt werden kann. Ferner ist es
möglich,
dass Einzelheiten der Initialisierung und/oder der Konfiguration
der jeweiligen Speichersteuereinheiten nicht zur Verfügung stehen.
Somit kann gemäß dem Stand
der Technik kein geeignetes oder vollständiges Verfahren oder eine
entsprechende Vorrichtung zum Konfigurieren einer Reihe von Speichervorrichtungen
bzw. Speicherbausteinen in einem Speicherkanal bereitgestellt werden.
-
Das
U.S. Patent
US-A-5.040.153 offenbart
ein Speicheradressierungssystem, das DRAMs verschiedener Größen behandeln
kann. Die logische Anordnung der Bänke muss nicht mit der physikalischen
Anordnung der Bänke
entsprechen. Ein Hardwareregister ist jedem Paar von Bänken von
DRAMs zugeordnet, das so programmierbar ist, dass ein Typ von DRAM
angezeigt wird, der in bestimmten Speicherbänken eingesetzt ist, sowie
die Anfangsadresse der speziellen Anordnung von Speicherbänken. Es
ist nicht erforderlich, die größten Speicherchips
in die erste Speicherbank einzufügen.
Speicherchips jeder Größe können in
jede Anordnung von Speicherbänken
eingeführt
werden, und Informationen in dem programmierbaren Register werden
dazu eingesetzt, die Schaltkreisanordnung zu steuern, wodurch der
Zugriff auf an das Speichersystem gesendeter Signale entsprechend
modifiziert wird.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren zum Konfigurieren
und/oder Initialisieren von Speichervorrichtungen gemäß dem gegenständlichen
Anspruch 1.
-
Weitere
Ausführungsbeispiele
sind in den Unteransprüchen
enthalten.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein System gemäß dem gegenständlichen
Anspruch 19.
-
Vorgesehen
ist gemäß einem
dritten Aspekt der vorliegenden Erfindung ein Computerprogramm gemäß dem gegenständlichen
Anspruch 20.
-
Ein
offenbartes Ausführungsbeispiel
des Verfahrens initialisiert eine Speichersteuereinheit und eine Mehrzahl
von Konfigurationsregistern der Speichersteuereinheit. Serielle
Identifikationsnummern werden den Speichervorrichtungen zugewiesen,
die mit der Speichersteuereinheit gekoppelt sind. Zusätzlich werden
Gruppen von Vorrichtungsidentifikationsnummern, die zumindest teilweise
auf den Größen der
Speichervorrichtungen basieren, den Speichervorrichtungen zugewiesen,
und die Speichervorrichtungen werden freigegeben.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist in den Abbildungen der beigefügten Zeichnungen
beispielhaft und ohne einzuschränken
veranschaulicht. Es zeigen:
-
1 ein
Ausführungsbeispiel
eines Systems, das Konfigurationsregister in einer Speichersteuereinheit
verwendet, um Initialisierungsoperationen für die Speicherinitialisierung
zu bezeichnen;
-
2 ein
Flussdiagramm der Programmierung und Ausführung von Initialisierungsoperationen
in einem Ausführungsbeispiel
des Systems aus 1;
-
3 ein
Ausführungsbeispiel
eines Speichersteuerungs-Hubs, der eine Speicherinitialisierung
gemäß den Werten
veranschaulicht, die in die Steuerungs- und Datenregister geladen
werden;
-
4 ein
Flussdiagramm einer Speichervorrichtungskerninitialisierungsoperation;
-
5 ein
Ausführungsbeispiel
eines Systems, das einen Initialisierungsablauf gemäß den Abbildungen
der 6 bis 9 implementiert;
-
6 ein
Flussdiagramm eines Ausführungsbeispiels
einer gesamten Initialisierungssequenz für das Speicherteilsystem des
Systems aus 5;
-
7 ein
Ausführungsbeispiel
eines seriellen Vorrichtungsidentifikationsprozesses;
-
8A ein
Ausführungsbeispiel
eines ersten Abschnitts eines Gruppenvorrichtungsidentifikationsprozesses;
-
8B ein
Ausführungsbeispiel
eines Gruppenvorrichtungszuweisungsprozesses (z. B. Block 820 aus 8A);
-
8C ein
Ausführungsbeispiel
eines zweiten Abschnitts des Gruppenidentifikationsprozesses aus 8A;
-
9 ein
Ausführungsbeispiel
eines Speichervorrichtungskerninitialisierungsprozesses; und
-
10 ein
Ausführungsbeispiel
eines Prozesses der Rückkehr
aus einem Suspend-to-RAM-Power-Management-Zustands.
-
GENAUE BESCHREIBUNG DER ERFINDUNG
-
Die
folgende Beschreibung sieht ein Verfahren und eine Vorrichtung zum
Initialisieren einer Speichervorrichtung und eines Speicherkanals
vor. In der folgenden Beschreibung sind zahlreiche besondere Einzelheiten
ausgeführt,
wie etwa Registernamen, Speichertypen, Busprotokolle, bestimmte
Arten von Komponenten und ausgewählte
logische Partitionierungen und Integrationen, um ein umfassenderes
Verständnis
der vorliegenden Erfindung zu vermitteln. Hiermit wir jedoch festgestellt,
dass der Fachmann auf dem Gebiet die Erfindung auch ohne diese besonderen
Einzelheiten ausführen
kann. In anderen Fällen
wurde auf die nähere Darstellung
von Steuerstrukturen und Gate-Level-Schaltungen verzichtet, um die
vorliegende Erfindung nicht unnötig
zu verschleiern. Der Durchschnittsfachmann auf dem Gebiet ist anhand
der enthaltenen Beschreibungen in der Lage, die erforderlichen Logikschaltungen
ohne unangemessene Versuche zu implementieren.
-
Unter
Verwendung der vorliegenden offenbarten Techniken kann eine effiziente
und flexible Speicherinitialisierung vorgenommen werden. Steuer-
und Datenregister können
programmiert werden, wodurch bewirkt wird, dass ein Speichersteuerungs-Hub
(MCH) Initialisierungsoperationen (IOs) gemäß den in den Registern geladenen
Werten ausführt.
Da die Register durch Software programmiert werden können, wie
etwa durch ein BIOS (Basic Input/Output System), kann die Initialisierung
verhältnismäßig leicht
verändert
werden.
-
Die
Abbildung aus 1 zeigt ein Ausführungsbeispiel
eines Systems, das Register zur Durchführung der Speicherinitialisierung
einsetzt. Das System weist einen Prozessor 195 und ein
Speicherteilsystem 104 auf, die mit einem Speichersteuerungs-Hub
(MCH) 100 gekoppelt sind. Ebenfalls mit dem MCH 100 gekoppelt ist
ein sekundärer
Bus 180, mit dem eine Eingabevorrichtung 190 und
ein nichtflüchtiger
Speicher 185, der BIOS-Routinen aufweist, gekoppelt sind.
In bestimmten Ausführungsbeispielen
können
der nichtflüchtige Speicher 185 und/oder
die Eingabevorrichtung 190 über einen zweiten Steuer-Hub
(nicht abgebildet) mit dem MCH 100 gekoppelt sein.
-
In
dem veranschaulichten Ausführungsbeispiel
weist das Speicherteilsystem 104 drei Speichermodule 160, 170 und 175 auf,
die über
einen seriellen Bus 142 und einen Speicherbus 132 (auch
als Kanal bezeichnet) mit dem MCH 100 gekoppelt sind. Jedes Speichermodul
kann eine Reihe einzelner Speichervorrichtungen aufweisen. Zum Beispiel
weist das Speichermodul 160 mindestens die Speichervorrichtungen 160, 161 und 168 auf.
In einem Ausführungsbeispiel
handelt es sich bei den Speichervorrichtungen 160, 161 und 168 um
Rambus DRAMs (RDRAMs), wobei es sich bei den Speichermodulen um
Rambus In-Line Speichermodule (RIMMs)
handelt, und wobei der Kanal gemäß den Protokollen
arbeitet, die für
RIMMs und RDRAMs definiert sind.
-
Der
MCH 100 weist ein Steuerregister 112 und ein Datenregister 114 auf,
die für
Initialisierungszwecke eingesetzt werden können. Eine Initialisierungssteuerschaltung 120 führt Initialisierungsoperanden
(IOPs) aus, die in dem Steuerregister 112 programmiert
sind. Das Steuerregister 112 weist für gewöhnlich andere Felder auf, um
Informationen über
Initialisierungsoperationen zu spezifizieren, und wobei einige der
durch IOPs spezifizierten Operationen den Datenaustausch mit Vorrichtungen
in dem Speicherteilsystem umfassen bzw. beinhalten (z. B. Schreiben
und Lesen von Speichervorrichtungs-Steuerregistern oder die anderweitige
Erzeugung von Steuersignalen).
-
Eine
serielle Schnittstellenschaltung 140 erzeugt serielle Befehls-
und Datenfolgen an dem seriellen Bus 142. Einige der durch
die Initialisierungssteuerschaltung 120 ausgeführten Befehle
senden Befehle und/oder Daten über
den seriellen Bus 142 an das Speicherteilsystem. Steuerregister,
die Vorrichtungsregister für
Identifikationsnummern aufweisen, können über die seriellen Schnittstellenschaltung 140 gelesen
und beschrieben werden.
-
Eine
Speicherschnittstellenschaltung 130 übersetzt Speicherdaten in und
aus Datenpaketen, die mit dem Speicherteilsystem ausgetauscht werden.
In einem Ausführungsbeispiel
handelt es sich bei der Speicherschnittstellenschaltung um eine
Rambus ASIC Cell (RAC), die im Wesentlichen so arbeitet, wie dies
in dem Datenblatt "Direct
RAC Data Sheet" beschrieben
ist, das von der Rambus Corporation, Mountain View, Kalifornien,
USA, erhältlich
ist. Kurz gesagt wandelt RAC RSL-Signale (RSL als englische Abkürzung von
Rambus Signal Level) auf dem Kanal (Bus 132) in Signale
um, die durch andere Abschnitte des MCH 100 verarbeitet werden
können.
In ähnlicher
Weise wandelt die RAC die Signale der Speichersteuereinheit in ein
RSL-Signal um, das von Speichervorrichtungen an dem Rambus-Kanal verarbeitet
werden kann.
-
Eine
Folge von Initialisierungsereignissen für das System aus 1 ist
in der Abbildung aus 2 dargestellt. Wenn das System
einem Reset bzw. Neustart unterzogen oder eingeschaltet wird, führt das
BIOS für
gewöhnlich
verschiedene Initialisierungsoperationen aus. In dem Block 200 erreicht
das BIOS den Speicherkonfigurationsabschnitt. Abhängig von
dem Speichertyp und dem beabsichtigten Nutzungsmodus werden Initialisierungsoperationen
durch das BIOS in einer bestimmten Folge bzw. Sequenz ausgewählt (Block 205). Weitere
Einzelheiten eines Ausführungsbeispiels
einer Initialisierungssequenz für
ein System, das RDRAMs einsetzt, werden nachstehend im Text in Bezug
auf die Abbildungen der 5 bis 9 beschrieben.
-
Wie
dies in dem Block 210 dargestellt ist, werden Daten (sofern
vorhanden) für
die jeweilige Initialisierungsoperation in dem Datenregister 114 gespeichert,
und der Initialisierungsoperand selbst mit weiteren Steuerinformationen
wird in dem Steuerregister 112 gespeichert. In bestimmten
Ausführungsbeispielen
kann das BIOS diese Funktion ausführen, indem PCI-Konfigurationsregister
(PCI als englische Abkürzung
von Peripheral Component Interconnect) beschrieben werden. Alternativ
können
auch andere Register eingesetzt werden, wobei aber auch universelle
Speicherplätze
entweder in dem oder ohne den MCH können das Steuerregister darstellen.
Das Steuerregister kann somit jeden Speicherplatz darstellen, auf
den der MCH vor der Speicherinitialisierung zugreifen kann, der
ausreichend Bits für
die IOPs und etwaige sonstige erforderliche Steuerinformationen
speichern kann.
-
Die
Initialisierungsoperation kann automatisch beginnen, wenn die entsprechende
Initialisierungsoperation und/oder Steuerinformationen in das Steuerregister 112 programmiert
werden. Zum Beispiel kann die Ausführung der in Block 215 angezeigten
Initialisierungsoperation erreicht werden, indem ein Bit zum Einleiten der
Initialisierungsoperation (IIO) gesetzt wird, wenn der Initialisierungsoperand
in das Steuerregister 112 geladen wird. Das IIO-Bit kann
ein Feld des Steuerregisters 112 darstellen, so dass die
gleiche Register-Schreibtransaktion das IIO-Bit setzen und den IOP
bereitstellen kann.
-
Die
vollständige
Ausführung
der Initialisierungsoperation kann auf jede geeignete bzw. ausreichende Weise
signalisiert werden, um das BIOS darauf hinzuweisen bzw. darüber zu informieren,
dass die Initialisierungsoperation abgeschlossen ist. Zum Beispiel
kann der MCH das IIO-Bit automatisch löschen, wenn die Initialisierungsoperation
abgeschlossen ist. Wenn das BIOS das IIO-Bit abruft, kann es bestimmen,
wann die Initialisierungsoperation abgeschlossen ist, wie dies in
dem Block 220 angezeigt wird. Wenn die Initialisierungsoperation
nicht abgeschlossen ist, kann das BIOS weiter das IIO-Bit abrufen.
Wenn die Initialisierungsoperation abgeschlossen ist, kann das BIOS
die nächste
Initialisierungsoperation in der Initialisierungssequenz in dem
Block 205 auswählen.
-
Die
Eingabevorrichtung 190 kann Programmanweisungen von einer
Computerspeichervorrichtung 192 annehmen (z. B. einer optischen
oder magnetischen Disk oder anderen Speichervorrichtung) oder von
einem Netzwerk oder einer Kommunikationsschnittstelle 194.
BIOS-Code (d. h. Computerbefehle), der es bewirkt, dass das System
die offenbarten Techniken ausführt,
kann auf verschiedene Art und Weise in den nichtflüchtigen
Speicher 185 programmiert werden. Das BIOS kann programmiert
werden, wenn das System hergestellt wird, wobei es aber auch später über ein
computerlesbares Medium über
die Eingabevorrichtung 190 hinzugefügt werden kann.
-
In
Situationen, in denen das BIOS später hinzugefügt wird,
können
die Befehle bzw. Anweisungen über
ein computerlesbares Medium zugeführt werden. In Verbindung mit
einer entsprechenden Schnittstellenvorrichtung 190 ist
ein elektronisches Signal oder ein physikalischer Träger ein
computerlesbares Medium. Zum Beispiel handelt es sich bei der Computerspeichervorrichtung 192 in
einem Ausführungsbeispiel
um ein computerlesbares Medium. Eine Trägerwelle 196, welche
den Computerbefehl trägt
bzw. führt,
ist in einem anderen Ausführungsbeispiel
ein computerlesbares Medium. Die Trägerwelle 196 kann
moduliert oder anderweitig manipuliert werden, um Befehle aufzuweisen,
die durch die Eingabevorrichtung 190 unter Verwendung bekannter
oder anderweitig verfügbarer
Kommunikationstechniken decodiert werden können. In jedem Fall können die
Computerbefehle über
ein computerlesbares Medium zugeführt werden.
-
Die
Abbildung aus 3 veranschaulicht weitere Einzelheiten
eines Speicher-Steuer-Hubs (MCH) 300. Nachstehend sind
in Bezug auf ein Ausführungsbeispiel
Einzelheiten zu spezifischen Registernamen, Positionen, Größen, Felddefinitionen
und Initialisierungsoperationen ausgeführt. Für den Fachmann auf dem Gebiet
sind weitere Ausführungsbeispiele
ersichtlich. Verschiedene der nachstehend aufgeführten Operationen rufen bestimmte
Befehle auf, die von Rambus definiert sind in den Datenblättern 64/72-Mbit Data
Sheet und Direct RAC Data Sheet. Diese definierten Operationen sind
Operationen, die die Rambus RAC selbst an die RDRAMs sendet, wenn
entsprechende Steuersignale an die RAC gesendet werden. Wie dies
nachstehend ausgeführt
ist, ruft das vorliegende Ausführungsbeispiel
des MCH 300 bekannte RAC-Befehle von vorher nicht verfügbarer Hardware
und in neuen Verfahren oder Sequenzen auf.
-
In
dem vorliegenden Ausführungsbeispiel
weist der MCH
300 eine RAC
330 und eine serielle
Schnittstelle
340 auf. Die serielle Schnittstelle
340 verwendet
die Pins Takt (SCK), serieller Frame (CMD) und bidirektionale serielle
E/A-Pins (SIO0 und SIO1), um aus RDRAM-Konfigurationsregistern zu lesen und
diese zu beschreiben sowie zur Ausführung anderer IOPs. Der MCH
weist ferner ein Register Vorrichtungsregisterdaten (DRD)
314 auf.
Das DRD-Register
314 befindet sich an einer versetzten
Adresse 90–91h
in dem PCI-Konfigurationsraum,
wobei der Standardwert 0000h (16 Bits) lautet, und wobei es sich
bei dem Register um ein Schreib-Lese-Register handelt. Die Felder
des DRD-Registers sind in Tabelle 1 dargestellt. Tabelle 1: Ein Ausführungsbeispiel des DRD-Registers
Bit | Beschreibung |
15:0 | Daten
registrieren (RD): Die Bits 15:0 enthalten 16-Bit-Daten, die in
ein RDRAM-Register geschrieben oder aus einem RDRAM-Register gelesen
werden sollen als Folge der IOP-Ausführung. Daten sind gültig, wenn
das IIO-Bit des RICM-Registers von 1 auf 0 wechselt bzw. übergeht. |
-
Der
MCH
300 weist ferner ein Register RDRAM Initialisierungssteuermanagement
(RICM als englische Abkürzung
von RDRAM Initialization Control Management)
312 auf. Das
RICM-Register befindet sich an einer Versatzadresse 94–96h in
dem PCI-Konfigurationsraum,
wobei der Standardwert 000000h (24 Bits) lautet, und wobei es sich
bei dem Register um ein Schreib-Lese-Register handelt. Die Felder
des RICM-Registers für
dieses Ausführungsbeispiel
sind in Tabelle 2 ausgeführt. Tabelle 2: Ein Ausführungsbeispiel des RICM-Registers
Bit | Beschreibung |
23 | Initiate
Initialization Operation (IIO) (Operation Initialisierung einleiten):
Wenn auf 1 gesetzt, beginnt die Ausführung der durch das IOP-Feld
(unten) spezifizierten Initialisierungsoperation. Nach Abschluss
der Ausführung
löscht
der MCH das IIO-Bit auf 0. Ein Softwareprogramm sollte prüfen, um
festzustellen, ob das Bit gleich 0 ist, bevor es beschrieben wird.
Daten von Operationen, welche einen Registerdatenlesevorgang aus
dem RDRAM spezifizieren, sind in dem DRD-Register gültig, wenn das IIO-Bit auf
0 gelöscht
wird. |
22:21 | RESERVIERT:
Diese Bits werden für
normale Initialisierungsoperationen nicht verwendet. |
20 | Initialization
Complete (IC) (Initialisierung abgeschlossen): Das BIOS setzt dieses
Bit auf 1, wenn die Initialisierung der RDRAM-Speicheranordnung
abgeschlossen ist. |
19 | Broadcast
Address (BA) (Adresse übermitteln):
Wenn BA auf 1 gesetzt ist, wird die Initialisierungsoperation (IOP)
an alle Vorrichtungen in dem Kanal übermittelt. Wenn BA auf 1 gesetzt
ist, wird das SDA-Feld (unten) nicht verwendet. |
17:9 | Device Register
Address (DRA) (Vorrichtungsregisteradresse): Dieses Feld spezifiziert
die Registeradresse für
die Registerlese- und Schreibtransaktionen. |
8:4 | Serial Device/Channel
Address (SDA) (Serielle Vorrichtungs-/Kanaladresse): Das 5-Bit-Feld spezifiziert
folgendes:
• die
serielle Vorrichtungs-ID der RDRAM-Vorrichtung für die Befehle IOP RDRAM Register Read,
RDRAM Register Write, RDRAM Set Reset, RDRAM Clear Reset und RDRAM
Set Fast Clock Mode;
• die
Vorrichtungs-ID für
die Befehle IOP Powerdown Entry, Powerdown Exit, Nap Entry, Nap Exit,
Current Calibrate und Current Calibrate & Sample;
• die Bankadresse für die Befehle
IOP Refresh und Precharge |
18,
3:0 | Initialization
Opcode (IOP) (Initialisierungs-Operationscode): Dieses Feld spezifiziert
die an einer RDRAM-Vorrichtung oder der MCH RAC auszuführende Initialisierungsoperation. |
| Bits
[18,3:0]
0 0 0 0 0
0 0 0 0 1
0 0 0 1 0
0 0 0
1 1
0 0 1 0 0
0 0 1 0 1
0 0 1 1 0
0 0 1
1 1 bis 0 1 1 1 1
1 0 0 0 0
1 0 0 0 1
1 0 0
1 0
1 0 0 1 1
1 0 1 0 0
1 0 1 0 1
1 0 1 1 0
1
0 1 1 1
1 1 0 0 0
1 1 0 0 1
1 1 0 1 0
1 1 0
1 1 | Spezifizierte
Operation
RDRAM Register Read
RDRAM Register Write
RDRAM
Set Reset
RDRAM Clear Reset
RDRAM Set Fast Clock Mode
Reserviert
RDRAM
Temperature Calibrate Enable und danach Temperature Calibrate
Reserviert
RDRAM
Core Initialization (RCI)
RDRAM SIO Reset
RDRAM Powerdown
Exit
RDRAM Powerdown Entry
RDRAM "Current Cal" und "Current Cal + Sample"
Manual Current Calibration of
MCH RAC
Load MCH RAC control register with data from DRD register
Initialize
MCH RAC
RDRAM Nap Entry
RDRAM Nap Exit
RDRAM Refresh
RDRAM
Precharge |
Alle anderen
Kombinationen sind reserviert.
Weitere Einzelheiten zu den
durch das IOP-Feld spezifizierten Operationen sind in der folgenden
Tabelle 3 dargestellt. |
-
Die
Abbildung aus 3 veranschaulicht ferner eine
Initialisierungssteuerschaltung 320, die eine RDRAM IOP
Ausführungsschaltung 325 aufweist.
Einzelheiten der verschieden durch die Steuerschaltung 320 ausgeführten IOPs
sind in Tabelle 3 dargestellt. In Tabelle 3 sind das Feld Übermittlungsadresse
(Broadcast Address (BA)) (Bit 19) und das Feld SDA (Bits 8:4) durch
eine der folgenden Darstellungen aufgeführt:
- NE:
- Das Feld wirkt sich
nicht auf die Initialisierungsoperation aus;
- 0:
- Das Feld muss für diese
Initialisierungsoperation auf 0 gesetzt werden;
- 1:
- Das Feld muss für die Initialisierungsoperation
auf 1 gesetzt werden;
- x:
- Das Feld sollte entsprechend
für die
jeweilige Initialisierungsoperation programmiert werden.
Tabelle 3: Details zur IOP-Operation Bits
[18, 3:0] | Operationsbezeichnung | BA | SDA | Einzelheiten |
0
0 0 0 0 | RDRAM
Register Read | 0 | x | Dieser
IOP führt
das serielle Lesen aus dem durch die Felder SDA und DRA spezifizierten
RDRAM-Register aus. |
0
0 0 0 1 | RDRAM
Register Write | x | x | Dieser
IOP führt
das serielle Schreiben in das durch die Felder SDA und DRA spezifizierte
RDRAM-Register aus. Die Schreibdaten werden in dem DRD-Register bereitgestellt.
Eine Schreiboperation an alle RDRAM-Vorrichtungen auf dem Kanal kann ausgeführt werden,
indem das Feld BA auf 1 gesetzt wird. |
0
0 0 1 0 | RDRAM
Set Reset | x | x | Dieser
IOP führt
das serielle Setzen eines Reset-Bits in einer durch das Feld SDA
spezifizierten RDRAM-Vorrichtung aus. |
0
0 0 1 1 | RDRAM
Clear Reset | x | x | Dieser
IOP führt
das serielle Löschen
des Reset-Bits bzw. Rücksetz-Bits
in einer durch das SDA-Feld spezifizierten RDRAM-Vorrichtung aus.
Die Operation Clear Reset versetzt die Vorrichtung in einen Powerdown-
bzw. Ausschaltzustand. Mindestens vier SCK-Zyklen müssen nach der SIO Paket anfordern
vergehen, bevor die RDRAM-Vorrichtung
diesen Ausschaltzustand verlassen kann. Die Operation Clear Reset
kann nicht ausgegeben werden, bevor nicht 16 SCK-Zyklen nach der
Operation Set Reset aufgetreten sind. |
0
0 1 0 0 | RDRAM
Set Fast Clock Mode | x | x | Die
Operation Set Fast Clock Mode bereit die RDRAM-Vorrichtung vor für die Übermittlung
und den Empfang von Daten auf RSL-Signalen unter Verwendung des
RDRAM-Takts (RCLK). |
0
0 1 1 0 | RDRAM
Temperature Calibrate Enable und danach Temperature Calibrate | 1 | x | Nach
dem Empfang dieses IOP gibt der MCH ein SIO-Anforderungspaket "Temperature Calibrate
Enable" aus, unmittelbar
gefolgt von einem SIO-Anforderungspaket "Temperature Calibrate" an alle RDRAMs. |
1
0 0 0 0 | RDRAM
Core Initialization (siehe Figur 4) | NE | NE | Nach
dem Empfang dieses IOP-Befehls führt
der MCH folgendes aus:
1. Das Verlassen des Powerdown übermitteln.
2.
Alle RDRAM-Kerne aller RDRAM-Vorrichtungen
auf dem Kanal initialisieren.
3. Temp Cal Enable und Temp Cal übermitteln.
4.
NAP Entry (wenn Bit 6 (PBS) des DRAMC-Registers gleich 1 ist) übermitteln.
5.
Wenn das IC-Bit (Bit 20) des RICM-Registers in Verbindung mit diesem Befehl auf
1 gesetzt ist, so gibt der MCH RDRAM Refresh, RDRAM Current Cal, RDRAM
Temp Cal und die RDRAM DLL Refresh Logik frei, nachdem dieser Befehl
vollständig
ausgeführt
worden ist. |
1
0 0 0 1 | RDRAM
SIO Reset | NE | NE | Dieser
IOP sendet eine SIO-Pin-Initialisierungssequenz
an alle RDRAMs. Wenn diese Operation eintritt, wird der SIO0-Pin
an dem RDRAM als Eingang konfiguriert und der SIO1-Pin wird als Ausgang
konfiguriert. Zusätzlich
wird das SIO-Repeater-Bit
auf 1 gesetzt. |
1
0 0 1 0 | RDRAM
Powerdown Exit | x | x | Nach
dem Empfang dieses IOP leitet der MCH eine Sequenz zum Verlassen
eines Powerdown-Zustands für
die durch die SDA- und BA-Felder spezifizierte RDRAM-Vorrichtung
ein. Das SDA-Feld sollte
die Vorrichtungs-ID, nicht die serielle Vorrichtungs-ID aufweisen. |
1
0 0 1 1 | RDRAM
Powerdown Entry | x | x | Nach
dem Empfang dieser IOP sendet der MCH ein Paket Powerdown Entry PCP
an die durch die SDA- und BA-Felder
spezifizierte RDRAM-Vorrichtung. Das
SDA-Feld sollte die Vorrichtungs-ID aufweisen, nicht die serielle
Vorrichtungs-ID. |
1
0 1 0 0 | RDRAM "Current Cal" und "Current Cal + Sample" | x | x | Nach
dem Empfang dieses IOP sendet der MCH drei Pakete Current Calibrate SCP,
gefolgt von einem Paket Current Calibrate and Sample SCP an die
durch das Feld SDA spezifizierte RDRAM-Vorrichtung. |
1
0 1 0 1 | Manual
Current Calibration of MCH RAC | NE | NE | Nach
dem Empfang dieses IOP leitet der MCH eine Operation Manual Current
Calibration of MCH RAC ein. |
1
0 1 1 0 | Load
MCH RAC control register with data from DRD register | NE | NE | Nach
dem Empfang dieser IOP lädt
der MCH das MCH RAC-Steuerregister mit den Daten aus dem DRD-Register. |
1
0 1 1 1 | Initialize
MCH RAC | NE | NE | Nach
dem Empfang dieses IOP initialisiert der MCH die MCH RAC. Die MCH RAC-Initialisierung
enthält
die Einschaltsequenz (Power Up), die Current Calibration und Temperature
Calibration der RAC MCH. Nach der Ausführung dieses Befehls gibt der
MCH die periodische Strom- und Temperaturkalibrierung der MCH RAC
frei, selbst wenn das IC-Bit nicht auf 1 gesetzt ist. |
1
1 0 0 0 | RDRAM
Nap Entry | x | x | Nach
dem Empfang dieses IOP sendet der MCH ein Paket Nap Entry PCP an
die durch die Felder SDA und BA spezifizierte RDRAM-Vorrichtung.
Das Feld SDA sollte die Vorrichtungs-ID und nicht die serielle Vorrichtungs-ID
enthalten. |
1
1 0 0 1 | RDRAM
Nap Exit | x | x | Nach
dem Empfang dieses IOP leitet der MCH eine Sequenz Nap Exit ein
für die durch
die Felder SDA und BA spezifizierte RDRAM-Vorrichtung. Das SDA-Feld sollte
die Vorrichtungs-ID und nicht die serielle Vorrichtungs-ID enthalten. |
1
1 0 1 0 | RDRAM
Refresh | 1 | x | Nach
dem Empfang dieses IOP sendet der MCH ein Paket Refresh PCP an die spezifizierte
Bank aller RDRAM-Vorrichtungen.
Die Bankadresse wird durch das SDA-Feld spezifiziert. |
1
1 0 1 1 | RDRAM
Precharge | 1 | x | Nach
dem Empfang dieser IOP sendet der MC ein Paket Precharge PCP an
die spezifizierte Bank aller RDRAM-Vorrichtungen. Die Bankadresse ist durch
das SDA-Feld spezifiziert. |
-
Die
Einzelheiten der durch ein Ausführungsbeispiel
der Initialisierungssteuerschaltung 320 ausgeführten Operationen
als Reaktion auf dem Empfang des IOP RDRAM Core Initialization (10000b)
sind in der Abbildung aus 4 dargestellt.
In dem Block 400 wird ein Befehl zur Übermittlung des Verlassens
des Powerdown-Zustands auf dem Bus ausgegeben. Als nächstes wird
gemäß dem Block 405 die
durch die Blöcke 410 bis 470 dargestellte
Sequenz sechzehn Mal für
die Bankadressen Null bis einunddreißig wiederholt. Diese Zahlen
können
für ein
Speicherteilsystem geeignet sein, das einhundertachtundzwanzig Stromkalibrierungswerte
und bis zu zweiunddreißig
Bänke aufweist.
In anderen Ausführungsbeispielen
kann eine andere Anzahl von Wiederholungen eingesetzt werden, wenn
zum Beispiel eine größere oder
kleinere Anzahl von Stromkalibrierungswerten zur Verfügung steht.
In ähnlicher
Weise kann eine andere Anzahl von Bänken in verschiedenen Systemen
zur Verfügung
stehen.
-
In
dem Block 410 wird keine Operation ausgeführt, um
sicherzustellen, dass das Verlassen des Powerdown-Zustands abgeschlossen
ist, und dass die Refresh-Operation (REFA-Befehl) in dem Block 415 richtig ausgeführt wird.
In dem Block 420 wird ein weiterer Befehl für keine
Operation ausgeführt,
gefolgt von zwei weiteren Refresh-Operationen (REFA) in den Blöcken 425 und 430.
Drei weitere Befehle "keine
Operation" werden
in dem Block 435 ausgeführt,
wodurch ausreichend Zeit verstreichen kann, bevor ein Befehl Refresh Precharge
(REFP) eintritt. Nach einem weiteren Befehl für keine Operation in dem Block 445 wird
in dem Block 450 ein weiterer Befehl Refresh Precharge
(REFP) ausgeführt.
-
Ein
Kalibrierungsbefehl (CAL) wird als nächstes in dem Block 455 ausgeführt. Dieser
Befehl kalibriert (steuert) IOL-Strom für die gerade angezeigte Vorrichtung.
Wie dies in den Blöcken 460 und 465 dargestellt ist,
kann diese Operation zweimal wiederholt werden. Danach wird gemäß der Darstellung
in dem Block 470 ein Befehl Abtasten (SAMR) ausgeführt. Der
Abtastbefehl aktualisiert den IOL-Strom für die gerade angezeigte Vorrichtung.
Bis alle sechzehn Wiederholungen für die zweiunddreißig Bänke ausgeführt worden
sind, wird dieser Prozess wiederholt.
-
Initialisierungssequenz
-
Durch
die vorstehend ausgeführten
Initialisierungsoperationen kann ein System initialisiert werden. Zum
Beispiel kann das in der Abbildung aus 5 dargestellte
System initialisiert werden, das einen Rambus Direct RDRAM Kanal
implementiert. Bei dem System manipuliert eine Speichersteuereinheit 500 (auch
als Speicher-Steuer-Hub oder MCH bezeichnet) die Initialisierungsaktivitäten. Die
Speichersteuereinheit leitet auch spezifische Zeilen-/Spaltenpakete
(ROW/COLUMN) auf den Kanal ein. Eine serielle Schnittstelle 540 kann
eingesetzt werden, um mit Vorrichtungen auf dem Kanal zu kommunizieren.
Zum Beispiel können
die Pins Takt (SCK), serieller Frame (CMD) und bidirektionale serielle
E/A (SIO0 und SIO1) eingesetzt werden, um aus RDRAM-Konfigurationsregistern
zu lesen und diese zu beschreiben sowie um andere IOPs auszuführen.
-
Die
Speichersteuereinheit weist eine Rambus ASIC Cell (RAC) 530,
eine Steuerschaltung 520 und eine Vielzahl von Registern
auf. Die Register weisen Initialisierungsregister 515 auf,
die zum Initialisieren des Systemspeichers verwendet werden, und
Powerdown-Wiederherstellungsregister 510.
Die Powerdown-Wiederherstellungsregister weisen Taktungs- und andere
entscheidende Informationen für
den Betrieb des Speicherkanals auf. Anders ausgedrückt handelt
es sich bei den Powerdown-Wiederherstellungsregistern einfach um
Register, die nach dem Ausschalten bzw. einem Ruhezustand der Speichersteuereinheit 500 wiederhergestellt
werden müssen,
um den Zugriff auf den Speicherkanal fortzusetzen bzw. wieder aufzunehmen.
Bei den Registern kann es sich um PCI-Konfigurationsregister handeln.
-
Der
Speicherkanal weist die RIMM-Module 560, 565 und 570 auf,
die über
einen Steuer- und Datenbus 532 und einen seriellen Bus 542 mit
dem MCH 500 verbunden sind. Der Steuer- und Datenbus 532 kann durch einen
ohmschen Abschluss 533 abgeschlossen werden, und ein Direct
Rambus Taktgenerator bzw. Clock Generator (DRCG) 580 kann
an dem entfernten Ende des Kanals von dem MCH 500 bereitgestellt
werden, um Taktsignale über
Signalleitungen 582 bereitzustellen.
-
Das
System weist ferner einen Eingabe/Ausgabe-Steuer-Hub (ICH als englische
Abkürzung
von Input/Output Control Hub) 505 auf, der den MCH mit
einem sekundären
Bus 506 koppelt und eine zweite serielle Schnittstellenschaltung 544 für eine Schnittsellenverbindung
mit einem zweiten seriellen Bus 546 aufweisen kann. Ein
serieller Präsenzdetektionsspeicher
(SPD als englische Abkürzung
von Serial Presence Detect) 572 (ein nichtflüchtiger
Speicher, wie etwa ein elektrisch löschbarer und programmierbarer
Nur-Lesespeicher) für jedes
Modul kann über
die serielle Schnittstelle 544 gelesen werden gemäß dem Serial-Presence-Detect-Protokoll. Der SPD-Speicher 572 kann
Informationen bereitstellen in Bezug auf jedes entsprechende Speichermodul,
wie zum Beispiel Taktungsinformationen, die Vorrichtungsorganisation
und die Vorrichtungstechnologie. Weitere Einzelheiten des SPD-Protokolls sind beschrieben
in "Serial Presence
Detect Application Brief" und
in den Datenblättern
Direct RambusTM RIMMTM Module
und 64/72 Mbit Direct RDRAMTM, die von Rambus erhältlich sind.
-
In
einem Ausführungsbeispiel
handelt es sich bei dem seriellen Bus 546 um einen I2C-Bus,
wie etwa einen Systemmanagementbus (SMBus). Das vorliegende Ausführungsbeispiel
weist Takt-(SMBCLK) und Datensignale (SMBDATA) auf, die dem definierten
Industrieprotokoll System Management Bus (SMBus) folgen, das in
der System Management Bus Spezifikation, Revision 1.0, erhältlich von
dem Smart Battery Implementer's
Forum im Internet unter http://www.sbs-forum.org erhältlich ist.
-
Der
ICH weist General Purpose Outputs (GPOs) auf, die zu Steuerung verschiedener
Systemfunktionen verwendet werden, wie zum Beispiel das Festlegen
bzw. Einstellen der Frequenz von DRCG 580. Ein nichtflüchtiger
Speicher 585, der das BIOS enthält, kann mit dem sekundären Bus 506 sowie
einem Direktzugriffsspeicher 590 mit Batteriesicherung
gekoppelt werden. Der Speicher 590 mit Batteriesicherung
kann Powerdown-Wiederherstellungs-Konfigurationswerte 592 für die MCH
Powerdown-Register 510 speichern, so dass der MCH den Zugriff
auf den RDRAM-Kanal wieder aufnehmen kann, ohne die nachstehend
aufgeführte vollständige Initialisierungssequenz
auszuführen.
-
Der
Initialisierungsprozess kann kurz wie folgt zusammengefasst werden.
Nach dem Zurücksetzen bzw.
Neustart werden die Konfigurationsinformationen aus Serial-Presence-Detection-Daten (SPD-Daten)
in RIMMs in einem Kanal gelesen. Zum Beispiel speichert eine Speichervorrichtung,
der SPD-Speicher 572, Konfigurationsinformationen für die RDRAMs 573, 574, 576 und 577 in
dem RIMM 570. Die Speichersteuereinheits-Konfigurationsregister
werden mit den entsprechenden Werten aus den SPD-Daten programmiert,
und danach werden die RDRAM-Vorrichtungs-IDs so programmiert, dass
jede RDRAM-Vorrichtung eindeutig identifiziert und auf sie durch
die Speichersteuereinheit zugegriffen werden kann. Nachdem eine
Vorrichtung initialisiert worden ist, kann sie eingesetzt werden.
-
Jede
RDRAM-Vorrichtung weist zwei Identifikationsnummern auf, die zur
eindeutigen Auswahl einer Vorrichtung auf dem Kanal verwendet werden,
die serielle Vorrichtungs-ID (Serial Device ID) und die Gruppenvorrichtungs-ID
(Group Device ID). Diese beiden IDs werden für verschiedene Operationen
auf dem RDRAM-Kanal eingesetzt. Die serielle Vorrichtungs-ID wird
für ausgesuchte
Vorrichtungen eingesetzt, wenn die Speichersteuereinheit Initialisierungsoperationen
auf den Signalen SCK, SIO und CMD des RDRAM-Kanals sendet. Die Gruppenvorrichtungs-ID
wird von der Speichersteuereinheit eingesetzt, um eine Vorrichtung auszuwählen, wenn
ROW-Pakete (Zeilenpakete) und COLUMN-Pakete (Spaltenpakete) auf
RQ[7:0]-Signalen des RDRAM-Kanals gesendet werden. Sowohl die serielle
Vorrichtungs-ID als auch die Gruppenvorrichtungs-ID werden nach
dem Reset bzw. Zurücksetzen
programmiert und bevor Vorrichtungen einzeln entsprechend adressiert
werden können
durch Initialisierungsoperationen (IOPs) und ROW/COLUMN-Pakete.
-
Bei
einer näheren
Betrachtung des Initialisierungsprozesses des Rambus-Kanals kann
einer speziellen Sequenz gefolgt werden, um einen ordnungsgemäßen Betrieb
der RDRAM-Vorrichtungen
auf dem Kanal zu erreichen. Die Abbildung aus
6 veranschaulicht
ein Flussdiagramm für
die ordnungsgemäße Kanalinitialisierung
in einem Ausführungsbeispiel,
und die Tabelle 4 bezeichnet einige der in diesem Initialisierungsablauf
verwendeten Variablen. Tabelle 4: Bei der Initialisierung verwendete
Variabeln
Bezeichnung | Breite
(Bits) | Beschreibung |
RIMMMax | 2 | Maximal
vorhandene Anzahl von RIMMs. |
0 | Keine
RIMMs vorhanden |
1–3 | 1
bis 3 RIMMs vorhandens |
RIMMCount | 2 | Verwendeter
Zähler
während
der Initialisierung zur Auswahl eines RIMM. |
RIMMDeviceCount | 5 | Anzahl der
RDRAM-Vorrichtungen in einem bestimmten RIMM. |
MemberMax | 5 | Maximale
Anzahl, der in einem Kanal vorhandenen Vorrichtungen |
0–31 | 1
bis 32 RDRAM-Vorrichtungen auf dem Kanal vorhanden |
MemberCount | 5 | Verwendeter
Zähler
während
der Gruppenvorrichtungs-ID-Aufzählung,
um die Anzahl der Vorrichtungen anzuzeigen, denen Gruppen-IDs zugewiesen
worden sind. |
SerialIDCount | 5 | Verwendeter
serieller Vorrichtungs-ID-Index auf einem Kanal. |
0–31 | Bildet
ab auf serielle Vorrichtungs-ID 0–31 |
GroupDeviceIDCount | 5 | Verwendeter
Gruppenvorrichtungs-ID-Index während
der Gruppenvorrichtungs-ID-Aufzählung,
um der nächsten RDRAM-Vorrichtung
eine Gruppenvorrichtungs-ID zuzuweisen. |
0–31 | Bildet
ab auf Gruppenvorrichtungs-ID 0–31 |
RIMMDeviceConfigNo | 8 | Byte, das
die Definition der RDRAM-Technologie anzeigt. Bit-Definition passt
mit GAR-Register zusammen. |
DRAMConfigIndex | 3 | Index in
Tabelle von DRAM-Technologien, die durch den MCH unterstützt werden.
Eingesetzt während
der Gruppenvorrichtungs-ID-Aufzählung;
Zuweisung von Gruppen-IDs an RDRAMs in einer Technologe in abnehmender
Reihenfolge. |
MchTrdly | 3 | Temporärer Speicher
von maximalem Wert Mch Trdls während
dem Vorgang der Kanal-Levelisierung.
Die Bit-Definition stimmt mit dem tRDLY-Feld des MCH in dem Register
MCH RDT überein. |
DeviceTestAddress | 32 | Verwendete
32-Bit-CPU-Adresse zum Testen einer RDRAM-Vorrichtung während der
Kanallevelisierung. |
Tempindex | 8 | Während Algorithmus
eingesetzter temporärer
Index. |
-
In
dem Block 602 erfolgt ein Zurücksetzen des Systems. Der MCH
alle seine Zustandsmaschinen zurück
und bereitet auf die Initialisierung vor. In dem Block 604 wird
die Speichermodulkonfiguration des Systems verifiziert. Das BIOS
liest SPD-Daten, um die Speicherkonfiguration zu bestimmen. Wenn
nur RIMMs vorhanden sind, kann die RDRAM-Initialisierungssequenz mit dem Block 608 fortfahren.
Wenn gemischte bzw. verschiedenartige Speichermodule vorhanden sind,
wird ein Fehler an den Benutzer übermittelt
und das System wird angehalten, wie dies in 606 angezeigt
wird.
-
Der
Taktgenerator startet in dem Block 608. Diese Operation
kann durch Software erreicht werden, die die SPD-Daten jedes auf
dem Motherboard vorhandenen RIMM-Moduls abfragt und eine Kanalfrequenz
bestimmt, bei der die RIMMs arbeiten können. Der DRCG 580 kann
durch einen General Purpose Output (d. h. GPOx gemäß der Abbildung
aus 5) über
den ICH 505 auf die entsprechende Frequenz gesetzt werden. In
einem Ausführungsbeispiel
wartet das BIOS mindestens 8 ms zwischen diesem Schritt und der
MCH RAC-Initialisierung.
-
Wie
dies in dem Block 610 angezeigt wird, wird die MCH RAC
als nächstes
initialisiert. Der Kanaltakt von dem DRCG sollte vor der MCH RAC-Initialisierung
stabil sein. Die MCH RAC-Initialisierung wird erreicht durch die
Ausführung
des MCH RAC Initialisierungs-IOP. Der RAC Initialisierungs-IOP führt die
grundlegende Initialisierung aus, um die interne RAC der Speichersteuereinheit
für den
normalen Betrieb vorzubereiten.
-
In
einem Ausführungsbeispiel
stellt das BIOS ein Timeout von 5 ms für das Löschen des IIO-Bits nach dem MCH
RAC Initialisierungs-IOP bereit. Wenn das IIO-Bit nach 5 ms nicht
durch den MCH gelöscht
worden ist, sollte das BIOS den Fehler melden, und der Kanal ist
nicht nutzbar. Eine zusätzliche
Verzögerung
von 5 ms kann hinzugefügt
werden, nachdem der MCH das IIO-Bit gelöscht hat aufgrund der vollständigen Ausführung des
MCH RAC Initialisierungs-IOP. Dies sieht ausreichend Zeit vor für die Stabilisierung
und Verriegelung der MCH-Takte. In bestimmten Ausführungsbeispielen
kann es ferner erforderlich sein, einen Bus in der RAC zu löschen, bevor
weitere Operationen beginnen. Dies kann erreicht werden durch Ausführung des
MCH RAC Control Register Load IOP (DRD = 00000h). Es kann ferner
möglich
sein, in bestimmten Ausführungsbeispielen
die RAC-Initialisierung zu einem späteren Zeitpunkt in der Initialisierungssequenz
auszuführen.
-
Wie
dies in dem Block 612 dargestellt ist, können als
nächstes
eine Reihe von MCH Konfigurationsregistern initialisiert werden.
In einem Ausführungsbeispiel
wird das Feld Paging Policy Register RMC Idle Timer (PGPOL RIT)
(MCH 052h [2:0] auf 001b gesetzt, um sicherzustellen, dass keine
Seiten während
der Kanallevelisierung geschlossen werden (wie dies nachstehend
im Text beschrieben wird). Das Feld PGPOL RIT legt die Anzahl der
Host-Bus-Takte fest, über
welche die Speichersteuereinheit in dem Ruhezustand bleibt, bis
alle offenen Seiten geschlossen werden, und ein Wert von Null zeigt
an, dass eine unendliche Latenz gegeben ist, bevor die Speichersteuereinheit
damit beginnt, Seiten zu schließen.
-
Des
Weiteren können
in bestimmten Ausführungsbeispielen
Pools eingesetzt werden, um RDRAMs auf der Basis der definierten
RDRAM-Zustände
zu gruppieren. Um die Betriebsleistung zu reduzieren, können die
RDRAM-Vorrichtungen in zwei operative Pools gruppiert werden, die
mit "Pool A" und "Pool B" bezeichnet werden.
In einem Ausführungsbeispiel
können
sich bis zu acht Vorrichtungen gleichzeitig in Pool A befinden. In
dem vorliegenden Ausführungsbeispiel
können
sich bis zu vier von acht Vorrichtungen in Pool A gleichzeitig in
den Zuständen
aktiv Lesen/Schreiben oder Aktiv (Active Read/Write oder Active)
befinden, und die Vorrichtungen in dem Pool A befinden sich in einem
der Zustände
Active Read/Write, Active oder Standby.
-
Die
maximale Anzahl von Vorrichtungen in Pool A ist programmierbar und
durch ein Feld PAC in dem RDRAM Power Management Register (RPMR)
Register (MCH 053h) spezifiziert. Alle Vorrichtungen, die sich nicht
in Pool A befinden, sind Elemente von Pool B. Alle Vorrichtungen
in Pool B befinden sich entweder in dem Zustand Standby oder Nap
(Schlafmodus). Der Zustand der Vorrichtungen in Pool B wird durch
ein PBS-Feld eines DRAM-Steuerungs-(DRAMC)Registers (MCH 051h) spezifiziert.
In einem Ausführungsbeispiel
wird das RPMR-Register auf 00h gesetzt, wobei ein Pool A mit nur
einer Vorrichtung ausgewählt
wird, und wobei der Betrieb von Pool B auf einen Standby-Betrieb (MCH 051h
[6] = 0) gesetzt wird.
-
Als
nächstes
kann gemäß Block 614 eine
zusätzliche
Kanalinitialisierung vorgenommen werden. Diese kann die Ausführung eines
SIO-Zurücksetzens
(Zurücksetzen
der seriellen Schnittstelle) unter Verwendung des SIO-Reset-IOP
umfassen sowie die Einräumung
einer ausreichenden vollständigen
Ausführung
der SIO-Reset-Sequenz. Ferner können
an dieser Stelle andere Register gesetzt bzw. festgelegt werden,
die für einen
ordnungsgemäßen Betrieb
initialisiert werden müssen.
In bestimmten Ausführungsbeispielen
kann es zum Beispiel erforderlich sein, dass ein Register Test77
mit einem Wert von Null beschrieben wird nach dem SIO-Reset gemäß der Spezifikation
auf Seite 37 des Datenblatts Direct RDRAM 64/72 mbit (Ausführung eines Broadcast
SIO Register Write IOP: TEST77, DRA = 4Dh, DRD = 0000h).
-
Zuweisung der seriellen Vorrichtungs-ID
-
Wie
dies in dem Block 620 dargestellt ist, können als
nächstes
serielle Vorrichtungsidentifikationswerte (IDs) zugewiesen werden.
Im Allgemeinen identifiziert die Software eindeutig jede Vorrichtung
auf dem Kanal, um Initialisierungsoperationen zu ermöglichen,
die an einzelne Vorrichtungen gerichtet sind. Die serielle Vorrichtungs-ID
für jeden
RDRAM wird in dem Register RDRAM INIT (Index 21h) in den Bits 4-0
gespeichert. Nach dem SIO-Reset lautet der Standardwert der seriellen
Vorrichtungs-ID 1Fh in allen RDRAMs auf dem Kanal. Ferner wird nach
dem Reset der Serial Repeater (serieller Repeater) (SRP Bit (RDRAM
021 [7]) auf 1 gesetzt, so dass jeder RDRAM freigegeben wird, um
die SIO-Daten auszubreiten, die an SIO0 empfangen worden sind, und
zwar an den SIO1 Pin des RDRAM, wobei das SIO-Paket an die nächste RDRAM-Vorrichtung
weitergeleitet wird. Da alle Vorrichtungen nach dem Reset die gleiche
serielle Vorrichtungs-ID aufweisen, muss nicht unbedingt auf eine
einzelne Vorrichtung zugegriffen werden, bevor eindeutige serielle
IDs zugewiesen werden.
-
Weitere
Einzelheiten der Aufzählung
der seriellen Vorrichtungen, die durch ein Ausführungsbeispiel ausgeführt werden,
sind in der Abbildung aus 7 dargestellt.
In dem Block wird der variable SerialIDCount auf Null initialisiert.
Als nächstes
werden gemäß dem Block 705 die
SIO-Repeater aller Vorrichtungen auf dem Kanal deaktiviert (Broadcast
SIO Register Write IOP. INIT, DRA = 21h, DRD = 001Fh). Diese Operation
bewirkt, dass alle seriellen Vorrichtungs-IDs auf 01fh gesetzt werden.
Das SIO Repeater-Bit wird auf Null gesetzt, so dass nur auf die
erste Vorrichtung auf dem SIO-Kanal zugegriffen werden kann.
-
Beginnend
mit dem Block 710 läuft
der Ablauf in einer Schleife durch alle Vorrichtungen auf dem Kanal und
weist jeder eine eindeutige ID zu. Die serielle ID der aktuellen
Vorrichtung wird auf SerialIDCount gesetzt, und das SIO Repeater-Bit
wird freigegeben (SIO Register Write IOP: INIT, SDCA = 1Fh, DRA
= 21h, DRD = 0080h + SerialIDCount). Als nächstes wird gemäß der Darstellung
in Block 715 geprüft,
ob die Vorrichtung tatsächlich
in dem System vorhanden und funktionsfähig ist. Das Register RDRAM
INIT wird gelesen, um zu bestimmen, ob der gleiche Wert, der gerade
geschrieben worden ist, ordnungsgemäß ausgelesen wird (SIO Register
Read IOP. INIT, SDCA = SerialIDCount, DRA = 21h).
-
Wenn
die Daten übereinstimmen
(gemäß der Prüfung in
Block 720), so wird der SerialIDCount heraufgesetzt (Block 725),
und SerialIDCount wird geprüft,
um festzustellen, ob einer maximalen Anzahl von Vorrichtungen (z.
B. zweiunddreißig)
IDs zugewiesen worden sind (Block 730). Wenn der SerialIDCount
weiterhin eine gültige
serielle ID anzeigt, wird in dem Block 705 die nächste Vorrichtung
identifiziert.
-
Wenn
der SerialIDCount den maximal zulässigen Wert übersteigt,
oder wenn die Daten in dem Block 720 nicht übereingestimmt
haben, so ist der letzten Vorrichtung eine ID zugewiesen worden,
und eine variable Verfolgung (Tracking) der Anzahl der Vorrichtungen
insgesamt auf den SerialIDCount gesetzt werden, wie dies in dem
Block 735 dargestellt ist.
-
Um
schließlich
alle etwaigen weiteren Vorrichtungen über die letzte zulässige Vorrichtung
hinaus zu deaktivieren, wird der SIO Repeater des RDRAM mit der
höchsten
seriellen ID deaktiviert, wie dies in Block 740 dargestellt
ist. Folglich empfangen etwaige zusätzliche Vorrichtungen (d. h.
nicht ordnungsgemäß arbeitende
Vorrichtungen oder Vorrichtungen jenseits des Maximums, wie z. B.
von zweiunddreißig)
keine Befehle und sollten somit nicht ansprechen. Als zusätzliche
Prüfung
können
die SPD-Informationen an den RIMMs untersucht werden, um zu bestimmen,
ob der letzte Vorrichtungszählwert
richtig ist.
-
Zuweisung einer Gruppenvorrichtungs-ID
-
In
Bezug auf die Abbildung aus 6 werden
nach der Zuweisung der eindeutigen seriellen IDs und der Deaktivierung
des SIO-Ausgangs der letzten Vorrichtung Gruppen-IDs auf der Basis
der Größe der Speichervorrichtung
zugewiesen, wie dies in Block 630 dargestellt ist. In einem
Ausführungsbeispiel
unterstützt
der MCH bis zu zweiunddreißig
RDRAM-Vorrichtungen
und acht Gruppen. Jede Gruppe weist bis zu vier Vorrichtungen und
ein Gruppenbegrenzungszugriffsregister (GBA als englische Abkürzung von
Group Boundary Access Register) auf, um die Gruppen-ID und die oberen
und unteren Adressen für
jede Gruppe zu definieren. Somit kann jedes GBA-Register mit einer
Gruppen-ID und einem oberen Adressbegrenzungswert von neun Bit programmiert
werden. Nicht belegte Gruppen können
einen Wert aufweisen, der der vorherigen Gruppe und einer Gruppengröße von Null
entspricht.
-
Darüber hinaus
veranschaulicht das Flussdiagramm aus den Abbildungen der 8A–8C ein Ausführungsbeispiel
des Verfahrens zur Aufzählung
von Gruppenvorrichtungs-IDs gemäß der Darstellung
in Block 630. Wie dies in dem Block 800 aus 8A dargestellt
ist, werden mehrere Variablen initialisiert. Die Variablen SerialIDCount,
GroupDeviceIDCount, RIMMCount, RIMMDeviceCount und RIMMDeviceConfigNo werden
auf Null initialisiert. Eine Variable DRAMConfigIndex wird auf einen
Wert initialisiert, der die größte von dem
MCH unterstützte
Kerntechnologie anzeigt.
-
Wie
dies in dem Block 805 dargestellt ist, werden Daten aus
dem SPD-Speicher eines Moduls (Modulnummer RIMMCount) ausgelesen,
welche die Kerntechnologie dieses Moduls identifizieren. Diese Informationen
können
die Anzahl der Zeilen je Vorrichtung, die Anzahl der Spalten je
Vorrichtung, die Anzahl der Bänke
je Vorrichtung und ob die Bänke
abhängig oder
unabhängig
sind, umfassen. Als nächstes
wird gemäß der Darstellung
in dem Block 810 RIMMDeviceConfigNo gesetzt, indem der
aus dem SPD ausgelesene Kerntechnologiewert in einen äquivalenten
Wert in einem Register Gruppenarchitektur (GAR) umgesetzt wird.
-
Als
nächstes
wird gemäß der Darstellung
in dem Block 815 die Variable RIMMDeviceCount auf die Anzahl
der Vorrichtungen gesetzt, die durch den SPD-Speicher für das RIMM
angezeigt wird. Danach können
die Vorrichtungs-IDs zugewiesen und die zugeordneten Registerwerte
gemäß der Darstellung
in dem Block 820 zugewiesen werden. Weitere Einzelheiten
des Verfahrens gemäß der Darstellung
in dem Block 820 sind für ein
Ausführungsbeispiel
in der Abbildung aus 8B abgebildet.
-
Im
Allgemeinen fügt
der Enumerationsprozess bzw. der Aufzählungsprozess die Anzahl der RDRAM-Vorrichtung
an einem RIMM der ersten seriellen ID hinzu und zählt nach
unten, bis das RIMM abgeschlossen ist. Gemäß der Darstellung in dem Block 822 wird
somit geprüft,
ob RIMMDeviceConfigNo gleich DRAMConfigIndex ist, um zu bestimmen,
ob die Gruppenvorrichtungs-IDs für
alle Vorrichtungen in einer bestimmten Kerntechnologie zugewiesen
worden sind. Wenn sie nicht übereinstimmen,
weisen alle Vorrichtungen für
diese Kerntechnologie Gruppen-IDs auf, so dass die Variable SerialIDCount
auf SerialIDCount plus RIMMDeviceCount gesetzt wird (wie dies in
Block 830 angezeigt wird), und das Verfahren kehrt gemäß der Darstellung
in dem Block 832 zu 8A zurück. Wenn
ferner RIMMDeviceCount gleich Null ist (gemäß der Prüfung in Block 824)
oder wenn MemberCount gleich Null ist (gemäß der Prüfung in Block 826,
so existieren keine Vorrichtungen mehr für die Vergabe von Gruppen-IDs
und das Verfahren kehrt zur Abbildung aus 8A zurück, wie
dies in Block 832 angezeigt wird.
-
Wenn
RIMMDeviceCount und MemberCount ungleich Null sind, wird ein Wert
GroupDeviceIDCount der Gruppenvorrichtungs-ID des RDRAM zugewiesen,
wobei die serielle ID dem aktuellen Wert von SerialIDCount entspricht,
wie dies in Block 828 dargestellt ist. Als nächstes wird
das aktuelle Gruppenbegrenzungsadressregister (GBA) aktualisiert,
so dass es das Hinzufügen
der neuen Vorrichtung zu dieser Gruppe reflektiert, wie dies in
Block 830 angezeigt wird. Dies kann erreicht werden, in
dem ein Wert dem vorher in dem GBA-Register gespeicherten Wert hinzugefügt wird,
der die Vorrichtungsgröße anzeigt.
-
Als
nächstes
wird der Wert GroupDeviceIDCount mit vier (der maximalen Anzahl
von Vorrichtungen je Gruppe in einem Ausführungsbeispiel) in Block 832 verglichen.
Wenn die Gruppe voll ist, wird das MCH Gruppenarchitekturregister
(GAR) für
diese Gruppe gemäß der Darstellung
in Block 834 aktualisiert. Das GAR wird so aktualisiert,
dass es die Gruppenkonfiguration ordnungsgemäß anzeigt (d. h. die Anzahl
der Bänke
und die DRAM-Technologie
(Größe)). In
dem Block 836 wird SerialDeviceIDCount heraufgesetzt, MemberCount
wird herabgesetzt, GroupDeviceIDCount wird heraufgesetzt und RIMMDeviceCount
wird herabgesetzt. Das Verfahren kehrt danach zu Block 824 zurück.
-
Wenn
in erneutem Bezug auf die Abbildung aus 8A entweder
RIMMDeviceCount oder MemberCount gleich Null ist, wird RIMMCount
heraufgesetzt, wie dies in Block 850 dargestellt ist. Wenn
RIMMCount kleiner ist als ein Höchstwert
von RIMMCount, gemäß der Prüfung in
Block 855, so kehrt das Verfahren zu Block 805 zurück. Wenn
der RIMMCount das letzte RIMM erreicht hat, wird das Verfahren in 8C gemäß der Darstellung
in Block 860 fortgesetzt.
-
Wenn
in Bezug auf die Abbildung aus 8C MemberCount
gleich Null ist (gemäß der Prüfung in Block 865),
endet der Vorgang der Vorrichtungs-ID-Aufzählung. Wenn MemberCount jedoch
ungleich Null ist, wird die nächste
MCH-Gruppe für
den Beginn der Aufzählung
der Vorrichtungen in der nächsten
DRAM-Technologie ausgewählt,
wie dies in Block 870 dargestellt ist. GroupDeviceIDCount
kann aktualisiert werden, indem drei hinzugefügt wird, und indem eine logische
UND-Operation des resultierenden Wertes und 0FFFCh ausgeführt wird.
-
Wenn
der Wert von GroupDeviceIDCount einer maximalen Anzahl zulässiger Vorrichtungen
in dem Kanal entspricht (z. B. zweiunddreißig gemäß der Prüfung in dem Block 872),
so endet das Verfahren der Gruppen-ID-Aufzählung. Wenn jedoch an weniger
Vorrichtungen Gruppen-ID-Nummern vergeben worden sind, wird der
DRAMConfigIndex auf die nächst
kleinere Kerntechnologie gesetzt, die durch den MCH unterstützt wird,
wie dies in Block 874 dargestellt ist. Wenn der DRAMConfigIndex
anzeigt, dass keine kleineren unterstützten Kerntechnologien vorhanden
sind (z. B. ist der DRAMConfigIndex gemäß der Prüfung in Block 876 gleich
Null), so endet das Verfahren der ID-Aufzählung. Wenn mehr Kerntechnologien
vorhanden sind, werden SerialIDCount und RIMMCount auf Null zurückgesetzt,
wie dies in Block 878 angezeigt wird, und danach kehrt das
Verfahren bzw. der Ablauf zu Block 805 in 8A zurück.
-
Der
unten aufgeführte
Pseudocode zeigt Operationen an, die eingesetzt werden können, um
in einem Ausführungsbeispiel
die durch Block 630 aus 6 angezeigte
Gruppen-ID-Aufzählung auszuführen.
-
630. Aufzählen der MCH Vorrichtungsgruppen.
-
- 630.1. Schleifenverlauf durch den RIMM SPD-Speicher
und Gruppieren der Vorrichtungen an den RIMMs. Die Vorrichtungen
der größten Technologie
müssen
in den niedrigsten Gruppen gruppiert werden, wobei die Technologiegröße mit zunehmenden
Gruppennummern abnehmen.
- 630.1.1. MemberCount auf = MemberMax setzen
- 630.1.2. SerialIDCount auf = 0 setzen. Das ist der Zähler für die serielle
Vorrichtungs-ID
- 630.1.3. GroupDeviceIDCount auf = 0 setzen. Das ist der Zähler für die Gruppenvorrichtungs-ID
- 630.1.4. RIMMCount auf = 0 setzen. Das ist der RIMM-Zähler
- 630.1.5. RIMMDeviceCount auf = 0 setzen. Das ist der Zähler für die #
der Vorrichtungen an einem RIMM.
- 630.1.6. DRAMConfigIndex = größte von dem MCH unterstützte Technologie
- 630.1.7. Kerntechnologie von RIMM #RIMMCount berechnen
- 630.1.7.1. RIMMDeviceConfigNo = aus RIMMs SPD ausgelesene Kerntechnologie
- 630.1.8. RIMMDeviceCount = # der RDRAM-Vorrichtungen in RIMM
#RIMMCount, ausgelesen aus dem SPD EEPROM des RIMM.
- 630.1.9. Zuweisen von Gruppenvorrichtungs-IDs und Programmieren
von MCH GAR und GBA Registern für
RIMM.
- 630.1.9.1. Wenn RIMMDeviceConfigNo ! = DRAMConfigIndex, Wechsel
zu 630.1.10
- 630.1.9.2. Wenn RIMMDeviceCount = 0, Wechsel zu 630.1.10
- 630.1.9.3. Wenn MemberCount = 0, Wechsel zu 630.1.10
- 630.1.9.4. SIO Register Write IOP. DEVID, SDCA = SerialIDCount,
DRA = 40h, DRD = GroupDeviceIDCount.
- 630.1.9.5. Programmieren MCH GBA[GroupDeviceIDCount SHR 2] =
MCH GBA[GroupDeviceIDCount SHR 2 – 1] + RIMM #RIMMCount Vorrichtungsgröße
- 630.1.9.6. Wenn GroupDeviceIDCount UND 011b = 0
- 630.1.9.6.1. Programmieren von MCH GAR[GroupDeviceIDCount SHR
2] = RIMMDeviceConfigNo
- 630.1.9.7. GroupDeviceIDCount heraufsetzen
- 630.1.9.8. SerialIDCount heraufsetzen
- 630.1.9.9. MemberCount herabsetzen
- 630.1.9.10. RIMMDeviceCount herabsetzen
- 630.1.9.11. Gehe zu Schritt 630.1.9.2
- 630.1.10. RIMMCount heraufsetzen
- 630.1.11. Wenn RIMMCount < RIMMMax,
gehe zu Schritt 630.1.7
- 630.1.12. Wenn MemberCount = 0 gehe zu Schritt 10
- 630.1.13. Nächste
Gruppe für
nächste
RDRAM-Technologie auswählen.
- 630.1.13.1. GroupDeviceIDCount = (GroupDeviceIDCount + 011b)
UND 011b
- 630.1.14. Wenn GroupDeviceIDCount = 32 gehe zu Schritt 10
- 630.1.15. DRAMConfigIndex = nächst kleinere DRAM-Technologie
- 630.1.16. Wenn DRAMConfigIndex = 0, gehe zu Schritt 10
- 630.1.17. SerialIDCount = 0
- 630.1.18. RIMMCount = 0
- 630.1.19. Gehe zu Schritt 630.1.7. Dies startet das Suchen nach
RIMMs für
die nächst
kleinere RDRAM-Technologie.
-
In
erneutem Bezug auf die Abbildung aus 6 können die
einzelnen RDRAM-Vorrichtungen
nach der Zuweisung der Gruppen-IDs aus dem Powerdown-Modus entfernt
und in den schnellen Taktmodus für
einen normalen Betrieb umgeschaltet werden, wie dies in dem Schritt 640 angezeigt
wird. Die einzelnen RDRAM Taktregister in dem MCH und den RDRAMs
können
programmiert werden. Die Steuerregister REFB und REFR RDRAM können ebenfalls
initialisiert werden (IOP Broadcast SIO Register Write. REFB, DRA
= 41h, DRD = 0000h; IOP Broadcast SIO Register Write. REFR, DRA
= 42h, DRD = 0000h).
-
Die
RDRAM-Vorrichtungen können
zurückgesetzt
werden durch Ausführung
eines Broadcast Set Reset IOP, gefolgt von einer entsprechenden
Verzögerung
(z. B. 32 μs),
gefolgt von der Ausführung
eines Clear Reset IOP, ferner gefolgt von einer entsprechenden Verzögerung (z.
B. 4 μs),
um die vollständige
Ausführung der
Reset-Operation zu ermöglichen.
Die RDRAMs werden aus dem Powerdown-Zustand entfernt, indem ein RDRAM
Power Down Exit IOP ausgeführt
wird, und wobei in den schnellen Taktmodus eingetreten wird, in dem
ein Broadcast RDRAM Set Fast Clock Mode Initialization IOP ausgeführt wird.
-
Danach
können
die RDRAM-Kerne gemäß der Darstellung
in dem Block 642 initialisiert werden. Weitere Einzelheiten
eines Ausführungsbeispiels
der RDRAM-Kerninitialisierung sind in der Abbildung aus 9 dargestellt.
Wie dies in Block 900 dargestellt ist, werden die RDRAM-Vorrichtungen
für eine
Stromkalibrierung vorbereitet, indem ein intermediärer Wert
in die entsprechenden RDRAM-Register geschrieben wird (IOP Broadcast
SIO Register Write. CCA, DRA = 43h, DRD = 0040h; IOP Broadcast SIO
Register Write. CCB, DRA = 44h, DRD = 0040h). Vierzig hexadezimal
kann ein einem Ausführungsbeispiel
ein geeigneter. intermediärer Wert
sein, der einhundertsiebenundzwanzig mögliche Stromkalibrierungswerte
aufweist. Der Start bei diesem intermediären Wert begrenzt die Anzahl
der erforderlichen Kalibrierungszyklen insgesamt, da der Kalibrierungswert
nur um ungefähr
die Hälfte
des ganzen Bereichs der Kalibrierungswerte versetzt sein kann.
-
Als
nächstes
werden die Precharge- bzw. Vorlade-Operationen an jeder Bank jeder
RDRAM-Vorrichtung
ausgeführt.
Für die
Ausführung
der Precharge-Operationen zählt
der MCh durch die Bänke
um zwei nach oben, wobei zuerst ungerade Bänke vorgeladen werden und danach
die geraden Bänke.
Ein Bankindex wird in dem Block 905 auf Null gesetzt. Danach
wird eine Broadcast Precharge IOP gemäß der Darstellung in dem Block 910 ausgeführt. Der
Bankindexwert wird um zwei heraufgesetzt, wie dies in Block 915 dargestellt
ist, und Broadcast Precharge wird für ungerade Bänke wiederholt,
bis festgestellt wird, dass der Bankindex gleich der maximalen Anzahl
von Bänken
(z. B. zweiunddreißig)
in Block 920 ist.
-
Wenn
die maximale Anzahl von Bänken
erreicht ist, wird der Bankindex auf Eins gesetzt (gemäß der Darstellung
in Block 930), und alle ungeraden Bänke werden vorgeladen. Wenn der
Bankindex die maximale Anzahl von Bänken überschreitet, wird der RDRAM
Core Initialization IOP sechsmal ausgeführt, wie dies in Block 940 dargestellt
ist.
-
Kanallevelisierung
-
In
erneutem Bezug auf die Abbildung aus 6 kann der
Kanal nach der Initialisierung der RDRAM-Kerne in Block 642 gemäß der Darstellung
in Block 644 levelisiert werden. Dieses Verfahren umfasst das
Ausgleichen der Summe der RDRAM-Leseantwortzeit und einer Ausbreitungsverzögerung von
dem RDRAM zu dem MCH für
alle RDRAMs. Anders ausgedrückt,
stellen alle RDRAMs nach erfolgter Levelisierung des Kanals Daten
an der Speichersteuereinheit in der gleichen Anzahl von Buszyklen
bereit.
-
Der
folgende Pseudocode zeigt eine Folge von Schritten an, die in einem
Ausführungsbeispiel
ausgeführt
werden können,
um das in dem Block 644 angezeigte Levelisierungsverfahren
zu implementieren.
-
644. Levelisieren des Rambus-Kanals
-
- 644.1. Phase 1: Bestimmen des Werts des Felds
MCH tRDLY
- 644.1.1. SerialIDCount = MemberMax
- 644.1.2. MchTrdly = 0
- 644.1.3. Programmieren MCH RDT : TRDLY Feld = MchTrdly.
- 644.1.4. Berechnen der 32-Bit-Adresse zum Prüfen der RDRAM-Vorrichtung für die Levelisierung.
- 644.1.4.1. SIO Register Read IOP. DEVID, SDCA = SerialIDCount,
DRA = 40h
- 644.1.4.2. DRD (MCH 090h[15:0]) weist jetzt die RDRAM-Vorrichtungs-ID auf
- 644.1.4.3. DeviceTestAddress = MCH GBA[(DRD SHR 2) – 1]SHL
23 + ((DRD UND 011b)·Vorrichtungsgröße in Byte
(von GAR[DRD SHR 2])
- 644.1.5. QWORD-Schreiboperation an Adresse DeviceTestAddress
mit TestPattern ausführen.
- 644.1.6. QWORD-Leseoperation an Adresse DeviceTestAddress ausführen
- 644.1.7. Wenn gelesene Daten ! = Testpattern
- 644.1.7.1. Feld MCH RDT: TRDLY heraufsetzen
- 644.1.7.2. Wenn Feld MCH RDT: TRDLY <= 4 gehe zu Schritt 644.1.5.
- 644.1.8. Sonst (wenn gelesene Daten = Testpattern)
- 644.1.8.1. MchTrdly = gelesene Daten aus Feld MCH RDT: TRDLY
- 644.1.8.2. Wenn MchTrdly = 4 gehe zu Schritt 644.2
- 644.1.9. SerialIDCount herabsetzen
- 644.1.10. Wenn SerialIDCount >=
0 gehe zu Schritt 644.1.3
- 644.2. Phase 2: Bestimmen der RDRAM-Levelisierungs-Taktungswerte
- 644.2.1. SerialIDCount = MemberMax
- 644.2.2. Die 32-Bit-Adresse zum Prüfen der RDRAM-Vorrichtung für Levelisierung
berechnen.
- 644.2.2.1. SIO Register Read IOP. DEVID, SDCA = SerialIDCount,
DRA = 40h
- 644.2.2.2. DRD (MCH 090h [15:0]) enthält jetzt die Vorrichtungs-ID des RDRAM
- 644.2.2.3. DeviceTestAddress = MCH GBA[(DRD SHR 2) – 1]SHL
23 + ((DRD UND 011b)·Vorrichtungsgröße in Byte
(von GAR [DRD SHR 2])
- 644.2.3. QWORD-Schreiboperation an Adresse DeviceTestAddress
mit Testpattern ausführen.
- 644.2.4. QWORD-Leseoperation an Adresse DeviceTestAddress ausführen
- 644.2.5. Wenn gelesene Daten = Testpattern gehe zu Schritt 644.2.8
- 644.2.6. Wenn Feld TCDLY von RDRAMs < Max TCDLY (von SPD)
- 644.2.6.1. die TCDLY-Register des RDRAM (TDAC & TRDLY) gemäß der TCDLY-Unterstützungstabelle heraufsetzen.
- 644.2.6.2. Gehe zu Schritt 644.2.3
- 644.2.7. RDRAM-Vorrichtung für
Deaktivierung markieren.
- 644.2.8. SerialIDCount herabsetzen
- 644.2.9. Wenn SerialIDCount > =
0 gehe zu Schritt 644.2.2
-
Nach
Abschluss der Levelisierung speichert ein Ausführungsbeispiel eine Mehrzahl
der Powerdown-Wiederherstellungs-Speicherinitialisierungswerte in
dem Speicher 590 mit Batteriesicherung aus 5, wie
dies in Block 646 dargestellt ist. Hiermit wird festgestellt,
dass diese Operation in jeder anderen Phase ausgeführt werden
kann, nachdem die entsprechenden Werte durch die Initialisierungsroutine
bestimmt worden sind. Die Werte werden danach gespeichert, um die
bis zu diesem Punkt durch den Initialisierungsprozess bestimmten
Initialisierungsinformationen zu erhalten.
-
Wenn
das System in einen niedrigen Leistungszustand (z. B. Suspend-to-RAM)
eintritt, kann die Leistung an den MCH entfernt werden. Wenn die
Initialisierungsdaten somit nicht erhalten bzw. gespeichert werden,
so kann es sein, dass das gesamte Initialisierungsverfahren wiederholt
werden muss. Das Speichern von wichtigen bzw. Initialisierungs-Schlüsselinformationen
in einem nichtflüchtigen
Speicher kann das Aufwecken (Wake-Up) aus einem derartigen niedrigen
Leistungszustand in vorteilhafter Weise beschleunigen. Die Schwierigkeit
des Speicherns derartiger Informationen erhöht sich durch die Tatsache,
dass das Speicherteilsystem nur dann funktionsfähig ist, wenn diese Werte wiederhergestellt
werden.
-
Ein
nichtflüchtiger
Speicher, der beschrieben werden kann, kann zum Speichern entsprechender
Initialisierungsinformationen verwendet werden, wobei in vielen
Computersystemen jedoch ein Speicher mit Batteriesicherung vorhanden
ist, der somit eine praktische Wahl darstellen kann. In einem Ausführungsbeispiel werden
die nachstehend aufgeführten
Register in dem Speicher 590 gespeichert.
- • MCH
Gruppenarchitekturregister (Group Architecture Register – GAR) (040-047h):
Diese Register zeigen die Vorrichtungskonfiguration für jede Gruppe
an, wie etwa die Anzahl der Bänke
und die DRAM-Technologie (Größe).
- • MCH
RDRAM-Taktregister (RDRAM Timing Register – RDT) (050h): Das Register
definiert die Taktungsparameter für alle Vorrichtungen in dem
Kanal.
- • MCH
DRAM Steuerregister (DRAM Control – DRAMC) (051h): Das Register
weist das Bit Pool B Operation Select (PBS), ein Memory Transfer
Hub Presence Bit (MTHP) und ein Bit Aperture Access Global Enable
auf, das den Zugriff auf eine Apertur von einem beliebigen Port
verhindert, bevor der Aperturbereich und und die Umsetzungstabelle
erzeugt werden.
- • MCH
Page Policy (PGPOL) Register (052h): Das Register spezifiert die
Attribute der Paging Policy, einschließlich der DRR (englische Abkürzung von
DRAM Refresh Rate) und eines RMC Idle Timers (RIT). Das Feld DRR
passt die DRAM Refresh Rate an, und das Feld RIT bestimmt die Anzahl
der Host-Buszyklen, während
denen die Speichersteuereinheit in dem Ruhezustand verbleibt, bevor
alle offenen Seiten geschlossen werden.
- • MCH
RPMR (053h): Das Register weist ein Feld Device Napdown Timer (DNT),
ein Feld Active Devices in Pool A (ADPA), ein Feld Device Napdown
Enable (DNE) und ein Feld Pool A Capacity (PAC) auf. Das DNT-Feld
spezifiziert die Anzahl der Host-Takte,
in denen sich die Speichersteuereinheit im Ruhezustand befindet,
bevor die zuletzt verwendete Vorrichtung in Pool A in Pool B verschoben
wird. Das Feld ADPA definiert die maximale Anzahl von RDRAM-Vorrichtungen
in Pool A, die sich zu einem bestimmten Zeitpunkt in dem Zustand
Active Read/Write oder Active befinden können. Die Vorrichtungen in
Pool A, die sich nicht in dem Zustand Active Read/Write oder Active
befinden, befinden sich in dem Standby-Zustand. Das DNE-Bit (wenn es auf
1 gesetzt ist), ermöglicht
es, dass der Kanalinaktivitätszähler eine
ununterbrochene Zeit der Inaktivität zählt. Wenn der Zählerwert
einen durch DNT spezifizierten Schwellenwert überschreitet, wird die zuletzt
verwendete Vorrichtung aus Pool A in Pool B verschoben. Das Feld
PAC definiert die maximale Anzahl von RDRAM-Vorrichtungen, die sich
zu einem bestimmten Zeitpunkt in Pool A befinden kann. Vorrichtungen,
die nicht Pool A angehören,
gehören
dem Pool B an.
- • MCH
Group Boundary Access (GBA) Register (060-6Fh): du MCH (060-6Fh):
Die GBA-Register weisen eine Gruppen-ID und einen Wert auf, der
eine obere Adressenbegrenzung für
die Gruppe anzeigt.
- • MCH
Configuration Register (MCHCFG) (0BE-BFh): Diese Register weisen
die Felder Rambus Frequency (Rambus-Frequenz) und DRAM Data Integrity
Mode (DRAM-Datenintegritätsmodus)
auf.
-
Ferner
können
an dieser Stelle die Powerdown-Konfigurationsoptionen programmiert
werden. In einem Ausführungsbeispiel
werden die Optionen für
ein selbständiges
Auffrischen (Self Refresh) und ein selbständiges Auffrischen bei niedriger
Leistung (Low Power Self Refresh) festgelegt (für jeden SerialIDCount: IOP SIO
Register Write. INIT, SDCA = SerialIDCount, DRA = 21h, DRD = 400h
(LSR, bei Unterstützung
durch SPD) + 200h (PSR) + 80h (SRP)).
-
Der
normale Betrieb kann gemäß der Darstellung
in dem Block 650 beginnen, nachdem einige weitere Register
für den
normalen Betrieb programmiert worden sind. Das Page Policy-Register
wird so gesetzt, dass es normal arbeitet (Feld PGPOL RIT (MCH 052h
[2:0] bis 001b), da der Timer zum Schließen der Seiten für die Levelisierung
effektiv deaktiviert worden ist und die Power Management-Funktionen
an dieser Stelle über das
RPMR-Register (MCH 053h) aktiviert werden. Wenn das Bit Pool B Select
(MCH 051h [6]) für
eine NAP-Operation
konfiguriert ist, kann ein Broadcast NAP Eintritts-IOP ausgeführt werden,
um alle Vorrichtungen in den NAP-Zustand zu versetzen. In dem gleichen
E/A-Befehl, der das IIO-Bit
festlegt bzw. setzt, wird das IC-Bit in dem RICM ebenfalls auf Eins
gesetzt, so dass der normale Betrieb des MCH beginnen kann.
-
Wiederherstellung des Kanals
beim Verlassen eines niedrigen Leistungszustands
-
Nachdem
der normale Betrieb ununterbrochen über eine gewisse Zeit angedauert
hat, kann das System in einen niedrigen Leistungszustand eintreten,
und zwar aufgrund von Inaktivität
des Systems oder aus einem anderen Grund, wie dies in Block 1000 aus 10 dargestellt
ist. Ein Zustand, in den das System eintreten kann, ist ein Zustand
Suspend-to-RAM (STR), in dem der MCH Werte verliert, die in dessen
Registern gespeichert sind. Nach dem Eintritt in den Zustand STR
kann ein Ereignis festgestellt werden, das es bewirkt, dass das
System den Zustand STR verlässt,
wie dies in Block 1010 dargestellt ist. Das BIOS startet
entsprechend den MCH und andere Systemkomponenten. Die Konfigurationsregister
des MCH können
in diesem Verfahren automatisch auf einen Standardwert zurückgesetzt
werden.
-
Um
somit Zugriff auf die Speichervorrichtungen in dem Speicherkanal
zu erlangen, sind zumindest einige der Konfigurationsregisterwerte
erforderlich. Das BIOS kann es bewirken, dass der ICH 505 auf
den Speicher 590 mit Batteriesicherung zugreift und die
nachstehend aufgeführten
Register (gespeichert in Block 646 aus 6)
wiederherstellt.
- • MCH GAR-Register (040–047h)
- • MCH
RDT (050h)
- • MCH
DRAMC (051h)
- • MCH
PGPOL (052h)
- • MCH
RPMR (053h)
- • MCH
GBA-Register (060-6Fh)
- • MCH-Konfigurationsregister
(MCHCFG) (OBE-BFh)
-
Nach
der Wiederherstellung der Werte in diese Register kann der MCH erneut
auf in dem Speicher gespeicherte Objekte zugreifen, wenn in den
Zustand STR eingetreten wird, einschließlich der Objekte wie des Prozessorkontexts,
wenn dieser gespeichert wird. Die Speichervorrichtungen führen eine
automatische Refresh-Operation in dem Zustand STR aus, so dass keine
weiteren Daten verloren gehen.
-
Als
nächstes
wird der Taktgenerator gemäß der Darstellung
in Block 1040 gestartet. Die entsprechende Frequenz des
Rambus-Kanals wird aus dem MCH MCHCFG Register (MCH 0BEh [11], das
in Block 1030 wiederhergestellt worden ist) ausgelesen.
Nachdem sich der Takt stabilisieren konnte, wird die MCH RAC initialisiert,
wie dies in dem Block 1050 angezeigt wird. Dies kann erreicht
werden durch Ausführen
des MCH RAC Initialisierungs-IOP.
Ferner können
das DRD-Register mit 0000h geladen und der MCH RAC Steuerregister-Lade-IOP ausgeführt werden,
um einen Bus in der RAC zu initialisieren (wie dies in Bezug auf
den Block 610 beschrieben wird).
-
Als
nächstes
wird die Stromkalibrierung gemäß der Darstellung
in dem Block 1060 vorgenommen. Dies kann so erfolgen, wie
dies in Bezug auf Block 642 und 9 beschrieben
bzw. dargestellt ist. In der letzten Iteration gemäß der Darstellung
in Block 940 kann jedoch das IC-Bit in dem RICM-Register
gesetzt werden, was es ermöglicht,
dass der normale Betrieb unverzüglich
beginnen kann, wenn die Stromkalibrierung abgeschlossen ist. Somit
kann die Wiederaufnahme aus der STR-Sequenz deutlich schneller sein
als die ganze erforderliche Initialisierungssequenz, wenn das System
zum erstem Mal hochgefahren wird, da die Kanallevelisierung, die
SPD-Abfrage, die ID-Zuweisung und eine Reihe anderer Initialisierungsoperationen
weggelassen werden können.
-
Offenbart
werden zusammengefasst ein Verfahren und eine Vorrichtung zur Initialisierung
einer Speichervorrichtung und eines Speicherkanals.