-
Die
vorliegende Erfindung bezieht sich auf einen Speicherpuffer und
ein Verfahren zum Puffern von Daten, wie beispielsweise einen Speicherpuffer, der
in modernen Speichersystemen hoher Kapazität beispielsweise auf dem Gebiet
von Serveranwendungen und Grafiksystemen implementiert werden kann.
-
Moderne
Computersysteme und viele Anwendungen moderner Computersysteme benötigen mehr
und mehr Speicher, da die Komplexität und die Anzahl von Details,
die durch die Softwareanwendungen berücksichtigt werden müssen, schnell
anwachsen.
-
Beispiele
kommen beispielsweise aus den Gebieten technischer, wirtschaftlicher,
sozialer und wissenschaftlicher Simulationen das Verhalten komplexer
Systeme betreffend. Weitere Beispiele kommen aus den Gebieten von
Datenverarbeitung, ausgiebiger Datensuche (Data Mining) und weiteren
datenbezogenen Aktivitäten.
Diese Anwendungen erfordern nicht nur eine enorme Menge an Speicher
auf Plattenlaufwerken, Magnet- oder optischen Bändern und anderen Speichersystemen,
die zum Speichern und Archivieren großer Mengen an Daten sowohl temporär als auch
dauerhaft in der Lage sind, sondern erfordern auch eine wachsende
Menge des Hauptspeichers eines Computers, insbesondere beispielsweise
dieses von einem Server oder einem Arbeitsplatzrechner. Weitere
Beispiele kommen aus dem Gebiet von Computergrafiken in dem Kontext
eines Simulierens komplexer und detaillierter Oberflächen, Objekte
und Strukturen.
-
Um
das Problem der wachsenden Nachfrage nach einem Hauptspeicher zu
bewältigen,
wurden die Speichervorrichtungen (z. B. DRAM-Speichervorrichtungen;
DRAM = Dynamic Random Access Memory = dynamischer Direktzugriffsspeicher)
nicht nur hinsichtlich der Speicherkapazität derselben erhöht, sondern
es wurde durch ein Einführen
von Speicherpuffern, die zwischen die Speichersteuerung und einen
Satz von Speichervorrichtungen geschaltet sind, als einer möglichen
Lösung
auch eine größere Anzahl
einzelner Vorrichtungen mit einer einzelnen Speichersteuerung gekoppelt.
-
Aufgrund
der erhöhten
Speicherkapazität derartiger
Speichersysteme hat sich jedoch eine neue Herausforderung eines
Versehens der Speichersteuerung mit Daten, die in den Speichervorrichtungen
gespeichert sind, auf schnelle und zuverlässige Weise ergeben.
-
Es
ist die Aufgabe der vorliegenden Erfindung, einen Speicherpuffer,
eine Vorrichtung zum Puffern von Daten, ein Verfahren zum Puffern
von Daten, ein Verfahren zum Programmieren eines Speicherpuffers,
ein Computerprogramm, ein Speichersystem und ein Speichermodul mit
verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch einen Speicherpuffer gemäß Anspruch 1 und Anspruch 12,
eine Vorrichtung gemäß Anspruch
18, ein Verfahren gemäß Anspruch
21 und Anspruch 24, ein Computerprogramm gemäß Anspruch 27 und Anspruch
28, ein Speichersystem gemäß Anspruch
29 und ein Speichermodul gemäß Anspruch
30 gelöst.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung weist ein Speicherpuffer eine erste asynchrone
Latchkettenschnittstelle, die mit einer Speichersteuerung und/oder
einem Speicherpuffer verbindbar ist, eine zweite Datenschnittstelle,
die mit einer Speichervorrichtung verbindbar ist, und eine Schaltung
auf, die einen Puffer und einen Prozessor aufweist, wobei die Schaltung
mit der ersten und der zweiten Schnittstelle gekoppelt ist, so dass Daten
zwischen der ersten Schnittstelle und dem Puffer und zwischen der
zweiten Schnittstelle und dem Puffer geleitet werden können, und
so dass der Prozessor zum Verarbeiten der Daten von der ersten Schnittstelle
zu der zweiten Schnittstelle und/oder der Daten von der zweiten
Schnittstelle gemäß einer Datenverarbeitungsfunktionalität in der
Lage ist, wobei die Datenverarbeitungsfunktionalität eines
Prozessors durch ein Programmiersignal veränderbar ist, das über eine
Schnittstelle des Speicherpuffers empfangen wird.
-
Gemäß einem
weiteren Ausführungsbeispiel der
Erfindung weist ein Speicherpuffer eine erste asynchrone Latchkette,
die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar
ist, eine zweite Schnittstelle, die mit einer Speichervorrichtung
verbindbar ist, und eine Schaltung auf, die einen Puffer und einen
Prozessor aufweist, wobei die Schaltung mit der ersten und der zweiten
Schnittstelle zum Puffern von Daten zwischen der ersten Schnittstelle
und dem Puffer oder Puffern von Daten zwischen der zweiten Schnittstelle
und dem Puffer gekoppelt ist, und so dass der Prozessor in der Lage ist,
Daten zwischen der ersten Schnittstelle und der zweiten Schnittstelle
gemäß einer
veränderbaren Datenverarbeitungsfunktionalität basierend
auf einem Programmiersignal zu verarbeiten, das über die erste Schnittstelle
des Speicherpuffers empfangen wird.
-
Ausführungsbeispiele
der vorliegenden Erfindung werden hierin im Folgenden unter Bezugnahme
auf die beigefügten
Zeichnungen beschrieben.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines Ausführungsbeispiels
eines Speicherpuffers;
-
2 ein
Blockdiagramm einer Anordnung von vollständig gepufferten DIMMs bei
Ausführungsbeispielen
eines Speicherpuffers mit einer Speichersteuerung;
-
3 ein
Blockdiagramm einer Anordnung eines Hosts, eines Speicherpuffers
und einer Speichervorrichtung;
-
4 ein
Diagramm eines Ausführungsbeispiels
eines Speichersystems mit einer Hostspeichersteuerung, einer Speichervorrichtung
und einem Ausführungsbeispiel
eines Speicherpuffers;
-
5a und b Beispiele einer Datenauslesung
in dem Fall einer DRAM-Speichervorrichtung; und
-
6 schematisch
den Inhalt eines (Cache-)Speichers eines Ausführungsbeispiels eines erfindungsgemäßen Speicherpuffers.
-
1 bis 6 zeigen
Blockdiagramme und Beispiele von Daten, die in Speichern gespeichert sind,
im Zusammenhang mit Ausführungsbeispielen von
Speicherpuffern. Bevor ein zweites Ausführungsbeispiel der vorliegenden
Erfindung mit Bezug auf 2 bis 6 beschrieben
wird, wird ein erstes Ausführungsbeispiel
eines Speicherpuffers mit Bezug auf die schematische Darstellung
in der Form eines Blockdiagramms von 1 erläutert.
-
1 zeigt
einen Speicherpuffer 100, der eine Schaltung 110 aufweist,
die mit einer ersten asynchronen Latchkettenschnittstelle 120 und
mit einer zweiten Datenschnittstelle 130 gekoppelt ist.
Die erste asynchrone Latchkettenschnittstelle oder erste Schnittstelle 120 ist
mit einer Speichersteuerung oder einem weiteren Speicherpuffer verbindbar,
während
die zweite Datenschnittstelle 130 mit einer Speichervorrichtung
verbindbar ist, wie beispielsweise einer DRAM-Speichervorrichtung
(DRAM = Dynamic Random Access Memory).
-
Abhängig von
der konkreten Implementierung eines Ausführungsbeispiels eines Speicherpuffers 100 kann
eine derartige DRAM-Speichervorrichtung beispielsweise eine DDRx- Speichervorrichtung (DDR
= Double Data Rate = doppelte Datenrate) sein, wobei x eine Ganzzahl
ist, die einen DDR-Standard
angibt. Ein typisches Beispiel einer DDR-Speichervorrichtung oder einer DDR1-Speichervorrichtung
(x = 1) sind DDR-SDRAM-Speichersysteme (DDR-SDRAM = Double Data
Rate Synchronous Dynamic Random Access Memory), die typischerweise als
ein Hauptspeicher bei einem Personalcomputer (PC) verwendet werden.
Es können
jedoch abhängig von
der konkreten Implementierung des Ausführungsbeispiels des Speicherpuffers 100 auch
andere DDR-Speichervorrichtungen mit der zweiten Datenschnittstelle
verbunden sein. Beispiele weisen beispielsweise DDR2-, DDR3- und
DDR4-Speichervorrichtungen
auf. Bei einigen Ausführungsbeispielen
ist daher die zweite Schnittstelle 130 eine parallele Schnittstelle.
Es können
jedoch auch andere Speichervorrichtungen mit der zweiten Datenschnittstelle 130 eines
Ausführungsbeispiels
des Datenpuffers 100 abhängig von der konkreten Implementierung desselben
verbunden sein. Im Grunde können
auch SRAM-Speichervorrichtungen (SRAM = Static Random Access Memory)
oder nichtflüchtige
Speichervorrichtungen (z. B. ein Flash-Speicher) mit Ausführungsbeispielen
eines Speicherpuffers 100 verbunden sein.
-
Ausführungsbeispiele
des Speicherpuffers 100 können in ein Speichersystem,
das eine Speichersteuerung aufweist, eingegliedert oder mit demselben
gekoppelt sein, nämlich
in einer so genannten Kaskadenkonfiguration bzw. Verkettungskonfiguration
(Daisy-Chain-Konfiguration), wobei jede Komponente der Kaskade über asynchrone
Latchkettenschnittstellen mit der nächsten Komponente verbunden
ist. Wie es später
detaillierter erläutert
wird, kann bei einer Kaskadenkonfiguration, einem Kaskadennetzwerk
oder einer Kaskade jede Komponente lediglich mit den benachbarten
Komponenten derselben in der Kaskade kommunizieren. Falls beispielsweise
eine Komponente Informationen, Daten, Befehle oder andere Signale
an eine Komponente senden möchte,
die keine benachbarte Komponente in der Kaskade ist, werden die
jeweiligen Signale zuerst an den direkten Nachbarn dersel ben gesendet,
der dann die Daten an die nächste
Komponente in der Kaskade weiterleitet. Dies wird so lange vorgenommen,
bis die Signale den endgültigen
Bestimmungsort derselben in der Form der beabsichtigten Komponente
erreichen. Die Kommunikation in die umgekehrte Richtung kann im
Grunde über
eine direkte Kommunikation über
ein Bussystem erfolgen, das jede Komponente miteinander verbindet,
insbesondere die Zielkomponente mit einer Komponente, die die ursprünglichen
Signale sendet. Alternativ können alle
Komponenten miteinander hinsichtlich der umgekehrten Richtung über eine
einzelne Kommunikationsverbindung verbunden sein. Die Kommunikation in
die umgekehrte Richtung kann jedoch auch hinsichtlich einer Kaskade
oder einer Kaskadenkonfiguration durch ein Senden von Signalen von
einer Komponente oder Stufe der Kaskade zu dem Nachbarn derselben
vorgenommen werden, bis die Zielkomponente oder die beabsichtigte
Komponente die jeweiligen Signale oder Informationen empfängt.
-
Bei
einem Speichersystem bildet insbesondere eine Speichersteuerung
eine erste oder zentrale (Latch-)Stufe in einer derartigen Kaskade.
Die Speichersteuerung ist dann über
eine asynchrone Latchkette mit einem benachbarten oder ersten Speicherpuffer
verbunden, der dann weiter mit einem zweiten Speicherpuffer verbunden
ist usw., bis das Ende der Kaskade erreicht ist. In der Folge kann
das Ausführungsbeispiel
des Speicherpuffers 100 ferner eine optionale asynchrone
Latchkettenschnittstelle aufweisen, die mit einem weiteren Speicherpuffer
oder einer weiteren Komponente in der Kaskade verbindbar ist. Folglich
ist die Schaltung 110 in diesem Fall auch mit der optionalen
weiteren asynchronen Latchkettenschnittstelle verbunden, die in 1 lediglich aus
Gründen
der Einfachheit nicht gezeigt ist.
-
Zudem
weist die Schaltung 110 einen Puffer 140 auf,
so dass Signale, Daten und Anweisungen zwischen der ersten asynchronen
Latchkettenschnittstelle 120 und dem Puffer 140 und
ferner zwischen dem Puffer 140 und der zweiten Daten schnittstelle 130 geleitet
werden können.
Der Puffer 140 ermöglicht
somit ein Puffern und Übertragen
von Daten zwischen der ersten asynchronen Latchkettenschnittstelle 120 und
der zweiten Datenschnittstelle. Mit anderen Worten ermöglicht der
Puffer 140 insbesondere einen Datenaustausch zwischen einer
Komponente, die mit der ersten asynchronen Latchkettenschnittstelle
verbunden ist, wie beispielsweise einer Speichersteuerung oder einem
weiteren Speicherpuffer, und einer Speichervorrichtung, die mit
der zweiten Datenschnittstelle 130 verbindbar oder gekoppelt
ist. Der Puffer 140 dient hauptsächlich als ein Router, der
Daten und Anforderungen zwischen der ersten asynchronen Latchkettenschnittstelle 120 und der
zweiten Datenschnittstelle 130 leitet bzw. routet.
-
Falls
ein Ausführungsbeispiel
eines Speicherpuffers 100 ferner eine weitere asynchrone Latchkettenschnittstelle
als eine Option aufweist, ist der Puffer 140 ebenfalls
mit der weiteren asynchronen Latchkettenschnittstelle gekoppelt,
um ferner einen Austausch, Transfer oder ein Routing von Daten, Befehlen,
Statusanforderungen, Statussignalen oder anderen Signalen zwischen
dem Puffer 140 und der weiteren asynchronen Latchkettenschnittstelle 120, sowie
mit der ersten asynchronen Latchkettenschnittstelle 120 und
der zweiten Datenschnittstelle 130 über den Puffer 140 zu
ermöglichen.
-
Das
Ausführungsbeispiel
eines Speicherpuffers 100, das in 1 gezeigt
ist, weist ferner einen Prozessor 150 auf, der in der Schaltung 110 gebildet ist
und mit der ersten asynchronen Latchkettenschnittstelle 120 und
der zweiten Datenschnittstelle 130 gekoppelt ist. Der Prozessor 150 ist
in der Lage, die Daten von der ersten Schnittstelle zu der zweiten Schnittstelle
und/oder die Daten von der zweiten Schnittstelle gemäß einer
Datenverarbeitungsfunktionalität
zu verarbeiten, die veränderbar
ist und durch ein Programmiersignal definiert ist, das von einer
der Schnittstellen 120, 130 des Ausführungsbeispiels des
Speicherpuffers 100 empfangen wird. Der Prozessor 150 kann
abhängig
von der konkreten Implementierung eines Ausführungsbeispiels eines Speicherpuffers 100 ein
Standardprozessor, ein RISC-(RISC = Reduced Instruction Set Computing
= Berechnung mit reduziertem Befehlssatz) oder sogar ein spezialisierterer
Prozessor sein.
-
Es
ist jedoch wichtig, anzumerken, dass der Prozessor 150 ein
Prozessor ist, der zum Ausführen von
Anweisungen, eines Codes, einer Software oder eines Programms und
dadurch zum Erreichen eines Ziels in der Lage ist, das beispielsweise
ein Manipulieren oder Verarbeiten von Daten aufweisen kann. Mit
anderen Worten ist der Prozessor 150 zum Ausführen eines
Programms oder einer Software in der Lage, die Anweisungen aufweist,
um eine Ausgabe durchzuführen,
die durch die Software oder das Programm definiert ist und die beispielsweise
ein Manipulieren von Daten aufweisen kann, die zwischen der Schaltung 110 und
der ersten asynchronen Latchkettenschnittstelle 120 und
der zweiten Datenschnittstelle 130 ausgetauscht werden.
Noch genauer gesagt, kann der Prozessor 150 Daten auf dem
Weg derselben von der ersten asynchronen Latchkettenschnittstelle 120 zu
der zweiten Datenschnittstelle 130 manipulieren. Ferner
kann der Prozessor 150 Daten von der zweiten Datenschnittstelle 130 manipulieren
oder verarbeiten.
-
Es
ist jedoch zu beachten, dass der Prozessor 150 zum Ausführen eines
Programms in der Lage ist, das die Datenverarbeitungsfunktionalität angibt, die
an den Daten auf dem Weg derselben zwischen der ersten asynchronen
Latchkettenschnittstelle und der zweiten Datenschnittstelle ausgeführt werden soll.
Um die Datenverarbeitungsfunktionalität auszuführen und um das Programm auszuführen, führt der Prozessor 150 Anweisungen
und einen anderen Code aus, die in dem Programm gebildet sind, das die
Datenverarbeitungsfunktionalität
angibt. Im Gegensatz zu einer einfachen ASIC (ASIC = Application Specific
Integrated Circuit = anwendungsspezifische integrierte Schaltung)
weist der Prozessor 150 für gewöhnlich einen Programmzähler auf,
der eine Speicheradresse angibt, an der die aktuelle oder die nächste Anweisung,
die durch den Prozessor 150 ausgeführt werden soll, gespeichert
ist. In der Folge weist ein Ausführungsbeispiel
des Speicherpuffers 100 ferner als eine zusätzliche
optionale Komponente einen Speicher oder einen Codespeicher 160 auf, der
mit dem Prozessor 150 gekoppelt ist und in dem das Programm
oder der Code gespeichert ist, das bzw. der die Datenverarbeitungsfunktionalität des Prozessors 150 angibt.
Mit anderen Worten ist der Speicher 160 mit dem Prozessor 150 gekoppelt,
um den Code oder die Anweisungen zu speichern, der bzw. die in dem
Programmiersignal gebildet ist bzw. sind, das von einer der Schnittstellen 120, 130 empfangen
wird, und um den Prozessor 150 mit den Anweisungen eines
Codes zu versehen, um zu ermöglichen,
dass der Prozessor 150 die Datenverarbeitungsfunktionalität ausführen kann.
-
Durch
ein Ausführen
eines Programms oder einer Software, um eine veränderbare Datenverarbeitungsfunktionalität auszuführen, ist
der Prozessor 150 zum Ausführen eines Manipulierens oder
Verarbeitens von Daten, die an der ersten asynchronen Latchkettenschnittstelle 120 auf
dem Weg derselben zu der zweiten Datenschnittstelle 130 empfangen werden,
oder von Daten in der Lage, die von der zweiten Datenschnittstelle 130 empfangen
werden. Somit besteht ein Hauptunterschied zwischen dem Prozessor 150 und
einer einfachen ASIC in der Programmierbarkeit oder der veränderbaren
Datenverarbeitungsfunktionalität.
-
Ein
Ausführungsbeispiel
des Speicherpuffers 100 kann ferner als eine zusätzliche
optionale Komponente einen Speicher, einen temporären Speicher
oder einen Cache-Speicher 170 aufweisen, der mit dem Puffer 140 und/oder
dem Prozessor 150 gekoppelt sein kann. Abhängig von
der konkreten Implementierung kann der Speicher 170 oder
ein Cache-Speicher 170 somit zum Cache-Speichern von Daten
verwendet werden, die zwischen der ersten asynchronen Latchkettenschnittstel le 120 und
der zweiten Datenschnittstelle 130 in eine oder beide Richtungen
ausgetauscht werden. In der Folge ist der Cache-Speicher 170,
falls derselbe mit dem Puffer verbunden ist, im Grunde zum Liefern
eines schnelleren Zugriffs auf Daten in der Lage, die in einer oder mehreren
Speichervorrichtungen gespeichert sind, die mit der zweiten Datenschnittstelle 130 gekoppelt sind.
-
Falls
der Speicher 170 oder Cache-Speicher 170 alternativ
oder zusätzlich
mit dem Prozessor 150 gekoppelt ist, kann der Prozessor 150 auf
den Cache-Speicher 170 beim Verarbeiten der Daten zugreifen.
Wie es später
erläutert
wird, kann der Cache-Speicher 170 in diesem Fall als ein
temporärer Speicher
oder ein „lokaler
Hauptspeicher" des
Prozessors 150 verwendet werden, in dem temporäre, zwischenzeitliche
oder endgültige
Ergebnisse der Datenverarbeitung gespeichert werden können und während eines
Pufferns von Daten zwischen den zumindest zwei Schnittstellen 120, 130 auf
dieselben durch den Puffer 130 optional zugegriffen werden kann.
-
Bei
einer konkreten Implementierung kann ein Ausführungsbeispiel eines Speicherpuffers 100 zwei
Eingangspuffer für
jede der zwei Schnittstellen aufweisen, die erste asynchrone Latchkettenschnittstelle 120 sowie
die zweite Datenschnittstelle 130. Bei einer derartigen
konkreten Implementierung kann der Prozessor 150 der Schaltung 110 zwischen
die zwei Eingangspuffer des Puffers 140 geschaltet oder gekoppelt
sein. Mit anderen Worten kann der Prozessor 150 bei einer
derartigen Implementierung zwischen dem ersten Eingangspuffer der
ersten asynchronen Latchkettenschnittstelle 120 und dem
zweiten Eingangspuffer der zweiten Datenschnittstelle 130 angeordnet
sein. Bei einer derartigen Implementierung sind jedoch die zwei
Eingangspuffer der zwei Schnittstellen 120, 130 in
dem Puffer 140 gebildet, wie es in 1 gezeigt
ist. Ferner wird ein Puffern von Daten durch den Prozessor durchgeführt, indem die
Daten auf dem Weg derselben nicht verarbeitet oder manipuliert wer den.
Bei einigen Ausführungsbeispielen
des Speicherpuffers 100 weist der Prozessor 150 einen
speziellen Satz von Anweisungen auf, der ermöglicht, dass eine programmierbare,
veränderbare
Datenverarbeitungsfunktionalität
oder -fähigkeit
in ein Ausführungsbeispiel
des Speicherpuffers integriert werden kann. Gemäß den speziellen Implementierungen
kann der Satz von Anweisungen des Prozessors 150 beispielsweise
Anweisungen für
eine Fehlererfassung, eine Fehlerkorrektur, eine schnelle Fourier-Transformation
(FFT; FFT = fast Fourier transformation), eine direkte Kosinustransformation (DCT;
DCT = direct cosine transformation) oder eine andere komplexe, arithmetische
Manipulation von Daten aufweisen.
-
In
diesem Zusammenhang kann im Rahmen der vorliegenden Anmeldung eine
erste Komponente, die mit einer zweiten Komponente gekoppelt ist, direkt
mit der zweiten Komponente verbunden sein oder über eine weitere Schaltungsanordnung
oder eine weitere Komponente mit derselben verbunden sein. Mit anderen
Worten weisen im Rahmen der vorliegenden Anmeldung zwei Komponenten,
die miteinander gekoppelt sind, die Alternativen auf, dass die zwei
Komponenten direkt oder über
eine weitere Schaltungsanordnung oder eine weitere Komponente miteinander
verbunden sind. Beispielsweise kann eine Speichervorrichtung, die
mit der zweiten Datenschnittstelle 130 eines Ausführungsbeispiels
des Speicherpuffers 100 gekoppelt ist, entweder direkt mit
der Schnittstelle 130 oder über eine zusätzliche Schaltungsanordnung
oder über
eine gedruckte Schaltungsplatine oder einen anderen Verbinder verbunden
sein.
-
Ein
Vorteil eines Ausführungsbeispiels
eines Speicherpuffers 100, wie es beispielsweise in 1 gezeigt
ist, besteht darin, dass eine Datenverarbeitungsfunktionalität in den
Speicherpuffer eingebracht wird durch ein Eingliedern des Prozessors
in den Speicherpuffer, was ermöglicht,
dass eine Datenverarbeitung sehr nahe an den Speichervorrichtungen mit
der zweiten Datenschnittstelle verbindbar ist. Verglichen mit einer
einfachen ASIC wird ferner durch das Eingliedern des Prozessors 150 eine
große
Flexibilität
bezüglich
der Datenverarbeitungsfunktionalität erreicht, die in dem Speicherpuffer 100 in
der Form des Prozessors 150 gebildet ist. Dies ermöglicht ferner
eine erhebliche Verringerung eines Datenverkehrs zwischen den Speichervorrichtungen und
einer Speichersteuerung, die mit der ersten asynchronen Latchkettenschnittstelle
verbindbar ist.
-
Durch
ein Einbringen einer veränderbaren Datenverarbeitungsfunktionalität durch
ein Implementieren des Prozessors 150 in ein Ausführungsbeispiel
eines Speicherpuffers 100 wird mit anderen Worten eine
flexible, programmierbare und somit veränderbare Datenverarbeitungsfunktionalität in den Speicherpuffer 100 eingebracht,
die durch ein Einbringen der Möglichkeit
eines „Vorverarbeitens" von Daten, die in
der Speichervorrichtung gespeichert sind, die mit der zweiten Datenschnittstelle 130 verbunden
ist, den erforderlichen Datenverkehr zwischen dem Speicherpuffer
und der Speichersteuerung über
die erste asynchrone Latchkettenschnittstelle 120 erheblich
reduziert. Somit kann durch ein Einbringen einer flexiblen, programmierbaren
und veränderbaren
Datenverarbeitungsfunktionalität
in ein Ausführungsbeispiel
eines Speicherpuffers 100, der nahe an einer Speichervorrichtung
positioniert ist, die mit einer zweiten Datenschnittstelle verbindbar
ist, zumindest ein Teil der notwendigen Datenverarbeitung im Rahmen
des Speicherpuffers ausgeführt
werden, was zu einer Entlastung des Bussystems und anderer Komponenten,
wie beispielsweise eines Prozessors eines Computersystems, führt, die mit
der ersten asynchronen Latchkettenschnittstelle 120 verbindbar
sind.
-
Vor
einem Beschreiben des zweiten Ausführungsbeispiels der vorliegenden
Erfindung in mehr Einzelheiten ist zu beachten, dass Objekte, Strukturen
und Komponenten mit den gleichen oder ähnlichen Funktionseigenschaften
mit den gleichen Bezugszeichen bezeichnet sind. Wenn es nicht explizit anderweitig
angegeben ist, kann die Beschreibung bezüglich Objekten, Strukturen
und Komponenten mit ähnlichen
oder gleichen Funktionseigenschaften und Merkmalen mit Bezug aufeinander
ausgetauscht werden. Ferner werden im Folgenden zusammenfassende
Bezugszeichen für
Objekte, Strukturen oder Komponenten, die bei einem Ausführungsbeispiel oder
bei einer Struktur, die in einer der Zeichnungen gezeigt ist, identisch
oder ähnlich
sind, verwendet, wenn nicht Eigenschaften oder Merkmale eines spezifischen
Objekts, einer Struktur oder einer Komponente erörtert werden. Ein Verwenden
zusammenfassender Bezugszeichen ermöglicht somit, neben der Austauschbarkeit
von Teilen der Beschreibung, wie es zuvor angegeben ist, eine kompaktere
und deutlichere Beschreibung von Ausführungsbeispielen der vorliegenden
Erfindung.
-
Wie
es im einleitenden Teil der vorliegenden Anmeldung umrissen ist,
wurde kürzlich
insbesondere für
Serveranwendungen eine so genannte vollständig gepufferte DIMM-Struktur, die auch
als FBDIMM (FBDIMM = fully buffered DIMM; DIMM = Dual Inline Memory
Module = Doppelreihenspeichermodul) bezeichnet wird, eine spezielle
Art von Speichermodul, eingeführt,
die ein Zugreifen auf mehr Speichermodule von einer einzigen Speichersteuerung aus
ermöglicht.
Ferner garantiert dieser Typ eines Speichermoduls, zusammen mit
einer geeigneten Speichersteuerung, eine viel bessere Signalintegrität. 2 zeigt
eine derartige Anordnung einer möglichen
Lösung
von vollständig
gepufferten DIMMs oder FBDIMMs 200-1, 200-2, 200-n.
Jedes der FBDIMMs 200 weist zumindest eine Speichervorrichtung 210 auf,
typischerweise eine Mehrzahl oder einen Satz von DRAM-Speichervorrichtungen 210,
die auf einer Modulplatine 220 des FBDIMM 200 angeordnet
sind. Typischerweise weist jedes FBDIMM 200 2, 4, 8, 16
oder 32 einzelne DRAM-Speichervorrichtungen 210 auf, die
in 2 auch als DRAM-Komponenten bezeichnet sind. Die
Modulplatine 220 des FBDIMM 200 ist häufig eine
gedruckte Schaltungsplatine oder eine andere mechanische Halterung,
an der elektrische oder optische Führungsleitungen (z. B. Drähte, Schaltungen
und optische Wellenleiter) angebracht sind oder in die dieselben
integriert sind.
-
Ferner
weist jedes FBDIMM einen Speicherpuffer 100 auf, der auch
ein „hochentwickelter
Speicherpuffer" bzw. „Advanced
Memory Buffer" 100 oder AMB 100 genannt
wird. Da jedes FBDIMM 200 einen Speicherpuffer 100 aufweist,
ist der Speicherpuffer 100 des ersten FBDIMM 200-1 mit
dem Bezugszeichen 100-1 bezeichnet. Entsprechend sind der
AMB 100-2 des FBDIMM 200-2 und der AMB 100-n des FBDIMM 200-n entsprechend
bezeichnet. An jedem DIMM oder FBDIMM 200 ist ein Chip,
der auch „hochentwickelter
Speicherpuffer" bzw. „Advanced Memory
Buffer" oder AMB
genannt wird, zwischen einer Speichersteuerung 230 oder
einem anderen FBDIMM 200 und den DRAM-Speichervorrichtungen 210 jedes
FBDIMM 200 angeordnet.
-
Wie
zuvor angegeben, sind die Speichersteuerung 230 und die
FBDIMMs in einer so genannten Kaskadenkonfiguration angeordnet.
Um genauer zu sein, ist die Speichersteuerung 230 über eine
unidirektionale Busstruktur mit einem ersten Ausführungsbeispiel
eines Speicherpuffers 100-1 des ersten FBDIMM 200-1 verbunden,
derart, dass die Speichersteuerung 230 Daten, Befehle,
Statusanforderungen und andere Signale an den AMB 100-1 senden
kann. Diese Richtung von der Speichersteuerung weg wird für gewöhnlich als „southbound" bzw. „südwärts gerichtet" bezeichnet. Um genauer
zu sein, ist die Speichersteuerung 230 mit einer Busstruktur
verbunden, die wiederum mit der ersten asynchronen Latchkettenschnittstelle 120 des
AMB 100-1 verbunden ist. Über eine weitere asynchrone Latchkettenschnittstelle
ist beispielsweise der Speicherpuffer 100-1 des FBDIMM 200-1 mit
der ersten asynchronen Latchkettenschnittstelle des AMB 100-2 des
FBDIMM 200-2 verbunden. Folglich sind die weiteren FBDIMM 200 oder
vielmehr die AMBs 100 in einer derartigen Kaskadenkonfiguration
verschaltet, bis das letzte FBDIMM 200-n der FBDIMMs mit
der so genannten Southbound-Richtung verbunden ist.
-
Eine ähnliche
Busstruktur, die jeden der AMB 100 mit der benachbarten
Komponente desselben in der Kaskade verbindet, ist in einer weiteren
Busstruktur in die entgegengesetzte Richtung integriert, die für gewöhnlich als
die „nordwärts gerichtete" bzw. „Northbound"-Busstruktur bezeichnet
wird. Jeder der AMB 100 ist über die erste asynchrone Latchkettenschnittstelle 120 und
optional über
die weitere asynchrone Latchkettenschnittstelle mit den benachbarten
Komponenten desselben verbunden, die entweder ein anderer FBDIMM 200 oder
die Speichersteuerung 230 in dem Fall des FBDIMM 200-1 sind.
-
Wie
es oben angegeben ist, funktioniert die Kommunikation entlang der
Kaskadenkonfiguration des Speichersystems, das in 2 gezeigt
ist, auf eine derartige Weise, dass die Speichersteuerung 230 beispielsweise
Daten, Befehle oder andere Signale entlang der Southbound-Busstruktur
an den ersten AMB 100-1 sendet, der prüft, ob die Daten, die Befehle
oder die Signale für
den AMB 100-1 bestimmt sind. Falls nicht, werden die Daten über die Southbound-Busstruktur
an den nächsten
AMB 100-2 des FBDIMM 200-2 weitergeleitet. Folglich werden
die Daten, Anweisungen oder andere Signale von dem AMB 100 an
den benachbarten AMB 100 desselben entlang der Southbound-Busstruktur
geliefert, bis die Daten, Anweisungen oder Signale an dem AMB 100 empfangen
werden, für
den dieselben bestimmt sind. Der beabsichtigte AMB 100,
beispielsweise der AMB 100-n, puffert die Daten und liefert
dieselben über
die zweite Datenschnittstelle an eines der Speichermodule 210 des
FBDIMM 200-n.
-
Folglich
werden Daten, die in einer der Speichervorrichtungen 210 von
beispielsweise dem FBDIMM 200-2 gespeichert sind, zuerst
durch den AMB 100-2 gepuffert, nachdem dieselben über die
zweite Datenschnittstelle 130 des AMB 100-2 empfangen wurden, über die
Northbound-Struktur an den AMB 100-1 gesendet, bevor der
AMB 100-1 die Daten, die von dem AMB 100-2 empfangen
werden, an die Speichersteuerung 230 liefert.
-
Zusammenfassend
gesagt, steuert jeder der AMBs 100 die Schnittstellen und
führt die
Pufferung durch, wobei Ausführungsbeispiele
des Speicherpuffers 100 implementiert werden können.
-
Eine
mögliche
Lösung
eines Speicherpuffers auf der DIMM-Ebene bei der gegenwärtigen AMB/FBDIMM-Architektur
ermöglicht
jedoch lediglich ein Routing, während
eine Implementierung eines Ausführungsbeispiels
eines Speicherpuffers 100 die neue Möglichkeit einer echten, programmierbaren
Datenverarbeitung bietet. Ein Vorteil eines Implementierens eines
Ausführungsbeispiels
eines Speicherpuffers 100 in ein FBDIMM 200 ermöglicht dadurch
eine erhebliche Reduzierung des Verkehrs an den Busstrukturen in
sowohl die Southbound- als auch
die Northbound-Richtung, da durch ein Nutzen der Datenverarbeitungsfähigkeiten
des Prozessors 150, der in den Ausführungsbeispielen der Speicherpuffer 100 gebildet
ist, die Daten von den Speichervorrichtungen, die mit den Ausführungsbeispielen des
Speicherpuffers 100 gekoppelt sind, eine Datenverarbeitungsfähigkeit
vor der Übertragung
an die Speichersteuerung 230 bieten.
-
Mit
anderen Worten impliziert dies, dass der starke Verkehr an den Strukturen
erheblich reduziert werden kann, da verglichen mit einer möglichen
Lösung
eines AMB ohne die Datenverarbeitungsfähigkeiten nicht alle Daten,
die in den Speichervorrichtungen 210 gespeichert sind,
an einen Mikroprozessor oder ein Hostsystem über die Speichersteuerung 230 und
dann erneut an die Speichervorrichtungen 210 zurück gesendet
werden müssen.
Mit anderen Worten reduziert das Einsetzen eines Ausführungsbeispiels
eines Speicherpuffers 100 an einem FBDIMM 200,
wie es in 2 gezeigt ist, den Verkehr an
der Busstruktur zwischen der Speichersteuerung 230 und
dem FBDIMMs 200, da in vielen Situationen lediglich ein
Bruchteil der Daten über
die Speichersteuerung 230 und die Busstruktur an den Mikroprozessor
des Hostsystems geliefert werden muss. Mit anderen Worten bieten
ein Ausführungsbeispiel
eines Speicherpuffers 100 und ein Ausfüh rungsbeispiel eines Speichersystems
eine Reduzierung eines Datenverkehrs zwischen dem Mikroprozessor
des Hostsystems und den DRAM-Speichermodulen der FBDIMMs 200.
-
Um
die Vorzüge
der Ausführungsbeispiele eines
Speicherpuffers 100 darzustellen, wie es in dem Zusammenhang
von 1 und 2 erläutert wurde, zeigt 3 eine
aktuelle Anordnung eines FBDIMM 200, das eine DRAM-Speichervorrichtung 210 und
eine mögliche
Lösung
für einen
Speicherpuffer 300 aufweist, der in 3 auch als „AMB1" etikettiert ist. 3 zeigt
ferner ein Hostsystem 310, das durch einen bidirektionalen
Bus mit dem FBDIMM verbunden ist, wobei der bidirektionale Bus,
mit dem das FBDIMM 200 gekoppelt ist, eine unidirektionale Busstruktur
zum Kommunizieren mit dem FBDIMM 200 (southbound) und eine
Busstruktur zum Kommunizieren in die entgegengesetzte Richtung (northbound)
aufweist. 3 zeigt jedoch ein vereinfachtes
Bild einer aktuellen Anordnung des Hosts 110, des AMB 300 und
der DRAM-Komponente 210.
-
Wie
zuvor angegeben, ist bei der aktuellen AMB/FBDIMM-Architektur auf der
DIMM-Ebene lediglich eine Routing implementiert. Da die mögliche Lösung des
Speicherpuffers 300 keine echte Datenverarbeitung ermöglicht,
müssen
alle Daten von der DRAM-Speichervorrichtung 210 oder von
den DRAM-Komponenten, von denen die Speichervorrichtung 210 eine
Speichervorrichtung ist, an den Mikroprozessor des Hosts, 310 und
dann wieder zurück in
die geeignete Speichereinheit der Speichervorrichtung 210 gesendet
werden.
-
Diese
mögliche
Lösung
eines Speicherpuffers ohne Datenverarbeitungsfähigkeiten führt zu einem starken Verkehr
an dem Bus, der den Host 310 und das FBDIMM 200 verbindet,
was zu einem möglichen
Engpass führt,
der die Gesamtsystemgeschwindigkeit reduziert. Genauer gesagt wird
aufgrund der reduzierten Funktionalität der möglichen Lösung des Speicherpuffers 300 verglichen
mit einem Ausführungsbeispiel
eines Speicherpuffers 100, der die veränderbare Datenverar beitungsfunktionalität des Prozessors 150 bei
einer stets steigenden Speicherdichte aufweist, die Bandbreite des
Bussystems den begrenzenden Faktor (Engstelle) darstellen, da alle
Daten, die in den Speichervorrichtungen 210 gespeichert
sind, zu einem starken Datenverkehr an der AMB/Host-Schnittstelle führen werden. Mit
anderen Worten müssen,
wenn eine mögliche
Lösung
eines AMB 300 lediglich eine Router-Funktionalität aufweist,
alle Daten, die verarbeitet werden sollen, an das Hostsystem 310 oder
eine geeignete Speichersteuerung gesendet werden, die in dem Hostsystem
gebildet ist, wodurch die Last des jeweiligen Busses stark erhöht wird.
-
4 zeigt
ein zweites Ausführungsbeispiel eines
Speicherpuffers 100 detaillierter, wobei in 4 nicht
nur das Ausführungsbeispiel
des Speicherpuffers 100 selbst gezeigt ist, sondern auch
eine schematische Implementierung eines FBDIMM 200 zusammen
mit einer DRAM-Speichervorrichtung 210. Wie es bereits
in dem Zusammenhang mit 1 dargelegt wurde, weist das
Ausführungsbeispiel
des Speicherpuffers 100, neben den Schnittstellen, die
in 4 nicht gezeigt sind, einen Prozessor 150 auf,
der bei dem in 4 gezeigten Ausführungsbeispiel
ein RISC-Prozessor ist. Um genauer zu sein, ist der Prozessor 150 in
einer Mikrosteuerung 110 („Mikro-S") gebildet, die in dem Ausführungsbeispiel
des Speicherpuffers 100 gebildet ist. Neben dem Prozessor 150 weist
die Mikrosteuerung 110 ferner den Puffer 140 auf,
der in 4 nicht gezeigt ist, so dass die Mikrosteuerung 110 die
Pufferfähigkeiten
des Speicherpuffers 100 liefert, was in 4 auch
als „AMB
neu" bezeichnet
ist. Folglich ist die DRAM-Speichervorrichtung 210 mit
der Mikrosteuerung 110 und mit dem Prozessor 150 über einen
Cache-Speicher 170 gekoppelt, mit dem die Mikrosteuerung 110 ebenfalls
gekoppelt ist. Ferner weist das Ausführungsbeispiel eines Speicherpuffers 100 einen
Speicher 160 („Code-RAM") auf. Der Speicher 160 ist
ferner mit der Mikrosteuerung 110 gekoppelt und ermöglicht eine
Konfiguration des Ausführungsbeispiels
des Speicherpuffers 100 über ein Programmiersignal,
das über
den Bus von einer Hostspeichersteuerung 230 empfangen wird.
-
Die
Mikrosteuerung 110, oder vielmehr der Prozessor 150 (RISC-Prozessor),
liefert einen Befehlssatz bzw. Anweisungssatz, so dass die Mikrosteuerung 110 oder
der Prozessor 150 programmiert werden können, um die Datenverarbeitungsfunktionalität zu liefern,
die auf Daten angewandt wird, die von der DRAM-Speichervorrichtung 210 empfangen werden
oder über
eine asynchrone Latchkettenschnittstelle des Ausführungsbeispiels
des Speicherpuffers 100 empfangen werden. Das Programm,
das durch den Prozessor 150 ausgeführt werden soll, kann beispielsweise
von der Hostspeichersteuerung 230 empfangen und in dem
Speicher 160 gespeichert werden. In anderen Worten ausgedrückt bietet das
Ausführungsbeispiel
des Speicherpuffers 100 sowohl einen konfigurierbaren Speicher 160 als
auch eine Mikrosteuerung 110, die einen Prozessor 150 mit
einem Anweisungssatz aufweist, die zusammen eine Programmierung
und eine Konfiguration der Datenverarbeitung des Ausführungsbeispiels
des Speicherpuffers 100 ermöglichen.
-
Das
Ausführungsbeispiel
des Speicherpuffers 100 bietet eine Einsetzung von verbesserten
Datenverarbeitungsfähigkeiten,
wie beispielsweise einer Verschlüsselung,
einer Komprimierung, einer Fehlerkorrektur, einer Fehlererfassung,
einer Fehlererkennung, und Zwischenspeicherfähigkeiten an den DIMMs oder
FBDIMMs 200 durch ein Eingliedern eines Ausführungsbeispiels
eines erfindungsgemäßen Speicherpuffers 100 als
ein neuartiges AMB-System. Dies bietet eine verbesserte Gesamtsystemleistungsfähigkeit,
da beispielsweise der Verkehr an dem Bus, der die Speichersteuerung 230 und
das Ausführungsbeispiel
des Speicherpuffers 100 verbindet, erheblich reduziert
werden kann.
-
In
diesem Zusammenhang ist zu beachten, dass die Anordnung der Hostspeichersteuerung 230, des
Ausführungsbeispiels
des Speicherpuffers 100, des DRAM-Speichermoduls 210 und
ande rer DRAM-Komponenten das allgemeine Layout des FBDIMM 200 nicht
erheblich verändert
und dennoch ermöglicht,
dass eine vollständige
neue Funktionalität in
den Speicherpuffer eingebracht wird, um eine Auf-DIMM-Verarbeitung
von Daten zu ermöglichen. Durch
ein Einführen
einer Programmierbarkeit und der neuen Datenverarbeitungsfähigkeiten
in einen Speicherpuffer 100 kann somit eine Reduzierung
des Datenverkehrs an der Host/AMB-Schnittstelle durch ein Ermöglichen
einer Auf-DIMM-Datenverarbeitung erreicht werden.
-
Die
Möglichkeiten
eines Implementierens eines Prozessors 150 in die Mikrosteuerung 110,
oder allgemein gesagt in die Ausführungsbeispiele des Speicherpuffers 100,
sind jedoch nicht auf einen RISC-Prozessor oder einen anderen spezialisierten Prozessor
begrenzt. Genauer gesagt können
die Möglichkeiten
eines derartigen verbesserten AMB 100, wie es oben und
mit Bezug auf ein Beispiel eines vorabrufenden/durchschreitenden
Zugriffs (prefetching/strided access) durch eine programmierbare Cache-Partition
unten beschrieben ist, durch ein Einführen komplexerer Prozesse 150 mit
einem komplexereren Anweisungssatz erweitert und verallgemeinert
werden. Im Grunde kann der Prozessor 150 selbst ebenfalls
einen programmierbaren Anweisungssatz beispielsweise in der Form
definierbarer Teilprozesse oder anderer komplexererer Befehls- oder
Steuerstrukturen aufweisen. Der Prozessor 150 kann sogar
erweitert werden, um VLIW-Anweisungen
(VLIW = Very Long Instruction Word = sehr langes Befehlswort) und
weitere prozessorbezogene Architekturen aufzuweisen, die beispielsweise
eine weitere Parallelisierung der Datenverarbeitung ermöglichen.
Zum Beispiel können
komplexe VLIW-Anweisungen durch ein Kombinieren elementarer Befehle
in Teilprozessen aufgebaut werden, die in dem lokalen Speicher 160 gespeichert
sind, der sowohl flüchtig
als auch nichtflüchtig
sein kann. Durch ein Implementieren des Speichers 160 auf
eine derartige Weise, dass derselbe beispielsweise sowohl einen flüchtigen
Teilspeicher (z. B. DRAM, SRAM) als auch einen nichtflüchtigen
Speicher (z. B. Flash-Speicher) aufweist, kann somit das Ausführungsbeispiel
eines Speicherpuffers 100 mit Teilprozessen programmiert werden,
die in dem nichtflüchtigen
Teilspeicher des Speichers 160 gespeichert sind, so dass
grundlegende Teilprozesse und Funktionen, die regelmäßig durchgeführt werden
sollen, auf eine nichtflüchtige Weise
gespeichert werden können,
um ein Löschen zu
verhindern, wenn das Speichersystem ausgeschaltet wird. Somit ist
es möglich,
die Programmierung der Datenverarbeitungsfunktionalität des Prozessors 150 darauf
zu reduzieren, lediglich den Speicher 160 (zumindest hinsichtlich
des nichtflüchtigen Teilspeichers)
einmal programmieren zu müssen, was
den Verkehr an dem Bus zwischen der Hostspeichersteuerung und dem
Ausführungsbeispiel
des Speicherpuffers 100 weiter reduziert. Folglich kann der
in 4 gezeigte „Code-RAM" auch einen nichtflüchtigen
Speicher oder sogar einen Nur-Lese-Teilspeicher
(ROM) aufweisen.
-
Das
Konzept eines Einbringens einer programmierbaren, veränderbaren
Datenverarbeitungsfunktionalität
in ein Ausführungsbeispiel
eines Speicherpuffers 100 in der Form eines Prozessors 150 und
eines optionalen Speichers 160, der einen flüchtigen,
einen nichtflüchtigen
und/oder einen Nur-Lese-Teilspeicher aufweist, bietet die Leistungsfähigkeit von
sogar komplexen Operationen, wie beispielsweise einer Matrixmultiplikation
und einer Matrixsummierung, die die Grundlage von sogar noch komplexeren
Datenverarbeitungsalgorithmen sind, wie beispielsweise FFT (Fast
Fourier Transform) oder DCT (Direct Cosine Transform), etc. Die
Datenverarbeitungsfunktionalität
kann natürlich
auch die Fähigkeit einer
Komplexzahlenverarbeitung aufweisen.
-
Wie
zuvor angegeben, wird ein erstes Beispiel für eine Datenverarbeitungsfunktionalität in dem Kontext
von 5 und 6 beschrieben, das aus dem Gebiet
von Vorabrufen/einem durchschreitenden Zugriff kommt, was durch
eine programmierbare Cache-Partitionierung geliefert wird, was eine
erhebliche Reduzierung eines Verkehrs an dem Bus bietet.
-
Bei
vielen möglichen
Implementierungen von Speichervorrichtungen werden Daten bezüglich „Zeilen" gelesen und optional
in einem Cache-Speicher der Hostspeichersteuerung gespeichert. Ein
derartiges Lesen einer Zeile ist in 5a dargestellt.
Abhängig
von der Speichertechnologie, die für eine Speichervorrichtung 210 verwendet
wird, können
die Zeilen einem geometrischen Muster des Speicherzellenfelds der
Speichervorrichtung selbst zugeordnet sein. Abhängig von der betroffenen Technologie jedoch
ist eine Zeile, wie es in 5a und 5b gezeigt ist, nicht zwangsläufig einem
geometrischen Muster des Speicherzellenfelds zugeordnet. Eine Zeile
kann beispielsweise einer (physischen) Spaltenadresse zugeordnet
sein, so dass beispielsweise unterschiedliche Zeilen unterschiedlichen
Zeilenadressen entsprechen. Falls jedoch beispielsweise eine Transformation
zwischen logischen Adressen und physischen Adressen betroffen ist,
kann eine Zeile auch einem Datenmuster zugeordnet sein, das einer
logischen Adresse zugeordnet ist, so dass eine Zeile überhaupt
nicht auf ein festes Muster bezogen ist, das das Speicherzellenfeld
oder den physischen Adressraum betrifft. In einem derartigen Fall
kann eine Zeile sich im Grunde mit der Zeit bezüglich der physisch betroffenen
Speicherzellen verändern.
In anderen Worten ausgedrückt
kann eine Zeile im Grunde lediglich eine momentan zugeordnete Anzahl von
Speicherzellen sein.
-
5a zeigt eine Situation, in der Daten,
die durch die Kreise a bis f bezeichnet sind, in dem Speicher entlang
einer einzigen Zeile (Zeile 1) angeordnet sind, so dass auf die
Daten direkt zugegriffen werden kann. Dies impliziert, dass im Grunde
alle Daten entlang der Zeilen angeordnet sein sollten, auf die direkt zugegriffen
werden kann, um einen wirksamen Leseprozess zu bieten.
-
Bei
aktuellen Einrichtungen bzw. Setups jedoch sind die Leseprozesse
sehr häufig
in hohem Maße
ineffizient, da die angeforderten Daten sehr häufig nicht entlang einer einzigen „Lesezeile" gespeichert sind,
sondern beispielsweise entlang einer Diagonalen, wie es in 5b dargestellt ist. Bei dem in 5b gezeigten Beispiel ist jedes erwünschte Stück von Daten,
durch die Kreise a bis f bezeichnet, in einer unterschiedlichen
Zeile der Zeilen 1 bis 6 positioniert. Folglich müssen in
dem Fall einer möglichen
Lösung
ohne ein Einsetzen eines Ausführungsbeispiels
eines Speicherpuffers mit einer veränderbaren Datenverarbeitungsfunktionalität alle Zeilen
gelesen werden und die entsprechenden Daten müssen an die Speichersteuerung übertragen
werden. Mit anderen Worten ist es, um die Datensequenz a bis f zu
lesen, wie es in 5b gezeigt ist, in
dem Fall eines Verwendens eines Speicherpuffers ohne Datenverarbeitungsfähigkeiten
nötig,
alle Daten von Zeile 1 bis Zeile 6 an die Speichersteuerung des
Hostsystems zu übertragen.
-
Mit
anderen Worten ist, da die Datenauslesung in dem Fall einer DRAM-Speichervorrichtung entlang
Zeilen vorgenommen wird, die Auslesung der erforderlichen Sequenz
a bis f lediglich bei einem System effizient, das eine mögliche Lösung eines Speicherpuffers 300 ohne
die veränderbare
Datenverarbeitungsfunktionalität
eines Ausführungsbeispiels
eines Speicherpuffers 100 aufweist, wenn die Daten entlang
einer einzigen Zeile angeordnet sind. Falls jedoch die erforderliche
Sequenz a bis f entlang einer Diagonalen angeordnet ist, muss der
komplette Datensatz von Zeile 1 bis Zeile 6 in diesem Fall an die Hostspeichersteuerung übertragen
werden, was einen starken Verkehr an dem Bus bewirkt.
-
Unter
Verwendung eines Ausführungsbeispiels
des Speicherpuffers 100, der in der Einrichtung eines neuen
AMB 100 mit Cache-Speicher- und Verarbeitungsfähigkeiten
gebildet ist, werden jedoch die Daten, die von der Hostspeichersteuerung 230 angefordert
werden, in dem Cache-Speicher 170 vorabgerufen und werden
somit lediglich die notwendigen Daten über den Bus gesendet, der mit
der ersten asynchronen Latchkettenschnittstelle 120 mit
der Hostspeichersteuerung 230 verbunden ist.
-
Genauer
gesagt, werden die Daten jeweils aus den Zeilen 1 bis 6, wie es
in 5b gezeigt ist, die die angeforderten
Informationen enthalten, von einer der Speichervorrichtungen 210 gelesen
und in einen Teil des Cache-Speichers 170 gespeichert,
der den Zeilen LD1 bis LDn entspricht, wie es in 6 gezeigt
ist. Jede Zeile in dem Cache-Speicher 160 ist mathematisch
durch einen Vektor dargestellt, so dass grundlegende Vektor- und
Matrixoperationen ein Schreiben der erforderlichen Daten in eine
andere Zeile LDn + 1 des Cache-Speichers 160 ermöglichen.
Die Anweisungen und der Code, die erforderlich sind, um die grundlegenden
Vektor- und Matrixoperationen
durchzuführen,
können
ohne weiteres in dem Speicher 160 (vgl. Code „RAM" in 4)
gespeichert und durch den Prozessor 150 in der Mikrosteuerung 110 durchgeführt oder
ausgeführt
werden. Die Inhalte der Zeile LDn + 1 des Cache-Speichers 170 werden
dann an die Hostspeichersteuerung 230 über die erste asynchrone Latchkettenschnittstelle und
die Northbound-Busstruktur des Busses übertragen, der die Speichersteuerung 230 und
das jeweilige FBDIMM 200 verbindet.
-
Mit
anderen Worten zeigt 6 ein Beispiel eines Partitionierens
des Cache-Speichers 170 im Rahmen eines Ausführungsbeispiels
eines Speicherpuffers 100 und der zugeordneten neuen AMB-Einrichtung.
Der obere Teil des Cache-Speichers
(Zeilen LD1 bis LD6) wird verwendet, um Daten aus der DRAM-Speichervorrichtung 210 zu
lesen, während die
unteren Teile (Zeile LDn und LDn + 1) die verarbeiteten Daten umfassen,
die an die Hostspeichersteuerung 230 gesendet werden.
-
Immer
dann, wenn die Daten der Informationen nicht in Adressen, Speicherzellen,
Spalten oder Zeilen gespeichert sind, derart, dass die Daten nicht in
benachbarten Speicherzellen in dem Sinn eines Gehörens zu
einer Zeile gespeichert sind, führt
ein Einsetzen einer möglichen
Lösung
eines Speicherpuffers ohne eine Datenverarbeitungsfunktionalität zu einer
weniger günstigen
Leistungsfähigkeit.
Bei einigen Speichertechnologien werden ferner die Spaltenadressen
aufgrund der Symmetrie des Speicherzellenfelds automatisch auf Zeilen übertragen.
-
Mit
anderen Worten können
ein Ausführungsbeispiel
eines Speicherpuffers 100, ein Ausführungsbeispiel eines Speichersystems
und ein Ausführungsbeispiel
eines Speichermoduls, sowie Ausführungsbeispiele
des Verfahrens zum Puffern von Daten und des Verfahrens zum Programmieren
eines Datenpuffers im Rahmen eines Systems implementiert sein, um
eine Pufferung und komplexe Verarbeitungsroutinen an einem Speicher-DIMM 20 oder
FBDIMM 200 durch einen spezialisierten Anweisungssatz und
eine programmierbare Mikrosteuerung 110 an dem DIMM oder
FBDIMM 200 oder einem Ausführungsbeispiel eines Speicherpuffers 100 zu
bieten.
-
Obwohl
die Ausführungsbeispiele
eines Speicherpuffers, eines Speichersystems und eines Speichermoduls
hauptsächlich
im Rahmen eines hochentwickelten Speicherpuffers im Zusammenhang
mit einem vollständig
gepuffertern DIMM beschrieben und erörtert wurden, können Ausführungsbeispiele
der vorliegenden Erfindung auch auf dem Gebiet gepufferter DIMMs
und anderer Speichersysteme eingesetzt werden. Eine wichtige Anwendung stammt
aus dem Gebiet grafischer Anwendungen, bei denen eine Grafikverarbeitungseinheit
(GPU; GPU = graphical processing unit) hinsichtlich einer Rechenkomplexität durch
ein Übertragen
einfacher und wiederholt auftretender Datenverarbeitungsschritte
auf ein Ausführungsbeispiel
des Speicherpuffers entlastet werden kann. Somit können die
Ausführungsbeispiele
der vorliegenden Erfindung auch auf dem Gebiet von Grafiksystemen
genutzt werden, die ein Ausführungsbeispiel
eines Speicherpuffers mit einer Option eines Cache-Speichers aufweisen, wobei
ein Satz von Anweisungen des Prozessors in dem Ausführungsbeispiel
des Speicherpuffers gebildet ist, wobei der Prozessor durch ein
Programmiersignal programmierbar ist, um die Datenverarbeitungsfunktionalität abhängig von
den Anforderungen des Systems zu verändern.
-
Ferner
ist zu beachten, dass im Grunde das Datensignal natürlich einen
Programmcode aufweisen kann, der für den Prozessor eines Ausführungsbeispiels
eines Speicherprozessors bestimmt ist, aber temporär in der
Speichervorrichtung gespeichert ist, die mit der zweiten Datenschnittstelle
eines Ausführungsbeispiels
des Speicherpuffers verbunden ist. Ferner ist zu beachten, dass
abhängig
von der Technologie, die für
die Speichervorrichtung verwendet wird, die zweite Datenschnittstelle
beispielsweise eine parallele Datenschnittstelle oder eine serielle
Datenschnittstelle sein kann. Ferner kann die zweite Datenschnittstelle
im Grunde eine synchrone oder eine asynchrone Schnittstelle sein.
Abhängig von
der konkreten Implementierung des Ausführungsbeispiels der vorliegenden
Erfindung kann zudem eine Schnittstelle sowohl eine optische oder eine
elektrische Schnittstelle sein. Ferner kann eine Schnittstelle ein
Terminal, einen Verbinder, einen Bus, einen Eingang, einen Ausgang,
einen Jumper bzw. eine Drahtverbindung zum Schalten oder eine andere
Form eines Verbinders zum Liefern eines Signals aufweisen. Ferner
können
alle Schnittstellensignale in paralleler oder serieller Weise fördern. Ferner
können
einendige Signale sowie Differenzsignale verwendet werden. Zudem
können
Mehrpegelsignale, die auch als diskrete Signale, binäre oder
digitale Signale bezeichnet werden, verwendet werden.
-
Ferner
kann bei allen Ausführungsbeispielen eines
erfindungsgemäßen Speicherpuffers
das Programmiersignal über
die erste asynchrone Latchkettenschnittstelle oder die zweite Datenschnittstelle empfangen
werden. Als eine weitere Alternative jedoch kann das Programmiersignal
auch über
eine weitere Schnittstelle empfangen werden, die beispielsweise
der so genannte SM-Bus der FBDIMM-Architektur sein kann, der die
Speichersteuerung 230 und alle Speicherpuffer an allen
FBDIMMs mit einer vergleichsweise niedrigen Übertragungsfrequenz verbindet.
-
Abhängig von
bestimmten Implementierungserfordernissen von Ausführungsbeispielen
der erfindungsgemäßen Verfahren
können
Ausführungsbeispiele
der erfindungsgemäßen Verfahren
in Hardware oder in Software implementiert sein. Die Implementierung
kann unter Verwendung eines digitalen Speichermediums durchgeführt werden,
insbesondere einer Platte, einer CD oder einer DVD, auf der sich das
elektronisch lesbare Steuersignal befindet, das mit einem programmierbaren
Computer oder einem Prozessor zusammenwirkt, derart, dass ein Ausführungsbeispiel
der erfindungsgemäßen Verfahren durchgeführt wird.
Im Allgemeinen besteht ein Ausführungsbeispiel
der vorliegenden Erfindung deshalb in einem Computerprogrammprodukt
mit einem Programmcode, der auf einem maschinenlesbaren Träger gespeichert
ist, wobei der Programmcode zum Durchführen eines Ausführungsbeispiels
der erfindungsgemäßen Verfahren
wirksam ist, wenn das Computerprogrammprodukt auf dem Computer oder Prozessor
ausgeführt
wird. Mit anderen Worten bestehen Ausführungsbeispiele der erfindungsgemäßen Verfahren
deshalb in einem Computerprogramm mit einem Programmcode zum Durchführen zumindest
eines der Ausführungsbeispiele
der erfindungsgemäßen Verfahren,
wenn das Computerprogramm auf dem Computer ausgeführt wird.
-
Während das
Vorhergehende mit Bezug auf spezielle Ausführungsbeispiele desselben spezifisch gezeigt
und beschrieben wurde, ist Fachleuten auf dem Gebiet ersichtlich,
dass verschiedene andere Veränderungen
an der Form und den Einzelheiten vorgenommen werden können, ohne
von der Wesensart und dem Schutzbereich derselben abzuweichen. Es
ist klar, dass verschiedene Veränderungen bei
einem Anpassen an unterschiedliche Ausführungsbeispiele vorgenommen
werden können,
ohne von dem breiteren Konzept abzuweichen, das hierin offenbart
und durch die folgenden Ansprüche
eingeschlossen ist.