DE112016003233T5 - Redriver-verbindungsprüfung - Google Patents

Redriver-verbindungsprüfung Download PDF

Info

Publication number
DE112016003233T5
DE112016003233T5 DE112016003233.1T DE112016003233T DE112016003233T5 DE 112016003233 T5 DE112016003233 T5 DE 112016003233T5 DE 112016003233 T DE112016003233 T DE 112016003233T DE 112016003233 T5 DE112016003233 T5 DE 112016003233T5
Authority
DE
Germany
Prior art keywords
redriver
binary sequence
signal
connection
state
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
DE112016003233.1T
Other languages
English (en)
Inventor
Venkatraman Iyer
Fulvio Spagna
Debendra Das Sharma
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112016003233T5 publication Critical patent/DE112016003233T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/24Testing correct operation
    • H04L1/241Testing correct operation using pseudo-errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/20Repeater circuits; Relay circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/24Testing correct operation
    • H04L1/242Testing correct operation by comparing a transmitted test signal with a locally generated replica
    • H04L1/243Testing correct operation by comparing a transmitted test signal with a locally generated replica at the transmitter, using a loop-back

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Transfer Systems (AREA)

Abstract

Es wird ein Redriver bereitgestellt, der einen Empfänger zum Empfangen eines Signals von einer ersten Vorrichtung, das einen Teil einer definierten Binärsequenz umfasst, einen Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seed für ein Linear-Rückkopplungsschieberegister (LFSR) aus der Binärsequenz, wobei das LFSR aus dem Seed eine erwartete Version der Binärsequenz erzeugen soll, und Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das LFSR erzeugt wird, umfasst.

Description

  • Die vorliegende Anmeldung beansprucht den Prioritätsnutzen der vorläufigen US-Patentanmeldung Nr. 62/193,865 , eingereicht am 17.7.2015 mit dem Titel „REDRIVER LINK TESTING“ und der nicht vorläufigen US-(Gebrauchs-)Patentanmeldung Nr. 14/866,925 , eingereicht am 26.9.2015 mit dem Titel „REDRIVER LINK TESTING“, die hiermit jeweils durch Bezugnahme vollständig aufgenommen werden.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der Computerentwicklung und spezieller Repeater.
  • STAND DER TECHNIK
  • Fortschritte bei der Halbleiterverarbeitung und dem Logikentwurf haben eine Vergrößerung der Menge an Logik gestattet, die auf integrierten Schaltungsvorrichtungen anwesend sein kann. Als Korollar haben sich Computersystemkonfigurationen aus einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren entwickelt, die auf einzelnen integrierten Schaltungen anwesend sind, sowie anderen Schnittstellen, die in solchen Prozessoren integriert sind. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzigen physischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Speicher, Controller-Hubs usw. umfassen kann.
  • Als Folge der größeren Möglichkeit, mehr Verarbeitungsleistung in kleineren Kapselungen unterzubringen, haben kleinere Datenverarbeitungsvorrichtungen an Popularität gewonnen. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte sind exponentiell gewachsen. Diese kleineren Vorrichtungen verlassen sich jedoch sowohl für Datenspeicherung und komplexe Verarbeitung, die den Formfaktor übersteigt, auf Server. Folglich hat auch die Nachfrage im Markt der hochleistungsfähigen Datenverarbeitung (d.h. Serverraum) zugenommen. Zum Beispiel liegt in modernen Servern typischerweise nicht nur ein einziger Prozessor mit mehreren Kernen vor, sondern auch mehrere physische Prozessoren (die auch als mehrere Sockets bezeichnet werden) zur Vergrößerung der Datenverarbeitungsleistung. Mit wachsender Verarbeitungsleistung zusammen mit der Anzahl von Vorrichtungen in einem Datenverarbeitungssystem wird die Kommunikation zwischen Sockets und anderen Vorrichtungen aber kritischer.
  • Signalrepeater und Redriverschaltungen können in einigen Systemen implementiert werden, um Begrenzungen bezüglich der physischen Kanallänge zu kompensieren. Zum Beispiel können Vorrichtungen eine begrenzte Ansteuerfähigkeit aufweisen, wodurch die Distanz begrenzt wird, über die Signale sicher angesteuert werden können. Ferner können einige Verbindungsstandards eine Begrenzung der physischen Länge einer Signalleitung spezifizieren. Eine Langdistanzleitung kann in zwei oder mehr Segmente aufgeteilt werden, mit einem Puffer oder Repeater zwischen Segmenten. Repeater können Retimer und Redriver umfassen.
  • Figurenliste
    • 1 zeigt eine vereinfachte Blockdarstellung eines Systems mit einem seriellen Punkt-zu-Punkt-Verbindungselement zum Verbinden von E/A-Vorrichtungen in einem Computersystem gemäß einer Ausführungsform;
    • 2 zeigt eine vereinfachte Blockdarstellung eines geschichteten Protokollstapels gemäß einer Ausführungsform;
    • 3 zeigt eine Ausführungsform eines Transaktionsdeskriptors.
    • 4 zeigt eine Ausführungsform einer seriellen Punkt-zu-Punkt-Verbindung.
    • 5 zeigt Ausführungsformen von potentiellen High-Performance-Interconnect- bzw. UPI-Systemkonfigurationen.
    • 6 zeigt eine Ausführungsform eines geschichteten Protokollstapels, der UPI zugeordnet ist.
    • 7 zeigt eine Darstellung eines beispielhaften Automaten.
    • 8 zeigt eine Darstellung einer beispielhaften elektrischen geordneten Menge.
    • 9 zeigt beispielhafte Steuersupersequenzen.
    • 10 zeigt einen Link-Layer-Datenstrom mit eingebetteten Steuerfenstern.
    • 11 zeigt eine vereinfachte Blockdarstellung einer Verbindung, die einen Redriver verwendet.
    • 12 zeigt eine vereinfachte Blockdarstellung einer beispielhaften Rückschleifenprozedur.
    • 13A-B zeigen vereinfachte Blockdarstellungen von beispielhaften Rückschleifenprozeduren, bei denen Verbindungen mit einem oder mehreren Redrivern beteiligt sind.
    • 14 zeigt eine vereinfachte Blockdarstellung einer Verbindung, die erweiterte Redriver-Vorrichtungen umfasst.
    • 15 zeigt ein vereinfachtes Schaltbild einer verbesserten Redriver-Logik.
    • 16 zeigt einen Graph eines Signalaugenmusters.
    • 17A-17B sind Flussdiagramme von beispielhaften Techniken, die dem Prüfen und Training von Verbindungen, die eine oder mehrere Redriver-Vorrichtungen benutzen, zugeordnet sind.
    • 18 zeigt eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem, das einen Mehrkernprozessor umfasst.
    • 19 zeigt eine andere Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem, das einen Mehrkemprozessor umfasst.
    • 20 zeigt eine Ausführungsform eines Blocks für ein Datenverarbeitungssystem, das mehrere Prozessor-Sockets umfasst.
  • Gleiche Bezugszahlen und Kennzeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele für spezifische Arten von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitekturdetails, spezifische Registerkonfigurationen, spezifische Anweisungstypen, spezifische Systemkomponenten, spezifische Prozessor-Pipelinestufen, spezifische Verbindungsschichten, spezifische Paket-/Transaktionskonfigurationen, spezifische Transaktionsnamen, spezifische Protokollaustauschvorgänge, spezifische Verbindungsbreiten, spezifische Implementierungen und Funktionsweisen usw., um ein umfassendes Verständnis der vorliegenden Offenbarung zu gewährleisten. Für Fachleute ist jedoch ersichtlich, dass diese spezifischen Einzelheiten nicht unbedingt eingesetzt werden müssen, um den Gegenstand der vorliegenden Offenbarung zu praktizieren. In anderen Fällen wurde ausführliche Beschreibung bekannter Komponenten oder Verfahren vermieden, wie etwa spezifischer und alternativer Prozessorarchitekturen, spezifischer Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmwarecode, Verbindungsfunktionsweise auf niedriger Ebene, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifischer Ausdruck von Algorithmen in Code, spezifische Herunterfahr- und Torschaltungstechniken/-logik und andere spezifische Betriebsdetails von Computersystemen, um die vorliegende Offenbarung nicht unnötigerweise zu verschleiern.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieeinsparung, Energieeffizienz, Verarbeitungseffizienz usw. in spezifischen integrierten Schaltungen, wie etwa in Datenverarbeitungsplattformen oder Mikroprozessoren, beschrieben werden können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und logischen Vorrichtungen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hier beschrieben werden, können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewandt werden, die auch aus solchen Merkmalen Nutzen ziehen können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Servercomputersystem, Desktop-Computersysteme, Laptops, Ultrabooks™ beschränkt, sondern können auch in anderen Vorrichtungen verwendet werden, wie etwa in Handheld-Vorrichtungen, Smartphones, Tablets, anderen Thin-Notebooks, SOC-Vorrichtungen (Systeme auf einem Chip) und eingebettete Anwendungen. Einige Beispiele für Handheld-Vorrichtungen wären Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, PDAs (Personal Digital Assistants) und Handheld-PCs. Hier können ähnliche Techniken für eine Hochleistungsverbindung angewandt werden, um in einer energiesparenden Verbindung die Leistungsfähigkeit zu steigern (oder auch nur Strom zu sparen). Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPC), Set-Top-Boxes, Netzwerk-Hubs, WAN-Switches (großflächiges Netzwerk) oder ein beliebiges anderes System, das die nachfolgend gelehrten Funktionen und Operationen ausführen kann. Außerdem sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Datenverarbeitungsvorrichtungen beschränkt, sondern können auch Softwareoptimierungen zur Energieeinsparung und -effizienz betreffen. Wie aus der nachfolgenden Beschreibung ohne Weiteres hervorgeht, können die hier beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (gleichgültig, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) als für eine Zukunft der „grünen Technologie“, die mit Leistungsfähigkeitsbetrachtungen ausgeglichen ist, entscheidend betrachtet werden.
  • Mit fortschreitenden Datenverarbeitungssystemen werden die Komponenten darin komplexer. Die Komplexität der Verbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten hat auch zugenommen, um sicherzustellen, dass der Bandbreitenbedarf für optimalen Komponentenbetrieb erfüllt wird. Ferner verlangen verschiedene Marktsegmente verschiedene Aspekte von Verbindungsarchitekturen, um dem jeweiligen Markt gerecht zu werden. Zum Beispiel erfordern Server höhere Leistungsfähigkeit, während das Mobil-Ökosystem manchmal in der Lage ist, Gesamtleistungsfähigkeit zugunsten von Stromersparnissen aufzuopfern. Ein singulärer Zweck der meisten Koppelfelder besteht jedoch darin, die höchstmögliche Leistungsfähigkeit mit maximaler Stromersparnis bereitzustellen. Ferner können vielfältige verschiedene Verbindungselemente potentiell aus dem hier beschriebenen Gegenstand Nutzen ziehen.
  • Die Koppelfeldarchitektur der PCIe-Verbindung (Peripheral Component Interconnect (PCI) Express) und die QPI-Koppelfeldarchitektur (QuickPath Interconnect) können unter anderen Beispielen potentiell unter anderen Beispielen gemäß einem oder mehreren hier beschriebenen Prinzipien verbessert werden. Ein primäres Ziel von PCIe ist zum Beispiel, Komponenten und Vorrichtungen von verschiedenen Herstellern zu ermöglichen, in einer offenen Architektur zusammenzuarbeiten, wodurch mehrere Marktsegmente überspannt werden; Clients (Desktops und Mobil), Server (Standard und Unternehmen) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist eine hochleistungsfähige Vielzweck-E/A-Verbindung, die für vielfältige zukünftige Datenverarbeitungs- und Kommunikationsplattformen definiert wird. Einige PCI-Attribute, wie etwa sein Benutzungsmodell, Lade-Speicher-Architektur und Softwareschnittstellen, wurden mittels seiner Revisionen unterhalten, während vorherige Parallelbusimplementierungen durch eine hochskalierbare vollserielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Vorteile in Punkt-zu-Punkt-Verbindungen, Technologie auf Switch-Basis und paketiertem Protokoll aus, um neue Grade der Leistungsfähigkeit und Merkmale abzuliefern. Powermanagement, QoS (Quality of Service), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerumgang zählen zu einigen der fortschrittlichen Merkmalen, die durch PCI Express unterstützt werden. Obwohl die primäre Besprechung hier in Bezug auf eine neue hochleistungsfähige Verbindungs- bzw. UPI-Architektur erfolgt, können Aspekte der hier beschriebenen Offenbarung auf andere Verbindungsarchitekturen angewandt werden, wie etwa eine PCIe-kompatible Architektur, eine QPI-kompatible Architektur, eine MIPI-kompatible Architektur, eine hochleistungsfähige Architektur oder eine andere bekannte Verbindungsarchitektur.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform eines Koppelfelds dargestellt, das aus Punkt-zu-Punkt-Verbindungen besteht, die eine Menge von Komponenten verbinden. Das System 100 umfasst einen Prozessor 105 und Systemspeicher 110, der mit dem Controller-Hub 115 gekoppelt ist. Der Prozessor 105 kann ein beliebiges Verarbeitungselement umfassen, wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 105 ist mittels des FSB (Front-Side Bus) 106 mit dem Controller-Hub 115 gekoppelt. Bei einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Verbindung, wie nachfolgend beschrieben. Bei einer anderen Ausführungsform umfasst die Verbindung 106 eine serielle Differenz-Verbindungsarchitektur, die mit verschiedenen Verbindungsstandards kompatibel ist. Eine oder mehrere Komponenten des Systems 100 können mit Logik versehen werden, um die hier beschriebenen Merkmale zu implementieren.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung, wie etwa Direktzugriffsspeicher (RAM), nichtflüchtigen bzw. NV-Speicher oder einen anderen Speicher, der Vorrichtungen in dem System 100 zugänglich ist. Der Systemspeicher 110 ist mittels der Speicherschnittstelle 116 mit dem Controller-Hub 115 gekoppelt. Beispiele für eine Speicherschnittstelle wären eine Doppeldatenraten- bzw. DDR-Speicherschnittstelle, eine Zweikanal-DDR-Speicherschnittstelle und eine dynamische RAM- bzw. DRAM-Speicherschnittstelle.
  • Bei einer Ausführungsform kann der Controller-Hub 115 einen Wurzel-Hub, Wurzelkomplex oder Wurzel-Controller umfassen, wie etwa in einer PCIe-Verbindungshierarchie. Beispiele für den Controller-Hub 115 wären ein Chipsatz, ein MCH (Memory Controller Hub), eine Northbridge, ein ICH (Interconnect Controller Hub), eine Southbridge und ein Wurzelcontroller/-Hub. Der Ausdruck Chipsatz bezieht sich oft auf zwei physisch getrennte Controller-Hubs, z.B. einen MCH (Memory Controller Hub), der mit einem ICH (Interconnect Controller Hub) gekoppelt ist. Man beachte, dass derzeitige Systeme oft den mit dem Prozessor 105 integrierten MCH umfassen, während der Controller 115 mit E/A-Vorrichtungen auf ähnlich Weise wie nachfolgend beschrieben kommunizieren soll. Bei einigen Ausführungsformen wird gegebenenfalls Peer-to-Peer-Routing mittels des Wurzelkomplexes 115 unterstützt.
  • Der Controller-Hub 115 ist hier mittels der seriellen Verbindung 119 mit dem Switch/der Brücke 120 gekoppelt. Eingabe-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, können einen geschichteten Protokollstapel umfassen/implementieren, um Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. Bei einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 gekoppelt werden.
  • Der Switch/die Brücke 120 routet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d.h. eine Hierarchie hinauf in Richtung eines Wurzelkomplexes zum Controller-Hub 115 und stromabwärts, d.h. eine Hierarchie hinunter von einem Wurzelcontroller weg von dem Prozessor 105 oder Systemspeicher 110 zu der Vorrichtung 125. Der Switch 120 wird bei einer Ausführungsform als logische Baugruppe mehrerer virtueller Brückenvorrichtungen von PCI zu PCI bezeichnet. Die Vorrichtung 125 umfasst eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie etwa eine E/A-Vorrichtung, ein NIC (Network Interface Controller), eine Zusatzkarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speicherungsvorrichtung, eine CD-/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speicherungsvorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabevorrichtungen. Im PCIe-Sprachgebrauch wird eine solche Vorrichtung oft als Endpunkt bezeichnet. Obwohl es nicht spezifisch gezeigt ist, kann die Vorrichtung 125 eine Brücke (z.B. eine Brücke von PCIe zu PCI/PCI-X) unterstützen, um veraltete oder andere Versionen von Vorrichtungen oder Verbindungskoppelfeldern, die durch solche Vorrichtungen unterstützt werden, zu unterstützen.
  • Der Grafikbeschleuniger 130 kann auch mittels der seriellen Verbindung 132 mit dem Controller-Hub 115 gekoppelt sein. Bei einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und dementsprechend die E/A-Vorrichtung 125 wird dann mit dem ICH gekoppelt. Außerdem sollen E/A-Module 131 und 118 einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich wie bei der obigen MCH-Besprechung können ein Grafikcontroller oder der Grafikbeschleuniger 130 selbst in dem Prozessor 105 integriert sein.
  • Nunmehr mit Bezug auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 kann eine beliebige Form von geschichtetem Kommunikationsstapel umfassen, wie etwa einen QPI-Stapel, einen PCIe-Stapel, einen Stapel der hochleistungsfähigen Datenverarbeitungsverbindung der nächsten Generation (UPI) oder einen anderen geschichteten Stapel. Bei einer Ausführungsform kann der Protokollstapel 200 Transaktionsschicht 205, Sicherungsschicht 210 und Bitübertragungsschicht 220 umfassen. Eine Schnittstelle, wie etwa die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 repräsentiert sein. Repräsentation als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle zum Implementieren/Enthalten eines Protokollstapels bezeichnet werden.
  • Zum Übermitteln von Informationen zwischen Komponenten können Pakete verwendet werden. Pakete können in der Transaktionsschicht 205 und der Sicherungsschicht 210 gebildet werden, um die Informationen von der Sendekomponente zur Empfangskomponente zu führen. Während die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die verwendet werden, um in diesen Schichten mit Paketen umzugehen. Auf der Empfangsseite tritt der umgekehrte Prozess auf, und Pakete werden aus ihrer Repräsentation der Bitübertragungsschicht 220 in die Repräsentation der Sicherungsschicht 210 transformiert, und letztendlich (für Transaktionsschichtpakete) in die Form, die durch die Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann.
  • Bei einer Ausführungsform kann die Transaktionsschicht 205 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Verbindungsarchitektur, wie etwa der Sicherungsschicht 210 und der Bitübertragungsschicht 220, bereitstellen. In dieser Hinsicht kann eine Hauptverantwortung der Transaktionsschicht 205 das Zusammenbauen und Auseinanderbauen von Paketen (d.h. Transaktionsschichtpaketen oder TLP) umfassen. Die Übersetzungsschicht 205 kann auch auf Kredit basierende Flusssteuerung für TLP verwalten. Bei einigen Implementierungen können aufgeteilte Transaktionen verwendet werden, d.h., Transaktionen mit zeitlich getrennter Anforderung und Antwort, wodurch eine Verbindung anderen Verkehr führen kann, während die Zielvorrichtung Daten für die Antwort sammelt, unter anderen Beispielen.
  • Die auf Kredit basierende Flusssteuerung kann verwendet werden, um virtuelle Kanäle und Netzwerke unter Verwendung des Verbindungskoppelfelds zu realisieren. In einem Beispiel kann eine Vorrichtung eine Anfangskreditmenge für jeden der Empfangspuffer in der Transaktionsschicht 205 ankündigen. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie etwa der Controller-Hub 115 in 1, kann die Anzahl der durch jedes TLP verbrauchten Kredite zählen. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Bei Empfang einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Beispiel für einen Vorteil eines solchen Kreditschemas besteht darin, dass die Latenz der Kreditrückgabe die Leistungsfähigkeit nicht beeinträchtigt, so lange die Kreditgrenze nicht angetroffen wird, neben anderen potentiellen Vorteilen.
  • Bei einer Ausführungsform können vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, einen Eingabe-/Ausgabeadressenraum und einen Nachrichtenadressenraum umfassen. Speicherraumtransaktionen umfassen Leseanforderungen und/oder Schreibanforderungen zum Transfer von Daten zu/von einem speicherabgebildeten Ort. Bei einer Ausführungsform können Speicherraumtransaktionen zwei verschiedene Adressformate verwenden, z.B. ein kurzes Adressenformat, wie etwa eine 32-Bit-Adresse, oder ein langes Adressenformat, wie etwa eine 64-Bit-Adresse. Mit Konfigurationsraumtransaktionen kann man auf den Konfigurationsraum verschiedener mit der Verbindung verbundener Vorrichtungen zugreifen. Transaktionen an dem Konfigurationsraum können Leseanforderungen und Schreibanforderungen umfassen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) können auch definiert werden, um Inbandkommunikation zwischen Verbindungsagenten zu unterstützen. Bei einer beispielhaften Ausführungsform kann deshalb die Transaktionsschicht 205 Paketheader/Nutzinformationen 206 zusammenstellen.
  • Unter kurzer Bezugnahme auf 3 ist eine beispielhafte Ausführungsform eines Transaktionsschicht-Paketdeskriptors dargestellt. Bei einer Ausführungsform kann der Transaktionsdeskriptor 300 ein Mechanismus zum Führen von Transaktionsinformationen sein. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 Identifikation von Transaktionen in einem System. Andere potentielle Verwendungszwecke wären Verfolgung von Modifikationen von Vorgabetransaktionsanordnungen und Assoziation von Transaktionen mit Kanälen. Zum Beispiel kann der Transaktionsdeskriptor 300 ein Global-Kennungsfeld 302, ein Attributefeld 304 und ein Kanalkennungsfeld 306 umfassen. In dem dargestellten Beispiel ist das Global-Kennungsfeld 302 mit einem Lokal-Transaktionskennungsfeld 308 und einem Quellenkennungsfeld 310 abgebildet. Bei einer Ausführungsform ist die Global-Transaktionskennung 302 für alle ausstehenden Anforderungen einzigartig.
  • Gemäß einer Implementierung ist das Lokal-Transaktionskennungsfeld 308 ein durch einen anfordernden Agenten erzeugtes Feld und kann für alle ausstehenden Anforderungen, die einen Abschluss für diesen anfordernden Agenten erfordern, einzigartig sein. Ferner identifiziert in diesem Beispiel die Quellenkennung 310 eindeutig den Anfordereragenten in einer Verbindungshierarchie. Zusammen mit der Quellen-ID 310 stellt dementsprechend das Lokal-Transaktionskennungsfeld 308 globale Identifikation einer Transaktion in einer Hierarchiedomäne bereit.
  • Das Attributefeld 304 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributefeld 304 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die Modifikation der Vorgabehandhabung von Transaktionen erlaubt. Bei einer Ausführungsform umfasst das Attributefeld 304 ein Prioritätsfeld 312, ein Reserviert-Feld 314, ein Ordnungsfeld 316 und ein No-Snoop-Feld 318. Hier kann das Prioritätsteilfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das Reserviertes-Attribut-Feld 314 wird für zukünftige oder herstellerdefinierte Benutzung reserviert gelassen. Mögliche Benutzungsmodelle, die Priorität oder Sicherheitsattribute verwenden, können unter Verwendung des Reserviertes-Attribut-Felds implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die die Art von Ordnung vermitteln, die Vorgabeordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Ordnungsattribut „0“, dass Vorgabeordnungsregeln gelten sollen, wobei ein Ordnungsattribut „1“ lockere Ordnung bedeutet, wobei Schreibvorgänge an Schreibvorgängen in derselben Richtung vorbeikommen können und Leseabschlüsse an Schreibvorgängen in derselben Richtung vorbeikommen können. Mit dem Snoop-Attributfeld 318 wird bestimmt, ob Transaktionen gesnoopt werden. Wie gezeigt identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Wieder mit Bezug auf die Besprechung von 2 kann eine Link-Schicht 210, die auch als Sicherungsschicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220 wirken. Bei einer Ausführungsform ist eine Verantwortung der Sicherungsschicht 210 die Bereitstellung eines zuverlässigen Mechanismus zum Austausch von Transaktionsschichtpaketen (TLP) zwischen zwei Komponenten auf einer Verbindung. Eine Seite der Sicherungsschicht 210 nimmt durch die Transaktionsschicht 205 zusammengestellte TLP an, wendet die Paketsequenzkennung 211, d.h., eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlerdetektionscode, d.h. CRC 212, und wendet diesen an und leitet die modifizierten TLP zu der Bitübertragungsschicht 220 zur Übertragung über eine physische zu einer externen Vorrichtung.
  • In einem Beispiel umfasst die Bitübertragungsschicht 220 einen logischen Teilblock 221 und elektrischen Teilblock 222 zum physischen Senden eines Pakets zu einer externen Vorrichtung. Der logische Teilblock 221 ist hier für die „digitalen“ Funktionen der Bitübertragungsschicht 221 verantwortlich. In dieser Hinsicht kann der logische Teilblock einen Sendeteil zum Erstellen von abgehenden Informationen zur Übertragung durch den physischen Teilblock 222 und einen Empfängerteil zum Identifizieren und Aufbereiten von empfangenen Informationen vor dem Weiterleiten dieser zur Sicherungsschicht 210 umfassen.
  • Der physische Block 222 umfasst einen Sender und einen Empfänger. Der Sender erhält von dem logischen Teilblock 221 Symbole, die der Sender serialisiert und weiter zu einer externen Vorrichtung sendet. Der Empfänger erhält serialisierte Symbole von einer externen Vorrichtung und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird deserialisiert und dem logischen Teilblock 221 zugeführt. Bei einer beispielhaften Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wobei 10-Bit-Symbole gesendet/empfangen werden. Hierbei werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 zu rahmen. Außerdem stellt in einem Beispiel der Empfänger auch einen aus dem ankommenden seriellen Strom wiederhergestellten Symboltakt wieder her.
  • Obwohl die Transaktionsschicht 205, die Sicherungsschicht 210 und die physische Schicht 220 in Bezug auf eine spezifische Ausführungsform eines Protokollstapels (wie etwa eines PCIe-Protokollstapels) besprochen werden, ist wie oben angegeben ein geschichteter Protokollstapel nicht darauf beschränkt. Tatsächlich kann jedes geschichtete Protokoll vorgesehen/implementiert werden und hier besprochene Merkmale verwenden. Beispielsweise kann ein Port/eine Schnittstelle, der bzw. die als ein geschichtetes Protokoll repräsentiert wird, (1) eine erste Schicht zum Zusammenstellen von Paketen, d.h., eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d.h. eine Sicherungsschicht; und eine dritte Schicht zum Senden der Pakete, d.h., eine Bitübertragungsschicht, umfassen. Als ein spezifisches Beispiel wird ein hochleistungsfähiges geschichtetes Verbindungsprotokoll wie hier beschrieben benutzt.
  • Als Nächstes wird unter Bezugnahme auf 4 eine beispielhafte Ausführungsform eines seriellen Punkt-zu-Punkt-Koppelfelds dargestellt. Eine serielle Punkt-zu-Punkt-Verbindung kann einen beliebigen Übertragungspfad zum Übertragen serieller Daten umfassen. Bei der gezeigten Ausführungsform kann eine Verbindung zwei differentiell angesteuerte Niederspannungs-Signalpaare umfassen: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend umfasst die Vorrichtung 405 Übertragungslogik 406 zum Senden von Daten zur Vorrichtung 410 und Empfangslogik 407 zum Empfangen von der Vorrichtung 410. Anders ausgedrückt sind zwei Übertragungspfade, d.h. die Pfade 416 und 417, und zwei Empfangspfade, d.h. die Pfade 418 und 419, in einigen Implementierungen einer Verbindung enthalten.
  • Ein Übertragungspfad bezieht sich auf einen beliebigen Pfad zum Übertragen von Daten, wie etwa eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie etwa der Vorrichtung 405 und der Vorrichtung 410, wird als Verbindung, wie etwa Verbindung 415 bezeichnet. Eine Verbindung kann eine Spur unterstützen - wobei jede Spur eine Menge von Differenz-Signalpaaren (ein Paar zur Übertragung, ein Paar zum Empfang) repräsentiert. Zur Skalierung von Bandbreite kann eine Verbindung mehrere Spuren aggregieren, die durch xN bezeichnet werden, wobei N eine beliebige unterstützte Verbindungsbreite ist, wie etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzpaar kann sich auf zwei Übertragungspfade zum Senden von Differenzsignalen beziehen, wie etwa die Leitungen 416 und 417. Wenn beispielsweise die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel wechselt, d.h. eine ansteigende Flanke, steuert sich die Leitung 417 von einem hohen Logikpegel auf einen niedrigen Logikpegel, d.h. eine fallende Flanke. Differenzsignale zeigen neben anderen beispielhaften Vorteilen potentiell bessere elektrische Eigenschaften, wie etwa bessere Signalintegrität, d.h. Übersprechen, Spannungsüberschwingen/-unterschwingen, Welligkeit, neben anderen beispielhaften Vorteilen. Dies erlaubt ein besseres Timingfenster, wodurch schnellere Übertragungsfrequenzen ermöglicht werden.
  • Bei einer Ausführungsform kann ein hochleistungsfähiges Verbindungselement wie UPI bereitgestellt werden. UPI kann ein Cache-kohärentes Verbindungselement der nächsten Generation auf Verbindungsbasis umfassen. Als ein Beispiel kann UPI in hochleistungsfähigen Datenverarbeitungsplattformen, wie etwa Workstations oder Servern, benutzt werden, einschließlich in Systemen, in denen PCIe oder ein anderes Verbindungsprotokoll typischerweise zum Verbinden von Prozessoren, Beschleunigern, E/A-Vorrichtungen und dergleichen verwendet wird. UPI ist jedoch nicht darauf beschränkt. Stattdessen kann UPI in beliebigen der hier beschriebenen Systeme oder Plattformen benutzt werden. Ferner können die entwickelten einzelnen Ideen auf andere Verbindungselemente und Plattformen angewandt werden, wie etwa PCIe, MIPI, QPI usw.
  • Zur Unterstützung mehrerer Vorrichtungen kann UPI bei einer beispielhaften Implementierung eine Agnostik bezüglich ISA (Instruction Set Architecture) umfassen (d.h. UPI kann in mehreren verschiedenen Vorrichtungen implementiert werden). In einem anderen Szenario kann UPI auch zur Verbindung von hochleistungsfähigen E/A-Vorrichtungen, und nicht nur Prozessoren oder Beschleunigern, verwendet werden. Zum Beispiel kann eine hochleistungsfähige PCIe-Vorrichtung mittels einer geeigneten Übersetzungsbrücke (d.h. UPI in PCIe) mit UPI gekoppelt werden. Außerdem können die UPI-Verbindungen auf verschiedene Weisen (z.B. Sterne, Ringe, Maschen usw.) von vielen auf UPI basierenden Vorrichtungen benutzt werden, wie etwa Prozessoren. 5 zeigt beispielhafte Implementierungen von mehreren potentiellen Mehrfach-Socket-Konfigurationen. Wie abgebildet kann eine Zwei-Socket-Konfiguration 505 zwei UPI-Verbindungen umfassen; bei anderen Implementierungen kann jedoch ein UPI-Verbindung benutzt werden. Für größere Topologien kann eine beliebige Konfiguration benutzt werden, solange eine Kennung (ID) zuweisbar ist und es eine gewisse Form von virtuellem Pfad gibt, neben anderen zusätzlichen Merkmalen oder Ersatzmerkmalen. Wie gezeigt weist in einem Beispiel eine Vier-Socket-Konfiguration 510 eine UPI-Verbindung von jedem Prozessor zu einem anderen auf. Aber in der in Konfiguration 515 gezeigten Acht-Socket-Implementierung ist nicht jedes Socket direkt mittels einer UPI-Verbindung mit jeder anderen verbunden. Wenn jedoch ein virtueller Pfad oder Kanal zwischen den Prozessoren existiert, wird die Konfiguration unterstützt. Ein Bereich unterstützter Prozessoren umfasst 2-32 in einer nativen Domäne. Höhere Anzahlen von Prozessoren können neben anderen Beispielen mittels Verwendung mehrerer Domänen oder anderer Verbindungselemente zwischen Knotensteuerungen erreicht werden.
  • Die UPI-Architektur umfasst eine Definition einer geschichteten Protokollarchitektur, darunter in einigen Beispielen Protokollschichten (kohärente, nichtkohärente und gegebenenfalls andere auf Speicher basierende Protokolle), eine Routingschicht, eine Sicherungsschicht und eine Bitübertragungsschicht. Ferner kann UPI Erweiterungen in Bezug auf Powermanager (wie etwa, neben anderen Beispielen, Leistungsregeleinheiten (PCU)), Entwurf für Prüfung und Debuggen (DFT), Fehlerhandhabung, Register, Sicherheit umfassen. 5 zeigt eine Ausführungsform eines beispielhaften geschichteten UPI-Protokollstapels. Bei einigen Implementierungen können mindestens einige der in 5 dargestellten Schichten optional sein. Jede Schicht behandelt ihren eigenen Grad an Granularität oder Quantum von Informationen (die Protokollschicht 605a,b mit Paketen 630, die Sicherungsschicht 610a,b mit Flits 635 und die Bitübertragungsschicht 605a,b mit Phits 640). Man beachte, dass ein Paket bei einigen Ausführungsformen auf der Basis der Implementierung partielle Flits, ein einziges Flit oder mehrere Flits umfassen kann.
  • Als ein erstes Beispiel umfasst eine Breite eines Phit 640 eine 1-zu-1-Abbildung der Verbindungsbreite auf Bit (z.B. umfasst eine 20-Bit-Verbindungsbreite ein Phit von 20 Bit usw.). Flits können eine größere Größe aufweisen, wie etwa 184, 192 oder 200 Bit. Man beachte, dass, wenn das Phit 640 20 Bit breit ist und die Größe des Flit 635 184 Bit ist, man eine Bruchzahl von Phits 640 braucht, um ein Flit 635 zu senden (z.B. 9,2 Phits mit 20 Bit zum Senden eines 184-Bit-Flit 635 oder 9,6 bei 20 Bit zum Senden eines 192-Bit-Flit, neben anderen Beispielen). Man beachte, dass Breiten der fundamentalen Verbindung in der Bitübertragungsschicht unterschiedlich sein können. Zum Beispiel kann die Anzahl der Spuren pro Richtung 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. umfassen. Bei einer Ausführungsform kann die Sicherungsschicht 610a,b mehrere Elemente verschiedener Transaktionen in ein einziges Flit einbetten, und ein oder mehrere Header (z.B. 1, 2, 3, 4) können in das Flit eingebettet werden. In einem Beispiel teilt UPI die Header in entsprechende Schlitze auf, damit mehrere Nachrichten in dem Flit für verschiedene Knoten bestimmt sein können.
  • Die Bitübertragungsschicht 605a,b kann bei einer Ausführungsform für den schnellen Transfer von Informationen auf dem physischen Medium (elektrisch oder optisch usw.) verantwortlich sein. Die physische Verbindung kann von Punkt zu Punkt zwischen zwei Sicherungsschichtentitäten, wie etwa der Schicht 605a und 605b, sein. Die Sicherungsschicht 610a,b kann die Bitübertragungsschicht 605a,b von den oberen Schichten aus abstrahieren und stellt die Fähigkeit zum zuverlässigen Transfer von Daten (sowie von Anforderungen) und Verwalten von Flusssteuerung zwischen zwei direkt verbundenen Entitäten bereit. Die Sicherungsschicht kann auch für das Virtualisieren des physischen Kanals in mehrere Kanäle und Nachrichtenklassen verantwortlich sein. Die Protokollschicht 620a,b verwendet die Sicherungsschicht 610a,b zum Abbilden von Protokollnachrichten auf entsprechende Nachrichtenklassen und virtuelle Kanäle, bevor sie zum Transfer über die physischen Verbindungen zur Bitübertragungsschicht 605a,b weitergeleitet werden. Die Sicherungsschicht 610a,b kann mehrere Nachrichten unterstützen, wie etwa, neben anderen Beispielen, eine Anforderung, Snoop, Antwort, Rückschreiben, nichtkohärente Daten.
  • Die Bitübertragungsschicht 605a,b (oder PHY) von UPI kann über der elektrischen Schicht (d.h. elektrischen Leitern, die zwei Komponenten verbinden) und unter der Sicherungsschicht 610a,b implementiert werden, wie in 6 dargestellt. Die Bitübertragungsschicht und entsprechende Logik kann in jedem Agenten residieren und verbindet die Sicherungsschichten in zwei Agenten (A und B) getrennt voneinander (z.B. auf Vorrichtungen auf jeder Seite einer Verbindung). Die lokalen und entfernten elektrischen Schichten werden durch physische Medien (z.B. Drähte, Leiter, optisch usw.) verbunden. Die Bitübertragungsschicht 605a,b weist bei einer Ausführungsform zwei Hauptphasen, Initialisierung und Betrieb, auf. Während der Initialisierung ist die Verbindung der Sicherungsschicht opak und Signalisierung kann eine Kombination von getimten Zuständen und Handshake-Ereignissen umfassen. Während des Betriebs ist die Verbindung der Sicherungsschicht transparent und die Signalisierung erfolgt mit einer Geschwindigkeit, wobei alle Spuren zusammen als eine einzige Verbindung arbeiten. Während der Betriebsphase transportiert die Bitübertragungsschicht Flits von Agent A zu Agent B und von Agent B zu Agent A. Die Verbindung wird auch als Link bezeichnet und abstrahiert einige physische Aspekte, wie etwa Medien, Breite und Geschwindigkeit von den Sicherungsschichten, während Flits und Steuerung/Status der aktuellen Konfiguration (z.B. Breite) mit der Sicherungsschicht ausgetauscht werden. Die Initialisierungsphase umfasst Nebenphasen, z.B. Abfrage, Konfiguration. Die Betriebsphase umfasst auch Nebenphasen (z.B. Verbindungsleistungsverwaltungszustände).
  • Bei einer Ausführungsform kann die Sicherungsschicht 610a,b so implementiert werden, dass zuverlässiger Datentransfer zwischen zwei Protokoll- oder Routingentitäten gewährleistet wird. Die Sicherungsschicht kann die Bitübertragungsschicht 605a,b aus der Protokollschicht 620a,b abstrahieren und kann für die Flusssteuerung zwischen zwei Protokollagenten (A, B) verantwortlich sein und der Protokollschicht (Nachrichtenklassen) und Routingschicht (virtuelle Netzwerke) virtuelle Kanaldienste bereitstellen. Die Schnittstelle zwischen der Protokollschicht 620a,b und der Sicherungsschicht 610a,b kann typischerweise auf der Paketebene sein. Bei einer Ausführungsform wird die kleinste Transfereinheit in der Sicherungsschicht auch als Flit bezeichnet, mit einer spezifizierten Anzahl von Bit, wie etwa 192 Bit, oder eine gewisse andere Einheit. Die Sicherungsschicht 610a,b verwendet die Bitübertragungsschicht 605a,b zum Rahmen der Transfereinheit (Phit) der Bitübertragungsschicht 605a,b in die Transfereinheit (Flit) der Sicherungsschicht 610a,b. Außerdem kann die Sicherungsschicht 610a,b logisch in zwei Teile zerlegt werden, einen Absender und einen Empfänger. Ein Paar aus Absender/Empfänger in einer Entität kann mit einem Paar aus Empfänger/Absender in einer anderen Entität verbunden sein. Flusssteuerung wird oft sowohl flit- als auch paketweise durchgeführt. Fehlerdetektion und -korrektur wird auch potentiell flitebenenweise durchgeführt.
  • Bei einer Ausführungsform kann die Routingschicht 615a,b ein flexibles und verteiltes Verfahren zum Routen von UPI-Transaktionen von einer Quelle zu einem Ziel bereitstellen. Das Schema ist flexibel, da Routingalgorithmen für mehrere Topologien mittels programmierbarer Routingtabellen in jedem Router spezifiziert werden können (die Programmierung wird bei einer Ausführungsform durch Firmware, Software oder eine Kombination davon durchgeführt). Die Routingfunktionalität kann verteilt sein; das Routing kann mittels einer Reihe von Routingschritten erfolgen, wobei jeder Routingschritt mittels eines Nachschlagens in einer Tabelle entweder im Quellen-, Zwischen- oder Zielrouter definiert wird. Das Nachschlagen in einer Quelle kann verwendet werden, um ein UPI-Paket in das UPI-Koppelfeld zu injizieren. Das Nachschlagen im Zwischenrouter kann verwendet werden, um ein UPI-Paket von einem Eingangsport zu einem Ausgangsport zu routen. Das Nachschlagen in einem Zielport kann verwendet werden, um den Ziel-UPI-Protokollagenten anzuvisieren. Man beachte, dass die Routingschicht bei einigen Implementierungen dünn sein kann, da die Routingtabellen und daher die Routingalgorithmen nicht speziell durch Spezifikation definiert sind. Dies erlaubt Flexibilität und vielfältige Benutzungsmodelle, darunter flexible Plattform-Architekturtopologien, die durch Systemimplementierung definiert werden können. Die Routingschicht 615a,b verwendet die Sicherungsschicht 610a,b zur Bereitstellung der Verwendung von bis zu drei (oder mehr) virtuellen Netzwerken (VN) - in einem Beispiel zwei stockungsfreien VN VN0 und VN1, wobei in jedem virtuellen Netzwerk mehrere Nachrichtenklassen definiert sind. In der Sicherungsschicht kann ein geteiltes adaptives virtuelles Netzwerk (VNA) definiert werden, aber dieses adaptive Netzwerk kann in Routingkonzepten nicht direkt exponiert sein, da jede Nachrichtenklasse und jedes virtuelle Netzwerk eigene Ressourcen und garantierten Vorwärtsfortschritt aufweisen können, neben anderen Merkmalen und Beispielen.
  • Bei einer Ausführungsform kann UPI eine Kohärenzprotokollschicht 620a,b zur Unterstützung von Cache-Linien von Daten von Agenten aus Speicher umfassen. Ein Agent, der Speicherdaten zwischenspeichern möchte, kann mit dem Kohärenzprotokoll die Linie von Daten zum Laden in seinen Cache lesen. Ein Agent, der eine Linie von Daten in seinem Cache modifizieren möchte, kann das Kohärenzprotokoll verwenden, um Eigentümerschaft der Linie zu beschaffen, bevor die Daten modifiziert werden. Nach dem Modifizieren einer Linie kann ein Agent Protokollanforderungen folgen, sie in seinem Cache zu behalten, bis er entweder die Linie wieder in den Speicher zurückschreibt oder die Linie in eine Antwort auf eine externe Anforderung aufnimmt. Als Letztes kann ein Agent externe Anforderungen zum Invalidieren einer Linie in seinen Cache erfüllen. Das Protokoll stellt Kohärenz der Daten sicher, in dem die Regeln, denen alle Zwischenspeicherungsagenten folgen müssen, vorgeschrieben werden. Außerdem stellt es das Mittel bereit, wodurch Agenten ohne Caches Speicherdaten kohärent lesen und schreiben können.
  • Es können zwei Bedingungen durchgesetzt werden, um Transaktionen zu unterstützen, die das UPI-Kohärenzprotokoll benutzen. Erstens kann das Protokoll als ein Beispiel adressenweise Dateneinheitlichkeit unter Daten in Caches von Agenten und zwischen diesen Daten und den Daten im Speicher aufrechterhalten. Informell kann sich Dateneinheitlichkeit auf jede gültige Linie von Daten in dem Cache eines Agenten beziehen, die einen auf dem neuesten Stand befindlichen Wert der Daten repräsentiert, und in einem Kohärenzprotokollpaket gesendete Daten können den auf dem neuesten Stand befindlichen Wert der Daten zum Zeitpunkt ihres Sendes repräsentieren. Wenn keine gültige Kopie der Daten in Caches oder in Übertragung existiert, kann das Protokoll sicherstellen, dass der auf dem neuesten Stand befindliche Wert der Daten im Speicher residiert. Zweitens kann das Protokoll wohl definierte Commitment-Punkte für Anforderungen bereitstellen. Commitment-Punkte für Lesevorgänge können angeben, wann die Daten benutzbar sind; und für Schreibvorgänge können sie angeben, wann die geschriebenen Daten global beobachtbar sind und durch nachfolgende Lesevorgänge geladen werden. Das Protokoll kann diese Commitment-Punkte sowohl für cache-bare als auch nicht cache-bare bzw. UC-Anforderungen im kohärenten Speicherraum unterstützen.
  • Bei einigen Implementierungen kann UPI einen eingebetteten Takt benutzen. Ein Taktsignal kann unter Verwendung des Verbindungselements in die gesendeten Daten eingebettet werden. Mit dem in die Daten eingebetteten Taktsignal können distinkte und eigene Taktspuren weggelassen werden. Dies kann zum Beispiel nützlich sein, da es erlauben kann, mehr Anschlüsse einer Vorrichtung dem Datentransfer zu widmen, insbesondere in Systemen, in denen der Platz für Anschlüsse kostbar ist.
  • Bitübertragungsschicht
  • Zwischen zwei Agenten auf jeder Seite eines Verbindungselements kann eine Verbindung hergestellt werden. Ein Daten sendender Agent kann ein lokaler Agent sein, und der die Daten empfangende Agent kann ein entfernter Agent sein. Beide Agenten können Automaten verwenden, um verschiedene Aspekte der Verbindung zu verwalten. Bei einer Ausführungsform kann der Bitübertragungsschicht-Datenpfad Flits von der Sicherungsschicht zu dem elektrischen Frontend senden. Der Steuerpfad umfasst bei einer Implementierung einen Automaten (der auch als Verbindungstrainingsautomat oder dergleichen bezeichnet wird). Die Aktionen des Automaten und Austritte aus Zuständen können von internen Signalen, Timern, externen Signalen oder anderen Informationen abhängen. Tatsächlich können einige der Zustände, wie etwa einige wenige Initialisierungszustände, Timer aufweisen, um einen Zeitgrenzenwert zum Verlassen eines Zustands bereitzustellen. Man beachte, dass sich Detektion bei einigen Ausführungsformen auf das Detektieren eines Ereignisses in beiden Zweigen einer Spur bezieht; aber nicht unbedingt gleichzeitig. Bei anderen Ausführungsformen bezieht sich Detektion jedoch auf Detektion eines Ereignisses durch einen Agenten der Referenz. Als ein Beispiel bezieht sich Debounce auf das fortgesetzte Setzen eines Signals. Bei einer Ausführungsform unterstützt UPI Betrieb im Fall von nichtfunktionsfähigen Spuren. Spuren können hier in spezifischen Zuständen abgeworfen werden.
  • In dem Automaten definierte Zustände können neben anderen Kategorien und Subkategorien Rücksetzzustände, Initialisierungszustände und Betriebszustände umfassen. In einem Beispiel können einige Initialisierungszustände einen sekundären Timer aufweisen, mit dem der Zustand bei einer Zeitgrenze verlassen wird (im Wesentlichen ein Abbruch aufgrund eines Ausfalls, oder um in dem Zustand Fortschritt zu erzielen). Ein Abbruch kann Aktualisieren von Registern, wie etwa eines Statusregisters, umfassen. Einige Zustände können auch einen oder mehrere primäre Timer aufweisen, mit denen die primären Funktionen in dem Zustand getimt werden. Neben anderen Beispielen können andere Zustände dergestalt definiert werden, dass interne oder externe Signale (wie etwa Handshake-Protokolle) den Übergang von einem Zustand zu einem anderen Zustand steuern.
  • Ein Automat kann auch Debug mittels Einzelschritt, Einfrieren beim Initialisierungsabbruch und Verwendung von Testern unterstützen. Austritte aus Zuständen können hierbei zurückgestellt/warten gelassen werden, bis die Debug-Software bereit ist. In einigen Fällen kann der Austritt bis zur sekundären Zeitgrenze zurückgestellt/warten gelassen werden. Aktionen und Austritte können bei einer Ausführungsform auf dem Austausch von Trainingssequenzen basieren. Bei einer Ausführungsform soll der Verbindungsautomat in der lokalen Agententaktdomäne laufen und der Übergang von einem Zustand zum nächsten soll mit einer Sender-Trainingssequenzgrenze zusammenfallen. Es können Statusregister benutzt werden, um den aktuellen Zustand widerzuspiegeln.
  • 7 zeigt eine Darstellung mindestens eines Teils eines von Agenten verwendeten Automaten in einer beispielhaften Implementierung von UPI. Es versteht sich, dass die in der Zustandstabelle von 7 enthaltenen Zustände eine nicht erschöpfende Auflistung möglicher Zustände umfassen. Zum Beispiel sind einige Übergänge weggelassen, um die Darstellung zu vereinfachen. Außerdem können einige Zustände kombiniert, aufgeteilt oder weggelassen worden sein, während andere hinzugefügt werden könnten. Solche Zustände wären zum Beispiel:
  • Ereignisrücksetzzustand: in diesen wird bei einem Warm- oder Kalt-Rücksetzereignis eingetreten. Stellt Vorgabewerte wieder her. Initialisiert Zähler (z.B. Sync-Zähler). Kann in einen anderen Zustand austreten, wie etwa einen anderen Rücksetzzustand.
  • Getimter Rücksetzzustand: getimter Zustand zum Inband-Rücksetzen. Kann eine vordefinierte elektrische geordnete Menge (EOS) ansteuern, damit entfernte Empfänger die EOS detektieren und auch in das getimte Rücksetzen eintreten können. Der Empfänger weist Spuren auf, die elektrische Einstellungen halten. Kann in einen Agenten zum Rücksetzzustand-Kalibrieren austreten.
  • Rücksetzzustand kalibrieren: Kalibration ohne Signalisierung auf der Spur (z.B. Empfängerkalibrationszustand) oder Ausschalten von Treibern. Kann auf der Basis eines Timers eine vorbestimmte Zeitdauer im Zustand sein. Kann eine Betriebsgeschwindigkeit setzen. Kann als Wartezustand wirken, wenn kein Port freigegeben ist. Kann minimale Residenzzeit umfassen. Auf der Basis des Entwurfs kann Empfängeraufbereitung oder Abstaffelung auftreten. Kann nach einer Zeitgrenze und/oder Abschluss der Kalibration in einen Empfängerdetektionszustand austreten.
  • Empfängerdetektionszustand: Anwesenheit eines Empfängers auf Spur(en) detektieren. Kann nach Empfängerabschluss suchen (z.B. Empfänger-Pulldown-Einfügung). Kann in den Kalibrationsrücksetzzustand austreten, wenn ein spezifizierter Wert gesetzt ist oder wenn kein anderer spezifizierter Wert gesetzt ist. Kann in den Senderkalibrationszustand austreten, wenn ein Empfanger detektiert wird oder eine Zeitgrenze erreicht wird.
  • Senderkalibrationszustand: für Senderkalibrationen. Kann ein für Senderkalibrationen zugeteilter getimter Zustand sein. Kann Signalisierung auf einer Spur umfassen. Kann kontinuierlich eine EOS ansteuern, wie etwa eine elektrisch leerlaufende geordnete Menge des Austritts (oder EIEIOS). Kann in den Compliance-Zustand austreten, wenn das Kalibrieren fertig ist, oder beim Ablauf eines Timers. Kann in den Senderdetektionszustand austreten, wenn ein Zähler abgelaufen ist oder eine sekundäre Zeitgrenze aufgetreten ist.
  • Senderdetektionszustand: erklärt gültige Signalisierung. Kann ein Handshake-Zustand sein, bei dem ein Agent Aktionen abschließt und auf der Basis von Fernagentsignalisierung in einen nächsten Zustand austritt. Empfänger kann gültige Signalisierung vom Sender erklären. Der Empfänger sucht bei einer Ausführungsform nach einem Wach-Detektieren, und bei einem Debounce auf einer oder mehreren Spuren sucht er auf den anderen Spuren. Sender steuert ein Detektionssignal an. Kann in einen Abfragezustand austreten, wenn Debounce für alle Spuren abgeschlossen ist und/oder eine Zeitgrenze oder wenn Debounce auf allen Spuren nicht abgeschlossen ist und eine Zeitgrenze besteht. Eine oder mehrere Überwachungsspuren können hierbei wachgehalten werden, um ein Wach-Signal zu debouncen. Und beim Debounce erfolgt potentiell dann auch Debounce der anderen Spuren. Dies kann Stromersparnisse in energiesparenden Zuständen ermöglichen.
  • Abfragezustand: der Empfänger adaptiert, initialisiert den Driftpuffer und rastet auf Bit/Byte ein (z.B. identifiziert Symbolgrenzen). Spuren können entversetzt werden. ein entfernter Agent kann einen Austritt in einen nächsten Zustand (z.B. einen Verbindungsbreitenzustand) als Reaktion auf eine Bestätigungsnachricht bewirken. Abfrage kann zusätzlich ein Trainingssequenzeinrasten durch Einrasten auf eine EOS und einen Trainingssequenzheader umfassen. Versatz von Spur zu Spur im entfernten Sender kann in einem ersten Abschnitt für obere Geschwindigkeit und einen zweiten Abschnitt für niedrige Geschwindigkeit gekappt werden. Entversetzung kann in einem langsamen Modus sowie einem Betriebsmodus durchgeführt werden. Der Empfänger kann einen spezifischen maximalen zu entversetzenden Versatz von Spur zu Spur aufweisen, wie etwa 8, 16 oder 32 Intervalle Versatz. Empfängeraktionen können Latenzfixierung umfassen. Empfängeraktionen können bei einer Ausführungsform bei erfolgreicher Entversetzung einer gültigen Spurabbildung abgeschlossen werden. Ein erfolgreiches Handshake kann in einem Beispiel erzielt werden, wenn eine Anzahl aufeinanderfolgender Trainingssequenzheader mit Bestätigungen empfangen wird und eine Anzahl von Trainingssequenzen mit einer Bestätigung gesendet wird, nachdem der Empfänger seine Aktionen abgeschlossen hat.
  • Verbindungsbreitenzustand: Agent kommuniziert mit der Entspurenabbildung zum entfernten Sender. Empfänger empfängt die Informationen und decodiert. Empfänger kann eine Konfigurierte-Spur-Abbildung in einer Struktur nach Checkpoint eines vorherigen Spurabbildungswerts in einer zweiten Struktur aufzeichnen. Empfänger kann auch mit einer Bestätigung („ACK“) antworten. Kann ein Inband-Rücksetzen einleiten. Als ein Beispiel: erster Zustand zum Einleiten von Inband-Rücksetzen. Bei einer Ausführungsform wird Austritt in einen nächsten Zustand, wie etwa Flit-Konfigurationszustand, als Reaktion auf das ACK durchgeführt. Ferner kann vor dem Eintritt in den energiesparenden Zustand auch ein Rücksetzsignal erzeugt werden, wenn die Häufigkeit eines Auftretens des Wach-Detektionssignals unter einen spezifischen Wert fällt (z.B. 1 in jeder Anzahl von Einheitsintervallen (UI), wie etwa 4K UI). Empfänger kann aktuelle und vorherige Spurabbildungen halten. Sender kann auf der Basis von Trainingssequenzen mit verschiedenen Werten verschiedene Gruppen von Spuren verwenden. Die Spurabbildung kann bei einigen Ausführungsformen einige Statusregister nicht modifizieren.
  • Flitlock-Konfigurationszustand: in ihn wird durch einen Sender eingetreten, aber der Zustand wird als verlassen betrachtet (d.h. Sekundärzeitgrenzen-Hinfälligkeit), wenn sowohl Sender als auch Empfänger in einen blockierenden Verbindungszustand oder anderen Verbindungszustand ausgetreten sind. Das Austreten des Senders in einen Verbindungszustand umfasst bei einer Ausführungsform Grenze des Starts einer Datensequenz (SDS) und Trainingssequenz (TS) nach dem Empfang eines Planetenausrichtungssignals. Der Empfängeraustritt kann hier auf dem Empfang einer SDS von einem entfernten Sender basieren. Dieser Zustand kann eine Brücke vom Agenten zum Verbindungszustand sein. Empfänger identifiziert SDS. Empfänger kann in den blockierenden Verbindungszustand (BLS) (oder ein Steuerfenster) austreten, wenn SDS empfangen wird, nachdem ein Entwürfeler initialisiert ist. Wenn eine Zeitgrenze auftritt, kann der Austritt zum Rücksetzzustand sein. Sender steuert Spuren mit einem Konfigurationssignal an. Senderaustritt kann auf der Basis von Bedingungen oder Zeitgrenzen in den Rücksetz-, BLS- oder anderen Zuständen erfolgen.
  • Compliance-Zustand: in ihn wird von dem Senderkalibrationszustand aus eingetreten. Eine (als Master wirkende) Vorrichtung kann ein Compliance-Muster zu einer anderen Vorrichtung (Slave) senden, und der Slave kann das Muster nach Neutiming desselben in seinen lokalen Takt zurückschleifen. Kann zur Charakterisierung des Betriebs des Analog-Frontend an einer bestimmten Teilmenge von Spuren verwendet werden, wenn Rückschleifen nicht funktionsfähig ist. Der Compliance-Zustand kann für Jitter- oder Rauschuntersuchungen, Debug, Erkundung einer Verbindung usw. verwendet werden. Der Compliance-Zustand kann eine Supersequenz mit einem Sender von dem Master ansteuern. Empfänger sucht nach einem Wachen auf einer Überwachungsspur, debounced das Wachen, wirft fehlerhafte Spuren ab, adaptiert und bitverriegelt usw. Der Slave-Sender kann das Compliance-Muster ansteuern, bis seine Empfängeraktionen abgeschlossen sind. Dann erfolgt Retiming und Nicht-Entversatz der Rückschleife. Der Slave-Empfanger führt ähnlich Überwachungs- und Debounce-Aktionen usw. aus. Der Austritt kann in einen Rücksetzzustand erfolgen, wie etwa ein getimtes Rücksetzen, oder in einen Rückschleifenmusterzustand zum Beginnen des Tests, neben anderen Beispielen.
  • Agent-Rückschleifen-Markierungszustand: Die Rückschleifenmarkierung ist ein Agentzustand, aber im Gegensatz zu anderen Agent-Zuständen können Master- und Slave-Aktionen und Austritte verschieden sein. Der Rückschleif-Slave kann jede Polaritätsumkehrung und/oder Spurumdrehung rückgängig machen, kann aber nicht rückgeschleifte Bit entwürfeln oder neu verwüfeln. Bestätigungsaustausch kann für einen Slave nicht gelten, da er rückschleift. Da ein Slave vor der Rückschleife an der Symbolgrenze entversetzen kann, muss der Master nicht zum neuen Byteverriegeln oder neuem Entversetzen gezwungen sein, aber der Master kann die Trainingssequenz erneut verriegeln, um Einrastung auf einen Alias zu vermeiden. Mittel hierfür wären zum Beispiel erneutes Seeding von LFSR, Vergleichen von TS und/oder EIEOS oder eine gewisse Kombination dieser. Das Ende von SDS markiert das Ende der Rückschleifeneinrichtung und das Beginn der Mustererzeugung, - prüfung und -zählung.
  • Agent-Rückschleifenzustand (oder Block-Verbindungs-Zustand): In diesem Zustand kann ein Master-Sender anstelle von Steuermustern ein Testmuster senden (wie etwa ein IBIST-Muster (Interconnect Built-In Self-Test)), und sein Empfänger kann auf Fehler im empfangenen Muster prüfen. Zur Senderadaptierung können beide Agenten Master sein. Für einen vorbestimmten Zeitraum kann der Sender ein Muster senden, und ein entfernter Empfänger kann dieses Muster vergleichen und eine Bewertungszahl oder Metrik für das empfangene Muster bestimmen, die in einem Speicherungselement, wie etwa einem Register, aufgezeichnet wird. Das Vergleichsverfahren und die Metrik können entwurfsabhängig sein (z.B. BER mit Jitterinjektion). Am Ende des Zeitraums können beide Agenten zum Rücksetzen für den Rückkanal austreten, um die Metrik zu untersuchen und die nächste Iteration der Senderadaptierung einzurichten.
  • Sende-Verbindung-Zustand: ein Verbindungszustand. Flits werden zu einem entfernten Agenten gesendet. Der Eintritt in diesen kann von einem blockierenden Verbindungszustand aus erfolgen und kann zu einem blockierenden Verbindungszustand bei einem Ereignis, wie etwa einer Zeitgrenze, zurückkehren. Sender sendet Flits. Empfänger empfängt Flits. Kann auch in einen energiesparenden Verbindungszustand austreten. Bei einigen Implementierungen kann der Sendende-Verbindung-Zustand (TLS) als der LO-Zustand bezeichnet werden.
  • Blockierender Verbindungszustand: ein Verbindungszustand. Sender und Empfänger arbeiten auf vereinigte Weise. Kann ein getimter Zustand sein, während dem die Sicherungsschichtflits zurückgehalten werden, während die Bitübertragungsschichtinformationen zu dem entfernten Agenten übermittelt werden. Kann in einen energiesparenden Verbindungszustand (oder auf der Basis des Entwurfs in einen anderen Verbindungszustand) austreten. Ein blockierender Verbindungszustand (BLS) tritt bei einer Ausführungsform periodisch auf. Die Periode wird als BLS-Intervall bezeichnet und kann getimt sein, kann aber auch zwischen langsamer Geschwindigkeit und Betriebsgeschwindigkeit unterschiedlich sein. Man beachte, dass die Sicherungsschicht periodisch davon abgehalten werden kann, Flits zu senden, so dass eine Bitübertragungsschicht-Steuersequenz einer Länge gesendet werden kann, wie etwa während eines Senden-Verbindung-Zustands oder eines Teilweise-Breite-Sende-Verbindungszustands. Bei einigen Implementierungen kann der blockierende Verbindungszustand (BLS) als ein L0-Steuerzustand oder L0c-Zustand bezeichnet werden.
  • Teilweise-Breite-Sende-Verbindungszustand: Verbindungszustand. Kann durch Eintreten in einen Zustand teilweiser Breite, wobei eine oder mehrere verfügbare Spuren einer Verbindung während eines Teilweise-Breite-Sende-Verbindungszustands leerlaufen gelassen werden, Strom sparen. Bei einer Ausführungsform bezieht sich asymmetrische teilweise Breite auf jede Richtung einer bidirektionalen Verbindung mit verschiedenen Breiten, die bei in bestimmten Entwürfen unterstützt werden kann. Man beachte, dass Geschwindigkeiten nicht geändert werden können, wohl aber Breiten. Deshalb werden potentiell Flits mit verschiedenen Breiten gesendet. Kann logisch einem Sendende-Verbindung-Zustand ähnlich sein; da jedoch eine kleinere Breite besteht, kann es länger dauern, um Flits zu senden. Kann auf der Basis bestimmter empfangener und gesendeter Nachrichten oder eines Verlassens des Teilweise-Breite-Sende-Verbindungszustands oder eines Verbindungsblockierungszustands auf der Basis anderer Ereignisse in andere Verbindungszustände austreten, wie etwa einen energiesparenden Verbindungszustand. Bei einer Ausführungsform kann ein Senderport leerlaufende Spuren auf gestaffelte Weise ausschalten, um bessere Signalintegrität (d.h. Rauschminderung) zu gewährleisten, wie in dem Timingdiagramm gezeigt. Hier können nicht neu versuchbare Flits, wie etwa Null-Flits, in Perioden benutzt werden, in denen sich die Verbindungsbreite ändert. Ein entsprechender Empfänger kann diese Null-Flits abwerfen und kann leerlaufende Spuren auf gestaffelte Weise ausschalten, sowie die aktuelle und vorherige Spurabbildung in einer oder mehreren Strukturen aufzeichnen. Man beachte, dass Status und zugeordnete Statusregister unverändert bleiben können. Bei einigen Implementierungen kann der teilweise-Breite-Sende-Verbindungszustand als ein teilweiser L0- oder L0p-Zustand bezeichnet werden.
  • Teilweise-Breite-Sende-Verbindungszustand-Austritt: Austreten aus den Zustand teilweiser Breite. Kann bei einigen Implementierungen einen blockierenden Verbindungszustand verwenden oder nicht. Der Sender leitet bei einer Ausführungsform das Austreten durch Senden von Teilweise-Breite-Austrittsmustern auf den leerlaufenden Spuren ein, um diese zu trainieren und zu entversetzen. Als ein Beispiel beginnt ein Austrittsmuster mit EIEOS, was detektiert und debounced wird, um zu signalisieren, dass die Spur bereit ist, den Eintritt in einen voll sendenden Verbindungszustand zu beginnen, und kann mit SDS oder FTS (Fast Training Sequence) auf leerlaufenden Spuren enden. Jeder Ausfall während der Austrittssequenz (Empfängeraktionen, wie etwa Entversatz, nicht vor Zeitgrenze abgeschlossen) stoppt Flit-Transfers zur Sicherungsschicht und setzt ein Rücksetzen, das durch Rücksetzen der Verbindung beim nächsten Auftreten des blockierenden Verbindungszustands gehandhabt wird. Außerdem kann das SDS den Verwürfeler/Entwürfeler auf den Spuren auf geeignete Werte initialisieren.
  • Energiesparender Verbindungszustand: ist ein energiesparenderer Zustand. Bei einer Ausführungsform ist es energiesparender als der Partielle-Breite-Verbindungszustand, da Signalisierung bei dieser Ausführungsform auf allen Spuren und in beiden Richtungen gestoppt ist. Sender können einen blockierenden Verbindungszustand zum Anfordern eines energiesparenden Verbindungszustands verwenden. Der Empfänger kann hier die Anforderung decodieren und mit einem ACK oder einem NAK antworten; andernfalls kann Rücksetzen getriggert werden. Bei einigen Implementierungen kann der energiesparende Zustand als ein L1-Zustand bezeichnet werden.
  • Bei einigen Implementierungen von UPI können Supersequenzen definiert werden, wobei jede Supersequenz einem jeweiligen Zustand oder Eintritt in den jeweiligen Zustand oder Verlassen desselben entspricht. Eine Supersequenz kann eine sich wiederholende Sequenz von Datenmengen und Symbolen umfassen. Die Sequenzen können sich in einigen Fällen bis zum Abschluss eines Zustands oder Zustandsübergangs oder Übermittlung eines entsprechenden Ereignisses, neben anderen Beispielen, wiederholen. In einigen Fällen kann sich die wiederholende Sequenz einer Supersequenz gemäß einer definierten Häufigkeit wiederholen, wie etwa einer definierten Anzahl von Einheitsintervallen (UI). Ein Einheitsintervall (UI) kann dem Zeitintervall zum Senden eines einzelnen Bit auf einer Spur einer Verbindung oder eines Systems entsprechen. Bei einigen Implementierungen kann die sich wiederholende Sequenz mit einer elektrisch geordneten Menge (EOS) beginnen. Dementsprechend kann erwartet werden, dass sich eine Instanz der EOS gemäß der vordefinierten Häufigkeit wiederholt. Solche geordneten Mengen können als definierte 16-Byte-Codes implementiert werden, die neben anderen Beispielen im Hexadezimalformat repräsentiert werden können. In einem Beispiel kann die EOS einer Supersequenz eine EIEIOS sein, wie etwa in 8 dargestellt. Eine EIEIOS kann zum Beispiel einem niederfrequenten Taktsignal ähneln (z.B. einer vordefinierten Anzahl sich wiederholender hexadezimaler Symbole FF00 oder FFF000 usw.). Der EOS kann eine vordefinierte Menge von Daten folgen, wie etwa eine vordefinierte Anzahl von Trainingssequenzen oder anderen Daten. Solche Supersequenzen können bei Zustandsübergängen benutzt werden, darunter Verbindungszustandsübergänge sowie Initialisierung, neben anderen Beispielen.
  • Bei einigen Implementierungen eines Verbindungselements können Abschlüsse einer seriellen Datenverbindung herein- und herausgebracht werden, wie etwa wenn eine Verbindung rückgesetzt oder initialisiert wird. Dieser Ansatz kann Komplexität und Zeit in die Initialisierung einer Verbindung einführen. Bei einigen Implementierungen von UPI können Abschlüsse der Verbindung einschließlich während eines Rücksetzens oder Neuinitialisierung der Verbindung aufrechterhalten werden. Ferner kann UPI Hot-Plugging von Vorrichtungen gestatten. Wenn eine andere Vorrichtung entweder mittels Hot-Plugging oder anderweitig eingeführt wird, ändern sich die Spannungseigenschaften der Spur, auf der der neue entfernte Agent hinzugefügt wird. Der lokale Agent kann diese Änderungen (z.B. Pulldowns) der Spurspannung erfassen, um die Anwesenheit des entfernten Agenten zu detektieren und Initialisierung der Verbindung aufzufordern. Automatenzustände und Timer können in dem Automaten definiert werden, um die Detektion, Konfiguration und Initialisierung einer Verbindung ohne Abschlüsse zu koordinieren.
  • Beispielsweise kann ein Sender einer Vorrichtung während eines Zustands der Empfängerdetektierung („RxDetect“) Spuren einer Verbindung auf die Anwesenheit eines Fernempfängerabschlusses überwachen, wodurch die Anwesenheit einer entfernten Vorrichtung am anderen Ende der Verbindung angegeben wird. Dies kann als eine Art von Handshake dienen, wobei der Empfängerabschluss einen Austritt in den nächsten Zustand (z.B. einen Senderkalibrationszustand) verursacht. Wenn das Handshake nicht innerhalb einer vorbestimmten Zeit auftritt, kann die überwachende Vorrichtung die Initialisierung abbrechen, wodurch ein Übergang zurück zu einem Rücksetzzustand verursacht wird, bevor erneut in den RxDetect-Zustand eingetreten wird, um wieder zu versuchen, Einführung einer entfernten Vorrichtung auf der Verbindung zu identifizieren (z.B. in Verbindung mit einem Hot-Plug-Ereignis oder gesteuertem Verbindungsheraufbringen, das durch Software eingeleitet wird, neben anderen Beispielen). Während RxDetect sind Empfängerabschlüsse (Pulldowns) auf allen funktionsfähigen Spuren einzufügen. Etwaige fehlerhafte Spuren können vor dem Verlassen des Zustands und Übergehen zu einem anderen, wobei eine Detektionssupersequenz zwischen den Vorrichtungen auf der Verbindung übermittelt wird, abgeworfen werden. Ferner kann das durch den Empfängerabschluss erzeugte Signal insofern debounced werden, als die Spuren auf ein aufrechterhaltendes Setzen des Signals geprüft werden. In einem Beispiel kann Debounce für einen Zeitraum auftreten, der der vordefinierten Zeit zum Überwachen der Verbindung während des RxDetect-Zustands entspricht, und kann ein Vielfaches der vordefinierten Zeit sein, neben anderen Beispielen.
  • Bei einer Implementierung kann UPI Neuinitialisierung bei einem Inband-Rücksetzen ohne Ändern der Abschlusswerte mittels der Überprüfung einer Spur durch den empfangenden Agenten auf ankommende Signalisierung unterstützen. Die Signalisierung kann zum Identifizieren funktionsfähiger Spuren verwendet werden. Als ein Beispiel kann die Spur auf ein beliebiges einer Menge vordefinierter Signale überprüft werden, die durch eine Sendervorrichtung zu senden sind, um Entdeckung und Konfiguration der Verbindung zu erleichtern. In einem Beispiel kann eine Supersequenz entsprechend einer oder mehreren Initialisierungs- oder Neuinitialisierungsaufgaben definiert werden. Die vordefinierte Sequenz kann eine EIEOS, gefolgt von zusätzlichen Sequenzdaten, umfassen. In einigen Fällen können, wenn jede Vorrichtung auf jeder Seite einer Spur aktiv wird, die Vorrichtungen beginnen, eine Supersequenz entsprechend einem bestimmten Initialisierungszustand usw. zu senden. Bei einer Ausführungsform können zwei Arten von Anschlussrücksetzungen unterstützt werden; Herauffahr-(oder „kaltes“) Zurücksetzen und warmes Rücksetzen. Ein Rücksetzen, das durch Software eingeleitet wird oder (in der Bitübertragungs- oder einer anderen Schicht) in einem Agenten ausgelöst wird, kann Inband zu dem anderen Agenten übermittelt werden. Aufgrund der Benutzung eines eingebetteten Takts kann ein Inband-Rücksetzen jedoch unter Verwendung einer geordneten Menge, wie etwa einer spezifischen elektrischen geordneten Menge oder EIOS, durch Kommunikation an einen anderen Agenten gehandhabt werden.
  • Die geordnete Menge kann während Initialisierung gesendet werden, und eine PHY-Steuersequenz (oder „blockierender Verbindungszustand“) kann nach Initialisierung gesendet werden. Der Block-Verbindungszustand kann die Sicherungsschicht vom Senden von Flits abhalten. Als ein anderes Beispiel kann Sicherungsschichtverkehr blockiert werden, um einige wenige Null-Flits zu senden, die im Empfänger verworfen werden können.
  • In einem Beispiel kann eine Sicherungsschicht-Blockierungssteuersequenz (d.h. ein blockierender Verbindungszustand (BLS) oder L0c-Zustand) einen getimten Zustand umfassen, während dem die Sicherungsschicht-Flits zurückgehalten werden, während die PHY-Informationen zum entfernten Agenten übermittelt werden. Der Sender und Empfänger können hier einen Block-Steuersequenztimer starten. Und beim Ablauf der Timer können der Sender und Empfänger den Blockierungszustand verlassen und können andere Aktionen unternehmen, wie etwa Austritt zum Rücksetzen, Austritt zu einem anderen Verbindungszustand (oder anderen Zustand), darunter Zustände, die das Senden von Flits über die Verbindung erlauben.
  • Bei einer Ausführungsform kann Verbindungstraining bereitgestellt werden und das Senden einer oder mehrerer verwürfelter Trainingssequenzen, geordneter Mengen und Steuersequenzen umfassen, wie etwa in Verbindung mit einer definierten Supersequenz. Ein Trainingssequenzsymbol kann eines oder mehrere von einem Header, reservierten Teilen, einer Ziellatenz, einer Paarnummer, eines physischen Spurabbildungscodes, Referenzspuren oder eine Gruppe von Spuren und eines Initialisierungszustands umfassen. Bei einer Ausführungsform kann der Header mit einer Bestätigung (ACK) oder Negativ-Bestätigung (NAK) gesendet werden, neben anderen Beispielen. Als ein Beispiel können Trainingssequenzen als Teil von Supersequenzen gesendet werden und können verwürfelt werden.
  • Bei einer Ausführungsform werden geordnete Mengen und Steuersequenzen nicht verwüfelt oder gestaffelt und werden auf allen Spuren identisch, gleichzeitig und vollständig gesendet. Ein gültiger Empfang einer geordneten Menge kann Prüfen mindestens eines Teils der geordneten Menge (oder der gesamten geordneten Menge bei teilweise geordneten Mengen) umfassen. Geordnete Mengen können eine elektrisch geordnete Menge (EOS) umfassen, wie etwa eine elektrisch leerlaufende geordnete Menge (EIOS) oder eine EIEOS. Eine Supersequenz kann einen Start einer Datensequenz (SDS) oder eine schnelle Trainingssequenz (FTS) umfassen. Solche Mengen und Steuersupersequenzen können vordefiniert werden und können ein beliebiges Muster oder Hexadezimaldarstellung sowie eine beliebige Länge aufweisen. Zum Beispiel können geordnete Mengen und Supersequenzen eine Länge von 8 Byte, 16 Byte oder 32 Byte usw. aufweisen. Als ein Beispiel kann FTS zusätzlich zur schnellen Bitverriegelung während des Verlassens eines Teilweise-Breite-Sende-Verbindungszustands benutzt werden. Man beachte, dass die FTS-Definition spurweise sein kann und eine gedrehte Version der FTS benutzen kann.
  • Supersequenzen können bei einer Ausführungsform die Einfügung einer EOS, wie etwa einer EIEOS, in einen Trainingssequenzstrom umfassen. Wenn Signalisierung beginnt, fahren Spuren bei einer Implementierung auf gestaffelte Weise herauf. Dies kann jedoch dazu führen, dass anfängliche Supersequenzen auf einigen Spuren im Empfänger abgeschnitten gesehen werden. Supersequenzen können jedoch über kurze Intervalle (z.B. Intervalle von ungefähr eintausend Einheiten (oder ~1KUI)) wiederholt werden. Die Trainingssupersequenzen können außerdem für eines oder mehrere von Entversatz, Konfiguration und zum Übermitteln von Initialisierungsziel, Spurabbildung usw. verwendet werden. Die EIEOS kann für eines oder mehrere von Überführen einer Spur aus einem inaktiven in den aktiven Zustand, Überprüfung auf funktionsfähige Spuren, Identifizierung von Symbol- und TS-Grenzen verwendet werden, neben anderen Beispielen.
  • Nunmehr mit Bezug auf 9 sind Darstellungen beispielhafter Supersequenzen gezeigt. Zum Beispiel kann eine beispielhafte Detektions-Supersequenz 905 definiert werden. Die Detektions-Supersequenz 805 kann eine sich wiederholende Sequenz aus einer einzigen EIEOS (oder andere EOS), gefolgt von einer vordefinierten Anzahl von Instanzen einer bestimmten Trainingssequenz (TS), umfassen. In einem Beispiel kann die EIEOS unmittelbar gefolgt von sieben wiederholten Instanzen von TS gesendet werden. Wenn die letzte der sieben TS gesendet ist, kann die EIEOS nochmals gefolgt von sieben zusätzlichen Instanzen von TS gesendet werden und so weiter. Diese Sequenz kann gemäß einer bestimmten vordefinierten Häufigkeit wiederholt werden. In dem Beispiel von 9 kann die EIEOS auf den Spuren ungefähr einmal alle eintausend UI (~1KUI), gefolgt von dem Rest der Detektions-Supersequenz 905, wieder erscheinen. Ein Empfänger kann Spuren auf die Anwesenheit einer sich wiederholenden Detektions-Supersequenz 905 überwachen und kann bei Validierung der Supersequenz 905 schlussfolgern, dass ein entfernter Agent anwesend ist, auf den Spuren hinzugefügt wurde (z.B. Hot-Plugged), aufgewacht ist oder sich neu initialisiert usw.
  • In einem anderen Beispiel kann eine andere Supersequenz 910 definiert werden, um eine Bedingung bzw. einen Zustand des Abfragens, der Konfiguration oder der Rückschleife anzugeben. Wie bei der beispielhaften Detektions-Supersequenz 905 können Spuren einer Verbindung durch einen Empfänger auf eine solche Abfrage-/Konfig-/Schleifen-Supersequenz 910 überwacht werden, um einen Abfragezustand, Konfigurationszustand oder einen Zustand oder eine Bedingung der Rückschleife zu identifizieren. In einem Beispiel kann eine Abfrage-/Konfig-/Schleifen-Supersequenz 910 mit einer EIEOS, gefolgt von einer vordefinierten Anzahl wiederholter Instanzen einer TS, beginnen. Zum Beispiel kann in einem Beispiel die EIEOS von einunddreißig (31) Instanzen von TS gefolgt werden, wobei sich die EIEOS ungefähr alle 4000 UI (z.B. ~4KUI) wiederholt, neben anderen Beispielen.
  • Supersequenzen wie etwa die Detektions-Supersequenz 905 und die Abfrage- /Konfig-/Schleifen-Supersequenz 910 usw. können potentiell im Wesentlichen während des gesamten Verlaufs der Initialisierung oder Neuinitialisierung einer Verbindung gesendet werden. Bei Empfang und Detektion einer bestimmten Supersequenz kann ein Empfänger in einigen Fällen antworten, indem er dieselbe Supersequenz über die Spuren als Echo zu dem Sender sendet. Das Empfangen und Validieren einer bestimmten Supersequenz durch Sender und Empfänger kann als ein Handshake dienen, um einen Zustand oder eine Bedingung zu bestätigen, der bzw. die mittels der Supersequenz übermittelt wird. Zum Beispiel kann man mit einem solchen Handshake (z.B. unter Verwendung einer Detektions-Supersequenz 905) Neuinitialisierung einer Verbindung identifizieren. In einem anderen Beispiel kann man mit einem solchen Handshake das Ende eines elektrischen Rücksetzens oder energiesparenden Zustands angeben, was dazu führt, dass entsprechende Spuren wieder heraufgebracht werden, neben anderen Beispielen. Das Ende des elektrischen Rücksetzens kann zum Beispiel aus einem Handshake zwischen Sender und Empfänger, die jeweils eine Detektions-Supersequenz 905 senden, identifiziert werden.
  • In einem anderen Beispiel können Spuren auf Supersequenzen überwacht werden und die Supersequenzen in Verbindung mit der Überprüfung von Spuren auf Detektions-, Wach-Zustandsaustritte und -eintritte, neben anderen Ereignissen, verwenden. Die vordefinierte und vorhersehbare Beschaffenheit und Form von Supersequenzen kann ferner zum Ausführen von Initialisierungsaufgaben verwendet werden, wie etwa Bitverriegelung, Byteverriegelung, Debouncing, Entwürfelung, Entversatz, Adaptierung, Latenzfixierung, ausgehandelte Verzögerungen und andere potentielle Verwendungen. Tatsächlich können Spuren im Wesentlichen kontinuierlich auf solche Ereignisse überwacht werden, um die Möglichkeit des Systems, auf solche Bedingungen zu reagieren und sie zu verarbeiten, zu verschnellern. In einigen Fällen können Supersequenzen in Steuerfenstern (z.B. L0c-Steuerfenstern) gesendet werden, um Verbindungszustandübergänge zu triggern, neben anderen Beispielen.
  • Trainingssequenzen (TS) können in einigen Fällen einen Header und verschiedene andere Felder (z.B. Nutzinformationen) umfassen, mit denen Informationen in Verbindung mit der Initialisierung einer Verbindung übermittelt werden können. Zum Beispiel können in einem Beispiel Felder für Ziellatenz, Zustand, Spurpaarnummer, Spurabbildung neben anderen Feldern enthalten sein. Bei einigen Implementierungen können Teile einer TS verwürfelt werden, zum Beispiel durch eine Zufalls- oder Pseudozufalls-Binärsequenz (PRBS). In einem Beispiel kann der TS-Header als Klartext bewahrt werden, während der Rest (oder die Nutzinformationen) der TS verwürfelt werden, indem zum Beispiel diese Teile der TS mit einer PRBS XOR-verknüpft werden, neben anderen Beispielen.
  • Bei einer Implementierung kann eine TS sechszehn (16) Byte lang sein und der TS-Header kann das erste Byte (d.h. Byte 0) der TS einnehmen. Die TS-Nutzinformationen können verwürfelt werden und die übrigen fünfzehn Byte einnehmen. Bei einer beispielhaften Implementierung kann ein TS-Nachspann oder -Suffix die letzten wenigen Byte der TS umfassen. Zum Beispiel kann in einem Beispiel ein Verwürfelungssynchronisationsfeld mindestens drei Byte der TS einnehmen, zum Beispiel die Byte 6-8 der TS. Die Nachspannbits der TS (z.B. Byte 9-15) können bei dieser konkreten Implementierung als reservierte Bits aufrechterhalten werden. Die Bits in den Byte 6-15 können alle auf 0 gesetzt werden.
  • Bei einigen Implementierungen kann UPI Verwendung eines TS-Headers unterstützen, kann anstelle von oder zusätzlich zu TS-Nutzinformationen für Schlüsselinitialisierungsparameter benutzt werden. Bei einigen Implementierungen kann man mit TS-Nutzinformationen Initialisierungsparameter wie ACKs und Spurnummern austauschen. Es können auch Gleichstrompegel zur Übermittlung von Spurpolarität verwendet werden. Bei einigen Implementierungen kann UPI jedoch in dem TS-Header für Schlüsselparameter gleichstromausgeglichene Codes implementieren. Falls zum Beispiel ein TS-Header entwürfelt wird, können verfügbare TS-Headercodes so definiert werden, dass die Anzahl von „1” en im Wesentlichen gleich der Anzahl von „0” en ist, die in den TS-Headerfeldern erscheinen. Gleichstromausgleich kann im Verlauf des Restes der TS (z.B. der TS-Nutzinformationen) realisiert werden, indem man Bit der TS-Nutzinformationen verwürfelt, indem die Bit gegen eine Zufalls- oder Pseudozufalls-Binärsequenz XOR-verknüpft werden.
  • Bei einer beispielhaften Implementierung kann eine PRBS-Sequenz mit mindestens 23 Bit (PRBS23) benutzt werden. Die PRBS kann gemäß einem bestimmten ausgewählten Polynom erzeugt werden. In einem Beispiel kann die PRBS durch ein Speicherungselement mit ähnlicher Bitgröße und Selbst-Seed, wie etwa ein LFSR (Linear-Rückkopplungsschieberegister) erzeugt werden. Das LFSR kann ein 23-Bit-Fibonacci-LFSR sein, das eine PRBS-Sequenz mit einer Länge von über 8 Mb erzeugen kann. Die PRBS kann sich nach dem Ende der Sequenz wiederholen. Bei einigen Implementierungen kann die Gesamtheit der PRBS23-Sequenz bei der Verwürfelung von Trainingssequenzen verwendet werden, die in Supersequenzen enthalten sind, die zum Beispiel bei der Initialisierung der Verbindung bei UPI verwendet werden.
  • Während die volle Länge einer PRBS-Sequenz verwendet werden kann, kann UPI bei einigen Implementierungen unterstützen, die Verwendung unterschiedlicher Längen der verfügbaren PRBS-Sequenz (z.B. die Verwendung nur eines Teils der PRBS 23-Sequenz) zu erlauben. In einigen Beispielen kann eine Steuerung einer Vorrichtung spezifizieren, dass nur ein Teil der vollen Längen einer PRBS-Sequenz benutzt wird. Dies kann zum Beispiel in Prüfanwendungen wünschenswert sein, wo Wiederholbarkeit von Bitsequenzen erwünscht ist, potentiell neben anderen Anwendungen. Eine auf Software basierende Steuerung kann unterschiedliche Längen der anzuwendenden PRBS spezifizieren. Zum Beispiel kann das BIOS einer Vorrichtung die auf die Verbindung anzuwendende PRBS-Länge spezifizieren. Bei einigen Implementierungen kann Verwendung der vollen Länge der PRBS-Sequenz zum Beispiel die Vorgabeeinstellung sein, um so die Vorteile der langen PRBS-Sequenz zu maximieren.
  • Spurverkehr in einem sendenden Verbindungszustand (TLS) und Trainingssequenzen können mit einer PRBS einer bestimmten Mindestlänge (z.B. 23 Bit) verwürfelt werden. Das auf einen Strom anzuwendende Start-Seed kann zwischen den Spuren variiert werden, um die elektrischen Vorteile der PRBS auf der Verbindung zu verbessern. Bei einer beispielhaften Implementierung kann die PRBS durch ein 23-Bit-Fibonacci-LFSR erzeugt werden, das ein Generatorpolynom mit 6 Abgriffen implementiert, wie etwa (x23 +x21 + x16 + x8 + x5 + x2 +1).
  • Die Seed-Werte beim Start (oder bei der Initialisierung von Verwürfeler/Entwürfeler) für die Spurnummer Modulo 8 kann ein beliebiger Wert sein, zum Beispiel 8 Hexadezimalwerte, wobei jeder mit 2 oder 3 der Spuren in einer Verbindung assoziiert ist. Verwendung solcher Seeds kann zu einer Drehung (oder Staffelung) der PRBS zwischen den Spuren führen. Durch Verwendung der Eigenschaft, dass Geradspuren-PRBS aus einem XOR von PRBS ungerader Spuren abgeleitet werden können, kann die Anzahl der LFSR verringert werden. Die EIEOS und der Header der Trainingssequenzen kann nicht verwürfelt sein. Der Eintrittspunkt einer Supersequenz auf jeder Spur kann auf jeder Spur an einem anderen Punkt eingeleitet werden (z.B. wenn der Sender die Ansteuerung beginnt). Dadurch können die Spuren auf gestaffelte Weise eingeschaltet werden, um Rauschen im Stromversorgungsablieferungssystem zu verringern. Tatsächlich kann jede Spur über ihre eigene Instanz eines LFSR verfügen. Die Staffelungszeiten können nach der Anzahl der Spuren, die eingeschaltet werden, variieren und können während der Initialisierung implementierungsabhängig sein. Diese können in den Timingdiagrammen und Timerprofilen für Teilweise-Sendebreite-Zustandsaustritt spezifiziert werden. Ferner können schnelle Trainingssequenzen (FTS) (die auch nachfolgend besprochen werden) auch nach Spur gedreht werden.
  • In einigen Fällen kann Verwürfelung Stromversorgungsrauschen im Sender verringern und im Empfänger ein reichhaltigeres Frequenzspektrum bereitstellen. Der Verwürfeler kann durch die erste gesendete EIEOS initialisiert werden. Der Entwürfeier kann zum Beispiel mittels Selbst-Seeding mit dem Verwürfeler synchronisiert werden. Zum Beispiel kann das empfangene 23-Bit-Muster als ein Seed in ein Feld der TS eingebettet werden. Zum Beispiel kann aus der Verwürfelung der Bit des Verwürfelungssynchronisationsfelds das 23-Bit-Seed identifiziert werden. Der Empfänger kann mit dem Seed-Wert den spezifischen Ort der PRBS identifizieren, der zum Verwürfeln der empfangenen TS verwendet wird. Zum Beispiel kann ein Empfänger das Seed identifizieren und das Seed in sein eigenes LFSR laden, um mit der vom Sender verwendeten PRBS zu synchronisieren. In einigen Fällen kann ein Empfänger mehrere Verwürfelungssynchronisationsfelder oder mehrere TS in einer Supersequenz lesen, um sein eigenes LSFR zu seeden. Bei Detektion und Synchronisation mit der PRBS des Senders kann ein Empfanger jedoch den Rest der TS sowie alle nachfolgenden in Supersequenzen während der Initialisierung der Verbindung gesendeten TS entwürfeln, neben anderen Beispielen.
  • Supersequenzen können zur Erleichterung von Bitverriegelung und Synchronisation auf einer Spur verwendet werden. Wie oben besprochen kann mindestens ein Teil der Supersequenzen verwürfelt werden. Wieder mit Bezug auf die Besprechung von 9 kann eine Detektions-Supersequenz von einem Empfänger zum Detektieren oder Verriegeln der Bit- und Byteflanken des empfangenen Bitstroms und Identifizieren, welche Byte in der Supersequenz gesendet werden, verwendet werden. Zum Beispiel kann der EIEOS- und TS-Header unverwürfelt gelassen werden, um dem Empfänger dabei zu helfen, sich schneller mit der Supersequenz zu verriegeln. Außerdem kann die Supersequenz so definiert werden, dass es der EIEOS (und dem Anfang der Supersequenz) erlaubt wird, sich mit einer relativ kurzen Häufigkeit zu wiederholen (z.B. um dem Empfänger schneller eine andere Chance zu erlauben, die EIEOS zu detektieren, falls die erste EIEOS nicht genau detektiert wurde). Zum Beispiel kann in einem Beispiel eine Supersequenz so definiert werden, dass sie sich alle 1KUI oder kürzer wiederholt. Solche Supersequenzen können ferner mehr randomisierte Übergänge während der Initialisierung erlauben, sowie Vereinfachung von TS-Verriegelung, Latenzfixierung und anderen Aktionen.
  • Außerdem kann das Unverwürfeltlassen des EIEOS- und TS-Headers das Auftreten von Byteverriegelung erlauben und dem Empfänger gestatten, in der Lage zu sein, den Ort nachfolgender Byte und Symbole (einschließlich verwürfelter TS-Symbole) zu identifizieren. Zum Beispiel kann die Flanke des unverwürfelten TS-Headers identifiziert werden und dadurch auch der Beginn des Verwürfelungssynchronisationsfelds. Bei Detektion des PRBS-Seed in dem Verwürfelungssynchronisationsfeld kennt der Empfänger die folgenden PRBS-Musterwerte und wird auch in der Lage sein, die Werte von nachfolgenden Verwürfelungssynchronisationsfeldwerten vorherzusagen. Bei Verriegelung mit der PRBS kann der Empfänger dementsprechend die Verwürfelungssynchronisationsfeldwerte zur Erleichterung anderer Konfigurationsaufgaben wie Adaptierung, Endversatz und anderer Aufgaben benutzen.
  • Auf mehrspurigen Verbindungen kann ein Sender Symbole gleichzeitig auf allen Spuren senden, es kann sich aber Versatz von Verbindung zu Verbindung manifestieren, wobei einige Symbole nicht gleichzeitig im Empfänger ankommen. Quellen von Versatz wären zum Beispiel Chip-Differenz-Treiber und -Empfänger, Leiterplatten-Impedanzschwankungen, Spurleitungslängen-Fehlanpassungen, neben anderen Beispielen. Bei einer Ausführungsform stellt UPI erweiterte Logik zum Entversetzen von Spuren bereit. Als ein Beispiel kann die TS-Grenze nach TS-Verriegelung zum Entversetzen der Spuren verwendet werden. Zum Beispiel kann TS-Verriegelung verwendet werden, um Versatz zu detektieren (z.B. das eine TS auf einer Spur später als eine andere TS auf einer anderen der Spuren der Verbindung ankommt). Es kann auch eine EIEOS zur Detektion von Versatz verwendet werden. Außerdem können einige Implementierungen von UPI unter Verwendung der Vorhersehbarkeit eines synchronisierten PRBS-Musters entversetzen, indem Spur-PRBS-Muster in dem LFSR während spezifischer Punkte in den Nutzinformationen verglichen werden.
  • Im Fall der Adaptierung können elektrische Kenngrößen einer Spur zwischen einem Sender und Empfänger zum Beispiel auf der Basis von zwischen dem Sender und Empfänger gesendeten Probendaten justiert werden. Empfängeradaptierung kann zum Beispiel umfassen, dass der Sender ein Datenmuster zum Empfänger sendet, wobei Logik im Empfänger elektrische Kenngrößen im Empfänger justiert, um die Spur für die Verbindung zu adaptieren. Senderadaptierung kann umfassen, dass der Sender Probendaten zum Empfänger sendet und der Empfänger Rückmeldung zum Sender sendet, mit der der Sender dann Justierungen im Sender vornehmen kann, um die Spur zu adaptieren. Der Empfänger kann auf der Basis der im Sender vorgenommenen Justierungen weiter Rückmeldung zum Sender senden.
  • In einem Beispiel können Adaptierungsprobendaten mittels verwüfelter TS-Daten realisiert werden. Als ein Beispiel kann ein festes UI-Muster benutzt werden, um mit einem Bypass zu einem Adaptierungszustand zu verwüfeln. Durch TS-Verwürfelung mit PRBS23 kann aber Empfängeradaptierung ohne den Bypass durchgeführt werden. außerdem können Offset- und andere Fehler während der Taktwiedergewinnung und Abtastung verringert werden. Die mittels einer langen PRBS-Sequenz (z.B. PRBS23) gewährleistete Zufälligkeit kann sich als ein effektiver Probenstrom zur Adaptierung erweisen. Ferner kann bei einigen Implementierungen eine Spur dafür eingestellt werden, im langsamen Modus zu arbeiten, um der Logik beim Analysieren von auf der Spur empfangenen Probendaten und Adaptieren auf diese zu helfen. Bei Genehmigung der Kenngrößen der Spur mittels Adaptierung können die adaptierten Kenngrößen eingestellt und auf die Initialisierung der Verbindung angewandt werden.
  • Nachdem die Verbindung erfolgreich kalibriert und konfiguriert wurde, kann die Initialisierung enden und zum sendenden Verbindungszustand (TLS) übergehen, indem Flits anfangen, gesendet zu werden. Bei einigen Implementierungen von UPI können Übergänge zum TLS auf Planetenausrichtung im System basieren. Zum Beispiel kann ein Planetenausrichtungssignal eine Gelegenheit angeben, zum TLS überzugehen. Statt an einer Flanke einer Supersequenz EIEOS oder TLS überzugehen, können einige Implementierungen von UPI ein SDS-Symbol (Start der Datensequenz) benutzen, das gemäß der Planetenausrichtung gesendet wird, um die Initialisierung zu beenden und zum TLS überzugehen. In einem Beispiel kann eine SDS an einer beliebigen Stelle in einem Initialisierungsbitstrom gesendet werden. Dementsprechend kann ein Empfänger empfangene Bit kontinuierlich auf die SDS scannen, um das Beenden der Initialisierung gemäß einer Planetenausrichtung zu beschleunigen.
  • In einem Beispiel kann eine beispielhafte EIEOS ein niederfrequentes Taktsignal, wie etwa ein sich wiederholendes FF00-Signal, emulieren. Eine beispielhafte SDS kann bei einigen Implementierungen ein sich wiederholendes F0-Signal umfassen. Dementsprechend kann in solchen Fällen die Detektion einer in der Mitte einer EIOS gesendeten SDS relativ einfach zu identifizieren sein, da das Risiko des Alias-Effekts in der EIEOS minimal sein kann. Verwürfelung von TS-Nutzinformationen und die resultierende Zufälligkeit der TS-Daten kann jedoch das Risiko des Alias-Effekts von gewissen Formen einer SDS einführen. Bei einigen Implementierungen kann eine PRBS erzeugt werden, die niemals einen Alias einer SDS oder eines Teils einer EIEOS über eine beliebige bestimmte Spanne einer jeweiligen Anzahl von Bit bildet. Ferner kann ein Nachspann oder Suffix an einer TS vorgesehen werden, wie etwa Verwendung der letzten Byte der TS oder Ausnullen der Nutzinformationen der PRBS, um zu bewirken, dass die PRBS XOR-0-Werte im Suffix ist und die PRBS effektiv am Ende der TS im Klartext zu präsentieren.
  • Bei einigen Implementierungen können beim Austritt aus einem Konfigurationszustand in den TLS die Sende- und empfangs-LFSR durch die zwischen Sender und Empfänger ausgetauschte SDS neu initialisiert werden. Zum Beispiel können in acht Start-PRBS jeweils Seeds auf die Spuren 0..7, 12..19 und 8..11 (z.B. nur die ersten vier) angewandt werden. Ferner kann auch Spurwendung einer Verbindung und Polaritätsumkehr einer Spur bestimmt werden, indem zum Beispiel das unverwürfelte erste Byte der TS (z.B. des TS-Headers) nach der EIEOS mit einer Menge möglicher Werte verglichen wird, neben anderen Beispielen.
  • Im Fall des Debouncing können Transienten als Folge vielfältiger Bedingungen auf Spuren eingeführt werden. Zum Beispiel kann das Hinzufügen oder Herauffahren einer Vorrichtung Transienten auf der Spur einführen. Außerdem können Spannungsunregelmäßigkeiten auf einer Spur aufgrund von schlechter Spurqualität oder elektrischem Ausfall vorliegen. In einigen Fällen kann „Bouncing“ auf einer Spur falsche Positive produzieren, wie etwa eine falsche EIEOS. Während Supersequenzen mit einer EIEOS beginnen können, können jedoch bei einigen Implementierungen definierte Supersequenzen ferner zusätzliche Datensequenzen umfassen, sowie eine definierte Häufigkeit, mit der die EIEOS wiederholt wird. Selbst wenn eine falsche EIEOS auf einer Spur erscheint, kann folglich ein Logikanalysator im Empfänger bestimmen, dass die EIEOS eine falsche Positive ist, indem Daten, die der falschen EIEOS nachfolgen, validiert werden. Wenn zum Beispiel der EIEOS keine erwartete TS oder andere Daten folgen oder die EIEOS sich nicht mit einer bestimmten der vordefinierten Häufigkeiten einer der vordefinierten Supersequenzen wiederholt, kann der Empfängerlogikanalysator die Validierung der empfangenen EIEOS fehlschlagen lassen. Da Bouncing beim Herauffahren auftreten kann, während eine Vorrichtung zu einer Leitung hinzugefügt wird, können auch falsche Negative resultieren. Wenn sie zu einer Menge von Spuren hinzugefügt wird, kann zum Beispiel eine Vorrichtung beginnen, eine Detektions-Supersequenz 905 zu senden, um die andere Seite der Verbindung auf ihre Anwesenheit hinzuweisen, und Initialisieren der Verbindung beginnen. Auf den Spuren eingeführte Transienten können jedoch die anfängliche EIEOS, TS-Instanzen und andere Daten der Supersequenz verfälschen. Ein Logikanalysator in der Empfangsvorrichtung kann jedoch weiter die Spuren überwachen und die nächste durch die neue Vorrichtung in der sich wiederholenden Detektions-Supersequenz 905 gesendete EIEOS identifizieren, neben anderen Beispielen.
  • In einem Beispiel kann eine sendende Vorrichtung versuchen, in einen bestimmten Zustand einzutreten. Zum Beispiel kann die sendende Vorrichtung versuchen, die Verbindung zu aktivieren und in einen Initialisierungszustand einzutreten. In einem anderen Beispiel kann die sendende Vorrichtung versuchen, aus einem energiesparenden Zustand, wie etwa einem L1-Zustand, auszutreten, neben anderen Beispielen. In einigen Fällen eines L1-Zustands kann der LI-Zustand als ein Stromersparnis-, Leerlauf- oder Bereitschaftszustand dienen. In einigen Beispielen können tatsächlich Hauptstromversorgungen im LI-Zustand aktiv bleiben. Beim Austritt aus einem L1-Zustand kann eine erste Vorrichtung eine Supersequenz senden, die dem Übergang vom L1-Zustand zu einem bestimmten anderen Zustand, wie etwa einem L0-Sende-Verbindungszustand (TLS), assoziiert ist. Wie in anderen Beispielen kann die Supersequenz eine sich wiederholende Sequenz einer EOS, gefolgt von einer vorbestimmten Anzahl von TS, sein, so dass die EOS mit einer bestimmten vordefinierten Häufigkeit wiederholt wird. In einem Beispiel kann eine Detektions-Supersequenz verwendet werden, um den L1- oder anderen energiesparenden Zustand zu verlassen. Eine empfangende Vorrichtung kann die Daten empfangen und validieren, die Supersequenz identifizieren, und die empfangende Vorrichtung kann das Handshake mit der sendenden Vorrichtung abschließen, indem die Supersequenz zu der sendenden Vorrichtung zurückgesendet wird.
  • Wenn sowohl die sendende als auch die empfangende Vorrichtung dieselbe Supersequenz empfangen, kann jede Vorrichtung unter Verwendung der Supersequenzen zusätzliche Initialisierungsaufgaben ausführen. Zum Beispiel kann jede Vorrichtung Debouncing, Bitverriegelung, Byteverriegelung, Entwürfelung und Entversatz unter Verwendung der Supersequenzen durchführen. Mittels der Header und Nutzinformationen der TS, die in den Supersequenzen enthalten sind, können zusätzliche Initialisierungsinformationen übermittelt werden. Wenn die Verbindung initialisiert wird, kann eine Startdatensende- bzw. SDS-Sequenz gesendet werden, die in einigen Fällen die Supersequenz unterbricht (z.B. in der Mitte einer TS oder EIEOS gesendet), und die jeweiligen Vorrichtungen auf jeder Seite der Verbindung können sich auf den synchronisierten Eintritt in den TLS vorbereiten. Im TLS oder einem „L0“-Zustand können Supersequenzen beendet werden und Flits können unter Verwendung der Sicherungsschicht des Protokollstapels gesendet werden.
  • Während des TLS können der Bitübertragungsschicht immer noch begrenzte Gelegenheiten gegeben werden, Steueraufgaben auszuführen. Zum Beispiel können Bitfehler und andere Fehler auf einer oder mehreren Spuren während eines L0-Zustands identifiziert werden. Bei einer Implementierung kann ein Steuerzustand L0c bereitgestellt werden. Der L0c-Zustand kann als ein periodisches Fenster im TLS bereitgestellt werden, um das Senden von Bitübertragungsschichtnachrichten zwischen Strömen von Flits, die mittels die Sicherungsschicht gesendet werden, zu erlauben. Zum Beispiel kann, wie in dem in 10 gezeigten Beispiel dargestellt, ein LO-Zustand in L0c-Intervalle unterteilt werden. Jedes L0c-Intervall kann mit einem L0c-Zustand oder -Fenster (z.B. 1005) beginnen, indem Bitübertragungsschicht-Steuercodes und andere Daten gesendet werden können. Der Rest (z.B. 1010) des L0c-Intervalls kann dem Senden von Flits gewidmet werden. Die Länge des L0c-Intervalls und L0c-Zustands in jedem Intervall kann programmatisch definiert werden, zum Beispiel durch das BIOS einer oder mehrerer Vorrichtungen oder eine andere auf Software basierende Steuerung, neben anderen Beispielen. Der L0c-Zustand kann exponentiell kürzer als der Rest eines L0c-Intervalls sein. Zum Beispiel kann in einem Beispiel der L0c 8UI sein, während der Rest des L0c-Intervalls in der Größenordnung von 4KUI liegt, neben anderen Beispielen. Dies kann Fenster erlauben, in denen relativ kurze vordefinierte Nachrichten gesendet werden können, ohne Verbindungsdatenbandbreite wesentlich zu stören oder zu verschwenden.
  • Die L0c-Zustandsnachricht kann vielfältige Bedingungen auf der Bitübertragungsschichtebene übermitteln. In einem Beispiel kann eine Vorrichtung ein Rücksetzen der Verbindung oder einer Spur zum Beispiel auf der Basis von Bitfehlern oder anderen Fehlern über einer bestimmten Schwellenmenge einleiten. Solche Fehler können auch in L0c-Fenstern (wie etwa vorhergehenden L0c-Fenstern) übermittelt werden. Der L0c-Zustand kann auch wirksam eingesetzt werden, um andere Inband-Signalisierung zu realisieren, wie etwa Signalisierung zur Verwendung bei der Unterstützung oder Auslösung von Übergängen zwischen anderen Verbindungszuständen. In einem Beispiel können L0c-Nachrichten benutzt werden, um eine Verbindung von einem aktiven LO-Zustand in einen Bereitschafts- oder energiesparenden Zustand, wie etwa einen L1-Zustand, zu überführen. Zum Beispiel kann man mit einem bestimmten L0c-Zustand eine L1-Eintragsanforderung, eine Rücksetzanforderung oder andere Anforderung übermitteln. Die Anforderung kann das Senden einer entsprechenden Supersequenz umfassen, die so definiert ist, dass ein Eintritt in einen oder Austritt aus einem Verbindungszustand angegeben wird, neben anderen Beispielen.
  • Zusätzlich zum Handshaking unter Verwendung von L0c-Codes (oder als Alternative) können Supersequenzen, wie etwa Detektions-Supersequenzen, in Verbindung mit dem Rücksetzen und Neuinitialisieren der Verbindung gesendet werden. Weiteres Handshaking kann zwischen den Vorrichtungen auftreten, als die Supersequenzen, die durch eine erste Vorrichtung gesendet und durch die zweite empfangende Vorrichtung als Echo zurückgesendet werden. Supersequenzen können wie oben beschrieben verwendet werden, um bei der Neuinitialisierung der Verbindung zu helfen, einschließlich Debouncing, Bitverriegelung, Byteverriegelung, Entwürfelung und Entversatz der Spuren der Verbindung. Ferner können die Vorrichtungen den Timer (der z.B. das L0c-Intervall realisiert) benutzen, um Eintritt der Vorrichtungen und der Verbindung in den angeforderten Zustand zu synchronisieren, neben anderen Beispielen.
  • Bei einer Ausführungsform kann eine Plattform einen Takt umfassen, der als der Referenztakt für Vorrichtungen im System dient. Der Takt kann in die Daten eingebettet werden, so dass es keine getrennten Taktspuren gibt. Das Taktsignal kann aus empfangenden Daten extrahiert werden. Ferner können die über die Spuren gesendeten Flits verwürfelt werden, um Taktwiedergewinnung zu erleichtern. Als ein Beispiel kann die Empfängertaktwiedergewinnungseinheit Abtasttakte an einen Empfänger abliefern (d.h., der Empfänger gewinnt den Takt aus den Daten wieder und verwendet ihn zum Abtasten der ankommenden Daten). Empfänger passen sich bei einigen Implementierungen kontinuierlich an einen ankommenden Bitstrom an. Durch Einbetten des Takts kann das Pinout potentiell verringert werden. Einbettung des Takts in die Inbanddaten kann jedoch die Art und Weise ändern, auf die Inband-Rücksetzen angegangen wird. Bei einer Ausführungsform kann nach Initialisierung ein blockierender Verbindungszustand (BLS) benutzt werden. Außerdem können Supersequenzen elektrisch geordneter Mengen während der Initialisierung benutzt werden, um das Rücksetzen (z.B. wie oben beschrieben) zu erleichtern, neben anderen Betrachtungen. Der eingebettete Takt kann zwischen den Vorrichtungen auf einer Verbindung gemeinsam sein und der gemeinsame Betriebstakt kann während Kalibration und Konfiguration der Verbindung gesetzt werden.
  • Bei einigen Implementierungen von UPI kann Adaptierung von Spuren auf einer Verbindung unterstützt werden. Die Bitübertragungsschicht kann sowohl Empfängeradaptierung als auch Adaptierung von Sender oder Absender unterstützen. Mit Empfängeradaptierung kann der Sender auf einer Spur Probendaten zu dem Empfänger senden, die die Empfängerlogik verarbeiten kann, um Unzulänglichkeiten der elektrischen Kenngrößen der Spur und Qualität des Signals zu identifizieren. Der Empfänger kann dann auf der Basis der Analyse der empfangenen Probendaten Justierungen an der Kalibration der Spur vornehmen, um die Spur zu optimieren. Im Fall von Senderadaptierung kann der Empfänger wieder Probendaten empfangen und Metriken entwickeln, die die Qualität der Spur beschreiben, aber in diesem Fall die Metriken zum Sender (z.B. unter Verwendung eines Rückkanals wie etwa einer Software, einer Hardware, eines eingebetteten Seitenband- oder anderen Kanals) übermitteln, damit der Sender auf der Basis der Rückmeldung Justierungen an der Spur vornehmen kann. Empfängeradaptierung kann am Anfang des Abfragezustands unter Verwendung der von dem entfernten Sender gesendeten Abfrage-Supersequenz eingeleitet werden. Ähnlich kann Senderadaptierung erfolgen, indem Folgendes für jeden Senderparameter wiederholt wird. Beide Agenten können als Master in den Rückschleifenmusterzustand eintreten und spezifiziertes Muster senden. Beide Empfänger können die Metrik (z.B. BER) für diese bestimmte Sendereinstellung in einem entfernten Agenten messen. Beide Agenten können zum Rückschleifen-Markierungszustand gehen und dann Rücksetzen und Rückkanäle (TLS im langsamen Modus oder Seitenband) zum Austausch von Metriken verwenden. Auf der Basis dieser Metriken kann die nächste Sendereinstellung identifiziert werden. Letztendlich kann die optimale Sendereinstellung identifiziert und für nachfolgende Verwendung (z.B. während des aktiven Verbindungszustands) abgespeichert werden.
  • Bei der Adaptierung kann ein Sender eines Agenten ein zufälliges oder pseudozufälliges Muster zu einem entfernten Empfänger senden. In einigen Fällen können verwürfelte Supersequenzen als das Muster verwendet werden. Logik im Empfänger kann Kenngrößen einer oder mehrerer Spuren der Verbindung bestimmen und Metrikdaten erzeugen, die diese Kenngrößen beschreiben. Im Fall der Empfängeradaptierung kann der Empfänger auf der Basis der Metriken versuchen, optimale Konfigurationen für eine Spur zu bestimmen, und diese Konfigurationen im Empfänger anwenden. Im Fall von Senderadaptierung kann der Empfänger Metriken zum Sender zur Verwendung durch den Senderagenten zum Konfigurieren und Anpassen der Spur auf der Basis der Metrik übermitteln. In jedem Fall kann bei einigen Implementierungen Hardware oder Software benutzt werden, um verschiedene Sendeeinstellungen in algorithmischer Reihenfolge zu bewerten, um die optimalen Einstellungen zu bestimmen.
  • Empfängeradaptierung kann am Anfang des Abfragezustands unter Verwendung der von dem entfernten Sender gesendeten Abfrage-Supersequenz eingeleitet werden. Ähnlich kann Senderadaptierung durch Wiederholen von Folgendem für jeden Senderparameter erfolgen. Beide Agenten können als Master in den Rückschleifenmusterzustand eintreten und spezifiziertes Muster senden. Ferner können beide Empfänger die Metrik (z. B. BER) für diese bestimmten Sendereinstellung in einem entfernten Agenten messen. Beide Agenten können zum Rückschleifen-Markierungszustand gehen und dann Rücksetzen und Rückkanäle (TLS im langsamen Modus oder Seitenband) zum Austausch von Metriken verwenden. Auf der Basis dieser Metriken kann die nächste Sendeeinstellung identifiziert werden. Letztendlich kann die optimale Sendeinstellung identifiziert und für nachfolgende Verwendung abgespeichert werden.
  • Einige UPI benutzende Systeme und Vorrichtungen können deterministisch sein, so dass ihre Transaktionen und Interaktionen mit anderen Systemen, darunter Kommunikation über eine UPI-Verbindung, mit bestimmten Ereignissen in dem System oder der Vorrichtung synchronisiert sind. Eine solche Synchronisation kann gemäß einem Plantenausrichtungspunkt oder -signal entsprechend den deterministischen Ereignissen stattfinden. Zum Beispiel kann man mit einem Planetenausrichtungssignal Zustandsübergänge, darunter Eintritt in einen Verbindungssendezustand, mit anderen Ereignissen in der Vorrichtung synchronisieren. In einigen Fällen können Sync-Zähler verwendet werden, um Ausrichtung mit einer Planetenausrichtung einer Vorrichtung aufrechtzuerhalten. Zum Beispiel kann jeder Agent einen lokalen Sync-Zähler umfassen, der durch ein planetenausgerichtetes Signal initialisiert wird (d.h. gemeinsam und gleichzeitig (mit Ausnahme eines festen Versatzes) für alle Agenten/Schichten, die synchronisiert sind). Dieser Sync-Zähler kann Ausrichtungspunkte selbst in heruntergefahrenen oder energiesparenden Zuständen (z.B. im L1-Zustand) korrekt zählen und kann zum Timen des Initialisierungsprozesses (nach Rücksetzen oder L1-Austritt) verwendet werden, einschließlich der Grenzen (d.h. Anfang oder Ende) einer EIEOS (oder anderen EOS), die in einer während Initialisierung benutzten Supersequenz enthalten ist. Solche Supersequenzen können feste Größe und größere als maximal mögliche Latenz auf einer Verbindung aufweisen. EIEOS-TS-Grenzen in einer Supersequenz können somit als Stellvertreter für einen Fern-Sync-Zählerwert verwendet werden.
  • Ferner kann UPI Master-Slave-Modelle unterstützen, wobei eine deterministische Master-Vorrichtung bzw. ein deterministisches Master-System das Timing der Interaktion mit einer anderen Vorrichtung gemäß ihren bzw. seinen eigenen Planetenausrichtungsmomenten ansteuern kann. Ferner kann in einigen Beispielen Master-Master-Determinismus unterstützt werden. Master-Master- oder Master-Slave-Determinismus kann sicherstellen, dass sich zwei oder mehr Verbindungspaare in der Sicherungsschicht und darüber im Gleichschritt befinden können. Beim Master-Master-Determinismus kann der Austritt aus der Initialisierung jeder Richtung durch jeweiligen Sender gesteuert werden. Im Fall des Master-Slave-Determinismus kann ein Master-Agent den Determinismus des Verbindungspaars (d.h. in beiden Richtungen) steuern, indem ein Slave-Senderinitialisierungsaustritt zum Beispiel auf seinen Empfänger wartengelassen wird, um aus der Initialisierung auszutreten, neben anderen potentiellen Beispielen und Implementierungen.
  • Bei einigen Implementierungen kann ein Synchronisations-(oder „Sync“-)Zähler in Verbindung mit dem Aufrechterhalten von Determinismus in einer UPI-Umgebung benutzt werden. Zum Beispiel kann ein Sync-Zähler dafür implementiert werden, eine definierte Menge zu zählen, wie etwa 256 oder 512 UI. Dieser Sync-Zähler kann durch ein asynchrones Ereignis rückgesetzt werden und kann kontinuierlich (mit Roll-Over) von dort aus zählen (potentiell selbst während eines energiesparenden Verbindungszustands). Rücksetzungen auf Anschlussbasis (z.B. Einschalt-Rücksetzen, warmes Rücksetzen) können Synchronisierungsereignisse sein, die einen Sync-Zähler rücksetzen, neben anderen Beispielen. Bei einer Ausführungsform können diese Ereignisse auf zwei Seiten mit Versatz von weniger (und in vielen Fällen viel weniger) als dem Sync-Zählerwert auftreten. Während der Initialisierung kann der Anfang der gesendeten geordneten Austrittsmenge (z.B. EIEOS), die einer Trainingssequenz einer Trainingssupersequenz vorausgeht, mit dem Rücksetzwert des Sync-Zählers ausgerichtet werden (z.B. Sync-Zähler-Roll-Over). Solche Sync-Zähler können in jedem Agenten auf einer Verbindung unterhalten werden, um so mittels Aufrechterhaltung konstanter Latenz von Flit-Übertragungen über eine bestimmte Verbindung Determinismus zu bewahren.
  • Unter anderen Signalen können Steuersequenzen und -codes mit einem Planetenausrichtungssignal synchronisiert werden. Zum Beispiel können EIEOS-Sequenzen, BLS- oder L0c-Fenster (und darin enthaltene Codes), SDS usw. dafür konfiguriert werden, mit einer Planetenausrichtung synchronisiert zu sein. Ferner können Synchronisationszähler gemäß einem externen Signal, wie etwa einem Planetenausrichtungssignal von einer Vorrichtung, rückgesetzt werden, um so selbst mit der Planetenausrichtung synchronisiert zu werden, neben anderen Beispielen.
  • Sync-Zähler beider Agenten auf einer Verbindung können synchronisiert werden. Rücksetzen, Initialisieren oder Neuinitialisierung einer Verbindung kann ein Rücksetzen der Sync-Zähler umfassen, um die Sync-Zähler neu miteinander und/oder einem externen Steuersignal (z.B. einem Planetenausrichtungssignal) auszurichten. Bei einigen Implementierungen können Sync-Zähler nur mittels eines Eintritts in einen Rücksetzzustand rückgesetzt werden. In einigen Fällen kann Determinismus ohne ein Rücksetzen des Sync-Zählers aufrechterhalten werden, wie etwa bei einer Rückkehr zu einem LO-Zustand. Stattdessen können andere bereits auf eine Planetenausrichtung abgestimmte Signale oder ein anderes deterministisches Ereignis als Stellvertreter für ein Rücksetzen verwendet werden. Bei einigen Implementierungen kann eine EIEOS bei einem deterministischen Zustandseintritt verwendet werden. In einigen Fällen kann die Grenze der EIEOS und eine anfängliche TS einer Supersequenz zum Identifizieren eines Synchronisationsmoments und Synchronisieren von Sync-Zählern eines der Agenten auf einer Verbindung verwendet werden. Das Ende einer EIEOS kann zum Beispiel verwendet werden, um das Potential von die Startgrenze der EIEOS verfälschenden Transienten zu vermeiden, neben anderen Beispielen.
  • Latenzfixierung kann bei einigen Implementierungen von UPI auch bereitgestellt werden. Latenz kann nicht nur die durch die Übertragungsleitung, die zur Übermittlung von Flits verwendet wird, eingeführte Latenz umfassen, sondern auch die Latenz, die sich aus Verarbeitung durch den Agenten auf der anderen Seite der Verbindung ergibt. Latenz einer Spur kann während der Initialisierung der Verbindung bestimmt werden. Ferner können auch Änderungen der Latenz bestimmt werden. Aus der bestimmten Latenz kann Latenzfixierung eingeleitet werden, um solche Änderungen zu kompensieren und die für die Spur erwartete Latenz auf einen konstanten erwarteten Wert zurückzuführen. Die Aufrechterhaltung einheitlicher Latenz auf einer Spur kann für das Aufrechterhalten von Determinismus in einigen Systemen kritisch sein.
  • Latenz kann bei einigen Implementierungen unter Verwendung eines Latenzpuffers in Verbindung mit Determinismus in einer Empfänger-Sicherungsschicht auf einen programmierten Wert fixiert und durch Starten eines Detektierens (z.B. durch Senden einer Detektions-Supersequenz) an einem Sync-Zähler-Roll-Over freigegeben werden. Dementsprechend kann in einem Beispiel eine gesendete EIEOS (oder andere EOS) bei der Abfragung und Konfiguration an einem Sync-Zähler-Roll-Over auftreten. Anders ausgedrückt kann die EIEOS präzise mit dem Sync-Zähler ausgerichtet werden, so dass eine synchronisierte EIEOS (oder andere EOS) in einigen Fällen als Stellvertreter für den Sync-Zählerwert selbst dienen kann, zumindest in Verbindung mit bestimmten Latenzfixierungsaktivitäten. Zum Beispiel kann ein Empfänger genug Latenz zu einer empfangenen EIEOS hinzufügen, so dass sie die vorgeschriebene Ziellatenz an der Schnittstelle von Bitübertragungsschicht und Sicherungsschicht erfüllt. Wenn beispielsweise die Ziellatenz 96 UI ist und die Empfänger-EIEOS nach Entversatz bei einem Sync-Zählerwert von 80 UI liegt, können 16 UI Latenz hinzugefügt werden. Bei gegebener Synchronisation einer EIEOS kann im Wesentlichen Latenz einer Spur auf der Basis der Verzögerung zwischen wann die EIEOS bekanntlich gesendet wurde (z.B. bei einem bestimmten Sync-Zählerwert) und wann die EIEOS empfangen wurde, bestimmt werden. Ferner kann Latenz unter Verwendung der EIEOS fixiert werden (z.B. durch Hinzufügen von Latenz zur Übertragung einer EIEOS, um eine Ziellatenz aufrechtzuerhalten, usw.).
  • Latenzfixierung kann im Kontext von Determinismus verwendet werden, um es einer externen Entität (wie etwa einer ein Planetenausrichtungssignal bereitstellenden Entität) zu erlauben, den physischen Zustand zweiter Agenten über die Verbindung in zwei Richtungen zu synchronisieren. Ein solches Merkmal kann zum Beispiel bei Debugging-Problemen am Einsatzort und zur Unterstützung von Gleichschrittverhalten verwendet werden. Dementsprechend können solche Implementierungen externe Steuerung eines oder mehrerer Signale umfassen, die bewirken können, dass die Bitübertragungsschicht auf zwei Agenten zu einem sendenden Verbindungszustand (TLS) übergeht. Agenten, die Determinismusfähigkeiten besitzen, können die Initialisierung an einer TS-Grenze verlassen, die auch potentiell die saubere Flit-Grenze ist, wenn oder nachdem das Signal gesetzt wird. Master-Slave-Determinismus kann einem Master erlauben, den Bitübertragungsschichtzustand von Master- und Slaveagenten über die Verbindung in beiden Richtungen zu synchronisieren. Wenn er freigegeben ist, kann der Slave-Senderaustritt aus der Initialisierung von seinem Empfängeraustritt aus der Initialisierung abhängen (z.B. diesem folgen oder mit ihm koordiniert sein) (zusätzlich zu anderen Betrachtungen auf der Basis von Determinismus). Agenten, die über Determinismusfähigkeit verfügen, können zusätzlich Funktionalität zum Eintritt in einen BLS oder ein L0c-Fenster an einem sauberen Flit besitzen, neben anderen Beispielen.
  • Bei einigen Implementierungen kann Determinismus bei UPI umfassen, die Fähigkeit eines Agenten zum Bestimmen und Anwenden einer Verzögerung auf der Basis eines deterministischen Signals zu erleichtern. Ein Master kann eine Angabe einer Ziellatenz zu einem entfernten Agenten senden. Der entfernte Agent kann tatsächliche Latenz auf einer Spur bestimmen und eine Verzögerung anwenden, um die Latenz zu justieren, um die Ziellatenz (die z.B. in einer TS identifiziert wird) zu erfüllen. Justierung der Verzögerung oder Latenz kann dabei helfen, den letztendlichen synchronisierten Eintritt in einen Verbindungssendezustand an einem Planetenausrichtungspunkt zu erleichtern. Ein Master kann einen Verzögerungswert zu einem Slave übermitteln, zum Beispiel in TS-Nutzinformationen einer Supersequenz. Die Verzögerung kann eine konkrete für die Verzögerung bestimmte Anzahl UI spezifizieren. Der Slave kann den Eintritt in einen Zustand auf der Basis der bestimmten Verzögerung verzögern. Solche Verzögerungen können zum Beispiel verwendet werden, um Prüfen zu erleichtern, um L0c-Intervalle auf Spuren einer Verbindung zu staffeln, neben anderen Beispielen.
  • Wie oben erwähnt kann ein Zustandsausritt gemäß einem Planetenausrichtungspunkt stattfinden. Zum Beispiel kann eine SDS gesendet werden, um eine Zustandssupersequenz zu unterbrechen, kann zum Ansteuern des Übergangs von dem Zustand zu einem anderen Zustand. Das Senden der SDS kann so getimt werden, dass es mit einem Planetenausrichtungspunkt zusammenfällt, und in einigen Fällen als Reaktion auf ein Planetenausrichtungssignal. In anderen Fällen kann das Senden einer SDS mit einem Planetenausrichtungspunkt auf der Basis eines Sync-Zählerwerts oder anderen mit der Planetenausrichtung synchronisierten Signals synchronisiert werden. Eine SDS kann an einem beliebigen Punkt in einer Supersequenz gesendet werden, in einigen Fällen als Unterbrechung einer bestimmten TS oder EIEOS usw. der Supersequenz. Dies kann sicherstellen, dass der Zustand mit wenig Verzögerung übergeht, während Ausrichtung mit einem Planetenausrichtungspunkt aufrechterhalten wird, neben anderen Beispielen.
  • Bei einigen Implementierungen können Hochgeschwindigkeitsverbindungen, wie etwa diejenigen, die UPI unterstützen und benutzen, aufgrund der elektrischen Anforderungen an die die Verbindungen implementierenden physischen Leitungen bezüglich Länge beschränkt werden. Es können Verbindungsverlängerungsvorrichtungen bei einigen Implementierungen benutzt werden, um effektiv Verbindungsabschnitte zusammen zu „splicen“, um eine Verbindung mit einer Länge von mehr als traditionellen Beschränkungen zu bilden. Zum Beispiel können elektrische Treiber/Empfänger in einer Implementierung eines UPI-Systems auf elektrische Kanäle begrenzter Länge und Bandbreite (z.B. 24" von FR4 bei 10,4 GBS) optimiert werden. Dies kann für geometrisch kleinere Architekturen akzeptabler sein, aber bei Systemen, die größere Formfaktoren verwenden, wie etwa Server-Racks und andere größere Hochgeschwindigkeitssysteme können Erweiterungs- oder Repeater-Vorrichtungen wie Retimer oder Redriver verwendet werden, um die Länge der Verbindung zu verlängern. Ferner können optische Verbindungen eingeführt werden, um einen Abschnitt der elektrischen Verbindung zu ersetzen oder zu ergänzen und dadurch die Distanzen von UPI unterstützenden physischen Verbindungen zu vergrößern.
  • Mit zunehmenden Signalisierungsfrequenzen serieller Verbindungselemente (z.B. PCIe, USB, UPI, TBT, DP, usw.) werden die Kanallängen, die ökonomisch angesteuert werden können, kürzer. Gleichzeitig benötigen neue Plattformkonfigurationen (z.B. Server-Racks) oft größere Kanallängen. Einige Implementierungen versuchen, hohe Kanaldämpfung durch Benutzung von verlustarmen Materialien für längere Kanäle anzugehen, die Verwendung solcher Materialien kann jedoch zu kostspielig werden. In einem anderen Beispiel kann Retimer benutzt werden, um eine Verbindung zu verlängern. Retimer erzeugen das Signal, dass sie von einer sendenden Vorrichtung empfangen, und leiten das neu erzeugte Signal zu einer empfangenden Vorrichtung weiter. Ein Nachteil von Retimerlösungen besteht darin, dass sie hohe Latenz einführen, was sich negativ auf die Leistungsfähigkeit von Verbindungselementen mit hoher Geschwindigkeit und niedriger Latenz, wie etwa UPI, auswirkt. Eine dritte Möglichkeit ist die Verwendung von Redrivern, die eine kosteneffektive Weise zur Vergrößerung der Kanallängen bereitstellen, ohne zu viel Latenz hinzuzufügen. Redriver zeigen besonderen Wert in Verbindungselementen mit niedriger Latenz wie PCIe, USB, UPI, TBT, DP und anderen. 11 ist eine vereinfachte Blockdarstellung einer Verbindung, die einen Redriver 1105 benutzt. In dem Beispiel von 11 ist eine Redrivervorrichtung 1105 vorgesehen, die Empfangsseite des Redrivers 1105 mit dem Sender der Vorrichtung 1110 verbunden und die Sendeseite des Redrivers 1105 mit der Empfangsvorrichtung 1115 verbunden. Redriver (z.B. 1105) sind typischerweise analoge Vorrichtungen, die die Eingangssignale, die sie (z.B. von einer sendenden (Tx)-Vorrichtung) empfangen, neu formen, bevor sie das Signal wieder heraus an die beabsichtigte Empfänger-(Rx)-Vorrichtung ansteuern, indem das Signal verstärkt wird, um etwaige zusätzliche Verluste in dem langen Kanal zu kompensieren, die andernfalls die Fähigkeit des Treibers und Empfängers und von Endpunkten (z.B. 1110, 1115) übersteigen könnten. Die Nachfrage nach solchen Vorrichtungen wird wahrscheinlich weiter zunehmen, wenn die Zunahme der E/A-Bandbreite die Verbesserung von Verbindungselementen überholt, wie etwa derjenigen, die benutzt werden, um die Verringerung von Verlusten auf der Leiterplatte (PCB) anzugehen, aufgrund von Plattformkostenbeschränkungen und anderen Faktoren.
  • Wie oben erwähnt können bei einigen Implementierungen eines UPI Rückschleifen- und andere Verbindungsprüf- oder -diagnosezustände bereitgestellt werden, um die Leistungsfähigkeit einer Verbindung zu prüfen und zu verbessern. Zum Beispiel stellt wie in 12 gezeigt eine vereinfachte Blockdarstellung serielles Verbindungsprüfen unter Verwendung von Rückschleifen dar. Ein oder mehrere Signale (z.B. spezialisiert zum Prüfen bestimmter Aspekte der Qualität der Verbindung oder anderer Signale) können durch eine Rückschleifen-Master-Vorrichtung über die Verbindung zu dem Rückschleifen-Slave gesendet werden. Der Rückschleifen-Slave wiederholt das Signal dann so, wie es empfangen wurde, indem es in der anderen Richtung auf der Verbindung zum Rückschleifen-Master rückgeschleift wird. Die als Rückschleifen-Master dienende Vorrichtung kann das ankommende rückgeschleifte Signal untersuchen, um zu bestimmen, ob es mit dem ursprünglich durch den Rückschleifen-Master gesendeten Signal übereinstimmt. Wenn sich Bit in dem rückgeschleiften Signal von dem ursprünglichen Signal unterscheiden, können ein oder mehrere Fehler angenommen werden. Außerdem können zusätzlich auf Software und/oder Hardware basierende Werkzeuge in Verbindung mit dem Rückschleifen-Master verwendet werden, um das rückgeschleifte Signal zu analysieren und die Quelle der Fehler und/oder Justierungen, die an der Verbindung (z.B. der Senderlogik) vorgenommen werden können, um diese Fehler zu korrigieren, zu bestimmen. Wie oben erwähnt kann Rückschleifen beim Training oder der Konfiguration der Verbindung benutzt werden. Wie zum Beispiel in 7 gezeigt, kann nach Detektions- und Abfragezustänaen, bevor die Verbindung in einen L0-Zustand eintritt, in einen Rückschleifenzustand eingetreten werden. In anderen Fällen kann erneut in einen Rückschleifenzustand eingetreten werden, um eine Verbindung, von der bestimmt wurde, dass sie suboptimal arbeitet, umzukonfigurieren oder neu zu trainieren. In jedem Fall können optimale Einstellungen der Senderlogik mittels Rückschleifenprüfung bestimmt werden, da verschiedene Einstellungen unter Verwendung von Rückschleifen analysiert werden, um zu bestimmen, welche Einstellungen die Signalisierung bester Qualität auf der Verbindung produzieren. Auf das Bestimmen dieser Einstellungen hin kann die Rückschleifenprüfung (und der Verbindungszustand) verlassen und die Verbindung für aktive Signalisierung (z.B. in einem L0-, L0p- oder L0c-Zustand) vorbereitet werden, neben anderen Beispielen.
  • Traditionelle Redriver können in einigen Fällen die Verwendung von Rückschleifen verkomplizieren oder sogar ausschließen. Herkömmliche Redriver sind im Wesentlichen Verstärker - sie empfangen ein Signal, verstärken es und leiten es auf der Verbindung zu einem anderen Redriver oder einem Endpunkt weiter. Redriver sind primär Linearverstärker. Mit ihrer relativen Einfachheit sind Redriver in der Lage, Verbindungen zu verlängern, ohne wesentliche Mengen an Latenz zur Verbindung hinzuzufügen. Die Einführung eines herkömmlichen Redrivers in einen Rückschleifenpfad gefährdet jedoch die Möglichkeit von Prüf- oder Systemverwaltungslogik, die Quelle eines Fehlers in einem Rückschleifenpfad zu bestimmen. 13A-13B zeigen Implementierungen von Redrivern, die in einer Verbindung während einer Rückschleifenprüfung enthalten sind. In jedem Fall kann der sendende Endpunkt (oder Rückschleifen-Master) 1110 ein Rückschleifenmuster über einen Redriver (z.B. 1105, 1105a) zu der empfangenden Vorrichtung (oder dem Rückschleifen-Slave 1115) senden. Der Rückschleifen-Slave 1115 kann das Rückschleifenmuster untersuchen, um zu bestimmen, ob ein Fehler aufgetreten ist. Wenn ein Fehler detektiert wird, kann der Rückschleifen-Slave 1115 jedoch identifizieren, ob der Fehler ein Ergebnis des Rückschleifen-Masters 1110 oder des Redrivers (z.B. 1105, 1105a) war. Tatsächlich kann der Rückschleifen-Slave 1115 sogar gegenüber dem Umstand blind sein, dass der Redriver auf der Verbindung anwesend ist. Außerdem kann der herkömmliche Redriver mit seiner begrenzten Funktionsfähigkeit keine die Quelle des Fehlers identifizierenden Informationen beitragen. Wenn das Rückschleifenmuster rückgeschleift und von dem Rückschleifen-Slave 1115 zum Rückschleifen-Master zurückgesendet wird, wird es des Weiteren auch über einen Redriver (z.B. 1105, 1105b) gesendet. Falls der Rückschleifen-Master einen Fehler in dem zurückgegebenen Rückschleifenmuster detektieren sollte, ist der Rückschleifen-Master ähnlich nicht in der Lage, die Quelle des Fehlers zu bestimmen, da er entweder auf den Rückschleifen-Master 1110, den Rückschleifen-Slave 1115 oder den Redriver (z.B. 1105, 1105a, 1105b) zurückzuführen sein könnte. Jede am Sender (oder Empfänger) als Reaktion auf den Rückschleifenfehler vorgenommene Justierung hat dementsprechend keine Garantie, das Ergebnis zu korrigieren (z.B. wenn der Redriver für den Fehler verantwortlich ist). Es wird hier ein verbesserter Redriver beschrieben, der (in Hardware und/oder Software implementierte) Logik umfasst, um mindestens einige der oben eingeführten beispielhaften Probleme anzugehen.
  • Nunmehr mit Bezug auf die Darstellungen in 13A-13B kann eine einzelne bidirektionale Verbindung entweder unter Verwendung einer einzigen Redriver-Vorrichtung 1105 (mit zwei oder mehr distinkten Verstärkern von Rx zu Tx) verlängert werden, wie in 13A, oder unter Verwendung von zwei getrennten Redriver-Vorrichtungen, wie in 13B gezeigt. In einigen Fällen ist die Positionierung des Redrivers relativ zu den sendenden und empfangenden Vorrichtungen nicht einfach und kann den Einsatz verkomplizieren. Zum Beispiel kann es wünschenswert sein, einen Redriver in dichterer Nähe zu einem Sender (entweder der sendenden oder empfangenden Vorrichtung) als dem Empfänger der Vorrichtung zu platzieren, wodurch der Einsatz einer einzigen Redriver-Vorrichtung (wie in 13A) problematisch wird. Tatsächlich können optimale Platzierungsorte für Redriver manchmal die Verwendung einer einzigen Redriver-Vorrichtung (z.B. einer Redriver-Vorrichtung mit zwei oder mehr Redrivern auf demselben Stück Silicium) zum Neuansteuern von Signalen in beiden Richtungen einer Verbindung ausschließen. Zum Beispiel können nunmehr mit Bezug auf 13B bei einigen Implementierungen zwei Redriver 1105a, 1105b verwendet werden, wobei ein Redriver 1105a mit Signalen von Vorrichtung A 1110 zur Vorrichtung B 1115 umgeht und der andere Redriver 1105B mit Signalen von Vorrichtung B 1115 zu Vorrichtung A 1110 umgeht. Redriver sind primär Linearverstärker. Da die Redriver 1105a, 1105b in diesem Beispiel mit verschiedenen Vorrichtungen verbunden sind, können sie jedoch nicht wie beim traditionellen Rückschleifen geprüft werden.
  • Wie oben eingeführt, können einige Prüf- und Verbindungstrainingstechniken in Verbindungen, die einen oder mehrere Redriver benutzen, kompliziert oder unmöglich sein. Ohne akzeptable Prüfverfahren wird jedoch zuverlässige Konfiguration und Funktionsweise der Verbindung gefährdet. Solche Komplikationen können dementsprechend großflächigen Einsatz und Verwendung von Redrivern in Verbindungselementen, die solche Verbindungstrainings- und -prüfsequenzen verwenden, begrenzen oder ausschließen. Ferner ist es beim Einsatz einer Verbindung (z.B. mit einem Redriver) wünschenswert, die Verbindungsmarginalität (z.B. erhöhte Fehlerraten) und andere Metriken, die auch durch die Aufnahme von Redrivern kompromittiert werden können, zu diagnostizieren. Die vorliegende Offenbarung bespricht Konzepte, die diese und andere Probleme angehen können, wie etwa die Ermöglichung des Prüfens und Diagnostizierens von Verbindungen mit Redrivern dergestalt, dass Redriver in allen Plattformen eingesetzt werden können, ohne Training, Prüfung oder Leistungsfähigkeit zu beeinträchtigen.
  • 14 zeigt eine vereinfachte Blockdarstellung 1400 einer beispielhaften Implementierung erweiterter Redriver 1 105a,b, die jeweils in Hardwareschaltkreisen und/oder Software implementierte Diagnostiklogik 1405 umfassen, durch die jeder Redriver 1105a,b Muster im Rückschleifen (und potentiell anderen Prüfzuständen) bewerten und Rückmeldung hinsichtlich etwaiger Fehler oder Musterunregelmäßigkeiten, die im Redriver identifiziert werden, bereitstellen kann. Die Redriver 1105a,b können die Ergebnisse der durch die Diagnostiklogik 1405 durchgeführten Bewertungen Systemverwaltungssoftware 1410, wie etwa einem Prüfmanager 1415, zur Verfügung stellen. Der Prüfmanager kann durch jeden von dem Rückschleifen-Master 1110 und Rückschleifen-Slave 1115 detektierte Ergebnisse sowie Ergebnisse der Diagnostiklogik 1405 in jedem der Redriver 1105a,b bewerten, um die Quelle(n) etwaiger Unregelmäßigkeiten auf der Verbindung zu bestimmen. Ferner kann der Prüfmanager 1415 weiteres Prüfen der Verbindung anleiten, indem Justierung von Einstellungen des Rückschleifen-Masters 1110 oder Rückschleifen-Slave 1115 bewirkt werden (z.B. um entsprechende detektierte Fehler zu berücksichtigen), aber der Prüfmanager 1415 kann auch mit den Redrivern 1105a,b kommunizieren oder Daten zu diesen senden, um zu bewirken, dass Einstellungen der Übertragungs-, Verstärker- oder Empfangslogik der Redriver justiert werden, um den Bereich zu korrigieren. Mittels der erweiterten Logik der Redriver kann dementsprechend jeder Zweig der Verbindung (z.B. zwischen Endpunkten und Redrivern) bewertet, trainiert und optimiert werden. Eine solche Optimierung kann ferner Marginierung nicht nur der Endpunkte (z.B. 1110, 1115), sondern auch der Redriver (z.B. 105a,b) umfassen.
  • Es versteht sich, dass, obwohl das Beispiel von 14 eine Implementierung einer Verbindung zeigt, die zwei getrennte erweiterte Redriver-Vorrichtungen (z.B. 1105a,b) verwendet, ähnlich wie bei der in 13B eingeführten Implementierung Diagnostiklogik (z.B. 1405), etwa wie hier beschrieben, gleichermaßen auf Implementierungen angewandt werden kann, die eine einzige Redriver-Vorrichtung auf einer gegebenen Verbindung benutzen, wie etwa in dem Beispiel von 13A gezeigt, neben anderen alternativen Implementierungen.
  • Nunmehr mit Bezug auf 15 ist eine vereinfachte Blockdarstellung eines Beispiels für eine erweiterte Redriver-Vorrichtung mit Diagnostiklogik gezeigt. In 15 ist der Redriver-Pfad für eine Spur vom Empfänger 1510 zum Sender 1515 des Redrivers gezeigt. Redriver-Schaltkreise können einen Verstärker 1505 umfassen, der Signale, die er von der Ursprungsvorrichtung (an den Rx-Anschlüssen 1510 des Redrivers) empfängt, und das verstärkte Signal zur empfangenden Vorrichtung (an den Tx-Anschlüssen 1515 des Redrivers) weitersendet. Zusätzlich zu diesen herkömmlichen Redriver-Komponenten können Diagnostikkomponenten in dem verbesserten Redriver 1105 vorgesehen werden. Diagnostikkomponenten wären zum Beispiel ein CDR 1520, Driftpuffer 1525, Fibonacci-LFSR 1530 und Musterprüfer 1535. Das CDR 1520 wird auf der Rx-Spur vorgesehen und dient zum Wiederherstellen des Takts. Dieser Takt (oder eine geteilte Version davon (aus demselben oder einem anderen Teiler)) dient zum Takten der ankommenden Bit in einem FIFO-Driftpuffer und steuern zusätzlich die übrige Diagnostiklogik an, wie etwa das NFSR 1430 und den Musterprüfer 1435. In einem Beispiel kann der Takt aus Signalen hergestellt werden, die von einem Sender einer anderen Vorrichtung empfangen werden, darunter Rückschleifensignale (z.B. PRBS), die während Rückschleifenprüfung der Verbindung empfangen werden.
  • Unter Verwendung dieser zusätzlichen Diagnostikschaltkreise kann der Redriver an einem Rückschleifenzustand teilnehmen, ohne die Effektivität der Redriver oder der Rückschleifenprüfung zu stören. Tatsächlich können die zusätzlichen Diagnostikkomponenten (z.B. 1520, 1525, 1530, 1535) unabhängig vom Betrieb der Kern-Redriving-Funktionalität (die z.B. mittels des Verstärkers 1505 und der Empfänger- und Sendeanschlüsse 1510, 1515 bereitgestellt wird) und parallel mit diesen arbeiten, um so keinerlei zusätzliche Latenz in das Redriving von Signalen durch den Redriver einzuführen.
  • In einem Beispiel kann der erweiterte Redriver an einer Rückschleifenprüfung, wie etwa oben eingeführt, teilnehmen. Ein Rückschleifenprozess kann damit beginnen, dass Master und Slave geordnete Mengen (OS) und verwürfelte Trainingssequenzen (TS) (z.B. mit einer PRBS verwürfelt) zum Synchronisieren der Endpunktvorrichtung senden. In einigen Fällen kann Diagnostiklogik des Redrivers bzw. der Redriver bezüglich dieser anderen Signale agnostisch sein, stattdessen ausgelegt zum Behandeln derjenigen Aspekte der Prüfung, bei denen die Teilnahme des Redrivers am nützlichsten ist. Im Rückschleifenzustand gesendete anfängliche Signale (z.B. TS und OS) können dementsprechend im Redriver nicht verwendet oder berücksichtigt werden und werden einfach neu zum entsprechenden Endpunkt angesteuert. Bei anderen Implementierungen kann Diagnostiklogik des Redrivers diese und andere Signale benutzen. Zum Beispiel kann ein Mehrspur-Redriver diese anfänglichen OS- und TS-Signale verwenden, um seine Spuren zu entvesetzen und Teilen eines Teils der Redriver-Diagnostiklogik (z.B. des LSFR 1530) zwischen den Redriver-Spuren zu erlauben. Nach dem Aufsynchronisieren senden der Master eine einzige OS des Typs Startdatensequenz (SDS), gefolgt von einer PRBS, die aus dem Fibonacci-LFSR abgeleitet werden kann. Bei UPI kann die SDS ein 128-UI-Muster sein, von dem mindestens 10 aufeinanderfolgende Byte beim Rx angepasst werden, um Alias-Bildung mit der TS zu vermeiden. Zum Beispiel kann das SDS-Muster ein erstes Byte mit einem Wert 0xE1 sein, gefolgt von 15 aufeinanderfolgenden Byte jeweils mit dem wert 0xAA. Das SDS-Muster kann ein Muster sein, auf das die PRBS keinen Alias bildet, ein TS-, ein OS- oder ein anderes Trainings- oder Prüfmuster, dergestalt, dass die SDS unmissverständlich erkannt wird. Bei einigen Implementierungen kann dementsprechend auch ein Redriver mit Logik zum Detektieren einer in ankommenden Daten enthaltenen SDS versehen werden. Empfang und Detektion der SDS (oder eines alternativen Startsignals) kann Einschalten der Diagnostikschaltkreise des Redrivers bewirken. Als Alternative können Diagnostikschaltkreise des Redrivers kontinuierlich mit ihren Kern-Redriverschaltkreisen laufen. Außerhalb eines Prüfmodus (z.B. Rückschleife) würden die Diagnostikschaltkreise wahrscheinlich einen kontinuierlichen Strom von Fehlern erzeugen, selbst wenn Daten empfangen werden, die ähnliche PRBS umfassen oder mit diesen verwürfelt sind. Außerhalb eines durch die Diagnostikschaltkreise unterstützen Verbindungsprüf- oder -Trainingszustands können Ausgaben der Diagnostikschaltkreise dementsprechend ignoriert werden. In solchen Fällen kann Empfang und Detektion einer SDS bewirken, dass die Ausgaben/Ergebnisse der Diagnostikschaltkreise nicht mehr ignoriert werden, sondern gemeldet, aufgezeichnet oder anderweitig verarbeitet und betrachtet werden.
  • In einem Beispiel können Diagnostikschaltkreise des Redrivers auf den Beginn eines Rückschleifenmusters mittels einer SDS oder als Alternative eines Seitenbandsignals (z.B. von einem Prüfmanager) hingewiesen werden. Das Taktsignal kann unter Verwendung des CDR 1520 aus dem Rückschleifenmuster wiederhergestellt werden. In einem Beispiel kann das Rückschleifenmuster eine PRBS sein, wie etwa wie hier beschrieben. Auf das Wiederherstellen des Takts hin können nachfolgende Bit der PRBS in den Driftpuffer 1525 getaktet werden. Der Driftpuffer 1525 kann zum effektiven Neuerzeugen der empfangenen PRBS-Rückschleifensequenz zur Ablieferung an ein Fibonacci-LFSR 1530 verwendet werden, während die Redriver-Verstärkungsschaltkreise (z.B. 1505) die Originalversion der PRBS, sowie sie an seinem Empfängeranschluss bzw. seinen Empfängeranschlüssen 1510 empfangen wird, neu ansteuern. In diesem Sinne ist der erweiterte Redriver ein hybrider Redriver/Retimer, wobei die Diagnostikschaltkreise (z.B. 1520, 1525) das Signal während des Prüfens neu timen, während die Verstärkungsschaltkreise (z.B. 1505) das Signal neu auf die Verbindung ansteuern. Wie erwähnt können sukzessive Bit der geretimten PRBS gemäß dem wiederhergestellten Takt in einem Driftpuffer 1525 geschrieben werden, der dann gelesen werden kann, um die PRBS-Bit in das Fibonacci-LFSR 1530 zu transferieren, um das LFSR 1530 zu seeden. Wenn jedes Bit oder Register des LFSR mit PRBS-Bit (z.B. 23 aufeinanderfolgenden PRBS-Bit) gefüllt ist, wird es als selbst-geseedet betrachtet. Wenn es geseedet ist, kann das LFSR 1530 mit dem Eintakten von Bit aus dem Driftpuffer 1525 aufhören und sich mit der ankommenden PRBS synchronisieren. Unter Verwendung des Seed kann das LFSR (auf der Basis des Seed) eine erwartete Version der PRBS erzeugen. Ferner kann die Ausgabe des LFSR in das LFSR rückgekoppelt werden, um fortgesetzte Erzeugung der erwarteten PRBS im Verlauf der ganzen Prüfung von selbst aufrechtzuerhalten.
  • Mit dem zur kontinuierlichen Erzeugung einer erwarteten oder Grundlinienversion der PRBS, die beim Prüfen (z.B. Rückschleifen) verwendet wird, ausgestatteten LFSR kann diese erwartete PRBS bitweise mit der am Empfängeranschluss 1515 empfangenen (und im Driftpuffer 1525 gespeicherten) PRBS verglichen werden, um in dem Musterprüfer 1535 zu bestimmen, ob das empfangene Prüfmuster mit dem erzeugten Grundlinien-Prüfmuster übereinstimmt. Wenn die Muster nicht übereinstimmen, wird ein Fehler gekennzeichnet. Der Fehler kann sich entweder aus einem stromaufwärts des Redrivers entstehenden Fehler ergeben (z.B. liegt der Fehler in der empfangenen PRBS vor), oder aufgrund eines Fehlers in der durch das LFSR 1530 erzeugten PRBS (z.B. aufgrund eines Bitfehlers in dem durch das LFSR verwendeten Seed (der auch auf einen Bitfehler stromaufwärts zurückzuführen ist)). Falls das LFSR-Seed fehlerhaft ist, können die Diagnostikschaltkreise das LFSR unter Verwendung einer anderen Kette von PRBS-Bit (z.B. 23 Bit) neu seeden, um das LFSR neu zu füllen und die Erzeugung einer Grundlinien-PRBS neu zu beginnen.
  • Während Fehler in dem Musterprüfer 1535 detektiert werden, können die Fehler aufgezeichnet oder gemeldet werden. Zum Beispiel kann ein Register- oder Fehlerzähler bereitgestellt werden, der in der Diagnostiklogik des Redrivers gespeichert oder anderweitig damit assoziiert wird. Fehler können entweder durch Diagnostiklogik oder durch einen Prüfmanager, der den Redriver auf gemeldete Fehler überwacht, in das Register geschrieben werden. In einem Beispiel kann ein Seitenbandanschluss am Redriver zur Verwendung beim Angeben der Detektion von Fehlern vorgesehen werden. Der Seitenbandanschluss kann in einem Beispiel mit Prüfmanagersoftware oder einem Fehlerzähler verbunden werden. Zusätzlich kann die Redriver-Diagnostik bei einigen Implementierungen im Empfänger detektierte Fehler aggregieren, bevor die Ergebnisse auf dem Anschluss (oder dem Register) gemeldet werden, so dass die Ergebnisse durch Software mit einer langsameren Rate abgefragt werden können. Man kann auch über Befehleempfänger auf diesem Bus (z.B. von Prüfmanagementsoftware) das Prüfen stoppen und Fehler löschen.
  • Bei einigen Implementierungen kann der Rückschleifen-Slave auch zu slaveseitiger Musterprüfung während des Rückschleifens (und anderer Prüfungsverbindungszustände) fähig sein. Slaveseitiges Musterprüfen kann bei einigen Implementierungen selektiv freigegeben werden. Wenn es freigegeben ist, kann slaveseitiges Musterprüfen ein Prüfen der durch den Redriver weitergeleiteten PRBS (oder anderen Rückschleifen-Prüfsequenz) in der Rückschleifen-Slave-Vorrichtung erlauben. Bei solchen Implementierungen kann das Rückschleifenmuster im Empfänger jeder der Vorrichtungen geprüft werden, die in den in 12 und 13 dargestellten beispielhaften Implementierungen dargestellt sind, darunter Master-Vorrichtung (1110) und Slave-Vorrichtung (1115) sowie beide Redriver 1105a, 1105b, die jeweils mit der zusätzlichen Diagnostiklogik ausgestattet sind, die der in Verbindung mit dem Beispiel von 15 dargestellten und beschriebenen ähnlich (oder mit dieser identisch) ist. Auf die Ergebnisse der am Master 1110 und Slave 1115 durchgeführten Musterprüfung kann unter Verwendung von herkömmlichen Techniken zugegriffen werden. Wie in dem Beispiel von 15 erwähnt, können die Musterprüfergebnisse der zwei (oder mehr) Redriver an einem Anschluss oder Statusregistern am Redriver zur Verfügung gestellt werden, und man kann über einen Seitenbandbus (z.B. JTAG, SM, I2C-Bus) bei einigen Implementierungen (durch Verwaltungssoftware) auf diese zugreifen. Die Kombination der vier Musterprüfergebnisse kann erlauben, Fehlerergebnisse zu detektieren und zu vergleichen, um zu bestimmen, in welchem der Zweige des Rückschleifenpfads (d.h. zwischen dem Master 1110 und Redriver 1105a, zwischen Redriver 1105a und Slave-Vorrichtung 1115, zwischen Slave-Vorrichtung 1115 und Redriver 1105b und Redriver 1105b und Master-Vorrichtung 1110) der Fehler aufgetreten ist. Die Quelle des Fehlers (z.B. ein spezifischer der Endpunkte oder Redriver) kann dadurch isoliert werden. Da die Prüfprozedur den Betriebspfad des Redrivers nicht ändert, kann die Prüfprozedur außerdem mit existierender Diagnostik in Master- und Slave-Vorrichtungen (z.B. CRC-Syndromen) verwendet werden, um etwaige detektierte Probleme zu lokalisieren. Durch Bestimmen der Quelle des Fehlers kann Systemverwaltungssoftware dann Schritte unternehmen, um Einstellungen eines entsprechenden Senders (und/oder Empfängers) in diesem Zweig der Verbindung zu justieren, um das Problem zu beheben.
  • In Beispielen, bei denen ein Seitenbandanschluss vorgesehen ist, um Kommunikation zwischen Systemverwaltungssoftware und erweiterten RedriverSchaltkreisen (z.B. wie in 14) zu erlauben, können nicht nur Fehler durch Diagnostikschaltkreise unter Verwendung des Seitenbandkanals an die Systemverwaltungssoftware gemeldet werden, sondern die Systemverwaltungssoftware kann Anweisungen und Rückmeldeinformationen zu dem Redriver übermitteln, um während des Trainings und Prüfens einer entsprechenden Verbindung Justierung von Redriver-Einstellungen aufzufordern. Zum Beispiel können Prüfergebnisse angeben, dass ein Fehler auf der Spur dem Redriver zuzuschreiben ist. Dementsprechend kann Systemverwaltungssoftware den Redriver anweisen, bestimmte Betriebseinstellungen zu justieren, um zu versuchen, das Problem zu lösen. Zum Beispiel kann ein Redriver Logik zum Justieren von Entzerrungseinstellungen oder anderen Einstellungen des Redrivers als Reaktion auf solche Anweisungen besitzen. Die Prüfung (z.B. Rückschleife) kann neu laufengelassen werden (oder weiterlaufen), nachdem die Einstellungsjustierungen vorgenommen sind, um zu beobachten, ob diese Justierung (oder andere Justierungen, die an anderen Teilnehmern auf der Verbindung (z.B. Endpunkten oder Redrivern) vorgenommen werden) das Problem löst oder den Betrieb der Verbindung anderweitig verbessert.
  • Wie oben gezeigt, können Diagnostikschaltkreise dem erweiterten Redriver erlauben, an verschiedenen Prüf- und Verbindungstrainingsaktivitäten teilzunehmen. Dies kann auf der Verbindung eine komplizierte Konfiguration der Redriver ermöglichen, ähnlich wie bei Konfiguration der Endpunkte, um effektive qualitativ höherwertige Signalisierung auf der Verbindung zu erleichtern. Zum Beispiel kann mittels Mustererkennungs- und Bitfehlerdetektionsfunktionalität, die mittels Diagnostiklogik des Redrivers bereitgestellt wird, der Redriver (in Zusammenwirkung mit Systemverwaltungssoftware) an den Vorteilen der Spurmarginierungsanalyse teilnehmen und aus diesen Nutzen ziehen. 16 ist ein Graph 1600, der Prinzipien der Spurmarginierung veranschaulicht. Die Qualität einer Spur einer Verbindung kann durch Bewerten ihres „Auges“ oder „Augenmusters“ gemessen werden. Die Größe des Auges 1605 kann Qualität von Signalisierung auf der Spur angeben und entsprechen. Bei einer Implementierung kann ein Prüfmodus unterstützt werden, der es Systemverwaltungssoftware erlaubt, das für die Spur (oder in jedem Zweig der Spur (z.B. zwischen Sendern und Empfängern von Redrivern und Endpunkten)) bei jeder einer Kombination von Verbindungseinstellungen erzeugte Augenmuster zu bewerten, um für jeden Zweig die idealen während aktiven Betriebs der Verbindung zu verwendenden Einstellungen zu bestimmen. Zum Beispiel kann bei einer Implementierung ein Muster durch den sendenden Endpunkt gesendet werden, und die Empfängerlogik im empfangenden Endpunkt (und/oder empfangenden Redrivern) in Verbindung mit Systemverwaltungssoftware kann iterativ unterschiedliche Kombinationen von Werten der (im Komparator verwendeten) Referenzspannung und des Phasenoffsets (des Phaseninterpolators) anwenden, um auf diejenigen Werte einzuschwingen, die zu den besten Signalaugenkenngrößen führen. Zum Beispiel kann sich der Referenzspannungswert auf die Höhe (y-Achse) des Auges 1605 auswirken, während sich das Phasenoffset auf die Breite (x-Achse) des Auges 1605 auswirkt. Es können auch Bitfehler bewertet werden, die sich aus den Einstellungsänderungen ergeben. Ähnliche oder andere Einstellungen der Redriver können auch in Verbindung mit dem Marginieren justiert werden, um Signalisierung auf der Verbindung zu optimieren. Bei einigen Implementierungen können solche Marginierungsprüfungen in Echtzeit an einer Teilmenge von Spuren der Verbindung unter Verwendung von Start-Prüfung und Stopp-Prüfung ausgeführt werden, während die übrige Teilmenge normalen Verkehr führt. Die Teilmengen können umgewechselt werden, um somit die Marginierung aller Spuren abzuschließen, ohne die gesamte Verbindung herunterzufahren, neben anderen potentiellen Merkmalen. Auf diese Weise können erweiterte Redriver ihre Betriebseigenschaften niedriger Latenz behalten, während komplizierteres Training und Prüfen von Verbindungen, in denen sie enthalten sind, unterstützt wird.
  • Nunmehr mit Bezug auf 17A-17B sind Flussdiagramme 1700a-b gezeigt, die beispielhafte Techniken darstellen, die dem Prüfen und Training von Verbindungen zugeordnet sind, die eine oder mehrere Redriver-Vorrichtungen benutzen. In 17A wird ein Signal 1705 in einem Redriver empfangen, der in einer Verbindung enthalten ist, die zwei Endpunktvorrichtungen verbindet. Das Signal kann ein Muster, wie etwa eine PRBS, umfassen, das zum Prüfen oder Trainieren der Verbindung, wie etwa eine Rückschleifenprüfung, verwendet wird. Der Redriver kann das empfangene Muster neu ansteuern, während im Redriver bereitgestellte Diagnostikschaltkreise zum Retimen des Musters zur Verwendung als Seed in einem in den Diagnostikschaltkreisen vorgesehenen LFSR verwendet werden. Durch das LFSR kann unter Verwendung des Seed eine erwartete Version der PRBS erzeugt werden 1715, und die erwartete Version der PRBS kann bitweise mit durch den Redriver empfangenen nachfolgenden Bit der PRBS verglichen werden 1720, um Bitfehler im Empfangssignal zu detektieren.
  • In 17B kann Prüfverwaltungssoftware, Systemverwaltungssoftware oder andere (in Hardware und/oder Software implementierte) Logik Prüfung und/oder Training einer Verbindung, die zwei Endpunktvorrichtungen verbindet, überwachen. Die Verbindung kann zwei (auf getrennten oder demselben Chip vorgesehene) Redriver zwischen den Endpunktvorrichtungen umfassen, die zum Verlängern der physischen Länge der Verbindung verwendet werden. Durch den ersten Endpunkt erzeugte Prüfmuster-Überprüfungsergebnisse können bewertet werden 1725, zusammen mit durch den zweiten Endpunkt erzeugten Musterüberprüfungsergebnissen (bei 1735). Musterüberprüfungsergebnisse können auf der Basis bitweiser Vergleiche empfangener Prüfmuster (z.B. PRBS- oder PRBS-verwürfelt-Muster) mit der erwarteten Version der Prüfmuster erzeugt werden. Die Redriver in der Verbindung können ähnlich Funktionalität zum Durchführen solcher Vergleiche von Prüfmustern, während sie die Verbindung herab durch die Redriver neu angesteuert werden, besitzen. Dementsprechend kann auch auf Prüfmusterüberprüfungsergebnisse von den Redrivern zugegriffen werden (bei 1730, 1740). Die kollektiven Prüfmusterüberprüfungsergebnisse können dann bewertet werden 1745, um zu identifizieren, ob irgendeine der Komponenten (z.B. Endpunkte und Redriver) der Verbindung Bitfehler detektiert haben, und zu bestimmen, wo (d.h. in welchem Zweig oder Abschnitt der Verbindung) die Bitfehler erschienen. Diese Fehler oder anderen Eigenschaften können verwendet werden, um Einstellungen einer oder mehrerer der Verbindungskomponenten (z.B. Endpunkte und Redriver) zu justieren, um die Verbindung für optimierte Signalqualität und Funktionsweise zu konfigurieren, neben anderen Beispielen.
  • Es versteht sich, dass andere Einzelheiten und Merkmale in einem Verbindungselement hoher Leistungsfähigkeit bereitgestellt werden können, darunter Implementierungen, die eine optische Verbindung zur Verlängerung eines physischen Kanals benutzen. Zum Beispiel kann ein Teil des Kanals optisch sein, statt elektrisch. Außerdem können die Prinzipien und Konzepte auf Verbindungen angewandt werden, die einen einzigen Redriver oder mehr als zwei Redriver benutzen, neben anderen Konfigurationen. Außerdem können mindestens einige der oben beschriebenen Merkmale in elektrischen Repeatern (z.B. Retimern und Redrivern) implementiert werden, die zum Verlängern eines UPI-Kanals verwendet werden können. Ein Verbindungselement hoher Leistungsfähigkeit (HPI), wie etwa UPI, kann eines oder mehrere Merkmale und ein oder mehrere Prinzipien anwenden, die in der US-Patentanmeldung Nr. 14/060,191 mit dem Titel „High Performance Interconnect“ beschrieben werden, die hiermit durch Bezugnahme aufgenommen wird.
  • UPI kann in vielfältige Datenverarbeitungsvorrichtungen und -systeme aufgenommen werden, darunter Zentralrechner, Serversysteme, Personal Computer, Mobil-Computer (wie etwa Tablets, Smartphones, Personal Digital Assistants usw.), intelligente Geräte, Spiel- oder Unterhaltungskonsolen und Set-Top-Boxes, neben anderen Beispielen. Zum Beispiel ist mit Bezug auf 18 eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem abgebildet, das einen Mehrkemprozessor umfasst. Der Prozessor 1800 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 1800 umfasst bei einer Ausführungsform mindestens zwei Kerne - Kern 1801 und 1802, wozu asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) gehören können. Der Prozessor 1800 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • Bei einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Software-Thread. Beispiele für Hardware-Verarbeitungselemente wären eine Thread-Einheit, ein Thread-Slot, ein Thread, eine Prozesseinheit, ein Kontext, eine Kontexteinheit, ein logischer Prozessor, ein Hardware-Thread, ein Kern und/oder ein beliebiges anderes Element, das einen Zustand für einen Prozessor halten kann, wie etwa einen Ausführungszustand oder Architekturzustand. Anders ausgedrückt bezieht sich ein Verarbeitungselement bei einer Ausführungsform auf eine beliebige Hardware, die unabhängig Code zugeordnet werden kann, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code. Ein physischer Prozessor (oder Prozessor-Socket) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell eine beliebige Anzahl anderer Verarbeitungselemente, wie etwa Kerne oder Hardware-Threads, umfasst.
  • Ein Kern bezieht sich oft auf Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen dedizierten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen Architekturzustände Zugriff auf Ausführungsressourcen teilen. Es ist ersichtlich, dass, wenn bestimmte Ressourcen geteilt und andere einem Architekturzustand dediziert sind, sich die Linie zwischen der Nomenklatur eines Hardware-Threads und Kerns überlappt. Oft werden ein Kern und ein Hardware-Thread von einem Betriebssystem jedoch als individuelle logische Prozessoren angesehen, wobei das Betriebssystem in der Lage ist, auf jedem logischen Prozessor individuell Operationen einzuplanen.
  • Der physische Prozessor 1800, sowie er in 18 dargestellt ist, umfasst zwei Kerne - Kern 1801 und 1802. Kern 1801 und 1802 werden hier als symmetrische Kerne betrachtet, d.h. Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. Bei einer anderen Ausführungsform umfasst der Kern 1801 einen Außerreihenfolge-Prozessorkern, während der Kern 1802 einen In-Reihenfolge-Prozessorkern umfasst. Die Kerne 1801 und 1802 können jedoch individuell aus einer beliebigen Art von Kern ausgewählt werden, wie etwa einem nativen Kern, einem Software-verwalteten Kern, einem Kern, der dafür ausgelegt ist, eine native ISA (Instruction Set Architecture) auszuführen, einen Kern, der dafür ausgelegt ist, eine übersetzte ISA (Instruction Set Architecture) auszuführen, einen zusammen entworfenen Kern oder einen anderen bekannten Kern. In einer heterogenen Kernumgebung (d.h. asymmetrische Kerne) kann eine gewisse Form von Übersetzung, wie etwa Binärübersetzung, benutzt werden, um Code auf einem oder beiden Kernen einzuplanen oder auszuführen. Zur weiteren Besprechung werden jedoch nachfolgend die im Kern 1801 dargestellten Funktionseinheiten weiter beschrieben, da die Einheiten in dem Kern 1802 bei der abgebildeten Ausführungsform auf ähnlich Weise arbeiten.
  • Der Kern 1801 umfasst wie abgebildet zwei Hardware-Threads 1801a und 1801b, die auch als Hardware-Thread-Slots 1801a und 1801b bezeichnet werden können. Softwareentitäten wie ein Betriebssystem betrachten deshalb bei einer Ausführungsform den Prozessor 1800 als vier getrennte Prozessoren, d.h. vier logische Prozessoren oder Verarbeitungselemente mit der Fähigkeit, vier Software-Threads gleichzeitig auszuführen. Wie oben angedeutet ist ein erster Thread Architekturzustandsregistern 1801a zugeordnet, ein zweiter Thread Architekturzustandsregistern 1801b zugeordnet, ein dritter Thread kann Architekturzustandsregistern 1802a zugeordnet sein, und ein vierter Thread kann Architekturzustandsregistern 1802b zugeordnet sein. Jedes der Architekturzustandsregister (1801a, 1801b, 1802a und 1802b) kann hier wie oben beschrieben als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet werden. Die Architekturzustandsregister 1801a werden wie dargestellt in den Architekturzustandsregistern 1801b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 1801a und den logischen Prozessor 1801b gespeichert werden können. In dem Kern 1801 können auch andere kleinere Ressourcen wie etwa Anweisungszeiger und Umbenennungslogik in dem Zuteiler- und Umbenennerblock 1830 für die Threads 1801a und 1801b repliziert sein. Einige Ressourcen wie etwa Umordnungspuffer in der Umordnungs-/Zurückzieheinheit 1835, dem ILTB 1820, Lade-/Speicherpuffern und Warteschlangen können mittels Partitionierung geteilt werden. Andere Ressourcen, wie etwa interne Vielzweckregister, Seiten-Tabellen-Basisregister, Daten-Cache auf niedriger Ebene und Daten-TLB 18515, Ausführungseinheit(en) 1840 und Teile der Außerreihenfolgeeinheit 1835 werden potentiell voll geteilt.
  • Der Prozessor 1800 umfasst oft andere Ressourcen, die voll geteilt, mittels Partitionierung geteilt oder durch/an Verarbeitungselemente dediziert sind. In 18 ist eine Ausführungsform eines rein beispielhaften Prozessors mit beispielhaften logischen Einheiten/ Ressourcen eines Prozessors dargestellt. Man beachte, dass ein Prozessor beliebige dieser Funktionseinheiten umfassen oder weglassen kann und auch beliebige andere bekannte Funktionseinheiten, Logik oder Firmware umfassen kann, die nicht abgebildet ist. Wie dargestellt umfasst der Kern 1801 einen vereinfachten repräsentativen Außerreihenfolge- bzw. OOO-Prozessorkern. Bei anderen Ausführungsformen kann jedoch ein In-Reihenfolge-Prozessor benutzt werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 1820 zur Vorhersage von Verzweigungen, die auszuführen/zu nehmen sind, und einen Anweisungsübersetzungspuffer (I-TLB) 1820 zum Speichern von Adressenübersetzungseinträgen für Anweisungen.
  • Der Kern 1801 umfasst ferner ein mit einer Abrufeinheit 1820 gekoppeltes Decodiermodul 1825 zum Decodieren abgerufener Elemente. Abruflogik umfasst bei einer Ausführungsform individuelle Sequenzierer, die den Flat-Slots 1801a bzw. 1801b zugeordnet sind. Der Kern 1801 ist gewöhnlich einer ersten ISA zugeordnet, die auf dem Prozessor 1800 ausführbare Anweisungen definiert/spezifiziert. Maschinencodeanweisungen, die Teil der ersten ISA sind, umfassen oft einen Teil der Anweisung (als Opcode bezeichnet), der eine auszuführende Anweisung oder Operation erwähnt/spezifiziert. Decodierungslogik 1825 umfasst Schaltkreise, die diese Anweisungen aus ihren Opcodes erkennen und die decodierten Anweisungen in der Pipeline zur Verarbeitung, wie durch die erste ISA definiert, weiterleiten. Wie zum Beispiel nachfolgend ausführlicher besprochen wird, umfassen die Decodierer 1825 bei einer Ausführungsform Logik, die dafür entworfen oder ausgelegt ist, spezifische Anweisungen zu erkennen, wie etwa Transaktionsanweisung. Als Folge der Erkennung durch die Decodierer 1825 unternimmt die Architektur oder der Kern 1801 spezifische vordefinierte Aktionen, um Aufgaben auszuführen, die der entsprechenden Anweisung zugeordnet sind. Es ist wichtig zu beachten, dass beliebige der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf eine einzige oder mehrere Anweisungen ausgeführt werden können; von denen einige neue oder alte Anweisungen sein können. Man beachte, dass die Decodierer 1826 bei einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Als Alternative erkennen in einer heterogenen Kernumgebung die Decodierer 1826 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine distinkte ISA).
  • In einem Beispiel umfasst der Zuteiler- und Umbenennerblock 1830 einen Zuteiler zum Reservieren von Ressourcen, wie etwa Registerfiles zum Speichern von Anweisungsverarbeitungsergebnissen. Die Threads 1801a und 1801b sind jedoch potentiell zu Außerreihenfolge-Ausführung fähig, wobei der Zuteiler- und Umbenennerblock 1830 auch andere Ressourcen reserviert, wie etwa Umordnungspuffer zum Verfolgen von Anweisungsergebnissen. Die Einheit 1830 kann auch einen Registerumbenenner zum Umbenennen von Programm-/Anweisungsreferenzregistern in andere interne Register des Prozessors 1800 umfassen. Die Umordnungs-/Zurückzieheinheit 1835 umfasst Komponenten wie etwa die oben erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer zur Unterstützung von Außerreihenfolge-Ausführung und später In-Reihenfolge-Zurückziehen von Anweisungen, die außerhalb der Reihenfolge ausgeführt werden.
  • Der Einplanungs- und Ausführungseinheit(en)block 1840 umfasst bei einer Ausführungsform eine Einplanungseinheit zum Einplanen von Anweisungen/Operation auf Ausführungseinheiten. Zum Beispiel wird eine Fließkommaanweisung auf einem Port einer Ausführungseinheit eingeplant, der eine verfügbare Fließkomma-Ausführungseinheit aufweist. Den Ausführungseinheiten zugeordnete Registerfiles sind auch vorgesehen, um Informationsanweisungs-Verarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten wären eine Fließkomma-Ausführungseinheit, eine Integer-Ausführungseinheit, eine Stromausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Daten-Cache auf niedriger Ebene und der Datenübersetzungspuffer (D-TLB) 1850 sind mit Ausführungseinheit(en) 1840 gekoppelt. Der Daten-Cache soll vor kurzem verwendete/verarbeitete Elemente, wie etwa Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB dient zum Speichern von neueren Übersetzungen von virtuellen/linearen in physische Adressen. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um physischen Speicher in mehrere virtuelle Seiten aufzuteilen.
  • Die Kerne 1801 und 1802 teilen sich hier Zugriff auf einen auf höherer Ebene befindlichen oder weiter abgelegenen Cache, wie etwa einen der Einchip-Schnittstelle 1810 zugeordneten Second-Level-Cache. Man beachte, dass sich höhere Ebene und weiter abgelegen auf Cache-Ebenen bezieht, die von der Ausführungseinheit bzw. den Ausführungseinheiten aus zunehmen oder weiter weg kommen. Bei einer Ausführungsform ist ein Cache einer höheren Ebene ein Daten-Cache der letzten Ebene - der letzte Cache in der Speicherhierarchie auf dem Prozessor 1800 - wie etwa ein Daten-Cache der zweiten oder dritten Ebene. Cache höherer Ebenen ist jedoch nicht darauf beschränkt, da er einem Anweisungscache zugeordnet sein oder diesen umfassen kann. Ein Trace-Cache - eine Art von Anweisungscache - kann stattdessen nach dem Decodierer 1825 zum Speichern von zuletzt decodierten Traces gekoppelt sein. Eine Anweisung bezieht sich hier potentiell auf eine Makroanweisung (d.h. eine durch die Decodierer erkannte allgemeine Anweisung), die zu einer Anzahl von Mikroanweisungen (Mikrooperationen) decodiert werden kann.
  • In der abgebildeten Konfiguration umfasst der Prozessor 1800 auch ein On-Chip-Schnittstellenmodul 1810. Ein Speichercontroller, der nachfolgend ausführlicher beschrieben wird, war traditionell in einem Computersystem außerhalb des Prozessors 1800 enthalten. In diesem Szenario soll die On-Chip-Schnittstelle 1810 mit Vorrichtungen außerhalb des Prozessors 1800, wie etwa Systemspeicher 1875, einem Chipsatz (der oft einen Speichercontroller-Hub zur Verbindung mit dem Speicher 1875 und einen E/A-Controller-Hub zur Verbindung von Peripherievorrichtungen umfasst), einem Speichercontroller-Hub, einer Northbridge oder einer anderen integrierten Schaltung, kommunizieren. Und in diesem Szenario kann der Bus 1805 ein beliebiges bekanntes Verbindungselement umfassen, wie etwa einen Mehrfachabgriff-Bus, ein Punkt-zu-Punkt-Verbindungselement, ein serielles Verbindungselement, einen parallelen Bus, einen kohärenten (z.B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen Differenz-Bus und einen GTL-Bus.
  • Der Speicher 1875 kann dem Prozessor 1800 dediziert oder mit anderen Vorrichtungen in einem System geteilt sein. Übliche Beispiele für Arten von Speicher 1875 wären DRAM, SRAM, nichtflüchtiger Speicher (NV-Speicher) und andere bekannte Speicherungsvorrichtungen. Man beachte, dass die Vorrichtung 1880 einen Grafikbeschleuniger, einen Grafikprozessor oder eine Grafikkarte umfassen kann, der bzw. die mit einem Speichercontroller-Hub gekoppelt ist, mit einem E/A-Controller-Hub gekoppelte Datenspeicherung, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, einen Audiocontroller, einen Netzwerkcontroller oder eine andere bekannte Vorrichtung umfassen kann.
  • In letzter Zeit können diese Vorrichtungen jedoch, wenn mehr Logik und Vorrichtungen auf einem einzigen Chip wie etwa einem SOC integriert werden, jeweils auf dem Prozessor 1800 integriert werden. Zum Beispiel befindet sich bei einer Ausführungsform ein Speichercontroller-Hub auf derselben Kapselung und/oder demselben Chip mit dem Prozessor 1800. Ein Teil des Kerns (ein Auf-Kern-Teil) 1810 umfasst einen oder mehrere Controller als Schnittstelle mit anderen Vorrichtungen, wie etwa Speicher 1875 oder einer Grafikvorrichtung 1880. Die Konfiguration mit einem Verbindungselement und Controllern zur Bildung einer Schnittstelle mit solchen Vorrichtungen wird oft als ein Auf-Kern (oder Un-Kern-Konfiguration) bezeichnet. Beispielsweise umfasst die On-Chip-Schnittstelle 1810 ein Ringverbindungselement zur On-Chip-Kommunikation und eine schnelle serielle Punkt-zu-Punkt-Verbindung 1805 zur Kommunikation außerhalb des Chips. In der SOC-Umgebung können jedoch sogar noch mehr Vorrichtungen, wie etwa die Netzwerkschnittstelle, Coprozessoren, Speicher 1875, Grafikprozessor 1880 und beliebige andere bekannte Computervorrichtungen/Schnittstellen auf einem einzigen Chip oder einer einzigen integrierten Schaltung integriert werden, um einen kleinen Formfaktor mit viel Funktionalität und wenig Stromverbrauch bereitzustellen.
  • Bei einer Ausführungsform kann der Prozessor 1800 einen Compiler, Optimierung und/oder Übersetzercode 1877 ausführen, um Anwendungscode 1876 zu compilieren, zu übersetzen und/oder zu optimieren, um die hier beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Schnittstelle damit zu bilden. Ein Compiler umfasst oft ein Programm oder eine Menge von Programmen zum Übersetzen von Quelltext-Code im Zieltext-Code. Compilierung von Programm-/Anwendungscode mit einem Compiler geschieht gewöhnlich in mehreren Phasen und Durchgängen, um einen Programmiersprachencode auf hoher Ebene in Maschinen- oder Assemblersprachencode auf niedriger Ebene zu transformieren. Compiler mit einem Durchgang können jedoch immer noch für simple Compilierung verwendet werden. Ein Compiler kann beliebige bekannte Compilierungstechniken verwenden und beliebige bekannte Compileroperationen ausführen, wie etwa lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codetransformierung und Codeoptimierung.
  • Große Compiler umfassen oft mehrere Phasen, aber am häufigsten sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d.h. im Allgemeinen wo syntaktische Verarbeitung, semantische Verarbeitung und gewisse Transformierung/Optimierung stattfinden kann, und (2) ein Backend, d.h. allgemein wo Analysen, Transformationen, Optimierungen und Codeerzeugung stattfindet. Einige Compiler beziehen sich auf eine Mitte, die die unscharfe Grenze zwischen einem Frontend und Backend eines Compilers veranschaulicht. Erwähnung von Einfügung, Assoziation, Erzeugung oder einer anderen Operation eines Compilers kann folglich in einer beliebigen der oben erwähnten Phasen oder Durchgängen stattfinden, und auch in beliebigen anderen bekannten Phasen oder Durchgängen eines Compilers. Als ein Anschauungsbeispiel fügt ein Compiler potentiell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Compilierung ein, wie etwa Einfügung von Aufrufen/Operationen in einer Frontend-Phase der Compilierung, und dann Transformation der Aufrufe/Operationen in Code niedrigerer Ebene während einer Transformationsphase. Man beachte, dass während der dynamischen Compilierung Compilercode oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code für die Ausführung während der Laufzeit optimieren kann. Als ein spezifisches Anschauungsbeispiel kann Binärcode (bereits compilierter Code) während der Laufzeit dynamisch optimiert werden. Der Programmcode kann hier den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie etwa ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Erwähnung der Ausführung von Code, Anwendungscode, Programmcode oder einer anderen Softwareumgebung kann sich deshalb auf Folgendes beziehen: (1) Ausführung eines Compilerprogramms, Optimierungscode-Optimierers oder Übersetzers entweder dynamisch oder statisch, um Programmcode zu compilieren, um Softwarestrukturen zu warten, um andere Operationen auszuführen, um Code zu optimieren oder um Code zu übersetzen; (2) Ausführung von Hauptprogrammcode, einschließlich Operationen/Aufrufe, wie etwa Anwendungscode, der optimiert/compiliert wurde; (3) Ausführung von anderem Programmcode, wie etwa Bibliotheken, der mit dem Hauptprogrammcode assoziiert ist, um Softwarestrukturen zu warten, um andere softwarebezogene Operationen auszuführen oder um Code zu optimieren; oder (4) eine Kombination davon.
  • Nunmehr mit Bezug auf 19 ist eine Blockdarstellung einer Ausführungsform eines Mehrkemprozessors gezeigt. Wie in der Ausführungsform von 19 gezeigt, umfasst der Prozessor 1900 mehrere Domänen. Speziell umfasst eine Kerndomäne 1930 mehrere Kerne 1930A-1930N, eine Grafikdomäne 1960 eine oder mehrere Grafik-Engines mit einer Medien-Engine 1965 und einer Systemagent-Domäne 1910.
  • Bei verschiedenen Ausführungsformen geht die Systemagent-Domäne 1910 mit Stromversorgungssteuerereignissen und Stromversorgungsverwaltung um, so dass einzelne Einheiten der Domänen 1930 und 1960 (z.B. Kerne und/oder Grafik-Engines) unabhängig steuerbar sind, um im Hinblick auf die Aktivität (oder Inaktivität), die in der gegebenen Einheit auftritt, dynamisch in einem geeigneten Stromversorgungsmodus/-niveau (z.B. aktiv, Turbo, Schlaf, Hibernation, Tiefschlaf oder ein anderer Zustand ähnlich der fortschrittlichen Konfigurationsstromversorgungsschnittstelle). Jede der Domänen 1930 und 1960 kann mit einer anderen Spannung und/oder Stromversorgung arbeiten und ferner arbeiten die einzelnen Einheiten in den Domänen jeweils potentiell mit einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass der Schutzumfang der vorliegenden Offenbarung, obwohl sie nur mit drei Domänen gezeigt ist, in dieser Hinsicht nicht beschränkt ist und bei anderen Ausführungsformen zusätzliche Domänen anwesend sein können.
  • Wie gezeigt umfasst jeder Kern 1930 ferner Caches auf niedriger Ebene zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen. Die verschiedenen Kerne sind hier miteinander und mit einem geteilten Cache-Speicher gekoppelt, der aus mehreren Einheiten oder Slices eines LLC (Last Level Cache) 1940A-1940N gebildet ist; diese LLC umfassen oft Speicherungs- und Cache-Controllerfunktionalität und werden unter den Kernen geteilt, sowie potentiell auch unter der Grafik-Engine.
  • Es ist ersichtlich, dass ein Ringverbindungselement 1950 die Kerne miteinander koppelt und über mehrere Ringstellen 1952A-1952N jeweils an einer Kopplung zwischen einem Kern und LLC-Slice Verbindung zwischen der Kemdomäne 1930, der Grafikdomäne 1960 und Systemagentschaltkreisen 1910 bereitstellt. Wie in 19 zu sehen ist, wird das Verbindungselement 1950 zum Führen verschiedener Informationen verwendet, darunter Adresseninformationen, Dateninformationen, Bestätigungsinformationen und Snoop-/Ungültig-Informationen. Obwohl ein Ringverbindungselement dargestellt ist, kann ein beliebiges auf dem Chip befindliches Verbindungselement oder Koppelfeld benutzt werden. Als ein Anschauungsbeispiel können einige der oben besprochenen Koppelfelder (z.B. ein anderes auf dem Chip befindliches Verbindungselement, ein OSF (On-Chip System Fabric), ein AMBA-Verbindungselement (Advanced Microcontroller Bus Architecture), ein mehrdimensionales Maschenkoppelfeld oder eine beliebige andere bekannte Verbindungselementarchitektur) auf ähnliche Weise benutzt werden.
  • Wie ferner abgebildet umfasst die Systemagentdomäne 1910 eine Anzeige-Engine 1912, die Steuerung und eine Schnittstelle zu einer zugeordneten Anzeige bereitstellen soll. Die Systemagentdomäne 1910 kann andere Einheiten umfassen, wie etwa einen integrierten Speichercontroller 1920, der einer Schnittstelle zu einem Systemspeicher (z.B. einen mit mehreren DIMM implementierten DRAM) Kohärenzlogik 1922 zum Ausführen von Speicherkohärenzoperationen bereitstellt. Es können mehrere Schnittstellen anwesend sein, um Verbindung zwischen dem Prozessor und anderen Schaltkreisen zu ermöglichen. Zum Beispiel wird bei einer Ausführungsform mindestens eine Direktmedienschnittstelle (DMI) 1916 sowie eine oder mehrere PCIe™-Schnittstellen 1914 bereitgestellt. Die Anzeige-Engine und diese Schnittstellen sind typischerweise über eine PCIe™-Brücke 1918 mit Speicher gekoppelt. Weiterhin können zur Bereitstellung von Kommunikation zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltkreisen, eine oder mehrere andere Schnittstellen vorgesehen werden.
  • Nunmehr mit Bezug auf 20 ist eine Blockdarstellung eines zweiten Systems 2000 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie in 20 gezeigt, ist das Mehrprozessorsystem 2000 ein Punkt-zu-Punkt-Verbindungselementsystem und umfasst einen ersten Prozessor 2070 und einen zweiten Prozessor 2080, die über ein Punkt-zu-Punkt-Verbindungselement 2050 gekoppelt sind. Jeder der Prozessoren 2070 und 2080 kann eine bestimmte Version eines Prozessors sein. Bei einer Ausführungsform sind 2052 und 2054 Teil eines seriellen kohärenten Punkt-zu-Punkt-Verbindungselement-Koppelfelds, wie etwa einer hochleistungsfähigen Architektur. Folglich können die hier beschriebenen Konzepte in der UPI-Architektur implementiert werden.
  • Obwohl sie mit nur zwei Prozessoren 2070, 2080 gezeigt ist, versteht sich, dass der Schutzumfang der vorliegenden Offenbarung nicht darauf beschränkt ist. Bei anderen Ausführungsformen können in einem gegebenen Prozessor ein oder mehrere zusätzliche Prozessoren anwesend sein.
  • Die Prozessoren 2070 und 2080 sind als integrierte Speichercontrollereinheiten 2072 bzw. 2082 umfassend gezeigt. Der Prozessor 2070 umfasst außerdem als Teil seiner Buscontrollereinheiten Punkt-zu-Punkt- bzw. P-P-Schnittstellen 2076 und 2078; ähnlich umfasst der zweite Prozessor 2080 P-P-Schnittstellen 2086 und 2088. Die Prozessoren 2070, 2080 können über eine Punkt-zu-Punkt- bzw. P-P-Schnittstelle 2050 unter Verwendung von P-P-Schnittstellenschaltungen 2078, 2088 Informationen austauschen. Wie in 20 gezeigt, koppeln die IMC 2072 und 2082 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 2032 und einem Speicher 2034, die Teile von lokal an die jeweiligen Prozessoren angeschlossenem Hauptspeicher sein können.
  • Die Prozessoren 2070, 2080 tauschen jeweils Informationen über individuelle P-P-Schnittstellen 2052, 2054 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 2076, 2094, 2086, 2098 mit einem Chipsatz 2090 aus. Der Chipsatz 2090 tauscht auch über eine Schnittstellenschaltung 2092 entlang einem hochleistungsfähigen Grafikverbindungselement 2039 Informationen mit einer hochleistungsfähigen Grafikschaltung 2038 aus.
  • Ein (nicht gezeigter) geteilter Cache kann entweder im Prozessor oder außerhalb beider Prozessoren enthalten; aber dennoch mit den Prozessoren über P-P-Verbindungselement verbunden sein, so dass lokale Cache-Informationen eines Prozessors oder beider Prozessoren in dem geteilten Cache gespeichert werden können, wenn ein Prozessor in einen energiesparenden Modus versetzt wird.
  • Der Chipsatz 2090 kann über eine Schnittstelle 2096 mit einem ersten Bus 2016 gekoppelt sein. Bei einer Ausführungsform kann der erste Bus 2016 ein PCI-Bus (Peripheral Component Interconnect) oder ein Bus, wie etwa ein PCI-Express-Bus, oder ein anderer E/A-Verbindungselementbus der dritten Generation sein, obwohl der Schutzumfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 20 gezeigt, sind verschiedene E/A-Vorrichtungen 2014 mit dem ersten Bus 2016 gekoppelt, zusammen mit einer Busbrücke 2018, die den ersten Bus 2016 mit einem zweiten Bus 2020 koppelt. Bei einer Ausführungsform umfasst der zweite Bus 2020 einen LPC-Bus (Low Pin Count). Es sind verschiedene Vorrichtungen mit dem zweiten Bus 2020 gekoppelt, darunter zum Beispiel bei einer Ausführungsform eine Tastatur und/oder eine Maus 2022, Kommunikationsvorrichtungen 2027 und eine Speicherungseinheit 2028, wie etwa ein Laufwerk oder eine andere Massenspeicherungsvorrichtung, die oft Anweisungen/Code und Daten 2030 umfasst. Ferner ist eine Audio-E/A 2024 mit dem zweiten Bus 2020 gekoppelt gezeigt. Man beachte, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Verbindungselementarchitekturen unterschiedlich sind. Anstelle der Punkt-zu-Punkt-Architektur von 20 kann zum Beispiel ein System einen Mehrfachabkopplungsbus oder eine andere solche Architektur implementieren.
  • Obwohl die vorliegenden Konzepte mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurden, sind für Fachleute zahlreiche Modifikationen und Varianten daraus ersichtlich. Es ist beabsichtigt, dass die angefügten Ansprüche alle Modifikationen und Varianten abdecken, die in den wahren Gedanken und Schutzumfang der vorliegenden Offenbarung fallen.
  • Ein Entwurf kann verschiedene Phasen durchlaufen, von der Erzeugung zur Simulation bis zur Herstellung. Einen Entwurf repräsentierende Daten können den Entwurf auf eine Anzahl von Weisen repräsentieren. Erstens kann, sowie es bei Simulationen nützlich ist, die Hardware unter Verwendung einer Hardwarebeschreibungssprache (HDL) oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Außerdem kann ein Modell auf Schaltungsebene mit Logik und/oder Transistorgattern in einigen Phasen des Entwurfsprozesses produziert werden. Ferner erreichen die meisten Entwürfe in einer bestimmten Phase eine Ebene von Daten, die die physische Platzierung verschiedener Vorrichtungen im Hardwaremodell repräsentieren. Falls herkömmliche Halbleiter-Herstellungstechniken verwendet werden, können die das Hardwaremodell repräsentierenden Daten die Daten sein, die Anwesenheit oder Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten für zum Produzieren der integrierten Schaltung verwendete Masken spezifizieren. Bei einigen Implementierungen können solche Daten in einem Datenbank-Dateiformat gespeichert werden, wie etwa GDS II (Graphic Data System II), OASIS (Open Artwork System Interchange Standard) oder einem ähnlichen Format.
  • Bei einigen Implementierungen können auf Software basierende Hardwaremodelle und HDL und andere funktionale Beschreibungssprachenobjekte neben anderen Beispielen Dateien der Registertransfersprache (RTL) umfassen. Solche Objekte können maschinenparsbar sein, so dass ein Entwicklungswerkzeug das HDL-Objekt (oder - Modell) annehmen, das HDL-Objekt auf Attribute der beschriebenen Hardware parsen und aus dem Objekt eine physische Schaltung und/oder ein Layout auf dem Chip bestimmen kann. Die Ausgabe des Entwicklungswerkzeugs kann zur Herstellung der physischen Vorrichtung verwendet werden. Zum Beispiel kann ein Entwicklungswerkzeug Konfigurationen verschiedener Hardware- und/oder Firmwareelemente aus dem HDL-Objekt bestimmen, wie etwa Busbreiten, Register (einschließlich Größe und Typen), Speicherblöcke, physische Verbindungspfade, Koppelfeldtopologien, neben anderen Attributen, die implementiert werden würden, um das in dem HDL-Objekt modellierte System zu realisieren. Entwicklungswerkzeuge können Werkzeuge zur Bestimmung der Topologie und Koppelfeldkonfigurationen eines Systems auf einem Chip (SOC) und anderer Hardwarevorrichtungen umfassen. In einigen Fällen kann das HDL-Objekt als Grundlage für die Entwicklung von Modellen und Entwurfsdateien verwendet werden, die Herstellungsgeräte zur Herstellung der beschriebenen Hardware verwenden können. Tatsächlich kann ein HDL-Objekt selbst als Eingabe in Herstellungssystemsoftware bereitgestellt werden, um die beschriebene Hardware zu bewirken.
  • In jeder Repräsentation des Entwurfs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Das maschinenlesbare Medium zum Speichern von Informationen, die über optische oder elektrische Welle, die zum Senden solcher Informationen moduliert oder anderweitig erzeugt wird, gesendet werden, kann ein Speicher oder eine magnetische oder optische Speicherung, wie etwa ein Datenträger, sein. Wenn eine elektrisch Trägerwelle, die den Code oder Entwurf angibt oder führt, gesendet wird, wird, soweit Kopieren, Pufferung oder Neuübertragung des elektrischen Signals durchgeführt wird, eine neue Kopie hergestellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren maschinenlesbaren Medium mindestens vorrübergehend einen Artikel, wie etwa in eine Trägerwelle codierte Informationen, speichern, wodurch Techniken von Ausführungsformen der vorliegenden Offenbarung realisiert werden.
  • Ein Modul, so wie es hier verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Beispielsweise umfasst ein Modul Hardware, wie etwa einen Mikrocontroller, die einem nichttransitorischen Medium zugeordnet ist, um Code zu speichern, der dafür ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden. Erwähnung eines Moduls bezieht sich deshalb bei einer Ausführungsform auf die Hardware, die speziell dafür ausgelegt ist, den auf einem nichttransitorischen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich bei einer anderen Ausführungsform Verwendung eines Moduls auf das nichttransitorische Medium, das den Code umfasst, der speziell dafür ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie geschlussfolgert werden kann, kann sich bei einer weiteren Ausführungsform der Ausdruck Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichttransitorischen Mediums beziehen. Modulgrenzen, die als getrennt dargestellt sind, variieren oft gemeinhin und überlappen sich potentiell. Zum Beispiel können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während potentiell einige unabhängige Hardware, Software oder Firmware beibehalten wird. Bei einer Ausführungsform umfasst die Verwendung des Ausdrucks Logik Hardware wie Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung der Phrase „ausgelegt zum“ bezieht sich bei einer Ausführungsform auf Anordnen, Zusammenstellen, Herstellen, zum Verkauf anbieten, Importieren und/oder Entwerfen von einer Vorrichtung, Hardware, Logik oder einem Element zur Ausführung einer designierten oder bestimmten Aufgabe. Eine Vorrichtung oder ein Element davon, das nicht arbeitet, ist in diesem Beispiel immer noch „ausgelegt zum“ Ausführen einer designierten Aufgabe, wenn sie bzw. es dafür entworfen, gekoppelt und/oder verbunden ist, die designierte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „ausgelegt ist zum“ Bereitstellen eines Freigabesignals für einen Takt umfasst nicht jedes potentielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter ein solches, dass auf gewisse Weise gekoppelt ist, so dass während des Betriebs die Ausgabe 1 oder 0 den Takt freigeben soll. Man beachte wieder, dass die Verwendung des Ausdrucks „ausgelegt zum“ keine Funktion erfordert, stattdessen aber Fokus auf dem latenten Zustand einer Vorrichtung, von Hardware und/oder eines Elements liegt, wobei die Vorrichtung, die Hardware und/oder das Element im latenten Zustand dafür gedacht ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element arbeitet.
  • Ferner bezieht sich die Verwendung der Phrasen „zum,“ „fähig zum“ und/oder „betreibbar zum“ bei einer Ausführungsform auf eine bestimmte Vorrichtung, bestimmte Logik, bestimmte Hardware und/oder ein bestimmtes Element, die so ausgelegt sind, dass Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements auf spezifizierte Weise ermöglicht wird. Man beachte, dass sich oben die Verwendung von zum, fähig zum oder betreibbar zum bei einer Ausführungsform auf den latenten Zustand einer Vorrichtung, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, die Logik, die Hardware und/oder das Element nicht arbeitet, aber so entworfen ist, dass Verwendung einer Vorrichtung auf spezifizierte Weise ermöglicht wird.
  • Ein Wert umfasst im vorliegenden Gebrauch jede bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Die Verwendung von Logikpegeln, Logikwerten oder logischen Werten wird oft als 1en und 0 en bezeichnet, was einfach binäre Logikzustände repräsentiert. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und 0 auf einen niedrigen Logikpegel. Bei einer Ausführungsform kann eine Speicherungszelle, wie etwa ein Transistor oder eine Flash-Zelle, in der Lage sein, einen einzigen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Repräsentationen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl 10 auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A repräsentiert werden. Ein Wert umfasst deshalb jede Repräsentation von Informationen, die in einem Computersystem gehalten werden kann.
  • Außerdem können Zustände durch Werte oder Teile von Werten repräsentiert werden. Beispielsweise kann ein erster Wert, wie etwa eine logische 1, einen Vorgabe- oder anfänglichen Zustand repräsentieren, während ein zweiter Wert, wie etwa eine logische 0, einen Nicht-Vorgabezustand repräsentieren kann. Außerdem beziehen sich die Ausdrücke Rücksetzen und Setzen bei einer Ausführungsform jeweils auf einen Vorgabe- und einen aktualisierten Wert oder Zustand. Zum Beispiel umfasst ein Vorgabewert potentiell einen hohen logischen Wert, d.h. Rücksetzen, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d.h. Setzen, umfasst. Man beachte, dass jede Kombination von Werten benutzt werden kann, um jede Anzahl von Zuständen zu repräsentieren.
  • Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert werden, die bzw. der auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind/ist, die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches maschinenzugängliches/-lesbares Medium umfasst einen beliebigen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein Elektroniksystem, lesbarer Form bereitstellt (d.h. speichert und/oder sendet). Ein nichttransitorisches maschinenzugängliches Medium wäre zum Beispiel Direktzugriffsspeicher (RAM), wie etwa statischer RAM (SRAM) oder dynamischer RAM (DRAM); ROM; ein magnetisches oder optisches Speicherungsmedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen, akustische Speicherungsvorrichtungen; oder eine andere Form von Speicherungsvorrichtungen zum Halten von Informationen, die aus transitorischen (propagierten) Signalen (z.B. Trägerwellen, Infrarotsignalen, Digitalsignalen) empfangen werden; usw. die von den nichttransitorischen Medien zu unterscheiden sind, die Informationen von dort empfangen können.
  • Anweisungen, die zum Programmieren von Logik zum Ausführen von Ausführungsformen der Offenbarung verwendet werden, können in einem Speicher im System, wie etwa DRAM, Cache, Flash-Speicher oder anderer Speicherung, gespeichert werden. Ferner können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Ein maschinenlesbares Medium kann somit einen beliebigen Mechanismus zum Speichern oder Senden von Informationen in einer durch eine Maschine (z.B. einen Computer) lesbaren Form umfassen, aber ist nicht beschränkt auf Disketten, optische Datenträger, CD-ROMs (Compact Disks, Read-Only Memory) und magnetooptische Datenträger, ROMs (Festwertspeicher), RAM (Direktzugriffsspeicher), EPROM (Erasable Programmable Read-Only Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder eine greifbare, maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen propagierter Signale (z.B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Das computerlesbare Medium umfasst dementsprechend eine beliebige Art von greifbarem maschinenlesbarem Medium, das zum Speichern oder Senden von elektronischen Anweisungen oder Informationen in einer durch eine Maschine (z.B. einen Computer) lesbaren Form geeignet ist.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß der vorliegenden Patentschrift. Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, eine maschinenlesbare Speicherung, ein maschinenlesbares Medium und/oder ein Verfahren zum Bereitstellen eines Redrivers bereitstellen, der einen Empfänger zum Empfangen eines Signals von einer ersten Vorrichtung umfasst, mit einem Teil einer definierten Binärsequenz, einem Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seeds für ein LFRS (Linear Feedback Shift Register) aus der Binärsequenz, wobei das LFSR eine erwartete Version der Binärsequenz aus dem Seed erzeugen soll, und Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das LFSR erzeugt wird.
  • In einem Beispiel umfasst das LFSR ein Fibonacci-LFSR.
  • In einem Beispiel umfasst das Signal ein Verbindungsprüfsignal.
  • In einem Beispiel umfasst das Verbindungsprüfsignal eine Pseudozufalls-Binärsequenz (PRBS).
  • In einem Beispiel wird das Verbindungsprüfsignal in einer Rückschleifensitzung verwendet.
  • In einem Beispiel umfasst der Redriver ferner Schaltkreise zur Takt- und Datenwiedergewinnung (CDR) zur Wiedergewinnung eines Taktsignals aus dem Signal.
  • In einem Beispiel dient der Redriver ferner zum Neuansteuern des empfangenen Signals unter Verwendung von Redriver-Schaltkreisen.
  • In einem Beispiel umfassen die Redriver-Schaltkreise Empfängeranschlüsse zum Empfangen von Signalen von einer ersten Vorrichtung, einen Verstärker zum Verstärken der Signale und Senderanschlüsse zum Senden der verstärkten Signale zu einer zweiten Vorrichtung, wobei mindestens ein Teil der Signale Rückschleifen-Prüfsignale umfasst.
  • In einem Beispiel dient die Musterüberprüfungslogik zum Erzeugen von Fehlerdaten als Reaktion auf Detektion, dass die Sequenz in nachfolgenden Signalen nicht mit der erwarteten Version der Binärsequenz übereinstimmt.
  • In einem Beispiel werden die Fehlerdaten mittels eines Statusregisters des Redrivers Managementsoftware zur Verfügung gestellt.
  • In einem Beispiel werden die Fehlerdaten mittels Seitenbandanschlüssen des Redrivers Managementsoftware zur Verfügung gestellt..
  • Eine oder mehrere Ausführungsformen können ein System bereitstellen, umfassend eine erste Vorrichtung, eine zweite Vorrichtung und einen ersten Redriver, wobei die erste Vorrichtung durch eine den ersten Redriver umfassende Verbindung mit der zweiten Vorrichtung verbunden ist, der Redriver ein von der ersten Vorrichtung zu der zweiten Vorrichtung gesendetes Signal neu ansteuert und der erste Redriver einen Empfänger zum Empfangen eines Signals von der ersten Vorrichtung, wobei das Signal einen Teil einer definierten Binärsequenz umfasst, einen Driftpuffer zum Retimen der Binärsequenz zur Bereitstellung eines Seeds für ein Linear-Rückkopplungsschieberegister aus der Binärsequenz, wobei das Linear-Rückkopplungsschieberegister (LFSR) zum Erzeugen einer erwarteten Version der Binärsequenz aus dem Seed dient, Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird, und einen Sender zum Senden der von der ersten Vorrichtung empfangenen Signale zu einer zweiten Vorrichtung umfasst.
  • In einem Beispiel umfasst das System ferner einen zweiten Redriver, der einen Empfänger zum Empfangen des Signals von der zweiten Vorrichtung einschließlich des Teils einer definierten Binärsequenz, einen Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seed zur Erzeugung einer Kopie der Binärsequenz, ein Linear-Rückkopplungsschieberegister zum Erzeugen einer erwarteten Version der Binärsequenz aus dem Seed, Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der zweiten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird, und einen Sender zum Senden der von der zweiten Vorrichtung empfangenen Signale zu der ersten Vorrichtung umfasst.
  • In einem Beispiel umfasst die erste Vorrichtung Musterüberprüfungslogik zum Überprüfen von empfangenen Sequenzen mit der erwarteten Binärsequenz.
  • In einem Beispiel umfasst die zweite Vorrichtung Musterüberprüfungslogik zum Überprüfen empfangener Sequenzen mit der erwarteten Binärsequenz, einschließlich Musterüberprüfungslogik.
  • In einem Beispiel kann Systemverwaltungssoftware in dem System bereitgestellt werden, um durch Musterüberprüfungslogik eines beliebigen der ersten Vorrichtung, der zweiten Vorrichtung, des ersten Redrivers und des zweiten Redrivers erzeugte Ergebnisse zu bewerten.
  • In einem Beispiel umfasst das LFSR ein Fibonacci-LFSR.
  • In einem Beispiel umfasst die definierte Binärsequenz eine Pseudozufalls-Binärsequenz (PRBS) für eine Rückschleifenprüfung.
  • Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, eine maschinenlesbare Speicherung, ein maschinenlesbares Medium und/oder ein Verfahren zum Zugreifen auf erste Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer ersten Endpunktvorrichtung auf einer Verbindung erzeugt werden, Zugreifen auf zweite Prüfmusterergebnisse, die durch Musterüberprüfungslogik des ersten Redrivers auf der Verbindung erzeugt werden, Zugreifen auf dritte Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer zweiten Endpunktvorrichtung auf der Verbindung erzeugt werden, und Zugreifen auf vierte Prüfmusterergebnisse, die durch Musterüberprüfungslogik eines zweiten Redrivers auf der Verbindung erzeugt werden, bereitstellen, wobei von der ersten Endpunktvorrichtung zu der zweiten Vorrichtung gesendete Signale durch den ersten Redriver neu angesteuert werden und von der zweiten Endpunktvorrichtung zu der ersten Endpunktvorrichtung gesendete Signale durch den zweiten Redriver neu angesteuert werden. Die ersten, zweiten, dritten und vierten Prüfmusterergebnisse können bewertet werden, um Bitfehler auf der Verbindung zu bestimmen, wobei die ersten Prüfmusterergebnisse einem Pfad von der zweiten Redriver-Vorrichtung zu der ersten Endpunktvorrichtung entsprechen, die zweiten Prüfmusterergebnisse einem Pfad von der ersten Endpunktvorrichtung zu der ersten Redriver-Vorrichtung entsprechen, die dritten Prüfmusterergebnisse einem Pfad von der ersten Redriver-Vorrichtung zu der zweiten Endpunktvorrichtung entsprechen und die vierten Prüfmusterergebnisse einem Pfad von der zweiten Endpunktvorrichtung zu der zweiten Redriver-Vorrichtung entsprechen.
  • In einem Beispiel soll die Musterüberprüfungslogik jedes des ersten und zweiten Endpunkts und des ersten und zweiten Redrivers ein Prüfmuster überprüfen, das eine Pseudozufalls-Binärsequenz umfasst, die in einer Rückschleifenprüfung gesendet wird.
  • In einem Beispiel bewirken die Anweisungen, wenn sie ausgeführt werden, ferner, dass die Maschine den ersten Redriver auffordert, auf der Basis der Bewertung der ersten, zweiten, dritten und vierten Prüfmusterergebnisse eine oder mehrere Einstellungen des ersten Redrivers zu justieren.
  • Die Erwähnung von „einer Ausführungsform“ oder „eine Ausführungsform“ bedeutet in der gesamten vorliegenden Patentschrift, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Das Erscheinen der Phrasen „bei einer Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in der ganzen vorliegenden Patentschrift bezieht sich somit nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können die konkreten Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen auf beliebige geeignete Weise kombiniert werden.
  • In der obigen Patentschrift wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch ersichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne von dem allgemeineren Wesen und Schutzumfang der in den angefügten Ansprüchen dargelegten Offenbarung abzuweichen. Die Patenschrift und Zeichnungen sind dementsprechend nicht im einschränkenden Sinne, sondern im veranschaulichenden Sinne aufzufassen. Ferner bezieht sich die obige Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und distinkte Ausführungsformen sowie potentiell dieselbe 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 62193865 [0001]
    • US 14866925 [0001]
    • US 14060191 [0133]

Claims (26)

  1. Vorrichtung, umfassend: einen Redriver, umfassend: einen Empfänger zum Empfangen eines Signals von einer ersten Vorrichtung, wobei das Signal einen Teil einer definierten Binärsequenz umfasst; einen Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seed für ein Linear-Rückkopplungsschieberegister aus der Binärsequenz; das Linear-Rückkopplungsschieberegister (LFSR) mit einer erwarteten Version der Binärsequenz aus dem Seed; Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird.
  2. Vorrichtung nach Anspruch 1, wobei das LFSR ein Fibonacci-LFSR umfasst.
  3. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei das Signal ein Verbindungsprüfsignal umfasst.
  4. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei das Verbindungsprüfsignal eine Pseudozufalls-Binärsequenz (PRBS) umfasst.
  5. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei das Verbindungsprüfsignal in einer Rückschleifensitzung verwendet wird.
  6. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der Redriver ferner Schaltkreise zur Takt- und Datenwidergewinnung (CDR) umfasst, um ein Taktsignal aus dem Signal wiederzugewinnen.
  7. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der Redriver ferner Folgendes umfasst: Empfängeranschlüsse zum Empfangen von Signalen von einer ersten Vorrichtung; einen Verstärker zum Verstärken der Signale; und Senderanschlüsse zum Senden des verstärkten Signals zu einer zweiten Vorrichtung, wobei mindestens ein Teil der Signale Rückschleifen-Prüfsignale umfasst.
  8. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Musterüberprüfungslogik Fehlerdaten erzeugen soll, wenn detektiert wird, dass die Sequenz in nachfolgenden Signalen nicht mit der Kopie der Binärsequenz übereinstimmt.
  9. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Fehlerdaten mittels eines Statusregisters des Redrivers Managementsoftware zur Verfügung gestellt werden.
  10. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Fehlerdaten mittels Seitenbandanschlüssen des Redrivers Managementsoftware zur Verfügung gestellt werden.
  11. System, umfassend: eine erste Vorrichtung; eine zweite Vorrichtung; und einen ersten Redriver, wobei die erste Vorrichtung durch eine den ersten Redriver umfassende Verbindung mit der zweiten Vorrichtung verbunden ist, der Redriver ein von der ersten Vorrichtung zu der zweiten Vorrichtung gesendetes Signal neu ansteuert und der erste Redriver Folgendes umfasst: einen Empfänger zum Empfangen eines Signals von der ersten Vorrichtung, wobei das Signal einen Teil einer definierten Binärsequenz umfasst; einen Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seed für ein Linear-Rückkopplungsschieberegister aus der Binärsequenz; das Linear-Rückkopplungsschieberegister (LFSR) mit einer erwarteten Version der Binärsequenz aus dem Seed; Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird; und einen Sender zum Senden der von der ersten Vorrichtung empfangenen Signale zu einer zweiten Vorrichtung.
  12. System nach Anspruch 11, das ferner einen zweiten Redriver umfasst, umfassend: einem Empfänger zum Empfangen des Signals von der zweiten Vorrichtung, wobei das Signal den Teil einer definierten Binärsequenz umfasst; einen Driftpuffer zum Retimen der Binärsequenz und Bereitstellen eines Seed zur Erzeugung einer Kopie der Binärsequenz; ein Linear-Rückkopplungsschieberegister zur Erzeugung der Kopie der Binärsequenz aus dem Seed; Musterüberprüfungslogik zum Vergleichen einer Sequenz in von der zweiten Vorrichtung empfangenen nachfolgenden Signalen mit der Kopie der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird; und einen Sender zum Senden der von der zweiten Vorrichtung empfangenen Signale zu der ersten Vorrichtung.
  13. System nach einem der Ansprüche 11-12, wobei die erste Vorrichtung Musterüberprüfungslogik zum Überprüfen von empfangenen Sequenzen mit der erwarteten Binärsequenz umfasst.
  14. System nach einem der Ansprüche 11-13, wobei die zweite Vorrichtung Musterüberprüfungslogik zum Überprüfen empfangener Sequenzen mit der erwarteten Binärsequenz umfasst, umfassend Musterüberprüfungslogik.
  15. System nach einem der Ansprüche 11-14, das ferner Systemverwaltungssoftware zum Bewerten von durch Musterüberprüfungslogik von einem der ersten Vorrichtung, der zweiten Vorrichtung, des ersten Redrivers und des zweiten Redrivers erzeugten Ergebnissen umfasst.
  16. System nach einem der Ansprüche 11-15, wobei LFSRs Fibonacci-LFSRs umfassen.
  17. System nach einem der Ansprüche 11-16, wobei das Signal ein Prüfsignal umfasst.
  18. System nach einem der Ansprüche 11-17, wobei das Prüfsignal eine Pseudozufalls-Binärsequenz (PRBS) umfasst.
  19. System nach einem der Ansprüche 11-18, wobei das Prüfsignal ein Rückschleifensignal umfasst.
  20. Mindestens ein maschinenzugängliches Speicherungsmedium, auf dem Code gespeichert ist, wobei der Code, wenn er auf einer Maschine ausgeführt wird, die Maschine zu Folgendem veranlasst: Zugreifen auf erste Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer ersten Endpunktvorrichtung erzeugt werden; Zugreifen auf zweite Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer ersten Redriver-Vorrichtung erzeugt werden: Zugreifen auf dritte Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer zweiten Endpunktvorrichtung erzeugt werden; Zugreifen auf vierte Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer zweiten Redriver-Vorrichtung erzeugt werden, wobei von der ersten Endpunktvorrichtung zu der zweiten Vorrichtung gesendete Signale durch die erste Redriver-Vorrichtung neu angesteuert werden und von der zweiten Endpunktvorrichtung zu der ersten Endpunktvorrichtung gesendete Signale durch die zweite Redriver-Vorrichtung neu angesteuert werden; und Bewerten der ersten, zweiten, dritten und vierten Prüfmusterergebnisse, um Bitfehler auf der Verbindung zu bestimmen, wobei die ersten Prüfmusterergebnisse einem Pfad von der zweiten Redriver-Vorrichtung zu der ersten Endpunktvorrichtung entsprechen, die zweiten Prüfmusterergebnisse einem Pfad von der ersten Endpunktvorrichtung zu der ersten Redriver-Vorrichtung entsprechen, die dritten Prüfmusterergebnisse einem Pfad von der ersten Redriver-Vorrichtung zu der zweiten Endpunktvorrichtung entsprechen und die vierten Prüfmusterergebnisse einem Pfad von der zweiten Endpunktvorrichtung zu der zweiten Redriver-Vorrichtung entsprechen.
  21. Speicherungsmedium nach Anspruch 20, wobei die Musterüberprüfungslogik jedes des ersten und zweiten Endpunkts und des ersten und zweiten Redrivers ein Prüfmuster, das eine Pseudozufalls-Binärsequenz umfasst, die in einer Rückschleifensitzung gesendet wird, überprüfen soll.
  22. Speicherungsmedium nach Anspruch 20, wobei die Anweisungen, wenn sie ausgeführt werden, die Maschine ferner dazu veranlassen, den ersten Redriver aufzufordern, eine oder mehrere Einstellungen des ersten Redrivers auf der Basis des Zugreifens auf die ersten, zweiten, dritten und vierten Prüfmusterergebnisse zu justieren.
  23. Verfahren, umfassend: Empfangen eines Signal in einem Redriver von einer ersten Vorrichtung, wobei das Signal einen Teil einer definierten Binärsequenz umfasst; Neuansteuern des Signals zu einer zweiten Vorrichtung; Retimen der Binärsequenz, um einem Linear-Rückkopplungsschieberegister auf der Basis der Binärsequenz ein Seed bereitzustellen; Erzeugen einer erwarteten Version der Binärsequenz aus dem Seed; Vergleichen einer Sequenz in von der ersten Vorrichtung empfangenen nachfolgenden Signalen mit der erwarteten Version der Binärsequenz, die durch das Linear-Rückkopplungsschieberegister erzeugt wird.
  24. System mit Mitteln zum Ausführen des Verfahrens nach Anspruch 23.
  25. Verfahren, umfassend: Zugreifen auf erste Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer ersten Endpunktvorrichtung erzeugt werden; Zugreifen auf zweite Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer ersten Redriver-Vorrichtung erzeugt werden; Zugreifen auf dritte Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer zweiten Endpunktvorrichtung erzeugt werden; Zugreifen auf vierte Prüfmusterergebnisse, die durch Musterüberprüfungslogik einer zweiten Redriver-Vorrichtung erzeugt werden, wobei von der ersten Endpunktvorrichtung zu der zweiten Vorrichtung gesendete Signale durch die erste Redriver-Vorrichtung neu angesteuert werden und von der zweiten Endpunktvorrichtung zu der ersten Endpunktvorrichtung gesendete Signale durch die zweite Redriver-Vorrichtung neu angesteuert werden; und Bewerten der ersten, zweiten, dritten und vierten Prüfmusterergebnisse, um Bitfehler auf der Verbindung zu bestimmen, wobei die ersten Prüfmusterergebnisse einem Pfad von der zweiten Redriver-Vorrichtung zu der ersten Endpunktvorrichtung entsprechen, die zweiten Prüfmusterergebnisse einem Pfad von der ersten Endpunktvorrichtung zu der ersten Redriver-Vorrichtung entsprechen, die dritten Prüfmusterergebnisse einem Pfad von der ersten Redriver-Vorrichtung zu der zweiten Endpunktvorrichtung entsprechen und die vierten Prüfmusterergebnisse einem Pfad von der zweiten Endpunktvorrichtung zu der zweiten Redriver-Vorrichtung entsprechen.
  26. System mit Mitteln zum Ausführen des Verfahrens nach Anspruch 25.
DE112016003233.1T 2015-07-17 2016-06-17 Redriver-verbindungsprüfung Pending DE112016003233T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562193865P 2015-07-17 2015-07-17
US62/193,865 2015-07-17
US14/866,925 US9692589B2 (en) 2015-07-17 2015-09-26 Redriver link testing
US14/866,925 2015-09-26
PCT/US2016/037983 WO2017014876A1 (en) 2015-07-17 2016-06-17 Redriver link testing

Publications (1)

Publication Number Publication Date
DE112016003233T5 true DE112016003233T5 (de) 2018-05-03

Family

ID=57775935

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003233.1T Pending DE112016003233T5 (de) 2015-07-17 2016-06-17 Redriver-verbindungsprüfung

Country Status (3)

Country Link
US (1) US9692589B2 (de)
DE (1) DE112016003233T5 (de)
WO (1) WO2017014876A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018211702A1 (de) * 2018-07-13 2019-07-25 Audi Ag Steuereinheit für ein Fahrassistenzsystem eines Kraftfahrzeugs

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491701B2 (en) * 2016-07-14 2019-11-26 Cisco Technology, Inc. Interconnect method for implementing scale-up servers
TWI633777B (zh) * 2016-12-13 2018-08-21 威盛電子股份有限公司 傳輸介面晶片以及其測試方法
US10860449B2 (en) * 2017-03-31 2020-12-08 Intel Corporation Adjustable retimer buffer
US20180329855A1 (en) * 2017-05-12 2018-11-15 Intel Corporation Alternate protocol negotiation in a high performance interconnect
US11249808B2 (en) 2017-08-22 2022-02-15 Intel Corporation Connecting accelerator resources using a switch
US10097341B1 (en) * 2017-08-30 2018-10-09 Keyssa Systems, Inc. Testing of clock and data recovery circuits
CN107885923A (zh) * 2017-10-31 2018-04-06 郑州云海信息技术有限公司 一种基于redriver参数自适应改善信号质量的方法
US11966350B2 (en) * 2018-02-05 2024-04-23 Cisco Technology, Inc. Configurable storage server with multiple sockets
US11356306B2 (en) * 2018-03-30 2022-06-07 Intel Corporation Technologies for cooperative link equalization without disruption to link traffic
CN108718263A (zh) * 2018-06-13 2018-10-30 郑州云海信息技术有限公司 一种基于hca卡配置的网络带宽测试系统
CN108809762A (zh) * 2018-06-13 2018-11-13 郑州云海信息技术有限公司 一种服务器网络性能测试方法及系统
EP3672135B1 (de) * 2018-12-19 2022-08-24 Aptiv Technologies Limited Verfahren und system zum testen der qualität einer signalübertragung in einem kommunikationssystem
CN109857692B (zh) * 2019-01-22 2023-06-02 华为技术有限公司 驱动器和数据传输方法
CN113396396A (zh) * 2019-01-31 2021-09-14 特克特朗尼克公司 高速输入/输出裕度测试的系统、方法和设备
US11940483B2 (en) * 2019-01-31 2024-03-26 Tektronix, Inc. Systems, methods and devices for high-speed input/output margin testing
FR3096796B1 (fr) * 2019-05-28 2021-06-18 St Microelectronics Grenoble 2 Dispositif à plusieurs domaines d'horloge
TWI762828B (zh) * 2019-11-01 2022-05-01 緯穎科技服務股份有限公司 高速序列電腦匯流排的訊號調整方法及其相關電腦系統
CN113227917A (zh) * 2019-12-05 2021-08-06 Mzta科技中心有限公司 模块化plc自动配置系统
CN111352876B (zh) * 2020-02-29 2021-07-27 苏州浪潮智能科技有限公司 一种Redriver芯片编码误改写监控系统及方法
CN111510220B (zh) * 2020-04-08 2021-10-08 武汉光迅科技股份有限公司 一种带有USB Type-C电口的收发一体光模块
CN111464267B (zh) * 2020-04-29 2021-06-15 卓尔智联(武汉)研究院有限公司 通信数据校验方法、装置、计算机设备和存储介质
US11743080B2 (en) 2020-06-29 2023-08-29 Texas Instruments Incorporated Sample-and-hold-based retimer supporting link training
US11539555B2 (en) 2020-06-29 2022-12-27 Texas Instruments Incorporated Enhanced discrete-time feedforward equalizer
US20210089418A1 (en) * 2020-07-27 2021-03-25 Intel Corporation In-system validation of interconnects by error injection and measurement
CN116745630A (zh) 2020-11-24 2023-09-12 特克特朗尼克公司 用于高速输入/输出裕量测试的系统、方法和设备
CN113704035B (zh) * 2021-08-26 2023-09-22 郑州云海信息技术有限公司 一种时延检测方法、装置及相关设备
CN114691558B (zh) * 2021-10-20 2023-06-20 澜起电子科技(上海)有限公司 低延迟重定时器及延迟控制方法
EP4228187A1 (de) 2022-02-15 2023-08-16 Aptiv Technologies Limited Integritätstests für gemischte analoge digitale systeme
CN115878531B (zh) * 2022-12-09 2024-03-15 珠海视熙科技有限公司 MiPi接口控制方法、电子设备、摄像头模组、存储介质和视频系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386768B2 (en) 2003-06-05 2008-06-10 Intel Corporation Memory channel with bit lane fail-over
US7516349B2 (en) * 2005-12-29 2009-04-07 Intel Corporation Synchronized memory channels with unidirectional links
US7889579B2 (en) * 2008-01-28 2011-02-15 Promos Technologies Pte. Ltd. Using differential data strobes in non-differential mode to enhance data capture window
WO2009105095A1 (en) * 2008-02-20 2009-08-27 Hewlett-Packard Development Company, L.P. Redriver with two reference clocks and method of operation thereof
US7979759B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Test and bring-up of an enhanced cascade interconnect memory system
US8782477B2 (en) 2011-05-11 2014-07-15 Jabil Circuit, Inc. High-speed serial interface bridge adapter for signal integrity verification
KR101828756B1 (ko) 2012-10-22 2018-02-12 인텔 코포레이션 고성능 인터커넥트 코히어런스 프로토콜

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018211702A1 (de) * 2018-07-13 2019-07-25 Audi Ag Steuereinheit für ein Fahrassistenzsystem eines Kraftfahrzeugs

Also Published As

Publication number Publication date
WO2017014876A1 (en) 2017-01-26
US9692589B2 (en) 2017-06-27
US20170019247A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
DE112016003233T5 (de) Redriver-verbindungsprüfung
US11741030B2 (en) High performance interconnect
DE112017006687T5 (de) Hochgeschwindigkeitsverbindungen mit kanalerweiterung
US10140213B2 (en) Two level memory full line writes
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE112016003222T5 (de) Hochleistungsfähiger repeater
US9444551B2 (en) High performance optical repeater
US9965370B2 (en) Automated detection of high performance interconnect coupling
DE102021121490A1 (de) Annähernde datenbusinversionstechnik für latenzempfindliche anwendungen
DE112013007770B3 (de) Vorrichtungen, verfahren und system zum senden und empfangen über eine schnittstelle

Legal Events

Date Code Title Description
R012 Request for examination validly filed