IP Library Granted Patent US 8,359,459
Granted Patent B2
US 8,359,459 · App. 12/127,509 · Granted Jan 22, 2013

Using hardware support to reduce synchronization costs in multithreaded applications

Inventor: Darryl J. Gove (Sunnyvale, CA)
Assignee: Oracle America, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,359,459
App. No.
12/127,509
Granted
Jan 22, 2013
Kind
B2
Abstract

A processor configured to synchronize threads in multithreaded applications. The processor includes first and second registers. The processor stores a first bitmask in the first register and a second bitmask in the second register. For each bitmask, each bit corresponds with one of multiple threads. A given bit in the first bitmask indicates the corresponding thread has been assigned to execute a portion of a unit of work. A corresponding bit in the second bitmask indicates the corresponding thread has completed execution of its assigned portion of the unit of work. The processor receives updates to the second bitmask in the second register and provides an indication that the unit of work has been completed in response to detecting that for each bit in the first bitmask that corresponds to a thread that is assigned work, a corresponding bit in the second bitmask indicates its corresponding thread has completed its assigned work.

Claims (45)

1. A method for synchronizing multi-threaded operations in a processor, the method comprising:

dividing a unit of work into a plurality of portions;

assigning each of the plurality of portions to a separate thread of a group of threads;

assigning a first register and a second register to the group, and

storing a first bitmask in a first register and a second bitmask in a second register, wherein a given bit in the first bitmask indicates a corresponding thread of the group of threads has been assigned to execute one of said portions, and a corresponding bit in the second bitmask indicates the corresponding thread has completed execution of its assigned portion;

each thread of the group of threads providing updates to the second bitmask in the second register; and

determining that the unit of work has been completed in response to detecting that for each bit in the first bitmask that corresponds to a thread that is assigned a portion of the plurality of portions, a corresponding bit in the second bitmask indicates its corresponding thread has completed execution of its assigned portion of the unit of work.

2. The method as recited in claim 1 , wherein the processor comprises a plurality of processor cores.

3. The method as recited in claim 2 , wherein each thread of the group of threads is executed by a separate one of the plurality of processor cores.

4. The method as recited in claim 1 , wherein providing updates to the second bitmask in the second register comprises each thread of the group of threads updating its respective bit in the second register in response to completing its assigned portion of the unit of work.

5. The method as recited in claim 1 , further comprising providing a single instruction that, when executed, causes the processor to:

monitor the first and second registers; and

return the indication when the unit of work has been completed.

6. The method as recited in claim 1 , further comprising changing the first bitmask in response to a reassignment of a portion of the unit of work from a first thread to a second thread.

7. The method as recited in claim 1 , further comprising storing additional bitmasks in additional registers for simultaneously synchronizing a plurality of units of work.

8. The method as recited in claim 1 , wherein each bit within each of said first bitmask and said second bitmask corresponds to a different thread.

9. A processor comprising first and second registers, wherein the processor is configured to:

divide a unit of work into a plurality of portions;

assign each of the plurality of portions to a separate thread of a group of threads;

assign a first register and a second register to the group, and

store a first bitmask in a first register and a second bitmask in a second register, wherein a given bit in the first bitmask indicates a corresponding thread of the group of threads has been assigned to execute one of said portions, and a corresponding bit in the second bitmask indicates the corresponding thread has completed execution of its assigned portion;

each thread of the group of threads providing updates to the second bitmask in the second register; and

determine that the unit of work has been completed in response to detecting that for each bit in the first bitmask that corresponds to a thread that is assigned a portion of the plurality of portions, a corresponding bit in the second bitmask indicates its corresponding thread has completed execution of its assigned portion of the unit of work.

10. The processor as recited in claim 9 , further comprising a plurality of processor cores.

11. The processor as recited in claim 10 , wherein each thread of the group of threads is executed by a separate one of the plurality of processor cores.

12. The processor as recited in claim 9 , wherein to provide updates to the second bitmask in the second register, each thread of the group of threads is configured to update its respective bit in the second register in response to the completing its assigned portion of the unit of work.

13. The processor as recited in claim 9 , wherein by executing a single instruction, the processor is configured to:

monitor the first and second registers; and

return the indication when the unit of work has been completed.

14. The processor as recited in claim 9 , wherein the processor is further configured to change the first bitmask in response to a reassignment of a portion of the unit of work from a first thread to a second thread.

15. The processor as recited in claim 9 , wherein the processor is further configured to store additional bitmasks in additional registers for simultaneously synchronizing a plurality of units of work.

16. A non-transitory computer-readable media storing a plurality of instructions that, when executed cause a processor to:

divide a unit of work into a plurality of portions;

assign each of the plurality of portions to a separate thread of a group of threads;

assign a first register and a second register to the group, and

store a first bitmask in a first register and a second bitmask in a second register, wherein a given bit in the first bitmask indicates a corresponding thread of the group of threads has been assigned to execute one of said portions, and a corresponding bit in the second bitmask indicates the corresponding thread has completed execution of its assigned portion;

each thread of the group of threads providing updates to the second bitmask in the second register; and

determine that the unit of work has been completed in response to detecting that for each bit in the first bitmask that corresponds to a thread that is assigned a portion of the plurality of portions, a corresponding bit in the second bitmask indicates its corresponding thread has completed execution of its assigned portion.

17. The non-transitory computer-readable media as recited in claim 16 , wherein the processor further comprises a plurality of processor cores and each thread of the group of threads is executed by a separate one of the plurality of cores.

18. The non-transitory computer-readable media as recited in claim 16 , wherein to update the second bitmask in the second register, each thread of the group of threads is configured to update its respective bit in the second register in response to completing its assigned portion of the unit of work.

19. The non-transitory computer-readable media as recited in claim 16 , wherein the instructions include a single instruction that, when executed, causes the processor to:

monitor the first and second registers; and

return the indication when the unit of work has been completed.

20. The non-transitory computer-readable media as recited in claim 16 , further comprising instructions that, when executed, cause the processor to change the first bitmask in response to a reassignment of a portion of the unit of work from a first thread to a second thread.

21. The non-transitory computer-readable media as recited in claim 16 , further comprising instructions that, when executed, cause the processor to store additional bitmasks in additional registers for simultaneously synchronizing a plurality of units of work.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2008
From: GOVE, DARRYL J.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 021007/0549 →
Continuity (1)
Related Publication 20090300643A1 · Dec 3, 2009