IP Library Patent Application 13209484
Patent Application
App. No. 13/209,484

SYSTEM AND METHOD FOR ZERO PENALTY BRANCH MIS-PREDICTIONS

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 None
App. No.
13/209,484
Abstract

A system and method may execute a branch instruction in a program. The branch instruction may be received defining a plurality of different possible instruction paths. Instructions for an initial predefined one of the paths may be automatically retrieved from a program memory while the correct path is being determined. If the initial path is determined to be correct, the instructions retrieved for the initial path may continue to be processed and if a different path is determined to be correct, instructions from a stored reserve of instructions may be processed for the different path to supply the program with enough correct path instructions to run the program at least until the program retrieves the correct path instructions from the program memory to recover from taking the incorrect path. The system and method may recover from taking the incorrect path with zero computational penalty.

Claims (27)

1 . A method for executing a branch instruction in a program, the method comprising:

receiving the branch instruction defining a plurality of different possible instruction paths;

automatically retrieving instructions for an initial predefined one of the paths from a program memory while the correct path is being determined;

if the initial path is determined to be correct, continuing to process the instructions retrieved for the initial path and

if a different path is determined to be correct, processing instructions from a stored reserve of instructions for the different path to supply the program with enough correct path instructions to run the program at least until the program retrieves the correct path instructions from the program memory to recover from taking the incorrect path.

2 . The method of claim 1 comprising storing a reserve of instructions for each path not automatically taken to continue running the program while recovering if an incorrect path is taken.

3 . The method of claim 1 , wherein a number of reserve instructions for each path is greater than or equal to a number of instructions processed by the program during (N) cycles used to determine the correct path and an additional (M) cycles used to retrieve the other path instructions from the program memory.

4 . The method of claim 1 comprising refilling the stored reserve each time the incorrect path is taken and the stored reserve is depleted to run the program during recovery.

5 . The method of claim 4 , wherein the stored reserve is refilled by adding instructions to the reserve at a faster rate than the rate at which instructions are retrieved from the reserve.

6 . The method of claim 5 , wherein instructions are added to fill a buffer in each cycle, where the buffer is sized to store more than one instruction packet of maximal allowable size for every one instruction packet of maximal allowable size retrieved per cycle.

7 . The method of claim 1 , wherein the initial predefined path is a branch taken path and the other path is a branch not taken path.

8 . The method of claim 1 , wherein there are a total of 2 N different possible instruction paths and the stored reserve includes instructions for each of the 2 N −1 branch paths not automatically taken.

9 . The method of claim 1 , wherein the program incurs zero computational penalty to recover from taking the incorrect path.

10 . The method of claim 1 comprising selectively activating a branch predictor to predict the correct instruction path when branch conditions are easy to predict and selectively activating the automatic instruction retrieval when branch conditions are difficult to predict.

11 . A system comprising:

a program memory to store instructions for a program;

an intermediate memory to store instructions retrieved from the program memory to prepare the instructions for execution by the program; and

a processor to receive a branch instruction defining a plurality of different possible instruction paths and to automatically retrieve instructions for an initial predefined one of the paths from the program memory while the correct path is being determined, wherein if the initial path is determined to be correct, the processor continues to process the instructions retrieved for the initial path and if a different path is determined to be correct, the processor processes instructions from a stored reserve of instructions in the intermediate memory for the different path to supply the program with enough correct path instructions to run the program at least until the program retrieves the correct path instructions from the program memory to recover from taking the incorrect path.

12 . The system of claim 11 , wherein the intermediate memory stores a reserve of instructions for each path not automatically taken for the processor to continue running the program while recovering if an incorrect path is taken.

13 . The system of claim 11 , wherein the intermediate memory includes a number of reserve instructions for each path that is greater than or equal to a number of instructions processed by the program during (N) cycles used to determine the correct path and an additional (M) cycles used to retrieve the other path instructions from the program memory.

14 . The system of claim 11 , wherein the intermediate memory is a buffer memory.

15 . The system of claim 11 , wherein the processor refills the stored reserve in the intermediate memory each time the processor takes an incorrect path and depletes the stored reserve to run the program during recovery.

16 . The system of claim 15 , wherein the processor refills the stored reserve by adding instructions to the reserve at a faster rate than the rate at which instructions are retrieved from the reserve.

17 . The system of claim 16 , wherein the processor refills the stored reserve by adding instructions to fill an entire unit of the intermediate memory in each cycle, where the intermediate memory unit is sized to store more than one instruction packet of maximal allowable size for every one instruction packet of maximal allowable size retrieved per cycle.

18 . The system of claim 11 , wherein the initial predefined path is a branch taken path and the other path is a branch not taken path.

19 . The system of claim 11 , wherein there are a total of 2 N different possible instruction paths and the stored reserve includes instructions for each of the 2 N −1 branch paths not automatically taken.

20 . The system of claim 11 , wherein the processor incurs zero computational penalty to recover from taking the incorrect path.

Assignments (2)
CHANGE OF NAME Recorded Jun 23, 2024
From: CEVA D.S.P. LTD.
To: CEVA TECHNOLOGIES, LTD
Reel/Frame 067808/0876 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2011
From: DVORETZKI, NOAM
To: CEVA D.S.P. LTD.
Reel/Frame 026841/0453 →