DE112011100098B4 - Effiziente Mehrkernverarbeitung von Ereignissen - Google Patents

Effiziente Mehrkernverarbeitung von Ereignissen Download PDF

Info

Publication number
DE112011100098B4
DE112011100098B4 DE112011100098.7T DE112011100098T DE112011100098B4 DE 112011100098 B4 DE112011100098 B4 DE 112011100098B4 DE 112011100098 T DE112011100098 T DE 112011100098T DE 112011100098 B4 DE112011100098 B4 DE 112011100098B4
Authority
DE
Germany
Prior art keywords
event
virtual machine
initiated
hypervisor
core
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
DE112011100098.7T
Other languages
English (en)
Other versions
DE112011100098T5 (de
Inventor
Abel Gordon
Shmuel Ben Yehuda
Ben-Ami Yassour
Orit Luba Wasserman
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 DE112011100098T5 publication Critical patent/DE112011100098T5/de
Application granted granted Critical
Publication of DE112011100098B4 publication Critical patent/DE112011100098B4/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/542Event management; Broadcasting; Multicasting; Notifications

Abstract

Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung, wobei Mehrkern-Verarbeitungsumgebung aus einer Hardware-Umgebung (1110) und einer Software-Umgebung (1120) besteht, wobei die Hardware-Umgebung einen oder mehrere Prozessoren (1101), einen oder mehrere lokalen Speicher (1102), einen oder mehrere Cache-Speicher (1104), eine oder mehrere Benutzerschnittstellen (1105), ein oder mehrere Speichermedia (1106), eine oder mehrere Datenaustausch-Schnittstelleneinheiten (1108) umfasst, wobei die Software-Umgebung eine System-Software (1121) umfasst, wobei eine virtuelle Maschine auf einem ersten Kern läuft, wobei ein Hypervisor auf einem zweiten Kern läuft, wobei das Verfahren Folgendes umfasst:
Einleiten eines Ereignisses durch die virtuelle Maschine (S310) ;
Platzieren des durch die virtuelle Maschine eingeleiteten Ereignisses in einer Warteschlange (S340) als Reaktion auf das Feststellen, dass das durch die virtuelle Maschine eingeleitete Ereignis asynchron durch dem Hypervisor zu behandeln ist (S320), wobei der zweite Kern das durch die virtuelle Maschine eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Hypervisor auslöst, um das durch die virtuelle Maschine eingeleitete Ereignis zu behandeln (S350), während die virtuelle Maschine nicht unterbrochen wird, um auf das Behandeln des durch die virtuelle Maschine eingeleitete Ereignisses zu warten; und
als Reaktion auf das Feststellen, dass das durch die virtuelle Maschine eingeleitete Ereignis synchron durch den Hypervisor zu behandeln ist (S320), Aktivieren des zweiten Kerns zum Behandeln des Ereignisses durch den Hypervisor (S340), ohne das durch die virtuelle Maschine eingeleitete Ereignis in der Warteschlange zu platzieren, während die virtuelle Maschine unterbrochen wird, bis das durch die virtuelle Maschine eingeleitete Ereignis durch den Hypervisor behandelt wird (S350);
Einleiten eines zweiten Ereignisses durch den Hypervisor (S210); undPlatzieren des durch den Hypervisor eingeleiteten zweiten Ereignisses in einer zweiten Warteschlange (S230) als Reaktion auf das Feststellen, dass das durch den Hypervisor eingeleitete zweite Ereignis durch die virtuelle Maschine zu behandeln ist (S220), wobei der erste Kern das durch den Hypervisor eingeleitete zweite Ereignis aus der zweiten Warteschlange entfernt und eine zweite Ereignisbehandlungsroutine für die virtuelle Maschine auslöst, um das durch den Hypervisor eingeleitete Ereignis zu behandeln (S240) .

Description

  • TECHNISCHES ANWENDUNGSGEBIET
  • Der dargelegte Gegenstand betrifft allgemein die Mehrkernverarbeitung und insbesondere ein System und Verfahren zum effizienten Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung.
  • HINTERGRUND
  • In Mehrkern-Verarbeitungsumgebungen können virtualisierte Dienste bereitgestellt werden, wobei eine auf einem Kern laufende virtuelle Maschine von einem auf einem anderen Kern laufenden Hypervisor per Hosting bereitgestellt wird. In einer derartigen Situation wird der Betrieb der virtuellen Maschine üblicherweise unterbrochen, wenn ein bestimmtes Ereignis einen Dialog mit dem Hypervisor erfordert (z.B., wenn der Hypervisor versucht, in den Betrieb der virtuellen Maschine eine Unterbrechung einzubringen, oder wenn die virtuelle Maschine eine privilegierte Anweisung durchführt, die der Hypervisor emulieren muss).
  • Die oben genannte Unterbrechung verhindert, dass der Hypervisor Zeitschlitze mit Leerlaufverarbeitung über verschiedene Kerne hinweg ausnutzt, verlangsamt den Betrieb der virtuellen Maschine, verursacht zusätzliche Kontextwechsel (context switches) zwischen dem Hypervisor und der virtuellen Maschine und erzeugt eine erhebliche Latenzzeit zwischen dem Zeitpunkt des Erstellens eines Ereignisses und dem Einbringen dessen in die virtuelle Maschine.
  • Die Patentanmeldung US 2007 / 0 06 7775 A1 offenbart ein Verfahren zur Kommunikation zwischen einem ersten Computerprogramm und einem zweiten Computerprogramm, die einen gemeinsamen Speicher haben. Das erste Computerprogramm hat einen ersten Aufgabenzuteiler für eine erste Aufgabewarteschlange. Das zweite Computerprogramm hat einen zweiten Aufgabenzuteiler für eine zweite Aufgabewarteschlange. Ohne eine Verarbeitungsunterbrechung auszulösen, wird ein Ereignis oder Daten von dem ersten Computerprogramm an das zweite Computerprogramm in den gemeinsamen Speicher gespeichert und die zweite Aufgabewarteschlange mit einer auf ein Ereignis oder Daten hinweisenden Aufgabe aktualisiert. Der Aktualisierungsschritt anschließend wird festgestellt ob das zweite Computerprogramm beschäftigt ist. Wenn ja, wird das zweite Computerprogramm in Bezug auf das Ereignis oder die Daten unterbrochen. Wenn das zweite Computerprogramm darauffolgend unbeschäftigt wird, kriegt und bearbeitet das zweite Computerprogramm ohne Unterbrechung eine Aufgabe zum Empfang des Ereignisses oder der Daten. Wenn das zweite Computerprogramm nicht beschäftigt ist, wird das zweite Computerprogramm unterbrochen um das Ereignis oder die Daten in eigenem Aufgabenzuteiler zu prozessieren.
  • Die Patentanmeldung WO 2009/134217 A1 offenbart effektive und leicht nutzbare Lösungen für Interkern- und Interprozessorkommunikation und Interkern- und Interprozessorsignalübertragung innenhalb Multikernprozessoren und bestimmter Multiprozessorsysteme. Gemäß einer Ausführung sind lokale fortschrittliche programmierbare Verarbeitungsunterbrechungskontroller innenhalb, oder assoziierte mit, Kernen eines Multikernprozessors und/oder Prozessoren eines Multiprozessorsystems so aufbessert, dass die lokale fortschrittliche programmierbare Verarbeitungsunterbrechungskontroller automatisch konfiguriert werden können, um automatisch Verarbeitungsunterbrechungen zu generieren, wenn WRITE Anweisungen an bestimmte Speicherbereiche adressiert sind.
  • ZUSAMMENFASSUNG
  • Entsprechend stellt die vorliegende Erfindung in einem ersten Aspekt ein Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung bereit, wobei das Verfahren Folgendes umfasst: das Einleiten eines Ereignisses durch einen Gast auf einem ersten Kern; und das Platzieren des durch einen Gast eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis asynchron durch einen auf einem zweiten Kern laufenden Host zu behandeln ist; und als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis synchron durch den auf dem zweiten Kern laufenden Host zu behandeln ist, das Aktivieren eines zweiten Kerns zum Behandeln des Ereignisses durch einen auf dem zweiten Kern laufenden Host, ohne das durch einen Gast eingeleitete Ereignis in der Warteschlange zu platzieren, während das Gastereignis unterbrochen wird, bis das durch einen Gast eingeleitete Ereignis durch den Host behandelt wird, wobei der zweite Kern das durch einen Gast eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Host auslöst, um das durch einen Host eingeleitete Ereignis zu behandeln.
  • Vorzugsweise wird das durch einen Gast eingeleitete Ereignis entweder als asynchron oder als synchron zu behandelndes Ereignis eingestuft. Vorzugsweise wird eine Datenstruktur verwendet, um ein durch einen Gast eingeleitetes Ereignis einer synchronen bzw. asynchronen Kategorie zuzuweisen, so dass der erste Kern feststellen kann, ob das durch einen Gast eingeleitete Ereignis in der Warteschlange zu platzieren ist.
  • In einem zweiten Aspekt wird ein System zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung bereitgestellt, wobei das System Folgendes umfasst: eine Logikeinheit zum Einleiten eines Ereignisses durch einen Gast auf einem ersten Kern; eine Logikeinheit zum Platzieren des durch einen Gast eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis asynchron durch einen auf einem zweiten Kern laufenden Host zu behandeln ist; und eine Logikeinheit zum Aktivieren eines zweiten Kerns zum Behandeln des Ereignisses durch einen auf dem zweiten Kern laufenden Host als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis synchron durch den auf dem zweiten Kern laufenden Host zu behandeln ist, ohne das durch einen Gast eingeleitete Ereignis in der Warteschlange zu platzieren, während das Gastereignis unterbrochen wird, bis das durch einen Gast eingeleitete Ereignis durch den Host behandelt wird, wobei der zweite Kern das durch einen Gast eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Host auslöst, um das durch einen Host eingeleitete Ereignis zu behandeln.
  • Vorzugsweise wird das durch einen Gast eingeleitete Ereignis entweder als asynchron oder als synchron zu behandelndes Ereignis eingestuft. Vorzugsweise wird eine Datenstruktur verwendet, um ein durch einen Gast eingeleitetes Ereignis einer synchronen bzw. asynchronen Kategorie zuzuweisen, so dass der erste Kern feststellen kann, ob das durch einen Gast eingeleitete Ereignis in der Warteschlange zu platzieren ist.
  • In einem dritten Aspekt wird ein Computerprogrammprodukt bereitgestellt, das physisch auf einem durch einen Computer lesbaren Speicher gespeichert ist, und das, wenn es in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem dazu veranlasst, sämtliche Schritte des Verfahrens gemäß dem ersten Aspekt durchzuführen.
  • Somit wird ein Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung ausgeführt, wobei das Verfahren Folgendes umfasst: das Behandeln eines Ereignisses durch eine auf einem zweiten Kern laufende zweite Anwendung als Reaktion auf das Feststellen, dass das Ereignis durch eine auf einem ersten Kern laufende erste Anwendung eingeleitet wird; und das Ausführen einer dritten Anwendung auf dem ersten Kern, während die erste Anwendung darauf wartet, dass das Ereignis durch die zweite Anwendung behandelt wird. Vorzugsweise handelt es sich bei der ersten Anwendung um eine Host-Anwendung. Vorzugsweise handelt es sich bei der ersten Anwendung um eine Gastanwendung. Vorzugsweise handelt es sich bei der zweiten Anwendung um eine Host-Anwendung. Vorzugsweise handelt es sich bei der zweiten Anwendung um eine Gastanwendung. Vorzugsweise wird das durch die erste Anwendung eingeleitete Ereignis in einer Warteschlange platziert.
  • Vorzugsweise entfernt der zweite Kern das durch die erste Anwendung eingeleitete Ereignis aus der Warteschlange. Vorzugsweise löst der zweite Kern eine Ereignisbehandlungsroutine für die zweite Anwendung aus, um das durch die erste Anwendung in der Warteschlange platzierte Ereignis zu behandeln. Vorzugsweise ist der erste Kern identisch zu dem zweiten Kern. Ferner wird ein Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung ausgeführt, wobei das Verfahren Folgendes umfasst: das Einleiten eines Ereignisses durch einen Host auf einem ersten Kern; und das Platzieren des durch einen Host eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch einen Host eingeleitete Ereignis durch einen auf einem zweiten Kern laufenden Gast zu behandeln ist, wobei der zweite Kern das durch einen Host eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Gast auslöst, um das durch einen Host eingeleitete Ereignis zu behandeln. Vorzugsweise behandelt der Gast das durch einen Host eingeleitete Ereignis, wenn sich der Gast in einer Leerlaufbetriebsart befindet. Vorzugsweise läuft der Host weiter auf dem ersten Kern, während das durch einen Host eingeleitete Ereignis in der Warteschlange platziert wird.
  • Gemäß einer Ausführungsform wird ein Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung bereitgestellt. Das Verfahren umfasst das Behandeln eines Ereignisses durch eine auf einem zweiten Kern laufende zweite Anwendung als Reaktion auf das Feststellen, dass das Ereignis durch eine auf einem ersten Kern laufende erste Anwendung eingeleitet wird, und das Ausführen einer dritten Anwendung auf dem ersten Kern, während die erste Anwendung darauf wartet, dass das Ereignis durch die zweite Anwendung behandelt wird.
  • In einer Ausführungsform wird ein auf einem Computer ausgeführtes Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung bereitgestellt. Das Verfahren umfasst das Einleiten eines Ereignisses durch einen Host auf einem ersten Kern; und das Platzieren des durch einen Host eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch einen Host eingeleitete Ereignis durch einen auf einem zweiten Kern laufenden Gast zu behandeln ist, wobei der zweite Kern das durch einen Host eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Gast auslöst, um das durch einen Host eingeleitete Ereignis zu behandeln.
  • In einer anderen Ausführungsform wird ein auf einem Computer ausgeführtes Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung bereitgestellt. Das Verfahren umfasst das Einleiten eines Ereignisses durch einen Gast auf einem ersten Kern; und das Platzieren des durch einen Gast eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis asynchron durch einen auf einem zweiten Kern laufenden Host zu behandeln ist; und als Reaktion auf das Feststellen, dass das durch einen Gast eingeleitete Ereignis synchron durch den auf dem zweiten Kern laufenden Host zu behandeln ist, das Aktivieren eines zweiten Kerns zum Behandeln des Ereignisses durch einen auf dem zweiten Kern laufenden Host, ohne das durch einen Gast eingeleitete Ereignis in der Warteschlange zu platzieren, während das Gastereignis unterbrochen wird, bis das durch einen Gast eingeleitete Ereignis durch den Host behandelt wird, wobei der zweite Kern das durch einen Gast eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Host auslöst, um das durch einen Host eingeleitete Ereignis zu behandeln.
  • Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt, das eine oder mehrere Logikeinheiten umfasst. Die eine oder mehreren Logikeinheiten sind so konfiguriert, dass sie die den oben dargelegten Verfahren zugehörige Funktionen und Arbeitsschritte durchführen. In noch einer weiteren Ausführungsform wird ein Computerprogrammprodukt bereitgestellt, das ein auf einem Computer lesbares Speichermedium umfasst, auf dem ein durch einen Computer lesbares Programm enthalten ist. Wenn das durch einen Computer lesbare Programm auf einem Computer ausgeführt wird, veranlasst es den Computer dazu, die den oben dargelegten Verfahren zugehörigen Funktionen und Arbeitsschritte durchzuführen.
  • Figurenliste
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
    • 1 eine beispielhafte Betriebsumgebung gemäß einer oder mehrerer Ausführungsformen.
    • 2 einen Ablaufplan eines Verfahrens zum effizienten Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung gemäß einer Ausführungsform.
    • 3 ein Blockschaubild eines anderen Verfahrens zum effizienten Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung gemäß einer Ausführungsform.
    • 4A und 4B Blockschaltbilder von Hardware- bzw. Softwareumgebungen, in denen die dargelegten Systeme und Verfahren gemäß einer oder mehrerer Ausführungsformen funktionieren können.
  • Eigenschaften, Elemente und Aspekte, auf die in verschiedenen Figuren durch dieselben Zahlen verwiesen wird, stellen dieselben, gleichbedeutende oder ähnliche Eigenschaften, Elemente bzw. Aspekte gemäß einer oder mehrerer Ausführungsformen dar.
  • AUSFÜHRLICHE BESCHREIBUNG VON BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
  • Nachfolgend werden zahlreiche spezifische Einzelheiten dargelegt, um eine vollständige Beschreibung verschiedener Ausführungsformen bereitzustellen. Bestimmte Ausführungsformen können ohne diese spezifischen Einzelheiten oder mit etwas abgewandelten Einzelheiten umgesetzt werden. In einigen Fällen werden bestimmte Merkmale weniger ausführlich beschrieben, um andere Aspekte nicht unklar zu machen. Der jedem der Elemente bzw. Merkmale zugehörige Ausführlichkeitsgrad ist nicht so anzusehen, als ob er die Neuartigkeit oder Bedeutung eines Merkmals im Vergleich zu anderen einschränkt.
  • Unter Bezugnahme auf 1 kann eine Mehrkernumgebung über eine Datenverarbeitungsplattform 100 unterstützt werden, um ein gleichzeitiges Verarbeiten und Ausführen von Programmcode für eine oder mehrere Software-Anwendungen zu ermöglichen. Eine Host-Anwendung 120 (z.B. ein Hypervisor) kann zum Beispiel über einen oder mehrere Kerne gleichzeitig mit einer Gast-Anwendung 130 (z.B. einer virtuellen Maschine) auf der Datenverarbeitungsplattform 100 ausgeführt werden. Der hierin verwendete Begriff „Kern“ kann sich auf eine Mikrosteuereinheit, einen Mikroprozessor oder einen anderen Verarbeitungsmechanismus beziehen, sei es Hardware oder Software oder eine Kombination daraus, die dazu verwendet werden können, Datenverarbeitungsanweisungen abzurufen und auszuführen.
  • In einer beispielhaften Mehrkernumgebung können mehrere Verarbeitungskerne (z.B. Kern H und Kern G) bereitgestellt werden, so dass zum Beispiel ein Host 120 über einen ersten Kern H ausgeführt wird und die Gäste 130 bzw. 140 auf einem zweiten Kern G ausgeführt werden. Je nach Datenverarbeitungsarchitektur und -plattform können die Verarbeitungskerne in Form von Verarbeitungsprozesssträngen, Mikrosteuereinheiten oder anderen Formen von physischen oder virtuellen Verarbeitungssystemen ohne Einschränkungen realisiert werden. Es ist auch möglich, dass der Host 120 und ein oder mehrere Gäste 130, 140 je nach Systemkonfiguration und Verfügbarkeit von Ressourcen auf demselben Kern (z.B. Kern H) ausgeführt werden können.
    In einer beispielhaften Betriebsumgebung 110 kann ein Virtualisierungsschema bzw. -protokoll eingesetzt werden, um ein Mittel zur Datenübertragung zwischen dem Host 120, dem Gast 130 und der zu Grunde liegenden Plattform 100 bereitzustellen, indem Daten (d.h. Zustandsdaten) über den Ausführungszustand des Host 120 oder des Gasts 130 gepflegt und aktualisiert werden. Je nach Ausführung können die Zustandsdaten für den Host 120 in einem Speicherbereich gespeichert werden, während die Zustandsdaten für den Gast 130 in einem anderen (nicht gezeigten) Speicherbereich gespeichert werden können. Wenn sich die entsprechenden Zustandsdaten für den Host 120 oder den Gast 130 ändern, wird festgestellt, ob eine derartige Änderung auf einem Ereignis oder einer Operation beruht, die entweder von dem Host 120 oder von dem Gast 130 eingeleitet wurden.
  • Unter Bezugnahme auf 2 kann ein Ereignis in einem Beispiel durch den auf dem Kern H laufenden Host 120 eingeleitet werden (S210). Wenn das Ereignis von dem auf dem Kern G laufenden Gast 130 zu behandeln ist (S220), wird das Host-Ereignis in eine Datenstruktur platziert, die im Folgenden als Host-Gast-Warteschlange bzw. HGW bezeichnet wird (S230), ohne auf die Freigabe des Kerns G durch den Gast 130 zu warten. Das heißt, dass der Host das Ereignis einfach in der HGW platziert, anstatt die Steuerung über Kern G zu übernehmen, um das Ereignis in den Gast einzubringen. Dieses Schema hilft auch bei der Vermeidung einer Unterbrechung des Betriebs des Gasts 130 bis das Host-Ereignis durch den Gast 130 behandelt wird. In bestimmten Ausführungsformen können durch Host-Hardware (z.B. die Datenverarbeitungsplattform 100) eingeleitete Ereignisse optional ohne Eingreifen des Software-Host 120 ebenfalls zu der HGW hinzugefügt werden.
  • Die in der HGW platzierten Ereignisse werden durch Kern G behandelt, auf dem der Gast 130 läuft (S240). Das heißt, sobald das Ereignis der HGW hinzugefügt wird, ist der ausgewählte Kern (z.B. Kern G) dafür zuständig, das Ereignis von der HGW zu entfernen und es zum Behandeln an den Gast 130 weiterzuleiten. Anders ausgedrückt, Kern G entfernt das Ereignis von der HGW und löst eine Ereignisbehandlungsroutine für den Gast 130 aus. Die Ereignisbehandlungsroutine behandelt das durch Kern G ausgelöste Ereignis, wie nachstehend ausführlicher ausgeführt wird.
  • Die HGW kann zum Beispiel in Form einer Zuerst-rein-zuerstraus- (FIFO, first in first out) Warteschlange oder jeder beliebigen anderen Art geeigneter Datenstruktur ausgeführt sein. Die in der HGW gespeicherten Ereignisse können auf der Grundlage von Prioritäten oder einer anderen logischen Reihenfolge behandelt werden. Die Reihenfolge, in der die Ereignisse behandelt werden, können, falls möglich, zum Beispiel derartig festgelegt werden, dass das Behandeln des Ereignisses durch Kern G nicht zu einer Unterbrechung der Ausführung des Gasts 130 führt. Ein durch den Host 120 eingeleitetes Ereignis kann zum Beispiel durch Kern G behandelt werden, nachdem der Gast 130 das Ausführen abgeschlossen oder einen Leerlaufzustand erreicht hat, oder wenn sich der Gast 130 in einem Zustand befindet, in dem das Unterbrechen der Ausführung des Gasts 130 als zulässig erachtet wird.
  • Unter Bezugnahme auf 3 kann ein Ereignis in einem anderen Beispiel durch den auf dem Kern G laufenden Gast 130 eingeleitet werden (S310). In einer Ausführungsform kann ermittelt werden, ob das Ereignis von Kern H ohne Unterbrechung des Betriebs des auf Kern G laufenden Gasts 130 behandelt werden kann. Das heißt, es wird ermittelt, ob das Ereignis asynchron behandelt werden kann (S320). Dies kann dadurch ermittelt werden, dass auf Einträge Bezug genommen wird, die in einer im Folgenden als Gast-Host- (GH-) Ereignistabelle bezeichneten Datenstruktur gespeichert sind. Je nach Ausführung kann die Datenstruktur in Form einer Datentabelle oder einem anderen geeigneten Datenstrukturformat umgesetzt sein, das zum Beispiel ein Mittel zum Abbilden eines Ereignisses auf einen Bezeichner (identifier) bereitstellt, der dabei hilft, eine Unterscheidung zwischen Arten von Ereignissen zu treffen, die asynchron behandelt werden können.
  • Ein bestimmtes Ereignis kann zum Beispiel durch Kern H, auf dem der Host 120 läuft, oder durch einen anderen ausgewählten Kern in einer Mehrkernumgebung behandelt werden. In einigen Ausführungsformen kann die GH-Ereignistabelle einen oder mehrere Kerne als ausgewählte Kerne zum Behandeln eines bestimmten Ereignisses anzeigen. Wenn mehr als ein Kern ausgewählt wurde, wird je nach Ausführung die Aufgabe des Behandelns des bestimmten Ereignisses dem Kern zugewiesen, der weniger Verarbeitungsaufwand aufweist, oder gemäß anderen Faktoren oder Kriterien, die zum Herbeiführen der Auswahl des richtigen Kerns im Sinne einer optimalen Effizienz verwendet werden können.
  • Wenn festgestellt wird, dass das Ereignis asynchron behandelt werden kann, wird das durch einen Gast eingeleitete Ereignis in eine Datenstruktur platziert, die nachfolgend als Gast-Host-Warteschlange bzw. GHW bezeichnet wird (S330). Wenn ein durch den Gast 130 eingeleitetes Ereignis asynchron behandelt wird, fährt der auf Kern G laufende Gast 130 ohne Unterbrechung fort. Die GHW kann zum Beispiel in Form einer FIFO-Warteschlange oder jeder beliebigen anderen Art geeigneter Datenstruktur ausgeführt sein. Die in der GHW gespeicherten Ereignisse können zu einer geeigneten Zeit auf der Grundlage von Prioritäten oder einer anderen durch Kern H oder einen anderen ausgewählten Kern festgelegten Reihenfolge behandelt werden.
  • Je nach Ausführung und Art des in der GHW platzierten Ereignisses kann die Ausführung des Host 120 unterbrochen werden oder nicht. Ob die Ausführung des Host 120 unterbrochen wird, hängt von der Art des Ereignisses und von den für die Art des in der GHW platzierten Ereignisses in der GH-Ereignistabelle enthaltenen Anweisungen ab. Somit wird zum Beispiel, wenn die in der GH-Ereignistabelle enthaltenen Informationen (z.B. Anzeigen, Bezeichner, Merker, etc.) bestimmen, dass das der GHW hinzugefügte Ereignis nicht asynchron zu behandeln ist, der Kern H oder ein anderer zum Behandeln dieses Ereignisses ausgewählter Kern aktiviert, um dieses Ereignis zu behandeln, und der in Kern G laufende Gast 130 wird so lange unterbrochen, bis das durch einen Gast eingeleitete Ereignis durch den Host 120 auf einem ausgewählten Kern (z.B. Kern H oder Kern G) behandelt wird (S340). Als solches wird ein ausgewählter Kern (z.B. Kern H) durch den Host 120 dazu verwendet, das durch einen Gast eingeleitete Ereignis zu behandeln (S350).
  • Sobald ein in der HGW oder der GHW platziertes Ereignis behandelt wird, wird dieses Ereignis aus der entsprechenden Datenstruktur bzw. Warteschlange entfernt. Zusätzlich können durch den Host 120 zwei Mechanismen verwendet werden, um ein durch einen Gast eingeleitetes Ereignis zu behandeln. In einer ersten Ausführung entnimmt der Host 120 ein Ereignis aus der GHW und behandelt das Ereignis zu geeigneter Zeit (z.B. während einer Leerlaufperiode). In einer zweiten Ausführung aktiviert ein zum Behandeln des Ereignisses ausgewählter Kern den Host 120 und ruft die entsprechende Ereignisbehandlungsroutine für den Host 120 auf. Die Ereignisbehandlungsroutine unterbricht dann den Host 120 so lange bei der Ausführung einer beliebigen Aufgabe, die der Host 120 durchgeführt hat, bis das durch einen Gast eingeleitete Ereignis behandelt wird.
  • Die Informationen in der GH-Ereignistabelle können dafür verwendet werden, festzustellen, ob die eingeleiteten Arbeitsschritte oder Ereignisse asynchron oder synchron zu behandeln sind. Da bestimmte Ereignisse möglicherweise nicht für eine Warteschlange zum späteren Ausführen geeignet sind, müssen derartige Ereignisse gemäß einem oder mehrerer Ausführungsformen synchron durchgeführt werden (z.B. ist gemäß einer oder mehreren Ausführungsformen der Betrieb des Gasts 130 so lange zu unterbrechen, bis das durch den Gast 130 eingeleitete Ereignis durch den Host behandelt wird).
  • Optional kann dem Kern H, auf dem der Host betrieben wird, (oder je nach Ausführung einem anderen Kern) eine geeignete Anzeige (z.B. eine externe Unterbrechung) zum Behandeln des durch einen Gast eingeleiteten Ereignisses vorgelegt werden. Der Kern G kann die Ausführung des Gasts 130 anhalten, während das durch den Gast eingeleitete Ereignis durch Kern H behandelt wird. In einer Ausführungsform kann Kern G vorteilhafterweise angewiesen werden, zusätzliche Aufgaben durchzuführen, oder dazu verwendet werden, einen anderen Gast (z.B. Gast 140) auszuführen, während Kern H oder ein anderer ausgewählter Kern (z.B. Kern G) das durch den Gast 130 eingeleitete Ereignis behandelt.
  • Je nach Ausführung können die GH-Ereignistabelle, die HGW und die GHW in Form von in dem Speicher 116 gespeicherten Datenstrukturen umgesetzt werden. Bei dem Speicher 116 kann es sich um jede beliebige Art physischen oder virtuellen Speichers handeln, der zum Speichern von Daten entweder auf flüchtige oder auf nichtflüchtige Weise konfiguriert ist. Nachfolgend werden beispielhafte Szenarien, die spezifischere Ereignisarten bzw. Arbeitsschritte verwenden, als Beispiele bereitgestellt. Es sei darauf hingewiesen, dass derartige beispielhafte Szenarien nicht als den Umfang des beanspruchten Gegenstands auf die bestimmten hierin erörterten Einzelheiten und Beispiele beschränkend anzusehen sind.
  • Durch einen Gast eingeleitete Ereignisse
  • In einem Beispiel kann der Host 120 die GH-Ereignistabelle für das synchrone Behandeln eines durch den Gast 130 eingeleiteten Ereignisses zum Schreiben von programmierter Eingabe/Ausgabe (PIO, programmed input/output) konfigurieren. Der entsprechende Eintrag in der GH-Ereignistabelle wählt den Kern H entsprechend zum Behandeln des PIO-Schreibvorgangs durch Unterbrechung der Ausführung anderer Aufgaben aus, wenn ein Ereignis zum Schreiben von PIO in der GHW platziert ist, wie nachfolgend ausführlicher ausgeführt wird.
  • Wenn der auf Kern G laufende Gast 130 einen PIO-Schreibvorgang einleitet, bezieht sich Kern G auf den entsprechenden Eintrag in der GH-Ereignistabelle, um zu ermitteln, wie ein PIO-Schreibvorgang zu behandeln ist. Der Eintrag in der GH-Ereignistabelle kann anzeigen, dass das Ereignis zum Schreiben von PIO durch Kern G asynchron zu behandeln ist (d.h., dass es in der GHW platziert werden darf). Der Eintrag in der GH-Ereignistabelle kann auch anzeigen, dass das Ereignis prompt durch Kern H zu behandeln ist, zum Beispiel dadurch, dass alle laufenden Aufgaben bzw. Programme auf Kern H so lange zu unterbrechen sind, bis das Ereignis zum Schreiben von PIO behandelt wird.
  • Als solches platziert der Kern G in diesem beispielhaften Szenario das Ereignis zum Schreiben von PIO in der GHW und legt dem Kern H eine Anforderung zum Behandeln des Ereignisses zum Schreiben von PIO zum Beispiel als externe Unterbrechung vor. Bei Empfangen der Unterbrechung wird der Host 120 aktiviert und auf Kern H ausgeführt. Der Host 120 veranlasst den Kern H dazu, das durch Kern G in die GHW eingegebene Ereignis zum Schreiben von PIO zu behandeln. Während der Kern H das Ereignis zum Schreiben von PIO behandelt, kann der Gast 130 auf Kern G weiterlaufen.
  • In einem anderen Beispiel kann der Host 120 die GH-Ereignistabelle zum asynchronen Behandeln eines durch den Gast 130 eingeleiteten Hypercall (HC1) konfigurieren. Der Host 120 kann den entsprechenden Eintrag in der GH-Ereignistabelle so konfigurieren, dass er anzeigt, dass Kern H das in die GHW eingegebene HCl-Ereignis zu behandeln und jegliche auf Kern H durchgeführte Aufgabe so lange zu unterbrechen hat, bis das HCl-Ereignis behandelt wird, wie nachfolgend ausführlicher ausgeführt wird.
  • Wenn ein auf Kern G laufender Gast 130 HCl ausführt, bezieht sich Kern G auf den entsprechenden Eintrag in der GH-Ereignistabelle, um zu ermitteln, wie HCl behandelt werden sollte. Auf Grundlage des Eintrags in der GH-Ereignistabelle kann der Kern G ermitteln, dass das HCl-Ereignis durch Kern H asynchron zu behandeln ist, und außerdem, dass jede auf Kern H laufende Aufgabe so lange zu unterbrechen ist, bis das HCl-Ereignis behandelt wird. Als solches wird das HCl-Ereignis durch den Gast 130 in die GHW eingegeben, und der Host 120 wird aktiviert und auf Kern H ausgeführt, um das in der HGW platzierte HCl-Ereignis zu behandeln. Der Host 120 kann das HCl-Ereignis aus der GHW entfernen und das Ereignis auf Kern H behandeln, während der Gast 130 weiterhin auf dem Kern G ohne Unterbrechung ausgeführt wird.
  • Durch einen Host eingeleitete Ereignisse
  • In einem Beispiel kann der Host 120 auf dem Kern H laufen. Der Host 120 kann in den auf Kern G laufenden Gast 130 eine externe Unterbrechung einbringen, um ein Ereignis zu behandeln. Um obiges zu erreichen, kann der auf Kern H laufende Host 120 das externe Unterbrechungsereignis in der HGW platzieren. Wenn der Kern G feststellt, dass der HGW durch den Gast 130 ein neues Ereignis hinzugefügt wurde, entfernt der Kern G das entsprechende Ereignis aus der HGW und stellt dem Gast 130 das Ereignis zum Behandeln bereit. Je nach Ausführung kann eine Gastereignis-Behandlungsroutine für den Gast 130 aufgerufen werden, um das entsprechende Ereignis zu behandeln.
  • In einem anderen Beispiel antwortet der auf Kern H laufende Host 120 auf eine Anforderung nach dem asynchronen Behandeln eines Hypercall-Ereignisses. Der auf Kern H laufende Host 120 platziert das Hypercall-Ereignis in der HGW. Wenn der Kern G feststellt, dass das Hypercall-Ereignis für den Gast 130 in der HGW platziert ist, entfernt der Kern G das entsprechende Hypercall-Ereignis aus der HGW und stellt dem Gast 130 das Hypercall-Ereignis zum Behandeln bereit. Daraufhin wird durch den Gast 130 eine Hypercall-Antwort-Behandlungsroutine aufgerufen, um das Hypercall-Ereignis zum Beispiel asynchron zu behandeln.
  • In noch einem weiteren Beispiel kann der Host 120 eine Hardware-Einheit (z.B. eine Netzwerkkarte mit Virtualisierungsfunktionen) so konfigurieren, dass sie dem Gast 130 entsprechende Ereignisse für diesen Gast direkt an die HGW sendet. Nach Empfang eines neuen Pakets für den Gast 130 fügt die Netzwerkkarte der HGW ein entsprechendes Ereignis für den Gast 130 hinzu. In einer Ausführungsform entfernt der Kern G, wenn der Kern G feststellt, dass der HGW des Gasts 130 ein neues Ereignis hinzugefügt wurde, das entsprechende Ereignis aus der HGW und stellt es dem Gast 130 zum Behandeln bereit. Daraufhin wird die Ereignis-Behandlungsroutine für den Gast 130 aufgerufen, um das Ereignis zu behandeln.
  • In unterschiedlichen Ausführungsformen kann der beanspruchte Gegenstand als Kombination aus sowohl Hardware- als auch Software-Elementen oder alternativ entweder vollständig in der Form von Hardware oder vollständig in der Form von Software umgesetzt werden. Des Weiteren können hierin dargelegte Datenverarbeitungssysteme und Programm-Software eine gesteuerte Datenverarbeitungsumgebung umfassen, die im Sinne von Hardware-Komponenten oder Logikcode dargestellt werden können, die ausgeführt werden, um Verfahren und Prozesse durchzuführen, welche die hierin vorgesehenen Ergebnisse erreichen. Wenn die Verfahren und Prozesse durch ein Universal-Datenverarbeitungssystem bzw. eine Universalmaschine durchgeführt werden, wandeln sie die Universalmaschine in eine Maschine für einen speziellen Zweck um.
  • Unter Bezugnahme auf die 4A und 4B kann eine Datenverarbeitungssystemumgebung gemäß einer beispielhaften Ausführungsform aus einer Hardware-Umgebung 1110 und einer Software-Umgebung 1120 bestehen. Die Hardware-Umgebung 1110 kann Logikeinheiten, Schaltkreise oder andere Maschinen und Ausstattungen umfassen, die eine Ausführungsumgebung für die Komponenten der Software-Umgebung 1120 bereitstellen. Die Software-Umgebung 1120 wiederum kann die Ausführungsanweisungen, darunter die zu Grunde liegenden Betriebseinstellungen und -Konfigurationen, für die verschiedenen Komponenten der Hardware-Umgebung 1110 bereitstellen.
  • Unter Bezugnahme auf 4A können die Anwendungssoftware und der Logikcode, die hierin dargelegt werden, in Form von durch einen Computer lesbaren Code umgesetzt werden, der über ein oder mehrere durch die beispielhafte Hardware-Umgebung 1110 dargestellte Datenverarbeitungssysteme ausgeführt wird. Wie veranschaulicht, kann die Hardware-Umgebung 110 einen über einen Systembus 1100 mit einem oder mehreren Speicherelementen verbundenen Prozessor 1101 umfassen. Die Speicherelemente können zum Beispiel den lokalen Speicher 1102, die Speichermedien 1106, den Cachespeicher 1104 oder andere durch einen Computer verwendbare oder durch einen Computer lesbare Medien umfassen. Im Kontext dieser Darlegung kann zu einem durch einen Computer verwendbaren oder durch einen Computer lesbaren Speichermedium jeder beliebige beschreibbare Artikel gehören, der dafür verwendet werden kann, Programmcode zu enthalten, zu speichern, zu übertragen, weiterzuleiten oder zu transportieren.
  • Bei einem durch einen Computer lesbaren Speichermedium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit handeln. Das durch einen Computer lesbare Speichermedium kann ohne Einschränkung auch in einem Weiterleitungsmedium umgesetzt werden, in dem Maß, in dem eine derartige Umsetzung als gesetzlich festgelegter Gegenstand angesehen wird. Zu Beispielen für ein durch einen Computer lesbares Speichermedium können ein Halbleiter- oder Festkörperspeicher, Magnetband, eine auswechselbare Computerdiskette, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), eine starre Magnetplatte, eine optische Platte oder, wenn passend, eine Trägerwelle zählen. Zu aktuellen Beispielen optischer Platten gehören eine Kompaktspeicherplatte, Nur-Lese-Speicher (CD-ROM), eine Lesen/Schreiben-Kompaktspeicherplatte (CD-R/W), eine digitale Videoplatte (DVD), eine hochauflösende Videoplatte (HD-DVD) oder eine Blue-ray™-Platte.
  • In einer Ausführungsform lädt der Prozessor 1101 ausführbaren Code von den Speichermedien 1106 in den lokalen Speicher 1102. Der Cachespeicher 1104 optimiert die Verarbeitungszeit durch Bereitstellen von Zwischenspeicher, der dabei hilft, die Häufigkeit, mit der Code zur Ausführung geladen wird, zu verringern. Eine oder mehrere Benutzerschnittstelleneinheiten 1105 (z.B. eine Tastatur, ein Zeigegerät usw.) sowie ein Anzeigebildschirm 1107 können entweder direkt oder zum Beispiel durch eine mitbeteiligte E/A-Steuereinheit 1103 mit den anderen Elementen in der Hardware-Umgebung 1110 verbunden sein. Eine Datenaustausch-Schnittstelleneinheit 1108 wie ein Netzwerkadapter kann bereitgestellt werden, um es der Hardware-Umgebung 1110 zu ermöglichen, mit lokalen oder entfernt angeordneten Datenverarbeitungssystemen, Druckern oder Speichereinheiten über mitbeteiligte private oder öffentliche Netzwerke (z.B. das Internet) Daten auszutauschen. Drahtgebundene oder drahtlose Modems sowie Ethernet-Karten sind nur einige wenige der beispielhaften Arten von Netzwerkadaptern.
  • Es sei darauf hingewiesen, dass die Hardware-Umgebung 1110 in bestimmten Ausführungsformen einige oder alle der obigen Komponenten eventuell gar nicht enthält oder zum Bereitstellen von ergänzender Funktionalität oder Nutzen zusätzliche Komponenten enthalten kann. Je nach vorgesehener Verwendung und Konfiguration kann es sich bei der Hardware-Umgebung 1110 um einen Tischcomputer (desktop computer) oder einen tragbaren Computer (laptop computer) oder eine andere Datenverarbeitungseinheit handeln, die optional in einem eingebetteten System wie einer Set-Top-Box, einem elektronischen Assistenten (PDA, personal digital assistant), einem persönlichen Media-Player, einer tragbaren Datenaustauscheinheit (z.B. einem drahtlosen Telefon) oder anderen gleichartigen Datenverarbeitungs- bzw. Datenspeicherfähigkeiten aufweisenden Hardware-Plattformen ausgeführt sein können.
  • In einigen Ausführungsformen dient die Datenaustauschschnittstelle 1108 als Datenaustauschanschluss zum Bereitstellen eines Mittels zum Datenaustausch mit einem oder mehreren Datenverarbeitungssystemen durch Senden und Empfangen von digitalen, elektrischen, elektromagnetischen oder optischen Signalen, die analoge oder digitale Datenströme übertragen, die verschiedene Arten von Daten, darunter Programmcode darstellen. Der Datenaustausch kann durch ein lokales oder ein Fernnetzwerk hergestellt werden oder alternativ durch Übertragung über die Luft oder ein anderes Medium, darunter ohne Einschränkung die Weiterleitung über eine Trägerwelle.
  • Wie hier bereitgestellt sind die dargelegten, auf den veranschaulichten Hardware-Elementen ausgeführten Software-Elemente gemäß logischen oder funktionalen Beziehungen festgelegt, die beispielhafter Natur sind. Es sei jedoch angemerkt, dass die entsprechenden Verfahren, die durch die beispielhaften Software-Elemente umgesetzt werden, zum Beispiel durch konfigurierte und programmierte Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs, application specific integrated circuits), am Einsatzort programmierbare Verknüpfungsfelder (FPGAs, field programmable gate arrays), sowie digitale Signalprozessoren (DSPs) auch in den Hardware-Elementen codiert sein können.
  • Unter Bezugnahme auf 4B kann eine Software-Umgebung 1120 allgemein in zwei Klassen aufgeteilt werden, darunter Systemsoftware 1121 und Anwendungssoftware 1122, die in einer oder mehreren Hardwareumgebungen 1110 ausgeführt werden. In einer Ausführungsform können die hier dargelegten Verfahren und Prozesse als Systemsoftware 1121, Anwendungssoftware 1122 oder eine Kombination daraus umgesetzt werden. Die Systemsoftware 1121 kann Steuerprogramme wie ein Betriebssystem (OS, operating system) oder ein Informationsverwaltungssystem umfassen, die einen oder mehrere Prozessoren 1101 (z.B. Mikrosteuereinheiten) in der Hardware-Umgebung 1110 anweisen, wie sie funktionieren und Daten verarbeiten sollen. Die Anwendungssoftware 1122 kann Programmcode, Datenstrukturen, Firmware, im Arbeitsspeicher befindliche Software, Mikrocode oder jede beliebige andere Form von Daten oder Routinen umfassen, die durch einen Prozessor 1101 gelesen, analysiert oder ausgeführt werden können, ist aber nicht darauf beschränkt.
  • Anders ausgedrückt, die Anwendungssoftware 1122 kann als ein in einem Computerprogrammprodukt in Form eines durch einen Computer verwendbaren oder durch einen Computer lesbaren Speichermediums eingebetteter Programmcode ausgeführt sein, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Außerdem kann die Anwendungssoftware 1122 ein oder mehrere Computerprogramme umfassen, die über der Systemsoftware 1121. ausgeführt werden, nachdem sie von den Speichermedien 1106 in den lokalen Speicher 1102 geladen wurden. In einer Client-Server-Architektur kann die Anwendungssoftware 1122 Client-Software und Server-Software umfassen. In einer Ausführungsform kann die Client-Software zum Beispiel in einem Client-Datenverarbeitungssystem ausgeführt werden, das eigenständig und trennbar von einem Server-Datenverarbeitungssystem ist, in dem die Server-Software ausgeführt wird.
  • Die Software-Umgebung 1120 kann auch eine Browser-Software 1126 für das Zugreifen auf über lokale oder entfernt angeordnete Datenverarbeitungsnetze verfügbare Daten umfassen. Des Weiteren kann die Software-Umgebung 1120 eine Benutzerschnittstelle 1124 (z.B. eine grafische Benutzerschnittstelle (GUI, graphical user interface)) zum Empfangen von Benutzerbefehlen und -daten umfassen. Es ist angemessen, zu wiederholen, dass die oben beschriebenen Hardware- und Software-Architekturen und -Umgebungen als Beispiele dienen. Als solche können eine oder mehrere Ausführungsformen über eine beliebige Art von Systemarchitektur, funktionaler oder logischer Plattform oder Verarbeitungsumgebung ausgeführt werden.
  • Es sollte auch klar sein, dass der Logikcode, Programme, Module, Prozesse, Verfahren und die Reihenfolge, in der die entsprechenden Prozesse jedes Verfahrens durchgeführt werden, lediglich beispielhaft sind. Je nach Ausführung können die Prozesse oder jegliche zu Grunde liegenden Teilprozesse und Verfahren in jeder beliebigen Reihenfolge oder gleichzeitig durchgeführt werden, soweit nichts anderes in der vorliegenden Beschreibung angegeben ist. Des Weiteren bezieht sich die Festlegung von Logikcode im Kontext dieser Beschreibung nicht auf eine bestimmte Programmiersprache oder ist darauf beschränkt, soweit nicht spezifisch anderweitig angegeben, und kann ein oder mehrere Module umfassen, die auf einem oder mehreren Prozessoren in verteilten, nichtverteilten, Einzel- oder Mehrfachverarbeitungsumgebungen ausgeführt werden.
  • Der Fachmann wird verstehen, dass eine Software-Ausführung Firmware, im Arbeitsspeicher befindliche Software, Mikrocode usw. enthalten kann. Bestimmte Komponenten, darunter Software oder Hardware oder Software und Hardware kombinierende Aspekte können hierin allgemein als „Schaltkreis“, „Modul“ oder „System“ bezeichnet sein. Des Weiteren kann der dargelegte Gegenstand als ein auf einem oder mehreren durch einen Computer lesbaren Speichermedien enthaltenes Computerprogrammprodukt umgesetzt werden, die durch einen Computer lesbaren Programmcode enthalten. Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Speichermedien verwendet werden. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder eine Einheit oder jede geeignete Kombination daraus handeln, ohne darauf beschränkt zu sein.
  • In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Medium um jedes beliebige physische Medium handeln, das ein Programm enthalten bzw. speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird. Ein durch einen Computer lesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem durch einen Computer lesbaren Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form aus einer Vielfalt an Formen annehmen, darunter elektromagnetische, optische bzw. jede geeignete Kombination daraus, jedoch nicht darauf beschränkt. Bei einem durch einen Computer lesbaren Signalmedium kann es sich um ein beliebiges durch einen Computer lesbares Speichermedium handeln, das kein durch einen Computer lesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten bzw. transportieren kann.
  • Auf einem durch einen Computer lesbaren Speichermedium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht darauf beschränkt. Computerprogrammcode für das Ausführen der dargelegten Arbeitsschritte kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die „C“-Programmiersprache oder ähnliche Programmiersprachen.
  • Der Programmcode kann vollständig 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 vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters).
  • Bestimmte Ausführungsformen werden unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können dem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
  • Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Speichermedium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die in dem Block bzw. den Blöcken des Ablaufplans und/oder der Schaubilder festgelegte Funktion/den Schritt umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. der anderen Einheiten zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Funktionsschaubilder festgelegten Funktionen/Schritte erzeugen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Funktionsschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) umfassen. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können.
  • Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschalt- bzw. Funktionsschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschalt- bzw. Funktionsschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.
  • Der beanspruchte Gegenstand wurde hier unter Bezugnahme auf ein oder mehrere Merkmale oder Ausführungsformen bereitgestellt. Der Fachmann wird erkennen und verstehen, dass, trotz der ausführlichen Art der hier bereitgestellten beispielhaften Ausführungsformen, Änderungen und Abwandlungen an den Ausführungsformen vorgenommen werden können, ohne den allgemein beabsichtigten Umfang zu beschränken oder davon abzuweichen. Diese und verschiedene andere Anpassungen und Kombinationen der hier bereitgestellten Ausführungsformen liegen innerhalb des Umfangs des dargelegten Gegenstands, wie durch die Ansprüche und deren vollständige Reihe von Entsprechungen festgelegt wird.
  • Ein Teil der Beschreibung dieser Patentschrift kann durch Urheberrechte geschütztes Material enthalten. Der Besitzer hat keine Einwände gegen die Fernkopievervielfältigung durch eine beliebige Patentschrift oder Patentbeschreibung, die in der Patentakte bzw. den Unterlagen des Patent- und Markenamts auftauchen, behält sich anderweitig jedoch sämtliche Urheberrechte vor.
  • Bei bestimmten Marken, auf die hierin Bezug genommen wird, kann es sich um Gewohnheitsrecht oder eingetragene Marken des Anmelders, des Bevollmächtigten oder von mit dem Anmelder oder dem Bevollmächtigten verbundenen oder nicht mit diesen verbundenen Dritten handeln. Die Verwendung dieser Marken dient der Bereitstellung einer befähigenden Offenlegung durch Beispiele und darf nicht als den Umfang des dargelegten Gegenstands auf ausschließlich derartigen Marken zugehöriges Material beschränkend angesehen werden.

Claims (7)

  1. Verfahren zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung, wobei Mehrkern-Verarbeitungsumgebung aus einer Hardware-Umgebung (1110) und einer Software-Umgebung (1120) besteht, wobei die Hardware-Umgebung einen oder mehrere Prozessoren (1101), einen oder mehrere lokalen Speicher (1102), einen oder mehrere Cache-Speicher (1104), eine oder mehrere Benutzerschnittstellen (1105), ein oder mehrere Speichermedia (1106), eine oder mehrere Datenaustausch-Schnittstelleneinheiten (1108) umfasst, wobei die Software-Umgebung eine System-Software (1121) umfasst, wobei eine virtuelle Maschine auf einem ersten Kern läuft, wobei ein Hypervisor auf einem zweiten Kern läuft, wobei das Verfahren Folgendes umfasst: Einleiten eines Ereignisses durch die virtuelle Maschine (S310) ; Platzieren des durch die virtuelle Maschine eingeleiteten Ereignisses in einer Warteschlange (S340) als Reaktion auf das Feststellen, dass das durch die virtuelle Maschine eingeleitete Ereignis asynchron durch dem Hypervisor zu behandeln ist (S320), wobei der zweite Kern das durch die virtuelle Maschine eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Hypervisor auslöst, um das durch die virtuelle Maschine eingeleitete Ereignis zu behandeln (S350), während die virtuelle Maschine nicht unterbrochen wird, um auf das Behandeln des durch die virtuelle Maschine eingeleitete Ereignisses zu warten; und als Reaktion auf das Feststellen, dass das durch die virtuelle Maschine eingeleitete Ereignis synchron durch den Hypervisor zu behandeln ist (S320), Aktivieren des zweiten Kerns zum Behandeln des Ereignisses durch den Hypervisor (S340), ohne das durch die virtuelle Maschine eingeleitete Ereignis in der Warteschlange zu platzieren, während die virtuelle Maschine unterbrochen wird, bis das durch die virtuelle Maschine eingeleitete Ereignis durch den Hypervisor behandelt wird (S350); Einleiten eines zweiten Ereignisses durch den Hypervisor (S210); undPlatzieren des durch den Hypervisor eingeleiteten zweiten Ereignisses in einer zweiten Warteschlange (S230) als Reaktion auf das Feststellen, dass das durch den Hypervisor eingeleitete zweite Ereignis durch die virtuelle Maschine zu behandeln ist (S220), wobei der erste Kern das durch den Hypervisor eingeleitete zweite Ereignis aus der zweiten Warteschlange entfernt und eine zweite Ereignisbehandlungsroutine für die virtuelle Maschine auslöst, um das durch den Hypervisor eingeleitete Ereignis zu behandeln (S240) .
  2. Verfahren nach Anspruch 1, bei dem das durch die virtuelle Maschine eingeleitete Ereignis entweder als asynchron oder als synchron zu behandelndes Ereignis eingestuft wird.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, bei dem eine Datenstruktur verwendet wird, um dem durch die virtuelle Maschine eingeleiteten Ereignis eine synchrone bzw. asynchrone Kategorie zuzuweisen, so dass der erste Kern feststellen kann, ob das durch die virtuelle Maschine eingeleitete Ereignis in der Warteschlange zu platzieren ist.
  4. System zum Behandeln von Ereignissen in einer Mehrkern-Verarbeitungsumgebung, wobei Mehrkern-Verarbeitungsumgebung aus einer Hardware-Umgebung (1110) und einer Software-Umgebung (1120) besteht, wobei die Hardware-Umgebung einen oder mehrere Prozessoren (1101), einen oder mehrere lokalen Speicher (1102), einen oder mehrere Cache-Speicher (1104), eine oder mehrere Benutzerschnittstellen (1105), ein oder mehrere Speichermedia (1106), eine oder mehrere Datenaustausch-Schnittstelleneinheiten (1108) umfasst, wobei die Software-Umgebung eine System-Software (1121) umfasst, wobei eine virtuelle Maschine auf einem ersten Kern läuft, wobei ein Hypervisor auf einem zweiten Kern läuft, wobei das System Folgendes umfasst: eine Logikeinheit zum Einleiten (S310) eines Ereignisses durch die virtuelle Maschine; eine Logikeinheit zum Platzieren (S330) des durch die virtuelle Maschine eingeleiteten Ereignisses in einer Warteschlange als Reaktion auf das Feststellen, dass das durch die virtuelle Maschine eingeleitete Ereignis asynchron durch den Hypervisor behandeln ist (S320), wobei der zweite Kern das durch die virtuelle Maschine eingeleitete Ereignis aus der Warteschlange entfernt und eine Ereignisbehandlungsroutine für den Hypervisor auslöst, um das durch die virtuelle Maschine eingeleitete Ereignis zu behandeln (S350), während die virtuelle Maschine nicht unterbrochen wird, um auf das Behandeln des durch die virtuelle Maschine eingeleitete Ereignisses zu warten; und eine Logikeinheit zum Aktivieren (S340) des zweiten Kerns zum Behandeln (S350) des Ereignisses durch den Hypervisor als Reaktion auf das Feststellen (S320), dass das durch die virtuelle Maschine eingeleitete Ereignis synchron durch den Hypervisor zu behandeln ist, ohne das durch die virtuelle Maschine eingeleitete Ereignis in der Warteschlange zu platzieren, während die virtuelle Maschine unterbrochen wird, bis das durch die virtuelle Maschine eingeleitete Ereignis durch den Hypervisor behandelt wird; eine Logikeinheit zum Einleiten (S210) eines zweiten Ereignisses durch den Hypervisor; und eine Logikeinheit zum Platzieren (S230) des durch den Hypervisor eingeleiteten zweiten Ereignisses in einer zweiten Warteschlange als Reaktion auf das Feststellen, dass das durch den Hypervisor eingeleitete zweite Ereignis durch die virtuelle Maschine zu behandeln ist (S220), wobei der erste Kern das durch den Hypervisor eingeleitete zweite Ereignis aus der zweiten Warteschlange entfernt und eine zweite Ereignisbehandlungsroutine für die virtuelle Maschine auslöst, um das durch den Hypervisor eingeleitete Ereignis zu behandeln (S240) .
  5. System nach Anspruch 4, bei dem das durch die virtuelle Maschine eingeleitete Ereignis entweder als asynchron oder als synchron zu behandelndes Ereignis eingestuft wird.
  6. System nach Anspruch 4 oder Anspruch 5, bei dem eine Datenstruktur verwendet wird, um dem durch die virtuelle Maschine eingeleitetes Ereignis eine synchrone bzw. asynchrone Kategorie zuzuweisen, so dass der erste Kern feststellen kann, ob das durch die virtuelle Maschine eingeleitete Ereignis in der Warteschlange zu platzieren ist.
  7. Computerprogrammprodukt, das physisch auf einem durch einen Computer lesbaren Speicher gespeichert ist, das, wenn es in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem dazu veranlasst, sämtliche Schritte des Verfahrens nach einem der Ansprüche 1 bis 3 durchzuführen.
