Automatic deletion in persistent storage

By introducing a mechanism of automatically deleting logical blocks in SSD, the problems of degradation of performance after storage fullness and frequent data movement are solved, and efficient garbage collection and performance improvement are achieved.

CN116339617BActive Publication Date: 2025-02-25SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211617219.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-01-24
Filing Date
2022-12-15
Publication Date
2025-02-25
Estimated Expiration
2042-12-15

AI Technical Summary

Technical Problem

After the data storage is full, existing persistent storage devices will degrade performance and data move frequently, resulting in shortening of flash media life and degradation of performance.

Method used

By introducing a mechanism for automatically deleting logical blocks in solid state drives (SSDs), when the read operation of the logical block reaches a predefined threshold, it is automatically marked as invalid and garbage collected, reducing unnecessary data movement.

Benefits of technology

It realizes efficient garbage collection operations, reduces write amplification and read interference errors of flash media, extends the life of flash memory, and improves the overall performance of SSD.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116339617B_ABST
    Figure CN116339617B_ABST
Patent Text Reader

Abstract

A system and method for automatic deletion in a persistent storage device. In some embodiments, the method includes: receiving, by a persistent storage device, a first read command for a first logical data block; determining that a total number of read operations for the first logical data block equals or exceeds a first threshold; and arranging for deletion of the first logical data block from the persistent storage device in response to determining that the total number of read operations for the first logical data block equals or exceeds the first threshold.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to and the benefit of U.S. Provisional Application No. 63 / 291,075, filed on December 17, 2021, entitled “AUTO DELETE AFTER READING SSD,” the entire contents of which are incorporated herein by reference. Technical Field

[0003] One or more aspects of embodiments according to the present disclosure relate to persistent storage, and more particularly, to a system and method for automatically deleting data from a persistent storage device. Background Art

[0004] Persistent storage devices can provide long-term data storage in a variety of applications. In this case, the host can send data to the persistent storage device for storage and read the data from the persistent storage device later as needed.

[0005] Aspects of the present disclosure are directed to this general technical environment. Summary of the invention

[0006] Some embodiments provide a solid-state drive (SSD) architecture for automatically deleting a logical block when the number of read operations performed on the logical block reaches a predefined, host-specified limit or "threshold". The host may specify the expected number of reads for the data being written, for example with a write command; once the limit is reached, the persistent storage device may immediately invalidate the data (making it a candidate for deletion in a garbage collection operation). Such embodiments may enable efficient garbage collection operations by reducing unnecessary data movement, thereby leaving more available bandwidth for host input-output accesses.

[0007] According to an embodiment of the present disclosure, a method is provided, which includes: receiving, by a persistent storage device, a first read command for a first logical data block; determining that a total number of read operations for the first logical data block is equal to or exceeds a first threshold; and arranging for deletion of the first logical data block from the persistent storage device in response to determining that the total number of read operations for the first logical data block is equal to or exceeds the first threshold.

[0008] In some embodiments, scheduling the first logical data block for deletion includes marking the first logical data block as invalid.

[0009] In some embodiments, arranging for deletion of the first logical data block further comprises deleting a physical data block as part of a garbage collection operation, the physical data block comprising a portion of the first logical data block.

[0010] In some embodiments, the method further includes receiving a first write command for the first logical data block, the first write command including a first threshold.

[0011] In some embodiments: the persistent storage device includes a flash memory and a logical-to-physical address mapping table; the method further includes storing the first threshold in a row of the logical-to-physical address mapping table, the row corresponding to the first logical data block.

[0012] In some embodiments, the method further includes: receiving, by the persistent storage device, a second read command for the second logical data block; and in response to receiving the second read command, incrementing a read counter in a row of the logical-to-physical address mapping table that corresponds to the second logical data block.

[0013] In some embodiments, the method also includes: receiving a second write command for a second logical data block, the second write command including a second threshold; determining that the second threshold and the first threshold satisfy a similarity criterion; and in response to determining that the second threshold and the first threshold satisfy the similarity criterion, storing a portion of the second logical data block and a portion of the first logical data block in the first physical block.

[0014] In some embodiments, the method further includes: determining that a set of remaining read times for a first physical block of the persistent storage device satisfies a criterion of few remaining read times; and in response to determining that the set of remaining read times satisfies the criterion of few remaining read times, performing garbage collection in the first physical block.

[0015] In some embodiments, the method further comprises: receiving a query regarding support of the auto-delete feature; and responding to the query with a response indicating that the auto-delete feature is supported.

[0016] In some embodiments, the method further comprises: receiving a query regarding automatically deleted logical data blocks; and responding to the query with a response comprising a list of logical data blocks, the list comprising the first logical data block

