DE69904766T2 - Kodenübersetzer - Google Patents
KodenübersetzerInfo
- 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
Links
- 238000013519 translation Methods 0.000 claims description 87
- 238000013507 mapping Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 17
- 230000001360 synchronised effect Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime 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.
- 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.
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)
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)
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 |
-
1998
- 1998-02-25 US US09/030,734 patent/US6052530A/en not_active Expired - Fee Related
-
1999
- 1999-02-09 EP EP99300931A patent/EP0939370B1/de not_active Expired - Lifetime
- 1999-02-09 DE DE69904766T patent/DE69904766T2/de not_active Expired - Fee Related
- 1999-02-22 JP JP11043363A patent/JPH11327918A/ja not_active Withdrawn
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 |