System and method for speculative execution in a geometry accelerator
First Claim
1. A method for performing speculative execution of state machine operation in a graphics accelerator, comprising the steps of:
- (a) executing steps in a graphic primitive transformation state machine;
(b) receiving second to last primitive vertex parameters into the transformation state machine;
(c) evaluating branch codes that indicate whether steps in a clipping state machine need to be executed, based upon the primitive vertex parameters already received;
(d) branching and beginning execution of steps in another state machine, based upon tentative values of the branch codes, and continuing execution of the steps in the transformation state machine in parallel with the execution of the steps in the another state machine;
(e) reevaluating the branch codes after a predetermined number of states, at which time the value of the branch codes is no longer tentative, but determinative of the next state information;
(f) invoking a reset condition, aborting execution of the steps in the another state machine, and returning execution to a predetermined step in the transformation state machine, if the branch codes of the evaluating and reevaluating steps are inconsistent; and
(g) terminating the execution of the transformation state machine and continuing the execution of the steps in the another state machine, if the branch codes of the evaluating and reevaluating steps are consistent.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and method for performing speculative execution of state machine operation in a graphics accelerator. In accordance with one aspect of the invention, the method includes the step of executing steps in a first state machine that is operating on a graphic primitive. As is known, a graphic primitive is defined by a plurality of vertices. In accordance with the invention, the preferred embodiment receives the coordinate parameters for the second to last primitive vertex. Then it evaluates one or more conditions that indicate whether steps in a second state machine need to be executed, based upon parameters of primitive vertices already received. It then branches to and begins executing steps in another state machine, based upon the tentative conditions, and continuing execution of the steps in the transformation state machine in parallel with the continued execution of the steps in the another state machine. After a predetermined number of states, the method reevaluates the one or more conditions, at which time the value of the one or more conditions is no longer tentative, but determinative of the next state information. Then, the method invokes a reset condition, aborts execution of the steps in the another state machine, and returns execution to a predetermined step in the first state machine, if the one or more conditions of the evaluating and reevaluating steps are inconsistent. If, however, the one or more conditions of the evaluating and reevaluating steps are equal or consistent, the method terminates the execution of the first state machine and continues executing the steps in the another state machine.
-
Citations
25 Claims
-
1. A method for performing speculative execution of state machine operation in a graphics accelerator, comprising the steps of:
-
(a) executing steps in a graphic primitive transformation state machine; (b) receiving second to last primitive vertex parameters into the transformation state machine; (c) evaluating branch codes that indicate whether steps in a clipping state machine need to be executed, based upon the primitive vertex parameters already received; (d) branching and beginning execution of steps in another state machine, based upon tentative values of the branch codes, and continuing execution of the steps in the transformation state machine in parallel with the execution of the steps in the another state machine; (e) reevaluating the branch codes after a predetermined number of states, at which time the value of the branch codes is no longer tentative, but determinative of the next state information; (f) invoking a reset condition, aborting execution of the steps in the another state machine, and returning execution to a predetermined step in the transformation state machine, if the branch codes of the evaluating and reevaluating steps are inconsistent; and (g) terminating the execution of the transformation state machine and continuing the execution of the steps in the another state machine, if the branch codes of the evaluating and reevaluating steps are consistent. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for performing speculative execution of state machine operation in a graphics accelerator, comprising the steps of:
-
(a) executing steps in a first state machine operating on a graphic primitive; (b) receiving second to last primitive vertex parameters; (c) evaluating one or more tentative conditions that indicate whether steps in a second state machine need to be executed, based upon the primitive vertex parameters already received; (d) branching and beginning execution of steps in another state machine, based upon the tentative conditions, and continuing execution of the steps in the transformation state machine in parallel with the continued execution of the steps in the another state machine; (e) reevaluating the one or more tentative conditions after a predetermined number of states, at which time the value of the one or more tentative conditions is no longer tentative, but determinative of the next state information; (f) invoking a reset condition, aborting execution of the steps in the another state machine, and returning execution to a predetermined step in the first state machine, if the one or more conditions of the evaluating and reevaluating steps are inconsistent; and (g) terminating the execution of the first state machine and continuing the execution of the steps in the another state machine, if the one or more conditions of the evaluating and reevaluating steps are consistent. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A system for improving execution in a graphics accelerator comprising having a plurality of state machines, the plurality of state machines having a shared data and control bus, the system comprising:
-
a controller for controlling the execution of the plurality of state machines, the controller particularly adapted to provide limited parallel execution of the plurality of state machines; a read only memory (ROM) containing program code executed by the controller; a code location including information relating to branching conditions; a first state machine defined to execute a plurality of steps, and having a predetermined sequence ending state S1; second and third state machines, defined by the controller to substantially execute after the execution of the first state machine, but the second and third state machines having one or more steps for execution in parallel with one or more steps of the first state machine; evaluation means for evaluating the code location at a state S2 that occurs prior to the occurrence of state S1; branching means responsive to the evaluation means for branching to the second state machine prior to the occurrence of state S1; reevaluation means, operative upon or after the occurrence of state S1, for reevaluating the code location; and terminating means responsive to the reevaluation means for terminating execution of the second state machine if the code location has changed since evaluation by the evaluation means, the terminating means further operative to return operation back to first state machine at a predetermined point of operation. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A computer readable storage medium containing program code for controlling the speculative execution of state machine operation in a graphics accelerator, comprising:
-
(a) a first code segment for executing steps in a first state machine operating on a graphic primitive; (b) a second code segment for receiving the second to last primitive vertex parameters; (c) a third code segment for evaluating one or more conditions that indicate whether steps in a second state machine need to be executed, based upon the primitive vertex parameters already received; (d) a fourth code segment for branching and beginning execution of steps in another state machine, based upon the tentative conditions, and continuing execution of the steps in the transformation state machine in parallel with the continued execution of the steps in the another state machine; (e) a fifth code segment for reevaluating the one or more conditions after a predetermined number of states, at which time the value of the one or more conditions is no longer tentative, but determinative of the next state information; (f) a sixth code segment for invoking a reset condition, aborting execution of the steps in the another state machine, and returning execution to a predetermined step in the first state machine, if the one or more conditions of the evaluating and reevaluating steps are inconsistent; and (g) a seventh code segment for terminating the execution of the first state machine and continuing the execution of the steps in the another state machine, if the one or more conditions of the evaluating and reevaluating steps are consistent.
-
-
25. A computer readable storage medium containing program code for controlling the execution of a graphics accelerator comprising having a plurality of state machines, the plurality of state machines having a shared data and control bus, the graphics accelerator comprising:
-
a controller for controlling the execution of the plurality of state machines, the controller particularly adapted to provide limited parallel execution of the plurality of state machines; a read only memory (ROM) containing program code executed by the controller; a code location including information relating to branching conditions; a first state machine defined to execute a plurality of steps, and having a predetermined sequence ending state S1; second and third state machines, defined by the controller to substantially execute after the execution of the first state machine, but the second and third state machines having one or more steps for execution in parallel with one or more steps of the first state machine; evaluation means for evaluating the code location at a state S2 that occurs prior to the occurrence of state S1; branching means responsive to the evaluation means for branching to the second state machine prior to the occurrence of state S1; reevaluation means, operative upon or after the occurrence of state S1, for reevaluating the code location; and terminating means responsive to the reevaluation means for terminating execution of the second state machine if the code location has changed since evaluation by the evaluation means, the terminating means further operative to return operation back to first state machine at a predetermined point of operation.
-
Specification