-
VERWANDTE
ANMELDUNGEN
-
Die
vorliegende Erfindung ist verwandt zu der Anmeldung mit der Anmeldenummer
01/186.051 (Registernummer P6627) mit dem Titel "A Method And Apparatus For Configuring
And Initializing A Memory Device And A Memory Channel", der Anmeldenummer
09/186.050 (Registernummer P6628) mit dem Titel "A Method And Apparatus For Configuring A
Memory Device And A Memory Channel Using Configuration Space Registers" und der Anmeldenummer
09/186.049 (Registernummer P6639) mit dem Titel "A Method And Apparatus For Restoring
A Memory Device Channel When Exiting A Lower Power State", die alle gleichzeitig
zu der vorliegenden Anmeldung eingereicht werden.
-
STAND DER TECHNIK
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft das Gebiet der Datenverarbeitungssysteme.
Im Besonderen betrifft die vorliegende Erfindung das Angleichen
von Übertragungsverzögerungen
für mehrere
Datenübertragungsvorrichtungen
wie etwa Speichervorrichtungen, die in einem Speicherkanal konfiguriert
werden.
-
2. Beschreibung
des Stands der Technik
-
Bei
bestimmten Datenübertragungssystemen
müssen
die Datenübertragungsverzögerungen zwischen
einer Gruppe von Systemvorrichtungen und einer Bussteuereinheit
angeglichen werden, was bedeutet, dass die Datenübertragungsverzögerung so
angepasst wird, dass die Summe der Datenübertragungsverzögerung und
der Ausbreitungsverzögerung gleich
der gleichen Anzahl von Buszyklen für alle Vorrichtungen an dem
Bus ist. Bei angeglichenen Verzögerungen
kann die Bussteuereinheit auf die ganze Gruppe von Systemvorrichtungen
auf einheitliche Weise ansprechen. Eine derartige Angleichung wird
für gewöhnlich beim
Hochfahren des Systems oder während
einem anderen Initialisierungszeitraum ausgeführt, wenn die Datenübertragung
an die Gruppe von Vorrichtungen anderweitig aufgeschoben wird. Eine
effiziente Technik zur Angleichung der Verzögerungen kann die vorteilhafte
Reduzierung der Länge
des Initialisierungszeitraums sein, wodurch eine schnellere Wiederaufnahme
oder Fortsetzung der Systemverarbeitungsaktivitäten ermöglicht wird.
-
Bei
vielen dem Stand der Technik entsprechenden Speicherteilsystemen
ist Antwort einer ganzen Gruppe von Speichervorrichtungen während einem
einzelnen Buszyklus erforderlich. Die Ansprechzeit kann zwar auf
einen anderen Wert programmiert oder durch das Einfügen von
Wartezuständen
ausgedehnt werden, wobei jedoch erwartet wird, dass alle Daten innerhalb
des gleichen Taktzyklus an der Speichersteuereinheit ankommen. Ein
System, bei dem alle Vorrichtungen während dem gleichen Taktzyklus ansprechen,
kann eine Verzögerungsangleichung nicht
erforderlich sein, wobei derartige Konstruktionen jedoch teure Leiterplatten
benötigen
können
und in Bezug auf die erreichbare Bandbreite beschränkt sein
können.
-
Andererseits
weisen bestimmte Systeme Vorrichtungen auf, die entlang eines verhältnismäßig langen
Busses oder "Kanals" angeordnet sind,
so dass das System nicht versucht, die Datenübertragung entlang dem Bus
während
einem einzigen Taktzyklus des Busses zu beenden. Tatsächlich kann
die Taktrate für
den Bus hoch genug sein, so das Vorrichtungen an einem Ende des
Busses, entfernt von der Bussteuereinheit, eine Ausbreitungsverzögerung zu der
Bussteuereinheit von mehreren Bustaktzyklen aufweisen können. Verstärkt wird
das Problem der Ausbreitungsverzögerung
dadurch, dass verschiedene Vorrichtungen entlang dem Kanal verschiedene Transaktionsansprechzeiten
aufweisen können.
-
Ein
Rambus (TM) Direct Rambus Dynamic Random Access Memory (Direct RDRAM)
Bus ist ein Beispiel für
einen Bus, der Speichervorrichtungen entlang eines Kanals verwendet.
Es ist bekannt, dass ein Direct RDRAM Memory Controller (RMC) erwarten
kann, dass Daten von allen Vorrichtungen entlang eines Kanals während einem
bestimmten Buszyklus empfangen werden. Tatsächlich sieht eine Steuereinheit
bzw. ein Controller, die bzw. der in "Direct RMC.d1 Data Sheet", erhältlich von
der Rambus Corporation, Mountain View, Kalifornien, USA, ein Controller-Verzögerungsregister
zur Unterstützung
der Angleichung der Verzögerungen
vor.
-
Zusätzlich können ein
oder mehrere Verzögerungsregister
in einzelnen RDRAM-Vorrichtungen vorgesehen sein (z.B. ein Register
TRDLY, das in dem Datenblatt "Direct RDRAM 64/72-Mbit" auf Seite 36 beschrieben
ist), Werte können
in diesen Registern gespeichert werden, um Verzögerungen zwischen den verschiedenen
Vorrichtungen entlang dem Kanal anzugleichen. Für gewöhnlich wird der Controller-Verzögerungswert
zuerst initialisiert, wobei danach die Verzögerungswerte für die einzelnen
Speichervorrichtungen angepasst werden.
-
Dieser
Stand der Technik, siehe zum Beispiel das U.S. Patent US-A-5.892.981
A, sieht unter Umständen
keinen Mechanismus zur Reduzierung der Anzahl der während der
Initialisierung ausgeführten Anzahl
von Zyklen vor. Im Allgemeinen sieht der Stand der Technik keine
bestimmten Möglichkeiten vor,
um nur eine Teilmenge der ganzen Anzahl möglicher Verzögerungswerte
zu testen. Der Stand der Technik spezifiziert ferner kein Verfahren
zur Auswahl von Anfangswerten für
bestimmte Verzögerungstestiterationen,
eine effiziente Reihenfolge zum Testen von Verzögerungswerten, ein Verfahren
zur Ausführung
jedes Tests oder eine Möglichkeit
zum Abbrechen der Verzögerungstests
sowie zur Deaktivierung von Vorrichtungen, wenn bestimmte Werte erreicht
werden. Der Stand der Technik sieht somit kein angemessenes Verfahren
zur Angleichung von Verzögerungen
entlang einem Kanal von Vorrichtungen vor.
-
Das
Problem wird durch die Lösung
behoben, die in dem Verfahrensanspruch 1 und dem Systemanspruch
7 definiert ist. Vorteilhafte Ausführungsbeispiele sind in den
Unteransprüchen
definiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist in den Abbildungen der beigefügten Zeichnungen
beispielhaft veranschaulicht und ohne die vorliegende Erfindung dadurch
einzuschränken.
Es zeigen:
-
1 ein
Flussdiagramm eins Ausführungsbeispiels
eines Systems, das Verzögerungen
für Speichervorrichtungen
angleicht;
-
2 ein
Ausführungsbeispiel
eines Systems, das Verzögerungen
für Speichervorrichtungen angleicht;
-
3 ein
Ausführungsbeispiel
einer ersten Phase der Verzögerungsangleichung,
in der ein Steuereinheits-Verzögerungswert
bestimmt wird; und
-
4 ein
Ausführungsbeispiel
einer zweiten Phase der Verzögerungsangleichung,
in der einzelne Vorrichtungsverzögerungen
für jede
freigegebene Vorrichtung bestimmt werden.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Vorgesehen
werden in der folgenden Beschreibung ein Verfahren und eine Vorrichtung
zum Angleichen von Übertragungsverzögerungen
für einen
Kanal von Vorrichtungen wie etwa Speichervorrichtungen in einem
Speicherteilsystem. Die folgende Beschreibung führt zahlreiche spezifische
Einzelheiten wie etwa Registernamen, Speicherarten, Busprotokolle,
spezifische Komponententypen, logische Partionierungen und Integrationsauswahlen
aus, um ein umfassenderes Verständnis
der vorliegenden Erfindung zu vermitteln. Hiermit wird jedoch für den Fachmann
auf dem Gebiet festgestellt, dass die vorliegende Erfindung auch
ohne diese spezifischen Einzelheiten ausgeführt werden kann. In anderen Fällen wurde
auf die Darstellung von Steuerstrukturen und Schaltungen auf Gate-Ebene
verzichtet, um die Erfindung nicht unnötig zu verschleiern, Der Durchschnittsfachmann
auf dem Gebiet ist anhand der vorliegenden Beschreibungen in der
Lage, die erforderlichen Logikschaltungen ohne übermäßige Versuchsreihen zu implementieren.
-
Die
offenbarten Techniken können
einen effizienten Initialisierungsprozess zum Angleichen von Verzögerungen
zwischen einer Steuereinheit bzw. einem Controller und einer Gruppe
von Vorrichtungen vorsehen. Der Initialisierungsprozess kann effizient sein,
da nur eine Teilmenge aller insgesamt existierenden möglichen
Verzögerungswerte
getestet werden muss. Zum Beispiel kann auf umfassende Verzögerungstests
verzichtet werden, wenn eine effiziente Reihenfolge bzw. Anordnung
von Testverzögerungswerten
eingesetzt wird, wenn bestimmte Ausgangswerte für bestimmte Verzögerungstestiterationen ausgewählt werden
und/oder wenn die Verzögerungstests
nach Erreichen bestimmter Werte abgebrochen werden. Als Folge der
Verwendung der offenbarten Techniken kann eine weitere Verarbeitung schneller
fortgesetzt werden oder von neuem beginnen, wodurch ein erhöhter Systemdurchsatz
ermöglicht
wird.
-
Die
effiziente Initialisierung eines Speicherteilsystems kann aufgrund
des Fehlens von Speicher für
Variablen während
der Initialisierung besonders schwierig sein. Da der Speicher selbst
initialisiert wird, kann dieser zum Speichern von temporären Werten
nicht zur Verfügung
stehen. Darüber
hinaus weist das BIOS-Programm, das für gewöhnlich die Initialisierung
ausführt,
nur wenig oder keinen Speicher auf, in dem Werte vorübergehend
gespeichert werden können.
Somit können
für eine
Initialisierungsroutine begrenzte Ressourcen zur Unterstützung eines
optimalen Initialisierungsablaufs zur Verfügung stehen.
-
Bei
bestimmten Ausführungsbeispielen
der offenbarten Zweiphasentechnik kann auf große Speicherkapazitäten verzichtet
werden, indem zuerst eine maximale Latenz zum Festlegen eines Steuereinheits-Verzögerungswertes
getestet wird, und wobei danach jede Speichervorrichtung zum Festlegen eines
Vorrichtungsverzögerungswerts
abgearbeitet wird. Die Effizienz kann dadurch beibehalten werden, dass
unnötige Iterationen
in beiden Phasen des Verfahrens weggelassen werden.
-
Die
Abbildung aus 1 zeigt ein allgemeines Flussdiagramm
zur Verzögerungsangleichung für eine Gruppe
oder einen Kanal von Vorrichtungen mit einem Datenaustausch mit
einer Steuereinheit über
einen Bus. Die Phase 1 dieser Technik umfasst die Programmierung
eines Steuereinheits-Verzögerungswertes
auf der Basis einer maximalen Vorrichtungslatenz. Der in Phase 1
bestimmte Steuereinheits-Verzögerungswert
ist eine Funktion des größten Übertragungslatenzwertes
der Vorrichtungen an dem Bus. Abhängig von der jeweiligen Übertragungseinleitung
und/oder der eingesetzten Hardware für den Datenempfang kann der
Steuereinheits-Verzögerungswert
entweder gleich dem größten Übertragungslatenzwert
sein oder von diesem abgeleitet werden.
-
Eine
mögliche
Technik zur Ermittlung der Steuereinheitsverzögerung ist die Bestimmung durch iteratives
Testen. Gemäß der Darstellung
in Block 100 kann ein Steuereinheits-Verzögerungswert
jedoch auch durch Testen nur einer Teilmenge der verfügbaren Verzögerungswerte
bestimmt werden. Mit anderen Worten können einer Steuereinheit N
mögliche
interne Verzögerungswerte
zur Verfügung
stehen, die zur Kompensation von Verzögerungen der verschiedenen
Vorrichtungen an dem Bus verwendet werden können, und wobei weniger als
N Tests an mindestens einigen der Speichervorrichtungen unter bestimmten
Bedingungen ausgeführt
werden. Diese Tests einer Teilmenge von Verzögerungswerten können zum
Beispiel dadurch erreicht werden, dass eine Testphase abgebrochen
wird, wenn ein bestimmter maximaler Steuereinheits-Verzögerungswert
gefunden worden ist, oder indem neue Iterationen an dem Endwert
gestartet werden, der für
eine vorherige Vorrichtung bestimmt worden ist.
-
In
dem Block 110 wird der Steuereinheits-Verzögerungswert
in der Steuereinheit gespeichert, so dass die Steuereinheit erfolgreich Übertragungen
mit der langsamsten Vorrichtung an dem Bus ausführen kann. In einem Ausführungsbeispiel
fügt die
Steuereinheit die vorbestimmte Anzahl von Verzögerungen in einen Taktpfad
einer Abtastschaltung (z.B. ein Latch) ein, die Daten von der Vorrichtung empfängt. Der
verzögerte
Takt an die Abtastschaltung kompensiert die Ausbreitungsverzögerung von der
Vorrichtung an die Steuereinheit, so dass die Steuereinheit erfolgreich
durch die Vorrichtung angesteuerte Daten speichern kann.
-
Da
der Steuereinheits-Verzögerungswert
auf dem größten Latenzwert
basiert, kann die Steuereinheit in der Lage sein, nur Daten von
Vorrichtungen erfolgreich zu empfangen, die am Ende von Phase 1
innerhalb des gleichen Zeitbereichs liegen (d.h. Vorrichtungen,
deren Daten innerhalb des gleichen Taktzyklus die Steuereinheit
erreichen). Am Ende von Phase 1 (nach den Blöcken 100 und 110)
kann somit eine weitere Konfiguration angemessen sein, um der Steuereinheit
den Empfang von Daten von allen Vorrichtungen zu ermöglichen.
-
In
Phase 2 sind alle freigegebenen Vorrichtungen an dem Bus so konfiguriert,
dass sie Daten innerhalb des gleichen Zyklus an die Steuereinheit
zurückführen. Wie
dies in Block 120 dargestellt ist, wird ein Verzögerungswert
für jede
Vorrichtung durch Testen von einem oder mehreren Verzögerungswerten für jede Vorrichtung
bestimmt. Nah an der Steuereinheit liegende Vorrichtungen müssen unter
Umständen
mehrere Verzögerungszyklen
einfügen,
um geeignete Datenankunftszeiten zu erreichen, während Vorrichtungen an dem
entfernten Ende des Busses nur einen oder keinen zusätzlichen
Verzögerungszyklus
benötigen.
Ferner sollte die Vorrichtung mit der größten zulässigen Latenz (bestimmt in
Phase 1) keine zusätzlichen
Verzögerungszyklen
benötigen,
da die Verzögerung
in der Steuereinheit auf diese Vorrichtung abgestimmt ist.
-
Die
Abbildung aus 2 zeigt ein System unter Verwendung
einer Technik zur Verzögerungsangleichung
in Verbindung mit einer Speichersteuereinheit und einer Reihe von
Speichervorrichtungen, die entlang einem Speicherbus oder einem
Speicherkanal platziert sind. In einem Ausführungsbeispiel kann es sich
bei dem Kanal um einen Rambus Direct RDRAM Kanal handeln. Alternative
Ausführungsbeispiele
können
andere Busarchitekturen oder Anordnungen verwenden, die ohne eine
derartige Angleichung Daten während
verschiedenen Buszyklen (oder in unterschiedlichen Zeitbereichen)
zurückführen würden, abhängig von
der durch die physikalische Platzierung der Speichervorrichtungen
verursachten Ausbreitungsverzögerung.
-
Das
System aus 2 umfasst einen Prozessor 205,
der über
einen Bus 207 mit einer Speichersteuereinheit 200 gekoppelt
ist. Die Speichersteuereinheit 200 umfasst ein Steuereinheits-Leseverzögerungsregisterfeld
(TDR) 222, eine variable Verzögerungsschaltung 210 und
ein Latch 226 auf, um die Erfassung von Lesedaten von Speichervorrichtungen
zu ermöglichen,
die in unterschiedlichen Entfernungen (und somit unterschiedlichen
Ausbreitungsverzögerungen)
von der Speichersteuereinheit 200 angeordnet sein können. Das
Steuereinheitsregister 222 kann eine Gruppe von Steuerregistern 220 wie
etwa von PCI-Konfigurationsraumregistern
(PCI als englische Abkürzung
von Peripheral Component Interconnect) darstellen, die durch das
BIOS beschrieben werden können.
-
Das
veranschaulichte Ausführungsbeispiel der
variablen Verzögerungsschaltung 210 weist
einen Multiplexer 214 auf, der durch das Steuereinheits-Verzögerungsregister 222 gesteuert
wird. Vier Verzögerungselemente 216, 217, 218 und 219,
die jeweils die Speicherfunktion des Latch 226 um einen Buszyklus
verzögern,
sehen vier Eingänge
in den Multiplexer 214 vor. Der Multiplexer 214 sieht
ein Taktsignal an das Latch 226 vor, indem eine von vier Verzögerungen
auf der Basis des Wertes in dem Steuereinheits-Verzögerungsregister 222 ausgewählt wird.
In anderen Ausführungsbeispielen
kann eine andere Anzahl von Verzögerungselementen verwendet
werden, wodurch eine größere oder
kleinere Zahl für
die maximale Steuereinheitsverzögerung
ermöglicht
wird, die in diesem Fall bei vier liegt. Zusätzlich kann jede Art einer
bekannten oder anderweitig verfügbaren
variablen Verzögerungsschaltung verwendet
werden.
-
Die
Speichersteuereinheit 200 verwendet ferner eine serielle
Steuerlogik 224. Die serielle Steuerlogik kann ein SPD-Übertragungsprotokoll (SPD als
englische Abkürzung
von Serial Presence Detect) implementieren, das in der von Rambus
erhältlichen Veröffentlichung "RIMMTM Serial
Presence Detect Application Note" beschrieben
ist. In alternativen Ausführungsbeispielen
kann die serielle Steuerlogik 224 durch eine Steuerlogik
ersetzt werden, die ein anderes Protokoll, ob seriell oder andersartig,
implementiert, das die Programmierung von Registern wie etwa Verzögerungs-
und Identifikationsregistern in den verschiedenen Vorrichtungen
ermöglicht,
mit denen die Speichersteuereinheit 200 kommuniziert.
-
Die
Speichersteuereinheit 200 ist über einen seriellen Bus 236,
einen Taktbus 232 (CK) und einen Datenbus 234 (D)
mit drei Speichermodulen gekoppelt. Jedes Speichermodul kann eine
unterschiedliche Anzahl von Speichervorrichtungen aufweisen. Ein
erstes Speichermodul 240 veranschaulicht eine erste Speichervorrichtung 241,
eine zweite Speichervorrichtung 250 und eine letzte Speichervorrichtung 252.
Verschiedene interne Funktionen der Speichervorrichtung 250 sind
abgebildet und werden nachstehend näher erörtert.
-
Bei
dem seriellen Bus 236 handelt es sich um einen segmentierten
Bus, der durch jede Vorrichtung verläuft. Ein zweites Segment 236a des
seriellen Busses 236 erstreckt sich von der Speichervorrichtung 241 zu
der Speichervorrichtung 250. In ähnlicher Weise erstreckt sich
ein dritter Abschnitt 236b von der Speichervorrichtung 250 zu
der nächsten Speichervorrichtung
(nicht abgebildet). Der Taktbus 232 und der Datenbus 234 verlaufen
andererseits vollständig
durch den Kanal durch zum Beispiel die Speichervorrichtungen 241 und 252,
wie dies durch die gestrichelten Linien dargestellt ist.
-
Ein
zweites Speichermodul 260 und ein drittes Speichermodul 270 sind
auf die gleiche Art und Weise konfiguriert. Das zweite Speichermodul 260 weist
eine erste Speichervorrichtung 262, eine zweite Speichervorrichtung 264 und
eine letzte Speichervorrichtung 266 auf. Das dritte Speichermodul 270 weist eine
erste Speichervorrichtung 272, eine zweitletzte Speichervorrichtung 274 und
eine letzte Speichervorrichtung 276 auf. Der Taktbus 232 und
der Datenbus 234 verlaufen durch das zweite und das dritte
Speichermodul und verbinden jedes der Module mit jeder Speichervorrichtung.
Der serielle Bus wird segmentiert zwischen jeder Vorrichtung fortgesetzt.
-
Am
Ende des dritten Speichermoduls 270 enden die Daten- und
Taktbusse. Der Datenbus endet in einem Abschlusswiderstand 238,
um Signalreflexionen zu reduzieren. Ein Taktgenerator 280 ist
mit dem Ende des Taktbusses 232 gekoppelt. In einem Ausführungsbeispiel
weist der Taktbus vier Signalleitungen für Bustakte auf. In diesem Ausführungsbeispiel
sieht ein erster Taktgenerator (nicht abgebildet) einen Takt "Takt von Master" (CFM als englische
Abkürzung
von Clock from Master) und dessen Komplement auf zwei Leitungen
von dem Speichersteuereinheitsende des Taktbusses 232 vor,
und der Taktgenerator 280 sieht einen Takt "Takt an Master" (CTM als englische
Abkürzung
von Clock to Master) und dessen Komplement auf zwei zusätzlichen
Signalleitungen von dem entgegengesetzten Ende des Taktbusses 232 vor.
-
Die
Speichervorrichtung 250 veranschaulicht eine Mehrzahl von
Komponenten, die ebenfalls in den anderen veranschaulichten Speichervorrichtungen
vorgesehen sein können.
Daten können über einen
Kern 242, der einzelne Speicherzellen und eine zugeordnete
Steuerlogik aufweist, an den Datenbus 234 geschriebne oder
von diesem empfangen werden. Eine Treiberschaltung 242 ist
mit dem Kern 243 gekoppelt, um Daten von dem Kern 243 zu
dem Datenbus 234 zu leiten. Der Treiber 242 wird
durch eine Ausgabe der variablen Verzögerungsschaltung 244 freigegeben
bzw. abgetastet, die wiederum durch ein Verzögerungsregister 249 gesteuert
wird. Das Verzögerungsregister 249 ist
mit der seriellen Steuerlogik 248 gekoppelt und kann somit
mit Vorrichtungsverzögerungswerten
programmiert werden, die durch das BIOS bestimmt und durch die Speichersteuereinheit 200 über die
serielle Steuerlogik 224 und den seriellen Bus 236 übertragen
werden.
-
Zusätzlich können eine
oder mehrere Identifikationsregister (ID) 248 zwei IDs
aufweisen, eine Gruppenvorrichtungs-ID und eine serielle Vorrichtungs-ID.
Die Gruppenvorrichtungs-ID (auch als "Vorrichtungs-ID" bezeichnet) adressiert eine bestimmte Speichervorrichtung
bei der Ausführung
von Daten- oder
Befehlstransaktionen unter Verwendung des Datenbusses 234 und/oder
anderer Steuerleitungen (nicht abgebildet). Die serielle Vorrichtungs-ID
kann zum Identifizieren bestimmter Vorrichtung bei der Verwendung
des seriellen Busses 236 verwendet werden. Die serielle
Vorrichtungs-ID und die Vorrichtungs-ID sind häufig verschieden, da Vorrichtungs-IDs
zur Leistungsoptimierung ausgesucht werden können, während serielle IDs ausschließlich basierend
auf der physikalischen Positionierung der Speichervorrichtungen
bestimmt werden können.
-
Die
variable Verzögerungsschaltung 244 weist
eine Reihe von Verzögerungsblöcken 246a–246n auf,
deren Anzahl von Vorrichtung zu Vorrichtung oder von Modul zu Modul
unterschiedlich sein kann. Für
gewöhnlich
weist ein nichtflüchtiger Speicher,
der über
den seriellen Bus 236 zugänglich ist, Informationen auf,
die die maximale Anzahl von Verzögerungen
anzeigen, die für
jede Speichervorrichtung eines Speichermoduls verfügbar sind,
Ein Multiplexer 245 wählt
ein Taktsignal von dem Taktbus 232 aus, das um eine Anzahl
von Bustaktzyklen verzögert
wird, die durch den in dem Verzögerungsregister 249 gespeicherten
Wert bestimmt wird. Folglich kann eine Speichervorrichtung nach
Bedarf Verzögerungszyklen
einfügen,
um sicherzustellen, dass Daten die Speichersteuereinheit 200 während einem bestimmten
Bustaktzyklus erreichen. Bei Speichervorrichtungen wie etwa der
Vorrichtung 276 an dem Ende des Busses kann der Verzögerungswert
gleich Null sein. Bei Vorrichtungen wie der Vorrichtung 241, die
nahe an der Speichersteuereinheit 200 angeordnet ist, können so
viele Buszyklen eingefügt
werden, wie diese erforderlich sind, damit sich Daten von der Vorrichtung 276 zu
der Vorrichtung 241 ausbreiten, um die Verzögerungen
für diese
beiden Speichervorrichtungen anzugleichen.
-
Das
System aus 2 weist ferner einen Bus 209 auf,
der mit der Speichersteuereinheit 200 gekoppelt ist. Der
Bus 209 kann ein Bus sein, der direkt mit der Speichersteuereinheit 200 gekoppelt
ist, oder ein Bus, der durch eine oder mehrere Brückenschaltungen
indirekt mit der Speichersteuereinheit 200 gekoppelt ist.
Ein nichtflüchtiger
Speicher 280 (z.B. ein Flash-Speicher) mit einem BIOS-Code
und eine Eingabevorrichtung 290 sind mit dem Bus 209 gekoppelt.
Alternativ können
diese Vorrichtungen mit separaten Bussen gekoppelt oder anderweitig
konfiguriert sein, so dass sie für
das System zugänglich sind.
-
Die
Eingabevorrichtung 290 kann entweder Programmbefehle von
einer Computerspeichervorrichtung 292 (z.B. einer optischen
oder magnetischen Platten- oder anderen Speichervorrichtung) oder
von einer Netzwerk- oder einer Kommunikationsschnittstelle 294 empfangen.
Der BIOS-Code (d.h. Computerbefehle), der bewirkt, dass das System
die offenbarten Techniken implementiert, kann auf verschiedene Art
und Weise in den nichtflüchtigen
Speicher 280 programmiert werden. Das BIOS kann bei der
Herstellung des Systems programmiert werden oder später über ein
computerlesbares Medium über
die Eingabevorrichtung 290 vorgesehen werden.
-
Wenn
das BIOS später
vorgesehen wird, können
die Befehle über
ein computerlesbares Medium vorgesehen werden. In Verbindung mit
einer geeigneten Schnittstellenvorrichtung 290 stellt ein
elektronisches Signal oder ein greifbarer Träger ein computerlesbares Medium
dar. Zum Beispiel ist die Computerspeichervorrichtung 292 in
einem Ausführungsbeispiel
ein computerlesbares Medium. In einem anderen Ausführungsbeispiel
ist eine Trägerwelle 296, die
einen Computerbefehl führt,
ein computerlesbares Medium. Die Trägerwelle 296 kann
so moduliert oder anderweitig manipuliert werden, dass sie Befehle
aufweist, die unter Verwendung bekannter oder anderweitig verfügbarer Kommunikationstechniken durch
die Eingabevorrichtung 290 decodiert werden können. In
jedem Fall können
die Computerbefehle über
ein computerlesbares Medium vorgesehen werden.
-
Der
Ablauf eines Ausführungsbeispiels
des Systems aus 2 ist in den Flussdiagrammen
der 3 und 4 veranschaulicht, welche entsprechend
die Abläufe
der Phasen 1 und 2 darstellen. In Block 300 aus 3 beginnt
Phase 1. In Block 305 werden bestimmte Variablen initialisiert.
Der Speichersteuereinheits-Verzögerungswert
wird auf einen Ausgangswert initialisiert, der die Anzahl der zuerst durch
die Speichersteuereinheit getesteten Verzögerungszyklen bei der Bestimmung
des letztendlichen Steuereinheits-Verzögerungswerts
darstellt. In einem Ausführungsbeispiel
wird Null als Ausgangswert ausgewählt, um sicherzustellen, dass
der Steuereinheits-Verzögerungswert
nicht größer ist
als notwendig.
-
Zusätzlich wird
der serielle ID-Zähler
initialisiert, um die letzte Vorrichtung in der seriellen Kette des
Kanals in Block 305 anzuzeigen. In einem Ausführungsbeispiel
werden die seriellen IDs so zugewiesen, dass die letzte Vorrichtung
in der seriellen Kette die höchste
serielle ID-Nummer aufweist.
-
Die
höchste
serielle ID weist unter Umständen
allerdings nicht den längsten
Spurabstand zu der Steuereinheit auf. Der serielle Bus 236 kann
in eine feste Richtung (z.B. in der Abbildung aus 2 von links
nach rechts) an jedem Speichermodul verlaufen, während der Datenbus 234 verschiedene
Module in verschiedene Richtungen kreuzt. Somit kann es vorteilhaft
sein, mit der höchsten
seriellen ID-Nummer zu beginnen, da sie sich wahrscheinlich zumindest
an dem am weitesten entfernten Speichermodul befindet, obwohl die
höchste
serielle ID-Nummer nicht unbedingt die Speichervorrichtung anzeigt,
die am weitesten von der Steuereinheit entfernt ist.
-
Gemäß der Darstellung
in Block 310 wird als nächstes
der Steuereinheits-Verzögerungswert
in dem Speichersteuereinheitsregister 222 gespeichert. Nachdem
die Steuereinheitsverzögerung
in dem Steuereinheitsregister 222 gespeichert worden ist, wird
eine Testübertragung
durchgeführt,
wie dies in Block 315 dargestellt ist. In einem Ausführungsbeispiel
kann zum Beispiel ein bestimmter Speicherplatz in der getesteten
Speichervorrichtung beschrieben und danach ausgelesen werden. Der
Erfolg dieser Übertragung
wird in dem Block 320 getestet. Wenn der ausgelesene Datenwert
nicht mit dem geschriebenen Wert übereinstimmt, so war die Übertragung nicht
erfolgreich. Wenn die Daten somit früher als von der Speichersteuereinheit
erwartet ausgelesen werden, so werden sie nicht ordnungsgemäß erfasst
und die Übertragung
ist nicht erfolgreich.
-
Wenn
die Übertragung
nicht erfolgreich ist, wird die Verzögerung der Speichersteuereinheit
gemäß Block 325 erhöht, um für die Daten
mehr Zeit vorzusehen, um die Speichersteuereinheit zu erreichen.
In dem Block 350 wird getestet, ob die Verzögerung der
Speichersteuereinheit einen von der Steuereinheit unterstützten maximalen
Verzögerungswert überschreitet
(der in dem Ausführungsbeispiel
aus 2 zum Beispiel vier beträgt). Wenn dies der Fall ist,
kann die Steuereinheit nicht genug Verzögerungen einfügen, um
die Daten aus der Vorrichtung zu lesen, und es werden an dieser
Vorrichtung keine weiteren Tests durchgeführt, wobei die serielle ID
in dem Block 340 verringert wird. In einem Ausführungsbeispiel
ist der maximale Verzögerungswert gleich
vier.
-
Wenn
die Verzögerung
andererseits geringer ist als der von der Speichersteuereinheit
unterstützte maximale
Verzögerungswert,
so kann die Speichersteuereinheit 200 das Taktsignal von
der variablen Verzögerung 210 um
einen weiteren Zyklus verzögern
und die Datenerfassung erneut probieren. Der Prozess springt somit
zu dem Block 315 zurück, wenn
die Steuereinheitsverzögerung
nicht größer ist als
die maximale Verzögerung,
die von der Steuereinheit gemäß dem Test
in dem Block 350 unterstützt wird.
-
Sobald
in dem Block 320 eine erfolgreiche Übertragung erkannt wird, wurde
die geeignete Verzögerung
der Steuereinheit für
die jeweilige Speichervorrichtung bestimmt, wie dies in Block 330 angezeigt
wird. Wenn die Verzögerung
gemäß dem Test
in Block 335 der maximalen von der Steuereinheit unterstützten Verzögerung entspricht,
so ist Phase eins abgeschlossen, wie dies in Block 355 angezeigt
wird. Phase 1 ist abgeschlossen, da die Steuereinheit ihren maximalen
Verzögerungswert
für diese Speichervorrichtung
verwenden muss und somit keine weitere Notwendigkeit zum Testen
anderer Speichervorrichtungen besteht. Somit kann das umfassende
Testen der Verzögerung
der Steuereinheit abgebrochen werden, um Initialisierungszeit zu
sparen.
-
Wenn
der Verzögerungswert
der Steuereinheit nicht dem maximalen Verzögerungswert entspricht, werden
weitere Speichervorrichtungen geprüft, um deren Verzögerungswerte
zu bestimmen. Wie dies in Block 340 dargestellt ist, wird
der serielle ID-Zähler
herabgesetzt, um eine nächste
Speichervorrichtung auszuwählen.
In Block 345 wird bestimmt, ob weitere Speichervorrichtungen
getestet werden müssen.
Wenn dies nicht der Fall ist, so endet die erste Phase in Block 355.
In dem Ausführungsbeispiel,
in dem die höchste
ID-Nummer zuerst ausgewählt
wird und folgende Vorrichtungen durch Herabsetzen der ID-Nummer
ausgewählt
werden, kann die Bestimmung, ob weitere Speichervorrichtungen zu
testen sind, vorgenommen werden, indem getestet wird, ob die ID-Nummer
kleiner ist als Null. Alternative Tests können für andere ID-Nummerierungen und/oder Testsequenzen
verwendet werden.
-
Wenn
keine weiteren Speichervorrichtungen getestet werden sollen, springt
der Prozess zu dem Block 310 zurück. Der für die vorherige Speichervorrichtung
als ausreichend ermittelte Verzögerungswert
der Steuereinheit ist der Anfangspunkt für die nächste Iteration. Selbst wenn
die neue Speichervorrichtung Daten schneller zurückführt, ist die Speichersteuereinheit
weiterhin durch die langsamere vorherige Vorrichtung beschränkt und
ist nicht in der Lage, den Verzögerungswert
der Steuereinheit herabzusetzen. Durch den Beginn mit dem vorher
bestimmten Verzögerungswert
der Steuereinheit können
somit die Anzahl der Testzyklen verringert und der Initialisierungsprozess
verkürzt
werden.
-
Da
Phase eins zuerst eine Vorrichtung in dem physikalisch am weitesten
entfernten Speichermodul testen kann, erscheinen die größten Verzögerungen
wahrscheinlich in der ersten Gruppe von Speichervorrichtungen. Folglich
können
näher angeordnete
Vorrichtungen in der Lage sein, während der ersten Testübertragung
Daten zurück
zu der Steuereinheit zu übertragen.
Durch die Auswahl der höchsten
seriellen ID-Nummer als Ausgangspunkt in Block 305 können somit
mehrere Tests für
Vorrichtungen mit geringer Ausbreitungsverzögerung übersprungen werden.
-
Phase
2 beginnt in Block 400 aus 4. Wiederum
werden Variablen initialisiert, wie dies in Schritt 405 dargestellt
ist. Der serielle ID-Zähler
wird auf die serielle ID der letzten Vorrichtung an dem Kanal initialisiert,
wodurch die letzte Vorrichtung zu der ausgesuchten zu testenden
Vorrichtung wird. Die Vorrichtungsverzögerung für die ausgesuchte Vorrichtung
wird auf einen Ausgangswert festgelegt. In einem Ausführungsbeispiel
kann Null als Ausgangswert verwendet werden, da bestimmte Vorrichtungen ohne
zusätzliche
Verzögerung
ordnungsgemäß arbeiten.
-
Gemäß der Darstellung
in Block 410 wird eine Speicherübertragung zum Testen der ausgesuchten
Speichervorrichtung vorgenommen. Wenn die in Block 410 versuchte Übertragung
erfolglos ist, gemäß dem Test
in Block 412, so wird der Verzögerungswert der getesteten
Vorrichtung mit einem maximalen Vorrichtungsverzögerungswert verglichen, wie
dies in Block 415 dargestellt ist. Wenn der Verzögerungswert
der getesteten Vorrichtung dem maximalen Verzögerungswert entspricht, so
ist es der Vorrichtung nicht gelungen Daten präzise an die Speichersteuereinheit
zu übertragen,
obwohl der Datenausgabe die maximale Verzögerung hinzugefügt worden
ist. In diesem Fall wird die Speichervorrichtung deaktiviert, wie
dies in Block 425 dargestellt ist. Die Vorrichtung kann
deaktiviert werden, indem eine Vorrichtungs-ID zugewiesen wird,
die von der Speichersteuereinheit nicht verwendet wird, so dass
keine Datenübertragungen
zwischen der deaktivierten Vorrichtung und der Steuereinheit auftreten.
Danach können
andere Vorrichtungen in Verbindung mit dem Hochzählen des seriellen ID-Zählers getestet
werden, und der Prozess fährt
mit Block 425 fort.
-
Wenn
die in dem Block 410 versuchte Übertragung im anderen Fall
erfolgreich ist, gemäß dem Test
in Block 412, so reicht die aktuelle in der ausgesuchten
Vorrichtung programmierte Vorrichtungsverzögerung aus, um Daten präzise zu
der Speichersteuereinheit zu übertragen,
und es können
weitere Vorrichtungen getestet werden. Demgemäß wird der serielle ID-Zähler herabgesetzt, wie dies
in Block 430 dargestellt ist.
-
Danach
wird bestimmt, ob weitere Vorrichtungen getestet werden müssen. Dies
kann gemäß der Darstellung
aus Block 435 in einem Ausführungsbeispiel erreicht werden,
indem getestet wird, ob der serielle ID-Zähle niedriger ist als Null.
Wenn weitere Vorrichtungen zu testen sind, handelt es sich bei der jetzt
durch den herabgesetzten ID-Zähler
angezeigten Vorrichtung um die als nächstes getestete Vorrichtung,
wobei der Prozess zu dem Block 410 zurück springt. Wenn keine Vorrichtungen
mehr zu testen sind, ist Phase 2 gemäß der Darstellung in Block 440 abgeschlossen.
An diesem Punkt sind entweder alle Vorrichtungen deaktiviert oder
weisen einen geeigneten programmierten Vorrichtungsverzögerungswert auf,
so dass jede Vorrichtung in dem Kanal als Reaktion auf einen bestimmten Zyklus
nach der gleichen Anzahl von Buszyklen Daten an die Steuereinheit
zurückführt.
-
Offenbart
werden somit ein Verfahren und eine Vorrichtung zur Angleichung
von Übertragungsverzögerungen
für einen
Kanal von Vorrichtungen wie etwa von Speichervorrichtungen in einem
Speicherteilsystem. Vorstehend wurden bestimmte Ausführungsbeispiele
beschrieben, die in den beigefügten
Zeichnungen dargestellt sind, Wobei hiermit festgestellt wird, dass
diese Ausführungsbeispiele
ausschließlich
Zwecken der Veranschaulichung dienen, wobei für den Durchschnittsfachmann
auf dem Gebiet beim Lesen der vorliegenden Offenbarung verschiedene
andere Modifikationen ersichtlich werden.