DE102012217315A1 - Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung - Google Patents

Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung Download PDF

Info

Publication number
DE102012217315A1
DE102012217315A1 DE102012217315A DE102012217315A DE102012217315A1 DE 102012217315 A1 DE102012217315 A1 DE 102012217315A1 DE 102012217315 A DE102012217315 A DE 102012217315A DE 102012217315 A DE102012217315 A DE 102012217315A DE 102012217315 A1 DE102012217315 A1 DE 102012217315A1
Authority
DE
Germany
Prior art keywords
routine
code
emulated
application
routines
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
DE102012217315A
Other languages
English (en)
Inventor
Christopher Cook
Anthony C. Sumrall
Thomas A. Thackrey
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012217315A1 publication Critical patent/DE102012217315A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox

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)

Abstract

Es wird das Verarbeiten innerhalb einer emulierten Datenverarbeitungsumgebung erleichtert. Bei zum Umsetzen von durch das System bereitgestellten (z. B. Standard- bzw. häufig verwendeten) Routinen, auf die in einer emulierten Anwendung verwiesen wird, handelt es sich an Stelle von emuliertem Code um für die Datenverarbeitungsumgebung verfügbaren nativen Code. Als Reaktion auf das Treffen auf einen Verweis auf eine durch das System bereitgestellte Routine in der emulierten Anwendung wird der Prozessor an Stelle von emuliertem Code an nativen Code verwiesen, obwohl die Anwendung emuliert wird.

Description

  • HINTERGRUND
  • Ein Aspekt der vorliegenden Erfindung betrifft allgemein emulierte Datenverarbeitungsumgebungen und insbesondere das Erleichtern der Verarbeitung innerhalb derartiger Umgebungen.
  • Emulierte Datenverarbeitungsumgebungen ermöglichen es einem Prozessor einer bestimmten Systemarchitektur, für andere, sich von der bestimmten Systemarchitektur unterscheidende Systemarchitekturen geschriebene Anwendungen zu emulieren. Der die Emulation durchführende Prozessor wird nativer Prozessor genannt, der nativen Code (d. h. für diese Architektur geschriebenen Code) ausführt. Zum Emulieren einer Anwendung übersetzt der Prozessor Code von der Architektur, in der die Anwendung geschrieben ist, in funktional entsprechenden Code in der Architektur des Prozessors und führt dann den übersetzten Code aus. Dieser übersetzte Code wird häufig emulierter Code genannt.
  • Während die Emulation eine Reihe von Vorteilen bereitstellt, wird häufig die Leistungsfähigkeit beeinträchtigt, da das Übersetzen von Code in übersetzten nativen Code Zeit erfordert.
  • KURZDARSTELLUNG
  • Durch das Bereitstellen eines Computerprogrammprodukts zum Erleichtern der Verarbeitung innerhalb einer emulierten Datenverarbeitungsumgebung werden die nach dem Stand der Technik vorhandenen Unzulänglichkeiten überwunden, und zusätzliche Vorteile werden bereitgestellt. Das Computerprogrammprodukt weist ein durch einen Verarbeitungsschaltkreis lesbares Speichermedium auf, auf dem Anweisungen zur Ausführung durch den Verarbeitungsschaltkreis zur Durchführung eines Verfahrens gespeichert sind. Das Verfahren weist zum Beispiel das Erkennen durch einen auf einer Systemarchitektur beruhenden Prozessor von einer oder mehreren durch das System bereitgestellten Routinen auf, auf die innerhalb einer Anwendung verwiesen wird, die für eine sich von der einen Systemarchitektur unterscheidende Systemarchitektur geschrieben wurde, wobei die Anwendung durch den Prozessor zu emulieren ist, und wobei das Erkennen einen oder mehrere festgelegte Routinenamen oder eine oder mehrere festgelegte Routinesignaturen erkennt; und als Reaktion auf das Erkennen einer durch das System bereitgestellten Routine das Bereitstellen von nativem Code für die durch das System bereitgestellte Routine an Stelle von emuliertem Code für die durch das System bereitgestellte Routine.
  • Sich auf ein oder mehrere Aspekte der vorliegenden Erfindung beziehende Verfahren und Systeme werden hierin auch beschrieben und beansprucht. Des Weiteren werden hierin auch sich auf ein oder mehrere Aspekte der vorliegenden Erfindung beziehende Dienste beschrieben und gegebenenfalls beansprucht.
  • Zusätzliche Eigenschaften und Vorteile werden durch die Techniken eines oder mehrerer Aspekte der vorliegenden Erfindung verwirklicht. Andere Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und sind als Teil der beanspruchten Erfindung anzusehen.
  • KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Ein oder mehrere Aspekte der vorliegenden Erfindung werden insbesondere als Beispiele in den Ansprüchen zum Schluss der Beschreibung dargelegt und eindeutig beansprucht. Obige und weitere Ziele, Eigenschaften und Vorteile eines oder mehrerer Aspekte der Erfindung werden aus der folgenden ausführlichen Beschreibung zusammen mit den beigefügten Zeichnungen ersichtlich. Es zeigen:
  • 1 eine Ausführungsform einer Datenverarbeitungsumgebung zum Insichaufnehmen und Verwenden eines oder mehrerer Aspekte der vorliegenden Erfindung;
  • 2 weitere Einzelheiten einer Ausführungsform des Arbeitsspeichers aus 1 gemäß einem Aspekt der vorliegenden Erfindung;
  • 3 ein Beispiel einer emulierten Anwendung, darunter durch das System bereitgestellte Subroutinen, auf welche die Anwendung verweist;
  • 4 ein anderes Beispiel der Anwendung aus 3, wobei in diesem Beispiel jedoch an Stelle des Emulierens der durch das System bereitgestellten Subroutinen gemäß einem Aspekt der vorliegenden Erfindung verfügbarer nativer Code für die Subroutinen verwendet wird;
  • 5 ein Beispiel der Logik zum Bereitstellen von verfügbarem nativen Code an Stelle von übersetztem nativen Code für eine emulierte Anwendung gemäß einem Aspekt der vorliegenden Erfindung; und
  • 6 eine Ausführungsform eines Computerprogrammprodukts, das einen oder mehrere Aspekte der vorliegenden Erfindung in sich aufnimmt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Funktion zum Erleichtern der Verarbeitung innerhalb einer emulierten Datenverarbeitungsumgebung bereitgestellt. In einem Beispiel handelt es sich bei dem zum Umsetzen von Standard- bzw. häufig verwendeten Routinen (z. B. Subroutinen, Funktionen, Modulen, Diensten, Anweisungen, Code, usw.), auf die in einer emulierten Anwendung verwiesen wird, nicht um emulierten Code, sondern stattdessen um für die Datenverarbeitungsumgebung verfügbaren nativen Code. Bei den Standard- bzw. häufig verwendeten Routinen handelt es sich zum Beispiel um durch das System bereitgestellte Routinen, bei denen es sich um Routinen handelt, die zum Beispiel durch das System, den Compiler, das Betriebssystem usw. bereitgestellt werden. Es handelt sich dabei um diejenigen Routinen, wie zum Beispiel eine Sortier-, Druck- oder Kopierroutine, eine mathematische Funktion oder einen GetMain-Dienst, die standardmäßig mit dem Betriebssystem oder anderen Systemkomponenten geliefert werden.
  • In einem Beispiel wird der die Anwendung ausführende Prozessor beim Treffen in der emulierten Anwendung auf einen Verweis auf eine durch das System bereitgestellte Routine (hierin auch Standard- bzw. häufig verwendete Routine bezeichnet) nicht an eine emulierten Code aufweisende Routine, sondern an eine in nativem Code geschriebene Routine verwiesen. Durch das Ersetzen von durch das System bereitgestellten Routinen in emuliertem Code mit funktional entsprechenden Routinen in nativem Code ist die Ausführungszeit des kombinierten nativen und emulierten Codes kürzer als die für nur emulierten Code.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung zum Insichaufnehmen und Verwenden eines oder mehrerer Aspekte der vorliegenden Erfindung wird Bezug nehmend auf 1 beschrieben. In diesem Beispiel beruht eine Datenverarbeitungsumgebung 100 auf einer Systemarchitektur, die native Architektur genannt werden kann, die aber eine andere Systemarchitektur emuliert, die Gast- bzw. nicht-native Architektur genannt werden kann. Die native Architektur unterscheidet sich von der Gastarchitektur. Die native Architektur kann zum Beispiel einen anderen Satz von Anweisungen als die Gastarchitektur aufweisen, oder eine oder mehrere ihrer Hardware-Komponenten können unterschiedlich sein. In einem weiteren Beispiel kann die native Architektur einen oder mehrere Prozessoren aufweisen, die ein oder mehrere Betriebssysteme ausführen, die sich von durch Prozessoren der Gastarchitektur ausgeführten Betriebssystemen unterscheiden.
  • Als Beispiele handelt es sich bei der nativen Architektur um die von International Business Machines Corporation, Armonk, New York, angebotene Power4- oder PowerPC®-Architektur oder um eine von Intel Corporation angebotene Intel®-Architektur; und bei der Gastarchitektur handelt es sich um die ebenfalls von International Business Machines Corporation, Armonk, New York, angebotene z/Architecture®. Aspekte der z/Architecture® sind in „z/Architecture Principles of Operation”, IBM Veröffentlichungsnummer SA22-7832-08, August 2010, beschrieben, die hiermit durch Bezugnahme in vollem Umfang in das vorliegende Dokument aufgenommen wird.
  • Die Datenverarbeitungsumgebung 100 weist zum Beispiel einen nativen Prozessor 102 (z. B. eine zentrale Verarbeitungseinheit (CPU)), einen Arbeitsspeicher 104 (z. B. einen Hauptspeicher) und eine oder mehrere Eingabe/Ausgabe-(E/A-)Einheiten bzw. Schnittstellen 106, die zum Beispiel über einen oder mehrere Busse 108 miteinander verbunden sind, auf. Beispielsweise ist der Prozessor 102 Teil eines von International Business Machines Corporation (IBM®), Armonk, New York, angebotenen pSeries®-Servers. IBM®, pSeries® Power PC® und z/Architecture® sind eingetragene Marken von International Business Machines Corporation, Armonk, New York, USA. Intel® ist eine eingetragene Marke von Intel Corporation. Andere hierin verwendete Namen können eingetragene Marken, Marken oder Produktnamen von International Business Machines Corporation oder anderen Unternehmen sein.
  • Die native zentrale Verarbeitungseinheit 102 enthält ein oder mehrere native Register 110 wie ein oder mehrere Universalregister und/oder ein oder mehrere Spezialregister, die während der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register enthalten Informationen, die den Zustand der Umgebung zu jedem beliebigen bestimmten Zeitpunkt darstellen.
  • Außerdem führt die native zentrale Verarbeitungseinheit 102 in dem Arbeitsspeicher 104 gespeicherte Anweisungen und Code aus. In einem bestimmten Beispiel führt die zentrale Verarbeitungseinheit den in dem Arbeitsspeicher 104 gespeicherten Emulatorcode 112 aus. Dieser Code ermöglicht es der in einer Architektur konfigurierten Datenverarbeitungsumgebung, eine andere Architektur zu emulieren. Der Emulatorcode 112 ermöglicht es zum Beispiel Maschinen, die auf anderen Architekturen als der z/Architecture® beruhen, zum Beispiel pSeries®-Servern, die z/Architecture® zu emulieren und Code (z. B. Software und Anweisungen) auszuführen, der auf Grundlage der z/Architecture® entwickelt wurde.
  • Weitere Einzelheiten bezüglich des Emulatorcodes 112 (auch bekannt als Emulator) sind unter Bezugnahme auf 2 beschrieben. In einem Beispiel enthält der Emulatorcode 112 eine Abrufroutine 200 zum Abrufen des Gastcodes (d. h. nicht-nativen Codes) 202 (z. B. eine oder mehrere Gastanweisungen, Routinen oder Code) aus dem Arbeitsspeicher 104 und zum wahlweisen Bereitstellen einer lokalen Pufferung für den abgerufenen Code. Gastcode wurde zum Ausführen in einer anderen Architektur als der der nativen CPU 102 entwickelt. Der Gastcode 202 kann zum Beispiel so entwickelt worden sein, dass er auf einem z/Architecture®-Prozessor ausgeführt werden kann, aber stattdessen auf einer nativen CPU 102 emuliert wird, bei der es sich zum Beispiel um einen pSeries®-Server handeln kann.
  • Der Emulator 112 weist auch eine Übersetzungsroutine 204 zum Feststellen der Art des abgerufenen Gastcodes und zum Übersetzen des Gastcodes in entsprechenden nativen Code 208 (z. B. eine oder mehrere native Anweisungen, Routinen oder anderen Code) auf. Diese Übersetzung beinhaltet zum Beispiel das Erkennen der durch den Gastcode durchzuführenden Funktion und das Auswählen des nativen Codes zum Durchführen dieser Funktion. Der als Reaktion auf die Übersetzung bereitgestellte native Code wird hierin als übersetzter Code oder emulierter Code bezeichnet.
  • Des Weiteren enthält der Emulator 112 eine Emulationssteuerroutine 206 zum Veranlassen, dass der übersetzte Code ausgeführt wird. Die Emulationssteuerroutine 206 kann die native CPU 102 dazu veranlassen, eine Routine nativen Codes auszuführen, die vorher abgerufenen Gastcode emuliert, und zum Abschluss der Ausführung die Steuerung an die Abrufroutine zurückzugeben, um das Abrufen des nächsten Gastcodes zu emulieren. Das Ausführen des nativen Codes 208 kann das Laden von Daten aus dem Arbeitsspeicher 104 in ein Register, das Speichern von Daten aus einem Register zurück in den Arbeitsspeicher oder das Durchführen eines gewissen Typs arithmetischer oder logischer Operation, wie durch die Übersetzungseinheit bestimmt, aufweisen.
  • Jede Routine ist zum Beispiel in Software umgesetzt, die in Arbeitsspeicher gespeichert und durch die native zentrale Verarbeitungseinheit 102 ausgeführt wird.
  • In anderen Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer beliebigen Kombination daraus umgesetzt. Die Register des emulierten Gastprozessors können unter Verwendung der Register 110 der nativen CPU oder durch Verwendung von Plätzen in dem Arbeitsspeicher 104 emuliert werden. In einer oder mehreren Ausführungsformen können sich der Gastcode 202, der native Code 208 und der Emulatorcode 112 in demselben Arbeitsspeicher befinden oder auf verschiedene Speichereinheiten verteilt sein. So, wie der Begriff Firmware vorliegend verwendet wird, beinhaltet Firmware z. B. den Mikrocode, Millicode und/oder Makrocode des Prozessors (oder der die Verarbeitung durchführenden Einheit). Sie beinhaltet zum Beispiel die Anweisungen auf Hardware-Ebene und/oder Datenstrukturen, die in der Umsetzung von höherem Maschinencode verwendet werden. In einer Ausführungsform beinhaltet sie zum Beispiel proprietären Code, der üblicherweise als Mikrocode geliefert wird, der vertrauenswürdige Software oder für die zugrunde liegende Hardware spezifischen Mikrocode enthält und den Zugriff des Betriebssystems auf die System-Hardware steuert.
  • Mit 2 fortfahrend wird in einer Ausführungsform einem Just-in-time-Compiler 210 wahlweise ferner eine Anhäufung von Code bereitgestellt, der durch die Abruf- und Steuerroutinen verarbeitetet wurde. Bei dem Just-in-time-Compiler handelt es sich um einen dynamischen Compiler, der den angehäuften Code untersucht, nach Möglichkeiten zum Entfernen von Redundanzen sucht und auf der nativen Plattform, auf welcher der Emulator läuft, eine übereinstimmende Codesequenz erzeugt. Während der Emulator zum Beispiel eine Anweisung einzeln sehen kann, kann der Just-in-time-Compiler eine Folge von Anweisungen sehen. Da er eine Folge von Anweisungen sehen kann, kann er versuchen, in der Folge von Anweisungen nach Redundanzen zu suchen und diese zu entfernen. Ein Beispiel eines Just-in-time-Compiler ist der von International Business Machines Corporation, Armonk, New York, angebotene JAVATM-Just-in-Time-(JIT-)Compiler. JAVA ist eine Marke von Sun Microsystems, Inc., Santa Clara, Kalifornien.
  • Ein Beispiel einer emulierten Anwendung (auch bekannt als Anwendungsprogramm) ist in 3 abgebildet. Eine Anwendung kann zum Beispiel ein oder mehrere Programme, ein oder mehrere Codesegmente, eine oder mehrere Codezeilen oder eine Kombination daraus enthalten. Die Verwendung des Begriffs Anwendung soll auf keine Weise einschränkend sein. In diesem Beispiel wird eine Anwendung 300 durch die native Hardware 310 emuliert (z. B. durch Einsatz des Emulatorcodes 112) und weist zum Beispiel ein oder mehrere Codesegmente 302 auf. Beispielsweise weist ein Codesegment ein oder mehrere auszuführende Codezeilen auf, und eine Codezeile weist zum Beispiel eine Anweisung, eine Funktion, einen Programmaufruf (call) oder einen anderen Aufruf (invocation) einer Routine oder jeden beliebigen anderen auszuführenden Code auf. Wie auch bei dem Begriff Anwendung sind die Begriffe Codesegment und Codezeilen auf keine Weise einschränkend zu verstehen. In einem Beispiel rufen ein oder mehrere Codesegmente durch das System bereitgestellte (z. B. Standard- bzw. herkömmliche Routinen) auf, wie zum Beispiel eine Sortier-Subroutine oder eine Druck-Subroutine.
  • Während des Ausführens der Anwendung werden beim Treffen auf einen Verweis auf eine Routine ein Zeiger oder andere Informationen zum Auffinden der Routine (d. h. Code zum Umsetzen der Routine) verwendet, die dann ausgeführt wird. Nach dem Ausführen der aufgerufenen Routine wird das Verarbeiten in der Hauptanwendung 300 fortgeführt. Beim Treffen auf einen Verweis auf eine Sortier-Subroutine 304a werden zum Beispiel Informationen wie ein Zeiger zum Auffinden und Ausführen der Sortier-Subroutine 306a verwendet, die sich außerhalb der Hauptanwendung befindet. Danach kehrt die Verarbeitung zu der Zeile zum Aufrufen der Sortier-Subroutine in der Hauptanwendung zurück, und das Ausführen der Hauptanwendung wird fortgesetzt. Während dieses Ausführens trifft man gegebenenfalls auf eine oder mehrere andere Routinen, wie zum Beispiel auf einen Verweis auf die Druck-Subroutine 304b. Wie auch bei der Sortier-Subroutine verweisen beim Erreichen eines Verweises auf die Druck-Subroutine Informationen auf den Druck-Subroutinen-Code 306b, der ausgeführt wird. Die Verarbeitung kehrt dann zu dem Aufruf der Druck-Subroutine zurück. In diesem Beispiel wird ähnlich wie in der Hauptanwendung jede der Subroutinen (z. B. Sortieren, Drucken) emuliert. Das bedeutet, dass der Code zum Umsetzen jeder der Subroutinen entweder zum Zeitpunkt des Aufrufs oder vorher erzeugt und für eine spätere Ausführung gespeichert wird, indem der Gastcode für die Subroutine abgerufen und auf eine bekannte Weise in funktional entsprechenden nativen Code übersetzt wird.
  • Der die emulierte Anwendung ausführende native Prozessor hat in einer Ausführungsform keine Kenntnis über oder Zugang zu dem Quellcode der Anwendung, keine Möglichkeit zum erneuten Verbinden zu oder zum erneuten Kompilieren der Anwendung und allgemein keine Einsicht in das emulierte System.
  • Zum Erleichtern der Verarbeitung in einer emulierten Umgebung wird gemäß einem Aspekt der vorliegenden Erfindung an Stelle des Emulierens der Routinen zum Bereitstellen von übersetztem nativen Code nicht übersetzter nativer Code verwendet, wie in 4 abgebildet ist. In dem in 4 abgebildeten Beispiel wird dieselbe Anwendung, Anwendung 300, durch die native Hardware 310 emuliert. In diesem Fall wird beim Treffen auf einen Verweis auf eine durch das System bereitgestellte Routine jedoch an Stelle des Ausführens einer emulierten Subroutine eine native Routine ausgeführt. Beim Treffen auf einen Verweis auf die Sortier-Subroutine 304a in der Anwendung 300 wird beispielsweise an Stelle des Ausführens des emulierten Sortierroutinecodes 306a der native Sortierroutinecode 400a ausgeführt. Auf ähnliche Weise wird beim Treffen auf einen Verweis auf die Druck-Subroutine 304b an Stelle des Ausführens des emulierten Druck-Subroutinecodes 306b ein nativer Druck-Subroutinecode 400b ausgeführt.
  • Das heißt, in einer Ausführungsform übersetzt der Emulatorcode die für die Gastarchitektur bereitgestellte Routine nicht, um eine übersetzte native Routine bereitzustellen, sondern findet stattdessen eine native, für die native Architektur bereitgestellte Routine auf und verwendet diese Routine. Hierdurch wird mit dem Übersetzen der Routine einhergehender Übersetzungsaufwand eingespart. In noch einer weiteren Ausführungsform wird weiterhin die native Routine (d. h. die nicht übersetzte Routine) verwendet, selbst wenn die übersetzte Routine bereitgestellt wird. Zum Verwenden der nativen Routine werden ein Zeiger oder andere mit dem Aufrufen der Routine einhergehende Informationen so aktualisiert, dass sie auf die native Subroutine verweisen. Nach dem Ausführen der nativen Routine wird das Ausführen in der Hauptanwendung fortgeführt.
  • Eine Ausführungsform der mit dem Verwenden von nativen Routinen an Stelle von emulierten Routinen einhergehenden Logik in einer emulierten Anwendung ist unter Bezugnahme auf 5 beschrieben. In einem Beispiel wird diese Logik durch den Emulatorcode 112 ausgeführt. Sie kann während des Ausführens der Anwendung oder nach dem Laden der Anwendung zum Ausführen, jedoch vor dem Ausführen der Anwendung durchgeführt werden. In dem nachfolgenden Beispiel wird sie während des Ausführens der Anwendung durchgeführt.
  • Unter Bezugnahme auf 5 wird anfangs eine Computeranwendung zur Ausführung geladen, SCHRITT 500. In diesem Beispiel ist die Anwendung für eine Gastarchitektur geschrieben und soll von einem Prozessor mit einer nativen Architektur emuliert werden.
  • Während des Ausführens wird die Anwendung (z. B. das Lade- oder Objektmodul) nach Routinen durchsucht, die native Code-Entsprechungen aufweisen, SCHRITT 502. Die Anwendung wird zum Beispiel durchsucht, indem nach Mustern gesucht wird, die durch das System bereitgestellte (z. B. Standard- bzw. herkömmliche) Routinen (z. B. Subroutinen, Funktionen, Module, Dienste, Anweisungen, Code usw.) kennzeichnen. Das heißt, der Durchsuchungsprozess (bei dem es sich zum Beispiel um einen Teil der Übersetzungsroutine des Emulators oder in einer anderen Ausführungsform um einen hiervon gesonderten Vorgang handeln kann) durchsucht die Anwendung und sucht nach einem Wort, einem Symbol, einer Abkürzung oder einem anderen mit einer Routine verknüpften Muster, das bzw. die er erkennt und von dem bzw. der er weiß, dass sie eine funktional entsprechende native Routine aufweisen können. Der Durchsuchungsprozess wendet eine oder mehrere Techniken zum Erkennen von durch das System bereitgestellten Routinen an. Zu diesen Techniken gehören zum Beispiel:
    • – das Suchen nach bestimmten Subroutinen-Namen, die durch den Verbindungs-Editor bzw. Binder in dem Lademodul platziert werden. Dem Durchsuchungsprozess wird zum Beispiel eine Liste mit einem oder mehreren Namen bereitgestellt, nach dem bzw. denen in der Anwendung gesucht werden soll. Zu Beispielen gehören sortieren, drucken, kopieren, Quadratwurzel usw., sie sind aber nicht darauf beschränkt. Es gibt viele Möglichkeiten;
    • – das Durchsuchen von Subroutinen-Signaturen, bei denen es sich um Signalmarkierungen (eye-catchers) oder Binärfolgen handelt, welche die Subroutine selbst eindeutig kennzeichnen (in diesem Fall soll die Suchsoftware der Verknüpfung mit der Subroutine folgen, um sie zu erkennen). Wiederum wird dem Durchsuchungsprozess eine Liste von Signalmarkierungen oder Binärfolgen bereitgestellt, nach denen gesucht werden soll; oder
    • – das Durchsuchen von durch den Compiler oder Assembler codierten Aufrufsignaturen, welche die aufgerufene Subroutine oder Funktion eindeutig kennzeichnen. Die Aufruffolge für GETMAIN weist zum Beispiel eine eindeutige SVC-Anweisung auf, welche die GETMAIN-Funktion als Ziel der Aufruffolge kennzeichnet, und in dem SVC wird eine Suche durchgeführt. Viele weitere Beispiele sind möglich.
  • Angenommen es wird ein Verweis auf eine durch das System bereitgestellte Routine erkannt, dann wird bestimmt, ob für die erkannte durch das System bereitgestellte Routine eine native Code-Entsprechung verfügbar ist, ANFRAGE 504. Dies wird zum Beispiel durch Durchsuchen von Bibliotheken, Repositorien (repositories), Arbeitsspeicher, Speicher usw. nach einer nativen Routine ermittelt, die ein Muster aufweist, das dem durch den Durchsuchungsprozess erkannten Muster entspricht oder diesem ähnelt. Beim Treffen auf einen Verweis auf eine Subroutine in der Anwendung, die ein Muster aufweist, das einen Aufruf einer Sortier-Subroutine kennzeichnet, wird beispielsweise eine Suche nach einer nativen Sortierroutine durchgeführt, die verwendet werden kann. Wenn eine Entsprechung eines nativen Codes verfügbar ist, wird ein Zeiger verwendet, um anzuzeigen, dass es sich bei der auszuführenden Subroutine um die native Code-Entsprechung an Stelle des emulierten Codes handelt. In einem Beispiel wird der emulierte Code noch nicht einmal erzeugt. Die native Code-Subroutine wird dann ausgeführt, und die Verarbeitung kehrt zu dem Aufruf der Subroutine zurück, SCHRITT 508. Danach fährt die Verarbeitung mit SCHRITT 502 fort, sofern die Anwendung nicht ihr Ende erreicht hat, ANFRAGE 510. Andernfalls ist die Ausführung abgeschlossen, SCHRITT 512.
  • Zurück zu ANFRAGE 504, wenn keine native Code-Entsprechung verfügbar ist, wird der emulierte Code für die Routine ausgeführt, SCHRITT 508, und die Verarbeitung fährt mit der ANFRAGE 510 fort. In einem Beispiel wird der emulierte Code als Reaktion darauf erzeugt, dass es keine native Code-Entsprechung gibt. In einem weiteren Beispiel wird er vorher erzeugt und für eine spätere Verwendung gespeichert.
  • Oben wird eine Funktion zum Verwenden von nativen Code-Routinen an Stelle von emulierten Routinen in ansonsten emulierten Anwendungen ausführlich beschrieben. In einer weiteren Ausführungsform wird die Anwendung so geändert, dass sie auf den nativen Code verweist, wenn eine native Routine gefunden wird, damit die Anwendung bei ihrer nächsten Ausführung das Durchsuchen und Suchen nach funktional entsprechendem Code nicht durchführen muss. In einem Beispiel wird ein Flag gesetzt, um anzuzeigen, dass das Durchsuchen und Suchen nicht benötigt wird.
  • In einem oder mehreren Aspekten wird eine Funktion bereitgestellt, die jeden beliebigen Teil emulierten Codes akzeptiert, diesen durchsucht und versucht, durch das System bereitgestellte Routinen zu erkennen, für die bereits ein nativer Code verfügbar ist, und diesen nativen Code ausführt.
  • Der Fachmann wird verstehen, dass ein oder mehrere Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können ein oder mehrere Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikrocode usw.) oder einer einen oder mehrere Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines in einem oder mehreren durch einen Computer lesbaren Medien verkörperten Computerprogrammprodukts annehmen, die durch einen Computer lesbaren Programmcode aufweisen.
  • Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Medien verwendet werden. Bei dem durch einen Computer lesbaren Medium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Ein durch einen Computer lesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem durch einen Computer lesbaren Programmcode aufweisen, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form aus einer Vielfalt an Formen annehmen, einschließlich, ohne darauf beschränkt zu sein, eine elektromagnetische oder optische Form oder jede geeignete Kombination daraus. Bei einem durch einen Computer lesbaren Signalmedium kann es sich um ein beliebiges durch einen Computer lesbares Medium handeln, das kein durch einen Computer lesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten oder transportieren kann.
  • Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination daraus handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Speichermedium um jedes beliebige physische Medium handeln, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
  • Hier nun Bezug nehmend auf 6 weist ein Computerprogrammprodukt 600 in einem Beispiel zum Bereitstellen und Ermöglichen eines oder mehrerer Aspekte der vorliegenden Erfindung beispielsweise ein oder mehrere nichtflüchtige (non-transitory) durch einen Computer lesbare Speichermedien 602 zum Darauf-Speichern des durch einen Computer lesbaren Programmcodemittels oder der Logik 604 auf..
  • Auf einem durch einen Computer lesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übertragen werden, einschließlich, ohne darauf beschränkt zu sein, drahtlos, drahtgebunden, mittels Lichtwellenleiterkabel, HF usw. oder jede geeignete Kombination daraus.
  • Computerprogrammcode für das Ausführen von Arbeitsschritten für einen oder mehrere Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die „C”-Programmiersprache, Assembler oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der ferne Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Ein oder mehrere Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können dem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
  • Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die/den in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebene(n) Funktion/Schritt umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. der anderen Einheiten zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen eines oder mehrerer Aspekte der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweisen. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach der beteiligten Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.
  • Zusätzlich zu den oben genannten können ein oder mehrere Aspekte der vorliegenden Erfindung durch einen Dienstanbieter bereitgestellt, angeboten, eingesetzt, verwaltet, gepflegt usw. werden, der die Verwaltung von Kundenumgebungen anbietet. Der Dienstanbieter kann zum Beispiel Computercode und/oder eine Computerinfrastruktur erzeugen, pflegen, unterstützen usw., die einen oder mehrere Aspekte der vorliegenden Erfindung für einen oder mehrere Kunden durchführen. Im Gegenzug kann der Dienstanbieter eine Zahlung von dem Kunden zum Beispiel als Teil eines Abonnements und/oder einer Gebührenvereinbarung erhalten. Zusätzlich oder alternativ dazu kann der Dienstanbieter eine Zahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • In einem Aspekt der vorliegenden Erfindung kann eine Anwendung eingesetzt werden, um einen oder mehrere Aspekte der vorliegenden Erfindung durchzuführen. Beispielsweise weist der Einsatz einer Anwendung das Bereitstellen einer Computerinfrastruktur auf, die in der Lage ist, einen oder mehrere Aspekte der vorliegenden Erfindung durchzuführen.
  • Als ein weiterer Aspekt der vorliegenden Erfindung kann eine Datenverarbeitungsinfrastruktur eingesetzt werden, die das Insichaufnehmen von durch einen Computer lesbaren Code in ein Datenverarbeitungssystem aufweist, in dem der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, einen oder mehrere Aspekte der Erfindung durchzuführen.
  • Als noch ein weiterer Aspekt der vorliegenden Erfindung kann ein Prozess zum Insichaufnehmen einer Datenverarbeitungsinfrastruktur bereitgestellt werden, der das Insichaufnehmen von durch einen Computer lesbaren Code in ein Computersystem aufweist. Das Computersystem weist ein durch einen Computer lesbares Medium auf, wobei das Computermedium einen oder mehrere Aspekte der vorliegenden Erfindung aufweist. Der Code ist in Kombination mit dem Computersystem in der Lage, einen oder mehrere Aspekte der vorliegenden Erfindung durchzuführen.
  • Obwohl oben verschiedene Ausführungsformen beschrieben werden, handelt es sich dabei lediglich um Beispiele. Die Datenverarbeitungsumgebung kann zum Beispiel auf anderen Architekturen als Power4, PowerPC® oder Intel® beruhen und andere Architekturen als die z/Architecture® emulieren. Außerdem können andere Server als pSeries®-Server einen oder mehrere Aspekte der vorliegenden Erfindung in sich aufnehmen und verwenden. Außerdem können andere Techniken zum Erkennen der Routinen, die native Code-Entsprechungen aufweisen können, verwendet werden. Außerdem können verschiedene Emulatoren verwendet werden. Emulatoren sind im Handel erhältlich und werden von verschiedenen Unternehmen angeboten. Es können viele andere Arten von Datenverarbeitungsumgebungen einen oder mehrere Aspekte der vorliegenden Erfindung in sich aufnehmen und/oder verwenden.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen aus einem oder mehreren Aspekten der vorliegenden Erfindung Nutzen ziehen. Als Beispiel kann eine Umgebung einen Emulator (z. B. Software oder andere Emulationsmechanismen) aufweisen, in dem eine bestimmte Architektur (darunter zum Beispiel Anweisungsausführung, zweckgestaltete (architected) Funktionen wie Adressübersetzung und zweckgestaltete (architected) Register) oder eine Teilmenge daraus emuliert werden (z. B. auf einem nativen Computersystem, das einen Prozessor und Arbeitsspeicher aufweist). In einer solchen Umgebung können durch eine oder mehrere Emulationsfunktionen des Emulators ein oder mehrere Aspekte der vorliegenden Erfindung verwirklicht werden, selbst wenn ein den Emulator ausführender Computer gegebenenfalls eine andere Architektur als die der emulierten Funktionen aufweist. Als ein Beispiel wird in der Emulationsbetriebsart die konkrete Anweisung bzw. emulierte Operation decodiert, und es wird eine geeignete Emulationsfunktion erzeugt, um die einzelne Anweisung bzw. Operation umzusetzen.
  • In einer Emulationsumgebung weist ein Host-Computer zum Beispiel einen Arbeitsspeicher zum Speichern von Anweisungen und Daten, eine Anweisungsabrufeinheit zum Abrufen von Anweisungen aus dem Arbeitsspeicher und zum wahlweisen Bereitstellen eines lokalen Pufferspeichers für die abgerufene Anweisung, eine Anweisungs-Decodier-Einheit zum Empfangen der abgerufenen Anweisungen und zum Feststellen der Art der abgerufenen Anweisungen sowie eine Anweisungsausführungseinheit zum Ausführen der Anweisungen auf. Das Ausführen kann Folgendes enthalten: Laden von Daten aus dem Arbeitsspeicher in ein Register, Speichern von Daten aus einem Register zurück in den Arbeitsspeicher, oder das Durchführen eines gewissen Typs arithmetischer oder logischer Operation, wie durch die Decodier-Einheit bestimmt. In einem Beispiel ist jede Einheit in Software umgesetzt. Die durch die Einheiten durchgeführten Operationen werden zum Beispiel als eine oder mehrere Subroutinen innerhalb der Emulator-Software umgesetzt.
  • Als weiteres Beispiel ist ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendbar, das zumindest einen Prozessor aufweist, der über einen Systembus direkt oder indirekt mit Speicherelementen verbunden ist. Zu den Speicherelementen können zum Beispiel ein lokaler Arbeitsspeicher, der während des eigentlichen Ausführens des Programmcodes eingesetzt wird, Massenspeicher sowie Cachespeicher gehören, die ein vorübergehendes Speichern von zumindest etwas Programmcode bereitstellen, um die Häufigkeit zu verringern, mit der Code während des Ausführens von dem Massenspeicher abgerufen werden muss.
  • Eingabe/Ausgabe- bzw. E/A-Einheiten (einschließlich, ohne darauf beschränkt zu sein, Tastaturen, Anzeigen, Zeigegeräte, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw.) können entweder direkt oder über mitbeteiligte E/A-Controller mit dem System verbunden werden. Es können auch Netzwerkadapter mit dem System verbunden werden, um es dem Datenverarbeitungssystem zu ermöglichen, über mitbeteiligte private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichervorrichtungen verbunden zu werden. Modems, Kabelmodems sowie Ethernet-Karten sind nur einige wenige der verfügbaren Arten von Netzwerkadaptern.
  • Die hierin verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die Verwendung der Singularform „ein”, „eine” bzw. „der”, „die”, „das” hierin soll ebenfalls die Pluralformen einschließen, es sei denn, etwas Anderes ergibt sich deutlich aus dem Zusammenhang. Es wird ferner darauf hingewiesen, dass die Begriffe „aufweisen” und/oder „aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von aufgeführten Eigenschaften, ganzen Zahlen, Schritten, Arbeitsschritten, Elementen und/oder Komponenten angeben, jedoch nicht das Vorhandensein oder das Hinzufügen einer oder mehrerer anderer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen ausschließt.
  • Die in den nachfolgenden Ansprüchen etwa vorhandenen, entsprechenden Strukturen, Materialien, Schritte und Entsprechungen aller Mittel oder Step-plus-function-Elemente verstehen sich dahingehend, dass sie jede beliebige Struktur, jedes beliebige Material bzw. jeden beliebigen Schritt zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen nach Maßgabe der konkreten Beanspruchung aufweisen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt, versteht sich jedoch nicht als abschließend oder als auf die Erfindung in der beschriebenen Form beschränkt. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Abänderungen, die für eine bestimmte in Betracht gezogene Verwendung geeignet sind, zu verstehen.

