IP Library › Granted Patent US 11,960,898
Granted Patent B2
US 11,960,898 · App. 17/127,776 · Granted Apr 16, 2024

Enabling asynchronous operations in synchronous processors

Inventor: Ulrich Drepper (Grasbrumn, DE)
Assignee: Red Hat, Inc.
G06F9/3871G06F1/12G06F9/3826G06F9/3869G06F9/3877G06F9/52G06F9/522
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,960,898
App. No.
17/127,776
Granted
Apr 16, 2024
Kind
B2
Abstract

The technology disclosed herein enables a processor that processes instructions synchronously in accordance with a processor clock to identify a first instruction specifying an asynchronous operation to be processed independently of the processor clock. The asynchronous operation is performed by an asynchronous execution unit that executes the asynchronous operation independently of the processor clock and generates at least one result of the asynchronous operation. A synchronous execution unit executes, in parallel with the execution of the asynchronous operation by the asynchronous execution unit, one or more second instructions specifying respective synchronous operations. Responsive to determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation, the processor receives the at least one result of the asynchronous operation.

Claims (48)

1. A method comprising:

identifying, by a processor that processes instructions synchronously in accordance with a processor clock, a first instruction specifying an asynchronous operation to be processed independently of the processor clock, wherein the first instruction comprises: an operation code that identifies one or more operations of an asynchronous execution unit, and one or more operands;

performing the asynchronous operation by the asynchronous execution unit that executes the asynchronous operation independently of the processor clock and generates at least one result of the asynchronous operation;

executing, by a synchronous execution unit in parallel with the execution of the asynchronous operation by the asynchronous execution unit, one or more second instructions specifying respective synchronous operations;

determining, by the processor, that the asynchronous execution unit has generated the at least one result of the asynchronous operation; and

responsive to determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation, receiving, by the processor, the at least one result of the asynchronous operation.

2. The method of claim 1 , wherein determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation comprises:

receiving, by the processor, a result notification generated by the asynchronous execution unit.

3. The method of claim 2 , wherein the asynchronous execution unit generates the result notification responsive to completing the asynchronous operation.

4. The method of claim 2 , wherein receiving the result notification comprises one or more of:

detecting that a flag or register of the processor is set,

detecting an interrupt,

detecting a processor-specific synchronization operation, or

detecting modification of in-memory data.

5. The method of claim 1 , wherein determining that the asynchronous execution unit has generated the at least one result comprises:

executing, by the synchronous execution unit, a third instruction that determines whether the asynchronous execution unit has generated the at least one result of the asynchronous operation.

6. The method of claim 1 , further comprising:

determining an expected execution time of the asynchronous operation,

wherein determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation comprises determining that the expected execution time has elapsed since the asynchronous execution unit began performing the asynchronous operation.

7. The method of claim 6 , wherein the expected execution time comprises a number of clock cycles of the processor clock.

8. The method of claim 1 , further comprising:

providing the asynchronous operation to the asynchronous execution unit, wherein providing the asynchronous operation to the asynchronous execution unit comprises adding the asynchronous operation to an operation queue associated with the asynchronous execution unit.

9. The method of claim 8 , wherein the asynchronous execution unit de-queues the asynchronous operation from the operation queue prior to performing the asynchronous operation.

10. The method of claim 1 , wherein the asynchronous operation specifies a result memory location, and the asynchronous execution unit stores the at least one result at the result memory location.

11. The method of claim 10 , further comprising storing, by the processor, the at least one result of the asynchronous operation in the result memory location.

12. The method of claim 10 , wherein receiving the at least one result of the asynchronous operation comprises retrieving the at least one result from the result memory location.

13. The method of claim 1 , wherein the processor comprises one or more pipeline stages including a first stage and a second stage, and the processor performs the first stage on the one or more second instructions using the synchronous execution unit in parallel with the execution of the asynchronous operation by the asynchronous execution unit.

14. The method of claim 13 , wherein the processor performs the first stage on the one or more second instructions using the synchronous execution unit in parallel with performing the second stage on the first instruction.

15. A system comprising:

a memory; and

a processing device operatively coupled to the memory, wherein the processing device processes instructions synchronously in accordance with a processor clock, the processing device to:

identify a first instruction specifying an asynchronous operation to be processed independently of the processor clock;

perform the asynchronous operation by an asynchronous execution unit that executes the asynchronous operation independently of the processor clock and generates at least one result of the asynchronous operation;

execute, by a synchronous execution unit in parallel with the execution of the asynchronous operation by the asynchronous execution unit, one or more second instructions specifying respective synchronous operations, wherein the one or more second instructions comprise:

an operation code that identifies one or more operations of the synchronous execution unit, and

one or more operands;

determine that the asynchronous execution unit has generated the at least one result of the asynchronous operation; and

responsive to determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation, receive the at least one result of the asynchronous operation.

16. The system of claim 15 , wherein to determine that the asynchronous execution unit has generated the at least one result of the asynchronous operation the processing device is further to:

receive a result notification generated by the asynchronous execution unit.

17. A non-transitory computer-readable medium storing instructions that, when executed by a processing device, cause the processing device to:

identify a first instruction specifying an asynchronous operation to be processed independently of a processor clock, wherein the processing device processes instructions synchronously in accordance with the processor clock,

perform the asynchronous operation by an asynchronous execution unit that executes the asynchronous operation independently of the processor clock and generates at least one result of the asynchronous operation, wherein the asynchronous operation specifies a result memory location, and the asynchronous execution unit further stores the at least one result at the result memory location;

execute, by a synchronous execution unit in parallel with the execution of the asynchronous operation by the asynchronous execution unit, one or more second instructions specifying respective synchronous operations;

determine that the asynchronous execution unit has generated the at least one result of the asynchronous operation; and

responsive to determining that the asynchronous execution unit has generated the at least one result of the asynchronous operation, receive the at least one result of the asynchronous operation.

18. The non-transitory computer-readable medium of claim 17 , wherein to determine that the asynchronous execution unit has generated the at least one result of the asynchronous operation, the processing device is further to:

receive a result notification generated by the asynchronous execution unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2020
From: DREPPER, ULRICH
To: RED HAT, INC.
Reel/Frame 054699/0871 →
Continuity (1)
Related Publication 20220197718A1 · Jun 23, 2022