BALANCING WORKLOAD IN A MULTIPROCESSOR SYSTEM RESPONSIVE TO PROGRAMMABLE ADJUSTMENTS IN A SYNCRONIZATION INSTRUCTION
First Claim
Patent Images
1. A computer method comprising carrying out operations in a multiprocessor system, the operations comprising:
- processing a plurality of software threads in parallel;
responsive to a first thread, decoding a first memory synchronization instruction, the first instruction corresponding to a first synchronization level;
responsive to the first synchronization level, implementing a first partial synchronization task;
responsive to a second thread, decoding a second memory synchronization instruction, the second instruction corresponding to a second synchronization level different from, but compatible with, the first synchronization level;
responsive to the second thread, implementing a second partial synchronization task responsive to the second synchronization level, the second partial synchronization task being complementary with the first partial synchronization task, so that the first and second synchronization tasks cooperate to achieve full synchronization.
4 Assignments
0 Petitions
Accused Products
Abstract
In a multiprocessor system with threads running in parallel, workload balancing is facilitated by recognizing a plurality of levels of sub-tasks of a memory synchronization instruction and selectively choosing for at least one thread to do less than all of levels of these sub-tasks in response to the memory synchronization instruction. Which thread waits to synchronize can be impacted by this choice. The programmer can cause a thread expected to be a bottleneck to wait less than other threads. Where one thread is a producer and another thread is a consumer, types of memory synchronization can be adapted to these roles.
-
Citations
25 Claims
-
1. A computer method comprising carrying out operations in a multiprocessor system, the operations comprising:
-
processing a plurality of software threads in parallel; responsive to a first thread, decoding a first memory synchronization instruction, the first instruction corresponding to a first synchronization level; responsive to the first synchronization level, implementing a first partial synchronization task; responsive to a second thread, decoding a second memory synchronization instruction, the second instruction corresponding to a second synchronization level different from, but compatible with, the first synchronization level; responsive to the second thread, implementing a second partial synchronization task responsive to the second synchronization level, the second partial synchronization task being complementary with the first partial synchronization task, so that the first and second synchronization tasks cooperate to achieve full synchronization. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A multiprocessor system comprising:
-
facilities adapted to run a plurality of threads in parallel; a central generation indication module adapted to associate generations with memory synchronization instructions; and facilities adapted to decode at least one memory synchronization instruction in at least one of the threads, in accordance with a memory synchronization protocol that implements a plurality of levels of memory synchronization each level having a respective distinct mode of operation responsive to the central generation indication module. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer method comprising carrying out operations in a multiprocessor system, the operations comprising
responsive to a given thread running on the system, recognizing a memory synchronization instruction, the instruction implicating a plurality of memory synchronization sub-tasks; -
responsive to the instruction, invoking at least one memory synchronization facility in accordance with a synchronization scheme including a plurality of synchronization levels; and distributing the sub-tasks responsive to the levels so as to offload sub-tasks from or allocate subtasks to the given thread. - View Dependent Claims (20, 21, 22, 25)
-
-
23. A computer program product for carrying out tasks within a multiprocessor system, the computer program product comprising. a storage medium readable by a processing circuit and storing instructions run by the processing circuit for performing a method comprising:
-
implementing the tasks in accordance with a plurality of threads adapted to run in parallel; specifying first and second memory synchronization instructions in accordance with a memory synchronization protocol that implicates a plurality of memory synchronization sub-tasks, respective sub-sets of the sub-tasks corresponding to respective levels of synchronization, wherein the first and second memory synchronization instructions are adapted to offload given sub-tasks from a thread expected to be a bottleneck to a thread expected not to be a bottleneck.
-
-
24. The product of claim 23, wherein at least one of the sub-tasks comprises requesting a generation change from a central generation indication device between a memory access request and a guard location in at least one of the threads.
-
24-1. (canceled)
Specification