-
Die
Erfindung betrifft einen Pufferbaustein zum Ansteuern von einer
oder mehreren angeschlossenen Speicheranordnungen. Die Erfindung
betrifft weiterhin Speichermodule mit einem solchen Pufferbaustein.
-
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).
-
Ein
gattungsgemäßer Pufferbaustein
ist aus dar
US
2001/0052057 A1 bekannt. In der
US 5 787 481 A ist weiterhin
eine Speicherzugriffsteuerung beschrieben, bei der Lesebefehle gegenüber Schreibbefehlen
priorisiert werden, wobei die Lesebefehle zeitlich nach den Schreibbefehlen
ausgeführt
werden. Die
DE 102
10 904 A1 offenbart eine Punkt zu Punkt Busstrucktur in
Pufferbausteinen.
-
Aufgabe
der vorliegenden Erfindung ist es einen Pufferbaustein und zugehörige Speichermodule bereitzustellen,
bei dem bei der Befehlsausführung die
unterschiedlichen Ausführ zeiten
von Lese- und Schreibvorgängen
berücksichtigt
werden können.
-
Diese
Aufgabe wird durch den Pufferbaustein nach Anspruch 1 sowie durch
Speichermodule 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 wird ein gemäß eines
Schreibbefehls 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 eines Verfahrensablaufes;
-
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 S2 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 S10).
-
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 CA0 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