DE112017006523T5 - Retimer mit kurzer latenzzeit - Google Patents

Retimer mit kurzer latenzzeit Download PDF

Info

Publication number
DE112017006523T5
DE112017006523T5 DE112017006523.2T DE112017006523T DE112017006523T5 DE 112017006523 T5 DE112017006523 T5 DE 112017006523T5 DE 112017006523 T DE112017006523 T DE 112017006523T DE 112017006523 T5 DE112017006523 T5 DE 112017006523T5
Authority
DE
Germany
Prior art keywords
retimer
protocol
logic
signal
connection
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
DE112017006523.2T
Other languages
English (en)
Inventor
Michelle C. Jen
Debendra Das Sharma
Venkatraman Iyer
Tao Liang
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 DE112017006523T5 publication Critical patent/DE112017006523T5/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Abstract

Eine Retimer-Vorrichtung empfängt ein erstes Signal von einer ersten Vorrichtung und regeneriert das erste Signal zum Senden an eine zweite Vorrichtung. Der Retimer empfängt ferner ein zweites Signal von der zweiten Vorrichtung und regeneriert das zweite Signal zum Senden an die erste Vorrichtung, wobei die erste Vorrichtung eine Prozessorvorrichtung aufweist. Der Retimer weist ferner eine Seitenband-Schnittstelle zum Verbinden mit der ersten Vorrichtung auf und weist ferner Protokolllogik zum Überwachen des ersten Signals, Bestimmen, dass das erste Signal ein Muster aufweist, das in einem Protokoll definiert ist, um eine Protokolltätigkeit zu identifizieren, und Teilnehmen bei der Durchführung der Protokolltätigkeit unter Verwendung der Seitenband-Schnittstelle auf.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG/EN
  • Die vorliegende Anmeldung beansprucht den Vorteil der Priorität der nicht vorläufigen US-Patentanmeldung Nr. 15/387,802 mit dem Titel „LOW LATENCY RETIMER“, die am 22. Dezember 2016 eingereicht wurde und die durch Bezugnahme in ihrer Gesamtheit hierin aufgenommen wird.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Offenbarung betrifft Rechensysteme und insbesondere (aber nicht ausschließlich) Punkt-zu-Punkt-Interconnects.
  • ALLGEMEINER STAND DER TECHNIK
  • Fortschritte bei der Halbleiterverarbeitung und beim Logikentwurf haben eine Zunahme des Betrags von Logik ermöglicht, der auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Als eine Begleiterscheinung haben Computersystemausgestaltungen sich von einer einzelnen oder mehreren integrierten Schaltungen in einem System hin zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie anderen Schnittstellen entwickelt, die innerhalb solcher Prozessoren integriert sind. Ein Prozessor oder eine integrierte Schaltung weist typischerweise einen einzelnen physikalischen Prozessor-Die auf, wo der Prozessor-Die irgendeine Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Speichern, Controller-Hubs usw. aufweisen kann.
  • Als ein Ergebnis der größeren Fähigkeit, mehr Verarbeitungsleistung in kleinere Packages einzupassen, erfreuen sich kleinere Rechenvorrichtungen bislang einer wachsenden Beliebtheit. Smartphones, Tablets, ultradünne Notebooks und andere Benutzereinrichtungen sind exponentiell gewachsen. Diese kleineren Vorrichtungen sind indes sowohl zur Datenspeicherung als auch zur komplexen Verarbeitung, die den Formfaktor übertrifft, auf Server angewiesen. Folglich ist auch die Nachfrage im Hochleistungsrechenmarkt (d. h. Serverraum) gewachsen. Zum Beispiel sind in modernen Servern typischerweise nicht nur ein einzelner Prozessor mit mehreren Kernen, sondern auch mehrere physikalische Prozessoren (die auch als mehrere Sockets bezeichnet werden) vorhanden, um die Rechenleistung zu erhöhen. Aber wenn die Verarbeitungsleistung zusammen mit der Anzahl von Vorrichtungen in einem Rechensystem wächst, wird die Kommunikation zwischen Sockets und anderen Vorrichtungen kritischer.
  • Tatsächlich sind die Interconnects von herkömmlicheren Multi-Drop-Bussen, die hauptsächlich elektrische Kommunikationen gehandhabt haben, zu voll entwickelten Interconnect-Architekturen gewachsen, die schnelle Kommunikation erleichtern. Unglücklicherweise bedeutet die Nachfrage an einem Verbrauch von sogar noch höheren Raten für zukünftige Prozessoren eine entsprechende Nachfrage an Fähigkeiten bestehender Interconnect-Architekturen.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform eines Rechensystems, das eine Interconnect-Architektur aufweist.
    • 2 veranschaulicht eine Ausführungsform einer Interconnect-Architektur, die einen geschichteten Stapel aufweist.
    • 3 veranschaulicht eine Ausführungsform einer Anforderung oder eines Pakets, das innerhalb einer Interconnect-Architektur zu erzeugen oder zu empfangen ist.
    • 4 veranschaulicht eine Ausführungsform eines Sender- und Empfängerpaares für eine Interconnect-Architektur.
    • 5 veranschaulicht Ausführungsformen von potentiellen Prozessor-zu-Prozessor-Interconnect-Ausgestaltungen mit hoher Leistung.
    • 6 veranschaulicht eine Ausführungsform eines geschichteten Protokollstapels, der einem Interconnect zugehörig ist.
    • 7A bis 7C veranschaulichen vereinfachte Blockdiagramme von beispielhaften Ausführungen eines Testmodus zum Bestimmen von Fehlern in einer oder mehreren Unterverbindungen einer Verbindung.
    • 8A und 8B veranschaulichen vereinfachte Blockdiagramme von beispielhaften Verbindungen, die eine oder mehrere Erweiterungsvorrichtungen aufweisen.
    • 9A und 9B veranschaulichen vereinfachte Blockdiagramme von Verbindungen, die einen Retimer aufweisen, der über einen Seitenbandkanal an eine oder mehrere Endpunktvorrichtungen gekoppelt ist.
    • 10 veranschaulicht ein vereinfachtes Blockdiagramm von Logik einer beispielhaften Retimer-Vorrichtung.
    • 11 veranschaulicht ein vereinfachtes Blockdiagramm, das eine beispielhafte Zustandsmaschine einer Retimer-Vorrichtung darstellt.
    • 12 veranschaulicht ein vereinfachtes Blockdiagramm von Logik, die protokollspezifische Logik in einer beispielhaften Retimer-Vorrichtung aufweist.
    • 13A und 13B sind Ablaufdiagramme, die beispielhafte Techniken in Verbindung mit einer Verbindung veranschaulichen, die einen Retimer aufweist.
    • 14 veranschaulicht eine Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Mehrkernprozessor aufweist.
    • 15 veranschaulicht eine Ausführungsform eines Blocks für ein Rechensystem, das mehrere Prozessoren aufweist.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie beispielsweise Beispiele für spezifische Typen von Prozessoren und Systemausgestaltungen, spezifische Hardware-Strukturen, spezifische Einzelheiten zu Architektur und Mikroarchitektur, spezifische Registerausgestaltungen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Abmessungen/Höhen, spezifische/r Prozessor-Pipeline-Stufen und Betrieb usw., um ein eingehendes Verständnis der vorliegenden Erfindung bereitzustellen. Für den Fachmann ist indes ersichtlich, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Erfindung in der Praxis auszuführen. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie beispielsweise spezifische und alternative Prozessorarchitekturen, spezifische/r Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifischer Interconnect-Betrieb, spezifische Logikausgestaltungen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Ausführungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Abschalt- und Gating-Techniken/Logik und andere spezifische Betriebsdetails von Computersystemen nicht im Detail beschrieben, um zu vermeiden, dass die vorliegende Erfindung unnötigerweise unverständlich gemacht wird.
  • Obgleich es sein kann, dass die folgenden Ausführungsformen unter Bezugnahme auf Energiesparen und Energieeffizienz in spezifischen integrierten Schaltungen, wie beispielsweise in Rechenplattformen oder Mikroprozessoren, beschrieben werden, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteinen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hier beschrieben sind, können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewandt werden, die auch eine bessere Energieeffizienz und Energiesparen nutzen können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Rechensysteme oder Ultrabooks™ beschränkt. Und diese können auch in anderen Vorrichtungen, wie beispielsweise handgehaltenen Vorrichtungen, Tablets, anderen dünnen Notebooks, System-on-a-Chip-Vorrichtungen (SOC) und eingebetteten Anwendungen, verwendet werden. Einige Beispiele für handgehaltene Vorrichtungen weisen Mobiltelefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und handgehaltene PCs auf. Eingebettete Anwendungen weisen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System-ona-Chip, Netzwerk-Computer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network (WAN) Switche oder irgendein anderes System auf, das die nachfolgend gelehrten Funktionen und Operationen durchführen kann. Darüber hinaus sind die Vorrichtungen, Verfahren und Systeme, die hier beschrieben sind, nicht auf physikalische Rechenvorrichtungen beschränkt, sondern können auch Software-Optimierungen zum Energiesparen und für Energieeffizienz betreffen. Wie aus der folgenden Beschreibung ohne Weiteres hervorgeht, sind die Ausführungsformen von Verfahren, Vorrichtungen und Systemen, die hier beschrieben sind (unabhängig, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) zentral für „grüne Technologien“ der Zukunft, die mit Leistungserwägungen abgestimmt sind.
  • Im Zuge des Fortschritts bei Rechensystemen werden die Komponenten darin komplexer. Folglich nimmt auch die Komplexität der Interconnect-Architektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Betrieb der Komponenten erfüllt werden. Ferner erfordern unterschiedliche Marktsegmente unterschiedliche Gesichtspunkte von Interconnect-Architekturen, um sich für die Bedürfnisse des Marktes zu eignen. Zum Beispiel erfordern Server höhere Leistung, während das mobile Ökosystem manchmal in der Lage ist, Gesamtleistung für Stromersparnisse zu opfern. Ein herausragender Zweck der meisten Fabrics besteht jedoch darin, die höchstmögliche Leistung bei maximaler Stromersparnis bereitzustellen. In der Folge werden eine Anzahl von Interconnects erörtert, die potenziell Gesichtspunkte der hier beschriebenen Erfindung nutzen könnten.
  • Eine Interconnect-Fabric-Architektur weist die Peripheral Component Interconnect (PCI) Express (PCIe) Architektur auf. Ein Hauptziel von PCIe besteht darin, es Komponenten und Vorrichtungen von verschiedenen Lieferanten zu ermöglichen, in einer offenen Architektur gemeinsam betrieben zu werden, die sich über mehrere Marktsegmente, Clients (Desktops und mobil), Server (Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen erstreckt. PCI Express ist ein Universal-E/A-Interconnect mit hoher Leistung, das für eine große Vielzahl von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie beispielsweise ihr Verwendungsmodell, ihre Lade-Speicher-Architektur und ihre Software-Schnittstellen, wurden über ihre Revisionen hinweg beibehalten, wohingegen vorherige parallele Bus-Ausführungen durch eine in hohem Maße skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Fortschritte bei Punkt-zu-Punkt-Interconnects, switch-basierte Technologie und paketisierbarem Protokoll, um neue Niveaus an Leistung und Merkmalen zu liefern. Power Management, Quality Of Service (QoS), Hot-Plug/Hot- Swap-Support, Data Integrity und Error Handling sind einige der modernen Merkmale, die durch PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 wird eine Ausführungsform eines Fabrics veranschaulicht, das aus Punkt-zu-Punkt-Verbindungen besteht, die eine Menge von Komponenten zusammenschalten. Das System 100 weist den Prozessor 105 und den Systemspeicher 110 auf, der an den Controller Hub 115 gekoppelt ist. Der Prozessor 105 weist irgendein Verarbeitungselement auf, wie beispielsweise einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder anderen Prozessor. Der Prozessor 105 ist durch den Front-Side Bus (FSB) 106 an den Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der FSB 106 ein serielles Punkt-zu-Punkt-Interconnect, wie in der Folge beschrieben. In einer anderen Ausführungsform weist die Verbindung 106 eine serielle, differentielle Interconnect-Architektur auf, die einen unterschiedlichen Interconnect-Standard erfüllt.
  • Der Systemspeicher 110 weist irgendeine Speichervorrichtung, wie beispielsweise Speicher mit wahlfreiem Zugriff (Random Access Memory - RAM), nichtflüchtigen Speicher (NV) oder anderen Speicher, auf, auf den Vorrichtungen im System 100 zugreifen können. Der Systemspeicher 110 ist durch die Speicherschnittstelle 116 an den Controller-Hub 115 gekoppelt. Beispiele für eine Speicherschnittstelle weisen eine Double-Data Rate (DDR) Speicherschnittstelle, eine Dual-Channel-DDR-Speicherschnittstelle und eine dynamische RAM (DRAM) Speicherschnittstelle auf.
  • In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, Root-Complex oder Root-Controller in einer Peripheral Component Interconnect Express (PCIe oder PCIE) Zusammenschaltungshierarchie. Beispiele für einen Controller-Hub 115 weisen einen Chipsatz, einen Speicher-Controller Hub (Memory Controller Hub - MCH), eine Northbridge, einen Interconnect Controller Hub (ICH), eine Southbridge und einen Root-Controller/Hub auf. Häufig bezeichnet der Begriff Chipsatz zwei physikalisch getrennte Controller Hubs, d. h. einen Memory Controller-Hub (MCH), der an einen Interconnect Controller Hub (ICH) gekoppelt ist. Es sei erwähnt, dass die gegenwärtigen Systeme häufig den MCH mit dem Prozessor 105 integriert aufweisen, während der Controller 115 zum Kommunizieren mit E/A-Vorrichtungen auf eine ähnliche Weise vorgesehen ist, wie in der Folge beschrieben. In einigen Ausführungsformen wird Peer-to-Peer-Routing wahlweise durch den Root Complex 115 unterstützt.
  • Hier ist der Controller Hub 115 durch eine serielle Verbindung 119 an den Switch/die Bridge 120 gekoppelt. Die Eingangs/Ausgangsmodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, weisen eine geschichteten Protokollstapel auf/führen diesen aus, um Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen in der Lage, an den Switch 120 gekoppelt zu werden.
  • Der/die Switch/Bridge 120 leitet Pakete/Nachrichten von der Vorrichtung 125 vorgeschaltet, d. h. eine Hierarchie hinauf in Richtung eines Root Complex, zum Controller-Hub 115, und nachgeschaltet, d. h. eine Hierarchie hinab von einem Root-Controller weg, von dem Prozessor 105 oder Systemspeicher 110 zur Vorrichtung 125, weiter. Der Switch 120 wird in einer Ausführungsform als eine logische Baugruppe von mehreren virtuellen PCI-zu-PCI-Bridge-Vorrichtungen bezeichnet. Die Vorrichtung 125 weist irgendeine interne oder externe Vorrichtung oder Komponente auf, die zur Kopplung an ein elektronisches System vorgesehen ist, wie beispielsweise eine E/A-Vorrichtung, einen Network Interface Controller (NIC), eine Add-In-Karte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speichervorrichtung, eine CD/DVD ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine Universal Serial Bus (USB) Vorrichtung, einen Scanner und andere Eingangs/Ausgangsvorrichtungen, auf. Eine solche Vorrichtung wird im PCIe-Jargon häufig als ein Endpunkt bezeichnet. Obgleich dies nicht spezifisch gezeigt ist, kann die Vorrichtung 125 eine PCIe-zu-PCI/PCI-X-Bridge aufweisen, um alte oder andere Versionen von PCI-Vorrichtungen zu unterstützen. Endpunktvorrichtungen in PCIe werden häufig als alte, PCIe oder Root Complex integrierte Endpunkte eingestuft.
  • Der Grafikbeschleuniger 130 ist auch durch die serielle Verbindung 132 an den Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 130 an einen MCH gekoppelt, der an einen ICH gekoppelt ist. Dann ist der Switch 120 und dementsprechend die E/A-Vorrichtung 125 an den ICH gekoppelt. Die E/A-Module 131 und 118 sind auch zum Ausführen eines geschichteten Protokollstapels zur Kommunikation zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 vorgesehen. Ähnlich wie bei der vorhergehenden Erörterung des MCH kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein. Ferner können eine oder mehrere Verbindungen (z. B. 123) des Systems eine oder mehrere Erweiterungsvorrichtungen (z. B. 150), wie beispielsweise Retimer, Repeater usw., aufweisen.
  • Nun unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels veranschaulicht. Der geschichtete Protokollstapel 200 weist irgendeine Form von einem geschichteten Kommunikationsstapel, wie beispielsweise einen Quick Path Interconnect (QPI) Stapel, einen PCIe-Stapel, einen Interconnect-Stapel für Hochleistungsrechner der nächsten Generation oder einen anderen geschichteten Stapel auf. Obgleich die direkt im Anschluss folgende Erörterung unter Bezugnahme auf 1 bis 4 einen PCIe-Stapel betrifft, können die gleichen Konzepte auf andere Interconnect-Stapel angewandt werden. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der die Transaction Layer 205, Link Layer 210 und Physical Layer 220 aufweist. Eine Schnittstelle, wie beispielsweise die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, können als der Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet werden, das/die einen Protokollstapel ausführt/aufweist.
  • PCI Express verwendet zum Kommunizieren von Informationen zwischen Komponenten Pakete. Pakete werden in der Transaction Layer 205 und der Data Link Layer 210 gebildet, um die Informationen von der sendenden Komponente zur empfangenden Komponente zu tragen. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die erforderlich sind, um Pakete an diesen Schichten zu handhaben. Auf der Empfangsseite findet der umgekehrte Prozess statt und die Pakete werden von ihrer Physical Layer 220 Darstellung in die Data Link Layer 210 Darstellung und schließlich (für die Transaction Layer Packets) in die Form umgewandelt, die durch die Transaction Layer 205 der empfangenden Vorrichtung verarbeitet werden kann.
  • Transaction Layer
  • In einer Ausführungsform ist die Transaction Layer 205 zum Bereitstellen einer Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Interconnect-Architektur, wie beispielsweise der Data Link Layer 210 und Physical Layer 220 vorgesehen. In dieser Hinsicht besteht eine Hauptverantwortlichkeit der Transaction Layer 205 im Assemblieren und Disassemblieren von Paketen (d. h. Transaction Layer Packets oder TLPs). Die Translation Layer 205 verwaltet typischerweise kreditbasierte Flusssteuerung (Credit-based Flow Control) für TLPs. PCIe führt geteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort aus, wodurch es einer Verbindung ermöglicht wird, anderen Verkehr zu tragen, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Darüber hinaus nutzt PCIe kreditbasierte Flusssteuerung (Credit-based Flow Control). In diesem Schema kündigt eine Vorrichtung einen Anfangsbetrag von Kredit für jeden von den Empfangspuffern in der Transaction Layer 205 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie beispielsweise der Controller-Hub 115 in 1, zählt die Anzahl der durch jedes TLP verbrauchten Kredite. Eine Transaktion kann gesendet werden, wenn die Transaktion ein Kreditlimit nicht überschreitet. Beim Empfang einer Antwort wird ein Kreditbetrag wiederhergestellt. Ein Vorteil eines Kreditschemas ist, dass die Latenzzeit der Kreditrückgabe die Leistung nicht beeinträchtigt, vorausgesetzt, es wird nicht an das Kreditlimit gestoßen.
  • In einer Ausführungsform weisen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingangs/Ausgangs-Adressraum und einen Nachrichtenadressraum auf. Speicherraumtransaktionen weisen eines oder mehrere von Leseanforderungen und Schreibanforderungen zum Übertragen von Daten an einen/von einem speicherabgebildeten Platz auf In einer Ausführungsform sind Speicherraumtransaktionen in der Lage, zwei verschiedene Adressformate, z. B. ein kurzes Adressformat, wie beispielsweise eine 32-Bit-Adresse, oder ein langes Adressformat, wie beispielsweise eine 64-Bit-Adresse, zu verwenden. Konfigurationsraumtransaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen zum Konfigurationsraum weisen Leseanforderungen und Schreibanforderungen auf. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden definiert, um In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher assembliert in einer Ausführungsform die Transaction Layer 205 Paketkopf/Nutzdaten 206. Das Format für die gegenwärtigen Paketköpfe/Nutzdaten kann in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website gefunden werden.
  • Kurz unter Bezugnahme auf 3 wird eine Ausführungsform eines PCIe-Transaktionsdeskriptors veranschaulicht. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Tragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere potentielle Verwendungen weisen das Nachverfolgen von Abwandlungen von Standard-Transaktionsordnung und die Verbindung von Transaktionen mit Kanälen auf.
  • Der Transaktionsdeskriptor 300 weist ein Feld Global Identifier (globale Kennung) 302, ein Feld Attributes (Attribute) 304 und ein Feld Channel Identifier (Kanalkennung) 306 auf. In dem veranschaulichten Beispiel weist das bildlich dargestellte Feld Global Identifier 302 das Feld Local Transaction Identifier (lokale Transaktionskennung) 308 und das Feld Source Identifier (Quellkennung) 310 auf. In einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Ausführung ist das Feld Local Transaction Identifier 308 ein Feld, das durch einen anfordernden Agenten erzeugt wird, und es ist für alle ausstehenden Anforderungen, die einen Abschluss für diesen anfordernden Agenten erfordern, eindeutig. Ferner identifiziert in diesem Beispiel die Quellkennung 310 den anfordernden Agenten eindeutig innerhalb einer PCIe-Hierarchie. Dementsprechend stellt zusammen mit der Quellkennung 310 das Feld Local Transaction Identifier 308 eine globale Kennung einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Feld Attributes 304 gibt Eigenschaften und Beziehungen der Transaktion an. In dieser Hinsicht wird das Feld Attributes 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die die Abwandlung der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform weist das Feld Attributes 304 das Feld Priority 312, das Feld Reserved 314, das Feld Ordering 316 und das Feld No-Snoop 318 auf. Hier kann das Unterfeld Priority 312 durch einen Initiator abgewandelt werden, um der Transaktion eine Priorität zuzuweisen. Das Feld Reserved Attribute 314 wird für zukünftige oder eine durch den Anbieter definierte Verwendung reserviert gelassen. Mögliche Verwendungsmodelle, die die Attribute Priority oder Security verwenden, können unter Verwendung des Attributfeldes Reserved ausgeführt werden.
  • In diesem Beispiel wird das Attributfeld Ordering 316 verwendet, um wahlfreie Informationen zu liefern, die den Typ der Ordnung befördern, die Standard-Ordnungsregeln abwandeln können. Gemäß einer beispielhaften Ausführung bezeichnet ein Ordering-Attribut von „0“, dass Standard-Ordnungsregeln anzuwenden sind, wohingegen ein Ordering-Attribut von „1“ eine gelockerte Ordnung bezeichnet, in der Schreib-Operationen Schreib-Operationen in der gleichen Richtung überspringen können und Lese-Operations-Abschlüsse Schreib-Operationen in der gleichen Richtung überspringen können. Das Attributfeld Snoop 318 wird genutzt, um zu bestimmen, ob für die Transaktionen Snooping angewandt wird. Wie gezeigt, identifiziert das Feld Channel ID 306 einen Kanal, dem eine Transaktion zugehörig ist.
  • Link Layer
  • Die Link Layer 210, die auch als Data Link Layer 210 bezeichnet wird, agiert als eine Zwischenstufe zwischen der Transaction Layer 205 und der Physical Layer 220. In einer Ausführungsform besteht eine Aufgabe der Data Link Layer 210 darin, einen zuverlässigen Mechanismus für den Austausch von Transaction Layer Packets (TLPs) zwischen zwei Komponenten einer Verbindung bereitzustellen. Eine Seite der Data Link Layer 210 nimmt durch die Transaction Layer 205 assemblierte TLPs an, wendet den Packet Sequence Identifier 211, d. h. eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlererkennungscode, d. h. CRC 212, und wendet ihn an und reicht die abgewandelten TLPs bei der Physical Layer 220 zur Übertragung über eine physikalische an eine externe Vorrichtung ein.
  • Physical Layer
  • In einer Ausführungsform weist die Physical Layer 220 den logischen Unterblock 221 und den elektrischen Unterblock 222 auf, um ein Paket physikalisch an eine externe Vorrichtung zu senden. Hier ist der logische Unterblock 221 verantwortlich für die „digitalen“ Funktionen der Physical Layer 221. In diesem Zusammenhang weist der logische Unterblock einen Sendeabschnitt zum Vorbereiten ausgehender Informationen zum Senden durch den physikalischen Unterblock 222 und einen Empfängerabschnitt zum Identifizieren und Vorbereiten empfangener Informationen, bevor sie an die Link Layer 210 weitergegeben werden, auf.
  • Der physikalische Block 222 weist einen Sender und einen Empfänger auf. Der Sender wird durch den logischen Unterblock 221 mit Symbolen beliefert, die der Sender serialisiert und auf denen er an eine externe Vorrichtung sendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung beliefert und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und an den logischen Unterblock 221 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden besondere Symbole verwendet, um ein Paket mit Rahmen 223 zu umrahmen. Darüber hinaus stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom wiederhergestellt wird.
  • Obwohl, wie oben angegeben, die Transaction Layer 205, Link Layer 210, und Physical Layer 220 unter Bezugnahme auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ist ein geschichteter Protokollstapel nicht derart beschränkt. Tatsächlich kann ein beliebiges geschichtetes Protokoll aufgenommen/ausgeführt werden. Als ein Beispiel weist ein/e Port/Schnittstelle, der/die als ein geschichtetes Protokoll dargestellt wird, Folgendes auf: (1) eine erste Schicht zum Assemblieren von Paketen, d. h. eine Transaction Layer; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Link Layer; und eine dritte Schicht zum Senden der Pakete, d. h. eine Physical Layer. Als ein spezifisches Beispiel wird ein geschichtetes Common Standard Interface (CSI) Protokoll eingesetzt.
  • Als Nächstes unter Bezugnahme auf 4 wird eine Ausführungsform eines seriellen PCIe-Punkt-zu-Punkt-Fabric veranschaulicht. Obgleich eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung veranschaulicht ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht derart beschränkt, da sie einen beliebigen Übertragungsweg zum Übertragen von seriellen Daten aufweist. In der gezeigten Ausführungsform weist eine grundlegende PCIe-Verbindung zwei differentiell angetriebene Niederspannungssignalpaare: ein Sendepaar 406/411 und ein Empfangspaar 412/407 auf. Dementsprechend weist die Vorrichtung 405 Sendelogik 406 zum Senden von Daten an die Vorrichtung 410 und Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410 auf. 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 bezeichnet auch einen beliebigen Weg zum Senden von Daten, wie beispielsweise eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationsweg. Eine Verbindung zwischen zwei Vorrichtungen, wie beispielsweise der Vorrichtung 405 und der Vorrichtung 410, wird als eine Verbindung, wie beispielsweise eine Verbindung 415, bezeichnet. Eine Verbindung kann eine Spur unterstützen - wobei jede Spur eine Menge von differentiellen Signalpaaren (ein Paar für das Senden, ein Paar für den Empfang) darstellt. Zum Skalieren der Bandbreite kann eine Verbindung mehrere Spuren aggregieren, die durch xN bezeichnet sind, wo N eine beliebige unterstützte Verbindungsbreite ist, wie beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar bezeichnet zwei Sendewege, wie beispielsweise die Leitungen 416 und 417, zum Senden differentieller Signale. Wenn als ein Beispiel die Leitung 416 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel, d. h. eine ansteigende Flanke, umschaltet, wird die Leitung 417 von einem logisch hohen Pegel zu einem logisch niedrigen Pegel, d. h. einer abfallenden Flanke, angetrieben. Differentielle Signale weisen potenziell bessere elektrische Eigenschaften auf, wie beispielsweise bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschwingen/Unterschwingen, Nachschwingen usw. Dies ermöglicht ein besseres Zeitsteuerungsfenster, wodurch schnellere Sendefrequenzen ermöglicht werden.
  • In einer Ausführungsform kann Ultra Path Interconnect (UPI) eingesetzt werden, um zwei oder mehr Vorrichtungen zusammenzuschalten. UPI kann ein cachekohärentes verbindungsbasiertes Interconnect der nächsten Generation ausführen. Als ein Beispiel kann UPI in Hochleistungs-Rechenplattformen, wie beispielsweise Arbeitsplätzen oder Servern, einschließlich in Systemen eingesetzt werden, wo PCIe oder ein anderes Interconnect-Protokoll typischerweise verwendet wird, um Prozessoren, Beschleuniger, E/A-Vorrichtungen und dergleichen zu verbinden. UPI ist indes nicht derart beschränkt. Stattdessen kann UPI in einem/einer beliebigen von den hier beschriebenen Systemen oder Plattformen eingesetzt werden. Ferner können die einzelnen entwickelten Ideen auf andere Interconnects und Plattformen angewandt werden, wie beispielsweise PCIe, MIPI, QPI usw.
  • Zur Unterstützung mehrerer Vorrichtungen kann UPI in einer beispielhaften Ausführung eine unabhängige Instruction Set Architecture (ISA) aufweisen (d. h. UPI ist in der Lage, in einer Vielzahl von verschiedenen Vorrichtungen ausgeführt zu werden). In einem anderen Szenario kann UPI auch eingesetzt werden, um Hochleistungs-E/A-Vorrichtungen und nicht nur Prozessoren oder Beschleuniger zu verbinden. Zum Beispiel kann eine Hochleistungs-PCIe-Vorrichtung durch eine geeignete Translation Bridge (d. h. UPI zu PCIe) an UPI gekoppelt werden. Darüber hinaus können die UPI-Verbindungen durch viele UPI-basierte Vorrichtungen, wie beispielsweise Prozessoren, auf verschiedene Arten (z. B. Sterne, Ringe, Maschen usw.) genutzt werden. 5 veranschaulicht beispielhafte Ausführungen einer Vielzahl von potentiellen Mehr-Socket-Ausgestaltungen. Eine Ausgestaltung 505 mit zwei Sockets kann, wie bildlich dargestellt, zwei UPI-Verbindungen aufweisen; in anderen Ausführungen kann indes eine UPI-Verbindung eingesetzt werden. Für größere Topologien kann eine beliebige Ausgestaltung eingesetzt werden, solange unter anderen zusätzlichen oder Ersatzmerkmalen eine Kennung (ID) zugewiesen werden kann und irgendeine Form von virtuellem Weg vorhanden ist. Wie gezeigt, weist die Ausgestaltung 510 mit vier Sockets in einem Beispiel eine UPI-Verbindung von jedem Prozessor zum anderen auf. Aber in der Ausführung mit acht Sockets, die in der Ausgestaltung 515 gezeigt ist, ist nicht jeder Socket direkt durch eine UPI-Verbindung mit jedem anderen verbunden. Wenn indes ein virtueller Weg oder Kanal zwischen den Prozessoren vorhanden ist, wird die Ausgestaltung unterstützt. Ein Bereich von unterstützten Prozessoren weist in einer nativen Domäne 2 bis 32 auf. Höhere Anzahlen von Prozessoren können unter anderen Beispielen durch die Verwendung einer Vielzahl von Domänen oder anderer Interconnects zwischen Knoten-Controllern erreicht werden.
  • Die UPI-Architektur weist eine Definition einer geschichteten Protokollarchitektur auf, die in einigen Beispielen Protokollschichten (kohärente, nicht kohärente und wahlweise andere speicherbasierte Protokolle), eine Routing Layer, eine Link Layer und eine Physical Layer, aufweisen. Ferner kann UPI Verbesserungen aufweisen, die unter anderen Beispielen Leistungsverwaltungseinrichtungen (wie beispielsweise Leistungssteuereinheiten (Power Control Units - PCUs)), Design for Test and Debug (DFT), Fehlerbehandlung, Register, Sicherheit aufweisen können. 5 veranschaulicht eine Ausführungsform eines beispielhaften geschichteten UPI-Protokollstapels. In einigen Ausführungen können zumindest einige von den Schichten, die in 5 veranschaulicht sind, wahlfrei sein. Jede Schicht behandelt ihr eigenes Niveau an Granularität oder Umfang von Informationen (die Protocol Layer 620a,b mit Paketen 630, Link Layer 610a,b mit Flits 635 und Physical Layer 605a,b mit Phits 640). Es sei erwähnt, dass ein Paket in einigen Ausführungsformen basierend auf der Ausführung Teil-Flits, ein einzelnes Flit oder mehrere Flits aufweisen kann.
  • Als ein erstes Beispiel weist eine Breite eines Phit 640 ein 1-zu-1-Mapping der Verbindungsbreite auf Bits auf (z. B. weist eine 20-Bit-Verbindungsbreite ein Phit von 20 Bits auf usw.). Flits können eine größere Größe, wie beispielsweise 184, 192 oder 200 Bits, aufweisen. Es sei erwähnt, dass, wenn das Phit 640 20 Bits breit ist und die Größe des Flits 635 184 Bits beträgt, dann eine Bruchzahl von Phits 640 erforderlich ist, um ein Flit 635 zu übertragen (z. B. unter anderen Beispielen 9,2 Phits bei 20 Bits zum Übertragen eines 184-Bit-Flits 635 oder 9,6 bei 20 Bits zum Übertragen eines 192-Bit-Flits). Es sei erwähnt, dass die Breiten der Grundverbindung an der Physical Layer variieren können. Zum Beispiel kann die Anzahl von Spuren pro Richtung 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. aufweisen. In einer Ausführungsform ist die Link Layer 610a,b in der Lage, mehrere Stücke von unterschiedlichen Transaktionen in ein einzelnes Flit einzubetten, und ein oder mehrere Köpfe (z. B. 1, 2, 3, 4) können innerhalb des Flits eingebettet werden. In einem Beispiel teilt die UPI die Köpfe in entsprechende Schlitze, um mehrere Nachrichten in dem Flit zu ermöglichen, die für verschiedene Knoten bestimmt sind.
  • In einer Ausführungsform kann die Physical Layer 605a,b für den schnellen Transfer von Informationen auf dem physikalischen (elektrischen oder optischen usw.) Medium verantwortlich sein. Die physikalische Verbindung kann Punkt-zu-Punkt zwischen zwei Link-Layer-Entitäten, wie beispielsweise die Schicht 605a und 605b, sein. Die Link Layer 610a,b kann die Physical Layer 605a,b von den oberen Schichten abstrahieren und stellt die Fähigkeit bereit, um Daten (sowie Anforderungen) auf zuverlässige Weise zu transferieren und die Flusssteuerung zwischen zwei direkt verbundenen Entitäten zu verwalten. Die Link Layer kann auch für die Virtualisierung des physikalischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen verantwortlich sein. Die Protocol Layer 620a,b stützt sich auf die Link Layer 610a,b, um Protokollnachrichten in die geeigneten Nachrichtenklassen und virtuellen Kanäle abzubilden, bevor sie sie an die Physical Layer 605a,b zum Transfer über die physikalischen Verbindungen übergibt. Die Link Layer 610a,b kann mehrere Nachrichten, wie beispielsweise unter anderen Beispielen Anforderung, Snoop, Antwort, Rückschreiben, nicht kohärente Daten, unterstützen.
  • Die Physical Layer 605a,b (oder PHY) der UPI kann über der elektrischen Schicht (d. h. elektrischen Leitern, die zwei Komponenten verbinden) und unter der Link Layer 610a,b ausgeführt werden, wie in 6 veranschaulicht. Die Physical Layer und entsprechende Logik kann sich auf jedem Agenten befinden und verbindet die Link Layers auf zwei Agenten (A und B), die voneinander getrennt sind (z. B. auf Vorrichtungen auf jeder Seite einer Verbindung). Die lokale und die entfernte elektrische Schicht sind durch physikalische Medien (z. B. Drähte, Leiter, optisch usw.) verbunden. Die Physical Layer 605a,b weist in einer Ausführungsform zwei Hauptphasen, Initialisierung und Betrieb, auf. Während der Initialisierung ist die Verbindung gegenüber der Link Layer undurchsichtig und die Signalisierung kann eine Kombination von zeitgesteuerten Zuständen und Handshake-Ereignissen beinhalten. Während des Betriebs ist die Verbindung der Link Layer gegenüber transparent und die Signalisierung erfolgt bei einer Geschwindigkeit, wobei alle Spuren zusammen als eine einzige Verbindung betrieben werden. Während der Betriebsphase transportiert die Physical Layer Flits vom Agent A zum Agent B und vom Agent B zum Agent A. Die Verbindung wird auch als eine Verbindung bezeichnet und abstrahiert einige physikalische Gesichtspunkte, die Medien, Breite und Geschwindigkeit von den Link Layers beim Austausch von Flits und Steuerung/Zustand der gegenwärtigen Ausgestaltung (z. B. Breite) mit der Link Layer aufweisen. Die Initialisierungsphase weist kleinere Phasen, z. B. Polling, Configuration, auf. Die Betriebsphase weist auch kleine Phasen auf (z. B. Verbindungsleistungsverwaltungszustände).
  • In einer Ausführungsform kann die Link Layer 610a,b derart ausgeführt werden, dass zuverlässiger Datentransfer zwischen zwei Protokoll- oder Routing-Entitäten bereitgestellt werden. Die Link Layer kann die Physical Layer 605a,b von der Protocol Layer 620a,b abstrahieren und kann für die Flusssteuerung zwischen zwei Protokollagenten (A, B) verantwortlich sein und der Protocol Layer (Message Classes) und Routing Layer (Virtual Networks) virtuelle Kanaldienste bereitstellen. Die Schnittstelle zwischen der Protocol Layer 620a,b und der Link Layer 610a,b kann sich typischerweise auf der Paketebene befinden. In einer Ausführungsform wird die kleinste Transfereinheit an der Link Layer als ein Flit mit einer angegebenen Anzahl von Bits, wie beispielsweise 192 Bits, oder irgendeiner anderen Stückelung bezeichnet. Die Link Layer 610a,b stützt sich auf die Physical Layer 605a,b, um die Transfereinheit der Physical Layer 605a,b (Phit) in die Transfereinheit der Link Layer 610a,b (Flit) einzurahmen. Darüber hinaus kann die Link Layer 610a,b logisch in zwei Teile, einen Sender und einen Empfänger, getrennt werden. Ein Sender/Empfängerpaar auf einer Entität kann mit einem Empfänger/Senderpaar auf einer anderen Entität verbunden werden. Flusssteuerung wird häufig sowohl auf einer Flit- als auch einer Paketbasis durchgeführt. Fehlerfeststellung und -korrektur werden auch potenziell auf Basis einer Flit-Ebene durchgeführt.
  • In einer Ausführungsform kann die Routing Layer 615a,b ein flexibles und verteiltes Verfahren zum Weiterleiten von UPI-Transaktionen von einer Quelle zu einem Ziel bereitstellen. Das Schema ist flexibel, da Weiterleitungsalgorithmen für mehrere Topologien durch programmierbare Weiterleitungstabellen an jedem Router angegeben werden können (die Programmierung wird in einer Ausführungsform durch Firmware, Software oder eine Kombination davon durchgeführt). Die Weiterleitungsfunktionalität kann verteilt sein; die Weiterleitung kann durch eine Reihe von Weiterleitungsschritten vorgenommen werden, wobei jeder Weiterleitungsschritt durch ein Nachschlagen einer Tabelle an entweder dem Quell-, Zwischen- oder Ziel-Router definiert wird. Das Nachschlagen an einer Quelle kann verwendet werden, um ein UPI-Paket in die UPI-Fabric einzuspeisen. Das Nachschlagen an einem Zwischen-Router kann verwendet werden, um ein UPI-Paket von einem Eingangsport zu einem Ausgangsport weiterzuleiten. Das Nachschlagen an einem Ziel-Port kann verwendet werden, um auf den Ziel-UPI-Protokollagenten abzuzielen. Es sei erwähnt, dass die Routing Layer in einigen Ausführungen dünn sein kann, da die Weiterleitungstabellen und somit die Weiterleitungsalgorithmen nicht spezifisch durch Spezifikation definiert sind. Dies ermöglicht Flexibilität und das Definieren einer Vielzahl von Verwendungsmodellen, die flexible Plattformarchitekturtopologien aufweisen, durch die Systemausführung. Die Routing Layer 615a,b stützt sich auf die Link Layer 610a,b zum Bereitstellen der Verwendung von bis zu drei (oder mehr) virtuellen Netzwerken (VNs) - in einem Beispiel zwei deadlock-freie VNs, VN0 und VN1 mit verschiedenen Nachrichtenklassen, die in jedem virtuellen Netzwerk definiert sind. Ein gemeinsam genutztes adaptives virtuelles Netzwerk (VNA) kann in der Link Layer definiert sein, aber dieses adaptive Netzwerk kann nicht direkt in Weiterleitungskonzepten dargelegt sein, da jede Nachrichtenklasse und jedes virtuelle Netzwerk unter anderen Merkmalen und Beispielen dedizierte Ressourcen und garantierten Fortschritt nach vorne aufweisen kann.
  • In einigen Ausführungen kann UPI einen eingebetteten Takt nutzen. Ein Taktsignal kann in Daten eingebettet werden, die unter Verwendung des Interconnects übertragen werden. Mit dem in die Daten eingebetteten Taktsignal können getrennte und dedizierte Taktspuren weggelassen werden. Dies kann zum Beispiel nützlich sein, da dadurch ermöglicht wird, dass mehr Pins einer Vorrichtung für den Datentransfer bestimmt sind, insbesondere in Systemen, in denen Raum für Pins stark begrenzt ist.
  • In einigen Ausführungen kann eine Verbindung, wie beispielsweise eine Verbindung, die PCIe, USB, UPI oder ein anderes Interconnect-Protokoll erfüllt, einen oder mehrere Retimer oder andere Erweiterungsvorrichtungen, wie beispielsweise einen Repeater, aufweisen. Eine Retimer-Vorrichtung (oder einfach „Retimer“) kann aktive elektronische Vorrichtungen aufweisen, die digitale E/A-Signale empfangen und erneut senden („Retiming“). Retimer können verwendet werden, um die Länge eines Kanals zu erweitern, der mit einem digitalen E/A-Bus verwendet werden kann.
  • 7A bis 7C sind vereinfachte Blockdiagramme 700a-c, die beispielhafte Ausführungen einer Verbindung veranschaulichen, die zwei Systemkomponenten oder Vorrichtungen, wie beispielsweise eine vorgeschaltete Komponente 705 und eine nachgeschaltete Komponente 710, zusammenschalten. Eine vorgeschaltete Komponente 705 und eine nachgeschaltete Komponente 710 können in einigen Fällen direkt verbunden werden, ohne dass Retimer, Redriver oder Repeater auf der Verbindung zwischen den zwei Komponenten 705, 710 angeordnet sind, wie in dem Beispiel von 7A gezeigt. In anderen Fällen kann ein Retimer (z. B. 715) bereitgestellt werden, um die Verbindung zu erweitern, die die vorgeschaltete Komponente 705 und die nachgeschaltete Komponente 710 verbindet, wie in 7B veranschaulicht. In noch anderen Ausführungsformen können zwei oder mehr Retimer (z. B. 715, 720) in Reihe bereitgestellt werden, um eine Verbindung, die die vorgeschaltete Komponente 705 und die nachgeschaltete Komponente 710 verbindet, weiter zu erweitern. Zum Beispiel kann ein/e bestimmte/s Interconnect-Technologie oder Protokoll eine maximale Kanallänge spezifizieren und ein oder mehrere Retimer (z. B. 715, 720) können bereitgestellt werden, um die physikalische Länge des Kanals, der die zwei Vorrichtungen 705, 710 verbindet, zu erweitern. Zum Beispiel kann unter anderen beispielhaften Ausführungen das Bereitstellen von Retimern 715, 720 zwischen der vorgeschalteten Komponente 705 und der nachgeschalteten Komponente 710 eine Verbindung ermöglichen, die drei Mal die für eine Verbindung ohne diese Retimer, z. B. 715, 720, spezifizierte Höchstlänge aufweist.
  • Eine Verbindung, die einen oder mehrere Retimer aufnimmt, kann zwei oder mehr separate elektrische Unterverbindungen bei Datenraten bilden, die mit Datenraten vergleichbar sind, die durch Verbindungen ausgeführt werden, die ähnliche Protokolle aber ohne Retimer einsetzen. Zum Beispiel kann eine Verbindung, die einen einzigen Retimer aufweist, eine Verbindung mit zwei separaten Unterverbindungen bilden, die jeweils bei 8,0 GT/s oder höher arbeiten. 8A und 8B veranschaulichen vereinfachte Blockdiagramme 800a-b von beispielhaften Verbindungen, die einen oder mehr Retimer aufweisen. Zum Beispiel kann in 8A eine Verbindung, die eine erste Komponente 805 (z. B. eine vorgeschaltete Komponente) mit einer zweiten Komponente 810 (z. B. einer nachgeschalteten Komponente) verbindet, einen einzigen Retimer 815a aufweisen. Eine erste Unterverbindung 820a kann die erste Komponente 805 mit dem Retimer 815a verbinden und eine zweite Unterverbindung 820b kann den Retimer 815a mit der zweiten Komponente verbinden. Wie in 8B gezeigt, können mehrere Retimer 815a, 815b verwendet werden, um eine Verbindung zu erweitern. Drei Unterverbindungen 820a-c können durch die zwei Retimer 815a, 815b definiert werden, wobei eine erste Unterverbindung 815a die erste Komponente mit dem ersten Retimer 815a verbindet, eine zweite Unterverbindung den ersten Retimer 815a mit dem zweiten Retimer 815b verbindet und die dritte Unterverbindung 815c den zweiten Retimer 815b mit der zweiten Komponente verbindet.
  • Wie in den Beispielen von 8A und 8B gezeigt, kann ein Retimer in einigen Ausführungen zwei Pseudo-Ports aufweisen und die Pseudo-Ports können ihre entsprechende vorgeschaltete/nachgeschaltete Ausrichtung dynamisch bestimmen. Jeder Retimer 815a, 815b kann einen vorgeschalteten Weg und einen nachgeschalteten Weg aufweisen. Ferner können die Retimer 815a, 815b Betriebsmodi unterstützen, die einen Weiterleitungsmodus und einen Ausführungsmodus aufweisen. Ein Retimer 815a, 815b kann in einigen Fällen Daten decodieren, die auf der Unterverbindung empfangen werden, und die Daten erneut kodieren, die auf seiner anderen Unterverbindung in die nachgeschaltete Richtung weiterzuleiten sind. In einigen Fällen kann der Retimer einige Werte in den Daten, die er empfängt, abwandeln, wie beispielsweise beim Verarbeiten und Weiterleiten von geordneten Mengendaten. Darüber hinaus kann ein Retimer potenziell jede Breitenoption als seine Höchstbreite unterstützen, wie beispielsweise eine Menge von Breitenoptionen, die durch eine Spezifikation, wie beispielsweise PCIe, definiert sind.
  • Bei zunehmenden Datenraten von seriellen Interconnects (z. B. PCIe, UPI USB usw.) werden Retimer in zunehmendem Maße verwendet, um die Kanalreichweite zu erweitern. Retimer können den empfangenen Bitstrom vor dem Regenerieren und erneuten Senden des Bitstroms erfassen. In einigen Fällen können Retimer sich des Protokolls bewusst sein und eine vollständige Physical Layer oder sogar einen Protokollstapel besitzen, um es dem Retimer zu ermöglichen, an der Link Negotiation (LTSSM) teilzunehmen, was Sender/Empfängerentzerrung und andere Verbindungstrainings-Tätigkeiten aufweist. In Hochgeschwindigkeitsverbindungen, die einen Retimer mit einem vollständigen Protokollstapel oder kompletter Physical oder Link Layer Logik usw. ausführen, können indes eine unannehmbare Latenzzeit für Verbindungen hinzufügen, die zwei oder mehr Vorrichtungen über einen oder mehrere Retimer verbinden. Tatsächlich besteht eine wachsende Anzahl von Anwendungen, die wahrscheinlich Retimer oder andere Kanalerweiterungsvorrichtungen nutzen, da die Betriebsfrequenzen von externen Schnittstellen weiterhin steigen, während die Kanalverbesserung sich in einem bescheideneren Tempo weiter verbessert. Ferner erfordern viele Anwendungen längere Kanallängen, wie beispielsweise Rechenzentrum- und Server-Anwendungen, in denen Interconnect-Kanäle sich über mehrere Zoll erstrecken können, wodurch die maximalen Kanallängen, die nativ durch neu entstehende Hochgeschwindigkeit-Interconnects unterstützt werden, in die Länge gezogen oder überschritten werden. Zum Beispiel kann PCI Express Gen 4, das für den Betrieb bei einer Frequenz von 16,0 GT/s gestaltet ist, für eine bestimmte begrenzte Kanalhöchstlänge, (z. B. 14" oder weniger) sorgen. Für Server-Anwendungen, wo die Kanallängen typischerweise 20 Zoll überschreiten können, kann ein Retimer, Redriver oder anderes Repeater-Element erwünscht sein, um den Kanal zu erweitern. Auf ähnliche Weise können unter anderen Beispielen für eine cache-kohärente Ultra Path Interconnect (UPI) Schnittstelle, ebenso Erweiterungsvorrichtungen genutzt werden, um Plattformen mit längerer Länge bei 10,4 GT/s zu unterstützen.
  • Die Entwicklung und Ausführung von Retimern für Hochgeschwindigkeitsschnittstellen können einer Vielzahl von Problemen gegenüberstehen. Zum Beispiel kann in Hochgeschwindigkeits-Cache-Kohärenz-Protokollen, wie beispielsweise UPI, ein Kanal extrem empfindlich gegenüber der Latenzzeit sein, derart dass das Hinzufügen von zusätzlicher Latenzzeit von 30 nsec pro Retimer-Sprung aufgrund des durch den/die Retimer eingeführten Leistungsverlustes unhaltbar wird. Die Latenzzeit kann auch in Beispielen, wie beispielsweise PCIe, ein Problem sein, wie beispielsweise in Speicheranwendungen (z. B. Memory Drive und Memory Services Processor), und es wird erwartet, dass sich solche Herausforderungen weiter verschlimmern werden, da die nichtflüchtigen Speichertechnologien (NVM) der nächsten Generation eine höhere Bandbreite und eine kürzere Latenzzeit bereitstellen, wobei die Lücke mit Double Data Rate (DDR) Speicher (z. B. DDR Synchronous Dynamic Random-Access Memory (SDRAM)) geschlossen wird. Während analoge Redriver als eine Möglichkeit bei Anwendungen denkbar sind, die hinsichtlich der Latenzzeit empfindlich sind (da analoge Redriver nicht dazu neigen, solche Latenzzeitprobleme einzuführen), sind einfache Erweiterungsvorrichtungen nicht in der Lage, die Verbindungsinitialisierungs- und Verbindungsentzerrungs/Anpassungsfunktionalität zu erleichtern, die für bestimmte Interconnect-Protokolle bereitgestellt sind. Solche Verbindungsinitialisierung- und Entzerrungsphasen können für die Erleichterung von zuverlässigen Hochgeschwindigkeitsverbindungen kritisch sein. Zum Beispiel nimmt ein analoger Redriver nicht an der Verbindungsinitialisierung und -entzerrung teil, da er (unter anderen beispielhaften Mängeln) den Sendeentzerrungsraum nicht neu erzeugen kann und somit als eine Erweiterungslösung, insbesondere in Systemen, die offene Schlitze und Verbinder unterstützen, eine begrenzte Nützlichkeit aufweist.
  • Ein weiteres beispielhaftes Problem bei der Entwicklung von wirtschaftlich praktikablen Retimer-Vorrichtungen besteht darin, dass verschiedene Protokolle unterschiedliche Physical Layers (PHYs) nutzen und die Entwicklung von mehreren protokollspezifischen Versionen eines Retimers teuer und nicht ideal sein kann. Obgleich ein Retimer mit einem physikalischen MUX zum Trennen zwischen verschiedenen unterschiedlichen PHYs eine mögliche Lösung sein kann, kann eine solche Lösung das Erweitern des Profils der Vorrichtung (zum Unterbringen der mehreren protokollspezifischen Logiken) beinhalten, was nicht nur teuer sondern auch unerwünscht sein kann, da eine solche Vorrichtung wertvollen Platz auf der Leiterplatte sowie Leistung in Anspruch nehmen kann. Da es indes sein kann, dass Plattformen eine Kombination von verschiedenen Interconnects und entsprechenden Protokollen nutzen, kann es in einigen Systemen sein, dass es erforderlich ist, viele verschiedene Retimer zu unterstützen, was Herausforderungen hinsichtlich der Validierung und der Interoperabilität mit sich bringt.
  • In einigen beispielhaften Ausführungen können eines oder mehrere von den hier erörterten beispielhaften Problemen durch das Bereitstellen eines Retimers mit Multiprotokoll-Fähigkeit mit kurzer Latenzzeit angegangen werden, der einen Umweg mit kurzer Latenzzeit für normalen Verkehr aufweist, wenn er in einem gemeinsamen Taktmodus betrieben wird. Solche Multiprotokoll-Retimer mit kurzer Latenzzeit können in der Lage sein, Protokolle, wie beispielsweise PCI Express und Ultra Path Interconnect (UPI) zu unterstützen, um die Reichweite zwischen einer Zentraleinheit und einer nachgeschalteten Vorrichtung oder zwischen zwei Prozessorknoten (und z. B. ihren entsprechenden UPI-Controllern oder Agenten) zu erweitern. In einigen Ausführungen kann ein Retimer verbessert werden, um Empfängerdetektionslogik (z. B. zum Unterstützen von Empfängerdetektionsereignissen und -zuständen einer entsprechenden Verbindung) und Überwachungslogik zum Decodieren von In-Band-Nachrichten aufzuweisen, die durch den Retimer neu zu erzeugen und an ihr Ziel am anderen Ende der Verbindung weiterzuleiten sind, und Informationen zu extrahieren, die Attribute, Zustände und Übergänge auf der Verbindung betreffen, die unter anderen potentiellen Beispielen Geschwindigkeitsänderungen, Senderentzerrung (oder Anpassung) und elektrischen LeerlaufEintritt aufweisen. Der Retimer (und entsprechende Zentraleinheiten oder Agentenlogik) kann ferner verbessert werden, um einen Seitenbandkanal zu unterstützen, um den Retimer mit einer oder mehreren Zentraleinheiten zu verbinden, die an die Verbindung gekoppelt sind und es der Zentraleinheit erlauben, Gesichtspunkte von Senderentzerrung über die Seitenbandschnittstelle zum Retimer zu koordinieren und zu leiten. Ferner können Retimer und Zentraleinheiten (oder Zentraleinheit-Agentlogik) zusätzlich verbessert werden, um protokollspezifische In-Band-Handshake-Nachrichten im Auftrag des Retimers zu erzeugen (z. B. ein Handshake in Verbindung mit Senderentzerrung). Der verbesserte Retimer kann die Unterstützung von Verbindungstraining und Entzerrung ausführen, wobei die Latenzzeit, die durch herkömmliche Retimer-Lösungen eingeführt wird, vermieden wird. Zum Beispiel fällt bei herkömmlichen PCIe-Retimern die Latenzzeit zum Ausführen einer voll funktionellen PCIe-PCS und logischen PHY oder einer Äquivalenz an. In einigen Ausführungen kann ein verbesserter Retimer Leistung mit kurzer Latenzzeit erreichen, die mit protokollunabhängigen Retimern vergleichbar ist, da die zusätzliche Logik zum Decodieren protokollspezifischer Entzerrungs- und Geschwindigkeitsänderungsanforderungen bereitgestellt ist, um von dem Hauptdatenweg getrennt zu sein (und parallel damit betrieben zu werden). Zum Beispiel kann der Retimer nur eine Mindestmenge an protokollspezifischer Logik ausführen, wobei die restliche unterstützende Logik in der Zentraleinheit ausgeführt ist, an die der Retimer (z. B. über einen Seitenbandkanal) gekoppelt ist.
  • Nun unter Bezugnahme auf 9A und 9B sind vereinfachte Blockdiagramme 900a-b gezeigt, die beispielhafte Ausführungen der verbesserten Retimer veranschaulichen, die mit Auswahllogik zum Ermöglichen der Teilnahme der Retimer an spezifischen Verbindungstrainings-, Entzerrungs- und Verbindungszustandsübergangstätigkeiten zu ermöglichen. Wie in 9A gezeigt, kann in einigen Ausführungen eine Prozessorvorrichtung, wie beispielsweise die Zentraleinheit 905, mit einer Endpunktvorrichtung 915, wie beispielsweise einer Add-in-Karte, über eine Verbindung verbunden sein, die einen Retimer 910a aufweist. Darüber hinaus kann der Retimer 910a über eine separate Seitenbandverbindung 920a mit niedrigerer Frequenz an die Zentraleinheit 905 gekoppelt sein. Ein In-Band-Kanal kann zwischen der Zentraleinheit 905 und der Vorrichtung 915 hergestellt werden, um die Hauptprotokoll-Schnittstelle für die Verbindung zu definieren. Der Seitenbandkanal 920a kann verwendet werden, um eine Niederfrequenz-Seitenband-Schnittstelle zu erleichtern, die Kommunikationen zwischen der Zentraleinheit 905 und dem Retimer 910a ermöglicht. In einigen Ausführungen kann die Seitenband-Schnittstelle gemäß einem Protokoll, wie beispielsweise MDIO oder I2C, sein. Die Seitenband-Schnittstelle 920a kann zur Nachrichtenübermittlung genutzt werden, um es der Zentraleinheit zu ermöglichen, die minimierte Protokolllogik eines beispielhaften verbesserten Retimers (z. B. 910a) zu ergänzen, um zu ermöglichen, dass protokolldefinierte Merkmale (z. B. Handshakes, Geschwindigkeitsänderungen, Entzerrung, Verbindungstraining usw.) nicht durch das Vorhandensein des Retimers unterbrochen werden. Ferner kann, während es möglich ist, dass Retimer einen vollständigen Protokollstapel, PHY usw. aufweisen, eine solche Verarbeitung an dem Retimer unannehmbare zusätzliche Latenzzeit einführen, was durch Bereitstellen von minimaler Protokolllogik auf dem verbesserten Retimer und Auslagern von übriger Protokolllogik auf die Zentraleinheit (oder sogar mehrere Zentraleinheiten, wie in 9B gezeigt) minimiert werden kann.
  • In 9B kann eine Verbindung zwei Verarbeitungsvorrichtungen koppeln, wobei die Verbindung eine oder mehrere Retimer-Vorrichtungen (z. B. 910b) aufweist, um die physikalische Reichweite der Verbindung auszuweiten. In diesem Beispiel können Seitenband-Schnittstellen 920b, 930 bereitgestellt werden, um es dem/den Retimer/n 910b zu erlauben, mit jeder von den verbundenen Zentraleinheiten 905, 925 eine Schnittstelle zu bilden. Dementsprechend kann auf die Ressourcen von jeder von den verbundenen Zentraleinheiten 905, 925 zugegriffen werden, um den/die Retimer (z. B. 910b) zu unterstützen, um an Protokollereignissen und Tätigkeiten, wie beispielsweise Verbindungstraining, Entzerrung, Geschwindigkeitsänderungen usw., teilzunehmen. Ferner versteht sich, dass, obwohl die Beispiele von 9A und 9B die Verwendung eines einzigen Retimers zum Erweitern einer Verbindung zeigen, mehr als ein Retimer verwendet werden können. In solchen Fällen kann jeder von den mehreren Retimern in einer Verbindung über einen entsprechenden Seitenbandkanal an mindestens eine Zentraleinheit gekoppelt sein, die durch die Verbindung verbunden ist. Als ein Beispiel kann in einer Verbindung, die eine Zentraleinheit und eine Vorrichtung koppelt (wie beispielsweise in 9A), jeder von mehreren Retimern, die in der Verbindung enthalten sind, unter Verwendung entsprechender Seitenbandkanäle an dieselbe Zentraleinheit gekoppelt sein. In Beispielen, wo eine Verbindung zwei Zentraleinheiten koppelt (wie beispielsweise in 9B), können einige von den Retimern sich an eine von den Zentraleinheiten koppeln, während andere Retimer, die in der Verbindung verwendet werden, sich unter Verwendung einer Seitenband-Schnittstelle an die andere Zentraleinheit koppeln. In anderen Beispielen können unter anderen Beispielen einer oder mehrere von den Retimern, die in der Verbindung verwendet werden, sich durch Seitenbandkanäle an beide Zentraleinheiten koppeln, die unter Verwendung der Verbindung verbunden sind. Ferner können unter anderen Beispielen einige Verbindungen mit mehreren Retimern derart ausgestaltet werden, dass die Retimer parallel eingefügt werden, während in anderen Fällen die mehreren Retimer parallel eingefügt werden können, während jeder Retimer eine Teilmenge der Spuren einer mehrspurigen Verbindung handhabt.
  • Unter Bezugnahme auf 10 ist ein vereinfachtes Blockdiagramm 1000 von Komponenten in einem beispielhaften verbesserten Retimer gezeigt. In diesem Beispiel ist Retimer-Logik gezeigt, die einer einzigen Spur von einer mehrspurigen Verbindung entspricht. Dementsprechend können die in 10 (und anderen Beispielen hier) veranschaulichten Komponenten für jede von den mehreren Spuren repliziert werden, die durch einen Retimer unterstützt werden. Ferner ist in diesem bestimmten Beispiel die Basis-Retimer-Logik verbessert, um Tätigkeiten einer PCIe-kompatiblen Verbindung zu unterstützen. Zum Beispiel kann ein Retimer Logik zum Unterstützen solcher Tätigkeiten, wie beispielsweise elektrischer Leerlaufaustritt/Eintritt, Geschwindigkeitsänderungen und Entzerrung aufweisen, wie in der PCIe-Spezifikation definiert.
  • Zum Beispiel können in PCIe Änderungen der Datenrate (oder „Geschwindigkeit“) durch eine von den Vorrichtungen angefordert werden, die an der PCIe-Verbindung verbunden sind. Zum Beispiel kann ein einer Vorrichtung nachgeschalteter Port eine Geschwindigkeitsänderung durch Equalization (EQ) Training Sequence 1 (TS1) Ordered Sets (OSes) anfordern, um den vorgeschalteten Port der anderen Vorrichtung zu informieren. Zum Beispiel kann eine definierte Folge von geordneten Mengen jeweils mit einem oder mehreren Bits (z. B. einem Geschwindigkeitsänderungsbit in einer geordneten TS1- oder TS2-PCIe-Menge) gesendet werden, die eingestellt werden, um eine Geschwindigkeitsänderung anzugeben. Die empfangende Vorrichtung kann durch Senden einer entsprechenden Folge von geordneten Mengen an die anfordernde Vorrichtung antworten, um die Anforderung zur Änderung der Geschwindigkeit zu bestätigen oder abzulehnen. Wenn die Anforderung bestätigt wird, kann die Verbindung (unter Verwendung weiterer Folgen von geordneten Folgen) erneut trainiert werden, um bei der neuen Geschwindigkeit betrieben zu werden. In einem anderen Beispiel kann PCIe für einen elektrischen Leerlaufzustand sorgen und ein Protokoll zum Eintreten in und Austreten aus dem elektrischen Leerlauf darstellen. Zum Beispiel kann eine bestimmte Datenfolge definiert sein, um einen Austritt aus einem elektrischen Leerlauf anzugeben, wie beispielsweise ein Electrical Idle Exit Ordered Set (EIEOS). Eine sendende Vorrichtung kann ein eindeutiges EIEOS-Muster senden (das z. B. in der PCIe-Spezifikation definiert ist), um die Empfängervorrichtung zu informieren, dass der Sender einen elektrischen Leerlaufaustritt signalisiert. Das EIEOS-Muster kann gewährleisten, dass der Empfänger den elektrischen Leerlaufaustrittszustand richtig feststellt. Ebenso kann eine EIEOS definiert werden, um einen elektrischen Leerlaufeintritt anzugeben. In einem Beispiel kann eine PCIe EIEOS ein sich wiederholendes Muster von acht „1“, gefolgt von acht „0“ sein, das während insgesamt 128 Einheitsintervallen (Unit Intervals - UI) wiederholt wird.
  • Ein Retimer kann auch mit Logik versehen sein, um zumindest teilweise an der Entzerrung oder Anpassung einer Verbindung teilzunehmen. Zum Beispiel ist in PCIe-Entzerrung eine Verbindungsentzerrungsprozedur definiert, um es Komponenten zu ermöglichen, die Sender- und Empfängereinrichtung von jeder Spur anzupassen, um die Signalqualität zu verbessern und Verbindungsanforderungen zu erfüllen, die zur Erfüllung des Interconnect-Protokolls angegeben sind (z. B. zum Erleichtern einer Verbindung, die bei einer Datenrate von 8,0 GT/s zuverlässig arbeitet). In einem Beispiel weist eine PCIe-Entzerrungsprozedur vier Phasen auf. Phaseninformationen und Entzerrungsinformationen können in Feldern innerhalb von geordneten Mengen (geordneten TS1-Mengen) gesendet werden, die während der Entzerrung gesendet werden. Zum Beispiel kommuniziert in Phase 0 der Entzerrung ein Downstream Port die Transmitter-Voreinstellungswerte und die Receiver-Voreinstellungshinweise für jede Spur einer Verbindung zum Upstream Port unter Verwendung von Entzerrung EQ TS2 OSes. Der Upstream Port kann dann TS1 OSes senden. In Phase 1 stellen beide Komponenten die Verbindung zum Austausch von TS1 OSes her, um verbleibende Phasen abzuschließen, um die verbleibenden Transmitter/Receiver-Paare feinabzustimmen. Zum Beispiel kann der Downstream Port in Phase 1 durch Senden von TS1 OSes an den Upstream Port unter Verwendung von voreingestellten Werten einleiten. Der Upstream Port empfängt diese TS1 Ordered Sets und geht zu Phase 1 über (wo er TS 1 OSes sendet). Der Downstream Port stellt sicher, dass er den Bitstrom von dem Upstream Port zuverlässig empfangen kann, um den Rest der Phasen fortzusetzen, wenn er TS1 OSes von dem Upstream Port empfängt, bevor er zu Phase 2 übergeht. Zum Beispiel können die Vorrichtungen Muster, die während der Entzerrung gesendet wurden, beurteilen, um eine auf jedem Paar ausgeführte Bitfehlerquote (Bit Error Ratio) zu bestimmen. Wenn die BER ausreichend niedrig ist (z. B. 10-4) kann die Vorrichtung bestimmen, dass sie bereit ist, um zur nächsten Phase überzugehen.
  • Unter Fortsetzung des vorherigen Beispiels passt in Phase 2 der Upstream Port die Transmitter-Einstellung des Downstream Port gemeinsam mit seiner eigenen Receiver-Einstellung unabhängig auf jeder Spur an, um sicherzustellen, dass er den Bitstrom konform mit Anforderungen empfängt, die für konforme Spuren definiert wurden (z. B. eine BER aufweisen, die kleiner als 10-12 ist). Der Downstream Port leitet die Fortsetzung mit Phase 2 durch Senden von TS1 OSes an den Upstream Port ein. Der Downstream Port kündigt die Transmitter-Koeffizienten und die Voreinstellung an, die er durch die folgenden Regeln in Phase 1 für Voreinstellung und in Phase 2 für Voreinstellung und Koeffizienten verwendet. Der Upstream Port empfängt diese OSes in Phase 2 und kann unterschiedliche Koeffizienten- oder Voreinstellungseinstellungen anfordern und das iterative Bewerten von jeder Einstellung fortsetzen, bis er an der besten Einstellung für den Betrieb der Downstream Lanes anlangt. Nachdem der Upstream Port diese Phase abgeschlossen hat, bewegt er den Link zu Phase 3 durch Senden von TS1 OSes, die codiert sind, um dem Downstream Port die nächste Entzerrungsphase anzugeben. In Phase 3 passt der Downstream Port die Transmitter-Einstellung des Upstream Port gemeinsam mit seiner eigenen Receiver-Einstellung unabhängig auf jeder Lane unter Verwendung eines Handshake- und Bewertungsprozesses ähnlich wie in Phase 2 an, wobei die OSes identifizieren, dass die Entzerrung Phase 3 ist. Der Downstream Port signalisiert dann das Ende von Phase 3 (und der Entzerrungsprozedur) durch Senden von TS1 Ordered Sets, die codiert sind, um das Ende der Entzerrung anzugeben. Eine Vielzahl von Techniken können durch eine Vorrichtung zum Anpassen des Senders von seinem Verbindungspartner und zur Bewertung dieser Sendereinrichtung mit seinem Empfänger verwendet werden. Zum Beispiel kann eine Komponente Änderungen an irgendeiner Anzahl von Spuren anfordern und kann verschiedene Einstellungen für jede Spur anfordern. Jede angeforderte Einstellung kann eine Voreinstellung oder eine Menge von Koeffizienten sein, wobei jede Vorrichtung verantwortlich ist, um sicherzustellen, dass am Ende der Feinabstimmung (z. B. Phase 2 für Upstream Ports und Phase 3 für Downstream Ports) ihr Verbindungspartner die geeigneten Sendereinstellungen in jeder Spur aufweist, um die durch das Protokoll definierten Verbindungsanforderungen zu erfüllen.
  • In einem anderen Beispiel können Agenten von UPI-Prozessoren zusammenarbeiten, um die Entzerrung oder Anpassung einer Verbindung durchzuführen. In einem Beispiel kann UPI für Senderanpassung während TX-Anpassung sorgen, indem die UPI-Agenten jeweils als Loopback-Master agieren, wobei jeder Sender ein Loopback-Muster sendet, wobei der entfernte Empfänger die empfangenen Muster auf Bitfehler überprüft. Der Empfänger kann entweder das Loopback des Musters mit Informationen durchführen, die codiert sind, um Feedback bereitzustellen, das die bestimmte Qualität der empfangenen Muster bestimmt, oder Fehlerergebnisse in ein Register codieren, auf das der Sender zugreifen kann, um Sendereinstellungen anzupassen. Die Sendereinstellungen können iterativ angepasst werden und die Muster können erneut gesendet werden, bis bestimmt wird, dass die Einstellungen von beiden Sendern eingestellt sind, um Zielleistungseigenschaften der Verbindung zu erreichen. In einem Beispiel kann ein UPI-Anpassungsmuster unter Verwendung von Mustergeneratoren auf Linear-Feedback Shift Register (LFSR)-Basis erzeugt werden. Zum Beispiel können zwei Musterpuffer mit jeweils 128 Bits und zwei 23-Bit LFSR-Seed-Puffer verwendet werden, um eine Folge zu erzeugen, die (z. B. unter Verwendung einer Pseudo Random Bit Sequence (PRBS), die durch ein Galois- oder Fibonacci-LFSR erzeugt wird) verwürfelt wird, um Pseudozufallsdatenfolgen auf jeder aktivierten Spur der Verbindung zu erzeugen.
  • Anstatt einen Retimer mit einem/einer vollständigen Protokollstapel oder Protokollschicht auszurüsten, können Ausführungen eines Retimers mit kurzer Latenzzeit mit Abschnitten von protokollspezifischer Logik ausgerüstet werden, die erforderlich ist, um bestimmte kritische Merkmale, wie beispielsweise dynamische Geschwindigkeitsänderung, Senderentzerrung, elektrischen Leerlaufeintritt für Leistungszustandsänderungen und Empfängerdetektion (z. B. für Hot-Plug) (am Retimer) zu handhaben. In einigen Fällen kann ein Retimer mit mehreren Modulen von protokollspezifischer Logik für mehrere verschiedene Protokolle versehen sein, um es dem Retimer zu erlauben, Mehrprotokollunterstützung bereitzustellen (und gleichzeitig nicht die Gestaltung mit mehreren alternativen Protokollstapel-Logikblöcken usw. zu belasten). Zusätzliche Logik kann auch in der Zentraleinheit bereitgestellt werden, um es zu ermöglichen, einige protokollspezifische Funktionalitäten von dem verbesserten Retimer auszulagern und stattdessen an der Zentraleinheit handzuhaben. Zum Beispiel kann solche zusätzliche Zentraleinheitslogik Logik zum Erzeugen von In-Band-Handshake-Antworten im Auftrag des Retimers für Entzerrungsanforderungen aufweisen und mit dem Retimer über die Seitenband-Schnittstelle kommunizieren, um einige Gesichtspunkte der Senderentzerrung zu erleichtern. In einigen Beispielen kann die Erzeugung der In-Band-Handshake-Antwort unter anderen Beispielen die Erzeugung einer geordneten TS 1-Menge im Auftrag des Retimers aufweisen, um anzugeben, ob die Koeffizientwerte, die durch die Vorrichtung angefordert werden, gültig sind.
  • Zum Beispiel kann, wie in dem Beispiel von 10 gezeigt, in einigen Ausführungen Decodierungslogik 1005a,b bereitgestellt werden, um es dem Retimer an jeder Spur zu ermöglichen, verschiedene protokollspezifische Muster und Signale zu detektieren, die verschiedenen Protokolltätigkeiten und Ereignissen entsprechen. Zum Beispiel kann der Retimer Kommunikation überwachen, die zwischen der Zentraleinheit und einer anderen Vorrichtung durch den Retimer fließt, um spezifische Ereignisse, wie beispielsweise den elektrischen Leerlaufeintritt/Austritt, Geschwindigkeitsänderung und Entzerrung, zu identifizieren, wie vorhergehend beschrieben. Ferner kann der Retimer mit zusätzlicher Logik (z. B. 1010a-b, 1015a-b) im Einklang mit anderen protokollkonformen Vorrichtungen versehen sein, wie beispielsweise Logik, die in der Physical Coding Sublayer (PCS) des Protokolls (z. B. PCIe) ausgeführt ist. Als ein Beispiel kann Protokolllogik (z. B. 1010a-b, 1015a-b) unter Logik zum Ausführen verschiedener anderer Funktionalitäten zur Verwendung in Decodierungs- und Verarbeitungsmustern, die am Retimer empfangen werden, Seriell-Parallel-Logik, Polaritätsumkehrungslogik, Symbol- und Blockausrichtungslogik, Decodierer- und Entwürflerlogik aufweisen. Die Decodierungslogik 1005a,b kann sorgfältig zugeschnitten sein, um minimale Logik zum Identifizieren bestimmter leistungskritischer Protokolltätigkeiten, Zustände und Ereignisse zu enthalten und um relevante Informationen für den Retimer zu extrahieren, um sich selbst auf geeignete Weise anzupassen, um richtige Ereignisverarbeitung zu unterstützen. Ferner kann für jede Spur Zustandsmaschinenlogik 1020a,b bereitgestellt werden, um Zustände zur Verwendung beim Decodieren von Kommunikationen zu bestimmen, die den Retimer durchqueren. Die Logik (z. B. 1005a-b, 1010a-b, 1015a-b, 1020a-b usw.) kann repliziert werden, um einen mehrspurigen Retimer zu unterstützen.
  • Wie im Beispiel von 10 veranschaulicht, kann ein verbesserter Retimer typische Retiming-Funktionalität behalten, die Empfängerschaltungen 1025a aufweisen, um eine Schnittstelle mit einer vorgeschalteten Vorrichtung (z. B. Zentraleinheit oder Endpunkt) zu bilden und Daten 1030a zu empfangen, deren Retiming durchzuführen ist und die auf vorgeschalteten Senderschaltungen 1035a an eine vorgeschaltete Vorrichtung (z. B. Zentraleinheit oder Endpunkt) zu senden sind. Ebenso kann der vorgeschaltete Weg Empfängerschaltungen 1025b aufweisen, um das Retiming von Daten 1030b durchzuführen und die Daten unter Verwendung von Senderschaltungen 1035b an eine vorgeschaltete Vorrichtung zu senden. Ferner kann eine Seitenband-Schnittstelle 1040 bereitgestellt werden, durch die der Retimer mit einer Zentraleinheit kommuniziert, zum Beispiel um Informationen zur Verwendung durch die Zentraleinheit beim Durchführen protokollspezifische Aufgaben beim Vorhandensein des Retimers weiterzuleiten.
  • Wie vorhergehend eingeführt, kann der Retimer eine einfache Zustandsmaschine (die sich z. B. von den Zustandsmaschinen der durch den Retimer unterstützten Protokolle unterscheidet) ausführen, um grundlegende Verbindungszustände zu verfolgen, in denen der Retimer an bestimmten protokollspezifischen Tätigkeiten teilnehmen soll. Zum Beispiel ist momentan unter Bezugnahme auf 11 ein Blockdiagramm 1100 gezeigt, das eine beispielhafte vereinfachte Zustandsmaschine eines beispielhaften verbesserten Retimers veranschaulicht. Der Retimer kann eine endliche Zustandsmaschine (Finite State Machine - FSM) für jede vorgeschaltete Spur und eine FSM für jede nachgeschaltete Spur (z. B. 1020a-b in dem Beispiel von 10) ausführen. In einem Beispiel kann die Zustandsmaschine einen zurückgesetzten Ausgangszustand 1105 aufweisen, aus dem nach einiger Zeit nach der Zurücksetzung in einen Empfängerdetektionszustand (Rx Detect) 1110 übergegangen werden kann. In dem Rx Detect Zustand 1110 kann der Retimer periodisch Empfängerdetektion auf seiner vorgeschalteten oder nachgeschalteten Verbindung durchführen. Wenn ein Empfänger auf einer entsprechenden Verbindung detektiert wird, kann die Zustandsmaschine von dem Rx Detect 1110 in einen „Symbol Lock/Polarity Detect“ Zustand 1115 übergehen, in dem Symbol-Lock auf Eingangsdaten durchgeführt wird und die Polarität für die Spur bestimmt wird. Wenn Symbol-Lock und/oder Blockausrichtung abgeschlossen und die Polarität bestimmt wurden, kann die Zustandsmaschine in einen „Monitor and React“ Zustand 1120 übergehen, in dem der Retimer (z. B. unter Verwendung von Decodierungslogik 1005a-b) Daten überwacht, die durch den Retimer für Ereignisse weitergeleitet werden, die für verschiedene protokollspezifische Tätigkeiten, wie beispielsweise Geschwindigkeitsänderung, elektrischer Leerlaufeintritt und Entzerrung, relevant sind. Es versteht sich, dass die Verbindungszustandsmaschine eines Protokolls sich im Wesentlichen von der Retimer-Zustandsmaschine unterscheiden kann, einige Retimer-Zustände können indes Verbindungszuständen entsprechen. Zum Beispiel kann ein „Monitor and React“ (Überwachen und Reagieren) Zustand 1120 Verbindungtrainingszuständen für eine Verbindung entsprechen, wobei im Anschluss an das Verbindungstraining in einen aktiven Verbindungszustand eingetreten wird. Zusätzliche Ereignisse können festgestellt werden und die Teilnahme durch den Retimer beinhalten, nachdem eine Verbindung in einen aktiven Verbindungszustand eingetreten ist. Zum Beispiel kann ein Eintritt in einen Verbindungszurücksetzungs- oder Zustand mit niedriger Leistung auftreten, den der Retimer bestätigend feststellen und auf den er reagieren soll. Zum Beispiel kann der Retimer eine definierte Anzahl von elektrischen Leerlauf-OSes (EIOSes) auf seiner vorgeschalteten Verbindung feststellen, wodurch bewirkt wird, dass die Retimer-Zustandsmaschine in einen „Electrical Idle“ Zustand 1125 eintritt, der dem Eintritt der Verbindung in einen Leerlaufverbindungszustand entsprechen kann. In dem Electrical Idle Zustand 1125 kann der Retimer mit Funktionalität für den schnellstmöglichen Übergang seiner nachgeschalteten Verbindung in einen gültigen Electrical Idle Zustand (z. B. innerhalb von 8 ns für PCIe) versehen sein, um eine gemeinsame Gleichstromspannungsanforderung als Reaktion auf das Feststellen eines Musters an dem Retimer zu erfüllen, das angibt, dass eine von den Vorrichtungen der Verbindung den Eintritt in einen elektrischen Leerlaufzustand anfordert. Ferner kann der Retimer auf ähnliche Weise ausgerüstet sein, um Muster (z. B. EIEOSs) zu identifizieren, die einen Austritt aus einem elektrischen Leerlaufzustand angeben, und die Retimer-Zustandsmaschine kann für einen Übergang von dem Electrical Idle Zustand 1125 in einen „Electrical Idle Exit“ Zustand 1130 sorgen. In diesem Retimer-Zustand 1130 kann der Retimer unter anderen beispielhaften Ausführungen seine Schaltungen in Verbindung mit dem Austritt aus einem Leerlaufzustand anschalten und dann zum erneuten Trainieren der neu geweckten Verbindung zurück in den Symbol Lock/Polarity Detect Zustand übergehen.
  • Wie in dem Beispiel von 11 erwähnt, kann ein Retimer mit zusätzlicher Logik zum Unterstützen von Empfänger- und/oder Sender-Detektionszuständen versehen sein, die in einem Protokoll definiert sind. Erneut unter Bezugnahme auf 10 kann in einem Beispiel eine Empfängerdetektion in einem oder mehreren Protokollen definiert sein, die durch die Retimer- und Empfängerdetektionslogik unterstützt werden (z. B. 1050a, 1050b). Die Empfängerdetektionslogik 1050a-b kann zeitweilig eine Schnittstelle auf das Vorhandensein von einer anderen Vorrichtung testen, die über die Verbindung mit dem Retimer verbunden ist. Wenn eine andere Vorrichtung vorhanden ist, kann eine Spannung oder Empfängerimpedanz an der Retimer-Schnittstelle gemessen werden. Angesichts des Vorhandenseins des Retimers wird der andere Endpunkt auf der Verbindung indes nicht in der Lage sein, diese Änderung festzustellen. Tatsächlich kann, wenn ein Retimer vorhanden ist, der andere Endpunkt den Retimer irrtümlicherweise als den anderen Endpunkt identifizieren. Dementsprechend kann die Empfängerdetektionslogik 1050a-b den Retimer, der bereits mit einer Verbindung verbunden ist, zusätzlich durch selektives Entfernen eines Abschlusses oder anderenfalls durch Maskieren einer durch das Verbinden des Retimers mit der ersten Vorrichtung eingeführten Impedanz vor einem ersten Endpunkt „verstecken“. Wenn indes die zweite Vorrichtung zu der Verbindung hinzugefügt wird, kann die Empfängerdetektionslogik unter anderen Beispielen ein/e Empfängerimpedanz-Steuersignal oder Spannung (z. B. 1055a-b) erzeugen, um zu bewirken, dass der Retimer seinen vorgelagerten Port abschließt, um ihn auch auf der Verbindung für die erste Vorrichtung „erscheinen“ zu lassen (z. B. als ein Proxy für Abschlüsse der zweiten Vorrichtung)
  • Ein Retimer kann verbessert werden, um nicht nur Ereignisse von Daten (z. B. 1030a,b) zu detektieren, die den Retimer durchqueren, sondern kann auch Logik zum Reagieren auf detektierte Ereignisse aufweisen. Zum Beispiel kann der Retimer zum Unterstützen von dynamischer Geschwindigkeitsänderung eine Geschwindigkeitsänderungsanforderung in Mustern identifizieren, die durch die Verbindung gesendet werden, und dann interne Logik nutzen, um die Geschwindigkeitsänderungsaushandlung zwischen den Vorrichtungen auf der Verbindung (z. B. einer Zentraleinheit und einer nachgeschalteten Vorrichtung) zu überwachen. Zum Beispiel kann der Retimer für PCIe die definierte Anzahl von aufeinanderfolgenden geordneten TS2-Mengen mit einem auf 1b eingestellten Geschwindigkeitsänderungsbit detektieren und ferner identische Ratenkennungen auf seiner vorgeschalteten Verbindung und auf seiner nachgeschalteten Verbindung detektieren, um zu bestimmen, dass eine Geschwindigkeitsänderung im Gange ist. Der Retimer kann dann die gewünschte Geschwindigkeit protokollieren und die Änderung schnell (z. B. innerhalb von 800 ns für PCIe) durchführen, derart dass der Retimer sich auch vorbereitet, um bei der neuen Geschwindigkeit zu arbeiten (z. B. nachdem seine vorgeschalteten und nachgeschalteten Verbindungen in den elektrischen Leerlauf eingetreten sind). In einigen Fällen kann unter anderen Beispielen die neue Geschwindigkeit dem Retimer in Verbindung mit der Geschwindigkeitsänderungsdatenfolge durch eine Zentraleinheit (über einen Seitenbandkanal) kommuniziert werden und der Retimer kann die Geschwindigkeitsänderung über den Seitenbandkanal bestätigen.
  • In einigen Fällen kann ein Retimer ein Ereignis detektieren und Logik aufweisen, die auf ein detektiertes Ereignis durch Zusammenarbeiten mit einer Zentraleinheit reagiert, die durch die Verbindung gekoppelt ist, um das Anpassen des Retimers zu ermöglichen, um auf der Verbindung transparent zu sein, wenn bestimmte Ereignisse und Tätigkeiten eingeleitet und durchgeführt werden (z. B. während des Verbindungstrainings). Als ein Beispiel kann ein Retimer die Einleitung einer Verbindungsentzerrungsprozedur detektieren. In einer Ausführung kann Senderentzerrungsunterstützung durch Bereitstellen von Logik in sowohl dem Retimer als auch etwas Unterstützungslogik in einer Zentraleinheit auf der Verbindung ausgeführt werden. In einer herkömmlichen Verbindung können die zwei Vorrichtungen insgesamt zwei Sender (d. h. eine an jeder Vorrichtung) ausmachen, die zu entzerren sind. Das Hinzufügen eines Retimers zu der Verbindung fügt indes zwei zusätzliche Sender (einen auf der vorgeschalteten Seite der Verbindung (z. B. 1035b) und einen auf der nachgeschalteten Seite der Verbindung (z. B. 1035a)) hinzu. Dementsprechend würden zum Gewährleisten der richtigen Funktion der Verbindung alle vier Sender in diesem Beispiel entzerrt oder angepasst, derart dass jeder geeignete Senderkoeffizienten und Einstellungen aufweist, um eine geeignete Signalqualität zu ermöglichen. Dies kann durch Bereitstellung von Protokolllogik (z. B. 1005a-b) in dem Retimer erleichtert werden, um die Teilnahme des Retimers an der Verbindungsentzerrungs/Anpassungsprozedur zu unterstützen.
  • Als ein Beispiel ist in 9A eine Zentraleinheit über eine Verbindung, die einen einzigen Retimer aufweist, mit einer Add-in-Kartenvorrichtung verbunden. Die drei Vorrichtungen zählen vier Sender, für die die richtigen Senderkoeffizienten jeweils bestimmt und angewandt werden müssen, um eine gute Signalqualität zu ermöglichen. In einem Beispiel kann die Entzerrung die dynamische Anpassung der Senderkoeffizienten für den nachgeschalteten Sender des Retimers (z. B. 910a) und den Sender der Add-in-Karte (z. B. 915) aufweisen. Der nachgeschaltete Sender der Zentraleinheit 905 und der vorgeschaltete Sender des Retimers 910a können einfach Voreinstellungen verwenden (da z. B. Attribute, die diesen Sendern entsprechen, bekannt sein sollten). Zum Beispiel kann in einem Beispiel für die PCIe-Entzerrung für eine Verbindung, die eine Zentraleinheit aufweist, die über eine Verbindung mit einem einzigen Retimer (wie beispielsweise in 9A) mit einer Add-in-Kartenvorrichtung verbunden ist, die vier Phasen der PCIe-Entzerrung, die den Retimer nutzen, in Phase 0 mit dem Senden von Voreinstellungen durch die Zentraleinheit über den In-Band-Kanal zu der Add-in-Karte für ihren vorgeschalteten Sender fortgesetzt werden (der Daten über den Retimer zur Zentraleinheit zurücksenden soll). Die Zentraleinheit kann ferner Voreinstellungen über das Seitenband für sowohl den vorgeschalteten als auch den nachgeschalteten Sender des Retimers an den Retimer senden. In Phase 1 können Entzerrungstestmuster auf der Verbindung vorgeschaltet und nachgeschaltet gesendet werden, wobei alle Sender unter Verwendung ihrer entsprechenden Voreinstellungen antreiben. Die Senderkoeffizienten können angepasst werden, bis die Verbindung bei einer BER von 10-4 funktionsfähig ist. In Phase 2 sendet die Add-in-Karte (z. B. die Vorrichtung 915) ein In-Band-Signal, das Entzerrungs-Feedback für den nachgeschalteten Sender des Retimers bereitstellt (der Daten auf die Add-in-Karte sendet), um den entsprechenden Koeffizienten anzupassen. Der verbesserte Retimer decodiert dann die auf seiner vorgeschalteten Verbindung empfangenen geordneten TS1-Mengen, um zu bestimmen, wann die Zentraleinheit und die Add-in-Karte in Phase 2 der Entzerrung eingetreten sind, und der Re-Timer extrahiert die angepassten Senderkoeffizienten für seinen nachgeschalteten Sender und startet den Antrieb von Daten unter Verwendung der neuen Koeffizienten innerhalb von 500 ns. Die CPU verarbeitet die gleiche geordnete TS1-Menge, um zu überprüfen, dass die angeforderten Koeffizienten für den Re-Timer gültig sind, und erzeugt eine Handshake-Antwort zum Annehmen oder Ablehnen der Anforderung. Dies erfolgt auf eine iterative Art und Weise, wobei jede Iteration bis zu 2 ms erfordert. In Phase 3 ist die Zentraleinheit (z. B. 905) zum Anpassen des vorgeschalteten Senders der Add-in-Karte (z. B. 915) vorgesehen. Um dies zu bewerkstelligen, kommuniziert die Zentraleinheit mit dem Retimer (z. B. 910a) über einen Seitenbandkanal (z. B. 920a), um Feedback-Information zu extrahieren, die durch den Re-Timer entwickelt wurden (die z. B. in einem Register enthalten sind, wie dem beispielsweise in einem in dem Beispiel von 10 gezeigten internen Konfigurationsregister 1045), die die Qualität des von der Add-in-Karte an den Retimer gesendeten Signals beschreiben.
  • In anderen Beispielen können zwei Zentraleinheiten (oder andere Prozessorvorrichtungen) durch eine durch einen oder mehrere Retimer erweiterte Verbindung zusammengeschaltet sein. Zum Beispiel kann eine Retimer-Topologie zwei Zentraleinheiten beinhalten, die über eine UPI-Verbindung verbunden sind, wie beispielsweise in dem Beispiel von 9B. Die Verbindungsentzerrung oder Anpassung einer UPI-Verbindung, die einen oder mehrere Retimer aufweist, kann analog zur Entzerrung in den PCIe-Retimer-Verbindungen sein (z. B. wie vorhergehend erörtert wurde), die Typen von Mustern, die in der Verbindungsanpassung genutzt werden, können indes für UPI spezifisch sein und es kann zusätzliche Logik in einem verbesserten Retimer bereitgestellt werden, um die Teilnahme des Retimers bei der Anpassung einer UPI-Verbindung zu unterstützen. Zum Beispiel kann ein bestimmtes Anpassungsmuster ein Pseudozufallsmuster aufweisen, wie beispielsweise eine Pseudozufalls-Bit-Folge (Pseudorandom Bit Sequence - PRBS), oder darauf basieren. Während die PRBS zufällig erscheinen kann, um die Anpassung durchzuführen und Fehler in Signalen zu detektieren, die von irgendeinem von den Sendern auf der Verbindung empfangen werden, sollte jedes Element der Verbindung erwarten und in der Lage sein, die PRBS zu erzeugen und zu überprüfen. Dementsprechend kann der Retimer mit Mustererzeugungslogik versehen sein, um das erwartete Pseudozufallsignal zu erzeugen. Zum Beispiel veranschaulicht ein Blockdiagramm 1200, wie in dem Beispiel von 12 gezeigt, beispielhafte Logik zum Erzeugen einer PRBS und Detektieren von Fehlern in einem PBRS-Muster, das an dem Retimer während der Anpassung einer Verbindung empfangen wird. Mustererzeugungslogik des Retimers kann ein Self-Seeding Linear-Feedback Shift Register 1205 aufweisen.
  • In einem Beispiel kann die Senderanpassung mit einer einzigen Retimer-UPI-Verbindung damit beginnen, dass der Boot-Prozessor mit dem Retimer kommuniziert, um die Anpassungsmuster-Abgleichslogik 1210 des Retimers einzurichten. Zum Beispiel kann in dem Fall von 12 das LFSR 1205 durch den Retimer verwendet werden, um das Anpassungsmuster selbst zu erzeugen und es dem Retimer zu ermöglichen, (z. B. unter Verwendung der Musterüberprüfungslogik 1215) eingehende Anpassungsmuster zu bewerten, um zu bestimmen, ob das eingehende Muster sich von dem durch das LFSR 1205 des Retimers erzeugten Muster unterscheidet. Von diesem Vergleich kann der Retimer Bitfehler bestimmen, die in während der Anpassung empfangenen Mustern auftreten. In einem Beispiel kann der Boot-Prozessor das LFSR 1205 durch Senden eines „Start“-Musters und eines „Stopp-Musters“ einstellen, die verwendet werden, um den Start und den Stopp des Self-Seeding-LFSR auszulösen. Die Start/Stopp-Musterabgleichslogik 1210 kann bereitgestellt werden, um Signale zu überwachen, die an dem Retimer empfangen werden, und zu detektieren, wann ein solches Start- oder Stopp-Muster empfangen wird, um das Self-Seeding des LFSR zu beginnen. Der Boot-Prozessor kann den Retimer ferner über den Seitenbandkanal konfigurieren, um bei einer Betriebsmodusfrequenz ausgeführt zu werden. Der Boot-Prozessor kann seine eigenen Senderkoeffizienten einrichten und anfangs durch Senden eines (z. B. mittels einer auf ähnliche Weise geseedeten LFSR an dem Boot-Prozessor erzeugten) PRBS-Musters, das mit dem „Start“- und „Stopp“-Muster eingerahmt ist, als Loopback-Master dienen. Beim Detektieren des „Start“-Musters aktiviert der Re-Timer seine Self-Seeding-LFSR 1205 und beginnt mit dem Überprüfen des eingehenden Musters auf Fehler (z. B. unter Verwendung von Musterüberprüfungslogik 1215), bis das „Stopp“-Muster durch Muster-Abgleichslogik 1215 detektiert wird. In einem Beispiel können die Start- und Stoppmuster ein UPI Start of Data Sequence (SDS) Muster und eine Beendigungs-PRBS sein, aber es können andere alternative Muster verwendet werden (z. B. zum Vereinfachen des Designs).
  • Der Retimer kann die Musterüberprüfung durchführen und die Musterüberprüfungslogik 1215 kann Musterüberprüfungsmetriken erzeugen und die Musterüberprüfungsmetriken in einem Register 1045 speichern. Die andere Prozessorvorrichtung (z. B. „Loopback-Slave“) kann auf ähnliche Weise das Anpassungsmuster überprüfen, wie von dem Retimer empfangen, und seine Überprüfungsmetrik in einem Register melden. Die Musterüberprüfungsergebnisse können dann aus dem/den Register/n durch Systemverwaltungssoftware herausgelesen werden, die bei der Anpassung der Verbindung hilft. Der Boot-Prozessor kann über den Seitenbandkanal 1040 auf den Retimer zugreifen, um die durch den Retimer erzeugte Musterüberprüfungsmetrik zu lesen und den Retimer anzuweisen, in den langsamen Modus einzutreten (während der andere Prozessor am Ende des Tests automatisch in den langsamen Modus übergeht). Der Boot-Prozessor kann einen In-Band-Zugriff des entfernten Prozessors (z. B. über den Retimer) im langsamen Modus durchführen, um die Empfängermetrikergebnisse (von dem Register des anderen Prozessors) dieser Senderanpassungsiteration herauszulesen und zu bestimmen, ob eine andere Iteration mit Änderungen an entweder seinen eigenen oder den Sendereinstellungen des Retimers durchzuführen ist. In dem Fall, in dem der Boot-Prozessor bestimmt, dass die Retimer-Sendereinstellungen anzupassen sind, kann der Boot-Prozessor die bestimmte Änderung über den Seitenbandkanal 1040 an den Retimer kommunizieren, um zu bewirken, dass die Änderungen in einer anschließenden Iteration des Anpassungstests angewandt werden.
  • In einigen Fällen, in denen ein Retimer über Seitenbandkanäle mit jedem von den zwei Prozessoren verbunden ist, kann durch den Boot-Prozessor über die Seitenbandkanäle auf die Metrik der entfernten Zentraleinheit zugegriffen (diese z. B. gelesen) werden. In solchen Fällen kann es möglich sein, auf den Wechsel des Retimers in den langsamen Modus zwischen Iterationen zu verzichten. Die Einstellungen der Sender können weiterhin iterativ angepasst werden, bis die gewünschten Verbindungsqualitätsmetriken beobachtet werden. Nachdem die Einstellungen in einer Richtung der Verbindung erfolgreich eingestellt wurden, kann die entfernte Zentraleinheit vom „Slave“ in den „Master“ übergehen, wobei der vorherige Master- oder Boot-Prozessor in den „Slave“ übergeht. Der neue Master-Prozessor kann dann weitere Iterationen des Anpassungsmusters unter Verwendung von ähnlichen Techniken (und Koordinierung mit dem Retimer über einen entsprechenden Seitenbandkanal) antreiben, um die Sender anzupassen, die Daten in die andere Richtung der Verbindung senden.
  • Weiter mit dem Beispiel von 12 kann ein LFSR (z. B. 1205) oder andere protokollspezifische Signalerzeugungslogik in einigen Fällen in Verbindung mit Detektionslogik (z. B. 1005a-b von 10) bereitgestellt werden, um es der Detektionslogik zu ermöglichen, Signalcodierungen zu interpretieren, die an dem Retimer empfangen wurden, um regeneriert und auf den anderen Endpunkt der Verbindung weitergeleitet zu werden. Zum Beispiel können einige Signale eine PRBS, die unter Verwendung eines mit einer bestimmten Seed geseedeten LFSR erzeugt wurde, aufweisen oder darauf basieren. Die Signalerzeugungslogik des Retimers kann in einigen Fällen auch das LFSR aufweisen, dessen Seeding auch mit dem bestimmten Seed (z. B. über eine Seitenbandkommunikation) durchgeführt werden kann, wodurch es dem Retimer ermöglicht wird, auch die PRBS zu erzeugen und diese lokal erzeugte PRBS mit der empfangenen PRBS zu vergleichen (z. B. in Verbindung mit der Anpassung der Verbindung). In anderen Ausführungen kann die Signalerzeugungslogik des Retimers es dem Retimer unter anderen Beispielen ermöglichen, empfangene Signale zu entwürfeln, um die Signale unter Verwendung von Detektionslogik zu decodieren.
  • Es versteht sich, dass die Schaltungen und andere Logik, die für ein erstes Protokoll (z. B. die Blöcke 1205, 1210, 1215) spezifisch sind, mit Logik kombiniert werden können, die für ein unterschiedliches zweites Protokoll bereitgestellt wird, um es einem Retimer zu erlauben, mit mehreren verschiedenen Protokollen kompatibel zu sein. Dies kann die Herstellung eines einzigen Retimers ermöglichen, der unabhängig von dem verwendeten Verbindungsprotokoll in eine von vielen verschiedenen Verbindungen eingesetzt werden kann. Ein Register (z. B. innerhalb oder außerhalb des Retimers) kann bereitgestellt werden, um zu bezeichnen, welches von den Protokollen in einer gegebenen Verbindung anzuwenden ist, und der Retimer kann Logik deaktivieren, die für das ausgewählte Protokoll nicht anwendbar ist. Ferner können, wie in den Beispielen von 10 und 12 gezeigt, einige logische Blöcke in zwei oder mehr von den durch den Retimer unterstützten Protokollen verwendet werden. Zum Beispiel können unter anderen Beispielen die Empfängerdetektion und der elektrische Leerlaufaustritt/Eintritt in zwei verschiedenen Interconnect-Protokollen funktionell äquivalent sein und die gleichen logischen Blöcke (z. B. Empfängerdetektionslogik 1050a-b und elektrische Leerlaufaustritts/Eintrittslogik) können in dem Retimer wiederverwendet werden, wenn eines von beiden Protokollen ausgewählt wird, um für eine entsprechende Verbindung angewandt zu werden, in die der Retimer eingesetzt ist. Auf diese Weise kann, anstatt vollständige Protokollstapel (oder sogar vollständige Physical Layers) für jedes von den mehreren Interconnect-Protokollen bereitzustellen, eine Mindestmenge von Logik in einem Retimer bereitgestellt werden, um es dem Retimer zu ermöglichen, in einer Teilmenge der Interconnect-Tätigkeiten zu helfen, die in jedem von den potentiell mehreren verschiedenen Protokollen als die kritischsten bestimmt werden, wobei Logik wiederverwendet wird, wo möglich. Dies kann unter anderen beispielhaften Vorteilen eine kompaktere und weniger teure Ausführung eines Retimers mit mehreren Protokollen und kurzer Latenzzeit ermöglichen.
  • 13A und 13B sind Ablaufdiagramme 1300a-b, die beispielhafte Techniken veranschaulichen, die einen Retimer beinhalten, der konfiguriert ist, um an protokollspezifischen Tätigkeiten mit der Hilfe einer Prozessorvorrichtung teilzunehmen, die auf einer Verbindung verbunden ist, die den Retimer aufweist. Zum Beispiel kann in 13A auf der Verbindung ein Signal von einer ersten von zwei Endpunktvorrichtungen empfangen werden 1305, die auf einer Verbindung verbunden sind, die einen Retimer aufweist. Der Retimer kann bestimmen 1310, ob das Signal mit einem Muster codiert ist, das in einem Protokoll definiert ist, das irgendeiner von potenziell mehreren verschiedenen Protokolltätigkeiten entspricht. Zum Beispiel können verschiedene Muster von einem Endpunkt zum anderen gesendet werden, um den Eintritt in oder den Austritt aus einer Verbindung oder einem Verbindungstrainingszustand anzugeben. Ein Muster kann zusätzlich beim Trainieren der Verbindung gemäß einem bestimmten Protokoll verwendet werden. Verschiedene Protokolltätigkeiten können innerhalb eines gegebenen Interconnect-Protokolls definiert werden, dessen Durchführung durch das Vorhandensein des Retimers kompliziert sein kann. Der Retimer kann konfiguriert sein, um zumindest teilweise an der Protokolltätigkeit teilzunehmen, um die Integrität des Verbindungsprotokolls zu wahren und das Vorhandensein des Retimers wirksam von den Endpunkten zu verbergen. In einigen Fällen kann eine von den Endpunktvorrichtungen ein Prozessor sein und kann Logik zur Unterstützung der Teilnahme des Retimers an der Protokolltätigkeit aufweisen, zum Beispiel durch die Kommunikation von Daten unter Verwendung eines Seitenbandkanals, der den Retimer mit der Prozessorendpunktvorrichtung verbindet. Protokolltätigkeiten können unter anderen Beispielen solche Beispiele wie den Eintritt in und den Austritt aus einem Niederleistungs- oder Leerlaufverbindungszustand, Entzerrung von Sendern und/oder Empfängern, Änderung der Übertragungsgeschwindigkeit, Durchführen von protokolldefinierten Handshakes aufweisen. Zusätzlich zur Unterstützung bei der Durchführung von einer oder mehreren Protokolltätigkeiten kann der Retimer zusätzlich die herkömmlichen Aufgaben eines Retimers durchführen, die das Regenerieren 1320 des Empfangssignals und das Weitersenden des Signals an den anderen zweiten Endpunkt aufweisen. Auf ähnliche Weise kann der Retimer das Signal von der zweiten Endpunktvorrichtung empfangen 1325 und das Signal regenerieren und an die erste Vorrichtung weitersenden. In einigen Fällen kann der Retimer die Signaldetektion (1310) und die Protokolltätigkeitsteilnahme parallel mit dem Retiming von empfangenen Signalen durchführen, derart dass keine zusätzliche Latenzzeit zum Retiming des Signals von der Unterstützung der Protokolltätigkeiten hinzugefügt wird.
  • Unter Bezugnahme auf 13B kann ein Prozessorendpunkt konfiguriert sein, um sich unter Verwendung von einem oder mehreren Interconnect-Protokollen mit anderen Vorrichtungen zu verbinden. Eine bestimmte Verbindung kann den Prozessorendpunkt über einen Retimer mit einem anderen Endpunkt verbinden. Der Prozessorendpunkt kann Signale über die Verbindung senden 1350. Der Prozessorendpunkt kann zusätzlich über einen separaten Seitenbandkanal außerhalb des Bandes eine Schnittstelle mit dem Retimer bilden 1355. Der Prozessorendpunkt kann zusätzlich Signale über den Retimer von dem anderen Endpunkt empfangen 1360. Der Prozessorendpunkt kann zusätzliche Logik besitzen, um den Retimer zu leiten oder auf eine andere Art und Weise zu unterstützen, um die Fortsetzung der Unterstützung von Protokolltätigkeiten sogar mit der Einfügung des Retimers zu ermöglichen. Der Retimer kann unter anderen Beispielen lediglich Teilprotokolllogik, wie beispielsweise weniger als ein gesamter Protokollstapel des Protokolls, oder sogar weniger als eine vollständige Layer (z. B. eine Physical Layer oder Link Layer) des Protokolls besitzen. Am Prozessorendpunkt kann zusätzliche Logik bereitgestellt werden, auf die sich der Retimer (z. B. über Kommunikationen über den Seitenbandkanal) stützen kann, um es dem Retimer zu ermöglichen, wo erforderlich, an verschiedenen Verbindungstrainings-, Handhake- und anderen protokollspezifischen Aktivitäten teilzunehmen.
  • Es sei erwähnt, dass die vorhergehenden beschriebenen Vorrichtungen, Verfahren und Systeme in irgendeiner/irgendeinem elektronischen Vorrichtung oder System ausgeführt werden können, wie vorhergehend erwähnt. Als spezifische Veranschaulichungen stellen die folgenden Figuren beispielhafte Systeme zur Nutzung der Erfindung, wie hier beschrieben, bereit. Wenn die folgenden Systeme mit mehr Details beschrieben werden, wird eine Anzahl von verschiedenen Interconnects offenbart, beschrieben und von der vorhergehenden Erörterung nochmals aufgegriffen. Und wie ohne Weiteres ersichtlich, können die vorhergehend beschriebenen Fortschritte auf irgendeine/n von diesen Interconnects, Fabrics oder Architekturen angewandt werden.
  • Unter Bezugnahme auf 14 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem bildlich dargestellt, das eine Mehrkernprozessor aufweist. Der Prozessor 1400 weist irgendeine/n Prozessor oder Verarbeitungsvorrichtung, wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, eine Anwendungsprozessor, einen Coprozessor, ein System On a Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code auf. Der Prozessor 1400 weist in einer Ausführungsform mindestens zwei Kerne auf - die Kerne 1401 und 1402 -, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) aufweisen können. Der Prozessor 1400 kann indes irgendeine Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezeichnet ein Verarbeitungselement Hardware oder Logik zur Unterstützung eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente weisen auf: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie beispielsweise einen Ausführungszustand oder Architekturzustand. Mit anderen Worten, bezeichnet ein Verarbeitungselement in einer Ausführungsform irgendeine Hardware, die in der Lage ist, unabhängig mit Code verbunden zu werden, wie beispielsweise ein Software-Thread, Betriebssystem, eine Anwendung oder anderen Code. Ein physikalischer Prozessor (oder Prozessor-Socket) bezeichnet typischerweise eine integrierte Schaltung, die potenziell irgendeine Anzahl von anderen Verarbeitungselementen, wie beispielsweise Kerne oder Hardware-Threads, aufweist.
  • Ein Kern bezeichnet häufig eine Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrecht zu erhalten, wobei jeder unabhängig aufrecht erhaltene Architekturzustand mindestens einigen dedizierten Ausführungsressourcen zugehörig ist. Im Gegensatz zu Kernen bezeichnet ein Hardware-Thread typischerweise irgendeine Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrecht zu erhalten, wobei die unabhängig aufrecht erhaltenen Architekturzustände Zugriff auf Ausführungsressourcen gemeinsam nutzen. Wie ersichtlich, verschwimmt, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere einem Architekturzustand dediziert sind, die Linie zwischen der Nomenklatur eines Hardware-Threads und Kerns. Dennoch werden häufig ein Kern und eine Hardware-Thread durch ein Betriebssystem als individuelle logische Prozessoren betrachtet, wofür das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physikalische Prozessor 1400, wie in 14 veranschaulicht, weist zwei Kerne 14 - die Kerne 1401 und 1402 - auf. Hier werden die Kerne 1401 und 1402 als symmetrische Kerne betrachtet, d. h. Kerne mit den/der gleichen Konfigurationen, Funktionseinheiten und/oder Logik. In einer anderen Ausführungsform weist der Kern 1401 einen Out-of-Order-Prozessorkern auf, während der Kern 1402 einen In-Order-Prozessorkern aufweist. Die Kerne 1401 und 1402 können indes individuell von irgendeinem Typ von Kern, wie beispielsweise einem nativen Kern, einem software-verwalteten Kern, einem Kern, der angepasst ist, eine native Instruction Set Architecture (ISA) auszuführen, einem Kern, der angepasst ist, um eine übersetzte Instruction Set Architecture (ISA) auszuführen, einem coentworfenen Kern oder einem anderen bekannten Kern ausgewählt werden. In einer Umgebung mit heterogenen Kernen (d. h. asymmetrischen Kernen) kann irgendeine Form von Übersetzung, wie beispielsweise binäre Übersetzung, genutzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Um jedoch die Erörterung voranzubringen, werden die im Kern 1401 veranschaulichten Funktionseinheiten nachfolgend mit weiteren Details beschrieben, da die Einheiten im Kern 1402 in der bildlich dargestellten Ausführungsform auf eine ähnliche Art und Weise betrieben werden.
  • Wie bildlich dargestellt, weist der Kern 1401 zwei Hardware-Threads 1401a und 1401b auf, die auch als Hardware-Thread-Slots 1401a und 1401b bezeichnet werden können. Daher betrachten Softwareentitäten, wie beispielsweise ein Betriebssystem, in einer Ausführungsform den Prozessor 1400 potentiell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, gleichzeitig vier Software-Threads auszuführen. Wie vorher erwähnt, ist ein erster Thread Architekturzustandsregistern 1401a zugehörig, ein zweiter Thread ist Architekturzustandsregistern 1401b zugehörig, ein dritter Thread kann Architekturzustandsregistern 1402a zugehörig sein und ein vierter Thread kann Architekturzustandsregistern 1402b zugehörig sein. Hier kann jedes von den Architekturzustandsregistern (1401a, 1401b, 1402a und 1402b) als Verarbeitungselemente, Thread-Slots, oder Thread-Einheiten bezeichnet werden, wie vorhergehend beschrieben. Wie veranschaulicht, sind die Architekturzustandsregister 1401a in den Architekturzustandsregistern 1401b repliziert, somit sind individuelle Architekturzustände/Kontexte in der Lage, für den logischen Prozessor 1401a und den logischen Prozessor 1401b gespeichert zu werden. Im Kern 1401 können andere kleinere Ressourcen, wie beispielsweise Befehlszeiger und Umbenennungslogik, im Zuweisungs- und Umbenennungsblock 1430 auch für die Threads 1401a und 1401b repliziert werden. Einige Ressourcen, wie beispielsweise Umordnungspuffer in der Umordnungs/Retirement-Einheit 1435, ILTB 1420, Lade/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam verwendet werden. Andere Ressourcen, wie beispielsweise interne Universalregister, Register auf Seitentabellenbasis, Daten-Cache und Daten-TLB 1415 der unteren Ebene, Ausführungseinheit/en 1440 und Abschnitte der Out-of-Order-Einheit 1435 werden potenziell vollständig gemeinsam verwendet.
  • Der Prozessor 1400 weist häufig andere Ressourcen auf, die vollständig gemeinsam verwendet werden können, durch Partitionierung gemeinsam verwendet werden können, oder durch/für Verarbeitungselemente dediziert sein können. In 14 wird eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es sei erwähnt, dass ein Prozessor irgendeine von diesen Funktionseinheiten aufweisen oder weglassen kann, sowie irgendeine andere bekannte Funktionseinheit, Logik oder Firmware, die nicht bildlich dargestellt sind, aufweisen kann. Wie veranschaulicht, weist der Kern 1401 einen vereinfachten, repräsentativen Out-Of-Order-Prozessorkern (OOO) auf. In anderen Ausführungsformen kann jedoch ein In-Order-Prozessor genutzt werden. Der OOO-Kern weist einen Sprungzielpuffer 1420 zum Vorhersagen von Sprüngen, die auszuführen/vorzunehmen sind, und einen Befehlsübersetzungspuffer (Instruction-Translation Buffer - I-TLB) 1420 zum Speichern von Adressübersetzungseinträgen für Befehle auf.
  • Der Kern 1401 weist ferner das Decodierungsmodul 1425 auf, das mit der Abrufeinheit 1420 gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik weist in einer Ausführungsform einzelne Sequenzierer auf, die den Thread-Slots 1401a beziehungsweise 1401b zugehörig sind. Für gewöhnlich ist der Kern 1401 einer ersten ISA zugehörig, die spezifische Befehle definiert/angibt, die auf dem Prozessor 1400 ausführbar sind. Häufig weisen Maschinencodebefehle, die Teil der ersten ISA sind, einen Abschnitt des Befehls (als Opcode bezeichnet) auf, der eine/n auszuführende/n Befehl oder Operation referenziert/angibt. Die Decodierungslogik 1425 weist Schaltungen auf, die diese Befehle von ihren Opcodes erkennen und die decodierten Befehle in der Pipeline zur Verarbeitung, wie durch die erste ISA definiert, weiterleiten. Zum Beispiel weisen, wie nachfolgend mit mehr Details erörtert, die Decodierer 1425 in einer Ausführungsform Logik auf, die gestaltet oder angepasst ist, um spezifische Befehle, wie beispielsweise Transaktionsbefehle, zu erkennen. Als ein Ergebnis der Erkennung durch die Decodierer 1425 unternimmt die Architektur oder der Kern 1401 spezifische, vordefinierte Aktionen, um Aufgaben durchzuführen, die dem geeigneten Befehl zugehörig sind. Es ist wichtig, zu erwähnen, dass jede/r von den Aufgaben, Blöcken, Operationen und Verfahren, die hier beschrieben sind, als Reaktion auf einen einzelnen oder auf mehrere Befehle durchgeführt werden kann, wobei einige davon neue oder alte Befehle sein können. Es sei erwähnt, dass die Decodierer 1426 in einer Ausführungsform die gleiche ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen in einer heterogenen Kernumgebung die Decodierer 1426 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine unterschiedliche ISA).
  • In einem Beispiel weist der Zuweisungs- und Umbenennungsblock 1430 eine Zuweisungseinrichtung zum Reservieren von Ressourcen, wie beispielsweise Registerdateien, zum Speichern von Befehlsverarbeitungsergebnissen auf. Die Threads 1401a und 1401b sind indes potenziell zu Out-of-Order-Ausführung in der Lage, wo der Zuweisungs- und Umbenennungsblock 1430 auch andere Ressourcen, wie beispielsweise Neuordnungspuffer, reserviert, um Befehlsergebnisse zurückzuverfolgen. Die Einheit 1430 kann auch eine Registerumbenennungseinrichtung zum Umbenennen von Programm/Befehlsreferenzregistern in andere Register innerhalb des Prozessors 1400 aufweisen. Die Umordnungs/Retirement-Einheit 1435 weist Komponenten, wie beispielsweise die vorhergehend erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, auf, um Out-of-Order-Ausführung und später In-Order-Retirement von out-of-order ausgeführten Befehlen zu unterstützen.
  • Der Scheduler- und Ausführungseinheit/en-Block 1440 weist in einer Ausführungsform eine Scheduler-Einheit zum Planen von Befehlen/Operationen auf Ausführungseinheiten auf. Zum Beispiel wird ein Gleitkommabefehl auf einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, die den Ausführungseinheiten zugehörig sind, sind ebenfalls enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten weisen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten auf.
  • Ein Daten-Cache einer niedrigeren Ebene und ein Datenübersetzungspuffer (D-TLB) 1450 sind an die Ausführungseinheit/en 1440 gekoppelt. Der Daten-Cache ist zum Speichern von kürzlich verwendeten/betriebenen Elementen vorgesehen, wie beispielsweise Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden. Der D-TLB ist zum Speichern kürzlicher Umsetzung von virtuellen/linearen in physikalische Adressen vorgesehen. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um physikalischen Speicher in mehrere virtuelle Seiten zu zerlegen.
  • Hier verwenden die Kerne 1401 und 1402 gemeinsam den Zugriff auf Cache einer höheren Ebene oder weiter entfernteren Cache, wie beispielsweise Cache einer zweiten Ebene, der einer On-Chip-Schnittstelle 1410 zugehörig ist. Es sei erwähnt, dass höhere Ebene oder weiter entfernt Cache-Ebenen bezeichnen, die ansteigen oder sich weiter von der/den Ausführungseinheit/en entfernt befinden. In einer Ausführungsform ist der Cache einer höheren Ebene ein Cache der letzten Ebene - der letzte Cache in der Speicherhierarchie auf dem Prozessor 1400 - wie beispielsweise ein Daten-Cache der zweiten oder dritten Ebene. Ein Cache der höheren Ebene ist indes nicht darauf beschränkt, da er einem Befehls-Cache zugehörig sein oder diesen aufweisen kann. Ein Verfolgungs-Cache - ein Typ von Befehls-Cache - kann stattdessen nach dem Decodierer 1425 gekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hier bezeichnet ein Befehl potentiell einen Makrobefehl (d. h. einen allgemeinen Befehl, der durch die Decodierer erkannt wird), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
  • In der bildlich dargestellten Ausgestaltung weist der Prozessor 1400 auch ein On-Chip-Schnittstellenmodul 1410 auf. Historisch war ein Speicher-Controller, der in der Folge mit mehr Details beschrieben wird, in einem Rechensystem außerhalb des Prozessors 1400 enthalten. In diesem Szenario ist die On-Chip-Schnittstelle 1410 zum Kommunizieren mit Vorrichtungen außerhalb des Prozessors 1400, wie beispielsweise dem Systemspeicher 1475, einem Chipsatz (der häufig einen Speicher-Controller-Hub zur Verbindung mit dem Speicher 1475 und einen E/A-Controller-Hub zur Verbindung mit Peripheriegeräten aufweist), ein Speicher-Controller-Hub, eine Northbridge oder eine andere integrierte Schaltung. Und in diesem Szenario kann der Bus 1405 irgendein bekanntes Interconnect, wie beispielsweise einen Multi-Drop-Bus, ein Punkt-zu-Punkt-Interconnect, ein serielles Interconnect, einen parallelen Bus, einen kohärenten (z. B. cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus, aufweisen.
  • Der Speicher 1475 kann für den Prozessor 1400 dediziert sein oder mit anderen Vorrichtungen in einem System gemeinsam verwendet werden. Allgemeine Beispiele für Typen von Speicher 1475 weisen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen auf. Es sei erwähnt, dass die Vorrichtung 1480 einen Grafikbeschleuniger, Prozessor oder eine Karte, die an einen Speicher-Controller-Hub gekoppelt ist, Datenspeicher, der an einen E/A-Controller-Hub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, einen Audio-Controller, einen Netzwerk-Controller oder eine andere bekannte Vorrichtung aufweisen kann.
  • In letzter Zeit, kann, da mehr Logik und Vorrichtungen auf einem einzelnen Die, wie beispielsweise einem SOC, integriert werden, jede dieser Vorrichtungen auf dem Prozessor 1400 aufgenommen werden. Zum Beispiel befindet sich in einer Ausführungsform ein Speicher-Controller-Hub auf demselben Package und/oder Die mit dem Prozessor 1400. Hier weist ein Abschnitt des Kerns (ein On-Core-Abschnitt) 1410 einen oder mehrere Controller zum Bilden einer Schnittstelle mit anderen Vorrichtungen, wie beispielsweise dem Speicher 1475 oder einer Grafikvorrichtung 1480 auf. Die Ausgestaltung, die ein Interconnect und Controller zum Bilden einer Schnittstelle mit solchen Vorrichtungen aufweist, wird häufig als eine On-Core (oder Un-Core) Ausgestaltung bezeichnet. Als ein Beispiel weist die On-Chip-Schnittstelle 1410 ein Ring-Interconnect zur On-Chip-Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 1405 zur Off-Chip-Kommunikation auf. In der SOC-Umgebung können indes sogar noch mehr Vorrichtungen, wie beispielsweise die Netzwerkschnittstelle, Coprozessoren, der Speicher 1475, Grafikprozessor 1480 und alle anderen bekannten Computervorrichtungen/Schnittstellen auf einem/einer einzigen Die oder integrierten Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Leistungsverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1400 in der Lage, einen Compiler-, Optimierungs- und/oder Übersetzercode 1477 auszuführen, um Anwendungscode 1476 zu kompilieren, übersetzen und/oder optimieren, um die hier beschriebenen Vorrichtungen und Verfahren zu unterstützen, oder um eine Schnittstelle damit zu bilden. Ein Compiler weist häufig ein Programm oder eine Menge von Programmen zum Übersetzen von Quelltext/Code in Zieltext/Code auf. Für gewöhnlich erfolgt die Kompilierung von Programm/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um Code höherer Programmiersprachen in Maschinen- oder Assemblersprachencode niedrigerer Ebenen umzuwandeln. Es können jedoch immer noch Einzeldurchgangs-Compiler zur einfachen Kompilierung genutzt werden. Ein Compiler kann alle bekannten Kompilierungstechniken nutzen und alle bekannten Compileroperationen, wie beispielsweise lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codeumwandlung und Codeoptimierung, durchführen.
  • Größere Compiler weisen häufig mehrere Phasen auf, aber am häufigsten sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Front-End, d. h. wo allgemein syntaktische Verarbeitung, semantische Verarbeitung und etwas Transformation/Optimierung stattfinden kann, und (2) ein Back-End, d. h. wo allgemein Analyse, Transformationen, Optimierungen und Codeerzeugungsaufgaben stattfinden. Einige Compiler betreffen eine Mitte, was die Unschärfe der Abgrenzung zwischen einem Front-End und einem Back-End eines Compilers veranschaulicht. Folglich kann ein Bezug auf eine Einfügung, Verknüpfung, Erzeugung oder eine andere Operation eines Compilers in irgendeiner von den vorhergehenden Phasen oder Durchgängen sowie allen anderen bekannten Phasen oder Durchgängen eines Compilers stattfinden. Als ein veranschaulichendes Beispiel fügt ein Compiler potentiell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung, wie beispielsweise der Einfügung von Aufrufen/Operationen in einer Front-End-Phase der Kompilierung und dann Umwandlung der Aufrufe/Operationen in Code einer niedrigeren Ebene während einer Umwandlungsphase ein. Es sei erwähnt, dass Compiler-Code oder dynamischer Optimierungscode während der dynamischen Kompilierung solche Operationen/Aufrufe einfügen kann sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifisches veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon aufweisen.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie beispielsweise ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich der Bezug auf die Ausführung von Code, Anwendungscode, Programmcode oder eine andere Software-Umgebung auf Folgendes beziehen: (1) Ausführung eines/von Compiler-Programmen, Optimierungscodeoptimierer oder Übersetzer, entweder statisch oder dynamisch, um Programmcode zu kompilieren, um Softwarestrukturen aufrecht zu erhalten, um andere Operationen durchzuführen, um Code zu optimieren oder um Code zu übersetzen; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe aufweist, wie beispielsweise Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung von anderem Programmcode, wie beispielsweise Bibliotheken, die dem Hauptprogrammcode zugehörig sind, um Softwarestrukturen aufrecht zu erhalten, um andere softwarebezogene Operationen durchzuführen oder um Code zu optimieren; oder (4) eine Kombination davon.
  • Nun mit Bezug auf 15 ist ein Blockdiagramm eines zweiten Systems 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist das Multiprozessorsystem 1500 ein Punkt-zu-Punkt-Interconnect-System und weist einen ersten Prozessor 1570 und einen zweiten Prozessor 1580 auf, die über ein Punkt-zu-Punkt-Interconnect 1550 gekoppelt sind. Jeder der Prozessoren 1570 und 1580 kann irgendeine Version eines Prozessors sein. In einer Ausführungsform sind 1552 und 1554 Teil eines seriellen, kohärenten Punkt-zu-Punkt-Interconnect-Fabrics, wie beispielsweise einer Hochleistungsarchitektur. Folglich kann die Erfindung innerhalb der QPI-Architektur ausgeführt werden.
  • Obgleich nur zwei Prozessoren 1570, 1580 gezeigt sind, versteht sich, dass der Schutzumfang der vorliegenden Erfindung nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die gezeigten Prozessoren 1570 und 1580 weisen integrierte Speicher-Controller-Einheiten (Integrated Memory Controller - IMC) 1572 beziehungsweise 1582 auf. Der Prozessor 1570 weist auch die Punkt-zu-Punkt-Schnittstellen (P-P) 1576 und 1578 als Teil seiner Bus-Controller-Einheiten auf, auf ähnliche Weise weist der zweite Prozessor 1580 P-P-Schnittstellen 1586 und 1588 auf. Die Prozessoren 1570, 1580 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P) 1550 unter Verwendung von P-P-Schnittstellenschaltungen 1578, 1588 austauschen. Wie in 15 gezeigt, koppeln die IMCs 1572 und 1582 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Abschnitte von Hauptspeicher sein können, die lokal mit den entsprechenden Prozessoren verbunden sind.
  • Die Prozessoren 1570, 1580 tauschen jeweils Informationen mit einem Chipsatz 1590 über individuelle P-P-Schnittstellen 1552, 1554 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1576, 1594, 1586, 1598 aus. Der Chipsatz 1590 tauscht auch Informationen mit einer Hochleistungsgrafikschaltung 1538 über eine Schnittstellenschaltung 1592 entlang eines Hochleistungsgrafik-Interconnects 1539 aus.
  • Ein gemeinsam verwendeter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb von beiden Prozessoren enthalten sein, und doch mit den Prozessoren über das P-P-Interconnect verbunden sein, derart dass lokale Cache-Informationen von einem oder beiden Prozessoren im gemeinsam verwendeten Cache gespeichert werden können, wenn ein Prozessor in einen Modus mit niedriger Leistung versetzt wird.
  • Der Chipsatz 1590 kann über eine Schnittstelle 1596 an einen ersten Bus 1516 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1516 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus, wie beispielsweise ein PCI Express Bus oder ein anderer E/A-Interconnect-Bus der dritten Generation sein, obgleich der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 15 gezeigt, sind verschiedene E/A-Vorrichtungen 1514 an den ersten Bus 1516 gekoppelt, gemeinsam mit einer Bus-Bridge 1518, die den ersten Bus 1516 an einen zweiten Bus 1520 koppelt. In einer Ausführungsform weist der zweite Bus 1520 einen Low Pin Count (LPC) Bus auf. In einer Ausführungsform sind verschiedene Vorrichtungen, die zum Beispiel eine Tastatur und/oder Maus 1522, Kommunikationsvorrichtungen 1527 und eine Speichereinheit 1528, wie beispielsweise ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, aufweisen, die häufig Befehle/Code und Daten 1530 aufweisen, an den zweiten Bus 1520 gekoppelt. Ferner ist ein Audio-E/A 1524 an den zweiten Bus 1520 gekoppelt gezeigt. Es sei erwähnt, dass andere Architekturen möglich sind, wo die enthaltenen Komponenten und Interconnect-Architekturen variieren. Zum Beispiel kann anstatt der Punkt-zu-Punkt-Architektur von 15 ein System einen Multi-Drop-Bus oder eine andere solche Architektur ausführen.
  • Obgleich die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Abwandlungen und Varianten davon verstehen. Es wird beabsichtigt, dass die beigefügten Ansprüche alle solchen Abwandlungen und Varianten abdecken, die in den wahren Geist und Schutzumfang der vorliegenden Erfindung fallen.
  • Eine Gestaltung kann verschiedene Stufen, von der Erstellung über die Simulation bis zur Herstellung, durchlaufen. Daten, die eine Gestaltung darstellen, können die Gestaltung auf eine Anzahl von Arten darstellen. Zuerst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Darüber hinaus kann an einigen Stufen des Gestaltungsprozesses ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gates erstellt werden. Ferner erreichen die meisten Gestaltungen an irgendeiner Stufe eine Datenebene, die die physikalische Platzierung verschiedener Vorrichtungen in dem Hardware-Modell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken angeben, die verwendet werden, um die integrierte Schaltung herzustellen. In irgendeiner Darstellung der Gestaltung können die Daten in irgendeiner Form eines maschinenlesbaren Datenträgers gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie beispielsweise eine Platte, können der maschinenlesbare Datenträger zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf eine andere Art und Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder die Gestaltung angibt oder trägt, übertragen wird, wird in dem Maße, in dem ein Kopieren, Puffern oder eine Weiterleitung des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. So kann ein Kommunikationsanbieter oder ein Netzwerkanbieter ein Erzeugnis, wie beispielsweise Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung ausführt, zumindest vorübergehend auf einem greifbaren, maschinenlesbaren Datenträger speichern.
  • Ein Modul, wie es hier verwendet wird, bezeichnet irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel weist ein Modul Hardware auf, wie beispielsweise einen Mikrocontroller, der mit einem nichtflüchtigen Datenträger verbunden ist, um Code zu speichern, der angepasst ist, um durch den Mikrocontroller ausgeführt zu werden. Daher bezeichnet die Bezugnahme auf ein Modul in einer Ausführungsform die Hardware, die spezifisch ausgestaltet ist, um den Code, der auf einem nichtflüchtigen Datenträger zu halten ist, zu erkennen und/oder auszuführen. Ferner bezeichnet in einer anderen Ausführungsform die Verwendung eines Moduls den nichtflüchtigen Datenträger, der den Code aufweist, der spezifisch angepasst ist, um durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und daraus folgt, dass in noch einer anderen Ausführungsform der Begriff Modul (in diesem Beispiel) die Kombination des Mikrocontrollers und des nichtflüchtigen Datenträgers bezeichnen kann. Häufig sind Grenzen zwischen Modulen, die als getrennt veranschaulicht sind, allgemein veränderlich und überlappen sich potenziell. Zum Beispiel kann es sein, dass ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam verwenden, während sie potenziell etwas unabhängige Hardware, Software oder Firmware behalten. In einer Ausführungsform weist die Verwendung des Begriffs Logik Hardware, wie beispielsweise Transistoren, Register oder andere Hardware, wie beispielsweise programmierbare Logikvorrichtungen, auf.
  • Die Verwendung des Ausdrucks „ausgestaltet, um“ in einer Ausführungsform bezeichnet das Anordnen, Zusammenführen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Gestalten von einer Vorrichtung, Hardware, Logik oder einem Element, um eine bezeichnete oder bestimmte Aufgabe durchzuführen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht betrieben wird, immer noch „ausgestaltet, um“ eine bezeichnete Aufgabe durchzuführen, wenn sie/es gestaltet, gekoppelt und/oder zusammengeschaltet ist, um die bezeichnete Aufgabe durchzuführen. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „ausgestaltet ist“, um einem Takt ein Aktivierungssignal bereitzustellen, weist nicht jedes potenzielle Logikgatter auf, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf irgendeine Art und Weise derart gekoppelt ist, dass während des Betriebs die ausgegebene 1 oder 0 zum Aktivieren des Takts bestimmt ist. Es sei erneut erwähnt, dass die Verwendung des Begriffs „ausgestaltet, um“ keinen Betrieb erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements konzentriert, wobei die Vorrichtung, Hardware und/oder das Element im latenten Zustand gestaltet ist, um eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, Hardware und/oder das Element betrieben wird.
  • Ferner bezeichnet die Verwendung der Ausdrücke „um“, „in der Lage, um“ und/oder „betriebsfähig, um“ in einer Ausführungsform irgendeine Vorrichtung, Logik, Hardware und/oder ein Element, die/das derart gestaltet ist, dass die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements auf eine angegebene Art und Weise ermöglicht wird. Es sei wie vorhergehend erwähnt, dass die Verwendung von um, in der Lage, um oder betriebsfähig, um in einer Ausführungsform den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezeichnet, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht betrieben wird, sondern derart gestaltet ist, dass die Verwendung einer Vorrichtung auf eine angegebene Art und Weise ermöglicht wird.
  • Ein Wert, so wie er hier verwendet wird, weist irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands auf. Häufig wird die Verwendung von logischen Pegeln, logischen Werten oder Logikwerten auch als 1en und 0en bezeichnet, die einfach binäre logische Zustände darstellen. Zum Beispiel bezeichnet eine 1 einen logisch hohen Pegel und eine 0 bezeichnet einen logisch niedrigen Pegel. In einer Ausführungsform kann eine Speicherzelle, wie beispielsweise eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden indes auch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher weist ein Wert irgendeine Darstellung von Informationen auf, die in einem Rechensystem gehalten werden können.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins, einen Standard- oder Ausgangszustand darstellen, während ein zweiter Wert, wie beispielsweise eine logische Null, einen Nicht-Standardzustand darstellen kann. Darüber hinaus bezeichnen die Begriffe Zurücksetzen und Einstellen in einer Ausführungsform einen Standard- beziehungsweise einen aktualisierten Wert oder Zustand. Zum Beispiel weist ein Standardwert potenziell einen hohen logischen, d. h. zurückgesetzten, Wert, auf, während ein aktualisierter Wert potenziell einen niedrigen logischen, d. h. eingestellten, Wert aufweist. Es sei erwähnt, dass irgendeine Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorhergehend dargelegt sind, können über Befehle oder Code ausgeführt werden, die auf einem maschinenlesbaren oder computerlesbaren Datenträger, auf den durch eine Maschine beziehungsweise einen Computer zugegriffen werden kann, gespeichert sind und die durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiger maschinenlesbarer Datenträger, auf den durch eine Maschine zugegriffen werden kann, weist irgendeinen Mechanismus auf, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die durch eine Maschine, wie beispielsweise einen Computer oder ein elektronisches System, gelesen werden kann. Zum Beispiel weist ein nichtflüchtiger maschinenlesbarer Datenträger Speicher mit wahlfreiem Zugriff (Random-Access Memory - RAM), wie beispielsweise statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; einen magnetischen oder optischen Datenträger; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Formen von Speichervorrichtungen zum Halten von Informationen auf, die von flüchtigen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nichtflüchtigen Datenträgern zu unterscheiden sind, die Informationen davon empfangen.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Erfindung durchzuführen, können innerhalb eines Speichers in dem System, wie beispielsweise DRAM, Cache, Flash-Speicher oder einem anderen Speicher, gespeichert werden. Ferner können die Befehle über ein Netzwerk oder mittels eines anderen computerlesbaren Datenträgers verteilt werden. Somit kann ein maschinenlesbarer Datenträger irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form, wie beispielsweise Floppy-Disketten, optische Platten, Compact Disc, Read-Only Memory (CD-ROMs) und magnetooptische Platten, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, aufweisen, ist aber nicht darauf beschränkt. Dementsprechend weist der computerlesbare Datenträger irgendeinen Typ von greifbarem maschinenlesbarem Datenträger auf, der zur Speicherung oder Übertragung elektronischer Befehle oder Informationen in einer Form geeignet ist, die durch eine Maschine (z. B. einen Computer) lesbar ist.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Patentanmeldung. Beispiel 1 ist eine Retimer-Vorrichtung, die Retimer-Logik zum Empfangen eines ersten Signals von einer ersten Vorrichtung und Regenerieren des ersten Signals zum Senden an eine zweite Vorrichtung und Empfangen eines zweiten Signals von der zweiten Vorrichtung und Regenerieren des zweiten Signals zum Senden an die erste Vorrichtung aufweist, wobei die erste Vorrichtung eine Prozessorvorrichtung aufweist. Die Retimer-Vorrichtung kann ferner eine Seitenband-Schnittstelle zum Verbinden mit der ersten Vorrichtung und Protokolllogik zum Überwachen des ersten Signals, Bestimmen, dass das erste Signal ein Muster aufweist, das in einem Protokoll definiert ist, um eine Protokolltätigkeit zu identifizieren, und bei der Durchführung der Protokolltätigkeit unter Verwendung der Seitenband-Schnittstelle teilzunehmen.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 aufweisen, wobei die Protokolltätigkeit die Entzerrung einer Verbindung aufweist, die die erste Vorrichtung, die zweite Vorrichtung und den Retimer aufweist, und die Retimer-Vorrichtung sich zwischen der ersten und der zweiten Vorrichtung in der Verbindung befindet.
  • Beispiel 3 kann den Gegenstand von Beispiel 2 aufweisen, wobei das erste Signal identifiziert, dass die Entzerrung der Verbindung durchzuführen ist, und die Protokolllogik ferner zum Empfangen eines Entzerrungssignals von der zweiten Vorrichtung, Bestimmen, ob Fehler in dem Entzerrungssignal vorhanden sind, und Erzeugen einer Metrik basierend darauf, ob Fehler in dem Entzerrungssignal vorhanden sind, vorgesehen ist, während die Seitenband-Schnittstelle verwendet wird, um die Metrik der ersten Vorrichtung bereitzustellen.
  • Beispiel 4 kann den Gegenstand von Beispiel 3 aufweisen, wobei das Entzerrungssignal eine erste Instanz des Entzerrungssignals aufweist und die Protokolllogik ferner zum Erzeugen einer zweiten Instanz des Entzerrungssignals ist, wobei die erste Instanz des Entzerrungssignals zum Vergleichen mit der zweiten Instanz des Entzerrungssignals vorgesehen ist, um zu bestimmen, ob Fehler in der ersten Instanz des Entzerrungssignals vorhanden sind; Senden der zweiten Instanz des Entzerrungssignals an die erste Vorrichtung über die Verbindung; Zugreifen auf Feedback-Daten von der ersten Vorrichtung; und Anpassen von Senderparametern der Retimer-Vorrichtung basierend auf den Feedback-Daten.
  • Beispiel 5 kann den Gegenstand von Beispiel 4 aufweisen, wobei die Feedback-Daten über den Seitenbandkanal empfangen werden.
  • Beispiel 6 kann den Gegenstand von einem der Beispiele 4 bis 5 aufweisen, wobei die Feedback-Daten während eines langsamen Modus empfangen werden.
  • Beispiel 7 kann den Gegenstand von einem der Beispiele 4 bis 6 aufweisen, wobei die Protokolllogik einen Signalgenerator zum Erzeugen von Instanzen des Entzerrungssignals aufweist.
  • Beispiel 8 kann den Gegenstand von Beispiel 7 aufweisen, wobei das Entzerrungssignal eine bestimmte Pseudozufalls-Bit-Folge (Pseudorandom Bit Sequence - PRBS) aufweist und der Signalgenerator ein Linear-Feedback Shift Register (LFSR) aufweist.
  • Beispiel 9 kann den Gegenstand von einem der Beispiele 4 bis 8 aufweisen, wobei die Protokolllogik ferner zum Empfangen einer dritten Instanz des Entzerrungssignals von der ersten Vorrichtung, Bestimmen, ob Fehler in der dritten Instanz des Entzerrungssignals vorhanden sind, und Erzeugen einer zweiten Metrik basierend darauf, ob Fehler in der dritten Instanz des Entzerrungssignals vorhanden sind, vorgesehen ist.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 aufweisen, wobei die Senderparameter einem ersten Sender der Retimer-Vorrichtung zum Senden von Daten an die erste Vorrichtung entsprechen, ein zweiter Sender der Retimer-Vorrichtung zum Senden von Daten an die zweite Vorrichtung vorgesehen ist, und die Protokolllogik ferner zum Senden einer vierten Instanz des Entzerrungssignals an die zweite Vorrichtung, Zugreifen auf eine zweite Metrik, die durch die zweite Vorrichtung basierend auf der vierten Instanz des Entzerrungssignals erzeugt wird, und Anpassen von Senderparametern, die dem zweiten Sender entsprechen, basierend auf der zweiten Metrik vorgesehen ist.
  • Beispiel 11 kann den Gegenstand von einem der Beispiele 1 bis 10 aufweisen, wobei die Protokolllogik Empfängerdetektionslogik zum Detektieren, dass sich eine andere Vorrichtung mit einem Sender der Retimer-Einheit verbindet, und selektiven Aktivieren eines Abschlusses eines Empfängers der Retimer-Vorrichtung vorgesehen ist, wobei der Abschluss des Empfängers dazu vorgesehen ist, der ersten Vorrichtung anzugeben, dass die andere Vorrichtung mit dem Sender der Retimer-Vorrichtung verbunden ist und die andere Vorrichtung die zweite Vorrichtung aufweist.
  • Beispiel 12 kann den Gegenstand von Beispiel 11 aufweisen, wobei die Empfängerdetektionslogik ferner zum Eintreten in einen Empfängerdetektionszustand vorgesehen ist, der in einer Zustandsmaschine des Protokolls definiert ist, und detektiert, dass die andere Vorrichtung sich während des Empfängerdetektionszustands mit dem Sender verbindet.
  • Beispiel 13 kann den Gegenstand von einem der Beispiele 1 bis 12 aufweisen, wobei die Protokolllogik zum Unterstützen mehrerer Protokolltätigkeit für mehrere unterschiedliche Protokolle vorgesehen ist.
  • Beispiel 14 kann den Gegenstand von einem der Beispiele 1 bis 13 aufweisen, wobei die Protokolllogik weniger als einen gesamten Protokollstapel des Protokolls aufweist.
  • Beispiel 15 kann den Gegenstand von einem der Beispiele 1 bis 14 aufweisen, wobei die Protokolltätigkeit eine Geschwindigkeitsänderung aufweist und der Retimer zum Betrieb einer unterschiedlichen Geschwindigkeit als ein Ergebnis der Geschwindigkeitsänderung vorgesehen ist.
  • Beispiel 16 ist ein Verfahren, das Folgendes aufweist: Empfangen eines Signals von einem Prozessor an einem Retimer auf einer Verbindung; Regenerieren des Signals; Senden des regenerierten Signals an eine andere Vorrichtung auf der Verbindung; Decodieren des Signals zum Detektieren eines protokollspezifischen Ereignisses von dem Signal; und Bilden einer Schnittstelle mit dem Prozessor unter Verwendung eines Seitenbandkanals, um an der Durchführung des protokollspezifischen Ereignisses teilzunehmen.
  • Beispiel 17 ist eine Vorrichtung, die eine Prozessorvorrichtung, die einen Protokollstapel aufweist, der Physical Layer Logik zum Durchführen von einem oder mehreren protokollspezifischen Ereignissen, eine Seitenband-Schnittstelle zum Bilden einer Schnittstelle mit einem oder mehreren Retimern auf einer Verbindung, und Hilfslogik zum Durchführen von mindestens einem Abschnitt von einem bestimmten von den protokollspezifischen Ereignissen im Auftrag des Retimers aufweist.
  • Beispiel 18 kann den Gegenstand von Beispiel 17 aufweisen, der ferner den Retimer und eine zweite Vorrichtung aufweist.
  • Beispiel 19 kann den Gegenstand von Beispiel 18 aufweisen, wobei die zweite Vorrichtung eine zweite Prozessorvorrichtung aufweist.
  • Beispiel 20 kann den Gegenstand von einem der Beispiele 17 bis 19 aufweisen, wobei der Retimer eine Teilmenge von Physical Layer Logik des Protokollstapels aufweist und die Hilfslogik zum Ergänzen der Teilmenge der Physical Layer Logik des Retimers vorgesehen ist.
  • Wenn in dieser Beschreibung der Ausdruck „eine Ausführungsform“ verwendet wird, ist damit durchweg gemeint, dass ein/e bestimmte/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. So betreffen die Erwähnungen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen über diese Beschreibung hinweg nicht notwendigerweise alle dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen auf irgendeine zweckmäßige Art und Weise kombiniert werden.
  • In der vorhergehenden Patentbeschreibung wurde eine detaillierte Beschreibung unter Bezugnahme auf spezifische Ausführungsbeispiele gegeben. Es ist indes offensichtlich, dass verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne vom breiteren Geist und Schutzumfang der Erfindung, wie in den beiliegenden Ansprüchen dargelegt, abzuweichen. Die Patentbeschreibung und Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht in einem einschränkenden Sinne zu betrachten. Ferner bezieht sich die vorhergehende Verwendung einer Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf unterschiedliche und getrennte Ausführungsformen sowie potenziell auf die gleiche Ausführungsform beziehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15387802 [0001]

