System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
First Claim
1. A method for executing a locked-memory instruction, the method comprising:
- obtaining exclusive ownership of a cacheline for a load-lock operation;
setting a bit to indicate the load-lock operation'"'"'s ownership of the cacheline;
storing a modified version of a load data value;
determining that the cacheline is still exclusively owned;
storing the load data value;
determining that the cacheline is unsnooped;
merging the modified version of the load data value with the stored load data value; and
releasing the locked-memory instruction to be retired.
0 Assignments
0 Petitions
Accused Products
Abstract
The present invention relates to locked memory instructions, and more specifically to a system and method for the high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model. In accordance with an embodiment of the present invention, a method for executing locked-memory instructions includes decoding a locked-memory instruction, obtaining exclusive ownership of a cacheline to be used by a load-lock operation, setting a bit to indicate the load-lock operation'"'"'s ownership of the cacheline, and activating a snoop checking process. The method also includes modifying a load data value and storing the modified load data value. The method further includes determining that the cacheline is still exclusively owned, storing the load data value, determining that the cacheline is unsnooped, merging the modified load data value with the load data value, and releasing the locked-memory instruction to be retired.
36 Citations
20 Claims
-
1. A method for executing a locked-memory instruction, the method comprising:
-
obtaining exclusive ownership of a cacheline for a load-lock operation;
setting a bit to indicate the load-lock operation'"'"'s ownership of the cacheline;
storing a modified version of a load data value;
determining that the cacheline is still exclusively owned;
storing the load data value;
determining that the cacheline is unsnooped;
merging the modified version of the load data value with the stored load data value; and
releasing the locked-memory instruction to be retired. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A machine-readable medium having stored thereon a locked-memory instruction, said locked memory instruction executable to perform a method comprising:
-
obtaining exclusive ownership of a cacheline for a load-lock operation;
setting a bit to indicate the load-lock operation'"'"'s ownership of the cacheline;
storing a modified version of a load data value;
determining that the cacheline is still exclusively owned;
storing the load data value;
determining that the cacheline is unsnooped;
merging the modified version of the load data value with the stored load data value; and
releasing the locked-memory instruction to be retired. - View Dependent Claims (9, 10, 11, 13, 14, 16, 17, 19, 20)
-
-
12. The machine-readable medium of claim 111 wherein said delaying the snoop checking process during a critical sequence in the execution of the locked-memory instruction comprises:
delaying the snoop checking process while allocating the write combining buffer entry in an exclusive state, checking to determine whether a snoop of the executing instruction occurred, and updating the write combining buffer entry with the stored load data value.
-
15. A processor comprising:
-
a first cache;
a load buffer coupled to the first cache;
a control logic component coupled to the load buffer;
a store buffer;
a pause queue coupled to the store buffer;
a write combining buffer coupled to the pause queue and the first cache; and
a lock register coupled to the pause queue and the load buffer.
-
-
18. A processor comprising:
-
a first cache to store a local copy of a cacheline and to maintain exclusivity information associated with the local copy of the cacheline for use by a locked-memory instruction;
a load buffer coupled to the first cache, the load buffer to receive and queue a load-lock operation and an associated load data value;
a control logic component coupled to the load buffer, the control logic component to control retirement of the locked-memory instruction;
a store buffer to receive and queue a store-unlock operation and the load data value;
a pause queue coupled to the store buffer, the pause queue to store a modified version of the load data value and execute a store-unlock operation received from the store buffer;
a lock register coupled to the pause queue and the load buffer, the lock register to receive and store an address of the store-unlock operation; and
a write combining buffer coupled to the pause queue and the first cache, the write combining buffer to receive the modified version of the load data value from the pause queue and merge the modified version of the load data value with the load data value.
-
Specification