-
HINTERGRUND DER ERFINDUNG
-
Die
Erfindung betrifft ein Speichersystem, insbesondere ein gepuffertes
Speichersystem, z.B. ein voll gepuffertes Speichersystem, ein Verfahren zum
Betreiben eines Speichersystems und eine Vorrichtung zur Verwendung
mit einem Speichersystem.
-
Im
Fall von herkömmlichen
Speichervorrichtungen, insbesondere herkömmlichen Halbleiter-Speichervorrichtungen,
unterscheidet man zwischen sogenannten funktionalen Speichervorrichtungen
(z.B. PLAs, PALs usw.) und sogenannten Tabellen-Speichervorrichtungen,
z.B. ROM-Vorrichtungen (ROM = Read Only Memory bzw. Festwertspeicher
- insbesondere PROMs, EPROMs, EEPROMs, EEPROMs, Flash-Speichern
usw.) und RAM-Vorrichtungen (RAM = Random Access Memory bzw. Speicher
mit wahlfreiem Zugriff- insbesondere z.B. DRAMs und SRAMs).
-
Eine
RAM-Vorrichtung ist ein Speicher zum Speichern von Daten unter einer
vorgegebenen Adresse und zum späteren
Auslesen der Daten unter dieser Adresse. Im Fall von SRAMs (SRAM
= Static Random Access Memory bzw. statischer Speicher mit wahlfreiem
Zugriff) bestehen die einzelnen Speicherzellen z.B. aus wenigen,
beispielsweise 6, Transistoren, und im Fall von sogenannten DRAMs (DRAM
= Dynamic Random Access Memory bzw. dynamischer Speicher mit wahlfreiem
Zugriff) im Allgemeinen nur aus einem einzigen, entsprechend gesteuerten
kapazitiven Element.
-
In
vielen Anwendungen werden mehrere RAMs auf einem einzigen, separaten
Speichermodul, z.B. einer separaten Speicherkarte, angeordnet. Ferner
können
mehrere dieser Module, die jeweils mehrere DRAMs einschließen, über ein
Bussystem mit einem entsprechenden Mikroprozessor oder Speicher-Controller
verbunden werden. Je höher
die Zahl der Speichermodule/DRAMs ist, die mit dem Mikroprozessor/Speicher-Controller
verbunden sind, und je höher
die Datenrate ist, desto schlechter ist jedoch die Qualität der Signale,
die zwischen den Speichermodulen/DRAMs und dem Mikroprozessor/Speicher-Controller
ausgetauscht werden.
-
Aus
diesem Grund werden sogenannte „gepufferte" Speichermodule verwendet,
z.B. sogenannte registrierte DIMMs. Gepufferte Speichermodule schließen zusätzlich zu
mehreren DRAMs eine oder mehrere Pufferkomponenten ein, die die
Signale von dem Mikroprozessor/Speicher-Controller empfangen und
diese zu dem jeweiligen DRAM weiterleiten (und umgekehrt). Somit
muss der entsprechende Speicher-Controller nur eine kapazitive Last
pro DIMM am Bus ansteuern.
-
Um
die Datenrate und/oder die Zahl der Speichermodule zu erhöhen, die
mit einem bestimmten Mikroprozessor/Speicher-Controller verbunden werden
können,
werden sogenannte FBDIMMs (voll gepufferte DIMMs) verwendet.
-
1 stellt
ein herkömmliches
Speichersystem 1 mit FBDIMMs 2a, 2b, 2c (voll
gepufferten DIMMs) dar. In dem Speichersystem 1, das in 1 dargestellt
ist, können
bis zu acht Speicherkarten/FBDIMMs 2a, 2b, 2c pro
Kanal mit einem Mikroprozessor/Speicher-Controller 4 verbunden
werden. Jeder FBDIMM 2a, 2b, 2c weist
eine Pufferkomponente 5a, 5b, 5c und
mehrere DRAMs 3a, 3b, 3c auf (aus Gründen der Übersichtlichkeit
ist in 1 nur ein DRAM pro Speicherkarte/FBDIMM 2a, 2b, 2c dargestellt).
Die FBDIMMs 2a, 2b, 2c können z.B.
in entsprechende Fassungen einer Hauptplatine gesteckt werden, die
z.B. auch den oben genannten Mikrorechner/Speicher-Controller 4 aufweist.
-
Wie
in 1 dargestellt, kann der Mikroprozessor/Speicher-Controller 4 über einen
ersten Bus 6a, der einen ersten Kanal („south-bound channel” (SB-Kanal))
und einen zweiten Kanal („north-bound channel” (NB-Kanal))
aufweist, mit einem ersten FBDIMM 2a der FBDIMMs 2a, 2b, 2c verbunden
werden. Der SB-Kanal des Busses 6a wird verwendet, um die
jeweiligen Adress-, Befehls- und Datensignale vom Mikroprozessor/Speicher-Controller 4 zur
Pufferkomponente 5a des ersten FBDIMM 2a zu senden.
Entsprechend wird auf ähnliche
Weise der NB-Kanal des Busses 6a verwendet, um entspre chende
Signale von der Pufferkomponente 5a des ersten FBDIMM 2a an
den Mikroprozessor/Speicher-Controller 4 zu senden.
-
Wie
weiter in 1 dargestellt ist, ist der erste
FBDIMM 2a der FBDIMMs 2a, 2b, 2c über einen zweiten
Bus 6b, der genau wie der Bus 6a einen ersten
Kanal („southbound
channel” (SB-Kanal))
und einen zweiten Kanal (north-bound channel" (NB-Kanal)) aufweist, mit einem zweiten
FBDIMM 2b der FBDIMMs 2a, 2b, 2c verbunden,
und der zweite FBDIMM 2b der FBDIMMs 2a, 2b, 2c ist über einen
dritten Bus 6c, der auch einen ersten Kanal („south-bound
channel” (SB-Kanal))
und einen zweiten Kanal („north-bound
channel” (NB-Kanal))
aufweist, mit einem dritten FBDIMM verbunden, usw. usw.
-
Die
FBDIMMs 2a, 2b, 2c arbeiten nach dem „Daist-Chain"-Prinzip. Die Pufferkomponente 5a des ersten
FBDIMM 2a der FBDIMMs 2a, 2b, 2c sendet die
entsprechenden Adress-, Befehls- und Datensignale, die über den
SB-Kanal des ersten Busses 6a vom Mikroprozessor/Speicher-Controller 4 empfangen
wurden – falls
nötig nach
einer entsprechenden Regenerierung – über den SB-Kanal des zweiten Busses 6b zur
Pufferkomponente 5b der zweiten FBDIMM 2b weiter.
Entsprechend sendet auf ähnliche Weise
die Pufferkomponente 5b des zweiten FBDIMM 2b der
FBDIMMs 2a, 2b, 2c die entsprechenden
Adress-, Befehls- und Datensignale, die über den SB-Kanal des zweiten
Busses 6b vom ersten FBDIMM 2a empfangen wurden – falls
nötig nach
einer entsprechenden Regenerierung – über den SB-Kanal des dritten
Busses 6c an die Pufferkomponente 5c des dritten
FBDIMM 2c usw. usw.
-
Umgekehrt
sendet dementsprechend die Pufferkomponente 5b des zweiten
FBDIMM 2b der FBDIMMs 2a, 2b, 2c die
entsprechenden Signale, die über
den NB-Kanal des dritten Busses 6c vom obigen dritten FBDIMM
empfangen wurden – falls
nötig nach
einer entsprechenden Regenerierung – über den NB-Kanal des zweiten
Busses 6b an die Pufferkomponente 5a des ersten
FBDIMM 2a weiter, und die Pufferkomponente 5a des
ersten FBDIMM 2a der FBDIMMs 2a, 2b, 2c sendet
die entsprechenden Signale, die über
den NB-Kanal des zweiten Busses 6b vom obigen zweiten FBDIMM 2b empfangen
wurden – falls
nötig nach
einer entsprechenden Regenerierung – über den NB-Kanal des ersten
Busses 6a zum Mikroprozessor/Speicher-Controller 4.
-
Wie
weiter in 1 dargestellt, ist jeder DRAM 3a, 3b, 3c über einen
Bus 7a, 7b, 7c, z.B. einen jeweiligen
Stub-Bus, mit der entsprechenden Pufferkomponente 5a, 5b, 5c verbunden.
-
Jede
der Pufferkomponenten 5a, 5b, 5c kennt
ihre Position in der oben genannten Daisy-Chain. Auf welche der
FBDIMMs 2a, 2b, 2c zu einer bestimmten
Zeit vom Speicher-Controller 4 zugegriffen wird, kann z.B.
in der entsprechenden Pufferkomponente 5a, 5b, 5c durch
Vergleich von Speichermodul-Identifizierungsdaten, die dort gespeichert
sind (z.B. einer „ID-Nummer") mit Identifizierungsdaten,
die vom Speicher-Controller 4 über die oben genannten Busse 6a, 6b, 6c gesendet
werden, bestimmt werden. In herkömmlichen
Systemen 1 kann zu einer bestimmten Zeit jeweils nur auf
einen der FBDIMMs 2a, 2b, 2c zugegriffen
werden, d.h. es ist kein paralleler Zugriff möglich.
-
Die
Pufferkomponente 5a, 5b, 5c eines FBDIMM 2a, 2b, 2c,
auf die zugegriffen wird, sendet nicht nur die empfangenen Adress-,
Befehls- und Datensignale über
einen entsprechenden SB-Kanal eines der Busse 6a, 6b, 6c zur
nächsten
Pufferkomponente in der Daisy-Chain weiter (wie oben erläutert), sondern
sendet die Signale (gegebenenfalls in umgewandelter Form) über den
oben genannten Stub-Bus 7a, 7b, 7c auch
an die DRAMs 3a, 3b, 3c weiter, die am
FBDIMM 2a, 2b, 2c, auf den zugegriffen
wird, vorgesehen sind. Ferner werden Signale, die von einer entsprechenden
Pufferkomponente 5a, 5b, 5c über den
oben genannten Stub-Bus 7a, 7b, 7c von
einem DRAM 3a, 3b, 3c, auf den zugegriffen wird,
weitergesendet werden (gegebenenfalls in umgewandelter Form), über einen
entsprechenden NB-Kanal eines der Busse 6a, 6b, 6c an
die vorangehende Pufferkomponente in der Daist-Chain (oder von der
Pufferkomponente 5a des Ersten von den FBDIMM 2a – an den
Speicher-Controller 4) weitergesendet.
-
Wie
in 1 dargestellt, können die Stub-Busse 7a, 7b, 7c der
FBDIMMs 2a, 2b 2c und die NB-Kanäle der Busse 6a, 6b, 6c z.B.
eine Datenbandbreite von 144 Bits pro DRAM-Taktperiode aufweisen,
und die SB-Kanäle
der Busse 6a, 6b, 6c, z.B. eine Datenbandbreite
von nur 72 Bits pro DRAM-Taktperiode, was zu einem Schreib/Lese-Verhältnis von
1:2 führt,
was die Statistik in typischen Speicherzugriffsmustern wiedergibt.
-
In
einem System, das dem Speichersystem 1 entspricht, das
in 1 dargestellt ist, könnten selbst schnellere Speicher-Controller 4,
schnellere Busse 6a, 6b, 6c und 7a, 7b, 7c und
schnellere Pufferkomponenten 5a, 5b, 5c trotzdem
nicht zu einer erhöhten Gesamtleistung
führen.
Aus diesen und anderen Gründen
besteht ein Bedarf an der vorliegenden Erfindung.
-
KURZE ZUSAMMENFASSUNG DER
ERFINDUNG
-
Gemäß einer
Ausführungsform
der Erfindung weist ein Speichersystem Folgendes auf: ein erstes
gepuffertes Speichermodul und ein zweites gepuffertes Speichermodul,
wobei die ersten und zweiten gepufferten Speichermodule für einen
parallelen Zugriff ausgelegt sind. Gemäß einer weiteren Ausführungsform
der Erfindung wird eine Vorrichtung geschaffen, die dafür ausgelegt
sind, konsekutive Zugriffe auf ein erstes oder ein zweites gepuffertes Speichermodul
auf einen parallelen Zugriff auf sowohl das erste als auch das zweite
Speichermodul zu übertragen
bzw. zu mappen. Weitere Merkmale und Vorteile der vorliegenden Erfindung
werden aus der folgenden ausführlichen
Beschreibung der Erfindung, die auf die begleitende Zeichnung Bezug nimmt,
deutlich.
-
KURZE BESCHREIBUNG DER MEHREREN
FIGUREN DER ZEICHNUNG
-
Die
begleitende Zeichnung ist eingeschlossen, um ein weiteres Verständnis der
vorliegenden Erfindung zu ermöglichen,
und ist in diese Patentschrift aufgenommen und bildet einen Teil
davon. Die Zeichnung stellt Ausführungsformen
der vorliegenden Erfindung dar und dient zusammen mit der Beschreibung
dazu, die Grundlagen der Erfindung zu erläutern. Andere Ausführungsformen
der vorliegenden Erfindung und viele der beabsichtigten Vorteile der
vorliegenden Erfindung werden leicht zu würdigen sein, da sie durch Bezug
auf die folgende ausführliche
Beschreibung besser verständlich
werden.
-
1 stellt
ein herkömmliches
Speichersystem mit gepufferten Speichermodulen dar.
-
2 stellt
ein Speichersystem mit gepufferten Speichermodulen gemäß einer
Ausführungsform der
vorliegenden Erfindung dar.
-
3 stellt
ein Zeitsteuerungsschema von Signalen dar, die in dem in 2 dargestellten
Speichersystem verwendet werden könnten.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
In
der folgenden ausführlichen
Beschreibung wird auf die begleitende Zeichnung Bezug genommen,
die einen Teil hiervon bildet und in der zur Erläuterung spezielle Ausführungsformen
dargestellt sind, in denen die Erfindung umgesetzt werden kann.
Es sei darauf hingewiesen, dass andere Ausführungsformen verwendet werden
können
und strukturelle und andere Änderungen
gemacht werden können, ohne
vom Bereich der Erfindung abzuweichen. Die folgende ausführliche
Beschreibung soll daher nicht beschränkend aufgefasst werden, und
der Bereich der vorliegenden Erfindung wird in den beigefügten Ansprüchen definiert.
-
2 stellt
ein Speichersystem 11 mit gepufferten Speichermodulen 12a, 12b, 12c gemäß einer Ausführungsform
der vorliegenden Erfindung dar.
-
Wie
in 2 dargestellt ist, können mehrere, z.B. mehr als
drei, sieben oder fünfzehn,
z.B. bis zu acht Speichermodule 12a, 12b, 12,
z.B. entsprechende Speicherkarten/FBDIMMs (voll gepufferte bzw.
Fully Buffered DIMMs) 12a, 12b 12c pro
Kanal mit einem Speicher-Controller 14 verbunden werden. Der
Speicher-Controller 14 kann wiederum über einen oder mehrere Busse
mit einem oder mehreren Mikroprozessoren (nicht dargestellt) verbunden
werden. Aus Gründen
der Einfachheit stellt 2 nur einen einzigen Kanal dar.
Das System 11 kann mehr als den einen Kanal aufweisen,
der in 2 dargestellt ist, z.B. mehr als zwei oder vier
Kanäle,
die jeweils – genau
wie der in 2 dargestellte Kanal – bis zu
acht Speichermodule/FBDIMMs (Fully Buffered DIMMs) aufweisen.
-
Jeder
FBDIMM 12a, 12b, 12c weist eine oder
mehrere Pufferkomponenten 15a, 15b, 15c und eine
oder mehrere RAM-Vorrichtungen 13a, 13b, 13c auf,
genauer z.B. DRAMs oder SRAMs, hier: SDRAMs, z.B. mehr als drei,
sieben oder fünfzehn, beispielsweise
acht DRAMs (aus Gründen
der Einfachheit ist in 2 nur ein DRAM pro Speicherkarte/FBDIMM 12a, 12b, 12c dargestellt).
-
Jeder
DRAM kann z.B. eine Speicherkapazität von z.B. 128 MBit, 256 MBit,
512 MBit, 1 GBit, 2 GBit usw. (oder mehr) haben; die gesamte Speicherkapazität, die von
einem entsprechenden FBDIMM 12a, 12b, 12c bereitgestellt
wird, hängt
von der Zahl der DRAMs ab, die auf einem FBDIMM vorgesehen sind,
und von der Speicherkapazität
der einzelnen DRAMs, und ist beispielsweise 1 GByte, 2 GByte usw.
(oder mehr).
-
Die
FBDIMMs 12a, 12b, 12c können z.B.
in entsprechende Fassungen einer Mutterplatine eingesteckt werden,
die z.B. auch den oben genannten Speicher-Controller 14 und/oder
den bzw. die oben genannte(n) Mikroprozessor(en) aufweisen kann.
-
Wie
in 3 dargestellt und nachstehend näher beschrieben
ist, und anders als in herkömmlichen
Speichersystemen, wie z.B. dem in 1 dargestellten,
kann mit dem Speichersystem 11, das in 2 dargestellt
ist, auf mehrere der FBDIMMs 12a, 12b, 12c – z.B. zwei
oder mehr FBDIMMs 12a, 12b, 12c eines
einzigen Kanals – durch
den bzw. die oben genannten Controller 14/Mikroprozessor(en)
gleichzeitig zugegriffen werden – anders ausgedrückt, ein paralleler
(Lese- und/oder Schreib-) Zugriff auf FBDIMMs 12, 12b, 12c ist
möglich.
-
Genauer
kann beispielsweise gleichzeitig/parallel ein „Lese"-Zugriff an zwei oder mehr der FBDIMMs 12a, 12b, 12c durchgeführt werden.
-
Entsprechend
könnte
auf ähnliche
Weise beispielsweise ein „Schreib"-Zugriff an zwei
oder mehr der FBDIMMs 12a, 12b, 12c gleichzeitig/parallel
durchgeführt
werden.
-
Wie
in 2 dargestellt und genau wie in herkömmlichen
Systemen, kann der Speicher-Controller 14 über einen
ersten Bus 16a, der an der oben genannten Mutterplatine
vorgesehen ist, der einen ersten Kanal („south-bound channel” (SB-Kanal)) und
einen zweiten Kanal („north-bound
channel” (NB-Kanal))
aufweist, mit einem ersten FBDIMM 12a („DIMM 1”) der FBDIMMs 12a, 12b, 12c verbunden sein.
Der SB-Kanal des Busses 16a wird verwendet, um entsprechende
Adress-, Befehls- und Datensignale vom Speicher-Controller 14 (und/oder dem
bzw. den oben genannten Mikroprozessor(en)) zur Pufferkomponente 15a des
ersten FBDIMM 12a zu senden. Entsprechend wird auf ähnliche
Weise der NB-Kanal des Busses 16a verwendet, um entsprechende
Signale von der Pufferkomponente 15a des ersten FBDIMM 12a zum
Speicher-Controller 14 (und/oder dem bzw. den oben genannten
Mikroprozessor(en)) zu senden.
-
Wie
weiter in 2 dargestellt ist, ist der erste
FBDIMM 12a der FBDIMMs 12a, 12b, 12c über einen
zweiten Bus 16b, der genau wie der Bus 16a einen
ersten Kanal („south-bound
channel” (SB-Kanal))
und einen zweiten Kanal („north-bound
channel” (NB-Kanal))
aufweist, mit einem zweiten FBDIMM 12b („DIMM 2") der FBDIMMs 12a, 12b, 12c verbunden,
und der zweite FBDIMM 12b der FBDIMMs 12a, 12b, 12c ist über einen
dritten Bus 16c (der auch einen ersten Kanal („south-bound
channel” (SB-Kanal))
und einen zweiten Kanal („north-bound
channel” (NB-Kanal))
aufweist, mit einem dritten FBDIMM verbunden usw., usw.
-
Gemäß 2 weist
das Speichersystem 11 zusätzlich zu den oben genannten
FBDIMMs 12a, 12b, 12c und dem Speicher-Controller 14 eine
Taktvorrichtung 20 und einen Systemtakterzeuger 21 auf. Die
Taktvorrichtung 20 erzeugt ein zentrales Taktsignal, das über Leitungen 20a, 20b an
den Speicher-Controller 14 bzw. den Systemtakterzeuger 21 ausgegeben
wird. Der Systemtakterzeuger 14 erzeugt aus dem zentralen
Taktsignal, das vom Takterzeuger 20 erzeugt wurde, individuelle
Taktsignale für den
Speicher-Controller und jeden der FBDIMMs 12a, 12b, 12c (die über individuelle
Leitungen 21a, 21b, 21c, 21d vom
Systemtakterzeuger 21 zum Speicher-Controller 14,
dem ersten FBDIMM 12a, dem zweiten FBDIMM 12b usw.
ausgegeben werden). Die zeitliche Steuerung der Taktsignale, die
vom Systemtakterzeuger 21 über die oben genannten Leitungen 21a, 21b, 21c, 21d ausgegeben
werden, könnte
so sein, dass jeweils positive/negative Flanken der Taktsignale
zu identischen Zeitpunkten auftreten können, oder sie könnten leicht
zueinander versetzt sein, wobei trotzdem – wie in 3 dargestellt – für das gesamte
Speichersystem 11, d.h. jeden der FBDIMMs 12a, 12b, 12c,
ebenso wie für
den Speicher-Controller 14 ein einzigartiges gemeinsames
Zeitsteuerungsschema definiert werden (folgende einzigartige gemeinsame
Taktperioden A, B, C, D, E, F, G usw., usw. für jeden der FBDIMMs 12, 12b, 12c,
ebenso wie für
den Speicher-Controller 14, d.h. das gesamte System 11,
definiert werden, wobei jede der Taktperioden A, B, C, D, E, F,
G usw., usw. eine entsprechende Taktzykluszeit 1 tCK dauert). Es
sind auch viele andere Möglichkeiten,
die jeweiligen Taktsignale und/oder ein einzigartiges gemeinsames
Zeitsteuerungsschema zu erzeugen/zu schaffen, denkbar. Beispielsweise
könnte
der Speicher-Controller 14 ein Taktsignal erzeugen, das
an den ersten FBDIMM 12a ausgegeben wird, von wo das Taktsignal – falls
nötig nach
einer entsprechenden Regenerierung – an den zweiten FBDIMM 12b ausgegeben
wird, und vom zweiten FBDIMM 12b an den dritten FBDIMM
usw. usw.
-
Die
FBDIMMs 12a, 12b, 12c arbeiten gemäß dem „Daist-Chain"-Prinzip. Die Pufferkomponente 15a des
ersten FBDIMM 12a der FBDIMMs 12a, 12b, 12c sendet
die jeweiligen Adress-, Befehls- und Datensignale, die über den
SB-Kanal des ersten Busses 16a vom Mikroprozessor/Speicher-Controller 14 empfangen
werden – falls
nötig nach
einer entsprechenden Regenerierung – über den SB-Kanal des zweiten
Busses 16b an die Pufferkomponente 15b des zweiten
FBDIMM 12b. Dementsprechend leitet auf ähnliche Weise die Pufferkomponente 15b des zweiten
FBDIMM 12b der FBDIMMs 12a, 12b, 12c die
jeweiligen Adress-, Befehls- und Datensignale, die über den „SB-Kanal" des zweiten Busses 16b vom
ersten FBDIMM 12a empfangen werden – falls nötig nach einer entsprechenden
Regenerierung – über den
SB-Kanal des dritten Busses 16c an die Pufferkomponente 15c des
dritten FBDIMM 12c, usw. usw.
-
Entsprechend
sendet umgekehrt die Pufferkomponente 15b des zweiten FBDIMM 12b der
FBDIMMs 12a, 12b, 12c die entsprechenden
Signale, die über
den NB-Kanal des dritten Busses 16c vom oben genannten
dritten FBDIMM empfangen wurden – falls nötig nach einer entsprechenden
Regenerierung – über den
NB-Kanal des zweiten Busses 16b an die Pufferkomponente 15a des
ersten FBDIMM 12a weiter, und die Pufferkomponente 15a des
ersten FBDIMM 12a der FBDIMMs 12a, 12b, 12c sendet
die entsprechenden Signale, die über
den NB-Kanal des zweiten Bus 16b vom oben genannten zweiten
FBDIMM 12b empfangen wurden – falls nötig nach einer entsprechenden
Regenerierung – über den
NB-Kanal des ersten
Busses 16a an den Mikroprozessor/Speicher-Controller 14 weiter.
-
Wie
nachstehend ausführlicher
beschrieben wird, senden der Speicher-Controller 14 und
jede der Pufferkomponenten 15a, 15b, 15c die
oben genannten Signale (Daten- und/oder
Adress- und/oder Befehlssignale) auf den entsprechenden SB- und NB-Leitungen
der oben genannten Busse 16a, 16b und 16c mit
Bezug auf die Zeitsteuerung, die von dem oben genannten einzigartigen
gemeinsamen Zeitsteuerungsschema des Speichersystems 11 bereitgestellt
wird, das von den oben genannten Taktsignalen, die vom Systemtakterzeuger 21 geliefert werden,
definiert wird, auf den oben genannten Leitungen 21a, 21b, 21c, 21d aus
(d.h. in Bezug auf die einzigartigen gemeinsamen Taktperioden A,
B, C, D, E, F, G usw., die von den Taktsignalen definiert werden,
und wie in 3 dargestellt).
-
Wie
weiter in 2 dargestellt ist und entsprechend ähnlich wie
es in herkömmlichen
Speichersystemen der Fall ist, ist jede der RAM-Vorrichtungen, genauer
z.B. DRAMs oder SRAMs, hier: SDRAMs 13a, 13b, 13c,
die an den oben genannten FBDIMMs 12a, 12b, 12c vorgesehen
sind, über
einen Bus 17a, 17b, 17c, z.B. einen entsprechenden Stub-Bus,
mit der bzw. den entsprechenden Pufferkomponente(n) 15a, 15b, 15c verbunden,
die an einem entsprechenden FBDIMM 12a, 12b, 12c vorgesehen
sind.
-
Gemäß 2 können die
Stub-Busse 17a, 17b, 17c an den FBDIMMs 12a, 12b, 12c und
die SB-Kanäle
der Busse 16a, 16b, 16c z.B. die gleiche Datenbandbreite
von 144 Bits pro DRAM-Taktperiode aufweisen. Ferner könnten die
NB-Kanäle
der Busse 16a, 16b, 16c z.B. eine größere Datenbandbreite
aufweisen als die SB-Kanäle
und die Stub-Busse 17a, 17b, 17c an
den FBDIMMs 12a, 12b, 12c, z.B. die doppelte
Datenbandbreite der SB-Kanäle
und der Stub-Busse 17a, 17b, 17c, z.B. eine
Datenbandbreite von 288 Bits pro DRAM-Taktperiode.
-
Jede
Pufferkomponente 15a, 15b, 15c der FBDIMMs 12a, 12b, 12c kennt
ihre Position in der oben genannten Daist-Chain. Auf welchen der
FBDIMMs 12a, 12b, 12c zu einer bestimmten
Zeit vom Speicher-Controller 14 zugegriffen wird, kann
z.B. in der entsprechenden Pufferkomponente 15a, 15b, 15c durch
Vergleich von Speichermodul-Identifizierungsdaten, die dort gespeichert
sind (z.B. eine „ID-Nummer"), mit Identifizierungsdaten,
die vom Speicher-Controller 14 über die oben genannten Busse 16a, 16b, 16c,
z.B. über
eine oder mehrere separate Adress- und/oder Befehlsleitungen der oben
genannten Busse 16a, 16b, 16c gesendet
werden, bestimmt werden.
-
Wie
oben angegeben, kann mit dem in 2 dargestellten
Speichersystem 11 auf mehrere der FBDIMMs 12a, 12b, 12c,
z.B. zwei oder mehrere der FBDIMMs 12a, 12b, 12c eines
einzigen Kanals, durch den bzw. die oben genannten Speicher-Controller 14/Mikroprozessor(en)
gleichzeitig zugegriffen werden – anders ausgedrückt ist
ein paralleler (Lese- und/oder Schreib-) Zugriff auf die FBDIMMs 12a, 12b, 12c möglich.
-
Beispielsweise
werden, wie in 3 dargestellt, um zwei oder
mehr parallele „Lese"-Zugriffe auf zwei
oder mehr der FBDIMMs 12a, 12b, 12c parallel durchzuführen, die
zwei oder mehr FBDIMMs 12a, 12b, 12c,
auf die parallel zugegriffen werden soll (z.B. der erste FBDIMM 12a („DIMM 1") und der zweite
FBDIMM 12b („DIMM
2")), gleichzeitig
durch entsprechende „Aktivierungs"-Befehle ACT1, ACT", die vom Speicher-Controller 14 auf
den oben genannten SB-Kanälen
der Busse 16a, 16b, 16c parallel versendet
werden (d.h. in der gleichen Taktperiode der oben genannten Taktperioden
A, B, C, D, E, F, G (hier: z.B. in der Taktperiode B)), aktiviert.
-
Zusammen
mit den oben genannten „Aktivierungs"-Befehlen ACT1, ACT2
können,
z.B. auch in der oben genannten Taktperiode B, „ID-Nummern", die die FBDIMMs 12a, 12b, 12c,
auf die parallel zugegriffen werden soll, identifizieren, vom Speicher-Controller 14 auf
den oben genannten SB-Kanälen
der Busse 16a, 16b, 16c versendet werden (hier
z.B. eine erste ID-Nummer, um den erste FBDIMM 12a („DIMM 1") zu identifizieren,
und eine zweite ID-Nummer, um den zweiten FBDIMM 12b („DIMM 2") zu identifizieren,
auf den parallel zur ersten FBDIMM 12a zugegriffen werden
soll).
-
Wie
oben angegeben, bestimmen die Pufferkomponenten 15a, 15b, 15c der
FBDIMMs 12a, 12b, 12c, ob auf sie zu
einer bestimmten Zeit zugegriffen werden soll, indem sie die ID-Nummer,
die dort gespeichert ist, mit der ID-Nummer vergleichen, die vom
Speicher-Controller 14 versendet wird.
-
Nachdem
eine bestimmte Speicherkomponente 15a, 15b, 15c (hier:
die Speicherkomponente 15a des ersten FBDIMM 12a und
die Speicherkomponente 15b des zweiten FBDIMM 12b)
bestimmt hat, dass auf den entsprechenden FBDIMM 12a, 12b, 12c zugegriffen
werden soll, sendet die entsprechende Pufferkomponente (hier: z.B.
die Pufferkomponente 15a des ersten FBDIMM 12a und
die Pufferkomponente 15b des zweiten FBDIMM 12b)
nicht nur die Adress-, Befehls- und Datensignale, die über einen
entsprechenden SB-Kanal eines der Busse 16a, 16b, 16c empfangen
werden, an die nächste
Pufferkomponente in der Daist-Chain weiter (wie oben erläutert wurde),
sondern sendet auch die Signale (gegebenenfalls in umgewandelter
Form) über
die oben genannten Stub-Busse (hier: den Stub-Bus 17b des zweiten
FBDIMM 12b) an die RAMs (hier: die RAMs 13a, 13b),
die an den FBDIMMs, auf die zugegriffen wird (hier: den FBDIMMs 12a, 12b))
vorgesehen sind, weiter.
-
Wie
in 3 weiter dargestellt ist, werden, nachdem eine
vorgegebene Zeit Δt_ACT
seit den oben genannten „Aktivierungs"-Befehlen ACT1, ACT2
vergangen ist, entsprechende „Lese"-Befehle RD1, RD2
vom Speicher-Controller 14 auf den oben genannten SB-Kanälen der
Busse 16a, 16b, 16c parallel ausgesendet
(d.h. in der gleichen Taktperiode von den oben genannten Taktperioden
A, B, C, D, E, F, G (hier: z.B. in der Taktperiode D, d.h. eine
Taktzykluszeit 1 tCK nach den „Aktivierungs"-Befehlen ACT1, ACT2)).
-
Zusammen
mit und/oder nach den oben genannten „Lese"-Befehlen RD1, RD2 können entsprechende Zeilen-
und/oder Spaltenadressen vom Speicher-Controller 14 auf
den oben genannten SB-Kanälen
der Busse 16a, 16b, 16c (hier z.B. eine
erste Zeilen- und/oder
Spaltenadresse für
den ersten FBDIMM 12a („DIMM 1") und eine zweite Zeilen- und/oder Spaltenadresse
für den
zweiten FBDIMM 12b („DIMM
2")) versendet
werden. Die Adressen für den
ersten und den zweiten FBDIMM 12a, 12b können z.B.
hintereinander versendet werden, d.h. zu unterschiedlichen Taktperioden,
oder vorzugsweise in gleichen oder entsprechenden Taktperioden (z.B. die
Zeileadressen für
die ersten und zweiten FBDIMMs 12a, 12b in einer
ersten Taktperiode und die Spaltenadressen für die ersten und zweiten FBDIMMs 12a, 12b in
einer zweiten, anschließenden Taktperiode).
-
Als
Antwort auf die „Lese"-Befehle RD1, RD2 und
die oben genannten Reihen- und/oder
Spaltenadressen führen
die Pufferkomponenten 15a, 15b der FBDIMMs 12a, 12b,
auf die zugegriffen wird – entsprechend ähnlich wie
in herkömmlichen
Speichersystemen – durch
Aussenden entsprechender Befehls- und Adresssignale an die oben
genannten Stub-Busse 17a, 17b einen entsprechenden „Lese"-Zugriff auf einen
entsprechenden RAM (hier: den RAM 13a und den RAM 13b))
der FBDIMMs 12a, 12b aus. Als Antwort darauf werden
die Daten aus den RAMs 13a, 13b (hier: die Daten
DQ1,0, DQ1,1, DQ1,2, DQ1,3 aus dem
RAM 13a und die Daten DQ2,0, DQ2 ,1, DQ2 , 2, DQ2 , 3 aus dem RAM 13b)
ausgelesen und von den RAMs 13a, 13b über den
entsprechenden Stub-Bus 17a, 17b an die entsprechende
Pufferkomponente (hier: die Pufferkomponenten 15a, 15b) versendet.
Wie aus 3 hervorgeht, kann das Auslesen
der Daten in sowohl dem FBDIMM 12a als auch dem FBDIMM 12b parallel
zu einer vorgegebenen Zeit Δt_RD
nach Aussendung der oben genannten „Lese"-Befehlen RD1, RD1 vom Speicher-Controller 14 (d.h.
beginnend zur gleichen Taktperiode von den oben genannten Taktperioden
A, B, C, D, E, F, G (hier: z.B. zur Taktperiode F, d.h. eine Taktzykluszeit
1 tCK nach den „Lese"-Befehlen RD1, RD2)) durchgeführt werden.
Wie weiter aus 3 hervorgeht, kann das Auslesen
der Daten (hier: der Daten DQ1,0, DQ1,1, DQ1,2, DQ1,3 und der Daten DQ2,0,
DQ2 ,1, DQ2,2, DQ2 , 3) im Zeitmultiplex-Verfahren durchgeführt werden
und mehrere Zykluszeiten 1 tCK (hier: zwei Zykluszeiten tCK, d.h.
eine Zeitperiode ΔT)
dauern.
-
Nach
dem Auslesen der entsprechenden Daten (hier: der oben genannten
Daten DQ2,0, DQ2,1, DQ2 , 2,
DQ2 , 3)
aus dem jeweiligen RAM (hier: dem RAM 13b) sendet die Pufferkomponente 15b des zweiten
FBDIMM 12b die Daten über
den NB-Kanal des Busses 16b an die vorhergehende Pufferkomponente
in der Daist-Chain (hier: die Pufferkomponente 15a des
ersten FBDIMM 12a). Ferner sendet, ebenfalls nach dem Auslesen
der entsprechenden Daten (hier z.B. der oben genannten Daten DQ1,0, DQ1,1, DQ1,2, DQ1,3) aus dem
entsprechenden RAM (hier: dem RAM 13a) – und nach Empfangen der Daten (hier
z.B. der oben genannten Daten DQ2,0, DQ2 ,1, DQ2 , 2, DQ2 , 3) von der Pufferkomponente 15b des zweiten
FBDIMM 12b – die
Pufferkomponente 15a des ersten FBDIMM 12a, bei
der es sich um die erste Pufferkomponente in der Daist-Chain handelt,
die Daten, die von der Pufferkomponente 15b und vom RAM 13a empfangen
werden (d.h. die Daten DQ1,0, DQ1,1, DQ1,2, DQ1,3 und die Daten DQ2,0,
DQ2,1, DQ2,2, DQ2,3) in einem Zeitmultiplex-Modus über den NB-Kanal
des Busses 16a zum Speicher-Controller 14. Wie
aus 3 ersichtlich ist, kann das Versenden der Daten
(d.h. der Daten DQ1,0, DQ1 ,1, DQ1,2, DQ1,3 und/oder DQ2,0,
DQ2,1, DQ2,2, DQ2,3) über
die Busse 16a, 16b parallel zu einer vorgegebenen,
festgelegten Zeit. Δt_DQ
nach Versenden der oben genannten „Lese"-Befehle RD1, RD1 durch den Speicher-Controller 14 (d.h.
beginnend mit der gleichen Taktperiode der oben genannten gemeinsamen
Taktperioden A, B, C, D, E F, G (hier: z.B. der Taktperiode G, d.h.
zwei Taktzykluszeiten 1 tCK nach den „Lese"-Befehlen RD1, RD2)) durchgeführt werden.
Wie weiter aus 3 ersichtlich ist, kann das
Versenden der Daten (hier: der Daten DQ1,0,
DQ1,1, DQ1,2, DQ1,3 und der Daten DQ2,0,
DQ2,1, DQ2 , 2, DQ2 , 3) über die Busse 16a, 16b mehrere
Zykluszeiten dauern (hier: zwei Zykluszeiten 1 tCK, d.h. eine Zeitperiode ΔT), wodurch
die Zahl der Zykluszeiten/die Zeitperiode ΔT, während der die Daten (hier:
die Daten DQ1,0, DQ1,1,
DQ1,2, DQ1,3) über die
Busse 16a, 16b versendet werden, der oben genannten
Zahl von Zykluszeiten/der oben genannten Zeitperiode ΔT entspricht, während der
die Daten von den Pufferkomponenten 15a, 15b aus
den RAMs 13a, 13b ausgelesen werden.
-
Typische
Speicherzugriffsmuster typischer Programme, die in dem bzw. den
oben genannten Prozessore(en), der bzw. die mit dem Speicher-Controller 14 verbunden
ist bzw. sind, durchgeführt
werden, führen
häufig
zu einem konsekutiven Zugriff auf benachbarte oder nahe gelegene
Speicherorte (z.B. Speicherzellen, die zu einer einzigen Zeile von
Speicherzellen eines einzigen RAM, der sich an einem einzigen FBDIMM
befindet).
-
In
einer bevorzugten Ausführungsform
der Erfindung kann der Speicher-Controller 14 solch einen
konsekutiven Zugriff auf benachbarte oder nahe gelegene Speicherorte
eines einzigen RAM, der sich auf einem einzigen FBDIMM befindet
(oder allgemeiner: einen konsekutiven Zugriff auf einen einzigen FBDIMM)
auf Zugriffe auf verschiedene RAMs, die sich an verschiedenen FBDIMMs
befinden, übertragen
bzw. mappen.
-
Vorzugsweise
können
konsekutive Lese- (und/oder Schreib-) Zugriffe auf benachbarte oder nahe
gelegene Speicherorte eines einzigen RAM, der sich auf einem einzigen
FBDIMM befindet (oder konsekutive Lese- (und/oder Schreib-) Zugriffe
auf einen einzigen FBDIMM) vom Speicher-Controller 14 in
die oben genannten parallelen (Lese- und/oder Schreib-) Zugriffe auf zwei
oder mehr verschiedene FBDIMMs 12a, 12b, 12c,
die oben beschrieben wurden (z.B. im Zusammenhang mit 3) übertragen werden.
-
Zu
diesem Zweck können
geeignete physische Adress-Mapping- und/oder -Zeitvergabetechniken
vom Speicher-Controller 14 angewendet werden.
-
Falls
der bzw. die Prozessor(en) konsekutive Lese- (und/oder Schreib-)
Zugriffe auf benachbarte oder nahe gelegene Speicherorte eines einzigen RAM,
der sich an einem einzigen FBDIMM befindet (oder konsekutive Lese-
(und/oder Schreib-) Zugriffe auf einen einzigen FBDIMM), ausgeben,
können
Teile der entsprechenden Zeilen- und/oder Spaltenadresse, die von
dem bzw. den Prozessor(en) verwendet werden, um eine entsprechende
Speicherzelle an einem einzigen RAM zu spezifizieren (oder Teile
einer anderen Adresse, die verwendet wird, um eine Speicherzelle
in einem einzigen FBDIMM zu spezifizieren), vom Speicher-Controller 14 stattdessen
als die oben genannte „ID-Nummer" (oder als Teil der oben
genannten ID-Nummer) verwendet werden, die vom Speicher-Controller 14 auf
den oben genannten SB-Kanälen
der Busse 16a, 16b, 16c versendet wird, um
den entsprechenden FBDIMM oder die entsprechenden FBDIMMs 12a, 12b, 12,
auf die zugegriffen werden soll, zu identifizieren. Vorzugsweise
kann bzw. können
das bzw. die am wenigsten signifikante(n) Bit(s) der obigen Adresse,
z.B. der Zeilen- und/oder Spaltenadresse, für diesen Zweck verwendet werden
(z.B. das eine, die zwei oder drei am wenigsten signifikanten Bits
der Adresse).
-
Dadurch
wird sichergestellt, dass konsekutive Lese- und/oder Schreib)-Zugriffe
auf benachbarte oder nahe gelegene Speicherorte eines einzigen RAM
oder eines einzigen FBDIMM vom Speicher-Controller 14 in
Zugriffe auf verschiedene FBDIMMs (die wie oben angegeben vorzugsweise
parallel ausgeführt
werden) übertragen
bzw. gemappt werden können.
-
Alternativ
oder zusätzlich
kann eine Zeitvergabetechnik im Speicher-Controller angewendet werden,
die konsekutive Zugriffe auf einen einzigen FBDIMM vermeidet.
-
Wenn
beispielsweise gemäß den Befehlen, die
von dem bzw. den Prozessor(en) ausgegeben werden, konsekutive Lese-
(und/oder Schreib-) Zugriffe auf benachbarte oder nicht-benachbarte
Speicherorte an einem einzigen RAM oder einem einzigen FBDIMM durchgeführt werden
sollen, wird vom Speicher-Controller 14 eine neue Zeitvergabe
durchgeführt.
Selbst wenn entsprechend den Befehlen, die von dem bzw. den Prozessoren)
ausgegeben werden, z.B. zuerst ein Zugriff auf einen ersten FBDIMM 12a ausgeführt werden
soll, dann erneut ein Zugriff auf den ersten FBDIMM 12a (der
auf den gleichen, d.h. einen ersten, oder einen anderen RAM bezogen ist
(oder auf benachbarte oder nicht-benachbarte Speicherorte)) und
dann ein Zugriff auf einen zweiten FBDIMM 12b und dann
erneut ein Zugriff auf den zweiten FBDIMM 12b (der auf
den gleichen, d.h. einen ersten, oder einen anderen RAM bezogen
ist (oder auf benachbarte oder nicht-benachbarte Speicherorte)),
führt der
Speicher-Controller 14 eine neue Zeitvergabe durch, so
dass z.B. zuerst ein erster paralleler Zugriff auf sowohl den ersten
FBDIMM 12a als auch den zweiten FBDIMM 12b durchgeführt wird (z.B.
auf die oben genannten ersten RAMs) und danach ein zweiter paralleler
Zugriff auf wiederum sowohl den ersten FBDIMM 12a als auch
den zweiten FBDIMM 12b durchgeführt wird (z.B. wiederum auf die
oben genannten ersten oder auf die oben genannten anderen RAMs).
Zu diesem Zweck bestimmt der Speicher-Controller 14 in
einem ersten Schritt, ob ein konsekutiver Zugriff auf einen einzigen
FBDIMM gerichtet ist oder nicht, und wenn bestimmt wird, dass konsekutive
Zugriffe auf einen einzigen FBDIMM gerichtet sind, führt er in
einem zweiten Schritt eine entsprechende neue Zeitvergabe durch,
um konsekutive Zugriffe auf einen einzigen FBIMM zu vermeiden, d.h.
statt dessen durch eine Durchführung
des oben genannten parallelen Zugriffs auf verschiedene FBDIMMs.
-
Der
oben genannte parallele (Lese- und/oder Schreib-) Zugriff in einer
weiteren Variante der Erfindung kann auch verwendet werden, um RAM-Burst-Zugriffe
mit höherer
I/O-Geschwindigkeit und größerer Burst-Länge als
sie für
die RAMs 13a, 13b, 13c an den FBDIMMs 12a, 12b, 12c bereitgestellt
werden, zu übertragen.
-
Ein
Burst-Lese- oder Schreib-Zugriff des bzw. der Prozessor(en) auf
einen einzigen RAM eines einzigen FBDIMM, der auf eine erste Burst-Länge gerichtet
ist, kann von dem Speicher-Controller in den oben genannten parallelen
Lese- oder Schreibzugriff an zwei anderen RAMs an zwei anderen der oben
(z.B. im Zusammenhang mit 3) beschriebenen
FBDIMMs mit einer zweiten, anderen Burst-Länge (z.B. der halben Burst-Länge wie
von dem bzw. den Prozessor(en) spezifiziert) übertragen werden.
-
Obwohl
hierin spezielle Ausführungsformen dargestellt
und beschrieben wurden, weiß der
Fachmann, dass eine Reihe von alternativen und/oder äquivalenten
Implementierungen statt der dargestellten und beschriebenen Implementierungen
verwendet werden können,
ohne vom Bereich der vorliegenden Erfindung abzuweichen. Diese Anmeldung
soll jegliche Adaptionen und Variationen der jeweiligen Ausführungsformen,
die hierin erörtert
sind, abdecken. Daher soll diese Erfindung nur durch die Ansprüche und
ihre Äquivalente
begrenzt werden.