DE60028069T2 - Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen - Google Patents

Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen Download PDF

Info

Publication number
DE60028069T2
DE60028069T2 DE60028069T DE60028069T DE60028069T2 DE 60028069 T2 DE60028069 T2 DE 60028069T2 DE 60028069 T DE60028069 T DE 60028069T DE 60028069 T DE60028069 T DE 60028069T DE 60028069 T2 DE60028069 T2 DE 60028069T2
Authority
DE
Germany
Prior art keywords
translation
context
translated
commands
translation context
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.)
Expired - Lifetime
Application number
DE60028069T
Other languages
English (en)
Other versions
DE60028069D1 (de
Inventor
David Seattle KEPPEL
Robert Sunnyvale CMELIK
Robert Palo Alto BEDICHEK
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.)
Intellectual Ventures Holding 81 LLC
Original Assignee
Transmeta 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 Transmeta Inc filed Critical Transmeta Inc
Application granted granted Critical
Publication of DE60028069D1 publication Critical patent/DE60028069D1/de
Publication of DE60028069T2 publication Critical patent/DE60028069T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/20Comparing separate sets of record carriers arranged in the same sequence to determine whether at least some of the data in one set is identical with that in the other set or sets
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Steroid Compounds (AREA)

Description

  • ALLGEMEINER STAND DER TECHNIK
  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft Computersysteme und insbesondere Vorrichtungen und ein Verfahren zum Verbessern der Leistung eines Mikroprozessors beim Ausführen von Programmen, die aus Programmen übersetzt wurden, die für die Ausführung durch einen anderen Prozessor vorgesehen sind.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Vor kurzem wurde ein neuer Mikroprozessor entwickelt, der einen einfachen, aber schnellen Host-Prozessor (ein "Morph-Host" genannt) und Software (als "Codemorphingsoftware" bezeichnet) kombiniert, um Anwendungsprogramme auszuführen, die für einen Zielprozessor entwickelt wurden, der einen anderen Befehlssatz hat als der Morph-Host-Prozessor. Der Morph-Host-Prozessor führt die Codemorphingsoftware aus, welche die Zielanwendungsprogramme dynamisch in Host-Prozessor-Befehle übersetzt, die in der Lage sind, den Zweck der Zielanwendungsprogramme zu erfüllen. Die Befehle werden im Verlauf ihrer Übersetzung in einem Übersetzungspuffer gespeichert, wo ohne weitere Übersetzung auf sie zugegriffen werden kann. Obgleich die anfängliche Übersetzung eines Programms langsam ist, fallen nach der Übersetzung viele der Schritte weg, die normalerweise erforderlich sind, damit Hardware ein Programm ausführen kann. Der neue Mikroprozessor hat bewiesen, dass ein einfacher, schneller Prozessor, der für einen geringen Leistungsaufwand ausgelegt ist, in der Lage ist, übersetzte "Ziel"-Befehle mit einer Rate auszuführen, die derjenigen des "Ziel"-Prozessors, für den die Programme geschrieben wurden, gleichwertig ist.
  • Das Problem der Übersetzung wird durch die verschiedenen Unterbrechungen und Ausnahmen verkompliziert, die durch die Hardware eines Zielcomputers und dessen Betriebssystem ausgeführt werden, damit das Computersystem arbeiten kann. Wenn während des Betriebes eines Zielcomputers eine Zielausnahme gemacht wird, so muss der Zustand des Computers zum Zeitpunkt der Ausnahme – in der Regel durch Aufrufen einer Mikrocodesequenz – gespeichert werden, um die Operation auszuführen; das richtige Ausnahme-Steuerprogramm muss aufgerufen werden; die Ausnahme muss behandelt werden; dann muss der richtige Punkt in dem Programm gefunden werden, um das Programm fortsetzen zu können. Oft erfordert dies, dass das Programm zu dem Zustand des Zielcomputers an dem Punkt zurückkehrt, an dem die Ausnahme gemacht wurde. Die Ergebnisse, die durch die Hardware und Software des Zielcomputers erbracht werden, um diese Operationen auszuführen, müssen auf die eine oder andere Weise durch den Prozess der Übersetzung erbracht werden, damit der Morph-Host-Prozessor in der Lage ist, richtig auf diese Ausnahmen zu reagieren.
  • Um Programme, die für andere Prozessoren geschrieben wurden, mit einer schnellen Rate laufen lassen zu können, enthält der Morph-Host-Prozessor eine Anzahl von Hardware-Erweiterungen. Eine dieser Erweiterungen ist ein mit Gattern ausgestatteter Datenlagerpuffer, der vorübergehend Speicherdatenlager speichert, die aus der Ausführung der übersetzten Befehlssequenz in dem Übersetzungspuffer resultieren. Eine zweite Erweiterung ist ein Satz Hostregister (zusätzlich zu normalen Arbeitsregistern), die den Zustand des Zielprozessors am Beginn einer Sequenz aus Zielbefehlen, die übersetzt werden, speichern. Sequenzen aus Zielbefehlen werden in Host-Befehle übersetzt und ausgeführt. Die Sequenzen beginnen und enden an Punkten, an denen der Ziel-Zustand bekannt ist. Wenn die übersetzten Befehle ausgeführt werden, ohne dass eine Ausnahme entsteht, so werden die Speicherdatenlager, die durch die Ausführung der übersetzten Host-Befehle erzeugt wurden, durch einen Übergabe-Befehl im Speicher gespeichert (an den Speicher übergeben); und die Register, die den Ziel-Zustand gespeichert haben, werden auf den Ziel-Zustand an dem Punkt aktualisiert, an dem die Sequenz beendet war.
  • Wenn es jedoch während der Ausführung der Sequenz aus Host-Befehlen zu einer Ausnahme kommt, so stoppt die Verarbeitung, und die gesamte Operation kann an den Beginn der Sequenz aus Zielbefehlen zurückgeführt werden, an dem ein bekannter Zustand des Zielprozessors existiert. Dies gestattet eine rasche und korrekte Behandlung von Ausnahmen, zu denen es während der dynamischen Übersetzung und Ausführung von Befehlen kommt.
  • Man wird feststellen, dass das Verfahren, mit dem der neue Mikroprozessor die Ausführung von Übersetzungen mittels Ablegen der durch die Ausführung entstandenen Ergebnisse in einem temporären Speicher bis zum Ende der Ausführung der Übersetzung abwickelt, praktisch ein schnelles Spekulationsverfahren ist. Der neue Mikroprozessor verwendet praktisch den gleichen Schaltungsaufbau zum Spekulieren über die Ergebnisse anderer Operationen. Zum Beispiel kann man durch vorübergehendes Speichern der Ergebnisse der Ausführung von Befehlen, die durch ein Software-Steuerprogramm anhand naiv übersetzter Befehle umgeordnet wurden, eine nachdrücklichere Umordnung erreichen, als es im Stand der Technik bisher versucht wurde. Wenn eine solche umgeordnete Befehlssequenz so ausgeführt wird, dass ein richtiges Ergebnis entsteht, so können die aus der Ausführung der umgeordneten Sequenz entstandenen Speicherdatenlager an den Speicher übergeben werden, und der Ziel-Zustand kann aktualisiert werden. Wenn die umgeordnete Sequenz während der Ausführung eine Ausnahme erzeugt, so kann der Zustand des Prozessors auf den Ziel-Zustand am Beginn der Sequenz zurückgeführt werden, und es kann eine konservativere Vorgehensweise bei der Ausführung der Sequenz verwendet werden.
  • Eines der vorteilhaftesten Merkmale des neuen Mikroprozessors ist seine Fähigkeit, lange Sequenzen aus übersetzten Befehlen miteinander zu verknüpfen. Nachdem kurze Sequenzen aus Zielbefehlen übersetzt wurden und festgestellt wurde, dass sie ohne Ausnahme ausgeführt werden, ist es möglich, diese kurzen Sequenzen in großer Zahl zu langen Befehlssequenzen zu verknüpfen. Dadurch kann ein übersetztes Programm mit hoher Geschwindigkeit ausgeführt werden, weil der Mikroprozessor nicht sämtliche Schritte zu durchlaufen braucht (wie beispielsweise das Suchen jeder der kürzeren übersetzten Sequenzen), die normalerweise von Hardware-Prozessoren bei der Ausführung von Befehlen ausgeführt werden. Es kann sogar eine noch höhere Geschwindigkeit erreicht werden, als man erwarten könnte, weil es nach der Verknüpfung langer Sequenzen oft möglich ist, dass ein Optimierer viele der Schritte aus den langen Sequenzen löscht, ohne das Endergebnis zu verändern. Hardware-Optimierer sind noch nie in der Lage gewesen, Befehlssequenzen zu optimieren, die lang genug gewesen wären, um Strukturen zu ermöglichen, die eine signifikante Optimierung hätten erkennen lassen.
  • Immer, wenn ein Prozessor Befehle ausführt, läuft er in einem bestimmten Modus, der verschiedene Merkmale aufweist. Die Befehle einer Anwendung müssen im richtigen Modus ausgeführt werden, um kontinuierlich die richtigen Ergebnisse zu erbringen. Diese Merkmale eines Modus' sind praktisch der Hintergrund für die Befehle und können als ein Teil der Befehle angesehen werden. Wenn ein Prozessor Befehle ausführt, so können bestimmte dieser Befehle die Merkmale und damit den Betriebsmodus ändern. Dies erfordert, dass eine Anzahl von Merkmalen des Mikroprozessors anders eingestellt wird, um diese verschiedenen Modi abzuwickeln. Die Merkmale des Maschinenstatus', die korrekt eingestellt sein müssen, damit Befehle zu dem richtigen Ergebnis führen, nennt man in der Regel den Kontext, in dem die Befehle ausgeführt werden. Man kann sagen, dass der Kontext die Gesamtheit des momentanen Status' der Maschine darstellt, der erforderlich ist, damit die Ausführung von Befehlen zum richtigen Ergebnis führt.
  • Ein wesentliches Problem, dem sich der neue Mikroprozessor gegenübersieht, wenn er Befehlssequenzen, die für einen Zielprozessor mit einem ersten Befehlssatz gedacht sind, in eine Sequenz aus Host-Befehlen eines anderen Befehlssatzes übersetzt, ergibt sich aus der Notwendigkeit, während des Übersetzens und Laufens den Kontext beizubehalten.
  • Es gibt eine große Anzahl verschiedener Dinge, die den Kontext beim Ausführen eines Programms bilden können. Die Nennung nur einiger weniger der vielen Elemente, die den Kontext bilden können, veranschaulicht, wie kompliziert das Problem ist. Der Fachmann weiß, dass es buchstäblich Hunderte möglicher Kontext-Elemente gibt.
  • Viele Mikroprozessoren sind dafür ausgelegt, mit Anwendungsprogrammen zu funktionieren, die Befehle mit Wortlängen von acht Bit, sechzehn Bit und zweiunddreißig Bit – je nach der Kapazität des verwendeten Betriebssystems – haben. Oft werden die gleichen Befehle bei Anwendungen verwendet, die mit Befehlen von verschiedenen Wortlängen geschrieben wurden. Wenn jedoch der Mikroprozessor versucht, 16-Bit-Befehle auszuführen, während seine Merkmale für die Ausführung von 32-Bit-Befehlen eingestellt sind, so werden die Befehle vermutlich nicht richtig ausgeführt. Das heißt, die Befehlswortlänge kann als ein Zielprozessor-Kontext für Ausführungszwecke angesehen werden.
  • Als ein weiteres Beispiel werden Befehle auf verschiedenen Genehmigungsebenen ausgeführt. Das heißt, einige Befehle können nur durch jemanden ausgeführt werden, der die höchste Zugangsstufe besitzt. Andere Befehle können durch Benutzer auf einer niedrigeren Stufe sowie durch Benutzer auf einer höheren Stufe ausgeführt werden. Beim Ausführen übersetzter Befehle müssen die gleichen Zugangsstufen beibehalten bleiben, damit Anwendungen nicht mit Objekten von nicht-zugehörigen Anwendungen in Konflikt geraten.
  • Auf Intel X86 basierende Mikroprozessoren gestatten es, dass Anwendungen angeben können, wo die verschiedenen Abschnitte (Segmente) von Code und Daten im Speicher gespeichert werden. Zum Beispiel kann ein Programm Basisadressen und Längen für Segmente des Programms angeben, so dass ein Codesegment an einer Basisadresse beginnt und sich durch eine Speichermenge hindurch fortsetzt, während ein Datensegment an einer anderen Basisadresse beginnt und eine andere Speichermenge beinhaltet. Alternativ kann ein Programm ein einzelnes Pauschalsegment zuweisen, das zum Speichern von Befehlen, Daten und sonstigen Elementen des Programms zu verwenden ist. Des Weiteren können alle Segmente für ein bestimmtes Programm an derselben Basisadresse beginnen, jedoch zu verschiedenen Endadressen reichen. Folglich ist die Anordnung von verwendeten Basisadressen ein sehr wichtiges Merkmal bei der Ausführung von Befehlen. Eine Verwechslung der Speicherbereiche, die für verschiedene Verwendungszwecke zugewiesen wurden, verhindert wahrscheinlich, dass ein Programm Befehle mit den richtigen Ergebnissen ausführt. Das heißt, dies kann ein wichtiges Kontextelement sein.
  • Wenn eine Anwendung dafür ausgelegt ist, mit aktiviertem Seitenaustausch ausgeführt zu werden, dann muss die Anwendung eventuell auftretende Seitenaustausch-Ausnahmen zulassen. Wenn eine Anwendung für abgeschalteten Seitenaustausch ausgelegt ist, so kann es zu keinen Seitenaustausch-Ausnahmen kommen. Seitenaustausch kann also ein wichtiges Kontextelement sein.
  • Es gibt viele weitere Merkmale, die die gleichen sein müssen, wann immer die Befehle so ausgeführt werden, wie sie kompiliert wurden, damit die Befehle die richtigen Ergebnisse erbringen. Bei komplizierten Befehlssätzen wie jenen, die von Intel X86-Prozessoren verwendet werden, ist die Zahl der Merkmale, die einen Kontext bilden, recht groß.
  • Wie bei der Ausführung von Befehlen durch den Zielprozessor ist es erforderlich, dass Host-Befehle, die aus Zielbefehlen übersetzt werden, den Kontext des ursprünglichen Prozessors beibehalten, für den die Zielbefehle vorgesehen waren, wenn diese übersetzten Befehle ausgeführt werden, damit das Host-System zu den gleichen Ergebnissen kommt. Weil diese Kontextelemente, die anhand der Befehle zu anderen Ergebnissen führen können, von der Übersetzung bis zur Ausführung konstant bleiben müssen, würde dies augenscheinlich erfordern, dass buchstäblich Hunderte Kontextelemente zu einem Bestandteil jeder Übersetzung gemacht werden müssten, um zu gewährleisten, dass die hervorgebrachten Ergebnisse die richtigen sind.
  • Obgleich es beim Ausführen von Befehlen in einem Prozessor von entscheidender Bedeutung ist, richtige Ergebnisse hervorzubringen, ist es ebenso wünschenswert, Befehle so schnell wie möglich auszuführen. Dies geschieht im Allgemeinen durch Erzeugen von Code, der so effizient wie möglich abläuft. Der Kontext oder Maschinenzustand steuert, wie effizient der Code gemacht werden kann. Es gibt viele Merkmale des Maschinenzustands, in dem Befehle ausgeführt werden, die sich auf die Effizienz der Übersetzung und Ausführung auswirken und den Ablauf der Befehle beschleunigen können oder eine sonstige wünschenswerte Auswirkung auf die Ausführung haben. In allen Fällen ist es wichtig, dass Befehle, die in einem bestimmten Modus in dem Ziel-Mikroprozessor ausgeführt werden, in einer Umgebung ausgeführt werden, deren Merkmale so eingestellt sind, dass Befehle in dem gleichen Modus in dem Host-System ausgeführt werden. Des Weiteren ist es wichtig, dass der Übersetzungs kontext, in dem die Optimierung der Übersetzung des Zielcodes erfolgt, bei der Ausführung dieses optimierten Codes beibehalten bleibt.
  • Folglich ist es wünschenswert, Vorrichtungen und Verfahren bereitzustellen, die es einem Mikroprozessor, der Befehle ausführt, die aus Befehlen übersetzt wurden, die für einen Zielprozessor vorgesehen sind, der einen anderen Befehlssatz hat, ermöglichen, den Kontext des Zielprozessors beizubehalten, so dass die Ausführung der übersetzten Befehle zu den richtigen Ergebnissen führt.
  • Es ist gleichermaßen wünschenswert, dass die Geschwindigkeit, die durch die von dem neuen Mikroprozessor ausgeführte dynamische Übersetzung und Optimierung gewährleistet wird, in Rahmen der Sicherstellung, dass die Übersetzung in dem gleichen Kontext ausgeführt wird wie der, für den sie ursprünglich vorgesehen war, aufrecht erhalten bleibt.
  • "DAISY/390: Full System Binary Translation of IBM System/390", Michael Gschwind, Kemal Ebcioglu, Erik Altman, Sumedh Sathaye, IBM Research Report RC22027, Seiten 1 bis 45, beschreibt ein Verfahren zum Übersetzen von Befehlen aus einer Architektur in eine andere, wobei ein Übersetzungskontext für einen Übersetzungsschritt ausgewählt wird, wenn Speicheradressen formuliert werden.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Aspekte der Erfindung sind in den begleitenden Ansprüchen dargelegt.
  • Es ist wünschenswert zu gewährleisten, dass die übersetzten Befehle in dem gleichen Übersetzungskontext ausgeführt werden wie der, in dem sie ursprünglich übersetzt wurden, und dies wann immer möglich ohne Verlangsamung der Ausführung der übersetzten Befehle zu tun.
  • Ein Verfahren gemäß einer bevorzugten Ausführungsform der Erfindung behält den Übersetzungskontext für jeden Abschnitt von übersetzten Befehlen bei, vergleicht den Übersetzungskontext, in dem der Morph-Host arbeitet, wann immer ein neuer Abschnitt von übersetzten Befehlen ausgeführt werden soll, mit dem Übersetzungskontext beim Übersetzen des Abschnitts aus übersetzten Befehlen, gestattet die Ausführung, wenn die Übersetzungskontexte die gleichen sind, und erzwingt eine Suche nach einer anderen Übersetzung oder eine Neuübersetzung der ursprünglichen Befehle, aus denen der Abschnitt der übersetzten Befehle abgeleitet wurde, wenn die Übersetzungskontexte verschieden sind.
  • Merkmale der Erfindung werden anhand des Studiums der folgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen besser verstanden. In den Zeichnungen werden gleichartige Elemente in den verschiedenen Ansichten mit den gleichen Bezeichnungen versehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Flussdiagramm, das ein Verfahren gemäß einer bevorzugten Ausführungsform der Erfindung veranschaulicht,
  • 2 ist ein Schaubild, das die Schritte veranschaulicht, die zur Ausführung eines bestimmten Befehls erforderlich sind.
  • 3 ist ein Flussdiagramm, das ein Verfahren zur Durchführung einer bevorzugten Ausführungsform der Erfindung veranschaulicht.
  • 4 ist ein Flussdiagramm, das einen Abschnitt des Verfahrens gemäß einer bevorzugten Ausführungsform der Erfindung veranschaulicht.
  • 5 ist ein Flussdiagramm, das einen anderen Abschnitt des Verfahrens gemäß einer bevorzugten Ausführungsform der Erfindung veranschaulicht.
  • 6 ist ein Schaubild, das Kontextdarstellungen gemäß einer bevorzugten Ausführungsform der Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Wie oben bereits in einigem Detail beschrieben wurde, führt der neue Mikroprozessor Codemorphingsoftware aus, die Sequenzen aus Zielbefehlen in Sequenzen aus Host-Befehlen übersetzt, diese Sequenzen aus übersetzten Befehlen in einem Übersetzungspuffer zur Wiederverwendung speichert, versucht, diese Sequenzen aus übersetzten Befehlen auszuführen, Zustand und Speicher aktualisiert, wenn übersetzte Sequenzen ausgeführt werden, um ein richtiges Ergebnis zu erbringen, und die Folgen einer versuchten Ausführung von Sequenzen aus übersetzten Befehlen, deren Ausführung zu keinem korrekten Ergebnis führt, verwirft. Die gespeicherten Sequenzen aus übersetzten Befehlen können optimiert und oft miteinander verknüpft werden, so dass lange Sequenzen aus übersetzten Befehlen entstehen. Diese langen Sequenzen können weiter optimiert werden, um ihre Länge zu reduzieren und ihre Ausführungseffizienz zu steigern, so dass der neue Prozessor Operationen oft viel schneller ausführen kann als die ursprünglichen Übersetzungen.
  • Damit eine Sequenz aus übersetzten Befehlen zu dem Ergebnis führt, das durch die ursprünglichen Zielbefehle hervorgebracht wurde, muss der neue Prozessor jeden der Zielbefehle richtig decodieren. Das bedeutet, dass der neue Prozessor gewährleisten muss, dass die übersetzten Befehle den gesamten Kontext der ursprünglichen Befehle enthalten, so dass Sinn und Inhalt jener ursprünglichen Befehle vollständig übersetzt werden. Zum Beispiel muss eine Übersetzung in der Lage sein, Informationen zu bestimmen, die den Segmenttyp, ihre Basisadresse und ihren Umfang definieren, damit korrekte Speicherzugriffe erfolgen können. Eine Übersetzung muss in der Lage sein zu bestimmen, ob während der Ausführung Seitenaustausch aktiviert ist, um zu wissen, wie Adressen berechnet werden und ob Seitenaustausch-Ausnahmen akzeptiert werden sollen. Eine Übersetzung muss in der Lage sein, alle sonstigen Kontextelemente zu bestimmen, die es ermöglichen, das Ergebnis, das durch die Ziel-Sequenz erreicht wird, aus der sie übersetzt wurde, zu erreichen, wenn die übersetzte Sequenz durch den Host-Prozessor ausgeführt wird.
  • Zum Beispiel befiehlt ein Befehl wie beispielsweise der folgende für einen X86-Prozessor:
    add $eax 4($ebp);
    einem X86-Prozessor, zu dem Wert in dem "ebp"-Register Vier zu addieren, um einen Segmentversatz zu bestimmen. Dieser Segmentversatz wird überprüft, um zu bestimmen, ob er innerhalb der Segmentgrenzen für das Speichersegment, auf das zugegriffen wird (das Stapelsegment), liegt. Außerdem überprüft der X86-Prozessor, ob der Befehl das Speichersegment, auf das zugegriffen wird, lesen und/oder beschreiben darf. Und schließlich wird der Segmentversatz zu der Segmentbasis addiert, um eine lineare Adresse zu erzeugen, die ihrerseits dafür verwendet, die physikalische Adresse der Speicherposition, auf die durch den Befehl zugegriffen wird, zu bestimmen. Die physikalische Adresse wird dann dafür verwendet, den Wert abzurufen, der in der Speicherposition gespeichert ist, und den Speicherwert zu dem Wert in dem "eax"-Register zu addieren.
  • Zusätzlich zu diesen Elementen des Befehls gibt es aber noch eine große Zahl impliziter Elemente. Zum Beispiel impliziert die Verwendung des "ebp"-Registers hier die Verwendung des Stapelsegments. Die Verwendung eines anderen Registers könnte die Verwendung eines anderen Segments implizieren.
  • X86-Segmente können "nach oben wachsen" oder "nach unten wachsen". Stapelsegmente wachsen häufig nach unten, während andere Segmente gewöhnlich nach oben wachsen. Die Feststellung, ob ein Segmentversatz für ein bestimmtes Segment valid ist, hängt davon ab, ob das Segment, auf das zugegriffen wird, nach oben wächst oder nach unten wächst. Für ein nach oben wachsendes Segment reichen die validen Versatzbereiche von 0 bis zur Segmentgrenze. Für ein nach unten wachsendes Segment reichen die validen Versatzbereiche von der Segmentgrenze bis zum größtmöglichen Versatz (216 – 1) für 16-Bit-Segmente und (232 – 1) für 32-Bit-Segmente.
  • Wenn die lineare Adresse berechnet wurde, so wird ermittelt, ob Seitenaustausch aktiviert ist. Wenn nicht, so ist die lineare Adresse die physikalische Adresse der Speicherdaten. Wenn Seitenaustausch aktiviert ist, so muss die physikalische Adresse berechnet werden. In beiden Fällen müssen die Grenzen des Speichersegments getestet werden, um zu bestimmen, ob die Adresse gültig ist. Und schließlich wird auf die Daten zugegriffen, und sie werden zu dem Wert in dem "eax"-Register addiert.
  • Das heißt, für diesen einfachen Befehl sind das Wissen, dass das "ebp"-Register ein Stapelregister ist, die Basisadresse des Stapels im Speicher, der Bereich valider Versatzbereiche für das Segment in Abhängigkeit davon, ob das Segment nach oben wächst oder nach unten wächst, ob Seitenaustausch aktiviert ist, der Typ des Speichersegments, das adressiert wird, und seine Basisadresse allesamt Merkmale, aus denen ein Kontext besteht, und müssen bekannt sein, damit die übersetzten Befehle in der Lage sind, bei Ausführung die Operation richtig durchzuführen.
  • Wenn ein Interpretierer einen Ziel-Befehl ausführt, so muss er alle diese impliziten (d. h. Hintergrund-)Schritte und Überprüfungen ausführen, um den Befehl richtig auszuführen. Die impliziten Schritte und Überprüfungen müssen explizit mit möglicherweise hohem Aufwand ausgeführt werden. Das gleiche würde für eine naive Übersetzung eines Ziel-Befehls in Host-Befehle gelten.
  • Wie dem Fachmann bewusst ist, können Befehle den Kontext, in dem Befehle ausgeführt werden, verändern, indem eines der Merkmale verändert wird, die einen Betriebsmodus bilden. Folglich muss der neue Prozessor Befehle verfolgen und gewährleisten, dass sich Kontextelemente innerhalb der übersetzten Sequenz ändern, wenn ein Ziel-Befehl den Kontext ändert, in dem die Sequenz aus übersetzten Befehlen ausgeführt werden soll. Auf diese Weise wird der Kontext der übersetzten Sequenz richtig für den neuen Prozessor dargestellt, wenn die übersetzte Sequenz fertig ausgeführt ist.
  • Doch es muss nicht nur jede Sequenz aus übersetzten Befehlen die Informationen enthalten, anhand derer alle erforderlichen Merkmale, aus denen ein Kontext besteht, bestimmt werden können. Wann immer eine Sequenz aus übersetzten Befehlen richtig ausgeführt ist und eine nächste Sequenz ausgeführt werden soll, muss der neue Prozessor gewährleisten, dass der Kontext, in dem er momentan arbeitet, der Kontext ist, der für die richtige Ausführung des Beginns der nächsten Sequenz benötigt wird. Das heißt, der neue Prozessor muss den Kontext prüfen, der am Ende der ersten Sequenz aus übersetzten Befehlen vorhanden ist, um zu gewährleisten, dass er der gleiche ist wie der Kontext, der von der nächsten Sequenz aus übersetzten Befehlen benötigt wird, bevor er mit dem Ausführen der nächsten Sequenz beginnen kann.
  • In ähnlicher Weise muss der neue Prozessor, um zwei Sequenzen aus übersetzten Befehlen zu einer einzelnen Sequenz zu verknüpfen, sicherstellen, dass der Kontext, in dem die erste Sequenz die Ausführung beendet, der gleiche ist wie der Kontext, in dem die Sequenz, mit der sie verknüpft werden soll, mit dem Ausführen beginnt.
  • Wie zu erkennen ist, führt die Notwendigkeit, sämtliche Kontextelemente in jede Sequenz aus übersetzten Befehlen einzubinden und den Kontext jeder neuen Sequenz zu überprüfen, bevor mit der Ausführung begonnen wird, zu keinem effizienten Code.
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung überwinden dieses Problem und erzeugen einen Code, der effizient mit einer Rate ausgeführt wird, der mit der Rate zu vergleich ist, mit der ein Zielprozessor den gleichen Code ausführt. Ausführungsformen der vorliegenden Erfindung stützen sich auf die Eigenschaft der Örtlichkeit, einen Code zu erzeugen, der effizienter ausgeführt werden kann.
  • Genauer gesagt, besteht in den meisten Fällen die Tendenz, dass die Befehle, die ein Prozessor in einem Prozess oder Programm ausführt, mehr als einmal ausgeführt werden oder die meiste Zeit mit anderen Befehlen ausgeführt werden. Das hat zur Folge, dass der Kontext von einer Befehlssequenz zur nächsten ähnlich oder identisch ist. Zum Beispiel hängen viele Kontextelemente von dem konkreten Speichersegment ab, auf das zugegriffen wird. Eine Segmentbasisadresse und ein Segmentumfang, ob das Segment nach oben oder nach unten wächst, und ob das Segment beschreibbar ist oder nur gelesen werden kann, sind allesamt Elemente, die von dem Segment, auf das zugegriffen wird, abhängen. Diese Elemente sind die gleichen, wenn das Segment von einer Sequenz zur nächsten das gleiche ist. In den meisten Fällen ist ein Speichersegment, das für eine erste Sequenz verwendet wird, das gleiche wie das Segment, das für eine nächste Sequenz verwendet wird. Andere Kontextelemente weisen ebenfalls das Merkmal der Örtlichkeit auf. Die Eigenschaft der Örtlichkeit gestattet es bevorzugten Ausführungsformen der vorliegenden Erfindung, davon auszugehen, dass der Kontext von einer Sequenz zur nächsten Sequenz der gleiche ist.
  • Die Annahme, dass der Kontext der gleiche ist, gestattet es dem neuen Prozessor beim Übersetzen einer Befehlssequenz, den Kontext auf die eine oder andere Weise als eine Invariante darzustellen, um eine Übersetzung ordnungsgemäß auszuführen. Anstatt jeden der Tests zu durchschreiten, die erforderlich sind, um festzustellen, dass der Kontext für die Übersetzung der richtige ist, überprüft der Prozessor dann lediglich die Darstellung, um festzustellen, dass der gesamte Kontext der gleiche ist. Wenn er der gleiche ist, so kann die übersetzte Sequenz ausgeführt werden. Wenn er nicht der gleiche ist, so sucht der Prozessor nach einer anderen Übersetzung, die den Kriterien entspricht. Wenn keine gefunden wird, so muss eine neue Übersetzung erzeugt werden. Das allgemeine Verfahren ist in dem Flussdiagramm von 1 veranschaulicht.
  • Es ist zu sehen, dass diese Verwendung der Eigenschaft der Örtlichkeit es ermöglicht, eine Sequenz aus übersetzten Befehlen um jene Befehle zu verkürzen, die durch die Kontextelemente, die als Invarianten behandelt werden, impliziert werden. 2 veranschaulicht eine Ablauffolge, in der die Schritte dargestellt sind, die nötig sind, damit ein Interpretierer die Schritte der oben beschriebenen Addierfunktion ausführen kann. Wie zu sehen ist, sind wenigstens zehn dieser Schritte Schritte, von denen der Kontext verlangt, dass sie in die Sequenz aufgenommen werden, um zu gewährleisten, dass die Operation so ausgeführt wird, dass das gleiche Ergebnis entsteht wie bei der Addierfunktion. Jene Operationen, die mit einem Sternchen markiert sind, können aus der Befehlssequenz herausgenommen und auf irgend eine Weise am Beginn der übersetzten Sequenz dargestellt werden. Zum Beispiel könnten Kontextelemente, die von einem oder dem anderen zweier Zustände sind, jeweils durch ein einzelnes Bit in einer vorgegebenen Position einer ersten Kontextdarstellung dargestellt werden (zum Beispiel ein Vierfachwort), während Merkmale mit einer größeren Anzahl von Zuständen eine größere Anzahl von Bits in anderen vorgegeben Positionen des Vierfachwortes erfordern könnten.
  • 3 ist ein Flussdiagramm, das den Betrieb des neuen Prozessors beim Beenden der Ausführung einer ersten Sequenz aus übersetzten Befehlen und dem Beginnen einer nächsten Sequenz veranschaulicht. Der erste veranschaulichte Schritt ist eine Prüfung des Kontexts der nächsten Befehlssequenz. Der neue Prozessor sieht sich seine momentane Kontextdarstellung an (der Kontext, mit dem die Maschine arbeitete, als die erste Sequenz vollendet wurde), und vergleicht diesen Kontext mit der Kontextdarstellung der nächsten Sequenz. Wenn der Kontext vollkommen der gleiche ist, so wird die nächste Sequenz aus übersetzten Befehlen in dem gleichen Kontext wie die vorherige Sequenz ausgeführt. Dadurch fallen sämtliche Schritte fort, die in einer vorherigen Sequenz benötigt wurden, um zu bestimmen, ob der Kontext der richtige war. Anstatt die Schritte von 2 auszuführen, die mit einem Sternchen markiert sind, geht der neue Prozessor davon aus, dass jede Bedingung erfüllt ist, und führt die folgenden Schritte entsprechend aus.
  • Wenn der gesamte Kontext nicht der gleiche ist, so wird die nächste Befehlssequenz nicht ausgeführt. Statt dessen sucht der neue Prozessor nach einer anderen Sequenz aus übersetzten Befehlen, die die Kriterien für die nächste Sequenz erfüllt. In der Regel ist dies eine andere Übersetzung derselben Sequenz aus Zielbefehlen, die aber die gleiche Kontextdarstellung hat wie die Kontextdarstellung der zuletzt ausgeführten Sequenz. Es ist möglich, dass eine solche Sequenz nicht existiert. Wenn das der Fall ist, so führt der neue Prozessor die Codemorphingsoftware aus, um eine solche Übersetzung zu erzeugen, und speichert die Übersetzung in dem Übersetzungspuffer mit ihrer Kontextdarstellung zur weiteren Verwendung.
  • Um zu gewährleisten, dass der Kontext, in dem eine Sequenz aus übersetzten Befehlen ausgeführt wird, der richtige ist, ist es notwendig, dass die Codemorphingsoftware vorhersagbare Veränderungen des Kontexts verfolgt und die Kontextdarstellung zu einer richtigen Darstellung ändert, wenn es zu einer Veränderung kommt. Auf diese Weise wird der Kontext, in dem der Host-Prozessor momentan arbeitet, korrekt dargestellt, wenn eine Prüfung des Kontexts einer nächsten Sequenz vorgenommen wird.
  • Es ist außerdem wichtig, dass die Codemorphingsoftware einen Befehl erkennt, der den Kontext auf unvorhersagbare Weise verändert. Wenn zum Beispiel ein Befehl ein neues Segmentregister lädt, so können sich sämtliche Kriterien, die sich mit einem Segment ändern können, verändern. Nach dem Laden des Segmentregisters ist ein neuer Kontext in Kraft, und der neue Kontext muss für die Ausführung von Befehlen ab jenem Punkt in der Sequenz verwendet werden. Jeder anschließende Befehl, der von den betroffenen Abschnitten des Kontexts abhängt (zum Beispiel ein Befehl, der auf das geladene Segmentregister zugreift), kann nicht ausgeführt werden, ohne dass verifiziert wird, dass der neue Kontext der richtige ist. Die Codemorphingsoftware kann die Übersetzung an jedem beliebigen Punkt zwischen den beiden beenden und/oder veranlassen, dass der Kontext zwischen dem Punkt, wo er modifiziert wird, und dem Punkt, wo der anschließende Befehl von dem aktualisierten Wert abhängt, verifiziert wird.
  • Weil durch das Verknüpfen verschiedener übersetzter Sequenzen in der Weise, dass sie als eine einzelne längere Sequenz funktionieren, eine signifikante Beschleunigung der Ausführung erreicht wird, ist die Verwendung des Verknüpfungsprozesses durchaus wünschenswert. Es versteht sich, dass, wenn zwei Sequenzen miteinander verknüpft werden sollen, es notwendig ist, dass jeder Abschnitt der längeren Sequenz korrekt ausgeführt wird. Folglich ist es notwendig, dass der Kontext der richtige ist, damit jeder Abschnitt der längeren Sequenz richtig ausgeführt wird. Dies kann bei einer Ausführungsform der Erfindung dadurch erreicht werden, dass man eine erste übersetzte Sequenz mit einer zweiten unter Verwendung der Adresse der zweiten übersetzten Sequenz verknüpft. Bei dem neuen Prozessor wird die Adresse in der Regel in einer Programmsteuereinheit gespeichert. Wenn eine Sequenz mit einer anderen verknüpft werden soll, so endet die erste Sequenz mit einem Hinweis auf die Adresse in der Programmsteuerung. Wenn die zweite Sequenz begonnen wird, so überprüft die Übersetzung die Kontextdarstellung, um zu gewährleisten, dass der Kontext der gleiche ist wie der Kontext, der von der zweiten Sequenz benötigt wird.
  • Das Prüfen des Kontexts des Host anhand der Darstellung des von der zweiten Sequenz benötigten Kontexts für jede verknüpfte Sequenz nimmt einige Operationszyklen in Anspruch. Folglich entfernt eine höherentwickelte Ausführungsform der Erfindung die Kontextprüfung aus der Übersetzung und verlagert sie in den ursprünglichen Verknüpfungsprozess, wie in 4 veranschaulicht. Das heißt, wenn zuerst festgestellt wird, dass zwei Sequenzen miteinander zu verknüpfen sind, so wird der Kontext, in dem die erste Sequenz ausgeführt wird, an ihrem Ende mit dem Kontext verglichen, in dem die zweite Sequenz die Ausführung beginnt, indem die Kontextdarstellung von beiden verglichen wird. Wenn die Kontextdarstellungen die gleichen sind, so wird die Verknüpfung hergestellt. Danach ist es bei Ausführung der längeren Sequenz nicht mehr notwendig, den Kontext an dem Punkt, an dem die zwei Sequenzen miteinander verknüpft sind, zu prüfen. Das Ende der ersten Sequenz verweist lediglich auf die Adresse der zweiten Sequenz, und die Verknüpfung wird hergestellt. Die Ausführung von Befehlen wird dadurch beschleunigt, dass man den Kontext lediglich zum Zeitpunkt der ursprünglichen Verknüpfung prüft, und nicht jedes Mal, wenn die miteinander verknüpften Sequenzen ausgeführt werden.
  • In einer ähnlichen Weise sucht eine Ausführungsform jedes Mal, wenn eine Suche nach einer Übersetzung ausgeführt wird, sowohl nach einer bestimmten Übersetzung als auch nach einem bestimmten Kontext. Auf diese Weise wird der Prüfvergleich zwischen dem Maschinenbetriebskontext und dem benötigten Übersetzungskontext komplett aus den übersetzten Sequenzen herausgenommen und in die Abfertigungsfunktion der Codemorphingsoftware verlagert, wie in 5 veranschaulicht. Die Abfertigungsfunktion sucht im Wesentlichen nach einer nächsten Sequenz aus übersetzten Befehlen zum Ausführen mittels Durchsuchen des Übersetzungspuffers nach einer richtigen Übersetzung und einem richtigen Kontext, wann immer entweder eine nächste Übersetzung benötigt wird oder eine vorgesehene Verknüpfung hergestellt werden soll.
  • Ausführungsformen der vorliegenden Erfindung stellen Erweiterungen bereit, um die Ausführung von Befehlen weiter zu beschleunigen. Eine Erweiterung, die durch Ausführungsformen der vorliegenden Erfindung bereitgestellt wird, ermöglicht das Herstellen einer Verknüpfung in Fällen, wo ein Befehl den Kontext in unvorhersagbarer Weise verändert.
  • Die Operation ermöglicht eine Verknüpfung zu der Adresse, die von der Programmsteuerung gespeichert wird, gefolgt von einer Prüfung des neuen Kontexts anhand des momentanen Kontexts. Wenn die Kontextdarstellungen die gleichen sind, so kann die Verknüpfung fortgesetzt werden.
  • Eine andere Erweiterung (auch in 5 gezeigt) stützt sich auf die Tatsache, dass es nicht immer notwendig ist, dass eine neu übersetzte Sequenz einen Kontext hat, der mit dem momentanen Kontext, in dem der Host arbeitet, identisch ist, um ein korrektes Ergebnis hervorzubringen. Einige übersetzte Sequenzen brauchen weniger Kontextelemente oder weniger begrenzende Kontextelemente als der Kontext, in dem der Host arbeitet. Solche Sequenzen können ausgeführt und mit früheren Sequenzen verknüpft werden, solange der Kontext vorhanden ist, der für die richtige Ausführung der noch auszuführenden Sequenz benötigt wird. Dies kann geprüft werden, indem die Kontextdarstellung einer auszuführenden übersetzten Sequenz mit der Darstellung des momentanen Kontexts des Host verglichen wird, um jene Kontextelemente zu bestimmen, die voneinander verschieden sind. Dann werden die Elemente, die sich unterscheiden, begutachtet, um festzustellen, ob sie für die auszuführende Sequenz notwendig sind, und wenn sie notwendig sind, ob der Unterschied darin besteht, dass sie in der auszuführenden Sequenz weniger einschränkend sind. Wenn die Kontextelemente nicht benötigt werden oder weniger einschränkend sind, so kann Sequenz ausgeführt oder verknüpft werden.
  • Die Art und Weise der Darstellung des Kontexts kann über ein breites Spektrum hinweg variieren, wie in 6 gezeigt ist. Wenn zum Beispiel alle Kontextelemente nach dem Verketten nicht mehr Bits in Anspruch nehmen, als ohne Weiteres in einem Maschinenregister verfügbar sind (zum Beispiel 32 oder 64 Bits), so kann der Kontext dann durch eine solche Verkettung dargestellt werden, und die Prüfungen können auf einfache Weise mittels einfacher Bit- Operationen an den Darstellungen vorgenommen werden (zum Beispiel XOR und AND). Alternativ können, wenn die Anzahl und die Größe der Elemente in dem Kontext die Anzahl der Bits übersteigen, die ohne Weiteres in einem Register verfügbar sind, die Kontextelemente in einer Datenstruktur im Speicher gespeichert werden, und die Zeiger, die in die Datenstruktur hinein verweisen, können dazu verwendet werden, Vergleiche auf genaue Kontextübereinstimmungen vorzunehmen. Die Zeiger sind dann die Kontextdarstellung. Tiefergehende Vergleiche (bei keinen exakten Übereinstimmungen), die von den einzelnen Kontextelementen abhängen, würden auf die Datenstrukturen im Speicher zugreifen müssen.
  • Ein weiteres Verfahren der Darstellung des Kontexts ist ein Hybrid dieser beiden Techniken. Einige der Elemente können direkt dargestellt werden, während andere im Speicher gespeichert werden. Der übrige Teil der Darstellung ist ein Zeiger/Index auf die Datenstruktur im Speicher. Auch hier sind direkte Vergleiche unkompliziert, während elementabhängige Vergleiche tiefer gehen würden.

