# US 2014/0195790 A1 · Processor with 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/0195790 A1
- Document ID: US20140195790A1
- Status: Published application
- Kind: A1
- Application number: 13/994,676
- Filed: 2011-12-28
- Published: 2014-07-10
- Earliest claimed: 2011-12-28
- Inventors: Matthew C. Merten; Avinash Sodani; Sean P. Mirkes; Vijaykumar B. Kadgi; Bambang Sutanto; Chia Yin Kevin Lai; Morris Marden; Alexandre J. Farcy
- Web page: https://patentgrep.com/patent/US20140195790A1

## CPC

- 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/3861: {Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00)}
- G06F 9/3867: {using instruction pipelines}
- 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

A secondary jump execution unit (JEU) is incorporated in a micro-processor to operate concurrently with a primary JEU, enabling the execution of simultaneous branch operations with possible detection of multiple branch mispredicts. When branch operations are executed on both JEUs in a same instruction cycle, mispredict processing for the secondary JEU is skidded into the primary JEU's dispatch pipeline such that the branch processing for the secondary JEU occurs after processing of the branch for the primary JEU and while the primary JEU is not processing a branch. Moreover, in cases when a nuke command is also received from a reorder buffer of the processor, the branch processing for the secondary JEU is further delayed to accommodate processing of the nuke on the primary JEU. Further embodiments support the promotion of the secondary JEU to have access to the mispredict mechanisms of the primary JEU in certain circumstances.

## Claims

### Claim 1

A processor comprising:
a first jump execution unit (JEU) to evaluate a first branch for a first branch mispredict; and
a second JEU to evaluate a second branch for a second branch mispredict, the first branch and the second branch being evaluated concurrently.

### Claim 2 (depends on 1)

The processor of claim 1, further comprising:
an operation scheduler to reserve at least one slot to initiate a core clearing of one or more instructions younger than the second branch based on the second branch mispredict, employing one or more core clearing mechanisms that are accessible to the first JEU and not directly accessible to the second JEU.

### Claim 3 (depends on 2)

The processor of claim 2, wherein the reservation of the at least one slot is conditional based on a determination that the first JEU is currently executing a non-branch operation or is idle, and wherein the second JEU is promoted to have access to the one or more core clearing mechanisms based on the determination being positive.

### Claim 4 (depends on 1)

The processor of claim 1, further comprising:
an operation scheduler to reserve at least one slot to initiate a core clearing of one or more instructions younger than the second branch, based on the second branch mispredict; and
a skid buffer to store information associated with the second branch mispredict, the information being read by the first JEU which initiates the core clearing when the at least one reserved slot arrives at the first JEU.

### Claim 5 (depends on 4)

The processor of claim 4, wherein the core clearing is scheduled a predetermined number of instruction cycles after detection of the second branch mispredict.

### Claim 6 (depends on 1)

The processor of claim 1, wherein the first branch and the second branch are evaluated during a same instruction cycle.

### Claim 7 (depends on 1)

The processor of claim 1, wherein the first branch and the second branch are executed within different threads.

### Claim 8 (depends on 1)

The processor of claim 1, further comprising:
an operation scheduler to schedule a core clearing from the processor of one or more instructions that are younger than the second branch, in response to an indication of the second branch mispredict; and
a reorder buffer directly coupled to at least the first JEU and that receives one or more clearing commands from one or more core clearing mechanisms that are not directly accessible by the second JEU.

### Claim 9 (depends on 1)

The processor of claim 1, further comprising:
an operation scheduler to schedule a core clearing from the processor of one or more instructions that are younger than the second branch, in response to an indication of the second branch mispredict; and
a branch order buffer directly coupled to at least the first JEU and that receives one or more clearing commands from one or more core clearing mechanisms that are not directly accessible by the second JEU.

### Claim 10

A system comprising:
at least one processing unit, including:
a first jump execution unit (JEU) to evaluate a first branch for a first branch mispredict;
a second JEU to evaluate a second branch for a second branch mispredict concurrently with the evaluation of the first branch; and
an operation scheduler to reserve at least one slot to initiate a core clearing of one or more instructions younger than the second branch, based at least partly on the second branch mispredict.

### Claim 11 (depends on 10)

The system of claim 10, wherein the first branch and the second branch are executed within different threads.

### Claim 12 (depends on 10)

The system of claim 10, wherein the first branch and the second branch are executed within a same thread.

### Claim 13 (depends on 10)

The system of claim 10, wherein the first branch mispredict and the second branch mispredict are detected in a same instruction cycle.

### Claim 14 (depends on 10)

The system of claim 10, the at least one processing unit further including:
a skid buffer to store information associated with the second branch mispredict, the information being read by the first JEU which initiates the core clearing when the at least one reserved slot arrives at the first JEU.

### Claim 15

A method comprising:
processing a first branch at a first jump execution unit (JEU) of a processor;
detecting at a second JEU of the processor a second branch mispredict in a second branch concurrently with the processing of the first branch;
storing information for the second branch mispredict in a buffer; and
scheduling a core clearing operation to clear from the processor one or more instructions that are younger than the second branch, based at least partly on the stored information for the second branch mispredict.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
receiving, from a reorder buffer of the processor, a nuke event to remove all operations in the processor; and
delaying the core clearing operation based on receiving the nuke event, including scheduling the core clearing operation later than an execution of the nuke event.

### Claim 17 (depends on 16)

The method of claim 16, wherein the nuke event is received on a different thread as the second branch.

### Claim 18 (depends on 16)

The method of claim 16, wherein the nuke event is received on a same thread as the second branch.

### Claim 19 (depends on 15)

The method of claim 15, further comprising:
subsequently receiving from the first JEU an indication of another branch mispredict that is older than the second branch mispredict; and
blocking an initiation of the previously scheduled core clearing in response to receiving the indication of the other branch mispredict, including clearing the information for the second branch mispredict from the buffer.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
subsequently receiving from the second JEU an indication of another branch mispredict that is older than the second branch mispredict, during a skidding for the second branch mispredict; and
cancelling the skidding for the second branch mispredict in response to receiving the indication of the other branch mispredict.
