IP Library › Granted Patent US 11,994,996
Granted Patent B2
US 11,994,996 · App. 18/334,143 · Granted May 28, 2024

Transmission of address translation type packets

Inventor: Kostantinos Danny Christidis (Toronto, CA)
Assignee: ATI Technologies ULC
G06F12/0873G06F12/1458G06F12/1475H04L41/08H04L49/90H04L61/25H04L12/4641
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 11,994,996
App. No.
18/334,143
Granted
May 28, 2024
Kind
B2
Abstract

Apparatuses, systems and methods for routing requests and responses targeting a shared resource. A queue in a communication fabric is located in a path between the requesters and a shared resource. In some embodiments, the shared resource is a shared address translation cache stored in an endpoint. The physical channel between the queue and the shared resource supports multiple virtual channels. The queue assigns at least one entry to each virtual channel of a group of virtual channels where the group includes a virtual channel for each address translation request type from a single requester of the multiple requesters. When the at least one entry for a given requester is de-allocated, the queue allocates this entry only with requests from the assigned virtual channel even if the empty entry is the only available entry of the queue.

Claims (55)

1. An apparatus comprising:

a plurality of entries, each entry configured to store a request corresponding to one of a first group of virtual channels and a second group of virtual channels different from the first group of virtual channels, wherein each virtual channel of the second group of virtual channels is assigned for conveyance of address translation requests from different requesters of a plurality of requesters; and

circuitry configured to:

assign given entries of the plurality of entries to each virtual channel of the second group of virtual channels; and

select one or more requests to issue from the plurality of entries utilizing at least selection criteria of each of the assigned given entries that is allocated.

2. The apparatus as recited in claim 1 , wherein the circuitry is further configured to select at least one request from the assigned given entries that are allocated each time requests are issued from the plurality of entries.

3. The apparatus as recited in claim 1 , wherein the address translation type of request is an access request that targets a copy of at least a portion of a shared page table storing address translations.

4. The apparatus as recited in claim 3 , wherein the address translation type of request is an invalidation request that targets a copy of at least a portion of a shared page table storing address translations.

5. The apparatus as recited in claim 3 , wherein a requester assigned a virtual channel of the second group of virtual channels is one of a plurality of clients and peripheral devices with permission to access the shared page table.

6. The apparatus as recited in claim 3 , wherein, based at least in part on a determination that an address space that comprises addresses of the address translations is redefined, the circuitry is further configured to:

redefine the second group of virtual channels; and

reassign at least one of the plurality of entries to each virtual channel of the redefined second group.

7. The apparatus as recited in claim 1 , wherein the circuitry is further configured to maintain an entry of the assigned given entries as deallocated, in response to determining that:

the entry of the assigned given entries is deallocated; and

there are no pending requests of a virtual channel of the second group assigned to the entry of the assigned given entries.

8. The apparatus as recited in claim 1 , wherein the circuitry is further configured to:

receive an allocation request that indicates a first request of a first type that is different from the address translation type is ready to be allocated in the plurality of entries; and

send a response indicating a wait to allocate the first request based at least in part on a determination that:

no entry of the plurality of entries assigned to requests of the first type is available for allocation; and

no unassigned entries of the plurality of entries are available for allocation.

9. A method comprising:

storing, in each entry of a plurality of entries of a queue, a request from one of a first group of virtual channels and a second group of virtual channels different from the first group of virtual channels, wherein each virtual channel of the second group of virtual channels is assigned for conveyance of address translation requests from different requesters of a plurality of requesters;

assigning, by circuitry of the queue, given entries of the plurality of entries to each virtual channel of the second group of virtual channels; and

selecting, by the circuitry of the queue, one or more requests to issue from the plurality of entries utilizing at least selection criteria of each of the assigned given entries that is allocated.

10. The method as recited in claim 9 , further comprising selecting at least one request from the assigned given entries that are allocated each time requests are issued from the plurality of entries.

11. The method as recited in claim 9 , wherein the address translation type of request is an access request that targets a copy of at least a portion of a shared page table storing address translations.

12. The method as recited in claim 11 , wherein a requester assigned a virtual channel of the second group of virtual channels is one of a plurality of clients and peripheral devices with permission to access the shared page table.

13. The method as recited in claim 11 , wherein, based at least in part on a determination that an address space that comprises addresses of the address translations is redefined, the method further comprises:

redefining the second group of virtual channels; and

reassigning at least one of the plurality of entries to each virtual channel of the redefined second group.

14. The method as recited in claim 9 , further comprising maintaining an entry of the assigned given entries as deallocated, in response to determining that:

the entry of the assigned given entries is deallocated; and

there are no pending requests of a virtual channel of the second group assigned to the entry of the assigned given entries.

15. A computing system comprising:

a plurality of requesters configured to generate requests;

a first queue, wherein the first queue comprises:

a first plurality of entries, each entry configured to store a request from one of a first group of virtual channels and a second group of virtual channels different from the first group of virtual channels, wherein each virtual channel of the second group of virtual channels is assigned for conveyance of address translation requests from different requesters of a plurality of requesters; and

first circuitry;

wherein the first circuitry is configured to:

assign given entries of the plurality of entries to each virtual channel of the second group of virtual channels; and

select one or more requests to issue from the plurality of entries utilizing at least selection criteria of each of the assigned given entries that is allocated.

16. The computing system as recited in claim 15 , wherein the first circuitry is further configured to select at least one request from the assigned given entries that are allocated each time requests are issued from the plurality of entries.

17. The computing system as recited in claim 15 , wherein the address translation type of request is an access request that targets a copy of at least a portion of a shared page table storing address translations.

18. The computing system as recited in claim 17 , wherein, based at least in part on a determination that an address space that comprises addresses of the address translations is redefined, the circuitry is further configured to:

redefine the second group of virtual channels; and

reassign at least one of the plurality of entries to each virtual channel of the redefined second group.

19. The computing system as recited in claim 15 , wherein the first circuitry is further configured to maintain an entry of the assigned given entries as deallocated, in response to determining that:

the entry of the assigned given entries is deallocated; and

there are no pending requests of a virtual channel of the second group assigned to the entry of the assigned given entries.

20. The computing system as recited in claim 15 , wherein the computing system further comprises a second queue, the second queue comprising:

a second plurality of entries, each entry configured to store a response to one of a third group of virtual channels and a fourth group of virtual channels, wherein each virtual channel of the fourth group is assigned to a response of an address translation type for a single requester of a plurality of requesters; and

second circuitry;

wherein the second circuitry is configured to:

assign a set of entries of the second plurality of entries to each virtual channel of the fourth group; and

utilize, during each arbitration stage, selection criteria from the assigned set of entries that are allocated.

Continuity (2)
Continuation 17357838 · Jun 24, 2021
Related Publication 20230342307A1 · Oct 26, 2023