Enhanced read cache for stream switching in storage device

US12499047B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-12499047-B2
Application numberUS-202318353035-A
CountryUS
Kind codeB2
Filing dateJul 14, 2023
Priority dateJan 30, 2023
Publication dateDec 16, 2025
Grant dateDec 16, 2025

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In a data storage device, a controller can efficiently allocate a limited cache space to service multiple data streams. In one or more examples, in response to receiving a first read command for a first stream, the controller may respond to read commands for the first stream based on prefetching data for the first stream using buffers. When the controller receives a second read command for a second stream, the controller may respond to read commands based on prefetching data for the first stream and the second stream using the buffers. After receiving the second read command, in response to receiving a number of read commands for the first stream, the controller may cease prefetching data for the second stream using the buffers, and revert to responding to read commands for the first stream based on prefetching data for the first stream using the buffers.

First claim

Opening claim text (preview).

What is claimed is: 1 . A data storage device, comprising: a host interface for coupling the data storage device to a host system; a device memory; a normal read path; a read cache path; a read cache in the read cache path, the read cache including a plurality of buffers, each buffer configured to store data prefetched from the device memory for a stream of a plurality of streams; and a controller configured to: receive a first read command for a first stream; in response to receiving the first read command, respond to read commands for the first stream based on prefetching data for the first stream using the plurality of buffers; receive a second read command for a second stream; in response to receiving the second read command, respond to read commands for the first stream and the second stream based on prefetching data for the first stream and the second stream using the plurality of buffers; and after receiving the second read command for the second stream, in response to receiving a predetermined number of read commands for the first stream: (i) cease to prefetch data for the second stream using the plurality of buffers, and (ii) revert to respond to read commands for the first stream based on prefetching data for the first stream using the plurality of buffers, wherein in response to receiving the first read command, the controller is configured to determine whether the read cache is in a de-activation state, wherein when the read cache is in the de-activation state, the first read command follows the normal read path, and the controller is configured to determine conditions including whether the first read command is for memory access of a first unit of the first stream, of a predetermined size, and of a predetermined aligned logical block address, wherein when all of the conditions are satisfied, the controller is configured to perform operations including activating the read cache in the read cache path, prefetching and loading the first unit into a first buffer, and prefetching and loading a second unit of the first stream into a second buffer, wherein when the memory access is not for the first unit of the first stream, the controller is prevented from performing the operations, and wherein the plurality of buffers include the first and second buffers. 2 . The data storage device of claim 1 , wherein in response to receiving the second read command, the controller is configured to: split the plurality of buffers to operate in a split buffer state, wherein the split buffer state allows or provides associating each buffer of the plurality of buffers with a corresponding stream so that at least one buffer of the plurality of buffers is assigned to the first stream and at least another buffer of the plurality of buffers is assigned to the second stream at the same time. 3 . The data storage device of claim 1 , wherein the controller is configured to: in response to receiving the first read command: initially operate the plurality of buffers in a normal state for the first stream, including (i) prefetching data for the first stream using the plurality of buffers and (ii) responding to read commands for the first stream using prefetched data for the first stream. 4 . The data storage device of claim 3 , wherein the controller is configured to: in response to receiving the second read command: split the plurality of buffers to operate in a split buffer state, wherein the split buffer state allows or provides (i) associating each buffer of the plurality of buffers with a corresponding stream so that at least one buffer of the plurality of buffers is assigned to the first stream and at least another buffer of the plurality of buffers is assigned to the second stream at the same time, (ii) prefetching data for the first stream using the at least one buffer of the plurality of buffers and prefetching data for the second stream using the at least another buffer of the plurality of buffers, (iii) responding to a read command for the first stream using prefetched data for the first stream and the at least one buffer, and responding to a read command for the second stream using prefetched data for the second stream and the at least another buffer, and (iv) updating alive counts for the plurality of buffers based on one or more read commands for the first stream and the second stream, wherein the at least one buffer is separate and different from the at least another buffer. 5 . The data storage device of claim 4 , wherein the controller is configured to: when the alive count for a buffer corresponding to a stream reaches a zero value, revert to operate the plurality of buffers in the normal state for another stream of the plurality of streams, including (i) prefetching data for the another stream using the plurality of buffers and (ii) responding to read commands for the another stream using prefetched data for the another stream. 6 . The data storage device of claim 4 , wherein the controller is configured to: update the alive count for each buffer by initially setting each alive count to a predetermined maximum value and subsequently decreasing the alive count for a respective buffer each time any read command does not correspond to a stream corresponding to the respective buffer. 7 . The data storage device of claim 6 , wherein the predetermined maximum value for alive counts is the predetermined number of read commands, and wherein the controller is configured to: in response to receiving the first read command, use one buffer of the plurality of buffers to store a first 4 kilobytes (KB) of data requested by the host system and use another buffer of the plurality of buffers to prefetch next 4 KB of data. 8 . The data storage device of claim 1 , wherein the controller is configured to: in response to receiving the first read command: (i) detect if the first read command corresponds to a first logical address for the first stream, and (ii) in response to detecting that the first read command corresponds to the first logical address for the first stream, start responding to read commands for the first stream based on prefetching data for the first stream using the plurality of buffers; and in response to receiving the second read command: (i) detect if the second read command corresponds to a first logical address for the second stream, and (ii) in response to detecting that the second read command corresponds to the first logical address for the second stream, start responding to read commands for the first stream and the second stream based on prefetching data for the first stream and the second stream using the plurality of buffers. 9 . The data storage device of claim 1 , wherein the controller is configured to: in response to receiving the first read command: (i) detect if the first read command corresponds to a first 4 kilobytes (KB) for the first stream and corresponds to a 4 KB aligned logical block address, and (ii) in response to detecting that the first read command corresponds to the first 4 KB for the first stream and corresponds to the 4 KB aligned logical block address, start responding to read commands for the first stream based on prefetching data for the first stream using the plurality of buffers; and in response to receiving the second read command: (i) detect if the second read command corresponds to a first 4 KB for the second stream and corresponds to a 4 KB aligned logical block address, and (ii) in response to detecting that the second read command corresponds to the first 4 KB for the second stream and corresponds to the 4 KB aligned logical block address, start responding to read commands for the first stream and the second stream based on prefetching data for the f

Assignees

Inventors

Classifications

  • with prefetch · CPC title

  • Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US12499047B2 cover?
In a data storage device, a controller can efficiently allocate a limited cache space to service multiple data streams. In one or more examples, in response to receiving a first read command for a first stream, the controller may respond to read commands for the first stream based on prefetching data for the first stream using buffers. When the controller receives a second read command for a se…
Who is the assignee on this patent?
Sandisk Technologies Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0862. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 16 2025 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).