DE69727177T2 - Emulation von asynchronen Signalen mit Verzweigungsmechanismus - Google Patents

Emulation von asynchronen Signalen mit Verzweigungsmechanismus Download PDF

Info

Publication number
DE69727177T2
DE69727177T2 DE69727177T DE69727177T DE69727177T2 DE 69727177 T2 DE69727177 T2 DE 69727177T2 DE 69727177 T DE69727177 T DE 69727177T DE 69727177 T DE69727177 T DE 69727177T DE 69727177 T2 DE69727177 T2 DE 69727177T2
Authority
DE
Germany
Prior art keywords
emulation
code
block
asynchronous signal
translated
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
DE69727177T
Other languages
English (en)
Other versions
DE69727177D1 (de
Inventor
William B. Half Moon Bay Buzbee
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 DE69727177D1 publication Critical patent/DE69727177D1/de
Application granted granted Critical
Publication of DE69727177T2 publication Critical patent/DE69727177T2/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

Description

  • Hintergrund
  • Die vorliegende Erfindung betrifft die Emulation von Software, wie die dynamische Übersetzung, und betrifft insbesondere die Emulation von asynchronen Signalen unter Verwendung eines Verzweigungsmechanismus z. B. während einer dynamischen Übersetzung.
  • Eine erfolgreiche transparente Migration alter Software auf eine neue Plattform bringt die vollständige Emulation der Umgebung der Ursprungsmaschine (source machine) auf der neuen Maschine mit sich. Eine der größeren Schwierigkeiten bei der Implementierung ist die Signalhandhabung oder -verarbeitung, und einer der schwierigeren Teile der Signalverarbeitung bei der Emulation ist die Abgabe asynchroner Signale. Asynchrone Signale können zu jedem Zeitpunkt auftreten. Bei ihrem Empfang wird das Emulationssystem unterbrochen. Das Emulationssystem muß seinerseits die Unterbrechung des Ursprungs-Ausführungsprogramms (source executable), das gerade emuliert wird, simulieren, indem es die Verarbeitungsroutine des Ursprungs-Ausführungsprogramms (source executable handler) für das Signal emuliert, wobei die vollständige Zustandsinformation der Verarbeitungsroutine des Ursprungs-Ausführungsprogramms (source executable handler) weitergegeben wird. Die Erfassung der vollständigen Zustandsinformation während der Emulation ist häufig schwierig oder teuer.
  • Ferner kann bei effizienten Emulatoren, wie dynamische Übersetzungseinrichtungen, ein großer Leistungsvorteil erzielt werden, wenn die Ursprungsoperationen (source operations) neu geordnet werden und nur der Ursprungscode emuliert wird, der absolut notwendig ist. Dadurch entstehen jedoch Konflikte mit der Fähigkeit, die Zustandsinformation für die Übertragung an eine Verarbeitungsroutine eines Ursprungs-Ausführungsprogramms wiederzugewinnen. Die effiziente Emulation verläßt sich insbesondere auf die Begrenzung der Anzahl der Punkte, bei denen vollständige Zustandsinformation „erfaßbar" sein muß. Dies steht jedoch im Konflikt mit der Notwendigkeit, zu jeder Zeit vollständige Zustandsinformation erfassen zu können, weil das Auftreten asynchroner Signale zu jeder Zeit erfolgen kann.
  • Überblick über die Erfindung
  • Gemäß der bevorzugten Ausführung der beanspruchten Erfindung wird ein Verfahren zur Erleichterung der Übertragung der Kontrolle von einer normalen Emulation in einem Emulationssystem auf eine Verarbeitungsroutine für asynchrone Signale in dem Emulationssystem angegeben. Einem Verzweigungs-Zielregister wird global einer Adresse zugewiesen, die dazu verwendet wird, die Steuerung an die Verarbeitungsroutine für asynchrone Signale zu übertragen. Ein Voraussageregister wird global zugewiesen, um als ein Boole'sches Flag zu dienen. Innerhalb jedes einer Vielzahl von Codeblöcken innerhalb des Emulationssystems gibt es eine Operation zum Übertragen der Steuerung. Die Operation zum Übertragen der Steuerung verwendet eine Voraussage des global zugewiesenen Voraussageregisters. Die Operation zum Übertragen der Steuerung verzweigt zu einer Adresse, die in dem global zugewiesenen Verzweigungs-Zielregister gespeichert ist. In der bevorzugten Ausführung zeigt, soweit es die Architektur erlaubt, ein Vorabruf-Hinweis für die Operation zur Übertragung der Steuerung an, daß die Steueroperation nicht vorabgerufen wurde. Die Steueroperation wird in den Codeblock an einem Punkt gelegt, bei dem der Zustand wiedergewonnen werden kann, allgemein an das Ende des Codeblocks.
  • Wenn ein asynchrones Signal in dem Emulationssystem ankommt, wird das Emulationssystem unterbrochen. Information über das asynchrone Signal wird aufgezeichnet, und das Boole'sche Flag in dem global zugewiesenen Voraussageregister wird gesetzt, um anzuzeigen, daß ein asynchrones Signal angekommen ist. Die Emulation wird dann bei dem Punkt wieder aufgenommen, bei dem das Emulationssystem unterbrochen wurde.
  • Wenn die Emulation die Steueroperation innerhalb eines Codeblocks erreicht, wird die normale Emulation angehalten. Die Steuerung wird an die Verarbeitungsroutine für asynchrone Signale übergeben. Dies umfaßt die Verwendung der Operation zur Übertragung der Steuerung (Steuerungsübertragungsoperation). Die Operation zur Übertragung der Steuerung verwendet eine Voraussage des global zugewiesenen Voraussageregisters. Die Operation zur Übertragung der Steuerung verzweigt zu einer Adresse, die in einem global zugewiesenen Verzweigungs-Zielregister gespeichert ist. Innerhalb der Verarbeitungsroutine für asynchrone Signale wird die Ankunft des asynchronen Signals unter Verwendung der aufgezeichneten Signalinformation simuliert.
  • Die Erfindung erlaubt die Verarbeitung eines asynchronen Signals in einem Emulationssystem mit einem minimalen Verwaltungsaufwand.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein vereinfachtes Blockdiagramm, das ein Rechenssystem zeigt, welches einen dynamischen Übersetzer gemäß einer bevorzugten Ausführung der Erfindung umfaßt.
  • 2 zeigt die Verwendung eines dynamischen Übersetzers, um einen Code gemäß einer bevorzugten Ausführung der vorliegenden Erfindung dynamisch zu übersetzen.
  • 3 zeigt eine Abbildung von Adressen auf Blockinformation, eine Blockinformationstabelle und einen Cache-Speicher für übersetzten Code, der von einem dynamischen Übersetzer gemäß der bevorzugten Ausführung der vorliegenden Erfindung verwendet wird.
  • 4 zeigt, wie der dynamische Übersetzer der 1 asynchrone Signale gemäß einer bevorzugten Ausführung der Erfindung verarbeitet.
  • 5 zeigt, wie der dynamische Übersetzer, der in 1 gezeigt ist, einen Punkt ermittelt, bei dem angehalten und die vollständige Zustandsinformation des Emulationssystems gemäß einer bevorzugten Ausführung der vorliegenden Erfindung wiedergewonnen wird.
  • Beschreibung der bevorzugten Ausführung
  • 1 zeigt ein vereinfachtes Blockdiagramm eines Rechenssystems 7, das einen dynamischen Übersetzer 15 zum Ausführen einer Anwendung 10 verwendet. Der dynamische Übersetzer (Übersetzungsroutine) 15 unterscheidet sich von einem Compiler dadurch, daß ein Compiler ausführbaren Code vor der Programmlaufzeit erzeugt. Der dynamische Übersetzer 15 erzeugt übersetzten Code 8 während der Programmlaufzeit. Codeblöcke von der Anwendung 10 werden während der Ausführungszeit übersetzt. Die übersetzten Codeblöcke sind in 1 als übersetzter Code 8 gezeigt. Der übersetzte Code ist in einem Speicher (z. B. einem Cache-Speicher) gespeichert, so daß jeder Codeblock, der mehrmals ausgeführt wird, während der Programmlaufzeit nur einmal übersetzt werden muß. Dieser Ansatz ermöglicht die Flexibilität, daß der Code nicht vor der Programmlaufzeit übersetzt werden muß, reduziert jedoch den Verwaltungaufwand, der sich ergeben würde, wenn ein Codeblock bei jeder Ausführung übersetzt werden würde.
  • In der bevorzugten Ausführung wird der übersetzte Code 8 in einem Cache-Speicher 20 für übersetzte Code gespeichert. Wenn der Cache-Speicher 20 für übersetzten Code voll ist, kann es notwendig sein, einige zuvor übersetzte Codeblöcke zu verwerfen, um Platz für die neu übersetzten Codeblöcke zu machen. Dies macht es notwendig, daß die Codeblöcke, welche verworfen wurden, neu übersetzt werden, wenn sie wieder gebraucht werden, erlaubt jedoch eine potentielle Einsparung der Speichernutzung. Alternativ können die zuvor übersetzten Codeblöcke im Systemspeicher gespeichert werden, anstatt sie zu verwerfen.
  • 2 zeigt die Verwendung eines dynamischen Übersetzungs- und Ausführungsprozessen 39, zum dynamischen Übersetzen und Ausführen von Code von einer Anwendung 10. Die Anwendung 10 ist mit Befehlen 11 und Daten 12 dargestellt. Während Befehle 11 innerhalb der Anwendung 10 ausgeführt werden, wird immer dann, wenn ein Programmzähler zu einem Codeblock 13 innerhalb der Anwendung 10 zeigt, (in einem Schritt 16) ermittelt, ob der neue Codeblock 13 bereits von dem dynamischen Übersetzungs- und Ausführungsprozeß angetroffen und somit bereits vorher übersetzt wurde. Wenn nein, wird der Codeblock in einem Schritt 18 in Objektcode, der für das Hostcomputersystem geeignet ist, übersetzt. In einem Schritt 17 wird der übersetzte Code für den Codeblock 13 ausgeführt.
  • 3 illustriert weiter den Prozeß der Ausführung einer Anwendung durch den dynamischen Übersetzungs- und Ausführungsprozeß 39. In einem Schritt 21 wird die Ausführung der Anwendung gestartet. In einem Schritt 22 wird die Adresse einer nächsten Anwendung, die ausgeführt werden soll, nachgeschlagen. Dies erfolgt z. B. unter Verwendung einer 25 von Adressen auf Blockinformation. Die 25 von Adressen auf Blockinformation umfaßt Einträge für Codeblöcke in der Anwendung und kann zusätzlich Einträge für Codeblöcke in einer von mehreren Teilnehmern genutzten Bibliothek, welche von der Anwendung aufgerufen wird, umfassen. In der bevorzugten Ausführung sind in der Blockinformationsabbildung 25 nur Adressen für Codeblöcke enthalten, die tatsächlich für die Ausführung benötigt werden. Diese Adressen werden zur Programmlaufzeit, wenn die Codeblöcke benötigt werden, hinzugefügt.
  • Ein Codeblock ist eine Gruppierung von einem oder mehreren Befehlen. Der Codeblock kann somit aus einem einzelnen Befehl, einem geradlinigen Durchlauf von Befehlen, der bei einer Verzweigung endet (ähnlich einem „Grundblock", der von einem Compiler verwendet wird), einer gesamten Prozedur oder irgendeiner anderen Gruppierung von Befehlen bestehen. In den bevorzugten Ausführungen der vorliegenden Erfindung ist der Codeblock die Übersetzungseinheit, die von dem dynamischen Übersetzer 15 verwendet wird. Diese Übersetzungseinheit kann z. B. eine Prozedur, ein Grundblock, eine Seite, eine Cache-Zeile, ein Befehl oder irgendeine andere Gruppierung von Befehlen sein.
  • Ein Eintrag in der 25 von Adressen auf Blockinformation umfaßt wenigstens eine erste Programmadresse, die die Anfangsadresse eines Codeblocks innerhalb einer Anwendung oder eines Codeblocks innerhalb einer von mehreren Nutzer genutzten Bibliothek weist. Zusätzlich umfaßt jeder Eintrag einen Blockinformationszeiger, der auf eine Position in einer Blockinformationstabelle 26 weist, die Blockinformation über den Codeblock von der Anwendung oder gemeinsam genutzten Bibliothek umfaßt. Die Blockinformation innerhalb der Blockinformationstabellte 26 wird einen Zeiger auf übersetzten Code umfassen, wenn übersetzter Code für den Codeblock existiert.
  • Nach dem Nachschlagen einer nächsten Anwendungsadresse, die ausgeführt werden soll (in einem Schritt 23), wird ermittelt, ob übersetzter Code für den Codeblock von der Anwendung oder gemeinsam genutzten Bibliothek existiert. Dies erfolgt z. B. auf der Grundlage von Information, die aus der Blockinformationstabelle 26 wiedergewonnen wird. Wenn für den Codeblock keine Übersetzung existiert, wird der Codeblock in einem Schritt 24 übersetzt. Dann wird der übersetzte Code ausgeführt.
  • Der Cache-Speicher 20 für übersetzten Code wird dazu verwendet, übersetzte Codeblöcke für eine effiziente Ausführung zu halten. Die Anzahl der Codeblöcke, welche von dem Cache-Speicher 20 für übersetzten Code gehalten wird, variiert z. B. abhängig von dem verfügbaren Speicher. In 3 sind die Codeblöcke innerhalb des Cache-Speichers 20 für übersetzten Code durch einen Codeblock 27, einen Codeblock 28 und einen Codeblock 29 repräsentiert. Jeder dieser Codeblöcke kann eine übersetzte Prozedur von einer gemeinsam genutzten Bibliothek repräsentieren.
  • Codeblöcke innerhalb des Cache-Speichers 20 für übersetzten Code können zu anderen Codeblöcke innerhalb des Cache-Speichers 20 für übersetzten Code verzweigen. Eine Verzweigung innerhalb des Codeblocks 27 weist so zu einer Position innerhalb des Codeblocks 28. Ähnlich wird nach der Ausführung von Code in dem Codeblock 28 die Ablaufsteuerung des Programms bei dem Codeblock 29 fortfahren. Wie in 3 dargestellt, wird nach der Ausführung des Codes in dem Codeblock 27 die Ablaufsteuerung des Programms bei einem Codeblock außerhalb des Cache-Speichers 27 für übersetzten Code fortfahren. Ähnlich wird nach der Ausführung von Code in dem Codeblock 29 eine dynamische Verzweigung zu einer Adresse innerhalb eines Codeblocks außerhalb des Cache-Speichers 20 für übersetzten Code springen.
  • Wenn die Ausführung von Befehlen innerhalb eines Codeblocks innerhalb des Cache-Speichers 20 für übersetzten Code begonnen hat, wird die Ausführung von Befehlen innerhalb des Codeblocks und anderer Codeblöcke innerhalb des Cache-Speichers für übersetzten Code fortgesetzt, bis ein Befehl ausgeführt werden soll, der nicht in einem Codeblock innerhalb des Cache-Speichers 20 für übersetzten Code enthalten ist. Fehlt dieser in dem Cache-Speicher, wird die Programmsteuerung zum Schritt 22 zurückkehren, wo eine nächste Anwendungsadresse, die ausgeführt werden soll, nachgeschlagen wird. Der geeignete Codeblock wird übersetzt (wenn er nicht bereits übersetzt ist) und in den Cache-Speicher 20 für übersetzten Code gelegt. Die Ausführung der Anwendung kann dann fortfahren.
  • 4 zeigt, wie ein Emulationssystem, wie ein dynamischer Übersetzer 15, asynchrone Signale gemäß einer bevorzugten Ausführung der vorliegenden Erfindung verarbeitet. In einem Schritt 31 wird bei Ankunft eines asynchronen Signals das Emulationssystem unterbrochen. In einem Schritt 32 zeichnet das Emulationssystem z. B. in einer Warteschlage Information über das Signal auf.
  • In einem Schritt 33 wird die Emulation bei dem Punkt, bei dem das asynchrone Signal angekommen ist und das Emulationssystem unterbrochen wurde, wieder aufgenommen. In einem Schritt 34 wird die normale Emulation gestoppt, wenn das Emulationssystem einen Punkt erreicht, bei dem der Zustand wiederhergestellt werden kann. In einem Schritt 35 wird die Ankunft des asynchronen Signals mit Hilfe der aufgezeichneten Signalinformation simuliert. Die vollständige Zustandsinformation des Systems wird erfaßt, und die Emulation der Signalverarbeitung des Ursprungsprogramms wird aufgerufen.
  • Bei Beendigung der Emulation der Signalverarbeitung des Ursprungsprogramms kann die Steuerung an das Emulationssystem bei dem Punkt zurückgegeben werden, bei dem die An kunft des asynchronen Signals simuliert wurde. Alternativ wird die Steuerung nicht sofort bei Beendigung der Emulation der Signalverarbeitung des Ursprungsprogramms zurückgegeben.
  • 5 zeigt eine effiziente Art und Weise zur Ausführung des Schrittes 34 gemäß einer bevorzugten Ausführung der vorliegenden Erfindung. Dies erfolgt z. B. unter Verwendung einer Computerarchitektur, welche das Konzept der Aufteilung einer Verzweigung in die kleineren Schritte, aus denen sie zusammengesetzt ist, unterstützt. Siehe z. B. V. Kathail et al., HP Laboratories Technological Report: HPL PlayDoh Architecture Specification: Version 1.0; HPL-93-80m, Februar 1994, Seiten 38–40.
  • Das Format für eine typische Verzweigung alten Stils ist in Tabelle 1 unten angegeben: Tabelle 1
    Figure 00070001
  • Der in Tabelle 1 angegebene Verzweigungsbefehl ist ein Vergleichs- und Verzweigungsbefehl, der z. B. beschrieben ist in dem PA-RISC 1.1 Architecture and Instruction Set Reference Manual, HP Teilernummer: 0974-90039, Februar 1994, dritte Ausgabe, Seiten 5–72. In dem Befehl wird ein allgemeines Register 4 mit Null verglichen, und wenn es nicht gleich Null ist, wird die Steuerung an die Position „foo" übergeben. Das Konzept umfaßt hier drei Schritte. Im ersten Schritt wird ermittelt, ob eine Verzweigung stattfinden soll (if %gr4 = 0). Im zweiten Schritt wird ermittelt, wohin verzweigt werden soll (foo). In einem dritten Schritt wird die Verzweigungsanforderung selbst ausgeführt.
  • In der bevorzugten Ausführung der vorliegenden Erfindung werden die drei Schritte eines Verzweigungsbefehls in einzelne Operationen aufgeteilt. Dies dient als ein Mechanismus zur Unterbrechung der normalen Emulation, wenn das Emulationssystem einen Punkt erreicht, bei dem die Zustandsinformation wiedergewonnen werden kann, wie im Schritt 34 in 4 gezeigt ist.
  • 5 zeigt den Mechanismus zum Unterbrechen der normalen Emulation, wenn das Emulationssystem einen Punkt erreicht, bei dem die Zustandsinformation wiedergewonnen werden kann, gemäß der bevorzugten Ausführung der vorliegenden Erfindung. In einem Schritt 41 wird ein Verzweigungs-Zielregister global zugewiesen. In dem Verzweigungs-Zielregister liegt eine Adresse des Codes, der asynchrone Signale verarbeitet. Vorabrufhinweise auf den Verzweigungsbefehl werden eingestellt, um der zugrundeliegenden Hardware mitzuteilen, keine Anstrengungen für einen Vorabruf für dieses Ziel zu verschwenden, weil typischerweise selten darauf zugegriffen wird. Da die Verzweigungsbefehle einen Zugriff auf globale Register erlauben, muß der Schritt 41 nur einmal ausgeführt werden. Dies ist ein Vorteil gegenüber herkömmlichen Verzweigungsbefehlen. Bei herkömmlichen Verzweigungsbefehlen wird der Schritt 41 in der Befehlsdecodierung-Pipeline jedesmal ausgeführt, wenn eine Verzweigung angetroffen wird.
  • Das heißt, üblicherweise codieren Verzweigungsbefehle das Ziel in dem tatsächlichen Befehl. Der in Tabelle 2 unten angegebene Code dient zur Erläuterung dieses Sachverhalts.
  • Tabelle 2
    Figure 00080001
  • Für den in Tabelle 2 angegebenen Code gilt, daß dann, wenn die Verzweigung (b; branch) bei 0x100 PC-abhängig ist – der übliche Fall – die Verzweigung tatsächlich für die Hardware aussehen würde wie eine „Übertragung der Steuerung auf eine Position, die der momentanen Position plus 50 entspricht". Die Materialisierung dieser Zieladresse, in diesem Fall 0x150, erfolgt in der Befehlsdecodierungs-Pipeline jedesmal dann, wenn der Verzweigungsbefehl auftritt. Die Decodierungs-Pipeline materialisiert diese Adresse so schnell sie kann, um sie an die Befehls-Vorabruf-Einheit zu übergeben, um den Fall vorzubereiten, daß die Verzweigung schließlich durchgeführt wird.
  • In einem Schritt 42 wird ein Voraussageregister global zugewiesen, um als ein Boole'sches Flag zu dienen. Dieses Flag spezifiziert, ob ein asynchrones Signal ansteht, z. B. in einer Warteschlange, das an die geeignete Verarbeitungsroutine vergeben werden soll. Die Ressourcen innerhalb des Voraussageregisters werden auf „FALSCH" initialisiert. Der Schritt 42 muß auch nur einmal durchgeführt werden.
  • In einem Schritt 43 wird eine einzelne Operation zur Übertragung der Steuerung in jeden anwendbaren Block übersetzten Codes eingebaut. Diese Verzweigungsoperation wird über das Voraussageregister gesteuert, das im Schritt 42 zugewiesen wurde.
  • Normalerweise wird die im Schritt 43 eingestellte Verzweigungsoperation nicht ausgeführt, weil der normale Zustand der Steuerung des global zugewiesenen Voraussageregisters im Schritt 42 FALSCH ist. Wenn ein asynchrones Signal ankommt und Information über das asynchrone Signal, z. B. in einer Warteschlange, gespeichert wird, werden als ein Teil des Schrittes 32 die Ressourcen innerhalb des Voraussageregisters auf „WAHR" umgeschaltet. In diesem Fall wird im Schritt 34 die Verzweigung ausgeführt, und im Schritt 35 wird die Ankunft des asynchronen Signals unter Verwendung der gespeicherten Information simuliert. Der in Tabelle 3 unten angegebene Code dient zur Erläuterung der bevorzugten Ausführung der vorliegenden Erfindung: Tabelle 3
    block_A:
    ADD %gr1, %gr1, %gr1 ; Ausführen einiger Operationen
    B,N block_B ; Verzweigen zu Block_B
  • Der Sourcecode (Ursprungscode) innerhalb des Block_A führt verschiedene Operationen aus, die durch ADD repräsentiert sind, und verzweigt dann zu dem Sourcecode Block_B.
  • Wenn ein dynamischer Übersetzer 15 während der dynamischen Übersetzung verwendet wird, wird eine Übersetzung für Block_A aufgebaut, wie in Tabelle 4 unten angegeben. Tabelle 4
    translated_block_A:
    LDW emulated_gr1(27),%tmp_reg1 ; Laden des Wertes von %gr1 aus dem Speicher
    ADD %tmp_reg1, %tmp_reg1; %tmp_reg1 ; Ausführen einer UND-Operation
    STW %temp_reg1; emulated_gr1(27) ; Speichern des modifizierten %gr1
    B,N translated_block_B ; Verzweigen zu translated_block_B
  • In Tabelle 5 unten wird ein Verzweigungsbefehl am Ende des translated_block_A hinzugefügt, um zu überprüfen, ob ein asynchrones Signal angekommen ist. Tabelle 5
    translated_block_A:
    LDW emulated_gr1(27),%tmp_reg1 ; Laden des Wertes von %gr1 aus dem Speicher
    ADD %tmp_reg1, %tmp_reg1, %tmp_reg1 ; Ausführen einer UND-Operation
    STW %tmp_reg1, emulated_gr1(27) ; Speichern des modifizierten %gr1
    LDW signal_flag(27),%tmp_reg2 ; Laden des Signal Flag (addiert)
    COMIB,!=0,%tmp_reg2,handle_signal ; Ausbrechen, falls das Signal angekommen ist (addiert)
    B,N translated_block_B ; Verzweigen zu translated_block_B
  • Unter Verwendung der Tabelle 5 oben muß jedesmal, wenn translated block A ausgeführt wird, der Code das Handle Signal lokalisieren; ermitteln, ob die Verzweigung ausgeführt werden soll; und diese dann ausführen oder nicht. Dies bedeutet eine erhebliche Menge an Verwaltungsaufwand, insbesondere wenn dieser Code zu einer Anzahl von Codeblöcken innerhalb des Emulationssystems hinzuaddiert wird.
  • Um diesen Verwaltungsaufwand zu minimieren, werden in der bevorzugten Ausführung der vorliegenden Erfindung das Verzweigungs-Zielregister und das Voraussageregister zugewiesen und global eingestellt, so daß auf diese über Verzweigungsbefehle in jedem Block zugegriffen werden kann. Dies muß nur einmal ausgeführt werden. Code, welcher dies illustriert, ist in Tabelle 6 unten angegeben. Tabelle 6
    %b2 = handle_signal, Not_Taken ; Zuweisen und Einstellen des Verzweigungs-Zielregisters 2, das auf Code verweist, der zum Verarbeiten von Signalen verwendet wird, und zusätzlich Einstellen eines Codevorabrufhinweises, um anzuzeigen, daß diese Verzweigung selten genommen wird
    %p2 = CMP %gr0 != %gr0 ; Zuweisen des Voraussageregisters 2 und Initialisieren auf FALSCH
  • Das Verzweigungs-Zielregister und das Voraussageregister werden global zugewiesen und eingestellt, so daß in jedem Block nur einmal durch Verzweigungsbefehle auf sie zugegriffen werden kann, und Code für den Körper des Blocks wird wie in Tabelle 7 unten gezeigt erzeugt: Tabelle 7
    translated_block_A:
    %b3 = translated_block_B, Taken ; Einstellen des Verzweigungs-Zielregisters 3 für die Verzweigung zu B und Einstellen des Hinweises, um anzuzeigen, daß diese Verzweigung üblicherweise genommen wird
    LDW emulated_gr1(27),%tmp_reg1 ; Laden des Wertes von %gr1 aus dem Speicher
    ADD %tmp_reg1, %tmp_reg1, %tmp_reg1 ; Ausführen einer UND-Operation
    STW %tmp_reg1, emulated_gr1(27) ; Speichern des modifizierten %gr1
    LDW signal_flag(27),%tmp_reg2 ; Laden des Signal_Flags (addiert)
    ?%p2: B %b2 ; Wenn Signal, geh zu Handle_Signal
    B %b3 ; Verzweigen zu translated_block_B
  • Für den Code in Tabelle 7 muß das Handle_Signal nicht lokalisiert werden. Es muß nur ermittelt werden, ob die Verzweigung genommen werden soll, und diese dann ausgeführt werden oder nicht. Dies reduziert erheblich den Verwaltungsaufwand, der für diese Verzweigung innerhalb des translated_block_A notwendig ist.
  • Die obige Erläuterung offenbart und beschreibt lediglich beispielhafte Verfahren und Ausführungen der Erfindung. Der Fachmann wird verstehen, daß die beanspruchte Erfindung auf andere spezifische Art ausgeführt werden kann. Die Offenbarung der vorliegenden Erfindung soll daher den Bereich der Erfindung, der in den folgenden Ansprüchen angegeben ist, illustrieren, jedoch nicht begrenzen.

Claims (8)

  1. Verfahren zum Verarbeiten eines asynchronen Signals in einem Emulationssystem, mit folgenden Verfahrensschritten: (a) bei Eingang eines asynchronen Signals, Ausführen der folgenden Unterschritte: (a.1) Unterbrechen des Emulationssystems (31), (a.2) Aufzeichen von Information über das asynchrone Signal (32), (a.3) Setzen eines Boolschen Flags (42) in einem global zugewiesenen Voraussageregister, um anzuzeigen, daß ein asynchrones Signal angekommen ist, und (a.4) Wiederaufnehmen der Emulation (33) bei einem Punkt, bei dem das Emulationssystem unterbrochen wurde; und (b) wenn die Emulation einen Punkt erreicht, bei dem der Zustand wiederhergestellt werden kann, Ausführen der folgenden Unterschritte: (b.1) Stoppen der normalen Emulation (34) und (b.2) Übertragen der Steuerung an eine Routine zum Verarbeiten asynchroner Signale unter Verwendung einer Operation zur Übertragung der Steuerung (43), wobei die Operation zur Übertragung der Steuerung (43) als eine Voraussage das global zugewiesene Voraussageregister (42) verwendet und die Operation zur Übertragung der Steuerung zu einer Adresse verzweigt, die in einem global zugewiesenen Verzweigungs-Zielregister (41) gespeichert ist.
  2. Verfahren nach Anspruch 1, mit dem weiteren Verfahrensschritt: (c) Simulieren der Ankunft des asynchronen Signals unter Verwendung der Information.
  3. Verfahren nach Anspruch 1, wobei im Schritt (b) der Punkt, bei dem der Zustand wiederhergestellt werden kann, am Ende eines Codeblocks liegt.
  4. Verfahren nach Anspruch 1, wobei im Unterschritt (b.2) ein Vorabruf-Hinweis für die Operation zur Übertragung der Steuerung anzeigt, daß die Steueroperation nicht vorabgerufen wurde.
  5. Speichermedium mit einer Software, die dann, wenn sie auf einem Rechensystem läuft, ein Verfahren zum Verarbeiten eines asynchronen Signals in einem Emulationssystem ausführt, mit folgenden Verfahrensschritten: (a) bei Eingang eines asynchronen Signals, Ausführen der folgenden Unterschritte: (a.1) Unterbrechen des Emulationssystems (31), (a.2) Aufzeichen von Information über das asynchrone Signal (32), (a.3) Setzen eines Boolschen Flags (42) in einem global zugewiesenen Voraussageregister, um anzuzeigen, daß ein asynchrones Signal angekommen ist, und (a.4) Wiederaufnehmen der Emulation (33) bei einem Punkt, bei dem das Emulationssystem unterbrochen wurde; und (b) wenn die Emulation einen Punkt erreicht, bei dem der Zustand wiederhergestellt werden kann, Ausführen der folgenden Unterschritte: (b.1) Stoppen der normalen Emulation (34) und (b.2) Übertragen der Steuerung an eine Routine zum Verarbeiten asynchroner Signale unter Verwendung einer Operation zur Übertragung der Steuerung (43), wobei die Operation zur Übertragung der Steuerung (43) als eine Voraussage das global zugewiesene Voraussageregister (42) verwendet und die Operation zur Übertragung der Steuerung zu einer Adresse verzweigt, die in einem global zugewiesenen Verzweigungs-Zielregister (41) gespeichert ist.
  6. Speichermedium nach Anspruch 5, wobei das Verfahren zusätzlich den folgenden Schritt umfaßt: (c) Simulieren der Ankunft des asynchronen Signals unter Verwendung der im Unterschritt (a.2) aufgezeichneten Information.
  7. Speichermedium nach Anspruch 5, wobei in dem Schritt (b) der Punkt, zu dem der Zustand wiederhergestellt werden kann, am Ende eines Codeblocks liegt.
  8. Speichermedium nach Anspruch 5, wobei in dem Unterschritt (b.2) ein Vorabruf-Hinweis für die Operation zur Übertragung der Steuerung anzeigt, daß die Steueroperation nicht vorabgerufen wurde.
DE69727177T 1996-07-31 1997-07-01 Emulation von asynchronen Signalen mit Verzweigungsmechanismus Expired - Fee Related DE69727177T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US690132 1996-07-31
US08/690,132 US5764962A (en) 1996-07-31 1996-07-31 Emulation of asynchronous signals using a branch mechanism

Publications (2)

Publication Number Publication Date
DE69727177D1 DE69727177D1 (de) 2004-02-19
DE69727177T2 true DE69727177T2 (de) 2004-11-04

Family

ID=24771224

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69727177T Expired - Fee Related DE69727177T2 (de) 1996-07-31 1997-07-01 Emulation von asynchronen Signalen mit Verzweigungsmechanismus

Country Status (4)

Country Link
US (1) US5764962A (de)
EP (1) EP0822486B1 (de)
JP (1) JPH1078873A (de)
DE (1) DE69727177T2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
JP2817786B2 (ja) * 1996-07-15 1998-10-30 日本電気株式会社 シミュレーション装置及びシミュレーション方法
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
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
US6106565A (en) * 1997-02-27 2000-08-22 Advanced Micro Devices, Inc. System and method for hardware emulation of a digital circuit
US6658486B2 (en) * 1998-02-25 2003-12-02 Hewlett-Packard Development Company, L.P. System and method for efficiently blocking event signals associated with an operating system
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
US6421635B1 (en) * 1998-11-02 2002-07-16 Hewlett-Packard Company Method and apparatus for handling asynchronous signals while emulating system calls
US6832370B1 (en) * 2000-05-09 2004-12-14 Hewlett-Packard Development, L.P. Data speculation within modulo scheduled loops
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US20030093774A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton State-specific variants of translated code under emulation
GB0315844D0 (en) * 2003-07-04 2003-08-13 Transitive Ltd Method and apparatus for performing adjustable precision exception handling
DE102005003667B4 (de) * 2005-01-26 2008-06-19 Fujitsu Siemens Computers Gmbh Emulator und Verfahren zur Behandlung asynchroner Unterbrechungen bei einer Emulation
GB2426083A (en) * 2005-05-09 2006-11-15 Sony Comp Entertainment Europe Software emulation of a pipeline processor
US8141066B2 (en) * 2007-01-12 2012-03-20 Hewlett-Packard Development Company, L.P. Cross-platform architecture for replicating profiling scheme in a computer system
JP6163898B2 (ja) * 2013-06-11 2017-07-19 富士通株式会社 計算装置、計算方法、および計算プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW197505B (de) * 1991-03-07 1993-01-01 Digital Equipment Corp
US5628017A (en) * 1993-03-15 1997-05-06 Microsoft Corporation Method and system for providing event-response capabilities to pseudocode
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces

Also Published As

Publication number Publication date
JPH1078873A (ja) 1998-03-24
EP0822486B1 (de) 2004-01-14
EP0822486A3 (de) 2001-07-25
EP0822486A2 (de) 1998-02-04
DE69727177D1 (de) 2004-02-19
US5764962A (en) 1998-06-09

Similar Documents

Publication Publication Date Title
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE19681660C2 (de) Verfahren zum Ausführen von Befehlssätzen, die Operationen an verschiedenen Datenarten und Register eines gemeinsamen logischen Registersatzes spezifizieren
DE19983768B4 (de) Verfahren zum Ausführen von für verschiedene Befehlssatzarchitekturen geschriebener Firmware
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE112012000303B4 (de) Dynamische binäre Optimierung
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE19983632B4 (de) Emulation eines Befehlssatzes bei einem Befehlssatzarchitekturübergang
DE60203612T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE69724322T2 (de) Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE112012002241T5 (de) Migration eines transparenten Dateisystems zu einem neuen physischen Speicherort
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE2517276A1 (de) Datenverarbeitungssystem

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