DE112012004468T5 - Anwendungs-Level-Spekulative-Verarbeitung - Google Patents

Anwendungs-Level-Spekulative-Verarbeitung Download PDF

Info

Publication number
DE112012004468T5
DE112012004468T5 DE112012004468.1T DE112012004468T DE112012004468T5 DE 112012004468 T5 DE112012004468 T5 DE 112012004468T5 DE 112012004468 T DE112012004468 T DE 112012004468T DE 112012004468 T5 DE112012004468 T5 DE 112012004468T5
Authority
DE
Germany
Prior art keywords
event
event response
application
response
responses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112012004468.1T
Other languages
English (en)
Other versions
DE112012004468B4 (de
Inventor
Francesco Iorio
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.)
Autodesk Inc
Original Assignee
Autodesk Inc
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 Autodesk Inc filed Critical Autodesk Inc
Publication of DE112012004468T5 publication Critical patent/DE112012004468T5/de
Application granted granted Critical
Publication of DE112012004468B4 publication Critical patent/DE112012004468B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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 des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, als einen neuen Master-Prozess, und eines Abbrechens des Master-Prozesses und aller Kind-Prozesse außer dem Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist.

Description

  • 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 204208 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 304308 alloziert. In einer Ausführungsform teilt der Klon-Prozess 304308 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 304308 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 304308 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 304308 verarbeitet werden, übereinstimmt, dann absorbiert der Master-Prozess den Speicher und I/O-Modifikationen, welche mittels des Klon-Prozesses gemacht sind. Die Klon-Prozesse 304308 werden dann abgebrochen.
  • In der Ausführungsform, wo der Klon-Prozess 304308 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 402408 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 404408 wird jeweils ein verschiedener Klon-VM-Speicherbereich 412 innerhalb des Speicherraums 110 alloziert. In einer Ausführungsform teilen die Klon-VMs 404408 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 404408 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 404408 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 404408 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 404408 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 14 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.

