IP Library › Granted Patent US 12,298,909
Granted Patent B2
US 12,298,909 · App. 18/231,730 · Granted May 13, 2025

Memory prefetch based on machine learning

Inventors: Chao Sun (San Jose, CA); Qingbo Wang (Irvine, CA); Minghai Qin (Fremont, CA); Jaco Hofmann (Santa Clara, CA); Anand Kulkarni (San Jose, CA); Dejan Vucinic (San Jose, CA); Zvonimir Bandic (San Jose, CA)
Assignee: Sandisk Technologies, Inc.
G06F12/0862G06N20/00
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 12,298,909
App. No.
18/231,730
Granted
May 13, 2025
Kind
B2
Abstract

A memory device includes a first memory and a second memory that caches data stored in the first memory. At least one controller of the memory device receives page fault information from a host. The page fault information results from a request for data by the host that is stored in the first memory but is not cached in the second memory when requested by the host. The memory device uses the received page fault information for one or more inputs into a prefetch model trained by Machine Learning (ML) to generate at least one inference. Based at least in part on the at least one inference, prefetch data is cached in the second memory. In one aspect, the page fault information is used to train the prefetch model. In another aspect, the page fault information includes at least one virtual address used by the host for the requested data.

Claims (59)

1. A memory device, comprising:

a first memory configured to store data;

a second memory configured to cache data stored in the first memory; and

at least one controller, individually or in combination, configured to:

receive page fault information from a host, wherein the page fault information results from a request for data by the host that is stored in the first memory but is not cached in the second memory when requested by the host;

use the received page fault information for one or more inputs into a prefetch model trained by Machine Learning (ML) to generate at least one inference;

based at least in part on the at least one inference, cache prefetch data in the second memory that is stored in the first memory;

receive Operating System (OS) metadata from an OS of the host including at least one of a page fault rate, a plurality of timestamps indicating occurrences of page faults, and resource usage information; and

based on the received OS metadata, determine at least one of an amount of data to prefetch from the first memory to cache in the second memory and when to prefetch data from the first memory to cache in the second memory.

2. The memory device of claim 1 , wherein the received page fault information includes at least one virtual address used by the host for the requested data.

3. The memory device of claim 1 , wherein the at least one controller, individually or in combination, is further configured to:

add the received page fault information to a collection of page fault information received from the host; and

provide the collection of page fault information to the host to train the prefetch model using ML.

4. The memory device of claim 3 , wherein the at least one controller, individually or in combination, is further configured to:

receive one or more updated weights from the host based on the collection of page fault information provided to the host; and

update the prefetch model using the one or more received updated weights.

5. The memory device of claim 1 , wherein the page fault information includes at least one of a process ID indicating a process executed by the host that generated a request that caused a page fault, a thread ID indicating a thread executed by the host that generated the request that caused the page fault, a program counter value indicating at least one physical address for a next instruction that was to be fetched following the request that caused the page fault, at least one physical address in the memory device for the request that caused the page fault, and an indication of a permission for data to be accessed for the request that caused the page fault.

6. The memory device of claim 1 , wherein the at least one controller, individually or in combination, receives the page fault information from the host using a Compute Express Link (CXL) protocol.

7. The memory device of claim 1 , wherein the second memory includes a host coherent memory region, a prefetch memory region, and an indirection table memory region for mapping data stored in the first memory.

8. The memory device of claim 1 , wherein the second memory stores a reverse lookup table and wherein the at least one controller, individually or in combination, is further configured to:

receive at least one physical address from the host as at least part of the received page fault information;

use the reverse lookup table to translate the at least one physical address into at least one virtual address used by the host for the data requested by the host; and

use the at least one virtual address for at least one of an input into the prefetch model and a collection of page fault information for training the prefetch model.

9. A method, comprising:

determining whether data requested by a process is stored in a first memory of a memory device but is not cached in a second memory of the memory device;

in response to determining that the requested data is stored in the first memory but is not cached in the second memory, generating page fault information related to a request for the requested data;

sending the page fault information to the memory device, wherein the memory device uses the page fault information to generate at least one inference from a prefetch model for caching prefetch data in the second memory, and

wherein the page fault information sent to the memory device includes at least one of a thread ID indicating a thread that generated the request, a program counter value indicating at least one physical address for a next instruction that was to be fetched following the request, and an indicator of a permission for the requested data, further comprising sending OS metadata from the OS of a host executing the process to the memory device, wherein the OS metadata includes at least one of a page fault rate, a plurality of timestamps indicating occurrences of page faults, and resource usage information, and wherein the memory device uses the OS metadata to determine at least one of an amount of data to prefetch from the first memory to cache in the second memory and when to prefetch data from the first memory to cache in the second memory.

10. The method of claim 9 , wherein the page fault information sent to the memory device includes at least one virtual address used by a host executing the process for the requested data.

11. The method of claim 9 , wherein the page fault information sent to the memory device further includes at least one of a process ID indicating the process that generated the request and at least one physical address in the memory device for the requested data.

12. The method of claim 9 , wherein a host executing the process sends the page fault information to the memory device using a Compute Express Link (CXL) protocol.

13. The method of claim 9 , further comprising:

adding the page fault information to a collection of page fault information generated from previous requests for data by a host executing the process that is stored in the first memory of the memory device but is not cached in the second memory of the memory device when the data is requested by the host; and

using the collection of page fault information to train the prefetch model using Machine Learning (ML).

14. The method of claim 9 , further comprising:

using at least one core of a host processor executing the process, individually or in combination, to test run one or more applications;

collecting information on memory accesses of the one or more applications during the test run; and

using the collected information on memory accesses to train the prefetch model using ML.

15. The method of claim 9 , wherein the page fault information includes at least one physical address in the memory device for the data to be accessed by the request, and wherein an Operating System (OS) of a host executing the process uses a page size greater than or equal to two megabytes.

16. A system, comprising:

a memory device including:

a first memory configured to store data; and

a second memory configured to cache data stored in the first memory and to store a reverse lookup table;

a host configured to:

determine whether data requested by the host is stored in the first memory of the memory device but is not cached in the second memory of the memory device;

in response to determining that the requested data is stored in the first memory of the memory device but is not cached in the second memory of the memory device, generate page fault information related to the request for data; and

send at least one physical address to the memory device as at least part of the generated page fault information;

means for using the reverse lookup table to translate the at least one physical address into at least one virtual address used by the host for the data requested by the host; and

means for using the at least one virtual address for at least one of an input into a prefetch model for caching prefetch data in the second memory and a collection of page fault information for training the prefetch model.

17. The system of claim 16 , wherein the memory device is further configured to:

use at least a portion of the page fault information to generate at least one inference from the prefetch model for caching prefetch data in the second memory.

18. The system of claim 17 , wherein the at least a portion of the page fault information used by the memory device to generate at least one inference from the prefetch model includes at least one of a thread ID indicating a thread executed by the host that generated the request for data, a program counter value indicating at least one physical address for a next instruction that was to be fetched following the request for data, and an indication of a permission for the requested data.

19. A method, comprising:

determining whether data requested by a process is stored in a first memory of a memory device but is not cached in a second memory of the memory device;

in response to determining that the requested data is stored in the first memory but is not cached in the second memory, generating page fault information related to a request for the requested data;

sending the page fault information to the memory device, wherein the memory device uses the page fault information to generate at least one inference from a prefetch model for caching prefetch data in the second memory, and

wherein the page fault information sent to the memory device includes at least one of a thread ID indicating a thread that generated the request, a program counter value indicating at least one physical address for a next instruction that was to be fetched following the request, and an indicator of a permission for the requested data, further comprising:

sending the at least one physical address to the memory device as at least part of the page fault information,

wherein the memory device uses a reverse lookup table to translate the at least one physical address into at least one virtual address used by a host for the requested data and uses the at least one virtual address for at least one of an input into the prefetch model and a collection of page fault information for training the prefetch model.

Assignments (8)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2023
From: SUN, CHAO; WANG, QINGBO; QIN, MINGHAI; HOFMANN, JACO; KULKARNI, ANAND; VUCINIC, DEJAN; BANDIC, ZVONIMIR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064529/0083 →
Continuity (2)
Provisional Application 63430949 · Dec 7, 2022
Related Publication 20240193088A1 · Jun 13, 2024
References Cited (21)
US 8806177B2 · Krieger et al. · 2014 [cited by applicant]
US 10877889B2 · Roberts · 2020 [cited by examiner]
US 20070143547A1 · Farmer · 2007 [cited by examiner]
US 20140281364A1 · Buschardt · 2014 [cited by examiner]
US 20200293456A1 · Ramadoss · 2020 [cited by examiner]
US 20210109679A1 · Bernat et al. · 2021 [cited by applicant]
US 20210342155A1 · Homer · 2021 [cited by examiner]
US 20220398160A1 · Zou · 2022 [cited by examiner]
US 20240045806A1 · Seok · 2024 [cited by examiner]
EP 3982269A1 · 2022 [cited by applicant]
Astera Labs; “Leo CXL Memory Accelerators”; accessed Aug. 6, 2023; available at: https://www.asteralabs.com/products/cxl-memory-platform/leo-cxl-memory-connectivity-platform/. [cited by applicant]
Calciu et al.; “Rethinking Software Runtimes for Disaggregated Memory”; Apr. 2021; available at: https://dl.acm.org/doi/10.1145/3445814.3446713. [cited by applicant]
Denys Haryachyy; “Learning DPDK: Huge pages”; Apr. 2019; available at: https://haryachyy.wordpress.com/2019/04/17/learning-dpdk-huge-pages/. [cited by applicant]
Jamilan et al.; “APT-GET: Profile-Guided Timely Software Prefetching”; Apr. 2022; available at: https://dl.acm.org/doi/abs/10.1145/3492321.3519583. [cited by applicant]
Maruf et al.; “TPP: Transparent Page Placement for CXL-Enabled Tiered Memory”; May 2023; available at: https://arxiv.org/abs/2206.02878. [cited by applicant]
Redding Traiger; EE world online; “Memory accelerator SoC solves memory capacity/bandwidth bottlenecks in data centers and the Cloud”; Dec. 2021; available at: https://www.eeworldonline.com/memory-accelerator-soc-solves… [cited by applicant]
Samsung Newsroom website; “Samsung Unveils Industry-First Memory Module Incorporating New CXL Interconnect Standard”; May 2021; available at: https://news.samsung.com/global/samsung-unveils-industry-first-memory-module-… [cited by applicant]
Thekernal.org website; “The Linux kernel user's and administrator's guide; Memory Management; Concepts overview”; accessed on Aug. 6, 2023; available at: https://www.kernel.org/doc/html/v5.9/admin-guide/mm/concepts.html. [cited by applicant]
Viktor K. Prasanna; “ML-driven Memory Prefetcher”; Data Science Lab; University of Southern California; accessed on Aug. 6, 2023; available at: https://sites.usc.edu/dslab/. [cited by applicant]
Yoon et al.; “Design of DRAM-NAND flash hybrid main memory and Q-learning-based prefetching method”; May 2018; available at https://link.springer.com/article/10.1007/s11227-018-2421-7. [cited by applicant]
Zhang et al.; “RAOP: Recurrent Neural Network Augmented Offset Prefetcher”; Sep. 2020; available at: https://dl.acm.org/doi/10.1145/3422575.3422807. [cited by applicant]