DE102019129626A1 - Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen - Google Patents

Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen Download PDF

Info

Publication number
DE102019129626A1
DE102019129626A1 DE102019129626.9A DE102019129626A DE102019129626A1 DE 102019129626 A1 DE102019129626 A1 DE 102019129626A1 DE 102019129626 A DE102019129626 A DE 102019129626A DE 102019129626 A1 DE102019129626 A1 DE 102019129626A1
Authority
DE
Germany
Prior art keywords
data block
error correction
data
correction code
port
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
DE102019129626.9A
Other languages
English (en)
Inventor
Debendra Das Sharma
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 DE102019129626A1 publication Critical patent/DE102019129626A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0076Distributed coding, e.g. network coding, involving channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0096Channel splitting in point-to-point links

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Information Transfer Systems (AREA)

Abstract

Systeme und Vorrichtungen können einen ersten Port einer ersten Vorrichtung, gekoppelt mit einem zweiten Port einer zweiten Vorrichtung über eine mehrspurige Verbindung, umfassen. Der erste Port kann einen Datenblock mit Fehlerkorrekturcode ergänzen, indem Fehlerkorrekturcode gleichmäßig über jede Spur des Datenblocks verteilt wird, wobei jede Spur des Datenblocks eine selbe Anzahl von Fehlerkorrekturcode umfasst. Der erste Port kann den Datenblock mit dem spurweisen Fehlerkorrekturcode über die mehrspurige Verbindung zu dem zweiten Port senden. Der zweite Port kann auf der Basis der in dem Datenblock empfangenen Fehlerkorrekturcode-Bit Fehlerkorrekturcode bestimmen und auf der Basis des empfangenen Fehlerkorrekturcodes Fehlerkorrektur an den Symbolen des Datenblocks ausführen.

Description

  • STAND DER TECHNIK
  • Vorwärtsfehlerkorrektur (FEC) ist eine Technik, die zur Kontrolle von Fehlern bei der Datenübertragung über unzuverlässige oder rauschbehaftete Kommunikationskanäle verwendet wird. Ein Absender kann eine Nachricht durch Verwendung eines fehlerkorrigierenden Codes (ECC) auf redundante Weise codieren. Die Redundanz erlaubt dem Empfänger, eine begrenzte Anzahl von Fehlern, die an einer beliebigen Stelle in der Nachricht auftreten können, zu detektieren und oft diese Fehler ohne Neuübertragung zu korrigieren.
  • Figurenliste
    • 1 zeigt eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem, das einen Mehrkernprozessor umfasst.
    • 2A ist eine schematische Darstellung eines untereinander verbundenen Systems, das zwei Retimer umfasst, gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 2B ist eine schematische Darstellung eines verbundenen Systems, das eine Inband-Upstream-Port- und Retimer-Konfiguration veranschaulicht, gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 3 ist eine schematische Darstellung einer Fähigkeitenstruktur für TX- und RX-Schaltungen zum Speichern von Konfigurationseinstellungen gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 4A-4B sind schematische Darstellungen von Fehlerkorrekturcode- bzw. ECC-Bit, die über jede Spur einer mehrspurigen Verbindung organisiert sind, gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 5A ist ein Prozessorflussdiagramm zur Ergänzung abgehender Datenblöcke mit Vorwärtsfehlerkorrektur gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 5B ist ein Prozessflussdiagramm zum Empfangen von Datenblöcken mit Vorwärtsfehlerkorrektur gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6 zeigt eine Ausführungsform eines Datenverarbeitungssystems, das eine Interconnect-Architektur umfasst.
    • 7 zeigt eine Ausführungsform einer Interconnect-Architektur, die einen geschichteten Stapel umfasst.
    • 8 zeigt eine Ausführungsform einer Anforderung oder eines Pakets, die bzw. das in einer Interconnect-Architektur zu erzeugen oder zu empfangen ist.
    • 9 zeigt eine Ausführungsform eines Sender- und -Empfänger-Paars für eine Interconnect-Architektur.
    • 10 zeigt eine andere Ausführungsform für eine Blockdarstellung eines Datenverarbeitungssystems, das einen Prozessor umfasst.
    • 11 zeigt eine Ausführungsform eines Blocks eines Datenverarbeitungssystems, das mehrere Prozessor-Sockets umfasst.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt, wie Beispiele von spezifischen Typen von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitektur-Einzelheiten, spezifische Registerkonfigurationen, spezifische Anweisungstypen, spezifische Systemkomponenten, spezifische Messwerte/Höhen, spezifische Prozessor-Pipeline-Stufen und spezifischer Prozessor-Pipeline-Betrieb usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Es wird einem Fachmann jedoch offensichtlich sein, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Offenbarung auszuüben. In anderen Fällen wurden wohl bekannte Komponenten oder Verfahren, wie spezifische und alternative Prozessorarchitekturen, spezifische logische Schaltungen/spezifischer Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Interconnect-Betrieb, spezifische logische Konfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementationen, spezifischer Ausdruck von Algorithmen in Code, spezifische Abschalt- und Ansteuerungstechniken/-logik und andere spezifische Betriebseinzelheiten eines Computersystems, nicht detailliert beschrieben, um ein unnötiges Verschleiern der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen in Bezug auf Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltungen, wie in Datenverarbeitungsplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteine anwendbar. Ähnliche Techniken und Lehren von hierin beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleiterbausteinen angewendet werden, die ebenfalls von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Die offenbarten Ausführungsformen sind beispielsweise nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Und können auch in anderen Geräten verwendet werden, wie tragbaren Geräten, Tablets, anderen dünnen Notebooks, System-on-a-Chip-Bausteinen (SOC-Bausteinen) und eingebetteten Anwendungen. Einige Beispiele von tragbaren Geräten beinhalten Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, Minicomputer (PDA) und tragbare PCs. Eingebettete Anwendungen beinhalten in der Regel einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System-on-a-Chip, Netzwerkcomputer (NetPC), Digitalempfänger, Netzwerk-Hubs, Fernnetz-Switches (WAN-Switches) oder ein beliebiges anderes System, das die im Folgenden gelehrten Funktionen und Arbeitsabläufe durchführen kann. Darüber hinaus sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Datenverarbeitungsgeräte beschränkt, können jedoch auch Softwareoptimierungen für Energieeinsparung und -effizienz betreffen. Wie in der folgenden Beschreibung ohne Weiteres ersichtlich werden wird, sind die Ausführungsformen von hierin beschriebenen (obschon in Bezug auf Hardware, Firmware, Software oder einer Kombination davon) Verfahren, Vorrichtungen und Systemen für eine Zukunft mit „grüner Technologie“, die mit Leistungserwägungen ausgewogen sind, wesentlich.
  • Während Datenverarbeitungssysteme weiterentwickelt werden, werden die Komponenten darin komplexer. Infolgedessen nimmt auch die Komplexität der Interconnect-Architektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Des Weiteren erfordern unterschiedliche Marktsegmente unterschiedliche Gesichtspunkte von Interconnect-Architekturen, um dem Bedarf des Markts zu entsprechen. Server erfordern beispielsweise eine höhere Leistung, während das mobile Ökosystem gelegentlich die Gesamtleistung für Energieeinsparungen aufopfern kann. Die meisten Strukturen haben dennoch als einzigen Zweck, die höchstmögliche Leistung mit maximaler Energieeinsparung bereitzustellen. Im Folgenden wird eine Reihe von Interconnects erörtert, die von Gesichtspunkten der hierin beschriebenen Erfindung potentiell profitieren würden.
  • Mit Bezug auf 1 ist eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem, das einen Mehrkernprozessor umfasst, abgebildet. Der Prozessor 100 umfasst eine beliebige Prozessor- oder Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen DSP (Digitalsignalprozessor), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Koprozessor, ein SoC (System on a Chip) oder eine andere Vorrichtung zum Ausführen von Code. Bei einer Ausführungsform umfasst der Prozessor 100 mindestens zwei Kerne - Kern 101 und 102, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) umfassen können. Der Prozessor 100 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele von Hardware-Verarbeitungselementen beinhalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das dazu fähig ist, einen Zustand für einen Prozessor, wie einen Ausführungszustand oder Architekturzustand, aufzubewahren. Anders ausgedrückt, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf eine beliebige Hardware, die dazu fähig ist, unabhängig mit Code, wie einem Software-Thread, einem Betriebssystem, einer Anwendung oder einem anderen Code, assoziiert zu sein. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich in der Regel auf eine integrierte Schaltung, die potentiell eine beliebige Anzahl von anderen Verarbeitungselementen, wie Kernen oder Hardware-Threads, beinhalten kann.
  • Ein Kern bezieht sich oftmals auf Logik, die sich auf einer integrierten Schaltung befindet und dazu fähig ist, einen unabhängigen Architekturzustand zu pflegen, wobei jeder unabhängig gepflegte Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread in der Regel auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet und dazu fähig ist, einen unabhängigen Architekturzustand zu pflegen, wobei die unabhängig gepflegten Architekturzustände sich einen Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, wenn bestimmte Ressourcen geteilt werden und andere einem Architekturzustand gewidmet sind, überschneidet sich die Linie zwischen der Nomenklatur eines Hardware-Threads und eines Kerns. Dennoch werden ein Kern und ein Hardware-Thread oftmals von einem Betriebssystem als einzelne logische Prozessoren angesehen, wobei das Betriebssystem Arbeitsabläufe auf jedem logischen Prozessor einzeln einplanen kann.
  • Der physikalische Prozessor 100, wie in 1 dargestellt, beinhaltet zwei Kerne - Kern 101 und 102. Hier werden die Kerne 101 und 102 als symmetrische Kerne angesehen, d. h. Kerne mit denselben Konfigurationen, denselben Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform beinhaltet der Kern 101 einen Out-of-Order-Prozessorkern, während der Kern 102 einen In-Order-Prozessorkern beinhaltet. Die Kerne 101 und 102 können jedoch einzeln aus einem beliebigen Kerntyp ausgewählt sein, wie ein nativer Kern, ein softwareverwalteter Kern, ein Kern, der dazu eingerichtet ist, eine native Befehlssatzarchitektur (ISA) auszuführen, ein Kern, der dazu eingerichtet ist, eine übersetzte Befehlssatzarchitektur (ISA) auszuführen, ein gemeinsam entworfener Kern oder ein anderer bekannter Kern. In einer heterogenen Kernumgebung (d. h. asymmetrische Kerne) kann eine Form der Übersetzung, wie eine binäre Übersetzung, dazu genutzt sein, Code auf einem oder beiden Kernen einzuplanen oder auszuführen. Um die Erörterung jedoch voranzutreiben, werden die im Kern 101 dargestellten Funktionseinheiten im Folgenden in weiteren Einzelheiten beschrieben, während die Einheiten im Kern 102 auf ähnliche Weise in der dargestellten Ausführungsform arbeiten.
  • Wie gezeigt, beinhaltet der Kern 101 zwei Hardware-Threads 101a und 101b, die auch als Hardware-Thread-Slots 101a und 101b bezeichnet werden können. Folglich betrachten Software-Entitäten, wie ein Betriebssystem, den Prozessor 100 in einer Ausführungsform potentiell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die dazu fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread mit Architekturzustandsregistern 101a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 101b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 102a assoziiert sein und ein vierter Thread kann mit Architekturzustandsregistern 102b assoziiert sein. Hier kann jedes der Architekturzustandsregister (101a, 101b, 102a und 102b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten, wie oben beschrieben, bezeichnet werden. Wie dargestellt, sind die Architekturzustandsregister 101a in den Architekturzustandsregistern 101b repliziert, so dass einzelne Architekturzustände/Kontexte dazu fähig sind, für den logischen Prozessor 101a und den logischen Prozessor 101b gespeichert zu werden. Im Kern 101 können kleinere Ressourcen, wie Anweisungszeiger und Umbenennungslogik im Zuordner- und Umbenenner-Block 130, auch für die Threads 101a und 101b repliziert werden. Einige Ressourcen, wie Neuordnerpuffer in einer Neuordner-/Stilllegungseinheit 135, ein ITLB 120, Lade-/Speicherpuffern und Warteschlangen, können durch Partitionierung geteilt werden. Andere Ressourcen, wie interne Universalregister, ein oder mehrere Seitentabellenbasisregister, ein Low-Level-Daten-Cache und ein Daten-TLB 115, eine oder mehrere Ausführungseinheiten 140 und Abschnitte einer Out-of-Order-Einheit 135, werden potentiell vollständig geteilt.
  • Der Prozessor 100 beinhaltet oftmals andere Ressourcen, die vollständig geteilt, durch Partitionierung geteilt oder Verarbeitungselementen dediziert werden können. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Man beachte, dass ein Prozessor beliebige dieser Funktionseinheiten beinhalten oder weglassen sowie beliebige andere bekannte Funktionseinheiten, eine beliebige andere bekannte Logik oder Firmware, die nicht gezeigt sind, beinhalten kann. Wie dargestellt, beinhaltet der Kern 101 einen vereinfachten, repräsentativen Out-of-Order-Prozessorkern (OOO-Prozessorkern). Ein In-Order-Prozessor kann jedoch in anderen Ausführungsformen genutzt werden. Der OOO-Kern beinhaltet einen Verzweigungszielpuffer 120, um auszuführende/zu nehmende Verzweigungen vorherzusagen, und einen Anweisungsübersetzungspuffer (I-TLB) 120, um Adressübersetzungseinträge für Anweisungen zu speichern.
  • Der Kern 101 beinhaltet weiterhin ein Decodiermodul 125, das mit einer Abrufeinheit 120 zum Decodieren von abgerufenen Elementen gekoppelt ist. Fetch-Logik beinhaltet in einer Ausführungsform einzelne Sequenzierer, die mit den Thread-Slots 101a bzw. 101b assoziiert sind. Gewöhnlich ist der Kern 101 mit einer ersten ISA assoziiert, die auf dem Prozessor 100 ausführbare Anweisungen definiert/spezifiziert. Oftmals beinhalten Maschinencode-Anweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (als ein Opcode bezeichnet), der eine durchzuführende Anweisung oder einen durchzuführenden Arbeitsablauf referenziert/spezifiziert. Decodierlogik 125 beinhaltet Schaltkreise, die diese Anweisungen aus ihren Opcodes erkennen und die decodierten Anweisungen in der Pipeline zum Verarbeiten weiterleiten, wie durch die erste ISA definiert. Wie im Folgenden detaillierter erörtert, beinhalten die Decodierer 125 beispielsweise in einer Ausführungsform eine Logik, die dazu entworfen oder eingerichtet ist, spezifische Anweisungen, wie eine Transaktionsanweisung, zu erkennen. Infolge der Erkennung durch die Decodierer 125 nimmt die Architektur oder der Kern 101 spezifische, vordefinierte Aktionen vor, um Aufgaben durchzuführen, die mit der passenden Anweisung assoziiert sind. Es ist wichtig anzumerken, dass beliebige der hierin beschriebenen Aufgaben, Blöcke, Arbeitsabläufe und Verfahren als Reaktion auf eine einzige oder mehrere Anweisungen durchgeführt werden können; einige davon können neue oder alte Anweisungen sein. Man beachte, dass Decodierer 126 in einer Ausführungsform dieselbe ISA (oder einen Teilsatz davon) erkennen. Alternativ dazu erkennen die Decodierer 126 in einer heterogenen Kernumgebung eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine unterschiedliche ISA).
  • In einem Beispiel beinhaltet der Zuordner- und Umbenenner-Block 130 einen Zuordner, um Ressourcen, wie Registerdateien zum Speichern von Anweisungsverarbeitungsergebnissen, zu reservieren. Die Threads 101a und 101b sind jedoch potentiell zu einer Out-of-Order-Ausführung fähig, wobei der Zuordner- und Umbenenner-Block 130 außerdem andere Ressourcen, wie Neuordnerpuffer zum Verfolgen von Anweisungsergebnissen, reserviert. Die Einheit 130 kann außerdem einen Registerumbenenner beinhalten, um Programm-/Anweisungsreferenzregister in andere Register umzubenennen, die zu dem Prozessor 100 intern sind. Die Neuordner-/Stilllegungseinheit 135 beinhaltet Komponenten, wie die oben erwähnten Neuordnerpuffer, Ladepuffer und Speicherpuffer, um eine Out-of-Order-Ausführung und eine spätere In-Order-Stilllegung von Out-of-Order ausgeführten Anweisungen zu unterstützen.
  • Ein Block 140 von einem Einplaner und einer oder mehreren Ausführungseinheiten beinhaltet in einer Ausführungsform eine Terminierereinheit, um Anweisungen/einen Arbeitsablauf auf Ausführungseinheiten einzuplanen. Eine Gleitkomma-Anweisung wird beispielsweise an einem Port einer Ausführungseinheit eingeplant, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls beinhaltet, um Informationsanweisungsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten beinhalten eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprung-Ausführungseinheit, eine Lade-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten.
  • Ein Lower-Level-Daten-Cache und ein Datenübersetzungspuffer (D-TLB) 150 sind mit der einen oder den mehreren Ausführungseinheiten 140 gekoppelt. Der Daten-Cache ist zum Speichern von kürzlich verwendeten/betriebenen Elementen, wie Datenoperanden, die potentiell in Speicherkohärenzzuständen gespeichert sind. Der D-TLB ist zum Speichern von kürzlichen Übersetzungen einer virtuellen/linearen in eine physikalische Adresse. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur beinhalten, um einen physikalischen Speicher in eine Vielzahl von virtuellen Seiten aufzuspalten.
  • Hier teilen die Kerne 101 und 102 einen Zugriff auf einen Higher-Level- oder Further-Out-Cache, wie einen Second-Level-Cache, der mit einer On-Chip-Schnittstelle 110 assoziiert ist. Man beachte, dass Higher-Level oder Further-Out sich auf Cache-Level bezieht, die zunehmen oder sich weiter von der bzw. den Ausführungseinheiten weg bewegen. In einer Ausführungsform ist ein Higher-Level-Cache ein Last-Level-Daten-Cache-der letzte Cache in der Speicherhierarchie auf dem Prozessor 100 -, wie ein Second- oder Third-Level-Daten-Cache. Ein Higher-Level-Cache ist jedoch nicht so beschränkt, da er mit einem Anweisungscache assoziiert sein oder einen solchen beinhalten kann. Ein Trace-Cache - ein Anweisungscache-Typ - kann stattdessen hinter dem Decodierer 125 gekoppelt sein, um kürzlich decodierte Traces zu speichern. Hier bezieht sich eine Anweisung potentiell auf eine Makroanweisung (d. h. eine allgemeine Anweisung, die von den Decodierern erkannt wird), die sich zu einer Reihe von Mikroanweisungen (Mikroarbeitsabläufe) decodieren kann.
  • In der gezeigten Konfiguration beinhaltet der Prozessor 100 außerdem ein On-Chip-Schnittstellenmodul 110. Historisch wurde ein Speichercontroller, der im Folgenden detaillierter beschrieben wird, in einem Datenverarbeitungssystem extern zum Prozessor 100 eingebunden. In diesem Szenario ist eine On-Chip-Schnittstelle 110 zum Kommunizieren mit Geräten, die extern zum Prozessor 100 sind, wie ein Systemspeicher 175, ein Chipsatz (der oftmals einen Speichercontroller-Hub zum Verbinden mit dem Speicher 175 und/oder einen E/A-Controller-Hub zum Verbinden von Peripheriegeräten beinhaltet), ein Speichercontroller-Hub, eine Northbridge oder eine andere integrierte Schaltung. Und in diesem Szenario kann ein Bus 105 einen beliebigen bekannten Interconnect beinhalten, wie einen Multi-Drop-Bus, einen Punkt-zu-Punkt-Interconnect, einen seriellen Interconnect, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine Schichtprotokoll-Architektur, einen Differentialbus und einen GTL-Bus.
  • Der Speicher 175 kann für den Prozessor 100 dediziert oder mit anderen Geräten in einem System geteilt sein. Übliche Beispiele von Typen des Speichers 175 beinhalten einen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichergeräte. Man beachte, dass ein Gerät 180 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der bzw. die an einen Speichercontroller-Hub gekoppelt ist, einen Datenspeicher, der an einen E/A-Controller-Hub gekoppelt ist, einen drahtlosen Transceiver, ein Flash-Gerät, einen Audio-Controller, einen Netzwerk-Controller oder ein anderes bekanntes Gerät beinhalten kann.
  • Da in jüngster Zeit jedoch mehr Logik und Bauelemente auf einem einzigen Chip, wie ein SOC, integriert wurden, kann jedes dieser Bauelemente auf dem Prozessor 100 eingebunden werden. In einer Ausführungsform ist der Speicher-Controller-Hub beispielsweise auf demselben Paket und/oder Chip mit dem Prozessor 100. Hier beinhaltet ein Abschnitt des Kerns (ein On-Core-Abschnitt) 110 einen oder mehrere Controller zum Zusammenschalten mit anderen Geräten, wie dem Speicher 175 oder einem Grafikgerät 180. Die Konfiguration, die einen Interconnect und Controller zum Zusammenschalten mit derartigen Geräten beinhaltet, wird oftmals als ein On-Core (oder eine On-Core-Konfiguration) bezeichnet. Als ein Beispiel beinhaltet die On-Chip-Schnittstelle 110 einen Ring-Interconnect zur On-Chip-Kommunikation und eine serielle Punkt-zu-Punkt-Hochgeschwindigkeitsdatenstrecke 105 zur Off-Chip-Kommunikation. In der SOC-Umgebung können jedoch noch mehr Geräte, wie die Netzwerkschnittstelle, Koprozessoren, der Speicher 175, der Grafikprozessor 180 und beliebige andere bekannte Computergeräte/eine beliebige andere bekannte Schnittstelle, auf einem einzigen Chip oder einer einzigen integrierten Schaltung integriert werden, um einen kleine Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 100 dazu fähig, einen Compiler-, Optimierungs- und/oder Übersetzercode 177 auszuführen, um einen Anwendungscode 176 zu kompilieren, übersetzen und/oder optimieren, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Zusammenschaltung damit vorzunehmen. Ein Compiler beinhaltet oftmals ein Programm oder einen Satz von Programmen, um Quelltext/-code in Zieltext/-code zu übersetzen. Gewöhnlich wird eine Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchläufen vorgenommen, um höheren Programmiersprachencode in niedrigeren Maschinen- oder Assembliersprachencode umzusetzen. Dennoch können Single-Pass-Compiler immer noch für eine einfache Kompilierung verwendet werden. Ein Compiler kann beliebige bekannte Kompilierungstechniken nutzen und beliebige bekannte Compiler-Arbeitsabläufe durchführen, wie lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codeumsetzung und Codeoptimierung.
  • Größere Compiler beinhalten oftmals mehrere Phasen, meistens sind diese Phasen jedoch in zwei allgemeine Phasen eingebunden: (1) ein Front-End, d. h. wo allgemein eine syntaktische Verarbeitung, eine semantische Verarbeitung und eine gewisse Umsetzung/Optimierung erfolgen kann, und (2) ein Back-End, d. h., wo allgemein eine Analyse, Umwandlungen, Optimierungen und eine Codeerzeugung erfolgt. Einige Compiler beziehen sich auf eine Mitte, die die Verwischung der Abgrenzung zwischen einem Front-End und einem Back-End eines Compilers darstellt. Infolgedessen kann ein Verweis auf eine Einfügung, Assoziierung, Erzeugung oder einen anderen Arbeitsablauf eines Compilers in einer beliebigen der oben erwähnten Phasen oder einem beliebigen der oben erwähnten Durchläufe sowie beliebigen anderen bekannten Phasen oder Durchläufen eines Compilers erfolgen. Als ein veranschaulichendes Beispiel fügt ein Compiler potentiell Arbeitsabläufe, Abrufe, Funktionen usw. in eine oder mehrere Phasen der Kompilierung ein, wie eine Einfügung von Abrufen/Arbeitsabläufen in eine Front-End-Phase der Kompilierung und dann eine Umsetzung der Abrufe/Arbeitsabläufe in niedrigeren Code während einer Umsetzungsphase. Man beachte, dass während einer dynamischen Kompilierung Compiler-Code oder dynamischer Optimierungscode derartige Arbeitsabläufe/Abrufe einfügen sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifisches veranschaulichendes Beispiel kann binärer Code (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den binären Code oder eine Kombination davon beinhalten.
  • Die folgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen. In den verschiedenen Zeichnungen können dieselben Bezugszahlen verwendet werden, um dieselben oder ähnliche Elemente zu identifizieren. In der folgenden Beschreibung werden zur Erläuterung und nicht zur Beschränkung spezifische Einzelheiten dargelegt, wie etwa konkrete Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein umfassendes Verständnis der verschiedenen Aspekte verschiedener Ausführungsformen zu gewährleisten. Für Fachleute ist anhand der vorliegenden Offenbarung jedoch erkennbar, dass die verschiedenen Aspekte der verschiedenen Ausführungsformen in anderen Beispielen praktiziert werden können, die von diesen spezifischen Details abweichen. In bestimmten Fällen werden Beschreibungen wohlbekannter Vorrichtungen, Schaltungen und Verfahren weggelassen, um die Beschreibung der verschiedenen Ausführungsformen so nicht mit unnötigen Einzelheiten zu verschleiern.
  • Da Datenraten in seriellen Interconnects, wie etwa PCIe, weiter zunehmen, kann es schwierig sein, die Bitfehlerraten (BER) von 10-12 über die hunderte Spuren pro SoC (System on Chip) aufrechtzuerhalten. Verschiedene zu Übersprechen, Störungen zwischen Symbolen (ISI) und Kanalverlust beitragende Elemente können aus dem Sockel, den Durchkontaktierungen, der Platine, dem Verbinder und der Zusatzkarte (AIC) entstehen. Interconnect-Technologie der nächsten Generation (z.B. PCIe Gen 6) mit dem Ziel von 64 GT/s könnten Pulsamplitudenmodulation (PAM)-4 verwenden und können auf eine niedrigere BER, wie etwa 10-6, abzielen, ähnlich wie es bei Ethernet bereits für 50 G- und 100 G-Datenraten mit einer Ziel-BER von sogar nur 10-4 geschehen ist.
  • Mit niedrigeren Ziel-BER wie diesen, kann Vorwärtsfehlerkorrektur (FEC) verwendet werden, um die Fehler zu korrigieren, um die effektive BER bis herauf zu den gewünschten 10-12 oder besser zu bringen. Die vorliegende Offenbarung beschreibt Techniken zur Verwendung von FEC zur Verringerung der BER, während Latenz und Bandbreitenverlust aufgrund der Bit des Fehlerkorrekturcodes (ECC) behandelt werden.
  • Hohe Latenz kann für Lade-Speicher-Anwendungen wie PCIe, Kohärenzverbindungen wie QPI (Quick Path Interconnect)/UPI (Ultra Path Interconnect), serielle Speicher-Interconnects, konvergierte E/A, Speicher- und Kohärenzverbindungen wie IAL (Intel Accelerator Links) untragbar sein. Diese Schnittstellen würden entweder breiter aber langsamer laufen, um zu vermeiden, die Latenzkosten zu bezahlen, oder in eingeschränkten Kanälen mit höherer Frequenz laufen, um Bezahlen der Latenzkosten zu vermeiden. Die vorliegende Offenbarung mindert das Latenzproblem durch parallele FEC und mindert das Bandbreitenverlustproblem mittels Codierungsänderungen.
  • Ausführungsformen der vorliegenden Offenbarung können die nächste Geschwindigkeitsaufrüstung für PCIe (PCI Express) über PCIe Gen 4 hinaus (z.B. PCIe Gen 5, Gen 6) mit niedrigerer BER (Bitfehlerrate) durch Verwendung von Vorwärtsfehlerkorrektur (FEC) ermöglichen. FEC kann die Kanalreichweite erweitern, während volle Rückwärtskompatibilität aufrechterhalten wird, selbst bei Anwesenheit von Retimer(n). Obwohl die Erfindung im Kontext von PCIe Gen 6 beschrieben wird, ist für Fachleute erkennbar, dass die Konzepte auf andere Interconnects (wie etwa zukünftige Generationen von mehrspurigen Verbindungen wie Kohärenz-/Speicherverbindungen, USB usw.) anwendbar sind, wenn FEC verwendet wird.
  • Aspekte der Ausführungsformen können PCIe 5.0 oder höher betreffen, wobei FEC gegebenenfalls auf rückwärtskompatible Weise verwendet wird. Zu Implementierungswahlmöglichkeiten können eine oder mehrere der folgenden gehören:
  • Die Offenbarung umfasst drei Elemente: (i) Parallel-FEC mit Retimer-Durchgang, gegebenenfalls anwendbar über die Verbindung hinweg; (ii) Entfernung des Sync-Headers (Sync HDR) zur Wiedergewinnung von Bandbreitenverlust aufgrund von FEC mit den entsprechenden Übergangsregeln des Datenstroms zur geordneten Menge; und (iii) Verringern der Datenrate des Betriebs auf einen Wert, bei dem FEC für einen gegebenen Kanal und Tx/Rx-Paare über die Verbindung nicht notwendig wäre, für superlatenzkritische Anwendungen (wie etwa Speichererweiterungsbusse). Die hier beschriebenen Systeme und Techniken können niedrige Latenz in einem Hochbandbreiten-Interconnect, einschließlich PCIe, Kohärenzverbindungen, IAL, Speicher-Interconnect usw., erzielen.
  • Spezieller ist FEC über die gesamte Verbindung einschließlich etwaiger Retimer anwendbar. Zur Latenzoptimierung wird angenommen, dass Retimer keine Fehlerkorrektur durchführen. Das ECC-Codewort wird über alle Spuren gestript, um die Latenz zu verringern (im Gegensatz zu FEC pro Spur). Entfernung des Sync HDR kann den Bandbreitenverlust aufgrund von FEC mit entsprechenden Übergangsregeländerungen von Datenblock zugeordneter Menge mindern.
  • Die Offenbarung beschreibt die Verwendung eines FEC-Codes, der auf der gesamten Verbindung über alle Spuren und Segmente hinweg anwendbar ist. Über alle Spuren hinweg wird derselbe FEC angewandt. Retimer können die Bit ohne Prüfung und Korrektur für Bitfehler zur Latenzoptimierung weiterleiten oder die FEC abhängig von der Weise durchführen, wie der Downstream-Port sie während des anfänglichen Verbindungstrainings auf der Basis der Plattformanforderungen dazu instruiert.
  • Obwohl die Offenbarung im Kontext von PCIe Gen 6 beschrieben wird, ist für Fachleute erkennbar, dass die Konzepte auf andere Interconnects (wie etwa zukünftige Generationen von Mehrspurverbindungen wie Kohärenz-Speicherverbindungen, usw.) anwendbar sind, wenn FEC verwendet wird.
  • 2A ist ein schematisches und Impulsdiagramm einer beispielhaften Topologie 200 mit zwei Retimern 204 und 206 zwischen einem Upstream-Komponenten-Downstream-Port 202 und einem Downstream-Komponenten-Upstream-Port 208 gemäß Ausführungsformen der vorliegenden Offenbarung. Der Upstream-Komponenten-Downstream-Port 202 kann ein Port für eine Vorrichtung auf PCIe-Basis sein, wie etwa eine CPU oder eine andere Vorrichtung mit der Fähigkeit zur Erzeugung eines Datenpakets und Übertragung des Datenpakets über eine das PCIe-Protokoll einhaltende Datenverbindung. Der Downstream-Komponenten-Upstream-Port 208 kann ein Port für eine Peripheriekomponente sein, die ein Datenpaket von einer das PCIe-Protokoll einhaltenden Verbindung empfangen kann. Es versteht sich, dass der Upstream-Komponenten-Downstream-Port 202 und der Downstream-Komponenten-Upstream-Port 208 Datenpakete über PCIe-Verbindung(en), dargestellt als PCIe-Verbindung 210a-c, senden und empfangen können.
  • Die Topologie 200 kann einen oder mehrere Retimer 204 und 206 umfassen. Die Retimer 204 und 206 können als Signalrepeater dienen, der in der Bitübertragungsschicht arbeitet, um das Signal von der Upstream-Komponente 202 und/oder dem Downstream-Komponenten-Upstream-Port 208 fein abzustimmen. Ein Retimer kann CTLE (Continuous Time Linear Equalization), DFE (Decision Feedback Equalization) benutzen und eine Impulsantwortentzerrung (Tx FIR EQ, oder einfach nur TxEQ) senden. Retimer sind für die Datenverbindung und Transaktionsschichten transparent, implementieren aber die volle Bitübertragungsschicht.
  • Die mehrspurige PCIe-Verbindung wird in jeder Richtung in drei Verbindungssegmente (LS) 210a, 210b und 210c aufgeteilt. Der Upstream-Komponenten-Downstream-Port 202 kann durch eine Mehrspur-PCIe-Verbindung 210a mit dem Retimerl 204 gekoppelt sein. Der Retimerl 204 kann durch das Verbindungssegment 210b mit dem Retimer2 206 gekoppelt sein. Und der Retimer2 206 kann durch das Verbindungssegment 210c mit dem Downstream-Komponenten-Upstream-Port 208 gekoppelt sein.
  • Komponenten können auch durch Seitenband-Verknüpfungen gekoppelt sein. Der Upstream-Komponenten-Downstream-Port 202 kann durch eine Seitenbandverbindung 212a mit dem Retimerl 204 gekoppelt sein. Der Retimerl 204 kann durch eine Seitenbandverbindung 212b mit dem Retimer2 206 gekoppelt sein. Und der Retimer2 206 kann durch eine Seitenbandverbindung 212c mit dem Downstream-Komponenten-Upstream-Port 208 gekoppelt sein.
  • Eine primäre Funktion einer Retimer-(Puffer)-Vorrichtung ist Signalretiming. Diese Funktionen werden durch die Retimer 204 und 206 ausgeführt. Die konkreten Retimer-Vorrichtungsschaltungen richten sich nach der für die Verbindung verwendeten Phy. Im Allgemeinen werden Retimerschaltkreise dafür ausgelegt, das ankommende Signal wiederzugewinnen und unter Verwendung eines lokalen Takts und neuer Sendeentzerrungsschaltkreise weiter zu senden und können typischerweise für diesen Zweck wohlbekannte Schaltkreise verwenden, wie etwa Phasenregelkreise. Ein Retimer kann ferner Sender- und Empfängerschaltkreise, einschließlich einer oder mehrerer Verstärkerschaltungen, sowie verschiedene Arten von wohlbekannten Signalaufbereitungsschaltkreisen umfassen, die verwendet werden, um den Ansteuerpegel eines Empfangssignals zu vergrößern. Solche Retimerschaltkreise sind Fachleuten auf dem Gebiet der Hochgeschwindigkeits-Interconnecttechnik wohlbekannt und es werden hier keine weiteren Einzelheiten gezeigt oder besprochen.
  • Jeder Retimer 204 und 206 kann einen Upstream-Pfad und einen Downstream-Pfad aufweisen. Bei einigen Implementierungen kann ein Retimer zwei Pseudoports umfassen, und die Pseudoports können ihre jeweilige Downstream/Upstream-Orientierung dynamisch bestimmen. Ferner können die Retimer 204 und 206 Betriebsmodi unterstützen, die einen Weiterleitungsmodus und einen Ausführungsmodus umfassen. In einigen Fällen können die Retimer 204 und 206 Daten decodieren, die auf der Subverbindung empfangen werden, und die Daten umcodieren, die er downstream auf seiner anderen Subverbindung weiterleiten soll. Dementsprechend können Retimer den empfangenen Bitstrom vor dem Regenerieren und Neuübertragen des Bitstroms zu einer anderen Vorrichtung oder sogar einem anderen Retimer (oder Retreiber oder Repeater) erfassen. In einigen Fällen kann der Retimer einige Werte in den Daten, die er empfängt, modifizieren, wie etwa beim Verarbeiten und Weiterleiten von Geordnete-Menge-Daten. Außerdem kann ein Retimer potentiell eine beliebige Breitenoption als seine Maximalbreite unterstützen, wie etwa eine Menge von Breitenoptionen, die durch eine Spezifikation wie PCIe definiert werden.
  • Mit zunehmenden Datenraten serieller Interconnects (z.B. PCIe, UPI, USB, usw.) werden zunehmend Retimer zur Erweiterung der Kanalreichweite verwendet. Für noch längere Kanalreichweite können mehrere Retimer kaskadiert werden. Es wird erwartet, dass mit zunehmenden Signalgeschwindigkeiten die Kanalreichweite typischerweise im Allgemeinen abnehmen wird. Mit sich beschleunigenden Interconnect-Technologien kann dementsprechend die Verwendung von Retimern zunehmen. Beispielsweise kann, wenn PCIe Gen-4 mit seinen 16 GT/s zugunsten von PCIe Gen-3 (8 GT/s) verwendet wird, die Verwendung von Retimern in PCIe-Interconnects zunehmen, sowie es bei anderen Interconnects mit zunehmenden Geschwindigkeiten der Fall sein kann.
  • Bei einer Implementierung kann ein gemeinsamer Bildgebungsabschnitt-Footprint (Ball Grid Array) für auf PCI Express Gen-4 (16 GT/s) basierende Retimer definiert werden. Ein solcher Entwurf kann mindestens einen Teil der in herkömmlichen Retimervorrichtungen des Typs PCIe Gen-3 (8 GT/s) angetroffenen beispielhaften Unzulänglichkeiten angehen, sowie auch einige der Probleme, die mit der Verwendung von PCIe Gen-4 auftreten. Ferner wird erwartet, dass für PCIe Gen-4 die Anzahl der Retimer-Vertreiber und das Volumen zunimmt. Aufgrund von Signalverlusten aus der verdoppelten Datenrate (von 8 GT/s auf 16 GT/s) ist die erzielbare Interconnect-Länge bei Gen-4 signifikant vermindert. In diesen und anderen beispielhaften Interconnect-Technologien können mit zunehmender Datenrate Retimer dadurch erhöhten Nutzen aufweisen, da man mit ihnen Kanallängen, die ansonsten durch die vergrößerte Datenrate eingeschränkt wären, drastisch vergrößern kann.
  • Obwohl er von der Upstream-Komponente und Downstream-Komponente getrennt gezeigt ist, kann der Retimer Teil der Upstream- oder Downstream-Komponente, auf der Platine mit der Upstream- oder Downstream-Komponente oder auf der Kapselung mit der Downstream-Komponente sein.
  • Der Upstream-Komponenten-Downstream-Port 202 kann Zugriff auf ein Speicherungselement 222 aufweisen, wie etwa eine Flash-Speicherung, Cache oder eine andere Speichervorrichtung. Der Retimerl 204 kann gegebenenfalls ein ähnliches Speicherungselement 224 umfassen. Der Retimer2 206 kann gegebenenfalls ein ähnliches Speicherungselement 226 umfassen. Der Downstream-Komponenten-Upstream-Port 208 kann gegebenenfalls ein ähnliches Speicherungselement 228 umfassen.
  • 2B ist eine schematische Darstellung eines verbundenen Systems 250, das Inband-Upstream-Port- und Retimer-Konfiguration veranschaulicht, gemäß Ausführungsformen der vorliegenden Offenbarung. Wie in 2A gezeigt, kann ein Upstream-Komponenten-Downstream-Port 202 durch eine Verbindung 210a-c, die durch zwei Retimer 204, 206 verlängert wird, mit dem Downstream-Komponenten-Upstream-Port 208 gekoppelt sein. In diesem Beispiel kann der Downstream-Port 202 mit einem Retimerkonfigurationsregister Adressen/Datenregister 252 zum Halten von in einem Konfigurationszugriffsbefehl zu einem der zwei Retimer unter Verwendung von Feldern eines erweiterten SKP-OS zu sendenden Daten versehen sein. Ein oder mehrere Bit des SKP-OS können einen Befehlscode, Daten oder eine Adresse zur Verwendung in einem Konfigurationsregister (z.B. 256, 258) eines Retimers (jeweils z.B. 204, 206) zum Lesen oder Schreiben von Daten von/zu den Registern 256, 258 umfassen. Retimer können auf Konfigurationszugriffsbefehle reagieren, die gesendet werden, indem Daten in einer Instanz eines erweiterten SKP-OS codiert werden, die für sich Antwortdaten in einer nachfolgenden Instanz eines erweiterten SKP-OS codiert. Durch den Retimer (z.B. 204, 206) codierte Daten können an dem Downstream-Port extrahiert und in einem Retimer-Konfigurationsdaten-Rückgaberegister (z.B. 254) aufgezeichnet werden. Die an dem Upstream-Vorrichtungs-Downstream-Port 202 unterhaltenen Register (z.B. 252, 254) können durch Systemsoftware und/oder andere Komponenten des Systems beschrieben und gelesen werden, wodurch (indirekter) Zugriff auf die Retimerregister erlaubt wird: Ein Register (z.B. 252), das Adresse/Daten/Befehl zum Retimer übermittelt, und ein zweites Register (z.B. 254), das die von dem Retimer zurückkommenden Antworten speichert. Bei anderen Implementierungen können solche Register (z.B. 260) statt oder zusätzlich zu Unterhalten der Register an dem Upstream-Komponenten-Downstream-Port 202 neben anderen Beispielen an dem Downstream-Komponenten-Upstream-Port 208 unterhalten werden.
  • Unter weiterer Bezugnahme auf das Beispiel von 2B kann in Verbindung mit einem Mechanismus zur Bereitstellung von Inbandzugriff auf Retimerregister der Retimer architekturierte Register aufweisen, die mit wohldefinierten Bit und Eigenschaften adressierbar sind. In diesem Beispiel ist ein erweitertes SKP-OS als das bitübertragungsschichterzeugte periodische Muster zum Führen der Befehle/Informationen von „Retimer Config Reg Addr/Data“ (z.B. 252) zu den Retimern und Führen der Antworten von den Retimern zurück zum Laden zu „Retimer Config Data Return“ (z.B. 840) definiert/modifiziert, wobei einige Bit für CRC zum Schutz der Daten zugeteilt sind. In PCIe kann dies zum Beispiel Erweitern der existierenden geordneten SKP-Menge (z.B. mit CRS-Zugriff und CSR-Rückgabe (CRC-geschützte Bit)) umfassen. Ferner kann ein Fluss zum Sicherstellen garantierter Ablieferung der Befehle/Informationen an Retimer und der entsprechenden Antwort zurück definiert werden. Der Bitübertragungsschichtmechanismus kann erweitert werden, um auch Benachrichtigungen vom Retimer (zusätzlich zur Antwort) zu umfassen, wenn er eine gewisse Art von Dienst benötigt, neben anderen beispielhaften Merkmalen.
  • 3 ist eine schematische Darstellung einer beispielhaften Fähigkeitsregister-Konfigurationsdatenstruktur 300 gemäß Ausführungsformen der vorliegenden Offenbarung. Die Fähigkeitsregister-Konfigurationsdatenstruktur 300 kann verwendet werden, um TX/RX-Konfigurationsregister für Upstream- und Downstream-Ports sowie für Retimer zu konfigurieren. Die Upstream- und Downstream-Ports und Retimer können die Datenstruktur parsen, um Registereinstellungen für verschiedene Konfigurationsparameter zu setzen, darunter Registereinstellungen, die es einem Port oder Retimer erlauben, Parallel-FEC gemäß Ausführungsformen der vorliegenden Offenbarung zu konfigurieren, anzuwenden und/oder zu verwenden. Zum Beispiel können Retimer die Bit ohne Prüfung und Korrektur für Bitfehler zur Latenzoptimierung weiterleiten oder die FEC abhängig von der Weise durchführen, wie der Downstream-Port sie zum Durchführen während des anfänglichen Verbindungstrainings auf der Basis der Plattformanforderungen dazu instruieren.
  • 4A-4B sind schematische Darstellungen von Bit des Fehlerkorrekturcodes (ECC), organisiert über jede Spur einer mehrspurigen Verbindung, gemäß Ausführungsformen der vorliegenden Offenbarung. Der in dem Beispiel von 4A verwendete FEC-Code ist 32 ECC-Bit, die 2048 Informationsbit abdecken, als effektiv ein (2080, 2048)-Code, wie etwa ein RS-Code (Reed-Solomon) oder ein anderer BCH-Code (Bose-Chaudhuri-Hocquenghem) mit den gewünschten Fehlerkorrektureigenschaften, um die effektive BER pro Spur auf die gewünschten Werte zu bekommen. Das ECC-Decodieren kann nach der Entversetzung von Spur zu Spur durchgeführt werden.
  • 4A zeigt über eine x16-Verbindung 404 verteilte Datenblöcke 400. 4A zeigt außerdem, dass die ECC-Bit 402 über jede Spur L0-L15 der x16-Verbindung 404 verteilt sein können. Bei der x16-Verbindung 404 sind die ECC-Bit 402 über alle Datenblöcke 400 als 2 Bit pro Leitung nach jedem Datenblock verteilt, wodurch effektiv jeder Datenblock zu einem 130-Bit-Superblock pro Leitung wird.
  • 4B zeigt über eine x8-Verbindung 454 verteilte Datenblöcke 350. Eine 2 x8-Verbindung 454 umfasst über 2 x8 Spuren organisierte Datenblöcke 450. Die Größe jedes Datenblocks verdoppelt sich. ECC-Bit 452 können am Ende jedes Datenblocks 450 angeordnet werden, verteilt über jede Spur der 2 x8-Verbindung 454 als 4 Bit pro Spur, wodurch jeder Datenblock zu einem 260-Bit-Superblock pro Leitung wird. Ähnlich wird eine x4-Verbindung die ECC über 520 Bit und ein x1 über 2080 Bit aufweisen. Das Latenzoverhead ist somit bei der breitesten Verbindung am geringsten, die tendenziell am latenzempfindlichsten ist. In 4B sind zwei Datenblöcke in einer einzigen Datentransaktion (z.B. über die x8-Spur-Verbindung) zu senden (oder zu empfangen). Der Fehlerkorrekturcode wird nach dem zweiten (oder letzten) Datenblock (DB1) für die Datentransaktion hinzugefügt.
  • FEC ist wie über die gesamte Verbindung anwendbar, einschließlich etwaiger Retimer. Zur Latenzoptimierung wird erwartet, dass Retimer keine Fehlerkorrektur Inline durchführen. Das ECC-Codewort wird über alle Spuren gestript, um die Latenz zu verringern.
  • 5A ist ein Prozessflussdiagramm 500 zum Ergänzen von abgehenden Datenblöcken mit Vorwärtsfehlerkorrektur gemäß Ausführungsformen der vorliegenden Offenbarung. Es wird angenommen, dass parallele (oder verbindungsweite) FEC durch Ports und (etwaige) Retimer, die Teil des verbundenen Systems sind, freigegeben ist. Zu Anfang werden zur Berechnung und Verteilung von FEC-Bit verwendete Werte initialisiert (502). Zum Beispiel wird ein FEC_Bits repräsentierendes Bit auf 0 initialisiert. Die FEC_Bits-Initialisierung setzt die FEC-Bitberechnung für jede abgehende Symbolmenge zurück, da FEC-Bit über jede Spur des Datenblocks verteilt werden. Das Register No_Symbols_Sent wird auch auf 0 gesetzt. Die No_Symbols_Sent-Wertinitialisierung verfolgt den Start und das Ende von Datenströmen für einheitliche FEC-Anwendung über einen Datenstrom oder zwischen zwei Datenströmen.
  • Es können abgehende Symbole bestimmt werden (504). Das heißt, der Port, der Symbole senden soll, kann Symbole für abgehende Übertragung empfangen oder erzeugen. Wenn bestimmt wird, dass die abgehende Übertragung keine Symbole umfasst, die Teil eines Datenblocks sind (506), kann der Port die Symbole als Teil eines OS-Blocks (508) verarbeiten, und der Port kann FEC_Bits und No_Symbols_Sent (502) reinitialisieren.
  • Wenn die abgehenden Symbole Teil eines Datenblocks sind (506), kann der Port auf der Basis der Positionen abgehender Symbole in dem FEC-Code über alle Spuren der Verbindung hinweg, die der Port zum Senden des abgehenden Verkehrs verwenden wird, teilweise FEC-Bit berechnen (510). Die teilweisen FEC-Bit werden auf der Basis der Größe des Datenblocks und der Anzahl der Spuren zur Übertragung bestimmt. Die FEC-Bit können gleichmäßig am Ende des Datenstroms verteilt werden; bei einem 32-Bit-ECC können die teilweisen FEC-Bit gleich 32/Anzahl der Spuren sein. Die FEC_Bits können auf der Basis der berechneten teilweisen FEC-Werte aktualisiert werden (512); und der No_Symbols_Sent-Wert kann durch Summieren eines anfänglichen oder vorherigen Werts mit der Anzahl abgehender Symbole aktualisiert werden (514). Nachdem die Anzahl gesendeter Symbole gleich der Anzahl von FEC-Codeinformationssymbolen ist (516), kann der Port die FEC_Bits als Teil des Datenblocks über die Spuren senden (518). Wenn die Anzahl gesendeter Symbole noch nicht die Anzahl der FEC-Codeinformationssymbole erreicht hat (514), kann der Port wieder bestimmen, ob die abgehenden Symbole zur Übertragung Teil eines Datenblocks sind (506), und der Prozess kann dann mit aktualisierten Werten für FEC_Bits und No_Symbols_Sent fortgesetzt werden.
  • 5B ist ein Prozessflussdiagramm 550 zum Empfangen von Datenblöcken mit Vorwärtsfehlerkorrektur gemäß Ausführungsformen der vorliegenden Offenbarung. Es wird angenommen, dass parallele (oder verbindungsweite) FEC freigegeben ist. Zu Anfang werden zur Berechnung und Verteilung von FEC-Bit verwendete Werte initialisiert (552). Zum Beispiel wird ein FEC_Bits repräsentierendes Bit auf 0 initialisiert. Die FEC-Bits-Initialisierung setzt die FEC-Bitberechnung für jede abgehende Symbolmenge zurück, da FEC-Bit über jede Spur des Datenblocks verteilt werden. Außerdem wird das No_Symbols_Rcvd-Register auf 9 gesetzt. Die No_Symbols_Rcvd-Wertinitialisierung verfolgt den Start und das Ende von Datenströmen für einheitliche FEC-Anwendung über einen Datenstrom oder zwischen zwei Datenströmen.
  • Symbole können durch den Port empfangen werden (554). Wenn bestimmt wird, dass die ankommende Übertragung keine Symbole umfasst, die Teil eines Datenblocks sind (556), kann der Port die Symbole als Teil eines OS-Blocks verarbeiten (508), und der Port kann FEC_Bits und No_Symbols_Rcvd reinitialisieren (552).
  • Wenn die ankommenden Symbole Teil eines Datenblocks sind (556), dann kann der Port auf der Basis der Positionen ankommender Symbole in dem FEC-Code über alle Spuren der Verbindung, die der Port zum Empfangen des Verkehrs verwendet, teilweise FEC-Bit berechnen (560). Die teilweisen FEC-Bit werden auf der Basis der Größe des Datenblocks und der Anzahl der Spuren für die Verbindung bestimmt. Die FEC-Bit können gleichmäßig am Ende des Datenstroms verteilt werden; bei einem 32-Bit-ECC können die teilweisen FEC-Bit gleich 32/Anzahl der Spuren sein. FEC_Bits kann dann auf der Basis der berechneten teilweisen FEC-Werte aktualisiert werden (562); und der No_Symbols_Rcvd-Wert kann durch Summieren eines anfänglichen oder vorherigen Werts mit der Anzahl ankommender Symbole aktualisiert werden (564). Nachdem die Anzahl empfangener Symbole gleich der Anzahl der FEC-Codeinformationssymbole ist (566), kann der Port FEC_Bits mit dem empfangenen FEC_Bits vergleichen und einen Syndromvektor zur Bestimmung von Paritäts-Fehlern zwischen den zwei Mengen von Bit berechnen (568). Der Port kann unter Verwendung des mit dem Datenblock empfangenen ECC Fehler in den empfangenen Datensymbolen korrigieren (570). Der Port kann auch unkorrigierbare Fehler angeben. In jedem Fall werden Fehler protokolliert. Der Port kann dann die empfangenen Datensymbole nach der Korrektur verarbeiten und kann Behebungsmaßnahmen für unkorrigierbare Fehler einleiten (572).
  • Wenn die Anzahl empfangener Symbole noch nicht die Anzahl der FEC-Codeinformationssymbole erreicht hat (566), kann der Port wieder bestimmen, ob die abgehenden Symbole für Übertragung Teil eines Datenblocks sind (556), und der Prozess kann mit aktualisierten Werten für FEC_Bits und No_Symbols_Rcvd fortgesetzt werden.
  • Aspekte der Ausführungsformen können auch die Entfernung von Sync-HDR-Bit zur Minderung des Bandbreitenverlusts aufgrund von FEC mit entsprechenden Regeländerungen für den Übergang von Datenblock zugeordneter Menge umfassen. Entfernung des Sync-HDR-Bit kann es der Verbindung erlauben, 1,5% Bandbreitenverlust zu regenerieren.
  • Während eines Datenstroms wird nach einem festen Intervall eine geordnete Menge (OS) gesendet. Zum Beispiel kann alle 375 Blöcke eine SKiP-OS (SKP-OS) ohne unabhängige Spreizspektrumtaktung mit getrenntem Referenztakt (SRIS) gesendet werden und alle 37 Blöcke mit SRIS. Daraus folgt, dass ein TLP (Transaction Layer Packet) oder DLLP (Data Link Layer Packet) zwei durch eine SKP-OS getrennte Datenblöcke überspannen kann. Dieses Überspannen hilft den Retimern dabei, den Ort der SKP-OS zum Ausführen ihrer Taktkompensationsfunktion herauszufinden. Wenn ein Port EIOS elektrischen Leerlaufs (zum Eintritt in einen Verbindungs-Power-Management-Zustand) oder eine EIEOS (zum Eintritt in den Wiederherstellungszustand) senden möchte, müssen die EIOS oder EIEOS in dieser Grenze auftreten.
  • Eine SKP-OS nach Datenblöcken im spezifizierten Intervall (z.B. nach 375 Datenblöcken) gibt an, dass der Datenstrom nach der SKP-OS fortgesetzt wird.
  • Eine EIOS nach Datenblöcken im spezifizierten Intervall gibt das Ende des Datenstroms an, und die Verbindung tritt in elektrischen Leerlauf (EI) ein. Etwaige Taktkompensation muss während der Zeit, in der sich die Verbindung im EI-Zustand befindet, berücksichtigt werden.
  • Eine EIEOS nach Datenblöcken im spezifizierten Intervall gibt das Ende des Datenstroms an, und die Verbindung tritt in den Wiederherstellungszustand ein. Eine SKP-OS muss der EIEOS zur Taktkompensation folgen.
  • Geordnete Mengen werden auch ohne den Sync HDR gesendet. Die geordnete SDS-Menge wird (ohne den Sync HDR) zur Angabe des Starts eines Datenstroms verwendet.
  • Das System und die Techniken, die oben zur Verteilung von ECC-Bit über Spuren geschrieben wurden, können bei Anwesenheit von Bit des Sync Header (HDR) funktionieren. In diesem Fall werden die Sync-HDR-Bit mittels der Markierungspakete geschützt, die in PCIe existieren, und müssen nicht durch den FEC-Code abgedeckt werden. Ein solches Schutzschema für Sync HDR und geordnete Mengen wird nachfolgend beschrieben:
  • Geordnete Mengen wie die geordnete Skip-Menge (SKP) können nicht durch FEC abgedeckt werden, da sich die Anzahl der SKP-Symbole zwischen den Sendeport und dem Empfangsport aufgrund von Taktkompensationsjustierung ändern kann. Es ist jedoch wichtig, dass ein alternativer Schutzmechanismus für die geordnete SKP-Menge anwesend ist, da etwaige Fehler dort mögliche Datenverfälschungsprobleme verursachen können. Eine geordnete SKP-Menge umfasst 4 bis 20 SKP, gefolgt von einem SKP_END (oder SKP_END_CTL), gefolgt von 3 Symbolen. Die geordnete SKP-Menge sollte (wie in der nachfolgenden Tabelle gezeigt) modifiziert werden, so dass der Port 10 SKP sendet, gefolgt von 3 SKP_END (oder SKP_END_CTL), gefolgt von den 3 Symbolen. Ein Port kann ein SKP annehmen, solange er mindestens 2 SKP oder SKP_END (oder SKP_END_CTL) in den ersten vier Symbolen sieht und das SKP_END (oder SKP_END_CTL) annimmt, solange er mindestens ein SKP_END (oder SKP_END_CTL) in den letzten zwei Symbolen des vorherigen 4-Symbol-Blocks oder dem ersten Symbol eines 4-Symbol-Blocks sieht. Jeder Retimer entfernt das SKP-Symbol vom Start des Blocks, so dass mindestens 3 SKP_END (oder SKP_END_CTL) für Ablieferung an den USP/DSP eingeteilt sind.
  • Eine geordnete EIOS-Mengensequenz sollte 3 aufeinanderfolgende EIOS sein, so dass selbst bei Anwesenheit von Fehlern mindestens eine abgeliefert wird.
  • Eine geordnete SDS-Menge kann modifiziert werden, so dass sie die ersten vier Symbole als E1h und die übrigen 12 Symbole als 55h aufweist (im Gegensatz zu dem ersten Symbol als E1h und den folgenden 15 Symbolen als 55h). Eine geordnete SDS-Menge muss angenommen werden, solange mindestens ein E1h in einer 4-Symbol-Grenze empfangen wird und der Rest der Symbole im Block mindestens 8 aufeinanderfolgende 55h-Symbole aufweist.
  • Die geordneten TS1/TS2-Mengen müssen nicht durch ein Fehlerschutzschema abgedeckt werden, da sie periodisch gesendet werden, wobei das Senden von 16 übertragenen Mengen der geordneten TS2-Menge auf 24 vergrößert wird. Man kann potentiell die geordneten TS1/TS2-Mengen und die geordnete SDS-Menge mit einem ECC (entweder verwürfelt oder nicht) abdecken, mit einer Anforderung, dass das SDS auf den N-ten Block gelegt wird. FTS muss nicht ECC-geschützt werden, da es zum Trainieren verwendet wird. Man kann drei EIEOS (statt einer) senden, gefolgt von SDS, um mit etwaigen Fehlern auf der EIEOS umzugehen, während der oben beschriebene SDS-Schutzmechanismus verwendet wird. Tabelle 1 gibt eine Beschreibung für die Symbolnummern für bestimmte geordnete SKP-Mengen. Tabelle 1. Teilweise geordnete Mengensymbolnummer und Wertbeschreibungen
    Symbolnumber Wert Beschreibung
    0 bis (4*N - 3) AAh SKP-Symbol.
    [N kann 1 bis 5 sein] Symbol 0 ist die Kennung der geordneten SKP-Menge.
    4*N-2, 4*N-2, 4*N E1h oder 78h SKP_END- oder SKP_END_CTL-Symbol (abhängig von geordneter Standard- oder Kontroll-SKP-Menge)
    Bedeutet das Ende der geordneten SKP-Menge nach drei weiteren Symbolen.
    4*N + 1, 4*N+2, 4*N+3 00-FFh Vers. Dinge wie Err_cnt, LFSR oder reservebezogener Befehl/Status, abhängig vom Typ der geordneten SKP-Menge und LTSSM-Zustand
  • In einigen Fällen kann Fehlerkorrelation über Spuren hinweg (z.B. Übersprechen oder Stromversorgungsrauschen) die effektive BER mit FEC verringern. Es wird jedoch erwartet, dass das Übersprechen für Differenz-Verbindungen gering ist, und es wird erwartet, dass es Teil des Jitterbudget ist. Es wird erwartet, dass die Stromversorgungsrauscheffekte gering und Teil des Jitterbudgets mit gestaffelter Freigabe/Sperrung von Spuren bei Verbindungs-Up/Down-Übergängen sind. Die hier beschriebene parallele FEC kann während des anfänglichen Verbindungstrainings auf der Basis der Plattformanforderungen vom Downstream-Port aus freigegeben werden. Bei Nichtfreigabe kann eine Vorgabe eine spurweise FEC sein, wobei Abhängigkeit von Spur zu Spur vermieden, aber die Latenzkosten bezahlt werden. In diesem Fall können die Regeln um Sync HDR-Entfernung immer noch zur Wiederherstellung des Bandbreitenverlusts angewandt werden.
  • Obwohl die Offenbarung im Kontext von PCIe Gen 6 beschrieben wird, ist für Fachleute erkennbar, dass die Konzepte auf andere Interconnects (wie etwa zukünftige Generationen von mehrspurigen Verbindungen wie Kohärenz-/Speicherverbindungen, USB usw.) anwendbar sind, wenn FEC verwendet wird.
  • Eine Interconnect-Fabric-Architektur umfasst die Architektur Peripheral Component Interconnect (PCI) Express (PCIe). Ein Hauptziel von PCIe ist es, Komponenten und Vorrichtungen von verschiedenen Vertreibern zu ermöglichen, in einer offenen Architektur zusammenzuarbeiten, die mehrere Marktsegmente; Clients (Desktops und Mobil), Server (Standard und Unternehmen) und eingebettete und Kommunikationsvorrichtungen überspannt. PCI Express ist ein hochleistungsfähiges Vielzweck-E/A-Interconnect, das für vielfältige zukünftige Verarbeitungs- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie etwa sein Benutzungsmodell, seine Lade-Speicher-Architektur und Softwareschnittstellen, wurden mittels seiner Revisionen aufrechterhalten, während vorherige Parallel-Busimplementierungen durch eine hochskalierbare voll serielle Schnittstelle ersetzt wurden. Die neuesten Versionen von PCI Express nutzen Fortschritte in Punkt-zu-Punkt-Interconnects, Technologie auf Switch-Basis und dem paketierten Protokoll aus, um neue Grade an Leistungsfähigkeit und Merkmalen zu liefern. Power Management, Dienstgüte (QS), Unterstützung für Hot-Plug/Hot-Swap, Datenintegrität und Fehlerhandhabung zählen zu den fortschrittlichen Merkmalen, die von PCI Express unterstützt werden.
  • Mit Bezug auf 6 ist eine Ausführungsform eines Fabric dargestellt, das aus Punkt-zu-Punkt-Verbindungen zusammengesetzt ist, die eine Menge von Komponenten miteinander verbinden. Das System 600 umfasst einen Prozessor 605 und Systemspeicher 610, gekoppelt mit dem Controller-Hub 615. Der Prozessor 605 umfasst ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 605 ist mittels eines FSB (Front-Side Bus) 606 mit dem Controller-Hub 615 gekoppelt. Bei einer Ausführungsform ist der FSB 606 ein serielles Punkt-zu-Punkt-Interconnect wie nachfolgend beschrieben. Bei einer anderen Ausführungsform umfasst die Verbindung 606 eine serielle, Differenz-Interconnect-Architektur, die einen anderen Interconnect-Standard einhält.
  • Der Systemspeicher 610 umfasst eine beliebige Speichervorrichtung, wie etwa Direktzugriffsspeicher (RAM), nichtflüchtigen Speicher (NV) oder anderer Speicher, der Vorrichtungen in dem System 600 zugänglich ist. Der Systemspeicher 610 ist mittels der Speicherschnittstelle 616 mit dem Controller-Hub 615 gekoppelt. Beispiele für eine Speicherschnittstelle wären eine DDR-Speicherschnittstelle (Doppel-Datenrate), eine Zweikanal-DDR-Speicherschnittstelle und eine dynamische RAM- bzw. DRAM-Speicherschnittstelle.
  • Bei einer Ausführungsform ist der Controller-Hub 615 ein Wurzel-Hub, Wurzelkomplex oder Wurzel-Controller in einer Verbindungshierarchie von Peripheral Component Interconnect Express (PCIe oder PCIE). Beispiele für den Controller-Hub 615 wären ein Chipsatz, ein Speichercontroller-Hub (MCH), eine Northbridge, ein Interconnect-Controller-Hub (ICH), eine Southbridge und ein Wurzelportcontroller/-Hub. Der Ausdruck Chipsatz bezieht sich oft auf zwei physisch getrennte Controller-Hubs, d.h. einen Speichercontroller-Hub (MCH), gekoppelt mit einem Interconnect-Controller-Hub (ICH). Man beachte, dass aktuelle Systeme oft den MCH mit dem Prozessor 605 integriert umfassen, während der Controller 615 mit E/A-Vorrichtungen kommunizieren soll, auf ähnliche Weise, wie nachfolgend beschrieben. Bei einigen Ausführungsformen wird gegebenenfalls mittels des Wurzelkomplexes 615 Peer-to-Peer-Routing unterstützt.
  • Der Controller-Hub 614 ist hier mittels einer seriellen Verbindung 619 mit dem Switch/der Bridge 620 gekoppelt. Eingabe-/Ausgabemodule 617 und 621, die auch als Schnittstellen/Ports 617 und 621 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel zur Bereitstellung von Kommunikation zwischen dem Controller-Hub 615 und dem Switch 620. Bei einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 620 gekoppelt werden.
  • Der Switch/die Brücke 620 routet Pakete/Nachrichten von der Vorrichtung 625 upstream, d.h. eine Hierarchie hinauf in Richtung eines Wurzelkomplexes zu dem Controller-Hub 615, und downstream, d.h. eine Hierarchie von dem Wurzelport-Controller weg nach unten von dem Prozessor 605 oder dem Systemspeicher 610 zu der Vorrichtung 625. Der Switch 620 wird bei einer Ausführungsform als logische Baugruppe von mehreren virtuellen Brückenvorrichtungen von PCI zu PCI bezeichnet. Die Vorrichtung 625 umfasst jede interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie etwa eine E/A-Vorrichtung, eine Netzwerkschnittstellensteuerung (NIC), eine Zusatzkarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speicherungsvorrichtung, eine CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speicherungsvorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabevorrichtungen. In der Umgangssprache von PCIe wird eine solche Vorrichtung oft als Endpunkt bezeichnet. Obwohl es nicht speziell gezeigt ist, kann die Vorrichtung 625 eine Brücke von PCIe zu PCI/PCI-X zur Unterstützung von veralteten oder PCI-Vorrichtungen anderer Versionen umfassen. Endpunktvorrichtungen in PCIe werden oft als veraltete, PCIe oder integrierte Wurzelkomplex-Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 630 ist auch mittels einer seriellen Verbindung 632 mit dem Controller-Hub 615 gekoppelt. Bei einer Ausführungsform ist der Grafikbeschleuniger 630 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 620 und dementsprechend die E/A-Vorrichtung 625 ist dann mit dem ICH gekoppelt. Die E/A-Module 631 und 618 sollen auch einen geschichteten Protokollstapel zur Kommunikation zwischen dem Grafikbeschleuniger 620 und dem Controller-Hub 615 implementieren. Ähnlich wie bei der obigen MCH-Besprechung können der Grafikcontroller oder der Grafikbeschleuniger 630 selbst in dem Prozessor 605 integriert sein.
  • Nunmehr mit Bezug auf 7 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 700 umfasst eine beliebige Form von geschichteten Kommunikationsstapel, wie etwa einen QPI-Stapel (Quick Path Interconnect), einen PCIe-Stapel, einen Hochleistungs-Datenverarbeitungs-Interconnect-Stapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl die unmittelbar nachfolgende Besprechung in Bezug auf 6-9 in Bezug auf einen PCIe-Stapel erfolgt, können dieselben Konzepte auf andere Interconnect-Stapel angewandt werden. Bei einer Ausführungsform ist der Protokollstapel 700 ein PCIe-Protokollstapel mit einer Transaktionsschicht 705, einer Sicherungsschicht 710 und einer Bitübertragungsschicht 720. Eine Schnittstelle, wie etwa die Schnittstellen 617, 618, 621, 622, 626 und 631 in 1, kann als Kommunikationsprotokollstapel 700 repräsentiert werden. Repräsentation als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das bzw. die einen Protokollstapel implementiert/umfasst.
  • PCI Express verwendet Pakete zur Übermittlung von Informationen zwischen Komponenten. Pakete werden in der Transaktionsschicht 705 und Sicherungsschicht 710 gebildet, um die Informationen von der sendenden Komponente zu der empfangenden Komponente zu führen. Während die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die notwendig sind, um mit Paketen in diesen Schichten umzugehen. Auf der empfangenden Seite erfolgt der umgekehrte Prozess und Pakete werden aus ihrer Repräsentation in der Bitübertragungsschicht 720 in die Repräsentation in der Sicherungsschicht 710 und letztendlich (für Transaktionsschichtpakete) in die Form transformiert, die durch die Transaktionsschicht 705 der empfangenden Vorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 705 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Interconnect-Architektur, wie etwa der Sicherungsschicht 710 und der Bitübertragungsschicht 720, bereitstellen. Eine Hauptverantwortlichkeit der Transaktionsschicht 705 ist die Zusammenstellung und das Auseinandernehmen von Paketen (d.h. Transaktionsschichtpaketen oder TLP). Die Transaktionsschicht 705 verwaltet typischerweise Flusssteuerung auf Kreditbasis für TLP. PCIe implementiert aufgeteilte Transaktionen, d.h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, wodurch eine Verbindung anderen Verkehr führen kann, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zusätzlich benutzt PCIe Flusssteuerung auf Kreditbasis. Bei diesem Schema kündigt eine Vorrichtung für jeden der Empfangspuffer in der Transaktionsschicht 705 eine anfängliche Menge an Kredit an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie etwa der Controller-Hub 115 in 1, zählt die Anzahl der von jedem TLP konsumierten Kredite. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Bei Empfang einer Antwort wird eine Menge an Kredit wiederhergestellt. Ein Vorteil eines Kreditschemas ist, dass die Latenz von Kreditrückgabe die Leistungsfähigkeit nicht beeinträchtigt, solange die Kreditgrenze nicht erreicht wird.
  • Bei einer Ausführungsform umfassen vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, einen Eingabe-/Ausgabeadressenraum und einen Nachrichtenadressenraum. Speicherraumtransaktionen umfassen Leseanforderungen und/oder Schreibanforderungen zum Transfer von Daten zu/von einem speicherabgebildeten Ort. Bei einer Ausführungsform können Speicheradressenraumtransaktionen zwei verschiedene Adressenformate verwenden, z.B. ein kurzes Adressenformat wie etwa eine 32-Bit-Adresse oder ein langes Adressenformat, wie etwa eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden zum Zugriff auf den Konfigurationsraum der PCIe-Vorrichtungen verwenden. Transaktionen zum Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden zur Unterstützung von Inbandkommunikation zwischen PCIe-Agenten definiert.
  • Deshalb stellt bei einer Ausführungsform die Transaktionsschicht 705 Paketheader/Nutzinformationen 706 zusammen. Das Format für aktuelle Paketheader/Nutzinformationen kann in der PCIe-Spezifikation auf der PCIe-Spezifikationswebsite gefunden werden.
  • Unter rascher Bezugnahme auf 8 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. Bei einer Ausführungsform ist der Transaktionsdeskriptor 800 ein Mechanismus zum Führen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 800 Identifikation von Transaktionen in einem System. Andere potentielle Verwendungen wären das Verfolgen von Modifikationen von Vorgabetransaktionsanordnung und Assoziation von Transaktion mit Kanälen.
  • Der Transaktionsdeskriptor 800 umfasst ein Globalkennungsfeld 802, Attributefeld 804 und Kanalkennungsfeld 806. In dem dargestellten Beispiel ist das Globalkennungsfeld 802 als ein Lokal-Transaktionskennungsfeld 808 und Quellen-Kennungsfeld 810 umfassend abgebildet. Bei einer Ausführungsform ist die Global-Transaktionskennung 802 für alle ausstehenden Anforderungen einzigartig.
  • Gemäß einer Implementierung ist das Lokal-Transaktionskennungsfeld 808 ein durch einen anfordernden Agenten erzeugtes Feld und ist für alle ausstehenden Anforderungen, die einen Abschluss für diesen anfordernden Agenten erfordern, einzigartig. Ferner identifiziert in diesem Beispiel die Quellenkennung 810 eindeutig den Anfordereragenten in einer PCIe-Hierarchie. Zusammen mit der Quellen-ID 810 stellt das Lokal-Transaktionskennungsfeld 808 dementsprechend globale Identifikation einer Transkation in einer Hierarchiedomäne bereit.
  • Das Attributefeld 804 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributefeld 804 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die Modifikation der Vorgabehandhabung von Transaktionen erlauben. Bei einer Ausführungsform umfasst das Attributefeld 804 ein Prioritätsfeld 812, Reserviert-Feld 814, Anordnungsfeld 816 und No-Snoop-Feld 818. Das Prioritäts-Subfeld 812 kann hier durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das Reserviert-Attributfeld 814 ist für zukünftige oder vom Vertreiber definierte Benutzung reserviert. Mögliche Benutzungsmodell, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des Reserviert-Attributfelds implementiert werden.
  • In diesem Beispiel wird das Anordnungsattributfeld 816 verwendet, um optionale Informationen zu liefern, die die Art von Anordnung vermitteln, die Vorgabeanordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Anordnungsattribut von „0“, dass Vorgabeanordnungsregeln gelten sollen, wobei ein Anordnungsattribut von „1“ gelockerte Anordnung bedeutet, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung weitergeben können und Leseabschlüsse Schreibvorgänge in derselben Richtung weitergeben können. Das Snoop-Attributfeld 818 wird benutzt, um zu bestimmen, ob Transaktionen gesnoopt werden. Wie gezeigt identifiziert das Kanal-ID-Feld 806 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Sicherungsschicht
  • Die Sicherungsschicht 710, die auch als Datensicherungsschicht 710 bezeichnet wird, dient als Zwischenstufe zwischen der Transaktionsschicht 705 und der Bitübertragungsschicht 720. Bei einer Ausführungsform besteht eine Verantwortlichkeit der Sicherungsschicht 710 in der Bereitstellung eines zuverlässigen Mechanismus zum Austausch von Transaktionsschichtpaketen (TLP) zwischen zwei Komponenten einer Verbindung. Eine Seite der Sicherungsschicht 710 nimmt durch die Transaktionsschicht 705 zusammengestellte TLP an, wendet die Paketsequenzkennung 711, d.h. eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlerdetektionscode, d.h. CRC 712, und wendet diesen an und reicht die modifizierten TLP zur Übertragung über eine physische zu einer externen Vorrichtung in die Bitübertragungsschicht 720 ein.
  • Bitübertragungsschicht
  • Bei einer Ausführungsform umfasst die Bitübertragungsschicht 720 einen logischen Subblock 721 und elektrischen Subblock 722 zum physischen Senden eines Pakets zu einer externen Vorrichtung. Der logische Subblock 721 ist hier für die „digitalen“ Funktionen der Bitübertragungsschicht 721 verantwortlich. In dieser Hinsicht umfasst der logische Subblock einen Sendeteil zum Vorbereiten von abgehenden Informationen für Übertragung durch den physischen Subblock 722 und einen Empfängerteil zum Identifizieren und Vorbereiten empfangener Informationen, bevor sie zu der Sicherungsschicht 710 weitergeleitet werden.
  • Der physische Block 722 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Subblock 721 mit Symbolen versorgt, die der Sender serialisiert und zu einer externen Vorrichtung weitersendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung versorgt und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird deserialisiert und dem logischen Subblock 721 zugeführt. Bei einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wobei 10-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 723 zu framen. Zusätzlich stellt der Empfänger in einem Beispiel auch einen aus dem ankommenden seriellen Strom wiederhergestellten Symboltakt bereit.
  • Obwohl die Transaktionsschicht 705, die Sicherungsschicht 710 und die Bitübertragungsschicht 720 in Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels besprochen werden, wie oben angegeben ist, ist ein geschichteter Protokollstapel nicht darauf beschränkt. Tatsächlich kann jedes geschichtete Protokoll enthalten sein/implementiert werden. Beispielsweise umfasst ein Port/eine Schnittstelle, der bzw. die als geschichtetes Protokoll repräsentiert wird, (1) eine erste Schicht zum Zusammenstellen von Paketen, d.h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d.h. eine Sicherungsschicht; und eine dritte Schicht zum Senden der Pakete, d.h. eine Bitübertragungsschicht. Als ein spezifisches Beispiel wird ein geschichtetes CSI-Protokoll (Common Standard Interface) benutzt.
  • Als Nächstes ist mit Bezug auf 9 eine Ausführungsform eines seriellen PCIe-Punkt-zu-Punkt-Fabric dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf beschränkt, da sie einen beliebigen Übertragungspfad zum Senden von seriellen Daten umfasst. Bei der gezeigten Ausführungsform umfasst eine einfache PCIe-Verbindung zwei differentiell angesteuerte Niederspannungs-Signalpaare: ein Sendepaar 906/911 und ein Empfangspaar 912/907. Dementsprechend umfasst die Vorrichtung 905 Sendelogik 906 zum Senden von Daten zu der Vorrichtung 910 und Empfangslogik 907 zum Empfangen von Daten von der Vorrichtung 910. Anders ausgedrückt sind zwei Sendepfade, d.h. die Pfade 916 und 917, und zwei Empfangspfade, d.h. die Pfade 918 und 919, in einer PCIe-Verbindung enthalten.
  • Ein Übertragungspfad bezieht sich auf einen beliebigen Pfad zum Senden von Daten, wie etwa eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Ein Anschluss zwischen zwei Vorrichtungen, wie etwa der Vorrichtung 905 und der Vorrichtung 910, wird als Verbindung, wie etwa Verbindung 915, bezeichnet. Eine Verbindung kann eine Spur unterstützen, wobei jede Spur eine Menge von Differenz-Signalpaaren repräsentiert (ein Paar für Sendung, ein Paar für Empfang). Zur Skalierung von Bandbreite kann eine Verbindung mehrere Spuren, bezeichnet durch xN, aggregieren, wobei N eine beliebige unterstützte Verbindungsbreite ist, wie etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzpaar bezieht sich auf zwei Übertragungspfade, wie etwa Leitungen 916 und 917, zum Senden von Differenzsignalen. Wenn beispielsweise die Leitung 916 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d.h. bei einer ansteigenden Flanke, steuert die Leitung 917 von einem hohen Logikpegel auf einen niedrigen Logikpegel, d.h. eine fallende Flanke. Differenzsignale zeigen potentiell bessere elektrische Eigenschaften, wie etwa bessere Signalintegrität, d.h. Kreuzkopplung, Spannungsüberschwingen/- unterschwingen, Klingeln usw. Dies erlaubt ein besseres Timingfenster, wodurch schnellere Übertragungsfrequenzen ermöglicht werden.
  • Man beachte, dass die oben beschriebenen Vorrichtungen, Verfahren und Systeme in einer beliebigen elektronischen Vorrichtung oder einem beliebigen System wie oben erwähnt implementiert werden können. Als spezifische Veranschaulichungen stellen die nachfolgenden Figuren beispielhafte Systeme zur Benutzung der Offenbarung wie hier beschrieben bereit. Während die nachfolgenden Systeme ausführlicher beschrieben werden, wird eine Anzahl verschiedener Interconnects offenbart, beschrieben und von der obigen Besprechung aus nochmals betrachtet. Und wie ohne Weiteres ersichtlich ist, können die oben beschriebenen Fortschritte auf beliebige dieser Interconnects, Fabrics oder Architekturen angewandt werden.
  • Nunmehr mit Bezug auf 10 ist eine Blockdarstellung eines beispielhaften Computersystems dargestellt, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen einer Anweisung umfasst, wobei eines oder mehrere der Interconnects eines oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Offenbarung implementieren. Das System 1000 umfasst eine Komponente, wie etwa einen Prozessor 1002, zur Verwendung von Ausführungseinheiten, die Logik zum Durchführen von Algorithmen zum Verarbeiten von Daten umfassen, gemäß der vorliegenden Offenbarung, wie etwa bei der hier beschriebenen Ausführungsform. Das System 1000 ist für Verarbeitungssysteme auf der Basis von PENTIUM-III™-, PENTIUM-4™-, Xeon™-, Itanium-, XScale™- und/oder StrongARM™-Mikroprozessoren, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, repräsentativ, obwohl andere Systeme (einschließlich PC mit anderen Mikroprozessoren, Engineering-Workstations, Digitalempfängern und dergleichen) ebenfalls verwendet werden können. In einer Ausführungsform führt das Probensystem 1400 eine Version des WINDOWS™-Betriebssystems, das von der Microsoft Operation in Redmond, Washington, erhältlich ist, aus, obwohl andere Betriebssysteme (beispielsweise UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen ebenfalls verwendet werden können. Somit sind Ausführungsformen der vorliegenden Offenbarung nicht auf eine spezifische Kombination von Hardwareschaltkreisen und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Geräten, wie tragbaren Geräten und eingebetteten Anwendungen, verwendet werden. Einige Beispiele von tragbaren Geräten beinhalten Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, Minicomputer (PDA) und tragbare PC. Eingebettete Anwendungen können einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System-on-a-Chip, Netzwerkcomputer (NetPC), Digitalempfänger, Netzwerk-Hubs, Fernnetz-Switches (WAN-Switches) oder ein beliebiges anderes System, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform durchführen kann, beinhalten.
  • In dieser dargestellten Ausführungsform beinhaltet der Prozessor 1402 eine oder mehrere Ausführungseinheiten 1408, um einen Algorithmus zu implementieren, d. h. mindestens eine Anweisung durchzuführen. Eine Ausführungsform kann im Kontext eines Einzelprozessor-Desktop- oder -Serversystems beschrieben werden, alternative Ausführungsformen können jedoch in ein Mehrprozessorsystem eingebunden sein. Das System 1000 ist ein Beispiel einer „Hub“-Systemarchitektur. Das Computersystem 1000 beinhaltet einen Prozessor 1002, um Datensignale zu verarbeiten. Der Prozessor 1002 beinhaltet als ein veranschaulichendes Beispiel einen Complex-Instruction-Set-Computer-Mikroprozessor (CISC-Mikroprozessor), einen Reduced-Instruction-Set-Computing-Mikroprozessor (RISC-Mikroprozessor), einen Very-Long-Instruction-Word-Mikroprozessor (VLIW-Mikroprozessor), einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder ein beliebiges anderes Prozessorgerät, wie beispielsweise einen Digitalsignalprozessor. Der Prozessor 1002 ist an einen Prozessorbus 1010 gekoppelt, der Datensignale zwischen dem Prozessor 1002 und anderen Komponenten in dem System 1000 überträgt. Die Elemente des Systems 1000 (z. B. ein Grafikbeschleuniger 1012, ein Speicher-Controller-Hub 1016, ein Speicher 1020, ein E/A-Controller-Hub 1024, ein drahtloser Transceiver 1026, ein Flash-BIOS 1028, ein Netzwerk-Controller 1034, ein Audio-Controller 1036, ein serieller Erweiterungsport 1038, ein E/A-Controller 1040 usw.) führen ihre herkömmlichen Funktionen durch, die Fachmännern wohl bekannt sind.
  • In einer Ausführungsform beinhaltet der Prozessor 1002 einen internen Level-1-Cache-Speicher (L1-Cache-Speicher) 1004. In Abhängigkeit von der Architektur kann der Prozessor 1002 einen einzigen internen Cache oder mehrere Level von internen Caches aufweisen. Andere Ausführungsformen beinhalten eine Kombination von sowohl internen als auch externen Caches in Abhängigkeit von der bestimmten Implementierung und den bestimmtem Bedarf. Eine Registerdatei 1006 ist zum Speichern von unterschiedlichen Datentypen in verschiedenen Registern, einschließlich Ganzzahlregistern, Gleitkommaregistern, Vektorregistern, Banked-Registern, Schattenregistern, Prüfpunktregistern, Statusregistern und Anweisungszeigerregistern.
  • Eine Ausführungseinheit 1008, die Logik beinhaltet, um Ganzzahl- und Gleitkomma-Arbeitsabläufe durchzuführen, befindet sich ebenfalls in dem Prozessor 1002. Der Prozessor 1002 beinhaltet in einer Ausführungsform einen Mikrocode-ROM (µ-Code-ROM), um Mikrocode zu speichern, der bei Ausführung zum Durchführen von Algorithmen für bestimmte Makroanweisungen oder Abwickeln von komplexen Szenarios ist. Hier ist der Mikrocode potentiell aktualisierbar, um Logik-Bugs/Fehlerbehebungen für den Prozessor 1002 handzuhaben. Für eine Ausführungsform beinhaltet die Ausführungseinheit 1008 Logik zum Handhaben eines verpackten Anweisungssatzes 1009. Durch Einbinden des verpackten Anweisungssatzes 1009 in dem Anweisungssatz eines Universalprozessors 1002 zusammen mit assoziierten Schaltkreisen zum Ausführen der Anweisungen können die von vielen Multimedia-Anwendungen verwendeten Arbeitsabläufe unter Verwendung von verpackten Daten in einem Universalprozessor 1002 durchgeführt werden. Somit werden viele Multimedia-Anwendungen durch Verwenden der vollen Breite eines Datenbusses eines Prozessors zum Durchführen von Arbeitsabläufen an verpackten Daten beschleunigt und effizienter ausgeführt. Dies eliminiert potentiell das Erfordernis eines Übertragens von kleineren Dateneinheiten über den Datenbus des Prozessors, um eine oder mehrere Arbeitsabläufe, jeweils ein Datenelement durchzuführen.
  • Alternative Ausführungsformen einer Ausführungseinheit 1008 können ebenfalls in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSP und anderen Typen von logischen Schaltungen verwendet werden. Das System 1000 beinhaltet einen Speicher 1020. Der Speicher 1020 beinhaltet ein dynamisches Direktzugriffsspeichergerät (DRAM-Gerät), ein statisches Direktzugriffsspeichergerät (SRAM-Gerät), ein Flash-Speichergerät oder ein anderes Speichergerät. Der Speicher 1020 speichert Anweisungen und/oder Daten, die durch Datensignale dargestellt sind, die von dem Prozessor 1002 ausgeführt werden sollen.
  • Man beachte, dass beliebige der oben erwähnten Merkmale oder Gesichtspunkte der Offenbarung an einem oder mehreren Interconnects genutzt werden können, die in 10 dargestellt sind. Ein On-Die-Interconnect (ODI), der nicht gezeigt ist, zum Koppeln von internen Einheiten des Prozessors 1002 implementiert beispielsweise einen oder mehrere Gesichtspunkte der oben beschriebenen Offenbarung. Oder die Offenbarung ist mit einem Prozessorbus 1010 (z. B. Intel Quick Path Interconnect (QPI) oder einem anderen bekannten Hochleistungsdatenverarbeitungsinterconnect), einem Speicherweg 1018 mit hoher Bandbreite zu dem Speicher 1020, einer Punkt-zu-Punkt-Datenstrecke zu dem Grafikbeschleuniger 1012 (z. B. eine mit Peripheral-Component-Interconnect-Express (PCIe) konforme Struktur), einem Controller-Hub-Interconnect 1022, einem E/A- oder anderen Interconnect (z. B. USB, PCI, PCIe) zum Koppeln der anderen dargestellten Komponenten assoziiert. Einige Beispiele derartiger Komponenten beinhalten den Audio-Controller 1036, den Firmware-Hub (Flash-BIOS) 1028, den drahtlosen Transceiver 1026, den Datenspeicher 1024, den Alt-E/A-Controller 1010, der Benutzereingabe- und Tastaturoberflächen 1042 enthält, einen seriellen Erweiterungsport 1038, wie einen Universal-Serial-Bus (USB), und einen Netzwerk-Controller 1034. Das Datenspeichergerät 1024 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen.
  • Nunmehr mit Bezug auf 11 ist eine Blockdarstellung eines zweiten Systems 1100 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie in 11 gezeigt, ist das Mehrprozessorsystem 1100 ein Punkt-zu-Punkt-Interconnect-System und umfasst einen ersten Prozessor 1170 und einen zweiten Prozessor 1180, die über ein Punkt-zu-Punkt-Interconnect 1150 gekoppelt sind. Die Prozessoren 1170 und 1180 können jeweils eine gewisse Version eines Prozessors sein. Bei einer Ausführungsform sind 1152 und 1154 Teil eines seriellen kohärenten Punkt-zu-Punkt-Interconnect-Fabric, wie etwa der QPI-Architektur (Quick Path Interconnect) von Intel. Folglich kann die Offenbarung innerhalb der QPI-Architektur implementiert werden.
  • Obwohl sie mit nur zwei Prozessoren 1170, 1180 gezeigt ist, versteht sich, dass der Schutzumfang der vorliegenden Offenbarung nicht darauf beschränkt ist. Bei anderen Ausführungsformen können in einem gegebenen Prozessor ein oder mehrere zusätzliche Prozessoren anwesend sein.
  • Die Prozessoren 1170 und 1180 sind mit integrierten Speichercontrollereinheiten 1172 bzw. 1182 gezeigt. Der Prozessor 1170 enthält als Teil seiner Buscontrollereinheiten auch Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1176 und 1178; in ähnlicher Weise enthält der zweite Prozessor 1180 P-P-Schnittstellen 1186 und 1188. Die Prozessoren 1170, 1180 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1150 unter Verwendung von P-P-Schnittstellenschaltungen 1178, 1188 austauschen. Wie es in 11 gezeigt ist, koppeln die IMCs 1172 und 1182 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1132 und einem Speicher 1134, die Teile des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angebunden sind.
  • Die Prozessoren 1170, 1180 tauschen jeweils Informationen mit einem Chipsatz 1190 über einzelne P-P-Schnittstellen 1152, 1154 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198 aus. Der Chipsatz 1190 tauscht auch Informationen mit einer Hochleistungs-Grafikschaltung 1138 über eine Schnittstellenschaltung 1192 entlang einer Hochleistungs-Grafikverbindung 1139 aus.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder in einem Prozessor enthalten sein oder sich außerhalb beider Prozessoren befinden, aber über eine P-P-Verbindung mit den Prozessoren verbunden sein, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
  • Der Chipsatz 1190 kann über eine Schnittstelle 1196 mit einem ersten Bus 1116 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1116 ein Peripheriekomponentenzwischenverbindungs-Bus (PCI-Bus) oder ein Bus wie etwa ein PCI Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie es in 11 gezeigt ist, sind verschiedene E/A-Vorrichtungen 1114 mit dem ersten Bus 1116 gekoppelt, zusammen mit einer Busbrücke 1118, die den ersten Bus 1116 mit einem zweiten Bus 1120 koppelt. In einer Ausführungsform umfasst der zweite Bus 1120 einen Bus mit niedriger Stiftzahl (LPC-Bus). Verschiedene Vorrichtungen sind in einer Ausführungsform mit dem zweiten Bus 1120 verbunden, einschließlich beispielsweise einer Tastatur und/oder Maus 1122, Kommunikationsvorrichtungen 1127 und einer Speichereinheit 1128 wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, die häufig Befehle/Code und Daten 1130 enthält. Ferner ist gezeigt, dass eine Audio-E/A 1124 mit dem zweiten Bus 1120 gekoppelt ist. Es ist zu beachten, dass andere Architekturen möglich sind, bei denen die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 11 ein System einen Mehrpunktbus oder eine andere solche Architektur implementieren.
  • Unter Verwendung der verschiedenen Trägheits- und Umgebungssensoren, die in einer Plattform vorhanden sind, können viele verschiedene Anwendungsfälle realisiert werden. Diese Anwendungsfälle ermöglichen erweiterte Rechenoperationen einschließlich Wahrnehmungsberechnung und ermöglichen auch Verbesserungen in Bezug auf Leistungsverwaltung/Batterielebensdauer, Sicherheit und Systemansprechempfindlichkeit.
  • Beispielsweise werden im Hinblick auf Themen wie Leistungsverwaltung/Batterielebensdauer zumindest teilweise basierend auf Informationen von einem Umgebungslichtsensor die Umgebungslichtbedingungen an einem Ort der Plattform bestimmt und die Intensität der Anzeige entsprechend gesteuert. Somit wird die zum Betreiben der Anzeige benötigte Leistung unter bestimmten Lichtbedingungen verringert.
  • In Bezug auf Sicherheitsoperationen kann basierend auf Kontextinformationen, die von den Sensoren erhalten werden, wie z. B. Standortinformationen bestimmt werden, ob ein Anwender auf bestimmte sichere Dokumente zugreifen darf. Beispielsweise kann es einem Anwender erlaubt sein, auf solche Dokumente an einem Arbeitsplatz oder einem Heimstandort zuzugreifen. Der Anwender kann jedoch nicht auf solche Dokumente zugreifen, wenn sich die Plattform an einem öffentlichen Ort befindet. Diese Bestimmung basiert in einer Ausführungsform auf Standortinformationen, die beispielsweise über einen GPS-Sensor oder eine Kameraerkennung von Landmarken bestimmt werden. Andere Sicherheitsoperationen können das Bereitstellen einer Paarung von Vorrichtungen in einer kurzen Entfernung voneinander umfassen, z. B. einer tragbaren Plattform, wie sie hier beschrieben ist, und eines Desktop-Computers, eines Mobiltelefons oder dergleichen eines Anwenders. Bestimmte gemeinsame Nutzung wird in einigen Implementierungen über Nahfeldkommunikation realisiert, wenn diese Vorrichtungen so gepaart sind. Wenn die Vorrichtungen jedoch eine bestimmte Entfernung überschreiten, kann diese Freigabe deaktiviert werden. Darüber hinaus kann beim Paaren einer Plattform, wie sie hier beschrieben ist, mit einem Smartphone ein Alarm ausgelöst werden, wenn sich die Vorrichtungen über eine vorbestimmte Entfernung hinaus voneinander weg bewegen, wenn sie sich an einem öffentlichen Ort befinden. Im Gegensatz dazu können die Vorrichtungen dann, wenn sich diese gepaarten Vorrichtungen an einem sicheren Ort, z. B. an einem Arbeitsplatz oder zu Hause, befinden, diese vorbestimmte Grenze überschreiten, ohne einen solchen Alarm auszulösen.
  • Das Ansprechverhalten kann auch unter Verwendung der Sensorinformationen verbessert werden. Selbst wenn sich eine Plattform in einem Energiesparzustand befindet, können die Sensoren beispielsweise immer noch in der Lage sein, mit einer relativ niedrigen Frequenz zu arbeiten. Dementsprechend werden alle Änderungen an einem Standort der Plattform, wie sie z. B. durch Trägheitssensoren, GPS-Sensor usw. bestimmt werden, bestimmt. Wenn keine derartigen Änderungen registriert wurden, erfolgt eine schnellere Verbindung zu einem früheren drahtlosen Hub wie einem Wi-Fi™-Zugangspunkt oder einem ähnlichen drahtlosen Aktivierungselement, da in diesem Fall nicht nach verfügbaren drahtlosen Netzbetriebsmitteln gesucht werden muss. Somit wird ein größeres Maß an Ansprechempfindlichkeit beim Aufwachen aus einem Energiesparzustand erreicht.
  • Es versteht sich, dass viele andere Anwendungsfälle unter Verwendung von Sensorinformationen ermöglicht werden können, die über die integrierten Sensoren innerhalb einer Plattform, wie sie hierin beschrieben ist, erhalten werden, und die obigen Beispiele nur der Veranschaulichung dienen. Unter Verwendung eines hier beschriebenen Systems kann ein Wahrnehmungsberechnungssystem ein Hinzufügen alternativer Eingabemodalitäten einschließlich der Gestenerkennung ermöglichen und das System dazu befähigen, Anwenderoperationen und - absichten zu erfassen.
  • In einigen Ausführungsformen können ein oder mehrere Infrarot- oder andere Wärmeerfassungselemente oder ein beliebiges anderes Element zum Erfassen der Anwesenheit oder Bewegung eines Anwenders vorhanden sein. Solche Erfassungselemente können mehrere verschiedene Elemente umfassen, die zusammenarbeiten, sequentiell arbeiten oder beides. Beispielsweise umfassen Erfassungselemente Elemente, die eine anfängliche Erfassung wie beispielsweise eine Licht- oder Schallprojektion liefern, gefolgt von einer Erfassung zur Gestendetektion beispielsweise durch eine Ultraschall-Laufzeitkamera oder eine Lichtmusterkamera.
  • In einigen Ausführungsformen umfasst das System zudem einen Lichtgenerator, um eine beleuchtete Linie zu erzeugen. In einigen Ausführungsformen liefert diese Linie einen visuellen Hinweis auf eine virtuelle Grenze, nämlich einen imaginären oder virtuellen Ort im Raum, wobei eine Aktion des Anwenders, bei der die virtuelle Grenze oder Ebene durchlaufen oder unterbrochen, als Absicht interpretiert wird, sich mit dem Rechensystem zu beschäftigen. In einigen Ausführungsformen kann die beleuchtete Linie ihre Farbe ändern, wenn das Rechensystem in Bezug auf den Anwender in verschiedene Zustände übergeht. Die beleuchtete Linie kann verwendet werden, um dem Anwender einen visuellen Hinweis auf eine virtuelle Grenze im Raum zu geben, und kann von dem System verwendet werden, um Zustandsübergänge des Computers in Bezug auf den Anwender zu bestimmen, einschließlich der Bestimmung, wann der Anwender sich mit dem Computer beschäftigen möchte.
  • In einigen Ausführungsformen erfasst der Computer eine Anwenderposition und interpretiert die Bewegung einer Hand des Anwenders über die virtuelle Grenze als eine Geste, die die Absicht des Anwenders angibt, sich mit dem Computer zu beschäftigen. In einigen Ausführungsformen kann sich das durch den Lichtgenerator erzeugte Licht ändern, wenn der Anwender die virtuelle Linie oder Ebene passiert, wodurch dem Anwender eine visuelle Rückmeldung gegeben wird, dass der Anwender in einen Bereich zum Durchführen von Gesten gelangt ist, um dem Computer Eingaben zu liefern.
  • Anzeigebildschirme können visuelle Anzeigen von Zustandsübergängen des Rechensystems in Bezug auf einen Anwender liefern. In einigen Ausführungsformen wird ein erster Bildschirm in einem ersten Zustand, in dem die Anwesenheit eines Anwenders durch das System beispielsweise unter Verwendung eines oder mehrerer der Erfassungselemente erfasst wird, geliefert.
  • In einigen Implementierungen versucht das System, die Anwenderidentität zu erfassen, beispielsweise durch Gesichtserkennung. Hierbei kann ein Übergang zu einem zweiten Bildschirm in einem zweiten Zustand, in dem das Rechensystem die Anwenderidentität erkannt hat, geliefert werden, wobei dieser zweite Bildschirm dem Anwender eine visuelle Rückmeldung liefert, dass der Anwender in einen neuen Zustand übergegangen ist. Der Übergang zu einem dritten Bildschirm kann in einem dritten Zustand, in dem der Anwender die Erkennung des Anwenders bestätigt hat, erfolgen.
  • In einigen Ausführungsformen kann das Rechensystem einen Übergangsmechanismus verwenden, um einen Ort einer virtuellen Grenze für einen Anwender zu bestimmen, wobei der Ort der virtuellen Grenze mit dem Anwender und dem Kontext variieren kann. Das Rechensystem kann ein Licht wie beispielsweise eine beleuchtete Linie erzeugen, um die virtuelle Grenze zum Interagieren mit dem System anzuzeigen. In einigen Ausführungsformen kann sich das Rechensystem in einem Wartezustand befinden und das Licht kann in einer ersten Farbe erzeugt werden. Das Rechensystem kann detektieren, ob der Anwender die virtuelle Grenze überschritten hat, beispielsweise durch Erfassen der Anwesenheit und Bewegung des Anwenders unter Verwendung von Erfassungselementen.
  • In einigen Ausführungsformen kann das Rechensystem dann, wenn detektiert wurde, dass der Anwender die virtuelle Grenze überschritten hat (beispielsweise, dass die Hände des Anwenders näher an dem Rechensystem als an der virtuellen Grenzlinie sind) in einen Zustand zum Empfangen von Gesteneingaben vom Anwender übergehen, wobei ein Mechanismus zum Anzeigen des Übergangs umfassen kann, dass das Licht, das die virtuelle Grenze anzeigt, zu einer zweiten Farbe wechselt.
  • In einigen Ausführungsformen kann das Rechensystem dann bestimmen, ob eine Gestenbewegung detektiert wird. Wenn eine Gestenbewegung erfasst wird, kann das Rechensystem mit einem Gestenerkennungsprozess fortfahren, der die Verwendung von Daten aus einer Gestendatenbibliothek umfassen kann, die sich in dem Speicher der Rechenvorrichtung befinden können oder auf die das Rechenvorrichtung auf andere Weise zugreifen kann.
  • Wenn eine Geste des Anwenders erkannt wird, kann das Rechensystem eine Funktion als Antwort auf die Eingabe ausführen und zurückkehren, um zusätzliche Gesten zu empfangen, wenn sich der Anwender innerhalb der virtuellen Grenze befindet. In einigen Ausführungsformen kann das Rechensystem dann, wenn die Geste nicht erkannt wird, in einen Fehlerzustand übergehen, in dem ein Mechanismus zum Anzeigen des Fehlerzustands umfassen kann, dass das Licht, das die virtuelle Grenze angibt, zu einer dritten Farbe wechselt, wobei das System zurückkehrt, um zusätzlich Gesten zu empfangen, wenn sich der Anwender innerhalb der virtuellen Grenze für die Interaktion mit dem Rechensystem befindet.
  • Wie oben erwähnt, kann das System in anderen Ausführungsformen als ein umwandelbares Tablet-System ausgebildet sein, das in mindestens zwei verschiedenen Modi verwendet werden kann, einem Tablet-Modus und einem Notebook-Modus. Das umwandelbare System kann zwei Tafeln aufweisen, nämlich eine Anzeigetafel und eine Grundtafel, so dass in dem Tablet-Modus die beiden Tafeln in einem Stapel übereinander angeordnet sind. In dem Tablet-Modus zeigt die Anzeigetafel nach außen und bietet möglicherweise eine Berührungsschirm-Funktionalität wie bei herkömmlichen Tablets. In dem Notebook-Modus können die beiden Tafeln in einer offenen Klapp-Konfiguration angeordnet sein.
  • In verschiedenen Ausführungsformen kann der Beschleunigungsmesser ein 3-Achsen-Beschleunigungsmesser mit Datenraten von mindestens 50 Hz sein. Es kann auch ein Gyroskop enthalten sein, bei dem es sich um ein 3-Achsen-Gyroskop handeln kann. Zusätzlich kann ein E-Kompass/Magnetometer vorhanden sein. Es können auch ein oder mehrere Annäherungssensoren vorgesehen sein (z. B. damit der geöffnete Deckel erfasst, wann sich eine Person in der Nähe des Systems befindet (oder nicht), und um die Leistungsaufnahme/Rechenleistung anzupassen, um die Batterielebensdauer zu verlängern). Für einige Betriebssysteme können Sensorfusionsfunktionen einschließlich Beschleunigungsmesser, Gyroskop und Kompass möglicherweise erweiterte Funktionen bieten. Zudem kann über einen Sensor-Hub mit einer Echtzeituhr (RTC) ein Aufwecken von einem Sensormechanismus realisiert werden, um eine Sensoreingabe zu empfangen, wenn sich der Rest des Systems in einem Energiesparzustand befindet.
  • In einigen Ausführungsformen kann ein Schalter oder Sensor für die Öffnung des/der internen Deckels/Anzeige verwendet werden, um anzuzeigen, wann der Deckel geschlossen/geöffnet ist, und um das System in den verbundenen Bereitschaftszustand zu versetzen oder automatisch aus dem verbundenen Bereitschaftszustand zu wecken. Andere Systemsensoren können ACPI-Sensoren für die Überwachung des internen Prozessors, des Speichers und der Gehäusetemperatur umfassen, um Änderungen an Prozessor- und Systembetriebszuständen auf der Basis erfasster Parameter zu ermöglichen.
  • In einer Ausführungsform kann das Betriebssystem das Betriebssystem Microsoft® Windows® 8 sein, das verbundene Bereitschaft implementiert (hier auch als Win8 CS bezeichnet). Windows 8 mit verbundener Bereitschaft oder ein anderes Betriebssystem mit einem ähnlichen Zustand kann über eine Plattform, wie sie hierin beschrieben ist, eine ultraniedrige Ruheleistungsaufnahme bieten, damit Anwendungen mit sehr geringem Energieverbrauch, z. B. an einem cloudbasierten Standort, verbunden bleiben können. Die Plattform unterstützt 3 Leistungszustände, nämlich Bildschirm ein (normal); verbundene Bereitschaft (standardmäßig ausgeschaltet); und heruntergefahren (null Watt Leistungsaufnahme). In dem verbundene Bereitschaftszustand ist die Plattform logisch eingeschaltet (mit minimaler Leistungsaufnahme), obwohl der Bildschirm ausgeschaltet ist. Auf einer solchen Plattform kann die Leistungsverwaltung für Anwendungen transparent gemacht werden und eine konstante Verbindungsfähigkeit aufrechterhalten werden, was zum Teil auf die Auslagerungstechnologie zurückzuführen ist, die es der Komponente mit der niedrigsten Leistungsaufnahme ermöglicht, eine Operation auszuführen.
  • Obwohl diese Offenbarung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute Zahlreiche Modifikationen und Variationen davon erkennen. Es wird beabsichtigt, dass die angehängten Ansprüche alle derartigen Modifikationen und Variationen abdecken, die in den wahren Gedanken und Schutzumfang dieser vorliegenden Offenbarung fallen.
  • Ein Entwurf kann verschiedene Stadien durchlaufen, von der Erzeugung über die Simulation bis zur Herstellung. Daten, die einen Entwurf repräsentieren, können den Entwurf auf eine Reihe von Arten darstellen. Zuerst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern in einigen Stufen des Entwurfsprozesses erzeugt werden. Darüber hinaus erreichen die meisten Entwürfe zu einem bestimmten Zeitpunkt ein Datenniveau, das die physische Anordnung verschiedener Vorrichtungen in dem Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung verwendet werden. In jeder Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetischer oder optischer Datenspeicher, wie etwa eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf andere Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder trägt, übertragen wird, wird, soweit das Kopieren, Puffern oder erneute Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem konkreten, maschinenlesbaren Medium zumindest vorübergehend ein Element, beispielsweise in eine Trägerwelle codierte Informationen, speichern, das Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul bezieht sich wie hierin verwendet auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware wie beispielsweise einen Mikrocontroller, der einem nichtflüchtigen Medium zugeordnet ist, um Code zu speichern, der dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden. Daher bezieht sich der Verweis auf ein Modul in einer Ausführungsform auf die Hardware, die speziell dazu ausgelegt ist, den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nichttransitorische Medium, das den Code enthält, der speziell dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie daraus geschlossen werden kann, kann sich in einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Häufig variieren Modulgrenzen, die separat dargestellt sind, und überlappen sich möglicherweise. Zum Beispiel können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise einige unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie z. B. Transistoren, Register oder andere Hardware wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „dazu ausgelegt“ bezieht sich in einer Ausführungsform auf ein Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Ausführen einer zugewiesenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht in Betrieb ist, immer noch dazu ausgelegt, eine bestimmte Aufgabe auszuführen, wenn sie entworfen, angekoppelt und/oder angeschlossen ist, um die bestimmte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 liefern. Ein Logikgatter, das dazu ausgelegt ist, ein Aktivierungssignal an einen Takt zu liefern, umfasst jedoch nicht jedes mögliche Logikgatter, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgatter auf irgendeine Weise so gekoppelt, dass während des Betriebs die Ausgabe 1 oder 0 dazu dient, den Takt zu aktivieren. Es ist noch einmal anzumerken, dass die Verwendung des Ausdrucks „dazu ausgelegt“ keine Operation erfordert, sondern stattdessen auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements abzielt, wobei die Vorrichtung, die Hardware und/oder das Element in dem latenten Zustand dazu ausgelegt ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich die Verwendung der Ausdrücke „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die so gestaltet sind, dass sie die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer bestimmten Art und Weise ermöglichen. Wie oben erwähnt bezieht sich die Verwendung von „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements, in dem die Vorrichtung, Logik, Hardware und/oder das Element nicht in Betrieb ist, sondern derart ausgelegt ist, dass die Verwendung einer Vorrichtung in einer bestimmten Art und Weise ermöglicht wird.
  • Ein Wert umfasst wie hierin verwendet jede bekannte Darstellung 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 1 und 0 bezeichnet, was einfach binäre logische Zustände darstellt. Zum Beispiel bezieht sich 1 auf einen hohen Logikpegel und 0 auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle wie etwa ein Transistor oder eine Flashzelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert wie beispielsweise eine logische Eins einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert wie beispielsweise eine logische Null einen Nicht-Standardzustand darstellen kann. Außerdem beziehen sich die Begriffe „zurückgesetzt“ und „gesetzt“ in einer Ausführungsform auf einen Standardwert bzw. einen aktualisierten Wert bzw. Zustand. Zum Beispiel umfasst ein Standardwert möglicherweise einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert umfasst, d. h. gesetzt. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben dargelegt sind, können mittels Befehlen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind und die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches maschinenzugängliches/-lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die von einer Maschine wie etwa einem Computer oder einem elektronischen System gelesen werden kann. Zum Beispiel umfasst ein nichttransitorisches, maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM) wie etwa einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die aus transitorischen (sich ausbreitenden) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nichttransitorischen Medien zu unterscheiden sind, die daraus Informationen empfangen können.
  • Befehle, die verwendet werden, um Logik zum Ausführen von Ausführungsformen der Offenbarung zu programmieren, können in einem Speicher in dem System gespeichert sein, wie beispielsweise einem DRAM, einem Cache, einem Flash-Speicher oder einem anderen Speicher. Darüber hinaus können die Befehle über ein Netz oder über andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) lesbar ist, umfassen, ist aber nicht darauf beschränkt auf Disketten, optische Disketten, CD-Nur-Lese-Speicher (CD-ROMs) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen konkreten, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium irgendeinen Typ eines konkreten, maschinenlesbaren Mediums, das zum Speichern oder Übertragen elektronischer Befehle oder Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann, geeignet ist.
  • Die Bezugnahme auf „eine Ausführungsform“ in dieser Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit bezieht sich das Auftauchen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung ist eine genaue Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben worden. Es ist jedoch offensichtlich, dass verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Gedanken und Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht als einschränkend zu betrachten. Ferner bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie möglicherweise die gleiche Ausführungsform beziehen.
  • Beispiel 1 ist eine Vorrichtung, umfassend: einen Port zum Senden von Daten; und eine mit dem Port gekoppelte mehrspurige Verbindung, wobei der Port als Vorbereitung zum Senden eines Datenblocks über die mehrspurige Verbindung Folgendes soll: Bestimmen einer Bitgröße für jede Spur des zu übertragenden Datenblocks auf der Basis der Anzahl der Spuren des Datenblocks; Bestimmen eines Fehlerkorrekturcodes für den Datenblock; Ergänzen des Datenblocks mit dem Fehlerkorrekturcode, wobei der Fehlerkorrekturcode in jeder Spur des Datenblocks zu verteilen ist; und Senden des Datenblocks mit dem Fehlerkorrekturcode über die mehrspurige Verbindung.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei der Port Folgendes soll: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks mindestens teilweise auf der Basis einer Symbolposition für den Datenblock und eine Anzahl von Spuren des Datenblocks.
  • Beispiel 3 kann den Gegenstand beliebiger der Beispiele 1-2 umfassen, wobei der Port Folgendes soll: Verfolgen eines bestimmten Werts für Fehlerkorrekturcode-Bit und einer Anzahl zu sendender Symbole; und Senden des Datenblocks mit Fehlerkorrekturcode, sobald der Wert für Fehlerkorrekturcode gleich der Anzahl der zu sendenden Symbole ist.
  • Beispiel 4 kann den Gegenstand beliebiger der Beispiele 1-3 umfassen, wobei die Vorrichtung Folgendes soll: Berechnen eines Fehlerkorrekturcodes, wenn der zu sendende Datenblock Datensymbole umfasst; und Verarbeiten des Datenblocks als Symbole einer geordneten Menge ohne Berechnung von Fehlerkorrekturcode, wenn abgehende Symbole geordnete Mengen umfassen.
  • Beispiel 5 kann den Gegenstand beliebiger der Beispiele 1-4 umfassen, wobei der Fehlerkorrekturcode 32 Gesamtbit umfasst und die Vorrichtung Folgendes soll: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks auf der Basis der 32 Gesamtbit und einer Anzahl von Spuren des Datenblocks, wobei jede Spur der Verbindung eine gleiche Anzahl von Fehlerkorrekturcode-Bit umfasst.
  • Beispiel 6 kann den Gegenstand beliebiger der Beispiele 1-5 umfassen, wobei der Port einem oder mehreren Retimern angeben soll, dass der eine oder die mehreren Retimer den Datenblock weiterleiten sollen, ohne Vorwärtsfehlerkorrektur an dem Datenblock anzuwenden.
  • Beispiel 7 kann den Gegenstand beliebiger der Beispiele 1-6 umfassen, wobei der Port Bit aus dem Datenblock, der Informationen des Synchronisations-Headers (Sync HDR) repräsentiert, entfernen soll.
  • Beispiel 8 kann den Gegenstand von Beispiel 7 umfassen, wobei der Port in den Datenblock eine geordnete Datenstrom-Startmenge (SDS-OS) aufnehmen kann, wobei die SDS-OS einen Start eines Datenstroms zum Ersetzen des Sync HDR angibt.
  • Beispiel 9 ist ein Verfahren, umfassend: Empfangen eines oder mehreren abgehender Symbole an einem Port zur Übertragung; Bestimmen, dass die Symbole Teil eines abgehenden Datenblocks sind; Berechnen von Fehlerkorrekturcode für die Symbole auf der Basis einer Bitgröße für den Fehlerkorrekturcode und einer Anzahl von Spuren zur Übertragung des Datenblocks; Ergänzen jeder Spur des Datenblocks mit einem Fehlerkorrekturcode; und Senden des Datenblocks über eine mehrspurige Verbindung.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, ferner umfassend: Berechnen eines Fehlerkorrekturcodes auf der Basis eines Quotienten der Bitgröße für den Fehlerkorrekturcode und der Anzahl der Spuren für den Datenblock.
  • Beispiel 11 kann den Gegenstand beliebiger der Beispiele 9-10 umfassen, wobei Ergänzen jeder Spur des Datenblocks mit Fehlerkorrekturcode Verteilen eines Fehlerkorrekturcodes fester Größe gleichmäßig über jedes Spur des Datenblocks umfasst, wobei jede Spur des Datenblocks einen Port des Fehlerkorrekturcodes umfasst.
  • Beispiel 12 kann den Gegenstand beliebiger der Beispiele 9-11 umfassen, wobei Ergänzen des Datenblocks mit Fehlerkorrekturcode Hinzufügen eines Fehlerkorrekturcodes zu dem Ende eines letzten Datenblocks eines oder mehrerer in einer einzelnen Datentransaktion zu übertragenden Datenblöcke umfasst.
  • Beispiel 13 kann den Gegenstand beliebiger der Beispiele 9-12 umfassen, ferner umfassend: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks auf der Basis der 32 Gesamtbit und einer Anzahl von Spuren des Datenblocks, wobei jede Spur der Verbindung eine gleiche Anzahl von Fehlerkorrekturcode-Bit umfasst.
  • Beispiel 14 kann den Gegenstand beliebiger der Beispiele 9-13 umfassen, umfassend Angeben für einen oder mehrere Retimer, dass der eine oder die mehreren Retimer den Datenblock ohne Anwendung von Vorwärtsfehlerkorrektur an dem Datenblock weiterleiten sollen.
  • Beispiel 15 kann den Gegenstand beliebiger der Beispiele 9-14 umfassen, ferner umfassend: Vorbereiten des Datenblocks für Übertragung ohne Aufnahme von Bit zur Repräsentation von Informationen des Synchronisationsheaders (Sync HDR).
  • Beispiel 16 kann den Gegenstand von Beispiel 15 umfassen, ferner umfassend: Einfügen einer geordneten Startdatenstrommenge (SDS OS) in dem Datenblock, wobei die SDS-OS einen Start eines Datenstroms zum Ersetzen des Sync HDR angibt.
  • Beispiel 17 ist ein oder mehrere nichttransitorische computerlesbare Medien mit Anweisungen zum Bewirken, dass eine Vorrichtung bei Ausführung der Anweisungen durch einen oder mehrere Prozessoren der Vorrichtung Folgendes durchführt: Empfangen eines oder mehreren abgehender Symbole an einem Port zur Übertragung; Bestimmen, dass die Symbole Teil eines abgehenden Datenblocks sind; Berechnen von Fehlerkorrekturcode für die Symbole auf der Basis einer Bitgröße für den Fehlerkorrekturcode und einer Anzahl von Spuren zur Übertragung des Datenblocks; Ergänzen jeder Spur des Datenblocks mit einem Fehlerkorrekturcode; und Senden des Datenblocks über eine mehrspurige Verbindung.
  • Beispiel 18 kann den Gegenstand von Beispiel 17 umfassen, wobei die Anweisungen bewirken sollen, dass die Vorrichtung Fehlerkorrekturcode auf der Basis eines Quotienten der Bitgröße für den Fehlerkorrekturcode und der Anzahl der Spuren für den Datenblock berechnet.
  • Beispiel 19 kann den Gegenstand beliebiger der Beispiele 17-18 umfassen, wobei Ergänzen jeder Spur des Datenblocks mit Fehlerkorrekturcode Verteilen eines Fehlerkorrekturcodes fester Größe gleichmäßig über jedes Spur des Datenblocks umfasst, wobei jede Spur des Datenblocks einen Port des Fehlerkorrekturcodes umfasst.
  • Beispiel 20 kann den Gegenstand beliebiger der Beispiele 17-19 umfassen, wobei Ergänzen des Datenblocks mit Fehlerkorrekturcode Hinzufügen eines Fehlerkorrekturcodes zu dem Ende eines letzten Datenblocks eines oder mehrerer in einer einzelnen Datentransaktion zu übertragenden Datenblöcke umfasst.
  • Beispiel 21 kann den Gegenstand beliebiger der Beispiele 17-20 umfassen, wobei die Anweisungen die Vorrichtung zu Folgendem veranlassen sollen: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks auf der Basis der 32 Gesamtbit und einer Anzahl von Spuren des Datenblocks, wobei jede Spur der Verbindung eine gleiche Anzahl von Fehlerkorrekturcode-Bit umfasst.
  • Beispiel 22 kann den Gegenstand beliebiger der Beispiele 17-21 umfassen, umfassend Angeben für einen oder mehrere Retimer, dass der eine oder die mehreren Retimer den Datenblock ohne Anwendung von Vorwärtsfehlerkorrektur an dem Datenblock weiterleiten sollen.
  • Beispiel 23 kann den Gegenstand beliebiger der Beispiele 17-22 umfassen, wobei die Anweisungen die Vorrichtung zu Folgendem veranlassen sollen: Vorbereiten des Datenblocks für Übertragung ohne Aufnahme von Bit zur Repräsentation von Informationen des Synchronisationsheaders (Sync HDR) und Einfügen einer geordneten Startdatenstrommenge (SDS OS) in dem Datenblock, wobei die SDS-OS einen Start eines Datenstroms zum Ersetzen des Sync HDR angibt.
  • Beispiel 24 ist eine Vorrichtung mit einem Port zum Senden von Daten; und einer mit dem Port gekoppelten mehrspurigen Verbindung. Bei Empfang eines Datenblocks über die mehrspurige Verbindung soll der Port Folgendes durchführen: Identifizieren eines Fehlerkorrekturcodes aus den auf jeder Spur des Datenblocks empfangenen Fehlerkorrekturcode-Bit; Bestimmen von Fehlern in dem Datenblock auf der Basis des Fehlerkorrekturcodes; und Korrigieren eines oder mehrerer empfangener Datensymbole in dem Datenblock auf der Basis eines bestimmten Fehlers und des Fehlerkorrekturcodes.
  • Beispiel 25 kann den Gegenstand von Beispiel 24 umfassen, wobei der Port zu Folgendem dient: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks mindestens teilweise auf der Basis einer Symbolposition für den Datenblock und einer Anzahl von Spuren des Datenblocks.
  • Beispiel 26 kann den Gegenstand beliebiger der Beispiele 24-25 umfassen, wobei der Port zu Folgendem dient: Verfolgen eines Werts für Fehlerkorrekturcode-Bit, die bestimmt werden, und eine Anzahl empfangener Symbole; und Senden des Datenblocks mit Fehlerkorrekturcode, sobald der Wert für Fehlerkorrekturcode gleich der Anzahl empfangener Symbole ist.
  • Beispiel 27 kann den Gegenstand beliebiger der Beispiele 24-26 umfassen, wobei der Port zu Folgendem dient: Berechnen eines Fehlerkorrekturcodes, wenn der zu sendende Datenblock Datensymbole umfasst; und Verarbeiten des Datenblocks als Symbole einer geordneten Menge ohne Berechnung von Fehlerkorrekturcode, wenn abgehende Symbole geordnete Mengen umfassen.
  • Beispiel 28 kann den Gegenstand beliebiger der Beispiele 24-27 umfassen, wobei der Fehlerkorrekturcode 32 Gesamtbit umfasst und die Vorrichtung Folgendes soll: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks auf der Basis der 32 Gesamtbit und einer Anzahl von Spuren des Datenblocks, wobei jede Spur der Verbindung eine gleiche Anzahl von Fehlerkorrekturcode-Bit umfasst.
  • Beispiel 29 ist ein System, das einen ersten Port einer ersten Vorrichtung, gekoppelt mit einem zweiten Port einer zweiten Vorrichtung über eine mehrspurige Verbindung, umfasst. Der erste Port soll einen Datenblock mit Fehlerkorrekturcode ergänzen, indem Fehlerkorrekturcode gleichmäßig über jede Spur des Datenblocks verteilt wird, wobei jede Spur des Datenblocks eine selbe Anzahl von Fehlerkorrekturcode umfasst. Der erste Port soll den Datenblock mit dem spurweisen Fehlerkorrekturcode über die mehrspurige Verbindung zu dem zweiten Port senden. Der zweite Port soll Fehlerkorrekturcode auf der Basis der in dem Datenblock empfangenen Fehlerkorrekturcode-Bit bestimmen und auf der Basis des empfangenen Fehlerkorrekturcodes Fehlerkorrektur an den Symbolen des Datenblocks ausführen.
  • Die obige Beschreibung einer oder mehrerer Implementierungen stellt Veranschaulichung und Beschreibung bereit, soll aber nicht erschöpfend sein oder den Schutzumfang von Ausführungsformen auf die genaue offenbarte Form beschränken. Im Hinblick der obigen Lehren sind Modifikationen und Varianten möglich oder können aus Praktizierung verschiedener Ausführungsformen beschafft werden.

Claims (10)

  1. Vorrichtung, umfassend: einen Port zum Senden von Daten; und eine mit dem Port gekoppelte mehrspurige Verbindung, wobei der Port als Vorbereitung zum Senden eines Datenblocks über die mehrspurige Verbindung Folgendes soll: Bestimmen einer Bitgröße für jede Spur des zu übertragenden Datenblocks auf der Basis der Anzahl der Spuren des Datenblocks; Bestimmen eines Fehlerkorrekturcodes für den Datenblock; Ergänzen des Datenblocks mit dem Fehlerkorrekturcode, wobei der Fehlerkorrekturcode in jeder Spur des Datenblocks zu verteilen ist; und Senden des Datenblocks mit dem Fehlerkorrekturcode über die mehrspurige Verbindung.
  2. Vorrichtung nach Anspruch 1, wobei der Port Folgendes soll: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks mindestens teilweise auf der Basis einer Symbolposition für den Datenblock und eine Anzahl von Spuren des Datenblocks.
  3. Vorrichtung nach Anspruch 1, wobei der Port Folgendes soll: Verfolgen eines bestimmten Werts für Fehlerkorrekturcode-Bit und einer Anzahl zu sendender Symbole; und Senden des Datenblocks mit Fehlerkorrekturcode, sobald der Wert für Fehlerkorrekturcode gleich der Anzahl der zu sendenden Symbole ist.
  4. Vorrichtung nach Anspruch 1, wobei die Vorrichtung Folgendes soll: Berechnen eines Fehlerkorrekturcodes, wenn der zu sendende Datenblock Datensymbole umfasst; und Verarbeiten des Datenblocks als Symbole einer geordneten Menge ohne Berechnung von Fehlerkorrekturcode, wenn abgehende Symbole geordnete Mengen umfassen.
  5. Vorrichtung nach Anspruch 1, wobei der Fehlerkorrekturcode 32 Gesamtbit umfasst und die Vorrichtung Folgendes soll: Bestimmen eines Fehlerkorrekturcodes für jede Spur des Datenblocks auf der Basis der 32 Gesamtbit und einer Anzahl von Spuren des Datenblocks, wobei jede Spur der Verbindung eine gleiche Anzahl von Fehlerkorrekturcode-Bit umfasst.
  6. Vorrichtung nach Anspruch 1, wobei der Port einem oder mehreren Retimern angeben soll, dass der eine oder die mehreren Retimer den Datenblock weiterleiten sollen, ohne Vorwärtsfehlerkorrektur an dem Datenblock anzuwenden.
  7. Vorrichtung nach Anspruch 1, wobei der Port Bit aus dem Datenblock, der Informationen des Synchronisations-Headers (Sync HDR) repräsentiert, entfernen soll.
  8. Vorrichtung nach Anspruch 7, wobei der Port in den Datenblock eine geordnete Datenstrom-Startmenge (SDS-OS) aufnehmen kann, wobei die SDS-OS einen Start eines Datenstroms zum Ersetzen des Sync HDR angibt.
  9. Vorrichtung, umfassend: einen Port zum Senden von Daten; und eine mit dem Port gekoppelte mehrspurige Verbindung, wobei der Port bei Empfang eines Datenblocks über die mehrspurige Verbindung Folgendes soll: Identifizieren eines Fehlerkorrekturcodes aus den auf jeder Spur des Datenblocks empfangenen Fehlerkorrekturcode-Bit; Bestimmen von Fehlern in dem Datenblock auf der Basis des Fehlerkorrekturcodes; und Korrigieren eines oder mehrerer empfangener Datensymbole in dem Datenblock auf der Basis eines bestimmten Fehlers und des Fehlerkorrekturcodes.
  10. Vorrichtung nach Anspruch 9, wobei der Port einen Fehlerkorrekturcode für jede Spur des Datenblocks mindestens teilweise auf der Basis einer Symbolposition für den Datenblock und einer Anzahl von Spuren des Datenblocks bestimmen soll.
DE102019129626.9A 2018-12-18 2019-11-04 Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen Pending DE102019129626A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/224,583 US10771189B2 (en) 2018-12-18 2018-12-18 Forward error correction mechanism for data transmission across multi-lane links
US16/224,583 2018-12-18

Publications (1)

Publication Number Publication Date
DE102019129626A1 true DE102019129626A1 (de) 2020-06-18

Family

ID=66433548

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019129626.9A Pending DE102019129626A1 (de) 2018-12-18 2019-11-04 Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen

Country Status (2)

Country Link
US (2) US10771189B2 (de)
DE (1) DE102019129626A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10904477B2 (en) * 2018-01-19 2021-01-26 Caavo Inc Device identification using media device keys
KR102560251B1 (ko) * 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US11232058B2 (en) 2019-03-08 2022-01-25 Intel Corporation Enabling sync header suppression latency optimization in the presence of retimers for serial interconnect
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11063696B2 (en) 2019-07-16 2021-07-13 Microsoft Technology Licensing, Llc Increasing average power levels to reduce peak-to-average power levels using error correction codes
US10911284B1 (en) * 2019-07-16 2021-02-02 Microsoft Technology Licensing, Llc Intelligent optimization of communication systems utilizing error correction
US11086719B2 (en) 2019-07-16 2021-08-10 Microsoft Technology Licensing, Llc Use of error correction codes to prevent errors in neighboring storage
US11075656B2 (en) 2019-07-16 2021-07-27 Microsoft Technology Licensing, Llc Bit error reduction of communication systems using error correction
US11044044B2 (en) 2019-07-16 2021-06-22 Microsoft Technology Licensing, Llc Peak to average power ratio reduction of optical systems utilizing error correction
US11172455B2 (en) 2019-07-16 2021-11-09 Microsoft Technology Licensing, Llc Peak to average power output reduction of RF systems utilizing error correction
US11031961B2 (en) 2019-07-16 2021-06-08 Microsoft Technology Licensing, Llc Smart symbol changes for optimization of communications using error correction
US10911141B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Dynamically selecting a channel model for optical communications
US11444829B2 (en) * 2019-09-09 2022-09-13 Intel Corporation Link layer communication by multiple link layer encodings for computer buses
US10984874B1 (en) * 2019-11-13 2021-04-20 Sandisk Technologies Llc Differential dbus scheme for low-latency random read for NAND memories
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11886312B2 (en) 2020-04-07 2024-01-30 Intel Corporation Characterizing error correlation based on error logging for computer buses
US11308022B2 (en) * 2020-05-27 2022-04-19 Dell Products, L.P. Support for common motherboard configuration for USB retiming
KR102519484B1 (ko) * 2021-02-18 2023-04-10 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 이를 포함하는 시스템

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100375393C (zh) * 1998-04-27 2008-03-12 松下电器产业株式会社 卷积交错装置、方法、卷积解交错装置、方法
US6574238B1 (en) 1998-08-26 2003-06-03 Intel Corporation Inter-switch link header modification
US6400728B1 (en) 1998-09-09 2002-06-04 Vlsi Technology, Inc. Method and system for detecting user data types in digital communications channels and optimizing encoding-error correction in response thereto
DE69938094T2 (de) 1998-11-30 2009-02-05 Matsushita Electric Industries Co. Ltd., Kadoma Paketwiederübertragungskontrolle mit Prioritätsinformationen
US6868519B2 (en) 2001-04-23 2005-03-15 Lucent Technologies Inc. Reducing scintillation effects for optical free-space transmission
US6964005B2 (en) 2001-06-08 2005-11-08 Broadcom Corporation System and method for interleaving data in a communication device
US7127653B1 (en) 2001-07-05 2006-10-24 Pmc-Sierra, Inc. Apparatus and method for efficient data transport using transparent framing procedure
US7047437B2 (en) 2001-12-12 2006-05-16 Hewlett-Packard Development Company, L.P. Method and system for detecting dropped micro-packets
US7970279B2 (en) 2002-11-05 2011-06-28 Lightfleet Corporation N-way serial-channel interconnect
US7272310B2 (en) * 2003-06-24 2007-09-18 Intel Corporation Generic multi-protocol label switching (GMPLS)-based label space architecture for optical switched networks
US20050063701A1 (en) * 2003-09-23 2005-03-24 Shlomo Ovadia Method and system to recover resources in the event of data burst loss within WDM-based optical-switched networks
JP4349114B2 (ja) 2003-12-10 2009-10-21 ソニー株式会社 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
US20050172091A1 (en) 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US7418644B2 (en) 2004-03-01 2008-08-26 Hewlett-Packard Development Company, L.P. System for error correction coding and decoding
JP5011116B2 (ja) 2004-10-26 2012-08-29 エージェンシー フォー サイエンス,テクノロジー アンド リサーチ 変調の制約及び誤り制御を用いて情報の符号化及び復号化を実行する方法及びシステム
WO2006050174A2 (en) 2004-10-29 2006-05-11 Broadcom Corporation Hierarchical flow-level multi-channel communication
JP4711660B2 (ja) 2004-11-10 2011-06-29 日本ビクター株式会社 記録装置および記録媒体
US7423561B2 (en) 2005-09-06 2008-09-09 Mediateck Inc. Modulation methods and systems
BRPI0716414A2 (pt) 2006-08-08 2013-09-24 Siemens Energy & Automat dispositivo, sistema e mÉtodos para atribuir um endereÇo de màdulo olc
KR100808664B1 (ko) 2006-12-08 2008-03-07 한국전자통신연구원 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
WO2008076125A1 (en) 2006-12-21 2008-06-26 Thomson Licensing A method to support forward error correction for real-time audio and video data over internet protocol networks
US9015399B2 (en) * 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8787153B2 (en) 2008-02-10 2014-07-22 Cisco Technology, Inc. Forward error correction based data recovery with path diversity
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US7995696B1 (en) 2008-08-07 2011-08-09 Integrated Device Technology, Inc. System and method for deskewing data transmitted through data lanes
US8102779B2 (en) 2008-10-31 2012-01-24 Howard University System and method of detecting and locating intermittent electrical faults in electrical systems
JP5365234B2 (ja) 2009-02-13 2013-12-11 株式会社明電舎 端末装置間のトークン異常検出/回復方式
US8307265B2 (en) 2009-03-09 2012-11-06 Intel Corporation Interconnection techniques
JP5143286B2 (ja) 2009-08-18 2013-02-13 三菱電機株式会社 通信システムおよび通信装置状態判定方法
TWI402684B (zh) 2009-10-22 2013-07-21 Via Tech Inc 通用串列匯流排裝置以及其校正方法
US9237105B2 (en) 2009-12-08 2016-01-12 Microsoft Technology Licensing, Llc Data communication with compensation for packet loss
CN102714876A (zh) 2010-02-01 2012-10-03 株式会社Ntt都科摩 数据中继装置及数据中继方法
US8839078B2 (en) 2010-03-05 2014-09-16 Samsung Electronics Co., Ltd. Application layer FEC framework for WiGig
JP2012199724A (ja) 2011-03-19 2012-10-18 Fujitsu Ltd データ送信装置、データ受信装置、データ送受信装置及びデータ送受信装置の制御方法
US8400728B2 (en) 2011-05-23 2013-03-19 Spectra Logic Corp. Efficient moves via repository
JP5348263B2 (ja) 2012-02-29 2013-11-20 富士通株式会社 データ伝送装置、データ伝送システムおよびデータ伝送方法
US8862967B2 (en) 2012-03-15 2014-10-14 Sandisk Technologies Inc. Statistical distribution based variable-bit error correction coding
US9229897B2 (en) * 2012-06-29 2016-01-05 Intel Corporation Embedded control channel for high speed serial interconnect
US9280507B2 (en) * 2012-10-22 2016-03-08 Intel Corporation High performance interconnect physical layer
KR101828756B1 (ko) * 2012-10-22 2018-02-12 인텔 코포레이션 고성능 인터커넥트 코히어런스 프로토콜
US9479196B2 (en) 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
US9311268B1 (en) 2012-10-25 2016-04-12 Qlogic, Corporation Method and system for communication with peripheral devices
US9037943B2 (en) 2012-10-26 2015-05-19 Intel Corporation Identification of non-volatile memory die for use in remedial action
US9300602B2 (en) 2012-11-02 2016-03-29 Qualcomm Incorporated Method, device, and apparatus for error detection and correction in wireless communications
EP2926341B1 (de) * 2012-11-30 2020-02-19 Hewlett-Packard Enterprise Development LP Speichersteuerungen zur formung von symbolen auf der basis von bursts
US9344219B2 (en) 2013-06-25 2016-05-17 Intel Corporation Increasing communication safety by preventing false packet acceptance in high-speed links
US9306863B2 (en) 2013-12-06 2016-04-05 Intel Corporation Link transfer, bit error detection and link retry using flit bundles asynchronous to link fabric packets
CN105793828B (zh) 2013-12-26 2019-06-21 英特尔公司 具有pci快速增强的系统和方法
US10534034B2 (en) * 2013-12-26 2020-01-14 Intel Corporation Interconnect retimer enhancements
DE112013007724B4 (de) * 2013-12-26 2024-01-11 Intel Corporation System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
US9628382B2 (en) * 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match
JP6260360B2 (ja) 2014-03-07 2018-01-17 富士通株式会社 光伝送装置および光伝送システム
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9552253B2 (en) 2014-09-24 2017-01-24 Intel Corporation Probabilistic flit error checking
US20160099795A1 (en) 2014-10-02 2016-04-07 Kent C. Lusted Technologies for exchanging host loss and forward error correction capabilities on a 25g ethernet link
US9921768B2 (en) * 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
US9910809B2 (en) * 2014-12-19 2018-03-06 Intel Corporation High performance interconnect link state transitions
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9632862B2 (en) * 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory
US9552269B2 (en) * 2014-12-23 2017-01-24 Intel Corporation Test logic for a serial interconnect
US9779053B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Physical interface for a serial interconnect
US9780969B2 (en) 2014-12-23 2017-10-03 Intel Corporation Transferring data between elements of a cable communication device
US10505850B2 (en) 2015-02-24 2019-12-10 Qualcomm Incorporated Efficient policy enforcement using network tokens for services—user-plane approach
US20160261375A1 (en) 2015-03-04 2016-09-08 Qualcomm Incorporated Packet format and coding method for serial data transmission
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US9720838B2 (en) * 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US20160283303A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Reliability, availability, and serviceability in multi-node systems with disaggregated memory
US9858234B2 (en) 2015-07-17 2018-01-02 Parade Technologies, Ltd. System transparent retimer
US20170026976A1 (en) 2015-07-20 2017-01-26 Qualcomm Incorporated Flexible coding schemes
US9660987B2 (en) 2015-07-30 2017-05-23 Oracle International Corporation Storage isolation using I/O authentication
US20190372903A1 (en) * 2018-06-04 2019-12-05 Lightfleet Corporation Priority-based arbitration for parallel multicast routing with self-directed data packets
US10097203B2 (en) 2015-11-12 2018-10-09 Nvidia Corporation Lane-striped computation of packet CRC to maintain burst error properties
US10372647B2 (en) 2015-12-22 2019-08-06 Intel Corporation Exascale fabric time synchronization
US10210040B2 (en) 2016-01-28 2019-02-19 Nxp Usa, Inc. Multi-dimensional parity checker (MDPC) systems and related methods for external memories
US9979432B2 (en) 2016-02-01 2018-05-22 Qualcomm Incorporated Programmable distributed data processing in a serial link
US20170270062A1 (en) 2016-03-21 2017-09-21 Intel Corporation In-band retimer register access
US11144691B2 (en) * 2016-06-02 2021-10-12 Siemens Industry Software Inc. Virtual Ethernet mutable port group transactor
US10411980B2 (en) 2016-09-20 2019-09-10 Intel Corporation Proactive path quality reporting in packet transmission
US10152446B2 (en) 2016-10-01 2018-12-11 Intel Corporation Link-physical layer interface adapter
US10931329B2 (en) 2016-12-29 2021-02-23 Intel Corporation High speed interconnect with channel extension
US10050688B2 (en) 2017-01-16 2018-08-14 At&T Intellectual Property I, L.P. Single codeword, multi-layer serial interference cancellation (SIC) for spatial multiplexing
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10250436B2 (en) 2017-03-01 2019-04-02 Intel Corporation Applying framing rules for a high speed data link
US11461527B2 (en) * 2018-02-02 2022-10-04 Micron Technology, Inc. Interface for data communication between chiplets or other integrated circuits on an interposer
US10606790B2 (en) 2018-04-16 2020-03-31 Intel Corporation Precoding mechanism in PCI-express
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US10776302B2 (en) 2019-04-02 2020-09-15 Intel Corporation Virtualized link states of multiple protocol layer package interconnects
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11444829B2 (en) 2019-09-09 2022-09-13 Intel Corporation Link layer communication by multiple link layer encodings for computer buses
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer

Also Published As

Publication number Publication date
US11223446B2 (en) 2022-01-11
US10771189B2 (en) 2020-09-08
US20200374037A1 (en) 2020-11-26
US20190149265A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
US11416397B2 (en) Global persistent flush
US11397701B2 (en) Retimer mechanisms for in-band link management
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE112013007751B3 (de) Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE112016004332T5 (de) Verfahren, vorrichtungen und systeme zum taktversatzausgleich von datenverbindungaufteilungen
DE102019109130A1 (de) System, verfahren und einrichtung für dvsec für eine effiziente peripheriegeräteverwaltung
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE102019109858A1 (de) Breiten- und Frequenzumsetzung mit PHY-Schicht-Vorrichtungen
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE102018005753A1 (de) Serdes link training
US9552045B2 (en) Method, apparatus, and system for controlling power consumption of unused hardware of a link interface
DE112017004963T5 (de) Spannunsgmodulierte steuer-lane
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 102019009306

Country of ref document: DE

R012 Request for examination validly filed
R130 Divisional application to

Ref document number: 102019009306

Country of ref document: DE