DE112011100854T5 - Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren - Google Patents

Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren Download PDF

Info

Publication number
DE112011100854T5
DE112011100854T5 DE112011100854T DE112011100854T DE112011100854T5 DE 112011100854 T5 DE112011100854 T5 DE 112011100854T5 DE 112011100854 T DE112011100854 T DE 112011100854T DE 112011100854 T DE112011100854 T DE 112011100854T DE 112011100854 T5 DE112011100854 T5 DE 112011100854T5
Authority
DE
Germany
Prior art keywords
bytes
processor
series
remote
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
DE112011100854T
Other languages
English (en)
Other versions
DE112011100854B4 (de
Inventor
Lixin Zhang
William Evan Speight
Ahmed Gheith
John Bruce Carter
Elmootazbellah Nabil Elnozahy
Eric van Hensberger
Karthick Rajamani
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 DE112011100854T5 publication Critical patent/DE112011100854T5/de
Application granted granted Critical
Publication of DE112011100854B4 publication Critical patent/DE112011100854B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

In den bevorzugten Ausführungsformen werden ein Verfahren, ein System und ein auf einem Computer verwendbares Programmprodukt für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereitgestellt. Eine Kern-zu-Kern-Direktübertragungseinheit (DCC) ist so konfiguriert, dass sie mit dem ersten Prozessor arbeitet, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt. Ein der DCC zugehöriger Arbeitsspeicher empfängt eine Reihe von Bytes, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird. Eine in der Reihe von Bytes festgelegte Operation wird in dem fernen Prozessor ausgeführt, so dass die Operation aufgerufen wird, ohne das Ausführen eines Software-Thread zu veranlassen.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein ein verbessertes Datenverarbeitungssystem und insbesondere ein auf einem Computer ausgeführtes Verfahren zum Verbessern von Operationen in einer Multiprozessor- bzw. Mehrkern-Datenverarbeitungsumgebung. Darüber hinaus betrifft die Erfindung insbesondere ein auf einem Computer ausgeführtes Verfahren, ein System und einen auf einem Computer verwendbaren Programmcode für eine schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bzw. Prozessorkernen in einer Multiprozessor- bzw. Mehrkern-Datenverarbeitungsumgebung.
  • Hintergrund der Erfindung
  • Datenverarbeitungssysteme enthalten Prozessoren zum Durchführen von Berechnungen. Ein Prozessor kann mehrere Verarbeitungskerne enthalten. Ein Kern ist ein Prozessor bzw. eine Einheit einer Prozessorschaltung, die als separate Verarbeitungseinheit betrieben werden kann. Einige Datenverarbeitungssysteme können mehrere Prozessoren enthalten. Eine Datenverarbeitungsumgebung kann Datenverarbeitungssysteme enthalten, die Einzelprozessoren, Mehrkernprozessoren und Multiprozessorkonfigurationen enthalten.
  • Für den Zweck dieser Offenlegung wird eine mehrere Prozessoren bzw. Prozessoren mit mehreren Kernen enthaltende Datenverarbeitungsumgebung allgemein Multiprozessorumgebung genannt.
  • Ein Thread ist ein Strom von ausführbarem Code innerhalb einer Anwendung, der auf einem Prozessor ausgeführt werden kann. Eine in einem Datenverarbeitungssystem ausgeführte Anwendung erzeugt Threads, die durch einen Prozessor in dem Datenverarbeitungssystem ausgeführt werden. Die Umsetzung von Threads und Prozessen unterscheidet sich von einem Betriebssystem zu einem anderen, wobei aber in den meisten Fällen ein Thread innerhalb eines der Anwendung zugehörigen Prozesses enthalten ist. Mehrere Threads können innerhalb desselben Prozesses vorhanden sein und gemeinsam Ressourcen wie Arbeitsspeicher nutzen.
  • Ein Prozessor in einer Multiprozessorumgebung verarbeitet Daten, auf die unter Verwendung eines Adressraums, der einem auf dem Prozessor ausgeführten Prozess zugehörig ist, Bezug genommen werden kann. Ein derartiger Adressraum wird Kontext genannt. Somit führt ein Prozessor Berechnungen innerhalb eines Kontexts durch.
  • Bei einer effektiven Adresse handelt es sich um eine Speicheradresse wie sie in einer durch einen Prozessor ausgeführten Anweisung bereitgestellt wird. Allgemein wird eine effektive Adresse in einen Adressraum eines für den Prozessor zugänglichen Arbeitsspeichers aufgelöst. Bei einer globalen Adresse handelt es sich um eine Adresse, die in einen globalen Adressraum aufgelöst wird. Ein globaler Adressraum ist einem Arbeitsspeicher zugehörig, der für alle Prozessoren in der Datenverarbeitungsumgebung zugänglich ist (somit global für die Datenverarbeitungsumgebung). Eine effektive Adresse kann mit einer geeigneten Konfiguration von Arbeitsspeicher in einer Multiprozessor-Datenverarbeitungsumgebung in eine globale Adresse umgewandelt werden.
  • Zusammenfassung der Erfindung
  • Die bevorzugten Ausführungsformen stellen ein Verfahren, ein System und ein auf einem Computer verwendbares Programmprodukt für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereit. Eine Ausführungsform konfiguriert eine Kern-zu-Kern-Direktübertragungseinheit (DCC, direct core to core communication unit) so, dass sie mit einem ersten Prozessor arbeitet, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt. Die Ausführungsform empfängt eine Reihe von Bytes in einem der DCC zugehörigen Arbeitsspeicher, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird. Die Ausführungsform erstellt ohne das Eingreifen von Software einen Hardware-Ausführungskontext in dem fernen Prozessor unter Verwendung von in der Reihe von Bytes festgelegten Daten. Die Ausführungsform führt in dem fernen Prozessor innerhalb des erstellten Kontexts eine in der Reihe von Bytes festgelegte Operation aus.
  • In einer anderen Ausführungsform enthält die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  • Eine Ausführungsform ermittelt ferner, ob die Reihe von Bytes eine vollständige Anweisung bildet. Das Ausführen findet infolge einer positiven Ermittlung statt.
  • In einer anderen Ausführungsform werden durch das Ausführen der Reihe von Bytes ferner die Bytes unter Verwendung einer Ladeanweisung in dem fernen Prozessor zum Berechnen geladen, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  • In einer anderen Ausführungsform werden durch das Ausführen der Reihe von Bytes ferner die Bytes unter Verwendung einer Ladeanweisung in dem fernen Prozessor zum Berechnen geladen, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  • Eine andere Ausführungsform beurteilt ferner, ob sich die Reihe von Bytes in der ersten logischen Position in einer FIFO-Warteschlange in dem Arbeitsspeicher befindet. Das Ausführen findet infolge eines positiven Ergebnisses der Beurteilung statt.
  • Eine andere Ausführungsform beurteilt ferner, ob das Ausführen der Reihe von Bytes blockiert wird. Das Ausführen findet infolge eines negativen Ergebnisses der Beurteilung statt.
  • In einer anderen Ausführungsform wird die Reihe von Bytes durch einen auf dem zweiten Prozessor ausgeführten Thread gesendet.
  • Eine andere Ausführungsform setzt die Reihe von Bytes unter Verwendung des Thread zusammen. Die Ausführungsform schreibt die Reihe von Bytes direkt in den Arbeitsspeicher der DCC des fernen Prozessors.
  • In einer anderen Ausführungsform wird die Reihe von Bytes unter Verwendung einer Speicheranweisung gesendet, die es dem zweiten Prozessor ermöglicht, direkt in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  • In einer anderen Ausführungsform handelt es sich bei dem Arbeitsspeicher um einen statischen Direktzugriffsspeicher (SRAM, static random access memory).
  • In einer anderen Ausführungsform ist der Arbeitsspeicher so konfiguriert, dass er mehrere Reihen von Bytes in einer Zuerst-rein-zuerst-raus-(FIFO-)Warteschlange speichert.
  • Eine Ausführungsform ermöglicht es dem zweiten Prozessor ferner, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben. Die Ausführungsform konfiguriert den fernen Prozessor so, dass es dem zweiten Prozessor gestattet wird, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  • In einer anderen Ausführungsform löst das Eintreffen der Reihe von Bytes in dem Arbeitsspeicher das Ausführen ohne das Senden einer Unterbrechung an den fernen Prozessor aus.
  • Gemäß einem ersten Aspekt stellt die vorliegende Erfindung ein Verfahren für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereit, wobei das Verfahren die folgenden Schritte umfasst: Konfigurieren einer Kern-zu-Kern-Direktübertragungseinheit (DCC) so, dass sie mit einem ersten Prozessor arbeitet, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt; Empfangen einer Reihe von Bytes in einem der DCC zugehörigen Arbeitsspeicher, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird; Erstellen eines Hardware-Ausführungskontexts in dem fernen Prozessor ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten; und Ausführen einer in der Reihe von Bytes festgelegten Operation in dem fernen Prozessor unter Verwendung des erstellten Kontexts.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext enthält, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das ferner Folgendes umfasst: Ermitteln, ob die Reihe von Bytes eine vollständige Anweisung bildet, wobei das Ausführen infolge eines positiven Ergebnisses der Ermittlung stattfindet.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem das Ausführen der Reihe von Bytes ferner Folgendes umfasst: Laden der Bytes unter Verwendung einer Ladeanweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem das Ausführen der Reihe von Bytes ferner Folgendes umfasst: Laden der Bytes unter Verwendung einer Anweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das ferner Folgendes umfasst: Beurteilen, ob die Reihe von Bytes die erste in einer FIFO-Warteschlange in dem Arbeitsspeicher ist, wobei das Ausführen infolge eines positiven Ergebnisses der Beurteilung stattfindet.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das ferner Folgendes umfasst: Beurteilen, ob das Ausführen der Reihe von Bytes blockiert wird, wobei das Ausführen infolge eines negativen Ergebnisses der Beurteilung stattfindet.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem die Reihe von Bytes durch einen auf dem zweiten Prozessor ausgeführten Thread gesendet wird.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das ferner Folgendes umfasst: Zusammensetzen der Reihe von Bytes unter Verwendung des Thread; und Schreiben der Reihe von Bytes direkt in den Arbeitsspeicher der DCC des fernen Prozessors.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem die Reihe von Bytes unter Verwendung einer Speicheranweisung gesendet wird, die es dem zweiten Prozessor ermöglicht, direkt in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem es sich bei dem Arbeitsspeicher um einen statischen Direktzugriffsspeicher (SRAM) handelt.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem der Arbeitsspeicher so konfiguriert ist, dass er eine Vielzahl von Reihen von Bytes in einer Zuerst-rein-zuerst-raus-(FIFO-)Warteschlange speichert.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, das ferner Folgendes umfasst: Ermöglichen des zweiten Prozessors, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben; und Konfigurieren des fernen Prozessors so, dass es dem zweiten Prozessor gestattet wird, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, bei dem das Eintreffen der Reihe von Bytes in dem Arbeitsspeicher das Ausführen ohne das Senden einer Unterbrechung an den fernen Prozessor auslöst.
  • Gemäß einem anderen Aspekt stellt die vorliegende Erfindung eine Vorrichtung für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereit, die Folgendes umfasst: einen ersten Prozessor, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt; eine Kern-zu-Kern-Direktübertragungseinheit (DCC) die so konfiguriert ist, dass sie mit dem ersten Prozessor arbeitet; und einen der DCC zugehörigen Arbeitsspeicher, wobei der Arbeitsspeicher eine Reihe von Bytes empfängt, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird, wobei der ferne Prozessor unter Verwendung eines Hardware-Ausführungskontexts, der ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten erstellt wird, eine in der Reihe von Bytes festgelegte Operation ausführt.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, in der die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext enthält, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der das Ausführen stattfindet, wenn die Reihe von Bytes eine vollständige Anweisung bildet.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher der ferne Prozessor die Reihe von Bytes infolge des Ladens der Bytes unter Verwendung einer Ladeanweisung ausführt, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher der ferne Prozessor die Reihe von Bytes infolge des Ladens der Bytes unter Verwendung einer Anweisung ausführt, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher der ferne Prozessor die Reihe von Bytes als Reaktion darauf ausführt, dass die Reihe von Bytes die erste logische Position in einer FIFO-Warteschlange in dem Arbeitsspeicher belegt.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher der ferne Prozessor die Reihe von Bytes als Reaktion darauf ausführt, dass das Ausführen der Reihe von Bytes nicht blockiert wird.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher die Reihe von Bytes durch einen auf dem zweiten Prozessor ausgeführten Thread gesendet wird.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der es sich bei dem Arbeitsspeicher um einen statischen Direktzugriffsspeicher (SRAM) handelt.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei welcher der Arbeitsspeicher so konfiguriert ist, dass er eine Vielzahl von Reihen von Bytes in einer Zuerst-rein-zuerst-raus-(FIFO-)Warteschlange speichert.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, die ferner Folgendes umfasst: eine erste Konfiguration, die es dem zweiten Prozessor ermöglicht, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben; und eine zweite Konfiguration, die den fernen Prozessor so konfiguriert, dass es dem zweiten Prozessor gestattet wird, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  • Vorzugsweise stellt die vorliegende Erfindung eine Vorrichtung bereit, bei der das Eintreffen der Reihe von Bytes in dem Arbeitsspeicher das Ausführen ohne das Senden einer Unterbrechung an den fernen Prozessor auslöst.
  • Gemäß einem anderen Aspekt stellt die vorliegende Erfindung ein Datenverarbeitungssystem für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereit, wobei das Datenverarbeitungssystem Folgendes umfasst: eine Speichereinheit, die ein Speichermedium enthält, wobei die Speichereinheit auf einem Computer verwendbaren Programmcode speichert; und einen Prozessor, wobei der Prozessor den auf einem Computer verwendbaren Programmcode ausführt, und wobei der auf einem Computer verwendbare Programmcode Folgendes umfasst: auf einem Computer verwendbaren Code zum Konfigurieren einer Kern-zu-Kern-Direktübertragungseinheit (DCC) so, dass sie mit dem Prozessor arbeitet, wobei es sich bei dem Prozessor um einen fernen Prozessor handelt; auf einem Computer verwendbaren Code zum Empfangen einer Reihe von Bytes in einem der DCC zugehörigen Arbeitsspeicher, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird; auf einem Computer verwendbaren Code zum Erstellen eines Hardware-Ausführungskontexts in dem fernen Prozessor ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten; und auf einem Computer verwendbaren Code zum Ausführen einer in der Reihe von Bytes festgelegten Operation in dem fernen Prozessor unter Verwendung des erstellten Kontexts.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, wobei die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext enthält, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, das ferner Folgendes umfasst: auf einem Computer verwendbaren Code zum Ermitteln, ob die Reihe von Bytes eine vollständige Anweisung bildet, wobei das Ausführen infolge eines positiven Ergebnisses der Ermittlung stattfindet.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, bei dem das Ausführen der Reihe von Bytes ferner Folgendes umfasst: auf einem Computer verwendbaren Code zum Laden der Bytes unter Verwendung einer Ladeanweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, bei dem das Ausführen der Reihe von Bytes ferner Folgendes umfasst: auf einem Computer verwendbaren Code zum Laden der Bytes unter Verwendung einer Anweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, das ferner Folgendes umfasst: auf einem Computer verwendbaren Code zum Beurteilen, ob die Reihe von Bytes die erste in einer FIFO-Warteschlange in dem Arbeitsspeicher ist, wobei das Ausführen infolge eines positiven Ergebnisses der Beurteilung stattfindet.
  • Vorzugsweise stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, das ferner Folgendes umfasst: auf einem Computer verwendbaren Code zum Beurteilen, ob das Ausführen der Reihe von Bytes blockiert wird, wobei das Ausführen infolge eines negativen Ergebnisses der Beurteilung stattfindet.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
  • 1 ein Blockschaltbild eines Datenverarbeitungssystems, in dem bevorzugte Ausführungsformen der vorliegenden Erfindung umgesetzt werden können;
  • 2 ein Blockschaltbild einer beispielhaften logisch unterteilten Plattform, in der eine bevorzugte Ausführungsform der vorliegenden Erfindung umgesetzt werden können;
  • 3 ein Blockschaltbild einer beispielhaften Datenfernverarbeitungs-Umgebung, in der bevorzugte Ausführungsformen der vorliegenden Erfindung umgesetzt werden können;
  • 4 ein Blockschaltbild einer beispielhaften Konfiguration für die schnelle Fernberechnung und Datenfernübertragung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 5 ein Blockschaltbild eines Teils des Durchführens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 6 ein Blockschaltbild eines anderen Teils des Durchführens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 7 einen Ablaufplan eines beispielhaften Prozesses für einen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 8 einen Ablaufplan eines beispielhaften Prozesses für einen anderen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 9 einen Ablaufplan eines beispielhaften Prozesses zum Verwalten des Volumens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 10 einen Ablaufplan eines beispielhaften Prozesses für einen anderen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
  • 11 einen Ablaufplan eines beispielhaften Prozesses zum Konfigurieren einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung der bevorzugten Ausführungsformen
  • Gemäß einer Ausführungsform der Erfindung kann eine Multiprozessor- bzw. Mehrkern-Datenverarbeitungsumgebung so konfiguriert werden, dass ein auf einem Prozessor bzw. Kern ausgeführter Thread unter Verwendung eines anderen Prozessors bzw. Kerns Operationen durchführen kann. Derzeit werden Datenübertragungen zwischen Prozessoren auf viele Arten vorgenommen, darunter gemeinsam genutzter Speicher (SM, shared memory), Nachrichtenübergabe (MP, message passing), Remote Procedure Call (RPC), Anwesenheitsnachricht (AM, active message) sowie Active Memory Operation (AMO).
  • Die bevorzugten Ausführungsformen erkennen, dass das Durchführen von Fernberechnungen unter Verwendung eines derzeit verfügbaren Verfahrens einen erheblichen Verwaltungsaufwand in Bezug auf Datenverarbeitungsressourcen verursacht. Bei Fernberechnungen handelt es sich um Berechnungen, die auf einem Prozessor zugunsten eines auf einem anderen Prozessor ausgeführten Thread durchgeführt werden. Eine Anweisung, die möglicherweise lediglich vier Zyklen zum Ausführen und Durchführen der gewünschten Berechnung benötigt, kann zum Beispiel tausend Zyklen verbrauchen, bis die Prozedur eines bestehenden Verfahrens zum Datenaustausch abgeschlossen ist.
  • Die bevorzugten Ausführungsformen erkennen ferner, dass sich ein Teil des Verwaltungsaufwands bei Datenfernübertragungen und Fernberechnungen zwischen Prozessoren aus dem Aufwand für das Lesen und Schreiben in dynamischen Direktzugriffsspeicher-(DRAM-)Einheiten wie den in allgemeinem Arbeitsspeicher bzw. Hauptspeicher in aktuellen Datenverarbeitungssystemen verwendeten Einheiten ergibt. Das Initiieren von Berechnungen auf dem fernen Prozessor, zum Beispiel durch das Erzeugen einer Hardware-Unterbrechung, und die zeitliche Planung eines Software-Thread, stellen derzeit ebenfalls einen aufwändigen Prozess dar. Zusätzlicher Aufwand entsteht durch das Lesen und Interpretieren der Inhalte der Nachricht in jeder beliebigen Form, die sie annehmen können. Das Erkennen, das Erreichen und das Abrufen von Daten für derartige Berechnungen ist derzeit ebenfalls ein aufwändiger Prozess. Die Erfindung erkennt, dass ein Hardware-Mechanismus zur Ermöglichung einer Fernoperation mit geringerem Verwaltungsaufwand wünschenswert sein kann.
  • Die zur Beschreibung der Erfindung verwendeten bevorzugten Ausführungsformen gehen die oben beschriebenen Probleme sowie andere Probleme in Zusammenhang mit dem Austauschen von Daten mit fernen Prozessoren bzw. mit dem Aufrufen von Berechnungen auf fernen Prozessoren in Multiprozessorumgebungen allgemein an und lösen diese. Die bevorzugten Ausführungsformen der Erfindung stellen ein Verfahren, ein auf einem Computer verwendbares Programmprodukt und ein Datenverarbeitungssystem für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereit.
  • Die bevorzugten Ausführungsformen werden in Bezug auf Daten, Datenstrukturen und Kennungen lediglich beispielhaft beschrieben. Derartige Beschreibungen sollen die Erfindung nicht einschränken. Eine in Bezug auf eine Art Anweisung beschriebene bevorzugte Ausführungsform kann zum Beispiel unter Verwendung einer anderen Anweisung in einer unterschiedlichen Konfiguration auf eine ähnliche Weise innerhalb des Umfangs der Erfindung umgesetzt werden. Allgemein ist die Erfindung nicht auf eine bestimmte Nachrichtenreihe beschränkt, die in einer Multiprozessorumgebung verwendet werden kann.
  • Des Weiteren können die bevorzugten Ausführungsformen in Bezug auf jede beliebige Art von Datenverarbeitungssystem umgesetzt werden. Eine in Bezug auf einen Prozessor beschriebene bevorzugte Ausführungsform kann zum Beispiel in einem Mehrkernprozessor- bzw. Multiprozessorsystem innerhalb des Umfangs der Erfindung umgesetzt werden. Als anderes Beispiel kann eine Ausführungsform der Erfindung in Bezug auf jede beliebige Art von Client-System, Server-System, Plattform oder eine Kombination daraus umgesetzt werden.
  • Die bevorzugten Ausführungsformen werden ferner in Bezug auf bestimmte Parameter, Attribute und Konfigurationen lediglich beispielhaft beschrieben. Derartige Beschreibungen sollen die Erfindung nicht einschränken.
  • Eine Umsetzung einer Ausführungsform kann zum Beispiel die Form von Datenobjekten, Codeobjekten, eingebundenen Anweisungen Anwendungsfragmenten, verteilten Anwendungen bzw. eines Teiles davon, Treibern, Routinen, Diensten, Systemen – darunter das Basic Input/Output System (BIOS), sowie von anderen Arten von in einer Datenverarbeitungsumgebung verfügbaren Software-Umsetzungen aufweisen. Java® Virtual Machine (JVM®), ein Java®-Objekt, ein Enterprise Java Bean (EJB®), ein Servlet oder ein Applet können zum Beispiel Erscheinungsformen einer Anwendung sein, in Bezug auf welche, innerhalb welcher oder unter Verwendung welcher die Erfindung umgesetzt werden kann. (Java und sämtliche auf Java beruhenden Marken und Logos sind Marken bzw. registrierte Marken von Oracle und/oder ihren zugehörigen Unternehmen).
  • Eine bevorzugte Ausführungsform kann in Hardware, in Software oder in einer Kombination aus Hardware und Software umgesetzt werden. Die Beispiele in dieser Beschreibung werden lediglich der Klarheit der Beschreibung halber verwendet und schränken die bevorzugten Ausführungsformen nicht ein. Aus dieser Offenlegung sind zusätzliche oder unterschiedliche Informationen, Daten, Operationen, Aktionen, Aufgaben, Aktivitäten und Bearbeitungsvorgänge für gleichartige Zwecke denkbar, und diese sind innerhalb des Umfangs der bevorzugten Ausführungsformen vorgesehen.
  • Die bevorzugten Ausführungsformen werden unter Verwendung spezifischen Codes, spezifischer Datenstrukturen, Dateien, Dateisystemen, Protokollen, Bauformen, Architekturen, Anordnungen, Schaltbilder und Tools lediglich als Beispiele beschrieben und schränken die bevorzugten Ausführungsformen nicht ein. Des Weiteren werden die bevorzugten Ausführungsformen in einigen Fällen unter Verwendung bestimmter Datenverarbeitungsumgebungen lediglich als Beispiel der Klarheit der Beschreibung halber beschrieben. Die bevorzugten Ausführungsformen können in Verbindung mit anderen vergleichbaren oder gleichartigen Zwecken dienenden Strukturen, Systemen, Anwendungen oder Architekturen verwendet werden.
  • Jegliche hierin aufgeführten Vorteile sind lediglich Beispiele und sollen die bevorzugten Ausführungsformen nicht einschränken. Zusätzliche oder unterschiedliche Vorteile können durch spezielle bevorzugte Ausführungsformen realisiert werden. Des Weiteren kann eine bestimmte bevorzugte Ausführungsform einige, alle oder keine der oben aufgeführten Vorteile aufweisen.
  • Unter Bezugnahme auf die Figuren, und insbesondere unter Bezugnahme auf die 1 und 2, stellen diese Figuren Beispielsschaubilder von Datenverarbeitungsumgebungen dar, in denen bevorzugte Ausführungsformen umgesetzt werden können. Bei den 1 und 2 handelt es sich lediglich um Beispiele, die keinerlei Einschränkungen in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen umgesetzt werden können, anführen oder mit sich bringen sollen. Bei einer bestimmten Umsetzung können auf der Grundlage der folgenden Beschreibung viele Abwandlungen an den abgebildeten Umgebungen vorgenommen werden.
  • 1 zeigt ein Blockschaltbild eines Datenverarbeitungssystems, in dem die bevorzugten Ausführungsformen umgesetzt werden können. Bei dem Datenverarbeitungssystem 100 kann es sich um ein symmetrisches Mehrprozessor-(SMP-)System handeln, das eine Vielzahl von Prozessoren 101, 102, 103 sowie 104 enthält, die mit dem Systembus 106 verbunden sind. Bei dem Datenverarbeitungssystem 100 kann es sich zum Beispiel um ein in einem Netzwerk als Server umgesetztes IBM Power System® handeln. (Power Systems ist ein Produkt und ein Warenzeichen von International Business Machines Corporation in den USA und in anderen Ländern). Alternativ kann ein Einzelprozessorsystem eingesetzt werden. Ebenfalls mit dem Systembus 106 verbunden ist der Speichercontroller/Cachespeicher 108, der eine Schnittstelle zu einer Vielzahl von lokalen Speichern 160 bis 163 bereitstellt. Die E/A-Busbrücke 110 ist mit dem Systembus 106 verbunden und stellt eine Schnittstelle zum E/A-Bus 112 bereit. Der Speichercontroller/Cachespeicher 108 sowie die E/A-Busbrücke 110 können wie gezeigt integriert werden.
  • Das Datenverarbeitungssystem 100 ist ein logisch unterteiltes Datenverarbeitungssystem. Somit kann das Datenverarbeitungssystem 100 mehrere gleichzeitig ausgeführte heterogene Betriebssysteme (bzw. mehrere Instanzen eines einzelnen Betriebssystems) aufweisen. Jedes dieser mehreren Betriebssysteme kann eine beliebige Anzahl von darauf ausgeführten Softwareprogrammen aufweisen. Das Datenverarbeitungssystem 100 ist logisch unterteilt, so dass verschiedene PCI-E/A-Adapter 120 bis 121, 128 bis 129 sowie 136, der Grafikadapter 148 sowie der Festplattenadapter 149 verschiedenen logischen Partitionen zugewiesen sein können. In diesem Fall ist der Grafikadapter 148 mit einer (nicht gezeigten) Anzeigeeinheit verbunden, während der Festplattenadapter 149 mit einer Festplatte 150 verbunden ist und diese steuert.
  • Somit kann man zum Beispiel annehmen, dass das Datenverarbeitungssystem 100 in die drei logischen Partitionen P1, P2 und P3 unterteilt ist. Jeder der PCI-E/A-Adapter 120 bis 121, 128 bis 129, 136, der Grafikadapter 148, der Festplattenadapter 149, jeder der Host-Prozessoren 101 bis 104 sowie Speicher von den lokalen Speichern 160 bis 163 wird jedem der drei Partitionen zugewiesen. In diesen Beispielen können die Speicher 160 bis 163 die Form von DIMM-Speichermodulen (Dual Inline Memory Modules) annehmen. DIMMs werden Partitionen normalerweise nicht auf der Grundlage von einzelnen DIMMS zugewiesen. Stattdessen erhält eine Partition einen Anteil des von der Plattform erkannten Gesamtspeichers. Der Prozessor 101, ein gewisser Speicheranteil der lokalen Speicher 160 bis 163 sowie die E/A-Adapter 120, 128 und 129 können zum Beispiel einer logischen Partition P1 zugewiesen sein; die Prozessoren 102 bis 103, ein gewisser Speicheranteil der lokalen Speicher 160 bis 163 sowie die PCI-E/A-Adapter 121 und 136 können der Partition P2 zugewiesen sein; und der Prozessor 104, ein gewisser Speicheranteil der lokalen Speicher 160 bis 163, der Grafikadapter 148 sowie der Festplattenadapter 149 können der logischen Partition P3 zugewiesen sein.
  • Jedes innerhalb des Datenverarbeitungssystems 100 ausgeführte Betriebssystem ist einer unterschiedlichen logischen Partition zugewiesen. Somit kann jedes innerhalb des Datenverarbeitungssystems 100 ausgeführte Betriebssystem lediglich auf diejenigen E/A-Einheiten zugreifen, die sich innerhalb dessen logischer Partition befinden. Somit kann zum Beispiel eine Instanz des Betriebssystems Advanced Interactive Executive (AIX®) innerhalb der Partition P1 ausgeführt werden, eine zweite Instanz (ein Abbild) des AIX Betriebssystems kann innerhalb der Partition P2 ausgeführt werden, und ein Linux® bzw. IBM-i® Betriebssystem kann innerhalb der logischen Partition P3 ausgeführt werden. (AIX und IBM-i sind Marken von International Business Machines Corporation in den USA und in anderen Ländern. Linux ist eine Marke von Linus Torvalds in den USA und in anderen Ländern).
  • Die mit dem E/A-Bus 112 verbundene Host-Brücke mit Schnittstelle für periphere Komponenten (PCI, Peripheral Component Interconnect) 114 stellt eine Schnittstelle zu dem PCI-Lokalbus 115 bereit. Eine Reihe von PCI-Eingabe/Ausgabe-Adaptern 120 bis 121 sind über die PCI-zu-PCI-Brücke 116, den PCI-Bus 118, den PCI-Bus 119, den E/A-Steckplatz 170, und den E/A-Steckplatz 171 mit dem PCI-Lokalbus 115 verbunden. Die PCI-zu-PCI-Brücke 116 stellt eine Schnittstelle zu dem PCI-Bus 118 und zu dem PCI-Bus 119 bereit. Die PCI-E/A-Adapter 120 und 121 befinden sich in den E/A-Steckplätzen 170 bzw. 171. Übliche PCI-Busausführungen unterstützen zwischen vier und acht E/A-Adapter (d. h. Erweiterungssteckplätze für Zusatzsteckverbinder (add-in connectors)). Jeder PCI-E/A-Adapter 120 bis 121 stellt eine Schnittstelle zwischen dem Datenverarbeitungssystem 100 und Eingabe-Ausgabe-Einheiten wie zum Beispiel anderen Netzwerkcomputern her, bei denen es sich um Clients des Datenverarbeitungssystems 100 handelt.
  • Eine zusätzliche PCI-Host-Brücke 122 stellt eine Schnittstelle für einen zusätzlichen PCI-Lokalbus 123 bereit. Der PCI-Lokalbus 123 ist mit einer Vielzahl von PCI-E/A-Adaptern 128 bis 129 verbunden. Die PCI-E/A-Adapter 128 bis 129 sind über die PCI-zu-PCI-Brücke 124, den PCI-Bus 126, den PCI-Bus 127, den E/A-Steckplatz 172 sowie den E/A-Steckplatz 173 mit dem PCI-Lokalbus 123 verbunden. Die PCI-zu-PCI-Brücke 124 stellt eine Schnittstelle zu dem PCI-Bus 126 und zu dem PCI-Bus 127 bereit. Die PCI-E/A-Adapter 128 und 129 befinden sich in den E/A-Steckplätzen 172 bzw. 173. Auf diese Weise können zusätzliche E/A-Einheiten wie zum Beispiel Modems bzw. Netzwerkadapter durch jeden der PCI-E/A-Adapter 128 bis 129 unterstützt werden. Folglich gestattet das Datenverarbeitungssystem 100 Verbindungen zu mehreren Netzwerkcomputern.
  • Ein speicheradressierter Grafikadapter 148 ist in den E/A-Steckplatz 174 gesteckt und stellt über den PCI-Bus 144, die PCI-zu-PCI-Brücke 142, den PCI-Lokalbus 141 sowie die PCI-Host-Brücke 140 eine Verbindung mit dem E/A-Bus 112 her. Der Festplattenadapter 149 kann in den E/A-Steckplatz 175 gesteckt sein, der mit dem PCI-Bus 145 verbunden ist. Dieser Bus ist wiederum mit der PCI-zu-PCI-Brücke 142 verbunden, die über den PCI-Lokalbus 141 mit der PCI-Host-Brücke 140 verbunden ist.
  • Eine PCI-Host-Brücke 130 stellt eine Schnittstelle für einen PCI-Lokalbus 131 zur Verbindung mit dem E/A-Bus 112 bereit. Der PCI-E/A-Adapter 136 ist mit dem E/A-Steckplatz 176 verbunden, der über den PCI-Bus 133 mit der PCI-zu-PCI-Brücke 132 verbunden ist. Die PCI-zu-PCI-Brücke 132 ist mit dem PCI-Lokalbus 131 verbunden. Dieser PCI-Bus verbindet auch die PCI-Host-Brücke 130 mit der Serviceprozessor-Postfach-Schnittstellen- und ISA-Bus-Zugriff-Durchgriffslogik (service processor mailbox interface and ISA bus access pass-through logic) 194 und der PCI-zu-PCI-Brücke 132.
  • Die Serviceprozessor-Postfach-Schnittstellen- und ISA-Bus-Zugriff-Durchgriffslogik 194 leitet für die PCI/ISA-Brücke 193 bestimmte PCI-Zugriffe weiter. Der NVRAM-Speicher 192 ist mit dem ISA-Bus 196 verbunden. Der Serviceprozessor 135 ist über seinen lokalen PCI-Bus 195 mit der Serviceprozessor-Postfach-Schnittstellen- und ISA-Bus-Zugriff-Durchgriffslogik 194 verbunden. Der Serviceprozessor 135 ist über eine Vielzahl von JTAG/I2C-Bussen 134 ebenfalls mit den Prozessoren 101 bis 104 verbunden. Bei den JTAG/I2C-Bussen 134 handelt es sich um eine Kombination aus JTAG/Scan-Bussen (siehe IEEE 1149.1) und Phillips I2C-Bussen.
  • Alternativ können die JTAG/I2C-Busse 134 ausschließlich durch Phillips I2C-Busse bzw. JTAG/Scan-Busse ersetzt werden. Alle SP-ATTN-Signale der Host-Prozessoren 101, 102, 103 und 104 sind gemeinsam mit einem Unterbrechungseingangssignal des Serviceprozessors 135 verbunden. Der Serviceprozessor 135 besitzt seinen eigenen lokalen Speicher 191 und hat Zugriff auf das Hardware-Bedienfeld (hardware OP-panel) 190.
  • Wenn das Datenverarbeitungssystem 100 erstmalig eingeschaltet wird, verwendet der Serviceprozessor 135 die JTAG/I2C-Busse 134 zur Abfrage der System-(Host-)Prozessoren 101 bis 104, des Speichercontrollers/Cachespeichers 108 sowie der E/A-Brücke 110. Nach Abschluss dieses Schrittes besitzt der Prozessor 135 ein Bestandsverzeichnis und ein Verständnis der Topologie des Datenverarbeitungssystems 100. Der Serviceprozessor 135 führt ebenso für alle durch die Abfrage der Host-Prozessoren 101 bis 104, des Speichercontrollers/Cachespeichers 108 sowie der E/A-Brücke 110 gefundenen Elemente integrierte Selbsttests (BISTs, Built-In-Self-Tests), grundlegende Sicherheitstests (BATs, Basic Assurance Tests) sowie Speichertests durch. Jegliche Fehlerinformationen über während der BISTs, BATs und Speichertests erkannte Fehlfunktionen werden durch den Serviceprozessor 135 gesammelt und berichtet.
  • Wenn nach dem Entfernen der während der BISTs, BATs und Speichertests als fehlerhaft vorgefundenen Elemente noch immer eine sinnvolle/gültige Konfiguration von Systemressourcen möglich ist, wird es dem Datenverarbeitungssystem 100 gestattet, mit dem Laden von ausführbarem Code in die lokalen (Host-)Speicher 160 bis 163 zu beginnen. Der Serviceprozessor 135 gibt dann die Host-Prozessoren 101 bis 104 zur Ausführung des in die lokalen Speicher 160 bis 163 geladenen Codes frei. Während die Host-Prozessoren 101 bis 104 Code von entsprechenden Betriebssystemen innerhalb des Datenverarbeitungssystems 100 ausführen, tritt der Serviceprozessor 135 in eine Überwachungs- und Fehlerberichterstattungs-Betriebsart ein. Die Art der von dem Serviceprozessor 135 überwachten Elemente beinhalten zum Beispiel die Lüfterdrehzahl und dessen Betrieb, Wärmesensoren, Stromversorgungsregler sowie behebbare und nicht behebbare Fehler, die von den Prozessoren 101 bis 104, den lokalen Speichern 160 bis 163, sowie der E/A-Brücke 110 berichtet werden.
  • Der Serviceprozessor 135 speichert und berichtet Informationen über Fehler in Bezug auf alle überwachten Elemente in dem Datenverarbeitungssystem 100. Der Serviceprozessor 135 führt auch Aktionen beruhend auf der Art von Fehlern und festgelegten Schwellwerten aus. Der Serviceprozessor 135 kann zum Beispiel übermäßig viele behebbare Fehler in dem Cachespeicher eines Prozessors erkennen und entscheiden, dass dies auf einen bevorstehenden Hardware-Fehler hindeutet. Auf der Grundlage dieser Feststellung kann der Serviceprozessor 135 diese Ressource während der aktuell laufenden Sitzung und während zukünftiger einleitender Programmladevorgänge (IPLs, Initial Program Loads) zur Dekonfiguration kennzeichnen. IPLs werden manchmal auch „Urladen” (boot) bzw. „Ureingabe” (bootstrap) genannt.
  • Das Datenverarbeitungssystem 100 kann unter Verwendung diverser handelsüblicher Computersysteme umgesetzt werden. Das Datenverarbeitungssystem 100 kann zum Beispiel unter Verwendung von IBM Power Systems, erhältlich von International Business Machines Corporation, umgesetzt werden. Ein derartiges System kann eine logische Unterteilung unter Verwendung des AIX Betriebssystems unterstützen, das ebenfalls von International Business Machines Corporation erhältlich ist.
  • Ein Fachmann wird verstehen, dass die in 1 abgebildete Hardware variieren kann. Zusätzlich oder an Stelle der abgebildeten Hardware können zum Beispiel auch andere Peripherie-Einheiten wie optische Plattenlaufwerke und dergleichen verwendet werden. Das abgebildete Beispiel soll keine architektonischen Einschränkungen in Bezug auf die bevorzugten Ausführungsformen mit sich bringen.
  • 2 zeigt ein Blockschaltbild einer beispielhaften logisch unterteilten Plattform, in der die bevorzugten Ausführungsformen umgesetzt werden können. Die Hardware in der logisch unterteilten Plattform 200 kann zum Beispiel als das Datenverarbeitungssystem 100 in 1 umgesetzt werden.
  • Die logisch unterteilte Plattform 200 enthält die unterteilte Hardware 230, die Betriebssysteme 202, 204, 206, 208 sowie die Plattform-Firmware 210. Eine Plattform-Firmware, z. B. die Plattform-Firmware 210, ist auch als Partitions-Verwaltungs-Firmware bekannt. Bei den Betriebssystemen 202, 204, 206 und 208 kann es sich um mehrere Kopien eines einzelnen Betriebssystems oder um mehrere heterogene Betriebssysteme handeln, die gleichzeitig auf der logisch unterteilten Plattform 200 laufen. Diese Betriebssysteme können unter Verwendung von IBM-i realisiert werden, die so ausgeführt sind, dass sie mit einer Partitions-Verwaltungs-Firmware wie dem Hypervisor verbunden sind. IBM-i wird in diesen bevorzugten Ausführungsformen lediglich als Beispiel verwendet. Natürlich können je nach spezieller Umsetzung auch andere Arten von Betriebssystemen wie AIX bzw. Linux verwendet werden. Die Betriebssysteme 202, 204, 206 und 208 befinden sich in den Partitionen 203, 205, 207 und 209.
  • Die Hypervisor-Software ist ein Beispiel einer Software, die zur Umsetzung der Partitions-Verwaltungs-Firmware 210 verwendet werden kann und von International Business Machines Corporation erhältlich ist. Firmware ist in einem Speicherchip gespeicherte „Software”, die ihren Inhalt ohne elektrischen Strom beibehält, z. B. Nur-Lese-Speicher (ROM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrisch löschbarer programmierbarer ROM (EEPROM) bzw. nichtflüchtiger Direktzugriffsspeicher (nichtflüchtiger RAM).
  • Außerdem enthalten diese Partitionen ebenfalls die Partitions-Firmware 211, 213, 215 und 217. Die Partitions-Firmware 211, 213, 215 und 217 kann unter Verwendung von Ureingabe-Code (initial boot strap code), IEEE-1275 standardisierter offener Firmware (Standard Open Firmware) sowie Laufzeit-Abstraktions-Software (RTAS, runtime abstraction software) realisiert werden, die von International Business Machines Corporation verfügbar ist. Wenn die Partitionen 203, 205, 207 und 209 instanziiert werden, wird durch die Plattform-Firmware 210 eine Kopie des Urlade-Codes in die Partitionen 203, 205, 207 und 209 geladen. Danach wird dem Urlade-Code die Steuerung übergeben, wobei der Urlade-Code dann die offene Firmware und die RTAS lädt. Die den Partitionen zugehörigen bzw. zugewiesenen Prozessoren werden dann dem Speicher der Partition zugeteilt, um die Partitions-Firmware auszuführen.
  • Die unterteilte Hardware 230 enthält eine Vielzahl von Prozessoren 232 bis 238, eine Vielzahl von System-Arbeitsspeichereinheiten 240 bis 246, eine Vielzahl von Eingabe-Ausgabe-(E/A-)Adaptern 248 bis 262 sowie eine Arbeitsspeichereinheit 270. Jeder der Prozessoren 232 bis 238, die Arbeitsspeichereinheiten 240 bis 246, der NVRAM-Speicher 298 sowie die E/A-Adapter 248 bis 262 können einer von mehreren Partitionen innerhalb der logisch unterteilten Plattform 200 zugehörig sein, wobei jede davon einem der Betriebssysteme 202, 204, 206 und 208 entspricht.
  • Die Partitions-Verwaltungs-Firmware 210 führt für die Partitionen 203, 205, 207 und 209 eine Reihe von Funktionen und Diensten durch, um die Unterteilung der logisch unterteilten Plattform 200 zu erzeugen und durchzusetzen. Bei der Partitions-Verwaltungs-Firmware 210 handelt es sich um eine durch Firmware ausgeführte virtuelle Maschine, die identisch zu der zugrundeliegenden Hardware ist. Somit ermöglicht die Partitions-Verwaltungs-Firmware 210 das gleichzeitige Ausführen von unabhängigen Betriebssystemabbildern 202, 204, 206 und 208 durch Virtualisierung sämtlicher Hardware-Ressourcen der logisch unterteilten Plattform 200.
  • Der Serviceprozessor 290 kann zur Bereitstellung diverser Dienste wie das Verarbeiten von Plattformfehlern in den Partitionen verwendet werden. Diese Dienste können auch als Dienstagent agieren, um Fehler an einen Verkäufer wie International Business Machines Corporation zurückzumelden. Die Operationen der verschiedenen Partitionen können durch eine Hardware-Verwaltungs-Konsole wie die Hardware-Verwaltungs-Konsole 280 gesteuert werden. Bei der Hardware-Verwaltungs-Konsole 280 handelt es sich um ein getrenntes Datenverarbeitungssystem, von dem aus ein Systemverwalter diverse Funktionen ausführen kann, darunter die Neuzuordnung von Ressourcen zu verschiedenen Partitionen.
  • Die Hardware in den 1 bis 2 kann abhängig von der Ausführung unterschiedlich sein. Zusätzlich oder an Stelle von bestimmter, in den 1 bis 2 abgebildeter Hardware können andere interne Hardware- oder Peripherie-Einheiten wie Flash-Speicher, gleichwertige nichtflüchtige Speicher bzw. optische Plattenlaufwerke und dergleichen verwendet werden. Eine Umsetzung der bevorzugten Ausführungsformen kann auch alternative Architekturen zum Verwalten von Partitionen verwenden, ohne von dem Umfang der Erfindung abzuweichen.
  • 3 zeigt ein Blockschaltbild einer beispielhaften Datenfernverarbeitungs-Umgebung, in der eine bevorzugte Ausführungsform umgesetzt werden kann. Die Prozessoren 302 und 304 können jeweils unter Verwendung eines beliebigen der Prozessoren 101 bis 104 in 1 umgesetzt werden. Bei den Prozessoren 302 und 304 kann es sich um unterschiedliche Prozessoren oder separate Kerne in einem Mehrkernprozessor handeln.
  • Der Prozessor 302 kann durch das Durchführen von Senden 306 eine Nachricht, einen Funktionsaufruf oder eine Operation zur Ausführung senden. An dem Prozessor 304 findet ein entsprechendes Empfangen – Empfangen 308 – der gesendeten Nachricht, des gesendeten Aufrufs bzw. der gesendeten Operation statt.
  • Bei der Verwendung von MP, kann der Thread 310 (Sende-Thread) auf dem Prozessor 302 (sendender Prozessor) eine Nachricht weiterleiten, um einen anderen Thread auf dem Prozessor 304 (ferner Prozessor) dazu zu veranlassen, eine gewünschte Berechnung durchzuführen. In einigen Fällen kann es sich bei der Nachrichtenübergabe lediglich um eine Übertragung von Daten handeln, die keine Anforderung einer Fernberechnung beinhaltet.
  • Wenn die Nachricht an dem fernen Prozessor 304 eintrifft, wird das Eintreffen durch Polling oder durch die Unterbrechung 312 erkannt. Ein empfangender Thread wird so geplant 314, dass er die Nachricht liest. Der empfangende Thread wird zu der festgelegten Zeit ausgeführt, um die Nachricht zu lesen. Beruhend auf den Inhalten der Nachricht kann der Thread 316 (Ziel-Thread) eine gewünschte Berechnung durchführen. Der Ziel-Thread 316 wird zu der festgelegten Zeit aktiviert und ausgeführt, um die gewünschte Berechnung durchzuführen.
  • Ein derzeit genutztes RPC-Verfahren zur Datenübertragung mit fernen Prozessoren unterscheidet sich von MP dahingehend, dass die Inhalte der Nachricht eine Funktionskennung sowie Funktionsparameter enthalten. Wenn Senden 306 RPC enthält, ist der Berechnungsaufwand für die Schritte 308, 312 und 314 im Wesentlichen der gleiche wie oben beschrieben. Zusätzlich zu den oben beschriebenen MP-Schritten an dem fernen Prozessor 304 geht RPC mit einer zusätzlichen Ausführung dahingehend einher, dass der Thread 318 die Funktion unter Verwendung der Funktionskennung auffindet und die Funktion unter Verwendung der zur Verfügung gestellten Parameter ausführt 320. Das Ausführen der Funktion kann zusätzliche Threads verwenden oder erzeugen.
  • Ein derzeit genutztes AM-Verfahren zur Datenübertragung mit fernen Prozessoren unterscheidet sich von RPC dahingehend, dass die Inhalte der Nachricht mit einem Funktionsaufruf einhergehen, indem ein Zeiger auf die Funktion zum Aufrufen sowie ein oder mehrere Funktionsparameter enthalten sind. Der durch das Verarbeiten einer AM verursachte Aufwand kann auch den Aufwand für das Ausführen des Thread 322 enthalten, um den Kontext einzurichten, in dem die Funktion ausgeführt wird, den Zeiger auf die Funktion aufzulösen oder die AM anderweitig zu bearbeiten und dann die Funktion auszuführen 324.
  • AMO gestattet das Ausführen von Operationen auf einem Spezialprozessor, der dem Speichercontroller auf dem Homeknoten der in der Operation verwendeten Daten zugehörig ist. Die üblicherweise in einer AMO unterstützten Berechnungen sind auf eine kleine Reihe von Spezialoperationen beschränkt, z. B. auf das Hinzufügen eines skalaren Werts zu einem einzelnen Datenpunkt oder auf den Versuch, eine Sperre zu erlangen, oder auf andere einzelne Operationen oder Berechnungen. Im Gegenteil, eine Ausführungsform der Erfindung ist nicht auf einzelne Operationen aus der kleinen Reihe von Spezialoperationen beschränkt. Unter Verwendung einer Ausführungsform kann jede beliebige Art Operation in jeder beliebigen Anzahl ohne Einschränkungen aus der Ferne durchgeführt werden.
  • Des Weiteren erkennt die Erfindung, dass in einigen oder sogar allen der obigen Verfahren zusätzlicher Aufwand verursacht werden kann. Beim Abschließen der Berechnung auf dem fernen Prozessor 304, kann das Senden 332, 334, 336 bzw. 338, um die Ergebnisse an den Sende-Thread in dem sendenden Prozessor zurückzusenden, zum Beispiel mit zusätzlichem Aufwand für die Zeitplanung und das Ausführen einhergehen.
  • 4 zeigt ein Blockschaltbild einer beispielhaften Konfiguration für die schnelle Fernberechnung und Datenfernübertragung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform. Das Datenverarbeitungssystem 402 kann den Prozessor bzw. Kern 404 enthalten. Der Prozessor 404 kann gleichartig wie ein beliebiger der Prozessoren 302 bzw. 304 in 3 sein.
  • Die Kern-zu-Kern-Direktübertragungseinheit (DCC) 406 enthält den Arbeitsspeicher 408. In einer Ausführungsform können Daten in einer Zuerst-rein-zuerst-raus-(FIFO-)Weise geschrieben bzw. entnommen werden. FIFO ist lediglich ein beispielhaftes Verfahren zum Lesen und Schreiben von Daten in dem Arbeitsspeicher 408 und soll die Erfindung nicht einschränken. Einem Prozessor kann zum Beispiel ein spezieller Bereich Arbeitsspeicher zugeordnet sein, in den er Daten schreiben kann. Ein Prozessor kann zum Beispiel lediglich an der fünften Stelle schreiben, während ein anderer Prozessor zuerst an der siebten Stelle und danach an der achten Stelle im Arbeitsspeicher 408 schreiben darf. In einigen Ausführungen kann der Arbeitsspeicher 408 als Arbeitspuffer ohne eine bestimmte Organisation behandelt werden. Allgemein kann in Zusammenhang mit einer Ausführungsform jedes beliebige Verfahren zum Ordnen des Lesens und Schreibens von Daten in dem Arbeitsspeicher 408 verwendet werden, ohne von der Erfindung abzuweichen. FIFO wurde lediglich als beispielhaftes Verfahren für den Betrieb des Speichers 408 und gleichartiger Vorrichtungen in anderen Ausführungsformen lediglich der Klarheit der Beschreibung halber gewählt, nicht etwa als Einschränkung.
  • In einer Ausführungsform kann der Arbeitsspeicher 408 unter Verwendung eines statischen Direktzugriffsspeichers (SRAM) umgesetzt sein. In einer anderen Ausführungsform kann der Arbeitsspeicher 408 unter Verwendung eines dynamischen Direktzugriffsspeichers (DRAM) umgesetzt sein.
  • Die FIFO-Beschreibungstabelle (FDT, FIFO description table) 410 verwaltet die FIFO-Lese/Schreib-Vorgänge in dem Arbeitsspeicher 408. Die FDT 410 kann außerdem unter Verwendung des Arbeitsspeichers 408 das Auslösen von Berechnungen in dem Prozessor 404 ermöglichen, wie andernorts in dieser Offenlegung erläutert ist. Die FDT 410 wird lediglich als Beispiel beschrieben, um der beispielhaften FIFO-Ordnung zu entsprechen. Als Struktur stellt die FDT 410 keine Einschränkung für die Erfindung dar. Die FDT 410 kann innerhalb des Umfangs der Erfindung durch jede beliebige geeignete Struktur ersetzt werden, die dem mit dem Arbeitsspeicher 408 verwendeten Ordnungsverfahren entspricht.
  • Der Level-1-Cachespeicher 412 (L1-Cache), der Level-2-Cachespeicher 414 (L2-Cache) sowie der Arbeitsspeicher 416 wie der lokale Speicher 160 in 1 können auf jede beliebige Weise für die Verwendung durch den Prozessor 404 konfiguriert werden. In einer Ausführungsform kann der Arbeitsspeicher 408 gleichgeordnet sein, das heißt, auf einer vergleichbaren Zugangs-, Hierarchie- oder Geschwindigkeitsebene wie der L1-Cache 412. In einer anderen Ausführungsform kann der Arbeitsspeicher 408 höher stehen, das heißt, auf einer höheren Zugangs-, Hierarchie- oder Geschwindigkeitsebene als der L1-Cache 412. In einer anderen Ausführungsform kann der Arbeitsspeicher 408 auf einer mit dem L2-Cache 414 vergleichbaren Hierarchieebene liegen. Obwohl es möglich ist, den Arbeitsspeicher 408 vergleichbar wie den Arbeitsspeicher 416 zu gestalten, können derartige Konfigurationen möglicherweise nicht mit ausreichend hoher Geschwindigkeit bzw. ausreichend niedrigem Aufwand arbeiten, um einen Vorteil der Erfindung zu realisieren.
  • 5 zeigt ein Blockschaltbild eines Teils des Durchführens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform. Das Datenverarbeitungssystem 502 kann gleichartig wie das Datenverarbeitungssystem 402 in 4 sein.
  • Der Prozessor 504, die DCC 506, der Arbeitsspeicher 508 und die FDT 510 können gleichartig wie die entsprechenden Artefakte in 4 sein. Ein Bereich des Arbeitsspeichers 508 kann als globaler Adressraum zugeordnet sein, in dem Daten unter Verwendung einer globalen Adresse geschrieben oder gelesen werden können. Des Weiteren kann ein derartiger Bereich in einer Ausführungsform in dem Arbeitsspeicher 508 zusammenhängend sein.
  • Bei dem Prozessor 504 kann es sich um einen fernen Prozessor handeln, auf dem es der auf dem Prozessor 514 ausgeführte Thread 512 wünschen kann, eine Operation durchzuführen. Eine Ausführungsform kann spezielle Lade- und Speicheranweisungen zum Lesen von bzw. Schreiben in dem Arbeitsspeicher 508 in einer FIFO-Betriebsart bereitstellen. Unter Verwendung einer derartigen Speicheranweisung kann der Thread 512 das Schreiben 516 durch Ausführen einer FIFO-Speicherung in Bezug auf den Arbeitsspeicher 508 durchführen.
  • Die FIFO-Speicheranweisung von Schreiben 516 kann eine gewisse Anzahl von Kontextinformationen enthaltenden Bytes in dem Arbeitsspeicher 508 speichern. Der Thread 512 kann zum Beispiel Daten bilden, die ausreichen, um das Ausführen der gewünschten Operation in dem Prozessor 504 zu veranlassen. Die Bytes, die den in Schreiben 516 geschriebenen Daten entsprechen, können ein oder mehrere Bytes mit Informationen enthalten, die den zum Ausführen der Operation in dem Prozessor 504 zu verwendenden Kontext bzw. Adressraum codieren. Des Weiteren können die den in Schreiben 516 geschriebenen Daten entsprechenden Bytes ein oder mehrere Bytes mit Daten enthalten, die auf dem Prozessor 504 auszuführende Anweisungen, die Adresse einer auf dem Prozessor 504 auszuführenden Funktion bzw. eine Funktionskennung, die eine auf dem Prozessor 504 aufzurufende Operation kennzeichnet, enthalten. Des Weiteren können die den in Schreiben 516 geschriebenen Daten entsprechenden Bytes ein oder mehrere Bytes mit Parametern enthalten, die für die Operation in einem festgelegten Kontext zu verwenden sind.
  • Die Gesamtanzahl an Bytes in Schreiben (FIFO-Speicherung) 516 wird in dem Prozessor 514 bestimmt. Die effektive Adresse der Bytes in dem Kontext von Thread 512 (die effektive Adresse des Senders) wird in eine globale Adresse übersetzt bzw. dieser zugeordnet, die entweder durch auf dem Prozessor 504 oder auf dem Prozessor 514 ausgeführte Prozesse erreichbar ist. Die der effektiven Adresse des Senders zugehörige globale Adresse kann sich zum Beispiel in dem Bereich des Arbeitsspeichers 508 befinden, der als globaler Adressraum zugeordnet wurde.
  • Die Bytes von Schreiben (FIFO-Speicherung) 516 werden dann in diese globale Adresse in dem Arbeitsspeicher 508 geschrieben. Es wird ein Eintrag in die FDT 510 in Bezug auf die in den Arbeitsspeicher 508 geschriebenen Bytes vorgenommen.
  • 6 zeigt ein Blockschaltbild eines anderen Teils des Durchführens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform. Der Prozessor 604, die DCC 606, der Arbeitsspeicher 608 und die FDT 610 können gleichartig wie die entsprechenden Artefakte in 6 sein.
  • Bei dem Auslöser 612 kann es sich um einen Auslösemechanismus für das Einleiten des Ausführens einer Anweisung auf dem Prozessor 604 handeln. In einer Ausführungsform kann der Auslöser 612 in Hardware umgesetzt werden.
  • Bei den Bytes 614 kann es sich um Bytes handeln, die einen Kontext enthalten, der durch Schreiben (FIFO-Speicherung) 516 in 5 geschrieben werden können. Die Bytes 614 können in der Reihenfolge geschrieben werden, in der sie an dem als FIFO-Warteschlange agierenden Arbeitsspeicher 608 empfangen werden. Die Bytes 614 können fortschreitend in der logischen Reihenfolge der FIFO-Warteschlange nach oben steigen, um letztendlich die erste logische Position in der FIFO-Warteschlange zu belegen.
  • Die FDT 610 kann ermitteln, ob bestimmte Bytes in der FIFO-Warteschlange in dem Arbeitsspeicher 608 bereit zur Ausführung sind. Sich nicht in der ersten Position in der FIFO-Warteschlange befindliche Bytes sind zum Beispiel nicht bereit zur Ausführung. Als weiteres Beispiel sind zum Zeitpunkt des Überprüfens nicht vollständig geschriebene Bytes nicht bereit zur Ausführung. Die Größe bzw. Anzahl von Bytes von einer bestimmten globalen Adresse kann zum Beispiel angeben, dass 64 Bytes von dieser Adresse gefunden bzw. verwendet werden sollten, wobei aber zum Zeitpunkt des Überprüfens lediglich 32 Bytes vorhanden sein können.
  • Die FDT 610 kann ermitteln, dass die Bytes in der ersten Position in der FIFO-Warteschlange, wie zum Beispiel die an die erste Position fortgeschrittenen Bytes 614 bereit zur Ausführung sind. Unter Verwendung des Auslösers 612 können die Bytes gelesen (FIFO-Lesen) 616 bzw. in den Prozessor 604 zur Ausführung geladen werden. Man erinnere sich, dass die Bytes den richtigen Kontext enthalten, innerhalb dessen die Anweisung in diesen Bytes auszuführen ist. Als Beispiel kann die FDT 610 beim Laden der Bytes bzw. davor die als Teil von Schreiben 516 in 5 gesendeten Kontextinformationen in entsprechende Register in den Prozessor 604 laden, so dass in dieser Nachricht dargestellte Adressen effektiven Adressen entsprechen, die von einem Thread in dem Prozessor 604 verwendet werden können. Diese Adressen können zum Codieren der Position von als Teil der angeforderten Operation auszuführenden Anweisungen verwendet werden. Diese Adressen können auch dazu verwendet werden, die Position von Parametern der auf dem Prozessor 604 durchzuführenden Funktion zu codieren.
  • Gemäß einer Ausführungsform kann das Eintreffen der Bytes in der DCC 606 die Berechnung auf dem fernen Prozessor 604 auf diese Weise automatisch starten. Die Fernberechnung und Datenfernübertragung unter Verwendung der FIFO-Speicherung, einschließlich des Auslösens der Operation und des Ladens des entsprechenden Kontexts in dem fernen Prozessor 604 ist wesentlich schneller als irgendeines der in 3 beschriebenen bestehenden Verfahren bzw. deren Abwandlungen. Der Gesamtaufwand der Fernberechnung und Datenfernübertragung auf diese Weise liegt auch erheblich unter dem Gesamtaufwand irgendeines der in 3 beschriebenen bestehenden Verfahren bzw. deren Abwandlungen.
  • Die von einem sendenden Prozessor an einen fernen Prozessor gesendeten Bytes können eine Anweisung gemäß einer beliebigen Konvention enthalten. In einer Ausführungsform kann die Anweisung zum Beispiel einen RPC darstellen und (optional) eine Funktionskennung, eine Reihe von Parametern für die Funktion sowie einen Kontext enthalten. Bei einer Reihe von Parametern handelt es sich um null oder mehr Parameter.
  • In einer anderen Ausführungsform kann die Anweisung einen RPC darstellen, aber das Ziel (den fernen Prozessor) indirekt beinhalten. Anstelle einer Kennung eines fernen Prozessors kann die Ausführungsform zum Beispiel die DCC des fernen Prozessors kennzeichnen, den Arbeitsspeicher der DCC des fernen Prozessors oder einen Adressraum innerhalb des Arbeitsspeichers der DCC des fernen Prozessors. Es kann jede beliebige andere indirekte oder implizierte Kennzeichnung des Ziels, an dem die Anweisung ausgeführt werden sollte, in Zusammenhang mit einer Ausführungsform innerhalb des Umfangs der Erfindung verwendet werden.
  • In einer anderen Ausführungsform kann die Anweisung eine AM darstellen und (optional) eine Kennung eines fernen Prozessors, einen Funktionscode, eine Reihe von Parametern für die Funktion sowie einen Kontext enthalten. In einer anderen Ausführungsform kann die Anweisung eine AM darstellen, aber das Ziel auf eine beliebige Weise indirekt beinhalten, darunter die oben als Beispiele beschriebenen Arten, aber nicht darauf beschränkt.
  • Andere Ausführungsformen können die Anweisung so codieren, dass sie ein beliebiges Verfahren zur Fernberechnung darstellt, darunter jedes beliebige derzeit verwendete Verfahren bzw. jede beliebige derzeit verwendete Beschreibung, aber nicht darauf beschränkt. Derartige codierte Anweisungen ergeben sich einem Fachmann aus der Beschreibung, und diese sind innerhalb des Umfangs der Erfindung vorgesehen.
  • Des Weiteren kann der Prozess des Ausführens der Anweisung aus dem Arbeitsspeicher in der DCC auf viele verschiedene Arten durchgeführt werden, ohne die Erfindung einzuschränken. In einer Ausführungsform kann ein bestehender Thread zum Beispiel aktiviert werden, um die Anweisung durchzuführen bzw. die darin enthaltene Funktion aufzurufen. In einer anderen beispielhaften Ausführungsform kann ein neuer Thread zum Durchführen der Anweisung erstellt werden. In einer anderen Ausführungsform kann ein Hardware-Thread zum Durchführen der Anweisung verwendet werden.
  • Außerdem kann die auszuführende Anweisung (bzw. die Funktion darin) auf viele verschiedene Arten durchgeführt werden, ohne die Erfindung einzuschränken. In einer Ausführungsform kann zum Beispiel eine Funktion ausgeführt werden, indem in einer Funktionstabelle gesucht wird und zu der in dem entsprechenden Tabelleneintrag gefundenen Funktionsadresse gesprungen wird. In einer anderen beispielhaften Ausführungsform kann die Funktion durch Springen zu einer festgelegten Adresse ausgeführt werden. In einem anderen Beispiel können die Inhalte der gesendeten Nachricht eine Reihe von binären (ausführbaren) Anweisungen enthalten, die selbst durch einen Thread in dem fernen Prozessor ausgeführt werden. Das Ergebnis des Ausführens der von dem sendenden Prozessor gesendeten Bytes kann von dem fernen Prozessor auf jede beliebige Art zurückgesendet werden, die für eine bestimmte Umsetzung geeignet ist, ohne von dem Umfang der Erfindung abzuweichen.
  • Andere Faktoren wie Stromsparen können in der Durchführung einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer Ausführungsform enthalten sein. Ein ferner Prozessor oder eine andere von dem fernen Prozessor zum Berechnen gemäß den von einem sendenden Prozessor gesendeten Bytes verwendete Komponente kann zum Beispiel zu einer bestimmten Zeit in Hibernationsmodus versetzt, ausgeschaltet, in einen Ruhezustand versetzt werden oder sich anderweitig in einem Stromsparmodus befinden. Als Teil des Durchführens einer Ausführungsform kann der ferne Prozessor bzw. eine andere Komponente zu einer geeigneten Zeit aktiviert werden, um die angeforderte Operation durchzuführen. Ein ferner Prozessor bzw. eine andere Komponente können zum Beispiel beim Eintreffen der Nachricht (Bytes) an dem Arbeitsspeicher einer DCC aktiviert werden. Der Aktivierungsprozess kann automatisch, periodisch, auf einem Ereignis beruhend oder auf jede beliebige andere Art durchgeführt werden, die für eine Umsetzung innerhalb des Umfangs der Erfindung geeignet ist. Des Weiteren kann es eine Ausführungsform einer Laufzeitumgebung bzw. einem Betriebssystem an dem sendenden Prozessor, dem fernen Prozessor oder an beiden Prozessoren gestatten, so zu arbeiten, wie sie es derzeit nach einer Anfangskonfiguration gemäß einer Ausführungsform tun. In einer Ausführungsform kann ein Prozessor zum Beispiel so konfiguriert sein, dass er in der Lage ist, an einen Arbeitsspeicher einer DCC eines zweiten Prozessors eine Anforderung für eine Fernoperation zu senden, nicht jedoch an den Arbeitsspeicher einer DCC eines dritten Prozessors. In einer anderen beispielhaften Ausführungsform können alle oder eine Teilmenge der Prozessoren in einer bestimmten Datenverarbeitungsumgebung so konfiguriert sein, dass sie gegenseitig in die Arbeitsspeicher der DCCs schreiben können. In einer anderen beispielhaften Ausführungsform können ein Prozessor und jeder beliebige andere mit diesem Prozessor auf irgendeine Art verwandte Prozessor (eine erste Gruppe von Prozessoren) so konfiguriert sein, dass sie in einen oder mehrere ferne Prozessoren in einer fernen Gruppe von Prozessoren schreiben können.
  • In einer beispielhaften Ausführungsform kann es an Stelle der oben beschriebenen gegenseitigen Zuordnung von Prozessoren oder zusätzlich dazu ermöglicht werden, dass ferne Prozessoren in den verschiedenen Prozessoren zugehörigen Adressräumen lesen, schreiben bzw. diese ausführen können. In noch einer anderen beispielhaften Ausführungsform kann es ermöglicht werden, dass ferne Prozessoren in kontrollierten Bereichen der Adressräume lesen, schreiben bzw. diese ausführen können. Die Zugriffssteuerung für derartige Adressräume kann auf jeder beliebigen Ebene ausgeführt werden, die für eine bestimmte Umsetzung geeignet ist. Eine Umsetzung der Zugriffssteuerung kann zum Beispiel das Schreiben in eine beliebige verfügbare Adresse innerhalb der Reichweite des Prozessors bzw. der DCC ermöglichen. In einer anderen Umsetzung können bestimmte Adressräume für derartige Datenfernübertragungen reserviert oder abgegrenzt werden. Eine Zugriffssteuerung mit anderen Unterteilungen kann für andere Umsetzungen besser geeignet sein.
  • Diese Beispiele des Herstellens einer Vertrauensstellung zwischen Prozessoren bzw. Arbeitsspeichern für das Durchführen einer Ausführungsform sollen die Erfindung nicht einschränken. Zum Aktivieren einer Ausführungsform kann jede beliebige Art von Vertrauensbeziehungen zwischen Prozessoren, Arbeitsspeichern, Datenverarbeitungssystemen oder anderen Komponenten innerhalb des Umfangs der Erfindung hergestellt werden.
  • Des Weiteren kann eine Vertrauensbeziehung vorher hergestellt werden und eine bestimmte Zeit lang andauern. Eine Vertrauensbeziehung kann auch nach Bedarf hergestellt werden und lediglich für eine spezifische Operation andauern, zum Beispiel zum Senden einer oder mehrerer Datenübertragungen. Eine Vertrauensbeziehung kann direkt zwischen zwei Prozessoren hergestellt oder von anderen Vertrauensbeziehungen eines Prozessors abgeleitet werden.
  • In einer anderen Ausführungsform kann ein ferner Prozessor Register, Threads oder andere Datenverarbeitungsressourcen zum Ausführen der unter Verwendung einer Ausführungsform gesendeten Bytes auf eine beliebige Weise zuordnen, die für eine bestimmte Konfiguration eines Prozessors geeignet ist. Eine Ressource kann zum Beispiel aus einem gemeinsam genutzten Pool dieser Ressource bzw. einem speziell für das Durchführen einer Ausführungsform der Erfindung vorgesehenen Pool dieser Ressource zugeordnet werden.
  • 7 zeigt einen Ablaufplan eines beispielhaften Prozesses für einen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Prozess 700 kann in dem Code eines Thread wie dem Thread 512 in 5 umgesetzt werden.
  • Der Prozess 700 beginnt mit dem Erstellen einer Anweisung zum Schreiben in eine DCC eines fernen Prozessors (Schritt 702). Bei der Anweisung kann es sich um eine Reihe von Bytes handeln, die auf jede beliebige Weise gebildet wird, die innerhalb des Umfangs der wie oben beschriebenen Erfindung beschrieben bzw. vorgeschlagen wurde. Bei einer Reihe von Bytes handelt es sich um ein oder mehrere Bytes. Der Prozess 700 kann den Schritt 702 zum Beispiel durch Schreiben der notwendigen Daten, wie zum Beispiel einen Funktionszeiger, einen Kontext sowie Parameter, in einen lokalen Puffer durchführen.
  • Der Prozess 700 schreibt die Anweisung in die DCC des fernen Prozessors unter Verwendung eines geeigneten Befehls wie der FIFO-Sendeanweisung (Schritt 704). Die geschriebene Anweisung enthält Informationen über einen Kontext zur Ausführung der Anweisung. Danach endet der Prozess 700.
  • 8 zeigt einen Ablaufplan eines beispielhaften Prozesses für einen anderen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Prozess 800 kann in einer DCC wie der DCC 606 in 6 ausgeführt werden.
  • Der Prozess 800 beginnt mit dem Empfangen einer Anweisung (die wie in Bezug auf die 5 und 6 beschriebenen Bytes) in einer DCC eines (fernen) Prozessors (Schritt 802). Ein anderer Prozess kann an dem mit „A” gekennzeichneten Eingangspunkt in den Prozess 800 eintreten.
  • Der Prozess 800 ermittelt, ob sich die Anweisung aus Schritt 802 an oberster Stelle in der in dem Arbeitsspeicher der DCC gespeicherten logischen FIFO-Warteschlange befindet (Schritt 804). Wenn sich die Anweisung nicht an oberster Stelle in der FIFO-Warteschlange befindet („Nein”-Pfad aus Schritt 804), kann der Prozess 800 warten oder anderweitig das Ablaufen eines Intervalls gestatten (Schritt 806). Der Prozess 800 kehrt dann zu Schritt 804 zurück.
  • Wenn sich die Anweisung aus Schritt 802 an oberster Stelle in der FIFO-Warteschlange befindet („Ja”-Pfad aus Schritt 804), ermittelt der Prozess 800, ob die Anweisung vollständig ist, bzw. anders ausgedrückt, ob die Anweisung nicht auf irgendeine Weise blockiert wird (Schritt 808). Wenn die Anweisung nicht vollständig ist oder wenn die Anweisung blockiert wird, („Nein”-Pfad aus Schritt 808), kehrt der Prozess 800 zu Schritt 802 zurück. Andernfalls („Ja”-Pfad aus Schritt 808), sendet der Prozess 800 die Anweisung an den Prozessor zur Ausführung innerhalb des bereitgestellten Kontexts (Schritt 810). Danach kann der Prozess 800 enden oder zu Schritt 802 zurückkehren, um die nächste Anweisung in der FIFO-Warteschlange zu bearbeiten.
  • Im Gegensatz zu Verfahren nach dem Stand der Technik führt das Senden von Anweisungen zur Ausführung auf diese Weise dazu, dass eine mit den Anweisungen codierte Operation aufgerufen wird, ohne die Hilfe von Software-Threads zu benötigen. Der Aufruf findet innerhalb eines Hardware-Ausführungskontexts unter Verwendung von in der Anweisung in dem fernen Prozessor festgelegten Daten statt.
  • Bei dem Hardware-Ausführungskontext handelt es sich um den Kontext, der den in der Anweisung enthaltenen Kontextinformationen entspricht. Sobald die Operation innerhalb des Hardware-Ausführungskontexts aufgerufen wird, können Software-Threads ausgeführt werden, um Datenübertragungen, E/A oder andere Bearbeitungsvorgänge durchzuführen, wie dies von der Operation jeweils benötigt wird.
  • 9 zeigt einen Ablaufplan eines beispielhaften Prozesses zum Verwalten des Volumens einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Prozess 900 kann in einer DCC wie der DCC 606 in 6 ausgeführt werden.
  • Der Prozess 900 beginnt mit dem Ermitteln, ob die Nutzung eines der DCC zum Pflegen der FIFO-Warteschlange gemäß einer Ausführungsform zugeordneten Arbeitsspeichers eine Schwellenwertkapazität erreicht hat (Schritt 902). Wenn die Speichernutzung den Schwellenwert nicht erreicht hat („Nein”-Pfad aus Schritt 902), endet der Prozess 900 danach. Andernfalls („Ja”-Pfad aus Schritt 902), lässt der Prozess 900 die FIFO-Warteschlange in einen anderen Speicher überlaufen, während er die Reihenfolge der verschiedenen in der FIFO-Warteschlange gespeicherten Anweisungen beibehält (Schritt 904). Danach endet der Prozess 900.
  • Für das Überlaufen in einen anderen Speicher kann der Prozess 900 einen Bereich eines Arbeitsspeichers zur Verwendung als FIFO-Warteschlange gemäß einer Ausführungsform zuordnen und konfigurieren (nicht gezeigt). Des Weiteren kann der Überlaufraum in einem anderen Arbeitsspeicher zugeordnet und konfiguriert werden als dem der DCC zugehörigen Arbeitsspeicher, wie zum Beispiel dem Arbeitsspeicher 608 in 6. Als Beispiel kann es sich bei dem Überlaufspeicher um einen dem L2-Cache gleichgeordneten Speicher oder um einen Teil des Hauptspeichers handeln.
  • 10 zeigt einen Ablaufplan eines beispielhaften Prozesses für einen anderen Teil einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Prozess 1000 kann in einer DCC wie der DCC 606 in 6 ausgeführt werden.
  • Der Prozess 1000 beginnt mit dem Erkennen (der Bytes) einer Operation in der DCC eines fernen Prozessors (Schritt 1002). Bei der in Schritt 1002 eintreffenden Operation kann es sich um eine DCC-Nachricht handeln, die Informationen über eine in dem zugehörigen Prozessor durchzuführende Operation enthält. Die Operation kann auf eine beliebige für eine bestimmte Umsetzung geeignete Art codiert sein.
  • Der Prozess 1000 ermittelt, ob ein Stromsparmodus aktiv ist (Schritt 1004). Wenn kein Stromsparmodus aktiv ist („Nein”-Pfad aus Schritt 1004), endet der Prozess 1000 am mit „A” gekennzeichneten Ausstiegspunkt und tritt in einen anderen Prozess mit einem entsprechenden in 8 mit „A” gekennzeichneten Einstiegspunkt ein.
  • Andernfalls („Ja”-Pfad aus Schritt 1004), aktiviert der Prozess 1000 den fernen Prozessor bzw. eine diesem zugehörige Komponente (Schritt 1006). Der Prozess 1000 kann zusätzlich oder alternativ dazu einen Thread als Teil des Zurückkehrens aus einem Stromsparmodus aktivieren (Schritt 1008). Der Prozess 1000 endet am mit „A” gekennzeichneten Ausstiegspunkt und tritt in einen anderen Prozess mit einem entsprechenden in 8 mit „A” gekennzeichneten Einstiegspunkt ein.
  • 11 zeigt einen Ablaufplan eines beispielhaften Prozesses zum Konfigurieren einer schnellen Datenfernübertragung und Fernberechnung zwischen Prozessoren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Prozess 1100 kann in einem Betriebssystem oder in einer anderen auf einem einen sendenden Prozessor und einen empfangenden Prozessor enthaltenden Datenverarbeitungssystem wie dem Datenverarbeitungssystem 502 in 5 ausgeführten Anwendung umgesetzt werden.
  • Der Prozess 1100 beginnt mit dem Konfigurieren eines sendenden Prozessors so, dass er in der Lage ist, Nachrichten, Anweisungen oder Befehle an die DCC eines fernen empfangenden Prozessors zu senden (Schritt 1102). Der Prozess 1100 bzw. ein gleichwertiger auf dem Datenverarbeitungssystem des empfangenden fernen Prozessors ausgeführter Prozess kann den fernen Prozessor so konfigurieren, dass dieser Nachrichten, Anweisungen oder Befehle von dem Sender aus Schritt 1102 in der DCC empfangen kann (Schritt 1104). Optional kann der Prozess 1100 ermitteln, ob es dem Sendeprozess ermöglicht werden sollte, eine Datenfernübertragung oder Fernberechnung mit dem empfangenden Prozess zu initiieren, und auswählen, keine Verbindung herzustellen, wenn Prüfungen der Berechtigungen anzeigen, dass es dem Sender nicht gestattet sein sollte, die angeforderte Fernoperation durchzuführen.
  • Der Prozess 1100 ermittelt, ob weitere Prozessoren zum Schreiben in die ferne DCC zu konfigurieren sind (Schritt 1106). Wenn weitere Prozessoren zu konfigurieren sind („Ja”-Pfad aus Schritt 1106), kehrt der Prozess 1100 zu Schritt 1102 zurück. Andernfalls („Nein”-Pfad aus Schritt 1106) endet der Prozess 1106 danach.
  • Die oben beschriebenen Komponenten in den Blockschaltbildern und Schritte in den Ablaufplänen sind lediglich als Beispiele beschrieben. Die Komponenten und Schritte wurden der Klarheit der Beschreibung halber ausgewählt und schränken bevorzugte Ausführungsformen der Erfindung nicht ein. Eine bestimmte Ausführung kann zum Beispiel jede beliebige der Komponenten bzw. jeden beliebigen der Schritte verknüpfen, weglassen, weiter unterteilen, abändern, erweitern, verringern oder alternativ umsetzen, ohne von dem Umfang von bevorzugten Ausführungsformen abzuweichen. Des Weiteren können die Schritte der oben beschriebenen Prozesse innerhalb des Umfangs der Erfindung in einer unterschiedlichen Reihenfolge durchgeführt werden.
  • Folglich werden in den bevorzugten Ausführungsformen ein auf einem Computer ausgeführtes Verfahren, eine Vorrichtung und ein Computerprogrammprodukt für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren bereitgestellt. Unter Verwendung einer Ausführungsform der Erfindung kann eine Datenverarbeitungsumgebung in der Lage sein, Operationen zwischen zwei oder mehr Prozessoren zu synchronisieren. Unter Verwendung einer Ausführungsform können Fernaktualisierungen vor Ort ausgeführt werden. Eine Ausführungsform kann das Ausführen von Operationen über einen Bereich von fernen Adressen ermöglichen.
  • Eine Ausführungsform kann auch eine effiziente Fernausführung von kurzen Funktionen ermöglichen, die keine nennenswerte Anzahl von Zyklen verbrauchen. Außerdem kann eine Ausführungsform das Ausführen von kurzen Funktionen ermöglichen, ohne Unterbrechungen, Polling bzw. Thread-Zeitplanungen zu verwenden bzw. mit verringertem Aufwand für Unterbrechungen bzw. Zeitplanungen.
  • Die Erfindung kann als Ausführungsform ausgeführt werden, die sowohl Hardware- als auch Software-Elemente enthält, In einer bevorzugten Ausführungsform ist die Erfindung als Software oder Programmcode realisiert, darunter Firmware, im Speicher befindliche Software, Mikrocode usw., aber nicht darauf beschränkt.
  • Des Weiteren kann die Erfindung die Form eines Computerprogrammprodukts annehmen, auf das von einem durch einen Computer verwendbaren bzw. durch einen Computer lesbaren Medium zugegriffen werden kann, das Programmcode bereitstellt, das von oder in Verbindung mit einem Computer oder jedem beliebigen Anweisungsausführungssystem verwendet wird. Für diese Beschreibung kann ein durch einen Computer verwendbares bzw. durch einen Computer lesbares Medium jede beliebige physische Vorrichtung sein, die das Programm, das von oder in Verbindung mit dem Anweisungsausführungssystem, der Vorrichtung oder der Einheit verwendet wird, enthalten, speichern, übertragen, verbreiten bzw. transportieren kann.
  • Bei dem Medium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem (bzw. eine derartige Vorrichtung oder Einheit) oder ein Verbreitungsmedium handeln. Zu Beispielen für ein durch einen Computer lesbares Medium zählen ein Halbleiter- oder Festkörperspeicher, Magnetband, eine auswechselbare Computerdiskette, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), eine starre Magnetplatte und eine optische Platte. Zu aktuellen Beispielen optischer Platten gehören ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine Lesen/Schreiben-Kompaktspeicherplatte (CD-R/W) und eine DVD.
  • Des Weiteren kann ein Computerspeichermedium einen durch einen Computer lesbaren Programmcode enthalten oder speichern, so dass, wenn der durch einen Computer lesbare Programmcode auf einem Computer ausgeführt wird, das Ausführen dieses durch einen Computer lesbaren Programmcodes den Computer dazu veranlasst, einen anderen durch einen Computer lesbaren Programmcode über eine Datenübertragungsverbindung zu übertragen. Diese Datenübertragungsverbindung kann ein Medium verwenden, das zum Beispiel ohne Einschränkungen physisch oder drahtlos sein kann.
  • Ein zur Speicherung und/oder Ausführung von Programmcode geeignetes Datenverarbeitungssystem enthält zumindest einen Prozessor, der direkt oder indirekt über einen Systembus mit Speicherelementen verbunden ist. Zu den Speicherelementen können ein lokaler Speicher, der während der eigentlichen Ausführung des Programmcodes eingesetzt wird, Massenspeichermedien sowie einen Cache-Speicher gehören, die eine vorübergehende Speicherung von zumindest etwas Programmcode bereitstellen, um die Häufigkeit zu verringern, mit der während der Ausführung Code von dem Massenspeichermedium abgerufen werden muss
  • Ein Datenverarbeitungssystem kann als Server-Datenverarbeitungssystem oder Client-Datenverarbeitungssystem dienen. Server- und Client-Datenverarbeitungssysteme können Datenspeichermedien enthalten, die durch einen Computer verwendbar sind, zum Beispiel durch einen Computer lesbar. Ein einem Server-Datenverarbeitungssystem zugehöriges Datenspeichermedium kann auf einem Computer verwendbaren Code enthalten. Ein Client-Datenverarbeitungssystem kann diesen auf einem Computer verwendbaren Code herunterladen, zum Beispiel zum Speichern auf einem dem Client-Datenverarbeitungssystem zugehörigen Datenspeichermedium oder zur Verwendung in dem Client-Datenverarbeitungssystem. Das Server-Datenverarbeitungssystem kann gleichartig auf einem Computer verwendbaren Code von dem Client-Datenverarbeitungssystem hochladen. Der sich aus einem durch einen Computer verwendbaren Programmprodukt der bevorzugten Ausführungsformen ergebende, auf einem Computer verwendbare Code kann auf diese Art unter Verwendung des Server- bzw. Client-Datenverarbeitungssystems hoch- oder heruntergeladen werden.
  • Eingabe/Ausgabe- bzw. E/A-Einheiten (darunter Tastaturen, Anzeigen, Zeigegeräte usw., jedoch nicht darauf beschränkt) können entweder direkt oder über mitbeteiligte E/A-Controller mit dem System verbunden werden.
  • Es können auch Netzwerkadapter mit dem System verbunden werden, um es dem Datenverarbeitungssystem zu ermöglichen, über mitbeteiligte private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichervorrichtungen verbunden zu werden. Modems, ein Kabelmodem sowie Ethernet-Karten sind nur einige wenige der momentan verfügbaren Arten von Netzwerkadaptern.
  • Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung aufgeführt und soll nicht gesamthaft stehen für bzw. begrenzt sein auf die Erfindung in der offengelegten Form. Für einen Fachmann werden viele Abänderungen und Abweichungen ersichtlich sein. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung zu erläutern und um es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Abänderungen, die für eine bestimmte vorgesehene Verwendung geeignet sind, zu verstehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 1149.1 [0086]
    • IEEE-1275 [0096]

Claims (28)

  1. Verfahren für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren, wobei das Verfahren die folgenden Schritte umfasst: Konfigurieren einer Kern-zu-Kern-Direktübertragungseinheit (DCC) so, dass sie mit einem ersten Prozessor arbeitet, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt; Empfangen einer Reihe von Bytes in einem der DCC zugehörigen Arbeitsspeicher, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird; Erstellen eines Hardware-Ausführungskontexts in dem fernen Prozessor ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten; und Ausführen einer in der Reihe von Bytes festgelegten Operation in dem fernen Prozessor unter Verwendung des erstellten Kontexts.
  2. Verfahren nach Anspruch 1, bei dem die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext enthält, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  3. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Ermitteln, ob die Reihe von Bytes eine vollständige Anweisung bildet, wobei das Ausführen infolge eines positiven Ergebnisses der Ermittlung stattfindet.
  4. Verfahren nach Anspruch 1, bei dem das Ausführen der Reihe von Bytes Folgendes umfasst: Laden der Bytes unter Verwendung einer Ladeanweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  5. Verfahren nach Anspruch 1, bei dem das Ausführen der Reihe von Bytes ferner Folgendes umfasst: Laden der Bytes unter Verwendung einer Anweisung, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  6. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Beurteilen, ob die Reihe von Bytes die erste in einer FIFO-Warteschlange in dem Arbeitsspeicher ist, wobei das Ausführen infolge eines positiven Ergebnisses der Beurteilung stattfindet.
  7. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Beurteilen, ob das Ausführen der Reihe von Bytes blockiert wird, wobei das Ausführen infolge eines negativen Ergebnisses der Beurteilung stattfindet.
  8. Verfahren nach Anspruch 1, bei dem die Reihe von Bytes durch einen auf dem zweiten Prozessor ausgeführten Thread gesendet wird.
  9. Verfahren nach Anspruch 8, das ferner Folgendes umfasst: Zusammensetzen der Reihe von Bytes unter Verwendung des Thread; und Schreiben der Reihe von Bytes direkt in den Arbeitsspeicher der DCC des fernen Prozessors.
  10. Verfahren nach Anspruch 1, bei dem die Reihe von Bytes unter Verwendung einer Speicheranweisung gesendet wird, die es dem zweiten Prozessor ermöglicht, direkt in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  11. Verfahren nach Anspruch 1, bei dem es sich bei dem Arbeitsspeicher um einen statischen Direktzugriffsspeicher (SRAM) handelt.
  12. Verfahren nach Anspruch 1, bei dem der Arbeitsspeicher so konfiguriert ist, dass er eine Vielzahl von Reihen von Bytes in einer Zuerst-rein-zuerst-raus-(FIFO-)Warteschlange speichert.
  13. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Ermöglichen, dass der zweite Prozessor in den Arbeitsspeicher der DCC des fernen Prozessors schreiben darf; und Konfigurieren des fernen Prozessors so, dass es dem zweiten Prozessor gestattet wird, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  14. Verfahren nach Anspruch 1, bei dem das Eintreffen der Reihe von Bytes in dem Arbeitsspeicher das Ausführen ohne das Senden einer Unterbrechung an den fernen Prozessor auslöst.
  15. Vorrichtung für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren, die Folgendes umfasst: einen ersten Prozessor, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt; eine Kern-zu-Kern-Direktübertragungseinheit (DCC) die so konfiguriert ist, dass sie mit dem ersten Prozessor arbeitet; und einen der DCC zugehörigen Arbeitsspeicher, wobei der Arbeitsspeicher eine Reihe von Bytes empfängt, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird, wobei der ferne Prozessor unter Verwendung eines Hardware-Ausführungskontexts, der ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten erstellt wird, eine in der Reihe von Bytes festgelegte Operation ausführt.
  16. Vorrichtung nach Anspruch 15, in der die Reihe von Bytes Informationen über einen in dem fernen Prozessor verfügbaren Kontext enthält, innerhalb dessen der ferne Prozessor eine in der Reihe von Bytes enthaltene Anweisung ausführen muss.
  17. Vorrichtung nach Anspruch 15, bei der das Ausführen stattfindet, wenn die Reihe von Bytes eine vollständige Anweisung bildet.
  18. Vorrichtung nach Anspruch 15, bei welcher der ferne Prozessor die Reihe von Bytes infolge des Ladens der Bytes unter Verwendung einer Ladeanweisung ausführt, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass ein erster Thread zum Lesen der Inhalte der Reihe von Bytes bzw. ein zweiter Thread zum Ausführen der Inhalte der Reihe von Bytes benötigt werden.
  19. Vorrichtung nach Anspruch 15, bei welcher der ferne Prozessor die Reihe von Bytes infolge des Ladens der Bytes unter Verwendung einer Anweisung ausführt, welche die Reihe von Bytes in dem fernen Prozessor zum Berechnen lädt, ohne dass eine Unterbrechung an den fernen Prozessor gesendet werden muss.
  20. Vorrichtung nach Anspruch 15, bei welcher der ferne Prozessor die Reihe von Bytes als Reaktion darauf ausführt, dass die Reihe von Bytes die erste logische Position in einer FIFO-Warteschlange in dem Arbeitsspeicher belegt.
  21. Vorrichtung nach Anspruch 15, bei welcher der ferne Prozessor die Reihe von Bytes als Reaktion darauf ausführt, dass das Ausführen der Reihe von Bytes nicht blockiert wird
  22. Vorrichtung nach Anspruch 15, bei welcher die Reihe von Bytes durch einen auf dem zweiten Prozessor ausgeführten Thread gesendet wird.
  23. Vorrichtung nach Anspruch 15, bei der es sich bei dem Arbeitsspeicher um einen statischen Direktzugriffsspeicher (SRAM) handelt.
  24. Vorrichtung nach Anspruch 15, bei welcher der Arbeitsspeicher so konfiguriert ist, dass er eine Vielzahl von Reihen von Bytes in einer Zuerst-rein-zuerst-raus-(FIFO-)Warteschlange speichert.
  25. Vorrichtung nach Anspruch 15, die ferner Folgendes umfasst: eine erste Konfiguration, die es dem zweiten Prozessor ermöglicht, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben; und eine zweite Konfiguration, die den fernen Prozessor so konfiguriert, dass es dem zweiten Prozessor gestattet wird, in den Arbeitsspeicher der DCC des fernen Prozessors zu schreiben.
  26. Vorrichtung nach Anspruch 15, bei der das Eintreffen der Reihe von Bytes in dem Arbeitsspeicher das Ausführen ohne das Senden einer Unterbrechung an den fernen Prozessor auslöst.
  27. Datenverarbeitungssystem für die schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren, wobei das Datenverarbeitungssystem Folgendes umfasst: eine Speichereinheit, die ein Speichermedium enthält, wobei auf der Speichereinheit auf einem Computer verwendbarer Programmcode gespeichert ist; und einen Prozessor, wobei der Prozessor den auf einem Computer verwendbaren Programmcode ausführt, und wobei der auf einem Computer verwendbare Programmcode Folgendes umfasst: auf einem Computer verwendbaren Code zum Konfigurieren einer Kern-zu-Kern-Direktübertragungseinheit (DCC) so, dass sie mit einem ersten Prozessor arbeitet, wobei es sich bei dem ersten Prozessor um einen fernen Prozessor handelt; auf einem Computer verwendbaren Code zum Empfangen einer Reihe von Bytes in einem der DCC zugehörigen Arbeitsspeicher, wobei die Reihe von Bytes von einem zweiten Prozessor gesendet wird; auf einem Computer verwendbaren Code zum Erstellen eines Hardware-Ausführungskontexts in dem fernen Prozessor ohne das Eingreifen von Software unter Verwendung von in der Reihe von Bytes festgelegten Daten; und auf einem Computer verwendbaren Code zum Ausführen einer in der Reihe von Bytes festgelegten Operation in dem fernen Prozessor unter Verwendung des erstellten Kontexts.
  28. Computerprogramm, das Computerprogrammcode umfasst, der, wenn er in ein Computersystem geladen und darauf ausgeführt wird, sämtliche Schritte des Verfahrens nach einem der Ansprüche 1 bis 14 durchführt.
DE112011100854.6T 2010-05-27 2011-05-25 Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren Active DE112011100854B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/789,082 2010-05-27
US12/789,082 US9934079B2 (en) 2010-05-27 2010-05-27 Fast remote communication and computation between processors using store and load operations on direct core-to-core memory
PCT/EP2011/058582 WO2011147884A1 (en) 2010-05-27 2011-05-25 Fast remote communication and computation between processors

Publications (2)

Publication Number Publication Date
DE112011100854T5 true DE112011100854T5 (de) 2013-01-24
DE112011100854B4 DE112011100854B4 (de) 2020-06-10

Family

ID=44279668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011100854.6T Active DE112011100854B4 (de) 2010-05-27 2011-05-25 Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren

Country Status (5)

Country Link
US (2) US9934079B2 (de)
DE (1) DE112011100854B4 (de)
GB (1) GB2494578B (de)
TW (1) TW201211899A (de)
WO (1) WO2011147884A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411532B2 (en) * 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US8490111B2 (en) * 2011-04-16 2013-07-16 Throughputer, Inc. Efficient network and memory architecture for multi-core data processing system
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249822B1 (en) 1995-04-24 2001-06-19 Microsoft Corporation Remote procedure call method
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6904601B1 (en) 2000-04-07 2005-06-07 International Business Machines Corporation Method and system for providing remote procedure calls in a multiprocessing system
US6744765B1 (en) 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
JP3800037B2 (ja) * 2001-06-06 2006-07-19 日本電気株式会社 プロセッサ間通信システム及びそれに用いるプロセッサ間通信方法
US6976155B2 (en) 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US7315897B1 (en) * 2002-09-13 2008-01-01 Alcatel Lucent Adaptable control plane architecture for a network element
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7536468B2 (en) 2004-06-24 2009-05-19 International Business Machines Corporation Interface method, system, and program product for facilitating layering of a data communications protocol over an active message layer protocol
US7844973B1 (en) * 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US7464115B2 (en) 2005-04-25 2008-12-09 Silicon Graphics, Inc. Node synchronization for multi-processor computer systems
US7624250B2 (en) 2005-12-05 2009-11-24 Intel Corporation Heterogeneous multi-core processor having dedicated connections between processor cores
WO2007092747A2 (en) 2006-02-02 2007-08-16 Texas Instruments Incorporated Multi-core architecture with hardware messaging
US20070180310A1 (en) 2006-02-02 2007-08-02 Texas Instruments, Inc. Multi-core architecture with hardware messaging
US7937532B2 (en) 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US9032128B2 (en) 2008-04-28 2015-05-12 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared memory multi-processor systems
US8813091B2 (en) * 2008-08-04 2014-08-19 Oracle America, Inc. Distribution data structures for locality-guided work stealing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IEEE 1149.1
IEEE-1275

Also Published As

Publication number Publication date
US20120191946A1 (en) 2012-07-26
GB2494578A (en) 2013-03-13
GB201222539D0 (en) 2013-01-30
GB2494578B (en) 2017-11-29
US9934079B2 (en) 2018-04-03
TW201211899A (en) 2012-03-16
DE112011100854B4 (de) 2020-06-10
US20110296138A1 (en) 2011-12-01
US8799625B2 (en) 2014-08-05
WO2011147884A1 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102019110023A1 (de) System mit programmierbarer Multi-Kontext-Beschleuniger-Schaltung
DE112011102115B4 (de) Transparente Steigerung von Energieeinsparungen in einer Energieverbrauchs-Steuerungsumgebung
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE102006009617B4 (de) Informationssystem und Verfahren zum Steuern von mehreren Hot Plug Vorgängen
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102012203534B4 (de) Hardware-Charakterisierung für die Anwendung in Bezug auf virtuelle Umgebungen
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE202010017669U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE112017001148T5 (de) Abflachende portalbrücke .
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE112016007336B4 (de) Informationsverarbeitungsvorrichtung, Vorrichtungszuweisungsverfahren undVorrichtungszuweisungsprogramm
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
WO2013110736A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112015001477T5 (de) Hardwarezähler zum Verfolgen einer Auslastung in einem Multithreading-Computersystem
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE102007046947A1 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem

Legal Events

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