DE102007050406A1 - Speicherpuffer und Verfahren zum Puffern von Daten - Google Patents

Speicherpuffer und Verfahren zum Puffern von Daten Download PDF

Info

Publication number
DE102007050406A1
DE102007050406A1 DE102007050406A DE102007050406A DE102007050406A1 DE 102007050406 A1 DE102007050406 A1 DE 102007050406A1 DE 102007050406 A DE102007050406 A DE 102007050406A DE 102007050406 A DE102007050406 A DE 102007050406A DE 102007050406 A1 DE102007050406 A1 DE 102007050406A1
Authority
DE
Germany
Prior art keywords
data
interface
memory
buffer
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102007050406A
Other languages
English (en)
Inventor
Georg Braun
Richard Johannes Luyken
Edoardo Prete
Anthony Sanders
Maurizio Skerlj
Dirk Scheideler
Gernot Steinlesberger
Hans-Peter Trost
Steve Wood
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qimonda AG
Original Assignee
Qimonda AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qimonda AG filed Critical Qimonda AG
Publication of DE102007050406A1 publication Critical patent/DE102007050406A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Ein Speicherpuffer weist eine erste asynchrone Latchkettenschnittstelle, die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar ist, eine zweite Datenschnittstelle, die mit einer Speichervorrichtung verbunden 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 des Prozessors durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird.

Description

  • 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.

