Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
First Claim
1. A method for transferring execution from a first computer instruction stream to a second computer instruction stream, comprising:
- profiling the first computer instruction stream, wherein the profiling includes recording details of the execution flow of the first computer instruction stream to create a profile of the first computer instruction stream;
analyzing the profile of the first computer instruction stream to identify a frequently executed section;
translating only the frequently executed section of the first computer instruction stream into the second computer instruction stream;
storing a bit vector which includes a bit corresponding to each instruction in the first computer instruction stream, each bit indicating whether there is an entry point into the frequently executed section for the corresponding instruction;
monitoring execution of the first computer instruction stream to determine when execution has reached the frequently executed section;
transferring execution from the first computer instruction stream to the second computer instruction stream only to execute the frequently executed section; and
returning execution to the first computer instruction stream when execution of the frequently executed section is complete.
3 Assignments
0 Petitions
Accused Products
Abstract
A computer has instruction pipeline circuitry capable of executing two instruction set architectures (ISA'"'"'s). A binary translator translates at least a selected portion of a computer program from a lower-performance one of the ISA'"'"'s to a higher-performance one of the ISA'"'"'s. Hardware initiates a query when about to execute a program region coded in the lower-performance ISA, to determine whether a higher-performance translation exists. If so, the about-to-be-executed instruction is aborted, and control transfers to the higher-performance translation. After execution of the higher-performance translation, execution of the lower-performance region is reestablished at a point downstream from the aborted instruction, in a context logically equivalent to that which would have prevailed had the code of the lower-performance region been allowed to proceed.
327 Citations
28 Claims
-
1. A method for transferring execution from a first computer instruction stream to a second computer instruction stream, comprising:
-
profiling the first computer instruction stream, wherein the profiling includes recording details of the execution flow of the first computer instruction stream to create a profile of the first computer instruction stream; analyzing the profile of the first computer instruction stream to identify a frequently executed section; translating only the frequently executed section of the first computer instruction stream into the second computer instruction stream; storing a bit vector which includes a bit corresponding to each instruction in the first computer instruction stream, each bit indicating whether there is an entry point into the frequently executed section for the corresponding instruction; monitoring execution of the first computer instruction stream to determine when execution has reached the frequently executed section; transferring execution from the first computer instruction stream to the second computer instruction stream only to execute the frequently executed section; and returning execution to the first computer instruction stream when execution of the frequently executed section is complete. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for transferring execution from a first computer instruction stream to a second computer instruction stream, comprising:
-
profiling the first computer instruction stream, wherein the profiling includes recording details of the execution flow of the first computer instruction stream to create a profile of the first computer instruction stream; analyzing the profile of the first computer instruction stream to identify a frequently executed section; translating only the frequently executed section of the first computer instruction stream into the second computer instruction stream; storing a mapping table which includes a mapping of an address of an entry point into the frequently executed section and a corresponding address of an instruction in the first computer instruction stream; storing a bit vector which includes a bit for each page of the first computer instruction stream, each bit indicating whether the mapping into the frequently executed section is on the corresponding page; monitoring execution of the first computer instruction stream to determine when execution has reached the frequently executed section; transferring execution from the first computer instruction stream to the second computer instruction stream only to execute the frequently executed section; and returning execution to the first computer instruction stream when execution of the frequently executed section is complete. - View Dependent Claims (14)
-
-
15. A computer configured to transfer execution from a first computer instruction stream to a second computer instruction stream, comprising:
-
a profiler configured to profile the first computer instruction stream, wherein the profiler is configured to record details of the execution flow of the first computer instruction stream to create a profile of the first computer instruction stream; an analyzer configured to analyze the profile of the first computer instruction stream to identify a frequently executed section; store a bit vector which includes a bit corresponding to each instruction in the first computer instruction stream; and set a bit in the bit vector if there is an entry point into the frequently executed section for the corresponding instruction; a translator configured to translate only the frequently executed section of the first computer instruction stream into the second computer instruction stream; and a monitoring device configured to; monitor execution of the first computer instruction stream to determine when execution has reached the frequently executed section; and transfer execution from the first computer instruction stream to the second computer instruction stream only to execute the frequently executed section. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A computer configured to transfer execution from a first computer instruction stream to a second computer instruction stream, comprising:
-
a profiler configured to profile the first computer instruction stream, wherein the profiler is configured to record details of the execution flow of the first computer instruction stream to create a profile of the first computer instruction stream; an analyzer configured to; analyze the profile of the first computer instruction stream to identify a frequently executed section; store a mapping table which includes a mapping of an address of an entry point into the frequently executed section and a corresponding address of an instruction in the first computer instruction stream; and store a bit vector which includes a bit for each page of the first computer instruction stream, each bit indicating whether the mapping into the frequently executed section is on the corresponding page; a translator configured to translate only the frequently executed section of the first computer instruction stream into the second computer instruction stream; and a monitoring device configured to; monitor execution of the first computer instruction stream to determine when execution has reached the frequently executed section; and transfer execution from the first computer instruction stream to the second computer instruction stream only to execute the frequently executed section. - View Dependent Claims (28)
-
Specification