DE102019107002A1 - REDUCTION OF COUPLING AND PERFORMANCE NOISE AT A PAM-4 I / O INTERFACE - Google Patents

REDUCTION OF COUPLING AND PERFORMANCE NOISE AT A PAM-4 I / O INTERFACE Download PDF

Info

Publication number
DE102019107002A1
DE102019107002A1 DE102019107002.3A DE102019107002A DE102019107002A1 DE 102019107002 A1 DE102019107002 A1 DE 102019107002A1 DE 102019107002 A DE102019107002 A DE 102019107002A DE 102019107002 A1 DE102019107002 A1 DE 102019107002A1
Authority
DE
Germany
Prior art keywords
level
bits
symbol
tri
data bus
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
DE102019107002.3A
Other languages
German (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
Priority claimed from US15/929,094 external-priority patent/US11966348B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019107002A1 publication Critical patent/DE102019107002A1/en
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Dc Digital Transmission (AREA)

Abstract

Verfahren zum Betreiben eines seriellen Datenbusses teilen eine Reihe von Datenbits in Sequenzen von einem oder mehreren Bits auf und kodieren die Sequenzen als N-Niveau-Symbole, welche dann als mehrere diskrete Spannungsniveaus übertragen werden. Diese Verfahren können zur Übertragung über serielle Datenleitungen eingesetzt werden, um eine Bandbreite zu verbessern und ein Übersprechen und andere Quellen von Rauschen zu verringern.Methods of operating a serial data bus divide a series of data bits into sequences of one or more bits and encode the sequences as N-level symbols, which are then transmitted as multiple discrete voltage levels. These techniques can be used for transmission over serial data lines to improve bandwidth and reduce crosstalk and other sources of noise.

Description

HINTERGRUNDBACKGROUND

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.High-throughput modern systems use multiple high-bandwidth I / O interfaces to form a signaling network between arithmetic units, storage units, and storage devices. For example, Peripheral Component Interconnect Express (PCI-E) connects multiple peripherals with central processing units (CPUs) and graphics processors (GPUs). These interfaces may include multiple serial data buses operating at high frequency.

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 sich „Spur“ („lane“) eine einzelne Leitung 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.Pulse amplitude modulation (PAM) can be used on a multi-lane serial data bus to transmit multiple bits of data simultaneously by encoding the data as different voltage levels. Here, "lane" refers to a single line of a serial data bus. A "data burst" refers to bits that appear on the data tracks of a serial data bus in the same bus clock interval, i. parallel, are placed.

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.An example of a PAM communication is PAM-4. During each bus clock interval, PAM-4 encodes two bits of data (00, 01, 10, 11) on each data bus of a serial data bus as one of four different voltage levels (symbols). Since two bits are encoded on each data track in each bus clock interval, PAM-4 ideally allows twice the bandwidth of conventional two-level signaling on one of two levels (eg, PAM-2) on serial data buses Bus clock frequencies work. PAM-4 symbols use four different voltage levels so that the difference in symbol values with respect to the voltage levels in PAM-4 is lower compared to PAM-2. This makes PAM-4 communication more susceptible to disturbances such as coupling noise between data tracks on a serial data bus and power supply noise, which reduces the signal-to-noise ratio (SNR).

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 Leitung übertragen, die von den Datenspuren (jeweils auch eine Leitung, typischerweise) des seriellen Datenbusses getrennt ist.One mechanism for reducing these noise effects is the use of Data Bus Inversion (DBI). For a given data burst, the DBI reduces the total amount of voltage level transitions across the serial data bus data tracks by up to half by intelligently setting the polarity of the bits in each data block on the serial data bus. The DBI requires one additional metadata bit per data block to transmit the data block polarity setting (non-inverted data block or inverted data block) to the receiver. This metadata bit is often transmitted on an additional line separate from the data lanes (also one line, typically) of the serial data bus.

Viele serielle Datenbusse bestehen nur aus einer einzigen Datenspur zwischen Sender und Empfänger. Das Hinzufügen einer zusätzlichen Metadatenleitung kann somit zu einem bis zu 100%igen Overhead bei der Anzahl der für den seriellen Datenbus benötigten Leitungen führen.Many serial data buses consist of only one data track between sender and receiver. The addition of an additional metadata line can thus result in an up to 100% overhead in the number of lines required for the serial data bus.

Figurenlistelist of figures

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 ist ein Blockdiagramm eines Computersystems 1600 mit einer GPU, in der Aspekte der Erfindung ausgestaltet sein oder ausgeführt werden können.
To easily identify the discussion of a particular item or process, the most significant digit (s) in a reference numeral refer to the figure in which that item is first introduced.
  • 1 represents a data communication system 100 according to an embodiment.
  • 2 illustrates an embodiment of a PAM-4 transmitter 200 represents.
  • 3 Figure 1 illustrates one embodiment of a voltage waveform 300 a conventional PAM-4 data track.
  • 4 FIG. 4 illustrates a PAM-433 encoder 400 according to one embodiment.
  • 5 Figure 1 illustrates one embodiment of a voltage waveform 500 a PAM 433 Data trace.
  • 6 FIG. 12 illustrates one embodiment of a data trace voltage waveform. FIG 600 represents.
  • 7 FIG. 12 illustrates one embodiment of a data trace voltage waveform. FIG 700 represents.
  • 8th FIG. 12 illustrates one embodiment of a data trace voltage waveform. FIG 800 represents.
  • 9 FIG. 12 illustrates one embodiment of a data trace voltage waveform. FIG 900 represents.
  • 10 represents an embodiment of a PAM 433 -Routine 1000 represents.
  • 11 FIG. 5 illustrates one embodiment of a PAM-N routine. FIG 1100 represents.
  • 12 represents an embodiment of a PAM 4433 -encoding 1200 represents.
  • 13 represents an embodiment of a PAM 4433 -Routine 1300 represents.
  • 14 represents an embodiment of a variable PAM 433 -encoding 1400 represents.
  • 15 represents an embodiment of a variable PAM 433 -Routine 1500 represents.
  • 16 is a block diagram of a computer system 1600 with a GPU in which aspects of the invention may be embodied or practiced.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

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.With reference to 1 includes a data communication system 100 a transmitting device, such as a data processor 102 that has a processing core 114 , a PAM-4 symbol encoder 104 and a PAM 4 Transmitter 108 includes. The data processor 102 For example, in some embodiments, it may include a graphics processing unit (GPU), a central processing unit (CPU), a system on a chip (SoC), or other known data processing devices.

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.The data processor 102 communicates with a receiving device, such as a memory 112 , via a bus, such as a memory bus 118 , A PAM-4 receiver 110 and a PAM-4 symbol decoder 106 receive and process PAM-4 signals from the data processor 102 to the store 112 over the memory bus 118 be transmitted.

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.The data processor 102 uses an internal data bus 116 to data bursts to and from the processing core 114 via a multi-track internal data bus 116 transferred to. The PAM 4 -Symbolencoder 104 receives a block of data from the processing core 114 is to be encoded, and performs a PAM on that block 4 Coding through. The PAM 4 -Transmitter 108 sends the coded block over the memory bus 118 at the PAM 4 -Receiver 110 , The PAM-4 receiver 110 receives the coded block and sends the coded block to the PAM-4 symbol decoder 106 to decode the block. After decoding, the block is sent to the memory 112 Posted.

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.This is a simplified illustration. In practice, there are typically encoders and decoders at both ends of the memory bus 118 for writing in and reading from the memory 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. 2 makes a PAM 4 transmitter 200 for a single data track of a serial data bus in one embodiment. The PAM-4 transmitter 200 includes a transmitter 202 for a least significant bit, a transmitter 204 for a most significant bit, a receiver 206 and a data track 208 , The PAM 4 Transmitter 200 uses the transmitter 202 for the least significant bit and the transmitter 204 for the most significant bit, a four-level symbol with one of four levels on the data track 208 to create. The term "symbol" refers to a voltage level generated by a line driver on a data bus of a serial data bus, the voltage level representing the value of one or more bits of data. So, "coding a symbol" means physically configuring a serial bus data bus driver circuit to drive the voltage on the data track to a certain value.

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.For example, if the two bits of the data to be encoded in the symbol are (1,1), the outputs of the transmitter generate 202 for the least significant bit and the transmitter 204 for the most significant bit together a voltage of eg 1.2V on the data track 208 and the stream on the data track 208 is eg 0 mA due to the pull-up transistor Rt at the receiver 206 (both ends of the data track 208 are at the same potential). If the two bits of the data to be coded in the symbol ( 1 , 0), the outputs of the transmitter combine 202 for the least significant bit and the transmitter 204 for the most significant bit, for example, a voltage of 1.0 V on the data track 208 and a current of eg 5 mA on the data track 208 to create. If the two bits of the data to be coded in the symbol ( 0 , 1), the outputs of the transmitter combine 202 for the least significant bit and the transmitter 204 for the most significant bit, for example, a voltage of, for example, 0.8V on the data track 208 and a current of eg 10 mA on the data track 208 to create. If the two bits of the data to be coded in the symbol are (0,0), the outputs of the transmitter combine 202 for the least significant bit and the transmitter 204 for the most significant bit, for example, a voltage of 0.6 V on the data track 208 and a current of eg 15 mA on the data track 208 to create. The 0.6V can be referred to herein as the base transmission voltage V b from which the other symbol voltage levels are formed by difference.

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.The symbol value on a data track thus corresponds to the current power consumption of this data track during a data block. Therefore, the symbol values can be assigned weights that reflect their current consumption costs. For example, the symbol for the bit pair (1,1) can be assigned a weight of 0; the symbol for the bit pair (1,0) can be assigned a weight of 1; the symbol for the bit pair (0,1) can be assigned a weight of 2; and the symbol for the bit pair (0,0) can be assigned a weight of 3.

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.In this example, a data block on an eight-lane serial data bus with PAM-4 coding can be assigned a total weight in the range of 0 to 24, which corresponds to a power consumption range of eg 0 to 120 mA. The total weight for the data block would be 0 if all Symbols in the data block each encoded the bit pair (1,1), and the total weight for the data block would be 24 if all the symbols in the data 0 , 0) coded. Data blocks that are only 0s consume the most power and are therefore the most expensive from the point of view of power consumption.

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 Bit 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.With reference to 3 A conventional PAM-4 data trace voltage waveform 300 encodes two bits of data on the data track per clock interval using four-level symbols, respectively. An exemplary 12-bit sequence is 110001100011. This sequence may be transmitted as a series of four-level symbols, each encoding two bits. For bit sequence 110001100011, bits 11 become the first clock interval t0-t1 the serial data bus is encoded; the next two bits 00 are in the second clock interval t1-t2 the serial data bus is encoded; and so on. This results in two voltage level changes of 3ΔV on the serial data bus t0-t1 and at 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.The designation nΔV refers to a voltage change of n-delta with respect to the base voltage Vb on a data track of a serial data bus between the clock intervals. Referring back to 2 in which various symbols have a difference of 0.2V and the base voltage Vb is 0.6V, for example, a change of 3ΔV would be a change of 3 x 0.2V or a delta of 0.6V on the data track between correspond to the bus clock cycles.

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.Higher voltage deltas generate more noise because they lead to higher current fluctuations in the data track. So can in 3 the 3ΔV deltas generate significant noise between the bus clock intervals t0 and t1 and also between t4 and t5. Reducing this maximum delta voltage activity helps reduce the SNR of a PAM-4 system such as the PAM 4 Transmitter 200 to improve.

