IP Library Granted Patent US 10,558,577
Granted Patent B2
US 10,558,577 · App. 16/011,173 · Granted Feb 11, 2020

Managing memory access requests with prefetch for streams

Inventors: Shubhendu Sekhar Mukherjee (Southborough, MA); David Albert Carlson (Haslet, TX); Srilatha Manne (Portland, OR)
Assignee: Cavium, LLC
G06F12/0862G06F12/0897G06F2212/1016G06F2212/6024G06F2212/6026
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 10,558,577
App. No.
16/011,173
Granted
Feb 11, 2020
Kind
B2
Abstract

Managing memory access requests to a cache system including one or more cache levels that are configured to store cache lines that correspond to memory blocks in a main memory includes: storing stream information identifying recognized streams that were recognized based on previously received memory access requests, where one or more of the recognized streams comprise strided streams that each have an associated strided prefetch result corresponding to a stride that is larger than or equal to a size of a single cache line; and determining whether or not a next cache line prefetch request corresponding to a particular memory access request will be made based at least in part on whether or not the particular memory access request matches a strided prefetch result for at least one strided stream, and a history of past next cache line prefetch requests.

Claims (23)

1. A method for managing memory access requests to a cache system including one or more cache levels that are configured to store cache lines that correspond to memory blocks in a main memory, the method comprising:

storing stream information identifying recognized streams that were recognized based on previously received memory access requests, where one or more of the recognized streams comprise strided streams that each have an associated strided prefetch result corresponding to a stride that is larger than or equal to a size of a single cache line; and

determining whether or not a next cache line prefetch request corresponding to a particular memory access request will be made based at least in part on whether or not the particular memory access request matches a strided prefetch result for at least one strided stream, and a history of past next cache line prefetch requests;

wherein a difference between an address of one of the previously received memory access requests and an address of the next cache line prefetch request corresponding to the particular memory access request is a single cache line, and one or more of the strided streams each has an associated strided prefetch result corresponding to a stride that is larger than a size of a single cache line.

2. The method of claim 1 , wherein the strided streams comprise a plurality of strided streams, where a first strided stream has an associated first strided prefetch result corresponding to a first stride, and a second strided stream has an associated second strided prefetch result corresponding to a second stride that is larger than the first stride.

3. The method of claim 2 , wherein the first strided prefetch result and the second strided prefetch result have a plurality of highest order address bits that are identical to each other.

4. The method of claim 1 , wherein, for each of one or more strided streams included in the recognized streams, at least one next cache line prefetch request was made corresponding to at least one memory access request of a set of multiple memory access requests based on which that strided stream was recognized.

5. The method of claim 4 , wherein each of the memory access requests of the set of multiple memory access requests has a plurality of highest order address bits that are identical to each other.

6. The method of claim 1 , wherein the history of past next cache line prefetch requests comprises stored history information that depends on results of past next cache line prefetch requests corresponding to memory access requests made before the particular memory access request, and the stored history information is accessed based on a combination that includes: (1) bits from an address of the particular memory access request, and (2) bits from an address of at least one of the memory access requests made before the particular memory access request.

7. The method of claim 1 , wherein each stride is computed based on a difference between a first address of a first memory access request and a second address of a second memory access request, where the first and second addresses have a plurality of highest order bits that are identical to each other.

8. A memory system comprising:

at least one memory controller for accessing a main memory;

a cache system including one or more cache levels that are configured to store cache lines that correspond to memory blocks in the main memory; and

a memory access request manager configured to manage memory access requests, the managing including:

storing stream information identifying recognized streams that were recognized based on previously received memory access requests, where one or more of the recognized streams comprise strided streams that each have an associated strided prefetch result corresponding to a stride that is larger than or equal to a size of a single cache line; and

determining whether or not a next cache line prefetch request corresponding to a particular memory access request will be made based at least in part on whether or not the particular memory access request matches a strided prefetch result for at least one strided stream, and a history of past next cache line prefetch requests;

wherein a difference between an address of one of the previously received memory access requests and an address of the next cache line prefetch request corresponding to the particular memory access request is a single cache line, and one or more of the strided streams each has an associated strided prefetch result corresponding to a stride that is larger than a size of a single cache line.

9. The memory system of claim 8 , wherein the strided streams comprise a plurality of strided streams, where a first strided stream has an associated first strided prefetch result corresponding to a first stride, and a second strided stream has an associated second strided prefetch result corresponding to a second stride that is larger than the first stride.

10. The memory system of claim 9 , wherein the first strided prefetch result and the second strided prefetch result have a plurality of highest order address bits that are identical to each other.

11. The memory system of claim 8 , wherein, for each of one or more strided streams included in the recognized streams, at least one next cache line prefetch request was made corresponding to at least one memory access request of a set of multiple memory access requests based on which that strided stream was recognized.

12. The memory system of claim 11 , wherein each of the memory access requests of the set of multiple memory access requests has a plurality of highest order address bits that are identical to each other.

13. The memory system of claim 8 , wherein the history of past next cache line prefetch requests comprises stored history information that depends on results of past next cache line prefetch requests corresponding to memory access requests made before the particular memory access request, and the stored history information is accessed based on a combination that includes: (1) bits from an address of the particular memory access request, and (2) bits from an address of at least one of the memory access requests made before the particular memory access request.

14. The memory system of claim 8 , wherein each stride is computed based on a difference between a first address of a first memory access request and a second address of a second memory access request, where the first and second addresses have a plurality of highest order bits that are identical to each other.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 27, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047156/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2018
From: MUKHERJEE, SHUBHENDU SEKHAR; CARLSON, DAVID ALBERT; MANNE, SRILATHA
To: CAVIUM, INC.
Reel/Frame 046121/0727 →