IP Library › Granted Patent US 9,047,686
Granted Patent B2
US 9,047,686 · App. 13/024,579 · Granted Jun 2, 2015

Data storage address assignment for graphics processing

Inventors: Colin Sharp (Cardiff, CA); Zachary Aaron Pfeffer (Austin, TX); Eduardus A. Metz (Markham, CA); Maurice Ribble (Shrewsbury, MA)
Assignee: QUALCOMM Incorporated
G06T1/60G06F3/064G06F12/0802
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 9,047,686
App. No.
13/024,579
Granted
Jun 2, 2015
Kind
B2
Abstract

In general, aspects of this disclosure describe example techniques for efficient storage of data of various data types for graphics processing. In some examples, a processing unit may assign first and second contiguous range of addresses for a first and second data type, respectively. The processing unit may store at least one of graphics data of the first or second data type or addresses of the graphics data of the first or second data type within blocks whose addresses are within the first and second contiguous range of addresses, respectively. The processing unit may store, in cache lines of a cache, the graphics data of the first data type, and the graphics data of the second data type.

Claims (60)

1. A method comprising:

assigning, with a processing unit, a first contiguous range of addresses for a first data type of a plurality of data types for graphics processing, and assigning a second contiguous range of addresses for a second data type of the plurality of data types for graphics processing, wherein the first and second data types are different data types, and wherein the plurality of data types comprise at least one of texture data, vertex data, instructions, constants, or pixel data;

storing, with the processing unit, at least one of graphics data of the first data type or addresses of the graphics data of the first data type within blocks whose addresses are within the first contiguous range of addresses;

storing, with the processing unit, at least one of graphics data of the second data type or addresses of the graphics data of the second data type within blocks whose addresses are within the second contiguous range of addresses;

storing, in a first field of each of a first set of a plurality of cache lines of a common memory cache, an address within the first contiguous range of addresses, and storing, in a second field of the first set of the plurality of cache lines of the common memory cache, the graphics data of the first data type;

storing, in a first field of each of a second set of the plurality of cache lines of the common memory cache, an address within the second contiguous range of addresses, and storing, in a second field of the second set of the plurality of cache lines of the common memory cache, the graphics data of the second data type;

if the graphics data of the first data type changed, comparing addresses stored in a first field of each of the first and second sets of the plurality of cache lines to the first contiguous range of addresses to determine which cache lines store graphics data of the first data type; and

invalidating the determined cache lines that store graphics data of the first data type to indicate that the graphics data of the first data type is not current.

2. The method of claim 1 , wherein the first and second contiguous ranges of addresses comprises at least one of first and second contiguous ranges of storage device addresses and first and second contiguous ranges of input/output memory management unit (IOMMU) addresses.

3. The method of claim 1 , wherein the blocks whose addresses are within the first contiguous range of addresses and the blocks whose addresses are within the second contiguous range of addresses comprise at least one of storage blocks within a storage device and address blocks within an input/output memory management unit (IOMMU).

4. The method of claim 1 , further comprising:

receiving a request for at least one of the graphics data of the first data type and the graphics data of the second data type, wherein the request includes an address for the first data type or the second data type;

determining whether the address for the first data type or second data type is within the first contiguous range of address or the second contiguous range of address, respectively; and

processing the request based on the determination.

5. An apparatus comprising:

a common memory cache that includes a plurality of cache lines; and

a processing unit configured to:

assign a first contiguous range of addresses for a first data type of a plurality of data types for graphics processing, and assign a second contiguous range of addresses for a second data type of the plurality of data types for graphics processing, wherein the first and second data types are different data types, and wherein the plurality of data types comprise at least one of texture data, vertex data, instructions, constants, or pixel data;

store at least one of graphics data of the first data type or addresses of the graphics data of the first data type within blocks whose addresses are within the first contiguous range of addresses, and store at least one of graphics data of the second data type or addresses of the graphics data of the second data type within blocks whose addresses are within the second contiguous range of addresses;

store, in a first field of each of a first set of the plurality of cache lines of the common memory cache, an address within the first contiguous range of addresses, and store, in a second field of the first set of the plurality of cache lines of the common memory cache, the graphics data of the first data type;

store, in a first field of each of a second set of the plurality of cache lines of the common memory cache, an address within the second contiguous range of addresses, and store, in a second field of the second set of the plurality of cache lines of the common memory cache, the graphics data of the second data type;

if the graphics data of the first data type changed, compare addresses stored in a first field of each of the first and second sets of the plurality of cache lines to the first contiguous range of addresses to determine which cache lines store graphics data of the first data type; and

invalidate the determined cache lines that store graphics data of the first data type to indicate that the graphics data of the first data type is not current.

6. The apparatus of claim 5 , wherein the processing unit comprises at least one of a processor and a graphics processing unit (GPU).

7. The apparatus of claim 5 , wherein the first and second contiguous ranges of addresses comprises at least one of first and second contiguous ranges of storage device addresses and first and second contiguous ranges of input/output memory management unit (IOMMU) addresses.

8. The apparatus of claim 5 , further comprising:

a storage device,

wherein the blocks whose addresses are within the first contiguous range of addresses and the blocks whose addresses are within the second contiguous range of addresses comprise storage blocks within the storage device.

9. The apparatus of claim 5 , further comprising:

an input/output memory management unit (IOMMU),

wherein the blocks whose addresses are within the first contiguous range of addresses and the blocks whose addresses are within the second contiguous range of addresses comprise address blocks within the IOMMU.

10. The apparatus of claim 5 , wherein the processing unit receives a request for at least one of the data of the first data type and the data of the second data type, wherein the request includes an address for the first data type or the second data type, wherein the processing unit determines the address for the first data type or second data type is within the first contiguous range of address or the second contiguous range of address, respectively, and wherein the processing unit processes the request based on the determination.

11. A non-transitory computer-readable storage medium comprising instructions that cause one or more processing units to:

assign a first contiguous range of addresses for a first data type of a plurality of data types for graphics processing, and assign a second contiguous range of addresses for a second data type of the plurality of data types for graphics processing, wherein the first and second data types are different data types, and wherein the plurality of data types comprise at least one of texture data, vertex data, instructions, constants, or pixel data;

store at least one of graphics data of the first data type or addresses of the graphics data of the first data type within blocks whose addresses are within the first contiguous range of addresses;

store at least one of graphics data of the second data type or addresses of the graphics data of the second data type within blocks whose addresses are within the second contiguous range of addresses;

store, in a first field of each of a first set of a plurality of cache lines of a common memory cache, an address within the first contiguous range of addresses, and store, in a second field of the first set of the plurality of cache lines of the common memory cache, the graphics data of the first data type;

store, in a first field of each of a second set of the plurality of cache lines of the common memory cache, an address within the second contiguous range of addresses, and store, in a second field of the second set of the plurality of cache lines of the common memory cache, the graphics data of the second data type;

if the graphics data of the first data type changed, compare addresses stored in a first field of each of the first and second sets of the plurality of cache lines to the first contiguous range of addresses to determine which cache lines store graphics data of the first data type; and

invalidate the determined cache lines that store graphics data of the first data type to indicate that the graphics data of the first data type is not current.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the first and second contiguous ranges of addresses comprises at least one of first and second contiguous ranges of storage device addresses and first and second contiguous ranges of input/output memory management unit (IOMMU) addresses.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the blocks whose addresses are within the first contiguous range of addresses and the blocks whose addresses are within the second contiguous range of addresses comprise at least one of storage blocks within a storage device and address blocks within an input/output memory management unit (IOMMU).

14. The non-transitory computer-readable storage medium of claim 11 , further comprising:

instructions that cause the one or more processing units to receive a request for at least one of the graphics data of the first data type and the graphics data of the second data type, wherein the request includes an address for the first data type or the second data type;

instructions that cause the one or more processing units to determine whether the address for the first data type or second data type is within the first contiguous range of address or the second contiguous range of address, respectively; and

instructions that cause the one or more processing units to process the request based on the determination.

15. An apparatus comprising:

means for assigning a first contiguous range of addresses for a first data type of a plurality of data types for graphics processing, and assigning a second contiguous range of addresses for a second data type of the plurality of data types for graphics processing, wherein the first and second data types are different data types, and wherein the plurality of data types comprise at least one of texture data, vertex data, instructions, constants, or pixel data;

means for storing at least one of graphics data of the first data type or addresses of the graphics data of the first data type within blocks whose addresses are within the first contiguous range of addresses;

means for storing at least one of graphics data of the second data type or addresses of the graphics data of the second data type within blocks whose addresses are within the second contiguous range of addresses;

means for storing, in a first field of each of a first set of a plurality of cache lines of a common memory cache, an address within the first contiguous range of addresses, and storing, in a second field of the first set of the plurality of cache lines of the common memory cache, the graphics data of the first data type;

means for storing, in a first field of each of a second set of the plurality of cache lines of the common memory cache, an address within the second contiguous range of addresses, and storing, in a second field of the second set of the plurality of cache lines of the common memory cache, the graphics data of the second data type;

means for comparing addresses stored in a first field of each of the first and second sets of the plurality of cache lines to the first contiguous range of addresses to determine which cache lines store graphics data of the first data type if the graphics data of the first data type changed; and

means for invalidating the determined cache lines that store graphics data of the first data type to indicate that the graphics data of the first data type is not current.

16. The apparatus of claim 15 , wherein the first and second contiguous ranges of addresses comprises at least one of first and second contiguous ranges of storage device addresses and first and second contiguous ranges of input/output memory management unit (IOMMU) addresses.

17. The apparatus of claim 15 , wherein the blocks whose addresses are within the first contiguous range of addresses and the blocks whose addresses are within the second contiguous range of addresses comprise at least one of storage blocks within a storage device and address blocks within an input/output memory management unit (IOMMU).

18. The apparatus of claim 15 , further comprising:

means for receiving a request for at least one of the graphics data of the first data type and the graphics data of the second data type, wherein the request includes an address for the first data type or the second data type;

means for determining whether the address for the first data type or second data type is within the first contiguous range of address or the second contiguous range of address, respectively; and

means for processing the request based on the determination.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2011
From: SHARP, COLIN; PFEFFER, ZACHARY AARON; METZ, EDUARDUS A.; RIBBLE, MAURICE
To: QUALCOMM INCORPORATED
Reel/Frame 025786/0615 →
Continuity (1)
Related Publication 20120206466A1 · Aug 16, 2012