Claims (20)

  1. Computer-implementiertes Verfahren zum spekulativen Verarbeiten von Anwendungs-Ereignis-Antworten, wobei das Verfahren aufweist: Identifizieren einer oder mehrerer Ereignis-Antworten, welche zur Verarbeitung mittels einer Anwendung ausgestellt werden könnte, welche mittels eines Master-Prozesses ausgeführt ist, welcher auf einem Rechengerät ausführt; für jede Ereignis-Antwort, Erzeugen eines Kind-Prozesses, um die Ereignis-Antwort zu verarbeiten; Bestimmen, dass eine erste Ereignis-Antwort, welche in der einen oder den mehreren Ereignis-Antworten umfasst ist, zur Verarbeitung mittels der Anwendung ausgestellt worden ist; Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist; und Abbrechen aller Kind-Prozesse außer dem Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist.
  2. Verfahren gemäß Anspruch 1, wobei die eine oder die mehreren Ereignis-Antworten basierend auf einem Anwendungs-Verarbeitungs-Zustand identifiziert sind, welcher eine momentane Ereignis-Antwort umfasst, welche vorher mittels der Anwendung ausgestellt wurde.
  3. Verfahren gemäß Anspruch 2, wobei Identifizieren der einen oder der mehreren Ereignis-Antworten aufweist Identifizieren zumindest einer Ereignis-Antwort, welche auf die momentane Ereignis-Antwort bezogen ist.
  4. Verfahren gemäß Anspruch 2, wobei Identifizieren der einen oder der mehreren Ereignis-Antworten aufweist Identifizieren zumindest einer Ereignis-Antwort, welche vorher zur Ausführung mittels der Anwendung nachfolgend auf die momentane Ereignis-Antwort ausgestellt ist.
  5. Verfahren gemäß Anspruch 1, wobei die eine oder die mehreren Ereignis-Antworten basierend auf einem Anwendungs-Verarbeitungs-Zustand identifiziert sind, welcher ein Ereignis umfasst, welches während der Ausführung der Anwendung erhoben ist.
  6. Verfahren gemäß Anspruch 1, wobei, für jede Ereignis-Antwort, Erzeugen des Kind-Prozesses aufweist Klonieren des Master-Prozesses und Planen der Ereignis-Antwort zur Ausführung innerhalb des Kind-Prozesses.
  7. Verfahren gemäß Anspruch 1, wobei der Master-Prozess konfiguriert ist, auf einen ersten Teil von Speicher zuzugreifen, und wobei der Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, konfiguriert ist, auf einen zweiten Teil von Speicher zuzugreifen, und wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Kombinieren des ersten Teils von Speicher und des zweiten Teils von Speicher.
  8. Verfahren gemäß Anspruch 1, wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Absorbieren des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, in den Master-Prozess.
  9. Verfahren gemäß Anspruch 1, wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Terminieren des Master-Prozesses und Abschicken des Kind-Prozesses, welche mit der ersten Ereignis-Antwort assoziiert ist, als den Master-Prozess.
  10. Verfahren gemäß Anspruch 1, wobei der Master-Prozess eine erste virtuelle Maschine aufweist, und wobei der Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, eine zweite virtuelle Maschine aufweist.
  11. Computer-lesbares Medium zum Speichern von Anweisungen, welche, wenn mittels eines Prozessors ausgeführt, den Prozessor veranlassen, spekulativ Anwendungs-Ereignis-Antworten zu verarbeiten, wobei das Verfahren aufweist: Identifizieren einer oder mehrerer Ereignis-Antworten, welche zur Verarbeitung mittels einer Anwendung ausgestellt werden könnte, welche mittels eines Master-Prozesses ausgeführt ist, welcher auf einem Rechengerät ausführt; für jede Ereignis-Antwort, Erzeugen eines Kind-Prozesses, um die Ereignis-Antwort zu verarbeiten; Bestimmen, dass eine erste Ereignis-Antwort, welche in der einen oder den mehreren Ereignis-Antworten umfasst ist, zur Verarbeitung mittels der Anwendung ausgestellt worden ist; Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist; und Abbrechen aller Kind-Prozesse außer dem Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist.
  12. Computer-lesbares Medium gemäß Anspruch 11, wobei die eine oder die mehreren Ereignis-Antworten basierend auf einem Anwendungs-Verarbeitungs-Zustand identifiziert sind, welcher eine momentane Ereignis-Antwort umfasst, welche vorher mittels der Anwendung ausgestellt wurde.
  13. Computer-lesbares Medium gemäß Anspruch 12, wobei Identifizieren der einen oder der mehreren Ereignis-Antworten aufweist Identifizieren zumindest einer Ereignis-Antwort, welche auf die momentane Ereignis-Antwort bezogen ist.
  14. Computer-lesbares Medium gemäß Anspruch 12, wobei Identifizieren der einen oder der mehreren Ereignis-Antworten aufweist Identifizieren zumindest einer Ereignis-Antwort, welche vorher zur Ausführung mittels der Anwendung nachfolgend auf die momentane Ereignis-Antwort ausgestellt ist.
  15. Computer-lesbares Medium gemäß Anspruch 11, wobei die eine oder die mehreren Ereignis-Antworten basierend auf einem Anwendungs-Verarbeitungs-Zustand identifiziert sind, welcher ein Ereignis umfasst, welches während der Ausführung der Anwendung erhoben ist.
  16. Computer-lesbares Medium gemäß Anspruch 11, wobei, für jede Ereignis-Antwort, Erzeugen des Kind-Prozesses aufweist Klonieren des Master-Prozesses und Planen der Ereignis-Antwort zur Ausführung innerhalb des Kind-Prozesses.
  17. Computer-lesbares Medium gemäß Anspruch 11, wobei der Master-Prozess konfiguriert ist, auf einen ersten Teil von Speicher zuzugreifen, und wobei der Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, konfiguriert ist, auf einen zweiten Teil von Speicher zuzugreifen, und wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Kombinieren des ersten Teils von Speicher und des zweiten Teils von Speicher.
  18. Computer-lesbares Medium gemäß Anspruch 11, wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Absorbieren des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, in den Master-Prozess.
  19. Computer-lesbares Medium gemäß Anspruch 11, wobei Abschicken des Kind-Prozesses, welcher mit der ersten Ereignis-Antwort assoziiert ist, aufweist Terminieren des Master-Prozesses und Abschicken des Kind-Prozesses, welche mit der ersten Ereignis-Antwort assoziiert ist, als den Master-Prozess.
  20. Computer-System, aufweisend: einen Speicher; und einen Prozessor, welcher konfiguriert ist, um: eine oder mehrere Ereignis-Antworten zu identifizieren, welche zur Verarbeitung mittels einer Anwendung ausgestellt werden könnten, welche mittels eines Master-Prozesses ausgeführt ist, welcher auf einem Rechengerät abläuft; für jede Ereignis-Antwort, einen Kind-Prozess zu erzeugen, um die Ereignis-Antwort zu verarbeiten; zu bestimmen, dass eine erste Ereignis-Antwort, welche in der einen oder den mehreren Ereignis-Antworten umfasst ist, zur Verarbeitung mittels der Anwendung ausgestellt worden ist; den Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, abzuschicken; und alle Kind-Prozesse außer dem Kind-Prozess, welcher mit der ersten Ereignis-Antwort assoziiert ist, abzubrechen.
DE112012004468.1T 2011-10-26 2012-10-25 Anwendungs-Level-Spekulative-Verarbeitung Active DE112012004468B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/282,059 2011-10-26
US13/282,059 US8739186B2 (en) 2011-10-26 2011-10-26 Application level speculative processing
PCT/US2012/061990 WO2013063319A1 (en) 2011-10-26 2012-10-25 Application level speculative processing

Publications (2)

Publication Number Publication Date
DE112012004468T5 true DE112012004468T5 (de) 2014-07-10
DE112012004468B4 DE112012004468B4 (de) 2018-07-12

Family

ID=48168515

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004468.1T Active DE112012004468B4 (de) 2011-10-26 2012-10-25 Anwendungs-Level-Spekulative-Verarbeitung

Country Status (4)

Country Link
US (1) US8739186B2 (de)
CN (1) CN104011682B (de)
DE (1) DE112012004468B4 (de)
WO (1) WO2013063319A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811371B2 (en) * 2012-06-29 2017-11-07 International Business Machines Corporation Concurrent execution of a computer software application along multiple decision paths
US20140180695A1 (en) * 2012-12-25 2014-06-26 Microsoft Corporation Generation of conversation to achieve a goal
GB2533414B (en) 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US11489845B1 (en) * 2019-09-24 2022-11-01 Menlo Security, Inc. Speculative rendering

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615127A (en) * 1994-11-30 1997-03-25 International Business Machines Corporation Parallel execution of a complex task partitioned into a plurality of entities
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6553488B2 (en) 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
JP3702814B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
EP1398699A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7415708B2 (en) * 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US7552318B2 (en) * 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US20060235927A1 (en) 2005-04-19 2006-10-19 Bhakta Dharmesh N System and method for synchronizing distributed data streams for automating real-time navigation through presentation slides
US8782671B2 (en) 2006-07-26 2014-07-15 Hewlett-Packard Development Company, L. P. Systems and methods for flexibly controlling resource usage by a driver domain on behalf of a virtual machine
GB2457341B (en) 2008-02-14 2010-07-21 Transitive Ltd Multiprocessor computing system with multi-mode memory consistency protection
US8140646B2 (en) * 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
US8726275B2 (en) 2009-12-18 2014-05-13 International Business Machines Corporation Selective partial cloning of virtual machines in a virtual computing environment
US20110239229A1 (en) 2010-03-26 2011-09-29 Microsoft Corporation Predicative and persistent event streams
US8386652B2 (en) 2010-11-12 2013-02-26 Apple Inc. Mobile computing device with adaptive response based on accessory firmware
US8751564B2 (en) 2011-04-19 2014-06-10 Echostar Technologies L.L.C. Reducing latency for served applications by anticipatory preprocessing
US9250969B2 (en) 2011-08-30 2016-02-02 At&T Intellectual Property I, L.P. Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory

Also Published As

Publication number Publication date
CN104011682A (zh) 2014-08-27
WO2013063319A1 (en) 2013-05-02
CN104011682B (zh) 2017-06-09
US20130111501A1 (en) 2013-05-02
US8739186B2 (en) 2014-05-27
DE112012004468B4 (de) 2018-07-12

Similar Documents

Publication Publication Date Title
DE112011104555B4 (de) Vektorkonfliktinstruktionen
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
EP2823392B1 (de) Spekulative verarbeitung auf anwendungsebene
DE102013221057B4 (de) System und Verfahren für Batch-Auswertungs-Programme
DE112012003496B4 (de) Schnelles Bereitstellen von virtuellen Maschinen auf der Grundlage von mehrdimensionalen Benutzeranforderungsmustern in einer Cloud
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE102012220029A1 (de) Spekulative Ausführung und Zurücksetzen
DE102013221052A1 (de) System und Verfahren für Batch-Auswertungs-Programme
DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE102013100179A1 (de) Verfahren und System zum Auflösen von Thread-Divergenzen
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE102007046947B4 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem
DE102012220267A1 (de) Rechenarbeitsverteilungs - Referenzzähler
DE112012004468B4 (de) Anwendungs-Level-Spekulative-Verarbeitung
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102013017980A1 (de) Auslösung einer Leistungsereigniserfassung durch parallele Zustandsbündel
DE102006046717B4 (de) Dynamisch migrierende Kanäle
DE19824289A1 (de) Pipelineverarbeitungsmaschine
DE102010053558A1 (de) Relationales Modellieren zur Leistungsanalyse von Mehrkernprozessoren unter Verwendung virtueller Tasks
DE102013017514A1 (de) Arbeitserzeugung für grafische verarbeitungseinheit auf basis von arbeitswarteschlangen
DE102013017983A1 (de) Technik zur Speicherung und Wiederherstellung eines Betriebszustands einer Stranggruppe

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: AUTODESK, INC., SAN FRANCISCO, US

Free format text: FORMER OWNER: AUTODESK, INC., SAN RAFAEL, CALIF., US