DE10297624T5 - Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen - Google Patents

Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen Download PDF

Info

Publication number
DE10297624T5
DE10297624T5 DE10297624T DE10297624T DE10297624T5 DE 10297624 T5 DE10297624 T5 DE 10297624T5 DE 10297624 T DE10297624 T DE 10297624T DE 10297624 T DE10297624 T DE 10297624T DE 10297624 T5 DE10297624 T5 DE 10297624T5
Authority
DE
Germany
Prior art keywords
instruction set
binary code
set architecture
translation
code
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.)
Ceased
Application number
DE10297624T
Other languages
English (en)
Inventor
Roni Rosner
Avi Mendelson
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE10297624T5 publication Critical patent/DE10297624T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Verfahren, umfassend:
Empfangen eines Binärcodes eines Programmcodes, wobei der Binärcode auf einer ersten Befehlssatzarchitektur basiert; und
Übersetzen des Binärcodes, wobei der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft Computerverarbeitung. Genauer gesagt betrifft die Erfindung die Übersetzung von Binärcodes zwischen unterschiedlichen Befehlssatzarchitekturen oder unterschiedlichen Optimierungsgraden mit derselben Befehlssatzarchitektur.
  • Hintergrund der Erfindung
  • Während gegenwärtige Computerprogrammcompiler gestaltet sind, um Binärcodes zu erzeugen, die die neuesten Entwicklungen von gegenwärtigen Befehlssatzarchitekturen (Instruction Set Architectures (ISA)) nutzen, können Binärcodes, die auf der Grundlage einer älteren Befehlssatzarchitektur erzeugt worden sind, nicht diese neuesten Entwicklungen nutzen. Binärcode-Übersetzung stellt ein übliches Verfahren dar, das zum Übersetzen von Binärcodes eines bestimmten Programmcodes/von bestimmten Anwendungen, die auf einer Befehlssatzarchitektur basieren, in Binärcodes eines bestimmten Programmcodes/von bestimmten Anwendungen verwendet wird, die auf einer anderen Befehlssatzarchitektur oder einer anderen Untergruppe derselben Befehlssatzarchitektur basieren. Die andere Befehlssatzarchitektur kann eine andere Architektur oder eine verbesserte Version der älteren Befehlssatzarchitektur sein.
  • Typischerweise wird erwartet, daß binär übersetzte Programme genau dieselbe Funktionalität liefern, wie sie von dem ursprünglichen binär übersetzten Programm bereitgestellt wurde, das auf der älteren Befehlssatzarchitektur basierte. Mit anderen Worten wird typischerweise erwartet, daß Binärcode-Übersetzungen Programmsemantik, wie sie von der älteren Befehlssatzarchitektur definiert ist, vollständig erhalten, wodurch vollständige Abwärtskompatibilität bereitgestellt wird. Dementsprechend können die Anforderungen an die ältere Befehlssatzarchitektur diejenigen einschließen, die mit normalem Befehlsfluß, Datengenauigkeit, Handhabung von Ausnahmen und anderen Nebeneffekten der Programmausführung verbunden sind, die von dieser älteren Befehlssatzarchitektur definiert sind.
  • Diese Anforderung an die Semantik beschränkt typischerweise die Leistung der Binärcode-Übersetzung – entweder, indem gewisse Beschränkungen hinsichtlich der übersetzbaren Binärcodes auferlegt werden oder durch Beschränkung des Umfangs, in dem die Binärcode-Übersetzung die Vorteile der neuen Befehlssatzarchitektur nutzen kann. Wenn z. B. die zwei unterschiedlichen Befehlssatzarchitekturen nicht dieselben Gleitkommaformate, Breiten oder Genauigkeiten unterstützen, kann die Binärcode-Übersetzung zwischen diesen Befehlssatzarchitekturen von Gleitkommaoperationen schwierig und/oder ineffizient sein.
  • Kurzbeschreibung der Zeichnungen
  • Ausführungsformen der Erfindung können durch Bezugnahme auf die folgende Beschreibung und beigefügten Zeichnungen, die derartige Ausführungsformen darstellen, am besten verstanden werden. Das Nummerierschema für die hierin enthaltenen Figuren ist derart, daß die vordere Ziffer für ein bestimmtes Element in einer Figur mit der Nummer der Figur verbunden ist. Zum Beispiel ist System 100 in 1 auszumachen. Jedoch sind Elementzahlen dieselben für diejenigen Elemente, die dieselben über unterschiedliche Figuren sind.
  • In den Zeichnungen stellt
  • 1 ein Beispielsystem 100, das Prozessoren 102 und 104 zur Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen umfaßt, gemäß Ausführungsformen der vorliegenden Erfindung dar;
  • 2 ein detaillierteres Diagramm eines Prozessors und zugehörigen Speichers gemäß Ausführungsformen der vorliegenden Erfindung dar;
  • 3 ein Flussdiagramm zur Übersetzung von Befehlen aus einem Binärcode, der auf einer ersten Befehlssatzarchitektur basiert, in Befehle aus einer zweiten Befehlssatzarchitektur, die mit der ersten Befehlssatzarchitektur teilweise kompatibel ist, gemäß Ausführungsformen der vorliegenden Erfindung dar;
  • 4 Quellcode und den erzeugten Assembler-Code, worin ein Register als Teil des Hardware-Stapelspeichers benutzt wird und nicht benutzt wird, gemäß Ausführungsformen der vorliegenden Erfindung dar.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezielle Details dargestellt, um für ein umfassendes Verständnis der vorliegenden Erfindung zu sorgen. Es wird jedoch für einen Fachmann auf dem Gebiet ersichtlich sein, daß die vorliegende Erfindung ohne diese speziellen Details realisiert werden kann.
  • Ausführungsformen der vorliegenden Erfindung ermöglichen eine teilweise kompatible Befehlssatzarchitektur, worin ein Binärcode eines Programmcodes, der für eine erste Befehlssatzarchitektur erzeugt ist, in einen Binärcode übersetzt wird, der bestimmte Eigenschaften einer zweiten Befehlssatzarchitektur nutzt, während er mit der ersten Befehlssatzarchitektur teilweise kompatibel bleibt. In einer Ausführungsform wird der Kompatibilitätsgrad von der Programmumgebung gesteuert, die den Benutzer, den Compiler und das Betriebssystem einschließt, ohne aber darauf beschränkt zu sein. In einer derartigen Ausführungsform wird eine Gruppe von Kompatibilitätsmodi bzw. -parametern (switches) auf der zweiten Befehlssatzarchitektur definiert. Dementsprechend kann die Programmumgebung den gewünschten Kompatibilitätsmodus explizit einstellen. In einer Ausführungsform zur Hardware-Übersetzung kann die Einstellung des Kompatibilitätsmodus durch eine Gruppe von Hardware-Befehlen erfolgen. In einer Ausführungsform zur Software-Übersetzung kann diese Einstellung des Kompatibilitätsmodus durch eine Anzahl von Befehlszeilen-Flags durchgeführt werden, die in Verbindung mit der Initiierung der Ausführung des Binärcodes verwendet werden.
  • Wie unten ausführlicher beschrieben wird, ermöglichen somit Ausführungsformen der vorliegenden Erfindung eine Verbesserung der Leistung (bezogen auf die zweite Befehlssatzarchitektur) im Tausch gegen eine gewisse Abweichung von der genauen Programmsemantik (bezogen auf die erste Befehlssatzarchitektur).
  • Zusätzlich können in einer Ausführungsform die unterschiedlichen Befehlssatzarchitekturen, auf denen die (hierin beschriebenen) Binärcodes basieren, irgendeine von einer Anzahl von unterschiedlichen Befehlssatzarchitekturen, einschließlich, aber ohne darauf beschränkt zu sein, der unterschiedlichen Complex-Instruction-Set-Computer (CISC)-Befehlssätze sowie der unterschiedlichen Reduced-Instruction-Set-Computer (RISC)-Befehlssätze, sein. Beispiele für derartige Befehlssatzarchitekturen schließen Intel®IA-32 und Intel®IA-64 ein.
  • 1 stellt ein Beispielsystem 100, das Prozessoren 102 und 104 zur Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen umfaßt, gemäß Ausführungsformen der vorliegenden Erfindung dar. Obwohl im Zusammenhang mit System 100 beschrieben, kann die vorliegende Erfindung in irgendeinem geeigneten Computersystem, das irgendeinen oder mehrere geeignete integrierte Schaltkreise umfaßt, implementiert werden.
  • Wie in 1 dargestellt, umfaßt das Computersystem 100 den Prozessor 102 und den Prozessor 104. Das Computersystem 100 enthält auch Speicher 132, Prozessorbus 110 und Input/Output Controller Hub (ICH) 140. Die Prozessoren 102 und 104, der Speicher 132 und der ICH 140 sind mit dem Prozessorbus 110 gekoppelt. Die Prozessoren 102 und 104 können jeweils irgendeine geeignete Prozessorarchitektur aufweisen und weisen in einer Ausführungsform eine Intel®-Architektur auf, die z. B. in der Pentium®-Familie von Prozessoren verwendet wird, die von Intel® Corporation of Santa Clara, Kalifornien, erhältlich sind. Das Computersystem 100 kann für andere Ausführungsformen einen, drei oder mehr Prozessoren umfassen, von denen jeder einen Satz von Befehlen ausführen kann, die gemäß Ausführungsformen der vorliegenden Erfindung sind.
  • Der Speicher 132 speichert Daten und/oder Befehle z. B. für das Computersystem 100 und kann irgendeinen geeigneten Speicher, wie z. B. einen dynamischen Speicher mit wahlfreiem Zugriff (Dynamic Random Access Memory (DRAM)), umfassen. Grafik-Controller 134 steuert die Anzeige von Informationen auf einem geeigneten Anzeigegerät 136, wie z. B. einer Kathodenstrahlröhre (Cathode Ray Tube (CRT)) oder Flüssigkristallanzeige (Liquid Crystal Display (LCD)), die mit dem Grafik-Controller 134 gekoppelt ist.
  • Der ICH 140 sorgt für eine Schnittstelle für Ein-/Ausgabegeräte oder Peripheriekomponenten für das Computersystem 100. Der ICH 140 kann irgendeinen geeigneten Schnittstellen-Controller umfassen, um für eine geeignete Kommunikationsverbindung mit den Prozessoren 102/104, dem Speicher 132 und/oder irgendeinem geeigneten Gerät oder einer geeigneten Komponente, die mit dem ICH 140 in Verbindung steht, zu sorgen. Der ICH 140 sorgt in einer Ausführungsform für geeignete Buszuteilung und Pufferung für jede Schnittstelle.
  • In einer Ausführungsform liefert der ICH 140 eine Schnittstelle zu einem oder mehreren geeigneten Integrated Drive Electronics (IDE)-Laufwerke(n) 142, wie z. B. Festplattenlaufwerk (Hard Disk Drive (HDD)) oder Compact Disc Read Only Memory (CD ROM)-Laufwerk zum Speichern von z. B. Daten und/oder Befehlen und einem oder mehreren geeigneten Universal Serial Bus (USB)-Geräten über einen oder mehrere USB-Ports 144. Der ICH 140 sorgt in einer Ausführungsform auch für eine Schnittstelle zu einer Tastatur 151, einer Maus 152, einem oder mehreren geeigneten Geräten wie z. B. einem Drucker, über einen oder mehrere parallele Ports 153, einem oder mehreren geeigneten Geräten über einen oder mehrere serielle Ports 154 und einem Diskettenlaufwerk 155.
  • Zusätzlich enthält das Computersystem 100 eine Übersetzungseinheit 180. In einer Ausführungsform kann die Übersetzungseinheit 180 ein Prozeß oder eine Task sein, der/die sich im Hauptspeicher 132 und/oder Prozessoren 102 und 104 befinden kann und in den Prozessoren 102 und 104 ausgeführt werden kann. Jedoch sind Ausführungsformen der vorliegenden Erfindung nicht so beschränkt, da die Übersetzungseinheit 180 unterschiedliche Arten von Hardware (wie z. B. digitale Logik) sein kann, die die darin beschriebene Verarbeitung (die unten detaillierter beschrieben ist) durchführt.
  • Entsprechend enthält das Computersystem 100 ein maschinenlesbares Medium, auf dem ein Satz von Befehlen (d. h. Software) gespeichert ist, die irgendeine oder alle der hierin beschriebenen Methodologien verkörpern. Z .B. kann sich Software vollständig oder zumindest teilweise im Speicher 132 und/oder in den Prozessoren 102/104 befinden. Für die Zwecke dieser Beschreibung soll der Begriff „maschinenlesbares Medium" jede Einrichtung enthalten, die Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form liefert (d. h. speichert und/oder überträgt). Z. B. enthält ein maschinenlesbares Medium Nur-Lese-Speicher (Read Only Memory (ROM)); Speicher mit wahlfreiem Zugriff (Random Access Memory (RAM)); Magnetplattenspeichermedien; optische Speichermedien; Flashmemory-Geräte; elektrische, optische, akustische und andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale, etc.); etc.
  • 2 stellt ein detaillierteres Diagramm eines Prozessors gemäß Ausführungsformen der vorliegenden Erfindung dar. Insbesondere stellt 2 ein detaillierteres Diagramm eines der Prozesoren 102/104 (nachfolgend "Prozessor 102") dar. Wie gezeigt, ist eine Speicherschnittstelleneinheit 270 mit Cache-Puffern 256, Register-Datei 250, (die Universal- Register 252 und Spezialzweck-Register 254 enthält) und Befehlspuffer 202 gekoppelt, so daß die Speicherschnittstelleneinheit 270 Makrobefehle und zugehörige Operanden abrufen und diese Daten im Befehlspuffer 202 und in den Cache-Puffern 256, Universal-Registern 252 und/oder Spezialzweck-Registern 254 speichert. Zusätzlich sind die Cache-Puffer 256 und die Register-Datei 250 mit einem Decoder 204, Funktionseinheiten 212-218 und einer Abschlußlogik (retirement logic) 228 gekoppelt.
  • Der Decoder 204 ist mit dem Befehlspuffer 202 so gekoppelt, daß der Decoder 204 die Befehle aus dem Befehlspuffer 202 abfragt. Der Decoder 204 kann diese Befehle empfangen und jeden davon decodieren, um den bestimmten Befehl zu ermitteln und auch eine Anzahl von Befehlen in einem internen Befehlssatz zu erzeugen. Z. B. werden in einer Ausführungsform die vom Decoder 204 empfangenen Befehle als Makrobefehle bezeichnet, während die Befehle, die vom Decoder 204 erzeugt werden, als Mikrobefehle (oder Mikrooperationen) bezeichnet werden. Der Decoder 204 ist auch mit einem Befehlseinteiler 208 gekoppelt, so daß der Befehlseinteiler 208 diese Mikrooperationen zur planmäßigen Ausführung durch Funktionseinheiten 212–218 empfangen kann.
  • Der Befehlseinteiler 208 ist mit einer Abfertigungslogik (dispatch logic) 226 gekoppelt, so daß der Befehlseinteiler 208 die von den Funktionseinheiten 212–218 auszuführenden Befehle sendet. Die Abfertigungslogik 226 ist mit Funktionseinheiten 212–218 gekoppelt, so daß die Abfertigungslogik 226 die Befehle zu den Funktionseinheiten 212–218 zur Ausführung sendet. Die Funktionseinheiten 212–218 können eine von einer Anzahl von unterschiedlichen Ausführungseinheiten sein, die eine arithmetische Integer-Logikeinheit (integer Arithmectic Logic Unit (ALU)), eine Gleitkommaeinheit, Speicherlade/Speichereinheit, etc. enthalten, ohne aber darauf beschränkt zu sein. Die Funktionseinheiten 212–218 sind auch mit der Abschlußlogik 228 gekoppelt, so daß die Funktionseinheiten 212–218 die Befehle ausführen und die Ergebnisse an die Abschlußlogik 228 senden. Die Abschlußlogik 228 kann diese Ergebnisse zum Speicher senden, der sich intern oder extern vom Prozessor 102 befinden kann, wie z. B. Register in der Register-Datei 250 oder den Cache-Puffern 256, oder Speicher 132 (extern vom Prozessor 102).
  • Die Operationen des Computersystems 100 werden nun detaillierter in Verbindung mit dem Flußdiagramm von 3 beschrieben werden. Insbesondere stellt 3 ein Flußdiagramm zur Übersetzung von Befehlen aus einem Binärcode, der auf einer ersten Befehlssatzarchitektur basiert, in Befehle von einer zweiten Befehlssatzarchitektur, die mit der ersten Befehlssatzarchitektur teilweise kompatibel ist, gemäß Ausführungsformen der vorliegenden Erfindung dar.
  • Das Flußdiagramm 300 von 3 ist als Teil des Decodier-Ausführ-Ablaufs des Computersystems 100 beschrieben. Ausführungsformen der vorliegenden Erfindung sind jedoch nicht so beschränkt. Z. B. könnten in einer anderen Ausführungsform die in dem Flußdiagramm 300 dargestellten Übersetzungsoperationen unabhängig vom Decodier-Ausführ-Ablauf des Computersystems 100 durchgeführt werden. In einer derartigen Ausführungsform könnten die übersetzten Befehle in einem speziellen Puffer (entweder intern oder extern bzgl. des Prozessors 102), wie z. B. einem Trace Cache (in 1 nicht gezeigt), gespeichert werden. Dementsprechend könnten derartige übersetzte Befehle aus diesem speziellen Puffer abgerufen und im Prozessor 102 ausgeführt werden. Somit ist in einer derartigen Ausführungsform der Kompatibilitätsgrad optional, so daß der Prozessor 102 die übersetzten Befehle in Abhängigkeit von seinem derzeitigen Wissen bzw. von seinen Ressourcen ausführen kann oder nicht. Z. B. können die übersetzten Befehle in einer ersten Umgebung (, in der die übersetzten Befehle vollständig verwertet werden) ausgeführt werden, während sie in einer zweiten Umgebung (, worin die Ausführung der übersetzten Befehle die Leistungswirkung nicht erhöht) nicht ausgeführt werden. Außerdem ist in einer Ausführungsform eine Untergruppe der übersetzten Befehle in die Ausführung des Binärcodes aufgenommen. Z. B. kann ein bestimmter Befehl eine Anzahl von Malen übersetzten werden. Jedoch ist in einer Ausführungsform die Anzahl von Malen, die dieser übersetzte Befehl in die Ausführung des Binärcodes aufgenommen wird, geringer als die Gesamtanzahl von Malen, die der Befehl übersetzt wird.
  • Bei Prozeßblock 302 wird ein erster Binärcode eines Programmcodes, der auf einer ersten Befehlssatzarchitektur basiert, empfangen. In einer Ausführungsform empfängt die Übersetzungseinheit 180 diesen ersten Binärcode eines Programmcodes, der auf einer ersten Befehlssatzarchitektur basiert. In einer Ausführungsform empfängt der Decoder 204 diesen ersten Binärcode eines Programmcodes, der auf einer ersten Befehlssatzarchitektur basiert. In einer Ausführungsform können sowohl die Übersetzungseinheit 180 als auch der Decoder 204 diesen Binärcode eines Programmcodes empfangen, der auf der ersten Befehlssatzarchitektur basiert.
  • In einer Ausführungsform wird die Übersetzungseinheit 180 verwendet, um eine Software-Übersetzung dieses ersten Binärcodes, der auf einer ersten Befehlssatzarchitekur basiert, in einen zweiten oder anderen Binärcode zu übersetzen, der auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert. In einer Ausführungsform wird der Decoder 204 benutzt, um eine Hardware-Übersetzung dieses ersten Binärcodes, der auf einer ersten Befehlssatzarchitektur basiert, in einen zweiten oder anderen Binärcode durchzuführen, der auf einer Kombination der ersten Befehlssatzarchitektur und der zweiten Befehlssatzarchitektur basiert. Wie unten detaillierter beschrieben wird, kann in einer Ausführungsform die Software-Übersetzung eines Binärcodes durch die Übersetzungseinheit 180 in Verbindung mit der Hardware-Übersetzung eines selben Binärcodes durch den Decoder 204 verwendet werden. In einer anderen Ausführungsform erfolgt die Software-Übersetzung eines Binärcodes durch die Übersetzungseinheit 180 ohne die Hardware-Übersetzung desselben Binärcodes durch den Decoder 204 und umgekehrt.
  • Bei Prozeßblock 304 werden Befehlssatzarchitekturausführungs-Flags überprüft, um mögliche Übersetzungen des ersten Binärcodes zu ermitteln. In einer Ausführungsform überprüft die Übersetzungseinheit 180 Befehlssatzarchitekturausführungs-Flags, um mögliche Übersetzungen des ersten Binärcodes zu ermitteln. In einer Ausführungsform überprüft der Decoder 204 Befehlssatzarchitekturausführungs-Flags, um mögliche Übersetzungen des ersten Binärcodes zu ermitteln. Obwohl die Übersetzungseinheit 180 mögliche Übersetzungen des ersten Binärcodes durch unterschiedliche Techniken ermitteln kann, ermittelt in einer Ausführungsform die Übersetzungseinheit 180 diese mögliche Übersetzung des ersten Binärcodes durch Überprüfung von Befehlszeilen-Flags, die in Verbindung mit dem Befehl, mit der Ausführung dieses ersten Binärcodes (, der diese Übersetzung enthalten kann) angenommen werden. Wenn z. B. der Name des ersten Binärcodes "binary.exe" wäre, könnte der Befehl, der Befehlszeilen-Flags zum Beginnen der Ausführung enthält, lauten: "binary.exe-f64-s-o", wobei die Befehlszeilen-Flags (1) – f64, (2) -s und (3) -o sind. Diese Befehlszeilen-Flags könnten unterschiedliche Übersetzungen dieses ersten Binärcodes anzeigen.
  • Zur Unterstützung der Darstellung könnte die Übersetzungseinheit 180 das „-s" als eine Übersetzung einer Anzahl von Einzelbefehlen (basierend auf einer Befehlssatzarchitektur, die keine Datenverarbeitung mit singulären Befehls- und parallelem Datenstrang (Same Instruction Multiple Data (SIMD)-Operationen unterstützt) in einen oder mehrere SIMD-Befehle in der zweiten oder anderen Befehlssatzarchitektur, die derartige Operationen unterstützt, anzeigend interpretieren. Wie unten detaillierter beschrieben werden wird, dienen die hierin beschriebenen unterschiedlichen Befehlssatzarchitekturausführungs-Flags als Beispiel und nicht als Beschränkung, da andere Befehle und Operationen innerhalb des ersten Binärcodes, der auf der ersten Befehlssatzarchitektur basiert, in andere Befehle und Operationen übersetzt werden können, die auf einer zweiten oder anderen Befehlssatzarchitektur basieren. Außerdem könnte in einer weiteren Ausführungsform (anstelle der und/oder in Verbindung mit der Prüfung von Befehlszeilen-Flags) die Übersetzungseinheit 180 diese mögliche Übersetzung des ersten Binärcodes durch Überprüfen von zahlreichen Speicherorten, wie z. B. einem Register in der Register-Datei 250 (in 2 gezeigt) ermitteln, um mögliche unterschiedliche Übersetzungen zu überprüfen.
  • Zum Prozeßblock 304 des Flußdigramms 300 in 3 zurückkehrend, kann der Decoder 204 auch Befehlssatzarchitekturausführungs-Flags überprüfen, um mögliche Übersetzung des ersten Binärcodes zu ermitteln. In einer Ausführungsform kann der Decoder 204 Befehlssatzarchitekturausführungs-Flags durch Abfragen eines Registers, wie z. B. eines von Spezialzweckregistern 254 in der Register-Datei 250 (in 2 dargestellt), überprüfen. In einer derartigen Ausführungsform ist ein bestimmtes Bit mit einem bestimmten Übersetzungstyp verbunden. Z. B. ist das Bit Null mit einer Modifikation der Genauigkeit von Gleitkommaoperanden verbunden (z. B. von einem 80-Bit-Format für eine Intel®IA-32-Befehlssatzarchitektur zu einem 64-Bit-Format für eine Intel®IA-64-Befehlssatzarchitektur ausgehend). Dementsprechend könnte ein auf weniger genauen Operanden basierendes anderes Ergebnis erzeugt werden, wobei die Ausführungsleistung größer ist, da Prozessoren Befehle, die auf dieser zweiten oder anderen Befehlssatzarchitektur basieren, typischerweise schneller im Vergleich zu Befehlen, die auf der ersten Befehlssatzarchitektur basieren, ausführen.
  • In einer Ausführungsform werden diese in einem Register im Prozessor 102 gespeicherten Befehlssatzarchitekturausführungs-Flags durch Architekturbefehle gesetzt, die bestimmte Flags ins Register setzen und ändern. In einer derartigen Ausführungsform können diese Befehle vom Betriebssystem vor Ausführung des Binärcodes verwendet werden.
  • Am Prozeßentscheidungsblock 304 des Flußdiagramms 300 wird eine Entscheidung hinsichtlich der Frage getroffen, ob Software-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. In einer Ausführungsform bestimmt die Übersetzungseinheit 180, ob Software-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. Wie oben beschrieben, kann die Übersetzungseinheit 180 durch eine von einer Anzahl von unterschiedlichen Arten ermitteln, ob Software-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. Die Anzahl von unterschiedlichen Arten schließt Überprüfen von Befehlszeilen-Flags bei der Initiierung der Ausführung des ersten Binärcodes und Überprüfen von verschiedenen Speicherorten, wie z. B. einem Register, ein, aber ohne darauf beschränkt zu sein.
  • Am Prozeßblock 308 wird mindestens ein Befehl vom ersten Binärcode in mindestens einen Befehl, der auf der zweiten Befehlssatzarchitektur basiert, unter Verwendung von Software-Übersetzung bei Ermittlung, daß Software-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist, übersetzt. In einer Ausführungsform führt die Übersetzungseinheit 180 diese Übersetzung durch. Wie oben beschrieben, könnte z. B. die Übersetzungseinheit 180 eine Anzahl von Einzelbefehlen (basierend auf einer Befehlssatzarchitektur, die keine SIMD-Operationen unterstützt) in einen oder mehrere SIMD-Befehle in der zweiten oder anderen Befehlssatzarchitektur, die derartige Operationen unterstützt, übersetzen. Zur Unterstützung der Darstellung könnte die Übersetzungseinheit 180 den Binärcode durchlaufen und ermitteln, daß dieser Binärcode vier verschiedene Befehle zur Addition enthält, so daß vier unterschiedliche Sätze von Operanden vorliegen. Dementsprechend könnte die Übersetzungseinheit 180 diese vier unterschiedlichen Befehle in diesem Binärcode in einen einzigen Befehl zur Addition übersetzen, worin die zwei Sätze von vier Operanden (jeweils 32 Bits) in zwei 128-Bit-SIMD-Register im Prozessor 120 zur Ausführung platziert sind.
  • In einer Ausführungsform für diese SIMD-Übersetzung basieren die Einzelbefehle auf einer ersten Befehlssatzarchitektur, während die SIMD-Befehle auf einer zweiten Befehlssatzarchitektur basieren. In einer Ausführungsform für diese SIMD-Übersetzung basieren die Einzelbefehle auf einer ersten Befehlssatzarchitektur, während die SIMD-Befehle auch auf der ersten Befehlssatzarchitektur basieren. Dementsprechend ermöglicht die SIMD-Übersetzung eine Verbesserung der Befehle für dieselbe Befehlssatzarchitektur.
  • Eine derartige Übersetzung könnte zu einer geringeren Genauigkeit bzgl. der Operanden führen; jedoch könnte die durch diese Übersetzung ermöglichte Leistungszunahme den Genauigkeitsaspekt in Abhängigkeit von der Art der Anwendung und/oder der Ausführungsumgebung, in der die Anwendung ausgeführt wird, ausgleichen. Somit kann die Programmumgebung, wie z. B. der Nutzer, vorschreiben, welche Übersetzungsarten auftreten können, während der Genauigkeitsverlust im Verhältnis zur Erhöhung der Leistung berücksichtigt wird. Z. B. können einige Grafikanwendungen, die nur einen Teil der vollen Gleitkommagenauigkeit verwenden, eine kleine Ungenauigkeit in den Gleitkommaoperationen tolerieren. Im Gegensatz dazu würden Anwendungen zur Vorhersage des Wetters, die die gesamte Gleitkommagenauigkeit in deren Gleitkommaoperationen verwenden, keine kleine Ungenauigkeit tolerieren, da eine derartige Ungenauigkeit andere und möglicherweise ungenaue Ergebnisse erzeugen könnte.
  • Außerdem kann dieselbe Anwendung derartige Modifikationen der Genauigkeit der Operanden in Abhängigkeit von der Ausführungsumgebung unterschiedlich tolerieren. Z. B. könnte eine Anwendung derartige Modifikationen der Genauigkeit für einen ersten Satz von Eingabedaten tolerieren, während dieselbe Anwendung derartige Modifikationen der Genauigkeit für einen anderen Satz von Eingabedaten nicht tolerieren könnte. Wenn, zur Unterstützung der Darstellung, der Satz von Eingabedaten vor Ausführung derartiger Daten durch die Anwendung validiert worden ist, muß die Anwendung keine Ausnahmen von der Genauigkeit behandeln. Wenn umgekehrt der Satz von Eingabedaten als besonders betrachtet wird und/oder nicht validiert worden ist, kann die Anwendung fordern, daß die Handhabung von Ausnahmen durchgeführt wird, die genaue und vollständige Daten für die Ausnahmen liefert. Somit könnte die Programmumgebung derartigen Unterschieden im Satz mit Eingabedaten Rechnung tragen und die Übersetzung im ersten Szenario ermöglichen und die Übersetzung im zweiten Szenario ausschließen.
  • Ein weiteres Beispiel für Software-Übersetzung durch die Übersetzungseinheit 180 enthält Optimierungen bezogen auf den Programm-Stapelspeicher. Insbesondere kann eine bestimmte Befehlssatzarchitektur, wie z. B. Intel®IA32-Befehlssatzarchtektur, einen Hardware-Stapelspeicher mit Push- and Pop-Operationen enthalten, worin Daten, die in eine Prozedur eines Programms geleitet werden, auf dem Stapelspeicher durch eine Push-Operation platziert und aus dem Stapelspeicher durch eine Pop-Operation nach Beendigung der Prozedur entfernt werden. Außerdem können derartige Befehlssatzarchitekturen einen direkten Zugriff auf den Stapelzeiger (, der typischerweise in einem von Spezialzweck-Registern 254 gespeichert ist) ermöglichen. Da diese Befehlssatzarchitektur einen expliziten Zugang zum Stapelzeiger ermöglicht, können somit Binärcodes von Anwendungen unkonventionelle Zugriffe auf diesen Hardware-Stapelspeicher vornehmen.
  • Nehmen wir z. B. an, daß das Programm in eine Prozedur eintritt und einen Wert "V" an einem gewissen Ort "L" im Stapelspeicher, unter Verwendung eines bestimmten konstanten Versatzes vom Stapelzeiger, speichert. Das Programm kehrt dann aus der Prozedur zurück. In gewissen Befehlssatzarchitekturen wird jedoch der Wert "V" nicht explizit aus dem Stapelspeicher gelöscht. Außerdem stellen derartige Befehlssatzarchitekturen sicher, daß das Programm weiterhin auf den Wert "V" aus dem Stapelspeicher basierend auf dem Ort "L" unter Bezugnahme auf den Stapelzeiger (unter der Annahme, daß der Ort von anderen Teilen des Programms nicht überschrieben worden ist) zugreifen kann. Umgekehrt kann eine andere Befehlssatzarchitektur einen Modus enthalten, in dem der Hardware-Stapelspeicher abstraktere Semantik aufweist und die Inhalte des freigegebenem Stapelspeichers flüchtig sind. Insbesondere kann diese andere Befehlssatzarchitektur nicht sicherstellen, daß der Wert "V" unverändert am Ort "L" unter Bezugnahme auf den Stapelzeiger im Nachgang zum Abschluß der Prozedur gespeichert ist.
  • Dementsprechend kann in einer Ausführungsform die Übersetzungseinheit 180 den ersten Binärcode in einen anderen Binärcode übersetzen, wobei mindestens eine der Prozeduren in den Programmcode eingebunden ist, der die Prozedur aufrief. Wenn z. B. die Hauptprozedur "main()" einen Aufruf einer Prozedur "first_procedure(x, y)" enthielte, wobei fünf Codezeilen in "first_procedure(x, y)" enthalten sind, kann die Übersetzungseinheit 180 den Binärcode derart modifizieren, daß der Prozeduraufruf beseitigt wird und die fünf Codezeilen direkt in "main()" enthalten sind. Dementsprechend werden in Parameter x und y nicht auf dem Stapelspeicher platziert. Da jedoch dieser andere Binärcode auf der zweiten Befehlssatzarchitektur basiert, wird der Programmcode, was dem Rückverweis des Stapelzeigers im Anschluß an eine Rückkehr von einem Programmaufruf für einen Parameter im Programmaufruf anbelangt, keinen derartigen Rückverweis enthalten. Wie unten detaillierter beschrieben wird, kann die Hardware-Übersetzung durch den Decoder 204, da der Binärcode auf einer Befehlssatzarchitektur basiert, die sicherstellt, daß auf den Wert "V" nicht vom Ort "L" unter Bezugnahme auf den Stapelzeiger im Anschluß an den Abschluß der Prozedur gegriffen wird, auch in Verbindung mit und/oder ohne diese Software-Übersetzung durchgeführt werden.
  • Unter Bezugnahme auf das Flussdiagramm 300 von 3 wird bei Prozeßblock 310 unabhängig davon, ob Software-Übersetzung beim Prozeßblock 308 durchgeführt wird, in einer Ausführungsform eine Entscheidung hinsichtlich dessen getroffen, ob eine Hardware-Übersetzung zur Durchführung einer Übersetzung des ersten Binärcodes notwendig ist. In einer Ausführungsform bestimmt der Decoder 204, ob eine Hardware-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. Wie oben beschrieben, kann der Decoder 204 über einen von einer Anzahl von unterschiedlichen Wegen bestimmen, ob eine Hardware-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. Die Anzahl von unterschiedlichen Wegen schließt Abrufen eines Registers, wie z. B. eines der Spezialzweck- Register 254 in der Register-Datei 250 (wie in 2 dargestellt) ein, ohne aber darauf beschränkt zu sein.
  • Bei Prozeßblock 312 wird mindestens ein Befehl vom ersten Binärcode in mindestens einen Befehl, der auf einer zweiten Befehlssatzarchitektur basiert, bei Festlegung übersetzt, daß eine Hardware-Übersetzung zum Übersetzen des ersten Binärcodes notwendig ist. In einer Ausführungsform übersetzt der Decoder 204 mindestens einen Befehl vom ersten Binärcode in mindestens einen Befehl, der auf einer zweiten Befehlssatzarchitektur basiert. Insbesondere kann in einer Ausführungsform der Decoder eine Anzahl von unterschiedlichen Übersetzungen durchführen, die auf unterschiedliche Eigenschaften der zweiten Befehlssatzarchitektur bezogen sind.
  • Zur Unterstützung der Darstellung nehmen wir an, daß der Prozessor 102 Befehle ausführen kann, die auf sowohl Intel®IA-32- als auch Intel®IA-64-Befehlssatzarchitekturen basieren, und daß ein erster Binärcode auf der Grundlage des Intel®IA-32 erzeugt worden ist, so daß die Gleitkommaoperanden eine Breite von 80 Bits aufweisen. Zusätzlich kann vor oder in Verbindung mit der Ausführung eines bestimmten Binärcodes eines der Spezial-Register 254 eingestellt werden, um anzuzeigen, daß Gleitkommaoperanden, die gegenwärtig 80-Bit-Operanden sind, die auf der Intel®IA-32-Befehlssatzarchitektur basieren, in 64-Bit-Operanden, die auf der Intel®IA-64-Befehlssatzarchitektur basieren, umzuwandeln sind. Somit übersetzt der Decoder 204 bei Abfrage dieses speziellen Registers Gleitkommabefehle, die auf der Intel®IA-32-Befehlssatzarchitektur basieren, in einen anderen Satz von Gleitkommabefehlen, die auf der Intel®IA-64-Befehlssatzarchitektur basieren.
  • Zum Beispiel beim Empfang eines Gleitkommamultiplikationsbefehls erzeugt der Decoder 204 die Mikrooperationen für die Intel®IA-64-Befehlssatzarchitektur (anstelle der Mikrooperationen für die Intel®IA-32-Befehlssatzarchitektur), wodurch die zugehörige Gleitkommaeinheit (unter den Funktionseinheiten 212–218) zum Modifizieren der 80-Bit-Operanden in 64-Bit-Operanden und zum Ausführen des Gleitkommamultiplikationsbefehls als der zugehörige Befehl für die Intel®IA-64-Befehlssatzarchitektur angewiesen wird. Somit wird die Genauigkeit der Gleitkommaoperanden vermindert werden; jedoch können die auf der neuen Befehlssatzarchitektur basierenden Gleitkommabefehle die Leistung bei der Ausführung der Anwendung erhöhen.
  • Ein weiteres Beispiel für Hardware-Übersetzung durch den Decoder 204 enthält auf den Programm-Stapelspeicher bezogene Optimierungen. Wie oben beschrieben, kann insbesondere eine bestimmte Befehlssatzarchitektur, wie z. B. die Intel®IA-32-Befehlssatzarchitektur, einen Hardware-Stapelspeicher mit Push- und Pop-Operationen enthalten, worin in eine Prozedur eines Programms geleitete Daten auf dem Stapelspeicher durch eine Push-Operation plaziert und vom Stapelspeicher durch eine Pop-Operation nach Abschluß der Prozedur entfernt werden. Außerdem können derartige Befehlssatzarchitekturen einen direkten Zugriff auf den Stapelzeiger (der typischerweise in einem der Spezialzweck-Register 254 gespeichert ist) ermöglichen. Da diese Befehlssatzarchitektur einen expliziten Zugriff auf den Stapelzeiger ermöglicht, können somit Binärcodes bzw. Anwendungen unkonventionelle Zugriffe auf diesen Hardware-Stapelspeicher vornehmen.
  • Zum Beispiel tritt das Programm in eine Prozedur und speichert es einen Wert "V" an irgendeinem Ort "L" im Stapelspeicher unter Verwendung irgendeines konstanten Versatzes vom Stapelzeiger. Danach kehrt das Programm aus der Prozedur zurück. In bestimmten Befehlssatzarchitekturen wird jedoch der Wert "V" nicht explizit aus dem Stapelspeicher gelöscht. Ferner stellen derartige Befehlssatzarchitekturen sicher, daß das Programm weiterhin auf den Wert "V" aus dem Stapelspeicher basierend auf dem Ort "L" unter Bezugnahme auf den Stapelzeiger zugreifen kann (unter der Annahme, daß dieser Ort nicht von anderen Teilen des Programms überschrieben worden ist). Umgekehrt kann eine andere Befehlssatzarchitektur einen Modus enthalten, in dem der Hardware-Stapelspeicher abstraktere Semantik aufweist und die Inhalte des freigegebenen Stapelspeichers flüchtig sind. Insbesondere kann diese andere Befehlssatzarchitektur nicht sicherstellen, daß der Wert "V" weiterhin am Ort "L" unter Bezugnahme auf den Stapelzeiger im Anschluß an den Abschluß der Prozedur gespeichert ist.
  • Somit kann in einer Ausführungsform eines der Spezialzweck-Register 254 als Teil des Hardware-Stapelspeichers zusätzlich zum Stapelspeicher im Speicher, wie z. B. Speicher 132 extern vom Prozessor 102 benutzt werden. Dementsprechend reduziert dies die Anzahl von Lade- und Speicheroperationen durch mit dem Hardware-Stapelspeicher verbundene Funktionseinheiten 212–218. Insbesondere stellt 4 Quellcode und den erzeugten Assembler-Code, wobei ein Register als Teil des Hardware-Speicherstapels genutzt wird und nicht benutzt wird, gemäß Ausführungsformen der vorliegenden Erfindung dar. Wie gezeigt, enthält 4 Quellcode 402, Assembler-Code 404 und Assembler-Code 406. Der Assembler-Code 404 enthält Teile der für den Quellcode 402 erzeugten Assembler-Code-Befehle, wenn ein Register im Prozessor 102 nicht als Teil des Hardware-Speicherstapels benutzt wird. Der Assembler-Code 406 enthält Teile der für den Quellcode 402 erzeugten Assembler-Code-Befehle, wenn ein Register im Prozessor 102 als Teil des Hardware-Stapelspeichers benutzt wird.
  • Der Quellcode 402 enthält eine Prozedur mit Parametern "x" und "y", worin ein Befehl in der Prozedur eine Variable "z" gleich der Addition von "x" und "y" setzt. Der Assembler-Code 404 enthält eine Lade-Operation zum Speichern des Werts von "x" in Register "r1 "; eine Lade-Operation zum Speichern des Werts von "y" in Register "r2"; und eine Addier-Operation von Register "r1" und Register "r2". Wie dargestellt, sind zwei verschiedene Lade-Operationen notwendig, um die Werte von "x" und "y" (, die auf dem Stapelspeicher im externen Speicher gespeichert sind) in Register im Prozessor 102 zu bringen. Im Gegensatz dazu enthält der Assembler-Code 406 (, worin ein Spezial-Register im Prozessor 102 als Teil des Hardware-Stapelspeichers benutzt wird) eine einzige Lade-Operation, der sich eine Addier-Operation anschließt. Insbesondere enthält der Assembler-Code 406 eine Lade-Operation zum Speichern des Werts von "y" in Register "r2" und eine Addier-Operation von Spezial-Register "sr1" und Register "r2" (, worin Spezial-Register "sr1" Teil des Hardware-Stapelspeichers ist).
  • Wie gezeigt, kann mindestens ein Spezialzweck-Register in den Spezialzweck-Registern 254 als Teil des Programm-Stapelspeichers benutzt werden, wenn die Programmumgebung, wie z. B. der Benutzer, andeutet, daß Zugriffe auf Variablen auf dem Programm-Stapelspeicher nicht im Anschluß an die Pop-Operationen für diese Variablen durchgeführt werden (selbst wenn die erste Befehlssatzarchitektur, auf der der erste Binärcode erzeugt wurde, derartige Zugriffe ermöglicht). Dementsprechend kann der Decoder 204 die zugehörigen Mikrooperationen für den Assembler-Code 406 (anstelle der zugehörigen Mikrooperationen für den Assembler-Code 404) erzeugen, wenn ein besonderes Befehlssatzarchitekturausführungs-Flag gesetzt ist, das anzeigt, daß das Programm oder die Anwendung, das/die ausgeführt wird, nicht versuchen wird, auf Datenparameter auf dem Stapelspeicher im Anschluß an den Abschluß der Prozedur mit diesen Datenparametern zuzugreifen.
  • Ein weiteres Beispiel für Hardware-Übersetzung durch Komponenten des Prozessors 102 betrifft einen Zugriff auf den Speicher in der falschen Reihenfolge. Insbesondere kann ein Programm, das auf einer ersten Befehlssatzarchitektur basiert, einen Zugriff auf einen Speicher (sowohl im als auch außerhalb des Prozessors 102) in der richtigen Reihenfolge garantieren. Somit müssen Speicherzugriffe während der Ausführung dieses Binärcodes serialisiert werden, um die Kompatibilität des Binärcodes mit der ersten Befehlssatzarchitektur zu garantieren. Diese Serialisierung kann die Ausführungsleistung des Binärcodes reduzieren. Wenn z. B. ein erster Befehl eine Lade-Operation von einer noch nicht bekannten Adresse abschließen muß, während ein zweiter Befehl (der nach dem ersten Befehl in der seriellen Ausführung des Binärcodes auszuführen ist) auch eine Speicher-Operation bzgl. einer Adresse abschließen muß, die bereits bekannt ist, muß der erste Befehl unverändert vor Abschluß des zweiten Befehls abgeschlossen werden, selbst wenn die Speicher-Operation des zweiten Befehls während des Wartens auf die für die Lade-Operation des ersten Befehls notwendige Adresse abgeschlossen worden sein könnte. Eine derartige Serialisierung ist entscheidend, um die korrekte Ausführung von Mehrprozess- oder Mehrprozessor-Systemen zu garantieren.
  • Im Gegensatz dazu kann eine zweite Befehlssatzarchitektur Zugriffe auf einen Speicher in falscher Reihenfolge sowie Wege ermöglichen, um derartige Zugriffe zu ordnen, nachdem die Zugriffe abgeschlossen worden sind. Wenn die Programmumgebung, wie z. B. der Benutzer, sicherstellen kann, daß der Binärcode, der auf der ersten Befehlssatzarchitektur basiert, keine Serialisierung der Befehlsausführung erfordert, kann dementsprechend die Programm umgebung das zugehörige Befehlssatzarchitekturaufführungs-Flag setzen, um Zugriffe auf den Speicher in falscher Reihenfolge zu ermöglichen, wodurch mögliche Erhöhungen der Leistungswirkung des Binärcodes gestattet werden. Wenn z. B. der Binärcode ein Programm mit einem einzigen Thread ohne Synchronisierung mit anderen gleichzeitigen Prozessen oder Geräten ist, kann der Binärcode dann in einem Modus, der Zugriffe auf den Speicher in falscher Reihenfolge ermöglicht, sicher ausgeführt werden.
  • Somit kann in einer Ausführungsform bei Festlegung, daß Zugriffe auf den Speicher in falscher Reihenfolge möglich sind (für einen Binärcode, der auf einer Befehlssatzarchitektur basiert, die nicht für derartige Zugriffe sorgt) der Decoder 204 die Speicherschnittstelleneinheit 72 anweisen, Zugriffe auf den Speicher für diesen Binärcode in falscher Reihenfolge bezüglich der Reihenfolge der Befehle im Binärcode zu planen.
  • In einer Ausführungsform betrifft ein Beispiel für Hardware-Übersetzung durch Komponenten des Computersystems 100 einen selbstmodifizierenden Code. Insbesondere enthält der selbstmodifizierende Code einen Code, der auf Speicherorte schreibt, wo sich der Code selbst befindet. Eine Anzahl von Befehlssatzarchitekturen gestattet die Ausführung eines derartigen Codes. Doch ist ein derartiger Code ineffizient und senkt er die Leistung bei der Ausführung des Codes. Insbesondere müssen Speichercontroller und/oder andere Komponenten die Orte verfolgen, wo der Speicher beschrieben wird, um festzulegen, ob der Code selbst modifizierend ist. Mit anderen Worten legen diese Speichercontroller und/oder anderen Komponenten fest, ob, für jedes Schreiben in den Speicher, der Ort im Speicher, der von dem Code beschrieben wird, den Code selbst enthält.
  • Im Gegensatz dazu kann eine zweite Befehlssatzarchitektur in einem Modus arbeiten, in dem ein selbstmodifizierender Code nicht zulässig ist. Wenn die Programmumgebung, wie z. B. der Benutzer, sicherstellen kann, daß der Binärcode, der auf der ersten Befehlssatzarchitektur basiert, keinen selbstmodifizierenden Code enthält, kann dementsprechend die Programmumgebung das zugehörige Befehlssatzarchitekturausführungs-Flag setzen, um die Überprüfung auszuschalten, ob ein bestimmter Programmcode selbstmodifizierend ist.
  • Somit kann in einer Ausführungsform bei Festlegung, daß der Programmcode, auf dem der Binärcode basiert, nicht selbstmodifizierend ist, der Decoder 204 die zu dem Speicher, der den Binärcode speichert, gehörigen Speichercontroller anweisen, nicht zu überprüfen, ob der bestimmte Programmcode selbstmodifizierend ist. Jedes Mal, wenn eine Speicherschreib-Operation durchgeführt wird, würden dementsprechend genannte Speichercontroller nicht überprüfen, um zu sehen, ob der Ort, an dem in den Speicher geschrieben wird, sich innerhalb der Orte befindet, worin sich der Programmcode befindet, wodurch die Geschwindigkeit der Ausführung des Binärcodes erhöht wird.
  • In einer Ausführungsform betrifft die Hardware-Übersetzung durch Komponenten des Computersystems 100 die Speichersegmentierung. Insbesondere wird die Speichersegmentierung zur Erweiterung des zugänglichen Adressraumes eines Programmcodes verwendet. Z. B. kann eine bestimmte Architektur Beschränkungen hinsichtlich der Größe der Breiten der Register aufgewiesen haben, wodurch die Größe des Adressraumes begrenzt wird. Dementsprechend kann ein bestimmter Programmcode/Binärcode auf Daten zugreifen, die über eine Anzahl von unterschiedlichen Segmenten im Speicher gespeichert werden. In einer Ausführungsform wird ein Wert, der in einem der Spezialzweck-Register 254 gespeichert wird, als ein Offset zur Konvertierung vom virtuellen zum physikalischen Adressraum benutzt. In einer Ausführungsform wird dieser Wert zur virtuellen Adresse addiert, um die physikalische Adresse zu erzeugen. Wenn der Binärcode auf Daten über eine Anzahl von Segmenten im Speicher zugreift, wird somit dieser Wert während der Programmausführung aktualisiert, wenn das Segment, aus dem auf Daten zugegriffen wird, geändert wird. Im Gegensatz dazu definieren neuere Architekturen größere Registerbreiten, wie z. B. 32 Bit oder 64 Bit, wodurch Betriebssystemen ermöglicht wird, auf derartigen Architekturen auszuführen, um Programme mit einem ausreichend größeren virtuellen Adressraum, ohne auf Segmentierung angewiesen zu sein, anzubieten.
  • In einer Ausführungsform basiert der erste Binärcode auf einer ersten Befehlssatzarchitektur, worin die Daten, auf die vom ersten Binärcode zugegriffen wird, in einer Anzahl von Segmenten im Speicher gespeichert werden. Zusätzlich enthält in einer Ausführungsform eine zweite Befehlssatzarchitektur einen virtuellen Adressraum, der größer als der virtuelle Adressraum für die erste Befehlssatzarchitektur ist. Wenn die Programmumgebung, wie z. B. der Benutzer, sicherstellen kann, daß die Daten, auf die vom ersten Binärcode, der auf der ersten Befehlssatzarchitektur basiert, zugegriffen wird, in einem einzigen Segment im Speicher basierend auf der zweiten Befehlssatzarchitektur gespeichert werden können, kann die Programmumgebung das zugehörige Ausführungs-Flag setzen, um Speichersegmentierung auszulassen, wodurch Segmentierung während der Übersetzung von Speicheradressen von virtuell nach physikalisch umgangen wird.
  • In einer Ausführungsform werden die größeren Breiten von Registern in der Register-Datei 250 verwendet, um den größeren virtuellen Adressraum zu ermöglichen. Zum Beispiel kann die erste Befehlssatzarchitektur 16 Bits von Registern verwenden, die eine Breite von 32 Bits aufweisen und in der Register-Datei 250 gespeichert sind, während die zweite Befehlssatzarchitektur die vollen 32 Bits derartiger Register verwenden kann. In einer Ausführungsform erzeugt der Decoder 204 keine Mikrooperationen zum Aktualisieren dieses Offset-Werts für virtuellen zum physikalischen Adressraum, der in einem der Spezialzweck-Register 250 gespeichert ist, da dieser Wert über den Verlauf der Ausführung des Binärcodes konstant bleibt, (da die Daten, auf die vom Binärcode zugegriffen wird, sich in einem einzigen Segment im Speicher befinden). Dementsprechend wird die Ausführung des Binärcodes erhöht, wenn Speichersegmentierung auf der Grundlage der zweiten Befehlssatzarchitektur ausgelassen wird.
  • Außerdem wird in einer Ausführungsform ein Binärcode, der auf einer ersten Befehlssatzarchitektur basiert, so erzeugt, daß die Größe der Daten, auf die vom Binärcode zugegriffen wird, in einem einzigen Segment im Speicher gespeichert werden können. Dementsprechend müssen die Breiten der in den Universal-Registern 252 gespeicherten Werte nicht erhöht werden. Nach einer Ausführungsform kann die Programmumgebung ein Befehlssatzarchitekturausführungs-Flag setzen, worin der Binärcode nicht auf der zweiten Befehlsarchitektur bezogen auf die größere Breite in den Registern basiert. In einer derartigen Ausführungsform erzeugt der Decoder 204 keine Mikrooperationen zum Aktualisieren dieses Offset-Werts für virtuellen zu physikalischen Adressraum, der in einem der Spezial-Register 254 gespeichert ist. Insbesondere muß dieser Wert nicht aktualisiert werden, da die Daten, auf die vom Binärcode zugegriffen wird, in einem einzigen Segment im Speicher gespeichert sind.
  • Zum Flussdiagramm 300 von 3 zurückkehrend, werden bei Prozeßblock 314 die Befehle (, die, wie oben beschrieben, modifiziert worden sein können) ausgeführt. In einer Ausführungsform führen die Funktionseinheiten 212–218 die Befehle aus. Die hierin beschriebenen Software- und Hardware-Übersetzungen dienen als Beispiele und nicht als Beschränkungen, da Ausführungsformen der vorliegenden Erfindung andere Übersetzungen (sowohl Software – als auch Hardware -) eines ersten Binärcodes, der auf einer ersten Befehlssatzarchitektur basiert, in einen zweiten Binärcode enthalten können, der auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert. Während eine bestimmte Übersetzung unter Bezugnahme auf Software oder Hardware beschrieben worden ist, sind ferner Ausführungsformen der vorliegenden Erfindung nicht so beschränkt. Während eine bestimmte Übersetzung in Beziehung mit einer Software-Übersetzung beschrieben worden ist, kann in einer anderen Ausführungsform z. B. eine Übersetzung in Hardware und/oder eine Kombination der Hardware und Software durchgeführt werden.
  • Außerdem sind auf Software-Übersetzung bezogene Ausführungsformen der vorliegenden Erfindung in Beziehung mit Übersetzungen eines vollständigen Binärcodes beschrieben worden. Jedoch sind Ausführungsformen der vorliegenden Erfindung nicht so beschränkt. In einer Ausführungsform kann ein Programmiermodell komplexere Wechselwirkungen zwischen Binärebenen-Objekten enthalten. Nehmen wir z. B. an, daß eine gemeinsam benutzte Bibliothek von Binärcodes basierend auf einer ersten Befehlssatzarchitektur kompiliert wird und ein Hauptbinärcode, der Binärcodes in der gemeinsam benutzten Bibliothek verwendet/miteinander verbindet, auf einer Kombination der ersten und zweiten Befehlssatzarchitekturen, wie hierin beschrieben, basiert. In einer Ausführungsform kann der Hauptbinärcode in Abhängigkeit von der erforderlichen Funktionalität, Programmumgebung, etc. zwischen den verschiedenen Funktionen der zwei verschiedenen Befehlssatzarchitekturen wechseln. Zum Beispiel können die Binärcodes in der Bibliothek den Kompatibilitätsgrad zwischen der ersten und zweiten Befehlsarchitektur in Abhängigkeit davon, welcher Binärcode in der Bibliothek aufgerufen wird, vom globalen Programmzustand des Hauptbinärcodes etc., dynamisch einstellen.
  • Obwohl die vorliegende Erfindung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen beschrieben worden ist, wird ersichtlich sein, daß zahlreiche Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne aus dem breiteren Geist und Schutzbereich der Erfindung zu gelangen. Dementsprechend sollen die Beschreibung und die Zeichnungen in einem erläuternden statt einem einschränkenden Sinne betrachtet werden.
  • Zusammenfassung
  • In einer Ausführungsform enthält ein Verfahren Empfangen eines Binärcodes eines Programmcodes. Der Binärcode basiert auf einer ersten Befehlssatzarchitektur. Das Verfahren enthält auch Übersetzen des Binärcodes, wobei der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.

Claims (29)

  1. Verfahren, umfassend: Empfangen eines Binärcodes eines Programmcodes, wobei der Binärcode auf einer ersten Befehlssatzarchitektur basiert; und Übersetzen des Binärcodes, wobei der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.
  2. Verfahren nach Anspruch 1, umfassend Überprüfen von Befehlssatzarchitekturausführungs-Flags, wobei die Befehlssatzarchitekturausführungs-Flags mindestens eine Übersetzung eines Teils des Binärcodes anzeigen.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Befehlssatzarchitekturausführungs-Flags von einer Programmumgebung des Binärcodes gesetzt werden.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß ein Register in einem den Binärcode übersetzenden Prozessor zum Speichern der Befehlssatzarchitekturausführungs-Flags dient.
  5. Verfahren nach Anspruch 2, das Ausführen des übersetzten Binärcodes umfaßt.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß das Übersetzen und Ausführen auf einem Befehl basieren, wobei die Befehlssatzarchitekturausführungs-Flags auf einer Anzahl von Befehlszeilen-Flags basieren, die mit dem Befehl verbunden sind.
  7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur Gleitkommabefehle umfaßt und das zweite Befehlssatzarchitektur Gleitkommabefehle umfaßt, wobei das Übersetzen des Binärcodes Übersetzen der Gleitkommabefehle der ersten Befehlssatzarchitektur in Gleitkommabefehle der zweiten Befehlssatzarchitektur umfaßt.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß das Übersetzen des Binärcodes Speichern eines Teils eines Hardware-Stapelspeichers in einem Register eines den Binärcode übersetzenden Prozessors umfaßt.
  9. Verfahren, umfassend: Empfangen eines Binärcodes von einem Programmcode, wobei der Binärcode auf einer ersten Befehlssatzarchitektur basiert; und Ausführen des Binärcodes, wobei das Ausführen Übersetzen eines Befehls des Binärcodes, der auf der ersten Befehlssatzarchitektur basiert, in mindestens einen Befehl umfaßt, der auf einer zweiten Befehlssatzarchitektur basiert.
  10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur Zugriffe auf Speicher in richtiger Reihenfolge enthält und die zweite Befehlssatzarchitektur Zugriffe auf Speicher in falscher Reihenfolge enthält, wobei das Übersetzen des Binärcodes Zugriffe auf den Speicher von einem den Binärcode ausführenden Prozessor in falscher Reihenfolge enthält.
  11. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur ermöglicht, daß der Binärcode sich selbst modifiziert, und die zweite Befehlssatzarchitektur nicht ermöglicht, daß sich der Binärcode selbst modifiziert, wobei das Übersetzen des Binärcodes einen Befehl an Controller der Speicher, die den Binärcode speichern, zur Durchführung von Schreiboperationen unabhängig von Überprüfungen, ob die Schreiboperationen einen Ort modifizieren, wo der Binärcode gespeichert wird, enthält.
  12. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die zweite Befehlssatzarchitektur einen Adressraum aufweist, der größer als die erste Befehlssatzarchitektur ist, wobei das Übersetzen des Binärcodes die Verwendung des Adressraums der zweiten Befehlssatzarchitektur umfaßt.
  13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß die Daten, auf die vom Binärcode zugegriffen wird, in einem einzigen Segment im Speicher gespeichert werden, und daß ein Offset-Wert zum Übersetzen einer virtuellen Adresse in eine physikalische Adresse für die Daten während der Ausführung des Binärcodes nicht modifiziert wird.
  14. System, umfassend: einen Speicher zum Aufnehmen eines Binärcodes eines Programmcodes, der auf einer ersten Befehlssatzarchitektur basiert; und einen mit dem Speicher gekoppelten Prozessor, wobei der Prozessor zum Ausführen des Binärcodes dient, wobei Ausführen des Binärcodes Übersetzen des Binärcodes umfaßt und der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.
  15. System nach Anspruch 14, dadurch gekennzeichnet, daß der Prozessor ein Register zum Speichern von Befehlssatzarchitekturausführungs-Flags umfaßt, wobei die Befehlssatzarchitekturausführungs-Flags mindestens eine Übersetzung eines Teils des Binärcodes anzeigen.
  16. System nach Anspruch 15, dadurch gekennzeichnet, daß die Befehlssatzarchitekturausführungs-Flags von einer Programmumgebung des Binärcodes gesetzt werden.
  17. System nach Anspruch 14, dadurch gekennzeichnet, daß die zweite Befehlssatzarchitektur einen Adressraum aufweist, der größer als die erste Befehlssatzarchitektur ist, wobei das Übersetzen des Binärcodes die Verwendung des Adressraums der zweiten Befehlssatzarchitektur umfaßt.
  18. System nach Anspruch 17, dadurch gekennzeichnet, daß der Binärcode in einem einzigen Segment im Speicher gespeichert wird, und daß ein Offset-Wert zum Übersetzen einer virtuellen Adresse in eine physikalische Adresse während der Ausführung des Binärcodes nicht modifiziert wird.
  19. Vorrichtung, umfassend: einen Decoder zum Empfangen eines Binärcodes, der auf einer ersten Befehlssatzarchitektur basiert; und eine Anzahl von Registern, wobei mindestens eines der Anzahl von Registern zum Speichern von Befehlssatzarchitekturausführungs-Flags dient, ferner die Befehlssatzarchitekturausführungs-Flags zum Anzeigen einer Übersetzung eines Binärcodes dienen und der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.
  20. Vorrichtung nach Anspruch 19, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur Gleitkommabefehle umfaßt und daß die zweite Befehlssatzarchitektur Gleitkommabefehle umfaßt, wobei das Übersetzen des Binärcodes Übersetzen der Gleitkommabefehle der ersten Befehlssatzarchitektur in Gleitkommabefehle der zweiten Befehlssatzarchitektur umfaßt.
  21. Vorrichtung nach Anspruch 19, dadurch gekennzeichnet, daß das Übersetzen des Binärcodes Speichern eines Teils eines Hardware-Stapelspeichers in einem Register in der Anzahl von Registern umfaßt.
  22. Vorrichtung nach Anspruch 19, dadurch gekennzeichnet, daß die Vorrichtung mit Speichern zum Speichern des Binärcodes gekoppelt ist, wobei die erste Befehlssatzarchitektur ermöglicht, daß sich der Binärcode selbst modifiziert, und die zweite Befehlssatzarchitektur nicht ermöglicht, daß sich der Binärcode selbst modifiziert, ferner das Übersetzen des Binärcodes einen Befehl an Controller der Speicher zur Durchführung von Schreiboperationen unabhängig von Überprüfungen, ob die Schreiboperationen einen Ort modifizieren, wo der Binärcode gespeichert wird, enthält.
  23. Vorrichtung nach Anspruch 19, dadurch gekennzeichnet, daß die zweite Befehlssatzarchitektur einen Adressraum aufweist, der größer als die erste Befehlssatzarchitektur ist, wobei das Übersetzen des Binärcodes Verwendung des Adressraums der zweiten Befehlssatzarchitektur umfaßt.
  24. Vorrichtung nach Anspruch 23, dadurch gekennzeichnet, daß die Daten, auf die vom Binärcode zugegriffen wird, in einem einzigen Segment im mit der Vorrichtung gekoppelten Speicher gespeichert werden, und daß ein Offset-Wert zum Übersetzen einer virtuellen Adresse in eine physikalische Adresse für die Daten während der Ausführung des Binärcodes nicht modifiziert wird.
  25. Maschinenlesbares Medium, das Befehle liefert, die bei Ausführung von einer Maschine, die Maschine Operationen durchführen lassen, umfassend: Empfangen eines Binärcodes eines Programmcodes, wobei der Binärcode auf einer ersten Befehlssatzarchitektur basiert; Übersetzen des Binärcodes, wobei der übersetzte Binärcode auf einer Kombination der ersten Befehlssatzarchitektur und einer zweiten Befehlssatzarchitektur basiert.
  26. Maschinenlesbares Medium nach Anspruch 25, umfassend die Ausführung des übersetzten Binärcodes.
  27. Maschinenlesbares Medium nach Anspruch 26, dadurch gekennzeichnet, daß das Übersetzen und Ausführen auf einem Befehl basieren, wobei die Befehlssatzarchitekturausführungs-Flags auf einer Anzahl von Befehlszeilen-Flags basieren, die mit dem Befehl verbunden sind.
  28. Maschinenlesbares Medium nach Anspruch 25, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur Gleitkommabefehle umfaßt und daß die zweite Befehlssatzarchitektur Gleitkommabefehle umfaßt, wobei das Übersetzen des Binärcodes Übersetzen der Gleitkommbefehle der ersten Befehlssatzarchitektur in Gleitkommabefehle der zweiten Befehlssatzarchitektur umfaßt.
  29. Maschinenlesbares Medium nach Anspruch 25, dadurch gekennzeichnet, daß die erste Befehlssatzarchitektur ermöglicht, daß sich der Binärcode selbst modifiziert, und die zweite Befehlssatzarchitektur nicht ermöglicht, daß sich der Binärcode selbst modifiziert, wobei das Übersetzen des Binärcodes einen Befehl an Controller von Speichern, die den Binärcode speichern, zum Durchführen von Schreiboperationen unabhängig von der Überprüfung, ob die Schreiboperationen einen Ort modifizieren, wo der Binärcode gespeichert wird, enthält.
DE10297624T 2002-01-02 2002-12-27 Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen Ceased DE10297624T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/039,254 US7251811B2 (en) 2002-01-02 2002-01-02 Controlling compatibility levels of binary translations between instruction set architectures
US10/039254 2002-01-02
PCT/US2002/041556 WO2003058432A1 (en) 2002-01-02 2002-12-27 Controlling compatibility levels of binary translations between instruction set architectures

Publications (1)

Publication Number Publication Date
DE10297624T5 true DE10297624T5 (de) 2004-11-25

Family

ID=21904487

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297624T Ceased DE10297624T5 (de) 2002-01-02 2002-12-27 Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen

Country Status (8)

Country Link
US (1) US7251811B2 (de)
CN (1) CN100357882C (de)
AU (1) AU2002361884A1 (de)
DE (1) DE10297624T5 (de)
GB (1) GB2400949B (de)
HK (1) HK1067205A1 (de)
TW (1) TWI279715B (de)
WO (1) WO2003058432A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219336B2 (en) * 2002-01-03 2007-05-15 Intel Corporation Tracking format of registers having multiple content formats in binary translation
US7519800B2 (en) * 2003-03-27 2009-04-14 Hewlett-Packard Development Company, L.P. Apparatus and method for enforcing homogeneity within partitions of heterogeneous computer systems
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
KR100658918B1 (ko) * 2004-03-29 2006-12-15 주식회사 팬택앤큐리텔 블록 단위 입출력 명령어를 이용한 시스템 전역 변수초기화 장치 및 그 방법
CN100573443C (zh) * 2004-12-30 2009-12-23 英特尔公司 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择
US7818724B2 (en) * 2005-02-08 2010-10-19 Sony Computer Entertainment Inc. Methods and apparatus for instruction set emulation
CN100377088C (zh) * 2005-03-04 2008-03-26 中国科学院计算技术研究所 二进制翻译中局部变量识别和提升的处理方法
US20070006189A1 (en) * 2005-06-30 2007-01-04 Intel Corporation Apparatus, system, and method of detecting modification in a self modifying code
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
US8627050B2 (en) * 2007-10-08 2014-01-07 International Business Machines Corporation Executing perform floating point operation instructions
US20090164982A1 (en) * 2007-12-21 2009-06-25 Sun Microsystems, Inc. Method and system for transforming binaries to use different instructions
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
CN103092599A (zh) * 2011-11-05 2013-05-08 京瓷办公信息***株式会社 软件开发套件
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
WO2013102280A1 (en) * 2012-01-06 2013-07-11 Intel Corporation (A Corporation Of Delaware) Method and apparatus for substituting compiler built-in helper functions with machine instructions
EP2862061A4 (de) * 2012-06-15 2016-12-21 Soft Machines Inc Speicherwarteschlange für virtuelle last mit dynamischem versandfenster mit einheitlicher struktur
US9160815B2 (en) 2012-06-28 2015-10-13 Intel Corporation Method and apparatus for virtual machine interoperability
US9563432B2 (en) 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
CN104679480A (zh) * 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换***和方法
US9256546B2 (en) 2014-03-31 2016-02-09 International Business Machines Corporation Transparent code patching including updating of address translation structures
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses
US9734083B2 (en) 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US9483295B2 (en) 2014-03-31 2016-11-01 International Business Machines Corporation Transparent dynamic code optimization
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9720661B2 (en) 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US9858058B2 (en) 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US10169043B2 (en) * 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
CN107341372B (zh) * 2017-07-25 2018-12-07 北京深思数盾科技股份有限公司 一种软件保护方法和装置
US20190163492A1 (en) * 2017-11-28 2019-05-30 International Business Machines Corporation Employing a stack accelerator for stack-type accesses
CN109918081B (zh) * 2019-03-01 2022-06-03 中安智联未来有限公司 一种编译方法及编译器

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450575A (en) * 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
US5307492A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation Mapping assembly language argument list references in translating code for different machine architectures
US5428786A (en) * 1991-03-07 1995-06-27 Digital Equipment Corporation Branch resolution via backward symbolic execution
US5432795A (en) * 1991-03-07 1995-07-11 Digital Equipment Corporation System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
US5339422A (en) * 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
US5598560A (en) * 1991-03-07 1997-01-28 Digital Equipment Corporation Tracking condition codes in translation code for different machine architectures
US5307504A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5339238A (en) 1991-03-07 1994-08-16 Benson Thomas R Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5301325A (en) * 1991-03-07 1994-04-05 Digital Equipment Corporation Use of stack depth to identify architechture and calling standard dependencies in machine code
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
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5574887A (en) * 1993-09-20 1996-11-12 Apple Computer, Inc. Apparatus and method for emulation routine pointer prefetch
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US6496922B1 (en) * 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
KR960015100A (ko) * 1994-10-31 1996-05-22 미타 요시히로 감광체를 사용하는 전자사진법
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US5875318A (en) * 1996-04-12 1999-02-23 International Business Machines Corporation Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code
US5903760A (en) * 1996-06-27 1999-05-11 Intel Corporation Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6199202B1 (en) * 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
US6266769B1 (en) * 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6243668B1 (en) * 1998-08-07 2001-06-05 Hewlett-Packard Company Instruction set interpreter which uses a register stack to efficiently map an application register state
US7640153B2 (en) * 2001-06-04 2009-12-29 Hewlett-Packard Development Company, L.P. Networked client-server architecture for transparently transforming and executing applications
US20030033593A1 (en) * 2001-08-08 2003-02-13 Evelyn Duesterwald Dynamic execution layer interface for explicitly or transparently executing application or system binaries

Also Published As

Publication number Publication date
GB2400949A (en) 2004-10-27
GB2400949B (en) 2006-06-28
WO2003058432A1 (en) 2003-07-17
CN100357882C (zh) 2007-12-26
US20030126587A1 (en) 2003-07-03
AU2002361884A1 (en) 2003-07-24
GB0414805D0 (en) 2004-08-04
TWI279715B (en) 2007-04-21
TW200403583A (en) 2004-03-01
US7251811B2 (en) 2007-07-31
HK1067205A1 (en) 2005-04-01
CN1613054A (zh) 2005-05-04

Similar Documents

Publication Publication Date Title
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE3751356T2 (de) Informationsverarbeitungssystem.
DE112012000303B4 (de) Dynamische binäre Optimierung
DE112011104555B4 (de) Vektorkonfliktinstruktionen
DE68921775T2 (de) Prozessorssimulation.
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE68927946T2 (de) Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
DE19945992B4 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE69524570T2 (de) Verfahren und Vorrichtung zur Verbesserung der Systemleistung in einem Datenverarbeitungssystem
DE68929038T2 (de) Verfahren zur Verarbeitung von digitalen Textdaten
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE60028069T2 (de) Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen
DE3689595T2 (de) Datenverarbeitungssystem.
DE102010051477A1 (de) Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE202012009380U1 (de) Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE112004002365T5 (de) Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen
DE112012000212T5 (de) Technik für live Analyse-basierte Rematerialisation zur Reduktion von Registerdruck und zur Verbesserung von Parallelität
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10297624

Country of ref document: DE

Date of ref document: 20041125

Kind code of ref document: P

R009 Remittal by federal patent court to dpma for new decision or registration
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R003 Refusal decision now final
R011 All appeals rejected, refused or otherwise settled