DE112011100098.7T 2010-01-21 2011-01-21 Effiziente Mehrkernverarbeitung von Ereignissen Active DE112011100098B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/691,262 2010-01-21
US12/691,262 US8453149B2 (en) 2010-01-21 2010-01-21 Efficient multi-core processing of events
PCT/EP2011/050833 WO2011089223A2 (en) 2010-01-21 2011-01-21 Efficient multi-core processing of events

Publications (2)

Publication Number Publication Date
DE112011100098T5 DE112011100098T5 (de) 2012-10-18
DE112011100098B4 true DE112011100098B4 (de) 2019-03-14

Family

ID=44278407

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011100098.7T Active DE112011100098B4 (de) 2010-01-21 2011-01-21 Effiziente Mehrkernverarbeitung von Ereignissen

Country Status (4)

Country Link
US (1) US8453149B2 (de)
DE (1) DE112011100098B4 (de)
GB (1) GB2489615B (de)
WO (1) WO2011089223A2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2925596A (en) * 1952-12-17 1960-02-16 Fr Sadir Carpentier Soc Circularly polarized aircraft guiding systems
US8839238B2 (en) * 2010-06-11 2014-09-16 International Business Machines Corporation Dynamic virtual machine shutdown without service interruptions
US10089093B1 (en) 2011-05-24 2018-10-02 BlueStack Systems, Inc. Apparatuses, systems and methods of switching operating systems
US8832690B1 (en) * 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US9621409B2 (en) * 2011-09-15 2017-04-11 Oracle International Corporation System and method for handling storage events in a distributed data grid
KR102279025B1 (ko) 2014-12-12 2021-07-19 삼성전자주식회사 연산 프로세서 및 연산 프로세서의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067775A1 (en) 2002-10-24 2007-03-22 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625821A (en) * 1991-08-12 1997-04-29 International Business Machines Corporation Asynchronous or synchronous operation of event signaller by event management services in a computer system
US6006282A (en) * 1995-12-01 1999-12-21 Intel Corporation Blocking host input while a remote guest has input control to a host-executed shared application
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6857017B1 (en) * 1999-10-11 2005-02-15 I2 Technologies Us, Inc. Customizable notification user window
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7958506B2 (en) * 2006-06-22 2011-06-07 Intel Corporation Time sliced interrupt processing on virtualized platform
US8214796B2 (en) * 2007-04-20 2012-07-03 National Instruments Corporation Event firing node for asynchronously passing events from a graphical data flow program to a statechart
US9164784B2 (en) * 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067775A1 (en) 2002-10-24 2007-03-22 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
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

Also Published As

Publication number Publication date
GB2489615B (en) 2018-11-21
GB2489615A (en) 2012-10-03
DE112011100098T5 (de) 2012-10-18
WO2011089223A2 (en) 2011-07-28
WO2011089223A3 (en) 2011-11-17
US8453149B2 (en) 2013-05-28
GB201209512D0 (en) 2012-07-11
US20110179253A1 (en) 2011-07-21

Similar Documents

Publication Publication Date Title
DE112011100098B4 (de) Effiziente Mehrkernverarbeitung von Ereignissen
DE112012004747B4 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE112011102183B4 (de) Beschleuniger für die Migration virtueller Maschinen
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112016003249T5 (de) Container-Bereitstellung auf Abhängigkeitsgrundlage
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112010005821T5 (de) Kontextwechsel
DE112015004750T5 (de) Eine beinahe faire aktive sperre
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112010005473T5 (de) Opportunistisches multitasking
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE112016001730T5 (de) Virtuelle Maschinensysteme
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112013000687T5 (de) Verteilte Funktionsausführung für Hybridsysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20120702

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