DE102020111397A1 - Fehlerkorrekturcode-(ECC-) und Datenbusinversions-(DBI-)Codierung - Google Patents

Fehlerkorrekturcode-(ECC-) und Datenbusinversions-(DBI-)Codierung Download PDF

Info

Publication number
DE102020111397A1
DE102020111397A1 DE102020111397.8A DE102020111397A DE102020111397A1 DE 102020111397 A1 DE102020111397 A1 DE 102020111397A1 DE 102020111397 A DE102020111397 A DE 102020111397A DE 102020111397 A1 DE102020111397 A1 DE 102020111397A1
Authority
DE
Germany
Prior art keywords
dbi
ecc
data message
encoded data
coding
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
DE102020111397.8A
Other languages
English (en)
Inventor
Vivek Joy Kozhikkottu
Shankar Ganesh Ramasubramanian
Dinesh Somasekhar
Melin Dadual
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020111397A1 publication Critical patent/DE102020111397A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Ausführungsformen können einen Prozessor für eine elektronische Vorrichtung betreffen, die einen Fehlerkorrekturcode- bzw. ECC-Codierer umfasst, der ECC-Codierung an einer Datennachricht ausführen soll, um eine ECC-codierte Datennachricht zu erzeugen. Die elektronische Vorrichtung kann ferner einen kommunikativ mit dem ECC-Codierer gekoppelten Datenbusinversions- bzw. DBI-Codierer umfassen, wobei der DBI-Codierer DBI-Codierung an der ECC-codierten Datennachricht ausführen soll, um eine DBI-codierte Datennachricht zu erzeugen. Es können andere Ausführungsformen beschrieben oder beansprucht werden.

