Patent ID: 7627723

Claim:
A method for updating data in memory while executing multiple threads of instructions, the method comprising: receiving a single instruction from one of a plurality of concurrently executing threads of instructions; in response to the single instruction received, reading data from a specific memory location, performing an operation involving the data read from the memory location to generate a result, and storing the result to the specific memory location, without requiring separate load and store instructions, wherein the single instruction is forwarded to an execution unit of a plurality of execution units capable of maintaining exclusive control of the memory location in a memory shared by the plurality of execution units, wherein the execution unit reads the data from the specific memory location, performs the operation involving the data read from the memory location to generate the result, and stores the result to the specific memory location, wherein each execution unit is allocated a portion of the memory, and wherein the execution unit to which instruction is forwarded is selected from the plurality of execution units if a memory address associated with the first instruction falls within an address range associated with the portion of memory allocated to the execution unit; and in response to the single instruction received, precluding another one of the plurality of threads of instructions from altering data at the specific memory location while reading the data from the specific memory location, performing the operation involving the data, and storing the result to the specific memory location.