-
HINTERGRUND
-
Die PAM-4-Signalisierung (mit 4 Stufen) wird für zukünftige grafische Speicherschnittstellen vorgeschlagen, um die Übertragungsbandbreite zwischen Speicher und anderen Systemkomponenten, wie beispielsweise Zentraleinheiten (CPUs) und Grafikverarbeitungseinheiten (GPUs), zu erhöhen. Aufgrund der Verwendung von Signalen mit >2 Spannungspegeln ist PAM-4 anfälliger für Störungen durch ISI und Übersprechen als Verfahren mit zwei Spannungspegeln, wie PAM-2.
-
In der Telekommunikation ist die Inter-Symbol-Interferenz (ISI) eine Form der Verzerrung eines Signals, bei der ein Symbol die nachfolgenden Symbole stört. Dies ist ein störendes Phänomen, da die vorherigen Symbole eine ähnliche Wirkung haben wie Rauschen, was die Übertragung weniger zuverlässig macht.
-
Übersprechen ist jedes Phänomen, bei dem ein auf einer Schaltung oder auf einem Kanal eines Übertragungssystems übertragenes Signal einen unerwünschten Effekt in einer anderen Schaltung oder in einem anderen Kanal erzeugt. Übersprechen wird in der Regel durch unerwünschte kapazitive, induktive oder leitende Kopplung von einer Schaltung oder von einem Kanal mit einer/m anderen verursacht.
-
Es besteht daher ein Bedarf für eine Kodierung, die die Auswirkungen von ISI und Crosstalk in PAM-4-Systemen reduziert.
-
KURZZUSAMMENFASSUNG
-
Es werden Techniken offenbart, um ISI und Übersprechen in PAM-4-Signalisierungssystemen zu reduzieren. Diese Techniken verwenden eine Vermeidung von maximalen Übergängen bzw. eine Maximum Transition Avoidance (MTA), um maximale Spannungsübergänge zwischen PAM-4-Symbolen auf den Datenleitungen zu vermeiden. Die DBI-Leitung eines PAM-4-Busses wird zur Übertragung kodierter Symbole verwendet, und eine Half-Burst-Technik bzw. Halbblock-Technik wird zur Kodierung und Übertragung der PAM-4-Symbole auf den Datenleitungen angewendet.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
Um die Diskussion über ein bestimmtes Element oder einen bestimmten Vorgang leicht zu identifizieren, beziehen sich die höchstwertigsten Ziffern 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 einer 7-8-Bit-Kodierung 200 dar.
- 3 stellt eine Ausführungsform einer 7-8-Bit-Kodierung 300 dar.
- 4 stellt eine Ausführungsform einer Kodiererarchitektur 400 dar.
- 5 stellt ein Kodierungsverfahren 500 gemäß einer Ausführungsform dar.
- 6 stellt eine Ausführungsform einer Dekodiererarchitektur 600 dar.
- 7 stellt ein Dekodierungsverfahren 700 gemäß einer Ausführungsform dar.
- 8 stellt eine Ausführungsform eines 7-8-Bit-Codebuchs 800 dar.
- 9 stellt eine Ausführungsform eines Augendiagramms 900 dar.
- 10 stellt eine Ausführungsform eines Augendiagramms 1000 dar.
-
DETAILLIERTE BESCHREIBUNG
-
Unter Bezugnahme auf 1 umfasst ein Datenkommunikationssystem 100 einen Datenprozessor 102, der einen Verarbeitungskern 114, einen PAM-4-Symbolkodierer 104 und einen PAM-4-Sender 108 umfasst. Der Datenprozessor 102 kann in einigen Ausführungsformen eine GPU, eine CPU, ein System auf einem Chip (SoC) oder andere bekannte Datenverarbeitungssysteme und -vorrichtungen umfassen. Der Datenprozessor 102 kommuniziert mit einem GDDR-Speicher 112 über einen Speicherbus 118. Ein PAM-4-Empfänger 110 und ein PAM-4-Symboldekodierer 106 empfangen und verarbeiten PAM-4-Signale, die vom Datenprozessor 102 an den GDDR-Speicher 112 über den Speicherbus 118 übertragen werden.
-
Der Datenprozessor 102 verwendet einen internen Datenbus 116, um Datenblöcke zum und vom Verarbeitungskern 114 zu übertragen. Der PAM-4-Symbolkodierer 104 empfängt einen Block, der vom Verarbeitungskern 114 zu kodieren ist, und führt die Kodierung auf diesem Block 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 Symboldekodierer 106, um den Block zu dekodieren. Nach der Dekodierung wird der Block an den GDDR-Speicher 112 gesendet.
-
Dies ist eine vereinfachte Darstellung. In der Praxis gibt es typischerweise Kodierer und Dekodierer an beiden Enden des Speicherbusses 118 zum Schreiben und Lesen in den GDDR-Speicher 112.
-
2 stellt eine Ausführungsform der 7-8-Bit-Kodierung 200 dar. Sowohl für die Rohdaten 202 als auch für die kodierten Daten 204 entspricht jede Zeile DQ[i] einer seriellen Datenleitung. In den Rohdaten 202 sind die Spalten sequentielle 2-Bit-Positionen in 16-Bit-Datenblöcken. So werden beispielsweise das zweite und dritte Bit jedes Datenblocks in der Spalte mit der Bezeichnung d[2:3] dargestellt. Jeder Datenblock entspricht auf jeder seriellen Datenleitung DQ zwei 1/2-Blöcken zu je 8 Bits. So wird beispielsweise auf der seriellen Datenleitung DQ[0] der 16-Bit-Datenblock in einen ersten 1/2-Block d0[0]d0[7:1] und einen zweiten 1/2-Block d0[8]d0[15:9] unterteilt. Jeder 1/2-Block wird weiter in ein Paar 1-Bit:7-Bits unterteilt. So wird beispielsweise auf der seriellen Datenleitung DQ[0] der erste 1/2-Block d0[0]d0[7:1] in den 1-Bit-Wert d0[0] und den 7-Bit-Wert d0[7:1] unterteilt. Die Rohdaten werden nicht tatsächlich auf der seriellen Datenleitung übertragen, und die Darstellungen der Rohdaten in 2 und 3 sollen lediglich zeigen, wie die Rohdaten zur Kodierung aufgeteilt werden.
-
Bezogen auf die kodierten Daten 204 sind die Zeilen wieder die seriellen Datenleitungen, aber jetzt sind die Spalten Bitketten, die Symbole darstellen. So stellt beispielsweise s[0] das erste 2-Bit-PAM-4-Symbol auf jeder seriellen Datenleitung dar, s[1] das zweite 2-Bit-PAM-4-Symbol auf jeder seriellen Datenleitung, und so weiter. Die 7-8-Bitkodierung 200 kodiert Paare der 1-Bit-Rohdatenwerte von verschiedenen seriellen Datenleitungen als PAM-4-Symbole auf dem seriellen Datenpfad des DBI. Die restlichen 7 Bits jedes 1/2 Datenblocks werden in vier PAM-4-Symbole (8 Bits, hier Codewort genannt) auf der entsprechenden seriellen Datenleitung kodiert. So wird beispielsweise d0[7:1] als Codewort c0[7:0] auf DQ[0] kodiert. Das Codewort für jeweils 7 Bits an Rohdaten entspricht vier PAM-4-Symbolen. Die Zuordnung von 7-Bit-Rohdatenwerten zu Codewörtern erfolgt nach einem Algorithmus/Mapping, der/das maximale Übergänge zwischen den für die Codewörter auf den seriellen Datenleitungen erzeugten PAM-4-Spannungspegeln eines Bereichs vermeidet. Eine Ausführungsform dieses Algorithmus/Mappings wird im Folgenden näher beschrieben.
-
Die 7-8-Bit-Kodierung 200 und die 7-8-Bit-Kodierung 300 veranschaulichen eine Implementierung, bei der das erste Bit jedes 1/2-Blocks in ein Symbol auf der seriellen DBI-Datenleitung kodiert wird. In den exemplarisch kodierten Daten 204 werden d0[0] und d1[0] als 2-Bit-PAM-4-Symbol auf der seriellen Datenleitung des DBI kodiert. Ebenso werden d2[0] und d3[0] als 2-Bit-PAM-4-Symbol auf der seriellen DBI-Datenleitung kodiert, und so weiter. 3 veranschaulicht eine andere Ausführungsform einer 7-8-Bit-Codierung 300 zum Erzeugen kodierter Daten 302, bei der d0[0] und d0[8] als 2-Bit-PAM-4-Symbol auf der seriellen Datenleitung DBI kodiert werden, d1[0] und d1[8] als 2-Bit-PAM-4-Symbol auf der seriellen Datenleitung DBI kodiert werden, und so weiter. Im Allgemeinen kann jede Paarung der 1-Bit-Werte von den seriellen Datenleitungen (im Folgenden Verschachteln genannt) verwendet werden, um die PAM-4-Symbole auf der seriellen DBI-Datenleitung zu bilden. Im Allgemeinen kann jede Bitposition aus jedem 1/2-Block der 1-Bit-Wert sein, der in ein Symbol auf der seriellen Datenleitung des DBI kodiert wird, nicht nur Bit 0 und/oder Bit 8, wie es hier als Beispiel dargestellt ist.
-
Die folgende Abbildungstabelle wird in der folgenden Beschreibung zur Beschreibung der Codewörter verwendet. Dies ist nur ein nicht einschränkendes Beispiel zur Veranschaulichung.
Code | -3 | -1 | +1 | +3 |
Symbolbits | 00 | 01 | 11 | 10 |
Leitungsspannung (in % der Versorgungsspannung) | 50% | 66% | 83% | 100% |
-
Für jeden gegebenen 1/2-Block gibt es 139 PAM-4 Codewörter, die keine internen -3 bis +3 Übergänge aufweisen und ein Muster von {+3,+1,-1} oder {-3,-1 ,+1} aufweisen. Da nur 7 Bits oder jeder 1/2-Block kodiert werden bzw. wird, sind nur 128 der 139 möglichen Codewörter mit diesen Übergängen erforderlich, um die hierin beschriebenen Verfahren zur Vermeidung von maximalen Übergangen zu implementieren.
-
In einer Ausführungsform geht der Kodierer davon aus, dass das letzte (vierte) Symbol des vorherigen Codeworts +3, +1 oder -1 ist (aber nicht -3 sein kann), und das folgende Codewort wird invertiert, wenn das höchstwertige Bit (MSB) des vorherigen Codeworts 1 ist. In dieser Beschreibung wird das MSB des letzten Symbols des ersten Codeworts eines Codewort-Paares für einen vollständigen Rohdaten-Block mit cx[0] und das MSB des zweiten Codeworts mit cx[8] bezeichnet, wobei x die Nummer der seriellen Datenleitung DQ ist, auf der das Codewort gesendet oder empfangen wird.
-
Diese Techniken vermeiden ein maximales Übergangsereignis (+3 => -3 oder -3 => +3) zwischen Blöcken von Symbolen. In einer Ausführungsform ist der Datenbus bei +3 im Leerlauf, so dass das erste Symbol eines kodierten Blocks +3, +1, -1, aber nicht -3 sein kann, jedoch gibt es keine Einschränkung der Werte des letzten Symbols eines kodierten Blocks, und somit kann das letzte Symbol in einem kodierten Block theoretisch bei -3, -1, +1 oder +3 liegen. Die Kodierung invertiert selektiv die Symbole an den Blockgrenzen, um einen Übergang von -3 zu +3 an den Blockgrenzen zu vermeiden. Am Ende eines kodierten Blocks gibt es vier mögliche Symbole: -3, -1, +1, +3. Wenn das letzte Symbol des aktuellen kodierten Blocks +1 oder +3 (MSB ist „1“) ist, wird der nächste Block mittels der normalen Kodierungstabelle übertragen. Wenn das letzte Symbol des aktuellen kodierten Blocks -3 oder -1 („MSB ist „0“) ist, dann verwendet der Kodierer Komplemente der Ausgaben des kodierten Blocks.
-
Die Behandlung bestimmter Grenzfälle wird im Folgenden näher beschrieben.
-
Die Symbole, die auf der seriellen Datenleitung des DBI platziert sind, können mit dieser Technik +3/-3-Übergänge aufweisen und sollten technisch so weit von den Datenleitungen entfernt sein, dass Interferenzen mit den Daten vermieden werden.
-
4 stellt eine Kodiererarchitektur 400 dar, die einen Kodiererblock 402, der einen 7:8-Kodierer 404, eine XNOR-Bank 406 und eine Verzögerung 408 für die serielle Datenleitung DQ[0] beinhaltet, und einen Kodiererblock 410, der einen 7:8-Kodierer 412, eine XNOR-Bank 414 und eine Verzögerung 416 für die serielle Datenleitung DQ[1] umfasst, umfasst. Ein Verteiler bzw. Splitter 420 verteilt die Bits am Eingang des Kodiererblocks 402, und ein Verteiler 422 verteilt die Bits am Eingang des Kodiererblocks 410. Ein Verteiler 424 verteilt die Bits am Ausgang des Kodiererblocks 402, und ein Verteiler 426 verteilt die Bits am Ausgang des Kodiererblocks 410. Diese Struktur wiederholt sich für andere Datenleitungen, die zur Vereinfachung der Beschreibung nicht dargestellt sind. Die Kodiererarchitektur 400 beinhaltet auch eine Verschachtelung 418.
-
In einer Ausführungsform umfasst jede XNOR-Bank acht XNOR-Gatter mit zwei Eingängen (die in 6 gezeigte Dekodierer-Ausführungsform verwendet die selbe Struktur), um selektiv Bits eines Codeworts zu invertieren, welches sich bezüglich des MSB vom unmittelbar vorhergehenden Codeworts unterscheidet, das gesendet oder empfangen wurde. Jedes XNOR-Gatter hat einen ersten Eingang, der das MSB ist, und einen zweiten Eingang, der ein Bit von dem Codewort ist, an dem gearbeitet wird.
-
Die Kodiererarchitektur 400 kann in Übereinstimmung mit dem in 5 dargestellten Kodierungsverfahren 500 arbeiten.
-
Mit Bezug zu 5 empfängt ein Kodierungsverfahren 500 für jede Zeile einen 16-Bit-Block (Block 502). In einigen Ausführungsformen gibt es acht Leitungen. Der 16-Bit-Block wird in zwei 8-Bit-Halbblöcke aufgeteilt (Block 504). Ein Bit jedes Halbblocks für jede Leitung wird dann an eine Verschachtelung gesendet (Block 506), das mit ähnlichen Bits von anderen Datenleitungen verschachtelt wird (Block 508). Die verschachtelten Bits werden dann entlang der DBI-Leitung als PAM-4-Symbole an den Empfänger gesendet (Block 510).
-
Die restlichen 7-Bit-Halbblöcke werden 7:8-Bit kodiert (Block 512). Ein Codebuch kann verwendet werden, um die 7:8-Bit-Kodierung durchzuführen. Es wird das höchstwertige Bit (MSB) des vorherigen Codeworts bestimmt (Block 514). Ist das MSB „1“ (Entscheidungsblock 516), so wird das Codewort invertiert (Block 518). Das MSB des aktuellen Codeworts wird für die Verwendung mit dem nächsten Codewort (Block 520) gespeichert. Die Codewörter werden dann als mehrstufige PAM-4-Symbole (Block 522) entlang der Leitung gesendet. Das Kodierungsverfahren 500 endet dann (Ende-Block 524).
-
6 zeigt eine Dekodiererarchitektur 600, die der Kodiererarchitektur 400 von 4 entspricht. Die Dekodiererarchitektur 600 umfasst einen Dekodiererblock 602 für DQ[0], der einen 8:7-Dekodierer 608, eine XNOR-Bank 604, eine Verzögerung 606 und eine Verschachtelung 610 beinhaltet. Ein Verteiler 622 verteilt das Eingangsdatensignal auf den Dekodiererblock 602 auf. Der Dekodiererblock 612 für DQ[1] beinhaltet ebenfalls einen 8:7-Dekodierer 616, eine XNOR-Bank 614, eine Verzögerung 618 und eine Verschachtelung 620. Ein Verteiler 624 verteilt das Eingangsdatensignal an den Dekodiererblock 612. Ein Verteiler 626 verteilt das Eingangs-DBI-Signal an die Verschachtelung. Eine ähnliche Struktur wird für die Datenleitungen wiederholt, die nicht dargestellt sind.
-
Die Dekodiererarchitektur 600 kann gemäß dem in 7 dargestellten Dekodierungsverfahren 700 arbeiten.
-
Mit Bezug zu 7 empfängt ein Dekodierungsverfahren 700 das Codewort auf einer Datenleitung (Block 702). Das Dekodierungsverfahren 700 bestimmt, ob das MSB des vorherigen Codeworts eine „1“ ist (Entscheidungsblock 704). Wenn dies der Fall ist, wird das aktuell verarbeitete Codewort invertiert (Block 706). Sobald invertiert wurde oder wenn keine Invertierung durchgeführt wird, wird die 8:7-Dekodierung des Codeworts durchgeführt, um den Halbblock wiederherzustellen (Block 708). Die verschachtelten Bits von der DBI-Leitung werden empfangen (Block 710) und auf die entsprechenden Datenleitungen aufgeteilt (Block 712), (Block 714). Die DBI-Bits werden mit dem zugehörigen Halbblock neu kombiniert (Block 716). Die Halbblöcke für jede Leitung werden dann zum Vollblock für diese Leitung zusammengefasst (Block 718).
-
8 veranschaulicht ein exemplarisches 7-8-Bit-Codebuch 800 und ein invertiertes Codebuch 806. Das abgebildete 7-8-Bit-Codebuch 800 zeigt die Eingangsdaten 802 und deren Zuordnung zu den Codewörtern 804. Jeder 7-Bit-Halbblock der Eingangsdaten 802 wird durch die 7:8-Codierung auf einen 8-Bit-Wert in den Codewörtern 804 abgebildet. Das invertierte Codebuch 806 kann zur Kodierung der Eingangsdaten 802 verwendet werden, wenn das MSB des vorherigen Codeworts wie zuvor beschrieben auf „1“ gesetzt war. Ob ein invertiertes Codebuch 806 verwendet wird oder ob das Codewort aus dem 7-8-Bit-Codebuch 800 mit Logikgattern wie einer XNOR-Bank 406 invertiert wird, ist eine Entwurfswahl, die auf der Grundlage der erforderlichen Leistung, der Schaltungsfläche und möglicherweise anderer Überlegungen getroffen wird.
-
Das 7-8-Bit-Codebuch 800 wird erzeugt, um Übergänge zu verwenden, die +3 <-> -3 (maximale Übergänge) vermeiden. Unter Verwendung von Wiederholungsbeziehungen:
- • a[i]: Anzahl der PAM-4-Symbolsequenzen, die mit - 3 enden.
- • b[i]: Anzahl der PAM-4-Symbolsequenzen, die mit - 1 enden.
- • c[i]: Anzahl der PAM-4-Symbolsequenzen, die mit + 1 enden.
- • d[i]: Anzahl der PAM-4-Symbolsequenzen, die mit + 3 enden.
-
Dann sind die Wiederholungsbeziehungen wie folgt. Die a- und d-Terme beinhalten nur drei Beziehungen, da -3 -> +3 und +3 -> -3 nicht verwendet werden.
- • a[i] = a[i-1]+b[i-1]+c[i-1]
- • b[i] = a[i-1]+b[i-1]+c[i-1]+d[i-1]
- • c[i] = a[i-1]+b[i-1]+c[i-1]+d[i-1]
- • d[i] = b[i-1]+c[i-1]+d[i-1]
-
Es gibt 139 Möglichkeiten für Codewörter, die nicht zu +3/-3-Übergängen führen. Aus diesen werden 128 als Einträge im 7-8-Bit-Codebuch 800 ausgewählt. Es gibt zwei Fälle, die bei der Anwendung des Codebuchs zu berücksichtigen sind.
- Fall I: MSB des letzten Symbols = 1
- Fall II: MSB des Symbols = 0.
-
Für Fall I ist das letzte Symbol des Blocks entweder +1 oder +3, daher sollte das erste Symbol des nachfolgenden Blocks auf {+3,+1 ,-1} beschränkt sein. Für Fall II ist das letzte Symbol entweder -3 oder -1, und damit ist das nachfolgende erste Symbol auf {-3,-1,+1} beschränkt. Es ist unnötig, zwei getrennte Codebücher zu führen, und es reicht aus, das Codebuch für verschiedene Fälle zu invertieren (z.B. im ursprünglichen Fall ist MSB=0 und im invertierten Fall ist MSB=1).
-
Eine Möglichkeit, ISI in einem Datenübertragungssystem experimentell zu untersuchen, besteht darin, die empfangene Welle auf die vertikalen Ablenkplatten eines Oszilloskops aufzubringen und eine Sägezahnwelle mit der übertragenen Symbolrate R (R = 1/T) auf die horizontalen Ablenkplatten aufzubringen. Die resultierende Anzeige wird wegen seiner Ähnlichkeit mit dem menschlichen Auge als Augenmuster bezeichnet. Der innere Bereich des Augenmusters wird als Augenöffnung bezeichnet. Ein Augenmuster liefert viele Informationen über die Leistungsfähigkeit des Systems. Es ist ein Werkzeug zur Bewertung der kombinierten Auswirkungen von Kanalrauschen und Intersymbolstörungen auf die Leistung des Übertragungssystems. Es ist die synchronisierte Überlagerung aller möglichen Realisierungen des interessierenden Signals, die innerhalb eines bestimmten Signalisierungsintervalls betrachtet werden.
- 1. Die Breite der Augenöffnung definiert das Zeitintervall, in dem die empfangene Welle ohne Fehler vom ISI abgetastet werden kann. Die bevorzugte Zeit für die Probenahme ist der Zeitpunkt, zu dem das Auge am weitesten geöffnet ist.
- 2. Die Empfindlichkeit des Systems gegenüber Zeitfehlern wird durch die Schließrate des Auges bestimmt, wenn die Abtastzeit variiert wird.
- 3. Die Höhe der Augenöffnung zu einer bestimmten Abtastzeit definiert den Abstand zum Rauschen.
-
Der Rauschabstand - die Rauschmenge, die erforderlich ist, damit der Empfänger einen Fehler erhält - ergibt sich aus dem Abstand zwischen dem Signal und dem Nullamplitudenpunkt zur Abtastzeit; mit anderen Worten, je weiter von Null zur Abtastzeit das Signal entfernt ist, desto besser ist es. Damit das Signal richtig interpretiert werden kann, muss es irgendwo zwischen den beiden Punkten abgetastet werden, an denen sich die Null-zu-Eins- und die Eins-zu-Null-Übergänge kreuzen. Auch hier gilt: Je weiter diese Punkte auseinander liegen, desto besser, da das Signal weniger empfindlich auf Fehler im Timing der Abtastwerte am Empfänger reagiert.
-
Mit Bezug zu 9 und 10 vergrößern die hierin beschriebenen Verfahren das obere und untere Auge (Augendiagramm 900, Augendiagramm 1000) für PAM-4-Übertragungen über Ansätze, die nicht die MTA-Kodierung verwenden. Das mittlere Auge kann sich je nach Positionierung der ISI-Cursor auch vergrößern. Die Augenvergrößerung kann bei Frequenzen über 20 Gbit/s größer sein.