Hardware Wake-and-Go Mechanism for a Data Processing System
First Claim
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
- detecting, by a hardware wake-and-go mechanism within a processor, a thread that is waiting for an event that modifies a data value associated with a target address;
populating, by the hardware wake-and-go mechanism, a wake-and-go storage array with the target address;
placing the thread in a sleep state;
responsive to the event that modifies the data value associated with the target address, determining whether to wake the thread; and
in response to a determination that the thread is to be awoken, placing the thread in a non-sleep state.
2 Assignments
0 Petitions
Accused Products
Abstract
A hardware wake-and-go mechanism is provided for a data processing system. The wake-and-go mechanism recognizes a programming idiom that indicates that a thread is waiting for an event. The wake-and-go mechanism updates a wake-and-go array with a target address associated with the event. The thread then goes to sleep until the event occurs. The wake-and-go array may be a content addressable memory (CAM). When a transaction appears on the symmetric multiprocessing (SMP) fabric that modifies the value at a target address in the CAM, the CAM returns a list of storage addresses at which the target address is stored. The wake-and-go mechanism associates these storage addresses with the threads waiting for an even at the target addresses, and may wake the one or more threads waiting for the event.
127 Citations
20 Claims
-
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
-
detecting, by a hardware wake-and-go mechanism within a processor, a thread that is waiting for an event that modifies a data value associated with a target address; populating, by the hardware wake-and-go mechanism, a wake-and-go storage array with the target address; placing the thread in a sleep state; responsive to the event that modifies the data value associated with the target address, determining whether to wake the thread; and in response to a determination that the thread is to be awoken, placing the thread in a non-sleep state. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A data processing system, comprising:
-
a hardware wake-and-go mechanism; and a wake-and-go array, wherein the hardware wake-and-go mechanism is configured to; detect a thread that is waiting for an event that modifies a data value associated with a target address; populate the wake-and-go storage array with the target address; place the thread in a sleep state; responsive to the event that modifies the data value associated with the target address, determine whether to wake the thread; and in response to a determination that the thread is to be awoken, place the thread in a non-sleep state. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. A hardware wake-and-go mechanism, comprising:
-
a wake-and-go storage array; and wake-and-go logic, wherein the wake-and-go logic is configured to; detect a thread that is waiting for an event that modifies a data value associated with a target address; populate the wake-and-go storage array with the target address; place the thread in a sleep state; responsive to the event that modifies the data value associated with the target address, determine whether to wake the thread; and in response to a determination that the thread is to be awoken, place the thread in a non-sleep state.
-
Specification