Systems and methods of write cache flushing

US2016147671A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016147671-A1
Application numberUS-201414551980-A
CountryUS
Kind codeA1
Filing dateNov 24, 2014
Priority dateNov 24, 2014
Publication dateMay 26, 2016
Grant date

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.

A data storage device includes a write cache, a non-volatile memory, and a controller coupled to the write cache and to the non-volatile memory. The controller is configured to, responsive to receiving a command to flush particular data from the write cache, attempt to fill a write block of data using the particular data and pending data obtained after receipt of the command.

First claim

Opening claim text (preview).

What is claimed is: 1 . A data storage device comprising: a write cache; a non-volatile memory; and a controller coupled to the write cache and to the non-volatile memory, the controller configured to, responsive to receiving a command to flush particular data from the write cache, attempt to fill a write block of data using the particular data and pending data obtained after receipt of the command. 2 . The data storage device of claim 1 , wherein the controller attempts to fill the write block of data by: comparing a size of the particular data to a size of the write block of data to determine a size of an unfilled portion of the write block of data; and comparing sizes of data associated with pending write commands to the unfilled portion of the write block of data to identify at least one pending write command associated with the pending data to aggregate with the particular data in the write block of data. 3 . The data storage device of claim 2 , wherein the pending write commands include first pending write commands and second pending write commands, wherein the first pending write commands correspond to pending write commands that, when the command is received, are identified in a submission queue of an accessing device and are identified at the controller, and wherein the second pending write commands correspond to pending write commands that, when the command is received, are identified in the submission queue of the accessing device and are not identified at the controller. 4 . The data storage device of claim 3 , wherein the controller is further configured to compare sizes of write data of the first pending write commands to the unfilled portion of the write block of data, and to compare sizes of write data of the second pending write commands to the unfilled portion of the write block of data if the write block of data cannot be filled using the write data of first pending write commands. 5 . The data storage device of claim 1 , wherein the controller is further configured to initiate a timer responsive to receiving the command, wherein if the timer expires before the controller is able to fill the write block of data using the particular data and the pending data, the controller generates a full write block of data including the particular data and padding and writes the full block of data to the non-volatile memory. 6 . The data storage device of claim 1 , wherein the command is a flush command and the particular data corresponds to one or more write commands that are identified in a submission queue of an accessing device and that are identified in a completion queue of the accessing device. 7 . The data storage device of claim 1 , wherein the command is a force unit access (FUA)-enabled write command and the particular data is identified by the particular write command. 8 . A method comprising: at a data storage device having a write cache, a non-volatile memory and a controller, performing: receiving a command, the command instructing the data storage device to write particular data to the non-volatile memory, wherein the particular data includes: first data stored at the write cache, or second data identified by the command, or both the first data and the second data; after receiving the command, generating a full write block of data using the particular data and third data, the third data obtained after receiving the command; and writing the full write block of data to the non-volatile memory. 9 . The method of claim 8 , further comprising, before receiving the command: receiving at least one write command, the at least one write command identifying the first data; storing the first data at the write cache; and generating an output indicating receipt of the first data, wherein the output is used to update a completion queue associated with the at least one write command. 10 . The method of claim 8 , further comprising: initiating a timer responsive to receiving the command; and upon expiration of the timer, aggregating the particular data, the third data, and padding to generate the full write block of data. 11 . The method of claim 10 , wherein the timer is initiated according to a first duration if the command is a flush command and the timer is initiated according to a second duration if the command is a write command with a force unit access flag. 12 . The method of claim 8 , wherein generating the full write block of data comprises: evaluating a set of pending commands to identify pending data that is associated with pending write commands; determining, based on a size of the particular data, sizes of the pending data, and a size of a write block, whether the pending data can be aggregated with the particular data within the write block; and if the pending data can be combined with the particular data within the write block, using the pending data as the third data to generate the full write block of data. 13 . The method of claim 12 , wherein the pending write commands are identified at a command processing unit of the data storage device, are identified in a submission queue of an accessing device, or both. 14 . The method of claim 12 , wherein the pending write commands are not identified in a completion queue of an accessing device. 15 . The method of claim 12 , wherein using the pending data as the third data includes: causing a completion queue associated with the pending data at an accessing device to be updated; and aggregating the particular data and the pending data to generate aggregate data. 16 . The method of claim 15 , further comprising: determining whether the aggregate data fills the write block of data, wherein the full write block of data is written to the non-volatile memory if the aggregate data fills the write block of data; and if the aggregate data does not fill the write block of data, attempting to identify pending data to add to the aggregate data to generate the full write block of data. 17 . The method of claim 8 , further comprising, after writing the full write block of data to the non-volatile memory, generating an output indicating that at least that the particular data has been written to the non-volatile memory. 18 . The method of claim 8 , wherein the full write block of data includes the second data identified by the command and data associated with a partial write block stored at the write cache. 19 . A method comprising: at a data storage device having a write cache, a non-volatile memory and a controller, performing: receiving a command, the command instructing the data storage device to write particular data to the non-volatile memory, wherein the particular data includes: first data stored at the write cache, or second data received with the command, or both the first data and the second data; after receiving the command, obtaining third data; aggregating the particular data and the third data to form a write block of data; and writing the write block of data to the non-volatile memory. 20 . The method of claim 19 , wherein the third data includes pending data that is associated with a write command that is pending when the command is received, and wherein the pending write command is identified at a command processing unit of the controller, at a submission queue of an accessing device, or both, and wherein the pending write command is not identified at a completion queue of the accessing device when the command is received.

Assignees

Inventors

Classifications

  • Multiple simultaneous or quasi-simultaneous cache accessing · CPC title

  • G06F12/12Primary

    Replacement control · CPC title

  • Resource optimization · CPC title

  • in block erasable memory, e.g. flash memory · 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 US2016147671A1 cover?
A data storage device includes a write cache, a non-volatile memory, and a controller coupled to the write cache and to the non-volatile memory. The controller is configured to, responsive to receiving a command to flush particular data from the write cache, attempt to fill a write block of data using the particular data and pending data obtained after receipt of the command.
Who is the assignee on this patent?
Sandisk Technologies Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0844. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu May 26 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).