[0017] In some embodiments, the method also includes: a persistent storage medium; and a processing circuit configured to: receive a first read command for a first logical data block; determine that a total number of read operations for the first logical data block is equal to or exceeds a first threshold; and in response to determining that the total number of read operations for the first logical data block is equal to or exceeds the first threshold, arrange to delete the first logical data block from the persistent storage device.

[0018] In some embodiments, scheduling the first logical data block for deletion includes marking the first logical data block as invalid.

[0019] In some embodiments, arranging for deletion of the first logical data block further comprises deleting a physical data block as part of a garbage collection operation, the physical data block comprising a portion of the first logical data block.

[0020] In some embodiments, the processing circuit is further configured to receive a first write command for the first logical data block, the first write command including a first threshold.

[0021] In some embodiments: the persistent storage device includes a flash memory and a logical-to-physical address mapping table; the processing circuit is further configured to store the first threshold in a row of the logical-to-physical address mapping table, the row corresponding to the first logical data block.

[0022] In some embodiments, the processing circuit is further configured to: receive a second read command for the second logical data block; and in response to receiving the second read command, increment a read counter in a row of the logical-to-physical address mapping table that corresponds to the second logical data block.

[0023] In some embodiments, the processing circuit is further configured to: receive a second write command for a second logical data block, the second write command including a second threshold; determine that the second threshold and the first threshold satisfy a similarity criterion; and in response to determining that the second threshold and the first threshold satisfy the similarity criterion, store a portion of the second logical data block and a portion of the first logical data block in the first physical block.

[0024] In some embodiments, the processing circuit is further configured to: determine, for a first physical block of a persistent storage device, that a set of remaining read times satisfies a criterion of very few remaining read times; and in response to determining that the set of remaining read times satisfies the criterion of very few remaining read times, perform garbage collection in the first physical block.

[0025] In some embodiments, the processing circuit is further configured to: receive a query regarding support of the auto-delete feature; and respond to the query with a response indicating that the auto-delete feature is supported.

[0026] According to an embodiment of the present invention, a persistent storage device is provided, which includes: a persistent storage medium; and a component for processing, the component for processing being configured to: receive a first read command for a first logical data block; determine that the total number of read operations for the first logical data block is equal to or exceeds a first threshold; and in response to determining that the total number of read operations for the first logical data block is equal to or exceeds the first threshold, arrange to delete the first logical data block from the persistent storage device. BRIEF DESCRIPTION OF THE DRAWINGS

[0027] These and other features and advantages of the present disclosure will be appreciated and understood with reference to the specification, claims and drawings, in which:

[0028] Figure 1 is a block diagram of a solid state drive according to an embodiment of the present disclosure;

[0029] Figure 2A is a storage space allocation map for a persistent storage device that does not have an automatic deletion feature;

[0030] Figure 2B is a storage space allocation map for a persistent storage device with an automatic deletion feature according to an embodiment of the present disclosure;

[0031] Figure 2C is a diagram of a logical to physical address mapping table.

[0032] Figure 3 is a block diagram of an architecture supporting automatic deletion features according to an embodiment of the present disclosure;

[0033] Figure 4 is a block diagram of a persistent storage device and a host according to an embodiment of the present disclosure; and

[0034] Figure 5 is a flowchart of a method according to an embodiment of the present disclosure. DETAILED DESCRIPTION

[0035] The detailed description illustrated below in conjunction with the accompanying drawings is intended as a description of an exemplary embodiment of the system and method for automatic deletion in a persistent storage device provided according to the present disclosure, and is not intended to represent the only form that can be constructed or utilize the present disclosure. The description illustrates the features of the present disclosure in conjunction with the illustrated embodiments. However, it will be understood that the same or equivalent functions and structures can be implemented by different embodiments, which are also intended to be encompassed within the scope of the present disclosure. As noted elsewhere herein, similar element numbers are intended to indicate similar elements or features.

[0036] When the amount of data stored in a persistent storage device (e.g., a solid-state drive (SSD)) exceeds a given percentage (e.g., approximately 50%) of the capacity of the persistent storage device, the performance of the persistent storage device may begin to degrade. For example, in the case of an SSD, when the SSD is almost full, the data bandwidth of the flash memory consumed by background operations (such as garbage collection) may become larger. When the SSD is almost full, the number of read and write input-output operations per second (IOPS) may drop significantly, even if most of the stored data is data that is no longer needed by the host. This may affect the performance of the SSD as well as the durability of the flash media. The persistent storage device itself may not know which data blocks are invalid and available for replacement unless explicitly notified by the host for which the data is stored. Failure to delete or archive such data may result in unnecessary flash data movement and redundant garbage collection operations in the SSD, and may slow down host data access.

