DE69621493T2 - Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen - Google Patents
Hardwareunterstützung zur schnellen Emulation von nicht-implementierten BefehlenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/45533—Hypervisors; 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
- 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.
- 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.
- 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.
- 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.
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)
| 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)
| 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 |
-
1995
- 1995-03-03 US US08/397,911 patent/US5632028A/en not_active Expired - Lifetime
-
1996
- 1996-03-01 AT AT96103206T patent/ATE218723T1/de not_active IP Right Cessation
- 1996-03-01 EP EP96103206A patent/EP0730226B1/de not_active Expired - Lifetime
- 1996-03-01 DE DE69621493T patent/DE69621493T2/de not_active Expired - Lifetime
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 |