-
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
WO 2015 / 077 606 A1 beschreibt eine Kommunikationsverbindung, bei welcher mittels einer Pulsamplitudenmodulation Signale mit vier verschiedenen Spannungsniveaus übertragen werden. Dabei verbrauchen bestimmte logische Zustände bei der Übertragung mehr Leistung als andere, wobei die Gesamtleitung möglichst klein gehalten werden soll.
-
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 idealerweise 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 PAM-433-Kodierung 1600 gemäß einer Ausführungsform dar.
- 17 stellt ein PAM-433-Kodierungsverfahren 1700 gemäß einer Ausführungsform dar.
- 18 stellt eine PAM-433-Kodierung 1800 gemäß einer Ausführungsform dar.
- 19 stellt ein PAM-433-Kodierungsverfahren 1900 gemäß einer Ausführungsform dar.
- 20 stellt eine PAM-4433-Kodierung 2000 gemäß einer Ausführungsform dar.
- 21 stellt ein PAM-4433-Kodierungsverfahren 2100 gemäß einer Ausführungsform dar.
- 22 ist ein Blockdiagramm eines Computersystems 2200 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. Datenblöcke, 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 (1x), 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 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 0ΔV 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).
-
Datenübertragungen, z.B. 128-Bit-Transaktionen, können in einer „unentspannten“ bzw. „unrelaxed“ Betriebsart einer PAM-433 durchgeführt werden. Hier wird an den Enden jeder Anfrage ein Zwei-Niveau- / Ein-Bit-Symbol hinzugefügt. Dies verhindert jegliches Umschalten von 3ΔV zwischen zwei aufeinanderfolgenden 128-Bit-Transaktionen, da das Zwei-Niveau- / Ein-Bit-Symbol die mittleren beiden Spannungsniveaus (1ΔV und 2ΔV) verwendet und das folgende 4-Niveau-Symbol als Minimum 0ΔV und als Maximum 3ΔV aufweisen kann, was zu einem maximalen Spannungsniveau-Übergang (oder Schritt) von 2ΔV führt.
-
Unter Bezugnahme auf 16 überträgt eine PAM-433-Kodierung 1600 16 Bytes Daten von einer GPU 1602 zu einem DRAM 1604 unter Verwendung von acht Datenspuren 1606. Jede der Datenspuren 1606 überträgt 16-Bit-Daten 1608. Insgesamt 16 Bit pro jeder der acht Datenspuren 1606 werden in jeder Transaktionsabgrenzung übertragen, also insgesamt 128 Bit (16 Bytes) pro Transaktion. Jede der acht Datenspuren 1606 überträgt drei Gruppen von jeweils einem Vier-Niveau-Symbol und zwei Drei-Niveau-Symbolen, gefolgt von einem Zwei-Niveau-Symbol. Die Vier-Niveau-Symbole übertragen zwei Bits, die beiden Drei-Niveau-Symbole zusammen übertragen drei Bits und das Zwei-Niveau-Symbol überträgt ein Bit. Zehn Symbole werden für jeweils sechzehn Bit verwendet, was insgesamt einem Kodierungszuschlag von 25% im Vergleich zur PAM-4 entspricht.
-
Es sei angemerkt, dass das Zwei-Niveau-Symbol am Anfang oder am Ende, wie dargestellt, eines Datenblocks auf dem seriellen Datenbus verwendet werden kann, aber im Allgemeinen an beliebiger Stelle im Block eingefügt werden kann (z.B. zwischen einem Vier-Niveau- und einem Drei-Niveau-Symbol oder zwischen zwei Drei-Niveau-Symbolen). Im Allgemeinen sind die offenbarten Verfahren weder auf die Verwendung eines Zwei-Niveau-Symbols am Anfang oder Ende eines Blocks beschränkt, noch auf die Verwendung nur eines einzigen Zwei-Niveau-Symbols pro Block.
-
17 stellt eine Ausführungsform einer PAM-433-Kodierung 1700 dar, um 18-Byte-Transaktionen (einschließlich zwei Bytes für CRC-Daten) über acht Leitungen zu übertragen. Eine GPU 1702 überträgt die 18-Byte-Transaktionen an ein DRAM 1704 unter Verwendung von acht Datenspuren 1706. Jede der acht Datenspuren 1706 überträgt 16-Bit-Daten 1708 und eine 2-Bit-CRC 1710. Insgesamt werden 18 Bits von jeder der acht Datenspuren 1706 in jeder Transaktionsabgrenzung übertragen, also insgesamt 18 Bytes pro Transaktion. Jede der acht Datenspuren 1706 überträgt drei Gruppen von jeweils einem Vier-Niveau-Symbol und zwei Drei-Niveau-Symbolen, gefolgt von einem Vier-Niveau-Symbol und einem Zwei-Niveau-Symbol (pro Transaktion). Die Vier-Niveau-Symbole übertragen zwei Bits, die beiden Drei-Niveau-Symbole zusammen übertragen drei Bits, und das Zwei-Niveau-Symbol überträgt ein Bit. Die Gruppen von jeweils einem Vier-Niveau-Symbol und zwei Drei-Niveau-Symbolen mit einem Teil (z.B. dem ersten Bit) des folgenden Vier-Niveau- Symbols übertragen die 16-Bit-Daten 1708. Der andere Teil (z.B. das zweite Bit) des folgenden Vier-Niveau-Symbols und das Zwei-Niveau-Symbol sind Teil der Übertragung der 2-Bit-CRC 1710. Elf Symbole pro achtzehn Bit werden verwendet, was einem Kodierungszuschlag von 22% im Vergleich zu einer PAM-4 entspricht.
-
18 stellt eine Ausführungsform einer PAM-433-Kodierung 1800 dar, um 18-Byte-Transaktionen über neun Leitungen (acht Datenspuren und eine ehemalige DBI-Spur, die als neunte Datenspur wiederverwendet wird) zu übertragen. Eine GPU 1802 überträgt die 18-Byte-Transaktionen an einen DRAM 1804 mittels neun Datenspuren 1806. Jede der neun Datenspuren 1806 überträgt in jeder Transaktion 16-Bit-Daten 1808. Sechzehn Bits werden über neun Datenspuren in jeder Transaktionsabgrenzung übertragen, also insgesamt 18 Bytes pro Transaktion. Jede der neun Datenspuren 1806 überträgt drei Gruppen von jeweils einem Vier-Niveau-Symbol und zwei Drei-Niveau-Symbolen, gefolgt von einem Zwei-Niveau-Symbol. Die Vier-Niveau-Symbole übertragen zwei Bits, die beiden Drei-Niveau-Symbole zusammen übertragen drei Bits, und das Zwei-Niveau-Symbol überträgt ein Bit. Die Vier-Niveau-Symbole übertragen zwei Bits, die beiden Drei-Niveau-Symbole zusammen übertragen drei Bits, und das Zwei-Niveau-Symbol überträgt ein Bit. Pro Leitung werden zehn Symbole verwendet, wobei eine zusätzliche Leitung gegenüber den Ausführungsformen mit acht Leitungen eingesetzt wird, was insgesamt zu einem Kodierungszuschlag von 11,1% im Vergleich zu einer PAM-4 führt.
-
Unter Bezugnahme auf 19 unterteilt ein PAM-433-Kodierungsverfahren 1900 eine Reihe von Datenbits auf einem seriellen Datenbus in eine Vielzahl von Sequenzen von jeweils fünf Bits (Block 1902). Die ersten beiden Bits jeder der Sequenzen von fünf Bits werden als Vier-Niveau-Symbol kodiert (Block 1904). Die nächsten drei Bits jeder der Sequenzen von fünf Bits werden als zwei Drei-Niveau-Symbole kodiert (Block 1906). Ein einzelnes Bit wird am Ende der Sequenzen von je fünf Bits kodiert, wobei das einzelne Bit als PAM-4-Spannungsniveau im mittleren Bereich kodiert werden kann (Block 1908).
-
In einigen Fällen kann es wünschenswert sein, Kodierungsoperationen innerhalb der Transaktionsabgrenzung (z.B. 32 Bytes) einzuschränken. 20 veranschaulicht eine Ausführungsform einer PAM-4433-Kodierung 2000, die 32 Bytes Daten über 16 Leitungen überträgt (20 zeigt nur acht der sechzehn Leitungen, aber die zweite Gruppe von acht Leitungen ist ähnlich). Die PAM-4433-Kodierung 2000 umfasst eine GPU 2002, die 16 Bits pro Leitung an einen DRAM 2004 überträgt. Jede Leitung kann zu Beginn der Übertragung und am Ende der Übertragung einen 2-Niveau-Block übertragen. Die zehn Symbole zwischen den 2-Niveau-Blöcken verwenden zwei Gruppen von jeweils zwei 4-Niveau-Blöcken und zwei 3-Niveau-Blöcken (z.B. PAM-4433). Da ein PAM-4433-Schema verwendet wird, weist jede Leitung potenzielle Übergänge von 3ΔV 2006 auf (dargestellt in jeder Leitung als gestrichelte Gruppierung von zwei 4-Niveau-Symbolen). Die Auswirkungen der potenziellen Übergänge von 3ΔV 2006 können jedoch durch eine Staffelung der Übertragung der potenziellen Übergänge von 3ΔV 2006 unter den Leitungen abgemildert werden. Zu jedem Zeitpunkt können nur wenige Leitungen einen potenziellen Übergang von 3ΔV 2006 aufweisen. Die Leitungen können unterschiedliche Taktzyklen aufweisen, um eine Staffelung zu erreichen. So kann beispielsweise die erste Leitung einen Übergang von 3ΔV aufweisen; die zweite Leitung überträgt jedoch den Wechsel von dem 4-Niveau-Symbol zu einem ersten 3-Niveau-Symbol. Die Anordnung des 4-Niveau-Symbols zu einem ersten 3-Niveau-Symbol wird so eingestellt, dass ein Übergang von 3ΔV vermieden wird. Noch eine weitere Leitung kann den Wechsel von einem 3-Niveau-Symbol zu einem anderen 3-Niveau-Symbol übertragen, die ebenfalls so eingestellt sind, dass ein Übergang von 3ΔV vermieden wird. In weiteren Ausführungsformen werden die Leitungen in Leitungsgruppen (z.B. Gruppen von drei Leitungen) zusammengefasst. Jede Gruppe kann zu einem bestimmten Zeitpunkt eine Leitung mit einem möglichen Übergang von 3ΔV aufweisen; eine Leitung in einer anderen Gruppe kann jedoch auch einen möglichen Übergang von 3ΔV aufweisen. Die Gruppen können so angeordnet werden, dass benachbarte Leitungen oder Leitungen innerhalb einer bestimmten Anzahl von Leitungen (z.B. drei Leitungen) nicht gleichzeitig einen potenziellen Übergang von 3ΔV aufweisen. Dies führt dazu, dass Leitungen in unmittelbarer Nähe (d.h. in einer bestimmten Anzahl von Leitungen) nicht gleichzeitig einen potenziellen Übergang von 3ΔV aufweisen, während zulässige Leitungen nicht in unmittelbarer Nähe (d.h. in einer bestimmte Anzahl von Leitungen) gleichzeitig einen potenziellen Übergang von 3ΔV aufweisen können. In diesem Szenario werden die Auswirkungen eines gleichzeitig stattfindenden Übergangs von 3ΔV durch den Abstand zwischen den Leitungen abgemildert.
-
Unter Bezugnahme auf 21 unterteilt ein PAM-4433-Kodierungsverfahren 2100 eine Reihe von Datenbits auf dem seriellen Datenbus in Sequenzen von sieben Bits (Block 2102). Die ersten vier Bits jeder der Sequenzen von sieben Bits werden als zwei Vier-Niveau-Symbole kodiert (Block 2104). Die nächsten drei Bits jeder der Sequenzen von sieben Bits werden als zwei Drei-Niveau-Symbole kodiert (Block 2106). Ein erstes einzelnes Bit wird am Ende der Sequenzen von jeweils sieben Bits kodiert, wobei das erste einzelne Bit als PAM-4-Spannungsniveau im mittleren Bereich kodiert wird (Block 2108).
-
22 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 2200, in dem ein oder mehrere Aspekte der Erfindung implementiert werden können. Das Computersystem 2200 beinhaltet einen Systemdatenbus 2236, eine CPU 2226, Eingabevorrichtungen 2230, einen Systemspeicher 2204, ein Grafikverarbeitungssystem 2202 und Anzeigevorrichtungen 2228. In alternativen Ausführungsformen können die CPU 2226, Teile des Grafikverarbeitungssystems 2202, der Systemdatenbus 2236 oder eine beliebige Kombination davon in einer einzigen Verarbeitungseinheit integriert sein. Darüber hinaus kann die Funktionalität des Grafikverarbeitungssystems 2202 in einem Chipsatz oder in einer anderen Art von Spezialverarbeitungseinheit oder Co-Prozessor enthalten sein.
-
Wie dargestellt ist, verbindet der Systemdatenbus 2236 die CPU 2226, die Eingabegeräte 2230, den Systemspeicher 2204 und das Grafikverarbeitungssystem 2202. In alternativen Ausführungsformen kann der Systemspeicher 2204 direkt mit der CPU 2226 verbunden sein. Die CPU 2226 empfängt Benutzereingaben von den Eingabegeräten 2230, führt im Systemspeicher 2204 gespeicherte Programmanweisungen aus, arbeitet mit im Systemspeicher 2204 gespeicherten Daten und konfiguriert das Grafikverarbeitungssystem 2202 für bestimmte Aufgaben in der Grafikpipeline. Der Systemspeicher 2204 beinhaltet typischerweise einen dynamischen Direktzugriffsspeicher (DRAM), der zum Speichern von Programmanweisungen und Daten zur Verarbeitung durch die CPU 2226 und das Grafikverarbeitungssystem 2202 verwendet wird. Das Grafikverarbeitungssystem 2202 empfängt Anweisungen, die von der CPU 2226 gesendet werden, und verarbeitet die Anweisungen zum Ausführen verschiedener Operationen innerhalb des Computersystems 2200.
-
Wie ebenfalls dargestellt ist, beinhaltet der Systemspeicher 2204 ein Anwendungsprogramm 2212, eine API 2218 (Application Programming Interface) und einen Grafikverarbeitungseinheitstreiber 2222 (GPU-Treiber). Das Anwendungsprogramm 2212 erzeugt Aufrufe der API 2218, um eine gewünschte Ergebnismenge zu erzeugen. So überträgt beispielsweise das Anwendungsprogramm 2212 auch Programme an die API 2218, um Shading-Operationen, Operationen der künstlichen Intelligenz oder Grafik-Rendering-Operationen auszuführen. Die Funktionalität der API 2218 kann typischerweise innerhalb des Grafikverarbeitungseinheitstreibers 2222 implementiert werden. Der Grafikverarbeitungseinheitstreiber 2222 ist konfiguriert, um die Shading-Programme in Maschinencode zu übersetzen.
-
Das Grafikverarbeitungssystem 2202 beinhaltet eine GPU 2210 (Grafikverarbeitungseinheit), einen On-Chip-GPU-Speicher 2216, einen On-Chip-GPU-Datenbus 2232, einen lokalen GPU-Speicher 2206 und einen GPU-Datenbus 2234. Die GPU 2210 ist konfiguriert, um mit dem On-Chip-GPU-Speicher 2216 über den On-Chip-GPU-Datenbus 2232 und mit dem lokalen GPU-Speicher 2206 über den GPU-Datenbus 2234 zu kommunizieren. Der GPU-Datenbus 2234 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Die GPU 2210 kann von der CPU 2226 gesendete Anweisungen empfangen und die Ergebnisse im lokalen Speicher 2206 der GPU speichern. Anschließend, wenn es sich bei den Anweisungen um Grafikanweisungen handelte, kann die GPU 2210 bestimmte im lokalen Speicher der GPU 2206 gespeicherte Grafikbilder auf den Anzeigevorrichtungen 2228 anzeigen.
-
Die GPU 2210 beinhaltet einen oder mehrere Logikblöcke 2214. Der Betrieb der Logikblöcke 2214 kann Ausführungsformen der hier beschriebenen Kodierungsschemata implementieren. Die Logikblöcke 2214 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 2210 kann mit einer beliebigen Anzahl von On-Chip-GPU-Speichern 2216 und lokalen GPU-Speichern 2206, einschließlich keinem, ausgestattet sein und kann On-Chip-GPU-Speicher 2216, lokalen GPU-Speicher 2206 und Systemspeicher 2204 in beliebiger Kombination für Speicheroperationen verwenden. Die Daten-/Anweisungsbusse zwischen diesen Speichern und der GPU 2210 können eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Der On-Chip-GPU-Speicher 2216 ist konfiguriert, um die GPU-Programmierung 2220 und die On-Chip-Puffer 2224 aufzuweisen. Die GPU-Programmierung 2220 kann vom Grafikverarbeitungseinheitstreiber 2222 über den Systemdatenbus 2236 an den On-Chip-GPU-Speicher 2216 übertragen werden. Der Systemdatenbus 2236 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.
-
Als Beispiel kann die GPU-Programmierung 2220 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 2224 werden typischerweise zum Speichern von Daten verwendet, die einen schnellen Zugriff erfordern, um die Latenzzeit solcher Operationen zu reduzieren.
-
Der lokale Speicher 2206 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 2210 verwendet. Wie dargestellt ist, beinhaltet der lokale Speicher 2206 der GPU einen Frame-Puffer 1608. Der Frame-Puffer 2208 speichert Daten für mindestens eine zweidimensionale Oberfläche, die zum Steuern der Anzeigevorrichtungen 2228 verwendet werden kann. Darüber hinaus kann der Frame-Puffer 2208 mehr als eine zweidimensionale Oberfläche beinhalten, so dass die GPU 2210 auf eine zweidimensionale Oberfläche rendern kann, während eine zweite zweidimensionale Oberfläche zum Steuern der Anzeigevorrichtungen 2228 verwendet wird.
-
Die Anzeigevorrichtungen 2228 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 2228 werden typischerweise durch Scannen des Inhalts eines oder mehrerer Frames von Bilddaten erzeugt, die im Frame-Puffer 2208 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.