DE102021121490A1 - Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen - Google Patents

Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen Download PDF

Info

Publication number
DE102021121490A1
DE102021121490A1 DE102021121490.4A DE102021121490A DE102021121490A1 DE 102021121490 A1 DE102021121490 A1 DE 102021121490A1 DE 102021121490 A DE102021121490 A DE 102021121490A DE 102021121490 A1 DE102021121490 A1 DE 102021121490A1
Authority
DE
Germany
Prior art keywords
bits
tracks
criterion
met
determining
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
DE102021121490.4A
Other languages
English (en)
Inventor
Narasimha Lanka
Lakshmipriya Seshan
Gerald S. Pasdast
Zuoguo Wu
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 DE102021121490A1 publication Critical patent/DE102021121490A1/de
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
    • 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/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/423Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
    • 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
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Systeme, Verfahren und Vorrichtungen, die mit einer ungefähren mehrheitsbasierten Datenbusinversionstechnik assoziiert sind, sind offenbart. Ein Verfahren umfasst das Erhalten, an einer ersten Vorrichtung, die durch mehrere Spuren mit einer zweiten Vorrichtung verbunden ist, von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, wobei die ersten Bits in einem neuen Taktzyklus über erste Spuren der mehreren Spuren zu übertragen sind und die zweiten Bits in dem neuen Taktzyklus über zweite Spuren der mehreren Spuren zu übertragen sind. Das Verfahren umfasst ferner das Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist, das Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist, und das Übertragen einer invertierten Version der ursprünglichen Daten über die mehreren Spuren basierend zumindest teilweise auf dem Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt sind.