Eine Logiktabelle für einen PAM-433-Encoder 400 bei einer Ausführungsform ist in 4 dargestellt. Der PAM-433-Encoder 400 eliminiert Spannungsniveauänderungen von 3ΔV auf dem seriellen Datenbus für die oben diskutierte exemplarische Bitfolge 11000110001100011. Wie in der Logiktabelle dargestellt ist, wird, wenn die 3-Bit-Sequenz 000 zwischen zwei 2-Bit-Sequenzen der Form 1x liegt (wobei x ein „don't care“-Wert von entweder 0 oder 1 ist), die 3-Bit-Sequenz 000 als die vier Bits 0111 kodiert (siehe erste Zeile der Logiktabelle, dritte Spalte). Mit anderen Worten, wenn die 3-Bit-Sequenz 000 zwei 2-Bit-Sequenzen überbrückt, die jeweils das höchstwertigste Bit gesetzt haben (1x), werden die sieben Bits insgesamt als 1x01111x neu kodiert. Wenn in dem obigen Beispiel die sieben Bits insgesamt 1100011 sind, ist die neu kodierte Sequenz 11011111. Jedes 2-BitPaar 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.A logic table for a PAM-433 encoder 400 in one embodiment is shown in FIG 4 shown. The PAM-433 encoder 400 eliminates voltage level changes of 3ΔV on the serial data bus for the exemplary bit sequence 11000110001100011 discussed above. As shown in the logic table, if the 3-bit sequence 000 is between two 2-bit sequences of the form 1x (where x is a do not care value of either 0 or 1), the 3-bit sequence 000 encodes as the four bits 0111 (see first row of the logic table, third column). In other words, when the 3-bit sequence 000 bridges two 2-bit sequences each having the most significant bit set (1x), the seven bits are re-encoded as 1x01111x in total. In the example above, if the seven bits are 1100011 in total, the re-encoded sequence is 11011111. Each 2-bit pair of this sequence is then transmitted as a PAM-4 symbol on the data bus serial data bus, resulting in the PAM-433 data trace voltage waveform 500 in 5 leads. The voltage level changes of 3ΔV in sequence 110001100011 were eliminated using a DBI line at the expense of a serial data bus clock cycle. In other words, assuming a random bit stream, the effective data transfer rate is reduced by 16.7% to 1.67 bits per clock interval of the serial data bus, compared to 2.0 bits per clock interval of the conventional data bus in conventional 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 Folge von Bits, die auf der Datenspur zu übertragen sind, in Folgen 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.The PAM 433 encoder 400 provides a 33% reduction in worst case voltage level switching on the data line over traditional PAM 4 encoders without the need to transfer metadata. The PAM 433 encoder 400 splits a sequence of bits to be transmitted on the data track into sequences of five bits of data: the first two bits of five bits each are encoded into a symbol with four possible voltage levels, and the last three Bits of the five bits are encoded into two symbols each having three possible voltage levels.

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.In general, the above mechanisms can be applied to PAM-N (symbols that use N possible discrete voltage levels). For example, a PAM-866 scheme can transmit a 3-bit data symbol at the first transmission and a 5-bit data symbol at the following two transmissions (2.67 bits per transmission, 11.1% overhead). PAM-866 can reduce the maximum voltage switching from 7ΔV (PAM-8) to 5ΔV (28.5% reduction). In addition, the mechanisms can be extended to other arbitrary combinations of data symbols (e.g., PAM-WXYZ) to achieve higher reliability through the use of similar mechanisms as PAM-433.

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.The 6 to 9 show different data track voltage waveforms when using the PAM-433 encoding. Four data trace voltage waveforms are represented for different bit patterns transmitted on the data track: Data trace voltage waveform 600 , Data trace voltage waveform 700 , Data trace voltage waveform 800 and data trace voltage waveform 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.For the in 6 and 7 The data track waveforms shown become a first tri-level symbol 604 and a second three-level symbol 606 as "bridge 610" between a first four-level symbol 602 and a second four-level symbol 608 used the same Most significant bit (MSB). Examples that fit this pattern are pairs of four-level symbols such as: 11 (3ΔV) / 10 (2ΔV) ( 6 ) and 01 (1ΔV) / 00 (0ΔV) ( 7 ). The PAM-433 encoding directs the voltage windows of the first three-level symbol 604 and the second three-level symbol 606 so on the voltage level of the first four-level symbol 602 or the first three-level symbol 604 for example, the maximum voltage delta in the data track voltage waveform is 2ΔV.

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.For the in 8th and 9 The data trace waveforms shown become the first three-level symbol 604 and the second three-level symbol 606 as a bridge 610 between a first four-level symbol 602 and a second four-level symbol 608 used, which have different MSBs. In this scenario, a voltage delta of 3ΔV is between the first three-level symbol 604 and the second three-level symbol 606 possible. The PAM 433 encoder 400 does not map the values that would cause this in the logic table. The symbol that would cause a voltage delta of 3ΔV between the tri-level blocks is never used by the PAM-433 encoder 400, so the maximum voltage delta in the data track waveform is kept at 2ΔV.

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.With reference to 10 shares the PAM 433 -Routine 1000 in one embodiment, a series of data bits on the serial data bus into a plurality of sequences of five bits each (Block 1002 ) on. Next, the PAM encodes 433 -Routine 1000 the first two bits of each of the sequences of five bits as a four-level symbol (Block 1004 ). Then the PAM encodes 433 -Routine 1000 the next three bits of each of the sequences of five bits as two tri-level symbols (block 1006 ). The PAM 433 -Routine 1000 can be used to encode symbols on one or more data tracks of a serial data bus.

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 Folge 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.In some embodiments, the two tri-level symbols include a first tri-level symbol and a second tri-level symbol. The PAM 433 -Routine 1000 operates a serial data bus to either set a voltage level of the first three-level symbol ( a ) at most two voltage levels below a voltage level of the four-level symbol or b ) encode at most two voltage levels above the voltage level of the four-level symbol. The sequences of five bits may also include a first sequence of five bits transmitted on the serial data bus and a second sequence of five bits transmitted after the first sequence of five bits on the serial data bus. The PAM 433 -Routine 1000 may then operate the serial data bus to obtain a voltage level of the first three-level symbol of the first sequence of five bits as either (a) at most two voltage levels below a voltage level of the four-level symbol of the second sequence of five bits or (b) encode at most two voltage levels above the voltage level of the four-level symbol of the second sequence of five bits.

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.With reference to 11 subdivides a more general PAM-N routine 1100 the series of data bits in sequences of a number of bits, the number of bits being from a number of voltage levels N (Block 1102 ) depends. Then the PAM encodes N -Routine 1100 a first number of bits of each of the sequences of a number of bits as one N Level block, where the first number of bits is based on the logarithm 2 from N corresponds (block 1104 ). Then the PAM-N routine encodes 1100 a next number of bits of each of the sequences of a number of bits as two M-level blocks, where the next number of bits is log2 [(N ^ 2) / 2] and M is an integer equal to a rounding function (ceiling ), which is applied to a square root of [(N ^ 2) / 2] (block 1106 ). The PAM N -Routine 1100 can be used for data transmission via a serial data bus.

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).With reference to 12 is an embodiment of the PAM 4433 -encoding 1200 shown. The PAM 4433 -encoding 1200 is used for a serial data bus to encode and transmit a 7 Bit data words using a sequence of a first four-level symbol 1202 , a second four-level symbol 1204 , a first three-level symbol 1206 and a second three-level symbol 1208 used. As a result, it is possible for a voltage delta of 3ΔV to occur on a particular data track between two four-level symbols, such as the first four-level symbol 1202 and the second four-level symbol 1204 , As in 12 however, the potential voltage deltas of 3ΔV may be offset over multiple data tracks, thereby reducing the maximum voltage delta in a particular data block (all bits sent over the serial data bus during a clock interval). Multiple 3ΔV voltage deltas do not occur in the same data block, reducing crosstalk and other noise sources. This PAM 4433 -encoding 1200 has bandwidth cost of 12.5% (1.75 bits per transfer) at a maximum average voltage delta of 2.25ΔV over the four data lanes in this example (other numbers of data lanes may of course be used in other embodiments).

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.With reference to 13 shares an embodiment of a PAM 4433 Routine 1300 is a series of data bits on the data track of a serial data bus to be transmitted in sequences of seven bits (Block 1302 ). Then the PAM encodes 4433 Routine 1300, the first four bits of each of the sequences of seven bits as two four-level symbols (block 1304 ). Then the PAM encodes 4433 -Routine 1300 the next three bits of each of the seven bit sequences as two tri-level symbols (block 1306 ). This is repeated for multiple data tracks of a serial data bus and the transitions between four-level symbols can then be offset in time (aligned with different serial data bus clock intervals) over the data tracks.

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 Datenbahn-Spannungswellenform des seriellen Datenbusses.With reference to 14 activates a variable PAM 433 -encoding 1400 in one embodiment, the PAM 433 Coding when the current symbol corresponds to a data trace voltage of either 0ΔV or 3ΔV. This is referred to as "trigger data 1402" to determine the PAM 433 To activate coding. When the trigger data occurs 1402 After the trigger data, a corresponding three-level symbol bridge is created 1404 used. Otherwise, if the trigger data is not present, the variable PAM 433 -encoding 1400 the conventional PAM 4 Coding (all symbols are one of four levels). The variable PAM 433 -encoding 1400 results in a maximum voltage delta of 2ΔV in the highway voltage waveform of the serial data bus.

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 Datenbahn 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).With reference to 15 determines a variable PAM 433 -Routine 1500 whether two first bits of sequences of five bits are encoded with a four-level symbol corresponding to a highest voltage level or lowest voltage level used on a data bus of a serial data bus (Block 1502 ). In other words, whether the trigger data is encountered. In response to the trigger data encounter, the variable PAM 433 -Routine 1500 the next three bits of the sequences of five bits as two tri-level symbols (block 1504 ).

16 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 1600, in dem ein oder mehrere Aspekte der Erfindung implementiert werden können. Das Computersystem 1600 beinhaltet einen Systemdatenbus 1636, eine CPU 1626, Eingabevorrichtungen 1630, einen Systemspeicher 1604, ein Grafikverarbeitungssystem 1602 und Anzeigevorrichtungen 1628. In alternativen Ausführungsformen können die CPU 1626, Teile des Grafikverarbeitungssystems 1602, der Systemdatenbus 1636 oder eine beliebige Kombination davon in einer einzigen Verarbeitungseinheit integriert sein. Darüber hinaus kann die Funktionalität des Grafikverarbeitungssystems 1602 in einem Chipsatz oder in einer anderen Art von Spezialverarbeitungseinheit oder Co-Prozessor enthalten sein. 16 Fig. 10 is a block diagram of one embodiment of a computer system 1600 in which one or more aspects of the invention can be implemented. The computer system 1600 includes a system data bus 1636 , a CPU 1626 , Input devices 1630 , a system memory 1604 , a graphics processing system 1602 and display devices 1628 , In alternative embodiments, the CPU 1626 , Parts of the graphics processing system 1602 , the system data bus 1636 or any combination thereof, integrated into a single processing unit. In addition, the functionality of the graphics processing system 1602 in a chipset or other type of special purpose processing unit or co-processor.

Wie dargestellt ist, verbindet der Systemdatenbus 1636 die CPU 1626, die Eingabegeräte 1630, den Systemspeicher 1604 und das Grafikverarbeitungssystem 1602. In alternativen Ausführungsformen kann der Systemspeicher 1604 direkt mit der CPU 1626 verbunden sein. Die CPU 1626 empfängt Benutzereingaben von den Eingabegeräten 1630, führt im Systemspeicher 1604 gespeicherte Programmanweisungen aus, arbeitet mit im Systemspeicher 1604 gespeicherten Daten und konfiguriert das Grafikverarbeitungssystem 1602 für bestimmte Aufgaben in der Grafikpipeline. Der Systemspeicher 1604 beinhaltet typischerweise einen dynamischen Direktzugriffsspeicher (DRAM), der zum Speichern von Programmanweisungen und Daten zur Verarbeitung durch die CPU 1626 und das Grafikverarbeitungssystem 1602 verwendet wird. Das Grafikverarbeitungssystem 1602 empfängt Anweisungen, die von der CPU 1626 gesendet werden, und verarbeitet die Anweisungen zum Ausführen verschiedener Operationen innerhalb des Computersystems 1600.As shown, the system data bus connects 1636 the CPU 1626 , the input devices 1630 , the system memory 1604 and the graphics processing system 1602 , In alternative embodiments, the system memory 1604 directly with the CPU 1626 be connected. The CPU 1626 receives user input from the input devices 1630 , performs in system memory 1604 stored program instructions, works with in the system memory 1604 stored data and configures the graphics processing system 1602 for specific tasks in the graphics pipeline. The system memory 1604 typically includes Dynamic Random Access Memory (DRAM), which is used to store program instructions and data for processing by the CPU 1626 and the graphics processing system 1602 is used. The graphics processing system 1602 receives instructions from the CPU 1626 and process the instructions to perform various operations within the computer system 1600 ,

Wie ebenfalls dargestellt ist, beinhaltet der Systemspeicher 1604 ein Anwendungsprogramm 1612, eine API 1618 (Application Programming Interface) und einen Grafikverarbeitungseinheitstreiber 1622 (GPU-Treiber). Das Anwendungsprogramm 1612 erzeugt Aufrufe der API 1618, um eine gewünschte Ergebnismenge zu erzeugen. So überträgt beispielsweise das Anwendungsprogramm 1612 auch Programme an die API 1618, um Shading-Operationen, Operationen der künstlichen Intelligenz oder Grafik-Rendering-Operationen auszuführen. Die Funktionalität der API 1618 kann typischerweise innerhalb des Grafikverarbeitungseinheitstreibers 1622 implementiert werden. Der Grafikverarbeitungseinheitstreiber 1622 ist konfiguriert, um die Shading-Programme in Maschinencode zu übersetzen.As also shown, the system memory includes 1604 an application program 1612 , an API 1618 (Application Programming Interface) and a graphics processing unit driver 1622 (GPU driver). The application program 1612 generates calls to the API 1618 to generate a desired result set. For example, the application program transfers 1612 also programs to the API 1618 to perform shading operations, artificial intelligence operations, or graphics rendering operations. The functionality of the API 1618 can typically be within the graphics processing unit driver 1622 be implemented. The graphics processing unit driver 1622 is configured to translate the shading programs into machine code.

Das Grafikverarbeitungssystem 1602 beinhaltet eine GPU 1610 (Grafikverarbeitungseinheit), einen On-Chip-GPU-Speicher 1616, einen On-Chip-GPU-Datenbus 1632, einen lokalen GPU-Speicher 1606 und einen GPU-Datenbus 1634. Die GPU 1610 ist konfiguriert, um mit dem On-Chip-GPU-Speicher 1616 über den On-Chip-GPU-Datenbus 1632 und mit dem lokalen GPU-Speicher 1606 über den GPU-Datenbus 1634 zu kommunizieren. Der GPU-Datenbus 1634 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.The graphics processing system 1602 includes a GPU 1610 (Graphics processing unit), an on-chip GPU memory 1616 , an on-chip GPU data bus 1632 , a local GPU memory 1606 and a GPU data bus 1634 , The GPU 1610 is configured to work with the on-chip GPU memory 1616 via the on-chip GPU data bus 1632 and with the local GPU memory 1606 over the GPU data bus 1634 to communicate. The GPU data bus 1634 may use one or more of the coding techniques described herein.

Die GPU 1610 kann von der CPU 1626 gesendete Anweisungen empfangen und die Ergebnisse im lokalen Speicher 1606 der GPU speichern. Anschließend, wenn es sich bei den Anweisungen um Grafikanweisungen handelte, kann die GPU 1610 bestimmte im lokalen Speicher der GPU 1606 gespeicherte Grafikbilder auf den Anzeigevorrichtungen 1628 anzeigen.The GPU 1610 can from the CPU 1626 receive sent statements and the results in local memory 1606 save the GPU. Then, if the instructions were graphic instructions, the GPU can 1610 certain in the local memory of the GPU 1606 saved graphic images on the display devices 1628 Show.

