# US 2014/0156977 A1 · Enabling and disabling a second jump execution unit for branch misprediction

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156977 A1
- Document ID: US20140156977A1
- Status: Published application
- Kind: A1
- Application number: 13/994,699
- Filed: 2011-12-28
- Published: 2014-06-05
- Earliest claimed: 2011-12-28
- Inventors: Mark J. Dechene; Matthew C. Merten; Sean P. Mirkes
- Web page: https://patentgrep.com/patent/US20140156977A1

## CPC

- G06F 9/3861: {Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00)}
- G06F 9/3844: {using dynamic branch prediction, e.g. using branch history tables}
- G06F 9/3851: {from multiple instruction streams, e.g. multistreaming}
- G06F 9/3885: {using a plurality of independent parallel functional units}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are described for enabling and/or disabling a secondary jump execution unit (JEU) in a micro-processor. The secondary JEU is incorporated in the micro-processor to operate concurrently with a primary JEU, and to enable the handling of simultaneous branch mispredicts on multiple branches. Activation and deactivation of the secondary JEU may be controlled by a pressure counter or a confidence counter. A pressure counter mechanism increments a count for each branch operation executed within the processor and decrements the count by a decay value during each cycle. A confidence counter mechanism increments a count for each correctly predicted branch, and decrements the count for each mispredict. Each counter signals an activation component, such as a port binding hardware component, to begin binding micro-operations to the secondary JEU when the counter exceeds an activation threshold. The counter mechanism may be thread-agnostic or thread-specific.

## Claims

### Claim 1

A processor comprising:
a first jump execution unit (JEU) for branch operation evaluation;
a second JEU for branch operation evaluation, the second JEU to operate in parallel with the first JEU; and
an activation component to activate the second JEU based at least partly on a number of branch mispredicts identified by the first JEU.

### Claim 2 (depends on 1)

The processor of claim 1, wherein the activation component employs a port binding algorithm.

### Claim 3 (depends on 1)

The processor of claim 1, further comprising a confidence counter to track a confidence count based on the number of branch mispredicts, and to signal the activation component to activate the second JEU when the confidence count exceeds an activation confidence threshold.

### Claim 4 (depends on 3)

The processor of claim 3, wherein the confidence counter signals the activation component to deactivate the second JEU when the confidence count drops below a deactivation confidence threshold.

### Claim 5 (depends on 3)

The processor of claim 3, wherein the confidence count is dynamically adjustable.

### Claim 6 (depends on 3)

The processor of claim 3, wherein the confidence count is further based on a second number of branch mispredicts identified by the second JEU.

### Claim 7 (depends on 1)

The processor of claim 1, the first JEU and the second JEU operating in parallel to concurrently detect a first mispredict on a first branch and a second mispredict on a second branch.

### Claim 8

A processor comprising:
a first jump execution unit (JEU) to evaluate a first branch operation for a first branch mispredict;
a counter to count a number of branch operations evaluated by the first JEU; and
a second JEU that is activated at least partly based on the counted number of branch operations, the second JEU activated to evaluate a second branch operation for a second branch mispredict during a same instruction cycle as the first JEU evaluates the first branch operation.

### Claim 9 (depends on 8)

The processor of claim 8, further comprising an activation component to activate the second JEU using a port binding algorithm.

### Claim 10 (depends on 9)

The processor of claim 9, wherein the counter signals the activation component to activate the second JEU based on the counted number of branch operations.

### Claim 11 (depends on 8)

The processor of claim 8, wherein the counter counts the number of branch operations for all threads executing on the processor.

### Claim 12 (depends on 8)

The processor of claim 8, wherein the counter counts the number of branch operations separately for each thread executing on the processor.

### Claim 13 (depends on 8)

The processor of claim 8, wherein the counter is a pressure counter that increments a pressure count in response an execution of a branch operation by either the first JEU or the second JEU, and that decrements the pressure count during each instruction cycle.

### Claim 14 (depends on 13)

The processor of claim 13, wherein the pressure counter signals an activation component of the processor to activate the second JEU when the pressure count exceeds an activation threshold.

### Claim 15 (depends on 13)

The processor of claim 13, wherein the pressure counter signals an activation component of the processor to deactivate the second JEU when the pressure count drops below a deactivation threshold.

### Claim 16 (depends on 8)

The processor of claim 8, wherein the counter is a pressure counter that increments a pressure count in response to the first JEU executing a branch operation, and the decrements the pressure count during each instruction cycle.

### Claim 17

A method comprising:
resolving a first branch by a primary jump execution unit (JEU) of a processor;
decrementing a pressure count by a decay value during each of a plurality of instruction cycles;
incrementing the pressure count by an increment value during each of the plurality of instruction cycles in which a branch operation is detected; and
activating a secondary JEU of the processor to operate in parallel with the primary JEU based on the pressure count exceeding an activation threshold value, the secondary JEU activated to resolve a second branch during a same instruction cycle as the primary JEU resolves the first branch.

### Claim 18 (depends on 17)

The method of claim 17, wherein activating the secondary JEU includes sending a signal to a port binding component of the processor, the port binding component binding one or more branch operations to a port of the secondary JEU in response to the signal.

### Claim 19 (depends on 17)

The method of claim 17, further comprising deactivating the secondary JEU when the pressure count falls below a deactivation threshold value.

### Claim 20 (depends on 19)

The method of claim 19, wherein at least one of the decay value, the increment value, the activation threshold value, or the deactivation threshold value is dynamically adjustable.

### Claim 21 (depends on 17)

The method of claim 17, further comprising binding one or more branch operations to the primary JEU and the secondary JEU based on a balancing criterion, when the secondary JEU is active.

### Claim 22

A method comprising:
resolving a first branch by a primary jump execution unit (JEU) of a processor;
incrementing a confidence count by an increment value, for each correctly predicted branch operation;
decrementing the confidence count by a decrement value, for each incorrectly predicted branch operation; and
activating a secondary jump execution unit (JEU) of the processor to operate in parallel with the primary JEU based on the confidence count exceeding an activation threshold value, the secondary JEU activated to resolve a second branch during a same instruction cycle as the primary JEU resolves the first branch.

### Claim 23 (depends on 22)

The method of claim 22, wherein activating the secondary JEU includes sending a signal to a port binding component of the processor, the port binding component binding one or more branch operations to a port of the secondary JEU in response to the signal.

### Claim 24 (depends on 22)

The method of claim 22, further comprising deactivating the secondary JEU when the confidence count falls below a deactivation threshold value.

### Claim 25 (depends on 24)

The method of claim 24, wherein at least one of the increment value, the decrement value, the activation threshold value, or the deactivation threshold value is dynamically adjustable.

### Claim 26 (depends on 22)

The method of claim 22, wherein activating the secondary JEU includes:
sending a signal to a port binding component of the processor based on the confidence count exceeding the activation threshold value; and
at the port binding component, binding one or more branch operations to the primary JEU or the secondary JEU based on a port balancing criterion and in response to the signal.

### Claim 27

A system comprising:
at least one processing unit including:
a first jump execution unit (JEU) for branch operation evaluation;
a second JEU for branch operation evaluation; and
an activation component to activate the second JEU based at least partly on detected branch operations of the first JEU, the second JEU activated to operate in parallel with the first JEU.

### Claim 28 (depends on 27)

The system of claim 27, wherein the activation component is a port binding component of the at least one processing unit.

### Claim 29 (depends on 27)

The system of claim 27, wherein the at least one processing unit further includes a counter component that signals the activation component to activate the second JEU based at least partly on the detected branch operations.

### Claim 30 (depends on 29)

The system of claim 29, wherein the counter component is a pressure counter that keeps a pressure count for a number of branch operations executed by the first JEU, and that signals the activation component to activate the second JEU when the pressure count exceeds an activation threshold value.

### Claim 31 (depends on 29)

The system of claim 29, wherein the counter component is a pressure counter that keeps a pressure count for a number of branch operations executed by the first JEU and the second JEU, and that signals the activation component to activate the second JEU when the pressure count exceeds an activation threshold value.

### Claim 32 (depends on 29)

The system of claim 29, wherein the counter component is a confidence counter that keeps a confidence count for a number of mispredicts detected during branch operations executed by the first JEU, and that signals the activation component to activate the second JEU when the confidence count exceeds an activation threshold value.

### Claim 33 (depends on 29)

The system of claim 29, wherein the counter component is a confidence counter that keeps a confidence count for a number of mispredicts detected during branch operations executed by the first JEU and the second JEU, and that signals the activation component to activate the second JEU when the confidence count exceeds an activation threshold value.
