DE102020101958A1 - Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen - Google Patents

Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen Download PDF

Info

Publication number
DE102020101958A1
DE102020101958A1 DE102020101958.0A DE102020101958A DE102020101958A1 DE 102020101958 A1 DE102020101958 A1 DE 102020101958A1 DE 102020101958 A DE102020101958 A DE 102020101958A DE 102020101958 A1 DE102020101958 A1 DE 102020101958A1
Authority
DE
Germany
Prior art keywords
controller
fia
circuitry
lanes
physical layer
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
DE102020101958.0A
Other languages
English (en)
Inventor
Chih-Cheh Chen
Janusz Jurski
Amit Kumar SRIVASTAVA
Malay Trivedi
James Mitchell
Piotr Michael Kwidzinski
David Lombard
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 DE102020101958A1 publication Critical patent/DE102020101958A1/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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency

Landscapes

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

Abstract

Eine Einrichtung umfasst Bitübertragungsschichtschaltkreise mit Spuren zur Kopplung der Einrichtung mit Endpunktvorrichtungen; eine erste Eingabe-/Ausgabe- bzw. E/A-Steuerung zur Kopplung eines ersten Prozessors mit den Bitübertragungsschichtschaltkreisen, und eine zweite E/A-Steuerung zur Kopplung eines zweiten Prozessors mit den Bitübertragungsschichtschaltkreisen. Die erste und zweite E/A-Steuerung sind mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel. Die Einrichtung umfasst außerdem einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA, der die erste und zweite E/A-Steuerung mit den Spuren koppelt. Der FIA vergibt selektiv Zugriff auf jede Spur der Spuren durch entweder die erste oder zweite E/A-Steuerung. Die Einrichtung umfasst außerdem eine kommunikativ mit dem FIA gekoppelte Power-Management-Steuerung bzw. PMC. Die PMC bewirkt, dass der FIA Zugriff auf mindestens eine der Spuren durch die erste oder zweite E/A-Steuerung ohne einen Reboot-Zyklus dynamisch vergibt.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft ein Datenverarbeitungssystem und insbesondere (aber nicht ausschließlich) dynamisches Spurzugriffswechseln zwischen PCle-Wurzelräumen.
  • STAND DER TECHNIK
  • Interconnects können verwendet werden, um Kommunikation zwischen verschiedenen Komponenten eines Systems (z. B. zwischen einem Prozessor und einer Peripherievorrichtung) bereitzustellen, wobei eine bestimme Art von Interconnect-Protokoll zur Ermöglichung der Kommunikation verwendet wird. Einige Interconnects können ein auf PCI Express™ bzw. PCIe™ (Peripheral Component Interconnect Express) basierendes Kommunikationsprotokoll verwenden. Dieses Kommunikationsprotokoll ist ein Beispiel für ein Interconnect-System mit Lade/Speicher-E/A (Eingabe/Ausgabe). Die Kommunikation zwischen den Vorrichtungen wird typischerweise gemäß diesem Protokoll seriell mit sehr hohen Geschwindigkeiten durchgeführt. In typischen Interconnects auf PCIe-Basis können zwischen Systemkomponenten über eine oder mehrere physische Spuren hergestellte Kommunikationsverbindungen statisch sein, was bedeutet, dass die Spuren nicht anderen Kommunikationsverbindungen zugewiesen werden können, ohne einen Reboot-Zyklus zu erfordern.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines Datenverarbeitungssystems mit einer beispielhaften Interconnect-Architektur.
    • 2 zeigt eine Ausführungsform einer beispielhaften Interconnect-Architektur mit einem geschichteten Stapel.
    • 3 zeigt eine Ausführungsform einer Anforderung oder eines Pakets, die bzw. das in einer beispielhaften Interconnect-Architektur zu erzeugen oder zu empfangen ist.
    • 4 zeigt eine Ausführungsform eines Sender- und -Empfänger-Paars für eine beispielhafte Interconnect-Architektur.
    • 5 zeigt eine Ausführungsform einer beispielhaften Interconnect-Architektur gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6 zeigt eine Ausführungsform eines beispielhaften Spurzugriffswechselns zwischen PCIe-Steuerungen in einer Interconnect-Architektur.
    • 7 zeigt eine Ausführungsform der Signalisierung zwischen einer Power-Management-Steuerung (PMC) und einem Betriebssystem (OS) zum dynamischen Vergeben von Zugriff an Bitübertragungsschichtspuren einer Interconnect-Architektur.
    • 8 zeigt eine Ausführungsform eines Prozesses zum selektiven Steuern des Zugriffs auf Bitübertragungsschichtspuren einer Interconnect-Architektur durch mehrere Eingabe-/Ausgabe- bzw. E/A-Steuerungen.
    • 9 zeigt eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem mit einem Mehrkernprozessor.
    • 10 zeigt eine Ausführungsform eines Blocks für ein Datenverarbeitungssystem mit mehreren Prozessoren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele spezifischer Prozessorarten und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische architekturelle und mikroarchitekturelle Einzelheiten, spezifische Registerkonfigurationen, spezifische Anweisungsarten, spezifische Systemkomponenten, spezifische Abmessungen/Höhen, spezifische/r Prozessor-Pipelinestufen und -betrieb, usw., um ein ausführliches Verständnis der vorliegenden Offenbarung bereitzustellen. Es wird allerdings für den Fachmann ersichtlich sein, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Offenbarung umzusetzen. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische(r) Logikschaltungen/-code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Interconnect-Betrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compilerimplementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Runterfahr- und Gattertechniken/-logik und andere spezifische Betriebseinzelheiten von Computersystemen nicht ausführlich beschrieben, um unnötiges Verundeutlichen der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Verbesserungen in spezifischen Rechensystemen, wie etwa in Rechenplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen bei anderen Arten integrierter Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hierin beschriebener Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von besserer Energieeffizienz und Energieerhaltung profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Und können auch in anderen Einrichtungen verwendet werden, wie etwa tragbaren Einrichtungen, Tablets oder dünnen Notebooks, System-on-Chip(SoC)-Einrichtungen und eingebetteten Anwendungen. Manche Beispiele für tragbare Einrichtungen beinhalten Zellulartelefone, Internetprotokolleinrichtungen, Digitalkameras, Personal-Digital-Assistants (PDAs) und tragbare PCs. Eingebettete Anwendungen beinhalten typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System-on-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, WAN-Switches (WAN: Wide Area Network - großflächiges Netzwerk) oder ein beliebiges anderes System, das die nachfolgend gelehrten Funktionen und Operationen ausführen kann. Darüber hinaus sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Recheneinrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energieerhaltung und -effizienz betreffen. Wie in der nachfolgenden Beschreibung sofort ersichtlich ist, sind die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (ob mit Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine mit Leistungsfähigkeitserwägungen ausgewogene Zukunft einer „grünen Technologie“ unverzichtbar.
  • Mit der Weiterentwicklung von Rechensystemen werden die Komponenten darin komplexer. Infolgedessen erfährt die Interconnect-Architektur zum Koppeln und Kommunizieren zwischen den Komponenten auch zunehmende Komplexität, um zu gewährleisten, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Ferner verlangen unterschiedliche Marktsegmente unterschiedliche Aspekte von Interconnect-Architekturen, um sich für die Marktbedürfnisse zu eignen. Beispielsweise erfordern Server höhere Performanz, während das mobile Ökosystem manchmal in der Lage ist, eine Gesamtperformanz für Leistungseinsparungen zu opfern. Dennoch ist es ein einziger Zweck der meisten Strukturen, höchstmögliche Performanz mit maximaler Leistungseinsparung bereitzustellen. Im Folgenden wird eine Anzahl von Interconnects diskutiert, die potentiell von Aspekten der hierin beschriebenen Erfindung profitieren würden.
  • Eine Interconnect-Struktur-Architektur beinhaltet die PCIe-Architektur (Peripheral-Component-Interconnect(PCI)-Express). Ein Hauptziel von PCle besteht darin, es Komponenten und Einrichtungen verschiedener Hersteller zu ermöglichen, in einer offenen Architektur, die mehrere Marktsegmente umspannt, zu interagieren; Clients (Desktops und mobil), Server (Standard, Rack-Konfiguration und Enterprise) sowie eingebettete Einrichtungen und Kommunikationseinrichtungen. PCI-Express ist ein universelles Hochleistungs-E/A-Interconnect, das für eine breite Vielfalt zukünftiger Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie etwa das Verwendungsmodell, die Ladespeicherarchitektur und Softwareschnittstellen, wurden durch ihre Revisionen aufrechterhalten, während frühere Parallel-Bus-Implementierungen durch eine hoch skalierbare, vollkommen serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI-Express nutzen die Vorteile von Fortschritten bei Punkt-zu-Punkt-Interconnects, switchbasierter Technologie und paketiertem Protokoll, um neue Performanz- und Merkmalsniveaus zu liefern. Leistungsverwaltung, Dienstqualität (QoS: Quality of Service), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den verbesserten Merkmalen, die durch PCI-Express unterstützt werden.
  • Mit Bezug auf 1 ist eine Ausführungsform einer Struktur dargestellt, die aus Punkt-zu-Punkt-Verbindungen zusammengesetzt ist, die eine Menge von Komponenten miteinander verbinden. Das System 100 umfasst einen Prozessor 105 und mit dem Steuerungshub 115 gekoppelten Systemspeicher 110. Der Prozessor 105 umfasst ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder anderen Prozessor. Der Prozessor 105 kann mittels eines FSB (Front-Side-Bus) 106 mit dem Steuerungshub 115 gekoppelt sein. Bei einer Ausführungsform kann der FSB 106 ein serielles Punkt-zu-Punkt-Interconnect sein, wie nachfolgend beschrieben. Bei einer anderen Ausführungsform umfasst die Verbindung 106 eine serielle Differenz-Interconnect-Architektur, die einen anderen Interconnect-Standard einhält. Bei einigen Implementierungen kann das System Logik zur Implementierung mehrerer Protokollstapel und weitere Logik zur Aushandlung von alternativen Protokolls, die über einer gemeinsamen Bitübertragungsschicht laufen zu lassen sind, umfassen, neben anderen beispielhaften Merkmalen.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung, wie etwa RAM (Direktzugriffsspeicher), nichtflüchtigen bzw. NV-Speicher oder anderen Speicher, der Vorrichtungen in dem System 100 zugänglich ist. Der Systemspeicher 110 ist mittels der Speicherschnittstelle 116 mit dem Steuerungshub 115 gekoppelt. Beispiele für eine Speicherschnittstelle wären eine DDR-Speicherschnittstelle (Doppeldatenrate), eine Zweikanal-DDR-Schnittstelle und eine dynamische RAM- bzw. DRAM-Speicherschnittstelle.
  • Beispiele für den Steuerungshub 115 wären ein Chipsatz, ein Plattform-Steuerungshub (PCH), ein Speicher-Steuerungshub (MCH), eine Northbridge, ein Interconnect-Steuerungshub (ICH), eine Southbridge und eine Wurzelsteuerung/Hub. Der Ausdruck Chipsatz kann sich in einigen Fällen auf einen Plattform-Steuerungshub (PCH) und in anderen Fällen auf zwei physisch getrennte Steuerungshubs beziehen, d. h. einen Speicher-Steuerungshub (MCH), der mit einem Interconnect-Steuerungshub (ICH) gekoppelt ist. Bei einigen Ausführungsformen ist der Steuerungshub 115 ein Wurzelhub, Wurzelkomplex oder eine Wurzelsteuerung in einer Zwischenverbindungshierarchie von PCle oder PCIE (Peripheral Component Interconnect Express). Peer-to-Peer-Routing kann gegebenenfalls mittels des Steuerungshub 115 als Wurzelkomplex unterstützt werden. Bei anderen Ausführungsformen kann der Prozessor 105 Wurzelhub-, Wurzelkomplex-, und/oder Wurzelsteuerungsfunktionalität in einer PCIe-Zwischenverbindungshierarchie umfassen, während der Steuerungshub 115 auf ähnliche Weise wie nachfolgend beschrieben mit E/A-Vorrichtungen kommunizieren soll.
  • In dem gezeigten Beispiel ist der Steuerungshub 115 mittels der seriellen Verbindung 119 mit dem Switch/der Brücke 120 gekoppelt. Eingabe-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel zur Bereitstellung von Kommunikation zwischen dem Steuerungshub 115 und dem Switch 120. Bei einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 gekoppelt werden. In dem gezeigten Beispiel ist der Switch 120 mittels der seriellen Verbindung 123 mit der Vorrichtung 125 gekoppelt, und die Eingabe-/Ausgabemodule 122 und 126, die auch als Schnittstellen/Ports 122 und 126 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel zur Bereitstellung von Kommunikation zwischen dem Switch 120 und der Vorrichtung 125. Der Switch/die Brücke 120 routet Pakete/Nachrichten von der Vorrichtung 125 signalaufwärts, d. h. eine Hierarchie in Richtung eines Wurzelkomplexes hinauf zu dem Steuerungshub 115 und signalabwärts, d. h. eine Hierarchie von der Wurzelsteuerung weg hinab von dem Prozessor 105 oder Systemspeicher 110 zu der Vorrichtung 125. Der Switch 120 wird bei einer Ausführungsform als logische Baugruppe mehrerer virtueller PCI-zu-PCI-Brückenvorrichtungen bezeichnet.
  • Die Vorrichtung 125 umfasst jede beliebige interne oder externe Vorrichtung oder Komponente zur Kopplung mit einem elektronischen System, wie etwa eine E/A-Vorrichtung, eine Netzwerkschnittstellensteuerung (NIC), eine Zusatzkarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speicherungsvorrichtung, eine CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speicherungsvorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabevorrichtungen. In der PCIe-Umgangssprache wird eine solche Vorrichtung oft als Endpunkt bezeichnet. Obwohl es nicht speziell gezeigt ist, kann die Vorrichtung 125 eine Brücke von PCle zu PCI/PCI-X-umfassen, um veraltete oder PCI-Vorrichtungen einer anderen Version zu unterstützen. Endpunktvorrichtungen in PCle werden oft als veraltete, PCle- oder integrierte Wurzelkomplexendpunkte klassifiziert.
  • Der Grafikbeschleuniger 130 ist auch mittels der seriellen Verbindung 132 mit dem Steuerungshub 115 gekoppelt. Bei einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und dementsprechend die E/A-Vorrichtung 125 ist dann mit dem ICH gekoppelt. Die E/A-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Steuerungshub 115 zu kommunizieren. Ähnlich wie bei der obigen MCH-Besprechung kann eine Grafiksteuerung oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert oder damit gekoppelt sein. Ferner können eine oder mehrere Verbindungen des Systems eine oder mehrere Erweiterungsvorrichtungen umfassen, wie etwa Retimer, Repeater usw.
  • Nunmehr mit Bezug auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 umfasst eine beliebige Form von geschichtetem Kommunikationsstapel, wie etwa einen QPI-Stapel (Quick Path Interconnect), einen UPI-Stapel (Ultra Path Interconnect), einen PCIe-Stapel, einen hochleistungsfähigen Datenverarbeitungs-Interconnect-Stapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl sich die unmittelbar nachfolgende Besprechung in Bezug auf 1-4 auf einen PCIe-Stapel bezieht, können dieselben Konzepte auf andere Interconnect-Stapel angewandt werden. Bei einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel mit einer Transaktionsschicht 205, einer Sicherungsschicht 210 und Bitübertragungsschicht 220. Eine Schnittstelle, wie etwa die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 repräsentiert sein. Die Repräsentation als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle zur Implementierung/zum Enthalten eines Protokollstapels bezeichnet werden.
  • PCI Express verwendet Pakete zum Übermitteln von Informationen zwischen Komponenten. Pakete werden in der Transaktionsschicht 205 und Sicherungsschicht 210 gebildet, um Informationen von der sendenden Komponente zu der empfangenden Komponente zu führen. Während die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die notwendig sind, um mit den Paketen in diesen Schichten umzugehen. Auf der Empfangsseite tritt der umgekehrte Prozess auf und Pakete werden aus ihrer Repräsentation der Bitübertragungsschicht 220 in die Repräsentation der Sicherungsschicht 210 transformiert und schließlich (für Transaktionsschichtpakete) in die Form, die durch die Transaktionsschicht 205 der empfangenden Vorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Interconnect-Architektur, wie etwa der Sicherungsschicht 210 und der Bitübertragungsschicht 220, bereitstellen. In dieser Hinsicht ist eine Hauptverantwortung der Transaktionsschicht 205 das Zusammenstellen und Auseinandernehmen von Paketen (d. h. Transaktionsschichtpaketen oder TLP). Die Transaktionsschicht 205 verwaltet typischerweise Flusssteuerung auf Kreditbasis für TLP. PCle implementiert aufgeteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, wodurch eine Verbindung anderen Verkehr führen kann, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zusätzlich benutzt PCle Flusssteuerung auf Kreditbasis. Bei diesem Schema kündigt eine Vorrichtung für jeden der Empfangspuffer in der Transaktionsschicht 205 eine anfängliche Menge an Kredit an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie etwa der Steuerungshub 115 in 1, zählt die Anzahl der durch jedes TLP konsumierten Kredite. Eine Transaktion kann gesendet werden, wenn die Transaktion ein Kreditlimit nicht übersteigt. Bei Empfang einer Antwort wird eine Menge an Kredit wiederhergestellt. Ein Vorteil eines Kreditschemas ist, dass sich die Latenz der Kreditrückgabe nicht auf die Leistungsfähigkeit auswirkt, solange nicht auf das Kreditlimit gestoßen wird.
  • Bei einer Ausführungsform umfassen vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, eine Eingabe/Ausgabe-Adressenraum und einen Nachrichtenadressenraum. Speicherraumtransaktionen umfassen Leseanforderungen und/oder Schreibanforderungen zum Transfer von Daten zu/von einem Speicher-abgebildeten Ort. In einer Ausführungsform können Speicherraumtransaktionen zwei verschiedene Adressenformate verwenden, z. B. ein kurzes Adressenformat, wie etwa eine 32-Bit-Adresse, oder ein langes Adressenformat, wie etwa 64-Bit-Adresse. Konfigurationsraumtransaktionen dienen zum Zugreifen auf den Konfigurationsraum der PCIe-Vorrichtungen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden definiert, um Inband-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Deshalb stellt bei einer Ausführungsform die Transaktionsschicht 205 den Paketheader/Nutzinformationen 206 zusammen. Das Format für aktuelle Paketheader/Nutzinformationen ist in der PCIe-Spezifikation auf der PCIe-Spezifikationswebsite zu finden.
  • Unter kurzer Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. Bei einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Führen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 Identifikation von Transaktionen in einem System. Andere potentielle Verwendungszwecke wären das Verfolgen von Modifikationen von Vorgabetransaktionsanordnungen und Assoziation von Transaktion mit Kanälen.
  • Der Transaktionsdeskriptor 300 umfasst ein Global-Kennungsfeld 302, ein Attribute-Feld 304 und ein Kanalkennungsfeld 306. In dem dargestellten Beispiel ist das Global-Kennungsfeld 302 mit einem Lokal-Transaktions-Kennungsfeld 308 und einem Quellenkennungsfeld 310 abgebildet. Bei einer Ausführungsform ist die Global-Transaktionskennung 302 einzigartig für alle unerledigten Anforderungen.
  • Gemäß einer Implementierung ist das Lokal-Transaktionskennungsfeld 308 ein durch einen anfordernden Agenten erzeugtes Feld und ist für alle unerledigten Anforderungen, die einen Abschluss für diesen anfordernden Agenten erfordern, einzigartig. Ferner identifiziert in diesem Beispiel die Quellenkennung 310 eindeutig den Anfordereragenten in einer PCle-Hierarchie. Zusammen mit der Quellen-ID 310 stellt dementsprechend das Lokal-Transaktionskennungsfeld 308 globale Identifikation einer Transaktion in einer Hierarchiedomäne bereit.
  • Das Attribute-Feld 304 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attribute-Feld 304 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die Modifikation des Vorgabeumgangs mit Transaktionen erlauben. Bei einer Ausführungsform umfasst das Attribute-Feld 304 ein Prioritätsfeld 302, ein Reserviert-Feld 314, ein Anordnungsfeld 316 und ein No-Snoop-Feld 318. Hier kann das Prioritäts-Teilfeld 312 durch einen Initiator modifiziert werden, um eine Priorität an die Transaktion zu vergeben. Das Reserviert-Attributfeld 314 wird für zukünftige oder von Vertreiber definierte Benutzung reserviert gelassen. Mögliche Benutzungsmodelle, die Priorität oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Anordnungs-Attributfeld 316 verwendet, um optionale Informationen zu liefern, die die Art von Anordnung übermitteln, die Vorgabe-Anordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bezeichnet ein Anordnungsattribut von „0“, dass Vorgabe-Anordnungsregeln gelten sollen, wobei ein Anordnungsattribut von „1“ gelockerte Anordnung bezeichnet, wobei Schreibvorgänge an Schreibvorgängen in derselben Richtung vorbeikommen können, und Leseabschlüsse an Schreibvorgängen in derselben Richtung vorbeikommen können. Das Snoop-Attributfeld 318 wird benutzt, um zu bestimmen, ob Transaktionen gesnoopt werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Sicherungsschicht
  • Die Sicherungsschicht 210, die auch als Datensicherungsschicht 210 bezeichnet wird, wirkt als Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220. Bei einer Ausführungsform besteht die Verantwortung der Sicherungsschicht 210 in der Bereitstellung eines zuverlässigen Mechanismus zum Austausch von Transaktionsschichtpaketen (TLP) zwischen zwei Komponenten einer Verbindung. Eine Seite der Sicherungsschicht 210 nimmt durch die Transaktionsschicht 205 zusammengestellte TLP an, wendet die Paketsequenzkennung 211, d. h. eine Identifikationsnummer oder Paketnummer, an und berechnet einen Fehlerdetektionscode, d. h. CRC 212, und wendet diesen an und leitet die modifizierten TLP zu der Bitübertragungsschicht 220 zur Übertragung über eine physische zu einer externen Vorrichtung.
  • Bitübertragungsschicht
  • Bei einer Ausführungsform umfasst die Bitübertragungsschicht 220 einen logischen Teilblock 221 und einen elektrischen Teilblock 222 zum physischen Senden eines Pakets zu einer externen Vorrichtung. Der logische Teilblock 221 ist hierfür die „digitalen“ Funktionen der Bitübertragungsschicht 220 verantwortlich. In dieser Hinsicht umfasst der logische Teilblock einen Sendeteil zum Erstellen abgehender Informationen zur Übertragung durch den physischen Teilblock 222 und einen Empfängerteil zum Identifizieren und Erstellen empfangener Informationen, bevor sie zu der Sicherungsschicht 210 geleitet werden.
  • Der physische Block 222 umfasst einen Sender und einem Empfänger. Der Sender wird durch den logischen Teilblock 221 mit Symbolen beliefert, die der Sender serialisiert und zu einer externen Vorrichtung weitersendet. Der Empfänger erhält serialisierte Symbole von einer externen Vorrichtung und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird deserialisiert und dem logischen Teilblock 221 zugeführt. Bei einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 zu framen. Zusätzlich stellt der Empfänger in einem Beispiel auch einen aus dem ankommenden seriellen Strom wiederhergestellten Symboltakt bereit.
  • Wie oben angegeben ist, obwohl die Transaktionsschicht 205, die Sicherungsschicht 210 und die Bitübertragungsschicht 220 in Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels besprochen werden, ein geschichteter Protokollstapel nicht darauf beschränkt. Tatsächlich kann jedes beliebige geschichtete Protokoll enthalten/implementiert sein. Beispielsweise umfasst ein Port/eine Schnittstelle, der bzw. die als geschichtetes Protokoll repräsentiert ist, (1) eine erste Schicht zum Zusammenstellen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Sicherungsschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine Bitübertragungsschicht. Als spezifisches Beispiel wird ein geschichtetes CSI-Protokoll (Common Standard Interface) benutzt.
  • Nunmehr mit Bezug auf 4 ist eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Struktur dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf beschränkt, da sie einen beliebigen Übertragungspfad zum Übertragen von seriellen Daten umfasst. Bei der gezeigten Ausführungsform umfasst eine grundlegende PCIe-Verbindung zwei differenziell angesteuerte Niederspannungs-Signalpaare: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend umfasst die Vorrichtung 405 Übertragungslogik 406 zum Senden von Daten zu der Vorrichtung 410 und Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410. Anders ausgedrückt sind zwei Sendepfade, d. h. die Pfade 416 und 417, und zwei Empfangspfade, d. h. die Pfade 418 und 419, in einer PCIe-Verbindung enthalten.
  • Ein Übertragungspfad bezieht sich auf einen beliebigen Pfad zum Übertragen von Daten, wie etwa eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie etwa der Vorrichtung 405 und der Vorrichtung 410, wird als Verbindung, wie etwa Verbindung 415, bezeichnet. Eine Verbindung kann eine oder mehrere Spuren unterstützen - jede Spur repräsentiert eine Menge von Differenz-Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere Spuren aggregieren, was mit xN bezeichnet wird, wobei N eine beliebige unterstützte Verbindungsbreite ist, wie etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzpaar bezieht sich auf zwei Übertragungspfade, wie etwa die Leitungen 416 und 417, zum Übertragen von Differenzsignalen. Wenn beispielsweise die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d. h. bei einer ansteigenden Flanke, fährt die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel, d. h. eine fallende Flanke. Differenzsignale zeigen potenziell bessere elektrische Eigenschaften, wie etwa bessere Signalintegrität, d. h. Übersprechen, Spannungsunterschwingen/-überschwingen, Klingeln usw. Dies erlaubt ein besseres Timingfenster, was schnellere Übertragungsfrequenzen ermöglicht.
  • Bei einigen Implementierungen kann ein hochleistungsfähiges Interconnect und entsprechendes Interconnect-Protokoll (wie z. B. ein Interconnect auf PCIe-Basis der nächsten Generation) bereitgestellt werden, das zum Betrieb mit hohen Geschwindigkeiten wie 25 GT/s und/oder 32 GT/s fähig ist. In einem Beispiel können zwei Geschwindigkeiten für das hochleistungsfähige Interconnect, eine bei 25 GT/s und 32 GT/s, auf der Basis der für den Kanal (z. B. während des Verbindungstrainings) bestimmten Eigenschaften definiert werden. Das Interconnect kann bei einer Implementierung mit existierenden PCIe-Generationen und für diese Generationen bereitgestellten Geschwindigkeiten (z. B. 8 GT/s, 16 GT/s usw.) rückwärtskompatibel sein.
  • 5 zeigt eine Ausführungsform einer beispielhaften Interconnect-Architektur gemäß Ausführungsform der vorliegenden Offenbarung. Das beispielhafte System 500 umfasst mehrere Host-CPU 502, die mittels einer Verbindung 505 mit einem Plattform-Steuerungshub (PCH) 506 verbunden sind. Die Verbindung 505 kann als eine DMI (Direct Media Interface) implementiert werden, die ein Interconnect-Protokoll wie z. B. DMI 2.0 oder DMI 3.0 benutzen kann. In einigen Fällen kann eine CPU über die DMI-Schnittstelle kommunikativ mit dem PCH gekoppelt sein und alle CPU können über ein Interconnect zwischen Prozessoren (z. B. über QPI (Quick Path Interconnect) oder UPI (Ultra Path Interconnect)) kommunikativ miteinander gekoppelt sein.
  • Jede CPU 502 kann eine beliebige Art von Prozessor oder Verarbeitungsvorrichtung umfassen, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen DSP (digitalen Signalprozessor), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein SOC (System auf einem Chip) oder eine andere Vorrichtung zum Ausführen von Code. Jede CPU 502 kann einen oder mehrere Kerne (z. B. 503A, 503B) und Wurzelkomplexlogik (z. B. 504) umfassen. Die Wurzelkomplexlogik kann eine oder mehrere Wurzelkomplexfunktionen für ein Interconnect-Protokoll auf PCIe-Basis ausführen und kann einen Host-CPU-Wurzelraum in dem System 500 herstellen. Das Herstellen eines Wurzelraums in dem System 500 kann umfassen, einen bestimmten Wurzelport einer Interconnect-Architektur (z. B. einer auf PCIe-basierenden Interconnect-Architektur) entsprechend einem bestimmten Prozessor (z. B. einem einer CPU 502 entsprechenden Wurzelport) mit einer Endpunktvorrichtung 518 zu assoziieren, wie etwa durch Programmierung von Hardware-Konfigurationsregistern (z. B. während einer Bootsequenz), um Zugriff auf bestimmte Interconnect-Ressourcen (z. B. Bitübertragungsschichtspuren) an den bestimmten Wurzelport zu vergeben, so dass eine Software- oder Firmwareinstanz (SW/FW-Instanz), die auf dem Prozessor entsprechend dem Wurzelport ausgeführt wird, Zugriff auf oder Kontrolle über die Endpunktvorrichtung 518 (z. B. Zugriff auf Hardwareregister der Endpunktvorrichtung) hat. Jeder Wurzelraum kann mindestens eine entsprechende E/A-Steuerung in dem PCH 506 aufweisen, die Kommunikation zwischen einer SW/FW-Instanz (z. B. einem Betriebssystem) und der zugeordneten Endpunktvorrichtung ermöglicht. Zum Beispiel kann ein Host-CPU-Wurzelraum eine Host-CPU-Wurzelraum-PCIe-Steuerung aufweisen, die auf PCle basierende Kommunikation zwischen einer CPU 502 und einer Endpunktvorrichtung 518 ermöglicht, und ein ME-Wurzelraum kann eine ME-Wurzelraum-PCIe-Steuerung aufweisen, die auf PCle basierende Kommunikation zwischen dem Prozessor 508 in der ME 507 und einer Endpunktvorrichtung 518 ermöglicht. Bei einigen Ausführungsformen kann jeder Wurzelraum des Systems 500 als von anderen Wurzelräumen des Systems 500 unabhängig betrachtet werden.
  • Der PCH 506 umfasst eine Verwaltbarkeits-Engine (ME) 507, eine Power-Management-Steuerung (PMC) 510, mehrere Eingabe-/Ausgabe- bzw. E/A-Steuerungen 513, einen flexiblen E/A-Adapter (FIA) 514 und Bitübertragungsschichtschaltkreise 515. Der PCH 506 ist über die Verbindung 516, die eine oder mehrere Spuren (z. B. Hochgeschwindigkeits-E/A-bzw. HSIO-Spuren) umfasst, um Kommunikation zwischen dem PCH 506 und den Endpunktvorrichtungen 518 bereitzustellen, mit einer oder mehreren Endpunktvorrichtungen 516 gekoppelt. Die ME 507 und die PMC 510 umfassen jeweils einen Prozessor (z. B. jeweils 508, 511) und Speicher (z. B. jeweils 509, 512), und sie können jeweils ein Betriebssystem (OS) implementieren. Die Prozessoren 508, 511 können jeweils eine beliebige Art von Prozessor oder Verarbeitungsvorrichtung sein, wie etwa ein Mikroprozessor, ein eingebetteter Prozessor, ein DSP (digitaler Signalprozessor), ein Netzwerkprozessor, ein Handheld-Prozessor, ein Anwendungsprozessor, ein Coprozessor, ein SOC (System auf einem Chip) oder eine andere Vorrichtung zum Ausführen von Code. Die Speicher 509, 512 können eine beliebige geeignete Art von computerlesbarem Medium umfassen, das jeweils den Prozessoren 508, 511 zugänglich ist. Zum Beispiel können die Speicher 509, 512 Anweisungen speichern, die durch die Prozessoren 508, 511 jeweils ausführbar sind, um eine SW/FW-Instanz in dem System 500 zu implementieren.
  • Der Prozessor 508 der ME 507 kann über in dem Speicher 509 gespeicherte Firmware ein ME-OS implementieren. Zum Beispiel kann bei einigen Ausführungsformen die ME 507 eine von Intel® bereitgestellte Verwaltbarkeits-Engine, eine von Intel® bereitgestellte Innovations-Engine, eine von Intel® bereitgestellte CSE (Converged Security Engine) oder CSME (Converged Security Management/Manageability Engine); von Intel® bereitgestellte TXT (Trusted Execution Technology); und/oder dergleichen sein. Ferner können bei einigen Ausführungsformen die ME-Schaltkreise in Verbindung mit von Intel® bereitgestellter AMT (Active Management Technology) und/oder vPro™-Technologie (vPro) von Intel® arbeiten. Die AMT von Intel® und/oder vPro™ von Intel® können Fernbereitstellung eines ME-OS auf der ME 507 und Fernverwaltung der ME 507 erlauben, sobald das ME-OS erfolgreich bereitgestellt wurde. In einigen Fällen kann der Prozessor 508 der Wurzelkomplexlogik 504 ähnliche Wurzelkomplexlogik umfassen, die es der ME 507 erlaubt, Wurzelkomplexfunktionalität zu implementieren und einen ME-Wurzelraum in dem System 500 (getrennt von dem Host-CPU-Wurzelraum des Systems 500) herzustellen. Der ME-Wurzelraum kann mindestens eine entsprechende E/A-Steuerung in dem PCH 506 aufweisen, die Kommunikation zwischen dem ME-Wurzelport/-Prozessor und der zugeordneten Endpunktvorrichtung ermöglicht. Zum Beispiel kann der ME-Wurzelraum eine ME-Wurzelraum-PCle-Steuerung aufweisen, die auf PCle basierende Kommunikation zwischen der SW/FW-Instanz (z. B. dem ME-OS), die auf dem ME-Prozessor 508 ausgeführt wird, und einer Endpunktvorrichtung 518 ermöglicht.
  • Außerdem kann in einigen Fällen der Prozessor 511 der PMC 510 über in dem Speicher 512 gespeicherte Firmware ein Power-Management-OS implementieren, um Power-Management-Funktionalität bereitzustellen. Zum Beispiel kann das Power-Management-OS Boot-/Rücksetzlogik implementieren, die Power-Management-Funktionen des PCH 506 administriert, darunter eine oder mehrere von: Schnittstellen mit anderer Logik und Steuerungen zur Durchführung von Power-Zustandsübergängen; Konfigurieren, Verwalten und Reagieren auf Weckereignisse; Aggregieren und Melden von Latenztoleranzinformationen für Vorrichtungen und Peripherievorrichtungen, die mit dem PCH verbunden oder integriert sind.
  • Jede E/A-Steuerung 513 umfasst Hardwareschaltkreise zur Ermöglichung von Kommunikation zwischen einer entsprechenden Wurzelraum-SW/FW-Instanz (z. B. einem auf einer CPU 502 ausgeführten Betriebssystem, einem auf dem ME-Prozessor 508 ausgeführten Betriebssystem oder einer anderen Art von SW/FW-Instanz, die auf einem anderen Prozessor des Systems 500 ausgeführt wird) und einer oder mehreren der Endpunktvorrichtungen 518. Die E/A-Steuerungen 513 können jeweils Kommunikation gemäß einem bestimmten Interconnect-Protokoll, wie etwa auf PCle basierenden Protokollen, auf USB basierenden Protokollen oder einer anderen Art von Protokoll ermöglichen. Jede E/A-Steuerung kann Hardwareschaltkreise umfassen, die mit Vorrichtungstreibern (z. B. dem Host-PCIe-Treiber oder ME-PCIe-Treiber) kommunizieren, um die Kommunikation zwischen ihrer entsprechenden SW/FW-Distanz und den Endpunktvorrichtungen 518 gemäß dem Interconnect-Protokoll zu ermöglichen. Die E/A-Steuerungen 513 weisen mittels des flexiblen E/A-Adapters (FIA) 514 eine Schnittstelle mit den Bitübertragungsschichtschaltkreisen 515 auf.
  • Der FIA 514 kann selektiv Zugriff auf die Spuren von 516 durch eine oder mehrere der E/A-Steuerungen 513 (z. B. eine Host-CPU-Wurzelraum-PCIe-Steuerung oder eine ME-Wurzelraum-PCIe-Steuerung, wie in 56 gezeigt und nachfolgend weiter beschrieben) auf der Basis von Befehlen oder anderen Informationen von der PMC 510 konfigurieren. Zum Beispiel kann der FIA 514 kontrollieren, welche E/A-Steuerung 513 (und somit welche Wurzelraum-SW/FW-Instanz) Zugriff auf jede Spur der Verbindung 516 hat und kann Zugriff auf die Spuren auf der Basis von Befehlen von der PMC 510 neu an eine andere SW/FW-Instanz-E/A-Steuerung vergeben, ohne dass ein Reboot-Zyklus erforderlich ist (der normalerweise zum Ändern von Kommunikationsverbindungen in einer PCIe-Interconnect-Architektur erforderlich ist, selbst wenn Wurzelports durch eine Vorrichtung des Multiplextyps geteilt werden). Ein Reboot-Zyklus kann sich auf einen kalten Boot-Zyklus oder Warm-Rücksetzzyklus beziehen. Außerdem kann bei einigen Ausführungsformen der FIA 514 selektiv Zugriff auf die Spuren durch eine oder mehrere einer Gigabit-Ethernet-Steuerung, einer USB-Steuerung mit xHCI (Extensible Host Controller Interface) und eine SATA-Steuerung mit ACHI (Advanced Host Controller Interface) konfigurieren. Der FIA 514 kann bei einigen Ausführungsformen Zugriff auf die Spuren der Verbindung 516 selektiv konfigurieren, indem auf jede Spur ein bestimmter Wurzelport abgebildet oder an diese vergeben wird. Bei einigen Ausführungsformen können Verbindungen zwischen jeder Wurzelraum-E/A-Steuerung so konfiguriert werden, als wären sie statisch, und der FIA kann auf der Basis der Konfigurationen Spuren auswählen und vergeben.
  • Moderne Computersysteme können mehrere SW/FW-Instanzen laufen lassen, wobei jede ihren eigenen PCIe-Wurzelraum (z. B. einen Host-CPU-Wurzelraum und einen ME-Wurzelraum, wie hier beschrieben) aufweist. In typischen PCIe-Systemen hat jeder konfigurierte Wurzelraum dedizierte PCIe-Ports. Das heißt, jeder PCIe-Port kann auf einen bestimmten Wurzelport eines Wurzelraums abgebildet werden, was bedeuten kann, dass an jede E/A-Steuerung statisch bestimmte Spuren von Bitübertragungsschichtschaltkreisen vergeben werden. Dadurch wird es unmöglich, eine Vorrichtung zwischen mehreren Wurzelräumen zu teilen, da aktuell ein Reboot-zyklus erforderlich ist, um PCIe-Portabbildungen zu ändern. Aspekte der vorliegenden Offenbarung können jedoch dynamisches Wurzelraumwechseln/Spurneuvergabe erlauben, ohne einen Reboot-Zyklus zu erfordern, indem wirksam ein FIA genutzt wird, der Spuren selektiv neu vergeben kann. Unter Verwendung des hier beschriebenen vorgeschlagenen Schemas kann es möglich sein, Spuren unter Verwendung einer PCIe-Steuerung, die Mehrfachfunktionen unterstützt, dynamisch zu ändern, und es kann auch möglich sein, Detektion mittels Systemstruktur (z. B. PSF) zu erweitern.
  • Die dynamische Steuerung und Auswahl von Spurvergaben durch den FIA kann zahlreiche Vorteile ergeben. Zum Beispiel kann es in einigen Fällen schnellen und effizienten Transfer großer Mengen an Daten zwischen zwei oder mehr Wurzelräumen ermöglichen (z. B. eine Software- oder Firmwareinstanz, die als Wurzelport in der Interconnect-Architektur wirkt). Zum Beispiel kann eine erste Wurzelvorrichtungsinstanz eine große Menge an Daten für eine über eine PCIe-Verbindung verbundene Speicherungsvorrichtung sparen und die Daten können unmittelbar oder nahezu unmittelbar einer zweiten Wurzelvorrichtungsinstanz zur Verfügung gestellt werden, indem die PCIe-Spuren neu an die zweite Vorrichtung vergeben werden (z. B. die Wurzelraumvergabe gewechselt wird). In einigen Fällen kann man damit die Bootzeit eines Mehrknotensystems beschleunigen. Beispielsweise kann ein OS-Boot-Image in einem HPC- bzw. iHochleistungsdatenverarbeitungs-Cluster auf eine PCIe-Speicherungsvorrichtung vorgeladen werden, die mit einem Knotenverwaltbarkeits-Subsystem (z. B. einer Verwaltbarkeits-Engine, wie etwa der ME 507 von 5) verbunden ist, und während der nachfolgenden Bootzeit auf die Host-CPU gewechselt werden. Dies kann Netzwerkstau vermeiden, wenn alle Knoten im Cluster ihre Images aus einem zentralisierten Speicherungsraum abrufen, da Vorladen des Image im Voraus über das Netzwerk geschehen kann, während der Host an der Datenverarbeitung seiner vorherigen Job-Daten arbeitet.
  • Außerdem kann dynamische Spurneuvergabe einer Wurzelvorrichtungsinstanz erlauben, Vorrichtungen zu verwalten, während der andere Wurzelraum sich im Energiesparzustand befindet. Beispielsweise kann, während sich ein Host-OS in einem Energiesparzustand (z. B. einem „Soft Off“-Zustand, wie etwa einem ACPI-S5-Plattform-Power-Zustand, wobei sich ein System in einem vollen Herunterfahren befindet, einem „schlafenden Zustand“, wie etwa einem ACPI-S4-Zustand oder einem anderen Energiesparzustand) befindet, eine FW-Instanz der Verwaltbarkeits-Engine (ME) ein PCIe-NVMe-Laufwerk verwalten, das normalerweise vom Host-OS verwendet wird, wenn es heraufgefahren ist (z. B. in einem Arbeitszustand, wie etwa einem ACPI-S0-Plattform-Power-Zustand, wobei das System voll benutzbar ist). Dies kann in einigen Fällen zur Optimierung des Vorrichtungs-Dateisystems, der Integritätsprüfung, des Virusscan usw. verwendet werden.
  • Ferner kann dynamische Spurneuvergabe eine niedrigere Gesamtzahl von durch eine Vorrichtung oder ein SoC (System auf einem Chip) unterstützten PCIe-Spuren erlauben, was potenziell die Kosten der Vorrichtung oder des SoC herabsetzt. Es werden weniger insgesamte Spuren benötigt, wenn Spuren flexibel zwischen Wurzelräumen gemäß Ändern der Nachfrage neu vergeben werden können. Wenn jeder von mehreren Wurzelräumen PCIe-Ports benötigt, kann dynamische Spurneuvergabe einem Systemverwaltungsagenten erlauben, eine Anzahl N von PCIe-Ports an einen Wurzelraum zu vergeben und eine verbleibende PCIe-Anzahl an den anderen Wurzelraum, wodurch die Anforderung, über einen dedizierten PCIe-Port für jeden Wurzelraum zu verfügen, (die abhängig von Plattformanforderungen verschwenderisch sein kann) entfällt. Sie kann auch einem Agenten erlauben, die Anzahl der PCIe-Ports zu jedem Wurzelraum auf der Basis sich ändernder Anforderungen/Bedürfnisse der Plattform dynamisch neu zu vergeben, ohne das System neu zu booten.
  • Weiterhin kann dynamische Spurneuvergabe Notfallzugriff auf auf einer PCIe-Vorrichtung gespeicherte Informationen erlauben, wenn der Wurzelraum, mit dem sie normalerweise verbunden ist, aufgrund eines Software-, Firmware- oder Hardwareausfalls funktionsunfähig wird. Zum Beispiel kann ein Host wichtige Wiederherstellungs- oder Debug-Daten während des Betriebs in einer PCIe-Speicherungsvorrichtung abspeichern, und die Daten (die ansonsten bisher nicht verfügbar wären) könnten im Fall eines Host-Absturzes durch eine ME-FW-Instanz wiederhergestellt werden, indem die PCle-Spur als Reaktion auf den Absturz neu an die ME-FW-Instanz vergeben wird. Dies kann in massiv parallelen Verarbeitungssystemen äußerst wertvoll sein, wenn ein Ausfall und Datenverlust eines der Datenverarbeitungsknoten sich auf alle anderen Knoten im System (das z. B. bis herauf zu zehntausende Knoten umfassen kann) auswirkt. Mit Ausführungsformen der vorliegenden Offenbarung können die knotenlokalen Checkpoint-Daten im Fall eines permanenten Knotenhardwareausfalls erreicht werden.
  • Die obigen Beispiele können in bestimmten Fällen auch kombiniert werden. Zum Beispiel kann das oben mit Bezug auf eine ME-FW-Instanz beschriebene Notfall-Zugriffsverfahren verwendet werden, um wichtige Daten von einer Vorrichtung wiederherzustellen, und eine Kombination des Boot-Image-Beispiels und des Beispiels mit energiesparenderem Zustand kann verwendet werden, um ein neues OS-Image neu zu installieren (wenn das vorherige verfälscht wurde). Auf diese Weise kann die reguläre Boot-Vorrichtung auch zu einer Wiederherstellungsvorrichtung werden, wodurch die oben mit Bezug auf das Entfallen der Notwendigkeit dedizierter PCIe-Ports beschriebenen Ersparnisse realisiert werden.
  • 6 zeigt eine Ausführungsform eines beispielhaften Spurzugriffswechsels zwischen PCIe-Steuerungen in einer Interconnect-Architektur. In dem gezeigten Beispiel umfasst ein System 600 eine Host-CPU-Wurzelraum-PCIe-Steuerung 602 und eine ME-Wurzelraum-PCIe-Steuerung 604, gekoppelt mit Bitübertragungsschichtschaltkreisen 608 über einen flexiblen E/A-Adapter (FIA) 606. Das System 600 umfasst ferner eine kommunikativ mit dem FIA 606 und den Bitübertragungsschichtschaltkreisen 608 gekoppelte Power-Management-Steuerung (PMC) 612. Ein oder mehrere Aspekte des Systems 600 können in einer Plattformsteuerungshub- bzw. PCH-Einrichtung, wie etwa dem PCH 506 von 5, implementiert werden. Zum Beispiel kann jede der PCIe-Steuerungen 602, 604 ähnlich wie die E/A-Steuerungen 513 von 5 implementiert werden, der FIA 606 ähnlich wie der FIA 514 von 5 implementiert werden, die Bitübertragungsschichtschaltkreise 608 ähnlich wie die Bitübertragungsschichtschaltkreise 515 von 5 implementiert werden und die PMC 612 ähnlich wie die PMC 510 von 5 implementiert werden.
  • Die PCIe-Steuerung 602 kann einen Hostprozessor (z. B. die CPU 502 von 5) mit den Bitübertragungsschichtschaltkreisen 608 koppeln, und die PCIe-Steuerung 604 kann einen ME-Prozessor (z. B. den Prozessor 508 von 5) mit den Bitübertragungsschichtschaltkreisen 608 koppeln. Die Bitübertragungsschichtschaltkreise 608 umfassen mehrere Spuren 609 zur Kopplung der Bitübertragungsschichtschaltkreise 608 mit den PCIe-Endpunktvorrichtungen 610. In dem gezeigten Beispiel umfassen die Bitübertragungsschichtschaltkreise 608 zwei Spuren 609A, die die Bitübertragungsschichtschaltkreise 608 mit der PCIe-Endpunktvorrichtung 610A koppeln, und zwei Spuren 609B, die die Bitübertragungsschichtschaltkreise 608 mit der PCIe-Endpunktvorrichtung 610B koppeln. Der FIA 606 umfasst Schaltkreise, die selektive Vergabe der Spuren 609 an eine der PCIe-Steuerungen 602 (und somit ihre jeweiligen Wurzelräume) erlauben, ohne einen Reboot-Zyklus zu erfordern. Der FIA 606 kann auf der Basis von Daten (z. B. Befehlen) von der PMC 612 eine oder mehrere der Spuren 609 an die PCIe-Steuerungen 602, 604 vergeben oder neu vergeben.
  • In dem gezeigten Beispiel wird die Vergabe der Spuren 609 dynamisch von dem Host-CPU-Wurzelraum auf den ME-Wurzelraum gewechselt. Dies kann als Reaktion auf eine Power-Zustandsänderung in dem Host-CPU-Wurzelraum durchgeführt werden. Zum Beispiel kann als Reaktion auf einen Absturz der auf der Host-CPU ausgeführten SW/FW-Instanz oder den Eintritt der Host-CPU in einen Energiesparzustand die PMC die Vergabe der PCIe-Endpunktvorrichtungen 610 von dem Host-CPU-Wurzelraum auf den ME-Wurzelraum wechseln. Wurzelraumwechsel/Spurneuvergabe von der Host-PCIe-Steuerung 602 zu der ME-Wurzelraum-PCIe-Steuerung 604 wird mittels des FIA 606 durchgeführt, der die Neuvergabe durch Neuabbildung der Spuren 609 von der Host-CPU-Wurzelraum-PCIe-Steuerung 602 auf die ME-Wurzelraum-PCIe-Steuerung 604 durchführt.
  • Das auf der PMC 612 ausgeführte Betriebssystem (OS) 614 erzeugt eine virtuelle Hot-Entfernungsereignisangabe für den Host-CPU-Wurzelraum und stellt die Hot-Entfernungsereignisangabe dem PMC-Treiber bereit. Außerdem kann das OS 614 eine Hot-Hinzufügeereignisangabe für den ME-Wurzelraum erzeugen und die Hot-Hinzufügeereignisangabe dem PMC-Treiber bereitstellen. Die PCIe-Steuerungen 602, 604 können jeweilige Interrupts erzeugen, die durch die Host- und ME-SW/FW-Instanzen (z. B. OS/BIOS) zu bedienen sind. Die Interrupts können angeben, dass ein Hot-Hinzufüge-/Entfernungsereignis in dem jeweiligen Wurzelraum geschieht. Die Software oder Firmware, die Hot-Plug-Ereignisse unterstützt, wird Verkehr zwischen den jeweiligen Wurzelräumen und der Endpunktvorrichtung bzw. den Endpunktvorrichtungen ruhig stellen (Hot-Entfernung) oder Herauffahren (Hot-Hinzufügung). Die PMC 612 stellt dann sicher, dass kein unerledigter Verkehr zwischen der Host-CPU und den Endpunktvorrichtungen 610 ansteht. Zum Beispiel kann die PMC in einigen Fällen verifizieren, dass sie eine ResetPrep-Nachricht von der Host-CPU-Wurzelraum-PCIe-Steuerung empfangen hat, oder kann eine durch die Host-CPU-Wurzelraum-PCIe-Steuerung bereitgestellte Angabe empfangen, die angibt, dass sie ruhig gestellt wird. Wenn es keinen anstehenden Verkehr gibt, befiehlt die PMC 612 dem FIA 606, die Spuren 609 neu an die ME-Wurzelraum-PCIe-Steuerung 604 zu vergeben. Bei bestimmten Ausführungsformen kann die PCIe-Steuerungseigentümerschaft auf der Basis von Folgendem bestimmt oder geändert werden: einer Bootzeit-Anforderung für das System für den Zugriff auf eine spezifische Wurzelraumvorrrichtung, eine vordefinierte Richtlinie, die einen Wurzelraumwechsel während Power-Zustandsübergängen von S0 zu Sx (z. B. S5) und Sx (z. B. S5) zu S0 verlangt, oder Laufzeit-Systemanforderungen oder OS-gesteuerten Anforderungen. In einigen Fällen kann der FIA 606 der Host-CPU-Wurzelraum-PCIe-Steuerung 602, der ME-Wurzelraum-PCIe-Steuerung 604 oder beiden eine Angabe der Spurneuvergabe bereitstellen, so dass die jeweiligen Steuerungen wissen können, welche Steuerung aktuell Zugriff auf die Spuren hat.
  • Zum Beispiel können bei einigen Ausführungsformen die Schritte zum Wechseln von Spurvergaben zwischen Wurzelräumen umfassen, dass die PMC 612 zuerst ein virtuelles Hot-Plug-Ereignis an die Wurzelraum-PCIe-Steuerung erzeugt, die aktuell die Bitübertragungsschicht-E/A-Spuren steuert (z. B. die Host-CPU-Wurzelraum-PCIe-Steuerung 602), um ein Hot-Entfernungsereignis anzugeben. Das dem aktuellen Wurzelraum zugeordnete OS/BIOS kann reagieren, indem es die aktuell vergebenen Bitübertragungsschicht-E/A-Spuren ruhig stellt, herunterfährt oder sperrt. Die PMC 612 kann darauf warten, dass die aktuelle PCIe-Steuerung die Bitübertragungsschichtspuren herunterfährt/sperrt, und kann dann bewirken, dass der FIA 606 Zugriff auf die Bitübertragungsschichtspuren für eine neue Wurzelraum-PCIe-Steuerung (z. B. die ME-Wurzelraum-PCIe-Steuerung 604) konfiguriert. Dann kann die PMC 612 ein virtuelles Hot-Plug-Ereignis an die neue Wurzelraum-PCIe-Steuerung erzeugen, um das Hot-Hinzufügen anzugeben, und das dem neuen Wurzelraum zugeordnete OS/BIOS kann reagieren, indem es die Bitübertragungsschicht-E/A-Spuren trainiert und Verkehr herauffährt, um die Endpunktvorrichtung(en) (z. B. 610) zu konfigurieren. Nachdem dies geschehen ist, wurden die PCIe-Spuren und verbundenen Endpunktvorrichtung(en) von dem ursprünglichen Wurzelraum auf den neuen Wurzelraum gewechselt, ohne einen Reboot-Zyklus zu erfordern.
  • 7 zeigt eine Ausführungsform der Signalisierung zwischen einer Power-Management-Steuerung (PMC) und einem Betriebssystem (OS) zum dynamischen Vergeben von Zugriff auf Bitübertragungsschichtspuren einer Interconnect-Architektur. Die PMC von 7 kann zum Beispiel die PMC 612 von 6 sein, und das OS von 7 kann zum Beispiel das OS 614 von 6 sein. Die Operationen von 7 erwähnen einen Host-CPU-Wurzelraum und ME-Wurzelraum, die dem Host-CPU-Wurzel- und ME-Wurzelraum, die oben beschrieben wurden, ähnlich sein können.
  • In den gezeigten Beispielen wird ein Host-CPU-Wurzelraum auf einen ME-Wurzelraum gewechselt. Als erstes prüft die PMC auf Boot-Inhibitoren bei 702 und setzt dann DRV_HOST_IP-Bit in der PMC auf den ME-Wurzelraum. Als Reaktion erzeugt das OS bei 706 ein Host-CPU-Wurzelraum-Hot-Entfernungsereignis und sendet bei 708 eine Zustandsübergangsbestätigung zu der PMC. Bei 710 wartet die PMC auf die Übergangsbestätigung, und wenn sie empfangen wird, bestimmt die PMC bei 712, ob der ME-HSIO-Port auf den Host-Raum gesetzt ist. Wenn dem so ist, steuert die PMC bei 714 einen flexiblen E/A-Adapter zum Wechsel des verbundenen Wurzelraums und zum Abbilden der HSIO-Spuren auf den ME-Wurzelraum. Nach dem Abschluss erzeugt die PMC bei 716 eine Wurzelraum-Wechselabschlussangabe an das OS.
  • 8 zeigt eine Ausführungsform eines Prozesses zum selektiven Steuern des Zugriffs auf Bitübertragungsschichtspuren einer Interconnect-Architektur durch mehrere Eingabe-/Ausgabe- bzw. E/A-Steuerungen. Operationen in dem beispielhaften Prozess 800 können durch Komponenten eines Systems ausgeführt werden, die eine PCIe-Interconnect-Architektur implementieren, und können in einigen Fällen durch einen Plattform-Steuerungshub (PCH) oder Komponenten davon (z. B. eine PMC) ausgeführt werden. Bei einigen Ausführungsformen kann ein computerlesbares Medium mit Anweisungen (z. B. einem Computerprogramm) codiert werden, die eine oder mehrere der Operationen in dem beispielhaften Prozess 800 implementieren. Der beispielhafte Prozess 800 kann zusätzliche oder andere Operationen umfassen und die Operationen können in der gezeigten Reihenfolge oder in einer anderen Reihenfolge ausgeführt werden. In einigen Fällen werden eine oder mehrere der in 8 gezeigten Operationen als Prozesse implementiert, die mehrere Operationen, Subprozesse oder andere Arten von Routinen umfassen. In einigen Fällen können Operationen kombiniert, in einer anderen Reihenfolge ausgeführt, parallel ausgeführt, iteriert oder anderweitig wiederholt oder auf andere Weise ausgeführt werden.
  • Bei 802 wird Zugriff auf eine Menge von Bitübertragungsschichtspuren anfänglich an eine erste E/A-Steuerung in einer Interconnect-Architektur vergeben, wobei die Bitübertragungsschichtspuren mit einer Endpunktvorrichtung gekoppelt sind (z. B. wie in 5-6 gezeigt). Die erste E/A-Steuerung kann einem ersten Prozessor eines Systems, das die Interconnect-Architektur enthält, zugeordnet sein. Die Vergabe kann durch einen mit den Spuren gekoppelten flexiblen E/A-Adapter (FIA) (z. B. den FIA 606 von 6) auf der Basis von Daten oder Befehlen, die von einer Power-Management-Steuerung (PMC) (z. B. der PMC 612 von 6) empfangen werden, durchgeführt werden. Zum Beispiel kann die PMC zur Bootzeit dem FIA befehlen, Zugriff auf die Spuren durch eine Host-CPU-PCIe-Steuerung eines Systems (z. B. die Host-CPU-Wurzelraum-PCIe-Steuerung 602 von 6) zu vergeben.
  • Bei 804 wird eine erste PCIe-Verbindung zwischen der ersten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren hergestellt. Dies kann umfassen, einen dem ersten Prozessor entsprechenden bestimmten Wurzelport mit der Endpunktvorrichtung zu assoziieren, wie etwa durch Programmierung von Hardware-Konfigurationsregistern, um den Zugriff auf die Menge von Spuren durch die erste E/A-Steuerung zu vergeben. Dies kann es einer auf dem ersten Prozessor, der der ersten E/A-Steuerung zugeordnet ist, ausgeführten SW/FW-Instanz erlauben, über Zugriff auf die Endpunktvorrichtung zu verfügen oder diese zu steuern.
  • Bei 806 wird Zugriff auf die Menge von Spuren dynamisch neu an eine zweite E/A-Steuerung vergeben, ohne einen Reboot-Zyklus durchzuführen. Die zweite E/A-Steuerung kann einem zweiten Prozessor des Systems, das die Interconnect-Architektur umfasst, zugeordnet sein. Die Neuvergabe kann durch den FIA auf der Basis von durch die PMC ausgegebenen Daten oder Befehlen durchgeführt werden, ähnlich wie oben. Die PMC kann den Wechsel auf der Basis des Detektierens eines Power-Zustandsübergangs in dem der ersten E/A-Steuerung zugeordneten Prozessor einleiten. Zum Beispiel kann die PMC detektieren, dass eine Host-CPU in einen Energiesparzustand übergegangen ist, und kann dementsprechend Neuvergabe der Spuren an einen der zweiten E/A-Steuerung zugeordneten ME-Prozessor einleiten. Bei einigen Ausführungsformen kann die PMC zuerst verifizieren, dass es keinen auf der ersten PCIe-Verbindung anstehenden unerledigten Verkehr gibt, bevor sie den Zugriff auf die Menge von Spuren neu vergibt.
  • Bei 808 wird eine zweite PCIe-Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren hergestellt. Die zweite PCle-Verbindung kann auf dieselbe Weise wie die erste PCIe-Verbindung hergestellt werden. Bei 810 wird der ersten und zweiten E/A-Steuerung eine Angabe der Spurneuvergabe zugeführt. Auf diese Weise können die PCIe-Steuerungen über die Spurvergabe in Kenntnis gesetzt werden und können dementsprechend Kommunikation mit der Endpunktvorrichtung vermeiden, wenn ihnen aktuell kein Zugriff auf die Vorrichtung vergeben wird. Außerdem wird bei 812 die Spurneuvergabe als ein PCIe-Hot-Entfernungsereignis Software höherer Ebenen exponiert.
  • Man beachte, dass die oben beschriebenen Einrichtungen, Verfahren und Systeme in jeder elektronischen Vorrichtung oder jedem System wie erwähnt implementiert werden können. Als spezifische Darstellungen stellen die Figuren unten beispielhafte Systeme zum Verwenden der vorliegenden Offenbarung, wie hierin beschrieben, bereit. Da die nachfolgenden Systeme ausführlicher beschrieben werden, wird eine Anzahl unterschiedlicher Interconnects offenbart, beschrieben und aus der oben stehenden Erörterung wieder aufgegriffen. Und wie leicht einsehbar ist, können die oben beschriebenen Fortschritte auf beliebige jener Verschaltungen, Strukturen oder Architekturen angewendet werden. Beispielsweise können ein Host und eine Vorrichtung implementiert werden, die mit einer Funktionalität zum Implementieren von Authentifizierungs- und Messarchitekturen, wie in den Beispielen oben erörtert, in beliebigen einer Vielzahl von Rechenarchitekturen (z. B. unter Verwendung beliebiger einer Vielzahl unterschiedlicher Interconnects oder Strukturen) implementiert werden. Beispielsweise kann ein Host mit einer Vorrichtung verbunden werden, die die Authentifizierungsarchitektur innerhalb eines persönlichen Rechensystems unterstützt (z. B. in einem Laptop, Desktop, Mobil-, Smartphone, Internet-der-Dinge(loT)-Vorrichtung, intelligenten Haushaltsgerät, Spiegelkonsole, Medienkonsole usw. implementiert). Bei einem andere Beispiel kann ein Host unter anderen Beispielen mit einer Vorrichtung verbunden werden, die die Authentifizierungsarchitektur innerhalb eines Serverrechensystems unterstützt (z. B. einem Rack-Server, einem Blade-Server, einem Tower-Server, einer Rack-Konfiguration-Serverarchitektur, oder einer disaggregierten Serverarchitektur).
  • Mit Bezug auf 9 ist eine Ausführungsform einer Blockdarstellung für ein Datenverarbeitungssystem mit einem Mehrkernprozessor abgebildet. Der Prozessor 900 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen DSP (digitalen Signalprozessor), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein SOC (System auf einem Chip) oder eine andere Vorrichtung zum Ausführen von Code. Bei einer Ausführungsform umfasst der Prozessor 900 mindestens zwei Kerne - Kern 901 und 902, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) umfassen können. Der Prozessor 900 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardwareverarbeitungselemente schließen Folgendes ein: eine Thread-Einheit, einen Thread-Steckplatz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder jegliches andere Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Anders ausgedrückt bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jegliche Hardware, die dazu in der Lage ist, einem Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code, unabhängig zugeordnet zu werden. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich üblicherweise auf eine integrierte Schaltung, die potenziell jegliche Anzahl anderer Verarbeitungselemente, wie zum Beispiel Kerne oder Hardware-Threads, einschließt.
  • Ein Kern bezieht sich oft auf Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest einigen dedizierten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread üblicherweise auf jegliche Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überlappt die Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen geteilt werden und andere für einen Architekturzustand vorgesehen sind. Dennoch werden ein Kern und ein Hardware-Thread durch ein Betriebssystem häufig als einzelne logische Prozessoren angesehen, wobei das Betriebssystem dazu in der Lage ist, Operationen auf jedem logischen Prozessor einzeln zu planen.
  • Der physische Prozessor 900, wie in 9 veranschaulicht, schließt zwei Kerne, nämlich Kern 901 und 902, ein. Hier werden Kern 901 und 902 als symmetrische Kerne, das heißt Kerne mit denselben Konfigurationen und Funktionseinheiten und/oder derselben Logik, betrachtet. In einer anderen Ausführungsform schließt der Kern 901 einen Out-of-Order-Prozessorkern ein, während der Kern 902 einen In-Order-Prozessorkern einschließt. Die Kerne 901 und 902 können jedoch individuell aus jeglichem Kerntyp, wie zum Beispiel einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der zum Ausführen einer nativen Befehlssatzarchitektur (Instruction Set Architecture, ISA) angepasst ist, einem Kern, der zum Ausführen einer übersetzten Befehlssatzarchitektur (Instruction Set Architecture, ISA) angepasst ist, einem mitentwickelten Kern oder einem anderen bekannten Kern, ausgewählt werden. In einer heterogenen Kernumgebung (das heißt asymmetrische Kerne) kann eine Form von Übersetzung, wie eine binäre Übersetzung, eingesetzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Zur weiteren Erörterung sind jedoch die Funktionseinheiten, die in dem Kern 901 veranschaulicht sind, unten ausführlicher beschrieben, da die Einheiten in dem Kern 902 auf eine ähnliche Art wie in der dargestellten Ausführungsform arbeiten.
  • Wie dargestellt, schließt der Kern 901 zwei Hardware-Threads 901a und 901b ein, die auch Hardware-Thread-Slots 901a und 901b genannt werden können. Software-Entitäten, wie ein Betriebssystem, sehen folglich den Prozessor 900 in einer Ausführungsform potenziell als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread Architekturzustandsregistern 901a zugeordnet, ist ein zweiter Thread Architekturzustandsregistern 901b zugeordnet, kann ein dritter Thread Architekturzustandsregistern 902a zugeordnet sein und kann ein vierter Thread Architekturzustandsregistern 902b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (901a, 901b, 902a und 902b) Verarbeitungselemente, Thread-Slots oder Thread-Einheiten, wie oben beschrieben, genannt werden. Wie veranschaulicht, werden die Architekturzustandsregister 901a in Architekturzustandsregistern 901b derart repliziert, dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 901a und den logischen Prozessor 901b gespeichert werden können. In dem Kern 901 können andere kleinere Ressourcen, wie Befehlszeiger und Umbenennungslogik in einem Zuweiser- und Umbenennerblock 930, auch für die Threads 901a und 901b repliziert werden. Einige Ressourcen, wie zum Beispiel Neuordnungspuffer in einer Neuordnungs-/Rückstellungseinheit 935, ILTB 920, Lade-/Speicher-Puffer und Warteschlangen, können durch Partitionieren geteilt werden. Andere Ressourcen, wie zum Beispiel interne Universalregister, Seitentabellenbasisregister, Low-Level-Datencache und Daten-TLB 915, Ausführungseinheit(en) 940 und Abschnitte der Out-of-Order-Einheit 935 werden potenziell vollständig geteilt.
  • Der Prozessor 900 schließt oft andere Ressourcen ein, die vollständig geteilt, durch Partitionierung geteilt oder durch/für Verarbeitungselemente(n) vorgesehen werden können. In 9 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu beachten, dass ein Prozessor jegliche dieser Funktionseinheiten einschließen oder weglassen kann sowie andere nicht dargestellte bekannte Funktionseinheiten, Logik oder Firmware einschließen kann. Wie veranschaulicht, schließt der Kern 901 einen vereinfachten, repräsentativen Out-of-Order(OOO)-Prozessorkern ein. Ein In-Order-Prozessor kann jedoch in verschiedenen Ausführungsformen verwendet werden. Der OOO-Kern schließt einen Sprungzielpuffer 920, um auszuführende/zu nehmende Sprünge vorherzusagen, und einen Befehlsübersetzungspuffer (Instruction-Translation Buffer, I-TLB) 920, um Adressenübersetzungseinträge für Befehle zu speichern, ein.
  • Der Kern 901 schließt ferner ein Decodiermodul 925 ein, das mit der Abrufeinheit 920 gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik schließt in einer Ausführungsform individuelle Sequenzierer ein, die jeweils den Thread-Slots 901a, 901b zugeordnet sind. Üblicherweise ist der Kern 901 einer ersten ISA zugeordnet, die Befehle, die auf dem Prozessor 900 ausführbar sind, definiert/spezifiziert. Oft schließen Maschinencodebefehle, die zu der ersten ISA gehören, einen Abschnitt des Befehls (ein Opcode genannt) ein, der einen durchzuführenden Befehl oder eine durchzuführende Operation referenziert/spezifiziert. Die Decodierlogik 925 schließt Schaltungen ein, die diese Befehle ausgehend von ihren Opcodes erkennen und die decodierten Befehle in der Pipeline zum Verarbeiten, wie von der ersten ISA definiert, weitergeben. Wie unten ausführlicher erörtert, schließen die Decoder 925 in einer Ausführungsform Logik ein, die ausgelegt oder angepasst ist, um spezifische Befehle, wie einen Transaktionsbefehl, zu erkennen. Als ein Resultat des Erkennens durch die Decoder 925 führt die Architektur oder der Kern 901 spezifische, vordefinierte Aktionen aus, um Aufgaben, die dem geeigneten Befehl zugeordnet sind, durchzuführen. Es ist wichtig, zu beachten, dass jegliche der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; einige davon können neue oder alte Befehle sein. Es sei darauf hingewiesen, dass Decoder 926 in einer Ausführungsform die gleiche ISA (oder einen Untersatz davon) erkennen. Alternativ erkennen die Decoder 926 in einer heterogenen Kernumgebung eine zweite ISA (entweder einen Untersatz der ersten ISA oder eine unterschiedliche ISA).
  • In einem Beispiel enthält der Zuweiser- und Umbenennerblock 930 einen Zuweiser zum Reservieren von Ressourcen, wie zum Beispiel Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 901a und 901b sind jedoch potenziell zu einer Out-of-Order-Ausführung fähig, wobei der Zuweiser- und Umbenennerblock 930 auch andere Ressourcen, wie zum Beispiel Neuordnungspuffer, reserviert, um Befehlsergebnisse zu verfolgen. Die Einheit 930 kann auch einen Registerumbenenner einschließen, um Programm-/Befehlsreferenzregister in andere Register in dem Prozessor 900 umzubenennen. Die Neuordnungs-/Rückzugseinheit 935 schließt Komponenten, wie die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer ein, um eine Out-of-Order-Ausführung und später einen In-Order-Rückzug von Befehlen, die außerhalb der Reihenfolge ausgeführt wurden, zu unterstützen.
  • Ein Planer- und Ausführungseinheit(en)-Block 940 schließt in einer Ausführungsform eine Planereinheit ein, um Befehle/eine Operation bei Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten schließen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten ein.
  • Lower-Level-Datencache und Datenübersetzungspuffer (Data Translation Buffer, D-TLB) 950 sind mit der/den Ausführungseinheit(en) 940 gekoppelt. Der Daten-Cache soll kürzlich verwendete/betriebene Elemente, wie zum Beispiel Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB soll kürzliche virtuelle/lineare zu physische Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur einschließen, um physischen Speicher in mehrere virtuelle Seiten zu zerteilen.
  • Hier teilen die Kerne 901 und 902 den Zugriff auf einen Higher-Level- oder Further-Out-Cache, wie zum Beispiel einen Cache der zweiten Ebene, der einer On-Chip-Schnittstelle 910 zugeordnet ist. Es ist zu beachten, dass sich Higher-Level oder Further-Out auf Cache-Ebenen bezieht, die ausgehend von der/den Ausführungseinheit(en) zunehmen oder sich weiter von diesen entfernen. In einer Ausführungsform ist der Higher-Level-Cache ein Last-Level-Datencache - letzter Cache in der Speicherhierarchie auf dem Prozessor 900 - wie zum Beispiel ein Datencache der zweiten oder dritten Ebene. Der Higher-Level-Cache ist jedoch nicht hierauf beschränkt, da er einem Befehlscache zugeordnet sein oder einen solchen einschließen kann. Ein Trace-Cache - ein Typ von Befehlscache - kann stattdessen nach dem Decoder 925 gekoppelt werden, um kürzlich decodierte Spuren zu speichern. Hier bezieht sich ein Befehl potenziell auf einen Makrobefehl (das heißt einen von den Decodern erkannten allgemeinen Befehl), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
  • In der dargestellten Konfiguration schließt der Prozessor 900 auch das On-Chip-Schnittstellenmodul 910 ein. Historisch wurde ein Speicher-Controller, der unten detaillierter beschrieben wird, in ein Rechensystem außerhalb des Prozessors 900 eingeschlossen. In diesem Szenario soll die On-Chip-Schnittstelle 910 mit Vorrichtungen außerhalb des Prozessors 900, wie zum Beispiel einem Systemspeicher 975, einem Chipsatz (oft einschließlich eines Speicher-Controller-Hub zum Verbinden mit dem Speicher 975 und eines E/A-Controller-Hub zum Verbinden von Peripherievorrichtungen), einem Speicher-Controller-Hub, einer Northbridge oder einer anderen integrierten Schaltung kommunizieren. Und in diesem Szenario kann der Bus 905 eine bekannte Verschaltung einschließen, wie einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Verschaltung, eine serielle Verschaltung, einen parallelen Bus, einen kohärenten (zum Beispiel Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus und einen GTL-Bus.
  • Der Speicher 975 kann für den Prozessor 900 vorgesehen sein oder gemeinsam mit anderen Vorrichtungen in einem System genutzt werden. Herkömmliche Beispiele dieser Typen von Speicher 975 schließen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen ein. Zu bemerken ist, dass die Vorrichtung 980 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der/die mit einem Speicher-Controller-Hub gekoppelt ist, Datenspeicher, der mit einem E/A-Controller-Hub gekoppelt ist, einen drahtlosen Transceiver, eine Flash-Vorrichtung, einen Audio-Controller, einen Netzwerkcontroller oder eine andere bekannte Vorrichtung einschließen kann.
  • Da mehr Logik und Vorrichtungen auf einem einzigen Die, wie einem SOC, integriert werden, kann jedoch jede dieser Vorrichtungen neuerdings auf dem Prozessor 900 integriert werden. In einer Ausführungsform befindet sich zum Beispiel ein Speicher-Controller-Hub auf demselben Package und/oder Die mit dem Prozessor 900. Hier schließt ein Abschnitt des Kerns (ein „On-Core“-Abschnitt) 910 einen oder mehrere Controller zur Schnittstellenbildung mit anderen Vorrichtungen, wie dem Speicher 975 oder einer Grafikvorrichtung 980, ein. Die Konfiguration, die eine Verschaltung und Controller zur Schnittstellenbildung mit solchen Vorrichtungen einschließt, wird oft ein „On-Core“ (oder eine „Un-Core“-Konfiguration) genannt. Als ein Beispiel schließt eine On-Chip-Schnittstelle 910 eine Ringverschaltung zur On-Chip-Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 905 zur Off-Chip-Kommunikation ein. In der SOC-Umgebung können jedoch sogar noch mehr Vorrichtungen, wie die Netzwerkschnittstelle, Co-Prozessoren, Speicher 975, Grafikprozessor 980 und beliebige andere bekannte Computervorrichtungen/- schnittstellen auf einem einzigen Die oder einer einzigen integrierten Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 900 fähig, einen Compiler-, Optimierungs- und/oder Übersetzercode 977 auszuführen, um Anwendungscode 976 zu kompilieren, übersetzen und/oder optimieren, um die Einrichtung und die Verfahren, die hier beschrieben sind, zu unterstützen oder eine Schnittstelle damit zu bilden. Ein Compiler schließt oft ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/Code in Zieltext/Code ein. Gewöhnlich erfolgt eine Kompilation von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um Hi-Level-Programmiersprachencode in Low-Level-Maschinen- oder Assemblersprachencode umzuwandeln. Compiler mit einem einzigen Durchgang können jedoch noch für eine einfache Kompilation eingesetzt werden. Ein Compiler kann beliebige bekannte Kompilationstechniken einsetzen und beliebige bekannte Compiler-Operationen durchführen, wie lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Code-Erzeugung, Code-Umwandlung und Code-Optimierung.
  • Größere Compiler schließen oft mehrfache Phasen eine, diese Phasen sind jedoch meistens innerhalb von zwei Hauptphasen enthalten: (1) ein Frontend, das heißt im Allgemeinen, wo syntaktische Verarbeitung, semantische Verarbeitung und ein Teil der Umwandlung/Optimierung stattfinden können, und (2) ein Backend, das heißt im Allgemeinen, wo Analyse, Umwandlungen, Optimierungen und Code-Erzeugung stattfinden. Einige Compiler verweisen auf ein „Middle“, das das Verwischen einer klaren Trennung zwischen einem Frontend und einem Backend eines Compilers veranschaulicht. Daraus resultiert, dass ein Verweis auf Einfügen, Zuordnung, Erzeugung oder eine andere Operation eines Compilers in einer beliebigen der oben erwähnten Phasen oder Durchgänge sowie in beliebigen anderen bekannten Phasen oder Durchgängen eines Compilers stattfinden kann. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Abrufe, Funktionen usw. in eine oder mehrere Kompilationsphasen ein, wie ein Einfügen von Abrufen/Operationen in einer Frontendphase der Kompilation, und dann ein Umwandeln der Abrufe/Operationen in Lower-Level-Code während einer Umwandlungsphase. Zu bemerken ist, dass während einer dynamischen Kompilation Compiler-Code oder dynamischer Optimierungscode solche Operationen/Abrufe einfügen sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifisches veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) dynamisch während der Laufzeit optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon einschließen.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie ein binärer Übersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Der Verweis auf eine Ausführung von Code, Anwendungscode, Programmcode oder eine andere Softwareumgebung kann sich daher auf Folgendes beziehen: (1) Ausführung von Compilerprogramm(en), einem Optimierungscodeoptimierer oder einem Übersetzer, dynamisch oder statisch, um Programmcode zu kompilieren, Softwarestrukturen zu warten, andere Operationen durchzuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung eines Hauptprogrammcodes, der Operationen/Abrufe einschließt, wie Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung eines anderen Programmcodes, wie von Bibliotheken, die dem Hauptprogrammcode zugeordnet sind, um Softwarestrukturen zu warten, andere softwarebezogene Operationen durchzuführen oder Code zu optimieren, oder (4) eine Kombination davon.
  • Nunmehr mit Bezug auf 10 ist eine Blockdarstellung eines anderen Systems 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie in 10 gezeigt, ist das Mehrprozessorsystem 1000 ein Punkt-zu-Punkt-Interconnect-System und umfasst einen ersten Prozessor 1070 und einen zweiten Prozessor 1080, gekoppelt über ein Punkt-zu-Punkt-Interconnect 1050. Jeder der Prozessoren 1070 und 1080 kann eine gewisse Version eines Prozessors sein. Bei einer Ausführungsform sind 1052 und 1054 Teil einer seriellen kohärenten Punkt-zu-Punkt-Interconnect-Struktur, wie etwa einer hochleistungsfähigen Architektur. Als Ergebnis können bestimmte Ausführungsformen innerhalb der QPI-Architektur implementiert werden.
  • Obwohl sie mit nur zwei Prozessoren 1070, 1080 gezeigt wird, versteht sich, dass der Schutzumfang der vorliegenden Offenbarung nicht darauf beschränkt ist. Bei anderen Ausführungsformen können in einem gegebenen Prozessor ein oder mehrere zusätzliche Prozessoren anwesend sein.
  • Die Prozessoren 1070 und 1080 sind jeweils integrierte Speicher-Controller-Einheiten 1072 und 1082 aufweisend gezeigt. Der Prozessor 1070 schließt als Teil seiner Bus-Controller-Einheiten die Punkt-zu-Punkt(P-P)-Schnittstellen 1076 und 1078 ein; der zweite Prozessor 1080 schließt in ähnlicher Weise die P-P-Schnittstellen 1086 und 1088 ein. Die Prozessoren 1070 und 1080 können Informationen über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1050 unter Verwendung der P-P-Schnittstellenschaltungen 1078, 1088 austauschen. Wie in 10 gezeigt, koppeln die IMCs 1072 und 1082 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 1032 und einen Speicher 1034, die Abschnitte eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren gebunden ist.
  • Die Prozessoren 1070, 1080 tauschen über individuelle P-P-Schnittstellen 1052, 1054 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1076, 1094, 1086, 1098 Informationen mit einem Chipsatz 1090 aus. Der Chipsatz 1090 tauscht auch über eine Schnittstellenschaltung 1092 entlang einem Hochleistungs-Grafik-Interconnect 1039 Informationen mit einer hochleistungsfähigen Grafikschaltung 1038 aus.
  • Ein gemeinsamer Cache (nicht gezeigt) kann in beiden Prozessoren oder außerhalb von beiden Prozessoren enthalten sein, aber mit den Prozessoren derart über eine P-P-Verschaltung verbunden sein, dass die lokalen Cache-Informationen von einem oder beiden Prozessoren in dem gemeinsamen Cache gespeichert werden können, wenn ein Prozessor in einen Modus mit niedrigem Stromverbrauch gebracht wird.
  • Der Chipsatz 1090 kann über eine Schnittstelle 1096 mit einem ersten Bus 1016 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1016 ein Peripheral Component Interconnect(PCl)-Bus oder ein Bus, wie beispielsweise ein PCI Express-Bus oder ein anderer E/A-Verschaltungs-Bus der dritten Generation, sein, obwohl der Umfang der vorliegenden Offenbarung nicht hierauf beschränkt ist.
  • Wie in 10 gezeigt, sind verschiedene E/A-Vorrichtungen 1014 zusammen mit einer Busbrücke 1018, die den ersten Bus 1016 an einen zweiten Bus 1020 koppelt, an den ersten Bus 1016 gekoppelt. In einer Ausführungsform schließt der zweite Bus 1020 einen Low Pin Count(LPC)-Bus ein. Verschiedene Vorrichtungen sind in einer Ausführungsform mit einem zweiten Bus 1020 gekoppelt, der zum Beispiel eine Tastatur und/oder Maus 1022, Kommunikationsvorrichtungen 1027 und eine Speichereinheit 1028, wie ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die oft Befehle/Code und Daten 1030 einschließt, einschließt. Ferner ist eine Audio-E/A 1024 an den zweiten Bus 1020 gekoppelt gezeigt. Es ist zu beachten, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Verschaltungsarchitekturen variieren. Zum Beispiel kann ein System statt der Punkt-zu-Punkt-Architektur von 10 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Die obige Offenbarung hat beispielhafte Systeme und Verfahren zur Bereitstellung von dynamischer Spurneuvergabe und Wurzelraumwechsel zwischen PCIe-Wurzelräumen dargestellt. Es versteht sich, dass andere Systeme und Verfahren zur dynamischen Spurneuvergabe in Betracht gezogen werden können, ohne von den in dieser Offenbarung enthaltenen verallgemeinerteren Prinzipien abzuweichen. Obwohl zum Beispiel einige der hier besprochenen beispielhaften Systeme und Verfahren mit Bezug auf PCle oder auf PCle basierende Protokolle beschrieben wurden, versteht sich, dass ähnliche entsprechende Verbesserungen an anderen Interconnect-Protokollen vorgenommen werden können, wie etwa OpenCAPI™, Gen-Z™, UPI, USB (Universal Serial Bus), CCIX™ (Cache Coherent Interconnect for Accelerators), AMD™ Infinity™ von (Advanced Micro Device™), CCI (Common Communication Interface) oder das Centriq™-Interconnect von Qualcomm™, neben anderen.
  • Obwohl die vorliegende Offenbarung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Varianten davon zu würdigen wissen. Es ist beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Varianten, wie sie in den wahren Geist und Schutzumfang dieser vorliegenden Offenbarung fallen, abdecken.
  • Ein Design kann verschiedene Stufen durchlaufen, von Erstellung über die Simulation bis hin zur Herstellung. Daten, die ein Design darstellen, können das Design auf verschiedene Weisen repräsentieren. Zunächst kann die Hardware, was bei Simulationen sinnvoll ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Zusätzlich dazu kann auf manchen Stufen des Designprozesses ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern erstellt werden. Darüber hinaus erreichen die meisten Designs auf einer gewissen Stufe eine Datenebene, welche die physische Platzierung verschiedener Einrichtungen im Hardwaremodell repräsentiert. Im Fall der Verwendung herkömmlicher Halbleiterherstellungstechniken können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung der integrierten Schaltung verwendet werden, spezifizieren. In einer jeglichen Repräsentation des Designs können die Daten in beliebiger Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design angibt oder mit sich führt, in dem Ausmaß, in dem Kopieren, Puffern oder Neuübermittlung des elektrischen Signals ausgeführt wird, übermittelt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest zeitweise einen Artikel, wie etwa in eine Trägerwelle codierte Informationen, unter Ausführung von Techniken von Ausführungsformen der vorliegenden Offenbarung speichern.
  • Ein Modul, so wie es hierin verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Ein Modul beinhaltet beispielsweise einem nichtflüchtigen Medium zugeordnete Hardware, wie etwa einen Mikrocontroller, zum Speichern von Code, der dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die insbesondere konfiguriert ist zum Erkennen und/oder Ausführen des Codes, der auf einem nichtflüchtigen Medium gehalten werden soll. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das den Code beinhaltende nichtflüchtige Medium, das spezifisch dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie gefolgert werden kann, kann sich der Begriff Modul (in diesem Beispiel) in noch einer weiteren Ausführungsform auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Modulgrenzen, die als separat dargestellt sind, variieren üblicherweise oft und überlappen einander gegebenenfalls. Beispielsweise können ein erstes und ein zweites Modul sich Hardware, Software, Firmware oder eine Kombination davon teilen, während manche unabhängige Hardware, Software oder Firmware gegebenenfalls zurückgehalten wird. Bei einer Ausführungsform schließt die Verwendung des Begriffs ,Logik‘ Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen, ein.
  • Die Verwendung der Phrase ,dazu ausgelegt‘ in einer Ausführungsform bezieht sich auf Anordnen, Zusammenstellen, Herstellen, zum Verkauf anbieten, Importieren und/oder Designen einer Vorrichtung, von Hardware, Logik oder einem Element, um eine ausgewiesene oder bestimmte Aufgabe auszuführen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht arbeitet, dennoch ,dazu ausgelegt‘, eine designierte Aufgabe auszuführen, wenn es zum Ausführen der designierten Aufgabe entwickelt, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Ein Logikgatter, das ,dazu ausgelegt‘ ist, einem Taktgeber ein Freigabesignal bereitzustellen, schließt jedoch nicht jedes potenzielle Logikgatter ein, das eine 1 oder eine 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf eine Weise gekoppelt ist, dass während des Betriebs die Ausgabe von 1 oder 0 den Taktgeber freischalten soll. Es sei erneut angemerkt, dass die Verwendung des Begriffs ,dazu ausgelegt‘ keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements richtet, wobei im latenten Zustand die Vorrichtung, die Hardware und/oder das Element dazu gestaltet sind, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element arbeiten.
  • Ferner bezieht sich die Verwendung der Phrasen ,zum‘, ,dazu in der Lage‘ und/oder ,dazu funktionsfähig‘ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die derart gestaltet sind, dass sie die Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements auf eine spezifische Weise erlauben. Wie oben ist zu beachten, dass sich eine Verwendung von zum, dazu in der Lage oder dazu funktionsfähig bei einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht in Betrieb ist, aber auf eine solche Weise gestaltet ist, um die Verwendung einer Vorrichtung in einer spezifizierten Weise zu ermöglichen.
  • Ein Wert, wie hierin verwendet, beinhaltet eine beliebige bekannte Repräsentation einer Zahl, eines Zustands, eines Logikzustands oder eines binären Logikzustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1en und 0en bezeichnet, was einfach binäre Logikzustände repräsentiert. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. Bei einer Ausführungsform kann eine Speicherzelle, wie etwa eine Transistor- oder Flash-Zelle, dazu in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch auch andere Repräsentationen von Werten in Computersystemen verwendet. Die dezimale zahl zehn kann zum Beispiel auch als ein binärer wert von 1010 oder ein hexaderzimaler Buchstabe A dargestellt werden. Daher beinhaltet ein Wert eine beliebige Repräsentation von Informationen, die fähig ist, in einem Computersystem gehalten zu werden.
  • Darüber hinaus können Zustände durch Werte oder Abschnitte von Werten repräsentiert werden. Beispielsweise kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangszustand repräsentieren, während ein zweiter Wert, wie etwa eine logische Null, einen Nichtstandardzustand repräsentieren kann. Darüber hinaus beziehen sich die Begriffe ,Reset‘ und ,Set‘ in einer Ausführungsform jeweils auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert gegebenenfalls einen hohen logischen Wert, d. h. Reset, während ein aktualisierter Wert gegebenenfalls einen niedrigen logischen Wert, d. h. Set, beinhaltet. Es sei angemerkt, dass eine beliebige Kombination von Werten genutzt werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeicherte Anweisungen oder Code implementiert sein, welche durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugreifbares/-lesbares Medium beinhaltet einen beliebigen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Beispielsweise beinhaltet ein nichtflüchtiges, maschinenzugreifbares Medium Direktzugriffsspeicher (RAM), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speicherungsmedium; Flash-Speichereinrichtungen; elektrische Speicherungseinrichtungen; optische Speicherungseinrichtungen; akustische Speicherungseinrichtungen; andere Formen von Speicherungseinrichtungen zum Halten von Informationen, die von flüchtigen (propagierten) Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen) usw. empfangen werden, die von den nichtflüchtigen Medien unterschieden werden müssen, die Informationen davon empfangen können.
  • Zum Programmieren von Logik verwendete Anweisungen, um bestimmte Ausführungsformen auszuführen, können innerhalb eines Speichers, wie etwa DRAM, Cache, Flash-Speicher oder einer anderen Speicherung, in dem System gespeichert werden. Darüber hinaus können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form einschließen, unter anderem Floppy-Disketten, optische Platten, CD-ROMs (Compact Disc Read-Only Memory) und magnetooptische Platten, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Dementsprechend beinhaltet das computerlesbare Medium einen beliebigen Typ von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß der vorliegenden Patentschrift. Es versteht sich, dass bestimmte nachfolgend aufgelistete Beispiele mit anderen Beispielen oder bestimmten Aspekten anderer Beispiele kombiniert werden können.
  • Beispiel 1 beinhaltet eine Einrichtung, umfassend: Bitübertragungsschichtschaltkreise, die eine oder mehrere Spuren zur Kopplung der Einrichtung mit einer oder mehreren Endpunktvorrichtungen umfassen; eine erste Eingabe-/Ausgabe- bzw. E/A-Steuerung, die Schaltkreise zur Kopplung eines ersten Prozessors mit den Bitübertragungsschichtschaltkreisen umfasst, wobei die erste E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; eine zweite E/A-Steuerung, die Schaltkreise zur Kopplung eines zweiten Prozessors mit den Bitübertragungsschichtschaltkreisen umfasst, wobei die zweite E/A-Steuerung mit dem auf PCle basierenden Protokoll kompatibel ist; einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA, der die erste und zweite E/A-Steuerung mit der einen oder den mehreren Spuren koppelt, wobei der FIA Schaltkreise zum selektiven Vergeben von Zugriff auf jede Spur der einen oder mehreren Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung umfasst; und eine kommunikativ mit dem FIA gekoppelte Power-Management-Steuerung bzw. PMC, wobei die PMC Schaltkreise umfasst zum Bewirken, dass der FIA dynamisch Zugriff auf mindestens eine der Spuren durch die erste oder zweite E/A-Steuerung ohne einen Reboot-Zyklus vergibt.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, und wobei gegebenenfalls die FIA-Schaltkreise den Zugriff auf die Spuren der Bitübertragungsschichtschaltkreise selektiv durch Wechseln einer Wurzelportvergabe für die Spuren vergeben sollen.
  • Beispiel 3 beinhaltet den Gegenstand beliebiger der vorhergehenden Beispiele und wobei gegebenenfalls die FIA-Schaltkreise ferner eine Angabe der Spurneuvergabe an jede der ersten und zweiten E/A-Steuerung bereitstellen sollen.
  • Beispiel 4 umfasst den Gegenstand beliebiger der vorhergehenden Beispiele, und wobei gegebenenfalls die PMC-Schaltkreise ferner ein Hot-Entfernungsereignis an Software höherer Ebenen auf der Basis der Spurneuvergabe durch den FIA erzeugen sollen.
  • Beispiel 5 umfasst den Gegenstand beliebiger der vorhergehenden Beispiele, und wobei gegebenenfalls die PMC-Schaltkreise bewirken sollen, dass die FIA-Schaltkreise auf der Basis des Detektierens eines Power-Zustandsübergangs in dem ersten oder zweiten Prozessor Zugriff auf eine oder mehrere Spuren dynamisch neu vergeben.
  • Beispiel 6 umfasst den Gegenstand beliebiger der vorhergehenden Beispiele, und wobei gegebenenfalls die Bitübertragungsschichtschaltkreise mehrere Spuren zur Kopplung der Einrichtung mit einer Endpunktvorrichtung umfassen und die FIA-Schaltkreise Zugriff auf jede Spur der mehreren Spuren durch entweder die erste oder die zweite E/A-Steuerung selektiv vergeben sollen.
  • Beispiel 7 umfasst den Gegentand beliebiger der vorhergehenden Beispiele, und wobei gegebenenfalls die Bitübertragungsschichtschaltkreise eine erste Menge von Spuren zur Kopplung der Einrichtung mit einer ersten Endpunktvorrichtung und eine zweite Menge von Spuren zur Kopplung der Einrichtung mit einer zweiten Endpunktvorrichtung umfassen und die FIA-Schaltkreise Zugriff auf jede Spur der ersten und zweiten Menge von Spuren entweder durch die erste oder zweite E/A-Steuerung selektiv vergeben sollen.
  • Beispiel 8 beinhaltet den Gegenstand der Beispiele 1-7, und wobei gegebenenfalls die Schaltkreise der ersten E/A-Steuerung einen Hostprozessor einer die Einrichtung enthaltenden Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen und die Schaltkreise der zweiten E/A-Steuerung einen in der Einrichtung enthaltenen Prozessor mit den Bitübertragungsschichtschaltkreisen koppeln sollen.
  • Beispiel 9 beinhaltet den Gegenstand der Beispiele 1-7, und wobei gegebenenfalls die Schaltkreise der ersten E/A-Steuerung einen ersten Hostprozessor einer die Einrichtung enthaltenden Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen und die Schaltkreise der zweiten E/A-Steuerung einen zweiten Hostprozessor der Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen.
  • Beispiel 10 beinhaltet nichttransitorische computerlesbare Medien mit Anweisungen, die, wenn sie ausgeführt werden, in einer Hostvorrichtung eingebettete Logik zu Folgendem veranlassen: Vergeben von Zugriff auf eine Menge von Spuren von Bitübertragungsschichtschaltkreisen durch eine erste E/A-Steuerung über einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA; Herstellen einer ersten auf PCle (Peripheral Component Interconnect Express) basierenden Verbindung zwischen der ersten E/A-Steuerung und einer Endpunktvorrichtung über die Menge von Spuren von Bitübertragungsschichtschaltkresen; dynamisches Neuvergeben von Zugriff auf die Menge von Spuren durch eine zweite E/A-Steuerung über den FIA ohne einen Reboot-Zyklus; und Herstellen einer zweiten auf PCle basierenden Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren der Bitübertragungsschichtschaltkreise.
  • Beispiel 11 beinhaltet den Gegenstand von Beispiel 10, und wobei gegebenenfalls die Anweisungen Zugriff auf die Spuren durch Ändern einer Wurzelportvergabe für die Spuren neu vergeben sollen.
  • Beispiel 12 beinhaltet den Gegenstand der Beispiele 10-11, und wobei gegebenenfalls die Anweisungen eine Angabe der Spurneuvergabe an jeweils die erste und zweite E/A-Steuerung bereitstellen sollen.
  • Beispiel 13 beinhaltet den Gegenstand der Beispiele 10-12, und wobei gegebenenfalls die Anweisungen die Spurneuvergabe Software höherer Ebenen als ein Hot-Entfernungsereignis exponieren sollen.
  • Beispiel 14 beinhaltet den Gegenstand der Beispiele 10-13, und wobei gegebenenfalls die Anweisungen Zugriff auf die Menge von Spuren dynamisch auf der Basis des Detektierens eines Power-Zustandsübergangs in einem der ersten E/A-Steuerung zugeordneten Prozessor neu vergeben sollen.
  • Beispiel 15 beinhaltet den Gegenstand der Beispiele 10-14, und wobei gegebenenfalls die Anweisungen verifizieren sollen, dass es keinen unerledigten Verkehr gibt, der auf der ersten Verbindung ansteht, bevor Zugriff auf die Spuren neu vergeben wird.
  • Beispiel 16 beinhaltet ein System, umfassend: eine Endpunktvorrichtung; einen Hostprozessor; einen kommunikativ mit dem Prozessor und der Endpunktvorrichtung gekoppelten Steuerungshub. Der Steuerungshub umfasst Folgendes: einen Verwaltbarkeitsengine- bzw. ME-Prozessor; Bitübertragungsschichtschaltkreise, die eine Menge von Spuren umfassen, die den Steuerungshub mit der Endpunktvorrichtung koppeln; eine erste Eingabe-/Ausgabe- bzw. E/A-Steuerung, die Schaltkreise umfasst, die den Hostprozessor mit den Bitübertragungsschichtschaltkreisen koppeln, wobei die erste E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; eine zweite E/A-Steuerung, die Schaltkreise umfasst, die den ME-Prozessor mit den Bitübertragungsschichtschaltkreisen koppeln, wobei die zweite E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA, der die erste und zweite E/A-Steuerung mit der Menge von Spuren koppelt, wobei der FIA Schaltkreise zum selektiven Vergeben von Zugriff auf jede Spur der Menge von Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung umfasst; und eine kommunikativ mit dem FIA gekoppelte Power-Management-Steuerung bzw. PMC, wobei die PMC Schaltkreise umfasst zum Bewirken, dass der FIA dynamisch Zugriff auf die Menge von Spuren durch die erste und zweite E/A-Steuerung ohne einen Reboot-Zyklus vergibt.
  • Beispiel 17 beinhaltet den Gegenstand von Beispiel 16, und wobei gegebenenfalls die FIA-Schaltkreise Zugriff auf die Menge von Spuren durch Ändern eines Wurzelspeicherraumzugriffs für die Menge von Spuren vergeben sollen.
  • Beispiel 18 umfasst den Gegenstand der Beispiele 16-17, und wobei gegebenenfalls der FIA eine Angabe der Spurneuvergabe an jede der ersten und zweiten E/A-Steuerung bereitstellen sollen.
  • Beispiel 19 umfasst den Gegenstand der Beispiele 16-18, und wobei gegebenenfalls die PMC bewirken soll, dass der FIA als Reaktion auf Detektieren eines Power-Zustandsübergangs in dem Hostprozessor den Zugriff auf die Menge von Spuren durch den ME-Prozessor dynamisch neu vergibt.
  • Beispiel 20 umfasst den Gegenstand der Beispiele 16-19, und wobei gegebenenfalls die Menge von Spuren eine erste Menge von Spuren ist, die Endpunktvorrichtung eine erste Endpunktvorrichtung ist, das System ferner eine zweite Endpunktvorrichtung umfasst, die Bitübertragungsschichtschaltkreise ferner eine zweite Menge von Spuren umfasst, die den Steuerungshub mit der zweiten Endpunktvorrichtung koppeln, der FIA die erste und zweite E/A-Steuerung mit der zweiten Menge von Spuren koppelt und die FIA-Schaltkreise Zugriff auf jede Spur der zweiten Menge von Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung selektiv vergeben sollen.
  • Beispiel 21 beinhaltet ein Verfahren, umfassend: Vergeben von Zugriff auf eine Menge von Spuren von Bitübertragungsschichtschaltkreisen durch eine erste E/A-Steuerung über einen flexiblen Eingabe-/Ausgabeadapter (FIA); Herstellen einer ersten auf PCle (Peripheral Component Interconnect Express) basierenden Verbindung zwischen der ersten E/A-Steuerung und einer Endpunktvorrichtung über die Menge von Spuren von Bitübertragungsschichtschaltkreisen; dynamisches Neuvergeben von Zugriff auf die Menge von Spuren durch eine zweite E/A-Steuerung über den FIA ohne einen Reboot-Zyklus; und Herstellen einer zweiten auf PCIe-basierenden Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren der Bitübertragungsschichtschaltkreise.
  • Beispiel 22 beinhaltet den Gegenstand von Beispiel 21, und wobei gegebenenfalls Neuvergabe von Zugriff auf die Spuren Ändern einer Wurzelportvergabe für die Spuren umfasst.
  • Beispiel 23 beinhaltet den Gegenstand der Beispiele 21-22, gegebenenfalls ferner umfassend: Bereitstellen einer Angabe der Spurneuvergabe für jede der ersten und zweiten E/A-Steuerung.
  • Beispiel 24 beinhaltet den Gegenstand der Beispiele 21-23, und gegebenenfalls ferner umfassend: Exponieren der Spurneuvergabe gegenüber Software höherer Ebenen als ein Hot-Entfernungsereignis.
  • Beispiel 25 beinhaltet den Gegenstand der Beispiele 21-24, und wobei gegebenenfalls dynamisches Neuvergeben von Zugriff auf die Menge von Spuren auf Detektieren eines Power-Zustandsübergangs in dem ersten Prozessor umfasst.
  • Beispiel 26 beinhaltet den Gegenstand der Beispiele 21-25, und gegebenenfalls ferner umfassend: Verifizieren, dass es keinen auf der ersten Verbindung anstehenden unerledigten Verkehr gibt, bevor Zugriff auf die Spuren neu vergeben wird.
  • Beispiel 27 beinhaltet ein System, umfassend: Mittel zum Vergeben von Zugriff auf eine Menge von Spuren von Bitübertragungsschichtschaltkreisen durch eine erste E/A-Steuerung; Mittel zum Herstellen einer ersten auf PCle (Peripheral Component Interconnect Express) basierenden Verbindung zwischen der ersten E/A-Steuerung und einer Endpunktvorrichtung über die Menge von Spuren von Bitübertragungsschichtschaltkreisen; Mittel zum dynamischen Neuvergeben von Zugriff auf die Menge von Spuren durch eine zweite E/A-Steuerung ohne einen Reboot-Zyklus; und Mittel zum Herstellen einer zweiten auf PCle basierenden Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren der Bitübertragungsschichtschaltkreise.
  • Beispiel 28 beinhaltet ein System, das eine Einrichtung nach einem der Beispiele 1-9 umfasst.
  • Durchwegs bedeutet in dieser Spezifikation eine Bezugnahme auf „eine Ausführungsform“, dass ein in Verbindung mit der Ausführungsform beschriebenes bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Erscheinungen der Phrase „bei einer Ausführungsform“ an verschiedenen Stellen über die gesamte Spezifikation hinweg nicht alle notwendigerweise auf die gleiche Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Charakteristiken bei einer oder mehreren Ausführungsformen auf eine beliebige geeignete Weise kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Sinn und Schutzumfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Spezifikation und die Zeichnungen sind dementsprechend eher in einem veranschaulichenden Sinne als in einem beschränkenden Sinne zu betrachten. Darüber hinaus bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, kann sich aber auf andere und unterschiedliche Ausführungsformen sowie potentiell auf dieselbe Ausführungsform beziehen.

Claims (25)

  1. Einrichtung, umfassend: Bitübertragungsschichtschaltkreise, die eine oder mehrere Spuren zur Kopplung der Einrichtung mit einer oder mehreren Endpunktvorrichtungen umfassen; eine erste Eingabe-/Ausgabe- bzw. E/A-Steuerung, die Schaltkreise zur Kopplung eines ersten Prozessors mit den Bitübertragungsschichtschaltkreisen umfasst, wobei die erste E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; eine zweite E/A-Steuerung, die Schaltkreise zur Kopplung eines zweiten Prozessors mit den Bitübertragungsschichtschaltkreisen umfasst, wobei die zweite E/A-Steuerung mit dem auf PCle basierenden Protokoll kompatibel ist; einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA, der die erste und zweite E/A-Steuerung mit der einen oder den mehreren Spuren koppelt, wobei der FIA Schaltkreise zum selektiven Vergeben von Zugriff auf jede Spur der einen oder mehreren Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung umfasst; und eine kommunikativ mit dem FIA gekoppelte Power-Management-Steuerung bzw. PMC, wobei die PMC Schaltkreise umfasst zum Bewirken, dass der FIA dynamisch Zugriff auf mindestens eine der Spuren durch die erste oder zweite E/A-Steuerung ohne einen Reboot-Zyklus vergibt.
  2. Einrichtung nach Anspruch 1, wobei die FIA-Schaltkreise den Zugriff auf die Spuren der Bitübertragungsschichtschaltkreise selektiv durch Wechseln einer Wurzelportvergabe für die Spuren vergeben sollen.
  3. Einrichtung nach Anspruch 1, wobei die FIA-Schaltkreise ferner eine Angabe der Spurneuvergabe an jede der ersten und zweiten E/A-Steuerung bereitstellen sollen.
  4. Einrichtung nach Anspruch 1, wobei die PMC-Schaltkreise ferner ein Hot-Entfernungsereignis an Software höherer Ebenen auf der Basis der Spurneuvergabe durch den FIA erzeugen sollen.
  5. Einrichtung nach Anspruch 1, wobei die PMC-Schaltkreise bewirken sollen, dass die FIA-Schaltkreise auf der Basis des Detektierens eines Power-Zustandsübergangs in dem ersten oder zweiten Prozessor Zugriff auf eine oder mehrere Spuren dynamisch neu vergeben.
  6. Einrichtung nach Anspruch 1, wobei die Bitübertragungsschichtschaltkreise mehrere Spuren zur Kopplung der Einrichtung mit einer Endpunktvorrichtung umfassen und die FIA-Schaltkreise Zugriff auf jede Spur der mehreren Spuren durch entweder die erste oder die zweite E/A-Steuerung selektiv vergeben sollen.
  7. Einrichtung nach Anspruch 1, wobei die Bitübertragungsschichtschaltkreise eine erste Menge von Spuren zur Kopplung der Einrichtung mit einer ersten Endpunktvorrichtung und eine zweite Menge von Spuren zur Kopplung der Einrichtung mit einer zweiten Endpunktvorrichtung umfassen und die FIA-Schaltkreise Zugriff auf jede Spur der ersten und zweiten Menge von Spuren entweder durch die erste oder zweite E/A-Steuerung selektiv vergeben sollen.
  8. Einrichtung nach einem der Ansprüche 1-7, wobei die Schaltkreise der ersten E/A-Steuerung einen Hostprozessor einer die Einrichtung enthaltenden Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen und die Schaltkreise der zweiten E/A-Steuerung einen in der Einrichtung enthaltenen Prozessor mit den Bitübertragungsschichtschaltkreisen koppeln sollen.
  9. Einrichtung nach einem der Ansprüche 1-8, wobei die Schaltkreise der ersten E/A-Steuerung einen ersten Hostprozessor einer die Einrichtung enthaltenden Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen und die Schaltkreise der zweiten E/A-Steuerung einen zweiten Hostprozessor der Vorrichtung mit den Bitübertragungsschichtschaltkreisen koppeln sollen.
  10. Nichttransitorische computerlesbare Medien mit Anweisungen, die, wenn sie ausgeführt werden, in einer Hostvorrichtung eingebettete Logik zu Folgendem veranlassen: Vergeben von Zugriff auf eine Menge von Spuren von Bitübertragungsschichtschaltkreisen durch eine erste E/A-Steuerung über einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA; Herstellen einer ersten auf PCle (Peripheral Component Interconnect Express) basierenden Verbindung zwischen der ersten E/A-Steuerung und einer Endpunktvorrichtung über die Menge von Spuren von Bitübertragungsschichtschaltkreisen; dynamisches Neuvergeben von Zugriff auf die Menge von Spuren durch eine zweite E/A-Steuerung über den FIA ohne einen Reboot-Zyklus; und Herstellen einer zweiten auf PCle basierenden Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren der Bitübertragungsschichtschaltkreise.
  11. Computerlesbare Medien nach Anspruch 10, wobei die Anweisungen Zugriff auf die Spuren durch Ändern einer Wurzelportvergabe für die Spuren neu vergeben sollen.
  12. Computerlesbare Medien nach Anspruch 10 oder 11, wobei die Anweisungen eine Angabe der Spurneuvergabe an jeweils die erste und zweite E/A-Steuerung bereitstellen sollen.
  13. Computerlesbare Medien nach einem der Ansprüche 10-12, wobei die Anweisungen die Spurneuvergabe Software höherer Ebenen als ein Hot-Entfernungsereignis exponieren sollen.
  14. Computerlesbare Medien nach einem der Ansprüche 10-13, wobei die Anweisungen Zugriff auf die Menge von Spuren dynamisch auf der Basis des Detektierens eines Power-Zustandsübergangs in einem der ersten E/A-Steuerung zugeordneten Prozessor neu vergeben sollen.
  15. Computerlesbare Medien nach einem der Ansprüche 10-14, wobei die Anweisungen verifizieren sollen, dass es keinen unerledigten Verkehr gibt, der auf der ersten Verbindung ansteht, bevor Zugriff auf die Spuren neu vergeben wird.
  16. System, umfassend: eine Endpunktvorrichtung; einen Hostprozessor; einen kommunikativ mit dem Prozessor und der Endpunktvorrichtung gekoppelten Steuerungshub, wobei der Steuerungshub Folgendes umfasst: einen Verwaltbarkeitsengine- bzw. ME-Prozessor; Bitübertragungsschichtschaltkreise, die eine Menge von Spuren umfassen, die den Steuerungshub mit der Endpunktvorrichtung koppeln; eine erste Eingabe-/Ausgabe- bzw. E/A-Steuerung, die Schaltkreise umfasst, die den Hostprozessor mit den Bitübertragungsschichtschaltkreisen koppeln, wobei die erste E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; eine zweite E/A-Steuerung, die Schaltkreise umfasst, die den ME-Prozessor mit den Bitübertragungsschichtschaltkreisen koppeln, wobei die zweite E/A-Steuerung mit einem auf PCle (Peripheral Component Interconnect Express) basierenden Protokoll kompatibel ist; einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA, der die erste und zweite E/A-Steuerung mit der Menge von Spuren koppelt, wobei der FIA Schaltkreise zum selektiven Vergeben von Zugriff auf jede Spur der Menge von Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung umfasst; und eine kommunikativ mit dem FIA gekoppelte Power-Management-Steuerung bzw. PMC, wobei die PMC Schaltkreise umfasst zum Bewirken, dass der FIA dynamisch Zugriff auf die der Menge von durch die erste und zweite E/A-Steuerung ohne einen Reboot-Zyklus vergibt.
  17. System nach Anspruch 16, wobei die FIA-Schaltkreise Zugriff auf die Menge von Spuren durch Ändern eines Wurzelspeicherraumzugriffs für die Menge von Spuren vergeben sollen.
  18. System nach Anspruch 16 oder 17, wobei der FIA eine Angabe der Spurneuvergabe an jede der ersten und zweiten E/A-Steuerung bereitstellen sollen.
  19. System nach einem der Ansprüche 16-18, wobei die PMC bewirken soll, dass der FIA als Reaktion auf Detektieren eines Power-Zustandsübergangs in dem Hostprozessor den Zugriff auf die Menge von Spuren durch den ME-Prozessor dynamisch neu vergibt.
  20. System nach einem der Ansprüche 16-19, wobei die Menge von Spuren eine erste Menge von Spuren ist, die Endpunktvorrichtung eine erste Endpunktvorrichtung ist, das System ferner eine zweite Endpunktvorrichtung umfasst, die Bitübertragungsschichtschaltkreise ferner eine zweite Menge von Spuren umfasst, die den Steuerungshub mit der zweiten Endpunktvorrichtung koppeln, der FIA die erste und zweite E/A-Steuerung mit der zweiten Menge von Spuren koppelt und die FIA-Schaltkreise Zugriff auf jede Spur der zweiten Menge von Spuren durch entweder die erste E/A-Steuerung oder die zweite E/A-Steuerung selektiv vergeben sollen.
  21. System, umfassend: Mittel zum Vergeben von Zugriff auf eine Menge von Spuren von Bitübertragungsschichtschaltkreisen durch eine erste E/A-Steuerung; Mittel zum Herstellen einer ersten auf PCle (Peripheral Component Interconnect Express) basierenden Verbindung zwischen der ersten E/A-Steuerung und einer Endpunktvorrichtung über die Menge von Spuren von Bitübertragungsschichtschaltkreisen; Mittel zum dynamischen Neuvergeben von Zugriff auf die Menge von Spuren durch eine zweite E/A-Steuerung ohne einen Reboot-Zyklus; und Mittel zum Herstellen einer zweiten auf PCle basierenden Verbindung zwischen der zweiten E/A-Steuerung und der Endpunktvorrichtung über die Menge von Spuren der Bitübertragungsschichtschaltkreise.
  22. System nach Anspruch 21, wobei die Mittel zum Vergeben von Zugriff auf die Menge von Spuren durch die erste E/A-Steuerung einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA umfassen.
  23. System nach Anspruch 21 oder 22, wobei die Mittel zum dynamischen Neuvergeben von Zugriff auf die Menge von Spuren durch die zweite E/A-Steuerung einen flexiblen Eingabe-/Ausgabeadapter bzw. FIA umfassen.
  24. System nach einem der Ansprüche 21-23, wobei die Mittel zum dynamischen Neuvergeben von Zugriff auf die Menge von Spuren durch die zweite E/A-Steuerung eine Power-Management-Steuerung bzw. PMC umfassen.
  25. System nach einem der Ansprüche 21-24, das ferner einen mit der zweiten E/A-Steuerung gekoppelten Verwaltbarkeitsengine- bzw. ME-Prozessor umfasst.
DE102020101958.0A 2019-04-26 2020-01-28 Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen Pending DE102020101958A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/396,153 2019-04-26
US16/396,153 US10817454B2 (en) 2019-04-26 2019-04-26 Dynamic lane access switching between PCIe root spaces

Publications (1)

Publication Number Publication Date
DE102020101958A1 true DE102020101958A1 (de) 2020-10-29

Family

ID=67541598

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020101958.0A Pending DE102020101958A1 (de) 2019-04-26 2020-01-28 Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen

Country Status (2)

Country Link
US (1) US10817454B2 (de)
DE (1) DE102020101958A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761939B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Powering-down or rebooting a device in a system fabric
US11874787B2 (en) * 2020-02-13 2024-01-16 Intel Corporation Platform controller hub (PCH) chipsets in platforms as extended IO expander(s)
CN113704835B (zh) * 2021-08-20 2023-11-10 北京计算机技术及应用研究所 一种支持加密卡功能的可信存储硬盘
US20230214346A1 (en) * 2021-12-30 2023-07-06 Ati Technologies Ulc Allocating peripheral component interface express (pcie) streams in a configurable multiport pcie controller
CN115712594B (zh) * 2023-01-09 2023-04-11 苏州浪潮智能科技有限公司 一种通道分配方法、装置、一种存储系统及设备和介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480808B2 (en) * 2004-07-16 2009-01-20 Ati Technologies Ulc Method and apparatus for managing power consumption relating to a differential serial communication link
JP2011186894A (ja) * 2010-03-10 2011-09-22 Ricoh Co Ltd データ転送装置、画像処理装置、データ転送方法、データ転送プログラム及び記録媒体
US9600431B2 (en) * 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US9086966B2 (en) * 2013-03-15 2015-07-21 Intel Corporation Systems, apparatuses, and methods for handling timeouts
US20170154000A1 (en) * 2015-12-01 2017-06-01 International Business Machines Corporation Dynamic Re-Allocation of Computer Bus Lanes
US10534733B2 (en) * 2018-04-26 2020-01-14 EMC IP Holding Company LLC Flexible I/O slot connections

Also Published As

Publication number Publication date
US20190251055A1 (en) 2019-08-15
US10817454B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE112017001148T5 (de) Abflachende portalbrücke .
DE102018005753A1 (de) Serdes link training
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme