IP Library › Granted Patent US 10,733,688
Granted Patent B2
US 10,733,688 · App. 15/716,280 · Granted Aug 4, 2020

Area-efficient implementations of graphics instructions

Inventors: Joydeep Ray (Folsom, CA); Prasoonkumar Surti (Folsom, CA); Abhishek R. Appu (El Dorado Hills, CA); Altug Koker (El Dorado Hills, CA); Vasanth Ranganathan (El Dorado Hills, CA)
Assignee: INTEL CORPOATION
G06T1/20G06F9/30043G06F12/0875G06F12/1045G06T1/60G06T15/005G06F2212/455G06F2212/68
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 10,733,688
App. No.
15/716,280
Granted
Aug 4, 2020
Kind
B2
Abstract

Embodiments are generally directed to area-efficient implementations of graphics instructions. An embodiment of an apparatus includes a graphics subsystem including one or more of a first logic for processing of memory read-return data for single-instruction-multiple-data instructions; a second logic for assembly of memory read-return data for media block instructions into shader register format; or a third logic to remap scatter or gather instructions to untyped surface instruction types. An embodiment of an apparatus includes a graphics subsystem including a translation lookaside buffer (TLB) and a data port controller to control the TLB, the data port controller including an incoming request pipeline to receive an incoming request with virtual address and generate a response, an incoming response pipeline to receive the response and generate a cache request, and an invalidation flow pipeline.

Claims (58)

1. An apparatus comprising a graphics subsystem, the graphics subsystem including:

a graphics data port, the graphics data port including:

a translation lookaside buffer (TLB); and

a data port controller to control the TLB, the data port controller including:

an incoming request pipeline to receive and process incoming translation requests, including a first incoming translation request with virtual address, the first incoming translation request being received from a context having a plurality of different page sizes including a first page size and a second page size, the first page size being larger than the second page size, and, upon a miss in the TLB for the first incoming translation request, generate a cache request,

an incoming response pipeline to receive and process a response to the cache request, and

an invalidation flow pipeline for translation requests;

wherein the data port controller is to provide a fill entry allocation for the TLB upon receiving the response to the cache request, the response to the cache request including a certain page size of the plurality of page sizes, the page size of the response being unavailable to the graphics data port until the response to the cache request is received.

2. The apparatus of claim 1 , wherein the incoming request pipeline includes:

a first stage to receive incoming translation requests and, upon determining there is a hit in the TLB for an incoming translation request, determine a new least frequently used (LRU) value and physical address (PA) array index;

a second stage to write the incoming translation requests into a pending queue in virtual address content addressable memory (CAM); and

a third stage to arbitrate pending queue entries in the pending queue that are ready to be scheduled and to select an oldest request that requires address translation for the cache request.

3. The apparatus of claim 1 , wherein the incoming response pipeline includes:

a first stage to receive the responses to cache requests, to determine if a tag for a received response to a cache request matches one or more pending queue entries, and, upon determining that the tag matches with any pending queue entry, to update the matching queue entry's physical address and status based on the received response;

a second stage to update the pending queue entries, physical address, and status of each pending queue entry being updated based up on any match that is identified by the first stage; and

a third stage to perform pending queue arbitration to select a cache request for processing.

4. The apparatus of claim 3 , wherein the incoming response pipeline further includes:

a fourth stage to read out a virtual address from one of the one or more matching entries from the first stage for use in a TLB matching operation, wherein, for a miss in the TLB, a victim entry is to be selected for eviction; and

a fifth stage to perform virtual address and physical address array update based on the TLB matching operation, wherein, for a hit on the TLB, a least recently used (LRU) value is updated and, for a miss in the TLB, a physical address and tag is written into the victim entry.

5. The apparatus of claim 4 , wherein:

the first stage of the incoming response pipeline is to operate in a first clock cycle;

the second and fourth stages of the incoming response pipeline are to operate in a second clock cycle; and

the third and fifth stages of the incoming response pipeline are to operate in a third clock cycle.

6. The apparatus of claim 1 , wherein the received response to the cache request is derived from data stored in a lower level TLB.

7. A non-transitory computer-readable storage medium having stored thereon data representing sequences of instructions that, when executed by a processor, cause the processor to perform operations comprising:

receiving and processing incoming translation requests, including a first incoming translation request with virtual address, at a graphics data port, the first incoming translation request being received from a context having a plurality of different page sizes including a first page size and a second page size, the first page size being larger than the second page size, the graphics data port including a translation lookaside buffer (TLB) and a data port controller to control the TLB;

upon a miss in the TLB for the first incoming translation request, generating a cache request for the translation request;

receiving and processing a response to the cache request;

providing a fill entry allocation for the TLB upon receiving the response to the cache request, the response to the cache request including a certain page size of the plurality of page sizes, the page size of the response being unavailable to the graphics data port until the response to the cache request is received; and

performing an invalidation process for one or more translation requests.

8. The medium of claim 7 , wherein receiving and processing the incoming translation requests includes:

receiving the incoming translation requests, and, upon determining there is a hit in the TLB for an incoming translation request, determining a new least frequently used (LRU) value and physical address (PA) array index;

writing the incoming translation requests into a pending queue in virtual address content addressable memory (CAM); and

arbitrating pending queue entries in the pending queue that are ready to be scheduled, and selecting an oldest request that requires address translation for the cache request.

9. The medium of claim 8 , wherein receiving and processing responses to cache requests includes:

receiving a response to a first cache request, determining if a tag for the received response matches one or more entries in the pending queue, and, upon determining that the tag matches with any pending queue entry, to update the matching entry's physical address and status based on the received response;

updating the pending queue entries, the physical address and status of each pending queue entry being updated based upon any match that is identified with the tag for the response; and

performing arbitration in the pending queue to select a cache request for processing.

10. The medium of claim 9 , wherein receiving and processing responses to cache requests further includes:

reading out a virtual address from one of the one or more matching entries for use in a TLB matching operation, wherein, for a miss in the TLB, a victim entry is to be selected for eviction; and

performing virtual address and physical address array update based on the TLB matching operation, wherein, for a hit on the TLB, a least recently used (LRU) value is updated and, for a miss in the TLB, a physical address and tag is written into the victim entry.

11. A method comprising:

receiving and processing incoming translation requests, including a first incoming translation request with virtual address, at a graphics data port, the first incoming translation request being received from a context having a plurality of different page sizes including a first page size and a second page size, the first page size being larger than the second page size, the data port including a translation lookaside buffer (TLB) and a data port controller to control the TLB;

upon a miss in the TLB for the first incoming translation request, generating a cache request for the translation request;

receiving and processing a response to the cache request;

providing a fill entry allocation for the TLB upon receiving the response to the cache request, the response to the cache request including a certain page size of the plurality of page sizes, the page size of the response being unavailable to the graphics data port until the response to the cache request is received; and

performing an invalidation process for one or more translation requests.

12. The method of claim 11 , wherein receiving and processing the incoming translation requests includes:

receiving the incoming translation requests, and, upon determining there is a hit in the TLB for an incoming translation request, determining a new least frequently used (LRU) value and physical address (PA) array index;

writing the incoming translation requests into a pending queue in virtual address content addressable memory (CAM); and

arbitrating pending queue entries in the pending queue that are ready to be scheduled, and selecting an oldest request that requires address translation for the cache request.

13. The method of claim 12 , wherein receiving and processing responses to cache requests includes:

receiving a response to a first cache request, determining if a tag for the received response matches one or more entries in the pending queue, and, upon determining that the tag matches with any pending queue entry, to update the matching entry's physical address and status based on the received response;

updating the pending queue entries, the physical address and status of each pending queue entry being updated based upon any match that is identified with the tag for the response; and

performing arbitration in the pending queue to select a cache request for processing.

14. The method of claim 13 , wherein receiving and processing responses to cache requests further includes:

reading out a virtual address from one of the one or more matching entries for use in a TLB matching operation, wherein, for a miss in the TLB, a victim entry is to be selected for eviction; and

performing virtual address and physical address array update based on the TLB matching operation, wherein, for a hit on the TLB, a least recently used (LRU) value is updated and, for a miss in the TLB, a physical address and tag is written into the victim entry.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2017
From: RANGANATHAN, VASANTH
To: INTEL CORPORATION
Reel/Frame 043927/0448 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2017
From: RAY, JOYDEEP; SURTI, PRASOONKUMAR; APPU, ABHISHEK R.; KOKER, ALTUG
To: INTEL CORPORATION
Reel/Frame 043706/0643 →
Continuity (1)
Related Publication 20190096024A1 · Mar 28, 2019
Cited By (1)
US 12,625,814