System and method for I/O optimization in a multi-queued environment
US-9317204-B2 · Apr 19, 2016 · US
US2016147671A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2016147671-A1 |
| Application number | US-201414551980-A |
| Country | US |
| Kind code | A1 |
| Filing date | Nov 24, 2014 |
| Priority date | Nov 24, 2014 |
| Publication date | May 26, 2016 |
| Grant date | — |
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.
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.
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.
Multiple simultaneous or quasi-simultaneous cache accessing · CPC title
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
Related publications grouped by family.
Answers are generated from the same data shown on this page.