SPECULATIVE EXECUTION AND ROLLBACK
First Claim
1. A method of performing rollback of speculatively issued instructions, the method comprising:
- issuing a first set of instructions for a first thread group;
issuing a second set of instructions for a second thread group;
detecting a rollback condition for at least one thread in the first thread group during pre-execution processing of an instruction in the first set of instructions;
stopping issuing of additional instructions for the first thread group;
discarding in-flight instructions that have issued and have not been executed in the first set of instructions; and
executing the second set of instructions for the second thread group.
2 Assignments
0 Petitions
Accused Products
Abstract
One embodiment of the present invention sets forth a technique for speculatively issuing instructions to allow a processing pipeline to continue to process some instructions during rollback of other instructions. A scheduler circuit issues instructions for execution assuming that, several cycles later, when the instructions reach multithreaded execution units, that dependencies between the instructions will be resolved, resources will be available, operand data will be available, and other conditions will not prevent execution of the instructions. When a rollback condition exists at the point of execution for an instruction for a particular thread group, the instruction is not dispatched to the multithreaded execution units. However, other instructions issued by the scheduler circuit for execution by different thread groups, and for which a rollback condition does not exist, are executed by the multithreaded execution units. The instruction incurring the rollback condition is reissued after the rollback condition no longer exists.
406 Citations
20 Claims
-
1. A method of performing rollback of speculatively issued instructions, the method comprising:
-
issuing a first set of instructions for a first thread group; issuing a second set of instructions for a second thread group; detecting a rollback condition for at least one thread in the first thread group during pre-execution processing of an instruction in the first set of instructions; stopping issuing of additional instructions for the first thread group; discarding in-flight instructions that have issued and have not been executed in the first set of instructions; and executing the second set of instructions for the second thread group. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for scheduling compute tasks for execution, the system comprising:
-
a memory that is configured to store a first set of instructions for a first thread group and a second set of instructions for a second thread group; a scheduler unit that is configured to; issue the first set of instructions for the first thread group; issue the second set of instructions for the second thread group; and stop issuing additional instructions for the first thread group when a rollback condition is detected; a dispatch unit that is configured to; detect the rollback condition for at least one thread in the first thread group during pre-execution processing of an instruction in the first set of instructions; and discard in-flight instructions that have issued and have not been executed in the first set of instructions; and multiple execution units configured to execute the second set of instructions for the second thread group. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform rollback of speculatively issued instructions, by performing the steps of:
-
issuing a first set of instructions for a first thread group; issuing a second set of instructions for a second thread group; detecting a rollback condition for at least one thread in the first thread group during pre-execution processing of an instruction in the first set of instructions; stopping issuing of additional instructions in the first set of instructions for the first thread group; discarding in-flight instructions that have issued and have not been executed in the first set of instructions; and executing the second set of instructions for the second thread group.
-
Specification