US-12619368-B2 - Systems and methods for automatic isolation of write data in non-volatile storage devices
Abstract
A storage device may include a controller and a non-volatile memory (NVM) that includes a plurality of blocks grouped into a plurality of superblocks including a first superblock and a second superblock. The controller may receive from a host, a first write command to write first data and a second write command to write second data, and determine a lifetime of the first data and a lifetime of the second data. The lifetime of write data may indicate a duration between a time of initially storing the write data in the NVM and a time of overwriting or deleting the write data from the NVM. The controller may determine that a difference between the first lifetime and the second lifetime is greater than a threshold, and program the first data to the first superblock and the second data to the second superblock that is different from the first superblock.
Inventors
- Nigel David Horspool
- Brian Hatfield Clarke
Assignees
- KIOXIA CORPORATION
Dates
- Publication Date
- 20260505
- Application Date
- 20240828
Claims (20)
- 1 . A storage device, comprising: a non-volatile memory (NVM) comprising a plurality of blocks grouped into a plurality of superblocks, wherein the plurality of superblocks comprises a first superblock and a second superblock; and a controller configured to: identify one or more isolation regions comprising superblocks specified by a host, wherein the first superblock and the second superblock do not belong to the one or more isolation regions; receive from the host, a first write command to write first write data and a second write command to write second write data; determine that the first write data and the second write data are not to be mapped to the one or more isolation regions; determine a first lifetime of the first write data and a second lifetime of the second write data; determine that a difference between the first lifetime and the second lifetime is greater than a threshold; and in response to determining that the difference is greater than the threshold, and in response to determining that the first write data and the second data are not to be written to the one or more isolation regions, program the first write data to the first superblock and the second write data to the second superblock that is different from the first superblock.
- 2 . The storage device of claim 1 , wherein the controller is configured to: in response to determining that the difference is not greater than the threshold, program the first write data and the second write data to an identical superblock among the plurality of superblocks.
- 3 . The storage device of claim 1 , wherein in response to determining that the difference is greater than the threshold, the controller is configured to: determine a plurality of open superblocks among the plurality of superblocks; and select the first superblock and the second superblock from among the plurality of open superblocks.
- 4 . The storage device of claim 1 , wherein the controller is configured to: receive, from the host, a third write command to write third write data; determine a third lifetime of the third write data, wherein the third lifetime indicates a duration between a time of initially storing the third write data in the NVM and a time of overwriting or deleting the third write data from the NVM; and in response to determining that a first difference between the third lifetime and the first lifetime is greater than the threshold and that a second difference between the third lifetime and the second lifetime is greater than the threshold, program the third write data to a third superblock that is different from the first superblock and the second superblock, among the plurality of superblocks.
- 5 . The storage device of claim 1 , wherein in response to determining that the first difference is greater than the threshold and that the second difference is greater than the threshold, the controller is configured to: increase a number of open superblocks among the plurality of superblocks; and select the third superblock from among the plurality of open superblocks including the increased number of open superblocks.
- 6 . The storage device of claim 1 , wherein the first lifetime indicates a duration between a time of initially storing the first write data in the NVM and a time of overwriting or deleting the first write data from the NVM, and the second lifetime indicates a duration between a time of initially storing the second write data in the NVM and a time of overwriting or deleting the second write data from the NVM, and in determining the first lifetime and the second lifetime, the controller is configured to: determine a size of the first write data and a size of the second write data; and determine the first lifetime and the second lifetime such that one write data having a size greater than a size of other write data has a lifetime different to a lifetime of the other write data.
- 7 . The storage device of claim 1 , wherein in determining the first lifetime and the second lifetime, the controller is configured to: determine a write rate associated with the first write data and a write rate associated with the second write data; and determine the first lifetime and the second lifetime such that one write data associated with a determined write rate that is higher than a determined write rate associated with other write data has a lifetime different to a lifetime of the other write data.
- 8 . The storage device of claim 7 , wherein the controller is configured to determine the write rate associated with the first write data using write commands that have been previously received from the host and have the same characteristics as characteristics of the first write command, and the characteristics of the first write command comprise at least one of a command type of the first write command, a host application which has issued the first write command, a submission queue associated with the first write command, a namespace associated with the first write command, a port number associated with the first write command, an instance of a host application which has issued the first write command, a client number associated with the first write command, presence of protection information in the first write command, or presence of a force unit access flag in the first write command.
- 9 . The storage device of claim 1 , wherein the controller is further configured to: receive from the host, a fourth write command to write fourth write data and a fifth write command to write fifth write data; determine a characteristic of the fourth write command and a characteristic of the fifth write command, wherein a characteristic of a write command comprises at least one of a command type of the write command, a host application which has issued the write command, a submission queue associated with the write command, a namespace associated with the write command, a port number associated with the write command, an instance of a host application which has issued the write command, a client number associated with the write command, presence of protection information in the write command, or presence of a force unit access flag in the write command; determine that the characteristic of the fourth write command is different from the characteristic of the fifth write command; and in response to determining that the characteristic of the fourth write command is different from the characteristic of the fifth write command, program the fourth write data and the fifth write data to a fourth superblock and a fifth superblock that is different from the fourth superblock, respectively, among the plurality of superblocks.
- 10 . The storage device of claim 1 , wherein the controller is configured to: program write data received through a submission queue to an identical superblock among the plurality of superblocks; determine that a size or a write rate of write commands received through the submission queue has been changed; and in response to determining that the size or the write rate of the write commands received through the submission queue has been changed, program write data received through the submission queue to a superblock that is different from the identical superblock, among the plurality of superblocks.
- 11 . A method comprising: receiving, from a host by a controller configured to control a non-volatile memory (NVM) comprising a plurality of blocks grouped into a plurality of superblocks, a first write command to write first write data and a second write command to write second write data; identifying one or more isolation regions comprising superblocks specified by the host, wherein the first superblock and the second superblock do not belong to the one or more isolation regions; determining, by the controller, a first lifetime of the first write data and a second lifetime of the second write data; determining, by the controller, that the first write data and the second write data are not to be mapped to the one or more isolation regions; determining, by the controller, that a difference between the first lifetime and the second lifetime is greater than a threshold; and in response to determining that the difference is greater than the threshold, and in response to determining that the first write data and the second data are not to be written to the one or more isolation regions, programming the first write data to a first superblock of the plurality of superblocks and the second write data to a second superblock of the plurality of superblocks that is different from the first superblock.
- 12 . The method of claim 11 , further comprising: in response to determining that the difference is not greater than the threshold, programming the first write data and the second write data to an identical superblock among the plurality of superblocks.
- 13 . The method of claim 11 , wherein programming the first write data and the second write data comprises in response to determining that the difference is greater than the threshold: determining a plurality of open superblocks among the plurality of superblocks; and selecting the first superblock and the second superblock from among the plurality of open superblocks.
- 14 . The method of claim 11 , further comprising: receiving, from the host, a third write command to write third write data; determining a third lifetime of the third write data, wherein the third lifetime indicates a duration between a time of initially storing the third write data in the NVM and a time of overwriting or deleting the third write data from the NVM; and in response to determining that a first difference between the third lifetime and the first lifetime is greater than the threshold and that a second difference between the third lifetime and the second lifetime is greater than the threshold, programming the third write data to a third superblock that is different from the first superblock and the second superblock, among the plurality of superblocks.
- 15 . The method of claim 11 , wherein programming the third write data to the third superblock comprises in response to determining that the first difference is greater than the threshold and that the second difference is greater than the threshold: increasing a number of open superblocks among the plurality of superblocks; and selecting the third superblock from among the plurality of open superblocks including the increased number of open superblocks.
- 16 . The method of claim 11 , wherein the first lifetime indicates a duration between a time of initially storing the first write data in the NVM and a time of overwriting or deleting the first write data from the NVM, and the second lifetime indicates a duration between a time of initially storing the second write data in the NVM and a time of overwriting or deleting the second write data from the NVM, and determining the first lifetime and the second lifetime comprises: determining a size of the first write data and a size of the second write data; and determining the first lifetime and the second lifetime such that one write data having a size greater than a size of other write data has a lifetime different to a lifetime of the other write data.
- 17 . The method of claim 11 , wherein determining the first lifetime and the second lifetime comprises: determining a write rate associated with the first write data and a write rate associated with the second write data; and determining the first lifetime and the second lifetime such that one write data associated with a determined write rate that is higher than a determined write rate associated with other write data has a lifetime different toa lifetime of the other write data.
- 18 . The method of claim 17 , wherein the write rate associated with the first write data is determined using write commands that have been previously received from the host and have the same characteristics as characteristics of the first write command, and the characteristics of the first write command comprise at least one of a command type of the first write command, a host application which has issued the first write command, a submission queue associated with the first write command, a namespace associated with the first write command, a port number associated with the first write command, an instance of a host application which has issued the first write command, a client number associated with the first write command, presence of protection information in the first write command, or presence of a force unit access flag in the first write command.
- 19 . The method of claim 11 , further comprising: receiving from the host, a fourth write command to write fourth write data and a fifth write command to write fifth write data; determining a characteristic of the fourth write command and a characteristic of the fifth write command, wherein a characteristic of a write command comprises at least one of a command type of the write command, a host application which has issued the write command, a submission queue associated with the write command, a namespace associated with the write command, a port number associated with the write command, an instance of a host application which has issued the write command, a client number associated with the write command, presence of protection information in the write command, or presence of a force unit access flag in the write command; determining that the characteristic of the fourth write command is different from the characteristic of the fifth write command; and in response to determining that the characteristic of the fourth write command is different from the characteristic of the fifth write command, programming the fourth write data and the fifth write data to a fourth superblock and a fifth superblock that is different from the fourth superblock, respectively, among the plurality of superblocks.
- 20 . The method of claim 11 , further comprising: programming write data received through a submission queue to an identical superblock among the plurality of superblocks; determining that a size or a write rate of write commands received through the submission queue has been changed; and in response to determining that the size or the write rate of the write commands received through the submission queue has been changed, programming write data received through the submission queue to a superblock that is different from the identical superblock, among the plurality of superblocks.
Description
TECHNICAL FIELD The arrangements described herein relate generally to automatically isolating write data in a non-volatile memory (NVM), and more particularly to directing write data to different superblocks in the NVM based on types and/or lifetime of the write data. BACKGROUND A non-volatile memory storage device such as Solid State Drive (SSD) may include superblock structures each created by arranging physical blocks from different dies (e.g., NAND flash dies or NAND dies) or different planes of the dies as a single structure to increase performance by allowing concurrent writing and reading to many die which increases the write (and read) bandwidth that the SSD can support, and also to decrease the overall system error rate. Such a superblock is commonly referred to as a Redundant Arrays of Independent Disk (RAID) structure as the constituent blocks share similarities with redundancy techniques (e.g., RAID5 or RAID6). Superblocks may be commonly used for enterprise and datacenter implementations, as well as in multi-tenant environments. Modern SSDs can perform garbage collection by moving valid user data (referred to as “reclaim data”) from NAND superblocks to different NAND blocks to generate superblocks that are empty (e.g., superblocks that are garbage collected). In one aspect, write amplification is an undesirable phenomenon associated with flash memory and SSDs where the actual amount of information physically written to the storage media is a multiple of the logical amount intended to be written. For example, if an SSD stores different types of host data into a single open NAND superblock, data with a particular type may be overwritten or deleted while data with other types remaining in the superblock. As a result, garbage collection may be performed to reclaim lots of valid data (e.g., the data with other types), thereby causing high write amplification and significantly reducing write performance. SUMMARY The present arrangements relate to systems and methods for directing write data to different superblocks in the NVM based on types and/or lifetime of the write data. According to some arrangements, a storage device may include a non-volatile memory (NVM) and a controller. The NVM may include a plurality of blocks grouped into a plurality of superblocks. The plurality of superblocks may include a first superblock and a second superblock. The controller may be configured to receive from a host, a first write command to write first write data and a second write command to write second write data. The controller may be configured to determine a first lifetime of the first write data and a second lifetime of the second write data. The first lifetime may indicate a duration between a time of initially storing the first write data in the NVM and a time of overwriting or deleting the first write data from the NVM, and the second lifetime may indicate a duration between a time of initially storing the second write data in the NVM and a time of overwriting or deleting the second write data from the NVM. The controller may be configured to determine that a difference between the first lifetime and the second lifetime is greater than a threshold. In response to determining that the difference is greater than the threshold, the controller may be configured to program the first write data to the first superblock and the second write data to the second superblock that is different from the first superblock. According to some arrangements, a method may include receiving, from a host by a controller configured to control a non-volatile memory (NVM) including a plurality of blocks grouped into a plurality of superblocks, a first write command to write first write data and a second write command to write second write data. The method may include determining, by the controller, a first lifetime of the first write data and a second lifetime of the second write data. The first lifetime may indicate a duration between a time of initially storing the first write data in the NVM and a time of overwriting or deleting the first write data from the NVM, and the second lifetime may indicate a duration between a time of initially storing the second write data in the NVM and a time of overwriting or deleting the second write data from the NVM. The method may include determining, by the controller, that a difference between the first lifetime and the second lifetime is greater than a threshold. The method may include in response to determining that the difference is greater than the threshold, programming the first write data to a first superblock of the plurality of superblocks and the second write data to a second superblock of the plurality of superblocks that is different from the first superblock. BRIEF DESCRIPTION OF THE DRAWINGS These and other aspects and features of the present arrangements will become apparent to those ordinarily skilled in the art upon review of the following description of specific arrangements