IP Library › Granted Patent US 9,448,935
Granted Patent B2
US 9,448,935 · App. 14/037,212 · Granted Sep 20, 2016

Surface resource view hash for coherent cache operations in texture processing hardware

Inventors: Jeff Bolz (Austin, TX); Patrick R. Brown (Wake Forest, NC); Steven J. Heinrich (Madison, AL); Dale L. Kirkland (Madison, AL); Joel McCormack (Boulder, CO)
Assignee: NVIDIA Corporation
G06F12/0815G06F12/1018G06F12/128G06F2212/455Y02B60/1225
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,448,935
App. No.
14/037,212
Granted
Sep 20, 2016
Kind
B2
Abstract

Techniques are disclosed for performing memory access operations. A texture unit receives a memory access operation that includes a tuple associated with a first view in a plurality of views. The texture unit retrieves a first hash value associated with a first texture header in a plurality of texture headers, where the first texture header is related to the first view. The texture unit retrieves a second hash value associated with a second texture header in the plurality of texture headers, where the second texture header is related to a second view. The texture unit determines whether the first view is potentially aliased with the second view, based on the first and second hash values. If so, then the texture unit invalidates a cache entry in a cache memory associated with the second texture header. Otherwise, the texture unit maintains the cache entry.

Claims (83)

1. A method for performing memory access operations, the method comprising:

retrieving a first hash value associated with a first texture header in a plurality of texture headers, wherein the first texture header is related to a first view in a plurality of views;

retrieving a second hash value associated with a second texture header in the plurality of texture headers, wherein the second texture header is related to a second view in the plurality of views;

determining whether at least a portion of the first view is potentially aliased with at least a portion of the second view, based on the first hash value and the second hash value;

if at least a portion of the first view is potentially aliased with at least a portion of the second view, then invalidating a first cache entry in a cache memory associated with the second texture header, or

if no portion of the first view is potentially aliased with any portion of the second view, then maintaining the first cache entry associated with the second texture header.

2. The method of claim 1 , wherein at least a portion of the first view is potentially aliased with at least a portion of the second view when the first hash value is equal to the second hash value.

3. The method of claim 1 , wherein the first hash value indicates that the first view is not aliased to any other view in the plurality of views.

4. The method of claim 1 , further comprising:

retrieving a third hash value associated with a third texture header in the plurality of texture headers, wherein the third texture header is related to a third view in the plurality of views;

determining that at least a portion of the first view is potentially aliased with at least a portion of the third view in a manner that causes no incoherency in the cache memory, based on at least one of the first hash value, the third hash value, the first texture header, and the third texture header; and

maintaining the first cache entry associated with the third texture header.

5. The method of claim 1 , wherein the first hash value comprises a multi-bit field.

6. The method of claim 1 , wherein the first texture header comprises at least one of a texture identifier, a view type, a data size, a width, a height, a depth, a quantity of layers, a hash value, and a base address.

7. The method of claim 1 , wherein a first tuple included in a first memory access operation associated with the first view comprises at least one of a texture identifier, an index, an x-coordinate, a y-coordinate, a z-coordinate, and a layer number.

8. The method of claim 1 , further comprising receiving a first memory access operation associated with the first view; and receiving a second memory access operation associated with a third view in the plurality of views.

9. The method of claim 8 , further comprising:

retrieving a third hash value associated with a third texture header in the plurality of texture headers, wherein the third texture header is related to the third view;

determining whether all memory access operations related to the third view are to be treated as uncached, based on the third hash value; and

if memory access operations related to the third view are to be treated as uncached, then updating only a first memory location, wherein the first memory location is specified by the second memory access operation, or

if memory access operations related to the third view are not to be treated as uncached, then:

updating the first memory location; and

updating a second memory location in the cache memory, wherein the second memory location corresponds to the first memory location.

10. The method of claim 8 , further comprising:

retrieving a third hash value associated with a third texture header in the plurality of texture headers, wherein the third texture header is related to the third view;

retrieving a fourth hash value associated with a fourth texture header in the plurality of texture headers, wherein the fourth texture header is related to a fourth view in the plurality of views;

determining that at least a portion of the third view is potentially aliased with at least a portion of the fourth view, based on the third hash value and the fourth hash value;

determining that the second memory access operation causes no incoherency in the cache memory, based on at least one element in each of the second tuple and the fourth texture header; and

maintaining the first cache entry associated the fourth texture header.

11. The method of claim 8 , further comprising:

retrieving a third hash value associated with a third texture header in the plurality of texture headers, wherein the third texture header is related to the third view;

retrieving a fourth hash value associated with a fourth texture header in the plurality of texture headers, wherein the fourth texture header is related to a fourth view in the plurality of views;

determining that at least a portion of the third view is potentially aliased with at least a portion of the fourth view, based on the third hash value and the fourth hash value;

retrieving a second cache entry associated with the fourth view;

retrieving a third tuple associated with the second cache entry;

determining that the second memory access operation causes no incoherency in the cache memory, based on at least one element in the second tuple and at least one element in the third tuple; and

maintaining the second cache entry.

12. A subsystem comprising:

a texture unit configured to:

receive a first memory access operation that includes a first tuple associated with a first view in a plurality of views;

retrieve a first hash value associated with a first texture header in a plurality of texture headers, wherein the first texture header is related to the first view;

retrieve a second hash value associated with a second texture header in the plurality of texture headers, wherein the second texture header is related to a second view in the plurality of views;

determine whether at least a portion of the first view is potentially aliased with at least a portion of the second view, based on the first hash value and the second hash value;

if at least a portion of the first view is potentially aliased with at least a portion of the second view, then invalidate a first cache entry in a cache memory associated with the second texture header, or

if no portion of the first view is potentially aliased with any portion of the second view, then maintain the first cache entry associated with the second texture header.

13. The subsystem of claim 12 , wherein at least a portion of the first view is potentially aliased with at least a portion of the second view when the first hash value is equal to the second hash value.

14. The subsystem of claim 12 , wherein the first hash value indicates that the first view is not aliased to any other view in the plurality of views.

15. The subsystem of claim 12 , wherein the texture unit is further configured to:

retrieve a third hash value associated with a third texture header in the plurality of texture headers, wherein the third texture header is related to a third view in the plurality of views;

determine that at least a portion of the first view is potentially aliased with at least a portion of the third view in a manner that causes no incoherency in the cache memory, based on at least one of the first hash value, the third hash value, the first texture header, and the third texture header; and

maintain the first cache entry associated with the third texture header.

16. The subsystem of claim 12 , wherein the texture unit is further configured to:

receive a second memory access operation that includes a second tuple associated with a third view in the plurality of views;

retrieve a third hash value associated with a third texture header in a plurality of texture headers, wherein the third texture header is related to the third view;

determine whether all memory access operations related to the third view are to be treated as uncached, based on the third hash value; and

if memory access operations related to the third view are to be treated as uncached, then update only a first memory location, wherein the first memory location is specified by the second memory access operation, or

if memory access operations related to the third view are not to be treated as uncached, then:

update the first memory location; and

update a second memory location in the cache memory, wherein the second memory location corresponds to the first memory location.

17. The subsystem of claim 12 , wherein the texture unit is further configured to:

receive a second memory access operation that includes a second tuple associated with a third view in the plurality of views;

retrieve a third hash value associated with a third texture header in a plurality of texture headers, wherein the third texture header is related to the third view;

retrieve a fourth hash value associated with a fourth texture header in the plurality of texture headers, wherein the fourth texture header is related to a fourth view in the plurality of views;

determine that at least a portion of the third view is potentially aliased with at least a portion of the fourth view, based on the third hash value and the fourth hash value;

determine that the second memory access operation causes no incoherency in the cache memory, based on at least one element in each of the second tuple and the fourth texture header; and

maintain the first cache entry associated the fourth texture header.

18. The subsystem of claim 12 , wherein the texture unit is further configured to:

receive a second memory access operation that includes a second tuple associated with a third view in the plurality of views;

retrieve a third hash value associated with a third texture header in a plurality of texture headers, wherein the third texture header is related to the third view;

retrieve a fourth hash value associated with a fourth texture header in the plurality of texture headers, wherein the fourth texture header is related to a fourth view in the plurality of views;

determine that at least a portion of the third view is potentially aliased with at least a portion of the fourth view, based on the third hash value and the fourth hash value;

retrieve a second cache entry associated with the fourth view;

retrieve a third tuple associated with the second cache entry;

determine that the second memory access operation causes no incoherency in the cache memory, based on at least one element in the second tuple and at least one element in the third tuple; and

maintain the second cache entry.

19. The subsystem of claim 12 , wherein the first hash value comprises a multi-bit field.

20. The subsystem of claim 12 , wherein the first texture header comprises at least one of a texture identifier, a view type, a data size, a width, a height, a depth, a quantity of layers, a hash value, and a base address.

21. A system comprising:

a processor; and

a texture unit configured to:

retrieve a first hash value associated with a first texture header in a plurality of texture headers, wherein the first texture header is related to a first view in a plurality of views;

retrieve a second hash value associated with a second texture header in the plurality of texture headers, wherein the second texture header is related to a second view in the plurality of views; and

determine whether at least a portion of the first view is potentially aliased with at least a portion of the second view based on the first hash value and the second hash value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2013
From: BOLZ, JEFFREY; BROWN, PATRICK R.; HEINRICH, STEVEN J.; KIRKLAND, DALE L.; MCCORMACK, JOEL
To: NVIDIA CORPORATION
Reel/Frame 031299/0481 →
Continuity (1)
Related Publication 20150089151A1 · Mar 26, 2015