-
KREUZBEZUG AUF BETREFFENDE ANMELDUNGEN
-
Diese Anmeldung beansprucht den Vorteil von der Vereinigte-Staaten-Provisional-Patentanmeldungs-Serien-Nr. 13/282,059, eingereicht am 26. Oktober 2011, welche hiermit durch Bezugnahme inkorporiert ist.
-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft im Allgemeinen Software-Anwendung und insbesondere Anwendungs-Level-Spekulative-Verarbeitung (application level speculative processing).
-
Beschreibung der betreffenden Technik
-
Viele Anwendungen sind Ereignis-getriebene Anwendungen, derart, dass ein Ereignis asynchron erhoben ist (raised) und, basierend auf der Antwort auf dieses Ereignis, eine Serie von Operationen durchgeführt wird. Es kann mehrere Antworten auf ein einzelnes Ereignis geben, wobei jede Antwort eine andere Serie von Operationen initiiert. Ein Beispiel einer Ereignis-getriebenen Anwendung ist eine Computer-Modulierungs-Software-Anwendung, welche einem Benutzer erlaubt, komplexe drei-dimensionale (3D)-Modelle von Objekten zu erzeugen.
-
Während einige Operationen, welche mittels einer Ereignis-Antwort initiiert sind, schnell mittels eines Rechen-Gerätes ausgeführt werden können, erfordern oft Operationen, welche mittels Software-Anwendungen initiiert sind, mehrere Verarbeitungs-Zyklen. Wenn Arbeitsabläufe durchgeführt werden, welche eine große Menge von Ereignis-Antworten und die nachfolgende Ausführung von Operationen involvieren, kann es extrem störend (tedious) und zeitverbrauchend sein, einige Verarbeitungs-Zyklen darauf zu warten, dass jeder Satz von Operationen in dem Arbeitsablauf Ausführung vollendet. Solche Wartezeiten sind hochgradig unerwünscht und können dazu führen, dass suboptimale Aktionen durchgeführt werden, um zu vermeiden, bedeutende Zeitmengen verbrauchen zu müssen, wenn darauf gewartet wird, dass Ausführung vollendet.
-
Eine Lösung des oben erwähnten Problems ist die spekulative Ausführung von Code. Um jedoch solch eine spekulative Ausführung zu ermöglichen, muss der Code extrem sorgfältig designed sein, vordefinierten Daten-Modellen folgen, welche spekulative Ausführungen unterstützen. Solch ein Design-Prozess ist nicht nur schwierig und erhöht eine Entwicklungs-Zeit, sondern ist auch sehr durchdringend (pervasive). Daher existieren heute viele Software-Anwendungen, welche nicht gebaut sind, spekulative Ausführungen zu unterstützen.
-
Wie das Vorangehende illustriert, ist, was in der Technik benötigt ist, ein Mechanismus zum Vermindern der Anzahl von Verarbeitungs-Zyklen, welche benötigt sind, Operationen auszuführen, welche mittels einer Anwendung in Antwort auf ein Ereignis initiiert sind.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine oder mehrere Ausführungsformen der Erfindung ist ein Computer-implementiertes Verfahren zum spekulativen Ausführen von Anwendungs-Ereignis-Antworten. Das Verfahren umfasst die Schritte eines Identifizierens von einer oder mehreren Ereignis-Antworten, welche zur Ausführung mittels einer Anwendung ausgestellt werden könnten, welche mittels eines Master-Prozesses ausgeführt ist, für jede Ereignis-Antwort, eines Generierens eines Kind-Prozesses, um die Ereignis-Antwort auszuführen, eines Bestimmens, dass eine erste Ereignis-Antwort, welche in der einen oder den mehreren Ereignis-Antworten umfasst ist, zur Ausführung mittels der Anwendung ausgestellt worden ist, eines Abschickens (committing) des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, als einen neuen Master-Prozess, und eines Abbrechens (aborting) des Master-Prozesses und aller Kind-Prozesse außer dem Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist. In einer anderen Ausführungsform wird, wenn der Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, abgeschickt wird, der Kind-Prozess in den Master-Prozess absorbiert und der Master-Prozess wird nicht terminiert.
-
Vorteilhafter Weise vermindern mittels eines spekulativen Ausstellens von Ereignis-Antworten zur Verarbeitung die hierin beschriebenen Techniken die Gesamt-Wartezeit, wenn Ereignis-Antworten verarbeitet werden. Wenn die Ereignis-Antwort, welche zur Prozessierung als nächstes ausgewählt ist, bereits spekulativ verarbeitet worden ist, dann ist keine nachfolgende Verarbeitung benötigt. Ferner können selbst Anwendungen, welche nicht gebaut sind, spekulative Ausführungen zu unterstützen, in einer Weise ausgeführt werden, welche das spekulative Ausstellen von Ereignis-Antworten erlaubt. Mit anderen Worten können die hierin beschriebenen Techniken nachträglich auf existierende Ereignis-getriebene Anwendungen angewendet werden, um somit das Zeit verbrauchende Erfordernis eines Umstellens (refactoring) des Daten-Modells der existierenden Anwendung, um spekulative Ausführungen zu unterstützen, zu vermeiden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
So dass die Weise, in welcher die oben zitierten Merkmale der Erfindung im Detail verstanden werden kann, kann eine besondere Beschreibung der Erfindung, welche oben kurz zusammengefasst ist, durch Bezugnahme auf Ausführungsformen genommen werden, von welchen einige in den angehängten Zeichnungen illustriert sind. Es wird jedoch zu bemerken, dass die angehängten Zeichnungen nur typische Ausführungsformen dieser Erfindung illustrieren und daher nicht zu betrachten sind, ihren Geltungsbereich zu begrenzen, da die Erfindung andere gleich effektive Ausführungsformen zulassen kann.
-
1 ist eine Rechen-Umgebung, welche konfiguriert ist, eine oder mehrere Ausführungsformen der Erfindung zu implementieren;
-
2 illustriert eine Ereignis-Antwort-Hierarchie, welche die Anwendung von 1 betrifft, gemäß einer Ausführungsform der Erfindung;
-
3 ist eine detailliertere Ansicht des Ausführungsraumes und des Speicherraumes von 1, gemäß einer Ausführungsform der Erfindung;
-
4 ist eine detailliertere Ansicht des Ausführungsraumes und des Speicherraumes von 1, gemäß einer anderen Ausführungsform der Erfindung;
-
5 ist ein Flussdiagramm von Verfahrensschritten zum spekulativen Ausführen von Operationen, welche sich auf Ereignis-Antworten beziehen, welche mittels einer Anwendung ausgestellt werden können, gemäß einer Ausführungsform der Erfindung; und
-
6 ist ein exemplarisches System, innerhalb welchem die Anwendung und die spekulative Maschine von 1 ausführen könnten, gemäß einer Ausführungsform der Erfindung.
-
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
In der folgenden Beschreibung werden zahlreiche spezifische Details ausgeführt, um ein durchgängigeres Verständnis der Erfindung bereitzustellen. Es wird jedoch für den Fachmann in der Technik ersichtlich sein, dass die Erfindung ohne ein oder mehrere dieser spezifischen Details praktiziert werden kann. In anderen Fällen sind wohl bekannte Merkmale nicht beschrieben worden, um ein Verschleiern der Erfindung zu vermeiden.
-
1 ist eine Rechenumgebung 100, welche konfiguriert ist, eine oder mehrere Ausführungsformen der Erfindung zu implementieren. Wie es gezeigt ist, umfasst die Rechenumgebung eine Ereignis-getriebene Anwendung 104, eine spekulierende Maschine 106, einen Ausführungsraum 108 und einen Speicherraum 110.
-
Die Ereignis-getriebene Anwendung 104 ist ein Software-Programm, welches erlaubt, dass eine Serie von Operationen über Antworten auf Ereignisse durchgeführt werden, welche asynchron erhoben sind (raised). Die Ereignis-getriebene Anwendung 104 kann Daten verarbeiten, welche von einer anderen Anwendung, physikalischen Sensoren, Benutzer-Eingaben, etc. empfangen sind und kann Daten an ein Terminal, an eine andere Anwendung, an eine Platte, etc. ausgeben. Die Ereignis-getriebene Anwendung 104 kann eine Grafik-Anwendung, eine Modulierungs-Anwendung, wie etwa Auto-CAD, eine Wort-Verarbeitungs-Anwendung, etc. sein. In einer Ausführungsform interagiert ein Benutzer mit der Ereignis-getriebenen Anwendung 104 über Benutzer-Eingabe 102. Eine Benutzer-Eingabe 102 kann eine Indikation sein, eine bestimmte Ereignis-Antwort zu verarbeiten, wie etwa eine Zeichen-Ereignis-Antwort in einer Modulierungs-Anwendung.
-
Die Ereignis-getriebene Anwendung 104 führt innerhalb des Ausführungsraumes 108 aus. Typischerweise werden Ereignis-Antworten mittels der Ereignis-getriebenen Anwendung 104 in Antwort auf ein erhobenes bzw. ein auftretendes Ereignis ausgestellt und diese Ereignis-Antworten werden nachfolgend innerhalb des Ausführungsraumes 108 verarbeitet. Ferner ist der Ereignis-getriebenen Anwendung 104 ein Teil des Speicherraumes 110 alloziert, derart dass Speicher-Zugriffs-Operationen, welche die Ereignis-getriebene Anwendung 104 betreffen, innerhalb des Teiles des Speicherraumes 110 durchgeführt werden, welcher für die Ereignis-getriebene Anwendung 104 alloziert ist.
-
In einigen Ausführungsformen sind Ereignis-Antworten, welche eine Anwendung betreffen, in einer hierarchischen Weise organisiert, derart, dass sobald eine bestimmte Ereignis-Antwort bei einem Level in der Hierarchie ausgeführt ist, irgendwelche Ereignis-Antworten bei einem nachfolgenden Level in der Hierarchie ausgeführt werden können.
-
Die Spekulations-Maschine (speculation engine) 106 sagt Zukunfts-Ereignis-Antworten vorher, welche zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 ausgestellt werden können und stellt spekulativ diese Ereignis-Antworten zur Verarbeitung innerhalb des Ausführungsraumes 108 aus. Die Ereignis-Antworten werden basierend auf einem Anwendungs-Zustand vorhergesagt, welcher mit der Ereignis-getriebenen Anwendung 104 assoziiert ist, welcher, unter anderem, die vorherigen Ereignis-Antwort(en) anzeigt, welche mittels der Anwendung zur Verarbeitung ausgestellt wurden, basierend auf einem Kontext, welcher mit der momentanen Operation der Ereignis-getriebenen Anwendung 104 assoziiert ist und basierend auf irgendwelchen Ereignissen, welche erhoben wurden, während die Ereignis-getriebene Anwendung 104 ausführte. Die Spekulations-Maschine 106 wertet den Anwendungs-Zustand aus, welcher mit der Ereignis-getriebenen Anwendung 104 assoziiert ist, um gewisse Ereignis-Antworten zu identifizieren, welche eine hohe Wahrscheinlichkeit haben, als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt zu werden. In einer Ausführungsform sagt die Spekulations-Maschine 106 Antworten zur Prozessierung basierend auf einer Ereignis-Antwort-Hierarchie vorher, welche die Ereignis-Antwort betrifft, welche vorher zur Ausführung mittels der Ereignis-getriebenen Anwendung 104 ausgestellt wurde. In einer anderen Ausführungsform sagt die Spekulation Ereignis-Antworten zur Verarbeitung basierend auf einer zuvor gesammelten Ereignis-Antwort-Verarbeitungs-Historie vorher, welche spezifische Ereignis-Antworten anzeigt, welche zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 oder ähnlicher Anwendungen ausgestellt wurden, nachdem die momentane Ereignis-Antwort zur Verarbeitung ausgestellt wurde.
-
Wenn sie eine vorhergesagte Ereignis-Antwort zur Verarbeitung ausstellt, kloniert die Spekulations-Maschine 106 den Prozess innerhalb des Ausführungsraumes 108, welcher für die Ereignis-getriebene Anwendung 104 alloziert ist, und stellt dann die vorhergesagte Ereignis-Antwort innerhalb des klonierten Prozesses aus. Für den klonierten Prozess wird auch ein unabhängiger Teil von Speicher innerhalb des Speicherraumes 110 alloziert. Weitere Details bezüglich der Ausführung der klonierten Prozesse sind in 3 und 4 unten beschrieben.
-
In einer Ausführungsform, wenn die Ereignis-Antwort, welche als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten, welche in dem Klon-Prozess verarbeitet sind, übereinstimmt (matches), dann wählt die Spekulations-Maschine 106 den Klon-Prozess als den Master-Prozess aus. Irgendwelche anderen Klon-Prozesse und der ursprüngliche Prozess, welche die Ereignis-getriebene Anwendung 104 ausführen, werden dann abgebrochen. In einer alternativen Ausführungsform, wenn die Ereignis-Antwort, welche als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten übereinstimmt, welche in dem Klon-Prozess verarbeitet werden, dann absorbiert der Master-Prozess den Speicher und I/O-Modifikationen, welche mittels des Klon-Prozesses gemacht sind. Alle die Klon-Prozesse werden dann abgebrochen.
-
2 illustriert eine Ereignis-Antwort-Hierarchie, welche die Anwendung von 1 betrifft, gemäß einer Ausführungsform der Erfindung. Wie es gezeigt ist, ist Ereignis-Antwort A 202 mit Ereignis-Antwort B 204, Ereignis-Antwort C 206 und Ereignis-Antwort D 208 verbunden (linked). Wenn die Ereignis-getriebene Anwendung 104 die Ereignis-Antwort A 202 ausstellt, dann können irgendwelche von den Ereignis-Antworten 204–208 als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt werden, da diese Ereignis-Antworten in dem nachfolgenden Level in der Ereignis-Antwort-Hierarchie 200 sind. 3 und 4 illustrieren, wie die spekulative Maschine 106 spekulativ Ereignis-Antworten basierend auf der Ereignis-Antwort-Hierarchie 200 ausführt.
-
3 ist eine detailliertere Ansicht des Ausführungsraumes 108 und des Speicherraumes 110 von 1, gemäß einer Ausführungsform der Erfindung. Wie es gezeigt ist, umfasst der Ausführungsraum 108 einen Master-Prozess 302, einen Klon-Prozess 304, einen Klon-Prozess 306 und einen Klon-Prozess 308. Wie es auch gezeigt ist, umfasst der Speicherraum 110 einen Anwendungs-Speicherbereich 310, Klon-Speicherbereiche 312 und Klon-I/O-Puffer 314.
-
In der Illustration von 3 ist der Master-Prozess 302 der Prozess innerhalb dessen Ereignis-Antworten, welche mittels der Ereignis-getriebenen Anwendung 104 ausgestellt sind, ausführen und der Anwendungs-Speicherbereich 310 ist ein Speicherbereich innerhalb des Speicherraums 110, welcher für die Ereignis-getriebene Anwendung 104 alloziert ist. Ereignis-Antwort A 202, welche in dem Master-Prozess 302 ausgeführt ist, wurde zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 innerhalb des Master-Prozesses 302 ausgestellt. Nachfolgend sagt die Spekulations-Maschine 106 vorher, dass es eine hohe Wahrscheinlichkeit gibt, dass Ereignis-Antwort B 204, Ereignis-Antwort C 206 oder Ereignis-Antwort D 208 zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 als nächstes auszustellen sind. Wieder sind derartige Vorhersagen auf dem Anwendungs-Zustand basiert, welcher mit der Ereignis-getriebenen Anwendung 104 assoziiert ist, sowie auf der Ereignis-Antwort-Hierarchie 200 und irgendeiner anderen historischen Ausführungs-Information, welche die Spekulations-Maschine 106 analysiert.
-
Wie vorher hierin beschrieben ist, wenn sie eine vorhergesagte Ereignis-Antwort zur Verarbeitung ausstellt, kloniert die Spekulations-Maschine 106 den Prozess, innerhalb dessen die Ereignis-getriebene Anwendung 104 ausführt. Die Spekulations-Maschine 106 plant (schedules) dann die vorhergesagte Ereignis-Antwort zur Verarbeitung innerhalb des klonierten Prozesses. Somit erzeugt die spekulierende Maschine 106 für jede der vorhergesagten Ereignis-Antworten, Ereignis-Antwort B 204, Ereignis-Antwort C 206 oder Ereignis-Antwort D 208 einen Klon des Master-Prozesses 302 und plant die vorhergesagte Ereignis-Antwort zur Verarbeitung innerhalb des Klon-Prozesses. Klon-Prozess 304 ist ein Klon des Master-Prozesses 302, innerhalb dessen die Spekulations-Maschine 106 die vorhergesagte Ereignis-Antwort B 204 zur Verarbeitung geplant hat. Ähnlich sind Klon-Prozess 306 und 306 Klone des Master-Prozesses, innerhalb dessen die Spekulations-Maschine 106 die vorhergesagte Ereignis-Antwort C 306 und bzw. die vorhergesagte Ereignis-Antwort D 308 zur Verarbeitung geplant hat.
-
Zusätzlich wird ein verschiedener Klon-Speicherbereich 312 innerhalb des Speicherraums 110 für jeden der Klon-Prozesse 304–308 alloziert. In einer Ausführungsform teilt der Klon-Prozess 304–308 Daten, welche in dem Anwendungs-Speicherbereich 310 gespeichert sind, derart, dass nur Daten, welche zu modifizieren sind, d. h. Schreib-Daten, in dem entsprechenden Klon-Speicherbereich 312 gespeichert sind. In einer anderen Ausführungsform kloniert die Spekulations-Maschine 106, wenn sie den Klon-Prozess erzeugt, auch den Anwendungs-Speicherbereich 310 und speichert den klonierten Speicher in dem Klon-Speicherbereich 312, welcher dem Klon-Prozess entspricht. Ferner wird ein anderer Klon-I/O-Puffer 314 innerhalb des Speicherraums 110 für jeden des Klon-Prozesses 304–308 alloziert. Irgendwelche I/O-Operationen, welche mittels eines Klon-Prozesses initiiert sind, werden nicht durchgeführt und werden in dem entsprechenden Klon-I/O-Puffer 314 gepuffert.
-
Wenn die Ereignis-Antwort, welche als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten übereinstimmt, welche in den Klon-Prozessen 304–308 ausgeführt sind, dann wählt in einer Ausführungsform die Spekulations-Maschine 106 den Klon-Prozess, welcher mit der übereinstimmenden Ereignis-Antwort assoziiert ist, als den Master-Prozess aus. Irgendein anderer Klon-Prozess und der ursprüngliche Prozess, welcher die Ereignis-getriebene Anwendung 104 ausführt, werden dann abgebrochen und die Daten, welche den ausgewählten Klon-Prozess betreffen, werden an die Platte abgeschickt (committed) (nicht gezeigt). In einer alternativen Ausführungsform, wenn die Ereignis-Antwort, welche als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten, welche in den Klon-Prozessen 304–308 verarbeitet werden, übereinstimmt, dann absorbiert der Master-Prozess den Speicher und I/O-Modifikationen, welche mittels des Klon-Prozesses gemacht sind. Die Klon-Prozesse 304–308 werden dann abgebrochen.
-
In der Ausführungsform, wo der Klon-Prozess 304–308 Daten speichert, welche in dem Anwendungs-Speicherbereich 310 gespeichert sind, derart, dass nur Schreib-Daten in den entsprechenden Klon-Speicherbereichen 312 gespeichert sind, werden der Anwendungs-Speicherbereich 310 und der Klon-Speicherbereich 312, welcher dem ausgewählten Klon-Prozess entspricht, kombiniert, um den Speicherbereich zu erzeugen, welcher für den neuen Master-Prozess alloziert wird. Ferner werden I/O-Operationen, welche in dem I/O-Puffer 314 gepuffert sind, alloziert für den ausgewählten Klon-Prozess, durchgeführt. Diese I/O-Operationen umfassen Operationen an Platte, Netzwerk-Operationen, etc.
-
4 ist eine detailliertere Ansicht des Ausführungsraums 108 und des Speicherraums 110 von 1, gemäß einer anderen Ausführungsform der Erfindung. Wie es gezeigt ist, umfasst der Ausführungsraum 108 eine Master-virtuelle-Maschine (VM) 402, eine Klon-virtuelle-Maschine 404, eine Klon-virtuelle-Maschine 406 und eine Klon-virtuelle-Maschine 408. Jede der VMs 402–408 sind virtuelle-Maschine-Prozesse. Wie es auch gezeigt ist, umfasst der Speicherraum 110 einen Master-VM-Speicherbereich 410, Klon-VM-Speicherbereich 412 und Klon-I/O-Puffer 414.
-
In der in 4 illustrierten Ausführungsform führen Ereignis-Antworten, welche mittels der Ereignis-getriebenen Anwendung 104 ausgestellt sind, innerhalb der Master-VM 402 aus, an welche der Master-VM-Speicherbereich 410 innerhalb des Speicherraums 110 alloziert ist. Wenn sie eine vorhergesagte Ereignis-Antwort zur Verarbeitung ausstellt, erzeugt die Spekulations-Maschine 106 einen Klon der Master-VM 402, wie etwa den Klon VM 404, und stellt die vorhergesagte Ereignis-Antwort an die Klon-VM zur Verarbeitung aus. Den Klon-VMs 404–408 wird jeweils ein verschiedener Klon-VM-Speicherbereich 412 innerhalb des Speicherraums 110 alloziert. In einer Ausführungsform teilen die Klon-VMs 404–408 Daten, welche in dem VM-Speicherbereich 410 gespeichert sind, derart, dass nur Daten, welche zu modifizieren sind, d. h. Schreib-Daten, in dem entsprechenden VM-Speicherbereich 412 gespeichert sind. In einer anderen Ausführungsform kloniert die Spekulations-Maschine 106, wenn sie den Klon-Prozess erzeugt, auch den VM-Speicherbereich 410 und speichert den klonierten Speicher in dem VM-Speicherbereich 412, welcher dem Klon-Prozess entspricht. Ferner wird ein verschiedener Klon-I/O-Puffer 414 innerhalb des Speicherraums 110 für jeden des Klon-Prozesses 404–408 alloziert. Irgendwelche I/O-Operationen, welche mittels eines Klon-Prozesses initiiert sind, werden nicht durchgeführt und werden in dem entsprechenden Klon-I/O-Puffer 414 gepuffert.
-
In einer Ausführungsform, wenn die Ereignis-Antwort, welche als nächstes mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten, welche in den Klon-VMs 404–408 ausgeführt sind, übereinstimmt, dann wählt die Spekulations-Maschine 106 die Klon-VM, welche mit der übereinstimmenden Ereignis-Antwort assoziiert ist, als die Master-VM aus. Irgendwelche anderen Klon-VMs und die ursprüngliche Master-VM 402, welche in der Ereignis-getriebenen Anwendung 104 ausführen, werden dann abgebrochen und die Daten, welche die ausgewählte Klon-VM betreffen, werden abgeschickt bzw. übergeben (committed). Ferner werden I/O-Operationen, welche in dem I/O-Puffer 414 gepuffert sind, welche für die ausgewählte Klon-VM alloziert ist, durchgeführt. Diese I/O-Operationen umfassen Operationen an Platte, Netzwerk-Operationen, irgendwelche Operationen, welche einen externen Port betreffen, wie etwa einen Universal-Serial-Bus-(USB)-Port, etc.
-
In einer alternativen Ausführungsform, wenn die Ereignis-Antwort, welche als nächste mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der vorhergesagten Ereignis-Antworten übereinstimmt, welche in den Klon-VMs 404–408 verarbeitet werden, dann absorbiert die Master-VM 402 die Speicher-Modifikationen, welche mittels der ausgewählten Klon-VM gemacht sind. Ferner werden I/O-Operationen, welche in dem I/O-Puffer 414 gepuffert sind, welche für die ausgewählte Klon-VM alloziert ist, durchgeführt. Die Klon-VMs 404–408 werden dann abgebrochen.
-
Wichtiger Weise stellen die in 3 und 4 beschriebenen Ausführungsformen zwei verschiedene Level von Einkapselung bereit. Die Ausführungsform in 3 hat die Fähigkeit, Speicherraum und I/O-Teilsysteme über mehrere Prozesse hinweg zu klonieren. Die Ausführungsform in 4 hat die Fähigkeit, ein gesamtes System zu klonieren, um somit Spekulation für Ereignis-Antworten bereitzustellen, welche das Verhalten von zusätzlichen Komponenten in dem System entfernt von Speicher und Platte beeinflussen zu können.
-
5 ist ein Flussdiagramm von Verfahrensschritten zum spekulativen Ausführen von Operationen, welche Ereignis-Antworten betreffen, welche mittels einer Anwendung ausgestellt werden können, gemäß einer Ausführungsform der Erfindung. Obwohl die Verfahrensschritte im Zusammenhang mit den Systemen von 1–4 beschrieben sind, werden Fachleute in der Technik verstehen, dass irgendein System, welches konfiguriert ist, die Verfahrensschritte durchzuführen, in irgendeiner Ordnung, innerhalb des Geltungsbereichs der Erfindung ist.
-
Das Verfahren 500 beginnt bei Schritt 502, wo die Spekulations-Maschine 106, basierend auf dem momentanen Anwendungs-Zustand, welcher mit der Ereignis-getriebenen Anwendung 104 assoziiert ist, eine oder mehrere Ereignis-Antworten identifiziert, welche zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 als nächstes ausgestellt werden können. Wie vorher hierin beschrieben ist, können die eine oder die mehreren Ereignis-Antworten basierend auf der kürzlichsten Ereignis-Antwort, welche mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, basierend auf irgendwelchen Ereignissen, welche während der Ausführung der Ereignis-getriebenen Anwendung 104 erhoben bzw. erfolgt sind, basierend auf einer zuvor erfassten Ereignis-Antwort-Ausführungs-Historie, etc. identifiziert werden.
-
Bei Schritt 504 erzeugt die Spekulations-Maschine 106 für jede identifizierte Ereignis-Antwort einen verschiedenen Klon-Prozess von dem Master-Prozess, innerhalb dessen Ereignis-Antworten, welche mittels der Ereignis-getriebenen Anwendung 104 ausgestellt sind, ausführen. Jede identifizierte Ereignis-Antwort wird dann zur Verarbeitung innerhalb des entsprechenden Klon-Prozesses geplant. In einer Ausführungsform ist ein Klon-Prozess ein Prozess und in einer anderen Ausführungsform ist ein Klon-Prozess eine virtuelle Maschine.
-
Bei Schritt 506 bestimmt die Spekulations-Maschine 106, dass die nächste Ereignis-Antwort, welche zur Verarbeitung mittels der Ereignis-getriebenen Anwendung 104 ausgestellt ist, mit einer der Ereignis-Antworten übereinstimmt, welche bei Schritt 502 identifiziert sind. Die Spekulations-Maschine wählt dann bei Schritt 508 den Prozess aus, innerhalb dessen die nächste Ereignis-Antwort präventiv zur Verarbeitung als der Master-Prozess geplant wurde. Bei Schritt 510 bricht die Spekulations-Maschine 506 irgendwelche übrigen Klon-Prozesse und den ursprünglichen Master-Prozess ab.
-
In einer Ausführungsform werden die spekulativen Ausführungs-Techniken, welche hierin beschrieben sind, angewendet, um „Annullieren”(undo)-Operationen durchzuführen. Verschiedene Klon-Prozesse können verschiedene Zustände der Anwendung speichern und, auf die Ausstellung eines Annullieren-Ereignisses hin, kann ein Klon-Prozess, welcher den vorherigen Zustand der Anwendung speichert, als der Master-Prozess ausgewählt werden.
-
6 ist ein exemplarisches System, innerhalb dessen die Ereignis-getriebene Anwendung 104 und die Spekulations-Maschine 106 von 1 ausführen könnten, gemäß einer Ausführungsform der Erfindung. Wie es gezeigt ist, umfasst das System 600 einen Systemspeicher 602, einen externen Speicher 604, eine Zentral-Verarbeitungs-Einheit (CPU) 606, ein Eingabe-Gerät 610 und ein Anzeige-Gerät 612.
-
Der System-Speicher 602 umfasst die Ereignis-getriebene Anwendung 104, welche vorher hierin beschrieben ist. Der System-Speicher 602 ist ein Speicherraum, normalerweise willkürlicher-Zugriffs-Speicher (RAM), welcher temporär Software-Programme speichert, welche innerhalb des Systems 600 zu einer gegebenen Zeit ablaufen. Die CPU 606 führt eine Folge von gespeicherten Anweisungen aus, welche assoziiert sind mit und/oder übermittelt sind von den verschiedenen Elementen in dem Computer-System 600. Der externe Speicher 604 ist ein Speicher-Gerät, z. B. eine Festplatte, zum Speichern von Daten, welche mit der Ereignis-getriebenen Anwendung 104 assoziiert sind. Das Eingabe-Gerät 610 ist ein Endbenutzer-gesteuertes Eingabe-Gerät, z. B. eine Maus oder eine Tastatur, welches einem Benutzer erlaubt, verschiedene Aspekte der Ereignis-getriebenen Anwendung 140 zu manipulieren und welches Eingabe an die Ereignis-getriebene Anwendung 104 übermittelt, wie etwa Benutzer-Eingabe 102. Das Anzeige-Gerät 612 kann eine Kathodenstrahl-Röhre (CRT), eine Flüssigkristall-Anzeige (LCD) oder irgendein anderer Typ von Anzeigegerät sein.
-
Vorteilhafterweise vermindern die hierin beschriebenen Techniken mittels eines spekulativen Ausstellens von Ereignis-Antworten zur Verarbeitung die Gesamt-Wartezeit, wenn Ereignis-Antworten verarbeitet werden. Wenn die Ereignis-Antwort, welche zur Verarbeitung als nächstes ausgewählt ist, bereits spekulativ verarbeitet worden ist, dann ist keine nachfolgende Verarbeitung benötigt. Selbst Anwendungen, welche nicht gebaut sind, spekulative Ausführung zu unterstützen, können ferner in einer Weise ausgeführt werden, welche das spekulative Ausstellen von Ereignis-Antworten erlaubt. Mit anderen Worten können die hierin beschriebenen Techniken nachträglich auf existierende Ereignis-getriebene Anwendungen angewendet werden, um somit die Zeit verbrauchende Anforderung eines erneuten Herstellens bzw. Umstellens (refactoring) des Daten-Modells der existierenden Anwendung, um spekulative Ausführungen zu unterstützen, zu vermeiden.
-
Eine Ausführungsform der Erfindung kann als ein Programm-Produkt zur Benutzung mit einem Computer-System implementiert sein. Das Programm bzw. die Programme des Programm-Produkts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Verschiedenheit von Computer-lesbaren Speichermedien beinhaltet sein. Illustrative Computer-lesbare Speichermedien umfassen, sind jedoch nicht darauf beschränkt: (i) nicht-schreibbare Speichermedien (z. B. Nur-Lese-Speicher-Geräte innerhalb eines Computers, wie etwa CD-ROM-Platten, welche mittels eines CD-ROM-Laufwerks lesbar sind, Flash-Speicher, ROM-Chips oder irgendein Typ von Festkörper-nicht-volatilem-Halbleiter-Speicher) auf welchen Information permanent gespeichert ist; und (ii) schreibbare Speichermedien (z. B. Floppy-Disketten, innerhalb eines Disketten-Laufwerks oder eines Festplatte-Laufwerks oder irgendein Typ von Festkörperwillkürlicher-Zugriff-Halbleiter-Speicher), auf welchen veränderbare Information gespeichert ist.
-
Die Erfindung ist oben mit Bezug auf spezifische Ausführungsformen beschrieben worden. Fachleute in der Technik werden jedoch verstehen, dass verschiedene Modifikationen und Änderungen daran gemacht werden können, ohne von dem breiteren Geist und Geltungsbereich der Erfindung abzuweichen, wie in den angehängten Ansprüchen ausgeführt ist. Die vorangehende Beschreibung und Zeichnungen sind demgemäß in einem illustrativen anstatt in einem restriktiven Sinne zu betrachten.