Claims (11)

  1. Computerprogrammprodukt zur Erleichterung des Verarbeitens innerhalb einer emulierten Datenverarbeitungsumgebung, das Computerprogrammprodukt aufweisend: ein durch einen Verarbeitungsschaltkreis Computer-lesbares Speichermedium, auf dem Anweisungen zur Ausführung durch den Verarbeitungsschaltkreis zur Durchführung eines Verfahrens gespeichert sind, aufweisend: das Erkennen durch einen auf einer Systemarchitektur beruhenden Prozessor einer oder mehrerer durch das System bereitgestellter Routinen, auf die innerhalb einer Anwendung verwiesen wird, die für eine andere Systemarchitektur als die eine Systemarchitektur geschrieben wurde, wobei die Anwendung durch den Prozessor zu emulieren ist, und wobei das Erkennen einen oder mehrere festgelegte Routinenamen oder eine oder mehrere festgelegte Routinesignaturen erkennt; und als Reaktion auf das Erkennen einer durch das System bereitgestellten Routine das Bereitstellen von nativem Code für die durch das System bereitgestellte Routine an Stelle von emuliertem Code für die durch das System bereitgestellte Routine.
  2. Computerprogrammprodukt nach Anspruch 1, wobei das Erkennen das Durchsuchen der Anwendung während des Ausführens der Anwendung durch den Prozessor nach der einen bzw. den mehreren durch das System bereitgestellten Routinen aufweist, wobei das Durchsuchen nach mindestens einem der einen oder der mehreren festgelegten Routinenamen bzw. der einen oder der mehreren festgelegten Routinesignaturen sucht.
  3. Computerprogrammprodukt nach Anspruch 2, wobei die eine oder die mehrere festgelegten Routinesignaturen mindestens entweder eine oder mehrere durch Verknüpfung erstellte Signaturen oder eine oder mehrere durch einen Compiler oder Assembler codierte Aufrufsignaturen aufweisen.
  4. Computerprogrammprodukt nach Anspruch 3, wobei eine Aufrufsignatur der einen oder mehreren Aufrufsignaturen einen Steuerprogrammaufruf aufweist.
  5. Computerprogrammprodukt nach Anspruch 1, wobei das Erkennen das Durchsuchen der Anwendung nach ihrem Laden zur Ausführung aber vor ihrer Ausführung nach der einen bzw. den mehreren durch das System bereitgestellten Routinen aufweist.
  6. Computerprogrammprodukt nach Anspruch 1, wobei das Bereitstellen das Verweisen des Prozessors auf den nativen Code aufweist.
  7. Computerprogrammprodukt nach Anspruch 1, wobei das Bereitstellen das Setzen eines der Anwendung zugehörigen Zeigers auf den nativen Code aufweist.
  8. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren ferner als Reaktion auf das Erkennen der durch das System bereitgestellten Routine das Feststellen, dass nativer Code für die durch das System bereitgestellte Routine verfügbar ist, und das Bereitstellen des nativen Codes für die durch das System bereitgestellte Routine aufweist.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die durch das System bereitgestellte Routine entweder eine Sortierroutine, eine Druckroutine, eine Kopierroutine, eine mathematische Funktion oder einen GETMAIN-Dienst aufweist.
  10. Computersystem zur Erleichterung des Verarbeitens innerhalb einer emulierten Datenverarbeitungsumgebung, das Computersystem aufweisend: einen Arbeitsspeicher; und einen Prozessor, der mit dem Arbeitsspeicher Daten austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, das Verfahren aufweisend: das Erkennen durch einen auf einer Systemarchitektur beruhenden Prozessor einer oder mehrerer durch das System bereitgestellter Routinen, auf die innerhalb einer Anwendung verwiesen wird, die für eine andere, sich von der einen Systemarchitektur unterscheidende Systemarchitektur geschrieben wurde, wobei die Anwendung durch den Prozessor zu emulieren ist, und wobei das Erkennen einen oder mehrere festgelegte Routinenamen oder eine oder mehrere festgelegte Routinesignaturen erkennt; und als Reaktion auf das Erkennen einer durch das System bereitgestellten Routine das Bereitstellen von nativem Code für die durch das System bereitgestellte Routine an Stelle von emuliertem Code für die durch das System bereitgestellte Routine.
  11. Verfahren zur Erleichterung des Verarbeitens innerhalb einer emulierten Datenverarbeitungsumgebung, das Verfahren aufweisend: das Erkennen durch einen auf einer Systemarchitektur beruhenden Prozessor einer oder mehrerer durch das System bereitgestellter Routinen, auf die innerhalb einer Anwendung verwiesen wird, die für eine andere, sich von der einen Systemarchitektur unterscheidende Systemarchitektur geschrieben wurde, wobei die Anwendung durch den Prozessor zu emulieren ist, und wobei das Erkennen einen oder mehrere festgelegte Routinenamen oder eine oder mehrere festgelegte Routinesignaturen erkennt; und als Reaktion auf das Erkennen einer durch das System bereitgestellten Routine das Bereitstellen von nativem Code für die durch das System bereitgestellte Routine an Stelle von emuliertem Code für die durch das System bereitgestellte Routine.
DE102012217315A 2011-10-13 2012-09-25 Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung Ceased DE102012217315A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/272,615 2011-10-13
US13/272,615 US9063760B2 (en) 2011-10-13 2011-10-13 Employing native routines instead of emulated routines in an application being emulated

Publications (1)

Publication Number Publication Date
DE102012217315A1 true DE102012217315A1 (de) 2013-04-18

Family

ID=47294502

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012217315A Ceased DE102012217315A1 (de) 2011-10-13 2012-09-25 Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung

Country Status (3)

Country Link
US (2) US9063760B2 (de)
DE (1) DE102012217315A1 (de)
GB (1) GB2496028B (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063760B2 (en) 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
US9081896B1 (en) * 2012-03-21 2015-07-14 Amazon Technologies, Inc. Generating a replacement binary for emulation of an application
CN103443763B (zh) * 2012-08-08 2016-10-05 英特尔公司 包含对重写虚拟函数的调用的支持的isa桥接
US9335982B1 (en) 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
US10303498B2 (en) * 2015-10-01 2019-05-28 Microsoft Technology Licensing, Llc Performance optimizations for emulators
RU2634171C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения кода интерпретатором
US11042422B1 (en) 2020-08-31 2021-06-22 Microsoft Technology Licensing, Llc Hybrid binaries supporting code stream folding
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5796989A (en) * 1995-03-20 1998-08-18 Apple Computer, Inc. Method and system for increasing cache efficiency during emulation through operation code organization
US5781758A (en) * 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
WO1998041918A1 (en) * 1997-03-14 1998-09-24 Ian Charles Ogilvy Method and apparatus for controlling communications
US5964889A (en) * 1997-04-16 1999-10-12 Symantec Corporation Method to analyze a program for presence of computer viruses by examining the opcode for faults before emulating instruction in emulator
US5953520A (en) * 1997-09-22 1999-09-14 International Business Machines Corporation Address translation buffer for data processing system emulation mode
US5995743A (en) * 1997-09-22 1999-11-30 International Business Machines Corporation Method and system for interrupt handling during emulation in a data processing system
US5956495A (en) * 1997-09-22 1999-09-21 International Business Machines Corporation Method and system for processing branch instructions during emulation in a data processing system
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6442752B1 (en) 1999-08-26 2002-08-27 Unisys Corporation Method, apparatus, and computer program product for replacing a dynamic link library (dll) of a first computing environment with a dll of a second computing environment that can be invoked from the first computing environment in a transparent manner
US6834391B2 (en) * 2000-11-28 2004-12-21 Sun Microsystems, Inc. Method and apparatus for automated native code isolation
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US20020156977A1 (en) * 2001-04-23 2002-10-24 Derrick John E. Virtual caching of regenerable data
US20030093649A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
US6915513B2 (en) 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US8200938B2 (en) * 2002-02-11 2012-06-12 Oracle America, Inc. Computer system and method providing a memory buffer for use with native and platform-independent software code
CA2376327C (en) 2002-03-12 2009-04-28 Ibm Canada Limited-Ibm Canada Limitee Executing native code in place of non-native code
US7124237B2 (en) 2002-10-03 2006-10-17 Seagate Technology Llc Virtual machine emulation in the memory space of a programmable processor
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法
GB2426840A (en) 2005-06-04 2006-12-06 Transitive Ltd Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion.
US7555592B1 (en) * 2005-08-23 2009-06-30 Parallels Software International, Inc. Kernel acceleration technology for virtual machine optimization
US7739100B1 (en) * 2005-10-18 2010-06-15 Mcafee, Inc. Emulation system, method and computer program product for malware detection by back-stepping in program code
JP5010164B2 (ja) * 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US7617493B2 (en) * 2007-01-23 2009-11-10 International Business Machines Corporation Defining memory indifferent trace handles
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全***isa仿真***及其识别进程的方法
US8510756B1 (en) * 2007-12-06 2013-08-13 Parallels IP Holdings GmbH Guest operating system code optimization for virtual machine
US9027003B2 (en) * 2008-03-31 2015-05-05 Vmware, Inc. Precise branch counting in virtualization systems
US8428930B2 (en) * 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US8949106B2 (en) * 2009-09-18 2015-02-03 International Business Machines Corporation Just in time compiler in spatially aware emulation of a guest computer instruction set
US8447583B2 (en) * 2009-09-18 2013-05-21 International Business Machines Corporation Self initialized host cell spatially aware emulation of a computer instruction set
US8301434B2 (en) * 2009-09-18 2012-10-30 International Buisness Machines Corporation Host cell spatially aware emulation of a guest wild branch
US8364461B2 (en) * 2009-11-09 2013-01-29 International Business Machines Corporation Reusing invalidated traces in a system emulator
US8285987B1 (en) * 2009-12-04 2012-10-09 The United States Of America As Represented By The Secretary Of The Air Force Emulation-based software protection
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
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
US9021465B2 (en) * 2010-12-15 2015-04-28 Red Hat Israel, Ltd. Downloading guest software updates by a hypervisor
US9063760B2 (en) 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated

Also Published As

Publication number Publication date
GB2496028B (en) 2015-08-12
GB2496028A (en) 2013-05-01
US9063760B2 (en) 2015-06-23
GB201218074D0 (en) 2012-11-21
US20130096907A1 (en) 2013-04-18
US20130096908A1 (en) 2013-04-18

Similar Documents

Publication Publication Date Title
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE112012003716B4 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
DE112018003584B4 (de) Vorhersagen eines inhaltsverzeichnis-zeigerwerts in reaktion auf ein verzweigen auf eine subroutine
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE112013001941T9 (de) Eingeschränkte Anweisungen in Transaktionsgebundener Ausführung
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE112017004843T5 (de) Technologien für deterministischen Codeflussintegritätsschutz
DE202012009380U1 (de) Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE112018001124T5 (de) Verarbeitung von compare string durch decodiergestützte inline-erweiterung von mikrooperationen
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112018003586T5 (de) Instruktion "inhaltsverzeichnis- (toc) register einrichten"
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE112013005466T5 (de) Anweisung "Vector generate mask"
DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112011103845T5 (de) Verwalten einer verschachtelten virtualisierten Umgebung
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE GBR, DE

R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, A, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP., N.Y., US

Effective date: 20130430

Owner name: INTERNATIONAL BUSINESS MACHINES CORP., US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP., N.Y., US

Effective date: 20130430

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE GBR, DE

Effective date: 20130430

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

Effective date: 20130430

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

Effective date: 20130430

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final