IP Library Granted Patent US 6,957,306
Granted Patent B2
US 6,957,306 · App. 10/294,539 · Granted Oct 18, 2005

System and method for controlling prefetching

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,957,306
App. No.
10/294,539
Granted
Oct 18, 2005
Kind
B2
Abstract

Systems and methods that control prefetching are provided. In one embodiment, a system may include, for example, a prefetch buffer system coupled to a processing unit and to a memory. The prefetch buffer system may include, for example, a prefetch controller that is adapted to be programmable such that prefetch control features can be selected.

Claims (43)

1. A system for controlling prefetching, comprising:

a prefetch buffer system coupled to a processing unit and to a memory, wherein the prefetch buffer system comprises:

a prefetch buffer; and

a prefetch controller comprising prefetch control registers (PCRs),

wherein:

the PCRs are adapted to be programmable such that prefetch control features can be independently specified;

there is a one-to-one mapping between a PCR, or a portion thereof, and a prefetch control feature; and

a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to manipulate contents stored in the prefetch buffer in a predetermined manner associated with the particular value.

2. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in a disabled state.

3. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in a no-prefetch state.

4. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in an active prefetch state.

5. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in accordance with a sequential prefetch scheme.

6. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in accordance with a striding prefetch scheme.

7. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to operate in accordance with a backward prefetch scheme.

8. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value such that some or all of the contents in the prefetch buffer are invalidated in a pre-determined manner associated with the particular value.

9. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value such that a particular address corresponding to a block stored in the prefetch buffer is invalidated in a pre-determined manner associated with the particular value.

10. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to narrow a scope of a programmed prefetch scheme.

11. The system according to claim 1 , wherein the prefetch controller is programmed by the processing unit as a function of prefetching effectiveness monitored during run-time.

12. The system according to claim 1 , wherein the prefetch controller is adapted to switch between predefined selectable prefetch schemes in accordance with programming of the prefetch controller.

13. The system according to claim 1 , wherein the prefetch buffer system is adapted to fetch data from memory of the processing unit.

14. The system according to claim 1 , wherein the prefetch buffer system can be programmed by software at run time.

15. The system according to claim 1 , wherein the prefetch buffer system can be dynamically programmed to select the prefetch control features.

16. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to perform prefetches in response to at least a first type of CPU miss and to not perform prefetches in response to at least a second type of CPU miss.

17. The system according to claim 1 , wherein a particular one of the PCRs, or a portion thereof, may be programmed with a particular value, thereby causing the prefetch buffer system to only perform prefetches in one or more particular memory address ranges.

18. A method for controlling a prefetch buffer system, comprising:

programming a particular value into a particular register of the prefetch buffer system, wherein there is a one-to-one mapping between the particular register, or a portion thereof, and a prefetch control feature;

selecting a particular prefetch scheme characterized, at least in part, by the selected particular prefetch scheme feature; and

invalidating one or more blocks in the prefetch buffer system based, at least in part, upon the programmed value in the particular register of the prefetch buffer system.

19. The method according to claim 18 , wherein the one or more invalidated blocks indicate preferred locations that can be refilled.

20. The method according to claim 18 , wherein the particular register comprises a prefetch control register.

21. A method for switching between prefetching schemes, comprising:

performing a first prefetching scheme;

writing a value into a particular register of a prefetch buffer system, in which there is a one-to-one mapping between the particular register, or a portion thereof, and a prefetch control feature;

manipulating contents stored in the prefetch buffer in a pre-determined manner associated with the value; and

switching to a second prefetching scheme based, at least in part, on the value written into the particular register of the prefetch buffer system.

22. The method according to claim 21 , wherein the writing occurs in real time during operation of the prefetch buffer system.

23. The method according to claim 21 , wherein the switching occurs in real time during operation of the prefetch buffer system.

24. The method according to claim 21 , further comprising determining that the first prefetching scheme is not presently an effective prefetching scheme.

25. The method according to claim 21 , wherein the particular register comprises a prefetch control register.

26. A system for controlling a prefetch buffer system, comprising:

a processor coupled to one or more control registers of the prefetch buffer system, wherein there is a one-to-one mapping between a particular control register, or a portion thereof, and a prefetch control feature,

wherein, at run time, software being executed by the processor can change prefetching features of the prefetch buffer system by writing one or more values to the one or more control registers, and wherein software being executed by the processor can cause the prefetch buffer system to manipulate contents stored in the prefetch buffer in a predetermined manner associated with a particular value by writing the particular value to a particular control register or a portion thereof.

27. The system according to claim 26 , wherein the software can change the prefetching features of the prefetch buffer system by writing one or more values to the one or more control registers.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →