IP Library Granted Patent US 7,506,105
Granted Patent B2
US 7,506,105 · App. 11/120,288 · Granted Mar 17, 2009

Prefetching using hashed program counter

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,506,105
App. No.
11/120,288
Granted
Mar 17, 2009
Kind
B2
Abstract

Generating a hashed value of the program counter in a data processing system. The hashed value can be used for prefetching in the data processing system. In some examples, the hashed value is used to identify whether a load instruction associated with the hashed value has an address that is part of a strided stream in an address stream. In some examples, the hashed value is a subset of bits of the bits of the program counter. In other examples, the hashed value may be derived in other ways from the program counter.

Claims (52)

1. A method for prefetching in a data processing system, the method comprising:

hashing a program counter value to produce a hashed program counter value, wherein the hashed program counter value has fewer bits than the program counter value;

propagating the hashed program counter value through a plurality of processor pipeline stages of a processor pipeline;

using the hashed program counter value for data prefetching in the data processing system, wherein the step of using the hashed program counter value for data prefetching in the data processing system comprises:

using the hashed program counter value to determine a stream identifier; and

using the stream identifier for prefetching in the data processing system;

wherein the step of using the hashed program counter value for data prefetching further includes using the hashed program counter value for strided stream detection in a data address stream of the processor pipeline.

2. A method of claim 1 , wherein the step of using the hashed program counter value to determine a stream identifier comprises:

combining the hashed program counter value and a second value to produce the stream identifier.

3. A method of claim 2 , wherein the second value comprises a register identifier.

4. A method of claim 3 , wherein the register identifier comprises a source register identifier.

5. A method of claim 2 , wherein the step of combining comprises:

performing at least one of a group consisting of a logic operation and an arithmetic operation using the hashed program counter value as a first operand and using the second value as a second operand.

6. A method of claim 1 , wherein the step of using the hashed program counter value for prefetching in the data processing system comprises:

using the hashed program counter value to determine if an instruction associated with the hashed program counter value has been allocated to a prefetch engine.

7. A method of claim 1 , wherein the hashed program counter value comprises four consecutive bits of the program counter value.

8. The method of claim 1 , further comprising:

using the detection of a strided stream to generate a prefetch address.

9. The method of claim 1 further comprising:

allocating a plurality of prefetch engines to detect strided streams in an address stream;

wherein the step of using the hashed program counter value for prefetching in the data processing system includes determining whether an instruction associated with the hashed program counter value is allocated to a prefetch engine of the plurality of prefetch engines.

10. The method of claim 1 wherein the step of using the hashed program counter value for prefetching in the data processing system includes using the hashed program counter value to identify a load instruction in the processor pipeline for detection of a strided stream in the address stream.

11. The method of claim 1 wherein the step of using the hashed program counter value for prefetching in the data processing system includes using the hashed program counter value to identify whether a load instruction associated with the hashed program counter value has an address that is part of a strided stream in the address stream.

12. The method of claim 1 wherein the step of using the hashed program counter value for prefetching in the data processing system further includes using the hashed program counter value in prefetch address generation.

13. The method of claim 1 wherein the step of prefetching comprises data prefetching.

14. The method of claim 1 wherein the plurality of processor pipeline stages includes an execute stage.

15. The method of claim 1 wherein the plurality of processor pipeline stages includes a decode stage.

16. The method of claim 1 wherein the plurality of processor pipeline stages includes a fetch stage.

17. The method of claim 2 further comprising:

propagating the second value through more than one processor pipeline stage of the processor pipeline.

18. A data processing system, comprising:

a program counter circuit, the program counter circuit providing a program counter value;

hashing circuitry, coupled to the program counter circuit, the hashing circuitry hashing the program counter value to produce a hashed program counter value, wherein the hashed program counter value has fewer bits than the program counter value;

a stage of a processor pipeline coupled to the hashing circuitry, the stage of the processor pipeline is used for instruction fetching, the stage of the processor pipeline receiving the hashed program counter value;

a second stage of the processor pipeline, coupled to the stage of the processor pipeline, the second stage of the processor pipeline is used for instruction execution, the second stage of the processor pipeline receiving the hashed program counter value via the stage; and

detection circuitry, coupled to the stage and the second stage of the processor pipeline, the detection circuitry using the hashed program counter value received via the stage and the second stage for stream identification in performing strided stream detection.

19. A data processing system of claim 18 , further comprising a third stage of the processor pipeline coupled to the stage and the second stage, the third stage used for instruction decoding, the third stage of the processor pipeline receiving the hashed program counter value via the stage, the second stage of the processor pipeline receiving- the hashed program counter value via the stage and the third stage.

20. A method for pipelining in a data processing system, the data processing system including a processor pipeline with a plurality of pipeline stages, the method comprising:

deriving a value from a program counter to produce a derived program counter value;

propagating the derived program counter value through at least one of the plurality of pipeline stages wherein the at least one stage includes a decode stage;

propagating a second value through at least one of the plurality of pipeline stages until the predetermined pipeline stage is reached;

propagating the derived program counter value through a second one of the plurality of pipeline stages, wherein the second one is characterized as an execution stage;

combining, after the propagating the derived program counter value and the propagating the second value, the derived program counter value and the second value to produce a stream identifier;

using the stream identifier for stream identification for prefetching in the data processing system.

21. A method of claim 20 , comprising:

propagating the derived program counter value through a fetch stage of the plurality of pipeline stages.

22. A method of claim 20 , comprising:

propagating the derived program counter value through more than half of the plurality of pipeline stages until a predetermined pipeline stage is reached.

23. A method of claim 20 , wherein the derived program counter value has fewer bits than the program counter.

24. A method of claim 20 , comprising:

propagating the second value through more than half of the plurality of pipeline stages until a predetermined pipeline stage is reached.

25. A method of claim 20 wherein the step of using the derived program counter value for prefetching further includes using the derived program counter value for strided stream detection in a data address stream of the processor pipeline.

Assignments (23)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0793 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded May 19, 2009
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 022703/0405 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2005
From: AL-SUKHNI, HASSAN F.; HOLT, JAMES C.; SMITTLE, MATT B.; SNYDER, MICHAEL D.; GRAYSON, RIAN
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 016527/0215 →