Wake-and-go mechanism with data exclusivity
First Claim
1. A method, in a data processing system, for determining data exclusivity for wake-and-go engines, the method comprising:
- detecting, by a first wake-and-go engine within a plurality of wake-and-go engines connected to a system bus in a multiple processor system, a thread that is waiting for an event associated with a target address, wherein the thread executes on a first processor in the multiple processor system;
performing, by the first wake-and-go engine, a look-ahead load operation without reservation at the target address on behalf of the thread;
receiving, by the first wake-and-go engine, a system bus response from at least one other wake-and-go engine within the plurality of wake-and-go engines;
determining, by the first wake-and-go engine, whether a second wake-and-go engine within the plurality of wake-and-go engines has exclusivity with respect to the target address based on the system bus response; and
responsive to the first wake-and-go engine determining the second wake-and-go engine has exclusivity with respect to the target address, placing, by the first wake-and-go engine, an entry storing the target address in its respective wake-and-go storage array to spin on a lock for the target address on behalf of the thread by snooping the system bus for the target address without exclusivity.
1 Assignment
0 Petitions
Accused Products
Abstract
Snoop response logic on a system bus is configured to detect on the system bus requests to access data at a target address with data exclusivity from at least one of a plurality of wake-and-go engines. The snoop response logic is further configured to determine a winning wake-and-go engine from the at least one wake-and-go engine that obtains a lock on the target address and generate a combined snoop response. The combined snoop response identifies the winning wake-and-go engine. The snoop response logic sends the combined snoop response to the at least one wake-and-go engine on the system bus. Each remaining wake-and-go engine within the at least one wake-and-go engine places an entry in its respective wake-and-go storage array to spin on a lock for the target address.
214 Citations
20 Claims
-
1. A method, in a data processing system, for determining data exclusivity for wake-and-go engines, the method comprising:
-
detecting, by a first wake-and-go engine within a plurality of wake-and-go engines connected to a system bus in a multiple processor system, a thread that is waiting for an event associated with a target address, wherein the thread executes on a first processor in the multiple processor system; performing, by the first wake-and-go engine, a look-ahead load operation without reservation at the target address on behalf of the thread; receiving, by the first wake-and-go engine, a system bus response from at least one other wake-and-go engine within the plurality of wake-and-go engines; determining, by the first wake-and-go engine, whether a second wake-and-go engine within the plurality of wake-and-go engines has exclusivity with respect to the target address based on the system bus response; and responsive to the first wake-and-go engine determining the second wake-and-go engine has exclusivity with respect to the target address, placing, by the first wake-and-go engine, an entry storing the target address in its respective wake-and-go storage array to spin on a lock for the target address on behalf of the thread by snooping the system bus for the target address without exclusivity. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data processing system, comprising:
-
a plurality of wake-and-go engines, wherein each of the plurality of wake-and-go engines is associated with a processor and has a respective wake-and-go storage array; and a system bus, wherein a first wake-and-go engine within the plurality of wake-and-go engines is configured to; detect a thread that is waiting for an event associated with a target address, wherein the thread executes on a first processor; perform a look-ahead load operation without reservation at the target address on behalf of the thread; receive a system bus response from at least one other wake-and-go engine within the plurality of wake-and-go engines; determine whether a second wake-and-go engine within the plurality of wake-and-go engines has exclusivity with respect to the target address based on the system bus response; and responsive to the first wake-and-go engine determining the second wake-and-go engine has exclusivity with respect to the target address, place an entry storing the target address in its respective wake-and-go storage array to spin on a lock for the target address on behalf of the thread by snooping the system bus for the target address without exclusivity. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer program product comprising a non-transitory computer readable storage medium having a computer readable program stored therein, wherein the computer readable program, when executed on a first wake-and-go engine within a plurality of wake-and-go engines connected to a system bus in a multiple processor system, causes the first wake-and-go engine to:
-
detect a thread that is waiting for an event associated with a target address, wherein the thread executes on a first processor; perform a look-ahead load operation without reservation at the target address on behalf of the thread; receive a system bus response from at least one other wake-and-go engine within the plurality of wake-and-go engines; determine whether a second wake-and-go engine within the plurality of wake-and-go engines has exclusivity with respect to the target address based on the system bus response; and responsive to the first wake-and-go engine determining the second wake-and-go engine has exclusivity with respect to the target address, place an entry storing the target address in its respective wake-and-go storage array to spin on a lock for the target address on behalf of the thread by snooping the system bus for the target address without exclusivity. - View Dependent Claims (19, 20)
-
Specification