Use of application data and garbage-collected data to improve write efficiency of a data storage device
First Claim
1. A method comprising:
- receiving, by a memory controller, a request from a host computing device to write a first logical block of application data to a data storage device;
writing, by the memory controller, the first logical block to a data buffer, wherein a size of the data buffer is a same size as a page that can be written to the data storage device and is larger than the logical block;
starting a timer in response to writing the first logical block to the data buffer;
receiving, by the memory controller, one or more additional requests from the host computing device to write one or more additional logical blocks of application data to the data storage device;
prior to an expiration of the timer, determining that the data buffer is not full;
detecting the expiration of the timer;
writing, by the memory controller, in response to detecting the expiration of the timer and determining that the data buffer is not full, one or more logical blocks of garbage-collected data to the data buffer to fill the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; and
writing the full data buffer to the data storage device.
2 Assignments
0 Petitions
Accused Products
Abstract
A data storage device includes a plurality of flash memory devices. A memory controller is configured to receive a request from a host computing device to write a first logical block of application data to the data storage device, write the first logical block to a data buffer, wherein a size of the data buffer is larger than the logical block and may store multiple logical blocks, write one or more logical blocks of garbage-collected data to the data buffer, and write the logical blocks in the data buffer to the data storage device when the data buffer becomes full. The data buffer written to the data storage device includes at least one logical block of application data and at least one logical block of garbage-collected data. In an alternative implementation, garbage-collected data may be written to the data buffer upon expiration of a timer.
91 Citations
27 Claims
-
1. A method comprising:
-
receiving, by a memory controller, a request from a host computing device to write a first logical block of application data to a data storage device; writing, by the memory controller, the first logical block to a data buffer, wherein a size of the data buffer is a same size as a page that can be written to the data storage device and is larger than the logical block; starting a timer in response to writing the first logical block to the data buffer; receiving, by the memory controller, one or more additional requests from the host computing device to write one or more additional logical blocks of application data to the data storage device; prior to an expiration of the timer, determining that the data buffer is not full; detecting the expiration of the timer; writing, by the memory controller, in response to detecting the expiration of the timer and determining that the data buffer is not full, one or more logical blocks of garbage-collected data to the data buffer to fill the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; and writing the full data buffer to the data storage device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data storage device, comprising:
-
a plurality of flash memory devices, each of the flash memory devices being arranged into a plurality of erase units having a plurality of logical blocks for storing data; and a memory controller operationally coupled with the flash memory devices, the memory controller being configured to; receive a request from a host computing device to write a first logical block of application data to the data storage device; write the first logical block to a data buffer, wherein a size of the data buffer is a same size as a page that can be written to the data storage device and is larger than the logical block; start a timer in response to writing the first logical block to the data buffer; receive one or more additional requests from the host computing device to write one or more additional logical blocks of application data to the data storage device; prior to an expiration of the timer, determine that the data buffer is not full; detect the expiration of the timer; write, in response to detecting the expiration of the timer and determining that the data buffer is not full, one or more logical blocks of garbage-collected data to the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; and write the data buffer to the data storage device. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A non-transitory computer-readable storage medium storing instructions that when executed cause a processor to perform a process, the process comprising:
-
receiving a request from a host computing device to write a first logical block of application data to a data storage device; writing the first logical block to a data buffer, wherein a size of the data buffer is a same size as a page that can be written to the data storage device and is larger than the logical block; starting a timer in response to writing the first logical block to the data buffer; receiving one or more additional requests from the host computing device to write one or more additional logical blocks of application data to the data storage device; prior to an expiration of the timer, determining that the data buffer is not full; detecting the expiration of the; writing, in response to detecting the expiration of the timer and determining that the data buffer is not full, one or more logical blocks of garbage-collected data to the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; and writing the data buffer to the data storage device. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A data storage device, comprising:
-
a plurality of flash memory devices, each of the flash memory devices being arranged into a plurality of erase units having a plurality of logical blocks for storing data; and a memory controller operationally coupled with the flash memory devices, the memory controller being configured to; receive a request from a host computing device to write a first logical block of application data to the data storage device; write the first logical block to a data buffer, wherein a size of the data buffer is larger than the logical block and may store multiple logical blocks; start a timer when the first logical block is written to the data buffer; write one or more logical blocks of garbage-collected data to the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; prior to an expiration of the timer, determine that the data buffer is not full; detect the expiration of the timer; in response to detecting the expiration of the timer and determining that the data buffer is not full, write one or more additional logical blocks of garbage-collected data to the data buffer to fill the data buffer; and write the full data buffer to the data storage device. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A method comprising:
-
receiving a request by a memory controller from a host computing device to write a first logical block of application data to the data storage device; writing the first logical block to a data buffer, wherein a size of the data buffer is larger than the logical block and may store multiple logical blocks; starting a timer when the first logical block is written to the data buffer; writing one or more logical blocks of garbage-collected data to the data buffer, wherein the garbage-collected data comprises at least one valid logical block of an erase unit of the data storage device that has been selected for garbage collection; prior to an expiration of the timer, detecting that the data buffer is not full; detecting the expiration of the timer; in response to detecting the expiration of the timer and detecting that the data buffer is not full, writing one or more additional logical blocks of garbage-collected data to the data buffer to fill the data buffer; and writing the full data buffer to the data storage device.
-
Specification