Semaphore enhancement to improve system performance
AssigneeNVIDIA Corporation
InventorsCurtis Priem, Rick M. Iwamoto
Life of this patent
Estimating the term…
Abstract
A process of coordinating access to a shared resource by a plurality of execution units is provided. Channel control units are used to coordinate access to a shared resource. Each channel control unit reads semaphore values of a semaphore storage unit. In response to synchronization commands and semaphore values, the channel control unit manages the flow of execution instructions to the execution units in order to manage access to the shared resource.
Claims20
A shared resource management system providing controlled accessing of at least one shared resource by at least one execution unit, the system comprising:
- a channel control unit operative to access a sequence of instructions stored in an instruction storage unit, said sequence of instructions including a plurality of execution instructions and a plurality of synchronization commands interspersed between associated execution instructions;
- and
- at least one execution unit communicatively coupled with said channel control unit for receiving associated execution instructions from said channel control unit via an associated channel, said execution unit being capable of accessing at least one shared resource;
- said channel control unit being responsive to said synchronization commands and operative to access at least one semaphore value stored in a semaphore storage unit, said semaphore value being associated with a shared resource and indicating an ownership status for said shared resource, said channel control unit being operative to manage the flow of said execution instructions to said execution unit via said associated channel in order to manage accessing of the shared resource by said execution unit.
A process of coordinating accessing of a shared resource by a plurality of execution units, comprising the steps of:
- receiving a synchronization command having an associated value, the synchronization command being associated with a set of execution instructions for execution by an execution unit requiring access to a shared resource during execution of the set of execution instructions;
- and
- executing the set of execution instructions by the execution unit upon validation of the synchronization command based on a comparison of the value with a stored value stored at a storage location.
A process of coordinating accessing of a shared resource by a plurality of execution units, comprising the steps of:
- receiving a first synchronization command having an associated first value, the first synchronization command being associated with a first set of execution instructions for execution by a first execution unit, the first execution unit requiring access to a shared resource during execution of the first set of execution instructions;
- and
- executing the first set of execution instructions by the first execution unit upon validation of the first synchronization command based on a comparison of the first value with a stored value stored at a storage location;
- receiving a second synchronization command having an associated second value;
- and
- writing the second value to the storage location after the first execution unit is done processing the first set of execution instructions.
A shared resource management system, comprising:
- an instruction storage unit having a sequence of instructions including a plurality of execution instructions and a plurality of synchronization commands;
- a shared resource;
- a plurality of execution units each capable of accessing said shared resource;
- a plurality of channels for coupling execution instructions from said instruction storage unit to said plurality of execution units, wherein each execution unit receives a flow of execution instructions from a respective channel;
- a semaphore storage unit having at least one semaphore value;
- and
- at least one channel control unit operative to manage a flow of execution instructions to said plurality of execution units from said plurality of channels, said at least one channel control unit reading said at least one semaphore value and said synchronization commands and determining which of said channels to block to synchronize access to said shared resource.
Dependencies are inferred from the claim text.