DE102013209643B4 - Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens - Google Patents

Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens Download PDF

Info

Publication number
DE102013209643B4
DE102013209643B4 DE102013209643.7A DE102013209643A DE102013209643B4 DE 102013209643 B4 DE102013209643 B4 DE 102013209643B4 DE 102013209643 A DE102013209643 A DE 102013209643A DE 102013209643 B4 DE102013209643 B4 DE 102013209643B4
Authority
DE
Germany
Prior art keywords
bucket
nodelets
nodelet
response
memory area
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.)
Active
Application number
DE102013209643.7A
Other languages
English (en)
Other versions
DE102013209643A1 (de
Inventor
Amith R. Mamidala
Valentina Salapura
Robert W. Wisniewski
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 DE102013209643A1 publication Critical patent/DE102013209643A1/de
Application granted granted Critical
Publication of DE102013209643B4 publication Critical patent/DE102013209643B4/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Abstract

Eine Unterstützung für Punkt-zu-Punkt-Nachrichtenaustausch innerhalb eines Nodelet für Nodelets auf einem einzelnen Chip, welche der MPI-Semantik gehorchen, kann bereitgestellt werden. In einem Aspekt wird ein lokaler Pufferungsmechanismus verwendet, welcher Standard-Datenübertragungsprotokollen für die Netzübertragung zwischen den in einem einzelnen Chip integrierten Nodelets gehorcht. Das Senden von Nachrichten von einem Nodelet an ein anderes Nodelet auf demselben Chip kann statt über das Netz durch Austauschen der Nachrichten in den Punkt-zu-Punkt-Nachrichtenaustausch-Buckets zwischen den Nodelets erfolgen. Die Nachrichtenaustausch-Buckets brauchen nicht Teil des Arbeitsspeichersystems der Nodelets zu sein. Spezial-Hardwarecontroller können verwendet werden, um Daten zwischen den Nodelets und jedem Nachrichtenaustausch-Bucket zu verschieben und eine einwandfreie Arbeitsweise des Netzprotokolls sicherzustellen.

Description

  • GEBIET
  • Die vorliegende Anmeldung betrifft allgemein Computer und Computeranwendungen und insbesondere Computerarchitektur und insbesondere Nachrichtenaustausch in einem Halbleiterchip oder -plättchen.
  • HINTERGRUND
  • Chips mit elektronischen Schaltungen (oder integrierte Halbleiterschaltungen) werden mit zunehmenden Anzahlen von Komponenten, die auf den Chips integriert sind, hergestellt. Ein einzelner Chip wird so hergestellt, dass er eine Integration mehrerer Nodelets enthält. Und dazu kann jedes Nodelet auf einem einzelnen Chip eine Anzahl von Prozessoren aufweisen. Prozessoren in einem Nodelet können homogen (d.h. vom selben Typ) oder heterogen (d.h. von verschiedenen Typen) sein. Jedes Nodelet hat sein Speichersystem, jedoch wird Speicher unter den Nodelets nicht gemeinsam genutzt. Das heißt, jedes Nodelet hat einen eigenen Arbeitsspeicher-Kohärenzbereich.
  • In einem System mit mehreren Knoten tauschen Knoten untereinander Daten aus, indem sie ein oder mehrere Netzprotokolle verwenden. Bei vielen Anwendungen ist das Datenverkehrsaufkommen zwischen benachbarten Knoten größer als zwischen entfernt liegenden Knoten. Entsprechend findet Datenübertragung zwischen benachbarten Knoten häufiger statt als zwischen weiter entfernt liegenden Knoten. Das Abbilden logisch „naher“ Knoten auf physisch benachbarte Knoten verkürzt die Latenzzeit und senkt den Stromverbrauch. Durch das Abbilden logisch naher Knoten auf Knoten auf demselben Chip bleibt ein bedeutender Teil der Datenübertragung auf dem Chip. Nodelets beteiligen sich unter Verwendung eines Netzprotokolls, üblicherweise unter Verwendung des Message-Passing-Interface- (MPI-) (Nachrichtenübermittlungsschnittstellen-) Protokolls, über Netzverbindungen an einem größeren System mit mehreren Knoten.
  • Eine Netzübertragung bringt jedoch immer noch Aufwand mit sich wie die Arbeit, die für Netzprotokoll-Aufgaben, das Senden von Paketen und das Empfangen von Paketen auszuführen ist.
  • Die Message Passing Interface (MPI) stellt ein Programmierkonzept dar, das für Hochleistungs-Datenverarbeitung (HPC (high-performance computing)) verwendet wird. Das Modell fand hauptsächlich aufgrund seiner Portierbarkeit und seiner Unterstützung über HPC-Plattformen hinweg weite Verbreitung. Da MPI-Programme auf eine portierbare Weise geschrieben werden, optimieren Programmierer anwendungsbezogene Aspekte wie Datenberechnung und Datenübertragung, aber kümmern sie sich üblicherweise nicht um die Optimierung für die Ausführungsumgebung. Insbesondere werden MPI-Aufgaben häufig in einer linearen Reihenfolge auf die Prozessoren abgebildet.
  • Das Ermitteln der Datenübertragungsmuster von Anwendungen wurde durch A. Aggarwal, A. K. Chandra und M. Snir. On communication latency in PRAM computation. In Proceedings of the ACM Symposium on Parallel Algorithms and Architectures, Seiten 11 bis 21, Juni 1989, und von A. Alexandrov, M. F. lonescu, K. E. Schauser und C. Scheiman. LogGP: Incorporating long messages into the LogP model for parallel computation. Journal of Parallel and Distributed Computing, 44(1):71 bis 79, 1997, untersucht.
  • Unabhängig von solchen Datenübertragungsmuster-Untersuchungen stellt eine andere Kategorie vorhandener Technologie ein Modell zum Leiten des MPI-Programmierers bereit. Frühe Modelle ließen jedoch Hardwareeigenschaften ausdrücklich außer Acht, um das Modell zu vereinfachen. Neuere Modelle (siehe D. Culler, R. Karp, D. Patterson, A. Sahay, K. E. Schauser, E. Santos, R. Subramonian und T. von Eicken. LogP: Towards a realistic model parallel computation. In Proceedings of the ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming, Mai 1993; und M. I. Frank, A. Agarwal, und M. K. Vernon. LoPC: Modeling contention in parallel algorithms. In Proceedings of the ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming, Seiten 276 bis 287, Juni 1997) versuchen, ein theoretisches Modell für generische Netze zu entwickeln. Jedoch verzichtete eine solche Modellierung auf die Verwendung empirischer Daten zur Verbesserung der Modellgenauigkeit. Mit den vorhandenen Verfahren ist es schwierig, Leistungsgewinne zu erzielen.
  • Bekannt ist von YU, Zhiyi (et al.): An 800MHz 320mW 16-core processor with message-passing and shared-memory inter-core communication mechanisms, veröffentlicht in: Solid-State Circuits Conference Digest of Technical Papers (ISSCC), 2012 IEEE International, Konferenz vom 19. bis 23. Feb. 2012. IEEE, 2012. S.64-66.
  • In WO 2009/134 217 A1 ist ein Verfahren und System zum Erzeugen und Liefern von Inter-Prozessor-Interrupts in einem Multi-Core-Prozessor und in bestimmten Shared-Memory-Multi-Prozessor-Systemen beschrieben.
  • Ferner ist ein Aufsatz von Hoare, Charles Antony Richard veröffentlicht: An operating system structuring concept, Communications of the ACM, 1974, 17. Jg., Nr. 10, S. 549-557.
  • In dem US-Patent US 6,799,317 B1 wird ein Interrupt-Mechanismus zum Senden von Botschaften über ein Shared Memory beschrieben.
  • KURZBESCHREIBUNG
  • Die Erfindung stellt ein Verfahren für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens, ein System für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens, und ein computerlesbares Speichermedium in den unabhängigen Ansprüchen bereit. Ausführungsformen sind in den abhängigen Ansprüchen beschrieben.
  • Ein Verfahren und ein System für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens kann bereitgestellt werden. Das Verfahren kann in einem Aspekt das Zuordnen eines Bucket enthalten, welches eine Arbeitsspeicheranordnung und eine Hardwaresteuerlogik aufweist, welche die Nachrichtenübermittlungsschnittstellen-Semantik unterstützt, um Daten zwischen einem ersten Prozess in einem ersten Arbeitsspeicherbereich und einem zweiten Prozess in einem zweiten Arbeitsspeicherbereich auszutauschen, wobei der erste Arbeitsspeicherbereich und der zweite Arbeitsspeicherbereich nicht gemeinsam genutzt werden und wobei der Bucket nicht Teil des ersten Arbeitsspeicherbereichs oder des zweiten Arbeitsspeicherbereichs ist. Das Verfahren kann auch das Abbilden des Bucket auf den ersten Prozess enthalten. Das Verfahren kann außerdem das Schreiben, durch den ersten Prozess, von Nachrichtendaten in den Bucket und das Aufrufen einer Sendefunktion für Nachrichtenübermittlungsschnittstellen, welche ein Hardwaresignal an den zweiten Prozess gibt, enthalten. Das Verfahren kann darüber hinaus, als Reaktion auf das Aufrufen einer Empfangsfunktion für Nachrichtenübermittlungsschnittstellen durch den zweiten Prozess, das Abbilden des Puffers auf den zweiten Prozess enthalten, wobei der zweite Prozess befähigt wird, die Daten im abgebildeten Bucket zu lesen.
  • Ein System für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens kann in einem Aspekt eine Vielzahl von Nodelets auf einem einzelnen Chip enthalten, wobei jedes einzelne der Nodelets seinen eigenen Arbeitsspeicher-Kohärenzbereich hat, welcher nicht zusammen mit den übrigen Nodelets auf dem einzelnen Chip gemeinsam genutzt wird, wobei jedes Nodelet einen oder mehrere Prozesskerne aufweist, wobei die Vielzahl von Nodelets mindestens ein erstes Nodelet mit einem ersten Prozesskern und einem ersten Arbeitsspeicher-Kohärenzbereich und ein zweites Nodelet mit einem zweiten Prozesskern und einem zweiten Arbeitsspeicher-Kohärenzbereich aufweist. Das System kann auch einen Bucket enthalten, welcher eine Arbeitsspeicheranordnung und eine Hardwaresteuerlogik aufweist, welche die Nachrichtenübermittlungsschnittstellen-Semantik unterstützt, um Daten über die Vielzahl von Nodelets zu übermitteln, wobei der Bucket nicht Teil der Arbeitsspeicher-Kohärenzbereiche der Nodelets ist. Der erste Prozesskern wird befähigt, den Bucket auf den ersten Prozesskern abzubilden, Nachrichtendaten in den Bucket zu schreiben und eine Sendefunktion für Nachrichtenübermittlungsschnittstellen aufzurufen, welche ein Hardwaresignal an den zweiten Prozesskern gibt. Als Reaktion auf das Aufrufen einer Empfangsfunktion für Nachrichtenübermittlungsschnittstellen durch den zweiten Prozesskern wird der Puffer auf den zweiten Prozesskern abgebildet, um den zweiten Prozesskern zu befähigen, die Daten zu lesen.
  • Ein Verfahren für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens kann in einem weiteren Aspekt das Reservieren eines Bucket enthalten, welcher eine Arbeitsspeicheranordnung und eine Hardwaresteuerlogik aufweist, welche die Nachrichtenübermittlungsschnittstellen-Semantik unterstützt, um Daten zwischen einem ersten Prozess in einem ersten Arbeitsspeicherbereich und einem zweiten Prozess in einem zweiten Arbeitsspeicherbereich zu übermitteln, wobei der erste Arbeitsspeicherbereich und der zweite Arbeitsspeicherbereich nicht gemeinsam genutzt werden und wobei der Bucket nicht Teil des ersten Arbeitsspeicherbereichs oder des zweiten Arbeitsspeicherbereichs ist. Das Verfahren kann auch das Setzen einer Vielzahl von Steuerbits, um exklusiven Lese- und Schreibzugriff nur für den ersten Prozess anzuzeigen, enthalten. Das Verfahren kann außerdem das Empfangen eines durch den ersten Prozess aufgerufenen Sendeaufrufs enthalten. Das Verfahren kann darüber hinaus das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den ersten Prozess anzuzeigen, und das Geben eines Hardwaresignals für den zweiten Prozess enthalten. Das Verfahren kann noch darüber hinaus das Empfangen eines durch den zweiten Prozess aufgerufenen Empfangsaufrufs enthalten. Das Verfahren kann ferner das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen, enthalten. Das Verfahren kann auch, als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom ersten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen, enthalten. Das Verfahren kann auch, als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom zweiten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den ersten Prozess anzuzeigen, enthalten.
  • Auch ein computerlesbares Speichermedium, welches ein Programm aus durch eine Maschine ausführbaren Anweisungen speichert, um eines oder mehrere der hierin beschriebenen Verfahren durchzuführen, kann bereitgestellt werden.
  • Weitere Merkmale sowie der Aufbau und die Funktionsweise verschiedener Ausführungsformen werden unten anhand der beigefügten Zeichnungen ausführlich beschrieben. In den Zeichnungen bezeichnen gleiche Bezugszeichen gleiche oder funktionsgleiche Elemente.
  • Figurenliste
    • 1 veranschaulicht Komponenten eines Chips mit mehreren Nodelets in einer Ausführungsform der vorliegenden Offenbarung.
    • 2 veranschaulicht einen Nachrichtenaustausch-Mechanismus zwischen Nodelets in einer Ausführungsform der vorliegenden Offenbarung.
    • 3 ist ein Ablaufplan, welcher eine Nodelet-zu-Nodelet-Datenübertragung in einer Ausführungsform der vorliegenden Offenbarung veranschaulicht.
    • 4 veranschaulicht, wie in einer Ausführungsform der vorliegenden Offenbarung ein Bucket während einer Nachrichtenübertragung für einen Schreibvorgang und einen Lesevorgang von einem Absender- und einem Empfängerprozess gesteuert werden kann.
    • 5 veranschaulicht ein Beispiel eines Nachrichten-Bucket in einer Ausführungsform der vorliegenden Offenbarung. Das Beispiel zeigt eine Zwei-Nodelet-Bucket-Ausführung für Punkt-zu-Punkt-Nachrichtenaustausch.
    • 6 veranschaulicht einen Pufferkopiervorgang in einer Ausführungsform der vorliegenden Offenbarung.
    • 7 veranschaulicht mehrere Nodelets auf einem Plättchen in einer Ausführungsform der vorliegenden Offenbarung.
    • 8 veranschaulicht ein Szenario, in welchem in einer Ausführungsform der vorliegenden Offenbarung ein Puffer durch einen Prozess verändert wird.
    • 9 veranschaulicht ein Beispiel eines Nachrichten-Bucket, in welchem eine Mehr-Nodelet-Bucket-Ausführung bereitgestellt ist, um eine Nachricht an mehrere Nodelets zu übermitteln.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Der meiste Netzverkehr beim Ausführen von wissenschaftlichen und Hochleistungs-Anwendungen innerhalb eines komplexen Systems mit mehreren Knoten findet zwischen relativ lokalen Knoten statt, während nur der kleinere Teil zu relativ entfernt liegenden Knoten in einem System geht. Somit wäre es von Vorteil, wenn man über eine schnelle und effiziente Weise der Datenübertragung zwischen den lokalen Knoten verfügte.
  • Die vorliegende Offenbarung beschreibt Datenübertragungsmechanismen über verschiedene Arbeitsspeicherbereiche hinweg. In einem Aspekt wird Unterstützung bei Punkt-zu-Punkt-Nachrichtenaustausch mit niedrigem Aufwand und kurzer Latenzzeit innerhalb eines Nodelet für Nodelets auf einem einzelnen Chip, welche der MPI-Semantik gehorchen, bereitgestellt. In einem Aspekt wird ein lokaler Pufferungsmechanismus verwendet, welcher Standard-Datenübertragungsprotokollen für die Netzübertragung zwischen den in einem einzelnen Chip integrierten Nodelets gehorcht. Das Senden von Nachrichten von einem Nodelet an ein anderes Nodelet auf demselben Chip erfolgt in einer Ausführungsform der Methodik der vorliegenden Offenbarung nicht über das Netz, sondern durch Austauschen der Nachrichten in den Punkt-zu-Punkt-Nachrichtenaustausch-Buckets zwischen den Nodelets. Die Nachrichtenaustausch-Buckets sind nicht Teil des Arbeitsspeichersystems der Nodelets. Spezial-Hardwarecontroller werden zum Verschieben von Daten zwischen den Nodelets und jedem Nachrichtenaustausch-Bucket verwendet.
  • 1 veranschaulicht Komponenten eines Chips mit mehreren Nodelets in einer Ausführungsform der vorliegenden Offenbarung. Mehrere Nodelets (z.B. 104, 106) können in einem Chip 102 integriert sein. Jedes Nodelet (z.B. 104, 106) kann einen oder mehrere homogene oder heterogene Prozessorkerne haben. Jedes Nodelet (z.B. 104, 106) hat außerdem sein eigenes Arbeitsspeichersystem. Arbeitsspeicher wird unter den Nodelets (z.B. 104, 106) nicht gemeinsam genutzt. Nodelets (z.B. 104, 106) beteiligen sich unter Verwendung von Netzverbindungen 114 und des MPI-Protokolls an einem größeren System mit mehreren Knoten. Nachrichten von einem Prozess innerhalb eines Nodelet an andere Prozesse, die sich auf anderen Chips befinden, werden über eine Netzschnittstelle und das Netz gesendet. Das Senden von Nachrichten von einem Prozess innerhalb eines Nodelet an einen anderen Prozess in einem anderen Nodelet auf demselben Chip erfolgt nicht über das Netz, sondern durch Austauschen der Nachrichten in den Punkt-zu-Punkt-Nachrichtenaustausch-Buckets (z.B. 108, 110, 112) zwischen den Nodelets. In einer Ausführungsform werden Punkt-zu-Punkt-Nachrichtenaustausch-Buckets (z.B. 108, 110, 112) verwendet, um MPI-Daten zwischen den Nodelets (z.B. 104, 106) auf demselben Chip 102 zu übertragen. Ein Bucket (z.B. 108, 110, 112) weist eine Hauptspeicherkapazität und eine Hardwaresteuerlogik auf, welche einem Nachrichtenübermittlungsprotokoll wie MPI gehorcht und kann von allen Nodelets auf dem Chip verwendet werden, um Nachrichten von einem Nodelet zu einem anderen Nodelet auf demselben Chip zu übertragen. In einer Ausführungsform sind die Nachrichtenaustausch-Buckets (z.B. 108, 110, 112) nicht Teil des Arbeitsspeichersystems eines beliebigen der Nodelets auf dem Chip. In einer Ausführungsform werden Hardwarecontroller in jedem Nodelet (z.B. 104, 106) verwendet, um auf die Nachrichtenaustausch-Buckets (z.B. 108, 110, 112) zuzugreifen. Die Nachrichtenaustausch-Buckets (z.B. 108, 110, 112) in einer Ausführungsform unterstützen das MPI-Netzprotokoll. Die Nachrichtenaustausch-Buckets enthalten einen Arbeitsspeicher und eine Steuerlogik zum Empfangen von Nachrichten von einem Nodelet, Informieren eines anderen Nodelet darüber, dass die Nachricht wartet, und Sicherstellen des exklusiven Zugriffs auf einen bestimmten Arbeitsspeicher im Bucket, wie durch das MPI-Protokoll für die Nachrichtenübertragung zwischen zwei Knoten definiert. Einzelheiten darüber, wie dies ausgeführt ist, gehen aus der nachfolgenden Beschreibung hervor.
  • 2 ist ein Blockschaubild, welches einen Nachrichtenaustausch-Mechanismus zwischen Nodelets in einer Ausführungsform der vorliegenden Offenbarung veranschaulicht. Der Prozess 0 216 (z.B. ein Kern) auf dem Nodelet 0 204 eines Chips 202 kann eine kurze MPI-Punkt-zu-Punkt-Nachricht zum Beispiel wie folgt an den Prozess 1 218 (z.B. einen Kern) auf dem Nodelet 1 auf demselben Chip 202 senden. Das Senden von Nachrichten zwischen Nodelets auf demselben Chip erfolgt durch Verwendung von Nachrichtenaustausch-Buckets. Vor dem Senden einer Nachricht vom Prozess 0 216 an den Prozess 1 218 wird ein verfügbarer Bucket für diese Übertragung identifiziert und wird der identifizierte Bucket für die exklusive Verwendung für diese Nachricht während der Nachrichtenübertragung reserviert. Diese Reservierung erfolgt in für eine Anwendung transparenter Weise durch ein Betriebssystem (OS). Der Prozess 0 216 startet diese Funktionalität zum Beispiel über einen Funktions- oder Dienstprogrammaufruf wie my_addr = bucket-alloc. Diese Funktion, bucket_alloc, identifiziert einen verfügbaren Bucket. Dies ist ein zu malloc analoger Aufruf und bewirkt, dass Arbeitsspeicher des Bucket normal im Adressraum 208 des aufrufenden Prozesses erscheint. In einer Ausführungsform kann die Größe des Bucket in der Funktion als ein Argument angegeben werden. In einer weiteren Ausführungsform kann die Größe des Puffers im Bucket vordefiniert sein. In noch einer weiteren Ausführungsform sind für verschiedene Buckets verschiedene Größen von Puffern angegeben. Jetzt erscheint der neue Hauptspeicherbereich als ein Teil des Adressraums des Prozesses 0, und dieser Prozess kann in diesen Arbeitsspeicher schreiben, indem er ihn adressiert. Zum Beispiel kann der Prozess 0 geeignete Berechnungen oder Verarbeitungen durchführen und Daten in die zugeordnete Adresse schreiben. Dies bildet den Bucket 0 208 auf den Prozess 0 216 ab, und der Prozess 0 kann ein MPI_Send durchführen.
  • Wenn der Prozess 0 bereit ist, eine Nachricht aus dem Bucket 0 an den Prozess 1 zu senden, ruft er die Funktion MPI_Send auf. Die Spezial-Steuerhardware im Bucket 0 informiert den Prozess 1, dass eine zu empfangende Nachricht für ihn vorliegt und dass ihr Ort der Bucket 0 ist. Dies veranlasst den Prozess 1, den Aufruf MPI_Recv auszugeben, welcher den Bucket 0 wirksam auf die Hauptspeicherkapazität des Prozesses 1 abbildet. Nach Aufrufen von MPI_Send und MPI_Recv durch den Prozess 0 216 beziehungsweise den Prozess 1 218 wird der Bucket 0 208 auf beide Prozesse 216, 218 abgebildet. Damit gehört der Bucket 0 zur Hauptspeicherkapazität beider Prozesse und haben beide Prozesse vollen Lese- und Schreibzugriff darauf. In einer Ausführungsform der vorliegenden Offenbarung kann jedoch eine Nachricht, nachdem sie gesendet wurde, von dem Prozess aus, welcher sie erzeugte, nicht mehr verändert werden, weil die MPI-Syntax (oder die Syntax eines anderen Netzprotokolls) einzuhalten ist. Entsprechend kann die Nachricht in einer Ausführungsform der vorliegenden Offenbarung nicht durch einen anderen Prozess (zum Beispiel Prozess 1) verändert werden, wenn sie sich noch im Hauptspeicherbereich des Prozesses 0 befindet. Somit wird, wenn einer der Prozesse diesen Bucket 0 208 schreibt, ein „Kopieren-beim-Schreiben“-Protokoll gestartet, wobei eine neue Kopie des Bucket erzeugt wird. Die Abbildung wird so angepasst, dass die Buckets nun auf die richtigen Besitzer zeigen.
  • 3 ist ein Ablaufplan, welcher eine Nodelet-zu-Nodelet-Datenübertragung in einer Ausführungsform der vorliegenden Offenbarung veranschaulicht. Ein Prozess oder Kern (z.B. als Prozess 0 oder erster Prozess bezeichnet) auf einem Nodelet (z.B. als Nodelet 0 oder erstes Nodelet bezeichnet) kann eine Nachricht, z.B. eine kurze MPI-Punkt-zu-Punkt-Nachricht, an einen anderen Prozess oder Kern (z.B. als Prozess 1 oder zweiter Prozess bezeichnet) auf einem anderen Nodelet (z.B. als Nodelet 1 oder zweites Nodelet bezeichnet) senden. In 302 wird ein Bucket erstellt und auf den Prozess 0 abgebildet. Ein Funktionsaufruf kann bereitgestellt werden, um ein Bucket zu erstellen und einen Prozess darauf abzubilden. Zum Beispiel kann send_addr = Bucket_alloc (size, -1) (Process 0) ein Bucket erstellen und auf einen Prozess namens Prozess 0 abbilden. Nach dem Abbilden des Bucket kann der Prozess 0 auf die gleiche Weise, wie er auf irgendeinen anderen Speicher zugreift, Nachrichtendaten in den Bucket schreiben. Sobald die Nachricht bereit ist, gesendet zu werden, sendet Prozess 0 in 304 eine Nachricht, indem er eine Sendefunktion aufruft, die in der vorliegenden Offenbarung bereitgestellt wird. Die Sendefunktion legt eine Anzahl von Parametern fest, unter anderem Informationen wie die Adresse des erstellten Bucket, die Kommunikatorinformationen oder die Gruppen-ID des Prozesses 0, das Format der Daten und die ID des Empfängerknotens, welcher die Nachricht empfangen sollte. Bei Aufrufen der Sendefunktion wird ein Hardwaresignal an den Empfänger, den bestimmten Kern auf Nodelet 1, gegeben. Das gegebene Signal wird auf dem Nodelet 1 empfangen, und entweder kann es Informationen zum Identifizieren des Empfangsknotens enthalten und kann es die bestimmten Bucket- (z.B. bucket_id) Informationen mit einer aktiven Nachricht, die darauf wartet, empfangen zu werden, enthalten, oder es ist ein Signal für das Empfangs-Nodelet, dass eine Nachricht wartet, nach welchem eine Funktion aufgerufen wird, um zu identifizieren, welcher Knoten eine Nachricht empfängt und in welchem Bucket die Nachricht wartet. Ein Beispiel einer solchen Sendefunktion ist MPI_Send (send_addr, communicator_info, data_type, Process 1), wobei send_addr ein Referenzzeiger auf den oder eine Adresse des Bucket ist, communicator_info die Gruppeninformation ist, von welcher der Empfängerprozess ein Teil ist, data_type das Datenformat der Daten ist, die übermittelt werden, und Process 1 der Empfänger der Nachricht ist.
  • In 306 erhält der Empfängerprozess, Prozess 1, das Signal. In 308 können, je nachdem, ob der Prozess 1 vor oder nach dem Signal eine Empfangsfunktion aufgerufen hatte, zwei Szenarien eintreten. Ein Beispiel einer solchen Empfangsfunktion ist MPI_Recv. In einer Ausführungsform der vorliegenden Offenbarung kann erst nach Aufrufen der Funktion MPI_Recv durch den Prozess 1 eine Nachricht empfangen werden. Wenn der Prozess 1 MPI_Recv nicht aufrief, bleibt das Hardwaresignal im Zustand „anstehend“. Nach Aufrufen von MPI_Recv (recv_addr, communicator_info, data_type, Process 0) durch den Prozess 1 wird in 310 recv_addr auf bucket_id abgebildet und wird der Bucket-Speicher auf die Empfangsadressen in der Empfänger-Hauptspeicherkapazität abgebildet. Der Empfangsprozess, Prozess 1, wird befähigt, die Daten an recv_addr zu lesen. Jetzt kann der Prozess 1 auf die bereits im Bucket verfügbaren Nachrichtendaten zugreifen. Somit empfängt der Prozess 1 die Nachricht, und die Nachricht befindet sich bereits in seinem Arbeitsspeicher. In 312 wird das Hardwaresignal aus dem Bucket zurückgesetzt, um den Status der gerade gelieferten Nachricht widerzuspiegeln.
  • 4 veranschaulicht, wie in einer Ausführungsform der vorliegenden Offenbarung ein Bucket während einer Nachrichtenübertragung für einen Schreibvorgang und einen Lesevorgang von einem Absender- und einem Empfängerprozess gesteuert werden kann. In 402 kann ein Absenderprozess ein Bucket reservieren. In 404 werden Steuerbits für exklusiven Lese-/Schreibzugriff auf diesen Bucket nur für den Absenderprozess gesetzt. Wenn in 406 der Absenderprozess einen Sendeaufruf oder eine Sendefunktion aufruft, werden in 408 für den Absenderprozess die Steuerbits für gemeinsamen Lese-/Schreibzugriff gesetzt und wird ein Hardwaresignal für einen Empfängerprozess gegeben. Wenn in 410 der Empfängerprozess einen Empfangsaufruf oder eine Empfangsfunktion aufruft, werden für den Empfängerprozess die Steuerbits für gemeinsamen Lese-/Schreibzugriff gesetzt. Wenn in 414 der Absenderprozess oder Empfängerprozess einen Abbildungsaufhebungsaufruf oder eine derartige Funktion aufruft, wird der Bucket von diesem Prozess getrennt und werden die Steuerbits für exklusiven Lese-/Schreibzugriff für den anderen Prozess gesetzt, auf welchen der Bucket noch abgebildet ist. Wenn in 418 beide Prozesse vom Bucket getrennt werden, wird der Bucket freigegeben.
  • 5 veranschaulicht ein Beispiel eines Nachrichten-Bucket in einer Ausführungsform der vorliegenden Offenbarung. Das Beispiel zeigt eine Zwei-Nodelet-Bucket-Ausführung für Punkt-zu-Punkt-Nachrichtenaustausch. Ein Bucket 500 kann eine Arbeitsspeicheranordnung 508 und eine Hardwaresteuerlogik 514 für das Zugreifen auf die Arbeitsspeicheranordnung, welche einem Netzprotokoll gehorcht, enthalten. Ein Bucket kann außerdem ein Status-/Steuer- (SC- (status/control-)) Register 502 und einen Satz von Zugriffsbits 510 für jedes Element der Arbeitsspeicheranordnung 508 enthalten. Das SC-Register 502 speichert eine Angabe von Zugriffsarten, über welche ein Nodelet für die Elemente der Arbeitsspeicheranordnung 508 verfügt. Die Zugriffsarten, welche das SC-Register 502 anzeigen kann, können exklusives Schreiben, exklusives Lesen, gemeinsames Schreiben, gemeinsames Lesen, exklusives Lesen und Schreiben, gemeinsames Lesen und Schreiben und weitere enthalten, ohne auf diese beschränkt zu sein. In einer Ausführungsform hat die Arbeitsspeicheranordnung 508 zwei zu jeder Adresse zugehörige Sätze, Satz 0 512 und Satz 1 514. Nehmen wir an, dass ein Prozess auf dem Nodelet 0 (N0) 504 einen Puffer oder eine Arbeitsspeicheranordnung des Bucket 500 zuordnete. Der Bucket 500 weist dem Nodelet 0 504 den Exklusiv-Lese-/Schreib- (RW-) Status zu. Das Nodelet 0 504 schreibt Nachrichtendaten in den Bucket 502, indem es den Satz 0 512 des Bucket für die Daten verwendet. Das Nodelet 0 504 gibt mpi_send aus, wobei es die Adresse des zugeordneten Bucket, z.B. addr1, angibt. Die Nachrichten-Bucket- (MB- (Message Bucket)) Logik decodiert addr1, und je nachdem, ob addr1 sich auf demselben Chip befindet, z.B. Nodelet 1 506, oder ob addr1 außerhalb des Chips liegt, können zwei Szenarien eintreten. Wenn addr1 sich auf demselben Chip befindet, benachrichtigt die Logik des Nachrichten-Bucket 502 das Nodelet 1 506 zum Beispiel durch Ausgeben eines Interrupt. Wenn addr1 sich nicht auf demselben Chip befindet, benachrichtigt die Logik des Nachrichten-Bucket 500 die mit dem Chip verbundene Netz-Nachrichteneinheit (MU (Message Unit)), dass eine Nachricht bereitliegt, um über eine Netzschnittstelle auf dem Chip (nicht gezeigt) gesendet zu werden. Das Nodelet 1 506 bildet den zugeordneten Empfangspuffer auf den Bucket 500 ab. Der Bucket 500 weist dem Nodelet 1 506 Lese- (R-) Status und dem Nodelet 0 504 R-Status zu. Der Zugriffsstatus und der Nutzungsstatus für jeden Prozess werden im SC-Register 502 angezeigt. Wenn beide Prozesse nur Lesezugriffe ausgeben, werden die Daten aus dem Satz 0 512 ausgelesen und werden die Daten im Satz 1 nicht angegeben und erfolgt kein Zugriff auf diese.
  • In diesem Beispiel werden zwei Wörter (w0 und w1) im Arbeitsspeicher auf jedes Adresswort, Satz 0 und Satz 1, abgebildet. Wenn eine Nachricht geschrieben wird, wird sie in den ersten Satz geschrieben und werden alle Zugriffsbits 510 für alle in den ersten Wortsatz geschriebenen Wörter auf 11 für w0 und 00 für w1 gesetzt. Wenn das Nodelet 0 504 oder das Nodelet 1 506 ein Schreiben in den zugeordneten Puffer ausgibt, nachdem der Zugriffsstatus auf „gemeinsam“ gesetzt wurde, erkennt der Nachrichten-Bucket 500 einen Konflikt. Der Nachrichten-Bucket 500 sichert das veränderte Wort im ersten Satz am Ort w1 des Speicher-Bucket und setzt die Zugriffsbits für das veränderte Wort nur in w0 auf 01 und für w1 auf 10 - somit sieht das Nodelet 1, dass sein Puffer unverändert ist, und sieht das Nodelet 0 seine Veränderung. Wenn das Nodelet 0 504 ein Schreiben in den zugeordneten Puffer in ein Wort mit w0 11 und w1 00 ausgibt, schreibt es das veränderte Wort in w1 und setzt der Nachrichten-Bucket die Bits für w0 auf 10 und für w1 auf 01. Diese beiden Sätze von Zugriffsbits definieren für jedes Speicherelement und für die beiden Sätze, welcher Prozess Zugriff auf jeden Satz hat. Die beiden Zugriffsbits definieren die Sichtbarkeit des Satzes in diesem Arbeitsspeichereintrag für jeden der beiden Prozesse. Somit zeigen zum Beispiel der Wert 01 für w0 und der Wert 10 für w1 an, dass das Nodelet 0 504 Zugriff auf den Satz 1, aber nicht auf den Satz 0 hat, wohingegen das Nodelet 1 Zugriff auf den Satz 0, aber nicht auf den Satz 1 hat. Auf diese Weise gibt es zwei verschiedene Kopien der widersprüchlichen Daten, welche einer der Prozesse veränderte, nachdem ein Aufruf mpi_send ausgegeben wurde. Das Nodelet 0 504 und das Nodelet 1 506 verfügen über ihre eigenen Kopien der Daten, welche sie verändern können, ohne die Daten für den anderen Prozess zu ändern. Für Arbeitsspeichereinträge, welche von keinem der Prozesse geschrieben wurden, nachdem mpi_send ausgegeben wurde, werden die Daten in den Satz 0 gestellt, und die Zugriffsbits für diesen Speichereintrag sind 11 für w0 und 00 für w1.
  • 6 ist ein Ablaufplan, welcher das Aufrufen einer Pufferkopie in einer Ausführungsform der vorliegenden Offenbarung veranschaulicht. In 602 wird eine Arbeitsspeicherzugriffsanforderung an einen Bucket von einem Prozess empfangen, der z.B. als Prozess 0 bezeichnet wird. In 604 wird die Steuerbit-Einstellung im Bucket für den Prozess 0 geprüft. In einer Ausführungsform der vorliegenden Offenbarung haben, sobald ein Bucket abgebildet ist, nur der Sendeprozess 0 und der Empfangsprozess 1 Zugriff darauf. In 606 wird geprüft, ob der Prozess 0 Zugriff auf diesen Bucket hat. Wenn ja, wird in 608 geprüft, ob die Anforderung eine Anforderung ist, in den Bucket zu schreiben. Wenn ja, wird in 610 geprüft, ob Prozess 0 exklusiven Zugriff hat. Wenn ja, werden in 612 Daten in einen ersten Wortsatz, Satz 0, im Bucket-Speicher geschrieben. Andernfalls, wenn der Prozess 0 nicht exklusiven, sondern gemeinsamen Zugriff hat, werden in 614 Daten in einen zweiten Wortsatz, Satz 1, im Bucket-Speicher geschrieben. Wenn in 608 festgestellt wird, dass die Anforderung keine Schreibanforderung ist, wird in 616 geprüft, ob ein verändertes Wort vorliegt. Wenn ja, werden in 618 die Daten im zweiten Wortsatz, Satz 1, zurückgegeben. Wenn nein, werden in 620 die Daten im ersten Wortsatz, Satz 0, zurückgegeben. Während dieser Ablaufplan den Zugriff für den ersten Prozess 0 beschreibt, kann der Zugriff auf den Bucket von einem Empfängerprozess, der z.B. als Prozess 1 bezeichnet wird, aus erfolgen, indem immer auf den ersten Wortsatz, Satz 0, zugegriffen wird. Zum Beispiel beginnt das erste Nodelet, welches das Schreiben in ein gemeinsam genutztes Wort startet, Satz 1 Wörter w1 zu verwenden, und fährt das andere Nodelet (ein Empfänger-Nodelet) fort, Satz 0 Wörter w0 zu verwenden. Die Zugriffsbits werden demgemäß verändert und können in der Arbeitsspeicheranordnung von Reihe zu Reihe verschieden sein.
  • 7 veranschaulicht mehrere Nodelets auf einem Plättchen in einer Ausführungsform der vorliegenden Offenbarung. Ein Plättchen wie in 7 gezeigt kann ein Stück Halbleitermaterial oder dielektrisches Material sein, auf welchem eine oder mehrere elektrische Bauelemente integriert, z.B. montiert, geätzt oder gebildet sein können. In einer Ausführungsform werden die Buckets (z.B. 712, 714, 716, 718) über alle Nodelets (z.B. 704, 706, 708, 710) hinweg auf dem Chip mit mehreren Knoten 702 gemeinsam genutzt und können alle Nodelets auf dem Chip auf sie zugreifen. In einer Ausführungsform sind nur zwei Nodelets - ein Sende- und ein Empfangs-Nodelet - mit einem Bucket verbunden. In einer weiteren Ausführungsform kann jeder Bucket (z.B. 712, 714, 716, 718) auf mehr als ein Nodelet (z.B. 704, 706, 708, 710) abgebildet sein, wobei ein Nodelet eine Nachricht sendet und andere Nodelets die Nachricht empfangen. Zum Beispiel kann der Prozess 0 auf Nodelet 0 (704) die gleiche Nachricht an alle anderen Nodelets, Nodelet 1 (706), Nodelet 2 (708) und Nodelet 3 (710), senden, in welchem Fall alle diese Nodelets auf denselben Bucket zeigen und den Hauptspeicherbereich dieses Bucket auf ihre Hauptspeicherkapazitäten abbilden und auf Daten aus demselben Bucket zugreifen können.
  • 8 veranschaulicht ein Beispielszenario, in welchem, in einer Ausführungsform der vorliegenden Offenbarung, ein Prozess einen Bucket-Puffer zum Senden einer veränderten Nachricht verwendet. Anfänglich sendet ein Prozess 820 auf dem Nodelet 0 (804) eine Nachricht an das Nodelet 1 (806) und das Nodelet 3 (810). Anfänglich ist das Nodelet 0 (804) ein Absender der Nachricht im Bucket 01 (812) und zeigen die Nodelets 1 (806) und 3 (810) als die Empfänger dieser Nachricht auf den Bucket 01 (812). Das in dieser Figur veranschaulichte Szenario tritt ein, wenn ein Prozess 820 im Nodelet 0 (804) seinen Puffer (812) verändert, um ihn an einen anderen Prozess, zum Beispiel an das Nodelet 2 (808), zu senden. In diesem Fall wird, bevor die veränderten Daten in den Bucket 01 geschrieben werden, ein neuer Bucket (z.B. 814) mit einer Kopie der Daten des Bucket 01 erzeugt, um die Nachricht an Nodelet 1 (806) und Nodelet 3 (810) zu bewahren. Der neue Bucket (z.B. 814) enthält die Nachricht, welche sich im Bucket 01 (812) befand, bevor die Nachricht in diesem Bucket verändert wird. In einer Ausführungsform stellt die Hardwaresteuerlogik eine Kopie vom Bucket 01 (812) in das neue Bucket (z.B. 814) und ändert sie die Zeiger, so dass das Nodelet 1 (806) und das Nodelet 3 (810) auf den neuen Bucket (z.B. 814) zeigen. In einer weiteren Ausführungsform können neue Daten (veränderte Daten) stattdessen in den Bucket 02 geschrieben werden und kann der Bucket 01 mit den ursprünglichen Daten unangetastet gelassen werden, in welchem Fall die Zeiger des Nodelet 1 806 und des Nodelet 3 810 weiter auf Bucket 01 812 zeigen gelassen würden; und das Nodelet 2 808 würde stattdessen auf Bucket 02 814 zeigen, um die veränderte Nachricht zu empfangen.
  • 9 veranschaulicht ein Beispiel eines Nachrichten-Bucket, in welchem eine Mehr-Nodelet-Bucket-Ausführung bereitgestellt ist, um eine Nachricht an mehrere Nodelets zu übermitteln. Ein Bucket 900 weist eine Arbeitsspeicheranordnung 910, Zugriffsbits 912, ein Statusregister 902 und eine Steuerlogik 914 auf. Auf die Arbeitsspeicheranordnung 910 kann von mehreren Nodelets 904, 906, 908 aus zugegriffen werden, und sie enthält eine Anzahl von Sätzen für jeden Eintrag der Arbeitsspeicheranordnung in den Buckets. Jede Reihe der Arbeitsspeicheranordnung in einem Bucket hat parallel L Sätze von Wörtern, wobei auf jede Adresse L Wörter (w0, w1, ... wl-1) abgebildet sind. Auf jede Adresse in der Hauptspeicherkapazität innerhalb des Bucket sind somit L Wörter abgebildet. In einer Ausführungsform ist die Anzahl von Wörtern L größer als oder gleich 2, aber kleiner als die oder gleich der Anzahl von Nodelets, welche darauf zugreifen können. Jedem Arbeitsspeicher-Anordnungselement sind M Zugriffsbits 912 zugewiesen, wobei M die Anzahl von Nodelets ist, welche gleichzeitig auf diesen Bucket zugreifen und ihn in ihre Adresse abbilden können. Das m-te Bit für ein beliebiges Wort „w tiefgestellt k“ legt das Besitzrecht des m-ten Nodelet an diesem Wort fest. Anfänglich ist das Besitzrecht am Wörter w0 enthaltenden ersten Satz 0 dem Sende- und dem Empfangs-Nodelet zugewiesen. Wenn das Sende- oder Empfangs-Nodelet versucht, 0 in diesen Satz zu schreiben, und der Bucket im Modus „gemeinsame Nutzung“ ist, wird ein Konflikt erkannt und wird das neue Wort in ein anderes Wort, z.B. das Wort w1, geschrieben. Die Zugriffsbits für die Wörter w0 und w1 werden verändert, um das neue Besitzrecht zu beschreiben. In diesem Beispiel werden die Zugriffsbits für das Wort w1 vor dem Versuch, in diesen Puffer zu schreiben, auf diejenigen der Zugriffsbits für das Wort w0 gesetzt. Die Zugriffsbits für w0 würden so gesetzt, dass sie die Empfänger des neu geschriebenen Puffers (w0) einschließen. Wenn das Sende-Nodelet diesen Puffer (w0) an das dritte oder vierte Nodelet sendet, werden für jedes Wort, welches der Absender besitzt, mehr Besitzrecht-Bits gesetzt. Es kann bis zu L verschiedene Versionen des Puffers geben, wobei das Besitzrecht durch Zugriffsbits festgelegt wird und die sich beteiligenden Nodelets und der Bucket-Modus im SC-Register festgelegt werden.
  • Die Buckets der vorliegenden Offenbarung können auch auf andere Programmiermodelle verallgemeinert werden.
  • Zum Beispiel erstellt ein Universal-Programmzähler (UPC (universal program counter)) eine gemeinsam genutzte Arbeitsspeicheranordnung, indem er Aufrufe wie upc_all-alloc, upc_global_alloc verwendet. Auf diese können alle Threads zugreifen. In einem weiteren Aspekt hat MPI-Fern-Arbeitsspeicherzugriff (RMA (Remote Memory Access)) eine Art von Arbeitsspeicherfenstern, wobei jeder Prozess allen Prozessen eine bestimmte Arbeitsspeichergröße bereitstellt, z.B. MPI_WIN_CREATE. Wenn diese Prozesse oder Threads sich innerhalb eines Knotens befinden, können die Buckets verwendet werden, um dieses Fenster oder diese Anordnungen einander bereitzustellen. Die Buckets stellen den erforderlichen „Kohärenzbereich“ für Zugriffe auf diese Anordnungen oder Arbeitsspeicherfenster bereit. Diese Modelle haben verschiedene Arbeitsspeicherkonsistenz-Semantiken, zum Beispiel schreibt der UPC vor, dass Schreibvorgänge entweder gelockert oder strikt sein müssen. Der RMA hat außerdem das Konzept von lokalem „im Verhältnis zu“ entfernt liegendem Speicherfenster, welche ausdrücklich synchronisiert werden müssen, damit der Arbeitsspeicher konsistent ist. Die Bucket-Logik der vorliegenden Offenbarung kann in einer Ausführungsform erweitert sein, um diese programmiermodellbezogenen Semantik- und Konsistenzmodelle einzuschließen.
  • Wie der Fachmann erkennen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogramm-Produkt verkörpert sein. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständig auf Hardware beruhenden Ausführungsform, einer vollständig auf Software beruhenden Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Software- und Hardware-Aspekte, die hierin alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können, kombinierenden Ausführungsform annehmen. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogramm-Produkts annehmen, das in einem oder mehreren computerlesbaren Medien, auf denen computerlesbarer Programmcode enthalten ist, verkörpert ist.
  • Jede beliebige Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Zu einem computerlesbaren Speichermedium können zum Beispiel, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine elektronische, magnetische, optische, elektromagnetische, Infrarot- oder Halbleiter-Vorrichtung oder -Einheit oder irgendeine geeignete Kombination der Vorerwähnten gehören. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM, Random Access Memory), ein Festwertspeicher (ROM, Read-Only Memory), ein löschbarer programmierbarer Festwertspeicher (EPROM, Erasable Programmable Read-Only Memory, oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), eine Einheit zur optischen Speicherung, eine Einheit zur magnetischen Speicherung oder irgendeine geeignete Kombination der Vorerwähnten. im Kontext dieses Dokuments kann ein computerlesbares Speichermedium irgendein materielles Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit ein bzw. einem Befehlsausführungssystem, eine bzw. einer Befehlsausführungsvorrichtung oder eine bzw. einer Befehlsausführungseinheit enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal zum Beispiel im Basisband oder als Teil einer Trägerwelle mit darin verkörpertem computerlesbarem Programmcode enthalten. Ein solches verbreitetes Signal kann jede beliebige aus einer Vielfalt von Formen annehmen, darunter elektromagnetische, optische oder irgendeine geeignete Kombination daraus, ohne darauf beschränkt zu sein. Ein computerlesbares Signalmedium kann jedes beliebige computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium enthaltener Programmcode kann mittels irgendeines geeigneten Mediums, darunter drahtlos, drahtgebunden, Lichtwellenleiter, HF usw., ohne darauf beschränkt zu sein, oder irgendeiner geeigneten Kombination der Vorerwähnten übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, zum Beispiel einer Hardware-Beschreibungssprache (HDL (Hardware Description Language)), einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozedurorientierten Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen, einer Scriptsprache wie Perl, VBS oder ähnlichen Sprachen und/oder funktionalen Sprachen wie Lisp und ML und logikorientierten Sprachen wie Prolog geschrieben sein, soweit anwendbar. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letzteren Szenario kann der entfernt angeordnete Computer über jede Art von Netzwerk, darunter ein lokales Netz (LAN, Local Area Network) oder ein weiträumiges Netz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder kann die Verbindung zu einem externen Computer hergestellt sein (zum Beispiel mittels eines Internet-Diensteanbieters über das Internet).
  • Aspekte der vorliegenden Erfindung werden unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogramm-Produkten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich von selbst, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu produzieren, so dass die Befehle, welche über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Realisierung der im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Vorgänge schaffen.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die im computerlesbaren Medium gespeicherten Befehle ein Erzeugnis produzieren, das Befehle enthält, welche die bzw. den im Block oder in den Blöcken von Ablaufplänen und/oder Blockschaubildern angegebene(n) Funktion/Vorgang ausführen.
  • Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder den anderen Einheiten ausgeführt werden, um einen computer-realisierten Prozess zu produzieren, so dass die Befehle, welche auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Ausführen der im Block oder in den Blöcken von Ablaufplänen und/oder Blockschaubildern angegebenen Funktionen/Vorgänge schaffen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen Architektur, Funktionalität und Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogramm-Produkten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Codemodul, einen Codeabschnitt oder einen Codeteil darstellen, welches bzw. welcher einen oder mehrere ausführbare Befehle zum Realisieren der angegebenen logischen Verknüpfung(en) enthält. Es sollte auch bemerkt werden, dass bei manchen alternativen Ausführungen die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder können die Blöcke manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach erforderlicher Funktionalität. Es wird auch bemerkt werden, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch spezielle, auf Hardware beruhende Systeme, welche die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezial-Hardware und Computerbefehlen realisiert werden können.
  • Das Computerprogramm-Produkt kann alle entsprechenden Merkmale, welche die Ausführung der hierin beschriebenen Methodik ermöglichen und welche - wenn in ein Computersystem geladen - fähig sind, die Verfahren auszuführen, aufweisen. Computerprogramm, Softwareprogramm, Programm oder Software bedeutet im vorliegenden Kontext einen beliebigen Ausdruck, in einer beliebigen Sprache, einem beliebigen Code oder einer beliebigen Schreibweise, eines Satzes von Anweisungen, welcher dazu bestimmt ist, ein eine Informationsverarbeitungsfähigkeit aufweisendes System zu veranlassen, eine bestimmte Funktion entweder direkt oder nach Durchführung eines oder beider der folgenden Punkte durchzuführen: (a) Umwandlung in eine andere Sprache, einen anderen Code oder eine andere Schreibweise; und/oder (b) Reproduktion in einer anderen materiellen Form.
  • Die hierin verwendete Terminologie dient nur dem Zweck, bestimmte Ausführungsformen zu beschreiben, und soll die Erfindung nicht einschränken. Wie hierin verwendet, sollen die Singularformen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen einschließen, es sei denn, der Kontext steht dem eindeutig entgegen. Ferner versteht es sich von selbst, dass die Ausdrücke „aufweist“ und/oder „aufweisend“, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein von erwähnten Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten bedeuten, nicht aber das Vorhandensein oder die Hinzufügung von einem/einer oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die zugehörigen Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder „Step-plus-Function“-Elemente, sofern vorhanden, in den nachfolgenden Ansprüchen sollen jede Struktur, jedes Material oder jeden Vorgang zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen einschließen, wie es konkret beansprucht wird. Die Beschreibung der vorliegenden Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung gegeben, aber sie soll nicht erschöpfend oder auf die Erfindung in der beschriebenen Form beschränkt sein. Dem Fachmann wird einleuchten, dass zahlreiche Änderungen und Abwandlungen möglich sind, ohne von Geist und Umfang der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und um andere Fachleute in die Lage zu versetzen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Änderungen, wie sie für die betrachtete besondere Verwendung geeignet sind, zu verstehen.
  • Verschiedene Aspekte der vorliegenden Offenbarung können als ein Programm, eine Software oder Computeranweisungen verkörpert sein, das/die in einem durch einen Computer oder eine Maschine verwendbaren oder lesbaren Medium verkörpert ist/sind, welches/welche den Computer oder die Maschine veranlasst/veranlassen, bei Ausführung auf dem Computer, dem Prozessor und/oder der Maschine die Schritte des Verfahrens durchzuführen. Außerdem wird eine durch eine Maschine lesbare Programmspeichereinheit bereitgestellt, welche ein Programm aus durch die Maschine ausführbaren Anweisungen zur Durchführung verschiedener in der vorliegenden Offenbarung beschriebener Funktionalitäten und Verfahren materiell verkörpert.
  • Das System und das Verfahren der vorliegenden Offenbarung können auf einem Allzweck- oder einem Spezial-Computersystem ausgeführt und betrieben werden. Die Begriffe „Computersystem“ und „Computernetz“, wie sie in der vorliegenden Anmeldung verwendet sein können, können eine Vielfalt von Kombinationen feststehender und/oder tragbarer Computerhardware, -software, Peripheriegeräte und Speichereinheiten einschließen. Das Computersystem kann eine Vielzahl von einzelnen Komponenten enthalten, die vernetzt oder anderweitig verbunden sind, um gemeinschaftlich zu arbeiten, oder kann eine oder mehrere eigenständige Komponenten enthalten. Die Hardware- und Softwarekomponenten des Computersystems der vorliegenden Anmeldung können feste und tragbare Einheiten wie Desktop-Computer, Laptop-Computer und/oder Server enthalten und können in diesen enthalten sein. Ein Modul kann eine Komponente einer Einheit, einer Software, eines Programms oder Systems sein, die irgendeine „Funktionalität“ ausführt, welche als Software, Hardware, Firmware oder elektronische Schaltung usw. verkörpert sein kann.
  • Die oben beschriebenen Ausführungsformen sind der Veranschaulichung dienende Beispiele, wobei dies nicht dahingehend aufzufassen ist, dass die vorliegende Erfindung auf diese bestimmten Ausführungsformen beschränkt ist. Somit können verschiedene Änderungen and Abwandlungen durch einen Fachmann vorgenommen werden, ohne vom Geist oder Umfang der Erfindung, wie in den beigefügten Ansprüchen definiert, abzuweichen.

Claims (4)

  1. Verfahren für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens, aufweisend: das Reservieren eines Bucket, welches eine Arbeitsspeicheranordnung und eine Hardwaresteuerlogik aufweist, welche die Nachrichtenübermittlungsschnittstellen-Semantik unterstützt, um Daten zwischen einem ersten Prozess in einem ersten Arbeitsspeicherbereich und einem zweiten Prozess in einem zweiten Arbeitsspeicherbereich zu übermitteln, wobei der erste Arbeitsspeicherbereich und der zweite Arbeitsspeicherbereich nicht gemeinsam genutzt werden und wobei der Bucket nicht Teil des ersten Arbeitsspeicherbereichs oder des zweiten Arbeitsspeicherbereichs ist; das Setzen einer Vielzahl von Steuerbits, um exklusiven Lese- und Schreibzugriff nur für den ersten Prozess anzuzeigen; das Empfangen eines durch den ersten Prozess aufgerufenen Sendeaufrufs; das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den ersten Prozess anzuzeigen, und das Geben eines Hardwaresignals für den zweiten Prozess; das Empfangen eines durch den zweiten Prozess aufgerufenen Empfangsaufrufs; das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen; als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom ersten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen; und als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom zweiten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den ersten Prozess anzuzeigen.
  2. Verfahren nach Anspruch 1, außerdem aufweisend: als Reaktion auf das Feststellen, dass die Abbildungen aller Prozesse auf den Bucket aufgehoben wurden, das Freigeben des Bucket.
  3. Verfahren nach Anspruch 1, außerdem aufweisend: das Empfangen einer Arbeitsspeicherzugriffsanforderung vom ersten Prozess an den Bucket, das Prüfen der zum ersten Prozess zugehörigen Steuerbits; als Reaktion auf das Feststellen, dass die Steuerbits anzeigen, dass der erste Prozess Zugriffsrechte hat, das Ermitteln, ob die Arbeitsspeicherzugriffsanforderung eine Schreibanforderung ist; als Reaktion auf das Feststellen, dass die Arbeitsspeicherzugriffsanforderung eine Schreibanforderung ist, das Ermitteln, ob der erste Prozess exklusiven Lese- und Schreibzugriff hat; als Reaktion auf das Feststellen, dass der erste Prozess exklusiven Lese- und Schreibzugriff hat, das Schreiben in einen ersten Wortsatz der Arbeitsspeicheranordnung; als Reaktion auf das Feststellen, dass der erste Prozess nicht exklusiven Lese- und Schreibzugriff hat, das Schreiben in einen zweiten Wortsatz der Arbeitsspeicheranordnung und das Anzeigen der Veränderung des ersten Wortsatzes; als Reaktion auf das Feststellen, dass die Arbeitsspeicherzugriffsanforderung keine Schreibanforderung ist, das Ermitteln, ob ein verändertes Wort vorliegt, und als Reaktion auf das Feststellen, dass das veränderte Wort vorliegt, das Liefern der Daten im zweiten Wortsatz, und als Reaktion auf das Feststellen, dass das veränderte Wort nicht vorliegt, das Liefern der Daten im ersten Wortsatz.
  4. Computerlesbares Speichermedium, welches einen Code aus durch eine Maschine ausführbaren Anweisungen speichert, um ein Verfahren für Nachrichtenaustausch-Datenübertragung zwischen Nodelets innerhalb eines Plättchens durchzuführen, aufweisend: das Reservieren eines Bucket, welches eine Arbeitsspeicheranordnung und eine Hardwaresteuerlogik aufweist, welche die Nachrichtenübermittlungsschnittstellen-Semantik unterstützt, um Daten zwischen einem ersten Prozess in einem ersten Arbeitsspeicherbereich und einem zweiten Prozess in einem zweiten Arbeitsspeicherbereich zu übermitteln, wobei der erste Arbeitsspeicherbereich und der zweite Arbeitsspeicherbereich nicht gemeinsam genutzt werden und wobei der Bucket nicht Teil des ersten Arbeitsspeicherbereichs oder des zweiten Arbeitsspeicherbereichs ist; das Setzen einer Vielzahl von Steuerbits, um exklusiven Lese- und Schreibzugriff nur für den ersten Prozess anzuzeigen; das Empfangen eines durch den ersten Prozess aufgerufenen Sendeaufrufs; das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den ersten Prozess anzuzeigen, und das Geben eines Hardwaresignals für den zweiten Prozess; das Empfangen eines durch den zweiten Prozess aufgerufenen Empfangsaufrufs; das Setzen der Steuerbits, um gemeinsamen Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen; als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom ersten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den zweiten Prozess anzuzeigen; und als Reaktion auf das Empfangen eines Abbildungsaufhebungsaufrufs vom zweiten Prozess, das Setzen der Steuerbits, um exklusiven Lese- und Schreibzugriff für den ersten Prozess anzuzeigen.
