Claims
- 1. A device, comprising:
a main memory; means for separating array access traffic to and from the main memory from other data traffic to and from the main memory; a first cache memory to communicate with the main memory and to cache array data to enhance processing of the array access traffic; and a second cache memory to communicate with the main memory and to cache data other than array data to enhance processing of the other data traffic.
- 2. The device of claim 1, wherein the main memory includes DRAM.
- 3. The device of claim 1, wherein the means for separating array access traffic to and from the main memory from other data traffic to and from the main memory includes means for converting dynamic overlay and dynamic array declarations into machine code to set array attributes.
- 4. The device of claim 3, wherein the machine code to set array dimensions to be used in index mapping instructions, element size and array base address.
- 5. The device of claim 4, wherein the index mapping instructions are adapted to provide a one-dimensional offset into a multi-dimensional array.
- 6. The device of claim 1, wherein the means for separating array access traffic to and from the main memory from other data traffic to and from the main memory includes means for forming a dynamic array, including means to combine dynamic memory allocation and a dynamic overlay on the dynamically allocated memory to allow indexed array access into the dynamic array.
- 7. The device of claim 1, further comprising a memory arbitrator adapted to control access to the main memory by the first cache memory and the second cache memory.
- 8. A device, comprising:
a main memory; means for separating array access traffic to and from the main memory from other data traffic to and from the main memory; a first cache memory to communicate with the main memory and to cache array data to enhance processing of the array access traffic, the first cache memory including an array memory to store at least one array, and an access information memory to store information to access the at least one array; and a second cache memory to communicate with the main memory and to cache data other than array data to enhance processing of the other data traffic.
- 9. The device of claim 8, wherein the access information memory is adapted to store an array ID to identify an array within the array memory.
- 10. The device of claim 8, wherein the access information memory is adapted to store array height and width information to be used to define known array limits and confine a range of indices to conform to the known array limits.
- 11. The device of claim 10, wherein the access information memory is further adapted to store array stride information to be used to define known array limits and confine a range of indices to conform to the known array limits.
- 12. The device of claim 8, wherein the access information memory is adapted to store an array ID to identify an array within the array memory, an array height, an array width, and an array stride.
- 13. The device of claim 8, wherein the means for separating array access traffic to and from the main memory from other data traffic to and from the main memory includes a processor having a dynamic overlay mechanism.
- 14. The device of claim 8, wherein the dynamic overlay mechanism includes machine code to dynamically allocate one-dimensional memory, and further includes machine code and index mapping hardware to index multi-dimensional arrays in the memory.
- 15. A device, comprising:
a cache memory to store a plurality of m-dimensional arrays; and an index mapping hardware to communicate with the cache memory and to index the m-dimensional arrays in the cache memory using array attributes, the index mapping hardware to support n-dimensional arrays in a single pass.
- 16. The device of claim 15, further comprising array attribute storage hardware to store the array attributes used to index the m-dimensional arrays into the cache memory.
- 17. The device of claim 15, wherein the index mapping hardware is adapted to support two-dimensional arrays used in digital signal processing (DSP) tasks involving images.
- 18. The device of claim 15, wherein the index mapping hardware is adapted to support three-dimensional arrays used in graphics rendering tasks.
- 19. The device of claim 15, wherein m equals n, and the index mapping hardware is adapted to index multi-dimensional arrays into the cache memory using a single access pass.
- 20. The device of claim 15, wherein m is less than n, the index mapping hardware is adapted to index multi-dimensional arrays into the cache memory using multiple access passes and at least one array of handles into other arrays.
- 21. A system, comprising:
a processor; a main memory; and a dynamic array caching device to communicate with the processor and with the main memory, the processor and the dynamic array processing device being adapted to cooperate to separate dynamic array accesses from other data traffic and to cache dynamic, multi-dimensional arrays.
- 22. The system of claim 21, wherein the dynamic array caching device includes:
a cache memory to store a plurality of arrays; an attribute memory module to store array attributes to receive an array handle from the processor; a boundary policy enforcement module to receive width, height and boundary policy information from the attribute memory based on the array handle and further to receive array indices from the processor; and an index mapping module to receive stride, element size and base address information from the attribute memory module based on the array handle, to receive confined indices from the boundary policy enforcement module, and to provide an address to access an array element.
- 23. The system of claim 21, wherein the processor operates on machine code, the machine code including machine code to set array attributes using a dynamic memory allocation and a dynamic overlay on the dynamically allocated memory to allow indexed array access into the dynamic array.
- 24. The system of claim 21, further comprising at least one cache to communicate with the processor and the memory and to cache data other than arrays.
- 25. A system, comprising:
means for separating dynamic array accesses from regular data traffic; means for caching the dynamic array accesses separately from the regular data traffic, including:
means for storing array attribute information in a plurality of hardware registers; means for accessing the array attribute information using an array handle; means for generating a real memory address using array indices with the attribute information; and means for forwarding the real memory address to a dynamic array cache as a memory access request.
- 26. The system of claim 25, wherein the means for generating a real memory address using array indices with the attribute information includes means for calculating the real memory address using array height, array width, array stride, and array element size.
- 27. The system of claim 25, wherein the means for calculating includes means for calculating the real memory address using boundary policies.
- 28. The system of claim 25, further comprising means for speculatively caching anticipated dynamic array accesses.
- 29. A method, comprising:
separating dynamic array access from other data traffic, including instructing a processor to access array data using a hardware path separate from a path used for other data access; and caching the dynamic array accesses separate from the other data traffic including:
storing array attribute information in an array attribute memory module; accessing the array attribute information using an array handle; generating a real memory address using array indices and the attribute information; and forwarding the real memory address as a memory request to a cache memory, the cache memory being adapted to store array data.
- 30. The method of claim 29, wherein generating a real memory address using array indices and the attribute information includes calculating the real memory address based on array indices provided by the processor and on array boundary policies, array height, array width, array stride, array element size, and array indices.
- 31. The method of claim 29, further comprising speculatively caching anticipated dynamic array accesses.
- 32. The method of claim 29, wherein separating dynamic array access from other data traffic includes converting a dynamic memory allocation and a dynamic overlay on the dynamically allocated memory into machine code to be operated on by the processor.
- 33. A method, comprising:
converting a dynamic memory allocation and a dynamic overlay on the dynamically allocated memory into instructions to be operated on by a processor to provide array information on a first data path and to provide other memory input/output data to a second data path, the array information on the first data path including an array handle, array indices, and data; providing an array handle to an array attribute memory module to generate stride, element size and base address information; and applying an index mapping expression to obtain a one-dimensional index into a cache memory based on the array indices and the stride, element size and base address information.
- 34. The method of claim 33, further comprising providing array width, array height and boundary policy information based on the array handle, and generating confined indices based on the array indices, and the array width, array height and boundary policy information, wherein applying an index mapping expression to obtain a one-dimensional index into a cache memory based on the array indices includes applying an index mapping expression to obtain a one-dimensional index into a cache memory based on the confined indices.
- 35. The method of claim 33, wherein providing an array handle and applying an index mapping expression to obtain a one-dimensional index into a cache memory includes obtaining a one-dimensional index for an m-dimensional array in a single pass.
- 36. The method of claim 35, wherein obtaining a one-dimensional index for an m-dimensional array in a single pass includes obtaining a one-dimensional index for a two-dimensional array in a single pass, further comprising performing a digital signal processing task on an image using two-dimensional arrays stored in the cache memory.
- 37. The method of claim 35, wherein obtaining a one-dimensional index for an m-dimensional array in a single pass includes obtaining a one-dimensional index for a three-dimensional array in a single pass, further comprising performing a graphics rendering task on an image using three-dimensional arrays stored in the cache memory.
- 38. The method of claim 35, wherein the cache memory is adapted to store n-dimensional arrays where m is less than n, the method further comprising using multiple access passes using at least one array of handles into other arrays.
- 39. The method of claim 33, further comprising speculatively loading anticipated dynamic array accesses in the cache memory.
RELATED APPLICATION(S)
[0001] This application is a Continuation of U.S. application Ser. No. 09/901,811 filed Jul. 10, 2001 which is incorporated herein by reference.
Continuations (1)
|
Number |
Date |
Country |
Parent |
09901811 |
Jul 2001 |
US |
Child |
10785786 |
Feb 2004 |
US |