Description

  • Stand der Technik
  • Beim Übertragen von in Datenverarbeitungssystemen kann es wünschenswert sein, die Daten gemäß einem oder mehreren Algorithmen zu codieren. Ein solcher Algorithmus kann Fehlerkorrekturcode- bzw. ECC-Codierung umfassen. Ein anderer solcher Algorithmus kann Datenbusinversions- bzw. DBI-Codierung umfassen.
  • Figurenliste
    • 1 zeigt ein Beispiel für einen Codierungs-/Decodierungspfad einer Datenverarbeitungsvorrichtung gemäß verschiedenen Ausführungsformen.
    • 2 zeigt einen Teil eines Beispiels für Datencodierung/-decodierung gemäß verschiedenen Ausführungsformen.
    • 3 zeigt einen anderen Teil eines Beispiels für Datencodierung/-decodierung gemäß verschiedenen Ausführungsformen.
    • 4 zeigt einen anderen Teil eines Beispiels für Datencodierung/-decodierung gemäß verschiedenen Ausführungsformen.
    • 5 zeigt ein Beispiel für eine Codierungstechnik, die von einem Codierer verwendet werden kann, gemäß verschiedenen Ausführungsformen.
    • 6 zeigt ein Beispiel für DBI-Codierung, die durch einen Hop in einem Kommunikationspfad verwendet werden kann gemäß verschiedenen Ausführungsformen.
    • 7 zeigt ein Beispiel für eine Decodierungstechnik, die von einem Decodierer verwendet werden kann, gemäß verschiedenen Ausführungsformen.
    • 8 zeigt eine beispielhafte Vorrichtung, die verschiedene vorliegende Ausführungsformen verwenden kann, gemäß verschiedenen Ausführungsformen.
  • Ausführliche Beschreibung
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen verwiesen, die einen Teil hiervon bilden, wobei gleiche Bezugszahlen durchweg gleiche Teile bezeichnen und in denen zur Veranschaulichung Ausführungsformen gezeigt sind, in denen der Gegenstand der vorliegenden Offenbarung praktiziert werden kann. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Die folgende ausführliche Beschreibung ist deshalb nicht im einschränkenden Sinne aufzufassen, und der Umfang der Ausführungsformen wird durch die angefügten Ansprüche und ihre Äquivalente definiert.
  • Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A oder B“ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann die Ausdrücke „bei einer Ausführungsform“ oder „bei Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere derselben oder verschiedenen Ausführungsformen beziehen können. Ferner sind die Ausdrücke „umfassend“, „enthaltend“, „aufweisend“ und dergleichen, sowie sie mit Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet werden, gleichbedeutend.
  • Es kann hier der Ausdruck „gekoppelt mit“ zusammen mit seinen Ableitungen verwendet werden. „Gekoppelt“ kann eines oder mehrere von Folgendem bedeuten. „Gekoppelt kann bedeuten, dass sich zwei oder mehre Elemente in direktem physischem oder elektrischem Kontakt befinden. „Gekoppelt kann jedoch auch bedeuten, dass zwei oder mehr Elemente einander indirekt kontaktieren, aber dennoch miteinander zusammenarbeiten oder interagieren, und kann bedeuten, dass ein oder mehrere andere Elemente zwischen die Elemente gekoppelt oder geschaltet sind, die als miteinander gekoppelt bezeichnet werden. Der Ausdruck „direkt gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem Kontakt befinden.
  • Verschiedene Operationen können auf eine Weise, die für das Verständnis des beanspruchten Gegenstands am hilfreichsten ist, der Reihe nach als mehrere diskrete Operationen beschrieben werden. Die Reihenfolge der Beschreibung sollte jedoch nicht als Bedingung aufgefasst werden, dass diese Operationen notwendigerweise reihenfolgeabhängig sind.
  • Wie oben erwähnt, können verschiedene Codierungstechniken auf Daten angewandt werden, wenn die Daten innerhalb eines Datenverarbeitungssystems transferiert werden. Beispiele für solche Codes wären ECC-Codierung, DBI-Codierung usw. Die ECC-Codierung kann verschiedene Arten von Codierungstechniken umfassen, wie etwa SEC (Einzelfehlerkorrektur), SECDED (Einzelfehlerkorrektur/Doppelfehlerdetektion), DECTED (Doppelfehlerkorrektur/Dreifachfehlerdetektion) usw.
  • Bei bestimmen Ausführungsformen kann es jedoch wünschenswert sein, sowohl ECC-Codierung als auch DBI-Codierung anzuwenden, da jede Technik verschiedene Vorteile für den Datentransfer aufweisen kann. Die Anwendung von DBI-Codierung vor ECC-Codierung kann im Allgemeinen ineffizient sein, da die DBI-Codierung Identifizierung des aktuellen Werts eines Busses und dann Anwendung von DBI mit Bezug auf den aktuellen Wert erfordern kann. DBI-Codierung kann latenzbeschränkt sein und zusätzlich kann eine ressourcenaufwendige ECC-Decodierung und -Neucodierung zusätzlich zur DBI-Codierung durchgeführt werden müssen. Diese ressourcenaufwendige ECC-Codierung-/Neucodierung kann eine verschärfte Besorgnis sein, weil viele Kommunikationskanäle mehrere Hops verwenden können, die wiederholte DBI-Anwendung an jedem Knoten erfordern können. Die Durchführung einer ECC-Decodierung, DBI-Decodierung, DBI-Neucodierung und ECC-Neucodierung in jedem Hop kann Latenz- und/oder Stromversorgungs-/Flächenoverheads in dem Kommunikationskanal vergrößern.
  • Um diese möglichen Latenz- oder Stromversorgungs-/Flächenbesorgnisse anzugehen, betreffen vorliegende Ausführungsformen die Anwendung von DBI-Codierung nach der Anwendung von ECC-Codierung. Insbesondere betreffen vorliegende Ausführungsformen die Verwendung einer Klasse von Codes, die Eigenschaften der H-Matrix benutzen können, um sicherzustellen, dass das erzeugte ECC-Syndrom dasselbe ist, gleichgültig, ob DBI auf die Daten angewandt wurde oder nicht. Die Daten können mit der Annahme ECC-codiert werden, das noch keine DBI angewandt wurde, und die bei der ECC-Codierung verwendeten Matrizen H und G werden so ausgelegt, dass jede nachfolgende Anwendung von DBI dasselbe ECC-Syndrom sicherstellt. Im vorliegenden Gebrauch kann sich die „G-Matrix“ auf eine Generatormatrix G beziehen, die zum Codieren von Daten gemäß einem ECC-Algorithmus verwendet werden kann. Die „H-Matrix“ kann sich auf eine Paritätsprüfmatrix H beziehen, die verwendet werden kann, um die Daten zu decodieren und Fehlerkorrektur an den codierten Daten auszuführen. Mit dem Syndrom kann man Datenfehler identifizieren. Das Syndrom kann im Allgemeinen gleich Hxt sein, wobei „x t“ die Transponierung des empfangene Datenvektors ist.
  • Allgemeiner betreffen Ausführungsformen die Erzeugung einer Klasse von Fehlerschutzcodes, die intrinsisch auf eine Weise konstruiert sind, die eine beliebige Anzahl von DBI-Operationen unterstützt, nachdem die ursprüngliche ECC-Berechnung durchgeführt wurde, während die ursprünglichen Fehlerkorrekturfähigkeiten des ECC-Codes beibehalten werden. Tatsächlich können die Codes sogar die DBI-Bit schützen, selbst wenn sie zum Zeitpunkt der ursprünglichen ECC-Codierungsoperation nicht anwesend wären.
  • Einige Ausführungsformen können Berechnung von ECC-Codierung unter Verwendung der Bit der ursprünglichen Datennachricht und dann Durchführen von ECC-Decodierung im DBI-Raum (z. B. Ausführen von ECC-Decodierung an einer DBI-codierten Nachricht) umfassen. Diese Ausführungsformen können insbesondere geeignet sein, wenn die DBI auf die gesamte ECC-codierte Nachricht angewendet wird. Bei vielen Ausführungsformen kann ECC-Codierung und DBI-Codierung jedoch bei verschiedenen Bitlängen optimal sein. ECC-Codes können logarithmische Overheads aufweisen und können im Allgemeinen über 64-512 Bit optimal sein, um Residenz- und Paritätsspeicherungsoverheads auszugleichen. Im Gegensatz dazu kann DBI über 6-10 Bit angewandt werden, um Energieersparnisse zu maximieren, während Stromversorgungsoverheads minimiert werden.
  • Um diese Bitlängenungleichheit anzugehen, ist zu beachten, dass der größte Teil von ECC-Codes, die in veralteten Systemen verwendet werden, lineare Codes sein kann. Bei Verwendung von linearen Codes kann, wenn eine Nachricht willkürlich in n distinkte Komponenten aufgeteilt wird, die Gesamtparität der Nachricht die Summe der Parität jeder Komponenten sein. Bei dieser Ausführungsform kann ein Bit von DBI auf alle k Bit der Nachricht angewandt werden. Folglich kann eine DBI-codierte Nachricht (k + 1) * n Bit umfassen. Abhängig von der in jedem der Teilsegmente k getroffenen DBI-Codierungsentscheidung kann das Nachrichtenbit somit 2n einzigartige DBI-Codierungen aufweisen. Wenn ein ECC-Code für alle diese 2n DBI-Codierungen dieselben Syndrom-/Paritätsbit erzeugt, kann eine gewisse willkürliche Kombination von DBI auf jedes Segment k entlang jeder Verbindung des Kommunikationspfads angewandt werden, und die DBI-Nachricht kann immer noch für einen gegebenen Code ein gültiges Codewort sein.
  • Als Ergebnis kann es für den Code wünschenswert sein, dass alle n Segmente der Länge (k + 1) Bit die Eigenschaft aufweisen, dass das Syndrom für {mi, 0} und { m l ˜ ,1 }
    Figure DE102020111397A1_0001
    identisch ist. Im vorliegenden Gebrauch kann sich {mi, 0} auf einen Teil einer Nachricht „mi“ und den DBI-Indikator „0“ beziehen, der angeben kann, dass keine Inversion bevorzugt wird. Ähnlich kann sich { m l ˜ ,1 }
    Figure DE102020111397A1_0002
    auf einen Teil einer Nachricht m l ˜
    Figure DE102020111397A1_0003
    beziehen, die eine bitweise Inversion der Nachricht mi ist, und den DBI-Indikator „1“, der die Inversion angibt. Als Folge dieses Wunsches, dass die Syndrome identisch sind, kann die G-Matrix G als (k + 1) * n Zeilen und p Spalten umfassend identifiziert werden, wobei p die Anzahl der Paritätsbit der ECC-Codierung ist. Um die Eigenschaft der Syndrome zu erfüllen, können sich die (k + 1) Zeilen von G zu null summieren. Deshalb kann die Codeanforderung zusammengefasst werden als alle n Submatrizen der gesamten G-Matrix G die Eigenschaft hat, dass sich die Zeilen in jeder Submatrix zu null summieren.
  • Die Aufgabe des Erhaltens einer linearen Menge von Spalten für die G-Matrix G kann auf ein Graph-Färbungsproblem abgebildet werden. Bei vielen Ausführungsformen kann jedoch eine relativ einfache Suchheuristik angemessen sein. Speziell kann für jeden gewünschten Code eine nicht abgeschnittene Spalte der G-Matrix G konstruiert werden, und dann kann eine rekursive Suche nach Gruppen der erforderlichen Anzahl von Spalten, die sich im nächsten Vektor zu null summieren, durchgeführt werden.
  • 1 zeigt ein Beispiel für einen Codierungs-/Decodierungspfad einer Datenverarbeitungsvorrichtung gemäß verschiedenen Ausführungsformen. Es ist zu beachten, dass auf der Basis von vorliegenden Ausführungsformen in Bezug auf den oben besprochenen vorgeschlagenen ECC-Code die ECC-Codierung und -Decodierung nur einmal im Kommunikationspfad durchgeführt werden kann. Außerdem ist zu beachten, dass, obwohl ECC-Codierung vor DBI-Codierung stattfinden kann, ECC-Decodierung vor der End-DBI-Decodierung stattfinden kann, so dass die ECC-Decodierung verwendet werden kann, um etwaige Fehler zu korrigieren, die bei der Übertragung vor der End-DBI-Decodierung aufgetreten sein können. Die DBI-Decodierung kann dann verwendet werden, um die ursprüngliche Nachricht wiederherzustellen.
  • Speziell kann, wie in 1 zu sehen ist, eine Eingangsnachricht 105 in einen ECC-Codierer 110 eingegeben werden. Die Eingangsnachricht kann Daten zum Beispiel von einem Prozessor oder Speicher und/oder Eingabe-/Ausgabe- bzw. E/A-Chip, einem Hochfrequenz- bzw. HF-Chip oder einem gewissen anderen Element einer Datenverarbeitungsvorrichtung umfassen. Der Prozessor kann zum Beispiel ein Prozessor wie eine CPU (Zentralverarbeitungseinheit), eine GPU (Generalverarbeitungseinheit), ein Kern eines verteilten Prozessors oder eine gewisse andere Art von Prozessor sein. Der Speicher kann zum Beispiel ein DDR-Speicher (Doppeldatenrate), ein NVM (nichtflüchtiger Speicher), ein flüchtiger Speicher, ein ROM (Festwertspeicher) oder eine gewisse andere Art von Speicher oder Baustein sein. Der HV-Chip kann zum Beispiel ein HV-Chip oder HV-Schaltkreise sein, die dafür ausgelegt sind, ein drahtloses Signal zu erzeugen, zu verarbeiten, zu senden oder zu empfangen, wie etwa ein drahtloses Signal des Typs 3G (Dritte Generation), 4G (Vierte Generation) oder 5G (Fünfte Generation), WiFi oder eines gewissen anderen Typs.
  • Der ECC-Codierer 110 kann ECC-Codierung an der Eingangsnachricht 105 ausführen. Speziell kann der ECC-Codierer 110 ECC-Codierung, wie etwa SEC-Codierung, SECDED-Codierung, DECTED-Codierung oder eine gewisse andere Art von ECC-Codierung an der Nachricht ausführen. Die ECC-Codierung kann auf der Basis der oben besprochenen G-Matrix durchgeführt werden, die (k + 1) * n Zeilen und p Spalten umfasst, und wobei sich die (k + 1) Zeilen von G zu null summieren. Der ECC-Codierer kann n ECC-codierte Datennachricht produzieren. Die ECC-codierte Datennachricht kann dann in einen DBI-Codierer 115a eingegeben werden, der DBI-Codierung an der ECC-codierten Datennachricht ausführen kann, um einen DBI-codierte Datennachricht zu produzieren.
  • Bei einigen Ausführungsformen können der ECC-Codierer 110 und der DBI-Codierer 115a Elemente eines einzigen Codierers sein. Der Codierer kann in Hardware, Software, Firmware oder einer gewissen Kombination davon implementiert werden. Bei anderen Ausführungsformen können der ECC-Codierer 110 und der DBI-Codierer 115a getrennt voneinander implementiert werden.
  • Die DBI-codierte Datennachricht kann dann auf dem Kommunikationspfad ausgegeben werden. Bei einigen Ausführungsformen kann der Kommunikationspfad eine Anzahl von Hops umfassen. Speziell kann wie in 1 abgebildet der Kommunikationspfad eine Anzahl von NoC-Verbindungen (Netzwerk-auf-Chip) 120a und 120b umfassen. Die NoC-Verbindungen 120a und 120b können aktive oder passive Schaltkreise umfassen, wie etwa Verstärker, Dämpfungsglieder, Widerstände, Kondensatoren, Transistoren usw., die zum Neuverstärken oder anderweitigen Ändern des Signals über die Länge des Kommunikationspfads verwendet werden können. Wie in 1 abgebildet, kann der Kommunikationspfad zwei NoC-Verbindungen 120a und 120b umfassen, obwohl es sich versteht, dass der Kommunikationspfad bei anderen Ausführungsformen mehr oder weniger NoC-Verbindungen umfassen kann. Obwohl die Hops in 1 als NoC-Verbindungen abgebildet sind, kann außerdem bei anderen Ausführungsformen der Kommunikationspfad zusätzlich oder als Alternative eine gewisse andere Art von Verbindung oder Knoten umfassen, die sich entlang der Länge des Kommunikationspfads auf das Signal auswirken kann.
  • Vor einem Hop im Kommunikationspfad kann ein zusätzlicher DBI-Codierer 115b in dem Kommunikationspfad erwünscht sein. Zum Beispiel kann der DBI-Codierer 115b, der dem DBI-Codierer 115a ähnlich sein kann, zwischen den NoC-Verbindungen 120a und 120b positioniert sein. Speziell kann der DBI-Codierer 115b über die NoC-Verbindung 120a das durch den DBI-Codierer 115a ausgegebene DBI-codierte Signal empfangen. Wie erwähnt kann bei einigen Ausführungsformen die NoC-Verbindung 120a das Signal verstärken, dämpfen oder anderweitig ändern, und in einigen Fällen kann es wünschenswert sein, DBI-Codierung an dem geänderten Signal neu auszuführen. Bei einigen Ausführungsformen kann der DBI-Codierer 115b deshalb das erste DBI-codierte Signal von der NoC-Verbindung 120a empfangen, DBI-Codierung an dem ersten DBI-codierten Signal ausführen, um ein zweites DBI-codiertes Signal zu produzieren, und das zweite DBI-codierte Signal auf der NoC-Verbindung 120b ausgeben. Bei einigen Ausführungsformen kann der DBI-Codierer 115 als Element der NoC-Verbindung 120a oder 120b betrachtet werden, während der DBI-Codierer 115b bei anderen Ausführungsformen getrennt von der NoC-Verbindung 120a oder 120b implementiert werden kann.
  • Die NoC-Verbindung 120b kann dann das zweite DBI-codierte Signal an einen ECC-Decodierer 130 ausgeben. Der ECC-Decodierer 130 kann eine H-Matrix H wie oben beschrieben werden, um das zweite DBI-codierte Signal zu decodieren und eine ECC-decodierte Datennachricht zu erzeugen. Wie oben erwähnt, kann die ECC-decodierte Datennachricht jedoch immer noch DBI-codiert werden. Deshalb kann die ECC-decodierte Datennachricht an einen DBI-Decodierer 135 ausgegeben werden, der DBI-Codierung an der ECC-decodierten Datennachricht ausführen kann, um eine Ausgangsnachricht 140 zu erzeugen. Die Ausgangsnachricht 140 kann im Allgemeinen mit der Eingangsnachricht 105 identisch sein (wenn es keinen Verbindungs- oder Datenausfall außerhalb der Korrekturfähigkeit der ECC-Code der Länge des Kommunikationspfads gibt).
  • Ähnlich wie der ECC-Codierer 110 und der DBI-Codierer 115a können der ECC-Decodierer 130 und der DBI-Decodierer 135 als ein einziger Decodierer implementiert werden. Speziell können der ECC-Decodierer 130 und der DBI-Decodierer 135 als ein einziges Stück Hardware, Software, Firmware oder eine gewisse Kombination davon implementiert werden. Bei anderen Ausführungsformen können der ECC-Decodierer 130 und der DBI-Decodierer 135 getrennt voneinander implementiert werden.
  • Es versteht sich, dass dieser Kommunikationspfad als ein Beispiel für einen solchen Pfad betrachtet werden kann und andere Ausführungsformen zusätzliche, in 1 nicht abgebildete Elemente oder weniger Elemente (z. B. weniger NoC-Verbindungen oder andere Elemente) als in 1 abgebildet umfassen können. Bei einigen Ausführungsformen kann jedes der Elemente in einer einzigen Datenverarbeitungsvorrichtung oder sogar auf einer einzigen Leiterplatte (PCB), einem Server-Sled oder Chip in einer Datenverarbeitungsvorrichtung implementiert werden. Bei anderen Ausführungsformen können bestimmte der Elemente (z. B. der ECC-Codierer 110 und der DBI-Codierer 115a) auf anderen Chips oder Platinen als andere der Elemente (z. B. der ECC-Decodierer 130 und der DBI-Decodierer 135) implementiert werden. Bei einigen Ausführungsformen können verschiedene der Elemente in verschiedenen Datenverarbeitungsvorrichtung implementiert werden. Zum Beispiel können der ECC-Codierer 110 und der DBI-Codierer 115a in einer Datenverarbeitungsvorrichtung implementiert werden, der DBI-Codierer 115b und die NoC-Verbindung 120b können in einer anderen Datenverarbeitungsvorrichtung implementiert werden und der ECC-Decodierer 130 und der DBI-Decodierer 135 können in einer anderen Datenverarbeitungsvorrichtung implementiert werden. Bei anderen Ausführungsformen können andere Varianten vorliegen.
  • 2-4 zeigen ein Beispiel für Verschlüsselung und Entschlüsselung einer Datennachricht gemäß vorliegenden Ausführungsformen. Es versteht sich, dass dieses Beispiel ein stark vereinfachtes Beispiel ist, das die Verschlüsselung/Entschlüsselung einer 8-Bit-Nachricht betrifft, und bei anderen Realwelt-Ausführungsformen die Verschlüsselungs-/Entschlüsselungstechniken komplizierter sein können, weil die Nachricht signifikant länger als 8 Bit sein kann.
  • Speziell kann die Technik bei 205 mit einer 8-Bit-Nachricht m starten. Die Nachricht m kann zum Beispiel der Eingangsnachricht bei 105 ähnlich sein. Dann kann eine G-Matrix G wie oben beschrieben identifiziert werden. G kann zum Beispiel für einen ECC-Codierer, wie etwa den ECC-Codierer bei 110, identifiziert werden. Speziell kann die G-Matrix G, die bei 210 gezeigt ist, als verkürzte G-Matrix betrachtet werden, die 5 Spalten und 8 Zeilen umfasst (d. h. eine 8x5-Matrix). Es versteht sich, dass in voller semantischer Form G eine 8x13-Matrix sein kann.
  • Der ECC-Codierer kann dann G und m benutzen, um bei 215 ein ECC-Syndrom zu berechnen. Speziell kann das ECC-Syndrom auf der Basis von m * G berechnet werden, wie in 3 gezeigt. Das Syndrom kann dann bei 220 an das Ende der Nachricht hinzugefügt werden, um eine ECC-codierte Datennachricht me zu bilden. Im Allgemeinen kann in 2 und 3 Straffierung verwendet werden, um DBI-Bit (unstraffiert), die Eingangsnachricht (leicht straffiert) und das ECC-Syndrom (staffiert mit weißen Zahlen) zu identifizieren. Diese Straffierung kann dabei helfen, für die Zwecke dieses Beispiels die verschiedenen Teile der Daten im Kommunikationspfad zu identifizieren.
  • Die ECC-codierte Datennachricht me kann dann durch den ECC-Codierer ausgegeben und in einen DBI-Codierer eingegeben werden, wie etwa den DBI-Codierer 115a, der DBI-Codierung an der ECC-codierten Datennachricht me ausführen kann. Speziell kann die DBI-Codierung Trennen der ECC-codierten Datennachricht me in Subsegmente und Hinzufügen eines DBI-Bits zu jedem Subsegment umfassen. Speziell kann der DBI-Codierer das me in zwei Subsegmente 245 trennen (d. h. k kann in diesem Beispiel gleich 2 sein) und an jedes Subsegment in DBI-Bit 250 anhängen. Wie oben erwähnt, kann das DBI-Bit gleich 0 sein, wenn keine Inversion der Daten im Subsegment k besteht, oder kann gleich 1 sein, wenn die Daten in dem Subsegment k invertiert werden. Bei 225 können, weil die Datenbit in jedem Subsegment k nicht invertiert sind, die DBI-Bit 250 gleich 0 sein. Diese Anwendung der DBI-Codierung kann die Nachricht me von 13 Bit auf einen 15-Bit-Datenvektor me0 exemplifizieren, der ein 1x15-Datenvektor ist.
  • Wie mit Bezug auf 1 erwähnt, kann der Kommunikationspfad dann eine Anzahl von Hops umfassen. In jedem Hop kann DBI-Codierung erneut durchgeführt werden. Wie in 3 gezeigt, kann der Kommunikationspfad 3 Hops umfassen, die jeweils den NoC-Verbindungen 120a oder 120b ähnlich sein können. Die DBI-Neucodierung kann durch einen DBI-Codierer, wie etwa den DBI-Codierer 115b, durchgeführt werden. Wie in 3 zu sehen ist, kann im ersten Hop 230 DBI-Codierung auf me0 angewandt werden, um eine weitere DBI-codierte Nachricht me1 zu erzeugen. Bei dieser DBI-Codierung kann das erste Subsegment 245 k bitweise invertiert werden (z. B. können die Datenbit in dem Subsegment, die 0 sind, in 1 umgeändert werden und umgekehrt). Diese Inversion kann als Verwandeln von mi in m l ˜ ,
    Figure DE102020111397A1_0004
    wie oben besprochen, betrachtet werden. Dementsprechend kann das DBI-Bit 250 von „0“ in „1“ umgeändert werden.
  • Ähnlich kann im zweiten Hop 235 DBI-Codierung an me1 ausgeführt werden, um eine DBI-codierte Nachricht me2 zu erzeugen. Speziell kann in me2 das zweite Subsegment 245 k bitweise invertiert werden, und das DBI-Bit 250 kann von „0“ in „1“ umgeändert werden.
  • Im dritten Hop 240 kann DBI-Codierung auf me2 angewandt werden, um eine DBI-codierte Nachricht me3 zu erzeugen. Wie ersichtlich kann im dritten Hop 240 keine Inversion durchgeführt werden, so dass me2 und me3 im Allgemeinen miteinander identisch sein können. Mit der Ausnahme des Syndroms können jedoch me1 und me3 im Allgemeinen voneinander invertiert sein, wie in 3 zu sehen ist.
  • me3 kann dann in einen ECC-Decodierer, wie etwa den ECC-Decodierer 130, eingegeben werden. Der ECC-Decodierer kann verwendet werden, um zu identifizieren, ob auf dem Kommunikationspfad Fehler in die Nachricht me3 eingeführt wurden. Wie oben erwähnt, kann das Syndrom s (das bei 215 berechnet und bei 220 and die Nachricht me angehängt wird) Hxt äquivalent sein, wobei „xt“ die Transponierung des empfangenen Datenvektors ist. Dementsprechend kann H durch den ECC-Decodierer auf der Basis von me3 berechnet werden. Ht ist bei 255 gezeigt. Speziell ist zur leichteren Abbildung Ht gezeigt, statt H, obwohl es sich versteht, dass entweder H oder Ht berechnet werden können und leicht voneinander abgeleitet werden können. Ht kann drei Abschnitte 265, 270 und 275 umfassen. Abschnitt 265 kann eine Berechnung auf der Basis des ersten Subsegments 245 und des ersten DBI-Bit 250 von me3 betreffen. Abschnitt 270 kann eine Berechnung auf der Basis des zweiten Subsegments 245 und des zweiten DBI-Bit 250 von me3 betreffen. Abschnitt 275 kann eine Imaginärkomponente auf der Basis des Syndroms s von me3 betreffen. H oder Ht können auch durch den ECC-Decodierer verwendet werden, um bei 260 eine entsprechende Generatormatrix G zu berechnen. Insbesondere kann die Generatormatrix G zwei Abschnitt 280 und 285 umfassen, die jeweils die Abschnitte 265 und 270 von Ht betreffen können. Die Paritätsprüfmatrix H oder Ht bei 2565 kann durch den ECC-Decodierer verwendet werden, um zu identifizieren, ob auf dem Kommunikationspfad Fehler in me3 eingeführt wurden, und wenn dem so ist, um Fehler gemäß üblichen ECC-Decodierungstechniken zu korrigieren.
  • Der ECC-Decodierer kann dann eine ECC-decodierte Datennachricht an einen DBI-Decodierer, wie etwa den DBI-Decodierer 135, ausgeben. Der DBI-Decodierer kann DBI-Decodierungstechniken auf die ECC-decodierte Datennachricht wie oben beschrieben anwenden, um die Ausgangsnachricht 140 wiederherzustellen.
  • Wie bereits erwähnt, ist das obige ein vereinfachtes Beispiel für ECC- und DBI-Codierung/-Decodierung gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. Es versteht sich, dass andere Realwelt-Ausführungsformen mehr oder weniger Elemente umfassen können, wie etwa eine vergrößerte Anzahl von Hops, eine vergrößerte Menge verschiedener Datennachrichten, verschiedene Dateninversion an einem oder mehreren der Hops usw.
  • 5 zeigt ein Beispiel für eine Codierungstechnik, die von einem Codierer verwendet werden kann, gemäß verschiedenen Ausführungsformen. Der Codierer kann zum Beispiel eine Kombination des ECC-Codierers 110 und des DBI-Codierers 115a sein. Wie zuvor erwähnt können der ECC-Codierer und der DBI-Codierer als ein einziges Element (z. B. ein einziges Stück Hardware, Software, Firmware usw.) oder getrennt voneinander implementiert werden. Die Technik kann bei 305 Identifizieren einer Datennachricht umfassen. Die Datennachricht kann zum Beispiel der durch den ECC-Codierer 110 empfangenen Eingangsnachricht 105 ähnlich sein.
  • Die Technik kann ferner bei 310 Durchführen von ECC-Codierung der Datennachricht umfassen, um ECC-codierte Datennachricht zu erzeugen. Die ECC-Codierung kann der oben mit Bezug auf den ECC-Codierer 110 oder die Elemente 210/215/220 beschriebenen ECC-Codierung ähnlich sein. Speziell kann die ECC-Codierung Identifizieren einer Generatormatrix G mit den oben beschriebenen Eigenschaften, Verwenden der Generatormatrix G zur Berechnung eines Syndroms s und Anhängen des Syndroms s an eine Nachricht m, um eine ECC-codierte Nachricht me zu erzeugen, umfassen.
  • Die Technik kann dann bei 315 Ausführen von DBI-Codierung an der ECC-codierten Datennachricht umfassen, um eine DBI-codierte Datennachricht zu erzeugen. Die DBI-Codierung kann zum Beispiel durch den DBI-Codierer 115a durchgeführt werden. Die Anwendung der DBI-Codierung kann der oben zum Beispiel mit Bezug auf den DBI-Codierer 115a oder das Element 225 beschriebenen ähnlich sein. Speziell kann die DBI-Codierung Trennen der Nachricht in k Subsegmente 245 und Einführen der DBI-Bit 250 in die Nachricht, um eine DBI-codierte Datennachricht me0 zu produzieren, umfassen. Die Technik kann dann bei 320 Ausgeben der DBI-codierten Datennachricht an ein anderes Element auf dem Kommunikationspfad, wie etwa einen „Hop“ oder eine NoC-Verbindung, wie etwa die NoC-Verbindung 120a, umfassen.
  • 6 zeigt ein Beispiel für DBI-Codierung, die durch einen Hop in einem Kommunikationspfad verwendet werden kann, gemäß verschiedenen Ausführungsformen. Zum Beispiel kann die Technik von 6 durch einen Hop ausgeführt werden, die einen DBI-Codierer, wie etwa den DBI-Codierer 115b, und eine NoC-Verbindung, wie etwa die NoC-Verbindung 120a, umfasst.
  • Speziell kann die Technik bei 405 Identifizieren einer DBI-codierten Datennachricht umfassen. Die DBI-codierte Datennachricht kann zum Beispiel eine durch den DBI-Codierer 115a ausgegebene DBI-codierte Nachricht sein. Spezieller kann die DBI-codierte Datennachricht zum Beispiel me0 sein, wie oben beschrieben.
  • Die Technik kann ferner bei 415 Ausführen von DBI-Codierung an der DBI-codierten Datennachricht umfassen, um einen neue DBI-codierte Datennachricht zur erzeugen. Zum Beispiel kann die DBI-Codierung durch einen DBI-Codierer, wie etwa den DBI-Codierer 115b, durchgeführt werden. Die DBI-Codierung kann Ausführen von DBI-Codierung an me0 umfassen, um zum Beispiel bei 230 me1 zu erzeugen.
  • Die Technik kann dann bei 420 Ausgeben der neuen DBI-codierten Datennachricht umfassen. Zum Beispiel kann die Technik Ausgeben der neuen DBI-codierten Nachricht me1 durch den DBI-Codierer oder die NoC-Verbindung, von dem der DBI-Codierer ein Teil ist, umfassen. Zum Beispiel kann die neue DBI-codierte Datennachricht an eine andere NoC-Verbindung, eine andere Art von Hop oder einen ECC-Decodierer, wie etwa den ECC-Decodierer 130, ausgegeben werden.
  • 7 zeigt ein Beispiel für eine Decodierungstechnik, die durch einen Decodierer verwendet werden kann, gemäß verschiedenen Ausführungsformen. Der Decodierer kann einen ECC-Decodierer, wie etwa den ECC-Decodierer 130, und einen DBI-Decodierer, wie etwa den DBI-Decodierer 135, sein, oder diese umfassen. Wie zuvor erwähnt, kann der ECC-Decodierer und der DBI-Decodierer als ein einziges Element (z. B. ein einziges Stück Hardware, Firmware, Software oder Kombinationen davon) oder getrennt voneinander implementiert werden.
  • Die Technik kann bei 505 Identifizieren einer DBI-codierten Datennachricht umfassen. Das Element 505 kann durch den ECC-Decodierer ausgeführt werden, und die DBI-codierte Datennachricht kann zum Beispiel me3 sein.
  • Die Technik kann ferner bei 510 Ausführen von ECC-Decodierung an der DBI-codierten Datennachricht umfassen, um eine ECC-decodierte Datennachricht zu erzeugen. Das Element 510 kann zum Beispiel durch den ECC-Decodierer ausgeführt werden. Das Durchführen der ECC-Decodierung kann der oben mit Bezug auf den ECC-Decodierer 130 oder die Elemente 255/260 von 4 beschriebenen Decodierung ähnlich sein. Spezieller kann die ECC-Decodierung die Identifikation und Korrektur von Bitfehlern in me3 umfassen. Die ECC-Decodierung kann eine ECC-decodierte Datennachricht erzeugen, die dann zum Beispiel an den DBI-Decodierer ausgegeben werden kann.
  • Die Technik kann dann bei 515 Ausführen von DBI-Decodierung an der DCCdecodierten Datennachricht umfassen, um eine Datennachricht zu erzeugen. Die DBI-Decodierung kann zum Beispiel durch den DBI-Decodierer ausgeführt werden und kann der oben mit Bezug auf den DBI-Decodierer 135 zur Erzeugung einer Datennachricht, wie etwa der Ausgangsnachricht 140, beschriebenen DBI-Decodierung ähnlich sein. Die Technik kann dann bei 520 Ausgeben der Datennachricht umfassen.
  • Es versteht sich, dass die oben beschriebenen Techniken von 5-7 als Beispiele betrachtet werden können und andere Ausführungsformen mehr oder weniger Elemente als abgebildet oder besprochen umfassen können. Bei einigen Ausführungsformen können bestimmte der Elemente in einer anderen Reihenfolge als abgebildet oder gleichzeitig miteinander ausgeführt werden. Als ein Beispiel können abhängig von den verwendeten Decodierungstechniken die Elemente 515 und 520 im Allgemeinen gleichzeitig miteinander ausgeführt werden, wenn Decodierung an einen Teil von Daten ausgeführt wird, während ein anderer decodierter Teil der Daten gerade ausgegeben wird. Bei anderen Ausführungsformen können andere Varianten vorliegen.
  • 8 zeigt eine beispielhafte Datenverarbeitungsvorrichtung 1500, die für Verwendung mit verschiedenen vorliegenden Ausführungsformen geeignet ist. Wie gezeigt kann die Datenverarbeitungsvorrichtung 1500 einen oder mehrere Prozessoren oder Prozessorkerne 1502 und Systemspeicher 1504 umfassen. Für die Zwecke der vorliegenden Anmeldung, einschließlich der Ansprüche, können die Ausdrücke „Prozessor“ und „Prozessorkerne“ als gleichbedeutend betrachtet werden, solange es der Kontext nicht deutlich anders erfordert. Der Prozessor 1502 kann eine beliebige Art von Prozessoren umfassen, wie etwa eine CPU, einen Mikroprozessor und dergleichen. Der Prozessor 1502 kann als eine integrierte Schaltung implementiert werden, die mehrere Kerne aufweist, z. B. ein Mehrkern-Mikroprozessor. Die Datenverarbeitungsvorrichtung 1500 kann Massenspeicherungsvorrichtungen 1506 umfassen (wie etwa Diskette, Festplatte, flüchtigen Speicher (z. B. DRAM (dynamischen Direktzugriffsspeicher), CD-ROM (Compact Disc Read-Only Memory), DVD (Digital Versatile Disk) und so weiter)). Der Systemspeicher 1504 und/oder die Massenspeicherungsvorrichtungen 1506 können im Allgemeinen temporäre und/oder persistente Speicherung beliebiger Art sein, darunter, aber ohne Beschränkung darauf, flüchtiger und nichtflüchtiger Speicher, optischer, magnetischer und/oder Halbleiter-Massenspeicherung und so weiter. Flüchtiger Speicher wäre zum Beispiel, aber ohne Beschränkung darauf, statischer und/oder DRAM. Nichtflüchtiger Speicher wäre zum Beispiel, aber ohne Beschränkung darauf, elektrisch löschbarerer programmierbarer ROM, Phasenänderungsspeicher, resistiver Speicher und so weiter. Bei einigen Ausführungsformen können der Systemspeicher 1504 und /oder die Massenspeicherungsvorrichtung 1506 rechnerische Logik 1522 umfassen, die dafür ausgelegt sein, eine oder mehrere Anweisungen, die in dem Systemspeicher 1504 oder in der Massenspeicherungsvorrichtung 1506 gespeichert sind, ganz oder teilweise zu implementieren. Bei anderen Ausführungsformen kann die rechnerische Logik 1522 dafür ausgelegt werden, einen speicherbezogenen Befehl, wie etwa einen Lese- oder Schreibbefehl, an dem Systemspeicher 1504 oder der Massenspeicherungsvorrichtung 1506 auszuführen.
  • Die Datenverarbeitungsvorrichtung 1500 kann ferner E/A-Vorrichtungen 1508 (wie eine Anzeige (z. B. eine Touchscreenanzeige), eine Tastatur, eine Cursorsteuerung, eine Fernbedienung, einen Gamingcontroller, eine Bilderfassungsvorrichtung und so weiter) und Kommunikationsschnittstellen 1510 (wie etwa Netzwerkschnittstellenkarten, Modems, Infrarotempfänger, Funkempfänger (z. B: Bluetooth) und so weiter enthalten).
  • Die Kommunikationsschnittstellen 1510 können Kommunikationschips enthalten (nicht dargestellt), die konfiguriert sein können, die Vorrichtung 1500 nach einem Global System for Mobile Communication (GSM), General Packet Radio Service (GPRS), Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Evolved HSPA (E-HSPA) oder Long-Term Evolution (LTE) Netz zu betreiben. Die Kommunikationschips können auch konfiguriert sein, nach Enhanced Data for GSM Evolution (EDGE), GSM EDGE Radio Access Network (GERAN), Universal Terrestrial Radio Access Network (UTRAN) oder Evolved UTRAN (E-UTRAN) zu funktionieren. Die Kommunikationschips können konfiguriert sein, nach Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Digital Enhanced Cordless Telecommunications (DECT), Evolution-Data Optimized (EV-DO), Ableitungen davon sowie jedem anderen drahtlosen Protokoll zu funktionieren, das als 3G, 4G, 5G und darüber hinaus bezeichnet wird. Die Kommunikationsschnittstellen 1510 können in anderen Ausführungsformen nach anderen Drahtlosprotokollen funktionieren.
  • Die Datenverarbeitungsvorrichtung 1500 kann ferner eine Stromversorgung umfassen oder damit gekoppelt sein. Die Stromversorgung kann zum Beispiel eine Stromversorgung sein, die sich in der Datenverarbeitungsvorrichtung 1500 befindet, wie etwa eine Batterie. Bei anderen Ausführungsformen kann sich die Stromversorgung außerhalb der Datenverarbeitungsvorrichtung 1500 befinden. Zum Beispiel kann die Stromversorgung eine elektrische Quelle sein, wie etwa eine Steckdose, eine externe Batterie oder eine gewisse andere Art von Stromversorgung. Die Stromversorgung kann zum Beispiel eine Wechselstrom- bzw. AC-Versorgung, eine Gleichstrom- bzw. DC-Versorgung oder eine gewisse andere Art von Stromversorgung sein. Die Stromversorgung kann bei einigen Ausführungsformen eine oder mehrere zusätzliche Komponenten umfassen, wie etwa einen AC-zu-DC-Wandler, einen oder mehrere Abwärtswandler, einen oder mehrere Aufwärtswandler, Transistoren, Widerstände, Kondensatoren usw., die zum Beispiel verwendet werden können, um den Strom oder die Spannung der Stromversorgung von einem Wert zu einem anderen Wert abzustimmen oder zu ändern. Bei einigen Ausführungsformen kann die Stromversorgung dafür ausgelegt werden, die Datenverarbeitungsvorrichtung 1500 oder eine oder mehrere diskrete Komponenten der Datenverarbeitungsvorrichtung 1500, wie etwa den/die Prozessor(en) 1502, die Massenspeicherung 1506, E/A-Vorrichtungen 1508 usw. mit Strom zu versorgen.
  • Die Elemente der oben beschriebenen Datenverarbeitungsvorrichtung 1500 können miteinander über Systembus 1512 verbunden sein, die einen oder mehrere Busse darstellen können. Im Fall mehrerer Busse können diese durch eine oder mehrerer Busbrücken überbrückt werden (nicht dargestellt). Jedes dieser Elemente kann seine konventionellen Funktionen, die auf dem Stand der Technik bekannt sind, ausführen. Insbesondere können Systemspeicher 1504 und Massenspeichervorrichtungen 1506 verwendet werden, um eine Arbeitskopie und eine dauerhafte Kopie der Programmieranweisungen für die Bedienung der verschiedenen Komponenten der Datenverarbeitungsvorrichtung 1500 zu speichern, einschließlich, aber nicht beschränkt auf ein Betriebssystem der Datenverarbeitungsvorrichtung 1500 und/oder eine oder mehrere Anwendungen. Die verschiedenen Elemente können durch Assembleranweisungen umgesetzt werden, die durch einen oder mehrere Prozessor(en) 1502 oder High-Level-Sprachen unterstützt werden, die in solche Anweisungen kompiliert werden können.
  • Die permanente Kopie der Programmieranweisungen kann in der Fabrik oder im Feld in Massenspeichervorrichtungen 1506 platziert werden, beispielsweise durch ein Verteilermedium (nicht dargestellt), wie eine Compact Disc (CD), oder durch die Kommunikationsschnittstelle 1510 (von einem Verteilerserver (nicht dargestellt)). Das heißt, ein oder mehrere Verteilermedien, die eine Umsetzung des Agentenprogramms aufweisen, können verwendet werden, um den Agenten zu verteilen und verschiedene Rechnervorrichtungen zu programmieren.
  • Die Anzahl, Fähigkeit und/oder Kapazität der Elemente 1508, 1510, 1512 kann abhängig davon variieren, ob die Datenverarbeitungsvorrichtung 1500 als eine stationäre Datenverarbeitungsvorrichtung verwendet wird, wie etwa eine Settopbox oder ein Desktopcomputer, oder eine mobile Datenverarbeitungsvorrichtung, wie etwa eine Tabletrechnervorrichtung, ein Laptopcomputer, eine Spielekonsole oder ein Smartphone. Ihre Konstitutionen sind anderweitig bekannt und werden entsprechend nicht weiter beschrieben.
  • Bei verschiedenen Implementierungen kann die Datenverarbeitungsvorrichtung 1500 eine oder mehrere Komponenten einer Datenzentrale, eines Laptop, eines Netbook, eines Notebook, eines Ultrabook, eines Smartphones, eines Tablets, eines PDA (Personal Digital Assistant), eines ultramobilen PC, eines Mobiltelefons oder einer Digitalkamera umfassen. Bei weiteren Implementierungen kann die Datenverarbeitungsvorrichtung 1500 eine beliebige andere elektronische Vorrichtung sein, die Daten verarbeitet.
  • Bei einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 1500 verschiedene Kommunikationspfade wie hier besprochen umfassen. Zum Beispiel können verschiedene Elemente, wie etwa der Prozessor 1502, der Speicher 1504 oder ein gewisses anderes Element eine Eingangsnachricht, wie etwa die Eingangsnachricht 105, erzeugen. Das Element kann ferner verschiedene Codierer umfassen, wie etwa den ECC-Codierer 110, den DBI-Codierer 115a usw. Die codierte Nachricht kann auf den Systembus 1512 ausgegeben werden, der die Hops umfassen kann, wie etwa die NoC-Verbindungen 120a/120b, den DBI-Codierer 115b usw. Die Nachricht kann dann durch ein anderes Element empfangen werden, wie etwa den Prozessor 1502, den Speicher 1504 oder ein gewisses anderes Element, und wird dort durch einen Decodierer decodiert, wie etwa den ECC-Decodierer 130 oder den DBI-Decodierer 135.
  • Bei anderen Ausführungsformen kann die codierte Nachricht durch Kommunikationsschnittstellen 1510, E/A-Vorrichtungen 1508 oder ein gewisses anderes Element an einen Kommunikationspfad ausgegeben werden. Sie kann dann einen Kommunikationspfad zwischen zwei Datenverarbeitungs- oder elektronischen Systemen durchqueren und dieser Kommunikationspfad kann die NoC-Verbindungen 120a/120b oder den DBI-Codierer 115b umfassen. Sie kann dann durch ein andere Datenverarbeitungs- oder elektronisches System empfangen werden, das sie dann wie hier beschrieben decodieren kann.
  • BEISPIELE FÜR VERSCHIEDENE AUSFÜHRUNGSFORMEN
  • Beispiel 1 umfasst eine elektronische Vorrichtung, umfassend einen Prozessor zum Erzeugen einer Datennachricht; einen Fehlerkorrekturcode- bzw. ECC-Codierer, der kommunikativ mit dem Prozessor gekoppelt ist, wobei der ECC-Codierer ECC-Codierung an der Datennachricht ausführen soll, um eine ECC-codierte Datennachricht zu erzeugen; und einen Datenbusinversions- bzw. DBI-Codierer, der kommunikativ mit dem ECC-Codierer gekoppelt ist, wobei der DBI-Codierer DBI-Codierung an der ECC-codierten Datennachricht ausführen soll, um eine DBI-codierte Datennachricht zu erzeugen.
  • Beispiel 2 umfasst die elektronische Vorrichtung nach Beispiel 1, wobei der DBI-Codierer DBI-Codierung an einen Teil der ECC-codierten Datennachricht ausführen soll, der kleiner als die ECC-codierte Datennachricht ist.
  • Beispiel 3 umfasst die elektronische Vorrichtung nach Beispiel 1, wobei die DBI-codierte Datennachricht eine erste DBI-codierte Datennachricht ist und wobei die elektronische Vorrichtung ferner einen kommunikativ mit dem DBI-Codierer gekoppelten ECC-Decodierer umfasst; wobei der ECC-Decodierer ECC-Decodierung an einer zweiten DBI-codierten Datennachricht ausführen soll, um eine ECC-decodierte Nachricht zu erzeugen; und wobei die zweite DBI-codierte Datennachricht mit der ersten DBI-codierten Datennachricht verwandt ist.
  • Beispiel 4 umfasst die elektronische Vorrichtung nach Beispiel 3, wobei die zweite DBI-codierte Datennachricht dieselbe wie die erste DBI-codierte Datennachricht ist.
  • Beispiel 5 umfasst die elektronische Vorrichtung nach Beispiel 3, wobei die zweite DBI-codierte Datennachricht auf DBI-Codierung der ersten DBI-codierten Datennachricht basiert.
  • Beispiel 6 umfasst die elektronische Vorrichtung nach Beispiel 5, wobei die DBI-Codierung der ersten DBI-codierten Datennachricht und der zweiten DBI-codierten Datennachricht ohne eine dazwischentretende ECC-Codierung oder -Decodierung durchgeführt wird.
  • Beispiel 7 umfasst die elektronische Vorrichtung nach Beispiel 3, die ferner einen kommunikativ mit dem ECC-Decodierer gekoppelten DBI-Decodierer umfasst, wobei der DBI-Decodierer DBI-Decodierung an der ECC-decodierten Nachricht ausführen soll, um die Datennachricht zu erzeugen.
  • Beispiel 8 umfasst die elektronische Vorrichtung nach einem der Beispiele 1-7, wobei die DBI-Codierung auf der Verwendung einer G-Matrix basiert, wobei sich jede Zeile der G-Matrix zu 0 summiert.
  • Beispiel 9 umfasst die elektronische Vorrichtung nach einem der Beispiele 1-7, wobei der ECC-Codierer die ECC-Codierung gemäß einem Einzelfehlerkorrektur- bzw. SEC-Algorithmus durchführen soll.
  • Beispiel 10 umfasst ein Verfahren zum Datentransfer, wobei das Verfahren Folgendes umfasst: Identifizieren einer Datennachricht in einem Codierer; Durchführen von Fehlerkorrekturcodierungs- bzw. ECC-Codierung der Datennachricht durch den Codierer, um eine ECC-codierte Datennachricht zu erzeugen; Durchführen von Datenbusinversions- bzw. DBI-Codierung der Datennachricht durch den Codierer, um eine DBI-codierte Datennachricht zu erzeugen; und Ausgeben der DBI-codierten Datennachricht durch den Codierer.
  • Beispiel 11 umfasst ein Verfahren nach Beispiel 10, wobei die DBI-Codierung auf der Verwendung einer G-Matrix mit einer Eigenschaft basiert, dass sich jede Zeile der G-Matrix zu 0 summiert.
  • Beispiel 12 umfasst ein Verfahren nach Beispiel 11, das ferner Erzeugen der G-Matrix umfasst.
  • Beispiel 13 umfasst ein Verfahren nach einem der Beispiele 10-12, ferner umfassend: Identifizieren von n Teilmengen von Daten der ECC-codierten Datennachricht; und Ausführen der DBI-Codierung an jeweiligen der Teilmengen von Daten der ECC-codierten Datennachricht, um n Teilmengen der DBI-codierten Datennachricht zu erzeugen.
  • Beispiel 14 umfasst ein Verfahren nach Beispiel 13, wobei eine Teilmenge der DBI-codierten Datennachricht k Bit von Daten und 1 Bit von DBI-Daten umfasst.
  • Beispiel 15 umfasst ein Verfahren nach Beispiel 14, wobei eine Länge der DBI-codierten Datennachricht (k+1)*n ist.
  • Beispiel 16 umfasst ein oder mehrere nichttransitorische computerlesbare Medien mit Anweisungen, die, wenn sie durch einen Prozessor einer Datenverarbeitungsvorrichtung ausgeführt werden, einen Decodierer der Datenverarbeitungsvorrichtung zu Folgendem veranlassen sollen: Identifizieren einer Datenbusinversion- bzw. DBI-codierten Datennachricht, wobei die DBI-codierte Datennachricht auf Anwendung einer DBI-Codierung nach Anwendung von Fehlerkorrekturcodierungs- bzw. ECC-Codierung basiert; Ausführen von ECC-Decodierung an der DBI-codierten Datennachricht, um eine ECC-decodierte Datennachricht zu erzeugen; Ausführen von DBI-Decodierung an der ECC-decodierten Datennachricht, um eine Datennachricht zu erzeugen; und Ausgeben der Datennachricht.
  • Beispiel 17 umfasst eine oder die mehreren nichttransitorischen computerlesbaren Medien nach Beispiel 16, wobei die DBI-Codierung auf der Verwendung einer G-Matrix mit einer Eigenschaft basiert, dass sich jede Zeile der G-Matrix zu 0 summiert.
  • Beispiel 18 umfasst eine oder die mehreren nichttransitorischen computerlesbaren Medien nach Beispiel 16, wobei die DBI-codierte Datennachricht auf mehreren Iterationen von DBI-Codierung einer ECC-codierten Nachricht basiert.
  • Beispiel 19 umfasst eine oder die mehreren nichttransitorischen computerlesbaren Medien nach Beispiel 18, wobei die mehreren Iterationen von DBI-Codierung ohne weitere Iterationen von ECC-Codierung oder ECC-Decodierung durchgeführt werden.
  • Beispiel 20 umfasst eine oder die mehreren nichttransitorischen computerlesbaren Medien nach einem der Beispiele 16-19, wobei die DBI-Codierung an Teilen einer Nachricht ausgeführt wird, die durch ECC-Codierung erzeugt werden.
  • Verschiedene Ausführungsformen können jede geeignete Kombination der oben beschrieben Ausführungsformen enthalten, einschließlich alternativer (oder) Ausführungsformen der Ausführungsformen, die oben in konjunktiver Form (und) beschrieben sind (z. B. kann das „und“ „und/oder“ bedeuten). Weiter können einige Ausführungsformen einen oder mehrere Herstellungsartikel (z. B. nichttransitorische computerlesbare Medien) enthalten, auf denen Anweisungen gespeichert werden, die bei Ausführung zu Aktionen einer der oben beschriebenen Ausführungsformen führen. Weiterhin können einige Ausführungsformen Vorrichtungen oder Systeme enthalten, die geeignete Mittel aufweisen, um die verschiedenen Operationen der oben beschriebenen Ausführungsformen auszuführen.
  • Die obige Beschreibung der illustrierten Umsetzungen, einschließlich der Beschreibung in der Zusammenfassung, soll nicht allumfassend sein oder die Ausführungsformen der vorliegenden Offenbarung auf die genauen offenbarten Formen einschränken. Während spezifische Umsetzungen und Beispiele hierin zu illustrativen Zwecken beschrieben sind, sind verschiedene äquivalente Änderungen im Umfang der vorliegenden Offenbarung möglich, wie Fachleute auf dem entsprechenden Gebiet erkennen werden. Diese Modifikationen können im Hinblick der obigen ausführlichen Beschreibung, der Zusammenfassung, der Figuren oder der Ansprüche vorgenommen werden.

