DE69904766T2 - Kodenübersetzer - Google Patents

Kodenübersetzer

Info

Publication number
DE69904766T2
DE69904766T2 DE69904766T DE69904766T DE69904766T2 DE 69904766 T2 DE69904766 T2 DE 69904766T2 DE 69904766 T DE69904766 T DE 69904766T DE 69904766 T DE69904766 T DE 69904766T DE 69904766 T2 DE69904766 T2 DE 69904766T2
Authority
DE
Germany
Prior art keywords
code
translation
block
instructions
computer
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 - Fee Related
Application number
DE69904766T
Other languages
English (en)
Other versions
DE69904766D1 (de
Inventor
William B. Buzbee
David.A Dunn
James S. Mattson
Lacky V. Shah
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69904766D1 publication Critical patent/DE69904766D1/de
Application granted granted Critical
Publication of DE69904766T2 publication Critical patent/DE69904766T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Computersysteme und insbesondere auf ein dynamisches Übersetzungssystem und -verfahren zum effizienten Übersetzen eines Computercodes in eine Form, die mit einer ausgewählten Computerarchitektur kompatibel ist.
  • Computertechnologie entwickelt und verbessert sich mit einer unglaublich hohen Geschwindigkeit. Hochmoderne Computerarchitekturen werden innerhalb eines relativ kurzen Zeitraums überholt, während kontinuierlich schnellere und leistungsstärkere Maschinen entworfen und vermarktet werden. Infolge dieser schnellen Verbesserung der Computertechnologie haben viele Benutzer Schwierigkeiten beim Unterhalten von Computersystemen, die bezüglich der aktuellen Standards in der Computertechnologie auf dem neuesten Stand sind.
  • Eine der Schwierigkeiten, die beim Unterhalten hochmoderner Computer auftritt, ist die Tatsache, daß ein Computercode, der mit einer aktuellen Computerarchitektur eines Benutzers kompatibel ist, eventuell mit der Architektur eines neuen Computers nicht kompatibel ist. Falls der Benutzer nicht in der Lage ist, einen zuvor geschriebenen Code auf einer neuem Computerarchitektur zu betreiben, so werden die Kosten des Aufrüstens beträchtlich erhöht. Folglich wurden Übersetzungssysteme entworfen, die es einem Benutzer ermöglichen, einen Originalcode, der mit einer Architektur kompatibel ist, in einen übersetzten Code, der mit einer zweiten Architektur kompatibel ist, zu übersetzen. Nach dem Übersetzen des ursprünglichen Codes bzw. Ursprungscodes in den übersetzten Code führt die zweite Architektur den übersetzten Code statt des Ursprungscodes aus. Daher ermöglichen Übersetzungssysteme einem Benutzer, einen zuvor geschriebenen Code auf unterschiedlichen Computersystemen zu betreiben, so daß der Benutzer sein Computersystem hochrüsten oder verändern kann, ohne daß ihm die Kosten eines Verlustes des existierenden Codes entstehen.
  • Übersetzungssysteme können ferner verwendet werden, um eine andere Funktionalität zu erreichen. Beispielsweise können Übersetzungssysteme verwendet werden, um einen existierenden Code in eine effizientere Form zu übersetzen, so daß der Code auf effizientere Weise durch das Computersystem ausgeführt werden kann. Daher ist eine Voraussetzung dafür, daß die Implementierung von Übersetzungssystemen wünschenswert ist, nicht unbedingt, daß ein Computercode ursprünglich mit einem Computersystem nicht kompatibel ist.
  • Beim Übersetzen eines Codes von einer Form in eine andere wurden bereits Versuche unternommen, einen existierenden Code einfach in eine neue Form eines Codes zu kompilieren, die in der Lage ist, unabhängig auf der neuen Architektur betrieben zu werden. Diese Art von Übersetzung ist jedoch schwierig, da Informationen bezüglich eines Steuerflusses lediglich zur Laufzeit verfügbar ist. Ferner müßte jede Anweisung des existierenden Codes vor dem Betreiben des übersetzten Codes an dem neuen System durch das Übersetzungssystem übersetzt werden. Dies könnte für Benutzer mit großen Codemengen ein sehr zeitaufwendiger Vorgang sein.
  • Deshalb ist es wünschenswert, daß der Übersetzungsprozeß insofern dynamisch ist, als die Übersetzung eines aktuellen Codes zur Laufzeit stattfindet und lediglich der Abschnitt des Codes, der zur Laufzeit tatsächlich verwendet wird, übersetzt wird. Ein dynamisches Übersetzungssystem kann nicht nur Laufzeitinformationen nutzen, sondern ein dynamisches Übersetzungssystem kann in die Architektur eines neuen Computers integriert werden, so daß ein existierender Code automatisch an der neuen Architektur läuft, was den Übersetzungsprozeß für den Benutzer transparent macht.
  • Ein Problem, das bei dynamischen Übersetzungssystemen auftritt, ist das Auftreten eines Synchronfehlers. Wie in der Technik bekannt ist, tritt ein Synchronfehler auf, wenn ein nicht-ausführbarer Befehl erfaßt wird. Synchronfehler können aufgrund einer Vielzahl von Gründen auftreten, einschließlich, aber nicht ausschließlich, dessen, daß seit dem Programmieren des Ursprungscodes in dem Ursprungscode vorhandene Programmierfehler oder Hardwareveränderungen stattgefunden haben.
  • Um einen Synchronfehler auf geeignete Weise zu verarbeiten, muß der "Maschinenzustand" des Computers bekannt sein. Der Maschinenzustand eines Computers bezieht sich auf die derzeit in dem Computer gespeicherten mathematischen Werte, die den aktuellen Status des Computers anzeigen. Als Beispiel umfaßt der Maschinenzustand die Werte der Flags, Register und Zähler des Computers, ist aber nicht hierauf beschränkt.
  • Wie in der Technik bekannt ist, erzeugt die Ausführung eines übersetzten Codes einen anderen Maschinenzustand als die Ausführung des Ursprungscodes. Wenn eine übersetzte Anweisung fehlschlägt, ist es ferner wichtig, daß die neue Architektur den Maschinenzustand kennt, der durch einen entsprechenden Fehler in dem Ursprungscode erzeugt worden wäre, falls der Ursprungscode statt des übersetzten Codes ausgeführt worden wäre. Deshalb ist es notwendig, daß ein Übersetzungssystem in der Lage ist, einem Computer den Maschinenzustand zu liefern, der beim Auftreten eines Synchronfehlers durch den Ursprungscode erzeugt worden wäre, obwohl in der Tat der übersetzte Code ausgeführt wird.
  • Eine bekannte Implementierung zum Liefern des Ursprungscode-Maschinenzustands ist ein unflexibles Korrelationsübersetzungssystem. Bei dieser Implementierung ist jeder Maschinenzustandswert der Ursprungsarchitektur auf einen beistimmten Maschinenzustandswert der neuen Architektur bezogen. Beispielsweise ist ein Register in der Ursprungsarchitektur auf ein bestimmtes Register in der neuen Architektur bezogen. Dementsprechend reflektiert der Wert in dem bestimmten Register der neuen Architektur konstant den Wert, der in der Ursprungsarchitektur existiert hätte, wenn die Ursprungsarchitektur den Ursprungscode betrieben hätte. Obwohl diese Implementierung in der Lage ist, den Maschinenzustand des Ursprungscodes zu verfolgen, tritt eine optimale Ausführung des übersetzten Codes nicht ein, da bestimmte Daten immer an bestimmten Positionen der neuen Architektur gespeichert sein müssen.
  • Eine andere bekannte Implementierung ermöglicht eine flexiblere Verwendung der Datenpositionen in der neuen Architektur. Um jedoch den Maschinenzustand des Ursprungscodes auf das Auftreten eines Synchronfehlers hin zu liefern, verfolgt die bekannte Implementierung den Maschinenzustand des Ursprungscodes, während der übersetzte Code ausgeführt wird. Deshalb werden die Anweisungs- und Zustandsabbildungen für jede Anweisung, die zu einem Fehlschlagen in der Lage ist, gesichert, so daß der Maschinenzustand im Falle eines Synchronfehlers wiedererlangt werden kann. Während diese Implementierung eine freie Verwendung der Register des neuen Computers ermöglicht, beeinträchtigen die zusätzlichen Speichererfordernisse die Leistungsfähigkeit der Ausführung des übersetzten Codes dramatisch.
  • Deshalb besteht in der Branche ein bisher unerfülltes Erfordernis eines Systems und Verfahrens für ein effizientere» Übersetzen eines ursprünglichen Computercodes in einen Code, der mit einer neuen Architektur kompatibel ist.
  • Die US-5,636,366 offenbart ein System zum Übersetzen eines ersten Programmcodes in einen zweiten Programmcode und zum Aufführen des zweiten Programmcodes. Der erste Programmcode ist an einem Computer ausführbar, der eine erste Architektur aufweist, die für einen ersten Anweisungssatz ausgelegt sind, und der zweite Programmcode ist an einem Computer ausführbar, der für einen zweiten Anweisungssatz ausgelegt ist.
  • Gemäß der vorliegenden Erfindung ist ein System geschaffen, das folgende Merkmale aufweist:
  • eine Übersetzungsvorrichtung zum Übersetzen eines ersten Blocks von Anweisungen von einem ersten Computerprogramm in einen zweiten Block von Anweisungen eines zweiten Computerprogramms, wobei die Übersetzungsvorrichtung auf ein Fehlersignal zum Neuübersetzen des ersten Blocks von Anweisungen von dem ersten Computerprogramm in einen dritten Block von Anweisungen anspricht;
  • einen Computer zum Ausführen des zweiten Computerprogramms, zum Erzeugen eines Maschinenzustands und zum Erzeugen des Fehlersignals, wenn ein Fehler beim Ausführen des zweiten Coraputerprogramms auftritt; und
  • einen Zustandsumwandlungsmechanismus zum Erzeugen eines simulierten Maschinenzustands auf der Basis des Maschinenzustands und einer Abbildung, die durch die Übersetzungsvorrichtung beim Neuübersetzen des ersten Blocks von Anweisungen erzeugt wurde.
  • Systeme gemäß der vorliegenden Erfindung überwinden die Unzulänglichkeiten und Mängel des Standes der Technik, wie sie hierin erörtert wurden, und stellen dynamische Übersetzungssysteme zum optimalen Übersetzen eines ursprünglichen Computercodes in einen übersetzten Code, der mit einer bestimmten Architektur kompatibel ist, dar.
  • Vorzugsweise ist die Übersetzungsvorrichtung ausgelegt, um nach einem Übersetzen des ersten Blocks von Anweisungen eine Übersetzungsabbildung in eine Übersetzungsabbildungstabelle zu speichern. Die Übersetzungsabbildung enthält Informationen, die eine Entsprechung zwischen dem ersten Block von Anweisungen und dem zweiten Block von Anweisungen anzeigen. Nach einem Auftreten des Ausführungsfehlers erlangt die Übersetzungsvorrichtung die Übersetzungsabbildung wieder und verwendet die Informationen in derselben, um den ersten Block von Anweisungen zu lokalisieren, um die Übersetzungsvorrichtung zu befähigen, den ersten Block von Anweisungen neu zu übersetzen.
  • Die vorliegende Erfindung weist viele Vorteile auf, von denen einige im folgenden als bloße Beispiele geschildert werden.
  • Ein Vorteil der vorliegenden Erfindung besteht darin, daß ein simulierter Maschinenzustand erzeugt werden kann, ohne jede Anweisungs- und Zustandsabbildung jeder Anweisung, die in der Lage ist, während der Ausführung eines Programms fehlzuschlagen, zu speichern. Deshalb verarbeitet ein Computer, der ein übersetztes Programm ausführt, weniger Daten.
  • Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß eine Software auf schnelle und effiziente Weise übersetzt und ausgeführt werden kann, wodurch die Gesamtleistungsfähigkeit eines Computersystems erhöht wird.
  • Bei einer Betrachtung der folgenden Zeichnungen in der ausführlichen Beschreibung werden für Fachleute auch andere Merkmale und Vorteile der vorliegenden Erfindung offensichtlich. Es ist beabsichtigt, daß alle derartigen Merkmale und Vorteile hierin in dem Schutzbereich der vorliegenden Erfindung enthalten sind, wie er durch die Patentansprüche definiert wird.
  • Die Erfindung kann unter Bezugnahme auf die folgenden Zeichnungen besser verstanden werden. Die Elemente der Zeichnungen sind in bezug zueinander nicht unbedingt maßstabsgetreu, wobei das Hauptaugenmerk statt dessen darauf gelegt wird, die Prinzipien der Erfindung klar zu veranschaulichen. Ferner bezeichnen gleiche Bezugszeichen in den Figuren in allen Ansichten entsprechende Teile.
  • Fig. 1 ist ein Blockdiagramm, das ein dynamisches Übersetzungssystem gemäß dem Stand der Technik veranschaulicht.
  • Fig. 2 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, das das dynamische Übersetzungssystem der vorliegenden Erfindung verwendet.
  • Fig. 3 ist ein Blockdiagramm, das das dynamische Übersetzungssystem der Fig. 2 veranschaulicht.
  • Ein dynamisches Übersetzungssystem 1 gemäß dem Stand der Technik ist in Fig. 1 gezeigt. Das dynamische Übersetzungssystem 1 ist in einem Computersystem 2 implementiert. Bei dem bekannten Übersetzungssystem 1 übersetzt eine Übersetzungsvorrichtung 3 einen in einer Ursprungscode-Datenbank 9 befindlichen Ursprungscode 5 in einen in einem Übersetzter- Code-Cache 14 befindlichen übersetzten Code 11. Der Ursprungscode 5 ist ein beliebiges Computerprogramm, das mit der Übersetzungsvorrichtung 3 kompatibel ist, und der übersetzte Code 11 ist mit dem Computersystem 2 kompatibel, üblicherweise entspricht der Ursprungscode 5 einem Objektcode, der aus einem Computerprogramm kompiliert ist, das in einer Computersprache auf hoher Ebene, beispielsweise C oder Fortran, geschrieben ist. Während die Übersetzungsvorrichtung 3 den Ursprungscode 5 übersetzt, führt das Computersystem 2 den übersetzten Code 11 aus.
  • Um einen Synchronfehler ordnungsgemäß zu verarbeiten, muß das Computersystem 2 Zugriff auf den Maschinenzustand haben, der existiert hätte, wenn die Ausführung des Ursprungscodes 5, und nicht die Ausführung des übersetzten Codes 11 den Synchronfehler bewirkt hätte. Während die Übersetzungsvorrichtung 3 den Ursprungscode 5 übersetzt, sichert die Übersetzungsvorrichtung 3 daher die Anweisungs- und Zustandsabbildungen jeder Anweisung in dem Ürsprungscode 5, die zu einer Programmunterbrechung (Trap) in der Lage ist. Der Begriff "Programmunterbrechung" oder "Programmun terbrechen" bezieht sich hierin auf die Ausführung einer Anweisung, die bewirkt, daß ein Synchronfehler auftritt.
  • Wenn die Ausführung des übersetzten Codes 11 zu einer Programmunterbrechung führt, überträgt die Übersetzungsvorrichtung 3 die Anweisungsabbildung der Programmunterbrechungsanweisung in dem Ursprungscode 5 an einen Zustandsumwandlungsmechanismus 17. Der Zustandsumwandlungsmechanismus 17 kombiniert die Anweisungs- und Zustandsabbildungen der Programmunterbrechungsabbildung mit den aktuellen Maschinenzustandsinformationen des Computersystems 1, um einen in einer Simulierter-Maschinenzustand-Datenbank 19 gespeicherten simulierten Maschinenzustand zu erzeugen. Dieser simulierte Maschinenzustand ist der Maschinenzustand, der zum Zeitpunkt des Synchronfehlers existiert hätte, wenn der Ursprungscode 5 statt des übersetzten Codes 11 ausgeführt worden wäre. Dementsprechend verwendet das Computersystem 2 den simulierten Maschinenzustand, um den Synchronfehler ordnungsgemäß zu verarbeiten.
  • Da nicht bekannt ist, welche Anweisung vor der Ausführung des übersetzten Codes 11 tatsächlich eine Programmunterbrechung herbeiführen wird, wird jede Anweisungs- und Zustandsabbildung einer zu einer Programmunterbrechung fähigen Anweisung gesichert, um auf die Informationen Zugriff zu haben, die notwendig sind, um im Falle eines Synchronfehlers einen simulierten Maschinenzustand zu erzeugen. Das Speichern der Abbildungen jeder Anweisung, die in der Lage ist, einen Synchronfehler zu bewirken, ist jedoch ineffizient, da zum Erzeugen eines simulierten Maschinenzustands lediglich die Abbildung der Anweisung, die den Synchronfehler verursacht, nötig ist.
  • Die vorliegende Erfindung ermöglicht eine optimale Übersetzung des ursprünglichen Computercodes 5 in den übersetzten Code 11. Das dynamische Übersetzungssystem der vorliegenden Erfindung kann in Software, Hardware oder einer Kombination derselben implementiert sein. Bei dem bevorzugten Ausfüh rungsbeispiel, wie es beispielhaft in Fig. 2 veranschaulicht ist, ist das dynamische Übersetzungssystem 20 der vorliegenden Erfindung zusammen mit seiner zugeordneten Methodologie in Software implementiert und in einem Computerspeicher 21 eines Computersystems 23 gespeichert. Man beachte, daß das dynamische Übersetzungssystem 20 in einem beliebigen computerlesbaren Medium zur Verwendung durch ein oder in Verbindung mit einem computerlesbaren System oder Verfahren gespeichert sein kann. Im Kontext dieses Dokuments ist ein computerlesbares Medium eine elektronische, magnetische, optische oder andere physische Vorrichtung oder Einrichtung, die ein Computerprogramm zur Verwendung durch ein oder in Verbindung mit einem computerbezogenen System oder Verfahren enthalten oder speichern kann. Beispielsweise kann das dynamische Übersetzungssystem 20 magnetisch gespeichert und auf einer herkömmlichen tragbaren Computerdiskette transportiert werden.
  • Das bevorzugte Ausführungsbeispiel des Computersystems 23 der Fig. 2 weist ein oder mehrere herkömmliche Verarbeitungselemente 25 auf, beispielsweise einen Digitalsignalprozessor (DSP), die über eine lokale Schnittstelle 26, die einen oder mehrere Busse umfassen kann, mit den anderen Elementen in dem System 23 kommunizieren. Ferner kann eine Eingabevorrichtung 28, beispielsweise eine Tastatur oder eine Maus, verwendet werden, um Daten von einem Benutzer des Systems 23 einzugeben, und eine Bildschirmanzeige 29 oder ein Drucker 31 kann verwendet werden, um Daten an den Benutzer auszugeben. Ein Plattenspeichermechanismus 32 kann mit der lokalen Schnittstelle 26 verbunden sein, um Daten an eine und von einer nicht-flüchtigen Platte (z. B. magnetisch, optisch usw.) zu transferieren. Das System 23 kann mit einer Netzschnittstelle 33 verbunden sein, die es dem System 23 ermöglicht, Daten mit einem Netz 34 auszutauschen.
  • Fig. 3 zeigt das dynamische Übersetzungssystem 20 der vorliegenden Erfindung. Der Ursprungscode 5 ist ein Code aus einem existierenden Computerprogramm und ist in einer ürsprungscode-Datenbank 9 des Computersystems 23 (Fig. 2) gespeichert. Es ist wünschenswert, den Ursprungscode 5 in den übersetzten Code 11, der mit dem Computersystem 23 (Fig. 2) kompatibel ist, zu übersetzen. Der Ursprungscode 5 besteht beispielsweise aus Codeblöcken 5a, 5b und 5c, die ausgelegt sind, um Abschnitte des Ursprungscodes 5 zu enthalten. Die Codeblöcke 5a, 5b und 5c sind vorzugsweise so definiert, daß jeder Codeblock 5a, 5b oder 5c eine Gruppe von Anweisungen enthält, die während der Laufzeit nacheinander ausgeführt werden.
  • Eine Übersetzungsvorrichtung 45 ist entworfen, um den Ursprungscode 5 in den übersetzten Code 11, der ein in einem Übersetzungscodecache 14 unterhaltenes Computerprogramm ist, zu übersetzen. Der übersetzte Code 11 enthält Codeblöcke 11a, 11b und 11c, die den Codeblöcken 5a, 5b bzw. 5c entsprechen. Jeder Block des übersetzten Codes 11 ist vorzugsweise konfiguriert, um Anweisungen zu enthalten, die mit dem Computersystem 23 (Fig. 2) kompatibel sind und die die Funktionalität seines entsprechenden Codeblocks in dem Ursprungscode 5 durchführen.
  • Die Übersetzungsvorrichtung 45 ist ferner entworfen, um eine Übersetzungsabbildung zwischen den Codeblöcken in dem Ursprungscode 5 und den Codeblöcken in dem übersetzten Code 11 zu unterhalten. Diesbezüglich ist die Übersetzungsvorrichtung 45 konfiguriert, um eine Übersetzungsabbildung nach einer Übersetzung jedes Blocks des Ursprungscodes 5 in einer Übersetzungsabbildungstabelle 55 zu speichern. Jede Übersetzungsabbildung ist konfiguriert, um Informationen zu enthalten, die anzeigen, welcher Codeblock in dem übersetzten Code 11 einem Codeblock in dem Ursprungscode 5 entspricht.
  • Das Computersystem 23 (Fig. 2) ist anfänglich entworfen, um jeden Datenblock 11a, 11b und 11c auszuführen, während jeder Block durch die Übersetzungsvorrichtung 45 übersetzt wird. Das Computersystem 23 (Fig. 2) ist entworfen, um während des Übersetzens Maschinenzustandsinformationen gemäß im Stand der Technik geschaffener Prinzipien zu unterhalten. Bis jedoch tatsächlich ein Synchronfehler auftritt, ist das Computersystem 23 (Fig. 2) nicht entworfen, um die der Übersetzung des Ursprungscodes 5 zugeordneten Anweisungsabbildungen zu speichern. Ferner ist das Computersystem 23 (Fig. 2) entworfen, um das Verarbeiten von Daten zu optimieren, indem es die Register und andere Datenpositionen, die dem Computersystem 23 zugeordnet sind, auf jegliche Weise, die für die verwendete Verarbeitungslogik geeignet ist, frei verwendet.
  • Wenn durch das Computersystem 23 ein Synchronfehler erfaßt wird, ist das Computersystem 23 konfiguriert, um ein Fehler signal zu erzeugen, das die Übersetzungsvorrichtung 45 von dem Synchronfehler benachrichtigt. Nach einem Empfangen des Fehlersignals ist die Übersetzungsvorrichtung 45 ausgelegt, um die Informationen in der Übersetzungsabbildungstabelle 55 zu verwenden, um zu entdecken, welcher Codeblock 5a, 5b oder 5c die ursprüngliche Anweisung, die die Programmunterbrechung verursacht, enthält. Falls die Programmunterbrechungsanweisung beispielsweise im Block 11a des übersetzten Codes 11 befindlich ist, dann ist die Übersetzungsvorrichtung 45 konfiguriert, um die Abbildungstabelle 55 nach der Übersetzungsabbildung, die dem Übersetzter-Code-Block 11a entspricht, zu durchsuchen. Unter Verwendung dieser Abbildung ist die Übersetzungsvorrichtung 45 dann entworfen, um den Ursprungscodeblock 5a dem Übersetzter-Code-Block 11a zuzuordnen.
  • Nach dem Ermitteln, welcher Block in dem Code 5 die ursprüngliche Anweisung enthält, die den Synchronfehler bewirkt, ist die Übersetzungsvorrichtung 45 entworfen, um den Block in dem Code 5, der den Fehler bewirkt (d. h. bei dem obengenannten Beispiel Block 5a) neu zu übersetzen. Es ist nicht notwendig, daß das Computersystem 23 (Fig. 2) einen neu übersetzten Code ausführt. Während des Neuübersetzens ist die Übersetzungsvorrichtung 45 entworfen, um die Anweisungs- und Zustandsabbildungen für jede Anweisung, die zu einer Programmunterbrechung in der Lage ist, zu sichern, bis die Programmunterbrechungsanweisung in dem Ursprungscode 5a, die den Fehler während des Übersetzungsprozesses bewirkte, während des Prozesses des Neuübersetzens angetroffen wird. Wenn die Programmunterbrechungsanweisung erst einmal während des Neuübersetzungsprozesses erreicht wird, ist die Übersetzungsvorrichtung 45 entworfen, um an den Zustandsumwandlungsmechanismus 17 die gespeicherten Anweisungs- und Zustandsabbildungen zu übertragen, die notwendig sind, um den hierin beschriebenen simulierten Maschinenzustand zu erzeugen.
  • Der Zustandsumwandlungsmechanismus 17 ist konfiguriert, um die Anweisungs- und Zustandsabbildungsinformationen der Programmunterbrechungsanweisung in dem Ursprungscode 5 mit den Maschinenzustandsinformationen des Computersystems 23 (Fig. 2) zu kombinieren, um einen in der Simulierter- Maschinenzustand-Datenbank 19 gespeicherten simulierten Maschinenzustand zu erzeugen. Dieser simulierte Maschinenzustand ist entworfen, um den Maschinenzustand darzustellen, der zum Zeitpunkt der Ausführung der Programmunterbrechungsanweisung existiert hätte, wenn der Ursprungscode 5 statt durch den übersetzten Code 11 durch ein Computersystem ausgeführt worden wäre. Das Computersystem 23 (Fig. 2) ist ferner entworfen, um den simulierten Maschinenzustand in der Simulierter-Maschinenzustand-Datenbank 19 zu verwenden, um den Synchronfehler durch in der Technik bekannte Techniken zu verarbeiten.
  • BETRIEB
  • Die bevorzugte Verwendung und der bevorzugte Betrieb des dynamischen Übersetzungssystems 20 und einer zugeordneten Methodologie werden nachfolgend beschrieben.
  • Die Übersetzungsvorrichtung 45 übersetzt nacheinander Ursprungscodeblöcke 5a, 5b und 5c in Übersetzter-Code-Blöcke 11a, 11b bzw. 11c. Nach der Übersetzung jedes Ursprungscodeblocks 5 gibt die Übersetzungsvorrichtung 45 eine Übersetzungsabbildung in die Abbildungstabelle 55 ein. Diese Abbildung zeigt eine Entsprechung zwischen den Blöcken 5a, 5b bzw. 5c und den Blöcken 11a, 11b bzw. 11c an. Da beispielsweise der Ursprungscodeblock 5a dem Übersetzter-Code- Block 11a entspricht, kann eine einzige Übersetzungsabbildung die Werte der Startadresse und der Endadresse der Codeblöcke 5a und 11a enthalten und kann den Datenwert oder die Datenwerte enthalten, der bzw. die anzeigt bzw. anzeigen, daß der Übersetzter-Code-Block 11a eine Übersetzung des Ursprungscodeblocks 5a ist.
  • Da jeder Block des Ursprungscodes 5 übersetzt und abgebildet wird, führt das Computersystem 23 (Fig. 2) den entsprechenden Block des übersetzten Codes 11 aus. Beispielsweise sei angenommen, daß Block 5a der erste Block des Ursprungscodes 5 ist, der durch die Übersetzungsvorrichtung 45 übersetzt wird. Nach dem Übersetzen des Ursprungscodeblockes 5a in den Übersetzter-Code-Block 11a, bildet die Übersetzungsvorrichtung 45 eine Entsprechung zwischen den Codeblöcken 5a und 11a in die Abbildungstabelle 55 ab. Das Computersystem 23 (Fig. 2) führt dann den Übersetzter-Code-Block 11a aus. Wie in der Technik bekannt ist, wird der Maschinenzustand des Computersystems 23 ständig aktualisiert, während der Übersetzter-Code-Block 11a ausgeführt wird. Jedoch wird anfänglich kein Versuch unternommen, die Anweisungs- und Zustandsabbildungen, die durch die Übersetzungsvorrichtung 45 beim Übersetzen des Ursprungscodes 5 verwendet werden, zu speichern.
  • Falls kein Synchronfehler auftritt, schließt das Computersystem 23 (Fig. 2) die Ausführung des Übersetzter-Code- Blocks 11a ab, und anschließend übersetzt die Übersetzungsvorrichtung 45 den nächsten Ursprungscodeblock 11b und bildet denselben ab. Wenn jedoch während der Ausführung des Übersetzter-Code-Blocks 11a ein Synchronfehler auftritt, so wird die Ausführung des Übersetzter-Code-Blocks 11a angehalten. Die Übersetzungsvorrichtung 45 durchsucht anschließend die Abbildungstabelle 55, um zu ermitteln, welcher Block des Ursprungscodes 5 dem Übersetzter-Code-Block 11a entspricht. Nach einem Ermitteln, daß der Ursprungscodeblock 5a dem Übersetzter-Code-Block 11a entspricht, übersetzt die Übersetzungsvorrichtung 45 den Ursprungscodeblock 5a neu. Während dieser erneuten Übersetzung sichert die Übersetzungsvorrichtung 45 die Anweisungs- und Zustandsabbildungen für jede Anweisung, die in der Lage ist, einen Synchronfehler zu bewirken.
  • Wenn die Neuübersetzung die Anweisung in dem Ursprungscode 5, die den Fehler bei der anfänglichen Übersetzung des ürsprungscodes 5 bewirkte, erreicht, überträgt die Übersetzungsvorrichtung 45 die Anweisungs- und Zustandsabbildungen der Programmunterbrechungsanweisung in dem Ursprungscodeblock 5a an den Zustandsumwandlungsmechanismus 17. Der Zustandsumwandlungsmechanismus 17 verfügt beim Auftreten des Synchronfehlers über eine Kenntnis des Maschinenzustands des Computersystems 23 und kombiniert die von der Übersetzungsvorrichtung 45 übertragenen Anweisungsabbildungsinformationen mit dem Maschinenzustand des Computer systems 23 (Fig. 2), um einen simulierten Maschinenzustand zu erzeugen. Der simulierte Maschinenzustand wird vorzugsweise in einer Simulierter-Maschinenzustand-Datenbank 19 gespeichert. Der simulierte Maschinenzustand ist der Maschinenzustand, der existiert hätte, wenn zum Zeitpunkt des Synchronfehlers statt des übersetzten Codes 11 der Ursprungscode 5 ausgeführt worden wäre. Durch in der Technik bekannte Methoden verarbeitet das Computersystem 23 (Fig. 2) den Synchronfehler unter Verwendung der Simulierter-Maschinenzustand-Informationen in der Simulierter-Maschinenzustand-Datenbank 19.
  • Zum Abschluß der ausführlichen Beschreibung sollte beachtet werden, daß es Fachleuten einleuchten wird, daß an dem be vorzugten Ausführungsbeispiel viele Variationen und Modifikationen vorgenommen werden können, ohne wesentlich von den Prinzipien der vorliegenden Erfindung abzuweichen. Alle derartigen Variationen und Modifikationen sollen hierin in dem Schutzbereich der vorliegenden Erfindung, wie er in den folgenden Patentansprüchen dargelegt ist, enthalten sein.

Claims (5)

1. Ein System (20), das folgende Merkmale aufweist:
eine Übersetzungsvorrichtung (45) zum Übersetzen eines ersten Blocks von Anweisungen (5) von einem ersten Computerprogramm in einen zweiten Block von Anweisungen (11) eines zweiten Computerprogramms, wobei die Übersetzungsvorrichtung auf ein Fehlersignal zum Neuübersetzen des ersten Blocks von Anweisungen (5) von dem ersten Computerprogramm in einen dritten Block von Anweisungen (11) anspricht;
einen Computer (23) zum Ausführen des zweiten Computerprogramms, zum Erzeugen eines Maschinenzustands und zum Erzeugen des Fehlersignals, wenn ein Fehler beim Ausführen des zweiten Computerprogramms auftritt; und
einen Zustandsumwandlungsmechanismus (17) zum Erzeugen eines simulierten Maschinenzustands auf der Basis des Maschinenzustands und einer Abbildung, die durch die Übersetzungsvorrichtung beim Neuübersetzen des ersten Blocks von Anweisungen (5) erzeugt wurde.
2. Das System gemäß Anspruch 1, bei dem der Computer (23) mit dem ersten Computerprogramm nicht kompatibel und mit dem zweiten Computerprogramm kompatibel ist.
3. Das System (20) gemäß Anspruch 1, das ferner eine Übersetzungsabbildungstabelle (55) zum Speichern einer Übersetzungsabbildung aufweist, die eine Entsprechung zwischen dem ersten Computerprogramm und dem zweiten Computerprogramm angibt, wobei die Übersetzungsvorrichtung (45) die Übersetzungsabbildung auf eine Erfassung des Fehlersignals hin die Übersetzungsabbil dung von der Übersetzungsabbildungstabelle (55) wiedererlangt und den ersten Block von Anweisungen auf der Basis von Informationen in der Übersetzungsabbildung lokalisiert.
4. Das System (20) gemäß Anspruch 1, bei dem die Übersetzungsvorrichtung (45) den ersten Block von Anweisungen (5) auf der Basis einer Übersetzungsabbildung, die eine Entsprechung zwischen dem ersten Block von Anweisungen (5) und dem zweiten Block von Anweisungen (11) anzeigt, neu übersetzt.
5. Das System (20) gemäß Anspruch 4, bei dem das System die Übersetzungsabbildung vor einer Ausführung des zweiten Blocks von Anweisungen (11) in eine Übersetzungsabbildungstabelle (55) speichert und die Übersetzungsabbildung vor einem Neuübersetzen des ersten Blocks von Anweisungen (5) von der Übersetzungsabbildungstabelle (55) wiedererlangt, wobei das System den ersten Block von Anweisungen (5) auf der Basis einer von der Übersetzungsabbildungstabelle (55) wiedererlangten Übersetzungsabbildung wiedererlangt.
DE69904766T 1998-02-25 1999-02-09 Kodenübersetzer Expired - Fee Related DE69904766T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/030,734 US6052530A (en) 1996-10-09 1998-02-25 Dynamic translation system and method for optimally translating computer code

Publications (2)

Publication Number Publication Date
DE69904766D1 DE69904766D1 (de) 2003-02-13
DE69904766T2 true DE69904766T2 (de) 2003-08-14

Family

ID=21855728

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69904766T Expired - Fee Related DE69904766T2 (de) 1998-02-25 1999-02-09 Kodenübersetzer

Country Status (4)

Country Link
US (1) US6052530A (de)
EP (1) EP0939370B1 (de)
JP (1) JPH11327918A (de)
DE (1) DE69904766T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
US7506175B2 (en) * 2000-11-06 2009-03-17 International Business Machines Corporation File language verification
US6993751B2 (en) * 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
GB0315844D0 (en) * 2003-07-04 2003-08-13 Transitive Ltd Method and apparatus for performing adjustable precision exception handling
US7437712B1 (en) * 2004-01-22 2008-10-14 Sprint Communications Company L.P. Software build tool with revised code version based on description of revisions and authorizing build based on change report that has been approved
US7607120B2 (en) * 2004-04-20 2009-10-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating data transformation routines for binary data
US20080052691A1 (en) * 2006-06-29 2008-02-28 Naveen Neelakantam Communicating with and recovering state information from a dynamic translator
EP2434396A1 (de) * 2010-09-24 2012-03-28 Group Business Software AG Automatischer Synchron-zu-Asynchron-Softwareanwendungsumwandler
US9503422B2 (en) 2014-05-09 2016-11-22 Saudi Arabian Oil Company Apparatus, systems, platforms, and methods for securing communication data exchanges between multiple networks for industrial and non-industrial applications
US10133740B2 (en) 2015-08-07 2018-11-20 Samsung Electronics Co., Ltd. Translation apparatus and control method thereof
PT3427148T (pt) 2016-03-11 2022-03-23 Lzlabs Gmbh Compilador de módulo de carregamento
US10769171B1 (en) * 2017-12-07 2020-09-08 Palantir Technologies Inc. Relationship analysis and mapping for interrelated multi-layered datasets
CN109754697B (zh) * 2019-01-18 2021-01-12 安徽理工大学 一种模拟断层错动的三维相似物理试验装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720778A (en) * 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
US4870610A (en) * 1987-08-25 1989-09-26 Bell Communications Research, Inc. Method of operating a computer system to provide customed I/O information including language translation
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
US5307504A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5432795A (en) * 1991-03-07 1995-07-11 Digital Equipment Corporation System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
TW197505B (de) * 1991-03-07 1993-01-01 Digital Equipment Corp
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5678047A (en) * 1995-05-22 1997-10-14 Bull Hn Information Systems Inc. Automatically invoked operating system translator
US5815720A (en) * 1996-03-15 1998-09-29 Institute For The Development Of Emerging Architectures, L.L.C. Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
US5732210A (en) * 1996-03-15 1998-03-24 Hewlett-Packard Company Use of dynamic translation to provide fast debug event checks
US5764962A (en) * 1996-07-31 1998-06-09 Hewlett-Packard Company Emulation of asynchronous signals using a branch mechanism
US5838978A (en) * 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
US5854928A (en) * 1996-10-10 1998-12-29 Hewlett-Packard Company Use of run-time code generation to create speculation recovery code in a computer system

Also Published As

Publication number Publication date
JPH11327918A (ja) 1999-11-30
DE69904766D1 (de) 2003-02-13
US6052530A (en) 2000-04-18
EP0939370B1 (de) 2003-01-08
EP0939370A1 (de) 1999-09-01

Similar Documents

Publication Publication Date Title
DE69904766T2 (de) Kodenübersetzer
DE68921776T2 (de) Prozessorssimulation.
DE69427174T2 (de) Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE60313652T2 (de) Verfahren und gerät zur kontrolle der umwandlung von programm-kodes
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE3151745C2 (de)
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE69231197T2 (de) Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur
DE60130840T2 (de) Vorrichtung und Verfahren zur Katalogisierung von symbolischen Daten zur Verwendung bei der Leistungsanalyse von Computerprogrammen
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE60006410T2 (de) Verfahren und system zum verteilen von objektorientierten rechnerprogrammen
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE10393968T5 (de) Dauerzwischenspeichervorrichtung und -verfahren
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE112018001124T5 (de) Verarbeitung von compare string durch decodiergestützte inline-erweiterung von mikrooperationen
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE69839113T2 (de) Direkte Vectoremulation eines geerbten Befehlssatzes

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: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee