IP Library Granted Patent US 8,041,931
Granted Patent B2
US 8,041,931 · App. 12/046,066 · Granted Oct 18, 2011

Branch prediction apparatus, systems, and methods

Assignee: The Board of Regents, The University of Texas System
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 8,041,931
App. No.
12/046,066
Granted
Oct 18, 2011
Kind
B2
Abstract

An apparatus and a system, as well as a method and article, may operate to predict a branch within a first operating context, such as a user context, using a first strategy; and to predict a branch within a second operating context, such as an operating system context, using a second strategy. In some embodiments, apparatus and systems may comprise one or more first storage locations to store branch history information associated with a first operating context, and one ore more second storage locations to store branch history information associated with a second operating context.

Claims (63)

1. A method, comprising:

storing correlated branch history information associated with an execution of a plurality of non-operating system instructions in a first branch history register and in a first portion of a split branch history table;

storing correlated branch history information associated with an execution of a plurality of operating system instructions in a second branch history register and in a second portion of the split branch history table, wherein the first and second branch history registers are separated, and the first and second portions of the split branch history table are different portions; and

making branch prediction, by an agree branch predictor, for the execution of the non-operating system or operating system instructions based on the correlated branch history information of the non-operating system and operating system instructions stored in the first and second branch history registers, and the first and second portions of the split branch history table.

2. The method of claim 1 , wherein the agree branch predictor comprises a Gshare branch predictor.

3. A method, comprising:

storing correlated branch history information associated with a first operating context selected from a preselected plurality of operating contexts in a first branch history register and a first portion of a split branch history table;

storing correlated branch history information associated with a second operating context selected from the preselected plurality of operating contexts in a second branch history register and a second portion of the split branch history table, wherein the first and second branch history registers are separated, and the first and second portions of the split branch history table are different portions; and

making branch prediction, by an agree branch predictor, for the first or the second operating context based on the correlated branch history information stored in the first and second branch history registers, and the first and second portions of the split branch history table.

4. A method, comprising:

storing correlated branch history information associated with an execution of a plurality of non-operating system instructions in a first branch history register;

storing correlated branch history information associated with an execution of a plurality of operating system instructions in a second branch history register, wherein the first and second branch history registers are separated; and

making branch prediction, by a multi-hybrid branch predictor having a Gshare branch predictor, for the execution of the non-operating system or operating system instructions based at least in part on the correlated branch history information stored in the first and second branch history registers.

5. The method of claim 4 , further comprising:

storing correlated branch history information associated with an execution of the plurality of non-operating system instructions in a first portion of a split branch history table; and

storing correlated branch history information associated with an execution of the plurality of operating system instructions in a second portion of the split branch history table, wherein the first and second portions of the split branch history table are different portions;

wherein making branch prediction, by the multi-hybrid branch predictor, for the execution of the non-operating system or operating system instructions is further based on the correlated branch history information stored in the first and second portions of the split branch history table.

6. A method, comprising:

storing correlated branch history information associated with a first operating context selected from a preselected plurality of operating contexts in a first branch history register;

storing correlated branch history information associated with a second operating context selected from the preselected plurality of operating contexts in a second branch history register, wherein the first and second branch history registers are separated; and

making branch prediction, by a multi-hybrid branch predictor having a Gshare branch predictor, for the first or the second operating context based on the correlated branch history information stored in the first and second branch history registers.

7. A method, comprising:

storing correlated branch history information associated with an execution of a plurality of non-operating system instructions in a first branch history register;

storing correlated branch history information associated with an execution of a plurality of operating system instructions in a second branch history register, wherein the first and second branch history registers are separated; and

making branch prediction, by a bi mode branch predictor having a Gshare branch predictor, for the execution of the instructions based at least in part on the correlated branch history information stored in the first and second branch history registers.

8. The method of claim 7 , further comprising:

storing correlated branch history information associated with an execution of the plurality of non-operating system instructions in a first portion of a split branch history table; and

storing correlated branch history information associated with an execution of the plurality of operating system instructions in a second portion of the split branch history table, wherein the first and second portions of the split branch history table are different portions;

wherein making branch prediction, by the bi mode branch predictor, for the execution of the non-operating system or operating system instructions is further based on the correlated branch history information stored in the first and second portions of the split branch history table.

9. A method, comprising:

storing correlated branch history information associated with a first operating context selected from a preselected plurality of operating contexts, in a first branch history register;

storing correlated branch history information associated with a second operating context selected from the preselected plurality of operating contexts, in a second branch history register, wherein the first and second branch history registers are separated; and

making branch prediction, by a bi mode branch predictor having a Gshare branch predictor, for the first or the second operating context based at least in part on the correlated branch history information stored in the first and second branch history registers.

10. A method, comprising:

storing separately, by an apparatus, correlated branch history information associated with a first operating context and a second operating context of the apparatus in a first branch history register and a second branch history register, respectively, wherein the first and second branch history registers are separated;

storing separately, by an apparatus, correlated branch history information associated with the first operating context and the second operating context of the apparatus in a first portion of a split branch history table and a second portion of the split branch history table, respectively, wherein the first and second portions of the split branch history table are different portions;

determining, by the apparatus, whether a current operating context of the apparatus is the first operating context or the second operating context;

accessing, by the apparatus, the separately stored correlated branch history information in the first and second branch history registers, and the first and second portions of the split ranch history table; and

making branch prediction for the current operating context, by the apparatus, using the accessed correlated branch history information, and a result of the determining.

11. The method of claim 10 wherein the first context comprises non-operating system instructions, and the second context comprises operating system instructions.

12. An article of manufacture, comprising:

a non-transitory computer-readable storage medium; and

instructions stored in the non-transitory computer-readable storage medium, and configured to cause an apparatus, in response to processing of the instructions by the apparatus, to:

determine whether a current operating context of the apparatus is a first operating context or a second operating context, wherein correlated branch history information associated with the first operating context and the second operating context are separately stored by the apparatus in a first and a second branch history registers that are separated, and in a first and a second portion of a split branch history table that are different portions;

access the separately stored correlated branch history information in the first and second branch history registers, and the first and second portions of the split branch history table; and

make branch prediction for the current operating context, by an agree branch predictor, using the accessed correlated branch history information and a result of the determine.

13. The article of claim 12 wherein the first context comprises non-operating system instructions, and the second context comprises operating system instructions.

14. The method of claim 10 , wherein said determining whether the current operating context of the apparatus is the first operating context or the second operating context comprises determining the current operating context based at least in part on a type of instruction previously executed.

15. An article of manufacture, comprising:

a non-transitory computer-readable storage medium; and

instructions stored in the non-transitory computer-readable storage medium, and configured to cause an apparatus, in response to processing of the instructions by the apparatus, to:

store correlated branch history information associated with an execution of a plurality of non-operating system instructions in a first branch history register, and a first portion of a split branch history table;

store correlated branch history information associated with an execution of a plurality of operating system instructions in a second branch history register, and a second portion of the split branch history table, wherein the first and second branch history registers are separated, and the first and second portions of the split branch history table are different portions;

make branch prediction, by an agree branch predictor, for the execution of the non-operating system or operating system instructions based on the correlated branch history information stored in the first and second branch history registers, and the first and second portions of the split branch history table.

16. The article of claim 15 , wherein the agree branch predictor comprises a Gshare branch predictor.

17. The method of claim 6 , further comprising:

storing correlated branch history information associated with an execution of the first context in a first portion of a split branch history table; and

storing correlated branch history information associated with an execution of the second context in a second portion of the split branch history table, wherein the first and second portions of the split branch history table are different portions of the split branch history table;

wherein making branch prediction, by the multi-hybrid branch predictor, for the execution of the first or the second context is further based on the correlated branch history information stored in the first and second portions of the split branch history table.

18. The method of claim 9 , further comprising:

storing correlated branch history information associated with an execution of the first context in a first portion of a split branch history table; and

storing correlated branch history information associated with an execution of the second context in a second portion of the split branch history table, wherein the first and second portions of the split branch history table are different portions of the split branch history table;

wherein making branch prediction, by the bi-mode branch predictor, for the execution of the first or the second context is further based on the correlated branch history information stored in the first and second portions of the split branch history table.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE FILED UNDER WRONG CONVEYANCE TYPE, SHOULD BE LICENSE PREVIOUSLY RECORDED ON REEL 020919 FRAME 0467. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 30, 2008
From: THE BOARD OF REGENTS, THE UNIVERSITY OF TEXAS SYSTEM
To: INTELLECTUAL VENTURES HOLDING 40 LLC
Reel/Frame 021018/0551 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2008
From: THE BOARD OF REGENTS, THE UNIVERSITY OF TEXAS SYSTEM
To: INTELLECTUAL VENTURES HOLDING 40 LLC
Reel/Frame 021001/0464 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2008
From: THE BOARD OF REGENTS, THE UNIVERSITY OF TEXAS SYSTEM
To: INTELLECTUAL VENTURES HOLDING 40 LLC
Reel/Frame 020919/0467 →
Continuity (3)
Continuation 10822553 · Apr 12, 2004
Provisional Application 60462513 · Apr 11, 2003
Related Publication 20080215866A1 · Sep 4, 2008