Compiling for multiple virtual machines targeting different processor architectures
First Claim
1. A method of compiling a source program prepared in a source language for multiple different processors, the method comprising:
- converting the textual source program into an intermediate program comprised of generic abstraction machine instructions that are independent of any particular processor architecture; and
generating and embedding a compact processor-independent graph structure in an extended static single assignment (SSA) form, comprising a plurality of machine independent annotations in the intermediate program and alias information identifying potential optimizations for use by an optimizing translator at a target processor.
2 Assignments
0 Petitions
Accused Products
Abstract
A developer'"'"'s system compiles a source-language program by parsing it into an intermediate language (IL) program that is independent of the architecture or resources of any particular processor. This system generates a set of machine independent annotations that record attributes and structure of the IL program such as variable definitions and uses. The annotations are in the form of a unique graph structure. Further annotations are used to associate the machine specific optimization information with each of many different microprocessors. The IL program and all the annotations are distributed to multiple user systems having mutually different virtual machines that translate the IL program into object language for their respective different processors. Optimizers in the virtual machines select graph edges based on the machine specific annotations to generate an optimized object program. The translators are table-driven. Entities in the IL program are keyed to entries in a replaceable table in each virtual machine.
190 Citations
74 Claims
-
1. A method of compiling a source program prepared in a source language for multiple different processors, the method comprising:
-
converting the textual source program into an intermediate program comprised of generic abstraction machine instructions that are independent of any particular processor architecture; and
generating and embedding a compact processor-independent graph structure in an extended static single assignment (SSA) form, comprising a plurality of machine independent annotations in the intermediate program and alias information identifying potential optimizations for use by an optimizing translator at a target processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method of compiling a source program prepared in a source language for multiple different processors, the method comprising:
-
identifying potential optimizations in the program which are machine independent; and
generating and embedding a compact processor-independent graph structure in an extended static single assignment (SSA) form, comprising a plurality of graph based annotations and alias information identifying the potential optimizations into the program for use by an optimizing translator at one of multiple different target processors. - View Dependent Claims (21, 22, 23)
-
-
24. A medium having computer executable instructions stored thereon for causing a computer to perform a method of compiling a source program prepared in a source language for multiple different processors, the method comprising:
-
identifying potential optimizations in the program which are machine independent; and
generating and embedding a plurality of graph based annotations identifying the potential optimizations into the program for use by an optimizing translator at one of multiple different target processors.
-
-
25. A method of compiling a program for one of multiple different processors, comprising:
-
receiving a program written in an intermediate language;
receiving a compact graph structure in an extended static single assignment (SSA) form, comprising a set of machine independent and machine dependent annotations and alias information identifying optimizations for the program;
generating an object code program from the intermediate language program based on the graph structure in the extended SSA form comprising the set of annotations; and
optimizing the object code program for the one processor of multiple different target processors. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A system for compiling a source program written in a high-level source language, comprising:
-
a compiler that translates the source program to an intermediate program in an intermediate language substantially independent of the structure of any particular processor and generates a compact graph structure in an extended static single assignment (SSA) form to annotate the intermediate program with processor independent information and processor dependent information and alias information; and
a plurality of virtual machines for translating the intermediate program into an object program in a low-level object language, the object program being optimized for one of a plurality of different processors in response to the processor-dependent information in a selected one of the annotations. - View Dependent Claims (35, 36, 37, 38)
-
-
39. A system for compiling a program written in a high-level source language, comprising:
-
a compiler having;
a translator that translates the source program to an intermediate program in an intermediate language and generates a compact graph structure in an extended static single assignment (SSA) form having annotations and alias information representing potential code optimizations that are independent of the resources of any particular processor, and a generator that produces a set of machine dependent annotations containing information concerning the use of the potential code optimizations with respect to the resources of architecturally different processors. - View Dependent Claims (40, 41, 42, 43)
-
-
44. A system for executing a program, comprising:
-
an intermediate program in a tokenized language containing;
a set of annotations containing optimization information related to the intermediate program, a portion of which is independent, and portion of which is dependent upon the resources of one of a plurality of different processors; and
a translator that translates the intermediate program into an object program in a low-level object language executable on one particular processor as a function of the annotations such that the executable is optimized for that particular processor. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51, 52)
-
-
53. A medium containing computer-readable instructions and data for carrying out a method of compiling a program for multiple different processors, the method comprising:
-
receiving the program in source code;
parsing the source code into a program in an intermediate language that includes optimization information which identifies definitions and uses of entities, and is neutral as to the resources of any of the multiple processors; and
generating a separate set of annotations relating the definitions and uses of entities in the intermediate program, each of the annotations relating the entities of the intermediate-language program to the specific resources of any targeted hardware architecture of multiple different target architectures.
-
-
54. A medium containing computer-readable instructions and data for carrying out a method of compiling a program for one of multiple different processors, the method comprising:
-
receiving a program in an intermediate language;
receiving a set of annotations relating the definitions and uses of entities in the intermediate program that is neutral as to the resources of any of the multiple processors;
selecting one of the annotations corresponding to the one processor; and
translating the intermediate-language program into an object-language executable program in an optimized form on the one processor of multiple different target processors based upon the selected annotation.
-
-
55. A computer-readable medium containing computer-readable representations of:
-
an intermediate program containing optimization information that is substantially independent of the resources of any of a set of specific processors; and
a set of annotations for the intermediate program, each annotation comprising information concerning the structure of the intermediate program with respect to the resources of one of the specific processors of multiple different target processors for executing the program.
-
-
56. A computer program stored on a medium, the program comprising:
-
computer program instructions for execution on a computer processor; and
a data structure comprising;
processor independent computer program annotations that identify potential optimizations for the computer program instructions; and
processor dependent annotations that identify processor independent optimizations for selected processors of multiple different target processors. - View Dependent Claims (57, 58, 59)
-
-
60. A method of compiling a source program prepared in a source language for multiple different processors, the method comprising:
-
converting the textual source program into an intermediate program comprised of generic abstraction machine instructions that are independent of any particular processor architecture; and
generating and embedding a compact processor-independent graph structure in an extended static single assignment (SSA) form, comprising a plurality of machine independent annotations in the intermediate program and alias information identifying potential optimizations and constraints for use by an optimizing translator at one of multiple different target processors. - View Dependent Claims (61, 62, 63, 64, 65, 66)
-
-
67. A system having computer-readable instructions for causing a computer to compile a source program prepared in a source language for multiple different processors, the system comprising:
-
means for converting the textual source program into an intermediate program comprised of generic abstraction machine instructions that are independent of any particular processor architecture; and
means for generating and embedding a compact processor-independent graph structure in an extended static single assignment (SSA) form, comprising a plurality of machine independent annotations in the intermediate program and alias information identifying potential optimizations and constraints for use by an optimizing translator at multiple different target processors. - View Dependent Claims (68, 69)
-
-
70. A computer-readable medium containing computer-readable representations of:
-
an intermediate program containing optimization and constraint information that is substantially independent of the resources of any of a set of specific processors; and
a set of annotations for the intermediate program, each annotation comprising information concerning the structure of the intermediate program with respect to the resources of one of the specific processors for executing the program. - View Dependent Claims (71)
-
-
72. A computer program stored on a medium, the program comprising:
-
computer program instructions for execution on a computer processor; and
a data structure comprising a compact graph structure in an extended static single assignment (SSA) form, comprising;
alias information;
processor independent computer program annotations that identify potential optimizations and constraints for the computer program instructions; and
processor dependent annotations that identify processor independent optimizations for selected processors. - View Dependent Claims (73, 74)
-
Specification