IP Library Granted Patent US 10,983,833
Granted Patent B2
US 10,983,833 · App. 16/527,441 · Granted Apr 20, 2021

Virtualized and synchronous access to hardware accelerators

Inventors: Brenton F. Belmar (New Paltz, NY); Christian Jacobi (West Park, NY); Matthias Klein (Wappingers Falls, NY); Peter G. Sutton (Lagrangeville, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/5044G06F9/5077
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,983,833
App. No.
16/527,441
Granted
Apr 20, 2021
Kind
B2
Abstract

An aspect includes hardware accelerator access. An application executing on a core of a multi-core processor triggers an interface code routine to acquire ownership of a hardware accelerator that is shared by a plurality of cores. The interface code routine partitions an input work package of the application into a plurality of pages in one or more input queues. The input work package is provided to the hardware accelerator in groups of one or more pages through the one or more input queues based on acquiring ownership of the hardware accelerator.

Claims (55)

1. A computer-implemented method comprising:

triggering, by an application executing on a core of a multi-core processor, an interface code routine to acquire ownership of a hardware accelerator that is shared by a plurality of cores;

partitioning, by the interface code routine, an input work package of the application into a plurality of pages in one or more input queues; and

providing the input work package to the hardware accelerator in groups of one or more pages through the one or more input queues using address translation as the groups of one or more pages or absolute page addresses are written to the one or more input queues, the input work package provided to the hardware accelerator based on acquiring ownership of the hardware accelerator.

2. The computer-implemented method of claim 1 , further comprising:

translating, by the interface code routine, an address space of the input work package from a virtual address space of the application to an address space of the hardware accelerator.

3. The computer-implemented method of claim 2 , wherein the hardware accelerator accesses or receives data from the one or more input queues in the address space, and the hardware accelerator sends or writes the groups of one or more pages through one or more output queues in the address space responsive to performing an accelerator work action.

4. The computer-implemented method of claim 3 , further comprising:

translating, by the interface code routine, one or more target addresses of an output work package for storing the groups of one or more pages from the hardware accelerator.

5. The computer-implemented method of claim 1 , further comprising:

monitoring, by the interface code routine, a completion status of the hardware accelerator based on providing the input work package to the hardware accelerator in the groups of one or more pages through the one or more input queues;

providing one or more additional groups of one or more pages through the one or more input queues based on determining that the hardware accelerator is ready for additional pages; and

releasing ownership of the hardware accelerator based on determining that the input work package has been fully provided to the hardware accelerator and the completion status of the hardware accelerator indicates that processing is complete.

6. The computer-implemented method of claim 5 , further comprising:

monitoring for a quiesce request received at the interface code routine to invalidate at least one page of the one or more input queues having incomplete processing by the hardware accelerator; and

signaling the hardware accelerator to abort an accelerator work action based on determining that the quiesce request invalidates at least one page of the one or more input queues having incomplete processing by the hardware accelerator.

7. The computer-implemented method of claim 1 , further comprising:

monitoring, by the interface code routine, for a translation invalidation request; and

delaying a translation invalidation action based on determining that the translation invalidation request is associated with an address queued for use by the hardware accelerator.

8. A system comprising:

a hardware accelerator; and

a plurality of cores in a multi-core processor, wherein the multi-core processor is configured to:

trigger, by an application executing on a core of the multi-core processor, an interface code routine to acquire ownership of the hardware accelerator that is shared by the plurality of cores;

partition, by the interface code routine, an input work package of the application into a plurality of pages in one or more input queues; and

provide the input work package to the hardware accelerator in groups of one or more pages through the one or more input queues using address translation as the groups of one or more pages or absolute page addresses are written to the one or more input queues, the input work package provided to the hardware accelerator based on acquiring ownership of the hardware accelerator.

9. The system of claim 8 , wherein the multi-core processor is further configured to translate, by the interface code routine, an address space of the input work package from a virtual address space of the application to an address space of the hardware accelerator.

10. The system of claim 9 , wherein the hardware accelerator accesses or receives data from the one or more input queues in the address space, and the hardware accelerator sends or writes the groups of one or more pages through one or more output queues in the address space responsive to performing an accelerator work action.

11. The system of claim 10 , wherein the multi-core processor is further configured to translate, by the interface code routine, one or more target addresses of an output work package for storing the groups of one or more pages from the hardware accelerator.

12. The system of claim 8 , wherein the multi-core processor is further configured to:

monitor, by the interface code routine, a completion status of the hardware accelerator based on providing the input work package to the hardware accelerator in the groups of one or more pages through the one or more input queues;

provide one or more additional groups of one or more pages through the one or more input queues based on determining that the hardware accelerator is ready for additional pages; and

release ownership of the hardware accelerator based on determining that the input work package has been fully provided to the hardware accelerator and the completion status of the hardware accelerator indicates that processing is complete.

13. The system of claim 12 , wherein the multi-core processor is further configured to:

monitor for a quiesce request received at the interface code routine to invalidate at least one page of the one or more input queues having incomplete processing by the hardware accelerator; and

signal the hardware accelerator to abort an accelerator work action based on determining that the quiesce request invalidates at least one page of the one or more input queues having incomplete processing by the hardware accelerator.

14. The system of claim 8 , wherein the multi-core processor is further configured to:

monitor, by the interface code routine, for a translation invalidation request; and

delay a translation invalidation action based on determining that the translation invalidation request is associated with an address queued for use by the hardware accelerator.

15. A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by processing circuitry to cause the processing circuitry to perform:

triggering, by an application executing on a core of a multi-core processor, an interface code routine to acquire ownership of a hardware accelerator that is shared by a plurality of cores;

partitioning, by the interface code routine, an input work package of the application into a plurality of pages in one or more input queues; and

providing the input work package to the hardware accelerator in groups of one or more pages through the one or more input queues using address translation as the groups of one or more pages or absolute page addresses are written to the one or more input queues, the input work package provided to the hardware accelerator based on acquiring ownership of the hardware accelerator.

16. The computer program product of claim 15 , wherein the program instructions executable by processing circuitry further cause the processing circuitry to perform:

translating, by the interface code routine, an address space of the input work package from a virtual address space of the application to an address space of the hardware accelerator.

17. The computer program product of claim 16 , wherein the hardware accelerator accesses or receives data from the one or more input queues in the address space, and the hardware accelerator sends or writes the groups of one or more pages through one or more output queues in the address space responsive to performing an accelerator work action.

18. The computer program product of claim 16 , wherein the program instructions executable by processing circuitry further cause the processing circuitry to perform:

monitoring, by the interface code routine, a completion status of the hardware accelerator based on providing the input work package to the hardware accelerator in the groups of one or more pages through the one or more input queues;

providing one or more additional groups of one or more pages through the one or more input queues based on determining that the hardware accelerator is ready for additional pages; and

releasing ownership of the hardware accelerator based on determining that the input work package has been fully provided to the hardware accelerator and the completion status of the hardware accelerator indicates that processing is complete.

19. The computer program product of claim 18 , wherein the program instructions executable by processing circuitry further cause the processing circuitry to perform:

monitoring for a quiesce request received at the interface code routine to invalidate at least one page of the one or more input queues having incomplete processing by the hardware accelerator; and

signaling the hardware accelerator to abort an accelerator work action based on determining that the quiesce request invalidates at least one page of the one or more input queues having incomplete processing by the hardware accelerator.

20. The computer program product of claim 16 , wherein the program instructions executable by processing circuitry further cause the processing circuitry to perform:

monitoring, by the interface code routine, for a translation invalidation request; and

delaying a translation invalidation action based on determining that the translation invalidation request is associated with an address queued for use by the hardware accelerator.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2024
From: BEIJING PIANRUOJINGHONG TECHNOLOGY CO., LTD.
To: BEIJING ZITIAO NETWORK TECHNOLOGY CO., LTD.
Reel/Frame 066565/0952 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2023
From: AWEMANE LTD.
To: BEIJING PIANRUOJINGHONG TECHNOLOGY CO., LTD.
Reel/Frame 064501/0498 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: AWEMANE LTD.
Reel/Frame 057991/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: BELMAR, BRENTON F.; JACOBI, CHRISTIAN; KLEIN, MATTHIAS; SUTTON, PETER G.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 049917/0325 →