Claims (30)

  1. Speicherpuffer, der folgende Merkmale aufweist: eine erste asynchrone Latchkettenschnittstelle (120), die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar ist; eine zweite Datenschnittstelle (130), die mit einer Speichervorrichtung verbindbar ist; und eine Schaltung (110), die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (110) mit der ersten und der zweiten Schnittstelle gekoppelt ist, so dass Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zwischen der zweiten Schnittstelle (130) und dem Puffer (140) geleitet werden können, und so dass der Prozessor (150) zum Verarbeiten der Daten von der ersten Schnittstelle (120) zu der zweiten Schnittstelle (130) und/oder der Daten von der zweiten Schnittstelle (130) gemäß einer Datenverarbeitungsfunktionalität in der Lage ist, wobei die Datenverarbeitungsfunktionalität des Prozessors (150) durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird.
  2. Speicherpuffer gemäß Anspruch 1, bei dem der Prozessor (150) ein RISC-Prozessor ist, der die Datenverarbeitungsfunktionalität basierend auf einem spezifischen Anweisungssatz liefert.
  3. Speicherpuffer gemäß Anspruch 1 oder 2, bei dem die Datenverarbeitungsfunktionalität ein Verschlüsseln von Daten, ein Entschlüsseln von Daten, ein Fehlerkorrigieren von Daten, ein Fehlererfassen von Daten, eine schnelle Fourier-Transformation von Daten und/oder eine direkte Kosinustransformation von Daten aufweist.
  4. Speicherpuffer gemäß einem der Ansprüche 1 bis 3, bei dem die Schaltung (110) ferner einen Speicher aufweist, der mit dem Prozessor (150) gekoppelt ist, derart, dass ein Code, der in dem Programmiersignal gebildet ist und die Datenverarbeitungsfunktionalität des Prozessors (150) angibt, in dem Speicher gespeichert oder von dem Speicher an den Prozessor (150) geliefert werden kann.
  5. Speicherpuffer gemäß einem der Ansprüche 1 bis 4, bei dem die Schaltung (110) ferner einen Cache-Speicher aufweist, auf den der Prozessor (150) bei einem Verarbeiten der Daten zugreifen kann.
  6. Speicherpuffer gemäß einem der Ansprüche 1 bis 5, bei dem die zweite Datenschnittstelle (130) eine DDRx-Schnittstelle ist.
  7. Speicherpuffer gemäß einem der Ansprüche 1 bis 6, der ferner eine weitere asynchrone Latchkettenschnittstelle aufweist, die mit einem weiteren Speicherpuffer verbindbar ist, wobei die weitere Schnittstelle mit der Schaltung (110) gekoppelt ist, so dass Daten zwischen dem Puffer (140) und der weiteren Schnittstelle geleitet werden können.
  8. Speicherpuffer gemäß Anspruch 7, bei dem die weitere Schnittstelle mit der Schaltung (110) gekoppelt ist, derart, dass der Prozessor (150) ferner zum Verarbeiten von Daten zwischen der ersten Schnittstelle (120) und der weiteren Schnittstelle gemäß der Datenverarbeitungsfunktionalität in der Lage ist.
  9. Speicherpuffer gemäß einem der Ansprüche 1 bis 8, bei dem der Prozessor (150) mit der ersten Schnittstelle (120) gekoppelt ist, so dass das Programmiersignal über die erste Schnittstelle (120) des Speicherpuffers oder eine weitere Kommunikationsschnittstelle empfangen werden kann.
  10. Speicherpuffer gemäß einem der Ansprüche 1 bis 9, wobei der Speicherpuffer an einer Modulplatine (220) gebildet ist, wobei die Modulplatine (220) eine Modulplatinenschnittstelle aufweist, die mit der ersten Schnittstelle des Speicherpuffers gekoppelt ist, und wobei die Modulplatine (220) ferner zumindest eine Speichervorrichtung aufweist, die an der Modulplatine (220) angeordnet ist, derart, dass die zumindest eine Speichervorrichtung mit der zweiten Schnittstelle (130) des Speicherpuffers gekoppelt ist.
  11. Speicherpuffer gemäß einem der Ansprüche 1 bis 10, bei dem die Speichervorrichtung eine DRAM-Speichervorrichtung ist.
  12. Speicherpuffer, der folgende Merkmale aufweist: eine erste asynchrone Latchkettenschnittstelle (120), die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar ist; eine zweite Schnittstelle (130), die mit einer Speichervorrichtung verbindbar ist; und eine Schaltung (110), die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (110) mit der ersten (120) und der zweiten (130) Schnittstelle zum Puffern von Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zum Puffern von Daten zwischen der zweiten Schnittstelle (130) und dem Puffer (140) gekoppelt ist, und so dass der Prozessor (150) zum Verarbeiten der Daten zwischen der ersten Schnittstelle (120) und der zweiten Schnittstelle (130) gemäß einer veränderbaren Datenverarbeitungsfunktionalität basierend auf einem Programmiersignal in der Lage ist, das über die erste Schnittstelle (120) des Speicherpuffers oder eine weitere Kommunikationsschnittstelle empfangen wird.
  13. Speicherpuffer gemäß Anspruch 12, bei dem der Prozessor (150) ein RISC-Prozessor ist, der die veränderbare Datenverarbeitungsfunktionalität basierend auf einem spezifischen Satz von Anweisungen liefert.
  14. Speicherpuffer gemäß Anspruch 12 oder 13, der ferner einen Speicher für einen Code aufweist, der in dem Programmiersignal gebildet ist und mit der Schaltung (110) verbunden ist, derart, dass der Prozessor (150) in der Lage ist, die veränderbare Datenverarbeitungsfunktionalität basierend auf dem Code auszuführen, der in dem Speicher gespeichert ist.
  15. Speicherpuffer gemäß einem der Ansprüche 12 bis 14, bei dem die Schaltung (110) ferner einen Cache-Speicher aufweist, auf den der Prozessor (150) bei einem Verarbeiten der Daten zugreifen kann.
  16. Speicherpuffer gemäß einem der Ansprüche 12 bis 15, der ferner eine weitere asynchrone Latchkettenschnittstelle aufweist, die mit einem weiteren Speicherpuffer verbindbar ist, wobei die Schaltung (110) mit der weiteren Schnittstelle gekoppelt ist, so dass der Puffer (140) in der Lage ist, Daten zu Puffern, die zwischen der Schaltung (110) und der weiteren Schnittstelle geleitet werden.
  17. Speicherpuffer gemäß einem der Ansprüche 12 bis 16, wobei der Speicherpuffer an einer Modulplatine (220) gebildet ist, die ferner eine Modulschnittstelle aufweist, die mit der ersten Schnittstelle (120) des Speichermoduls und zumindest einer Speichervorrichtung verbunden ist, die an der Modulplatine (220) angeordnet und mit der zweiten Schnittstelle (130) des Speicherpuffers verbunden ist, wobei die zumindest eine Speichervorrichtung eine DRAM-Speichervorrichtung ist.
  18. Vorrichtung zum Puffern von Daten, die folgende Merkmale aufweist: eine erste Einrichtung (120) zum Austauschen von Daten über eine asynchrone Latchkettenschnittstelle; eine zweite Einrichtung (130) zum Austauschen von Daten über eine zweite Datenschnittstelle; eine Einrichtung (140) zum Puffern der Daten, die von der ersten Einrichtung (120) zum Austauschen und der zweiten Einrichtung (130) zum Austauschen empfangen werden; und eine Einrichtung (150) zum Verarbeiten der Daten, die von der ersten Einrichtung (120) zum Austauschen von Daten empfangen werden und zu der zweiten Einrichtung (130) zum Austauschen von Daten geliefert werden und/oder der Daten, die von der zweiten Einrichtung (130) zum Austauschen von Daten empfangen werden, basierend auf einer veränderbaren Datenverarbeitungsfunktionalität basierend auf einem Programmiersignal, das von der ersten Einrichtung (120) zum Austauschen von Daten und/oder der zweiten Einrichtung (130) zum Austauschen von Daten empfangen wird.
  19. Vorrichtung gemäß Anspruch 18, die ferner eine Einrichtung zum Speichern und zum Liefern eines Codes, der in dem Programmiersignal gebildet ist und die veränderbare Datenverarbeitungsfunktionalität angibt, an die Einrichtung (150) zum Verarbeiten der Daten aufweist.
  20. Vorrichtung zum Puffern gemäß Anspruch 18 oder 19, die ferner eine weitere Einrichtung zum Austauschen von Daten über eine weitere asynchrone Latchkettenschnittstelle aufweist, wobei die Einrichtung zum Puffern (140) vorgesehen ist zum Puffern von Daten, die zwischen der weiteren Einrichtung zum Austauschen von Daten und der Einrichtung zum Puffern (140) geleitet werden.
  21. Verfahren zum Puffern von Daten, das folgende Schritte aufweist: Empfangen eines Codes, der eine Datenverarbeitungsfunktionalität angibt; Empfangen von Daten von einer ersten asynchronen Latchkettenschnittstelle (120) oder einer zweiten Datenschnittstelle (130); Puffern der empfangenen Daten; Verarbeiten der empfangenen Daten oder der gepufferten Daten basierend auf dem Code und gemäß der Datenverarbeitungsfunktionalität; und Liefern der verarbeiteten Daten an die erste asynchrone Latchkettenschnittstelle (120) oder die zweite Datenschnittstelle (130).
  22. Verfahren gemäß Anspruch 21, bei dem das Verarbeiten der Daten ein Verschlüsseln der Daten, ein Entschlüsseln der Daten, ein Fehlerkorrigieren der Daten, ein Fehlererfassen der Daten, eine schnelle Fourier-Transformation der Daten und/oder eine direkte Kosinustransformation der Daten aufweist.
  23. Verfahren gemäß Anspruch 21 oder 22, das ferner folgende Schritte aufweist: Speichern des Codes, der die Datenverarbeitungsfunktionalität angibt; und Liefern des Codes zum Verarbeiten der Daten.
  24. Verfahren zum Programmieren eines Speicherpuffers, der eine erste asynchrone Latchkettenschnittstelle (120), die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar ist; eine zweite Datenschnittstelle (130), die mit einer Speichervorrichtung verbindbar ist; und eine Schaltung (110) aufweist, die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (110) mit der ersten (120) und der zweiten (130) Schnittstelle gekoppelt ist, so dass Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zwischen der zweiten Schnittstelle (130) und dem Puffer (140) geleitet werden können, und so dass der Prozessor (150) zum Verarbeiten der Daten von der ersten Schnittstelle (120) zu der zweiten Schnittstelle (130) und der Daten von der zweiten Schnittstelle (130) gemäß einer Datenverarbeitungsfunktionalität in der Lage ist, wobei die Datenverarbeitungsfunktionalität des Prozessors (150) durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird, mit folgendem Schritt: Liefern des Programmiersignals, das einen Code aufweist, der die Datenverarbeitungsfunktionalität angibt, an eine Schnittstelle des Speicherpuffers.
  25. Verfahren gemäß Anspruch 24, bei dem der Code zumindest eine Anweisung aus einem speziellen Satz von Anweisungen des Prozessors (150) aufweist.
  26. Verfahren gemäß Anspruch 24 oder 25, bei dem der Code eine Datenverarbeitungsfunktionalität angibt, die ein Verschlüsseln von Daten, ein Entschlüsseln von Daten, ein Fehlerkorrigieren von Daten, ein Fehlererfassen von Daten, eine schnelle Fourier-Transformation von Daten und/oder eine direkte Kosinustransformation von Daten aufweist.
  27. Computerprogramm zum Durchführen eines Verfahrens zum Puffern von Daten, wenn dasselbe auf einem Computer ausgeführt wird, mit folgenden Schritten: Empfangen eines Programmiersignals, das einen Code aufweist, der eine Datenverarbeitungsfunktionalität angibt; Empfangen von Daten von einer ersten asynchronen Latchkettenschnittstelle (120) oder einer zweiten Datenschnittstelle (130); Puffern der empfangenen Daten; Verarbeiten der empfangenen Daten oder der gepufferten Daten basierend auf dem Code gemäß der Datenverarbeitungsfunktionalität; und Liefern der verarbeiteten Daten an die erste asynchrone Latchkettenschnittstelle (120) oder die zweite Datenschnittstelle (130).
  28. Computerprogramm zum Durchführen eines Verfahrens zum Programmieren eines Speicherpuffers, wenn dasselbe auf einem Computer ausgeführt wird, wobei der Puffer eine erste asynchrone Latchkettenschnittstelle (120), die mit einer Speichersteuerung und/oder einem Speicherpuffer verbindbar ist; eine zweite Datenschnittstelle (130), die mit einer Speichervorrichtung verbindbar ist; und eine Schaltung (110) aufweist, die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (140) mit der ersten (120) und der zweiten (130) Schnittstelle gekoppelt ist, so dass Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zwischen der zweiten Schnittstelle (130) und dem Puffer (140) geleitet werden können, und so dass der Prozessor (150) zum Verarbeiten von Daten von der ersten Schnittstelle (120) zu der zweiten Schnittstelle (130) und/oder von Daten von der zweiten Schnittstelle (130) gemäß einer Datenverarbeitungsfunktionalität in der Lage ist, wobei die Datenverarbeitungsfunktionalität des Prozessors (150) durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird, mit folgendem Schritt: Liefern des Programmiersignals, das den Code aufweist, der die Datenverarbeitungsfunktionalität angibt, an eine Schnittstelle des Speicherpuffers.
  29. Speichersystem, das folgende Merkmale aufweist: eine Speichersteuerung; zumindest eine Speichervorrichtung; und einen Speicherpuffer, der folgende Merkmale aufweist: eine erste asynchrone Latchkettenschnittstelle (120), die mit der Speichersteuerung verbunden ist; eine zweite Datenschnittstelle (130), die mit der zumindest einen Speichervorrichtung verbunden ist; und eine Schaltung (110), die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (110) mit der ersten (120) und der zweiten (130) Schnittstelle gekoppelt ist, so dass Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zwischen der zweiten Schnittstelle (130) und dem Puffer (140) geleitet werden können, und so dass der Prozessor (150) zum Verarbeiten der Daten von der ersten Schnittstelle (120) zu der zweiten Schnittstelle (130) und/oder der Daten von der zweiten Schnittstelle (130) gemäß einer Datenverarbeitungsfunktionalität in der Lage ist, wobei die Datenverarbeitungsfunktionalität des Prozessors (150) durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird.
  30. Speichermodul, das folgende Merkmale aufweist: eine Modulplatine (220) mit einer Modulschnittstelle; zumindest eine Speichervorrichtung, die an der Modulplatine (220) angeordnet ist; und einen Speicherpuffer, der folgende Merkmale aufweist: eine erste asynchrone Latchkettenschnittstelle (120), die mit der Modulschnittstelle verbunden ist; eine zweite Datenschnittstelle (130), die mit der zumindest einen Speichervorrichtung verbunden ist; und eine Schaltung (110), die einen Puffer (140) und einen Prozessor (150) aufweist, wobei die Schaltung (110) mit der ersten (120) und der zweiten (130) Schnittstelle gekoppelt ist, so dass Daten zwischen der ersten Schnittstelle (120) und dem Puffer (140) und zwischen der zweiten Schnittstelle (130) und dem Puffer (140) geleitet werden können, und so dass der Prozessor (150) zum Verarbeiten der Daten von der ersten Schnittstelle (120) zu der zweiten Schnittstelle (130) und/oder der Daten von der zweiten Schnittstelle (130) gemäß einer Datenverarbeitungsfunktionalität in der Lage ist, wobei die Datenverarbeitungsfunktionalität des Prozessors (150) durch ein Programmiersignal veränderbar ist, das über eine Schnittstelle des Speicherpuffers empfangen wird.
DE102007050406A 2006-11-27 2007-10-22 Speicherpuffer und Verfahren zum Puffern von Daten Withdrawn DE102007050406A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/604,665 US20080126624A1 (en) 2006-11-27 2006-11-27 Memory buffer and method for buffering data
US11/604,665 2006-11-27

Publications (1)

Publication Number Publication Date
DE102007050406A1 true DE102007050406A1 (de) 2008-05-29

Family

ID=39326553

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007050406A Withdrawn DE102007050406A1 (de) 2006-11-27 2007-10-22 Speicherpuffer und Verfahren zum Puffern von Daten

Country Status (2)

Country Link
US (1) US20080126624A1 (de)
DE (1) DE102007050406A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US7609567B2 (en) * 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8438328B2 (en) * 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
KR101303518B1 (ko) * 2005-09-02 2013-09-03 구글 인코포레이티드 Dram 적층 방법 및 장치
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US20080114924A1 (en) * 2006-11-13 2008-05-15 Jack Edward Frayer High bandwidth distributed computing solid state memory storage system
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8572320B1 (en) * 2009-01-23 2013-10-29 Cypress Semiconductor Corporation Memory devices and systems including cache devices for memory modules
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
WO2010148359A1 (en) * 2009-06-18 2010-12-23 Cypress Semiconductor Corporation Memory devices and systems including multi-speed access of memory modules
US8381059B2 (en) * 2010-02-17 2013-02-19 Micron Technology, Inc. Error correction and recovery in chained memory architectures

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330660B1 (en) * 1999-10-25 2001-12-11 Vxtel, Inc. Method and apparatus for saturated multiplication and accumulation in an application specific signal processor
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US6938129B2 (en) * 2001-12-31 2005-08-30 Intel Corporation Distributed memory module cache

Also Published As

Publication number Publication date
US20080126624A1 (en) 2008-05-29

Similar Documents

Publication Publication Date Title
DE102007050406A1 (de) Speicherpuffer und Verfahren zum Puffern von Daten
DE102007052840B4 (de) Vorrichtung und Verfahren zum Umschalten einer Vorrichtung in einen Leistungssparmodus
DE102006032327B4 (de) Halbleiterspeichermodul und -System
DE60223470T2 (de) Knotensteuerung für ein Datenspeicherungssystem
DE10350339B4 (de) Halbleiterspeichervorrichtung mit reduzierter Datenzugriffszeit und Verfahren zum Betrieb einer Speichervorrichtung
DE69433320T2 (de) Ferngesteuerter rreprogrammierbarer programmspeicher fuer einen mikrokontroller
DE102005055185B4 (de) Halbleiterspeichermodul
DE10334423A1 (de) Übertragung von Daten in auswählbaren Übertragungsmodi
DE112007003069T5 (de) Mit Hochgeschwindigkeit arbeitende, aufgefächerte Systemarchitektur und Eingabe/Ausgabe-Schaltungen für nicht flüchtigen Speicher
DE102007063812B3 (de) Verfahren und Vorrichtung zum Kommunizieren von Befehls- und Adresssignalen
DE112005002390T5 (de) Burst-Betrieb für die Speichertransaktion und Speicherkomponenten, welche die zeitweilig multiplexierte Fehlerkorrekturcodierung unterstützen
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE112005002336T5 (de) Befehl, der unterschiedliche Operationen in unterschiedlichen Chips steuert
DE102006043311A1 (de) Speichersystem
DE102010030742A1 (de) Phasenwechselspeicher in einem doppelreihigen Speichermodul
DE102019112628A1 (de) Dimm für speicherkanal mit hoher bandbreite
DE112019000211T5 (de) Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen
DE68929482T2 (de) Integrierter Schaltkreis mit synchronem Halbleiterspeicher, ein Verfahren zum Zugriff auf den besagten Speicher sowie ein System, das einen solchen Speicher beinhaltet
DE102015203202B4 (de) Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen
DE69532152T2 (de) System zur parallelen Datenverarbeitung für digitale Tongeräte
DE60116975T2 (de) Halbleiterspeicheranordnung und Datenverarbeitungseinheit
DE2108157A1 (de) Datenverarbeitungsanlage mit über lagertem Speicherverkehr
DE10105627B4 (de) Mehrfachanschlussspeichereinrichtung, Verfahren und System zum Betrieb einer Mehrfachanschlussspeichereinrichtung
EP1118999A1 (de) Verfahren und Vorrichtung zum wechselweisen Betreiben eines Schreib-Lese-Speichers im Ein-Speicher-Betriebsmodus und im verschränkten Mehr-Speicher-Betriebsmodus
DE112004002973T5 (de) Halbleiterbauelement und Verfahren zum Schreiben von Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee