Method and apparatus for size optimization of storage units
First Claim
1. A method for optimizing before run-time the size of a storage unit for storing temporary data, comprising:
- loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and
optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometric model, wherein the intra-structure optimizing also includes selecting an at least piecewise affine storage order for the first data structure.
5 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a method and an apparatus for reducing the storage size required for temporary data by storage order optimization. Advantageously, the execution order optimization and the storage order optimization may be treated independently. The storage size optimization is preferably performed by determining an optimum intra-array and/or inter-array storage order based on a geometrical model. The geometrical model provides a representation of the address space occupied by an array as a function of time and allows the calculation of the window size of the occupied address/time domain of the array. Where calculations would be time-consuming, these may be shortened by making simplifying assumptions, e.g. calculation of upper and lower bounds of the window size of the occupied address/time domain of an array rather than an exact calculation. Further, heuristical simplifications are described to reduce run-times for the optimization process.
125 Citations
31 Claims
-
1. A method for optimizing before run-time the size of a storage unit for storing temporary data, comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometric model, wherein the intra-structure optimizing also includes selecting an at least piecewise affine storage order for the first data structure. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for optimizing before run-time the size of a storage unit for storing temporary data, comprising:
-
loading into a compiler a definition of at least a first data structure and a second data structure and execution commands, at least one of the execution commands requiring access to at least one of the first and second data structures; optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including inter-structure optimizing which optimizes an inter-structure storage order between the first and second data structures, the inter-structure optimizing being based on a geometric model; intra-structure optimizing which independently optimizes an intra-structure storage order within each of the first and second data structures to form an abstract address equation for each data structure the intra-structure optimizing being based on a geometric model; using the abstract address equations in the inter-structure optimizing. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A compiler, comprising:
-
means for loading a definition of at least a first data structure and a second data structure and execution commands, at least one of the execution commands requiring access to at least one of the first and second data structures; means for reducing the storage size of the temporary data required for the execution of the commands with a substantially given execution order, the reducing means including means for optimizing an inter-structure storage order between the first and second data structures, the inter-structure optimizing means being adapted to carry out the optimization based on a geometrical model, wherein the inter-structure optimizing means includes means for selecting the intra-structure storage order for at least one data structure which provides the minimum window size of the relevant data structure, and the data structures have a plurality of dimensions and each dimension may have a storage order in at least one direction and the selecting means includes means for determining upper and lower bounds of the window size for the relevant data structure and for fixing the position in the storage order and the storage order direction of a limited number of the dimensions. - View Dependent Claims (13, 14, 15)
-
-
16. A compiler, comprising:
-
means for loading execution commands and a definition of at least one data structure, at least one of the execution commands requiring access to at least one data structure; and means for reducing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the reducing means including intra-structure optimizing means for optimizing an intra-structure storage order at least within the one data structure, the intra-structure optimizing means including means for calculating a window size for the one data structure, the intra-structure optimizing being based on a geometric model, wherein the at least one data structure occupies abstract addresses, and the abstract addresses occupied by the at least one data structure at each time over a period of time is called the occupied address/time domain of the data structure and the calculation means is adapted to calculate the maximum distance in address space between two abstract addresses in the occupied address/time domain. - View Dependent Claims (17, 18)
-
-
19. A program storage device storing instructions that when executed by a computer perform the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the intra-structure optimizing also includes selecting an at least piecewise affine storage order for the first data structure.
-
-
20. A program storage device storing instructions that when executed by a computer perform the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the intra-structure optimizing which independently optimizes an intra-structure storage order within each of the first and second data structures forms an abstract address equation for each data structure, the intra-structure optimizing being based on a geometrical model; and using the abstract address equations in inter-structure optimizing.
-
-
21. A program storage device storing instructions that when executed by a computer perform the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model; and selecting an intra-structure storage order for at least one data structure which provides the minimum window size of the first data structure, and the at least one data structure has a plurality of dimensions and each dimension may have a storage order in at least one direction and the selecting includes determining upper and lower bounds of the window size for the at least one data structure and for fixing the position in the storage order and the storage order direction of a limited number of the dimensions.
-
-
22. A program storage device storing instructions that when executed by a computer perform the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the abstract addresses occupied by the first data structure at each time over a period of time is called the occupied address/time domain of the first data structure and the calculation means is adapted to calculate the maximum distance in address space between two abstract addresses in the occupied address/time domain.
-
-
23. An executable computer program, wherein the size of a storage unit for storing temporary data of the computer program was optimized before run-time by the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure used by computer program, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the intra-structure optimizing also includes selecting an at least piecewise affine storage order for the first data structure.
-
-
24. An executable computer program, wherein the size of a storage unit for storing temporary data of the computer program was optimized before run-time by the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure used by computer program, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the inter-structure optimizing means includes means for selecting the intra-structure storage order for at least one data structure which provides the minimum window size of the relevant data structure, and the data structures have a plurality of dimensions and each dimension may have a storage order in at least one direction and the selecting means includes means for determining upper and lower bounds of the window size for the relevant data structure and for fixing the position in the storage order and the storage order direction of a limited number of the dimensions.
-
-
25. An executable computer program, wherein the size of a storage unit for storing temporary data of the computer program was optimized before run-time by the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure used by computer program, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometrical model, wherein the first data structure occupies abstract addresses, and the abstract addresses occupied by the first data structure at each time over a period of time is called the occupied address/time domain of the data structure and the calculation means is adapted to calculate the maximum distance in address space between two abstract addresses in the occupied address/time domain.
-
-
26. A method for optimizing before run-time the size of a storage unit for storing temporary data, comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including intra-structure optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing being based on a geometric model.
-
-
27. A method for optimizing before run-time the size of a storage unit for storing temporary data, comprising:
-
loading into a compiler a definition of at least a first data structure and a second data structure and execution commands, at least one of the execution commands requiring access to at least one of the first and second data structures; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the storage size optimizing including inter-structure optimizing which optimizes an inter-structure storage order between the first and second data structures, the inter-structure optimizing being based on a geometric model.
-
-
28. A compiler, comprising:
-
means for loading a definition of at least a first data structure and a second data structure and execution commands, at least one of the execution commands requiring access to at least one of the first and second data structures; and means for reducing the storage size of the temporary data required for the execution of the commands with a substantially given execution order, the reducing means including means for optimizing an inter-structure storage order between the first and second data structures, the inter-structure optimizing means being adapted to carry out the optimization based on a geometrical model.
-
-
29. A compiler, comprising:
-
means for loading execution commands and a definition of at least one data structure, at least one of the execution commands requiring access to at least one data structure; and means for reducing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the reducing means including intra-structure optimizing means for optimizing an intra-structure storage order at least within the one data structure, the intra-structure optimizing means including means for calculating a window size for the one data structure, the intra-structure optimizing being based on a geometric model.
-
-
30. A program storage device storing instructions that when executed by a computer perform the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the optimizing step including an intra-structure optimizing step for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing step being based on a geometrical model.
-
-
31. An executable computer program, wherein the size of a storage unit for storing temporary data of the computer program was optimized before run-time by the method comprising:
-
loading into a compiler execution commands and a definition of at least a first data structure used by computer program, at least one of the execution commands requiring access to the at least first data structure; and optimizing the storage size of the temporary data in the storage unit required for the execution of the commands with a substantially given execution order, the optimizing step including an intra-structure optimizing step for optimizing an intra-structure storage order at least within the first data structure and the optimizing including calculating a window size for the first data structure, the intra-structure optimizing step being based on a geometrical model.
-
Specification