Claims
- 1. A memory access system for accessing items in a memory, comprising:
a plurality of buffers,
each buffer corresponding to a different logical partition of the memory; and a memory access controller, operably coupled to the plurality of buffers, that is configured to:
determine whether an addressed item is contained in a buffer of the plurality of buffers, based on an identification of the logical partition corresponding to the addressed item, load a plurality of items, including the addressed item, from the memory and into the buffer, if the addressed item is not in the buffer, and load a next plurality of items from the memory and into a next buffer, if the next plurality of items is not in the next buffer, so that the plurality of items and next plurality of items are available for direct access from the corresponding buffer and next buffer.
- 2. The memory access system of claim 1, wherein
a size of each buffer is determined based on a delay associated with the load of the plurality of items from the memory.
- 3. The memory access system of claim 1, wherein
a total size of the plurality of buffers is based on an expected size of sequences of instructions forming a program loop in the memory.
- 4. The memory access system of claim 1, wherein
the addressed item is addressed by an address that includes, in most-significant to least-significant bit order: a segment identifier, the identification of the logical partition, and a word identifier, and the word identifier identifies a location in the buffer corresponding to the addressed item.
- 5. The memory access system of claim 4, wherein
the memory access controller is configured to determine whether the addressed item is contained in the buffer by comparing the segment identifier to a stored segment identifier corresponding to the plurality of items currently loaded in the buffer.
- 6. The memory access system of claim 1, wherein
the logical partitions each correspond, sequentially and cyclically, to a plurality of N sequential memory locations in the memory.
- 7. The memory access system of claim 1, further comprising
an other plurality of buffers, and wherein the memory access controller is further configured to:
load a plurality of other items, including an other addressed item from the memory into an other buffer of the other plurality of buffers, if the other addressed item is not in the other buffer, and load a next other plurality of items from the memory and into a next other buffer, if the next other plurality of items is not in the next other buffer.
- 8. The memory access system of claim 7, wherein:
the addressed item corresponds to program code, and the other addressed item corresponds to data.
- 9. A method of providing access to items in a memory, comprising:
logically partitioning the memory into a plurality of cyclically sequential partitions, associating a plurality of buffers with the plurality of partitions, determining whether an addressed item is in a first buffer of the plurality of buffers, based on an identification of a first partition of the plurality of partitions corresponding to the addressed item, loading a first plurality of items, including the addressed item, from the first partition of the memory to the first buffer, if the addressed item is not in the first buffer, and loading a second plurality of subsequent items, that are within a second partition of the plurality of partitions that is sequentially adjacent to the first partition plurality of items, into a corresponding second buffer, if the second plurality of items is not contained in the second buffer.
- 10. The method of claim 9, further including
retaining each plurality of items in each buffer of the plurality of buffers until a subsequent addressed item causes loading of a third plurality of items from the memory into the buffer.
- 11. The method of claim 9, wherein
a size associated with the cyclically sequential partitions is based on a delay that is associated with loading items from the memory, and corresponds to a size of each buffer.
- 12. The method of claim 9, wherein
a total size of the plurality of buffers is based on an expected size of sequences of instructions forming a program loop in the memory.
- 13. The method of claim 9, wherein
the addressed item is addressed by an address that includes, in most-significant to least-significant bit order: a segment identifier, the identification of the first logical partition, and a word identifier, and the word identifier identifies a location in the buffer corresponding to the addressed item.
- 14. The method of claim 13, wherein
determining whether the addressed item is contained in the buffer includes
comparing the segment identifier to a stored segment identifier corresponding to the plurality of items currently loaded in the first buffer.
- 15. A utility program for execution on a computing device that causes the computing device to:
identify a size associated with each of one or more loops in an application program, determine whether the size exceeds a loop size threshold, and notify a user of each of the one or more loops that exceed the loop size threshold, wherein
the application program is configured to be operated on a system having a cyclically-sequential memory access system that includes a logical partitioning of a memory into K partitions, each K partition having a width of N, and the loop size threshold is dependent on K and N.
- 16. The utility program of claim 15, wherein
the loop size threshold substantially corresponds to*N+1.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to concurrently filed U.S. patent application “MEMORY ACCELERATOR FOR ARM PROCESSORS”, Ser. No. ______ (Attorney Docket US018011).