DE102018127751A1 - Einheitlicher Adressraum für mehrere Verbindungen - Google Patents

Einheitlicher Adressraum für mehrere Verbindungen Download PDF

Info

Publication number
DE102018127751A1
DE102018127751A1 DE102018127751.2A DE102018127751A DE102018127751A1 DE 102018127751 A1 DE102018127751 A1 DE 102018127751A1 DE 102018127751 A DE102018127751 A DE 102018127751A DE 102018127751 A1 DE102018127751 A1 DE 102018127751A1
Authority
DE
Germany
Prior art keywords
address
accelerator
pcie
hpi
connections
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
DE102018127751.2A
Other languages
English (en)
Inventor
Utkarsh Kakaiya
Nagabhushan Chitlur
Rajesh Sankaran
Mohan Nair
Pratik Marolia
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 DE102018127751A1 publication Critical patent/DE102018127751A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0052Assignment of addresses or identifiers to the modules of a bus system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Offenbart ist ein Beispiel einer Vorrichtung, aufweisend: eine Mehrzahl von Verbindungen zum kommunikativen Koppeln einer Beschleunigereinrichtung mit einer Host-Einrichtung; und ein Adressübersetzungsmodul (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung mit nur einer der Mehrzahl von Verbindungen assoziiert sein soll.

Description

  • Gebiet der Spezifikation
  • Diese Offenbarung behandelt allgemein das Gebiet des Netzwerk-Computings und insbesondere, wenngleich nicht ausschließlich, ein System und Verfahren zum Bereitstellen eines einheitlichen Adressraums für mehrere Verbindungen.
  • Stand der Technik
  • In einigen modernen Rechenzentren kann die Funktion einer Einrichtung oder eines Gerätes nicht an einer bestimmten, festgelegten Hardwarekonfiguration gebunden sein. Vielmehr können Verarbeitungs-, Arbeitsspeicher-, Speicher- und Beschleunigerfunktionen in einigen Fällen von verschiedenen Orten zu einem virtuellen „Verbundknoten“ zusammengefasst werden. Ein aktuelles Netzwerk kann ein Rechenzentrum umfassen, das eine große Anzahl von generischen Hardware-Server-Einrichtungen aufnimmt, die beispielsweise in einem Server-Rack enthalten sind und durch einen Hypervisor gesteuert werden. Eine virtuelle Einrichtung kann auf einer oder mehreren Instanzen einer virtuellen Einrichtung ausgeführt werden, wie zum Beispiel einem Nutzdaten-Server oder einem virtuellen Desktop.
  • Figurenliste
  • Die vorliegende Offenbarung wird am besten verständlich aus der folgenden detaillierten Beschreibung in Verbindung mit den beigefügten Figuren. Es wird unterstrichen, dass entsprechend der Standardpraxis in der Industrie verschiedene Merkmale nicht notwendigerweise maßstabgetreu gezeichnet sind und nur zu Zwecken der Veranschaulichung verwendet werden. Sofern explizit oder implizit ein Maßstab angegeben ist, stellt dies nur ein veranschaulichendes Beispiel bereit. Bei anderen Ausführungsformen können die Abmessungen der verschiedenen Merkmale im Interesse der Erörterung willkürlich vergrößert oder verkleinert werden.
    • 1 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums mit Netzwerkkonnektivität entsprechend einem oder mehreren Beispielen der vorliegenden Anmeldung.
    • 2 ist ein Blockdiagramm ausgewählter Komponenten einer Endbenutzer-Recheneinrichtung entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 3 ist ein Blockdiagramm eines Systems, das beispielsweise in einem Rechenzentrum oder bei einer anderen Rechenressource vorliegen kann, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 4 ist ein Blockdiagramm eines zweiten Systems, das ebenfalls Vorteile erzielen kann, entsprechend den Lehren der vorliegenden Spezifikation.
    • 5a stellt eine Ausführungsform dar, wobei ein Adressübersetzungsmodul (ATM) als eine Einheit zur Adressübersetzung und Sicherheitsprüfung (ATU) in einem Beschleuniger entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation bereitgestellt ist.
    • 5b stellt eine Ausführungsform dar, wobei eine zentrale Verarbeitungseinheit (CPU) mit drei Beschleunigereinrichtungen arbeitet, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 6 ist ein Ablaufdiagramm eines Verfahrens zum Bereitstellen von Adressübersetzung über eine ATU in einem Beschleuniger oder in einer anderen geeigneten Systemkonfiguration entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 7 ist ein Blockdiagramm zur Verwendung eines Adressübersetzungscaches als das ATM entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 8 ist ein Ablaufdiagramm eines Verfahrens, das durch ein System durchgeführt werden kann, wobei das Adressübersetzungsmodul in einem ATC auf der Beschleunigereinrichtung ausgeführt ist, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 9 ist ein Blockdiagramm von Komponenten einer Rechenplattform entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 10 gibt eine Ausführungsform einer aus Punkt-zu-Punkt-Verbindungen zusammengesetzten Struktur wieder, die eine Gruppe von Komponenten verbinden, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 11 gibt eine Ausführungsform eines geschichteten Protokollstapels gemäß einer oder mehreren Ausführungsformen der vorliegenden Spezifikation wieder.
    • 12 stellt eine Ausführungsform eines „Peripheral Component Interconnect Express“-(PCIe)-Transaktionsdeskriptor entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation dar.
    • 13 gibt eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Struktur entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation wieder.
    • 14 gibt eine Ausführungsform mehrerer potenzieller Mehrfachverteiler-Konfigurationen entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation wieder.
    • 15 stellt eine Ausführungsform eines geschichteten Stapels für eine Hochleistungs-Verbindungsarchitektur entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation dar.
  • Ausführungsformen der Offenbarung
  • Die folgende Offenbarung stellt mehrere unterschiedliche Ausführungsformen oder Beispiele zur Implementierung unterschiedlicher Merkmale der vorliegenden Offenbarung bereit. Spezifische Beispiele von Komponenten und Anordnungen sind im Folgenden zur Vereinfachung der vorliegenden Offenbarung beschrieben. Dies sind selbstverständlich lediglich Beispiele, die nicht einschränkend sein sollen. Ferner können bei der vorliegenden Offenbarung Bezugsziffern und/oder Buchstaben in den verschiedenen Beispielen wiederholt werden. Diese Wiederholung erfolgt zum Zweck der Vereinfachung und Klarheit und bedingt nicht an sich eine Beziehung zwischen den verschiedenen erörterten Ausführungsformen und/oder Konfigurationen. Unterschiedliche Ausführungsformen können unterschiedliche Vorteile aufweisen, und bei einer beliebigen Ausführungsform ist kein besonderer Nutzen einer notwendigerweise erforderlich.
  • Eine aktuelle Rechenplattform wie eine von Intel® oder ähnlichen Anbietern bereitgestellte Hardwareplattform kann eine Fähigkeit zur Überwachung der Geräteleistung aufweisen und Entscheidungen zur Bereitstellung von Ressourcen treffen. Beispielsweise kann in einem großen Rechenzentrum wie es durch einen Cloud Service Provider (CSP) bereitgestellt werden kann, die Hardware-Plattform in einem Rack angeordnete Server mit Rechenressourcen wie Prozessoren, Arbeitsspeichern, Speicher-Pools, Beschleunigern und ähnlichen Ressourcen aufweisen. Der hier verwendete Begriff „Cloud-Computing“ weist netzwerkverbundene Rechenressourcen und Technologie auf, die (oft weltweit) allgegenwärtigen Zugriff auf Daten, Ressourcen und/oder Technologie ermöglicht. Cloud-Ressourcen sind im Allgemeinen gekennzeichnet durch große Flexibilität zur dynamischen Zuweisung von Ressourcen gemäß aktuellen Nutzdaten und Anforderungen. Dies kann zum Beispiel durch Virtualisierung erreicht werden, wobei Ressourcen wie Hardware, Speicher und Netzwerke zu einer virtuellen Maschine (VM) über eine Software-Abstraktionsschicht und/oder Containerisierung bereitgestellt werden, wobei Instanzen von Netzwerkfunktionen in „Container“ bereitgestellt werden, die voneinander getrennt sind, jedoch das zugrunde liegende Betriebssystem, den Arbeitsspeicher und die Treiberressourcen gemeinsam nutzen.
  • In einem modernen Rechenzentrum, wie es z. B. durch einen Cloud-Service-Provider (CSP) oder High-Performance-Computing (HPC)-Cluster zur Verfügung gestellt werden kann, können Rechenressourcen, umfassend Zyklen der zentralen Verarbeitungseinheit (CPU), eine der primären geldwerten Ressourcen sein. Es ist daher vorteilhaft, andere Ressourcen bereitzustellen, die eine Auslagerung von Spezialfunktionen bereitstellen können und somit CPU-Zyklen für die Verwertung freigeben und die Gesamteffizienz des Rechenzentrums erhöhen.
  • Zu diesem Zweck kann ein modernes Rechenzentrum Einrichtungen bereitstellen wie Beschleuniger für die Auslagerung verschiedener Funktionen. Beispielsweise können in einem HPC-Cluster, der eine Aufgabe künstlicher Intelligenz ausführt, wie z. B. in einem „Convolutional Neural Network“ (CNN), Trainingsaufgaben zu einem Beschleuniger ausgelagert werden, sodass mehr Zyklen verfügbar sind, um die eigentlichen Faltungen auf der CPU auszuführen. Bei einem CSP können Beschleuniger bereitgestellt sein, z. B. über Intel® Accelerator Link (IAL). Bei anderen Ausführungsformen können Beschleuniger auch als anwendungsspezifische integrierte Schaltkreise (ASICs), vor Ort programmierbare Gate-Arrays (FPGAs), Coprozessoren, digitale Signalprozessoren (DSPs), Grafikverarbeitungseinheiten (GPUs) oder andere Verarbeitungsentitäten bereitgestellt sein, die optional abgestimmt ausgelegt sein können, um die Beschleunigerfunktion bereitzustellen. Beschleuniger können ausgelagerte Aufgaben ausführen, die die Effizienz der Netzwerkoperationen erhöhen oder die andere spezielle Funktionen ermöglichen. Als nicht einschränkendes Beispiel können Beschleuniger Kompression, Dekompression, Verschlüsselung, Entschlüsselung, „Deep Packet Inspection“, Sicherheitsdienste oder beliebige andere auslagerbare Funktionen bereitzustellen.
  • Aufgrund des in einem Rechenzentrum anfallenden hohen Datenvolumens ist es oft wünschenswert, die Latenz zu minimieren und die für die CPU zur Kommunikation mit dem Beschleuniger verfügbare Bandbreite zu maximieren. Rechenzentren können bestimmte für hohe Bandbreite und/oder geringe Latenz bekannte Verbindungen bereitstellen, wie Intel® Ultra Path Interconnect (UPI), QuickPath Interconnect (QPI), Gigabit-Ethernet, Infiniband oder „Peripheral Component Interconnect Express“ (PCIe). Obwohl viele verschiedene Arten von Verbindungen möglich sind, verwendet die vorliegende Spezifikation UPI als eine repräsentative Cache-kohärente Verbindung und PCIe als eine repräsentative nicht Cache-kohärente Verbindung. Während PCIe und UPI hier als konkrete und veranschaulichende Beispiele bereitgestellt sind, versteht es sich, dass es nicht einschränkende Beispiele sind und dass sie gegebenenfalls durch beliebige andere geeignete Verbindungstypen ersetzt werden können.
  • Mit zunehmender Verbreitung von Beschleunigern und anderen ausgelagerten Einrichtungen nimmt der Bedarf an Bandbreite zwischen der CPU und diesen Einrichtungen zu. Ferner werden auch Interaktionen zwischen der CPU und Beschleunigern zunehmend ausgereift, mit großem Bedarf an niedriger Latenz, hoher Bandbreite, Kohärenz in einigen Fällen und weiterer Semantik.
  • Es wird zunehmend schwieriger, den gesamten Verbindungsbedarf unter Verwendung einer einzelnen Schnittstelle zu erfüllen. Beispielsweise stellt PCIe sehr hohe Bandbreite bereit, doch derzeitige Ausführungsformen von PCIe weisen keine Cache-Kohärenz auf. Andererseits stellt UPI Cache-Kohärenz und sehr niedrige Latenz, aber weniger Bandbreite als PCIe bereit. Es ist möglich, mehrere Verbindungen mit unterschiedlichen Eigenschaften zwischen der CPU und dem Beschleuniger zu verwenden, um den Bedarf der Verbindung zu erfüllen. Dies kann jedoch die auf der CPU laufende Software und die auf der Einrichtung ausgeführte Firmware oder Anweisungen verkomplizieren, da jede Verbindung ihre eigenen Treiber und unterstützende Kommunikation unter Verwendung von unterschiedlichen Adressräumen für jede Verbindung benötigt.
  • Man betrachte zum Beispiel einen Fall, wobei eine Verbindung zwischen einer CPU und einem FPGA erfordert:
    • • Sehr hohe Bandbreite
    • • Geringe Latenz, und
    • • Kohärenz.
  • In diesem Fall kann PCIe allein möglicherweise nicht ausreichen, da PCIe nicht eine Cache-kohärente Verbindung ist und somit keinen kohärenten Zugriff auf Systemspeicher für die Beschleunigereinrichtung bereitstellt. Kohärenz kann durch die Verwendung einer kohärenten Anschluss-zu-Anschluss-Verbindung wie QPI oder UPI bereitgestellt werden. QPI und UPI können jedoch möglicherweise nicht die hohe Bandbreite von PCIe bereitstellen, und sie sind in vielen Fällen für den Volumentransfer von Daten weniger effizient. Um dieses Problem anzugehen, können einige Systementwickler sowohl eine UPI- als auch eine PCIe-Verbindung zum Beschleuniger von der CPU vorsehen.
  • In vielen Prozessoren wie den aktuellen Intel® Xeon® Server-CPUs werden der CPU-Downstream-Anschluss und die kohärente Schnittstelle (z. B. UPI) als Teil der sicheren Domäne des CPU-Komplexes betrachtet. Externe Einrichtungen unter dem CPU-Datenstream-Anschluss werden am Stamm der Hierarchie im CPU-Root-Komplex geschützt. Um Isolierung zwischen Speicherzugriffen von jeder Einrichtung bereitzustellen, kann die CPU Adressübersetzung und Sicherheitsprüfungen am Root-Komplex implementieren. Somit kann eine mit der CPU verbundene Dual-Link-Einrichtung (z. B. mit einer PCIe- und UPI-Verbindung) auf zwei getrennte Routen abgebildet werden. Die Einrichtung erscheint für das Betriebssystem daher als zwei getrennte Einrichtungen, nämlich eine PCIe-Einrichtung und eine UPI-Einrichtung. Ferner werden Speicherzugriffe auf zwei getrennte sichere Adressdomänen abgebildet. Dies bedeutet, dass der Software Entwickler zwei getrennte Einrichtungen verwalten muss, um einen einzelnen Beschleuniger zu adressieren, wodurch Softwarekomplexität für eine Mehrverbindungseinrichtung hinzugefügt wird. Ferner können zum Bereitstellen noch größerer Bandbreite mehrere PCIe-Schnittstellen vorgesehen werden.
  • Als nicht einschränkendes und veranschaulichendes Beispiel stellt diese Spezifikation zwei Fälle bereit, wobei mehrere PCIe-Verbindungen zu einer einzelnen logischen Beschleunigereinrichtung bereitgestellt werden.
  • Beim ersten Beispiel, dargestellt in 3 weiter unten, sind zusätzlich zu einer UPI-Schnittstelle drei PCIe-Schnittstellen zu einer einzelnen Beschleunigereinrichtung bereitgestellt. Die drei PCIe-Schnittstellen liefern dem Beschleuniger die Fähigkeit, Transaktionen mit extrem hoher Bandbreite über die Vielzahl von PCIe-Einrichtungen zu handhaben. Das Hinzufügen einer UPI-Einrichtung stellt auch die Fähigkeit bereit, Cache-kohärente Transaktionen mit extrem geringer Latenz zu handhaben. Bei diesem Beispiel ist der in 3 dargestellte einzelne Beschleuniger jedoch als vier getrennte Einrichtungen adressierbar, da vier diskrete Schnittstellen bereitgestellt sind.
  • Bei einem zweiten Beispiel, dargestellt weiter unten in 4, kann eine Mehrzahl von Einrichtungen kooperativ arbeiten und Gerät-zu-Gerät-Verbindungen aufweisen, um untereinander zu kommunizieren. Diese Einrichtungen können beispielsweise unterschiedliche Phasen der gleichen Operation ausführen, oder sie können parallel die gleiche Operation an drei separaten Daten ausführen. Die CPU kann eine PCIe-Verbindung zu jeder aufweisen, es können aber logische Gründe dafür vorliegen, dass die drei Einrichtungen als eine einzelne logische Einrichtung adressiert werden können.
  • In beiden vorstehend dargestellten Instanzen und bei vielen weiteren Instanzen ist es vorteilhaft, mehrere physikalische Verbindungen zu der einzelnen physikalischen oder logischen Einrichtung bereitzustellen, neben Verbindungsaggregationsschemata, die das logische Betrachten mehrerer Verbindungen als eine einzelne Verbindung in der Software ermöglichen. Dies stellt die Fähigkeit bereit, den Nutzen einer Mehrzahl von Verknüpfungen zu unterstützen, ohne die Softwarekomplexität des separaten Adressierens der Verbindungen hinzufügen zu müssen.
  • Ausführungsformen des Systems und Verfahrens der vorliegenden Spezifikation verwenden eine Adressübersetzungs- und Sicherheitsprüfungseinheit (ATU) und/oder einen Adressübersetzungs-Cache (ATC), um eine Abbildung zwischen einer physischen Gastadresse (GPA) und einer physischen Host-Adresse (HPA) bereitzustellen. Ausführungsformen der vorliegenden Spezifikation trennen die logische Ansicht der Einrichtung von der physischen Verbindungstopologie. Anders ausgedrückt, kann die Mehrverbindungseinrichtung in physischer Hinsicht aus der Sichtweise des Systems und seiner Software logisch als eine einzelne Verbindungseinrichtung behandelt werden.
  • Ein Betriebsprinzip der vorliegenden Spezifikation ist eine „Eine-Software-Sichtweise“ einer Mehrverbindungseinrichtung, sodass die Software an Verbindung 0 eine einzelne Einrichtungsverbindung sieht. Bei der Ausführung einer Zuordnungsoperation (wie „malloc“) ordnet sie einen Puffer einer bestimmten physischen Host-Adresse nur für die Verbindung 0 zu. Anders ausgedrückt, weist die CPU über malloc einen Puffer bei HPA-X für Verbindung 0 zu. Die Einrichtung kann anschließend GPA-X Prime (GPA-X') über eine beliebige Verbindung senden, um den gleichen HPA-X zu erreichen.
  • Bei einer Mehrverbindungseinrichtung entsprechend der Darstellung in 3 können die CPU und die Einrichtung so ausgelegt sein, dass die Software die Einrichtung nur an der physikalischen Hierarchie der Verbindung 0 erkennen kann. Man beachte, dass die physikalische Verbindung 0 hier als eine logische Wahl für die alleinige physikalische Verbindung dargestellt ist, an der die Einrichtung erkennbar ist, wobei dies jedoch ein nicht einschränkendes Beispiel ist. Bei anderen Ausführungsformen können beliebige der Mehrzahl von Verbindungen als entdeckbare Verbindung ausgewählt werden. Die anderen, nicht ausgewählten physikalischen Verbindungen sind für das Sichtfeld der Software verborgen.
  • Bei einigen Ausführungsformen der vorliegenden Spezifikation kann an der Einrichtung selbst eine physikalische Gast-zu Host-Adressübersetzung implementiert werden. Dies kann durch Implementieren der ATU in der Einrichtung beim Deaktivieren der CPU-seitigen ATU an allen Verbindungen erfolgen. Man beachte, dass dies die Erweiterung des CPU-Stamms auf die Einrichtung erfordert. Bei einer anderen Ausführungsform kann eine Gast-zu-Host-Adressübersetzung durch einen ATC in der Einrichtung implementiert werden, wobei alle ATUs auf der CPU-Seite mit Ausnahme der gewählten Verbindungs-ATU (z. B. Verbindung 0) deaktiviert sind. Diese Verbindung wird stets verwendet, um die physikalische Host-Adresse zu tragen.
  • Bei jeder Ausführungsform kann die Anforderungskennung (RID) vom System verwendet werden, um zu identifizieren, auf welche Adressdomäne die Anforderung abgebildet werden soll. Anders ausgedrückt, kann jede physikalische Schnittstelle ihre eigene Adressdomäne aufweisen, und die CPU kann in Hardware oder in Mikrocode eine Anforderung zu der Adressdomäne einer physikalischen Verbindung, die die RID verwendet, abbilden. Alle Anforderungen von der Einrichtung können gleiche RID zur Adressübersetzung verwenden. Durch die Verwendung der gleichen RID werden alle Anforderungen auf die gleiche Adressdomäne abgebildet.
  • Diese Lösung stellt Vorteile in Bezug auf andere mögliche Lösungen bereit. Beispielsweise kann im Fall mehrerer Verbindungen die E/A-Virtualisierung deaktiviert werden, sodass die Beschleunigereinrichtung nicht virtualisiert werden kann. Dies ist in vielen Datenzentren, die stark auf Virtualisierung aufbauen, möglicherweise nicht eine weithin akzeptierbare Lösung.
  • In anderen Fällen kann Virtualisierung aktiviert sein, aber die Einrichtung wird als Einrichtung mit N Partitionen betrachtet, wobei N gleich der Anzahl physikalischer Schnittstellen ist. Diese N Partitionen müssen möglicherweise von unabhängigen Softwaretreibern oder Instanzen von Softwaretreibern verwaltet werden. Dies macht es für die Einrichtung schwer, einen dynamischen Lastausgleich der Bandbreite über Verbindungen auszuführen, und erhöht ferner die Softwarekomplexität zum Verwalten der Endeinrichtungen, statt die Einrichtung als eine einzelne Einrichtung zu behandeln, die eine einzelne Verbindung aufweist. Beispielsweise kann eine 100-GB-Netzwerkschnittstellenkarte (NIC), die über zwei PCIe-G3x8-Verbindungen angeschlossen ist, die Ausführung von zwei unabhängigen Netzwerkstacks erfordern.
  • Das System und Verfahren der vorliegenden Spezifikation können in vorteilhafter Weise als einzelne Einrichtung verwaltet werden, von einem einzelnen Softwaretreiber, aber dennoch zwei oder mehr physische Verbindungen nutzen, um die zusätzliche Bandbreite dieser Verbindungen zu realisieren. Dies unterstützt die Skalierung der Performanz der Einrichtung, ohne zusätzliche Komplexität für die Einrichtungs- und Treiberentwickler hinzuzufügen. Ferner ermöglicht dies Portierbarkeit für die Anwendung. Eine zur Verwendung mit einer Einrichtung, die eine einzelne Verbindung aufweist, geschriebene Anwendung lässt sich leicht auf ein System portieren, das mehrere Verbindungen bereitstellt, und zwar in einigen Fällen ohne jegliche Neuprogrammierung. Die Software kann vielmehr die Anzahl verfügbarer Verbindungen dynamisch anpassen, da die CPU selbst die Verbindungen wie eine einzelne logische Verbindung verwaltet.
  • Ein System und Verfahren zum Bereitstellen eines einheitlichen Adressraums für mehrere Verbindungen wird im Folgenden mit besonderem Bezug auf die beigefügten FIGUREN beschrieben. Man beachte, dass im Verlauf der FIGUREN bestimmte Kennziffern wiederholt werden können, um anzugeben, dass eine bestimmte Einrichtung oder ein Block im Verlauf der FIGUREN ganz oder teilweise konsistent ist. Dies soll jedoch nicht eine besondere Beziehung zwischen den verschiedenen offenbarten Ausführungsformen implizieren. Bei bestimmten Beispielen kann eine Klasse von Elementen durch eine besondere Kennziffer bezeichnet sein („Widget 10“), während individuelle Typen oder Beispiele der Klasse durch eine Kennziffer mit Trennstrich bezeichnet sein können („erstes spezifisches Widget 10-1“ und „zweites spezifisches Widget 10-2“).
  • 1 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums mit Konnektivität zum Netzwerk 100 eines Cloud Service Providers (CSP) 102 entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Man beachte, dass in dieser Figur offenbarte Ausführungsformen des Rechenzentrums mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Der CSP 102 kann als nicht einschränkendes Beispiel ein traditionelles Rechenzentrum eines Unternehmens sein oder eine „private Cloud“ oder eine „öffentliche Cloud“ und Dienstleistungen bereitstellen wie „Infrastructure as a Service“ (IaaS), „Platform as a Service“ (PaaS) oder „Software as a Service“ (SaaS). In einigen Fällen kann der CSP 102 statt der Cloud-Dienste oder zusätzlich dazu Hochleistungs-Computing-(HPC)-Plattformen oder -Dienste bereitstellen. So können HPC-Cluster („Supercomputer“), auch wenn sie nicht ausdrücklich identisch sind, strukturell Cloud-Rechenzentren ähneln, und, sofern nicht ausdrücklich anders angegeben, können die Lehren dieser Spezifikation auf beide Typen angewandt werden.
  • Der CSP 102 kann eine Anzahl von Nutzdaten-Clustern 118 bereitstellen, die Cluster individueller Server, Blade-Server, Rackmount-Server oder einer beliebigen anderen geeigneten Servertopologie sind. Bei diesem veranschaulichenden Beispiel sind zwei Nutzdaten-Cluster 118-1 und 118-2 gezeigt, die jeweils Rackmount-Server 146 in einem Chassis 148 bereitstellen.
  • In dieser Darstellung sind die Nutzdaten-Cluster 118 als modulare Nutzdaten-Cluster unter Einhaltung des Rack-Einheiten-(„U“)-Standards gezeigt, wobei ein standardmäßiges 19 Zoll breites Rack errichtet wird, um 42 Einheiten (42U) aufzunehmen, die jeweils 1,75 Zoll hoch sind, bei ungefähr 36 Zoll Tiefe. In diesem Fall können Rechenressourcen wie Prozessoren, Arbeitsspeicher, Speicher, Beschleuniger und Switches in einige Mehrfache der Rack-Einheiten von eins bis 42 passen.
  • Jeder Server 146 kann ein Stand-alone-Betriebssystem aufnehmen und eine Serverfunktion bereitstellen, oder Server können virtualisiert sein, wobei sie in diesem Fall durch einen virtuellen Maschinenmanager (VMM), Hypervisor und/oder Orchestrator gesteuert werden können, und sie können eine oder mehrere virtuelle Maschinen, virtuelle Server oder virtuelle Anwendungen aufnehmen. Diese Server-Racks können in einem einzelnen Rechenzentrum platziert sein, oder sie können sich in unterschiedlichen geografischen Rechenzentren befinden. In Abhängigkeit von den vertraglichen Vereinbarungen können einige Server 146 spezifisch für bestimmte Kunden oder Pächter eines Unternehmens reserviert sein, während andere geteilt werden können.
  • Die verschiedenen Einrichtungen in einem Rechenzentrum können über eine Schaltstruktur 170 miteinander verbunden sein, die eine oder mehrere Hochgeschwindigkeits-Routing- und/oder Schalteinrichtungen aufweisen kann. Die Schaltstruktur 170 kann sowohl „Nord-Süd“-Verkehr bereitstellen (z. B. Verkehr zu und von dem Weitverkehrsnetz (WAN) wie dem Internet) als auch „Ost-West“-Verkehr (z. B. Verkehr über das Rechenzentrum). Historisch machte Nord-Süd-Verkehr die Masse des Netzwerkverkehrs aus, doch mit immer komplexeren und verteilteren Webdiensten ist das Volumen von Ost-West-Verkehr gestiegen. In vielen Rechenzentren stellt Ost-West-Verkehr mittlerweile den Hauptteil des Verkehrs dar.
  • Mit zunehmender Kapazität jedes Servers 146 kann das Verkehrsvolumen ferner weiter ansteigen. Beispielsweise kann jeder Server 146 mehrere Prozessor-Slots bereitstellen, wobei jeder Slot einen vier bis acht Kerne aufweisenden Prozessor sowie ausreichenden Speicher für die Kerne aufweist. Somit kann jeder Server eine Anzahl von VMs aufnehmen, die jeweils ihren eigenen Verkehr erzeugen.
  • Zur Bewältigung des großen Verkehrsvolumens in einem Rechenzentrum kann eine Hochleistungs-Schaltstruktur 170 bereitgestellt sein. Die Schaltstruktur 170 ist in diesem Beispiel als ein „flaches“ Netzwerk dargestellt, wobei jeder Server 146 eine direkte Verbindung mit einem „Top-of-Rack“-(ToR)-Switch 120 aufweisen kann (z. B. eine Sternkonfiguration), und jeder ToR-Switch 120 kann mit einem Kern-Switch 130 gekoppelt sein. Diese zweistufige flache Netzwerkarchitektur ist nur als veranschaulichendes Beispiel gezeigt. Bei anderen Beispielen können andere Architekturen eingesetzt werden, wie zum Beispiel dreigliedriger Stern oder Blattrücken (auch als „Fat-Tree“-Topologien bezeichnet), basierend auf der „Clos“-Architektur, „Hub-and-Spoke“-Topologie, vermaschten Topologien, Ringtopologien oder 3-D-Mesh-Topologien als nicht einschränkende Beispiele.
  • Die Struktur selbst kann durch eine beliebige geeignete Verbindung bereitgestellt werden. Beispielsweise kann jeder Server 146 eine Intel® Host Fabric Interface (HFI), eine NIC, einen Host-Kanaladapter (HCA) Oder eine andere Host-Schnittstelle aufweisen. Im Interesse der Einfachheit und Vereinheitlichung können diese im Verlauf dieser Spezifikation als eine „Host-Struktur-Schnittstelle“ (HFI) bezeichnet sein, die in weitem Sinn als eine Schnittstelle zum kommunikativen Koppeln des Hosts an die Rechenzentrumsstruktur ausgelegt werden soll. Die HFI kann einen oder mehrere Host-Prozessoren über eine Verbindung oder einen Bus wie PCI, PCIe oder dergleichen koppeln. In einigen Fällen kann dieser Verbindungsbus neben anderen „lokalen“ Verbindungen (z. B. Kern-zu-Kern-„Ultra Path Interconnect“) als Teil der Struktur 170 betrachtet werden. Bei anderen Ausführungsformen kann die UPI (oder eine andere lokale kohärente Verbindung) als Teil der sicheren Domäne des Prozessorkomplexes und somit nicht als Teil der Struktur behandelt werden.
  • Die Verbindungstechnologie kann durch eine einzelne Verbindung oder eine Hybridverbindung bereitgestellt werden, wobei z. B. PCIe On-Chip-Kommunikation bereitstellt, 1-GB- oder 10-GB-Kupfer-Ethernet relativ kurze Verbindungen zu einem ToR-Switch 120 bereitstellt und optische Verkabelung relativ längere Verbindungen zum Kern-Switch 130 bereitstellt. Verbindungstechnologien, die im Rechenzentrum vorliegen können, umfassen als nicht einschränkende Beispiele Intel® Omni-PathTM Architecture (OPA), TrueScaleTM, Ultra Path Interconnect (UPI) (Ältere Bezeichnung QPI oder KTI), FibreChannel, Ethernet, FibreChannel über Ethernet (FCoE), InfiniBand, PCI, PCIe oder Lichtwellenleiter, um nur einige anzuführen. Die Struktur kann Cache- und speicherkohärent, nicht Cache- und nicht speicherkohärent oder eine Hybridform von kohärenten und nicht kohärenten Verbindungen sein. Einige Verbindungen für bestimmte Zwecke oder Funktionen beliebter als andere, und die Auswahl einer geeigneten Struktur für die betreffende Anwendung erfolgt mit den üblichen Kenntnissen. Beispielsweise werden OPA und Infiniband üblicherweise bei Anwendungen des Hochleistungs-Computing (HPC) eingesetzt, während Ethernet und FiberChannel in Cloud-Rechenzentren beliebter sind. Diese Beispiele sind jedoch ausdrücklich nicht einschränkend, und mit der Weiterentwicklung von Strukturtechnologien für Rechenzentren werden sie in ähnlicher Weise weiterentwickelt.
  • Man beachte, dass, während hier zur Veranschaulichung anspruchsvolle Strukturen wie OPA bereitgestellt sind, die Struktur 170 allgemeiner eine beliebige geeignete Verbindung oder ein Bus für die betreffende Anwendung sein kann. Dies könnte in einigen Fällen Verbindungen aus Altbeständen umfassen wie lokale Netzwerke (LAN), Token-Ring-Netzwerke, synchrone optische Netzwerke (SONET), Netzwerke mit asynchronem Transfermodus (ATM), drahtlose Netzwerke wie WiFi und Bluetooth, „Plain Old Telephone System“ (POTS)-Verbindungen oder dergleichen. Es wird ebenfalls ausdrücklich vorweggenommen, dass in der Zukunft neue Netzwerktechnologien aufkommen werden, um einige der hier aufgeführten zu ergänzen oder zu ersetzen, und beliebige derartige künftige Netzwerktopologien und Technologien können einen Teil der Struktur 170 bilden.
  • Bei bestimmten Ausführungsformen kann die Struktur 170 Kommunikationsdienste auf verschiedenen „Schichten“ bereitstellen, wie ursprünglich umrissen im siebenschichtigen Netzwerkmodell Open System Interconnection (OSI). In der aktuellen Praxis wird das OSI-Modell nicht strikt eingehalten. Im allgemeinen Sprachgebrauch werden die Schichten 1 und 2 häufig als „Ethernet“-Schicht bezeichnet (wenngleich Ethernet in einigen Rechenzentren oder Supercomputern durch neuere Technologien verdrängt oder ergänzt werden kann). Die Schichten 3 und 4 werden häufig als die Übertragungssteuerungsprotokoll/Internetprotokoll-(TCP/IP)-Schicht bezeichnet (die in TCP- und IP-Schichten weiter unterteilt werden kann). Die Schichten 5-7 können als die „Anwendungsschicht“ bezeichnet werden. Diese Schichtdefinitionen werden als nützliches Rahmenwerk offenbart, sollen aber nicht einschränkend sein.
  • 2 ist ein Blockdiagramm ausgewählter Komponenten einer Endbenutzer-Recheneinrichtung 200 entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Man beachte, dass in dieser Figur offenbarte Ausführungsformen der Recheneinrichtung 200 mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Wie vorstehend kann die Recheneinrichtung 200 je nach Eignung einen Cloud-Dienst, Hochleistungs-Computing, Telekommunikationsdienste, Rechenzentrumsdienste eines Unternehmens oder beliebige andere Rechendienste bereitstellen, die eine Recheneinrichtung 200 nutzen.
  • Bei diesem Beispiel ist eine Struktur 270 bereitgestellt, um verschiedene Aspekte der Recheneinrichtung 200 zu verbinden. Die Struktur 270 kann die gleiche wie bei der Struktur 170 aus 1 sein, oder es kann eine unterschiedliche Struktur sein. Wie vorstehend kann die Struktur 270 durch beliebige geeignete Verbindungstechnologie bereitgestellt sein. Bei diesem Beispiel wird Intel® Omni-PathTM als veranschaulichendes und nicht einschränkendes Beispiel verwendet.
  • Entsprechend der Darstellung weist die Recheneinrichtung 200 eine Anzahl von Logikelementen auf, die eine Mehrzahl von Knoten bilden. Es versteht sich, dass jeder Knoten durch einen physikalischen Server, eine Gruppe von Servern oder andere Hardware bereitgestellt werden kann. Jeder Server kann eine oder mehrere virtuelle Maschinen entsprechend dem Bedarf seiner Anwendung ausführen.
  • Der Knoten 0 208 ist ein Verarbeitungsknoten, aufweisen und einen Prozessoranschluss 0 und einen Prozessoranschluss 1. Der Prozessor kann beispielsweise ein Intel® Xeon®-Prozessor mit einer Mehrzahl von Kernen wie z. B. 4 oder 8 Kernen sein. Datenknoten 0 208 kann dafür ausgelegt sein, Netzwerk- oder Nutzdatenfunktionen bereitzustellen, wie z. B. mittels Aufnahme einer Mehrzahl von virtuellen Maschinen oder virtuellen Anwendungen.
  • Onboard-Kommunikation zwischen dem Prozessoranschluss 0 und dem Prozessoranschluss 1 kann durch einen Onboard-Uplink 278 bereitgestellt werden. Dies kann eine sehr hohe Geschwindigkeit und eine Verbindung kurzer Länge zwischen den beiden Prozessoranschlüssen bereitstellen, sodass auf dem Knoten 0 208 ausgeführte virtuelle Maschinen bei sehr hohen Geschwindigkeiten miteinander kommunizieren können. Zur Erleichterung dieser Kommunikation kann am Knoten 0 208 ein virtueller Switch (vSwitch) bereitgestellt sein, der als Teil der Struktur 270 betrachtet werden kann.
  • Der Knoten 0 208 stellt über eine HFI 272 eine Verbindung zur Struktur 270 her. Die HFI 272 kann mit einer Intel® Omni-PathTM-Struktur verbunden sein. Bei einigen Beispielen kann die Kommunikation mit der Struktur 270 getunnelt sein, wie beim Bereitstellen von UPI-Tunnelung über Omni-PathTM.
  • Da die Recheneinrichtung 200 viele Funktionen in einer verteilten Weise bereitstellen kann, die bei früheren Generationen auf der Platine bereitgestellt wurden, kann eine leistungsfähige HFI 272 bereitgestellt werden. Die HFI 272 kann bei Geschwindigkeiten von mehreren Gigabit pro Sekunde arbeiten, und sie kann in einigen Fällen eng mit dem Knoten 0 208 gekoppelt sein. Beispielsweise ist bei einigen Ausführungsformen die Logik für HFI 272 direkt mit den Prozessoren auf einem System-auf-einem-Chip integriert. Dies stellt Kommunikation mit sehr hoher Geschwindigkeit zwischen HFI 272 und den Prozessoranschlüssen bereit, ohne dass zwischengeschaltete Buseinrichtungen erforderlich sind, die zusätzliche Latenz in die Struktur einführen können. Dies soll jedoch nicht implizieren, dass Ausführungsformen ausgeschlossen werden sollen, bei denen HFI 272 über einen traditionellen Bus bereitgestellt ist. Vielmehr wird ausdrücklich vorausgeschickt, dass HFI 272 bei einigen Beispielen auf einem Bus bereitgestellt sein kann wie einem PCIe-Bus, der eine serialisierte Version von PCI ist, die höhere Geschwindigkeiten bereitstellt als eine traditionelle PCI. In der gesamten Recheneinrichtung 200 können verschiedene Knoten unterschiedliche Typen von HFIs 272 bereitstellen wie Onboard-HFIs und Plug-in-HFIs. Man beachte ebenfalls, dass bestimmte Blöcke in einem System-auf-einem-Chip als Blöcke geistigen Eigentums (IP) bereitgestellt sein können, die als modulare Einheit in eine integrierte Schaltung übernommen werden können. Somit kann die HFI 272 in einigen Fällen von einem derartigen IP-Block abgeleitet sein.
  • Man beachte, dass bei der Bauweise „Das Netzwerk ist das Gerät“ der Knoten 0 208 möglicherweise eingeschränkten oder keinen Onboard-Arbeitsspeicher oder Speicher bereitstellen kann. Vielmehr kann der Knoten 0 208 primär auf verteilten Diensten aufbauen, wie einem Arbeitsspeicherserver und einem vernetzten Speicherserver. Auf der Platine stellt der Knoten 0 208 möglicherweise nur ausreichenden Arbeitsspeicher und Speicher bereit für das Boot-Laden der Einrichtung und den Aufbau der Kommunikation mit der Struktur 270. Diese Art einer verteilten Architektur ist möglich aufgrund der sehr hohen Geschwindigkeiten aktueller Rechenzentren, und sie kann vorteilhaft sein, Da es nicht erforderlich ist, für jeden Knoten Reserveressourcen bereitzustellen. Stattdessen kann ein großer Bestand an Hochgeschwindigkeits- oder Spezial-Speicher dynamisch zwischen einer Anzahl von Knoten vorgesehen werden, sodass jeder Knoten Zugriff auf einen umfangreichen Bestand von Ressourcen hat, wobei diese Ressourcen aber nicht inaktiv bleiben, wenn der betreffende Knoten sie nicht benötigt.
  • Bei diesem Beispiel stellen ein Knoten-1-Speicherserver 204 und ein Knoten-2-Speicherserver 210 den Arbeitsspeicher und Speicherkapazitäten vom Knoten 0 208 bereit. Zum Beispiel kann der Speicherserverknoten 1 204 Netzwerk-Speicherdirektzugriff (RDMA) bereitstellen, wodurch der Knoten 0 208 auf Speicherressourcen am Knoten 1 204 über die Struktur 270 in der Art eines direkten Speicherzugriffs zugreifen kann, ähnlich wie es bei einem Zugriff auf seinen eigenen Onboard-Speicher der Fall wäre. Der durch den Speicherserver 204 bereitgestellte Speicher kann traditioneller Speicher sein, wie dynamischer Direktzugriffsspeicher (DRAM) mit doppelter Datenrate Typ 3 (DDR3), der flüchtig ist, oder es kann ein eher exotischer Speicher sein, wie ein persistenter schneller Speicher (PFM) wie Intel® 3D XPoint (3DXPTM), der mit DRAM-ähnlichen Geschwindigkeiten operiert, aber nicht flüchtig ist.
  • In ähnlicher Weise kann statt des Bereitstellens einer Onboard-Festplatte für den Knoten 0 208 ein Speicherserverknoten 2 210 bereitgestellt werden. Der Speicherserver 210 kann ein vernetztes Bündel von Festplatten (NBOD), PFM, ein redundantes Array unabhängiger Festplatten (RAID), ein redundantes Array unabhängiger Knoten (RAIN), netzgebundenen Speicher (NAS), optischen Speicher, Bandlaufwerke oder andere nichtflüchtige Speicherlösungen bereitstellen.
  • Somit kann der Knoten 0 208 bei der Ausführung seiner vorgesehenen Funktion auf Arbeitsspeicher vom Speicherserver 204 zugreifen und Resultate auf den durch den Speicherserver 210 bereitgestellten Speicher abspeichern. Jede dieser Einrichtungen ist mit der Struktur 270 über eine HFI 272 gekoppelt, wodurch schnelle Kommunikation bereitgestellt wird, die diese Technologien möglich macht.
  • Zur weiteren Veranschaulichung ist auch der Knoten 3 206 abgebildet. Der Knoten 3 206 umfasst ebenfalls eine HFI 272 neben zwei durch einen Uplink intern verbundenen Prozessoranschlüssen. Anders als der Knoten 0 208 weist der Knoten 3 206 jedoch seinen eigenen Onboard-Arbeitsspeicher 222 und Speicher 250 auf. Somit kann der Noten 3 206 dafür ausgelegt werden, seine Funktionen primär auf der Platine auszuführen, und es ist möglicherweise nicht erforderlich, auf den Arbeitsspeicherserver 204 und den Speicherserver 210 aufzubauen. Unter entsprechenden Umständen kann der Knoten 3 206 seinen eigenen Onboard-Arbeitsspeicher 222 und Speicher 250 mit verteilten Ressourcen ähnlich wie beim Knoten 0 208 ergänzen.
  • Die Recheneinrichtung 200 kann auch Beschleuniger 230 aufweisen. Diese können verschiedene beschleunigte Funktionen bereitstellen, umfassend Hardware- oder Coprozessor-Beschleunigung für Funktionen wie Paketverarbeitung, Verschlüsselung, Entschlüsselung, Kompression, Dekompression, Netzwerksicherheit oder andere beschleunigte Funktionen im Rechenzentrum. Bei einigen Beispielen können Beschleuniger 230 „Deep Learning“-Beschleuniger umfassen, die an einen oder mehrere Kerne in Knoten wie dem Knoten 0 208 oder dem Knoten 3 206 direkt angeschlossen sind. Beispiele derartiger Beschleuniger können als nicht einschränkendes Beispiel umfassen: Intel® QuickData Technology (QDT), Intel® QuickAssist Technology (QAT), Intel® Direct Cache Access (DCA), Intel® Extended Message Signaled Interrupt (MSI-X), Intel® Receive Side Coalescing (RSC) und andere Beschleunigungstechnologien.
  • Der grundlegende Baustein der verschiedenen hier offenbarten Komponenten kann als „Logikelemente“ bezeichnet werden. Logikelemente können Hardware umfassen (aufweisend zum Beispiel einen softwareprogrammierbaren Prozessor, einen ASIC oder ein FPGA), externe Hardware (digital, analog oder Mischsignal), Software, wechselseitige Software, Dienste, Treiber, Schnittstellen, Komponenten, Module, Algorithmen, Sensoren, Komponenten, Firmware, Mikrocode, programmierbare Logik oder Objekte, die zum Erreichen einer logischen Operation koordiniert werden können. Ferner sind einige Logikelemente durch ein materielles, nicht vorübergehendes rechnerlesbares Medium bereitgestellt, das darauf gespeicherte ausführbare Anweisungen aufweist, um einen Prozessor zum Durchführen einer bestimmten Aufgabe anzuweisen. Ein derartiges nicht vorübergehendes Medium könnte beispielsweise eine Festplatte, Solid-State-Speicher oder eine Solid-State-Festplatte, Nur-Lese-Speicher (ROM), persistenten schnellen Speicher (PFM) (z. B. Intel® 3DXPTM), externen Speicher, ein redundantes Array unabhängiger Festplatten (RAID), ein redundantes Array unabhängiger Knoten (RAIN), netzgebundenen Speicher (NAS), optischen Speicher, ein Bandlaufwerk, ein Backup-System, Cloud-Speicher oder eine beliebige Kombination der vorstehenden als nicht einschränkende Beispiele aufweisen. Ein derartiges Medium könnte ebenfalls in ein FPGA programmierte oder in Hardware auf einem ASIC oder Prozessor codierte Anweisungen aufweisen.
  • 3 ist ein Blockdiagramm eines Systems 300, das beispielsweise in einem Rechenzentrum oder bei einer anderen Rechenressource vorliegen kann, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Das System 300 weist einen Prozessor 304 und einen Beschleuniger 308 auf. Der Prozessor 304 und der Beschleuniger 308 sind über eine Mehrzahl von Verbindungen miteinander gekoppelt. Der Prozessor 304 weist in diesem Fall beispielsweise eine UPI-Verbindung zum Beschleuniger 308 auf, die niedrige Latenz und Cache-Kohärenz bereitstellen kann, sodass es dem Beschleuniger 308 möglich wird, kohärent auf den Speicherraum des Prozessors 304 zuzugreifen, und falls der Beschleuniger 308 seinen eigenen Onboard-Arbeitsspeicher umfasst, kann dieser Onboard-Speicher kohärent auf den nativen Adressraum des Prozessors 304 abgebildet werden. Das System 300 stellt zwischen den Prozessor 304 und dem Beschleuniger 308 auch drei separate PCIe-Schnittstellen bereit, und zwar PCIe 0, PCIe 1 und PCIe 2. Diese drei separaten PCIe-Schnittstellen können bereitgestellt werden, sodass wesentlich höhere Bandbreite verfügbar werden könnte als es bei einer einzelnen UPI-Verbindung oder einer einzelnen PCIe-Verbindung der Fall wäre. Somit stellt die Kombination von einer UPI-Verbindung und drei PCIe-Verbindungen, die lediglich als veranschaulichendes und nicht einschränkendes Beispiel bereitgestellt ist, in vorteilhafter Weise Cache-Kohärenz und niedrige Latenz über die UPI-Verbindung und extrem hohe Bandbreite über die drei PCIe-Verbindungen bereit.
  • Wie weiter oben dargestellt, müsste auf dem Prozessor 304 ausgeführte Software bei traditionellen Adressiermodi jedoch den Beschleuniger 308 als vier separate Einrichtungen adressieren, um die Vorteile der verschiedenen Verbindungen umzusetzen. Dies verkompliziert signifikant den Entwurf und die Umsetzung von Software auf dem Prozessor 304.
  • Ausführungsformen von E/A-Virtualisierungstechnologie bilden jede Einrichtung auf eine eindeutige Adressdomäne ab, in dem pro Einrichtung eine Seitentabelle erzeugt wird. Beispielsweise verwendet der Ansatz der Seitentabelle in die {Anforderer-ID, physikalische Gastadresse], um die physikalische Host-Adresse zu ermitteln. Beispielsweise ist die RID an einer PCIe-Verbindung {Bus, Einrichtung, Funktion].
  • Einige vorhandene CPUs können annehmen, dass eine Einrichtung an jeder Verbindung eine eindeutige RID aufweist. Wenn eine Anforderung mit der gleichen GPA zwei unterschiedliche Verbindungen durchläuft, führen Sie daher einen Seitenaufruf mit der gleichen GPA, aber mit einer unterschiedlichen RID durch. Dies ruft zwei unterschiedliche Seitentabellen auf, die zu unterschiedlichen Hostadressen führen. Als Teil der sicheren Entwurfsprinzipien der Virtualisierung lassen es bestimmte vorhandene VMMs nicht zu, dass zwei unterschiedliche RIDs die gleichen Seitentabellen teilen oder identische Kopien der beiden Seitentabellen aufweisen.
  • Während das System 300 aus 3 daher erhöhte Bandbreite über die mehreren bereitgestellten Verbindungen umsetzt, bildet die CPU-E/A-Virtualisierungstechnologie eine Einrichtung hinter jeder Verbindung als eine separate Einrichtung mit einer unabhängigen Adressdomäne ab. In diesem Fall weist die Einrichtung schließlich vier Adressdomänen auf. Dies kann es schwierig machen, die Bandbreite über die drei PCIe-Verbindungen zu aggregieren, zusätzlich zu der zusätzlichen Komplexität, die durch die UPI-Verbindung aufkommt.
  • Dieser Typ der Konfiguration liegt üblicherweise bei vorhandenen Systemen vor, wie z. B. SKX+FPGA MCP.
  • Wie weiter oben erörtert, können diese Typen von Umsetzungen die Lehren der vorliegenden Spezifikation nutzen durch Bereitstellen einer einzelnen Adressdomäne (oder optional einer einzelnen Adressdomäne pro Verbindungstyp), sodass die Softwarekomplexität stark reduziert ist und die Verwendung der verfügbaren Bandbreite optimiert werden kann.
  • Man beachte, dass bei bestimmten Ausführungsformen der vorliegenden Spezifikation die in dieser Figur dargestellte einzelne UPI-Verbindung als eine von den drei bereitgestellten PCIe-Verbindungen getrennte Adressdomäne behandelt werden kann. Dies kann Sicherheit Auswirkungen aufweisen, da UPI eine kohärente Verbindung ist, und der Beschleuniger 308 kann als Teil der Sicherheitsdomäne oder des Root-Komplexes des Prozessors 304 behandelt werden, solange die Kommunikation über eine UPI-Verbindung erfolgt. Andererseits ist PCIe keine kohärente Verbindung, und somit kann Kommunikation über die PCIe-Verbindungen nicht als Teil der Root-Domäne behandelt werden. Bei einigen Ausführungsformen kann der Beschleuniger 308 daher als zwei separate Einrichtungen erscheinen, und zwar eine erste über die UPI-Verbindung angeschlossene Einrichtung, die als Teil der sicheren Domäne des Root-Komplexes behandelt wird, und eine zweite Einrichtung, angeschlossen über eine einzelne logische PCIe-Verbindung (mit drei aggregierten physischen Verbindungen), die nicht als Teil der sicheren Domäne des Prozessors 304 behandelt wird.
  • Bei anderen Ausführungsformen können alle vier Verbindungen als eine einzelne logische Verbindung behandelt werden, wobei die Kommunikation auf einer niedrigen Stufe verwaltet wird, um optimierte Transaktionen umzusetzen. Beispielsweise erfordern Transaktionen mit geringer Latenz keine über die UPI-Verbindung zusenden hohe Bandbreite, während Transaktionen mit großer Bandbreite über eine oder mehrere der PCIe-Verbindungen gesendet werden können. In diesem Fall kann der Beschleuniger 308 als eine einzelne logische Einrichtung erscheinen, die nicht in der sicheren Domäne des Prozessors 304 ist und die eine einzelne logische Verbindung aufweist. Fachleute auf diesem Gebiet werden erkennen, dass viele weitere Typen von Kombinationen möglich sind.
  • 4 ist ein Blockdiagramm eines zweiten Systems 400, das ebenfalls Vorteile umsetzen kann, entsprechend den Lehren der vorliegenden Spezifikation.
  • In diesem Fall ist die CPU 404 über drei unabhängige PCIe-Verbindungen mit drei Einrichtungen 408-1, 408-2 und 4083 kommunikativ gekoppelt. Dies stellt ein verteiltes Rechenmodell bereit, in dem N Einrichtungen allgemeiner ausgedrückt über N Verbindungen mit dem Prozessor 404 verbunden sind. Die Einrichtungen 408 können ebenfalls über eine oder mehrere Gerät-zu-Gerät-Verbindungen miteinander kommunizieren, die zum Zweck der dynamischen Verschiebung von Aufgaben über Einrichtungen bereitgestellt werden.
  • Vorhandene CPU-E/A-Virtualisierungsmodelle erfordern, dass jede Einrichtung in einer unterschiedlichen Adressdomäne arbeitet. Wenn jede Einrichtung in einer unterschiedlichen Adressdomäne arbeitet, ist es jedoch relativ schwierig, Aufgaben von einer Einrichtung zu einer anderen zu migrieren. Somit kann das in 4 dargestellte System 400 auch von der Fähigkeit profitieren, Einrichtungen 408-1, 408-2 und 408-3 als eine einzelne logische Einrichtung zu adressieren, die über eine einzelne logische Verbindung, umfassend Verbindungen PCIe 0, PCIE 1 und PCIE 2, mit der CPU 404 verbunden ist.
  • Das Adressieren einer einzelnen Einrichtung mit einer Mehrzahl von Verbindungen oder einer Mehrzahl von Einrichtungen, die jeweils eine oder mehrere Verbindungen aufweisen, als eine einzelne logische Einrichtung, aufweisend eine einzelne logische Verbindung, kann über ein Adressübersetzungsmodul (ATM) realisiert werden, dass an der Einrichtung selbst bereitgestellt ist.
  • Die 5a, 5b und 7 weiter unten geben drei unterschiedliche Ausführungsformen eines Adressübersetzungsmoduls wieder, das entsprechend der vorliegenden Spezifikation bereitgestellt sein kann. Man beachte, dass das ATM aus 5 und der Adressübersetzungs-Cache aus 7 als nicht einschränkende Beispiele von ATMs bereitgestellt sind.
  • Ein ATM entsprechend der Beschreibung in dieser Spezifikation kann Hardware, Mikrocode-Anweisungen, Firmware, Software, einen Coprozessor, einen Block geistigen Eigentums oder eine andere Hardware-Plattform oder einen Teil einer Hardware-Plattform, ausgelegt zum Bereitstellen der Operationen des ATM, aufweisen. Bei einigen Ausführungsformen kann ein ATM ein oder mehrere materielle, nicht vorübergehende rechnerlesbare Medien aufweisen, die darauf gespeicherte Anweisungen aufweisen, um einen Prozessor anzuweisen, das ATM bereitzustellen, oder die darauf gespeicherte Anweisungen aufweisen, um ein ATM zu liefern (z. B. „Register Transfer Language“-(RTL)-Anweisungen oder Richtlinien oder Anweisungen oder Richtlinien einer anderen Hardware-Beschreibungssprache, um die Logik eines ATM in ein FPGA, einen ASIC, einen IP-Block oder andere Hardware oder ein Modul zu liefern), sowie Anweisungen, die auf einem programmierbaren Prozessor ausgeführt werden könnten.
  • 5a stellt eine Ausführungsform dar, wobei das ATM als eine ATU im Beschleuniger 508 bereitgestellt ist, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
  • Entsprechend der Darstellung in 5a kann die CPU 504 ihre eigene Adressübersetzungseinheit 512 aufweisen, die drei separate PCIe-Verbindungen zum Beschleuniger 508 bereitstellt. Diese Verbindungen können RIDs entsprechend gekennzeichnet werden, zum Beispiel RID 0 für PCIe 0, RID 1 für PCIe 1 und RID 2 für PCIe 2.
  • Die CPU 504 sowie die anderen hier dargestellten CPUs und Prozessoren (zum Beispiel in 5b und 7) sind lediglich als nicht einschränkendes Beispiel bereitgestellt. Bei anderen Ausführungsformen kann eine beliebige geeignete Host-Einrichtung für die dargestellten CPUs eingesetzt werden.
  • Bei bestehenden Systemen kann jede RID mit einer separaten logischen Einrichtung assoziiert sein, auch wenn die drei Verbindungen zum selben physischen Beschleuniger 508 bereitgestellt werden.
  • Um es der CPU 504 zu ermöglichen, den Beschleuniger 508 als eine einzelne logische Einrichtung mit einer einzelnen logischen PCIe-Verbindung zu adressieren, kann die ATU 512 an der CPU 504 deaktiviert werden, und eine ATU 516 kann am Beschleuniger 508 bereitgestellt werden. Die RID0 kann für alle Adressübersetzungen verwendet werden, während die tatsächlichen Transaktionen zu einem der physikalischen Busse über die RIDx abgebildet werden (wobei „x“ die Kennung des physikalischen Busses zum Handhaben der Transaktion ist).
  • Entsprechend der Verwendung in dieser Spezifikation kann eine ATU eine Adressübersetzungs- und Sicherheitsüberprüfungseinheit sein, die bei einigen Ausführungsformen mit der Spezifikation der Intel®-Virtualisierungstechnologie für gerichtete E/A (VT-d) kompatibel sein kann. Ein Zweck der ATU ist das Bereitstellen von Adressraumisolierung und das Erzwingen von Genehmigungsprüfungen für E/A-Einrichtungen. Dies kann eine Zustandsmaschine einbeziehen, die OS-verwaltete Seitentabellen und Caches durchläuft, um zwischengeschaltete Übersetzungen zu speichern. Die ATU 516 kann HPA-zu-GPA- und/oder „HPA zu virtueller Gastadresse“-(GVA)-Abbildung bereitstellen. Eine physikalische Gastadresse kann eine physische Adresse aus der Sichtweise des Gast-Betriebssystems oder einer virtuellen Maschine sein. Man beachte, dass eine GPA möglicherweise nicht eine reelle physikalische Adresse ist, wie sie durch die Maschine und die tatsächlichen DRAMs erkannt wird. Die physikalische Host-Adresse ist eine physische Adresse aus der Sichtweise des VMM oder der Maschine. Dies kann die für den Zugriff auf die physischen DRAMs verwendete Adresse sein.
  • Durch Platzieren der ATU 516 am Beschleuniger 508 und das Deaktivieren der ATU 512 an der CPU 504 kann die logische Sichtweise der Beschleunigereinrichtung von der physischen Topologie getrennt werden. Die mehreren Verbindungen zum Beschleuniger 508 können logisch als eine einzelne logische Verbindung aus der Sichtweise von auf der CPU 504 ausgeführter Software behandelt werden. Auf der CPU 504 ausgeführte Software sieht eine einzelne Einrichtung an der PCIe 0 und reserviert einen Puffer über malloc an HPA-X nur für PCIe 0. Der Beschleuniger 508 kann eine GPA-X' über eine beliebige der PCIe-Verbindungen senden, um die gleiche HPA-X zu erreichen.
  • Bei dieser Ausführungsform kann jede Verbindung (z. B. RID0, RID1, RID2) ihre eigenen Speicherseiten durchlaufen.
  • 5b stellt eine ähnliche Ausführungsform dar. Bei dem Beispiel aus 5b arbeitet die CPU 554 jedoch mit drei Beschleunigereinrichtungen 558-1, 558-2, 558-3. Während es möglich ist, dass alle Adressübersetzungen an einer einzelnen ATU durchgeführt werden könnten (zum Beispiel positioniert an der Einrichtung 1 558-1), macht es die Verfügbarkeit einer Mehrzahl von Einrichtungen möglich, die Adressübersetzung über mehrere Einrichtungen mittels einer verteilten ATU (DATU) zu verteilen. Beispielsweise weist wie hier dargestellt die Einrichtung 1 558-1 die DATU 560-1 auf, die Einrichtung 2 558-2 weist die DATU 560-2 auf, und die Einrichtung 3 558-3 weist die DATU 560-3 auf. Lastausgleichsadressübersetzung zwischen den DATUs kann über ein beliebiges geeignetes Verfahren erfolgen, aufweisend ein Verfahren, bei dem jede Einrichtung 558 die Adressübersetzung für ihre eigenen Transaktionen handhabt und ihren eigenen Seitendurchlauf durchführen kann. Man beachte, dass der CPU 554 die verteilte Natur der DATU 560 nicht bekannt sein muss. Vielmehr erscheinen die drei Einrichtungen der CPU als eine einzelne logische Einrichtung mit einer einzelnen logischen ATU. Man beachte, dass in 7 statt eines ATC ein Adressübersetzungs-Cache (ATC) verwendet wird. Die
  • 6 ist ein Ablaufdiagramm eines Verfahrens 600 zum Bereitstellen von Adressübersetzung über eine ATU 516 eines Beschleunigers 508 oder in einer beliebigen anderen geeigneten Systemkonfiguration entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Beim Verfahren 600 deaktiviert das System bei Block 604 die ATU, wie die ATU 512 von CPU 504, implementiert für die Mehrzahl von Verbindungen zu der Beschleunigereinrichtung. Dies deaktiviert im Wesentlichen die von der CPU für diese Verbindungen bereitgestellten Virtualisierungsfähigkeiten, wie die in 5a dargestellten drei PCIe-Verbindungen. Man beachte jedoch, dass die Virtualisierungstechnologie eine systemweite Fähigkeit ist, die bedeutet, dass es in einigen Fällen nicht möglich ist, ein System zu haben, in dem einige Einrichtungen virtualisiert sind und andere Einrichtungen nicht. Dies wird lediglich als nicht einschränkendes Beispiel bereitgestellt.
  • In Block 608 liefert und/oder aktiviert das System eine ATU an der Beschleunigereinrichtung, wie die ATU 516 des Beschleunigers 508. Diese ATU deckt Eine der Verbindungen ab, wie zum Beispiel die Verbindung PCIe 0. Es könnten jedoch beliebige der Verbindungen ausgewählt werden, wie zum Beispiel PCIe 1 oder PCIe 2.
  • Man beachte, dass in einigen Fällen das System annehmen kann, dass die ATU in der CPU integriert ist. Das Bewegen der ATU zur Beschleunigereinrichtung wie der Einrichtung 508 aus 5 kann einige Änderungen am Aufzählungsablauf der Einrichtung erfordern, wobei der Zugriff auf zusätzliche im Speicher abgebildete E/A-Basisadressregister (MMIO BARs) für die VT-d-Einheit aktiviert wird. Diese Erinnerungen können bei einigen Plattformen von der CPU-Architektur abhängen, und der PCIe-Endpunkt muss möglicherweise als ein im Root-Komplex integrierter Endpunkt (RCiEP) deklariert werden. Es wird vorausgeschickt, dass die Vornahme derartiger Änderungen an der CPU-Architektur zu den Fähigkeiten von Fachleuten auf diesem Gebiet zählt.
  • In Block 612 exponiert das System die Einrichtungs-ATU gegenüber dem VMM oder OS an einer einzelnen Leitung wie PCIe 0.
  • Bei Block 616 wird eine Anforderung 620 von der Einrichtung wie der Beschleunigereinrichtung 508 empfangen. Bei einigen Ausführungsformen werden alle Anforderungen von der Beschleunigereinrichtung an der ATU der Beschleunigereinrichtung unter Verwendung der RID von Verbindung 0 untersucht, um die physische Host-Adresse zu erhalten. Derartige aggregierte Abfragen sind an der Einrichtung 508 aus 5 dargestellt.
  • In Block 624 erhält die ATU am Beschleuniger die physikalische Host-Adresse.
  • Bei Block 628 wird die Anforderung nach der Adressübersetzung über die Verbindung mit der physikalischen Host-Adresse und einer RID pro Verbindung gesendet. Beispielsweise könnte eine Anforderung über PCIe 0 {RID0,HPA} aufweisen. Eine Anforderung über PCIe 1 könnte {RID1,HPA} aufweisen. Eine Anforderung über PCIe 2 könnte {RID2,HPA} aufweisen.
  • In Block 632 können bei einigen Ausführungsformen auf der CPU-Seite Fehlererkennung oder Routing-Annahmen bereitgestellt und in die RID eingesetzt werden. Dies ersetzt die einzelne RID durch verbindungsspezifische eindeutige RIDs, bevor die Anforderung zur CPU ausgegeben wird. Dies ist akzeptabel, da Verbindungsvirtualisierungsfähigkeiten auf der CPU-Seite deaktiviert werden können.
  • 7 ist ein Blockdiagramm mit der Darstellung der Verwendung eines Adressübersetzungscaches als das ATM entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation.
  • Entsprechend der Verwendung in dieser Spezifikation ist ein Adressübersetzungscache (ATC) ein Übersetzungscache, der durch die Adressübersetzungs- und Sicherheitsprüfungseinheit (ATU) übersetzte Adressen in Cache ablegen kann. Der ATC ist möglicherweise nicht in der Lage, Seitendurchläufe durchzufuhren. Wenn eine Anforderung den ATC verfehlt, wird der ATC mit der ATU koordiniert, um einen Seitendurchlauf durchzuführen. Dies kann beispielsweise Adressübersetzungsdienste entsprechend der Definition in der PCIe-Spezifikation umfassen.
  • Bei der Ausführungsform von 7 ist die CPU 704 mit der ATU 712 bereitgestellt, während der Beschleuniger 708 mit dem ATC 716 bereitgestellt ist. Man beachte, dass anders als bei der ATU 512 der CPU 504 aus 5a die ATU 712 der CPU 704 nicht deaktiviert ist. Vielmehr kann die ATU 712 Adressübersetzung Dienste nur an einer einzelnen Verbindung wie PCIe 0 aktivieren. Somit erfolgt wie in 5a die GPA-zu-HPA-Übersetzung stets über PCIe 0 (mit RID0). Der Beschleuniger 708 stellt anschließend die HPA zur CPU 704 über PCIe 0 mit der korrekten RIDx bereit, und die eigentliche Transaktion wird an PCIe x durchgeführt.
  • Wie zuvor aggregiert der ATC 716 Anforderungen in {RID0, HPA}. Die tatsächliche Kommunikation kann jedoch mit einer spezifischen RID durchgeführt werden. Beispielsweise, für PCIe 0, {RID0, HPA}. Für PCIe 1, {RID1, HPA}. Für PCIe 2, {RID2, HPA}. Bei dieser Ausführungsform kann nur die mit Adressübersetzung assoziierte Verbindung (z. B. RID0) die Adressseite durchlaufen.
  • In den vorstehenden FIGUREN sind die Adressübersetzungsmodule (ATMs), das heißt ATU 516 (5a), DATU 560 (5b) und ATC 716 ( 7), Als ein Teil des Beschleunigers 508 dargestellt. Andere Ausführungsformen weisen jedoch ein ATM auf, dass nicht in die Beschleunigereinrichtung integriert ist. Bei diesen Ausführungsformen kann das ATM separate Elemente wie ASIC, FPGA, IP-Block, Schaltkreis, programmierbare Logik, ROM oder andere Einrichtungen umfassen, die die Adressübersetzungsdienste zwischen der Host-Einrichtung und der Beschleunigereinrichtung bereitstellen.
  • Bei einigen Ausführungsformen entsprechend der Darstellung in einer der vorstehenden Figuren kann ein ATM auch verschachtelte Übersetzung GPA-zu-GVA (virtuelle Gastadresse) bereitstellen.
  • 8 ist ein Ablaufdiagramm eines Verfahrens 800, das beispielsweise durch ein System wie das in 7 offenbarte durchgeführt werden kann, wobei das Adressübersetzungsmodul entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation in einem ATC an der Beschleunigereinrichtung ausgeführt ist.
  • Bei Block 801 kann die CPU ATU Adressübersetzungsdienste implementieren, um einen ATC an der Beschleunigereinrichtung zu unterstützen.
  • In Block 808 kann das System die CPU ATU überall mit Ausnahme einer Verbindung deaktivieren. Beispielsweise kann das ATU bei der Ausführungsform von 7 überall mit Ausnahme der Verbindung PCIe 0 deaktiviert werden. PCIe 0 ist hier als veranschaulichendes Beispiel gewählt, es versteht sich jedoch, dass die Auswahl einer geeigneten Verbindung zur Aktivierung zum üblichen Kenntnisstand auf diesem Gebiet zählt.
  • In Block 820 implementiert das System einen ATC an der Beschleunigereinrichtung, der zur Übersetzung von Anforderungen über alle drei Verbindungen eingesetzt werden kann. Jeder Fehltreffer des ATC kann über eine Adressübersetzungsdienstanforderung beispielsweise an PCIe 0 behandelt werden.
  • In Block 824 wird eine Anforderung 816 von der Einrichtung empfangen. Alle Anforderungen von der Einrichtung werden am ATC nachgeschlagen unter Verwendung der RID von Verbindung 0, um die physische Host-Adresse zu erhalten.
  • Bei Block 828 kann die Anforderung nach der Adressübersetzung über die Verbindung mit der HPA und einer RID pro Verbindung gesendet werden. Beispielsweise verwenden Anforderungen über PCIe 0 {RID0, HPA}. Anforderungen über PCIe 1 verwenden {RID1, HPA}. Anforderungen über PCIe 2 verwenden {RID2, HPA}.
  • Auf der CPU-Seite der Verbindung können um die RID herum eingerichtete Fehlererkennung oder Routing-Annahmen vorliegen. Dies ersetzt die einzelne RID durch verbindungsspezifische eindeutige RIDs, bevor die Anforderung zur CPU ausgegeben wird. Dies ist zulässig, da die Virtualisierungsfähigkeiten an den Verbindungen 1 oder 2 auf der CPU-Seite deaktiviert werden können.
  • Man beachte, dass bei bestimmten Ausführungsformen die gleichen Konzepte zum Implementieren von geräteseitigen ATU oder ATC erweitert werden können auf geteilte virtuelle Speicherabläufe wie die, die in einem verteilten System entsprechend der Darstellung in 4 verwendet werden können.
  • 9 ist ein Blockdiagramm von Komponenten einer Rechenplattform 902A entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Man beachte, dass in dieser Figur offenbarte Ausführungsformen der Recheneinrichtung 902A mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Bei der dargestellten Ausführungsform sind die Plattformen 902A, 902B und 902C zusammen mit einer Rechenzentrumsmanagement-Plattform 906 und der Datenanalyse-Engine 904 über das Netzwerk 908 verbunden. Bei anderen Ausführungsformen kann ein Rechner System eine beliebige geeignete Anzahl von Plattformen (d. h. eine oder mehrere) aufweisen. Bei einigen Ausführungsformen (z. B., wenn ein Rechensystem nur eine einzelne Plattform aufweist) kann die gesamte System Management Plattform 906 oder ein Teil davon auf einer Plattform 902 umfasst sein. Eine Plattform 902 kann Plattformlogik 910 mit einer oder mehreren zentralen Verarbeitungseinheiten (CPUs) 912, Speichern 914 (die eine beliebige Anzahl unterschiedlicher Module aufweisen können), Chipsätze 916, Kommunikationsschnittstellen 918 und beliebige weitere geeignete Hardware und/oder Software zum Ausführen eines Hypervisors 920 oder ein anderes zum Ausführen von Arbeitsvorgängen, die mit auf der Plattform 902 ausgeführten Anwendungen assoziiert sind, fähiges Betriebssystem aufweisen. Bei einigen Ausführungsformen kann eine Plattform 902 als Host-Plattform für ein oder mehrere Gastsysteme 922 fungieren, die diese Anwendungen aufrufen. Die Plattform 902A kann eine beliebige geeignete Rechenumgebung darstellen, wie eine Hochleistungs-Rechenumgebung, ein Rechenzentrum, eine Infrastruktur eines Kommunikationsdiensteanbieters (z. B. ein oder mehrere Teile eines „Evolved Packet Core“), eine speicherinterne Rechenumgebung, ein Rechensystem eines Fahrzeugs (z. B. eines Automobils oder Flugzeugs), eine Internet-der-Dinge-Umgebung, ein industrielles Steuerungssystem, eine andere Rechenumgebung oder eine Kombination daraus.
  • Bei verschiedenen Ausführungsformen der vorliegenden Offenbarung können kumulierte Belastung und/oder kumulierte Belastungsraten einer Mehrzahl von Hardwareressourcen (z. B. Cores und Uncores) überwacht werden, und Entitäten (z. B. Systemmanagementplattform 906, Hypervisor 920 oder anderes Betriebssystem) der Rechnerplattform 902A Hardwareressourcen der Plattformlogik 910 zuweisen, um Arbeitsvorgänge entsprechend der Belastungsinformation durchzuführen. Bei einigen Ausführungsformen können selbst Diagnosefähigkeiten mit der Belastungsüberwachung kombiniert sein, um den Zustand der Hardwareressourcen genauer zu bestimmen. Jede Plattform 902 kann Plattformlogik 910 aufweisen. Die Plattformlogik 910 umfasst neben weiterer Logik, die die Funktionalität der Plattform 902 aktiviert, eine oder mehrere CPUs 912, Speicher 914, einen oder mehrere Chipsätze 916 und Kommunikationsschnittstellen 928. Obwohl drei Plattformen dargestellt sind, kann die Rechnerplattform 902A mit einer beliebigen geeigneten Anzahl von Plattformen verbunden werden. Bei verschiedenen Ausführungsformen kann eine Plattform 902 auf einer Platine vorliegen, die in einem Chassis, einem Rack oder einer anderen geeigneten Struktur installiert ist, die mehrere durch das Netzwerk 908 (das z. B. ein Rack oder einen Backplane-Switch umfassen kann) miteinander gekoppelte Plattformen umfasst.
  • Die CPUS 912 können jeweils eine beliebige geeignete Anzahl von Prozessorkernen und unterstützender Logik (z. B. Uncores) umfassen. Die Kerne können untereinander, mit Speicher 914, mit mindestens einem Chipsatz 916 und/oder mit einer Kommunikationsschnittstelle 918 durch eine oder mehrere auf der CPU 912 und/oder dem Chipsatz 916 vorliegende Steuerungen gekoppelt sein. Bei besonderen Ausführungsformen ist eine CPU 912 innerhalb eines Anschlusses ausgeführt, der permanent oder entfernbar mit der Plattform 902A gekoppelt ist. Obwohl vier CPUs gezeigt sind, kann eine Plattform 902 eine beliebige geeignete Anzahl von CPUs aufweisen.
  • Der Speicher 914 kann eine beliebige Form flüchtigen oder nichtflüchtigen Speichers umfassen, ohne diesbezügliche Einschränkung aufweisend magnetische Medien (z. B. ein oder mehrere Bandlaufwerke), optische Medien, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, entfernbare Medien oder beliebige andere geeignete lokale oder entfernte Speicherkomponenten oder Komponenten. Der Speicher 914 kann zum kurz-, mittel- und/oder langfristigen Speichern durch die Plattform 902A verwendet werden. Der Speicher 914 kann beliebige geeignete Daten oder Informationen speichern, die durch die Plattformlogik 910 verwendet werden, aufweisend in ein rechnerlesbares Medium eingebettete Software und/oder in Hardware integrierte oder sonst wie gespeicherte codierte Logik (z. B. Firmware). Der Speicher 914 kann Daten speichern, die durch Kerne der CPUs 912 verwendet werden. Bei einigen Ausführungsformen kann der Speicher 914 auch Speicherraum umfassen für Anweisungen, die durch die Kerne der CPUs 912 oder andere Verarbeitungselemente (z. B. an Chipsätzen 916 vorliegende Logik) ausgeführt werden, um Funktionalität in Zusammenhang mit der Handhabbarkeits-Engine 926 oder anderen Komponenten der Plattformlogik 910 bereitzustellen. Eine Plattform 902 kann auch einen oder mehrere Chipsätze 916 aufweisen, umfassend beliebige geeignete Logik zum Unterstützen des Betriebs der CPUs 912. Bei verschiedenen Ausführungsformen kann der Chipsatz 916 auf dem gleichen Die oder Paket wie eine CPU 912 oder auf einem oder mehreren unterschiedlichen Dies oder Paketen vorliegen. Jeder Chipsatz kann eine beliebige geeignete Anzahl von CPUs 912 unterstützen. Ein Chipsatz 916 kann auch eine oder mehrere Steuerungen aufweisen, um andere Komponenten der Plattformlogik 910 (z. B. Kommunikationsschnittstelle 918 oder Speicher 914) mit einer oder mehreren CPUs zu koppeln. Bei der dargestellten Ausführungsform weist jeder Chipsatz 916 auch eine Handhabbarkeits-Engine 926 auf. Die Handhabbarkeits-Engine 926 kann beliebige geeignete Logik zum Unterstützen des Betriebs des Chipsatzes 916 aufweisen. Bei einer besonderen Ausführungsform ist eine Handhabbarkeits-Engine 926 (die auch als eine Innovations-Engine bezeichnet werden kann) fähig, Echtzeit-Telemetriedaten vom Chipsatz 916, der/den CPU(s) 912 und/oder durch den Chipsatz 916 verwaltetem Speicher 914, anderen Komponenten der Plattformlogik 910 und/oder verschiedenen Verbindungen zwischen Komponenten der Plattformlogik 910 zu erfassen. Bei verschiedenen Ausführungsformen weisen die erfassten Telemetriedaten die hier beschriebene Belastungsinformation auf.
  • Bei verschiedenen Ausführungsformen arbeitet eine Handhabbarkeits-Engine 926 als ein asynchroner Out-of-Band-Rechenagent, der fähig ist zur Verbindung mit den verschiedenen Elementen der Plattformlogik 910, um Telemetriedaten ohne oder nur mit minimaler Unterbrechung laufender Prozesse auf den CPUs 912 zu erfassen. Beispielsweise kann die Handhabbarkeits-Engine 926 ein dediziertes Verarbeitungselement umfassen (z. B. einen Prozessor, eine Steuerung oder andere Logik) auf dem Chipsatz 916, dass die Funktionalität der Handhabbarkeit-Engine 926 bereitstellt (z. B. Durch Ausführung von Softwareanweisungen), sodass Verarbeitungszyklen der CPUs 912 für durch die Plattformlogik 910 ausgeführte Operationen in Zusammenhang mit den Arbeitsvorgängen erhalten bleiben. Zudem kann die dedizierte Logik für die Handhabbarkeits-Engine 926 asynchron in Bezug auf die CPUs 912 arbeiten, und sie kann mindestens einige der Telemetriedaten erfassen, ohne die Last an den CPUs zu erhöhen.
  • Eine Handhabbarkeits-Engine 926 kann Telemetriedaten, die sie erfasst, verarbeiten (spezifische Beispiele der Verarbeitung von Belastungsinformation sind hier bereitgestellt). Bei verschiedenen Ausführungsformen meldet die Handhabbarkeits-Engine 926 die Daten, die sie erfasst, und/oder die Resultate ihrer Verarbeitung zu anderen Elementen im Rechnersystem, wie einem oder mehreren Hypervisoren 920 oder anderen Betriebssystemen und/oder der Systemmanagementsoftware (die auf beliebiger geeigneter Logik wie der Systemmanagementplattform 906 ausgeführt werden kann). Bei besonderen Ausführungsformen kann ein kritisches Ereignis wie ein Kern, der eine übermäßige Menge an Belastung kumuliert hat, vor dem normalen Intervall für die Meldung von Telemetriedaten gemeldet werden (z. B. kann unmittelbar bei Erkennung eine Benachrichtigung gesendet werden).
  • Zusätzlich kann die Handhabbarkeits-Engine 926 programmierbaren Code aufweisen, einrichtbar zum Vorgeben, welche CPU(s) 912 ein besonderer Chipsatz 916 verwaltet und/oder welche Telemetriedaten erfasst werden.
  • Die Chipsätze 916 weisen ferner jeweils eine Kommunikationsschnittstelle 928 auf. Die Kommunikationsschnittstelle 928 kann verwendet werden zur Kommunikation von Signalisierung und/oder Daten zwischen dem Chipsatz 916 und einer oder mehreren E/A-Einrichtungen, einem oder mehreren Netzwerken 908 und/oder einer oder mehreren mit dem Netzwerk 908 gekoppelten Einrichtungen (z. B. Systemmanagementplattform 906). Beispielsweise kann die Kommunikationsschnittstelle 928 verwendet werden zum Senden und Empfangen von Netzwerkverkehr wie Datenpaketen. Bei einer besonderen Ausführungsform umfasst eine Kommunikationsschnittstelle 928 eine oder mehrere physische Netzwerkschnittstellensteuerungen (NICs), auch bekannt als Netzwerkschnittstellenkarten oder Netzwerkadapter. Eine NIC kann elektronische Schaltungen aufweisen zum Kommunizieren unter Verwendung beliebiger geeigneter physischer Schichten und Datenverbindungsschicht-Standards wie Ethernet (z. B. definiert durch einen IEEE 802.3 Standard), Fiber Channel, InfiniBand, Wi-Fi oder einen anderen geeigneten Standard. Eine NIC kann einen oder mehrere physische Anschlüsse aufweisen, die mit einem Kabel (z. B. einem Ethernet-Kabel) gekoppelt sein können. Eine NIC kann Kommunikation zwischen beliebigen geeigneten Elementen des Chipsatzes 916 aktivieren (z. B. Handhabbarkeits-Engine 926 oder Switch 930) und einer anderen mit dem Netzwerk 908 gekoppelten Einrichtung. Bei verschiedenen Ausführungsformen kann eine NIC mit dem Chipsatz integriert sein (d. h. sie kann auf der gleichen integrierten Schaltung oder Platine vorliegen wie der Rest der Chipsatzlogik), oder sie kann auf einer unterschiedlichen integrierten Schaltung oder Platine vorliegen, die mit dem Chipsatz elektromechanisch gekoppelt ist.
  • Bei besonderen Ausführungsformen kann die Kommunikationsschnittstelle 928 Datenkommunikation ermöglichen (z. B. zwischen der Handhabbarkeits-Engine 926 und der Rechenzentrumsmanagement-Plattform 906) in Zusammenhang mit Management- und Überwachungsfunktionen, die durch die Handhabbarkeits-Engine 926 durchgeführt werden. Bei verschiedenen Ausführungsformen kann die Handhabbarkeits-Engine 926 Elemente der Kommunikationsschnittstellen 928 verwenden (z. B. eine oder mehrere NICs), um die Telemetriedaten zu melden (z. B. zur Systemmanagementplattform 906), um die Verwendung von NICs der Kommunikationsschnittstelle 918 für Operationen in Zusammenhang mit durch die Plattformlogik 910 durchgeführte Arbeitsvorgänge zu reservieren.
  • Switches 930 können mit verschiedenen Anschlüssen (z. B. durch NICs bereitgestellt) der Kommunikationsschnittstelle 928 gekoppelt sein, und sie können Daten zwischen diesen Anschlüssen und verschiedenen Komponenten des Chipsatzes 916 umschalten (z. B. einer oder mehreren mit CPUs 912 gekoppelten „Peripheral Component Interconnect Express“-(PCIe)-Bahnen). Switches 930 können ein physischer oder virtueller (d. h. Software-)Switch sein.
  • Die Plattformlogik 910 kann eine zusätzliche Kommunikationsschnittstelle 918 aufweisen. Ähnlich den Kommunikationsschnittstellen 928 können die Kommunikationsschnittstellen 918 verwendet werden zur Kommunikation von Signalisierung und/oder Daten zwischen der Plattformlogik 910 und einem oder mehreren Netzwerken 908 und einer oder mehreren mit dem Netzwerk 908 gekoppelten Einrichtungen. Beispielsweise kann die Kommunikationsschnittstelle 918 verwendet werden zum Senden und Empfangen von Netzwerkverkehr wie Datenpaketen. Bei einer besonderen Ausführungsform umfassen die Kommunikationsschnittstellen 918 eine oder mehrere physische NICs. Diese NICs Können Kommunikation zwischen beliebigen geeigneten Elementen der Plattformlogik 910 (z. B. CPUs 912 oder Speicher 914) und einer anderen mit dem Netzwerk 908 gekoppelten Einrichtung (z. B. Elementen anderer Plattformen oder entfernten Recheneinrichtungen, die durch ein oder mehrere Netzwerke mit dem Netzwerk 908 gekoppelt sind) aktivieren.
  • Die Plattformlogik 910 kann beliebige geeignete Typen von Arbeitsvorgängen empfangen und durchführen. Ein Arbeitsvorgang kann eine beliebige Anforderung zur Verwendung von einer oder mehreren Ressourcen der Plattformlogik 910 wie z. B. einem oder mehreren Kernen oder assoziierter Logik aufweisen. Beispielsweise kann ein Arbeitsvorgang eine Anforderung zum Instanziieren einer Softwarekomponente wie einem E/A-Gerätetreiber 924 oder Gastsystem 922 umfassen; eine Anforderung zum Verarbeiten eines von einer virtuellen Maschine 932 empfangenen Netzwerkpakets oder einer zur Plattform 902A externen Einrichtung (wie einem mit dem Netzwerk 908 gekoppelten Netzwerkknoten); eine Anforderung zum Ausführen eines Prozesses oder Threads in Zusammenhang mit einem Gastsystem 922, einer auf der Plattform 902A ausgeführten Anwendung, einem Hypervisor 920 oder einem anderen auf der Plattform 902A ausgeführten Betriebssystem; oder einer anderen geeigneten Verarbeitungsanforderung.
  • Eine virtuelle Maschine 932 kann ein Rechner System mit seiner eigenen dedizierten Hardware emulieren. Eine virtuelle Maschine 932 kann über dem Hypervisor 920 ein Gast-Betriebssystem ausführen. Die Komponenten der Plattformlogik 910 (z. B. CPUs 912, Speicher 914, Chipsatz 916 und Kommunikationsschnittstellen 918) können virtualisiert werden, sodass es für das Gast-Betriebssystem den Anschein hat, dass die virtuelle Maschine 932 ihre eigenen dedizierten Komponenten aufweist.
  • Eine virtuelle Maschine 932 kann eine virtualisierte NIC (vNIC) Aufweisen, die durch die virtuelle Maschine als ihre Netzwerkschnittstelle verwendet wird. Eine vNIC kann einer Medienzugriffssteuerungs-(MAC)-Adresse oder anderen Kennung zugeordnet werden, sodass es möglich wird, mehrere virtuelle Maschinen 932 in einem Netzwerk individuell zu adressieren.
  • Die VNF 934 kann eine Softwareimplementierung eines funktionellen Bausteins mit definierten Schnittstellen und Verhalten umfassen, das in einer virtualisierten Infrastruktur umgesetzt werden kann. Bei besonderen Ausführungsformen kann eine VNF 934 eine oder mehrere virtuelle Maschinen 932 aufweisen, die gemeinsam spezifische Funktionsumfänge bereitstellen (z. B. Weitverkehrsnetz-(WAN)-Optimierung, Terminierung im virtuellen privaten Netzwerk (VPN), Firewall-Operationen, Lastausgleichsoperationen, Sicherheitsfunktionen usw.). Eine auf der Plattformlogik 910 ausgeführte VNF 934 kann die gleiche Funktionalität bereitstellen wie traditionelle Netzwerkkomponenten, die durch dedizierte Hardware implementiert werden. Beispielsweise kann eine VNF 934 Komponenten aufweisen zum Durchführen beliebiger geeigneter NFV-Arbeitsvorgänge, wie virtualisierte „Evolved Packet Core“-(vEPC)-Komponenten, Mobilitätsmanagement-Entitäten, „3rd Generation Partnership Project“-(3GPP)-Steuerungs- und Datenebenenkomponenten usw.
  • Die SFC 936 ist eine Gruppe von VNFs 934, organisiert als eine Kette zum Durchführen einer Reihe von Operationen wie Netzwerk-Paketverarbeitungsoperationen. Dienstfunktionsverkettung kann die Fähigkeit bereitstellen, eine geordnete Liste von Netzwerkdiensten bereitzustellen (z. B. Firewalls, Load Balancer), die im Netzwerk zusammengefügt sind, um eine Dienstkette zu erzeugen.
  • Ein Hypervisor 920 (auch bekannt als ein Monitor einer virtuellen Maschine) kann Logik umfassen, um Gastsysteme 922 zu erzeugen und auszuführen. Der Hypervisor 920 kann Gast-Betriebssysteme aufweisen, die durch virtuelle Maschinen mit einer virtuellen Betriebsplattform ausgeführt werden (d. h. aus Sicht der virtuellen Maschinen werden sie auf separaten physischen Knoten ausgeführt, während sie tatsächlich auf einer einzelnen Hardwareplattform konsolidiert sind), und die Ausführung der Gast-Betriebssysteme durch die Plattformlogik 910 verwalten. Die Dienste des Hypervisors 920 können durch Virtualisierung in Software oder durch hardwareunterstützte Ressourcen, die minimale Softwareintervention erfordern, oder durch beides bereitgestellt werden. Mehrere Instanzen einer Mehrzahl von Gast-Betriebssystemen können durch den Hypervisor 920 verwaltet werden. Jede Plattform 902 kann eine separate Instanziierung eines Hypervisors 920 aufweisen.
  • Der Hypervisor 920 kann ein nativer oder Bare-Metal-Hypervisor sein, der direkt auf der Plattformlogik 910 läuft, um die Plattformlogik zu steuern und die Gast-Betriebssysteme zu verwalten. Alternativ dazu kann der Hypervisor 920 ein übernommener Hypervisor sein, der auf einem Host-Betriebssystem ausgeführt wird und die Gast-Betriebssysteme vom Host-Betriebssystem abstrahiert. Der Supervisor 920 kann einen virtuellen Switch 938 aufweisen, der virtuelles Schalten und/oder Routing-Funktionen für virtuelle Maschinen der Gastsysteme 922 bereitstellen kann. Der virtuelle Switch 938 kann eine logische Schaltstruktur umfassen, die die vNICs der virtuellen Maschinen 932 miteinander koppelt und somit ein virtuelles Netzwerk erzeugt, über das virtuelle Maschinen miteinander kommunizieren können.
  • Der virtuelle Switch 938 kann ein Softwareelement umfassen, dass unter Verwendung von Komponenten der Plattformlogik 910 ausgeführt wird. Bei verschiedenen Ausführungsformen kann der Hypervisor 920 mit einer beliebigen geeigneten Entität (z. B. einer SDN-Steuerung) in Kommunikation stehen, die den Hypervisor 920 veranlasst, die Parameter des virtuellen Switches 938 in Reaktion auf veränderliche Bedingungen in der Plattform 902 neu einrichtet (z. B. Hinzufügen oder Löschen von virtuellen Maschinen 932 oder Angabe von Optimierungen, die vorgenommen werden können, um die Performanz der Plattform zu verbessern).
  • Der Hypervisor 920 kann auch Ressourcenzuordnungslogik 944 aufweisen, die Logik zum Festlegen der Zuordnung von Plattformressourcen basierend auf Telemetriedaten (die Belastungsinformation aufweisen können) aufweisen kann. Die Ressourcenzuordnungslogik 944 kann auch Logik zur Kommunikation mit verschiedenen Komponenten der Entitäten der Plattformlogik 910 der Plattform 902A aufweisen, um eine derartige Optimierung zu implementieren, wie Komponenten der Plattformlogik 910.
  • Eine beliebige geeignete Logik kann eine oder mehrere dieser Optimierungsentscheidungen treffen. Beispielsweise können die Systemmanagementplattform 906, die Ressourcenzuordnungslogik 944 des Hypervisors 920 oder ein anderes Betriebssystem oder eine andere Logik der Rechnerplattform 902A fähig sein, derartige Entscheidungen zu treffen. Bei verschiedenen Ausführungsformen kann die Systemmanagementplattform 906 Telemetriedaten über mehrere Plattformen 902 empfangen und die Platzierung von Arbeitsvorgängen darüber verwalten. Die Systemmanagementplattform 906 kann mit Hypervisoren 920 (z. B. „out of band“) Oder mit anderen Betriebssystemen der verschiedenen Plattformen 902 kommunizieren, um Platzierungen von Arbeitsvorgängen gezielt zur Systemmanagementplattform zu implementieren.
  • Die Elemente der Plattformlogik 910 können auf beliebige geeignete Weise miteinander gekoppelt werden. Beispielsweise kann ein Bus beliebige Komponenten miteinander koppeln. Ein Bus kann eine beliebige bekannte Verbindung aufweisen wie einen Multi-Drop-Bus, eine Mesh-Verbindung, eine Ringverbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (d. h. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus oder einen „Gunning Transceiver Logic“-(GTL)-Bus.
  • Elemente der Rechnerplattform 902A können untereinander auf beliebige geeignete Weise gekoppelt sein, wie zum Beispiel über ein oder mehrere Netzwerke 908. Ein Netzwerk 908 kann ein beliebiges geeignetes Netzwerk oder eine Kombination von einem oder mehreren Netzwerken sein, die unter Verwendung von einem oder mehreren geeigneten Netzwerkprotokollen arbeiten. Ein Netzwerk kann eine Reihe von Knoten, Punkten und verbundenen Kommunikationspfaden zum Empfangen und Senden von Informationspaketen darstellen, die sich über ein Kommunikationssystem ausbreiten. Beispielsweise kann ein Netzwerk eine oder mehrere Firewalls, Router, Switches, Sicherheitsanwendungen, Antivirus-Server oder andere zweckdienliche Netzwerkeinrichtungen aufweisen.
  • 10 gibt eine Ausführungsform einer aus Punkt-zu-Punkt-Verbindungen zusammengesetzten Struktur wieder, die eine Gruppe von Komponenten verbinden, entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation. Man beachte, dass in dieser Figur offenbarte Ausführungsformen der Struktur mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Das System 1000 weist einen Prozessor 1005 und Systemspeicher 1010 auf, gesteuert durch den Steuerungs-Hub 1015. Der Prozessor 1005 weist ein beliebiges Verarbeitungselement auf wie einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen sonstigen Prozessor. Der Prozessor 1005 ist über den „Front Side Bus“ (FSB) 1006 mit dem Steuerung-Hub 1015 gekoppelt. Bei einer Ausführungsform ist der FSB 1006 eine serielle Punkt-zu-Punkt-zu-Punkt-Verbindung entsprechend der Beschreibung weiter unten. Bei einer anderen Ausführungsform weist die Verbindung 1006 eine serielle, differenzielle Verbindungsarchitektur auf, die differenzielle Verbindungsstandards einhält.
  • Der Systemspeicher 1010 weist eine beliebige Speichereinrichtung auf wie Direktzugriffsspeicher (RAM), nichtflüchtigen (NV) Speicher oder sonstigen durch Einrichtungen im System 1000 zugänglichen Speicher. Der Systemspeicher 1010 ist durch die Speicherschnittstelle 1016 mit dem Steuerungs-Hub 1015 gekoppelt. Beispiele einer Speicherschnittstelle weisen eine Speicherschnittstelle mit doppelter Datenrate (DDR), eine Zweikanal-DDR-Speicherschnittstelle und eine Speicherschnittstelle mit dynamischem RAM (DRAM) auf.
  • Bei einer Ausführungsform ist der Steuerungs-Hub 1015 ein Root-Hub, ein Root-Komplex oder eine Root-Steuerung in einer „Peripheral Component Interconnect Express“-(PCIe)-Verbindungshierarchie. Beispiele des Steuerungs-Hubs 1015 umfassen einen Chipsatz, einen Speichersteuerungs-Hub (MCH), eine Northbridge, einen Verbindungssteuerungs-Hub (ICH), eine Southbridge und einen Root-Controller/Hub. Der Begriff Chipsatz bezeichnet häufig zwei physisch getrennte Steuerungs-Hubs, d. h. einen Speichersteuerungs-Hub (MCH), gekoppelt mit einem Verbindungssteuerungs-Hub (ICH). Man beachte, dass aktuelle Systeme häufig den MCH integriert mit dem Prozessor 1005 aufweisen, während die Steuerung 1015 mit E/A-Einrichtungen auf ähnliche Weise wie im Folgenden beschrieben kommunizieren soll. Bei einigen Ausführungsformen wird Peer-zu-Peer-Routing optional durch den Root-Komplex 1015 unterstützt.
  • Hier ist der Steuerungs-Hub 1015 mit dem Switch/der Bridge 1020 über die serielle Verbindung 1019 gekoppelt. Eingabe-/Ausgabemodule 1017 und 1021, die auch als Schnittstellen/Anschlüsse 1017 und 1021 bezeichnet sein können, umfassen/implementieren einen geschichteten Protokollstapel zum Bereitstellen von Kommunikation zwischen dem Steuerungs-Hub 1015 und dem Switch 1020. Bei einer Ausführungsform können die mehreren Einrichtungen mit dem Switch 1020 gekoppelt werden.
  • Der Switch/die Bridge 1020 leiten Pakete/Nachrichten von der Einrichtung 1025 nach oben, d. h. aufwärts in einer Hierarchie zu einem Root-Komplex zum Steuerungs-Hub 1015, und nach unten, d.h. abwärts in einer Hierarchie von einer Root-Steuerung, vom Prozessor 1005 oder vom Systemspeicher 1010 zur Einrichtung 1025. Der Switch 1020, wird bei einer Ausführungsform als eine logische Anordnung von mehreren virtuellen PCI-zu-PCI-Bridge-Einrichtungen bezeichnet. Die Einrichtung 1025 umfasst interne oder externe Einrichtungen oder Komponenten zum Koppeln mit einem elektronischen System wie einer E/A-Einrichtung, einer Netzwerkschnittstellensteuerung (NIC), einer Zusatzkarte, einem Audioprozessor, einem Netzwerkprozessor, einer Festplatte, einer Speichereinrichtung, einer CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer portablen Speichereinrichtung, einer Firewire-Einrichtung, einer „Universal Serial Bus“-(USB)-Einrichtung, einem Scanner und anderen Eingabe-/Ausgabeeinrichtungen. Im PCIe-Sprachgebrauch wird eine derartige Einrichtung häufig als ein Endpunkt bezeichnet. Obwohl dies nicht spezifisch gezeigt ist, kann die Einrichtung 1025 eine PCIe-zu-PCI/PCI-X-Bridge zur Unterstützung von Altgeräten oder PCI-Einrichtungen anderer Versionen aufweisen. Endpunkteinrichtungen in PCIe werden häufig als Legacy-, PCIe- oder Root-Komplex-integrierte Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 1030 ist ebenfalls durch die serielle Verbindung 1032 mit dem Steuerungs-Hub 1015 gekoppelt. Bei einer Ausführungsform ist der Grafikbeschleuniger 1030 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 1020 und dementsprechend die E/A-Einrichtung 1025 ist dann mit dem ICH gekoppelt. Die E/A-Module 1031 und 1018 sollen ebenfalls einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 1030 und dem Steuerungs-Hub 1015 zu kommunizieren. Ähnlich wie bei der MCH-Erörterung weiter oben können eine Grafiksteuerung oder der Grafikbeschleuniger 1030 selbst in den Prozessor 1005 integriert sein.
  • 11 gibt eine Ausführungsform eines geschichteten Protokollstapels gemäß einer oder mehreren Ausführungsformen der vorliegenden Spezifikation wieder. Man beachte, dass in dieser Figur offenbarte Ausführungsformen des geschichteten Protokollstapels mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Der geschichtete Protokollstapel 1100 weist eine beliebige Form eines geschichtlichen Kommunikationsstapels auf, wie einen „Quick Path Interconnect“ (QPI)-Stapel, einen PCIe-Stapel, einen „Next Generation High Performance Computing Interconnect“-Stapel oder einen anderen geschichteten Stapel. Obwohl die unmittelbar anschließende Erörterung mit Bezug auf 10-13 unter Verweis auf einen PCIe-Stapel vorgestellt wird, können die gleichen Konzepte auf andere Verbindungsstapel angewandt werden. Bei einer Ausführungsform ist der Protokollstapel 1100 ein PCIe-Protokollstapel, aufweisend eine Transaktionsschicht 1105, eine Verbindungsschicht 1110 und eine physische Schicht 1120. Eine Schnittstelle wie die Schnittstellen 1017, 1018, 1021, 1022, 1026 und 1031 in 1 kann als Kommunikationsprotokollstapel 1100 wiedergegeben werden. Die Darstellung als Kommunikationsprotokollstapel kann sich auch auf ein Modul oder eine Schnittstelle beziehen, die einen Protokollstapel implementieren/aufweisen.
  • PCIe verwendet Pakete zum Kommunizieren von Informationen zwischen Komponenten. Pakete werden in der Transaktionsschicht 1105 und Datenverbindungsschicht 1110 gebildet, um die Information von der sendenden Komponente zur empfangenden Komponente zu bringen. Während die gesendeten Pakete durch die anderen Schichten strömen, werden sie mit zusätzlicher Information erweitert, die zum Handhaben der Pakete in diesen Schichten erforderlich ist. An der Empfangsseite erfolgt der umgekehrte Prozess, und Pakete werden von der Wiedergabe ihrer physikalischen Schicht 1120 zur Wiedergabe der Datenverbindungsschicht 1110 und schließlich (für Transaktionsschichtpakete) zu der Form umgewandelt, die durch die Transaktionsschicht 1105 auf der Empfangsseite verarbeitet werden kann.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 1105 eine Schnittstelle zwischen einem Verarbeitungskern einer Einrichtung und der Verbindungsarchitektur wie der Datenverbindungsschicht 1110 und der physischen Schicht 1120 bereitstellen. Diesbezüglich ist eine erste Zuständigkeit der Transaktionsschicht 1105 das Zusammenstellen und Zerlegen von Paketen, d. h. Transaktionsschichtpaketen (TLPs). Die Transaktionsschicht 1105 verwaltet üblicherweise kreditbasierte Flusssteuerung für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen, bei denen Anforderung und Antwort zeitlich getrennt sind, sodass eine Verbindung weiteren Verkehr tragen kann, während die Zieleinrichtung Daten für die Antwort erfasst.
  • Zusätzlich verwendet PCIe kreditbasierte Flusssteuerung. Bei diesem Schema meldet eine Einrichtung eine anfängliche Kreditmenge für jeden der Empfangspuffer in der Transaktionsschicht 1105. Eine externe Einrichtung am entgegengesetzten Ende der Verbindung, wie der Steuerungs-Hub 115 in 1, zählt die Anzahl von durch jedes TLP verbrauchten Krediten. Eine Transaktion kann übertragen werden, falls die Transaktion eine Kreditgrenze nicht überschreitet. Beim Empfang einer Antwort wird ein Kreditbetrag wiederhergestellt. Ein Vorteil eines Kreditschemas ist, dass die Latenz von Kreditrückmeldung die Performanz nicht beeinträchtigt, sofern die Kreditgrenze nicht erreicht ist.
  • Bei einer Ausführungsform umfassen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicher Adressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtenadressraum. Speicherraumtransaktionen weisen eine oder mehrere Leseanforderungen und Schreibanforderungen auf, um Daten zu/von einer in Speicher abgebildeten Position zu übertragen. Bei einer Ausführungsform können Speicherraum Transaktionen zwei unterschiedliche Adressformate verwenden, z. B. ein kurzes Adressformat wie eine 32-Bit-Adresse oder ein langes Adressformat wie eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Einrichtungen zuzugreifen. Transaktionen zum Konfigurationsraum weisen Leseanforderungen und Schreibanforderungen auf. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind definiert, um bandinterne Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Bei einer Ausführungsform stellt die Transaktionsschicht 1105 daher Paket-Kopfteil/Nutzdaten 1106 zusammen. Das Format für aktuelle Paket-Kopfteil/Nutzdaten findet sich in der PCIe-Spezifikation auf der Website der PCIe-Spezifikation.
  • 12 gibt eine Ausführungsform eines PCIe-Transaktionsdeskriptors gemäß einem oder mehreren Beispielen der der vorliegenden Spezifikation wieder. Man beachte, dass in dieser Figur offenbarte Ausführungsformen des PCIe-Transaktionsdeskriptors mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Bei einer Ausführungsform ist der Transaktionsdeskriptor 1200 ein Mechanismus zum Führen von Transaktionsinformation. Diesbezüglich unterstützt der Transaktionsdeskriptor 1200 die Identifizierung von Transaktionen in einem System. Weitere mögliche Anwendungen umfassen das Nachverfolgen von Modifikationen der standardmäßigen Transaktionsreihenfolge und die Zuordnung von Transaktionen zu Kanälen.
  • Der Transaktionsdeskriptor 1200 umfasst das globale Kennungsfeld 1202, das Attributefeld 1204 und das Kanalkennungsfeld 1206. Bei dem dargestellten Beispiel ist das globale Kennungsfeld 1202 so gezeigt, dass es das lokale Transaktionskennungsfeld 1208 und das Quellkennungsfeld 1210 umfasst. Bei einer Ausführungsform ist die globale Transaktionskennung 1202 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 1208 ein durch einen anfordernden Agenten erzeugtes Feld, und es ist für alle ausstehenden Anforderungen eindeutig, die einen Abschluss für den betreffenden anfordernden Agenten erfordern. Ferner kennzeichnet bei diesem Beispiel die Quellkennung 1210 eindeutig den anfordernden Agenten in einer PCIe-Hierarchie. Dementsprechend stellt die lokale Transaktionskennung 1208 zusammen mit der Quell-ID 1210 globale Identifizierung einer Transaktion in einer Hierarchiedomäne bereit.
  • Das Attributefeld 1204 gibt Eigenschaften und Beziehungen der Transaktion an. Diesbezüglich wird das Attributefeld 1204 potenziell genutzt, um zusätzliche Information bereitzustellen, die das Modifizieren der standardmäßigen Handhabung von Transaktionen ermöglicht. Bei einer Ausführungsform weist das Attributefeld 1204 ein Prioritätsfeld 1212, ein reserviertes Feld 1214, ein Ordnungsfeld 1216 und ein „No-Snoop“-Feld 1218 auf. Hier kann das Prioritätsunterfeld 1212 durch einen Initiator abgeändert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributefeld 1214 wird für künftige oder durch den Anbieter definierte Verwendung reserviert gelassen. Mögliche Verwendungsmodelle unter Verwendung von Priorität oder Sicherheitsattributen können unter Verwendung des reservierten Attributefelds implementiert werden.
  • Bei diesem Beispiel wird das Reihenfolge-Attributfeld 1216 verwendet, um optionale Information zu liefern, die den Typ der Reihenfolge angibt, der die standardmäßigen Reihenfolgeregeln abändern kann. Gemäß einer beispielhaften Implementierung bezeichnet ein Reihenfolgeattribut „0“ anzuwendende Standard-Reihenfolgeregeln, während ein Reihenfolgeattribut „1“ eine gelockerte Reihenfolge bezeichnet, wobei Schreibvorgänge Schreibvorgänge in der gleichen Richtung weiterleiten können und Leseabschlüsse Schreibvorgänge in der gleichen Richtung weiterleiten können. Das Snoop-Attributfeld 1218 wird verwendet, um festzustellen, ob Transaktionen einer Snoop-Prüfung unterliegen. Entsprechend der Darstellung identifiziert das Kanal-ID-Feld 1206 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 1110, auch bezeichnet als Datenverbindungsschicht 1110, wirkt als Zwischenstufe zwischen der Transaktionsschicht 1105 und der physischen Schicht 1120. Bei einer Ausführungsform ist eine Zuständigkeit der Datenverbindungsschicht 1110 das Bereitstellen eines zuverlässigen Mechanismus zum Austausch von Transaktionsschichtpaketen (TLPs) zwischen zwei verbundenen Komponenten. Eine Seite der Datenverbindungsschicht 1110 akzeptiert von der Transaktionsschicht 1105 zusammengestellte TLPs, wendet die Paketsequenzkennung 1111 an, d. h. eine Identifizierungsnummer oder Paketnummer, berechnet einen Fehlererkennungscode und wendet ihn an, d. h. CRC 1112, und leitet die abgeänderten TLPs zur physischen Schicht 1120 zur physischen Übertragung zu einer externen Einrichtung.
  • Physische Schicht
  • Bei einer Ausführungsform weist die physische Schicht 1120 einen logischen Unterblock 1121 und einen elektrischen Unterblock 1122 Auf, um ein Paket physisch zu einer externen Einrichtung zu übertragen. Hier ist der logische Unterblock 1121 zuständig für die „digitalen“ Funktionen der physischen Schicht 1121. Diesbezüglich weist der logische Unterblock einen Sendeabschnitt auf, um ausgehende Information zur Übertragung durch den physischen Unterblock 1122 vorzubereiten, und einen Empfangsabschnitt, um empfangene Information zu identifizieren und vorzubereiten, bevor sie zur Verbindungsschicht 1110 weitergeleitet wird.
  • Der physische Block 1122 weist einen Sender und einen Empfänger auf. Der Sender erhält vom logischen Unterblock 1121 Symbole, die der Sender serialisiert und auf eine externe Einrichtung überträgt. Der Empfänger erhält serialisierte Symbole von einer externen Einrichtung und wandelt die empfangenen Signale in einen Bit-Stream um. Der Bit-Stream wird deserialisiert und zum logischen Unterblock 1121 geleitet. Bei einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei 10-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Frames 1123 einzurahmen. Zusätzlich stellt der Empfänger bei einem Beispiel auch einen aus dem eingehenden seriellen Stream wiedergewonnenen Symboltakt bereit.
  • Wie vorstehend angegeben, ist, obwohl die Transaktionsschicht 1105, die Verbindungsschicht 1110 und die physische Schicht 1120 mit Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ein geschichteter Protokollstapel nicht derart eingegrenzt. Tatsächlich kann ein beliebiges geschichtetes Protokoll umfasst/implementiert sein. Beispielsweise weist ein Anschluss/eine Schnittstelle, dargestellt als ein geschichtetes Protokoll auf: (1) eine erste Schicht zum Zusammenstellen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Verfolgen von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine physische Schicht. Als spezifisches Beispiel wird ein „Common Standard Interface“ (CSI)-geschichtetes Protokoll verwendet.
  • 13 gibt eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Struktur entsprechend einem oder mehreren Beispielen der vorliegenden Spezifikation wieder. Man beachte, dass in dieser Figur offenbarte Ausführungsformen der seriellen Punkt-zu-Punkt-PCIe-Struktur mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt wird, ist eine serielle Punkt-zu-Punkt-Verbindung nicht derart eingeschränkt, da sie einen beliebigen Übertragungspfad zum Senden serieller Daten aufweist. Bei der dargestellten Ausführungsform weist eine Basis-PCIe-Verbindung zwei differenziell angesteuerte Niederspannungssignalpaare auf: ein Sendepaar 1306/1311 und ein Empfangspaar 1312/1307. Dementsprechend weist die Einrichtung 1305 Übertragungslogik 1306 zum Senden von Daten zur Einrichtung 1310 und Empfangslogik 1307 zum Empfangen von Daten von der Einrichtung 1310 auf. Anders ausgedrückt, sind zwei Sendepfade, d. h. die Pfade 1316 und 1317, und zwei Empfangspfade, d. h. die Pfade 1318 und 1319 in einer PCIe-Verbindung umfasst.
  • Ein Sendepfad bezeichnet einen beliebigen Pfad zum Senden von Daten, wie eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, einen Infrarot-Kommunikationskanal oder einen sonstigen Kommunikationspfad. Eine Verbindung zwischen zwei Einrichtungen wie der Einrichtung 1305 und der Einrichtung 1310 wird als eine Verknüpfung wie die Verknüpfung 1315 bezeichnet. Eine Verknüpfung kann eine Bahn unterstützen - wobei jede Bahn eine Gruppe differenzieller Signalpaare wiedergibt (ein Paar zum Senden, ein Paar zum Empfangen). Zum Skalieren von Bandbreite kann eine Verknüpfung mehrere durch xN bezeichnete Bahnen aggregieren, wobei N eine beliebige unterstützte Verknüpfungsbreite ist wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differenziertes Paar bezieht sich auf zwei Übertragungspfade, wie die Leitungen 1316 und 1317, um differenzielle Signale zu übertragen. Wenn beispielsweise die Leitung 1316 von einem Niederspannungspegel zu einem Hochspannungspegel umschaltet, d. h. eine ansteigende Flanke, steuert die Leitung 1317 von einem Hochspannungspegel zu einem Niederspannungspegel, d. h. eine abfallende Flanke. Differenzielle Signale weisen potenziell bessere elektrische Eigenschaften auf, wie bessere Signalintegrität, d. h. Kreuzkopplung, Spannungs-Überschwingen/Unterschwingen, Ringing usw. Dies ermöglicht ein besseres Zeitfenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • Bei einer Ausführungsform wird eine neue Hochleistungsverbindung (HPI) bereitgestellt. HPI ist eine Cache-kohärente, linkbasierte Verbindung der nächsten Generation. Als ein Beispiel kann HPI bei Hochleistungsrechenplattformen wie Workstations oder Servern verwendet werden, wobei PCIe üblicherweise zum Verbinden von Beschleunigern oder E/A-Einrichtungen verwendet wird. HPI ist jedoch nicht darauf beschränkt. Vielmehr kann HPI in beliebigen der hier beschriebenen Systeme oder Plattformen eingesetzt werden. Ferner können die individuellen entwickelten Ideen auf andere Verbindungen wie PCIe angewandt werden. Zudem lässt sich HPI so erweitern, dass es auf dem gleichen Markt konkurriert wie andere Verbindungen, z. B. PCIe. Zur Unterstützung von mehreren Einrichtungen weist HPI bei einer Implementierung eine agnostische Befehlssatzarchitektur (ISA) auf (d. h. HPI kann in mehreren unterschiedlichen Einrichtungen implementiert werden). Bei einem anderen Szenario kann HPI auch zum Verbinden von Hochleistungs-E/A-Einrichtungen und nicht nur von Prozessoren oder Beschleunigern eingesetzt werden. Beispielsweise kann eine Hochleistungs-PCIe-Einrichtung über eine entsprechende Übersetzungs-Bridge (d. h. HPI zu PCIe) mit HPI gekoppelt werden. Zudem können die HPI-Verbindungen auf verschiedene Arten (z. B. Sterne, Ringe, Meshes) in vielen HPI-basierten Einrichtungen verwendet werden.
  • 14 gibt eine Ausführungsform mehrerer potenzieller Mehranschlusskonfigurationen wieder. Man beachte, dass in dieser Figur offenbarte Ausführungsformen der Mehranschlusskonfigurationen mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Eine Zwei-Anschluss-Konfiguration 1405 entsprechend der Darstellung weist zwei HPI-Links auf; bei anderen Implementierungen kann jedoch ein HPI-Link verwendet werden. Für größere Topologien können beliebige Konfigurationen verwendet werden, solange eine ID zuweisbar ist und eine Form eines virtuellen Pfades vorliegt. Entsprechend der Darstellung weist die 4-Anschluss-Konfiguration 1410 einen HPI-Link von allen Prozessoren untereinander auf. Doch in der bei der Konfiguration 1415 gezeigten 8-Anschluss-Implementierung sind nicht alle Anschlüsse direkt durch einen HPI-Link miteinander verbunden. Falls ein virtueller Pfad zwischen den Prozessoren vorliegt, wird die Konfiguration jedoch unterstützt. Ein Bereich unterstützter Prozessoren umfasst bei einer nativen Domäne 2-32. Höhere Anzahlen von Prozessoren lassen sich über die Verwendung mehrerer Domänen oder anderer Verbindungen zwischen Knotensteuerungen erreichen.
  • Die HPI-Architektur weist eine Definition einer geschichteten Protokollarchitektur auf, die PCIe ähnlich ist, da Sie ebenfalls eine geschichtete Protokollarchitektur aufweist. Bei einer Ausführungsform definiert HPI Protokollschichten (kohärent, nicht kohärent und optional weitere speicherbasierte Protokolle), eine Routing-Schicht, eine Verbindungsschicht und eine physische Schicht. Ferner weist HPI wie bei vielen anderen Verbindungsarchitekturen Verbesserungen auf in Bezug auf Leistungsmanager, Design für Test und Debugging (DFT), Fehlerbehandlung, Register, Sicherheit usw.
  • 15 In gibt eine Ausführungsform potenzieller Schichten im geschichteten HPI-Protokollstapel wieder; diese Schichten sind jedoch nicht erforderlich und können bei einigen Implementierungen optional sein. Man beachte, dass in dieser Figur offenbarte Ausführungsformen potenzieller Schichten im geschichteten HPI-Protokollstapel mit einem einheitlichen Adressraum für mehrere Verbindungen entsprechend der Beschreibung in der vorliegenden Spezifikation bereitgestellt sein und diesen nutzen können. Jede Schicht behandelt ihre eigene Granularitätsstufe und den Informationsumfang (die Protokollschicht 1505a,b mit Paketen 1530, die Verbindungsschicht 1510a,b mit Flits 1535 und die physische Schicht 1505a,b mit Phits 1540). Man beachte, dass ein Paket bei einigen Ausführungsformen basierend auf der Implementierung partielle Flits, eine einzelne Flit oder mehrere Flits aufweisen kann.
  • Als erstes Beispiel weist eine Breite eines Phits 1540 eine 1: 1-Abbildung der Link-Breite auf Bits auf (z. B. weist eine 20-Bit-Link-Breite eine Phit von 20 Bits auf usw.). Flits können eine größere Größe aufweisen, wie 184,192 oder 200 Bits. Man beachte, dass, falls die Phit 1540 20 Bit breit Ist und die Größe von Flit 1535 184 Bits beträgt, eine Bruchzahl von Phits 1540 benötigt wird, um eine Flit 1535 Zu übertragen (z. B. 9,2 Phits mit 20 Bits zum Übertragen einer 184-Bit-Flit 1535 oder 9,6 bei 20 Bits zum Übertragen einer 192-Bit-Flit). Man beachte, das Breiten des grundlegenden Links an der physikalischen Schicht variieren können. Beispielsweise kann die Anzahl von Bahnen pro Richtung 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. aufweisen. Bei einer Ausführungsform kann die Verbindungsschicht 1510a,b fähig sein, mehrere Teile unterschiedlicher Transaktionen in eine einzelne Flit einzubetten, und in der Flit können mehrere Kopfteile (z. B. 1, 2, 3, 4) eingebettet sein. Hier teilt HPI die Kopfteile in entsprechende Slots, um mehrere Nachrichten in der Flit zu ermöglichen, die für unterschiedliche Knoten vorgesehen sind.
  • Die physische Schicht 1505a,b ist bei einer Ausführungsform zuständig für die schnelle Übertragung von Information auf das physische Medium (elektrisch oder optisch usw.). Der physische Link ist Punkt-zu-Punkt zwischen zwei Verbindungsschicht-Entitäten, wie Schicht 1505a und 1505b. Die Verbindungsschicht 1510a,b abstrahiert die physische Schicht 1505a,b von den oberen Schichten und stellt die Fähigkeit zur zuverlässigen Datenübertragung (sowie für Anforderungen) bereit und verwaltet die Flusssteuerung zwischen zwei direkt verbundenen Entitäten. Sie ist auch zuständig für die Virtualisierung des physischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen. Protokollschicht 1520a,b baut auf der Verbindungsschicht 1510a,b auf, um Protokollnachrichten in die jeweiligen Nachrichtenklassen und virtuellen Kanäle abzubilden, bevor sie zur physischen Schicht 1505a,b für die Übertragung über die physikalischen Links weitergereicht werden. Die Verbindungsschicht 1510a,b kann mehrere Nachrichten unterstützen, wie z.B. Anforderung, Snoop, Antwort, Writeback, nicht kohärente Daten usw.
  • Bei einer Ausführungsform werden zum Bereitstellen einer zuverlässigen Übertragung durch die Verbindungsschicht 1510a,b Fehlerprüfung mit zyklischer Redundanzprüfung (CRC) Wiederherstellungsverfahren bereitgestellt, um die Effekte von routinemäßigen Bit-Fehlern zu isolieren, die an der physischen Verbindung auftreten können. Die Verbindungsschicht 1510a erzeugt die CRC am Sender und prüft an der Empfänger-Verbindungsschicht 1510b.
  • Bei einigen Ausführungsformen verwendet die Verbindungsschicht 1510a,b ein Kreditschema zur Flusssteuerung. Während der Initialisierung erhält ein Sender eine gegebene Anzahl von Krediten zum Senden von Paketen oder Flits zu einem Empfänger. Wenn ein Paket oder eine Pflicht zum Empfänger gesendet wird, setzt der Sender seine Kreditzähler um einen Kredit herab, der entweder ein Paket oder eine Flit wiedergibt, in Abhängigkeit vom Typ des verwendeten virtuellen Netzwerks. Wenn am Empfänger ein Puffer freigegeben ist, wird ein Kredit für den betreffenden Puffertyp zum Sender zurückgemeldet. Wenn die Kredite des Senders für einen gegebenen Kanal erschöpft sind, stoppt dieser bei einer Ausführungsform das Senden von Flits in dem betreffenden Kanal. Im Wesentlichen werden Kredite zurückgegeben, nachdem der Empfänger die Information verbraucht und die dazugehörigen Puffer freigegeben hat.
  • Bei einer Ausführungsform stellt die Routing-Schicht 1515a,b einen flexiblen und verteilten Weg zum Leiten von Paketen von einer Quelle zu einem Ziel bereit. Bei einigen Plattformtypen (beispielsweise Ein-Prozessor- und Dual-Prozessor-Systemen) ist diese Schicht möglicherweise nicht explizit, sondern könnte Teil der Verbindungsschicht 1510a,b sein; in einem derartigen Fall ist diese Schicht optional. Sie beruht auf dem virtuellen Netzwerk und der durch die Verbindungsschicht 1510a,b als Teil der Funktion zum Festlegen, wie die Pakete geleitet werden sollen, bereitgestellten Nachrichtenklassen-Abstraktion. Bei einer Implementierung ist die Routing-Funktion durch die Implementierung spezifischer Routing-Tabellen definiert. Eine derartige Definition ermöglicht eine Vielfalt von Verwendungsmodellen.
  • Bei einer Ausführungsform implementiert die Protokollschicht 1520a,b die Kommunikationsprotokolle, Reihenfolge-Regeln und Kohärenz-Beibehaltung, E/A, Interrupts und weitere Kommunikation höherer Ebene. Man beachte, dass die Protokollschicht 1520a,b bei einer Implementierung Nachrichten bereitstellt zum Verhandeln der Leistungszustände für Komponenten und das System. Als potenziellen Zusatz kann die physische Schicht 1505a,b auch unabhängig oder im Zusammenwirken Leistungszustände der individuellen Links vorgeben.
  • Mehrere Agenten können mit einer HPI-Architektur verbunden sein, wie z. B. ein Home-Agent (setzt Anforderungen zum Speicher ab), Caching (gibt Anforderungen zu kohärentem Speicher aus und antwortet auf Snoops), Konfiguration (behandelt Konfigurationstransaktionen), Interrupt (arbeitet Interrupts ab), Legacy (behandelt Legacy-Transaktionen), nicht kohärent (behandelt nicht kohärente Transaktionen) und weitere. Eine genauere Erörterung der Schichten für HPI ist im Folgenden wiedergegeben.
  • Ein Überblick über einige potenzielle Merkmale von HPI: Verwendet keine Vorabzuweisung bei Heimatknoten; keine Reihenfolgeanforderungen für eine Reihe von Nachrichtenklassen; packt mehrere Nachrichten in eine einzelne Flit (Protokollkopf) (d. h. eine gepackte Flit, die mehrere Nachrichten in definierten Slots aufnehmen kann); breiter Link mit Skaliermöglichkeit von 4, 8, 16, 20 und mehr Bahnen; breites Fehlerprüfungsschema, das 8, 16, 32 oder bis zu 64 Bits zum Fehlerschutz einsetzen kann; und Verwendung eines eingebetteten Taktschemas.
  • HPI Physische Schicht
  • Die physische Schicht 1505a,b (oder PHY) von HPI liegt oberhalb der elektrischen Schicht (d. h. elektrische Leiter, die zwei Komponenten verbinden) und unterhalb der Verbindungsschicht 1510a,b entsprechend der Darstellung in 15. Die physische Schicht liegt bei jedem Agenten vor und verbindet die Verbindungsschichten an zwei Agenten (A und B) getrennt voneinander. Die lokalen und entfernten elektrischen Schichten sind durch physische Medien verbunden (z. B. Kabel, Leiter, optisch usw.). Die physische Schicht 1505a,b weist bei einer Ausführungsform zwei Hauptphasen auf, Initialisierung und Betrieb. Während der Initialisierung ist die Verbindung für die Verbindungsschicht undurchsichtig, und das Signalisieren kann eine Kombination von getakteten Zuständen und Handshake-Ereignissen einbeziehen. Während des Betriebs ist die Verbindung für die Verbindungsschicht transparent, und die Signalisierung erfolgt mit einer Geschwindigkeit, wobei alle Bahnen als ein einzelner Link zusammenarbeiten. Während der Betriebsphase transportiert die physische Schicht Flits von Agent A zu Agent B und von Agent B zu Agent A. Die Verbindung wird auch als ein Link bezeichnet und abstrahiert einige physikalische Aspekte, umfassend Medien, Breite und Geschwindigkeit, von den Verbindungsschichten, während Flits und Steuerung/Status der aktuellen Konfiguration (z. B. bereitet) mit der Verbindungsschicht ausgetauscht werden. Die Initialisierungsphase umfasst Nebenphasen, z. B. Polling und Konfiguration. Die Betriebsphase weist ebenfalls Nebenphasen auf (z. B. Link-Leistungsverwaltungszustände).
  • Bei einer Ausführungsform zählt zur physischen Schicht 1505a,b auch: Einhalten eines Zuverlässigkeits-/Fehlerstandards, Tolerieren eines Fehlers auf einer Bahn an einem Link und Sprung zu einem Bruchteil der Sollbreite, Tolerieren von einzelnen Fehlern in entgegengesetzter Richtung eines Links, Unterstützung von Hinzufügen/Entfernen während des laufenden Betriebs, Aktivieren/Deaktivieren von PHY-Anschlüssen, Zeitablauf bei Initialisierungsversuchen, wenn die Anzahl der Versuche einen vorgegebenen Schwellenwert überschritten hat usw.
  • Bei einer Ausführungsform verwendet HPI ein rotierendes Bitmuster. Wenn beispielsweise eine Flit-Größe nicht mit einem mehrfachen der Bahnen in einem HPI-Link ausgerichtet ist, kann die Flit möglicherweise nicht in der Lage sein, in einem ganzzahligen Mehrfachen von Übertragungen über die Bahnen versendet zu werden (z. B. ist eine 192-Bit-Flit nicht ein genaues Mehrfaches eines beispielhaften 20-Bahnen-Links. So können bei x20 Flits versetzt sein, um das Vergeuden von Bandbreite zu vermeiden (z. B. Senden einer partiellen Flit an einer Stelle, ohne den Rest der Bahnen zu verwenden). Das Versetzen wird bei einer Ausführungsform festgelegt, um die Latenz von Schlüsselfeldem und Multiplexern im Sender (Tx) und Empfänger (Rx) zu optimieren. Das festgelegte Muster stellt potenziell auch sauberen und schnellen Übergang zu/von einer schmaleren Breite (z. B. x8) und nahtlosen Betrieb an der neuen Breite bereit.
  • Bei einer Ausführungsform verwendet HPI einen eingebetteten Takt, wie z. B. einen eingebetteten 20-Bit-Takt oder einen eingebetteten Takt einer anderen Bitzahl. Andere Hochleistungsschnittstellen können einen weitergeleiteten Takt oder einen anderen Takt zum bandinternen Rücksetzen verwenden. Durch Takt-Einbettung in HPI wird die Pinbelegung potenziell reduziert. Das Verwenden eines eingebetteten Taktes kann bei einigen Implementierungen jedoch zu unterschiedlichen Vorrichtungen und Verfahren zum Handhaben des bandinternen Rücksetzens führen. Als ein erstes Beispiel wird nach der Initialisierung ein blockierter Link-Status zum Zurückhalten der Flit-Übertragung des Links und zum Ermöglichen der PHY-Verwendung (im Einzelnen beschrieben in Anhang A) eingesetzt. Als ein zweites Beispiel können elektrisch geordnete Gruppen wie ein „Electrically Idle Ordered Set“ (EIOS) während der Initialisierung verwendet werden.
  • Bei einer Ausführungsform kann HPI eine erste Bitbreitenrichtung ohne einen weitergeleiteten Takt und einen zweiten, kleineren Bitbreiten-Link zum Leistungsmanagement verwenden. Als ein Beispiel weist HPI einen partiellen Link-Breiten-Übertragungszustand auf, wobei eine partielle Breite verwendet wird (z. B. eine volle Breite (x20) und eine partielle Breite (x8)); die Breiten sind jedoch rein veranschaulichend und können abweichen. Hier kann die PHY ohne Unterstützung oder Eingreifen der Verbindungsschicht das Leistungsmanagement partieller Breite handhaben. Bei einer Ausführungsform wird ein „Blocking Link State“-(BLS)-Protokoll verwendet, um in den Sendestatus partieller Breite (PWTS) einzutreten. Das Verlassen von PWTS kann bei einer oder mehreren Implementierungen das BLS-Protokoll oder die Erkennung der Rauschsperre verwenden. Wegen des Fehlens eines weitergeleiteten Taktes kann das Verlassen von PWTLS ein Neu-Entzerren aufweisen, das die Bestimmung des Links beibehält.
  • Bei einer Ausführungsform verwendet HPI Tx-Adaptation. Als ein Beispiel werden zur Tx-Adaptation der Loopback-Status und Hardware verwendet. Als Beispiel kann HPI tatsächliche Bit-Fehler zählen; dies kann mittels Durchführens einer Injektion spezieller Muster ermöglicht werden. Als ein Ergebnis sollte HPI in der Lage sein, bessere elektrische Margen bei geringerer Leistung zu erzielen. Bei Verwendung des Loopback-Status kann eine Richtung als ein Hardware-Rückkanal verwendet werden, wobei Metriken als Teil von Trainingssequenz-(TS)-Nutzdaten gesendet werden.
  • Bei einer Ausführungsform kann HPI die Festlegung der Latenz bereitstellen, ohne Synchronisationszählerwerte in einer TS auszutauschen. Andere Verbindungen können die Festlegung der Latenz basierend auf einem derartigen Austausch eines Synchronisationszählerwerts in jeder TS durchführen. Hier kann HPI periodisch wiederkehrende „Electrically Idle Exit Ordered Sets“ (EIEOS) als Proxy für den Synchronisationszählerwert verwenden, unter Ausrichtung der EIEOS auf den Synchronisationszähler. Dies spart potenziell TS-Nutzdatenraum, beseitigt Aliasing- und DC-Balance-Probleme und vereinfacht die Berechnung der hinzuzufügenden Latenz.
  • Bei einer Ausführungsform stellt HPI Software und Timersteuerung für Übergänge einer Link-Zustandsmaschine bereit. Andere Verbindungen können ein Semaphor (Halte-Bit) unterstützen, dass durch Hardware beim Eintritt in einen Initialisierungszustand gesetzt wird. Das Verlassen des Zustands tritt ein, wenn das Halte-Bit durch Software gelöscht wird. Bei einer Implementierung ermöglicht es HPI der Software, diesen Typ eines Mechanismus zum Eintritt in einen sendenden Link-Zustand oder einen Status eines Loopback-Musters zu steuern. Bei einer Ausführungsform ermöglicht HPI das Verlassen von Handshake-Status basierend auf einem softwareprogrammierbaren Time-out nach einem Handshake, was das Testen von Software potenziell erleichtert.
  • Bei einer Ausführungsform verwendet HPI „Pseudo Random Bit Sequence“-(PRBS)-Scrambling der TS. Als ein Beispiel wird eine 23-Bit-PRBS verwendet (PRBS23). Bei einer Ausführungsform wird die PRBS durch ein selbststartendes Speicherelement ähnlicher Bit-Größe wie ein linear rückgekoppeltes Schieberegister. Als ein Beispiel kann zum Scrambling ein festes UI-Muster mit Bypass zu einem Adaptationszustand verwendet werden. Doch durch Scrambling der TS mit PRBS23 kann die Rx-Adaptation ohne den Bypass durchgeführt werden. Zusätzlich können Offset und andere Fehler während der Taktwiederherstellung und des Samplings reduziert werden. Der HPI-Ansatz beruht auf der Verwendung von LFSRs, die während spezifischer Abschnitte der TS selbststartend sein können.
  • Bei einer Ausführungsform unterstützt HPI einen simulierten langsamen Modus ohne Änderung der PLL-Taktfrequenz. Einige Konzepte können separate PLLs für langsame und schnelle Geschwindigkeit verwenden. Dennoch verwendet HPI bei einer Implementierung einen emulierten langsamen Modus (d. h. PLL-Takt läuft mit schneller Geschwindigkeit; TX wiederholt Bits mehrere Male; RX führt Überabtastung durch, um Kanten zu lokalisieren und das Bit zu identifizieren). Dies bedeutet, dass Anschlüsse, die eine PLL teilen, bei niedrigen und schnellen Geschwindigkeiten koexistieren können. Bei einem Beispiel, wobei das Mehrfache ein Ganzzahlverhältnis von schneller Geschwindigkeit zu langsamer Geschwindigkeit ist, können unterschiedliche schnelle Geschwindigkeiten mit der gleichen langsamen Geschwindigkeit arbeiten, was während der Erkennungsphase eines Anschlusses bei laufendem Betrieb verwendet werden kann.
  • Bei einer Ausführungsform unterstützt HPI eine langsame Gleichtaktfrequenz für den Anschluss bei laufendem Betrieb. Der emulierte langsame Modus Entsprechend der vorstehenden Beschreibung ermöglicht HPI-Anschlüssen das Teilen einer PLL zur Koexistenz bei langsamen und schnellen Geschwindigkeiten. Wenn ein Designer die Emulationsmehrzahl als ein Ganzzahlverhältnis von schneller Geschwindigkeit zu langsamer Geschwindigkeit festsetzt, können unterschiedliche schnelle Geschwindigkeiten mit der gleichen langsamen Geschwindigkeit arbeiten. Somit können zwei Agenten, die mindestens eine gemeinsame Frequenz unterstützen, im laufenden Betrieb ungeachtet der Geschwindigkeit, mit der der Host-Anschluss betrieben wird, angeschlossen werden. Die Softwareerkennung kann anschließend den Link im langsamen Modus verwenden, um die optimalen Link-Geschwindigkeiten zu identifizieren und einzurichten.
  • Bei einer Ausführungsform unterstützt HPI die Neuinitialisierung des Links ohne Terminierungsänderungen. Man könnte eine Neuinitialisierung bereitstellen anhand eines bandinternen Rücksetzens, aufweisend Taktbahn-Terminierungen, die für den Erkennungsprozess geändert sind, der verwendet wird für Zuverlässigkeit, Verfügbarkeit und Wartbarkeit (RAS). Bei einer Ausführungsform kann die Neuinitialisierung für HPI erfolgen, ohne die Terminierungswerte zu ändern, wenn HPI ein RX-Screening eingehender Signalisierung zum Identifizieren guter Bahnen aufweist.
  • Bei einer Ausführungsform unterstützt HPI die Eingabe des robusten Niedrigleistungsverbindungsstatus (LPLS). Als ein Beispiel kann HPI ein Mindestverweilen in LPLS aufweisen (d. h. einen Mindestzeitumfang, UI, Zählerwert usw. für das Verweilen eines Links in LPLS vor einem Verlassen). Alternativ dazu kann die LPLS-Eingabe verhandelt werden und anschließend ein bandinternes Rücksetzen zum Eintritt in LPLS verwendet werden. Dies kann jedoch ein tatsächliches bandinternes Rücksetzen maskieren, das in einigen Fällen auf den zweiten Agenten zurückgeht. Bei einigen Implementierungen ermöglicht HPI einem ersten Agenten den Eintritt in LPLS und einem zweiten Agenten die Eingabe des Rücksetzens. Der erste Agent ist nicht zuständig für einen Zeitraum (d. h. die Mindestverweilzeit), was es dem zweiten Agenten ermöglicht, das Rücksetzen abzuschließen und anschließend den ersten Agenten aufzuwecken, sodass ein wesentlich effizienterer, robuster Eintritt in LPLS ermöglicht wird.
  • Bei einer Ausführungsform unterstützt HPI Merkmale wie Entprellungserkennung, Wecken und kontinuierliches Screening auf Bahnausfälle. HPI kann nach einem angegebenen Signalisierungsmuster für einen erweiterten Zeitraum zum Detektieren eines gültigen Weckens von einem LPLS suchen und so die Möglichkeit eines unechten Weckens reduzieren. Die gleiche Hardware kann auch im Hintergrund verwendet werden zum kontinuierlichen Screening auf schlechte Spuren während des Initialisierungsprozesses und ein robusteres RAS-Merkmal erstellen.
  • Bei einer Ausführungsform unterstützt HPI ein deterministisches Verlassen mit Lockstep und Neustart/Wiedergabe. Bei HPI können beim Betrieb in voller Breite einige TS-Grenzen mit Flit-Grenzen zusammenfallen. Dabei kann HPI die Austrittsgrenzen identifizieren und spezifizieren, sodass das Lockstep-Verhalten mit einem anderen Link beibehalten werden kann. Zusätzlich kann HP Timer angeben, die zum Beibehalten des Locksteps mit einem Link-Paar verwendet werden können. Nach der Initialisierung kann HPI auch den Betrieb mit deaktiviertem bandinternen Rücksetzen unterstützen, um einige Varianten des Lockstep-Betriebs zu unterstützen.
  • Bei einer Ausführungsform unterstützt HPI die Verwendung des TS-Kopfteils statt Nutzdaten für Initialisierungsschlüsselparameter. Alternativ dazu können TS-Nutzdaten zum Austausch von Einheitenparametern wie ACKs UND Bahnnummern verwendet werden. Und DC-Pegel zur Kommunikation der Bahnpolarität können ebenfalls eingesetzt werden. HPI kann dennoch abgeglichene DC-Codes im TS-Kopfteil für Schlüsselparameter verwenden. Dies reduziert potenziell die Anzahl von für einen Arbeitsvorgang erforderlichen Bytes und ermöglicht potenziell die Verwendung eines gesamten PRBS23-Musters zum TS-Scrambling, sodass das Erfordernis eines DC-Abgleichs der TS reduziert wird.
  • Bei einer Ausführungsform unterstützt HPI Maßnahmen zum Erhöhen der Rauschimmunität von aktiven Bahnen während des Eintritts/Austritts von inaktiven Bahnen bei „Partial Width Transmitting Link State“ (PWTLS). Bei einer Ausführungsform können Null-Flits (oder andere nicht erneut testbare Flits) um den Wechselpunkt der Breite verwendet werden, um die Geräuschimmunität von aktiven Bahnen zu erhöhen. Zusätzlich kann HPI Null-Flits um den Beginn des PWTLS-Austritts einsetzen (d. h., die Null-Flits können durch Daten-Flits aufgebrochen sein). HPI kann auch spezialisierte Signalisierung verwenden, deren Format variieren kann, um Möglichkeiten der Erkennung unechten Aufweckens zu reduzieren.
  • Bei einer Ausführungsform unterstützt HPI die Verwendung von spezialisierten Mustern während des PWTLS-Austritts, um nicht blockierende Entzerrung zu ermöglichen. Alternativ dazu können inaktive Bahnen beim PWTLS-Austritt auch nicht entfernt werden, da sie die Verzerrung durch einen weitergeleiteten Takt beibehalten. Mittels der Verwendung eines eingebetteten Taktes kann HPI dennoch spezialisierte Signalisierung verwenden, deren Format variieren kann, um Möglichkeiten der Erkennung unechten Aufweckens zu reduzieren und auch um Entzerrung ohne Sperre des Flit-Stroms zu ermöglichen. Dies ermöglicht ebenfalls robustere RAS durch nahtloses Abschalten ausgefallener Bahnen, ihre Neueinrichtung und erneutes Online-Stellen, ohne den Strom von Flits zu blockieren.
  • Bei einer Ausführungsform unterstützt HPI den Eintritt in den Niedrigleistungsverbindungsstatus (LPLS) Ohne Verbindungsschicht Unterstützung und robusteren LPLS-Austritt. Alternativ dazu kann die Verbindungsschichtverhandlung abhängen zwischen vorbestimmtem Master und Slave zum Eintritt in LPLS aus dem „Transmitting Link State“ (TLS). In HPI kann die PHY die Verhandlung unter Verwendung von „Blocking Link State“-(BLS)-Codes handhaben und beide Agenten als Master oder Initiatoren unterstützen sowie den Eintritt in LPLS direkt aus PWTLS. Der Austritt aus LPLS kann auf dem Entprellen einer Rauschsperre unter Verwendung eines spezifischen Musters beruhen, gefolgt von einem Handshake zwischen den beiden Seiten und einem durch Time-out induzierten bandinternen Rücksetzen, falls eines davon misslingt.
  • Bei einer Ausführungsform unterstützt HPI die Steuerung unproduktiven Loopings während der Initialisierung. Alternativ dazu kann ein Initialisierungsfehler (z. B. Fehlen von guten Bahnen) zum erneuten und zu häufigen Versuch der Initialisierung führen, was potenziell Leistung vergeudet und schwer zu analysieren ist. In HPI kann das Link-Paar eine Initialisierung entsprechend der vorgegebenen Häufigkeit versuchen, bevor der Abbruch und das Abschalten in einen Rücksetzzustand erfolgen, wobei die Software Anpassungen vornehmen kann, bevor die Initialisierung erneut versucht wird. Dies verbessert potenziell die RAS des Systems.
  • Bei einer Ausführungsform unterstützt HPI IBIST-Optionen (Interconnect Built-in Self-test). Bei einer Ausführungsform kann ein Mustergenerator verwendet werden, der zwei nicht korrelierte PRBS23-Muster maximaler Länge für beliebige Pins ermöglicht. Bei einer Ausführungsform kann HPI in der Lage sein, vier derartige Muster zu unterstützen und die Fähigkeit zum Steuern der Länge dieser Muster bereitstellen (d. h. Testmuster und PRBS23-Länge dynamisch variieren).
  • Bei einer Ausführungsform stellt HPI erweiterte Logik zum Entzerren von Bahnen bereit. Als ein Beispiel kann die TS-Grenze nach TS-Sperre zum Entzerren der Bahnen verwendet werden. Zusätzlich kann HPI durch Vergleichen von Bahn-PRBS-Mustern in der LFSR während spezifischer Punkte im Arbeitsvorgang entzerren. Ein derartiges Verzerren kann bei Test-Chips nützlich sein, denen möglicherweise die Fähigkeit zum Erkennen von TS oder Zustandsmaschinen zum Verwalten des Entzerrens fehlt.
  • Bei einer Ausfuhrungsform erfolgt der Austritt aus der Initialisierung zur Verbindungsübertragung an einer TS-Grenze mit planetarer Ausrichtung. Zusätzlich kann HPI ab diesem Punkt eine verhandelte Verzögerung unterstützen. Zusätzlich kann die Reihenfolge des Austritts zwischen den beiden Richtungen durch die Verwendung von Master-Slave-Determinismus gesteuert werden, wobei eine statt zwei planetarer Ausrichtungssteuerungen für das Link-Paar ermöglicht wird.
  • Einige Implementierungen verwenden ein festes 128UI-Muster zum TS-Scrambling. Andere verwenden ein festes 4k-PRBS23 zum TS-Scrambling. HPI ermöglicht bei einer Ausführungsform die Verwendung von PRBS beliebiger Länge, aufweisend eine ganze (8M-1) PRBS23-Sequenz.
  • Bei einigen Architekturen ist die Adaptation von fester Dauer. Bei einer Ausführungsform erfolgt der Austritt von Adapt mittels Handshake statt Zeitablauf. Dies bedeutet, dass Adapt-Zeiten zwischen den beiden Richtungen asymmetrisch sein können und nicht so lang sein müssen wie es eine der Seiten benötigt.
  • Bei einer Ausführungsform kann eine Zustandsmaschine Zustände umgehen, falls derartige Zustandsvorgänge nicht erneut ausgeführt werden müssen. Dies kann jedoch zu komplexeren Designs und Validierungsausnahmen führen. HPI verwendet keinen Bypass - stattdessen werden Vorgänge verteilt, sodass kurze Timer in jedem Zustand verwendet werden können, um die Vorgänge durchzuführen, und Bypässe vermieden werden. Dies schafft potenziell gleichmäßigere und synchronisierte Zustandsmaschinenübergänge.
  • Bei einigen Architekturen werden weitergeleiteter Takt zum bandinternen Rücksetzen und die Verbindungsschicht zum Durchführen der Übertragung partieller Breite und zur Verbindungseingabe mit niedriger Leistung verwendet. HPI verwendet Funktionen, die Zustandscodes mit Blockverknüpfung ähnlich sind. Diese Codes könnten potenziell Bit-Fehler aufweisen, die zu ‚Fehltreffern‘ bei Rx führen. HPI weist ein Protokoll zum Behandeln von Fehltreffern auf sowie Mittel zum Behandeln von Anforderungen von asynchronem Rücksetzen, Niedrigleistungsverbindungszustand und Link-Status partieller Breite.
  • Bei einer Ausführungsform wird ein 128-UI-Scrambler für Loopback-TS verwendet. Dies kann jedoch zu Aliasing für TS-Sperre führen, wenn der Loopback beginnt; somit ändern bestimmte Architekturen die Nutzdaten dabei auf ausschließlich 0. Bei einer anderen Ausführungsform verwendet HPI einen gleichförmigen Arbeitsvorgang und periodisch auftretende unverschlüsselte EIEOS zur TS-Sperre.
  • Bestimmte Architekturen verwenden während der Initialisierung verschlüsselte TS. Bei einer Ausführungsform definiert HPI Supersequenzen, die Kombinationen verschlüsselter TS verschiedener Längen und unverschlüsselter EIEOS sind. Dies ermöglicht zufälligere Übergänge während der Initialisierung und vereinfacht auch die TS-Sperre, die Festlegung der Latenz und weitere Vorgänge.
  • HPI Verbindungsschicht
  • Wiederum in 15 ist eine Ausführungsform eines logischen Blocks für die Verbindungsschicht 1510a,b dargestellt. Bei einer Ausführungsform gewährleistet die Verbindungsschicht 1510a,b zuverlässige Datenübertragung zwischen zwei Protokoll- oder Routing-Entitäten. Sie abstrahiert die physische Schicht 1505a,b von der Protokollschicht 1520a,b; ist zuständig für die Flusssteuerung zwischen zwei Protokollagenten (A, B) und stellt virtuelle Kanaldienste bereit für die Protokollschicht (Nachrichtklassen) und die Routing-Schicht (virtuelle Netzwerke). Die Schnittstelle zwischen der Protokollschicht 1520a,b und der Verbindungsschicht 1510a,b ist üblicherweise auf der Paketebene. Bei einer Ausführungsform wird die kleinste Übertragungseinheit auf der Verbindungsschicht als eine Flit mit einer vorgegebenen Anzahl von Bits wie 192 bezeichnet. Die Verbindungsschicht 1510a,b baut auf der physischen Schicht 1505a,b Auf, um die Übertragungseinheit der physischen Schicht 1505a,b (Phit) in der Übertragungseinheit der Verbindungsschicht 1510a,b (Flit) einzurahmen. Zusätzlich kann die Verbindungsschicht 1510a,b logisch in zwei Teile, einen Sender und einen Empfänger, aufgebrochen sein. Ein Sender-/Empfänger-Paar an einer Entität kann mit einem Empfänger-/Sender-Paar an einer anderen Entität verbunden sein. Flusssteuerung wird häufig sowohl an einer Flit als auch an einer Paketbasis durchgeführt. Fehlererkennung und -korrektur werden ebenfalls potenziell auf Basis einer Flit-Ebene durchgeführt.
  • Bei einer Ausführungsform werden Flits auf 192 Bits erweitert. Es kann jedoch ein beliebiger Bereich von Bits, wie z. B. 81-256 (oder mehr) in unterschiedlichen Variationen verwendet werden. Hier ist das CRC-Feld ebenfalls vergrößert (z. B. 16 Bits), um umfangreichere Nutzdaten zu bewältigen.
  • Bei einer Ausführung sind TIDs (Transaktions-IDs) 11 Bits lang. Als ein Ergebnis kann auf die Vorabzuweisung und die Aktivierung verteilter Home-Agenten verzichtet werden. Ferner ermöglicht die Verwendung von 11 Bits bei einigen Implementierungen die Verwendung der TID, ohne einen erweiterten TID-Modus einsetzen zu müssen.
  • Bei einer Ausführungsform sind Kopfteil-Flits in 3 Slots unterteilt, davon 2 mit gleicher Größe (Slots 0 und 1) und ein weiterer kleinerer Slot (Slot 2). Ein Fließfeld kann zur Verwendung durch entweder Slot 0 oder Slot 1 verfügbar sein. Die Nachrichten, die Slot 1 und 2 verwenden können, sind optimiert, wodurch die Anzahl von zum Codieren der Opcodes dieser Slots erforderlichen Bits reduziert wird. Wenn ein Kopfteil, der mehr Bits benötigt als Slot 0 bereitstellt, in die Verbindungsschicht eintritt, stehen Slot-Algorithmen bereit, die es ihm ermöglichen, Nutzdaten-Bits von Slot 1 für zusätzlichen Raum zu übernehmen. Spezielle Steuerungs- Flits (z. B. LLCTRL) können alle 3 Slots mit Bits für ihren Bedarf belegen. Slot-Algorithmen können auch für Fälle einer partiell verwendeten Verbindung vorliegen, um die Verwendung individueller Slots zu ermöglichen, während andere Slots keine Information tragen. Weitere Verbindungen können eine einzelne Nachricht statt mehrerer Nachrichten pro Flit zulassen. Die Größe der Slots in der Flit und die Typen von Nachrichten, die in jedem Slot platziert werden können, stellen potenziell die erhöhte Bandbreite von HPI selbst bei einer reduzierten Flit-Rate bereit. Eine detailliertere Beschreibung von Flits und dem Multi-Slot-Kopfteil findet sich im Abschnitt zur Flit-Definition in Anhang B.
  • In HPI kann eine große CRC-Baseline die Fehlererkennung verbessern. Beispielsweise wird 16-Bit-CRC eingesetzt. Als ein Ergebnis der größeren CRC können auch umfangreichere Nutzdaten verwendet werden. Die 16 CRC-Bits in Kombination mit einem mit diesen Bits verwendeten Polynom verbessern die Fehlererkennung. Als ein Ergebnis gibt es eine Mindestanzahl von Gates zum Bereitstellen von: 1) 1-4 Bit-Fehler erkannt, 2) Fehler der Burst-Länge 16 oder weniger werden erkannt.
  • Bei einer Ausführungsform wird „Rolling CRC“, basierend auf zwei CRC-16-Gleichungen, verwendet. Zwei 16-Bit-Polynom können verwendet werden - das Polynom von HPI CRC-16 und ein zweites Polynom. Das zweite Polynom weist die kleinste Anzahl von Gates zum Implementieren auf, während die Eigenschaften von 1) allen 1-7 erkannten Bit-Fehlern, 2) Burst-Schutz pro Bahn in x8 Link-Breiten, 3) allen Fehlern der Burst-Länge 16 oder weniger weiterhin erkannt werden.
  • Bei einer Ausführungsform wird eine reduzierte maximale Flit-Rate (9,6 statt 4 UI) verwendet, aber erhöhter Durchsatz der Verbindung wird erreicht. Als ein Ergebnis der erhöhten Flit-Rate, der Einführung mehrerer Slots pro Flit, der optimierten Verwendung von Nutzdaten-Bits (geänderte Algorithmen zum Entfernen oder Neuplatzieren selten genutzter Felder) wird mehr Verbindungseffizienz erzielt.
  • Bei einer Ausführungsform weist ein Teil des Trägers für 3 Slots 192-Bit-Flits auf. Das Fließfeld aktiviert 11 Extra-Nutzdaten-Bits entweder für Slot 0 oder für Slot 1. Man beachte, dass, falls eine größere Flit eingesetzt wird, mehr fließende Bits verwendet werden können. Und infolgedessen werden, falls eine kleinere Flit eingesetzt wird, weniger fließende Bits bereitgestellt. Dadurch, dass ein Feld zwischen den beiden Slots fließen kann, können wir die Extra-Bits bereitstellen, die für bestimmte Nachrichten benötigt werden, während der Umfang der 192 Bits erhalten bleibt und die Verwendung der Bandbreite maximiert wird. Alternativ dazu kann das Bereitstellen eines 11-Bit-HTID-Felds für jeden Slot zusätzliche 11 Bits in der Flit verwenden, die nicht so effizient verwendet werden könnten.
  • Einige Verbindungen können einen Viral-Status in Nachrichten auf Protokollebene und einen Poison-Status in Daten-Flits übertragen. Bei einer Ausführungsform werden Nachrichten der HPI-Protokollebene und Poison-Status zu Steuer-Flits bewegt. Da diese Bits selten verwendet werden (nur im Fall von Fehlern), erhöht ihre Entfernung aus den Nachrichten der Protokollebene potenziell die Flit-Verwendung. Ihre Injektion unter Verwendung von Steuer-Flits ermöglicht die Eindämmung der Fehler.
  • Bei einer Ausführungsform ermöglichen CRD- und ACK-Bits in einer Flit die Rückkehr einer Anzahl von Krediten, z. B. acht, oder der Anzahl von ACKs, z. B. 8. Als Teil der komplett codierten Kreditfelder werden diese Bits verwendet als Credit[n] und Acknowledge[n], wenn Slot 2 als LLCRD codiert ist. Dies verbessert potenziell die Effizienz, indem es jeder Flit ermöglicht wird, die Anzahl von VNA-Krediten und die Anzahl von Acknowledges unter Verwendung einer Gesamtsumme von nur 2 Bits zurückzumelden, wobei es ihren Definitionen aber ebenfalls möglich ist, konsistent zu bleiben, wenn eine vollständig codierte LLCRD-Rückmeldung verwendet wird.
  • Bei einer Ausführungsform gilt VNA vs. VNO/1-Codierung (spart blitzt, indem Slots auf die gleiche Codierung ausgerichtet werden). Die Slots in einem Multi-Slot-Kopfteil-Flit können auf nur VNA, nur VNO oder nur VN1 ausgerichtet sein. Durch die diesbezügliche Durchsetzung werden Bits pro Slot mit der Angabe von VN entfernt. Dies erhöht die Effizienz der Flit-Bit-Nutzung und ermöglicht die potenzielle Erweiterung von 10-Bit-TIDs zu 11-Bit-TIDs.
  • Einige Felder erlauben die Rückmeldung nur in Inkrementen von 1 (für VN0/1), 2/8/16 (für VNA) und 8 (für Acknowledge). Dies bedeutet, dass das Zurückmelden einer großen Anzahl von anstehenden Krediten oder Quittierungen mehrere Rückmeldenachrichten verwenden kann. Es bedeutet ebenfalls, dass ungerade nummerierte Rückmeldewerte für VNA und Acknowledge während der Kumulierung eines geradzahlig teilbaren Wertes unbearbeitet bleiben können. HPI kann vollständig codierte Credit- und Ack-Rückmeldefelder aufweisen, wodurch ein Agent alle kumulierten Kredite oder Quittierungen für einen Pool mit einer einzelnen Nachricht zurückleiten kann. Dies verbessert potenziell die Verbindungseffizienz und vereinfacht auch potenziell die Logik-Implementierung (die Rückmeldelogik kann ein „Löschen“-Signal statt eines vollständigen Abwärtszählers implementieren).
  • Routing-Schicht
  • Bei einer Ausführungsform stellt die Routing-Schicht 1515a,b ein flexibles und verteiltes Verfahren zum Leiten von HPI-Transaktionen von einer Quelle zu einem Ziel bereit. Das Schema ist flexibel, da Routing-Algorithmen für mehrere Topologien durch programmierbare Routing-Tabellen bei jedem Router angegeben werden können (die Programmierung wird bei Ausführungsformen durch Firmware, Software oder eine Kombination daraus durchgeführt). Die Routing-Funktionalität kann verteilt sein; das Routing kann durch eine Reihe von Routing-Schritten erfolgen, wobei jeder Routing-Schritt durch Nachschlagen einer Tabelle entweder im Quell-, Zwischen- oder Zielrouter definiert wird. Das Nachschlagen an einer Quelle kann sinnvoll sein, um ein HPI-Paket in die HPI-Struktur zu injizieren. Das Nachschlagen an einem zwischengeschalteten Router kann verwendet werden, um ein HPI-Paket von einem Eingangsanschluss zu einem Ausgangsanschluss zu leiten. Das Nachschlagen an einen Zielanschluss kann verwendet werden, um auf den Ziel-HPI-Protokollagenten abzuzielen. Man beachte, dass die Routing-Schicht bei einigen Implementierungen dünn ist, da die Routing-Tabellen und somit die Routing-Algorithmen durch die Spezifikation nicht spezifisch definiert sind. Dies ermöglicht eine Vielfalt von Nutzungsmodellen, aufweisend flexible Plattformarchitektur-Topologien zur Definition durch die Systemimplementierung. Die Routing-Schicht 1515a,b basiert auf der Verbindungsschicht 1510a,b; um die Verwendung von bis zu drei (oder mehr) virtuellen Netzwerken (VNs) bereitzustellen - bei einem Beispiel sind zwei blockierungsfreie VNs, VNO und VN1, mit mehreren definierten Nachrichtenklassen in jedem virtuellen Netzwerk. Ein geteiltes adaptives virtuelles Netzwerk (VNA) kann in der Verbindungsschicht definiert sein, aber dieses adaptive Netzwerk kann nicht direkt in Routing-Konzepten exponiert werden, da jede Nachrichtenklasse und VN dedizierte Ressourcen und garantierten Weiterleitungsfortschritt aufweisen können.
  • Eine nicht erschöpfende beispielhafte Liste von Routing-Regeln umfasst: (1) (Nachrichtenklasseninvarianz): Ein eingehendes Paket, das zu einer bestimmten Nachrichtenklasse gehört, kann auf einen ausgehenden HPI-Anschluss/ein virtuelles Netzwerk in derselben Nachrichtenklasse geleitet werden; (2) (Schalten) HPI-Plattformen unterstützen möglicherweise die Schalttypen „Speichern und weiterleiten“ und „Virtuelles direktes Durchschalten“. Bei einer anderen Ausführungsform kann HPI möglicherweise nicht „Wormhole“- oder „Circuit“-Schalten unterstützen. (3) (Verbindungs-Blockierfreiheit) HPI-Plattformen basieren möglicherweise nicht auf adaptiven Strömen für blockierfreies Routing. Mit Plattformen, die sowohl VN0 als auch VN1 verwenden, können die 2 VNs zusammen für blockierfreies Routing verwendet werden; und (4) (VN0 für „Blatt“-Router). Bei HPI-Plattformen, die sowohl VNO als auch VN1 verwenden können, ist es zulässig, VNO für solche Komponenten zu verwenden, deren Router nicht zum Durchleiten benutzt werden; das heißt, eingehende Anschlüsse weisen HPI-Ziele auf, die an der betreffenden Komponente enden. In einem derartigen Fall können Pakete von unterschiedlichen VNs zu VN0 geleitet werden. Weitere Regeln (beispielsweise Bewegung von Paketen zwischen VN0 und VN1) können durch einen plattformabhängigen Routing-Algorithmus gesteuert werden.
  • Routing-Schritt: Ein Routing-Schritt bezeichnet bei einer Ausführungsform eine Routing-Funktion (RF) und eine Auswahlfunktion (SF). Die Routing-Funktion kann als Eingänge einen HPI-Anschluss Übernehmen, bei dem ein Paket eingeht, und eine Ziel-NodeID; ausgegeben wird dann ein 2-Tupel - die HPI-Anschlussnummer und das virtuelle Netzwerk - dem das Paket auf seinem Pfad zum Ziel folgen soll. Es ist zulässig, dass die Routing-Funktion zusätzlich von dem eingehenden virtuellen Netzwerk abhängig ist. Ferner ist es zulässig, dass der Routing-Schritt mehrere <port#, virtual network>-Paare ergibt. Die sich ergebenden Routing-Algorithmen werden als adaptiv bezeichnet. In einem derartigen Fall kann eine Auswahlfunktion SF ein einzelnes 2-Tupel basierend auf zusätzlicher Zustandsinformation wählen, die der Router aufweist (zum Beispiel kann bei adaptiven Routing-Algorithmen die Wahl eines bestimmten Anschlusses eines virtuellen Netzwerks von den lokalen Überlastungsbedingungen abhängen). Ein Routing-Schritt besteht bei einer Ausführungsform aus der Anwendung der Routing-Funktion und anschließend der Auswahlfunktion, um das/die 2-Tupel zu ergeben.
  • Router-Tabellen-Vereinfachungen: HPI-Plattformen können zulässige Untermengen der virtuellen Netzwerke implementieren. Derartige Untermengen vereinfachen den Umfang des mit der Routing-Tabelle assoziierten virtuellen Kanalpufferns (reduzierte Anzahl von Spalten) und der Arbitration am Router-Switch. Diese Vereinfachungen können zulasten von Plattformflexibilität und Merkmalen gehen. VNO und VN1 Können blockierfreie Netzwerke sein, die Blockierfreiheit in Abhängigkeit vom Nutzungsmodell entweder zusammen oder einzeln bereitstellen, normalerweise mit minimalen virtuellen Kanalressourcen, die ihnen zugewiesen sind. Flache Organisation der Routing-Tabelle kann eine Größe aufweisen, die der maximalen Anzahl von NodeIDs entspricht. Bei einer derartigen Organisation kann die Routing-Tabelle durch das Ziel-NodeID-Feld und möglicherweise durch das virtuelle Netzwerk-ID-Feld indexiert sein. Die Tabellenorganisation kann auch hierarchisch erstellt werden, wobei das Ziel-NodeID-Feld implementierungsabhängig in mehrere Unterfelder unterteilt ist. Bei einer Unterteilung in „lokale“ und „nicht lokale“ Teile ist der „nicht lokale“ Teil des Routings beispielsweise vor dem Routing des „lokalen“ Teils abgeschlossen. Der potenzielle Vorteil der Reduzierung der Tabellengröße an jedem Eingangsanschluss geht zulasten der potenziellen Kosten der zwangsweisen Zuweisung von NodeIDs zu HPI-Komponenten in einer hierarchischen Weise.
  • Routing-Algorithmus: Ein Routing-Algorithmus definiert bei einer Ausführungsform die Gruppe zulässiger Pfade von einem Quellmodul zu einem Zielmodul. Ein besonderer Pfad von der Quelle zum Ziel ist eine Untergruppe der zulässigen Pfade und wird erhalten als eine Reihe von Routing-Schritten, definiert über den Start mit dem Router an der Quelle, Durchlaufen von null oder mehreren zwischengeschalteten Routern und das Ende mit dem Router am Ziel. Man beachte, dass, auch wenn eine HPI-Struktur mehrere physische Pfade von einer Quelle zu einem Ziel aufweisen kann, die zulässigen Pfade die durch den Routing-Algorithmus definierten sind.
  • HPI Kohärenzprotokoll
  • Bei einer Ausführungsform ist das HPI Kohärenzprotokoll in der Schicht 1520a,b umfasst, um Agenten beim Cache-Speichern von Datenzeilen aus dem Speicher zu unterstützen. Ein Agent, der Speicherdaten zwischenspeichern möchte, kann das Kohärenzprotokoll verwenden, um die Datenzeile einzulesen, die in seinen Cache geladen werden soll. Ein Agent, der eine Datenzeile in seinem Cache ändern möchte, kann das Kohärenzprotokoll verwenden, um vor dem Modifizieren der Daten das Eigentum an der Zeile zu erlangen. Nach dem Ändern einer Zeile kann ein Agent den Protokollanforderungen folgen, indem er sie in seinem Cache hält, bis er die Zeile entweder zurück in den Speicher schreibt oder die Zeile in eine Antwort auf eine externe Anforderung aufnimmt. Schließlich kann ein Agent externe Anforderungen zum Ungültigmachen einer Zeile in seinem Cache erfüllen. Das Protokoll stellt die Kohärenz der Daten sicher, indem es die Regeln vorgibt, die alle Caching-Agenten befolgen können. Es stellt auch die Mittel für Agenten ohne Caches bereit, um Speicherdaten kohärent zu lesen und zu schreiben.
  • Zwei Bedingungen können durchgesetzt werden, um Transaktionen zu unterstützen, die das HPI Kohärenzprotokoll verwenden. Erstens pflegt das Protokoll die Datenkonsistenz, beispielsweise auf Adressbasis, unter den Daten in Caches der Agenten und zwischen diesen Daten und den Daten im Speicher. Informell kann Datenkonsistenz jede gültige Datenzeile im Cache eines Agenten bezeichnen, die einen zuletzt aktuellen Wert der Daten wiedergibt, und in einem Kohärenzprotokoll-Paket gesendete Daten geben den zuletzt aktuellen Wert der Daten zum Zeitpunkt des Sendens wieder. Wenn keine gültige Kopie der Daten im Cache oder in der Übertragung vorliegt, kann das Protokoll sicherstellen, dass der zuletzt aktualisierte Wert der Daten im Speicher vorliegt. Zweitens stellt das Protokoll klar definierte Commitment-Punkte für Anforderungen bereit. Commitment-Punkte für Lesevorgänge können angeben, wann die Daten nutzbar sind; und für Schreibvorgänge können sie angeben, wann die geschriebenen Daten global observierbar sind und durch nachfolgende Lesevorgänge geladen werden. Das Protokoll kann diese Commitment-Punkte sowohl für zwischenspeicherbare als auch für nicht zwischenspeicherbare (UC) Anforderungen im kohärenten Speicherraum unterstützen.
  • Das HPI Kohärenzprotokoll kann auch sicherstellen, dass der Weiterleitungsfortschritt von Kohärenzanforderungen durch einen Agenten zu einer Adresse im kohärenten Speicherraum erfolgt. Sicherlich können Transaktionen für den korrekten Systembetrieb schließlich ausgeführt und zurückgezogen werden. Das HPI Kohärenzprotokoll kann bei einigen Ausführungsformen auch keinen Ansatz eines erneuten Versuchs zum Auflösen von Konflikten bei der Ressourcenzuweisung aufweisen. Somit kann das Protokoll selbst definiert sein, um keine zirkulären Ressourcenabhängigkeiten zu enthalten, und Implementierungen können bei ihren Konzepten dafür ausgelegt sein, keine Abhängigkeiten einzuführen, die zu einer Blockierung führen können. Zusätzlich kann das Protokoll angeben, wo Konzepte in der Lage sind, angemessenen Zugriff auf Protokollressourcen bereitzustellen.
  • Logisch besteht das HPI-Kohärenzprotokoll bei einer Ausführungsform aus drei Teilen: Kohärenz- (oder Caching-)Agenten, Home-Agenten und der HPI-Verbindungsstruktur, die die Agenten verbindet. Kohärenzagenten und Home-Agenten arbeiten zusammen, um Datenkonsistenz durch Austausch von Nachrichten über die Verbindung zu erzielen. Die Verbindungsschicht 1510a,b und die dazugehörige Beschreibung stellen die Details der Verbindungsstruktur und der Einhaltung der hier erörterten Anforderungen des Kohärenzprotokolls bereit. (Es sei darauf hingewiesen, dass die Unterteilung in Kohärenzagenten und Home-Agenten im Interesse der Verdeutlichung erfolgt. Ein Konzept kann mehrere Agenten beider Typen in einem Anschluss enthalten oder auch Agentenverhalten in einer einzelnen Konzepteinheit kombinieren.)
  • Bei einer Ausführungsform nimmt HPI keine Vorabzuweisung von Ressourcen eines Home-Agenten vor. Hier weist ein Empfangsagent, der eine Anforderung empfängt, Ressourcen zu deren Abarbeitung zu. Ein Agent, der eine Anforderung sendet, weist Ressourcen für Antworten zu. In diesem Szenario kann HPI zwei generelle Regeln mit Bezug auf Ressourcenzuweisung befolgen. Erstens kann ein Agent, der eine Anforderung empfängt, für die Zuweisung der Ressource zu deren Abarbeitung zuständig sein. Zweitens kann ein Agent, der eine Anforderung erzeugt, für die Zuweisung von Ressourcen zum Verarbeiten von Antworten auf die Anforderung zuständig sein.
  • Die Zuweisung von Ressourcen kann auch erweitert werden auf HTID (zusammen mit RNID/RTID) in Snoop-Anforderungen, die potentielle Reduzierung der Verwendung eines Home-Agenten und das Weiterleiten von Antworten zur Unterstützung von Antworten an den Home-Agenten (und die Datenweiterleitung zum anfordernden Agenten).
  • Bei einer Ausführungsform werden Home-Agent-Ressourcen in Snoop-Anforderungen und das Weiterleiten von Antworten zum Unterstützen von Antworten an den Home-Agenten (und das Weiterleiten von Daten zum anfordernden Agenten) ebenfalls nicht vorab zugewiesen.
  • Bei einer Ausführungsform gibt es keine Vorabzuweisung der Fähigkeit der Home-Ressourcen zum „frühen“ Senden von CmpO, bevor der Home-Agent die Verarbeitung der Anforderungen abgeschlossen hat, wenn für den anfordernden Agenten die Wiederverwendung seiner RTID-Ressource sicher ist. Generelles Behandeln von Snoops mit ähnlicher RNID/RTID im System ist ebenfalls Teil des Protokolls.
  • Bei einer Ausführungsform wird die Konfliktauflösung unter Verwendung eines geordneten Antwortkanals durchgeführt. Ein Kohärenzagent verwendet RspCnflt als Anforderung für einen Home-Agenten zum Senden von FwdCnfltO, das mit dem CmpO (falls bereits geplant) für die konfliktbehaftete Anforderung des Kohärenzagenten geordnet wird.
  • Bei einer Ausführungsform unterstützt HPI die Auflösung über einen geordneten Antwortkanal. Ein Kohärenzagent verwendet Informationen von Snoop zur Unterstützung der Verarbeitung von FwdCnfltO, wobei keine „Typ“-Information und keine RTID zum Weiterleiten von Daten zum anfordernden Agenten vorliegt.
  • Bei einer Ausführungsform blockiert ein Kohärenzagent Weiterleitungen für Writeback-Anforderungen zum Aufrechterhalten von Datenkonsistenz. Er ermöglicht es dem Kohärenzagenten jedoch auch, eine Writeback-Anforderung zu verwenden, um nicht zwischenspeicherbare (UC) Daten zu übergeben, bevor sie in Vorwärtsrichtung verarbeitet werden, und es ermöglicht dem Kohärenzagenten das Zurückschreiben von partiellen Textzeilen statt eines Protokolls, das einen partiellen impliziten Writeback für Weiterleitungen ermöglicht.
  • Bei einer Ausführungsform wird eine Anforderung der Ungültigkeitserklärung eines Lesevorgangs (RdInv) Unterstützt, die Exclusive-state-Daten akzeptiert. Die Semantik nicht zwischenspeicherbarer (UC) Lesevorgänge weist das Entleeren modifizierter Daten in Speicher auf. Einige Architekturen erlaubten jedoch das in validieren von Lesevorgängen durch Weiterleiten von M Daten, wodurch der anfordernde Agent zum Bereinigen der Zeile gezwungen wurde, falls M Daten empfangen wurden. Der RdInv-Vorgang vereinfacht den Ablauf, erlaubt aber nicht das Weiterleiten von E Daten.
  • Bei einer Ausführungsform unterstützt HPI eine InvItoM-zu-IODC-Funktionalität. Ein InvItoM fordert exklusives Eigentum einer Cache-Zeile, ohne Daten zu empfangen und mit der Absicht, bald danach einen Writeback durchzuführen. Ein erforderlicher Cache-Zustand kann ein M Zustand und E Zustand oder beides sein.
  • Bei einer Ausführungsform unterstützt HPI einen WbFlush für persistente Speicherleerung. Eine Ausführungsform eines WbFlush ist weiter unten dargestellt. Er kann als ein Ergebnis einer persistenten Übergabe gesendet werden. Kann einen Schreibvorgang in persistenten Speicher entleeren.
  • Bei einer Ausführungsform unterstützt HPI zusätzliche Operationen wie SnpF für durch die Routing-Schicht erzeugte „Fanout“-Snoops. Einige Architekturen weisen keine explizite Unterstützung für Fanout-Snoops auf. Hier erzeugt ein HPI Home-Agent einzelne „Fanout“-Snoop-Anforderungen, und als Reaktion erzeugt die Routing-Schicht Snoops an alle Peer-Agenten im „Fanout-Kegel“. Der Home-Agent kann Snoop-Antworten von jedem der Agentenabschnitte erwarten.
  • Bei einer Ausführungsform unterstützt HPI zusätzliche Operationen wie SnpF für durch die Routing-Schicht erzeugte „Fanout“-Snoops. Einige Architekturen weisen keine explizite Unterstützung für Fanout-Snoops auf. Hier erzeugt ein HPI Home-Agent einzelne „Fanout“-Snoop-Anforderungen, und als Reaktion erzeugt die Routing-Schicht Snoops an alle Peer-Agenten im „Fanout-Kegel“. Der Home-Agent kann Snoop-Antworten von jedem der Agentenabschnitte erwarten.
  • Bei einer Ausführungsform unterstützt HPI ein explizites Writeback mit Cache-Push-Hint (WbPushMtoI). Bei einer Ausführungsform schreibt ein Kohärenzagent modifizierte Daten zurück mit einem Hint für den Home-Agenten, dass er die modifizierten Daten in einen „lokalen“ Cache schieben kann, wobei sie im M-Zustand gespeichert werden, ohne die Daten in Speicher zu schreiben.
  • Bei einer Ausführungsform kann ein Kohärenzagent den F-Zustand beibehalten, wenn geteilte Daten weitergeleitet werden. Bei einem Beispiel kann ein Kohärenzagent mit F-Zustand, der einen „Sharing“-Snoop oder Weiterleitungsvorgang nach einem derartigen Snoop erhält, den F-Zustand beibehalten, während der S-Zustand zum anfordernden Agenten gesendet wird.
  • Bei einer Ausführungsform können Protokoll Tabellen verschachtelt sein, wobei eine Tabelle auf eine andere Untertabelle in den Spalten „nächster Zustand“ verweist, und die verschachtelte Tabelle zusätzliche oder feinkörnigere Guards aufweisen kann, um anzugeben, welche Zeilen (Verhalten) zulässig sind.
  • Bei einer Ausführungsform verwenden Protokolltabellen Zeilenüberbrückung, um gleichermaßen zulässige Verhalten (Zeilen) anzugeben statt „Bias“-Bits hinzuzufügen, um unter den Verhaltensweisen auszuwählen.
  • Bei einer Ausführungsform sind Aktionstabellen organisiert für die Verwendung als Funktionalitäts-Engine für BFM (Validierungsumgebungs-Tool), sodass das BFM-Team nicht basierend auf der eigenen Interpretation eine eigene BFM-Engine erzeugen muss.
  • HPI Nicht kohärentes Protokoll
  • Bei einer Ausführungsform unterstützt HPI nichtkohärente Transaktionen. Als ein Beispiel wird als nicht kohärente Transaktion ein Vorgang bezeichnet, der nicht am HPI Kohärenzprotokoll beteiligt ist. Nicht kohärente Transaktionen umfassen Anforderungen und ihre entsprechenden Abschlüsse. Bei einigen speziellen Transaktionen einen Übertragungsmechanismus.
  • Die vorstehende Erörterung umreißt Merkmale von einer oder mehreren Ausführungsformen des hier offenbarten Gegenstands. Diese Ausführungsformen sind bereitgestellt, um Personen mit üblichen Kenntnissen auf diesem Gebiet (Fachleuten) ein besseres Verständnis verschiedener Aspekte der vorliegenden Offenbarung zu ermöglichen. Bestimmte bereits bekannte Begriffe sowie zugrunde liegende Technologien und/oder Standards können ohne detaillierte Beschreibung angegeben sein. Es wird vorausgeschickt, dass Fachleute Hintergrundwissen oder Information zu diesen Technologien und Standards besitzen oder Zugriff darauf haben, die für die Umsetzung der Lehren der vorliegenden Spezifikation ausreichend sind.
  • Fachleute werden erkennen, dass sie die vorliegende Offenbarung leicht als Basis zum Gestalten oder Abändern anderer Prozesse, Strukturen oder Variationen zur Durchführung der gleichen Zwecke und/oder zum Erzielen der gleichen Vorteile der hier eingeführten Ausführungsformen verwenden können. Fachleute werden auch erkennen, dass derartige äquivalente Konstruktionen nicht vom Grundgedanken und Umfang der vorliegenden Offenbarung abweichen und dass sie verschiedene Änderungen, Substitutionen und Abänderungen hieran vornehmen können, ohne vom Grundgedanken und Umfang der vorliegenden Offenbarung abzuweichen.
  • In der vorstehenden Beschreibung sind bestimmte Aspekte von einigen oder allen Ausführungsformen detaillierter beschrieben als dies zur Umsetzung der beigefügten Ansprüche unbedingt erforderlich ist. Diese Details werden lediglich als nicht einschränkendes Beispiel bereitgestellt zum Zweck des Bereitstellens von Kontext und zur Veranschaulichung der offenbarten Ausführungsformen. Derartige Details sollen nicht so verstanden werden, dass sie erforderlich sind, und sie sollen nicht als Einschränkungen in die Ansprüche „hineingelesen“ werden. Der Wortlaut kann sich auf „eine Ausführungsform“ oder „Ausführungsformen“ beziehen. Diese Formulierungen und beliebige weitere Verweise auf Ausführungsformen sollen weitläufig so verstanden werden, dass sie eine beliebige Kombination von einer oder mehreren Ausführungsformen bezeichnen. Ferner können die mehreren bei einer besonderen „Ausführungsform“ offenbarten Merkmale genauso gut über mehrere Ausführungsformen verbreitet sein. Falls beispielsweise die Merkmale 1 und 2 in „einer Ausführungsform“ offenbart sind, kann Ausführungsform A das Merkmal 1 aufweisen, wobei ihr das Merkmal 2 fehlt, während Ausführungsform B das Merkmal 2 aufweisen kann, wobei ihr das Merkmal 1 fehlt.
  • Diese Spezifikation kann Illustrationen im Blockdiagramm-Format bereitstellen, wären bestimmte Merkmale in separaten Blöcken offenbart sind. Dies sollte weitläufig verstanden werden, um zu offenbaren, wie verschiedene Merkmale interagieren, wobei aber nicht beabsichtigt ist, dass impliziert sein soll, dass die betreffenden Merkmale notwendigerweise in separater Hardware oder Software ausgeführt sein müssen. Falls ein einzelner Block mehr als ein Merkmal im gleichen Block offenbart, müssen ferner die betreffenden Merkmale nicht notwendigerweise in der gleichen Hardware und/oder Software ausgeführt sein. Beispielsweise könnte ein Rechner-„Speicher“ unter bestimmten Umständen verteilt oder zwischen mehreren Ebenen von Cache oder lokalem Speicher, Hauptspeicher, batteriegesichertem flüchtigen Speicher und verschiedenen Formen von persistentem Speicher wie einer Festplatte, einem Speicher-Server, einer optischen Disk, einem Bandlaufwerk oder dergleichen abgebildet sein. Bei bestimmten Ausführungsformen können einige der Komponenten ausgelassen oder konsolidiert sein. In einem generellen Sinn können die in den Figuren dargestellten Anordnungen in ihren Wiedergaben logischer sein, während eine physische Architektur verschiedene Permutationen, Kombinationen und/oder Hybridformen dieser Elemente aufweisen kann. Zahllose mögliche Gestaltungskonfigurationen können eingesetzt werden, um die hier umrissenen betrieblichen Ziele zu erreichen. Dementsprechend weist die dazugehörige Infrastruktur eine Vielzahl von Ersatzanordnungen, Gestaltungsformen, Gerätemöglichkeiten, Hardwarekonfigurationen, Softwareimplementierungen und Ausrüstungsoptionen auf.
  • Hier können Verweise erfolgen auf ein rechnerlesbares Medium, das ein materielles und nicht vorübergehendes rechnerlesbares Medium sein kann. Entsprechend der Verwendung in dieser Spezifikation und im Verlauf der Ansprüche ist ein „rechnerlesbares Medium“ so zu verstehen, dass es ein oder mehrere rechnerlesbare Medien desgleichen oder unterschiedlicher Typen aufweist. Ein rechnerlesbares Medium kann als nicht einschränkendes Beispiel ein optisches Laufwerk (z. B. CD/DVD/Blu-Ray), eine Festplatte, ein Solid-State-Laufwerk, einen Flash-Speicher oder ein anderes nicht flüchtiges Medium aufweisen. Ein rechnerlesbares Medium könnte auch ein Medium aufweisen wie einen Nur-LeseSpeicher (ROM), eine FPGA oder einen ASIC, ausgelegt zum Durchführen der gewünschten Anweisungen; gespeicherte Anweisungen zum Programmieren einer FPGA oder eines ASIC zum Durchführen der gewünschten Anweisungen; einen Block geistigen Eigentums (IP), der in Hardware in anderen Schaltungen integriert sein kann, oder Anweisungen, direkt codiert in Hardware oder Mikrocode auf einem Prozessor wie einem Mikroprozessor, einem digitalen Signalprozessor (DSP), einer Mikrosteuerung oder in einer beliebigen anderen geeigneten Komponente, einer Einrichtung, einem Element oder einem Objekt, wo dies zweckmäßig ist und auf besonderen Bedürfnissen beruht. Ein nicht vorübergehendes Speichermedium soll hier ausdrücklich beliebige nicht vorübergehende spezielle oder programmierbare Hardware umfassen, ausgelegt zum Bereitstellen der offenbarten Operationen oder zum Veranlassen eines Prozessors zum Durchführen der offenbarten Operationen.
  • Verschiedene Elemente können „kommunikativ“, „elektrisch“, „mechanisch“ oder sonst wie im Verlauf dieser Spezifikation und der Ansprüche miteinander „gekoppelt“ sein. Eine derartige Kopplung kann direkt vorliegen, eine Punkt-zu-Punkt-Kopplung sein, oder sie kann zwischengeschaltete Einrichtungen aufweisen. Beispielsweise können zwei Einrichtungen über eine Steuerung, die die Kommunikation ermöglicht, miteinander kommunikativ gekoppelt sein. Einrichtungen können über zwischengeschaltete Einrichtungen wie Signalverstärker, Spannungsteiler oder Puffer elektrisch miteinander gekoppelt sein. Mechanisch gekoppelte Einrichtungen können indirekt mechanisch gekoppelt sein.
  • Beliebige hier offenbarte „Module“ oder „Engines“ können sich auf Software, einen Softwarestapel, eine Kombination aus Hardware, Firmware und/oder Software, eine zum Durchführen der Funktion der Engine oder des Moduls ausgelegte Schaltung oder ein beliebiges rechnerlesbares Medium entsprechend der vorstehenden Offenbarung beziehen oder diese aufweisen. Derartige Module oder Engines können unter geeigneten Umständen auf oder in Verbindung mit einer Hardwareplattform bereitgestellt sein, die Hardware-Rechenressourcen aufweist wie einen Prozessor, Arbeitsspeicher, Speicher, Verbindungen, Netzwerke und Netzwerkschnittstellen, Beschleuniger oder andere geeignete Hardware. Eine derartige Hardwareplattformen kann als einzelne monolithische Einrichtung (z. B. in einem PC-Formfaktor) bereitgestellt sein oder mit Elementen oder Teilen der verteilten Funktion (z. B. einem „Verbundknoten“ in einem Hochleistungs-Rechenzentrum, wo Rechnen, Arbeitsspeicher, Speicher und andere Ressourcen dynamisch zugewiesen werden können und nicht zueinander lokal sein müssen).
  • Hier können Ablaufdiagramme, ein Signalflussdiagramm oder andere Darstellungen offenbart sein, die in einer bestimmten Reihenfolge ausgeführte Operationen zeigen. Sofern nicht ausdrücklich anders angegeben oder sofern nicht in einem besonderen Kontext erforderlich, ist die Reihenfolge lediglich als ein nicht einschränkendes Beispiel zu verstehen. Ferner können in Fällen, wobei eine Operation so gezeigt ist, dass sie auf eine andere folgt, weitere beteiligte Operationen ebenfalls auftreten, die damit in Beziehung stehen können oder nicht. Einige Operationen können auch gleichzeitig oder parallel zueinander durchgeführt werden. In Fällen, wo eine Operation als basierend auf oder entsprechend einem anderen Element oder einer Operation angegeben wird, ist dies so zu verstehen, dass impliziert wird, dass die Operation mindestens teilweise auf dem anderen Element oder der Operation basiert oder mindestens teilweise dementsprechend abläuft. Dies Ist nicht so auszulegen, dass impliziert wird, dass die Operation allein oder ausschließlich auf dem Element oder der Operation beruht oder allein oder ausschließlich dementsprechend abläuft.
  • Beliebige hier offenbarte Hardwareelemente können vollständig oder teilweise leicht in einem System-auf-einem-Chip (SoC) bereitgestellt werden, aufweisend ein Paket einer zentralen Verarbeitungseinheit (CPU). Ein SoC stellt eine integrierte Schaltung (IC) dar, die Komponenten eines Rechners oder eines anderen elektronischen Systems in einen einzelnen Chip integriert. Somit können beispielsweise Client-Einrichtungen oder Server-Einrichtungen ganz oder teilweise in einem SoC bereitgestellt sein. Das SoC kann digitale, analoge, Mischsignal- und Hochfrequenzfunktionen enthalten, die sämtlich auf einem einzelnen Chipsubstrat bereitgestellt sein können. Andere Ausführungsformen können ein Multichipmodul (MCM) aufweisen, mit einer Mehrzahl von in einem einzelnen elektronischen Paket positionierten Chips und ausgelegt zum engen Interagieren miteinander durch das elektronische Paket.
  • In einem allgemeinen Sinn kann jeder geeignet ausgelegte Schaltkreis oder Prozessor beliebige Typen von Anweisungen in Zusammenhang mit den Daten zum Erzielen der hier angeführten Operationen ausführen. Ein hier offenbarter Prozessor könnte ein Element oder einen Artikel (beispielsweise Daten) aus einem Zustand oder Ding in einen anderen Zustand oder ein Ding umwandeln. Ferner kann die nachverfolgte, gesendete, empfangene oder in einem Prozessor gespeicherte Information in einer beliebigen Datenbank, einem Register, einer Tabelle, einem Cache, einer Warteschlange, einer Steuerungsliste oder Speicherungsstruktur, basierend auf besonderen Bedürfnissen und Implementierungen bereitgestellt werden, auf die sämtlich In einem beliebigen geeigneten Zeitrahmen verwiesen werden kann. Beliebige der hier offenbarten Arbeitsspeicher- oder Speicherelemente Sollen so ausgelegt werden, dass sie durch die weitgefassten Begriffe „Arbeitsspeicher“ oder „Speicher“ gegebenenfalls umfasst werden.
  • Rechnerpogrammlogik, die die hier beschriebene Funktionalität oder einen Teil davon implementiert, ist in verschiedenen Formen ausgeführt, aufweisend, aber in keiner Weise beschränkt auf, eine Quellcodeform, eine rechnerausführbare Form, Maschinenanweisungen oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (zum Beispiel durch einen Assembler, Compiler, Linker oder Lokator erzeugte Formen). Bei einem Beispiel weist Quellcode eine Reihe von Rechnerprogrammanweisungen auf, implementiert in verschiedenen Programmiersprachen, wie einen Objektcode, eine Assembler-Sprache oder eine Sprache höherer Ebene wie OpenCL, FORTRAN, C, C++, JAVA oder HTML Zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen oder in Hardwarebeschreibungssprachen wie Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer rechnerausführbaren Form (z. B. über einen Interpreter) vorliegen, oder der Quellcode kann (z. B. über einen Übersetzer, Assembler oder Compiler) in eine rechnerausführbare Form umgewandelt oder in eine Zwischenform wie einen Byte-Code umgewandelt werden. Wo dies zweckmäßig ist, können beliebige vorstehende Elemente verwendet werden zum Einrichten oder Beschreiben geeigneter diskreter oder integrierter Schaltungen, seien sie sequenziell, kombinatorisch, Zustandsmaschinen oder sonstiges.
  • Bei einer beispielhaften Ausführungsform kann eine beliebige Anzahl elektrischer Schaltungen der FIGUREN auf einer Platine einer dazugehörigen elektronischen Einrichtung implementiert sein. Die Platine kann eine allgemeine Schaltungsplatine sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Einrichtung aufnehmen kann und ferner Anschlüsse für andere Peripherieeinrichtungen bereitstellen kann. Beliebige geeignete Prozessoren und Speicher können in geeigneter Form mit der Platine gekoppelt sein, basierend auf besonderen Konfigurationsbedürfnissen, Verarbeitungserfordernissen und Rechenkonzepten. Man beachte, dass bei den zahlreichen hier bereitgestellten Beispielen Interaktion anhand von zwei, drei, vier oder mehr elektrischen Komponenten beschrieben sein kann. Dies erfolgt jedoch nur als Beispiel und zu Zwecken der Verdeutlichung. Es versteht sich, dass das System konsolidiert oder in beliebiger geeigneter Weise neu ausgelegt werden kann. Zusammen mit ähnlichen Gestaltungsalternativen können beliebige der dargestellten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, die sämtlich unter den weitläufigen Umfang dieser Spezifikation fallen.
  • Zahlreiche andere Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen können für Fachleute auf diesem Gebiet ersichtlich sein, und die vorliegende Offenbarung soll alle derartigen Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen umfassen, die in den Schutzumfang der beigefügten Ansprüche fallen. Um das United States Patent and Trademark Office (USPTO) und auch Leser von aufgrund dieser Anmeldung erteilten Patenten bei der Auslegung der hier beigefügten Ansprüche zu unterstützen, möchte der Antragsteller anmerken, dass der Antragsteller (a) nicht beabsichtigt, dass beliebige der beigefügten Ansprüche Paragraf sechs (6) von 35 U.S.C. Artikel 112 (Prä-AIA) oder Absatz (f) des gleichen Artikels (post-AIA) in der Fassung zum Datum der diesbezüglichen Einreichung beanspruchen, sofern die Worte „mittels“ oder „Schritte für“ in den betreffenden Ansprüchen spezifisch verwendet werden; und (b) nicht beabsichtigt, diese Offenbarung durch eine beliebige Angabe in der Spezifikation in einer Weise einzuschränken, die ansonsten in den beigefügten Ansprüchen nicht ausdrücklich wiedergegeben ist.
  • Implementierungsbeispiele
  • Die folgenden Beispiele sind zur Veranschaulichung bereitgestellt.
  • Beispiel 1 weist eine Vorrichtung auf, umfassend: eine Mehrzahl von Verbindungen, um eine Beschleunigereinrichtung mit einer Host-Einrichtung kommunikativ zu koppeln; und ein Adressübersetzungsmodul (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung nur mit einer der Mehrzahl von Verbindungen assoziiert sein soll.
  • Beispiel 2 weist die Vorrichtung von Beispiel 1 auf, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
  • Beispiel 3 weist die Vorrichtung von Beispiel 2 auf, wobei die ATU eine verteilte ATU ist.
  • Beispiel 4 weist die Vorrichtung von Beispiel 2 auf, wobei jede der Mehrzahl von Verbindungen dafür ausgelegt ist, eine Speicherseite zu durchlaufen.
  • Beispiel 5 weist die Vorrichtung von Beispiel 1 auf, wobei das ATM ein Adressübersetzungscache (ATC) ist.
  • Beispiel 6 weist die Vorrichtung von Beispiel 5 auf, wobei der ATC ein verteilter ATC ist.
  • Beispiel 7 weist die Vorrichtung von Beispiel 5 auf, wobei nur die mit der Adressabbildung assoziierte Verbindung eine Speicherseite durchlaufen soll.
  • Beispiel 8 weist die Vorrichtung von Beispiel 1 auf, wobei die Mehrzahl von Verbindungen von einem einzelnen Typ ist.
  • Beispiel 9 weist die Vorrichtung von Beispiel 8 auf, wobei der Typ ein „Peripheral Component Interconnect Express“ (PCIe)-Bus ist.
  • Beispiel 10 weist die Vorrichtung von Beispiel 1 auf, wobei die Mehrzahl von Verbindungen von mindestens zwei Typen ist.
  • Beispiel 11 weist die Vorrichtung von Beispiel 10 auf, wobei die mindestens zwei Typen einen „Peripheral Component Interconnect Express“ (PCIe)-Bus und einen „Ultra-Path Interconnect“ (UPI)-Bus umfassen.
  • Beispiel 12 weist die Vorrichtung von Beispiel 1 auf, wobei die Beschleunigereinrichtung eine Mehrzahl von mit einer einzelnen Adressdomäne verbundenen Beschleunigereinrichtungen umfasst.
  • Beispiel 13 weist die Vorrichtung von Beispiel 1 auf, wobei das ATM ferner eine Übersetzung von einer verschachtelten GPA zu einer virtuellen Gastadresse (GVA) bereitstellen soll.
  • Beispiel 14 weist einen Block geistigen Eigentums (IP) auf, um die Vorrichtung nach einem der Beispiele 1-13 bereitzustellen.
  • Beispiel 15 weist eine Beschleunigereinrichtung auf, umfassend die Vorrichtung nach einem der Beispiele 1-13.
  • Beispiel 16 weist die Beschleunigereinrichtung von Beispiel 15 auf, wobei die Beschleunigereinrichtung ein vor Ort programmierbares Gate-Array (FPGA) umfasst.
  • Beispiel 17 weist die Beschleunigereinrichtung von Beispiel 15 auf, wobei die Beschleunigereinrichtung einen anwendungsspezifischen integrierten Schaltkreis (ASIC) umfasst.
  • Beispiel 18, weist die Beschleunigereinrichtung von Beispiel 15 auf, wobei die Beschleunigereinrichtung einen Coprozessor umfasst.
  • Beispiel 19 weist ein Rechensystem auf, umfassend den Beschleuniger von Beispiel 15 und einen Host-Prozessor, wobei der Host-Prozessor eine Adressübersetzungseinheit auf dem Die zumindest teilweise deaktivieren soll.
  • Beispiel 20 weist das Rechensystem aus Beispiel 19 auf, wobei der Prozessor die Adressübersetzungseinheit vollständig deaktivieren soll.
  • Beispiel 21 weist das Rechensystem aus Beispiel 19 auf, wobei der Prozessor die alle Zeilen der Adressübersetzungseinheit auf dem Die mit Ausnahme von einer deaktivieren soll.
  • Beispiel 22 weist ein oder mehrere materielle nicht vorübergehende Speichermedien auf, die darauf gespeicherte Anweisungen aufweisen zum Bereitstellen einer Mehrzahl von Verbindungen, um eine Beschleunigereinrichtung mit einer Host-Einrichtung kommunikativ zu koppeln; und zum Bereitstellen eines Adressübersetzungsmoduls (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung nur mit einer der Mehrzahl von Verbindungen assoziiert sein soll.
  • Beispiel 23 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
  • Beispiel 24 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 23 auf, wobei die ATU eine verteilte ATU ist.
  • Beispiel 25 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 23 auf, wobei jede der Mehrzahl von Verbindungen dafür ausgelegt ist, eine Speicherseite zu durchlaufen.
  • Beispiel 26 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei das ATM ein Adressübersetzungscache (ATC) ist.
  • Beispiel 27 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 26 auf, wobei der ATC ein verteilter ATC ist.
  • Beispiel 28 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 26 auf, wobei nur die mit der Adressabbildung assoziierte Verbindung eine Speicherseite durchlaufen soll.
  • Beispiel 29 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei die Mehrzahl von Verbindungen von einem einzelnen Typ ist.
  • Beispiel 30 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 29 auf, wobei der Typ ein „Peripheral Component Interconnect Express“ (PCIe)-Bus ist.
  • Beispiel 31 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei die Mehrzahl von Verbindungen von mindestens zwei Typen ist.
  • Beispiel 32 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 31 auf, wobei die mindestens zwei Typen einen „Peripheral Component Interconnect Express“ (PCIe)-Bus und einen „Ultra-Path Interconnect“ (UPI)-Bus umfassen.
  • Beispiel 33 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei die Beschleunigereinrichtung eine Mehrzahl von mit einer einzelnen Adressdomäne verbundenen Beschleunigereinrichtungen umfasst.
  • Beispiel 34 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von Beispiel 22 auf, wobei das ATM ferner eine Übersetzung von einer verschachtelten GPA zu einer virtuellen Gastadresse (GVA) bereitstellen soll.
  • Beispiel 35 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von einem der Beispiele 22-34 auf, wobei die Anweisungen Befehle umfassen zum Bereitstellen eines Blocks geistigen Eigentums (IP).
  • Beispiel 36 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von einem der Beispiele 22-34 auf, wobei die Anweisungen Befehle zum Bereitstellen eines vor Ort programmierbaren Gate-Arrays (FPGA) umfassen.
  • Beispiel 37 weist das eine oder die mehreren materiellen nicht vorübergehenden Speichermedien von einem der Beispiele 22-34, auf, wobei die Anweisungen Befehle zum Bereitstellen eines anwendungsspezifischen integrierten Schaltkreises (ASIC) umfassen.
  • Beispiel 38 weist ein rechnerimplementiertes Verfahren zum Bereitstellen einer einzelnen Adressdomäne für eine Mehrzahl von Verbindungen auf, umfassend kommunikatives Koppeln der Mehrzahl von Verbindungen mit einer Beschleunigereinrichtung und einer Host-Einrichtung; und zum Bereitstellen eines Adressübersetzungsmoduls (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung nur mit einer der Mehrzahl von Verbindungen assoziiert sein soll.
  • Beispiel 39 weist das Verfahren von Beispiel 38 auf, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
  • Beispiel 40 weist das Verfahren von Beispiel 39 auf, wobei die ATU eine verteilte ATU ist.
  • Beispiel 41 weist das Verfahren von Beispiel 39 auf, wobei jede der Mehrzahl von Verbindungen dafür ausgelegt ist, eine Speicherseite zu durchlaufen.
  • Beispiel 42 weist das Verfahren von Beispiel 38 auf, wobei das ATM ein Adressübersetzungscache (ATC) ist.
  • Beispiel 43 weist das Verfahren von Beispiel 42 auf, wobei der ATC ein verteilter ATC ist.
  • Beispiel 44 weist das Verfahren von Beispiel 42 auf, wobei nur die mit der Adressabbildung assoziierte Verbindung eine Speicherseite durchlaufen soll.
  • Beispiel 45 weist das Verfahren von Beispiel 38 auf, wobei die Mehrzahl von Verbindungen von einem einzelnen Typ ist.
  • Beispiel 46 weist das Verfahren von Beispiel 42 auf, wobei der Typ ein „Peripheral Component Interconnect Express“ (PCIe)-Bus ist.
  • Beispiel 47 weist das Verfahren von Beispiel 38 auf, wobei die Mehrzahl von Verbindungen von mindestens zwei Typen ist.
  • Beispiel 48 weist das Verfahren von Beispiel 38 auf, wobei die mindestens zwei Typen einen „Peripheral Component Interconnect Express“ (PCIe)-Bus und einen „Ultra-Path Interconnect“ (UPI)-Bus umfassen.
  • Beispiel 49 weist das Verfahren von Beispiel 38 auf, wobei die Beschleunigereinrichtung eine Mehrzahl von mit einer einzelnen Adressdomäne verbundenen Beschleunigereinrichtungen umfasst.
  • Beispiel 50 weist die Vorrichtung von Beispiel 38 auf, wobei das ATM ferner eine Übersetzung von einer verschachtelten GPA zu einer virtuellen Gastadresse (GVA) bereitstellen soll.
  • Beispiel 51 weist eine Vorrichtung auf, umfassend Mittel zum Durchführen des Verfahrens nach einem der Beispiele 38-50.
  • Beispiel 52 weist die Vorrichtung von Beispiel 51 auf, wobei die Mittel einen Block geistigen Eigentums (IP) umfassen.
  • Beispiel 53 weist eine Beschleunigereinrichtung auf, umfassend die Vorrichtung nach Beispiel 51.
  • Beispiel 54 weist die Beschleunigereinrichtung von Beispiel 53 auf, wobei die Beschleunigereinrichtung ein vor Ort programmierbares Gate-Array (FPGA) umfasst.
  • Beispiel 55 weist die Beschleunigereinrichtung von Beispiel 53 auf, wobei die Beschleunigereinrichtung einen anwendungsspezifischen integrierten Schaltkreis (ASIC) umfasst.
  • Beispiel 56 weist die Beschleunigereinrichtung von Beispiel 53 auf, wobei die Beschleunigereinrichtung einen Coprozessor umfasst.
  • Beispiel 57 weist ein Rechensystem auf, umfassend den Beschleuniger von Beispiel 53 und einen Host-Prozessor, wobei der Host-Prozessor eine Adressübersetzungseinheit auf dem Die zumindest teilweise deaktivieren soll.
  • Beispiel 58 weist das Rechensystem aus Beispiel 57 auf, wobei der Prozessor die Adressübersetzungseinheit vollständig deaktivieren soll.
  • Beispiel 59 weist das Rechensystem aus Beispiel 57 auf, wobei der Prozessor alle Zeilen der Adressübersetzungseinheit auf dem Die mit Ausnahme von einer deaktivieren soll.

Claims (26)

  1. Vorrichtung, umfassend: eine Mehrzahl von Verbindungen zum kommunikativen Koppeln einer Beschleunigereinrichtung mit einer Host-Einrichtung; und ein Adressübersetzungsmodul (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung mit nur einer der Mehrzahl von Verbindungen assoziiert sein soll.
  2. Vorrichtung nach Anspruch 1, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
  3. Vorrichtung nach Anspruch 2, wobei die ATU eine verteilte ATU ist.
  4. Vorrichtung nach Anspruch 2, wobei jede der Mehrzahl von Verbindungen zum Durchlaufen einer Speicherseite ausgelegt ist.
  5. Vorrichtung nach Anspruch 1, wobei das ATM ein Adressübersetzungscache (ATC) ist.
  6. Vorrichtung nach Anspruch 5, wobei der ATC ein verteilter ATC ist.
  7. Vorrichtung nach Anspruch 5, wobei die Verbindung ein Protokoll einhält und nur das Protokoll der mit der Adressabbildung assoziierten Verbindung einen Durchlauf einer Speicherseite auslösen darf.
  8. Vorrichtung nach Anspruch 1, wobei die Mehrzahl von Verbindungen zu einem einzelnen Typ gehört.
  9. Vorrichtung nach Anspruch 8, wobei der Typ ein „Peripheral Component Interconnect Express“ (PCIe)-Bus ist.
  10. Vorrichtung nach Anspruch 1, wobei die Mehrzahl von Verbindungen zu mindestens zwei Typen gehört.
  11. Vorrichtung nach Anspruch 10, wobei einer der mindestens zwei Typen einen mit einem „Peripheral Component Interconnect Express“ (PCIe)-basierten Protokoll kompatiblen Bus umfasst.
  12. Vorrichtung nach Anspruch 1, wobei die Beschleunigereinrichtung eine Mehrzahl von mit einer einzelnen Adressdomäne verbundenen Beschleunigereinrichtungen umfasst.
  13. Vorrichtung nach Anspruch 1, wobei das ATM ferner eine Übersetzung von verschachtelter GPA zu virtueller Gastadresse (GVA) bereitstellen soll.
  14. Block geistigen Eigentums (IP) zum Bereitstellen der Vorrichtung nach einem der Ansprüche 1-13.
  15. Beschleunigereinrichtung, umfassend die Vorrichtung nach einem der Ansprüche 1-13.
  16. Beschleunigervorrichtung nach Anspruch 15, wobei die Beschleunigereinrichtung eine vor Ort programmierbare Gate-Anordnung (FPGA) umfasst.
  17. Beschleunigereinrichtung nach Anspruch 15, wobei die Beschleunigereinrichtung einen anwendungsspezifischen integrierten Schaltkreis (ASIC) umfasst.
  18. Beschleunigereinrichtung nach Anspruch 15, wobei die Beschleunigereinrichtung einen Coprozessor umfasst.
  19. Rechensystem, umfassend den Beschleuniger von Anspruch 15 und einen Hostprozessor, wobei der Hostprozessor die Adressübersetzungseinheit auf dem Die zumindest teilweise deaktivieren soll.
  20. Rechensystem nach Anspruch 19, wobei der Prozessor die Adressübersetzungseinheit vollständig deaktivieren soll.
  21. Rechensystem nach Anspruch 19, wobei der Prozessor alle Zeilen der Adressübersetzungseinheit auf dem Die mit Ausnahme einer Zeile deaktivieren soll.
  22. Ein oder mehrere materielle, nicht vorübergehende Speichermedien, aufweisend darauf gespeicherte Anweisungen zum Bereitstellen einer Mehrzahl von Verbindungen zum kommunikativen Koppeln einer Beschleunigereinrichtung mit einer Host-Einrichtung; und Bereitstellen eines Adressübersetzungsmoduls (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gast-Adressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung mit nur einer der Mehrzahl von Verbindungen assoziiert sein soll.
  23. Ein oder mehrere materielle, nicht vorübergehende Speichermedien nach Anspruch 22, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
  24. Ein oder mehrere materielle, nicht vorübergehende Speichermedien nach Anspruch 22, wobei das ATM ein Adressübersetzungscache (ATC) ist.
  25. Rechnerimplementiertes Verfahren zum Bereitstellen einer einzelnen Adressdomäne für eine Mehrzahl von Verbindungen, umfassend: kommunikatives Koppeln der Mehrzahl von Verbindungen mit einer Beschleunigereinrichtung und einer Host-Einrichtung; und Bereitstellen eines Adressübersetzungsmoduls (ATM) zum Bereitstellen von Adressabbildung zwischen physischen Host-Adressräumen (HPA) und physischen Gastadressräumen (GPA) für die Beschleunigereinrichtung, wobei die Mehrzahl von Einrichtungen eine gemeinsame GPA-Domäne teilt und wobei Adressabbildung mit nur einer der Mehrzahl von Verbindungen assoziiert sein soll.
  26. Verfahren nach Anspruch 25, wobei das ATM eine Adressübersetzungseinheit (ATU) ist.
DE102018127751.2A 2017-12-09 2018-11-07 Einheitlicher Adressraum für mehrere Verbindungen Pending DE102018127751A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/836,854 2017-12-09
US15/836,854 US11372787B2 (en) 2017-12-09 2017-12-09 Unified address space for multiple links

Publications (1)

Publication Number Publication Date
DE102018127751A1 true DE102018127751A1 (de) 2019-06-13

Family

ID=65038672

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018127751.2A Pending DE102018127751A1 (de) 2017-12-09 2018-11-07 Einheitlicher Adressraum für mehrere Verbindungen

Country Status (2)

Country Link
US (1) US11372787B2 (de)
DE (1) DE102018127751A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI697161B (zh) * 2018-03-09 2020-06-21 町洋企業股份有限公司 含有多數功能模組的系統及其功能模組編址方法
US10698766B2 (en) * 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing
US10802995B2 (en) * 2018-07-26 2020-10-13 Xilinx, Inc. Unified address space for multiple hardware accelerators using dedicated low latency links
US10866278B2 (en) * 2019-03-28 2020-12-15 Intel Corporation Methods and apparatus for performing design for debug via protocol interface
US10698842B1 (en) * 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
US11973650B2 (en) * 2019-04-25 2024-04-30 Liqid Inc. Multi-protocol communication fabric control
US11683372B2 (en) 2020-11-24 2023-06-20 International Business Machines Corporation Virtualized fabric management server for storage area network
US11709699B2 (en) * 2020-11-24 2023-07-25 International Business Machines Corporation Virtualized fabric name server for storage area network
US20230246962A1 (en) * 2022-02-02 2023-08-03 Oracle International Corporation Configuring a network-link for establishing communication between different cloud environments

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7315900B1 (en) * 2001-06-20 2008-01-01 Juniper Networks, Inc. Multi-link routing
US7734797B2 (en) * 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7505401B2 (en) * 2005-01-31 2009-03-17 International Business Machines Corporation Method, apparatus and program storage device for providing mutual failover and load-balancing between interfaces in a network
US7868897B2 (en) * 2006-06-30 2011-01-11 Intel Corporation Apparatus and method for memory address re-mapping of graphics data
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US8275971B2 (en) * 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US20120246381A1 (en) * 2010-12-14 2012-09-27 Andy Kegel Input Output Memory Management Unit (IOMMU) Two-Layer Addressing
US8843669B2 (en) * 2011-09-09 2014-09-23 Microsoft Corporation Guest partition high CPU usage mitigation when performing data transfers in a guest partition
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
US8701152B2 (en) * 2012-03-11 2014-04-15 Broadcom Corporation Cross layer coordinated channel bonding
US20130235884A1 (en) * 2012-03-11 2013-09-12 Broadcom Corporation Mixed serial and parallel stream channel bonding architecture
US9479196B2 (en) * 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US10048881B2 (en) * 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities

Also Published As

Publication number Publication date
US11372787B2 (en) 2022-06-28
US20190034367A1 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE112013001360B4 (de) Vorrichtung, verfahren und system zum bereitstellen einer kopplungsstruktur-linkschicht
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
US9331958B2 (en) Distributed packet switching in a source routed cluster server
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE102020122301A1 (de) Konfigurationsschema für link-herstellung
US20140188996A1 (en) Raw fabric interface for server system with virtualized interfaces
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112015006961T5 (de) Verbindungsfehlerdetektion in mehrfachchipgehäusen
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE102018005753A1 (de) Serdes link training
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE112016003222T5 (de) Hochleistungsfähiger repeater
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
US20210311800A1 (en) Connecting accelerator resources using a switch
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102018129112A1 (de) Systemdecoder für Trainingsbeschleuniger
DE112018007780T5 (de) Transparente verschlüsselung

Legal Events

Date Code Title Description
R012 Request for examination validly filed