DE102013018135A1 - Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen - Google Patents

Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen Download PDF

Info

Publication number
DE102013018135A1
DE102013018135A1 DE201310018135 DE102013018135A DE102013018135A1 DE 102013018135 A1 DE102013018135 A1 DE 102013018135A1 DE 201310018135 DE201310018135 DE 201310018135 DE 102013018135 A DE102013018135 A DE 102013018135A DE 102013018135 A1 DE102013018135 A1 DE 102013018135A1
Authority
DE
Germany
Prior art keywords
dram device
ports
memory
memory controller
dram
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.)
Granted
Application number
DE201310018135
Other languages
English (en)
Other versions
DE102013018135B4 (de
Inventor
Alok Gupta
Wishwesh Gandhi
Ram Gummadi
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013018135A1 publication Critical patent/DE102013018135A1/de
Application granted granted Critical
Publication of DE102013018135B4 publication Critical patent/DE102013018135B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/105Aspects related to pads, pins or terminals
    • 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/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)

Abstract

Eine Ausführungsform der vorliegenden Erfindung stellt ein Verfahren zum Zugriff auf nicht zusammenhängende Positionen innerhalb einer DRAM-Speicherseite bereit, indem ein erster Spaltenadressenbefehl an eine erste DRAM-Einrichtung unter Anwendung einer ersten Teilgruppe von Anschlüssen gesendet wird, und indem ein zweiter Spaltenadressenbefehl an eine zweite DRAM-Einrichtung unter Anwendung einer zweiten Teilgruppe von im Zweck veränderten Anschlüssen gesendet wird. Ein Vorteil der offenbarten Technik besteht darin, dass sie ein Minimum an zusätzlichen Anschlüssen, Raum und Leistungsaufnahme erfordert. Ferner erlaubt die Sendung mehrerer Spaltenadressenbefehle eine höhere Auflösung für DRAM-Zugriffe und daher eine effizientere Nutzung von Anschlüssen. Daher bietet die offenbarte Technik eine bessere Vorgehensweise für den Zugriff auf nicht zusammenhängende Positionen innerhalb einer DRAM-Speicherseite.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft generell Computersysteme und insbesondere ein Adressenbit-Wiederabbildungsschema zur Verringerung der Zugriffsauflösung von DRAM-Zugriffen.
  • Beschreibung des Stands der Technik
  • Aktuelle Speicherschnittstellen realisieren typischerweise einen Datenbus und einen Befehlsbus für die Kommunikation mit einer Speichereinrichtung. Der Befehlsbus wird verwendet, Zeilen- und Spaltenbefehle und Adressen an die Speichereinrichtung zu senden, während der Datenbus verwendet wird, Lese- und Schreib-Daten mit der Speichereinrichtung auszutauschen. Beispielsweise definiert die JEDEC-Spezifikation für DDR3 SDRAM16 Adressenanschlüsse bzw. Anschlussstifte (A0–A15), drei Bankadressenanschlüsse (BA0–BA2) und fünf Befehlsanschlüsse (CS#, CKE#, RAS#, CAS#, WE#), das heißt insgesamt 24 Stifte bzw. Anschlüsse. Die JEDEC-Spezifikation für GDDR5 SGRAM definiert 14 Adressenanschlüsse (A0–A12, plus RFU (reserviert)) und vier Bankenadressanschlüsse (BA0–BA3), einen Adressenbus-Invertieranschluss (ABI#), und fünf Befehlsanschlüsse (CS#, CKE#, RAS#, CAS#, WE#), das heißt insgesamt 15 Anschlüsse.
  • Jede Befehlsoperation ergibt eine festgelegte Anzahl an Datenübertragungen aus der Speichereinrichtung. Diese festgelegte Anzahl wird als die minimale Sequenzlänge bezeichnet. Die Sequenzlänge einer Speichertransaktion zwischen einer Speichersteuerung und einer Speichereinrichtung, etwa einem dynamischen Speicher mit wahlfreiem Zugriff (DRAM) ist durch das Verhältnis zwischen der Frequenz der Speicherschnittstelle zwischen einer konventionellen Speichersteuerung und der DRAM-Einrichtung und der Frequenz bestimmt, bei der der Kern der DRAM-Einrichtung arbeitet. Während sich die DRAM-Einrichtungen im Laufe der Zeit weiterentwickelt haben, ist die zweite Frequenz relativ konstant geblieben, aber die erste Frequenz ist mit jeder neuen Generation an DRAM-Einrichtungen deutlich gestiegen. Beispielsweise verwendet eine DRAM-Einrichtung mit doppelter Datenrate (DDR), die zwei Datenübertragungen pro Taktzyklus ausführt, beispielsweise ein DDR2-Bauteil, eine minimale Sequenzlänge von 4, und DDR3/sDDR3/LPDDR3/GDDR5-Einrichtungen verwenden eine minimale Sequenzlänge von 8. Wenn man annimmt, dass diese Tendenz weitergeht, könnte die nächste Generation an DRAM-Einrichtungen eine minimale Sequenzlänge von 16 oder größer haben.
  • Bei zunehmender minimaler Sequenzlänge und mit größeren Breiten der Speicherschnittstelle steigt auch die minimale Datenmenge an, die über die Speicherschnittstelle zwischen der DRAM-Einrichtung und der Speichersteuerung während einer Sequenz übertragen wird, wobei dies als „die minimale Vorabholung” bezeichnet wird. Beispielsweise war in einer x64-Speicherschnittstelle die minimale Vorabholung 32 Bytes für DDR2-Einrichtungen, während die minimale Vorabholung auf 64 Bytes für DDR3-Bauteile angewachsen ist. Eine größere minimale Vorabholung verursacht eine Ineffizienz für konventionelle Speichersteuerungen, die dafür ausgestattet sind, auf ein DRAM-Bauteil 32 Byte-Inkrementen zuzugreifen. Ferner können die 32-Byte-Inkremente nicht in benachbarten Speicherstellen innerhalb des DRAM gespeichert werden. Wenn die Datenmenge, die über die Speicherschnittstelle zwischen dem DRAM und dem Prozessor während einer Sequenz übertragen wird, von 32 Bytes auf 64 Bytes ansteigt, wird gegebenenfalls die Hälfte der Daten nicht benötigt und wird von der Speichersteuerung verworfen.
  • Eine mögliche Vorgehensweise zur Handhabung des oben genannten Problems bestünde darin, konventionelle Prozessoren umzugestalten, um auf Daten in Inkrementen von 64 Bytes oder mehr zu zugreifen. Allgemein ist eine Neugestaltung eines Prozessors unerwünscht im Hinblick auf die erforderliche Zeit und die Kosten. Ferner kann es in einer einzelnen Schnittstelle wünschenswert sein, dass die Speichersteuerung auf unterschiedliche nicht zusammenhängende Speicherplätze in der DRAM-Seite zugreifen kann. Eine 64-Byte-Vorabholung zwingt die Speichersteuerung, immer auf aufeinanderfolgende Speicherplätze in einer Seite zu zugreifen.
  • Eine weitere mögliche Vorgehensweise besteht darin, eine zusätzliche Schnittstelle hinzuzufügen, um einen unabhängigen Zugriff für die Schnittstelle zu ermöglichen. Diese Vorgehensweise teilt die Datenschnittstelle mit 64 Bit in zwei separate Datenports auf, um zwei 32-Bit-Datenschnittstellen bereitzustellen, wovon jede Zugriffe mit einer minimalen Sequenzgröße ermöglicht, die halb so groß ist wie die minimale Sequenzlänge für eine einzelne 64-Bit-Schnittstelle. Die Anzahl an Anschlüssen, die zum Senden und Empfangen der Daten benötigt werden, ist für die zwei 32-Bit-Datenschnittstellen im Vergleich zu einer einzelnen 64-Bit-Datenschnittstelle unverändert. Jedoch ist eine unabhängige Befehls- und Adresseninformation für jeden Datenpfad erforderlich, so dass die 32-Byte-Inkremente an Daten nicht in benachbarten Speicherpositionen gespeichert werden müssen oder auch sonst nicht in irgendeiner Weise in Beziehung stehen müssen, was es ansonsten möglich machen würde, die gleiche Adresse zum Zugreifen auf die beiden separaten Datenports zu verwenden. Aus diesen Gründen wird eine speziellere Befehls- und Adressenschnittstelle für jede Datenschnittstelle bereitgestellt. Jedoch erfordert jede zusätzliche spezielle Befehls- und Adressenschnittstelle weitere Anschlussstifte. Die Vergrößerung der Anzahl an Anschlüssen ist im Allgemeinen unerwünscht, da der Aufwand für das Bauelement im Hinblick auf Fläche und Leistungsaufnahme ebenfalls ansteigt.
  • Wie das Vorhergehende zeigt, ist das, was auf diesem Gebiet benötigt wird, eine verbesserte Vorgehensweise zum Zugreifen auf nicht zusammenhängende Plätze innerhalb der gleichen Speicherseite.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung stellt ein Verfahren zum Zugreifen auf nicht zusammenhängende Plätze bzw. Positionen innerhalb einer DRAM-Speicherseite bereit. Das Verfahren umfasst allgemein das Senden eines Zeilenadressenbefehls an eine erste DRAM-Einrichtung und an eine zweite DRAM-Einrichtung über mehrere Anschlüsse in einer Speichersteuerung und entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und der zweiten DRAM-Einrichtung, Senden eines ersten Spaltenadressenbefehls an die erste DRAM-Einrichtung und eines zweiten Spaltenadressenbefehls an die zweite DRAM-Einrichtung über die mehreren Anschlüsse in der Speichersteuerung, und Senden eines Datenbefehls an die erste DRAM-Einrichtung und die zweite DRAM-Einrichtung über mehrere Anschlüsse in der Speichersteuerung und mehrere entsprechende Anschlüsse in der ersten DRAM-Einrichtung und entsprechende mehrere Anschlüsse in der zweiten DRAM-Einrichtung.
  • Ein Vorteil der offenbarten Technik besteht darin, dass sie keine zusätzlichen Anschlüsse, keinen Platz oder keine zusätzliche Leistungsaufnahme erfordert. Ferner erlaubt die Sendung mehrerer Adressenbefehle eine höhere Auflösung für DRAM-Zugriffe und daher eine effizientere Nutzung der Anschlüsse. Somit stellt die offenbarte Technik eine verbesserte Vorgehensweise zum Zugreifen auf nicht zusammenhängende Plätze innerhalb einer DRAM-Speicherseite bereit.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert standen werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug zu Ausführungsformen angegeben, wovon einige in den angefügten Zeichnungen dargestellt sind. Es sollte jedoch beachtet werden, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung zeigen und daher nicht als einschränkend für ihren Schutzbereich betrachtet werden sollen, da die Erfindung andere gleichermaßen wirksame Ausführungsformen zulässt.
  • 1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren;
  • 2 zeigt ein Parallelverarbeitungssubsystem gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist eine konzeptionelle Blockansicht eines Speichersubsystems mit einer Speichersteuerung und zwei DRAM-Einrichtungen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4A ist eine konzeptionelle Blockansicht eines Speichersubsystems mit einer effizienten Bit-Wiederabbildung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4B ist eine konzeptionelle Blockansicht eines Speichersubsystems mit Speicherzugriff auf nicht zusammenhängende Plätze in einer DRAM-Speicherseite gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Flussdiagramm von Verfahrensschritten zum Zugreifen auf nicht zusammenhängende Plätze in einer DRAM-Speicherseite gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung auch ohne eines oder mehrere dieser speziellen Details in die Praxis umgesetzt werden kann. In anderen Fällen sind gut bekannte Merkmale nicht beschrieben worden, um eine Verdunkelung der vorliegenden Erfindung zu vermeiden.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Das Computersystem 100 enthält eine zentrale Verarbeitungseinheit (CPU) 102 und einen Systemspeicher 104, die über einen Verbindungspfad, der eine Speicherbrücke 105 enthalten kann, in Verbindung stehen. Die Speicherbrücke 105, die beispielsweise ein Nordbrücken-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (beispielsweise eine HyperTransport-Verbindung) mit einer I/O-(Eingabe/Ausgabe-)Brücke 107 verbunden. Die I/O-Brücke 107, die beispielsweise ein Südbrücken-Chip sein kann, empfängt eine Anwendereingabe aus einem oder mehreren Anwender-Eingabegeräten 108 (beispielsweise Tastatur, Maus) und leitet die Eingabe an die CPU 102 über den Pfad 106 und die Speicherbrücke 105 weiter. Ein Parallelverarbeitungssubsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen anderen Kommunikationspfad 113 (beispielsweise ein PCI-Express, beschleunigten Graphikport oder HyperTransport-Verbindung) verbunden; in einer Ausführungsform ist das Parallelverarbeitungssubsystem 112 ein Grafiksubsystem, das Pixel an ein Anzeigegerät 110 (beispielsweise ein Monitor auf Basis einer konventionellen CRT oder LCD) ausgibt. Eine Systemdiskette 114 ist ebenfalls mit der I/O-Brücke 107 verbunden. Ein Schalter 116 stellt Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 bereit. Andere Komponenten (nicht explizit gezeigt), einschließlich eines USB oder anderen Portverbindungen, CD-Laufwerken, DVD-Laufwerken, Filmaufzeichnungsgeräten, und dergleichen können ebenfalls mit der I/O-Brücke 107 verbunden sein. Kommunikationspfade, die die diversen Komponenten in 1 miteinander verbinden, können unter Anwendung beliebiger Geräteprotokolle realisiert werden, etwa durch PCI (periphere Komponenten-Verbindung), PCI-Express, AGP (beschleunigter Graphikport), HyperTransport, oder durch ein oder mehrere andere Busprotokolle oder Punkt-Zu-Punkt-Verbindungsprotokolle, und Verbindungen zwischen unterschiedlichen Einrichtungen können unterschiedliche Protokolle verwenden, wie dies im Stand der Technik bekannt ist.
  • Der Systemspeicher 104 enthält ein Anwendungsprogramm und einen Gerätetreiber 103. Das Anwendungsprogramm erzeugt Aufrufe in eine grafische API, um eine gewünschte Gruppe aus Ergebnissen typischerweise in Form einer Sequenz aus Grafikbildern zu erzeugen. Das Anwendungsprogramm sendet ferner ein oder mehrere Schattierungsprogramme auf höherer Ebene an die grafische API zur Verarbeitung innerhalb des Gerätetreibers 103. Die Schattierungsprogramme auf höherer Ebene sind typischerweise ein Quellcodetext von Programmieranweisungen auf höherer Ebene, die gestaltet sind, um auf eine oder mehrere Schattierungseinheiten innerhalb des Parallelverarbeitungssubsystems 112 einzuwirken. Die grafische API-Funktion wird typischerweise innerhalb des Gerätetreibers 103 realisiert.
  • In einer Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik- und Videoverarbeitung optimiert ist, wozu beispielsweise eine Video-Ausgabeschaltung gehört, und sie bildet eine grafische Verarbeitungseinheit (GPU). In einer weiteren Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für die Verarbeitung für Allgemeinzwecke optimiert ist, wobei dennoch die zu Grunde liegende Rechenarchitektur, die hierin detaillierter beschrieben ist, beibehalten wird. In einer noch weiteren Ausführungsform kann das Parallelverarbeitungssubsystem 112 in einem oder mehreren anderen Systemelementen enthalten sein, etwa der Speicherbrücke 105, der CPU 102 und der I/O-Brücke 107, um ein System-auf-einem-Chip (SoC) zu bilden.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Die Verbindungstopologie einschließlich der Anzahl und Anordnung von Brücken, die Anzahl von CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise ist in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über eine Brücke verbunden, und andere Einrichtungen kommunizieren mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102. In anderen alternativen Topologien ist das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt über die Speicherbrücke 105 verbunden. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallelverarbeitungssubsysteme 112 enthalten. Die speziellen hierin gezeigten Komponenten sind optional; beispielsweise kann eine beliebige Anzahl an Zusatzkarten oder peripheren Geräten unterstützt werden. In einigen Ausführungsformen ist der Schalter 116 weggelassen, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 sind direkt mit der I/O-Brücke 107 verbunden.
  • 2 zeigt ein Parallelverarbeitungssubsystem 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das Parallelverarbeitungssubsystem 112 eine oder mehrere Parallelverarbeitungseinheiten (PPUs) 202, wovon jede mit einem lokalen Parallelverarbeitungs-(PP-)Speicher 204 verbunden ist. Im Allgemeinen enthält ein Parallelverarbeitungssubsystem eine Anzahl U an PPUs, wobei U ≥ 1 ist. (Hierin werden mehrere Instanzen gleicher Objekte mit Bezugszeichen bezeichnet, die das Objekt angeben, und Zahlen in Klammern kennzeichnen die Instanz, wenn dies erforderlich ist.) Die PPUs 202 und die Parallelverarbeitungsspeicher 204 können unter Anwendung einer oder mehrerer integrierter Schaltungseinrichtungen realisiert werden, etwa durch programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC), oder Speichereinrichtungen, oder in einer anderen technisch machbaren Weise.
  • Es sei nun wieder auf 1 verwiesen; in einigen Ausführungsformen sind einige oder alle der PPUs 202 in dem Parallelverarbeitungssubsystem 112 Grafikprozessoren mit Bilderzeugungs-Pipelines, die ausgebildet sein können, diverse Aufgaben auszuführen, die betreffen: die Erzeugung von Pixeldaten aus Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 über die Speicherbrücke 105 und den Bus 113 zugeleitet werden, die Wechselwirkung mit dem lokalen Parallelverarbeitungsspeicher 204 (der als ein Grafikspeicher verwendet werden kann und beispielsweise einen konventionellen Blockpuffer bzw. Bildpuffer enthält), um Pixeldaten zu speichern und zu aktualisieren, die Auslieferung von Pixeldaten an das Anzeigegerät 110, und dergleichen. In einigen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 eine oder mehrere PPUs 202 enthalten, die als Grafikprozessoren arbeiten, und kann eine oder mehrere andere PPUs 202 enthalten, die für Berechnungen für Allgemeinzwecke verwendet werden. Die PPUs können identisch oder unterschiedlich sein, und jede PPU kann ihre eigene zugeordnete Parallelverarbeitungsspeichereinrichtung oder mehrere Einrichtungen oder keine spezielle Parallelverarbeitungsspeichereinrichtung aufweisen. Eine oder mehrere PPUs 202 können Daten an das Anzeigegerät 110 ausgeben, oder jede PPU 202 kann Daten an ein oder mehrere Anzeigegeräte 110 ausgeben.
  • Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100 und steuert und koordiniert den Betrieb anderer Systemkomponenten. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPUs 202 steuern. In einigen Ausführungsformen schreibt die CPU 102 einen Strom an Befehlen für jede PPU 202 in einen Schiebepuffer (in 1 oder 2 nicht explizit gezeigt), der in dem Systemspeicher 104, dem Parallelverarbeitungsspeicher 204 oder an einer anderen Speicherstelle angeordnet sein kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen können. Die PPU 202 liest den Befehlsstrom aus dem Schiebepuffer aus und führt dann Befehle in asynchroner Weise in Bezug zu der Betriebsweise der CPU 102 aus.
  • Es sei wieder auf 2 zurückverwiesen; jede PPU 202 enthält eine I/O-(Eingabe/Ausgabe-)Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 in Verbindung steht, der mit der Speicherbrücke 105 (oder in einer alternativen Ausführungsform direkt mit der CPU 102) verbunden ist. Die Verbindung der PPU 202 mit dem Rest des Computersystems 100 kann auch anders sein. In einigen Ausführungsformen ist das Parallelverarbeitungssubsystem 112 als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Ausführungsformen kann eine PPU 202 in einem einzelnen Chip zusammen mit einer Busbrücke, etwa der Speicherbrücke 105 oder der I/O-Brücke 107 integriert sein. In noch anderen Ausführungsformen sind einige oder alle Elemente der PPU 202 auf einem einzelnen Chip zusammen mit der CPU 102 integriert.
  • In einer Ausführungsform ist der Kommunikationspfad 113 eine PCI-Expressverbindung, in der spezielle Bahnen jeder PPU 202 zugewiesen sind, wie dies im Stand der Technik bekannt ist. Es können auch andere Kommunikationspfade verwendet werden. Eine I/O-Einheit 205 erzeugt Pakete (oder andere Signale) zur Übertragung auf dem Kommunikationspfad 113 und empfängt ferner alle eintreffenden Pakete (oder andere Signale) aus dem Kommunikationspfad 113, wodurch die eintreffenden Pakete zu geeigneten Komponenten der PPU 202 weitergeleitet werden. Beispielsweise können Befehle, die Verarbeitungsaufgaben betreffen, an eine Hauptschnittstelle 206 geleitet werden, während Befehle, die Speicheroperationen (beispielsweise lesen aus oder schreiben in den Parallelverarbeitungsspeicher 204) betreffen, an eine Speicherkreuzungseinheit 210 geleitet werden können. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und gibt die Arbeit, die von dem Schiebepuffer spezifiziert ist, an einen Frontbereich 212 aus.
  • Jede PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Wie detailliert gezeigt ist, enthält die PPU 202(0) ein Verarbeitung-Cluster-Array 230, das eine Anzahl C an allgemeinen Verarbeitungs-Clustern (GPCs) 208 enthält, wobei C ≥ 1. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) Stränge gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In diversen Anwendungen können unterschiedliche GPCs 208 für die Verarbeitung unterschiedlicher Arten von Programmen oder zur Ausführung unterschiedlicher Arten von Berechnungen zugewiesen sein. Beispielsweise wird in einer Grafikanwendung eine erste Gruppe aus GPCs 208 reserviert, um Parkettierungs-Operationen auszuführen und um grundlegende Topologien für Flecken zu erzeugen, und eine zweite Gruppe an GPCs 208 kann reserviert werden, um eine Parkettierungs-Schattierung auszuführen, um Fleckenparameter für die grundlegenden Topologien zu bewerten und Vertex-Positionen oder andere Attribute pro Vertex zu ermitteln. Die Zuweisung von GPCs 208 kann unterschiedlich sein in Abhängigkeit von der Arbeitslast, die für jede Art von Programm oder Berechnung auftritt.
  • Die GPCs 208 empfangen auszuführende Verarbeitungsaufgaben über eine Arbeitsverteilungseinheit 207, die Befehle, die Verarbeitungsaufgaben definieren, von einer Frontbereichseinheit 212 empfängt. Verarbeitungsaufgaben enthalten Indizes von zu verarbeitenden Daten, beispielsweise Oberflächen-(Flecken-)Daten, Daten von Grundelementen, Vertex-Daten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten zu verarbeiten sind (beispielsweise welches Programm auszuführen ist). Die Arbeitsverteilungseinheit 207 kann ausgebildet sein, die den Indizes entsprechenden Aufgaben abzuholen, oder die Arbeitsverteilungseinheit 207 kann die Indizes aus dem Frontbereich 212 erhalten. Der Frontbereich 212 stellt sicher, dass die GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die von den Schiebepuffern spezifizierte Verarbeitung begonnen wird.
  • Wenn die PPU 202 beispielsweise für die Grafikverarbeitung verwendet wird, kann die zu verarbeitende Arbeit für jeden Flecken in ungefähr gleich große Aufgaben unterteilt werden, um die Verteilung der Parkettierungs-Verarbeitung an mehrere GPCs 208 zu ermöglichen. Eine Arbeitsverteilungseinheit 207 kann ausgebildet sein, Aufgaben mit einer Frequenz zu erzeugen, die geeignet ist, Aufgaben mehreren GPCs 208 für die Verarbeitung zuzuleiten. Im Gegensatz dazu wird in konventionellen Systemen die Verarbeitung typischerweise von einer einzelnen Verarbeitungseinheit ausgeführt, während die anderen Verarbeitungseinheiten untätig bleiben und darauf warten, dass die einzelne Verarbeitungseinheit ihre Aufgaben abschließt, bevor sie mit der Verarbeitung ihrer Verarbeitungsaufgaben beginnen. In einigen Ausführungsformen der vorliegenden Erfindung sind Teile der GPCs 208 ausgebildet, unterschiedliche Arten der Verarbeitung auszuführen. Beispielsweise kann ein erster Teil ausgebildet sein, eine Vertex-Schattierung und eine Topologie-Erzeugung auszuführen, ein zweiter Teil kann ausgebildet sein, eine Parkettierung und eine Geometrie-Schattierung auszuführen, und ein dritter Teil kann ausgebildet sein, eine Pixel-Schattierung im Bildschirm-Raum auszuführen, um ein erzeugtes Bild zu produzieren. Zwischendaten, die von den GPCs 208 erzeugt werden, können in Puffern gespeichert werden, so dass die Zwischendaten zwischen den GPCs 208 für die weitere Verarbeitung ausgetauscht werden können.
  • Die Speicherschnittstelle 214 enthält eine Anzahl D an Partitionseinheiten 215, die jeweils direkt mit einem Teil des Parallelverarbeitungsspeichers 204 verbunden sind, wobei D ≥ 1. Wie gezeigt, ist die Anzahl an Partitionseinheiten 215 generell gleich der Anzahl an DRAM 220. In anderen Ausführungsformen ist gegebenenfalls die Anzahl an Partitionseinheiten 215 nicht gleich der Anzahl an Speichereinrichtungen. Der Fachmann erkennt, dass die DRAM 220 durch andere geeignete Speichereinrichtungen ersetzt werden können, und dass sie von generell konventionellem Aufbau sein können.
  • Es wird daher eine detaillierte Beschreibung weggelassen. Bilderzeugungsziele, etwa Blockpuffer oder Texturabbildungen, können in den DRAM 220 gespeichert werden, so dass die Partitionseinheiten 215 Bereiche jedes Bilderzeugungsziels parallel beschreiben können, um die verfügbare Bandbreite des Parallelverarbeitungsspeichers 204 effizient zu nutzen.
  • Jeder der GPCs 208 kann Daten verarbeiten, die in einen der DRAM 220 in dem Parallelverarbeitungsspeicher 204 zu schreiben sind. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 dem Eingang einer Partitionseinheit 215 oder einem weiteren GPC 208 für die Weiterverarbeitung zuzuleiten. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse externe Speichereinrichtungen zu lesen oder zu beschreiben. In einer Ausführungsform hat die Kreuzungseinheit 210 eine Verbindung zu der Speicherschnittstelle 214, um mit der I/O-Einheit 205 in Verbindung zu treten, und hat auch eine Verbindung zu dem lokalen Parallelverarbeitungsspeicher 204, wodurch die Verarbeitungskerne in den verschiedenen GPCs 208 in die Lage versetzt werden, mit dem Systemspeicher 104 oder einem anderen Speicher, der nicht lokal in der PPU 202 angeordnet ist, zu kommunizieren. In der in 2 gezeigten Ausführungsform ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. Die Kreuzungseinheit 210 kann virtuelle Kanäle benutzen, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.
  • Wiederum können die GPCs 208 so programmiert sein, dass sie Verarbeitungsaufgaben ausführen, die eine Fülle von Anwendungen betreffen, wozu gehören, ohne einschränkend zu sein: lineare und nichtlineare Datentransformationen, die Filterung von Video- und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung der Position, Geschwindigkeit und anderer Attribute von Objekten), Bilderzeugungsoperationen (Programme zur Parkettierungs-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel-Schattierung) usw. Die PPUs 202 können Daten aus dem Systemspeicher 104 und/oder den lokalen Parallelverarbeitungsspeichern 204 in einen internen (Chip internen) Speicher übertragen, die Daten verarbeiten und Ergebnisdaten zurück in den Systemspeicher 104 und/oder die lokalen Parallelverarbeitungsspeicher 204 schreiben, wo auf derartige Daten von anderen Systemkomponenten einschließlich der CPU 102 oder einem weiteren Parallelverarbeitungssubsystem 112 zugegriffen werden kann.
  • Eine PPU 202 kann mit einer beliebigen Größe an lokalem Parallelverarbeitungsspeicher 204 versehen sein, wobei auch kein lokaler Speicher mit eingeschlossen ist, und sie kann den lokalen Speicher und den Systemspeicher in beliebiger Kombination verwenden. Beispielsweise kann eine PPU 202 ein Grafikprozessor in einer Ausführungsform mit vereinheitlichter Speicherarchitektur (UMA) sein. In derartigen Ausführungsformen wird wenig oder kein spezieller Grafik-(Parallelverarbeitungs-)Speicher bereitgestellt, und die PPU 202 verwendet ausschließlich oder nahezu ausschließlich den Systemspeicher. In UMA-Ausführungsformen kann eine PPU 202 in einem Brückenchip oder einem Prozessorchip integriert sein, oder kann als ein diskreter Chip mit einer Hochgeschwindigkeitsverbindung (beispielsweise PCI-Expressverbindung) bereitgestellt sein, die die PPU 202 mit dem Systemspeicher über einen Brückenchip oder eine andere Kommunikationseinrichtungen verbindet.
  • Wie oben angegeben ist, kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt sein, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen, eine unterschiedliche Größe der lokalen Parallelverarbeitungsspeicher, usw. haben. Wenn mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu Tischrechner, mobile Rechner oder Personal-Handrechner, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme, und dergleichen gehören.
  • 3 ist eine konzeptionelle Blockansicht einer Speicherschnittstelle 200 zwischen einer Speichersteuerung 305 und einer Einrichtung in Form eines dynamischen Speichers mit wahlfreiem Zugriff (DRAM) mit einem Multi-Port 310 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Speichersteuerung 305 ist typischerweise in einem Gerät bzw. einem Bauteil 302 enthalten, das in ein Gehäuse mit Anschlussstiften bzw. Anschlüssen oder Lothökern für jeweils Dateneingänge, Steuereingänge und/oder Ausgänge untergebracht ist, beispielsweise ein Bauteil in Form eines Prozessors oder einer Speicherbrücke. Der Multi-Port-DRAM 310 unterscheidet sich von einem konventionellen DRAM, etwa einen DDR DRAM, da der Speicherplatz innerhalb des Multi-Port-DRAM 310 in zwei unabhängige Hälften aufgeteilt ist, einen Port0 215 und einen Port 320. Obwohl der in 3 gezeigte Multi-Port-DRAM 310 so gezeigt ist, dass er nur zwei Datenports aufweist, kann in anderen Ausführungsformen der Speicherplatz in mehr als zwei Teile aufgeteilt werden, wobei jeder Teil einen zugewiesenen Datenport besitzt. Eine ähnliche Multi-Port-Architektur kann für Speicherpuffereinrichtungen verwendet werden, die eine Befehls- und Adressen-Verbindung (CMD/ADDR) aus einer Speichersteuerung in einen Multi-Port-Speicher übersetzen. Die Speicherschnittstelle 100 umfasst eine bidirektionale Datenschnittstelle zwischen der Speichersteuerung und dem Multi-Port-DRAM 110, wobei zu jeder Datenschnittstelle ein entsprechender Datenport gehört, der auf einen entsprechenden Teil des Speicherplatzes zugreift. Die Speicherschnittstelle 300 umfasst ferner eine einzelne Kommunikationsschnittstelle, die ausgebildet ist, ein Zeit-Multiplex-Kommunikationsprotokoll zur Übermittlung von Befehlen- und Adresseninformation aus der Speichersteuerung 305 an den Multi-Port-DRAM 310 zu unterstützen. In dem Multi-Port-DRAM 310 wird die im Zeit-Multiplex-Verfahren vorliegende Befehls- und Adresseninformation in Befehle und Adressen entschachtelt, die an den Port0 315 gesendet werden, und in Befehle und Adressen, die an den Port1 320 gesendet werden.
  • Ein typisches Zugriffsprotokoll für eine DRAM-Einrichtung erfordert 4 Taktzyklen zwischen zwei Zeilenaktivierungsbefehlen und mindestens 1 untätigen Taktzyklus zwischen zwei Spalten-Lese/Schreib-Befehlen für eine GDDR5- und DDR2-Schnittstelle (oder 2 untätige Taktzyklen für eine DDR3-Schnittstelle). Wenn beispielsweise die minimale Sequenzlänge zwei Taktsignale benötigt, wie in DDR2, werden Daten in zwei aufeinanderfolgenden Taktzyklen für jede Lesesequenz und Schreibsequenz übertragen. Für einen DRAM mit einer Lese- und Schreib-Latenz bzw. Verarbeitungszeit von zwei Taktzyklen wird ein Sequenz-Lese- oder Schreibbefehl während eines ersten Taktzyklus übertragen, was dazu führt, dass Daten auf dem Datenbus entsprechend während des dritten und des vierten Taktzyklus übertragen werden. Da die minimale Sequenzlänge 2 ist, wird kein Datenzugriffsbefehl während des zweiten Taktzyklus übertragen. Ein Aktivierungsbefehl (ACT) kann übertragen werden, um eine andere Zeile des Speichers zu aktivieren, die einem der beiden Ports der Doppel-Port-DRAM-Einrichtung entspricht. Für eine Speichereinrichtung mit mehreren Bänken muss eine Speichersteuerung keinen NOP-(keine Operation)Befehl während eines untätigen Taktzyklus ausgeben, sondern sie kann stattdessen ein Zeitfenster nutzen, um einen Aktivierung- oder Vorlade-Befehl für andere Zeilen oder Bänke in der Speichereinrichtung senden. Aufgrund der Randbedingungen, die durch die Sequenzzugriffe auferlegt werden, können ein Datenzugriff, Lese- und Schreibbefehle und Adresseninformationen nur während der Hälfte oder einem Viertel der verfügbaren Taktzyklen übertragen werden, wobei dies von der minimalen Sequenzlänge abhängt.
  • Die Speichersteuerung 305 empfängt Speicherzugriffsanforderungen, um Daten aus dem Multi-Port-DRAM 310 zu lesen und zu schreiben. Die Speichersteuerung 305 ist ausgebildet, Zugriffsanforderungen auf der Grundlage einer Adresse zu sortieren, die mit jeder Zugriffsanforderung bereitgestellt wird. Die Adresse kann eine virtuelle Adresse sein, die von der Speichersteuerung 305 in eine physikalische Adresse des Multi-Port-DRAM 310 übersetzt wird. Jeder Port des Multi-Port-DRAM 310 ist mit einer anderen Gruppe aus Adressen verknüpft.
  • Die Speichersteuerung 305 füllt jeden Taktzyklus (oder jedes Zeitfenster) mit Befehls- und Adresseninformation für den geeigneten Port, um den Strom an Befehlen und Adresseninformation zu erzeugen, der übertragen wird. Zusätzlich zu Lese- und Schreibzugriffsanforderungen codiert die Befehls- und Adresseninformation auch Operationen, etwa Vorlade-, Aktivierungs- und NOP-Befehle.
  • Die Multi-Port-DRAM-Einrichtung 310 empfängt den Strom aus Befehlen und Adressen aus der Speichersteuerung 105. Die Multi-Port-DRAM-Einrichtung 310 enthält Speicherplatz, der in zwei oder mehr Teile aufgeteilt ist, beispielsweise Port0-Speicherplatz und Port1-Speicherplatz. In einer Ausführungsform haben der erste Datenport und der zweite Datenport eine Breite von 32 Bits und die minimale Sequenzlänge beträgt 4, 8 oder 16 Taktzyklen, so dass die minimale Sequenzgröße 16 Bytes, 32 Bytes oder entsprechend 64 Bytes ist.
  • Adressenbit-Wiederabbildungsschema zur Reduzierung der Zugriffsauflösung von DRAM-Zugriffen
  • 4A ist eine konzeptionelle Blockansicht eines Speichersubsystems 400 mit einer Speichersteuerung 406 und zwei DRAM-Einrichtungen (DRAM0 402, DRAM1 404) gemäß einer Ausführungsform der vorliegenden Erfindung. Die Speichersteuerung 406 ist typischerweise in einem Bauelement enthalten, das ein Gehäuse hat mit Anschlussstiften bzw. Anschlüssen für jeden Dateneingang oder Steuereingang und/oder Datenausgang oder Steuerausgang, beispielsweise ein Bauteil eines Prozessors oder einer Speicherbrücke, etwa die PPU 202 aus 2 oder die Speicherbrücke 105 aus den 1 und 2. Die Speichersteuerung 406 kann im wesentlichen in der gleichen Weise ausgebildet sein wie die Speichersteuerung 305 aus 3, um Daten in die DRAM-Einrichtungen, d. h. den DRAM0 402 und den DRAM1 404 zu schreiben und daraus auszulesen. Der DRAM0 402 und der DRAM1 404 können im Wesentlichen in der gleichen Weise ausgebildet sein wie die Multi-Port-DRAM-Einrichtung 310 aus 3, um Befehle und Adressen aus der Speichersteuerung 406 zu empfangen, wobei der DRAM0 402 und der DRAM1 404 jeweils eine Breite von 32 Bits mit einer minimalen Sequenzgröße von 32 Bytes aufweisen.
  • Der DRAM0 402 und der DRAM1 404 besitzen jeweils mehrere Speicherbänke, die ausgebildet sind, mehrere Speicherseiten mit Daten zu speichern. In der in 4 angegebenen Realisierung kann eine gegebene Speicherseite über den DRAM0 402 und den DRAM1 404 gespeichert sein, so dass die Speicherseite entsprechende Zeilen innerhalb des DRAM0 402 und dem DRAM1 404 überspannt. In einigen Ausführungsformen kann eine Speicherbank innerhalb des DRAM0 402 oder des DRAM1 404 4 K, 8 K oder 16 K Zeilen an Daten speichern. In einigen Ausführungsformen kann eine einzelne Zeile 2 Kbytes, 4 Kbytes oder 8 Kbytes an Speicher zur Speicherung von Daten enthalten. Wie gut bekannt ist, ist die Anzahl an Anschlüssen, die für einen Zugriff auf eine Speicherseite zum Lesen und Schreiben von Daten erforderlich ist, von der Anzahl und der Länge von Zeilen in der Speicherbank, der Sequenzlänge und der gewünschten Flexibilität abhängig.
  • Wie gezeigt, besitzen die Speichersteuerungen 406 jeweils der DRAM0 402 und der DRAM1 404 jeweils mehrere Anschlüsse. Obwohl dies nicht gezeigt ist, hat die Speichersteuerung 406 die Anschlüsse A0–A13 und einen nicht genutzten Anschluss, und der DRAM0 402 und der DRAM1 404 haben jeweils Anschlüsse A0–A13. Jeder der Anschlüsse A0–A13 in der Speichersteuerung 406 ist jeweils mit einem anderen Anschluss A0–A13 sowohl in den DRAM0 402 als auch dem DRAM1 404 verbunden.
  • In der ausgebildeten Weise kann die Speichersteuerung 406 Zeilenadressenbefehle an die Anschlüsse A13–A0 (d. h. 14 Bits) senden, um gleichzeitig die gleiche logische Speicherseite in dem DRAM0 402 und in dem DRAM1 404 zu aktivieren. Für den Spaltenadressenbefehl können die oberen oder signifikantesten Anschlüsse der Speichersteuerung 406 und die Adressenanschlüsse des DRAM0 402 vertauscht oder im Zweck umgewidmet werden. „Vertauschung”, wie dies hierin verwendet ist, bezeichnet die Verlegung von Leitungen auf einer gedruckten Leiterplatte (PCB), in diesem Fall des DRAM0 402 und der Speichersteuerung 406, in der die Bit-Reihenfolge für Adressenbefehle unterschiedlich ist auf der Seite der Speichersteuerung im Vergleich zu der Seite des DRAM. Beispielsweise werden Spaltenbefehle gemeinsam über die unteren oder weniger signifikanten Anschlüsse einer Speichersteuerung und einer DRAM-Einrichtung gesendet, während die Spaltenbefehle alle Anschlüsse der Speichersteuerung 406 benutzen können. Um jedoch die Spaltenadressenbefehle sowohl an den DRAM0 402 als auch an den DRAM1 404 so zu senden, dass die gleiche logische Speicherseite über beide Einrichtungen hinweg angesprochen werden kann, sind die oberen oder signifikantesten Anschlüsse der Speichersteuerung 406 so gestaltet, dass Adressenbefehle zu den unteren oder weniger signifikanten Anschlüssen einer der DRAM-Einrichtungen, hier der DRAM0 402, gesendet werden. Wenn somit Befehle und Adressen zu/von der Speichersteuerung 406 zu/von der Speichereinrichtung 402 laufen, werden die Befehle und Adressen durch die Leitungen, die die oberen Anschlüsse der Speichersteuerung 406 und die unteren Stifte des DRAM0 402 verbinden, vertauscht.
  • In einigen Ausführungsformen kann eine beliebige Anzahl an Anschlüssen vertauscht sein, was bedeutet, dass die Anzahl der oberen oder signifikantesten Anschlüsse der Speichersteuerung 406 und die Anzahl der unteren oder weniger signifikanten Anschlüsse der DRAM-Einrichtung, hier der DRAM0 402, neu konfiguriert werden, um zu ermöglichen, dass Adressenbefehle, die über diese Anschlüsse gesendet werden können, beruhend auf der Länge der Seite, der Anzahl der verfügbaren Anschlüsse und der gewünschten Adressenflexibilität variieren können. Ferner können in einigen Ausführungsformen andere Anschlüsse als die oberen oder signifikantesten Anschlüsse in der Speichersteuerung 406 und Anschlüsse, die nicht die unteren oder weniger signifikanten Anschlüsse der DRAM-Einrichtung sind, vertauscht werden.
  • Es sei nun insbesondere auf die Ausführungsform in 4 verwiesen; während eines Spaltenzugriffs werden sieben untere oder weniger signifikante Anschlüsse A3–A9 in der Speichersteuerung 406 verwendet, um einen ersten Spaltenadressenbefehl an den DRAM1 404 über die unteren oder weniger signifikanten Anschlüsse A2–A9 in dem DRAM1 404 zu senden. Ferner werden sieben obere oder signifikanteste Anschlüsse A13, A12, A11 sowie A10, A14 (nicht gezeigt), A15 (als NC gezeigt) und ein zusätzlicher Anschluss A16 (nicht gezeigt) in der Speichersteuerung 406 mit geändertem Zweck verwendet, um einen zweiten Spaltenadressenbefehl an den DRAM0 402 über die unteren oder weniger signifikanten Anschlüsse A3–A9 in den DRAM0 402 zu senden. Wenn die Anschlüsse der Speichersteuerung 406 so konfiguriert werden, sind die oberen Anschlüsse der Speichersteuerung 406, das heißt A10–A16, und die unteren Anschlüsse A3–A9 des DRAM0 402 vertauscht, beispielsweise A13 ist mit A3 verbunden, A12 ist mit A4 verbunden und A11 ist mit A5 verbunden, usw. Unter Verwendung der vertauschten Konfiguration kann die Speichersteuerung 406 einen Spaltenbefehl an den DRAM1 404 über die unteren oder weniger signifikanten Anschlüsse der Speichersteuerung 406 senden, und durch die mit anderem Zweck verwendeten oberen oder signifikanten Anschlüsse der Speichersteuerung 406 kann die Speichersteuerung 406 einen weiteren Spaltenbefehl an den DRAM0 402 senden. Somit ist die Speichersteuerung 406 in der Lage, auf zwei nicht zusammenhängende Plätze innerhalb derselben logischen Speicherseite zuzugreifen – einen ersten Platz in dem DRAM0 402 und einen zweiten Platz in dem DRAM1 404.
  • Der Abstand zwischen Speicherzugriffspositionen in einer Speicherseite hängt von der Anzahl der verwendeten Anschlüsse ab, beispielsweise werden in der in 4A gezeigten Ausführungsform neun Anschlüsse im Spaltenzugriff (d. h. die Anschlüsse A2–A11 und NC) verwendet, und die Seitenadressen können 512 Bytes auseinander liegen. Die Adressen können auf 2048 Bytes im Abstand für DRAM erweitert werden, die elf Anschlüsse für Spaltenadressenbefehle (d. h., zusätzliche Zeilenanschlüsse A14 und A15) oder für Multi-Modus-Steuerungen erweitert werden, die zusätzliche unbenutzte Anschlüsse für die Rangauswahl besitzen.
  • 4B ist eine konzeptionelle Blockansicht des Speichersubsystems 400 mit Speicherzugriff auf nicht zusammenhängende Plätze in einer DRAM-Speicherseite gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das Speichersubsystem den DRAM0 402, den DRAM1 404 und die Speichersteuerung 406. Der DRAM0 402 und der DRAM1 404 enthalten eine logische Speicherseite 410. Der DRAM0 402 enthält den Seitenplatz 412 und der DRAM1 404 enthält den Seitenplatz 414. Wie zuvor hierin beschrieben ist, ist die Speichersteuerung 406 ausgebildet, eine Seite eines Speichers zu aktivieren/zu öffnen, die mindestens einen Teil sowohl des DRAM0 402 als auch des DRAM1 404, etwa die DRAM-Speicherseite 410 überspannt.
  • Unter Verwendung im Zwecke umgewidmeter Anschlüsse und der Vertauschungstechnik, die zuvor in Verbindung mit 4A beschrieben ist, kann die Speichersteuerung 406 Spaltenadressenbefehle sowohl an den DRAM0 402 als auch an den DRAM1 404 senden, um auf die Seite 410 an dem Platz 412 in dem DRAM0 402 und dem Platz 414 in dem DRAM1 404 zuzugreifen. Die Speichersteuerung 406 kann Datenbefehle senden, um Daten in die Speichereinrichtungen DRAM0 402 und DRAM1 404 zu lesen oder zu schreiben an den Positionen 412 und 414 in der Seite 410. Wie gezeigt und oben beschrieben ist, sind die Plätze bzw. Positionen 412 und 414 nicht zusammenhängende Speicherseitenpositionen.
  • 5 gibt ein Flussdiagramm von Verfahrensschritten zum Zugreifen auf nicht zusammenhängende Plätze in einer DRAM-Speicherseite gemäß einer Ausführungsform der vorliegenden Erfindung an. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 14 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der Erfindung liegt.
  • Wie gezeigt, beginnt ein Verfahren 500 in einem Schritt 502, in welchem die Speichersteuerung 406 eine DRAM-Speicherseite 410 öffnet, indem ein Zeilenadressenbefehl an die DRAM1-Einrichtung 404 und den DRAM0 402 über mehrere Anschlüsse in der Speichersteuerung 406 und über entsprechende Anschlüsse in dem DRAM1 404 und dem DRAM0 402 gesendet wird. Im Schritt 504 sendet die Speichersteuerung 406 einen ersten Spaltenadressenbefehl an den DRAM1 404 über eine Gruppe unterer Anschlüsse in der Speichersteuerung 406 und eine entsprechende Gruppe unterer Anschlüsse in dem DRAM1 404.
  • Im Schritt 506 vertauscht die Speichersteuerung 406 die oberen oder signifikantesten Anschlüsse in der Speichersteuerung 406 mit den unteren Anschlüssen in dem DRAM0 402, um die oberen oder signifikantesten Anschlüsse in der Speichersteuerung 406 für einen anderen Zweck zu nutzen, um Adressenbefehle an den DRAM0 402 zu senden.
  • Im Schritt 508 sendet die Speichersteuerung 406 einen vertauschten zweiten Spaltenadressenbefehl an den DRAM0 402 über die mit im Zweck veränderten oberen oder signifikantesten Anschlüsse in der Speichersteuerung 406 und über eine Gruppe aus unteren oder weniger signifikanten Anschlüssen in dem DRAM0 402. Und im Schritt 510 greift die Speichersteuerung 406 auf Daten an den gesendeten Zeilen- und Spaltenadressen über mehrere Anschlüsse in der Speichersteuerung 406 und entsprechende mehrere Anschlüsse in dem DRAM1 404 und über entsprechende mehrere Anschlüsse in dem DRAM0 402 zu.
  • Zusammengefasst gilt: wie hierin angegeben ist, ist ein Speichersubsystem zum Zugreifen auf nicht zusammenhängende Adressenpositionen innerhalb einer DRAM-Seite eingerichtet. In einer Ausführungsform hat das Speichersubsystem eine Speichersteuerung und mindestens zwei DRAM-Einrichtungen. Die Speichersteuerung umfasst mehrere Anschlüsse. Jede der mindestens zwei DRAM-Einrichtungen umfasst ebenfalls mehrere Anschlüsse. Es wird eine Gruppe oberer Anschlüsse in der Speichersteuerung mit einer Gruppe unterer Anschlüsse in einer zweiten DRAM-Einrichtung vertauscht, und eine Gruppe unterer Anschlüsse in der Speichersteuerung ist direkt mit einer entsprechenden Gruppe unterer Anschlüsse in der ersten DRAM-Einrichtung verbunden. Die Speichersteuerung sendet Zeilenadressenbefehle an die erste DRAM-Einrichtung und die zweite DRAM-Einrichtung über die oberen Anschlüsse und die unteren Anschlüsse. Die Speichersteuerung sendet Spaltenadressenbefehle an die erste DRAM-Einrichtung über die Gruppe unterer Anschlüsse in der Speichersteuerung und die Gruppe unterer Anschlüsse in der ersten DRAM-Einrichtung. Die Speichersteuerung sendet einen zweiten Spaltenadressenbefehl an die zweite DRAM-Einrichtung über die vertauschte Gruppe oberer Anschlüsse in der Speichersteuerung und die Gruppe unterer Anschlüsse in der zweiten DRAM-Einrichtung. Die Speichersteuerung greift auf Daten an den Speicheradressen über die mehreren Anschlüsse zu.
  • Ein Vorteil der offenbarten Technik besteht darin, dass auf nicht zusammenhängende Seitenpositionen im Hinblick auf eine geringere Auflösung von DRAM-Zugriffen mit nur wenigen oder keinen zusätzlichen Anschlüssen, mit minimalem zusätzlichen Platzanforderungen und minimalem zusätzlichen Leistungsverbrauch im Vergleich zu konventionellen Lösungen zugegriffen werden kann. Ein Zugriff auf nicht zusammenhängende Seitenpositionen erlaubt einen Datenzugriff mit erhöhter Auflösung und mit effizienterer Nutzung verfügbar Anschlüsse.
  • Die vorhergehenden Techniken sind mit Bezug zu speziellen Ausführungsformen beschrieben worden. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Technik abzuweichen, wie sie in den angefügten Patentansprüchen dargelegt ist. Die vorhergehende Beschreibung und die Zeichnungen sind daher in anschaulichem Sinne und nicht in einschränkendem Sinne zu betrachten.

Claims (10)

  1. Ein Verfahren zum Zugreifen auf nicht zusammenhängende Positionen in einer Speicherseite eines dynamischen Speichers mit wahlfreiem Zugriff (DRAN), wobei das Verfahren umfasst: Senden eines Zeilenadressenbefehls an eine erste DRAM-Einrichtung und eine zweite DRAM-Einrichtung über mehrere Anschlüsse in einer Speichersteuerung und über entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und der zweiten DRAM-Einrichtung; Senden eines ersten Spaltenadressenbefehls an die erste DRAM-Einrichtung und eines zweiten Spaltenadressenbefehls an die zweite DRAM-Einrichtung über die mehreren Anschlüsse in der Speichersteuerung; und Senden eines Datenbefehls an die erste DRAM-Einrichtung und die zweite DRAM-Einrichtung über mehrere Anschlüsse in der Speichersteuerung und entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und über entsprechende mehrere Anschlüsse in der zweiten DRAM-Einrichtung.
  2. Ein Speichersubsystem für den Zugriff auf nicht zusammenhängende Positionen in einer Speicherseite, wobei das Speichersubsystem umfasst: eine erste DRAM-Einrichtung mit mehreren Anschlüssen; eine zweite DRAM-Einrichtung mit mehreren Anschlüssen; und eine Speichersteuerung mit mehreren Anschlüssen, die ausgebildet ist, um: einen Zeilenadressenbefehl an die erste DRAM-Einrichtung und die zweite DRAM-Einrichtung über die mehreren Anschlüsse in der Speichersteuerung und über entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und der zweiten DRAM-Einrichtung zu senden; einen ersten Spaltenadressenbefehl an die erste DRAM-Einrichtung und einen zweiten Spaltenadressenbefehl an die zweite DRAM-Einrichtung über die mehreren Anschlüsse in der Speichersteuerung zu senden; und einen Datenbefehl an die erste DRAM-Einrichtung und die zweite DRAM-Einrichtung über mehrere Datenanschlüsse in der Speichersteuerung und entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und der zweiten DRAM-Einrichtung zu senden.
  3. Das Speichersubsystem nach Anspruch 2, wobei Senden des ersten Spaltenadressenbefehls und des zweiten Spaltenadressenbefehls umfasst: Senden des ersten Spaltenadressenbefehls an die erste DRAM-Einrichtung über eine erste Teilgruppe von Anschlüssen in der Speichersteuerung und eine erste Teilgruppe von Anschlüssen in der ersten DRAM-Einrichtung; und Senden des zweiten Spaltenadressenbefehls an die zweite DRAM-Einrichtung über eine zweite Teilgruppe von Anschlüssen in der Speichersteuerung und eine erste Teilgruppe an Anschlüssen in der zweiten DRAM-Einrichtung.
  4. Das Speichersubsystem nach Anspruch 3, wobei die Speichersteuerung ferner ausgebildet ist, die zweite Teilgruppe von Anschlüssen in der Speichersteuerung mit der zweiten Teilgruppe von Anschlüssen in der zweiten DRAM-Einrichtung zu vertauschen.
  5. Das Speichersubsystem nach Anspruch 4, wobei die zweite Teilgruppe von Anschlüssen in der Speichersteuerung eine Gruppe oberer Anschlüsse der Speichersteuerung umfasst, und wobei die erste Teilgruppe von Anschlüssen in der zweiten DRAM-Einrichtung eine Gruppe unterer Anschlüsse in der zweiten DRAM-Einrichtung umfasst, wobei die oberen Anschlüsse in der Speichersteuerung mit geändertem Zweck verwendet sind, um einen oder mehrere Spaltenadressenbefehle an die unteren Anschlüsse in der zweiten DRAM-Einrichtung zu senden.
  6. Das Speichersubsystem nach Anspruch 5, wobei die erste Teilgruppe von Anschlüssen in der Speichersteuerung eine Gruppe unterer Anschlüsse in der Speichersteuerung umfasst, und wobei die erste Teilgruppe von Anschlüssen in der ersten DRAM-Einrichtung eine Gruppe unterer Anschlüsse in der DRAM-Einrichtung umfasst.
  7. Das Speichersubsystem nach Anspruch 2, wobei die erste Spaltenadresse und die zweite Spaltenadresse nicht-zusammenhängende Adressen innerhalb einer Speicherseite umfassen.
  8. Das Speichersubsystem nach Anspruch 7, wobei zumindest ein Teil der Speicherseite in einer Zeile der ersten DRAM-Einrichtung gespeichert ist, und wobei mindestens ein Teil der Speicherseite in einer entsprechenden Zeile der zweiten DRAM-Einrichtung gespeichert ist.
  9. Das Speichersubsystem nach Anspruch 7, wobei der Abstand zwischen der ersten Spaltenadresse und der zweiten Spaltenadresse von der Anzahl der verwendeten Anschlüsse abhängig ist.
  10. Eine Recheneinrichtung mit: einem Speichersubsystem zum Zugriff auf nicht zusammenhängende Positionen in einer Speicherseite, wobei das Speichersubsystem umfasst: eine erste DRAM-Einrichtung mit mehreren Anschlüssen; eine zweite DRAM-Einrichtung mit mehreren Anschlüssen; und eine Speichersteuerung mit mehreren Anschlüssen, die ausgebildet ist, um: einen Zeilenadressenbefehl an die erste DRAM-Einrichtung und an die zweite DRAM-Einrichtung über die mehreren Anschlüsse in einer Speichersteuerung und die entsprechenden mehreren Anschlüsse in der ersten DRAM-Einrichtung und in der zweiten DRAM-Einrichtung zu senden; einen ersten Spaltenadressenbefehl an die erste DRAM-Einrichtung und einen zweiten Spaltenadressenbefehl an die zweite DRAM-Einrichtung über die mehreren Anschlüsse in der Speichersteuerung zu senden; und einen Datenbefehl an die erste DRAM-Einrichtung und an die zweite DRAM-Einrichtung über mehrere Anschlüsse in der Speichersteuerung und über entsprechende mehrere Anschlüsse in der ersten DRAM-Einrichtung und der zweiten DRAM-Einrichtung zu senden.
DE102013018135.6A 2012-12-12 2013-12-04 Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen Active DE102013018135B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/712,823 US10020036B2 (en) 2012-12-12 2012-12-12 Address bit remapping scheme to reduce access granularity of DRAM accesses
US13/712,823 2012-12-12

Publications (2)

Publication Number Publication Date
DE102013018135A1 true DE102013018135A1 (de) 2014-06-12
DE102013018135B4 DE102013018135B4 (de) 2021-12-02

Family

ID=50778227

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013018135.6A Active DE102013018135B4 (de) 2012-12-12 2013-12-04 Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen

Country Status (4)

Country Link
US (1) US10020036B2 (de)
CN (1) CN103870412A (de)
DE (1) DE102013018135B4 (de)
TW (1) TWI514146B (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10020036B2 (en) * 2012-12-12 2018-07-10 Nvidia Corporation Address bit remapping scheme to reduce access granularity of DRAM accesses
US10872011B2 (en) * 2016-05-02 2020-12-22 Intel Corporation Internal error checking and correction (ECC) with extra system bits
FR3055715B1 (fr) * 2016-09-08 2018-10-05 Upmem Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue
US20180137050A1 (en) * 2016-11-11 2018-05-17 Qualcomm Incorporated Low power memory sub-system using variable length column command
CN111512290B (zh) * 2017-12-27 2023-09-22 华为技术有限公司 文件页表管理技术
CN111240582B (zh) * 2018-11-29 2022-01-28 长鑫存储技术有限公司 数据读写方法、读写装置和动态随机存储器
TWI692759B (zh) * 2019-05-15 2020-05-01 瑞昱半導體股份有限公司 同時存取第一動態隨機存取記憶體與第二動態隨機存取記憶體的方法及相關的記憶體控制器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590071A (en) * 1995-11-16 1996-12-31 International Business Machines Corporation Method and apparatus for emulating a high capacity DRAM
US5835932A (en) * 1997-03-13 1998-11-10 Silicon Aquarius, Inc. Methods and systems for maintaining data locality in a multiple memory bank system having DRAM with integral SRAM
KR100699810B1 (ko) * 2000-08-05 2007-03-27 삼성전자주식회사 버스 효율을 향상시키는 반도체 메모리장치 및 메모리시스템
US7500075B1 (en) * 2001-04-17 2009-03-03 Rambus Inc. Mechanism for enabling full data bus utilization without increasing data granularity
US7142479B2 (en) * 2004-04-19 2006-11-28 Nokia Corporation Addressing data within dynamic random access memory
US8072463B1 (en) 2006-10-04 2011-12-06 Nvidia Corporation Graphics system with virtual memory pages and non-power of two number of memory elements
KR101086417B1 (ko) * 2006-11-27 2011-11-25 삼성전자주식회사 다이내믹 랜덤 액세스 메모리의 부분 액세스 장치 및 방법
US8595428B2 (en) * 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
US9436625B2 (en) * 2012-06-13 2016-09-06 Nvidia Corporation Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM
US10020036B2 (en) * 2012-12-12 2018-07-10 Nvidia Corporation Address bit remapping scheme to reduce access granularity of DRAM accesses

Also Published As

Publication number Publication date
US10020036B2 (en) 2018-07-10
DE102013018135B4 (de) 2021-12-02
US20140160876A1 (en) 2014-06-12
CN103870412A (zh) 2014-06-18
TWI514146B (zh) 2015-12-21
TW201435590A (zh) 2014-09-16

Similar Documents

Publication Publication Date Title
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE102009047518B4 (de) Computersystem und Verfahren geeignet zum Vermeiden von Datenkommunikationsverklemmungssituationen durch Markieren von CPU-Datenverkehr als speziell
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE69913500T2 (de) Mehrprozessor-Anordnung mit geteiltem Speicherzugriff unter Vorrang-Kontrolle
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE60308150T2 (de) Adressenraum, bussystem, speicherungssteuerung und einrichtungssystem
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE60313323T2 (de) Dram, der zugriffe verschiedener burst-länge unterstützt, ohne die burst-längeneinstellung im modusregister zu verändern
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102009046847A1 (de) Mehrklassen-Daten-Cache-Verfahren
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE19855645A1 (de) Verfahren und Anordnung zum Betreiben eines Direktzugriffsspeichers
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
DE112005002336T5 (de) Befehl, der unterschiedliche Operationen in unterschiedlichen Chips steuert
DE10147592A1 (de) System und Verfahren zum Vorsehen geichzeitiger Zeilen- und Spaltenbefehle
DE102018119881B4 (de) Verwaltung einer DRAM-Bankaktivierung
DE102012215197A1 (de) Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
DE102012219059A1 (de) Effizientes Befehlsabbildungsschema für Kurze-Datenburstlängen- Speichervorrichtungen
DE102004027121A1 (de) Ein Mehrfachbankchip, der mit einer Steuerung kompatibel ist, die für eine geringere Anzahl von Banken entworfen ist, und ein Verfahren zum Betreiben

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G11C0008000000

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final