Die GPU 1610 beinhaltet einen oder mehrere Logikblöcke 1614. Der Betrieb der Logikblöcke 1614 kann Ausführungsformen der hier beschriebenen Kodierungsschemata implementieren. Die Logikblöcke 1614 können als Anweisungen auf die GPU geladen oder in der Schaltung als Merkmale der Befehlssatzarchitektur oder eine Kombination aus beidem implementiert werden. The GPU 1610 includes one or more logic blocks 1614 , The operation of the logic blocks 1614 may implement embodiments of the encoding schemes described herein. The logic blocks 1614 may be loaded as instructions on the GPU or implemented in the circuit as features of the instruction set architecture or a combination of both.

Die GPU 1610 kann mit einer beliebigen Anzahl von On-Chip-GPU-Speichern 1616 und lokalen GPU-Speichern 1606, einschließlich keinem, ausgestattet sein und kann On-Chip-GPU-Speicher 1616, lokalen GPU-Speicher 1606 und Systemspeicher 1604 in beliebiger Kombination für Speicheroperationen verwenden. Die Daten-/Anweisungsbusse zwischen diesen Speichern und der GPU 1610 können eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.The GPU 1610 can save with any number of on-chip GPUs 1616 and local GPU storage 1606 , including none, can be equipped and can on-chip GPU memory 1616 , local GPU memory 1606 and system memory 1604 in any combination for memory operations. The data / instruction buses between these memories and the GPU 1610 may use one or more of the coding techniques described herein.

Der On-Chip-GPU-Speicher 1616 ist konfiguriert, um die GPU-Programmierung 1620 und die On-Chip-Puffer 1624 aufzuweisen. Die GPU-Programmierung 1620 kann vom Grafikverarbeitungseinheitstreiber 1622 über den Systemdatenbus 1636 an den On-Chip-GPU-Speicher 1616 übertragen werden. Der Systemdatenbus 1636 kann eine oder mehrere der hierin beschriebenen Kodierungstechniken verwenden.The on-chip GPU memory 1616 is configured to GPU programming 1620 and the on-chip buffers 1624 exhibit. The GPU programming 1620 can from the graphics processing unit driver 1622 over the system data bus 1636 to the on-chip GPU memory 1616 be transmitted. The system data bus 1636 may use one or more of the coding techniques described herein.

Als Beispiel kann die GPU-Programmierung 1620 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 1624 werden typischerweise zum Speichern von Daten verwendet, die einen schnellen Zugriff erfordern, um die Latenzzeit solcher Operationen zu reduzieren.As an example, the GPU programming 1620 include a vertex shading program in machine code, a geometry shading program in machine code, a fragment shading program in machine code, an artificial intelligence program, or any number of variations thereof. The on-chip buffers 1624 are typically used to store data requiring fast access to reduce the latency of such operations.

Der lokale Speicher 1606 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 1610 verwendet. Wie dargestellt ist, beinhaltet der lokale Speicher 1606 der GPU einen Frame-Puffer 1608. Der Frame-Puffer 1608 speichert Daten für mindestens eine zweidimensionale Oberfläche, die zum Steuern der Anzeigevorrichtungen 1628 verwendet werden kann. Darüber hinaus kann der Frame-Puffer 1608 mehr als eine zweidimensionale Oberfläche beinhalten, so dass die GPU 1610 auf eine zweidimensionale Oberfläche rendern kann, während eine zweite zweidimensionale Oberfläche zum Steuern der Anzeigevorrichtungen 1628 verwendet wird.The local store 1606 the GPU typically includes a lower cost out-of-the-chip dynamic random access memory (DRAM) and is also used to store GPU data and programs 1610 used. As shown, the local memory includes 1606 the GPU a frame buffer 1608 , The frame buffer 1608 stores data for at least one two-dimensional surface used to control the display devices 1628 can be used. In addition, the frame buffer 1608 involve more than a two-dimensional surface, so the GPU 1610 on a two-dimensional surface, while a second two-dimensional surface for controlling the display devices 1628 is used.

Die Anzeigevorrichtungen 1628 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 1628 werden typischerweise durch Scannen des Inhalts eines oder mehrerer Frames von Bilddaten erzeugt, die im Frame-Puffer 1608 gespeichert sind.The display devices 1628 are one or more output devices that can output a visual image according to an input data signal. For example, a display device may be constructed with a cathode ray tube (CRT) monitor, a liquid crystal display, or other suitable display system. The input data signals to the display devices 1628 are typically generated by scanning the contents of one or more frames of image data stored in the frame buffer 1608 are stored.

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.The specific voltages, currents and other details described above are illustrative only. The invention may be practiced with a variety of specific voltage levels, currents, resistances, etc. And while the invention has been described above in the context of, for example, a processor which transfers data to a memory, the signaling techniques described herein, such as PAM 4 etc., in any of a variety of signaling systems in which data is sent from a transmitting device to a receiving device or between transmitting and receiving devices, and so on.

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.The terms used herein should be in their ordinary meaning according to the current state of the art or the meaning indicated by their use in context. But if an explicit definition is provided, that meaning applies.

„Logik“ bezieht sich hier auf Speicherschaltungen von Maschinen, nichtflü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)."Logic" herein refers to memory circuits of machines, non-transitory machine-readable media, and / or circuits having in their material and / or material energy configuration control and / or process signals and / or settings and values (such as resistance, impedance, capacitance, inductance, Current / voltage values, etc.) that can be used to affect the operation of a device. Electronic circuits such as controllers, field programmable gate arrays, processors and memories (both volatile and non-volatile) that include processor executable instructions are examples of logic. In particular, the logic does not exclude pure signals or software (but does not exclude machine memory that includes software and thereby form configurations of matter).

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..Various logical function operations described herein may be implemented in a logic referenced by a noun or noun term, which reflects the stated operation or function. For example, an association operation may be performed by an "associator" or "correlator." Similarly, switching through a "Switch" and a selection by a "selector" done etc ..

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.It will be appreciated by those skilled in the art that the logic may be distributed over one or more devices or components and / or may consist of combinations of memories, media, processing circuitry and controllers, other circuitry, and so on. Therefore, for the sake of clarity and correctness, the logic may not always be clearly shown in drawings of devices and systems, although it is inherently present therein. The techniques and methods described herein may be implemented via logic distributed in one or more computing devices. The particular distribution and choice of logic depends on the implementation.

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.In this disclosure, various units (which may be referred to variously as "units," "circuits," other components, etc.) may be described as "configured" or claimed to perform one or more tasks or operations. This formulation - [entity], which is configured to perform one or more tasks - is used herein to refer to a structure (i.e., something physical, such as an electronic circuit). More specifically, this phrase is used to indicate that this structure is arranged to perform one or more tasks during operation. A structure may be referred to as "configured" to perform a task, even though the structure is not currently operating. For example, a "credit distribution circuit configured to distribute credits to a plurality of processor cores" is intended to include an integrated circuit having a circuit that performs this function during operation, even though the integrated circuit in question is not currently used (FIG. because eg no power supply is connected). Thus, an entity described or referred to as "configured" to perform a task refers to something physical, such as a mouse. a device, a circuit, a memory storing program instructions executable to perform the task, etc. This term is not used herein to refer to something immaterial.

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.The term "configured to" does not mean "configurable to". For example, an unprogrammed FPGA may not be considered "configured to" to perform a particular function, although it may be "configurable to" to perform this function after programming.

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.The indication in the appended claims that a structure is "configured to perform" one or more tasks is expressly intended not to be limited to 35 U.S.C. § 112 (f) to appeal for this claim element. Accordingly, claims in this application that do not otherwise have the construct "means for" [performing a function] should not be used in accordance with 35 U.S.C. § 112 (f).

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“.The term "dependent on" is used herein to describe one or more factors that influence a determination. This term does not exclude that additional factors may influence the determination. That is, a determination may be based solely on certain factors or on the particular factors as well as on other unspecified factors. The expression "A depends on B" describes that B is a factor used to determine A or influence the determination of A. This expression does not exclude that the determination of A can also be based on another factor, such as C. This expression is also intended to cover an embodiment in which A is determined solely on the basis of B. As used herein, the term "dependent on" is synonymous with the term "at least partially dependent on".

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.As used herein, the term "dependent on" also describes one or more factors that trigger an effect. This term does not exclude the possibility that additional factors may influence or otherwise trigger the effect. That is, an effect may occur solely in response to these factors or in response to the specified factors as well as other unspecified factors. The expression "A depends on B" implies that B is a factor that triggers the execution of A. This expression does not exclude that the execution of A can also be in response to another factor, such as C. This expression is also intended to cover an embodiment in which A is performed exclusively depending on B.

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.The terms "first", "second", etc. are used as names for nouns that they precede, and do not imply any sort of order (eg, spatial, temporal, logical, etc.) if it is not stated otherwise. For example, in a register file with eight registers, the terms "first register" and "second register" may be used to refer to any two of the eight registers, not, for example, only logical registers 0 and 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.In the claims, the term "or" is used as an inclusive or rather than an exclusive or. For example, the expression "at least one of x . y or z "One of x . y and z as well as any combination thereof.

Claims (18)

