-
HINTERGRUND
-
Moderne Systeme mit einem hohen Durchsatz verwenden mehrere hochbandige Ein-/Ausgabeschnittstellen, um ein Signalisierungsnetzwerk zwischen Recheneinheiten, Speichereinheiten und Speichervorrichtungen zu bilden. So verbindet beispielsweise Peripheral Component Interconnect Express (PCI-E) mehrere Peripheriegeräte mit Zentraleinheiten (CPUs) und Grafikprozessoren (GPUs). Diese Schnittstellen können mehrere serielle Datenbusse umfassen, die mit hoher Frequenz arbeiten.
-
Die
US 7 135 996 B1 beschreibt eine Einrichtung auf einer physikalischen Schicht für eine Netzwerkeinrichtung. Dabei wird eine n-Bit-Eingabe (z.B. eine 4-Bit-Eingabe) in eine m-Bit-Ausgabe (z.B. 5-Bit-Ausgabe) umgesetzt, welche dann z.B. in PAM-4-Signale umgesetzt wird.
-
In „DesignCon 2016 - 100Gbps Dual-channel PAM-4 transmission over Datacenter Interconnects“ von P. Khandelwal u.a., erschienen am 19.1.2016 wird ein PAM-4-Transceiver beschrieben, der einen PAM-4-Sender und einen PAM-4-Empfänger aufweist.
-
Die Pulsamplitudenmodulation (PAM) kann auf einem mehrspurigen seriellen Datenbus verwendet werden, um mehrere Datenbits gleichzeitig zu übertragen, indem die Daten als unterschiedliche Spannungspegel bzw. Spannungsniveaus kodiert werden. Hier bezeichnet „Spur“ („lane“) eine einzelne Datenspur bzw. Datenleitung eines seriellen Datenbusses. Ein „Datenburst“ bzw. „Datenblock“ bezieht sich auf Bits, die auf den Datenspuren eines seriellen Datenbusses in demselben Bustaktintervall, d.h. parallel, platziert sind.
-
Ein Beispiel für eine PAM-Kommunikation ist PAM-4. Während jedes Bustaktintervalls kodiert PAM-4 zwei Datenbits (00, 01, 10, 11) auf jeder Datenspur eines seriellen Datenbusses als eines von vier verschiedenen Spannungsniveaus (Symbolen). Da in jedem Bustaktintervall auf jeder Datenspur zwei Bits kodiert werden, ermöglicht PAM-4 ideal erweise die doppelte Bandbreite im Vergleich zur herkömmlichen Zwei-Niveau-Signalisierung bzw. Signalisierung mit einem von zwei Niveaus (z.B. PAM-2) auf seriellen Datenbussen, die mit vergleichbaren Bustaktfrequenzen arbeiten. PAM-4-Symbole verwenden vier verschiedene Spannungspegel bzw. Spannungsniveaus, so dass der Unterschied der Symbolwerte bezüglich der Spannungsniveaus in PAM-4 im Vergleich zu PAM-2 geringer ist. Dies macht die PAM-4-Kommunikation anfälliger für Störungen, wie Kopplungsrauschen zwischen Datenspuren auf einem seriellen Datenbus und Stromversorgungsrauschen, was das Signal-Rausch-Verhältnis (SNR) verringert.
-
Ein Mechanismus zur Minderung dieser Rauscheffekte ist die Verwendung der Data Bus Inversion (DBI). Für einen gegebenen Datenburst bzw. Datenblock reduziert die DBI den Gesamtumfang der Spannungsniveauübergänge über die Datenspuren eines seriellen Datenbusses um bis zu der Hälfte, indem die Polarität der Bits in jedem Datenblock auf dem seriellen Datenbus intelligent eingestellt wird. Die DBI benötigt ein zusätzliches Metadatenbit pro Datenblock, um die Einstellung der Datenblock-Polarität (nicht invertierter Datenblock oder invertierter Datenblock) an den Empfänger zu übertragen. Dieses Metadatenbit wird oft auf einer zusätzlichen Datenspur übertragen, die von den Datenspuren (jeweils auch eine Datenspur, typischerweise) des seriellen Datenbusses getrennt ist.
-
Viele serielle Datenbusse bestehen nur aus einer einzigen Datenspur zwischen Sender und Empfänger. Das Hinzufügen einer zusätzlichen Metadatenspur kann somit zu einem bis zu 100%igen Overhead bei der Anzahl der für den seriellen Datenbus benötigten Datenspuren führen.
-
Figurenliste
-
Um die Diskussion über ein bestimmtes Element oder einen bestimmten Vorgang leicht zu identifizieren, beziehen sich die höchstwertigste(n) Ziffer(n) in einem Bezugszeichen auf die Figur, in der dieses Element zum ersten Mal eingeführt wird.
- 1 stellt ein Datenkommunikationssystem 100 gemäß einer Ausführungsform dar.
- 2 stellt eine Ausführungsform eines PAM-4-Senders 200 dar.
- 3 stellt eine Ausführungsform einer Spannungswellenform 300 einer konventionellen PAM-4-Datenspur dar.
- 4 stellt einen PAM-433-Encoder 400 gemäß einer Ausführungsform dar.
- 5 stellt eine Ausführungsform einer Spannungswellenform 500 einer PAM-433-Datenspur dar.
- 6 stellt eine Ausführungsform einer Datenspur-Spannungswellenform 600 dar.
- 7 stellt eine Ausführungsform einer Datenspur-Spannungswellenform 700 dar.
- 8 stellt eine Ausführungsform einer Datenspur-Spannungswellenform 800 dar.
- 9 stellt eine Ausführungsform einer Datenspur-Spannungswellenform 900 dar.
- 10 stellt eine Ausführungsform einer PAM-433-Routine 1000 dar.
- 11 stellt eine Ausführungsform einer PAM-N-Routine 1100 dar.
- 12 stellt eine Ausführungsform einer PAM-4433-Kodierung 1200 dar.
- 13 stellt eine Ausführungsform einer PAM-4433-Routine 1300 dar.
- 14 stellt eine Ausführungsform einer variablen PAM-433-Kodierung 1400 dar.
- 15 stellt eine Ausführungsform einer variablen PAM-433-Routine 1500 dar.
- 16 stellt eine Ausführungsform einer entspannten PAM-433 1600 dar.
- 17 stellt ein entspanntes PAM-433-Kodierungsverfahren 1700 gemäß einer Ausführungsform dar.
- 18 stellt eine Ausführungsform einer entspannten PAM-433 1800 dar.
- 19 stellt ein entspanntes PAM-433-Kodierungsverfahren 1900 gemäß einer Ausführungsform dar.
- 20 stellt ein entspanntes PAM-433-Kodierungsverfahren 2000 gemäß einer Ausführungsform dar.
- 21 ist ein Blockdiagramm eines Computersystems 2100 mit einer GPU, in der Aspekte der Erfindung ausgestaltet sein oder ausgeführt werden können.
-
DETAILLIERTE BESCHREIBUNG
-
Unter Bezugnahme auf 1 umfasst ein Datenkommunikationssystem 100 eine Sendevorrichtung, wie beispielsweise einen Datenprozessor 102, der einen Verarbeitungskern 114, einen PAM-4-Symbolencoder 104 und einen PAM-4-Sender 108 beinhaltet. Der Datenprozessor 102 kann in einigen Ausführungsformen eine Grafikverarbeitungseinheit (GPU), eine zentrale Verarbeitungseinheit (CPU), ein System auf einem Chip (SoC („System On a Chip“)) oder andere bekannte Datenverarbeitungsvorrichtungen umfassen.
-
Der Datenprozessor 102 kommuniziert mit einer Empfangsvorrichtung, wie beispielsweise einem Speicher 112, über einen Bus, wie beispielsweise einen Speicherbus 118. Ein PAM-4-Empfänger 110 und ein PAM-4-Symboldecoder 106 empfangen und verarbeiten PAM-4-Signale, die vom Datenprozessor 102 an den Speicher 112 über den Speicherbus 118 übertragen werden.
-
Der Datenprozessor 102 verwendet einen internen Datenbus 116, um Datenbursts bzw. Datenblöcke zum und vom Verarbeitungskern 114 über einen mehrspurigen internen Datenbus 116 zu übertragen. Der PAM-4-Symbolencoder 104 empfängt einen Datenblock, der vom Verarbeitungskern 114 zu kodieren ist, und führt auf diesem Block eine PAM-4-Kodierung durch. Der PAM-4-Sender 108 sendet den kodierten Block über den Speicherbus 118 an den PAM-4-Empfänger 110. Der PAM-4-Empfänger 110 empfängt den kodierten Block und sendet den kodierten Block an den PAM-4-Symboldecoder 106, um den Block zu dekodieren. Nach der Dekodierung wird der Block an den Speicher 112 gesendet.
-
Dies ist eine vereinfachte Darstellung. In der Praxis gibt es typischerweise Encoder und Decoder an beiden Enden des Speicherbusses 118 zum Schreiben in den und Lesen von dem Speicher 112.
-
2 stellt einen PAM-4 Sender 200 für eine einzelne Datenspur eines seriellen Datenbusses in einer Ausführungsform dar. Der PAM-4-Sender 200 umfasst einen Sender 202 für ein niederwertigstes Bit, einen Sender 204 für ein höchstwertigstes Bit, einen Empfänger 206 und eine Datenspur 208. Der PAM-4-Sender 200 verwendet den Sender 202 für das niederwertigste Bit und den Sender 204 für das höchstwertigste Bit, um ein Vier-Niveau-Symbol bzw. Symbol mit einem von vier Niveaus auf der Datenspur 208 zu erzeugen. Dabei bezieht sich der Begriff „Symbol“ auf ein Spannungsniveau, das von einem Leitungstreiber auf einer Datenspur eines seriellen Datenbusses erzeugt wird, wobei das Spannungsniveau den Wert eines oder mehrerer Datenbits darstellt. Das „Kodieren eines Symbols“ bedeutet also, eine Leitungstreiberschaltung des seriellen Datenbusses physikalisch zu konfigurieren, um die Spannung auf der Datenspur auf einen bestimmten Wert zu treiben.
-
Wenn beispielsweise die zwei Bits der in das Symbol zu kodierenden Daten (1,1) sind, erzeugen die Ausgänge des Senders 202 für das niederwertigste Bit und des Senders 204 für das höchstwertigste Bit zusammen eine Spannung von z.B. 1,2 V auf der Datenspur 208 und der Strom auf der Datenspur 208 ist z.B. 0 mA aufgrund des Pull-Up-Transistors Rt am Empfänger 206 (beide Enden der Datenspur 208 liegen auf demselben Potential). Wenn die zwei Bits der in das Symbol zu kodierenden Daten (1,0) sind, kombinieren sich die Ausgänge des Senders 202 für das niederwertigste Bit und des Senders 204 für das höchstwertigste Bit, um eine Spannung von z.B. 1,0 V auf der Datenspur 208 und einen Strom von z.B. 5 mA auf der Datenspur 208 zu erzeugen. Wenn die zwei Bits der in das Symbol zu kodierenden Daten (0,1) sind, kombinieren sich die Ausgänge des Senders 202 für das niederwertigste Bit und des Senders 204 für das höchstwertigste Bit, um eine Spannung von z.B. 0,8 V auf der Datenspur 208 und einen Strom von z.B. 10 mA auf der Datenspur 208 zu erzeugen. Wenn die zwei Bits der in das Symbol zu kodierenden Daten (0,0) sind, kombinieren sich die Ausgänge des Senders 202 für das niederwertigste Bit und des Senders 204 für das höchstwertigste Bit, um eine Spannung von z.B. 0,6 V auf der Datenspur 208 und einen Strom von z.B. 15 mA auf der Datenspur 208 zu erzeugen. Die 0,6 V können hierin als die Basisübertragungsspannung Vb bezeichnet werden, von welcher die anderen Symbolspannungsniveaus per Differenz gebildet werden.
-
Der Symbolwert auf einer Datenspur entspricht somit dem aktuellen Stromverbrauch dieser Datenspur während eines Datenblocks. Daher können den Symbolwerten Gewichte zugeordnet werden, die ihre aktuellen Verbrauchskosten widerspiegeln. So kann beispielsweise dem Symbol für das Bitpaar (1,1) ein Gewicht von 0 zugeordnet werden; dem Symbol für das Bitpaar (1,0) kann ein Gewicht von 1 zugeordnet werden; dem Symbol für das Bitpaar (0,1) kann ein Gewicht von 2 zugeordnet werden; und dem Symbol für das Bitpaar (0,0) kann ein Gewicht von 3 zugeordnet werden.
-
In diesem Beispiel kann einem Datenblock auf einem achtspurigen seriellen Datenbus mit PAM-4-Kodierung ein Gesamtgewicht im Bereich von 0 bis 24 zugeordnet werden, was einem Stromverbrauchsbereich von z.B. 0 bis 120 mA entspricht. Das Gesamtgewicht für den Datenblock wäre 0, wenn alle Symbole im Datenblock jeweils das Bitpaar (1,1) kodierten, und das Gesamtgewicht für den Datenblock wäre 24, wenn alle Symbole im Datenblock jeweils das Bitpaar (0,0) kodierten. Datenblocks, die nur 0en umfassen, verbrauchen den meisten Strom und sind daher aus Sicht des Stromverbrauchs am teuersten.
-
Unter Bezugnahme auf 3 kodiert eine herkömmliche PAM-4-Datenspur-Spannungswellenform 300 zwei Datenbits auf der Datenspur pro Taktintervall unter Verwendung von jeweils Vier-Niveau-Symbolen. Eine exemplarische Sequenz von 12 Bits ist 110001100011. Diese Sequenz kann als eine Reihe von Vier-Niveau-Symbolen, die jeweils zwei Bits kodieren, übertragen werden. Für die Bitfolge 110001100011 werden die Bits 11 in das erste Taktintervall t0-t1 des seriellen Datenbusses kodiert; die nächsten beiden Bits 00 werden in das zweite Taktintervall t1-t2 des seriellen Datenbusses kodiert; und so weiter. Dies führt zu zwei Spannungsniveauänderungen von 3ΔV auf dem seriellen Datenbus bei t0-t1 und bei t4-t5.
-
Die Bezeichnung nΔV bezieht sich auf eine Spannungsänderung von n-Deltas gegenüber der Basisspannung Vb auf einer Datenspur eines seriellen Datenbusses zwischen den Taktintervallen. Unter Bezugnahme zurück auf 2, in der verschiedene Symbole einen Unterschied von 0,2 V aufweisen und die Basisspannung Vb 0,6 V beträgt, würde beispielsweise eine Änderung von 3ΔV einer Änderung von 3 x 0,2 V oder einem Delta von 0,6 V auf der Datenspur zwischen den Bustaktzyklen entsprechen.
-
Höhere Spannungsdeltas erzeugen mehr Rauschen, weil sie zu höheren Stromschwankungen in der Datenspur führen. So können in 3 die 3ΔV-Deltas zwischen den Bustaktintervallen t0 und t1 und auch zwischen t4 und t5 ein signifikantes Rauschen erzeugen. Die Reduzierung dieser maximalen Delta-Spannungsaktivität trägt dazu bei, das SNR eines PAM-4-Systems wie dem PAM-4-Sender 200 zu verbessern.
-
Eine Logiktabelle für einen PAM-433-Encoder 400 bei einer Ausführungsform ist in 4 dargestellt. Der PAM-433-Encoder 400 eliminiert Spannungsniveauänderungen von 3ΔV auf dem seriellen Datenbus für die oben diskutierte exemplarische Bitfolge 11000110001100011. Wie in der Logiktabelle dargestellt ist, wird, wenn die 3-Bit-Sequenz 000 zwischen zwei 2-Bit-Sequenzen der Form 1x liegt (wobei x ein „don't care“-Wert von entweder 0 oder 1 ist), die 3-Bit-Sequenz 000 als die vier Bits 0111 kodiert (siehe erste Zeile der Logiktabelle, dritte Spalte). Mit anderen Worten, wenn die 3-Bit-Sequenz 000 zwei 2-Bit-Sequenzen überbrückt, die jeweils das höchstwertigste Bit gesetzt haben (Ix), werden die sieben Bits insgesamt als 1x01111x neu kodiert. Wenn in dem obigen Beispiel die sieben Bits insgesamt 1100011 sind, ist die neu kodierte Sequenz 11011111. Jedes 2-Bit-Paar dieser Sequenz wird dann als PAM-4-Symbol auf der Datenspur des seriellen Datenbusses übertragen, was zur PAM-433- Datenspur-Spannungswellenform 500 in 5 führt. Die Spannungsniveauänderungen von 3ΔV in der Folge 110001100011 wurden mit Hilfe einer DBI-Zeile auf Kosten eines seriellen Datenbus-Taktzyklus eliminiert. Mit anderen Worten wird die effektive Datenübertragungsrate unter der Annahme einer zufällig verteilten Bitfolge um 16,7% auf 1,67 Bits pro Taktintervall des seriellen Datenbusses reduziert, verglichen mit 2,0 Bits pro Taktintervall des seriellen Datenbusses bei konventionellem PAM-4.
-
Der PAM-433-Encoder 400 führt zu einer 33%igen Reduzierung des Worst-Case-Spannungsniveauschaltens auf der Datenleitung gegenüber herkömmlichen PAM-4-Encodern, ohne dass Metadaten übertragen werden müssen. Der PAM-433-Encoder 400 teilt eine Sequenz von Bits, die auf der Datenspur zu übertragen sind, in Sequenzen von fünf Datenbits auf: Die ersten beiden Bits von jeweils fünf Bits werden in ein Symbol mit vier möglichen Spannungsniveaus kodiert, und die letzten drei Bits der fünf Bits werden in zwei Symbole mit jeweils drei möglichen Spannungsniveaus kodiert.
-
Im Allgemeinen können die oben genannten Mechanismen auf PAM-N (Symbole, die N mögliche diskrete Spannungsniveaus verwenden) angewendet werden. So kann beispielsweise ein PAM-866-Schema bei der ersten Übertragung ein 3-Bit-Datensymbol und bei den folgenden beiden Übertragungen ein 5-Bit-Datensymbol übertragen (2,67 Bits pro Übertragung, 11,1% Overhead). PAM-866 kann das maximale Spannungsschalten von 7ΔV (PAM-8) auf 5ΔV reduzieren (28,5% Reduktion). Darüber hinaus können die Mechanismen auf andere beliebige Kombinationen von Datensymbolen (z.B. PAM-WXYZ) ausgedehnt werden, um eine höhere Zuverlässigkeit durch die Nutzung ähnlicher Mechanismen wie PAM-433 zu erreichen.
-
Die 6 bis 9 zeigen verschiedene Datenspur-Spannungswellenformen, wenn die PAM-433-Kodierung verwendet wird. Vier Datenspur-Spannungswellenformen werden für verschiedene Bitmuster dargestellt, die auf der Datenspur übertragen werden: Datenspur-Spannungswellenform 600, Datenspur-Spannungswellenform 700, Datenspur-Spannungswellenform 800 und Datenspur-Spannungswellenform 900.
-
Für die in 6 und 7 dargestellten Datenspur-Wellenformen werden ein erstes Drei-Niveau-Symbol 604 und ein zweites Drei-Niveau-Symbol 606 als „Brücke 610“ zwischen einem ersten Vier-Niveau-Symbol 602 und einem zweiten Vier-Niveau-Symbol 608 verwendet, die das gleiche höchstwertigste Bit (MSB) aufweisen. Beispiele, die zu diesem Muster passen, sind Paare von Vier-Niveau-Symbolen wie: 11 (3ΔV) / 10 (2ΔV) (6) und 01 (1ΔV) / 00 (0ΔV) (7). Die PAM-433-Kodierung richtet die Spannungsfenster des ersten Drei-Niveau-Symbols 604 und des zweiten Drei-Niveau-Symbols 606 so auf das Spannungsniveau des ersten Vier-Niveau-Symbols 602 bzw. des ersten Drei-Niveau-Symbols 604 aus, dass das maximale Spannungsdelta in der Datenspur-Spannungswellenform 2ΔV beträgt.
-
Für die in 8 und 9 dargestellten Datenspur-Wellenformen werden das erste Drei-Niveau-Symbol 604 und das zweite Drei-Niveau-Symbol 606 als Brücke 610 zwischen einem ersten Vier-Niveau-Symbol 602 und einem zweiten Vier-Niveau-Symbol 608 verwendet, die unterschiedliche MSBs aufweisen. In diesem Szenario ist ein Spannungsdelta von 3ΔV zwischen dem ersten Drei-Niveau-Symbol 604 und dem zweiten Drei-Niveau-Symbol 606 möglich. Der PAM-433 Encoder 400 bildet jedoch nicht die Werte ab, die dies in der Logiktabelle verursachen würden. Das Symbol, das ein Spannungsdelta von 3ΔV zwischen den Drei-Niveau-Blöcken verursachen würde, wird vom PAM-433-Encoder 400 nie verwendet, so dass das maximale Spannungsdelta in der Datenspur-Wellenform bei 2ΔV gehalten wird.
-
Unter Bezugnahme auf 10 teilt die PAM-433-Routine 1000 in einer Ausführungsform eine Reihe von Datenbits auf dem seriellen Datenbus in mehrere Sequenzen von jeweils fünf Bits (Block 1002) auf. Als nächstes kodiert die PAM-433-Routine 1000 die ersten beiden Bits jeder der Sequenzen von fünf Bits als Vier-Niveau-Symbol (Block 1004). Dann kodiert die PAM-433-Routine 1000 die nächsten drei Bits jeder der Sequenzen von fünf Bits als zwei Drei-Niveau-Symbole (Block 1006). Die PAM-433-Routine 1000 kann zum Kodieren von Symbolen auf einer oder mehreren Datenspuren eines seriellen Datenbusses verwendet werden.
-
Bei einigen Ausführungsformen umfassen die beiden Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol. Die PAM-433-Routine 1000 betreibt einen seriellen Datenbus, um ein Spannungsniveau des ersten Drei-Niveau-Symbols entweder (a) höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus des Vier-Niveau-Symbols oder (b) höchstens zwei Spannungsstufen oberhalb des Spannungsniveaus des Vier-Niveau-Symbols zu kodieren. Die Sequenzen von fünf Bits können auch eine erste Sequenz von fünf Bits, die auf dem seriellen Datenbus übertragen werden, und eine zweite Sequenz von fünf Bits, die nach der ersten Sequenz von fünf Bits auf dem seriellen Datenbus übertragen werden, umfassen. Die PAM-433-Routine 1000 kann dann den seriellen Datenbus betreiben, um ein Spannungsniveau des zweiten Drei-Niveau-Symbols der ersten Sequenz von fünf Bits als entweder (a) höchstens zwei Spannungsstufen unter einem Spannungsniveau des Vier-Niveau-Symbols der zweiten Sequenz von fünf Bits oder (b) höchstens zwei Spannungsstufen über dem Spannungsniveau des Vier-Niveau-Symbols der zweiten Sequenz von fünf Bits zu kodieren.
-
Unter Bezugnahme auf 11 unterteilt eine allgemeinere PAM-N-Routine 1100 die Reihe von Datenbits in Sequenzen von einer Anzahl von Bits, wobei die Anzahl der Bits von einer Anzahl von Spannungsniveaus N (Block 1102) abhängt. Anschließend kodiert die PAM-N-Routine 1100 eine erste Anzahl von Bits jeder der Sequenzen einer Anzahl von Bits als einen N-Niveau-Block, wobei die erste Anzahl von Bits dem Logarithmus zur Basis 2 von N entspricht (Block 1104). Dann kodiert die PAM-N-Routine 1100 eine nächste Anzahl von Bits jeder der Sequenzen einer Anzahl von Bits als zwei M-Niveau-Blöcke, wobei die nächste Anzahl von Bits log2 [(N^2)/2] entspricht und M eine ganze Zahl ist, die gleich einer Aufrundungsfunktion (ceiling) ist, die auf eine Quadratwurzel von [(N^2)/2] angewendet wird (Block 1106). Die PAM-N-Routine 1100 kann zur Datenübertragung über einen seriellen Datenbus eingesetzt werden.
-
Unter Bezugnahme auf 12 ist eine Ausführungsform der PAM-4433-Kodierung 1200 dargestellt. Die PAM-4433-Kodierung 1200 wird für einen seriellen Datenbus zum Kodieren und Übertragen eines 7-Bit-Datenworts unter Verwendung einer Sequenz aus einem ersten Vier-Niveau-Symbol 1202, einem zweiten Vier-Niveau-Symbol 1204, einem ersten Drei-Niveau-Symbol 1206 und einem zweiten Drei-Niveau-Symbol 1208 eingesetzt. Dadurch ist es möglich, dass ein Spannungsdelta von 3ΔV auf einer bestimmten Datenspur zwischen zwei Vier-Niveau-Symbolen auftritt, wie beispielsweise dem ersten Vier-Niveau-Symbol 1202 und dem zweiten Vier-Niveau-Symbol 1204. Wie in 12 dargestellt ist, können die potenziellen Spannungs-Deltas von 3ΔV jedoch über mehrere Datenspuren versetzt sein, wodurch das maximale Spannungsdelta in einem bestimmten Datenblock (alle Bits, die über den seriellen Datenbus während eines Taktintervalls gesendet werden) reduziert wird. Mehrere Spannungsdeltas von 3ΔV treten nicht im gleichen Datenblock auf, wodurch Übersprechen und andere Rauschquellen reduziert werden. Diese PAM-4433-Kodierung 1200 weist Bandbreitenkosten von 12,5% (1,75 Bits pro Übertragung) bei einem maximalen durchschnittlichen Spannungsdelta von 2,25ΔV über den vier Datenspuren bei diesem Beispiel auf (andere Anzahlen von Datenspuren können natürlich in anderen Ausführungsformen verwendet werden).
-
Unter Bezugnahme auf 13 teilt eine Ausführungsform einer PAM-4433-Routine 1300 eine Reihe von Datenbits, die auf der Datenspur eines seriellen Datenbusses übertragen werden sollen, in Sequenzen von sieben Bits auf (Block 1302). Anschließend kodiert die PAM-4433-Routine 1300 die ersten vier Bits jeder der Sequenzen von sieben Bits als zwei Vier-Niveau-Symbole (Block 1304). Dann kodiert die PAM-4433-Routine 1300 die nächsten drei Bits jeder der Sequenzen von sieben Bits als zwei Drei-Niveau-Symbole (Block 1306). Dies wird für mehrere Datenspuren eines seriellen Datenbusses wiederholt, und die Übergänge zwischen Vier-Niveau-Symbolen können dann zeitlich versetzt (ausgerichtet auf verschiedene serielle Datenbustaktintervalle) über die Datenspuren erfolgen.
-
Unter Bezugnahme auf 14 aktiviert eine variable PAM-433-Kodierung 1400 bei einer Ausführungsform die PAM-433-Kodierung, wenn das aktuelle Symbol einer Datenspurspannung von entweder 0AV oder 3ΔV entspricht. Dies wird als „Triggerdaten 1402“ bezeichnet, um die PAM-433-Kodierung zu aktivieren. Beim Auftreten der Triggerdaten 1402 wird nach den Triggerdaten eine entsprechende Drei-Niveau-Symbolbrücke 1404 verwendet. Andernfalls, wenn die Triggerdaten nicht vorliegen, verwendet die variable PAM-433-Kodierung 1400 die herkömmliche PAM-4-Kodierung (alle Symbole weisen eines von vier Niveaus auf). Die variable PAM-433-Kodierung 1400 führt zu einem maximalen Spannungsdelta von 2ΔV bei der Datenspur-Spannungswellenform des seriellen Datenbusses.
-
Unter Bezugnahme auf 15 bestimmt eine variable PAM-433-Routine 1500, ob zwei erste Bits von Sequenzen von fünf Bits mit einem Vier-Niveau-Symbol kodiert werden, das einem höchsten Spannungsniveau oder einem niedrigsten Spannungsniveau entspricht, das auf einer Datenspur eines seriellen Datenbusses verwendet wird (Block 1502). Mit anderen Worten, ob die Triggerdaten angetroffen werden. Als Reaktion auf das Antreffen der Triggerdaten kodiert die variable PAM-433-Routine 1500 die nächsten drei Bits der Sequenzen von fünf Bits als zwei Drei-Niveau-Symbole (Block 1504).
-
16 veranschaulicht eine Ausführungsform einer entspannten bzw. relaxed PAM-433 1600, die zwei verschiedene Datenübertragungskonfigurationen auf einer Schnittstelle mit mehreren Datenspuren aufweist. Daten werden von der GPU 1602 zum DRAM 1604 auf neun Datenspuren übertragen. Die Einschränkung der Umschalt-Aktivität wird von „überhaupt kein Umschalten von 3ΔV“ bei PAM-433 auf „höchstens ein Umschalten von 3ΔV innerhalb von drei benachbarten Datenspuren“ entspannt.
-
Die Konfiguration des entspannten PAM-433 1600 verwendet Gruppen von drei Datenspuren, die jeweils eine PAM-4-Datenspur und zwei PAM-433-Datenspuren umfassen. Infolgedessen erfährt innerhalb der Gruppe von drei Datenspuren nur eine Datenspur (PAM-4) eine Umschaltung von 3ΔV. Jede der Gruppen von drei Datenspuren wird dann so angeordnet, dass sichergestellt ist, dass die eine PAM-4-Datenspur drei Datenspuren von der PAM-4-Datenspur in einer anderen Gruppe von drei Datenspuren entfernt ist. Wie in 16 dargestellt ist, ist die Datenspurkonfiguration (von oben nach unten) PAM-4, PAM-433, PAM-433, PAM-4, PAM-433, PAM-433, PAM-4, PAM-433 und PAM-433. Andere Konfigurationen können auch dazu führen, dass die PAM-4-Datenspuren mindestens drei Datenspuren von einer anderen PAM-4-Datenspur entfernt sind. So kann beispielsweise PAM-433, PAM-4, PAM-433, PAM-433, PAM-4, PAM-433, PAM-433, PAM-4 und PAM-433 eine verwendete Konfiguration sein.
-
In einer herkömmlichen PAM-2-Schnittstelle ist eine Gruppe von acht Datenspuren einer DBI-Spur, die das Steuersignal für DBI überträgt, und einer Datenspur für elektronische Datenerfassung (EDC), die Informationen über zyklische Redundanzprüfungen (CRC) von Daten übermittelt, zugeordnet. In einigen Ausführungsformen können diese beiden Spuren für die Übertragung von PAM-433-kodierte Daten verwendet werden. Implementierungen der „entspannten“ PAM-433-Kommunikation können beispielsweise auf Systemen mit 9 Datenspuren und auf Systemen mit 10 Datenspuren implementiert werden (wobei die DBI-Spur als eine der Datenspuren verwendet wird).
-
Um das entspannte PAM-433 1600 in einem Speichersystem (oder allgemein auf den meisten Bussen mit mehreren Datenspuren) zu implementieren, ist es wünschenswert, die Grenze von Anfragen (z.B. 128-Bit-Anfragen bzw. Anfragen von 128 Bits, die bei GDDR- oder HBM-Speichern üblich sind) zu berücksichtigen. In dieser Umgebung kann es für die Controller einfacher sein, jede Anfrage unabhängig voneinander zu betrachten. Es ist jedoch schwierig, genau 128 Bits in einem Block von acht Symbolen auf neun Datenspuren zu senden. Die Kodierung kann 384 Bits in 24 Symbolen auf den neun Datenspuren senden, so dass die Daten über eine Reihe von aufeinanderfolgenden Übertragungen effizient kodiert werden können. Es gibt jedoch keine einfache Symbolgrenze über alle Datenspuren, bei der eine 128-Bit-Anfrage endet und die nächste beginnt. Ein Controller kann diese Art von Problemen verfolgen und „Postambels“ mit einem zusätzlichen Datensymbol unterstützen, wenn nur eine oder zwei aufeinanderfolgende 128-Bit-Übertragungen (oder jedes nicht Mehrfache von drei Übertragungen) gesendet wird bzw. werden. Es ist jedoch komplexer für die Sender- und Empfängerlogik, diese Art von Verhalten zu implementieren.
-
Unter Bezugnahme auf 17 erhält ein entspanntes PAM-433-Kodierungsverfahren 1700 Daten, die über einen seriellen Datenbus (Block 1702) gesendet werden sollen. Die Daten können 128 Bits umfassen, jedoch können 384 Bits (drei aufeinanderfolgende 128-Bit-Blöcke) mit dem entspannten PAM-433-Kodierungsverfahren 1700 effizienter übertragen werden. Aus den neun Datenspuren werden drei Datenspuren als PAM-4-Datenspuren ausgewählt (Block 1704). PAM-4-Datenspuren verwenden 4-Niveau-Symbole, um die erhaltenen Daten zu kodieren. Daher können diese Datenspuren eine Umschaltung von 3ΔV aufweisen. Um die Auswirkungen der Umschaltung von 3ΔV zu reduzieren, werden die drei für die PAM-4-Kodierung ausgewählten Datenspuren voneinander getrennt. Sie können so getrennt werden, dass jeweils jede dritte Datenspur eine PAM-4-Datenspur ist. Daher gibt es mindestens zwei Datenspuren ohne PAM-4-Kodierung zwischen den Datenspuren mit PAM-4-Kodierung. So können beispielsweise die erste, vierte und siebte Datenspur als PAM-4-Datenspur ausgewählt werden. Alternativ können die zweite, fünfte und achte Datenspur oder die dritte, sechste und neunte Datenspur ausgewählt werden. Die restlichen sechs Datenspuren der neun Datenspuren werden dann als PAM-433 Datenspuren ausgewählt (Block 1706). PAM-433-Datenspuren verwenden Gruppen von jeweils einem 4-Niveau-Symbol und von zwei 3-Niveau-Symbolen, um die erhaltenen Daten zu kodieren. Die Daten werden dann auf die neun Datenspuren verteilt (Block 1708). Da PAM-4 effizienter ist als PAM-433, erhält jede PAM-4-Datenspur mehr zu übertragende Daten. Bei einer Übertragung von 384 Bits erhält beispielsweise jede PAM-4-Datenspur 48 Bits zum Kodieren und Übertragen. Jede PAM-433-Datenspur erhält 40 Bits zum Kodieren und Übertragen. Bei einem Trennungsschema ist die erste, vierte und siebte Datenspur eine PAM-4-Datenspur. Die ersten 48 Bits können entlang der ersten Datenspur gesendet werden, die nächsten 40 Bits entlang der zweiten Datenspur, die nächsten 40 Bits entlang der dritten Datenspur, und das dann für die vierte bis sechste Datenspur und die siebte bis neunte Datenspur wiederholt werden. Die Daten werden unter Verwendung des ausgewählten Schemas kodiert (Block 1710) und dann gesendet (Block 1712).
-
In einigen Ausführungsformen kann das entspannte PAM-433-Kodierungsverfahren 1700 als reines PAM-4-Kommunikationssystem (alle Datenspuren mit PAM-4-Kommunikation) betrieben werden, bis eine Schwellenanzahl von Umschaltungen (oder Übergängen) von drei Spannungsniveaus auftritt oder wenn der Encoder bestimmt, dass die Schwellenanzahl von Umschaltungen von drei Spannungsniveaus auftreten soll, wobei dann einige der Datenspuren auf die PAM-433-Kommunikation umgeschaltet werden.
-
18 stellt weitere Ausführungsformen der entspannten PAM-433 1800 für eine 142-Bit-Anfrage 1802 und eine 134-Bit-Anfrage 1804 dar. Die 142-Bit-Anfrage 1802 beinhaltet 128 Bits an Daten und eine CRC von 14 Bits bzw. 14-Bit-CRC 1810. Die CRC 1810 umfasst sieben von acht Symbolen der zehnten Datenspur. Die 134-Bit-Anfrage 1804 beinhaltet 128 Bits an Daten und eine 6-Bit-CRC 1812. Die CRC 1812 umfasst sechs von acht Symbolen der zehnten Datenspur. Die Übertragung für die 142-Bit-Anfrage 1802 endet mit einem Zwei-Niveau-Symbol 1806 für die Datenspuren, welche ein PAM-433-Schema einsetzen; ebenso endet die Übertragung für die 134-Bit-Anfrage 1804 mit einem Zwei-Niveau-Symbol 1808 für die Datenspuren, welche ein PAM-433-Schema einsetzen.
-
Das Zwei-Niveau-Symbol 1806 und das Zwei-Niveau-Symbol 1808 können die mittleren beiden Niveaus (L1/L2) von PAM-4 verwenden, da das nächste Symbol an der Anfragegrenze ein Vier-Niveau-Symbol mit einem Wert ist, der 0ΔV-3ΔV sein kann. Da das letzte Symbol die mittleren beiden Niveaus (L1/L2) verwendet, führt dies zu keiner Umschaltung von 3ΔV (maximal 2ΔV) an der Anfragegrenze. Die CRC 1812 der 134-Bit-Anfrage 1804 verwendet nur zwei Niveaus (z.B. L1/L3) von PAM-4, was eine höhere Zuverlässigkeit der CRC-Informationen ermöglicht.
-
Die entspannte PAM-433 1800 stellt effiziente 128-Bit-Übertragungen bereit und ermöglicht gleichzeitig zusätzliche Daten für eine CRC, um Übertragungsfehler zu erkennen. In dieser Umgebung können die Controller jede 128-Bit-Übertragung unabhängig voneinander berücksichtigen. Das Hinzufügen eines Zwei-Niveau-Ein-Bit-Symbols am Ende jeder Anfrage verhindert ein Umschalten von 3ΔV zwischen zwei aufeinanderfolgenden Anfrageübertragungen.
-
In GDDR6-Speichern kann das „EDC“-Signal, das die CRC-Daten überträgt, im DDR-Modus (doppelte Datenrate) oder in einem zuverlässigeren SDR-Modus (einfache Datenrate) arbeiten. Die 10. Datenspur, die die CRC-Daten (und 2 Bits der Datennutzlast) trägt, kann zuverlässiger betrieben werden, indem bei jeder Übertragung nur zwei Symbole (z.B. L1 und L3) gesendet werden. Dies verbessert das Signal-Rausch-Verhältnis und damit die Zuverlässigkeit, reduziert aber die Anzahl der CRC-Bits von 14 auf 6.
-
Unter Bezugnahme auf 19 erhält ein entspanntes PAM-433-Kodierungsverfahren 1900 zu übertragende Daten (Block 1902). Die erhaltenen Daten können 142 Bits sein, die 128 Datenbits und eine CRC mit 14 Bits einschließen. Das entspannte PAM-433-Kodierungsverfahren 1900 verwendet zehn Datenspuren zur Datenübertragung. Vier Datenspuren von zehn Datenspuren werden als PAM-4-Datenspuren ausgewählt (Block 1904). PAM-4-Datenspuren verwenden 4-Niveau-Symbole, um die erhaltenen Daten zu kodieren. Daher können diese Datenspuren eine Umschaltung von 3ΔV aufweisen. Um die Auswirkungen der Umschaltung von 3ΔV zu reduzieren, sind die vier ausgewählten Datenspuren für die PAM-4-Codierung voneinander getrennt. Sie können so getrennt werden, dass bei jeweils drei Datenspuren eine PAM-4-Datenspur existiert. Daher können mindestens zwei Datenspuren ohne PAM-4-Kodierung zwischen den Datenspuren mit PAM-4-Kodierung vorhanden sein. So können beispielsweise die 1., 4., 7. und 10. Datenspur ausgewählt werden, wie es beispielsweise für die 142-Bit-Anfrage 1802 dargestellt ist. Eine Datenspur der PAM-4-Datenspuren wird als CRC-Datenspur bestimmt (Block 1906). Die CRC-Datenspur überträgt die 14 Bits der CRC als sieben von acht Datensymbolen sowie zwei Datenbits als eines der acht Datensymbole. Die restlichen sechs Datenspuren der zehn Datenspuren werden als modifizierte PAM-433 Datenspuren ausgewählt (Block 1908). Modifizierte PAM-433-Datenspuren verwenden zwei Gruppen mit je einem 4-Niveau-Symbol und zwei 3-Niveau-Symbolen und eine Gruppe mit einem 4-Niveau-Symbol und einem 2-Niveau-Symbol, um die erhaltenen Daten zu kodieren. Die Daten werden dann auf zehn Datenspuren aufgeteilt (Block 1910). Da PAM-4 effizienter ist als das modifizierte PAM-433, erhält jede PAM-4-Datenspur mehr zu übertragende Daten. So erhält beispielsweise jede PAM-4-Datenspur für die Übertragung von 142 Bits 16 Bits zum Kodieren und Übertragen (die CRC-Datenspur erhält die 14 Bits der CRC sowie zwei Datenbits). Jede modifizierte PAM-433 Datenspur erhält 13 Bits zur Kodierung und Übertragung. Ein Trennungsschema weist die 1., 4., 7. und 10. Datenspur als PAM-4-Datenspuren (mit der 10. als die CRC-Datenspur) und die anderen Datenspuren als modifizierte PAM-433-Datenspuren auf. Die Daten werden mit dem gewählten Schema verschlüsselt (Block 1912) und dann gesendet (Block 1914).
-
In einigen Ausführungsformen kann das entspannte PAM-433-Kodierungsverfahren 1900 als reines PAM-4-System betrieben werden, bis eine Schwellenanzahl von Umschaltungen (oder Übergängen) von drei Spannungsniveaus auftritt oder wenn der Encoder bestimmt, dass die Schwellenanzahl von Umschaltungen von drei Spannungsniveaus auftreten soll.
-
Unter Bezugnahme auf 20 erhält ein entspanntes PAM-433-Kodierungsverfahren 2000 zu übertragende Daten (Block 2002). Die erhaltenen Daten können 134 Bits sein, die 128 Datenbits und eine CRC mit 6 Bits einschließen. Das entspannte PAM-433-Kodierungsverfahren 2000 verwendet zehn Datenspuren zur Datenübertragung. Drei Datenspuren der zehn Datenspuren werden als PAM-4-Datenspuren ausgewählt (Block 2004). Die PAM-4-Datenspuren verwenden 4-Niveau-Symbole, um die erhaltenen Daten zu kodieren. Daher können diese Datenspuren eine Umschaltung von 3ΔV aufweisen. Um die Auswirkungen der Umschaltung von 3ΔV zu reduzieren, sind die drei für die PAM-4-Kodierung ausgewählten Datenspuren voneinander getrennt. Sie können so getrennt werden, dass jeweils drei Datenspuren eine PAM-4-Datenspur aufweisen. Daher gibt es mindestens zwei Datenspuren ohne PAM-4-Kodierung zwischen den Datenspuren mit PAM-4-Kodierung. So können beispielsweise die 1., 4. und 7. Datenspur ausgewählt werden, wie es für die Anfrage 1804 von 134 Bits dargestellt ist. Eine Datenspur wird dann als CRC-Datenspur ausgewählt (Block 2006). Die CRC-Datenspur überträgt acht 2-Niveau-Datensymbole für insgesamt acht Bits, welche pro Block übertragen werden. Die CRC-Datenspur überträgt die CRC von 6 Bits als sechs von acht Datensymbolen sowie zwei Datenbits als zwei der acht Datensymbole. Die restlichen sechs Datenspuren der zehn Datenspuren werden als modifizierte PAM-433 Datenspuren ausgewählt (Block 2008). Modifizierte PAM-433-Datenspuren verwenden zwei Gruppen von je einem 4-Niveau-Symbol und zwei 3-Niveau-Symbolen und eine Gruppe von einem 4-Niveau-Symbol und einem 2-Niveau-Symbol, um die erhaltenen Daten zu kodieren. Die Daten werden dann auf die zehn Datenspuren aufgeteilt (Block 2010). Da PAM-4 effizienter ist als das modifizierte PAM-433, erhält jede PAM-4-Datenspur mehr zu übertragende Daten. So erhält beispielsweise jede PAM-4-Datenspur für die Übertragung von 134 Bits 16 Bits zum Kodieren und Übertragen. Jede modifizierte PAM-433 Datenspur erhält 13 Bits zur Kodierung und Übertragung. Die CRC-Datenspur erhält die CRC mit 6 Bits und zwei Datenbits zur Übertragung. Ein Trennungsschema weist die 1., 4. und 7. Datenspur als PAM-4-Datenspur, die 10. als CRC-Datenspur und die anderen Datenspuren als modifizierte PAM-433-Datenspuren auf. Die Daten werden mit dem ausgewählten Schema kodiert (Block 2012) und dann gesendet (Block 2014).
-
In einigen Ausführungsformen kann das entspannte PAM-433-Kodierungsverfahren 2000 als reines PAM-4-System betrieben werden, bis eine Schwellenanzahl von Umschaltungen (oder Übergängen) von drei Spannungsniveaus auftritt oder wenn der Encoder bestimmt, dass die Schwellenanzahl von Umschaltungen von drei Spannungsniveaus auftreten soll.
-
21 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 2100, in dem ein oder mehrere Aspekte der Erfindung implementiert werden können. Das Computersystem 2100 beinhaltet einen Systemdatenbus 2136, eine CPU 2126, Eingabevorrichtungen 2130, einen Systemspeicher 2104, ein Grafikverarbeitungssystem 2102 und Anzeigevorrichtungen 2128. In alternativen Ausführungsformen können die CPU 2126, Teile des Grafikverarbeitungssystems 2102, der Systemdatenbus 2136 oder eine beliebige Kombination davon in einer einzigen Verarbeitungseinheit integriert sein. Darüber hinaus kann die Funktionalität des Grafikverarbeitungssystems 2102 in einem Chipsatz oder in einer anderen Art von Spezialverarbeitungseinheit oder Co-Prozessor enthalten sein.
-
Wie dargestellt ist, verbindet der Systemdatenbus 2136 die CPU 2126, die Eingabegeräte 2130, den Systemspeicher 2104 und das Grafikverarbeitungssystem 2102. In alternativen Ausführungsformen kann der Systemspeicher 2104 direkt mit der CPU 2126 verbunden sein. Die CPU 2126 empfängt Benutzereingaben von den Eingabegeräten 2130, führt im Systemspeicher 2104 gespeicherte Programmanweisungen aus, arbeitet mit im Systemspeicher 2104 gespeicherten Daten und konfiguriert das Grafikverarbeitungssystem 2102 für bestimmte Aufgaben in der Grafikpipeline. Der Systemspeicher 2104 beinhaltet typischerweise einen dynamischen Direktzugriffsspeicher (DRAM), der zum Speichern von Programmanweisungen und Daten zur Verarbeitung durch die CPU 2126 und das Grafikverarbeitungssystem 2102 verwendet wird. Das Grafikverarbeitungssystem 2102 empfängt Anweisungen, die von der CPU 2126 gesendet werden, und verarbeitet die Anweisungen zum Ausführen verschiedener Operationen innerhalb des Computersystems 2100.
-
Wie ebenfalls dargestellt ist, beinhaltet der Systemspeicher 2104 ein Anwendungsprogramm 2112, eine API 2118 (Application Programming Interface) und einen Grafikverarbeitungseinheitstreiber 2122 (GPU-Treiber). Das Anwendungsprogramm 2112 erzeugt Aufrufe der API 2118, um eine gewünschte Ergebnismenge zu erzeugen. So überträgt beispielsweise das Anwendungsprogramm 2112 auch Programme an die API 2118, um Shading-Operationen, Operationen der künstlichen Intelligenz oder Grafik-Rendering-Operationen auszuführen. Die Funktionalität der API 2118 kann typischerweise innerhalb des Grafikverarbeitungseinheitstreibers 2122 implementiert werden. Der Grafikverarbeitungseinheitstreiber 2122 ist konfiguriert, um die Shading-Programme in Maschinencode zu übersetzen.
-
Das Grafikverarbeitungssystem 2102 beinhaltet eine GPU 2110 (Grafikverarbeitungseinheit), einen On-Chip-GPU-Speicher 2116, einen On-Chip-GPU-Datenbus 2132, einen lokalen GPU-Speicher 2106 und einen GPU-Datenbus 2134. Die GPU 2110 ist konfiguriert, um mit dem On-Chip-GPU-Speicher 2116 über den On-Chip-GPU-Datenbus 2132 und mit dem lokalen GPU-Speicher 2106 über den GPU-Datenbus 2134 zu kommunizieren. Der GPU-Datenbus 2134 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Die GPU 2110 kann von der CPU 2126 gesendete Anweisungen empfangen und die Ergebnisse im lokalen Speicher 2106 der GPU speichern. Anschließend, wenn es sich bei den Anweisungen um Grafikanweisungen handelte, kann die GPU 2110 bestimmte im lokalen Speicher der GPU 2106 gespeicherte Grafikbilder auf den Anzeigevorrichtungen 2128 anzeigen.
-
Die GPU 2110 beinhaltet einen oder mehrere Logikblöcke 2114. Der Betrieb der Logikblöcke 2114 kann Ausführungsformen der hier beschriebenen Kodierungsschemata implementieren. Die Logikblöcke 2114 können als Anweisungen auf die GPU geladen oder in der Schaltung als Merkmale der Befehlssatzarchitektur oder eine Kombination aus beidem implementiert werden.
-
Die GPU 2110 kann mit einer beliebigen Anzahl von On-Chip-GPU-Speichern 2116 und lokalen GPU-Speichern 2106, einschließlich keinem, ausgestattet sein und kann On-Chip-GPU-Speicher 2116, lokalen GPU-Speicher 2106 und Systemspeicher 2104 in beliebiger Kombination für Speicheroperationen verwenden. Die Daten-/Anweisungsbusse zwischen diesen Speichern und der GPU 2110 können eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Der On-Chip-GPU-Speicher 2116 ist konfiguriert, um die GPU-Programmierung 2120 und die On-Chip-Puffer 2124 aufzuweisen. Die GPU-Programmierung 2120 kann vom Grafikverarbeitungseinheitstreiber 2122 über den Systemdatenbus 2136 an den On-Chip-GPU-Speicher 2116 übertragen werden. Der Systemdatenbus 2136 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Als Beispiel kann die GPU-Programmierung 2120 ein Vertex-Shading-Programm in Maschinencode, ein Geometrie-Shading-Programm in Maschinencode, ein Fragment-Shading-Programm in Maschinencode, ein Programm der künstlichen Intelligenz oder eine beliebige Anzahl von Variationen davon beinhalten. Die On-Chip-Puffer 2124 werden typischerweise zum Speichern von Daten verwendet, die einen schnellen Zugriff erfordern, um die Latenzzeit solcher Operationen zu reduzieren.
-
Der lokale Speicher 2106 der GPU beinhaltet typischerweise einen kostengünstigeren dynamischen Direktzugriffsspeicher (DRAM) außerhalb des Chips und wird auch zum Speichern von Daten und Programmen der GPU 2110 verwendet. Wie dargestellt ist, beinhaltet der lokale Speicher 2106 der GPU einen Frame-Puffer 1608. Der Frame-Puffer 2108 speichert Daten für mindestens eine zweidimensionale Oberfläche, die zum Steuern der Anzeigevorrichtungen 2128 verwendet werden kann. Darüber hinaus kann der Frame-Puffer 2108 mehr als eine zweidimensionale Oberfläche beinhalten, so dass die GPU 2110 auf eine zweidimensionale Oberfläche rendern kann, während eine zweite zweidimensionale Oberfläche zum Steuern der Anzeigevorrichtungen 2128 verwendet wird.
-
Die Anzeigevorrichtungen 2128 sind eine oder mehrere Ausgabevorrichtungen, die ein visuelles Bild entsprechend einem Eingangsdatensignal ausgeben können. So kann beispielsweise eine Anzeigevorrichtung mit einem Kathodenstrahlröhrenmonitor (CRT), einer Flüssigkristallanzeige oder einem anderen geeigneten Anzeigesystem aufgebaut sein. Die Eingangsdatensignale an die Anzeigevorrichtungen 2128 werden typischerweise durch Scannen des Inhalts eines oder mehrerer Frames von Bilddaten erzeugt, die im Frame-Puffer 2108 gespeichert sind.
-
Die oben beschriebenen spezifischen Spannungen, Stromstärken und andere Details dienen nur zur Veranschaulichung. Die Erfindung kann mit einer Vielzahl von spezifischen Spannungsniveaus, Strömen, Widerständen usw. ausgeführt werden. Und während die Erfindung vorstehend im Zusammenhang mit z.B. einem Prozessor beschrieben wurde, der Daten an einen Speicher überträgt, können die hier beschriebenen Signalisierungstechniken, wie PAM-4 usw., in einem von unterschiedlichsten Signalisierungssystemen eingesetzt werden, bei denen Daten von einer Sendevorrichtung an eine Empfangsvorrichtung oder zwischen Sende- und Empfangsvorrichtungen gesendet werden, und so weiter.
-
Die hierin verwendeten Begriffe sollten ihrer gewöhnlichen Bedeutung nach dem jeweiligen Stand der Technik oder der Bedeutung, die durch ihre Verwendung im Kontext angezeigt ist, entsprechen. Aber wenn eine ausdrückliche Definition bereitgestellt ist, gilt diese Bedeutung.
-
„Logik“ bezieht sich hier auf Speicherschaltungen von Maschinen, nicht-flüchtige maschinenlesbare Medien und/oder Schaltungen, die in ihrer Material- und/oder Materialenergiekonfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom/Spannungswerte usw.) umfassen, die eingesetzt werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Elektronische Schaltungen wie Steuerungen, feldprogrammierbare Gate-Arrays, Prozessoren und Speicher (sowohl flüchtige als auch nichtflüchtige), welche durch einen Prozessor ausführbare Anweisungen umfassen, sind Beispiele für eine Logik. Die Logik schließt insbesondere reine Signale oder Software an sich aus (schließt jedoch Maschinenspeicher, die Software umfassen und dadurch Konfigurationen aus Materie ausbilden, nicht aus).
-
Verschiedene hier beschriebene logische Funktionsoperationen können in einer Logik implementiert werden, auf die mit einem Substantiv oder einem Substantivausdruck Bezug genommen wird, was die genannte Operation oder Funktion widerspiegelt. So kann beispielsweise eine Assoziationsoperation von einem „Assoziator“ oder „Korrelator“ ausgeführt werden. Ebenso kann ein Schalten durch einen „Schalter“ und ein Auswählen durch einen „Selektor“ erfolgen usw..
-
Dem Fachmann ist bekannt, dass die Logik über eine oder mehrere Vorrichtungen oder Komponenten verteilt sein kann und/oder aus Kombinationen von Speichern, Medien, Verarbeitungsschaltungen und Controllern, anderen Schaltungen usw. bestehen kann. Daher kann die Logik im Interesse der Klarheit und Korrektheit nicht immer deutlich in Zeichnungen von Geräten und Systemen dargestellt werden, obwohl sie darin inhärent vorhanden ist. Die hier beschriebenen Techniken und Verfahren können über eine Logik implementiert werden, die in einem oder mehreren Rechengeräten verteilt ist. Die jeweilige Verteilung und Wahl der Logik hängt von der Implementierung ab.
-
In dieser Offenbarung können verschiedene Einheiten (die unterschiedlich als „Einheiten“, „Schaltkreise“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung - [Gebilde], welches konfiguriert ist, [um eine oder mehrere Aufgaben auszuführen] - wird hier verwendet, um sich auf eine Struktur zu beziehen (d.h. etwas Körperliches, wie eine elektronische Schaltung). Genauer gesagt, wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, dass sie eine oder mehrere Aufgaben während des Betriebs erfüllt. Eine Struktur kann als „konfiguriert“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur derzeit nicht betrieben wird. Eine „Kreditverteilungsschaltung, die konfiguriert ist, um Kredite auf eine Vielzahl von Prozessorkernen zu verteilen“, soll beispielsweise eine integrierte Schaltung umfassen, die eine Schaltung aufweist, welche diese Funktion während des Betriebs ausführt, auch wenn die betreffende integrierte Schaltung derzeit nicht eingesetzt wird (da z.B. keine Stromversorgung angeschlossen ist). So bezieht sich ein Gebilde, das als „konfiguriert“ beschrieben oder angegeben wird, um eine Aufgabe auszuführen, auf etwas Physisches bzw. Körperliches, wie z.B. eine Vorrichtung, eine Schaltung, einen Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe auszuführen, usw. Dieser Ausdruck wird hier nicht verwendet, um sich auf etwas Immaterielles zu beziehen.
-
Der Begriff „konfiguriert, um“ bedeutet nicht „konfigurierbar, um“. Ein unprogrammiertes FPGA zum Beispiel könnte nicht als „konfiguriert, um“ angesehen werden, um eine bestimmte Funktion auszuführen, obwohl es „konfigurierbar, um“ sein kann, um diese Funktion nach einer Programmierung auszuführen.
-
Das Angeben in den beigefügten Ansprüchen, eine Struktur ist „konfiguriert, um“ eine oder mehrere Aufgaben auszuführen, ist ausdrücklich dazu bestimmt, sich nicht auf 35 U.S.C. § 112(f) für dieses Anspruchselement zu berufen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] aufweisen, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
-
Der Begriff „abhängig von“ wird hier verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie auf anderen, nicht spezifizierten Faktoren beruhen. Der Ausdruck „A wird abhängig von B bestimmt“ beschreibt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder die Bestimmung von A beeinflusst. Dieser Ausdruck schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor basieren kann, wie beispielsweise C. Dieser Ausdruck soll auch eine Ausführungsform abdecken, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie es hier verwendet wird, ist der Ausdruck „abhängig von“ gleichbedeutend mit dem Ausdruck „zumindest teilweise abhängig von“.
-
Wie es hier verwendet wird, beschreibt der Ausdruck „abhängig von“ auch einen oder mehrere Faktoren, die einen Effekt auslösen. Dieser Ausdruck schließt die Möglichkeit nicht aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen können. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die spezifizierten Faktoren sowie andere, nicht spezifizierte Faktoren erfolgen. Der Ausdruck „A wird abhängig von B ausgeführt“ besagt, dass B ein Faktor ist, der die Ausführung von A auslöst. Dieser Ausdruck schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Dieser Ausdruck soll auch eine Ausführungsform abdecken, bei der A ausschließlich abhängig von B ausgeführt wird.
-
Die Begriffe „erste(r/s)“, zweite(r/s)'' usw. werden als Bezeichnungen für Substantive verwendet, denen sie voranstehen, und implizieren keine Art von Reihenfolge (z.B. räumlich, zeitlich, logisch usw.), sofern es nicht anders angegeben ist. So können beispielsweise in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register zu verweisen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
-
In den Ansprüchen wird der Begriff „oder“ als ein einschließendes Oder und nicht als ein ausschließendes Oder verwendet. So bedeutet beispielsweise der Ausdruck „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.