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