DE102013209643.7A 2012-05-31 2013-05-24 Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens Active DE102013209643B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/485,074 US8943516B2 (en) 2012-05-31 2012-05-31 Mechanism for optimized intra-die inter-nodelet messaging communication
US13/485,074 2012-05-31

Publications (2)

Publication Number Publication Date
DE102013209643A1 DE102013209643A1 (de) 2013-12-05
DE102013209643B4 true DE102013209643B4 (de) 2020-12-17

Family

ID=49579706

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013209643.7A Active DE102013209643B4 (de) 2012-05-31 2013-05-24 Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens

Country Status (3)

Country Link
US (1) US8943516B2 (de)
CN (1) CN103455371B (de)
DE (1) DE102013209643B4 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452540B2 (en) * 2017-10-20 2019-10-22 International Business Machines Corporation Memory-mapped interface for message passing computing systems
WO2020005595A1 (en) * 2018-06-28 2020-01-02 Microsoft Technology Licensing, Llc Sending messages between threads
US10459778B1 (en) 2018-07-16 2019-10-29 Microsoft Technology Licensing, Llc Sending messages between threads
US11966780B2 (en) 2019-07-29 2024-04-23 Marvell Asia Pte, Ltd. Object-oriented memory
GB2619692A (en) * 2021-03-01 2023-12-20 Nvidia Corp Interface for multiple processors
US11928349B2 (en) 2021-04-23 2024-03-12 Qualcomm Incorporated Access control configurations for shared memory
US11630711B2 (en) * 2021-04-23 2023-04-18 Qualcomm Incorporated Access control configurations for inter-processor communications
CN116225308B (zh) * 2022-11-21 2023-12-08 中科三清科技有限公司 数据读写方法、装置、存储介质与芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
WO2009134217A1 (en) * 2008-04-28 2009-11-05 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

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US7640549B2 (en) * 2002-07-22 2009-12-29 Agilent Technologies, Inc. System and method for efficiently exchanging data among processes
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US8131941B2 (en) * 2007-09-21 2012-03-06 Mips Technologies, Inc. Support for multiple coherence domains
WO2009123492A1 (en) * 2008-03-31 2009-10-08 Intel Corporation Optimizing memory copy routine selection for message passing in a multicore architecture
US8196147B1 (en) * 2008-10-31 2012-06-05 Netapp, Inc. Multiple-processor core optimization for producer-consumer communication
CN102253657B (zh) * 2010-05-19 2013-07-10 沈阳高精数控技术有限公司 一种数控系统网络化体系结构的实现方法
US8937622B2 (en) * 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US8490111B2 (en) * 2011-04-16 2013-07-16 Throughputer, Inc. Efficient network and memory architecture for multi-core data processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
WO2009134217A1 (en) * 2008-04-28 2009-11-05 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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HOARE, Charles Antony Richard: Monitors: An operating system structuring concept. Communications of the ACM, 1974, 17. Jg., Nr. 10, S. 549-557 *
YU, Zhiyi [et al.]: An 800MHz 320mW 16-core processor with message-passing and shared-memory inter-core communication mechanisms. In: Solid-State Circuits Conference Digest of Technical Papers (ISSCC), 2012 IEEE International, Konferenz vom 19. bis 23. Feb. 2012. IEEE, 2012. S. 64-66 *

Also Published As

Publication number Publication date
US8943516B2 (en) 2015-01-27
US20130326180A1 (en) 2013-12-05
DE102013209643A1 (de) 2013-12-05
CN103455371B (zh) 2017-03-01
CN103455371A (zh) 2013-12-18

Similar Documents

Publication Publication Date Title
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102013022712B4 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE102018006756A1 (de) Beschleuniger-Fabric
DE112011101469T5 (de) Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112015000430T5 (de) Einheitliche Speichersysteme und -verfahren
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102011076895A1 (de) Cachekohärenzprotokoll für persistente Speicher
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE112016004367T5 (de) Technologien für automatische Prozessorkern-Zuordnungsverwaltung und -Kommunikation unterVerwendung direkter Datenplatzierung in private Zwischenspeicher
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung
DE112018007637T5 (de) Fehlermeldung in Verbindungsverlängerungsvorrichtungen

Legal Events

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