DE112017006687T5 - Hochgeschwindigkeitsverbindungen mit kanalerweiterung - Google Patents

Hochgeschwindigkeitsverbindungen mit kanalerweiterung Download PDF

Info

Publication number
DE112017006687T5
DE112017006687T5 DE112017006687.5T DE112017006687T DE112017006687T5 DE 112017006687 T5 DE112017006687 T5 DE 112017006687T5 DE 112017006687 T DE112017006687 T DE 112017006687T DE 112017006687 T5 DE112017006687 T5 DE 112017006687T5
Authority
DE
Germany
Prior art keywords
state
link
tracks
receiver
transmitter
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
DE112017006687.5T
Other languages
English (en)
Inventor
Rahul R. Shah
William Halleck
Fulvio Spagna
Venkatraman Iyer
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 DE112017006687T5 publication Critical patent/DE112017006687T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B3/00Line transmission systems
    • H04B3/02Details
    • H04B3/36Repeater circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Eine Vorrichtung umfasst einen Agenten, um eine Kommunikation in einem von zwei oder mehr Modi zu ermöglichen, wobei ein erster von den zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine erste Anzahl von Spuren umfassen, und ein zweiter von den zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine zweite Anzahl von Spuren umfassen, und die erste Anzahl größer ist als die zweite Anzahl. Die Vorrichtung umfasst ferner einen Speicher, der Daten umfasst, um anzuzeigen, welcher der zwei oder Modi für eine bestimmte Verbindungsstrecke gilt, und einen Multiplexer, um eine Spurnummerierung, die entweder die erste Anzahl von Spuren oder die zweite Anzahl von Spuren umfasst, umzukehren.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG(EN)
  • Diese Anmeldung beansprucht die Priorität der nicht vorläufigen US-Patentanmeldung Nr. 15/394,278 , die am 29. Dezember 2016 mit dem Titel „HIGH SPEED INTERCONNECT WITH CHANNEL EXTENSION" eingereicht wurde und die hier durch Rückbezug in ihrer Gänze aufgenommen ist.
  • GEBIET
  • Die vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Rechnerentwicklung und insbesondere Hochgeschwindigkeitsverbindungen in mikroelektronischen Systemen.
  • HINTERGRUND
  • Fortschritte in Halbleiterverarbeitung und Logikdesign erlaubten eine Zunahme des Logikanteils, der auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Als Begleiterscheinung entwickelten sich Rechnersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren Logikprozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie anderen Schnittstellen, die innerhalb solcher Prozessoren integriert sind. Ein Prozessor oder eine integrierte Schaltung umfasst in der Regel einen einzelnen physischen Prozessor-Die, wobei der Prozessor-Die eine beliebige Anzahl von Kernen, Hardware-Threads, Logikprozessoren, Schnittstellen, Speichern, Controller-Hubs usw. umfassen kann.
  • Als Folge der größeren Fähigkeit, mehr Verarbeitungsleistung in kleine Gehäuse einzubauen, stieg die Popularität kleinerer Rechenvorrichtungen. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte sind exponentiell gewachsen. Jedoch sind diese kleinen Vorrichtungen auf Server angewiesen, sowohl um Daten zu speichern als auch im Hinblick auf komplexe Verarbeitung, die den Formfaktor übersteigt. Infolgedessen hat auch die Nachfrage auf dem Hochleistungsrechnermarkt (d.h. Serverplatz) zugenommen. Zum Beispiel ist in modernen Systemen typischerweise nicht lediglich ein einzelner Prozessor mit mehreren Kernen, sondern auch mehrere physische Prozessoren (die auch als Mehrfachsockel bezeichnet werden) vorhanden, um die Rechenleistung zu erhöhen. Da jedoch die Verarbeitungsleistung mit der Anzahl von Vorrichtungen in einem Rechensystem steigt, wird die Kommunikation zwischen Sockeln und anderen Vorrichtungen ausschlaggebender.
  • Signal-Repeater und Re-Driver-Schaltungen können in einigen Systemen implementiert werden, um Begrenzungen physischer Kanallänge auszugleichen. Zum Beispiel können Vorrichtungen eine begrenzte Antriebsfähigkeit aufweisen, die die Distanz beschränkt, welche Signale sicher zurücklegen können. Außerdem können einige Verbindungsstandards eine Begrenzung der physischen Länge einer Signalleitung spezifizieren. Eine sich über eine lange Distanz erstreckende Leitung kann in zwei oder mehrere Abschnitte mit einem Puffer oder Repeater zwischen Abschnitten unterteilt sein. Repeater können Retimer und Redriver umfassen.
  • Figurenliste
    • 1 zeigt ein vereinfachtes Blockdiagramm eines Systems, das eine serielle Punkt-zu-Punkt-Verbindung umfasst, um I/O-Vorrichtungen in einem Rechnersystem zu verbinden, gemäß einer Ausführungsform;
    • 2 zeigt ein vereinfachtes Blockdiagramm 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 möglicher Hochleistungsverbindungs-(UPI)-Systemausgestaltungen.
    • 6 zeigt eine Ausführungsform eines geschichteten Protokollstapels, der mit UPI assoziiert ist.
    • 7 zeigt eine Darstellung eines Beispiels eines Zustandsautomaten.
    • 8A-8B zeigen Darstellungen von Beispielen elektrischer geordneter Mengen.
    • 9 zeigt Beispielsteuersupersequenzen.
    • 10A-10B zeigen Darstellungen eines Beispiel-Flits, das über Beispielverbindungsstrecken gesendet wird.
    • 11A-B zeigen ein Beispiel eines Multiplexers.
    • 12A-B zeigen vereinfachte Blockdiagramme, die eine Beispielanpassung einer Verbindungsstrecke repräsentieren.
    • 13 zeigt ein vereinfachtes Blockdiagramm einer Verbindungsstrecke, die eine Repeater-Vorrichtung umfasst.
    • 14 ist ein Ablaufdiagramm, das eine Beispieltechnik veranschaulicht, die mit einer Initialisierung und einem Training einer Verbindung assoziiert ist.
    • 15 zeigt eine Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Mehrkernprozessor umfasst.
    • 16 zeigt eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Mehrkernprozessor umfasst.
    • 17 zeigt eine Ausführungsform eines Blocks für ein Rechensystem, das mehrere Prozessorsockel umfasst.
  • Gleiche Bezugszeichen und Kennzeichnungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche konkrete Einzelheiten dargelegt, wie Beispiele für bestimmte Typen von Prozessoren und Systemkonfigurationen, bestimmte Hardware-Strukturen, bestimmte Details über Architektur und Mikroarchitektur, konkrete Registerkonfigurationen, konkrete Befehlstypen, konkrete Systemkomponenten, konkrete Prozessor-Pipeline-Stufen, konkrete Verbindungsschichten, konkrete Paket-/Transaktionsausgestaltungen, konkrete Transaktionsbezeichnungen, einen konkreten Protokollaustausch, konkrete Verbindungsstreckenbreiten, konkrete Implementierungen und Operation usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Für einen Fachmann kann es jedoch offensichtlich sein, dass diese spezifischen Details nicht notwendigerweise eingesetzt werden müssen, um den Gegenstand der vorliegenden Offenbarung umzusetzen. In anderen Fällen wurde eine detaillierte Beschreibung von an sich bekannten Komponenten oder Verfahren, wie z.B. konkreten und alternativen Prozessorarchitekturen, konkreten Logikschaltungen/Code für beschriebene Algorithmen, konkretem Firmware-Code, konkreten Verbindungsoperationen auf niedriger Ebene, konkreten Logikkonfigurationen, konkreten Herstellungstechniken und Materialien, konkreten Compiler-Implementierungen, konkreter Umsetzung von Algorithmen in Code, konkreten Abschaltvorgangs- und Gating-Techniken/Logik und anderen konkreten Betriebseinzelheiten eines Rechensystems, vermieden, um unnötige Verschleierung der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen in Bezug auf Energieeinsparung, Energieeffizienz, Verarbeitungseffizienz und so weiter in konkreten integrierten Schaltungen, wie z.B. in Rechenplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren der hier beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleiterbauelementen angewendet werden, die auch von solchen Merkmalen profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Servercomputersysteme, Schreibtischcomputersysteme, Laptops, Ultrabook™ beschränkt, sondern können auch in anderen Vorrichtungen, wie z.B. Handheld-Geräten, Smartphones, Tablets, anderen dünnen Notebooks, System-on-Chip-Vorrichtungen (SOC) und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen umfassen Mobiltelefone, Internet-Protokollgeräte, Digitalkameras, persönliche digitale Assistenten (Personal Digital Assistants, PDAs) und tragbare PCs. Hierbei können ähnliche Techniken für eine Hochleistungsverbindung angewendet werden, um die Leistungsfähigkeit in einer Niedrigleistungsverbindung zu erhöhen (oder sogar Energie zu sparen). Eingebettete Anwendungen umfassen normalerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein Ein-Chip-System, Netzwerkcomputer (NetPC), Settop-Boxen, Netzwerkhubs, Wide Area Network-(WAN)-Switches oder ein beliebiges anderes System, das die nachstehend gelehrten Funktionen und Operationen ausführen kann. Des Weiteren sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Software-Optimierungen zur Energieeinsparung und -Effizienz beziehen. Wie in der nachstehenden Beschreibung offensichtlich werden kann, können die Ausführungsformen von Verfahren, Vorrichtungen und Systemen, die hier beschrieben sind (ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon), für eine Zukunft ,grüner Technologie', die mit Leistungsüberlegungen im Gleichgewicht steht, als entscheidend betrachtet werden.
  • Mit dem Voranschreiten von Rechensystemen werden die darin befindlichen Komponenten komplexer. Die Komplexität der Verbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten ist ebenfalls gestiegen, um sicherzustellen, dass Bandbreitennachfrage für einen optimalen Komponentenbetrieb erfüllt ist. Außerdem verlangen verschiedene Marktsegmente unterschiedliche Aspekte der Verbindungsarchitekturen für den jeweiligen Markt. Zum Beispiel erfordern Server eine höhere Leistungsfähigkeit, während das mobile sparsame System zuweilen in der Lage ist, Gesamtleistung für Energieeinsparungen zu opfern. Es ist jedoch ein einzigartiger Zweck der meisten Gefüge, möglichst höchste Leistung bei maximaler Energieeinsparung zu bieten. Außerdem kann eine Vielfalt verschiedener Verbindungen möglicherweise von dem hier beschriebenen Gegenstand profitieren.
  • Neben anderen Beispielen können die PCI-(Peripheral Component Interconnect)- Express-(PCIe)- Verbindungsstrukturarchitektur und QPI-Strukturarchitektur (QuickPath Interconnect) möglicherweise gemäß einem oder mehreren hier beschriebenen Prinzipien verbessert werden. Zum Beispiel besteht ein Hauptziel von PCIe darin, es Komponenten und Vorrichtungen von verschiedenen Lieferanten zu ermöglichen, in einer offenen Architektur miteinander zu arbeiten, mehrere Marktsegmente; Clients (Desktops und Mobile), Server (Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen zu übergreifen. PCI Express ist eine Hochleistungs-, Allzweck- I/O-Verbindung, die für eine breite Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Eigenschaften, wie z.B. sein Nutzungsmodell, seine Load-Store-Architektur und Software-Schnittstellen, wurden bei seinen Überarbeitungen beibehalten, während vorherige Parallelbus-Implementierungen durch eine in hohem Maße skalierbare vollserielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Fortschritte bei Punkt-zu-Punkt-Verbindungen, Switchbasierter Technologie und paketiertem Protokoll, um neue Leistungsniveaus und Merkmale zu liefern. Energieverwaltung, Qualität des Dienstes (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung sind einige der fortgeschrittenen Merkmale, die von PCI Express unterstützt werden. Obwohl sich die Hauptdiskussion hier auf eine neue Hochleistungsverbindungs-(UPI)-Architektur bezieht, können Aspekte der hier beschriebenen Offenbarung auf andere Verbindungsarchitekturen angewendet werden, wie z.B. eine PCIe-kompatible Architektur, eine QPI-kompatible Architektur, eine MIPIkompatible Architektur, eine Hochleistungsarchitektur oder eine andere an sich bekannte Verbindungsarchitektur.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform eines Fabric veranschaulicht, das aus Punkt-zu-Punkt-Verbindungen gebildet ist, die eine Menge von Komponenten miteinander verbinden. Das Fabric und die Komponenten des zum Implementieren des Fabric verwendeten Systems 100 können die Logik und die Komponente (z.B. Hardware- und/oder Software-basiert) besitzen, um ein oder mehrere der hier besprochenen Merkmale zu implementieren. Das System 100 umfasst einen Prozessor 105 und einen Systemspeicher 110, die mit einem Controller-Hub 115 gekoppelt sind. Der Prozessor 105 kann ein beliebiges Verarbeitungselement, wie z.B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder einen anderen Prozessor, umfassen. Der Prozessor 105 ist mit dem Controller-Hub 115 über einen Front-Side-Bus (FSB) 106 gekoppelt. In einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Verbindung, wie nachstehend beschrieben. In einer anderen Ausführungsform umfasst die Verbindung 106 eine serielle differentielle Verbindungsarchitektur, die mit verschiedenen Verbindungsstandards konform ist. Eine oder mehrere Komponenten des Systems 100 können mit einer Logik bereitgestellt werden, um die hier beschriebenen Merkmale zu implementieren.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung, wie z.B. einen Direktzugriffspeicher (RAM), einen nichtflüchtigen Speicher (NV-Speicher) oder einen anderen Speicher, auf den Vorrichtungen im System 100 zugreifen können. Der Systemspeicher 110 ist mit dem Controller-Hub 115 über eine Speicherschnittstelle 116 gekoppelt. Zu Beispielen einer Speicherschnittstelle gehören eine DDR-Speicherschnittstelle (Double Data Rate), eine Dual-Channel-DDR-Speicherschnittstelle und eine DRAM-Speicherschnittstelle (dynamisches RAM).
  • In einer Ausführungsform kann der Controller-Hub 115 einen Root-Hub, einen Root-Komplex oder einen Root-Controller, wie z.B. eine PCIe-Verbindungshierarchie, umfassen. Zu Beispielen eines Controller-Hub 115 gehören ein Chipsatz, ein Memory-Controller-Hub (MCH), eine Northbridge, ein Interconnect-Controller-Hub (ICH), eine Southbridge und ein Root-Controller/-Hub. Häufig bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, z.B. einen Memory-Controller-Hub (MCH), der mit einem Interconnect-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass derzeitige Systeme häufig MCH aufnehmen, der mit dem Prozessor 105 integriert ist, während der Controller 115 mit I/O-Vorrichtungen kommunizieren soll, auf eine ähnliche Weise wie nachstehend beschrieben. In einigen Ausführungsformen wird Peer-to-Peer-Routing fakultativ über den Root-Komplex 115 unterstützt.
  • Hierbei ist der Controller-Hub 115 mit dem Switch/der Brücke 120 über eine serielle Verbindung 119 gekoppelt. Eingabe-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Anschlüsse 117 und 121 bezeichnet werden können, können einen geschichteten Protokollstapel umfassen/implementieren, um eine Kommunikation zwischen dem Controller-Hub 115 und dem Schalter 120 bereitzustellen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Schalter 120 gekoppelt werden.
  • Der Schalter/die Brücke 120 leitet Pakete/Meldungen stromaufwärts von einer Vorrichtung 125, d.h. nach oben einer Hierarchie zu einem Root-Komplex, zum Controller-Hub 115, und stromabwärts, d.h. in einer Hierarchie weg von einem Root-Controller, vom Prozessor 105 oder dem Systemspeicher 110 an die Vorrichtung 125. Der Schalter 120 (Switch) wird in einer Ausführungsform als eine logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst eine interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie z.B. eine I/O-Vorrichtung, eine Netzwerkkarte (NIC), eine Erweiterungskarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speichervorrichtung, eine CD/DVD-ROM, einen Bildschirm, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabevorrichtungen. In der PCIe-Fachsprache wird eine solche Vorrichtung häufig als ein Endpunkt bezeichnet. Obwohl nicht konkret dargestellt, kann die Vorrichtung 125 eine Brücke (z.B. eine PCIe-zu-PCUPCI-X-Brücke) umfassen, um Legacy- oder andere Versionen von Vorrichtungen oder Verbindungs-Fabrics zu unterstützen, die durch solche Vorrichtungen unterstützt werden.
  • Ein Grafikbeschleuniger 130 kann ebenfalls mit dem Controller-Hub 115 über eine serielle Verbindung 132 gekoppelt werden. In einer Ausführungsform wird der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Schalter 120 und dementsprechend die I/O-Vorrichtung 125 wird dann mit dem ICH gekoppelt. I/O-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich der vorstehenden MCH-Besprechung kann eine Grafiksteuerung des Grafikbeschleunigers 130 selbst im Prozessor 105 integriert werden.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 kann eine beliebige Form eines geschichteten Kommunikationsstapels, wie z.B. einen QPI-Stapel, einen PCIe-Stapel, einen Hochleistungs-Rechenverbindungsstapel (UPI-Stapel) der nächsten Generation oder einen anderen geschichteten Stapel, umfassen. In einer Ausführungsform kann der Protokollstapel 200 eine Transaktionsschicht 205, eine Verbindungsschicht 210 und eine Bitübertragungsschicht 220 umfassen. Eine Schnittstelle, wie z.B. Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als der Kommunikationsprotokollstapel 200 repräsentiert werden. Die Repräsentation als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle, das/die einen Protokollstapel implementiert/umfasst, bezeichnet werden.
  • Pakete können verwendet werden, um Informationen zwischen Komponenten zu kommunizieren. Pakete können in der Transaktionsschicht 205 und der Datenverbindungsschicht 210 gebildet werden, um die Information von der Sendekomponente zu der Empfangskomponente zu transportieren. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie um zusätzliche Informationen erweitert, die zum Handhaben von Paketen an jenen Schichten verwendet werden. Auf der Empfangsseite findet der umgekehrte Prozess statt und Pakete werden von ihrer Repräsentation in der Bitübertragungsschicht 220 in die Repräsentation der Datenverbindungsschicht 210 und schließlich (bei Transaktionsschichtpaketen) in die Form, die durch die Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann, umgewandelt.
  • In einer Ausführungsform kann die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Verbindungsarchitektur, wie z.B. der Datenverbindungsschicht 210 und der Bitübertragungsschicht 220, bereitstellen. In dieser Hinsicht kann die Hauptaufgabe der Transaktionsschicht 205 ein Zusammensetzen und Auseinandernehmen von Paketen (d.h. Transaktionsschichtpaketen oder TLPs) umfassen. Die Transaktionsschicht 205 kann eine kreditbasierte Ablaufsteuerung für TLPs handhaben In einigen Implementierungen können zum Beispiel geteilte Transaktionen verwendet werden, d.h. Transaktionen, bei denen Anfrage und Antwort zeitlich getrennt sind, was ermöglicht, dass eine Verbindung anderen Verkehr überträgt, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Eine kreditbasierte Flusssteuerung kann verwendet werden, um virtuelle Kanäle und Netzwerke umzusetzen, die die Verbindungs-Fabric verwenden. In einem Beispiel kann eine Vorrichtung einen Anfangskreditbetrag für jeden der Empfangspuffer in der Transaktionsschicht 205 ankündigen. Eine externe Vorrichtung an dem gegenüberliegenden Ende der Verbindung, wie z.B. der Controller-Hub 115 in 1, kann die Anzahl von Kreditpunkten, die durch jedes TLP verbraucht werden, zählen. Eine Transaktion kann gesendet werden, wenn die Transaktion einen Kreditrahmen nicht übersteigt. Nach dem Empfangen einer Antwort wird ein Kreditbetrag wiederhergestellt. Neben anderen möglichen Vorteilen besteht ein Beispiel für einen Vorteil eines solchen Kreditschemas darin, dass die Latenz einer Kreditrückgabe die Leistung nicht beeinträchtigt, vorausgesetzt, dass der Kreditrahmen nicht erreicht wird.
  • In einer Ausführungsform können vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabeadressraum und einen Meldungsadressraum aufweisen. Speicherraumtransaktionen umfassen eine oder mehrere Leseanforderungen und Schreibanforderungen, um Daten zu/von einer speicherabgebildeten Stelle zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen in der Lage, zwei verschiedene Adressformate, z.B. ein kurzes Adressformat, wie z.B. eine 32-Bit Adresse, oder ein langes Adressformat, wie z.B. eine 64-Bit Adresse, zu verwenden. Konfigurationsraumtransaktionen können verwendet werden, um auf den Konfigurationsraum verschiedener mit der Verbindung verbundener Vorrichtungen zuzugreifen. Transaktionen in dem Konfigurationsraum können Leseanforderungen und Schreibanforderungen umfassen. Meldungsraumtransaktionen (oder einfach Meldungen) können auch definiert verwenden, um In-Band-Kommunikation zwischen Verbindungs-Agenten zu unterstützen. Daher kann die Transaktionsschicht 205 in einem Ausführungsbeispiel Paketheader/-Nutzdaten 206 zusammensetzen.
  • Unter schneller Bezugnahme auf 3 ist ein Ausführungsbeispiel eines Transaktionsschicht-Paketdeskriptors veranschaulicht. In einer Ausführungsform kann der Transaktionsdeskriptor 300 einen Mechanismus zum Mitführen von Transaktionsinformationen darstellen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 eine Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungen umfassen Rückverfolgungsmodifikationen von Standardtransaktionsreihenfolgen und eine Zuordnung von Transaktionen zu Kanälen. Der Transaktionsdeskriptor 300 kann zum Beispiel ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306 umfassen. Im dargestellten Beispiel ist das globale Kennungsfeld 302 derart gezeigt, dass es ein lokales Transaktionskennungsfeld 308 und ein Quellkennungsfeld 310 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anfragen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein durch einen anfordernden Agenten erzeugtes Feld und kann für alle ausstehenden Anfragen, die für diesen anfordernden Agenten eine Vervollständigung erfordern, eindeutig sein. Außerdem identifiziert in diesem Beispiel die Quellenkennung 310 eindeutig den anfordernden Agenten innerhalb einer Verbindungshierarchie. Dementsprechend stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Ursprungs-ID 310 eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 spezifiziert Charakteristika und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die eine Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Ordnungsfeld 316 und ein No-Snoop-Feld 318. Hierbei kann das Prioritätsunterfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuordnen. Das reservierte Attributfeld 314 ist für die Zukunft oder für eine Anbieter-definierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfeldes implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um fakultative, die Art der Ordnung übermittelnde Informationen zu liefern, die Standardordnungsregeln modifizieren können. Gemäß einem Implementierungsbeispiel bezeichnet ein Ordnungsattribut von „0“, dass Standardordnungsregeln angewendet werden sollen, wobei ein Ordnungsattribut von „1“ gelockerte Ordnung bezeichnet, wobei Schreibvorgänge andere Schreibvorgänge in der gleichen Richtung überholen können und Lesevorgangsbeendigungen Schreibvorgänge in der gleichen Richtung überholen können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen abgehört werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Um auf die Diskussion von 2 zurückzukommen, kann eine Verbindungsschicht 210, die auch als Datenverbindungsschicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220 agieren. In einer Ausführungsform besteht eine Zuständigkeit der Datenverbindungsschicht 210 darin, einen verlässlichen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung bereitzustellen. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengesetzt wurden, wendet Paketsequenz-Identifikator 211, d.h. eine Identifizierungsnummer oder Paketnummer, an, berechnet und wendet einen Fehlererkennungscode, d.h. CRC 212, an und schickt die modifizierten TLPs an die Bitübertragungsschicht 220 zur Übertragung über eine physische an eine externe Vorrichtung.
  • In einem Beispiel umfasst die Bitübertragungsschicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222, um ein Paket an eine externe Einrichtung physisch zu senden. Hierbei ist der logische Unterblock 221 für die „digitalen“ Funktionen der Bitübertragungsschicht 221 zuständig. In dieser Hinsicht kann der logische Unterblock einen Sendebereich zum Vorbereiten einer ausgehenden Information zur Versendung durch den physischen Unterblock 222 und einen Empfängerbereich zum Identifizieren und Vorbereiten einer empfangenen Information, bevor sie an die Verbindungsschicht 210 übermittelt wird, umfassen.
  • Der physische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird von dem logischen Unterblock 221 mit Symbolen versorgt, die der Sender serialisiert und an eine externe Vorrichtung sendet. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Unterblock 221 zugeführt. In einem Ausführungsbeispiel wird ein 8b/10b-Sendecode eingesetzt, bei dem Zehn-Bit-Symbole gesendet/empfangen werden. Hierbei werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 einzurahmen. Außerdem liefert der Empfänger in einem Beispiel ebenfalls einen Symboltakt, der aus dem eintreffenden seriellen Strom ermittelt wird.
  • Wie vorstehend angegeben, ist ein geschichteter Protokollstapel, obwohl die Transaktionsschicht 205, die Verbindungsschicht 210 und die Bitübertragungsschicht 220 unter Bezugnahme auf eine konkrete Ausführungsform eines Protokollstapels (wie z.B. eines PCIe-Protokollstapels) besprochen wurden, nicht derart beschränkt. In der Tat kann ein beliebiges geschichtetes Protokoll aufgenommen/implementiert werden und hier besprochene Merkmale anwenden. Zum Beispiel kann ein Anschluss/eine Schnittstelle, der/die als ein geschichtetes Protokoll repräsentiert ist, umfassen: (1) eine erste Schicht zum Zusammensetzen von Paketen, d.h. eine Transaktionsschicht, eine zweite Schicht zum Sequenzieren von Paketen, d.h. eine Verbindungsschicht, und eine dritte Schicht zum Senden der Pakete, d.h. eine Bitübertragungsschicht. Als ein konkretes Beispiel wird ein geschichtetes Hochleistungsverbindungsprotokoll, wie hier beschrieben, verwendet.
  • Unter Bezugnahme auf 4 ist ein Ausführungsbeispiel einer seriellen Punkt-zu-Punkt-Struktur veranschaulicht. Eine serielle Punkt-zu-Punkt-Verbindung kann einen beliebigen Übertragungspfad zum Senden serieller Daten umfassen. In der dargestellten Ausführungsform kann eine Verbindung zwei differenziell betriebene Niederspannungs-Signalpaare: ein Sendepaar 406/411 und ein Empfangspaar 412/407, umfassen. Dementsprechend umfasst eine Vorrichtung 405 eine Sendelogik 406 zum Senden von Daten an eine Vorrichtung 410, und eine Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410. Mit anderen Worten sind zwei Sendepfade, d.h. Pfade 416 und 417, und zwei Empfangspfade, d.h. Pfade 418 und 419, in einigen Implementierungen einer Verbindungsstrecke aufgenommen.
  • Ein Sendepfad bezieht sich auf einen beliebigen Pfad zum Senden von Daten, wie z.B. eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z.B. der Vorrichtung 405 und der Vorrichtung 410, wird als eine Verbindung, wie z.B. die Verbindung 415, bezeichnet. Eine Verbindung kann eine Spur unterstützen - jede Spur repräsentiert einen Satz von differenziellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen). Um Bandbreite zu skalieren, kann eine Verbindung mehrere durch xN bezeichnete Spuren versammeln, wobei N eine beliebige unterstützte Verbindungsstreckenbreite ist wie 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differenzielles Paar kann sich auf zwei Übertragungspfade beziehen, wie z.B. die Leitungen 416 und 417, um differenzielle Signale zu senden. Wenn zum Beispiel die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d.h., eine ansteigende Flanke, geht die Leitung 417 von einem hohen logischen Pegel zu einem niedrigen logischen Pegel über, d.h., eine fallende Flanke. Differenzsignale weisen potentiell bessere elektrische Charakteristiken auf, wie z.B., neben anderen Beispielen für Vorteile, eine bessere Signalintegrität, d.h. Kreuzkopplung, eine Spannungsüberschreitung/-unterschreitung, eine Nachschwingung. Dies ermöglicht ein besseres Zeitfenster, was schnellere Übertragungsfrequenzen ermöglicht.
  • In einer Ausführungsform kann eine Hochleistungsverbindung, wie z.B. UPI, bereitgestellt werden. Eine UPI kann eine Cache-kohärente, verbindungsstreckenbasierte Verbindung der nächsten Generation umfassen. Als ein Beispiel kann die UPI in Hochleistungsrechenplattformen, wie z.B. Workstations oder Servern, verwendet werden, einschließlich in Systemen, in denen PCIe oder ein anderes Verbindungsprotokoll in der Regel verwendet wird, um Prozessoren, Beschleuniger, I/O-Vorrichtungen und dergleichen zu verbinden. Jedoch ist die UPI nicht derart beschränkt. Stattdessen kann die UPI in einem beliebigen der Systeme oder Plattformen, die hier beschrieben werden, verwendet werden. Außerdem können die einzelnen entwickelten Ideen auf andere Verbindungen und Plattformen, wie z.B. PCIe, MIPI, QPI usw. angewendet werden.
  • Um verschiedene Vorrichtungen zu unterstützen, kann die UPI in einem Implementierungsbeispiel eine ISA-Unabhängigkeit (Instruction Set Architecture, Befehlssatzarchitektur) umfassen (d.h. die UPI kann in mehreren verschiedenen Vorrichtungen implementiert werden). In einem anderen Szenario kann die UPI auch verwendet werden, um Hochleistungs-I/O-Vorrichtungen, nicht nur Prozessoren oder Beschleuniger, zu verbinden. Zum Beispiel kann eine Hochleistungs-PCIe-Vorrichtung mit einer UPI über eine geeignete Übersetzungsbrücke (d.h. UPI nach PCIe) gekoppelt werden. Des Weiteren können die UPI-Verbindungstrecken durch viele UPI-basierte Vorrichtungen, wie z.B. Prozessoren, auf verschiedene Weisen (z.B. Sterne, Ringe, Maschen usw.) verwendet werden. 5 zeigt Beispiele für Implementierungen mehrerer möglicher Mehrfachsockelkonfigurationen. Eine Zweisockelkonfiguration 505, wie dargestellt, kann zwei UPI-Verbindungsstrecken umfassen; jedoch kann in anderen Implementierungen eine UPI-Verbindungsstrecke verwendet werden. Für größere Topologien kann eine beliebige Ausgestaltung verwendet werden, sofern eine Kennung (ID) zugewiesen werden kann und neben anderen zusätzlichen oder Ersatzfunktionen eine Form eines virtuellen Pfads vorhanden ist. Wie dargestellt, weist in einem Beispiel eine Viersockelkonfiguration 510 eine UPI-Verbindungsstrecke von jedem Prozessor zu einem anderen auf. Jedoch ist in der in der Ausgestaltung 515 gezeigten Acht-Sockel-Implementierung nicht jeder Sockel direkt miteinander über einen UPI-Link verbunden. Wenn jedoch ein virtueller Pfad oder Kanal zwischen den Prozessoren vorhanden ist, wird die Ausgestaltung unterstützt. Ein Bereich von unterstützten Prozessoren umfasst 2-32 in einer nativen Domäne. Eine große Anzahl von Prozessoren kann, neben anderen Beispielen, durch die Verwendung von mehreren Domänen oder anderen Verbindungen zwischen Knotensteuereinheiten erreicht werden.
  • Die UPI-Architektur umfasst eine Definition einer geschichteten Protokollarchitektur, die in einigen Beispielen Protokollschichten (kohärent, nicht kohärent und fakultativ andere speicherbasierte Protokolle), eine Weglenkungsschicht, eine Verbindungsschicht und eine Bitübertragungsschicht umfasst. Außerdem kann die UPI ferner Verbesserungen umfassen, die sich, neben anderen Beispielen, auf Energiemanager (z.B. Leistungssteuereinheiten (PCUs)), Entwurf für Test und Fehlersuche/-beseitigung (DFT), Fehlerbehandlung, Register, Sicherheit beziehen. 5 zeigt eine Ausführungsform eines Beispiels eines geschichteten UPI-Protokollstapels. In einigen Implementierungen können zumindest einige der in 5 veranschaulichten Schichten fakultativ sein. Jede Schicht behandelt ihre eigene Granularitätsebene oder Informationsmenge (die Protokollschicht 605a,b mit Paketen 630, die Verbindungsschicht 610a,b mit Flits 635, und Bitübertragungsschicht 605a,b mit Phits 640). Es ist zu beachten, dass, dass ein Paket in einigen Ausführungsformen partielle Flits, ein einzelnes Flit oder mehrere Flits, basierend auf der Implementierung, umfassen kann.
  • Als ein erstes Beispiel umfasst eine Breite eines Phit 640 eine 1-zu-1-Abbildung der Verbindungsstreckenbreite auf Bits (z.B. umfasst eine 20-Bit-Verbindungsstreckenbreite ein Phit von 20 Bits usw.). Flits können eine größere Größe aufweisen, z.B. 184, 192 oder 200 Bits. Es ist zu beachten, dass, wenn das Phit 640 20 Bits breit ist und die Größe des Flits 635 184 Bit ist, eine gebrochene Anzahl von Phits 640 benötigt wird, um ein Flit 635 zu senden (z.B., neben anderen Beispielen, 9,2 Phits zu 20 Bits, um ein 184-Bit-Flit 635 zu senden, oder 9,6 zu 20 Bits, um ein 192-Bit-Flit zu senden). Es ist zu beachten, dass Breiten der Grundverbindungsstrecke an der Bitübertragungsschicht variieren können. Zum Beispiel kann die Anzahl von Spuren pro Richtung 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. umfassen. In einer Ausführungsform ist die Verbindungsschicht 610a,b in der Lage, mehrere Teile unterschiedlicher Transaktionen in ein einziges Flit einzubetten, und ein oder mehrere Header (z.B. 1, 2, 3, 4) können in das Flit eingebettet werden. In einem Beispiel spaltet die UPI die Header in entsprechende Schlitze auf, um mehrere Nachrichten in dem Flit, die für verschiedene Knoten bestimmt sind, zu ermöglichen.
  • Die Bitübertragungsschicht 605a,b kann in einer Ausführungsform für die schnelle Übertragung von Informationen auf dem physischen Medium (elektrisch oder optisch usw.) zuständig sein. Die physische Verbindungsstrecke kann Punkt-zu-Punkt zwischen zwei Verbindungsschicht-Entitäten, wie z.B. der Schicht 605a und 605b, sein. Die Verbindungsschicht 610a,b kann die Bitübertragungsschicht 605a,b von den oberen Schichten trennen und stellt die Fähigkeit bereit, Daten (und auch Anfragen) zuverlässig zu übertragen und die Flusssteuerung zwischen zwei direkt verbundenen Entitäten zu verwalten. Die Verbindungsschicht kann auch für das Virtualisieren des physischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen zuständig sein. Die Protokollschicht 620a,b stützt sich auf die Verbindungsschicht 601a,b, um Protokollnachrichten in die geeigneten Nachrichtenklassen und virtuellen Kanäle abzubilden, bevor sie sie an die Bitübertragungsschicht 605a,b zum Übertragen über physische Verbindungsstrecken übergibt. Die Verbindungsschicht 610a,b kann mehrere Nachrichten unterstützen, wie z.B., neben anderen Beispielen, eine Anforderung, Snoop, Antwort, Zurückschreiben, nicht kohärente Daten.
  • Die Bitübertragungsschicht 605a,b (oder PHY) der UPI kann oberhalb der elektrischen Schicht (d.h. der elektrischen Leiter, die zwei Komponenten verbinden) und unterhalb der Verbindungsschicht 610a,b implementiert werden, wie in 6 dargestellt. Die Bitübertragungsschicht und eine entsprechende Logik können auf jedem Agenten angeordnet sein und sie verbindet die Verbindungsschichten auf zwei Agenten (A und B), die voneinander (z.B. auf Vorrichtungen auf jeder Seite einer Verbindungsstrecke) getrennt sind. Die lokalen und entfernten elektrischen Schichten sind durch physische Medien (z.B. Drähte, Leiter, optisch, usw.) verbunden. Die Bitübertragungsschicht 605a,b weist in einer Ausführungsform zwei Hauptphasen, Initialisierung und Betrieb, auf. Während einer Initialisierung ist die Verbindung für die Verbindungsschicht undurchlässig, und eine Signalisierung kann eine Kombination von zeitgesteuerten Zuständen und Handshake-Ereignissen umfassen. Während des Betriebs ist die Verbindung für die Verbindungsschicht durchlässig, und die Signalisierung findet mit einer Geschwindigkeit statt, wobei alle Spuren gemeinsam als eine einzige Verbindungsstrecke 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 eine Verbindungsstrecke bezeichnet und abstrahiert einige physische Aspekte, die Medien, Breite und Geschwindigkeit umfassen, von den Verbindungsschichten, während sie Flits und Steuerung/Status der aktuellen Konfiguration (z.B. Breite) mit der Verbindungsschicht austauscht. Die Initialisierungsphase umfasst untergeordnete Phasen, z.B. Abrufen, Konfiguration. Die Betriebsphase umfasst ebenfalls untergeordnete Phasen (z.B. Energiemanagementzustände der Verbindungsstrecke).
  • In einer Ausführungsform kann die Verbindungsschicht 610a,b implementiert werden, um eine zuverlässige Datenübertragung zwischen zwei Protokoll- oder Weglenkungsentitäten bereitzustellen. Die Verbindungsschicht kann die Bitübertragungsschicht 605a,b von der Protokollschicht 620a,b trennen und sie kann für die Flusssteuerung zwischen zwei Protokollagenten (A, B) zuständig sein und virtuelle Kanaldienste für die Protokollschicht (Nachrichtenklassen) und die Weglenkungsschicht (virtuelle Netze) bereitstellen. Die Schnittstelle zwischen der Protokollschicht 620a,b und der Verbindungsschicht 610a,b kann sich typischerweise auf der Paketebene befinden. In einer Ausführungsform wird die kleinste Übertragungseinheit an der Verbindungsschicht als ein Flit bezeichnet, das eine spezifizierte Anzahl von Bits, wie z.B. 192 Bits oder eine andere Stückelung, darstellt. Die Verbindungsschicht 610a,b ist auf die Bitübertragungsschicht 605a,b angewiesen, um die Übertragungseinheit (Phit) der Bitübertragungsschicht 605a,b in die Übertragungseinheit (Flit) der Verbindungsschicht 610a,b zu formulieren. Außerdem kann die Verbindungsschicht 610a,b logisch in zwei Teile, einen Sender und einen Empfänger, aufgeteilt sein. Ein Sender/Empfänger-Paar auf einer Entität kann mit einem Empfänger/Sender-Paar auf einer anderen Entität verbunden werden. Eine Flusssteuerung wird häufig sowohl auf einer Flit- als auch auf einer Paket-Basis ausgeführt. Eine Fehlerdetektion und -korrektur wird ebenfalls potentiell auf der Basis einer Flit-Ebene ausgeführt.
  • In einer Ausführungsform kann die Weglenkungsschicht 615a,b ein flexibles und verteiltes Verfahren bereitstellen, um UPI-Transaktionen von einem Ursprung an ein Ziel zu lenken. Das Schema ist flexibel, da Weglenkungsalgorithmen für mehrere Topologien durch programmierbare Lenkungstabellen in jedem Router spezifiziert werden können (die Programmierung wird in einer Ausführungsform durch Firmware, Software oder eine Kombination davon durchgeführt). Die Weglenkungsfunktionalität kann verteilt sein; die Weglenkung kann durch eine Reihe von Weglenkungsschritten erfolgen, wobei jeder Weglenkungsschritt durch ein Nachschlagen einer Tabelle in entweder dem Ursprungs-, Zwischen- oder Zielrouter definiert ist. Das Nachschlagen an einem Ursprung kann verwendet werden, um ein UPI-Paket in das UPI-Fabric einzuspeisen. Das Nachschlagen an einem Zwischenrouter kann verwendet werden, um ein UPI-Paket von einem Eingangsanschluss an einen Ausgangsanschluss zu lenken. Das Nachschlagen an einem Zielanschluss kann verwendet werden, um den Ziel-UPI-Protokollagenten anzuvisieren. Es ist zu beachten, dass die Weglenkungsschicht in einigen Implementierungen dünn sein kann, da die Weglenkungstabellen und daher die Weglenkungsalgorithmen nicht konkret durch eine Beschreibung definiert sind. Das ermöglicht Flexibilität und eine Vielfalt von Verwendungsmodellen, die flexible architektonische Plattformtopologien umfassen, welche durch die Systemimplementierung definiert werden. Die Weglenkungsschicht 615a,b ist auf die Verbindungsschicht 610a, b angewiesen, um das Verwenden von bis zu drei (oder mehr) virtuellen Netzen (VNs) bereitzustellen - in einem Beispiel zwei Deadlock-freie VNs, VN0 und VN1, wobei mehrere Nachrichtenklassen, die in jedem virtuellen Netz definiert sind. Ein gemeinsam genutztes adaptives virtuelles Netz (VNA) kann in der Verbindungsschicht definiert sein, dieses adaptive Netz kann jedoch nicht direkt in Weglenkungskonzepten freigelegt werden, da jede Nachrichtenklasse und jedes virtuelle Netz, neben anderen Merkmalen und Beispielen, dedizierte Ressourcen und einen garantierten Weiterleitungsfortschritt aufweisen können.
  • In einer Ausführungsform kann die UPI eine Kohärenzprotokollschicht 620a,b, umfassen, um Agenten zu unterstützen, die Datenzeilen aus dem Speicher Zwischenspeichern. Ein Agent, der Speicherdaten Zwischenspeichern möchte, kann das Kohärenzprotokoll verwenden, um die Datenzeile zu lesen, die in seinen Cache geladen werden soll. Ein Agent, der eine Datenzeile in seinem Cache ändern möchte, kann das Kohärenzprotokoll verwenden, um vor dem Ändern der Daten Eigentumsrechte der Zeile zu erlangen. Nach dem Ändern einer Zeile kann ein Agent den Protokollanforderungen folgen, indem er sie in seinem Cache behält, bis er die Zeile entweder zurück in den Speicher schreibt oder die Zeile in eine Antwort auf eine externe Anfrage einfügt. Zuletzt kann ein Agent externe Anfragen erfüllen, um eine Zeile in einem Cache ungültig zu machen. Das Protokoll stellt eine Kohärenz von Daten sicher, indem es die Regeln vorgibt, die von allen Zwischenspeicherungsagenten befolgt werden. Dies stellt auch die Mittel für Agenten ohne Zwischenspeicher bereit, um Speicherdaten kohärent zu lesen und zu schreiben.
  • Zwei Bedingungen können durchgesetzt werden, um Transaktionen zu unterstützten, die das UPI-Kohärenzprotokoll verwenden. Zuerst kann das Protokoll eine Datenkonsistenz zum Beispiel auf der Grundlage einer Adresse in den Daten in Zwischenspeichern von Agenten und zwischen jenen Daten und den Daten im Speicher aufrechterhalten. Informell kann sich Datenkonsistenz auf jede gültige Zeile von Daten im Zwischenspeicher eines Agenten beziehen, die den aktuellsten Wert der Daten darstellt, und Daten, die in einem Kohärenzprotokollpaket übertragen werden, können den aktuellsten Wert der Daten zum Sendezeitpunkt darstellen. Wenn keine gültige Kopie der Daten in Caches oder bei der Übertragung vorhanden ist, kann das Protokoll sicherstellen, dass der aktuellste Wert der Daten im Speicher vorhanden ist. Zweitens kann das Protokoll gut definierte Verpflichtungspunkte für Anfragen bereitstellen. Verpflichtungspunkte für Leseoperationen können anzeigen, wann die Daten verwendbar sind; und für Schreiboperationen können sie anzeigen, wann die geschriebenen Daten global beobachtbar sind und durch anschließende Leseoperationen geladen werden. Das Protokoll kann diese Verpflichtungspunkte sowohl für zwischenspeicherbare als auch nicht zwischenspeicherbare (UC) Anfragen im kohärenten Speicherbereich unterstützen.
  • In einigen Implementierungen kann die UPI einen eingebetteten Taktgeber verwenden. Ein Taktsignal kann in Daten, die unter Verwendung der Verbindungen übertragen werden, eingebettet werden. Wenn das Taktsignal in die Daten eingebettet ist, können getrennte und dedizierte Taktspuren vermieden werden. Dies kann nützlich sein, da es zum Beispiel ermöglicht, dass mehr Stifte einer Vorrichtung für eine Datenübertragung bestimmt werden, besonders in Systemen, in denen Platz für Stifte kostbar ist.
  • Bitübertragungsschicht
  • Eine Verbindungsstrecke kann zwischen zwei Agenten auf jeder Seite einer Verbindung aufgebaut werden. Ein Agent, der Daten sendet, kann ein lokaler Agent sein, und der Agent, der die Daten empfängt, kann ein entfernter Agent sein. Zustandsautomaten können durch beide Agenten eingesetzt werden, um verschiedene Aspekte der Verbindungsstrecke zu verwalten. In einer Ausführungsform kann der Datenpfad der Bitübertragungsschicht Flits von der Verbindungsschicht an das elektrische Frontend senden. Der Steuerweg umfasst in einer Implementierung einen Zustandsautomaten (der auch als ein Verbindungsstreckentrainings-Zustandsautomat oder Ähnliches bezeichnet wird). Die Aktionen und das Verlassen von Zuständen des Zustandsautomaten können von internen Signalen, Zeitgebern, externen Signalen und anderen Informationen abhängen. In der Tat können einige der Zustände, wie z.B. manche Initialisierungszustände, Zeitgeber aufweisen, um einen Timeout-Wert zum Verlassen eines Zustands bereitzustellen. Es ist zu beachten, dass sich in einigen Ausführungsformen das Detektieren auf ein Detektieren eines Ereignisses auf beiden Schenkeln einer Spur bezieht; jedoch nicht notwendigerweise gleichzeitig. In anderen Ausführungsformen bezieht sich jedoch das Detektieren auf eine Detektion eines Ereignisses durch einen Referenzagenten. Ein Entprellen bezieht sich als ein Beispiel auf ununterbrochene Aufrechterhaltung eines Signals. In einer Ausführungsform unterstützt die UPI den Betrieb im Fall von funktionslosen Spuren. Hierbei können Spuren in spezifischen Zustanden fallengelassen werden.
  • Zustände, die in dem Zustandsautomaten definiert sind, können, neben anderen Kategorien und Unterkategorien, Rücksetzzustände, Initialisierungszustände und Betriebszustände umfassen. In einem Beispiel können einige Initialisierungszustände einen sekundären Zeitgeber aufweisen, der verwendet wird, um den Zustand nach einem Timeout zu verlassen (im Wesentlichen ein Abbruch aufgrund eines Versagens, in dem Zustand einen Fortschritt zu machen). Ein Abbruch kann ein Aktualisieren von Registern, wie z.B. eines Statusregisters, umfassen. Einige Zustände können außerdem primär(e) Zeitgeber aufweisen, die verwendet werden, um die primären Funktionen in dem Zustand zu terminieren. Andere Zustände können definiert sein, so dass, neben anderen Beispielen, interne oder externe Signale (wie z.B. Handshake-Protokolle) den Übergang von dem Zustand in einen anderen Zustand treiben.
  • Ein Zustandsautomat kann außerdem Fehlerkorrektur durch einen Einzelschritt, ein Einfrieren nach Initialisierungsabbruch und eine Verwendung von Testeinrichtungen unterstützen. Hierbei können Zustandsausgänge vertagt/gehalten werden, bis die Fehlerkorrektursoftware bereit ist. In einer Instanz kann der Ausgang bis zum sekundären Timeout vertagt/gehalten werden. Aktionen und Ausgänge können in einer Ausführungsform auf einem Austausch von Trainingssequenzen basieren. In einer Ausführungsform soll der Verbindungsstrecken-Zustandsautomat in der Taktdomäne des lokalen Agenten ausgeführt werden, und der Übergang von einem Zustand in den nächsten soll mit einer Trainingssequenzgrenze des Senders zusammenfallen. Statusregister können verwendet werden, um den aktuellen Zustand widerzuspiegeln.
  • 7 zeigt eine Darstellung von mindestens einem Abschnitt eines Zustandsautomaten, der durch Agenten in einer Beispielimplementierung der UPI verwendet wird. Es versteht sich, dass die Zustände, die in der Zustandstabelle von 7 aufgenommen sind, eine nicht vollständige Auflistung möglicher Zustande umfassen. Zum Beispiel sind einige Übergänge weggelassen, um das Diagramm zu vereinfachen. Außerdem können einige Zustände kombiniert, aufgeteilt oder weggelassen werden, während andere hinzugefügt werden können. Solche Zustände können umfassen:
  • Ereignisrücksetzzustand: wird in einem warmen (warm reset) oder kalten Rücksetzereignis (cold reset) eingegangen. Stellt Ausgangswerte wieder her. Initialisieren von Zählern (z.B. Synchronisationszähler). Kann in einen anderen Zustand austreten, wie z.B. einen anderen Rücksetzzustand.
  • Zeitrücksetzzustand: zeitgesteuerter Zustand zur In-Band-Rücksetzung. Kann eine vordefinierte elektrische geordnete Menge (EOS) treiben, so dass entfernte Empfänger in der Lage sind, die EOS zu detektieren und ebenfalls in die zeitgesteuerte Rücksetzung einzutreten. Empfänger weist Spuren auf, die elektrische Einstellungen halten. Kann zu einem Agenten austreten, um den Rücksetzzustand zu kalibrieren.
  • Kalibrieren des Rücksetzzustands: Kalibrierung ohne Signalisierung auf der Spur (z.B. Empfängerkalibrierungszustand) oder Abschalten von Treibern. Kann eine vorbestimmte Zeitspanne in dem Zustand basierend auf einem Zeitgeber sein. Kann eine Betriebsgeschwindigkeit einstellen. Kann als ein Wartezustand wirken, wenn ein Anschluss nicht aktiviert ist. Kann eine minimale Residenzzeit umfassen. Empfängerkonditionierung oder Staffelung kann auf der Grundlage des Entwurfs auftreten. Kann nach einem Timeout und/oder Fertigstellung der Kalibrierung in einen Empfängerdetektionszustand austreten.
  • Empfängerdetektionszustand: Detektieren der Anwesenheit eines Empfängers auf der Spur(en). Kann nach Empfängerabbruch suchen (z.B. Empfänger-Pulldown-Einfügung). Kann in einen Kalibrierungsrücksetzzustand austreten, wenn ein spezifizierter Wert gesetzt wird, oder wenn ein weiterer spezifizierter Wert nicht gesetzt ist. Kann in einen Senderkalibrierungszustand austreten, wenn ein Empfänger detektiert wird oder ein Timeout erreicht wird.
  • Senderkalibrierungszustand: für Senderkalibrierungen. Kann ein zeitgesteuerter Zustand sein, der Senderkalibrierungen zugewiesen ist. Kann eine Signalisierung auf einer Spur umfassen. Kann eine EOS, wie z.B. eine EIEOS (Electric Idle Exit Ordered Set), kontinuierlich treiben. Kann in einen Konformitätszustand austreten, wenn die Kalibrierung beendet ist oder nach Ablauf eines Zeitgebers. Kann in einen Senderdetektionszustand austreten, wenn ein Zähler abgelaufen ist oder ein sekundäres Timeout aufgetreten ist.
  • Senderdetektionszustand: qualifiziert gültige Signalisierung. Kann ein Handshake-Zustand sein, wobei ein Agent auf der Grundlage einer Signalisierung eines entfernten Agenten Aktionen fertigstellt und in einen nächsten Zustand austritt. Empfänger kann gültige Signalisierung von einem Sender qualifizieren. Empfänger sucht in einer Ausführungsform nach einer Aufwachdetektion, und falls auf einer oder mehreren Spuren entprellt (debounced), sucht nach ihr auf den anderen Spuren. Sender treibt ein Detektionssignal. Kann als Antwort darauf, dass Entprellen für alle Spuren fertiggestellt ist und/oder ein Timeout oder falls Entprellen auf allen Spuren nicht fertiggestellt ist und ein Timeout auftritt, in einen Abrufzustand austreten. Hierbei können eine oder mehrere Überwachungsspuren wach gehalten werden, um ein Aufwachsignal zu entprellen. Und falls entprellt, dann sind die anderen Spuren potentiell entprellt. Dieses kann Energieeinsparungen in Niedrigleistungszuständen ermöglichen.
  • Beacon-(L1b)-Zustand: Bietet einen vorübergehenden Zustand, in dem ein Agent auf die Anwesenheit eines entfernten Agenten im Senderdetektionszustand warten kann. Dieser Zustand kann bereitgestellt werden, um Fälle zu berücksichtigen, in denen eine Repeater-Vorrichtung (z.B. ein Retimer, ein Redriver oder ein anderer Repeater) mit einer Verbindungsstrecke verbunden wird, bevor ein entfernter Endpunkt ebenfalls mit der Verbindungsstrecke verbunden wird (wobei der Repeater zwischen den beiden Endpunkten angeordnet ist). Eine Timeout-Bedingung kann während des Senderdetektionszustands beobachtet werden, wenn keine Übertragungen von einer anderen Vorrichtung empfangen werden. Dies wäre zu erwarten, wenn lediglich ein Repeater auf der Vorrichtung verbunden wäre, da er nicht die Signale generieren würde (z.B. ein Aufwachdetektionsmuster), die im Senderdetektionszustand erwartet werden. Nach einer Zeitdauer, in der kein Detektionsmuster im Senderdetektionszustand empfangen wird, kann der Agent in den Beacon-Zustand (L1b) übergehen, in dem alles für diese Verbindung außer der Aufwachdetektionsschaltung (z.B. auf einer oder mehreren Spuren) abgeschaltet wird. Der Agent kann sich vorübergehend im L1b-Zustand befinden und dann erneut in den Senderdetektionszustand eintreten, um zu bestimmen, ob ein anderer kompatibler (z.B. UPIkompatibler) Endpunkt auf der Verbindungsstrecke vorhanden ist. Der Agent kann weiterhin zwischen den Senderdetektions- und dem Llb-Zustand schalten, bis ein erwartetes Sendersignal empfangen wird, um die Anwesenheit eines Senders eines entfernten Agenten zu identifizieren, wodurch bewirkt wird, dass der Agent den Senderdetektionszustand (z.B. in einen Abrufzustand) verlässt, wie vorstehend beschrieben.
  • Abrufzustand: Empfänger passt sich an, initialisiert den Driftpuffer und nimmt eine Sperre von Bits/Bytes (z.B. identifiziert Symbolgrenzen) vor. Spuren können entzerrt sein. Ein entfernter Agent kann als Antwort auf eine Bestätigungsmeldung einen Ausgang in einen nächsten Zustand (z.B. einen Verbindungsstreckenbreitenzustand, Link Width State) bewirken. Abrufen kann zusätzlich eine Trainingssequenzsperre durch Verriegeln auf eine EOS und einen Trainingssequenz-Header umfassen. Eine Spur-zu-Spur-Verzerrung an einem entfernten Sender kann an einer ersten Länge für eine Spitzengeschwindigkeit und eine zweiten Länge für eine niedrige Geschwindigkeit gekappt sein. Entzerrung kann in einem langsamen Modus sowie einem Betriebsmodus ausgeführt werden. Der Empfänger kann ein spezifisches Maximum aufweisen, um Spur-zu-Spur-Verzerrung zu entzerren, wie z.B. 8, 16 oder 32 Verzerrungsintervalle. Empfängeraktionen können Latenzfestlegung umfassen. Empfängeraktionen können in einer Ausführungsform nach einem erfolgreichen Entzerren einer gültigen Spurabbildung fertiggestellt werden. Ein erfolgreicher Handshake kann in einem Beispiel erzielt werden, wenn eine Anzahl von aufeinanderfolgenden Trainingssequenz-Headers mit Bestätigungen empfangen wird und eine Anzahl von Trainingssequenzen mit einer Bestätigung gesendet wird, nachdem ein Empfänger seine Aktionen fertiggestellt hat.
  • Verbindungsstreckenbreitenzustand: Agent kommuniziert mit der endgültigen Spurabbildung an den entfernten Sender. Empfänger empfängt die Informationen und decodiert. Empfänger kann eine konfigurierte Spurabbildung in eine Struktur nach einem Kontrollpunkt eines vorhergehenden Spurabbildungswerts in einer zweiten Struktur aufzeichnen. Empfänger kann auch mit einer Bestätigung (acknowledgment, „ACK“) antworten. Kann eine In-Band-Rücksetzung initiieren. Als ein Beispiel einen ersten Zustand, um In-Band-Rücksetzung zu initiieren. In einer Ausführungsform wird als Antwort auf die ACK ein Austritt in einen nächsten Zustand, wie z.B. einen Flit-Konfigurationszustand, ausgeführt. Ferner kann vor dem Eintreten in einen Niedrigleistungszustand auch ein Rücksetzsignal generiert werden, wenn die Frequenz einer Aufwachdetektionssignalerscheinung unter einen spezifizierten Wert (z.B. 1 pro jede Anzahl von Einheitsintervallen (UIs), wie z.B. 4KUI) fällt. Empfänger kann aktuelle und vorhergehende Spurabbildungen halten. Sender kann unterschiedliche Gruppen von Spuren auf der Grundlage von Trainingssequenzen, die unterschiedliche Werte aufweisen, verwenden. Spurabbildung modifiziert in einigen Ausführungsformen einige Statusregister möglicherweise nicht.
  • Flit-Sperrkonfigurationszustand: wird durch einen Sender eingetreten, aber der Zustand wird als verlassen betrachtet (d.h. sekundäre Timeout-Streitigkeit), wenn sowohl der Sender als auch der Empfänger in einen Sperrverbindungsstreckenzustand oder einen anderen Verbindungsstreckenzustand ausgetreten sind. Senderaustritt in einen Verbindungsstreckenzustand umfasst in einer Ausführungsform einen Start einer Datensequenz (SDS) und eine Trainingssequenzgrenze (TS-Grenze) nach einem Empfangen eines planetaren Ausrichtungssignals. Hierbei kann der Empfängeraustritt auf dem Empfangen einer SDS von einem entfernten Sender basieren. Dieser Zustand kann eine Brücke vom Agenten zum Verbindungsstreckenzustand sein. Der Empfänger identifiziert SDS. Empfänger kann in den Sperrverbindungsstreckenzustand (BLS) (oder ein Steuerfenster) austreten, falls SDS empfangen wird, nachdem eine Entwürfelungseinheit (Descrambler) initialisiert wird. Falls ein Timeout auftritt, kann der Austritt in einen Rücksetzzustand stattfinden. Sender treibt Spuren mit einem Konfigurationssignal. Senderaustritt kann in einen Rücksetzzustand, BLS-Zustand, oder andere Zustände basierend auf Bedingungen oder Timeouts stattfinden.
  • Konformitätszustand: wird aus dem Senderkalibrierungszustand eingetreten. Eine Vorrichtung (die als Master fungiert) kann ein Konformitätsmuster an eine andere Vorrichtung (Slave) senden, und der Slave kann das Muster zurückschleifen, nachdem er es auf seinen lokalen Takt zeitlich neu eingestellt hat. Kann verwendet werden, um den Betrieb des analogen Frontend auf einer Untermenge von Spuren zu charakterisieren, wenn Zurückschleifen (Loopback) nicht funktioniert. Konformitätszustand kann zur Untersuchung von Jitter oder Rauschen, Fehlerbeseitigung, Untersuchen einer Verbindungsstrecke usw. verwendet werden. Der Konformitätszustand kann eine Supersequenz mit einem Sender von dem Master treiben. Der Empfänger sucht auf einer Überwachungsspur nach einem Aufwachen, entprellt das Aufwachen, lässt schlechte Spuren fallen, passt an, setzt Bitsperren usw. Der Slave-Sender kann das Konformitätsmuster treiben, bis seine Empfängeraktionen fertiggestellt sind. Dann wird Loopback zeitlich neu eingestellt und nicht entzerrt. Der Slave-Empfänger führt ähnliche Überwachungs- und Entprellungs- usw. -aktionen aus. Der Austritt kann, neben anderen Beispielen, in einen Rücksetzzustand stattfinden, wie z.B. einen zeitgesteuerten Rücksetz- oder in einen Loopback-Muster-Zustand, um den Test zu starten.
  • Agent-Loopback-Marker-Zustand: Loopback-Marker ist ein Agentenzustand, aber anders als bei anderen Agentenzuständen können Master- und Slave-Aktionen und - austritte verschieden sein. Loopback-Slave kann jede Polaritätsinversion und/oder Spurumkehrung rückgängig machen, kann jedoch nicht zurückgeschleifte Bits entwürfeln oder neu verwürfeln. Bestätigungsaustauch trifft möglicherweise nicht für Slave zu, da er zurückschleift. Da der Slave vor dem Zurückschleifen auf die Symbolgrenze entzerren kann, wird der Master möglicherweise nicht gezwungen, erneut Bytesperre oder erneut Entzerrung durchzuführen, sondern der Master kann die Trainingssequenz erneut sperren, um Sperren auf ein Alias zu vermeiden. Mittel dafür können erneutes Seeden von LFSR, Vergleichen von TS und/oder EIEOS oder eine Kombination davon sein. Das Ende des SDS markiert das Ende der Loopback-Einstellung und den Start von Mustergenerierung, Überprüfen und Zählen.
  • Agent-Loopback-Muster-Zustand (oder Sperrverbindungszustand): In diesem Zustand kann ein Master-Sender, anstelle von Steuermustern, ein Testmuster (wie z.B. IBIST-Muster, Interconnect Built-In Self-Test) senden, und sein Empfänger kann in empfangenen Mustern auf Fehler überprüfen. Zur Senderanpassung können beide Agenten Master sein. Für eine vorbestimmte Zeitspanne kann der Sender ein Muster senden, und ein entfernter Empfänger kann dieses Muster vergleichen und eine Gütezahl oder Metrik für das empfangene Muster bestimmen, die in einem Speicherelement, wie z.B. einem Register, aufgezeichnet wird. Das Vergleichsverfahren und die Metrik können entwurfsabhängig sein (z.B. BER mit Jitter-Injektion). Am Ende der Zeitspanne können beide Agenten in ein Rücksetzen austreten, damit der Rückkanal die Metrik untersucht und die nächste Iteration der Senderanpassung aufstellt.
  • Sendeverbindungsstreckenzustand: Ein Verbindungsstreckenzustand. Flits werden an einen entfernten Agenten gesendet. Kann von einem Sperrverbindungszustand eingetreten werden und bei einem Ereignis, wie z.B. einem Timeout, in einen Sperrverbindungszustand zurückkehren. Sender sendet Flits. Empfänger empfängt Flits. Kann auch in einen Niedrigleistungsverbindungszustand austreten. In einigen Implementierungen kann der Sendeverbindungszustand (TLS) als der L0-Zustand bezeichnet werden.
  • Sperrverbindungsstreckenzustand: ein Verbindungsstreckenzustand. Sender und Empfänger arbeiten auf eine vereinheitlichte Weise. Kann ein zeitgesteuerter Zustand sein, während dessen die Verbindungsschicht-Flits zurückgehalten werden, während die Bitübertragungsschicht-Informationen an den entfernten Agenten kommuniziert werden. Kann in einen Niedrigleistungsverbindungsstreckenzustand (oder, basierend auf dem Entwurf, einen anderen Verbindungsstreckenzustand) austreten. Ein Sperrverbindungsstreckenzustand (BLS) tritt in einer Ausführungsform periodisch auf. Die Periode wird als ein BLS-Intervall bezeichnet und kann zeitgesteuert sein und kann ebenfalls zwischen niedriger Geschwindigkeit und Betriebsgeschwindigkeit verschieden sein. Es ist zu beachten, dass die Verbindungsschicht periodisch für Senden von Flits gesperrt werden kann, so dass eine Bitübertragungsschichtsteuersequenz einer Länge gesendet werden kann, wie z.B. während eines Sendeverbindungsstreckenzustands oder eines Sendeverbindungsstreckenzustands mit partieller Breite. In einigen Implementierungen kann der Sperrverbindungsstreckenzustand (BLS) als L0-Steuerzustand oder L0c-Zustand bezeichnet sein.
  • Sendeverbindungsstreckenzustand mit partieller Breite: Verbindungsstreckenzustand. Kann Energie durch Eintreten in einen Zustand mit partieller Breite sparen, bei dem eine oder mehrere verfügbare Spuren einer Verbindungsstrecke während des Sendeverbindungsstreckenzustands mit partieller Breite ungenutzt gemacht werden. In einer Ausführungsform bezieht sich asymmetrische partielle Breite auf jede Richtung einer Zweirichtungsverbindungsstrecke, die unterschiedliche Breiten aufweist, was in einigen Entwürfen unterstützt werden kann. Es ist zu beachten, dass Geschwindigkeiten nicht geändert werden können, aber Breiten dies können. Daher werden Flits potentiell bei unterschiedlichen Breiten gesendet. Kann logisch einem Sendeverbindungsstreckenzustand ähnlich sein; jedoch kann es länger dauern, Flits zu senden, da eine kleinere Breite vorhanden ist. Kann in andere Verbindungsstreckenzustände austreten, wie z.B. einen Niedrigleistungsverbindungsstreckenzustand auf der Grundlage bestimmter empfangener und gesendeter Meldungen, oder einem Austritt aus dem Sendeverbindungsstreckenzustand mit partieller Breite oder einem Verbindungsstreckensperrzustand basierend auf anderen Ereignissen. In einer Ausführungsform kann ein Senderanschluss freie Spuren auf gestaffelte Weise abschalten, um bessere Signalintegrität (d.h. Rauschunterdrückung) zur Verfügung zu stellen, wie im Zeitdiagramm gezeigt. Hierbei können Flits, die nicht zu einem erneuten Versuch fähig sind, wie z.B. Null-Flits, während Perioden, in denen sich die Verbindungsstreckenbreite ändert, benutzt werden. Ein entsprechender Empfänger kann diese Null-Flits fallenlassen und freie Spuren auf gestaffelte Weise abschalten sowie die aktuellen und vorhergehenden Spurabbildungen in einer oder mehreren Strukturen aufzeichnen. Benachrichtigungsstatus und assoziierte Statusregister können unverändert bleiben. In einigen Implementierungen kann der Sendeverbindungsstreckenzustand mit partieller Breite als ein partieller LO-Zustand, oder L0p-Zustand, bezeichnet werden.
  • Austreten aus dem Sendeverbindungsstreckenzustand mit partieller Breite: Austreten aus dem Zustand mit partieller Breite. Kann in einigen Implementierungen einen Sperrverbindungsstreckenzustand verwenden, muss aber nicht. Der Sender initiiert in einer Ausführungsform den Austritt durch Senden von Austrittsmustern bei partieller Breite auf den freien Spuren, um sie zu trainieren und zu entzerren. Als ein Beispiel startet ein Austrittsmuster mit EIEOS, die detektiert und entprellt wird, um zu signalisieren, dass die Spur bereit ist, den Eintritt in einen vollständigen Sendeverbindungsstreckenzustand zu starten, und kann mit SDS oder schneller Trainingssequenz (FTS) auf freien Spuren enden. Jeder Fehler während der Austrittssequenz (Empfängeraktionen, wie z.B. Entzerren nicht fertiggestellt vor Timeout) hält Flit-Übertragungen an die Verbindungsschicht an und aktiviert ein Rücksetzen, das durch Rücksetzen der Verbindungsstrecke beim nächsten Auftreten des Sperrverbindungsstreckenzustands gehandhabt wird. Der SDS kann auch die Verwürfelungseinheit/Entwürfelungseinheit auf den Spuren auf geeignete Werte initialisieren.
  • Niedrigleistungsverbindungsstreckenzustand: ist ein Niedrigleistungszustand. In einer Ausführungsform weist er eine niedrigere Leistung auf als der Verbindungsstreckenzustand mit partieller Breite, da in dieser Ausführungsform eine Signalisierung auf allen Spuren und in beiden Richtungen angehalten ist. Sender können einen Sperrverbindungsstreckenzustand zum Anfordern eines Niedrigleistungsverbindungsstreckenzustands verwenden. Hierbei kann der Empfänger die Anforderung decodieren und mit einer ACK oder einer NAK antworten; andernfalls kann ein Rücksetzen ausgelöst werden. In einigen Implementierungen kann der Niedrigleistungsverbindungsstreckenzustand als L1-Zustand bezeichnet sein.
  • In einigen Implementierungen von UPI können Supersequenzen definiert werden, wobei jede Supersequenz einem jeweiligen Zustand oder einem Eintritt in/Austritt aus dem jeweiligen Zustand entspricht. Eine Supersequenz kann eine sich wiederholende Sequenz von Datensätzen und Symbolen umfassen. Die Sequenzen können sich in manchen Fällen, neben anderen Beispielen, bis einer Fertigstellung eines Zustands oder eines Zustandsübergangs, oder einer Kommunikation eines entsprechenden Ereignisses wiederholen. In manchen Fällen kann die sich wiederholende Sequenz einer Supersequenz gemäß einer definierten Frequenz, wie z.B. einer definierten Anzahl von Einheitsintervallen (UIs) wiederholen. Ein Einheitsintervall (UI) kann dem Zeitintervall für ein Senden eines einzelnen Bit auf einer Spur einer Verbindungsstrecke oder eines Systems entsprechen. In 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 Frequenz wiederholt. Solche geordneten Mengen können als definierte 16-Byte-Codes implementiert werden, die, neben anderen Beispielen, in einem hexadezimalen Format repräsentiert werden können. In einem Beispiel kann die EOS einer Supersequenz eine EIEOS sein. Eine EIEOS kann einem Niedrigfrequenztaktsignal ähneln. In einer Implementierung kann eine EIEOS in einem von zwei Modi implementiert werden. In einem ersten Modus kann ein traditionelles EIEOS-Muster verwendet werden, wie z.B. in 8A repräsentiert. Zum Beispiel kann ein traditionelles EIEOS-Muster eine sich wiederholende Sequenz von FF00 hexadezimalen Symbolen sein. Ein zweiter Modus kann ein EIEOS-Muster bereitstellen, das an höhere Geschwindigkeiten angepasst ist. In einem Beispiel kann das EIEOS-Muster in einem zweiten Modus als eine sich wiederholende Sequenz von FFFF0000 hexadezimalen Symbolen implementiert werden, wie in 8B dargestellt. Eine vordefinierte Menge an Daten kann der EOS folgen, wie z.B. eine vordefinierte Anzahl an Trainingssequenzen oder anderen Daten. Solche Supersequenzen können in Zustandsübergängen verwendet werden, die neben anderen Beispielen Verbindungsstreckenzustandsübergänge sowie eine Initialisierung umfassen.
  • In einigen Implementierungen einer Verbindung, können Beendigungen einer seriellen Datenverbindungsstrecke ein- und ausgeschaltet werden, z.B. wenn eine Verbindungsstrecke zurückgesetzt oder initialisiert wird. Dieser Ansatz kann eine Komplexität und Zeit in die Initialisierung einer Verbindungsstrecke einführen. In einigen Implementierungen der UPI können Beendigungen der Verbindungsstrecke aufrechterhalten werden, einschließlich bei einem Rücksetzen oder einer erneuten Initialisierung der Verbindungsstrecke. Außerdem kann die UPI ein Hot-Plugging von Vorrichtungen erlauben. Wenn eine andere Vorrichtung eingeführt wird, entweder durch Hot-Plugging oder auf eine andere Weise, ändern sich die Spannungscharakteristiken der Spur, auf der der neue entfernte Agent hinzugefügt wird. Der lokale Agent kann diese Änderungen (z.B. Pulldowns) in der Spurenspannung abtasten, um die Anwesenheit des entfernten Agenten zu detektieren und eine Initialisierung der Verbindungsstrecke zu veranlassen. Zustände und Zeitgeber des Zustandsautomaten können im Zustandsautomaten definiert werden, um die Detektion, Konfiguration und Initialisierung einer Verbindungsstrecke ohne Abbrüche zu koordinieren.
  • Als ein Beispiel kann ein Sender einer Vorrichtung während eines Empfängerdetektionszustands („RxDetect“) Spuren einer Verbindungsstrecke auf die Anwesenheit eines Abbruchs eines entfernten Empfängers überwachen, was die Anwesenheit einer entfernten Vorrichtung auf dem anderen Ende der Verbindungsstrecke anzeigt. Ein Abbruch eines entfernten Empfängers kann eine Pulldown-Spannung auf der Verbindungsstrecke generieren. Dies kann als eine Art von Handshake dienen, wobei der Empfängerabbruch einen Austritt in den nächsten Zustand (z.B. einen Senderkalibrierungszustand) veranlasst. Wenn der Handshake nicht innerhalb einer vordefinierten Zeit auftritt, kann die Überwachungsvorrichtung die Initialisierung abbrechen, wodurch ein Übergang zurück in einen Rücksetzzustand veranlasst wird, bevor der RxDetect-Zustand erneut eingetreten wird, um wieder zu versuchen, eine Einführung einer entfernten Vorrichtung auf der Verbindungsstrecke zu identifizieren (z.B., neben anderen Beispielen, in Verbindung mit einem Hot-Plug-Ereignis oder einem gesteuerten Aufbringen der Verbindungsstrecke, das durch eine Software initiiert wird). Während eines RxDetect sollen Empfängerabbrüche (Pulldowns) auf allen guten Spuren eingeführt werden. Jegliche schlechte Spuren können vor dem Verlassen des Zustands und Übergehen in einen anderen fallengelassen werden, wobei eine Detektionssupersequenz zwischen den Vorrichtungen auf der Verbindungsstrecke kommuniziert wird. Außerdem kann das durch den Empfängerabbruch generierte Signal dahingehend entprellt werden, als die Spuren auf eine dauerhafte Aktivierung des Signals geprüft werden. In einem Beispiel kann ein Entprellen für eine Dauer auftreten, die der vordefinierten Zeit zum Überwachen der Verbindungsstrecke während des RxDetect-Zustands entspricht, und kann, neben anderen Beispielen, ein Vielfaches der vordefinierten Zeit sein.
  • In einer Implementierung kann die UPI eine erneute Initialisierung bei einem In-Band-Rücksetzen ohne eine Änderung der Abbruchwerte durch die Durchsuchung einer Spur durch den Empfangsagenten nach einer eingehenden Signalisierung unterstützen. Die Signalisierung kann zum Identifizieren von guten Spuren verwendet werden. Als ein Beispiel kann die Spur auf ein beliebiges von einer Menge von vordefinierten Signalen durchsucht werden, die durch eine Sendervorrichtung zu senden sind, um eine Entdeckung und Konfiguration der Verbindungsstrecke zu erleichtern. In einem Beispiel kann eine Supersequenz definiert werden, die einer oder mehreren Aufgaben der Initialisierung oder einer erneuten Initialisierung entspricht. Die vordefinierte Sequenz kann eine EIEOS umfassen, auf die zusätzliche Sequenzdaten folgen. In manchen Fällen können, wenn jede Vorrichtung auf jeder Seite einer Spur aktiv wird, die Vorrichtungen mit dem Senden einer Supersequenz beginnen, die einem bestimmten Initialisierungszustand usw. entspricht. In manchen Fällen können zwei Typen von Stiftzurücksetzen unterstützt werden, Einschalt-Rücksetzen (oder kalt, „cold“) und warmes Rücksetzen. Ein Rücksetzen, das durch eine Software initiiert wird oder seinen Ursprung (in der Bitübertragungs- oder einer anderen Schicht) auf einem Agenten nimmt, kann an den anderen Agenten in-Band kommuniziert werden. Aufgrund der Verwendung eines eingebetteten Taktgebers kann jedoch ein In-Band-Rücksetzen durch Kommunikation an einen anderen Agenten unter Verwendung einer geordneten Menge, wie z.B. einer spezifischen elektrischen geordneten Menge oder EIOS, gehandhabt werden.
  • Die geordnete Menge kann während einer Initialisierung gesendet werden und eine PHY-Steuersequenz (oder ein „Sperrverbindungsstreckenzustand“) kann nach der Initialisierung gesendet werden. Der Sperrverbindungsstreckenzustand kann die Verbindungsschicht sperren, so dass sie keine Flits sendet, um periodische Fenster zu erzeugen, in denen Bitübertragungsschicht-Steuerdaten kommuniziert werden können. Als ein anderes Beispiel kann der Verbindungsschichtverkehr blockiert werden, um einige NULL-Flits zu senden, die am Empfänger verworfen werden können. In einem Beispiel kann eine Verbindungsschicht-Sperrsteuersequenz (d.h. ein Sperrverbindungsstreckenzustand (BLS) oder ein L0c-Zustand) einen zeitgesteuerten Zustand umfassen, während dessen die Verbindungsschicht-Flits zurückgehalten werden, während die PHY-Information an den entfernten Agenten kommuniziert wird. Hierbei können der Sender und der Empfänger einen Sperrsteuerungssequenz-Timer starten. Und beim Ablauf der Timer können der Sender und der Empfänger den Sperrzustand verlassen und können andere Aktionen vornehmen, wie z.B. einen Austritt in ein Rücksetzen, einen Austritt in einen anderen Verbindungsstreckenzustand (oder einen anderen Zustand), einschließlich von Zuständen, die das Senden von Flits über die Verbindungsstrecke erlauben.
  • In einer Ausführungsform kann ein Verbindungsstreckentraining bereitgestellt werden und das Senden einer oder mehrerer verwürfelten Trainingssequenzen, geordneten Mengen und Steuersequenzen, wie z.B. in Verbindungen mit einer definierten Supersequenz, umfassen. Ein Trainingssequenzsymbol kann eines oder mehrere von einem Header, reservierten Abschnitten, einer Ziel-Latenz, einer Paarnummer, physischen Spurabbildungscodereferenzzspuren oder einer Gruppe von Spuren und einem Initialisierungszustand umfassen. In einer Ausführungsform kann der Header, neben anderen Beispielen, mit einer Bestätigung (ACK) oder einer negativen Bestätigung (NAK) gesendet werden. Als ein Beispiel können Trainingssequenzen als Teil von Supersequenzen gesendet werden und können verwürfelt werden.
  • In einer Ausführungsform werden geordnete Mengen und Steuersequenzen nicht verwürfelt oder gestaffelt und werden identisch, gleichzeitig und vollständig auf allen Spuren gesendet. Ein gültiger Empfang einer geordneten Menge kann ein Überprüfen von zumindest einem Abschnitt der geordneten (oder der gesamten geordneten Menge auf geordnete Teilmengen) umfassen. Geordnete Mengen können eine elektrisch geordnete Menge (EOS), wie z.B. eine EIOS (Electrical Idle Ordered Set) oder eine EIEOS umfassen. Eine Supersequenz kann einen Beginn einer Datensequenz (SDS) oder eine schnelle Training-Sequenz (Fast Training Sequence, FTS) umfassen. Solche Mengen und Steuersupersequenzen können vordefiniert sein und können ein beliebiges Muster oder eine hexadezimale Repräsentation, sowie eine beliebige Länge, aufweisen. Zum Beispiel können geordnete Mengen und Supersequenzen eine Länge von 8 Bytes, 16 Bytes oder 32 usw. aufweisen. FTS kann als ein Beispiel zusätzlich für schnelle Bitsperre während des Austritts aus einem Sendeverbindungszustand mit partieller Breite benutzt werden. Es ist zu beachten, dass die FTS-Definition per Spur sein kann und eine rotierte Version der FTS benutzen kann.
  • Supersequenzen können in einer Ausführungsform das Einfügen einer EOS, wie z.B. einer EIEOS, in einen Trainingssequenzstrom umfassen. Wenn die Signalisierung beginnt, schalten sich in einer Implementierung Spuren auf gestaffelte Weise an. Dies kann jedoch dazu führen, dass anfängliche Supersequenzen an dem Empfänger auf einigen Spuren abgeschnitten gesehen werden können. Supersequenzen können jedoch über kurze Intervalle (z.B. ungefähr eintausend Einheitsintervalle (oder -1KUI)) wiederholt werden. Die Trainingssupersequenzen können zusätzlich für eines oder mehrere von Entzerren, Konfiguration und zum Kommunizieren von Initialisierungsziel, Spurabbildung, usw. verwendet werden. Die EIEOS kann, neben anderen Beispielen, für eines oder mehrere von dem Übergang einer Spur von einem inaktiven in einen aktiven Zustand, Durchsuchen nach guten Spuren, Identifizieren von Symbol- und TS-Grenzen verwendet werden.
  • Unter Bezugnahme auf 9 sind Repräsentationen von Beispielsupersequenzen gezeigt. Zum Beispiel kann ein Beispiel einer Detektionssupersequenz 905 definiert sein. Die Detektionssupersequenz 805 kann eine sich wiederholende Sequenz einer einzelnen EIEOS (oder einer anderen EOS), gefolgt von einer vordefinierten Anzahl von Instanzen einer bestimmten Trainingssequenz (TS) umfassen. In einem Beispiel kann die EIEOS gesendet werden, worauf unmittelbar sieben wiederholte Instanzen von TS folgen. Wenn die letzte der sieben TSs gesendet wurde, kann die EIEOS wieder gesendet werden, gefolgt von sieben zusätzlichen Instanzen von TS, und so weiter. Diese Sequenz kann gemäß einer bestimmten vordefinierten Frequenz wiederholt werden. Im Beispiel von 9 kann die EIEOS ungefähr einmal pro eintausend UIs (-1KUI) erneut auf den Spuren erscheinen, gefolgt von dem Rest der Detektionssupersequenz 905. Ein Empfänger kann Spuren auf die Anwesenheit einer sich wiederholenden Detektionssupersequenz 905 überwachen und kann nach dem Validieren der Supersequenz 905 darauf schließen, dass ein entfernter Agent anwesend ist, auf den Spuren hinzugefügt worden ist (z.B. hot plugged (im laufenden Betrieb eingebaut)), aufgewacht ist oder erneut initialisiert wurde usw. Die Detektionssupersequenz 905 kann zum Beispiel in einem Senderdetektionszustand verwendet werden, in dem Sender der Vorrichtungen, die auf einer Verbindungsstrecke verbunden sind, die Detektionssupersequenz 805 auf allen Spuren senden sollen, um für den entfernten Agenten zu identifizieren, dass der Sender anwesend ist.
  • In einem anderen Beispiel kann eine andere Supersequenz 910 definiert werden, um eine Abruf-, eine Konfigurations-, oder eine Loopback-Bedingung oder -Zustand anzuzeigen. Wie beim Beispiel der Detektionssupersequenz 905 können Spuren einer Verbindungsstrecke durch einen Empfänger auf eine solche Abruf-/Konfigurations-/Loop-Supersequenz 910 überwacht werden, um einen Abrufzustand, einen Konfigurationszustand oder einen Loopback-Zustand oder -Bedingung zu identifizieren. In einem Beispiel kann eine Abruf-/Konfigurations-/Loop-Supersequenz 910 mit einer EIEOS beginnen, gefolgt von einer vordefinierten Anzahl von wiederholten Instanzen einer TS. Zum Beispiel kann, neben anderen Beispielen, in einem Beispiel die EIEOS durch einunddreißig (31) Instanzen von TS gefolgt sein, wobei sich die EIEOS ungefähr alle viertausend UI (z.B. -4KUI) wiederholt.
  • Supersequenzen, wie z.B. die Detektionssupersequenz 905 und die Abruf-/Konfigurations-/Loop-Supersequenz 910 usw. können potentiell im Wesentlichen durchgehend während der Initialisierung oder erneuten Initialisierung einer Verbindungsstrecke gesendet werden. Ein Empfänger kann nach dem Empfangen und Detektieren einer bestimmten Supersequenz in einigen Instanzen durch identisches Wiedergeben derselben Supersequenz für den Sender über die Spuren antworten. Das Empfangen und die Validierung einer bestimmten Supersequenz durch Sender und Empfänger können als Handshake dienen, um einen Zustand oder eine Bedingung, die durch die Supersequenz kommuniziert wird, zu bestätigen. Zum Beispiel kann ein solcher Handshake (z.B. unter Verwendung einer Detektionssupersequenz 905) verwendet werden, die erneute Initialisierung einer Verbindungsstrecke zu identifizieren. In einem anderen Beispiel kann, neben anderen Beispielen, ein solcher Handshake benutzt werden, um das Ende eines elektrischen Rücksetz- oder Niedrigleistungszustands anzugeben, was dazu führt, dass entsprechende Spuren wieder hochgefahren werden. Das Ende des elektrischen Rücksetzens kann zum Beispiel aus einem Handshake zwischen Sender und Empfänger, von denen jeder eine Detektionssupersequenz 905 sendet, identifiziert werden.
  • In einem anderen Beispiel können Spuren auf Supersequenzen überwacht werden und verwenden die Supersequenzen in Verbindung mit dem Durchsuchen von Spuren nach, neben anderen Ereignissen, Detektions-,Aufwach-, Zustandsaustritten und Einträgen. Die vordefinierte und vorhersagbare Beschaffenheit und Form von Supersequenzen kann ferner verwendet werden, um solche Initialisierungsaufgaben, wie z.B. Bitsperre, Bytesperre, Entprellen, Entwürfeln, Entzerren, Anpassung, Latenzfestlegung, Verhandlungsverzögerungen und andere potentielle Verwendungen auszuführen. In der Tat können Spuren im Wesentlichen kontinuierlich auf solche Ereignisse überwacht werden, um die Fähigkeit des Systems zu beschleunigen, auf solche Bedingungen zu reagieren und sie zu verarbeiten. In manchen Fällen können Supersequenzen innerhalb von Steuerfenstern (z.B. L0c-Steuerfenstern) gesendet werden, um, neben anderen Beispielen, Verbindungsstreckenzustandsübergänge auszulösen.
  • Trainingssequenzen (TSs) können in manchen Fällen einen Header und verschiedene andere Felder (z.B. Nutzdaten) umfassen, die zum Kommunizieren von Informationen in Verbindung mit einer Initialisierung einer Verbindungsstrecke verwendet werden können. Zum Beispiel können in einem Beispiel Felder für Ziellatenz, Zustand, Spurpaarnummer, Spurabbildung, neben anderen Feldern, aufgenommen sein. In einigen Implementierungen können Abschnitte einer TS zum Beispiel durch eine binäre Zufalls- oder eine Pseudozufallsfolge verwürfelt werden In einem Beispiel kann der TS-Header als Klartext behalten werden, während der Rest (oder Nutzdaten) der TS zum Beispiel durch XORing derjenigen Abschnitte der TS mit einer PRBS verwürfelt werden kann, neben anderen Beispielen.
  • In einer Implementierung kann eine TS eine Länge von sechzehn (16) Bytes aufweisen und der TS-Header kann den ersten Byte (d.h. Byte 0) der TS belegen. Die TS-Nutzdaten können verwürfelt sein und die verbleibenden fünfzehn Bytes in Anspruch nehmen. In einer Beispielimplementierung kann ein TS-Schwanz oder -Tail die einigen letzten Bytes der TS umfassen. Zum Beispiel kann in einem Beispiel ein Verwürfelungssynchronisierungsfeld mindestens drei Bytes der TS, zum Beispiel Bytes 6 bis 8 der TS, belegen. Die Tailbits der TS (z.B. Bytes 9 bis 15) können in dieser bestimmten Implementierung als reservierte Bits aufrechterhalten werden. Bits in Bytes 6 bis 15 können alle auf 0 gesetzt werden.
  • In einigen Implementierungen kann die UPI ein Verwenden eines TS-Header unterstützen, kann anstelle von oder zusätzlich zu TS-Nutzdaten für Schlüsselinitialisierungsparameter verwendet werden. In einigen Implementierungen können TS-Nutzdaten verwendet werden, um Initialisierungsparameter, wie z.B. ACKs und Spurnummer, auszutauschen. Gleichstrompegel zum Kommunizieren von Spurpolarität können auch verwendet werden. Jedoch kann in einigen Implementierungen die UPI Gleichstrom-ausgeglichene Codes im TS-Header für Schlüsselparameter implementieren. Zum Beispiel können in Fällen, in denen ein TS-Header nicht verwürfelt ist, verfügbare TS-Headercodes derart definiert werden, dass die Anzahl von „1“-er im Wesentlichen der Anzahl von „0“-er gleicht, die in den TS-Headerfeldern erscheinen. Gleichstromausgleich kann durch den Rest der TS (z.B. die TS-Nutzdaten) umgesetzt werden, indem Bits der TS-Nutzdaten durch XORing der Bits gegen eine zufällige oder pseudozufällige binäre Sequenz verwürfelt werden.
  • In einem Beispiel kann eine PRBS-Sequenz mit mindestens 23 Bits (PRB23) verwendet werden. Die PRBS kann gemäß einem bestimmten gewählten Polynom generiert werden. In einem Beispiel kann die PRBS durch ein selbstinitialisiertes (self-seeded) Speicherelement ähnlicher Bitgröße generiert werden, wie z.B. ein linear rückgekoppeltes Schieberegister (LFSR). 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 dem Ende der Sequenz folgend wiederholen. In einigen Implementierungen kann die Gesamtheit der PRBS23-Sequenz zum Verwürfeln der Trainingssequenzen, die in den verwendeten Supersequenzen aufgenommen sind, verwendet werden, zum Beispiel bei der Initialisierung der Verbindungsstrecke in der UPI. In einigen Implementierungen kann ein jeweiliges LFSR für jede Spur einer Verbindungsstrecke bereitgestellt sein, wobei jedes LFSR einen eindeutigen Anfangswert (Seed) empfängt, um PRBS-Muster zu generieren, die zwischen benachbarten Spuren variieren (und in manchen Fällen orthogonal sind).
  • Während die vollständige Länge einer PRBS-Sequenz verwendet werden kann, kann in einigen Implementierungen die UPI das Ermöglichen der Verwendung variabler Längen der verfügbaren PRBS-Sequenz unterstützen (z.B. die Verwendung von lediglich einem Abschnitt der PRBS23-Sequenz). In einigen Beispielen kann eine Steuerung einer Vorrichtung spezifizieren, dass lediglich ein Abschnitt der vollständigen Länge einer PRBS-Sequenz benutzt wird. Das kann zum Beispiel zum Testen von Anwendungen wünschenswert sein, wenn Wiederholbarkeit von Bitsequenzen erwünscht ist, neben potentiell anderen Anwendungen. Eine softwarebasierte Steuerung kann variable Längen der PRBS, die angewendet werden sollen, spezifizieren. Zum Beispiel kann das BIOS einer Vorrichtung die PRBS-Länge, die auf der Verbindungsstrecke angewendet werden soll, spezifizieren. In einigen Implementierungen kann das Verwenden der vollständigen Länge der PRBS-Sequenz die Standardeinstellung sein, zum Beispiel um den Nutzen der langen PRBS-Sequenz zu maximieren.
  • Spurverkehr in einem Sendeverbindungsstreckenzustand (TLS) und Trainingssequenzen kann mit einer PRBS einer speziellen Minimallänge (z.B. 23 Bits) verwürfelt werden. Der Startwert (seed), der auf einen Strom angewendet wird, kann zwischen den Spuren variiert werden, um den elektrischen Gewinn der PRBS auf der Verbindungsstrecke zu verbessern. In einer Beispielimplementierung kann die PRBS durch ein 23-Bit-Fibonacci-LFSR erzeugt werden, das ein 6-Abgriff-Erzeugungspolynom implementiert, wie z.B. (x23 + X21 + X16 + X8 + X5 + X2 + 1).
  • Die Startwerte (bei der Verwürfelungseinheit-/ Entwürfelungseinheit-Initialisierung) für die Spurnummer Modulo 8 können ein beliebiger Wert sein, beispielsweise 8 hexadezimale Werte, wobei jeder mit 2 oder 3 der Spuren in einer Verbindungsstrecke assoziiert ist. Die Verwendung solcher Startwerte kann zu einer Rotation (oder Staffelung) der PRBS zwischen den Spuren führen. Die Anzahl der LFSRs kann reduziert werden, indem die Eigenschaft verwendet wird, dass die PRBS geradzahliger Spuren von einem XOR der PRBS ungeradzahliger Spuren abgeleitet werden kann. Die EIEOS und der Header der Trainingssequenzen werden möglicherweise nicht verwürfelt. Der Eintrittspunkt einer Supersequenz auf jeder Spur kann an einem anderen Punkt auf jeder Spur initiiert werden (z.B. wo der Sender das Treiben beginnt). Dies kann es ermöglichen, dass die Spuren gestaffelt eingeschaltet werden, um das Rauschen im Energieversorgungssystem zu reduzieren. In der Tat kann jede Spur ihre eigene Instanz eines LFSR aufweisen. Die Staffelungszeiten können je nach der Anzahl der Spuren, die eingeschaltet werden, variieren und können während der Initialisierung von der Implementierung abhängen. Diese können in den Zeitdiagrammen und Zeitgeberprofilen für den Austritt aus dem Sendezustand mit partieller Breite angegeben werden. Außerdem können schnelle Trainingssequenzen (FTS) (ebenfalls nachstehend besprochen) je nach Spur rotiert sein.
  • In manchen Fällen kann ein Verwürfeln ein Energiezufuhrrauschen beim Sender reduzieren und ein reicheres Frequenzspektrum am Empfänger bereitstellen. Die Verwürfelungseinheit (Scrambler) kann durch die erste gesendete EIEOS initialisiert werden. Die Entwürfelungseinheit (Descrambler) kann zum Beispiel durch Selbstinitialisierung (Self-Seeding) mit der Verwürfelungseinheit synchronisiert werden. Zum Beispiel kann das empfangene 23-Bit-Muster in einem Feld der TS als ein Startwert eingebettet sein. In einem Beispiel kann der 23-Bit-Startwert aus dem Verwürfeln der Bits des Verwürfelungssynchronisationsfeldes identifiziert werden. Der Empfänger kann den Startwert verwenden, um den spezifischen Ort der PRBS zu identifizieren, der zum Verwürfeln der empfangenen TS verwendet wird. Zum Beispiel kann ein Empfänger den Startwert identifizieren und den Startwert in sein eigenes LFSR laden, um sich mit dem vom Sender verwendeten PRBS zu synchronisieren. In einigen Fällen kann ein Empfänger mehrere Verwürfelungssynchronisationsfelder oder mehrere TSs in einer Supersequenz lesen, um sein eigenes LFSR zu initialisieren. Beim Detektieren und Synchronisieren mit dem PRBS des Senders kann ein Empfänger jedoch unter anderem den Rest der TSs sowie alle nachfolgenden TS, die während der Initialisierung der Verbindungsstrecke in Supersequenzen gesendet werden, entwürfeln.
  • Supersequenzen können verwendet werden, um eine Bitsperre und Synchronisierung auf einer Spur zu erleichtern. Wie vorstehend besprochen, kann zumindest ein Abschnitt der Supersequenzen verwürfelt werden. Um auf die Diskussion von 9 zurückzukommen, kann eine Detektionssupersequenz 905 durch einen Empfänger verwendet werden, um die Bit- und Byte-Flanken des empfangenen Bitstroms zu detektieren oder zu sperren und zu identifizieren, welche Bytes in der Supersequenz gesendet werden. Zum Beispiel können der EIEOS- und der TS-Header unverwürfelt belassen werden, um dem Empfänger dabei zu helfen, die Supersequenz schneller zu sperren. Außerdem kann die Supersequenz definiert werden, um es zu ermöglichen, dass sich die EIEOS (und der Beginn der Supersequenz) mit einer relativ kurzen Frequenz wiederholt (z.B. um dem Empfänger schneller eine weitere Chance zu geben, die EIEOS zu detektieren, falls die erste EIEOS nicht genau detektiert wurde). Zum Beispiel kann in einem Beispiel eine Supersequenz derart definiert werden, dass sie sich einmal pro 1KUI oder kürzer wiederholt. Solche Supersequenzen können außerdem während der Initialisierung randomisiertere Übergänge zulassen sowie die TS-Sperre, Latenzfixierung und andere Aktionen vereinfachen.
  • Wenn der EIEOS- und der TS-Header unverwürfelt belassen werden, kann dies außerdem ein Auftreten einer Byte-Sperre ermöglichen und den Empfänger in die Lage versetzen, die Position nachfolgender Bytes und Symbole (einschließlich verwürfelter TS-Symbole) zu identifizieren. Zum Beispiel kann der Rand des unverwürfelten TS-Headers identifiziert werden und dadurch auch der Beginn des Verwürfelungssynchronisationsfeldes. Beim Detektieren des PRBS-Startwerts (seed) in dem Verwürfelungssynchronisationsfeld kennt der Empfänger die folgenden PRBS-Musterwerte und ist auch in der Lage, die Werte nachfolgender Verwürfelungssynchronisationsfeldwerte vorherzusagen. Dementsprechend kann der Empfänger beim Verriegeln mit der PRBS die Verwürfelungssynchronisationsfeldwerte weiter nutzen, um andere Konfigurationsaufgaben, wie z.B. Anpassung, Entzerrung und andere Aufgaben, zu erleichtern.
  • Bei mehrspurigen Verbindungsstrecken können Symbole auf allen Spuren gleichzeitig durch einen Sender gesendet werden, jedoch kann die Verbindungsstrecke-zu-Verbindungsstrecke-Verzerrung dazu führen, dass einige Symbole nicht zur gleichen Zeit am Empfänger ankommen. Neben anderen Beispielen können Quellen für die Verzerrung können zum Beispiel Chip-Differentialtreiber und -empfänger, Impedanzschwankungen der gedruckten Leiterplatte, Fehlanpassungen der Spurdrahtlänge umfassen. In einer Ausführungsform stellt die UPI eine fortschrittliche Logik zum Entzerren von Spuren bereit. Als ein Beispiel kann die TS-Grenze nach der TS-Sperre zum Entzerren der Spuren verwendet werden. Zum Beispiel kann die TS-Sperre verwendet werden, um eine Verzerrung zu detektieren (z.B. dass eine TS auf einer Spur später als eine andere TS auf einer anderen der Spuren der Verbindungsstrecke ankommt). Eine EIEOS kann auch zum Detektieren einer Verzerrung verwendet werden. Unter Verwendung der Vorhersagbarkeit eines synchronisierten PRBS-Musters können außerdem einige Implementierungen der UPI durch Vergleich der Spur-PRBS-Muster im LFSR während bestimmter Punkte in den Nutzdaten eine Entzerrung vornehmen.
  • Im Fall einer Anpassung können elektrische Eigenschaften einer Spur zwischen einem Sender und einem Empfänger angepasst werden, zum Beispiel basierend auf Abtastdaten, die zwischen dem Sender und dem Empfänger übertragen werden. Beispielsweise kann die Empfängeranpassung vorsehen, dass der Sender ein Datenmuster an den Empfänger sendet, wobei die Logik am Empfänger elektrische Eigenschaften am Empfänger anpasst, um die Spur für die Verbindungsstrecke anzupassen. Die Senderanpassung kann beinhalten, dass der Sender Beispieldaten an den Empfänger sendet und der Empfänger eine Rückmeldung an den Sender sendet, die durch den Sender verwendet werden kann, um Einstellungen zur Anpassung der Spur am Sender vorzunehmen. Der Empfänger kann weiterhin Rückmeldungen an den Sender senden, basierend auf den am Sender vorgenommenen Einstellungen.
  • In einem Beispiel können Anpassungsabtastdaten durch verwürfelte TS-Daten verkörpert werden. Als ein Beispiel kann ein festes UI-Muster verwendet werden, um mit einem Bypass zu einem Anpassungszustand zu verwürfeln. Durch die Verwürfelung der TS mit PRBS23 kann die Empfängeranpassung ohne Bypass durchgeführt werden. Außerdem können ein Versatz und andere Fehler während der Taktwiederherstellung und -Abtastung reduziert werden. Die Zufälligkeit, die durch eine lange PRBS-Sequenz (z.B. PRBS23) bereitgestellt wird, kann sich als wirksamer Abtastwertestrom für die Anpassung erweisen. Ferner kann in einigen Implementierungen eine Spur so eingestellt werden, dass sie im langsamen Modus arbeitet, um die Logik beim Analysieren und Anpassen an Daten zu unterstützen, die auf der Spur empfangen werden. Nach der Genehmigung der Charakteristiken der Spur durch Anpassung können die angepassten Charakteristiken festgelegt und auf die Initialisierung der Verbindungsstrecke angewendet werden.
  • Nachdem die Verbindungsstrecke erfolgreich kalibriert und konfiguriert wurde, kann die Initialisierung enden und die Verbindungsstrecke kann in den Sendeverbindungsstreckenzustand (TLS) übergehen, in dem die Übertragung von Flits beginnt. In einigen Implementierungen der UPI können Übergänge in TLS auf der planetaren Ausrichtung am System basieren. Zum Beispiel kann ein Signal der planetaren Ausrichtung eine Gelegenheit zum Übergang in TLS anzeigen. Anstatt an einem Rand einer Supersequenz, EIEOS oder TLS, einen Übergang vorzunehmen, können einige Implementierungen der UPI ein Symbol des Beginns der Datensequenz (SDS) verwenden, das gemäß der planetaren Ausrichtung gesendet wird, um die Initialisierung und den Übergang in TLS zu beenden. In einem Beispiel kann eine SDS irgendwohin in einem Initialisierungsbitstrom gesendet werden. Dementsprechend kann ein Empfänger empfangene Bits nach dem SDS kontinuierlich scannen, um das Ende der Initialisierung gemäß einer planetaren Ausrichtung zu beschleunigen.
  • In einigen Beispielen können Agenten und Vorrichtungen bereitgestellt werden, um erweiterte Merkmale von UPI zu unterstützen. Zum Beispiel kann eine UPI-Verbindungsstrecke so konfiguriert sein, dass sie verbesserte Übertragungsgeschwindigkeiten unterstützt. In solchen Fällen (sowie auch bei herkömmlichen UPI-Geschwindigkeiten) kann ein verbesserter Modus bereitgestellt werden, in dem EIEOS-Muster mit niedrigerer Frequenz verwendet wird, wie es in Verbindung mit 8B gezeigt und beschrieben ist. Ein EIEOS-Muster mit niedrigerer Frequenz (das als sich wiederholendes FFFFOOOO-Signal verkörpert ist) kann Agenten dabei unterstützen, Synchronisations- und Aufwachmuster und Supersequenzen, die eine oder mehrere eingebettete EIEOSs umfassen oder darauf angewiesen sind, effizienter zu verarbeiten. Ein erweiterter Modus kann zusätzlich für größere Verbindungsstreckenbreiten sorgen, so dass n Spuren (wobei z.B. n > 30) unterstützt werden können. In beiden Fällen, in denen Systeme die verbesserte EIEOS mit niedrigerer Frequenz und vergrößerte Verbindungsstreckenbreiten unterstützen, kann eine Logik bereitgestellt werden (z.B. in einem entsprechenden Agenten, Vorrichtung oder Steuereinheit), so dass die Vorrichtung rückwärtskompatibel mit traditionellen oder anfänglichen UPI-Konfigurationen ist und diese auch unterstützt. Zum Beispiel kann ein Register bereitgestellt werden, durch welches Einstellungen einer bestimmten Vorrichtung festgelegt werden können, um anzuzeigen, ob die Vorrichtung ein niederfrequentes EIEOS-Muster (z.B. 0000FFFF) oder ein herkömmliches EIEOS-Muster (z.B. 00FF) in Kommunikationen auf der Verbindungsstrecke verwenden soll. Das gleiche oder ein anderes Register kann anzeigen, ob die Vorrichtung Verbindungsstrecken mit erweiterten Verbindungsbreiten (z.B. Verbindungstrecken mit mehr als 24 Spuren) oder herkömmliche UPI-Verbindungsstreckenbreiten (z.B. Verbindungsstrecken mit 20 Spuren) unterstützt. Um eine Rückwärtskompatibilität zwischen Verbindungsstrecken mit hinzugefügten Spuren und solchen mit einer herkömmlichen Anzahl von Spuren zu gewährleisten, kann die Hardware der Vorrichtung eine Rückwärtskompatibilität bereitstellen, indem sie zum Beispiel vorschreibt, dass hinzugefügte Spuren in der Mitte des Ports verbunden werden (d.h. anstelle vom Bereitstellen hinzugefügter Spuren auf einem der Enden des Ports).
  • In einigen Implementierungen können zusätzliche Verbesserungen bereitgestellt werden. In einem Beispiel kann, um Repeater-Vorrichtungen (die möglicherweise nicht nativ ein Spiegeln von Pulldown-Spannungen von einer Vorrichtung, die durch den Repeater mit dem anderen verbunden ist, (und umgekehrt) unterstützen) zu berücksichtigen, der Verbindungsstreckentrainingszustand-Zustandsautomat (LTSSM) der Verbindung (wie am Agenten durch entsprechende Zustandsautomatenlogik verwaltet) erweitert werden, um einen zusätzlichen Niedrigleistungszustand zu unterstützen, wie z.B. einen Beacon-(oder L1b)-Niedrigleistungszustand. Dies kann sicherstellen, dass Endpunktvorrichtungen während des Senderdetektionszustands entdeckt werden, indem Wiederholungsanläufe des Senderdetektionszustands eingefädelt werden, die durch intermittierende Übergänge in den L1b-Niedrigleistungszustand (z.B. um Energie zu sparen, während auf die Ankunft einer anderen Vorrichtung gewartet wird (z.B. durch Hot-Plugging oder aufgrund von Verzögerungen auf der entfernten Vorrichtung) auf einer Verbindungsstrecke, die eine Repeater-Vorrichtung aufweist, unterbrochen werden. Als ein anderes Beispiel kann die Verbindungsanpassung verbessert werden, indem, neben anderen Bespielen für Modifikationen und Verbesserungen, eine stufenweise serielle Anpassung beider Seiten einer Verbindungsstrecke vorgesehen wird (wobei z.B. eine erste Anpassungsstufe eine Vorrichtung als Master umfasst, und eine nachfolgende zweite Anpassungsstufe die andere Vorrichtung als Master umfasst).
  • Wie vorstehend erwähnt, kann eine Vorrichtung bereitgestellt werden, die alternativ in der Lage ist, zwei unterschiedliche Verbindungsbreiten zu unterstützen. In einem Beispiel kann ein erster Modus Verbindungstrecken mit 24 Spuren bereitstellen, während ein zweites Alternativmodell Verbindungsstrecken mit 20 Spuren bereitstellt. Eine solche Änderung kann auch die Art und Weise beeinflussen, in der verschiedene Verbindungsmerkmale bereitgestellt werden. Zum Beispiel kann, wie in 10A-10B dargestellt, eine herkömmliche UPI-Implementierung mit 20 Spuren ein Verschachteln oder „Swizzling“ (Verquirlen) von Bits über mehrere Halbbytes (Nibbles) vorsehen. Zum Beispiel zeigt 10A eine Repräsentation einer Übertragung von nacheinanderfolgenden Flits, die sich auf einer Anzahl von Spuren in einer traditionellen Konfiguration mit 20 Spuren (oder in Betriebsmodus) überlappen. Zum Beispiel zeigt 10A eine Repräsentation von fünf überlappenden 192-Bit-Flits, die über eine Verbindungsstrecke mit 20 Spuren gesendet werden (die Spuren sind durch die Spalten 0 bis 19 repräsentiert). Jede Zelle von 10A repräsentiert ein jeweiliges „Nibble“ oder Gruppierung von vier Bits (z.B. Bits 4n+3:4n), die in einem Flit aufgenommen sind, das in einer 4UI-Zeitspanne gesendet wird. Zum Beispiel kann ein 192-Bit-Flit in 48 Vier-Bit-Nibbles aufgeteilt werden. In einem Beispiel umfasst das Nibble 0 die Bits 0 bis 3, Nibble 1 umfasst Bits 4 bis 7 usw. Die Bits in den Nibbles können derart gesendet werden, dass sie überlappen oder verschachtelt (z.B. „verquirlt“ („swizzled“)) sind, so dass, neben anderen Überlegungen, Felder des Flits, die eine höhere Priorität aufweisen, früher vorgestellt werden, Fehlerdetektionseigenschaften (z.B. CRC) beibehalten sind. In der Tat kann ein Verquirlungsschema auch vorsehen, dass einige Nibbles (und ihre jeweiligen Bits) außerhalb der Reihenfolge gesendet werden. In einigen Implementierungen kann ein Verquirlungsschema von der Architektur der Verbindungsschicht und dem Format des Flit, das in der Verbindungsschicht verwendet wird, abhängen.
  • Die Bits (oder Nibbles) eines Flits mit einer Länge, die kein Vielfaches der aktiven Spuren ist, können verquirlt werden, wie z.B. gemäß dem Beispiel von 10A. Zum Beispiel können während der ersten 4UI die Nibbles 1, 3, 5, 7, 9, 12, 14, 17, 19, 22, 24, 27, 29, 32, 34, 37, 39, 42, 44 und 47 gesendet werden. Die Nibbles 0, 2, 4, 6, 8, 11, 13, 16,18, 21, 23, 26, 28, 31, 33, 36, 38, 41, 43 und 46 können während der nächsten 4UI gesendet werden. In UIs 8 bis 11 verbleiben lediglich acht Nibbles des ersten Flits. Diese letzten Nibbles (d.h., 10, 15, 20, 25, 30, 40, 45) des ersten Flits können gleichzeitig mit den ersten Nibbles (d.h., den Nibbles 2, 4, 7, 9, 12, 16, 20, 25, 30, 35, 40, 45) des zweiten Flits gesendet werden, so dass der erste und der zweite Flit überlappen oder verquirlt sind. Unter Verwendung einer solchen Technik können in dem vorliegenden Beispiel fünf vollständige Flits in 48UI gesendet werden, wobei jedes Flit über eine gebrochene 9,6 UI-Zeitdauer gesendet wird.
  • In manchen Fällen kann ein Verquirlen zu einem periodischen „Reinigen“ von Filtgrenzen führen. Zum Beispiel kann in dem traditionellen Beispiel von 10A die anfängliche 5-Flit-Grenze (die obere Linie des ersten Flits) auch als eine reine Flitgrenze bezeichnet werden, da alle Spuren übertragen, indem sie ein Nibble bei demselben Flit beginnen. Verbindungsschichtlogik des Agenten kann ausgelegt sein, um ein Verquirlen von Spuren zu identifizieren und das Flit aus den verquirlten Bits zu rekonstruieren. Außerdem kann Bitübertragungsschichtlogik eine Funktionalität zum Identifizieren aufnehmen, wann und wie ein Strom von Flitdaten auf der Grundlage von im Moment verwendeten Spuren verquirlt werden soll. Um sich dem Beispiel von 10B zuzuwenden, ist die Übertragung von drei Flits über eine verbesserte Verbindungsstrecke mit 24 Spuren dargestellt, wobei die in 10A verwendeten Konventionen entlehnt werden. Insbesondere kann jede Zelle von 10B ein jeweiliges Nibble repräsentieren, das in einem über eine 4UI-Zeitspanne gesendeten Flit aufgenommen ist (wobei das gleiche 192-Bit-Flit in 48 Vier-Bit-Nibbles geteilt ist, wie erneut in 10B dargestellt). Beim Verwenden der Verbindungsstrecke mit 24 Spuren kann die Logik, die zum Implementieren und Decodieren der Verquirlung von Bits zwischen mehreren Flits (wie in der traditionellen UPI-Implementierung) deaktiviert oder aufgehoben werden, da Flits, die über eine Beispielverbindungsstrecke mit 24 Spuren gesendet werden, mit reinen Flitgrenzen gesendet werden, wie in 10B dargestellt. In einer Vorrichtung, die eine Rückwärtskompatibilität unterstützt (um entweder im traditionellen oder verbesserten UPI-Betriebsmodus zu arbeiten), kann die zum Verquirlen verwendete Logik beibehalten werden.
  • Die UPI kann vorsehen, dass 16-Bit-Felder für zyklische Redundanzüberprüfung (CRC) in den über Spuren (z.B. 24 oder 20) einer Verbindungsstrecke gesendeten Flits aufgenommen werden und mit 16-Bit-CR-Codes bestückt werden, die gemäß einem bestimmten CRC-Polynom erzeugt werden. Zum Beispiel kann das CRC-Polynom derart gewählt werden, dass ein aus dem CRC erzeugtes CRC-Syndrom verwendet werden kann, um bestimmte Bitfehler zu identifizieren, die dann auf bestimmte Spuren einer Verbindungsstrecke abgebildet werden können. In einem Beispiel können Syndromeigenschaften einer 16-Bit-Polynomberechnung 0x1f053 verwendet werden, um schlechte Spuren zu identifizieren. Ein solches CRC-Polynom kann Fähigkeiten besitzen, mit denen alle 1, 2, 3-Bit-Fehler und fast alle 4-Bit-Fehler in einem Beispielflit identifiziert werden können. Ein empfangender Agent kann das Syndrom aus dem CRC-Code berechnen und die spezifischen Bits des Flits bestimmen, die durch einen beliebigen oder mehrere von den durch den CRC-Code kommunizierten Bitfehlern betroffen sind (z.B. durch Heranziehen einer Abbildung möglicher Syndromwerte auf Bitnummern (oder sogar aufeinanderfolgende Bitnummern für 2-Bit-Fehler usw.). Durch Identifizieren der spezifischen Bits in einem Flit, das Fehler aufweist (basierend auf dem Syndrom), können die spezifischen Spuren identifiziert werden, auf denen das Bit gesendet wurde. Bitfehler, die auf einer einzelnen Spur (oder Spuren) wiederholt auftreten, können dazu führen, dass Abhilfemaßnahmen zur Korrektur des Spurfehlers eingeleitet werden. Das Abbilden von Bitfehlern auf Spuren kann darauf basieren, welcher UPI-Modus für eine bestimmte Verbindung aktiviert ist. Wenn zum Beispiel ein Verbindungsstreckenmodus mit 24 Spuren aktiviert ist, kann eine Zuordnung von Bitzahlen zu Spuren (wie nachstehend in Tabelle 1 gezeigt) herangezogen werden, die für den 24-Spur-Verbindungsmodus spezifisch ist. Eine andere entsprechende Abbildung kann für andere Verbindungsbreitenmodi (z.B. eine 20-Spur-Verbindung), neben anderen Beispielen, bereitgestellt werden. Tabelle 1: Bit-Fehlerabbildung für Flits, die auf Verbindungsstrecken mit 24 Spuren gesendet werden
    MSb LSb Spurnummer (ohne Umkehrung) Spurnummer (mit Umkehrung)
    191 184 23 0
    183 176 22 1
    175 168 21 2
    167 160 20 3
    159 152 19 4
    151 144 18 5
    143 136 17 6
    135 128 16 7
    127 120 15 8
    119 112 14 9
    111 104 13 10
    103 96 12 11
    95 88 11 12
    87 80 10 13
    79 72 9 14
    71 64 8 15
    63 56 7 16
    55 48 6 17
    47 40 5 18
    39 32 4 19
    31 24 3 20
    23 16 2 21
    15 8 1 22
    7 0 0 23
  • Verbesserte Implementierungen können alternativ erhöhte Verbindungsbreiten von n nominalen Spuren unterstützen. Trainingssequenzen können definiert werden, um Spurnummern für eine beliebige Verbindungsbreitenkonfiguration anzuzeigen (z. B. für Nummernspuren von 0 bis n-1). Obwohl vergrößerte Verbindungsstreckenbreiten unterstützt werden können, während die Rückwärtsfähigkeit zu kleineren, traditionellen Verbindungsstreckenbreiten (z.B. Verbindungen mit 20 Spuren) unterstützt wird, ist Vorsicht geboten, da einige Signale, die innerhalb der UPI definiert sind, spurspezifisch sein können. Da die Spurumkehrung möglicherweise unterstützt wird, kann ein Fehler bei einer angemessenen Abbildung bestimmter UPI-Signale auf ihre entsprechende Spuren Fehler und/oder die Leistungsverschlechterung bewirken. Zum Beispiel können PRBS-Muster auf Spurbasis gesendet werden, wobei jedes LFSR mit einem spurspezifischen Startwert gesetzt wird, um koordinierende PRBS-Muster auf benachbarten Spuren der Verbindungsstrecke zu erzeugen. Als ein weiteres Beispiel können Konformitäts-Muster (die gleichermaßen auf PRBS-Mustern basieren können) spurspezifisch sein. FTS-Signale können, neben anderen Beispielen, auch spurabhängig sein. Während theoretisch zusätzliche Multiplexer-(„Mux“)-Hardware bereitgestellt werden kann, um eine konsistente Spurnummerierung sowohl im 20-Spur- als auch im 24-Spur-Modus zu verwalten, in denen eine Spurumkehr möglich ist, kann in einigen Implementierungen übliche Mux-Hardware zur Unterstützung unterschiedlicher Anzahlen von Spuren in verschiedenen alternativen Betriebsmodi verwendet werden. Eine solche Mux-Hardware kann ferner bereitgestellt werden, um die Komplexität der Schaltung und der Verbindungen mit der Mux-Hardware sowie die durch Multiplexer mit höheren Eingängen eingeführte Latenz zu minimieren.
  • In einem in 11A-11B dargestellten Beispiel kann ein rückwärtskompatibler Multiplexer durch ein Array von Multiplexer-Komponenten mit zwei Eingängen implementiert werden. Der Multiplexer kann die Spurumkehrung erleichtern, so dass, wenn ein Umkehrsignal an den Multiplexer geliefert wird (z.B. an jede Multiplexer-Komponente im Array), jeder Multiplexer veranlasst wird, die der Spurumkehr entsprechende Spur auszuwählen. Als ein Beispiel zeigt der im Beispiel von 11A dargestellte Multiplexer einen Multiplexer, der in der Lage ist, Verbindungsbreiten von bis zu 24 Spuren (z.B. 0 bis 23 nummeriert) zu unterstützen. Für eine Verbindung mit 24 Spuren kann ein erster Eingang jeder der Multiplexer-Komponenten mit einer Spur gemäß einer normalen (nicht umgekehrten) Spurkonfiguration bereitgestellt werden. Zum Beispiel kann in einem Array oder einer Sequenz von Multiplexer-Komponenten (MUX) ein erster MUX A (z.B. 1105) die Spur 0 als einen seiner Eingänge annehmen, ein zweiter MUX B (z.B. 1110) kann die Spur 1 als einen seiner Eingänge annehmen und so weiter bis zu einem letzten MUX X (z.B. 1115) in der Sequenz, der die letzte Spur (Spur 23) in der Verbindung annehmen kann. Um die Spurumkehrung zu erleichtern, kann der andere Eingang jedes MUX mit Spureingaben gemäß einer umgekehrten Spurreihenfolge versehen werden. Zum Beispiel kann der MUX A 1105 die Spur 23 als den zweiten seiner zwei Eingänge annehmen, der MUX B 1110 kann die Spur 22 als den zweiten seiner zwei Eingänge annehmen und so weiter, bis der letzte MUX X 1115 die erste Spur, Spur 0, am zweiten seiner zwei Eingänge annimmt. Folglich kann jeder der Multiplexer bei aktivierter Umkehrung veranlassen, dass Daten an dem zweiten seiner Eingänge auf einer entsprechenden Spur ausgegeben werden.
  • Wie vorstehend erwähnt, kann das Multiplexer-Array 1100, das im Beispiel von 11A-11B dargestellt ist, eine Spurumkehrung und Rückwärtskompatibilität zwischen zwei verschiedenen Verbindungsstreckenbreiten (z.B. 24- und 20-Spur-Verbindungsstrecken) erleichtern. Dies kann erleichtert werden, indem definiert wird, dass die einzelnen MUXs den Spuren in einer von außen nach außen gerichteten Weise zugewiesen werden, so dass die Spuren zur Mitte „hinzugefügt“ werden (d.h. nicht am Rand). Zum Darstellen zeigt 11B die Verwendung derselben Multiplexer-Infrastruktur, die zur Erleichterung der Spurumkehr in einer 24-Spur-Konfiguration verwendet wird, für die Spurumkehr in einer 20-Spur-Konfiguration. Bei einer Implementierung mit 20 Spuren können lediglich 20 der MUX-Komponenten verwendet werden. Anstatt jedoch MUX-Komponenten am Ende des Arrays zu deaktivieren oder wegzulassen (z.B. die vier MUX-Komponenten A bis D oder U bis X (die z.B. die Verwendung von MUXs mit 3 Eingängen erfordern würden)), können die MUX-Komponenten (und entsprechende Ports) in der Mitte (z. B. MUXs K bis N) für die reduzierte Spurkonfiguration deaktiviert werden. Wenn kleinere Verbindungsstreckenbreiten bereitgestellt werden sollen, kann die gleiche MUX-Architektur in ähnlicher Weise wiederverwendet werden, wobei überschüssige MUX-Komponenten von der Mitte des Ports nach außen deaktiviert werden. Als Beispiel kann in einer Konfiguration mit 8 Spuren die MUX-Architektur des Beispiels von 11A erneut wiederverwendet werden, wobei jedoch, neben anderen Beispielen, 8 der MUXs (z.B. A bis D und U bis X) verwendet werden und die übrigen MUXs (z.B. E bis T) deaktiviert sind. Auf diese Weise kann eine MUX-Architektur bereitgestellt werden, die auf einer Topologie basiert (z.B. nicht an eine bestimmte Verbindungsstreckenbreite gebunden ist).
  • In einem Beispiel kann ein Beispiel einer EIEOS ein niederfrequentes Taktsignal emulieren, wie z.B. ein sich wiederholendes FF00- oder ein FFFF0000-Signal. EIEOSs können in mehreren Kontexten verwendet werden. Zum Beispiel können EIEOSs innerhalb einer Vielzahl von Supersequenzen zur Verwendung beim Training von Verbindungsstrecken in einer Verbindung verwendet werden (wie hierin erörtert). EIEOSs können zusätzlich bei verschiedenen Verbindungsstreckentrainings-Aufgaben verwendet werden, wie z.B. beim Latenzfestlegen und beim Entprellen von Spuren. Im Fall der Entprellung können aufgrund einer Vielfalt von Bedingungen Transienten auf Spuren eingebracht werden Zum Beispiel kann das Hinzufügen oder Einschalten einer Vorrichtung Transienten auf die Spur einbringen. Außerdem können Spannungsunterschiede auf einer Spur aufgrund schlechter Spurqualität oder eines elektrischen Fehlers auftreten. In einigen Fällen kann das „Aufprallen“ auf einer Spur zu falschen positiven Ergebnissen führen, wie z.B. einer falschen EIEOS. In einigen Implementierungen können jedoch, obwohl Supersequenzen mit einer EIEOS beginnen können, definierte Supersequenzen ferner zusätzliche Datensequenzen sowie eine definierte Frequenz umfassen, mit der die EIEOS wiederholt wird. Selbst wenn eine falsche EIEOS auf einer Spur erscheint, kann folglich ein Logikanalysator am Empfänger feststellen, dass die EIEOS ein falscher positiver Wert ist, indem er Daten validiert, die der falschen EIEOS folgen. Wenn zum Beispiel eine erwartete TS oder andere Daten nicht der EIEOS folgen oder die EIEOS sich nicht innerhalb einer bestimmten der vordefinierten Frequenzen einer der vordefinierten Supersequenzen wiederholt, kann der Empfängerlogikanalysator die Validierung der empfangenen EIEOS durchfallen lassen. Da beim Start ein Aufsprung auftreten kann, wenn eine Vorrichtung zu einer Spur hinzugefügt wird, können ebenfalls falsche Negative entstehen. Nach dem Hinzufügen zu einer Menge von Spuren kann eine Vorrichtung zum Beispiel damit beginnen, eine Detektionssupersequenz 905 zu senden, um die andere Seite der Verbindungsstrecke auf ihr Vorhandensein hinzuweisen, und die Initialisierung der Verbindung zu beginnen. Auf den Spuren eingeführte Transienten können jedoch die anfänglichen EIEOS-, TS-Instanzen und andere Daten der Supersequenz beschädigen. Ein Logikanalysator auf der empfangenden Vorrichtung kann jedoch weiterhin die Spuren überwachen und, neben anderen Beispielen, die nächste EIEOS, die durch die neue Vorrichtung in der sich wiederholenden Detektionssupersequenz 905 gesendet wird, identifizieren.
  • In einem Beispiel kann eine Sendevorrichtung versuchen, in einen bestimmten Zustand einzutreten. Zum Beispiel kann die Sendevorrichtung versuchen, die Verbindungsstrecke zu aktivieren und in einen Initialisierungszustand zu treten. In einem anderen Beispiel kann die Sendevorrichtung neben anderen Beispielen versuchen, einen Niedrigleistungszustand, wie z.B. einen L1-Zustand, zu verlassen. In einigen Fällen eines L1-Zustands kann der L1-Zustand als Energieeinsparung, Ruhezustand oder Bereitschaftszustand dienen. In einigen Beispielen können Hauptstromversorgungen im L1-Zustand aktiv bleiben. Beim Verlassen eines L1-Zustands kann eine erste Vorrichtung eine Supersequenz senden, die mit dem Übergang vom L1-Zustand zu einem bestimmten anderen Zustand, wie z.B. einem L0-Sendeverbindungsstrekenzustand (TLS), assoziiert ist. Die Supersequenz kann, wie in anderen Beispielen, eine sich wiederholende Sequenz einer EOS (z.B. einer herkömmlichen oder niederfrequenten EIEOS) sein, gefolgt von einer vorbestimmten Anzahl von TSs, so dass die EOS mit einer bestimmten vordefinierten Frequenz wiederholt wird. In einem Beispiel kann eine Detektionssupersequenz verwendet werden, um den L1 oder einen anderen Niedrigleistungszustand zu verlassen. Eine Empfangsvorrichtung kann die Daten empfangen und validieren, wobei sie die Supersequenz identifiziert, und die Empfangsvorrichtung kann den Handshake mit der Sendevorrichtung vollenden, indem sie die Supersequenz zurück an die Sendevorrichtung sendet.
  • Da sowohl die Sende- als auch die Empfangsvorrichtung dieselbe Supersequenz empfangen, kann jede Vorrichtung ferner zusätzliche Initialisierungsaufgaben unter Verwendung der Supersequenzen ausführen. Zum Beispiel kann jede Vorrichtung unter Verwendung der Supersequenzen Entprellen, Bitsperren, Bytesperren, Entwürfeln und Entzerren durchführen. Zusätzliche Initialisierungsinformationen können durch die Header und Nutzdaten der in den Supersequenzen aufgenommenen TSs kommuniziert werden. Wenn die Verbindungsstrecke initialisiert wird, kann eine SDS-Sequenz (Start Data Send) gesendet werden, die in einigen Fällen die Supersequenz unterbricht (z.B. in der Mitte einer TS oder EIEOS gesendet), und die entsprechenden Vorrichtungen auf beiden Seiten der Verbindungsstrecke können sich auf den synchronisierten Eintrag in TLS vorbereiten. In TLS oder einem „LO“ -Zustand können Supersequenzen beendet und Flits können unter Verwendung der Verbindungsschicht des Protokollstapels übertragen werden.
  • In TLS kann die Bitübertragungsschicht weiterhin mit eingeschränkten Möglichkeiten zur Durchführung von Steuerungsaufgaben versehen sein. Zum Beispiel können Bitfehler und andere Fehler während eines L0-Zustands auf einer oder mehreren Spuren identifiziert werden. In einer Implementierung kann ein Steuerzustand L0c bereitgestellt werden. Der L0c-Zustand kann als periodisches Fenster innerhalb der TLS bereitgestellt werden, um zu ermöglichen, dass Steuerungsnachrichten der Bitübertragungsschicht zwischen Flutströmen von über die Verbindungsschicht gesendeten Flits gesendet werden. Zum Beispiel kann ein L0-Zustand in L0c-Intervalle unterteilt werden. Jedes L0c-Intervall kann mit einem L0c-Zustand oder -Fenster beginnen, in dem Steuercodes der Bitübertragungsschicht und andere Daten gesendet werden können. Der Rest des L0c-Intervalls kann für das Senden von Flits vorgesehen sein. Die Länge des L0c-Intervalls und des L0c-Zustands in jedem Intervall kann programmgesteuert definiert werden, zum Beispiel durch das BIOS einer oder mehrerer Vorrichtungen oder einer anderen softwarebasierten Steuerung, neben anderen Beispielen. Der L0c-Zustand kann exponentiell kürzer sein als der Rest eines L0c-Intervalls. In einem Beispiel kann der L0c zum Beispiel 8UI betragen, während der Rest des L0c-Intervalls, neben anderen Beispielen, in der Größenordnung von 4KUI liegt. Dies kann Fenster erlauben, in denen vergleichsweise kurze vordefinierte Nachrichten gesendet werden können, ohne die Verbindungsdatenbandbreite wesentlich zu stören oder zu verschwenden.
  • Die L0c-Zustandsnachricht kann eine Vielzahl von Bedingungen auf der Ebene der Bitübertragungsschicht kommunizieren. In einem Beispiel kann eine Vorrichtung ein Zurücksetzen der Verbindungsstrecke oder einer Spur zum Beispiel auf der Grundlage von Bitfehlern oder anderen Fehlern, die einen bestimmten Schwellenwert überschreiten, initiieren. Solche Fehler können auch in LOc-Fenstern (wie z.B. in vorangegangenen L0c-Fenstern) kommuniziert werden. Der L0c-Zustand kann auch genutzt werden, um andere In-Band-Signalisierungen zu realisieren, wie z.B. Signalisierungen zur Verwendung beim Unterstützen oder Auslösen von Übergängen zwischen anderen Verbindungsstreckenzuständen. In einem Beispiel können L0c-Nachrichten verwendet werden, um eine Verbindung von einem aktiven L0-Zustand in einen Bereitschafts- oder Niedrigleistungszustand, wie z.B. einen L1-Zustand, zu überführen. Zum Beispiel kann ein bestimmter L0c-Zustand verwendet werden, um eine L1-Eingangsanforderung, eine Rücksetzanforderung oder eine andere Anforderung zu kommunizieren. Die Anforderung kann das Senden einer entsprechenden Supersequenz vorsehen, die neben anderen Beispielen als Anzeige eines Eintritts oder Austritts aus einem Verbindungszustand definiert wird.
  • Zusätzlich (oder als eine Alternative) zum Handshaking unter Verwendung von L0c-Codes können Supersequenzen, wie z.B. Detektionssupersequenz, in Verbindung mit dem Zurücksetzen und erneuten Initialisieren der Verbindung gesendet werden. Ein weiteres Handshake kann zwischen den Vorrichtungen als die von einer ersten Vorrichtung gesendeten und von der zweiten, empfangenden Vorrichtung identisch wiederholten Supersequenzen auftreten. Supersequenzen können, wie vorstehend beschrieben verwendet werden, um die Neuinitialisierung der Verbindung zu unterstützen, einschließlich Entprellung, Bitsperre, Bytesperre, Entwürfeln und Entzerren der Spuren der Verbindung. Außerdem können die Vorrichtungen den Zeitgeber (der z.B. das L0c-Intervall verkörpert) verwenden, um, neben anderen Beispielen, den Eintritt der Vorrichtungen und der Verbindung in den angeforderten Zustand zu synchronisieren.
  • In einer Ausführungsform kann eine Plattform einen Taktgeber umfassen, der als Referenztakt für Vorrichtungen im System dient. Der Taktgeber kann in die Daten eingebettet werden, so dass keine separaten Taktspuren vorhanden sind. Das Taktsignal kann aus den empfangenen Daten extrahiert werden. Außerdem können die über die Spuren gesendeten Flits verwürfelt werden, um die Taktwiederherstellung zu erleichtern. Die Empfängertaktwiederherstellungseinheit kann als ein Beispiel Abtasttakte an einen Empfänger liefern (d.h. der Empfänger stellt den Takt aus den Daten wieder her und verwendet ihn zum Abtasten der ankommenden Daten). In einigen Implementierungen passen sich die Empfänger kontinuierlich an einen ankommenden Bitstrom an. Durch das Einbetten des Takts kann die Stiftbelegung möglicherweise reduziert werden. Das Einbetten des Takts in die In-Band-Daten kann jedoch die Art und Weise ändern, in der die In-Band-Rücksetzung angegangen wird. In einer Ausführungsform kann nach der Initialisierung ein Sperrverbindungsstreckenzustand (BLS) verwendet werden. Neben anderen Überlegungen können auch EOS-Supersequenzen während der Initialisierung verwendet werden, um das Zurücksetzen zu erleichtern (z.B. wie vorstehend beschrieben). Der eingebettete Takt kann zwischen den Vorrichtungen einer Verbindungsstrecke gemeinsam sein, und der gemeinsame Betriebstakt kann während der Kalibrierung und Konfiguration der Verbindungsstrecke eingestellt werden.
  • Wie vorstehend erwähnt, kann die Anpassung von Spuren auf einer Verbindungsstrecke in der UPI unterstützt sein. Die Bitübertragungsschicht kann sowohl die Empfängeranpassung als auch die Transmitter- oder Senderanpassung unterstützen. Zum Beispiel kann, wie in dem vereinfachten Blockdiagramm 1200a-b von 12A - 12B dargestellt, bei einer Empfängeranpassung der Sender (z.B. der Vorrichtung 1205) auf einer Spur Abtastdaten an den Empfänger (z.B. der Vorrichtung 1210) senden, die die Empfängerlogik verarbeiten kann, um Mängel in den elektrischen Charakteristiken der Spur und Qualität des Signals zu identifizieren. Der Empfänger kann dann Anpassungen an der Kalibrierung der Spur vornehmen, um die Spur auf der Grundlage der Analyse der empfangenen Abtastdaten zu optimieren. Im Falle einer Senderanpassung kann der Empfänger (der Vorrichtung 1210) erneut Abtastdaten empfangen und Metriken entwickeln, die die Qualität der Spur beschreiben, aber in diesem Fall die Metriken an den Sender kommunizieren (z.B. unter Verwendung eines Rückkanals, wie z.B. über einen Softwaremanager (z.B. 1215), eines Seitenbandkanals oder eines anderen Mechanismus), um es dem Sender (der Vorrichtung 1205) zu ermöglichen, Anpassungen an der Spur auf der Grundlage der Rückmeldung vorzunehmen.
  • 12A veranschaulicht ein Beispiel eines Anpassungsprozesses, bei dem eine erste der Vorrichtungen (z.B. 1205) als der Loopback-Master fungiert, während 12B ein Gegenbeispiel darstellt, bei dem die zweite der Vorrichtungen (z.B. 1210) als Loopback-Master fungiert. In einigen Implementierungen kann die Empfängeranpassung beim Start des Abrufzustands unter Verwendung der vom entfernten Sender gesendeten Abrufsupersequenz initiiert werden. Gleichermaßen kann die Senderanpassung durch Wiederholen des Folgenden für jeden Senderparameter durchgeführt werden. In einigen Implementierungen können beide Agenten (der Vorrichtungen 1205 und 1210) als Master in den Loopback-Muster-Zustand eintreten und das spezifizierte Muster übertragen. In einem solchen Beispiel kann die Anpassung der Verbindungsstrecke gleichzeitig für beide Richtungen der Verbindungsstrecke durchgeführt werden (wodurch die in den 12A und 12B dargestellten Verfahren parallel ausgeführt werden). In solchen Beispielen können beide Empfänger die Metrik (z.B. BER) für diese bestimmte Sendereinstellung bei einem entfernten Agenten messen. Beide Agenten können in den Loopback-Marker-Zustand wechseln und dann zurücksetzen und Rückkanäle (langsamer Modus oder Seitenband) verwenden, um Metriken auszutauschen. Auf der Grundlage dieser Metriken kann die nächste Sendereinstellung identifiziert werden. Schließlich kann die optimale Sendereinstellung identifiziert und für eine anschließende Verwendung (z.B. während des aktiven Verbindungszustands) gespeichert werden. Dieser Prozess kann in einigen Implementierungen gleichzeitig an jeder Vorrichtung 1205, 1210 durchgeführt werden, wobei jede Vorrichtung sowohl Master als auch Slave in den jeweiligen Anpassungen der Verbindungsstrecke ist.
  • In einer alternativen Implementierung kann die Anpassung einer Verbindungsstrecke in zwei Stufen abgeschlossen werden, einer ersten Stufe zur Anpassung der Verbindungsstrecke in einer ersten Richtung und einer zweiten Stufe zur Anpassung der Verbindungsstrecke in der anderen zweiten Richtung. Bei einer solchen Implementierung können die durch die Darstellungen in 12A - 12B repräsentierten Verfahren sequentiell ausgeführt werden, wobei die Anpassung der Verbindungsstrecke in der Richtung von der Vorrichtung 1205 an die Vorrichtung 1210 zuerst ausgeführt wird (wobei die Vorrichtung 1205 als Master fungiert, wie im Beispiel von 12A). Wenn diese Richtung der Verbindungsstrecke erfolgreich angepasst wurde, können die Rollen der Agenten der Vorrichtungen in einer zweiten Stufe umgekehrt werden, wobei die Vorrichtung 1210 als Master (und die Vorrichtung 1205 als Slave, wie in 12B) dient und eine Anpassung für die Verbindung in der Richtung von der Vorrichtung 1210 zu der Vorrichtung 1205 durchgeführt wird.
  • Bei jeder alternativen Implementierung einer Anpassung einer UPI-Verbindungsstrecke kann ein Sender eines Agenten ein zufälliges oder ein pseudozufälliges Muster an einen entfernten Empfänger senden. In einigen Fällen können verwürfelte Supersequenzen als Muster verwendet werden. Die Logik am Empfänger kann Charakteristiken einer oder mehrerer Spuren der Verbindungsstrecke bestimmen und Metrikdaten generieren, die diese Eigenschaften beschreiben. Im Falle einer Empfängeranpassung kann der Empfänger versuchen, auf der Grundlage der Metriken optimale Konfigurationen für eine Spur zu bestimmen, und diese Konfigurationen am Empfänger anwenden. Im Fall einer Senderanpassung kann der Empfänger Metriken an den Sender kommunizieren, die vom Senderagenten verwendet werden, um die Spur auf der Grundlage der Metrik zu konfigurieren und anzupassen. In beiden Fällen kann in einigen Implementierungen Hardware oder Software verwendet werden, um verschiedene Sendereinstellungen in algorithmischer Reihenfolge zu bewerten, um die optimalen Einstellungen zu bestimmen. Zum Beispiel können Metriken an einen Software-Manager (z.B. 1215) kommuniziert werden, der verwendet werden kann, um eine Gütezahl zu bestimmen, die Aspekte der Sender- und/oder Empfängereinstellungen beschreibt (die z.B. implementiert sind, um eine statistisch gewichtete Funktion der Augenhöhe, Augenbreite und mehrerer anderer Empfängerwerte zu identifizieren (z.B. Abschwächer, Taktdatenwiederherstellung (CDR), Unterdrückung der zeitlichen Versetzung (CTOC), Decision Feedback Equalizer (DFE), Referenzspannung (vref), Boost usw.). Die Software kann dann einen oder mehrere Optimierungs- oder Einstellungsanpassungsalgorithmen anwenden, um die nächste zu versuchende Sendereinstellung zu bestimmen, und kann den Loopback-Anpassungsprozess wiederholen, bis eine beste Einstellung des Senders ermittelt wird. Wenn dieser Prozess für beide Sender auf der Verbindungsstrecke abgeschlossen ist, kann die Anpassung der Verbindungsstrecke als abgeschlossen betrachtet werden.
  • Die Empfängeranpassung kann beim Start des Abrufzustands unter Verwendung der vom entfernten Sender gesendeten Abrufsupersequenz initiiert werden. Gleichermaßen kann die Senderanpassung durch Wiederholen des Folgenden für jeden Senderparameter durchgeführt werden. Beide Agenten können als Master in den Loopback-Muster-Zustand treten und das angegebene Muster übertragen. Außerdem können beide Empfänger die Metrik (z.B. BER) für diese bestimmte Sendereinstellung bei einem entfernten Agenten messen. Beide Agenten können in den Loopback-Marker-Zustand wechseln, dann zurücksetzen und Rückkanäle (langsamer Modus oder Seitenband) verwenden, um Metriken auszutauschen. Auf der Grundlage dieser Metriken kann die nächste Sendereinstellung identifiziert werden. Schließlich kann die optimale Sendereinstellung identifiziert und für eine spätere Verwendung gespeichert werden.
  • Einige Systeme und Vorrichtungen, die die UPI verwenden, können deterministisch sein, so dass ihre Transaktionen und Interaktionen mit anderen Systemen, einschließlich von Kommunikationen über eine UPI-Verbindungsstrecke, mit bestimmten Ereignissen im System oder der Vorrichtung synchronisiert werden. Eine solche Synchronisation kann gemäß einem planetaren Ausrichtungspunkt oder einem den deterministischen Ereignissen entsprechenden Signal stattfinden. Zum Beispiel kann ein planetares Ausrichtungssignal verwendet werden, um Zustandsübergänge, einschließlich eines Eintritts in einen Verbindungsstreckenzustand, mit anderen Ereignissen auf der Vorrichtung zu synchronisieren. In einigen Fällen können Synchronisationszähler verwendet werden, um die Ausrichtung mit einer planetaren Ausrichtung einer Vorrichtung aufrechtzuerhalten. Zum Beispiel kann jeder Agent einen lokalen Synchronisationszähler umfassen, der durch ein planetarisch ausgerichtetes Signal (d.h. gemeinsames und gleichzeitiges (mit Ausnahme einer festen Verzerrung) für alle Agenten/Schichten, die synchron sind) initialisiert wird. Dieser Synchronisationszähler kann Ausrichtungspunkte auch in heruntergefahrenen oder stromsparenden Zuständen (z.B. L1-Zustand) korrekt zählen, und kann verwendet werden, um den Initialisierungsprozess (nach dem Zurücksetzen oder L1-Austritt) einschließlich der Grenzen (d.h. Anfang oder Ende) einer EIEOS (oder einer anderen EOS), die in einer während der Initialisierung verwendeten Supersequenz aufgenommen ist, zeitlich festzulegen. Solche Supersequenzen können im Hinblick auf die Größe festgelegt werden und können die maximale mögliche Latenzzeit einer Verbindung übersteigen. EIEOS-TS-Grenzen in einer Supersequenz können daher als Vertretung für einen Wert eines entfernten Synchronisationszählers verwendet werden.
  • Außerdem kann die UPI Master-Slave-Modelle unterstützen, bei denen eine deterministische Master-Vorrichtung oder -System das Timing der Interaktion mit einer anderen Vorrichtung entsprechend ihren eigenen Planetenausrichtungsmomenten antreiben kann. In einigen Beispielen kann außerdem ein Master-Master-Determinismus unterstützt werden. Der Master-Master- oder Master-Slave-Determinismus kann sicherstellen, dass zwei oder mehr Verbindungsstrecken-Paare an der Verbindungsschicht und darüber in einem Sperrschritt sein können. Im Master-Master-Determinismus kann der Ausgang jeder Richtung aus der Initialisierung durch den jeweiligen Sender gesteuert werden. Im Falle eines Master-Slave-Determinismus kann ein Master-Agent den Determinismus des Verbindungspaares (d.h. in beide Richtungen) steuern, indem er veranlasst, dass ein Slave-Sender-Initialisierungsaustritt wartet, bis sein Empfänger die Initialisierung verlässt, zum Beispiel neben anderen möglichen Beispielen und Implementierungen.
  • In einigen Implementierungen kann ein Synchronisationszähler (oder „Sync“) in Verbindung mit der Aufrechterhaltung des Determinismus in einer UPI-Umgebung verwendet werden. Zum Beispiel kann ein Synchronisationszähler implementiert werden, um einen definierten Betrag zu zählen, wie z.B. 256 oder 512 UI. Dieser Synchronisationszähler kann durch ein asynchrones Ereignis zurückgesetzt werden und kann fortlaufend (mit Überschlag) von da an zählen (möglicherweise sogar während eines Niedrigleistungszustand-Verbindungsstreckenzustands). Stift-basierte Rücksetzungen (z.B. Rücksetzen im eingeschalteten Zustand, warmes Zurücksetzen) können neben anderen Beispielen Ereignisse synchronisieren, die einen Synchronisationszähler zurücksetzen. In einer Ausführungsform können diese Ereignisse auf zwei Seiten mit geringerem Versatz (und in vielen Fällen viel geringerem) als der Synchronisationszählerwert auftreten. Während der Initialisierung kann der Start des übertragenen Exit-Ordered-Set (z.B. EIEOS), der einer Trainingssequenz einer Trainingssupersequenz vorangeht, mit dem Rücksetzwert des Sync-Zählers (z. B. Sync-Zählerüberschlag) ausgerichtet werden. Solche Synchronisationszähler können bei jedem Agenten auf einer Verbindungsstrecke aufrechterhalten werden, um den Determinismus durch Aufrechterhalten einer konstanten Latenzzeit von Flitübertragungen über eine bestimmte Verbindung aufrechtzuerhalten.
  • Steuersequenzen und Codes können neben anderen Signalen mit einem Planetenausrichtungssignal synchronisiert werden. Zum Beispiel können EIEOS-Sequenzen, BLS- oder L0c-Fenster (und aufgenommene Codes), SDSs usw. derart konfiguriert werden, dass sie mit einer planetaren Ausrichtung synchronisiert werden. Ferner können Synchronisationszähler gemäß einem externen Signal, wie z.B. einem planetaren Ausrichtungssignal, von einer Vorrichtung zurückgesetzt werden, um, neben anderen Beispielen, selbst mit der planetaren Ausrichtung synchronisiert zu werden.
  • Synchronisationszähler beider Agenten auf einer Verbindungsstrecke können synchronisiert werden. Das Zurücksetzen, Initialisieren oder erneutes Initialisieren einer Verbindungsstrecke kann ein Zurücksetzen der Synchronisationszähler umfassen, um die Synchronisationszähler miteinander und/oder einem externen Steuersignal (z.B. einem planetaren Ausrichtungssignal) neu auszurichten. In einigen Implementierungen können Synchronisationszähler lediglich durch einen Eintritt in einen Rücksetzzustand zurückgesetzt werden. In einigen Fällen kann der Determinismus aufrechterhalten werden, wie z.B. bei einer Rückkehr in einen L0-Zustand, ohne den Sync-Zähler zurückzusetzen. Stattdessen können andere Signale, die bereits auf eine planetare Ausrichtung oder ein anderes deterministisches Ereignis abgestimmt sind, als Vertreter für ein Zurücksetzen verwendet werden. In einigen Implementierungen kann eine EIEOS in einem deterministischen Zustandseintritt verwendet werden. In einigen Fällen können die Grenze der EIEOS und einer anfänglichen TS einer Supersequenz verwendet werden, um einen Synchronisationszeitpunkt zu identifizieren und Synchronisationszähler eines der Agenten auf einer Verbindungsstrecke zu synchronisieren. Das Ende einer EIEOS kann zum Beispiel unter anderem dazu verwendet werden, um zu vermeiden, dass das Potential von Transienten die Startgrenze der EIEOS beschädigt.
  • Latenzfestlegungen können auch in einigen Implementierungen von UPI bereitgestellt werden. Die Latenzzeit kann nicht nur die Latenzzeit umfassen, die durch die zur Kommunikation von Flits verwendete Übertragungsleitung eingeführt wird, sondern auch die Latenzzeit, die sich aus der Verarbeitung durch den Agenten auf der anderen Seite der Verbindungsstrecke ergibt. Die Latenz einer Spur kann während der Initialisierung der Verbindungsstrecke bestimmt werden. Außerdem können auch Änderungen der Latenz bestimmt werden. Aus der bestimmten Latenzzeit kann eine Latenzfestlegung eingeleitet werden, um solche Änderungen zu kompensieren und die für die Spur erwartete Latenzzeit auf einen konstanten erwarteten Wert zurückzusetzen. Die Aufrechterhaltung einer konsistenten Latenzzeit auf einer Spur kann für die Aufrechterhaltung des Determinismus in einigen Systemen entscheidend sein.
  • Die Latenz kann in einigen Implementierungen an einer Empfänger-Verbindungsschicht unter Verwendung eines Latenzpuffers in Verbindung mit Determinismus auf einen programmierten Wert festgelegt werden und kann durch Starten einer Detektion (z.B. durch Senden einer Detektionssupersequenz) bei einem Sync-Zählerüberschlag aktiviert werden. Dementsprechend kann in einem Beispiel eine gesendete EIEOS (oder eine andere EOS) in Abfrage und Konfiguration bei einem Synchronisationszähler-Überschlag auftreten. Mit anderen Worten kann die EIEOS genau auf den Sync-Zähler ausgerichtet werden, so dass eine synchronisierte EIEOS (oder eine andere EOS) in einigen Fällen als Vertreter für den Sync-Zählerwert selbst dienen kann, zumindest in Verbindung mit bestimmten Aktivitäten zur Latenzfestlegung. Zum Beispiel kann ein Empfänger einer empfangenen EIEOS eine ausreichende Latenz hinzufügen, so dass er die vorgegebene Ziel-Latenz an der Schnittstelle der Bitübertragungsschicht-Verbindungsschicht erreicht. Wenn zum Beispiel die Ziel-Latenz 96 UI beträgt und die Empfänger-EIEOS nach der Entzerrung bei der Synchronisationszählung 80 UI liegt, kann eine Latenz von 16 UI hinzugefügt werden. Im Wesentlichen kann angesichts der Synchronisation einer EIEOS die Latenz einer Spur basierend auf der Verzögerung zwischen dem Zeitpunkt, zu dem bekannt ist, dass die EIEOS gesendet wurde (z.B. bei einem bestimmten Synchronisationszählerwert) und dem Zeitpunkt, zu dem die EIEOS empfangen wurde, bestimmt werden. Außerdem kann die Latenz unter Verwendung der EIEOS festgelegt werden (z.B. durch Hinzufügen einer Latenz zur Übertragung einer EIEOS, um eine Ziel-Latenz aufrechtzuerhalten usw.).
  • Die Latenzfestlegung kann im Kontext von Determinismus verwendet werden, um es einer externen Entität (z.B. einer Entität, die ein planetares Ausrichtungssignal bereitstellt) zu ermöglichen, den physikalischen Zustand von zwei Agenten über die Verbindungsstrecke in zwei Richtungen zu synchronisieren. Eine solche Funktion kann zum Beispiel zur Beseitigung von Problemen im praktischen Einsatz und zur Unterstützung des Sperrschritt-Verhaltens verwendet werden. Dementsprechend können solche Implementierungen eine externe Steuerung eines oder mehrerer Signale umfassen, die bewirken können, dass die Bitübertragungsschicht auf zwei Agenten in einen Sendeverbindungszustand (TLS) übergeht. Agenten, die über Determinismusfähigkeiten verfügen, können die Initialisierung an einer TS-Grenze beenden, die möglicherweise auch die reine Flit-Grenze ist, wenn oder nachdem das Signal aktiviert wird. Der Master-Slave-Determinismus kann es einem Master ermöglichen, den Zustand der Bitübertragungsschicht von Master- und Slave-Agenten über die Verbindungsstrecke in beide Richtungen zu synchronisieren. Wenn aktiviert, kann der Slave-Sender-Austritt aus der Initialisierung (zusätzlich zu anderen auf Determinismus basierenden Überlegungen) von dem Austritt des Empfängers aus der Initialisierung abhängen (z.B. darauf folgen oder damit koordiniert werden). Agenten, die die Determinismusfähigkeit aufweisen, können neben anderen Beispielen zusätzlich eine Funktionalität zum Betreten eines BLS- oder L0c-Fensters auf einem reinen Flit besitzen.
  • In einigen Implementierungen kann der Determinismus in UPI deine Förderung der Fähigkeit eines Agenten umfassen, eine Verzögerung auf der Grundlage eines deterministischen Signals zu bestimmen und anzuwenden. Ein Master kann einen Hinweis auf eine Ziellatenz an einen entfernten Agenten senden. Der entfernte Agent kann die tatsächliche Latenzzeit auf einer Spur bestimmen und eine Verzögerung anwenden, um die Latenzzeit anzupassen, um die Ziel-Latenzzeit zu erreichen (z.B. in einer TS identifiziert). Das Anpassen der Verzögerung oder Latenz kann dazu beitragen, den schließlich synchronisierten Eintritt in einen Verbindungssendezustand an einem planetaren Ausrichtungspunkt zu erleichtern. Ein Verzögerungswert kann durch einen Master an einen Slave kommuniziert werden, zum Beispiel in TS-Nutzdaten einer Supersequenz. Die Verzögerung kann eine bestimmte Anzahl UIs spezifizieren, die für die Verzögerung bestimmt ist. Der Slave kann den Eintritt in einen Zustand auf der Grundlage der ermittelten Verzögerung verzögern. Solche Verzögerungen können zum Beispiel verwendet werden, um, neben anderen Beispielen, das Testen zu erleichtern, um L0c-Intervalle auf Spuren einer Verbindungsstrecke zu staffeln.
  • Wie vorstehend erwähnt, kann ein Zustandsaustritt gemäß einem planetaren Ausrichtungspunkt stattfinden. Zum Beispiel kann ein SDS gesendet werden, um eine Zustandssupersequenz zu unterbrechen, um den Übergang aus dem Zustand in einen anderen Zustand voranzutreiben. Das Senden des SDS kann zeitlich derart abgestimmt werden, dass es mit einem planetaren Ausrichtungspunkt zusammenfällt und in einigen Fällen als Antwort auf ein planetaren Ausrichtungssignal. In anderen Fällen kann das Senden eines SDS mit einem planetaren Ausrichtungspunkt auf der Grundlage eines Synchronisationszählerwerts oder eines anderen Signals, das mit der planetaren Ausrichtung synchronisiert ist, synchronisiert werden. Ein SDS kann an einer beliebigen Stelle in einer Supersequenz gesendet werden, wobei in einigen Fällen eine bestimmte TS oder EIEOS usw. der Supersequenz unterbrochen wird. Dies kann neben anderen Beispielen sicherstellen, dass der Zustand mit einer geringen Verzögerung übergeht, während die Ausrichtung mit einem planetaren Ausrichtungspunkt beibehalten wird.
  • In einigen Implementierungen können Hochgeschwindigkeitsverbindungsstrecken, wie z.B. jene, die UPI unterstützen und verwenden, aufgrund der elektrischen Anforderungen an die physischen Leitungen, die die Verbindungen implementieren, bezüglich ihrer Länge beschränkt sein. Verbindungsverlängerungsvorrichtungen, wie z.B. Repeater, Redriver und Retimer, können in einigen Implementierungen verwendet werden, um Verbindungsabschnitte effektiv miteinander zu „spleißen“, um eine Verbindung mit einer Länge zu bilden, die über traditionelle Beschränkungen hinausgeht. 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 mehr als akzeptabel sein, aber für Systeme, die größere Formfaktoren verwenden, wie z.B. Server-Racks und andere größere Hochgeschwindigkeitssysteme, Erweiterungs- oder Repeater-Vorrichtungen, wie z.B. Retimer oder Redriver, können zur Erweiterung der Länge der Verbindung verwendet werden.
  • Mit zunehmenden Signalisierungsfrequenzen serieller Verbindungen (z.B. PCIe, USB, UPI, TBT, DP usw.) werden die Kanallängen, die wirtschaftlich betrieben werden können, kürzer. Gleichzeitig erfordern neue Plattformkonfigurationen (z.B. Server-Racks) häufig längere Kanallängen. Einige Implementierungen versuchen, eine hohe Kanaldämpfung durch Verwendung von Materialien mit niedrigem Verlust für längere Kanäle zu erreichen, jedoch kann die Verwendung solcher Materialien unerschwinglich teuer werden. Repeater-Vorrichtungen (einschließlich von Retimem und Redrivern) können als eine alternative Lösung verwendet werden, um die Länge einer Hochgeschwindigkeitsverbindung zu verlängern (wie in UPI).
  • 13 ist ein vereinfachtes Blockdiagramm 1300, das ein Beispiel einer Implementierung einer Verbindungsstrecke darstellt, die zwei Vorrichtungen 1305, 1310 verbindet, wobei die Verbindungsstrecke unter Verwendung einer Repeater-Vorrichtung 1315 verlängert wird. Jede Vorrichtung 1305, 1310 sendet Daten an ihrem jeweiligen Sender (z.B. Tx A und Tx B), und die Daten können an einem Empfänger (z.B. Rx R1 und Rx R2) des Repeater 1315 empfangen und dann (an einem jeweiligen Sender Tx R1 und Tx R2 des Repeaters) an den Empfänger (z.B. Rx B, Rx A) der Zielvorrichtung weitergeleitet werden. In einigen Fällen können mehrere Repeater in eine Verbindung eingefügt werden, um die physische Länge der Verbindung weiter zu verlängern.
  • Während Repeater (z.B. 1315) sich als nützlich erweisen können, um die physische Reichweite einer Verbindung zu erweitern, können traditionelle Repeater einen Teil der Signalisierung, die in einem Verbindungsprotokoll, wie z.B. UPI, definiert ist, unterminieren. Um zum Beispiel Verbindungszustandsübergänge und Verbindungskonfigurationsaktivitäten zu unterstützen, die von der Detektion einer definierten Pulldown-Spannung des Empfängers Gebrauch machen, kann jede Vorrichtung 1305, 1310 eine Pulldown-Detektionslogik umfassen, die ausgelegt ist, um Spannungen an ihrem Sender zu identifizieren (z.B. Tx A und Tx B), die einer erwarteten Pulldown-Spannung von einer anderen auf der Verbindungsstrecke anwesenden Vorrichtung (einem Empfänger) entsprechen. Solche Pulldown-Spannungen können zum Beispiel als Schritt in einem Handshake dienen, um einen Detektionszustand zu verlassen und einen Vorwärtsschritt in Richtung eines aktiven Verbindungszustands zu machen. Zum Beispiel kann ein Empfängerdetektionszustand (Rx Detect) das Überwachen eines Senderanschlusses auf eine Pulldown-Spannung umfassen, um nachzuweisen, dass eine andere Vorrichtung auf der Verbindungsstrecke angeschlossen ist und zum Empfang weiterer Signale von der Vorrichtung zur Verfügung steht (z.B. in Verbindung mit der Initialisierung und dem Training von der Verbindungsstrecke). Die Einbeziehung eines Repeaters (z.B. 1315) kann jedoch die Fähigkeit beeinträchtigen, eine Pulldown-Spannung von der anderen Vorrichtung (z.B. 1310) durch eine bestimmte Vorrichtung (z.B. 1305) zu detektieren. Während das Einfügen der Anschlüsse der Vorrichtung B 1310 zum Beispiel eine Pulldown-Spannung (z.B. 1325a) auf dem Verbindungsabschnitt 1320b mit Charakteristiken erzeugt, die der Pulldown-Spannung entsprechen, die durch die Vorrichtung A 1305 während der Empfängerdetektionszustandsüberwachung erwartet werden, wird die Pulldown-Spannung 1325a normalerweise lediglich auf der Sendeseite (Tx R2) des Repeaters 1315 detektierbar und ist am Sender (Tx A) der Vorrichtung A 1305, die den Spurabschnitt1320a auf eine Pulldown-Spannung von der Vorrichtung B 1310 überwacht, nicht sichtbar. Die Vorrichtung A 1305 wird in diesem Beispiel jedoch eine Pulldown-Spannung am Verbindungssegment 1320a detektieren, obwohl die Pulldown-Spannung (z.B. 1325b) von den Abschlüssen des Repeaters 1315 und nicht von den Abschlüssen der Vorrichtung B 1310 stammen wird. In diesem Fall kann Vorrichtung A nicht nur eine von Vorrichtung B erzeugte Pulldown-Spannung nicht detektieren, sondern Vorrichtung A detektiert immer eine Pulldown-Spannung (z.B. 1325b) vom Repeater 1315, selbst wenn am anderen Ende der Verbindung (d.h. auf der anderen Seite des Repeaters) keine Endpunktvorrichtung vorhanden ist. Das Gleiche gilt für die andere Richtung, da Vorrichtung B lediglich die Pulldown-Spannung 1325d vom Repeater 1315 (auf dem Verbindungsabschnitt 1320c) detektiert, wobei die interessierende Pulldown-Spannung (z.B. 1325c auf dem Verbindungsabschnitt 1320d) von der Vorrichtung A stattdessen durch den Repeater 1315 empfangen und blockiert wird. Dementsprechend kann ein Handshake, der in einem Empfängerdetektionszustand definiert ist, durch das Vorhandensein eines Retimers beeinträchtigt werden, wie in dem Beispiel von 13 gezeigt.
  • Zurückkehrend zur Diskussion des in 7 dargestellten Zustandsautomaten, kann der Zustandsautomat für ein Protokoll, das Pulldown-Spannungen als Mechanismus für die Vorrichtungserkennung (d.h. durch die andere Vorrichtung auf der Verbindungsstrecke) verwendet, durch das Vorhandensein eines Retimers beeinträchtigt werden. Während einige spezialisierte Retimer entwickelt werden können, um dieses spezielle Problem anzugehen, können solche Implementierungen teuer sein und sind möglicherweise nicht verfügbar. In einem Beispiel kann ein zusätzlicher Niedrigleistungszustand L1b 705 dem Zustandsautomaten hinzugefügt werden. In diesem Beispiel kann eine Annahme vorgenommen werden, dass ein Empfängerdetektionszustand 710 jedes Mal beeinträchtigt wird, wenn eine Repeater-Vorrichtung auf einer Verbindung vorhanden ist, da Endpunkt-Vorrichtungen, die mit dem Repeater verbunden sind, eine Pulldown-Spannung in Erfüllung des Empfängerdetektionszustands 710 detektieren, aber nicht in der Lage sind festzustellen, ob diese Pulldown-Spannung ein Beweis dafür ist, dass ein anderer Endpunkt auf der Verbindungsstrecke anwesend ist oder ob die Pulldown-Spannung lediglich eine Pulldown-Spannung ist, die sich aus den eigenen Anschlüssen des Repeaters ergibt. In solchen Fällen kann der Senderdetektionszustand 715 eine zusätzliche Bedeutung erhalten.
  • In einem Beispiel können Detektionssequenzen so definiert werden, dass sie von jedem der Sender der Vorrichtungen (z.B. 1305, 1310) in einem Senderdetektionszustand gesendet werden. Sollte eine Vorrichtung die erwartete Detektionssequenz (oder ein anderes definiertes Signal für den Detektionszustand) empfangen, kann die empfangende Vorrichtung bestimmen, dass eine andere Endpunktvorrichtung mit einem protokollfähigen Sender am anderen Ende der Verbindungsstrecke vorhanden ist. Normalerweise (d.h. wenn kein Repeater vorhanden ist) geht die Zustandsautomatenlogik des Agenten einer Vorrichtung nicht in den Senderdetektionszustand 715 über, wenn er nicht bereits bestimmt hat, dass ein anderer Endpunkt vorhanden ist (auf der Grundlage der Erfüllung des Empfängerdetektionszustands 710). Wenn ein Repeater auf der Verbindungsstrecke vorhanden ist, kann es sein, dass eine bestimmte Vorrichtung (durch die Zustandsautomatenlogik) vom Empfängerdetektionszustand 710 in den Senderdetektionszustand 715 übergeht, selbst wenn keine andere Endpunktvorrichtung auf der Verbindungsstrecke vorhanden ist (d.h. wenn lediglich die bestimmte Vorrichtung und der Repeater auf der Verbindungsstrecke vorhanden sind). Die bestimmte Vorrichtung kann dann ihren Empfänger auf ein eingehendes Detektionssignal überwachen, jedoch ohne Erfolg. Anstatt dass die bestimmte Vorrichtung einen Deadlock feststellt und Tx Detect 715 in einen Rücksetzzustand verlässt (der unnötig teuer sein und dazu führen kann, dass die bestimmte Vorrichtung erneut erfolglos in Tx Detect übergeht), kann der L1b-Zustand 705 eingeführt werden, um es der Zustandsautomatenlogik der bestimmten Vorrichtung zu erlauben, für einen Zeitraum in einen Niedrigleistungszustand 705 (d.h. um Energie zu sparen), anstatt in ein Rücksetzen zu fallen. Beim Erreichen des Tx-Detektionszustands 715 kann die bestimmte Vorrichtung zum Beispiel die Spuren auf ein Detektionssignal für eine bestimmte Dauer überwachen. Wenn während dieser bestimmten Dauer kein Detektionssignal empfangen wird, kann die Taktlogik der bestimmten Vorrichtung die Zustandsautomatenlogik auffordern, vorübergehend vom Tx-Detektionszustand 715 in den L1b-Zustand 705 überzugehen. Hierbei können in L1b 705 alle außer der Aufwach-Überwachungslogik (auf einer oder mehreren Spuren) an der bestimmten Vorrichtung heruntergefahren werden. Die bestimmte Vorrichtung kann für eine weitere Zeitdauer in L1b 705 verbleiben, bevor sie in den Tx-Detektionszustand 715 zurückkehrt, um es erneut zu versuchen, wobei die Verbindungsstrecke auf ein Detektionssignal von einer anderen Endpunktvorrichtung überwacht wird. In einigen Implementierungen kann die Vorrichtung weiterhin zwischen den Zuständen Tx-Detektion 715 und L1b 705 schalten, bis ein Vorwärtsfortschritt erfolgt ist (d.h. durch das Hinzufügen einer entsprechenden anderen Endpunktvorrichtung). In einigen Fällen kann ein Timeout definiert werden, so dass, wenn eine Vorrichtung mehrere Male zwischen dem Tx Detect 715 und dem L1b 705 über eine Zeitdauer schaltet, ohne einen Vorwärtsfortschritt zu erzielen (z.B. Empfangen von Detektionssignalen von einer anderen Vorrichtung), die Vorrichtung dann, neben anderen Beispielen, in einen Rücksetzzustand versetzt oder einfach ausgeschaltet werden kann.
  • Unter Bezugnahme auf 14 ist ein Ablaufdiagramm 1400 eines Beispielabschnitts der Initialisierung und des Trainings einer bestimmten Verbindungsstrecke gezeigt. Zum Beispiel kann die Zustandsautomatenlogik eines Agenten einer bestimmten Vorrichtung (z.B. einer Endpunktprozessorvorrichtung oder -knotens, eines Beschleunigers, einer Knoten-Steuereinheit usw.) in einen Empfängerdetektionszustand 1405 eintreten und einen Sender der Vorrichtung auf eine Pulldown-Spannung überwachen, die einen Beweis dafür darstellt, dass eine andere Vorrichtung über die Verbindungsstrecke mit der jeweiligen Vorrichtung verbunden ist. Die andere Vorrichtung kann in einigen Beispielen entweder eine andere Endpunktvorrichtung oder ein Repeater sein. Eine Pulldown-Spannung kann detektiert werden 1410 und die Zustandsautomatenlogik kann den Empfängerdetektionszustand auf der Grundlage der detektierten Pulldown-Spannung verlassen 1415. Die Zustandsautomatenlogik kann direkt in einen Senderdetektionszustand übergehen 1420 oder kann zuerst in einen oder mehrere Zwischenverbindungs-Trainingszustände übergehen und aus diesem herausgehen, bevor sie in den Senderdetektionszustand eintritt 1420. Im Senderdetektionszustand kann ein Empfänger der bestimmten Vorrichtung auf die Übertragung eines Signals überwacht werden (z.B. entsprechend dem Senderdetektionszustand, wie z.B. einer Detektions-Supersequenz). Die bestimmte Vorrichtung kann versuchen, den Empfang eines solchen Signals eine Zeit lang zu identifizieren. Wenn kein Detektionssignal empfangen wird (bei 1425), kann die Zustandsautomatenlogik für eine Zeitdauer in einen Niedrigleistungszustand übergehen 1430, wodurch die Vorrichtung (oder der Abschnitt der Vorrichtung, der der Verbindung entspricht) dazu veranlasst wird, in einen Niedrigleistungsmodus zu treten. Nach einer Zeitdauer kann die Zustandsautomatenlogik in den Senderdetektionszustand aus dem Niedrigleistungszustand erneut eintreten 1420, um erneut zu versuchen, ein Signal zu detektieren, das der Anwesenheit eines kompatiblen Senders an einer anderen Endpunktvorrichtung auf der Verbindungsstrecke entspricht. Wenn ein erwartetes Detektionssignal in dem Senderdetektionszustand empfangen wird (z.B. 1425), kann die Zustandsautomatenlogik, neben anderen Beispielen, einen Austritt 1435 aus dem Senderdetektionszustand in einen oder mehrere andere Zustände bewirken, die in einem Verbindungstrainings-Zustandsautomaten definiert sind (z.B. einen Abfragezustand).
  • Die UPI kann in eine Vielzahl von Rechenvorrichtungen und -Systemen eingebaut werden, einschließlich von Mainframes, Serversystemen, Personalcomputern, mobilen Computern (wie z.B. Tablets, Smartphones, persönlichen digitalen Systemen usw.), intelligenten Geräten, Spiele- oder Unterhaltungskonsolen oder Set-Top-Boxen, neben anderen Beispielen. Zum Beispiel ist unter Bezugnahme auf 18 eine Ausführungsform eines Blockdiagramms für ein Rechensystem dargestellt, das einen Mehrkernprozessor umfasst. Der Prozessor 1800 umfasst einen beliebigen Prozessor oder eine Verarbeitungsvorrichtung, wie z.B. einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzprozessor, einen tragbaren Prozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System auf einem Chip (SOC), oder andere Vorrichtungen, um Code auszuführen. Der Prozessor 1800 umfasst in einer Ausführungsform mindestens zwei Kerne - Kern 1801 und 1802, die asymmetrische Kerne oder symmetrische Kerne (in der dargestellten Ausführungsform) umfassen können. Der Prozessor 1800 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele von Hardware-Verarbeitungselementen umfassen: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, einen Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern, und/oder ein anderes Element, das einen Zustand für einen Prozessor halten kann, wie z. B. einen Ausführungszustand oder einen Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf eine beliebige Hardware, die unabhängig einem Code, wie z.B. einem Software-Thread, Betriebssystem, Anwendung oder anderem Code, zugeordnet werden kann. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell eine beliebige Anzahl anderer Verarbeitungselemente wie z. B. Kerne oder Hardware-Threads umfasst.
  • Ein Kern bezieht sich oft auf eine Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest 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 einen unabhängigen Architekturzustand aufrechterhalten kann, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugang zu Ausführungsressourcen gemeinsam verwenden. Wie zu erkennen, überlappt sich die Linie zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinsam verwendet werden und andere für einen Architekturzustand dediziert sind. Häufig werden jedoch ein Kern und ein Hardware-Thread durch ein Betriebssystem als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem Operationen individuell auf jedem logischen Prozessor planen kann.
  • Der physische Prozessor 1500, wie in 15 dargestellt, umfasst zwei Kerne - Kern 1501 und 1502. Hierbei werden der Kern 1501 und 1502 als symmetrische Kerne betrachtet, d h. Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder Logik. In einer weiteren Ausführungsform umfasst der Kern 1501 einen außer-Reihenfolge-Prozessorkern, während der Kern 1502 einen in-Reihenfolge-Prozessorkern umfasst. Die Kerne 1501 und 1502 können jedoch individuell aus jedem Typ von Kern ausgewählt sein, z.B. einem nativen Kern, einem durch Software verwalteten Kern, einem Kern, der ausgelegt ist, eine native Befehlssatzarchitektur (ISA) auszuführen, einem Kern, der ausgelegt ist, eine übersetzte Befehlssatzarchitektur (ISA) auszuführen, einem co-entworfenen Kern, oder einem anderen bekannten Kern. In einer Umgebung mit heterogenen Kernen (d.h. asymmetrischen Kernen) kann eine Art von Übersetzung, wie z.B. binäre Übersetzung, benutzt werden, um einen Code auf einem oder beiden Kernen zu planen oder auszuführen. Um die Diskussion jedoch voranzubringen, sind die im Kern 1501 dargestellten Funktionseinheiten nachstehend genauer beschrieben, da die Einheiten im Kern 1502 in der abgebildeten Ausführungsform auf eine ähnliche Art arbeiten.
  • Wie dargestellt, umfasst der Kern 1501 zwei Hardware-Threads 1501a und 1501b, die auch als die Hardware-Thread-Schlitze 1501a und 1501b bezeichnet werden können. Deshalb betrachten Softwareentitäten, wie z.B. ein Betriebssystem, in einer Ausführungsform potentiell den Prozessor 1500 als vier getrennte Prozessoren, d.h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend erwähnt, ist ein erster Thread mit Architekturzustandsregistern 1501a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 1501b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 1502a assoziiert sein, und ein vierter Thread kann mit Architekturzustandsregistern 1502b assoziiert sein. Hierbei kann jedes der Architekturzustandsregister (1501a, 1501b, 1502a, und 1502b) als Verarbeitungselemente, Thread-Schlitze, Thread-Einheiten bezeichnet werden, wie vorstehend beschrieben. Wie dargestellt, sind die Architekturzustandsregister 1501a in den Architekturzustandsregister 1501b repliziert, somit können individuelle Architekturzustände/-kontexte für den logischen Prozessor 1501a und den logischen Prozessor 1501b gespeichert werden. Im Kern 1501 können auch andere kleinere Ressourcen, wie z.B. Befehlszeiger und Umbenennungslogik im Zuweisungs- und Umbenennungsblock 1530, auch für die Threads 1501a und 1501b repliziert sein. Einige Ressourcen, wie z.B. Umordnungspuffer in der Umordnungs-/Stilllegungseinheit 1535, ILTB 1520, Lade/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam verwendet werden. Andere Ressourcen, wie z.B. interne Allzweckregister, Seitentabellenbasisregister, Daten-Cache der unteren Ebene und Daten-TLB 1515, Ausführungseinheit(en) 1540 und Abschnitte der außer-Reihenfolge-Einheit 1535 werden potentiell vollständig gemeinsam verwendet.
  • Der Prozessor 1500 umfasst häufig weitere Ressourcen, die vollständig gemeinsam verwendet werden können, durch Partitionierung gemeinsam verwendet werden können oder durch/für Verarbeitungselemente dediziert sind. In 15 ist eine Ausführungsform eines lediglich als Beispiel gezeigten Prozessors mit anschaulichen logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten umfassen oder weglassen kann, und sowie jegliche andere bekannte Funktionseinheiten, Logik oder Firmware, die nicht abgebildet sind, umfassen kann. Wie dargestellt, umfasst der Kern 1501 einen vereinfachten, repräsentativen außer-Reihenfolge-Prozessorkern (OOO-Prozessorkern). Ein in-Reihenfolge-Prozessor kann jedoch in anderen Ausführungsformen verwendet werden. Der OOO-Kern umfasst einen Zweigzielpuffer 1520, um Zweige, die ausgeführt/aufgenommen werden müssen, vorherzusagen, und einen Befehlsübersetzungspuffer (I-TLB) 1520, um Adressenübersetzungseinträge für Befehle zu speichern.
  • Der Kern 1501 umfasst ferner das Decodierungsmodul 1525, das mit der Abholeinheit 1520 gekoppelt ist, um abgeholte Elemente zu decodieren. Abhollogik umfasst in einer Ausführungsform individuelle Sequenzierer, die mit den Thread-Schlitzen 1501a bzw. 1501b assoziiert sind. Gewöhnlich ist der Kern 1501 mit einer ersten ISA assoziiert, die Befehle, die auf dem Prozessor 1500 ausführbar sind, definiert/spezifiziert. Häufig umfassen Maschinencodebefehle, die Teil der ersten ISA sind, einen Abschnitt des Befehls (als Opcode bezeichnet), der sich auf einen Befehl oder Operation, die ausgeführt werden soll, bezieht bzw. sie spezifiziert. Die Decodierungslogik 1525 umfasst eine Schaltungsanordnung, die diese Befehle aus ihren Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weiterleitet, wie durch die erste ISA definiert ist. Zum Beispiel umfassen, wie nachstehend ausführlicher diskutiert, die Decodierer 1525 in einer Ausführungsform eine Logik, die entworfen oder ausgelegt ist, um spezifische Befehle zu erkennen, wie z.B. einen Transaktionsbefehl. Als Ergebnis der Erkennung durch die Decodierer 1525 unternimmt die Architektur oder der Kern 1501 spezifische, vordefinierte Aktionen, um Aufgaben, die mit dem geeigneten Befehl assoziiert sind, auszuführen. Es ist wichtig zu beachten, dass jede der Aufgaben, Blöcke, Operationen und Verfahren, die hier beschrieben sind, als Antwort auf einen einzelnen oder mehrere Befehle ausgeführt werden können; einige davon können neue oder alte Befehle sein. Es zu beachten, dass die Decodierer 1526 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen die Decodierer 1526 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine verschiedene ISA).
  • In einem Beispiel umfasst der Zuweisungs- und Umbenennungsblock 1530 eine Zuweisungseinheit, um Ressourcen zu reservieren, wie z.B. Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Threads 1501a und 1501b sind jedoch potentiell, zur Ausführung außer der Reihenfolge in der Lage, wobei der Zuweisungs- und Umbenennungsblock 1530 auch andere Ressourcen reserviert, wie z.B. Aufzeichnungspuffer, um Befehlsergebnisse zu verfolgen. Die Einheit 1530 kann auch eine Registerumbenennungseinheit umfassen, um Programm/Befehlsreferenzregister in andere Register innerhalb des Prozessors 1500 umzubenennen. Die Aufzeichnungs-/Stilllegungseinheit 1535 umfasst Komponenten, wie z.B. die vorstehend genannten Aufzeichnungspuffer, Lastpuffer und Speicherpuffer, um die Ausführung außer der Reihenfolge und später Stilllegung in Reihenfolge von außer der Reihenfolge ausgeführten Befehlen auszuführen.
  • Planungs- und Ausführungseinheit(en)-Block 1540 umfasst in einer Ausführungsform eine Planungseinheit, um Befehle/Operationen auf Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl auf einem Anschluss einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls aufgenommen, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispiele für Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Lastausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Datencache niedriger Ebene und Datenübersetzungspuffer (D-TLB) 1550 sind mit Ausführungseinheit(en) 1540 gekoppelt. Der Datencache dient dazu, kürzlich verwendete/bearbeitete Elemente zu speichern, wie z.B. Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient dazu, jüngste Übersetzungen von virtuellen/linearen in physische Adressen zu speichern. Als ein konkretes Beispiel kann ein Prozessor eine Seitentabellenstruktur umfassen, um den physischen Speicher in mehrere virtuelle Seiten zu zerlegen.
  • Hierbei verwenden die Kerne 1501 und 1502 den Zugang zum Cache höherer Ebene oder weiter entferntem Cache, wie z.B. einem Cache zweiter Ebene, der mit einer On-Chip-Schnittstelle 1510 assoziiert ist. Es ist zu beachten, dass sich höhere Ebene oder weiter entfernt auf Cache-Ebenen bezieht, die ansteigen oder sich von der/den Ausführungseinheit(en) weiter entfernen. In einer Ausführungsform ist der Cache höherer Ebene ein Datencache der letzten Ebene - letzter Cache in der Speicherhierarchie auf dem Prozessor 1500 - wie z. B. ein Datencache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht derart eingeschränkt, da er mit einem Befehls-Cache assoziiert sein kann oder ihn umfassen kann. Ein Verfolgungs-Cache - ein Typ von Befehls-Cache - kann stattdessen nach dem Decodierer 1525 gekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hierbei bezieht sich ein Befehl potentiell auf einen Makro-Befehl (d.h. einen allgemeinen Befehl, der durch die Decodierer erkannt wird), der in eine Anzahl von Mikro-Befehlen (Mikro-Operationen) decodieren kann.
  • In der abgebildeten Konfiguration umfasst der Prozessor 1500 außerdem ein On-Chip-Schnittstellenmodul 1510. Historisch ist eine Speichersteuereinheit, die nachstehend ausführlicher beschrieben wird, in einem Rechnersystem außerhalb des Prozessors 1500 aufgenommen worden. In diesem Szenario dient die On-Chip-Schnittstelle 1510 dazu, mit Vorrichtungen außerhalb des Prozessors 1500, wie z.B. dem Systemspeicher 1575, einem Chipsatz (der häufig einen Speichersteuereinheit-Hub umfasst, um sich mit dem Speicher 1575 zu verbinden, und einen I/O-Speicher-Hub, um periphere Vorrichtungen zu verbinden), einem Speichersteuereinheit-Hub, einer Northbridge oder einer anderen integrierten Schaltung zu kommunizieren. Und in diesem Szenario kann der Bus 1505 jede bekannte Verbindung, wie z.B. einen Mehrpunkt-Bus, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z.B. Cache-kohärenten) Bus, eine geschichtete Protokoll-Architektur, einen differentiellen Bus und eine GTL-Bus umfassen.
  • Der Speicher 1575 kann für den Prozessor 1500 dediziert sein oder mit anderen Geräten in einem System gemeinsam verwendet werden. Typische Beispiele für Typen des Speichers 1575 umfassen DRAM, SRAM, einen nichtflüchtigen Speicher (NV-Speicher) und andere an sich bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 1580 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, die mit einem Speicher-Controller-Hub gekoppelt ist, einen Datenspeicher, der mit einem I/O-Steuereinheit-Hub gekoppelt ist, einen drahtlosen Sender/Empfänger, ein Flash-Gerät, eine Audio-Steuereinheit, eine Netz-Steuereinheit oder andere bekannte Vorrichtungen umfassen kann.
  • In letzter Zeit, da mehr Logik und Vorrichtungen in einen einzelnen Chip integriert werden, wie z.B. SOC, kann jedoch jede dieser Vorrichtungen auf dem Prozessor 1500 eingebaut sein. Zum Beispiel befindet sich in einer Ausführungsform ein SpeicherSteuereinheit-Hub auf demselben Gehäuse und/oder Die mit dem Prozessor 1500. Hierbei umfasst ein Abschnitt des Kerns (ein On-Core-Abschnitt) 1510 eine oder mehrere Steuereinheit(en) zum Verbinden mit anderen Vorrichtungen, wie z.B. dem Speicher 1575 oder einer Grafikvorrichtung 1580. Die Konfiguration, die eine Verbindung und Steuereinheiten zum Verbinden mit solchen Vorrichtungen umfasst, wird häufig als On-Core (oder On-Core-Konfiguration) bezeichnet. Als ein Beispiel umfasst die On-Chip-Schnittstelle 1510 eine Ringverbindung für eine On-Chip-Kommunikation und eine serielle Punkt-zu-Punkt-Hochgeschwindigkeitsverbindung eine 1505 für Off-Chip-Kommunikation. In der SOC-Umgebung können jedoch sogar mehr Vorrichtungen, wie z.B. die Netzschnittstelle, Co-Prozessoren, Speicher 1575, Grafikprozessor 1580 und beliebige andere an sich bekannte Rechnervorrichtungen/-schnittstellen auf einem einzelnen Die oder einer einzelnen integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringer Stromaufnahme bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1500 in der Lage, einen Compiler-, Optimierungs- und/oder Übersetzercode 1577 auszuführen, um den Anwendungscode 1576 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Kopplung damit zu bilden. Ein Compiler umfasst häufig ein Programm oder eine Gruppe von Programmen, um Quelltext/- code in Zieltext/-text zu übersetzen. Normalerweise wird das Kompilieren von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchläufen durchgeführt, um Programmiersprachecode hoher Ebene in einen Maschinen- oder Assemblersprachcode niederer Ebene umzuwandeln. Compiler mit einem Durchlauf können jedoch immer noch für die einfache Kompilierung verwendet werden. Ein Compiler kann beliebige an sich bekannte Kompilierungstechniken verwenden und beliebige an sich bekannte Compiler-Operationen ausführen, wie z.B. lexikalische Analyse, Vorverarbeitung, Analyse, semantische Analyse, Code-Generierung, Code-Transformation und Code-Optimierung.
  • Größere Compiler umfassen häufig mehrere Phasen, die meisten dieser Phasen sind jedoch in zwei allgemeinen Phasen aufgenommen: (1) ein Frontend, d.h. allgemein wo syntaktische Verarbeitung, semantische Verarbeitung und einige Transformation/Optimierung stattfinden können, und (2) ein Backend, d.h. allgemein wo Analyse, Transformationen, Optimierungen und Codegenerierung stattfinden. Einige Compiler beziehen sich auf eine Mitte, die die Unschärfe der Abgrenzung zwischen einem Frontend und einem Backend eines Compilers darstellt. Als ein Ergebnis kann der Bezug auf Einfügen, Zuordnung, Generierung oder andere Operationen eines Compilers in jeder/m der vorstehend genannten Phasen oder Durchgängen stattfinden, und ebenso in beliebigen anderen an sich bekannten Phasen oder Durchgängen eines Compilers. Als ein veranschaulichendes Beispiel fügt ein Compiler potentiell Operationen, Aufrufe, Funktionen usw. in eine oder mehrere Phase- der Kompilierung ein, wie z.B. das Einfügen von Aufrufen/Operationen in eine Frontend-Phase der Kompilierung und dann Transformation der Aufrufe/Operationen in Code niedrigerer Ebene während einer Transformationsphase. Es ist zu beachten, dass während dynamischer Kompilierung Compilercode oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen und außerdem den Code für die Ausführung während der Laufzeit optimieren kann. Als ein konkretes veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hierbei kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich einem Compiler übersetzt eine Übersetzungseinheit, wie z.B. eine binäre Übersetzungseinheit, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Deshalb kann sich ein Verweis auf das Ausführen von Code, Anwendungscode, Programmcode oder einer anderer Software-Umgebung auf Folgendes beziehen: Ausführung eines Compilerprogramms (Compilerprogramme), Optimierungscode-Optimierungseinheit oder Übersetzungseinheit entweder dynamisch oder statisch, um Programmcode zu kompilieren, Softwarestrukturen zu erhalten, andere Operationen auszuführen, um Code zu optimieren, oder um Code zu übersetzen; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe umfasst, wie z.B. Anwendungscode, der optimiert/kompiliert worden ist; (3) Ausführung von anderem Programmcode, wie z.B. Bibliotheken, die mit dem Hauptprogrammcode assoziiert sind, um Softwarestrukturen zu erhalten, andere softwarebezogene Operationen auszuführen oder Code zu optimieren; oder (4) eine Kombination davon.
  • Unter Bezugnahme auf 16 ist ein Blockdiagramm einer Ausführungsform eines Mehrkernprozessors dargestellt. Wie in der Ausführungsform von 16 dargestellt, umfasst ein Prozessor 1600 mehrere Domänen. Insbesondere umfasst eine Kerndomäne 1630 mehrere Kerne 1630A-1630N, eine Grafikdomäne 1660 umfasst eine oder mehrere Grafik-Engines, die eine Medien-Engine 1665 aufweisen, und eine Systemagentendomäne 1610.
  • In verschiedenen Ausführungsformen behandelt die Systemagentendomäne 1610 Energiesteuerungsereignisse und Energiemanagement, so dass individuelle Einheiten der Domänen 1630 und 1660 (z.B. Kerne und/oder Grafik-Engines) unabhängig steuerbar sind, um dynamisch in einer geeigneten Leistungsbetriebsart/Ebene (z.B. aktiv, Turbo, Schlaf, Ruhe, Tiefschlaf oder andere Zustände ähnlich dem fortgeschrittenen Konfigurationsleistungsschnittstellenzustand) angesichts der Aktivität (oder Inaktivität), die in der gegebenen Einheit auftritt. Jede der Domänen 1630 und 1660 kann mit unterschiedlicher Spannung und/oder Leistung arbeiten, und darüber hinaus arbeiten die individuellen Einheiten innerhalb der Domänen jeweils mit einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass, obwohl sie mit drei Domänen gezeigt ist, der Schutzumfang der vorliegenden Offenbarung in dieser Hinsicht nicht eingeschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können.
  • Wie gezeigt, umfasst jeder Kern 1630 ferner Caches niederer Ebene zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen. Hierbei sind verschiedene Kerne miteinander und mit einem gemeinsam verwendeten Cache-Speicher, der aus einer Vielzahl von Einheiten oder Scheiben eines Cache der letzten Ebene (LLC) 1640A-1640N gebildet ist, gekoppelt; diese LLC umfassen häufig Speicher- und Cache-Steuereinheitsfunktionalität und werden unter den Kernen und potentiell auch unter der Grafik-Engine gemeinsam verwendet.
  • Wie zu sehen, koppelt eine Ringverbindung 1650 die Kerne miteinander und stellt eine Verbindung zwischen der Kerndomäne 1630, der Grafikdomäne 1660 und der Systemagentenschaltung 1610 über mehrere Ringpunkte 1652A-1652N bereit, jeweils an einer Kopplung zwischen einem Kern und einer LLC-Scheibe. Wie in 16 zu sehen, wird die Verbindung 1650 verwendet, um verschiedene Informationen zu übertragen, die Adressinformationen, Dateninformationen, Bestätigungsinformationen und Snoop-/ungültige Informationen umfassen. Obwohl eine Ringverbindung dargestellt ist, kann jede bekannte On-Die-Verbindung oder -Fabric benutzt werden. Als ein dargestelltes Beispiel können einige der vorstehend diskutierten Fabrics (z.B. eine weitere On-Die-Verbindung, On-Chip-System-Fabric (OSF), eine fortschrittliche Mikrosteuereinheit-Bus-Architekturverbindung (AMBA-Verbindung), ein mehrdimensionales Maschen-Fabric, oder eine andere ans ich bekannte Verbindungsarchitektur) auf ähnliche Weise benutzt werden.
  • Wie ferner dargestellt, umfasst die Systemagentendomäne 1610 die Anzeige-Engine 1612, die dazu dient, Steuerung einer und eine Schnittstelle zu einer assoziierten Anzeigevorrichtung bereitzustellen. Die Systemagentendomäne 1610 kann andere Einheiten umfassen, wie z.B.: eine integrierte Speichersteuereinheit 1620, die eine Schnittstelle mit einem Systemspeicher (z.B. einem DRAM, das mit mehreren DIMMS implementiert ist) bereitstellt; Kohärenzlogik 1622, um Speicherkohärenzoperationen auszuführen. Mehrere Schnittstellen können vorhanden sein, um eine Verbindung zwischen dem Prozessor und anderer Schaltungen zu ermöglichen. Zum Beispiel ist in einer Ausführungsform mindestens eine direkte Medienschnittstellen-Schnittstelle (DMI-Schnittstelle) 1616 bereitgestellt, und ebenso eine oder mehrere PCIe™-Schnittstellen 1614. Die Anzeigemaschine und diese Schnittstellen koppeln typischerweise mit dem Speicher über eine PCIe™-Brücke 1618. Weiterhin können, um die Kommunikationen zwischen anderen Agenten, wie z.B. zusätzlichen Prozessoren oder anderen Schaltungen bereitzustellen, eine oder mehrere andere Schnittstellen bereitgestellt sein.
  • Unter Bezugnahme auf 17 ist ein Blockdiagramm eines zweiten Systems 1700 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie in 17 dargestellt, ist das Multiprozessorsystem 1700 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1770 und einen zweiten Prozessor 1780, die über eine Punkt-zu-Punkt-Verbindung 1750 gekoppelt sind. Jeder der Prozessoren 1770 und 1780 kann eine Version eines Prozessors sein. In einer Ausführungsform sind 1752 und 1754 Bestandteile eines seriellen kohärenten Punkt-zu-Punkt-Verbindungs-Fabric, wie z.B. einer Hochleistungsarchitektur. Folglich können die hier beschriebenen Konzepte innerhalb der UPI-Architektur implementiert werden.
  • Obwohl nur zwei Prozessoren 1770, 1780 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Offenbarung nicht solcherart beschränkt ist. In anderen Ausführungsformen kann ein oder mehrere zusätzliche Prozessoren in einem gegeben Prozessor vorhanden sein.
  • Die Prozessoren 1770 und 1780 sind jeweils mit integrierten Speichersteuereinheiten 1772 und 1782 gezeigt. Der Prozessor 1770 umfasst außerdem als Teil seiner Bus-Steuereinheiten Punkt-zu-Punkt-Schnittstellen (P-P) 1776 und 1778; gleichermaßen umfasst der zweite Prozessor 1780 P-P-Schnittstellen 1786 und 1788. Die Prozessoren 1770, 1780 können Informationen über eine Punkt-zu-Punkt-Schnittstelle 1750 unter Verwendung der P-P-Schnittstellenschaltungen 1778, 1788 austauschen. Wie in 17 dargestellt, koppeln IMCs 1772 und 1782 die Prozessoren an die entsprechenden Speicher, nämlich einen Speicher 1732 und einen Speicher 1734, die lokal den entsprechenden Prozessoren zugeordnete Abschnitte von Hauptspeicher sein können.
  • Die Prozessoren 1770, 1780 tauschen jeweils mit einem Chipsatz 1790 über individuelle P-P-Schnittstellen 1752, 1754 unter Verwendung von Punk-zu-Punkt-Schnittstellenschaltungen 1776, 1794, 1786, 1798 Informationen aus. Der Chipsatz 1790 tauscht auch Informationen mit einer Hochleistungsgrafikschaltung 1738 über eine Schnittstellenschaltung 1792 entlang einer Hochleistungsgrafikverbindung 1739 aus.
  • Ein gemeinsam genutzter Cache (nicht dargestellt) kann in jedem der Prozessoren oder außerhalb beider Prozessoren, doch mit Prozessoren über P-P -Verbindung verbunden, vorgesehen sein, so dass lokale Cache-Informationen von einem oder beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor ein einen Niedrigleistungsmodus versetzt wird.
  • Der Chipsatz 1790 kann an einen ersten Bus 1716 über eine Schnittstelle 1796 gekoppelt werden. In einer Ausführungsform kann der erste Bus 1716 ein PCI-Bus (Peripheral Component Interconnect) sein, oder ein Bus, wie z.B. PCI Express-Bus oder anderer 3GIO-Verbindungsbus sein, obwohl der Umfang der vorliegenden Offenbarung nicht solcherart beschränkt ist.
  • Wie in 17 gezeigt, sind verschiedene I/O-Vorrichtungen 1714 an den ersten Bus 1716 samt einer Busbrücke 1718, die den ersten Bus 1716 an einen zweiten Bus 1720 koppelt, gekoppelt. In einer Ausführungsform umfasst der Bus 1720 einen LPC-Bus (Low Pin Count).Verschiedene Vorrichtungen, einschließlich von zum Beispiel einer Tastatur und/oder Maus 1722, Kommunikationsgeräten 1727 und einer Speichereinheit 1728, wie z.B. einem Plattenlaufwerk- oder einem anderen Massenspeichergerät, das Befehle/Code und Daten 1730 umfasst, können in einer Ausführungsform an den zweiten Bus 1720 gekoppelt sein. Außerdem ist eine Audio-I/O 1724 derart gezeigt, dass sie mit dem zweiten Bus 1720 gekoppelt ist. Es ist zu beachten, dass andere Architekturen möglich sind, wobei die aufgenommenen Komponenten und Verbindungsarchitekturen variieren. Zum Beispiel kann ein System statt der Punk-zu-Punkt-Architektur von 17 einen Multidrop-Bus oder eine andere solche Architektur implementieren.
  • Obwohl die Konzepte hierin in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurden, wird ein Fachmann zahlreiche Modifikationen und Abwandlungen davon erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen und Abwandlungen abdecken, die in dem wahren Erfindungsgedanken und Umfang dieser vorliegenden Offenbarung liegen.
  • Ein Entwurf kann verschiedene Phasen durchlaufen, von der Erstellung über die Simulation bis zur Fertigung. Daten, die ein Design darstellen, können das Design auf viele Arten darstellen. Erstens kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache (HDL) oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann in einigen Stufen des Entwurfsprozesses ein Schaltungsebenenmodell mit Logik- und/oder Transistorgates hergestellt werden. Außerdem erreichen die meisten Designs in einem bestimmten Stadium eine Datenebene, die die physische Anordnung verschiedener Vorrichtungen im Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die das Hardwaremodell repräsentierenden Daten die Daten sein, die die Anwesenheit oder Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung verwendet werden. In einigen Implementierungen können solche Daten in einem Datenbankdateiformat gespeichert werden, wie etwa Graphic Data System II (GDSII), Open Artwork System Interchange Standard (OASIS) oder einem ähnlichen Format.
  • In einigen Implementierungen können softwarebasierte Hardwaremodelle und HDL- und andere Funktionsbeschreibungssprachenobjekte neben anderen Beispielen Registerübertragungssprachen (RTL) umfassen. Solche Objekte können maschinenanalysierbar sein, so dass ein Entwurfswerkzeug das HDL-Objekt (oder das Modell) annehmen kann, das HDL-Objekt auf Attribute der beschriebenen Hardware analysieren kann und aus dem Objekt eine physische Schaltung und/oder ein On-Chip-Layout bestimmen kann. Die Ausgabe des Entwurfswerkzeugs kann verwendet werden, um die physische Vorrichtung herzustellen. Zum Beispiel kann ein Design-Tool Konfigurationen verschiedener Hardware- und/oder Firmware-Elemente aus dem HDL-Objekt ermitteln, wie z.B. Busbreiten, Register (einschließlich Größen und Typen), Speicherblöcke, physische Verbindungspfade, Fabric-Topologien und andere Attribute, die implementiert werden, um das im HDL-Objekt modellierte System zu realisieren. Entwurfswerkzeuge können Werkzeuge zum Bestimmen der Topologie und der Fabric-Konfigurationen von System-on-Chip (SoC) und anderen Hardwarevorrichtung umfassen. In einigen Fällen kann das HDL-Objekt als die Grundlage für die Entwicklung von Modellen und Entwurfsdateien verwendet werden, die durch die Fertigungsausrüstung zur Herstellung der beschriebenen Hardware verwendet werden können. In der Tat kann ein HDL-Objekt selbst als eine Eingabe in die Fertigungssystemsoftware bereitgestellt werden, um die beschriebene Hardware zu veranlassen.
  • In einer beliebigen Repräsentation des Entwurfs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetisches oder optisches Speichermedium wie z.B. eine Platte kann das maschinenlesbare Medium sein, um gesendete Informationen zu speichern, die über optische oder elektrische Wellen moduliert oder auf andere Art erzeugt werden, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder führt, gesendet wird, wird in dem Grad, in dem Kopieren, Puffern oder erneutes Senden des elektrischen Signals ausgeführt wird, eine neue Kopie hergestellt. Daher kann ein Kommunikations-Anbieter oder Netzbetreiber auf einem materiellen, maschinenlesbaren Medium, zumindest temporär einen Gegenstand, wie z.B. Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert, speichern.
  • Ein Modul, wie es hier verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel umfasst ein Modul Hardware, wie z.B. eine Mikrosteuereinheit, die mit einem nichtflüchtigen Medium assoziiert ist, um Code zu speichern, der ausgelegt ist, um durch die Mikrosteuereinheit ausgeführt zu werden. Deshalb bezieht sich der Verweis auf ein Modul in einer Ausführungsform auf die Hardware, die insbesondere ausgelegt ist, um den Code, der auf einem nichtflüchtigen Medium gehalten werden soll, zu erkennen und/oder auszuführen. Außerdem bezieht sich in einer weiteren Ausführungsform das Verwenden eines Moduls auf das nichtflüchtige Medium, das den Code umfasst, der insbesondere ausgelegt ist, um durch die Mikrosteuereinheit ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und, wie gefolgert werden kann, in noch einer weiteren Ausführungsform kann sich der Begriff Modul (in diesem Beispiel) auf die Kombination aus der Mikrosteuereinheit und dem nichtflüchtigen Medium beziehen. Häufig variieren allgemein und überlappen sich potentiell Modulgrenzen, die als getrennt dargestellt sind. Zum Beispiel können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während sie potentiell einige unabhängige Hardware, Software oder Firmware behalten. In einer Ausführungsform umfasst das Verwenden des Begriffs Logik eine Hardware, wie z.B. Transistoren, Register oder andere Hardware, wie z.B. programmierbare Logikvorrichtungen.
  • Das Verwenden der Phrase ,ausgelegt zum/konfiguriert zum' bezieht sich in einer Ausführungsform auf Anordnen, Zusammenstellen, Herstellen, zum Kauf anbieten, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements, um eine designierte oder bestimmte Aufgabe auszuführen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht arbeitet, weiterhin ‚ausgelegt zum‘ Ausführen einer designierten Aufgabe, falls sie/es entworfen, gekoppelt und/oder verbunden ist, um diese designierte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter eine 0 oder eine 1 während des Betriebs bereitstellen. Ein Logikgatter, das ,ausgelegt/konfiguriert dazu' ist, ein Aktivierungssignal für einen Taktgeber bereitzustellen, umfasst jedoch nicht jedes potentielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf eine Weise gekoppelt ist, so dass während des Betriebs die ausgegebene 1 oder 0 dazu dient, den Taktgeber zu aktivieren. Es wird noch einmal darauf hingewiesen, dass das Verwenden des Begriffs „ausgelegt/konfiguriert zum“ keine Operation erfordert, sondern stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements fokussiert, wobei in dem latenten Zustand die Vorrichtung, Hardware und/oder das Element entworfen ist, eine spezielle Aufgabe auszuführen, wenn die Vorrichtung, Hardware und/oder das Element arbeitet.
  • Außerdem bezieht sich das Verwenden der Phrasen „um zu“, „in der Lage“ und „betriebsfähig zum“ in einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, die/das auf eine solche Weise entworfen ist, um das Verwenden der Vorrichtung, Logik, Hardware und/oder des Elements auf eine spezifizierte Weise zu ermöglichen. Es ist zu beachten, dass sich wie vorstehend das Verwenden von um zu, in der Lage oder betriebsfähig zum in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, sondern auf eine solche Weise entworfen ist, dass sie/es das Verwenden einer Vorrichtung auf eine spezifizierte Weise ermöglicht.
  • Ein Wert, wie hier verwendet, umfasst jede bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird auf die Verwendung von logischen Ebenen, Logikwerten oder logischen Werten auch als 1 oder 0 Bezug genommen, was einfach binäre logische Zustände repräsentiert. Zum Beispiel bezieht sich eine 1 auf eine hohe logische Ebene, und 0 bezieht sich auf eine niedrige logische Ebene. In einer Ausführungsform kann eine Speicherzelle, wie z.B. ein Transistor oder eine Flash-Zelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Repräsentationen von Werten in Rechnersystemen wurden jedoch verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein binärer Wert von 1010 und ein hexadezimaler Buchstabe A repräsentiert sein. Deshalb umfasst ein Wert eine beliebige Repräsentation von Informationen, die in einem Rechnersystem gehalten werden kann.
  • Des Weiteren können Zustände durch Werte oder Teile von Werten repräsentiert sein. Als ein Beispiel kann ein erster Wert, wie z.B. eine logische Eins, einen Standard- oder Anfangswert repräsentieren, während ein zweiter Wert, wie z.B. eine logische Null, einen Nicht-Standardwert repräsentieren kann. Außerdem beziehen sich die Begriffe rücksetzen und einstellen in einer Ausführungsform jeweils auf einen Standardwert bzw. auf einen aktualisierten Wert oder Zustand. Zum Beispiel umfasst ein Standardwert potentiell einen hohen logischen Wert, d.h. rückgesetzt, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d.h. eingestellt, umfasst. Es ist zu beachten, dass jede Kombination von Werten benutzt werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorstehend dargelegt wurden, können über Befehle oder Code, die auf einem für eine Maschinen zugänglichen, maschinenlesbaren, für einen Computer zugänglichen oder computerlesbaren Medium gespeichert sind, implementiert sein, die durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugreifbares/lesbares Medium umfasst einen beliebigen Mechanismus, der Informationen in einer Form bereitstellt (d.h. speichert und/oder sendet), die durch eine Maschine wie z.B. einen Rechner oder ein elektronisches System lesbar ist. Zum Beispiel umfasst ein nichtflüchtiges maschinenlesbares Medium Direktzugriffsspeicher (RAM) wie z.B. statisches RAM (SRAM) oder dynamisches RAM (DRAM); ROM; magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtung; akustische Speichervorrichtung; andere Form von Speichervorrichtungen zum Halten von Informationen, die aus flüchtigen (ausgebreiteten) Signalen (z.B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden, usw., die von den nichtflüchtigen Medien zu unterscheiden sind, die Informationen daraus empfangen können.
  • Befehle, die zum Programmieren einer Logik verwendet werden, damit sie Ausführungsformen der Offenbarung ausführt, können in einem Speicher in dem System, wie z.B. DRAM, Cache, Flash-Speicher oder anderen Speichern, gespeichert sein. Außerdem können die Befehle über ein Netzwerk oder mithilfe von anderen computerlesbaren Medien verbreitet werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übermitteln von Informationen in einer von einer Maschine (z.B. einem Computer) lesbaren Form umfassen, ist aber nicht beschränkt auf Disketten, optische Laufwerke, CDs, Nur-Lese-Speicher (CD-ROMs), magnetooptische Disketten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen nichtflüchtigen, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet mithilfe von elektrischen, optischen, akustischen oder anderen Formen von sich ausbreitenden Signalen (z.B. Trägerwellen, Infrarotsignalen, digitalen Signalen usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium eine beliebige Art von nichtflüchtigem, maschinenlesbarem Medium, das zum Speichern oder Übermitteln elektronischer Befehle oder Informationen in einer von einer Maschine (z.B. einem Computer) lesbaren Form geeignet ist.
  • Die nachstehenden Beispiele betreffen Ausführungsformen gemäß dieser Beschreibung. Beispiel 1 ist eine Vorrichtung, die einen Agenten zum Ermöglichen einer Kommunikation in einem von zwei oder mehre Modi umfasst, wobei ein erster der zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine erste Anzahl von Spuren umfassen, und ein zweiter der zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine zweie Anzahl von Spuren umfassen, und die erste Anzahl größer ist als die zweite Anzahl. Die Vorrichtung kann ferner einen Speicher umfassen, der Daten umfasst, um anzuzeigen, welcher der zwei oder Modi für eine bestimmte Verbindungsstrecke gilt, und einen Multiplexer, um Spurnummerierung auf Verbindungsstrecken, die entweder die erste Anzahl von Spuren oder die zweite Anzahl von Spuren umfassen, umzukehren.
  • Beispiel 2 kann den Gegenstand nach Beispiel 1 umfassen, wobei der Multiplexer mehrere Multiplexer mit zwei Eingängen umfasst.
  • Beispiel 3 kann den Gegenstand nach Beispiel 2 umfassen, wobei jede Spur in einer der Verbindungsstrecken mit zwei jeweiligen Multiplexern in den mehreren Multiplexern verbunden ist.
  • Beispiel 4 kann den Gegenstand nach Beispiel 3 umfassen, wobei die mehreren Multiplexer mit zwei Eingängen eine Anzahl von Multiplexern mit zwei Eingängen umfassen, die der ersten Anzahl gleich ist, eine erste Teilmenge der mehreren Multiplexer mit zwei Eingängen im zweiten Modus zu deaktivieren sind und lediglich eine zweite Teilmenge der mehreren Multiplexer, die von der ersten Teilmenge von Multiplexern verschieden ist, im zweiten Modus mit der zweiten Anzahl von Spuren zu verbinden ist.
  • Beispiel 5 kann den Gegenstand nach Beispiel 4 umfassen, wobei Spuren mit jeweiligen Multiplexern in den mehreren Multiplexern gemäß einer Sequenz zu verbinden sind, und die erste Teilmenge von Multiplexern einer Mitte der Sequenz entspricht.
  • Beispiel 6 kann den Gegenstand nach einem der Beispiele 3 bis 5 umfassen, wobei ein erster der zwei Eingänge jedes der mehreren Multiplexer mit einer jeweiligen Spur gemäß einer Nummerierung der Spuren verbunden ist, und ein zweiter der zwei Eingänge jedes der mehreren Multiplexer mit der einer anderen Spur gemäß einer umgekehrten Nummerierung der Spuren verbunden ist.
  • Beispiel 7 kann den Gegenstand nach einem der Beispiele 1 bis 6 umfassen, wobei die erste Anzahl von Spuren 24 Spuren umfasst und die zweite Anzahl von spuren 20 Spuren umfasst.
  • Beispiel 8 kann den Gegenstand nach einem der Beispiele 1 bis 7 umfassen, der ferner eine Protokolllogik umfasst, um eine Menge von Signalen auf jeder Spur der bestimmten Verbindungsstrecke zu senden, wobei jedes Signal in der Menge von Signalen zumindest teilweise auf der jeweiligen Spur basiert, auf der es gesendet werden soll.
  • Beispiel 9 kann den Gegenstand nach einem der Beispiele 1 bis 8 umfassen, wobei ein oder mehrere aus der Menge von Signalen ein Signal umfassen, das auf einer pseudozufälligen Bitsequenz basiert.
  • Beispiel 10 ist eine Vorrichtung, die eine erste Vorrichtung, die einen Empfänger zum Empfangen von Daten auf einer ersten Menge von Spuren von einer oder mehreren anderen Vorrichtungen, einen Sender zum Senden von Daten auf einer zweiten Menge von Spuren an eine oder mehrere andere Vorrichtungen, und eine Zustandsautomatenlogik umfasst. Die Zustandsautomatenlogik kann einen Empfängerdetektionszustand in einem Zustandsautomaten eintreten, eine andere Vorrichtung, die mit der zweiten Menge von Spuren verbunden ist, in dem Empfängerdetektionszustand detektieren, in einen Senderdetektionszustand in dem Zustandsautomaten zumindest teilweise auf der Grundlage von einer Detektion der anderen Vorrichtung auf der zweiten Menge von Spuren übergehen, die erste Menge von Spuren auf Instanzen eines bestimmten Signals in dem Senderdetektionszustand überwachen, in einen bestimmten Niedrigleistungszustand eintreten, wenn keine Instanzen des bestimmten Signals am Empfänger im Laufe einer ersten Zeitdauer empfangen werden, und von dem bestimmten Niedrigleistungszustand zurück in den Senderdetektionszustand nach einer zweiten Zeitdauer übergehen.
  • Beispiel 11 kann den Gegenstand nach Beispiel 10 umfassen, wobei die Zustandsautomatenlogik ferner veranlasst, dass der Sender eine oder mehrere Instanzen des bestimmten Signals auf der ersten Menge von Spuren im Senderdetektionszustand sendet.
  • Beispiel 12 kann den Gegenstand nach einem der Beispiele 10 - 11 umfassen, wobei das bestimmte Signal eine Sequenz umfasst, die eine elektrische geordnete Menge (EOS) umfasst, auf die eine vorgegebene Anzahl von Trainingssequenzen in Reihe folgt.
  • Beispiel 13 kann den Gegenstand nach Beispiel 12 umfassen, ferner umfassen: einen Agenten, der in einem von mindestens zwei Modi arbeitet, wobei die EOS eine EIEOS (Electrical Idle Exit Ordered Set) umfasst, wobei eine erste Version der EIEOS in einem ersten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster eines ersten Byte mit einem Wert 0x00, gefolgt von einem zweiten Byte mit 0xFFFF umfasst, und eine zweite Version der EIEOS in einem zweiten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster von ersten und zweiten Bytes mit dem Wert 0x00 gefolgt von einem dritten und vierten Byte mit OxFFFF umfasst.
  • Beispiel 14 kann den Gegenstand nach einem der Beispiele 12-13 umfassen, wobei die Anzahl von Trainingssequenzen den Senderdetektionszustand anzeigt.
  • Beispiel 15 kann den Gegenstand nach einem der Beispiele 10 bis 14 umfassen, wobei die Zustandsautomatenlogik ferner eine bestimmte Instanz des bestimmten Signals, das durch den Empfänger im Senderdetektionszustand empfangen wird, identifizieren soll, und in einen anderen Zustand zumindest teilweise auf der Grundlage des Empfangs der bestimmen Instanz des bestimmten Signals übergeht.
  • Beispiel 16 kann den Gegenstand nach einem der Beispiele 10 bis 15 umfassen, wobei das Detektieren der anderen Vorrichtung, die mit der zweiten Menge von Spuren verbunden ist, im Empfängerdetektionszustand ein Detektieren einer Pulldown-Spannung auf der zweiten Menge von Spuren umfasst.
  • Beispiel 17 kann den Gegenstand nach Beispiel 16 umfassen, wobei die Pulldown-Spannung von einer Repeater-Vorrichtung, die auf der zweiten Menge von Spuren verbunden ist, generiert wird und Instanzen des bestimmten Signals eine Anwesenheit einer zweiten Vorrichtung, die mit der ersten Vorrichtung über die Repeater-Vorrichtung verbunden ist, anzeigen.
  • Beispiel 18 kann den Gegenstand nach Beispiel 17 umfassen, der ferner die Repeater-Vorrichtung und eine zweite Vorrichtung umfasst.
  • Beispiel 19 kann den Gegenstand nach einem der Beispiele 10 bis 18 umfassen, der ferner eine Aufwachüberwachungslogik umfasst, um Aufwachsignale zu detektieren, wobei die Aufwachüberwachungslogik während des bestimmten Niedrigleistungszustands eingeschaltet bleibt.
  • Beispiel 20 ist ein System, das eine erste Vorrichtung und eine zweite Vorrichtung umfasst, die mit der ersten Vorrichtung über eine Verbindung, die mehrere Spuren umfasst, verbunden ist, wobei die zweite Vorrichtung einen Agenten umfasst, um eine Kommunikation auf der Verbindung in einem von zwei oder mehr Modi zu ermöglichen, wobei Kommunikationen über Verbindungsstrecken mit einer ersten Anzahl von Spuren in einem ersten der zwei oder mehr Modi stattfinden, Kommunikationen über Verbindungstrecken mit einer zweiten Anzahl von Spuren in einem zweiten von den zwei oder mehr Modi stattfinden, und der Agent eine Zustandsautomatenlogik umfasst, um eine andere Vorrichtung, die auf der Verbindung verbunden ist, in einem Empfängerdetektionszustand eines Zustandsautomaten zu detektieren, in einen Senderdetektionszustand in dem Zustandsautomaten zumindest teilweise auf der Grundlage der Detektion der anderen Vorrichtung im Empfängerdetektionszustand zu übergehen, die erste Menge von Spuren auf Instanzen eines bestimmten Signals im Senderdetektionszustand zu überwachen, und vorübergehend den Senderdetektionszustands in einen bestimmten Niedrigleistungszustand zu verlassen, wenn keine Instanzen des bestimmten Signals im Laufe einer bestimmten Zeitdauer im Senderdetektionszustand empfangen werden, wobei die zweite Vorrichtung ferner einen Multiplexer umfasst, um Spuren in jedem von dem ersten oder dem zweiten Modus umzukehren.
  • Beispiel 21 kann den Gegenstand nach Beispiel 20 umfassen, wobei der Agent ferner eine Anpassungslogik umfasst, um an einer Anpassung einer ersten Richtung der Verbindungsstrecke teilzunehmen und an einer Anpassung einer zweiten Richtung der Verbindungsstrecke nach dem Vervollständigen der Anpassung der ersten Richtung der Verbindungsstrecke teilzunehmen.
  • Beispiel 22 kann den Gegenstand nach einem der Beispiele 20 bis 21 umfassen, wobei die erste Anzahl von Spuren 24 Spuren umfasst und die zweite Anzahl von Spuren 20 Spuren umfasst.
  • Beispiel 23 kann den Gegenstand nach einem der Beispiele 20 - 22 umfassen, wobei das bestimmte Signal eine Sequenz umfasst, die eine elektrische geordnete Menge (EOS) umfasst, auf die eine vorgegebene Anzahl von Trainingssequenzen in Reihe folgt.
  • Beispiel 24 kann den Gegenstand nach Beispiel 21 umfassen, wobei die EOS eine EIEOS (Electrical Idle Exit Ordered Set) umfasst, wobei eine erste Version der EIEOS in einem ersten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster eines ersten Byte mit einem Wert 0x00, gefolgt von einem zweiten Byte mit 0xFFFF umfasst, und eine zweite Version der EIEOS in einem zweiten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster von ersten und zweiten Bytes mit dem Wert 0x00, gefolgt von einem dritten und vierten Byte mit OxFFFF umfasst.
  • Beispiel 25 kann den Gegenstand nach einem der Beispiele 20 bis 24 umfassen, wobei die erste Vorrichtung einen Beschleuniger umfasst.
  • Beispiel 26 kann den Gegenstand nach einem der Beispiele 20 bis 24 umfassen, wobei die erste Vorrichtung eine Prozessorvorrichtung umfasst.
  • Beispiel 27 kann den Gegenstand nach einem der Beispiele 20 bis 24 umfassen, wobei die erste Vorrichtung eine Knotensteuerung umfasst.
  • Verweise in der gesamten Beschreibung auf „eine Ausführungsform“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, das/die in Verbindung mit der Ausführungsform beschrieben wird, in zumindest einer Ausführungsform der vorliegenden Offenbarung aufgenommen ist. Daher beziehen sich die Erscheinungen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise auf dieselbe Ausführungsform. Des Weiteren können die bestimmten Merkmale, Strukturen oder Charakteristiken auf eine beliebige geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung wurde die eine ausführliche Beschreibung unter Bezugnahme auf konkrete Ausführungsbeispiele gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Erfindungsgedanken und Schutzumfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher illustrativ als einschränkend zu verstehen. Des Weiteren bezieht sich die vorstehende Verwendung einer Ausführungsform und der sonstigen als Beispiel dienenden Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf unterschiedliche und verschiedene Ausführungsformen sowie möglicherweise 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 15394278 [0001]

Claims (27)

  1. Vorrichtung, umfassend: einen Agenten zum Ermöglichen einer Kommunikation in einem von zwei oder mehr Modi, wobei ein erster der zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine erste Anzahl von Spuren umfassen, und ein zweiter der zwei oder mehr Modi eine Kommunikation über Verbindungsstrecken umfasst, die eine zweie Anzahl von Spuren umfassen, und die erste Anzahl größer ist als die zweite Anzahl, einen Speicher, der Daten umfasst, um anzuzeigen, welcher der zwei oder Modi für eine bestimmte Verbindungsstrecke gilt, und einen Multiplexer, um eine Spurnummerierung auf Verbindungstrecken, die entweder die erste Anzahl von Spuren oder die zweite Anzahl von Spuren umfassen, umzukehren.
  2. Vorrichtung nach Anspruch 1, wobei der Multiplexer mehrere Multiplexer mit zwei Eingängen umfasst.
  3. Vorrichtung nach Anspruch 2, wobei jede Spur in einer der Verbindungsstrecken mit zwei jeweiligen Multiplexern in den mehreren Multiplexern verbunden ist.
  4. Vorrichtung nach Anspruch 3, wobei die mehreren Multiplexer mit zwei Eingängen eine Anzahl von Multiplexern mit zwei Eingängen umfassen, die der ersten Anzahl gleich ist, eine erste Teilmenge der mehreren Multiplexer mit zwei Eingängen im zweiten Modus zu deaktivieren ist und lediglich eine zweite Teilmenge der mehreren Multiplexer, die von der ersten Teilmenge von Multiplexern verschieden ist, im zweiten Modus mit der zweiten Anzahl von Spuren zu verbinden ist.
  5. Vorrichtung nach Anspruch 4, wobei Spuren mit jeweiligen Multiplexern in den mehreren Multiplexern gemäß einer Sequenz zu verbinden sind, und die erste Teilmenge von Multiplexern einer Mitte der Sequenz entspricht.
  6. Vorrichtung nach einem der Ansprüche 3 bis 5, wobei ein erster der zwei Eingänge jedes der mehreren Multiplexer mit einer jeweiligen Spur gemäß einer Nummerierung der Spuren verbunden ist, und ein zweiter der zwei Eingänge jedes der mehreren Multiplexer mit der anderen Spur gemäß einer umgekehrten Nummerierung der Spuren verbunden ist.
  7. Vorrichtung nach einem der Ansprüche 1 bis 6, wobei die erste Anzahl von Spuren 24 Spuren umfasst und die zweite Anzahl von Spuren 20 Spuren umfasst.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, die ferner eine Protokolllogik umfasst, um eine Menge von Signalen auf jeder Spur der bestimmten Verbindungsstrecke zu senden, wobei jedes Signal in der Menge von Signalen zumindest teilweise auf der jeweiligen Spur basiert, auf der es gesendet werden soll.
  9. Vorrichtung nach einem der Ansprüche 1 bis 8, wobei ein oder mehrere aus der Menge von Signalen ein Signal umfassen, das auf einer pseudozufälligen Bitsequenz basiert.
  10. Vorrichtung, umfassend: eine erste Vorrichtung, umfassend: einen Empfänger zum Empfangen von Daten auf einer ersten Menge von Spuren von einer oder mehreren anderen Vorrichtungen, einen Sender zum Senden von Daten auf einer zweiten Menge von Spuren an eine oder mehrere andere Vorrichtungen, und eine Zustandsautomatenlogik zum: Eintreten in einen Empfängerdetektionszustand in einem Zustandsautomaten, Detektieren, im Empfängerdetektionszustand, einer anderen Vorrichtung, die mit der zweiten Menge von Spuren verbunden ist, Übergehen in einen Senderdetektionszustand im Zustandsautomaten zumindest teilweise auf der Grundlage einer Detektion der anderen Vorrichtung auf der zweiten Menge von Spuren, Überwachen, im Senderdetektionszustand, der ersten Menge von Spuren auf Instanzen eines bestimmten Signals, Eintreten in einen bestimmten Niedrigleistungszustand, wenn keine Instanzen des bestimmten Signals am Empfänger im Laufe einer ersten Zeitdauer empfangen werden, und Übergehen von dem bestimmten Niedrigleistungszustand zurück in den Senderdetektionszustand nach einer zweiten Zeitdauer.
  11. Vorrichtung nach Anspruch 10, wobei die Zustandsautomatenlogik ferner veranlasst, dass der Sender eine oder mehrere Instanzen des bestimmten Signals auf der ersten Menge von Spuren im Senderdetektionszustand sendet.
  12. Vorrichtung nach einem der Ansprüche 10 bis 11, wobei das bestimmte Signal eine Sequenz umfasst, die eine elektrische geordnete Menge (EOS) umfasst, auf die eine vordefinierte Anzahl von Trainingssequenzen in Reihe folgt.
  13. Vorrichtung nach Anspruch 12, die ferner einen Agenten umfasst, der in einem von mindestens zwei Modi arbeitet, wobei die EOS eine EIEOS (Electrical Idle Exit Ordered Set) umfasst, wobei eine erste Version der EIEOS in einem ersten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster eines ersten Byte mit einem Wert 0x00, gefolgt von einem zweiten Byte mit 0xFFFF umfasst, und eine zweite Version der EIEOS in einem zweiten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster von ersten und zweiten Bytes mit dem Wert 0x00, gefolgt von einem dritten und vierten Byte mit OxFFFF umfasst.
  14. Vorrichtung nach Anspruch 12, wobei die Anzahl von Trainingssequenzen den Senderdetektionszustand anzeigt.
  15. Vorrichtung nach einem der Ansprüche 10 bis 14, wobei die Zustandsautomatenlogik ferner zu Folgendem ausgelegt ist: Identifizieren einer bestimmten Instanz des bestimmten Signals, die durch den Empfänger im Senderdetektionszustand empfangen wird, und Übergehen in einen anderen Zustand zumindest teilweise auf der Grundlage des Empfangs der bestimmten Instanz des bestimmten Signals.
  16. Vorrichtung nach einem der Ansprüche 10 bis 15, wobei das Detektieren, im Empfängerdetektionszustand, der anderen Vorrichtung, die mit der zweiten Menge von Spuren verbunden ist, ein Detektieren einer Pulldown-Spannung auf der zweiten Menge von Spuren umfasst.
  17. Vorrichtung nach Anspruch 16, wobei die Pulldown-Spannung von einer Repeater-Vorrichtung, die auf der zweiten Menge von Spuren verbunden ist, generiert wird und Instanzen des bestimmten Signals eine Anwesenheit einer zweiten Vorrichtung, die mit der ersten Vorrichtung über die Repeater-Vorrichtung verbunden ist, anzeigen.
  18. Vorrichtung nach Anspruch 17, die ferner die Repeater-Vorrichtung und eine zweite Vorrichtung umfasst.
  19. Vorrichtung nach einem der Ansprüche 10 bis 18, die ferner eine Aufwachüberwachungslogik umfasst, um Aufwachsignale zu detektieren, wobei die Aufwachüberwachungslogik während des bestimmten Niedrigleistungszustands eingeschaltet bleibt.
  20. System, umfassend: eine erste Vorrichtung, eine zweite Vorrichtung, die mit der ersten Vorrichtung durch eine Verbindung verbunden ist, die mehrere Spuren umfasst, wobei die zweite Vorrichtung einen Agenten umfasst, um eine Kommunikation auf der Verbindung in einem von zwei oder mehr Modi zu ermöglichen, wobei Kommunikationen über Verbindungsstrecken mit einer ersten Anzahl von Spuren in einem ersten von den zwei oder mehr Modi stattfinden, Kommunikationen über Verbindungstrecken mit einer zweiten Anzahl von Spuren in einem zweiten von den zwei oder mehr Modi stattfinden, und der Agent umfasst: eine Zustandsautomatenlogik zum: Detektieren einer anderen Vorrichtung, die auf der Verbindung verbunden ist, in einem Empfängerdetektionszustand eines Zustandsautomaten, Übergehen in einen Senderdetektionszustand im Zustandsautomaten zumindest teilweise auf der Grundlage einer Detektion der anderen Vorrichtung im Empfängerdetektionszustand, Überwachen, im Senderdetektionszustand, der ersten Menge von Spuren auf Instanzen eines bestimmten Signals, und vorübergehendes Verlassen der Senderdetektion in einen bestimmten Niedrigleistungszustand, wenn keine Instanzen des bestimmten Signals im Laufe einer bestimmten Zeitdauer im Senderdetektionszustand empfangen werden, wobei: wobei die zweite Vorrichtung ferner einen Multiplexer umfasst, um Spuren in jedem von dem ersten oder dem zweiten Modus umzukehren.
  21. System nach Anspruch 20, wobei der Agent ferner eine Anpassungslogik umfasst, um an einer Anpassung einer ersten Richtung der Verbindungsstrecke teilzunehmen und an einer Anpassung einer zweiten Richtung der Verbindungsstrecke nach dem Vervollständigen der Anpassung der ersten Richtung der Verbindungsstrecke teilzunehmen.
  22. System nach einem der Ansprüche 20 bis 21, wobei die erste Anzahl von Spuren 24 Spuren umfasst und die zweite Anzahl von Spuren 20 Spurmodi umfasst.
  23. System nach einem der Ansprüche 20 bis 22, wobei das bestimmte Signal eine Sequenz umfasst, die eine elektrische geordnete Menge (EOS) umfasst, auf die eine vordefinierte Anzahl von Trainingssequenzen in Reihe folgt.
  24. System nach Anspruch 21, wobei die EOS eine EIEOS (Electrical Idle Exit Ordered Set) umfasst, eine erste Version der EIEOS in einem ersten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster eines ersten Byte mit einem Wert 0x00, gefolgt von einem zweiten Byte mit 0xFFFF umfasst, und eine zweite Version der EIEOS in einem zweiten der zwei Modi zu verwenden ist und ein sich wiederholendes Muster von ersten und zweiten Bytes mit dem Wert 0x00, gefolgt von einem dritten und vierten Byte mit OxFFFF umfasst.
  25. System nach einem der Ansprüche 20 bis 24, wobei die erste Vorrichtung einen Beschleuniger umfasst.
  26. System nach einem der Ansprüche 20 bis 24, wobei die erste Vorrichtung eine Prozessorvorrichtung umfasst.
  27. System nach einem der Ansprüche 20 bis 24, wobei die erste Vorrichtung eine Knotensteuerung umfasst.
DE112017006687.5T 2016-12-29 2017-11-21 Hochgeschwindigkeitsverbindungen mit kanalerweiterung Pending DE112017006687T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/394,278 2016-12-29
US15/394,278 US10931329B2 (en) 2016-12-29 2016-12-29 High speed interconnect with channel extension
PCT/US2017/062674 WO2018125436A1 (en) 2016-12-29 2017-11-21 High speed interconnect with channel extension

Publications (1)

Publication Number Publication Date
DE112017006687T5 true DE112017006687T5 (de) 2019-09-19

Family

ID=62709808

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017006687.5T Pending DE112017006687T5 (de) 2016-12-29 2017-11-21 Hochgeschwindigkeitsverbindungen mit kanalerweiterung

Country Status (3)

Country Link
US (1) US10931329B2 (de)
DE (1) DE112017006687T5 (de)
WO (1) WO2018125436A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190372903A1 (en) * 2018-06-04 2019-12-05 Lightfleet Corporation Priority-based arbitration for parallel multicast routing with self-directed data packets
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US20190095273A1 (en) * 2017-09-27 2019-03-28 Qualcomm Incorporated Parity bits location on i3c multilane bus
US10445265B2 (en) * 2017-10-20 2019-10-15 Cisco Technology, Inc. Method and apparatus for deskewing decentralized data streams
CN109032973B (zh) * 2018-07-09 2020-10-16 芯来科技(武汉)有限公司 Icb总线系统
US11502934B2 (en) * 2018-08-21 2022-11-15 The George Washington Univesity EZ-pass: an energy performance-efficient power-gating router architecture for scalable on-chip interconnect architecture
US10659337B2 (en) * 2018-08-28 2020-05-19 Inphi Corporation Retimer data communication modules
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11169940B2 (en) * 2019-02-20 2021-11-09 Qualcomm Incorporated Trace length on printed circuit board (PCB) based on input/output (I/O) operating speed
US11249837B2 (en) * 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11379398B2 (en) * 2019-06-04 2022-07-05 Microchip Technology Incorporated Virtual ports for connecting core independent peripherals
US20220286399A1 (en) * 2019-09-11 2022-09-08 Intel Corporation Hardware queue scheduling for multi-core computing environments
TWI762828B (zh) * 2019-11-01 2022-05-01 緯穎科技服務股份有限公司 高速序列電腦匯流排的訊號調整方法及其相關電腦系統
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US20210311897A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
TWI748532B (zh) * 2020-06-24 2021-12-01 瑞昱半導體股份有限公司 訊號強化中繼裝置及方法
US11669473B2 (en) * 2020-06-26 2023-06-06 Advanced Micro Devices, Inc. Allreduce enhanced direct memory access functionality
US11403248B2 (en) * 2020-09-14 2022-08-02 Rockwell Automation Technologies, Inc. Bi-directional bus topology
US20230063727A1 (en) * 2021-08-31 2023-03-02 Arm Limited Multi-Bit Scan Chain with Error-Bit Generator
CN114281732B (zh) * 2021-11-26 2023-08-04 苏州浪潮智能科技有限公司 一种upi到pcie的转换方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918026A (en) 1996-12-23 1999-06-29 Compaq Computer Corporation PCI to PCI bridge for transparently completing transactions between agents on opposite sides of the bridge
US8621128B2 (en) 2009-12-04 2013-12-31 St-Ericsson Sa Methods and systems for reliable link startup
US8671234B2 (en) * 2010-05-27 2014-03-11 Stmicroelectronics, Inc. Level shifting cable adaptor and chip system for use with dual-mode multi-media device
TW201238307A (en) 2010-12-20 2012-09-16 Ibm A method and system to connect an external network coprocessor to a network processor packet parser
US8935550B2 (en) * 2011-01-21 2015-01-13 Broadcom Corporation System and method for selectively placing portions of a physical layer into low power mode
US9355058B2 (en) * 2012-10-22 2016-05-31 Intel Corporation High performance interconnect physical layer
US9852096B2 (en) 2014-03-25 2017-12-26 Hewlett Packard Enterprise Development Lp High speed serial link in-band lane fail over for RAS and power management

Also Published As

Publication number Publication date
WO2018125436A1 (en) 2018-07-05
US20180191523A1 (en) 2018-07-05
US10931329B2 (en) 2021-02-23

Similar Documents

Publication Publication Date Title
DE112017006687T5 (de) Hochgeschwindigkeitsverbindungen mit kanalerweiterung
DE112013007751B3 (de) Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112016003233T5 (de) Redriver-verbindungsprüfung
EP3035563B1 (de) Hochleistungsfähiger optischer repeater
DE112016003222T5 (de) Hochleistungsfähiger repeater
EP3800557B1 (de) Aktualisierungen des status von implizierten verzeichnissen
DE112015006944B4 (de) Einrichtung, System und Verfahren zum Ermöglichen einer Kommunikation über eine Verbindung mit einer Vorrichtung außerhalb einer Baugruppe
CN108334463B (zh) 事务性缓冲式存储器中的提早识别
TWI605464B (zh) 交易型緩衝記憶體中之錯誤處置技術
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
US9965370B2 (en) Automated detection of high performance interconnect coupling
DE112015007278B3 (de) Verfahren, System und Vorrichtung mit einer Schnittstelle zum Koppeln von integrierten Schaltungspaketen
DE112015007276B3 (de) Mehrchipbaugruppe mit einer Erweiterung einer Mehrchipbaugruppenverbindung außerhalb der Baugruppe

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE