IP Library Granted Patent US 7,035,997
Granted Patent B1
US 7,035,997 · App. 09/616,385 · Granted Apr 25, 2006

Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors

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 7,035,997
App. No.
09/616,385
Granted
Apr 25, 2006
Kind
B1
Abstract

In a multi-streaming processor, a system for fetching instructions from individual ones of multiple streams to an instruction pipeline is provided, comprising a fetch algorithm for selecting from which stream to fetch an instruction, and one or more predictors for forecasting whether a load instruction will hit or miss the cache or a branch will be taken. The prediction or predictions are used by the fetch algorithm in determining from which stream to fetch. In some cases probabilities are determined and also used in decisions, and predictors may be used at either or both of fetch and dispatch stages.

Claims (42)

1. In a processor having multiple processor streams supporting multiple data threads, a system for fetching instructions from individual ones of the multiple streams to a pipeline, comprising:

a fetch algorithm for selecting from which stream to fetch instructions; and

a branch predictor for forecasting whether a branch alternative of a branch instructions will be taken;

wherein the prediction by the branch predictor is used by the fetch algorithm in determining from which stream to fetch.

2. The system of claim 1 wherein a prediction that a branch will not be taken precipitates no change in the fetching process.

3. The system of claim 1 wherein a prediction that a branch will be taken results in switching fetching to a different stream if no target address is provided by the predictor.

4. The system of claim 1 wherein the branch predictor determines a probability that a branch alternative will be taken, and the probability is used by the fetch algorithm in determining from where to fetch next instructions.

5. The system of claim 1 wherein the forecast of the branch predictor is also used by a dispatch algorithm in selecting instructions from the pipeline to dispatch to functional units.

6. In a processor having multiple processor streams supporting multiple data threads, a system for fetching instructions from individual ones of the multiple streams to a pipeline, comprising:

a fetch algorithm for selecting from which stream to fetch instructions; and

one or both of a branch predictor for forecasting whether a branch alternative of a branch instructions will be taken, or a hit-miss predictor for forecasting whether instructions will hit or miss a data cache;

wherein the prediction by either or both of the predictors is used by the fetch algorithm in determining from which stream to fetch.

7. The system of claim 6 wherein a prediction that a branch will not be taken or that an instruction will hit the data cache precipitates no change in the fetching process.

8. The system of claim 6 wherein a prediction that a branch will be taken or that an instruction will miss a data cache results in switching fetching to a different stream if no target address is provided by the predictor.

9. The system of claim 6 wherein one or both of the branch predictors determine a probability that a branch alternative will be taken or that an instruction will miss the cache, and the probability is used by the fetch algorithm in determining from where to fetch next instructions.

10. The system of claim 6 wherein the forecast of one or both predictors is also used by a dispatch algorithm in selecting instructions from the pipeline to dispatch to functional units.

11. A processor having multiple processor streams supporting multiple data threads comprising:

a fetch algorithm for selecting from which stream to fetch instructions; and

a branch predictor for predicting whether jumps proposed by branch instructions will be taken or not;

wherein a prediction by the branch predictor is used by the fetch algorithm in determining from which stream to fetch.

12. The processor of claim 11 wherein a prediction that a branch will not be taken precipitates no change in the fetching process.

13. The processor of claim 11 wherein a prediction that a branch will be taken results in switching fetching to a different stream if no target address is provided by the predictor.

14. The processor of claim 11 wherein the branch predictor determines a probability for whether a branch will be taken, and the probability is used by the fetch algorithm in determining from where to fetch next instructions.

15. The processor of claim 11 wherein the forecast of the branch predictor is also used by a dispatch algorithm in selecting instructions from the pipeline to dispatch to functional units.

16. A processor having multiple processor streams supporting multiple data threads, comprising:

multiple physical hardware streams for running individual software data threads;

a data cache;

a fetch algorithm for selecting from which stream to fetch instructions; and

one or both of a branch predictor for forecasting whether a branch alternative of a branch instructions will be taken, or a hit-miss predictor for forecasting whether instructions will hit or miss a data cache;

wherein the prediction by either or both of the predictors is used by the fetch algorithm in determining from which stream to fetch.

17. The processor of claim 16 wherein a prediction that a branch will not be taken or that an instruction will hit the data cache precipitates no change in the fetching process.

18. The processor of claim 16 wherein a prediction that a branch will be taken or that an instruction will miss a data cache results in switching fetching to a different stream if no target address is provided by the predictor.

19. The processor of claim 16 wherein one or both of the branch predictors determine a probability that a branch alternative will be taken or that an instruction will miss the cache, and the probability is used by the fetch algorithm in determining from where to fetch next instructions.

20. The processor of claim 16 wherein the forecast of one or both predictors is also used by a dispatch algorithm in selecting instructions from the pipeline to dispatch to functional units.

21. In a processor having multiple processor streams supporting multiple data threads, a method for fetching instructions from individual ones of multiple streams as instruction sources to a pipeline, comprising the steps of:

(a) on loading a branch instruction, making a prediction by a branch predictor as to whether a branch will be taken or not; and

(b) if the prediction is that the branch will be taken, altering the source of the fetch if no target address is provided by the predictor.

22. The method of claim 21 wherein the predictor determines a probability, and the probability is used in determining fetch source.

23. In a processor having multiple processor streams supporting multiple data threads and a data cache, a method for fetching instructions from individual ones of multiple streams as instruction sources to a pipeline, comprising the steps of:

(a) on loading an instruction, making a prediction by one or both of a branch predictor as to whether a branch will be taken if the instruction is a branch instruction, or by a hit-miss predictor as to whether the instruction will hit the data cache; and

(b) discriminating from which stream to continue to fetch according to prediction made.

24. The method of claim 23 wherein the predictor or predictors determine a probability, and the probability is used in determining fetch source.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2014
From: BRIDGE CROSSING, LLC
To: ARM FINANCE OVERSEAS LIMITED
Reel/Frame 033074/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2013
From: MIPS TECHNOLOGIES, INC.
To: BRIDGE CROSSING, LLC
Reel/Frame 030202/0440 →