-
GEBIET
-
Ausgestaltungen
der Erfindung betreffen allgemein den Speicher und insbesondere
das Zusammenfassen von Daten von einem Zwischenspeicher auf serielle
Datenkanäle.
-
HINTERGRUNDINFORMATION
-
In
Speicherschaltkreisen ist üblicherweise eine
Speicherleselatenz vorhanden, die die Zeitspanne ist, die zum Auslesen
valider Daten aus einem Speicherschaltkreis benötigt wird. Eine Speicherschreiblatenz
ist üblicherweise
ebenso erforderlich, die die Zeitspanne zum Halten valider Daten
für einen
Speicherschaltkreis ist, um die Daten in den Speicher zu schreiben.
Die Speicherleselatenz und die Speicherschreiblatenz können manchmal
von einem Prozessor durch einen Cachespeicher gepuffert sein. Jedoch
gibt es Umstände,
wenn die gewünschten
Daten nicht im Cachespeicher gefunden werden. In diesen Fällen muss
ein Prozessor die Daten dann mit den Speicherschaltkreisen lesen
oder schreiben. Daher können
die Speicherleselatenz oder Speicherschreiblatenz vom Prozessor
wahrgenommen werden. Unterscheiden sich die Speicherschaltkreise können die
Speicherleselatenzen und Speicherschreiblatenz zwischen einem Speicherschaltkreis zum
nächsten
uneinheitlich sein. In diesem Fall werden die vom Prozessor erfahrene
Speicherleselatenz und Speicherschreiblatenz voneinander abweichen.
-
Bislang
wurden Speichermodule in eine Haupt- oder Hostplatine gesteckt und
parallel an einen parallelen Datenbus angeschlossen über den parallele
Daten aus dem Speicher gelesen und in den Speicher geschrieben werden
konnten. Der parallele Datenbus hatte parallele Datenbitleitungen,
die gemeinsam synchronisiert waren, um ein oder mehrere Datenbytes
oder Datenwörter
zur selben Zeit zu übertragen.
Die parallelen Datenbitleitungen sind üblicherweise über eine
Entfernung auf einer Platine (Printed Circuit Board; PCB) von einem
Speichermodulsockel zum nächsten
geführt.
Dieses bringt eine erste parasitäre
kapazitive Last mit sich. Wenn die Speichermodule in einen Speichersockel
gesteckt werden, wird eine zusätzliche
parasitäre
kapazitive Last auf die parallelen Datenbitleitungen des parallelen
Datenbusses eingebracht. Da eine Mehrzahl von Speichermodulen eingesteckt
ist, kann die zusätzliche
parasitäre
kapazitive Last erheblich sein und Hochfrequenzspeicherschaltkreise
ins Stocken bringen.
-
Üblicherweise
ist ein Speichermodul durch eine Adresse an Adressleitungen zu einer
Zeit angesprochen. Üblicherweise
schreibt das eine angesprochene Speichermodul zu einer Zeit Daten
an den parallelen Datenbus. Andere Speichermodule müssen üblicherweise
warten, um Daten an den parallelen Datenbus zu schreiben, um Kollisionen
zu vermeiden.
-
Während parallele
Datenbitleitungen den Datenfluss in einigen Fällen beschleunigen können, verlangsamt
ein paralleler Datenbus in einem Speicher den Lese- und Schreibzugriff
von Daten zwischen einem Speicherschaltkreis und einem Prozessor.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1A stellt
ein Blockdiagramm eines typischen Computersystems dar, in dem Ausgestaltungen
der Erfindung verwendet werden können.
-
1B stellt
ein Blockdiagramm eines Client-Server Systems dar, in dem Ausgestaltungen
der Erfindung verwendet werden können.
-
2A stellt
ein Blockdiagramm einer Zentralprozessoreinheit dar, in der Ausgestaltungen
der Erfindung verwendet werden können.
-
2B stellt
ein Blockdiagramm einer weiteren Zentralprozessoreinheit dar, in
der Ausgestaltungen der Erfindung verwendet werden können.
-
3 stellt
ein vereinfachtes Blockdiagramm einer Zwischenspeichersteuerung
zum Verbinden von Daten in und aus Bänken von Zwischenspeichermodulen
dar.
-
4 stellt
ein Blockdiagramm eines Zwischenspeichermoduls dar, das einen Pufferspeicher aufweist,
der Daten mit durchgeleiteten Daten zusammenfassen kann.
-
5 stellt
ein detailliertes Blockdiagramm einer Zwischenspeichersteuerung
dar, die an eine Bank von Zwischenspeichermodulen angeschlossen ist.
-
6 (6-1 und 6-2) stellt ein funktionelles Blockdiagramm eines
Pufferspeichers eines Zwischenspeichermoduls dar.
-
7A stellt
ein vereinfachtes Blockdiagramm der Daten-Mergelogik dar, die Bahnen
von Daten-Mergelogikabschnitten aufweist, die an Sender angeschlossen
sind.
-
7B stellt
ein schematisches Diagramm eines Daten-Mergelogikabschnitts für eine Bahn
von seriellen Daten dar.
-
8 stellt
ein Ablaufdiagramm von Signalen für einen Daten-Mergelogikabschnitt
dar, der in einem zwölf
Bit Modus funktioniert.
-
9 stellt
ein Ablaufdiagramm von Signalen für einen Daten-Mergelogikabschnitt
dar, der in einem sechs Bit Modus funktioniert.
-
10 stellt
ein Flussdiagramm für
die Initialisierung, das Training und den Betrieb des Puffers beim
Zusammenfassen lokaler Daten und durchgeleiteter Daten in eine serielle
Datenstromausgabe dar.
-
DETAILLIERTE BESCHREIBUNG
-
In
der folgenden detaillierten Beschreibung von Ausgestaltungen der
Erfindung sind zahlreiche spezifische Details genannt, um ein tiefgehendes Verständnis der
Erfindung zu ermögli chen.
Jedoch wird es dem Fachmann offenbar sein, dass Ausgestaltungen
der Erfindung ohne diese spezifischen Details ausgeführt werden
können.
In anderen Beispielen wurden gut bekannte Verfahren, Prozeduren, Komponenten
und Schaltkreise nicht im Detail beschrieben, um Aspekte der Ausführungsbeispiele
der Erfindung nicht unnötig
zu verschleiern.
-
Grundsätzlich weisen
die Ausgestaltungen der Erfindung ein Merkmal zur Datenzusammenfassung
auf, das als Northbound Data Merge (NBDM) bezeichnet wird, das Teile
der Daten an einer Hochgeschwindigkeitsverbindung mit eigenen Daten
direkt (on the fly) ersetzt. Das bedeutet, dass Ausgestaltungen
der Erfindung Teile des eingehenden seriellen Datenverkehrs (z.
B., „leere
Pakete oder Frames") über eine
serielle Datenverbindung mit eigenen lokalen Daten ersetzt, ohne
einen internen Kernlogikvorgang zu haben (z. B. seriell-zu-parallel
Konvertierung, Zusammenbau in Frames und Entpacken/Entschachteln
von Daten), um eingehenden seriellen Datenverkehr vorzugeben, wo
die lokalen Daten eingesetzt werden sollen, und zum Übertragen des
eingehenden Datenverkehrs mit den darin eingesetzten lokalen Daten.
-
Bislang
mussten die eingehenden seriellen Daten in Frames zusammengesetzt
sein und von der Kernlogik empfangen werden, um lokale Daten zu übertragen.
Ohne den Vorgang eingehende serielle Daten zu verarbeiten, um lokale
Daten zu übertragen,
kann eine Input/Output (IO) Schnittstelle eines Speichermoduls einfach
den von anderen Speichermodulen oder der Speichersteuerung über die
serielle Datenverbindung empfangenen eingehenden seriellen Datenstrom
weiter übertragen
unter Umgehung der internen Kernlogik eines integrierten Pufferspeicherschaltkreises.
Dieses kann die Datenlatenz im seriellen Datenstrom verringern.
Der Abschnitt des seriellen Datenstroms, der weiter gesendet werden soll,
wird manchmal als „durchgeleitete
Daten" („Feed-Through
Data"; FTD) bezeichnet.
-
Ohne
jegliche lokale Daten übertragen
zu haben, leitet die IO Schnittstelle normalerweise den empfangenen
seriellen Datenstrom weiter, unter Auslassen der Kernlogik des Chips.
Muss die Kernlogik des Zwischenspeicherchips lokale Daten übertragen,
sendet sie eine Mergeanfrage mit den lokalen Daten an die IO Schnittstelle.
Da der Kernzeitgeber, der die lokalen Daten erzeugt, während des
Trainings an einen Framezeitgeber der seriellen Hochgeschwindigkeits-Datenverbindung in
den Ausgestaltungen der Erfindung angepasst ist, kann die IO Schnittstelle
die Daten einfach an der geeigneten Framegrenze anschließen, um
ein leeres Paket oder Frame zu ersetzen.
-
Bislang
wurde darüber
nachgedacht, dass die empfangenen seriellen Daten in Frames zusammengesetzt
würden
und von der Kernlogik empfangen und dann an die Outbound-Verbindung
weitergeleitet würde.
In diesem Fall, wenn die Kernlogik lokale Daten an die Outbound-Verbindung senden
musste, würden
dann einige der eingehenden Daten mit eigenen Daten ersetzt werden,
und die Daten an die Outbound-Verbindung verpackt und serialisiert
werden. Dieses würde
eine Datenlatenz von wenigstens zwei Datenframes mit sich bringen.
Die Ausgestaltungen der Erfindung setzen die Mergezeit während der
anfänglichen
Trainingsphase so, dass die lokalen Daten in die Outbound-Verbindung
eingefasst werden können,
ohne die eingehenden Daten während
des normalen Betriebs zu empfangen und zu analysieren, um die leeren
Pakete zu ersetzen. Die Ausgestaltung der Erfindung kann die Datenlatenz
durch integrierte Zwischenspeicher-Schaltkreise von wenigstens zwei Datenframes
auf wenige Bitintervalle reduzieren. In einem Ausführungsbeispiel
der Erfindung ist ein integrierter Schaltkreis vorgesehen, der eine
serielle Input/Output Schnittstelle mit einer oder mehreren Bahnen
aufweist. Jede Bahn des seriellen Kommunikationskanals kann ein
erstes Parallel-In-Serial-Output
(PISO) Shiftregister, einen ersten Multiplexer und einen seriellen
Sender aufweisen, die miteinander verbunden sind.
-
Der
erste Multiplexer hat einen ersten Dateneingang, der an den ersten
seriellen Ausgang angeschlossen ist, einen zweiten Dateneingang
zum Empfangen durchgeleiteter Daten und einen ersten Auswahlsteuerungseingang,
der an ein lokales Datenauswahlsignal angeschlossen ist. Der Multiplexer fädelt selektiv
die serialisierten lokalen Daten und durchgeleiteten Daten in einen
seriellen Datenstrom an einem Multiplexausgang als Reaktion auf
das lokale Datenauswahlsignal ein.
-
Der
serielle Sender hat einen Eingang, der an den Multiplexausgang des
Multiplexers zum Empfangen des seriellen Datenstroms angeschlossen
ist. Der serielle Sender leitet den seriellen Datenstrom an eine
serielle Datenverbindung.
-
Die
durchgeleiteten Daten können
zwei Bits breit sein, während
der parallele Eingang an das PISO Shiftregister sechs Bits breit
und der serielle Ausgang des PISO Shiftregisters zwei Bits breit
sein kann. In diesem Fall kann der erste Multiplexer ein zwei Bit
Bus Multiplexer sein, so dass der serielle Datenstrom am Multiplexausgang
zwei Bits breit ist, so dass der serielle Sender einen zwei Bit
seriellen Datenstrom empfängt
und auf die serielle Datenverbindung als einen Single Bit seriellen
Datenstrom serialisiert. Jede Bahn kann weiter einen zweiten Multiplexer
mit einem ersten Eingang zum Empfangen re-synchronisierter Daten,
einen zweiten Eingang zum Empfangen von wiederholt abgetasteten (re-sampled)
Daten und einen selektiven Eingang aufweisen, der an ein lokales
Zeitgebermodussignal angeschlossen ist. Der zweite Multiplexer wählt zwischen
der Ausgabe der von wiederholt abgetasteten Daten oder der resynchronisierten
Daten als durchgeleitete Daten als Reaktion auf das lokale Zeitgebermodus
aus. Jede Bahn kann weiter eine Steuerlogik aufweisen, die an den
ersten Multiplexer und das erste PISO Shiftregister angeschlossen
ist. Die Steuerlogik kann eine Merge-Steuerlogik und eine Modus-Steuerlogik
aufweisen. Die Steuerlogik kann das erste Zeitgebersignal und ein
Merge-Aktivierungssignal empfangen, um das lokale Datenauswahlsignal zum
Zusammenfassen der serialisierten lokalen Daten und der durchgeleiteten
Daten in den seriellen Datenstrom als Reaktion auf das Merge-Aktivierungssignal
und das erste Zeitgebersignal zu erzeugen.
-
In
einer anderen Ausgestaltung der Erfindung ist ein Verfahren für ein Speichermodul
vorgesehen, das das Empfangen eines seriellen Eingangs-Datenstroms
aufweist, der durchgeleitete Datenframes, die zwischen leeren Datenframes
verstreut sind, repräsentiert;
Zusammenfassen lokaler Datenframes und der durchgeleiteten Datenframes
in einen seriellen Ausgabe-Datenstrom
als Reaktion auf ein Merge-Aktivierungssignal ohne Decodieren des
seriellen Eingangs-Datenstroms; und Übertragen des seriellen Ausgabe-Datenstroms
an einem Northbound-Datenausgang an ein nächstes Speichermodul oder eine
Speichersteuerung. Die lokalen Datenframes können in einem seriellen Ausgabe-Datenstrom
durch Ersetzen leerer Datenframes im seriellen Eingangs-Datenstrom
zusammengefasst werden. Beim Empfangen des seriellen Eingangs-Datenstroms
kann Abtasten (sampling) (aus als wiederholtes Abtasten (re-sampling)
bezeichnet) der Datenbits im seriellen Eingangs-Datenstrom oder
Re-Synchronisieren
der Datenbits im seriellen Eingangs-Datenstrom vorgesehen sein.
Beim Zusammenfassen der lokalen Datenframes und der durchgeleiteten
Datenframes, kann Serialisieren paralleler Bits der lokalen Datenframes
in serielle Datenbits und Multiplexing der seriellen Datenbits der
lokalen Datenframes und seriellen Bits der durchgeleiteten Datenframes
in serielle Bits des seriellen Ausgangs-Datenstroms als Antwort
auf das Merge-Aktivierungssignal
vorgesehen sein. Ein lokaler Datenframe kann parallel über einen
lokalen Bus in sechs Bit Paketen oder zwölf Bit Paketen als Reaktion
auf ein Bus-Modussignal selektiv empfangen werden.
-
In
einer anderen Ausgestaltung der Erfindung ist ein System vorgesehen
mit: einem Prozessor, einer mit dem Prozessor verbundenen Speichersteuerung
und wenigstens einer Speicherbank, die mit der Speichersteuerung
verbunden ist. Der Prozessor ist eingerichtet, Anweisungen auszuführen und
Daten zu verarbeiten. Die Speichersteuerung ist eingerichtet, Speicherschreibanweisungen
mit Schreibdaten vom Prozessor zu empfangen und Speicherlesanweisungen
vom Prozessor zu empfangen und gelesene Daten an diesen bereitzustellen.
-
Die
eine Bank des Speichers weist ein oder mehrere Speichermodule auf,
von denen jedes einen integrierten Pufferspeicher-Schaltkreis und
einen integrierten Random Access Memory Schaltkreis, die miteinander
verbunden sind, aufweist. Der integrierte Pufferspeicher-Schaltkreis beinhaltet
eine Southbound Serial Input/Output Schnittstelle mit einer oder mehreren
seriellen Bahnen zum Empfangen der Schreibdaten von der Speichersteuerung
und eine serielle Northbound Input/Output Schnittstelle mit einer
oder mehrerer serieller Bahnen eines seriellen Northbound-Eingangs
und einen seriellen Northbound-Ausgang zum Übertragen der gelesenen Daten
an die Speichersteuerung.
-
Jede
serielle Bahn in der Northbound Input/Output Schnittstelle hat einen
parallel-zu-seriell-Wandler
und einen ersten Multiplexer. Der parallel-zu-seriell-Wandler hat
einen parallelen Eingang, der an parallele Bits eines lokalen Datenbusses
angeschlossen ist, einen Zeitgebereingang, der an ein erstes Zeitgebersignal
angeschlossen ist, einen Load/Shift-Bar Eingang, der an ein Lastsignal
angeschlossen ist. Der parallel-zu-seriell-Wandler serialisiert
die parallelen Datenbits am lokalen Datenbus in serialisierte Lokaldaten
an einem ersten seriellen Ausgang. Der erste Multiplexer hat einen
ersten Dateneingang, der an den seriellen Ausgang des parallel-zu-seriell-Wandlers
angeschlossen ist, einen zweiten Dateneingang zum Empfangen serieller durchgeleiteter
Daten vom seriellen Northbound-Eingang und einen Auswah-Eingang, der an ein
lokales Datenauswahlsignal angeschlossen ist. Der erste Multiplexer
verbindet selektiv die serialisierten lokalen Daten und die seriellen
durchgeleiteten Daten in einen seriellen Datenstrom am seriellen
Northbound-Ausgang als Antwort auf das lokale Datenauswahlsignal.
-
Jede
serielle Bahn in der seriellen Northbound Input/Output Schnittstelle
kann weiter einen Sender zum Leiten des seriellen Datenstroms auf den
seriellen Northbound-Datenausgang in Richtung der Speichersteuerung
mit einem Eingang, der an den Multiplexausgang des ersten Multiplexers
zum Empfangen des seriellen Datenstroms angeschlossen ist, haben.
-
Jede
serielle Bahn der seriellen Northbound Input/Output Schnittstelle
kann weiterhin eine Steuerlogik aufweisen, die an den Multiplexer
und den ersten parallel-zu-seriell-Wandler angeschlossen ist. Die
Steuerlogik empfängt
das erste Zeitgebersignal und ein Merge-Aktivierungssignal, um das lokale Datenauswahlsignal
zu erzeugen und die serialisierten lokalen Daten und die seriellen
durchgeleiteten Daten im seriellen Datenstrom als Reaktion auf das Merge-Aktivierungssignal
und das erste Zeitgebersignal zusammenzufassen.
-
Für jede Speicherbank
im System weist die Speichersteuerung eine serielle Northbound-Eingangsschnittstelle
zum Empfangen einer oder mehrerer seriellen Datenbahnen von einem
oder mehreren Speichermodulen und eine serielle Southbound-Ausgabeschnittstelle
zum Übertragen
einer oder mehrerer Bahnen von seriellen Daten an das eine oder
die mehreren Speichermodule auf.
-
In
einer anderen Ausgestaltung der Erfindung ist ein Zwischenspeichermodul
vorgesehen, einschließlich
einer Platine, einer Mehrzahl von integrierten Random Access Memory
(RAM) Schaltkreisen und einem integrierten Pufferspeicher-Schaltkreis.
Die Platine hat eine seitliche Anbindung zum Verbinden mit einer
Aufnahme eines Hostsystems. Die Mehrzahl von integrierten Random
Access Memory (RAM) Schaltkreisen und dem integrierten Pufferspeicher-Schaltkreis sind
mit der Platine verbunden. Der integrierte Pufferspeicher-Schaltkreis
ist elektrisch an die Mehrzahl von Integrierten RAM Schaltkreisen
und der seitlichen Verbindung angeschlossen. Der Integrierte Pufferspeicher-Schaltkreis hat
eine Southbound Input/Output Schnittstelle und eine Northbound Input/Output
Schnittstelle mit einer Merge-Logik, einer Mehrzahl von Merge-Logikabschnitten
für eine
Mehrzahl von Bahnen der seriellen Datenströme.
-
Jeder
Merge-Logikabschnitt des integrierten Pufferspeicher-Schaltkreises
weist ein erstes Parallel-In-Serial-Output (PISO) Shiftregister
und einen ersten Multiplexer auf. Das erste Parallel-In-Serial-Output
(PISO) Shiftregister hat einen parallelen Eingang, der an einen
lokalen Datenbus angeschlossen ist, einen Zeitgebereingang, der
mit einem ersten Zeitgebersignal verbunden ist, einen Load/Shift-Bar Eingang,
der mit einem ersten Lastsignal verbunden ist. Das erste PISO Shiftregister
serialisiert parallele Daten an dem lokalen Datenbus in serialisierte
lokale Daten an einem ersten seriellen Ausgang. Der erste Multiplexer
hat einen ersten Dateneingang, der mit dem ersten seriellen Ausgang
des ersten PISO Shiftregisters verbunden ist, einen zweiten Dateneingang zum
Empfangen serialisierter durchgeleiteter Daten und einen ersten
Auswahleingang, der mit einem lokalen Datenauswahlsignal verbunden
ist. Der erste Multiplexer fasst die serialisierten lokalen Daten
und die serialisierten durchgeleiteten Daten in einem seriellen
Datenstrom an einem Multiplexausgang als Reaktion an das lokale
Datenauswahlsignal zusammen.
-
Jeder
Merge-Logikabschnitt kann weiterhin eine Steuerlogik aufweisen,
die an den ersten Multiplexer und das PISO Shiftregister angeschlossen
ist. Die Steuerlogik empfängt
das erste Zeitgebersignal und ein Merge-Aktivierungssignal, um das
lokale Datenauswahlsignal zu erzeugen, um die serialisierten lokalen
Daten und die serialisierten durchgeleiteten Daten in den seriellen
Datenstrom als Antwort auf das Merge-Aktivierungssignal und das
erste Zeitgebersignal einzuleiten.
-
Die
Northbound Input/Output Schnittstelle des integrierten Pufferspeicher-Schaltkreises
in dem Zwischenspeichermodul kann weiterhin eine Mehrzahl von Sendern
aufweisen, wobei jeder einen Eingang hat, der an einen korrespondierenden
Ausgang des ersten Multiplexers in jedem Merge-Logikabschnitt angeschlossen
ist, wobei die Mehrzahl von Sendern den seriellen Datenstrom empfangen
und ihn an eine serielle Datenverbindung leiten.
-
In
einer anderen Ausgestaltung der Erfindung ist ein Speichersystem
vorgesehen mit einer Mehrzahl von Zwischenspeichermodulen, die miteinander
verbunden sind, um eine Speicherbank zu bilden. Jedes Zwischenspeichermodul
weist eine Mehrzahl von integrierten Speicherschaltkreisen auf und einen
integrierten Pufferspeicherschaltkreis, der an die Mehrzahl von
integrierten Speicherschaltkreisen angeschlossen ist. Der integrierte
Pufferspeicherschaltkreis weist eine serielle Southbound Input/Output
Schnittstelle zum Empfangen und Weiterleiten von seriellen Southbound-Daten
von einer Speichersteuerung oder einem vorhergehenden Zwischenspeichermodul
an ein nächstes
Zwischenspeichermodul, eine serielle Northbound Input/Output Schnittstelle
zum Empfangen serieller Northbound-Daten von wenigstens einem Zwischenspeichermodul
als serialisierte durchgeleitete und weiter nach außen in Richtung
der Speichersteuerung geleitete Daten, einem Datenschreib First-In-First-Out
(FIFO) Pufferspeicher zum Speichern von Schreibdaten von der seriellen
Southbound Input/Output Schnittstelle, die an das Zwischenspeichermodul
durch einen Schreibbefehl geleitet ist, eine Speicher Input/Output
Schnittstelle zum Übertragen
von Schreibdaten, die im Schreibdaten FIFO Pufferspeicher gespeichert
sind, in wenigstens eine der Mehrzahl von integrierten Speicherschaltkreisen
und zum Übertragen
von gelesenen Daten von wenigstens einem der Mehrzahl von integrierten
Schaltkreisen in einen gelesenen Daten FIFO Pufferspeicherund den
gelesenen Daten FIFO Pufferspeicher zum Speichern von gelesenen Daten
von wenigstens einer der Mehrzahl von integrierten Speicherschaltkreisen
als lokale Daten, die von dem Zwischenspeichermodul durch einen
Lesbefehl geleitet sind, auf.
-
Die
serielle Northbound Input/Output Schnittstelle serialisiert die
lokalen Daten von der Mehrzahl von integrierten Speicherschaltkreisen
und leitet diese in einen seriellen Northbound Datenstrom mit den serialisierten
durchgeleiteten Daten auf einer Zeitbasis ein, ohne die empfangenen
seriellen Northbound-Daten zu decodieren. Die serielle Northbound Input/Output
Schnittstelle weist einen dritten FIFO Puffer, eine Daten-Mergelogik,
die an dem dritten FIFO Pufferspeicher angeschlossen ist, und eine Mehrzahl
von Sendern, die an die Daten-Mergelogik angeschlossen sind, auf.
-
Die
Daten-Mergelogik hat eine Mehrzahl von Merge-Logikabschnitt en,
die jeweils ein erstes Parallel-In-Serial-Output (PISO) Shiftregister
zum Serialisieren paralleler Daten am lokalen lokalen Datenbus in
serialisierte Daten an einem ersten seriellen Ausgang und einen
ersten Multiplex zum selektiven Einfädeln serialisierter lokaler
Daten und serialisierter durchgeleiteter Daten in einen seriellen
Datenstrom an ein Muliplexausgang als Antwort auf das lokale Datenauswahlsignal
aufweist. Das PISO Shiftregister hat einen parallelen Eingang, der
an einen lokalen Datenbus angeschlossen ist, einen Zeitgebereingang,
der mit einem ersten Zeitgebersignal verbunden ist, und einen Load-/Shift-Bar
Eingang, der mit einem ersten Lastsignal verbunden ist. Der erste
Multiplexer hat einen ersten Dateneingang, der mit dem ersten seriellen
Ausgang des ersten PISO Shiftregisters verbunden ist, einen zweiten
Dateneingang zum Empfangen serialisierter durchgeleiteter Daten
und einen ersten Auswahleingang, der mit einem lokalen Datenauswahlsignal
verbunden ist.
-
Jeder
der Mehrzahl von Sendern hat einen Eingang, der an einen entsprechenden
Ausgang des ersten Multiplexers in jedem Merge-Logikabschnitt angeschlossen
ist. Die Mehrzahl von Sendern empfangen Daten vom seriellen Datenstrom
und leiten diese an eine serielle Datenverbindung.
-
Im
Speichersystem kann jeder Merge-Logikabschnitt der Daten-Mergelogik
weiter eine Steuerlogik aufweisen, die an den ersten Multiplexer
und das erste PISO Shiftregister angeschlossen ist, um das erste
Zeitgebersignal und ein Merge-Aktivierungssignal zu empfangen und
das lokale Datenauswahlsignal zum Verbinden der serialisierten lokalen Daten
und der serialisierten durchgeleiteten Daten im seriellen Datenstrom
zu erzeugen.
-
Das
Speichersystem kann weiter eine Speichersteuerung aufweisen, die
an wenigstens eines der Mehrzahl von Zwischenspeichermodulen angeschlossen
ist. Die Speichersteuerung hat eine serielle Southbound-Ausgangsschnittstelle,
um den seriellen Southbound-Datenstrom an wenigstens eines der Mehrzahl
von Zwischenspeichermodulen zu übertragen
und eine serielle Northbound-Eingangsschnittstelle zum Empfangen
des seriellen Northbound-Datenstroms von wenigstens einem der Mehrzahl
von Zwischenspeichermodulen.
-
Bezugnehmend
auf 1A ist ein Blockdiagramm eines typischen Computersystems 100 dargestellt,
in dem Ausgestaltungen der Erfindung verwendet werden können. Das
Computersystem 100A weist eine Zentralprozessoreinheit
(CPU) 101, Input/Output Einrichtungen (I/O) 102,
etwa eine Tastatur, ein Modem, ein Drucker, externe Speichervorrichtungen
und Ähnliches
und Anzeigeeinrichtungen (M) 103, wie etwa einen Bildschirm
oder eine Graphikanzeige auf. Die Darstellungseinrichtungen (M) 103 können Computerinformation
in für
den Menschen verständlichen
Formaten wie etwa visuellen oder Audioformaten, bereitstellen. Das
System 100 kann eine Anzahl von verschiedenen elektronischen
Systemen, anderen als ein Computersystem, sein.
-
Bezugnehmend
auf 1B ist ein Client Server System 100B dargestellt,
in dem Ausgestaltungen der Erfindung verwendet werden können. Das
Client Server System 100B weist einen oder mehrere Clients 110A-110M auf,
die an ein Netzwerk 112 angeschlossen sind und einen Server 114,
der an das Netzwerk 112 angeschlossen ist. Die Clients 110A-110M kommunizieren
mit dem Server 114 über das
Netzwerk 112, um Information zu übertragen oder zu empfangen
und Zugriff auf jede Datenbank und/oder Anwendungssoftware zu erhalten,
die auf dem Server verwendet werden kann. Der Server 114 hat
eine zentrale Prozessoreinheit mit Speicher und kann weiter eine
oder mehrere Plattenlaufwerkspeichervorrichtungen aufweisen. Der
Server 114 kann in einem Storage Area Network (SAN) beispielsweise als
eine Network Attached Storage (NAS) Vorrichtung verwendet werden
und eine Reihe von Platten haben. Der Datenzugriff auf den Server 114 wird über das
Netzwerk 112 von mehreren Clients 110A-110C geteilt.
-
Sich
nun auf 2A beziehend ist ein Blockdiagram
einer Zentralprozessoreinheit 101A dargestellt, in der
Ausgestaltungen der Erfindung verwendet werden können. Die Zentralprozessoreinheit 101A weist
einen Prozessor 201, eine Speichersteuerung 202 und
einen ersten Speicher 204A eines ersten Speicherkanals
auf, die wie gezeigt und dargestellt miteinander verbunden sind.
Die Zentralprozessoreinheit 101A kann weiterhin einen Cachespeicher 203 aufweisen,
der zwischen der Speichersteuerung 202 und dem Prozessor 201 angeschlossen
ist und eine Plattenspeichereinrichtung 206, die an den
Prozessor 201 angeschlossen ist. Die Zentralprozessoreinheit 101A kann
weiterhin einen zweiten Speicherkanal mit einem zweiten Speicher 204B aufweisen, der
an die Speichersteuerung 202 angeschlossen ist. Wie durch
die Zentralprozessoreinheit 101A dargestellt, können die
Speichersteuerung 202 und der Cachespeicher 203 außerhalb
des Prozessors 201 sein.
-
Sich
nun 2B zuwendend ist ein Blockdiagramm einer anderen
Zentralprozessoreinheit 101B dargestellt, in der Ausgestaltungen
der Erfindung verwendet werden können.
Die Zentralprozessoreinheit 101B weist einen Prozessor 201' mit einer internen
Speichersteuerung 202' und
einem ersten Speicherkanal mit einem Speicher 204A auf,
der an die interne Speichersteuerung 202' des Prozessors 201' angeschlossen
ist. Der Prozessor 201' kann
weiterhin einen internen Cachespeicher 203' aufweisen. Die Zentralprozessoreinheit 101B kann
weiterhin einen zweiten Speicher 204B für einen zweiten Speicherkanal
und eine Plattenspeichereinrichtung 206 aufweisen, die
an den Prozessor 201' angeschlossen ist.
-
Die
Plattenspeichereinrichtung 206 kann eine Diskette, eine
Zipdiskette, eine DVD, eine Festplatte, eine wiederbeschreibbare
optische Disk, ein Flashspeicher oder eine andere nicht flüchtige Speichereinrichtung
sein.
-
Der
Prozessor 201, 201' kann
weiter einen oder mehrere Ausführungseinheiten
und einen oder mehrere Ebenen von Cachespeicher aufweisen. Andere
Ebenen von Cachespeichern können
außerhalb des
Prozessors und als Schnittstelle für die Speichersteuerung sein.
Der Prozessor, die eine oder mehrere Ausführungseinheiten oder die eine
oder mehrere Ebenen des Cachespeichers können Daten (einschließlich Anweisungen)
durch die Speichersteuerung mit dem Speicher 204A-204D lesen
oder schreiben. Beim Anschließen
an die Speichersteuerung 202, 202' können Adress-, Daten-, Steuerungs-
und Taktsignale mit dem Speicher als Teil der Speicherschnittstelle
verbunden sein. Die Prozessoren 201, 201' und die Plattenspeichereinrichtung 206 können Information
in den Speichern 204A, 204B sowohl lesen als auch
schreiben.
-
Jeder
der Speicher 204A und 204B, die in den 2A-2B dargestellt
sind, können
einen oder mehrere Zwischenspeichermodule (MM1-MMn) aufweisen, wie
etwa beispielsweise ein Fully Buffered (FB) Dual-In-Line Memory
Modul (DIMM), (FBDIMM) oder ein Fully Buffered (FB) Single In-Line Speichermodul
(SIMM), (FBSIMM).
-
Die
Speichersteuerung 202, 202' ist an jeden Speicher 204A-240B gekoppelt.
In einer Ausgestaltung der Erfindung ist die Speichersteuerung 202, 202' insbesondere
an einen Pufferspeicher(nicht gezeigt in den 2A-2B,
aber als Pufferspeicher 450A in 5 dargestellt).
In einem ersten Zwischenspeichermodul MM1 eines jeden Speichers 204A-204B angeschlossen.
Mit dem an die Pufferspeicher der Speichermodule angeschlossenen Speichersteuerung 202, 202' können direkte
Schnittstellen an die Speichervorrichtungen der Zwischenspeichermodule
(MM1-MMn) vermieden werden. In dieser Weise können verschiedene Arten von
Speichervorrichtungen verwendet werden, um Speicherung bereitzustellen,
während
die Schnittstelle zwischen dem Pufferspeicher und der Speichersteuerung
gleichbleibend verbleiben kann.
-
Sich
nun 3 zuwendend ist eine Zwischenspeichermodul (Buffered
Memory Module; BMM) Speichersteuerung (BMMMC) 302 dargestellt, die
an eine oder mehrere Speicherbänke 304A-304F (allgemein
als Speicherbank 304 oder Speicherbänke 304 bezeichnet)
angeschlossen ist. Die Speichersteuerung 302 kann mehr
als zwei Speicherkanäle und
mehr als zwei Speicherbänke
der Speichermodule unterstützen.
Jede Speicherbank 304 ist aus einer Mehrzahl von Zwischenspeichermodulen 310A-310H gebildet,
die miteinander in einer se riellen Kette verbunden sind. Diese serielle
Kette von Zwischenspeichermodulen 310A-310H wird auch manchmal als „Gänseblümchenkette" („daisy-chained") bezeichnet. Angrenzende
Speichermodule sind miteinander verbunden, manchmal bezeichnet als „daisy-chained", wie etwa beispielsweise
Speichermodul 310A, das an das angrenzende Speichermodul 310B angeschlossen
ist.
-
Jedes
Speichermodul 310A-310B in jeder Bank kommuniziert
bidirektional in einer seriellen Weise mit der Speichersteuerung 302 entlang
der seriellen Kette von Speichermodulen 310A-310H.
Es gibt eine serielle Southbound-Verbindung (SB) von der Speichersteuerung 302 zu
jeder Speicherbank 304, die auch als eine Outbound-Datenverbindung mit
Outbound-Befehlen
(z. B. lesen und schreiben) und Daten bezeichnet wird. Alle Schreibdaten
von der Speichersteuerung, die in die Speichermodule geschrieben
werden sollen, sind über
die serielle Southbound-Datenverbindung gesendet. Es gibt eine serielle
Northbound-Datenverbindung (NB) von jeder Speicherbank 304 zur
Speichersteuerung 302, die auch als eine Inbounddaten-Verbindung mit Inbounddaten
bezeichnet wird. Alle gelesenen Daten von den Speichermodulen werden
an die Speichersteuerung über
die serielle Northbound-Datenverbindung gesendet.
-
In
der seriellen Southbound-Datenverbindung (SB) sind ausgehende Daten
von der Speichersteuerung 302 an eine Speicherbank 304 als
erstes an das erste Speichermodul 310A gekoppelt, welches
die Daten lesen kann und an das Speichermodul 310B weiterleitet.
Das Speichermodul 310B kann die Daten lesen und an das
nächste
Speichermodul in der seriellen Kette weiterreichen und so weiter
und so fort, bis das letzte Speichermodul in der seriellen Southboundkette
erreicht ist. Das letzte Speichermodul in der seriellen Southboundkette,
Speichermodul 310H, hat kein weiteres Speichermodul, an
das Daten übergeben
werden, so dass die serielle Southbound-Datenverbindung endet.
-
In
der seriellen Northbound-Datenverbindung (NB) werden Daten seriell
in einer Richtung von der Speicherbank 304 an die Speichersteuerung 302 kommuniziert.
Jedes Speichermodul in jeder Speicherbank kommuniziert zurück zur Speichersteuerung
an der seriellen Northbound-Datenverbindung (NB). Das Speichermodul 310H beginnt
eine serielle Kette von Speichermodulen, die Daten in Richtung der
Speichersteuerung überreichen.
Vom Speichermodul 310H übertragene
serielle Daten durchlaufen oder werden anderweitig vom Speichermodul 310G weitergeleitet.
Während
das Speichermodul 310G die seriellen Daten vom vor herigen Speichermodul 310H weiterreichen
oder weiterleiten kann, kann es auch seine eigenen lokalen Daten
dem seriellen Northbound-Datenstrom hinzufügen, der sich in Richtung Speichersteuerung 302 bewegt.
In ähnlicher
Weise kann jedes Speichermodul in der Kette die seriellen Daten
vom vorherigen Speichermodul weiterreichen oder weiterleiten und
seine eigenen lokalen Daten in den seriellen Northbound-Datenstrom
einordnen, der zur Speichersteuerung 302 fortschreitet.
Das letzte Speichermodul in der seriellen Northboundkette, Speichermodul 310A, überträgt den finalen
seriellen Northbound-Datenstrom an die Speichersteuerung 302.
-
Die
seriellen Northbound- und Southbound-Datenverbindungen können angesehen
werden als Punkt-zu-Punkt Kommunikation von einem Speichermodul
zu einem anderen Speichermodul usw. entlang der seriellen Kette.
Der serielle Datenfluss von der Speichersteuerung 302 nach
Außen zum
Speichermodul 310A über
das Speichermodul 310H kann als ein südlicher Datenfluss bezeichnet werden.
Der serielle Datenfluss vom Speichermodul 310H durch das
Speichermodul 310Z an das Speichermodul 302 kann
als ein nördlicher
Datenfluss bezeichnet werden. In 3 ist der
südliche
Datenfluss durch einen mit SB bezeichneten Pfeil dargestellt, wo hingegen
der nördliche
Datenfluss durch einen mit NB bezeichneten Teil dargestellt ist.
-
Nun
auf 4 bezugnehmend ist ein Zwischenspeichermodul (Buffered
Memory Module; BMM) 310 dargestellt, das beispielhaft für die Speichermodule 310A-310H ist.
Das Zwischenspeichermodul 310 kann jeder Art sein, beispielsweise
ein SIMM oder DIMM. Das Zwischenspeichermodul 310 weist
einen integrierten Pufferspeicherschaltkreischip („Puffer") 450 und
integrierte Speicherschaltkreischips („Speichereinrichtungen") 452 auf,
die mit einer Platine 451 verbunden sind. Die Platine 451 weist
einen Seitenanschluss oder eine seitliche Verbindung 454 auf,
die sich mit einem Seitenanschluss der Hostplatine verbindet. Ein
Southbound-Dateneingang (SBDI) und ein Northbound-Dateneingang (NBDO)
des Speichermoduls 310 werden empfangen oder übertragen
an ein vorheriges Zwischenspeichermodul oder die Zwischenspeichersteuerung.
Ein Northbound-Dateneingang (NBDI) und ein Southbound-Datenausgang
(SBDO) des Speichermoduls 310 empfangen von oder übertragen
an ein nächstes Zwischenspeichermodul,
wenn vorhanden.
-
Sich
nun auf die 3 und 4 beziehend kommuniziert
die Speichersteuerung 302 mit den Pufferspeichern 450 eines
jeden Speichermoduls 310A-310H in jeder Speicherbank 304 durch
Verwenden des südlichen
Datenflusses und des nördlichen
Datenflusses. Die seitliche Verbindung 450 des ersten Speichermoduls,
das der Speichersteuerung in jeder Bank am nächsten ist, Speichermodul 310A, verbindet
den Pufferspeicher 450 eines jeden Speichermoduls 310A mit
der Speichersteuerung 302. Das Speichermodul 310A hat
kein angrenzendes Speichermodul im nördlichen Datenflusspfad. Der nördliche
Datenfluss vom Speichermodul 310A ist mit der Speichersteuerung 302 verbunden.
Die angrenzenden Speichermodule 310A-301H in jeder Bank
sind miteinander verbunden, so dass Daten gelesen, geschrieben und
durch jeden Pufferspeicher 450 jedes Speichermoduls weitergeleitet
werden können.
Das letzte Speichermodul, das in jeder Bank am weitesten von der
Speichersteuerung entfernt ist, Speichermodul 310H, hat
kein angrenzendes Speichermodul im südlichen Datenflusspfad. Daher
reicht Speichermodul 310H den Datenfluss entlang der seriellen
Kette von Speichermodulen nicht südlich weiter.
-
Die
Speichersteuerung 302 verbindet die Speichereinrichtungen 452 in
jedem Speichermodul nicht direkt. Der Pufferspeicher 450 in
jedem Speichermodul 310A-310H in jeder Speicherbank 304 verbindet
die Speichereinrichtungen 452 auf der Platine 351 direkt.
Der Pufferspeicher 450 bietet Datenpufferung für alle integrierten
Speicherschaltkreischips oder Einrichtungen 452 auf derselben
Platine 451 des Speichermoduls 310. Der Pufferspeicher 450 führt weiter
seriell-zu-parallel-Wandlung und parallel-zu-seriell-Wandlung der
Daten durch, wie auch Interleaving/Deinterleaving und Packen/Entpacken der
Daten wie benötigt.
Der Pufferspeicher 450 steuert auch seinen Abschnitt der
seriellen Kette der nördlichen
und südlichen
Datenverbindungen mit angrenzenden Speichermodulen. Zusätzlich,
im Fall des ersten Speichermoduls, Speichermodul 310A, steuert
der Pufferspeicher 450 auch seinen Abschnitt der seriellen
Kette der nördlichen
und südlichen
Datenverbindungen mit der Speichersteuerung 302. Zusätzlich,
im Fall des letzten Speichermoduls, Speichermodul 310H,
steuert der Pufferspeicher 450 auch die Initialisierung
der seriellen Kette von Speichermodulen und die Erzeugung von leeren
Frames oder leeren Paketen von Daten in der nördlichen Datenverbindung und
dem nördlichen
Datenfluss an die Speichersteuerung 302.
-
Ohne
eine direkte Verbindung zwischen der Speichersteuerung 302 und
den Speichereinrichtungen 452 der Speichermodule können die
Chips oder Einrichtungen 452 verschiedener Art, Geschwindigkeiten,
Größen etc.
sein mit denen der Pufferspeicher 450 kommunizieren kann.
Dieses erlaubt verbesserte Speicherchips in einem Speichermodul
zu verwenden, ohne die Hardwareschnittstellen zwischen der Speichersteuerung
und den Speichermodulen durch Kauf einer neuen Host- oder Hauptplatine
notwendig zu machen. Das Speichermodul, das in die Host- oder Hauptplatine
gesteckt ist, wird anstelle dessen aktualisiert. In einer Ausgestaltung
der Erfindung sind die integrierten Speicherchip-Schaltkreise oder Einrichtungen 452 DDR
Speicherchips mit Dynamic Random Access Memory (DRAM). Andererseits
können
die Speicherchips, integrierten Schaltkreise oder Einrichtungen 452 in
anderen Ausgestaltungen der Erfindung jede andere Art von Speicher
oder Speichereinrichtung sein.
-
Nun
auf 5 bezugnehmend ist eine Speicherbank 304 der
Speicherbänke 304A-304F eines
Speichersystems in größerem Detail
dargestellt, die an die Speicherpuffermodul (Buffer Memory Module;
BMM) Speichersteuerung 302 angeschlossen ist. In einer
Ausgestaltung der Erfindung ist die BMM Speichersteuerung 302 eine
Fully Buffered Dual Inline (FBD) Speichersteuerung und jedes der
Speichermodule 310A ist ein Fully Buffered Dual Inline
(FBD) Speichermodul (FBDIMM). Die Speicherbank 304 weist
ein oder mehrere Speichermodule 310A-310n auf,
die miteinander verkettet sind („daisy chained"). Jedes Speichermodul 310 funktioniert
als Repeater für
valide Daten, die in seriellen Bitströmen entlang der nördlichen
Datenverbindung (NB) und der südlichen
Datenverbindung (SB) fließen.
-
Jedes
Speichermodul 310A-310n in der Speicherbank 304 weist
einen Pufferspeicher 450A-450n auf. Jedes Zwischenspeichermodul 310A-310N weist
Speichereinrichtungen 452A-452N auf, die zueinander unterschiedliche
sein können. Beispielsweise
können
die Speichereinrichtungen 452A im Speichermodul 310 unterschiedlich
von den Speichereinrichtungen 452B im Zwischenspeichermodul 310B sein.
Das heißt,
der Pufferspeicher 450 in jedem Speichermodul macht den
Speichertyp, der für
die Speichereinrichtung verwendet wird, transparent von der Speichersteuerung 302.
-
Der
Pufferspeicher 450 in jedem Speichermodul funktioniert
als ein Repeater für
die Daten, die in seriellen Bitströmen entlang der nördlichen
Datenverbindung (NB) und der südlichen
Datenverbindung (SB) fließen.
Zusätzlich
kann der Pufferspeicher 450 in jedem Speichermodul seine
eigenen lokalen Daten in Bahnen von seriellen Bitströmen, die
entlang der nördli chen
Datenverbindung (NB) anstelle von Frames oder partiellen Frames
von freien oder invaliden Daten einfügen oder einfädeln.
-
Um
die Zeitsteuerung der Speichersteuerung 302 und den Speichermodulen 310A-310n zusammen
in der Speicherbank 304 zu synchronisieren, ist ein Zeitgeber 500 vorgesehen,
der an jedes Speichermodul und an die Speichersteuerung angeschlossen
ist. Ein Zeitgebersignal 501 vom Zeitgeber 500 ist
mit der Speichersteuerung 302 verbunden. Zeitgebersignale 502A-502n sind
mit den Puffern 450A-450n in den Speichermodulen 310A-310n verbunden.
-
Die
Speichersteuerung 302 kommuniziert durch die Speichermodule
in der Speicherbank über die
südlichen
Datenverbindungen SB1-SBn. Die Speichersteuerung 302 kann
Daten von jedem Speichermodul 310 innerhalb der Speicherbank 304 über die
nördliche
Datenverbindungen NB1-NBn empfangen. Die südlichen Datenverbindungen SB1-SBn können aus
einer oder mehrerer Bahnen von seriellen Daten bestehen. In ähnlicher
Weise können
die nördlichen
Datenverbindungen NB1-NBn aus einer oder mehr Bahnen von seriellen
Daten bestehen. In einer Ausgestaltung der Erfindung sind vierzehn Bahnen
von seriellen Daten in den nördlichen
Datenverbindungen NB1-NBn.
-
Das
letzte Speichermodul 310n, unabhängig ob es Daten zu senden
hat oder nicht, erzeugt einen pseudozufälligen Bitstrom und schickt
diesen in Richtung der Speichersteuerung 302 an der nördlichen Verbindung
Nbn. Der pseudozufällige
Bitstrom kann von einem Speichermodul an das nächste an den nördlichen
Verbindung NB1-NBn weitergereicht werden. Hat das Speichermodul 310n lokale
Daten an die Speichersteuerung 302 zu senden, erzeugt es
einen Datenframe mit den lokalen Daten und ordnet diesen an der
nördlichen
Verbindung NBn anstelle eines Datenframes des pseudozufälligen Bitstroms
an. Der pseudozufällige
Bitstrom kann eine Sequenz von Bits aufweisen, die in Datenframes
gepackt sind, die einen freien Datenframe anzeigen. Ein freier Datenframe
kann durch die anderen Speichermodule weiter in der Leitung folgend
(Speichermodule 310A-3109n-1) ersetzt werden,
um einen Frame von lokalen Daten in den seriellen Bitstrom, der
an die nördlichen
Verbindung NB1-NBn fließt,
einzubinden. Beispielsweise kann das Speichermodul 310B einen freien
Rahmen an der eingehenden nördlichen
Verbindung NB3 empfangen und einen Frame von lokalen Daten anstelle
des freien Frames in den seriellen Bitstrom an der ausgehenden nördlichen
Verbindung NB2 einbinden.
-
Das
in 5 dargestellte Speichersystem kann weiter einen
SM Bus (SMBus) 506 aufweisen, der von der Speichersteuerung 302 an
jedes der Speichermodule 310A-310N angeschlossen
ist. Der SM Bus 506 kann ein serieller Datenbus sein. Der SM
Bus 506 ist ein Seitenbandmechanismus für den Zugriff auf interne Register
des Puffers. Bestimmte Verbindungsparameter können durch ein BIOS im Pufferspeicher
gesetzt sein, bevor die nördlichen
und südlichen
seriellen Datenverbindungen aufgestellt werden. Der SM Bus kann
auch verwendet werden, um das System durch den Zugriff auf interne
Register des Pufferspeichers auf Fehler zu untersuchen.
-
Die
Speichersteuerung 302 kann ein Teil eines Prozessors (wie
durch den Prozessor 201' und die
Speichersteuerung 202' in 2B dargestellt) sein
oder ein separater integrierter Schaltkreis (wie durch Prozessor 201 und
Speichersteuerung 202 in 2A dargestellt)
sein. In jedem Fall kann die Speichersteuerung 302 Speicherschreibanweisungen
mit Schreibdaten vom Prozessor empfangen und Speicherlesanweisungen
vom Prozessor empfangen und Lesdaten an den Prozessor bereitstellen,
um Daten in den Speicher zu schreiben oder aus dem Speicher zu lesen.
Die Speichersteuerung 302 kann eine serielle Southboundausgabeschnittstelle
(SBO) 510 zum Übertragen
einer oder mehrerer Spuren von seriellen Daten an das eine oder
die mehreren Speichermodule in jeder Speicherbank aufweisen. Die
Speichersteuerung 302 kann weiter eine serielle Northboundeingabeschnittstelle
(NBI) 511 zum Empfangen einer oder mehrerer Spuren von
seriellen Daten von dem einen oder den mehreren Speichermodulen
in jeder Speicherbank aufweisen.
-
Nun
bezugnehmend auf 6 (6-1 und 6-2)
ist ein funktionelles Blockdiagramm des Puffers 450 für das Zwischenspeichermodul 310 dargestellt.
Der Pufferspeicher 450 ist ein integrierter Schaltkreis,
der auf der Platine 451 des Zwischenspeichermoduls 310 befestigt
sein kann. Um ein- und ausgehende Daten des Zwischenspeichermoduls 310 zu
verbinden, weist der Pufferspeicher 450 eine Southbound
Pufferspeicher I/O Schnittstelle 600A und eine Northbound
Pufferspeicher I/O Schnittstelle 600B auf.
-
Die
Northbound Pufferspeicher I/O Schnittstelle 600B verbindet
den nördlichen
Datenausgang (NBDO) 601 und den nördlichen Dateneingang (NBDI) 602.
Die Southbound Pufferspeicher I/O Schnittstelle 600A verbindet
den südlichen
Dateneingang (SBDI) 603 und den südlichen Datenausgang (SBDO) 604.
Der nördliche
Dateneingang 602 und der nördliche Datenausgang 601 weisen
vierzehn Bahnen von seriellen Datenströmen in einer Ausgestaltung
der Erfindung auf. Der südliche
Dateneingang 603 und der südliche Datenausgang 604 weisen zehn
Bahnen von seriellen Datenströmen
in einem Ausführungsbeispiel
der Erfindung auf.
-
Als
Schnittstelle für
die Speichereinrichtungen 452 weist der Pufferspeicher 450 eine
Speicher I/O Schnittstelle 612 auf. An der Speicher I/O
Schnittstelle 612 werden DRAM Daten bidirektional über einen
DRAM Daten/STROBE Bus 605 gereicht, während Adressen und Befehle über DRAM ADDRESS/COMMAND
Busse 606A-606B an die Speichereinrichtungen gesendet
werden. Die Speichereinrichtungen 650 sind über die
DRAM Taktgeberbusse 607A-607B getaktet, um den
Datentransfer mit der Speicher I/O Schnittstelle 612 zu
synchronisieren. Von der Kernlogik des Puffers 450 empfängt die
Speicher I/O Schnittstelle 612 Befehle über den CMD OUT Bus 692 vom
Multiplexer 635; Adressen über den ADD OUT Bus 693 vom
Multiplexer 637; und Schreibdaten über den DATA OUT Bus 691 vom Multiplexer 636.
Die Schreibdaten am DATA OUT Bus 691 werden an die geeigneten
Speichereinrichtungen über
den DRAM DATA STROBE Bus 605 kommuniziert. Adressdaten
am DATA OUT Bus 691 werden an die geeigneten Speichereinrichtungen über die
DRAM ADRESS/COMMAND Busse 606A-606B kommuniziert.
Die Befehle am CMD OUT Bus 692 werden an die geeigneten
Speichereinrichtungen über
die DRAM ADRESS/COMMAND Busse 606A-606B kommuniziert.
-
Um
das Kern-Zeitgeber-Signal 502 für die funktionellen Blocks
der Pufferspeicher 450 zu erzeugen, empfängt er ein
Referenzzeitsignal (REF CLCK) 502, das in einer Phase Lock
Schleife (Phase Lock Loop; PLL 613 angeschlossen ist. Das
Referenzzeitsignal (REF CLOCK) 502 kann ein differenzielles
Eingangssignal sein und durch einen differenziellen Eingangsempfänger entsprechend
empfangen werden. Der Pufferspeicher 450 empfängt weiter
einen SM Bus 506, der an eine SM Bussteuerung 629 angeschlossen
ist. Ein Resetsignal (Reset#) 608 ist in einen Reset-Steuerungsblock 628 eingesetzt,
um den Pufferspeicher 450 und die funktionellen Blocks
zurückzusetzen,
wenn seine Aktivität
herunter geht.
-
Zwischen
der Speicher I/O Schnittstelle 612 und den Pufferspeicher
I/O Schnittstellen 600A-600B ist
die Kernlogik des Puffers 450. Die Kernlogik des Puffers 450 wird
verwendet, um Daten aus den Speichereinrichtungen auszulesen und
sie als lokale Daten über
die nördliche
Datenschnittstelle 600B auszuleiten. Zusätzlich wird
jede andere Antwort von einem Speichermodul durch den Pufferspeicher
aus und in den seriellen nördlichen
Datenstrom über
die nördliche
Datenschnittstelle 600B geleitet. Die Kernlogik des Puffers 450 wird
auch verwendet, um Daten in die Speichereinrichtungen zu schreiben,
die von der südlichen
Datenschnittstelle 600A empfangen werden. Die Befehle zum
Lesen und Schreiben von Daten werden von der südlichen Datenschnittstelle 600A empfangen.
Wird auf die Speichereinrichtungen 452 eines bestimmten
Speichermoduls 310 nicht zugegriffen, können serielle Daten am nördlichen
Dateneingang 602 und dem südlichen Dateneingang 603 durch
die Pufferspeicher I/O Schnittstellen 600A-600B auf
den nördlichen
Datenausgang 601 und den südlichen Datenausgang 604 weitergereicht werden.
In dieser Weise werden Daten von anderen Zwischenspeichermodulen 310 durch
die Speichersteuerung an der nördlichen
Datenschnittstelle 600B weitergeleitet ohne durch die Kernlogik
des Puffers 450 verarbeitet werden zu müssen. In ähnlicher Weise können Daten
von der Speichersteuerung an ein anderes Speichermodul an der südlichen
Datenschnittstelle 600A weitergeleitet werden, ohne von der
Kernlogik des Puffers 450 verarbeitet werden zu müssen.
-
Die
Kernlogik des Puffers 450 weist funktionelle Blocks zum
Lesen von Daten und Schreiben von Daten von/in die Speichereinrichtungen 452 auf. Die
Kernlogik des Puffers 450 weist eine Phase Lock Schleife
(Phase Lock Loop; PLL) 613, einen Daten CRC Generator 614,
einen Lese FIFO Pufferspeicher 6633, einen 5 in 1 Bus Multiplexer 616,
einen sync und leeres Muster Generator 618, einen NB LAI
Pufferspeicher 620, einen Integrated Built In Self-Tester für die Verbindung
(IBIST) 622B, ein Verbindungsinitialisierungs SM und Steuer
und Einrichtungsstatusregister (configuration status register; CSRs) 627B, eine
Resetsteuerung 625, eine Kernsteuerung und Einrichtungsstatusregister
(CSR) Block 627, einen LAI Steuerungsblock 628,
eine SMbus Steuerung 629, einen externen MEMBIST Speicherkalibrierungsblock 630 und
einen Fehlerblock 646B auf, die wie in 6 gezeigt
miteinander verbunden sind. Die Kernlogik des Puffers 450 kann
weiter einen Befehlsdecodierer und einen CRC Überprüfungsblock 626, einen
Idle Built In Self Tester (IBIST) Block 622A, einen Verbindungsinitialisierungs
SM und Steuerung und CSR Block 624A, eine Speicherzustandsteuerung
und CSRs 632, einen Datenschreib FIFO Pufferspeicher 634,
einen 4 in 1 Bus Multiplexer 635, einen 4 in 1 Bus Multiplexer 636,
einen 3 in 1 Bus Multiplexer 637, einen LAI Lo gikblock 638,
einen Initialisierungsmusterblock 640, einen 2 in 1 Bus
Multiplexer 642 und einen Fehlerblock 646A aufweisen,
die wie in 6 gezeigt, miteinander
verbunden sind.
-
Ein
Multiplexer weist wenigstens zwei Dateneingänge, einen Ausgang und wenigstens
einen Steuer oder Auswahleingang zum Auswählen des Dateneingangs auf,
der am Ausgang des Multiplexers bereitgestellt ist. Für einen
Zweieingangsmultiplexer wird ein Steuer- oder Auswahleingang verwendet,
um die Daten auszuwählen,
die vom Multiplexer ausgegeben werden. Ein Busmultiplexer empfängt eine
Mehrzahl von Bits an jedem Dateneingang und hat einen Ausgang mit
einer Mehrzahl von Bits. Ein 2 in 1 Bus Multiplexer hat zwei Busse
als Dateneingang und einen einzelnen Busausgang. Ein 3 in 1 Bus
Multiplexer hat drei Busse als Dateneingang und einen einzelnen
Busausgang. Ein 4 in 1 Bus Multiplexer hat vier Busse als Dateneingang
und einen einzelnen Busausgang.
-
Innerhalb
des Pufferspeichers 454 weist jeder der Pufferspeicher
I/O Schnittstellen 600A-600B einen
FIFO Pufferspeicher 651, eine Daten-Mergelogik 650,
einen Sender 652, einen Empfänger 654, einen Resynchronisierungsblock 653 und
einen Demultiplexer/Seriell-Parallel-Wandlerblock 650 auf. Daten
können
jede der PufferI/O Schnittstellen 600A-600B über einen
Resynchronisierungspfad 661 oder einem re-sample Pfad 662 ohne
sich mit der Kernlogik zu verbinden, durchlaufen. Durch die Ausgestaltungen
der Erfindung können
lokale Daten, die dem Pufferspeicher 450 zugeordnet sind,
in den seriellen Datenstrom zum Überschreiben
eines freien Frames einfließen,
ohne dass die Kernlogik einen seriellen Datenstrom empfangen und
bestimmen muss, an welchem Ort die leeren Frames darin angeordnet sind.
-
Der
Multiplexer 616 wählt
aus, welche Daten in Richtung des FIFO Puffers 651 der
nördlichen
Pufferspeicher I/O Schnittstelle 600B geleitet werden zum
Ausleiten als lokale Daten an den seriellen Bahnen der nördlichen
Datenausgabe 601. Prinzipiell kann der Multiplexer 616 den
Status oder andere Steuerinformation von der Kernsteuerung und dem CSR
Block 627 auswählen,
Daten vom Lese FIFO Pufferspeicher 633 lesen, Daten mit
beigefügten CRC
Daten vom CRC Generator 614, Synchronisation oder freie
Muster vom Mustergenerator 618, Lesen oder Musterdaten
vom IBIST Block 622B überprüfen.
-
Der
Multiplexer 642 wählt
aus, welche Daten in Richtung des FIFO Puffers 651 der
südlichen
Pufferspeicher I/O Schnittstelle 600A geleitet werden zum
Ausleiten an den seriellen Bahnen des südlichen Datenausgangs 604.
Allgemein kann der Multiplexer 642 Initialisierungsmuster
von dem Initialisierungsmusterblock 640 auswählen oder
Musterdaten vom IBIST Block 642A überprüfen.
-
Bezugnehmend
auf 7A ist ein Blockdiagramm der Datenverbindungslogik 650 dargestellt, die
an den Sender 652 angeschlossen ist. Der Sender 652 ist
aus N Bahnen der Sender 752A-752n gebildet. Wie
vorher genannt ist die Anzahl von Bahnen in einem Ausführungsbeispiel
der Erfindung zehn. In einem anderen Ausführungsbeispiel der Erfindung
ist die Zahl der Bahnen vierzehn. In der Daten-Mergelogik 650 ist
ein Daten-Mergelogikabschnitt 700A-700n für jede der N Bahnen.
-
Ein
paralleler lokaler Datenbus 660 vom First-In-First-Out
(FIFO) Pufferspeicher 651 schließt sich an jeden Datenverbindungslogikabschnitt 700A-700n an.
Die Bahnen der seriellen Daten des re-synch Bus 661 verbinden
sich mit jedem Datenverbindungslogikabschnitt 700A-700n. Die
Bitbreite des re-synch Bus 661 beträgt das Zweifache der Zahl an
Bahnen. Zwei Bits jeder Bahn des re-synch Bus 661 sind
an jeden Datenverbindungslogikabschnitt 700A-700N angeschlossen.
Die Bahnen von seriellen Daten des re-sample Bus 662 sind
an jeden Datenverbindungslogikabschnitt 700A-700n angeschlossen.
Die Bitbreite des re-sample Bus 662 ist das Zweifache der
Anzahl von Bahnen. Zwei Bits jeder Bahn des re-sample Bus 662 ist
an jeden Datenverbindungslogikabschnitt 700A-700N.
angeschlossen
-
Sowohl
der re-sample Bus 662, als auch der re-synch Bus 661 übertragen
einen Zwei-Bit seriellen Datenstrom für jede Bahn in einen Daten-Mergelogikabschnitt 700A-700N.
Im Gegensatz dazu verbindet der parallele Datenbus 660 sechs
oder zwölf
Bits für jede
Bahn in jeden Daten-Mergelogikabschnitt 700A-700N.
Die Bitbreite des parallelen lokalen Datenbusses 660 ist
zwölffach
größer als
die Anzahl von Bahnen. Jedoch sind in einem sechs Bit Modus nur
sechs Bits der zwölf
pro Bahn aktiv. Der Ausgang eines jeden Daten-Mergelogikabschnitts 700A-700N ist
ein Zwei Bit serieller Datenstrom, der jeweils an die seriellen
Sender 752A-752N angeschlossen ist. Jeder serielle
Sender 752 wandelt zwei parallele Bits der seriellen Daten
in einen Single Bit seriellen Datenstrom an der Spur 601A-601N des
nördlichen
Datenausgangs (NBDO) 604 oder der Bahn 604A-604N des
südlichen
Datenausgangs (SBDO) 601, wie in 7A gezeigt,
um.
-
Bezugnehmend
auf 7B ist ein schematisches Diagramm eines Daten-Mergelogikabschnitts 700i dargestellt,
der an einen Sender 752i angebunden ist. Der Daten-Mergelogikabschnitt 700i stellt
einen der Daten-Mergelogikabschnitte 700A-700n für jede der
N Bahnen, die in 7A dargestellt sind, dar. Der
Sender 752i stellt einen der Sender 752A-752n für jede der
in 7A dargestellten N Bahnen dar.
-
Jeder
der Daten-Mergelogikabschnitte 700i kann in einem von zwei
Bit Breitenmoden arbeiten, einem vollständigen Framemodus von zwölf Bit Breite
(auch als 12 Bit Modus bezeichnet) oder einem Halbframemodus von
sechs Bit Breite (auch als 6 Bit Modus bezeichnet). Ein Modussteuerungssignal (6Bit_Modus) 722 zeigt
an und steuert welche der zwei Bit Breiten Moden der Daten-Mergelogikabschnitt 700i mit
der Kernlogik funktioniert.
-
Im
vollständigen
Framemodus oder Zwölf
Bit Modus verwendet die Kernlogik einen vollständigen Frame von zwölf Bits,
um über
den Bus 660i mit dem Daten-Mergelogikabschnitt 700i zu
kommunizieren. Die unteren sechs Bits des Bus 660i werden
durch den Daten [5:0] Bus 726 dargestellt, während die oberen
sechs Bits des Bus 660i durch einen verzögerten Daten
[5:0] Bus 727 dargestellt werden. Die zwölf Bits
der lokalen Daten (Daten [5:0] und verzögerte Daten [5:0]), die in
den seriellen Datenstrom gespeist und übertragen werden sollen, werden
in einen unteren Parallel-In-Serial-Output (PISO) Wandler 708B und
einen oberen Parallel-In-Serial-Output (PISO) Wandler 708A am
Anfang von dem Frame durchein „Early_Load_Puls" Steuersignal 720 eingeklinkt.
-
Der
untere Parallel-In-Serial-Output (PISO) Wandler 708B und
der obere Parallel-In-Serial-Output
(PISO) Wandler 708A sind Parallel-In-Serial-Output (PISO)
Shiftregister und können
auch als solche hier bezeichnet sein. Jeder der PISO Wandler 708A, 708B,
auch als PISO Shiftregister 708A, 708B bezeichnet,
hat einen parallelen Dateneingang, einen Zeitsignaleingang, einen
Load/Shift-Bar Eingang, einen seriellen Eingang (SIN) und einen
seriellen Ausgang (SO). Der serielle Ausgang des oberen PISO Shiftregisters 708A ist
an den seriellen Eingang des unteren PISO Shiftregisters 708B angeschlossen, um
das Serialisieren der zwölf
parallelen Bits des lokalen Datenbusses 660i zu unterstützen. Der
serielle Eingang des oberen PISO Shiftregisters 708A kann an
ein logisches Tief (z. B., Erde) in einer Ausgestaltung der Erfindung
oder ein logisches Hoch (z. B., VDD) in einer anderen Ausgestaltung
der Erfindung angeschlossen sein. Der serielle Ausgang (SOUT) der
PISO Shiftregister 708A-708B ist zwei Bits zur Zeit
in einer Ausgestaltung der Erfindung. In einer anderen Ausgestaltung
der Erfindung kann der serielle Ausgang (SOUT) des PISO Shiftregisters 708A-708B ein
Bit zur Zeit sein.
-
Im
Zwölf Bit
Modus sind sechs Bit von Bus 726 an den parallelen Dateneingang
(PIN) des unteren PISO Shiftregisters 708B angeschlossen,
während
die sechs Bits des Bus 727 an den parallelen Dateneingang
(PIN) des oberen PISO Shiftregisters 708A angeschlossen
sind. Diese zwölf
Bits sind in jedes PISO Shiftregister geladen, während des frühen Ladepulses
(early load pulse) 720 mit dem Modussteuersignal 722,
das einen Zwölf
Bit Bus Modus anzeigt (z. B., Modussteuersignal 722 zeigt
den Zwölf Bit
Modus durch eine logische Tiefebene und einen Sechs Bit Modus durch
eine logische hohe Ebene in einer Ausgestaltung der Erfindung an).
Im Zwölf
Bit Modus setzt der freie Eingang am D-Typ Flip-Flop 706A den
Q Ausgang des D-Typ Flip-Flop 706A hoch auf eine logische
Null, so dass der Steuereingang an den Multiplexer 703 den
Bus 726 als Ausgang an den Bus 728 wählt.
-
Im
Halbframemodus oder Sechs Bit Modus verwendet die Kernlogik einen
halben Frame von Sechs Bits zum Kommunizieren von Daten über den Bus 660i mit
dem Daten-Mergelogikabschnitt 700i zu einer
Zeit. Die Kernlogik sendet sechs Bits von Daten zu einer Zeit oder
frühe Daten
(Data [5:0] 726) und späte
Daten (Delayed_data [5:0]), die um die Hälfte eines Frames versetzt
sind. Im Halbframemodus wird nur das untere PISO Shiftregister 708B des
Datenverbindungslogikabschnitts 700i zum Einreihen von Daten
in den seriellen Datenstrom zur Übertragung verwendet.
-
Im
Sechs Bit Modus verbindet der Multiplexer 703 die sechs
Bits von Bus 726 mit dem parallelen Dateneingang (PIN)
des unteren PISO Shiftregisters 708B während des fürhen Ladepulses 720 und die
sechs Bits von Bus 727 mit dem parallelen Dateneingang
(PIN) des unteren PISO Shiftregisters 708B während des
späten
Ladepulses 721. Die sechs Bits von Bus 726 werden
in das PISO Shiftregister 708B während des späten Ladepulses 721 mit
dem Modussteuersignal 722, das einen Sechs Bit Modus anzeigt,
geladen. Die sechs Bits von Bus 727 werden in das PISO
Shiftregister 708B während
des frühen
Ladepulses 720 mit dem Modussteuersignal 722,
das einen Sechs Bit Bus Modus anzeigt, geladen.
-
Der
Datenverbindungsabschnitt 700i weist eine Datenpfadlogik
und eine Steuerlogik 701i auf. Die Datenpfadlogik lässt die
lokalen Daten und die durchgeleiteten Daten in den seriellen Bitstrom
selektiv einfließen.
Die Steuerlogik 701i steuert die Datenpfadlogik in jedem
Daten-Mergesabschnitt,
um das Einfügen
von lokalen Daten und durchgeleiteten Daten in den reellen Bitstrom
geeignet zusynchronisieren.
-
Die
Steuerlogik 701i mit der Zustandsteuerungslogik und der
Mergesteuerungslogik weist drei einzelne Bits zwei zu eins Multiplexer 702A-702C, Set/Reset
D Flip-Flops 706A-706B,
ein ODER Gatter 710, ein UND Gatter 711 und einen
Invertierer 712 auf, die wie in 7 dargestellt
und gezeigt miteinander verbunden sind. Die durch die Steuerungslogik 701i erzeugten
Signale sind an die Datenpfadlogik angeschlossen. Die Multiplexer 702A-702B der D-Typ
Flip-Flop 706A, das ODER Gatter 710, das UND Gatter 711 und
der Invertierer 712 liefern die Modussteuerungslogik. Der
Multiplexer 702C und der D-Typ Flip-Flop 706B liefern
die Mergesteuerungslogik.
-
Die
Datenpfadlogik weist einen Sechs Bit zwei zu eins Bus Multiplexer 703,
zwei Bit 2 zu 1 Bus Multiplexer 704-705 und ein
Paar von sechs Bit In/zwei Bit Out Parallel In Serial Out (PISO)
Wandlern 708A-708B, die miteinander wie in 7B gezeigt und
dargestellt verbunden sind.
-
Jeder
Abschnitt 700i der Daten-Mergelogik 650 kann eine
Zwei Bit serielle Spur von re-synch Daten 661i, eine Zwei
Bit serielle Spur von re-sample Daten 662i und eine Zwölf Bit parallele
Spur von lokalen Daten 660i empfangen. Die parallele Spur
von lokalen Daten 660i stammt von der Kernlogik des Puffers 450 und
kann verschiedene Arten von Daten sein. Beispielsweise können die
lokalen Daten 660i von Speichereinrichtungen 452 eingelesene
Daten, Cyclic Redundancy Check (CRC) Daten, Testdaten, Statusdaten
oder jede andere Daten sein, die empfangen, übertragen oder von der Kernlogik
des Puffers erzeugt werden können.
-
Die
Zwei Bit Bahn der re-sync Daten 661i und die Zwei Bit Spur
von re-sample Daten 662i haben keinen Kontakt mit der Kernlogik
des bestimmten Puffers 450 und sind in durchgeleitete Daten
(auch als „durchgeleitete
Daten" bezeichnet) 725 durch
den Multiplexer 505 als Antwort auf ein lokales Zeitgebermodus 736 gemultiplext.
Arbeitet der Pufferspeicher 450 im lokalen Zeitgebermodus,
werden die re-synch Daten auf die durchgeleiteten Daten 725 ge multiplext.
Wenn der Pufferspeicher 450 nicht im lokalen Zeitgebermodus
arbeitet, werden die re-sample Daten 662 auf die durchgeleiteten
Daten 725 gemultiplext. In einem lokalen Zeitgebermodus
wird ein Phase Locked Loop (PLL) Zeitgebergenerator verwendet, um
ein lokales Zeitgebersignal im Pufferspeicher zu erzeugen, das verwendet
wird, um den eingehenden seriellen Datenstrom zum Erzeugen der re-synch
Daten zu resynchronisieren. Wenn nicht im lokalen Zeitgebermodus,
wird ein empfangenes Zeitsignal von den Datenframes im empfangenen
seriellen Datenstrom erzeugt und damit synchronisiert, das verwendet
wird, um den seriellen Eingangs-Datenstrom abzutasten, um die re-sample
Daten zu erzeugen. Das Clock2UI Signal 723 wird zwischen
dem lokal erzeugten Zeitgebersignal und dem empfangenen Zeitgebersignal
als Antwort auf das lokale Zeitgebermodussignal 736 umgeschaltet.
Die Quelle der durchgeleiteten Daten 725 kann vom Pufferspeicher 450 eines
anderen Speichermoduls 310 auf der nördlichen (NB) Seite sein (ebenso
bezeichnet als weitergeleitete nördliche
Daten); oder vom Pufferspeicher 450 von einem anderen Speichermodul 310 auf
der südlichen (SB)
Seite (auch als weitergeleitete südliche Daten bezeichnet) oder
alternativ von der Speichersteuerung 302 an der südlichen
(SB) Seite.
-
Der
2 zu 1 Bus Multiplexer 704 empfängt die zwei Bits von seriellen
durchgeleiteten Daten 725 als ersten Eingang, einen Zwei
Bit seriellen Ausgang vom 6-2 PISO Shiftregister 708B als
einen zweiten Eingang und ein lokales Datenauswahlsignal (PISO_SEL) 732 als
sein Steuereingang. Der Zwei Bit serielle Ausgang 735 vom
6-2 PISO Shiftregister 708B ist zwei realisierte Bits von
Lokaldaten 735 vom parallelen Datenbus 660i. Daher
wählt der
Multiplexer 704 als Antwort auf das lokale Datenauswahlsignal
(PISO_SEL) 732 entweder die Ausgabe von zwei Bits von durchgeleiteten
Daten 725 oder zwei Bits von serialisierten lokalen Daten 735 vom
parallelen Datenbus 660i, die durch das 6-2 PISO Shiftregister 708B erzeugt
wurden. Die Zwei Bit Ausgabe 735 vom Multiplexer 704 ist
an den Sender 752 angeschlossen und weiter in ein einzelnes
Bit an der Spur NBDOi/SBDOi 601i, 604i serialisiert.
In dieser Weise können
lokale Daten von der Kernlogik mit durchgeleiteten Daten gemultiplext
und in eine Spur des seriellen Bitstroms an NBDOi/SBDOi 601i, 604i eingespeist
werden.
-
Das
lokale Datenauswahlsignal (PISO_SEL) 632, das das Einspeisen
von Daten in den seriellen Bitstrom steuert, ist durch den D Flip-Flop 706B erzeugt.
In Antwort auf ein Merge-Aktivierungssignal 420 erzeugt
der D Flip-Flop 706B das lokale Datenauswahlsignal (PISO_SEL) 732 an
der ansteigenden Flanke des Zeitgebersignals Clock_2UI 723.
Das Merge- Aktivierungssignal 724 ist
an einen ersten Eingang des Multiplexers 702C angeschlossen.
Das lokale Datenauswahlsignal (PISO_SEL) 732 ist rückgekoppelt
und an einen zweiten Eingang des Multiplexers 702C angeschlossen.
Der Ausgang von Multiplexer 702C ist an den D Eingang des
D Flip-Flops 706B angeschlossen. Ein frühes Ladepuls (EARLY_LOAD_PULSE)
Signal 720 ist an den Auswahlsteuereingang des Multiplexers 702C angeschlossen.
Wenn der frühe
Ladepuls 720 hoch ist, wird das Merge-Aktivierungssignal 724 vom
Multiplexer 702C ausgeleitet und mit dem D Eingang des
D Flip-Flops 706B verbunden. Wenn der frühe Ladepuls 720 niedrig
ist, wird das lokale Datenauswahlsignal (PISO_SEL) 732 durch
den Multiplexer 702C rückgekoppelt
und an den D Eingang des D Flip-Flops 706B angeschlossen,
um den aktuellen Zustand des lokalen Datenauswahlsignals (PISO_SEL) 732 zu
bewahren. Während
der frühe Ladepuls 720 periodisch
getaktet ist, wenn das Merge-Aktivierungssignal 724 niedrig
ist, gibt es den D Flip-Flop 706B frei, so dass sein Q
Ausgang ein logisches Signal auf niedriger Ebene ist, das das Einfügen von
Daten zu geeigneter Zeit beendet.
-
Das
Merge-Aktivierungssignal 724 ist in das lokale Datenauswahlsignal
(PISO_SEL) 732 am Rand des Zeitgebersignals Clock_2UI 723 synchronisiert.
Wenn das Merge-Aktivierungssignal 724 während des
frühen
Ladepulses 720 abgetastet wird, um das lokale Datenauswahlsignal
(PISO_SEL) 732 zu erzeugen, wird der Multiplexer 704 auf
Framegrenzen umgeschaltet (12 Bits von Daten pro Spur in einem Frame).
Wenn das Merge-Aktivierungssignal 724 an
der aufsteigenden Flanke des Zeitgebersignals Clock_2UI 723 hoch
ist, geht das lokale Datenauswahlsignal (PISO_SEL) 732 hoch,
um den Multiplexer 704 zu steuern, um die zwei realisierten
Bits von lokalen Daten 735 als seinen Zwei Bit Ausgang 730 auszuwählen. Wenn
das Merge-Aktivierungssignal 724 an der steigenden Flanke
des Zeitgebersignals Clock_2UI 723 niedrig ist, verbleibt
das lokale Datenauswahlsignal (PISO_SEL) 732 niedrig, um den
Multiplexer 704 zu steuern, die zwei durchgeleiteten Bits
von Daten 725 als seinen Zwei Bit Ausgang 730 auszuwählen.
-
Als
Antwort auf das lokale Datenauswahlsignal (PISO_SEL) 732 als
ein logisches Hoch, werden die zwei seriellen Bits im parallelen
Datenbus 660i in die Spuren NBDOi/SBDOi 601i, 604i eingespeist.
Als Antwort auf das lokale Datenauswahlsignal (PISO_SEL) 732 als
logisches Tief, werden die zwei Bits von durchgeleiteten Daten 724 vom
Multiplexer 704 ausgewählt,
um auf der Bahn NBDOIi/SBDOi 601I, 604i ausgegeben
zu werden.
-
Da
das lokale Datenauswahlsignal (PISO_SEL) 732 auf das Merge-Aktivierungssignal 724 reagiert,
ermöglicht
das Erzeugen des Merge-Aktivierungssignals 724 den parallelen
Daten von Bus 660i in den seriellen Datenstrom der Spur
NBDOi/SBDOi 601i, 604i eingespeist zu werden.
Das Merge-Aktivierungssignal 624 wird durch die Verbindungssteuerungslogik
(im Verbindungsinitialisierungs SM und Steuerung und CSR funktionalen Block 624B,
der in 6 dargestellt ist) frühzeitig
erzeugt, um lokalen Daten zu ermöglichen,
in den seriellen Datenstrom zu geeigneter Zeit einzufließen.
-
Sich
kurzzeitig auf 5 beziehend, wird die zeitliche
Anpassung des Merge-Aktivierungssignals für jedes
Speichermodul 310 während
der Initialisiserung und des Trainingssysems etabliert. Beachte, dass
das Merge-Aktivierungssignal für
das letzte Speichermodul 310n in einer Bank 304 eher
ein Datenübertragungssignal
ist, da keine weiteren Speichermodule in der Kette sind, die in
der nördlichen Datenverbindung
Daten erzeugen.
-
Bezugnehmend
auf 10 ist ein Flussdiagramm für die Initialisierung, das
Training und das Ausführen
der Pufferspeicher im Zusammenführen von
lokalen Daten und durchgeleiteten Daten in einen seriellen Datenstromausgang
dargestellt. Das Flussdiagramm beginnt bei Block 1000.
-
Bei
Block 1002 wird der Pufferspeicher in jedem Speichermodul
einer jeden Speicherbank initialisiert. Während der Initialisierung einer
Speicherbank hat jedes Speichermodul eine initialisierte südliche und
nördliche
serielle Datenverbindung (kann auch als Teil des Verbindungstrainings
bezeichnet werden). Die Speichersteuerung 302 sendet ein
Initialisierungsmuster an die südliche
(SB) Datenverbindung SB1-SBn. Während
der Initialisierung empfängt der
Pufferspeicher 450n im letzten Speichermodul 310n das
Initialisierungsmuster an der südlichen
Datenverbindung SBn und überträgt es zurück an der nördlichen
(NB) Datenverbindung NB1-NBn durch andere Speichermodule zurück zur Speichersteuerung 302.
Da jeder Pufferspeicher seinen eigenen Taktgeber hat, wird das Initialisierungsmuster,
das an der nördlichen
(NB) Datenverbindung NB1-NBn vom Pufferspeicher empfangen ist für Bit Locking
und Frameanpassungszwecke in jeder Spur von seriellen Daten verwendet.
Der Zeitgeber im Pufferspeicher kann mit dem Initialisierungsmuster
synchronisiert werden. Der zeitliche Ablauf der Logik kann an dem Initialisierungsmuster
ausgerichtet werden, um Datenpakete im seriellen Datenstrom zu empfangen
wie auch einen Kopf von einem Datenframe und jede Fehlerberichtigung/Erkennung
oder andere Datenfelder innerhalb eines Pakets zu analysieren. Die
Erzeugung des Early_Ld_Pulses 720 wird zusammenfallend
mit dem Beginn der von einem bestimmten Speichermodul empfangenen
Datenframes gesetzt. Die Erzeugung des Late_LD_Pulses 721 wird
an einer Halbframegrenze der Datenframes, die von einem bestimmten
Speichermodul empfangen werden, gesetzt.
-
Als
nächstes
wird bei Block 1004 jeder Pufferspeicher in jedem Speichermodul
von jeder Speicherbank trainiert. Nachdem das Initialisierungsmuster
ausgesendet wurde, sendet die Speichersteuerung 302 während des
Trainings ein Trainingsmuster zum letzten Speichermodul 310n in
einer bestimmten Bank 304 aus. Während des Trainings empfängt der
Pufferspeicher 450n im letzten Speichermodul 310n das
Trainingsmuster an der südlichen
Datenverbindung SBn und sendet es zurück an der nördlichen (NB) Datenverbindung
NB1-NBn durch andere Speichermodule zurück zur Speichersteuerung 302.
Jedes Speichermodul beobachtet eines der Trainingsmuster an der
südlichen
(SB) Datenverbindung und bestimmt die Anzahl von Zeit oder Taktzyklen,
um zum selben Speichermodul an der nördlichen (NB) Datenverbindung
zurückzukehren. Eine
Rückkehrzeit
(roundtrip timing) wird bestimmt für eine bestimmte Position von
jedem Speichermodul.
-
Vorausgesetzt,
dass die Anfragen nicht übermäßig zusammengebündelt sind,
stellt die Rückkehrzeit
einen Zeitpunkt dar, in der es für
ein bestimmtes Speichermodul sicher ist, Daten in die nördliche
Datenverbindung einzuspeisen, ohne mit validen Daten anderer Speichermodule
zu kollidieren. Bei einem bestimmten Speichermodul wird erwartet,
dass ein freies Datenpaket zu diesem Zeitpunkt an der nördlichen
Datenverbindung empfangen wird nachdem ein Speicheranfragebefehl
an der südlichen
Datenverbindung erkannt wird. Zu diesem Zeitpunkt kann das freie
Datenpaket durch ein lokales Datenpaket ersetzt werden. Die Rückkehrzeit
und der Befehl für
die Datenverzögerungszeit
für ein
bestimmtes Speichermodul sind die Basis zum Setzen des zeitlichen
Ablaufs des Merge-Aktivierungssignals, das verwendet wird, um lokale
Daten in die nördliche
Datenverbindung einzuspeisen. Wenn die Rückkehrzeit lang ist, können Daten
im Voraus abgefangen und in einem FIFO Pufferspeicher angeordnet
werden, der auf den richtigen Moment wartet, um in den nördlichen
Datenstrom einzuspeisen. Die Entfernung zwischen Lese und Schreibe
FIFO Pufferspeicher Punkten in der nördlichen Schnittstelle des
Puffers können
basieren auf der Rückkehrzeit
gesetzt werden.
-
Die
Rückkehrzeit
kann als eine Funktion einer ganzen Zahl von Perioden der Bitratentaktrate, Clock_2UI 723,
bestimmt werden. Die Anzahl von Speichermodulen in einem Kanal und
der Befehl für Datenverzögerung von
dem letzten Speichermodul im Kanal bestimmen die Rückkehrzeit
für diesen
Kanal. Ein Befehl zur Datenverzögerung
für jedes
Speichermodul kann weiter bestimmt werden, um die zeitliche Abfolge
des Merge-Aktivierungssignals in dem Speichermodul etablieren zu
helfen. Der Befehl zur Datenverzögerungsabfolge
kann ein oder mehreren der folgenden Zeitperioden aufweisen: die
Zeit für
einen Befehl, um von der südlichen
IO Schnittstelle 600A zur Speicher IO Schnittstelle 612 übertragen
zu werden, die Zeit für
den Befehl, um von der Speicher IO Schnittstelle 612 an
die Speichereinrichtungen 452 übertragen zu werden; Unterschiede
in der Zeitgeberabfolge für
die Speicher IO Schnittstelle 612 und die Speichereinrichtungen 452,
Routingverzögerungen
in den Zeitgebersignalen und Befehlssignalen an die Speichereinrichtung 452;
jede set-up/Haltezeiten für
die Pufferspeicher 450 und die Speichereinrichtungen 452,
die Leselatenz in den Speichereinrichtungen 452 (z. B.
CAS timing and jegliche zusätzliche
Latenz); Routingverzögerungen
in den Datensignalen und Abtastsignalen von den Speichereinrichtungen 452 an
den Pufferspeicher 450, Datenverzögerungsversatz zwischen Speichereinrichtungen;
Verzögerungen
durch die Speicher IO Schnittstelle 612, jegliche set-up/Haltezeiten
für die
Pufferspeicher 450 und die Speichereinrichtungen 452; und
Zeiten für
Daten, die von der Speicher IO Schnittstelle 612 an die
nördliche
IO Schnittstelle 600B übertragen
werden (dieses kann das Puffern und Abgleichen von Verzögerungen
von Daten innerhalb des Puffers 450 beinhalten). Der Befehl
zur Datenverzögerungssteuerung
kann als eine Anzahl von mehreren Frames oder einem Bruchteil davon
bestimmt werden mit einer Granularität der Verzögerungszeit als eine Funktion
einer ganzen Zahl von Perioden (Bit Zeiten wie etwa Frame/12 oder Clock_2UI/2)
einer Bitratentaktrate. Der Befehl zur Datenverzögerungssteuerung eines Speichermoduls,
wie etwa dem letzten Speichermodul 310n kann durch einen
Registerwert programmatisch erhöht werden,
wenn zusätzliche
Verzögerungszeit
erwünscht
ist.
-
Nach
der Initialisierung und dem Training ist jeder Pufferspeicher als
nächstes
an Block 1006 bereit, einen eingehenden seriellen Datenstrom
von einem seriellen Dateneingang zu empfangen. Jedoch überträgt der Pufferspeicher
im letzten Speichermodul 310n in der Speicherbank 304 entweder
freie Pakete oder liest angeforderte Datenpakete an der nördlichen
Datenverbindung in Richtung der Speichersteuerung 302.
Andernfalls wird ein eingehender serieller Datenstrom empfangen,
der den durchgeleiteten Datenframes, die zwischen den freien Datenframes
eingestreut sind, entspricht.
-
Als
nächstes
wird an Block 1008 eine Bestimmung mit Hinblick auf die
Verfügbarkeit
von lokalen Daten vorgenommen. Wenn lokale Daten zum Einfügen in den
seriellen Datenstrom vorhanden sind, springt der Steuerungsfluss
zu Block 1010. Wenn keine Daten zum Einfließen in den
seriellen Datenstrom vorhanden sind, springt der Steuerungsfluss
zu Block 1014.
-
Bei
Block 1014 mit keinen lokalen Daten zum Einfließen, werden
die durchgeleiteten Daten an den seriellen Datenausgang übertragen.
Die durchgeleiteten Daten können
ihre Datenbits im eingehenden seriellen Datenstrom wiederholt abgetastet (re-sampled)
haben. Alternativ können
die durchgeleiteten Daten ihre Datenbits in dem eingehenden seriellen
Datenstrom re-synchronisiert
haben. Dann springt der Steuerungsfluss zurück zu Block 1006, um
den seriellen Datenstrom kontinuierlich zu empfangen.
-
Bei
Block 1010 mit lokalen Daten zum Einfließen, ersetzen
die Frames der lokalen Daten die durchgeleiteten Daten im ausgehenden
seriellen Datenstrom. Das bedeutet, wenn lokale Daten von einem
Pufferspeicher gesendet werden müssen,
dass Datenframes in eingehendem seriellen Datenstrom fallengelassen
und Frames von lokalen Daten anstelle dessen in Antwort auf das
Merge-Aktivierungssignal gesendet werden. Die Frames der lokalen
Daten und die durchgeleiteten Daten werden zusammen durch Serialisieren
paralleler Bits von den lokalen Datenframes in serielle Datenbits
und darauffolgendes Multiplexing der seriellen Datenbits der lokalen Datenframes
und der seriellen Bits der durchgeleiteten Datenframes in serielle
Bits des ausgangsseriellen Datenstroms in Antwort auf das Merge-Aktivierungssignal
serialisiert. Während
der Serialisierung und des Trainings stellt die Host und Speichersteuerung
sicher, dass freie Datenframes im seriellen Eingangs- Datenstrom
durch lokale Datenframes ersetzt werden. Der Pufferspeicher muss
nicht überprüft werden,
wenn der eingehende Frame im seriellen Eingangs-Datenstrom, der
ersetzt wird, ein freier Datenframe ist oder nicht.
-
Bei
Block 1012 wird der serielle Ausgangs-Datenstrom, einschließlich der
eingefügten Daten,
an den seriellen Datenausgang an das nächste Speichermodul höher in der
Kette oder alternativ an die Speichersteuerung gesendet.
-
Als
nächstes
springt der Steuerungsvorgang zurück zu Block 1006,
um den seriellen Eingangs-Datenstrom von dem seriellen Dateneingang kontinuierlich
zu empfangen.
-
Wie
vorher besprochen, können
die lokalen Daten von der Kernlogik und dem Pufferspeicher 450 in
sechs Bits, Stücken
oder zwölf
Bit Stücken
zur selben Zeit ausgegeben werden. Das Zustandssteuerungssignal
(6Bit_Modus) 722 bestimmt, ob der Daten-Mergelogikabschnitt 700i als
Sechs Bit Modus (Halbframemodus) oder als Zwölf Bit Modus (Vollframemodus)
arbeitet. Das Zustandssteuerungssignal (6Bit_Modus) 722 ist
an die Auswahl oder den Steuereingang des Multiplexers 702A und
den ersten Eingang des UND Gatters 711 und den Eingang
des Inverterierers 712 gekoppelt.
-
Das
frühe Ladepulssignal 720 steuert
das Beladen der ersten sechs Bits am parallelen Datenbus 660i.
Ein spätes
Ladepulssignal 721 steuert das Beladen der zweiten sechs
Bits am parallelen Datenbus 660i. Ein später Ladepuls 721 ist
in einen ersten Eingang des ODER Gatters 710 gekoppelt.
Das frühe Ladepulssteuersignal 720 ist
in den ersten Eingang des Multiplexers 702B, den zweiten
Eingang des ODER Gatters 710, den ersten Eingang des Multiplexersignals 702A,
einen Load/Shift-Bar Eingang des 6-2 PISO Shiftregisters 708A und
den Auswahleingang des Multiplexers 702C gekoppelt.
-
Das
Zeitgebersignal Clock_UI 723 ist mit den Zeitgebereingängen des
D Flip-Flops 706A-706B und
den Zeitgebereingängen
des 6_2PISO Shiftregisters 708A-708B gekoppelt.
Der Ausgang des Multiplexers 702A ist mit dem Load/Shift-Bar
Eingang des 6-2 PISO Shiftregisters 708B verbunden.
-
Der
parallele Eingang des 6-2 PISO Shiftregisters 708A ist
an den Sechs Bit verzögerten
Datenbus 727 angeschlossen. Der serielle Zwei Bit Ausgang
des 6-2 PISO Shiftregisters 708A ist an den serielle Zwei
Bit Eingang des 6-2 PISO Shiftregisters 708B angeschlossen.
Der parallele Eingang des 6-2 PISO Shiftregisters 708B ist
an den Sechs Bit Ausgang vom Multiplexer 703 angeschlossen.
In dieser Weise können
zwölf Datenbits,
wenn ein Datenverbindungslogikabschnitt 700i in einem Zwölf Bit Modus
ist, in das 6-2 PISO Shiftregister 708A-708B geladen werden und dann
seriell vom 2 Bit seriellen Ausgang 708B durch den Multiplexer 704 verschoben
werden und mit dem Sender 752i verbunden werden.
-
Der
serielle Sender 752i ist doppelt durch ein Zeitgebersignal
getaktet, um die zwei parallelen Bitsätze als seine Ausgabe 601i, 604i in
serielle Einzelbits zu wandeln.
-
Der
Datenverbindungslogikabschnitt 700i ist in einem 12 Bit
Modus, wenn das 6Bit_Modus Kontrollsignal 722 ein logisches
Tief ist. Der Datenverbindungslogikabschnitt 700i ist in
einem 6 Bit Modus, wenn das 6 Bit Modus Steuersignal 722 ein
logisches Hoch ist. Die Steuerlogik 710 bzw. 712 in
Verbindung mit dem Multiplexer 702B und dem D Flip-Flop 706A erzeugen
ein Datenbusauswahlsignal (Data_Sel) 729, das mit dem Auswahleingang
des Multiplexers 703 verbunden ist, um einen 12 Bit Modus
oder einen 6 Bit Modus als Antwort auf das 6 Bit Modus Steuersignal 722 herzustellen.
Wenn das Datenbusauswahlsignal 729 ein logisches Tief ist,
werden 12 Datenbits parallel in die 6-2 PISO Shiftregister 708A, 708B geladen.
Wenn das Datenbusauswahlsignal 729 ein logisches Hoch ist,
werden 6 Bits des Datenbusses 729 mit dem 6-2 PISO Shiftregister 708B verbunden.
-
In
einem 6 Bit Modus können
entweder das frühe
Ladepulssignal 720 oder der späte Ladepuls 721 Daten
parallel in das 6-2 PISO Shiftregister 708B laden. Sowohl
im 6 Bit als auch im 12 Bit Modus wird der frühe Ladepuls 720 nur
zum parallelen Laden von Daten vom Datenbus 727 in das
6-2 PISO Shiftregister 708A verwendet.
-
Der
serielle Eingang des 6-2 PISO Shiftregisters 708A ist mit
Erde gekoppelt, so dass nur Nullen seriell hinter den zu übertragenden
Daten verschoben werden. Alternativ kann der serielle Eingang des 6-2
PISO Shiftregisters 708A an VDD angeschlossen sein, so
dass nur logische Einsen seriell hinter den zu sendenden Daten verschoben
werden.
-
Der
Q Ausgang des D Flip-Flops 706A ist an den zweiten Eingang
des Multiplexers 702B derart angeschlossen, dass wenn der
Ausgang des UND Gatters 711 eine logische Reihe ist, sich
der Q Ausgang mit dem D Eingang des D Flip-Flops 706A verbindet,
um den geladenen Logikstatus von dem Datenbusauswahlsignal (DATA_SEL) 729 zu
behalten.
-
Nun
bezugnehmend auf 8 ist ein Zeitablaufdiagramm
von Wellenformen dargestellt, das den Daten-Mergelogikabschnitt 700i darstellt,
der im 12 Bit Modus arbeitet. Das bedeutet, dass das 6 Bit Modussteuersignal 722 im
Zeitablaufdiagramm von 8 ein logisches Tief ist.
-
In 8 ist
das Clock_2UI Signal 723 durch die Wellenform 823 dargestellt.
Das Kerntaktgebersignal 611 ist durch die Wellenform 811 dargestellt.
Die unteren sechs Bits der Daten (MEM_DATA IN [5:0]) 690A am
parallelen Datenbus 690 sind durch die Wellenform 890A dargestellt.
Die oberen sechs Bits von Daten (MEM_DATA IN [111:6]) 690B am
parallelen Datenbus 690 sind durch das Wellenformdiagramm 890B dargestellt.
Die unteren sechs Bits von Daten (FBD_DATA [5:0]) 726 am
parallelen Datenbus 760i sind durch das Wellenformdiagramm 826 dargestellt.
Die oberen sechs Bits von Daten [FBD_DATA [11:6]) 727 am
parallelen Datenbus 660i sind durch das Wellenformdiagramm 827 dargestellt. Das
Merge-Aktivierungssteuerungssignal 724 ist durch
das Wellenformdiagramm 824 dargestellt. Das frühe Ladepulssteuersignal 720 ist
durch die Wellenform 820 dargestellt. Das späte Ladepulssteuersignal 721 ist
durch die Wellenform 821 dargestellt. Das lokale Datenauswahlsteuersignal
(PISO_SEL) 723 ist durch die Wellenform 832 dargestellt.
Der Einzelbit serielle Ausgabedatenstrom MBDOi 601i ist
durch die Wellenform 801 dargestellt.
-
Ohne
dass irgendwelche lokale Daten in den nördlichen seriellen Datenstrom
einfließen,
reicht der Pufferspeicher 450 die empfangenen Bits am nördlichen
Dateneingang 602 („weitergeleitete
Daten" 725) an
den Sender 752i in der Hochgeschwindigkeits-Taktraten-Domäne, wobei
die Kernlogik des Puffers 450 umgangen wird. Das lokale
Datenauswahlsteuersignal (PISO_SEL) 732 ist niedrig, wenn die
durchgeleiteten Daten 725 in den Sender 752i, wie
durch die Wellenform 832 dargestellt, gemultiplext werden.
-
Wie
vorher beschrieben, ist der „Early_Ld_Pulse" 720 eingerichtet,
um mit dem Beginn eines Frames (wie an der Verbindung zu erkennen)
zusammenzufallen und der late_ld_pulse 721 ist eingerichtet,
die halbe Framegrenze zu sein, während
des anfänglichen
Trainings einer Bahn von der seriellen Datenverbindung. Ein Datenframe
ist eine logische Einheit von Daten über der Verbindung, wenn in
einem vollständigen
Frame-Betriebsmodus und besteht aus zwölf Datenbits in einer Ausgestaltung
der Erfindung.
-
Im
vollständigen
Frame-Betriebsmodus sind zwölf
Bits eines Frames in das PISO Shiftregister unter Verwendung des
Early_Ld_Pulse Signals 720 geladen. Das „late_ld_pulse" Signal 721 wird
nicht verwendet, um Bits in die PISO Shiftregister zu laden. Sowohl
das obere als auch das untere PISO Shiftregister 708A-8708B werden
in diesem Modus verwendet. Das Sechs Bit_Modus Steuersignal 722,
das im Zwölf
Bit Modus niedrig ist, bedingt das Data_Sel Signal 729 im
Zwölf Bit
Modus durch Beseitigen des Ausgangs des D Flip-Flops 706A niedrig
zu sein. Mit dem niedrigen „Data_Sel" Signal 729 im
Zwölf Bit Modus,
sind die sechs unteren Datenbits (FBD_DATA [5:0] 726 von
Bus 660i an das untere PISO Shiftregister 708B über den
Multiplexer 703 angeschlossen.
-
Die
periodische Erzeugung des Early_Ld_Pulse 720 ermöglicht auch
das Abtasten des Merge-Aktivierungssignals 724 durch
den D Flip-Flop 706B. Die periodische Erzeugung des Early_Ld_Pulse 720,
das aktiv hoch ist, steuert den Multiplexer 702C selektiv,
um das Merge-Aktivierungssignal 724 als
seine Ausgabedaten auszuwählen,
die mit dem Dateneingang D des D Flip-Flops 706B verbunden
werden.
-
Wie
bereits erwähnt,
wird das Merge-Aktivierungssignal 724 zu einer geeigneten
Zeit erzeugt, um lokale Daten von einem bestimmten Speichermodul in
eine Bahn von nördlichen
seriellen Daten einzuführen,
einen freien Frame oder ein Datenpaket im seriellen Datenstrom ersetzend.
Die Wellenform 824 stellt einen aktiven hohen Puls 844 dar,
der erzeugt wird, wenn lokale Daten an den oberen Bits (FBD_DATA
[11:6]) 727 und unteren Bits (FBD_DATA [5:0]) 726 des
Datenbusses 660i verfügbar
sind.
-
Wenn
der aktive hohe Puls 844 in der Wellenform 824 des
Merge-Aktivierungssignals 724 erzeugt wird, ermöglichen
die Pulse 840A-840B im early_ld_Pulse Signal 720 dem
aktiven hohen Puls 844 des Merge-Aktivierungssignals 724 durch
den D Flip-Flop 706B unter Verwendung des Clock_2UI Signals 7223 abgetastet
zu werden. Dieses erzeugt einen aktiven hohen Puls 842 in
einer Wellenform 832 des lokalen Datenauswahlsignals (PISO_SEL) 732. Der
aktive hohe Puls 842 des lokalen Datenauswahlsignals (PISO_SEL) 732 bedingt,
dass der Multiplexer 704 vom Bereitstellen der Zwei Bit „durchgeleiteten
Daten" 725 an
seinem Ausgang zum Bereitstellen der serialisierten lokalen Zwei
Bit Daten 735 anstelle dieser an seinem Ausgang bereitstellt.
Das Umschalten von durchgeleiteten Daten 725 auf lokale
Daten 735 tritt an den Framegrenzen auf, wenn der aktive hohe
Puls 842 erstmals erzeugt wird. Dieses liegt daran, dass
die absteigende Flanke des „Early_Ld_Pulse" 720, die
dem PISO Shiftregister 708A-708B den Beginn des
Verschiebens erlaubt, mit dem Frame-Startpunkt übereinstimmt.
-
Wenn
Daten einfließen
mit sowohl niedrigem „Early_Ld-Pulse" 720 als
auch niedrigem Multiplexerausgang 731, verschieben die
PISO Shiftregister 708A-708B die zwölf Bits
von lokalen Daten seriell mit zwei Bits zur Zeit am seriellen Ausgang 735 unter Verwendung
des Clock_2UI Taktgebersignals 723. Der Sender 725i serialisiert
die zwei Bits in einen seriellen Einzelbit Datenstrom am NBDOi Ausgang 601i,
wie durch die lokalen Daten dargestellt, die oberhalb der Wellenform 801 angezeigt
sind.
-
Bezugnehmend
auf 9 ist ein zeitliches Ablaufdiagramm von Wellenformen
dargestellt, die die Daten-Mergelogikabschnitt 700i, der
in einem Sechs Bit Modus arbeitet, abbilden Das bedeutet, dass das
Sechs Bit Modussteuersignal (6BIT_MODUS) 722 ein logisches
Hoch ist, wie durch die Wellenform 922 im zeitlichen Ablaufdiagramm
von 9 dargestellt.
-
In 9 ist
das Clock_2UI Signal 723 durch die Wellenform 923 dargestellt.
Das Kernzeitgebersignal (Kern_clk) 611 ist durch die Wellenform 901 dargestellt.
Die unteren sechs parallelen Datenbits (MEM_DATA IN [5:0]) 690A am
Speicherdatenbus 690 sind durch die Wellenform 990A dargestellt.
Die oberen sechs parallelen Datenbits (MEM_DATA IN [11:6]) 690B des
Speicherdatenbusses 690 sind durch die Wellenform 990B dargestellt.
Die unteren sechs Bits von Daten (FBD_DATA [5:0]) 726 am
parallelen Datenbus 660i sind durch das Wellenformdiagramm 926 dargestellt.
Die oberen sechs Bits von Daten (FBD_DATA [11:6]) 727 am
parallelen Datenbus 660i sind durch das Wellenformdiagramm 927 dargestellt.
Das Merge-Aktivierungssteuerungssignal 724 ist durch das
Wellenformdiagramm 927 dargestellt, das früher auftritt
als das der Wellenform 824 von 8. Das frühe Ladepulssteuerungssignal (EARLY_LD_PULSE) 720 ist
durch die Wellenform 920 dargestellt. Das späte Ladepulssteuersignal (LATE_LD_PULSE) 721 ist
durch die Wellenform 921 dargestellt. Das Datenbusauswahlsteuersignal (DATA_SEL)729 ist
durch die Wellenform 929 dargestellt. Das Lokaldatenauswahlsteuersignal (PISO_SEL) 732 ist
durch Wellenform 932 dargestellt. Der Einzelbit serielle
Ausgabedatenstrom NBDOi 601i ist durch Wellenform 901 dargestellt.
-
Im
Sechs Bit Modus wird das untere PISO Shiftregister 708B verwendet,
um parallele Datenbits in serielle Daten durch Umschalten von Bits
umzuwandeln. Das Datenbusauswahlsignal (DATA_SEL) 729 schaltet
um, abhängig
davon, ob die letzten signifikanten Bits des Frames, FBD_Data [5:0] 726,
oder die am meisten signifikanten sechs Bits des Frames, FBD_Data [11:6] 727,
in das untere PISO Shiftregister 708B durch den gewählten Ausgang
des Busmulitplexers 703 geladen sind.
-
Sowohl
der „Early_Ld_Pulse" 720 als
auch der „Late_Ld_Pulse" 721 können das
untere PISO Shiftregister 708B veranlassen, entweder Daten
zu laden oder Daten zu verschieben, weil der Ausgang des ODER Gatters 710 mit
dem Load/Shift-Bar Eingang des unteren PISO Shiftregisters 708B über den Multiplexer 702A verbunden
ist, wenn das 6BIT_MODUS Signal 722 hoch ist.
-
Sind
der „Early_Ld_Pulse" 720 und
der „Late_Ld_Pulse" 721 niedrig,
werden Bits aus dem unteren PISO Shiftregister 708B heraus
verschoben. Ebenso während
des parallelen Ladens von Bits in das untere PISO Shiftregister 708B,
wenn der Load/Shift-Bar Steuereingang hoch ist, setzen vorher geladene
Bits fort, nach außen
verschoben zu werden. Wenn der Load/Shift-Bar Steuereingang nach einem parallelen
Laden von Datenbits auf niedrig zurückkehrt, werden die neu geladenen
Bits durch das untere PISO Shiftregister 708B verschoben.
In dieser Weise können
alle sechs Bits verschoben werden, während ein neuer Satz von parallelen
Bits geladen wird.
-
Die
am wenigsten signifikanten sechs Bits des Frames, FBD_Data [5:0] 726 sind
in das untere PISO Shiftregister 708B durch die Pulse 940A und 940B in
der Wellenform 920 des „Early_Ld_Pulse""720 geladen, wenn das Datenbusauswahlsignal
(DATA_SEL) 729 tief ist, wie etwa beispielsweise an den
Tiefpunkten 949C, 949D. Die am meisten signifikanten
sechs Bits des Frames, FBD_Data [11:6] 727, werden dann
in das untere PISO Shiftregister 708B durch die Pulse 941A und 941B in
der Wellenform 921 des „Late_Ld_Pulse" 721 geladen,
wenn das Datenbusauswahlsignal (DATA_SEL) 729 hoch ist,
beispielsweise während der
Pulse 949A, 949B.
-
Im
Sechs Bit Modus ist das Umschalten zwischen den serialisierten „durchgeleiteten
Daten" 725 und
den serialisierten lokalen Daten 735 ähnlich dem vorher beschriebenen
Zwölf Bit
Modus Betrieb und wird aus Gründen
der Kürze
hier nicht wiederholt. Beim Zusammenfassen von Daten wechselt das PISO
Shiftregister 708B zwischen seriellem Verschieben der sechs
am meisten signifikanten Bits oder der sechs am wenigsten signifikanten
Bits von lokalen Daten mit zwei Bits zur Zeit auf den seriellen Ausgang 735 unter
Verwendung des Clock_2UI Zeitgebersignals 723. Der Sender 725i serialisiert
die zwei Bits weiter in einem seriellen Einzelbit Datenstrom am
NBDOi Ausgang 601i, wie durch die lokalen Daten dargestellt,
die oberhalb der Wellenform 901 gezeigt sind.
-
Während im
Sechs Bit Modus ein vollständiger
Frame von Daten noch übertragen
wird, reduzieren Ausgestaltungen der Erfindung die Latenz von lokalen
Daten, die in den seriellen Datenstrom einfließen. Durch Vergleich der 8 und 9 tritt
das Einbringen von lokalen Daten in 9 um eine
Framezeit früher
auf.
-
Ausgestaltungen
der Erfindung ermöglichen das
direkte (on the fly) Einbringen von durchgeleiteten Daten und lokalen
Daten in die serielle Datenverbindung, ohne dass eingehende Pakete
von dem seriellen Eingangsdatenstrom decodiert werden müssen, um
die Anordnung eines freien Paketes zu bestimmen. Bisher wurde der
eingehende serielle Datenstrom empfangen, entpackt/decodiert und
wieder in Frames durch die Kernlogik zusammengebaut, bevor er weitergeleitet
wurde. Ausgestaltungen der Erfindung vermeiden das Entpacken/Decodieren
des eingehenden seriellen Datenstroms und dessen Zusammenbau in
Datenframes und dem darauffolgenden Codieren/Packen für die weitere Übertragung. Die
Ausgestaltungen der Erfindung ermöglichen das Weiterleiten vom
eingehenden seriellen Datenstrom und das Einbringen von lokalen
Daten in den seriellen Datenstrom ohne die Kernlogik eines integrierten Pufferspeicherschaltkreises
einzubeziehen. In einem Multispeichermodulsystem können die
seriellen Kommunikationskanäle
fortfahren zu arbeiten, auch wenn ein integrierter Speicherschaltkreis
in einem der miteinander verketteten Speichermodule nicht funktional
ist.
-
Ausgestaltungen
der Erfindung sind eingereichtet, um Speicherzugriffsoperationen
mit niedriger Latenz zu ermöglichen.
Dieses ermöglicht,
dass ein größerer Speicher
mit mehr Speichermodulen in jeder Bank bereitgestellt wird, ohne
dass Speicherzugriffslatenz die Systemleistung herabsetzt, wenn
die Zahl von Speichermodulen in einem Kanal ansteigt.
-
Während bestimmte
beispielhafte Ausgestaltungen beschrieben und in den beiliegenden
Zeichnungen gezeigt wurden, versteht es sich, dass solche Ausgestaltungen
lediglich illustrierend und nicht die breite Erfindung einschränkend sind
und dass diese Erfindung nicht auf die besonderen Ausgestaltungen und
Anordnungen, die gezeigt und beschrieben sind, beschränkt ist,
da verschiedene andere Änderungen für den Fachmann
auftreten können.
Beispielsweise wurde eine Ausgestaltung der Erfindung beschrieben,
eine serielle Datenverbindung für
ein vollständig gepuffertes
Dual Inline Memory Modul bereitzustellen. Jedoch können Ausgestaltungen
der Erfindung in anderen Arten von Speichermodulen und Systemen
ausgeführt
sein. Als ein weiteres Beispiel wurden Daten mit zwei Bits zur Zeit
an Zwei Bit Bussen um die PISO Shift Register 708A-708B innerhalb
der Mergelogik serialisiert, um ein entspanntes Datentiming in einem
Ausführungsbeispiel
der Erfindung zu ermöglichen.
Jedoch können
Ausgestaltungen der Erfindung einen Einzelbit-Ausgangs-PISO mit
unterschiedlichen Taktgebertiming verwenden und die lokalen Daten
in einen seriellen Einzelbit-Datenstrom mit durchgeleiteten Daten
und Multiplexern 704, 705, die zum Unterstützen eines
Einzelbit seriellen Datenstroms vorgesehen sind, serialisieren.
-
ZUSAMMENFASSUNG
-
Integrierter
Schaltkreis zum Serialisieren von lokalen Daten und selektivem Zusammenfassen
mit serialisierten durchgeleiteten Daten in einen seriellen Datenstrom-Ausgang,
der ein Parallel-In-Serial-Out (PISO) Shiftregister, einen Multiplexer
und einen Übertrager
aufweist. Das PISO Shiftregister serialisiert parallele Daten an
einem lokalen Datenbus in serialisierte lokale Daten. Der Multiplexer
fasst selekiv serialisierte lokale Daten und durchgeleitete Daten
zu einem seriellen Datenstrom zusammen. Der Sender lenkt den seriellen
Datenstrom an eine serielle Datenverbindung. In einer anderen Ausgestaltung der
Erfindung weist ein Verfahren für
ein Speichermodul Empfangen eines seriellen Datenstromeingangs,
Zusammenfassen lokaler Datenframes und durchgeleiteter Datenframes
zu einer seriellen Datensstromausgabe als Reaktion auf ein Merge-Aktivierungssignal
und Übertragen
der seriellen Datenstromausgabe an einen nördlichen Datenausgang zu einem
nächsten
Speichermodul oder einer Speichersteuerung auf. Andere Ausgestaltungen
der Erfindung sind offenbart und beansprucht.