Fast translation and execution of a computer program on a non-native architecture by use of background translator
First Claim
1. A memory storing as binary image conversion system which converts instructions from a non-native instruction set to a native instruction set, said binary image conversion system comprising:
- a server;
a run-time system transparently initiated upon invocation of an application program, said application program comprising non-native instructions, the run-time system interpreting untranslated non-native instructions of a non-native binary image corresponding to the application program by providing and executing a native instruction or a native instruction routine comprised of a plurality of native instructions, the run-time system receiving from the server and executing previously translated portions of native code, said translated portions of native code corresponding to non-native code portions of the non-native binary image, said run-time system further comprising;
a collector for collecting profile data in response to interpretation of the non-native instructions to determine execution characteristics of the non-native instructions; and
a background system invoked by the server, responsive to the profile data generated by the run-time system, for forming translated portions of native code from and corresponding to portions of the non-native instructions of the application program, wherein said background system translates only portions of the non-native instructions of the application program which have actually been interpreted in response to invoking the application program.
4 Assignments
0 Petitions
Accused Products
Abstract
A computer system for executing a binary image conversion system which converts instructions from a instruction set of a first, non native computer system to a second, different native computer system, includes an run-time system which in response to a non-native image of an application program written for a non-native instruction set provides an native instruction or a native instruction routine. The run-time system collects profile data in response to execution of the native instructions to determine execution characteristics of the non-native instruction. Thereafter, the non-native instructions and the profile statistics are fed to a binary translator operating in a background mode and which is responsive to the profile data generated by the run-time system to form a translated native image. The run-time system and the binary translator are under the control of a server process. The non-native image is executed in two different environments with first portion executed as an interpreted image and remaining portions as a translated image. The run-time system includes an interpreter which is capable of handling condition codes corresponding to the non-native architecture. A technique is also provided to jacket calls between the two execution environments and to support object based services. Preferred techniques are also provided to determine interprocedural translation units. Further, intermixed translation/optimization techniques are discussed.
-
Citations
62 Claims
-
1. A memory storing as binary image conversion system which converts instructions from a non-native instruction set to a native instruction set, said binary image conversion system comprising:
-
a server; a run-time system transparently initiated upon invocation of an application program, said application program comprising non-native instructions, the run-time system interpreting untranslated non-native instructions of a non-native binary image corresponding to the application program by providing and executing a native instruction or a native instruction routine comprised of a plurality of native instructions, the run-time system receiving from the server and executing previously translated portions of native code, said translated portions of native code corresponding to non-native code portions of the non-native binary image, said run-time system further comprising; a collector for collecting profile data in response to interpretation of the non-native instructions to determine execution characteristics of the non-native instructions; and a background system invoked by the server, responsive to the profile data generated by the run-time system, for forming translated portions of native code from and corresponding to portions of the non-native instructions of the application program, wherein said background system translates only portions of the non-native instructions of the application program which have actually been interpreted in response to invoking the application program. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 28, 62)
-
-
9. A code conversion system stored in memory, said memory comprising:
-
a run-time system initiated transparently upon invocation of an application program, said application program comprising non-native instructions, said run-time system further comprising; means, in response to a non-native image corresponding to the application program, for providing and executing native code instructions corresponding to untranslated non-native instructions of the non-native image, and means for collecting profile statistics characterizing targets of executed control transfer instructions; a server means which provides, to the run-time system, translated native instructions corresponding to non-native instructions of the non-native image; and a binary translator system invoked by the server means, said binary translator system comprising; means, responsive to said profile statistics, for translating non-native instructions of an application program into native instructions included in a native image of the application program; and means for storing the translated native image of the application program on a persistent storage device, wherein said means for translating translates only portions of non-native instructions of a non-native image whose execution does not cause machine exceptions as determined by the profile statistics. - View Dependent Claims (10, 11, 12)
-
-
13. A computer system for executing a binary image conversion system which converts instructions from a non-native instruction set to a native instruction set, comprising:
-
a run-time system transparently initiated upon invocation of an application program, said application program comprising non-native instructions, the run-time system, in response to a non-native image having instructions of the application program, providing and executing a native instruction or a native instruction routine comprised of a plurality of native instructions, the run-time system receiving from a server and executing previously translated portions of native code corresponding to non-native code portions of the non-native binary image, said run-time system further comprising; a collector for collecting profile data in response to execution of the native instructions and the native instruction routines to determine execution characteristics of the non-native instruction; and a background system, invoked by said server, responsive to the profile data generated by the runtime system to form translated portions of a native image of the non-native instructions of the application program, wherein the background system translates only portions of non-native images comprising instructions which have been executed; and said server, further comprising; a determiner for determining whether there is any translated native image code for the application program, and a scheduler for scheduling transactions within and between the run-time and background systems. - View Dependent Claims (14, 15)
-
-
16. A method of converting a binary executable compiled for a first non-native architecture into a translated native image for a second native architecture comprising the steps of:
-
transparently executing the binary executable compiled for said first non-native architecture using an interpreter; collecting profile data in response to the execution of the binary executable compiled for said first non-native architecture to determine various execution characteristics of instruction sequences; and in response to the profile data generated by the interpreter, transparently forming said translated native image for at least portions of the binary executable in the non-native image in accordance with the characteristics of the profile data, and wherein, the first time the binary executable is invoked for execution, said step of executing using an interpreter is performed without performing a binary translation of any instructions included in the binary executable, and, upon subsequent invocations for execution, executing previously translated segments of native corresponding to non-native code segments, such that said step of executing using an interpreter is performed in subsequent conversions of the binary executable only for those portions of the binary executable which have not been translated. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
29. A binary image conversion system which converts instructions from an instruction set of a first, non native computer system to a second, different, native computer system, said binary image conversion system comprising:
-
a server; a run-time system transparently initiated upon invocation of an application program comprising non-native instructions which, in response to the non-native instructions, provides a native instruction or a native instruction routine comprised of a plurality of native instructions, said run-time system further comprising; a component for collecting profile data in response to execution of the native instructions and the native instruction routines to determine execution characteristics of the non-native instruction; a component for querying the server to determine whether there exists any native image code for the non-native instructions of the application program; and an interpreter which examines a single non-native instruction of the application program at a time to provide the native instruction or a native instruction routine comprised of a plurality of native instructions, said server invoking said interpreter upon making a determination while executing said application program that there is no native image code corresponding to the single non-native instruction; and a background system invoked by the server, responsive to the profile data generated by the run-time system for forming translated portions of a native image corresponding to portions of the non-native instructions of the application program which have already been interpreted in response to invoking the application program. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
-
42. A binary translator system comprising:
-
a runtime system transparently initiated upon invocation of an application program comprising non-native instructions, for generating profile data during execution of an application program describing the execution of the application program; a component, invoked by a server component, responsive to profile data generated by the run time system, for transparently translating non-native instructions of the application program into native instructions included in a translated native image of the application program wherein said non-native instructions have previously been executed upon invocation of the application program and wherein said non-native instructions have not yet been translated; a runtime interpreter for interpreting non-native instructions at runtime of said applications program; and said server component for determining at runtime of said application program whether to invoke said component for translating or said runtime interpreter to execute a current non-native instruction of said application program. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
-
-
53. A binary image conversion system which converts instructions from an instruction set of a non native computer system to an instruction set of a native computer system, comprising:
-
a run-time system transparently initiated upon invocation of an application program comprising non-native instructions, which, in response to a non-native image having instructions of the application program, provides and executes a native instruction or a native instruction routine comprised of a plurality of native instruction, wherein the run-time system executes previously translated portions of native code corresponding to non-native code portions of the non-native binary image, said run-time system further comprising; a component for collecting profile data in response to execution of the native instructions and the native instruction routines to determine execution characteristics of the non-native instruction; a background system responsive to the profile data generated by the runtime system to form translated portions of a native image of the non-native instructions of the application program, wherein the background system translates only portions of non-native images comprising instructions which have been executed; a component for invoking the background system; a component for determining whether there is any translated native image code for the application program; and a component for scheduling transactions within and between the run-time and background systems. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60, 61)
-
Specification