Verfahren zum Kodieren einer Reihe von Datenbits, umfassend: Aufteilen der Reihe von Datenbits in Sequenzen einer Anzahl von Bits, wobei die Anzahl von Bits von einer Anzahl von Spannungsniveaus N abhängt, welche bei einem PAM-N-Symbol eingesetzt werden; Kodieren einer ersten Anzahl von Bits von jeder der Sequenzen als ein N-Niveau-Symbol, wobei die erste Anzahl von Bits dem Logarithmus zur Basis 2 von N entspricht; Kodieren einer nächsten Anzahl von Bits von jeder der Sequenzen als zwei M-Niveau-Symbole, wobei die nächste Anzahl von Bits log2 [(N^2)/2] entspricht und M eine ganze Zahl ist, welche gleich einer Aufrundungsfunktion ist, die auf eine Quadratwurzel von [(N^2)/2] angewendet wird; und Übertragen des N-Niveau-Symbols und der zwei M-Niveau-Symbole auf einem seriellen Datenbus.A method of encoding a series of data bits, comprising: Dividing the series of data bits into sequences of a number of bits, the number of bits depending on a number of voltage levels N used in a PAM-N symbol; Encoding a first number of bits of each of the sequences as an N level symbol, the first number of bits corresponding to the base 2 logarithm of N; Encoding a next number of bits of each of the sequences as two M-level symbols, wherein the next number of bits is log2 [(N ^ 2) / 2], and M is an integer equal to a round-up function a square root of [(N ^ 2) / 2] is applied; and Transmitting the N-level symbol and the two M-level symbols on a serial data bus. Verfahren zum Betreiben eines seriellen Datenbusses, wobei das Verfahren umfasst: Aufteilen einer Reihe von Datenbits zur Übertragung auf dem seriellen Datenbus in eine Mehrzahl von Sequenzen von jeweils fünf Bits; Kodieren von ersten zwei Bits von jeder der Sequenzen von fünf Bits auf dem seriellen Datenbus als ein Vier-Niveau-Symbol; und Kodieren von nächsten drei Bits von jeder der Sequenzen von fünf Bits auf dem seriellen Datenbus als zwei Drei-Niveau-Symbole.A method of operating a serial data bus, the method comprising: Dividing a series of data bits for transmission on the serial data bus into a plurality of sequences of five bits each; Encoding first two bits of each of the sequences of five bits on the serial data bus as a four-level symbol; and Encoding next three bits of each of the sequences of five bits on the serial data bus as two tri-level symbols. Verfahren nach Anspruch 2, wobei die zwei Drei-Niveau-Symbole ausgewählt werden, um eine Möglichkeit eines maximalen Spannungsunterschieds zwischen Vier-Niveau-Symbolen auf dem seriellen Datenbus zu vermeiden.Method according to Claim 2 , wherein the two tri-level symbols are selected to avoid a possibility of a maximum voltage difference between four-level symbols on the serial data bus. Verfahren nach Anspruch 2, darüber hinaus umfassend: selektives Kodieren der nächsten drei Bits von jeder der Sequenzen von fünf Bits auf dem seriellen Datenbus unter der Bedingung, ob die ersten zwei Bits von jeder der Sequenzen von fünf Bits als ein Vier-Niveau-Symbol mit einem höchsten Symbol-Spannungsniveau oder einem niedrigsten Symbol-Spannungsniveau kodiert werden, welche durch den seriellen Datenbus eingesetzt werden.Method according to Claim 2 further comprising: selectively encoding the next three bits of each of the sequences of five bits on the serial data bus on the condition that the first two bits of each of the sequences of five bits represent a four-level symbol having a highest symbol Voltage level or a lowest symbol voltage level are used, which are used by the serial data bus. 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 liegt oder (b) höchstens zwei Spannungsstufen oberhalb des Spannungsniveaus des Vier-Niveau-Symbols liegt.Method according to one of Claims 2 to 4 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, wherein a voltage level of the first tri-level symbol is either (a) at most two voltage levels below a voltage level of the four level Or (b) at most two voltage levels above the voltage level of the four-level symbol. 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 zur Übertragung auf dem seriellen Datenbus und eine zweite Sequenz von fünf Bits zur Übertragung 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.Method according to one of Claims 2 to 5 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, and further comprising: the sequences of five bits comprising a first sequence of five bits for transmission on the serial data bus and a second sequence of five bits for transmission after the first sequence of five bits on the serial data bus; and a voltage level of the first three-level symbol of the first sequence of five bits is either (a) at most two voltage levels below a voltage level of the four-level symbol of the second sequence of five bits or (b) at most two voltage levels above the voltage level of the five-bit Four-level symbol of the second sequence of five bits. Verfahren zum Betreiben eines seriellen Datenbusses, wobei das Verfahren umfasst: Aufteilen einer Reihe von Datenbits zur Übertragung auf dem seriellen Datenbus in Sequenzen von sieben Bits; Kodieren von ersten vier Bits von jeder der Sequenzen von sieben Bits auf dem seriellen Datenbus als zwei Vier-Niveau-Symbole; und Kodieren der nächsten drei Bits von jeder der Sequenzen von sieben Bits auf dem seriellen Datenbus als zwei Drei-Niveau-Symbole.A method of operating a serial data bus, the method comprising: Dividing a series of data bits for transmission on the serial data bus into sequences of seven bits; Encoding first four bits of each of the sequences of seven bits on the serial data bus as two four-level symbols; and Encoding the next three bits of each of the sequences of seven bits on the serial data bus as two tri-level symbols. Verfahren nach Anspruch 7, wobei der serielle Datenbus eine erste Datenspur und eine zweite Datenspur umfasst, und wobei eine Übertragung der zwei Vier-Niveau-Symbole zeitlich zwischen der ersten Datenspur und der zweiten Datenspur versetzt wird.Method according to Claim 7 wherein the serial data bus comprises a first data track and a second data track, and wherein a transmission of the two four-level symbols is offset in time between the first data track and the second data track. Verfahren nach Anspruch 8, wobei das Versetzen der Übertragung der zwei Vier-Niveau-Symbole zwischen der ersten Datenspur und der zweiten Datenspur eine Übertragung der zwei Vier-Niveau-Symbole für die erste Datenspur während eines anderen Taktintervalls als die Übertragung der zwei Vier-Niveau-Symbole für die zweite Datenspur umfasst.Method according to Claim 8 wherein putting the transmission of the two four-level symbols between the first data track and the second data track comprises transmitting the two four-level symbols for the first data track during a clock interval other than transmitting the two four-level symbols for the first second data track. 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 dem seriellen Datenbus unter der Bedingung, ob zweite zwei Bits von jeder der Sequenzen von sieben Bits als ein Vier-Niveau-Symbol bei einem höchsten Symbol-Spannungsniveau oder einem niedrigsten Symbol-Spannungsniveau, welche durch den seriellen Datenbus eingesetzt werden, kodiert wird.Method according to one of Claims 7 to 9 further comprising: selectively encoding the next three bits of each of the sequences of seven bits on the serial data bus under the condition that second two bits of each of the seven-bit sequences as a four-level symbol at a highest symbol voltage level or a lowest symbol Voltage level, which are used by the serial data bus is encoded. 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 (a) höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus eines zweiten der zwei Vier-Niveau-Symbole liegt oder (b) höchstens zwei Spannungsstufen oberhalb des Spannungsniveaus des zweiten der zwei Vier-Niveau-Symbole liegt.Method according to one of Claims 7 to 10 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, wherein a voltage level of the first tri-level symbol is either (a) at most two voltage levels below a voltage level of a second of the two Is four-level symbols or (b) is at most two voltage levels above the voltage level of the second of the two four-level symbols. 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 zur Übertragung auf dem seriellen Datenbus und eine zweite Sequenz von sieben Bits zur Übertragung auf dem seriellen Datenbus nach der Übertragung der ersten Sequenz von sieben Bits auf dem seriellen Datenbus; 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 der zwei Vier-Niveau-Symbole der ersten Sequenz von sieben Bits.Method according to one of Claims 7 to 11 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, and further comprising: the sequences of seven bits comprising a first sequence of seven bits for transmission on the serial data bus and a second sequence of seven bits for transmission on the serial data bus after transmission of the first sequence of seven bits on the serial data bus; and a voltage level of the second three-level symbol of the first sequence of seven bits is either (a) at most two voltage levels below a voltage level of a second of the two four-level symbols of the first sequence of seven bits or (b) at most two voltage levels above the second of the two four-level symbols of the first sequence of seven bits. Sender eines seriellen Datenbusses, umfassend: mehrere Leitungstreiberschaltungen; eine Logik, welche mit den Leitungstreiberschaltungen gekoppelt ist, um erste zwei Bits einer Sequenz von fünf Bits als ein Vier-Niveau-Symbol zu kodieren und um nächste drei Bits von jeder der Sequenzen von fünf Bits als zwei Drei-Niveau-Symbole zu kodieren.Transmitter of a serial data bus, comprising: a plurality of line driver circuits; a logic coupled to the line drive circuits to encode first two bits of a five-bit sequence as a four-level symbol and to encode next three bits of each of the five-bit sequences as two tri-level symbols. Sender eines seriellen Datenbusses nach Anspruch 13, darüber hinaus eine Logik umfassend, welche die nächsten drei Bits als die zwei Drei-Niveau-Symbole unter der Bedingung kodiert, ob die ersten zwei Bits von jeder der Sequenz von fünf Bits als ein Vier-Niveau-Symbol bei einem höchsten Spannungsniveau oder einem niedrigsten Spannungsniveau, welche auf dem seriellen Datenbus eingesetzt werden, kodiert ist.Sender of a serial data bus to Claim 13 further comprising a logic encoding the next three bits as the two tri-level symbols under the condition that the first two bits of each of the five-bit sequence be a four-level symbol at a highest voltage level or one lowest voltage level used on the serial data bus is encoded. Sender eines seriellen Datenbusses nach Anspruch 13 oder 14, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen, und wobei ein Spannungsniveau des ersten Drei-Niveau-Symbols höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus des Vier-Niveau-Symbols liegt.Sender of a serial data bus to Claim 13 or 14 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, and wherein a voltage level of the first tri-level symbol is at most two voltage levels below a voltage level of the four-level symbol , Sender eines seriellen Datenbusses nach einem der Ansprüche 13 bis 15, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen, und wobei ein Spannungsniveau des ersten Drei-Niveau-Symbols höchstens zwei Spannungsstufen oberhalb eines Spannungsniveaus des Vier-Niveau-Symbols liegt.Sender of a serial data bus to one of the Claims 13 to 15 wherein the two tri-level symbols comprise a first tri-level symbol and a second tri-level symbol, and wherein a voltage level of the first tri-level symbol is at most two voltage levels above a voltage level of the four-level symbol , Sender eines seriellen Datenbusses nach einem der Ansprüche 13 bis 16, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen; und wobei der Sender des seriellen Datenbusses darüber hinaus eine Logik umfasst, um ein Spannungsniveau des zweiten Drei-Niveau-Symbols einer ersten Sequenz von fünf Bits höchstens zwei Spannungsstufen unterhalb eines Spannungsniveaus des Vier-Niveau-Symbols einer zweiten Sequenz von fünf Bits einzustellen.Sender of a serial data bus to one of the Claims 13 to 16 wherein the two tri-level symbols include a first tri-level symbol and a second tri-level symbol; and wherein the serial data bus transmitter further comprises logic to set a voltage level of the second tri-level symbol of a first five-bit sequence at most two voltage stages below a four-level symbol voltage level of a second five-bit sequence. Sender eines seriellen Datenbusses nach einem der Ansprüche 13 bis 17, wobei die zwei Drei-Niveau-Symbole ein erstes Drei-Niveau-Symbol und ein zweites Drei-Niveau-Symbol umfassen; und wobei der Sender des seriellen Datenbusses darüber hinaus eine Logik umfasst, um ein Spannungsniveau des zweiten Drei-Niveau-Symbols einer ersten Sequenz von fünf Bits höchstens zwei Spannungsstufen oberhalb eines Spannungsniveaus des Vier-Niveau-Symbols einer zweiten Sequenz von fünf Bits einzustellen.Sender of a serial data bus to one of the Claims 13 to 17 wherein the two tri-level symbols include a first tri-level symbol and a second tri-level symbol; and wherein the serial data bus transmitter further comprises logic to set a voltage level of the second tri-level symbol of a first five-bit sequence at most two voltage levels above a four-level symbol voltage level of a second five-bit sequence.
DE102019107002.3A 2018-03-29 2019-03-19 REDUCTION OF COUPLING AND PERFORMANCE NOISE AT A PAM-4 I / O INTERFACE Pending DE102019107002A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862650168P 2018-03-29 2018-03-29
US62/650,168 2018-03-29
US15/929,094 2019-01-28
US15/929,094 US11966348B2 (en) 2019-01-28 2019-01-28 Reducing coupling and power noise on PAM-4 I/O interface

Publications (1)

Publication Number Publication Date
DE102019107002A1 true DE102019107002A1 (en) 2019-10-02

Family

ID=67910133

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019107002.3A Pending DE102019107002A1 (en) 2018-03-29 2019-03-19 REDUCTION OF COUPLING AND PERFORMANCE NOISE AT A PAM-4 I / O INTERFACE

Country Status (2)

Country Link
CN (1) CN110321312B (en)
DE (1) DE102019107002A1 (en)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4486739A (en) * 1982-06-30 1984-12-04 International Business Machines Corporation Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code
US7260155B2 (en) * 2001-08-17 2007-08-21 Synopsys, Inc. Method and apparatus for encoding and decoding digital communications data
US20030152154A1 (en) * 2002-02-14 2003-08-14 Johnson Ryan C. Coding and decoding system and method for high-speed data transmission
US7391834B2 (en) * 2002-10-01 2008-06-24 Intel Corporation Pulse amplitude modulated system with reduced intersymbol interference
US7113550B2 (en) * 2002-12-10 2006-09-26 Rambus Inc. Technique for improving the quality of digital signals in a multi-level signaling system
CN100452744C (en) * 2007-01-30 2009-01-14 杭州华三通信技术有限公司 Physical layer data transmitting method and receiving method and physical layer chip
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system
US8081705B2 (en) * 2008-06-27 2011-12-20 Crestron Electronics Inc. Digital video physical layer using a multi-level data code
US9244872B2 (en) * 2012-12-21 2016-01-26 Ati Technologies Ulc Configurable communications controller
US9270417B2 (en) * 2013-11-21 2016-02-23 Qualcomm Incorporated Devices and methods for facilitating data inversion to limit both instantaneous current and signal transitions
US9252997B1 (en) * 2014-07-10 2016-02-02 Qualcomm Incorporated Data link power reduction technique using bipolar pulse amplitude modulation
KR101713406B1 (en) * 2015-03-27 2017-03-07 아이디에이씨 홀딩스, 인크. Encoding method of real number m-ary signal, and encoding apparatus using the same

Also Published As

Publication number Publication date
CN110321312B (en) 2023-11-24
CN110321312A (en) 2019-10-11

Similar Documents

Publication Publication Date Title
DE102019108205B4 (en) UNRELAXED 433 ENCODING TO REDUCE COUPLING AND POWER NOISE ON PAM-4 DATA BUSES
DE102019107849A1 (en) 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses
DE102019107670B4 (en) RELAXED 433 ENCODING TO REDUCE COUPLING AND POWER NOISE ON PAM-4 DATA BUSES
DE602004004002T2 (en) Method and storage system based on dual data strobe mode and simple data strobe mode with data inversion
DE10134472B4 (en) Transmitting and receiving interface and method for data transmission
DE102019123711A1 (en) CODING TO AVOID MAXIMUM TRANSITIONS
DE102019133129A1 (en) MULTI-PHASE PROGRAMMING WITH SYMMETRIC GRAY CODING
DE1499722B1 (en) DEVICE FOR THE MODIFICATION OF INFORMATION WORDS
DE102016125131A1 (en) Efficient generation of stochastic spike patterns in nuclear-based neuromorphic systems
DE3508321A1 (en) PROGRAMMABLE CIRCUIT FOR CONTROLLING A LIQUID CRYSTAL DISPLAY
US11966348B2 (en) Reducing coupling and power noise on PAM-4 I/O interface
DE3043100A1 (en) DATA PROCESSOR WITH DATA CORRECTION FUNCTION
DE102019118340A1 (en) INVERTING CODING FOR A BUS WITH LIMITED HAMMING DISTANCE FOR INTERFACES WITH MULTIPLE BYTES
DE112020000461T5 (en) SELF-REFERENTED SINGLE-ENDED-CHIP-TO-CHIP COMMUNICATION
DE102020113386A1 (en) PROPORTIONAL AC-COUPLED EDGE-ENHANCING TRANSMISSION EQUALIZATION FOR MULTI-LEVEL PULSE AMPLITUDE-MODULATED SIGNALING
DE112017005197T5 (en) Hybrid compression scheme for efficiently storing synaptic weights in neuromorphic hardware cores
DE102019107002A1 (en) REDUCTION OF COUPLING AND PERFORMANCE NOISE AT A PAM-4 I / O INTERFACE
EP0769853B1 (en) Logic block for a viterbi decoder
DE10110567B4 (en) Data processing system with adjustable clocks for divided synchronous interfaces
DE102013016694B4 (en) Coding and decoding of redundant bits to make adjustments for memory cells with sticking errors
DE112021003136T5 (en) METHOD OF PERFORMING SYSTEM AND POWER MANAGEMENT VIA A SERIAL DATA COMMUNICATIONS INTERFACE
DE102019114978A1 (en) DATA BUS INVERSION (DBI) WITH PULSE AMPLITUDE MODULATION (PAM) AND REDUCTION OF COUPLING AND POWER NOISE WITH PAM-4 INPUT / OUTPUT
DE2233164A1 (en) CIRCUIT ARRANGEMENT FOR HIDING ANY SELECTABLE AREA OF A BIT SEQUENCE WHEN TRANSFERRED BETWEEN TWO REGISTERS
DE60109620T2 (en) scrambler AND METHOD FOR PREVENTING DATA WORDS
DE112004001830B4 (en) Data transmission system with reduced power consumption, method and transmission circuit

Legal Events

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