-
Die Erfindung betrifft einen Pufferbaustein zum
Ansteuern von einer oder mehreren angeschlossenen Speicheranordnungen.
Die Erfindung betrifft weiterhin ein Verfahren zum Betreiben eines
Pufferbausteins für
schnelle Speicherarchitekturen wie beispielsweise DDR-III-Speicherbausteine.
-
Für
sehr schnelle und hochdichte Speicherarchitekturen, wie sie beispielsweise
für DDR-III-Speicherbausteine
benötigt
werden, werden so genannte Pufferbausteine eingesetzt. Die Pufferbausteine
ermöglichen
es, den so genannten "Stub-Bus", wie er heute bei
DDR- und DDR-II-Speicherbausteinen verwendet wird, zu ersetzen,
und stattdessen ein hierarchisches Bussystem, bei dem nur noch Punkt-zu-Punkt-(P2P)-
oder Punkt-zu-2-Punkt-(P22P)-Verbindungen
vorkommen, zu verwenden. Derartige Datenverbindungen erlauben Datentransferraten
bis weit über
einen GBPS hinaus. Durch eine Kaskadierung ist es darüber hinaus
möglich,
viele Pufferbausteine aneinander zu ketten und Speichersysteme mit
einer sehr hohen Anzahl von Speicherbausteinen an nur einem Speicherhauptbus
zu realisieren.
-
An die Pufferbausteine sind üblicherweise eine
oder mehrere Speicheranordnungen angeschlossen, wobei der Pufferbaustein
Befehle und Daten über
die P2P-Datenverbindung empfängt,
diese parallelisiert und an die entsprechende angeschlossene Speicheranordnung
weiterleitet. Beim Auslesen werden Daten aus der entsprechenden
adressierten Speicheranordnung ausgelesen, seriellisiert und über die
P2P-Datenverbindung an den Speichercontroller ausgegeben.
-
Insbesondere bei DRAM-Speicherbausteinen
benötigen
Wechsel von einem Schreibvorgang auf einen Lesevorgang und Wechsel
von einem Lesevorgang auf einen Schreibvorgang unterschiedli che
Zeitdauern vor allem dann, wenn zum Lesen oder zum Schreiben dieselbe
Speicheranordnung adressiert werden soll. Während beim Übergang von einem Schreibvorgang
auf einen Lesevorgang für eine
Speicheranordnung eine Wartezeit gemäß den Chipparametern TWR (Write
Recovery) oder TWTR (Write to Read) berücksichtigt werden muss, kann
ein Wechsel von einem Schreibvorgang in eine Speicheranordnung zu
einem Auslesevorgang einer anderen Speicheranordnung im Wesentlichen
ohne Wartezeit durchgeführt
werden. Dies führt
entweder dazu, dass der Speichercontroller bei jedem Zugriffswechsel
stets die hohe Busumkehrzeit verwendet, um das Vorsehen einer zusätzlichen
Schaltung aus Komplexitätsgründen zu
vermeiden oder dass eine aufwändige
Logikschaltung in dem Speichercontroller vorgesehen ist, um alle
Speicheranordnungen im Gesamtsystem optimal anzusteuern.
-
Die Ursache für die hohen Busumkehrzeiten in
einer Speicheranordnung liegt nicht in der Architektur des Datenbusses
im System begründet,
sondern hängt
mit dem Design der Speicherbausteine zusammen. Denn es muss sichergestellt
werden, dass die Schreibdaten sicher in das Zellenfeld geschrieben
werden, bevor die aktivierte Wortleitung wieder geschlossen wird
(TWR) bzw. bevor neue Lesedaten vom Zellenfeld ausgelesen werden
können (TWTR).
-
Es ist daher Aufgabe der vorliegenden
Erfindung, einen Pufferbaustein zum Ansteuern von einer oder mehrerer
Speicheranordnungen vorzusehen, mit der das Problem der unterschiedlichen
Busumkehrzeiten insbesondere das Problem eines Wechsels von einem
Schreibvorgang auf einen Auslesevorgang in einer Speicheranordnung
berücksichtigt, so
dass der Speichercontroller, der mit den Pufferchips verbunden ist,
möglichst
einfach aufgebaut werden kann. Es ist weiterhin eine Aufgabe der
vorliegenden Erfindung, ein Verfahren zum Betreiben eines Pufferbausteins
bereitzustellen.
-
Diese Aufgabe wird durch den Pufferbaustein
nach Anspruch 1 sowie durch das Verfahren nach Anspruch 8 gelöst.
-
Weitere vorteilhafte Ausgestaltungen
der Erfindung sind in den abhängigen
Ansprüchen
angegeben.
-
Gemäß einem ersten Aspekt der vorliegenden
Erfindung ist ein Pufferbaustein zum Ansteuern von einer oder mehreren
Speicheranordnungen vorgesehen. Er weist eine erste Datenschnittstelle
zum Empfangen eines zu schreibenden Datums und zum Senden eines
ausgelesenen Datums auf. In einer Umwandlungseinheit wird das empfangene
Datum parallelisiert und das zu sendende Datum seriellisiert. Es
ist weiterhin eine zweite Datenschnittstelle vorgesehen, um das
parallelisierte Datum über
einen Speicherdatenbus in die Speicheranordnung zu schreiben und
das aus der Speicheranordnung ausgelesene Datum über den Speicherdatenbus zu empfangen.
Es ist ein Schreibzwischenspeicher vorgesehen, um das zu schreibende
Datum zwischenzuspeichern. Eine Steuereinheit unterbindet nach einem
Empfangen eines zu schreibenden Datums über die erste Datenschnittstelle
gemäß einem
Schreibbefehl bei einem nachfolgenden Lesebefehl für dieselbe
Speicheranordnung das Schreiben der Daten von dem Zwischenspeicher über die
zweite Datenschnittstelle, um die angeforderten Daten über die
zweite Datenschnittstelle in den Pufferbaustein einzulesen.
-
Auf diese Weise kann das Problem
der hohen Busumkehrzeiten beim Übergang
von einem Schreibvorgang auf einen Lesevorgang dadurch gelöst werden,
dass das letzte Datum, das in einer Schreibsequenz geschrieben werden
soll, zunächst im
Zwischenspeicher belassen wird, und sobald ein Lesebefehl durch
den Pufferbaustein empfangen wird, der Lesebefehl ausgeführt wird.
Dies spart Zeit, da nicht zunächst
noch das Schreiben des letzten zu schreibenden Datums abgewartet
werden muss, bevor mit dem Auslesen begonnen wird.
-
Es kann vorgesehen sein, dass die
Steuereinheit das im Schreibzwischenspeicher gespeicherte Datum
in die Speicheranordnung schreibt, wenn gemäß einem Schreibbefehl erneut
Daten in die Speicheranordnung geschrieben werden sollen und/oder
wenn das Auslesen von Daten aus der betreffenden Speicheranordnung
beendet ist. Auf diese Weise ist es möglich, dass die gemäß dem Lesebefehl
auszulesenden Daten so schnell wie möglich über den Pufferbaustein an den
Speichercontroller ausgegeben werden können und dass die zum Schreiben
in dem Schreibzwischenspeicher gespeicherten Daten erst dann in
die Speicheranordnung geschrieben werden, wenn das Auslesen von
Daten in die betreffende Speicheranordnung beendet ist oder kurzzeitig
ausgesetzt wird. Empfängt
der Pufferbaustein nach dem Lesebefehl erneut einen Schreibbefehl,
so muss der Schreibzwischenspeicher zunächst geleert werden, indem
das dort gespeicherte Datum in die Speicheranordnung geschrieben
wird, bevor weitere zu schreibende Daten durch den Pufferbaustein
empfangen werden können.
-
Es kann vorgesehen sein, dass die
Steuereinheit bei einem Lesebefehl das Datum über die erste Datenschnittstelle
ausgibt, wenn das im Schreibzwischenspeicher gespeicherte Datum
gemäß dem Lesebefehl
auszulesen ist. Auf diese Weise kann das Auslesen eines gespeicherten
Datums dann beschleunigt werden, wenn das auszulesende Datum sich
noch in dem Zwischenspeicher befindet.
-
Der Schreibzwischenspeicher weist
vorzugsweise eine Größe auf,
um mehrere Daten zu speichern, so dass bei einem Wechsel von einem
Schreiben eines Datums gemäß einem
Schreibbefehl zu einem Auslesen eines Datums über die erste Datenschnittstelle
gemäß einem
Lesebefehl und einem nachfolgenden erneuten Schreiben eines Datums über die
erste Datenschnittstelle einen Überlauf
des Schreibzwischenspeichers vermieden werden kann.
-
Der Pufferbaustein kann einen Lesezwischenspeicher
aufweisen, um ein auszulesendes Datum zwischenzuspeichern. Die Steuereinheit
ist dann so gestaltet, um gemäß einem
Lesebefehl über die
erste Datenschnittstelle nur einen Teil des auszulesenden Datums
sendet.
-
Insbesondere in Serversystemen werden
zur Erhöhung
der Datenübertragungsrate
und der maximal möglichen
Speichertiefe oftmals zwei oder mehr Speicherbusse parallel angesprochen.
Bei. diesem Konzept kann die Schwierigkeit auftreten, dass zu viele
Daten von den parallel angesprochenen Speicherbussen bereitgestellt
werden. Ursache hierfür
ist ein Datenbuskonzept, das üblicherweise
innerhalb von Speicherbausteinen, insbesondere innerhalb von DDR-Speicherbausteinen
angewendet wird. Um die Datenübertragungsrate
an der Schnittstelle kontinuierlich steigern zu können, werden
aus dem Zellenfeld, dessen Zugriffsgeschwindigkeit üblicherweise
nicht im gleichen Maße
wie die externe Datenübertragungsrate
gesteigert werden kann, mehrere Datenbits parallel auf einem breiten
internen Bus ausgelesen und erst kurz vor dem eigentlichen Ausgangstreiber über einen
Multiplexer mit einem sehr schnellen Datenstrom auf einer einzelnen
Leitung zusammengeführt.
Dieses Konzept wird Prefetch-Konzept genannt. Bei DDR-Speicherbausteinen
ist das Prefetch-Verhältnis
beispielsweise 2. D.h., dass pro Datenanschluss am Speicherbaustein
jeweils 2 Bits von bzw. zu dem Zellenfeld übertragen werden können. Bei
DDR-II-Speicherbausteinen
beträgt
das Prefetch-Verhältnis 4 und
bei DDR-III-Speicherbausteinen wird das Prefetch-Verhältnis voraussichtlich 8 betragen.
Die minimale Burst-Länge
beim Zugreifen auf einen solchen Speicherbaustein wird üblicherweise
entsprechend dem Prefetch-Verhältnis
gesteigert. So beträgt
die minimale Burst-Länge
bei DDR-Speicherbausteinen 2 Bits und bei DDR-II-Speicherbausteinen 4 Bits.
Wenn nun für DDR-III-Speicherbausteine
ein Prefetch-Verhältnis von
8 gewählt
werden muss, so wird voraussichtlich auch die minimale Burst-Länge bei DDR-III-Speicherbausteinen 8 Bits
betragen.
-
Bei einem Lesebefehl beträgt die Menge
der Daten, die an eine CPU übertragen
werden kann, 64 Bytes. Werden nun zwei 8-Byte-Busse parallel bzw. interleaved betrieben,
so beträgt
die Menge der Daten, die bei einer minimalen Burst-Länge von 8 übertragen
werden, 128 Bytes. Aus diesem Grunde ist eine minimale Burst-Länge von
4 Bit wünschenswert, das
jedoch im Widerspruch zu dem Prefetch-Verhältnis von 8 bei DDR-III-Speicherbausteinen
steht.
-
Aus diesem Grunde kann die Steuereinheit so
vorgesehen sein, dass der Pufferbaustein zwar die Daten gemäß der minimalen
Burst-Länge
aus der Speicheranordnung empfängt,
jedoch nur einen Teil der auszulesenden Daten über die erste Schnittstelle an
den Speichercontroller sendet. Die übrigen Daten bleiben in dem
Lesezwischenspeicher gespeichert oder werden verworfen.
-
Der Lesezwischenspeicher kann eine
Größe aufweisen,
um mehrere Daten zu speichern, wobei die Steuereinheit ein Vorladen
von Daten in den Lesezwischenspeicher gemäß einer Cache-Funktion durchführt. Auf
diese Weise kann man den Pufferbaustein mit einer vollständigen Cache-Funktion
versehen, um den Datenzugriff auf die an dem Pufferbaustein angeschlossenen
Speicheranordnungen zu verbessern.
-
Vorzugsweise ist vorgesehen, dass
die Steuereinheit mehrere Lesebefehle puffert, um ein auszulesendes
Datum, das in dem Lesezwischenspeicher oder in dem Schreibzwischenspeicher
gespeichert ist, über
die erste Schnittstelle zu senden, bevor das auszulesende Datum,
das in der Speicheranordnung gespeichert ist, über die erste Schnittstelle
gesendet wird. Durch dieses Aufbrechen der Reihenfolge der Abarbeitung
der empfangenen Lesebefehle können diejenigen
Lesebefehle bevorzugt abgearbeitet werden, deren zugehörige Daten
sich bereits in dem Lese- bzw. Schreibzwischenspeicher befinden.
Auf diese Weise wird einerseits der Lese- bzw. Schreibzwischenspeicher
schneller geleert, um so Platz für
weitere auszulesende bzw. zu schreibende Daten zu schaffen und
andererseits können
Latenzzeiten beim Auslesen von Daten aus der adressierten Speicheranordnung
durch das Senden von auszulesenden Daten über die erste Datenschnittstelle
aus dem Lese- bzw. Schreibzwischenspeicher überbrückt werden.
-
Gemäß einem weiteren Aspekt der
vorliegenden Erfindung ist ein Verfahren zum Betreiben eines Pufferbausteins,
an den eine oder mehrere Speicheranordnungen angeschlossen sind,
vorgesehen. Gemäß eines
Schreibbefehls wird ein zu schreibendes Datum von dem Pufferbaustein
empfangen und ein gemäß eines
Lesebefehls ausgelesenes Datum aus dem Pufferbaustein gesendet.
Zunächst
wird ein zu schreibendes Datum gemäß eines ersten Schreibbefehls
empfangen, das empfangene Datum parallelisiert und zunächst in
dem Pufferbaustein zwischengespeichert. Das Schreiben des empfangenen
Datums in die Speicheranordnung wird durchgeführt, wenn auf den ersten Schreibbefehl
ein zweiter Schreibbefehl folgt. Folgt jedoch auf den ersten Schreibbefehl
ein erster Lesebefehl, wird das zwischengespeicherte zu schreibende
Datum zunächst nicht
in die Speicheranordnung geschrieben, sondern zunächst das
auszulesende Datum aus der Speicheranordnung ausgelesen.
-
Auf diese Weise kann die Busumkehrzeit
von einem Schreibvorgang auf einen Lesevorgang versteckt werden,
indem das letzte zu schreibende Datum vor einem Lesevorgang in die
gleiche Speicheranordnung zunächst
zwischengespeichert wird.
-
Vorzugsweise wird das zwischengespeicherte
Datum in die Speicheranordnung geschrieben, wenn auf den ersten
Lesebefehl ein dritter Schreibbefehl folgt, oder wenn auf den Pufferbaustein
nicht mit einem Schreibbefehl oder Lesebefehl zugegriffen wird.
Auf diese Weise wird eine Pause beim Zugriff auf die Speicheranordnung
abgewartet, um das zu schreibende Datum in dem Schreibzwischenspeicher in
die betreffende Speicheranordnung zu schreiben. Ein Schreiben in
die Speicheranordnung muss auch erfolgen, wenn ein weiterer Schreibbefehl
folgt, um Platz für
die Zwischenspeicherung der gemäß des dritten
Schreibbefehls zu schreibenden Datums zu schaffen.
-
Die Erfindung wird im Folgenden anhand
der beigefügten
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockschaltbild eines erfindungsgemäßen Pufferbausteins;
-
2 ein
Flussdiagramm zur Darstellung einer Ausführungsform des erfindungsgemäßen Verfahrens;
-
3 ein
mögliches
Kommandoprotokoll zur Ansteuerung eines Pufferbausteins gemäß einer Ausführungsform
der Erfindung;
-
4 ein
weiteres Kommandoprotokoll gemäß einer
weiteren Ausführungsform
des Pufferbausteins gemäß der Erfindung;
-
5 ein
Datenprotokoll für
einen Pufferbaustein gemäß der Erfindung;
und
-
6 ein
weiteres Datenprotokoll für
einen Pufferbaustein gemäß einer
weiteren Ausführungsform
der Erfindung.
-
In 1 ist
ein Pufferbaustein 1 gemäß einer Ausführungsform
der Erfindung dargestellt. Der Pufferbaustein 1 weist eine
erste Datenschnittstelle 2 auf, um Befehlsdaten zu empfangen
und aus einer der Speicheranordnungen 3 ausgelesene Daten
an einen Speichercontroller 4 oder an weitere Pufferbausteine
zu übertragen.
Die erste Datenschnittstelle 2 kann zu schreibende Daten
empfangen und diese in die jeweils adressierte Speicheranordnung 3 schreiben.
Das Lesen aus den Speicheranordnungen 3 oder das Schreiben
in die Speicheranordnungen 3 erfolgt über eine zweite Datenschnittstelle 5.
-
Die Speicheranordnungen 3 sind
mit der zweiten Datenschnittstelle 5 über getrennte Datenleitungen
verbunden. Sie können
jedoch auch über
einen gemeinsamen Datenbus über
die zweite Datenschnittstelle 5 mit dem Pufferbaustein
verbunden sein.
-
Die Pufferbausteine 1 sind
mit dem Speichercontroller 4 in Form einer Daisy-Chain
verbunden, d.h. es sind lediglich Punkt-zu-Punkt-Verbindungen zwischen
Speichercontroller 4 und dem ersten Pufferbaustein 1 und
zwischen dem ersten Pufferbaustein und einem zweiten Pufferbaustein
vorgesehen. Ein gemeinsamer Datenbus, über den alle Daten zwischen
Pufferbaustein 1 und Speichercontroller 4 übertragen
werden, existiert nicht.
-
Ein Datenbus 6 mit einer
P2P-Datenverbindung ermöglicht
die schnellere Übertragung
von Daten, da die Leitungskapazitäten geringer sind. Eine schnellere Übertragung
der Daten hat zur Folge, dass weniger Datenleitungen von dem Speichercontroller
zu den Pufferchips notwendig sind, so dass es einfacher ist, im
Layout gleiche Datenleitungslängen für den Datenbus 6 vorzusehen.
Gleiche Datenleitungslängen
haben den Vorteil, dass schnellere Signale übertragen werden können, da
dann die Laufzeiten auf allen Datenleitungen identisch sind.
-
Über
den Datenbus 6 werden Befehlsdaten und Speicherdaten übertragen.
Die Befehlsdaten geben im Wesentlichen die Adresse der Speicheranordnung 3,
der Speicherbank sowie des Speicherplatzes an, in den Speicherdaten
geschrieben werden sollen oder aus dem Speicherdaten ausgelesen
werden sollen. Sendet der Speichercontroller 4 ein Befehlsdatum,
so wird es von der ersten Datenschnittstelle 2 empfangen
und in einer Schalteinrichtung 7 analysiert. Dort wird
entschieden, ob eine der Speicheranordnungen 3, die an
dem jeweiligen Pufferbaustein 1 angeschlossen sind, adressiert
werden soll oder nicht.
-
Soll einer der angeschlossenen Speicherbausteine 3 adressiert
werden, so werden die Befehlsdaten und/oder die Speicherdaten in
einer Umwandlungseinheit 8 parallelisiert, so dass die
Daten in der für
die Speicheranordnungen 3 notwendigen Datenbreite und Geschwindigkeit
vorliegen. Soll keine der an dem jeweiligen Pufferbaustein 1 angeschlossenen
Speicheranordnungen 3 adressiert werden, so gibt die Schalteinrichtung 7 das
empfangene Befehlsdatum und/oder das empfangene Speicherdatum über die
erste Datenschnittstelle 2 an einen nächsten Puffer baustein 1 weiter.
Dort wird das weitergereichte Befehlsdatum und/oder Speicherdatum von
der jeweiligen ersten Datenschnittstelle 2 des nächsten Pufferbausteins 1 empfangen
und der betreffenden Schalteinrichtung 7 zugeführt.
-
Die Umwandlungseinheit 8 ist
mit einem Zwischenspeicher 9 verbunden, der einen Schreibzwischenspeicher 10 und
einen Lesezwischenspeicher 11 aufweist. Der Schreibzwischenspeicher 10 dient dazu,
ein zu schreibendes Speicherdatum zunächst zwischenzuspeichern, bevor
es über
die zweite Datenschnittstelle 5 in die jeweilige adressierte
Speicheranordnung 3 geschrieben wird. Der Lesezwischenspeicher 11 hat
die Funktion, ein aus der jeweils adressierten Speicheranordnung 3 über die zweite
Datenschnittstelle 5 ausgelesenes Speicherdatum zwischenzuspeichern,
bevor es über
die Umwandlungseinheit 8 und die erste Datenschnittstelle 2 an
den Speichercontroller 4 ausgegeben wird. Innerhalb der
Pufferbausteine 1 können
Datenbusse sowohl bidirektional als auch unidirektional ausgeführt sein.
-
Der Zwischenspeicher 9 dient
dazu, unterschiedliche Busumkehrzeiten zwischen einem Schreibvorgang
und einem Lesevorgang bzw. zwischen einem Lesevorgang und einem
Schreibvorgang zu puffern. Insbesondere bei einem Wechsel von einem
Schreibvorgang zu einem Lesevorgang ist bei einem Zugriff auf dieselbe
Speicheranordnung 3 eine hohe Latenzzeit notwendig, bis
nach dem letzten Schreiben eines Speicherdatums in die Speicheranordnung
ein Speicherdatum aus derselben Speicheranordnung 3 ausgelesen
werden kann. Diese Latenzzeit ist durch die Parameter der in der
Speicheranordnung 3 vorgesehenen Speicherbausteine TWR
und TWTR vorgegeben. Bei einem Wechsel von einem Schreibvorgang
in einer der Speicheranordnungen 3 zu einem Lesevorgang
in einer der anderen Speicheranordnungen 3 tritt jedoch
keine wesentliche Latenzzeit auf, da das Schreiben des letzten zu
schreibenden Datum zu Ende geführt
werden kann, während
bereits Daten aus der anderen Speicheranordnung 3 ausgelesen
werden.
-
Um die Komplexität des Speichercontrollers 4 möglichst
gering zu halten, ist üblicherweise
vorgesehen, unabhängig
von der Art des Zugriffs die Latenzzeit so groß vorzusehen, dass bei allen
möglichen
Speicherzugriffen die maximal notwendige Latenzzeit nicht unterschritten
wird. Dies führt
dazu, dass bei manchen Speicherzugriffen eine höhere Latenzzeit vorgesehen
wird als notwendig wäre.
-
Alternativ kann der Speichercontroller 4 so vorgesehen
werden, dass er je nach Art des Speicherzugriffs die zugehörige Latenzzeit
ermittelt und die Befehlsdaten entsprechend verzögert sendet. Dies würde die
Komplexität
der Schaltungen in dem Speichercontroller 4 merklich erhöhen.
-
Der Zwischenspeicher 9 in
dem Pufferbaustein 1 ermöglicht es nun, dass der Speichercontroller 4 mit
einer geringen Komplexität
vorgesehen sein kann, da in dem Zwischenspeicher 9, insbesondere in
dem Schreibzwischenspeicher 10, die bei einer Busumkehr
von einem Schreibvorgang auf einen Lesevorgang in dieselbe Speicheranordnung 3 notwendige
Latenzzeit versteckt werden kann.
-
Die Funktionsweise des Zwischenspeichers 9 ist
folgendermaßen.
Das Schreiben von Daten über den
Datenbus 6, den Pufferbaustein 1 in die Speicheranordnung 3 erfolgt
gemäß einem
Schreibbefehl und nachfolgenden einer oder mehreren Speicherdaten.
Bevor die Speicherdaten in die durch das Befehlsdatum adressierte
Speicheranordnung geschrieben werden, werden sie zunächst in
dem Schreibzwischenspeicher 10 gespeichert. Wird über den
Datenbus 6 ein Befehlsdatum an den Pufferbaustein 1 gesendet,
das einen Auslesebefehl zum Auslesen eines Datum aus derselben Speicheranordnung 3 enthält, so wird
das als letztes zu schreibendes Speicherdatum in dem Schreibzwischenspeicher 10 nicht über die
zweite Datenschnittstelle 5 an die betreffende Speicheranordnung 3 ausgegeben. Stattdessen
wird der empfangene Lesebefehl sofort an die adressierte Speicheranordnung 3 weitergegeben
und die angeforderten Daten über
den Lesezwischenspeicher 11 über den Datenbus 6 ausgelesen. Die
Steuereinheit 12 entscheidet, gemäß den empfangenen Befehlsdaten,
ob das in dem Schreibzwischenspeicher 10 gespeicherte Schreibdatum
in die adressierte Speicheranordnung 3 geschrieben werden
soll. Sobald die Steuereinheit 12 einen Lesebefehl detektiert,
wird überprüft, ob der
Lesebefehl die gleiche Speicheranordnung 3 betrifft, wie
die zuvor durchgeführten
Schreibvorgänge.
Betrifft der Lesebefehl dieselbe Speicheranordnung 3, so
wird das Schreiben der Schreibdaten in die Speicheranordnung 3 gestoppt
und der Lesebefehl sofort an die betreffende Speicheranordnung 3 weitergegeben.
-
Betrifft der Lesebefehl eine andere
Speicheranordnung 3, so kann das Schreiben der Schreibdaten
in die betreffende Speicheranordnung 3 fortgesetzt werden
und der Lesebefehl an die andere durch den Lesebefehl adressierte
Speicheranordnung 3 weitergegeben werden, um das Auslesen
der Daten zu starten. Das ist jedoch nur dann möglich, wenn die Speicheranordnungen 3 über getrennte
Datenleitungen mit der zweiten Datenschnittstelle 5 verbunden sind.
Sind die Speicheranordnungen 3 über einen gemeinsamen Datenbus
mit dem Pufferbaustein verbunden, entfällt die letztgenannte Variante.
-
Dadurch, dass insbesondere bei DDR-Speicherbausteinen
(Double Data Rate) das Schreiben und Lesen von Daten in Burst-Zugriffen
erfolgt, d.h. in Zugriffen, bei denen mehrere Datenpakete nacheinander
in den Speicherbaustein 3 geschrieben bzw. aus dem Speicherbaustein 3 ausgelesen
werden können,
ohne für
jedes Datum einen Schreib- oder Lesebefehl vorauszuschicken, kann ein
Lesebefehl von dem Pufferbaustein 1 empfangen werden, während das
Schreiben von Daten in dem Burst-Zugriff auf die Speicheranordnung 3 noch
nicht abgeschlossen ist.
-
Das Schreiben des in dem Schreibzwischenspeicher
gespeicherten Speicherdatums erfolgt dann, wenn der Zugriff auf
die betreffende Speicheranordnung 3 unterbrochen wird,
d.h. das Auslesen von Daten aus der Speicheranordnung zunächst beendet wird.
In diesem Fall wird die zugriffslose Zeit auf die betreffende Speicheranordnung 3 genutzt,
um den Schreibzwischenspeicher 10 zu leeren, indem die
dort gespeicherten Daten in der Speicheranordnung 3 gespeichert
werden. Darüber
hinaus werden die in dem Schreibzwischenspeicher 10 gespeicherten
Speicherdaten in die Speicheranordnung 3 geschrieben, wenn
erneut ein Schreibzugriff auf die betreffende Speicheranordnung 3 gestartet
wird. Dies dient dazu, den Schreibzwischenspeicher 10 so schnell
wie möglich
zu leeren, so dass neue eintreffende Schreibdaten zwischengespeichert
werden können.
-
Die Steuereinheit 12 kann
weiterhin vorsehen, dass beim Auslesen von Speicherdaten aus der adressierten
Speicheranordnung 3 die in dem Lesezwischenspeicher 11 gespeicherten
ausgelesenen Speicherdaten nur zum Teil über den Datenbus 6 an den
Speichercontroller 4 gesendet werden. Dies ist deshalb
sinnvoll, da bei künftigen
Speicherarchitekturen mit einem Burst-Zugriff auf Speicherbausteine der
Speicheranordnung 3 zu viele Daten bereitgestellt werden,
die von einem an den Speichercontroller 4 angeschlossenen
Mikroprozessor nicht gleichzeitig aufgenommen werden können.
-
Insbesondere bei DDR-Speicherbausteinen hängt die
Mindest-Burst-Länge, d.h.
die Mindestmenge an Daten, die gemäß einem Befehl geschrieben oder
ausgelesen werden, von dem so genannten Prefetch-Verhältnis ab.
Während
bei DDR-Speicherbausteinen das Prefetch-Verhältnis 2 und bei DDR-II-Speicherbausteinen
das Prefetch-Verhältnis 4 beträgt, so ist
bei der kommenden Generation der DDR-III-Speicherbausteine das Prefetch-Verhältnis voraussichtlich 8.
Insbesondere bei Gesamtsystemen, bei denen zwei Speicherkanäle parallel
bzw. interleaved betrieben werden, ist es von Vorteil, wenn auch
für DDR-III-Speicherbausteine
die minimale Burst-Länge
nur 4 betragen würde.
Der Grund hierfür liegt
darin, dass die Menge der Daten, die bei einem Lesebefehl zum Mikroprozessor übertragen
werden, voraussichtlich 64 Bytes betragen soll. Werden nun zwei
8-Byte-Datenbusse parallel bzw. interleaved betrieben, so beträgt die Menge
der Daten, die bei einer minimalen Burst-Länge von 8 übertragen werden, 128 Bytes.
Aus diesem Grunde wäre
eine Beschränkung
der minimalen Burst-Länge
auf 4 wünschenswert.
-
Um dies zu erreichen, kann der Lesezwischenspeicher 11 die
Daten aus den Speicheranordnungen gemäß einer Burst-Länge von
8 Bit Zwischenspeicher, wobei die Steuereinheit 12 jeweils nur
einen Teil, nämlich
eine Hälfte
der zwischengespeicherten Speicherdaten, an die Umwandlungseinheit 8 zur
Ausgabe an die erste Datenschnittstelle 2 an den Speichercontroller 4 weitergibt.
Auf diese Weise erhält
der Speichercontroller 4 selbst bei Speicheranordnungen
mit Speicherbausteinen, die eine minimale Burst-Länge von
mehr als 4 Bit aufweisen, nur diejenige Datenmenge, die der angeschlossene Mikroprozessor
benötigt.
-
Die ausgelesenen Daten verbleiben
zunächst
in dem Lesezwischenspeicher 11, so dass bei einem passenden
Lesebefehl die restliche Datenhälfte
direkt vom Lesezwischenspeicher 11 zum Speichercontroller 4 übertragen
werden kann, ohne dass der Pufferbaustein 1 einen erneuten
Lesebefehl an die Speicheranordnung 3 sendet.
-
In 2 ist
ein Flussdiagramm zur Veranschaulichung des erfindungsgemäßen Verfahrens dargestellt.
Das Verfahren betrifft den Ablauf in einem erfindungsgemäßen Pufferbaustein.
In einem Schritt S1 wird ein Schreibbefehl von dem Pufferbaustein 1 empfangen,
der angibt, dass nun über
den Datenbus zu schreibende Daten empfangen werden können. Die
zu schreibenden Daten werden in einem Schritt S2 empfangen und in
einem Schritt S3 zunächst
zwischengespeichert. In einem Schritt S4 wird dann überprüft, ob ein
Lesebefehl zum Auslesen derselben Speicheranordnung empfangen worden
ist. Wurde kein Lesebefehl empfangen, wird das zwischengespeicherte
Datum in einem Schritt S5 in die betreffende adressierte Speicheranordnung
geschrieben und zum Schritt 52 zurückgesprungen.
-
Wurde ein Lesebefehl auf dieselbe
Speicheranordnung empfangen, wird in einem Schritt S6 der adressierte
Speicherbereich der betreffenden Speicheranordnung angesprochen
und die entsprechenden Lesedaten empfangen. Ein Schreiben der zwischengespeicherten
zu schreibenden Daten unterbleibt. Die von der adressierten Speicheranordnung empfangenen
Lesedaten werden zwischengespeichert in einem Schritt S7 und anschließend in
einem Schritt S8 überprüft, ob weitere
Daten aus der adressierten Speicheranordnung ausgelesen werden sollen.
Sind weitere Lesedaten von der Speicheranordnung angefordert, werden
die zwischengespeicherten Lesedaten in einem Schritt S9 an den Speichercontroller
gesendet und zu dem Schritt S6 zurückgesprungen. Sind keine weiteren
Lesedaten auszulesen, so werden im Wesentlichen gleichzeitig die
zuletzt zwischengespeicherten Lesedaten an den Speichercontroller
ausgegeben und die zuletzt zwischengespeicherten zu schreibenden
Daten, die noch nicht in die betreffende Speicheranordnung geschrieben worden
sind, in die Speicheranordnung geschrieben (Schritt 510).
-
Der oben beschriebene Zwischenspeicher 9 und
die dazugehörige
Steuereinheit 12 können
auch komplexer vorgesehen sein. So ist z.B. eine Schreib-/Lese-Cache-Funktionalität im Pufferbaustein 1 realisierbar,
der neben der Lösung
der oben beschriebenen Probleme zusätzlich eine Steigerung der
Gesamtleistungsfähigkeit
des Gesamtsystems erlaubt. Da im Gegensatz zu den Speicherbausteinen
der Speicheranordnung 3 für den Pufferbaustein 1 eine
Herstellungstechnologie verwendet wird, die schnelle Logikschaltungen
ermöglicht,
sind komplexe Cache-Kontrollschaltungen im Pufferbaustein 1 denkbar.
Eine solche komplexe Cache-Kontrollschaltung kann beispielsweise
in Abhängigkeit
der Schreib- und Lesebefehle und der verwendeten Adressbereiche
im System verschiedene auszulesende Speicherdaten schon vorab von
den Speicherbausteinen der Speicheranordnung 3 anfordern,
um bei einem Lesebefehl vom Speichercontroller 4 die angeforderten
Daten sehr schnell aus dem Zwischenspeicher 9 bereitzustellen.
-
Bei der Implementierung eines solchen
Cache-Speichers als Zwischenspeicher 9 ist wesentlich, dass
die Ausführzeit
für verschiedene
Schreib- oder Lesebefehle stark variieren kann, je nachdem, ob die Daten über den
Zwischenspeicher 9 bzw. über den Cache-Speicher der
Pufferbausteine 1 bedient werden, oder ob sie von den Speicherbausteinen
abgearbeitet werden müssen.
Es kann daher ein Befehls- und Nutzdatenprotokoll vorgesehen sein,
das es ermöglicht,
dass die Daten zu den einzelnen Schreib- und Lesebefehlen in einer
anderen Reihenfolge übertragen
werden, als durch die Befehle vorgegeben ist. Dazu wird mit dem
Befehlsdatum und mit dem Speicherdatum eine so genannte Identifikationsnummer
(Request ID) übertragen, über die
zusammengehörige
Befehlsdaten und Speicherdaten identifiziert werden können.
-
In 3 ist
ein mögliches
Befehlsprotokoll dargestellt. Die Datenleitungen CA (0 bis 7) des
Datenbusses 6 übertragen
ein Befehlsdatum in vier Abschnitten, den so genannten Ticks. Im
ersten Tick wird auf den vier Datenbusleitungen CAO bis CA3 die Speicheranordnungsadresse
R(0) bis R(3) übertragen.
Auf den weiteren vier Datenbusleitungen wird die Identifikationsnummer
RID(0) bis RID(3) übertragen,
um eine Zuordnung des Befehlsdatums zu einem entsprechenden Speicherdatum
vornehmen zu können.
Mit den übrigen
Ticks werden Adressdaten für
die Speicherbausteine der Speicheranordnungen, die Bankadresse sowie
die Ansteuerbefehle, Zeilenaktivierungssignal RAS, Spaltenaktivierungssignal CAS,
Schreibsignal WE übertragen.
Auf einer der Datenleitungen wird im zweiten Tick ein Bit übertragen,
das angibt, ob mit dem Befehlsdatum ein Speicherbaustein bzw. eine
Speicheranordnung angesprochen werden soll, oder ob es sich um einen Befehl
für den
Pufferbaustein 1 handelt.
-
In 4 ist
alternativ eine weitere Ausführungsform
für ein
mögliches
Befehlsprotokoll dargestellt. Dabei ist eine weitere Datenbusleitung
CA (8) vorgesehen, um in den vier Ticks 4 Bit der Identifikationsnummer
RID(0 bis 3) zu übertragen.
-
In 5 ist
ein Beispiel für
ein Speicherdatenprotokoll dargestellt. Das Speicherdatum wird in vier
Ticks mit einer Breite von 16 Datenbits DQ0 bis DQ15 übertragen.
Die ersten vier Datenbits des ersten Ticks tragen die Identifikationsnummer
RID(0 bis 3).
-
Eine weitere Möglichkeit ist in 6 dargestellt, bei der der
Datenbus 6 eine weitere Datenbusleitung DQ(16) umfasst.
Auf der weiteren Datenbusleitung werden in vier Ticks die 4 Bit
der Identifikationsnummer übertragen,
so dass eine Zuordnung zu dem jeweiligen Befehlsdatum gleicher Identifikationsnummer
erfolgen kann.
-
Das Vorsehen von Identifikationsnummern ermöglicht es,
dass die Daten zu den einzelnen Schreibbefehlen und Lesebefehlen
in einer anderen Reihenfolge von und zu dem Speichercontroller 4 übertragen
werden können
als die Befehlsdaten.
-
Im gezeigten Beispiel der 1 ist der Zwischenspeicher 9 zwischen
der Umwandlungseinheit 8 und der zweiten Datenschnittstelle 5 angeordnet. Der
Zwischenspeicher 9 kann, ohne die Funktionalität wesentlich
einzuschränken,
auch zwischen der Umwandlungseinheit 8 und der Schalteinrichtung 7 oder
zwischen der ersten Datenschnittstelle 2 und der Schalteinrichtung 7 angeordnet
sein.
-
Der Pufferbaustein 1 und
die angeschlossenen Speicheranordnungen 3 sind vorzugsweise
in so genannten Speichermodulen zusammengefasst und baulich in einem
so genannten DIMM-Modul integriert. Diese DIMM-Module stellen eine übliche Speicherkonfiguration
für den
Einsatz in Personalcomputern dar.
-
- 1
- Pufferbaustein
- 2
- Erste
Datenschnittstelle
- 3
- Speicheranordnung
- 4
- Speichercontroller
- 5
- Zweite
Datenschnittstelle
- 6
- Datenbus
- 7
- Schalteinrichtung
- 8
- Umwandlungseinheit
- 9
- Zwischenspeicher
- 10
- Schreibzwischenspeicher
- 11
- Lesezwischenspeicher
- 12
- Steuereinheit