Dynamically allocating memory controller resources for extended prefetching
US-2023060194-A1 · Mar 2, 2023 · US
US12499047B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12499047-B2 |
| Application number | US-202318353035-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jul 14, 2023 |
| Priority date | Jan 30, 2023 |
| Publication date | Dec 16, 2025 |
| Grant date | Dec 16, 2025 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
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.
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
with prefetch · CPC title
Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.