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 a thread that is waiting for an event that modifies a data value associated with a target address;
storing the target address in a wake-and-go entry of a content addressable memory in association with a thread identifier of the thread;
placing the thread in a sleep state;
responsive to detecting a write to the target address, using the target address to address the content addressable memory and returning, by the content addressable memory, a storage address of the wake-and-go entry; and
placing the thread corresponding to the thread identifier in the wake-and-go entry in a non-sleep state; and
responsive to the thread determining the data value being written to the target address is not the data value for which the thread is waiting, storing the target address in a wake-and-go entry of the content addressable memory in association with the thread identifier of the thread and placing the thread in a sleep state.
1 Assignment
0 Petitions
Accused Products
Abstract
A wake-and-go mechanism is provided for a data processing system. When a thread is waiting for an event, rather than performing a series of get-and-compare sequences, the thread 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 operating system or a background sleeper thread 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.
-
Citations
18 Claims
-
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
-
detecting a thread that is waiting for an event that modifies a data value associated with a target address; storing the target address in a wake-and-go entry of a content addressable memory in association with a thread identifier of the thread; placing the thread in a sleep state; responsive to detecting a write to the target address, using the target address to address the content addressable memory and returning, by the content addressable memory, a storage address of the wake-and-go entry; and placing the thread corresponding to the thread identifier in the wake-and-go entry in a non-sleep state; and responsive to the thread determining the data value being written to the target address is not the data value for which the thread is waiting, storing the target address in a wake-and-go entry of the content addressable memory in association with the thread identifier of the thread and placing the thread in a sleep state. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data processing system, comprising:
-
A hardware wake-and-go mechanism; and a wake-and-go storage array, wherein the 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; store the target address in a wake-and-go entry of a content addressable memory in association with a thread identifier of the thread; place the thread in a sleep state; responsive to detecting a write to the target address, use the target address to address the content addressable memory and return, by the content addressable memory, a storage address of the wake-and-go entry; place the thread corresponding to the thread identifier in the wake-and-go entry in a non-sleep state; and responsive to the thread determining the data value being written to the target address is the data value for which the thread is waiting, store the target address in a wake-and-go entry of the content addressable memory in association with the thread identifier of the thread and placing the thread in a sleep state. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A computer program product comprising a non-transitory computer readable storage medium having a computer readable program, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
detect a thread that is waiting for an event that modifies a data value associated with a target address; store the target address in a wake-and-go entry of a content addressable memory in association with a thread identifier of the thread; place the thread in a sleep state; responsive to detecting a write to the target address, using the target address to address the content addressable memory and return, by the content addressable memory, a storage address of the wake-and-go entry; place the thread corresponding to the thread identifier in the wake-and-go entry in a non-sleep state; and responsive to the thread determining the data value being written to the target address is not the data value for which the thread is waiting, store the target address in a wake-and-go entry of the content addressable memory in association with the thread identifier of the thread and place the thread in a sleep state. - View Dependent Claims (15, 16, 17, 18)
-
Specification