[go: up one dir, main page]

DE69621493T2 - Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen - Google Patents

Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen

Info

Publication number
DE69621493T2
DE69621493T2 DE69621493T DE69621493T DE69621493T2 DE 69621493 T2 DE69621493 T2 DE 69621493T2 DE 69621493 T DE69621493 T DE 69621493T DE 69621493 T DE69621493 T DE 69621493T DE 69621493 T2 DE69621493 T2 DE 69621493T2
Authority
DE
Germany
Prior art keywords
instruction
unimplemented
code
emulation
field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69621493T
Other languages
English (en)
Other versions
DE69621493D1 (de
Inventor
Jaspal Kohli
Niteen A. Patkar
Farnad Sajjadian
Shalesh Thusoo
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE69621493D1 publication Critical patent/DE69621493D1/de
Application granted granted Critical
Publication of DE69621493T2 publication Critical patent/DE69621493T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

    Hintergrund der Erfindung Technisches Gebiet
  • Die Erfindung bezieht sich auf Methoden und Systeme zur Handhabung von Ausnahmen in Computersystemen, und im Speziellen auf Methoden und Systeme zur Handhabung von durch nicht implementierte Befehle ausgelöste Ausnahmen durch Kombination von Hardware und Software.
  • Verwandter Stand der Technik
  • Die Implementierung von allen in der Spezifikation einer speziellen Mikroprozessorarchitektur definierten Befehle in Hardware ist nicht immer möglich oder wünschenswert. Beispielsweise können einige Befehle in einer Spezifikation enthalten sein, um Software, die für frühere Version des Mikroprozessors geschrieben wurde, zu unterstützen. Die Einbeziehung von Hardware zur Implementierung dieser Befehle kann einen beträchtlichen Einfluß auf den kritischen Weg des Prozessors haben, und wenn diese Befehle nur sporadisch genutzt werden, kann der Kostenaufwand für das Einbeziehen der notwendigen Hardware nicht gerechtfertigt werden. In solchen Situationen nutzen die Designer oft überwachende Software zum Abrufen, Interpretieren und Emulieren der nicht implementierten Befehle.
  • GB-A-2203572 offenbart ein Verfahren und ein System zur Emulation von nicht implementierten Befehlen. Die Codefolge zur Emulation der Befehle ist in einer Speicheradresse gespeichert, die sich auf einen Befehlscode (op-Code) und einen qualifizierenden Code (direkt folgendes Byte in der Befehlsausführung oder anderes diskretes Element des Befehls) bezieht.
  • Konventionelle Methoden der Softwareemulation von nicht implementierten Befehlen verwenden Sprungvektoren, um die Kontrolle des Programmflußes vom Prozessor zu einer Softwareroutine oder zu Emulationscodes zur überwachenden Software zu transferieren. Befehle sind in einem entsprechenden Befehlscode durch verschiedene Bitfelder spezifiziert. Typischerweise werden alle nicht implementierten Befehle mit dem gleichen Typ von Befehlsfeld durch einen Sprungvektor abgearbeitet, unabhängig der Befehlsparameter, die in den verbleibenden Bitfeldern des Befehlscodes spezifiziert sind. Zum Beispiel nutzen alle nicht implementierten Ladebefehle unabhängig von den durch den Befehl spezifizierten Quell- und Zielregistern den gleichen Sprungvektor, um auf den Emulationscode zuzugreifen. Diese Parameter werden durch die vom Sprungvektor referierte Emulationssoftware erhalten. Daher muß der Emulationscode Transferkontrollfunktionen wie eine Sprungtabelle beinhalten, um auf die im Speicher vorliegenden nicht implementierten Befehle zuzugreifen, sowie Routinen zur Interpretation der Felder im Befehlscode, und zum Abarbeiten nicht implementierter Befehle durch Befehle, für die der Prozessor implementierende Hardware vorsieht.
  • Die vom Emulationscode umfaßte Transferkontrolle und Interpretations- und Abarbeitungsroutinen fügen zu dem Code eine wesentliche Anzahl von zusätzlichen Schritten hinzu und erhöhen die Zeit, die benötigt wird, um den Emulationscode durchzuführen. Zum Beispiel kann ein zum Bearbeiten des Abrufs von Ladebefehlen vom Speicher geeigneter Emulationscode, zur Identifikation der in dem Befehl spezifizierten Quell- und Zielregister und zur Abarbeitung der Befehle mittels implementierter Befehle zwanzig bis vierzig Schritte in Assemblersprache benötigen, von denen nur sieben oder acht Schritte der aktuellen Verarbeitungsroutine entsprechen. Daher gibt es ein Bedarf an schnelleren Softwareemulationsprozessen, die zur Emulation nicht implementierter Befehle auf weniger Codeschritte zurückgreifen.
  • Die vorliegende Erfindung sieht ein Verfahren vor, das die Schritte von Anspruch 1 umfaßt, sowie ein System, das die Merkmale nach Anspruch 11 umfaßt.
  • Die vorliegende Erfindung ist ein System und ein Verfahren zur Softwareemulation von nicht implementierten Befehlen, das dem Befehlstyp und den Parameterfeldern der nicht implementierten Befehle angepaßte Emulationscodes benutzt. Für jeden nicht implementierten Befehl wird ein dem Befehlstyp und den Parameterfeldern des entsprechenden Befehlscodes angepaßten Emulationscode vorbereitet und in einer den Feldern entsprechenden Speicheradresse gespeichert. Die Ausgabe-Sprunglogik berechnet dann mittels der gelesenen Felder die Speicheradresse des entsprechenden Emulationscodes und transferiert die Kontrolle direkt zu diesem Emulationscode. Die Ausgabe-Sprunglogik übergibt ebenfalls Parameterfelder des nicht implementierten Befehls an die Register in dem Prozessor, in dem die Daten für die Bearbeitung durch den Emulationscode bereitstehen.
  • Da die Ausgabe-Sprunglogik den Informationstyp und die Parameterfelder eines nicht implementierten Befehls als Teil des Prozesses der Ausnahmebearbeitung liest, muß der Emulationscode keine Routine enthalten, die den nicht implementierten Befehl aus dem Speicher abruft und die Parameterfelder des abgerufenen Befehls interpretiert. Statt dessen ist der Emulationscode auf die Parameter- und Befehlsfelder des entsprechenden nicht implementierten Befehls zugeschnitten und wird daher schneller ausgeführt. Indem die Emulationscodes bei den Speicheradressen abgelegt werden, die den durch die Ausgabe-Sprunglogik gelesenen Felder entsprechen, kann die Logik direkt zu der entsprechenden Emulation springen, wenn die Ausnahmebedingung ausgelöst ist.
  • Gemäß der vorliegenden Erfindung erkennt die Ausgabe-Sprunglogik nicht implementierte Befehle und berechnet in einer Emulationscodetabelle eine Speicheradresse für einen Sprungvektor mittels eines Offsets, der durch den Befehlstyp und die Parameterfelder festgelegt ist. Die Felder werden nach links verschoben, um zu gewährleisten, daß die Sprungvektoren ausreichend beabstandet sind, um komplette Emulationscodefolgen in die Emulationscodetabelle selbst aufzunehmen. Der Prozessor springt direkt zu dem Sprungvektor, der den ersten Befehl in einer Emulationscodefolge bildet, die auf die Parameter- und Befehlsfelder des nicht implementierten Befehls zugeschnitten ist. Die Operandeninformation zur Bearbeitung des nicht implementierten Befehls wird durch den Emulationscode aus dem Prozessorregister ausgelesen.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine schematische Darstellung eines Verfahrens nach dem Stand der Technik zur Bearbeitung nicht implementierter Befehle;
  • Fig. 2 ist eine schematische Darstellung eines Verfahrens zur Bearbeitung nicht implementierter Befehle entsprechend der vorliegenden Erfindung;
  • Fig. 3 ist eine schematische Darstellung des Verfahrens zur Erzeugung einer Adresse in der Emulationscodetabelle von einem nicht implementierten Befehl;
  • Fig. 4 ist ein Blockschaltbild eines Verfahrens zur Softwareemulation nicht implementierter Befehle entsprechend der vorliegenden Erfindung;
  • Fig. 5 ist ein schematisches Schaltbild der Logik, die der Erzeugung der Adresse nach Fig. 3 aus den Feldern eines nicht implementierten Befehls dient.
  • Detaillierte Beschreibung der Erfindung
  • Fig. 1 zeigt eine schematische Darstellung eines konventionellen Systems 100 zur Bearbeitung nicht implementierter Befehle. System 100 umfaßt ein Prozessor 110 und einen mit dem Prozessor 110 verbundenen Speicher 150. Prozessor 110 umfaßt die Ausgabe-Sprunglogik 130 und verschiedene Prozessorregister 162, 164, 166 zur Abarbeitung von Sprungbefehlen sowie einen Speicher 150, der eine Sprungtabelle 140 und eine überwachende Software 160 zur Sprungabarbeitung umfaßt. Ein Programmzähler-Register (program counter, PC) 120 im Prozessor 110 ist mit einem nicht implementierten Befehl 116 einer Befehlsfolge 122 dargestellt, welche ebenfalls implementierte Befehle 112, 114, 118 umfaßt, beispielsweise Befehle, für die der Prozessor 110 implementierende Logik bereithält.
  • Eine Basisadresse 142 spezifiziert die Speicherstelle von Sprungtabelle 140 in Speicher 150 und einen Sprungvektor 144, der dem Befehlstyp des nicht implementierten Befehls 116 entspricht und der durch einen Offset 143 durch den Befehlstyp des nicht implementierten Befehls 116 festgelegt ist. Wie dargestellt, zeigt der Sprungvektor 144 auf einen Emulationscode 152 in der überwachenden Software 160. Der Emulationscode 152 ist ein allgemeiner Emulationscode, der für alle nicht implementierte Befehle 216 eines gegebenen Befehlstyps geeignet ist. Entsprechend umfaßt Emulationscode 152 Routinen zum Abruf nicht implementierter Befehle 216 eines gegebenen Befehlstyps, zur Interpretation der Parameterfelder, die den nicht implementierten Befehl 216 vollständig spezifizieren und Routinen zur Emulation des vollständig spezifizierten nicht implementierten Befehls 216.
  • Um auf Emulationscode 152 zuzugreifen, ist in dem Prozessorregister 162 die Basisadresse 142 gespeichert, und der Offset 143 wird durch die Sprunglogik 130 aus den Inhalten der Prozessorregister 164, 166 berechnet. Zum Beispiel ist in Prozessoren der SPARC 64-bit Architektur (V.9) Register 162 ein Sprungbasisadreßregister (trap base address, TBA) 162, das die 49-Bit-Tabellenbasisadresse 142 beinhaltet. Der Offset 143 wird durch ein Ein-Bit- Sprunglevel(trap level, TL)-Register 164 und ein Neun-Bit-Sprungtyp(trap type, TT)-Register 166 festgelegt, das durch den Typ des die Ausnahme verursachenden Befehls festgelegt ist. Der Rest der 64-Bit-Adresse des Sprungvektors 144 setzt sich aus Nullen zusammen. TBA- Register 162 wird durch die überwachende Software bei Initialisierung gesetzt. Die TL- und TT-Register 164, 166 werden entsprechend jeweils von der Ausgabelogik 130 geladen, wenn ein nicht implementierter Befehl 116 eine Ausnahme verursacht.
  • Bezüglich Fig. 2 wird eine schematische Darstellung eines Systems 200 gezeigt, das der Hardware gestützten Softwareemulation von nicht implementierten Befehlen entsprechend der vorliegenden Erfindung dient. System 200 umfaßt ein Prozessor 210 und einen zu dem Prozessor 210 zugehörigen Speicher 250, der eine Emulationscodetabelle 240 umfaßt. Der Prozessor 210 umfaßt ein Programmzähler-Register (PC) 220, eine Ausgangs-Sprunglogik 230 und ein sprungbearbeitendes Register 262, 264, 266, 268. Eine Befehlsfolge 222 wird dargestellt, die implementierte Befehle 212, 214, 218 und einen nicht implementierten Befehl 216 umfaßt.
  • Emulationscodetabelle 240, die durch Ausweitung der Sprungtabelle 140 (Fig. 1) gebildet werden kann, umfaßt eine Basisadresse 242 und einen Sprungvektor 244, die dem nicht implementierten Befehl 216 bei einem Offset 243 in bezug auf die Basisadresse 242 entsprechen. Der Sprungvektor 244 bildet den ersten Schritt eines Emulationscode 252, der dem Befehlstyp und den Parameterfeldern des nicht implementierten Befehls 216 angepaßt ist und von anderen Sprungvektoren (nicht gezeigt) ausreichend beabstandet ist, um alle Schritte des Emulationscodes 252 aufzunehmen.
  • Da Emulationscode 252 den Befehlstyp und den Parameterfeldern des nicht implementierten Befehls 216 angepaßt ist, enthält er keine Routine zum Abruf und zur Interpretation des nicht implementierten Befehls 216. Statt dessen ist Emulationscode 252 direkt mit dem nicht implementierten Befehl 216 durch Offset 243 gekoppelt, der sich auf den Befehlstyp und die Parameterfelder des nicht implementierten Befehls 216 bezieht. Wenn eine Ausnahme ausgelöst ist, liest die Ausgang-Sprunglogik 230 den Befehlstyp und die Parameterfelder des nicht implementierten Befehls 216, um einen Offset 243 festzustellen und übergibt die Kontrolle direkt an Emulationscode 252. Nach Vollendung des Emulationscodes 252 wird die Prozeßkontrolle zu Befehl 218 zurückgegeben, der auch den nicht implementierten Befehl 216 folgt.
  • Das Verfahren zur Emulation nicht implementierte Befehle wird nun bezüglich der in der SPARC-Architektur, Versionen 8 und 9, definierten LDD- und STD-Befehle behandelt, wie beispielsweise diskutiert in D.L. Weaver, T. Germond, "The SPARC Architectural Manual", (1994) Prentice-Hall. Die LLD- und STD-Befehle werden in Version 9 abgelehnt, müssen aber in irgendeiner Weise unterstützt werden, um für Version 8 geschriebene Software ablaufen zu lassen. Es wird jedoch den Durchschnittsfachmann klar sein, daß das Verfahren allgemein anwendbar ist und nicht auf die im folgenden beschriebenen speziellen Prozessorarchitekturen und Befehlstypen beschränkt ist.
  • Gemäß Fig. 3 wird ein Befehlscode 310 in einem Format dargestellt, das für LDD (load double word)- und STD (store double word)-Befehle geeignet ist. Befehlscode 310 enthält Befehlsfelder (op-Code) 312, 314 und Parameterfelder 316, 318, 320. In der offenbarten Ausführungsform ist das Parameterfeld 316 ein Zielregisterfeld, das dem Register anzeigt, in welches ein Wert geladen wird oder von welchem ein Wert gespeichert wird. Parameterfelder 318, 320 sind Ursprungsregister oder direkte Felder, die jeweils kombiniert werden, um die zu ladende oder zu speichernde Speicheradresse anzugeben. In einem LDD- und einem STD-Befehl wird ein Adreßbit 322 gesetzt, um anzuzeigen, daß die zu ladende oder zu speichernde Speicheradresse durch die Summe der Parameterfelder 318, 320 festgelegt ist, z. B. durch Ursprungsregister oder entsprechend durch direkte Felder (direkter Adreßmode).
  • Ebenfalls wird in Fig. 3 eine 64-Bit-Binärzahl 330 gezeigt, die durch das Verfahren nach der vorliegenden Erfindung erzeugt wird, um auf Emulationscode 252 bei Sprungvektor 244 zuzugreifen. Das heißt, daß Binärzahl 330 die Speicheradresse darstellt, bei der auf Emulationscode 252 für den Befehlstyp und die Parameterfelder des nicht implementierten Befehls 216 (Fig. 2) zugegriffen wird. Binärzahl 330 umfaßt ein Basisadreßfeld für die Emulationstabelle 340, ein Offsetfeld 350 und ein Feld mit Nullen 360. In der offenbarten Ausführungsform der vorliegenden Erfindung empfängt die Ausgabe-Sprunglogik 230 von Fig. 2 eine 48- Bit-Basisadresse 242 für Emulationstabelle 240 von dem TBA-Register 262 des Prozessors 210 und schreibt die Basisadresse 242 in das Basisadreßfeld 240. Die Ausgabe-Sprunglogik 230 ruft die Parameterfelder 316, 318 (Ziel- und entsprechend Ursprungsregisterfelder) von Befehlscode 310 ab und schreibt diese in einem Offsetfeld 350, wie durch die gestrichelten Linien zwischen Befehlscode 310 und Binärzahl 330 angegeben ist. In der offenbarten Ausführungsform sind die Parameterfelder 316, 318 5-Bit-Felder, wobei die oberen 4 Bits des Parameterfeldes 316 mit den 5 Bits des Parameterfelds 318 kombiniert werden, um den Offset 243 (Fig. 2) zu bilden. Ausgabe-Sprunglogik 230 ruft ebenfalls das direkte Feld 320 ab und schreibt es in ein von der Software zugreifbares Register 268 (Fig. 2), wo es dem Emulationscode 252 zur Verarbeitung des nicht implementierten Befehls 216 zur Verfügung steht. Beispielsweise in einem SPARC-basierten Prozessor kann das für Software zugängliche Register 268 durch eines der von der SPARC-Architektur unterstützten nebengeordneten Zustandsregister (% ASR[rI]) bereitgestellt werden. Zusätzliche Bits (nicht gezeigt in Fig. 3) tragen zum Offset 243 bei und werden weiter unten in Zusammenhang mit der Ausgabe- Sprunglogik 230 diskutiert.
  • Nach Fig. 4 wird ein Ablaufdiagramm gezeigt, das das Verfahren 400 der vorliegenden Erfindung zusammenfaßt. Ein Emulationscode spezifisch zu den Befehlstypfeldern und den gewählten Parameterfeldern eines nicht implementierten Befehls wird erzeugt 410. Der Emulationscode wird dann in einer Speicheradresse gespeichert 420, die sich auf den Befehlstyp und die Parameterfelder ihres korrespondierenden nicht implementierten Befehls bezieht. Wenn eine Ausnahme aufgrund eines nicht implementierten Befehls festgestellt wird 430, stellt 440 die Ausgabe-Sprunglogik 230 (Fig. 2) die Speicheradresse des korrespondierenden Emulationscodes aufgrund des Befehlstypfeldes und des gewählten Parameterfeldes des ausnahmeauslösenden nicht implementierten Befehls fest. Methode 400 springt 450 zu der vorbestimmten Speicheradresse und übergibt die Kontrolle an den Emulationscode, der auf den nicht implementierten Befehls, der durch seine Befehlstypfelder und gewählten Parameterfelder spezifiziert ist, zugeschnitten wurde.
  • Entsprechend Fig. 5 ist eine Darstellung der Ausgabe-Sprunglogik 230 dargestellt, die im Falle der in der SPARC-Architektur definierten Fälle von LDD- und STD-Befehlen das Emulationsschema der vorliegenden Erfindung implementiert. Logikeinheit 510 repräsentiert die zur Identifikation der LDD- und STD-Befehle nötigen logischen Data in Prozessor 210 (Fig. 2). Beispielsweise sind die LDD- und STD-Befehle 32-Bit-Befehle mit speziellen Befehlscodes und des genutzten direkten Adressiermodes. Entsprechend ist das Adreßmarkierungsfeld (AM) des PSTATE-Registers in Prozessor 210 gesetzt (PSTATE. AM = 1), um die oberen 32 Bit zur Abarbeitung zu maskieren, das i-Feld der LDD- und STD-Befehlscodes ist zur Anzeige der direkten Adressierung gesetzt (i = = 1), und die Befehlscodes (op-Codes) sind gesetzt. Schließlich unterscheidet Bit 23 (Instruktionstypfeld) des Befehlscodes 310 die Befehle LDD und entsprechend STD von deren sich abwechselnden Leergegenstücke LDDA und entsprechend STDA. Diese drei Bedingungen werden schematisch innerhalb von Logikeinheit 510 dargestellt.
  • Eine Kontrollverbindung 520 von Logikeinheit 510 setzt Bit 15 der Binärzahl 330 (Fig. 3) direkt und setzt Bit 14 und Bit 13 bis 5 (entsprechend dem Offset 243 nach Fig. 2) über ein Paar von Multiplexern 530, und entsprechend 540. Wie schon oben bemerkt, werden die oberen 48 Bits der Binärzahl 330 direkt durch das TBA-Register 162 gesetzt und die unteren 5 Bits werden zu Null gesetzt.
  • Um das Offset 243 in die Bit 14-5 zu schreiben, wenn eine Ausnahme eines nicht implementierten Befehls durch einen LDD- oder STD-Befehl ausgelöst wird, ist eine Kontrollverbindung 520 mit den gewählten Eingängen 532 bzw. 542 der Multiplexer 530 bzw. 540 verbunden. Ein erster Dateneingang 534 verbindet Bit 21 (5) des Befehltypfeldes von LDD (S = 0) und STD (S = 1)-Befehlscodes 210 mit Multiplexer 530 und ein zweites Dateninput 536 verbindet das TL-Register 164 des Prozessors 210 mit Multiplexer 530. In gleicher Weise wird ein erstes Dateninput 544 mit der Summe der Parameterfelder 316 und 318 mit Multiplexer 540 und ein zweites Dateninput 546 verbindet das TT-Register 166 mit dem Multiplexer 540. Kontrollverbindung 520 verbindet dann die Eingänge 534, 544 mit den Bits 14-5, wenn durch Logikeinheit 510 (LDD oder STD detektiert) so bestimmt, um ein Offset in die Emulationscodetabelle 243 zu bilden, der auf Emulationscode 152 zeigt, der spezifisch den Parameterfeldern 316, 318 der LDD (STD)-Befehle gebildet ist. Wenn Kontrollverbindung 520 durch Logikeinheit 510 zurückgesetzt wird, sind die Eingänge 536, 546 mit den Bits 14-5 der Binärzahl 330 verbunden, so daß Zugang zu den Sprungvektoren zur konventionellen Ausnahmebehandlung hergestellt wurde.
  • In Tabelle 1 ist ein Emulationscode gezeigt, geeignet zur Emulation von LDD-Befehlen, welche jedes Ursprungs- und Zielregister sowie jeden direkten Operanden bestimmen. Tabelle 1
  • In Tabelle 2 wird eine Emulationscodefolge dargestellt, die geeignet ist, ein STD-Befehl zu emulieren, der jegliche Ursprungs- und Zielregister sowie jeglichen direkten Operanden bestimmt. Tabelle 2
  • Damit wurde ein System und Verfahren vorgestellt, um Hardware zur Unterstützung von schneller Softwareemulation von nicht implementierten Befehlen zu nutzen. Emulationscodes, die die Softwarekomponente der Erfindung darstellen, sind auf den Befehlstyp und die Parameterfelder des nicht implementierten Befehls zugeschnitten und sind bei einer Speicheradresse, die durch diese Felder festgelegt wurde, gespeichert. Die daraus folgende Größenreduktion des Emulationscodes beschleunigt den Softwareemulationsprozeß. Die Ausgabe-Sprunglogik, die die Hardwarekomponente der Erfindung bildet, ist erweitert, um diese Felder zu lesen, wenn eine Ausnahme ausgelöst wurde, um die Speicheradresse des entsprechenden Emulationscodes festzustellen und direkt in diesem Emulationscode zu springen.

Claims (11)

1. Verfahren zum Emulieren eines nicht implementierten Befehls, mit folgenden Verfahrenschritten:
Erzeugen (410) einer Codefolge zum Emulieren des nicht implementierten Befehls (216), der durch ein Befehlsfeld (312, 314), ein Ursprungsfeld (318) und ein Zielfeld (316) spezifiziert wird;
Speichern der Codefolge bei einer Speicheradresse, die bezogen ist auf die Befehls-, Ursprungs- und Zielfelder (312-318) des nicht implementierten Befehls (216);
wenn der nicht implementierte Befehl (216) erfaßt wird, Bestimmen der Speicheradresse der Codefolge aus den Befehls-, Ursprungs- und Zielfeldern (312-318), wobei der Schritt des Bestimmens das Erzeugen eines Binärwertes (330) umfaßt, um auf einen Emulationscode (252) bei einem Sprungvektor (244) zuzugreifen, wobei der Binärwert (330) die Speicheradresse ist, bei der auf den Emulationscode (252) für den nicht implementierten Befehl (216) zugegriffen wird; und
Übergeben der Steuerung an die Speicheradresse der Codefolge, um den nicht implementierten Befehl (216) zu emulieren.
2. Verfahren nach Anspruch 1, mit dem weiteren Verfahrensschritt: Speichern eines Zwischenfelds (320) des Befehlscodes (216) in einem Register (270), das für die Codefolge zugänglich ist.
3. Verfahren nach Anspruch 1, mit den weiteren Verfahrensschritten: Identifizieren eines Operandenfeldes des nicht implementierten Befehls (216); und Schreiben eines in dem identifizierten Operandenfeldes spezifizierten Wertes in ein Register, das für die Codefolge zugänglich ist.
4. Verfahren nach einem der vorangehenden Ansprüche, wobei der Schritt des Speicherns der Codefolge die folgenden Unterschritte umfaßt:
Bilden (410) einer Emulationcode (252)-Tabelle mit einer Basisadresse (142) in einem Speicher;
Bilden eines Offsets (143) aus der Basisadresse mit einem Parameterfeld (316-320) des nicht implementierten Befehls (216), wobei das Parameterfeld eines der Befehls-, Ursprungs- und Zielfeldern umfaßt;
Speichern (420) der Codefolge in der Emulationscode (252)-Tabelle bei der Speicheradresse, welche die Basisadresse und den Offset umfaßt.
5. Verfahren nach Anspruch 4, wobei der Schritt des Bildens des Offsets das Addieren eines Wertes in dem Ursprungsfeld (316) des Befehlscode zu einem Wert in dem Zielfeld (316) des Befehlscodes umfaßt.
6. Verfahren nach einem der vorangehenden Ansprüche zum Emulieren des nicht implementierten Befehls (216) in einem System, welches einen Prozessor (110) und einen Speicher (150) umfaßt, welcher mit dem Prozessor verbunden ist und über Speicheradressen indexiert wird; wobei der nicht implementierte Befehl (216) von dem Prozessor (110) erfaßt wird.
7. Verfahren nach Anspruch 6, wobei der Schritt des Speicherns die folgenden Unterschritte umfaßt: Ermitteln einer Basisadresse (142) für eine Emulationscode (252)-Tabelle; und Kombinieren der Basisadresse (142) mit einem Offset (143), der durch die Befehls-, Ursprungs-, und Zielfelder (316-318) des nicht implementierten Befehls bestimmt wird, um den Speicheradreß-Emulationscode (252) zu bilden.
8. Verfahren nach Anspruch 6, wobei der Schritt des Auffindens der Befehls-, Ursprungs- und Zielfelder (316-320) zum Bestimmen der Speicheradresse die folgenden Unterschritte umfaßt:
Wiedergewinnen der Basisadresse (142) für die Emulationscode (252)-Tabelle aus einem ausgewählten Register in dem Prozessor;
Bestimmen eines Offsets (143) aus den Befehls-, Ursprungs- und Zielfeldern (312- 320) des erfaßten Befehls; und
Kombinieren des Offsets (143) und der Basisadresse (142), um die Speicheradresse der Codefolge zu bilden.
9. Verfahren nach einem der Ansprüche 6 bis 8, bei dem der Schritt des Übertragens die folgenden Unterschritte umfaßt:
Übergeben der Steuerung des Systems an die Codefolge;
Zugreifen auf den Wert des Zwischenfelds (320) aus dem ausgewählten Register nach Bedarf, um den nicht implementierten Befehl (216) zu emulieren; und
Zurückgeben der Steuerung an einen Befehl, welcher dem nicht implementierten Befehl (216) in einer Befehlswarteschlange folgt.
10. Verfahren nach Anspruch 9, wobei das Zwischenfeld (320) ein Operandenfeld ist.
11. System zum Implementieren einer Softwareemulation eines nicht implementierten Befehls, mit
einem Speicher umfassend eine Emulationscode (252)-Tabelle mit einer Codefolge bei einer ausgwählten Adresse zum Emulieren des nicht implementierten Befehls (216), wobei die Codefolge für ein Befehlsfeld (312, 314), ein Ursprungsfeld (318) und ein Zielfeld (316) des nicht implementierten Befehls (216) spezifisch ist; und
einem Prozessor (110) umfassend ein erstes Register zum Speichern einer Basisadresse (142) für die Codefolge, ein zweites Register, das für die Codefolge zugänglich ist, und eine Ausgabe-Sprunglogik, wobei die Ausgabe-Sprunglogik folgende Merkmale umfaßt:
Mittel zum Erfassen des nicht implementierten Befehls (216);
Mittel zum Lesen der Befehls-, Ursprungs- und Zielfelder (312-318) des nicht implementierten Befehls (216);
Mittel zum Speichern eines Zwischenfelds (320) des nicht implementierten Befehls in dem zweiten Register;
Mittel zum Bestimmen des ausgewählten Adresse der Codefolge aus den gelesenen Befehls-, Ursprungs- und Zielfeldern (312-318), wobei die Mittel zum Bestimmen einen Binärwert (330) zum Zugreifen auf einen Emulationscode (252) bei einem Sprungvektor (244) erzeugen, wobei der Binärwert (330) die Speicheradresse ist, bei der auf den Emulationscode (252) für den nicht implementierten Befehl (216) zugegriffen wird; und
Mittel zum Übergeben der Steuerung des Prozessors (110) an die Codefolge, die in der Emulationscode (252)-Tabelle bei der ausgewählten Adresse gespeichert ist.
DE69621493T 1995-03-03 1996-03-01 Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen Expired - Lifetime DE69621493T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/397,911 US5632028A (en) 1995-03-03 1995-03-03 Hardware support for fast software emulation of unimplemented instructions

Publications (2)

Publication Number Publication Date
DE69621493D1 DE69621493D1 (de) 2002-07-11
DE69621493T2 true DE69621493T2 (de) 2003-01-23

Family

ID=23573184

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69621493T Expired - Lifetime DE69621493T2 (de) 1995-03-03 1996-03-01 Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen

Country Status (4)

Country Link
US (1) US5632028A (de)
EP (1) EP0730226B1 (de)
AT (1) ATE218723T1 (de)
DE (1) DE69621493T2 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006030A (en) * 1995-02-17 1999-12-21 Vlsi Technology, Inc. Microprocessor with programmable instruction trap for deimplementing instructions
US6446224B1 (en) 1995-03-03 2002-09-03 Fujitsu Limited Method and apparatus for prioritizing and handling errors in a computer system
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
US5881279A (en) * 1996-11-25 1999-03-09 Intel Corporation Method and apparatus for handling invalid opcode faults via execution of an event-signaling micro-operation
US6070236A (en) * 1996-12-19 2000-05-30 Deutsche Thomson-Brandt Gmbh Apparatus for processing a sequence of control commands as well as a method for generating a sequence of control commands, and storage medium for storing control commands
US5896522A (en) * 1996-12-31 1999-04-20 Unisys Corporation Selective emulation interpretation using transformed instructions
US6041402A (en) * 1998-01-05 2000-03-21 Trw Inc. Direct vectored legacy instruction set emulation
US6173248B1 (en) 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
EP0955578A1 (de) * 1998-05-04 1999-11-10 International Business Machines Corporation Verfahren und Vorrichtung zur Durchführung einer Funktion, der ein Befehlskode zugewiesen ist
US6408382B1 (en) 1999-10-21 2002-06-18 Bops, Inc. Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
US7574346B2 (en) * 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US6857063B2 (en) * 2001-02-09 2005-02-15 Freescale Semiconductor, Inc. Data processor and method of operation
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
US20050132022A1 (en) * 2003-12-12 2005-06-16 International Business Machines Corporation Computer system with LAN-based I/O
US7480755B2 (en) * 2004-12-08 2009-01-20 Hewlett-Packard Development Company, L.P. Trap mode register
KR100735552B1 (ko) * 2005-09-23 2007-07-04 삼성전자주식회사 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법
US7904789B1 (en) * 2006-03-31 2011-03-08 Guillermo Rozas Techniques for detecting and correcting errors in a memory device
US20090089564A1 (en) * 2006-12-06 2009-04-02 Brickell Ernie F Protecting a Branch Instruction from Side Channel Vulnerabilities
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US10387151B2 (en) 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7734900B2 (en) * 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US10175990B2 (en) 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US10496461B2 (en) * 2011-06-15 2019-12-03 Arm Finance Overseas Limited Apparatus and method for hardware initiation of emulated instructions
WO2013101147A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Configurable reduced instruction set core
EP2798474A4 (de) * 2011-12-30 2015-07-22 Intel Corp Verwendung von kernen mit reduziertem befehlssatz
US8972697B2 (en) 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
US9626333B2 (en) 2012-06-02 2017-04-18 Intel Corporation Scatter using index array and finite state machine
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US10339533B2 (en) * 2013-07-31 2019-07-02 Spirent Communications, Inc. Methods and systems for scalable session emulation

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3955180A (en) * 1974-01-02 1976-05-04 Honeywell Information Systems Inc. Table driven emulation system
US4306286A (en) * 1979-06-29 1981-12-15 International Business Machines Corporation Logic simulation machine
US4514803A (en) * 1982-04-26 1985-04-30 International Business Machines Corporation Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
US4656580A (en) * 1982-06-11 1987-04-07 International Business Machines Corporation Logic simulation machine
US4715035A (en) * 1985-05-31 1987-12-22 Siemens Aktiengesellschaft Method for the simulation of an error in a logic circuit and a circuit arrangement for implementation of the method
US4763242A (en) * 1985-10-23 1988-08-09 Hewlett-Packard Company Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility
US4862347A (en) * 1986-04-22 1989-08-29 International Business Machine Corporation System for simulating memory arrays in a logic simulation machine
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
GB2203572B (en) * 1987-03-24 1991-11-27 Insignia Solutions Limited Improvements in data processing means
JP2741867B2 (ja) * 1988-05-27 1998-04-22 株式会社日立製作所 情報処理システムおよびプロセツサ
US5117487A (en) * 1988-08-26 1992-05-26 Kabushiki Kaisha Toshiba Method for accessing microprocessor and microinstruction control type microprocessor including pointer register
JP2685245B2 (ja) * 1988-10-05 1997-12-03 株式会社東芝 プログラマブルコントローラ
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US5381547A (en) * 1989-11-29 1995-01-10 Siemens Aktiengesellschaft Method for dynamically linking definable program elements of an interactive data processing system
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5287490A (en) * 1991-03-07 1994-02-15 Digital Equipment Corporation Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5574887A (en) * 1993-09-20 1996-11-12 Apple Computer, Inc. Apparatus and method for emulation routine pointer prefetch
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU

Also Published As

Publication number Publication date
DE69621493D1 (de) 2002-07-11
EP0730226A3 (de) 1998-07-29
EP0730226A2 (de) 1996-09-04
EP0730226B1 (de) 2002-06-05
US5632028A (en) 1997-05-20
ATE218723T1 (de) 2002-06-15

Similar Documents

Publication Publication Date Title
DE69621493T2 (de) Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69614515T2 (de) Software-emulationssystem mit dynamischer übersetzung von emulierten befehlen zur erhöhung der verarbeitungsgeschwindigkeit
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE4329336C2 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69725278T2 (de) Programmierbares system und verfahren zum vorhersagen von verzweigungen für computersysteme
DE69502098T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE2714805C2 (de)
DE3851746T2 (de) Sprungvorhersage.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE10085152B4 (de) Verfahren zum Erfassen von IEEE-Unterlauf-Ausnahmen bei spekulativen Gleitkommaoperationen
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE1250659B (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE69231237T2 (de) Datenverarbeitungsvorrichtung
DE69318914T2 (de) Vorrichtung zur Abarbeitung von Befehlen mit verbesserter Abwicklung von Unterbrechungen
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition