DE102019114978A1 - Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe - Google Patents

Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe Download PDF

Info

Publication number
DE102019114978A1
DE102019114978A1 DE102019114978.9A DE102019114978A DE102019114978A1 DE 102019114978 A1 DE102019114978 A1 DE 102019114978A1 DE 102019114978 A DE102019114978 A DE 102019114978A DE 102019114978 A1 DE102019114978 A1 DE 102019114978A1
Authority
DE
Germany
Prior art keywords
symbols
voltage level
data
original
dbi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019114978.9A
Other languages
English (en)
Inventor
Donghyuk Lee
Michael O'Connor James
John Wilson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority to DE102019114978.9A priority Critical patent/DE102019114978A1/de
Publication of DE102019114978A1 publication Critical patent/DE102019114978A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/20Conversion to or from representation by pulses the pulses having more than three levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Power Sources (AREA)

Abstract

Mechanismen, um ein Rauschen und/oder einen Energieverbrauch in PAM-Kommunikationssystemen zu reduzieren, setzen eine bedingte Symbolersetzung in jedem Burstintervall eines seriellen Datenbusses mit mehreren Datenbahnen ein.

Description

  • HINTERGRUND
  • Moderne Systeme mit hohem Durchsatz verwenden mehrere Ein-/Ausgabeschnittstellen mit hoher Bandbreite, um ein Signalisierungsnetzwerk zwischen Recheneinheiten, Hauptspeicherbauelementen und Festspeicherbauelementen auszubilden. Beispielsweise verbindet Peripheral Component Interconnect Express (PCI-E) mehrere Peripheriegeräte mit zentralen Verarbeitungseinheiten (CPUs) und Grafikverarbeitungseinheiten (GPUs). Diese Schnittstellen können mehrere serielle Datenbusse umfassen, die mit hoher Frequenz arbeiten.
  • Pulsamplitudenmodulation (PAM) kann auf einem mehrspurigen seriellen Datenbus eingesetzt werden, um mehrere Datenbits gleichzeitig zu übertragen, indem die Daten als unterschiedliche Spannungsniveaus bzw. Spannungspegel kodiert werden. Hier bezieht sich „Spur“ bzw. „Bahn“ auf eine einzelne Leitung eines seriellen Datenbusses. Ein „Symbol-Burst“ bezieht sich auf Bits, die auf den Datenbahnen eines seriellen Datenbusses im selben Bustaktintervall, d.h. parallel, angeordnet sind.
  • Ein Beispiel für die PAM-Kommunikation ist PAM-4. Während jedes Bustaktintervalls kodiert PAM-4 zwei Datenbits (00, 01, 10, 11) auf jeder Datenbahn eines seriellen Datenbusses als eine von vier verschiedenen Spannungsniveaus (Symbolen). Da in jedem Bustaktintervall auf jeder Datenbahn zwei Bits kodiert werden, ermöglicht PAM-4 im Idealfall die doppelte Bandbreite im Vergleich zur herkömmlichen Zwei-Niveau-Signalisierung (z.B. PAM-2) auf seriellen Datenbussen, die mit vergleichbaren Bustaktfrequenzen arbeiten. PAM-4-Symbole verwenden vier verschiedene Spannungsniveaus, so dass die Spannungsniveauunterschiede zwischen den Symbolwerten bei PAM-4 im Vergleich zu PAM-2 geringer sind. Dies macht die PAM-4-Kommunikation anfälliger für Interferenzeffekte wie Kopplungsrauschen zwischen den Datenbahnen auf einem seriellen Datenbus und Stromversorgungsrauschen, was das Signal-Rausch-Verhältnis (SNR) reduziert.
  • Ein Mechanismus zur Minderung dieser Rauschauswirkungen ist die Nutzung der Datenbus-Inversion (DBI). Bei einem bestimmten Symbolburst reduziert DBI das Gesamtmaß der Spannungsniveauübergänge über die Datenbahnen eines seriellen Datenbusses um bis zur Hälfte, indem die Polarität der Bits in jedem Symbolburst auf dem seriellen Datenbus intelligent eingestellt wird. DBI erfordert ein zusätzliches Metadaten-Bit pro Symbol-Burst, um die Symbol-Burst-Polarität-Einstellung (nicht invertierter Symbol-Burst oder invertierter Symbol-Burst) zum Empfänger zu übertragen. Dieses Metadatenbit wird oft auf einer zusätzlichen Leitung übertragen, die von den Datenbahnen (in der Regel ebenfalls jeweils eine Leitung) des seriellen Datenbusses getrennt ist.
  • KURZZUSAMMENFASSUNG
  • Gemäß einem Aspekt umfasst ein PAM-Kommunikationsprozess ein Konfigurieren einer Schwellensummenbedingung, ein Erzeugen einer Summe von Übergangswerten zwischen Spannungsniveaus von ursprünglichen Symbolen, die gleichzeitig in einem gleichen Übertragungsintervall über mehrere Datenbahnen gesendet werden sollen, ein Vergleichen der Summe mit der Schwellensummenbedingung und als Reaktion darauf, dass die Summe kleiner (oder alternativ größer) als die Schwellensummenbedingung ist, ein Ersetzen der ursprünglichen Symbole durch neue Symbole auf der Grundlage eines voreingestellten Ersetzungsschemas.
  • Gemäß einem anderen Aspekt umfasst ein PAM-Kommunikationsprozess ein Erfassen von mehreren Symbolwerten, die gleichzeitig innerhalb desselben Zeitintervalls über mehrere Datenleitungen übertragen werden sollen, ein Codieren der Symbole in neue Symbole aus einem mittleren Bereich einer Abbildungsmatrix für eine ausgeglichene Übergangsenergie (Transition Energy (TE)) und ein Übertragen der neuen Symbole im gleichen Zeitintervall über die mehreren Datenleitungen.
  • Gemäß einem weiteren Aspekt umfasst ein PAM-Kommunikationsverfahren ein Empfangen von mehreren ursprünglichen Symbolen, die gleichzeitig innerhalb desselben Zeitintervalls über mehrere Datenleitungen zu übertragen sind, ein Bestimmen einer Anzahl der ursprünglichen Symbole, die mit der Erzeugung extremer Spannungsniveaus auf der Datenleitung korrespondieren, und als Ergebnis, ob die Anzahl der ursprünglichen Symbole eine voreingestellte Anzahl übersteigt, ein Setzen eines DBI-Bits und ein Ersetzen der ursprünglichen Symbole durch neue Symbole, wobei die neuen Symbole nicht mit der Erzeugung der extremen Spannungsniveaus korrespondieren. Die neuen Symbole werden gleichzeitig innerhalb desselben Zeitintervalls über die mehreren Datenleitungen übertragen.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder einen bestimmten Vorgang leicht zu identifizieren, beziehen sich die signifikantesten Ziffern eines Bezugszeichens auf die Figur, in der dieses Element zuerst eingeführt wird.
    • 1 stellt ein Datenkommunikationssystem 100 gemäß einer Ausführungsform dar.
    • 2 stellt eine Ausführungsform eines PAM-4-Sende-/Empfangsgeräts 200 dar.
    • 3 stellt eine Ausführungsform einer PAM-4-Kodierung 300 dar.
    • 4 stellt ein Beispiel für das Energieverbrauchsprofil 400 bei einem PAM-4-System dar.
    • 5 stellt eine Ausführungsform eines Kodierungsverfahrens 500 dar.
    • 6 stellt eine Routine 600 gemäß einer Ausführungsform dar.
    • 7 stellt eine Ausführungsform eines energiebasierten Kodierungsschemas 700 dar.
    • 8 stellt eine Routine 800 gemäß einer Ausführungsform dar.
    • 9 zeigt eine Routine 900 gemäß einer Ausführungsform dar.
    • 10 ist ein Blockdiagramm eines Computersystems 1000 einschließlich einer GPU, in dem Aspekte der Erfindung ausgestaltet oder ausgeführt sein können.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf 1 umfasst ein Datenkommunikationssystem 100 eine Übertragungsvorrichtung, wie z.B. einen Datenprozessor 102, der einen Verarbeitungskern 114, einen PAM-4-Symbolkodierer 104 und einen PAM-4-Sender 108 aufweist. Der Datenprozessor 102 kann in einigen Ausführungsformen eine Grafikverarbeitungseinheit (GPU), eine Zentraleinheit (CPU), ein System auf einem Chip (SoC) oder andere bekannte Datenverarbeitungsgeräte umfassen.
  • Der Datenprozessor 102 kommuniziert mit einem Empfangsgerät, wie z.B. einem Speicher 112 über einen Bus, wie z.B. einen Speicherbus 118. Ein PAM-4-Empfänger 110 und ein PAM-4-Symboldekodierer 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 zum und vom Verarbeitungskern 114 über einen mehrspurigen internen Datenbus 116 zu übertragen. Der PAM-4-Symbol-Kodierer 104 empfängt einen Datenburst zur Kodierung vom Verarbeitungskern 114 und führt auf diesem Burst eine PAM-4-Kodierung durch. Der PAM-4-Sender 108 überträgt den kodierten Burst über den Speicherbus 118 an den PAM-4-Empfänger 110. Der PAM-4-Empfänger 110 empfängt den kodierten Burst und sendet den kodierten Burst an den PAM-4-Symboldecoder 106, um den Burst zu dekodieren. Nach der Dekodierung wird der Burst an den Speicher 112 gesendet.
  • Dies ist eine vereinfachte Darstellung. In der Praxis gibt es typischerweise an beiden Enden des Speicherbusses 118 Kodierer und Dekodierer für das Schreiben in und Lesen aus dem Speicher 112.
  • 2 zeigt eine PAM-4-Sende-/Empfangsvorrichtung 200 für eine einzelne Datenbahn eines seriellen Datenbusses bei einer Ausführungsform. Die PAM-4- Sende-/Empfangsvorrichtung 200 umfasst einen Sender 202 eines niederwertigsten Bits, einen Sender 204 eines höchstwertigsten Bits, einen Empfänger 206 und eine Datenbahn 208. Die PAM-4- Sende-/Empfangsvorrichtung 200 verwendet den Sender 202 des niederwertigsten Bits und den Sender 204 des höchstwertigsten Bits, um ein Vier-Niveau-Symbol auf der Datenbahn 208 zu erzeugen. Dabei bezieht sich der Begriff „Symbol“ auf ein Spannungsniveau bzw. Spannungspegel, der von einem Leitungstreiber auf einer Datenbahn des seriellen Datenbusses erzeugt wird, wobei das Spannungsniveau den Wert eines oder mehrerer Datenbits darstellt. Der Begriff „Kodierung eines Symbols“ bedeutet also ein physikalisches Konfigurieren einer Leitungstreiberschaltung des seriellen Datenbusses, um die Spannung auf der Datenbahn auf einen bestimmten Wert zu bringen.
  • Wenn beispielsweise die zwei Bits der in das Symbol zu kodierenden Daten (1,1) sind, erzeugen der Ausgang des Senders 202 des niederwertigsten Bits und der Ausgang des Senders 204 des höchstwertigsten Bits zusammen eine Spannung von z.B. 1,2 V auf der Datenbahn 208 und der Strom auf der Datenbahn 208 beträgt z.B. 0 mA aufgrund des Pull-up-Transistors Rt an dem Empfänger 206 (beide Enden der Datenbahn 208 liegen auf demselben Potential). Wenn die zwei Bits der in das Symbol zu kodierenden Daten (1,0) sind, erzeugen der Ausgang des Senders 202 des niederwertigsten Bits und der Ausgang des Senders 204 des höchstwertigsten Bits zusammen eine Spannung von z.B. 1,0 V auf der Datenbahn 208 und der Strom auf der Datenbahn 208 beträgt z.B. 7 mA. Wenn die zwei Bits der in das Symbol zu kodierenden Daten (0,1) sind, erzeugen der Ausgang des Senders 202 des niederwertigsten Bits und der Ausgang des Senders 204 des höchstwertigsten Bits zusammen eine Spannung von z.B. 0,8 V auf der Datenbahn 208 und der Strom auf der Datenbahn 208 beträgt z.B. 11 mA. Wenn die zwei Bits der in das Symbol zu kodierenden Daten (0,0) sind, erzeugen der Ausgang des Senders 202 des niederwertigsten Bits und der Ausgang des Senders 204 des höchstwertigsten Bits zusammen eine Spannung von z.B. 0,6 V auf der Datenbahn 208 und der Strom auf der Datenbahn 208 beträgt z.B. 12,5 mA. Die 0,6 V können hier als die Basisübertragungsspannung Vb bezeichnet werden, von der die anderen Symbolspannungsniveaus abgezogen werden.
  • Der Symbolwert auf einer Datenbahn entspricht daher dem Stromverbrauch dieser Datenbahn während eines Datenbursts. Den Symbolwerten können daher Gewichte zugewiesen werden, die ihre Stromverbrauchskosten widerspiegeln. Beispielsweise kann dem Symbol für das Bitpaar (1,1) ein Gewicht von 0 zugewiesen werden; dem Symbol für das Bitpaar (1,0) kann ein Gewicht von 1 zugewiesen werden; dem Symbol für das Bitpaar (0,1) kann ein Gewicht von 2 zugewiesen werden; und dem Symbol für das Bitpaar (0,0) kann ein Gewicht von 3 zugewiesen werden.
  • In diesem Beispiel kann einem Datenburst auf einem seriellen Datenbus mit acht Spuren und PAM-4-Kodierung ein Gesamtgewicht in einem Bereich von 0 bis 24 zugewiesen werden, was einem Stromverbrauchsbereich von z.B. 0 bis 100 mA entspricht. Das Gesamtgewicht für den Datenburst wäre 0, wenn alle Symbole im Datenburst jeweils das Bitpaar (1,1) kodiert haben, und das Gesamtgewicht für den Datenburst wäre 24, wenn alle Symbole im Datenburst jeweils das Bitpaar (0,0) kodiert haben. Datenbursts, die nur 0 enthalten, verbrauchen den meisten Strom und sind daher vom Standpunkt des Stromverbrauchs aus gesehen am teuersten.
  • Mit Bezug zu 3 kodiert eine PAM-4-Kodierung jeweils zwei Bits, um diese auf einer Datenbahn eines seriellen Datenbusses als PAM-4-Symbol zu übertragen. Jedes der vier möglichen Symbole entspricht einem Spannungsniveau und einem Stromniveau auf der Datenleitung. In 3 sind die vier Symbole, die den Bitpaaren <00>, <01>, <10> und <11> entsprechen, mit ihrem relativen Spannungsniveau vom Symbol mit der niedrigsten Spannung, das als Basiswert verwendet wird, gekennzeichnet. Es gibt vier mögliche Spannungsniveaus in einem PAM-4-Symbol, daher gibt es vier mögliche Spannungsdifferenzen zwischen zwei Symbolen. Sowohl das Spannungsniveau als auch die Spannungsdifferenz eines Symbols (relativ zu einem anderen Symbol oder vom Basiswert aus) können als 0ΔV, 1ΔV, 2ΔV und 3ΔV dargestellt werden. Im Allgemeinen erzeugen Spannungsdifferenzen von 3ΔV zwischen Symbolen auf einer Datenbahn mehr Rauschen auf dem seriellen Datenbus als niedrigere Spannungsdifferenzen.
  • Unter Bezugnahme auf das Energieverbrauchsprofil 400 in 4 besteht nun eine nichtlineare Beziehung zwischen dem Stromverbrauch der Datenbahnen und der auf den Datenbahnen in einigen PAM-4-Kommunikationssystemen verwendeten PAM-4-Symbolfolge. Das dargestellte Energieverbrauchsprofil 400 bezieht sich auf mögliche Kombinationen von Symbolen und 1 Bit an DBI-Daten, die in einem Burst (im gleichen Taktintervall) über einen seriellen Datenbus mit vier Datenbahnen unter Verwendung einer 1-Bit-DBI-Bahn gesendet werden. Das Energieverbrauchsprofil 400 ist nach steigendem Stromverbrauch sortiert. Die relative Änderung des Stromverbrauchs, die sich aus einer Änderung um 1ΔV zwischen den Bursts ergibt, ist am linken Ende des Energieverbrauchsprofils 400 viel höher als am rechten Ende. Zum Beispiel führt eine Änderung von [3ΔV, 3ΔV, 3ΔV, 3ΔV, 1ΔV] zu [2ΔV, 3ΔV, 3ΔV, 3ΔV, 1ΔV] (linkes Ende des Energieverbrauchsprofils 400) zu einer Änderung des Stromverbrauchs um 7 mA, während eine Änderung von [0ΔV, 0AV, 0AV, 0AV, 0ΔV] zu [1ΔV, 0AV, 0AV, 0AV, 0ΔV] (rechtes Ende des Energieverbrauchsprofils 400) nur zu einer Änderung des Stromverbrauchs um 1,5 mA führt.
  • Die vier Symbole, die auf den vier Datenbahnen in jedem Burst übertragen werden, entsprechen acht Bits tatsächlicher Daten (zwei Bits pro Symbol) und können daher zusammen als ein 8-Bit-Codewort dargestellt werden. Das Codewort muss nicht die tatsächlich übertragenen Bits enthalten - jedes 8-Bit-Codewort kann verwendet werden, um den Wert der acht Datenbits in einem Burst darzustellen. Da mit jedem Burst auch ein Bit von Metadaten (das DBI-Bit) verfügbar ist, können zwei Codewort-Tabellen verwendet werden, und das Codewort kann aus der einen oder der anderen Tabelle so ausgewählt werden, dass (a) Änderungen des Stromverbrauchs (und damit das Rauschen) auf dem seriellen Datenbus verringert werden oder (b) der Gesamtenergieverbrauch auf dem seriellen Datenbus reduziert wird. Das DBI-Bit kann verwendet werden, um zu erkennen, wann die Symbolersetzung für einen bestimmten Burst verwendet wird.
  • Das Metadaten-Bit kann beispielsweise auf einen bestimmten Wert (z. B. „1") gesetzt werden, wenn die Summe der ΔV-Änderungen zwischen einem aktuellen Burst und dem vorherigen weniger als die Hälfte einer maximal möglichen ΔV-Änderung beträgt, die zwischen Bursts auftreten könnte. Diese Ausführungsform wählt Code-Wörter aus, um die acht Datenbits im aktuellen Burst aus der linken Hälfte des Energieverbrauchsprofils 400 darzustellen. Eine andere Ausführungsform wählt möglicherweise Codewörter aus, die Werte aus der rechten Hälfte des Energieverbrauchsprofils 400 darstellen, wenn die Summe von ΔV größer als die Hälfte der maximal möglichen ΔV-Summe ist. Diese beiden Techniken haben jeweils Vor- und Nachteile. Die Auswahl von Codewörtern aus der linken Hälfte des Energieverbrauchsprofils 400 führt zu: i) einer Verringerung des Gesamtenergieverbrauchs auf dem seriellen Datenbus, aber ii) einer größeren maximal möglichen Änderung des Stromverbrauchs zwischen den Bursts. Die Auswahl von Codewörtern aus der rechten Hälfte des Energieverbrauchsprofils 400 führt zu: i) einer Verringerung der maximal möglichen Änderung des Stromverbrauchs, aber, ii) einer Erhöhung des Gesamtenergieverbrauchs. In beiden Fällen wird die maximale Spannungsdifferenzänderung über die vier Datenbahnen zwischen den Bursts um 50% reduziert.
  • Um aus beiden Mechanismen Nutzen zu ziehen, kann aus einem mittleren Teil der Werte im Energieverbrauchsprofil 400 eine Codewort-Tabelle gebildet werden. Es gibt viele Möglichkeiten, auf diese Weise eine Codeworttabelle zu bilden. Ein Beispiel verwendet eine Codeworttabelle, die durch eine 8-Bit-Adresse festgelegt ist (z.B. die unkodierten Datenbits zur Übertragung auf den vier Datenbahnen des seriellen Datenbusses), in der jeder Eintrag der Codeworttabelle einen 9-Bit-Wert (die acht Datenbits und ein DBI-Bit) aus einem mittleren Bereich des Energieverbrauchsprofils 400 umfasst. Eine Codeworttabelle oder ein „Codebuch“ mit dieser Eigenschaft wird hier als eine Abbildungsmatrix für bezüglich Energie ausgleichende Niveaus bezeichnet. Techniken dieser Art können die maximalen Spannungsdifferenzen zwischen den Bursts auf dem seriellen Datenbus um 50 % und die maximalen Stromverbrauchsdifferenzen um 70 % bei einem ähnlichen durchschnittlichen Strom im Vergleich zu herkömmlichen PAM-4-Kommunikationen reduzieren. Ein anderer Ansatz ist die Auswahl von Codewörtern, die die Verwendung extremer PAM-Spannungsniveaus auf den Datenbahnen reduzieren (z.B. Symbolspannungsniveaus von 0ΔV und 3ΔV), wie weiter unten erläutert wird.
  • Mit Bezug zu 5 entscheidet eine Ausführungsform eines Kodierungsverfahrens 500 für jedes Burst-Intervall 506, ob ein ursprünglicher Symbol-Burst 502 durch einen per Codewort umgesetzten Symbol-Burst 504 ersetzt werden soll. Für jedes Burst-Intervall 506 wird eine Summe von Spannungsdifferenzen über die mehreren Datenbahnen (hier vier Datenbahnen) gebildet, um eine Summe von Übergangswerten zu bestimmen. Wenn die Summe kleiner als die Hälfte der maximal möglichen Summe der Spannungsdifferenzen ist, die in einem Zeitintervall auftreten können (hier, 12ΔV/2 = 6ΔV), wird eine Codewort-Ersetzung bei dem ursprünglichen Symbol-Burst 502 durchgeführt und das Steuerbit zur Auswahl der Ersetzung für das Burst-Intervall 506 gesetzt (z.B. auf 1ΔV von 0ΔV). In einem anderen Modus kann eine Codewort-Ersetzung erfolgen, wenn die Summe größer als die Hälfte der maximal möglichen Summe ist.
  • Das Kodierungsverfahren 500 reduziert somit die maximale Spannungsumschaltung um 50% mit nur einem Bit an Metadaten, was der Wirkung bei der konventionellen DBI auf PAM-2 entspricht. Während das Kodierungsverfahren 500 eine vernünftige Reduzierung der maximalen Spannungsumschaltung bietet, reduziert es die maximale Stromänderung nur um 25%, was deutlich unter dem liegt, was mit PAM-2 erreicht wird. Dies liegt an der nichtlinearen Charakteristik des Verhältnisses zwischen Spannungsniveaus und Stromverbrauch auf einer typischen PAM-4-Datenbahn.
  • Das Kodierungsverfahren 500 wählt effektiv Kodierungen aus der linken Hälfte des in 4 dargestellten Energieverbrauchsprofils 400 aus. Alternativ dazu kann das Kodierungsverfahren 500 aus der rechten Hälfte des Energieverbrauchsprofils 400 wählen, wenn die Summe von ΔV für den Burst größer als die Hälfte des maximal möglichen ΔV ist.
  • Unter Bezugnahme auf 6 konfiguriert eine verallgemeinerte Routine 600 für niveaubasierte DBI eine Schwellensummenbedingung (Block 602). Als nächstes erzeugt die Routine 600 im Block 604 eine Summe von Übergangswerten (Spannungsdifferenzen) zwischen den Spannungsniveaus der ursprünglichen Symbole, die gleichzeitig in demselben Übertragungsintervall über mehrere Datenbahnen gesendet werden sollen. Darüber hinaus vergleicht die Routine 600 die Summe mit der Schwellensummenbedingung (Block 606). Wenn die Summe kleiner als die Schwellensummenbedingung ist, ersetzt die Routine 600 die ursprünglichen Symbole auf der Grundlage eines voreingestellten Ersetzungsschemas durch neue Symbole (Block 608).
  • In einigen Ausführungsformen sind die neuen Symbole invertierte Werte der ursprünglichen Symbole. Die Schwellensummenbedingung kann die Hälfte eines maximal möglichen Wertes für die Summe oder ein anderer voreingestellter Schwellenwertanteil des Maximums sein. Darüber hinaus kann die Routine 600 einen oder mehrere Bitwerte auf einer DBI-Leitung setzen, die anzeigen, dass die neuen Symbole die ursprünglichen Symbole ersetzen.
  • Alternativ dazu ersetzt die Routine 600 als Reaktion auf eine Summe, die größer ist als die Schwellensummenbedingung, neue Symbole für die ursprünglichen Symbole auf der Grundlage eines voreingestellten Ersetzungsschemas (Block 610).
  • Unter Bezugnahme auf 7 bestimmt eine Ausführungsform eines energiebasierten Kodierungsschemas 700, ob für jedes Burst-Intervall 706 ein ursprünglicher Symbol-Burst 702 durch einen kodierten Symbol-Burst 704 ausgetauscht wird. Für jedes Burst-Intervall 706 wird bestimmt, ob es dominante Werte gibt (d.h. Symbole, die bei einem extremen Spannungsniveau kodiert werden), wobei entweder 0ΔV oder 3ΔV (oder ein anderes extremes Spannungsniveau, für andere PAM-Schemata als PAM-4) mehr als einmal oder mehr als eine andere voreingestellte Anzahl von Malen auftritt. Wenn die Ersetzungsbedingung erfüllt ist, wird jedes Symbol durch ein Codewort-Symbol ersetzt, das den Nachbarwert des ursprünglichen Symbols darstellt (0ΔV <-> 1ΔV und 3ΔV <-> 2ΔV), und auf der DBI-Leitung wird ein Wert gesetzt, der anzeigt, dass die Ersetzungen in dem Burst vorgenommen wurden. Effektiv invertiert dieses Ersetzungsschema das niederwertigste Bit der 2-Bits der Daten der ursprünglichen Symbole, indem Extremwerte mit ihren benachbarten Werten ersetzt werden. Dieses Schema funktioniert, indem die Anzahl der Bitpaare in einem Burst gezählt wird, die zu extremen Symbolspannungswerten kodiert werden (z.B. <00> oder <11> für PAM-4). Wenn z.B. die Anzahl der Extremwerte die Hälfte der Anzahl der Symbole in der Gruppe übersteigt, kann das Metadaten-Inversionsbit gesetzt werden und die 00-Werte werden zu 01, die 01-Werte werden zu 00, die 11-Werte werden zu 10 und die 10-Werte werden zu 11. Eine Version dieses Schemas, die zwei Metadatenbits pro Burst-Intervall verwendet (z.B. wenn jeder DBI-Wert in einem Burst-Intervall ein vierstufiges PAM-4-Symbol ist), kann 00 und 01 (das Beispiel für PAM-4) bedingt vertauschen, wenn die Anzahl der 00-Signale die Anzahl der 01-Signale übersteigt, und 11 und 10 bedingt vertauschen, wenn die Anzahl der 11-Signale die Anzahl der 10-Signale übersteigt.
  • Eine weitere Ausführungsform des energiebasierten Kodierungsschemas 700 macht die Ersetzungen mit Codewörtern, die einen mittleren Teil der Werte im Energieverbrauchsprofil 400 darstellen.
  • Unter Bezugnahme auf 8 empfängt eine energiebasierte DBI-Routine 800 mehrere Symbole, die gleichzeitig innerhalb desselben Zeitintervalls über mehrere Datenbahnen übertragen werden sollen (Block 802). Die Routine 800 ersetzt die Symbole durch neue Symbole aus einem mittleren Bereich einer Abbildungsmatrix für bezüglich Energie ausgleichende Niveaus (Block 804). Die Routine 800 überträgt die neuen Symbole im selben Zeitintervall über mehrere Datenbahnen (Block 806).
  • Unter Bezugnahme auf 9 empfängt eine energiebasierte DBI-Routine 900 mehrere ursprüngliche Symbole, die innerhalb desselben Zeitintervalls gleichzeitig über mehrere Datenbahnen übertragen werden sollen (Block 902). Die Routine 900 bestimmt eine Anzahl der ursprünglichen Symbole, die der Erzeugung extremer Spannungsniveaus auf der Datenbahn entsprechen (Block 904). Wenn die Anzahl der ursprünglichen Symbole eine voreingestellte Anzahl überschreitet, wird ein DBI-Bit gesetzt und die neuen Symbole ersetzen die ursprünglichen Symbole, wobei die neuen Symbole nicht mit der Erzeugung der extremen Spannungsniveaus korrespondieren (Block 906). Die Routine 900 überträgt die neuen Symbole gleichzeitig innerhalb desselben Zeitintervalls über die verschiedenen Datenbahnen (Block 908). In einigen PAM-4-Ausführungen entsprechen die ursprünglichen Symbole den Spannungsniveaus von 0ΔV, 1ΔV, 2ΔV oder 3ΔV, und somit bestimmt die Routine 900 eine Anzahl der ursprünglichen Symbole in einem Burst, die entweder 0ΔV oder 3ΔV entsprechen.
  • Die Daten für die ursprünglichen Symbole können ein höchstwertigstes Bit und ein niederwertigstes Bit umfassen, und das Ersetzen der ursprünglichen Symbole durch die neuen Symbole im Zeitintervall kann das Austauschen des niederwertigsten Bits der Daten für die ursprünglichen Symbole umfassen. Alternativ dazu kann das Ersetzen der ursprünglichen Symbole durch die neuen Symbole im Zeitintervall das Austauschen des höchstwertigsten Bits der Daten für die ursprünglichen Symbole umfassen.
  • 10 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 1000, in dem ein oder mehrere Aspekte der Erfindung implementiert werden können. Das Rechensystem 1000 umfasst einen Systemdatenbus 1036, eine CPU 1026, Eingabegeräte 1030, einen Systemspeicher 1004, ein Grafikverarbeitungssystem 1002 und Anzeigegeräte 1028. In alternativen Ausführungsformen können die CPU 1026, Teile des Grafikverarbeitungssystems 1002, der Systemdatenbus 1036 oder eine beliebige Kombination davon in einer einzigen Verarbeitungseinheit integriert sein. Darüber hinaus kann die Funktionalität des Grafikverarbeitungssystems 1002 in einem Chipsatz oder in einer anderen Art von Sonderverarbeitungseinheit oder Co-Prozessor enthalten sein.
  • Wie dargestellt ist, verbindet der Systemdatenbus 1036 die CPU 1026, die Eingabegeräte 1030, den Systemspeicher 1004 und das Grafikverarbeitungssystem 1002. In alternativen Ausführungsformen kann der Systemspeicher 1004 direkt mit der CPU 1026 verbunden sein. Die CPU 1026 empfängt Benutzereingaben von den Eingabegeräten 1030, führt im Systemspeicher 1004 gespeicherte Programmbefehle aus, arbeitet mit den im Systemspeicher 1004 gespeicherten Daten und konfiguriert das Grafikverarbeitungssystem 1002 zur Ausführung bestimmter Aufgaben in der Grafik-Pipeline. Der Systemspeicher 1004 enthält in der Regel einen dynamischen Direktzugriffsspeicher (DRAM), der zur Speicherung von Programmierbefehlen und Daten für die Verarbeitung durch die CPU 1026 und das Grafikverarbeitungssystem 1002 verwendet wird. Das Grafikverarbeitungssystem 1002 empfängt die von der CPU 1026 übertragenen Befehle und verarbeitet die Befehle, um verschiedene Operationen innerhalb des Computersystems 1000 durchzuführen.
  • Wie ebenfalls dargestellt ist, enthält der Systemspeicher 1004 ein Anwendungsprogramm 1012, eine API 1018 (Application Programming Interface) und einen Grafikverarbeitungseinheits-Treiber 1022 (GPU-Treiber). Das Anwendungsprogramm 1012 generiert Aufrufe an die API 1018, um die gewünschten Ergebnisse zu erzielen. Beispielsweise überträgt das Anwendungsprogramm 1012 auch Programme an die API 1018, um Shading-Operationen, Operationen der künstlichen Intelligenz oder Graphik-Renderingoperationen durchzuführen. Die Funktionalität der API 1018 kann normalerweise im Grafikverarbeitungseinheitentreiber 1022 implementiert werden. Der Grafikverarbeitungseinheits-Treiber 1022 ist so konfiguriert, dass er die High-Level-Shadingprogramme in Maschinencode übersetzt.
  • Das Grafikverarbeitungssystem 1002 umfasst eine GPU 1010 (Grafikverarbeitungseinheit), einen On-Chip-GPU-Speicher 1016, einen On-Chip-GPU-Datenbus 1032, einen lokalen GPU-Speicher 1006 und einen GPU-Datenbus 1034. Die GPU 1010 ist so konfiguriert, dass sie mit dem On-Chip-GPU-Speicher 1016 über den On-Chip-GPU-Datenbus 1032 und mit dem lokalen GPU-Speicher 1006 über den GPU-Datenbus 1034 kommuniziert. Der GPU-Datenbus 1034 kann eine oder mehrere der hier beschriebenen Kodierungstechniken verwenden.
  • Der Grafikprozessor 1010 kann von der CPU 1026 übertragene Befehle empfangen und die Ergebnisse im lokalen Speicher 1006 des Grafikprozessors speichern. Wenn es sich bei den Befehlen um Grafikbefehle handelt, kann der Grafikprozessor 1010 anschließend bestimmte im lokalen Speicher 1006 des Grafikprozessors gespeicherte Grafikbilder auf den Anzeigegeräten 1028 anzeigen.
  • Der Grafikprozessor 1010 enthält einen oder mehrere Logikblöcke 1014. Der Betrieb der Logikblöcke 1014 kann Ausführungsformen der hier beschriebenen Kodierungsschemata implementieren. Die logischen Blöcke 1014 können als Befehle auf den Grafikprozessor geladen werden oder als Merkmale der Befehlssatzarchitektur in Schaltkreisen implementiert werden, oder eine Kombination aus beidem.
  • Der Grafikprozessor 1010 kann mit einer beliebigen Menge an On-Chip-GPU-Speicher 1016 und lokalem GPU-Speicher 1006, auch ohne diesen, ausgestattet sein und kann On-Chip-GPU-Speicher 1016, lokalen GPU-Speicher 1006 und Systemspeicher 1004 in jeder Kombination für Speicheroperationen verwenden. Die Daten-/Befehlsbusse zwischen diesen Speichern und dem Grafikprozessor 1010 können eine oder mehrere der hier beschriebenen Kodierungstechniken verwenden.
  • Der On-Chip-GPU-Speicher 1016 ist so konfiguriert, dass er die GPU-Programmierung 1020 und die On-Chip-Puffer 1024 umfasst. Die GPU-Programmierung 1020 kann vom Grafikverarbeitungseinheits-Treiber 1022 über den Systemdatenbus 1036 an den On-Chip-GPU-Speicher 1016 übertragen werden. Der Systemdatenbus 1036 kann eine oder mehrere der hier beschriebenen Kodierungstechniken verwenden.
  • Als Beispiel kann die GPU-Programmierung 1020 ein Maschinencode-Vertex-Shadingprogramm, ein Maschinencode-Geometrie-Shadingprogramm, ein Maschinencode-Fragment-Shadingprogramm, ein Programm zur künstlichen Intelligenz oder eine beliebige Anzahl von Variationen von jedem dieser Programme aufweisen. Die On-Chip-Puffer 1024 werden normalerweise zur Speicherung von Daten verwendet, die einen schnellen Zugriff erfordern, um die Latenz solcher Operationen zu reduzieren.
  • Der GPU-Lokalspeicher 1006 enthält in der Regel einen preiswerteren dynamischen Speicher mit wahlfreiem Zugriff (DRAM) und wird auch zur Speicherung von Daten und Programmierung verwendet, die von der GPU 1010 emuliert werden. Wie gezeigt, enthält der GPU-Lokalspeicher 1006 einen Bildpuffer 1008. Der Bildpuffer 1008 speichert Daten für mindestens eine zweidimensionale Fläche, die zur Ansteuerung der Anzeigegeräte 1028 verwendet werden kann. Darüber hinaus kann der Bildspeicher 1008 mehr als eine zweidimensionale Fläche enthalten, so dass der Grafikprozessor 1010 auf eine zweidimensionale Fläche rendern kann, während eine zweite zweidimensionale Fläche zur Steuerung der Anzeigegeräte 1028 verwendet wird.
  • Die Anzeigegeräte 1028 sind ein oder mehrere Ausgabegeräte, die in der Lage sind, ein visuelles Bild entsprechend einem Eingangsdatensignal auszugeben. Ein Anzeigegerät kann beispielsweise mit einem Kathodenstrahlröhrenmonitor (CRT), einer Flüssigkristallanzeige oder einem anderen geeigneten Anzeigesystem aufgebaut werden. Die Eingangsdatensignale für die Anzeigegeräte 1028 werden normalerweise durch Abtasten des Inhalts eines oder mehrerer Bilder von Bilddaten erzeugt, die im Bildpuffer 1008 gespeichert sind.
  • Eine asymmetrische DBI verwendet ein anderes DBI-Schema für beide Seiten einer Verbindung. Beispielsweise kann das nicht tabellenbasierte energiebasierte DBI-Schema von einer GPU verwendet werden, wenn sie Daten überträgt, während das niveaubasierte DBI-Schema vom Speicher bei der Datenübertragung verwendet werden könnte. Im Allgemeinen ist der Speicher vom Typ GDDR (zum Beispiel) weniger empfindlich gegenüber Stromversorgungsstörungen als die GPU. Daher kann es wünschenswert sein, einen einfacheren DBI-Mechanismus im GDDR zu implementieren, während ein anspruchsvolleres Schema in der GPU unterstützt wird. Jede Seite muss lediglich wissen, wie die Daten vom Sender zu dekodieren sind.
  • Bei Speicher-Controllern, die keine DBI implementieren, kann, wenn der Speicher Metadatenspeicher (z.B. für Fehlerkorrekturcode (ECC) oder andere Zwecke) zur Verfügung stellt, die DBI nur von der GPU oder einem anderen Absender gebildet werden, und die DBI-Metadaten können im Speicher selbst gespeichert werden. Der Speicher-Controller kann den DBI-Mechanismus möglicherweise nicht berechnen oder verstehen. Eine solche so genannte „Memory-Unaware-DBI“ kann verwendet werden, wenn ein DBI-Decoder für die Implementierung im Speicher-Controller zu komplex ist.
  • Eine hybride DBI kann verwendet werden, wenn verschiedene Szenarien von unterschiedlichen DBI-Schemata profitieren würden. Ein Laptop oder Smartphone, das mit Akkustrom betrieben wird, kann beispielsweise die Speicherschnittstelle mit einer niedrigeren Datenrate betreiben und so von einem DBI-Schema profitieren, das den durchschnittlichen Stromverbrauch minimiert. Dasselbe Gerät, das an eine Ladestation angeschlossen ist, kann mit höheren Frequenzen betrieben werden und von einem DBI-Mechanismus profitieren, der das Versorgungsstromrauschen minimiert. Das zu einem bestimmten Zeitpunkt vom Gerät verwendete DBI-Schema kann mit einem Konfigurationsregister oder -signal geändert werden, das auf die Stromquelle des Geräts reagiert. Bei einer tabellenbasierten Kodierungs- und/oder Dekodierungsimplementierung kann die Technik durch eine dynamische Änderung der Werte in der Tabelle angepasst werden. Bei schwellenwertbasierten DBI-Mechanismen kann die Regel durch eine Konfiguration angepasst werden, ob eine Ersetzung stattfindet, wenn etwas größer oder kleiner als ein konfigurierter Schwellenwert ist, und/oder durch die Anpassung des/der konfigurierten Schwellenwerts/-werte. Die Regel kann auch durch eine Auswahl von verschiedenen DBI-Encodern angepasst werden. Die Regel kann auf der Grundlage des Wunsches nach Optimierung einer oder mehrerer Geräteeigenschaften, wie z.B. Stromverbrauch oder Rauschunterdrückung, ausgewählt werden. Die Regel kann beispielsweise auf der Grundlage einer oder mehrerer der folgenden Eigenschaften ausgewählt werden: Unterschiede in den Zuverlässigkeitsanforderungen für Anwendungen oder Anwendungsfälle, Unterschiede in den Stromverbrauchsanforderungen für verschiedene Anwendungen oder Anwendungsfälle und Unterschiede in den gemessenen Fehlerraten oder dem Versorgungstromrauschen. Die hybride DBI kann mit der asymmetrischen DBI kombiniert werden, bei der die Regel unabhängig für den Sender an jedem Ende einer Schnittstelle ausgewählt werden kann. Eine hybride DBI kann mit einer Memory-Unaware-DBI kombiniert werden, wenn zusätzliche Metadaten, die mit den Daten gespeichert werden, die zur Kodierung der Daten verwendete Regel angeben.
  • Die offenbarten DBI-Schemata können über PAM-4 hinaus angewandt werden. Die Herausforderungen, die sich aus der Übertragung mehrerer Symbole und ihrer nichtlinearen Stromcharakteristik ergeben, bestehen auch für PAM-N (z.B. PAM-8, PAM-16 usw.). Daher können alle hier vorgestellten Mechanismen auf eine PAM-N-Ein-/Ausgabe-Schnittstelle angewendet werden. Die Anwendung einer niveaubasierten DBI auf die PAM-8-Signalisierung führt beispielsweise zu einer Änderung des Schwellenwerts für den Austausch von Niveaus für die Daten und verwendet ein Ersetzungsschema wie 7dV <--> 0dV, 6dV <--> IdV, usw.
  • „Schaltungen“ bezieht sich auf elektrische Schaltungen mit mindestens einem diskreten elektrischen Schaltkreis, elektrische Schaltungen mit mindestens einer integrierten Schaltung, elektrische Schaltungen mit mindestens einer anwendungsspezifischen integrierten Schaltung, Schaltungen, die eine durch ein Computerprogramm konfigurierte Mehrzweck-Computervorrichtung bilden (z.B, einen Allzweckrechner, der durch ein Computerprogramm konfiguriert ist, das zumindest teilweise die hier beschriebenen Verfahren oder Vorrichtungen ausführt, oder einen Mikroprozessor, der durch ein Computerprogramm konfiguriert ist, das zumindest teilweise die hier beschriebenen Verfahren oder Vorrichtungen ausführt), eine Schaltung, die eine Speichervorrichtung bildet (z.B. Formen von Speicher mit wahlfreiem Zugriff), oder eine Schaltung, die eine Kommunikationsvorrichtung bildet (z.B. ein Modem, eine Kommunikationsvermittlung oder eine optisch-elektrische Einrichtung).
  • „Firmware“ bezieht sich auf eine Software-Logik, die als von einem Prozessor ausführbare Anweisungen in schreibgeschützten Speichern oder Medien gespeichert ist.
  • „Hardware“ bezieht sich auf Logik, die als eine analoge oder digitale Schaltung ausgeführt ist.
  • „Logik“ bezieht sich auf maschinelle Speicherschaltungen, nichtflüchtige maschinenlesbare Medien und/oder Schaltungen, die durch ihre Material- und/oder Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) umfassen, die zur Beeinflussung des Betriebs eines Geräts angewendet werden können. Magnetische Medien, elektronische Schaltkreise, elektrische und optische Speicher (sowohl flüchtige als auch nicht flüchtige) und Firmware sind Beispiele für eine Logik. Die Logik schließt reine Signale oder Software an sich spezifisch aus (schließt jedoch nicht aus, dass Maschinenspeicher Software enthalten und dadurch Konfigurationen von Materie bilden).
  • „Software“ bezieht sich auf eine Logik, die als von einem Prozessor ausführbare Befehle in einem Maschinenspeicher implementiert ist (z.B. flüchtige oder nichtflüchtige Lese-/Schreibspeicher oder Medien).
  • Der Fachmann versteht, dass die Logik auf ein oder mehrere Geräte oder Komponenten verteilt sein kann und/oder aus Kombinationen von Speicher, Medien, Verarbeitungsschaltungen und Controllern, anderen Schaltungen usw. bestehen kann. Im Interesse der Klarheit und Korrektheit ist die Logik daher in Zeichnungen von Geräten und Systemen nicht immer deutlich dargestellt, obwohl sie inhärent vorhanden ist. Die hier beschriebenen Techniken und Verfahren können mittels einer in einem oder mehreren Rechengeräten verteilten Logik implementiert werden. Die besondere Verteilung und Auswahl der Logik ist je nach Implementierung unterschiedlich.
  • Innerhalb dieser Offenbarung können verschiedene Einheiten (die unterschiedlich als „Einheiten“, „Schaltkreise“, andere Komponenten usw. bezeichnet werden können) als „ausgestaltet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen durchzuführen. Diese Formulierung - [Einheit], die ausgestaltet ist, [um eine oder mehrere Aufgaben zu erfüllen] - wird hier verwendet, um sich auf eine Struktur (d.h. etwas Physisches, wie z.B. eine elektronische Schaltung) zu beziehen. Genauer gesagt wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, dass sie die eine oder mehrere Aufgaben während des Betriebs ausführt. Man kann sagen, dass eine Struktur so „ausgestaltet“ ist, dass sie eine bestimmte Aufgabe erfüllt, auch wenn die Struktur derzeit nicht in Betrieb ist. Eine „Kreditverteilungsschaltung, die so ausgestaltet ist, dass sie Kredite an eine Vielzahl von Prozessorkernen verteilt“, soll z.B. eine integrierte Schaltung abdecken, die über eine Schaltung verfügt, die diese Funktion während des Betriebs ausführt, selbst wenn die betreffende integrierte Schaltung derzeit nicht benutzt wird (z.B. wenn keine Stromversorgung angeschlossen ist). Somit bezieht sich eine Einheit, die als „ausgestaltet“ beschrieben oder rezitiert wird, um eine Aufgabe auszuführen, auf etwas Physikalisches, wie z.B. ein Gerät, eine Schaltung, einen Speicher, der Programmanweisungen speichert, die zur Durchführung der Aufgabe ausgeführt werden können, usw. Dieser Ausdruck wird hier nicht verwendet, um sich auf etwas Immaterielles zu beziehen.
  • Der Begriff „ausgestaltet, um“ soll nicht „konfigurierbar für“ bedeuten. Ein nicht programmierter FPGA würde beispielsweise nicht als „ausgestaltet“ angesehen werden, um eine bestimmte Funktion auszuführen, obwohl er „konfigurierbar“ sein kann, um diese Funktion nach der Programmierung auszuführen.
  • Das Beschreiben in den beigefügten Ansprüchen, dass eine Struktur „ausgestaltet ist, um“ eine oder mehrere Aufgaben auszuführen, ist ausdrücklich nicht dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das „Mittel für“ [die Ausführung einer Funktion] Konstrukt enthalten, nicht unter 35 U.S.C. § 112(f) ausgelegt werden.
  • Der Begriff „basierend“ wird hier verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt die Möglichkeit nicht aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, dass eine Bestimmung ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie auf anderen, nicht bestimmten Faktoren basieren kann. Betrachtet man die Formulierung „Bestimmen von A basierend auf B“. Dieser Satz legt fest, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie z.B. C, basieren kann. Dieser Satz soll auch eine Ausgestaltung abdecken, in der A ausschließlich auf der Grundlage von B bestimmt wird.
  • Wie hier verwendet, beschreibt der Ausdruck „abhängig von“ einen oder mehrere Faktoren, die eine Wirkung auslösen. Dieser Ausdruck schließt die Möglichkeit nicht aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die angegebenen Faktoren sowie auf andere, nicht angegebene Faktoren auftreten. Betrachtet man die Formulierung „A ist abhängig von B“. Dieser Satz legt fest, dass B ein Faktor ist, der die Durchführung von A auslöst. Dieser Satz schließt nicht aus, dass die Durchführung von A auch abhängig von einem anderen Faktor, wie z.B. C, erfolgen kann.
  • Wie es hier verwendet wird, werden die Begriffe „erste“, „zweite“ usw. als Bezeichnungen für Substantive verwendet, denen sie vorausgehen, und implizieren keine Art von Ordnung (z.B. räumlich, zeitlich, logisch usw.), sofern es nicht anders angegeben ist. In einer Registerdatei mit acht Registern können sich die Begriffe „erstes Register“ und „zweites Register“ beispielsweise auf zwei beliebige der acht Register beziehen, und nicht nur auf die logischen Register 0 und 1.
  • Wenn der Begriff „oder“ in den Ansprüchen verwendet wird, wird der Begriff „oder“ als ein einschließendes oder und nicht als ein ausschließendes oder verwendet. Zum Beispiel bedeutet der Ausdruck „mindestens eines von x, y oder z“ eines von x, y und z sowie eine beliebige Kombination davon.

Claims (21)

  1. Verfahren umfassend: Konfigurieren einer Schwellensummenbedingung; Erzeugen einer Summe von Übergangswerten zwischen Spannungsniveaus von ursprünglichen Symbolen, welche in demselben Übertragungsintervall über mehrere Datenbahnen eines seriellen Datenbusses gleichzeitig zu senden sind; Vergleichen der Summe mit der Schwellensummenbedingung; und abhängig davon, ob die Summe die Schwellensummenbedingung einhält, Ersetzen der ursprünglichen Symbole durch neue Symbole abhängig von einem voreingestellten Ersetzungsschema.
  2. Verfahren nach Anspruch 1, wobei die neuen Symbole invertierte Werte der ursprünglichen Symbole sind.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Schwellensummenbedingung der Hälfte eines maximal möglichen Wertes für die Summe für die mehreren Datenbahnen entspricht.
  4. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend ein Einstellen eines Bitwertes auf einer Datenbusinvertierungs- (DBI-) Leitung, welches anzeigt, dass die ursprünglichen Symbole durch die neuen Symbole ersetzt wurden.
  5. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend Erzeugen der neuen Symbole aus einem mittleren Bereich einer Abbildungsmatrix für bezüglich Energie ausgleichende Niveaus.
  6. Verfahren umfassend: Empfangen von mehreren ursprünglichen Symbolen, welche gleichzeitig in demselben Zeitintervall über mehrere Datenbahnen eines seriellen Datenbusses zu übertragen sind; Bestimmen einer Anzahl der ursprünglichen Symbole, welche mit der Erzeugung von extremen Spannungsniveaus auf der Datenbahn korrespondieren; wenn die Anzahl der ursprünglichen Symbole eine voreingestellte Anzahl übersteigt, Einstellen eines DBI-Leitungswertes und Ersetzen der ursprünglichen Symbole durch die neuen Symbole, wobei die neuen Symbole nicht mit der Erzeugung der extremen Spannungsniveaus korrespondieren; und Übertragen der neuen Symbole gleichzeitig in demselben Zeitintervall über die mehreren Datenbahnen.
  7. Verfahren nach Anspruch 6, wobei die ursprünglichen Symbole mit Spannungsniveaus von 0AV, 1ΔV, 2ΔV oder 3ΔV korrespondieren, darüber hinaus umfassend ein Bestimmen der Anzahl der ursprünglichen Symbole, welche mit 0ΔV oder 3ΔV korrespondieren.
  8. Verfahren nach Anspruch 6 oder 7, wobei die ursprünglichen Symbole ein höchstwertigstes Bit und ein niederwertigstes Bit umfassen, und wobei das Ersetzen der ursprünglichen Symbole durch die neuen Symbole in dem Zeitintervall ein Umschalten des niederwertigsten Bits der Daten für die ursprünglichen Symbole umfasst.
  9. Verfahren nach einem der Ansprüche 6 bis 8, wobei die ursprünglichen Symbole ein höchstwertigstes Bit und ein niederwertigstes Bit umfassen, und wobei das Ersetzen der ursprünglichen Symbole durch die neuen Symbole in dem Zeitintervall ein Umschalten des höchstwertigsten Bits der Daten der ursprünglichen Symbole umfasst.
  10. Verfahren nach einem der Ansprüche 6 bis 9, wobei der DBI-Wert ein Zwei-Bit- Symbol ist, und wobei die Symbole, welche ein niedrigstes Spannungsniveau umfassen, welches auf den Datenbahnen eingesetzt wird, mit Symbolen ausgetauscht werden, welche ein dem niedrigsten Spannungsniveau am nächsten liegendes Spannungsniveau auf den Datenbahnen umfassen, wenn eine Anzahl von Symbolen, welche das niedrigste Spannungsniveau umfassen, eine Anzahl von Symbolen übersteigt, welche das dem niedrigsten Spannungsniveau am nächsten liegende Spannungsniveau umfassen.
  11. Verfahren nach Anspruch 10, wobei die Symbole, welche das niedrigste Spannungsniveau umfassen, welches auf den Datenbahnen eingesetzt wird, 2-Bit-Werten von „00“ entsprechen, und wobei Symbole, welche ein dem niedrigsten Spannungsniveau am nächsten liegendes Spannungsniveau umfassen, 2-Bit-Werten von „01“ entsprechen.
  12. Verfahren nach Anspruch 10 oder 11, wobei Symbole, welche ein höchstes Spannungsniveau umfassen, welches auf den Datenbahnen eingesetzt wird, mit Symbolen ausgetauscht werden, welche ein dem höchsten Spannungsniveau am nächsten liegendes Spannungsniveau auf den Datenbahnen umfassen, wenn eine Anzahl von Symbolen, welche das höchste Spannungsniveau umfassen, eine Anzahl von Symbolen übersteigt, welche das dem höchsten Spannungsniveau am nächsten liegende Spannungsniveau umfassen.
  13. Verfahren nach Anspruch 12, wobei die Symbole, welche das höchste Spannungsniveau umfassen, welches auf den Datenbahnen eingesetzt wird, 2-Bit-Werten von „11“ entsprechen, und wobei Symbole, welche ein dem höchsten Spannungsniveau am nächsten liegendes Spannungsniveau umfassen, 2-Bit-Werten von „10“ entsprechen.
  14. Sender für einen seriellen Datenbus, wobei der Sender umfasst: mehrere Leitungstreiber; und eine Logik, um eine Summe von Übergangswerten für ursprüngliche Symbole zu bestimmen, welche gleichzeitig in einem Burstintervall über mehrere Datenbahnen des seriellen Datenbusses zu senden sind; abhängig davon, ob die Summe eine Schwellenwertbedingung einhält, Betreiben der Leitungstreiber, um neue Symbole auf dem seriellen Datenbus einzustellen, wobei sich die neuen Symbole von den ursprünglichen Symbolen unterscheiden, wobei die neuen Symbole von einem mittleren Bereich eines Energieverbrauchsprofils für den seriellen Datenbus abgeleitet sind.
  15. Sender nach Anspruch 14, wobei die neuen Symbole benachbarten Spannungsniveaus der ursprünglichen Symbole entsprechen.
  16. Sender nach Anspruch 14 oder 15, wobei die Schwellenwertbedingung der Hälfte eines maximal möglichen Wertes für die Summe der mehreren Datenbahnen entspricht.
  17. Sender nach einem der Ansprüche 14 bis 16, welcher darüber hinaus einen Datenbusinvertierungs- (DBI-) Leitungstreiber und eine Logik, um den DBI-Leitungstreiber zu betreiben, um einen DBI-Wert einzustellen, welcher anzeigt, dass die ursprünglichen Symbole durch die neuen Symbole ersetzt wurden, umfasst.
  18. Sender nach Anspruch 17, wobei der DBI-Wert ein Zwei-Bit-Symbol ist, und welcher darüber hinaus umfasst: eine Logik, um Symbole, welche ein niedrigstes Spannungsniveau, welches auf den Datenbahnen eingesetzt wird, umfassen, und Symbole, welche ein dem niedrigsten Spannungsniveau am nächsten liegendes Spannungsniveau auf den Datenbahnen umfassen, auszutauschen, wenn eine Anzahl der Symbole, welche das niedrigste Spannungsniveau umfassen, eine Anzahl von Symbolen übersteigt, welche das dem niedrigsten Spannungsniveau am nächsten liegende Spannungsniveau umfassen; und eine Logik, um Symbole, welche ein höchstes Spannungsniveau umfassen, welches auf den Datenbahnen eingesetzt wird, und Symbole, welche ein dem höchsten Spannungsniveau am nächsten liegendes Spannungsniveau auf den Datenbahnen umfassen, auszutauschen, wenn eine Anzahl der Symbole, welche das höchste Spannungsniveau umfassen, eine Anzahl von Symbolen übersteigt, welche das dem höchsten Spannungsniveau am nächsten liegende Spannungsniveau umfassen.
  19. Sender nach einem der Ansprüche 14 bis 18, wobei die ursprünglichen Symbole ein höchstwertigstes Bit und ein niederwertigstes Bit umfassen, und wobei das Ersetzen der ursprünglichen Symbole durch die neuen Symbole ein Umschalten des niederwertigsten Bits der Daten für die ursprünglichen Symbole umfasst.
  20. Sender nach einem der Ansprüche 14 bis 19, wobei die ursprünglichen Symbole ein höchstwertigstes Bit und ein niederwertigstes Bit umfassen, und wobei das Ersetzen der ursprünglichen Symbole durch die neuen Symbole ein Umschalten des höchstwertigsten Bits der Daten der ursprünglichen Symbole umfasst.
  21. Sender nach einem der Ansprüche 14 bis 20, welcher darüber hinaus ausgestaltet ist, um ein Verfahren nach einem der Ansprüche 1 bis 13 auszuführen.
DE102019114978.9A 2019-06-04 2019-06-04 Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe Pending DE102019114978A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019114978.9A DE102019114978A1 (de) 2019-06-04 2019-06-04 Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019114978.9A DE102019114978A1 (de) 2019-06-04 2019-06-04 Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe

Publications (1)

Publication Number Publication Date
DE102019114978A1 true DE102019114978A1 (de) 2020-12-10

Family

ID=73460179

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019114978.9A Pending DE102019114978A1 (de) 2019-06-04 2019-06-04 Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe

Country Status (1)

Country Link
DE (1) DE102019114978A1 (de)

Similar Documents

Publication Publication Date Title
DE102019108205B4 (de) Unentspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
DE102019107849A1 (de) 424-Kodierungsschemata zur Reduzierung von Kopplung und Leistungsrauschen auf PAM-4-Datenbussen
DE102019107670B4 (de) Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
US20190305765A1 (en) Data bus inversion (dbi) on pulse amplitude modulation (pam) and reducing coupling and power noise on pam-4 i/o
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE602004004002T2 (de) Verfahren und Speichersystem basierend auf dualem data strobe mode and einfachem data strobe mode mit Dateninversion
DE112011105674T5 (de) Datenwiederherstellung bei niedriger Energie unter Verwendung von Übertaktung
DE102008045176B4 (de) Verfahren zum Informationsaustausch zwischen über eine Datenverbindung verbundenen Einheiten
WO2003025950A2 (de) Konzept zur sicheren datenkommunikation zwischen elektronischen bausteinen
DE102006048319A1 (de) Multichip-Halbleiterspeicherelement
DE102007060805A1 (de) Modulare Speichersteuerungstaktungsarchitektur
US11966348B2 (en) Reducing coupling and power noise on PAM-4 I/O interface
DE102022102128A1 (de) Techniken zur durchführung von schreibtraining an einem dynamischen direktzugriffsspeicher
DE10223144B4 (de) Datenübertragungsschaltung
DE102019118340A1 (de) Invertierungskodierung für einen bus mit begrenzter hamming-distanz für schnittstellen mit mehreren bytes
DE112020000461T5 (de) Selbstreferenzierte single-ended-chip-to-chip-kommunikation
DE102020113386A1 (de) Proportionale ac-gekoppelte flankenverstärkende übertragungsentzerrung für mehrstufige pulsamplitudenmodulierte signalisierung
DE102017119065B4 (de) Aktualisieren eines Speichers
DE102019114978A1 (de) Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102019107002A1 (de) Verringerung der kopplung und des leistungsrauschens an einer pam-4-i/o-schnittstelle
DE112021003136T5 (de) Verfahren zum durchführen von system- und energieverwaltung über eine serielle datenkommunikationsschnittstelle
DE102013020813B4 (de) Technik zur Optimierung der Phase eines Datensignals, das über eine Kommunikationsverbindung gesendet wird

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication