DE102019129618A1 - Befördern früher hinweisinformationen für zustandsänderungen physikalischer verbindungsstrecken - Google Patents

Befördern früher hinweisinformationen für zustandsänderungen physikalischer verbindungsstrecken Download PDF

Info

Publication number
DE102019129618A1
DE102019129618A1 DE102019129618.8A DE102019129618A DE102019129618A1 DE 102019129618 A1 DE102019129618 A1 DE 102019129618A1 DE 102019129618 A DE102019129618 A DE 102019129618A DE 102019129618 A1 DE102019129618 A1 DE 102019129618A1
Authority
DE
Germany
Prior art keywords
link
event
hint
value
training
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
DE102019129618.8A
Other languages
English (en)
Inventor
Ang Li
Kuan Hua Tan
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 DE102019129618A1 publication Critical patent/DE102019129618A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)

Abstract

Systeme, Verfahren und Vorrichtung können eine Anwendungsschichtlogik, die wenigstens teilweise in Hardware-Schaltungsanordnung implementiert ist; einen ersten Port zum Übertragen von Informationen über eine mehrspurige Verbindungsstrecke, wobei der erste Port einen Protokoll-Stack umfasst; ein Speicherelement, wobei das Speicherelement eine Abbildung zwischen einem Ereignisbezeichnerwert und einem Ereignisbezeichnerträgerwert umfasst, wobei der Ereignisbezeichner ein Ereignis identifiziert, das durch die Anwendungsschichtlogik über die mehrspurige Verbindungsstrecke ausgeführt werden soll, der Ereignisbezeichnerträgerwert auf den Ereignisbezeichner abgebildet ist und die Anwendungsschichtlogik zum Übertragen des Ereignisbezeichnerträgerwerts über die Verbindungsstrecke vor dem Ausführen des Ereignisses dient, betreffen.

Description

  • HINTERGRUND
  • Zusammenschaltungen können verwendet werden, um Kommunikation zwischen unterschiedlichen Vorrichtungen innerhalb eines Systems bereitzustellen, und ein Typ eines Zusammenschaltungsmechanismus wird verwendet. Ein typisches Kommunikationsprotokoll für Kommunikationszusammenschaltungen zwischen Vorrichtungen in einem Computersystem ist ein „Peripheral Component Interconnect Express“- (PCI Express™-(PCle™-)) Kommunikationsprotokoll. Dieses Kommunikationsprotokoll ist ein Beispiel für ein Laden/Speichern-Eingabe/Ausgabe- (I/O-) Zusammenschaltungssystem. Die Kommunikation zwischen den Vorrichtungen wird gemäß diesem Protokoll typischerweise seriell mit sehr hohen Geschwindigkeiten ausgeführt.
  • Vorrichtungen können über eine große Anzahl von Datenverbindungsstrecken verbunden sein, wobei jede Datenverbindungsstrecke mehrere Datenspuren enthält. Vorgelagerte Vorrichtungen und nachgelagerte Vorrichtungen durchlaufen bei der Initialisierung ein Verbindungsstreckentraining, um die Datenübertragung über die verschiedenen Verbindungsstrecken und Spuren zu optimieren.
  • Figurenliste
    • 1 stellt eine Ausführungsform eines Blockdiagramms für ein Berechnungssystem, das einen Mehrkernprozessor enthält, dar.
    • 2 ist ein schematisches Diagramm eines Berechnungssystems, das Vorrichtungen enthält, die hinweisinhaltsadressierbaren Speicher (HCAM) enthalten, in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung.
    • 3 ist ein schematisches Diagramm, das die Verwendung von Hinweisen zum Warnen eines Agenten vor einem bevorstehenden Transaktionsereignis in Übereinstimmung mit Ausführungsform der vorliegenden Offenbarung darstellt.
    • 4 ist ein Swimlane-Diagramm, das einen Prozessablauf für die Verwendung von Hinweisen auf ein bevorstehendes Transaktionsereignis in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 5 ist ein schematisches Diagramm, das ein verbundenes System, das frühe Hinweise für In-Band-Transaktionen implementiert, in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 6 ist ein Swimlane-Diagramm, das einen Prozessablauf für die Verwendung von Hinweisen für Peer-to-Peer-Transaktionen in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 7 ist ein schematisches Diagramm, das die Verwendung von Hinweisen für Out-of-Band-Transaktionen in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 8 ist ein Swimlane-Diagramm, das die Verwendung von Hinweisen für Out-of-Band-Transaktionen in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 9 stellt eine Ausführungsform eines Berechnungssystems, das eine Zusammenschaltungsarchitektur enthält, dar.
    • 10 stellt eine Ausführungsform einer Zusammenschaltungsarchitektur, die einen geschichteten Stack aufweist, dar.
    • 11 stellt eine Ausführungsform einer Anforderung oder eines Pakets, die/das innerhalb einer Zusammenschaltungsarchitektur erzeugt oder empfangen werden soll, dar.
    • 12 stellt eine Ausführungsform eines Sender- und Empfänger-Paars für eine Zusammenschaltungsarchitektur dar.
    • 13 stellt eine weitere Ausführungsform eines Blockdiagramms für ein Berechnungssystem, das einen Prozessor enthält, dar.
    • 14 stellt eine Ausführungsform eines Blocks für ein Berechnungssystem, das mehrere Prozessorsockel enthält, dar.
    • 15 ist ein schematisches Diagramm, das einen Verbindungsstreckentrainings- und Status-Zustandsautomaten zur Wiederherstellung in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt, wie z. B. Beispiele für spezifische Typen von Prozessoren und Systemkonfigurationen, spezifische Hardware-Strukturen, spezifische architektonische und mikroarchitektonische Einzelheiten, spezifische Registerkonfigurationen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessor-Pipeline-Stufen und Operation usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Es wird jedoch für einen Fachmann offensichtlich, dass diese spezifischen Einzelheiten nicht eingesetzt sein müssen, um die vorliegende Offenbarung zu praktizieren. In anderen Fällen sind bekannte Komponenten und Verfahren, wie z. B. spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifische Zusammenschaltungsoperation, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und Materialien, spezifische Compiler-Implementierungen, spezifisches Ausdrücken von Algorithmen in Code, spezifische Abschalt- und Gate-Techniken/Logik und andere spezifische Einzelheiten der Operation des Computersystem nicht im Einzelnen beschrieben worden, um das unnötige Verdecken der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen mit Bezug auf Energieeinsparungen und Energieeffizienz in spezifischen integrierten Schaltungen, wie z. B. in Berechnungsplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren der hier beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewandt werden, die ebenfalls von besserer Energieeffizienz und Energieeinsparung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computer-Systeme oder Ultrabooks™ beschränkt. Und können auch in anderen Vorrichtungen wie z. B. tragbaren Vorrichtungen, Tablets, anderen dünnen Notebooks, Einchipsystem- (SOC-) Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen enthalten Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und tragbare PCs. Eingebettete Anwendungen enthalten typischerweise eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), ein Einchipsystem, Netzcomputer (NetPC), Set-Top-Boxen, Netz-Hubs, Weitbereichsnetz- (WAN-) Switches oder irgendein anderes System, das die nachstehend gelehrten Funktionen und Operationen ausführen kann. Außerdem sind die hier beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physikalische Berechnungsvorrichtungen beschränkt, sondern können sich auch auf Software-Optimierungen zur Energieeinsparung und Effizienz beziehen. Wie in der nachstehenden Beschreibung leicht offensichtlich wird, sind die Ausführungsformen von Verfahren, Einrichtungen und Systemen, die hier beschrieben sind (ob in Bezug auf Hardware, Firmware, Software oder eine Kombination daraus) unerlässlich für eine „grüne Technologie“-Zukunft im Ausgleich mit Leistungsüberlegungen.
  • Wenn sich Berechnungssysteme weiterentwickeln, werden die Komponenten darin komplexer. Als ein Ergebnis nimmt auch die Komplexität der Zusammenschaltungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass Bandbreitenerfordernisse zum optimalen Betrieb der Komponenten erfüllt sind. Darüber hinaus erfordern unterschiedliche Marktsegmente, dass unterschiedliche Aspekte von Zusammenschaltungsarchitekturen zu den Bedürfnissen des Marktes passen. Beispielsweise erfordern Server eine höhere Leistung, während das mobile Ökosystem manchmal fähig ist, Gesamtleistung für Energieeinsparungen zu opfern. Es ist dennoch ein einziger Zweck der meisten Fabrics, die höchste mögliche Leistung mit maximaler Energieeinsparung bereitzustellen. Nachstehend sind eine Anzahl von Zusammenschaltungen diskutiert, die potentiell von Aspekten der hier beschriebenen Offenbarung profitieren würden.
  • Bezug nehmend auf 1 ist eine Ausführungsform eines Blockdiagramms für ein Berechnungssystem, das einen Mehrkernprozessor enthält, abgebildet. Der Prozessor 100 enthält irgendeine/n Prozessor oder Verarbeitungsvorrichtung, wie z. B. einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), eine Netzprozessor, einen tragbaren Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein Einchipsystem (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 100 enthält in einer Ausführungsform wenigstens zwei Kerne - Kern 101 und 102, die asymmetrische Kerne oder symmetrische Kerne (in der dargestellten Ausführungsform) enthalten können. Der Prozessor 100 kann jedoch irgendeine Anzahl von Verarbeitungselementen enthalten, 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 für Hardware-Verarbeitungselemente enthalten Folgendes: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das zum Halten eines Zustands für einen Prozessor, wie z. B. eines Ausführungszustands oder eines architektonischen Zustands, fähig ist. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf irgendeine Hardware, die fähig ist, Code, wie z. B. einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code, unabhängig zugeordnet zu sein. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell irgendeine Anzahl anderer Verarbeitungselemente wie z. B. Kerne oder Hardware-Threads enthält.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet, die zum Aufrechterhalten eines unabhängigen architektonischen Zustands fähig ist, wobei jeder unabhängig aufrechterhaltene architektonische Zustand wenigstens einigen dedizierten Ausführungsbetriebsmitteln zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf irgendeine Logik, die sich auf einer integrierten Schaltung befindet, die zum Aufrechterhalten eines unabhängigen architektonischen Zustands fähig ist, wobei die unabhängig aufrechterhaltenen architektonischen Zustände den Zugriff auf Ausführungsbetriebsmittel gemeinsam verwenden. Wie zu sehen ist, überlappt, wenn spezielle Betriebsmittel gemeinsam verwendet werden und andere für einen architektonischen Zustand dediziert sind, die Grenze zwischen der Terminologie eines Hardware-Threads und eines Kerns. Häufig werden jedoch ein Kern und ein Hardware-Thread durch ein Betriebssystem als individuelle logische Prozessoren gesehen, wobei das Betriebssystem fähig ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physikalische Prozessor 100, wie in 1 dargestellt, enthält zwei Kerne - Kern 101 und 102. Hier sind die Kerne 101 und 102 als symmetrische Kerne betrachtet, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder Logik. In einer weiteren Ausführungsform enthält der Kern 101 einen Out-of-Order-Prozessorkern, während der Kern 102 einen In-Order-Prozessorkern enthält. Die Kerne 101 und 102 können jedoch individuell aus irgendeinem Typ eines Kerns ausgewählt sein, z. B. einem nativen Kern, einem Softwaregemanagten Kern, einem Kern, der ausgelegt ist, eine native Befehlssatz-Architektur (ISA) auszuführen, einem Kern, der ausgelegt ist, eine übersetzte Befehlssatz-Architektur (ISA) auszuführen, einem co-konstruierten Kern oder einem anderen bekannten Kern. In einer heterogenen Kern-Umgebung (d. h. asymmetrische Kerne) kann eine Form der Übersetzung, wie z. B. eine Binär-Übersetzung, benutzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Weiter in der Diskussion sind jedoch die im Kern 101 dargestellten Funktionseinheiten nachstehend genauer beschrieben, da die Einheiten im Kern 102 auf eine ähnliche Weise in der abgebildeten Ausführungsform arbeiten.
  • Wie abgebildet enthält der Kern 101 zwei Hardware-Threads 101a und 101b, die auch als Hardware-Thread-Slots 101a und 101b bezeichnet sein können. Deshalb betrachten Software-Entitäten, wie z. B. ein Betriebssystem, in einer Ausführungsform den Prozessor 100 potentiell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die zum gleichzeitigen Ausführen von vier Software-Threads fähig sind. Wie vorstehend erwähnt ist ein erster Thread den Architekturzustandsregistern 101a zugeordnet, ein zweiter Thread ist den Architekturzustandsregistern 101b zugeordnet, ein dritter Thread kann Architekturzustandsregistern 102a zugeordnet sein, und ein vierter Thread kann Architekturzustandsregistern 102b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (101a, 101b, 102a und 102b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet sein, wie vorstehend beschrieben. Wie dargestellt sind die Architekturzustandsregister 101a in den Architekturzustandsregistern 101b repliziert, so dass es möglich ist, individuelle Architekturzustände/Kontexte für den logischen Prozessor 101a und den logischen Prozessor 101b zu speichern. Im Kern 101 können andere kleinere Betriebsmittel wie z. B. Befehlszeiger und Umbenennungslogik im Zuweiser- und Umbenenner-Block 130 ebenfalls für die Threads 101a und 101b repliziert sein. Einige Betriebsmittel, wie z. B. Umordnungspuffer in der Umordnungs/Rückzugseinheit 135, ILTB 120, Lade/Speicher-Puffer und Warteschlangen können durch Partitionierung gemeinsam verwendet werden. Andere Betriebsmittel wie z. B. interne Allzweckregister, Seiten-Tabellen-basierte Register, Daten-Cache niedriger Ebene und Daten-TLB 115, Ausführungseinheit(en) 140 und Abschnitte der Out-of-Order-Einheit 135 werden potentiell vollständig gemeinsam verwendet.
  • Der Prozessor 100 enthält häufig andere Betriebsmittel, die vollständig gemeinsam verwendet werden, durch Partitionierung gemeinsam verwendet werden oder durch/für Verarbeitungselemente dediziert sein können. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit erläuternden logischen Einheiten/Betriebsmitteln eines Prozessors dargestellt. Es wird darauf hingewiesen, dass ein Prozessor sowohl irgendwelche dieser Funktionseinheiten enthalten oder weglassen kann als auch irgendwelche anderen bekannten Funktionseinheiten, Logik oder Firmware, die nicht abgebildet sind, enthalten kann. Wie dargestellt enthält der Kern 101 einen vereinfachten repräsentativen Out-of-Order- (OOO-) Prozessorkern. In anderen Ausführungsformen kann jedoch ein In-Order-Prozessor benutzt sein. Der OOO-Kern enthält einen Verzweigungszielpuffer 120, um Verzweigungen, die ausgeführt/genommen werden sollen, vorherzusagen, und einen Befehlsübersetzungspuffer (I-TLB) 120, um Adressenübersetzungseinträge für Befehle zu speichern.
  • Der Kern 101 enthält ferner ein Decodierungsmodul 125, das mit der Abholeinheit 120 gekoppelt ist, um abgeholte Elemente zu decodieren. Die Abhollogik enthält in einer Ausführungsform individuelle Sequenzer, die den Thread-Slots 101a bzw. 101b zugeordnet sind. Normalerweise ist der Kern 101 einer ersten ISA zugeordnet, die Befehle, die auf dem Prozessor 100 ausführbar sind, definiert/spezifiziert. Häufig enthalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Abschnitt des Befehls (als ein Opcode bezeichnet), der einen Befehl oder eine Operation, der/die ausgeführt werden soll, referenziert/spezifiziert. Die Decodierlogik 125 enthält eine Schaltungsanordnung, die diese Befehle aus ihren Opcodes erkennt und die decodierten Befehle in der Pipeline zum Verarbeiten wie durch die erste ISA definiert weitergibt. Beispielsweise enthalten, wie nachstehend genauer diskutiert ist, die Decodierer 125 in einer Ausführungsform Logik, die konstruiert oder ausgelegt ist, spezifische Befehle wie z. B. Transaktionsbefehle zu erkennen. Als ein Ergebnis der Erkennung durch die Decodierer 125 ergreift die Architektur oder der Kern 101 spezifische vordefinierte Maßnahmen, um Aufgaben, die dem entsprechenden Befehl zugeordnet sind, auszuführen. Es ist wichtig, darauf hinzuweisen, dass irgendeine/r der Aufgaben, Blöcke, Operationen und Verfahren, die hier beschrieben sind, in Reaktion auf einen einzigen oder mehrere Befehle ausgeführt werden können; einige davon können neue oder alte Befehle sein. Es wird darauf hingewiesen, dass Decodierer 126 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen in einer heterogenen Kern-Umgebung die Decodierer 126 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine unterscheidbare ISA).
  • In einem Beispiel enthält der Zuweiser- und Umbenenner-Block 130 einen Zuweiser zum Reservieren von Betriebsmitteln, wie z. B. Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 101a und 101b sind jedoch potentiell zur Out-of-Order-Ausführung fähig, wobei der Zuweiser- und Umbenenner-Block 130 auch andere Betriebsmittel reserviert, wie z. B. Umordnungspuffer zum Verfolgen von Befehlsergebnissen. Die Einheit 130 kann außerdem eine Registerumbenennungseinheit zum Umbenennen von Programm/Befehls-Referenzregistern in andere Register innerhalb des Prozessors 100 enthalten. Die Umordnungs-/Rückzugseinheit 135 enthält Komponenten wie z. B. die vorstehend erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer zum Unterstützen von Out-of-Order-Ausführung und späterem In-Order-Rückzug von Befehlen, die Out-of-Order ausgeführt werden.
  • Der Block 140 der Scheduler- und Ausführungseinheit(en) enthält in einer Ausführungsform eine Scheduler-Einheit zum Planen von Befehlen/Operation auf Ausführungseinheiten. Beispielsweise wird ein Gleitkommabefehl auf einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationsbefehls-Verarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten enthalten eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprung-Ausführungseinheit, eine Lade-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Daten-Cache niedriger Ebene und Daten-Übersetzungspuffer (D-TLB) 150 sind mit der/den Ausführungseinheit(en) 140 gekoppelt. Der Daten-Cache dient zum Speichern kürzlich verwendeter/verarbeiteter Elemente wie z. B. Daten-Operanden, die potentiell in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern kürzlicher virtuell/linear-zu-physikalisch-Adressenübersetzungen. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um einen physikalischen Speicher in mehrere virtuelle Seiten aufzubrechen.
  • Hier verwenden die Kerne 101 und 102 den Zugriff auf Cache höherer Ebene oder weiter außen, wie z. B. einen Cache zweiter Ebene, der der On-Chip-Schnittstelle 110 zugeordnet ist. Es wird darauf hingewiesen, dass sich höhere Ebene oder weiter außen auf Cache-Ebenen bezieht, die ansteigen oder sich weiter von der/den Ausführungseinheit(en) entfernen. In einer Ausführungsform ist Cache höherer Ebene ein Daten-Cache letzter Ebene - letzter Cache in der Speicherhierarchie auf dem Prozessor 100 - wie z. B. ein Daten-Cache zweiter oder dritter Ebene. Cache höherer Ebene ist jedoch nicht so eingeschränkt, und er kann einem Befehls-Cache zugeordnet sein oder ihn enthalten. Ein Verfolgungs-Cache - ein Typ eines Befehls-Cache - kann stattdessen nach dem Decodierer 125 gekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hier 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) decodiert werden kann.
  • In der abgebildeten Konfiguration enthält der Prozessor 100 außerdem ein On-Chip-Schnittstellenmodul 110. Historisch ist eine Speichersteuereinheit, die nachstehend genauer beschrieben ist, in ein Berechnungssystem außerhalb des Prozessors 100 aufgenommen worden. In diesem Szenario dient die On-Chip-Schnittstelle 11 zum Kommunizieren mit Vorrichtungen außerhalb des Prozessors 100, wie z. B. dem Systemspeicher 175, einem Chipsatz (der häufig einen Speichersteuereinheit-Hub zum Verbinden mit dem Speicher 175 und einen I/O-Steuereinheit-Hub zum Verbinden peripherer Vorrichtungen enthält), einem Speichersteuereinheit-Hub, einer Northbridge und anderer integrierter Schaltung. Und in diesem Szenario kann der Bus 107 irgendeine bekannte Zusammenschaltung enthalten, wie z. B. einen Mehrpunkt-Bus, eine Punkt-zu-Punkt-Zusammenschaltung, eine serielle Zusammenschaltung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine geschichtete Protokollstruktur, einen differentiellen Bus und einen GTL-Bus.
  • Der Speicher 175 kann für den Prozessor 100 dediziert sein oder mit anderen Vorrichtungen in einem System gemeinsam verwendet werden. Allgemeine Beispiele von Typen des Speichers 175 enthalten DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen. Es wird darauf hingewiesen, dass die Vorrichtung 180 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, die mit einem Speichersteuereinheit-Hub gekoppelt ist, Datenspeicher, der mit einem I/O-Steuereinheit-Hub gekoppelt ist, einen drahtlosen Sender/Empfänger, eine Flash-Vorrichtung, eine Audio-Steuereinheit, eine NetzSteuereinheit oder andere bekannte Vorrichtung enthalten kann.
  • In letzter Zeit kann jedoch, da mehr Logik und Vorrichtungen in einen einzigen Baustein wie z. B. ein SOC integriert sind, jede dieser Vorrichtungen auf dem Prozessor 100 integriert sein. Beispielsweise ist in einer Ausführungsform ein Speichersteuereinheit-Hub auf derselben Baugruppe und/oder demselben Baustein wie der Prozessor 100. Hier enthält ein Abschnitt des Kerns (ein On-Core-Abschnitt) 110 eine oder mehrere Steuereinheit(en) zum Bilden einer Schnittstelle mit anderen Vorrichtungen wie z. B. dem Speicher 175 oder einer Grafikvorrichtung 180. Die Konfiguration, die eine Zusammenschaltung und Steuereinheiten zum Bilden von Schnittstellen mit solchen Vorrichtungen enthält, ist häufig als ein On-Core (oder eine Un-Core-Konfiguration) bezeichnet. Als ein Beispiel enthält die On-Chip-Schnittstelle 110 eine Ringzusammenschaltung zur On-Chip-Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindungsstrecke 105 zur Off-Chip-Kommunikation. In der SOC-Umgebung können jedoch sogar noch mehr Vorrichtungen wie z. B. die Netzschnittstelle, Co-Prozessoren, Speicher 175, Grafikprozessor 180 und irgendwelche anderen bekannten Computervorrichtungen/Schnittstellen auf einem einzigen Baustein oder einer einzigen integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 100 zum Ausführen eines Compilers, Optimierung und/oder Übersetzer-Codes 177 fähig, um Anwendungs-Code 176 zu kompilieren, übersetzen und/oder optimieren, um die Einrichtung und Verfahren, die hier beschrieben sind, zu unterstützen oder eine Schnittstelle mit ihnen zu bilden. Ein Compiler enthält häufig ein Programm oder eine Gruppe von Programmen, um Quelltext/Code in Zieltext/Code zu übersetzen. Normalerweise wird die Kompilierung von Programm/Anwendungs-Code mit einem Compiler in mehreren Phasen und Durchläufen vorgenommen, um Code einer Programmierhochsprache in Maschinen-Code niedriger Ebene oder Assemblersprachen-Code zu übersetzen. Compiler mit einem Durchlauf können jetzt zur einfachen Kompilierung immer noch verwendet werden. Ein Compiler kann irgendwelche bekannten Kompilierungstechniken verwenden und irgendwelche bekannten Kompilierungsoperationen ausführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Analysieren, semantische Analyse, Code-Erzeugung, Code-Transformation und Code-Optimierung.
  • Größere Compiler enthalten häufig mehrere Phasen, diese Phasen sind jedoch am häufigsten in nur zwei allgemeinen Phasen enthalten: (1) ein Frontend, d. h., wo im Allgemeinen syntaktische Verarbeitung, semantische Verarbeitung und einige Transformation/Optimierung stattfinden können, und (2) ein Backend, d. h., wo im Allgemeinen Analyse, Transformationen, Optimierungen und Code-Erzeugung stattfinden. Einige Compiler beziehen sich auf eine Mitte, die das Verwischen des Entwurfs zwischen einem Frontend und einem Backend eines Compilers darstellt. Als ein Ergebnis kann eine Bezugnahme auf Einfügung, Zuordnung, Erzeugung oder eine andere Operation eines Compilers sowohl in irgendwelchen der vorstehend genannten Phasen oder Durchgängen als auch in irgendwelchen anderen bekannten Phasen oder Durchgängen eines Compilers stattfinden. Als ein erläuterndes Beispiel fügt ein Compiler potentiell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung ein, wie z. B. die Einfügung von Aufrufen/Operationen in einer Frontend-Phase der Kompilierung und dann Transformation der Aufrufe/Operationen in Code tieferer Ebene während einer Transformationsphase. Es wird darauf hingewiesen, dass während einer dynamischen Kompilierung Compiler-Code oder Code für dynamische Optimierungen sowohl solche Operationen/Aufrufe einfügen als auch den Code zur Ausführung während der Laufzeit optimieren können. Als ein spezifisches anschauliches Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den Code für dynamische Optimierung, den Binärcode oder eine Kombination daraus enthalten.
  • Ähnlich einem Compiler übersetzt ein Übersetzer, wie z. B. ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Deshalb kann sich eine Bezugnahme auf die Ausführung von Code, Anwendungscode, Programmcode oder eine andere Software-Umgebung beziehen auf: (1) entweder dynamische oder statische Ausführung eines Compiler-Programms/Programmen, Optimierungscode-Optimierers oder Übersetzers, um Programmcode zu kompilieren, Software-Strukturen beizubehalten, um andere Operationen auszuführen, um Code zu optimieren oder Code zu übersetzen; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe enthält, wie z. B. Anwendungscode, der optimiert/kompiliert worden ist; (3) Ausführung von anderem Programmcode, wie z. B. Bibliotheken, die dem Hauptprogrammcode zugeordnet sind, um Software-Strukturen beizubehalten, um andere zur Software gehörigen Operationen auszuführen oder um Code zu optimieren; oder (4) eine Kombination daraus.
  • In einem Berechnungssystem, das durch eine PCIe-Hierarchie zusammengeschaltet ist, hängt der Großteil der Kommunikation zwischen Vorrichtungen von der Bereitschaft der PCIe-Transaktionsschicht ab, Transaktionsschichtpakete (TLPs) durch die Hierarchie zu leiten. Einerseits können die Anwendungsschicht-Agenten (oberhalb des PCIe-Stacks) die meisten TLPs erzeugen und verbrauchen. Andererseits werden jedoch, wenn eine PCIe-Verbindungsstrecke in einem energiesparenden Verbindungsstreckenzustand ist (beispielsweise L1-Zustand oder L1-Subzustände), selbst wenn ein spezieller Anwendungsschicht-Agent beabsichtigt, Informationen über die Verbindungsstrecke zu befördern, die Informationen (die durch Transaktionsschichtpakete (TLPs) geführt werden) nicht befördert, bis die Verbindungsstrecke in den aktiven LO-Zustand übergeht.
  • Deshalb entstehen zwei Probleme innerhalb des Systems:
  • 1) Abhängig von der Transaktionsschicht des PCIe-Stacks, der TLP(s) verwendet, ist es hinsichtlich der Latenz für das Berechnungssystem ineffizient, dass der Agent, der die Aktivität initiiert, auf den Aufbau des LO-Zustands warten muss, um fähig zu sein, einige sinnvolle Informationen, die den Zweck der Aktivität betreffen, weiterzugeben;
  • 2) Während der Zeitspanne, in der die Verbindungsstrecke zu L0 aufwacht, wissen die anderen Anwendungsschicht-Agenten in anderen Vorrichtungen, die die Verbindungsstreckenaufweckmeldung empfangen (üblicherweise über eine geordnete TS1/TS2-Menge), a priori nicht, was die anstehende Aufgabe ist. Geordnete TS1- und TS2-Mengen sind Trainingssequenzen, die zum Initialisieren einer Bit-Anpassung, Symbol-Anpassung und zum Austauschen von Bitübertragungsschichtparametern verwendet werden. Die LO-Zustände sind ein normaler Betriebszustand, in dem Daten und Steuerpakete gesendet und empfangen werden können. Der L1-Zustand (und verschiedene Subzustände) sind allgemein als Energiesparzustände vorgesehen, in denen die PCIe-Verbindungsstrecke im elektrischen Leerlauf (EI) aus Sicht der Vorrichtung sowohl auf der TX- als auch der RX-Seite ist. Das Anregen von L1 auf L0 beinhaltet TS1/TS2-Senden und -Empfang (was Verbindungsstreckentraining enthält). Die PCIe-Spezifikation stellt mehr Einzelheiten über das Übergehen von L1-LO-Zuständen (und umgekehrt) bereit.
  • Aufgrund des Fehlens von Hinweisen auf Systemebene müssen sich diese Agenten darauf vorbereiten, alle möglichen Aufgaben zu handhaben, die bei Eintreten in den PCIe-LO-Zustand empfangen werden könnten, um mit den Latenz/Leistungsanforderungen auf Systemebene konform zu sein. Diese Unsicherheit führt zu unnötiger Aktivität innerhalb (eines) speziellen/spezieller Agenten oder Funktion(en) wie z. B. Einschalten von Speichermedienbetriebsmitteln, Aufwecken anderer Vorrichtungen oder Initiieren zusätzlicher Systemanfragen.
  • Als ein Ergebnis muss das gesamte System zusätzliche Leistung oder Latenz-Budget für Anwendungsfälle zuweisen, die das System schneller und/oder energieeffizienter hätte handhaben können, gäbe es eine Möglichkeit, Systemhinweise vor der PCIe-Verbindungsstreckenbereitschaft zu transportieren.
  • Ein einfaches Beispiel ist: Falls ein Systemabbild (SI) auf eine spezifische virtuelle Funktion N in einer leicht schlafenden SSD (Verbindungsstrecke in L1) zugreifen muss, muss während der Zeitspanne, in der die Verbindungsstrecke zu L0 aufwacht, die SSD alle ihre Funktionen für Leistungsanforderung aufwecken aufgrund des Fehlens des Wissens, dass nur Betriebsmittel, die der Funktion N zugeordnet sind, benötigt werden und der gesamte Rest (wie nicht zugehörige Medien-Bausteine) immer noch in der leicht schlafenden Betriebsart hätten gehalten werden können, um mehr Energie einzusparen.
  • Diese Offenbarung beschreibt eine Architektur zum Aufbrechen der Abhängigkeit von der Bereitschaft der „PCIe-Transaktionsschicht“, Systemhinweise zwischen Vorrichtungen zu transportieren. Mit dieser Architektur können verschiedene In-Band- und Out-of-Band-Verfahren eingesetzt werden, um die Systemeffizienz hinsichtlich Latenz, Energie und Leistungsfähigkeit zu verbessern.
  • Die Systeme, Vorrichtungen und Techniken, die hier beschrieben sind, stellen verschiedene In-Band- (beispielsweise N_FTS) und Out-of-Band-Mechanismen bereit, um Informationen zu transportieren, die durch Anwendungsschicht-Funktionen/Entitäten während der PCIe-Verbindungsstreckentrainingszeitspanne (die unverzichtbar ist, um die PCIe-Verbindungsstrecke in den aktiven LO-Verbindungsstreckenzustand zu bringen) verstanden werden. Nach dem Empfangen der frühen Hinweisinformationen während des Verbindungsstreckentrainings können diese Anwendungsschichtfunktions-Entitäten, ohne dass sie auf die Bereitschaft der PCIe-Transaktionsschicht warten müssen, ihre präzisen Vorbereitungen der notwendigen Aktionen starten, wie z. B. einen spezifischen Subblockenergiezustandsübergang oder die Initiierung notwendiger Systemanfragen.
  • Die Systeme, Vorrichtungen und Techniken, die hier beschrieben sind, stellen verschiedene Optionen zum Kommunizieren früher Hinweise zwischen Anwendungsschicht-Entitäten, die durch eine PCIe-Verbindungsstrecke verbunden sind, um anstehende Aufgaben sowohl mit geringerer Latenz als auch mit mehr Leistungseffizienz zu verarbeiten, bereit. Die Systeme, Vorrichtungen und Techniken, die hier beschrieben sind, können basierend auf den frühen Hinweisen verhindern, dass spezielle Vorrichtungen Funktionsblöcke unnötig aufwecken (beispielsweise NAND/3D-Xpoint-Medien-Bausteine), die für die anstehenden Aufgaben nicht verwendet werden. Mit den Systemen, Vorrichtungen und Techniken, die hier beschrieben sind, müssen nur die entsprechenden Anwendungsschichten des zugehörigen SoC und Vorrichtungen den Hinweis verstehen, und es kann mit der PCIe-Spezifikation konform sein.
  • Aspekte der Ausführungsformen richten sich auf das Erzeugen oder Verwenden eines oder mehrerer Kanäle zwischen Anwendungsschicht-Agenten von Vorrichtungen, die über eine Verbindungsstrecke (wie z. B. eine PCIe-Verbindungsstrecke) miteinander gekoppelt sind, zum Senden von Hinweisen, die früh zwischen Komponenten während der Zeitspanne, während der die Verbindungsstrecke, die zur TLP-Übertragung benötigt wird, zu L0 aufwacht, weitergegeben werden können. Es gibt verschiedene Arten, Kanäle zu erzeugen, und die Kanäle können als In-Band-Mechanismus oder Out-of-Band-Mechanismus klassifiziert sein. Die Vorrichtungen können eine Hinweis-Engine (HTE) enthalten, die einen hinweisinhaltsadressierbaren Speicher (HCAM) enthalten oder auf ihn zugreifen kann.
  • 2 ist ein schematisches Diagramm eines Berechnungssystems 20, das Vorrichtungen enthält, die hinweisinhaltsadressierbaren Speicher (HCAM) enthalten, in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. Das System 200 enthält ein System-Betriebssystem (OS)/Treiber 202. Das System-OS/die Treiber 202 kann/können systemweite Betriebsfunktionalität und Befehle wie vorstehend beschrieben bereitstellen. Das System 200 kann außerdem eine erste Vorrichtung1 204 enthalten, die mit einer zweiten Vorrichtung2 206 durch eine Verbindungsstrecke 208 gekoppelt ist. Die Vorrichtung1 204 kann eine vorgelagerte Vorrichtung sein, wie z. B. ein Host-Verarbeitungssystem, das einen oder mehrere Verarbeitungskerne, Speicher und außerdem andere Komponenten enthalten kann. Die Vorrichtung2 206 kann eine nachgelagerte Vorrichtung sein, wie z. B. ein Beschleuniger oder eine Peripherievorrichtung. Die Verbindungsstrecke 208 kann eine mehrspurige Verbindungsstrecke sein, z. B. eine auf dem PCIe-Protokoll basierende Verbindungsstrecke. Die Vorrichtung1 204 und die Vorrichtung2 206 können auch mit einem Zusammenschaltungsprotokoll, wie z. B. dem auf dem PCIe-Protokoll basierenden, konform sein.
  • Die Vorrichtung1 204 kann den Agent1_1 212 und den Agent2_1 enthalten. Ähnlich enthält die Vorrichtung2 den Agent1_2 226 und den Agent2_2 228. Die Agenten können für das Triggern verschiedener Ereignisse zuständig sein, wie z. B. Datenübertragung über die Verbindungsstrecke 208 zwischen der Vorrichtung1 und der Vorrichtung2. Die Vorrichtung 1 204 kann außerdem einen Vorrichtung 1 TX-hinweisinhaltsadressierbaren Speicher (HCAM) 216 und einen Vorrichtung 1 RX-HCAM 218 enthalten. Ähnlich kann die Vorrichtung 2 auch einen Vorrichtung 2 RX-HCAM 232 und einen Vorrichtung 2 TX-HCAM 234 enthalten. In den 5 und 7 ist der HCAM in einer Hinweis-Engine (HTE) verwirklicht.
  • In 2 weist jede der PCIe-Vorrichtungen Vorrichtung 1 204 und Vorrichtung 2 206 einen HCAM für den TX-Pfad und einen weiteren HCAM für den RX-Pfad auf, die in der Anwendungsschicht 210 bzw. 230 implementiert sind. Jeder Eintrag des TX-HCAM wird verwendet, um einen Hinweis (Hinweisgegenstand: z. B. DEV1_Hint_M) auf einen spezifischen N_FTS-Wert (Hinweisträger: z. B. DEV1_N_FTS_M) abzubilden, was für TS1-Ordnungsmengen während des PCIe-Verbindungsstreckentrainings und den Recovery.RcvrLock-Subzustand des Status-Zustandsautomaten (LTSSM) während des Verbindungsstreckentrainings zum Eintreten in den LO-Zustand verwendet werden soll (siehe 15). Der RX-HCAM wird verwendet, um den Hinweis basierend auf dem empfangenen N_FTS-Wert in den empfangenen TS1-Ordnungsmengen zu extrahieren. Die schnelle Trainingssequenz (FTS) ist der Mechanismus, der für Bit- und Symbolsperre beim Übergang von einem Bereitschaftszustand (z. B. LOs) zu einem normalen Betriebszustand (z. B. L0) verwendet wird. Die FTS wird durch den Empfänger verwendet, um das Verlassen des elektrischen Leerlaufs zu detektieren und die Bit/Symbol-Empfangsschaltungsanordnung des Empfängers an die eingehenden Daten anzupassen. Die PCIe-N_FTS-Definition ist nachstehend in Tabelle 2 bereitgestellt.
  • Die Vorrichtung 1 204 und die Vorrichtung 2 206 können jeweils auch einen PCIe-Protokollstack 250 bzw. 252 enthalten. Der PCIe-Protokollstack 250 kann eine PCIe-Transaktionsschicht 220, eine PCIe-Sicherungsschicht 222 und eine PCIe-Bitübertragungsschicht 224 enthalten. Der PCIe-Protokollstack 252 kann ähnlich eine PCIe-Transaktionsschicht 236, eine PCIe-Sicherungsschicht 238 und eine PCIe-Bitübertragungsschicht 240 enthalten. Die verschiedenen Funktionalitäten jeder Schicht des Protokollstacks sind dem 10 begleitenden Text und an anderer Stelle in dieser Offenbarung genauer beschrieben.
  • Obwohl die Diskussion hier und die entsprechenden Figuren in Bezug auf einen PCIe-Stack vorgenommen sind, können die gleichen Konzepte auf andere Zusammenschaltungs-Stacks angewandt werden.
  • 3 ist ein schematisches Diagramm 300, das die Verwendung von Hinweisen zum Warnen eines Agenten vor einem bevorstehenden Transaktionsereignis in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. 4 ist ein Swimlane-Diagramm, das einen Prozessablauf für die Verwendung von Hinweisen auf ein bevorstehendes Transaktionsereignis in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. Die 3 und 4 sind gemeinsam beschrieben, um die Übertragungsabläufe in dem Kontext einer Beispielsystemstruktur darzustellen.
  • (1) Beim Systemhochlauf kann das System-OS/der Treiber 202 die TX/RX-HCAMs 216, 218, 232 und 234 konfigurieren, um die Abbildung von Hinweiselementen mit Trägern aufzubauen (in diesem Fall werden die Hinweiselemente auf DEV1_N_FTS abgebildet). Diese initiale Konfiguration ist optional, da die HCAMs nicht konfigurierbar sein müssen, falls keine Notwendigkeit vorhanden ist, die Hinweis-und-N_FTS-Abbildung dynamisch zu ändern. Das heißt, die HCAMs können vorkonfiguriert sein und statisch verwendet werden.
  • (2) Aus einem oder mehreren Gründen (wie z. B. dass eine Vorrichtung in einen aktiven Leistungsmanagementzustand (ASPM) eintritt) ist die Verbindungsstrecke 208 in einem L1-Zustand festgelegt. ASPM ist ein autonomer Hardware-basierter aktiver Zustandsmechanismus, der Energieeinsparungen selbst dann ermöglicht, wenn die verbundenen Komponenten in dem DO-Zustand sind. Nach einer Zeitspanne der Verbindungsstrecken-Leerlaufzeit kann ein ASPM-Bitübertragungsschicht-Protokoll die Verbindungsstrecke im Leerlauf in einen Niederleistungs-Zustand versetzen. Sobald sie in dem Niederleistungs-Zustand ist, werden Übergänge in den vollständig betriebsfähigen LO-Zustand durch Verkehr, der auf einer Seite der Verbindungsstrecke auftritt, einschließlich TS1/TS2 OS, getriggert.
  • (3) Als ein Beispiel entscheidet der Agent1_1 212, einige Daten zu dem Agent1_2 226 weiterzugeben. Basierend auf dem Transaktionstyp (oder Triggerereignis) wird ein entsprechender Hinweis (z. B. DEV1_Hint_1), der dem Ereignis zugeordnet ist, identifiziert und verwendet, um die Abbildung auf einen entsprechenden Hinweisträger (z. B. DEV1_N_FTS_1) zu suchen und zu finden. Der DEV1_Hint_1 könnte „Vorrichtung2-Agent1_2 zum Empfangen von Daten vorbereiten“ bedeuten.
  • (4) Der Träger wird über die Verbindungsstrecke 208 über den PCIe-Stack 250 gesendet. Verbindungsstreckentraining wird durch die Vorrichtungl-PCIe-Bitübertragungsschicht 224 unter Verwendung von DEV1_N_FTS1 während der TS1-Ordnungsmengen-Sendephase (LTSSM Recovery.RcvrLock-Substatus) initiiert, um den frühen Hinweis weiterzugeben.
  • 5) Die Bitübertragungsschicht 240 des Vorrichtung2-PCIe-Stack 252 empfängt den DEV1_N_FTS_1-Hinweisträger aus der empfangenen TS1 OS. Der Hinweisträger kann decodiert werden, um den entsprechenden Hinweis (DEV1_Hint_1) von RX HCAM 232 abzurufen.
  • 6) Die Vorrichtung2 206 wendet einen notwendigen Leistungsstrategiewechsel oder zugehöriges Datenpfad-Aufwecken an, um den Agent1_2 226 (und zugeordnete Betriebsmittel) aktiv vorzubereiten, um Daten von Agent1_1 212 zu empfangen.
  • Zwischen (4) und (6) oder nach (6) kann der Verbindungsstrecken-LO-Zustand basierend auf dem durch die Übertragung der TS1 OS initiierten Verbindungsstreckentraining erreicht werden.
  • (7) Agent1_1 212 kann Daten über die Verbindungsstrecke 208 (im L0-Zustand) zu Agent1_2 von Vorrichtung2 206 senden (z. B. über Transaktionsschichtpakete (TLPs)).
  • (8) Nachdem (obwohl nicht notwendigerweise unmittelbar nachdem) Daten korrekt weitergegeben und durch den Agent1_2 226 verarbeitet worden sind, kann die Verbindungsstrecke 208 wieder zu L1 zurückkehren, um Energie zu sparen.
  • Ein Grund für die Verwendung von DEV1_N_FTS_1 für die TS1 OS-Phase im Recovery.RcvrLock-Subzustand ist, dass während der TS2 OS-Sendephase (Recovery.RcvrCfg-Subzustand) die Vorrichtung1 204 umschalten kann, um den Standard-N_FTS-Wert zu senden, sodass ihre N_FTS-Anforderung für LOs-Merkmal nicht beeinträchtigt ist.
  • Während des ganzen Prozesses kann der Agent2_2 228 in einem Niederleistungs-Zustand gehalten werden. Ohne den Mechanismus kann es aufgrund des Fehlens des frühen Hinweises notwendig sein, dass Agent2_2 während des Verbindungsstreckentrainings aktiviert werden muss, um mögliche Aufgaben rechtzeitig zu verarbeiten. Der frühe Hinweis ermöglicht dadurch, dass der Agent2_2 (und andere nicht verwendete Agenten) in Niederleistungs-Betriebsarten gehalten werden, zusätzliche Energieeinsparung.
  • Wie in den 2 und 3 gezeigt ist, können andere ähnliche Mengen von Hinweisen definiert und implementiert werden, wie z. B. diejenigen in TX-HCAM 234 für Vorrichtung2, um frühe Hinweise während des Recovery.RcvrLock-Subzustands weiterzugeben. Die In-Band-Hinweisstruktur muss jedoch zwischen Vorrichtungen nicht symmetrisch sein. Beispielsweise sollte ein Endpunkt der Empfänger der Hinweise sein, und ein Host-Wurzel-Komplex (Host-RC) könnte der Sender der Hinweise innerhalb des Systems sein.
  • Falls die Vorrichtung2 206 eine Bridge-Funktion aufweist, kann der Prozess in einigen Anwendungsfällen wie z. B. den nachstehend beschriebenen Peer-to-Peer-Szenarios effizienter sein.
  • Falls einer speziellen Aktivität kein Hinweis zugeordnet ist, kann die Vorrichtung1 204 wählen, den „N_FTS_default“-Wert zum Senden der TS1 OS zu verwenden. Das ist ebenfalls mit der PCIe-Spezifikation konform. Der N_FTS_Default-Wert kann immer noch eine Änderung des Leistungszustands an dem vorgesehenen Empfangs-Agenten triggern, während er auch das Verbindungsstreckentraining von L1 -> L0 ohne Aufwecken anderer Agenten triggert.
  • In einem weiteren Beispiel kann eine Vorrichtung in dem ASPM L1-Zustand (Verbindungsstrecke ist im L1-Zustand) festgelegt werden, und der Host entscheidet, die Vorrichtung in D3hot zu versetzen, um mehr Systemleistung einzusparen. Falls der Host und die Vorrichtung einen Mechanismus für frühen Hinweis implementieren, kann, wenn die Verbindungsstrecke von L1 auf L0 durch TS1/TS2 OS aufgeweckt wird, der Host einen spezifischen N_FTS-Wert senden, um den Hinweis zu der Vorrichtung zu befördern, dass der „D3hot-Zustand konfiguriert wird“, bevor der Host CfgWr zu dem Leistungsmanagement- und Steuerstatus- (PMCS-) Register ausgeben kann, was stattfindet, nachdem die Verbindungsstrecke in dem LO-Zustand ist. Die Vorrichtung muss deshalb nicht mehr Anwendungsschicht-Entitäten beim Sehen von Verbindungsstreckentraining aufwecken und kann D3hot-bezogene Aufgaben früher als nach dem Empfangen des CfgWr TLP starten. Andernfalls muss normalerweise, ohne den offenbarten Mechanismus für frühe Hinweise, eine Vorrichtung, die ASPM L1 verlässt, alle ihre Funktionsmerkmale vollständig aktivieren, um alle möglichen Anforderungen, die sie von dem Host empfängt, zu bedienen.
  • 5 ist ein schematisches Diagramm, das ein verbundenes System 500, das frühe Hinweise für In-Band-Transaktionen implementiert, in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. Das System 500 kann einen Host 502 enthalten, der einen Wurzelkomplex oder einen anderen Schaltkomplex enthalten kann. Der Host 502 kann mit einem PCIe-Switch 504 über eine Verbindungsstrecke 506 durch einen vorgeschalteten Port (USP) 508 gekoppelt sein. Der PCIe-Switch 504 kann eine Implementierung einer HTE 518 enthalten. Die HTE 518 kann einen TX-HCAM und RX-HCAM enthalten, wie vorstehend in den 2-3 beschrieben ist.
  • Der PCIe-Switch 504 kann außerdem mehrere nachgelagerte Ports enthalten, wie z. B. DSP1 510, DSP2, 512, DSP3 514 ... und DSPn 516. Der PCIe-Switch 504 kann Vorrichtungen mit dem Host 502 oder mit anderen Vorrichtungen verbinden. Beispielsweise kann die Vorrichtung1 520 mit dem PCIe-Switch 504 über die Verbindungsstrecke 530 durch den DSP1 510 verbunden sein. Beispielsweise kann die Vorrichtung2 522 mit dem PCIe-Switch 504 über die Verbindungsstrecke 532 durch den DSP1 512 verbunden sein. Beispielsweise kann die Vorrichtung3 524 mit dem PCIe-Switch 504 über die Verbindungsstrecke 534 durch den DSP1 514 verbunden sein. Beispielsweise kann die Vorrichtung_n 526 mit dem PCIe-Switch 504 über die Verbindungsstrecke 536 durch den DSP1 516 verbunden sein. Jede Vorrichtung kann eine HTE enthalten, die einen TX-HCAM und/oder einen RX-HCAM enthalten kann.
  • 6 ist ein Swimlane-Diagramm 600, das einen Prozessablauf für die Verwendung von Hinweisen für Peer-to-Peer-Transaktionen in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. Das Swimlane-Diagramm 600 kann mit dem entsprechenden System 500 betrachtet werden. Das Swimlane-Diagramm stellt einen Beispielablauf zum Weitergeben von Hinweisen in einem PCIe-Switch für Peer-to-Peer-Gruppenrufdatentransport dar. Der PCIe-Switch 504 ist für Peer-to-Peer-Übertragungen konfiguriert, und die Vorrichtung2 522 und die Vorrichtung3 524 enthalten jeweils eine HTE, wie vorstehend beschrieben.
  • Eingangs, und ähnlich zu dem in 4 gezeigten Diagramm, kann das System-OS optional den HCAM konfigurieren. Wenn die gesamte Hierarchie lang genug im Leerlauf ist, wird jede Verbindungsstrecke in ASPM L1 festgelegt (vorausgesetzt, dass ASPM L1 durch das System aktiviert ist). Nachfolgend kann, falls ein Peer-to-Peer-Verkehr durch die Vorrichtung2 zur Vorrichtung3 initiiert werden soll, dann dem folgenden Prozessablauf gefolgt werden und dann den Nutzen des vorgeschlagenen In-Band-Mechanismus darstellen:
  • (1) Ein Triggerereignis (wie z. B. eine Datentransaktion) in Vorrichtung2 kann bewirken, dass die Vorrichtung2 TS1 OS in ihrem Recovery.RcvrLock-LTSSM-Subzustand sendet, wobei das N_FTS-Symbol durch einen vordefinierten Hinweiswert überladen ist. Der Hinweiswert kann den Switch 504 benachrichtigen, dass „eine Peer-to-Peer-Anforderung ankommen wird und dass er die Ziel-Vorrichtung3 ist“. Verbindungsstreckentraining kann durch die TS1 OS an der Verbindungsstrecke2 232 initiiert werden.
  • (2) Der Switch 504 kann den durch die Vorrichtung2 in TS1 OS gesendeten N_FTS-Wert extrahieren und kann den N_FTS-Wert decodieren, um den Hinweis für das Vorrichtung2-Ereignis unter Verwendung der HTE 518 zu bestimmen.
  • (3) Der Switch 504 (oder durch die HTE 518) kann den frühen Hinweis zu dem nachgelagerten Port 3 (DSP3) 514 weitergeben. In einigen Ausführungsformen kann der Switch 504 die N_FTS in einer TS1 OS direkt zu dem DSP3 514 senden, der das Verbindungsstreckentraining in Verbindungsstrecke3 534 triggern kann. Die empfangende Vorrichtung3 kann eine lokale HTE verwenden, um die N_FTS aus dem TS1 OS zu decodieren.
  • (4) Der DPS3 514 startet das Aufwecken der Verbindungsstrecke3 534 durch Senden von TS1 OS zu der Vorrichtung3 524, mit einem möglichen zusätzlichen Hinweis, der der Vorrichtung3 524 „mitteilt“, dass die „Vorrichtung2 ihr eine Peer-to-Peer-Anforderung senden wird“. Der lokale Agent in der Vorrichtung3 524 kann eine geeignete Leistungsstrategie anwenden, um auf den frühen P2P-Hinweis zu antworten.
  • (5) Während der Schritte 2-4, wenn die Verbindungsstrecke2 532 in L0 ist, startet die Vorrichtung2 522 das Senden der Peer-to-Peer-Hauptstrom-TLP(s). Nachfolgend, nachdem die Verbindungsstrecke3 534 in L0 eintritt, wird die Vorrichtung3 524 die Peer-to-Peer-TLP(s) empfangen.
  • An einem Punkt, nachdem die P2P-Transaktion fertiggestellt ist, können die Vorrichtungen/Agenten zu L1 zurückkehren.
  • Die Latenzverbesserung wird im Wesentlichen dadurch erreicht, dass man beide der Verbindungsstrecke2 532 und Verbindungsstrecke3 534 ihre jeweiligen Verbindungsstreckentrainingsphasen überlappen lässt, anstatt ihr Verbindungsstreckentraining auf serielle Weise stattfinden zu lassen. Es wird darauf hingewiesen, dass der Prozess von N_FTS versus Hinweisextraktion so schnell wie mehrere Funktionsblockzyklen sein kann.
  • Zur Vereinfachung weist der dargestellte Anwendungsfall eine Annahme auf, dass „ACS P2P Request/Completion Redirect“ nicht aktiviert ist. ACS ist die PCIe-Zugangssteuerungsdienste, die eine Gruppe von Steuerpunkten innerhalb einer PCIe-Topologie definiert, um zu bestimmen, ob ein Transaktionsschichtpaket (TLP) normal gelenkt, gesperrt oder umgeleitet werden sollte. Falls diese Merkmale jedoch aktiviert wären, würde der Vorschlag dem System hinsichtlich der Latenzverbesserung noch mehr nutzen, da die Verbindungsstrecke3 534 ohne den Vorschlag noch später aufgeweckt würde, weil die TLPs zu dem Host 502 umgeleitet würden, bevor sie an dem DSP3 514 ankommen, um die Verbindungsstrecke3 534 in einem herkömmlichen Prozess aufzuwecken.
  • Unabhängig davon wird die USP 508 Verbindungsstrecke0 506 innerhalb von 1 ⍰s nachdem Schritt 1) startet aufgeweckt nach der PCIe-Spezifikation bezüglich ASPM L1-Austrittsanforderung. Dieses Aufwecken wird jedoch die Latenzreduktion oder die Energieeinsparvorteile, die der P2P-Transaktion zugeordnet sind, nicht beeinflussen.
  • Die Implementierung von In-Band-Techniken ist nicht auf den dargestellten N_FTS-Mechanismus oder die vorstehend genannten Anwendungsfälle beschränkt. Beispielsweise können auch andere reservierte Felder in TS1 OS verwendet werden, um die frühen Hinweise zu führen. Zusätzlich können, mit der In-Band-Beschaffenheit, die hier beschriebenen Techniken über alle PCIe-Systeme verteilt sein und sind nicht auf spezifische Formfaktoren beschränkt.
  • 7 ist ein schematisches Diagramm, das das System 700 zum Verwenden von Hinweisen für Out-of-Band-Transaktionen in Übereinstimmung mit Ausführungsform der vorliegenden Offenbarung darstellt. Das System 700 ist so gezeigt, dass es die Vorrichtung1 704 enthält, die einen oder mehrere Agenten, Agent1_1 712 und Agent2_1 714, in der Anwendungsschicht 710 enthält. Die Vorrichtung1 704 enthält außerdem einen PCIe-Stack 750, der ähnlich dem vorstehend in den 2-3 und an anderer Stelle beschriebenen ist. Die Vorrichtung1 enthält außerdem eine HTE 716, die TX- und RX-HCAMS enthalten kann.
  • Die Vorrichtung1 704 kann über eine Verbindungsstrecke 708 mit der Vorrichtung2 706 verbunden sein. Die Verbindungsstrecke 708 kann eine mehrspurige Verbindungsstrecke sein, die auf einem PCIe-Protokoll basiert. Die Vorrichtung2 706 enthält einen oder mehrere Agenten, Agent1_2 726 und Agent2_2 728, an der Anwendungsschicht 730. Die Vorrichtung2 706 enthält außerdem einen PCIe-Stack 752, der ähnlich dem vorstehend in den 2-3 und an anderer Stelle beschriebenen ist. Die Vorrichtung2 enthält außerdem eine HTE 732, die TX- und RX-HCAMS enthalten kann.
  • Ähnlich den In-Band-Techniken und -Struktur dienen die Out-of-Band-Techniken zum Transportieren früher Hinweise zwischen Vorrichtungen, so dass sich notwendige Entitäten in dem System in speziellen Anwendungsfällen früh vorbereiten können. In Out-of-Band-Techniken und -Strukturen ist jedoch eine Out-of-Band-Hinweisschnittstelle 760 eingesetzt, um die Hinweise zwischen Vorrichtungen über das System zu transportieren. Deshalb konnten unter Verwendung dieses Out-of-Band-Verfahrens sichere Verschlüsselungen und bessere Zeitoptimierung über das System erreicht werden. Beispielsweise könnte eine Host-CPU, auf der ein spezielles OS läuft, einen frühen Hinweis für eine spezielle Vorrichtung auf Software-Ebene planen, die höher ist als die HW-Anwendungsschicht. Auf diese Weise können die Zielvorrichtungen Hinweise viel früher empfangen. Zusätzlich ist im Vergleich zu dem In-Band-Verfahren ein weiterer Vorteil des Out-of-Band-Verfahrens, dass mehr Implementierungsoptionen vorhanden sind, da es nicht auf irgendwelche PCIe-In-Band-Definitionen eingeschränkt ist.
  • 8 ist ein Swimlane-Diagramm 800, das die Verwendung von Hinweisen für Out-of-Band-Transaktionen in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. 8 kann im Kontext der in 7 dargestellten Struktur betrachtet werden.
    • (1) Eingangs, nachdem die HCAMs optional konfiguriert worden sind, kann ein Triggerereignis bewirken, dass der Agent1_1 712 die TX-HCAM-Abbildung in der HTE1 716 verwendet, um einen Hinweisträger (z. B. N_FTS) zu identifizieren, der einem Hinweis, der dem Ereignis zugeordnet ist, entspricht.
    • (2) Der Hinweisträger kann über die HTE-Schnittstelle 760 zu der HTE2 732 für die Vorrichtung2 706 gesendet werden.
    • (3) Der Agent2_1 726 kann den RX-HCAM in der HTE 732 verwenden, um den Träger zu decodieren und die Hinweis zu verarbeiten.
    • (4) Der Agent2_1 726 kann Leistungsstrategien anwenden, um auf das bevorstehende Ereignis von Agent1_1 vorzubereiten.
    • (5) Der Agent1_1 712 kann das Ereignis ausführen, wie z. B. die Datentransaktion über die Verbindungsstrecke 708 zu dem Agent1_2 726.
    • (6) In einigen Ausführungsformen kann der Agent1_1 712 Verbindungsstreckentraining zu L0 durch Senden der TS1 OS zu gegebener Zeit für das Ereignis initiieren. In einigen Ausführungsformen kann der Agent2_1 726 bewirken, dass die Verbindungsstrecke 708 das Verbindungsstreckentraining zu L0 durchläuft, aufgrund dessen, dass er den Hinweis empfangen hat.
    • ]: Für die in den 7-8 dargestellte Out-of-Band-Implementierung kann, da der Mechanismus zum Kommunizieren von Hinweisen nicht von der mehrspurigen Verbindungsstrecke abhängt, das Verbindungsstreckentraining durch die Betriebsprozeduren, die durch das Verbindungsstreckenprotokoll (z. B. PCIe für eine PCIe-basierte Verbindungsstrecke) definiert sind, initiiert werden.
  • Beispielsweise kann, nach der PCIe-Spezifikation, wenn die Verbindungsstrecke in dem L1-Zustand festgelegt ist, jeder Partner der Verbindungsstrecke das Verbindungsstreckentraining durch Senden der OS für das Verlassen des elektrischen Leerlaufs (EIEOS) (wenn notwendig) und TS1 OS über die Verbindungsstrecke initiieren. Im Allgemeinen kann, falls eine verbundene Komponente benötigt, dass die Verbindungsstrecke irgendein TLP sendet, die verbundene Komponente den Verbindungsstreckentrainingsprozess initiieren, um die Verbindungsstrecke in LO zu bringen.
  • Eine Zusammenschaltungs-Fabric-Architektur enthält die „Peripheral Component Interconnect“- (PCI-) Express- (PCIe-) Architektur. Ein primäres Ziel von PCIe ist es, Komponenten und Vorrichtungen von unterschiedlichen Lieferanten zu ermöglichen, in einer offenen Architektur, die mehrere Marktsegmente; Clients (Desktops und mobil), Server (Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen überspannt, miteinander zusammenzuwirken. PCI Express ist eine Hochleistungs-, Allzweck-I/O-Zusammenschaltung, die für eine große Vielzahl zukünftiger Berechnungs- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie z. B. ihr Verwendungsmodell, Lade-Speicher-Architektur und Software-Schnittstellen, sind während ihrer Überarbeitungen beibehalten worden, während frühere Parallelbus-Implementierungen durch eine in hohem Maße skalierbare vollständig serielle Schnittstelle ersetzt worden sind. Die neueren Versionen von PCI Express nutzen den Vorteil von Weiterentwicklungen von Punkt-zu-Punkt-Zusammenschaltungen, Switch-basierter Technologie und paketiertem Protokoll, um neue Ebenen von Leistungsfähigkeit und Merkmalen zu liefern. Leistungsmanagement, Dienstgüte (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung sind einige der weiterentwickelten Merkmale, die durch PCI Express unterstützt werden.
  • Bezug nehmend auf 9 ist eine Ausführungsform eines Fabric, das aus Punkt-zu-Punkt-Verbindungsstrecken besteht, die eine Gruppe von Komponenten verbinden, dargestellt. Das System 900 enthält den Prozessor 905 und den Systemspeicher 910, die mit dem Steuereinheit-Hub 915 gekoppelt sind. Der Prozessor 905 enthält irgendein Verarbeitungselement, wie z. B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder einen anderen Prozessor. Der Prozessor 905 ist mit dem Steuereinheit-Hub 915 über einen vorderseitigen Bus (FSB) 906 verbunden. In einer Ausführungsform ist der FSB 906 eine serielle Punkt-zu-Punkt-Zusammenschaltung, wie nachstehend beschrieben ist. In einer weiteren Ausführungsform enthält die Verbindungsstrecke 906 eine serielle differentielle Zusammenschaltungsarchitektur, die mit unterschiedlichen Zusammenschaltungsstandards konform ist.
  • Der Systemspeicher 910 enthält irgendeine Speichervorrichtung, wie z. B. Direktzugriffsspeicher (RAM), nichtflüchtigen (NV-) Speicher oder einen anderen Speicher, der durch die Vorrichtungen in dem System 900 zugreifbar ist. Der Systemspeicher 910 ist mit dem Steuereinheit-Hub 915 über die Speicherschnittstelle 916 gekoppelt. Beispiele für eine Speicherschnittstelle enthalten eine Speicherschnittstelle mit doppelter Datenrate (DDR), eine Doppelkanal-DDR-Speicherschnittstelle und eine Speicherschnittstelle für dynamischen RAM (DRAM).
  • In einer Ausführungsform ist der Steuereinheit-Hub 915 ein Wurzel-Hub, Wurzel-Komplex oder eine Wurzel-Steuereinheit in einer „Peripheral Component Interconnect Express“- (PCIe- oder PCIE-) Zusammenschaltungshierarchie. Beispiele für einen Steuereinheit-Hub 915 enthalten einen Chipsatz, einen Speichersteuereinheit-Hub (MCH), eine Northbridge, einen Zusammenschaltungssteuereinheit-Hub (ICH), eine Southbridge und eine Wurzel-Steuereinheit/Hub. Der Begriff Chipsatz bezieht sich häufig auf zwei physikalisch separate Steuereinheit-Hubs, d. h. einen Speichersteuereinheit-Hub (MCH) gekoppelt mit einem Zusammenschaltungssteuereinheit-Hub (ICH). Es wird darauf hingewiesen, dass aktuelle Systeme häufig den MCH integriert mit dem Prozessor 905 enthalten, wobei die Steuereinheit 915 zum Kommunizieren mit I/O-Vorrichtungen dient, auf eine ähnliche Weise wie nachstehend beschrieben. In einigen Ausführungsformen wird Peer-to-Peer-Lenkung optional über den Wurzelkomplex 915 unterstützt.
  • Hier ist der Steuereinheit-Hub 915 über die serielle Verbindungsstrecke 919 mit der Switch/Bridge 920 gekoppelt. Eingabe/Ausgabe-Module 917 und 921, die auch als Schnittstellen/Ports 917 und 921 bezeichnet sein können, enthalten/implementieren einen geschichteten Protokoll-Stack, um Kommunikation zwischen dem Steuereinheit-Hub 915 und dem Switch 920 bereitzustellen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 920 gekoppelt sein.
  • Die Switch/Bridge 920 lenkt Pakete/Nachrichten von der Vorrichtung 925 nach oben, d. h. nach oben in einer Hierarchie zu einem Wurzelkomplex, zu dem Steuereinheit-Hub 915 und nach unten, d. h. nach unten in einer Hierarchie weg von einem Wurzel-Steuereinheit, von dem Prozessor 905 oder dem Systemspeicher 910 zu der Vorrichtung 925. Der Switch 920 ist in einer Ausführungsform als eine logische Zusammenstellung mehrerer virtueller PCI-zu-PCI-Bridge-Vorrichtungen bezeichnet. Die Vorrichtung 925 enthält irgendeine interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie z. B. eine I/O-Vorrichtung, eine Netzschnittstellensteuereinheit (NIC), eine Add-in-Karte, einen Audioprozessor, einen Netzprozessor, ein Festplattenlaufwerk, eine Speichervorrichtung, eine CD/DVD ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine Vorrichtung für einen universellen seriellen Bus (USB), einen Scanner oder andere Eingabe/Ausgabe-Vorrichtungen. Häufig wird eine solche Vorrichtung in der PCIe-Umgangssprache als ein Endpunkt bezeichnet. Obwohl nicht spezifisch gezeigt kann die Vorrichtung 925 eine PCIe-zu-PCI/PCI-X-Bridge enthalten, um alte oder PCI-Vorrichtungen anderer Version zu unterstützen. Endpunkt-Vorrichtungen in PCIe werden häufig als alte, PCIe- oder Wurzelkomplex-integrierte Endpunkte klassifiziert.
  • Ein Grafikbeschleuniger 930 ist ebenfalls mit dem Steuereinheit-Hub 915 über die serielle Verbindungsstrecke 932 verbunden. In einer Ausführungsform ist der Grafikbeschleuniger 930 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 920 und dementsprechend die I/O-Vorrichtung 925 ist dann mit dem ICH gekoppelt. Die I/O-Module 931 und 918 dienen ebenfalls im Implementieren eines geschichteten Protokoll-Stack, um zwischen dem Grafikbeschleuniger 930 und dem Steuereinheit-Hub 915 zu kommunizieren. Ähnlich zu der vorstehenden MCH-Diskussion können eine Grafiksteuereinheit oder der Grafikbeschleuniger 930 selbst in den Prozessor 905 integriert sein.
  • Weiter zu 10 ist eine Ausführungsform eines geschichteten Protokoll-Stack dargestellt. Der geschichtete Protokoll-Stack 1000 enthält irgendeine Form eines geschichteten Kommunikations-Stack, wie z. B. eines „Quick Path Interconnect“- (QPI-) Stack, eines PCIe-Stack, eines Hochleistungsberechnungs-Zusammenschaltungs-Stack der nächsten Generation oder eines anderen geschichteten Stack. Obwohl sich die unmittelbar nachfolgende Diskussion mit Bezug auf die 9-12 auf einen PCIe-Stack bezieht, können die gleichen Konzepte auf andere Zusammenschaltungs-Stacks angewandt werden. In einer Ausführungsform ist der Protokoll-Stack 1000 ein PCIe-Protokollstack, der eine Transaktionsschicht 1005, eine Verbindungsschicht 1010 und eine Bitübertragungsschicht 1020 enthält. Eine Schnittstelle, wie z. B. die Schnittstellen 917, 918, 921, 922, 926 und 931 in 1, kann als ein Kommunikationsprotokoll-Stack 1000 repräsentiert sein. Die Repräsentation als ein Kommunikationsprotokoll-Stack kann auch als ein Modul oder eine Schnittstelle bezeichnet sein, das/die einen Protokoll-Stack implementiert/enthält.
  • PCI Express verwendet Pakete zum Kommunizieren von Informationen zwischen Komponenten. Pakete werden in der Transaktionsschicht 1005 und der Sicherungsschicht 1010 gebildet, um die Informationen von der sendenden Komponente zu der empfangenden Komponente zu führen. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die zum Behandeln der Pakte in diesen Schichten notwendig sind. Auf der Empfangsseite findet der umgekehrte Prozess statt, und Pakete werden aus ihrer Repräsentation der Bitübertragungsschicht 1020 in die Repräsentation der Sicherungsschicht 1010 und schließlich (für Pakete der Transaktionsschicht) in die Form gebracht, die durch die Transaktionsschicht 1005 der Empfangsvorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • In einer Ausführungsform dient die Transaktionsschicht 1005 zum Bereitstellen einer Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Zusammenschaltungsarchitektur, wie z. B. der Sicherungsschicht 1010 und der Bitübertragungsschicht 1020. In diesem Zusammenhang ist das Zusammenstellen und Zerlegen von Paketen (d. h. Paketen der Transaktionsschicht oder TLPs) eine primäre Zuständigkeit der Transaktionsschicht 1005. Die Übersetzungsschicht 1005 managt typischerweise Credit-Basis-Ablaufsteuerung für TLPs. PCIe implementiert aufgeteilte Transaktionen, d. h. Transaktionen, in denen Anforderung und Antwort zeitlich getrennt sind, was es ermöglicht, dass eine Verbindungsstrecke anderen Verkehr führt, während die Zielvorrichtung die Daten für die Antwort sammelt.
  • Zusätzlich nutzt PCIe Credit-basierte Ablaufsteuerung. In diesem Schema bietet eine Vorrichtung einen anfänglichen Credit-Betrag für jeden der Empfangspuffer in der Transaktionsschicht 1005 an. Eine externe Vorrichtung an dem entgegengesetzten Ende der Verbindungsstrecke, wie z. B. der Steuereinheit-Hub 115 in 1, zählt die Anzahl von Credits, die durch jedes TLP verbraucht werden. Eine Transaktion kann übertragen werden, falls die Transaktion eine Credit-Grenze nicht übersteigt. Beim Empfangen einer Antwort wird ein Credit-Betrag wiederhergestellt. Ein Vorteil des Credit-Schemas ist, dass die Latenz der Credit-Rückgabe die Leistungsfähigkeit nicht beeinträchtigt, vorausgesetzt dass nicht auf die Credit-Grenze gestoßen wird.
  • In einer Ausführungsform enthalten vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, einen Eingabe-/Ausgabe-Adressenraum und einen Nachrichtenadressenraum. Speicherraumtransaktionen enthalten eine oder mehrere aus Leseanforderungen und Schreibanforderungen, um Daten zu/von einem speicherabgebildeten Ort zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen zum Verwenden von zwei unterschiedlichen Adressenformaten fähig, z. B. eines kurzen Adressenformats, wie z. B. einer 32-Bit-Adresse, oder eines langen Adressenformats, wie z. B. einer 64Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen zu dem Konfigurationsraum enthalten Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind definiert, um In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Deshalb stellt in einer Ausführungsform die Transaktionsschicht 1005 Paket-Header/Nutzdaten 1006 zusammen. Das Format für aktuelle Paket-Header/Nutzdaten ist in der PCIe-Spezifikation auf der Website der PCIe-Spezifikation zu finden.
  • Schnell ist mit Bezug auf 11 eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 1100 ein Mechanismus zum Führen von Transaktionsinformationen. In diesem Zusammenhang unterstützt der Transaktionsdeskriptor 1100 die Identifizierung von Transaktionen in einem System. Andere potentielle Verwendungen enthalten das Verfolgen von Modifikationen der Standard-Transaktionsreihenfolge und Zuordnung der Transaktion zu Kanälen.
  • Der Transaktionsdeskriptor 1100 enthält ein globales Bezeichnerfeld 1102, ein Attributfeld 1104 und ein Kanalbezeichnerfeld 1106. In dem dargestellten Beispiel ist das globale Bezeichnerfeld 1102 so abgebildet, dass es ein lokales Transaktionsbezeichnerfeld 1108 und ein Ursprungsbezeichnerfeld 1110 enthält. In einer Ausführungsform ist der globale Transaktionsbezeichner 1002 für alle anstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionsbezeichnerfeld 1108 ein Feld, das durch einen anfordernden Agenten erzeugt wird, und es ist für alle anstehenden Anforderungen, die eine Fertigstellung für diesen anfordernden Agenten erfordern, eindeutig. Darüber hinaus identifiziert in diesem Beispiel der Ursprungsbezeichner 1110 eindeutig den Anfordereragenten innerhalb einer PCIe-Hierarchie. Dementsprechend stellt der lokale Transaktionsbezeichner, gemeinsam mit der Ursprungs-ID 1110, die globale Identifizierung einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 1104 spezifiziert Eigenschaften und Beziehungen der Transaktion. In diesem Zusammenhang wird das Attributfeld 1104 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die die Modifikation der Standardbehandlung von Transaktionen ermöglichen. In einer Ausführungsform enthält das Attributfeld 1104 ein Prioritätsfeld 1112, ein reserviertes Feld 1114, ein Ordnungsfeld 1116 und ein No-Snoop-feld 1118. Hier kann das Prioritätssubfeld 1112 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 1114 ist für die Zukunft oder für eine durch den Lieferanten definierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 1116 verwendet, um optionale Informationen zuzuführen, die den Typ der Ordnung transportieren, der die Standardordnungsregeln modifizieren kann. Gemäß einer Beispielimplementierung bezeichnet ein Ordnungsattribut „0“, dass Standardordnungsregeln anzuwenden sind, wobei ein Ordnungsattribut von „1“ eine gelockerte Ordnung bezeichnet, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung überholen können und Lesefertigstellungen Lesevorgänge in derselben Richtung überholen können. Das Snoop-Attributfeld 1118 wird benutzt, um zu bestimmen, ob Transaktionen ausspioniert werden. Wie gezeigt identifiziert das Kanal-ID-Feld 1106 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 1010, auch als Sicherungsschicht 1010 bezeichnet, agiert als eine Zwischenstufe zwischen der Transaktionsschicht 1005 und der Bitübertragungsschicht 1020. In einer Ausführungsform ist das Bereitstellen eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindungsstrecke die Zuständigkeit der Sicherungsschicht 1010. Eine Seite der Sicherungsschicht 1010 nimmt TLPs an, die durch die Transaktionsschicht 1005 zusammengestellt sind, wendet den Paketreihenfolgenbezeichner 1011, d. h. eine Identifizierungsnummer oder Paketnummer, an, berechnet einen Fehlerdetektionscode, d. h. CRC 1012, und wendet ihn an und übergibt die modifizierten TLPs an die Bitübertragungsschicht 1020 zur Übertragung über eine physikalische zu einer externen Vorrichtung.
  • Bitübertragungsschicht
  • In einer Ausführungsform enthält die Bitübertragungsschicht 1020 den logischen Teilblock 1021 und den elektrischen Teilblock 1022, um ein Paket physikalisch zu einer externen Vorrichtung zu übertragen. Hier ist ein logischer Teilblock 1021 für die „digitalen“ Funktionen der Bitübertragungsschicht 1021 zuständig. In diesem Zusammenhang enthält der logische Teilblock einen Sendeabschnitt, um ausgehende Informationen zum Senden durch den physikalischen Teilblock 1022 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie zu der Verbindungsschicht 1010 weitergegeben werden.
  • Der physikalische Block 1022 enthält einen Sender und einen Empfänger. Der Sender wird durch den logischen Teilblock 1021 mit Symbolen versorgt, die der Sender serialisiert und weiter zu einer externen Vorrichtung sendet. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen versorgt und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird dann de-serialisiert und dem logischen Teilblock 1021 zugeführt. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 1023 zu rahmen. Zusätzlich stellt in einem Beispiel der Empfänger außerdem einen Symboltakt, der aus dem eingehenden seriellen Strom wiederhergestellt wird, bereit.
  • Wie vorstehend festgestellt ist, obwohl die Transaktionsschicht 1005, die Verbindungsschicht 1010 und die Bitübertragungsschicht 1020 in Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstacks beschrieben sind, ein geschichteter Protokollstack nicht so eingeschränkt. Tatsächlich kann irgendein geschichtetes Protokoll enthalten/implementiert sein. Als ein Beispiel enthält eine Port/Schnittstelle, die als ein geschichtetes Protokoll repräsentiert ist, Folgendes: (1) eine erste Schicht zum Zusammenstellen 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 spezifisches Beispiel ist ein geschichtetes Protokoll für eine normale Standardschnittstelle (CSI) benutzt.
  • Als Nächstes ist Bezug nehmend auf 12 eine Ausführungsform eines seriellen PCIe-Punkt-zu-Punkt-Fabric dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindungsstrecke dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindungsstrecke nicht so eingeschränkt, da sie irgendeinen Übertragungspfad zum Übertragen serieller Daten enthält. In der gezeigten Ausführungsform enthält eine Basis-PCIe-Verbindungsstrecke zwei differentiell angesteuerte Niederspannungs-Signalpaare: ein Sendepaar 1206/1211 und ein Empfangspaar 1212/1207. Dementsprechend enthält die Vorrichtung 1205 Sendelogik 1206 zum Senden von Daten zu der Vorrichtung 1210 und Empfangslogik 1207 zum Empfangen von Daten von der Vorrichtung 1210. Mit anderen Worten sind in einer PCIe-Verbindungsstrecke zwei Sendepfade, d. h. die Pfade 1216 und 1217, und zwei Empfangspfade, d. h. die Pfade 1218 und 1219, enthalten.
  • Ein Sendepfad bezieht sich auf irgendeinen Pfad zum Senden von Daten, wie z. B. eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsstrecke oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. der Vorrichtung 1205 und der Vorrichtung 1210, ist als eine Verbindungsstrecke bezeichnet, wie z. B. die Verbindungsstrecke 415. Eine Verbindungsstrecke kann eine Spur unterstützen - wobei jede Spur eine Gruppe differenzieller Signalpaare repräsentiert (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann eine Verbindungsstrecke mehrere Spuren, die als xN bezeichnet sind, aggregieren, wobei N eine unterstützte Verbindungsstreckenbreite ist, wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar bezieht sich auf zwei Sendepfade, wie z. B. die Leitungen 416 und 417, um differentielle Signale zu senden. Als ein Beispiel, wenn die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d. h. eine ansteigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel, d. h. eine abfallende Flanke. Differentielle Signale zeigen potentiell bessere elektrische Eigenschaften, wie z. B. bessere Signalintegrität, z. B. Kreuzkopplung, Spannungsüberschreiten/-unterschreiten, Überschwingen usw. Das ermöglicht ein besseres Zeitfenster, was schnellere Übertragungsfrequenzen ermöglicht.
  • Weiter zu 13 ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen eines Befehls enthält, wobei eines oder mehrere der Zusammenschaltungen ein oder mehrere Merkmale in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung implementieren, dargestellt. Das System 1300 enthält eine Komponente, wie z. B. einen Prozessor 1302, zum Einsetzen von Ausführungseinheiten, die Logik zum Ausführen von Algorithmen zum Verarbeiten von Daten enthalten, in Übereinstimmung mit der vorliegenden Erfindung, wie z. B. in der hier beschriebenen Ausführungsform. Das System 1300 ist für Verarbeitungssysteme repräsentativ, die auf den PENTIUM III™-, PENTIUM 4™-, Xeon™-, Itanium-, XScale™- und/oder StrongARM™-Mikroprozessoren basieren, die von Intel Corporation in Santa Clara, Kalifornien, verfügbar sind, obwohl andere Systeme (einschließlich PCs, die andere Mikroprozessoren aufweisen, Engineering-Workstations, Set-Top-Boxen und dergleichen) ebenfalls verwendet sein können. In einer Ausführungsform führt das Beispielsystem 1300 eine Version des WINDOWS™-Betriebssystems aus, das von Microsoft Corporation aus Redmond, Washington, verfügbar ist, obwohl andere Betriebssysteme (beispielsweise UNIX oder Linux), eingebettete Software und/oder grafische Anwenderschnittstellen ebenfalls verwendet sein können. Somit sind die Ausführungsformen der vorliegenden Erfindung nicht auf irgendeine spezifische Kombination aus Hardware-Schaltungsanordnung und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen wie z. B. tragbaren Vorrichtungen und eingebettete Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen enthalten Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und tragbare PCs. Eingebettete Anwendungen können eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), ein Einchipsystem, Netzcomputer (NetPC), Set-Top-Boxen, Netz-Hubs, Weitbereichsnetz- (WAN-) Switches oder irgendein anderes System enthalten, das einen oder mehrere Befehle in Übereinstimmung mit wenigstens einer Ausführungsform ausführen kann.
  • In dieser dargestellten Ausführungsform enthält der Prozessor 1302 eine oder mehrere Ausführungseinheiten 1308 zum Implementieren eines Algorithmus, der zum Ausführen wenigstens eines Befehls dient. Eine Ausführungsform kann in dem Kontext eines Einprozessor-Desktop- oder Server-Systems beschrieben sein, alternative Ausführungsformen können jedoch in einem Mehrprozessorsystem enthalten sein. Das System 1300 ist ein Beispiel einer „Hub“-System-Architektur. Das Computersystem 1300 enthält einen Prozessor 1302 zum Verarbeiten von Datensignalen. Der Prozessor 1302, als ein erläuterndes Beispiel, enthält einen „Complex Instruction Set Computer“- (CISC-) Mikroprozessor, einen „Reduced Instruction Set Computing“- (RISC-) Mikroprozessor, einen „Very Long Instruction Word“- (VLIW-) Mikroprozessor, einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder irgendeine andere Prozessorvorrichtung, wie beispielsweise einen digitalen Signalprozessor. Der Prozessor 1302 ist mit einem Prozessor-Bus 1310 gekoppelt, der Datensignale zwischen dem Prozessor 1302 und anderen Komponenten in dem System 1300 überträgt. Die Elemente des Systems 1300 (z. B. der Grafikbeschleuniger 1312, der Speichersteuereinheit-Hub 1316, der Speicher 1320, der I/O-Steuereinheit-Hub 1324, der drahtlose Sender/Empfänger 1326, das Flash-BIOS 1328, die Netzsteuereinheit 1334, die Audiosteuereinheit 1336, der serielle Erweiterungs-Port 1338, die I/O-Steuereinheit 1340 usw.) führen ihre herkömmlichen Funktionen, die Fachleuten bekannt sind, aus.
  • In einer Ausführungsform enthält der Prozessor 1302 einen internen Ebene-1-(L1-) Cache-Speicher 1304. Abhängig von der Architektur kann der Prozessor 1302 einen einzelnen internen Cache oder mehrere Ebenen interner Caches aufweisen. Andere Ausführungsformen enthalten eine Kombination aus sowohl internen als auch externen Caches, abhängig von der speziellen Implementierung und Erfordernis. Die Registerdatei 1306 dient zum Speichern unterschiedlicher Typen von Daten in verschiedenen Registern, die Ganzzahlregister, Gleitkommaregister, Vektorregister, „banked“ Register, Schattenregister, Prüfpunktregister, Statusregister und Befehlszeigerregister enthalten.
  • Die Ausführungseinheit 1308, die Logik zum Ausführen von Ganzzahl- und Gleitkommaoperationen enthält, befindet sich ebenfalls in dem Prozessor 1302. Der Prozessor 1302 enthält in einer Ausführungsform einen Mikrocode- (ucode-) ROM zum Speichern von Mikrocode, der dann, wenn er ausgeführt wird, zum Ausführen von Algorithmen für spezielle Makrobefehle oder Behandeln komplexer Szenarios dient. Hier ist der Mikrocode potentiell aktualisierbar, um Logik-Fehler/Korrekturen für den Prozessor 1302 zu behandeln. Für eine Ausführungsform enthält die Ausführungseinheit 1308 Logik zum Behandeln eines gepackten Befehlssatzes 1309. Durch Aufnehmen des gepackten Befehlssatzes 1309 in den Befehlssatz eines Allzweckprozessors 1302, zusammen mit der zugeordneten Schaltungsanordnung zum Ausführen der Befehle, können die durch viele Multimediaanwendungen verwendeten Operationen unter Verwendung gepackter Daten in einem Allzweckprozessor 1302 ausgeführt werden. Somit werden viele Multimediaanwendungen durch Verwenden der vollen Breite des Datenbusses eines Prozessors zum Ausführen von Operationen auf gepackten Daten beschleunigt und effizienter ausgeführt. Das eliminiert potentiell die Notwendigkeit, kleinere Einheiten von Daten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen auszuführen, ein Datenelement nach dem anderen.
  • Alternative Ausführungsformen einer Ausführungseinheit 1308 können auch in Mikrosteuereinheiten, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. Das System 1300 enthält einen Speicher 1320. Der Speicher 1320 enthält eine Vorrichtung mit dynamischem Direktzugriffsspeicher (DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (SRAM), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung. Der Speicher 1320 speichert Befehle und/oder Daten, die durch Datensignale repräsentiert sind, die durch den Prozessor 1302 auszuführen sind.
  • Es wird darauf hingewiesen, dass irgendwelche der vorstehend genannten Merkmale oder Aspekte der Erfindung auf einer oder mehreren der in 13 dargestellten Zusammenschaltung benutzt werden können. Beispielsweise implementiert eine bausteininterne Zusammenschaltung (ODI), die nicht gezeigt ist, zum Koppeln interner Einheiten des Prozessors 1302 einen oder mehrere vorstehend beschriebene Aspekte der Erfindung. Oder die Erfindung ist einem Prozessor-Bus 1310 (z. B. Intel „Quick Path Interconnect“ (QPI) oder einer anderen bekannten Hochleistungsberechnungszusammenschaltung), einem Speicherpfad 1318 mit hoher Bandbreite zu dem Speicher 1320, einer Punkt-zu-Punkt-Verbindungsstrecke zu dem Grafikbeschleuniger 1312 (z. B. einem mit „Peripheral Component Interconnect express“-(PCIe-) konformem Fabric), einer Steuereinheit-Hub-Zusammenschaltung 1322, einer I/O- oder anderen Zusammenschaltung (z. B. USB, PCI PCIe) zum Koppeln der anderen dargestellten Komponenten zugeordnet. Einige Beispiele für solche Komponenten enthalten die Audiosteuereinheit 1336, den Firmware-Hub (Flash-BIOS) 1328, den drahtlosen Sender/Empfänger 1326, den Datenspeicher 1324, die Alt-I/O-Steuereinheit 1310, die Anwendereingabe- und Tastatur-Schnittstellen 1342 beinhaltet, einen seriellen Erweiterungs-Port 1338 wie z. B. einen universellen seriellen Bus (USB) und eine Netzsteuereinheit 1334. Die Datenspeichervorrichtung 1324 kann ein Festplattenlaufwerk, ein Floppy-Disk-Laufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • Jetzt Bezug nehmend auf 14 ist ein Blockdiagramm eines zweiten Systems 1400 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 14 gezeigt ist, ist ein Mehrprozessorsystem 1400 ein Punkt-zu-Punkt-Zusammenschaltungssystem und enthält einen ersten Prozessor 1470 und einen zweiten Prozessor 1480, die über die Punkt-zu-Punkt-Zusammenschaltung 1450 gekoppelt sind. Jeder der Prozessoren 1470 und 1480 kann eine Version eines Prozessors sein. In einer Ausführungsform sind 1452 und 1454 Teil eines seriellen kohärenten Punkt-zu-Punkt-Zusammenschaltungs-Fabric, wie z. B. der „Quick Path Interconnect“- (QPI-) Architektur von Intel. Als ein Ergebnis kann die Erfindung innerhalb der QPI-Architektur implementiert sein.
  • Obwohl sie mit nur zwei Prozessoren 1470, 1480 gezeigt ist, ist zu verstehen, dass der Umfang der vorliegenden Erfindung nicht so eingeschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1470 und 1480 sind so gezeigt, dass sie integrierte Speichersteuereinheiten 1472 bzw. 1482 enthalten. Der Prozessor 1470 enthält außerdem als Teil seiner Bus-Steuereinheiten die Punkt-zu-Punkt- (P-P-) Schnittstellen 1476 und 1478; ähnlich enthält der zweite Prozessor 1480 die P-P-Schnittstellen 1486 und 1488. Die Prozessoren 1470, 1480 können Informationen über eine Punkt-zu-Punkt- (P-P-) Schnittstelle unter Verwendung von P-P-Schnittstellenschaltungen 1478, 1488 austauschen. Wie in 14 gezeigt ist, koppeln die IMCs 1472 und 1482 die Prozessoren mit entsprechenden Speichern, und zwar einem Speicher 1432 und einem Speicher 1434, die Abschnitte des Hauptspeichers sein können, der lokal an den entsprechenden Prozessoren angebracht ist.
  • Die Prozessoren 1470, 1480 tauschen jeweils Informationen mit einem Chipsatz 1490 über individuelle P-P-Schnittstellen 1452, 1454 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1476, 1494, 1486, 1498 aus. Der Chipsatz 1490 tauscht außerdem Informationen mit einer Hochleistungs-Grafikschaltung 1438 über eine Schnittstellenschaltung 1492 entlang einer Hochleistungs-Grafikzusammenschaltung 1439 aus.
  • Ein gemeinsam verwendeter Cache (nicht gezeigt) kann in einem Prozessor oder außerhalb beider Prozessoren enthalten sein; jedoch mit dem Prozessoren über die P-P-Zusammenschaltung verbunden, so dass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam verwendeten Cache gespeichert sein können, falls ein Prozessor in eine Niederleistungsbetriebsart versetzt wird.
  • Der Chipsatz 1490 kann mit einem ersten Bus 1416 über eine Schnittstelle 1496 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1416 ein „Peripheral Component Interconnect“- (PCI-) Bus oder ein Bus wie z. B. ein PCI Express-Bus oder ein anderer I/O-Zusammenschaltungs-Bus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht so eingeschränkt ist.
  • Wie in 14 gezeigt ist, sind verschiedene I/O-Vorrichtungen 1414 mit dem ersten Bus 1416 gekoppelt, zusammen mit einer Bus-Bridge 1418, die den ersten Bus 1416 mit einem zweiten Bus 1420 koppelt. In einer Ausführungsform enthält der zweite Bus 1420 einen „Low Pin Count“-Bus (LPC-Bus). Verschiedene Vorrichtungen in einer Ausführungsform sind mit dem zweiten Bus 1420 gekoppelt, die beispielsweise eine Tastatur und/oder Maus 1422, Kommunikationsvorrichtungen 1427 und eine Speichereinheit 1428 wie z. B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung enthalten, die häufig Befehle/Code und Daten 1430 enthalten. Ferner ist ein Audio-I/O 1424 als mit dem zweiten Bus 1420 gekoppelt gezeigt. Es wird darauf hingewiesen, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Zusammenschaltungsarchitekturen variieren. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 14 ein System einen Mehrpunkt-Bus oder eine andere derartige Architektur implementieren.
  • Fig. 15 ist ein schematisches Diagramm, das einen
  • Verbindungsstreckentrainings- und Status-Zustandsautomaten zur Wiederherstellung in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung darstellt. Basierend auf der PCI Express-Basisspezifikation wird, falls das vorstehende In-Band-Verfahren unter Verwendung von N_FTS eingesetzt wird, um Hinweise in der TS1 OS während des Recovery.RcvrLock-Subzustands zu transportieren, der frühe Hinweis empfangen, bevor die Empfangsvorrichtung LTSSM in den Recovery.RcvrCfg-Subzustand eintritt. Deshalb wird wenigstens die Zeit, die für Recovery.RcvrCfg und Recovery.Idle aufgewandt wird, für die Empfangsvorrichtung eingespart, um den Hinweis zu empfangen. Andernfalls müsste, um die präzise Antwort für das Verbindungsstrecken_Training-Ergebnis herauszufinden, die Vorrichtung warten, bis sie in den LO-Zustand eintritt und das erste TLP empfangen wird. Basierend auf PCIe SPEC ist die Zeit, die für Recovery.RcvrCfg und Recovery.Idle insgesamt benötigt wird, in Tabelle 1 aufgelistet. Tabelle 1. Kleinster Vorteil der Latenzverbesserung
    PCIe-Geschwindigkeit Reduzierte Latenz für die Empfangsvorrichtung, um präzise zu reagieren
    Gen1 (2,5 GHz) 512 ns
    Gen 2 (5 GHz) 256 ns
    Gen 3 (8 GHz) 138 ns
    Gen 4 (16 GHz) 69 ns
    Gen 5 (32 GHz) 34,5 ns
  • Die PCI Express-Basisspezifikation stellt einen Auszug der Definition bereit. Tabelle 2 ist der Auszug für die N_FTS-Definition Tabelle 2. PCIe-Definition von TS1/TS2 OS (Auszug)
    Symbol-Nummer Beschreibung
    0 Bei Betrieb an 2,5 oder 5,0 GT/s: COM (K28.5) für Symbolanpassung.
    1 Bei Betrieb an 8,0 GT/s oder mehr: Codiert als 1Eh (TS1 OS).
    2 Verbindungsstrecken-Nummer
    Ports, die 8,0 GT/s oder mehr nicht unterstützen: 0-255, PAD. Nachgelagerte Ports, die 8,0 GT/s oder mehr unterstützen: 0-31, PAD. Vorgelagerte Ports, die 8,0 GT/s oder mehr unterstützen: 0-255, PAD.
    Bei Betrieb an 2,5 oder 5,0 GT/s: PAD ist als K23.7 codiert.
    Bei Betrieb an 8,0 GT/s oder mehr: PAD ist als F7h codiert.
    3 N_FTS. Die Anzahl schneller Trainingssequenzen, die für den Empfänger erforderlich ist: 0-255
  • Obwohl diese Offenbarung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute zahlreiche Modifikationen und Variationen daraus erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle solche Modifikationen und Variationen als in den wahren Geist und Schutzbereich dieser vorliegenden Offenbarung fallend abdecken.
  • Eine Konstruktion kann verschiedene Stufen durchlaufen, von der Erzeugung zur Simulation zur Herstellung. Daten, die eine Konstruktion repräsentieren, können die Konstruktion auf eine Anzahl von Arten repräsentieren. Zuerst, wie es in Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert sein. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gattern an einigen Stufen des Konstruktionsprozesses produziert werden. Darüber hinaus erreichen die meisten Konstruktionen an einer Stufe eine Ebene von Daten, die die physikalische Platzierung verschiedener Vorrichtungen in dem Hardware-Modell repräsentieren. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell repräsentieren, Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zum Produzieren der integrierten Schaltung verwendet werden, spezifizieren. In irgendeiner Repräsentation der Konstruktion können Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder eine magnetische oder optische Speichereinrichtung wie z. B. eine Platte kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf andere Weise erzeugt sind, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder die Konstruktion angibt oder führt, übertragen wird, wird in dem Umfang, in dem Kopieren, Puffern oder erneutes Übertragen des elektrischen Signals ausgeführt wird, eine neue Kopie hergestellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium wenigstens temporär einen Artikel, wie z. B. Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, speichern.
  • Ein Modul, wie es hier verwendet ist, bezieht sich auf irgendeine Kombination aus Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware wie z. B. eine Mikrosteuereinheit, die einem nicht-transitorischen Medium zugeordnet ist, um Code zu speichern, der ausgelegt ist, durch die Mikrosteuereinheit ausgeführt zu werden. Deshalb bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch konfiguriert ist, den Code, der auf einem nicht-transitorischen Medium gehalten werden soll, zu erkennen und/oder auszuführen. Darüber hinaus bezieht sich in einer weiteren Ausführungsform die Verwendung eines Moduls auf das nicht-transitorische Medium, das den Code enthält, der spezifisch ausgelegt ist, durch die Mikrosteuereinheit ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie gefolgert werden kann, kann sich in noch einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination aus der Mikrosteuereinheit und dem nicht-transitorischen Medium beziehen. Häufig variieren und potentiell überlappen gewöhnlich Modulgrenzen, die als separat dargestellt sind. Beispielsweise können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination daraus gemeinsam verwenden, während sie potentiell einige unabhängige Hardware, Software oder Firmware beibehalten. In einer Ausführungsform enthält die Verwendung des Begriffs Logik Hardware, wie z. B. Transistoren, Register und andere Hardware, wie z. B. programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „zum“ oder „konfiguriert zum“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammensetzen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Konstruieren einer Einrichtung, Hardware, Logik oder eines Elements, um eine designierte oder bestimmte Aufgabe auszuführen. In diesem Beispiel ist eine Einrichtung oder ein Element davon, das nicht arbeitet, immer noch „konfiguriert zum“ Ausführen einer designierten Aufgabe, falls es konstruiert, gekoppelt und/oder zusammengeschaltet ist, um diese designierte Aufgabe auszuführen. Als ein rein erläuterndes Beispiel kann ein Logikgatter eine 0 oder eine 1 während des Betriebs bereitstellen. Ein Logikgatter, das jedoch „konfiguriert zum“ Bereitstellen eines Freigabesignals für einen Takt ist, enthält nicht jedes potentielle Logikgatter, das eine 1 oder eine 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf eine Weise gekoppelt ist, dass die während der Operation ausgegebene 1 oder 0 zum Freigeben des Takts dient. Es wird noch einmal darauf hingewiesen, dass die Verwendung des Begriffs „konfiguriert zum“ keinen Betrieb erfordert, sondern stattdessen auf den latenten Zustand einer Einrichtung, Hardware und/oder eines Elements fokussiert, wobei der latente Zustand der Einrichtung, Hardware und/oder des Elements konstruiert ist, um eine spezielle Aufgabe auszuführen, wenn die Einrichtung, Hardware und/oder das Element arbeitet.
  • Darüber hinaus bezieht sich die Verwendung der Begriffe „fähig zum“ und/oder „betreibbar zum“ in einer Ausführungsform auf eine Einrichtung, Logik, Hardware und/oder ein Element, die/das auf eine solche Weise konstruiert ist, um die Verwendung der Einrichtung, Logik, Hardware und/oder des Elements auf eine spezifizierte Weise zu ermöglichen. Wie vorstehend wird darauf hingewiesen, dass sich die Verwendung von zum, fähig zum, betreibbar zum in einer Ausführungsform auf den latenten Zustand einer Einrichtung, Logik, Hardware und/oder eines Elements bezieht, wenn die Einrichtung, Logik, Hardware und/oder das Element nicht arbeitet, sondern auf eine solche Weise konstruiert ist, die Verwendung der Einrichtung auf eine spezifizierte Weise zu ermöglichen.
  • Ein Wert, wie er hier verwendet ist, enthält irgendeine bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig ist die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre logische Zustände repräsentiert. Beispielsweise bezieht sich eine 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen tiefen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie z. B. ein Transistor oder eine Flash-Zelle, zum Halten eines einzelnen logischen Wert oder mehrerer logischer Werte fähig sein. Andere Repräsentation von Werten in Computersystemen sind jedoch verwendet worden. Beispielsweise kann die Dezimalzahl zehn auch als Binärwert 1010 und einen hexadezimalen Buchstaben A repräsentiert sein. Deshalb enthält ein Wert irgendeine Repräsentation von Informationen, die fähig ist, in einem Computersystem gehalten zu werden.
  • Außerdem können Zustände durch Werte oder Abschnitte von Werten repräsentiert sein. Als ein Beispiel kann ein erster Wert, wie z. B. eine logische Eins, einen Standard- oder initialen Zustand repräsentieren, während ein zweiter Wert, wie z. B. eine logische Null, einen Nicht-Standard-Wert repräsentieren kann. Zusätzlich beziehen sich die Begriff zurückgesetzt und eingestellt in einer Ausführungsform auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Beispielsweise enthält ein Standardwert potentiell einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d. h. eingestellt, enthält. Es wird darauf hingewiesen, dass irgendeine Kombination aus Werten benutzt werden kann, um irgendeine Anzahl von Zuständen zu repräsentieren.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorstehend dargelegt sind, können über Anweisungen oder Code implementiert sein, die/der auf einem für eine Maschine zugänglichen, maschinenlesbaren, für einen Computer zugänglichen oder computerlesbaren Medium gespeichert sein, die durch ein Verarbeitungselement ausführbar sind. Ein durch eine Maschine zugängliches/lesbares nicht-transitorisches Medium enthält irgendeinen Mechanismus, der Informationen in einer durch eine Maschine, wie z. B. einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Beispielsweise enthält ein für eine Maschine zugängliches nicht-transitorisches Medium Direktzugriffsspeicher (RAM), wie z. B. statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichereinrichtungen; akustische Speichereinrichtungen; andere Formen von Speichereinrichtungen zum Halten von Informationen, die aus transitorischen (ausgebreiteten) Signalen (z. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von die nicht-transitorischen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Offenbarung auszuführen, können innerhalb eines Speichers in dem System, wie z. B. DRAM, Cache, Flash-Speicher, oder einer anderen Speichereinrichtung gespeichert sein. Darüber hinaus können die Anweisungen über ein Netz oder mit Hilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form, ohne darauf beschränkt zu sein, Floppy-Disketten, optische Platten, Compact-Disc, Festwertspeicher (CD-ROMs), magneto-optische Platten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Festwertspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder eine greifbare maschinenlesbare Speichereinrichtung, die zur Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet werden, enthalten. Dementsprechend enthält das computerlesbare Medium irgendeinen Typ eines greifbaren maschinenlesbaren Mediums, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Die Bezugnahme durchgehend in dieser Spezifikation auf „eine Ausführungsform“ bedeutet, dass ein/e spezielle/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit bezieht sich das Auftreten des Ausdrucks „in einer Ausführungsform“ an verschiedenen Orten durchgehend in dieser Spezifikation nicht notwendigerweise immer auf dieselbe Ausführungsform. Darüber hinaus können die speziellen Merkmale, Strukturen oder Eigenschaften auf irgendeine geeignete Weise in einer oder mehreren Ausführungsformen kombiniert sein.
  • In der vorstehenden Spezifikation ist eine ausführliche Beschreibung mit Bezug auf spezifische beispielhafte Ausführungsformen gegeben worden. Es wird jedoch offensichtlich sein, dass verschiedene Modifikationen und Veränderungen daran vorgenommen werden können, ohne von dem weiteren Geist und Schutzbereich der Offenbarung, wie sie in den beigefügten Ansprüchen dargelegt sind, abzuweichen. Die Spezifikation und die Zeichnungen sind dementsprechend in einem erläuternden Sinn und nicht in einem einschränkenden Sinn zu betrachten. Darüber hinaus bezieht sich das vorstehende Verwenden von Ausführungsform und anderer beispielhafter Ausdrucksweise nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich sowohl auf unterschiedliche und unterscheidbare Ausführungsformen als auch potentiell dieselbe Ausführungsform beziehen.
  • Die Systeme, Verfahren und Einrichtungen können eines oder eine Kombination aus den folgenden Beispielen enthalten:
  • Beispiel 1 ist eine Einrichtung, die eine Anwendungsschichtlogik, die wenigstens teilweise in Hardware-Schaltungsanordnung implementiert ist; einen ersten Port zum Übertragen von Informationen über eine mehrspurige Verbindungsstrecke, wobei der erste Port einen Protokoll-Stack umfasst; ein Speicherelement, wobei das Speicherelement eine Abbildung zwischen einem Ereignisbezeichnerwert und einem Ereignisbezeichnerträgerwert umfasst, wobei der Ereignisbezeichner ein Ereignis identifiziert, das durch die Anwendungsschichtlogik über die mehrspurige Verbindungsstrecke ausgeführt werden soll, der Ereignisbezeichnerträgerwert auf den Ereignisbezeichner abgebildet ist und die Anwendungsschichtlogik zum Übertragen des Ereignisbezeichnerträgerwerts über die Verbindungsstrecke vor dem Ausführen des Ereignisses dient, umfasst.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 enthalten, wobei der Ereignisbezeichnerträgerwert eine Nummer des Werts der schnellen Trainingssequenz (N_FTS-Wert) umfasst, wobei der N_FTS-Wert einem Ereignis entspricht, das durch die Anwendungsschichtlogik auszuführen ist.
  • Beispiel 3 kann den Gegenstand von Beispiel 1 enthalten, wobei die Einrichtung zum Codieren des Ereignisbezeichnerträgerwerts in einem reservierten Feld in einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) dient.
  • Beispiel 4 kann den Gegenstand eines der Beispiele 1-3 enthalten, wobei die Anwendungsschichtlogik zum Übertragen des Ereignisbezeichnerträgerwerts unter Verwendung einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) über eine Bitübertragungsschicht eines Protokoll-Stacks über die Verbindungsstrecke dient.
  • Beispiel 5 kann den Gegenstand von Beispiel 4 enthalten, wobei die Verbindungsstrecke einen L1-Leistungssubzustand umfasst und wobei die TS1 OS ein Verbindungsstreckentraining für die Verbindungsstrecke zum Eintreten in einen LO-Zustand triggert.
  • Beispiel 6 kann den Gegenstand eines der Beispiele 1-5 enthalten, wobei das Speicherelement durch ein Betriebssystem oder einen Host-Treiber konfiguriert ist, Ereignisbezeichnerwerte auf Ereignisbezeichnerträgerwerte abzubilden.
  • Beispiel 7 kann den Gegenstand eines der Beispiele 1-3 und 5-6 enthalten, der ferner eine Schnittstelle separat von der Verbindungsstrecke zur Übertragung eines Ereignisbezeichnerwerts zu einer weiteren Einrichtung umfasst.
  • Beispiel 8 kann den Gegenstand eines der Beispiele 1-7 enthalten, wobei das Speicherelement einen Sende- (TX-) hinweiskontextadressierbaren Speicher umfasst, der eine Abbildung zwischen Ereignisbezeichnerwerten auf Ereignisbezeichnerträgerwerte enthält, und einen Empfangs- (RX-) hinweiskontextadressierbaren Speicher, der eine Abbildung für empfangene Ereignisbezeichnerträgerwerte zum Identifizieren von Ereignisbezeichnerwerten enthält.
  • Beispiel 9 kann den Gegenstand eines der Beispiele 1-8 enthalten, wobei die Anwendungsschichtlogik einen Systemagenten umfasst, wobei der Systemagent zum Triggern von oder Reagieren auf Ereignisse und zum Veranlassen der Identifizierung von Ereignisbezeichnerträgerwerten basierend auf einem Ereignis und zum Übertragen der Ereignisbezeichnerträgerwerte über die Verbindungsstrecke oder über eine dedizierte Ereignisbezeichnerträgerwertschnittstelle dient.
  • Beispiel 10 kann den Gegenstand eines der Beispiele 1-9 enthalten, wobei die Verbindungsstrecke und der Protokoll-Stack mit einem „Peripheral Component Interconnect Express“- (PCIe-) basierten Protokoll konform sind.
  • Beispiel 11 ist ein computerimplementiertes Verfahren, das Identifizieren eines frühen Hinweiswerts, der einem Triggerereignis zugeordnet ist; Identifizieren aus einem hinweiskontextadressierbaren Speicher eines Hinweisträgerwerts, der auf den frühen Hinweis abgebildet ist; Senden des Hinweisträgers über eine aus einer mehrspurigen Verbindungsstrecke oder eine dedizierte Hinweisträgerschnittstelle umfasst.
  • Beispiel 12 kann den Gegenstand von Beispiel 11 enthalten, wobei der Hinweisträgerwert eine Nummer des Werts der schnellen Trainingssequenz (N_FTS-Wert) umfasst, wobei der N_FTS-Wert dem frühen Hinweis, der dem Triggerereignis zugeordnet ist, entspricht.
  • Beispiel 13 kann den Gegenstand von Beispiel 11 enthalten, wobei das Verfahren das Codieren des Hinweisträgerwerts in ein reserviertes Feld einer TS1 OS umfasst.
  • Beispiel 14 kann den Gegenstand eines der Beispiele 11-13 enthalten, der ferner das Übertragen des Hinweisträgerwerts unter Verwendung einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) über einer aus einer Bitübertragungsschicht eines Protokoll-Stacks über die Verbindungsstrecke oder eine dedizierte Schnittstelle umfasst.
  • Beispiel 15 kann den Gegenstand von Beispiel 14 enthalten, wobei das Übertragen der TS1 OS über die Verbindungsstrecke bewirkt, dass die Verbindungsstrecke ein Verbindungsstreckentraining von einem L1-Zustand zu einem LO-Zustand durchläuft.
  • Beispiel 16 kann den Gegenstand eines der Beispiele 11-15 enthalten, wobei das Verfahren das Konfigurieren der Abbildung zwischen frühen Hinweiswerten und entsprechenden Hinweisträgerwerten basierend auf Konfigurationsinformationen, die von einem Betriebssystem oder einem Host-Treiber empfangen werden, umfasst.
  • Beispiel 17 kann den Gegenstand eines der Beispiele 11-16 enthalten, der ferner das Ausführen des Triggerereignisses umfasst, wobei das Ausführen des Triggerereignisses das Übertragen von Daten über die Verbindungsstrecke umfasst.
  • Beispiel 18 ist ein Berechnungssystem, das eine erste Vorrichtung, die eine erste Hinweis-Engine (HTE) umfasst, wobei die Hinweis-Engine ein Speicherelement umfasst, wobei der Speicher eine Abbildung zwischen einem frühen Hinweiswert und einem Hinweisträgerwert umfasst; eine zweite Vorrichtung umfasst, die eine zweite HTE umfasst, die eine Abbildung zwischen dem Hinweisträgerwert und dem frühen Hinweiswert umfasst; wobei die erste Vorrichtung mit der zweiten Vorrichtung über eine mehrspurige Verbindungsstrecke verbunden ist; wobei, in Reaktion auf ein Triggerereignis, die erste Vorrichtung zum Identifizieren eines frühen Hinweiswerts, der dem Triggerereignis zugeordnet ist, Identifizieren eines Hinweisträgerwerts, der dem frühen Hinweiswert entspricht, basierend auf einer in der ersten HTE gespeicherten Abbildung, Erweitern der geordneten Menge von Trainingssymbolen mit dem Hinweisträgerwert und Übertragen der geordneten Menge von Trainingssymbolen zu der zweiten Vorrichtung dient. Beim Empfangen der geordneten Menge von Trainingssymbolen die zweite Vorrichtung zum Bestimmen des frühen Hinweises, der dem mit der geordneten Menge von Trainingssymbolen empfangenen Hinweisträgers entspricht; Bestimmen des Triggerereignisses basierend auf dem frühen Hinweis; und Implementieren einer oder mehrerer Leistungsstrategien zum Vorbereiten auf das Triggerereignis dient.
  • Beispiel 19 kann den Gegenstand von Beispiel 18 enthalten, wobei die geordnete Menge von Trainingssymbolen eine geordnete Menge von Trainingssymbolen 1 (TS1 OS) umfasst und wobei die erste Vorrichtung zum Übertragen der TS1 OS über eine Bitübertragungsschicht eines Protokoll-Stacks dient, wobei die TS1 OS zum Initiieren eines Verbindungsstreckentrainings für die mehrspurige Verbindungsstrecke zum Überleiten der mehrspurigen Verbindungsstrecke von einem L1-Zustand in einen LO-Zustand dient.
  • Beispiel 20 kann den Gegenstand von Beispiel 18 enthalten, wobei die erste Vorrichtung zum Übertragen der geordneten Menge von Trainingssymbolen zu der zweiten Vorrichtung über eine dedizierte Schnittstelle dient.
  • Beispiel 21 kann den Gegenstand von Beispiel enthalten, ein System, das einen Switch-Komplex, der einen ersten nachgelagerten Port, der mit einer ersten mehrspurigen Verbindungsstrecke gekoppelt ist, einen zweiten nachgelagerten Port, der mit einer zweiten mehrspurigen Verbindungsstrecke gekoppelt ist, und eine Hinweis-Engine-Logik umfasst, wobei die Hinweis-Engine-Logik ein Speicherelement umfasst, das eine Abbildung zwischen einem frühen Hinweis, der einem Transaktionsereignis zugeordnet ist, und einem Hinweisträger umfasst, eine erste Vorrichtung, die mit dem Switch-Komplex durch die erste mehrspurige Verbindungsstrecke gekoppelt ist, wobei die erste Vorrichtung eine erste lokale Hinweis-Engine-Logik umfasst; eine zweite Vorrichtung umfasst, die mit dem Switch-Komplex durch die zweite mehrspurige Verbindungsstrecke gekoppelt ist, wobei die zweite Vorrichtung eine zweite lokale Hinweis-Engine-Logik umfasst. Die erste Vorrichtung dient zum Initiieren eines Transaktionsereignisses, das für die zweite Vorrichtung bestimmt ist, Codieren eines Trainingssymbols mit einem Hinweisträger, der einem frühen Hinweis entspricht, der dem Transaktionsereignis zugeordnet ist, und Übertragen des Trainingssymbols zu dem ersten nachgelagerten Port des Switch-Komplexes. Der Switch-Komplex dient zum Bereitstellen einer Angabe des Transaktionsereignisses für die zweite Vorrichtung. Die zweite Vorrichtung dient zum Vorbereiten auf das Transaktionsereignis, getriggert durch die erste Vorrichtung, basierend auf dem Empfangen der Angabe des Transaktionsereignisses von dem Switch-Komplex.
  • Beispiel 22 kann den Gegenstand von Beispiel 21 enthalten, wobei der Switch-Komplex zum Decodieren des Trainingssymbols durch die Hinweis-Engine-Logik zum Identifizieren des frühen Hinweises, der dem Transaktionsereignis zugeordnet ist; und Übertragen des frühen Hinweises zu der zweiten Vorrichtung dient.
  • Beispiel 23 kann den Gegenstand von Beispiel 21 enthalten, wobei der Switch-Komplex zum Übertragen der geordneten Menge von Trainingssymbolen und des Hinweisträgers zu der zweiten Vorrichtung dient; und wobei die zweite Vorrichtung zum Decodieren des Hinweisträgers durch die zweite lokale Hinweis-Engine-Logik zum Identifizieren des frühen Hinweises, der dem Transaktionsereignis zugeordnet ist; Anwenden einer oder mehrerer Leistungsstrategien zum Vorbereiten auf das durch den frühen Hinweis angegebene Transaktionsereignis dient.
  • Beispiel 24 kann den Gegenstand eines der Beispiele 21-23 enthalten, wobei die geordnete Menge von Trainingssymbolen eine geordnete Menge von Trainingssymbolen 1 (TS1 OS) umfasst; und wobei die erste lokale Hinweis-Engine-Logik den Hinweisträger in einem Feld der TS1 OS codiert, wobei das Feld eines aus einem Feld einer Anzahl schneller Trainingssequenzen (N_FTS-Feld) oder einem reservierten Feld der TS1 OS umfasst.
  • Beispiel 25 kann den Gegenstand eines der Beispiele 21-24 enthalten, wobei die erste Vorrichtung zum Bewirken, dass die erste Verbindungsstrecke ein Verbindungsstreckentraining zu einem LO-Zustand basierend auf der Übertragung des Trainingssymbols durchläuft, und Ausführen des Transaktionsereignisses, nachdem die erste Verbindungsstrecke den LO-Zustand erreicht, dient. Der Switch-Komplex dient zum Bewirken, dass die zweite Verbindungsstrecke ein Verbindungsstreckentraining zu einem LO-Zustand basierend auf der Übertragung der Angabe des Transaktionsereignisses durchläuft, und Übertragen des Transaktionsereignisses zu der zweiten Vorrichtung, nachdem die zweite Verbindungsstrecke den LO-Zustand erreicht.
  • Beispiel 26 ist eine Einrichtung, die Mittel zum Abbilden eines Hinweises für ein Transaktionsereignis auf einen Hinweisträger; Mittel zum Identifizieren eines Hinweisträgers für ein Transaktionsereignis; Mittel zum Codieren einer geordneten Menge von Trainingssymbolen mit dem Hinweisträger; Mittel zum Übertragen der geordneten Menge von Trainingssymbolen zu einer verbundenen Vorrichtung umfasst.
  • Beispiel 27 ist ein Computerprogrammprodukt, das greifbar auf nicht-transitorischen computerlesbaren Medien verwirklicht ist, wobei das Computerprogrammprodukt Befehle umfasst, die dann, wenn sie ausgeführt werden, bewirken, dass ein Berechnungssystem einen frühen Hinweiswert, der einem Triggerereignis zugeordnet ist, identifiziert; aus einem hinweiskontextadressierbaren Speicher einen Hinweisträgerwert, der auf den frühen Hinweis abgebildet ist, identifiziert; und den Hinweisträger über eine aus einer mehrspurigen Verbindungsstrecke oder eine dedizierte Hinweisträgerschnittstelle überträgt.

Claims (25)

  1. Einrichtung, die Folgendes umfasst: eine Anwendungsschichtlogik, die wenigstens teilweise in Hardware-Schaltungsanordnung implementiert ist; einen ersten Port zum Übertragen von Informationen über eine Verbindungsstrecke, wobei der erste Port einen Protokoll-Stack umfasst; ein Speicherelement, wobei das Speicherelement eine Abbildung zwischen einem Ereignisbezeichnerwert und einem Ereignisbezeichnerträgerwert umfasst, wobei der Ereignisbezeichnerwert ein Ereignis identifiziert, das durch die Anwendungsschichtlogik über die Verbindungsstrecke ausgeführt werden soll, der Ereignisbezeichnerträgerwert auf den Ereignisbezeichnerwert abgebildet ist und die Anwendungsschichtlogik zum Übertragen des Ereignisbezeichnerträgerwerts über die Verbindungsstrecke vor dem Ausführen des Ereignisses dient.
  2. Einrichtung nach Anspruch 1, wobei der Ereignisbezeichnerträgerwert eine Nummer des Werts der schnellen Trainingssequenz (N_FTS-Wert) umfasst, wobei der N_FTS-Wert einem Ereignis entspricht, das durch die Anwendungsschichtlogik auszuführen ist.
  3. Einrichtung nach Anspruch 1, wobei die Einrichtung zum Codieren des Ereignisbezeichnerträgerwerts in einem reservierten Feld in einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) dient.
  4. Einrichtung nach Anspruch 1, wobei die Anwendungsschichtlogik zum Übertragen des Ereignisbezeichnerträgerwerts unter Verwendung einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) über eine Bitübertragungsschicht eines Protokoll-Stacks über die Verbindungsstrecke dient.
  5. Einrichtung nach Anspruch 4, wobei die Verbindungsstrecke einen L1-Leistungssubzustand umfasst und wobei die TS1 OS ein Verbindungsstreckentraining für die Verbindungsstrecke zum Eintreten in einen LO-Zustand triggert.
  6. Einrichtung nach Anspruch 1, wobei das Speicherelement durch ein Betriebssystem oder einen Host-Treiber konfiguriert ist, Ereignisbezeichnerwerte mit Ereignisbezeichnerträgerwerten abzubilden.
  7. Einrichtung nach Anspruch 1, die ferner eine Schnittstelle separat von der Verbindungsstrecke zur Übertragung des Ereignisbezeichnerwerts zu einer weiteren Einrichtung umfasst.
  8. Einrichtung nach Anspruch 1, wobei das Speicherelement einen Sende- (TX-) hinweiskontextadressierbaren Speicher, der eine Abbildung zwischen Ereignisbezeichnerwerten auf Ereignisbezeichnerträgerwerte enthält, und einen Empfangs- (RX-) hinweiskontextadressierbaren Speicher, der eine Abbildung für empfangene Ereignisbezeichnerträgerwerte zum Identifizieren von Ereignisbezeichnerwerten enthält, umfasst.
  9. Einrichtung nach Anspruch 1, wobei die Anwendungsschichtlogik einen Systemagenten umfasst, wobei der Systemagent zum Triggern von oder Reagieren auf Ereignisse und zum Veranlassen der Identifizierung von Ereignisbezeichnerträgerwerten basierend auf einem Ereignis und zum Übertragen der Ereignisbezeichnerträgerwerte über die Verbindungsstrecke oder über eine dedizierte Ereignisbezeichnerträgerwertschnittstelle dient.
  10. Einrichtung nach Anspruch 1, wobei die Verbindungsstrecke und der Protokoll-Stack mit einem „Peripheral Component Interconnect Express“- (PCIe-) basierten Protokoll konform sind.
  11. Computerimplementiertes Verfahren, das Folgendes umfasst: Identifizieren eines frühen Hinweiswerts, der einem Triggerereignis zugeordnet ist; Identifizieren, aus einem hinweiskontextadressierbaren Speicher, eines Hinweisträgerwerts, der auf den frühen Hinweis abgebildet ist; und Übertragen des Hinweisträgers über eine aus einer Verbindungsstrecke oder einer dedizierten Hinweisträgerschnittstelle.
  12. Verfahren nach Anspruch 11, wobei der Hinweisträger eine Nummer des Werts der schnellen Trainingssequenz (N_FTS-Wert) umfasst, wobei der N_FTS-Wert dem frühen Hinweis entspricht, der dem Triggerereignis zugeordnet ist.
  13. Verfahren nach Anspruch 11, das ferner Codieren des Hinweisträgerwerts in ein reserviertes Feld einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) umfasst.
  14. Verfahren nach Anspruch 11, das ferner das Übertragen des Hinweisträgerwerts unter Verwendung einer geordneten Menge von Trainingssymbolen 1 (TS1 OS) über eine aus einer Bitübertragungsschicht eines Protokoll-Stacks über die Verbindungsstrecke oder eine dedizierte Schnittstelle umfasst.
  15. Verfahren nach Anspruch 14, wobei das Übertragen der TS1 OS über die Verbindungsstrecke bewirkt, dass die Verbindungsstrecke ein Verbindungsstreckentraining von einem L1-Zustand zu einem LO-Zustand durchläuft.
  16. Verfahren nach Anspruch 11, das ferner Konfigurieren der Abbildung zwischen frühen Hinweiswerten und entsprechenden Hinweisträgerwerten basierend auf Konfigurationsinformationen, die von einem Betriebssystem oder einem Host-Treiber empfangen werden, umfasst.
  17. Verfahren nach Anspruch 11, der ferner das Ausführen des Triggerereignisses umfasst, wobei das Ausführen des Triggerereignisses das Übertragen von Daten über die Verbindungsstrecke umfasst.
  18. Berechnungssystem, das Folgendes umfasst: eine erste Vorrichtung, die Folgendes umfasst: eine erste Hinweis-Engine (HTE), wobei die Hinweis-Engine ein Speicherelement umfasst, wobei der Speicher eine Abbildung zwischen einem frühen Hinweiswert und einem Hinweisträgerwert umfasst; eine zweite Vorrichtung, die eine zweite HTE umfasst, wobei die zweite HTE eine Abbildung zwischen dem Hinweisträgerwert und dem frühen Hinweiswert umfasst; wobei die erste Vorrichtung mit der zweiten Vorrichtung über eine Verbindungsstrecke verbunden ist; wobei in Reaktion auf ein Triggerereignis die erste Vorrichtung dient zum: Identifizieren eines frühen Hinweiswerts, der dem Triggerereignis zugeordnet ist, Identifizieren eines Hinweisträgerwerts, der dem frühen Hinweiswert entspricht, basierend auf einer in der ersten HTE gespeicherten Abbildung, Erweitern einer geordneten Menge von Trainingssymbolen mit dem Hinweisträgerwert, und Übertragen der geordneten Menge von Trainingssymbolen zu der zweiten Vorrichtung; wobei beim Empfangen der geordneten Menge von Trainingssymbolen die zweite Vorrichtung dient zum: Bestimmen des frühen Hinweises, der dem Hinweisträger, der mit der geordneten Menge von Trainingssymbolen empfangen wird, entspricht; Bestimmen des Triggerereignisses basierend auf dem frühen Hinweis; und Implementieren einer oder mehrerer Leistungsstrategien zum Vorbereiten auf das Triggerereignis.
  19. Berechnungssystem nach Anspruch 18, wobei die geordnete Menge von Trainingssymbolen eine geordnete Menge von Trainingssymbolen 1 (TS1 OS) umfasst und wobei die erste Vorrichtung zum Übertragen der TS1 OS über eine Bitübertragungsschicht eines Protokoll-Stacks dient, wobei die TS1 OS zum Initiieren eines Verbindungsstreckentrainings für die Verbindungsstrecke zum Überleiten der Verbindungsstrecke von einem L1-Zustand in einen LO-Zustand dient.
  20. Berechnungssystem nach Anspruch 18, wobei die erste Vorrichtung zum Übertragen der geordneten Menge von Trainingssymbolen zu der zweiten Vorrichtung über eine dedizierte Schnittstelle dient.
  21. System, das Folgendes umfasst: einen Switch-Komplex, der Folgendes umfasst: einen ersten nachgelagerten Port, der mit einer ersten Verbindungsstrecke gekoppelt ist, einen zweiten nachgelagerten Port, der mit einer zweiten Verbindungsstrecke gekoppelt ist, und Hinweis-Engine-Logik, wobei die Hinweis-Engine-Logik ein Speicherelement umfasst, das eine Abbildung zwischen einem frühen Hinweis, der einem Transaktionsereignis zugeordnet ist, und einem Hinweisträger umfasst, eine erste Vorrichtung, die mit dem Switch-Komplex durch die erste Verbindungsstrecke gekoppelt ist, wobei die erste Vorrichtung eine erste lokale Hinweis-Engine-Logik umfasst; eine zweite Vorrichtung, die mit dem Switch-Komplex durch die zweite Verbindungsstrecke gekoppelt ist, wobei die zweite Vorrichtung eine zweite lokale Hinweis-Engine-Logik umfasst; wobei die erste Vorrichtung dient zum: Initiieren eines Transaktionsereignisses, das für die zweite Vorrichtung bestimmt ist, Codieren eines Trainingssymbols mit einem Hinweisträger, der einem frühen Hinweis, der dem Transaktionsereignis zugeordnet ist, entspricht, und Übertragen des Trainingssymbols zu dem ersten nachgelagerten Port des Switch-Komplexes; wobei der Switch-Komplex zum Bereitstellen einer Angabe des Transaktionsereignisses für die zweite Vorrichtung dient; wobei die zweite Vorrichtung dient zum: Vorbereiten auf das Transaktionsereignis, das durch die erste Vorrichtung getriggert ist, basierend auf dem Empfangen der Angabe des Transaktionsereignisses von dem Switch-Komplex.
  22. System nach Anspruch 21, wobei der Switch-Komplex dient zum: Decodieren des Trainingssymbols durch die Hinweis-Engine-Logik zum Identifizieren des frühen Hinweises, der dem Transaktionsereignis zugeordnet ist; und Übertragen des frühen Hinweises zu der zweiten Vorrichtung.
  23. System nach Anspruch 21, wobei der Switch-Komplex zum Übertragen der geordneten Menge von Trainingssymbolen und des Hinweisträgers zu der zweiten Vorrichtung dient; und wobei die zweite Vorrichtung dient zum: Decodieren des Hinweisträgers durch die zweite lokale Hinweis-Engine-Logik zum Identifizieren des frühen Hinweises, der dem Transaktionsereignis zugeordnet ist; Anwenden einer oder mehrerer Leistungsstrategien zum Vorbereiten auf das durch den frühen Hinweis angegebene Transaktionsereignis.
  24. System nach Anspruch 21, wobei die geordnete Menge von Trainingssymbolen eine geordnete Menge von Trainingssymbolen 1 (TS1 OS) umfasst; und wobei die erste lokale Hinweis-Engine-Logik den Hinweisträger in einem Feld der TS1 OS codiert, wobei das Feld eines aus einem Feld einer Anzahl schneller Trainingssequenzen (N_FTS-Feld) oder einem reservierten Feld der TS1 OS umfasst.
  25. System nach Anspruch 21, wobei die erste Vorrichtung dient zum: Veranlassen, dass die erste Verbindungsstrecke ein Verbindungsstreckentraining zu einem LO-Zustand basierend auf der Übertragung des Trainingssymbols durchläuft, und Ausführen des Transaktionsereignisses, nachdem die erste Verbindungsstrecke den LO-Zustand erreicht; und wobei der Switch-Komplex dient zum: Veranlassen, dass die zweite Verbindungsstrecke ein Verbindungsstreckentraining zu einem LO-Zustand basierend auf der Übertragung der Angabe des Transaktionsereignisses durchläuft, und Übertragen des Transaktionsereignisses zu der zweiten Vorrichtung, nachdem die zweite Verbindungsstrecke den LO-Zustand erreicht.
DE102019129618.8A 2018-12-13 2019-11-04 Befördern früher hinweisinformationen für zustandsänderungen physikalischer verbindungsstrecken Pending DE102019129618A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/219,922 US20190114281A1 (en) 2018-12-13 2018-12-13 Conveying early hint information for physical link state changes
US16/219,922 2018-12-13

Publications (1)

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

Family

ID=66096475

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019129618.8A Pending DE102019129618A1 (de) 2018-12-13 2019-11-04 Befördern früher hinweisinformationen für zustandsänderungen physikalischer verbindungsstrecken

Country Status (2)

Country Link
US (1) US20190114281A1 (de)
DE (1) DE102019129618A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720404B2 (en) 2020-07-16 2023-08-08 Samsung Electronics Co., Ltd. Systems and methods for arbitrating access to a shared resource
US11509751B2 (en) * 2020-12-23 2022-11-22 Dell Products L.P. Self-describing system using single-source/multi-destination cable
US11762785B2 (en) * 2021-05-03 2023-09-19 Mellanox Technologies, Ltd. Peripheral component interconnect attributes shared using address bits
CN115102780B (zh) * 2022-07-15 2022-12-06 飞腾信息技术有限公司 数据传输方法、相关装置、系统及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899111B2 (en) * 2007-08-07 2011-03-01 Intel Corporation Link interface technique including data indicator symbols
US8117350B2 (en) * 2009-11-03 2012-02-14 Oracle America, Inc. Configuration space compaction
TWI413907B (zh) * 2010-06-02 2013-11-01 Realtek Semiconductor Corp 一種用於訊號傳輸之省電方法及裝置
US8856573B2 (en) * 2012-06-27 2014-10-07 Intel Corporation Setting a number (N) of fast training sequences (FTS) automatically to an optimal value
WO2017098591A1 (ja) * 2015-12-09 2017-06-15 株式会社日立製作所 計算機及びストレージ装置を有するシステム、及びシステムの制御方法

Also Published As

Publication number Publication date
US20190114281A1 (en) 2019-04-18

Similar Documents

Publication Publication Date Title
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE102019129618A1 (de) Befördern früher hinweisinformationen für zustandsänderungen physikalischer verbindungsstrecken
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE102018005753A1 (de) Serdes link training
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen