DE102012215197A1 - Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle - Google Patents

Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle Download PDF

Info

Publication number
DE102012215197A1
DE102012215197A1 DE102012215197A DE102012215197A DE102012215197A1 DE 102012215197 A1 DE102012215197 A1 DE 102012215197A1 DE 102012215197 A DE102012215197 A DE 102012215197A DE 102012215197 A DE102012215197 A DE 102012215197A DE 102012215197 A1 DE102012215197 A1 DE 102012215197A1
Authority
DE
Germany
Prior art keywords
memory
bus
storage device
memory interface
command
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.)
Pending
Application number
DE102012215197A
Other languages
English (en)
Inventor
Alok Gupta
Barry A. Wagner
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 DE102012215197A1 publication Critical patent/DE102012215197A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • 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/1689Synchronisation and timing concerns
    • 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/38Information transfer, e.g. on bus
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Systems (AREA)
  • Dram (AREA)

Abstract

Eine Speichersteuerung und eine dynamische Schnittstelle für einen Speicher mit wahlfreiem Zugriff (DRAM) sind offenbart. Die Speichersteuerung implementiert Signale für die DRAM-Schnittstelle. Die DRAM-Schnittstelle umfasst ein Differentialtaktsignal, einen unkalibrierten Parallelbefehlsbus und einen Hochgeschwindigkeit-Serialadressbus. Der Befehlsbus kann benutzt werden, um Kommunikation mit dem Speichergerät auf ein Einschalten hin zu initiieren und eine Kalibration des Adressbusses zu initiieren.

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die Erfindung betrifft im Allgemeinen eine Speicherschnittstelle und insbesondere eine Speichersteuerung und eine dynamischer-wahlfreier-Zugriff-Speicher (dynamic random access memory) (DRAM)-Schnittstelle.
  • Beschreibung der betreffenden Technik
  • Momentane Standard-Speicher-Schnittstellen implementieren typischerweise einen Parallelbefehl- und Adressbus. Zum Beispiel definiert die JEDEC-Spezifikation für DDR3-SDRAM sechszehn Adresspins (A0–A15), drei Bankadresspins (BA0–BA2) und fünf Befehlspins (CS#, CKE#, RAS#, CAS#, WE#) für eine Gesamtheit von vierundzwanzig Pins. Die JEDEC-Spezifikation für GDDR5-SGRAM definiert vierzehn Adresspins (A0–A12, plus RFU (reserviert)) und vier Bankadresspins (BA0–BA3) (welche neun physikalische Pins über eine Doppeldatenrateadressierung teilen), einen Adressbusinversionspin (ABI#), und fünf Befehlspins (CS#, CKE#, RAS#, CAS#, WE#) für eine Gesamtheit von fünfzehn Pins.
  • Andere Typen von Schnittstellen implementieren eine Hochgeschwindigkeit-Serial-Schnittstelle. Zum Beispiel haben DisplayPort® und Pheripheral Component Interconnect Express® (PCIe) eine oder mehrere Spuren (lanes) (Differentialsignale zur Kommunikation) für Befehls- und Datentransfer. Typischerweise erfordern die Serial-Schnittstellen jedoch eine ausgiebige Kalibration, um die notwendige Bandbreite einer Datentransmission bereitzustellen. Zum Beispiel definiert der PCIe-Standard eine Link-Trainingssequenz (link training sequence), welche durchgeführt werden muss, bevor Daten über den Seriallink transportiert werden können. Die Link-Trainingssequenz entdeckt die Anzahl von Spuren (lanes) in dem Link, die Maximalgeschwindigkeit des links und die physikalischen Eigenschaften des Links, wie etwa Zeitversatz (timing skew) für jede Spur. Der Seriallink muss diese Parameter bestimmen, bevor der Link bei hohen Geschwindigkeiten betrieben werden kann, während die Genauigkeit der Datentransmission aufrechterhalten wird. Diese Schnittstellen erfordern auch einen Niedriggeschwindigkeit-Seitenbandkommunikationskanal, um eine Kalibration zu initiieren, wie etwa der Hilfskanal im DisplayPort®.
  • Ein Nachteil der herkömmlichen Speicherschnittstellen ist, dass der Parallelbefehl- und Adressbus eine große Anzahl von Zwischenverbindungen (interconnects) erfordert. Ein Routing zwischen der Speichersteuerung und dem Speichergerät kann komplex werden und erfordert eine Menge von physikalischem Raum in dem Layout der gedruckten Schaltungsplatine. Obwohl ein Schalten auf einen rein serialen Befehl- und Adressbus die Anzahl von erforderlichen Zwischenverbindungen reduzieren kann, führen die Anforderungen einer ausgiebigen Kalibration zu einer Latenz beim Einschalten (power-up), bevor irgendwelche Daten über den Link übermittelt werden können. Weiterhin kann ein Seitenbandkommunikationskanal erfordert sein, um den Seriallink zu kalibrieren, was zusätzliche Zwischenverbindungen hinzufügt, welche während eines normalen Betriebs nicht benutzt werden.
  • Wie das Vorangehende illustriert, was in der Technik benötigt ist, ist eine verbesserte Technik zum Senden von Befehlen und Adressen an ein Speichergerät.
  • Zusammenfassung der Erfindung
  • Eine Ausführungsform der vorliegenden Erfindung führt eine Speicherschnittstelle aus, welche konfiguriert ist, mit einem Speichergerät zu kommunizieren. Die Speicherschnittstelle umfasst einen Differentialtaktkanal (differential clock channel) zum Übermitteln eines Referenztaktsignals an das Speichergerät, einen unkalibrierten Parallelbefehlbus (parallel command bus) zum Übermitteln von einem oder mehreren Befehlen an das Speichergerät, und einen Serialadressbus (serial adress bus) zum Übermitteln von einer oder mehreren Adressen an das Speichergerät, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
  • Eine andere Ausführungsform der vorliegenden Erfindung führt ein System aus, welches ein Speichergerät und eine Speicherschnittstelle umfasst, welche konfiguriert ist, mit dem Speichergerät zu kommunizieren. Die Speicherschnittstelle umfasst einen Differentialtaktkanal zum Übermitteln eines Referenztaktsignal an das Speichergerät, einen unkalibrierten Parallelbefehlbus zum Übermitteln eines oder mehrerer Befehle an das Speichergerät und einen Serialadressbus zum Übermitteln einer oder mehrerer Adressen an das Speichergerät, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
  • Noch eine andere Ausführungsform der vorliegenden Erfindung führt ein Verfahren zum Kommunizieren mit einem Speichergerät aus. Das Verfahren umfasst die Schritte eines Übermittelns eines Referenztaktsignals an das Speichergerät über einen Differentialtaktkanal, eines Übermittelns von einem oder mehreren Befehlen an das Speichergerät über einen unkalibrierten Parallelbefehlbus, und eines Übermittelns von einer oder mehreren Adressen an das Speichergerät über einen Serialadressbus, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
  • Ein Vorteil der offenbarten Technik ist, dass die Anzahl von Zwischenverbindungen (interconnects), welche erforderlich sind, um Befehle und Adressen an das Speichergerät zu übermitteln, relativ zu Industriestandard-Parallelschnittstellen vermindert ist. Zusätzlich kann mittels eines Separierens des Befehlsbusses von dem Adressbus der kleine unkalibrierte Parallelbefehlbus benutzt werden, um eine Kalibration des Serialadressbusses zu initiieren, um dadurch das Erfordernis für einen separaten, Niedriggeschwindigkeit-Seitenbandkommunikationenkanal zu überwinden, welcher während eines normalen Betriebs nicht benutzt wird.
  • Kurze Beschreibung der Zeichnungen
  • So dass die Weise, in welcher die oben rezitierten Merkmale der Erfindung im Detail verstanden werden können, kann eine besondere Beschreibung der Erfindung, welche oben kurz zusammengefasst ist, mittels einer Bezugnahme auf Ausführungsformen erhalten werden, von denen einige in den angehängten Zeichnungen illustriert sind. Es wird jedoch bemerkt, dass die angehängten Zeichnungen nur typische Ausführungsformen dieser Erfindung illustrieren und dass sie daher nicht zu betrachten sind, ihren Geltungsbereich zu begrenzen, da die Erfindung andere gleicheffektive Ausführungsformen zulassen kann.
  • 1 ist ein Blockdiagramm, welches ein Computersystem illustriert, welches konfiguriert ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu implementieren;
  • 2 illustriert ein Parallelverarbeitungssubsystem gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 illustriert einen Teil einer Speicherschnittstelle gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 illustriert einen Parallelverarbeitungsspeicher, welcher eine Mehrzahl von DRAM-Modulen umfasst, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5 illustriert einen Parallelverarbeitungsspeicher, welcher eine Mehrzahl von DRAM-Modulen umfasst, gemäß einer anderen Ausführungsform der vorliegenden Erfindung; und
  • 6 führt ein Flussdiagramm eines Verfahrens zum Initialisieren einer Speicherschnittstelle gemäß einer Ausführungsform der vorliegenden Erfindung aus.
  • In der folgenden Beschreibung werden zahlreiche spezifische Details ausgeführt, um ein durchgängigeres Verständnis der vorliegenden Erfindung bereitzustellen. Es wird jedoch für den Fachmann in der Technik ersichtlich sein, dass die vorliegende Erfindung ohne ein oder mehrere dieser spezifischen Details praktiziert werden kann. In anderen Fällen sind wohl bekannte Merkmale nicht beschrieben worden, um ein Verschleiern der vorliegenden Erfindung zu vermeiden.
  • Systemüberblick
  • 1 ist ein Blockdiagramm, welches ein Computersystem 100 illustriert, welches konfiguriert ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu implementieren. Computersystem 100 umfasst eine Zentralverarbeitungseinheit (CPU) 102 und einen Systemspeicher 104, welcher über einen Zwischenverbindungspfad (interconnection path) kommuniziert, welcher eine Speicherbrücke 105 umfassen kann. Speicherbrücke 105, welche z. B. ein Northbridge-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (z. B. HyperTransport-Link) mit einer I/O-(Eingabe/Ausgabe)-Brücke 107 verbunden. I/O-Brücke 107, welche z. B. ein Southbridge-Chip sein kann, empfängt Benutzereingabe von einem oder mehreren Benutzer-Eingabegeräten 108 (z. B. Tastatur, Maus) und leitet die Eingabe an CPU 102 über Pfad 106 und Speicherbrücke 105 weiter. Ein Parallel-Verarbeitungs-Subsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen anderen Kommunikationspfad 113 (z. B. einen PCI-Express Accelerated Graphics Port, oder HyperTransport-Link) gekoppelt; in einer Ausführungsform ist das Parallel-Verarbeitungs-Subsystem 112 ein Grafik-Subsystem, welches Pixel an ein Anzeigegerät 110 (z. B. ein konventioneller CRT- oder LCD-basierter Monitor) liefert. Eine Systemplatte 114 ist auch mit der I/O-Brücke 107 verbunden. Ein Switch 116 stellt Verbindungen zwischen I/O-Brücke 107 und anderen Komponenten bereit, wie etwa ein Netzwerkadapter 118 und verschiedenen Hinzufügungskarten (Add-in-Cards) 120 und 121. Andere Komponenten (nicht explizit gezeigt) umfassend USB- oder andere Port-Verbindungen, CD-Laufwerke, DVD-Laufwerke, Filmaufnahmegeräte, und dergleichen, können auch mit der I/O-Brücke 107 verbunden sein. Kommunikationspfade, welche die verschiedenen Komponenten in 2A wechselseitig verbinden, können unter Benutzung irgendwelcher geeigneten Protokolle implementiert sein, wie etwa PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport, oder irgendeines oder irgendwelcher Bus- oder Punkt-zu-Punkt-Kommunikations-Protokoll(e), und Verbindungen zwischen verschiedenen Geräten können verschiedene Protokolle benutzen, wie in der Technik bekannt ist.
  • In einer Ausführungsform inkorporiert das Parallel-Verarbeitungs-Subsystem 112 Schaltung, welche für Grafik- und Video-Verarbeitung optimiert ist, einschließlich zum Beispiel Videoausgabe-Schaltung, und konstituiert eine Grafik-Verarbeitungseinheit (GPU). In einer anderen Ausführungsform umfasst das Parallel-Verarbeitungs-Subsystem 112 Schaltung, welche für Allgemeinzweck-Verarbeitung optimiert ist, während die darunter liegende Computer-Architektur, welche im größeren Detail hierin beschrieben ist, beibehalten ist. In noch einer anderen Ausführungsform kann das Parallel-Verarbeitungs-Subsystem 102 mit einem oder mit mehreren anderen Systemelementen integriert sein, wie etwa der Speicherbrücke 105, CPU 102 und I/O-Brücke 107, um ein System auf dem Chip (system on chip) (SoC) zu bilden.
  • Es wird geschätzt werden, dass das hierin gezeigte System illustrativ ist und dass Variationen und Modifikationen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und der Anordnung von Brücken, der Anzahl von CPUs 102, und der Anzahl von Parallel-Verarbeitungs-Subsystemen 112 kann wie gewünscht modifiziert werden. Zum Beispiel ist in einigen Ausführungsformen Systemspeicher 104 mit CPU 102 direkt gekoppelt anstatt durch eine Brücke, und andere Geräte kommunizieren mit Systemspeicher 104 über Speicherbrücke 105 und CPU 102. In anderen alternativen Topologien ist das Parallel-Verarbeitungs-Subsystem 112 mit I/O-Brücke 107 oder direkt mit CPU 102 verbunden anstatt mit der Speicherbrücke 105. In noch anderen Ausführungsformen können die I/O-Brücke 107 und Speicherbrücke 105 in einen einzelnen Chip integriert sein. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallel-Verarbeitungs-Subsysteme 112 umfassen. Die besonderen Komponenten, welche hierin gezeigt sind, sind optional; z. B. könnte irgendeine Anzahl von Hinzufügungskarten oder peripheren Geräten unterstützt sein. In einigen Ausführungsformen ist der Switch 116 eliminiert und der Netzwerkadapter 116 und Hinzufügungskarten 120, 121 verbinden direkt mit der I/O-Brücke 107.
  • 2 illustriert ein Parallel-Verarbeitungs-Subsystem 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das Parallel-Verarbeitungs-Subsystem 112 eine oder mehrere Parallel-Verarbeitungseinheiten (PPUs) 202, wobei jede von diesen mit einem lokalen Parallel-Verarbeitungs-(PP)-Speicher 204 gekoppelt ist. Im Allgemeinen umfasst ein Parallel-Verarbeitungs-Subsystem eine Anzahl U von PPUs, wobei U ≥ 1 (hierin sind mehrere Instanzen von ähnlichen Objekten mit Referenznummern bezeichnet, welche das Objekt identifizieren und Nummern in Klammern die Instanz identifizieren, wenn benötigt). PPUs 202 und Parallel-Verarbeitungs-Speicher 204 können unter Benutzung von einem oder mehreren integrierte-Schaltung-Geräten implementiert sein, wie etwa programmierbare Prozessoren, Anwendungs-spezifische integrierte Schaltungen (ASICs), oder Speichergeräte, oder in irgendeiner anderen technisch machbaren Weise.
  • Mit Bezug wieder auf 1 sind in einigen Ausführungsformen einige oder alle der PPUs 202 in dem Parallel-Verarbeitungs-Subsystem 112 Grafikprozessoren mit Render-Pipelines, welche konfiguriert sein können, um verschiedene Aufgaben durchzuführen, welche das Erzeugen von Pixeldaten von Grafik-Daten, welche mittels CPU 102 und/oder Systemspeicher 104 über Speicherbrücke 105 und Kommunikationspfad 113 zugeführt sind, ein Interagieren mit lokalem Parallel-Verarbeitungs-Speicher 204 (welcher als ein Grafikspeicher benutzt werden kann einschließlich z. B. eines konventionellen Bildpuffers (frame buffer)), um Pixeldaten zu speichern und zu aktualisieren, ein Liefern von Pixeldaten an das Anzeigegeräte 110, und dergleichen betreffen. In einigen Ausführungsformen kann das Parallel-Verarbeitungs-Subsystem 112 eine oder mehrere PPUs 202 umfassen, welche als Grafikprozessoren operieren, und eine oder mehrere andere PPUs 202, welche für Allgemeinzweck-Berechnungen benutzt werden können. Die PPUs können identisch sein oder verschieden sein und jede PPU kann sein eigenes dediziertes Parallel-Verarbeitungs-Speichergerät(e) haben oder braucht nicht dedizierte Parallel-Verarbeitungs-Speichergerät(e) zu haben. Eine oder mehrere PPUs 202 können Daten an das Anzeigegeräte 110 ausgeben oder jede PPU 202 kann Daten an eines oder mehrere Anzeigegeräte 110 ausgeben.
  • Im Betrieb ist CPU 102 der Master-Prozessor von Computersystems 100, welcher Operationen von anderen Systemkomponenten steuert und koordiniert. Insbesondere stellt CPU 102 Befehle aus (issues), welche den Betrieb von PPUs 202 steuern. In einigen Ausführungsformen schreibt CPU 102 einen Strom von Befehlen für jede PPU 202 an einen Schiebepuffer oder Push-Puffer (pushbuffer) (nicht explizit in 1 oder 2 gezeigt), welcher in dem Systemspeicher 104, Parallel-Verarbeitungs-Speicher 204 oder irgendeiner anderen Speicherstelle, welche für sowohl CPU 102 als auch PPU 202 zugreifbar ist, lokalisiert sein kann. Ein Push-Puffer ist ein Speicherpuffer, der mittels der CPU 102 und PPU 202 zugreifbar ist. CPU 102 schreibt einen Befehlsstrom und Graphikdaten an den Push-Puffer. PPU 202 liest den Befehlsstrom von dem Push-Puffer und führt dann Befehle asynchron relativ zu dem Betrieb von CPU 102 aus.
  • Mit Bezug nun zurück auf 2 umfasst jede PPU 202 eine I/O-(Eingabe/Ausgabe)-Einheit 205, welche mit dem Rest des Computersystems 100 kommuniziert. In einigen Ausführungsformen ist das Parallel-Verarbeitungs-Subsystem 112 als eine Hinzufügungskarte implementiert, welche in einen Erweiterungsschlitz oder Erweiterungssteckplatz (expansion slot) von Computersystem 100 eingeführt werden kann. In anderen Ausführungsformen kann eine PPU 202 auf einem einzelnen Chip integriert sein mit einer Bus-Brücke, wie etwa Speicherbrücke 105 oder I/O-Brücke 107. In noch anderen Ausführungsformen können einige oder alle Elemente von PPU 202 auf einem einzelnen Chip mit CPU 102 integriert sein.
  • I/O-Einheit 205 erzeugt Pakete (oder andere Signale) zur Übermittlung an CPU 102 und empfängt auch alle einlaufenden Pakete (oder andere Signale) von CPU 102, wobei die einlaufenden Signale an geeignete Komponenten von PPU 202 gerichtet werden. Zum Beispiel können Befehle, welche Verarbeitungsaufgaben betreffen, an eine Host-Schnittstelle 206 gerichtet werden, während Befehle, welche Speicheroperationen betreffen (zum Beispiel Lesen von oder Schreiben auf Parallelverarbeitungsspeicher 204) an eine Speicherkreuzschieneeinheit (memory cross bar unit) 210 gerichtet werden können. Host-Schnittstelle 206 liest jeden Push-Puffer (push buffer) und gibt die Arbeit, welche mittels des Push-Puffers spezifiziert ist, an ein Frontend 212 aus.
  • Jede PPU 202 implementiert vorteilhafter Weise eine Hochparallel-Verarbeitungs-Architektur. Wie im Detail gezeigt ist, umfasst PPU 202(0) ein Verarbeitungscluster-Feld (processing cluster array) 230, welches eine Anzahl C von Allgemein-Verarbeitungs-Clustern (GPCs) 208 umfasst, wobei C ≥ 1. Jeder GPC 208 ist in der Lage, eine große Anzahl (z. B. Hunderte oder Tausende) von Threads simultan (concurrently) auszuführen, wobei jeder Thread eine Instanz eines Programms ist. In verschiedenen Anwendungen können verschiedene GPCs 208 zur Verarbeitung von verschiedenen Typen von Programmen oder zum Durchführen von verschiedenen Typen von Berechnungen alloziert werden. Zum Beispiel kann in einer Grafik-Anwendung ein erster Satz von GPCs 208 alloziert werden, um Stück-Tessellations-Operationen (patch tessellation operations) durchzuführen und Primitive-Topologien für Patches oder Stücke zu erzeugen, und ein zweiter Satz von GPCs 208 kann alloziert sein, um Tessellations-Schattierung (tessellation shading) durchzuführen, um Patch-Parameter für die Primitive-Topologien zu evaluieren und Vertex-Positionen und andere Pro-Vertex-Attribute zu bestimmen. Die Allozierung von GPCs 208 kann abhängig von der Arbeitsbelastung, welche für jeden Typ von Programm oder Berechnung auftritt, variiert werden.
  • GPCs 208 empfangen Verarbeitungs-Aufgaben, welche auszuführen sind, über eine Arbeitsverteilungs-Einheit 200, welche Befehle, welche Verarbeitungs-Aufgaben definieren, von der Frontend-Einheit 212 empfängt. Verarbeitungs-Aufgaben umfassen Indizes von Daten, welche zu prozessieren sind, z. B. Oberflächen-(Patch)-Daten, Primitive-Daten, Vertex-Daten und/oder Pixel-Daten, sowie Zustands-Parameter und Befehle, welche definieren, wie die Daten zu prozessieren sind (z. B. welches Programm auszuführen ist). Arbeitsverteilungs-Einheit 200 kann konfiguriert sein, die Indizes, welche den Aufgaben entsprechen, zu holen, oder die Arbeitsverteilungs-Einheit 200 kann die Indizes von dem Frontend 212 empfangen. Frontend 212 stellt sicher, dass die GPCs 208 auf einen gültigen Zustand konfiguriert sind, bevor die Verarbeitung, welche mittels der Push-Puffer spezifiziert wird, initiiert wird.
  • Wenn PPU 202 zum Beispiel für Grafik-Verarbeitung benutzt wird, ist die Verarbeitungs-Arbeitsbelastung für jeden Patch in ungefähr gleichgroße Aufgaben aufgeteilt, um eine Verteilung der Tessellations-Verarbeitung an mehrere GPCs 208 zu ermöglichen. Eine Arbeits-Verteilungseinheit 200 kann konfiguriert sein, Aufgaben bei einer Frequenz zu erzeugen, was befähigt, die Aufgaben an mehrere GPCs 208 zur Verarbeitung bereitzustellen. Im Gegensatz dazu ist in konventionellen Systemen Verarbeitung typischerweise mittels einer einzigen Verarbeitungs-Maschine (processing engine) durchgeführt, während andere Verarbeitungs-Maschinen untätig bleiben, wobei sie darauf warten, dass die einzelne Verarbeitungs-Maschine ihre Aufgaben komplettiert, bevor sie ihre Verarbeitungs-Aufgaben beginnen. In einigen Ausführungsformen der vorliegenden Erfindung sind Teile von GPCs 208 konfiguriert, verschiedene Typen von Verarbeitung durchzuführen. Zum Beispiel kann ein erster Teil konfiguriert sein, eine Vertex-Schattierung und Topologie-Erzeugung durchzuführen, ein zweiter Teil kann konfiguriert sein, eine Tessellation und Geometrie-Schattierung durchzuführen und ein dritter Teil kann konfiguriert sein, Pixel-Schattierung in einem Pixel-Raum durchzuführen, um ein gerendertes Bild zu erzeugen. Zwischen-Daten, welche mittels der GPCs 208 produziert sind, können in Puffern gespeichert sein, um zu erlauben, dass die Zwischen-Daten zwischen GPCs 208 für weitere Verarbeitung übermittelt werden.
  • Irgendeine von GPCs 208 kann Daten verarbeiten, welche auf irgendeinen der DRAMs 220 innerhalb des Parallel-Verarbeitungs-Speichers 204 zu schreiben sind. Kreuzschiene-Einheit 210 ist konfiguriert, um die Ausgabe von jedem GPC 208 an den Eingang irgendeiner Partitions-Einheit 215 oder an irgendeinen GPC 208 für weitere Verarbeitung zu leiten (route). GPCs 208 kommunizieren mit der Speicher-Schnittstelle 214 durch die Kreuzschiene 210, um von/auf verschiedene externe Speicher-Geräte zu schreiben oder zu lesen. In einer Ausführungsform hat die Kreuzschiene-Einheit 210 eine Verbindung der Speicher-Schnittstelle 214, um mit I/O-Einheit 205 zu kommunizieren, sowie eine Verbindung mit lokalem Parallel-Verarbeitungs-Speicher 204, um dadurch den Verarbeitungs-Kernen innerhalb der verschiedenen GPCs 208 zu ermöglichen, mit dem System-Speicher 104 oder einem anderen Speicher zu kommunizieren, welcher nicht lokal zu der PPU 202 ist. In der in 2 gezeigten Ausführungsform ist die Kreuzschiene-Einheit 210 direkt mit I/O-Einheit 205 verbunden. Kreuzschiene-Einheit 210 kann virtuelle Kanäle benutzen, um Verkehrsströme zwischen den GPCs 208 und Speicher-Schnittstelle 214 zu separieren.
  • Wiederum können GPCs 208 programmiert sein, Verarbeitungs-Aufgaben durchzuführen, welche eine große Verschiedenheit von Anwendungen betreffen, einschließlich aber nicht darauf beschränkt, lineare oder nichtlineare Daten-Transformationen, Filtern von Video- und/oder Audio-Daten, Modellierungs-Operationen (z. B. Anwenden der Gesetze der Physik, um Position, Geschwindigkeit und andere Attribute von Objekten zu bestimmen), Bild-Render-Operationen (z. B. Tessellations-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel-Schattierungs-Programme), usw. PPUs 202 können Daten von dem System-Speicher 104 und/oder Lokal-Parallel-Verarbeitungs-Speichern 204 in internen (on-Chip)-Speicher transferieren, können die Daten prozessieren, und können Ergebnis-Daten zurück in den System-Speicher 104 und/oder lokalen Parallel-Verarbeitungs-Speicher 204 schreiben, wo auf solche Daten mittels anderer System-Komponenten zugegriffen werden kann, einschließlich CPU 102 oder ein anderes Parallel-Verarbeitungs-Subsystem 112.
  • Eine PPU 202 kann mit irgendeiner Menge/Umfang (amount) von Lokal-Parallel-Verarbeitungs-Speicher 204 bereitgestellt sein, einschließlich keines Lokal-Speichers, und kann Lokal-Speicher und System-Speicher in irgendeiner Kombination benutzen. Zum Beispiel kann eine PPU 202 ein Grafikprozessor in einer unifizierter-Speicher-Architektur (unified memory architecture) (UMA)-Ausführungsform sein. In solchen Ausführungsformen würde wenig oder kein dedizierter Grafik-(Parallel-Verarbeitungs)-Speicher bereitgestellt sein und PPU 202 würde System-Speicher exklusiv oder fast exklusiv benutzen. In UMA-Ausführungsformen kann eine PPU 202 in einen Brücken-Chip oder Prozessor-Chip integriert sein oder als ein diskreter Chip bereitgestellt sein mit einem Hochgeschwindigkeits-Link (z. B. PCI-Express), welcher die PPU 202 mit System-Speicher über einen Brücke-Chip oder ein anderes Kommunikations-Mittel verbindet.
  • Wie oben bemerkt ist, kann irgendeine Anzahl von PPUs 202 in einem Parallel-Verarbeitungs-Subsystem 112 umfasst sein. Zum Beispiel können mehrere PPUs 202 auf einer einzelnen Hinzufügungskarte bereitgestellt sein oder mehrere Hinzufügungskarten können mit dem Kommunikationspfad 113 verbunden sein oder eine oder mehrere der PPUs 202 können in einen Brücken-Chip integriert sein. PPUs 202 in einem Mehr-PPU-System können identisch sein oder verschieden voneinander sein. Zum Beispiel könnten verschiedene PPUs 202 verschiedene Anzahlen von Verarbeitungs-Kernen haben, verschiedene Mengen oder Größen von Lokal-Parallel-Verarbeitungs-Speicher, usw. Wo mehrere PPUs 202 vorhanden sind, können diese PPUs in paralleler Weise betrieben werden, um Daten bei einem höheren Durchsatz zu verarbeiten als es mit einer einzelnen PPU 202 möglich ist. Systeme, welche eine oder mehrere PPUs 202 inkorporieren, können in einer Verschiedenheit von Konfigurationen und Formfaktoren implementiert sein, einschließlich Schreibtisch-Computer, Laptop-Computer, oder handgehaltenen Personal-Computern, Servern, Arbeitsstationen, Spielekonsolen, eingebetteten Systemen und dergleichen.
  • Speicher-Schnittstelle
  • 3 illustriert einen Teil einer Speicherschnittstelle gemäß einer Ausführungsform der vorliegenden Erfindung. In herkömmlichen Speicherschnittstellen, wie etwa der JEDEC-DDR3-SDRAM-Schnittstelle, sind der Befehlsbus und der Adressbus eine einendige (single-ended) Parallelschnittstelle. Zum Beispiel umfasst DDR3-SDRAM fünf Befehlspins und neunzehn Adresspins (sechzehn Adresspins und drei Bankadresspins). Jede Zwischenverbindung ist unidirektional von der Speicherschnittstelle zu dem DRAM-Modul.
  • Wie in 3 gezeigt ist, implementiert die Speicherschnittstelle 214 ein Differentialtaktsignal (CK/CK#) 312, einen einendigen Punkt-zu-Punkt- oder Punkt-zu-Mehrpunkt-Befehlsbus 314, und einen Differential-, Hochgeschwindigkeit-Punkt-zu-Punkt-Serialadressbus 316. Das Taktsignal 312 ist ähnlich den Differentialtaktsignalen der verschiedenen DDRx-Schnittstellen (das heißt DDR2, DDR3, etc.). In einer Ausführungsform umfasst der Befehlsbus 314 fünf Zwischenverbindungen (interconnects), wie etwa die CS#-, RAS#-, CAS#-, WE#-Befehlssignale in der DDR3-SDRAM-Schnittstelle aber mit verschiedener Kodierung. Es wird geschätzt werden, dass irgendeine Anzahl N von Zwischenverbindungen in dem Befehlsbus 314 umfasst sein kann. Die Anzahl von Zwischenverbindungen kann optimiert sein, um die Gesamtanzahl von Befehlen zu reflektieren, welche in dem Befehlsbus 314 kodiert werden können. Zum Beispiel ermöglichen drei Zwischenverbindungen, dass bis zu acht Befehle mittels des Befehlsbusses kodiert werden können. In einer Ausführungsform ist der Adressbus 316 ein Hochgeschwindigkeit-Punkt-zu-Punkt-Differentialseriallink. In anderen Worten umfasst der Adressbus 316 zwei Zwischenverbindungen, welche zwischen der Speicherschnittstelle 214 und dem DRAM-Modul 220 verbunden sind. In einer anderen Ausführungsform ist die Bandbreite des Adressbusses 316 dadurch skalierbar, indem zusätzliche Punkt-zu-Punkt-Differentialseriallinks hinzugefügt werden.
  • Der Adressbus 316 wird beim Einschalten (power-up) kalibriert, um zuverlässig bei einer hohen Frequenz zu arbeiten. Mit herkömmlichen Serialbefehl-/Adressbussen ist typischerweise ein Niedriggeschwindigkeits-Seitenbandkommunikationenkanal umfasst, um vor der Kalibration mit dem DRAM-Modul 220 zu kommunizieren. In der in 3 illustrierten Speicherschnittstelle 214 ist jedoch der Befehlsbus 314 durch das Design sofort auf ein Einschalten hin ohne irgendeine erforderte Kalibration verfügbar. Daher kann das gesamte Seriallinktraining über Befehle durchgeführt werden, welche auf dem Befehlsbus 314 ausgestellt werden, ohne das Erfordernis für einen separaten Seitenbandkommunikationen-Kanal. Zum Beispiel kann die Speicherschnittstelle 214 einen Befehl an das DRAM-Modul 220 auf Befehlsbus 314 senden, welcher das DRAM-Modul 220 anweist, eine Adresslinktrainingssequenz zu beginnen. Dann übermittelt die Speicherschnittstelle 214 eine Sequenz von Trainingsmustern (das heißt eine vordefinierte Sequenz von Bits) an das DRAM-Modul 220 über den Adressbus 316. Das DRAM-Modul 220 empfängt die Trainingsmuster und übermittelt die empfangenen Muster zurück an die Speicherschnittstelle über einen Datenbus (nicht gezeigt). Das DRAM-Modul 220 kann die Trainingsmuster, welche über den Adressbus 316 gesendet sind, speichern, welche später mittels der Speicherschnittstelle 214 dadurch gelesen werden, dass Befehle über den Befehlsbus 314 ausgestellt werden. Die Speicherschnittstelle 214 analysiert die mittels des DRAM-Moduls 220 empfangenen Daten, um Zeitinformation und Parameter für eine Benutzung zum Übermitteln von Daten auf dem Adressbus 316 zu bestimmen. Die Speicherschnittstelle 214 kann die Adresslinktrainingssequenz unter Benutzung von verschiedenen Transmissionsparametern wiederholen. Sobald die Speicherschnittstelle 214 die Adresslinktrainingssequenz vollendet hat, kann der Hochgeschwindigkeitsadressbus 316 benutzt werden, um Adressen an das DRAM-Modul 220 zu übermitteln.
  • Vorteilhafter Weise wird der Befehlsbus 314 benutzt, um Befehle an das DRAM-Modul 220 während eines normalen Betriebs zu übermitteln. Anders als die konventionellen Serialspeicherschnittstellen, welche eine Seitenbandsignalisierungsschnittstelle implementieren, um den Seriallink zu kalibrieren, übermittelt die Speicherschnittstelle 214 Befehle, um den Adressbus 316 über den Befehlsbus 314 zu initialisieren. Zusätzlich werden Befehle an das DRAM-Modul 220 über den Befehlsbus 313 während eines normalen Betriebs gesendet, um dadurch den Seriallink von der zusätzlichen Bandbreite, welche erforderlich ist, wenn sowohl Befehle als auch Adressen über denselben serialen Link übermittelt werden, zu entlasten (releaving). In einer Ausführungsform werden Befehle über einen Befehlsbus 314 im Wesentlichen simultan mit Adressen gesendet, welche über den Adressbus 316 gesendet werden. Mit anderen Worten wird ein Befehl über den Befehlsbus 314 während desselben Taktzyklus transmittiert wie wenn zumindest ein Teil der Adresse über den Adressbus 316 übermittelt wird. In anderen Ausführungsformen können Befehle über den Befehlsbus 314 versetzt (das heißt nicht in demselben Taktzyklus) von den Adressen gesendet werden, welche über den Adressbus 316 gesendet werden.
  • Es wird geschätzt werden, dass die Speicherschnittstelle 214 und das DRAM-Modul 220, welche oben als Teil des Parallelverarbeitungssubsystems 112 beschrieben worden sind, über andere Typen von Speicherschnittstellen gleichwohl implementiert werden können. Zum Beispiel kann die Speicherbrücke 105 die Speicherschnittstelle 214 implementieren, mit dem Systemspeicher 104 zu kommunizieren. Zusätzlich kann in anderen Ausführungsformen Parallelverarbeitungsspeicher zwei oder mehr DRAM-Module 220 umfassen und eine separate Speicherschnittstelle kann für jedes DRAM-Modul 220 umfasst sein. In anderen Ausführungsformen, welche unten beschrieben sind, kann eine einzelne Speicherschnittstelle mit mehreren DRAM-Modulen 220 über ein Logikgerät verbunden sein. In noch anderen Ausführungsformen kann das Speichergerät ein verschiedener oder anderer (different) Typ von Speicher sein, wie etwa MRAM-, FRAM- oder SRAM-Speichergeräte und diese Offenbarung sollte nicht betrachtet werden, nur auf DRAM-Speichergerätimplementierungen beschränkt zu sein.
  • 4 illustriert einen Parallelverarbeitungsspeicher 204, welcher eine Mehrzahl von DRAM-Modulen 220 umfasst, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 4 gezeigt ist, kann ein Logikgerät 410 in Parallelverarbeitungsspeicher 204 zusätzlich zu einer Mehrzahl von DRAM-Modulen 220 umfasst sein. Das Logikgerät 410 stellt eine Schnittstelle für die Speicherschnittstelle 214 bereit. Logikgerät 410 empfängt das Taktsignal 312, Befehle, welche über den Befehlsbus 314 übermittelt sind, und Adressen, welche mittels des Adressbusses 316 übermittelt sind. Obwohl es nicht explizit gezeigt ist, ist das Taktsignal 312 für jedes der DRAM-Module 220 bereitgestellt. In einer Ausführungsform umfasst das Logikgerät 410 einen Takt-Fanout-Puffer (clock fanout buffer), welcher genügend Leistung bereitstellt, um ein Taktsignal für bis zu acht separate DRAM-Module 220 bereitzustellen.
  • In einer Ausführungsform werden die mittels des Logikgeräts 410 empfangenen Befehle an jedes der DRAM-Module 220 über einen gemeinsamen Parallelbus (shared parallel bus) 412 übermittelt. Die mittels des Logikgeräts 410 empfangenen Adressen können an das entsprechende DRAM-Modul 220 über separate Seriallinks (zum Beispiel 416(0), 416(1), ..., und 416(J)) übermittelt werden. Zum Beispiel kann das Logikgerät 410 eine Schaltung beinhalten, welche die über den Befehlsbus 314 empfangenen Befehle analysiert, um zu bestimmen, welches DRAM-Modul 220 mittels des bestimmten Befehls identifiziert ist. Der Befehl kann benutzt werden, um einen Demultiplexer innerhalb des Logikgeräts 410 zu steuern, welcher den Adressbus 316 mit einem der Seriallinks 416(0) bis 416(3) verbindet, entsprechend des mittels des Befehls identifizierten DRAM-Moduls 220. Somit wird der Befehl an das korrekte DRAM-Modul 220 über den gemeinsamen Parallelbus 412 weitergeleitet, während die Adresse an das korrekte DRAM-Modul 220 über einen der Seriallinks 416(0) bis 416(J) weitergeleitet wird.
  • Es wird geschätzt werden, dass die Speicherschnittstelle 214 die Schnittstelle benutzen kann, welche oben in Verbindung mit 3 beschrieben wurde (das heißt Parallelbefehlsschnittstelle plus Hochgeschwindigkeit-Differentialserialschnittstelle für Adressen), während die Schnittstelle hinter dem Logikgerät 410 einen anderen Typ von Schnittstelle für jedes DRAM-Modul 220 implementieren kann. Zum Beispiel kann in einer Ausführungsform das Logikgerät 410 mit jedem DRAM-Modul 220 über eine Parallelbus-Schnittstelle ähnlich der Schnittstelle verbunden sein, welche mittels der JEDEC-DDR3-SDRAM-Spezifikation beschrieben ist. Obwohl die DDR3-SDRAM-Spezifikation auf eine bestimmte Bandbreite beschränkt ist, kann die Bandbreite des Logikgeräts 410 größer sein, weil mehrere Operationen mittels des Logikgeräts 410 gepuffert sein können und an verschiedene DRAM-Module 220 in paralleler Weise übermittelt werden können. Somit wäre die scheinbare Bandbreite zwischen der Speicherschnittstelle 214 und der CPU 102 viel größer als die Bandbreie, welche für irgendein individuelles DRAM-Modul 220 verfügbar ist.
  • 5 illustriert einen Parallelverarbeitungsspeicher 240, welcher eine Mehrzahl von DRAM-Modulen 220 umfasst, gemäß einer anderen Ausführungsform der vorliegenden Erfindung. Wie gezeigt ist, umfasst der Parallelverarbeitungsspeicher 204 ein Logikgerät 510, welches mit Speicherschnittstelle 214 verbunden ist. Logikgerät 510 ist ähnlich dem Logikgerät 410, außer, dass die DRAM-Module 220 innerhalb des Logikgeräts 510 umfasst sind. Mit anderen Worten kann, während in dem Parallelverarbeitungsspeicher 204 der 4 die DRAM-Module 220 separate integrierte Schaltungen sein können, welche mit dem Logikgerät 410 über eine gedruckte Schaltungsplatte gekoppelt sind, der Parallelverarbeitungsspeicher 204 der 5 eine einzelne integrierte Schaltung umfassen, welche die Logik implementiert, welche in dem Logikgerät 410 verkörpert ist, sowie die Logik, welche in den separaten DRAM-Modulen 220 verkörpert ist. Jedes der verschiedenen Signale, welche mit Logikgerät 510 gekoppelt sind, wird dann an das entsprechende DRAM-Modul 220 über Zwischenverbindungen innerhalb der integrierten Schaltung geleitet (routed).
  • 6 führt ein Flussdiagramm eines Verfahrens 600 zum Initialisieren einer Speicherschnittstelle 214 gemäß einer Ausführungsform der vorliegenden Erfindung aus. Obwohl die Verfahrensschritte in dem Zusammenhang mit den Systemen der 1 bis 5 beschrieben sind, werden Fachleute in der Technik verstehen, dass irgendein System, welches konfiguriert ist, die Verfahrensschritte, in irgendeiner Ordnung, durchzuführen, innerhalb des Geltungsbereichs der vorliegenden Erfindung ist.
  • Das Verfahren beginnt bei Schritt 610, wo GPU 240 einen Befehl an einen Parallelverarbeitungsspeicher 204 über einen Befehlsbus 314 übermittelt, um eine Linktrainingsroutine für einen Hochgeschwindigkeit-Differential-Serial-Adressbus 316 zu beginnen. In einer Ausführungsform zeigt der Befehl für den Parallelverarbeitungsspeicher 204 an, dass eine Sequenz von Trainingsmustern mittels der GPU 240 auf dem Adressbus 316 zu übermitteln ist. Der Parallelverarbeitungsspeicher 204 ist konfiguriert, die auf dem Adressbus 316 empfangenen Daten in einem oder mehreren Linktrainingregistern zu speichern. Bei Schritt 612 übermittelt GPU 240 eine Sequenz von Trainingssymbolen an den Parallelverarbeitungsspeicher 204 über den Adressbus 316. Der Parallelverarbeitungsspeicher 204 speichert die empfangenen Daten in den Linktrainingsregistern. Bei Schritt 614 übermittelt GPU 240 einen Befehl an den Parallelverarbeitungsspeicher 204, um anzufordern, die empfangenen Daten, welche in den Linktrainingsregistern gespeichert sind, zu lesen. Der Parallelverarbeitungsspeicher 204 übermittelt die empfangenen Daten an die GPU 240 über den Datenbus, ähnlich zu einer normalen Speicherleseoperation. In anderen Ausführungsformen können die Daten an die GPU 240 über andere Zwischenverbindungen übermittelt werden.
  • Bei Schritt 616 analysiert GPU 240 die Werte, welche von den Linktrainingsregistern gelesen sind, um Konfigurationsparameter für den Adressbus 316 zu bestimmen. Zum Beispiel kann die GPU 240 bestimmen, ob die Daten, welche an dem Parallelverarbeitungsspeicher 204 in Schritt 612 übermittelt sind, mit den Daten übereinstimmen bzw. zusammenpassen (matches), welche von dem Parallelverarbeitungsspeicher 204 in Schritt 614 empfangen sind. Bei Schritt 618 bestimmt die GPU 214, ob eine neue Sequenz von Trainingssymbolen an den Parallelverarbeitungsspeicher 204 zu übermitteln ist. In einer Ausführungsform wird dann, wenn die Daten, welche an den Parallelverarbeitungsspeicher 204 übermittelt sind, nicht mit den Daten übereinstimmen bzw. zusammenpassen, welche von dem Parallelverarbeitungsspeicher 204 gelesen sind, die GPU 240 die Konfiguration des Adressbusses 316 einstellen und die Linktrainingssequenz erneut über den serialen Link senden, indem zu Schritt 612, welcher oben diskutiert ist, zurückgekehrt wird. In einer anderen Ausführungsform implementiert GPU 240 eine Statusmaschine (state machine), um den Adressbus zu konfigurieren. Solange der Status nicht anzeigt, dass das Linktraining vollendet ist, übermittelt dann GPU 240 eine neue Sequenz von Trainingssymbolen basierend auf dem momentanen Status und Verfahren 600 kehrt zu Schritt 612 zurück.
  • Wenn jedoch GPU 240 bestimmt, dass das Linktraining vollendet ist, dann schreitet das Verfahren 600 zu Schritt 620 vor, wo GPU 214 die Speicherschnittstelle in einen Normalbetriebsmodus umschaltet oder überführt (transitions). In dem Normalbetriebsmodus kann GPU 240 Befehle und Adressen für Speicheroperationen an Parallelverarbeitungsspeicher 204 auf dem Befehlsbus 314 bzw. Adressbus 316 senden. Dann terminiert das Verfahren 600.
  • Zusammenfassend ermöglicht die offenbarte Technik einer GPU, Befehle und Adressen an ein Speichergerät über einen Parallelbefehlsbus und einen Hochgeschwindigkeit-Serialadressbus zu übermitteln. Der Parallelbefehlsbus kann benutzt werden, um Kommunikationen mit dem Speichergerät beim Einschalten oder Hochfahren (power-up) zu initiieren. Ferner werden Befehle, welche Kalibration des Serialadressbusses initiieren, an das Speichergerät über den Parallelbefehlsbus gesendet. Sobald das Gerät kalibriert ist, kann ein normaler Betrieb wieder aufgenommen werden, wo Befehle über den Parallelbefehlsbus übermittelt werden und Adressen über den Serialadressbus übermittelt werden.
  • Ein Vorteil der offenbarten Technik ist, dass die Anzahl von Zwischenverbindungen, welche erforderlich sind, um Befehle und Adressen an das Speichergerät zu übermitteln, relativ zu Industriestandard-Parallelschnittstellen vermindert ist. Zusätzlich kann, dadurch dass der Befehlsbus von dem Adressbus separiert ist, der kleine Parallelbefehlsbus benutzt werden, um Kalibration des Serialadressbusses zu initiieren, um dadurch den Bedarf für einen separaten, Niedriggeschwindigkeitsseitenband-Kommunikationen-Kanal zu umgeben, welcher während eines normalen Betriebs nicht benutzt wird.
  • Während das Vorangehende auf Ausführungsformen der Erfindung gerichtet ist, können andere und weitere Ausführungsformen der Erfindung entworfen werden, ohne von dem grundsätzlichen Geltungsbereich davon abzuweichen. Zum Beispiel können Aspekte der vorliegenden Erfindung in Hardware oder in Software oder in einer Kombination von Hardware und Software implementiert werden. Eine Ausführungsform der Erfindung kann als ein Programm-Produkt zur Benutzung mit einer Computer-System implementiert sein. Das Programm oder die Programme des Programm-Produkts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können auf einer Verschiedenheit von Computer-lesbaren Speichermedien beinhaltet sein. Illustrative Computer-lesbare Speichermedien umfassen, sind jedoch nicht darauf beschränkt: (i) nicht-schreibbare Speichermedien, z. B. Nur-Lese-Speicher-Geräte innerhalb eines Computers (wie CD-ROM-Platten, welche mittels eines CD-ROM-Laufwerks lesbar sind, Flash-Speicher, ROM-Chips oder irgendein anderer Typ von Festkörper-nicht-volatilem Halbleiter-Speicher), auf welchen Informationen permanent gespeichert ist; und (ii) schreibbare Speichermedien (z. B. Floppy-Disks innerhalb eines Disketten-Laufwerks oder eines Festplatten-Laufwerks oder irgendein anderer Typ von Festkörper-Halbleiter-Speicher mit willkürlichem Zugriff), auf welchen veränderbare Informationen gespeichert ist. Solche Computer-lesbaren Speichermedien, wenn sie Computer-lesbare Anweisungen tragen, welche die Funktionen der vorliegenden Erfindung abzählen, sind Ausführungsformen der Erfindung.
  • In Anbetracht des Vorangehenden ist der Bereich der Erfindung mittels der Ansprüche bestimmt, welche folgen.

Claims (10)

  1. Speicherschnittstelle, welche konfiguriert ist, mit einem Speichergerät zu kommunizieren, wobei die Speicherschnittstelle aufweist: einen Differentialtaktkanal zum Übermitteln eines Referenztaktsignals an das Speichergerät; einen Parallelbefehlsbus zum Übermitteln eines oder mehrerer Befehle an das Speichergerät, wobei der Parallelbefehlsbus keine Kalibration beim Einschalten erfordert; und einen Serialadressbus zum Übermitteln einer oder mehrerer Adressen an das Speichergerät, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
  2. Speicherschnittstelle gemäß Anspruch 1, wobei ein Befehl, welcher über den Parallelbefehlsbus übermittelt ist, mit einer Adresse assoziiert ist, welche im Wesentlichen simultan über den Serialadressbus übermittelt ist.
  3. Speicherschnittstelle gemäß Anspruch 1, wobei das Speichergerät einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) aufweist.
  4. Speicherschnittstelle gemäß Anspruch 1, wobei nach einer Einschaltoperation aber bevor die eine oder die mehreren Adressen über den Serialadressbus übermittelt werden, der Serialadressbus über eine Link-Training-Routine kalibriert ist.
  5. Speicherschnittstelle gemäß Anspruch 4, ferner aufweisend einen Datenbus, wobei die Link-Trainingsroutine aufweist: Übermitteln über den Parallelbefehlsbus eines ersten Befehls an das Speichergerät, um anzuzeigen, dass eine Sequenz von Trainingsmustern zu dem Speichergerät über den Serialadressbus zu senden ist; Übermitteln über den Serialadressbus der Sequenz von Trainingsmustern an das Speichergerät, wobei das Speichergerät Werte, welche empfangene Versionen der Sequenz von Trainingsmustern reflektieren, in Link-Trainingsregistern speichert; Übermitteln über den Parallelbefehlsbus eines zweiten Befehls an das Speichergerät, um einen Zugriff auf die Werte anzufragen, welche in den Link-Trainingsregistern gespeichert sind; Lesen der Werte, welche in den Link-Trainingregistern gespeichert sind, über den Datenbus; und basierend auf den Werten, welche von den Link-Trainingsregistern gelesen sind, Bestimmen von Transmissionsparametern, welche mit dem Serialadressbus assoziiert sind.
  6. Speicherschnittstelle gemäß Anspruch 1, wobei das Speichergerät aufweist: eine Mehrzahl von DRAM-Modulen; und ein Logikgerät, welches mit der Speicherschnittstelle gekoppelt ist und eine Logik umfasst, welche konfiguriert ist, Befehle, welche über den Befehlsbus empfangen sind, an jedes der DRAM-Module in der Mehrzahl von DRAM-Modulen zu übermitteln und für jeden Befehl eine oder mehrere Adressen, welche über den Serialadressbus empfangen sind, an ein bestimmtes DRAM-Modul in der Mehrzahl von DRAM-Modulen zu übermitteln, welches mittels des Befehls identifiziert ist.
  7. Speicherschnittstelle gemäß Anspruch 6, wobei die Mehrzahl von DRAM-Modulen innerhalb derselben integrierten Schaltung wie das Logikgerät beinhaltet ist.
  8. System, aufweisend: ein Speichergerät; und eine Speicherschnittstelle, welche konfiguriert ist, mit dem Speichergerät zu kommunizieren, wobei die Speicherschnittstelle aufweist: einen Differentialtaktkanal zum Übermitteln eines Referenztaktsignals an das Speichergerät; einen Parallelbefehlsbus zum Übermitteln eines oder mehrerer Befehle an das Speichergerät, wobei der Parallelbefehlsbus keine Kalibration beim Einschalten erfordert; und einen Serialadressbus zum Übermitteln einer oder mehrerer Adressen an das Speichergerät, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
  9. System gemäß Anspruch 8, wobei ein Befehl, welcher über den Parallelbefehlsbus übermittelt ist, mit einer Adresse assoziiert ist, welche im Wesentlichen simultan über den Serialadressbus übermittelt ist.
  10. Verfahren zum Kommunizieren mit einem Speichergerät, wobei das Verfahren aufweist: Übermitteln eines Referenztaktsignals an das Speichergerät über einen Differentialtaktkanal; Übermitteln von einem oder mehreren Befehlen an das Speichergerät über einen Parallelbefehlsbus, wobei der Parallelbefehlsbus keine Kalibration beim Einschalten erfordert; und Übermitteln einer oder mehrerer Adressen an das Speichergerät über einen Serialadressbus, wobei jede Adresse eine Stelle innerhalb des Speichergeräts identifiziert.
DE102012215197A 2011-08-31 2012-08-27 Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle Pending DE102012215197A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/223,004 2011-08-31
US13/223,004 US8738852B2 (en) 2011-08-31 2011-08-31 Memory controller and a dynamic random access memory interface

Publications (1)

Publication Number Publication Date
DE102012215197A1 true DE102012215197A1 (de) 2013-02-28

Family

ID=47016965

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012215197A Pending DE102012215197A1 (de) 2011-08-31 2012-08-27 Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle

Country Status (5)

Country Link
US (1) US8738852B2 (de)
CN (1) CN102968393B (de)
DE (1) DE102012215197A1 (de)
GB (1) GB2494257A (de)
TW (1) TWI479321B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8966151B2 (en) * 2012-03-30 2015-02-24 Spansion Llc Apparatus and method for a reduced pin count (RPC) memory bus interface including a read data strobe signal
US8787110B2 (en) * 2012-06-29 2014-07-22 Intel Corporation Realignment of command slots after clock stop exit
JP2014183482A (ja) 2013-03-19 2014-09-29 Fujitsu Ltd 送受信システム、送信装置、受信装置、及び送受信システムの制御方法
US10025685B2 (en) * 2015-03-27 2018-07-17 Intel Corporation Impedance compensation based on detecting sensor data
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US10199084B2 (en) * 2016-03-28 2019-02-05 Intel Corporation Techniques to use chip select signals for a dual in-line memory module
US10241942B2 (en) 2016-06-28 2019-03-26 Mediatek Inc. Method and apparatus for memory access
US10720197B2 (en) 2017-11-21 2020-07-21 Samsung Electronics Co., Ltd. Memory device for supporting command bus training mode and method of operating the same
CN110580228A (zh) * 2018-06-11 2019-12-17 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
US10642535B2 (en) 2018-01-23 2020-05-05 International Business Machines Corporation Register access in a distributed memory buffer system
US10522201B2 (en) * 2018-05-31 2019-12-31 Qualcomm Incorporated Methods and systems for serial memory device control
US11379157B2 (en) 2020-07-10 2022-07-05 Samsung Electronics Co., Ltd. Dynamic random access memory (DRAM) bandwidth increase without per pin bandwidth increase

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10121309B4 (de) * 2001-05-02 2004-01-29 Infineon Technologies Ag Testschaltung zum Testen einer zu testenden Schaltung
US6864896B2 (en) * 2001-05-15 2005-03-08 Rambus Inc. Scalable unified memory architecture
JP2003007081A (ja) * 2001-06-25 2003-01-10 Mitsubishi Electric Corp 半導体集積回路装置
JP4159415B2 (ja) * 2002-08-23 2008-10-01 エルピーダメモリ株式会社 メモリモジュール及びメモリシステム
US7073016B2 (en) 2003-10-09 2006-07-04 Micron Technology, Inc. Random access interface in a serial memory device
US7444558B2 (en) 2003-12-31 2008-10-28 Intel Corporation Programmable measurement mode for a serial point to point link
US7221613B2 (en) * 2004-05-26 2007-05-22 Freescale Semiconductor, Inc. Memory with serial input/output terminals for address and data and method therefor
US7299313B2 (en) 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7702839B2 (en) 2005-04-12 2010-04-20 Nokia Corporation Memory interface for volatile and non-volatile memory devices
US7769942B2 (en) * 2006-07-27 2010-08-03 Rambus, Inc. Cross-threaded memory system
US7405992B2 (en) 2006-10-25 2008-07-29 Qimonda North America Corp. Method and apparatus for communicating command and address signals
US8433874B2 (en) * 2006-12-06 2013-04-30 Mosaid Technologies Incorporated Address assignment and type recognition of serially interconnected memory devices of mixed type
DE102007049354A1 (de) 2007-10-15 2009-04-16 Robert Bosch Gmbh Verfahren zum Testen eines Adressbusses in einem logischen Baustein
SG171730A1 (en) 2008-11-24 2011-07-28 Certicom Corp System and method for hardware based security
CN101546286B (zh) * 2009-04-30 2012-11-14 北京星网锐捷网络技术有限公司 一种高速串行总线逻辑分析方法和装置
TWI433150B (zh) * 2009-07-27 2014-04-01 Sunplus Technology Co Ltd 應用於同步動態隨機存取記憶體介面之資料截取及時序漂移偵測的裝置及方法
US8775719B2 (en) * 2009-09-21 2014-07-08 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with parallel interface

Also Published As

Publication number Publication date
GB2494257A (en) 2013-03-06
CN102968393B (zh) 2015-07-22
CN102968393A (zh) 2013-03-13
TWI479321B (zh) 2015-04-01
US8738852B2 (en) 2014-05-27
GB201214735D0 (en) 2012-10-03
TW201324164A (zh) 2013-06-16
US20130054884A1 (en) 2013-02-28

Similar Documents

Publication Publication Date Title
DE102012215197A1 (de) Speichersteuerung und dynamischer-wahlfreier-Zugriff-Speicher-Schnittstelle
US8656117B1 (en) Read completion data management
DE69028066T2 (de) Kombinierte synchrone und asynchrone Speichersteuerung
DE102009047518B4 (de) Computersystem und Verfahren geeignet zum Vermeiden von Datenkommunikationsverklemmungssituationen durch Markieren von CPU-Datenverkehr als speziell
CN102323912B (zh) 用于与异构双列直插式存储器模块接口连接的方法和装置
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
DE102012216568A1 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE102018128569A1 (de) Nebensprecherzeugung in einem link für mehrere spuren während des spurtestens
DE102009046847A1 (de) Mehrklassen-Daten-Cache-Verfahren
US20140168242A1 (en) Techniques for setting up and executing draw calls
DE102017112326A1 (de) Gestapelte Speichervorrichtung und Speicherchip mit demselben
DE112015006961T5 (de) Verbindungsfehlerdetektion in mehrfachchipgehäusen
DE102006004596A1 (de) Verfahren und Vorrichtungen zum Implementieren einer Leistungsreduzierung bei einer Speichervorrichtung
DE102007039192A1 (de) Verfahren und Schaltung zum Übertragen eines Speichertaktsignals
DE69214702T2 (de) Speicherzugriff für die Datenübertragung in einer Ein-Ausgabevorrichtung
DE102009036631A1 (de) Überwachen eines internen Links über einen zweiten Link
DE10211054A1 (de) USB-Hostcontroller
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE10255937A1 (de) Ordnungsregelgesteuerte Befehlsspeicherung
DE102012219059A1 (de) Effizientes Befehlsabbildungsschema für Kurze-Datenburstlängen- Speichervorrichtungen
DE60017774T2 (de) Verfahren und vorrichtung zur unterstützung von mehrtaktübertragung in einem rechnersystem mit einer punkt-zu-punkt halb-duplex verbindung
DE112007003722B4 (de) Modifizieren von Systemroutinginformationen in linkbasierenden Systemen
DE102018005759A1 (de) Verbinden von beschleunigerressourcen unter verwendung einesswitches
DE102020110879A1 (de) System, Vorrichtung und Verfahren zur Speicherspiegelung in einer gepufferten Speicherarchitektur

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

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