Highly scalable accelerator
Embodiments of apparatuses, methods, and systems for highly scalable accelerators are described. In an embodiment, an apparatus includes an interface to receive a plurality of work requests from a plurality of clients and a plurality of engines to perform the plurality of work requests. The work requests are to be dispatched to the plurality of engines from a plurality of work queues. The work queues are to store a work descriptor per work request. Each work descriptor is to include all information needed to perform a corresponding work request.
1 . An apparatus, comprising:
at least one control register to store an address associated with a work queue, the work queue to store a plurality of work descriptors submitted by one or more clients;
circuitry to execute work indicated by a work descriptor of the plurality of work descriptors on behalf of the one or more clients, the work descriptor including a process address space identifier (PASID), an interrupt identifier, and a completion address;
wherein, to execute the work, the circuitry is to:
determine the PASID of a corresponding client of the plurality of clients;
validate a correspondence between the PASID and the interrupt identifier;
determine a corresponding entry of a message signaled interrupt (MSI) table in accordance with the interrupt identifier;
perform one or more operations in accordance with the work descriptor;
determine a memory location of a completion record based on the completion address; and
store a completion status in the completion record.
2 . The apparatus of claim 1 , wherein the completion record is to indicate that processing of the work descriptor was successful and/or is to indicate an error associated with processing of the work descriptor.
3 . The apparatus of claim 2 , wherein the error associated with processing of the work descriptor comprises a page fault.
4 . The apparatus of claim 3 , wherein the completion record is to include an indication of an address at which the page fault occurred.
5 . The apparatus of claim 1 , wherein a first work queue is to be allocated in the memory to store a first subset of the work descriptors and a second work queue is to be allocated in the memory to store a second subset of the work descriptors.
6 . The apparatus of claim 5 , wherein the work descriptor is to be stored in the first work queue and wherein the first work queue is dedicated to the corresponding client.
7 . The apparatus of claim 6 , wherein the second work queue is to be shared by multiple clients of the plurality of clients, the second work queue to have at least a first work submission portal and a second work submission portal.
8 . The apparatus of claim 7 , wherein the first work submission portal is to receive work requests having a lower priority than work requests to be received by the second submission portal.
9 . The apparatus of claim 7 , wherein the first work submission portal is configured to accept work requests only up to a threshold amount of the capacity of the second work queue.
10 . The apparatus of claim 1 , further comprising:
a processor comprising a plurality of cores coupled to the circuitry to execute work, wherein software is to be executed by one or more cores to implement the plurality of clients.
11 . The apparatus of claim 1 , wherein the work descriptor is to include one or more entries to indicate results of a previous work request.
12 . A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform operations, comprising:
storing an address associated with a work queue in a control register, the work queue to store work descriptors submitted by one or more clients;
executing work indicated by the work descriptors on behalf of the one or more clients, wherein executing the work comprises:
determining a process address space identifier (PASID) of a corresponding client of the plurality of clients;
validating a correspondence between the PASID and the interrupt identifier;
determining a corresponding entry of a message signaled interrupt (MSI) table in accordance with an interrupt identifier provided in the work descriptor;
executing work indicated by the work descriptor;
determining a memory location of a completion record based on a completion address provided in the work descriptor; and
storing a completion status in the completion record.
13 . The non-transitory machine-readable medium of claim 12 , wherein the completion record is to indicate that processing of the work descriptor was successful and/or is to indicate an error associated with processing of the work descriptor.
14 . The non-transitory machine-readable medium of claim 13 , wherein the error associated with processing of the work descriptor comprises a page fault.
15 . The non-transitory machine-readable medium of claim 14 , wherein the completion record is to include an indication of an address at which the page fault occurred.
16 . The non-transitory machine-readable medium of claim 12 , wherein a first work queue is to be allocated in the memory to store a first subset of the work descriptors and a second work queue is to be allocated in the memory to store a second subset of the work descriptors.
17 . The non-transitory machine-readable medium of claim 16 , wherein the work descriptor is to be stored in the first work queue and wherein the first work queue is dedicated to the corresponding client.
18 . The non-transitory machine-readable medium of claim 17 , wherein the second work queue is to be shared by multiple clients of the plurality of clients, the second work queue to have at least a first work submission portal and a second work submission portal.
19 . The non-transitory machine-readable medium of claim 18 , wherein the first work submission portal is to receive work requests having a lower priority than work requests to be received by the second submission portal.
20 . The non-transitory machine-readable medium of claim 18 , wherein the first work submission portal is configured to accept work requests only up to a threshold amount of the capacity of the second work queue.