DE112018007637T5 - Fehlermeldung in Verbindungsverlängerungsvorrichtungen - Google Patents

Fehlermeldung in Verbindungsverlängerungsvorrichtungen Download PDF

Info

Publication number
DE112018007637T5
DE112018007637T5 DE112018007637.7T DE112018007637T DE112018007637T5 DE 112018007637 T5 DE112018007637 T5 DE 112018007637T5 DE 112018007637 T DE112018007637 T DE 112018007637T DE 112018007637 T5 DE112018007637 T5 DE 112018007637T5
Authority
DE
Germany
Prior art keywords
error
retimer
event
register
data
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
DE112018007637.7T
Other languages
English (en)
Inventor
Haifeng Gong
Manisha M. Nilange
Shiwei XU
Xiaoxia Fu
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 DE112018007637T5 publication Critical patent/DE112018007637T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Abstract

Eine Verlängerungsvorrichtung ist in einer Punkt-zu-Punkt-Verbindung positioniert, um zwei Vorrichtungen zu verbinden, wobei die Verlängerungsvorrichtung Fehlerdetektionsschaltungen umfasst, um eine Fehlermenge an der Verlängerungsvorrichtung zu detektieren. Die Verlängerungsvorrichtung umfasst ferner einen Speicher, um ein Event-Register zu speichern, wobei die Verlängerungsvorrichtung Daten in das Event-Register schreiben soll, um die Detektion eines Fehlers durch die Fehlerdetektionsschaltungen zu beschreiben. Die Verlängerungsvorrichtung umfasst ferner einen Sender, um ein Benachrichtigungssignal zu senden, um die Detektion des Fehlers und das Vorliegen der Daten im Event-Register, die mit dem Fehler verknüpft sind, anzugeben.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft Computersysteme, und insbesondere (aber nicht ausschließlich) Verlängerungsvorrichtungen in Punkt-zu-Punkt-Zusammenschaltungen.
  • ALLGEMEINER STAND DER TECHNIK
  • Fortschritte in Halbleiterverarbeitung und Logikdesign haben eine Zunahme der Logikmenge ermöglicht, die auf integrierten Schaltkreisen vorhanden sein kann. Folglich haben sich Computersystemkonfigurationen von einem oder mehreren integrierten Schaltkreisen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltkreisen vorhanden sind, sowie zu anderen Schnittstellen innerhalb dieser Prozessoren entwickelt. Ein Prozessor oder integrierter Schaltkreis umfasst typischerweise einen einzigen physischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Speichern, Controller-Hubs usw. umfassen kann.
  • Als Folge der besseren Möglichkeit, mehr Verarbeitungsleistung in kleineren Verkapselungen unterzubringen, hat die Beliebtheit kleinerer Computervorrichtungen zugenommen. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte sind exponentiell gewachsen. Diese kleineren Vorrichtungen beruhen jedoch sowohl für die Datenspeicherung als auch für die komplexe Verarbeitung, die den Formfaktor überschreitet, auf Servern. Folglich hat auch der Bedarf im Hochleistungscomputermarkt (d. h. Serverplatz) zugenommen. Zum Beispiel befinden sich in modernen Servern typischerweise nicht nur ein einziger Prozessor mit mehreren Kernen, sondern auch mehrere physische Prozessoren (auch als mehrere Sockel bezeichnet), um die Rechenleistung zu erhöhen. Mit zunehmender Verarbeitungsleistung zusammen mit der Anzahl der Vorrichtungen in einem Computersystem wird aber die Kommunikation zwischen den Sockeln und anderen Vorrichtungen kritischer.
  • In der Tat sind die Zusammenschaltungen von traditionelleren Multidrop-Bussen, die hauptsächlich elektrische Kommunikationen handhabten, zu vollendeten Zusammenschaltungsarchitekturen geworden, die eine schnelle Kommunikation ermöglichen. Leider entsteht mit der Anforderung, dass zukünftige Prozessoren noch schneller funktionieren, eine entsprechende Anforderung an die Fähigkeiten von existierenden Zusammenschaltungsarchitekturen.
  • Figurenliste
    • Es zeigen: 1 eine Ausführungsform eines Computersystems, das eine Zusammenschaltungsarchitektur umfasst.
    • 2 eine Ausführungsform einer Zusammenschaltungsarchitektur, die einen Schichtstapel umfasst.
    • 3 eine Ausführungsform einer Anfrage bzw. eines Pakets, die bzw. das in einer Zusammenschaltungsarchitektur generiert oder empfangen werden soll.
    • 4 eine Ausführungsform eines Sender- und Empfänger-Paars für eine Zusammenschaltungsarchitektur.
    • 5A bis 5C vereinfachte Blockdiagramme von beispielhaften Verbindungen, die eine oder mehrere Verlängerungsvorrichtungen umfassen.
    • 6A bis 6B vereinfachte Blockdiagramme von Systemen, die beispielhafte Verlängerungsvorrichtungen umfassen.
    • 7 ein vereinfachtes Blockdiagramm einer beispielhaften Retimer-Vorrichtung.
    • 8A bis 8B Beispiele von Systemen, die beispielhafte Retimer-Vorrichtungen umfassen, die mit einer Fehlerdetektionslogik ausgestattet sind.
    • 9 eine Darstellung eines beispielhaften Event-Registers.
    • 10 ein vereinfachtes Blockdiagramm eines beispielhaften Retimers.
    • 11A bis 11B Ablaufdiagramme, welche die Handhabung von Fehlern abbilden, die von beispielhaften Verlängerungsvorrichtungen detektiert werden.
    • 12 ein Ablaufschema, das eine beispielhafte Technik abbildet, die eine Fehlerdetektion an den Verlängerungsvorrichtungen bedingt.
    • 13 eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkernprozessor umfasst.
    • 14 eine Ausführungsform eines Blocks für ein Computersystem, das mehrere Prozessoren umfasst.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten, wie etwa Beispiele von spezifischen Typen von Prozessoren und Systemkonfigurationen, spezifischen Hardware-Strukturen, spezifischen Architektur- und Mikroarchitekturdetails, spezifischen Registerkonfigurationen, spezifischen Anweisungstypen, spezifischen Systemkomponenten, spezifischen Maßen/Höhen, spezifischen Prozessor-Pipelinestufen, und Funktionsweisen usw., dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung bereitzustellen. Für den Fachmann ist jedoch ersichtlich, dass diese spezifischen Einzelheiten nicht unbedingt verwendet werden müssen, um die vorliegende Erfindung in die Praxis umzusetzen. In anderen Fällen wurden bekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/spezifischer Code für beschriebene Algorithmen, spezifischer Firmware-Code, Zusammenschaltungsbetrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementierungen, ein spezifischer Ausdruck von Algorithmen in Code, spezifische Herunterfahr- und Torschaltungstechniken/-logik und andere spezifische Betriebsdetails von Computersystemen, nicht ausführlich beschrieben, um die vorliegende Offenbarung nicht unnötig zu verschleiern.
  • Obwohl die folgenden Ausführungsformen vielleicht mit Bezug auf Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltkreisen, wie etwa in Computerplattformen oder Mikroprozessoren, beschrieben werden, sind andere Ausführungsformen auf andere Typen von integrierten Schaltkreisen und logischen Vorrichtungen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hier beschrieben werden, können auf andere Typen von Schaltkreisen oder Halbleitervorrichtungen angewendet werden, die ebenfalls aus besserer Energieeffizienz und Energieeinsparung Nutzen ziehen können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ eingeschränkt. Und sie können auch in anderen Vorrichtungen verwendet werden, wie etwa in Handheld-Vorrichtungen, Tablets, anderen Thin-Notebooks, SOC-Vorrichtungen (Systeme auf einem Chip) und eingebetteten Anwendungen. Einige Beispiele für Handheld-Vorrichtungen umfassen Mobiltelefone, Internet-Protokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, Großraumnetzwerk- (WAN) Switches oder ein beliebiges anderes System, das die nachstehend gelehrten Funktionen und Operationen ausführen kann. Des Weiteren sind die hier beschriebenen Geräte, Verfahren und Systeme nicht auf physische Computervorrichtungen eingeschränkt, sondern können auch Software-Optimierungen zur Energieeinsparung und -effizienz betreffen. Wie aus der nachfolgenden Beschreibung ohne Weiteres hervorgeht, sind die hier beschriebenen Ausführungsformen von Verfahren, Geräten und Systemen (ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine Zukunft der „grünen Technologie“, die mit Leistungserwägungen ausgeglichen ist, entscheidend.
  • In dem Maße wie Computersysteme Fortschritte machen, werden ihre Komponenten komplexer. Folglich nimmt auch die Komplexität der Zusammenschaltungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass die Bandbreitenanforderungen für einen optimalen Komponenten erfüllt werden. Ferner verlangen verschiedene Marktsegmente verschiedene Aspekte von Zusammenschaltungsarchitekturen, um den Marktbedürfnissen gerecht zu werden. Zum Beispiel erfordern Server eine höhere Leistung, während das Mobil-Ökosystem manchmal in der Lage ist, Gesamtleistung zugunsten von Stromersparnissen zu opfern. Ein einzigartiger Zweck der meisten Strukturen besteht jedoch darin, die höchstmögliche Leistung mit maximaler Energieersparnis bereitzustellen. Nachstehend wird eine Reihe von Zusammenschaltungen besprochen, die möglicherweise aus den hier beschriebenen Aspekten der Erfindung Nutzen ziehen könnten.
  • Eine Architektur einer Zusammenschaltungsstruktur umfasst die PCIe-Architektur („Peripheral Component Interconnect (PCI) Express“). Ein Hauptziel von PCIe besteht darin, es Komponenten und Vorrichtungen von verschiedenen Anbietern in einer offenen Architektur, die über mehrere Marktsegmente geht, zu interagieren; Clients (Desktops und Mobilgeräte), Server (normale und geschäftliche) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist eine universelle Hochleistungs-E/A-Zusammenschaltung, die für viele verschiedene zukünftige Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie etwa ihr Nutzungsmodell, ihre Lade-Speicher-Architektur und ihre Software-Schnittstellen, wurden bei ihren Überarbeitungen beibehalten, während frühere Parallelbusumsetzungen durch eine hochskalierbare, ganz serielle Schnittstellen ersetzt wurden. Die neueren Versionen von PCI Express nutzen die Fortschritte bei Punkt-zu-Punkt Zusammenschaltungen, schalterbasierter Technologie und paketiertem Protokoll, um neue Leistungsniveaus und Merkmale abzugeben. Energieverwaltung, Dienstqualität (QoS), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerhandhabung sind einige der fortgeschrittenen Merkmale, die von PCI Express unterstützt werden.
  • Mit Bezug auf 1 ist eine Ausführungsform einer Struktur abgebildet, die aus Punkt-zu-Punkt-Verbindungen besteht, die eine Menge von Komponenten zusammenschalten. Das System 100 umfasst den Prozessor 105 und den Systemspeicher 110, der mit dem Controller-Hub 115 gekoppelt ist. Der Prozessor 105 umfasst ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 105 ist mit dem Controller-Hub 115 über einen Front-Side-Bus (FSB) 106 gekoppelt. Bei einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Zusammenschaltung wie zuvor beschrieben. Bei einer anderen Ausführungsform umfasst die Verbindung 106 eine serielle, differentielle Zusammenschaltungsarchitektur, die verschiedenen Zusammenschaltungsnormen entspricht.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung, wie etwa einen Arbeitsspeicher (RAM), einen nicht flüchtigen (NV) Speicher oder einen anderen Speicher, der für die Vorrichtungen in dem System 100 zugänglich ist. Der Systemspeicher 110 ist über eine Speicherschnittstelle 116 mit dem Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Doppeldatenraten- (DDR) Speicherschnittstelle, eine Dual-Channel-DDR-Speicherschnittstelle und eine dynamische RAM (DRAM) Speicherschnittstelle.
  • Bei einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, ein Root-Complex oder eine Root-Controller in einer PCIe- bzw. PCIE- („Peripheral Component Interconnect (PCI) Express“) Verbindungshierarchie. Beispiele für den Controller-Hub 115 umfassen einen Chipsatz, einen Speicher-Controller-Hub (MCH), eine Northbridge, einen Zusammenschaltungs-Controller-Hub (ICH), eine Southbridge und einen Root-Controller/-Hub. Der Begriff Chipsatz bezieht sich oft auf zwei physisch getrennte Controller-Hubs, d. h. einen Speicher-Controller-Hub (MCH), der mit einem Zusammenschaltungs-Controller-Hub (ICH) gekoppelt ist. Es sei zu beachten, dass derzeitige Systeme oft den MCH mit dem Prozessor 105 integriert umfassen, während der Controller 115 mit E/A-Vorrichtungen ähnlich wie nachstehend beschrieben kommunizieren soll. Bei einigen Ausführungsformen wird wahlweise Peer-to-Peer-Routing über den Root-Complex 115 unterstützt.
  • Dabei ist der Controller-Hub 115 mit dem Switch/der Brücke 120 über eine serielle Verbindung 119 gekoppelt. Die Ein-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Anschlüsse 117 und 121 bezeichnet werden können, umfassen einen Protokollschichtstapel oder setzen diesen um, um eine Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. Bei einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 gekoppelt sein.
  • Der Switch/die Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d. h. in einer Hierarchie nach oben zu einem Root-Complex, zum Controller-Hub 115, und stromabwärts, d. h. in einer Hierarchie nach unten von einem Root-Controller, einem Prozessor 105 oder einem Systemspeicher 110 weg zu der Vorrichtung 125. Der Switch 120 wird bei einer Ausführungsform als eine logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie etwa mit einer E/A-Vorrichtung, einem Netzwerkschnittstellen-Controller, einer Zusatzkarte, einem Audioprozessor, einem Netzwerkprozessor, einer Festplatte, einer Speichervorrichtung, einer CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichervorrichtung, einer Firewire-Vorrichtung, einer USB- („Universal Serial Bus“) Vorrichtung, einem Scanner und anderen Ein-/Ausgabevorrichtungen. Oft wird im PCIe-Sprachgebrauch eine derartige Vorrichtung als Endpunkt bezeichnet. Obwohl dies nicht spezifisch gezeigt wird, kann die Vorrichtung 125 eine PCIe-zu-PCIIPCI-X-Brücke umfassen, um frühere PCI-Vorrichtungen oder eine andere Version davon zu unterstützen. Endpunktvorrichtungen bei PCIe werden häufig als vererbte, PCIe- oder Root-Complexintegrierte Endpunkte eingestuft.
  • Der Grafikbeschleuniger 130 ist ebenfalls mit dem Controller-Hub 115 über eine serielle Verbindung 132 gekoppelt. Bei einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und entsprechend die E/A-Vorrichtung 125 sind dann mit dem ICH gekoppelt. Die E/A-Module 131 und 118 sollen auch einen Protokollschichtstapel umsetzen, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich wie die obige MCH-Diskussion kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selber in dem Prozessor 105 integriert sein. Ferner können eine oder mehrere Verbindungen (z. B. 123) des Systems eine oder mehrere Verlängerungsvorrichtungen (z. B. 150), wie etwa Retimer, Redriver, Repeater usw., umfassen.
  • Mit Bezug auf 2 ist eine Ausführungsform eines Protokollschichtstapels abgebildet. Der Protokollschichtstapel 200 umfasst eine beliebige Form eines Kommunikationsschichtstapels, wie etwa einen QPI- („Quick Path Interconnect“) Stapel, einen PCIe-Stapel, einen Hochleistungs-Computerzusammenschaltungsstapel der nächsten Generation oder einen anderen Schichtstapel. Obwohl die direkt vorstehende Diskussion mit Bezug auf 1 bis 4 mit Bezug auf einen PCIe-Stapel erfolgt, können die gleichen Konzepte auf andere Zusammenschaltungsstapel angewendet werden. Bei einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der eine Transaktionsschicht 205, eine Verbindungschicht 210 und eine Bitübertragungsschicht 220 umfasst. Eine Schnittstelle, wie etwa die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt sein. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das bzw. die einen Protokollstapel umsetzt/umfasst.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten mitzuteilen. Die Pakete werden in der Transaktionsschicht 205 und der Datenverbindungsschicht 210 gebildet, um die Informationen von der Sendekomponente zur Empfangskomponente zu übermitteln. Wenn die gesendeten Pakete durch die anderen Schichten gehen, werden sie um zusätzliche Informationen erweitert, die notwendig sind, um Pakete auf diesen Schichten zu handhaben. Auf der Empfangsseite erfolgt der umgekehrte Prozess, und die Pakete werden von ihrer Darstellung auf der Bitübertragungsschicht 220 in die Darstellung auf der Datenverbindungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form, die von der Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann, umgewandelt.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern der Vorrichtung und der Zusammenschaltungsarchitektur, wie etwa einer Datenverbindungschicht 210 und einer Bitübertragungsschicht 220, bereitstellen. In dieser Hinsicht ist eine Hauptverantwortung der Transaktionsschicht 205 das Zusammenstellen und Auseinandernehmen von Paketen (d. h. von Transaktionsschichtpaketen bzw. TLPs). Die Transaktionsschicht 205 verwaltet typischerweise eine kreditbasierte Flusssteuerung für TLPs. PCIe setzt geteilte Transaktionen um, d. h. Transaktionen mit zeitlich getrennter Anfrage und Antwort, die es einer Verbindung ermöglichen, anderen Verkehr zu transportieren, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zudem verwendet PCIe eine kreditbasierte Flusssteuerung. Bei diesem Schema bietet eine Vorrichtung einen anfänglichen Kreditbetrag für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie etwa am Controller-Hub 115 in 1, zählt die Anzahl von Krediten, die von jedem TLP verbraucht werden. Eine Transaktion kann gesendet werden, falls die Transaktion ein Kreditlimit nicht überschreitet. Beim Empfang einer Antwort wird ein Kreditbetrag zurückerstattet. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz der Kreditrückkehr sich nicht auf die Leistung auswirkt, solange das Kreditlimit nicht erreicht wird.
  • Bei einer Ausführungsform umfassen vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, einen Ein-Ausgabe-Adressenraum und einen Nachrichtenadressenraum. Speicherplatztransaktionen umfassen eine oder mehrere von Leseanfragen und Schreibanfragen, um Daten zu/von einer speicherzugeordneten Stelle zu übertragen. Bei einer Ausführungsform können Speicherplatztransaktionen zwei verschiedene Adressenformate, z. B. ein kurzes Adressenformat, wie etwa eine 32-Bit-Adresse, oder ein langes Adressenformat, wie etwa eine 64-Bit-Adresse, verwenden. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe Vorrichtungen zuzugreifen. Transaktionen für den Konfigurationsraum umfassen Leseanfragen und Schreibanfragen. Nachrichtenraumtransaktionen (bzw. einfach Nachrichten) sind definiert, um die bandinterne Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher stellt bei einer Ausführungsform die Transaktionsschicht 205 eine Paketkopfzeile/-nutzlast 206 zusammen. Das Format für aktuelle Paketkopfzeilen/-nutzlasten ist in der PCIe-Spezifikation auf der Webseite der PCIe-Spezifikation zu finden.
  • Kurz mit Bezug auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors abgebildet. Bei einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Übermitteln von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifizierung von Transaktionen in einem System. Andere mögliche Verwendungen umfassen das Verfolgen von Änderungen der Standardtransaktionsgliederung und der Verknüpfung der Transaktion mit Kanälen.
  • Der Transactiondeskriptor 300 umfasst ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306. Bei dem abgebildeten Beispiel ist das globale Kennungsfeld 302 dargestellt, wie es ein lokales Transaktionskennungsfeld 308 und ein Quellkennungsfeld 310 umfasst. Bei einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anfragen einzigartig.
  • Gemäß einer Umsetzung ist das lokale Transaktionskennungsfeld 308 ein Feld, das durch einen Anfrageagenten generiert wird, und es ist für alle ausstehenden Anfragen, die eine Fertigstellung für diesen anfragenden Agenten erfordern, einzigartig. Außerdem identifiziert bei diesem Beispiel die Ausgangskennung 310 den anfragenden Agenten innerhalb der PCIe-Hierarchie einzigartig. Entsprechend stellt zusammen mit der Quell-ID 310 das lokale Transaktionskennungsfeld 308 eine globale Identifizierung einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 gibt die Kennzeichen und Beziehungen der Transaktion vor. In dieser Hinsicht wird das Attributfeld 304 möglicherweise verwendet, um zusätzliche Informationen bereitzustellen, welche die Änderung der Standardhandhabung von Transaktionen ermöglichen. Bei einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Gliederungsfeld 316 und No-Snoop-Feld 318. Dabei kann ein Prioritätsunterfeld 312 von einem Initiator geändert werden, um der Transaktion eine Priorität zuzuteilen. Das reservierte Attributfeld 314 bleibt für eine zukünftige oder herstellerdefinierte Nutzung reserviert. Mögliche Nutzungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfeldes umgesetzt werden.
  • Bei diesem Beispiel wird das Gliederungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die den Typ der Gliederung übermitteln, der die Standardgliederungsregeln ändern kann. Gemäß einer beispielhaften Umsetzung bezeichnet ein Gliederungsattribut „0“, dass Standardgliederungsregeln anzuwenden sind, wobei ein Gliederungsattribut „1“ eine lockere Gliederung bedeutet, bei der Schreibvorgänge andere Schreibvorgänge in der gleichen Richtung überholen können und Lesefertigstellungen Schreibvorgänge in der gleichen Richtung überholen können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen ausspioniert werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion verknüpft ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 210, die auch als Datenverbindungschicht 210 bezeichnet wird, dient als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220. Bei einer Ausführungsform besteht eine Aufgabe der Datenverbindungschicht 210 darin, einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung bereitzustellen. Eine Seite der Datenverbindungsschicht 210 nimmt TLPs an, die von der Transaktionsschicht 205 zusammengestellt werden, wendet eine Paketsequenzkennung 211, d. h. eine Identifizierungsnummer oder Paketnummer, an, berechnet und wendet einen Fehlerdetektionscode, d. h. CRC 212, an, und unterbreitet die geänderten TLPs der Bitübertragungsschicht 220 zur Übertragung über eine physische an eine externe Vorrichtung.
  • Bitübertragungsschicht
  • Bei einer Ausführungsform umfasst die Bitübertragungsschicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222, um ein Paket physisch an eine externe Vorrichtung zu senden. Dabei ist der logische Unterblock 221 für die „digitalen“ Funktionen der Bitübertragungsschicht 221 verantwortlich. In dieser Hinsicht umfasst der logische Unterblock einen Sendeabschnitt, um ausgehende Informationen für die Sendung durch den physischen Unterblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 210 weitergegeben werden.
  • Der physische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird von dem logischen Unterblock 221 mit Symbolen versorgt, die der Sender serialisiert und an eine externe Vorrichtung sendet. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Unterblock 221 zugeführt. Bei einer Ausführungsform wird ein 8b/10b-Sendecode verwendet, bei dem Zehn-Bit-Symbole gesendet/empfangen werden. Dabei werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 einzurahmen. Zudem stellt bei einem Beispiel der Empfänger auch einen Symboltaktgeber bereit, der von dem ankommenden seriellen Strom wiederhergestellt wird.
  • Wie zuvor angegeben ist, obwohl die Transaktionsschicht 205, die Verbindungschicht 210 und die Bitübertragungsschicht 220 mit Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollschichtstapels besprochen werden, ein Protokollschichtstapel nicht darauf eingeschränkt. In der Tat kann ein beliebiges geschichtetes Protokoll einbezogen/umgesetzt werden. Als ein Beispiel umfasst ein Anschluss/eine Schnittstelle, der bzw. die als ein geschichtetes Protokoll dargestellt ist: (1) eine erste Schicht, um Pakete zusammenzustellen, d. h. eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h. eine Verbindungschicht; und eine dritte Schicht, um die Pakete zu senden, d. h. eine Bitübertragungsschicht. Als ein spezifisches Beispiel wird ein geschichtetes Protokoll mit einer gemeinsamen Standardschnittstelle (CSI) verwendet.
  • Als Nächstes mit Bezug auf 4 ist eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Struktur abgebildet. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung abgebildet ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf eingeschränkt, da sie einen beliebigen Sendeweg zum Senden von seriellen Daten umfasst. Bei der gezeigten Ausführungsform umfasst eine grundlegende PCIe-Verbindung zwei differentiell angesteuerte Niederspannungssignalpaare: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Entsprechend umfasst die Vorrichtung 405 eine Sendelogik 406, um Daten an die Vorrichtung 410 zu senden, und eine Empfangslogik 407, um Daten von der Vorrichtung 410 zu empfangen. Mit anderen Worten sind zwei Sendewege, d. h. die Wege 416 und 417, und zwei Empfangswege, d. h. die Wege 418 und 419, in einer PCIe-Verbindung enthalten.
  • Ein Sendeweg bezieht sich auf einen beliebigen Weg zum Senden von Daten, wie etwa eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationsweg. Eine Verknüpfung zwischen zwei Vorrichtungen, wie etwa einer Vorrichtung 405 und einer Vorrichtung 410, wird als Verbindung bezeichnet, wie etwa die Verbindung 415. Eine Verbindung kann eine einzige Spur unterstützen - wobei jede Spur einen Satz von differentiellen Signalpaaren darstellt (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere Spuren zusammenlegen, die durch xN bezeichnet werden, wobei N eine beliebige unterstützte Verbindungsbreite ist, wie etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar bezieht sich auf zwei Sendewege, wie etwa die Leitungen 416 und 417, um differentielle Signale zu senden. Als ein Beispiel, wenn die Leitung 416 von einem Niederspannungsniveau auf ein Hochspannungsniveau umschaltet, d. h. eine ansteigende Flanke, steuert die Leitung 417 von einem logischen Hoch-Pegel auf einen logischen Tief-Pegel, d. h. eine absteigende Flanke. Differentielle Signale weisen möglicherweise bessere elektrische Kennzeichen auf, wie etwa eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschwingung/-Unterschwingung, Nachschwingung usw. Dies erlaubt ein besseres Zeitfenster, das schnellere Sendefrequenzen ermöglicht.
  • Bei einigen Umsetzungen kann eine Verbindung, wie etwa eine Verbindung, die PCIe, USB, UPI oder einem anderen Zusammenschaltungsprotokoll entspricht, einen oder mehrere Retimer oder andere Verlängerungsvorrichtungen, wie etwa einen Redriver oder Repeater, umfassen. Eine Retimer-Vorrichtung (oder einfach „Retimer“), kann aktive elektronische Vorrichtungen umfassen, die digitale E/A-Signale empfangen und weitersenden (taktberichtigen). Retimer können verwendet werden, um die Länge eines Kanals zu verlängern, der mit einem digitalen E/A-Bus verwendet werden kann.
  • 5A bis 5C sind vereinfachte Blockdiagramme 500a-c, die beispielhafte Umsetzungen einer Verbindung abbilden, die zwei Systemkomponenten oder Vorrichtungen, wie etwa eine stromaufwärtige Komponente 505 und eine stromabwärtige Komponente 510, zusammenschalten. Eine stromaufwärtige Komponente 505 und eine stromabwärtige Komponente 510 können direkt verbunden sein, und zwar manchmal ohne Retimer, Redriver oder Repeater, die in der Verbindung zwischen den beiden Komponenten 505, 710 angeordnet sind, wie etwa bei dem Beispiel aus 5A gezeigt. In anderen Fällen kann ein Retimer (z. B. 515) bereitgestellt werden, um die Verbindung zu verlängern, welche die stromaufwärtige Komponente 505 und die stromabwärtige Komponente 510 verbindet, wie etwa in 5B abgebildet. Bei noch anderen Umsetzungen können zwei oder mehrere Retimer (z. B. 515, 520) in Reihe bereitgestellt werden, um eine Verbindung weiter zu verlängern, welche die stromaufwärtige Komponente 505 und die stromabwärtige Komponente 510 verbindet. Beispielsweise kann eine bestimmte Zusammenschaltungstechnologie oder ein Protokoll eine maximale Kanallänge vorgeben, und ein oder mehrere Retimer (z.B. 515, 520) können bereitgestellt werden, um die räumliche Länge des Kanals zu verlängern, der die beiden Vorrichtungen 505, 510 verbindet. Beispielsweise kann das Bereitstellen von Retimern 515, 520 zwischen der stromaufwärtigen Komponente 505 und der stromabwärtigen Komponente 510 eine Verbindung erlauben, die dreimal so lang wie die maximale Länge ist, die für eine Verbindung ohne diese Retimer, z.B. 515, 520, vorgegeben ist, unter anderen beispielhaften Umsetzungen.
  • Eine Verbindung, die einen oder mehrere Retimer integriert, kann zwei oder mehrere separate elektrische Unterverbindungen mit Datenraten bilden, die mit Datenraten vergleichbar sind, die von Verbindungen erreicht werden, die ähnliche Protokolle aber ohne Retimer verwenden. Beispielsweise kann eine Verbindung, die einen einzigen Retimer umfasst, eine Verbindung mit zwei getrennten Unterverbindungen bilden, die jeweils mit 8,0 GT/s oder höher funktionieren. 6A bis 6B bilden vereinfachte Blockdiagramme 600a-b von beispielhaften Verbindungen ab, die einen oder mehrere Retimer umfassen. Beispielsweise kann in 6A eine Verbindung, die eine erste Komponente 605 (z. B. eine stromaufwärtige Komponente) mit einer zweiten Komponente 610 (z.B. einer stromabwärtigen Komponente) verbindet, einen einzigen Retimer 615a umfassen. Eine erste Unterverbindung 620a kann die erste Komponente 605 mit dem Retimer 615a verbinden, und eine zweite Unterverbindung 620b kann den Retimer 615a mit der zweiten Komponente verbinden. Wie in 6B gezeigt, können mehrere Retimer 615a, 615b verwendet werden, um eine Verbindung zu verlängern. Drei Unterverbindungen 620a-c können über die beiden Retimer 615a, 615b definiert werden, wobei eine erste Unterverbindung 615a die erste Komponente mit dem ersten Retimer 615a verbindet, eine zweite Unterverbindung den ersten Retimer 615a mit dem zweiten Retimer 615b verbindet, und die dritte Unterverbindung 615c den zweiten Retimer 615b mit der zweiten Komponente verbindet.
  • Wie bei den Beispielen aus 6A bis 6B gezeigt, kann ein Retimer bei einigen Umsetzungen zwei Pseudoanschlüsse umfassen, und die Pseudoanschlüsse können ihre jeweilige stromabwärtige/stromaufwärtige Orientierung dynamisch bestimmen. Jeder Retimer 615a, 615b kann einen stromaufwärtigen Weg und einen stromabwärtigen Weg aufweisen. Ferner können die Retimer 615a, 615b Betriebsmodi unterstützen, die einen Weiterleitungsmodus und einen Ausführungsmodus umfassen. Ein Retimer 615a, 615b kann in manchen Fällen Daten decodieren, die auf der Unterverbindung empfangen werden, und die Daten neu codieren, die er stromabwärts auf seiner anderen Unterverbindung weiterleiten soll. In manchen Fällen kann der Retimer einige Werte in den Daten ändern, die er empfängt, wie etwa wenn gegliederte eingestellte Daten verarbeitet und weitergeleitet werden. Zudem kann ein Retimer möglicherweise eine beliebige Breitenoption als seine maximale Breite unterstützen, wie etwa einen Satz von Breitenoptionen, die durch eine Spezifikation, wie etwa PCIe, definiert sind.
  • In dem Maße wie die Datenraten der Zusammenschaltungen (z. B. PCIe, UPI, OpenCAPI™, Gen-Z™, Universal Serial Bus (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Infinity™, Common Communication Interface (CCI) von Advanced Micro Device™ (AMD™) oder die Zusammenschaltung Centriq™von Qualcomm™ usw.) ansteigen, werden zunehmend Retimer verwendet, um die Kanalreichweite zu erweitern. Retimer können den empfangenen Bitstrom aufnehmen, bevor der Bitstrom regeneriert und weitergeleitet wird. In manchen Fällen können die Retimer protokollkundig sein und eine vollständige Bitübertragungsschicht oder sogar eine zusätzliche Logik besitzen, um einen Teil des Protokollstapels umzusetzen, damit der Retimer an Teilen des Trainings und der Verhandlung für die Verbindung (LTSSM) teilnehmen kann, wozu Entzerrung von Sendern/Empfängern und andere Verbindungstrainingsaktivitäten gehören. Bei Hochgeschwindigkeitsverbindungen kann das Umsetzen eines Retimers mit einem vollständigen Protokollstapel oder einer vollständigen Bitübertragungs- oder Verbindungschichtlogik usw. eine unannehmbare Latenz für die Verbindungen hinzufügen, die zwei oder mehrere Vorrichtungen über einen oder mehrere Retimer verbinden. In der Tat gibt es immer mehr Anwendungen, die wahrscheinlich Retimer oder andere Kanalverlängerungsvorrichtungen verwenden werden, wenn sich die Betriebsfrequenzen von externen Schnittstellen weiter erhöhen, während die Kanalverbesserung sich etwas langsamer verbessert. Ferner verlangen viele Anwendungen größere Kanallängen, wie etwa Datenzentren, Cloud- und Serveranwendungen, bei denen Zusammenschaltungskanäle über mehrere Zoll gehen können, wobei sie die maximalen Kanallängen ausreizen oder überschreiten, die nativ von aufkommenden Hochgeschwindigkeitszusammenschaltungen unterstützt werden. Beispielsweise kann die Generation 4 von PCI Express, die ausgelegt ist, um mit einer Frequenz von 16,0 GT/s zu funktionieren, eine bestimme begrenzte maximale Kanallänge bereitstellen (z. B. 14" oder weniger). Für Serveranwendungen, bei denen die Kanallängen typischerweise 20 Zoll überschreiten können, können ein Retimer, ein Redriver oder andere Repeater-Elemente gesucht werden, um den Kanal zu verlängern. Ähnlich können für eine Cache-kohärente Schnittstelle von Ultra Path Interconnect (UPI) Verlängerungsvorrichtungen ebenso verwendet werden, um längere Plattformen bei 10,4 GT/s zu unterstützen, unter anderen Beispielen.
  • Die Geschwindigkeit von differentiellen seriellen Hochgeschwindigkeitsverbindungen nimmt weiter zu, wobei man davon ausgeht, dass die Geschwindigkeiten von zukünftigen Standard- und Nicht-Standard-Anwendungen noch weiter ansteigen werden. Trotz dieser Fortschritte ist die physische Größe zahlreicher Systeme und Vorrichtungen unverändert geblieben - wodurch die Auslegung von differentiellen Hochgeschwindigkeitskanälen eine größere Herausforderung ist, wenn die E/A-Geschwindigkeiten zunehmen. Viele Kanalbauformen erfordern nun eine aktive Verlängerungsvorrichtung, wie etwa einen Retimer, und der Anteil von Kanalbauformen, bei denen eine Verlängerungsvorrichtung notwendig ist, nimmt zu. Verlängerungsvorrichtungen können Beispiele wie etwa Repeater, Redriver und Retimer umfassen. Von diesen Beispielen bieten die Retimer die größte Verlängerung (100 % pro Retimer) zusammen mit einer garantierten Zusammenarbeitsfähigkeit. Retimer haben jedoch auch einige Nachteile gegenüber einfacheren rein analogen Redriver-Verlängerungsvorrichtungen, wozu erhöhte Kosten, Latenz und Energie gehören. Entsprechend können die Entwicklung und Umsetzung eines Retimers für Hochgeschwindigkeitsschnittstellen auf diverse Probleme stoßen. Beispielsweise kann bei Hochgeschwindigkeits-Cache-Kohärenzprotokollen ein Kanal extrem empfindlich für Latenz sein, so dass selbst das Hinzufügen einer zusätzlichen Latenz von Nanosekunden pro Retimer-Sprung auf Grund des Leistungsverlustes, der durch den oder die Retimer eingebracht wird, unhaltbar wird. Die Latenz kann auch bei Beispielen, wie etwa bei Speicheranwendungen (z. B. Speichertreiber und Speicherdienstprozessor) ein Problem sein, und man geht davon aus, dass derartige Herausforderungen nur schwieriger werden, wenn die Technologien von nicht flüchtigen Speichern (NVM) der nächsten Generation eine höhere Bandbreite und niedrigere Latenz bereitstellen, wodurch sich die Lücke zum Doppeldatenraten-(DDR) Speicher (z. B. einem synchronen DDR-Arbeitsspeicher (SDRAM)) schließt.
  • Den Verlängerungsvorrichtungen kann es bei einigen Umsetzungen nativ an Mechanismen und Logik fehlen, um Fehler, die an der Verlängerungsvorrichtung vorkommen oder hauptsächlich zu detektieren sind, zu detektieren und zu melden. Infolge des Fehlens von standardisierten Fehlerhandhabungsmechanismen an der Verlängerungsvorrichtung führt dies zu einem ähnlichen Fehlen eines standardisierten Mechanismus, um die Ursache eines Verbindungsfehlers oder das Vorliegen einer versagenden Vorrichtung auf einer Verbindung, die eine oder mehrere Verlängerungsvorrichtungen umfasst, zu finden. Diese Nachteile können daher die Zuverlässigkeits-, Verfügbarkeits- und Dienstbarkeits- (RAS) Fähigkeiten des entsprechenden Systems auf Grund der Unmöglichkeit der Überwachung und Fehlerhandhabung an den Verlängerungsvorrichtungen behindern. Angesichts dieser Tatsache können Verbindungswiederherstellungsprotokolle untergraben werden, die nicht nur der Annahme und der Verwendung von Verlängerungsvorrichtungen, sondern auch der Annahme von Zusammenschaltungsprotokollen der nächsten Generation und von entsprechenden Verbindungen entgegenwirken, wobei die Geschwindigkeit noch mehr ansteigen und zusätzlichen Druck auf die räumlichen Längen von Zusammenschaltungskanälen ausüben soll, unter anderen beispielhaften Problemen.
  • Mit Bezug auf 7 ist ein vereinfachtes Blockdiagramm 700 gezeigt, das eine beispielhafte Umsetzung eines verbesserten Retimers 710 zeigt, der mit einer Logik ausgestattet ist, um es dem Retimer 710 zu ermöglichen, Fehler und andere Events an dem Retimer 710 zu detektieren und aufzuzeichnen, so dass diese aufgezeichneten Events von der Software oder Hardware an einer oder beiden der stromaufwärtigen (z. B. 705) und stromabwärtigen (z. B. 715) Endpunktvorrichtungen auf der Verbindung gebraucht werden können, um Fehler und andere Events, die sich auf die Verbindung auswirken, besser zu detektieren und zu diagnostizieren. Bei einer beispielhaften Umsetzung kann der Retimer eine Retimer-Logik 720 umfassen, die mindestens teilweise als Hardware-Schaltungen umgesetzt ist, um Signale und entsprechende Daten zu regenerieren, die von dem Retimer 710 (z. B. am Empfänger Rx (B) oder Rx (C)) empfangen werden, um diese regenerierten Signale stromabwärts an den entsprechenden Sender (z. B. jeweils Tx(C) oder Tx(B)) weiterzuleiten. Die Protokolllogik 725 kann bei einigen Umsetzungen eines Retimers 710 zusätzlich bereitgestellt werden, kann jedoch eine Teilmenge der Schaltungen und einer anderen Logik sein, die benötigt werden, um einen vollständigen Protokollstapel eines bestimmten Zusammenschaltungsprotokolls (z. B. OpenCAPI™, Gen-Z™, UPI, Universal Serial Bus, (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Infinity™ von Advanced Micro Device™ (AMD™), Common Communication Interface (CCI), oder die Zusammenschaltung Centriq™ von Qualcomm™ usw.) umzusetzen. Beispielsweise kann bei einem Beispiel die Protokolllogik 725 auf die Bitübertragungsschichtlogik von einem oder mehreren Protokollen eingeschränkt sein und kann verwendet werden, um es dem Retimer zu ermöglichen, an einer Entzerrung, einem Austritt/Eintritt in einen elektrischen Inaktivzustand, Geschwindigkeitsänderungen, Verhandlung und Änderungen der Verbindungsbreite, unter anderen Aufgaben der Bitübertragungsschicht (und auch Aufgaben nicht der Bitübertragungsschicht) teilzunehmen, ohne schädlich hohe Pegel zusätzlicher Latenz zu dem Retimer hinzu zu führen. Eine Verlängerungsvorrichtung, wie etwa der Retimer 710, kann ferner mit einer Fehlerdetektionslogik 730 ausgestattet sein, die ganz oder mindestens teilweise in dedizierten Hardware-Schaltungen des Retimers 710 umgesetzt ist, um es dem Retimer 710 zu ermöglichen, einen gewissen Satz von Events an dem Retimer zu detektieren, wie etwa Empfänger- oder Sender-Verbindungsfehler, interne Fehler oder Events des Retimers, Entzerrungsfehler, unter anderen Beispielen. Wenn Fehler und andere Events unter Verwendung der Fehlerdetektionslogik 730 detektiert werden, kann die Fehlerdetektionslogik 730 das Event in einem oder mehreren Event-Registern 735 aufzeichnen, die in dem internen Computerspeicher des Retimers 710 bereitgestellt werden.
  • Ein beispielhaftes Retimer-Event-Register 735 kann als ein Interrupt-Event-Register umgesetzt werden und Felder oder Register für eine Menge von üblichen oder standardmäßigen Fehlertypen bereitzustellen, wobei es auch Platz für vorrichtungsspezifische Fehlerlisten reserviert. Bei einigen Umsetzungen werden die Event-Register 735 gemäß einem standardisierten Format definiert, wie etwa gemäß einer strukturierten Fähigkeit und/oder einem Statusregister, wobei die Felder der Register gemäß einem bestimmten Protokoll definiert sind. Beispielsweise kann die Struktur des Registers 735 definiert sein, um auf der Struktur und den Feldern eines existierenden Registers, die in einem Zusammenschaltungsprotokoll definiert sind, wie etwa in einem PCIe-basierten Fähigkeits- und Statusregister, zu basieren oder diese mindestens teilweise anzunehmen, unter anderen möglichen Beispielen.
  • Wenn Events detektiert und in dem Retimer 710 aufgezeichnet werden, kann der Retimer 710 Warnungen, Nachrichten oder andere Signale einer oder beiden von der stromaufwärtigen Endpunktvorrichtung 705 und der stromabwärtigen Vorrichtung 715, die durch die Punkt-zu-Punkt-Verbindung verbunden sind, mitteilen, um die Endpunktvorrichtung (z. B. 705, 715) oder eine bestimmte Logik oder Komponenten einer Endpunktvorrichtung (z. B. einen Interrupt-Handler, einen Hauptplatinenverwaltungs-Controller (BMC), ein System-BIOS oder einen anderen Event-Handler) zu informieren, dass Event-Informationen in das Event-Register 735 geschrieben wurden oder werden. Bei einigen Umsetzungen kann dieses Signal als eine bandinterne Benachrichtigung umgesetzt werden, die mit einem Zusammenschaltungsprotokoll übereinstimmt, das auf der Verbindung verwendet wird, wie etwa einem Interrupt, oder über das Setzen von einem oder mehreren Bits in einer gegliederten Menge, einer Trainingssequenz, einem Paket, einer Nachricht oder einem anderen definierten Signal. Bei einigen Umsetzungen kann die Benachrichtigung des Events bandextern durch den Retimer 710 mitgeteilt werden, beispielsweise unter Verwendung eines Seitenbandkanals (z. B. 755). Bei einigen Umsetzungen können sowohl bandinterne als auch bandexterne Benachrichtigungen von dem Retimer 710 unterstützt werden. Ein bandexterner Kanal kann bei einem Beispiel durch einen Systemverwaltungsbus (SMBUS) umgesetzt werden. Bei einigen Umsetzungen kann die Benachrichtigung über einen dedizierten Interrupt-Pin mitgeteilt werden, der an dem Retimer 710 bereitgestellt wird, unter anderen beispielhaften Umsetzungen.
  • Beim Detektieren des Vorliegens eines Events, das in dem internen Event-Register eines Retimers 710 aufgezeichnet ist (basierend auf der Detektion des Events durch den Retimer), kann ein Systemcontroller auf das Event-Register 735 zugreifen und dieses auslesen, um Einzelheiten bezüglich des Events zu identifizieren, und soweit möglich oder relevant, um eine Korrekturmaßnahme einzuleiten, um das Event zu beheben. Bei einigen Umsetzungen kann der Systemcontroller als System-Software (z. B. BIOS, BMC, Betriebssystem (OS) usw.) umgesetzt sein, um auf das Event-Register 735 zuzugreifen und eine Fehlerdetektierung, Fehlermeldung und Fehlerberichtigung umzusetzen und dadurch die RAS-Reichweite des Systems durch den Fehlerhandhabungsmechanismus, der durch die verbesserte Retimer-Vorrichtung 710 ermöglicht wird, zu verlängern. Beispielsweise kann der Systemcontroller ein Umlernen der Verbindung durchsetzen, eine oder mehrere der Vorrichtungen (z. B. 705, 710, 715) auf der Verbindung neukonfigurieren, unter anderen beispielhaften Maßnahmen. Durch diese Verbesserungen an Verlängerungsvorrichtungen, wie etwa dem beispielhaften Retimer 710, kann ein standardisierter Mechanismus definiert werden, durch den die System-Software Fehlerprotokollierung, Signalgebung und Handhabung auf Verbindungen, die Verlängerungsvorrichtungen umfassen, handhaben kann und dadurch den Gesamt-RAS des Systems verbessern kann, wozu andere beispielhafte Vorteile gehören.
  • Mit Bezug auf das Beispiel aus 8A ist ein vereinfachtes Blockdiagramm 800a gezeigt, das eine beispielhafte Umsetzung einer verbesserten Verlängerungsvorrichtung (z. B. einen Retimer 710) abbildet, die eine Fehlerdetektionslogik 730 umfasst, um diverse Events an der Verlängerungsvorrichtung 710 zu detektieren und ein oder mehrere Registerfelder des Event-Registers 735 auszufüllen, um Einzelheiten bezüglich des detektierten Events aufzuzeichnen. Bei diesem Beispiel kann die Verlängerungsvorrichtung eine Protokolllogik (z. B. eine Bitübertragungsschichtlogik 725) verwenden, um eine bandinterne Benachrichtigung 820 eines Events, das an der Verlängerungsvorrichtung 710 detektiert wird, mitzuteilen. In anderen Fällen kann eine der Endpunktkomponenten (z. B. 705, 715) die bandinterne Nachricht, wie etwa einen Interrupt (z. B. einen Systemverwaltungs-Interrupt (SMI), einen Systemsteuerungs-Interrupt (SCI), einen Nachricht-Signalisiert-Interrupt (MSI) usw.), generieren. Beispielsweise kann ein Verbindungsfehler an einer von der stromaufwärtigen und/oder der stromabwärtigen Komponente detektiert werden, und dieser Fehler kann in der Tat auf einem Fehler basieren, der an der Verlängerungsvorrichtung 710 vorkommt, was die Verlängerungsvorrichtung 710 detektiert und unter Verwendung der Fehlerdetektionslogik 730 und des Event-Registers 735 dokumentiert. In beiden Fällen kann die bandinterne Nachricht 820 einer der Endpunktkomponenten (z. B. 705), die auf der Verbindung angeschlossen sind, welche die Verlängerungsvorrichtung umfasst, mitgeteilt werden, so dass ein Event-Handler (z. B. 805), der die Endpunktkomponente (z. B. 705) verwaltet oder anderweitig damit in Kommunikation steht, detektieren kann, dass ein Event durch die Verlängerungsvorrichtung über die bandinterne Nachricht 820 gemeldet wurde. Bei einigen Umsetzungen kann der Event-Handler 805 als System-Software, System-BIOS, BMC, Interrupt-Handler oder andere Komponente des Systems, von dem mindestens die Vorrichtung 705 ein Bestandteil ist, umgesetzt werden. Manchmal kann mehr als ein Event-Handler 805 in dem System vorhanden sein und in der Lage sein, Events zu identifizieren und zu handhaben, die von einer Verlängerungsvorrichtung detektiert und gemeldet werden. Beispielsweise kann basierend auf dem Zustand des Systems oder dem Zeitpunkt, zu dem ein Event detektiert und gemeldet wird, ein BIOS- oder BMC-basierter Event-Handler verwendet werden, wobei während der Laufzeit ein OS-basierter Event-Handler verwendet werden kann, unter anderen Beispielen.
  • Weiter mit Bezug auf das Beispiel aus 8A kann bei einer (bandinternen) Benachrichtigung eines Events an der Verlängerungsvorrichtung 710 der Event-Handler 805 als Reaktion auf das Event-Register 735 zugreifen und dieses auslesen, um den Datensatz des entsprechenden Events zu identifizieren und Einzelheiten über den Event zu erheben. Basierend auf dem Typ und der Beschaffenheit des gemeldeten Events kann der Event-Handler 805 dann Maßnahmen auslösen oder treffen, um das Event zu beheben. Der Event-Handler 805 kann zusätzlich das Melden oder Protokollieren auf der Systemebene ausführen, um Informationen aufzuzeichnen, die von dem Event-Register der Verlängerungsvorrichtung gesammelt und mitgeteilt werden, unter anderen Beispielen. Bei einigen Umsetzungen können Fehlerberichtigung und Wiederherstellung das Auslösen eines Zurücksetzens oder Umlemens der Verbindung oder andere Lösungen, die in einem Zusammenschaltungsprotokoll definiert sind, das die Verbindung regiert, umfassen. In anderen Fällen kann eine Warnung, ein Bericht oder ein Service-Ticket durch den Event-Handler automatisch generiert werden, um auf menschlicher oder künstlicher Intelligenz (AI) basierte Systemadministratoren zu warnen, damit sie versuchen, das Problem zu beheben, das an der Verlängerungsvorrichtung 710 detektiert wurde, unter anderen Beispielen.
  • Mit Bezug auf 8B wird ein anderes vereinfachtes Blockdiagramm 800b gezeigt, das eine Umsetzung einer Verlängerungsvorrichtung zeigt, die mit einer Fehlerdetektionslogik und einem Event-Register ausgestattet ist, wie etwa hier an anderer Stelle besprochen. Bei dem Beispiel aus 8B ist die Verlängerungsvorrichtung ferner mit einem Seitenbandanschluss ausgestattet, um mit einer oder mehreren anderen Komponenten über einen entsprechenden Seitenbandkanal zu kommunizieren. Bei diesem Beispiel kann der Seitenbandkanal verwendet werden, um Daten und Taktsignale (z. B. 840) über den Seitenbandkanal zu übermitteln. Der Seitenbandkanal kann erweitert oder anderweitig konfiguriert sein, um ein Warnsignal (das beispielsweise über eine dedizierte Spur des Seitenbandkanals gesendet wird) zu unterstützen, um Fehler-Events mitzuteilen, die von der Verlängerungsvorrichtung 710 unter Verwendung der Fehlerdetektionslogik 730 detektiert werden (d. h. statt ein derartiges Event über einen bandinternen Kommunikationskanal (z. B. 830) mitzuteilen). Bei einem Beispiel kann ein dedizierter Seitenbandwarn-Pin an der Verlängerungsvorrichtung bereitgestellt werden, um eine Interrupt-Nachricht an einen Interrupt-Controller (z. B. 825) zu senden. Andere Umsetzungen können andere Typen von Event-Warnnachrichten an andere Komponenten eines Host-Systems oder eine andere Komponente, die mit einem System-Event-Handler gekoppelt ist (z. B. als System-Software umgesetzt, die mit der stromaufwärtigen Komponente 705 verknüpft ist), zu senden. Wie bei dem Beispiel aus 8A kann die Angabe des detektierten Fehlers, und damit eine explizite oder implizite Angabe, dass die Verlängerungsvorrichtung 710 auch entsprechende Informationen in ihrem lokalen Event-Register aufgezeichnet hat, bewirken, dass der Event-Handler 805 auf das Event-Register 735 zugreift und dieses ausliest und diese Informationen verwendet, um das Event, das von der Verlängerungsvorrichtung detektiert wird, zu protokollieren und/oder zu beheben.
  • Das Aktivieren der Fehlerdetektion an einem Retimer kann besonders vorteilhaft sein, um diverse Typen und Fälle von Fehlern zu detektieren, die ansonsten nicht detektierbar wären oder deren Detektion kostspielig wäre, wenn nur die Endpunkt- oder Systemfehlerdetektion verwendet würde. Als ein Beispiel kann bei Verbindungen, bei denen zwei oder mehrere Verlängerungsvorrichtungen (z. B. Retimer) verwendet werden, um die räumliche Länge einer Punkt-zu-Punkt-Verbindung, die zwei Endpunktkomponenten koppelt, zu verlängern, die Systemfehlerlogik mit einer ausreichenden Logik ausgestattet sein, um abzuleiten, dass ein Fehler, der durch einen Endpunkt detektiert wird, in der Tat von einem Retimer stammt, das System jedoch vielleicht nicht in der Lage ist zu bestimmen, welcher der mehreren Retimer die letztendliche Ursache des Fehlers war. Als ein anderes Beispiel kann es sein, dass einige Fehler für eine stromaufwärtige Komponente (und die entsprechende System-Software und den Fehler-Handler) effektiv nicht detektierbar sind. Beispielsweise kann es sein, dass Senderentzerrungsfehler angesichts des Vorliegens der zwei oder mehreren Retimer, die kaskadiert auf der Verbindung positioniert sind, nicht detektiert werden, da das stromaufwärtige System den Phase2/3-Senderentzerrungsstatus des oder der Retimer vielleicht nicht kennt. Zudem kann es sein, dass interne Fehler in Retimern, die keine Verbindungsfehler auslösen oder anderweitig nicht von den Endpunktkomponenten und System-Software zu entdecken sind, nicht detektiert werden, unter anderen beispielhaften Problemen.
  • Wie in 8A bis 8B dargestellt, kann ein beispielhaftes Event-Register Unterregister oder Felder umfassen, die jeweiligen Event-Typen gewidmet sind. Beispielsweise können Bitübertragungsschichtfehler (z. B. 810) ein Event-Typ sein, interne Retimer-Fehler (z.B. 815) können ein anderer Event-Typ sein, und so weiter. Für jeden Event-Typ können diverse detailliertere Events definiert werden, und die Register (z. B. 810, 815) können Felder umfassen, die für diese jeweiligen Event-Mengen spezifisch sind. Ferner kann ein Event-Register auch die Fehlerdetektionsfähigkeiten der Verlängerungsvorrichtung (z. B. 710) identifizieren, und kann auch angeben, welchen spezifischen Fehler ein Event-Handler (z. B. 805) handhaben oder ansonsten zum Melden durch die aktivierte Verlängerungsvorrichtung bezeichnen kann, unter anderen beispielhaften Informationen. Bei einigen Umsetzungen kann ein Event-Register 735 ein definiertes standardisiertes Format aufweisen. Eine derartige Standardisierung kann es Verlängerungsvorrichtungen verschiedener Typen, Modelle und Hersteller ermöglichen, austauschbar in diversen Systemumsetzungen verwendet zu werden, ohne dass ein System verschiedene entsprechende Treiber für jedes Verlängerungsvorrichtungsmodell installieren und aktualisieren müsste. Stattdessen können die Event-Handler erwarten, dass die Logik (z. B. eine standardmäßige Fehlerhandhabungslogik) Fehler handhabt, die von den Event-Registern detektiert und ausgelesen werden, die auf möglicherweise einem beliebigen Verlängerungsvorrichtungsmodell gehostet werden, das die standardisierten Event-Register umsetzt, und können die Logik wiederverwenden, unter anderen beispielhaften Vorteilen.
  • 9 ist eine Darstellung eines beispielhaften Event-Registerblocks 735, der gemäß einem definierten standardisierten Format umgesetzt wird, das als Event-Register über mehrere verschiedene Verlängerungsvorrichtungen von diversen Modellen und Herstellern übernommen werden kann. Bei dem bestimmten Beispiel aus 9 wird ein Event-Register mit einem Format bereitgestellt, das basierend auf einer PCIe-basierten Fähigkeit und einem Statusregister definiert ist. Ein derartiges Format kann dafür sorgen, dass die Register die Retimer-Fehlermeldefähigkeiten, das Aktivieren/Deaktivieren dieser Fähigkeiten (z. B. durch System-Software über das Register), Listen von Fehlertypen, das Maskieren/Demaskieren von Fehlertypen, den Status der Fehlerdetektion und die Statussteuerung für die Verlängerungsvorrichtung unter anderen Informationen und Einstellungen angeben. Derartige Informationen können gemäß einer Struktur ausgebildet werden, die für einen Konfigurationsraum eines Systems, wie etwa einen PCIe-Konfigurationsraum/erweiterten Konfigurationsraum, definiert ist.
  • Bei dem bestimmten Beispiel aus 9 wird eine PCIe-basierte Fähigkeits- und Statusregisterstruktur als Grundlage für ein Event-Register eines Retimers verwendet. Beispielsweise kann ein Registerblock eine herkömmliche Vorrichtungsfähigkeitsstruktur 905 mit zusätzlichen Event-Registern 930, 935, 940 usw. zum Aufzeichnen von Retimer-detektierten Fehlern umfassen. Bei einigen Umsetzungen können zusätzliche Aufzeichnungen (z. B. 965) in dem Registerblock gepflegt werden, wie etwa Spurentzerrungswerte, die während des Einlemens der Verbindung am Retimer festgestellt werden, unter anderen Konfigurationsinformationen und anderen Daten. Wie bei dem bestimmten Beispiel aus 9 dargestellt, wie es einem PCIe-basierten Fähigkeits- und Statusregister (z. B. dem Interrupt-Pin-Register (INTPIN) und dem Interrupt-Line-Register (INTL)) entspricht. Ähnlich können Fähigkeitsregisterfelder 910 für die Vorrichtungsfähigkeitsstruktur 905 bereitgestellt werden, die Vorrichtungssteuerregisterfelder 915, Vorrichtungsstatusregisterfelder 920 und eine Vorrichtungsstatusmaske 925 umfasst, die verwendet werden können, um die allgemeinen Fähigkeiten und Vorrichtungsfunktionen anzugeben, die durch den Retimer unterstützt werden (z. B. Zurücksetzen auf Funktionsebene, korrigierbare Fehlermeldung, Meldung schwerer Fehler, Meldung nicht schwerer Fehler usw.), wie es in einer Spezifikation eines PCIe-basierten Protokolls definiert sein kann. Zusätzlich zu einer herkömmlichen PCIe-Vorrichtungsfähigkeitsstruktur 905 können zusätzliche Event-Register 930, 935, 940 usw. definiert werden, die sich an die allgemeine Definition der PCIe-Vorrichtungsfähigkeitsstruktur anlehnen und diversen Typen oder Kategorien von Events entsprechen, die ein Retimer möglicherweise detektieren und an dem Retimer aufzeichnen kann. Beispielsweise können Empfängerverbindungsfehler, die durch den Retimer detektiert werden, wie etwa PHY-bezogene Empfängerfehler, die den Verlust des Spur-zu-Spur-Versatzes, elastische Pufferüberläufe, Fehler von ungültigen empfangenen Symbolen, Verlust von Symbolsperre, Verlust von Blockausrichtung usw. umfassen, in der Empfängerfehlerfähigkeitsstruktur 930 aufgezeichnet werden. Ähnlich können interne Retimer-Fehler, wie etwa Temperaturfehler, Energiefehler, Phasenregelkreis- (PLL) Fehler, Taktfehler usw., in einer internen Fehlerfähigkeitsstruktur 935 aufgezeichnet werden. Zudem können Entzerrungsfehler, wie etwa ein Fehler der stromaufwärtigen Phase 1/2/3, ein Fehler der stromabwärtigen Phase 1/2/3 usw., in einer Entzerrungsfehlerfähigkeitsstruktur 940 aufgezeichnet werden, unter anderen Fehlertypen, die ebenso in entsprechenden Fähigkeitsstrukturen im Event-Registerblock 735 aufgezeichnet werden können.
  • Wie bei dem Beispiel aus 9 gezeigt, können bei einer Umsetzung, die auf einem PCIe-Steuer- und Statusregister basiert, Registerfelder einer Fehlerfähigkeitsstruktur auf einem PCIe-basierten Fähigkeitsregister basieren. Beispielsweise kann wie bei der Vorrichtungsfähigkeitsstruktur 905 eine Fehlerfähigkeitsstruktur (z. B. 930, 935, 940 usw.) auch Fähigkeitsregisterfelder (z. B. 945), Steuerregisterfelder (z. B. 950), Statusregisterfelder (z. B. 955) und eine Statusmaske (z. B. 960, 965) unter anderen möglichen Registerfeldern umfassen. Bei einem Beispiel können die Fähigkeitsregisterfelder (z. B. 945) einer Fehlerfähigkeitsstruktur (z. B. 930, 935, 940) mit Bits in einem oder mehreren Feldern (oder in einer Bitmaske) codiert sein, um die Fehlerdetektionsfähigkeiten der entsprechenden Retimer-Fehlerdetektionslogik zu identifizieren. Beispielsweise kann eine Fehlermenge definiert werden, um einem bestimmten Fehlertyp (z. B. Empfängerfehlern) zu entsprechen, und die Fähigkeitsfelder (z. B. 945) können identifizieren, welche (d. h. alle oder eine Teilmenge) der einzelnen Fehler durch den Retimer detektiert werden können. Diese Informationen können von einem Event-Handler oder einer System-Software, der bzw. die auf das Event-Register zugreift, verwendet werden, um zu bestimmen, von welchen Events das System erwarten kann, dass sie durch den Retimer detektiert und gemeldet werden. Da die System-Software oder ein anderer Systemcontroller einige der Bits und Schreibwerte im Event-Register 735 des Retimers (z. B. in den Steuer- und Statusregisterfeldern) setzen kann, kann das System die Fehlerdetektionsfähigkeiten des Retimers als in den Fähigkeitsregisterfeldern (z. B. 945) gemeldet ansehen, wenn es bestimmt, welche Werte in andere Registerfelder zu schreiben sind.
  • Die Steuerregisterfelder (z. B. 950) einer Fehlerfähigkeitsstruktur (z. B. 930, 935, 940) können mit Bits in einem oder mehreren Feldern codiert sein, um zu identifizieren, wie der Retimer die Detektion von bestimmten Fehlern melden soll. Beispielsweise kann bzw. können die Steuerregisterfelder (z. B. 950) codiert werden, um anzugeben, ob die Detektion derartiger Fehler (oder derartige Event-spezifische Fehler) dem System durch eine bandinterne Nachricht, eine Seitenbandnachricht, einen Interrupt (oder einen bestimmten Typ von Interrupt (z. B. SMI, SCI usw.) unter anderen beispielhaften Informationen gemeldet werden. Bei einigen Umsetzungen werden die Werte des Steuerregisterfeldes (z. B. 950) basierend auf der Funktionalität des Retimers (z. B. ob er bandinterne oder Seitenbandwarnungen unterstützt, usw.) eingestellt. Die System-Software kann zusätzlich oder stattdessen Werte in dem Steuerregisterfeld (z. B. 950) basierend auf den Vorlieben oder Fähigkeiten des Systems, seines Interrupt-Controllers, seiner Event-Handler und/oder anderer Komponenten einstellen, unter anderen Beispielen.
  • Weiter mit dem Beispiel aus 9 können die Statusregisterfelder (z. B. 955, 965) einer Fehlerfähigkeitsstruktur (z. B. 930, 935, 940) mit Bits codiert werden, um die Detektion eines bestimmten Fehlers durch den Retimer anzugeben. Beispielsweise kann der Retimer einen Temperaturfehler detektieren und in Verbindung mit der Detektion dieses Fehlers ein Bit, das dem Temperaturfehler entspricht, in dem Statusregister (z. B. 965) der internen Fehlerfähigkeitsstruktur 935 setzen (da der Temperaturfehler bei diesem Beispiel als interner Fehlertyp angesehen wird). Ähnlich kann die Detektion von anderen Fehlern bewirken, dass entsprechende Bits innerhalb von entsprechenden Statusregisterfeldern (z. B. 955, 965) gesetzt werden, um die Detektion des spezifischen Fehlers am Retimer anzugeben. Zusätzliche Felder und Bits können bei einigen Umsetzungen bereitgestellt werden, um zusätzliche Informationen zu melden, die einem Fehler entsprechen, der durch den Retimer detektiert wird. Beispielsweise können einige Umsetzungen eines Retimers mit Sensoren ausgestattet sein, um die Temperatur des Retimers anzugeben, die in Verbindung mit der Detektion eines Temperaturfehlers gemessen wird, unter diversen anderen Beispielen, die andersartige Fehler und entsprechende Informationen, die bei einigen Umsetzungen von einer Retimer-Logik erhoben werden können, betreffen.
  • Eine Fehlermaske (z. B. 960) kann auch in jeder der Fehlerfähigkeitsstrukturen (z. B. 930, 935, 940) bereitgestellt werden, über die der Retimer ein Bit in der Maske setzen kann, um zu identifizieren, ob der Retimer bestimmte Fehler in der Fehlermenge des bestimmten Typs, welcher der Fehlerfähigkeitsstruktur entspricht, melden und aufzeichnen soll. Während beispielsweise die Retimer-Fehler- oder Event-Detektionslogik in der Lage sein kann, einen bestimmten Fehler zu detektieren, kann es sein, dass ein System konfiguriert ist, um diese Fehler zu ignorieren, und dass es somit Bits in der Statusmaske (z. B. 960) codiert, um dem Retimer anzugeben, dass der bestimmte Fehler in dem Event-Statusregister durch den Retimer nicht gemeldet werden soll. Falls der Fehler nicht maskiert ist, und die Detektion des Fehlers durch den Retimer unterstützt wird, dann kann das Melden dieses anderen Fehlers als durch entsprechende Werte, die in der Statusmaske (z. B. 960) eingestellt sind, aktiviert angesehen werden.
  • Bei einem Beispiel, das durch das vereinfachte Blockdiagramm 1000 in 10 abgebildet ist, kann ein Retimer 710 mit einer Fehlerdetektionslogik und einem Event-Register 735 verbessert werden, wie etwa zuvor besprochen. Ähnlich wie das Beispiel, das in 8B besprochen wird, kann der Retimer 710 einen oder mehrere Seitenband-Pins oder -anschlüsse umfassen, um Seitenbandbenachrichtigungen von Events, die am Retimer detektiert werden, zu unterstützen. Bei einem Beispiel, wie in 10 abgebildet, kann der Seitenbandkanal als Systemverwaltungsbus (SMBUS) umgesetzt sein, der zusätzlich zu Takt (z. B. 840a) und Datensignalisierung (z. B. 840b) eine Spur oder einen Kanal unterstützt, um ein Warnsignalsignal 835 (z. B. SMBALERT#) zu unterstützen, das durch Logikschaltungen (z. B. 1005) des Retimers 710 basierend auf Werten, die in dem oder den Event-Registern 735 eingestellt sind, ausgelöst wird. Falls beispielsweise ein Event detektiert und gemeldet wurde (z. B. wie in dem Statusregister (z. B. INT#_EVENTS) angegeben) und das entsprechende Bit in der Statusmaske (z. B. INT#_MASK) angibt, dass das Event dem System durch den Retimer gemeldet werden soll, können die logischen Schaltungen 1005 verwendet werden, um ein Signal SMBALERT# zu generieren, das über den SMBUS einem Interrupt-Controller (z. B. auf dem Chipsatz oder als eingebetteter Controller (EC) umgesetzt) 825 gemeldet wird. Das Warnsignal 835 kann dann die System-Software oder eine andere Event-Handler-Komponente des Systems auslösen, um auf den Inhalt des Event-Registers 735 zuzugreifen und ihn auszulesen, um die Beschaffenheit des detektierten Events zu bestimmen und gegebenenfalls die entsprechende Korrekturmaßnahme zu treffen.
  • Mit Bezug auf 11A ist ein Ablaufschema 1100a gezeigt, das den Ablauf der Fehlerdetektion beim Selbsttest beim Start (POST) für eine Verbindung mit einem oder mehreren Retimern, die mit einer Fehlerdetektionslogik und entsprechenden Event-Registern ausgestattet sind, abbildet. Während der POST-Zeit kann bei einer Umsetzung mit Retimern auf einer PCIe-basierten Verbindung eine PCIe-Aufzählung fertiggestellt 1105 werden, und das System-BIOS kann dann das oder die Fähigkeits- und Statusregister im Root-Complex überprüfen (z. B. um den Verbindungseinschaltstatus zu erhalten und Fehler der stromaufwärtigen und stromabwärtigen Komponenten usw. auszuschließen). Falls die Verbindung (bei 1115) hergestellt wird, kann das BIOS mit dem Starten des Betriebssystems (bei 1120) fortfahren. Falls es einen Fehler oder ein anderes Problem gibt, der bzw. das verhindert, dass die Verbindung hochgefahren wird oder anderweitig richtig funktioniert, kann das BIOS, der BMC oder eine andere Komponente (die anders als eine OS-basierte Komponente ist) reagieren, indem versucht wird, die Ursache des Fehlers zu detektieren. In Verbindung mit dieser Aktivität kann das BIOS, der BMC oder die andere Komponente auf Event-Register von jedem von dem einen oder den mehreren Retimern (oder bei anderen Umsetzungen Redrivern), die auf der Verbindung vorhanden sind, zugreifen und diese auslesen (bei 1125). Die Informationen, die von dem oder den Retimer-Event-Registern erhoben werden, können mit beliebigen anderen Informationen, die von dem Controller (z. B. dem BIOS oder dem BMC) erhoben werden, kombiniert werden und Protokolldaten, wie etwa System-Event-Protokoll- (SELLOG) Daten, generieren (bei 1135) und diese dem BMC oder einem anderen Controller in Verbindung mit einer Fehlermeldestufe 1130, die von dem System ausgeführt wird, bereitstellen. Diese Protokolldaten sind dann zugänglich und können in einer Fehlerkorrektur-/Wiederherstellungsstufe 1140 verwendet werden, um die detektierten Fehler zu korrigieren, zurückzusetzen, neu zu konfigurieren oder anderweitig zu versuchen, diese zu beheben.
  • Wenn das Betriebssystem (z. B. bei 1120) erfolgreich gestartet wurde, kann die System-POST-Zeit in die Systemlaufzeit übergehen. Wie bei dem Beispiel aus 11B abgebildet, kann man auf Tools, die über das Betriebssystem bereitgestellt und von diesem unterstützt werden, (z. B. anstelle des System-BIOS wie zur POST-Zeit) zurückgreifen, um Fehler anzugehen, die an Retimern, Redrivern oder anderen Verlängerungsvorrichtungen auf einer Verbindung detektiert und gemeldet werden. Beispielsweise kann während der Laufzeit die Fehlerdetektion 1150 die Detektion von Verbindungsfehlern (bei 1165) über bandinterne Register des Root-Complex bedingen. Beispielsweise kann eine bandinterne Interrupt-Nachricht, wie etwa ein SMI 1170 oder SCI 1175, gesendet/bestätigt werden. In manchen Fällen können die Handhabung der Fehler und die Schnittstellenbildung mit den internen Event-Registern von Verlängerungsvorrichtungen auf der Verbindung darauf basieren, welcher Interrupt-Typ oder welches andere Fehlerbenachrichtigungssignal bandintern oder bandextern mit der Verbindung gesendet wurde. Beispielsweise kann das System-BIOS oder der BMC für den Fall von SMIs den Fehler handhaben (bei 1180), während ein SCI oder eine andere Benachrichtigung von dem Betriebssystem-Event-Handler gehandhabt werden kann (bei 1185), unter anderen Beispielen. In manchen Fällen kann der Retimer eine Nachricht oder ein anderes Signal senden, um die Detektion eines Events am Retimer anzugeben (bei 1190). Eine derartige Warnung kann kombiniert mit Verbindungsfehlern, die vom System detektiert werden (z.B. bei 1165), den Event-Handler (z. B. BIOS, BMS, OS usw.) auffordern, das Retimer-Event-Register zu überprüfen (bei 1192) und zusätzliche Informationen bezüglich des Fehlers oder eines anderen Events, der bzw. das am Retimer detektiert und im Retimer-Event-Register dokumentiert wird, zu entdecken. Je nachdem welcher System-Event-Handler für die Handhabung des Fehlers verantwortlich ist, kann das Event durch den entsprechenden Handler (z. B. durch den BMC in einem SELLOG oder durch das OS 1196) protokolliert werden. Diese Fehlerprotokollinformationen können dann durch die Fehlerkorrektur- und Wiederherstellungslogik (bei 1160), die im System umgesetzt wird, referenziert und verwendet werden.
  • Obwohl einige der obigen Beispiele spezifischen Bezug auf gewisse bestimmte Zusammenschaltungstechnologien und -spezifikationen genommen habe, versteht es sich, dass diese Bezugnahmen als nicht einschränkende Beispiele bereitgestellt werden, und dass die hier besprochenen Grundsätze auf diverse verschiedene Zusammenschaltungen anwendbar sind. Als ein Beispiel, obwohl einige der besprochenen Beispiele Event-Register auf einem PCIe-basierten Registerformat basieren oder einem PCIe-basierten Fehlerdetektions- und Wiederherstellungsablauf folgen, versteht es sich, dass ähnliche Grundsätze anwendbar sind und Datenstrukturen, Protokolle und Abläufe von anderen Technologien und Zusammenschaltungen, wie etwa OpenCAPI™, Gen-Z™, UPI, Universal Serial Bus, (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Infinity™ von Advanced Micro Device™ (AMD™), Common Communication Interface (CCI) oder die Zusammenschaltung Centriq™ von Qualcomm™ unter anderen nutzen. In der Tat können diverse alternative Beispiele und Umsetzungen ausgebildet werden, welche die hier besprochenen Grundsätze und Merkmale verwenden und davon nicht abweichen.
  • 12 ist ein Ablaufschema 1200, das eine beispielhafte Technik abbildet, die eine Fehlerdetektion an Verlängerungsvorrichtungen, wie etwa Retimern und Redrivem, auf einer Verbindung betrifft. Beispielsweise kann ein Controller, wie etwa eine System-Software, ein System-BIOS, das Betriebssystem, ein BMC usw., ein Signal von einer Verlängerungsvorrichtung, die auf einer Punkt-zu-Punkt-Verbindung angeordnet ist, die zwei Komponenten in einer Mikrocomputerumgebung verbindet, identifizieren 1205. In manchen Fällen kann das Signal von der Verlängerungsvorrichtung über einen Seitenbandkanal gesendet werden. Ein Event-Register, das im Speicher der Verlängerungsvorrichtung vorliegt, ist basierend auf dem Signal zugänglich 1210, und Daten können aus dem Event-Register ausgelesen 1215 werden, um Informationen zu identifizieren, die von der Verlängerungsvorrichtung bezüglich des detektierten Fehlers erhoben und/oder gemeldet werden. Eine Auflösung oder eine Korrekturmaßnahme kann basierend auf den Daten eingeleitet 1220 werden, um zu versuchen den Fehler zu beheben.
  • Es sei zu beachten, dass die zuvor beschriebenen Geräte, Verfahren und Systeme in einer beliebigen elektronischen Vorrichtung oder einem System, wie zuvor erwähnt, umgesetzt werden können. Als spezifische Abbildungen stellen die nachstehenden Figuren beispielhafte Systeme zur Verwendung der Erfindung, wie hier beschrieben, bereit. Wenn die Systeme nachstehend ausführlicher beschrieben werden, wird eine Reihe von verschiedenen Zusammenschaltungen offenbart, beschrieben und gegenüber der obigen Diskussion neu betrachtet. Und wie es offensichtlich ist, können die zuvor beschriebenen Fortschritte auf alle diese Zusammenschaltungen, Strukturen oder Architekturen angewendet werden.
  • Mit Bezug auf 13 ist eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkernprozessor umfasst, dargestellt. Der Prozessor 1300 umfasst einen beliebigen Prozessor oder eine Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung, um Code auszuführen. Der Prozessor 1300 umfasst bei einer Ausführungsform mindestens zwei Kerne, die Kerne 1301 und 1302, die asymmetrische Kerne oder symmetrische Kerne (die abgebildete Ausführungsform) umfassen können. Der Prozessor 1300 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • Bei einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele von materiellen Verarbeitungselementen umfassen: 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 in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten bezieht sich ein Verarbeitungselement bei einer Ausführungsform auf beliebige Hardware, die unabhängig mit Code verknüpft werden kann, wie etwa ein Software-Thread, ein Betriebssystem, eine Anwendung oder anderer Code. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf einen integrierten Schaltkreis, der möglicherweise eine beliebige Anzahl von anderen Verarbeitungselementen, wie etwa Kerne oder Hardware-Threads, umfasst.
  • Ein Kern bezieht sich oft auf eine Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen Architekturzustand zu bewahren, wobei jeder unabhängig bewahrte Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen Architekturzustand zu bewahren, wobei die unabhängig bewahrten Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Es ist ersichtlich, dass wenn gewisse Ressourcen geteilt werden und andere für einen Architekturzustand dediziert sind, sich die Linie zwischen der Nomenklatur eines Hardware-Thread und eines Kerns überlappt. Dennoch werden häufig ein Kern und ein Hardware-Thread von einem Betriebssystem als einzelne logische Prozessoren angesehen, wobei das Betriebssystem in der Lage ist, auf jedem logischen Prozessor einzeln Operationen einzuplanen.
  • Der physische Prozessor 1300, wie in 13 abgebildet, umfasst zwei Kerne, nämlich die Kerne 1301 und 1302. Dabei werden die Kerne 1301 und 1302 als symmetrische Kerne angesehen, d. h. als Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder Logik. Bei einer anderen Ausführungsform umfasst der Kern 1301 einen Außer-Reihenfolge-Prozessorkern, während der Kern 1302 einen In-Reihenfolge-Prozessorkern umfasst. Die Kerne 1301 und 1302 können jedoch einzeln aus einem beliebigen Kerntyp, wie etwa einem nativen Kern, einem Software-verwalteten Kern, einem Kern, der geeignet ist, eine native Anweisungssatzarchitektur (ISA) auszuführen, einem Kern, der geeignet ist, eine übersetzte Anweisungssatzarchitektur (ISA) auszuführen, einem gemeinsam gestalteten Kern oder einem anderen bekannten Kern ausgewählt werden. In einer heterogenen Kernumgebung (d. h. bei asymmetrischen Kernen) kann eine gewisse Form von Übersetzung, wie etwa eine Binärübersetzung, verwendet werden, um Code auf einem oder auf beiden Kernen einzuplanen oder auszuführen. Zur weiteren Diskussion werden die im Kern 1301 abgebildeten Funktionseinheiten nachstehend ausführlicher beschrieben, da die Einheiten in dem Kern 1302 ähnlich funktionieren wie bei der dargestellten Ausführungsform.
  • Wie abgebildet umfasst der Kern 1301 zwei Hardware-Threads 1301a und 1301b, die auch als Hardware-Thread-Slots 1301a und 1301b bezeichnet werden können. Daher sehen Software-Entitäten, wie etwa ein Betriebssystem, bei einer Ausführungsform möglicherweise den Prozessor 1300 als vier getrennte Prozessoren an, d. h. als vier logische Prozessoren oder Verarbeitungselemente, die vier Software-Threads gleichzeitig ausführen können. Wie zuvor erwähnt, ist ein erster Thread mit den Architekturzustandsregistern 1301a verknüpft, ein zweiter Thread ist mit den Architekturzustandsregistern 1301b verknüpft, ein dritter Thread kann mit den Architekturzustandsregistern 1302a verknüpft sein, und ein vierter Thread kann mit den Architekturzustandsregister 1302b verknüpft sein. Dabei kann jedes der Architekturzustandsregister (1301a, 1301b, 1302a und 1302b) als Verarbeitungselement, Thread-Slot oder Thread-Einheit bezeichnet werden, wie zuvor beschrieben. Wie abgebildet, werden die Architekturzustandsregister 1301a in die Architekturzustandsregister 1301b kopiert, so dass einzelne Architekturzustände/Kontexte für den logischen Prozessor 1301a und den logischen Prozessor 1301b gespeichert werden können. In dem Kern 1301 können andere kleinere Ressourcen, wie etwa Anweisungszeiger und Umbenennungslogik im Zuteiler- und Umbenennerblock 1330 ebenfalls für die Threads 1301a und 1301b kopiert werden. Einige Ressourcen, wie etwa Umordnungspuffer in einer Umordnungs-/Zurückzieheinheit 1335, ILTB 1320, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionieren geteilt werden. Andere Ressourcen, wie etwa universelle interne Register, Seiten-Tabellen-Basisregister, Low-Level-Daten-Cache und Daten-TLB 1315, Ausführungseinheiten 1340 und Teile der Außer-Reihenfolge-Einheit 1335 werden möglicherweise vollständig geteilt.
  • Der Prozessor 1300 umfasst häufig andere Ressourcen, die vollständig geteilt werden können, durch Partitionieren geteilt werden können oder von/für Verarbeitungselemente dediziert sein können. In 13 ist eine Ausführungsform eines rein beispielhaften Prozessors mit erläuternden logischen Einheiten/Ressourcen eines Prozessors abgebildet. Es sei zu beachten, dass ein Prozessor jede dieser Funktionseinheiten umfassen oder unterlassen kann und auch beliebige andere bekannte Funktionseinheiten, Logik oder Firmware umfassen kann, die nicht dargestellt sind. Wie abgebildet umfasst der Kern 1301 einen vereinfachten, repräsentativen Außer-Reihenfolge- (OOO) Prozessorkern. Bei anderen Ausführungsformen kann jedoch ein In-Reihenfolge-Prozessor verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 1320, um die Verzweigungen vorherzusagen, die auszuführen/einzuschlagen sind, und einen Anweisungsübersetzungspuffer (1-TLB) 1320, um Adressenübersetzungseinträge für Anweisungen zu speichern.
  • Der Kern 1301 umfasst ferner ein Decodierungsmodul 1325, das mit der Abrufeinheit 1320 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik umfasst bei einer Ausführungsform einzelne Sequenzer, die jeweils mit den Thread-Slots 1301a, 1301b verknüpft sind. Normalerweise ist der Kern 1301 mit einer ersten ISA verknüpft, die Anweisungen definiert/vorgibt, die auf dem Prozessor 1300 ausführbar sind. Oft umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (der als Opcode bezeichnet wird), der eine auszuführende Anweisung oder Operation referenziert/vorgibt. Die Decodierungslogik 1325 umfasst Schaltungen, die diese Anweisungen aus ihren Opcodes erkennen, und gibt die decodierten Anweisungen in die Pipeline zur Verarbeitung, wie durch die erste ISA definiert. Wie beispielsweise nachstehend ausführlicher besprochen, umfassen die Decodierer 1325 bei einer Ausführungsform eine Logik, die ausgelegt oder angepasst ist, um spezifische Anweisungen zu erkennen, wie etwa eine Transaktionsanweisung. Infolge der Erkennung durch die Decodierer 1325 ergreift die Architektur oder der Kern 1301 spezifische, vordefinierte Maßnahmen, um Aufgaben auszuführen, die mit der geeigneten Anweisung verknüpft sind. Es ist wichtig zu beachten, dass jede der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf eine einzige oder mehrere Anweisungen ausgeführt werden kann; wobei einige davon neue oder alte Anweisungen sein können. Es sei zu beachten, dass die Decodierer 1326 bei einer Ausführungsform die gleiche ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen die Decodierer 1326 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine verschiedenartige ISA).
  • Bei einem Beispiel umfasst der Zuteiler- und Umbenennerblock 1330 einen Zuteiler zum Reservieren von Ressourcen, wie etwa Registerdateien, um Anweisungsverarbeitungsergebnisse zu speichern. Die Threads 1301a und 1301b sind jedoch möglicherweise zu einer Außer-Reihenfolge-Ausführung fähig, bei welcher der Zuteiler- und Umbenennerblock 1330 auch andere Ressourcen, wie etwa Umordnungspuffer, reserviert, um Anweisungsergebnisse zu verfolgen. Die Einheit 1330 kann auch einen Registerumbenenner umfassen, um Programm-/Anweisungsreferenzregister in andere Register innerhalb des Prozessors 1300 umzubenennen. Die Umordnungs-/Zurückzieheinheit 1335 umfasst Komponenten, wie etwa die zuvor erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer, um eine Außer-Reihenfolge-Ausführung und später ein In-Reihenfolge-Zurückziehen von Anweisungen, die außerhalb der Reihenfolge durchgeführt wurden, zu unterstützen.
  • Der Einplanungs- und Ausführungseinheitenblock 1340 umfasst bei einer Ausführungsform eine Einplanungseinheit, um Anweisungen/Operationen an Ausführungseinheiten einzuplanen. Beispielsweise wird eine Fließkommaanweisung an einem Anschluss einer Ausführungseinheit eingeplant, der über eine verfügbare Fließkomma-Ausführungseinheit aufweist. Registerdateien, die mit den Ausführungseinheiten verknüpft sind, sind ebenfalls enthalten, um Verarbeitungsergebnisse von Informationsanweisungen zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Fließkomma-Ausführungseinheit, eine Integer-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Ein Daten-Cache auf niedrigerer Ebene und ein Datenübersetzungspuffer (D-TLB) 1350 sind mit einer oder mehreren Ausführungseinheiten 1340 gekoppelt. Der Daten-Cache soll vor Kurzem verwendete/verarbeitete Elemente, wie etwa Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB dient zum Speichern von neueren Übersetzungen von virtuellen/linearen in physische Adressen. Als ein spezifisches Beispiel kann ein Prozessor eine Seiten-Tabellen-Struktur aufweisen, um physischen Speicher in mehrere virtuelle Seiten aufzuteilen.
  • Die Kerne 1301 und 1302 teilen sich dabei den Zugriff auf einen auf höherer Ebene befindlichen oder weiter abgelegenen Cache, wie etwa einen Second-Level-Cache, der mit einer mit einer On-Chip-Schnittstelle 1310 verknüpft ist. Es sei zu beachten, dass sich höhere Ebene und weiter abgelegen auf Cache-Ebenen beziehen, die von der oder den Ausführungseinheiten aus zunehmen oder sich davon entfernen. Bei einer Ausführungsform ist der Cache einer höheren Ebene ein Daten-Cache der letzten Ebene - der letzte Cache in der Speicherhierarchie auf dem Prozessor 1300 - wie etwa ein Daten-Cache der zweiten oder dritten Ebene. Ein Cache einer höheren Ebene ist jedoch nicht darauf eingeschränkt, da er mit einem Anweisungs-Cache verknüpft sein oder diesen umfassen kann. Ein Trace-Cache - eine Art Anweisungs-Cache - kann stattdessen nach dem Decodierer 1325 gekoppelt sein, um zuletzt decodierte Traces zu speichern. Dabei bezieht sich eine Anweisung möglicherweise auf eine Makroanweisung (d. h. eine allgemeine Anweisung, die durch die Decodierer erkannt wird), die zu einer Anzahl von Mikroanweisungen (Mikrooperationen) decodiert werden kann.
  • Bei der dargestellten Konfiguration umfasst der Prozessor 1300 auch ein On-Chip-Schnittstellenmodul 1310. Früher war ein Speichercontroller, der nachstehend ausführlicher beschrieben wird, in einem Computersystem außerhalb des Prozessors 1300 enthalten. Bei diesem Szenario soll die On-Chip-Schnittstelle 1310 mit Vorrichtungen außerhalb des Prozessors 1300 kommunizieren, wie etwa mit einem Systemspeicher 1375, einem Chipsatz (der oft einen Speichercontroller-Hub zur Verbindung mit dem Speicher 1375 und einen E/A-Controller-Hub zur Verbindung von Peripherievorrichtungen umfasst), einem Speichercontroller-Hub, einer Northbridge oder einem anderen integrierten Schaltkreis. Und bei diesem Szenario kann der Bus 1305 eine beliebige bekannte Zusammenschaltung umfassen, wie etwa Multidrop-Bus, eine Punkt-zu-Punkt-Zusammenschaltung, eine serielle Zusammenschaltung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen Differenzbus und einen GTL-Bus.
  • Der Speicher 1375 kann dem Prozessor 1300 dediziert oder mit anderen Vorrichtungen in einem System geteilt sein. Übliche Beispiele von Typen des Speichers 1375 umfassen DRAM, SRAM, nicht flüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen. Es sei zu beachten, dass die Vorrichtung 1380 einen Grafikbeschleuniger, einen Grafikprozessor oder eine Grafikkarte, der bzw. die mit einem Speichercontroller-Hub gekoppelt ist, eine Datenspeicherung, die mit einem E/A-Controller-Hub gekoppelt ist, einen drahtlosen Transceiver, eine Flash-Vorrichtung, einen Audiocontroller, einen Netzwerkcontroller oder eine andere bekannte Vorrichtung umfassen kann.
  • In letzter Zeit, wo mehr Logik und Vorrichtungen auf einem einzigen Chip, wie etwa einem SOC, integriert werden, kann jede dieser Vorrichtungen auf einem Prozessor 1300 integriert werden. Beispielsweise befindet sich bei einer Ausführungsform ein Speichercontroller-Hub auf derselben Kapselung und/oder demselben Chip wie der Prozessor 1300. Dabei umfasst ein Teil des Kerns (ein Teil auf dem Kern) 1310 einen oder mehrere Controller als Schnittstelle mit anderen Vorrichtungen, wie etwa dem Speicher 1375 oder einer Grafikvorrichtung 1380. Die Konfiguration, die eine Zusammenschaltung und Controller als Schnittstelle mit diesen Vorrichtungen umfasst, wird oft als On-Core (bzw. eine Konfiguration auf dem Kern) bezeichnet. Als ein Beispiel umfasst eine On-Chip-Schnittstelle 1310 eine Ringzusammenschaltung zur On-Chip-Kommunikation und eine schnelle serielle Punkt-zu-Punkt-Verbindung 1305 zur Kommunikation außerhalb des Chips. Dennoch können in einer SOC-Umgebung noch mehr Vorrichtungen, wie etwa die Netzwerkschnittstelle, die Coprozessoren, der Speicher 1375, der Grafikprozessor 1380 und beliebige andere bekannte Computervorrichtungen/Schnittstellen auf einem einzigen Chip oder in einem integrierten Schaltkreis integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • Bei einer Ausführungsform ist der Prozessor 1300 in der Lage, einen Compiler, eine Optimierung und/oder einen Übersetzercode 1377 auszuführen, um den Anwendungscode 1376 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hier beschriebenen Geräte und Verfahren zu unterstützen oder eine Schnittstelle damit zu bilden. Ein ähnlicher Compiler umfasst oft ein Programm oder eine Menge von Programmen, um Quelltext/-Code in Zieltext/- Code zu übersetzen. Gewöhnlich erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um Programmiersprachencode auf hoher Ebene in Maschinen- oder Assemblersprachencode auf niedriger Ebene umzusetzen. Compiler mit einem einzigen Durchgang können jedoch weiterhin für eine einfache Kompilierung verwendet werden. Ein Compiler kann beliebige bekannte Kompilierungstechniken verwenden und beliebige bekannte Compiler-Operationen ausführen, wie etwa lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codegenerierung, Codeumsetzung und Codeoptimierung.
  • Große Compiler umfassen oft mehrere Phasen, aber meistens sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d. h. wo im Allgemeinen eine syntaktische Verarbeitung, eine semantische Verarbeitung und eine gewisse Transformation/Optimierung stattfinden können, und (2) ein Backend, d. h. wo im Allgemeinen Analyse, Transformationen, Optimierungen und Codeerzeugung stattfinden. Einige Compiler beziehen sich auf eine Mitte, was die unscharfe Grenze zwischen einem Frontend und Backend eines Compilers veranschaulicht. Folglich kann eine Bezugnahme auf Einfügung, Verknüpfung, Generierung oder eine andere Operation eines Compilers in jeder beliebigen der oben erwähnten Phasen oder Durchgänge und auch in beliebigen anderen bekannten Phasen oder Durchgängen eines Compilers stattfinden. Als ein erläuterndes Beispiel fügt ein Compiler möglicherweise Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung ein, wie etwa eine Einfügung von Aufrufen/Operationen in einer Frontend-Phase der Kompilierung, und dann eine Transformation der Aufrufe/Operationen in Code niedrigerer Ebene während einer Transformationsphase. Es sei zu beachten, dass während der dynamischen Kompilierung Compiler-Code oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code für die Ausführung während der Laufzeit optimieren kann. Als ein spezifisches erläuterndes Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Der Programmcode kann hier den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie etwa ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich eine Bezugnahme auf die Ausführung von Code, Anwendungscode, Programmcode oder einer anderen Software-Umgebung auf Folgendes beziehen: (1) Ausführung eines oder mehrerer Compiler-Programme, eines Optimierungscode-Optimierers oder Übersetzers entweder dynamisch oder statisch, um Programmcode zu kompilieren, um Software-Strukturen zu pflegen, um andere Operationen auszuführen, um Code zu optimieren oder um Code zu übersetzen; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe umfasst, wie etwa Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung von anderem Programmcode, wie etwa Bibliotheken, der mit dem Hauptprogrammcode verknüpft ist, um Software-Strukturen zu pflegen, um andere Software-bezogene Operationen auszuführen oder um Code zu optimieren; oder (4) eine Kombination davon.
  • Mit Bezug auf 14 ist nun ein Blockdiagramm eines zweiten Systems 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 14 gezeigt, ist das Mehrprozessorsystem 1400 ein Punkt-zu-Punkt-Zusammenschaltungssystem und umfasst einen ersten Prozessor 1470 und einen zweiten Prozessor 1480, die über eine Punkt-zu-Punkt-Zusammenschaltung 1450 gekoppelt sind. Jeder der Prozessoren 1470 und 1480 kann eine gewisse Version eines Prozessors sein. Bei einer Ausführungsform sind 1452 und 1454 Teil einer seriellen kohärenten Punkt-zu-Punkt-Zusammenschaltungsstruktur, wie etwa einer Hochleistungsarchitektur. Dadurch kann die Erfindung in der QPI-Architektur umgesetzt werden.
  • Obwohl sie mit nur zwei Prozessoren 1470, 1480 gezeigt wird, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht darauf eingeschränkt ist. Bei anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem bestimmten Prozessor vorhanden sein.
  • Die Prozessoren 1470 und 1480 werden gezeigt, wie sie jeweils integrierte Speichercontrollereinheiten 1472 und 1482 umfassen. Der Prozessor 1470 umfasst auch als Teil seiner Buscontrollereinheiten die Punkt-zu-Punkt- (P-P) Schnittstellen 1476 und 1478; ähnlich umfasst der zweite Prozessor 1480 die P-P-Schnittstellen 1486 und 1488. Die Prozessoren 1470, 1480 können Informationen über eine Punkt-zu-Punkt- (P-P) Schnittstelle 1450 unter Verwendung von P-P-Schnittstellenschaltkreisen 1478, 1488 austauschen. Wie in 14 gezeigt, koppeln die IMCs 1472 und 1482 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1432 und einem Speicher 1434, die Teile eines Hauptspeichers sein können, der lokal an den jeweiligen Prozessoren angebracht ist.
  • Die Prozessoren 1470, 1480 tauschen jeweils Informationen mit einem Chipsatz 1490 über einzelne P-P-Schnittstellen 1452, 1454 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltkreisen 1476, 1494, 1486, 1498 aus. Der Chipsatz 1490 tauscht auch Informationen mit einem Hochleistungs-Grafikschaltkreis 1438 über einen Schnittstellenschaltkreis 1492 entlang einer Hochleistungs-Grafikzusammenschaltung 1439 aus.
  • Ein geteilter Cache (nicht gezeigt) kann in einem der Prozessoren oder außerhalb der beiden Prozessoren enthalten sein, jedoch mit den Prozessoren über eine P-P-Zusammenschaltung verbunden sein, so dass lokale Cache-Informationen von einem oder beiden Prozessoren in dem geteilten Cache gespeichert werden können, falls ein Prozessor in einen Energiesparmodus versetzt wird.
  • Der Chipsatz 1490 kann mit einem ersten Bus 1416 über eine Schnittstelle 1496 gekoppelt sein. Bei einer Ausführungsform kann der erste Bus 1416 ein PCI- („Peripheral Component Interconnect“) Bus oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zusammenschaltungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht darauf eingeschränkt ist.
  • Wie in 14 gezeigt, sind diverse E/A-Vorrichtungen 1414 mit dem ersten Bus 1416 zusammen mit einer Busbrücke 1418 gekoppelt, die den ersten Bus 1416 mit einem zweiten Bus 1420 koppelt. Bei einer Ausführungsform umfasst der zweite Bus 1420 einen LPC-(„Low Pin Count“) Bus. Diverse Vorrichtungen sind mit dem zweiten Bus 1420 gekoppelt, wozu beispielsweise eine Tastatur und/oder eine Maus 1422, Kommunikationsvorrichtungen 1427 und eine Speichereinheit 1428, wie etwa ein Laufwerk oder eine andere Massenspeichervorrichtung, die oft Anweisungen/Code und Daten 1430 umfasst, bei einer Ausführungsform gehören. Ferner ist ein Audio-E/A 1424 gezeigt, wie er mit dem zweiten Bus 1420 gekoppelt ist. Es sei zu beachten, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Zusammenschaltungsarchitekturen unterschiedlich sind. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur aus 14 ein System einen Multidrop-Bus oder eine andere derartige Architektur umsetzen.
  • Obwohl die vorliegende Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für den Fachmann zahlreiche Modifikationen und Varianten daraus ersichtlich. Es ist beabsichtigt, dass die beiliegenden Ansprüche alle Modifikationen und Varianten abdecken, die in den wahren Geist und Umfang der vorliegenden Erfindung fallen.
  • Eine Bauform kann verschiedene Phasen durchlaufen, von der Erstellung über die Simulation bis zur Herstellung. Daten, die eine Bauform darstellen, können die Bauform unterschiedlich darstellen. Erstens kann, wie es bei Simulationen nützlich ist, die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zudem kann ein Modell auf Schaltkreisebene mit Logik- und/oder Transistorgattern in einigen Phasen des Gestaltungsprozesses produziert werden. Ferner erreichen die meisten Bauformen in einer gewissen Phase eine Ebene von Daten, welche die physische Anordnung diverser Vorrichtungen im Hardware-Modell darstellen. Falls herkömmliche Halbleiter-Herstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorliegen oder Fehlen diverser Merkmale auf verschiedenen Maskenschichten für Masken vorgeben, die verwendet werden, um den integrierten Schaltkreis zu produzieren. Bei einer beliebigen Darstellung der Bauform können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speichervorrichtung, wie etwa eine Platte, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über eine optische oder elektrische Welle gesendet werden, die moduliert oder anderweitig generiert wird, um diese Informationen zu senden. Wenn eine elektrische Trägerwelle, die den Code oder die Bauform angibt oder übermittelt, gesendet wird, wird eine neue Kopie angelegt, soweit Kopieren, Puffern oder erneutes Senden des elektrischen Signals erfolgt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren maschinenlesbaren Medium mindestens vorrübergehend einen Artikel, wie etwa in eine Trägerwelle codierte Informationen, speichern, wodurch Techniken von Ausführungsformen der vorliegenden Erfindung ausgebildet werden.
  • Ein Modul, sowie es hier verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Beispielsweise umfasst ein Modul Hardware, wie etwa einen Mikrocontroller, die mit einem nicht vorübergehenden Medium verknüpft ist, um Code zu speichern, der geeignet ist, um durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul bei einer Ausführungsform auf die Hardware, die speziell konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nicht vorübergehenden Medium gehalten werden soll. Ferner bezieht sich bei einer anderen Ausführungsform die Verwendung eines Moduls auf das nicht vorübergehende Medium, das den Code umfasst, der speziell geeignet ist, um durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie abgeleitet werden kann, kann sich bei noch einer anderen Ausführungsform der Ausdruck Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nicht vorübergehenden Mediums beziehen. Modulgrenzen, die als getrennt dargestellt sind, variieren oft üblicherweise 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 eine unabhängige Hardware, Software oder Firmware beibehalten wird. Bei einer Ausführungsform umfasst die Verwendung des Ausdrucks Logik Hardware wie Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „konfiguriert zum“ bezieht sich bei einer Ausführungsform auf das Anordnen, Zusammenstellen, Herstellen, käuflichen Anbieten, Importieren und/oder Auslegen eines Geräts, von Hardware, von Logik oder eines Elements, um eine bezeichnete oder bestimmte Aufgabe auszuführen. Bei diesem Beispiel ist ein Gerät oder ein Element desselben, das nicht funktioniert, immer noch „konfiguriert zum“ Ausführen einer bezeichneten Aufgabe, wenn es dafür ausgelegt, gekoppelt und/oder zusammengeschaltet ist, um die bezeichnete Aufgabe auszuführen. Als ein rein erläuterndes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „konfiguriert ist zum“ Bereitstellen eines Freigabesignals für einen Takt, umfasst nicht jedes mögliche Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter ein solches, das derart gekoppelt ist, dass während des Betriebs die ausgegebene 1 oder 0 den Takt freigeben soll. Es sei wieder zu beachten, dass die Verwendung des Begriffs „konfiguriert zum“ keinen Betrieb erfordert, stattdessen aber einen Fokus auf den latenten Zustand eines Geräts, von Hardware und/oder eines Elements, wobei das Gerät, die Hardware und/oder das Element im latenten Zustand dafür ausgelegt ist, eine bestimmte Aufgabe auszuführen, wenn das Gerät, die Hardware und/oder das Element funktioniert.
  • Ferner bezieht sich die Verwendung der Ausdrücke „zum“, „fähig zum“ und/oder „betriebsfähig zum“ bei einer Ausführungsform auf ein bestimmtes Gerät, eine Logik, eine Hardware und/oder ein Element, die so ausgelegt sind, dass sie die Verwendung des Geräts, der Logik, der Hardware und/oder des Elements auf eine vorgegebene Art und Weise ermöglichen. Es sei wie zuvor zu beachten, dass sich die Verwendung von zum, fähig zum oder betriebsfähig zum bei einer Ausführungsform auf den latenten Zustand eines Geräts, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei das Gerät, die Logik, die Hardware und/oder das Element nicht funktioniert, jedoch derart ausgelegt ist, dass es bzw. sie die Verwendung eines Geräts auf vorgegebene Art und Weise ermöglicht.
  • Ein Wert, wie er hier verwendet wird, umfasst jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Die Verwendung von Logikpegeln, Logikwerten oder logischen Werten wird oft mit Einsen und Nullen bezeichnet, was einfach binäre Logikzustände darstellt. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und 0 auf einen niedrigen Logikpegel. Bei einer Ausführungsform kann eine Speicherzelle, wie etwa ein Transistor oder eine Flash-Zelle, in der Lage sein, einen einzigen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl 10 auch als ein Binärwert von 1010 und als ein hexadezimaler Buchstabe A dargestellt werden. Ein Wert umfasst daher jede Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Des Weiteren können Zustände durch Werte oder Teile von Werten dargestellt werden. Beispielsweise kann ein erster Wert, wie etwa eine logische 1, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie etwa eine logische 0, einen Nicht-Standardzustand darstellen kann. Zudem beziehen sich die Begriffe Zurücksetzen und Setzen bei einer Ausführungsform jeweils auf einen standardmäßigen und einen aktualisierten Wert oder Zustand. Beispielsweise umfasst ein Standardwert möglicherweise einen hohen logischen Wert, d. h. ein Zurücksetzen, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert, d. h. ein Setzen, umfasst. Es sei zu beachten, dass jede Kombination von Werten verwendet werden kann, um jede Anzahl von Zuständen darzustellen.
  • Die zuvor dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code umgesetzt werden, die bzw. der auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert und durch ein Verarbeitungselement ausführbar sind. Ein nicht vorübergehendes maschinenzugängliches/-lesbares Medium umfasst einen beliebigen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein Elektroniksystem, lesbarer Form bereitstellt (d. h. speichert und/oder sendet). Beispielsweise umfasst ein nicht vorübergehendes maschinenzugängliches Medium einen Arbeitsspeicher (RAM), wie etwa einen statischen RAM (SRAM) oder dynamischen RAM (DRAM); einen ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen, akustische Speichervorrichtungen, oder eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von vorübergehenden (propagierten) Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen) empfangen werden; usw., die von den nicht vorübergehenden Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Anweisungen, die zum Programmieren von Logik zum Ausführen von Ausführungsformen der Offenbarung verwendet werden, können in einem Speicher im System, wie etwa einem DRAM, einem Cache, einem Flash-Speicher oder einer anderer Speichervorrichtung, gespeichert werden. Ferner können die Anweisungen über ein Netzwerk oder anhand anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Senden von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form umfassen, ist jedoch nicht auf Disketten, optische Platten, CD-ROMs („Compact Disks, Read-Only Memory“) und magnetooptische Platten, ROMs (Festspeicher), RAM (Arbeitsspeicher), EPROM („Erasable Programmable Read-Only Memory“), EEPROM („Electrically Erasable Programmable Read-Only Memory“), magnetische oder optische Karten, Flash-Speicher oder eine greifbare, maschinenlesbare Speichervorrichtung, die beim Senden von Informationen über das Internet in elektrischen, optischen, akustischen oder anderen Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen usw.) verwendet werden, eingeschränkt. Das computerlesbare Medium umfasst entsprechend eine beliebige Art von greifbarem maschinenlesbarem Medium, das zum Speichern oder Senden von elektronischen Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß der vorliegenden Beschreibung. Beispiel 1 ist ein Gerät, umfassend: einen Retimer, um eine Punkt-zu-Punkt-Verbindung zum Verbinden von zwei Vorrichtungen zu verlängern, wobei der Retimer umfasst: Fehlerdetektionsschaltungen, um eine Menge von Fehlern am Retimer zu detektieren; einen Speicher, um ein Event-Register zu speichern, wobei der Retimer Daten in das Event-Register schreiben soll, um die Detektion eines Fehlers durch die Fehlerdetektionsschaltungen zu beschreiben; und eine Benachrichtigungslogik, um ein Benachrichtigungssignal zu senden, um die Detektion des Fehlers und das Vorliegen der Daten im Event-Register anzugeben, das mit dem Fehler verknüpft ist.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei das Benachrichtigungssignal eine bandinterne Nachricht umfasst, die auf der Verbindung zu senden ist.
  • Beispiel 3 kann den Gegenstand von Beispiel 1 umfassen, wobei das Benachrichtigungssignal ein Seitenbandsignal umfasst, das über einen Seitenbandkanal zu senden ist, und der Retimer einen oder mehrere Pins umfasst, um den Seitenbandkanal zu unterstützen.
  • Beispiel 4 kann den Gegenstand von Beispiel 2 umfassen, wobei der eine oder die mehreren Pins eine Menge von Daten-Pins, um Daten über den Seitenbandkanal mitzuteilen, und einen dedizierten Warn-Pin, um das Benachrichtigungssignal zu senden, umfassen.
  • Beispiel 5 kann den Gegenstand von Beispiel 4 umfassen, wobei der Seitenbandkanal einen Systemverwaltungsbus (SMBUS) umfasst.
  • Beispiel 6 kann den Gegenstand eines der Beispiele 1 bis 5 umfassen, wobei das Event-Register einem standardisierten Format entspricht, das mit einem Zusammenschaltungsprotokoll verknüpft ist.
  • Beispiel 7 kann den Gegenstand von Beispiel 6 umfassen, wobei das Zusammenschaltungsprotokoll ein PCIe- („Peripheral Component Interconnect Express“) basiertes Protokoll umfasst.
  • Beispiel 8 kann den Gegenstand von Beispiel 7 umfassen, wobei das standardisierte Format auf einem PCIe-Fähigkeitsregisterformat basiert.
  • Beispiel 9 kann den Gegenstand eines der Beispiele 1 bis 8 umfassen, wobei das Event-Register eine jeweilige Registerstruktur für jeden einer Vielzahl von Fehlertypen umfasst, und Fehler eines bestimmten Typs in einer entsprechenden der Registerstrukturen zu melden sind.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, wobei die Vielzahl von Fehlertypen Empfängerfehler, interne Retimer-Fehler und Entzerrungsfehler umfassen.
  • Beispiel 11 kann den Gegenstand eines der Beispiele 1 bis 10 umfassen, wobei das Event-Register ferner Felder, um die Menge von Events anzugeben, die durch die Fehlerdetektionsschaltungen detektierbar sind, und Felder, um anzugeben, welche von der Menge von Events durch den Retimer in dem Event-Register zu melden sind, umfasst.
  • Beispiel 12 ist ein nicht vorübergehendes, maschinenzugängliches Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen zum: Identifizieren eines Signals, das von einer Verlängerungsvorrichtung gesendet wird, um anzugeben, dass ein Fehler an der Verlängerungsvorrichtung detektiert wird, wobei die Verlängerungsvorrichtung auf einer Punkt-zu-Punkt-Verbindung positioniert ist, die Verbindung zwei Endpunktkomponenten verbinden soll, und die Verlängerungsvorrichtung zwischen den Endpunktkomponenten positioniert ist, um die räumliche Länge der Verbindung zu verlängern; Zugreifen auf ein Event-Register, das auf der Verlängerungsvorrichtung vorliegt, basierend auf dem Signal; Auslesen von Daten aus dem Event-Register, wobei die Daten den Fehler beschreiben, der auf der Verlängerungsvorrichtung detektiert wird; und Einleiten einer Auflösung des Fehlers basierend auf den Daten.
  • Beispiel 13 kann den Gegenstand von Beispiel 12 umfassen, wobei die Anweisungen solche umfassen, die mit einem von einem grundlegenden Ein-/Ausgabe-System (BIOS) eines Systems oder einem Hauptplatinenverwaltungs-Controller (BMC) verknüpft sind.
  • Beispiel 14 kann den Gegenstand eines der Beispiele 12 bis 13 umfassen, wobei die Anweisungen solche umfassen, die mit einem Betriebssystem verknüpft sind.
  • Beispiel 15 kann den Gegenstand eines der Beispiele 12 bis 14 umfassen, wobei die Anweisungen, wenn sie ausgeführt werden, ferner bewirken, dass die Maschine ein Verbindungsfehlersignal identifiziert, das an mindestens einem der beiden Endpunktkomponenten detektiert wird, wobei auf das Event-Register ferner basierend auf dem Verbindungsfehlersignal zugegriffen wird und dieses ausgelesen wird.
  • Beispiel 16 kann den Gegenstand von Beispiel 15 umfassen, wobei das Verbindungsfehlersignal einen Interrupt umfasst.
  • Beispiel 17 kann den Gegenstand eines der Beispiele 12 bis 16 umfassen, wobei die Anweisungen, wenn sie ausgeführt werden, ferner bewirken, dass die Maschine Protokolldaten generiert, um Informationen zu beschreiben, die mit dem Fehler verknüpft sind, basierend auf die Daten, die aus dem Event-Register der Verlängerungsvorrichtung ausgelesen werden.
  • Beispiel 18 kann den Gegenstand eines der Beispiele 12 bis 17 umfassen, wobei die Verlängerungsvorrichtung einen von einem Retimer oder einem Redriver umfasst.
  • Beispiel 19 kann den Gegenstand eines der Beispiele 12 bis 18 umfassen, wobei die Verbindung eine Menge von zwei oder mehreren Verlängerungsvorrichtungen umfasst, die zwischen den beiden Endpunktkomponenten in Reihe positioniert sind, und das jeweilige Event-Register von jeder der zwei oder mehreren Verlängerungsvorrichtungen basierend auf dem Signal auszulesen ist.
  • Beispiel 20 ist ein System, umfassend: eine erste Vorrichtung, eine zweite Vorrichtung, die mit der ersten Vorrichtung durch eine Punkt-zu-Punkt-Verbindung verbunden ist; und eine Verlängerungsvorrichtung, die zwischen der ersten Vorrichtung und der zweiten Vorrichtung in der Verbindung positioniert ist, um die räumliche Entfernung der Verbindung zu verlängern. Die Verlängerungsvorrichtung umfasst: Fehlerdetektionsschaltungen, um eine Fehlermenge an der Verlängerungsvorrichtung zu detektieren; ein Event-Register, wobei die Verlängerungsvorrichtung Daten in das Event-Register schreiben soll, um die Detektion eines Fehlers durch die Fehlerdetektionsschaltungen zu beschreiben; und eine Benachrichtigungslogik, um ein Benachrichtigungssignal zu senden, um die Detektion des Fehlers und das Vorliegen der Daten im Event-Register, das mit dem Fehler verknüpft ist, für einen Controller, der mit mindestens einer von der ersten Vorrichtung und der zweiten Vorrichtung verknüpft ist, anzugeben.
  • Beispiel 21 kann den Gegenstand von Beispiel 20 umfassen, wobei es ferner den Controller umfasst.
  • Beispiel 22 kann den Gegenstand eines der Beispiele 20 bis 21 umfassen, wobei es ferner einen Event-Handler umfasst, um die Daten in dem Event-Register als Reaktion auf das Benachrichtigungssignal auszulesen.
  • Beispiel 23 kann den Gegenstand von Beispiel 22 umfassen, wobei der Event-Handler ferner bestimmt ist zum: Generieren von Protokolldaten für die Fehler basierend auf den Daten in dem Event-Register; und Einleiten einer Korrekturmaßnahme für den Fehler.
  • Beispiel 24 kann den Gegenstand von Beispiel 23 umfassen, wobei der Event-Handler in einem grundlegenden Ein-/Ausgabesystem (BIOS) des Systems oder einem Hauptplatinenverwaltungs-Controller (BMC) des Systems umgesetzt ist.
  • Beispiel 25 kann den Gegenstand von Beispiel 23 umfassen, wobei der Event-Handler in einem Betriebssystem des Systems umgesetzt ist.
  • Beispiel 26 kann den Gegenstand eines der Beispiele 20 bis 25 umfassen, wobei die Verlängerungsvorrichtung einen Retimer umfasst, und der Retimer Retimer-Schaltungen umfasst, um den Takt von Signalen zu berichtigen, die von der ersten Vorrichtung und der zweiten Vorrichtung an den Empfängern des Retimers empfangen werden.
  • Beispiel 27 kann den Gegenstand eines der Beispiele 20 bis 26 umfassen, wobei die Verlängerungsvorrichtung ferner mit der ersten Vorrichtung durch einen Seitenbandkanal gekoppelt ist und das Benachrichtigungssignal auf dem Seitenbandkanal gesendet wird.
  • Beispiel 28 kann den Gegenstand von Beispiel 27 umfassen, wobei der Seitenbandkanal einen Systemverwaltungsbus (SMBUS) umfasst.
  • Beispiel 29 kann den Gegenstand von Beispiel 28 umfassen, wobei der SMBUS einen Pin umfasst, der für das Benachrichtigungssignal dediziert ist.
  • Beispiel 30 kann den Gegenstand eines der Beispiele 20 bis 29 umfassen, wobei das Event-Register auf einem Register basiert, das für einen PCIe- („Peripheral Component Interconnect Express“) basierten Konfigurationsraum definiert ist.
  • Beispiel 31 kann den Gegenstand von Beispiel 30 umfassen, wobei das Register ein PCIe-Steuer- und Statusregister umfasst.
  • Beispiel 32 ist ein Verfahren, umfassend folgende Schritte: Identifizieren eines Signals, das von einer Verlängerungsvorrichtung gesendet wird, um anzugeben, dass ein Fehler an der Verlängerungsvorrichtung detektiert wird, wobei die Verlängerungsvorrichtung auf einer Punkt-zu-Punkt-Verbindung positioniert ist, die Verbindung zwei Endpunktkomponenten verbinden soll, und die Verlängerungsvorrichtung zwischen den Endpunktkomponenten positioniert ist, um die räumliche Länge der Verbindung zu verlängern; Zugreifen auf ein Event-Register, das auf der Verlängerungsvorrichtung vorliegt, basierend auf dem Signal; Auslesen von Daten aus dem Event-Register, wobei die Daten den Fehler beschreiben, der an der Verlängerungsvorrichtung detektiert wird; und Einleiten einer Auflösung des Fehlers basierend auf den Daten.
  • Beispiel 33 kann den Gegenstand von Beispiel 32 umfassen, ferner umfassend: Detektieren des Fehlers an der Verlängerungsvorrichtung; Generieren des Signals an der Verlängerungsvorrichtung; und Schreiben der Daten in das Event-Register System.
  • Beispiel 34 kann den Gegenstand eines der Beispiele 32 bis 33 umfassen, wobei die Anweisungen solche umfassen, die mit einem von einem grundlegenden Ein-/Ausgabesystem (BIOS) des Systems oder einem Hauptplatinenverwaltungs-Controller (BMC) verknüpft sind.
  • Beispiel 35 kann den Gegenstand eines der Beispiele 32 bis 34 umfassen, wobei die Anweisungen solche umfassen, die mit einem Betriebssystem verknüpft sind.
  • Beispiel 36 kann den Gegenstand eines der Beispiele 32 bis 35 umfassen, ferner umfassend das Identifizieren eines Verbindungsfehlersignals, das an mindestens einem der beiden Endpunktkomponenten detektiert wird, wobei das Event-Register basierend ferner auf dem Verbindungsfehlersignal zugänglich ist und ausgelesen wird.
  • Beispiel 37 kann den Gegenstand von Beispiel 36 umfassen, wobei das Verbindungsfehlersignal einen Interrupt umfasst.
  • Beispiel 38 kann den Gegenstand eines der Beispiele 32 bis 37 umfassen, ferner umfassend das Generieren von Protokolldaten, um Informationen zu beschreiben, die mit dem Fehler verknüpft sind, basierend auf den Daten, die aus dem Event-Register der Verlängerungsvorrichtung ausgelesen werden.
  • Beispiel 39 kann den Gegenstand eines der Beispiele 32 bis 38 umfassen, wobei die Verlängerungsvorrichtung einen von einem Retimer oder einem Redriver umfasst.
  • Beispiel 40 kann den Gegenstand eines der Beispiele 32 bis 39 umfassen, wobei die Verbindung eine Menge von zwei oder mehreren Verlängerungsvorrichtungen umfasst, die zwischen den beiden Endpunktkomponenten in Reihe positioniert sind, und das jeweilige Event-Register jeder der zwei oder mehreren Verlängerungsvorrichtungen basierend auf dem Signal auszulesen ist.
  • Beispiel 41 ist ein System, das Mittel umfasst, um das Verfahren eines der Beispiele 32 bis 40 auszuführen.
  • Eine Bezugnahme in der vorliegenden Beschreibung auf „eine einzige Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit bezieht sich das Vorkommen der Ausdrücke „bei einer einzigen Ausführungsform“ oder „bei einer Ausführungsform“ an verschiedenen Stellen in der ganzen vorliegenden Beschreibung nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Kennzeichen in einer oder mehreren Ausführungsformen auf beliebige geeignete Art und Weise kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch ersichtlich, dass diverse Modifikationen und Änderungen daran vorgenommen werden können, ohne den breiteren Geist und Umfang der Erfindung, wie in den beiliegenden Ansprüchen dargelegt, zu verlassen. Die Beschreibung und die Zeichnungen sind entsprechend als erläuternd und nicht als einschränkend anzusehen. Ferner bezieht sich die vorstehende Verwendung von Ausführungsform- und anderer beispielhafter Sprache nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und getrennte Ausführungsformen sowie möglicherweise dieselbe Ausführungsform beziehen.

Claims (25)

  1. Gerät, umfassend: einen Retimer, um eine Punkt-zu-Punkt-Verbindung zum Verbinden von zwei Vorrichtungen zu verlängern, wobei der Retimer umfasst: Fehlerdetektionsschaltungen, um eine Menge von Fehlern am Retimer zu detektieren; einen Speicher, um ein Event-Register zu speichern, wobei der Retimer Daten in das Event-Register schreiben soll, um die Detektion eines Fehlers durch die Fehlerdetektionsschaltungen zu beschreiben; und eine Benachrichtigungslogik, um ein Benachrichtigungssignal zu senden, um die Detektion des Fehlers und das Vorliegen der Daten im Event-Register, die mit dem Fehler verknüpft sind, anzugeben.
  2. Gerät nach Anspruch 1, wobei das Benachrichtigungssignal eine bandinterne Nachricht umfasst, die auf der Verbindung zu senden ist.
  3. Gerät nach Anspruch 1, wobei das Benachrichtigungssignal ein Seitenbandsignal umfasst, das über einen Seitenbandkanal zu senden ist, und der Retimer einen oder mehrere Pins umfasst, um den Seitenbandkanal zu unterstützen.
  4. Gerät nach Anspruch 2, wobei der eine oder die mehreren Pins eine Menge von Daten-Pins, um Daten über den Seitenbandkanal mitzuteilen, und einen dedizierten Warn-Pin, um das Benachrichtigungssignal zu senden, umfassen.
  5. Gerät nach Anspruch 4, wobei der Seitenbandkanal einen Systemverwaltungsbus (SMBUS) umfasst.
  6. Gerät nach Anspruch 1, wobei das Event-Register einem standardisierten Format entspricht, das mit einem Zusammenschaltungsprotokoll verknüpft ist.
  7. Gerät nach Anspruch 6, wobei das Zusammenschaltungsprotokoll ein PCIe- („Peripheral Component Interconnect Express“) basiertes Protokoll umfasst.
  8. Gerät nach Anspruch 7, wobei das standardisierte Format auf einem PCIe-Fähigkeitsregisterformat basiert.
  9. Gerät nach Anspruch 1, wobei das Event-Register eine jeweilige Registerstruktur für jeden einer Vielzahl von Fehlertypen umfasst, und Fehler eines bestimmten Typs in einer entsprechenden der Registerstrukturen zu melden sind.
  10. Gerät nach Anspruch 9, wobei die Vielzahl von Fehlertypen Empfängerfehler, interne Retimer-Fehler und Entzerrungsfehler umfasst.
  11. Gerät nach Anspruch 1, wobei das Event-Register ferner Felder, um die Menge von Events anzugeben, die durch die Fehlerdetektionsschaltungen detektierbar sind, und Felder, um anzugeben, welche von der Menge von Events durch den Retimer in dem Event-Register zu melden sind, umfasst.
  12. Mindestens ein nicht vorübergehendes, maschinenzugängliches Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen zum: Identifizieren eines Signals, das von einer Verlängerungsvorrichtung gesendet wird, um anzugeben, dass ein Fehler an der Verlängerungsvorrichtung detektiert wird, wobei die Verlängerungsvorrichtung auf einer Punkt-zu-Punkt-Verbindung positioniert ist, die Verbindung zwei Endpunktkomponenten verbinden soll, und die Verlängerungsvorrichtung zwischen den Endpunktkomponenten positioniert ist, um die räumliche Länge der Verbindung zu verlängern; Zugreifen auf ein Event-Register, das auf der Verlängerungsvorrichtung vorliegt, basierend auf dem Signal; Auslesen von Daten aus dem Event-Register, wobei die Daten den Fehler beschreiben, der an der Verlängerungsvorrichtung detektiert wird; und Einleiten einer Auflösung des Fehlers, basierend auf den Daten.
  13. Speichermedium nach Anspruch 12, wobei die Anweisungen solche umfassen, die mit einem von einem grundlegenden Ein-/Ausgabesystem (BIOS) des Systems oder einem Hauptplatinenverwaltungs-Controller (BMC) verknüpft sind.
  14. Speichermedium nach Anspruch 12, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Maschine zum Identifizieren eines Verbindungsfehlersignals, das an mindestens einem der beiden Endpunktkomponenten detektiert wird, veranlassen, wobei das Event-Register ferner basierend auf dem Verbindungsfehlersignal zugänglich ist und ausgelesen wird.
  15. Speichermedium nach Anspruch 14, wobei das Verbindungsfehlersignal einen Interrupt umfasst.
  16. Speichermedium nach Anspruch 12, wobei die Anweisungen, wenn sie ausgeführt werden, ferner die Maschine zum Generieren von Protokolldaten veranlassen, um Informationen zu beschreiben, die mit dem Fehler verknüpft sind, basierend auf den Daten, die aus dem Event-Register der Verlängerungsvorrichtung ausgelesen werden.
  17. Speichermedium nach Anspruch 12, wobei die Verlängerungsvorrichtung einen von einem Retimer oder einem Redriver umfasst.
  18. Speichermedium nach Anspruch 12, wobei die Verbindung eine Menge von zwei oder mehreren Verlängerungsvorrichtungen umfasst, die zwischen den beiden Endpunktkomponenten in Reihe positioniert sind, und das jeweilige Event-Register jeder der zwei oder mehreren Verlängerungsvorrichtungen basierend auf dem Signal auszulesen ist.
  19. System, umfassend: eine erste Vorrichtung; eine zweite Vorrichtung, die mit der ersten Vorrichtung durch eine Punkt-zu-Punkt-Verbindung verbunden ist; und eine Verlängerungsvorrichtung, die zwischen der ersten Vorrichtung und der zweiten Vorrichtung in der Verbindung positioniert ist, um die räumliche Entfernung der Verbindung zu verlängern, wobei die Verlängerungsvorrichtung umfasst: Fehlerdetektionsschaltungen, um eine Fehlermenge an der Verlängerungsvorrichtung zu detektieren; ein Event-Register, wobei die Verlängerungsvorrichtung Daten in das Event-Register schreiben soll, um die Detektion eines Fehlers durch die Fehlerdetektionsschaltungen zu beschreiben; und einen Sender, um ein Benachrichtigungssignal zu senden, um die Detektion des Fehlers und das Vorliegen der Daten im Event-Register, die mit dem Fehler verknüpft sind, für einen Controller, der mit mindestens einer von der ersten Vorrichtung und der zweiten Vorrichtung verknüpft ist, anzugeben.
  20. System nach Anspruch 19, ferner umfassend den Controller.
  21. System nach Anspruch 19, ferner umfassend einen Event-Handler, um die Daten in dem Event-Register als Reaktion auf das Benachrichtigungssignal auszulesen.
  22. System nach Anspruch 21, wobei der Event-Handler ferner bestimmt ist zum: Generieren von Protokolldaten für den Fehler, basierend auf den Daten in dem Event-Register; und Einleiten einer Korrekturmaßnahme für den Fehler.
  23. System nach Anspruch 19, wobei die Verlängerungsvorrichtung einen Retimer umfasst, und der Retimer Retimer-Schaltungen umfasst, um den Takt von Signalen, die von der ersten Vorrichtung und der zweiten Vorrichtung empfangen werden, an den Empfängern des Retimers zu berichtigen.
  24. System nach Anspruch 19, wobei die Verlängerungsvorrichtung ferner durch einen Seitenbandkanal mit der ersten Vorrichtung gekoppelt ist, und das Benachrichtigungssignal auf dem Seitenbandkanal gesendet wird.
  25. System nach Anspruch 19, wobei das Event-Register auf einem Register basiert, das für einen PCIe- („Peripheral Component Interconnect Express“) basierten Konfigurationsraum definiert ist.
DE112018007637.7T 2018-09-28 2018-09-28 Fehlermeldung in Verbindungsverlängerungsvorrichtungen Pending DE112018007637T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/108442 WO2020062075A1 (en) 2018-09-28 2018-09-28 Error reporting in link extension devices

Publications (1)

Publication Number Publication Date
DE112018007637T5 true DE112018007637T5 (de) 2021-04-29

Family

ID=69949530

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018007637.7T Pending DE112018007637T5 (de) 2018-09-28 2018-09-28 Fehlermeldung in Verbindungsverlängerungsvorrichtungen

Country Status (3)

Country Link
US (2) US11874724B2 (de)
DE (1) DE112018007637T5 (de)
WO (1) WO2020062075A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321163B2 (en) * 2020-03-26 2022-05-03 Wipro Limited Device and method for monitoring functional safety in integrated circuits (ICS)
CN111682966B (zh) * 2020-05-26 2022-08-19 中国人民解放军国防科技大学 带故障主动报告功能的网络通信装置,***及其方法
US11347570B1 (en) * 2021-02-23 2022-05-31 Dell Products L.P. System and method for BIOS based messaging in an information handling system
US11693812B2 (en) * 2021-02-24 2023-07-04 Mellanox Technologies, Ltd. Multi-host networking systems and methods
CN113849368B (zh) * 2021-09-02 2023-07-18 苏州浪潮智能科技有限公司 一种基于retimer温漂问题的自修复装置及方法
CN114238035B (zh) * 2022-02-23 2022-06-21 南京芯驰半导体科技有限公司 一种通过运行状态指纹进行错误检测方法及***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7564798B2 (en) 2003-08-27 2009-07-21 Finisar Corporation Methods and devices for testing and monitoring high speed communication networks
US8068460B2 (en) * 2005-07-14 2011-11-29 Toshiba America Research, Inc. Dynamic packet buffering system for mobile handoff
KR102138369B1 (ko) 2013-10-10 2020-07-28 삼성전자주식회사 디스플레이 구동 회로, 디스플레이 장치 및 이를 포함하는 휴대용 단말기
EP3087403B1 (de) * 2013-12-26 2020-01-22 Intel Corporation Verbesserungen an einem verbindungsretimer
US9628220B2 (en) * 2014-04-15 2017-04-18 Broadcom Corporation Remote TX training with a re-timer
US10063365B1 (en) * 2017-03-10 2018-08-28 Keyssa Systems, Inc. Re-timer network insertion
CN106970866A (zh) * 2017-03-13 2017-07-21 郑州云海信息技术有限公司 一种磁盘监控***及方法

Also Published As

Publication number Publication date
US11874724B2 (en) 2024-01-16
WO2020062075A1 (en) 2020-04-02
US20240152417A1 (en) 2024-05-09
US20210271537A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE112018007637T5 (de) Fehlermeldung in Verbindungsverlängerungsvorrichtungen
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE112010001469B4 (de) Flexible Integration von Endpunktlogik in unterschiedlichen Plattformen
DE112016003693T5 (de) Abschwächung von Pinfeldübersprechen
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102018005753A1 (de) Serdes link training
DE102019109130A1 (de) System, verfahren und einrichtung für dvsec für eine effiziente peripheriegeräteverwaltung
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 112018008307

Country of ref document: DE