Claims (20)

  1. Elektronische Vorrichtung, umfassend: einen Prozessor zum Erzeugen einer Datennachricht; einen Fehlerkorrekturcode- bzw. ECC-Codierer, der kommunikativ mit dem Prozessor gekoppelt ist, wobei der ECC-Codierer ECC-Codierung an der Datennachricht ausführen soll, um eine ECC-codierte Datennachricht zu erzeugen; und einen Datenbusinversions- bzw. DBI-Codierer, der kommunikativ mit dem ECC-Codierer gekoppelt ist, wobei der DBI-Codierer DBI-Codierung an der ECC-codierten Datennachricht ausführen soll, um eine DBI-codierte Datennachricht zu erzeugen.
  2. Elektronische Vorrichtung nach Anspruch 1, wobei der DBI-Codierer DBI-Codierung an einen Teil der ECC-codierten Datennachricht ausführen soll, der kleiner als die ECC-codierte Datennachricht ist.
  3. Elektronische Vorrichtung nach Anspruch 1, wobei die DBI-codierte Datennachricht eine erste DBI-codierte Datennachricht ist und wobei die elektronische Vorrichtung ferner einen kommunikativ mit dem DBI-Codierer gekoppelten ECC-Decodierer umfasst; wobei der ECC-Decodierer ECC-Decodierung an einer zweiten DBI-codierten Datennachricht ausführen soll, um eine ECC-decodierte Nachricht zu erzeugen; und wobei die zweite DBI-codierte Datennachricht mit der ersten DBI-codierten Datennachricht verwandt ist.
  4. Elektronische Vorrichtung nach Anspruch 3, wobei die zweite DBI-codierte Datennachricht dieselbe wie die erste DBI-codierte Datennachricht ist.
  5. Elektronische Vorrichtung nach Anspruch 3, wobei die zweite DBI-codierte Datennachricht auf DBI-Codierung der ersten DBI-codierten Datennachricht basiert.
  6. Elektronische Vorrichtung nach Anspruch 5, wobei die DBI-Codierung der ersten DBI-codierten Datennachricht und der zweiten DBI-codierten Datennachricht ohne eine dazwischentretende ECC-Codierung oder -Decodierung durchgeführt wird.
  7. Elektronische Vorrichtung nach Anspruch 3, die ferner einen kommunikativ mit dem ECC-Decodierer gekoppelten DBI-Decodierer umfasst, wobei der DBI-Decodierer DBI-Decodierung an der ECC-decodierten Nachricht ausführen soll, um die Datennachricht zu erzeugen.
  8. Elektronische Vorrichtung nach einem der Ansprüche 1-7, wobei die DBI-Codierung auf der Verwendung einer G-Matrix basiert, wobei sich jede Zeile der G-Matrix zu 0 summiert.
  9. Elektronische Vorrichtung nach einem der Ansprüche 1-7, wobei der ECC-Codierer die ECC-Codierung gemäß einem Einzelfehlerkorrektur- bzw. SEC-Algorithmus durchführen soll.
  10. Verfahren zum Datentransfer, wobei das Verfahren Folgendes umfasst: Identifizieren einer Datennachricht in einem Codierer; Durchführen von Fehlerkorrekturcodierungs- bzw. ECC-Codierung der Datennachricht durch den Codierer, um eine ECC-codierte Datennachricht zu erzeugen; Durchführen von Datenbusinversions- bzw. DBI-Codierung der Datennachricht durch den Codierer, um eine DBI-codierte Datennachricht zu erzeugen; und Ausgeben der DBI-codierten Datennachricht durch den Codierer.
  11. Verfahren nach Anspruch 10, wobei die DBI-Codierung auf der Verwendung einer G-Matrix mit einer Eigenschaft basiert, dass sich jede Zeile der G-Matrix zu 0 summiert.
  12. Verfahren nach Anspruch 11, das ferner Erzeugen der G-Matrix umfasst.
  13. Verfahren nach einem der Ansprüche 10-12, ferner umfassend: Identifizieren von n Teilmengen von Daten der ECC-codierten Datennachricht; und Ausführen der DBI-Codierung an jeweiligen der Teilmengen von Daten der ECC-codierten Datennachricht, um n Teilmengen der DBI-codierten Datennachricht zu erzeugen.
  14. Verfahren nach Anspruch 13, wobei eine Teilmenge der DBI-codierten Datennachricht k Bit von Daten und 1 Bit von DBI-Daten umfasst.
  15. Verfahren nach Anspruch 14, wobei eine Länge der DBI-codierten Datennachricht (k+1)*n ist.
  16. Elektronische Vorrichtung, umfassend: Mittel zum Identifizieren einer Datenbusinversion- bzw. DBI-codierten Datennachricht, wobei die DBI-codierte Datennachricht auf Anwendung einer DBI-Codierung nach Anwendung von Fehlerkorrekturcodierungs- bzw. ECC-Codierung basiert; Mittel zum Ausführen von ECC-Decodierung an der DBI-codierten Datennachricht, um eine ECC-decodierte Datennachricht zu erzeugen; Mittel zum Ausführen von DBI-Decodierung an der ECC-decodierten Datennachricht, um eine Datennachricht zu erzeugen; und Mittel zum Ausgeben der Datennachricht.
  17. Elektronische Vorrichtung nach Anspruch 16, wobei die DBI-Codierung auf der Verwendung einer G-Matrix mit einer Eigenschaft basiert, dass sich jede Zeile der G-Matrix zu 0 summiert.
  18. Elektronische Vorrichtung nach Anspruch 16, wobei die DBI-codierte Datennachricht auf mehreren Iterationen von DBI-Codierung einer ECC-codierten Nachricht basiert.
  19. Elektronische Vorrichtung nach Anspruch 18, wobei die mehreren Iterationen von DBI-Codierung ohne weitere Iterationen von ECC-Codierung oder ECC-Decodierung durchgeführt werden.
  20. Elektronische Vorrichtung nach einem der Ansprüche 16-19, wobei die DBI-Codierung an Teilen einer Nachricht ausgeführt wird, die durch ECC-Codierung erzeugt werden.
DE102020111397.8A 2019-05-23 2020-04-27 Fehlerkorrekturcode-(ECC-) und Datenbusinversions-(DBI-)Codierung Pending DE102020111397A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/420,504 2019-05-23
US16/420,504 US10862622B2 (en) 2019-05-23 2019-05-23 Error correction code (ECC) and data bus inversion (DBI) encoding

Publications (1)

Publication Number Publication Date
DE102020111397A1 true DE102020111397A1 (de) 2020-11-26

Family

ID=67842744

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020111397.8A Pending DE102020111397A1 (de) 2019-05-23 2020-04-27 Fehlerkorrekturcode-(ECC-) und Datenbusinversions-(DBI-)Codierung

Country Status (2)

Country Link
US (1) US10862622B2 (de)
DE (1) DE102020111397A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11323298B2 (en) * 2016-10-28 2022-05-03 Telefonaktiebolaget Lm Ericsson (Publ) DBI protection for data link

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5910959A (en) * 1997-01-06 1999-06-08 Conexant Systems, Inc. Control channel for modems
WO2009108562A2 (en) * 2008-02-25 2009-09-03 Rambus Inc. Code-assisted error-detection technique
US8127204B2 (en) * 2008-08-15 2012-02-28 Micron Technology, Inc. Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system
KR20140032787A (ko) * 2012-09-07 2014-03-17 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 제어 방법
JP6212396B2 (ja) * 2014-01-08 2017-10-11 ルネサスエレクトロニクス株式会社 データ処理装置
US9979416B2 (en) * 2014-12-10 2018-05-22 Rambus Inc. Memory controller and method of data bus inversion using an error detection correction code
KR20180063475A (ko) * 2016-12-02 2018-06-12 삼성전자주식회사 반도체 장치의 오류 검출 코드 생성 회로, 이를 포함하는 메모리 컨트롤러 및 반도체 메모리 장치
US10621116B2 (en) * 2017-06-08 2020-04-14 Western Digital Technologies, Inc. Non-volatile storage device with adaptive data bus inversion
US10908995B2 (en) * 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system

Also Published As

Publication number Publication date
US20190280813A1 (en) 2019-09-12
US10862622B2 (en) 2020-12-08

Similar Documents

Publication Publication Date Title
DE112006003298B4 (de) 02.06.2008Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation
DE112012006014B4 (de) Verteilte Codewortteile
DE112013007732T5 (de) PCI-Express-Erweiterungen
DE112019001799T5 (de) Erweitertes formatieren von binären gleitkommazahlen mit geringerer genauigkeit
DE102012208711B4 (de) Vorrichtung zum Erzeugen einer Prüfsumme
DE112012006153T5 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE2060643A1 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE3727586C2 (de) Datenverarbeitungsanordnung bestehend aus vier im wesentlichen gleich aufgebauten Moduln
DE102015119896A1 (de) Technologien für Datenintegrität von Mehrfachnetzwerkpaketoperationen
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE102013016681A1 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102020119888A1 (de) Hardware-basierte erkennung von fehlern bezüglich der erhaltung lokaler zustände
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE2704627B2 (de) Anordnung zur Fehlerkorrektur von binärer Information
DE102020111397A1 (de) Fehlerkorrekturcode-(ECC-) und Datenbusinversions-(DBI-)Codierung
DE102016102590A1 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE112018001951T5 (de) Fehlerkorrekturdecodieren mit verringerter latenz
DE102020119183A1 (de) System und Verfahren zum Identifizieren und Dekodieren von Reed-Muller-Codes in Polarcodes
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
CN103401650B (zh) 一种(n,1,m)有误码卷积码的盲识别方法
EP2654209B1 (de) Verfahren und Vorrichtung zur Ermittlung einer Bitfehlerrate bei seriell verkettten LDPC und Blockkodes
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung