Transmission of address translation type packets
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.
1 . An apparatus comprising:
a plurality of entries of a queue in a communication fabric, the plurality of entries comprising circuitry configured to temporarily store pending address translation requests from different requesters of a plurality of requesters, wherein each request includes at least one type of address translation request; and
control circuitry configured to:
allocate at least one entry of the plurality of entries to each virtual channel of a plurality of virtual channels, wherein each virtual channel corresponds to at least one type of address translation request; and
transmit one or more requests from allocated entries of the plurality of entries for transfer to via the communication fabric between the plurality of requesters and a destination, based at least in part on one or more selection criteria.
2 . The apparatus as recited in claim 1 , wherein the apparatus is a communication fabric configured to transfer data between one or more requesters and at least one shared resource, wherein the at least one shared resource comprises at least a portion of a table storing address translations.
3 . The apparatus as recited in claim 2 , wherein the communication fabric comprises one or more queues, wherein each queue is located in a path between a given requester and a destination storing the table.
4 . The apparatus as recited in claim 3 , wherein each queue comprises a physical channel that transfers the one or more requests selected for issue to the destination.
5 . The apparatus as recited in claim 2 , wherein each requester is one of a plurality of clients and peripheral devices with permission to access the at least one shared resource.
6 . The apparatus as recited in claim 1 , wherein the at least one type of address translation request is one of an address translation read access type and an address translation invalidation type.
7 . The apparatus as recited in claim 1 , wherein the control circuitry is further configured to maintain an entry of the plurality of entries as deallocated for a given virtual channel, responsive to no deallocated entries being available for the given virtual channel.
8 . The apparatus as recited in claim 1 , wherein the control circuitry is further configured to:
send a response indicating a wait to allocate a given request of a first type 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 deallocated entries of the plurality of entries are available for allocation.
9 . A method comprising:
storing, by processing circuitry, in a plurality of entries of a queue in a communication fabric, temporarily pending address translation requests from different requesters of a plurality of requesters, wherein each request includes at least one type of address translation request;
allocating, by the processing circuitry, at least one entry of the plurality of entries to each virtual channel of a plurality of virtual channels, wherein each virtual channel corresponds to at least one type of address translation request; and
transmitting, by the processing circuitry, one or more requests from allocated entries of the plurality of entries via the communication fabric to a destination, based at least in part on one or more selection criteria.
10 . The method as recited in claim 9 , further comprising transferring, by circuitry of a communication fabric, data between one or more requesters and at least one shared resource, wherein the at least one shared resource comprises at least a portion of a table storing address translations.
11 . The method as recited in claim 10 , wherein the communication fabric comprises one or more queues, and wherein each queue is located in a path between a given requester and a destination storing the table.
12 . The method as recited in claim 10 , wherein each requester is one of a plurality of clients and peripheral devices with permission to access the at least one shared resource.
13 . The method as recited in claim 9 , wherein the at least one type of address translation request is one of an address translation read access type and an address translation invalidation type.
14 . The method as recited in claim 9 , further comprising maintaining, by the processing circuitry, an entry of the plurality of entries as deallocated for a given virtual channel, responsive to no deallocated entries being available for the given virtual channel.
15 . A computing system comprising:
a plurality of requesters comprising circuitry configured to generate requests;
a first queue comprising:
a first plurality of entries, wherein each entry comprises circuitry configured to store a request from a first plurality of virtual channels, wherein each virtual channel of the first plurality of virtual channels is allocated for conveyance of address translation requests from different requesters of the plurality of requesters; and
first circuitry configured to:
allocate given entries of the first plurality of entries to each virtual channel of the first plurality of virtual channels, wherein each virtual channel corresponds to at least one type of address translation request; and
second circuitry configured to transmit, during one or more arbitration stages, one or more requests to a destination utilizing at least selection criteria of each of the given entries that are allocated.
16 . The computing system as recited in claim 15 , further comprising third circuitry configured to transfer data between a given requester and at least one shared resource, wherein the at least one shared resource comprises at least a portion of a table storing address translations.
17 . The computing system as recited in claim 15 , wherein the first queue comprises a physical channel that transfers the one or more requests selected for issue to the destination.
18 . The computing system as recited in claim 17 , wherein the first circuitry is configured to generate the first plurality of virtual channels based at least in part on performing a time division multiplexing operation using the physical channel.
19 . The computing system as recited in claim 15 , wherein the first circuitry is further configured to maintain an entry of the given entries as deallocated for a given virtual channel of the first plurality of virtual channels, responsive to no deallocated entries being available for the given virtual channel.
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 a second plurality of virtual channels, wherein each virtual channel of the second plurality of virtual channels is allocated to a response of an address translation request type for a single requester of the plurality of requesters; and
second circuitry configured to: allocate a set of entries of the second plurality of entries to each virtual channel of the second plurality of virtual channels; and
utilize, during each arbitration stage, selection criteria from the set of entries that are allocated.