IP Library Granted Patent US 8,035,650
Granted Patent B2
US 8,035,650 · App. 11/493,444 · Granted Oct 11, 2011

Tiled cache for multiple software programs

Assignee: QUALCOMM Incorporated
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,035,650
App. No.
11/493,444
Granted
Oct 11, 2011
Kind
B2
Abstract

Caching techniques for storing instructions, constant values, and other types of data for multiple software programs are described. A cache provides storage for multiple programs and is partitioned into multiple tiles. Each tile is assignable to one program. Each program may be assigned any number of tiles based on the program's cache usage, the available tiles, and/or other factors. A cache controller identifies the tiles assigned to the programs and generates cache addresses for accessing the cache. The cache may be partitioned into physical tiles. The cache controller may assign logical tiles to the programs and may map the logical tiles to the physical tiles within the cache. The use of logical and physical tiles may simplify assignment and management of the tiles.

Claims (61)

1. An apparatus comprising:

a cache operative to provide storage for multiple programs and partitioned into multiple physical tiles, wherein each of the physical tiles is comprised of one or more cache lines, wherein at least one program of the multiple programs is partitioned into a plurality of program sections, and wherein one of the physical tiles is configured to store one of the program sections of the program; and

a cache controller operative to identify the physical tiles and to generate cache addresses for accessing the physical tiles of the cache, wherein the cache controller assigns one logical tile of a plurality of logical tiles to at least one program section of the plurality of program sections, maps the logical tiles to the physical tiles, and identifies the physical tiles based on the mapping of the logical tiles to the physical tiles.

2. The apparatus of claim 1 , wherein each program is assigned at least two consecutive logical tiles.

3. The apparatus of claim 1 , wherein each program is assigned at least one of the logical tiles and is mapped to at least one of the physical tiles based on direct mapping.

4. The apparatus of claim 1 , wherein each of the programs is assigned at least one of the logical tiles and is mapped to at least one of the physical tiles based on N-way set associate mapping, where N is greater than one.

5. The apparatus of claim 1 , wherein the cache controller comprises

a look-up table operative to identify the logical tiles assigned to the multiple programs.

6. The apparatus of claim 5 , wherein each of the programs is assigned at least two consecutive logical tiles, and wherein the look-up table stores a first one of the logical tiles and the number of the logical tiles assigned to each of the programs.

7. The apparatus of claim 1 , wherein the cache controller comprises

a look-up table operative to store a mapping of the logical tiles to the physical tiles.

8. The apparatus of claim 1 , wherein the cache controller comprises

an address generator operative to receive a program counter for the at least one program of the multiple programs and to provide an address of one of the logical tiles corresponding to the program counter.

9. The apparatus of claim 8 , wherein the address generator further determines a tag for the program counter based on direct mapping of the at least one program of the multiple programs to at least one of the logical tiles assigned to the program.

10. The apparatus of claim 1 , wherein the cache controller comprises

an address generator operative to receive a program counter for the at least one program of the multiple programs, to obtain a base address for a program section from the program counter, to derive an address of one of the logical tiles with the base address, a first one of the logical tiles assigned to the program, and the number of the logical tiles assigned to the program, and to derive a tag for the program counter with the base address and the number of logical tiles assigned to the program.

11. The apparatus of claim 1 , wherein the cache controller receives an indication of the at least one program of the multiple programs being activated and assigns at least one of the logical tiles to the program.

12. The apparatus of claim 11 , wherein the cache controller receives an indication of the at least one program of the multiple programs retiring and re-assigns at least one of the logical tiles to at least one other program.

13. The apparatus of claim 1 , wherein the cache comprises

a first memory operative to provide storage for the multiple programs and partitioned into the multiple physical tiles, and

a second memory operative to store tags for the multiple physical tiles in the first memory.

14. The apparatus of claim 1 , wherein the cache is operative to store instructions for the multiple programs.

15. The apparatus of claim 1 , wherein the cache is operative to store constant values for the multiple programs.

16. An integrated circuit comprising:

a cache operative to provide storage for multiple programs and partitioned into multiple physical tiles, wherein each of the physical tiles is comprised of one or more cache lines, wherein at least one program of the multiple programs is partitioned into a plurality of program sections, and wherein one of the physical tiles is configured to store one of the program sections of the program; and

a cache controller operative to identify the physical tiles and to generate cache addresses for accessing the physical tiles of the cache, wherein the cache controller assigns one logical tile of a plurality of logical tiles to at least one program section of the plurality of program sections, maps the logical tiles to the physical tiles, and identifies the physical tiles based on the mapping of the logical tiles to the physical tiles.

17. The integrated circuit of claim 16 , wherein the cache controller receives a program counter for one of the programs, derives a logical tile address based on the program counter, and generates a physical tile address based on the logical tile address and the mapping of logical tiles to physical tiles.

18. The integrated circuit of claim 16 , wherein the cache controller comprises

an address generator operative to receive a program counter for the at least one program of the multiple programs, to obtain a base address for a program section from the program counter, to derive an address of one of the logical tiles with the base address, a first one of the logical tiles assigned to the program, and the number of the logical tiles assigned to the program, and to derive a tag for the program counter with the base address and the number of logical tiles assigned to the program.

19. A method comprising:

assigning, with a cache controller, multiple physical tiles in a cache to multiple programs, wherein each of the physical tiles is comprised of one or more of cache lines, wherein at least one program of the multiple programs is partitioned into a plurality of program sections, and wherein one of the physical tiles is configured to store one of the program sections of the program;

receiving, with the cache controller, an access request from the program among the multiple programs;

identifying, with the cache controller, at least one of the physical tiles; and

generating, with the cache controller, a cache address based on the at least one of the physical tiles,

wherein the assigning the multiple tiles in the cache to the multiple programs comprises:

assigning, with the cache controller, one logical tile of a plurality of logical tiles to at least one program section of the plurality of program sections, and

mapping, with the cache controller, the logical tiles to physical tiles within the cache, and

wherein identifying, with the cache controller, at least one of the physical tiles comprises identifying the at least one of the physical tiles based on the mapping of the logical tiles to the physical tiles.

20. The method of claim 19 , wherein the generating the cache address comprises

receiving a program counter for the at least one of the programs,

deriving a logical tile address based on the program counter, and

generating a physical tile address based on the logical tile address and the mapping of logical tiles to physical tiles.

21. An apparatus comprising:

means for assigning multiple physical tiles in a cache to multiple programs, wherein each of the physical tiles is comprised of one or more cache lines, wherein at least one program of the multiple programs is partitioned into a plurality of program sections, and wherein one of the physical tiles is configured to store one of the program sections of the program;

means for receiving an access request from the program among the multiple programs;

means for identifying at least one of the physical tiles; and

means for generating a cache address based on the at least one of the physical tiles,

wherein the means for assigning the multiple tiles in the cache to the multiple programs comprises:

means for assigning one logical tile of a plurality of logical tiles to at least one program section of the plurality of program sections, and

means for mapping the logical tiles to physical tiles within the cache,

wherein the means for identifying at least one of the physical tiles comprises means for identifying the at least one of the physical tiles based on the mapping of the logical tiles to the physical tiles, and

wherein at least one of the means for assigning the multiple physical tiles, the means for receiving, the means for identifying, and the means for generating is implemented at least partially with one or more hardware units.

22. The apparatus of claim 21 , wherein the means for generating the cache address comprises

means for receiving a program counter for the at least one of the programs,

means for deriving a logical tile address based on the program counter, and

means for generating a physical tile address based on the logical tile address and the mapping of logical tiles to physical tiles.

23. A wireless device comprising:

a graphics processor operative to perform graphics operations and comprising:

an instruction cache operative to store instructions for multiple programs and partitioned into multiple physical tiles, wherein each of the physical tiles is comprised of one or more cache lines, wherein at least one program of the multiple programs is partitioned into a plurality of program sections, and wherein one of the physical tiles is configured to store one of the program sections of the program; and

a cache controller operative to identify the physical tiles and to generate cache addresses for accessing the physical tiles of the instruction cache, wherein the cache controller assigns one logical tile of a plurality of logical tiles to at least one program section of the plurality of program sections, maps the logical tiles to the physical tiles, and identifies the physical tiles based on the mapping of the logical tiles to the physical tiles.

24. The wireless device of claim 23 , wherein the cache controller receives a program counter for one of the programs, derives a logical tile address based on the program counter, and generates a physical tile address based on the logical tile address and the mapping of logical tiles to physical tiles.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2007
From: DU, YUN; JIAO, GUOFANG; YU, CHUN; HSU, DE DZWO
To: QUALCOMM INCORPORATED
Reel/Frame 018968/0587 →
Continuity (1)
Related Publication 20080028152A1 · Jan 31, 2008