IP Library › Granted Patent US 7,114,059
Granted Patent B2
US 7,114,059 · App. 09/992,881 · Granted Sep 26, 2006

System and method to bypass execution of instructions involving unreliable data during speculative execution

Assignee: Intel Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,114,059
App. No.
09/992,881
Granted
Sep 26, 2006
Kind
B2
Abstract

System and method to reduce execution of instructions involving unreliable data in a speculative processor. A method comprises identifying scratch values generated during speculative execution of a processor, and setting at least one tag associated with at least one data area of the processor to indicate that the data area holds a scratch value. Such data areas include registers, predicates, flags, and the like. Instructions may also be similarly tagged. The method may be executed by an execution engine in a computer processor.

Claims (92)

1. A method comprising:

identifying scratch values generated during speculative execution of a processor,

setting a tag associated with a register to indicate that the register holds a scratch value, when an instruction having the register as a destination results in a cache miss; and

bypassing execution of instructions having at least one operand with an associated tag that indicates that the operand is a scratch value.

2. The method of claim 1 further comprising:

propagating the tag to destination registers of the instructions to indicate that an operand within the destination registers is a scratch value.

3. The method of claim 1 further comprising:

bypassing execution of an arithmetic instruction having at least one register as an operand with an associated tag indicating that the register contains data that is a scratch value; and

bypassing execution of a store instruction involving a value derived from a register having an associated tag indicating that the register contains data that is a scratch value.

4. The method of claim 1 further comprising:

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

5. The method of claim 1 further comprising:

marking each instruction in a pipeline with a tag to indicate if the instruction involves a scratch value.

6. The method of claim 1 further comprising:

propagating the tag through a store buffer if an address generation register does not indicate that the address generation register holds a scratch value.

7. A processor comprising:

a plurality of registers having a corresponding plurality of register tags to indicate whether the data stored in the register holds a scratch value;

a plurality of flags having a corresponding plurality of flag rags to indicate whether the data reflected by the flag is based on a scratch value;

a plurality of predicates having a corresponding plurality of predicate tags to indicate whether the data reflected by the predicate is based on a scratch value; and

an execution engine to bypass execution of instructions having at least one operand with an associated tag that indicates that the operand is a scratch value.

8. The processor of claim 7 having an instruction set including a plurality of instructions, each instruction augmented by an instruction tag to indicate whether the instruction involves a scratch value.

9. The processor of claim 8 wherein the register tags, flag tags, predicate tags, and instruction tags have a size of one bit.

10. The processor of claim 8 wherein the register tags, flag tags, predicate tags and instruction tags have a size of at least two bits.

11. A processor comprising:

at least two arithmetic units;

a translation look aside buffer;

a branch prediction unit; and

an execution engine having a plurality of instructions which when executed cause the processor to perform actions including;

identifying scratch values generated during speculative execution of a processor,

setting a tag associated with a register to indicate that the register holds a scratch value, when an instruction having the register as a destination results in a cache miss; and

bypassing execution of instructions having at least one operand with an associated tag that indicates that the operand is a scratch value.

12. The processor of claim 11 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

propagating the tag to destination registers of the instructions to indicate that the operand within the destination registers is a scratch value.

13. The processor of claim 11 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

bypassing execution of an arithmetic instruction having at least one register as an operand with an associated tag indicating tat the register contains data that is a scratch value; and

bypassing execution of a store instruction involving a value derived from the register having an associated tag indicating that the register contains data that is a scratch value.

14. The processor of claim 11 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

15. The processor of claim 11 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

marking each instruction in a pipeline with a tag to indicate if the instruction involves a scratch value.

16. The processor of claim 11 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

propagating the tag through a store buffer if an address generation register does not indicate that the address generation register holds a scratch value.

17. A system comprising:

a memory, a storage device, and a processor each coupled to a bus;

the processor including an execution engine having instructions which when executed by the processor cause the processor to perform actions including:

identifying scratch values generated during speculative execution of a processor;

setting a tag associated with a resister to indicate that the register holds a scratch value, when an instruction having the register as a destination results in a cache miss; and

bypassing execution of instructions having at least one operand with an associated tag that indicates tat the operand is a scratch value.

18. The system of claim 17 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

propagating the tag to destination registers of the instructions indicate that an operand within the destination registers is a scratch value.

19. The system of claim 17 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

bypassing execution of an arithmetic instruction having at least one register as an operand with an associated tag indicating that the register contains data that is a scratch value; and

bypassing execution of a store instruction involving a value derived from the register having an associated tag indicating that the register contains data that is a scratch value.

20. The system of claim 17 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

21. The system of claim 17 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

marking each instruction in a pipeline with a tag to indicate if the instruction involves a scratch value.

22. The system of claim 17 wherein the execution engine has further instructions which when executed cause the processor to perform further actions comprising:

propagating the tag through a store buffer if an address generation register does not indicate that the address generation register holds a scratch value.

23. A machine readable medium having instructions stored thereon which when executed by a processor cause the processor to perform actions including:

identifying scratch values generated during speculative execution of a processor;

setting tag associated with register to indicate that the register holds a scratch value, when an instruction having the register as a destination results in a cache miss; and

bypassing execution of instructions having at least one operand with an associated tag that indicates that the operand is a scratch value.

24. The machine readable medium of claim 23 having further instructions which when executed cause the processor to perform further actions comprising:

propagating the tag to destination registers of the instructions to indicate that an operand within the destination registers is a scratch value.

25. The machine readable medium of claim 23 having further instructions which when executed cause the processor to perform further actions comprising:

bypassing execution of an arithmetic instruction having at least one register as an operand with an associated tag indicating that the register contains data that is a scratch value; and

bypassing execution of a store instruction involving a value derived from the register having an associated tag indicating that the register contains data that is a scratch value.

26. The machine readable medium of claim 23 having further instructions which when executed cause the processor to perform further actions comprising:

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

27. A method comprising:

identifying scratch values generated during speculative execution of a processor;

setting at least one tag associated with at least one data area of the processor to indicate that the data area holds a scratch value; and

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

28. A processor comprising:

at least two arithmetic units;

a translation look aside buffer;

a branch prediction unit; and

an execution engine having a plurality of instructions which when executed cause the processor to perform actions including:

identifying scratch values generated during speculative execution of a processor,

setting at least one tag associated with at least one data area of the processor to indicate that the data area holds a scratch value, and

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

29. A system comprising:

a memory, a storage device, and a processor each coupled to a bus;

the processor including an execution engine having instructions which when executed by the processor cause the processor to perform actions including:

identifying scratch values generated during speculative execution of a processor,

setting at least one tag associated with at Least one data area of the processor to indicate that the data area holds a scratch value, and

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

30. A machine readable medium having instructions stored thereon which when executed by a processor cause the processor to perform actions including:

identifying scratch values generated during speculative execution of a processor;

selling at least one tag associated wit at least one data area of the processor to indicate that the data area holds a scratch value; and

utilizing a branch predictor to override computed branch results produced by branch instructions based on data having a tag that indicates the data is a scratch value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2001
From: WILKERSON, CHRISTOPHER B.
To: INTEL CORPORATION
Reel/Frame 012328/0021 →
Continuity (1)
Related Publication 20030088759A1 · May 8, 2003