DE102019107670A1 - Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen - Google Patents

Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen Download PDF

Info

Publication number
DE102019107670A1
DE102019107670A1 DE102019107670.6A DE102019107670A DE102019107670A1 DE 102019107670 A1 DE102019107670 A1 DE 102019107670A1 DE 102019107670 A DE102019107670 A DE 102019107670A DE 102019107670 A1 DE102019107670 A1 DE 102019107670A1
Authority
DE
Germany
Prior art keywords
data
level
bits
pam
symbol
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.)
Granted
Application number
DE102019107670.6A
Other languages
English (en)
Other versions
DE102019107670B4 (de
Inventor
Donghyuk Lee
Michael O'Connor James
Michael Wilson John
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019107670A1 publication Critical patent/DE102019107670A1/de
Application granted granted Critical
Publication of DE102019107670B4 publication Critical patent/DE102019107670B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B14/00Transmission systems not characterised by the medium used for transmission
    • H04B14/02Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation
    • H04B14/023Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation using pulse amplitude modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0042Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/38Synchronous or start-stop systems, e.g. for Baudot code
    • H04L25/40Transmitting circuits; Receiving circuits
    • H04L25/49Transmitting circuits; Receiving circuits using code conversion at the transmitter; using predistortion; using insertion of idle bits for obtaining a desired frequency spectrum; using three or more amplitude levels ; Baseband coding techniques specific to data transmission systems
    • H04L25/4917Transmitting circuits; Receiving circuits using code conversion at the transmitter; using predistortion; using insertion of idle bits for obtaining a desired frequency spectrum; using three or more amplitude levels ; Baseband coding techniques specific to data transmission systems using multilevel codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0096Channel splitting in point-to-point links
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Verfahren zum Betreiben eines seriellen Datenbusses unterteilen eine Reihe von Datenbits in Sequenzen von einem oder von mehreren Bits und kodieren die Sequenzen als N-Niveau-Symbole, welche bei mehreren diskreten Spannungsniveaus übertragen werden. Diese Verfahren können eingesetzt werden, um über serielle Datenleitungen zu kommunizieren, um eine Bandbreite zu verbessern und ein Übersprechen und andere Quellen von Rauschen zu verringern.

Description

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

Claims (20)

  1. Verfahren zum Betreiben eines seriellen Datenbusses, wobei das Verfahren umfasst: Konfigurieren einer ersten Gruppe von mehreren Datenspuren des seriellen Datenbusses für eine PAM-4-Kommunikation; Konfigurieren von Datenspuren, welche sich nicht in der ersten Gruppe befinden, für eine PAM-433-Kommunikation, wobei die Datenspuren für die PAM-4-Kommunikation voneinander durch mindestens eine der Datenspuren für die PAM-433-Kommunikation getrennt werden.
  2. Verfahren nach Anspruch 1, darüber hinaus für jede Datenspur der Datenspuren für die PAM-433-Kommunikation umfassend: Aufteilen einer Reihe von Datenbits für eine Kommunikation auf der Datenspur in mehrere Sequenzen von jeweils fünf Bits; Kodieren von ersten zwei Bits von jeder der Sequenzen von fünf Bits auf der Datenspur als ein 4-Niveau-Symbol; und Kodieren von nächsten drei Bits von jeder der Sequenzen von fünf Bits auf der Datenspur als zwei 3-Niveau-Symbole.
  3. Verfahren nach Anspruch 2, wobei die zwei Drei-Niveau-Symbole ausgewählt werden, um eine Möglichkeit von maximalen Spannungsänderungen zwischen Vier-Niveau-Symbolen auf dem seriellen Datenbus zu vermeiden.
  4. Verfahren nach Anspruch 2 oder 3, darüber hinaus umfassend: selektives Kodieren von nächsten drei Bits von jeder der Sequenzen von fünf Bits auf dem seriellen Datenbus unter der Bedingung, dass die ersten zwei Bits von der jeweiligen der Sequenzen von fünf Bits als ein Vier-Niveau-Symbol mit einem höchsten Symbol-Spannungsniveau oder einem niedrigsten Symbol-Spannungsniveau, welche von dem seriellen Datenbus eingesetzt werden, kodiert sind.
  5. Verfahren nach einem der Ansprüche 2 bis 4, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen, wobei 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 über dem Spannungsniveau des Vier-Niveau-Symbols liegt.
  6. Verfahren nach einem der Ansprüche 2 bis 5, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen und darüber hinaus umfassend: die Sequenzen von fünf Bits umfassen eine erste Sequenz von fünf Bits für eine Kommunikation auf dem seriellen Datenbus und eine zweite Sequenz von fünf Bits für eine Kommunikation nach der ersten Sequenz von fünf Bits auf dem seriellen Datenbus; und ein Spannungsniveau des zweiten Drei-Niveau-Symbols der ersten Sequenz von fünf Bits liegt entweder (a) höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus des Vier-Niveau-Symbols der zweiten Sequenz von fünf Bits oder (b) höchstens zwei Spannungsstufen oberhalb des Spannungsniveaus des Vier-Niveau-Symbols der zweiten Sequenz von fünf Bits.
  7. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus für jede Datenspur der Datenspuren für die PAM-433-Kommunikation umfassend: Aufteilen einer Reihe von Datenbits für eine Kommunikation auf der Datenspur in Sequenzen von sieben Bits; Kodieren von ersten vier Bits von jeder der Sequenzen von sieben Bits auf der Datenspur als zwei Vier-Niveau-Symbole; und Kodieren von nächsten drei Bits von jeder der Sequenzen von sieben Bits auf der Datenspur als zwei Drei-Niveau-Symbole.
  8. Verfahren nach Anspruch 7, wobei die Datenspuren für die PAM-433-Kommunikation eine erste Datenspur und eine zweite Datenspur umfassen, und wobei eine Übertragung der zwei Vier-Niveau-Symbole zeitlich zwischen der ersten Datenspur und der zweiten Datenspur verschoben ist.
  9. Verfahren nach Anspruch 8, wobei das Verschieben der Übertragung der zwei Vier-Niveau-Symbole zwischen der ersten Datenspur und der zweiten Datenspur eine Übertragung von zwei Vier-Niveau-Symbolen für die erste Datenspur während eines anderen Taktintervalls als eine Übertragung der zwei Vier-Niveau-Symbole für die zweite Datenspur umfasst.
  10. Verfahren nach einem der Ansprüche 7 bis 9, darüber hinaus umfassend: selektives Kodieren der nächsten drei Bits von jeder der Sequenzen von sieben Bits auf der Datenspur unter der Bedingung, dass zweite zwei Bits von der jeweiligen der Sequenzen von sieben Bits als ein Vier-Niveau-Symbol bei einem höchsten Symbol-Spannungsniveau oder einem niedrigsten Symbol-Spannungsniveau, welche durch die Datenspur eingesetzt werden, kodiert werden.
  11. Verfahren nach einem der Ansprüche 7 bis 10, wobei die zwei Drei-Niveau Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen, wobei ein Spannungsniveau des ersten Drei-Niveau-Symbols entweder höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus eines zweiten der zwei Vier-Niveau-Symbole oder (b) höchstens zwei Spannungsstufen oberhalb des Spannungsniveaus des zweiten der zwei Vier-Niveau-Symbole liegt.
  12. Verfahren nach einem der Ansprüche 7 bis 11, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen und darüber hinaus umfassend: die Sequenzen von sieben Bits umfassen eine erste Sequenz von sieben Bits für eine Kommunikation auf der Datenspur und eine zweite Sequenz von sieben Bits für eine Kommunikation auf der Datenspur nach der Kommunikation der ersten Sequenz von sieben Bits auf der Datenspur; und ein Spannungsniveau des zweiten Drei-Niveau-Symbols der ersten Sequenz von sieben Bits liegt entweder (a) höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus eines zweiten der zwei Vier-Niveau-Symbole der ersten Sequenz von sieben Bits oder (b) höchstens zwei Spannungsstufen oberhalb des zweiten des zweiten der zwei Vier-Niveau-Symbole der ersten Sequenz von sieben Bits.
  13. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend: Konfigurieren einer Datenspur des seriellen Datenbusses für PAM-4-Kommunikationen von exklusiven CRC-Werten.
  14. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend: Konfigurieren einer Datenspur des seriellen Datenbusses für eine Kommunikation von CRC-Werten, welche Symbole einsetzt, die sich aus zwei Spannungsniveaus zusammensetzen.
  15. Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend: Abschließen einer Datenübertragungsanfrage auf jeder der Datenspuren für eine PAM-433-Kommunikation mit einem Symbol, welches aus zwei Spannungsniveaus zusammengesetzt ist.
  16. Verfahren nach einem der vorhergehenden Ansprüche, wobei der serielle Datenbus aus neun Datenspuren zusammengesetzt ist.
  17. Verfahren nach Anspruch 16, wobei drei der neun Datenspuren für eine PAM-4-Kommunikation konfiguriert werden und jeweils durch zwei Datenspuren, welche für eine PAM-433-Kommunikation konfiguriert werden, voneinander getrennt werden.
  18. Verfahren nach einem der vorhergehenden Ansprüche, wobei der serielle Datenbus aus zehn Datenspuren zusammengesetzt ist.
  19. Verfahren nach Anspruch 18, wobei vier der zehn Datenspuren für eine PAM-4-Kommunikation konfiguriert werden und jeweils durch zwei Datenspuren, welche für eine PAM-433-Kommunikation konfiguriert werden, voneinander getrennt werden.
  20. Verfahren nach Anspruch 19, wobei eine der vier Datenspuren, welche für eine PAM-4-Kommunikation konfiguriert sind, eine zweckbestimmte CRC-Datenspur ist.
DE102019107670.6A 2018-03-29 2019-03-26 Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen Active DE102019107670B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862650168P 2018-03-29 2018-03-29
US62/650,168 2018-03-29
US16/295,595 2019-03-07
US16/295,595 US10657094B2 (en) 2018-03-29 2019-03-07 Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses

Publications (2)

Publication Number Publication Date
DE102019107670A1 true DE102019107670A1 (de) 2019-10-02
DE102019107670B4 DE102019107670B4 (de) 2022-01-20

Family

ID=67909849

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019107670.6A Active DE102019107670B4 (de) 2018-03-29 2019-03-26 Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen

Country Status (3)

Country Link
US (1) US10657094B2 (de)
CN (1) CN110321314B (de)
DE (1) DE102019107670B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966348B2 (en) 2019-01-28 2024-04-23 Nvidia Corp. Reducing coupling and power noise on PAM-4 I/O interface
KR20210149543A (ko) * 2020-06-02 2021-12-09 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US11656958B2 (en) 2021-04-29 2023-05-23 Mellanox Technologies, Ltd. Redundancy data bus inversion sharing
US11942968B2 (en) * 2022-04-25 2024-03-26 Samsung Electronics Co., Ltd. Transmitter and receiver for 3-level pulse amplitude modulation signaling and system including the same

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4739323A (en) 1986-05-22 1988-04-19 Chrysler Motors Corporation Serial data bus for serial communication interface (SCI), serial peripheral interface (SPI) and buffered SPI modes of operation
US4742349A (en) 1986-05-22 1988-05-03 Chrysler Motors Corporation Method for buffered serial peripheral interface (SPI) in a serial data bus
US5377020A (en) 1992-05-28 1994-12-27 Contex A/S Method and apparatus for scanning an original and updating threshold values for use in the processing of data
US5572736A (en) 1995-03-31 1996-11-05 International Business Machines Corporation Method and apparatus for reducing bus noise and power consumption
US6604120B1 (en) 1997-09-04 2003-08-05 Cirrus Logic, Inc. Multiplier power saving design
US6718415B1 (en) 1999-05-14 2004-04-06 Acqis Technology, Inc. Computer system and method including console housing multiple computer modules having independent processing units, mass storage devices, and graphics controllers
US6285300B1 (en) 2000-02-09 2001-09-04 Hewlett Packard Company Apparatus and method for reducing power and noise through reduced switching recording in logic devices
US7149955B1 (en) 2001-03-07 2006-12-12 Marvell International Ltd. Encoding and decoding apparatus and method with hamming weight enhancement
US7260155B2 (en) 2001-08-17 2007-08-21 Synopsys, Inc. Method and apparatus for encoding and decoding digital communications data
US7248640B2 (en) 2001-08-17 2007-07-24 Synopsys, Inc. System and method for providing slicer level adaption
DE60330198D1 (de) 2002-09-04 2009-12-31 Microsoft Corp Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7391834B2 (en) * 2002-10-01 2008-06-24 Intel Corporation Pulse amplitude modulated system with reduced intersymbol interference
JP3994870B2 (ja) 2002-12-12 2007-10-24 日本電気株式会社 多値qamを用いた無線装置及びしきい値推定方法
US7620116B2 (en) 2003-02-28 2009-11-17 Rambus Inc. Technique for determining an optimal transition-limiting code for use in a multi-level signaling system
US7092472B2 (en) * 2003-09-16 2006-08-15 Rambus Inc. Data-level clock recovery
US7188263B1 (en) 2003-05-07 2007-03-06 Nvidia Corporation Method and apparatus for controlling power state of a multi-lane serial bus link having a plurality of state transition detectors wherein powering down all the state transition detectors except one
US7779212B2 (en) * 2003-10-17 2010-08-17 Micron Technology, Inc. Method and apparatus for sending data from multiple sources over a communications bus
US7308058B2 (en) * 2003-10-27 2007-12-11 Rambus Inc. Transparent multi-mode PAM interface
US6917312B2 (en) * 2003-11-10 2005-07-12 Rambus Inc. Technique for improving the quality of digital signals in a multi-level signaling system
US7135996B1 (en) 2004-11-04 2006-11-14 Marvell International Ltd. Multispeed communications device
US7561624B2 (en) 2004-11-22 2009-07-14 Fonseka John P Multi-interval line coding for high speed data communication
US7081838B2 (en) 2004-12-29 2006-07-25 Enigma Semiconductor, Inc. 16b/10s coding apparatus and method
US7840629B2 (en) 2006-02-28 2010-11-23 Sony Computer Entertainment Inc. Methods and apparatus for providing a booth multiplier
US7769048B2 (en) 2008-06-25 2010-08-03 Intel Corporation Link and lane level packetization scheme of encoding in serial links
US7795915B2 (en) * 2008-08-04 2010-09-14 Chil Semiconductor Corporation Multi-level signaling
US20110264719A1 (en) 2008-10-30 2011-10-27 Audioasics A/S High radix digital multiplier
US8181101B2 (en) 2009-01-30 2012-05-15 International Business Machines Corporation Data bus system, its encoder/decoder and encoding/decoding method
US8581755B2 (en) 2010-01-20 2013-11-12 Rambus Inc. Multiple word data bus inversion
US8635262B2 (en) 2010-12-03 2014-01-21 Via Technologies, Inc. Carryless multiplication preformatting apparatus and method
US8934528B2 (en) 2011-03-30 2015-01-13 Silicon Laboratories Inc. Transition interval coding for serial communication
US8984380B2 (en) * 2011-07-01 2015-03-17 Altera Corporation Method and system for operating a communication circuit configurable to support one or more data rates
US9240907B2 (en) * 2012-02-15 2016-01-19 Broadcom Corporation Transcoding scheme techniques
KR101861550B1 (ko) 2012-02-29 2018-05-29 삼성전자주식회사 다항식 연산을 위한 부분적 발생 장치 및 방법
US9564990B1 (en) 2012-10-16 2017-02-07 Inphi Corporation Pulse amplitude modulation (PAM) data communication with forward error correction
US9942063B2 (en) 2012-10-26 2018-04-10 Altera Corporation Apparatus for improved encoding and associated methods
US8964818B2 (en) 2012-11-30 2015-02-24 Broadcom Corporation Use of multi-level modulation signaling for short reach data communications
US9189051B2 (en) 2012-12-14 2015-11-17 International Business Machines Corporation Power reduction by minimizing bit transitions in the hamming distances of encoded communications
US9210010B2 (en) 2013-03-15 2015-12-08 Apple, Inc. Methods and apparatus for scrambling symbols over multi-lane serial interfaces
US9529749B2 (en) 2013-03-15 2016-12-27 Qualcomm Incorporated Data bus inversion (DBI) encoding based on the speed of operation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
DE102013205544A1 (de) 2013-03-28 2014-10-02 Robert Bosch Gmbh Vorrichtung und Verfahren zur Verarbeitung von Daten
WO2014177565A1 (en) * 2013-04-30 2014-11-06 Sony Corporation Coding and modulation apparatus using non-uniform constellation
US9146707B2 (en) 2013-05-28 2015-09-29 International Business Machines Corporation Generating a fast 3x multiplicand term for radix-8 booth multiplication
US9552325B2 (en) 2013-06-12 2017-01-24 Qualcomm Incorporated Camera control interface extension bus
US10114401B2 (en) 2013-11-18 2018-10-30 Infineon Technologies Ag System and method for a serial bus interface
US9252802B2 (en) * 2014-02-07 2016-02-02 Qualcomm Incorporated Encoding for partitioned data bus
US9607586B2 (en) 2014-02-18 2017-03-28 Apple Inc. Asymmetric circuitry
US9231704B1 (en) * 2014-05-12 2016-01-05 Google Inc. Electrical mitigation of DML nonlinearity for high-speed optical interconnection
US9252997B1 (en) 2014-07-10 2016-02-02 Qualcomm Incorporated Data link power reduction technique using bipolar pulse amplitude modulation
US9184906B1 (en) 2014-09-22 2015-11-10 Oracle International Corporation Configurable pulse amplitude modulation clock data recovery
US20160173134A1 (en) 2014-12-15 2016-06-16 Intel Corporation Enhanced Data Bus Invert Encoding for OR Chained Buses
WO2016109999A1 (zh) * 2015-01-08 2016-07-14 华为技术有限公司 数据处理方法和数据处理装置
US9853769B1 (en) * 2015-03-09 2017-12-26 Aquantia Corporation High-speed Ethernet coding
US11032397B2 (en) * 2015-06-17 2021-06-08 Hewlett Packard Enterprise Development Lp Method and system for high speed data links
US9548858B1 (en) 2016-01-18 2017-01-17 Inphi Corporation Skew management for PAM communication systems
US9853841B1 (en) 2016-06-23 2017-12-26 Huawei Technologies Co., Ltd. Low complexity slicer architectures for N-tap look-ahead decision feedback equalizer (DFE) circuit implementations
US9954576B2 (en) 2016-09-23 2018-04-24 Dell Products, Lp System and method for PAM-4 transmitter bit equalization for improved channel performance
US10164808B2 (en) 2016-09-29 2018-12-25 Viavi Solutions Deutschland Gmbh Test instrument for testing devices internally performing signal conversions
KR102349415B1 (ko) * 2017-08-07 2022-01-11 삼성전자주식회사 펄스 진폭 변조 송신기 및 펄스 진폭 변조 수신기
US10594523B2 (en) 2017-12-22 2020-03-17 Tetra Semiconductor Ag Decoder circuit for a broadband pulse amplitude modulation signal
US10491435B2 (en) 2018-03-29 2019-11-26 Nvidia Corp. Unrelaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses
US10599606B2 (en) 2018-03-29 2020-03-24 Nvidia Corp. 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses

Also Published As

Publication number Publication date
DE102019107670B4 (de) 2022-01-20
US10657094B2 (en) 2020-05-19
US20190303339A1 (en) 2019-10-03
CN110321314A (zh) 2019-10-11
CN110321314B (zh) 2023-11-28

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
DE10134472B4 (de) Sende- und Empfangsschnittstelle und Verfahren zur Datenübertragung
DE3128740C2 (de)
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE112010005747T5 (de) Datenschnittstellenschaltung
DE112007003080T5 (de) Verfahren, System und Vorrichtung für den ECC-Schutz von kleinen Datenstrukturen
US11966348B2 (en) Reducing coupling and power noise on PAM-4 I/O interface
DE102016125131A1 (de) Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen
DE3043100A1 (de) Datenprozessor mit datenkorrekturfunktion
DE112014005810T5 (de) Management der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE112004000140T5 (de) Kodierte Schreibmaske
DE102019118340A1 (de) Invertierungskodierung für einen bus mit begrenzter hamming-distanz für schnittstellen mit mehreren bytes
DE102020113386A1 (de) Proportionale ac-gekoppelte flankenverstärkende übertragungsentzerrung für mehrstufige pulsamplitudenmodulierte signalisierung
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102019107002A1 (de) Verringerung der kopplung und des leistungsrauschens an einer pam-4-i/o-schnittstelle
EP0769853B1 (de) Logischer Block für einen Viterbi-Decoder
DE112021003136T5 (de) Verfahren zum durchführen von system- und energieverwaltung über eine serielle datenkommunikationsschnittstelle
DE102019114978A1 (de) Datenbus-inversion (dbi) bei pulsamplitudenmodulation (pam) und reduzierung von kopplungs- und leistungsrauschen bei pam-4-ein-/ausgabe
DE112004001830B4 (de) Datenübertragungssystem mit reduziertem Leistungsverbrauch, Verfahren und Übertragungsschaltung
DE60109620T2 (de) scrambler UND VERFAHREN ZUM VERWüRFELN VON DATENWöRTERN
DE19944040C2 (de) Integrierter Speicher mit zwei Burstbetriebsarten
DE1499208C3 (de) Anordnung zur Kodierung und Dekodierung von Informationssätzen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final