IP Library Granted Patent US 7,941,607
Granted Patent B1
US 7,941,607 · App. 11/782,140 · Granted May 10, 2011

Method and system for promoting traces in an instruction processing circuit

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,941,607
App. No.
11/782,140
Granted
May 10, 2011
Kind
B1
Abstract

A method and system for promoting traces in an instruction processing circuit is disclosed. The method and system comprises determining if a current trace is promotable; and adding the current trace to a sequence buffer if the current trace is promotable. The current trace is marked as promoted and the current trace is marked as a first trace of a multi-block trace. The method and system includes determining if a next trace is promotable; adding the next trace to the sequence buffer if the next trace is promotable; and repeating the above until the next trace is not promotable and then adding the next trace to the sequence buffer if the next trace is not promotable.

Claims (80)

1. A method for promoting a sequence of traces in an instruction processing circuit, each trace of the sequence of traces are retrieved from a plurality of sources in an order determined by a sequencer circuit, the method comprising:

obtaining, from the sequencer circuit, a current trace in the sequence of traces;

determining if the current trace is promotable based on a pre-determined criterion;

adding the current trace to a sequencing buffer and marking the current trace, by storing a first promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable;

adding the current trace to the sequencing buffer without marking the current trace as promoted if the current trace is not promotable;

obtaining, from the sequencer circuit and in response to adding the current trace to the sequencing buffer, a next trace following the current trace in the sequence of traces according to the order;

determining if the next trace is promotable based on the pre-determined criterion;

adding the next trace to the sequencing buffer without marking the next trace as promoted if both the current trace and the next trace are not promotable;

adding the next trace to the sequencing buffer and marking the next trace, by storing a second promotion flag thereof in the sequencing buffer, as promoted if the next trace is promotable;

adding the next trace to the sequencing buffer and marking the next trace, by storing a third promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable and the next trace is not promotable;

combining at least the current trace and the next trace from the sequencing buffer to build a multi-block trace in response to marking both the current trace and the next trace as promoted; and

executing the multi-block trace as an atomically executed unit.

2. The method of claim 1 wherein determining if the next trace is promotable based on the pre-determined criterion comprises determining the next trace as not promotable if the next trace is at least one selected from a group consisting of being non-speculatively executed and a single instruction trace.

3. The method of claim 1 , further comprising:

determining a bias of the next trace based on a branching history of the next trace,

wherein the bias corresponds to an number of times a branch instruction in the next trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the next trace to a promotion threshold.

4. The method of claim 1 , wherein the current trace comprises another multi-block trace.

5. The method of claim 1 , wherein the next trace comprises another multi-block trace.

6. The method of claim 1 , further comprising:

determining a bias of the current trace based on a branching history of the current trace,

wherein the bias corresponds to an number of times a branch instruction in the current trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the current trace to a promotion threshold.

7. The method of claim 6 , further comprising:

determining the promotion threshold based on efficiency for combining a portion of the sequence of traces for execution, and

wherein the promotion threshold is a dynamically alterable value.

8. A computer readable medium containing program instructions for promoting a sequence of traces in an instruction processing circuit, each trace of the sequence of traces are retrieved from a plurality of sources in an order determined by a sequencer circuit, the instructions when executed by a computer comprising functionality for:

obtaining, from the sequencer circuit, a current trace in the sequence of traces;

determining if the current trace is promotable based on a pre-determined criterion;

adding the current trace to a sequencing buffer and marking the current trace, by storing a first promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable;

adding the current trace to the sequencing buffer without marking the current trace as promoted if the current trace is not promotable;

obtaining, from the sequencer circuit and in response to adding the current trace to the sequencing buffer, a next trace following the current trace in the sequence of traces according to the order;

determining if the next trace is promotable based on the pre-determined criterion;

adding the next trace to the sequencing buffer without marking the next trace as promoted if both the current trace and the next trace are not promotable;

adding the next trace to the sequencing buffer and marking the next trace, by storing a second promotion flag thereof in the sequencing buffer, as promoted if the next trace is promotable;

adding the next trace to the sequencing buffer and marking the next trace, by storing a third promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable and the next trace is not promotable;

combining at least the current trace and the next trace from the sequencing buffer to build a multi-block trace in response to marking both the current trace and the next trace as promoted; and

executing the multi-block trace as an atomically executed unit.

9. The computer readable medium of claim 8 wherein determining if the next trace is promotable based on the pre-determined criterion comprises determining the next trace as not promotable if the next trace is at least one selected from a group consisting of being non-speculatively executed and a single instruction trace.

10. The computer readable medium of claim 8 , the instructions when executed by the computer further comprising functionality for:

determining a bias of the next trace based on a branching history of the next trace,

wherein the bias corresponds to an number of times a branch instruction in the next trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the next trace to a promotion threshold.

11. The computer readable medium of claim 8 , wherein the current trace comprises another multi-block trace.

12. The computer readable medium of claim 8 , wherein the next trace comprises another multi-block trace.

13. The computer readable medium of claim 8 , the instructions when executed by the computer further comprising functionality for:

determining a bias of the current trace based on a branching history of the current trace,

wherein the bias corresponds to an number of times a branch instruction in the current trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the current trace to a promotion threshold.

14. The computer readable medium of claim 13 , the instructions when executed by the computer further comprising functionality for:

determining the promotion threshold based on efficiency for combining a portion of the sequence of traces for execution, and

wherein the promotion threshold is a dynamically alterable value.

15. A system for promoting a sequence of traces in an instruction processing circuit, the system comprising:

a sequencer circuit configure for:

identifying a current trace in the sequence of traces;

determining if the current trace is promotable based on a pre-determined criterion;

adding the current trace to a sequencer buffer and marking the current trace, by storing a first promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable;

adding the current trace to the sequencer buffer without marking the current trace as promoted if the current trace is not promotable;

identifying, in response to adding the current trace to the sequencer buffer, a next trace following the current trace in the sequence of traces;

determining if the next trace is promotable based on the pre-determined criterion;

adding the next trace to the sequencer buffer without marking the next trace as promoted if both the current trace and the next trace are not promotable;

adding the next trace to the sequencer buffer and marking the next trace, by storing a second promotion flag thereof in the sequencing buffer, as promoted if the next trace is promotable; and

adding the next trace to the sequencer buffer and marking the next trace, by storing a third promotion flag thereof in the sequencing buffer, as promoted if the current trace is promotable and the next trace is not promotable;

the sequencer buffer operatively coupled to the sequencer circuit and configured for storing the current trace and the next trace;

a multi-block builder circuit operatively coupled to the sequencer buffer and configured to combine at least the current trace and the next trace from the sequencer buffer to build a multi-block trace in response to marking both the current trace and the next trace as promoted; and

an execution unit configured to execute the multi-block trace as an atomically executed unit.

16. The system of claim 15 , the sequencer circuit further configured for:

determining a bias of the next trace based on a branching history of the next trace,

wherein the bias corresponds to an number of times a branch instruction in the next trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the next trace to a promotion threshold.

17. The system of claim 15 , the sequencer circuit further configured for:

determining a bias of the current trace based on a branching history of the current trace,

wherein the bias corresponds to an number of times a branch instruction in the current trace has been branching to a same target address, and

wherein the pre-determined criterion comprises comparing the bias of the current trace to a promotion threshold.

18. The system of claim 17 , the sequencer circuit further configured for:

determining the promotion threshold based on efficiency for combining a portion of the sequence of traces for execution, and

wherein the promotion threshold is a dynamically alterable value.

19. The system of claim 15 determining if the next trace is promotable based on the pre-determined criterion comprises determining the next trace as not promotable if the next trace is at least one selected from a group consisting of being non-speculatively executed and a single instruction trace.

20. The system of claim 19 , wherein the current trace comprises another multi-block trace.

21. The system of claim 19 , wherein the next trace comprises another multi-block trace.

Assignments (3)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0101 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2008
From: MONTALVO SYSTEMS, INC.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 021731/0700 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 8, 2008
From: THAIK, RICHARD; FAVOR, JOHN GREGORY; ROWLANDS, JOSEPH; SHAR, LEONARD ERIC; ASHCRAFT, MATTHEW WILLIAM
To: MONTALVO SYSTEMS, INC.
Reel/Frame 020335/0433 →