[0037] Some applications (e.g., applications running on a host) may have a class of workload characteristics in which data is written to persistent storage by the host and subsequently deleted from the persistent storage device after the data is no longer needed. In some cases, the delay between the time when the data is no longer needed and the time when the host deletes the data from the persistent storage device may be significant, potentially resulting in a degradation in the performance of the persistent storage device. In some cases, the application may know the "expected number of reads" for the data when writing data to the SSD, that is, the number of times the data will be read after being written. For example, certain messages exchanged by social media users may be deleted after being viewed once, and certain sensor data may be discarded once the data has been read and processed. For some group messages or social media posts, once the message has been read by everyone in the group, the message may be deleted or marked as inactive (and, for example, moved to storage designated for infrequently accessed data). In this case, the performance of the persistent storage device may be improved, for example, by arranging for the automatic deletion of the stored data after a certain number of read operations are performed on the data.

[0038] Some embodiments provide a storage device (e.g., SSD) architecture for automatically deleting a logical block when the number of read operations performed on the logical block reaches a predefined, host-specified limit or "threshold" (e.g., expected number of reads). Once the threshold is reached, the persistent storage device can immediately invalidate the data (making it a candidate for deletion in a garbage collection operation). The persistent storage device can further track its dynamic storage capacity and can be queried by the host for real-time available capacity.

[0039] In addition, the persistent storage device may preferentially perform garbage collection in physical blocks with fewer remaining reads. In some embodiments, the persistent storage device may store data that is rarely expected to be read together in a physical block, thereby reducing the likelihood that the data will need to be copied to a new block to avoid a read disturb error, or avoiding the need for such copying altogether.

[0040] Figure 1is a block diagram of an SSD in some embodiments. The host interface 105 is used by a host or "storage server host" to communicate with the SSD. Data write and read IO commands, as well as various media management commands, such as nonvolatile memory express (NVMe) identification commands and NVMeGet Log commands, can be received by the SSD through the host interface 105. The host interface 105 can also be used by the SSD to perform data transfers to and from the host system memory. The SSD can store data in a non-AND (NAND) flash memory 110, such as in a memory die containing memory cells, each of which can be, for example, a single-level cell (SLC), a multi-level cell (MLC), or a triple-level cell (TLC). The flash translation layer (FTL) 115 can provide a mapping between the logical addresses used by the host and the physical addresses of the data in the flash memory. The SSD may also include (i) a buffer 120 (which may include (e.g., be comprised of) dynamic random access memory (DRAM), and (ii) a flash memory interface (or "flash memory controller") 125 for providing appropriate signals to the flash memory 110. Some or all of the host interface 105, the FTL 115, the buffer 120, and the flash memory interface 125 may be implemented in a processing circuit that may be referred to as an SSD controller.

[0041] NAND flash memory can be read or written at the granularity of a flash page that can be between 8kB and 16kB in size. Before a flash memory page can be reprogrammed with new data, it can first be erased. The granularity of the erase operation can be one NAND block or can include, for example, a "physical block" between 128 and 256 pages. Because the granularity of the erase operation and the programming operation is different, garbage collection (GC) can be used to free up partially invalid physical blocks and to make room for new data. The garbage collection operation can (i) identify fragmented flash blocks in which a large portion (e.g., most) of the pages are invalid, and (ii) erase each such physical block. When garbage collection is completed, the pages in the erased physical blocks can be reclaimed and added to the free list in the FTL.

[0042] Flash memory can only be programmed and erased a limited number of times. This may be referred to as the maximum number of program / erase cycles (P / E cycles) it can sustain. In order to maximize the life of the SSD, the SSD controller may strive to distribute write operations to all physical blocks of Flash memory 110; this process may be referred to as wear leveling.

[0043] A mechanism that may be referred to as "read disturbance" can reduce SSD reliability. A read operation on a NAND flash memory cell can cause the threshold voltage of a nearby, unread flash memory cell in the same physical block to change. Such disturbances can change the logical state of the unread cells and can cause uncorrectable error correction code (ECC) read errors, thereby reducing the durability of the flash memory. To avoid this result, the FTL can have a counter of the total number of reads of the physical block since the last erase operation. The contents of the physical block can be copied to a new physical block, and when the counter exceeds a threshold (e.g., 50,000 reads for MLC), the physical block can be recycled to avoid unrecoverable read disturbance errors. Alternatively, in some embodiments, test reads can be periodically performed within the physical block to check the ECC error rate; if the error rate is close to the ECC capability, the data can be copied to a new physical block.

[0044] Due to data relocation performed by various operations in the SSD (e.g., garbage collection), the amount of data that is erased and rewritten can be greater than the data written to the SSD by the host. Each time data is relocated without being changed by the host system, an amount known as "write amplification" increases, and the life of the flash memory 110 is reduced. Write amplification can be measured as the ratio of (i) the number of writes submitted to the flash memory to (ii) the number of writes from the host system.

[0045] The FTL can perform various background operations, such as garbage collection and wear leveling. Therefore, host IO commands coexist with background operations, and these two types of flash memory accesses can compete with each other for flash memory bandwidth. The overhead associated with performing additional program / erase cycles can affect the performance of the SSD.

[0046] SSD write performance can drop dramatically as the drive approaches full capacity. As the SSD fills up, fewer and fewer empty physical blocks are available. When new write data is received during garbage collection, the SSD may read the value of an existing physical block into buffer 120, modify the value with the new data, and then write the buffered data back to flash memory 110. This can introduce a significant amount of additional latency.

[0047] A Data Set Management Trim command may be employed to delete data stored in flash memory 110 (e.g., mark the data as invalid) so that garbage collection can then clear physical blocks in the SSD and increase the available space of the SSD so that the SSD can then write new data to the empty physical blocks. This command enables the host to inform the SSD which blocks of previously saved data blocks are no longer needed. The SSD can then retrieve the pages containing these blocks as free space when erasing these blocks, rather than copying the unwanted data to clean pages. However, if the host does not use the Trim command in a timely manner when the data is no longer needed, the unwanted data may remain on the SSD. This may affect FTL and IO performance.

[0048] As mentioned above, some embodiments provide an SSD architecture for automatically deleting logical blocks when the number of read operations performed on the logical blocks reaches a predefined, host-specified limit or "threshold". The host can specify the expected number of reads for the data being written, for example, with a write command; once the expected number of reads is reached, the persistent storage device can immediately invalidate the data (making it a candidate for deletion in a garbage collection operation). This allows more capacity to be used for over-provisioning (or "over-provisioning") and for user data. Such embodiments can achieve efficient garbage collection operations by reducing unnecessary data movement, thereby reserving more bandwidth for host IO access. Because data movement can be reduced, write amplification and read disturbance related errors in flash memory media can be significantly reduced. In addition, such embodiments can increase the life of flash memory and improve the overall performance of the SSD. To the extent that such embodiments increase the space for over-provisioning, the physical over-provisioning capacity of the SSD can be reduced to reduce the cost of the SSD without significantly reducing SSD performance. As used herein, a "logical block" or "logical data block" is an amount of data that the host treats as a unit (e.g., an amount of data corresponding to a file or a portion of a file from the perspective of the host operating system). As used herein, a "physical block" is a certain amount of persistent storage, such as a certain number of flash memory cells that are erased together when an erase operation is performed. A logical block can be smaller than a physical block, and if so, it can be stored in a single physical block, or different parts of it can be stored in different physical blocks. A logical block can also be larger than a physical block.

[0049] The SSD controller can perform data transfers between the host system memory and the persistent flash memory in response to IO commands. The IO command can specify the source address and the destination address and the length of the data transfer. The FTL maintains a logical-to-physical address mapping table and records the physical flash locations of all logical data blocks. The SSD controller stores the expected number of reads parameter received from the host IO write command for each logical block and calculates the number of reads performed on the logical block (e.g., by incrementing the read counter in the logical-to-physical address mapping table in response to each read command received). The SSD controller then schedules the deletion of the logical block, for example, (i) it deletes the data, or (ii) once the read counter reaches a threshold number (e.g., the expected number of reads), it invalidates the logical block in the logical-to-physical address mapping table. Like logical blocks that are invalidated due to a delete (e.g., Trim) command or an overwrite command received from the host, logical blocks that are invalidated by the SSD controller because the read counter has reached the expected number of reads can be erased during garbage collection (rather than moving them to clean physical blocks). The released user space can be used for garbage collection and user data. If certain logical blocks should be treated as a unit from the host's perspective (e.g., multiple logical blocks corresponding to a file), the host can specify the same expected read number for each logical block so that if they are all accessed as a unit during subsequent read operations, they can all be marked as invalid at the same time.

[0050] The expected number of reads parameter received by the SSD on a per-command basis can also help the SSD controller (e.g., FTL) identify the target physical block on which garbage collection is performed. For example, the FTL can count the total number of remaining reads of a physical block and select the target physical block based on the count. As used herein, the "remaining number of reads" of a logical block is the expected number of reads of the logical block minus the value of the read counter for the logical block. For example, a physical block with a higher number of remaining reads can have a higher chance of being read quickly. Therefore, the FTL can determine that the candidate target physical block meets the criterion of almost no remaining reads, and in response to determining that the set of remaining reads meets the criterion of almost no remaining reads, perform garbage collection in the physical block. The criterion of almost no remaining reads can be any criterion for which the first number of remaining reads is satisfied and the second number of remaining reads is not satisfied for any given physical block, and the first number of remaining reads is less than the second number of remaining reads. For example, if the number of remaining reads is less than a set threshold, or less than a threshold that depends on the number of invalid pages in the physical block (e.g., the larger the number of invalid pages in the physical block, the larger the threshold), then the criterion can be satisfied. For example, if two physical blocks have similar numbers of invalid pages, the FTL may perform garbage collection on the one physical block with fewer remaining read times. In some embodiments, the FTL may instead perform garbage collection on the one physical block with more remaining read times. Avoiding copying data that is no longer needed by the host during garbage collection may also reduce the frequency of data reads, which in turn may reduce read disturb related errors in the flash media, thereby further improving SSD performance.

[0051] In some embodiments, the FTL places data according to an expected read number parameter to further reduce read disturbance errors. For example, the SSD may receive a first write command for a first logical data block and a second write command for a second logical data block, the first write command including a first expected read number and the second write command including a second expected read number. The SSD may then determine that the second expected read number and the first expected read number satisfy a similarity criterion, and in response to determining that the second expected read number and the first expected read number satisfy the similarity criterion, store a portion of the second logical data block (e.g., all of the second logical data block) and a portion of the first logical data block (e.g., all of the second logical data block) in the same physical block. Similarly, when the SSD receives a write command with an expected read number, it may store the associated data in the same physical block as previously stored data having a remaining read number similar to the expected read number (e.g., satisfying the similarity criterion with the expected read number). This strategy can reduce the frequency of garbage collection and copy less data when garbage collection is performed because it can cause the logical data blocks in a given physical block to expire almost simultaneously, making it feasible to wait until all or almost all data in the physical block is expired before performing garbage collection.

[0052] As another example, the FTL may place data with a low expected read count in one physical block to keep the total number of reads for the physical block below a threshold that triggers replication to avoid unrecoverable read disturb errors. In such a physical block, replication may therefore not be required to avoid unrecoverable read disturb errors; this may reduce the number of program-erase cycles and extend the life of the flash memory 110. In addition, in a given block, (i) if read disturb errors are avoided by limiting the total number of reads to below a threshold, and (ii) the data in the physical block expires at approximately similar times, then the block may not require additional data movement and garbage collection.

[0053] In some embodiments, for example using an NVMe Set Feature command, the host can specify an expected number of reads at a later time after sending a write command. This specification by the host can (i) convert data with an unlimited number of reads to data to be erased after the expected number of reads, or (ii) overwrite a previously sent specification (with a write command or otherwise) for the expected number of reads. In some embodiments, the time elapsed since the data was written, or the time elapsed since the data was last read, can be used in conjunction with the number of reads and the expected number of reads to determine whether the data should be marked as invalid; for example, in some embodiments, the persistent storage device can wait for a specific time interval to pass (e.g., between 0.1 hours and 72.0 hours) after the number of reads equals the expected number of reads before marking the data as invalid, thereby giving the host an opportunity to avoid deletion in a manner that increases the benefit of preserving the data when circumstances change.

[0054] In some embodiments, the host may specify a default or generic value for the expected number of reads, for example using the NVMe Set Feature command (or other similar command language that may produce similar results), that will be used for all data written to the persistent storage device (after the default value is set) (i) within a certain LBA range, (ii) within a certain time interval, (iii) within a time range of a day (e.g., between 3 PM and 5 PM Pacific Time), (iii) within a certain namespace, (iv) by hosts whose host identifiers are in a certain list of host identifiers, or (v) that otherwise matches certain set of conditions regarding storage or network parameters.

[0055] Figure 2A and Figure 2B It shows that there is no ( Figure 2A ) and have ( Figure 2B ) SSD storage space layout with the auto-delete feature as described herein. In each case, some storage space is occupied by each of (i) valid user data 205, (ii) spare user space 210, and (iii) over-provisioned space 215. However, without the auto-delete feature, some storage space is consumed by obsolete user data 220 (data no longer needed by the host but not yet deleted or overwritten by the host). When the auto-delete feature is used, the amount of spare user space 210 is larger, as shown. Using the auto-delete feature can reduce background data traffic and reserve more resources and bandwidth for host IO operations.

[0056] As mentioned above, before storing data in the flash memory 110 (eg, programming the data to the flash memory 110), the FTL may write the expected read number along with the logical and physical addresses into a logical-to-physical address mapping table. Figure 2CTable 2 shows information that may be included in a logical-to-physical address mapping table in some embodiments.

[0057] Figure 3 An example of an FTL architecture supporting an automatic deletion feature is shown. When a write command is received, the write command processor 305 can allocate a physical address and write the expected number of reads (NRD) to the logical to physical address mapping table 310. The read command processor 315 can read the physical address from the logical to physical address mapping table and update the read counter of the logical block. The automatic deletion tracker 320 can track the read counter for each row of the logical to physical address mapping table. Once the read counter matches the value of the expected number of reads, the automatic deletion tracker 320 records the logical block number (recorded in a host queryable log (e.g., using an NVMe Get Log Page command) so that the host can determine which logical blocks have been automatically deleted) and invalidates the entry in the logical to physical address mapping table. The automatic deletion tracker can also maintain statistics on the dynamic available capacity of each namespace. These statistics can be queried by the host through various NVMe commands (such as an Identify command, a Get Feature command, or a Get Log command). The garbage collection controller 325 can control garbage collection.

[0058] After the host sends a command to read the feature through the NVMe Idendify data structure, the SSD controller can advertise support for the automatic deletion feature. Various information can be exposed through the Idendify data structure, such as (i) field signaling support for automatic deletion after reading N times, or (ii) field signaling support for reporting the real-time available capacity of the namespace. If reporting the real-time available capacity of the namespace is supported, the host can dynamically query the available capacity through the NVMe Identify command or the NVMe Get Feature command.

[0059] When the NVMe drive and system software read the Identify data structure, it realizes that the connected SSD controller supports automatic deletion after a certain number of read operations. The drive can then use the NVMe Set Feature command to configure and enable (or disable) the automatic deletion feature in the SSD controller. Once the automatic deletion feature is enabled, the NVMe drive and system software can insert the expected number of reads into each NVMe write command. When data expires or when data is deleted, the FTL records the logical block address (LBA) of the data. The host can access the log using the NVMe Get Log Page command.

[0060] In another embodiment, as an alternative to deleting data that has reached an expected number of reads, the data may be marked as cold (and, e.g., prepared for archiving), or moved to a different media type, or compressed depending on the capabilities of the system and according to application-specifiable preferences.

[0061] Figure 4 4 is a block diagram of a host 405 and a persistent storage device 410 (which may be an SSD). The storage device 410 may have a form factor suitable for any of a variety of form factors for persistent storage devices, including but not limited to 2.5", 1.8", MO-297, MO-300, M.2, and the Enterprise and Data Center SSD Form Factor (EDSFF), and it may have an electrical interface through which it can be connected to the host 405, which is any of a number of interfaces suitable for persistent storage devices, including Peripheral Component Interconnect (PCI), PCI Express (PCIe), Ethernet, Small Computer System Interface (SCSI), Serial AT Attachment (SATA), and Serial Attached SCSI (SAS). Each of the host 405 and the storage device 410 may include a processing circuit 415 (discussed in further detail below). The storage device 410 may also include a persistent storage medium 420 (e.g., NAND flash memory) in which a logical to physical address mapping table (or "logical to physical table") 310 may be stored. The processing circuitry 415 of the storage device 410 may perform (and, using the processing circuitry 415 it contains, the storage device 410 may perform) some or all of the methods described herein.

[0062] Figure 5 The flowchart shows an example of a method, including: at 505, receiving a first read command for a first logical data block by a persistent storage device; at 510, determining that a total number of read operations for the first logical data block is equal to or exceeds a first threshold (e.g., an expected number of reads); and in response to determining that the total number of read operations for the first logical data block is equal to or exceeds the first threshold, arranging for deletion of the first logical data block from the persistent storage device at 515.

[0063] Although some embodiments are described herein in the context of SSDs, the present disclosure is not limited to such embodiments, and in some embodiments, the methods disclosed herein or similar methods may be practiced with other kinds of persistent storage devices.

[0064] As used herein, "a portion" of something means "at least some" of that thing, and thus can mean less than all of that thing or all of that thing. Thus, "a portion" of a thing includes the entire thing as a special case, i.e., an example of the entire thing being a portion of a thing. As used herein, the term "or" should be interpreted as "and / or", such that, for example, "A or B" means any one of "A" or "B" or "A and B".

[0065] The background provided in the Background Technology section of this disclosure section is included only to set the context, and the contents of this section are not recognized as prior art. Any component or any combination of components described (e.g., in any system diagram included herein) may be used to perform one or more operations of any flowchart included herein. In addition, (i) the operations are example operations and may involve various additional steps that are not explicitly covered, and (ii) the chronological order of the operations may vary. Where specific NVMe commands or structures are mentioned herein, it will be understood that other similar command languages ​​or structures may be employed to generate similar results.

[0066] Each of the terms "processing circuit" and "components for processing" is used herein to represent any combination of hardware, firmware, and software used to process data or digital signals. Processing circuit hardware may include, for example, an application specific integrated circuit (ASIC), a general or dedicated central processing unit (CPU), a digital signal processor (DSP), a graphics processing unit (GPU), and a programmable logic device, such as a field programmable gate array (FPGA). In a processing circuit, as used herein, each function is either performed by hardware configured (i.e., hardwired) to perform the function, or by more general hardware (such as a CPU) configured to perform functions stored in a non-temporary storage medium. The processing circuit may be manufactured on a single printed circuit board (PCB) or distributed on several interconnected PCBs. The processing circuit may include other processing circuits; for example, the processing circuit may include two processing circuits, an FPGA and a CPU, interconnected on a PCB.

[0067] As used herein, when a method (e.g., an adjustment) or a first quantity (e.g., a first variable) is referred to as being "based on" a second quantity (e.g., a second variable), this means that the second quantity is an input to the method or affects the first quantity, for example, the second quantity may be an input to a function that calculates the first quantity (e.g., the only input, or one of several inputs), or the first quantity may be equal to the second quantity, or the first quantity may be the same as the second quantity (e.g., stored in the same one or more locations in memory as the second quantity). Similarly, if an action is referred to as being taken "in response to" the existence of a condition or circumstance, this means that the action is based at least in part on the existence of the condition or circumstance; other conditions or circumstances may or may not affect the taking of the action.

[0068] It will be understood that although the terms "first", "second", "third", etc. may be used herein to describe various elements, components, regions, layers and / or parts, these elements, components, regions, layers and / or parts should not be limited by these terms. These terms are only used to distinguish one element, component, region, layer or part from another element, component, region, layer or part. Therefore, the first element, component, region, layer or part discussed herein may be referred to as a second element, component, region, layer or part without departing from the spirit and scope of the present inventive concept.

[0069] The terms used herein are only for describing specific embodiments and are not intended to limit the inventive concept. As used herein, the terms "substantially," "about," and similar terms are used as approximate terms rather than as terms of degree, and are intended to illustrate the inherent deviations of measured or calculated values ​​that will be recognized by those of ordinary skill in the art.

[0070] As used herein, the singular form "one" is intended to also include the plural form, unless the context clearly indicates otherwise. It will also be understood that the terms "include" and / or "comprise" when used in this specification indicate the existence of the stated features, wholes, steps, operations, elements and / or components, but do not exclude the existence or addition of one or more other features, wholes, steps, operations, elements, components and / or their groups. As used herein, the term "and / or" includes any and all combinations of one or more related listed items. Statements such as "at least one of" when after the element list modify the entire element list without modifying the individual elements in the list. In addition, when describing the embodiments of the present invention, "may" refers to "one or more embodiments of the present disclosure". In addition, the term "exemplary" is intended to refer to an example or example. As used herein, the terms "use", "use of ... " and "used" can be considered to be synonymous with the terms "utilize", "utilize ... " and "utilize" respectively.

[0071] It will be understood that when an element or layer is referred to as being "on," "connected to," "coupled to," or "adjacent to" another element or layer, it can be directly on, directly connected to, directly coupled to, or directly adjacent to the other element or layer, or there may be one or more intervening elements or layers. In contrast, when an element or layer is referred to as being "directly on," "directly connected to," "directly coupled to," or "immediately adjacent to" another element or layer, there are no intervening elements or layers.

[0072] Any numerical range stated herein is intended to include all subranges with the same numerical precision contained within the stated range. For example, a range of "1.0 to 10.0" or "between 1.0 and 10.0" is intended to include all subranges between (and including) the stated minimum value of 1.0 and the stated maximum value of 10.0, i.e., having a minimum value equal to or greater than 1.0 and a maximum value equal to or less than 10.0, such as, for example, 2.4 to 7.6. Similarly, a range described as "within 35% of 10" is intended to include the stated minimum value of 6.5 (i.e., (1–35 / 100)

[0073] times 10) and the stated maximum of 13.5 (i.e., (1+35 / 100) times 10) between (and including) the stated minimum of 6.5 (i.e., (1–35 / 100) times 10) and the stated maximum of 13.5 (i.e.,

[0074] (1+35 / 100) times 10)), i.e., having a minimum value equal to or greater than 6.5 and a maximum value equal to or less than 13.5, such as, for example, 7.4 to 10.6. Any maximum numerical limit stated herein is intended to include all lower numerical limits contained therein, and any minimum numerical limit stated in this specification is intended to include all higher numerical limits contained therein.

[0075] Although exemplary embodiments of a system and method for automatic deletion in a persistent storage device have been specifically described and illustrated herein, many modifications and variations will be apparent to those skilled in the art. Therefore, it will be understood that a system and method for automatic deletion in a persistent storage device constructed in accordance with the principles of the present disclosure may be embodied in a manner other than that specifically described herein. The present invention is also defined in the appended claims and their equivalents.

Claims

1. A method comprising: receiving a first command to write a first logical data block, wherein the first command is associated with a first threshold; storing a first logical block of data in a first physical location of a persistent storage device in response to a first command; receiving a second command to write a second logical data block, wherein the second command is associated with a second threshold; determining that the second threshold matches the first threshold; Based on determining that the second threshold matches the first threshold, storing the second logical data block in the first physical location; receiving, by the persistent storage device, a third command to read one of the first logical data block or the second logical data block as read data; determining that the number of read operations for reading the data is equal to or exceeds a corresponding threshold selected from the first threshold or the second threshold; In response to determining that the number of read operations for the read data equals or exceeds the corresponding threshold, marking, by the persistent storage device, the read data to identify the read data as invalid; as well as Based on marking the read data, a physical data block associated with the read data is erased by the persistent storage device.

2. The method of claim 1, wherein the erasing of physical data blocks is based on a garbage collection operation. The method of claim 1 , wherein the first command comprises a first threshold value.

4. The method according to claim 3, wherein: The persistent storage device includes a flash memory and a logical to physical address mapping table; and The method also includes storing a first threshold in a row of a logical-to-physical address mapping table, the row corresponding to the first logical data block.

5. The method according to claim 3, further comprising: receiving, by the persistent storage device, a fourth command to read a second logical data block; as well as In response to receiving the fourth command, a read counter in a row of the logical-to-physical address mapping table is incremented, the row corresponding to the second logical data block.

6. The method according to claim 1, further comprising: For a first physical block of the persistent storage device, determining that a set of remaining read counts satisfies a criterion of having almost no remaining read counts, and In response to determining that the set of remaining read counts satisfies a criterion of almost no remaining read counts, garbage collection is performed in the first physical block.

7. The method according to claim 1, further comprising: Receive inquiries about supported auto-deletion features, and The query is responded to with a response indicating that the automatic deletion feature is supported.

8. The method according to claim 1, further comprising: receiving queries about automatically deleted logical blocks, and The query is responded to with a response including a list of logical data blocks, the list including the first logical data block.

9. A persistent storage device, comprising: Persistent storage media; as well as Processing circuit, The processing circuit is configured to: receiving a first command to write a first logical data block, wherein the first command is associated with a first threshold; storing a first logical block of data in a first physical location of a persistent storage device in response to a first command; receiving a second command to write a second logical data block, wherein the second command is associated with a second threshold; determining that the second threshold matches the first threshold; Based on the processing circuit being configured to determine that the second threshold matches the first threshold, the processing circuit being configured to store the second logical data block in the first physical location; receiving a third command to read one of the first logical data block or the second logical data block as read data; determining that the number of read operations for reading the data is equal to or exceeds a corresponding threshold selected from the first threshold or the second threshold; responsive to determining that the number of read operations for the read data equals or exceeds the corresponding threshold, marking the read data to identify the read data as invalid; as well as Based on the marked read data, a physical data block associated with the read data is erased. 10 . The persistent storage device of claim 9 , wherein the processing circuit is configured to erase the first logical data block based on a garbage collection operation. The persistent storage device of claim 9 , wherein the first command comprises a first threshold value.

12. The persistent storage device of claim 11, wherein: The persistent storage device includes a flash memory and a logical to physical address mapping table; and The processing circuit is further configured to store the first threshold in a row of the logical-to-physical address mapping table, the row corresponding to the first logical data block.

13. The persistent storage device of claim 11 , wherein the processing circuit is further configured to: receiving a fourth command to read the second logical data block; and In response to receiving the fourth command, a read counter in a row of the logical-to-physical address mapping table is incremented, the row corresponding to the second logical data block.

14. The persistent storage device of claim 13, wherein the processing circuit is further configured to: receiving a second write command for a second logical data block, the second write command including a second threshold; determining that the second threshold and the first threshold satisfy a similarity criterion; and In response to determining that the second threshold and the first threshold satisfy the similarity criterion, a portion of the second logical data block and a portion of the first logical data block are stored in the first physical block.

15. The persistent storage device of claim 9, wherein the processing circuit is further configured to: For a first physical block of the persistent storage device, determining that a set of remaining read counts satisfies a criterion of having almost no remaining read counts, and In response to determining that the set of remaining read counts satisfies a criterion of almost no remaining read counts, garbage collection is performed in the first physical block.

16. The persistent storage device of claim 9, wherein the processing circuit is further configured to: Receive inquiries about supported auto-deletion features, and The query is responded to with a response indicating that the automatic deletion feature is supported.

17. A persistent storage device, comprising: Persistent storage media; as well as Parts for processing, The components for processing are configured to: receiving a first command to write a first logical data block, wherein the first command is associated with a first threshold; storing a first logical block of data in a first physical location of a persistent storage device in response to a first command; receiving a second command to write a second logical data block, wherein the second command is associated with a second threshold; determining that the second threshold matches the first threshold; Based on the means for processing being configured to determine that the second threshold matches the first threshold, the means for processing being configured to store the second logical data block in the first physical location; receiving a third command to read one of the first logical data block or the second logical data block as read data; determining that the number of read operations for reading the data is equal to or exceeds a corresponding threshold selected from the first threshold or the second threshold; responsive to determining that the number of read operations for the read data equals or exceeds the corresponding threshold, marking the read data to identify the read data as invalid; as well as Based on the marked read data, a physical data block associated with the read data is erased.

Citation Information

Patent Citations

  • Reading interference processing in NAND flash memory

    CN104934066A

  • Read disturb detection and recovery with adaptive thresholding for 3-d NAND storage

    CN109427406A