-
Technisches Gebiet
-
Ausführungsformen der vorliegenden Offenbarung betreffen allgemein den Sektor der Computersysteme. Ausführungsformen betreffen spezieller Vorrichtungen und Verfahren zum Vermitteln von einer oder mehreren Knotenressourcen, zu denen zentrale Verarbeitungseinheiten (CPUs) gehören können, an eine oder mehrere Beschleunigerressourcen.
-
Hintergrund
-
Die Arbeitslastanforderungen in Datenzentren haben in den letzten Jahren stark zugenommen. Daraufhin wurden die Datenzentren größer; schlossen zusätzliche Racks in Datenzentren mit verschiedenen Ressourcen ein, die miteinander auf verschiedene Weisen verschaltet werden können, um sowohl ansteigende als auch schwankende Arbeitslastanforderungen erfüllen zu können.
-
Figurenliste
-
Die Ausführungsformen werden durch die folgende detaillierte Beschreibung zusammen mit den angefügten Zeichnungen leicht verständlich. Ähnliche Bezugsziffern geben zur Erleichterung dieser Beschreibung ähnliche Bauelemente an. Die Ausführungsformen werden ferner beispielhaft und nicht einschränkend in den Figuren der angefügten Zeichnungen illustriert.
- 1 ist ein Diagramm einer beispielhaften Implementierung eines Kopplungs-Switches („Interconnect Switch“) zum Verbinden von Knotenressourcen mit Beschleunigerressourcen gemäß verschiedenen Ausführungsformen.
- 2 ist ein Diagramm eines beispielhaften Interconnect Switches, der Interconnect Switch Ports einschließt, gemäß verschiedenen Ausführungsformen.
- 3 ist ein Diagramm einer beispielhaften Implementierung eines Interconnect Switch Ports gemäß verschiedenen Ausführungsformen.
- 4 ist ein Blockdiagramm, welches einen Prozess zum Implementieren des Managements von Verbindungen zwischen Knotenressourcen und Beschleunigerressourcen unter Verwendung eines Interconnect Switches gemäß verschiedenen Ausführungsformen illustriert.
- 5 illustriert eine beispielhafte Rechenvorrichtung, die zum Umsetzen von Aspekten der vorliegenden Offenbarung gemäß verschiedenen Ausführungsformen geeignet ist.
- 6 ist ein Diagramm, welches computerlesbare Medien mit Anweisungen zum Umsetzen des Managements von Verbindungen zwischen Knotenressourcen und Beschleunigerressourcen unter Verwendung eines Interconnect Switches gemäß verschiedenen Ausführungsformen illustriert.
-
Detaillierte Beschreibung
-
Offenbart werden können hier Verfahren, Apparate und Systeme, die die gemeinsame Nutzung von Beschleunigerressourcen mit Knotenressourcen zulassen können, die sich in einem Rack oder einem Gehäuse („Pod“) befinden, indem ein latenzarmer Switch verwendet wird. In Ausführungsformen kann jede Beschleunigerressource zu einer gegebenen Zeit mit einer Knotenressource gekoppelt werden. Eine Beschleunigerressource kann in Ausführungsformen ein Field Programmable Gate Array (FPGA), eine grafische Verarbeitungseinheit (Graphical Processing Unit; GPU), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit; ASIC), ein Eingabe/Ausgabe (Input/Output; I/O)-Beschleuniger oder eine andere Ressource sein. Eine Beschleunigerressource kann in Ausführungsformen einen Speicher oder sonstigen Cache implementieren. Eine Knotenressource kann in Ausführungsformen eine CPU sein.
-
Datenzentrenoperationen, die mehrere Datenzentren-Racks einschließen, können von der Flexibilität profitieren, Verbindungen mit Beschleunigerressourcen von einer Knotenressource zu einer anderen Knotenressource innerhalb eines Datenzentrum-Racks oder -Pods hinzuzufügen, zu entfernen oder zu bewegen, ohne dass physische Intervention von einer Bedienungsperson erforderlich ist. Beschleunigerressourcen können in Ausführungsformen, wenn sie mit einer Knotenressource verbunden sind, Kohärenz- und Speichererweiterungen beinhalten. I/O-Beschleuniger können Lade-Speicher-Semantiken aufweisen.
-
Kohärenzerweiterungen ermöglichen den Beschleunigern das Cachen des von dem Knoten gehosteten Systemspeichers, wodurch höhere Performance mit niedrigerem Stromverbrauch ermöglicht wird. Speichererweiterungen ermöglichen einer Knotenressource, auf den von dem Beschleuniger gehosteten Speicher in ähnlicher Weise wie beim Systemspeicher zuzugreifen, wodurch bessere gemeinsame Nutzung zwischen dem Knoten und dem Beschleuniger für bessere Performance ermöglicht wird. Lade-Speicher-Semantik kann einer CPU oder Vorrichtung den Zugriff auf speicherabgebildete („Memory-Mapped“) Ressourcen direkt als Ladebefehl (z. B. Lesen) oder als Speicherbefehl (z. B. Schreiben) gestatten.
-
In herkömmlichen Implementierungen ist es eine Herausforderung, eine Beschleunigerressource innerhalb von mehreren Knotenressourcen gemeinsam zu nutzen, wenn die Knotenressourcen zu unterschiedlichen Kohärenzdomänen gehören können. Dies kann auf die enge Kopplung von Ressourcen in einer Kohärenzdomäne und domänenübergreifende Fehlerisolierungsanforderungen zurückzuführen sein. Zu Nachteilen dieser herkömmlichen Ansätze können die Beschränkung bestimmter Rechen-Tasks auf spezielle Knotenressourcen gehören, die vorhandene erforderliche Funktionalität aufweisen können (d. h. vorhandene gekoppelte Beschleunigerressourcen). Andere Nachteile können ein Datenzentrum einschließen, das über den Bedarf hinaus mit Ressourcen ausgestattet ist, um sich auf einen schlimmstmöglichen Rechenszenariumsfall oder andere operative Anforderungen vorzubereiten. Dies kann zu einem Überschuss an eingesetzten Beschleunigerressourcen und resultierender Unternutzung der Beschleunigerressourcen in einem Datenzentrum führen.
-
Diese und andere Herausforderungen lassen sich überwinden, indem zugelassen wird, dass Beschleunigerressourcen und Knotenressourcen unter Verwendung von einem oder mehreren Interconnect Switches verbunden werden, um einen vermittelbaren Pfad von einer Knotenressource zu einer Beschleunigerressource zu erstellen. In Ausführungen kann das Umkonfigurieren des vermittelbaren Pfades das Entfernen einer Beschleunigerressource im laufenden Betrieb von einer verbundenen Knotenressource und danach Zufügen der Beschleunigerressource im laufenden Betrieb zu der neuen Knotenressource unter Verwendung des Interconnect Switch und eines Ressourcenmanagers einschließen. In Ausführungsformen kann die Verbindung zwischen den Knotenressourcen und Beschleunigerressourcen über einen oder mehrere Softwarebefehle an den Interconnect Switch geändert werden. In Ausführungsformen brauchen keine physischen Vorrichtungen (z. B. Beschleunigerressourcen) physisch bewegt werden.
-
In der folgenden Beschreibung werden verschiedene Aspekte von beispielhaften Implementierungen unter Verwendung von Begriffen beschrieben, die üblicherweise von Fachleuten verwendet werden, um das Wesentliche ihrer Arbeit anderen Fachleuten zu übermitteln. Es ist Fachleuten jedoch offensichtlich, dass Ausführungsformen der vorliegenden Offenbarung mit nur einigen der beschriebenen Aspekte umgesetzt werden können. Zu Zwecken der Erläuterung werden spezielle Zahlen, Materialien und Konfigurationen beschrieben, um für ein umfassendes Verständnis der illustrierten Implementierungen zu sorgen. Es ist einem Fachmann jedoch offensichtlich, dass Ausführungsformen der vorliegenden Offenbarung ohne die speziellen Details umgesetzt werden können. In anderen Fällen werden gut bekannte Merkmale weggelassen oder vereinfacht, um die illustrierten Implementierungen nicht zu verschleiern.
-
In der folgenden Beschreibung wird auf die angefügten Zeichnungen verwiesen, die einen Teil davon bilden, wobei ähnliche Bezugsziffern ähnliche Teile angeben und in denen beispielhaft Ausführungen gezeigt werden, in denen der Gegenstand der vorliegenden Offenbarung umgesetzt werden kann. Es ist so zu verstehen, dass andere Ausführungsformen genutzt und strukturelle oder logische Veränderungen vorgenommen werden können, ohne von dem Umfang der vorliegenden Offenbarung abzuweichen. Die folgende detaillierte Beschreibung ist daher nicht im einschränkenden Sinne zu sehen, und der Umfang der Ausführungsformen wird durch die angefügten Ansprüche und ihre Entsprechungen definiert.
-
Die Formulierung „A und/oder B“ bedeutet für die Zwecke der vorliegenden Offenbarung (A), (B) oder (A und B). Die Formulierung „A, B und/oder C“ bedeutet (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
-
Die Beschreibung kann perspektivenbezogene Beschreibungen verwenden, wie oben/unten, innen/außen, über/unter und dergleichen. Solche Beschreibungen werden lediglich zur Erleichterung der Erörterung verwendet und sollen die Anwendung der hier beschriebenen Ausführungsformen nicht auf irgendeine spezielle Orientierung begrenzen.
-
Die Beschreibung kann die Formulierungen „in einer Ausführungsform“ oder „in Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere von der gleichen Ausführungsform oder unterschiedlichen Ausführungsformen beziehen. Die Begriffe „einschließend“, „aufweisend“ und dergleichen sind, wenn sie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet werden, Synonyme.
-
Die Begriffe „gekoppelt mit“ oder „gekoppelt an“ und dergleichen können hier verwendet werden. „Gekoppelt“ kann eines oder mehreren der folgenden bedeuten: „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt sind. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente indirekt in Kontakt miteinander sind, aber dennoch miteinander zusammenwirken oder interagieren, und kann bedeuten, dass ein oder mehrere andere Elemente zwischen den Elementen gekoppelt oder mit diesen verbunden sind, die als miteinander gekoppelt bezeichnet werden. Beispielhaft und nicht einschränkend kann „gekoppelt“ bedeuten, dass zwei oder mehr Elemente oder Vorrichtungen durch elektrische Verbindungen auf einer gedruckten Schaltplatine gekoppelt sind, wie beispielsweise einer Hauptplatine. Beispielhaft und nicht einschränkend kann „gekoppelt“ bedeuten, dass zwei oder mehr Elemente/Vorrichtungen über eine oder mehrere Netzwerkverbindungen, wie verdrahtete und/oder drahtlose Netzwerke, zusammenarbeiten und/oder miteinander interagieren. Ein Rechenapparat kann beispielhaft und nicht einschränkend zwei oder mehr Rechenvorrichtungen einschließen, die auf einer Hauptplatine oder über eine oder mehrere Netzwerkverbindungen „gekoppelt“ sind.
-
Verschiedene Operationen werden als mehrere diskrete Operationen in Folge beschrieben, in einer Weise, die zum Verständnis des beanspruchten Gegenstands besonders hilfreich ist. Die Reihenfolge der Beschreibung soll jedoch nicht so ausgelegt werden, dass dies impliziert, dass diese Operationen notwendigerweise abhängig von der Reihenfolge sind.
-
1 ist ein Diagramm einer beispielhaften Implementierung eines Switches zum Verbinden von Knotenressourcen mit Beschleunigerressourcen gemäß verschiedenen Ausführungsformen. Diagramm 100 zeigt einen Interconnect Switch 102, der von einem Ressourcenmanager 104 gemanagt werden kann. Der Ressourcenmanager 104 kann in Ausführungsformen Teil des Interconnect Switch 102 sein. Der Ressourcenmanager 104 kann in Ausführungsformen extern, jedoch mit dem Interconnect Switch 102 gekoppelt sein. Der Interconnect Switch 102 kann ein FlexBus™ Interconnect-Protokoll oder anderes Protokoll verwenden, um Daten auf einem Peripheral Component Interconnect Express (PCIe) Bus oder anderem Bus zu unterstützen.
-
Eine oder mehrere Knotenressourcen 106a-106d kann bzw. können mit dem Interconnect Switch 102 oder mit dem Ressourcenmanager 104 gekoppelt werden. Eine Knotenressource kann eine CPU sein. Eine Knotenressource kann auch mehrere CPUs sein, die unter Verwendung von Kohärenz-Links verbunden sind. In Ausführungsformen können eine oder mehrere Beschleunigerressourcen 108a-108d mit dem Interconnect Switch 102 verbunden sein. In Ausführungsformen können Beschleuniger FPGAs, GPUs, ASICs, I/O-Beschleuniger oder sonstige Ressourcen einschließen. In Ausführungsformen können Beschleunigerressourcen 108a-108d als Cache für eine Knotenressource 106a-106d verwendet werden. Links 105a-105d können jeweils Knotenressourcen 106a-106d mit dem Interconnect Switch 102 verbinden, und Links 109a-109d können jeweils Beschleunigerressourcen 108a-108d mit dem Interconnect Switch 102 verbinden.
-
Eine Knotenressource 106a-106d und Beschleunigerressource 108a-108d können in Konfigurationen mit einer (nicht gezeigten) Vielzahl von Interconnect Switches 102 verbunden sein, die gemeinsam durch den Ressourcenmanager 104 gemanagt werden. In Ausführungsformen kann jede von der Vielzahl der Interconnect Switches 102 mit Bit-Slicing oder hierarchisch sein, um höhere Radixvermittlung über die höheren Anzahlen von Knoten und Beschleunigern zu ermöglichen.
-
Eine Switch-Implementierung mit Bit-Slicing kann realisiert werden, indem man mehrere physische Interconnect Switches 102 hat, die jeweils einen anderen Teilsatz von Spuren des PCIe-Busses oder anderen Busses behandeln. Wenn beispielsweise jeder der Links 105a-105d, 109a-109d 16 Spuren hat, wird ein Switch mit 8 Links (Radix = 8), wie in Diagramm 100 gezeigt, in der Lage sein, 128 Spuren zu bedienen. Wenn wir dies auf 64 Links (Radix = 64) erweitern müssen und ein physischer Switch nur 128 Spuren bedienen kann, können wir 8 dieser physischen Interconnect Switches 102 haben, die eine (einzigen) logische Vermittlungsbehandlung der Konnektivität über die 64 Links bilden. Ein erster physischer Interconnect Switch 102 kann beispielsweise Spuren 0 und 1 von jedem der Links 105a-105d, 109a-109d bedienen, der zweite (nicht gezeigte) physische Interconnect Switch bedient die Spuren 2 und 3 von jedem der Links 105a-105d, 109a-109d, und so weiter. Dies kann einen Switch mit höherer Radix aufbauen (denjenigen, der 64 Links anstelle von 8 Links bedient), während der Abstand zwischen dem Knoten und dem Beschleuniger nicht verlängert wird.
-
Ein weiterer Ansatz zum Erweitern der Vermittlungs-Radix ist durch Verwendung von hierarchischem Vermitteln (nicht gezeigt), wobei unterschiedliche Knotenressourcen 106a-106d sich mit unterschiedlichen Interconnect Switches verbinden können und die Interconnect Switches über eine andere Schicht von Interconnect Switches verbunden sind. In Ausführungsformen kann eine Kombination von Bit-Slicing und hierarchischem Vermitteln verwendet werden, um die Vermittlungs-Radix zu erweitern. Diese Ansätze können verwendet werden, um Konnektivität zwischen Knoten und Ressourcen (wie Beschleunigern) in einem Pod bereitzustellen, der eine Zusammenstellung von Racks ist. Ein Rack ist eine physische Umhausung, in der mehrere Knoten und Beschleuniger gehostet werden können.
-
Wenn wir uns wiederum Diagramm 100 zuwenden, kann Ressourcenmanager 104 bestimmen, dass eine der Knotenressourcen 106a-106d mit einer der Beschleunigerressourcen 108a-108d verbunden werden kann. Der Ressourcenmanager 104 kann Anforderungen von verschiedenen Knoten 106a-106d empfangen, die Ressourcen benötigen, und kann auf die Anforderungen reagieren, indem dem anforderndem Knoten eine Beschleunigerressource aus den Ressourcen 108a-108d zugeordnet wird. Diese Anforderungen und Antworten können unter Verwendung von Standardmanagebarkeits- oder Netzwerkressourcen (nicht gezeigt) gesendet werden, die Kommunikation zwischen einer Knotenressource 106a-106d und dem Ressourcenmanager 104 unterstützen.
-
Der Ressourcenmanager 104 kann beispielsweise eine Anforderung empfangen, den Interconnect Switch 102 zu konfigurieren, um eine Knotenressource 106a direkt mit einer Beschleunigerressource 108c zu verbinden. Diese Konfiguration kann vollständig mittels Software durchgeführt werden, beispielsweise durch Senden eines Befehls an einen oder mehrere Multiplexer, wie Multiplexer 207a1-207h1 aus 2 (unten beschrieben) innerhalb des Interconnect Switch 102.
-
Wenn wir das Beispiel fortsetzen, kann der Ressourcenmanager 104 bestimmen, dass die Beschleunigerressource 108c bereits mit einer anderen Knotenressource 106d verbunden sein kann. Der Ressourcenmanager 104 kann eine Verbindungstrennung oder ein Entfernen im laufenden Betrieb der zuvor verbundenen Beschleunigerressource 108c von der Knotenressource 106d bewirken. In Ausführungsformen kann, bevor die Beschleunigerressource 108c im laufenden Betrieb entfernt wird, die Systemsoftware, die möglicherweise in der Knotenressource 106d und der Beschleunigerressource 108c läuft, den Datenverkehr zwischen der Beschleunigerressource 108c und der Knotenressource 106d unter Verwendung von Mechanismen zur Ruhe kommen lassen, die in jeder der Ressourcen verfügbar sind. Diese Mechanismen schließen das Leeren von Speicher-Caches ein, die zu der anderen Ressource gehören, Sicherstellen, dass sämtlicher Verkehr zwischen der Beschleunigerressource 108c und der Knotenressource 106d abgeschlossen ist, und dergleichen. Nachdem der Datenverkehr zur Ruhe gekommen ist, kann die Systemsoftware mit dem Ressourcenmanager 104 kommunizieren, um das Entfernen der Beschleunigerressource 108c im laufenden Betrieb und aus Knoten 106d zu initiieren, was die Trennung der Verbindung zwischen dem entsprechenden Link 109c und Link 106d unter Verwendung des Interconnect Switch 102 beinhalten kann. Nachfolgend kann der Ressourcenmanager 104 eine Verbindung zwischen den Links 105a, 109c zwischen Knotenressource 106a und Beschleunigerressource 108c unter Verwendung des Interconnect Switch 102 aufbauen.
-
Nachdem die Knotenressource 106a und die Beschleunigerressource 108c verbunden sind, können Konfigurationsinformationen zwischen der Knotenressource 106a und der Beschleunigerressource 108c ausgetauscht werden. Die Knotenressource 106a-106d kann mit dem Interconnect Switch 102 unter Verwendung einer Switch-Schnittstelle 106a1-106d1 kommunizieren. In Ausführungsformen kann die Knotenressource 106a-106d mit der Switch-Schnittstelle 106a1-106d1 unter Verwendung eines PCIe-Ports 106a2-106d2, eines Intel Accelerator Link (IAL)-Ports 106a3-106d3 oder irgendeines anderen Ports (nicht gezeigt) kommunizieren.
-
Nachdem die Knotenressource 106a und die Beschleunigerressource 108c verbunden sind, kann die Switch-Schnittstelle 106a1 Link-Training mit der Beschleunigerressource 108c durchführen, um die Verbindung zu koordinieren und aufzubauen, damit sie sich in konsistenter Weise verhält. Dieses Link-Training kann unter Verwendung einer Training Status State Machine (LTSSM) bewirkt werden.
-
Nach dem Link-Training kann in der Knotenressource 106a ein Ablauf des Zufügens im laufenden Betrieb beginnen, wobei die Benachrichtigung von dem Ressourcenmanager 104 übernommen wird. Während des Ablaufs des Zufügens im laufenden Betrieb kann die auf dem Host laufende Systemsoftware die neu hinzugefügte Beschleunigerressource 108c auffinden und Initialisierung und/oder Abbildung (Mapping) durchführen, so dass die Knotenressource 106a mit der Verwendung der Beschleunigerressource 108c beginnen kann. Nachdem die Verbindung über den Interconnect Switch 102 aufgebaut worden ist, kann die angestiegene Latenz in der Kommunikation zwischen der Knotenressource 106a und der Beschleunigerressource 108c weniger als 10 Nanosekunden (ns) betragen.
-
2 ist ein Diagramm eines beispielhaften Interconnect Switches, der Interconnect Switch Ports einschließt, gemäß verschiedenen Ausführungsformen. Diagramm 200 kann einen Interconnect Switch 202 zeigen, der dem Interconnect Switch 102 von 1 ähnlich sein kann. Links 205a-205d können den Links 105a-105d ähnlich sein, und Links 209a-209d können den Links 109a-109d ähnlich sein. Links 205a-205d, 209a-209d können jeweils über Verbindungen zwischen den Interconnect Switch Ports 207a-207h verbunden sein. Die Verbindungen können durch Ressourcenmanager 204 gemanagt werden, der Ressourcenmanager 104 von 1 ähnlich sein kann.
-
Jeder der Interconnect Switch Ports 207a-207h, die in in 3 detaillierter erläutert werden, schließen jeweils einen Multiplexer (Mux) 207a1-207h1 ein. Jeder Mux 207a1-207h1 kann Mux-Auswahlinformationen 211 von dem Ressourcenmanager 204 empfangen, um anzugeben, welcher aus einem ersten Satz von Muxen 207a1-207d1 mit einem von einem zweiten Satz von Muxen 207e1-207h1 verbunden werden soll, um einen latenzarmen Umgehungspfad zwischen einem der Links 205a-205d und einem der Links 209a-209d aufzubauen. In Ausführungsformen können Muxen 207a1-207d1 in Interconnect Switch Ports 207a1-207d1, die Knotenressourcen 106a-106d zugewiesen sind, mit jedweden anderen Muxen 207e1-207h1 in Interconnect Switch Ports 207e1-207h1 verbunden werden, die Beschleunigerressourcen 108a-108d zugewiesen sind, und anders herum.
-
In Ausführungsformen kann der Interconnect Switch 202 einem latenzarmen Retimer ähnlich sein. Die resultierenden latenzarmen Umgehungspfade können zu einem dramatischen Geschwindigkeitsanstieg zwischen einer verbundenen Knotenressource 106a-106d und einer verbundenen Beschleunigerressource 108a-108d führen. Herkömmliche Implementierungen, die eine Knotenressource und eine Beschleunigerressource unter Verwendung von Softwarepfaden oder vollständigen Hardware-Stapeln verbinden, um die Kommunikation zu erleichtern, werden erhebliche Latenz mit sich bringen, wenn sich die Datenpakete durch die Protokollstapel bewegen. Der Interconnect Switch 102 kann im Unterschied zu herkömmlichen Implementierungen einen sehr niedrigen Performance-Mehraufwand haben, indem eine direkt verdrahtete Verbindung aufgebaut wird, die hohe Kommunikationsgeschwindigkeiten zulässt, um die Kommunikation zwischen einer CPU und einer I/O-Vorrichtung, einem Cache, einer GPU oder irgendeiner anderen Beschleunigervorrichtung zu unterstützen.
-
3 ist ein Diagramm einer beispielhaften Implementierung eines Interconnect Switch Ports gemäß verschiedenen Ausführungsformen. Diagramm 307a zeigt Details eines beispielhaften Interconnect Switch Ports, der dem Interconnect Switch Port 207a aus 2 ähnlich sein kann. Diagramm 307a kann einen beliebigen Interconnect Switch Port 207a-207h darstellen. Eingabe kann über Link 305a1 empfangen werden, und Ausgabe kann über Link 305a2 gesendet werden. Links 305a1, 305a2 können der gleiche physische Draht oder Bus sein und können Link 205a ähnlich sein, der den Interconnect Switch Port 307a mit einer Switch-Schnittstelle 106a1 einer Knotenressource 106a koppeln kann. Link 305a1 kann Daten einschließen, die von einer Knotenressource über Link 205a empfangen wurden, und Link 305a2 kann Daten einschließen, die zu einer Knotenressource über Link 205a gesendet werden sollen. In anderen Ausführungsformen kann, wenn der Interconnect Switch Port mit einem Beschleunigerressourcen-Port verbunden ist, wie Ressourcenport 209a, der Link 305a1 dann Daten angeben, die von der Beschleunigerressource 108a über Link 209a empfangen wurden, und Link 305a2 kann Daten angeben, die über Link 209a an die Beschleunigerressource 108a zu senden sind.
-
Empfangs- (Rx)-Blockverarbeitung 330 kann Daten über Link 305a empfangen und die Daten zur Verwendung innerhalb des Interconnect Switch Ports 307a konvertieren. Rx-Blockverarbeitung 330 kann beispielsweise Konvertieren der empfangenen Daten aus einem seriellen in ein paralleles Format und Durchführen von Datenausrichtung, Dekodieren, Descrambling und/oder Puffern einschließen. Es können auch zusätzliche Funktionen durchgeführt werden. Daten aus der Rx-Blockverarbeitung 330 können durch den Steuerblock 332 verwendet werden, um Funktionen durchzuführen, die LTSSM-Linktraining betreffen, zusätzlich zu anderer Funktionalität wie Verkehrsüberwachung und Vermittlungsvorgängen.
-
Aus Rx-Blockverarbeitung 330 resultierende Daten sowie Daten, die aus dem Steuerblock 332 resultieren, können kombiniert werden. Die Funktion Port Broadcast 334 kann diese kombinierten Daten nehmen und mittels Broadcast an alle anderen Interconnect Switch Ports 207a-207h verteilen. Wenn der Interconnect Switch Port 307a beispielsweise einer Knotenressource 106a-106d zugewiesen ist, kann Port Broadcast 334 eine Kopie der Daten an den Eingang aller Muxen 207e1-207h1 mittels Broadcast verteilen, die jeweils Interconnect Switch Ports 207e-207h der Beschleunigerressourcen 108a-108d zugewiesen sind. Wenn der Interconnect Switch Port 307a einer Beschleunigerressource 108a-108d zugewiesen ist, kann Port Broadcast 334 eine Kopie der Daten an den Eingang aller Muxen 207e1-207d1 mittels Broadcast verteilen, die jeweils Interconnect Switch Ports 207a-207d der Knotenressourcen 108a-108d zugewiesen sind. Steuerblockinformationen von Steuerblock 332, die LTSSM-Informationen einschließen können, können in ähnlicher Weise mittels Broadcast an andere LTSSMs unter Verwendung von LTSSM Broadcast 336 mittels Broadcast verteilt werden.
-
Der Mux 307a1, der den Muxen 207a1-207h1 von 2 ähnlich sein kann, kann Daten-Broadcast von allen oder von einer Vielzahl von anderen Interconnect Switch Ports 207a-207h empfangen. Wenn der Mux 307a1 beispielsweise einer Knotenressource 106a-106d zugewiesen ist, dann kann der Mux 307a1 Daten von jedem der Interconnect Switch Ports 207e-207h empfangen, die jeweils Beschleunigerressourcen 108a-108d zugewiesen sind. Wenn der Mux 207a1 einer Beschleunigerressource 108a-108d zugewiesen ist, dann kann der Mux 307a1 Daten von jedem der Interconnect Switch Ports 207a-207d empfangen, die jeweils Knotenressourcen 106a-106d zugewiesen sind.
-
Mux-Auswahlinformationen 311, die Mux-Auswahlinformationen 211 von 2 ähnlich sein können, werden von dem Ressourcenmanager 204 bereitgestellt, der außerhalb des Interconnect Switch Ports 307a sein kann. Mux-Auswahlinformationen 311 können dem Mux 307a angeben, von welchem der empfangenen Broadcast-Daten von den anderen Interconnect Switch Ports 313 von den anderen Interconnect Switch Ports 207a-207d, oder 207e-207h der Mux 307a Daten empfangen sollte.
-
Die empfangenen Daten können dann durch Sende- (Tx) Schaltungen 338 verarbeitet und als Ausgabedaten 305a2 zurück an entweder die Knotenressource 106a-106d oder die Beschleunigerressource 108a-108d gesendet werden, denen der Interconnect Switch Port 307a zugewiesen ist. Die empfangenen Daten, die LTSSM-Kommunikationen zugewiesen sein können, können zudem von dem Steuerblock 332 empfangen werden. Die Tx-Schaltungen 338 können die parallel-zu-seriell-Konvertierung von Daten zusammen mit dem Anwenden der geeigneten Tx-Ausgleichswerte durchführen, auf die sich während des anfänglichen Link-Trainings geeinigt wurde.
-
4 ist ein Blockdiagramm, welches einen Prozess zum Implementieren des Managements von Verbindungen zwischen Knotenressourcen und Beschleunigerressourcen unter Verwendung eines Interconnect Switches gemäß verschiedenen Ausführungsformen illustriert. Der Ressourcenmanager 104, der Interconnect Switch 102, Knotenressourcen 106a-106d, Switch-Schnittstellen 106a1-106d1, 108a1-108d1, und Beschleunigerressourcen 108a-108d von 1 können in Ausführungsformen einen Teil von oder einen oder mehrere Prozesse durchführen, wie den Prozess 400.
-
Der Prozess kann in Block 402 das Empfangen einer Angabe einer Knotenressource von einer Vielzahl von Knotenressourcen und einer Angabe einer Beschleunigerressource einer Vielzahl von Beschleunigerressourcen einschließen, um sich mit einer Knotenressource zu verbinden. Der Ressourcenmanager 104 kann ein Verzeichnis der Knotenressourcen 106a-106d und Beschleunigerressourcen 108a-108d pflegen, sowie eine Liste, welche Beschleunigerressourcen momentan mit welchen Knotenressourcen verbunden sind.
-
Eine Knotenressource 106a-106d kann eine Anforderung an den Ressourcenmanager 104 senden, um sich mit einer verfügbaren Beschleunigerressource oder einer speziellen Beschleunigerressource zu verbinden, je nach Anforderungen der Knotenressource. Eine Knotenressource 106a-106d kann eine CPU oder mehrere CPUs sein, die unter Verwendung von Kohärenz-Links verbunden sind. Knotenressourcen 106a-106d können in Ausführungsformen zu unterschiedlichen Kohärenzdomänen gehören und können sich in unterschiedlichen Racks oder Pods befinden. Der Ressourcenmanager 104 kann in Ausführungsformen auf einem Einzelcomputer laufen, oder kann dezentralisiert auf mehreren Computern laufen, was von der Konfiguration des einen oder der mehreren Interconnect Switches 102 abhängt.
-
Der Prozess kann in Block 404, falls die angegebene Beschleunigerressource mit einem anderen Knoten von der Vielzahl von Knoten verbunden ist, Senden von einem oder mehreren Befehlen zum Entfernen im laufenden Betrieb an einen Schaltkreis-Switch senden. Der Ressourcenmanager 104 kann in Ausführungsformen sein Verzeichnis prüfen, um zu bestimmen, ob die angegebene Beschleunigerressource mit einem anderen Knoten verbunden ist. Falls die angeforderte Beschleunigerressource bereits verbunden ist, dann kann der Ressourcenmanager 104 einen Befehl zum Entfernen im laufenden Betrieb an den Interconnect Switch 102 senden. Der Befehl zum Entfernen im laufenden Betrieb kann in Ausführungsformen eine Sequenz von Anweisungen zur Verbindungstrennung zwischen einer anderen Knotenressource und der angegebenen Beschleunigerressource sein. Vor der Verbindungstrennung kann der Datenverkehr zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource wie oben beschrieben zur Ruhe gebracht werden. In Ausführungsformen kann der eine bzw. können die mehreren Befehle für einen oder mehrere Interconnect Switch Ports 207a-207h und die jeweiligen Muxen 207a1-207h1 sein, das Empfangen von Broadcast-Daten von anderen Interconnect Switch Ports zu stoppen.
-
Der Prozess kann in Block 406 das Senden von einem oder mehreren Befehlen zum Zufügen im laufenden Betrieb an den Switch einschließen. In Ausführungsformen kann der eine bzw. können die mehreren Befehle zum Zufügen im laufenden Betrieb sein, den angegebenen Knoten mit der angegebenen Beschleunigerressource zu verbinden. Dies kann Senden von einem oder mehreren Befehlen zu einem oder mehreren Interconnect Switch Ports 207a-207h wie oben beschrieben innerhalb des Interconnect Switch 102 einschließen, um die angegebene Knotenressource und die angegebene Beschleunigerressource zu verbinden. Dies kann einschließen, dass der Ressourcenmanager 204 Mux-Auswahlbefehle 211 zu individuellen Muxen 207a1-207h1 sendet, um die individuellen Muxen des Interconnect Switch Ports 207a-207h anzugeben, woraufhin der Mux beginnen sollte, Daten zu empfangen.
-
Nachdem die angegebene Knotenressource und die angegebene Beschleunigerressource verbunden sind, kann die Verbindung in Ausführungsformen konfiguriert sein, um das Kommunizieren von Daten über die Verbindung zu ermöglichen. Dies kann in Ausführungsformen als Link Training und den anschließenden Ablauf mit Zufügen im laufenden Betrieb bezeichnet werden. Dies kann in Ausführungsformen mittels LTSSM wie oben beschrieben durchgeführt werden, so dass zwischen einer Knotenressource 106a-106d und der verbundenen Beschleunigerressource 108a-108d physisch Bits ausgetauscht werden können.
-
5 illustriert eine beispielhafte Rechenvorrichtung, die zum Umsetzen von Aspekten der vorliegenden Offenbarung gemäß verschiedenen Ausführungsformen geeignet ist. Die beispielhafte Rechenvorrichtung von Diagramm 500 kann geeignet sein, um die mit Diagrammen 100, 200, 300 und 400 zusammenhängenden Funktionen umzusetzen. Diagramm 500 kann in Ausführungsformen verwendet werden, um einen oder mehrere Ressourcenmanager 104 zu implementieren.
-
Rechenvorrichtung 500 kann wie gezeigt einen oder mehrere Prozessoren 502, die jeweils einen oder mehrere Prozessorkerne haben, und Systemspeicher 504 einschließen. Der Prozessor 502 kann jeden Typ von einkernigen oder mehrkernigen Prozessoren einschließen. Jeder Prozessorkern kann eine zentrale Verarbeitungseinheit (CPU) und einen oder mehrere Cache-Level einschließen. Der Prozessor 502 kann als integrierte Schaltung implementiert werden. Die Rechenvorrichtung 500 kann Massenspeichervorrichtungen 506 (wie Diskette, Festplattenlaufwerk, flüchtigen Speicher (z.B. dynamischen Direktzugriffspeicher (DRAM)), Compact Disc-Nur-Lese-Speicher (CD-ROM), Digital Versatile Disk (DVD) und so weiter) einschließen. Systemspeicher 504 und/oder Massenspeichervorrichtungen 506 können im Allgemeinen temporäre und/oder persistente Speicher von beliebigem Typ sein, einschließlich flüchtigem und nichtflüchtigem Speicher, optischem, magnetischem und/oder Festkörpermassenspeicher und so weiter, jedoch nicht darauf begrenzt. Flüchtiger Speicher kann statischen und/oder dynamischen Direktzugriffspeicher einschließen, ohne darauf begrenzt zu sein. Nicht-flüchtiger Speicher kann, ohne jedoch darauf begrenzt zu sein, elektrisch löschbaren programmierbaren Nur-Lese-Speicher, Phasenwechselspeicher, resistiven Speicher und so weiter einschließen.
-
Die Rechenvorrichtung 500 kann ferner Eingabe/Ausgabe- (I/O)-Vorrichtungen 508 einschließen, wie Display, Tastatur, Cursorsteuerung, Fernbedienung, Gaming-Controller, Bilderfassungsvorrichtung und Kommunikationsschnittstellen 510 (wie Netzwerkschnittstellenkarten, Modems, Infrarotempfänger, Sende/Empfänger, Funkempfänger (z. B. Bluetooth) und so weiter). I/O-Vorrichtungen 508 können für kommunikative Verbindungen mit einem Interconnect Switch 102 von 1, einer Vielzahl von Interconnect Switches (nicht gezeigt) oder irgendeiner anderen Vorrichtung geeignet sein, die zum Implementieren der Funktionalitäten notwendig sind, die unter Bezugnahme auf die 1 bis 4 eine Knotenressource an eine Beschleunigerressource koppeln.
-
Kommunikationsschnittstellen 510 können in Ausführungsformen Kommunikationschips (nicht gezeigt) einschließen, die konfiguriert sein können, um die Vorrichtung 500 gemäß verdrahteten oder drahtlosen Protokollen zu betreiben.
-
Die Elemente der oben beschriebenen Rechenvorrichtung 500 können über Systembus 512 aneinander gekoppelt werden, der einen oder mehrere Busse darstellen kann. Im Fall von mehreren Bussen können sie durch eine oder mehrere Busbrücken (nicht gezeigt) verbrückt werden. Jedes dieser Elemente kann seine in der Technik bekannten konventionellen Funktionen ausüben. Systemspeicher 504 und Massenspeichervorrichtungen 506 können speziell verwendet werden, um eine Arbeitskopie und eine Permanentkopie der Programmieranweisungen zu speichern, die die Operationen und Funktionalitäten im Zusammenhang mit dem Ressourcenmanager 104 implementieren, allgemein als Rechenlogik 522 gezeigt. Rechenlogik 522 kann durch Assembler-Anweisungen implementiert werden, die durch Prozessor(en) 502 unterstützt werden, oder durch Hochsprachen, die zu solchen Anweisungen kompiliert werden können.
-
Die Rechenlogik 522 kann in Ausführungsformen ein Ressourcenmanagermodul 350 enthalten, das eine oder mehrere der Funktionen im Zusammenhang mit den Diagrammen 100, 200, 300 und 400 durchführen kann.
-
Die Permanentkopie der Programmieranweisungen kann ab Werk in Massenspeichervorrichtungen 506 platziert werden, oder im Feld, beispielsweise mittels eines Verteilungsmediums (nicht gezeigt) wie einer Compact Disc (CD), oder durch Kommunikationsschnittstellen (310) (von einem Distributionsserver (nicht gezeigt)).
-
6 ist ein Diagramm, welches computerlesbare Medien mit Anweisungen zum Umsetzen von Managementverbindungen zwischen Knotenressourcen und Beschleunigerressourcen unter Verwendung eines Interconnect Switches gemäß verschiedenen Ausführungsformen illustriert. Diagramm 600 kann computerlesbare Medien 602 illustrieren, die Anweisungen zum Durchführen der oben beschriebenen Techniken aufweisen, oder zur Programmierung/ zum Bewirken, dass Systeme und Vorrichtungen die oben beschriebenen Techniken gemäß verschiedenen Ausführungsformen durchführen. Solche computerlesbaren Medien 602 können in einigen Ausführungsformen in eine Speicher- oder Massenspeichervorrichtung der Rechenvorrichtung 500 aus 5 eingeschlossen sein, die vorübergehend oder nicht-vorübergehend sein kann. In Ausführungsformen können Anweisungen 604 Assembler-Anweisungen einschließen, die von einer Verarbeitungsvorrichtung unterstützt werden, oder können Anweisungen in einer Hochsprache, wie C, einschließen, die zu Objektcode kompiliert werden kann, der durch die Verarbeitungsvorrichtung ausführbar ist. In einigen Ausführungsformen kann eine persistente Kopie der computerlesbaren Anweisungen 604 ab Werk in einer persistenten Speichervorrichtung platziert werden, oder im Feld (mittels beispielsweise eines maschinenzugänglichen Distributionsmediums (nicht gezeigt)). In einigen Ausführungsformen kann eine persistente Kopie der computerlesbaren Anweisungen 604 über einen geeigneten Kommunikationspfad (z. B. von einem Distributionsserver) in einer persistenten Speichervorrichtung platziert werden.
-
Die entsprechenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Schritte plus Funktionselementen in den folgenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedwede Handlung zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen wie ausdrücklich beansprucht einschließen. Die Beschreibung der vorliegenden Offenbarung wurde zu Zwecken der Erläuterung und Beschreibung gegeben, soll jedoch nicht erschöpfend sein oder die Offenbarung auf die offenbarte Form beschränken. Dem Fachmann ergeben sich viele Modifikationen und Varianten, ohne von dem Umfang und der Idee der Offenbarung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Prinzipien der Offenbarung und die praktische Anwendung am besten zu erklären und es anderen Durchschnittsfachleuten auf diesem Sektor zu ermöglichen, die Offenbarung für Ausführungsformen mit verschiedenen Modifikationen zu verstehen, wie sie in für die spezielle vorgesehene Anwendung geeignet sind.
-
BEISPIELE
-
Beispiele gemäß verschiedenen Ausführungsformen können die folgenden einschließen.
-
Beispiel 1 kann ein Ressourcenmanager sein, der umfasst: einen oder mehrere Prozessoren; ein Ressourcenmanagermodul (RMM), das kommunikativ an den einen oder die mehreren Prozessoren gekoppelt ist, wobei das RMM dazu dient, eine Angabe einer Knotenressource von einer Vielzahl von Knotenressourcen und eine Angabe von einer Beschleunigerressource von einer Vielzahl von Beschleunigerressourcen zu empfangen, die mit der Knotenressource verbunden werden sollen; falls die angegebene Beschleunigerressource mit einer anderen Knotenressource von der Vielzahl der Knotenressourcen verbunden ist, dann einen oder mehrere Befehlen zum Entfernen im laufenden Betrieb an einen Interconnect Switch zu übertragen; und einen oder mehrere Befehle zum Zufügen im laufenden Betrieb an den Interconnect Switch zu übertragen.
-
Beispiel 2 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei das RMM zum Verfolgen von Verbindungen von jeweils der Vielzahl von Beschleunigerressourcen zu der Vielzahl der Knotenressourcen und zum Bewirken dient, dass der Interconnect Switch die angegebene Beschleunigerressource von der Vielzahl der Beschleunigerressourcen mit der angegebenen Knotenressource von der Vielzahl der Knotenressourcen verbindet.
-
Beispiel 3 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei der eine oder die mehreren Befehle zum Entfernen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb von der anderen Knotenressource entfernt.
-
Beispiel 4 kann den Ressourcenmanager aus Beispiel 3 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass bewirkt wird, dass Datenverkehr auf einer Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource zur Ruhe kommt.
-
Beispiel 5 kann den Ressourcenmanager von Beispiel 3 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass die Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource abgeschnitten wird.
-
Beispiel 6 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei der eine oder die mehreren Befehle zum Zufügen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb der angegebenen Knotenressource zufügt.
-
Beispiel 7 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei das Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb ferner einschließt: Aufbauen einer Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource mittels des Interconnect Switch; Konfigurieren der angegebenen Beschleunigerressource mittels des Interconnect Switch, mit der angegebenen Knotenressource über die aufgebaute Verbindung zu kommunizieren; und Konfigurieren der angegebenen Knotenressource mittels des Interconnect Switch, mit der angegebenen Beschleunigerressource über die aufgebaute Verbindung zu kommunizieren.
-
Beispiel 8 kann den Ressourcenmanager von Beispiel 7 einschließen, wobei eine Zeitdauer zwischen Empfang des einen oder der mehreren Befehle zum Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb seitens des Interconnect Switch und einer aktiv aufgebauten Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource weniger als 10 Nanosekunden (ns) beträgt.
-
Beispiel 9 kann den Ressourcenmanager nach Beispiel 8 einschließen, wobei eine aktiv aufgebaute Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource Datenfluss zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource einschließt.
-
Beispiel 10 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei der Interconnect Switch ein latenzarmer Umgehungspfad ist, der eine erste und eine zweite Vielzahl von Ports einschließt, wobei jeder von dem ersten Satz von Ports einen Multiplexer mit einer Direktverbindung zu jedem von der zweiten Vielzahl von Ports einschließt, und wobei der Interconnect Switch Befehle von dem RMM empfängt, Verbindungen zwischen einem von dem ersten Satz der Vielzahl von Ports und einem von dem zweiten Satz von der Vielzahl von Ports im laufenden Betrieb zuzufügen oder im laufenden Betrieb zu entfernen.
-
Beispiel 11 kann den Ressourcenmanager nach Beispiel 10 einschließen, wobei einer oder mehrere von dem ersten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Beschleunigerressourcen verbunden sind und einer oder mehrere von dem zweiten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Knotenressourcen verbunden sind.
-
Beispiel 12 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei die Vielzahl der Beschleunigerressourcen ein Field Programmable Gate Array (FPGA), eine grafische Verarbeitungseinheit (Graphical Processor Unit; GPU) oder eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit; ASIC) einschließt.
-
Beispiel 13 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6, wobei die Vielzahl der Knotenressourcen eine zentrale Verarbeitungseinheit (CPU) oder ein System auf einem Chip (SOC) einschließt.
-
Beispiel 14 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei die angegebene Knotenressource eine Vielzahl von CPUs ist, die unter Verwendung von Kohärenz-Links gekoppelt sind.
-
Beispiel 15 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei die angegebene Beschleunigerressource ein Cache für die angegebene Knotenressource ist.
-
Beispiel 16 kann den Ressourcenmanager nach Beispiel 1 einschließen, wobei einige von der Vielzahl von Knotenressourcen sich in unterschiedlichen Kohärenzdomänen befinden.
-
Beispiel 17 kann den Ressourcenmanager nach einem der Beispiele 1 bis 6 einschließen, wobei einige von der Vielzahl von Beschleunigerressourcen unterschiedlichen Kohärenzdomänen zugewiesen sind.
-
Beispiel 18 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei die angegebene Knotenressource einen Peripheral Component Interconnect Express (PCIe)-Port oder einen Intel Accelerator Link (IAL)-Port einschließt.
-
Beispiel 19 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei sich der Ressourcenmanager innerhalb des Interconnect Switch befindet.
-
Beispiel 20 kann den Ressourcenmanager von Beispiel 1 einschließen, wobei der Interconnect Switch eine Vielzahl von Interconnect Switches ist.
-
Beispiel 21 kann den Ressourcenmanager nach einem der Beispiele 1 bis 20 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Racks befinden.
-
Beispiel 22 kann den Ressourcenmanager nach einem der Beispiele 1 bis 20 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Pods befinden.
-
Beispiel 23 kann ein Verfahren zum Managen von Ressourcen sein, welches umfasst: Empfangen einer Angabe einer Knotenressource von einer Vielzahl von Knotenressourcen und einer Angabe von einer Beschleunigerressource von einer Vielzahl von Beschleunigerressourcen, die mit der Knotenressource verbunden werden sollen; falls die angegebene Beschleunigerressource mit einer anderen Knotenressource von der Vielzahl der Knotenressourcen verbunden ist, dann Übertragen von einem oder mehreren Befehlen zum Entfernen im laufenden Betrieb an einen Interconnect Switch; und Übertragen von einem oder mehreren Befehlen zum Zufügen im laufenden Betrieb an den Interconnect Switch.
-
Beispiel 24 kann das Verfahren nach Beispiel 23 einschließen, ferner umfassend Verfolgen von Verbindungen von jeweils der Vielzahl von Beschleunigerressourcen zu der Vielzahl der Knotenressourcen.
-
Beispiel 25 kann das Verfahren von Beispiel 23 einschließen, ferner umfassend Bewirken, dass der Interconnect Switch die angegebene Beschleunigerressource von der Vielzahl von Beschleunigerressourcen mit der angegebenen Knotenressource von der Vielzahl der Knotenressourcen verbindet.
-
Beispiel 26 kann das Verfahren von Beispiel 23 einschließen, wobei der eine oder die mehreren Befehle zum Entfernen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb von der anderen Knotenressource entfernt.
-
Beispiel 27 kann das Verfahren von Beispiel 26 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass bewirkt wird, dass Datenverkehr auf einer Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource zur Ruhe kommt.
-
Beispiel 28 kann das Verfahren von Beispiel 26 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass die Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource abgeschnitten wird.
-
Beispiel 29 kann das Verfahren von Beispiel 23 einschließen, wobei der eine oder die mehreren Befehle zum Zufügen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb der angegebenen Knotenressource zufügt.
-
Beispiel 30 kann das Verfahren nach Beispiel 29 einschließen, wobei das Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb ferner einschließt: Aufbauen einer Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource mittels des Interconnect Switch; Konfigurieren der angegebenen Beschleunigerressource mittels des Interconnect Switch, mit der angegebenen Knotenressource über die aufgebaute Verbindung zu kommunizieren; und Konfigurieren der angegebenen Knotenressource mittels des Interconnect Switch, mit der angegebenen Beschleunigerressource über die aufgebaute Verbindung zu kommunizieren.
-
Beispiel 31 kann das Verfahren von Beispiel 30 einschließen, wobei eine Zeitdauer zwischen Empfang des einen oder der mehreren Befehle zum Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb seitens des Interconnect Switch und einer aktiv aufgebauten Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource weniger als 10 Nanosekunden (ns) beträgt.
-
Beispiel 32 kann das Verfahren von Beispiel 31 einschließen, wobei eine aktiv aufgebaute Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource Datenfluss zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource einschließt.
-
Beispiel 33 kann das Verfahren von Beispiel 23 einschließen, wobei der Interconnect Switch ein latenzarmer Umgehungspfad ist, der eine erste und eine zweite Vielzahl von Ports einschließt, wobei jeder von dem ersten Satz von Ports einen Multiplexer mit einer Direktverbindung zu jedem von der zweiten Vielzahl von Ports einschließt, und ferner umfassend Empfangen von Befehlen, um Verbindungen zwischen einem von dem ersten Satz der Vielzahl von Ports und einem von dem zweiten Satz von der Vielzahl von Ports im laufenden Betrieb zuzufügen oder im laufenden Betrieb zu entfernen, seitens des Interconnect Switch.
-
Beispiel 34 kann das Verfahren von Beispiel 33 einschließen, wobei einer oder mehrere von dem ersten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Beschleunigerressourcen verbunden sind und einer oder mehrere von dem zweiten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Knotenressourcen verbunden sind.
-
Beispiel 35 kann das Verfahren von Beispiel 23 einschließen, wobei die Vielzahl der Beschleunigerressourcen ein Field Programmable Gate Array (FPGA), eine grafische Verarbeitungseinheit (GPU) oder eine anwendungsspezifische integrierte Schaltung (ASIC) einschließt.
-
Beispiel 36 kann das Verfahren von Beispiel 23 einschließen, wobei die Vielzahl der Knotenressourcen eine zentrale Verarbeitungseinheit (CPU) oder ein System auf einem Chip (SOC) einschließt.
-
Beispiel 37 kann das Verfahren von Beispiel 23 einschließen, wobei die angegebene Knotenressource eine Vielzahl von CPUs ist, die unter Verwendung von Kohärenz-Links gekoppelt sind.
-
Beispiel 38 kann das Verfahren von Beispiel 23 einschließen, wobei die angegebene Beschleunigerressource ein Cache für die angegebene Knotenressource ist.
-
Beispiel 39 kann das Verfahren von Beispiel 23 einschließen, wobei einige von der Vielzahl von Knotenressourcen sich in unterschiedlichen Kohärenzdomänen befinden.
-
Beispiel 40 kann das Verfahren von Beispiel 23 einschließen, wobei einige von der Vielzahl von Beschleunigerressourcen unterschiedlichen Kohärenzdomänen zugewiesen sind.
-
Beispiel 41 kann das Verfahren von Beispiel 23 einschließen, wobei die angegebene Knotenressource einen Peripheral Component Interconnect Express (PCIe)-Port oder einen Intel Accelerator Link (IAL)-Port einschließt.
-
Beispiel 42 kann das Verfahren von Beispiel 23 einschließen, wobei das Verfahren innerhalb des Interconnect Switch durchgeführt wird.
-
Beispiel 43 kann das Verfahren von Beispiel 23 einschließen, wobei der Interconnect Switch eine Vielzahl von Interconnect Switches ist.
-
Beispiel 44 kann das Verfahren von einem der Beispiele 23 bis 43 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Racks befinden.
-
Beispiel 45 kann das Verfahren von einem der Beispiele 23 bis 43 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Pods befinden.
-
Beispiel 46 kann ein Ressourcenmanagerapparat sein, welcher umfasst: Mittel zum Empfangen einer Angabe einer Knotenressource von einer Vielzahl von Knotenressourcen und einer Angabe einer Beschleunigerressource von einer Vielzahl von Beschleunigerressourcen, die mit der Knotenressource verbunden werden soll; falls die angegebene Beschleunigerressource mit einer anderen Knotenressource von der Vielzahl der Knotenressourcen verbunden ist, dann Mittel zum Übertragen von einem oder mehreren Befehlen zum Entfernen im laufenden Betrieb an einen Interconnect Switch; und Mittel zum Übertragen von einem oder mehreren Befehlen zum Zufügen im laufenden Betrieb an den Interconnect Switch.
-
Beispiel 47 kann den Apparat von Beispiel 46 einschließen, ferner umfassend Mittel zum Verfolgen von Verbindungen von jeweils der Vielzahl von Beschleunigerressourcen zu der Vielzahl der Knotenressourcen.
-
Beispiel 48 kann den Apparat von Beispiel 46 einschließen, ferner umfassend Mittel zum Bewirken, dass der Interconnect Switch die angegebene Beschleunigerressource von der Vielzahl von Beschleunigerressourcen mit der angegebenen Knotenressource von der Vielzahl der Knotenressourcen verbindet.
-
Beispiel 49 kann den Apparat von Beispiel 46 einschließen, wobei der eine oder die mehreren Befehle zum Entfernen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb von der anderen Knotenressource entfernt.
-
Beispiel 50 kann den Apparat von Beispiel 49 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass bewirkt wird, dass Datenverkehr auf einer Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource zur Ruhe kommt.
-
Beispiel 51 kann den Apparat von Beispiel 49 einschließen, wobei das Entfernen der angegebenen Beschleunigerressource von der anderen Knotenressource im laufenden Betrieb ferner einschließt, dass die Verbindung zwischen der angegebenen Beschleunigerressource und der anderen Knotenressource abgeschntten wird.
-
Beispiel 52 kann den Apparat von Beispiel 46 einschließen, wobei der eine oder die mehreren Befehle zum Zufügen im laufenden Betrieb bewirken sollen, dass der Interconnect Switch die angegebene Beschleunigerressource im laufenden Betrieb der angegebenen Knotenressource zufügt.
-
Beispiel 53 kann den Apparat nach Beispiel 52 einschließen, wobei das Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb ferner einschließt: Aufbauen einer Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource mittels des Interconnect Switch; Konfigurieren der angegebenen Beschleunigerressource mittels des Interconnect Switch, mit der angegebenen Knotenressource über die aufgebaute Verbindung zu kommunizieren; und Konfigurieren der angegebenen Knotenressource mittels des Interconnect Switch, mit der angegebenen Beschleunigerressource über die aufgebaute Verbindung zu kommunizieren.
-
Beispiel 54 kann den Apparat von Beispiel 53 einschließen, wobei eine Zeitdauer zwischen Empfang des einen oder der mehreren Befehle zum Zufügen der angegebenen Beschleunigerressource zu der angegebenen Knotenressource im laufenden Betrieb seitens des Interconnect Switch und einer aktiv aufgebauten Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource weniger als 10 Nanosekunden (ns) beträgt.
-
Beispiel 55 kann den Apparat von Beispiel 54 einschließen, wobei eine aktiv aufgebaute Verbindung zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource Datenfluss zwischen der angegebenen Beschleunigerressource und der angegebenen Knotenressource einschließt.
-
Beispiel 56 kann den Apparat von Beispiel 46 einschließen, wobei der Interconnect Switch ein latenzarmer Umgehungspfad ist, der eine erste und eine zweite Vielzahl von Ports einschließt, wobei jeder von dem ersten Satz von Ports einen Multiplexer mit einer Direktverbindung zu jedem von der zweiten Vielzahl von Ports einschließt, und ferner umfassend Mittel zum Empfangen von Befehlen, um Verbindungen zwischen einem von dem ersten Satz der Vielzahl von Ports und einem von dem zweiten Satz von der Vielzahl von Ports im laufenden Betrieb zuzufügen oder im laufenden Betrieb zu entfernen, seitens des Interconnect Switch.
-
Beispiel 57 kann den Apparat von Beispiel 56 einschließen, wobei einer oder mehrere von dem ersten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Beschleunigerressourcen verbunden sind und einer oder mehrere von dem zweiten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Knotenressourcen verbunden sind.
-
Beispiel 58 kann den Apparat von Beispiel 46 einschließen, wobei die Vielzahl der Beschleunigerressourcen ein Field Programmable Gate Array (FPGA), eine grafische Verarbeitungseinheit (GPU) oder eine anwendungsspezifische integrierte Schaltung (ASIC) einschließt.
-
Beispiel 59 kann den Apparat von Beispiel 46 einschließen, wobei die Vielzahl der Knotenressourcen eine zentrale Verarbeitungseinheit (CPU) oder ein System auf einem Chip (SOC) einschließt.
-
Beispiel 60 kann den Apparat von Beispiel 46 einschließen, wobei die angegebene Knotenressource eine Vielzahl von CPUs ist, die unter Verwendung von Kohärenz-Links gekoppelt sind.
-
Beispiel 61 kann den Apparat von Beispiel 46 einschließen, wobei die angegebene Beschleunigerressource ein Cache für die angegebene Knotenressource ist.
-
Beispiel 62 kann den Apparat von Beispiel 46 einschließen, wobei einige von der Vielzahl von Knotenressourcen sich in unterschiedlichen Kohärenzdomänen befinden.
-
Beispiel 63 kann den Apparat von Beispiel 46 einschließen, wobei einige von der Vielzahl von Beschleunigerressourcen unterschiedlichen Kohärenzdomänen zugewiesen sind.
-
Beispiel 64 kann den Apparat von Beispiel 46 einschließen, wobei die angegebene Knotenressource einen Peripheral Component Interconnect Express (PCIe)-Port oder einen Intel Accelerator Link (IAL)-Port einschließt.
-
Beispiel 65 kann den Apparat von Beispiel 46 einschließen, wobei das Verfahren innerhalb des Interconnect Switch durchgeführt wird.
-
Beispiel 66 kann den Apparat von Beispiel 46 einschließen, wobei der Interconnect Switch eine Vielzahl von Interconnect Switches ist.
-
Beispiel 67 kann den Apparat von einem der Beispiele 46 bis 66 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Racks befinden.
-
Beispiel 68 kann den Apparat von einem der Beispiele 46 bis 66 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Pods befinden.
-
Beispiel 69 kann ein System sein, welches umfasst: einen oder mehrere Prozessoren; ein Ressourcenmanagermodul (RMM), das kommunikativ an den einen oder die mehreren Prozessoren gekoppelt ist, wobei das RMM zum Empfangen einer Angabe einer Knotenressource von einer Vielzahl von Knotenressourcen und einer Angabe einer Beschleunigerressource von einer Vielzahl von Beschleunigerressourcen dient, um sich mit der Knotenressource zu verbinden; falls die angegebene Beschleunigerressource mit einer anderen Knotenressource von der Vielzahl der Knotenressourcen verbunden ist, dann Übertragen von einem oder mehreren Befehlen zum Entfernen im laufenden Betrieb an einen Interconnect Switch; und wobei der Interconnect Switch kommunikativ an das RMM gekoppelt ist, um einen latenzarmen Umgehungspfad zwischen der Vielzahl von Knotenressourcen und der Vielzahl von Beschleunigerressourcen bereitzustellen, umfassend eine erste und eine zweite Vielzahl von Ports, wobei jeder von dem ersten Satz von Ports einen Multiplexer mit einer Direktverbindung zu jedem von der zweiten Vielzahl von Ports einschließt; und wobei der Interconnect Switch dazu dient, einen oder mehrere Befehle zum Entfernen im laufenden Betrieb, die Verbindung einer anderen Knotenressource zu der angegebenen Beschleunigerressource zu trennen, oder Befehle zum Zufügen im laufenden Betrieb zu empfangen, um die angegebene Knotenressource mit der angegebenen Beschleunigerressource zu verbinden.
-
Beispiel 70 kann das System nach Beispiel 69 einschließen, wobei das RMM direkt mit der Vielzahl von Multiplexern kommunizieren soll.
-
Beispiel 71 kann das System von einem der Beispiele 69 bis 70 einschließen, wobei einer oder mehrere von dem ersten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Beschleunigerressourcen verbunden sind und einer oder mehrere von dem zweiten Satz von Ports jeweils mit einem oder mehreren von der Vielzahl der Knotenressourcen verbunden sind.
-
Beispiel 72 kann das System von Beispiel 69 einschließen, wobei die Vielzahl der Beschleunigerressourcen ein Field Programmable Gate Array (FPGA), eine grafische Verarbeitungseinheit (GPU) oder eine anwendungsspezifische integrierte Schaltung (ASIC) einschließt.
-
Beispiel 73 kann das System von Beispiel 69 einschließen, wobei die Vielzahl der Knotenressourcen eine zentrale Verarbeitungseinheit (CPU) oder ein System auf einem Chip (SOC) einschließt.
-
Beispiel 74 kann das System von Beispiel 69 einschließen, wobei die angegebene Knotenressource eine Vielzahl von CPUs ist, die unter Verwendung von Kohärenz-Links gekoppelt sind.
-
Beispiel 75 kann das System von Beispiel 69 einschließen, wobei die angegebene Beschleunigerressource ein Cache für die angegebene Knotenressource ist.
-
Beispiel 76 kann das System von Beispiel 69 einschließen, wobei einige von der Vielzahl von Knotenressourcen sich in unterschiedlichen Kohärenzdomänen befinden.
-
Beispiel 77 kann das System von Beispiel 69 einschließen, wobei einige von der Vielzahl von Beschleunigerressourcen unterschiedlichen Kohärenzdomänen zugewiesen sind.
-
Beispiel 78 kann das System von Beispiel 69 einschließen, wobei die angegebene Knotenressource einen Peripheral Component Interconnect Express (PCIe)-Port oder einen Intel Accelerator Link (IAL)-Port einschließt.
-
Beispiel 79 kann das System von Beispiel 69 einschließen, wobei sich das RMM-Modul innerhalb des Interconnect Switch befindet.
-
Beispiel 80 kann das System von Beispiel 69 einschließen, wobei der Interconnect Switch eine Vielzahl von Interconnect Switches ist.
-
Beispiel 81 kann das System von einem der Beispiele 69 bis 80 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Racks befinden.
-
Beispiel 82 kann das System von einem der Beispiele 69 bis 80 einschließen, wobei die angegebene Knotenressource und die angegebene Beschleunigerressource sich in unterschiedlichen Pods befinden.