IP Library Granted Patent US 6,976,156
Granted Patent B1
US 6,976,156 · App. 10/047,515 · Granted Dec 13, 2005

Pipeline stall reduction in wide issue processor by providing mispredict PC queue and staging registers to track branch instructions in pipeline

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 6,976,156
App. No.
10/047,515
Granted
Dec 13, 2005
Kind
B1
Abstract

For use in a wide-issue pipelined processor, a mechanism for, and method of, reducing pipeline stalls between conditional branches and a digital signal processor (DSP) incorporating the mechanism or the method. In one embodiment, the mechanism includes: (1) a mispredict program counter (PC) generator that generates a mispredict PC value for each conditional branch instruction in a pipeline of the processor and (2) mispredict PC storage, coupled to the mispredict PC generator, that stores the mispredict PC value at least until a resolution of the conditional branch instruction occurs and makes the mispredict PC value available to a PC of the processor if the resolution results in a mispredict condition. The mispredict PC storage includes a mispredict PC queue and a number of staging registers wherein the mispredict PC queue has at least as many stages as the number of staging registers.

Claims (32)

1. For use in a wide-issue pipelined processor, a mechanism for reducing pipeline stalls between conditional branches, comprising:

mispredict program counter (PC) queue, configured to store multiple mispredict PC values, wherein each of said multiple mispredict PC values corresponds to a conditional branch instruction to enter into a pipeline of said processor; and

a mispredict PC value selector configured to select one of said multiple mispredict PC values to move to staging registers to track a corresponding conditional branch instruction as said corresponding conditional branch instruction moves through stages of said pipeline, said select based on when said corresponding conditional branch instruction enters said pipeline.

2. The mechanism as recited in claim 1 further comprising a mispredict PC generator configured to generate a mispredict PC value for each of said conditional branch instruction.

3. The mechanism as recited in claim 2 wherein said mispredict PC generator generates a branch prediction employed to prefetch instructions and said mispredict PC value in a single clock cycle.

4. The mechanism as recited in claim 1 wherein said staging registers and said mispredict PC queue form a mispredict PC storage.

5. The mechanism as recited in claim 1 wherein said mispredict PC queue has at least one more slot than said number of said staging registers.

6. The mechanism as recited in claim 1 wherein said one of said multiple mispredict PC values tracks said corresponding conditional branch instruction by moving through said staging registers as said corresponding conditional branch instruction moves through said stages in said pipeline.

7. The mechanism as recited in claim 4 wherein said mispredict PC storage stores said each of said mispredict PC values at least until a resolution of said corresponding conditional branch instruction occurs in an execution stage of said pipeline.

8. The mechanism as recited in claim 2 wherein said mispredict PC generator is configured to generate said mispredict PC value before branch instructions are grouped.

9. For use in a wide-issue pipelined processor, a method of reducing pipeline stalls between conditional branches, comprising:

storing multiple mispredict program counter (PC) values, wherein each of said multiple mispredict PC values corresponds to a conditional branch instruction to enter into a pipeline of said processor;

selecting one of said multiple mispredict PC values to move to staging registers to track a corresponding conditional branch instruction as said corresponding conditional branch instruction moves through stages of said pipeline; and

basing said selecting on when said corresponding conditional branch instruction enters said pipeline.

10. The method as recited in claim 9 further comprising generating a mispredict PC value for each of said conditional branch instruction.

11. The method as recited in claim 10 wherein said generating is carried out in a single clock cycle, said method further comprising generating a branch prediction in a single clock cycle.

12. The method as recited in claim 9 wherein said selecting includes selecting one of said multiple mispredict PC values from a mispredict PC queue configured to store said multiple mispredict PC values.

13. The method as recited in claim 9 wherein said mispredict PC queue has at least one more slot than a number of staging registers employed with said storing.

14. The method as recited in claim 9 wherein said one of said multiple mispredict PC values tracks said corresponding conditional branch instruction by moving through said staging registers as said corresponding conditional branch instruction moves through stages in said pipeline.

15. The method as recited in claim 9 wherein said storing includes storing said each of said mispredict PC values at least until a resolution of said corresponding conditional branch instruction occurs in an execution stage of said pipeline.

16. The method as recited in claim 9 wherein said processor is a digital signal processor.

17. A digital signal processor, comprising:

a pipeline having stages capable of executing conditional branch instructions;

a wide-issue instruction issue unit;

mispredict program counter (PC) queue, that stores multiple mispredict PC values, wherein each of said multiple mispredict PC values corresponds to a conditional branch instruction to enter into said pipeline; and

a mispredict PC value selector that selects, based on when said corresponding conditional branch instruction enters said pipeline, one of said multiple mispredict PC values to move into staging registers to track said corresponding conditional branch instruction as said corresponding conditional branch instruction moves through said stages.

18. The DSP as recited in claim 17 further comprising a mispredict PC generator that generates a mispredict PC value for each of said conditional branch instruction.

19. The DSP as recited in claim 18 wherein said mispredict PC generator generates a branch prediction employed to prefetch instructions and said mispredict PC value in a single clock cycle.

20. The DSP as recited in claim 19 wherein said mispredict PC value selector is configured to select said one of said multiple mispredict PC values from said mispredict PC queue to cause said selected one to move through said staging registers to track said corresponding conditional branch instruction.

21. The DSP as recited in claim 17 wherein said mispredict PC queue has at least one more slot than said number of said staging registers.

22. The DSP as recited in claim 17 wherein said one of said multiple mispredict PC values tracks said corresponding conditional branch instruction by moving through said staging registers as said corresponding conditional branch instruction moves through said stages.

23. The DSP as recited in claim 17 wherein said mispredict PC queue and said staging registers form a mispredict PC storage that stores said each of said mispredict PC values at least until a resolution of said corresponding conditional branch instruction and said resolution occurs in an execution stage of said pipeline.

Assignments (7)
CHANGE OF ADDRESS Recorded Jan 8, 2021
From: VERISILICON HOLDINGS CO., LTD.
To: VERISILICON HOLDINGS CO., LTD.
Reel/Frame 054927/0651 →
CHANGE OF ADDRESS Recorded Mar 19, 2020
From: VERISILICON HOLDINGSCO., LTD.
To: VERISILICON HOLDINGSCO., LTD.
Reel/Frame 052189/0438 →
CHANGE OF NAME Recorded Aug 6, 2019
From: VERISILICON HOLDINGS (CAYMAN ISLANDS) CO. LTD.
To: VERISILICON HOLDINGS CO., LTD.
Reel/Frame 050122/0833 →
RELEASE OF SECURITY INTEREST Recorded Aug 6, 2019
From: LSI LOGIC CORPORATION
To: VERISILICON HOLDINGS CO., LTD.
Reel/Frame 049971/0525 →
SALE Recorded Nov 9, 2006
From: LSI LOGIC CORPORATION
To: VERISILICON HOLDINGS (CAYMAN ISLANDS) CO. LTD.
Reel/Frame 018639/0192 →
SECURITY INTEREST Recorded Jul 7, 2006
From: VERISILICON HOLDINGS (CAYMAN ISLANDS) CO., LTD.
To: LSI LOGIC CORPORATION
Reel/Frame 017906/0143 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2001
From: NGUYEN, HUNG T.
To: LSI LOGIC CORPORATION
Reel/Frame 012502/0929 →