Claims (12)

  1. Verfahren, das Folgendes umfasst: Beibehalten eines Übersetzungskontexts für jeden Abschnitt von übersetzten Befehlen, Vergleichen des Übersetzungskontexts, in dem ein Hostprozessor und Codemorphingsoftware arbeiten, wann immer ein neuer Abschnitt von übersetzten Befehlen ausgeführt werden soll, mit dem Übersetzungskontext beim Übersetzen des Abschnitts, Gestatten der Ausführung, wenn die Übersetzungskontexte die gleichen sind, und Erzwingen einer Suche nach einer anderen Übersetzung, wenn die Übersetzungskontexte verschieden sind, wobei der Übersetzungskontext das Charakteristikum eines Maschinenzustandes ist, das korrekt eingestellt werden muss, damit die Befehle das richtige Ergebnis erbringen.
  2. Verfahren nach Anspruch 1, wobei das Erzwingen einer Suche nach einer anderen Übersetzung, wenn die Übersetzungskontexte verschieden sind, das Neuübersetzen des ursprünglichen Befehls, aus dem der Abschnitt von übersetzten Befehlen abgeleitet wurde, beinhaltet.
  3. Verfahren nach Anspruch 1, das folgende Schritte enthält: Speichern eines Übersetzungskontexts, der zu jedem übersetzten Hostbefehl in Beziehung steht, Anzeigen eines Übersetzungskontexts für Hostübersetzungen, die momentan durch den Hostprozessor ausgeführt werden, Vergleichen eines Übersetzungskontexts, der für einen nächsten Hostbefehl gespeichert wurde, mit dem Übersetzungskontext für einen Hostbefehl, der momentan ausgeführt wird, Ausführen des nächsten Hostbefehls, wenn der Übersetzungskontext des nächsten Hostbefehls und des momentan ausgeführten Hostbefehls die gleichen sind, und Suchen nach einem Befehl mit einem Übersetzungskontext, der der gleiche ist wie der Übersetzungskontext des momentan ausgeführten Hostbefehls, wenn der Übersetzungskontext des nächsten Hostbefehls und des momentan ausgeführten Hostbefehls verschieden sind.
  4. Verfahren nach Anspruch 3, wobei der Schritt des Speicherns eines Übersetzungskontexts, der zu jedem übersetzten Hostbefehl in Beziehung steht, das Speichern einer Darstellung eines Übersetzungskontexts als Teil von übersetzten Hostbefehlen umfasst.
  5. Verfahren nach Anspruch 4, wobei die Darstellung ein Zeiger zu einer Adresse ist, an der Übersetzungskontext gespeichert ist.
  6. Verfahren nach Anspruch 4, wobei die Darstellung ein Satz von Bits ist, die einen Übersetzungskontext anzeigen.
  7. Verfahren nach Anspruch 4, wobei die Darstellung ein Satz von Bits, die einen Übersetzungskontext anzeigen, und ein Zeiger zu einer Adresse, an der Übersetzungskontext gespeichert ist, ist.
  8. Verfahren nach Anspruch 3, wobei der Schritt des Speicherns eines Übersetzungskontexts, der zu jedem übersetzten Hostbefehl in Beziehung steht, das Speichern einer Darstellung eines Übersetzungskontexts getrennt von übersetzten Hostbefehlen umfasst.
  9. Verfahren nach Anspruch 3, wobei der Schritt des Vergleichens von Übersetzungskontext, der für einen nächsten Hostbefehl gespeichert ist, mit dem Übersetzungskontext für einen momentan ausgeführten Hostbefehl ausgeführt wird, wenn auf eine Übersetzung zugegriffen wird.
  10. Verfahren nach Anspruch 3, umfassend den weiteren Schritt des Verknüpfens einer ersten Sequenz übersetzter Hostbefehle mit einer nachfolgenden Sequenz übersetzter Hostbefehle, wenn der Übersetzungskontext der ersten Sequenz übersetzter Hostbefehle und der Übersetzungskontext der nachfolgenden übersetzten Hostbefehle gleich sind.
  11. Verfahren nach Anspruch 10, wobei der Schritt des Vergleichens von Übersetzungskontext, der für einen nächsten Hostbefehl gespeichert ist, mit dem Übersetzungskontext für einen momentan ausgeführten Hostbefehl ausgeführt wird, wenn die erste Übersetzungssequenz mit einer nachfolgenden Übersetzungssequenz verknüpft wird.
  12. Verfahren nach Anspruch 3, umfassend den weiteren Schritt des Verknüpfens eines ersten übersetzten Hostbefehls mit einem nachfolgenden übersetzten Hostbefehl, wenn der Übersetzungskontext des ersten übersetzten Hostbefehls, der sich auf den nachfolgenden übersetzten Hostbefehl auswirkt, und der Übersetzungskontext des nachfolgenden übersetzten Hostbefehls gleich sind.
DE60028069T 1999-10-13 2000-09-06 Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen Expired - Lifetime DE60028069T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US417981 1995-04-06
US09/417,981 US6415379B1 (en) 1999-10-13 1999-10-13 Method and apparatus for maintaining context while executing translated instructions
PCT/US2000/040856 WO2001027741A1 (en) 1999-10-13 2000-09-06 Method and apparatus for maintaining context while executing translated instructions

Publications (2)

Publication Number Publication Date
DE60028069D1 DE60028069D1 (de) 2006-06-22
DE60028069T2 true DE60028069T2 (de) 2006-12-21

Family

ID=23656160

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60028069T Expired - Lifetime DE60028069T2 (de) 1999-10-13 2000-09-06 Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen

Country Status (9)

Country Link
US (1) US6415379B1 (de)
EP (1) EP1226492B1 (de)
JP (1) JP3786603B2 (de)
KR (1) KR100498272B1 (de)
CN (2) CN1264083C (de)
AT (1) ATE326721T1 (de)
CA (1) CA2379976C (de)
DE (1) DE60028069T2 (de)
WO (1) WO2001027741A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US6763327B1 (en) * 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US7036106B1 (en) 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7694151B1 (en) 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9250900B1 (en) 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4456954A (en) * 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6591414B2 (en) * 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium

Also Published As

Publication number Publication date
CA2379976C (en) 2009-04-07
CN1862495A (zh) 2006-11-15
JP2003511787A (ja) 2003-03-25
WO2001027741A1 (en) 2001-04-19
DE60028069D1 (de) 2006-06-22
EP1226492B1 (de) 2006-05-17
CA2379976A1 (en) 2001-04-19
EP1226492A4 (de) 2005-03-30
JP3786603B2 (ja) 2006-06-14
ATE326721T1 (de) 2006-06-15
US6415379B1 (en) 2002-07-02
EP1226492A1 (de) 2002-07-31
KR20020039688A (ko) 2002-05-27
CN1264083C (zh) 2006-07-12
KR100498272B1 (ko) 2005-06-29
CN100401258C (zh) 2008-07-09
CN1379872A (zh) 2002-11-13

Similar Documents

Publication Publication Date Title
DE60028069T2 (de) Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE68921776T2 (de) Prozessorssimulation.
DE68921775T2 (de) Prozessorssimulation.
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE69400406T2 (de) System und methode zur lokalisierung von geteilten bibliotheken
DE112017001027B4 (de) Seitenfehlerbehebung
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE60203612T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE69932964T2 (de) Verfahren, System und Rechnerprogrammprodukt zur Initialisierung einer Datenstruktur beim ersten Gebrauch
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE19922796A1 (de) Bestimmen der tatsächlichen Klasse eines Objekts zur Laufzeit
DE102010046892A1 (de) Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE3688581T2 (de) Sortierverfahren in einem hierarchisch geordneten Speichersystem.
DE10393968T5 (de) Dauerzwischenspeichervorrichtung und -verfahren
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE69922238T2 (de) Mechanismus zur blockierung von ladeoperationen auf adressengeneration von speicherbefehlen und universeller abhängigkeitsvektor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: INTELLECTUAL VENTURE FUNDING LLC, CARSON CITY,, US