Claims (21)

  1. Retimer-Vorrichtung, die Folgendes aufweist: Retimer-Logik zum: Empfangen eines ersten Signals von einer ersten Vorrichtung und Regenerieren des ersten Signals zum Senden an eine zweite Vorrichtung; und Empfangen eines zweiten Signals von der zweiten Vorrichtung und Regenerieren des zweiten Signals zum Senden an die erste Vorrichtung, wobei die erste Vorrichtung eine Prozessorvorrichtung aufweist; eine Seitenband-Schnittstelle zum Verbinden mit der ersten Vorrichtung; und Protokolllogik zum: Überwachen des ersten Signals; Bestimmen, dass das erste Signal ein Muster aufweist, das in einem Protokoll definiert ist, um eine Protokolltätigkeit zu identifizieren, und Teilnehmen an der Durchführung der Protokolltätigkeit unter Verwendung der Seitenband-Schnittstelle.
  2. Retimer-Vorrichtung nach Anspruch 1, wobei die Protokolltätigkeit die Entzerrung einer Verbindung aufweist, die die erste Vorrichtung, die zweite Vorrichtung und den Retimer aufweist, und die Retimer-Vorrichtung sich zwischen der ersten und der zweiten Vorrichtung in der Verbindung befindet.
  3. Retimer-Vorrichtung nach Anspruch 2, wobei das erste Signal identifiziert, dass die Entzerrung der Verbindung durchzuführen ist, und die Protokolllogik ferner zum Empfangen eines Entzerrungssignals von der zweiten Vorrichtung, Bestimmen, ob Fehler in dem Entzerrungssignal vorhanden sind, und Erzeugen einer Metrik basierend darauf, ob Fehler in dem Entzerrungssignal vorhanden sind, vorgesehen ist, wobei die Seitenband-Schnittstelle verwendet wird, um die Metrik der ersten Vorrichtung bereitzustellen.
  4. Retimer-Vorrichtung nach Anspruch 3, wobei das Entzerrungssignal eine erste Instanz des Entzerrungssignals aufweist und die Protokolllogik ferner zum Erzeugen einer zweiten Instanz des Entzerrungssignals vorgesehen ist, wobei die erste Instanz des Entzerrungssignals mit der zweiten Instanz des Entzerrungssignals zu vergleichen ist, um zu bestimmen, ob Fehler in der ersten Instanz des Entzerrungssignals vorhanden sind; Senden der zweiten Instanz des Entzerrungssignals an die erste Vorrichtung über die Verbindung; Zugreifen auf Feedback-Daten von der ersten Vorrichtung; und Anpassen von Senderparametern der Retimer-Vorrichtung basierend auf den Feedback-Daten.
  5. Retimer-Vorrichtung nach Anspruch 4, wobei die Feedback-Daten über den Seitenbandkanal empfangen werden.
  6. Retimer-Vorrichtung nach einem der Ansprüche 4 bis 5, wobei die Feedback-Daten während eines langsamen Modus empfangen werden.
  7. Retimer-Vorrichtung nach einem der Ansprüche 4 bis 6, wobei die Protokolllogik einen Signalgenerator zum Erzeugen von Instanzen des Entzerrungssignals aufweist.
  8. Retimer-Vorrichtung nach Anspruch 7, wobei das Entzerrungssignal eine bestimmte Pseudozufalls-Bit-Folge (Pseudorandom Bit Sequence - PRBS) aufweist und der Signalgenerator ein Linear-Feedback Shift Register (LFSR) aufweist.
  9. Retimer-Vorrichtung nach einem der Ansprüche 4 bis 8, wobei die Protokolllogik ferner zum Empfangen einer dritten Instanz des Entzerrungssignals von der ersten Vorrichtung, Bestimmen, ob Fehler in der dritten Instanz des Entzerrungssignals vorhanden sind, und Erzeugen einer zweiten Metrik basierend darauf, ob Fehler in der dritten Instanz des Entzerrungssignals vorhanden sind, vorgesehen ist.
  10. Retimer-Vorrichtung nach Anspruch 9, wobei die Senderparameter einem ersten Sender der Retimer-Vorrichtung zum Senden von Daten an die erste Vorrichtung entsprechen, ein zweiter Sender der Retimer-Vorrichtung zum Senden von Daten an die zweite Vorrichtung vorgesehen ist, und die Protokolllogik ferner zum Senden einer vierten Instanz des Entzerrungssignals an die zweite Vorrichtung, Zugreifen auf eine zweite Metrik, die durch die zweite Vorrichtung basierend auf der vierten Instanz des Entzerrungssignals erzeugt wird, und Anpassen von Senderparametern, die dem zweiten Sender entsprechen, basierend auf der zweiten Metrik, vorgesehen ist.
  11. Retimer-Vorrichtung nach einem der Ansprüche 1 bis 10, wobei die Protokolllogik Empfängerdetektionslogik zum Detektieren, dass sich eine andere Vorrichtung mit einem Sender der Retimer-Vorrichtung verbindet, und selektiven Aktivieren eines Abschlusses eines Empfängers der Retimer-Vorrichtung vorgesehen ist, wobei der Abschluss des Empfängers dazu vorgesehen ist, der ersten Vorrichtung anzugeben, dass die andere Vorrichtung mit dem Sender der Retimer-Vorrichtung verbunden ist und die andere Vorrichtung die zweite Vorrichtung aufweist.
  12. Retimer-Vorrichtung nach Anspruch 11, wobei die Empfängerdetektionslogik ferner zum Eintreten in einen Empfängerdetektionszustand vorgesehen ist, der in einer Zustandsmaschine des Protokolls definiert ist, und detektiert, dass die andere Vorrichtung sich während des Empfängerdetektionszustands mit dem Sender verbindet.
  13. Retimer-Vorrichtung nach einem der Ansprüche 1 bis 12, wobei die Protokolllogik zum Unterstützen mehrerer Protokolltätigkeiten für mehrere unterschiedliche Protokolle vorgesehen ist.
  14. Retimer-Vorrichtung nach einem der Ansprüche 1 bis 13, wobei die Protokolllogik weniger als einen gesamten Protokollstapel des Protokolls aufweist.
  15. Retimer-Vorrichtung nach einem der Ansprüche 1 bis 14, wobei die Protokolltätigkeit eine Geschwindigkeitsänderung aufweist und der Retimer zum Betrieb einer unterschiedlichen Geschwindigkeit als ein Ergebnis der Geschwindigkeitsänderung vorgesehen ist.
  16. Verfahren, das Folgendes aufweist: Empfangen eines Signals von einem Prozessor an einem Retimer auf einer Verbindung; Regenerieren des Signals; Senden des regenerierten Signals an eine andere Vorrichtung auf der Verbindung; Decodieren des Signals zum Detektieren eines protokollspezifischen Ereignisses von dem Signal; und Bilden einer Schnittstelle mit dem Prozessor unter Verwendung eines Seitenbandkanals, um an der Durchführung des protokollspezifischen Ereignisses teilzunehmen.
  17. System, das Mittel zum Durchführen des Verfahrens nach Anspruch 16 aufweist.
  18. Vorrichtung, die Folgendes aufweist: eine Prozessorvorrichtung, die Folgendes aufweist: einen Protokollstapel, der Physical Layer Logik zum Durchführen von einem oder mehreren protokollspezifischen Ereignissen aufweist; eine Seitenband-Schnittstelle zum Bilden einer Schnittstelle mit einem oder mehreren Retimern auf einer Verbindung; und Hilfslogik zum Durchführen von mindestens einem Abschnitt von einem bestimmten von den protokollspezifischen Ereignissen im Auftrag des Retimers.
  19. Vorrichtung nach Anspruch 18, die ferner den Retimer und eine zweite Vorrichtung aufweist.
  20. Vorrichtung nach Anspruch 19, wobei die zweite Vorrichtung eine zweite Prozessorvorrichtung aufweist.
  21. Vorrichtung nach einem der Ansprüche 18 bis 20, wobei der Retimer eine Teilmenge von Physical Layer Logik des Protokollstapels aufweist und die Hilfslogik zum Ergänzen der Teilmenge von Physical Layer Logik des Retimers vorgesehen ist.
DE112017006523.2T 2016-12-22 2017-11-20 Retimer mit kurzer latenzzeit Pending DE112017006523T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/387,802 US10747688B2 (en) 2016-12-22 2016-12-22 Low latency retimer
US15/387,802 2016-12-22
PCT/US2017/062452 WO2018118304A1 (en) 2016-12-22 2017-11-20 Low latency retimer

Publications (1)

Publication Number Publication Date
DE112017006523T5 true DE112017006523T5 (de) 2019-09-26

Family

ID=62627031

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017006523.2T Pending DE112017006523T5 (de) 2016-12-22 2017-11-20 Retimer mit kurzer latenzzeit

Country Status (3)

Country Link
US (1) US10747688B2 (de)
DE (1) DE112017006523T5 (de)
WO (1) WO2018118304A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9450686B2 (en) * 2011-06-30 2016-09-20 Viavi Solutions Inc. Testing an upstream path of a cable network
US10789201B2 (en) * 2017-03-03 2020-09-29 Intel Corporation High performance interconnect
CN108920173B (zh) * 2018-05-23 2021-01-05 华为技术有限公司 一种配置均衡时间的方法、芯片和通信系统
US10623101B1 (en) 2018-08-07 2020-04-14 Hewlett Packard Enterprise Development Lp Hyperscale photonics connectivity solution
US10659337B2 (en) * 2018-08-28 2020-05-19 Inphi Corporation Retimer data communication modules
US10541841B1 (en) * 2018-09-13 2020-01-21 Advanced Micro Devices, Inc. Hardware transmit equalization for high speed
US10757041B2 (en) * 2018-12-03 2020-08-25 Hewlett Packard Enterprise Development Lp Full server-level redundancy using a single network interface controller(NIC) and a single NIC card
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11061849B2 (en) 2019-10-17 2021-07-13 Dell Products L.P. Adaptive transmitter preset mechanism in PCIe link equalization procedure
WO2021102688A1 (zh) * 2019-11-26 2021-06-03 华为技术有限公司 一种数据同步的方法以及装置
US11886312B2 (en) 2020-04-07 2024-01-30 Intel Corporation Characterizing error correlation based on error logging for computer buses
US11971841B2 (en) * 2020-05-21 2024-04-30 Intel Corporation Link layer-PHY interface adapter
US11308022B2 (en) * 2020-05-27 2022-04-19 Dell Products, L.P. Support for common motherboard configuration for USB retiming
US20210013999A1 (en) * 2020-06-04 2021-01-14 Intel Corporation Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses
KR102559387B1 (ko) * 2021-05-25 2023-07-26 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102635457B1 (ko) 2021-05-24 2024-02-13 에스케이하이닉스 주식회사 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US11960367B2 (en) 2021-05-24 2024-04-16 SK Hynix Inc. Peripheral component interconnect express device and operating method thereof
CN114003542A (zh) * 2021-11-09 2022-02-01 合肥联宝信息技术有限公司 信号调节器、信号调节方法、电子设备和存储介质
US11907004B2 (en) * 2022-06-27 2024-02-20 eTopus Technology Inc. Configurable transmitter device based on data rate

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4769777A (en) * 1986-06-25 1988-09-06 General Electric Company Unpredictable bit stream generator
US7280589B2 (en) 2003-07-24 2007-10-09 Sun Microsystems, Inc. Source synchronous I/O bus retimer
US7564798B2 (en) 2003-08-27 2009-07-21 Finisar Corporation Methods and devices for testing and monitoring high speed communication networks
US20110179212A1 (en) 2010-01-20 2011-07-21 Charles Andrew Hartman Bus arbitration for sideband signals
US8645585B2 (en) 2011-06-10 2014-02-04 Nvidia Corporation System and method for dynamically configuring a serial data link in a display device
US9590836B2 (en) 2013-12-13 2017-03-07 Xetawave Llc System and method for digital sideband mitigation: advanced modulation in a narrow bandwidth RF channel
WO2015099733A1 (en) * 2013-12-26 2015-07-02 Intel Corporation Interconnect retimer enhancements
US9940298B2 (en) * 2014-03-17 2018-04-10 Texas Instruments Incorporated Signal conditioner discovery and control in a multi-segment data path
US9520989B2 (en) * 2014-07-28 2016-12-13 Texas Instruments Incorporated Phase detector and retimer for clock and data recovery circuits
US9559905B2 (en) * 2014-12-24 2017-01-31 Intel Corporation Type-C retimer state machine and a protocol for inband control and configuration
US10498561B2 (en) * 2015-08-06 2019-12-03 Intel Corporation Adaptive equalization channel extension retimer link-up methodology
US10241953B2 (en) * 2015-08-07 2019-03-26 Qualcomm Incorporated Dynamic data-link selection over common physical interface
US9935839B2 (en) * 2016-03-03 2018-04-03 Parade Technologies, Ltd. Display data channel snooping scheme for retimers

Also Published As

Publication number Publication date
US20180181502A1 (en) 2018-06-28
US10747688B2 (en) 2020-08-18
WO2018118304A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112013007751B3 (de) Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE102018128569A1 (de) Nebensprecherzeugung in einem link für mehrere spuren während des spurtestens
DE112015006944B4 (de) Einrichtung, System und Verfahren zum Ermöglichen einer Kommunikation über eine Verbindung mit einer Vorrichtung außerhalb einer Baugruppe
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE112016003233T5 (de) Redriver-verbindungsprüfung
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE112017006687T5 (de) Hochgeschwindigkeitsverbindungen mit kanalerweiterung
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE102018005753A1 (de) Serdes link training
DE112018001138T5 (de) Hochleistungsverbindung
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112013007734T5 (de) Mehrchipgehäuseverbindung
DE112016003222T5 (de) Hochleistungsfähiger repeater
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE112017004963T5 (de) Spannunsgmodulierte steuer-lane
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle