Technique for dynamically restricting thread concurrency without rewriting thread code
First Claim
1. A method for executing uniprocessor (UP) coded workloads (UP-workloads) in a computer capable of concurrent execution, comprising:
- assigning first UP-workloads which are not permitted to execute concurrently to a first concurrency group, and assigning second UP-workloads which are not permitted to execute concurrently to a second concurrency group, where any UP-workload in the first concurrency group is permitted to execute concurrently with any UP-workload in the second concurrency group; and
executing safely, on the computer capable of concurrent execution, the UP-coded workloads in the first concurrency group at substantially the same time as executing the UP-coded workloads in the second concurrency group, and where the first UP-workloads in object code share, without conventional synchronization, access to a common set of memory addresses in a memory.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for executing uniprocessor (UP) coded workloads in a computer capable of concurrent thread execution is disclosed. The method identifies threads in the uniprocessor coded workloads (UP-workloads) which can execute concurrently, and identifies threads in the UP-workloads which cannot execute concurrently. First threads which cannot execute concurrently are assigned to a first concurrency group. Second threads which cannot execute concurrently are assigned to a second concurrency group. Any thread in the first concurrency group can execute concurrently with any thread in the second concurrency group. The computer capable of concurrent thread execution then executes the UP-coded workloads in the first concurrency group at substantially the same time as executing the UP-coded workloads in the second concurrency group.
-
Citations
20 Claims
-
1. A method for executing uniprocessor (UP) coded workloads (UP-workloads) in a computer capable of concurrent execution, comprising:
-
assigning first UP-workloads which are not permitted to execute concurrently to a first concurrency group, and assigning second UP-workloads which are not permitted to execute concurrently to a second concurrency group, where any UP-workload in the first concurrency group is permitted to execute concurrently with any UP-workload in the second concurrency group; and executing safely, on the computer capable of concurrent execution, the UP-coded workloads in the first concurrency group at substantially the same time as executing the UP-coded workloads in the second concurrency group, and where the first UP-workloads in object code share, without conventional synchronization, access to a common set of memory addresses in a memory. - View Dependent Claims (2, 3, 4, 5, 14, 15, 16)
-
-
6. A computer to execute uniprocessor (UP) coded workloads using concurrent execution, comprising:
-
a processor and a memory; uniprocessor coded workloads (UP-workloads); an operating system to assign first UP-workloads which are not permitted to execute concurrently to a first concurrency group, and the operating system assigning second UP-workloads which are not permitted to execute concurrently to a second concurrency group, where any UP-workload in the first concurrency group is permitted to execute concurrently with any UP-workload in the second concurrency group; and the computer to safely execute the UP-coded workloads in the first concurrency group at substantially the same time as executing the UP-coded workloads in the second concurrency group, where the first UP-workloads in object code share access to a common set of memory addresses in a memory without a conventional synchronization mechanism, and wherein the conventional synchronization mechanism is selected from the group consisting of lock, monitor, and domain. - View Dependent Claims (7, 8, 9, 10, 11, 12)
-
-
13. A computer readable medium containing executable program instructions for execution by a processor, comprising:
-
program instructions that execute uniprocessor object code workloads (UP-workloads); program instructions that assign first UP-workloads which are not permitted to execute concurrently to a first concurrency group, and assign second UP-workloads which are not permitted to execute concurrently to a second concurrency group, where any UP-workload in the first concurrency group is permitted to safely execute concurrently with any UP-workload in the second concurrency group, and where the first UP-workloads share access to a common set of memory addresses in a memory without conventional synchronization; and program instructions that schedule execution of the UP-coded workloads in the first concurrency group at substantially the same time as execution of the UP-coded workloads in the second concurrency group.
-
-
17. A method for scheduling uniprocessor (UP) coded workloads (UP-workloads) in a computer capable of concurrent thread execution, comprising:
-
identifying threads in the UP-workloads which are permitted to execute concurrently, identifying threads in the UP-workloads which are not permitted to execute concurrently, where the UP-workloads which are not permitted to execute concurrently are multiprocessor unsafe workloads in object code; assigning, at run-time, first threads which are not permitted to execute concurrently to a first concurrency group, and assigning, at run-time, second threads which are not permitted to execute concurrently to a second concurrency group, where any thread in the first concurrency group is permitted to execute concurrently with any thread in the second concurrency group, and where any thread in the first concurrency group does not have a conventional synchronization with any thread in the second concurrency group; and dequeuing sequentially for execution a thread of the first threads from a first queue, where the dequeued thread of the first threads on the first queue runs to completion before dequeuing another thread of the first threads from the first queue. - View Dependent Claims (18, 19, 20)
-
Specification