Claims
- 1. A method of storing data comprising the steps of:
identifying respective lifetimes of each member of an indexed collection of data elements, each of said data elements referenceable in a data index space representing a set of valid data element indices; identifying a set of pairs of said data elements having overlapping lifetimes; and generating a mapping from the data index space to an address offset space based on said set of pairs of said data elements having said overlapping lifetimes.
- 2. The method according to claim 1 further comprising a step of generating computer executable instruction code for storing said data elements into memory locations corresponding to said address offset space.
- 3. The method according to claim 1 further comprising a step of defining said address offset space to include a number of said memory locations sufficient to hold a largest subset of data elements that are live during any one event time.
- 4. The method according to claim 1 further comprising a step of mapping a multidimensional data structure to a smaller address space corresponding to said address offset space.
- 5. The method according to claim 4 further comprising a step of translating an index of an element of said multidimensional array to an address offset in said address offset space including a step of performing modulo arithmetic.
- 6. The method according to claim 5 wherein said step of generating includes translating from a multidimensional data index space to a smaller address offset space using a linear-offset mapping followed by a single modulo operation.
- 7. The method according to claim 5 wherein said step of generating includes translating from a multidimensional data index space to a smaller address offset space using a linear mapping to a second data index space, followed by multiple modulo operations applied to an index in said second data index space, followed by a linear-offset mapping to an address offset space.
- 8. A method of storing data comprising the steps of:
identifying an array data structure in a program; for each element of the array data structure, identifying an earliest write time and a last read time; finding a representation of a set of pairs of said elements having overlapping lifetimes; finding a set of differences of indices of said sets of pairs of said elements having said overlapping lifetimes; finding an integer lattice with no non-zero vector point in common with said set of differences; and mapping from a data index space of said array data structure to an address offset space using said integer lattice.
- 9. The method according to claim 8 further comprising the steps of:
compiling a program including generating an address offset of an array element of said array data structure having array index “a” using a formula M1(M2 a mod r) where M2 is a change-of-basis matrix, M1 is a vector multiplier and r is a vector radix.
- 10. The method according to claim 9 further comprising the step of allocating a number of cells equal to a product of the entries in r and used to store said array element of said array data structure.
- 11. The method according to claim 9 further comprising the restriction that the matrix M2 have one row, the vector r have one element, and the matrix M1 be equal to unity.
- 12. The method according to claim 8 further comprising a step of finding an integer lattice including attempting to minimize a determinant of said integer lattice.
- 13. A computer program stored in a computer readable medium, said computer program comprising computer executable code for:
identifying respective lifetimes of each member of an indexed collection of data elements, each of said data elements referenceable in a data index space representing a set of valid data element indices; identifying a set of pairs of said data elements having overlapping lifetimes; and generating a mapping from the data index space to an address offset space based on said set of pairs of said data elements having said overlapping lifetimes.
- 14. The computer program according to claim 13 further comprising computer executable code for generating computer executable instruction code for storing said data elements into memory locations corresponding to said address offset space.
- 15. The computer program according to claim 13 further comprising computer executable code for defining said address offset space to include a number of said memory locations sufficient to hold a largest subset of data elements that are live during any one event time.
- 16. The computer program according to claim 13 further comprising computer executable code for mapping a multidimensional data structure to a smaller address space corresponding to said address offset space.
- 17. The computer program according to claim 16 further comprising computer executable code for translating an index of an element of said multidimensional array to an address offset in said address offset space including performing modulo arithmetic.
- 18. The computer program according to claim 17 wherein said computer executable code for generating includes computer executable code for translating from a multidimensional data index space to a smaller address offset space using a linear-offset mapping followed by a single modulo operation.
- 19. The computer program according to claim 17 wherein said computer executable code for generating includes computer executable code for translating from a multidimensional data index space to a smaller address offset space using a linear mapping to a second data index space, followed by multiple modulo operations applied to an index in said second data index space, followed by a linear-offset mapping to an address offset space.
- 20. A computer program stored in a computer readable medium, said computer program comprising computer executable code for:
identifying an array data structure in a program; for each element of the array data structure, identifying an earliest write time and a last read time; finding a representation of a set of pairs of said elements having overlapping lifetimes; finding a set of differences of indices of said sets of pairs of said elements having said overlapping lifetimes; finding an integer lattice with no non-zero vector point in common with said set of differences; and mapping from a data index space of said array data structure to an address offset space using said integer lattice.
- 21. The computer program according to claim 20 further comprising computer executable code for:
compiling a program including generating an address offset of an array element of said array data structure having array index “a” using a formula M1(M2 a mod r) where M2 is a change-of-basis matrix, M1 is a vector multiplier and r is a vector radix.
- 22. The computer program according to claim 20 further comprising computer executable code for allocating a number of cells equal to a product of the entries in r and used to store said array element of said array data structure.
- 23. The computer program according to claim 20 wherein said computer executable code for allocating a number of cells implements a restriction that the matrix M2 have one row, the vector r have one element, and the matrix M1 be equal to unity.
- 24. The computer program according to claim 20 further comprising computer executable code for finding an integer lattice including attempting to minimize a determinant of said integer lattice.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to concurrently filed, co-pending patent application Ser. No. [100110557-1], entitled Method and System for the Design of Pipelines of Processors, the disclosure of which is hereby incorporated by reference herein.