Description

  • TECHNISCHES GEBIET
  • Verschiedene Ausführungsformen können sich allgemein auf das technische Gebiet des Berechnens und insbesondere auf eine ungefähre Datenbusinversionstechnik für latenzempfindliche Anwendungen beziehen.
  • HINTERGRUND
  • Datenbusinversion (DBI) ist ein Codierungsalgorithmus, der verwendet werden kann, um Signalisierungsleistung zu reduzieren, wenn Daten innerhalb eines Rechensystems übertragen werden. Ein DBI-Algorithmus kann angewendet werden, um die Bits von Daten, die innerhalb des Rechensystems übertragen werden sollen, basierend auf einem vorbestimmten Kriterium, das in dem Algorithmus definiert ist, zu invertieren (oder nicht zu invertieren). Das Durchführen von DBI für eine große Anzahl von Bits auf breiten parallelen Schnittstellen kann jedoch die Latenz erhöhen.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform eines Rechensystems einschließlich einer Zwischenverbindungsarchitektur.
    • 2 veranschaulicht eine Ausführungsform einer Zwischenverbindungsarchitektur, die einen geschichteten Stapel aufweist.
    • 3 veranschaulicht eine Ausführungsform einer Anfrage oder eines Pakets, die/das innerhalb einer Verschaltungsarchitektur erzeugt oder empfangen werden soll.
    • 4 veranschaulicht eine Ausführungsform eines Sender-Empfänger-Paares für eine Verschaltungsarchitektur.
    • 5 veranschaulicht eine beispielhafte Mehrchipgehäusevorrichtung.
    • 6 ist ein vereinfachtes Blockdiagramm einer Mehrchipgehäuseverbindung (MCPL).
    • 7 ist eine Repräsentation einer beispielhaften Signalisierung auf einem beispielhaften MCPL.
    • 8 ist ein vereinfachtes Blockdiagramm eines beispielhaften ungefähren Datenbusinversion(DBI)-Systems, das in einem MCPL implementiert ist.
    • 9 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Logik eines ungefähren DBI-Systems veranschaulicht.
    • 10 ist ein beispielhaftes Schaltbild, das eine beispielhafte Mehrheitsvotierlogikschaltung veranschaulicht.
    • 11 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit dem Durchführen einer ungefähren Datenbusinversion assoziiert sein kann.
    • Die 12A und 12B sind vereinfachte Flussdiagramme, die mögliche Operationen veranschaulichen, die mit einer Ausführungsform einer ungefähren Datenbusinversion assoziiert sein können.
    • Die 13A und 13B sind vereinfachte Flussdiagramme, die mögliche Operationen veranschaulichen, die mit einer anderen Ausführungsform einer ungefähren Datenbusinversion assoziiert sein können.
    • 14 ist ein Balkengraph, der Schaltstatistiken eines beispielhaften Systems veranschaulicht, das Zufallsdaten überträgt, ohne Datenbusinversion (DBI) zu verwenden.
    • 15 ist ein Balkendiagramm, das Schaltstatistiken eines beispielhaften Systems veranschaulicht, das Zufallsdaten unter Verwendung traditioneller Wechselstrom-DBI (AC-DBI) überträgt.
    • 16 ist ein Balkendiagramm, das Schaltstatistiken eines beispielhaften Systems veranschaulicht, das Zufallsdaten unter Verwendung einer ungefähren Datenbusinversion überträgt.
    • 17 eine Tabelle von Schaltstatistiken verschiedener Szenarien unter Verwendung verschiedener Parameter in verschiedenen Systemen.
    • 18 veranschaulicht ein Blockdiagramm einer Ausführungsform eines Rechensystems, das einen Mehrkernprozessor aufweist.
    • 19 veranschaulicht einen Block einer Ausführungsform eines Rechensystems, das mehrere Prozessoren aufweist.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente. Ausführungsformen sind beispielhaft und nicht einschränkend in den Figuren der beiliegenden Zeichnungen veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung stellt verschiedene mögliche Ausführungsformen oder Beispiele von Systemen, Verfahren, Vorrichtungen und Architekturen zum Implementieren einer ungefähren mehrheitsvotierbasierten Datenbusinversionstechnik bereit. In einer oder mehreren Ausführungsformen wird ein ungefährer Mehrheitsvotieralgorithmus in Verbindung mit einem Datenbusinversions(DBI)-algorithmus verwendet, um Latenz signifikant zu reduzieren und gleichzeitiges Schaltausgangs(SSO)-rauschen in Datenübertragungen innerhalb eines Rechensystems zu begrenzen. Für eine gegebene Anzahl von DBI-Spuren (z. B. einzelne Bits, die über einen einzigen Draht übertragen werden) wird anfänglich bestimmt, ob der Bitwert jeder Datenspur von einem vorherigen Taktzyklus umgeschaltet oder zu einem neuen Bitwert (z. B. 1 zu 0 oder 0 zu 1) umgewandelt werden soll, um die ursprünglichen (d. h., nichtinvertierten) Daten zu übertragen. Mehrheitsvotierlogik kann verwendet werden, um zu approximieren, ob eine Mehrheit von Bitwerten der Datenspuren erforderlich ist, um einen neuen Wert umzuschalten oder zu einem neuen Wert umzuwandeln. In dieser Ausführungsform kann eine Entscheidung getroffen werden, DBI entweder zu aktivieren oder zu deaktivieren, basierend auf dem Ergebnis des Anwendens der Mehrheitsvotierlogik auf zwei oder mehr Sätze von Eingaben, die angeben, ob Übergänge für Bitwerte der Datenspuren erforderlich sind, die mit einem vorherigen Taktzyklus assoziiert sind, basierend auf den Bitwerten assoziierter Bits, die über die Datenspuren in einem neuen Taktzyklus zu übertragen sind. In anderen Ausführungsformen kann die Mehrheitsvotierlogik verwendet werden, um zu approximieren, ob eine Mehrheit von Bits, die in einem neuen Taktzyklus übertragen werden sollen, erfordert, dass ein gewisser Logikpegel (z. B. 1 oder 0) gleichzeitig über die Datenspuren übertragen wird. In dieser Ausführungsform kann eine Entscheidung getroffen werden, DBI entweder zu aktivieren oder zu deaktivieren, basierend auf dem Ergebnis des Anwendens der Mehrheitsvotierlogik auf zwei oder mehr Sätze der Bitwerte der Bits, die über die Datenspuren zu übertragen sind.
  • In der folgenden Beschreibung werden zum Zwecke der Erläuterung und nicht Einschränkung zahlreiche spezifische Einzelheiten dargelegt, wie etwa spezifische Typen von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitekturdetails, spezifische Registerkonfigurationen, spezifische Anweisungstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessor-Pipeline-Stufen und -Betrieb, spezifische Schnittstellen, spezifische Techniken usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Es ist jedoch für Fachleute offensichtlich, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um den Gegenstand der vorliegenden Offenbarung umzusetzen. In anderen Fällen wurden wohlbekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifische Verbindungsoperation, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und Materialien, spezifische Compiler-Implementierungen, ein spezifischer Ausdruck von Algorithmen in dem Code, spezifische Abschalt- und Gate-Techniken/Logik und andere spezifische Betriebsdetails von Computersystemen nicht ausführlich beschrieben, um unnötiges Verdecken der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieerhaltung und Energieeffizienz in spezifischen integrierten Schaltungen, wie zum Beispiel in Rechenplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen integrierter Schaltungen und Logikgeräte anwendbar. Ähnliche Techniken und Lehren hierin beschriebener Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen, die auch von besserer Energieeffizienz und Energieeinsparung profitieren können, angewendet werden. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Und können auch in anderen Vorrichtungen verwendet werden, wie etwa tragbaren Vorrichtungen, Tablets oder dünnen Notebooks, System-on-a-Chip(SoC)-Vorrichtungen und eingebetteten Anwendungen. Manche Beispiele für Handheld-Vorrichtungen umfassen Zellulartelefone, Internetprotokollvorrichtungen, Digitalkameras, Personal-Digital-Assistants (PDAs) und Handheld-PCs. Eingebettete Anwendungen weisen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System-on-a-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, WAN-Switches (WAN: Wide Area Network - großflächiges Netzwerk) oder ein beliebiges anderes System, das die nachfolgend gelehrten Funktionen und Operationen ausführen kann, auf. Darüber hinaus sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Rechenvorrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energieerhaltung und -effizienz betreffen. Wie in der nachfolgenden Beschreibung sofort ersichtlich ist, sind die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (ob mit Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine mit Leistungsfähigkeitserwägungen ausgewogene Zukunft einer „grünen Technologie“ unverzichtbar.
  • Mit der Weiterentwicklung von Rechensystemen werden die Komponenten darin komplexer. Infolgedessen erfährt die Zwischenverbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten auch zunehmende Komplexität, um zu gewährleisten, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Ferner verlangen unterschiedliche Marktsegmente unterschiedliche Aspekte von Zwischenverbindungsarchitekturen, um sich für die Marktbedürfnisse zu eignen. Beispielsweise erfordern Server höhere Performanz, während das mobile Ökosystem manchmal in der Lage ist, eine Gesamtperformanz für Leistungseinsparungen zu opfern. Dennoch ist es ein einziger Zweck der meisten Strukturen, höchstmögliche Performanz mit maximaler Leistungseinsparung bereitzustellen. Im Folgenden wird eine Anzahl von Zwischenverbindungen erläutert, die potenziell von Aspekten der hier beschriebenen Offenbarung profitieren würden.
  • Eine Verschaltungsstruktur-Architektur umfasst die Peripheral-Component-Interconnect (PCI) Express(PCIe)-Architektur. Ein Hauptziel von PCle besteht darin, es Komponenten und Vorrichtungen verschiedener Hersteller zu ermöglichen, in einer offenen Architektur, die mehrere Marktsegmente umspannt, zu interagieren; Clients (Desktops und mobil), Server (Standard, Rack-Konfiguration und Enterprise) sowie eingebettete Vorrichtungen und Kommunikationsvorrichtungen. PCI Express ist eine universelle Hochleistungs-E/A-Zwischenverbindung, die für eine breite Vielfalt zukünftiger Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie etwa das Verwendungsmodell, die Ladespeicherarchitektur und Softwareschnittstellen, wurden durch ihre Revisionen aufrechterhalten, während frühere Parallel-Bus-Implementierungen durch eine hoch skalierbare, vollkommen serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen die Vorteile von Fortschritten bei Punkt-zu-Punkt-Zwischenverbindungen, switchbasierter Technologie und paketiertem Protokoll, um neue Performanz- und Merkmalsniveaus zu liefern. Leistungsverwaltung, Dienstqualität (QoS: Quality of Service), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den verbesserten Merkmalen, die durch PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Struktur veranschaulicht, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten verschalten. Ein System 100 weist einen Prozessor 105 und einen Systemspeicher 110 auf, die mit dem Controller-Hub 115 gekoppelt sind. Der Prozessor 105 weist ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor, auf. Der Prozessor 105 ist über eine Verbindung 106 (z. B. einen Front-Side-Bus (FSB)) mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform kann die Verbindung 106 eine serielle Punkt-zu-Punkt-Verbindung sein, wie unten beschrieben. In einer anderen Ausführungsform weist die Verbindung 106 eine serielle differenzielle Zwischenverbindungsarchitektur auf, die mit einem unterschiedlichen Zwischenverbindungsstandard konform ist. Bei manchen Implementierungen kann das System Logik zum Implementieren mehrerer Protokollstapel und ferner Logik zum Aushandeln alternativer Protokolle, die auf einer gemeinsamen physikalischen Schicht ausgeführt werden sollen, unter anderen beispielhaften Merkmalen aufweisen.
  • Der Systemspeicher 110 weist eine beliebige Speichervorrichtung, wie etwa einen Direktzugriffsspeicher (RAM), einen nichtflüchtigen (NV) Speicher oder einen anderen Speicher, auf den durch Vorrichtungen in dem System 100 zugegriffen werden kann, auf. Der Systemspeicher 110 ist über die Speicherschnittstelle 116 mit dem Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Double-Data-Rate(DDR)-Speicherschnittstelle, eine Dual-Channel-DDR-Speicherschnittstelle und eine Dynamic-RAM(DRAM)-Speicherschnittstelle.
  • In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, ein Root-Komplex oder ein Root-Controller in einer Peripheral Component Interconnect Express(PCIe oder PCIE)-Verbindungshierarchie. Beispiele für den Controller-Hub 115 umfassen einen Chipsatz, einen Speicher-Controller-Hub (MCH), eine Nordbrücke, einen Zwischenverbindungs-Controller-Hub (ICH), eine Südbrücke und einen Root-Controller/Hub. Oft bezieht sich der Begriff Chipsatz auf zwei physikalisch getrennte Controller-Hubs, das heißt einen Memory-Controller-Hub (MCH), der mit einem Zwischenverbindungs-Controller-Hub (ICH) gekoppelt ist. Es wird angemerkt, dass aktuelle Systeme häufig den MCH aufweisen, der mit dem Prozessor 105 integriert ist, während der Controller-Hub 115 mit E/A-Vorrichtungen kommunizieren soll, auf eine ähnliche Weise wie unten beschrieben. In einigen Ausführungsformen wird Peer-to-Peer-Routing optional durch den Controller-Hub 115 (z. B. Root-Complex) unterstützt.
  • Hier ist der Controller-Hub 115 über die serielle Verbindung 119 mit dem Switch/der Brücke 120 gekoppelt. Eingabe/Ausgabe-Module 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen in der Lage, mit dem Switch 120 gekoppelt zu werden.
  • Der Switch/die Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d. h., eine Hierarchie aufwärts in Richtung eines Root-Komplexes zu dem Controller-Hub 115 und stromabwärts, d. h., eine Hierarchie nach unten weg von einem Root-Controller, von dem Prozessor 105 oder dem Systemspeicher 110 zu der Vorrichtung 125. Der Switch 120 wird in einer Ausführungsform als eine logische Anordnung mehrerer virtueller PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst jegliche interne oder externe Vorrichtung oder eine Komponente, das/die mit einem elektronischen System, wie zum Beispiel einer E/-Vorrichtung, einem Network-Interface-Controller (NIC), einer Erweiterungskarte, einem Audio-Prozessor, einem Netzwerkprozessor, einer Festplatte, einer Speichervorrichtung, einer CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichervorrichtung, einer Firewire-Vorrichtung, einer Universal-Serial-Bus(USB)-Vorrichtung, einem Scanner und anderen Eingabe-/Ausgabevorrichtungen, gekoppelt werden soll. Oft wird in der PCle-Umgangssprache eine solche Vorrichtung als ein Endpunkt bezeichnet. Obwohl dies nicht speziell gezeigt ist, kann die Vorrichtung 125 eine PCIe-zu-PCI/PCI-X-Brücke aufweisen, um PCI-Vorrichtungen der Alt- oder anderen Version zu unterstützen. Endpunktvorrichtungen in PCle werden häufig als etablierte PCle- oder Root-Komplex-integrierte Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 130 ist auch über die serielle Verbindung 132 mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und dementsprechend die E/A-Vorrichtung 125 ist dann mit dem ICH gekoppelt. Die E/A-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich der MCH-Erläuterung oben kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein. Ferner können eine oder mehrere Verbindungen (z. B. 123) des Systems eine oder mehrere Erweiterungsvorrichtungen (z. B. 150), wie etwa Retimer, Repeater usw., aufweisen. Es versteht sich, dass eine oder mehrere der in 1 veranschaulichten Komponenten (z. B. 105, 110, 115, 120, 125, 130) verbessert werden können, um Logik auszuführen, zu speichern und/oder umzusetzen, um ein oder mehrere der hier beschriebenen Merkmale zu implementieren.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels veranschaulicht, der unter anderem in einer oder mehreren Komponenten einer mobilen Rechenvorrichtung, wie etwa einem Anwendungsprozessor oder Basisbandprozessor oder Modem, implementiert sein kann. Der geschichtete Protokollstapel 200 weist Logik auf, die in einer Hardwareschaltungsanordnung und/oder in Software implementiert wird, um eine beliebige Form eines geschichteten Kommunikationsstapels, wie etwa einen QPI-Stapel (QPI: Quick Path Interconnect), einen PCIe-Stapel, einen Hochleistungs-Rechen-Zwischenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel zu implementieren. Obwohl die unmittelbar folgende Erläuterung unter Bezugnahme auf die 1-4 einen PCIe-Stapel betrifft, können ähnliche Konzepte bei anderen Zwischenverbindungsstapeln angewendet werden, wie etwa unter anderem OpenCAPI™, Gen-Z™, UPI, Universal Serial Bus, (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Infinity™ von Advanced Micro Device™ (AMD™), Common Communication Interface (CCI) oder Centriq™-lnterconnect von Qualcomm™. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der die Transaktionsschicht 205, die Verbindungsschicht 210 (hier auch als „Datenverbindungsschicht“ bezeichnet) und die physikalische Schicht 220 aufweist. Eine Schnittstelle, wie etwa die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt werden. Die Repräsentation als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet werden, das bzw. die einen Protokollstapel implementiert/aufweist.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu kommunizieren. In der Transaktionsschicht 205 und der Datenverbindungsschicht 210 werden Pakete gebildet, um die Informationen von der sendenden Komponente zu der empfangenden Komponente zu übertragen. Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen, die zum Bearbeiten von Paketen in diesen Schichten notwendig sind, erweitert. Auf der empfangenden Seite tritt der umgekehrte Prozess auf, und Pakete werden von ihrer Darstellung der physikalischen Schicht 220 in die Darstellung der Datenverknüpfungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 der empfangenden Vorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur, wie etwa der Datenverbindungsschicht 210 und der physikalischen Schicht 220, bereitstellen. In dieser Hinsicht ist eine primäre Verantwortung der Transaktionsschicht 205 das Zusammenfügen und Zerlegen von Paketen (d. h., Transaktionsschichtpaketen oder TLPs). Die Transaktionsschicht 205 verwaltet typischerweise creditbasierte Flusssteuerung für TLPs. PCle implementiert geteilte Transaktionen, d. h., Transaktionen mit Anfrage und Antwort getrennt nach Zeit, die es einer Verbindung ermöglichen, anderen Verkehr zu übermitteln, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Außerdem nutzt PCle creditbasierte Flusssteuerung. Bei diesem Schema kündigt eine Vorrichtung eine anfängliche Credit-Menge für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie zum Beispiel der Controller-Hub 115 in 1, zählt die Anzahl der von jedem TLP verbrauchten Credits. Eine Transaktion kann übertragen werden, falls die Transaktion ein Credit-Limit nicht übersteigt. Nach dem Empfangen einer Antwort wird eine Credit-Menge wiederhergestellt. Ein Vorteil eines Credit-Schemas ist es, dass die Latenz der Credit-Rückgabe die Performanz nicht beeinträchtigt, vorausgesetzt, dass das Credit-Limit nicht erreicht wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Speicheradressraum, einen Konfigurationsadressraum, einen Nachrichtenadressraum und einen Eingabe-/Ausgabeadressraum. Speicherraumtransaktionen umfassen Leseanfragen und/oder Schreibanfragen, um Daten zu/von einem Speicherabbildungsort zu transferieren. In einer Ausführungsform sind Speicherraumtransaktionen zum Verwenden von zwei unterschiedlichen Adressformaten, z. B. eines kurzen Adressformats, wie etwa einer 32-Bit-Adresse, oder eines langen Adressformats, wie etwa einer 64-Bit-Adresse, fähig. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen zu dem Konfigurationsraum umfassen Leseanfragen und Schreibanfragen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind dazu definiert, die bandinterne Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher setzt die Transaktionsschicht 205 in einer Ausführungsform den Paket-Header/die Nutzlast 206 zusammen. Format für aktuelle Paket-Header/Nutzlasten kann in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website gefunden werden (tatsächlich kann eine beliebige Bezugnahme hierin auf einen Teil der PCIe-Spezifikation eine beliebige vergangene, aktuelle oder zukünftige PCIe-Spezifikation in Betracht ziehen, die aktuell verfügbar ist oder zukünftig auf der PCIe-Spezifikations-Website oder durch andere Mittel verfügbar ist).
  • Schnell bezugnehmend auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors veranschaulicht. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Übermitteln von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere mögliche Verwendungen umfassen das Verfolgen von Modifikationen der Standardtransaktionsreihenfolge und die Assoziation von Transaktionen mit Kanälen.
  • Der Transaktionsdeskriptor 300 weist ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306 auf. Bei dem veranschaulichten Beispiel ist das globale Kennungsfeld 302 dargestellt, das das lokale Transaktionskennungsfeld 308 und das Quellenkennungsfeld 310 aufweist. In einer Ausführungsform ist das globale Kennungsfeld 302 für alle ausstehenden Anfragen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das durch einen anfragenden Agenten erzeugt wird, und es ist eindeutig für alle ausstehenden Anfragen, die einen Abschluss für diesen anfragenden Agenten erfordern. Des Weiteren identifiziert die Quellenkennung 310 in diesem Beispiel den Anforderungsagenten innerhalb einer PCIe-Hierarchie eindeutig. Dementsprechend stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Quellen-ID 310 eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 spezifiziert Charakteristiken und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die eine Modifikation der Standardbehandlung von Transaktionen ermöglichen. In einer Ausführungsform weist das Attributfeld 304 das Prioritätsfeld 312, das reservierte Feld 314, das Ordnungsfeld 316 und das No-Snoop-Feld 318 auf. Hier kann das Prioritätsunterfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 314 bleibt für zukünftige oder herstellerdefinierte Nutzung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die den Ordnungstyp übermitteln, der Standardordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bezeichnet ein Ordnungsattribut von „0“ Anwenden von Standardordnungsregeln, wobei ein Ordnungsattribut von „1“ eine gelockerte Ordnung bezeichnet, bei der Schreibvorgänge Schreibvorgänge in der gleichen Richtung weitergeben können und Leseabschlüsse Schreibvorgänge in der gleichen Richtung weitergeben können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen gesnoopt sind. Wie dargestellt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Verbindungsschicht
  • Unter erneuter Bezugnahme auf 2 fungiert die Verbindungsschicht 210, die auch als Datenverbindungsschicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physikalischen Schicht 220. In einer Ausführungsform stellt eine Verantwortung der Datenverbindungsschicht 210 einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung bereit. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die durch die Transaktionsschicht 205 zusammengestellt werden, wendet die Paketsequenzkennung 211, d. h., eine Identifikationsnummer oder Paketnummer, an, berechnet und wendet einen Fehlerdetektionscode, d. h., CRC 212, an, und gibt die modifizierten TLPs zur Übertragung über eine physikalische an eine externe Vorrichtung an die physikalische Schicht 220 weiter.
  • Physikalische Schicht
  • In einer Ausführungsform weist die physikalische Schicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222 auf, um ein Paket physikalisch zu einer externen Vorrichtung zu übertragen. Hier ist der logische Unterblock 221 für die „digitalen“ Funktionen der physikalischen Schicht 220 verantwortlich. In dieser Hinsicht weist der logische Unterblock einen Übertragungsabschnitt, um ausgehende Informationen zur Übertragung durch den elektrischen Unterblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 210 weitergeleitet werden, auf.
  • Die physikalische Schicht 220 weist einen Sender und einen Empfänger auf. Der Sender wird durch den logischen Unterblock 221 mit Symbolen versorgt, die der Sender serialisiert und auf eine externe Vorrichtung überträgt. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Unterblock 221 zugeführt. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, bei dem Zehn-Bit-Symbole übertragen/empfangen werden. In anderen Ausführungsformen wird unter anderem eine 128b/130b-Übertragungscodierung verwendet. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 zu rahmen. Zusätzlich dazu stellt in einem Beispiel der Empfänger auch einen aus dem eingehenden seriellen Strom wiederhergestellten Symboltakt bereit.
  • Wie oben ausgeführt, ist, obwohl die Transaktionsschicht 205, die Verbindungsschicht 210 und die physikalische Schicht 220 unter Bezugnahme auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erläutert sind, ein geschichteter Protokollstapel nicht so beschränkt. Tatsächlich kann ein beliebiges geschichtetes Protokoll enthalten sein/implementiert werden. Als ein Beispiel weist ein Port/eine Schnittstelle, der/die als ein geschichtetes Protokoll dargestellt ist, Folgendes auf: (1) eine erste Schicht, um Pakete zu assemblieren, d. h., eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h., eine Verbindungsschicht; und eine dritte Schicht, um die Pakete zu übertragen, d. h., eine physikalische Schicht. Als ein spezifisches Beispiel wird ein geschichtetes CSI-Protokoll (CSI: Common Standard Interface) verwendet.
  • Als Nächstes Bezug nehmend auf 4 ist eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Struktur veranschaulicht. Obwohl eine Ausführungsform einer seriellen PCle-Punkt-zu-Punkt-Verbindung veranschaulicht ist, ist eine serieller Punkt-zu-Punkt-Verbindung nicht derart beschränkt, da er einen beliebigen Übertragungspfad zum Übertragen serieller Daten aufweist. In der gezeigten Ausführungsform weist eine Basis-PCIe-Verbindung zwei differenziell angesteuerte Niederspannungssignalpaare auf: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend weist die Vorrichtung 405 eine Übertragungslogik 406 zum Übertragen von Daten zu der Vorrichtung 410 und eine Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410 auf. Mit anderen Worten sind zwei Übertragungspfade, d. h., Pfade 416 und 417, und zwei Empfangspfade, d. h., Pfade 418 und 419, in einer PCle-Verbindung enthalten.
  • Ein Übertragungspfad bezieht sich auf jeglichen Pfad zum Übertragen von Daten, wie zum Beispiel eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarotkommunikationsverbindung oder anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie etwa der Vorrichtung 405 und der Vorrichtung 410, wird als eine Verbindung, wie etwa die Verbindung 415, bezeichnet. Eine Verbindung kann eine Spur unterstützen - wobei jede Spur eine Gruppe von differenziellen Signalpaaren (ein Paar für Übertragung, ein Paar für Empfang) repräsentiert. Um die Bandbreite zu skalieren, kann eine Verbindung mehrere mit xN bezeichnete Pfade zusammenfassen, wobei N jede unterstützte Verbindungsbreite, wie zum Beispiel 1, 2, 4, 8, 12, 16, 32, 64 oder breiter, ist.
  • Ein differenzielles Paar verweist auf zwei Übertragungspfade, wie etwa Leitungen 416 und 417, um differenzielle Signale zu übertragen. Als ein Beispiel, wenn die Leitung 416 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d. h., eine ansteigende Flanke, wird die Leitung 417 von einem hohen logischen Pegel auf einen niedrigen logischen Pegel angesteuert, d. h., eine abfallende Flanke. Differenzielle Signale demonstrieren potenziell bessere elektrische Charakteristiken, wie etwa bessere Signalintegrität, d. h., Kreuzkopplung, Spannungsüberschwingen/-unterschwingen, Einschwingung, usw. Dies erlaubt ein besseres Timing-Fenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • Bei manchen Implementierungen können eine Hochleistungszwischenverbindung und ein entsprechendes Zwischenverbindungsprotokoll (wie etwa eine PCIe-basierte Zwischenverbindung der nächsten Generation) bereitgestellt sein, das in der Lage ist, mit hohen Geschwindigkeiten, wie etwa 25 GT/s und/oder 32 GT/s, zu arbeiten. In einem Beispiel können zwei Geschwindigkeiten für die Hochleistungszwischenverbindung definiert sein, eine bei 25 GT/s und 32 GT/s, basierend auf den Charakteristiken, die für den Kanal (z. B. während des Verbindungstrainings) bestimmt werden. Die Zwischenverbindung kann bei einer Implementierung mit bestehenden PCIe-Generationen und für diese Generationen bereitgestellten Geschwindigkeiten (z. B. 8 GT/s, 16 GT/s usw.) rückwärtskompatibel sein.
  • 5 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Mehrchipgehäuse(MCP)-vorrichtung 500 veranschaulicht. Die Vorrichtung 500 kann auf einem einzigen Gehäuse implementiert sein und zwei oder mehr Chips oder Dies (z. B. 505, 510) aufweisen, die unter Verwendung einer beispielhaften Mehrchipgehäuseverbindung (MCPL: Multi-Chip Package Link) 520 kommunikativ verbunden sind. Obwohl 5 ein Beispiel von zwei (oder mehr) Dies veranschaulicht, die unter Verwendung einer beispielhaften MCPL 520 miteinander verbunden sind, versteht es sich, dass die hier beschriebenen Prinzipien und Merkmale bezüglich Implementierungen einer MCPL auf eine beliebige Zwischenverbindung oder Verbindung angewendet werden können, die einen Die (z. B. 505) und andere Komponenten verbindet, einschließlich Verbinden von zwei oder mehr Dies (z. B. 505, 510), Verbinden eines Dies (oder Chips) mit einer anderen Komponente außerhalb des Dies, Verbinden eines Dies mit einer anderen Vorrichtung oder einem anderen Die außerhalb des Gehäuses (z. B. 500), Verbinden des Dies mit einem BGA-Gehäuse, Implementieren eines Patch-on-Interposers (POINT) unter potenziell anderen Beispielen.
  • Allgemein kann eine Mehrchipgehäusevorrichtung (z. B. 500) ein elektronisches Gehäuse sein, bei dem mehrere integrierte Schaltungen (ICs), Halbleiter-Dies oder andere diskrete Komponenten (z. B. 505, 510) auf ein Vereinigungssubstrat (z. B. Silizium oder ein anderes Halbleitersubstrat) gepackt sind, was die Verwendung der kombinierten Komponenten als eine einzige Komponente (z. B. als ob eine größere IC) erleichtert. In manchen Fällen können die größeren Komponenten (z. B. Dies 505, 510) selbst IC-Systeme sein, wie etwa System-on-Chip (SoC), Multiprozessor-Chips oder andere Komponenten, die mehrere Komponenten (z. B. 525-530 und 540-545) auf der Vorrichtung aufweisen, beispielsweise auf einem einzigen Die (z. B. 505, 510).
  • Dies und andere Komponenten innerhalb einer Mehrchipgehäusevorrichtung 500 können selbst Zwischenverbindungs- oder andere Kommunikationsstrukturen (z. B. 535, 550) aufweisen, die die Infrastruktur zur Kommunikation zwischen Komponenten (z. B. 525-530 und 540-545) innerhalb der Vorrichtung (z. B. jeweils 505, 510) bereitstellen. Die verschiedenen Komponenten und Zwischenverbindungen (z. B. 535, 550) können potenziell mehrere unterschiedliche Protokolle unterstützen oder verwenden. Ferner kann die Kommunikation zwischen Dies (z. B. 505, 510) potenziell Transaktionen zwischen den verschiedenen Komponenten auf den Dies über mehrere verschiedene Protokolle umfassen. Es ist ferner anzumerken, dass eine Vielfalt verschiedener konkurrierender und proprietärer Zwischenverbindungslösungen (z. B. RLink, Mehrchipgehäuseverbindung (MCPL: Multi-Chip-Package-Link), Speicher mit hoher Bandbreite (HBM2), doppelte Datenrate (DDR), usw.) zur Anwendung in MCP-Vorrichtungen (z. B. 500) entwickelt wurde, um sowohl die Zwischenverbindungen (z. B. 520) zwischen Chips (oder Dies) als auch das Verbinden von Komponenten (z. B. 525-530, 540-545) innerhalb der Chips (z. B. 505, 510) zu erleichtern. Gestaltungsmechanismen zum Bereitstellen einer Kommunikation zwischen Chips (oder Dies) auf einem Mehrchipgehäuse können herausfordernd sein, wobei traditionelle Lösungen hochspezialisierte, teure und gehäusespezifische Lösungen basierend auf den spezifischen Kombinationen von Komponenten (und gewünschten Transaktionen), die miteinander verbunden werden sollen, einsetzen.
  • Die Beispiele, Systeme, Algorithmen, Vorrichtungen, Logik und Merkmale, die innerhalb dieser Beschreibung beschrieben sind, können mindestens einige der oben identifizierten Probleme adressieren, einschließlich potenziell vieler anderer hier nicht explizit erwähnter. Beispielsweise kann bei manchen Implementierungen eine ungefähre Datenbusinversionstechnik für latenzempfindliche Anwendungen für eine Mehrchipgehäuseverbindung (MCPL) bereitgestellt werden, die eine Schnittstelle mit hoher Bandbreite, niedriger Leistung und niedriger Latenz sein kann, um eine Host-Vorrichtung (z. B. eine CPU) oder eine andere Vorrichtung mit einem Begleitchip zu verbinden, der in demselben Gehäuse wie der Host sitzt. Eine solche MCPL kann Latenz reduzieren und SSO(Simultaneous Switching Output)-Rauschen begrenzen.
  • Unter Bezugnahme auf 6 ist ein vereinfachtes Blockdiagramm 600 gezeigt, das mindestens einen Teil eines Systems einschließlich einer beispielhaften Implementierung einer Mehrchipgehäuseverbindung (MCPL) repräsentiert. Eine MCPL kann unter Verwendung physikalischer elektrischer Verbindungen (z. B. Drähte, die als Spuren eines Busses/Kanals implementiert sind) implementiert werden, die eine erste Vorrichtung 605 (z. B. einen ersten Die, der eine oder mehrere Teilkomponenten aufweist) mit einer zweiten Vorrichtung 610 (z. B. einen zweiten Die, der eine oder mehrere andere Teilkomponenten aufweist) verbinden. Bei dem speziellen Beispiel, das in der High-Level-Repräsentation des Diagramms 600 gezeigt ist, können alle Signale (in Kanälen 622, 624) unidirektional sein und Spuren können bereitgestellt werden, damit die Datensignale sowohl einen Upstream-Datentransfer als auch einen Downstream-Datentransfer aufweisen. Während sich das Blockdiagramm 600 aus 6 auf die erste Komponente 605 als die stromaufwärtige Komponente und die zweite Komponente 610 als die stromabwärtige Komponente bezieht, und physikalische Spuren der MCPL, die beim Senden von Daten als ein Downstream-Kanal 622 verwendet werden, und Spuren, die zum Empfangen von Daten (von der Vorrichtung 610) als ein Upstream-Kanal 624 verwendet werden, versteht es sich, dass die MCPL zwischen den Vorrichtungen 605, 610 durch jede Vorrichtung verwendet werden kann, um Daten zwischen den Vorrichtungen sowohl zu senden als auch zu empfangen.
  • Bei einem Implementierungsbeispiel kann eine MCPL eine physikalische Schicht (PHY) bereitstellen, die elektrische MCPL-PHY 625a,b (oder zusammen 625) und ausführbare Logik aufweist, die die MCPL-Logik-PHY 630a,b (oder zusammen 630) implementiert. Die elektrische oder physikalische PHY 625 kann die physikalische Verbindung bereitstellen, über die Daten zwischen den Vorrichtungen 605, 610 kommuniziert werden. Signalaufbereitungskomponenten und Logik können in Verbindung mit der physikalischen PHY 625 implementiert werden, um hohe Datenraten- und Kanalkonfigurationsfähigkeiten der Verbindung einzurichten, was in manchen Anwendungen eng gebündelte physikalische Verbindungen bei Längen von ungefähr 45 mm oder mehr involvieren kann. Die logische PHY 630 kann Logik zum Ermöglichen von Takten, Verbindungszustandsverwaltung (z. B. für Verbindungsschichten 635a, 635b) und Protokollmultiplexen zwischen potenziell mehreren unterschiedlichen Protokollen, die für Kommunikationen über die MCPL verwendet werden, umfassen.
  • Bei einer beispielhaften Implementierung kann die physikalische PHY 625 für jeden Kanal (z. B. 622, 624) einen Satz von Datenspuren aufweisen, über die bandinterne Daten gesendet werden können. In diesem speziellen Beispiel sind 50 Datenspuren in jedem der Upstream- und Downstreamkanäle 622, 624 bereitgestellt, obwohl eine beliebige andere Anzahl von Spuren verwendet werden kann, wie durch die Layout- und Leistungsbeschränkungen, gewünschten Anwendungen, Vorrichtungsbeschränkungen usw. erlaubt. Jeder Kanal kann ferner eine oder mehrere dedizierte Spuren für ein Strobe- oder Taktsignal für den Kanal, eine oder mehrere dedizierte Spuren für ein gültiges Signal für den Kanal, eine oder mehrere dedizierte Spuren für ein Stream-Signal und eine oder mehrere dedizierte Spuren für ein Verbindungszustandsmaschinen-Management oder Seitenbandsignal aufweisen. Die physikalische PHY kann ferner eine Seitenbandverbindung 640 aufweisen, die bei manchen Beispielen eine bidirektionale Steuersignalverbindung mit niedrigerer Frequenz sein kann, die verwendet wird, um Zustandsübergänge und andere Attribute der MCPL-Verbindungsvorrichtungen 605, 610 unter anderen Beispielen zu koordinieren.
  • Bei manchen Implementierungen können bandinterne Daten (und andere Daten), die über die MCPL gesendet werden, verwürfelt werden. In einem Beispiel können die Daten auf jeder Spur unter Verwendung einer Pseudozufallsbinärsequenz (PRBS: Pseudo Random Binary Sequence) verwürfelt werden. Bei manchen Implementierungen kann die PRBS erzeugt werden, um mit ausgehenden Daten unter Verwendung eines Linearrückkopplungsschieberegisters (LFSR: Linear Feedback Shift Register) verwürfelt zu werden. Eine Empfangsvorrichtung kann unter anderem die Daten entwürfeln, um die Daten in der Klarheit zu betrachten.
  • Wie oben angemerkt, können mehrere Protokolle unter Verwendung einer Implementierung von MCPL unterstützt werden. Tatsächlich können mehrere unabhängige Transaktionsschichten 650a, 650b an jeder Vorrichtung 605, 610 bereitgestellt sein. Beispielsweise kann jede Vorrichtung 605, 610 zwei oder mehr Protokolle unterstützen und nutzen, wie unter anderem PCI, PCle, QPI, Intel In-Die Interconnect (IDI). IDI ist ein kohärentes Protokoll, das auf dem Die verwendet wird, um zwischen Kernen, Last-Level-Caches (LLCs), Speicher, Grafiken und E/A-Steuerungen zu kommunizieren. Andere Protokolle können auch unterstützt werden, einschließlich Ethernet-Protokoll, Infiniband-Protokolle und anderer PCIe-Struktur-basierter Protokolle. Die Kombination der logischen PHY und der physikalischen PHY kann unter anderem auch als eine Diezu-Die-Zwischenverbindung verwendet werden, um eine SerDes-PHY (PCle, Ethernet, Infiniband oder andere Hochgeschwindigkeits-SerDes) auf einem Die mit ihren oberen Schichten zu verbinden, die auf dem anderen Die implementiert sind.
  • Die logische PHY 630 kann Multiplexen zwischen diesen mehreren Protokollen auf einer MCPL unterstützen. Beispielsweise kann die dedizierte Stream-Spur verwendet werden, um ein codiertes Stream-Signal zu aktivieren, das identifiziert, welches Protokoll auf Daten anzuwenden ist, die im Wesentlichen gleichzeitig auf den Datenspuren des Kanals gesendet werden. Ferner kann die logische PHY 630 verwendet werden, um die verschiedenen Arten von Verbindungszustandsübergängen auszuhandeln, die die verschiedenen Protokolle unterstützen oder anfordern können. In manchen Fällen können LSM_SB-Signale, die über die dedizierte LSM_SB-Spur des Kanals gesendet werden, zusammen mit der Seitenbandverbindung 640 verwendet werden, um Verbindungszustandsübergänge zwischen den Vorrichtungen 605, 610 zu kommunizieren und auszuhandeln. Ferner können Datenbusinversion (DBI), Link-Training, Fehlerdetektion, Verzerrungsdetektion, Entzerrung und andere Funktionalität traditioneller Zwischenverbindungen teilweise unter Verwendung der logischen PHY 630 ersetzt oder geregelt werden. Zum Beispiel können unter anderem gültige Signale, die über eine oder mehrere dedizierte gültige Signalspuren in jedem Kanal gesendet werden, verwendet werden, um Verbindungsaktivität zu signalisieren, Verzerrung, Verbindungsfehler zu detektieren und andere Merkmale zu realisieren. Bei dem speziellen Beispiel von 6 sind mehrere gültige Spuren pro Kanal bereitgestellt. Beispielsweise können Datenspuren innerhalb eines Kanals gebündelt oder geclustert werden (physikalisch und/oder logisch) und eine gültige Spur kann für jeden Cluster bereitgestellt werden. Ferner können mehrere Strobe-Spuren in manchen Fällen bereitgestellt werden, um unter anderem auch ein dediziertes Strobe-Signal für jeden Cluster in mehreren Datenspur-Clustern in einem Kanal bereitzustellen.
  • Wie oben angemerkt, kann die logische PHY 630 verwendet werden, um Verbindungssteuersignale auszuhandeln und zu verwalten, die zwischen Vorrichtungen gesendet werden, die durch die MCPL verbunden sind. Bei manchen Implementierungen kann die logische PHY 630 eine Verbindungsschichtpaket(LLP)-erzeugungslogik 660 aufweisen, die verwendet werden kann, um Verbindungsschichtsteuernachrichten über die MCPL (d. h., bandintern) zu senden. Solche Nachrichten können über Datenspuren des Kanals gesendet werden, wobei die Stream-Spur identifiziert, dass die Daten Verbindungsschicht-zu-Verbindungsschicht-Messaging sind, wie unter anderem Verbindungsschicht-Steuerdaten. Verbindungsschicht-Nachrichten, die unter Verwendung der LLP-Logik 660 aktiviert werden, können unter anderen Verbindungsschichtmerkmalen zwischen den Verbindungsschichten 635a, 635b der Vorrichtungen 605, 610 bei der Verhandlung und Leistungsfähigkeit von Verbindungsschichtzustandsübergang, Leistungsverwaltung, Loopback, Deaktivieren, Neuzentrieren, Verwürfeln helfen.
  • Unter Bezugnahme auf 7 ist ein Diagramm 700 gezeigt, das eine beispielhafte Signalisierung unter Verwendung eines Satzes von Spuren (z. B. 622, 624) in einem speziellen Kanal einer beispielhaften MCPL repräsentiert. Bei dem Beispiel von 7 sind zwei Cluster von fünfundzwanzig (25) Datenspuren für insgesamt fünfzig (50) Datenspuren in dem Kanal bereitgestellt. Ein Teil der Spuren ist gezeigt, während andere (z. B. DATA[4-46] und eine zweite Strobe-Signal-Spur (STRB)) zur Bequemlichkeit bei der Veranschaulichung des speziellen Beispiels weggelassen sind (z. B. als redundante Signale). Wenn sich die Bitübertragungsschicht in einem aktiven Zustand (z. B. nicht ausgeschaltet oder in einem Niedrigleistungsmodus (z. B. einem L1-Zustand)) befindet, können Strobe-Spuren (STRB) mit einem synchronen Taktsignal versehen werden. Bei manchen Implementierungen können Daten sowohl auf der steigenden als auch auf der fallenden Flanke des Strohes gesendet werden. Jede Flanke (oder Halbtakt) kann ein Einheitsintervall (UI: Unit Intervall) abgrenzen. Dementsprechend kann in diesem Beispiel ein Bit (z. B. 705) auf jeder Spur gesendet werden, wodurch ermöglicht wird, dass ein Byte alle 8UI gesendet wird. Ein Byte-Zeitraum kann als 8UI oder die Zeit zum Senden eines Bytes auf einer einzelnen der Datenspuren (z. B. DATA[0-49]) definiert sein.
  • Bei manchen Implementierungen kann ein gültiges Signal, das auf einem oder mehreren dedizierten gültigen Signalkanälen (z. B. VALIDO, VALID1) gesendet wird, als ein führender Indikator für die empfangende Vorrichtung dienen, um, wenn sie aktiviert ist (High), der empfangenden Vorrichtung oder Senke zu identifizieren, dass Daten von der sendenden Vorrichtung oder Quelle auf Datenspuren (z. B. DATA[0-49]) während des folgenden Zeitraums gesendet werden. Alternativ dazu gibt die Quelle, wenn das gültige Signal niedrig ist, der Senke an, dass die Senke während des folgenden Zeitraums keine Daten auf den Datenspuren senden wird. Dementsprechend kann, wenn die logische Senke-PHY detektiert, dass das gültige Signal nicht aktiviert ist (z. B. auf den Spuren VALID0 und VALID1), die Senke jegliche Daten ignorieren, die auf den Datenspuren detektiert werden (z. B. DATA[0-49]), während des folgenden Zeitraums. Beispielsweise können Übersprechrauschen oder andere Bits auf einer oder mehreren der Datenspuren auftreten, wenn die Quelle tatsächlich keine Daten sendet. Aufgrund eines niedrigen oder nicht aktivierten gültigen Signals während des vorherigen Zeitraums (z. B. dem vorherigen Byte-Zeitraum) kann die Senke bestimmen, dass die Datenspuren während des folgenden Zeitraums zu vernachlässigen sind.
  • Daten, die auf jeder der Spuren der MCPL gesendet werden, können streng an das Strobe-Signal angepasst werden. Ein Zeitraum kann basierend auf dem Strobe definiert werden, wie etwa ein Byte-Zeitraum, und jeder dieser Zeiträume kann einem definierten Fenster entsprechen, in dem Signale auf den Datenspuren (z. B. DATA[0-49]), den gültigen Spuren (z. B. VALIDO, VALID1) und der Stream-Spur (z. B. STREAM) gesendet werden sollen. Dementsprechend kann eine Ausrichtung dieser Signale eine Identifikation ermöglichen, dass ein gültiges Signal in einem vorherigen Zeitraumfenster auf Daten in dem folgenden Zeitraumfenster zutrifft und dass ein Stream-Signal auf Daten in demselben Zeitraumfenster zutrifft. Das Stream-Signal kann ein codiertes Signal (z. B. 1 Byte Daten für ein Byte-Zeitraumfenster) sein, das codiert ist, um das Protokoll zu identifizieren, das für Daten gilt, die während dem selben Zeitraumfensters gesendet werden.
  • Zur Veranschaulichung ist in dem speziellen Beispiel von 7 ein Byte-Zeitraumfenster definiert. Ein gültiges Signal wird in einem Zeitraumfenster n (715) aktiviert, bevor irgendwelche Daten auf den Datenspuren DATA[0-49] injiziert werden. Im folgenden Zeitraumfenster n+1 (720) werden Daten auf zumindest einigen der Datenspuren gesendet. In diesem Fall werden Daten auf allen fünfzig Datenspuren während n+1 (720) gesendet. Weil ein gültiges Signal für die Dauer des vorhergehenden Zeitraumfensters n (715) aktiviert wurde, kann die Senkenvorrichtung die Daten validieren, die auf den Datenspuren DATA[0-49] während des Zeitraumfensters n+1 (720) empfangen wurden. Zusätzlich ermöglicht die führende Natur des gültigen Signals während des Zeitraumfensters n (715) der Empfangsvorrichtung, sich auf die eingehenden Daten vorzubereiten. Fortfahrend mit dem Beispiel von 7 bleibt das gültige Signal während der Dauer des Zeitraumfensters n+1 (720) aktiviert (auf VALIDO und VALID1), was bewirkt, dass die Senkenvorrichtung die Daten erwartet, die während des Zeitraumfensters n+2 über die Datenspuren DATA[0-49] gesendet werden (725). Falls das gültige Signal während des Zeitraumfensters n+2 aktiviert bleiben würde (725), könnte die Senkenvorrichtung ferner erwarten, zusätzliche Daten zu empfangen (und zu verarbeiten), die während eines unmittelbar nachfolgenden Zeitraumfensters n+3 gesendet wurden (730). Bei dem Beispiel von 7 wird das gültige Signal jedoch während der Dauer des Zeitraumfensters n+2 deaktiviert (725), was der Senkenvorrichtung angibt, dass keine Daten während des Zeitraumfensters n+3 gesendet werden (730) und dass irgendwelche Bits, die auf den Datenspuren DATA[0-49] detektiert werden, während des Zeitraumfensters n+3 (730) vernachlässigt werden sollten.
  • Wie oben angemerkt, können mehrere gültige Spuren und Strobe-Spuren pro Kanal beibehalten werden. Dies kann unter anderen Vorteilen beim Beibehalten einer Schaltungseinfachheit und Synchronisation unter den Clustern relativ langer physikalischer Spuren, die die beiden Vorrichtungen verbinden, helfen. Bei manchen Implementierungen kann ein Satz von Datenspuren in Cluster von Datenspuren unterteilt sein. Beispielsweise können in dem Beispiel von 7 Datenspuren DATA[0-49] in zwei fünfundzwanzig Spur-Cluster aufgeteilt werden und jeder Cluster kann eine dedizierte gültige und Strobe-Spur aufweisen. Beispielsweise kann die gültige Spur VALIDO mit Datenspuren DATA[0-24] assoziiert sein und kann die gültige Spur VALID1 mit Datenspuren DATA[25-49] assoziiert sein. Die Signale auf jeder „Kopie“ der gültigen und Strobe-Spuren für jeden Cluster können identisch sein.
  • Wie oben eingeführt, können Daten auf der Stream-Spur STREAM verwendet werden, um der empfangenden logischen PHY anzuzeigen, welches Protokoll auf entsprechende Daten anzuwenden ist, die auf den Datenspuren DATA[0-49] gesendet werden. In dem Beispiel von 7 wird ein Stream-Signal während desselben Zeitraumfensters wie Daten auf den Datenspuren DATA[0-49] auf STREAM gesendet, um das Protokoll der Daten auf den Datenspuren anzugeben. Bei alternativen Implementierungen kann das Stream-Signal unter anderen möglichen Modifikationen während eines vorhergehenden Zeitraumfensters gesendet werden, wie etwa mit entsprechenden gültigen Signalen. Fortfahrend mit dem Beispiel von 7 wird jedoch ein Stream-Signal 735 während des Zeitraumfensters n+1 (720) gesendet, das codiert ist, um das Protokoll (z. B. PCle, PCI, IDI, QPI usw.) anzugeben, das auf die Bits anzuwenden ist, die während des Zeitraumfensters n+1 (720) über die Datenspuren gesendet werden. Gleichermaßen kann ein anderes Stream-Signal 740 während des nachfolgenden Zeitraumfensters n+2 (725) gesendet werden, um das Protokoll anzugeben, das für die Bits gilt, die über die Datenspuren DATA[0-49] während des Zeitraumfensters n+2 (725) gesendet werden, und so weiter. In manchen Fällen, wie etwa dem Beispiel von 7 (bei dem beide Stream-Signale 735, 740 die gleiche Codierung aufweisen, binäres FF), können Daten in sequenziellen Zeitraumfenstern (z. B. n+1 (720) und n+2 (725)) zu demselben Protokoll gehören. In anderen Fällen können jedoch Daten in sequenziellen Zeitraumfenstern (z. B. n+1 (720) und n+2 (725)) von unterschiedlichen Transaktionen stammen, auf die unterschiedliche Protokolle anzuwenden sind, und Stream-Signale (z. B. 735, 740) können entsprechend codiert werden, um die unterschiedlichen Protokolle zu identifizieren, die unter anderen Beispielen für die sequenziellen Bytes von Daten auf den Datenspuren (z. B. DATA[0-49]) gelten.
  • Bei manchen Implementierungen kann ein Niedrigleistungs- oder Ruhezustand für die MCPL definiert werden. Wenn beispielsweise keine Vorrichtung auf der MCPL Daten sendet, kann die physikalische Schicht (elektrisch und logisch) der MCPL in einen Ruhe- oder Niedrigleistungszustand übergehen. Beispielsweise befindet sich bei dem Beispiel von 7 bei dem Zeitraumfenster n-2 (745) die MCPL in einem Ruhe- oder inaktiven Zustand und der Strobe ist deaktiviert, um Strom zu sparen. Die MCPL kann aus dem Niedrigleistungs- oder Ruhemodus übergehen, wobei der Strobe in dem Zeitraumfenster-Zeitperiodenfenster n-1 aufgeweckt wird (z. B. 705). Der Strobe kann eine Übertragungspräambel abschließen (z. B., um beim Aufwachen und Synchronisieren jeder der Spuren des Kanals sowie der Senkenvorrichtung zu assistieren), wobei das Strobe-Signal vor irgendeiner anderen Signalisierung auf den anderen Nicht-Strobe-Spuren begonnen wird. Anschließend an dieses Zeitraumfenster n-1 (705) kann das gültige Signal in dem Zeitraumfenster n (715) aktiviert werden, um die Senke zu benachrichtigen, dass Daten in dem folgenden Zeitraumfenster n+1 (720) bevorstehen, wie oben erläutert.
  • Die MCPL kann nach der Detektion von Ruhebedingungen auf den gültigen Spuren, Datenspuren und/oder anderen Spuren des MCPL-Kanals wieder in einen Niedrigleistungs- oder Ruhezustand (z. B. einen L1-Zustand) eintreten. Zum Beispiel wird möglicherweise keine Signalisierung beginnend bei dem Zeitraumfenster n+3 (730) und fortschreitend detektiert. Logik auf entweder der Source- oder der Senkenvorrichtung kann einen Übergang zurück in einen Niedrigleistungszustand initiieren, was unter anderen Beispielen und Prinzipien (einschließlich der später hier erläuterten) wieder (z. B. Zeitraumfenster n+5 (755)) dazu führt, dass der Strobe in einem Leistungssparmodus in den Ruhezustand übergeht.
  • Elektrische Charakteristiken der physikalischen PHY können unsymmetrische Signalisierung und/oder halbratenweitergeleitete Taktung und/oder Anpassung des Zwischenverbindungskanals sowie On-Chip-Transportverzögerung von Sender (Source) und Empfänger (Senke) und/oder optimierten ESD-Schutz (ESD: Electrostatic Discharge) und/oder Padkapazität unter anderen Merkmalen umfassen. Ferner kann eine MCPL implementiert werden, um eine höhere Datenrate (z. B. sich 16 Gb/s nähernd) und Energieeffizienzcharakteristiken als traditionelle Gehäuse-E/A-Lösungen zu erreichen.
  • Bei einendigen parallelen Verbindungen, wie der MCPL der 5-7, ist zum Beispiel stromversorgungsinduzierter Jitter ein großer Begrenzer beim Erreichen höherer Datenraten. Eine MCPL kann einen breiten Kanal mit mehreren zehn, hunderten oder sogar mehr Datenspuren beinhalten, die Daten in denselben Taktzyklen übertragen. Leistungsversorgungsbezogene Ereignisse können in Abhängigkeit davon auftreten, wie viele Spuren in jedem Zyklus oder über einen kurzen Zeitraum umschalten (oder übergehen). Unter Bezugnahme auf 7 könnte, falls die über Datenspuren [0]-[49] (z. B. alle 1 s) zu übertragenden Daten genau das entgegengesetzte von Bits in diesen Spuren in einem vorherigen Taktzyklus (z. B. alle 0 s) waren, signifikantes Signalumschaltrauschen (SSO) auftreten, wenn jede der Datenspuren zu ihrem entgegengesetzten Wert (z. B. von 0 nach 1 umgewandelt) umgewandelt wird. Zum Beispiel kann das Umschalten aller Spuren [0]-[49] von 0 s auf 1 s für einen einzigen Taktzyklus bewirken, dass die Spannung abfällt und zu Übertragungsfehlern bei der Übertragung der 1 s führt. Dementsprechend kann eine signifikante Menge an Leistung aufgrund von Bitübergängen in den Spuren von einem Taktzyklus zu dem nächsten Taktzyklus verschwendet werden.
  • Datenbusinversion (DBI) ist eine Technik zum Reduzieren von gleichzeitigem Schalten(SSO)-Rauschen und Leistung in einendigen parallelen Verbindungen (z. B. DDR, MCPL, RLINK, HBM2 usw.). DBI kann große Mengen an Verlustleistung aufgrund von Übergängen auf Datenbussen abschwächen. DBI kann in Systemen mit Gleichstrom-DBI (DC-DBI) für terminierte Ein-/Ausgänge (IOs) oder Wechselstrom-DBI (AC-DBI) für nicht terminierte IOs implementiert werden. Bei einer DBI-Implementierung kann der Zustand der zu übertragenden Daten vor der Übertragung basierend auf einem vorbestimmten Codierungsalgorithmus invertiert werden. Bei traditioneller DBI werden zu übertragende Daten auf einem Bus invertiert, wenn andernfalls mehr als die Hälfte der Anzahl der Gesamtspuren auf dem Bus zum Schalten oder Überführen ihrer Bitwerte erforderlich wäre, um die Daten in ihrer nicht-invertierten Form zu übertragen. Dadurch wird sichergestellt, dass die Anzahl der Spurwechselbitwerte (bzw. das Senden eines bestimmten Pegels) bei halber Gesamtspurenzahl abgeschnitten wird.
  • Ein Codierungsalgorithmus kann verwendet werden, um DBI zu implementieren, um zu bestimmen, ob eine Invertierung angemessen ist, und falls ja, um den Zustand von Daten vor der Übertragung zu invertieren. Der Codierungsalgorithmus kann eine Schwelle (hier auch als eine Übergangsschwelle bezeichnet) festlegen, um die Anzahl von Übergängen (z. B. Bitwerte in den Datenspuren von einem vorherigen Taktzyklus ändern sich zu unterschiedlichen Bitwerten ursprünglicher Daten, die in einem neuen Taktzyklus zu übertragen sind) anzugeben, die erforderlich wären, um die Daten zu übertragen. Das Erreichen oder Überschreiten der Schwelle kann eine Invertierung der zu übertragenden Daten auslösen, um die erforderlichen Spurübergänge zu vermeiden. Zum Beispiel wird eine Bestimmung dahingehend vorgenommen, ob Daten, die auf einem gegebenen Satz von Datenspuren (z. B. n Datenspuren) übertragen werden sollen, mehr als die Hälfte der Datenspuren von dem vorherigen Taktzyklus zum Übergang (z. B. erforderliche Übergänge > n/2) von einem Wert zu einem anderen (z. B. 1 zu 0 oder 0 zu 1) erfordern werden. Falls die Übergangsschwelle erfüllt ist, dann können die Daten in einer invertierten Version codiert werden, um auf den Spuren übertragen zu werden. Die invertierten Daten reduzieren die Anzahl von Datenspuren, die Übergänge erfordern. Außerdem wird ein Invertierungsindikator (z. B. eine zusätzliche Spur) aktiviert, um die Empfangsvorrichtung wissen zu lassen, dass sie den Bus invertieren muss, um die realen Daten zu erhalten. Die DBI-Technik ermöglicht es einem Sender und Empfänger, das Umschalten von Bitwerten in den Datenspuren zwischen einem vorherigen Taktzyklus und einem neuen Taktzyklus zu minimieren.
  • DBI erfordert eine genaue Zählung der Anzahl der einen Pegel (0 oder 1) schaltenden oder übertragenden Spuren. Zum Beispiel hängt der ordnungsgemäße Betrieb von AC-DBI davon ab, die genaue Anzahl von Spuren zu finden, die von einem vorherigen Zyklus zu einem neuen Zyklus wechseln. DBI wird typischerweise unter Verwendung von Volladdierern implementiert und die Anzahl der Spuren pro DBI-Signal bestimmt die Anzahl der erforderlichen Volladdiererebenen. Dementsprechend nimmt mit zunehmender Anzahl an Spuren auch die Anzahl an Volladdiererebenen zu, die benötigt werden. Mit mehreren Pegeln vollständiger Addition kann die Übertragausbreitung signifikante Latenz einführen und die DBI-Signalerzeugungsverzögerung bestimmen. Zum Beispiel wird in Rippel-Carry-Addierern (kleine Fläche und Leistung) die Berechnungsverzögerung durch Übertragausbreitung bestimmt (z. B. ein standardmäßiger 16-Bit-Rippel-Carry-Addierer weist eine Latenz von 47 Gate-Verzögerungen auf). Bei latenzempfindlichen E/A-Verbindungen (z. B. Mehrchipgehäuseverbindung (MCPL)) kann dies einen signifikanten Teil der E/A-Latenz darstellen. Andere Techniken, wie Carry-Look-Ahead-Addierer und spekulative Addierer, können verwendet werden, aber Implementierungslogik wird kompliziert und erhöht die Gate-Anzahl (Leistung) für mehr als wenige Bits.
  • Obwohl DBI nützlich sein kann, um SSO zu reduzieren, kann die resultierende Zunahme der Latenz zu einem anderen Problem werden, das bei latenzempfindlichen Anwendungen besonders akut ist. Bei MCPL-Schnittstellen sind beispielsweise Datenrate und Latenz kritische Metriken für den Erfolg von zumindest manchen Produkten. MCPL ist eine Die-zu-Die-Verschaltung und wird häufig verwendet, um Mesh-Signale über CPU-Kern-Dies zu senden. Jede Erhöhung der Latenz aufgrund von MCPL-PHY im Vergleich zu einer monolithischen Mesh-Netzwerk-Implementierung ist ein direkter Leistungsverlust. Zusätzlich dazu weist die MCPL-Schnittstelle eine große Spurenzahl (die erforderlich ist, um alle Mesh-Signale zu senden) auf, die gleichzeitig schalten kann, was signifikanten SSO-bezogenen Droop und Hochfrequenzrauschen verursacht. Dies kann die Verbindungsdatenrate reduzieren und sich auf die Auswirkung auswirken. Dementsprechend ist es wünschenswert, DBI-bezogene Latenz zu reduzieren, während auch gleichzeitige Schaltereignisse abgeschwächt werden. Ferner ist eine regelmäßige DBI-Zuordnung (d.h., Spuren/DBI) aufgrund von Mesh-Signalverteilung und Aktivitätsfaktor nicht immer möglich. Somit wird eine flexible Architektur benötigt, um Worst-Case-SSO-Szenarien zu vermeiden.
  • Ein System, das zum Durchführen einer ungefähren mehrheitsvotierbasierten DBI-Technik für latenzempfindliche Anwendungen implementiert ist, kann viele dieser Probleme (und mehr) lösen. In einer oder mehreren Ausführungsformen wird eine mehrheitsvotierlogikbasierte DBI-Signalerzeugung verwendet, um zu bestimmen, ob DBI aktiviert werden soll. Dieser Ansatz kann SSO-bezogenes Rauschen zusätzlich zum signifikanten Reduzieren der Latenz, die häufig mit traditioneller DBI auftritt, begrenzen. Anstatt eine tatsächliche Summe der Anzahl von Schaltspuren zu berechnen, verwenden Ausführungsformen ein einfaches Mehrheitsvotum, um zu bestimmen, ob ein Bus eine Invertierung benötigt oder nicht. In einer oder mehreren Ausführungsformen wird Mehrheitsvotierlogik verwendet, um zu approximieren, ob eine Mehrheit von Datenspuren Bitwerte von einem vorherigen Taktzyklus aufweist, die basierend auf neuen Daten, die durch die Datenspuren in einem neuen Taktzyklus zu übertragen sind, zu unterschiedlichen Werten übergehen müssen. Falls bestimmt wird, dass die Mehrheit der Datenspuren Bitwerte aufweist, die umgewandelt werden müssen, um die neuen Daten in dem neuen Taktzyklus zu übertragen, dann kann Invertierung angewendet werden, um die neuen Daten in invertierte Daten zu codieren, die durch die Datenspuren zu übertragen sind. Durch Approximieren der Bestimmung, ob mehr als die Hälfte der Datenspuren zu einem anderen Wert übergehen muss, um die ursprünglichen Daten zu übertragen, kann Mehrheitsvotierlogik verwendet werden, die weniger Ressourcen verbraucht als volle Addierer, die bei einer exakten Bestimmung verwendet werden. Dementsprechend kann die Latenz signifikant reduziert werden, während auch SSO-Rauschen und Leistungsverlust mit der DBI signifikant reduziert werden.
  • Die offenbarten Ausführungsformen einer ungefähren mehrheitsvotierbasierten DBI-Technik reduzieren SSO-Rauschen, während gleichzeitig Latenz, die durch eine herkömmliche DBI-Technik verursacht wird, signifikant reduziert wird. Die hier offenbarte ungefähre DBI-Technik kann Gate-Verzögerungen in einer MCPL-Zwischenverbindung reduzieren, um Leistungsfähigkeitsverlust aufgrund von Latenz zu minimieren. Außerdem ermöglicht die Verwendung von Mehrheitsvotierlogik mit Datenbusinversion Flexibilität beim Auswählen der Spurenzahl pro DBI. Zum Beispiel kann die Anzahl von Spuren, auf die DBI angewendet wird, und/oder die Übergangsschwelle, die verwendet wird, um zu bestimmen, wann Invertierung angewendet wird, basierend auf bestimmten Implementierungen und Bedürfnissen angepasst oder moduliert werden. Diese flexible Architektur der ungefähren DBI-Technik stellt sicher, dass das Worst-Case-SSO ohne übermäßige Latenz vermieden werden kann.
  • Unter Bezugnahme auf 8 veranschaulicht ein vereinfachtes Blockdiagramm eine beispielhafte Mehrchipgehäuse(MCP)-vorrichtung 800 einschließlich einer MCP-Verbindung (MCPL) 820, die mit einem ungefähren Datenbusinversionssystem implementiert ist. Die MCP-Vorrichtung 800 und die MCP-Verbindung 820 können auf die gleiche oder eine ähnliche Weise wie hier beschriebene MCPs und MCPLs (z. B. die MCP-Vorrichtung 500, die MCPL 520, das Blockdiagramm 600 usw.) konfiguriert sein. Bei einem oder mehreren Beispielen kann die MCPL 820 unter Verwendung physikalischer elektrischer Verbindungen (z. B. Drähte, die als Spuren eines Busses/Kanals implementiert sind) implementiert werden, die eine erste Vorrichtung 805 (z. B. einen ersten Die einschließlich einer oder mehrerer Teilkomponenten) mit einer zweiten Vorrichtung 815 (z. B. einen zweiten Die einschließlich einer oder mehrerer Teilkomponenten) verbinden. In einem Beispiel kann die Vorrichtung 805 eine stromaufwärtige Vorrichtung sein und die Vorrichtung 810 kann eine stromabwärtige Vorrichtung sein. In dem speziellen Beispiel, das in der High-Level-Repräsentation aus 8 gezeigt ist, können Signale in den Kanälen 822, 824 unidirektional sein und Spuren können bereitgestellt werden, damit die Datensignale sowohl einen Upstream-Datentransfer als auch einen Downstream-Datentransfer aufweisen. Während 8 die erste Vorrichtung 805 als die Upstream-Komponente und die zweite Vorrichtung 810 als die Downstream-Komponente und physikalische Spuren der MCPL 820, die beim Senden von Daten (von der Vorrichtung 805) als einen Downstream-Kanal 822 verwendet werden, und Spuren, die zum Empfangen von Daten (von der Vorrichtung 810) als einen Upstream-Kanal 824 verwendet werden, zeigt, versteht es sich, dass die MCPL zwischen den Vorrichtungen 805, 810 zur Verwendung durch jede Vorrichtung konfiguriert sein kann, um sowohl Daten zwischen den Vorrichtungen zu senden als auch zu empfangen, und in einer beliebigen geeigneten Konfiguration kombiniert oder separiert werden kann.
  • In mindestens einer Ausführungsform kann das ungefähre DBI-System in der Senderschaltungsanordnung (830, 840) und der Empfängerschaltungsanordnung (836, 846) in den Kommunikationsvorrichtungen (oder Dies), wie etwa den Vorrichtungen 805 und 810, bereitgestellt oder mit diesen gekoppelt sein. Bei mindestens einer Implementierung kann die Senderschaltungsanordnung 830 Teil von MCPL-PHY-Schichten (z. B. 630a, 625a) der Sendevorrichtung 805 sein und kann die Empfängerschaltungsanordnung 846 Teil von MCPL-Schichten (z. B. 630b, 625b) der Empfangsvorrichtung 810 sein. Bei dem Beispiel der MCP-Vorrichtung 800 kann die Vorrichtung 805 eine Senderschaltungsanordnung 830 und eine Empfängerschaltungsanordnung 836 aufweisen und kann die Vorrichtung 810 komplementäre Elemente, wie etwa eine Empfängerschaltungsanordnung 846 und eine Senderschaltungsanordnung 840, aufweisen. Die Senderschaltungsanordnung 830 der Vorrichtung 805 kann eine Übergangskennungslogik 831, eine ungefähre DBI-Logik 832 und einen DBI-Codierer 834 aufweisen und die Empfängerschaltungsanordnung 836 der Vorrichtung 805 kann einen DBI-Decodierer 838 aufweisen. Die Senderschaltungsanordnung 840 der Vorrichtung 810 kann eine Übergangskennungslogik 841, eine ungefähre DBI-Logik 842 und einen DBI-Codierer 844 aufweisen und die Empfängerschaltungsanordnung 846 der Vorrichtung 810 kann einen DBI-Decodierer 848 aufweisen. In einer oder mehreren Ausführungsformen können die Übergangskennungslogik 831, die ungefähre DBI-Logik 832, der DBI-Codierer 834 und der DBI-Decodierer 838 als Teil der MCPL-LOGIK-PHY (z. B. 630a), wie etwa in LLP-Logik (z. B. 660a) der Vorrichtung 805, bereitgestellt werden. Gleichermaßen können in der Vorrichtung 810 die Übergangskennungslogik 841, die ungefähre DBI-Logik 842, der DBI-Codierer 844 und der DBI-Decodierer 848 als Teil der MCPL-LOGIK-PHY (z. B. 630b), wie etwa in der LLP-Logik (z. B. 660b) der Vorrichtung 810, bereitgestellt werden. Es ist anzumerken, dass die in den Figuren gezeigte spezielle nichtbeschränkende Konfiguration, wie etwa 8, zu veranschaulichenden Zwecken dient und basierend auf speziellen Bedürfnissen und Implementierungen variieren kann.
  • In mindestens einer Ausführungsform umfasst das ungefähre DBI-System die Implementierung von Übergangskennungslogik (z. B. 831, 841) und ungefährer DBI-Logik (z. B. 832, 842) in Zusammenarbeit mit DBI-Codierern (z. B. 834, 844). Zur Vereinfachung der Referenz können Operationen der Senderschaltungsanordnung in der MCPL 820 unter Bezugnahme auf die Senderschaltungsanordnung 830 und ihre Komponenten in der stromaufwärtigen Vorrichtung 805 beschrieben werden und können Operationen der Empfängerschaltungsanordnung in der MCPL 820 unter Bezugnahme auf die Empfängerschaltungsanordnung 846 und ihre Komponenten in der stromabwärtigen Vorrichtung 810 beschrieben werden. Es versteht sich jedoch, dass solche Operationen durch die Senderschaltungsanordnung 840 in der Vorrichtung 810 (wenn die Vorrichtung 810 Daten überträgt) und die Empfängerschaltungsanordnung 836 der Vorrichtung 805 (wenn die Vorrichtung 805 die Daten empfängt) durchgeführt werden können.
  • In der Vorrichtung 805 kann die Übergangskennungslogik 831 Bits von Daten auswerten, die in einem neuen Taktzyklus über jeweilige Datenspuren, die die Vorrichtung 805 mit der Vorrichtung 810 verbinden, übertragen werden sollen. Diese Daten werden hierin auch als „ursprüngliche Daten“ und/oder „neue Daten“ bezeichnet. Die Übergangskennungslogik 831 kann Bitwerte der Bits der ursprünglichen Daten mit jeweiligen Bitwerten von Datenspuren in dem vorherigen Taktzyklus vergleichen. Der vorherige Taktzyklus kann der dem neuen Taktzyklus unmittelbar vorangehende Taktzyklus sein. Mit Bezug auf jede Datenspur kann bestimmt werden, ob die Spur einen Bitwert aufweist, der mit einem vorherigen Taktzyklus assoziiert ist, der erforderlich ist, um zu einem anderen Bitwert überzugehen (d. h., umzuschalten, zu wechseln), um die ursprünglichen Daten (d. h., nicht invertiert) in einem neuen Taktzyklus zu übertragen. Für jede Datenspur und jedes assoziierte Bit, die über die Datenspur zu übertragen sind, kann ein jeweiliger Übergangseingabewert erzeugt werden. Ein Übergangseingabewert, der für eine gegebene Datenspur erzeugt wird, gibt an, ob ein Übergang auf der gegebenen Datenspur erforderlich ist, basierend auf dem assoziierten Bit (in den ursprünglichen Daten), das in dem neuen Taktzyklus über die gegebene Datenspur übertragen werden soll.
  • In einer oder mehreren Ausführungsformen können die Übergangseingabewerte in zwei oder mehr Sätze (oder Gruppen) unterteilt sein. In zumindest manchen Ausführungsformen können Übergangseingabewerte derart gleichmäßig unterteilt sein, dass jeder Satz die gleiche Anzahl von Übergangseingabewerten enthält, die die gleiche Anzahl von Datenspuren repräsentieren. Für einen gegebenen Satz von Übergangseingabewerten bestimmt eine Mehrheitsvotierschaltung, ob eine Mehrheit der Datenspuren, die durch den gegebenen Satz von Übergangseingabewerten repräsentiert werden, Bitwerte aufweist, die zum Übergang erforderlich sind, um die ursprünglichen Daten zu übertragen. Ein Ausgabewert kann für den gegebenen Satz erzeugt werden, wobei der Ausgabewert repräsentiert, ob eine Mehrheit der Datenspuren Bitwerte aufweist, die jeweils zu einem anderen Wert (z. B. 1 zu 0 oder 0 zu 1) übergehen müssen, um die ursprünglichen Daten zu übertragen. Bei einem Beispiel gibt ein Ausgabewert von 1 an, dass eine Mehrheit der Datenspuren Bitwerte aufweist, die zu einem anderen Wert übergehen müssen, um die ursprünglichen Daten zu übertragen, während ein Ausgabewert von 0 angibt, dass weniger als eine Mehrheit der Datenspuren Bitwerte aufweist, die zu anderen Werten übergehen müssen, um die ursprünglichen Daten zu übertragen.
  • Die Ausgabewerte von jeder Mehrheitsvotierentscheidungsschaltung, die auf einen Satz von Übergangseingabewerten angewendet werden, können unter Verwendung einer OR-Logik ausgewertet werden, um ein DBI-Signal zum Aktivieren oder Deaktivieren zu erzeugen. Das DBI-Signal kann dem DBI-Codierer 834 bereitgestellt werden, um dem DBI-Codierer zu ermöglichen oder nicht, die ursprünglichen Daten zu invertieren. Falls zum Beispiel die Ausgabewerte repräsentieren, dass für jeden Satz von Übergangseingabewerten eine Mehrheit von Datenspuren, die durch den Satz von Übergangseingabewerten repräsentiert werden, Bitwerte aufweisen, die erforderlich sind, um zu anderen Werten überzugehen, um die ursprünglichen Daten zu übertragen, dann können die Ausgabewerte verwendet werden, um ein Signal zum Aktivieren von DBI zu erzeugen. Das DBI-Signal kann dem DBI-Codierer 834 ermöglichen, die ursprünglichen Daten zu invertieren. Dementsprechend codiert der DBI-Codierer 834 die ursprünglichen Daten in eine invertierte Form, die über die Datenspuren übertragen werden soll. Außerdem kann eine andere Datenspur (hier auch als „Invertierungsindikator“ bezeichnet) aktiviert werden (z. B. auf 1 gesetzt werden), um der Empfängerschaltungsanordnung 846 anzuzeigen, dass die auf den Datenspuren des Busses empfangenen Daten invertiert werden müssen, um die ursprünglichen Daten zu erhalten. Falls andernfalls ein Ausgabewert eines einzelnen Satzes von Übergangseingabewerten angibt, dass weniger als eine Mehrheit von Datenspuren, die durch diesen Satz von Übergangseingabewerten repräsentiert werden, Bitwerte aufweisen, die übergehen müssen, dann wird DBI nicht aktiviert und invertiert der DBI-Codierer 834 die ursprünglichen Daten zur Übertragung nicht. Dementsprechend werden die Datenspuren mit den ursprünglichen (d. h., nichtinvertierten) Daten zur Übertragung an die Vorrichtung 810 codiert. Außerdem wird der Invertierungsindikator deaktiviert (z. B. auf 0 gesetzt), um der Empfängerschaltungsanordnung 846 anzuzeigen, dass die auf den Datenspuren des Busses empfangenen Daten nicht invertiert sind und die ursprünglichen Daten repräsentieren.
  • In manchen Ausführungsformen kann der Datenbusinvertierungsindikator auf 1 gesetzt werden, wenn er aktiviert ist, und auf 0 gesetzt werden, wenn er deaktiviert ist. In anderen Ausführungsformen kann der Datenbusinvertierungsindikator jedoch auf eine andere Weise implementiert werden. Zum Beispiel kann der Datenbusinvertierungsindikator auf 0 gesetzt werden, wenn er aktiviert ist, und auf 1 gesetzt werden, wenn er deaktiviert ist. Darüber hinaus kann eine beliebige andere Art von Signalisierung verwendet werden, um dem Empfänger zu übermitteln, ob bestimmte Daten, die an den Empfänger gesendet werden, invertiert sind oder nicht. Zusätzlich kann bei manchen Implementierungen ein Invertierungsindikator in der Berechnung der Anzahl von Schaltbits für ein bestimmtes Szenario enthalten sein. In diesem bestimmten Szenario wird eine Invertierung durchgeführt, falls die Hälfte der Datenspuren Bitwerte aufweist, die in dem neuen Taktzyklus übergehen müssten, und falls der Invertierungsindikator in dem vorherigen Taktzyklus aktiviert würde. In diesem Fall ist die Anzahl an Spuren mit Schaltbits eine Mehrheit der Gesamtanzahl an Spuren, wobei die Gesamtanzahl an Spuren Datenspuren für die ursprünglichen Datenbits, die in dem neuen Taktzyklus zu übertragen sind, und die zusätzliche Spur für das Invertierungsindikatorbit aufweist. Bei dieser Implementierung wird jedoch berechnet, dass genau die Hälfte der Datenspuren Bitwerte aufweist, die in dem neuen Taktzyklus übergehen müssen.
  • Wenn die Vorrichtung 810 Daten über Datenspuren empfängt, die in dem neuen Taktzyklus in Kanal 822 gesendet werden, kann die Empfängerschaltungsanordnung 846 zuerst bestimmen, ob die empfangenen Daten invertiert sind. Dies kann durch Überprüfung des über den Kanal 822 gesendeten Datenbusinvertierungsindikators festgestellt werden. Falls der Datenbusinvertierungsindikator aktiviert ist (z. B. auf 1 gesetzt ist), kann der DBI-Decodierer 848 die Bitwerte der Datenspuren invertieren, um die ursprünglichen Daten zu erhalten. Falls der Datenbusinvertierungsindikator deaktiviert ist (z. B. auf 0 gesetzt ist), invertiert der DBI-Decodierer 848 die Bitwerte der Datenspuren nicht und empfängt einfach die Bitwerte der Datenspuren als die ursprünglichen Daten.
  • In einer oder mehreren alternativen Ausführungsformen der ungefähren DBI-Logik 832 kann anstelle der Anwendung der Mehrheitsvotierlogik auf Übergangseingabewerte die Mehrheitsvotierlogik auf Sätze von Eingaben angewendet werden, um zu bestimmen, ob die Mehrheit der zu übertragenden Datenbits ein spezieller Logikpegel (z. B. 1 oder 0) ist. Bitwerte der zu übertragenden Datenbits können in zwei oder mehr Sätze unterteilt werden. In zumindest manchen Ausführungsformen können Bitwerte derart gleichmäßig unterteilt sein, dass jeder Satz die gleiche Anzahl von Bitwerten enthält. Für einen gegebenen Satz von Bitwerten kann eine Mehrheitsvotierschaltung bestimmen, ob eine Mehrheit der zu übertragenden Bits, die durch den gegebenen Satz von Bitwerten repräsentiert werden, einen gewissen Wert aufweist (z. B. 1). Ein Ausgabewert kann für den gegebenen Satz erzeugt werden, wobei der Ausgabewert angibt, ob eine Mehrheit der Bitwerte in dem Satz den gewissen Wert aufweist. Bei einem Beispiel gibt ein Ausgabewert von 1 an, dass eine Mehrheit der Bitwerte in dem Satz den gewissen Wert aufweist (z. B. 1), während ein Ausgabewert von 0 angibt, dass weniger als eine Mehrheit der Bitwerte in dem Satz den gewissen Wert aufweist. Die Ausgabewerte von den Mehrheitsvotierschaltungen, die auf die Sätze von Bitwerten angewendet werden, können auf die gleiche oder ähnliche Weise wie die Ausgabewerte von den Mehrheitsvotierschaltungen, die auf die Sätze von Übergangseingabewerten angewendet werden, ausgewertet werden, wie hier zuvor beschrieben. Zusätzlich dazu kann DBI auch wie unter Bezugnahme auf Ausgabewerte beschrieben, die basierend auf Sätzen von Übergangseingabewerten erhalten werden, aktiviert oder deaktiviert werden.
  • Unter Bezugnahme auf 9 ist 9 ein Blockdiagramm, das eine beispielhafte Logik 900 veranschaulicht, die in einer oder mehreren Ausführungsformen verwendet werden kann. Die Logik 900 stellt eine mögliche Implementierung der ungefähren DBI-Logik 832, 842 der MCPL 820 der MCP-Vorrichtung 800 dar. In diesem Beispiel ist die Logik 900 für acht Datenspuren (z. B. L0-L7, nicht gezeigt) pro DBI implementiert. Es sollte jedoch offensichtlich sein, dass die Logik 900 skaliert werden könnte, um eine beliebige Anzahl von Datenspuren aufzunehmen.
  • Neue Daten (auch als „ursprüngliche Daten“ bezeichnet), die in einem neuen Taktzyklus über die acht Datenspuren L0-L7 übertragen werden sollen, weisen acht Bits (z. B. B0-B7, nicht gezeigt) auf. Bitwerte der acht Bits in den ursprünglichen Daten können jeweils mit Bitwerten der acht Datenspuren L0-L7 verglichen werden, um zu bestimmen, ob die jeweiligen Bitwerte gleich oder verschieden sind. Die Bitwerte der acht Datenspuren L0-L7 sind Daten zugeordnet, die während eines vorherigen Taktzyklus übertragen werden. Basierend auf dem Vergleich können acht Übergangseingabewerte T0-T7 erzeugt werden, wobei jeder Übergangseingabewert angibt, ob die jeweiligen Bitwerte, die verglichen werden, gleich oder verschieden sind. Falls jeweilige Bitwerte, die verglichen werden, unterschiedlich sind, dann gibt ein Übergangseingabewert, der erzeugt wird, an, dass der Bitwert der Datenspur zu einem Bitwert eines Bits übergehen muss, das über diese Datenspur übertragen werden soll. Wenn jeweilige Bitwerte, die verglichen werden, gleich sind, dann gibt ein Übergangseingabewert, der erzeugt wird, an, dass der Bitwert der Datenspur nicht zu dem Bitwert des Bits übergehen muss, das über diese bestimmte Datenspur übertragen werden soll. Dementsprechend gibt jeder Übergangseingabewert an, ob ein Bitwert einer Datenspur aus dem vorherigen Taktzyklus zu einem anderen Wert (z. B. Übergang von 1 zu 0 oder Übergang von 0 zu 1) übergehen muss, damit die ursprünglichen Daten über die Datenspuren übertragen werden.
  • Allgemein implementiert die ungefähre DBI-Logik (z. B. 900), anstatt eine tatsächliche Summe der Anzahl von Schaltspuren unter Verwendung der Übergangseingabewerte zu berechnen, zwei oder mehr Mehrheitsvotierberechnungen, um zu bestimmen, ob der Bus eine Invertierung benötigt (z. B., um das SSO zu reduzieren) oder nicht. Bei der in 9 gezeigten Ausführungsform implementiert die Logik 900 zwei Mehrheitsvotierberechnungen als erste Mehrheitsvotierlogik 910 und zweite Mehrheitsvotierlogik 920. Die Übergangseingabewerte sind in zwei gleiche Sätze von vier Übergangseingabewerten (z. B. T0-T3 und T4-T7) unterteilt. Ein erster Satz von Übergangseingabewerten T0-T3 wird in die erste Mehrheitsvotierlogik 910 eingespeist und ein zweiter Satz von Übergangseingabewerten T4-T7 wird in die zweite Mehrheitsvotierlogik 920 eingespeist. Die erste Mehrheitsvotierlogik 910 bestimmt, ob der erste Satz von Übergangseingabewerten T0-T3 angibt, dass eine Mehrheit eines ersten Satzes von Datenspuren (L0-L3) Bitwerte von einem vorherigen Taktzyklus aufweist, die übergehen müssen, um einen ersten Satz von Bits (z. B. B0-B3) der ursprünglichen Daten über den ersten Satz von Datenspuren (L0-L3) zu übertragen.
  • Der Ausgabewert M0 von der Mehrheitsvotierlogik 910 gibt an, ob die Bitwerte einer Mehrheit des ersten Satzes von Datenspuren (z. B. L0-L3) übergehen müssen oder nicht. Bei einem Beispiel kann M0 auf 1 gesetzt werden, falls Bitwerte einer Mehrheit des ersten Satzes von Datenspuren (z. B. L0-L3) übergehen müssen, und M0 kann auf 0 gesetzt werden, falls Bitwerte von weniger als einer Mehrheit des ersten Satzes von Datenspuren (z. B. L0-L3) übergehen müssen.
  • Die zweite Mehrheitsvotierlogik 920 bestimmt, ob der zweite Satz von Übergangseingabewerten T4-T7 angibt, dass eine Mehrheit eines zweiten Satzes von Datenspuren (L4-L7) Bitwerte von einem vorherigen Taktzyklus aufweist, die übergehen müssen, um einen zweiten Satz von Bits (z. B. B4-B7) der ursprünglichen Daten über den zweiten Satz von Datenspuren (L4-L7) zu übertragen.
  • Der Ausgabewert M1 von der Mehrheitsvotierlogik 920 gibt an, ob die Bitwerte einer Mehrheit des zweiten Satzes von Datenspuren (z. B. L4-L7) übergehen müssen oder nicht. Bei einem Beispiel kann M1 auf 1 gesetzt werden, falls Bitwerte einer Mehrheit des zweiten Satzes von Datenspuren (z. B. L4-L7) übergehen müssen, und M1 kann auf 0 gesetzt werden, falls Bitwerte von weniger als einer Mehrheit des zweiten Satzes von Datenspuren (z. B. L4-L7) übergehen müssen.
  • Die Ausgabewerte M0 und M1 können in ein UND-Gatter 930 eingespeist werden, das UND-Logik auf M0 und M1 anwendet. Falls somit sowohl M0 als auch M1 angeben, dass eine Mehrheit der Bitwerte der jeweiligen Sätze von Datenspuren in einem vorherigen Taktzyklus zu anderen Werten übergehen muss, um die ursprünglichen Daten in einem neuen Taktzyklus zu übertragen, dann produziert das UND-Gatter 930 einen DBI-Ausgabewert D0 (z. B. High-Wert von 1), um DBI zu aktivieren und zu bewirken, dass der DBI-Codierer 934 die ursprünglichen Daten in eine invertierte Version codiert, die durch die Datenspuren L0-L7 übertragen werden soll. Falls M0 und/oder M1 angeben, dass weniger als eine Mehrheit (d. h., die Hälfte oder weniger) der Bitwerte ihrer jeweiligen Sätze von Datenspuren in einem vorherigen Taktzyklus zu anderen Werten übergehen müssen, um die ursprünglichen Daten in einem neuen Taktzyklus zu übertragen, dann produziert das UND-Gatter 930 einen DBI-Ausgabewert D0 (z. B. niedriger Wert von 0), um DBI zu deaktivieren und zu bewirken, dass der DBI-Codierer 934 die ursprünglichen Daten (d. h., nichtinvertiert) codiert, die durch die Datenspuren L0-L7 übertragen werden sollen.
  • Wie oben beschrieben, kann DBI aktiviert werden, wenn sowohl M0 als auch M1 angeben, dass eine Mehrheit der jeweiligen Sätze von Datenspuren Übergänge von einem vorherigen Taktzyklus erfordert, um die ursprünglichen Daten in dem neuen Taktzyklus zu übertragen. Bei einer oben beschriebenen Implementierung, falls sowohl M0 als auch M1 1 sind, kann DBI aktiviert werden. Dadurch wird die Umschaltmöglichkeit auf 6 Spuren abgedeckt. Die Wahrscheinlichkeit, dass 6 Spuren, die Schalten erfordern, auch bewirken, dass DBI aktiviert wird, kann reduziert werden, wenn M0 und M1 beide nur aktiviert werden können, wenn 3 von 4 Spuren in den jeweiligen Mehrheitsvotiereingaben schalten. Bei randomisiertem Datenverkehr ist es wahrscheinlicher, dass 3 von 4 Spuren ein Umschalten anstelle eines konzentrierten Satzes von Spurwechseln erfordern (z. B. 4 und 2 oder 2 und 4). Somit treten für zufällige Bits oder verwürfelten Verkehr 3 von 4 erforderlichen Übergängen für jede Teilmenge wahrscheinlicher auf und bewirken somit, dass DBI aktiviert wird. Obwohl diese mehrheitsvotierbasierte Berechnung ungefähr ist, begrenzt sie den Gesamtspurwechsel basierend auf der Auswahl von Spuren pro Mehrheitsvotum. Dies gibt dem Konstrukteur einen Kompromiss zwischen maximal erlaubtem Schalten und Latenz.
  • Unter Zuwendung zu 10 veranschaulicht ein beispielhaftes Schaltbild 1000 weitere Einzelheiten der Mehrheitsvotierlogik, wie etwa die Mehrheitsvotierlogik 910 und 920. Mehrheitsvotierlogik verwendet einfache UND/ODER-Logik-Gatter aus einer ausgewählten Anzahl von Eingaben, um eine Ausgabe zu erzeugen, die angibt, ob eine Mehrheit der Eingaben 1s war oder nicht. Bei diesem Beispiel weist das Schaltbild 1000 vier Übergangseingabewerte T0-T3, vier UND-Gatter 1002, 1004, 1006 und 1008 und ein ODER-Gatter 1010 auf. Jedes UND-Gatter weist eine unterschiedliche Kombination von drei Eingaben auf, die aus Übergangseingabewerten T0-T3 ausgewählt sind. Jede Kombination kann eine andere Mehrheit von Übergangseingabewerten repräsentieren. Dementsprechend kann jede Kombination eine andere Mehrheit von Datenspuren repräsentieren, die Bitwerte aufweisen, die von einem vorherigen Taktzyklus übergehen müssen. Zum Beispiel sind T0, T1 und T2 Eingaben in das UND-Gatter 1002. Falls sowohl T0, T1 als auch T2 angeben, dass ein jeweiliger Bitwert einer Datenspur zu einem anderen Bitwert übergehen muss, dann gibt das UND-Gatter 1002 einen Wert A0 aus, der angibt, dass eine Mehrheit von Datenspuren, die Übergangseingabewerten T0, T1 und T2 entsprechen, Bitwerte aufweisen, die übergehen müssen. Gleichermaßen sind T0, T1 und T3 Eingaben in das UND-Gatter 1004, wobei die Ausgaben A1; T0, T2 und T3 Eingaben in das UND-Gatter 1006 sind, das einen Wert A2 ausgibt; und T1, T2 und T3 Eingaben in das UND-Gatter 1008 sind, das einen Wert A3 ausgibt. Die Ausgabewerte A0-A4 werden in das ODER-Gatter 1010 eingespeist, um zu bestimmen, ob mindestens eine Kombination von Übergangseingabewerten angibt, dass eine Mehrheit von Datenspuren, die Übergangseingabewerten T0-T3 entsprechen, Bitwerte aufweisen, die übergehen müssen, um die ursprünglichen Daten zu übertragen. Ein Ausgabewert M0 gibt an, ob DBI aktiviert oder deaktiviert ist.
  • Eine andere Mehrheitsvotierlogik (z. B. 920) mit vier Übergangseingabewerten kann auf die gleiche oder ähnliche Weise wie das Schaltbild 1000 implementiert werden. Eine größere Anzahl von Übergangswerteingaben kann in einer einzigen Mehrheitsvotierschaltung verwendet werden, könnte aber zusätzliche UND-Gatter erfordern, um die anderen möglichen Kombinationen aufzunehmen, die zu einer Mehrheit führen.
  • Die 11-13B zeigen vereinfachte Flussdiagramme, die beispielhafte Techniken veranschaulichen, die mit einem System zum Durchführen einer ungefähren mehrheitsvotierbasierten DBI-Technik für latenzempfindliche Anwendungen assoziiert sind. In mindestens einer Ausführungsform entsprechen eine oder mehrere Operationen Aktivitäten der 11-13B. Eine Mehrchipgehäusevorrichtung (z. B. 500, 800), die einen Prozessor (z. B. 525, 540) und eine Senderschaltungsanordnung (z. B. 830, 840) oder einen Teil davon enthält, kann die Durchführung von mindestens einigen der einen oder mehreren Operationen nutzen, durchführen oder bewirken. In mindestens einigen Ausführungsformen können die Übergangskennungslogik (z. B. 831, 841), die ungefähre DBI-Logik (z. B. 832, 842) und/oder der DBI-Codierer (z. B. 834, 844) oder ein Teil davon die Durchführung mindestens einiger der einen oder mehreren Operationen nutzen, durchführen oder bewirken. Sender können Hardware, Firmware, Software oder eine beliebige geeignete Kombination davon zum Durchführen mindestens einiger der einen oder mehreren der Operationen aufweisen.
  • 11 zeigt ein Flussdiagramm 1100, das eine allgemeine Technik zum Durchführen einer ungefähren mehrheitsvotierbasierten DBI-Technik in einem System mit einer Mehrchipgehäuseverbindung (MCPL), wie hier zuvor beschrieben, veranschaulicht. Bei 1102 können ursprüngliche Daten zur Übertragung von einer ersten Vorrichtung zu einer zweiten Vorrichtung über mehrere Datenspuren in einer MCPL, die die erste Vorrichtung mit der zweiten Vorrichtung verbindet, erzeugt, empfangen oder anderweitig erhalten werden. Die ursprünglichen Daten können mindestens zwei Sätze von mehreren Bits (z. B. erste Bits und zweite Bits) aufweisen.
  • Bei 1104 wird bestimmt, ob ein erstes Kriterium, das mit den ersten Bits der ursprünglichen Daten und ersten Spuren der mehreren Spuren assoziiert ist, erfüllt ist, wobei die ersten Bits jeweils über die ersten Spuren an die zweite Vorrichtung zu übertragen sind. Bei 1106 wird bestimmt, ob ein zweites Kriterium, das mit den zweiten Bits der ursprünglichen Daten und zweiten Spuren der mehreren Spuren assoziiert ist, erfüllt ist, wobei die zweiten Bits jeweils über die zweiten Spuren an die zweite Vorrichtung zu übertragen sind.
  • Bei 1108 wird bestimmt, ob sowohl das erste Kriterium als auch das zweite Kriterium erfüllt sind. Falls entweder das erste Kriterium oder das zweite Kriterium nicht erfüllt ist oder falls sowohl das erste Kriterium als auch das zweite Kriterium nicht erfüllt sind, dann werden bei 1110 die ursprünglichen Daten codiert, um über die mehreren Spuren übertragen zu werden. Dementsprechend sollen die Datenspuren jeweils die Bitwerte der ursprünglichen Daten während des neuen Taktzyklus übertragen. In wenigstens manchen Ausführungsformen werden nur vorherige Bitwerte in den Datenspuren, die sich von den Bitwerten der ursprünglichen zu übertragenden Daten unterscheiden, umgewandelt (z. B. geändert, invertiert usw.). Die vorherigen Bitwerte in den Datenspuren, die gleich den Bitwerten der ursprünglichen zu übertragenden Daten sind, können gleich bleiben. Bei 1112 kann ein Invertierungsindikator bei Bedarf auf einer Datenbusinvertierungsspur deaktiviert werden. Bei einem Beispiel kann der Invertierungsindikator deaktiviert werden, indem ein O-Wert codiert wird, der in der Datenbusinvertierungsspur zu übertragen ist, um der Empfangsvorrichtung anzuzeigen, dass die Daten, die auf den mehreren Datenspuren übertragen werden, nicht invertiert sind.
  • Falls erneut unter Bezugnahme auf 1108 bestimmt wird, dass sowohl das erste Kriterium als auch das zweite Kriterium erfüllt sind, dann wird bei 1114 die DBI aktiviert und werden die ursprünglichen Daten in eine invertierte Version codiert, die über die mehreren Spuren übertragen werden soll. Dementsprechend sollen die Datenspuren die Bitwerte der invertierten Version der ursprünglichen Daten jeweils während des neuen Taktzyklus übertragen. In wenigstens manchen Ausführungsformen werden nur vorherige Bitwerte in den Datenspuren, die die gleichen wie die Bitwerte der ursprünglichen zu übertragenden Daten sind, umgewandelt (z. B. geändert, invertiert usw.). Die vorherigen Bitwerte in den Datenspuren, die sich von den Bitwerten der ursprünglichen zu übertragenden Daten unterscheiden, können gleich bleiben. Bei 1116 wird ein Invertierungsindikator bei Bedarf auf einer Datenbusinvertierungsspur aktiviert. Bei einem Beispiel kann der Invertierungsindikator durch Codieren eines 1-Werts, der in der Datenbusinvertierungsspur zu übertragen ist, aktiviert werden, um der Empfangsvorrichtung anzuzeigen, dass die Daten, die auf den mehreren Datenspuren übertragen werden, invertiert sind, und dementsprechend müssen die Daten, die übertragen werden, erneut invertiert werden, um die ursprünglichen Daten zu erhalten.
  • Die 12A und 12B zeigen vereinfachte Flussdiagramme, die beispielhafte Operationen veranschaulichen, die mit dem Bestimmen assoziiert sind, ob ein erstes Kriterium oder ein zweites Kriterium erfüllt ist (z. B. 1102, 1104 in 11), in einer Ausführungsform einer ungefähren mehrheitsvotierbasierten DBI-Technik. 12A zeigt ein vereinfachtes Flussdiagramm 1200A, das eine oder mehrere Operationen zum Bestimmen, ob ein erstes Kriterium erfüllt ist, in einer Ausführungsform einer ungefähren mehrheitsvotierbasierten DBI-Technik veranschaulicht.
  • Bei 1202 werden erste Übergangseingabewerte für einen ersten Satz von Spuren (ersten Spuren) mehrerer Spuren erzeugt. Für jede Spur des ersten Satzes von Spuren wird ein Übergangseingabewert erzeugt, der angibt, ob die Spur einen Bitwert aufweist, der mit einem vorherigen Taktzyklus assoziiert ist, der zu einem Bitwert eines Bits in dem ersten Satz von Bits der ursprünglichen Daten, die in einem neuen Taktzyklus übertragen werden sollen, übergehen soll.
  • Bei 1204 wird Mehrheitsvotierlogik auf die ersten Übergangseingabewerte angewendet, die für die ersten Spuren erzeugt werden. Bei 1206 bestimmt die Mehrheitsvotierlogik, ob die ersten Übergangseingabewerte angeben, dass eine Mehrheit der ersten Spuren Bitwerte von Daten aufweist, die während des vorherigen Taktzyklus übertragen werden, die übergehen müssen, basierend auf wenigstens einigen der Bits des ersten Satzes von Bits in den ursprünglichen Daten, die während des neuen Taktzyklus übertragen werden sollen. Falls bestimmt wird, dass eine Mehrheit der ersten Spuren Bitwerte aufweist, die übergehen müssen, dann ist das erste Kriterium erfüllt, und bei 1208 kann ein erster Indikator gesetzt werden, um anzugeben, dass das erste Kriterium erfüllt ist. Falls bestimmt wird, dass eine Mehrheit der ersten Spuren keine Bitwerte aufweist, die übergehen müssen, dann ist das erste Kriterium nicht erfüllt, und bei 1210 kann der erste Indikator gesetzt werden, um anzugeben, dass das erste Kriterium nicht erfüllt ist.
  • 12B zeigt ein vereinfachtes Flussdiagramm 1200 B, das eine mögliche Technik zum Bestimmen, ob ein zweites Kriterium erfüllt ist, in einer Ausführungsform einer ungefähren mehrheitsvotierbasierten DBI-Technik veranschaulicht. Bei 1222 werden zweite Übergangseingabewerte für einen zweiten Satz von Spuren (zweiten Spuren) mehrerer Spuren erzeugt. Für jede Spur des zweiten Satzes von Spuren wird ein Übergangseingabewert erzeugt, der angibt, ob die Spur einen Bitwert aufweist, der mit einem vorherigen Taktzyklus assoziiert ist, der zu einem Bitwert eines Bits in dem zweiten Satz von Bits der ursprünglichen Daten überzugehen, die in einem neuen Taktzyklus übertragen werden sollen.
  • Bei 1224 wird Mehrheitsvotierlogik auf die zweiten Übergangseingabewerte angewendet, die für die zweiten Spuren erzeugt werden. Bei 1226 bestimmt die Mehrheitsvotierlogik, ob die zweiten Übergangseingabewerte angeben, dass eine Mehrheit der zweiten Spuren Bitwerte von Daten aufweist, die während des vorherigen Taktzyklus übertragen werden, die übergehen müssen, basierend auf wenigstens einigen der Bits des zweiten Satzes von Bits in den ursprünglichen Daten, die während des neuen Taktzyklus übertragen werden sollen. Falls bestimmt wird, dass eine Mehrheit der zweiten Spuren Bitwerte aufweist, die übergehen müssen, dann ist das zweite Kriterium erfüllt, und bei 1228 kann ein zweiter Indikator gesetzt werden, um anzugeben, dass das zweite Kriterium erfüllt ist. Falls bestimmt wird, dass ein Großteil der zweiten Spuren keine Bitwerte aufweist, die übergehen müssen, dann ist das zweite Kriterium nicht erfüllt, und bei 1230 kann der zweite Indikator gesetzt werden, um anzugeben, dass das zweite Kriterium nicht erfüllt ist.
  • In mindestens einer Ausführungsform können der erste Indikator und der zweite Indikator bei 1108 aus 11 verwendet werden. Zum Beispiel können der erste Indikator und der zweite Indikator als Eingaben in ein UND-Gatter verwendet werden, um zu approximieren, ob eine Mehrheit von Datenspuren Bitwerte aufweist, die zu anderen Bitwerten übergehen müssen, um die ursprünglichen Daten zu übertragen. Es versteht sich, dass die Konzepte hierin skalierbar sind. Für breitere Verbindungen (z. B. größere Anzahl von Spuren in den mehreren Spuren) zum Übertragen von mehr Daten können zum Beispiel ein oder mehrere zusätzliche Sätze von Spuren in den mehreren Spuren bereitgestellt werden und können zum Übertragen der größeren Daten verwendet werden. Bei solchen Implementierungen können die gleichen Berechnungen durchgeführt werden, um zu bestimmen, ob ein oder mehrere zusätzliche Kriterien erfüllt sind. Die resultierenden Indikatoren, die angeben, ob das eine oder die mehreren zusätzlichen Kriterien erfüllt sind, können auch als Eingaben in das UND-Gatter, das in der Approximation enthalten ist, verwendet werden.
  • Die 13A und 13B zeigen vereinfachte Flussdiagramme, die beispielhafte Operationen, die mit dem Bestimmen assoziiert sind, ob ein erstes Kriterium oder ein zweites Kriterium erfüllt ist (z. B. 1102, 1104 in 11), in einer anderen Ausführungsform einer ungefähren mehrheitsvotierbasierten DBI-Technik veranschaulichen. 13A zeigt ein vereinfachtes Flussdiagramm 1300A, das eine oder mehrere Operationen zum Bestimmen, ob ein erstes Kriterium erfüllt ist, in einer anderen Ausführungsform einer ungefähren mehrheitsvotierbasierten OBI-Technik veranschaulicht.
  • Bei 1302 wird Mehrheitsvotierlogik auf einen ersten Satz von Bits (ersten Bits) mehrerer Bits ursprünglicher Daten angewendet, die in einem neuen Taktzyklus zu übertragen sind. Bei 1304 bestimmt die Mehrheitsvotierlogik, ob eine Mehrheit der ersten Bits einen bestimmten Wert (oder Pegel), wie etwa binäre 1 oder binäre 0, aufweist. Falls bestimmt wird, dass eine Mehrheit der ersten Bits den bestimmten Wert aufweist, dann ist das erste Kriterium erfüllt, und bei 1306 kann ein erster Indikator gesetzt werden, um anzugeben, dass das erste Kriterium erfüllt ist. Falls bestimmt wird, dass eine Mehrheit der ersten Bits den bestimmten Wert nicht aufweist, dann ist das erste Kriterium nicht erfüllt, und bei 1308 kann der erste Indikator gesetzt werden, um anzugeben, dass das erste Kriterium nicht erfüllt ist.
  • 13B zeigt ein vereinfachtes Flussdiagramm 1300B, das eine oder mehrere Operationen zum Bestimmen, ob ein zweites Kriterium erfüllt ist, in der anderen Ausführungsform einer ungefähren mehrheitsvotierbasierten DBI-Technik veranschaulicht. Bei 1322 wird Mehrheitsvotierlogik auf einen zweiten Satz von Bits (zweiten Bits) mehrerer Bits ursprünglicher Daten angewendet, die in einem neuen Taktzyklus zu übertragen sind. Bei 1324 bestimmt die Mehrheitsvotierlogik, ob eine Mehrheit der zweiten Bits einen bestimmten Wert (oder Pegel), wie etwa binäre 1 oder binäre 0, aufweist. Falls bestimmt wird, dass eine Mehrheit der zweiten Bits den bestimmten Wert aufweist, dann ist das zweite Kriterium erfüllt, und bei 1326 kann ein zweiter Indikator gesetzt werden, um anzugeben, dass das zweite Kriterium erfüllt ist. Falls bestimmt wird, dass eine Mehrheit der zweiten Bits den bestimmten Wert nicht aufweist, dann ist das zweite Kriterium nicht erfüllt, und bei 1328 kann der zweite Indikator gesetzt werden, um anzugeben, dass das zweite Kriterium nicht erfüllt ist.
  • In mindestens einer Ausführungsform können der erste Indikator und der zweite Indikator bei 1108 aus 11 verwendet werden. Zum Beispiel können der erste Indikator und der zweite Indikator als Eingaben in ein UND-Gatter verwendet werden, um zu approximieren, ob eine Mehrheit von Bits der ursprünglichen Daten einen bestimmten Wert (oder Pegel) aufweist. Es versteht sich, dass die Konzepte hierin skalierbar sind. Für breitere Verbindungen (z. B. größere Anzahl von Spuren in den mehreren Spuren) zum Übertragen von mehr Daten können zum Beispiel ein oder mehrere zusätzliche Sätze von Spuren in den mehreren Spuren bereitgestellt werden und können zum Übertragen der größeren Daten verwendet werden. Bei solchen Implementierungen können die gleichen Berechnungen durchgeführt werden, um zu bestimmen, ob ein oder mehrere zusätzliche Kriterien erfüllt sind. Die resultierenden Indikatoren, die angeben, ob das eine oder die mehreren zusätzlichen Kriterien erfüllt sind, können auch als Eingaben in das UND-Gatter, das in der Approximation enthalten ist, verwendet werden.
  • 14 ist ein Balkengraph 1400, der Schaltstatistiken eines beispielhaften Systems veranschaulicht, das Zufallsdaten übertragen hat, ohne Datenbusinversion (DBI) zu verwenden. In diesem Beispielszenario ohne DBI ist das Umschaltmittel gleich 4 und die Standardabweichung ist gleich 1,4145. Ohne DBI erfordern eine signifikante Anzahl von Übertragungen Bitübergänge in mehr als vier Spuren. Datenübertragungen, die Bitübergänge in mehr als der Hälfte der gesamten Spuren einer Verbindung (z. B. 5-8 Spuren in 14) erfordern, können eine große Menge an gleichzeitigem Schaltausgangs(SSO)-rauschen produzieren. Dementsprechend veranschaulicht die Verteilung von Datenübertragungen über Spuren, wie in 14 gezeigt, dass Systeme ohne DBI eine signifikante Menge an SSO-Rauschen erfahren.
  • 15 ist ein Balkengraph 1500, der eine Schaltstatistik eines beispielhaften Systems veranschaulicht, das Zufallsdaten unter Verwendung traditioneller Wechselstrom-DBI (AC-DBI) übertragen hat. In diesem Beispielszenario mit vollem AC-DBI ist das Schaltmittel gleich 3,2696 und ist die Standardabweichung gleich 0,85807. Wie in dem Balkendiagramm 1500 gezeigt, umfasst die Verwendung traditioneller DBI Bitübergänge an vier Spuren mit einer genauen Zählung. Dementsprechend veranschaulicht die Verteilung von Datenübertragungen über Spuren, wie in 15 gezeigt, dass Systeme mit traditioneller DBI eine signifikante Menge an SSO-Rauschen verhindern können. Mit traditioneller DBI können jedoch Volladdierer, die zum Durchführen einer genauen Zählung zum Umfassen von Bitübergängen an vier Spuren verwendet werden, Latenz einführen, die in latenzempfindlichen Anwendungen und anderen inakzeptabel sein kann.
  • 16 ist ein Balkengraph 1600, der Umschaltstatistiken eines beispielhaften Systems veranschaulicht, das Zufallsdaten unter Verwendung einer ungefähren mehrheitsvotierbasierten Datenbusinversionstechnik übertragen hat. Diese mehrheitsvotierbasierte DBI weist ein Maximum von 6 von 8 Spuren auf, die umschalten, jedoch mit viel geringerer Wahrscheinlichkeit als ein System ohne DBI (z. B. in 4). In der höchsten Anzahl von Spuren (z. B. die Spuren 7 und 8 in diesem Szenario) findet kein Umschalten statt. Obwohl mehr Umschalten auf 5 Spuren durchgeführt wird als wenn traditionelle DBI verwendet wird, kann der Geschwindigkeits- und Leistungs- und Latenzkompromiss vorteilhaft und sogar kritisch für latenzempfindliche Anwendungen sein.
  • 17 ist eine Tabelle 1700 von Umschaltstatistiken, die Ergebnisse verschiedener Szenarien unter Verwendung unterschiedlicher Parameter in Systemen ohne Verwendung von DBI, Systemen, die volle AC-DBI verwenden, und Systemen, die ungefähre mehrheitsvotierbasierte DBI verwenden, vergleicht. Der Einfluss wird bei Leistungslieferstatik und Geräuschsimulationen berücksichtigt, um sicherzustellen, dass die gewünschten Spezifikationen erfüllt werden. Dementsprechend können für eine beliebige Anzahl von Spuren in einem Kanal Anpassungen an der Anzahl von Gruppen vorgenommen werden, auf die Mehrheitsvotierlogik angewendet wird. Basierend auf der Anzahl an ausgewählten Gruppen kann sich die Anzahl an Spuren in jeder Gruppe ändern. Zum Beispiel könnte für eine Vorrichtung mit einer Verbindung, die 16 Spuren aufweist, eine ungefähre mehrheitsvotierbasierte DBI dazu konfiguriert sein, eine Mehrheitsvotierlogik auf 4 verschiedene Gruppen von jeweils 4 Spuren anzuwenden. Alternativ dazu könnte eine ungefähre mehrheitsvotierbasierte DBI dazu konfiguriert sein, eine Mehrheitsvotierlogik auf 2 verschiedene Gruppen von jeweils 8 Spuren anzuwenden. Bei der Konfiguration mit 2 Gruppen von jeweils 8 Spuren ist das Umschaltmittel für mehrheitsvotierbasierte DBI (7,0064) näher an dem Umschaltmittel für traditionelle DBI (d. h., 6,8225) als unter Verwendung von 4 Gruppen von jeweils 4 Spuren. Dementsprechend kann das Verwenden von 2 Gruppen von jeweils 8 Spuren mehr SSO-Rauschen als die andere Option reduzieren.
  • Es wird angemerkt, dass die oben beschriebenen Vorrichtungen, Verfahren und Systeme in einer beliebigen elektronischen Vorrichtung oder einem beliebigen elektronischen System, wie oben erwähnt, implementiert werden können. Als spezifische Veranschaulichungen stellen die folgenden Figuren beispielhafte Systeme zum Nutzen der hier beschriebenen Ausführungsformen bereit. Da die nachfolgenden Systeme ausführlicher beschrieben werden, wird eine Anzahl unterschiedlicher Zwischenverbindungen offenbart, beschrieben und aus der oben stehenden Erläuterung wieder aufgegriffen. Und wie leicht einsehbar ist, können die oben beschriebenen Fortschritte auf beliebige jener Zwischenverbindungen, Strukturen oder Architekturen angewendet werden. Beispielsweise können erste und zweite Vorrichtungen (oder Dies) (z. B. 505, 510, 605, 610, 805, 810) implementiert werden, die mit Funktionalität ausgestattet sind, um eine ungefähre mehrheitsvotierbasierte DBI-Technik, wie in den obigen Beispielen erläutert, in einer beliebigen einer Vielzahl von Rechenarchitekturen (z. B. unter Verwendung einer beliebigen einer Vielzahl von verschiedenen Zwischenverbindungen oder Strukturen) zu implementieren. Beispielsweise können die Vorrichtungen innerhalb eines Personal-Computer-Systems (z. B. implementiert in einer Laptop-, Desktop-, Mobil-, Smartphone-, loT-Vorrichtung (Internet of Things), einem Smartgerät, einer Spielkonsole, einer Medienkonsole usw.) kommunizieren. In einem anderen Beispiel können die Vorrichtungen unter anderen Beispielen innerhalb eines Server-Rechensystems (z. B. einem Rack-Server, Blade-Server, Turm-Server, einer Rack-Scale-Serverarchitektur oder einer anderen nicht aggregierten Serverarchitektur) kommunizieren.
  • Unter Bezugnahme auf 18 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 1800 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, einen System-on-Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 1800 weist in einer Ausführungsform mindestens zwei Kerne-Kern 1801 und 1802 auf, die asymmetrische Kerne oder symmetrische Kerne umfassen können (die veranschaulichte Ausführungsform). Der Prozessor 1800 kann jedoch eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform betrifft ein Verarbeitungselement Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten betrifft ein Verarbeitungselement in einer Ausführungsform beliebige Hardware, die dazu in der Lage ist, unabhängig mit Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder einem anderen Code, assoziiert zu sein. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente, wie etwa Kerne oder Hardware-Threads, aufweist.
  • Ein Kern betrifft oft Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen betrifft ein Hardware-Thread typischerweise jede Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen gemeinsam nutzen. Wie ersichtlich ist, überlappt die Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere einem Architekturzustand gewidmet sind. Dennoch werden ein Kern und ein Hardware-Thread von einem Betriebssystem häufig als individuelle Logikprozessoren angesehen, wobei das Betriebssystem dazu in der Lage ist, Operationen auf jedem Logikprozessor individuell zu planen.
  • Der physikalische Prozessor 1800, wie in 18 veranschaulicht, weist zwei Kerne-Kern 1801 und 1802 auf. Hier werden die Kerne 1801 und 1802 als symmetrische Kerne betrachtet, d. h., Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder Logik. In einer anderen Ausführungsform weist der Kern 1801 einen Außer-Reihenfolge-Prozessorkern auf, während der Kern 1802 einen In-Reihenfolge-Prozessorkern aufweist. Die Kerne 1801 und 1802 können jedoch individuell aus einer beliebigen Art von Kern ausgewählt werden, wie etwa einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der dazu ausgelegt ist, eine native Befehlssatzarchitektur (ISA) auszuführen, einem Kern, der dazu ausgelegt ist, eine übersetzte Befehlssatzarchitektur (ISA) auszuführen, einem gemeinsam entworfenen Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung (d. h., asymmetrische Kerne) kann eine Form der Übersetzung, wie zum Beispiel eine binäre Übersetzung, verwendet werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Noch um die Erläuterung weiter zu bedienen, werden die in dem Kern 1801 veranschaulichten Funktionseinheiten unten ausführlicher beschrieben, da die Einheiten in dem Kern 1802 in der dargestellten Ausführungsform auf eine ähnliche Weise arbeiten.
  • Wie dargestellt, weist der Kern 1801 zwei Hardware-Threads 1801a und 1801b auf, die auch als Hardware-Thread-Schlitze 1801a und 1801b bezeichnet werden können. Daher betrachten Softwareentitäten, wie etwa ein Betriebssystem, in einer Ausführungsform potenziell den Prozessor 1800 als vier separate Prozessoren, d. h., vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie oben angeführt, ist ein erster Thread mit Architekturzustandsregistern 1801a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 1801b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 1802a assoziiert sein und ein vierter Thread kann mit Architekturzustandsregistern 1802b assoziiert sein. Hier kann jedes der Architekturzustandsregister (1801a, 1801b, 1802a und 1802b) als Verarbeitungselemente, logische Prozessoren, Thread-Schlitze oder Thread-Einheiten bezeichnet werden, wie oben beschrieben. Wie veranschaulicht, werden Architekturzustandsregister 1801a derart in Architekturzustandsregistern 1801b repliziert, dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 1801a und den logischen Prozessor 1801b gespeichert werden können. In dem Kern 1801 können auch andere kleinere Ressourcen, wie Befehlszeiger und Umbenennungslogik in dem Zuordnungs- und Umbenennungsblock 1830 für die Threads 1801a und 1801b repliziert werden. Manche Ressourcen, wie Umordnungspuffer in der Umordnungs/Rückzugseinheit 1835, I-TLB 1820, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie etwa universelle interne Register, Seitentabellenbasisregister, Low-Level-Daten-Cache und Daten-TLB 1815, Ausführungseinheit(en) 1840 und Teile der Außer-Reihenfolge-Einheit 1835 werden potenziell vollständig gemeinsam genutzt.
  • Der Prozessor 1800 weist häufig andere Ressourcen auf, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder durch/für Verarbeitungselemente dediziert werden können. In 18 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten aufweisen oder weglassen kann, sowie andere nicht abgebildete bekannte Funktionseinheiten, Logik oder Firmware aufweisen kann. Wie veranschaulicht, umfasst der Kern 1801 einen vereinfachten, repräsentativen Out-Of-Order-Prozessorkern (OOO-Prozessorkern). Ein In-Order-Prozessor kann jedoch in unterschiedlichen Ausführungsformen verwendet werden. Der OOO-Kern weist einen Verzweigungszielpuffer 1820 zum Vorhersagen von Verzweigungen, die ausgeführt/genommen werden sollen, und einen Anweisungsübersetzungspuffer (I-TLB) 1820 zum Speichern von Adressübersetzungseinträgen für Anweisungen auf.
  • Der Kern 1801 weist ferner ein Decodierungsmodul 1825 auf, das mit der Abrufeinheit (z. B. BTB 1820) gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik weist in einer Ausführungsform individuelle Sequenzierer auf, die jeweils mit Thread-Schlitzen 1801a, 1801b assoziiert sind. Üblicherweise ist der Kern 1801 mit einer ersten ISA assoziiert, die Anweisungen definiert/spezifiziert, die auf dem Prozessor 1800 ausführbar sind. Oft umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (als ein Opcode bezeichnet), der auf eine auszuführende Anweisung oder Operation verweist/diese spezifiziert. Die Decodierungslogik 1825 weist Schaltungen auf, die diese Anweisungen anhand ihrer Opcodes erkennt und die decodierten Anweisungen in der Pipeline zur Verarbeitung, wie von der ersten ISA definiert, weitergibt. Wie unten ausführlicher erläutert wird, weisen die Decodierer 1825 in einer Ausführungsform zum Beispiel Logik auf, die dazu ausgelegt oder angepasst ist, spezifische Anweisungen, wie etwa transaktionale Anweisungen, zu erkennen. Als ein Ergebnis der Erkennung durch die Decodierer 1825 ergreift die Architektur oder der Kern 1801 spezifische, vordefinierte Handlungen, um Aufgaben durchzuführen, die mit der geeigneten Anweisung assoziiert sind. Es ist wichtig zu beachten, dass jede der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf eine einzelne oder mehrere Anweisungen ausgeführt werden können; einige davon können neue oder alte Anweisungen sein. Es ist zu beachten, dass die Decodierer 1826 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ dazu erkennen die Decoder 1826 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine unterschiedliche ISA).
  • In einem Beispiel weist der Zuordnungs- und Umbenennerblock 1830 einen Zuordner zum Reservieren von Ressourcen, wie Registerdateien, zum Speichern von Befehlsverarbeitungsergebnissen auf. Die Threads 1801a und 1801b sind jedoch potenziell zur Ausführung außerhalb der Reihenfolge in der Lage, wobei der Zuordnungs- und Umbenennerblock 1830 auch andere Ressourcen reserviert, wie etwa Umordnungspuffer, um Befehlsergebnisse zu verfolgen. Die Umbenennungseinheit 1830 kann auch einen Registerumbenenner zum Umbenennen von Programm-/Befehlsreferenzregistern in andere Register innerhalb des Prozessors 1800 umfassen. Die Neuordnungs-/Rückzugseinheit 1835 weist Komponenten, wie etwa die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, auf, um die Ausführung außerhalb der Reihenfolge und die spätere In-Reihenfolge-Zurückziehung von Anweisungen, die außerhalb der Reihenfolge ausgeführt werden, zu unterstützen.
  • Der Scheduler- und Ausführungseinheit(en)-Block 1840 weist in einer Ausführungsform eine Schedulereinheit zum Planen von Anweisungen/Operationen an Ausführungseinheiten auf. Zum Beispiel wird eine Gleitkommaanweisung auf einem Port einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls enthalten, um Informationsanweisungs-Verarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Lower-Level-Daten-Cache und der Datenübersetzungspuffer (D-TLB) 1850 sind mit der/den Ausführungseinheit(en) 1840 gekoppelt. Der Daten-Cache soll Elemente, die kürzlich verwendet wurden/auf welchen kürzlich Vorgänge vorgenommen wurden, wie Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB soll neueste Virtuell/linear-zu-physikalisch-Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um den physikalischen Speicher in mehrere virtuelle Seiten zu teilen.
  • Hier teilen sich die Kerne 1801 und 1802 Zugriff auf einen Higher-Level- oder Further-Out-Cache, wie etwa einen Cache zweiter Ebene, der mit der On-Chip-Schnittstelle 1810 assoziiert ist. Es ist zu beachten, dass sich Higher-Level oder Further-Out auf Cache-Ebenen bezieht, die von der/den Ausführungseinheit(en) zunehmen oder weiter davon entfernt sind. In einer Ausführungsform ist der Higher-Level-Cache ein Last-Level-Daten-Cache-Last-Cache in der Speicherhierarchie auf dem Prozessor 1800 - wie ein Daten-Cache der zweiten oder dritten Ebene. Der Higher-Level-Cache ist jedoch nicht so beschränkt, da er einem Anweisungscache zugeordnet sein oder einen solchen aufweisen kann. Ein Trace-Cache - ein Typ von Anweisungscache - kann stattdessen nach dem Decodierer 1825 gekoppelt sein, um kürzlich decodierte Traces zu speichern. Hier verweist eine Anweisung potenziell auf eine Makro-Anweisung (d. h., eine allgemeine Anweisung, die von den Decodierern erkannt wird), die in eine Anzahl von Mikroanweisungen (Mikrooperationen) decodiert werden kann.
  • Bei der dargestellten Konfiguration weist der Prozessor 1800 auch ein On-Chip-Schnittstellenmodul 1810 auf. Historisch wurde eine Speichersteuerung, die unten ausführlicher beschrieben wird, in einem Rechensystem außerhalb des Prozessors 1800 aufgenommen. In diesem Szenario soll die On-Chip-Schnittstelle 1810 mit Vorrichtungen außerhalb des Prozessors 1800 kommunizieren, wie etwa dem Systemspeicher 1875, einem Chipsatz (der häufig einen Speicher-Controller-Hub zum Verbinden mit dem Speicher 1875 und einen E/A-Controller-Hub zum Verbinden von Peripherievorrichtungen aufweist), einem Speicher-Controller-Hub, einer Nordbrücke oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 1805 eine beliebige bekannte Zwischenverbindung aufweisen, wie etwa einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus und einen GTL-Bus.
  • Der Speicher 1875 kann dem Prozessor 1800 dediziert sein oder mit anderen Vorrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele für Arten von Speicher 1875 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speicherungsvorrichtungen. Es sei angemerkt, dass die Vorrichtung 1880 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, die/der mit einem Speicher-Controller-Hub gekoppelt ist, eine Datenspeicherung, die mit einem E/A-Controller-Hub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, eine Audiosteuerung, eine Netzwerksteuerung oder eine andere bekannte Vorrichtung umfassen kann.
  • Da jedoch kürzlich mehr Logik und Vorrichtungen auf einem einzigen Die integriert werden, wie etwa SOC, kann jede dieser Vorrichtungen auf dem Prozessor 1800 integriert werden. Zum Beispiel befindet sich in einer Ausführungsform ein Speicher-Controller-Hub auf dem gleichen Paket und/oder Die mit dem Prozessor 1800. Hier weist ein Teil des Kerns (ein On-Core-Teil) 1810 eine oder mehrere Steuerung(en) zum Verbinden mit anderen Vorrichtungen, wie etwa dem Speicher 1875 oder einer Grafikvorrichtung 1880, auf. Die Konfiguration, die eine Zwischenverbindung und Steuerungen zum Verknüpfen mit solchen Vorrichtungen umfasst, wird oft als On-Core(oder Un-Core-)-Konfiguration bezeichnet. Als ein Beispiel weist die On-Chip-Schnittstelle 1810 eine Ringverbindung für On-Chip-Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (oder Bus) 1805 für Off-Chip-Kommunikation auf. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen, wie etwa die Netzwerkschnittstelle, die Coprozessoren, der Speicher 1875, der Grafikprozessor 1880 und beliebige andere bekannte Computervorrichtungen/Schnittstelle, auf einem einzigen Die oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Stromverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1800 in der Lage, einen Compiler-, Optimierungs- und/oder Übersetzercode 1877 auszuführen, um den Anwendungscode 1876 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hier beschriebenen Vorrichtungen und Verfahren zu unterstützen oder mit diesen eine Schnittstelle zu bilden. Ein Compiler weist oft ein Programm oder einen Satz von Programmen auf, um Quelltext/-code in Zieltext/-code zu übersetzen. Üblicherweise erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchläufen, um den Programmiersprachencode auf hoher Ebene in einen Maschinen- oder Assemblersprachencode auf niedriger Ebene umzuwandeln. Allerdings können Single-Pass-Compiler immer noch zur einfachen Kompilierung verwendet werden. Ein Compiler kann jegliche bekannten Kompilierungstechniken verwenden und jegliche bekannten Kompilierungsoperationen, wie zum Beispiel lexikalische Analyse, Vorverarbeitung, Parsing, semantische Analyse, Codegenerierung, Codetransformation und Codeoptimierung, ausführen.
  • Größere Compiler weisen oft mehrere Phasen auf, aber meistens sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) ein Front-End, das heißt allgemein, wo syntaktische Verarbeitung, semantische Verarbeitung und einige Transformation/Optimierung stattfinden können, und (2) ein Back-End, das heißt allgemein, wo Analyse, Transformationen, Optimierungen und Codegenerierung stattfinden. Einige Compiler beziehen sich auf eine Mitte, die die Unschärfe der Abgrenzung zwischen einem Front-End und einem Back-End eines Compilers veranschaulicht. Als ein Ergebnis kann Bezug auf Einfügung, Zuordnung, Erzeugung oder andere Operation eines Compilers in jeglicher der zuvor erwähnten Phasen oder Durchläufe, sowie jeglichen anderen bekannten Phasen oder Durchläufen eines Compilers, stattfinden. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen, usw. in eine oder mehrere Kompilierungsphasen, wie zum Beispiel das Einfügen von Aufrufen/Operationen in einer Front-End-Phase der Kompilierung und dann Transformation der Aufrufe/Operationen in Code niedrigerer Ebene während einer Transformationsphase, ein. Es ist zu beachten, dass während dynamischer Kompilierung Compilercode oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen und den Code während der Laufzeit zur Ausführung optimieren kann. Als ein spezifisches veranschaulichendes Beispiel kann der Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich einem Compiler übersetzt ein Übersetzer, wie zum Beispiel ein binärer Übersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Deshalb kann sich die Bezugnahme auf Ausführung von Code, Anwendungscode, Programmcode oder einer anderen Softwareumgebung beziehen auf: (1) Ausführung von Compilerprogramm(en), Optimierungscodeoptimierer oder Übersetzer, entweder dynamisch oder statisch, um Programmcode zu kompilieren, Softwarestrukturen aufrechtzuerhalten, andere Operationen auszuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung von Hauptprogrammcode einschließlich Operationen/Aufrufen, wie zum Beispiel Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung von anderem Programmcode, wie zum Beispiel dem Hauptprogrammcode zugeordnete Bibliotheken, um Softwarestrukturen aufrechtzuerhalten, andere softwarebezogene Operationen auszuführen oder Code zu optimieren; oder (4) eine Kombination davon.
  • Nun unter Bezugnahme auf 19 veranschaulicht 19 ein Blockdiagramm eines anderen Systems 1900, das in einem Punkt-zu-Punkt(PtP)-Verbindungssystem angeordnet ist. Insbesondere zeigt 19 ein System, bei dem Prozessoren, Speicher und Eingabe/AusgabeVorrichtungen durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen miteinander verbunden sind. Allgemein kann das System 1900 eine oder mehrere der Vorrichtungen (oder Dies) nutzen, die mit einem ungefähren mehrheitsvotierbasierten DBI-System implementiert sind, wie hier zuvor beschrieben.
  • Wie in 19 gezeigt, weist das System 1900 Prozessoren 1970 und 1980 auf, die als Einzelkernprozessoren 1974a und 1984a oder Mehrkernprozessoren 1974a-1974b und 1984a-1984b implementiert sein können. Die Prozessoren 1970 und 1980 können jeweils einen Cache 1971 und 1981 aufweisen, der von ihrem jeweiligen Kern oder ihren jeweiligen Kernen verwendet wird. Ein (nicht gezeigter) gemeinsam genutzter Cache kann entweder in Prozessoren oder außerhalb beider Prozessoren enthalten sein, jedoch über eine P-P-Verbindung mit den Prozessoren verbunden sein, so dass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen Niedrigleistungsmodus versetzt wird.
  • Die Prozessoren 1970 und 1980 können auch jeweils integrierte Speichersteuerungslogik (MC: Integrated Memory Controller Logic) 1972 und 1982 zum Kommunizieren mit Speicherelementen 1932 und 1934 aufweisen, die Teile des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angeschlossen sind. In alternativen Ausführungsformen kann die Speichersteuerungslogik 1972 und 1982 eine diskrete Logik, getrennt von den Prozessoren 1970 und 1980 sein. Die Speicherelemente 1932 und/oder 1934 können verschiedene Daten speichern, die von den Prozessoren 1970 und 1980 beim Erreichen von hier dargelegten Operationen und Funktionalitäten verwendet werden sollen.
  • Die Prozessoren 1970 und 1980 können eine beliebige Art von Prozessor sein, wie etwa jene, die in Verbindung mit anderen Figuren erläutert sind. Die Prozessoren 1970 und 1980 können Daten über eine Punkt-zu-Punkt(PtP)-Schnittstelle 1950 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1978 bzw. 1988 austauschen. Die Prozessoren 1970 und 1980 können jeweils Daten mit einem Eingabe/Ausgabe(E/A)-Subsystem 1990 über individuelle Punkt-zu-Punkt-Schnittstellen 1952 und 1954 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1976, 1986, 1994 und 1998 austauschen. Das E/A-Subsystem 1990 kann auch Daten mit einer Hochleistungsgrafikschaltung 1938 über eine Hochleistungsgrafikschnittstelle 1939 unter Verwendung einer Schnittstellenschaltung 1992 austauschen, die eine PtP-Schnittstellenschaltung sein könnte. In einer Ausführungsform ist die Hochleistungsgrafikschaltung 1938 ein Spezialprozessor, wie etwa zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. Das E/A-Subsystem 1990 kann auch mit einer Anzeige 1933 zum Anzeigen von Daten kommunizieren, die durch einen menschlichen Benutzer sichtbar sind. In alternativen Ausführungsformen könnten beliebige oder alle der in 19 veranschaulichten PtP-Verbindungen als ein Multi-Drop-Bus anstelle einer PtP-Verbindung implementiert werden.
  • Das E/A-Subsystem 1990 kann über eine Schnittstellenschaltung 1996 mit einem Bus 1910 in Kommunikation stehen. Der Bus 1910 kann eine oder mehrere Vorrichtungen aufweisen, die über ihn kommunizieren, wie etwa eine Busbrücke 1918 und E/A-Vorrichtungen 1916. Über einen Bus 1920 kann sich die Busbrücke 1918 in Kommunikation mit anderen Vorrichtungen, wie etwa einer Benutzeroberfläche 1912 (wie etwa einer Tastatur, Maus, einem Touchscreen oder anderen Eingabevorrichtungen), Kommunikationsvorrichtungen 1926 (wie etwa Modems, Netzwerkschnittstellenvorrichtungen oder anderen Typen von Kommunikationsvorrichtungen, die durch ein Computernetzwerk 1960 kommunizieren können), Audio-E/A-Vorrichtungen 1924 und/oder einer Speichereinheit 1928 befinden. Eine Speichereinheit 1928 kann Code und Daten 1930 speichern, die durch Prozessoren 1970 und/oder 1980 ausgeführt werden können. In alternativen Ausführungsformen könnten beliebige Teile der Busarchitekturen mit einer oder mehreren PtP-Verbindungen implementiert werden.
  • Das in 19 dargestellte Computersystem ist eine schematische Veranschaulichung einer Ausführungsform eines Rechensystems, das genutzt werden kann, um verschiedene hier erläuterte Ausführungsformen zu implementieren. Es versteht sich, dass verschiedene Komponenten des in 19 dargestellten Systems in einer System-on-Chip(SoC)-Architektur oder in einer beliebigen anderen geeigneten Konfiguration kombiniert werden können, die zum Erreichen der Funktionalität und der Merkmale von hierin bereitgestellten Beispielen und Implementierungen in der Lage ist.
  • Obwohl diese Offenbarung mit Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben wurde, versteht der Fachmann zahlreiche Modifikationen und Variationen davon. Es ist beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Variationen abdecken, die in das wahre Wesen und den Schutzumfang dieser vorliegenden Offenbarung fallen.
  • Eine Gestaltung kann verschiedene Stufen durchlaufen, von Erstellung über die Simulation bis hin zur Herstellung. Daten, die eine Gestaltung darstellen, können die Gestaltung auf verschiedene Weisen repräsentieren. Zunächst kann die Hardware, was bei Simulationen sinnvoll ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Zusätzlich dazu kann bei manchen Stufen des Gestaltungsprozesses ein Schaltkreisebenenmodell mit Logik- und/oder Transistorgattern erstellt werden. Darüber hinaus erreichen die meisten Gestaltungen bei einer gewissen Stufe eine Datenebene, welche die physikalische Platzierung verschiedener Vorrichtungen in dem Hardwaremodell repräsentiert. Im Fall der Verwendung herkömmlicher Halbleiterherstellungstechniken können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung der integrierten Schaltung verwendet werden, spezifizieren. Bei einer beliebigen Repräsentation der Gestaltung können die Daten in beliebiger Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder die Gestaltung angibt oder mit sich führt, in dem Ausmaß, dass Kopieren, Puffern oder Neuübermittlung des elektrischen Signals ausgeführt wird, übermittelt wird, wird eine neue Kopie erstellt. Daher kann ein Kommunikationsanbieter oder Netzwerkbetreiber einen Artikel, wie etwa in einer Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Offenbarung umsetzen, auf einem greifbaren maschinenlesbaren Medium wenigstens temporär speichern.
  • Ein Modul, so wie es hierin verwendet wird, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Ein Modul weist beispielsweise mit einem nichtflüchtigen Medium assoziierte Hardware, wie etwa einen Mikrocontroller, zum Speichern von Code, der dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden, auf. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die insbesondere dazu konfiguriert ist, den Code, der in einem nichtflüchtigen Medium gehalten werden soll, zu erkennen und/oder auszuführen. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das den Code aufweisende nichtflüchtige Medium, das speziell dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und, wie gefolgert werden kann, kann sich der Begriff Modul (bei diesem Beispiel) in noch einer weiteren Ausführungsform auf die Kombination aus dem Mikrocontroller und dem nichtflüchtigen Medium beziehen. Modulgrenzen, die als separat dargestellt sind, variieren üblicherweise oft und überlappen einander gegebenenfalls. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination daraus teilen, während manche unabhängige Hardware, Software oder Firmware gegebenenfalls beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen. Darüber hinaus kann der Begriff Logik auch Software, Firmware oder eine beliebige Kombination von Hardware, Firmware und/oder Software umfassen.
  • Die Verwendung des Ausdrucks „zu“ oder „konfiguriert zu“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammensetzen, Herstellen, Anbieten zum Verkaufen, Importieren und/oder Gestalten einer Vorrichtung, Hardware, Logik oder eines Elements zum Durchführen einer designierten oder bestimmten Aufgabe. Bei diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht in Betrieb ist, dennoch „dazu konfiguriert“, eine designierte Aufgabe durchzuführen, wenn sie/es zum Durchführen der designierten Aufgabe gestaltet, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter „konfiguriert zum“ oder „zum“ Bereitstellen eines Freigabesignals für einen Takt umfasst nicht jedes potenzielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf irgendeine Weise gekoppelt ist, so dass während des Betriebs die Ausgabe von 1 oder 0 den Takt aktivieren soll. Es sei erneut angemerkt, dass die Verwendung des Begriffs „dazu konfiguriert“ keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements richtet, wobei in dem latenten Zustand die Vorrichtung, die Hardware und/oder das Element dazu gestaltet sind, eine spezielle Aufgabe auszuführen, wenn sich die Vorrichtung, die Hardware und/oder das Element im Betrieb befinden.
  • Ein Wert, wie hier verwendet, umfasst eine beliebige bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1en und Oen bezeichnet, was einfach binäre Logikzustände repräsentiert. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherungszelle, wie etwa ein Transistor oder eine Flash-Zelle, dazu in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch auch andere Repräsentationen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl Zehn auch als ein binärer Wert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert eine beliebige Repräsentation von Informationen, die dazu in der Lage ist, in einem Computersystem gehalten zu werden.
  • Ausführungsformen können als ein Prozess beschrieben werden, der als ein Flussdiagramm, ein Ablaufdiagramm, ein Datenflussdiagramm, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm die Operationen als einen sequenziellen Prozess beschreiben kann, können viele der Operationen parallel, gleichzeitig oder simultan durchgeführt werden. Zusätzlich kann die Reihenfolge der Operationen umgeordnet werden. Ein Prozess kann beendet werden, wenn seine Operationen abgeschlossen sind, kann aber auch zusätzliche Schritte aufweisen, die nicht in den Figuren enthalten sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einer Unterroutine, einem Unterprogramm und dergleichen entsprechen. Wenn ein Prozess einer Funktion entspricht, kann seine Beendigung einer Rückkehr der Funktion zu der Aufruffunktion und/oder der Hauptfunktion entsprechen. Zusätzlich können einige oder alle der Operationen in zwei oder mehr separaten Flussdiagrammen zu einer Ausführungsform kombiniert werden.
  • Die vorliegende Offenbarung wird unter Bezugnahme auf Flussdiagrammveranschaulichungen und/oder Blockdiagramme von Verfahren (Prozessen), Vorrichtungen (Systemen) und/oder Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammveranschaulichungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammveranschaulichungen und/oder Blockdiagrammen durch Hardware, Firmware, Software oder eine Kombination davon implementiert werden kann. In einer oder mehreren Ausführungsformen könnte jeder Block der Flussdiagrammveranschaulichungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammveranschaulichungen und/oder Blockdiagrammen in der Form von Computerprogrammanweisungen vorliegen.
  • Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeicherte Anweisungen oder Code implementiert sein, welche durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium weist einen beliebigen Mechanismus auf, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h., speichert und/oder überträgt). Beispielsweise umfasst ein nichtflüchtiges, maschinenzuggängliches Medium Direktzugriffsspeicher (RAM: Random-Access Memory), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speicherungsmedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen; akustische Speicherungsvorrichtungen; andere Formen von Speicherungsvorrichtungen zum Halten von Informationen, die von flüchtigen (propagierten) Signalen (zum Beispiel Trägerwellen, Infrarotsignalen, Digitalsignalen), usw., empfangen werden, die von den nichtflüchtigen Medien unterschieden werden müssen, die Informationen davon empfangen können.
  • Anweisungen, die zum Programmieren einer Logik verwendet werden, um Ausführungsformen der Offenbarung durchzuführen, können innerhalb eines Speichers in dem System, wie etwa DRAM, Cache, Flash-Speicher oder einer anderen Speicherung, gespeichert werden. Zudem können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Dementsprechend kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form aufweisen, unter anderem Floppy-Disketten, optische Platten, CD-ROMs (Compact Disc Read-Only Memory) und magnetooptische Platten, Nurlesespeicher (ROMs: Read-Only Memory), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM: Erasable Programmable Read-Only Memory), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM: Electrically Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Entsprechend umfasst das computerlesbare Medium einen beliebigen Typ von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Wie hier verwendet, bezieht sich der Begriff „Schaltungsanordnung“ auf Hardwarekomponenten, wie etwa eine elektronische Schaltung, eine Logikschaltung, einen Prozessor (gemeinsam genutzt, dediziert oder Gruppe) und/oder einen Speicher (gemeinsam genutzt, dediziert oder Gruppe), eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuit), eine feldprogrammierbare Vorrichtung (FPD: Field Programmable Device), (z. B. ein feldprogrammierbares Gate-Array (FPGA), eine programmierbare Logikvorrichtung (PLD: Programmable Logic Device), eine komplexe PLD (CPLD: Complex PLD), eine PLD mit hoher Kapazität (HCPLD: High-Capacity PLD), eine strukturierte ASIC oder ein programmierbares System-on-Chip (SoC)), digitale Signalprozessoren (DSPs) usw., ist Teil von diesen oder weist diese auf, die dazu konfiguriert sind, die beschriebene Funktionalität bereitzustellen. In manchen Ausführungsformen kann die Schaltungsanordnung ein oder mehrere Software- oder Firmware-Programme ausführen, um mindestens einen Teil der beschriebenen Funktionalität bereitzustellen.
  • Wie hier verwendet, kann sich der Begriff „Prozessorschaltungsanordnung“ auf eine Schaltungsanordnung beziehen, ist Teil davon oder weist diese auf, die in der Lage ist, sequenziell und automatisch eine Sequenz arithmetischer oder logischer Operationen auszuführen; digitale Daten aufzuzeichnen, zu speichern und/oder zu übertragen. Der Begriff „Prozessorschaltungsanordnung“ kann sich auf einen oder mehrere Anwendungsprozessoren, einen oder mehrere Basisbandprozessoren, eine physikalische Zentralverarbeitungseinheit (CPU: Central Processing Unit), einen Einzelkernprozessor, einen Doppelkernprozessor, einen Dreikernprozessor, einen Vierkernprozessor und/oder eine beliebige andere Vorrichtung, die in der Lage ist, computerausführbare Anweisungen auszuführen oder anderweitig zu betreiben, wie etwa Programmcode, Softwaremodule und/oder Funktionsprozesse, beziehen. Wie hier verwendet, kann sich der Begriff „Schnittstellenschaltungsanordnung“ auf eine Schaltungsanordnung beziehen, ist Teil davon oder weist diese auf, die den Austausch von Informationen zwischen zwei oder mehr Komponenten oder Vorrichtungen bereitstellt. Der Begriff „Schnittstellenschaltungsanordnung“ kann sich auf eine oder mehrere Hardwareschnittstellen (zum Beispiel Busse, Eingabe/Ausgabe(E/A)-Schnittstellen, Peripheriekomponentenschnittstellen, Netzwerkschnittstellenkarten und/oder dergleichen) beziehen. Wie hier verwendet, können sich die Begriffe „Instantiieren“, „Instantiierung“ und dergleichen auf die Erzeugung einer Instanz beziehen, und eine „Instanz“ kann sich auf ein konkretes Auftreten eines Objekts beziehen, das zum Beispiel während der Ausführung von Programmcode auftreten kann.
  • Ein Rechensystem oder eine Plattform kann verschiedene Vorrichtungen verwenden, die umfangreich mit einem Computerbus gekoppelt sind. Ein Computerbus kann verwandte Hardwarekomponenten (Draht, optische Faser usw.) und Software, einschließlich Kommunikationsprotokollen, aufweisen. Ein Peripheral Component Interconnect(PCI)-Bus oder ein PCI-Express (PCle, PCI-E) kann ein Computerbus basierend auf einer Spezifikation oder einem Schnittstellenstandard sein, der einen Mechanismus für Systemsoftware oder einen Systemtreiber bereitstellt, um verschiedene Operationen durchzuführen, die sich auf die Konfiguration einer Vorrichtung beziehen, die mit dem PCI-Bus oder dem PCIe-Bus gekoppelt ist. Vorrichtungen oder Komponenten, die mit einem Computerbus gekoppelt sind, können auch als Funktionen bezeichnet werden. PCle kann in Verbraucher-, Server- und Industrieanwendungen als eine Zwischenverbindung auf Hauptplatinenebene (zum Verbinden von an Hauptplatinen montierten Peripheriegeräten), eine passive Rückwandplatinenzwischenverbindung und als eine Erweiterungskartenschnittstelle für Zusatzplatinen arbeiten. PCIe-Vorrichtungen kommunizieren über eine logische Verbindung, die als Zwischenverbindung oder Verbindung bezeichnet wird. Eine Verbindung ist ein Punkt-zu-Punkt-Kommunikationskanal zwischen zwei PCIe-Ports, der es beiden ermöglicht, gewöhnliche PCI-Anfragen, z. B. Konfiguration, Eingabe/Ausgabe (E/A) oder Speicherlesen/-schreiben und Interrupts, zu senden und zu empfangen. Auf physikalischer Ebene kann eine Verbindung aus einer oder mehreren Spuren bestehen. Niedergeschwindigkeitsperipheriegeräte, wie etwa eine 802.11-WiFi-Karte, verwenden eine Ein-Spur(x 1)-Verbindung, während ein Grafikadapter typischerweise eine viel breitere und schnellere 16-Spur-Verbindung verwendet. Es ist anzumerken, dass sich eine „Verbindung“ auch auf Kommunikationskanäle beziehen kann, die mit einem beliebigen anderen Typ von Schnittstellenstandards assoziiert sind, die Hochgeschwindigkeitskomponenten verbinden.
  • Durch diese Patentschrift hinweg bedeutet ein Bezug auf „eine Ausführungsform“, dass ein spezielles Merkmal, eine Struktur oder Charakteristik, das/die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Dementsprechend beziehen sich die Erscheinungen der Formulierung „in einer Ausführungsform“ an verschiedenen Stellen über die gesamte Patentschrift hinweg nicht alle notwendigerweise auf die gleiche Ausführungsform. Zudem können die speziellen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen auf eine beliebige geeignete Weise kombiniert werden.
  • Wie hier verwendet, sofern nicht ausdrücklich anders angegeben, bezieht sich die Verwendung der Formulierung „mindestens eine(r/s) von“ auf eine beliebige Kombination der benannten Objekte, Elemente, Bedingungen oder Aktivitäten. Beispielsweise soll „mindestens eines von X, Y und Z“ beliebiges aus Folgendem bedeuten: 1) mindestens ein X, aber nicht Y und nicht Z; 2) mindestens ein Y, aber nicht X und nicht Z; 3) mindestens ein Z, aber nicht X und nicht Y; 4) mindestens ein X und mindestens ein Y, aber nicht Z; 5) mindestens ein X und mindestens ein Z, aber nicht Y; 6) mindestens ein Y und mindestens ein Z, aber nicht X; oder 7) mindestens ein X, mindestens ein Y und mindestens ein Z.
  • Zusätzlich sollen die Begriffe „erste“, „zweite“, „dritte“ usw., sofern nicht ausdrücklich anders angegeben, die speziellen Substantive (z. B. Element, Zustand, Modul, Aktivität, Operation, Anspruchselement usw.) unterscheiden, die sie modifizieren, sollen aber keine Art von Reihenfolge, Rang, Wichtigkeit, zeitlicher Abfolge oder Hierarchie des modifizierten Substantivs angeben. Beispielsweise sollen „erstes X“ und „zweites X“ zwei separate X-Elemente bezeichnen, die nicht notwendigerweise durch irgendeine Ordnung, einen Rang, eine Wichtigkeit, zeitliche Abfolge oder Hierarchie der beiden Elemente beschränkt sind.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische Ausführungsbeispiele gegeben, soll aber nicht erschöpfend sein oder den Schutzumfang der Ausführungsformen auf die genaue offenbarte Form beschränken. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Patentschrift und Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne statt in einem beschränkenden Sinne zu verstehen. Zudem bezieht sich die vorstehende Verwendung einer Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf andere und unterschiedliche Ausführungsformen sowie möglicherweise auf dieselbe Ausführungsform beziehen.
  • WEITERE ANMERKUNGEN UND BEISPIELE:
  • Die folgenden Beispiele gehören zu Ausführungsformen in Übereinstimmung mit dieser Patentschrift. Die Ausführungsformen des Systems, der Vorrichtung, des Verfahrens und des maschinenlesbaren Speicherungsmediums können eines oder eine Kombination der folgenden Beispiele aufweisen.
  • Beispiel A1 stellt eine Vorrichtung bereit, die eine Verbindung, die mehrere Spuren zum Verbinden der Vorrichtung mit einer Empfangsvorrichtung aufweist, wobei die mehreren Spuren erste Spuren und zweite Spuren umfassen; und eine Schaltungsanordnung, die mit der Verbindung gekoppelt ist, aufweist. Bei Beispiel A1 dient die Schaltungsanordnung zum: Empfangen von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, die in einem neuen Taktzyklus zu übertragen sind, wobei die ersten Bits jeweils über die ersten Spuren zu übertragen sind und die zweiten Bits jeweils über die zweiten Spuren zu übertragen sind; Bestimmen, ob ein erstes Kriterium erfüllt ist, das mit den ersten Bits assoziiert ist; Bestimmen, ob ein zweites Kriterium erfüllt ist, das mit den zweiten Bits assoziiert ist; und Bestimmen, ob eine invertierte Version der ursprünglichen Daten über die mehreren Spuren gesendet werden soll, basierend zumindest teilweise auf Bestimmen, ob das erste Kriterium erfüllt ist und ob das zweite Kriterium erfüllt ist.
  • Bei Beispiel A2 kann der Gegenstand des Beispiels A1 optional umfassen, dass das Bestimmen, dass das erste Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits; und das Bestimmen, dass das zweite Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  • Bei Beispiel A3 kann der Gegenstand des Beispiels A2 optional umfassen, dass die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind, und dass die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  • Bei Beispiel A4 kann der Gegenstand eines der Beispiele A2-A3 optional umfassen, dass die Schaltungsanordnung ferner ausgelegt ist zum: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die Mehrheit der jeweiligen vorherigen Bitwerte der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheidet.
  • Bei Beispiel A5 kann der Gegenstand eines der Beispiele A1-A4 optional umfassen, dass die Schaltungsanordnung ferner als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, die ursprünglichen Daten in die invertierte Version codiert, die über die mehreren Spuren übertragen werden soll.
  • Bei Beispiel A6 kann der Gegenstand des Beispiels A1 optional umfassen, dass das Bestimmen, dass das erste Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der ersten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der ersten Bits, und wobei das Bestimmen, dass das zweite Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der zweiten Bits.
  • Bei Beispiel A7 kann der Gegenstand eines der Beispiele A1 oder A6 optional umfassen, dass die Schaltungsanordnung ferner als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium nicht erfüllt wurden, die ursprünglichen Daten auf den mehreren Spuren überträgt.
  • Bei Beispiel A8 kann der Gegenstand des Beispiels A1 optional umfassen, dass die Schaltungsanordnung ferner basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist, bestimmen soll, dass das erste Kriterium erfüllt ist, und basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist, bestimmen soll, dass das zweite Kriterium erfüllt ist.
  • Bei Beispiel A9 kann der Gegenstand des Beispiels A8 optional umfassen, dass der erste Wert eine binäre 0 oder 1 ist.
  • Bei Beispiel A10 kann der Gegenstand eines der Beispiele A1-A9 optional umfassen, dass die Schaltungsanordnung ferner bestimmen soll, ob ein drittes Kriterium, das mit dritten Bits der ursprünglichen Daten assoziiert ist, erfüllt ist, und bestimmen soll, ob die invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, teilweise basierend auf dem Bestimmen, ob das dritte Kriterium erfüllt ist.
  • Bei Beispiel A11 kann der Gegenstand des Beispiels A10 optional umfassen, dass das Bestimmen, dass das dritte Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit dritter Spuren der mehreren Spuren jeweilige vorherige Bitwerte aufweisen, die übergehen müssen, basierend auf mindestens einigen dritten Bits der ursprünglichen Daten.
  • Bei Beispiel A12 kann der Gegenstand eines der Beispiele A1-A11 optional umfassen, dass eine Anzahl der ersten Spuren gleich einer Anzahl der zweiten Spuren ist.
  • Bei Beispiel A13 kann der Gegenstand eines der Beispiele A1-A12 optional umfassen, dass die Verbindung eine Mehrchipgehäuseverbindung ist, und dass die ersten Spuren und die zweiten Spuren Datenspuren sind.
  • Beispiel S1 stellt ein System bereit, das einen Prozessor, eine erste Vorrichtung, die mit dem Prozessor gekoppelt ist, und mehrere Spuren einschließlich erster Spuren und zweiter Spuren aufweist, wobei die mehreren Spuren die erste Vorrichtung mit einer zweiten Vorrichtung verbinden sollen. Bei Beispiel S1 dient die erste Vorrichtung zum: Erhalten ursprünglicher Daten, die erste Bits und zweite Bits umfassen, die in einem neuen Taktzyklus zu übertragen sind, wobei die ersten Bits jeweils über die ersten Spuren zu übertragen sind und die zweiten Bits jeweils über die zweiten Spuren zu übertragen sind; Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist; Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist; und Senden einer invertierten Version der ursprünglichen Daten über die mehreren Spuren als Reaktion auf zumindest teilweise das Bestimmen, dass das erste Kriterium erfüllt ist und dass das zweite Kriterium erfüllt ist.
  • Bei Beispiel S2 kann der Gegenstand des Beispiels S1 optional umfassen, dass das Bestimmen, dass das erste Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits, und das Bestimmen, dass das zweite Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  • Bei Beispiel S3 kann der Gegenstand des Beispiels S2 optional umfassen, dass die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind, und dass die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  • Bei Beispiel S4 kann der Gegenstand eines der Beispiele S2-S3 optional umfassen, dass die erste Vorrichtung ferner ausgelegt ist zum: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die Mehrheit der jeweiligen vorherigen Bitwerte der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheidet.
  • Bei Beispiel S5 kann der Gegenstand eines der Beispiele S1-S4 optional umfassen, dass die erste Vorrichtung ferner als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, die ursprünglichen Daten in die invertierte Version codiert, die über die mehreren Spuren übertragen werden soll.
  • Bei Beispiel S6 kann der Gegenstand des Beispiels S1 optional umfassen, dass das Bestimmen, dass das erste Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der ersten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der ersten Bits, und wobei das Bestimmen, dass das zweite Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der zweiten Bits.
  • Bei Beispiel S7 kann der Gegenstand eines der Beispiele S1 oder S6 optional umfassen, dass die erste Vorrichtung ferner als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium nicht erfüllt wurden, die ursprünglichen Daten auf den mehreren Spuren überträgt.
  • Bei Beispiel S8 kann der Gegenstand des Beispiels S1 optional umfassen, dass die erste Vorrichtung ferner basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist, bestimmen soll, dass das erste Kriterium erfüllt ist, und basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist, bestimmen soll, dass das zweite Kriterium erfüllt ist.
  • Bei Beispiel S9 kann der Gegenstand des Beispiels S8 optional umfassen, dass der erste Wert eine binäre 0 oder 1 ist.
  • Bei Beispiel S10 kann der Gegenstand eines der Beispiele S1-S9 optional umfassen, dass die erste Vorrichtung ferner bestimmen soll, ob ein drittes Kriterium, das mit dritten Bits der ursprünglichen Daten assoziiert ist, erfüllt ist, und bestimmen soll, ob die invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, teilweise basierend auf dem Bestimmen, ob das dritte Kriterium erfüllt ist.
  • Bei Beispiel S11 kann der Gegenstand des Beispiels S10 optional umfassen, dass das Bestimmen, dass das dritte Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit dritter Spuren der mehreren Spuren jeweilige vorherige Bitwerte aufweisen, die übergehen müssen, basierend auf mindestens einigen dritten Bits der ursprünglichen Daten.
  • Bei Beispiel S12 kann der Gegenstand eines der Beispiele S1-S11 optional umfassen, dass eine Anzahl der ersten Spuren gleich einer Anzahl der zweiten Spuren ist.
  • Bei Beispiel S13 kann der Gegenstand eines der Beispiele S1-S12 optional umfassen, dass das System ferner eine Mehrchipgehäuseverbindung umfasst, die die erste Vorrichtung mit der zweiten Vorrichtung verbindet, wobei die Mehrchipgehäuseverbindung die mehreren Spuren aufweist und wobei die ersten Spuren und die zweiten Spuren Datenspuren sind.
  • Beispiel M1 stellt ein Verfahren bereit, das das Erhalten, an einer ersten Vorrichtung, die durch mehrere Spuren mit einer zweiten Vorrichtung verbunden ist, von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, umfasst, wobei die ersten Bits jeweils in einem neuen Taktzyklus über erste Spuren der mehreren Spuren übertragen werden sollen und die zweiten Bits jeweils in dem neuen Taktzyklus über zweite Spuren der mehreren Spuren übertragen werden sollen. Das Verfahren umfasst ferner das Bestimmen, ob ein mit den ersten Bits assoziiertes erstes Kriterium erfüllt ist, das Bestimmen, ob ein mit den zweiten Bits assoziiertes zweites Kriterium erfüllt ist, und das Bestimmen, ob eine invertierte Version der ursprünglichen Daten über die mehreren Spuren gesendet werden soll, basierend zumindest teilweise auf dem Bestimmen, ob das erste Kriterium erfüllt ist und ob das zweite Kriterium erfüllt ist.
  • Bei Beispiel M2 kann der Gegenstand des Beispiels M1 optional umfassen, dass das Verfahren ferner Folgendes umfasst: Bestimmen, dass das erste Kriterium erfüllt ist, einschließlich Bestimmen, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits; und Bestimmen, dass das zweite Kriterium erfüllt ist, einschließlich Bestimmen, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  • Bei Beispiel M3 kann der Gegenstand des Beispiels M2 optional umfassen, dass die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind, und dass die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  • Bei Beispiel M4 kann der Gegenstand eines der Beispiele M2-M3 optional umfassen, dass das Verfahren ferner Folgendes umfasst: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die Mehrheit der jeweiligen vorherigen Bitwerte der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheidet.
  • Bei Beispiel M5 kann der Gegenstand eines der Beispiele M1-M4 optional umfassen, dass das Verfahren ferner, als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, das Codieren der ursprünglichen Daten in die invertierte Version, die über die mehreren Spuren übertragen werden soll, umfasst.
  • Bei Beispiel M6 kann der Gegenstand des Beispiels M1 optional umfassen, dass das Bestimmen, dass das erste Kriterium nicht erfüllt ist, das Bestimmen umfasst, dass mindestens die Hälfte der ersten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der ersten Bits, und wobei das Bestimmen, dass das zweite Kriterium nicht erfüllt ist, das Bestimmen umfasst, dass mindestens die Hälfte der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der zweiten Bits.
  • Bei Beispiel M7 kann der Gegenstand eines der Beispiele M1 oder M6 optional umfassen, dass das Verfahren ferner, als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium nicht erfüllt wurden, das Übertragen der ursprünglichen Daten auf den mehreren Spuren umfasst.
  • Bei Beispiel M8 kann der Gegenstand des Beispiels M1 optional umfassen, dass das Verfahren ferner das Bestimmen, dass das erste Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist, und das Bestimmen, dass das zweite Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist, umfasst.
  • Bei Beispiel M9 kann der Gegenstand des Beispiels M8 optional umfassen, dass der erste Wert eine binäre 0 oder 1 ist.
  • Bei Beispiel M10 kann der Gegenstand eines der Beispiele M1-M9 optional umfassen, dass das Verfahren ferner das Bestimmen, ob ein drittes Kriterium, das mit dritten Bits der ursprünglichen Daten assoziiert ist, erfüllt ist, und das Bestimmen, ob die invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, teilweise basierend auf dem Bestimmen, ob das dritte Kriterium erfüllt ist, umfasst.
  • Bei Beispiel M11 kann der Gegenstand des Beispiels M10 optional umfassen, dass das Bestimmen, dass das dritte Kriterium erfüllt ist, das Bestimmen umfasst, dass eine Mehrheit dritter Spuren der mehreren Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen dritten Bits der ursprünglichen Daten.
  • Bei Beispiel M12 kann der Gegenstand eines der Beispiele M1-M11 optional umfassen, dass eine Anzahl der ersten Spuren gleich einer Anzahl der zweiten Spuren ist.
  • Bei Beispiel M13 kann der Gegenstand eines der Beispiele M1-M12 optional umfassen, dass die mehreren Spuren Teil einer Mehrichipgehäuseverbindung sind, die die erste Vorrichtung mit der zweiten Vorrichtung verbindet, und wobei die ersten Spuren und die zweiten Spuren Datenspuren sind.
  • Beispiel C1 stellt mindestens ein nichtflüchtiges maschinenzugängliches Speicherungsmedium mit darauf gespeicherten Anweisungen bereit, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine zu Folgendem veranlassen: Erhalten, an einer ersten Vorrichtung, die durch mehrere Spuren mit einer zweiten Vorrichtung verbunden ist, von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, wobei die ersten Bits jeweils in einem neuen Taktzyklus über erste Spuren der mehreren Spuren übertragen werden sollen, und die zweiten Bits jeweils in dem neuen Taktzyklus über zweite Spuren der mehreren Spuren übertragen werden sollen; Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist; Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist; und Bestimmen, ob eine invertierte Version der ursprünglichen Daten über die mehreren Spuren gesendet werden soll, basierend zumindest teilweise auf dem Bestimmen, ob das erste Kriterium erfüllt ist und ob das zweite Kriterium erfüllt ist.
  • Bei Beispiel C2 kann der Gegenstand des Beispiels C1 optional umfassen, dass das Bestimmen, dass das erste Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits; und das Bestimmen, dass das zweite Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  • Bei Beispiel C3 kann der Gegenstand des Beispiels C2 optional umfassen, dass die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind, und dass die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  • Bei Beispiel C4 kann der Gegenstand eines der Beispiele C2-C3 optional umfassen, dass die Anweisungen, wenn sie auf der Maschine ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die Mehrheit der jeweiligen vorherigen Bitwerte der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheidet.
  • Bei Beispiel C5 kann der Gegenstand eines der Beispiele C1-C4 optional umfassen, dass die Anweisungen, wenn sie auf der Maschine ausgeführt werden, die Maschine ferner veranlassen, als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, die ursprünglichen Daten in die invertierte Version zu codieren, die über die mehreren Spuren übertragen werden soll.
  • Bei Beispiel C6 kann der Gegenstand des Beispiels C1 optional umfassen, dass das Bestimmen, dass das erste Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der ersten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der ersten Bits, und wobei das Bestimmen, dass das zweite Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der zweiten Bits.
  • Bei Beispiel C7 kann der Gegenstand eines der Beispiele C1 oder C6 optional umfassen, dass die Anweisungen, wenn sie auf der Maschine ausgeführt werden, die Maschine ferner veranlassen, als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium nicht erfüllt wurden, die ursprünglichen Daten auf den mehreren Spuren zu übertragen.
  • Bei Beispiel C8 kann der Gegenstand des Beispiels C1 optional umfassen, dass die Anweisungen, wenn sie auf der Maschine ausgeführt werden, die Maschine ferner veranlassen, basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist, zu bestimmen, dass das erste Kriterium erfüllt ist, und basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist, zu bestimmen, dass das zweite Kriterium erfüllt ist.
  • Bei Beispiel C9 kann der Gegenstand des Beispiels C8 optional umfassen, dass der erste Wert eine binäre 0 oder 1 ist.
  • Bei Beispiel C10 kann der Gegenstand eines der Beispiele C1-C9 optional umfassen, dass die Anweisungen, wenn sie auf der Maschine ausgeführt werden, die Maschine ferner veranlassen, zu bestimmen, ob ein drittes Kriterium, das mit dritten Bits der ursprünglichen Daten assoziiert ist, erfüllt ist, und Bestimmen, ob die invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, teilweise basierend auf dem Bestimmen, ob das dritte Kriterium erfüllt ist.
  • Bei Beispiel C11 kann der Gegenstand des Beispiels C10 optional umfassen, dass das Bestimmen, dass das dritte Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit dritter Spuren der mehreren Spuren jeweilige vorherige Bitwerte aufweisen, die übergehen müssen, basierend auf mindestens einigen dritten Bits der ursprünglichen Daten.
  • Bei Beispiel C12 kann der Gegenstand eines der Beispiele C1-C11 optional umfassen, dass eine Anzahl der ersten Spuren gleich einer Anzahl der zweiten Spuren ist.
  • Bei Beispiel C13 kann der Gegenstand eines der Beispiele C1-C12 optional umfassen, dass die mehreren Spuren Teil einer Mehrchipgehäuseverbindung sind, die die erste Vorrichtung mit der zweiten Vorrichtung verbindet, und dass die ersten Spuren und die zweiten Spuren Datenspuren sind.
  • Ein Beispiel Y1 stellt eine Vorrichtung bereit, wobei die Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der vorhergehenden Beispiele M1-M13 aufweist.
  • Bei Beispiel Y2 kann der Gegenstand des Beispiels Y1 optional umfassen, dass die Mittel zum Durchführen des Verfahrens mindestens einen Prozessor und mindestens ein Speicherelement aufweisen.
  • Bei Beispiel Y3 kann der Gegenstand eines der Beispiele Y1-Y2 optional umfassen, dass die Vorrichtung eines von einem Rechensystem, einem System-on-a-Chip oder einer Mehrchipgehäusevorrichtung oder einem Die ist.

Claims (25)

  1. Vorrichtung, die Folgendes aufweist: eine Verbindung, die mehrere Spuren zum Verbinden der Vorrichtung mit einer Empfangsvorrichtung aufweist, wobei die mehreren Spuren erste Spuren und zweite Spuren umfassen; und eine Schaltungsanordnung, die mit der Verbindung gekoppelt ist, wobei die Schaltungsanordnung ausgelegt ist zum: Empfangen von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, die in einem neuen Taktzyklus gesendet werden sollen, wobei die ersten Bits jeweils über die ersten Spuren gesendet werden sollen und die zweiten Bits jeweils über die zweiten Spuren gesendet werden sollen; Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist; Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist; und Bestimmen, ob eine invertierte Version der ursprünglichen Daten über die mehreren Spuren gesendet werden soll, basierend zumindest teilweise auf dem Bestimmen, ob das erste Kriterium erfüllt ist und ob das zweite Kriterium erfüllt ist.
  2. Vorrichtung nach Anspruch 1, wobei: das Bestimmen, dass das erste Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits; und das Bestimmen, dass das zweite Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  3. Vorrichtung nach Anspruch 2, wobei die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind, und wobei die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  4. Vorrichtung nach einem der Ansprüche 2-3, wobei die Schaltungsanordnung ferner ausgelegt ist zum: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheiden.
  5. Vorrichtung nach einem der Ansprüche 1-4, wobei die Schaltungsanordnung ferner ausgelegt ist zum: als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, Codieren der ursprünglichen Daten in die invertierte Version, die über die mehreren Spuren übertragen werden soll.
  6. Vorrichtung nach Anspruch 1, wobei: das Bestimmen, dass das erste Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der ersten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der ersten Bits, und das Bestimmen, dass das zweite Kriterium nicht erfüllt ist, das Bestimmen umfassen soll, dass mindestens die Hälfte der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die nicht übergehen müssen, basierend auf mindestens der Hälfte der zweiten Bits.
  7. Vorrichtung nach Anspruch 1 oder 6, wobei die Schaltungsanordnung ferner ausgelegt ist zum: als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium nicht erfüllt wurden, Übertragen der ursprünglichen Daten auf den mehreren Spuren.
  8. Vorrichtung nach Anspruch 1, wobei die Schaltungsanordnung ferner ausgelegt ist zum: Bestimmen, dass das erste Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist; und Bestimmen, dass das zweite Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist.
  9. Vorrichtung nach Anspruch 8, wobei der erste Wert eine binäre 0 oder 1 ist.
  10. Vorrichtung nach einem der Ansprüche 1-9, wobei die Schaltungsanordnung ferner ausgelegt ist zum: Bestimmen, ob ein drittes Kriterium, das mit dritten Bits der ursprünglichen Daten assoziiert ist, erfüllt ist; und Bestimmen, ob die invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, teilweise basierend auf dem Bestimmen, ob das dritte Kriterium erfüllt ist.
  11. Vorrichtung nach Anspruch 10, wobei das Bestimmen, dass das dritte Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit dritter Spuren der mehreren Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen dritten Bits der ursprünglichen Daten.
  12. Vorrichtung nach einem der Ansprüche 1-11, wobei eine Anzahl der ersten Spuren gleich einer Anzahl der zweiten Spuren ist.
  13. Vorrichtung nach einem der Ansprüche 1-12, wobei die Verbindung eine Mehrchipgehäuseverbindung ist und wobei die ersten Spuren und die zweiten Spuren Datenspuren sind.
  14. System, das Folgendes aufweist: einen Prozessor; eine erste Vorrichtung, die mit dem Prozessor gekoppelt ist; und mehrere Spuren, die erste Spuren und zweite Spuren umfassen, wobei die mehreren Spuren die erste Vorrichtung mit einer zweiten Vorrichtung verbinden sollen, wobei die erste Vorrichtung ausgelegt ist zum: Erhalten von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, die in einem neuen Taktzyklus übertragen werden sollen, wobei die ersten Bits jeweils über die ersten Spuren übertragen werden sollen und die zweiten Bits jeweils über die zweiten Spuren übertragen werden sollen; Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist; Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist; und Übertragen einer invertierten Version der ursprünglichen Daten über die mehreren Spuren als Reaktion auf zumindest teilweise Bestimmen, dass das erste Kriterium erfüllt ist und dass das zweite Kriterium erfüllt ist.
  15. System nach Anspruch 14, wobei: das Bestimmen, dass das erste Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der ersten Bits; und das Bestimmen, dass das zweite Kriterium erfüllt ist, das Bestimmen umfassen soll, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  16. System nach Anspruch 15, wobei die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind und wobei die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  17. System nach Anspruch 14, wobei die erste Vorrichtung ferner ausgelegt ist zum: Bestimmen, dass das erste Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der ersten Bits einen ersten Wert aufweist; und Bestimmen, dass das zweite Kriterium erfüllt ist, basierend auf dem Bestimmen, dass eine Mehrheit der zweiten Bits den ersten Wert aufweist.
  18. Verfahren, das Folgendes umfasst: Erhalten, an einer ersten Vorrichtung, die durch mehrere Spuren mit einer zweiten Vorrichtung verbunden ist, von ursprünglichen Daten, die erste Bits und zweite Bits umfassen, wobei die ersten Bits jeweils in einem neuen Taktzyklus über erste Spuren der mehreren Spuren übertragen werden sollen und die zweiten Bits jeweils in dem neuen Taktzyklus über zweite Spuren der mehreren Spuren übertragen werden sollen; Bestimmen, ob ein erstes Kriterium, das mit den ersten Bits assoziiert ist, erfüllt ist; Bestimmen, ob ein zweites Kriterium, das mit den zweiten Bits assoziiert ist, erfüllt ist; und Bestimmen, ob eine invertierte Version der ursprünglichen Daten über die mehreren Spuren übertragen werden soll, basierend zumindest teilweise auf dem Bestimmen, ob das erste Kriterium erfüllt ist und ob das zweite Kriterium erfüllt ist.
  19. Verfahren nach Anspruch 18, das ferner Folgendes umfasst: Bestimmen, dass das erste Kriterium erfüllt ist, einschließlich Bestimmen, dass eine Mehrheit der ersten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf wenigstens einigen der ersten Bits; und Bestimmen, dass das zweite Kriterium erfüllt ist, einschließlich Bestimmen, dass eine Mehrheit der zweiten Spuren jeweilige vorherige Bitwerte aufweist, die übergehen müssen, basierend auf mindestens einigen der zweiten Bits.
  20. Verfahren nach Anspruch 19, wobei die jeweiligen vorherigen Bitwerte der ersten Spuren mit einem vorherigen Taktzyklus assoziiert sind und wobei die jeweiligen vorherigen Bitwerte der zweiten Spuren mit dem vorherigen Taktzyklus assoziiert sind.
  21. Verfahren nach einem der Ansprüche 19-20, das ferner Folgendes umfasst: vor dem Bestimmen, dass das erste Kriterium erfüllt ist, Bestimmen, dass sich die jeweiligen vorherigen Bitwerte der Mehrheit der ersten Spuren von jeweiligen ersten Bitwerten einer entsprechenden Mehrheit der ersten Bits unterscheiden; und vor dem Bestimmen, dass das zweite Kriterium erfüllt ist, Bestimmen, dass sich die Mehrheit der jeweiligen vorherigen Bitwerte der zweiten Spuren von jeweiligen zweiten Bitwerten einer entsprechenden Mehrheit der zweiten Bits unterscheidet.
  22. Verfahren nach einem der Ansprüche 18-21, das ferner Folgendes umfasst: als Reaktion auf das Bestimmen, dass das erste Kriterium und das zweite Kriterium erfüllt wurden, Codieren der ursprünglichen Daten in die invertierte Version, die über die mehreren Spuren übertragen werden soll.
  23. Vorrichtung, wobei die Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 18-22 aufweist.
  24. Vorrichtung nach Anspruch 23, wobei die Mittel zum Durchführen des Verfahrens mindestens ein nichtflüchtiges maschinenzugängliches Speichermedium mit darauf gespeicherten Anweisungen aufweist, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, bewirken, dass die Maschine das Verfahren nach einem der Ansprüche 18-22 durchführt.
  25. Vorrichtung nach einem der Ansprüche 23-24, wobei die Vorrichtung eines von einem Rechensystem, einem System-on-a-Chip, einer Mehrchipgehäusevorrichtung oder einem Die ist.
DE102021121490.4A 2020-09-23 2021-08-19 Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen Pending DE102021121490A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/029,288 2020-09-23
US17/029,288 US20210004347A1 (en) 2020-09-23 2020-09-23 Approximate data bus inversion technique for latency sensitive applications

Publications (1)

Publication Number Publication Date
DE102021121490A1 true DE102021121490A1 (de) 2022-03-31

Family

ID=74066382

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021121490.4A Pending DE102021121490A1 (de) 2020-09-23 2021-08-19 Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen

Country Status (3)

Country Link
US (1) US20210004347A1 (de)
CN (1) CN114253889A (de)
DE (1) DE102021121490A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756592B2 (en) * 2020-09-29 2023-09-12 Samsung Electronics Co., Ltd. Memory device supporting DBI interface and operating method of memory device
US11720516B2 (en) 2021-08-15 2023-08-08 Apple Inc. Methods for data bus inversion
US11836107B2 (en) 2022-03-01 2023-12-05 Apple Inc. Power consumption control based on random bus inversion

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3006524B2 (ja) * 1996-12-25 2000-02-07 日本電気株式会社 双方向遷移数削減インターフェース回路
US7549011B2 (en) * 2001-08-30 2009-06-16 Micron Technology, Inc. Bit inversion in memory devices
US20040068594A1 (en) * 2002-10-08 2004-04-08 Anthony Asaro Method and apparatus for data bus inversion
US7102544B1 (en) * 2005-05-31 2006-09-05 Altera Corporation Method and system for improving memory interface data integrity in PLDs
US7501963B1 (en) * 2007-10-17 2009-03-10 Micron Technology, Inc. Balanced data bus inversion
US7616133B2 (en) * 2008-01-16 2009-11-10 Micron Technology, Inc. Data bus inversion apparatus, systems, and methods
WO2009134568A2 (en) * 2008-04-02 2009-11-05 Rambus Inc. Encoding data with minimum hamming weight variation
US8229706B2 (en) * 2008-06-10 2012-07-24 Advantest Corporation Sampling apparatus, sampling method and recording medium
WO2011090523A1 (en) * 2010-01-20 2011-07-28 Rambus Inc. Multiple word data bus inversion
JP2011159119A (ja) * 2010-02-01 2011-08-18 Fujitsu Ltd 情報処理装置、情報送信方法および情報受信方法
US8677211B2 (en) * 2010-12-23 2014-03-18 International Business Machines Corporation Data bus inversion using spare error correction bits
US8405529B2 (en) * 2011-03-11 2013-03-26 Taiwan Semiconductor Manufacturing Company, Ltd. Using bus inversion to reduce simultaneous signal switching
US8706958B2 (en) * 2011-09-01 2014-04-22 Thomas Hein Data mask encoding in data bit inversion scheme
KR20130048394A (ko) * 2011-11-02 2013-05-10 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US8963575B2 (en) * 2012-09-26 2015-02-24 Sandisk Technologies Inc. Analog majority vote circuit
US9710012B2 (en) * 2012-11-21 2017-07-18 Sandisk Technologies Llc Timing optimized implementation of algorithm to reduce switching rate on high throughput wide buses
US9251110B2 (en) * 2013-12-24 2016-02-02 Intel Corporation Modifying the spectral energy content of a data bus
US9979416B2 (en) * 2014-12-10 2018-05-22 Rambus Inc. Memory controller and method of data bus inversion using an error detection correction code
US9373395B1 (en) * 2015-03-04 2016-06-21 Intel Corporation Apparatus to reduce retention failure in complementary resistive memory
US10373657B2 (en) * 2016-08-10 2019-08-06 Micron Technology, Inc. Semiconductor layered device with data bus
WO2018080360A1 (en) * 2016-10-28 2018-05-03 Telefonaktiebolaget Lm Ericsson (Publ) Dbi protection for data link
US20200251159A1 (en) * 2020-04-21 2020-08-06 Intel Corporation Stacked memory device with end to end data bus inversion

Also Published As

Publication number Publication date
CN114253889A (zh) 2022-03-29
US20210004347A1 (en) 2021-01-07

Similar Documents

Publication Publication Date Title
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE112013007751B3 (de) Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
CN109661658B (zh) 链路物理层接口适配器
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112015006944B4 (de) Einrichtung, System und Verfahren zum Ermöglichen einer Kommunikation über eine Verbindung mit einer Vorrichtung außerhalb einer Baugruppe
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112016003233T5 (de) Redriver-verbindungsprüfung
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE102021121490A1 (de) Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen
EP4216066A2 (de) Virtualisierte verbindungszustände von paketverbindungen mit mehreren protokollschichten
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102018128569A1 (de) Nebensprecherzeugung in einem link für mehrere spuren während des spurtestens
DE102018005753A1 (de) Serdes link training
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112015006961T5 (de) Verbindungsfehlerdetektion in mehrfachchipgehäusen
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE112016003222T5 (de) Hochleistungsfähiger repeater
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112017004963T5 (de) Spannunsgmodulierte steuer-lane
DE112013003766T5 (de) Schnelles Entzerren beim Verlassen eines Niedrigenergie-Teilbreite-Hochgeschwindigkeitsverbindungszustands
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen