[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE112013006063T5 - Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung - Google Patents

Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung Download PDF

Info

Publication number
DE112013006063T5
DE112013006063T5 DE112013006063.9T DE112013006063T DE112013006063T5 DE 112013006063 T5 DE112013006063 T5 DE 112013006063T5 DE 112013006063 T DE112013006063 T DE 112013006063T DE 112013006063 T5 DE112013006063 T5 DE 112013006063T5
Authority
DE
Germany
Prior art keywords
window
client
communication channel
interface unit
memory
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.)
Granted
Application number
DE112013006063.9T
Other languages
English (en)
Other versions
DE112013006063B4 (de
Inventor
Timothy J. Schimke
Ellen M. Bauman
Jesse P. Arroyo
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013006063T5 publication Critical patent/DE112013006063T5/de
Application granted granted Critical
Publication of DE112013006063B4 publication Critical patent/DE112013006063B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

Ein Verfahren, eine Vorrichtung und ein Programmprodukt realisieren eine Funktionsübernahme für einen Datenübertragungskanal in einer Cluster-Struktur, die einen Zustand des Datenübertragungskanals zwischen Fenstern überträgt, die sich in einer Hardware-Strukturschnittstelleneinheit befinden. Die Funktionsübernahme wird vorzugsweise realisiert, indem eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen in einem Host-Arbeitsspeicher und Hardware-Ressourcen in der Strukturschnittstelleneinheit aktualisiert wird, und üblicherweise ohne die Arbeitsspeicherressourcen zu ändern, so dass eine Einbeziehung eines Clients, der den Datenübertragungskanal bei der Funktionsübernahme nutzt, auf ein Mindestmaß reduziert oder vollständig vermieden wird.

Description

  • Gebiet der Erfindung
  • Die Erfindung bezieht sich im Allgemeinen auf Datenverarbeitungssysteme und im Besonderen auf ein Verarbeiten von Datenübertragungsausfällen in verteilten Datenverarbeitungssystemen.
  • Hintergrund der Erfindung
  • In der Computertechnik ist hinreichend bekannt, dass sich eine höhere Leistung eines Computersystems erhalten lässt, indem die Verarbeitungsleistung mehrerer einzelner Verarbeitungseinheiten nutzbar gemacht wird. Mehrprozessorsysteme (MP-Systeme) können eine Reihe von unterschiedlichen Topologien realisieren, bei denen abhängig von den Leistungsanforderungen und der Software-Umgebung der jeweiligen Anwendung verschiedene Topologien für bestimmte Anwendungen besser geeignet sein können als andere. Eine gebräuchliche MP-Computerarchitektur ist eine symmetrische Mehrprozessorarchitektur (Symmetric Multi-Processor, SMP), bei der sich mehrere Verarbeitungseinheiten, die jeweils durch eine Mehrebenen-Cache-Hierarchie unterstützt werden, einen gemeinsamen Vorrat an Ressourcen teilen, z. B. einen Systemarbeitsspeicher und ein Eingabe/Ausgabe-Teilsystem (E/A-Teilsystem), die häufig mit einem gemeinsam genutzten Systemverbindungsnetzwerk gekoppelt sind.
  • Obwohl SMP-Computersysteme die Verwendung von vergleichsweise einfachen Methoden für eine Datenübertragung und gemeinsame Datennutzung zwischen Prozessoren gestatten, weisen SMP-Computersysteme eine begrenzte Skalierbarkeit auf. So leiden viele SMP-Architekturen mit zunehmender Systemgröße zu einem gewissen Grad z. B. unter Bandbreitenbeschränkungen, insbesondere mit Blick auf den Systemarbeitsspeicher.
  • Um die Beschränkungen hinsichtlich der Skalierbarkeit und Erweiterbarkeit von SMP-Computersystemen zu beheben, wurde auch eine alternative MP-Computersystem-Topologie eingesetzt, die als NUMA (Non-Uniform Memory Access, nicht einheitlicher Speicherzugriff) bekannt ist. Ein herkömmliches NUMA-Computersystem enthält einen Schalter oder ein anderes globales Verbindungsnetzwerk, mit dem mehrere Knoten verbunden sind, die jeweils als ein kleines SMP-System realisiert sein können. Verarbeitungseinheiten in den Knoten haben den Vorteil vergleichsweise geringer Zugriffslatenzzeiten für Daten, die in dem lokalen Systemarbeitsspeicher der entsprechenden Knoten der Verarbeitungseinheiten enthalten sind, leiden jedoch unter erheblich höheren Zugriffslatenzzeiten für Daten, die in den Systemarbeitsspeichern von entfernt angeordneten Knoten enthalten sind. Die Latenzzeiten für den Zugriff auf den Systemarbeitsspeicher sind somit nicht einheitlich. Da jeder Knoten über seine eigenen Ressourcen verfügt, weisen NUMA-Systeme eine potenziell höhere Skalierbarkeit auf als SMP-Systeme.
  • Unabhängig davon, ob es sich um ein SMP-, ein NUMA- oder ein anderweitiges MP-Datenverarbeitungssystem handelt, greift jede Verarbeitungseinheit üblicherweise auf Daten zu, die sich in arbeitsspeicherorientierten Speicherpositionen befinden (wobei es sich um einen physischen Systemarbeitsspeicher, einen Cache-Arbeitsspeicher oder um eine weitere Systemressource handeln kann), indem sie reale Adressen verwendet, um die relevanten Speicherpositionen zu identifizieren. Ein wichtiges Merkmal realer Adressen besteht darin, dass für jede arbeitsspeicherorientierte physische Speicherposition eine eindeutige reale Adresse vorhanden ist.
  • Da die Eins-zu-eins-Beziehung zwischen arbeitsspeicherorientierten physischen Speicherpositionen und realen Adressen zwangsläufig die Anzahl von Speicherpositionen begrenzt, die durch Software referenziert werden können, verwenden die Verarbeitungseinheiten der meisten gewerblichen MP-Datenverarbeitungssysteme eine Arbeitsspeichervirtualisierung, um die Anzahl adressierbarer Speicherpositionen zu vergrößern. Tatsächlich kann die Größe des virtuellen Arbeitsspeicheradressraums um mehrere Größenordnungen über der Größe des realen Adressraums liegen. In herkömmlichen Systemen verweisen Verarbeitungseinheiten somit intern anhand der virtuellen (oder effektiven) Adressen auf Arbeitsspeicherpositionen und führen anschließend Umsetzungen von virtuellen in reale Adressen durch (wobei dies häufig über einen oder mehrere zwischengeschaltete logische Adressräume erfolgt), um auf die Arbeitsspeicherpositionen zuzugreifen, die durch die realen Adressen angegeben werden.
  • Angesichts der Verfügbarkeit der obigen MP-Systeme bestand eine weitere Entwicklung in der Datenverarbeitungstechnologie in der Einführung einer parallelen Datenverarbeitung. Bei einer parallelen Datenverarbeitung sind mehrere Prozessorknoten über ein Systemverbindungsnetzwerk oder eine Systemstruktur miteinander verbunden. Diese mehreren Prozessorknoten werden dann dazu verwendet, spezifische Aufgaben durchzuführen, bei denen es sich um einzelne/unabhängige Aufgaben oder um Teile eines größeren Auftrags handeln kann, der aus mehreren Aufgaben besteht.
  • Bei derartigen Systemen ist das Koordinieren von Datenübertragungen zwischen den mehreren Prozessorknoten von größter Bedeutung, um eine schnelle und effiziente Handhabung von Verarbeitungsprozessen sicherzustellen. Ein Datenübertragungsverlust zwischen Koordinationsprozessen in verschiedenen Datenverarbeitungsknoten (z. B. Benutzeraufträge oder Betriebssysteminstanzen) führt bekanntermaßen zu Verzögerung/Verlust beim Auftragsverlauf, zu einer langwierigen Wiederherstellung und/oder zu Systemschwankungen, wodurch im Endeffekt Datenverarbeitungsressourcen und Leistung verschwendet werden und das letztlich erzielte Ergebnis verzögert wird.
  • Verschiedene MP-Systemtechnologien verwenden verschiedene Arten von Datenübertragungskanälen, um eine Datenübertragung zwischen Koordinationsprozessen zu unterstützen. So können in MP-Systemen, die als HPC-Cluster (High Performance, Hochleistungsdatenverarbeitung) realisiert sind, Datenübertragungskanäle z. B. als „Fenster” realisiert sein, die in einem oder mehreren HFI-Adaptern (Host Fabric Interface, Host-Strukturschnittstelle) zur Verfügung stehen. Bei anderen Arten von HPC-Clustern können die Datenübertragungskanäle als Warteschlangenpaare in einem HCA (Host Channel Adapter, Host-Kanaladapter) realisiert sein.
  • Um möglichen Datenübertragungsverlusten entgegen zu wirken, verschicken manche MP-Systeme mehrere identische Kopien von Datenverarbeitungsaufträgen über unterschiedliche Datenverarbeitungsknoten. Dies verdoppelt jedoch die Nutzung von CPU-/Arbeitsspeicherressourcen und Bandbreite und erfordert das Zusammenführen/Verwerfen von Ergebnissen, die von mehreren Quellen zurückgemeldet werden.
  • Andere MP-Systeme verwenden mehrere aktive Datenübertragungskanäle in einer Aktiv/Aktiv-Umlaufkonfiguration. Dies erfordert jedoch zusätzliche Kanalressourcen, die pro End-Client (Datenverarbeitungsauftrag) zugewiesen werden müssen, zusätzliche Ressourcen, um mehrere Kanäle zu verwalten, und zusätzlichen Verarbeitungsaufwand in Benutzeraufträgen oder Betriebssystembibliotheken, um das Zusammenführen von Datenübertragungsströmen zu verwalten. Darüber hinaus gehen etwaige Operationen, die sich in der Warteschlange einer ausgefallenen Hardware befinden, häufig verloren, da ein Ausfall eines Kanals oft nur durch einen Software-Zeitmesser mit einem langen Zeitintervall erkannt werden kann.
  • Bei noch anderen MP-Systemen können mehrere Datenübertragungskanäle in einer Aktiv/Passiv-Konfiguration verwendet werden. Allerdings erfordern solche Lösungen, dass pro End-Client (Datenverarbeitungsauftrag) zusätzliche Kanalressourcen zugewiesen werden, von denen die meisten nie verwendet werden. Zusätzliche Ressourcen werden üblicherweise auch benötigt, um mehrere Kanäle zu verwalten, und etwaige Operationen, die sich in der Warteschlange der ausgefallenen Hardware befinden, gehen üblicherweise verloren. Darüber hinaus kann ein Ausfall eines Kanals üblicherweise nur durch einen Software-Zeitgeber mit einem langen Zeitintervall erkannt werden.
  • Aus diesem Grund besteht nach dem Stand der Technik ein erheblicher Bedarf an einer verbesserten Art und Weise, Ausfälle von Datenübertragungskanälen in einem HPC-Cluster oder einem anderen MP-System zu verarbeiten, im Besonderen für eine Art und Weise, Ausfälle von Datenübertragungskanälen zu verarbeiten, welche die Zeit bis zur Funktionsübernahme verringert, die Anzahl von verworfenen Paketen verringert, den Bedarf an zusätzlichen dedizierten Ressourcen verringert und/oder eine größere Konfigurationsflexibilität als herkömmliche Ansätze erlaubt.
  • Zusammenfassung der Erfindung
  • Die Erfindung löst diese und andere Probleme in Zusammenhang mit dem Stand der Technik, indem sie eine Funktionsübernahme für einen Datenübertragungskanal in einer Cluster-Struktur bereitstellt, die einen Zustand des Datenübertragungskanals zwischen Fenstern überträgt, welche sich in einer HFI-Einheit befinden. Die Funktionsübernahme wird vorzugsweise realisiert, indem eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen in einem Host-Arbeitsspeicher und Hardware-Ressourcen in der Strukturschnittstelleneinheit aktualisiert wird, und üblicherweise ohne die Arbeitsspeicherressourcen geändert zu ändern, so dass eine Einbeziehung eines Clients, der den Datenübertragungskanal bei der Funktionsübernahme nutzt, auf ein Mindestmaß reduziert oder vollständig vermieden wird.
  • Im Einklang mit einem Aspekt der Erfindung wird folglich eine Funktionsübernahme für einen Datenübertragungskanal in einem Cluster-Computersystem durchgeführt, indem in einer Strukturschnittstelleneinheit ein Client-Zugriff auf eine Cluster-Struktur über einen Datenübertragungskanal unter Verwendung eines ersten Fensters hergestellt wird, wobei das erste Fenster einen Zustand des Datenübertragungskanals für den Client definiert und wobei das Fenster eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen, die dem Client zugeordnet sind, und ersten Hardware-Ressourcen enthält, die dem ersten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, indem als Reaktion auf ein Erkennen eines Ausfalls in dem Datenübertragungskanal der durch das erste Fenster definierte Zustand auf ein zweites Fenster übertragen wird, indem die Vielzahl von Abbildungen aktualisiert wird, um die Arbeitsspeicherressourcen, die dem Client zugeordnet sind, auf die zweiten Hardware-Ressourcen abzubilden, die dem zweiten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, und indem ein Client-Zugriff auf die Cluster-Struktur über den Datenübertragungskanal unter Verwendung des zweiten Fensters wiederhergestellt wird.
  • Diese und andere Vorteile und Merkmale, welche die Erfindung kennzeichnen, sind in den angehängten Ansprüchen dargelegt und bilden einen weiteren Teil hiervon. Zum besseren Verständnis der Erfindung sowie der Vorteile und Ziele, die durch ihre Verwendung erreicht werden, sollte auf die Zeichnungen und die beigefügten Beschreibungen Bezug genommen werden, in denen als Beispiel dienende Ausführungsformen der Erfindung beschrieben werden.
  • Kurzbeschreibung der Zeichnungen
  • 1 veranschaulicht ein als Beispiel dienendes Mehrknoten-Datenverarbeitungssystem mit einer Host-Strukturschnittstelle (Host Fabric Interface, HFI), die in jedem Knoten bereitgestellt wird, um eine Funktionsübernahme für einen Datenübertragungskanal im Einklang mit der Erfindung zu ermöglichen.
  • 2 veranschaulicht die Zuordnung von Aufgaben eines einzelnen Auftrags zu Partitionen und Knoten in dem Datenverarbeitungssystem aus 1.
  • 3 ist ein Blockschaubild, das Komponenten eines als Beispiel dienenden sendenden (initiierenden) Knotens und eines Zielknotens veranschaulicht, die zum Verarbeiten von GSM-Operationen (Global Shared Memory, globaler gemeinsam genutzter Arbeitsspeicher) in dem Datenverarbeitungssystem aus 1 verwendet werden.
  • 4 veranschaulicht eine ausführliche Ansicht eines als Beispiel dienenden HFI-Fensters und der Zuweisung von Fenstereinträgen zu spezifischen Arbeitsspeicherpositionen innerhalb des realen (d. h. physischen) Arbeitsspeichers in dem Datenverarbeitungssystem aus 1.
  • 5 ist ein Blockschaubild, das ein als Beispiel dienendes Datenverarbeitungssystem vor einer Funktionsübernahme für einen Datenübertragungskanal im Einklang mit der Erfindung veranschaulicht.
  • 6 ist ein allgemeiner Ablaufplan, der eine als Beispiel dienende Abfolge von Operationen veranschaulicht, mit denen eine Funktionsübernahme für einen Datenübertragungskanal in dem Datenverarbeitungssystem aus 5 realisiert wird.
  • Die 7A und 7B bilden einen Ablaufplan, der mit größerer Ausführlichkeit eine als Beispiel dienende Abfolge von Operationen veranschaulicht, mit denen eine Funktionsübernahme für einen Datenübertragungskanal in dem Datenverarbeitungssystem aus 5 realisiert wird.
  • 8 ist ein Blockschaubild, welches das Datenverarbeitungssystem aus 5 nach einer Funktionsübernahme für einen Datenübertragungskanal im Einklang mit der Erfindung veranschaulicht.
  • Ausführliche Beschreibung
  • Mit Blick auf die Zeichnungen, bei denen gleichlautende Ziffern in den diversen Ansichten gleiche Teile bezeichnen, veranschaulicht 1 ein allgemeines Blockschaubild, das eine erste Ansicht eines als Beispiel dienenden Datenverarbeitungssystems 100 gemäß einer veranschaulichenden Ausführungsform der Erfindung abbildet, welches mit zwei Knoten konfiguriert ist, die über entsprechende Host-Strukturschnittstellen verbunden sind, und innerhalb dessen viele der Funktionsmerkmale der Erfindung realisiert sein können. Wie gezeigt, enthält das Datenverarbeitungssystem 100 mehrere Verarbeitungsknoten 102A, 102B (zusammengefasst 102) zum Verarbeiten von Daten und Befehlen. Die Verarbeitungsknoten 102 sind über eine HFI 120 mit einer Verbindungsnetzwerkstruktur 110 gekoppelt, die gemäß einem oder mehreren Verbindungsnetzwerk- und/oder Netzwerkprotokollen die Datenübertragung zwischen den Verarbeitungsknoten 102 unterstützt. Die Verbindungsnetzwerkstruktur 110 kann z. B. unter Verwendung von einem oder mehreren Bussen, Schaltern und/oder Netzwerken realisiert sein. Die HFI 120 kann jeden der mehreren Mechanismen dazu verwenden, über das Verbindungsnetzwerk 110 Daten zu übertragen. So kann die HFI 120 beispielsweise und ohne darauf beschränkt zu sein über ein proprietäres Protokoll oder ein Protokoll nach Industriestandard wie z. B. Inifiniband, Ethernet oder IP (Internet Protocol) Daten übertragen.
  • Gemäß der hier vorliegenden Verwendung ist der Begriff „Verarbeitungsknoten” (oder einfach „Knoten”) als der Satz von Verarbeitungsressourcen definiert, welche die Domäne eines kohärenten Betriebssystembilds bilden. Der Klarheit wegen sollte deutlich sein, dass je nach Konfiguration ein einzelnes physisches System mehrere Knoten enthalten kann. Die Anzahl der in einem gegebenen System bereitgestellten Verarbeitungsknoten 102 ist abhängig von der Realisierung und kann stark schwanken, z. B. von einigen wenigen Knoten bis hin zu vielen tausend Knoten.
  • Jeder Verarbeitungsknoten 102 kann z. B. als ein einzelner IC-Chip (z. B. ein System-On-a-Chip (SOC)), ein Multi-Chip-Modul (MCM) oder als Schaltkarte realisiert sein, die eine oder mehrere Verarbeitungseinheiten 104 (z. B. Verarbeitungseinheiten 104A, 104B) zum Verarbeiten von Befehlen und Daten enthält. Des Weiteren kann jede Verarbeitungseinheit 104 gleichzeitig einen oder mehrere Hardware-Ausführungs-Threads ausführen.
  • Wie gezeigt, wird jede Verarbeitungseinheit 104 durch einen Cache-Arbeitsspeicher 112 unterstützt, der eine oder mehrere Stufen eines Inline- oder Umsetz-Caches enthält. Wie nach dem Stand der Technik bekannt ist, stellen die Cache-Arbeitsspeicher 112 den Verarbeitungseinheiten 104 einen Zugriff mit geringer Latenzzeit auf Befehle und Daten bereit, die von einer bzw. mehreren Quellen innerhalb desselben Verarbeitungsknotens 102A und/oder eines oder mehrerer entfernter Verarbeitungsknoten(s) 102B empfangen werden. Die Verarbeitungseinheiten 104 innerhalb eines jeden Verarbeitungsknotens 102 sind mit einem lokalen Verbindungsnetzwerk 114 gekoppelt, das z. B. mit einem oder mehreren Bussen und/oder Schaltern realisiert sein kann. Das lokale Verbindungsnetzwerk 114 ist des Weiteren mit einer HFI 120 gekoppelt, um eine Datenübertragung zwischen den Verarbeitungsknoten 102A, 102B zu unterstützen.
  • Wie in 1 des Weiteren veranschaulicht ist, enthalten die Verarbeitungsknoten 102 üblicherweise mindestens eine Arbeitsspeicher-Steuereinheit 106, die mit dem lokalen Verbindungsnetzwerk 114 gekoppelt sein kann, um eine Schnittstelle zu einem entsprechenden physischen Systemarbeitsspeicher 108 bereitzustellen. Bei alternativen Ausführungsformen der Erfindung können eine oder mehrere Arbeitsspeicher-Steuereinheiten 106 mit der Verbindungsnetzwerkstruktur 110 oder anstelle eines lokalen Verbindungsnetzwerks 114 direkt mit einer Verarbeitungseinheit 104 gekoppelt sein.
  • Zusätzlich zu einer Arbeitsspeicher-Steuereinheit kann jede Verarbeitungseinheit 104 auch eine MMU (Memory Management Unit, Arbeitsspeicherverwaltungseinheit) 105 beinhalten, um effektive Adressen in reale (oder physische) Adressen umzusetzen. Diese MMUs 105 führen Umsetzungen von effektiven Adressen (EAs) in reale Adressen (RAs) für Aufgaben durch, die in Verarbeitungsknoten (z. B. dem Knoten 102A) des Datenverarbeitungssystems 100 ausgeführt werden. Dabei kann jedoch auch eine separate MMU 121, die mit dem lokalen Verbindungsnetzwerk 114 gekoppelt ist, verwendet werden, um EA-zu-RA-Umsetzungen für Operationen durchzuführen, die von Aufgaben empfangen werden, welche in entfernt angeordneten Verarbeitungsknoten (z. B. dem Knoten 102B) des Datenverarbeitungssystems 100 ausgeführt werden. Bei einer Realisierung von Prozessorkonfigurationen kann die MMU 121 mit der HFI 120 integriert sein, um damit EA-zu-RA-Adressumsetzungen zu unterstützen, die von einer HFI benötigt werden, und/oder um Aufgaben zu unterstützen, die eine HFI verwenden, um GSM-Operationen abzuschließen.
  • Mit der HFI 120A und den unten beschriebenen Funktionskomponenten hiervon sind die in den Verarbeitungseinheiten 104A/104B Aufgabe(n) in der Lage, Operationen für einen Zugriff auf den physischen Arbeitsspeicher 108B anderer Knoten zu erzeugen, die andere Aufgaben des parallelen Auftrags ausführen, wobei EAs eines gemeinsam genutzten globalen Adressraums (Global Address Space, GAS) und eines GSM verwendet werden. Entsprechend ermöglicht die HFI 120B einen Zugriff durch die Aufgabe(n) in dem initiierenden Knoten 102A, um auf den physischen Arbeitsspeicher 108B zuzugreifen, wenn bestimmte Kriterien erfüllt sind.
  • Der Fachmann weiß, dass das Datenverarbeitungssystem 100 aus 1 viele zusätzliche Komponenten beinhalten kann, die hier nicht veranschaulicht sind, wie beispielsweise Verbindungsnetzwerk-Brücken, nicht flüchtigen Speicher, Anschlüsse für eine Verbindung mit Netzwerken oder angeschlossenen Einheiten usw. Da solche zusätzlichen Komponenten zum Verständnis der vorliegenden Erfindung nicht zwingend erforderlich sind, sind sie in 1 nicht veranschaulicht bzw. werden hier nicht weiter erörtert.
  • Die oben beschriebenen physischen Darstellungen von Knoten eines als Beispiel dienenden Datenverarbeitungssystems 100 mit HFIs unterstützt die Verteilung von Aufgaben, die einem parallelen Auftrag zugeordnet sind, über mehrere Knoten hinweg innerhalb eines größeren Systems mit einem GSM. 2 veranschaulicht eine allgemeine Ansicht eines Verarbeitens von mehreren Aufgaben eines parallelen Auftrags innerhalb einer als Beispiel dienenden Software-Umgebung für das Datenverarbeitungssystem 100 gemäß einer als Beispiel dienenden Ausführungsform. Bei der als Beispiel dienenden Ausführungsform enthält das Datenverarbeitungssystem 100 mindestens zwei physische Systeme 200A und 200B (welche die Verarbeitungsknoten 102A bzw. 102B aus 1 bereitstellen), die durch die Verbindungsnetzwerkstruktur 110 gekoppelt sind. In der abgebildeten Ausführungsform enthält jedes physische System 200 mindestens zwei gleichzeitige Knoten. Das heißt, das physische System 200A enthält einen ersten Knoten, der einem Betriebssystem 204A1 entspricht, und einen zweiten Knoten, der einem Betriebssystem 204A2 entspricht. In gleicher Weise enthält das physische System 200A einen ersten Knoten, der einem Betriebssystem 204B1 entspricht, und einen zweiten Knoten, der einem Betriebssystem 204B2 entspricht. Die gleichzeitig in jedem physischen System 200 ausgeführten Betriebssysteme 204 können homogen oder heterogen sein. Insbesondere wird aus Gründen der Einfachheit in den Beschreibungen der GSM- und HFI-Funktionen hier nur jeweils ein Knoten eines jeden physischen Systems verwendet, obwohl die Merkmale der Erfindung auch vollständig auf Aufgaben anwendbar sind, die in einem beliebigen von mehreren Knoten in einem einzelnen physischen System ausgeführt werden, welche auf einen physischen Arbeitsspeicher von anderen Knoten in einem oder mehreren anderen physischen Systemen zugreifen.
  • Jedes physische System 200 kann des Weiteren eine Instanz eines Hypervisors 202 beinhalten (der auch als ein Monitordienst für eine virtuelle Maschine [Virtual Machine Monitor, VMM] bezeichnet wird). Der Hypervisor 202 ist ein Programm, das die vollständige Virtualisierung oder Paravirtualisierung der Ressourcen des physischen Systems 200 verwaltet und als ein Betriebssystem-Supervisor dient. In dieser Funktion steuert der Hypervisor 202 die Erzeugung und Löschung von Knoten und die Zuordnung der Ressourcen des physischen Systems 200 zu Knoten.
  • Die Ausführung von parallelen Aufträgen in dem Datenverarbeitungssystem 100 kann auch einen GSM verwenden, der mehrere Knoten in die Lage versetzt,, die Aufgaben eines parallelen Auftrags ausführen, auf einen gemeinsam genutzten effektiven Adressraum zuzugreifen, der hier als ein GAS bezeichnet wird. Auf diese Weise kann das Verarbeitungssystem 100 mehrere unterschiedliche Arten von Aufgaben ausführen. Erstens kann das Datenverarbeitungssystem 100 herkömmliche (einzelne) Aufgaben C, F, G, K, L, P, Q, T, V und W ausführen, die unter den Betriebssystemen 204 unabhängig voneinander ausgeführt werden. Zweitens kann das Datenverarbeitungssystem 100 parallele Aufträge wie z. B. Auftrag 2 ausführen, deren Aufgaben auf einen einzelnen Knoten beschränkt sind. Die Aufgaben D und E werden dabei innerhalb des Knotens ausgeführt, der dem Betriebssystem 204A1 des physischen Systems 200A entspricht, und können Arbeitsspeicher kohärent gemeinsam nutzen. Drittens kann das Datenverarbeitungssystem 100 parallele Aufträge wie z. B. Auftrag 1 ausführen, die mehrere Knoten und sogar mehrere physischen Systeme 200 umspannen. In dem abgebildeten Betriebsszenario werden die Aufgaben A und B von Auftrag 1 z. B. von dem Betriebssystem 204A1, die Aufgaben H und J von Auftrag 1 von dem Betriebssystem 204A2, die Aufgaben M und N von Auftrag 1 von dem Betriebssystem 204B1 und die Aufgaben R und S von Auftrag 1 von dem Betriebssystem 204B2 ausgeführt. Wie veranschaulicht, dürfen Aufgaben mehrerer verschiedener Aufträge (z. B. Auftrag 1 und Auftrag 2) innerhalb eines einzelnen Knotens gleichzeitig ausgeführt werden.
  • Bei einem Aufgabe für Aufgabe durchgeführten Standardbetrieb müssen Aufgaben, die in demselben Knoten ausgeführt werden, d. h. Aufgaben, die derselben physischen Einheit zugehörig sind, die HFI nicht verwenden und eine EA-zu-RA-Abbildung nicht über die Standardseitentabelle hinaus auflösen. Die HFI- und/oder MMU-Komponenten werden somit nicht verwendet, wenn Operationen zwischen Aufgaben in ein und demselben physischen Knoten ausgetauscht werden. Wenn Aufgaben jedoch in verschiedenen physischen Knoten ausgeführt werden, kann die Verwendung der MMU und HFI erforderlich sein, um korrekte EA-zu-RA-Umsetzungen für Aufgaben zu ermöglichen, die dem spezifischen Knoten zugehörig sind, wenn GSM-Operationen abgesetzt und/oder empfangen werden.
  • Um die Erzeugung und Ausführung von Aufträgen zu erleichtern, können wahlweise zusätzliche Anwendungen unter den Betriebssystemen 204 ausgeführt werden. So zeigt 2 z. B. ein Auftragsverwaltungsprogramm 206 wie beispielsweise ein Programm für die Auslastungsnivellierung (Load Leveler), das unter dem Betriebssystem 204A1 ausgeführt wird, und eine Laufzeitumgebung 208 wie z. B. Parallel Operating Environment (POE), die unter dem Betriebssystem 204A2 ausgeführt wird.
  • Mit Blick auf 3 wird eine weitere ausführlichere Ansicht des Datenverarbeitungssystems 100 aus den 1 und 2 mit den Hardware-(und Software-)Konstrukten gezeigt, die für Erzeugung, Übertragung, Empfang und Verarbeitung von GSM-Operationen zwischen physischen Knoten innerhalb einer GSM-Umgebung notwendig sind. Der erste Computerknoten 102A (initiierender oder sendender Knoten) und der zweite Computerknoten 102B (Ziel- oder empfangender Knoten) beinhalten die HFI 120A bzw. 120B. Die HFI 120 ist ein Hardware-Konstrukt, das sich in der kohärenten Struktur innerhalb eines (Prozessor-)Chips befindet. Jede HFI 120 stellt ein oder mehrere Fenster 445 (und 446) (siehe 4) bereit, die einer bestimmten ausgeführten Aufgabe eines parallelen Auftrags zugeordnet sind.
  • Wenn eine ausgeführte Aufgabe eines parallelen Auftrags einen Systeminitialisierungsaufruf ausgibt, versucht das Betriebssystem des Knotens, ein eigens hierfür vorgesehenes Fenster in der HFI für diese Aufgabe herzustellen. Wenn die Operation erfolgreich ist, wird ein Teil des zugeordneten HFI-Fensters zunächst auf den Adressraum der Aufgabe abgebildet. Der MMIO-Bereich (Memory Mapped Input Output, arbeitsspeicherorientierte Eingabe/Ausgabe) enthält einen Befehlsbereich und FIFO-Zeiger. Nachdem der betreffende Teil des effektiven Adressraums der Aufgabe reserviert (d. h. auf den physischen Arbeitsspeicher abgebildet) ist, richtet das Betriebssystem das Fenster so ein, dass es auf die Seitentabelle für die Aufgabe zeigt, so dass effektive Adressen innerhalb von eingehenden (d. h. von dem Verbindungsnetzwerk kommenden) GSM-Befehlen umgesetzt werden können.
  • In dem Verarbeitungssystem 100 stellt der erste Knoten 102A den sendenden/initiierenden Knoten dar und ist mit einer Sende-FIFO 407 innerhalb eines Arbeitsspeichers 405 dargestellt, auf den über eine MMIO 411 zugegriffen werden kann. Der zweite Knoten 102B stellt den empfangenden oder Zielknoten dar und ist mit einer Empfangs-FIFO 408 innerhalb ihres Arbeitsspeichers 406 dargestellt. Obwohl eine asymmetrische Ansicht gezeigt ist, sollte klar sein, dass beide Verarbeitungsknoten 102A und 102B ähnlich konfiguriert sind, da sie sowohl über die Sende-FIFO 407 und die Empfangs-FIFO 408 verfügen, und dass jeder Knoten in der Lage ist, sowohl Sende- als auch Empfangsfunktionen durchzuführen. Innerhalb des Verarbeitungssystems 100 ist die HFI 120 das primäre Hardware-Element, das den Zugriff auf das Verbindungsnetzwerk verwaltet. Das Verbindungsnetzwerk wird in der Regel durch Verbindungen 455A, 455, einen Wegewahlschalter 410 und eine Reihe von Schalterelementen 450A, 450B und 460 dargestellt. Die HFI 120A ermöglicht somit einer Aufgabe, die in einem sendenden Knoten (120A) ausgeführt wird, GSM-Operationen (mit einem Ziel, das durch die Auftragskennung, die Knotenkennung und die Fensterkennung identifiziert ist) an einen empfangenden/Zielknoten 102B zu senden.
  • Wie in 3 des Weiteren veranschaulicht ist, enthalten die Verarbeitungsknoten 102 mindestens eine Arbeitsspeicher-Steuereinheit 106, die mit einer lokalen Struktur 414 gekoppelt ist, um eine Schnittstelle zwischen der HFI 120 und einem entsprechenden physischen Systemarbeitsspeicher (DIMMs) 430 bereitzustellen. Die Verarbeitungsknoten 102 beinhalten außerdem die MMU 121, die mit dem Strukturbus 414 gekoppelt ist. Die MMU 121 kann ein Teil der HFI 120 (d. h. in diese integriert) sein und stellt die EA-zu-RA-Umsetzung bereit, die für eine GSM-Operationsverarbeitung durch die HFI 120 notwendig ist. Ein Prozessor-Cache 412, der wiederum mit Verarbeitungseinheiten des Zentralprozessors verbunden ist, ist mit dem Strukturbus 414 gekoppelt. Ebenfalls veranschaulicht ist (aus der Perspektive der ausgeführten Aufgabe) eine Ansicht der Abbildung von EAs auf den physischen Arbeitsspeicherbereich 405, welcher der ausgeführten Aufgabe zugeordnet ist. Innerhalb dieser virtuellen Ansicht des physischen Arbeitsspeichers befindet sich eine Sende-FIFO 407, die zum Speichern von Befehlen und Daten verwendet wird, welche durch die Aufgabe erzeugt werden, bevor sie durch die HFI 120 verarbeitet werden, um GSM-Operationen zu erzeugen. Veranschaulicht ist ebenfalls eine HFI-Turklingel-Einheit 409, bei der es sich um einen Mechanismus handelt, der die Anzahl von Operationen innerhalb der Sende-FIFO überwacht und der dazu dient, die HFI 120 darauf aufmerksam zu machen, wenn Operationen aus der Sende-FIFO 407 abgerufen werden müssen. Entsprechend befindet sich die Empfangs-FIFO 408 des Zielknotens 102B innerhalb des physischen Arbeitsspeichers 406, in dem zu Verweiszwecken auch eine EA-Abbildungsposition 404 kenntlich gemacht ist.
  • Die HFI-Fenster 445 und 446 stellen eine Ansicht der Hardware des Knotens auf Aufgabenebene bereit, die ermöglicht, dass GSM-Befehle mit Blick auf den effektiven Adressraum einer bestimmten Aufgabe gestartet und die innerhalb von Befehlen enthaltenen EAs korrekt umgesetzt werden. Die HFI-Fenster 445 sind grundlegende Systemkonstrukte, die für GSM-Operationen verwendet werden. Jede HFI 120 kann mehrere Fenster 445 beinhalten, und jedes Fenster ist einer einzigen Aufgabe der einen oder mehreren Aufgaben zugeordnet, die in dem Computerknoten 102 ausgeführt werden.
  • Weitere Funktionsmerkmale der als Beispiel dienenden Fenster 445 werden durch 4 veranschaulicht. Eine HFI 120 kann eine Vielzahl von Fenstern (Fenster0 bis FensterN) beinhalten, von denen Fenster2 445 als Beispielfenster ausgewählt ist. Jede HFI weist eine feste Anzahl von Fenstern auf, von denen jedes genau einer Aufgabe zugehörig sein kann, obwohl einer Aufgabe mehrere Fenster zugewiesen sein können. Jedes Fenster, das einer Aufgabe zugewiesen ist, wird von der HFI 120 dazu verwendet, sowohl von der Aufgabe stammende GSM-Nachrichten zu starten als auch eingehende Nachrichten zu verarbeiten, die auf den effektiven Adressraum der Aufgabe zugreifen. Auf das HFI-Fenster2 445 können durch eine Aufgabe erzeugte Befehle zugreifen, die auf verschiedenen Funktionsstufen erzeugt werden können, z. B. durch einen Benutzer 550, ein Betriebssystem 552 und/oder einen Hypervisor 554.
  • Das HFI-Fenster 445 enthält eine Vielzahl von Funktionseinträgen wie z. B. Befehlseinträge, Berechtigungsnachweiseinträge, einen Adressumsetzungseintrag und Datenstrukturen, die von der HFI verwendet werden, um das Senden und Empfangen von Nachrichten zu steuern. Wie veranschaulicht, weist das Fenster2 445 konkret die folgenden Einträge auf, ohne darauf beschränkt zu sein einen HFI-Befehlszähler 510, eine FIFO-Sende-EA 514, eine RDMA-FIFO-Sende-EA (Remote Direct Memory Access, direkter Speicherfernzugriff) 515, eine FIFO-Empfangs-EA 516, einen Epoch-Vektor-EA 518, Berechtigungsnachweise 512 und Ausgrenzungszähler 520. Bei der veranschaulichten Ausführungsform enthalten die Berechtigungsnachweise 512 die Auftragskennung (hier auch als Auftragsschlüssel bezeichnet), die Prozesskennung, die Kennung der logischen Partition (Logical Partition, LPAR) und den EA-Schlüssel. Die HFI referenziert die Berechtigungsnachweise 512, um eine eingehende GSM-Transaktion korrekt daraufhin überprüfen zu können, ob sie berechtigt ist, eine Operation für den effektiven Adressraum der zugehörigen Aufgabe durchzuführen. Dabei ist offensichtlich, dass die verschiedenen Komponenten der Berechtigungsnachweise 512 auch mit ihrem eigenen Eintrag innerhalb des HFI-Fensters2 445 dargestellt sein können. Alle obigen Einträge sind Register, die einen Wert einer Arbeitsspeicherposition bereitstellen, an welcher der benannte Eintrag gespeichert ist oder an welcher der benannte Eintrag innerhalb des effektiven Adressraums der Aufgabe beginnt (d. h. einer Startposition). Diese effektiven Adressen werden durch die MMU 121 in entsprechende reale Adressen umgesetzt, die sich innerhalb des physischen Arbeitsspeichers 530 befinden. Die HFI leitet eine der effektiven Adressen des Fensterinhalts an die MMU 121 weiter, und die MMU 121 setzt die effektive Adresse in eine reale Adresse um, die dem physischen Arbeitsspeicher 530 entspricht, auf den die EAs der durch die Berechtigungsnachweise kenntlich gemachten Aufgabe abgebildet sind. Somit definiert das Fenster2 445 eine Vielzahl von Abbildungen zwischen der HFI und dem realen (physischen) Arbeitsspeicher.
  • Das HFI-Fenster2 445 weist außerdem einen oder mehrere Ausgrenzungszähler 520 auf, um eine Beendigung von GSM-Operationen während einer lokalen Ausgrenzungsoperation und einer globalen Ausgrenzungsoperation zu erfassen. Die Ausgrenzungszähler 520, auf welche die EAs verweisen, werden auf einen Ausgrenzungszähler 540 innerhalb der realen Arbeitsspeicherposition abgebildet, die der Aufgabe zugewiesen ist. Zur Unterstützung bei lokalen (von einer Aufgabe ausgegebenen) Ausgrenzungsoperationen enthält der RA-Bereich, welcher der Aufgabe zugewiesen ist, auch einen Sendeoperationszähler 542, um die Beendigung von Befehlen zu verfolgen, die von einer Aufgabe ausgegeben werden und zunächst in der Sende-FIFO 532 gespeichert sind, bevor sie zur Verarbeitung an das HFI-Fenster übergeben werden.
  • Wie des Weiteren veranschaulicht, enthält die FIFO-Sende-EA 514 somit die effektive Startadresse für die Sende-FIFO der Aufgabe, wobei diese Adresse durch die MMU 121 umgesetzt werden kann, um auf den Start (die reale Adresse) der Sende-FIFO 532 in dem physischen Arbeitsspeicher 530 zu zeigen. Entsprechend enthält die FIFO-Empfangs-EA 516 die Start-EA der Empfangs-FIFO 534 der Aufgabe, wobei diese Adresse durch die MMU 121 umgesetzt wird, und zeigt auf die Startadresse in dem physischen Arbeitsspeicher 530 der Empfangs-FIFO 534 der Aufgabe. Entsprechend können die RDMA-FIFO-Sende-EA 515 und die Epochenvektor-EA 518 durch die MMU 121 umgesetzt werden, um auf die realen Startadressen der RDMA-Sende-FIFO 536 bzw. eines Epochenvektors 538 zu zeigen. Obwohl die Sende-FIFO 514 und die Empfangs-FIFO 516 in dem effektiven Adressraum der Aufgabe, der das Fenster entspricht, aneinander angrenzen können, ist zu beachten, dass diese FIFOs (514, 516) in dem realen (physischen) Arbeitsspeicher 530 möglicherweise nicht aneinander angrenzen.
  • Jedes HFI-Fenster enthält Schlüsselressourcen wie z. B. den Zeiger auf die Adressumsetzungstabellen, die dazu verwendet werden, die effektive Adresse (mit Blick auf eine bestimmte Aufgabe) in eine reale Adresse aufzulösen. Die Fensterzahl innerhalb der HFI, die der GSM-Initialisierungsoperation zugeordnet ist, wird als eine nicht transparente Kennung an den Benutzer zurückgegeben, die ein Codieren (Einbetten) der Knoten- und Fensterzahl sowie die effektive Adresse beinhalten kann, wo der globale Adressraum innerhalb des effektiven Adressraums der Aufgabe reserviert ist. Die Laufzeitumgebung übernimmt die Aufgabe, jede Fensterkennung allen anderen Aufgaben zu übertragen, die GSM-Befehle an diese Aufgabe ausgeben wollen. Wenn eine Aufgabe mehrere Steuerungs-Threads aufweist, muss entweder durch normale, aufgabeninterne Sperrbasiselemente oder durch Zuweisen eines eigenen eindeutigen HFI-Fensters zu jedem Thread eine Atomizität des HFI-Fensters sichergestellt sein. Schließlich werden auch HFI-Leistungszähler für den gesamten auf dem Fenster beruhenden Datenverkehr auf den Adressraum der Aufgabe abgebildet. Dadurch kann die Aufgabe Statistiken zum Datenverkehr über das Verbindungsnetzwerk einfacher überwachen.
  • HFI-Fenster können von einer oder mehreren logischen Partitionen gemeinsam genutzt werden. Wenn ein einzelner Knoten partitioniert wird, hat das in einer Partition ausgeführte Betriebssystem unter Umständen nur Zugriff auf einen Teilsatz der gesamten Anzahl von unterstützten Fenstern. Das Betriebssystem kann zudem einen Teilsatz dieser Fenster für Kernteilsysteme wie z. B. den IP-Gerätetreiber reservieren. Die verbleibenden Fenster können den Aufgaben zur Verfügung stehen, die innerhalb der Partition ausgeführt werden.
  • Wenn ein Fenster in der HFI zugeordnet wird, markiert das Betriebssystem das Fenster mit der Kennung des Auftrags, zu dem die Aufgabe gehört. Während der Ausgabe von GSM-Operationen werden alle abgehenden Pakete von der HFI automatisch mit der Auftragskennung markiert. Abgehende Pakete geben auch ein bestimmtes Fenster in der HFI 120B des Zielknotens an, in dessen Kontext die effektive GSM-Adresse umgesetzt werden muss. Die HFI vergleicht die in dem GSM-Paket enthaltene Auftragskennung mit der Auftragskennung, die in dem Fenster enthalten ist. Wenn die Auftragskennungen nicht übereinstimmen, wird das Paket im Hintergrund verworfen. Anhand von Statistiken, die solche Pakete zählen, können Systembenutzer behutsam davon abgebracht werden, das System unbeabsichtigt oder in böswilliger Absicht mit solchen Paketen zu überschwemmen.
  • Ein unberechtigter Zugriff auf den effektiven Adressraum einer Aufgabe ist während der Durchführung von GSM-Operationen somit nicht gestattet. Eine Aufgabe kann eine GSM-Operation an jede Aufgabe senden, die zu einem Auftrag gehört, der an einer beliebigen Stelle innerhalb des gesamten Systems ausgeführt wird. Dabei führt die HFI die GSM-Operationen in dem effektiven Adressraum der als Ziel dienenden Aufgabe nur dann durch, wenn ein eingehender GSM-Befehl zu demselben Auftrag gehört wie die Aufgabe, deren Adressraum der Befehl bearbeitet. Darüber hinaus ist eine weitere Differenzierung der Auftragskennungen möglich, indem eine Aufgabe nur einem Teilsatz der Aufgaben, die innerhalb des Auftrags ausgeführt werden, eine bestimmte Berechtigung erteilt. Dies kann erfolgen, indem ein Teilsatz der Aufgaben anfordert, dass ihnen eine andere Auftragskennung zugewiesen wird, wodurch die Auftragskennung in das HFI-Fenster aufgenommen wird, das diesen Aufgaben zugehörig ist.
  • Weitere Einzelheiten zur Verwendung von Fenstern, um Daten über ein Struktur-Verbindungsnetzwerk zu übertragen, finden sich z. B. in US-Patentschrift 8 275 947 , die Arimilli et al. erteilt und an denselben Erwerber übertragen wurde wie die vorliegende Erfindung und die hier durch Bezugnahme mit aufgenommen wird.
  • Die Routinen, die ausgeführt werden, um die Ausführungsformen der Erfindung zu realisieren, unabhängig davon, ob sie als Teil eines Betriebssystems oder einer spezifischen Anwendung, Komponente, eines Programms, Objekts, Moduls oder eine Abfolge von Befehlen oder auch als ein Teilsatz hiervon realisiert sind, werden hier im Allgemeinen als „Computerprogrammcode„ oder einfach als „Computercode” bezeichnet. Programmcode weist üblicherweise einen oder mehrere Befehle auf, die sich zu verschiedenen Zeit in verschiedenen Arbeitsspeicher- und Speichereinheiten in einem Computer befinden können und die, wenn sie durch einen oder mehrere Prozessen in einem Computer ausgeführt werden, den Computer dazu veranlassen, die Schritte durchzuführen, die notwendig sind, um Schritte oder Elemente auszuführen, welche die verschiedenen Aspekte der Erfindung enthalten. Obwohl die Erfindung in Zusammenhang mit voll funktionsfähigen Computern und Computersystemen beschrieben wurde und im Folgenden noch wird, weiß der Fachmann überdies, dass die verschiedenen Ausführungsformen der Erfindung in einer Vielzahl von Formen als ein Programmprodukt verteilt sein können und dass die Erfindung gleichermaßen anwendbar ist, unabhängig von der jeweiligen Art von computerlesbaren Medien, die verwendet werden, um die Verteilung tatsächlich durchzuführen.
  • Derartige computerlesbare Medien können computerlesbare Speichermedien und Datenübertragungsmedien beinhalten. Computerlesbare Speichermedien sind von nicht temporärer Art und können flüchtige und nicht flüchtige, entfernbare und nicht entfernbare Medien beinhalten, die in einem beliebigen Verfahren oder einer Technologie zur Speicherung von Daten realisiert sind, z. B. als computerlesbare Befehle, Datenstrukturen, Programmmodule oder andere Daten. Computerlesbare Speichermedien können des Weiteren einen RAM, einen ROM, einen löschbaren, programmierbaren Nur-Lese-Speicher (Erasable Programmable Read-Only Memory, EPROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), einen Flash-Speicher oder eine andere Halbleiter-Speichertechnologie, einen CD-ROM, Digital Versatile Disks (DVDs) oder einen anderen optischen Speicher, ein Magnetband, einen Magnetplattenspeicher oder andere magnetische Speichereinheiten oder ein beliebiges anderes Medium beinhalten, das dazu verwendet werden kann, die gewünschten Daten zu speichern, und auf das durch ein Datenverarbeitungssystem zugegriffen werden kann. Datenübertragungsmedien können computerlesbare Befehle, Datenstrukturen oder andere Programmmodule enthalten. Beispielhaft und nicht als Beschränkung zu verstehen, können Datenübertragungsmedien drahtgebundene Medien wie z. B. ein drahtgebundenes Netzwerk oder eine direkt verdrahtete Verbindung sowie drahtlose Medien wie akustische, HF-, Infrarot- und andere drahtlose Medien beinhalten. Auch Kombinationen der oben genannten Medien können zu den computerlesbaren Medien zählen.
  • Verschiedener Programmcode, der hier beschrieben wird, kann auf der Grundlage der Anwendung identifiziert werden, innerhalb derer er in einer spezifischen Ausführungsform der Erfindung realisiert ist. Dabei sollte jedoch klar sein, dass jede im Folgenden genannte konkrete Programmnomenklatur lediglich zum Zwecke der Vereinfachung verwendet wird und dass die Erfindung nicht darauf zu beschränken ist, ausschließlich in einer wie auch immer gearteten spezifischen Anwendung verwendet zu werden, die durch eine solche Nomenklatur angegeben und/oder impliziert wird. Angesichts der üblicherweise unbegrenzten Anzahl von Arten und Weisen, wie Computerprogramme in Routinen, Prozeduren, Methoden, Modulen, Objekten und Ähnlichem organisiert sein können, sowie der verschiedenen Arten und Weisen, in denen eine Programmfunktionalität verschiedenen Software-Ebenen zugeordnet sein kann, die sich innerhalb eines typischen Computers befindet (z. B. Betriebssysteme, Bibliotheken, APIs [Application Programming Interface, Anwendungsprogrammschnittstelle], Anwendungen, Applets usw.), sollte offensichtlich sein, dass die Erfindung nicht auf die hier beschriebene Organisation und Zuordnung einer Programmfunktionalität beschränkt ist.
  • Zudem dürfte klar sein, dass Ausführungsformen der Erfindung innerhalb der oben in Verbindung mit den 1 bis 4 beschriebenen Hardware- und Software-Umgebung realisiert sein können. Für einen Fachmann dürfte aus der vorliegenden Offenbarung jedoch klar werden, dass die Erfindung in einer Vielzahl von verschiedenen Umgebungen realisiert werden kann und dass andere Abänderungen an der oben erwähnten Hardware- und Software-Ausführung vorgenommen werden können, ohne vom gedanklichen Wesensgehalt und inhaltlichen Umfang der Erfindung abzuweichen. In diesem Sinne ist die Erfindung nicht auf die hier offenbarte, bestimmte Hardware- und Software-Umgebung beschränkt.
  • Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung (HPC-Netzwerk)
  • Im Einklang mit der Erfindung stehende Ausführungsformen realisieren eine schnelle und wirksame Funktionsübernahme für einen Datenübertragungskanal in einem HPC-Netzwerk, wie sie z. B. in einem HPC-Cluster oder einem anderen verteilten Mehrprozessor-Datenverarbeitungssystem zum Einsatz kommt. In HPC-Clustern kann ein Datenübertragungsverlust zwischen Koordinationsprozessen in verschiedenen Datenverarbeitungsknoten (z. B. Benutzeraufträge oder Betriebssysteminstanzen) zu Verzögerung/Verlust beim Auftragsverlauf, zu einer langwierigen Wiederherstellung und/oder zu Schwankungen in dem Cluster führen, wodurch Datenverarbeitungsressourcen und Leistung effektiv verschwendet werden und das letztlich erzielte Ergebnis verzögert wird. Verschiedene HPC-Cluster-Technologien verwenden verschiedene Arten von Datenübertragungskanälen, um eine Datenübertragung zwischen Koordinationsprozessen zu unterstützen.
  • Bei Clustern auf der Grundlage von Power 7, wie sie von der International Business Machines Corporation als Erwerber der vorliegenden Erfindung erhältlich sind, sind Datenübertragungskanäle durch Fenster gekennzeichnet, die in einem oder mehreren HFI-Adaptern zur Verfügung stehen. Eine HFI stellt einen Benutzerzugriff auf eine Verbindungsnetzwerkstruktur über die oben erwähnten Fenster bereit, und ein Fenster kann im Kontext der Erfindung als ein Satz von konfigurierbaren Ressourcen betrachtet werden, mit dem ein Software-Client oder Endpunkt (bei dem es sich z. B. um ein Protokoll, eine logische Partition, einen Gerätetreiber, einen Auftrag auf Benutzerebene usw. handeln kann) in der Verbindungsnetzwerkstruktur mit einem anderen Client oder Endpunkt Nachrichten und Daten austauschen kann. Die Konfiguration wird über MMIO-Register bereitgestellt, und die HFI-Hardware hat direkten Zugriff auf Arbeitsspeicher, der durch den Software-Client bereitgestellt wird (z. B. FIFOs, Datenpuffer), wobei die von der Hardware und Software gemeinsam genutzte Sammlung von Registern und Arbeitsspeicher hier als die „Fensterressourcen” bezeichnet wird. Das Fenster kann somit einen Zustand eines gegebenen Datenübertragungskanals effektiv definieren.
  • Zum Zwecke dieser Offenbarung kann der Begriff „Fenster” jedoch auch für HFI-Fenster sowie für ähnliche Konstrukte verwendet werden, die in anderen Verbindungsnetzwerkstrukturen genutzt werden und sich in anderen Arten von Strukturschnittstelleneinheiten befinden. So sind beim Infiniband-Clustering die Datenübertragungskanäle z. B. durch Warteschlangenpaare in einem HCA definiert, so dass der Begriff „Fenster” hier auch dahingehend betrachtet werden kann, dass er Infiniband-Warteschlangenpaare oder beliebige andere Entitäten in anderen verteilten Datenverarbeitungssystemen definiert, die dazu dienen, den Zustand eines Datenübertragungskanal zwischen einem Paar von Endpunkten zu definieren, welche mit einer Verbindungsnetzwerkstruktur gekoppelt sind.
  • Allgemein ist ein Fenster einem gegebenen Endpunkt zugehörig und wird dazu verwendet, durch eine Datenübertragung mit einem weiteren Fenster, das dem anderen Endpunkt zugehörig ist, eine Schnittstelle zwischen dem Endpunkt und einem anderen Endpunkt bereitzustellen. Ein Endpunkt kann z. B. ein Protokoll, ein Benutzerprogramm, ein Betriebssystem, ein Auftrag, eine Aufgabe usw. sein, und ein Fenster kann z. B. Sende- und Empfangswarteschlangen sowie andere Register und Daten beinhalten, die zusammengenommen einen Zustand eines Datenübertragungskanals definieren.
  • Bei den hier erörterten Ausführungsformen kann z. B. jedes Fenster einen Satz von Ressourcen beinhalten, die einen Zustand aufrecht erhalten und von einem ausgefallenen Fenster auf ein weiteres Fenster übertragen werden, um neu gestartet zu werden, darunter z. B. verschiedene FIFOs, die jeweils einen Pufferspeicher innerhalb des Host-Arbeitsspeichers sowie Konfigurationsregister beinhalten (z. B. relative Positionen von Produzenten und Konsumenten, Größe, Adressen usw.). Die FIFOs können beispielsweise Sende-FIFOs beinhalten, die von Software dafür verwendet werden, verschiedene Arten von Operationen für das Fenster in eine Warteschlange zu stellen, Empfangs-FIFOs, die von der Hardware dafür verwendet werden, Operationen und Beendigungen für die Software in eine Warteschlange zu stellen, Empfangsdeskriptor-FIFOs, die von der Software dafür verwendet werden, Datenempfangspufferspeicher für die Hardware bereitzustellen, und FIFOs für eine spätere Verarbeitung bzw. spezielle FIFOs, die von der Hardware dafür verwendet werden, abgehende Operationen wie z. B. (ohne darauf beschränkt zu sein) Pakete mit einer Benachrichtigung über eine RDMA-Beendigung in eine Warteschlange zu stellen. Die Fensterressourcen können auch RDMA-Kontextdaten beinhalten, die durch die Hardware für RDMA-Abläufe verwendet werden und die in der Hardware zwischengespeichert, jedoch im Host-Arbeitsspeicher gespeichert werden, Beendigungsvektoren, die als Anzeiger für den Konsumentenfortschritt dienen und die durch die Hardware in den Host-Arbeitsspeicher geschrieben werden, um einem Software-Client zu ermöglichen, MMIO-Lesevorgänge zu vermeiden, sowie zusätzliche Register mit anderen statischen Konfigurationsdaten (z. B. Schutzdaten wie Schlüssel und Schutzdaten, die bei der Arbeitsspeicherumsetzung verwendet werden). Daten zu den verschiedenen FIFOs in dem Host-Arbeitsspeicher, z. B. Kopf- und Endzeiger sowie Größendaten, werden im Allgemeinen in Registern in der Strukturschnittstelleneinheit verwaltet.
  • In diesem Zusammenhang enthält ein Fenster Ressourcen, die sich in jeder Strukturschnittstelleneinheit (z. B. einer HFI oder einem HCA) und in einem Host-Arbeitsspeicher befinden, wobei erstere hier als Hardware-Ressourcen und letztere als Arbeitsspeicherressourcen bezeichnet werden. In den veranschaulichten Ausführungsformen befinden sich darüber hinaus Aspekte eines Fensters, z. B. einige der Arbeitsspeicherressourcen, in einem Hypervisor. Aus der Sicht des hier beschriebenen Funktionsübernahmeprotokolls kann ein Fenster darüber hinaus in allgemeinerer Hinsicht eine Vielzahl von Abbildungen zwischen Hardware-Registern und anderen Hardware-Ressourcen in einer HFI oder einer anderen Strukturschnittstelleneinheit und Arbeitsspeicherzugriffsregistern und anderen Arbeitsspeicherressourcen in einem Host-Arbeitsspeicher enthalten, die der HFI z. B. ermöglichen, Arbeitsspeicherübertragungen in die und von den verschiedenen Warteschlangen in dem Host-Arbeitsspeicher durchzuführen. Diese Abbildungen können z. B. eine Abbildung einer Sende-FIFO, eine Abbildung einer Empfangs-FIFO, eine Abbildung einer RDMA-FIFO usw. beinhalten.
  • Im Einklang mit der Erfindung stehende Ausführungsformen realisieren ein Funktionsübernahmeprotokoll, das eine Einbeziehung eines Software-Stapels in den Funktionsübernahmeprozess vorzugsweise auf ein Mindestmaß reduziert oder vollständig vermeidet, wodurch eine Wiederherstellung nach einem Ausfall eines Datenübertragungskanals beschleunigt wird. Bei manchen Ausführungsformen ist es wünschenswert, einen Client vom Zugriff auf ein Fenster abzuhalten (z. B. indem ein Seitenfehler erklärt wird), so dass der Client seinen Betrieb fortsetzen kann, sobald die vorübergehende Sperre aufgehoben ist. Des Weiteren ist es bei manchen Ausführungsformen wünschenswert, etwaige Zeiger auf Software-Abschnitte, die einem Fenster zugehörig sind, auf ein Mindestmaß zu reduzieren, so dass die Wiederherstellungsaktionen, die bei einer Funktionsübernahme von einem Client gefordert werden, verringert oder sogar vollständig vermieden werden.
  • Ein Ausfall kann z. B. aufgrund eines Hardware-Fehlers in einem Register, einem Verlust der Datenübertragung an die Struktur, einer Zustandsmaschine, die nicht mehr reagiert und damit eine Sende- oder Empfangswarteschlange blockiert, oder aus einem anderen Grund entstehen. Die Funktionsübernahme enthält zum Teil die Übertragung eines Fensterzustands von einem ausgefallenen Fenster auf ein neues Fenster, wodurch dem Fenster ermöglicht wird, dieselben Registereinstellungen und Arbeitsspeicherbereiche wiederzuverwenden, beispielsweise für die zur Verarbeitung ausstehenden Warteschlangen wie z. B. die Benachrichtigungen über eine RDMA-Beendigung, um die Notwendigkeit auszuschließen, ein neues Fenster und einen neuen Datenübertragungskanal von Grund auf herstellen zu müssen, und verhindert häufig den Verlust von zusätzlichem Datenverkehr, wodurch die Wiederherstellungszeit verkürzt wird.
  • Wie in 5 gezeigt, kann bei einer Ausführungsform ein Datenverarbeitungssystem 600 einen Hypervisor 602, einen Host-Arbeitsspeicher 604 und eine HFI 606 beinhalten. Ein Software-Client 608, bei dem es sich um ein Betriebssystem, eine Anwendung, einen Auftrag, eine Aufgabe oder eine andere geeignete Software-Einheit handeln kann, die fähig ist, in dem Datenverarbeitungssystem 600 als ein Endpunkt zu dienen, greift über die Komponenten 602, 604 und 606 auf eine Verbindungsnetzwerkstruktur zu.
  • Die HFI 606 enthält eine Vielzahl von Fenstern, z. B. Fenster 610, 612. üblicherweise unterstützt jede Hardware-Strukturschnittstelleneinheit eine feste Anzahl von Fenstern, wie dies z. B. zum Zeitpunkt des Boot-Vorgangs definiert wird oder auf statische Art in der Hardware definiert ist. Anfänglich ist der Software-Client 608 mit dem Fenster 612 in der HFI 606 gekoppelt, wobei zum Zwecke dieser Erörterung davon ausgegangen wird, dass in Fenster 610 ein Ausfall aufgetreten ist und dass Fenster 612 zum gegenwärtigen Zeitpunkt von keinem anderen Client verwendet wird. Die Fenster 610, 612 sind jeweils mit einem Satz von statischen Konfigurationsregistern 614, 616 sowie mit einem Satz von FIFO-bezogenen Registern 618, 620 veranschaulicht.
  • Innerhalb des Hypervisors 602 weisen die Fenster 610, 612 entsprechender Fensterdatenstrukturen 622, 624 auf, die jeweils zu einem Teil Firmware-MMIO-Adressdaten 626, 628 und Firmware-Unterbrechungsdaten 630, 632 enthalten. Der Hypervisor 602 enthält außerdem einen Satz von MMIO- und Unterbrechungsabbildungen 634, 636 für den Client 608. In dem Host-Arbeitsspeicher 604 befinden sich zudem ein Satz von Beendigungsvektoren 638, RDMA-Kontextdaten 640 und ein Satz von FIFOs 642.
  • Die Verbindungsnetzwerkstruktur in den veranschaulichten Ausführungsformen leitet Pakete über eine „ISR_ID” und eine Paketnummer weiter. Jedes Paket in der Cluster-Struktur enthält ein als Quelle dienendes „ISR_ID/Fenster”-Paar und ein als Ziel dienendes „ISR_ID/Fenster-Paar. Zusätzlich wird davon ausgegangen, dass der von dem Client und der Hardware gemeinsam genutzte Arbeitsspeicher für jedes Fenster anhand einer E/A-MMU eine Adressvirtualisierung verwendet. Die E/A-MMU stellt eine Abbildung des virtuellen Adressraums, den der Client für den gemeinsam genutzten Arbeitsspeicher verwendet, auf den physischen Adressraum bereit, den die Hardware für denselben Arbeitsspeicher verwendet. In diesem Beispiel greifen sowohl das ausgefallene Fenster als auch das neue Fenster auf dieselbe E/A-MMU zu, so dass der für die FIFOs verwendete Arbeitsspeicher und eine anderweitige Host-Arbeitsspeicherstruktur nicht neu abgebildet werden muss.
  • Bei Ausführungsformen im Einklang mit der Erfindung wird der Software-Client 608 anfänglich mit einem Zugriff auf das Strukturverbindungsnetzwerk über das Fenster 610 in der HFI 606 bereitgestellt, um einen Datenübertragungskanal zu einem oder mehreren anderen Clients bereitzustellen. Durch die Register 610 wird eine Vielzahl von Abbildungen angegeben, darunter z. B. Abbildungen für eine oder mehrere FIFOs wie beispielsweise Sende- und Empfangs-FIFOs und eine RDMA-FIFO in dem physischen Arbeitsspeicher (wie weiter oben in Verbindung mit 4 erörtert).
  • Als Reaktion auf ein Erkennen eines Ausfalls in dem Datenübertragungskanal übertragen im Einklang mit der Erfindung stehende Ausführungen den Zustand des Datenübertragungskanals, wie er durch das Fenster 610 definiert ist, auf ein anderes Fenster, z. B. das Fenster 612, indem sie die Abbildungen aktualisieren, um die dem Client zugeordneten Arbeitsspeicherressourcen auf zweite Hardware-Ressourcen abzubilden, die dem zweiten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, z. B. indem sie die Register 620 in dem neuen Fenster 612 so aktualisieren, dass sie auf die FIFO zeigen, die dem Client zugeordnet sind. An diesem Punkt kann ein Client-Zugriff auf die Cluster-Struktur über den Datenübertragungskanal unter Verwendung des zweiten Fensters wiederhergestellt werden.
  • Um die hier offenbarte Funktionalität zu realisieren, kann in dieser als Beispiel dienenden Ausführungsform die vorhandene HFI-Hardware verwendet werden, die in einem von International Business Machines erhältlichen Torrent-E/A-Hub verfügbar ist. Dabei dürfte jedoch klar sein, dass dieser Ansatz in Verbindung mit nahezu jeder anderen E/A-Hardware verwendet werden kann, die: (1) einen Kanalzustand in Registern und Host-Arbeitsspeicherstrukturen verwaltet, die durch einen Hypervisor lesbar sind; und (2) einen Kanal aufweist, der in einem beliebigen Zustand gestartet werden kann.
  • Routine 650 aus 6 veranschaulicht beispielsweise einen allgemeinen Ablaufplan der Operationen, die in Verbindung mit einem Ausfall eines Datenübertragungskanals in dem Datenverarbeitungssystem aus 5 auftreten können. Die Routine 650 kann z. B. als Reaktion auf den Stimulus eines Datenübertragungsverlusts (z. B. aufgrund eines erkannten Hardware-Fehlers oder einer Neukonfiguration des Netzwerks) ausgelöst werden, was zu einem Fehler führt, der dem Hypervisor gemeldet wird.
  • In Block 652 kann der Hypervisor den MMIO-Zugriff des Clients auf das Fenster aussetzen und in Block 654 den Fensterzustand auf ein neues Fenster übertragen. Eine Aussetzung des Client-Zugriffs lässt sich z. B. realisieren, indem ein Seitenfehler erklärt wird, so dass – aus der Sicht des Clients – der Client so funktioniert, als würde er darauf warten, dass ein Seitenfehler behoben wird. Die Übertragung eines Fensterzustands beinhaltet üblicherweise ein Kopieren der Hardware-Register für das ausgefallene Fenster in die entsprechenden Register für das neue Fenster.
  • Danach wird in Block 656 das neue Fenster aktiviert, wodurch die Hardware in die Lage versetzt wird, ausstehende Operationen wieder aufzunehmen (Block 658). So können z. B. etwaige ausstehende Operationen, die in einer Sende- oder Empfangswarteschlange vorhanden sind, sofort wieder aufgenommen werden, so dass die ausstehenden Operationen nicht verworfen werden müssen, wie dies bei vielen herkömmlichen Ansätzen der Fall ist.
  • Danach wird in Block 660 der Client-Zugriff auf das alte Fenster auf das neue Fenster neu abgebildet, und in Block 662 informiert der Hypervisor den Client über die Funktionsübernahme für das neue Fenster, wodurch der Client in die Lage versetzt wird, ausstehende Operationen wieder aufzunehmen (Block 664). Dabei kann die Seitentabelle z. B. so aktualisiert werden, dass sie auf die Register in dem neuen Fenster zeigt, wodurch der Seitenfehler behoben wird und der Client seinen Betrieb wieder aufnehmen kann. Zusätzlich hierzu kann eine Benachrichtigung des Clients beinhalten, dass dem Client der Ausfall des alten Fensters und die Kennung des neuen Fensters mitgeteilt werden, so dass alle künftigen Datenübertragungen durch Verweis auf das neue Fenster erfolgen.
  • Danach kann der Client in Block 666 Peer-Clients über die Änderung an dem neuen Fenster informieren, so dass andere Clients damit beginnen, das neue Fenster zu verwenden (Block 668). In Block 670 wird der Betrieb fortgesetzt. Bei einer Ausführungsform kann z. B. ein spezieller Pakettyp definiert werden, um jedem Peer Client die alten und neuen Adressen für den Client bereitzustellen, so dass jeder Peer-Client seine Adresse entsprechend aktualisieren kann. Durch eine Benachrichtigung solcher Clients können etwaige verloren gegangene Pakete von den Peers unter Umständen erkannt und von den Peers erneut gesendet werden.
  • Bei manchen Ausführungsformen kann ein Neustarten eines aktuellen Pakets übersprungen werden, wobei der Betrieb unter Verwendung des nächsten Pakets in einer FIFO wieder aufgenommen werden kann, so dass, falls das aktuelle Paket die Ursache für den Ausfall war, der Datenübertragungskanal infolge eines erneuten Sendeversuchs des Pakets nicht erneut „hängt”.
  • Mit Blick auf die 7A und 7B wird ein ausführlicherer Ablaufplan für eine Routine 700 bereitgestellt, die sich zur Durchführung durch einen Hypervisor eignet, um eine Funktionsübernahme für einen Datenübertragungskanal in dem Datenverarbeitungssystem 600 aus 5 zu realisieren.
  • Zunächst wird in Block 702 aus dem Vorrat an verfügbaren Fenstern ein neues „Zielfenster” ausgewählt. Das ausgewählte Fenster wird aus dem Pool von verfügbaren Fenstern entfernt. Der Pool von verfügbaren Fenstern kann z. B. definiert werden, indem er vor einem LPAR-Boot-Vorgang vorab reserviert wird, indem er durch eine LPAR bereitgestellt wird, usw.
  • Als Nächstes wird in Block 704 der MMIO-Zugriff des Clients auf das ausgefallene Fenster ausgesetzt, um die Software daran zu hindern, weiterhin auf den Registerbereich der Hardware zuzugreifen, wodurch dem Hypervisor ermöglicht wird, die Funktionsübernahme zu verarbeiten, ohne dass der Hardware-Zustand geändert werden muss. Danach wird in Block 706 das ausgefallene Fenster deaktiviert, um sicherzustellen, dass etwaige noch laufende direkte Speicherzugriffe (Direct Memory Access, DMA) vor den nachfolgenden Schritten abgeschlossen werden. Block 708 wartet, bis die Deaktivierung abgeschlossen ist.
  • Als Nächstes werden in Block 710 die zwischengespeicherten Daten gelöscht. Die HFI-Hardware sowie andere Datenübertragungseinheiten können häufig verwendete Strukturen (z. B. den RDMA-Kontext) in der Hardware zwischenspeichern, um die Leistung zu erhöhen. Da dieser Zustand übertragen werden muss, ermöglicht das Löschen der Hardware-Caches dem Hypervisor sicherzustellen, dass das Zielfenster beim Start über die aktuellen Daten verfügt. Block 712 wartet, bis dieser Löschvorgang abgeschlossen ist.
  • Als Nächstes werden in Block 714 die kritischen Registerdaten aus dem ausgefallenen Fenster gelesen, darunter sämtliche Warteschlangen- und Pufferspeicheradressen, relative Positionen von Produzenten und Konsumenten und andere Daten, welche die Hardware dafür verwendet, die nicht in den Host-Arbeitsspeicherbereichen gespeicherte Datenübertragung zu verwalten. Danach werden in Block 716 diese kritischen Registerdaten in das ausgewählte Zielfenster geschrieben.
  • Als Nächstes wird in Block 718 ermittelt, ob Unterbrechungen ausstehen. Wenn dies der Fall ist, fährt die Steuerung mit Block 720 fort, um eine Unterbrechungstabelle zu aktualisieren. Die internen Arbeitsspeicherstrukturen des Hypervisors für die Weiterleitung von Unterbrechungen werden aktualisiert, um sicherzustellen, dass etwaige Hardware-Unterbrechungen von dem Zielfenster an dieselbe Unterbrechungsroutine weitergeleitet werden, wie sie von dem Software-Client erwartet wird. Der Hypervisor speichert (oder berechnet gegebenenfalls) die Anzahl der Unterbrechungen für jedes Fenster. Wenn keine Unterbrechungen ausstehen bzw. nachdem die Unterbrechungstabelle aktualisiert wird, fährt die Steuerung mit Block 722 fort, um bei Bedarf eine oder mehrere Unterbrechungen für das neue Fenster zu erzwingen. Wenn der in Block 714 abgerufene Hardware-Zustand angibt, dass eine Unterbrechung aussteht oder bedient werden muss, wird das neue Fenster so gesetzt, dass es dieselbe(n) Unterbrechung(en) erzwingt, um sicherzustellen, dass der Software-Client benachrichtigt wird.
  • Als Nächstes wird in Block 724 das Zielfenster aktiviert, wodurch dem Zielfenster ermöglicht wird, so bald wie möglich mit der Verarbeitung ausstehender Operationen in den FIFOs zu beginnen (Block 726). Danach wird in Block 728 der MMIO-Zugriff des Clients neu abgebildet, so dass er anstelle auf das ausgefallene Fenster auf das Zielfenster zeigt, so dass MMIO-Zugriffe durch den Software-Client nun in dem Zielfenster und nicht in dem ausgefallenen Fenster ankommen. Bei der veranschaulichten Ausführungsform muss der Client das Betriebssystem/den Hypervisor nicht dazu auffordern, die Seitentabelle zu aktualisieren, da dies transparent erfolgt.
  • Als Nächstes wird in Block 730 der MMIO-Zugriff des Clients auf das neue Fenster aktiviert, wodurch MMIO-Zugriffe auf das Fenster beendet werden können und der Software-Client mit der Hardware interagieren kann (Block 732). Bei der veranschaulichten Ausführungsform weiß der Client unter Umständen noch nichts von der Funktionsübernahme, kann jedoch trotzdem laufende Aktivitäten mit dem neuen Fenster wieder aufnehmen. Somit wird der Client in Block 734 über die Funktionsübernahme benachrichtigt, indem der Hypervisor z. B. eine Nachricht an den Client sendet, aus der die Funktionsübernahme hervorgeht. Die Nachricht kann die relevanten Daten wie z. B. das alte und neue Fenster enthalten, wodurch dem Client die neuen Adressierungsdaten bereitgestellt werden. Im Anschluss daran kann der Client in Block 736 jeden Peer über das neue Fenster benachrichtigen, z. B. durch eine Inband-Netzwerknachricht oder eine Außerband-Datenübertragung über ein weiteres Netzwerk oder eine Auftragssteuerungsverwaltung. Als Resultat hiervon sendet der Peer-Client daraufhin über das neue Fenster Datenübertragungen an den Software-Client (Block 738), und der normale Betrieb kann im Anschluss daran wieder aufgenommen werden (Block 740).
  • 8 veranschaulicht z. B. das Datenverarbeitungssystem aus 5, nachdem eine Funktionsübernahme von dem ausgefallenen Fenster 610 auf das neue Fenster 612 erfolgt. Wie gezeigt, werden Zeiger und Abbildungen so aktualisiert, dass aus der Sicht des Software-Clients 608 die Verbindung unter Verwendung des neuen Fensters 612 fortgeführt werden kann.
  • Gegenüber herkömmlichen Ansätzen für die Funktionsübernahme stellen Ausführungsformen im Einklang mit der Erfindung eine Reihe von Vorteilen bereit. So gehen Operationen, die in Sende-FIFOs warten oder die in einer oder mehreren Empfangs-FlFOs noch nicht verarbeitet wurden, üblicherweise nicht verloren, während bei herkömmlichen Ansätzen die Pakete in den FIFOs üblicherweise verloren gehen, was zu längeren Software-Wiederherstellungszeiten und einer Auftragsunterbrechung sowie zu Schwankungen in dem HPC-Cluster und zur Verschwendung von Leistung und Fähigkeiten führt. Im Einklang mit der Erfindung stehende Ausführungsformen verringern daher üblicherweise die Anzahl von verloren gegangenen Paketen, wodurch lange Software-Wiederherstellungszeiten reduziert oder vollständig vermieden werden.
  • Verglichen mit Ansätzen, die sich auf mehrere Kopien von Datenverarbeitungsaufträgen stützen, besteht darüber hinaus üblicherweise keine Notwendigkeit, Datenverarbeitungs-/Datenübertragungsressourcen zu duplizieren, was zu weniger Verwaltungsaufwand führt und die Verdoppelung von CPU-/Arbeitsspeicherressourcen, die Verdoppelung von Cluster-Bandbreitennutzung und die Notwendigkeit eines Zusammenführens/Verwerfens von Ergebnissen vermeidet, die von mehreren Quellen zurückgemeldet werden, wie dies üblicherweise mit der Verwendung mehrere Kopien von Datenverarbeitungsaufträgen einhergeht.
  • Verglichen mit Ansätzen, die sich auf mehrere aktive Kanäle im Umlaufbetrieb stützen, ist der Ressourcenverbrauch üblicherweise niedriger und der Durchführungspfad üblicherweise mit weniger Aufwand verbunden. Darüber hinaus müssen üblicherweise keine zusätzlichen aktiven Fenster zugeordnet werden, wodurch Fenster für andere Aufträge freigegeben werden. Weniger Fenster führen häufig dazu, dass weniger Client- und Hypervisor-Arbeitsspeicher für die Warteschlangen- und Arbeitsspeicherabbildung genutzt wird, und ist üblicherweise mit einer geringeren Prozesskomplexität verbunden, um Datenverkehr über mehrere Fenster hinweg zu verarbeiten. Die eingesparten Ressourcen können entweder Datenverarbeitungsaufträgen mit großem Arbeitsspeicherbedarf oder Datenübertragungskanälen zu anderen Zwecken in demselben System zugeteilt werden. Darüber hinaus sind lange Software-Wiederherstellungszeiten für verloren gegangene Nachrichten bei einer Umlaufkonfiguration üblicherweise immer noch ein Problem.
  • Verglichen mit Ansätzen, die sich auf mehrere Kanäle mit Aktiv/Passiv-Betriebsarten stützen, ist auch der Ressourcenverbrauch üblicherweise geringer, da keine Standby-Fenster zugeordnet werden müssen, so dass sie für andere Aufträge freigegeben werden können. Weniger Fenster führen üblicherweise dazu, dass weniger Client- und Hypervisor-Arbeitsspeicher für die Warteschlangen- und Arbeitsspeicherabbildung genutzt wird und ist üblicherweise mit einer geringeren Prozesskomplexität verbunden, um Datenverkehr über mehrere Fenster hinweg zu verarbeiten. Die eingesparten Ressourcen können entweder Datenverarbeitungsaufträgen mit großem Arbeitsspeicherbedarf oder Datenübertragungskanälen zu anderen Zwecken in demselben System zugeteilt werden. Zudem sind lange Software-Wiederherstellungszeiten für verloren gegangene Nachrichten bei Aktiv/Passiv-Kanalkonfigurationen üblicherweise immer noch ein Problem.
  • An den offenbarten Ausführungsformen können verschiedene zusätzliche Änderungen vorgenommen werden, ohne vom gedanklichen Wesensgehalt und inhaltlichen Umfang der Erfindung abzuweichen. Die Erfindung wird daher durch die hieran angehängten Ansprüche begründet.

Claims (25)

  1. Verfahren zum Durchführen einer Funktionsübernahme für einen Datenübertragungskanal in einem Cluster-Computersystem, wobei das Verfahren aufweist: Herstellen eines Client-Zugriffs auf eine Cluster-Struktur über einen Datenübertragungskanal unter Verwendung eines ersten Fensters in einer Strukturschnittstelleneinheit, wobei das erste Fenster einen Zustand eines Datenübertragungskanals für den Client definiert, wobei das Fenster eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen, die dem Client zugeordnet sind, und ersten Hardware-Ressourcen enthält, die dem ersten Fenster in der Strukturschnittstelleneinheit zugeordnet sind; als Reaktion auf ein Erkennen eines Ausfalls in dem Datenübertragungskanal Übertragen des durch das erste Fenster definierten Zustands auf ein zweites Fenster, indem die Vielzahl von Abbildungen aktualisiert werden, um die dem Client zugeordneten Arbeitsspeicherressourcen auf zweite Hardware-Ressourcen abzubilden, die dem zweiten Fenster in der Strukturschnittstelleneinheit zugeordnet sind; und Wiederherstellen eines Client-Zugriffs auf die Cluster-Struktur über den Datenübertragungskanal unter Verwendung des zweiten Fensters.
  2. Verfahren nach Anspruch 1, wobei das erste Fenster ein ausgefallenes Fenster aufweist und wobei das zweite Fenster aus einem Vorrat von verfügbaren Fenstern ausgewählt wird.
  3. Verfahren nach Anspruch 1, wobei die Strukturschnittstelleneinheit eine HFI-Einheit (Host Fabric Interface, Host-Strukturschnittstelle) aufweist.
  4. Verfahren nach Anspruch 1, wobei die Arbeitsspeicherressourcen mindestens eine Sendewarteschlange und eine Empfangswarteschlange beinhalten.
  5. Verfahren nach Anspruch 1, des Weiteren aufweisend: Aussetzen eines Client-Zugriffs auf das erste Fenster vor einem Übertragen des Zustands, indem ein Seitenfehler erklärt wird, der dem ersten Fenster in einer Seitentabelle zugehörig ist; und Ermöglichen eines Client-Zugriffs auf das zweite Fenster nach einem Übertragen des Zustands, indem die Seitentabelle so aktualisiert wird, dass sie auf das zweite Fenster zeigt und damit den Seitenfehler behebt.
  6. Verfahren nach Anspruch 1, vor einem Übertragen des Zustands des Weiteren aufweisend ein Löschen von mindestens einem Hardware-Cache, der dem ersten Fenster zugehörig ist.
  7. Verfahren nach Anspruch 1, des Weiteren aufweisend: Aktualisieren einer Unterbrechungstabelle, um eine Unterbrechung zu aktualisieren, die dem ersten Fenster zugehörig ist; und Erzwingen einer Unterbrechung für das zweite Fenster.
  8. Verfahren nach Anspruch 1, des Weiteren aufweisend ein Neu-Abbilden eines Client-Zugriffs auf das zweite Fenster.
  9. Verfahren nach Anspruch 8, des Weiteren aufweisend ein Aktivieren des zweiten Fensters vor einem Neu-Abbilden eines Client-Zugriffs auf das zweite Fenster, so dass die Strukturschnittstelleneinheit ausstehende Operationen für das zweite Fenster wieder aufnimmt.
  10. Verfahren nach Anspruch 8, des Weiteren aufweisend ein Ermöglichen eines Client-Zugriffs auf das zweite Fenster nach einem Neu-Abbilden eines Client-Zugriffs auf das zweite Fenster.
  11. Verfahren nach Anspruch 10, wobei ein Ermöglichen eines Client-Zugriffs ermöglicht, dass ausstehende Operationen für den Client wieder aufgenommen werden, wobei das Verfahren des Weiteren aufweist, den Client über die Funktionsübernahme zu benachrichtigen, nachdem ausstehende Operationen für den Client wieder aufgenommen wurden.
  12. Verfahren nach Anspruch 11, des Weiteren aufweisend, in dem Client mindestens einen Peer-Client über das zweite Fenster zu benachrichtigen, nachdem der Client über die Funktionsübernahme benachrichtigt wird.
  13. Vorrichtung, aufweisend: einen Datenverarbeitungsknoten, der eine Strukturschnittstelleneinheit enthält, die so konfiguriert ist, dass sie einen Client-Zugriff auf eine Cluster-Struktur über einen Datenübertragungskanal unter Verwendung eines ersten Fensters aus einer Vielzahl von Fenstern in der Strukturschnittstelleneinheit herstellt, wobei das erste Fenster einen Zustand des Datenübertragungskanals für den Client definiert, wobei das Fenster eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen, die dem Client zugeordnet sind, und ersten Hardware-Ressourcen enthält, die dem ersten Fenster in der Strukturschnittstelleneinheit zugeordnet sind; und Programmcode, der so konfiguriert ist, dass er eine Funktionsübernahme für einen Datenübertragungskanal in dem Datenverarbeitungsknoten durchführt, wobei der Programmcode so konfiguriert ist, dass er einen Ausfall in dem Datenübertragungskanal erkennt, den durch das erste Fenster definierten Zustand an ein zweites Fenster aus der Vielzahl von Kanälen überträgt, indem er die Vielzahl von Abbildungen aktualisiert, um die dem Client zugeordneten Arbeitsspeicherressourcen auf zweite Hardware-Ressourcen abzubilden, die dem zweiten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, und dass er einen Client-Zugriff auf die Cluster-Struktur über den Datenübertragungskanal unter Verwendung des zweiten Fensters wiederherstellt.
  14. Vorrichtung nach Anspruch 13, wobei das erste Fenster ein ausgefallenes Fenster aufweist und wobei das zweite Fenster aus einem Vorrat von verfügbaren Fenstern ausgewählt wird.
  15. Vorrichtung nach Anspruch 13, wobei die Strukturschnittstelleneinheit eine HFI-Einheit aufweist.
  16. Vorrichtung nach Anspruch 13, wobei die Arbeitsspeicherressourcen mindestens eine Sendewarteschlange und eine Empfangswarteschlange beinhalten.
  17. Vorrichtung nach Anspruch 13, wobei der Programmcode des Weiteren so konfiguriert ist, dass er vor einem Übertragen des Zustands einen Client-Zugriff auf das erste Fenster aussetzt, indem er einen Seitenfehler erklärt, der dem ersten Fenster in einer Seitentabelle zugehörig ist, und dass er nach einem Übertragen des Zustands einen Client-Zugriff auf das zweite Fenster ermöglicht, indem er die Seitentabelle so aktualisiert, dass sie auf das zweite Fenster zeigt und damit den Seitenfehler behebt.
  18. Vorrichtung nach Anspruch 13, wobei der Programmcode des Weiteren so konfiguriert ist, dass er vor einem Übertragen des Zustands mindestens einen Hardware-Cache löscht, der dem ersten Fenster zugehörig ist.
  19. Vorrichtung nach Anspruch 13, wobei der Programmcode des Weiteren so konfiguriert ist, dass er eine Unterbrechungstabelle aktualisiert, um eine Unterbrechung zu aktualisieren, die dem ersten Fenster zugehörig ist, und dass er eine Unterbrechung für das zweite Fenster erzwingt.
  20. Vorrichtung nach Anspruch 13, wobei der Programmcode des Weiteren so konfiguriert ist, dass er einen Client-Zugriff auf das zweite Fenster neu abbildet.
  21. Vorrichtung nach Anspruch 20, wobei der Programmcode des Weiteren so konfiguriert ist, dass er vor einem Neu-Abbilden eines Client-Zugriffs auf das zweite Fenster das zweite Fenster aktiviert, so dass die Strukturschnittstelleneinheit ausstehende Operationen für das zweite Fenster wieder aufnimmt.
  22. Vorrichtung nach Anspruch 20, wobei der Programmcode des Weiteren so konfiguriert ist, dass er nach einem Neu-Abbilden eines Client-Zugriffs auf das zweite Fenster einen Client-Zugriff auf das zweite Fenster ermöglicht.
  23. Vorrichtung nach Anspruch 22, wobei der Programmcode so konfiguriert ist, dass er einen Client-Zugriff ermöglicht, um zu ermöglichen, dass ausstehende Operationen für den Client wieder aufgenommen werden, und dass er den Client über die Funktionsübernahme benachrichtigt, nachdem ausstehende Operationen für den Client wieder aufgenommen wurden.
  24. Vorrichtung nach Anspruch 23, wobei der Programmcode des Weiteren so konfiguriert ist, dass er in dem Client mindestens einen Peer-Client über das zweite Fenster benachrichtigt, nachdem der Client über die Funktionsübernahme benachrichtigt wird.
  25. Programmprodukt, aufweisend: ein computerlesbares Speichermedium; und Programmcode, der auf dem computerlesbaren Speichermedium gespeichert ist und so konfiguriert ist, dass er eine Funktionsübernahme für einen Datenübertragungskanal in einem Datenverarbeitungsknoten mit einer Strukturschnittstelleneinheit durchführt, die so konfiguriert ist, dass sie einen Client-Zugriff auf eine Cluster-Struktur über einen Datenübertragungskanal unter Verwendung eines ersten Fensters aus einer Vielzahl von Fenstern in der Strukturschnittstelleneinheit bereitstellt, wobei das erste Fenster einen Zustand des Datenübertragungskanals für den Client definiert, wobei das Fenster eine Vielzahl von Abbildungen zwischen Arbeitsspeicherressourcen, die dem Client zugeordnet sind, und ersten Hardware-Ressourcen enthält, die dem ersten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, und wobei der Programmcode so konfiguriert ist, dass er als Reaktion auf ein Erkennen eines Ausfalls in dem Datenübertragungskanal den durch das erste Fenster definierten Zustand auf ein zweites Fenster aus der Vielzahl von Kanälen überträgt, indem er die Vielzahl von Abbildungen aktualisiert, um die Arbeitsspeicherressourcen, die dem Client zugeordnet sind, auf die zweiten Hardware-Ressourcen abzubilden, die dem zweiten Fenster in der Strukturschnittstelleneinheit zugeordnet sind, und dass er einen Client-Zugriff auf die Cluster-Struktur über den Datenübertragungskanal unter Verwendung des zweiten Fensters wiederherstellt.
DE112013006063.9T 2012-12-18 2013-11-27 Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung Active DE112013006063B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/717,921 2012-12-18
US13/717,921 US9037898B2 (en) 2012-12-18 2012-12-18 Communication channel failover in a high performance computing (HPC) network
PCT/CN2013/087887 WO2014094521A1 (en) 2012-12-18 2013-11-27 Communication channel failover in a high performance computing (hpc) network

Publications (2)

Publication Number Publication Date
DE112013006063T5 true DE112013006063T5 (de) 2015-09-03
DE112013006063B4 DE112013006063B4 (de) 2019-02-07

Family

ID=50932437

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006063.9T Active DE112013006063B4 (de) 2012-12-18 2013-11-27 Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung

Country Status (6)

Country Link
US (1) US9037898B2 (de)
JP (1) JP6328134B2 (de)
CN (1) CN104871493B (de)
DE (1) DE112013006063B4 (de)
GB (1) GB2523284B (de)
WO (1) WO2014094521A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285719B1 (en) 2008-08-08 2012-10-09 The Research Foundation Of State University Of New York System and method for probabilistic relational clustering
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
JP2015072629A (ja) * 2013-10-03 2015-04-16 富士通株式会社 データ処理プログラム及びデータ処理方法
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
US9354992B2 (en) * 2014-04-25 2016-05-31 Netapp, Inc. Interconnect path failover
US11086521B2 (en) * 2015-01-20 2021-08-10 Ultrata, Llc Object memory data flow instruction execution
CN112214424B (zh) 2015-01-20 2024-04-05 乌尔特拉塔有限责任公司 对象存储器结构、处理节点、存储器对象存储和管理方法
US9535803B2 (en) 2015-02-23 2017-01-03 Red Hat Israel, Ltd. Managing network failure using back-up networks
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
CN108885604B (zh) 2015-12-08 2022-04-12 乌尔特拉塔有限责任公司 存储器结构软件实现方案
US10200310B2 (en) * 2015-12-24 2019-02-05 Intel Corporation Fabric-integrated data pulling engine
US9846610B2 (en) * 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10334334B2 (en) * 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for a data center
US10452279B1 (en) * 2016-07-26 2019-10-22 Pavilion Data Systems, Inc. Architecture for flash storage server
EP3279796B1 (de) * 2016-08-02 2020-07-15 NXP USA, Inc. Ressourcenzugangsverwaltungskomponente und verfahren dafür
US10705951B2 (en) * 2018-01-31 2020-07-07 Hewlett Packard Enterprise Development Lp Shared fabric attached memory allocator
US10629009B2 (en) 2018-04-25 2020-04-21 International Business Machines Corporation Non-intrusive unmanned entity inspection
US10676216B2 (en) * 2018-04-25 2020-06-09 International Business Machines Corporation Non-intrusive unmanned entity inspection
CN109766300A (zh) * 2018-12-07 2019-05-17 曙光信息产业股份有限公司 用于多节点服务器的互连板卡
JP7245083B2 (ja) * 2019-03-12 2023-03-23 キヤノン株式会社 放射線撮影システム及び放射線撮影システムの制御方法
US11204796B2 (en) * 2019-04-11 2021-12-21 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
EP3767922B1 (de) * 2019-07-17 2023-11-08 ABB Schweiz AG Verfahren zur kanalkartierung in einem industriellen prozesssteuerungssystem
US11194611B2 (en) 2019-07-29 2021-12-07 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
DE102019217844A1 (de) * 2019-11-20 2021-05-20 Robert Bosch Gmbh Verfahren zum Konfigurieren einer Speichereinheit einer Recheneinheit
US11347594B2 (en) * 2019-11-26 2022-05-31 International Business Machines Corporation Inter-processor communications fault handling in high performance computing networks
US11221906B2 (en) 2020-01-10 2022-01-11 International Business Machines Corporation Detection of shared memory faults in a computing job
WO2021215011A1 (ja) * 2020-04-24 2021-10-28 株式会社東陽テクニカ パケットキャプチャ装置及び方法
CN116171429A (zh) * 2020-09-24 2023-05-26 华为技术有限公司 数据处理的装置和方法
US11609878B2 (en) 2021-05-13 2023-03-21 Apple Inc. Programmed input/output message control circuit

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2174519B (en) 1984-12-26 1988-09-01 Vmei Lenin Nis Multiprocessor system
US4984235A (en) 1987-04-27 1991-01-08 Thinking Machines Corporation Method and apparatus for routing message packets and recording the roofing sequence
GB2369538B (en) * 2000-11-24 2004-06-30 Ibm Recovery following process or system failure
US7251745B2 (en) 2003-06-11 2007-07-31 Availigent, Inc. Transparent TCP connection failover
US7711977B2 (en) 2004-04-15 2010-05-04 Raytheon Company System and method for detecting and managing HPC node failure
US7475274B2 (en) 2004-11-17 2009-01-06 Raytheon Company Fault tolerance and recovery in a high-performance computing (HPC) system
US7571343B1 (en) 2006-08-31 2009-08-04 Nortel Networks Limited Handling sequence numbers and/or an anti-replay window after failover between servers
US7801028B2 (en) * 2007-12-31 2010-09-21 Schneider Automation Inc. Method and apparatus for transparent auto-recovery in chain and ring networks
US8275947B2 (en) 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US8291403B2 (en) 2008-06-30 2012-10-16 Symantec Operating Corporation Install-unit upgrade using dynamic configuration data manipulation and merging
US7944812B2 (en) * 2008-10-20 2011-05-17 International Business Machines Corporation Redundant intermediary switch solution for detecting and managing fibre channel over ethernet FCoE switch failures
US20100153612A1 (en) * 2008-12-15 2010-06-17 Lsi Corporation Transport agnostic scsi i/o referrals
US8370297B2 (en) * 2010-03-08 2013-02-05 International Business Machines Corporation Approach for optimizing restores of deduplicated data
US8677180B2 (en) * 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system

Also Published As

Publication number Publication date
GB2523284B (en) 2015-10-07
US20140173338A1 (en) 2014-06-19
US9037898B2 (en) 2015-05-19
WO2014094521A1 (en) 2014-06-26
GB201510653D0 (en) 2015-07-29
CN104871493B (zh) 2018-05-29
CN104871493A (zh) 2015-08-26
JP6328134B2 (ja) 2018-05-23
JP2016509700A (ja) 2016-03-31
DE112013006063B4 (de) 2019-02-07
GB2523284A (en) 2015-08-19

Similar Documents

Publication Publication Date Title
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE102012212511B4 (de) Betriebsverfahren eines Datenverarbeitungssystems, Datenverarbeitungsvorrichtung und Computerprogrammprodukt zum Bereitstellen einer Checkpoint-basierten Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware
DE69907776T2 (de) Verfahren und Vorrichtung zur Identifizierung gefährdeter Bauteile in einem System mit redundanten Bauteilen
DE69227956T2 (de) Multiprozessorsystem mit gespiegeltem Speicher
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102012210914B4 (de) Switch-Fabric-Management
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE102018005103A1 (de) Techniken zum Migrieren einer virtuellen Maschine unter Verwendung von verteilten Rechenbetriebsmitteln
DE112011103408T5 (de) Verwalten von komprimiertem Speicher unter Verwendung gestaffelter Interrupts
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
US10229021B1 (en) System, and control method and program for input/output requests for storage systems
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
US11929897B2 (en) Highly-scalable, software-defined, in-network multicasting of load statistics data
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102011119693A1 (de) System, Computer-implementiertes Verfahren und Computerprogrammprodukt zur direkten Kommunikation zwischen Hardwarebeschleunigern in einem Computercluster
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE202017105777U1 (de) System für hardwareunabhängigen RDMA
DE102020122714A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final