Weighted Read Command and Open Block Timer for Storage Devices

By setting up a weight counter table in the controller of the storage device, tracking the weights of each interval and turning off the erase block when the threshold is reached, the problem of erase block bit error accumulation in the storage device is solved, and higher data storage reliability and device life are achieved.

CN114730605BActive Publication Date: 2025-06-24SANDISK TECH
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202080081291.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-24
Filing Date
2020-12-14
Publication Date
2025-06-24
Estimated Expiration
2040-12-14

AI Technical Summary

Technical Problem

In existing storage devices, erasing blocks tend to accumulate bit errors after frequent reading, resulting in data loss or inability to read, and it is difficult to accurately judge the accumulation of bit errors.

Method used

By setting up a weight counter table in the controller of the storage device, the sensitivity weight, read count weight, timer count weight, and operation total weight for each interval are tracked. When the sum of these weights reaches or exceeds a predetermined value, the corresponding erase block is turned off to avoid accumulation of bit errors.

Benefits of technology

It effectively avoids data loss or read failure caused by bit error accumulation of erasing blocks, extends the service life of the storage device, and improves the reliability of data storage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114730605B_ABST
    Figure CN114730605B_ABST
Patent Text Reader

Abstract

The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and storage cells divided into a plurality of partitions. Each partition includes a plurality of dies, where each die includes a plurality of erase blocks. Each erase block includes a plurality of word lines. One or more word lines are grouped together in intervals. Each interval is associated with a sensitivity weight, a read count weight, a timer count weight, and a running total weight. A weight counter table is stored in the controller and tracks these various weights associated with each interval. When the sum of these weights for each interval reaches or exceeds a predetermined value, the controller closes the erase block to avoid an unacceptable amount of bit error accumulation. After the capacity of the erase block is full or the erase block is closed, the bit error sensitivity of the erase block is reduced.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications Technical Field

[0002] This application claims priority to U.S. Application No. 16 / 858,390, filed on April 24, 2020, the entire disclosure of which is incorporated herein by reference. Background Art Technical Field

[0004] Embodiments of the present disclosure generally relate to storage devices, such as solid - state drives (SSDs).

[0005] Description of Related Fields

[0006] Storage devices such as SSDs can be used in computers for applications that require relatively low latency and high - capacity storage. For example, SSDs can exhibit lower latency than hard disk drives (HDDs), especially for random reads and writes. Generally, the controller of an SSD receives commands to read data from or write data to a memory device from a host device. The data is read and written to one or more erase blocks in the memory device. Each of these logical block addresses is associated with a physical media location such that the SSD and / or the host device knows where the data is stored. One or more erase blocks of the physical media can be grouped together by their corresponding logical block addresses of the erase blocks to form multiple partitions.

[0007] After reading data from an erase block a number of times, the erase block storing the data can accumulate bit errors or read interference errors, which can lead to data loss or inability to read. When the total number of times data is read within an erase block exceeds a predetermined value (such as 1,000 reads), the erase block is closed to prevent data loss due to the accumulation of excessive bit errors or read interference errors. The predetermined value (such as 1,000 reads) can signal the controller to close the erase block either too early or too late, such that the erase block may accumulate an undesired amount of bit errors.

[0008] Accordingly, there is a need for a new method to accurately determine the accumulation of bit errors in open erase blocks in a storage device. Summary of the Invention

[0009] The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and storage cells that are divided into multiple partitions. Each partition includes multiple dies, where each die includes multiple erase blocks. Each erase block includes multiple word lines. One or more word lines are grouped together in bins. Each bin is associated with a sensitivity weight, a read count weight, a timer count weight, and a running total weight. A weight counter table is stored in the controller and tracks these various weights associated with each bin. When the sum of these weights for each bin reaches or exceeds a predetermined value, the controller closes the erase block to avoid an unacceptable amount of bit error accumulation. After the capacity of the erase block is full or the erase block is closed, the bit error sensitivity of the erase block is reduced.

[0010] In one embodiment, the storage device includes non-volatile storage cells. The capacity of the non-volatile storage cells is divided into multiple partitions. The non-volatile storage cells include multiple dies, and each die of the multiple dies includes multiple erase blocks. The storage device further includes a controller coupled to the non-volatile storage cells. The controller is configured to: sequentially write data associated with one or more first commands to a partially filled first erase block of a first partition of the multiple partitions, where the first erase block has a writable capacity. The data associated with the one or more first commands partially fills the first erase block to a first program point that is less than the writable capacity. The controller is further configured to receive one or more read commands to non-sequentially read data from the first erase block. Each of the one or more read commands is associated with a weight, and at least two of the weights of the one or more read commands are different. The weights are based on the proximity of the data being read to the first program point and the amount of time the first erase block has been open.

[0011] In another embodiment, the storage device includes non-volatile storage cells. The capacity of the non-volatile storage cells is divided into multiple partitions. The non-volatile storage cells include multiple dies, and each die of the multiple dies includes multiple erase blocks. The storage device further includes a controller coupled to the non-volatile storage cells. The controller is configured to receive multiple read commands to non-sequentially read data from a partially filled first erase block of a first partition of the multiple partitions. The first erase block includes multiple word lines, and the multiple word lines are divided into one or more bins. Each bin is associated with a weight, and the weight is based on the position of the bin within the first erase block and the amount of time the first erase block has been open. The controller is further configured to: increase each of the weights each time a predetermined amount of time has passed; and close the first erase block when the sum of the weights associated with the bins accumulates to a predetermined value, or when one or more write commands to fill the first erase block to its full writable capacity are received.

[0012] In another embodiment, the storage device includes non-volatile storage cells. The capacity of the non-volatile storage cells is divided into a plurality of partitions. The non-volatile storage cells include a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. Each erase block of the plurality of erase blocks includes a plurality of word lines, and the plurality of word lines of each erase block are divided into one or more ranges. The storage device further includes a controller coupled to the non-volatile storage cells. The controller is configured to: receive one or more first read commands to read data from a first range of a first partially filled erase block of the plurality of partitions, wherein the first range is associated with a first weight; and increase the first weight associated with the first range after a first amount of predetermined time has elapsed for a first time. The controller is further configured to: receive one or more second read commands to read data from a second range of the first partially filled erase block, wherein the second range is associated with a second weight different from the first weight; and increase the first weight associated with the first range and the second weight associated with the second range after the first amount of predetermined time has elapsed for a second time. The controller is also configured to: receive one or more third read commands to read the data from the first range; after reading the data stored in the first range in response to the one or more third read commands, increase the first weight associated with the first range; and when the sum of the first weight and the second weight accumulates to a predetermined value, close the first erase block. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] Accordingly, by referring to the embodiments, a way to obtain a detailed understanding of the above features of the present disclosure, a more specific description of the present disclosure, and the above brief summary can be obtained. Some of the embodiments are shown in the drawings. However, it should be noted that the drawings only show typical embodiments of the present disclosure and should not be considered as limiting its scope, as the present disclosure may allow other equally effective embodiments.

[0014] Figure 1 is a schematic block diagram showing a storage system according to one embodiment.

[0015] Figure 2 is a block diagram showing a method of operating a storage device to execute read or write commands according to one embodiment.

[0016] Figure 3A shows a partition namespace utilized in a storage device according to one embodiment.

[0017] Figure 3B shows according to one embodiment Figure 3A a state diagram of the partition namespace of the storage device.

[0018] Figure 4A is a diagram showing the error sensitivity of different intervals of an erasure block according to one embodiment.

[0019] Figure 4B is further showing according to one embodiment Figure 4A a table of the error sensitivity of different intervals of an erasure block.

[0020] Figure 5A is a diagram showing the error sensitivity of different intervals of an erasure block according to another embodiment.

[0021] Figure 5B is further showing according to another embodiment Figure 5A a table of the error sensitivity of different intervals of an erasure block.

[0022] Figure 6A is a diagram showing the error sensitivity of different intervals of an erasure block according to yet another embodiment.

[0023] Figures 6B to 6C is further showing according to various embodiments Figure 6A a table of the error sensitivity of different intervals of an erasure block.

[0024] For the sake of facilitating understanding, where possible, the same reference numerals are used to denote the same elements common to the drawings. It is contemplated that elements disclosed in one embodiment can be advantageously used in other embodiments without specific recitation. Detailed Description

[0025] Hereinafter, reference is made to embodiments of the present disclosure. However, it should be understood that the present disclosure is not limited to the specifically described embodiments. Instead, any combination of the following features and elements (whether or not related to different embodiments) is contemplated to implement and practice the present disclosure. Moreover, although embodiments of the present disclosure may achieve advantages over other possible solutions and / or over the prior art, whether a particular advantage is achieved by a given embodiment is not a limitation of the present disclosure. Accordingly, the following aspects, features, embodiments, and advantages are illustrative only and are not to be considered elements or limitations of the appended claims unless expressly recited in the claims. Similarly, references to "the present disclosure" should not be construed as a generalization of any inventive subject matter disclosed herein and should not be considered an element or limitation of the appended claims unless expressly recited in the claims.

[0026] The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and storage cells that are divided into a plurality of partitions. Each partition includes a plurality of dies, where each die includes a plurality of erase blocks. Each erase block includes a plurality of word lines. One or more word lines are grouped together in intervals. Each interval is associated with a sensitivity weight, a read count weight, a timer count weight, and a running total weight. A weight counter table is stored in the controller and tracks these various weights associated with each interval. When the sum of these weights for each interval reaches or exceeds a predetermined value, the controller closes the erase block to avoid an unacceptable amount of bit error accumulation. After the capacity of the erase block is full or the erase block is closed, the bit error sensitivity of the erase block is reduced.

[0027] Figure 1 FIG. 4 is a schematic block diagram showing a storage system 100 in accordance with one or more techniques of the present disclosure, where the storage device 106 can be used as a storage device for the host device 104. For example, the host device 104 can utilize storage cells 110 (such as non-volatile memory (NVM)) included in the data storage device 106 to store and retrieve data. For example, the storage cells 110 can be any type of non-volatile memory such as MRAM, NAND, NOR, or HDD. In the following description, for simplicity and illustrative purposes, the storage cells 110 are referred to as non-volatile memory (NVM) 110. The host device 104 includes host DRAM 138. In some examples, the storage system 100 can include a plurality of storage devices that can operate as a storage array, such as the storage device 106. For example, the storage system 100 can include a plurality of storage devices 106 that are configured as a redundant array of inexpensive / independent disks (RAID) that collectively serve as a mass storage device for the host device 104.

[0028] The storage system 100 includes a host device 104 that can store data to and / or retrieve data from one or more storage devices such as the storage device 106. As Figure 1 shown, the host device 104 can communicate with the storage device 106 via an interface 114. The host device 104 can include any one of a variety of devices, including computer servers, network-attached storage (NAS) units, desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, cellular phones such as so-called "smart" phones, so-called "smart" tablets, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, and the like.

[0029] The storage device 106 includes a controller 108, an NVM 110, a power supply 111, a volatile memory 112, and an interface 114. The controller 108 includes an internal memory or buffer (not shown). In some examples, for clarity, the storage device 106 may include Figure 1 additional components not shown. For example, the storage device 106 may include a printed circuit board (PCB) to which the components of the storage device 106 are mechanically attached, and the printed circuit board includes conductive traces for electrically interconnecting the components of the storage device 106 and the like. In some examples, the physical size and connector configuration of the storage device 106 may conform to one or more standard form factors. Some exemplary standard form factors include, but are not limited to, 3.5” data storage devices (e.g., HDD or SSD), 2.5” data storage devices, 1.8” data storage devices, Peripheral Component Interconnect (PCI), PCI Extended (PCI-X), PCI Express (PCIe) (e.g., PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI, etc.). In some examples, the storage device 106 may be directly coupled (e.g., directly soldered) to the motherboard of the host device 104.

[0030] The interface 114 of the storage device 106 may include one or both of a data bus for exchanging data with the host device 104 and a control bus for exchanging commands with the host device 104. The interface 114 may operate according to any suitable protocol. For example, the interface 114 may operate according to one or more of the following protocols: Advanced Technology Attachment (ATA) (e.g., Serial ATA (SATA) and Parallel ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), PCI, PCIe, Non-Volatile Memory Standard (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Compute Express Link (CXL), Open Channel SSD (OCSSD), etc. The electrical connection of the interface 114 (e.g., data bus, control bus, or both) is electrically connected to the controller 108, thereby providing an electrical connection between the host device 104 and the controller 108 and allowing data to be exchanged between the host device 104 and the controller 108. In some examples, the electrical connection of the interface 114 may also allow the storage device 106 to receive power from the host device 104. For example, as Figure 1 shown, the power supply 111 may receive power from the host device 104 via the interface 114.

[0031] The storage device 106 includes a NVM 110, which may include multiple memory devices or memory cells. The NVM 110 can be configured to store and / or retrieve data. For example, the memory cells of the NVM 110 can receive data and a message from the controller 108 indicating to store the data in the memory cells. Similarly, the memory cells of the NVM 110 can receive a message from the controller 108 indicating to retrieve data from the memory cells. In some examples, each of the memory cells can be referred to as a die. In some examples, a single physical chip can include multiple dice (i.e., multiple memory cells).

[0032] In some examples, each memory cell can be configured to store a relatively large amount of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.).

[0033] In some examples, each memory cell of the NVM 110 can include any type of non-volatile memory device, such as a flash memory device, a phase change memory (PCM) device, a resistive random access memory (ReRAM) device, a magnetoresistive random access memory (MRAM) device, a ferroelectric random access memory (F-RAM), a holographic memory device, and any other type of non-volatile memory device.

[0034] The NVM 110 can include multiple flash memory devices or memory cells. The flash memory devices can include NAND-based or NOR-based flash memory devices and can store data based on the charge contained in the floating gate of the transistor for each flash memory cell. In a NAND flash memory device, the flash memory device can be divided into multiple blocks, which can be divided into multiple pages. Each of the multiple blocks within a particular memory device can include multiple NAND cells. The rows of the NAND cells can be electrically connected using word lines to define the pages among the multiple pages. The corresponding cells in each of the multiple pages can be electrically connected to corresponding bit lines. Additionally, the NAND flash memory device can be a 2D or 3D device and can be a single-level cell (SLC), a multi-level cell (MLC), a triple-level cell (TLC), or a quad-level cell (QLC). The controller 108 can write data to and read data from the NAND flash memory device at the page level and erase data from the NAND flash memory device at the block level.

[0035] The storage device 106 includes a power supply 111, which can supply power to one or more components of the storage device 106. When operating in the standard mode, the power supply 111 can use the power provided by an external device such as the host device 104 to supply power to one or more components. For example, the power supply 111 can use the power received from the host device 104 via the interface 114 to supply power to one or more components. In some examples, the power supply 111 can include one or more power storage components, which are configured to supply power to one or more components when operating in the off mode, such as in the case of stopping receiving power from an external device. In this way, the power supply 111 can be used as an on-board backup power supply. Some examples of one or more power storage components include, but are not limited to, capacitors, supercapacitors, batteries, etc. In some examples, the amount of electrical energy that can be stored by one or more power storage components can be a function of the cost and / or size (e.g., area / volume) of one or more power storage components. In other words, as the amount of electrical energy stored by one or more power storage components increases, the cost and / or size of one or more power storage components also increases.

[0036] The storage device 106 also includes a volatile memory 112, which can be used by the controller 108 to store information. The volatile memory 112 can include one or more volatile memory devices. In some examples, the controller 108 can use the volatile memory 112 as a cache. For example, the controller 108 can store the cached information in the volatile memory 112 until the cached information is written to the non-volatile memory 110. As Figure 1 shown, the volatile memory 112 can consume the power received from the power supply 111. Examples of the volatile memory 112 include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4, DDR5, LPDDR5, etc.)).

[0037] Various types of volatile memory can be used for different access attributes. For example, DRAM can be arranged for longer burst accesses to improve the bandwidth (BW) of the same access bus. Alternatively, DRAM can be used for smaller accesses such that random small accesses can have better latency. Controller 108 includes additional optional SRAM and / or embedded MRAM (not shown). Embedded MRAM is another alternative memory that can be used in another implementation. Similarly, access to MRAM can be optimized for different design purposes, but the amount of embedded MRAM in SSD controller 108 may be cost-sensitive. Therefore, how much data and which data to enter the high-level non-volatile memory and high-level volatile memory will be subject to system trade-offs.

[0038] Storage device 106 includes a controller 108 that can manage one or more operations of storage device 106. For example, controller 108 can manage reading data from and / or writing data to NVM 110 via a switching mode (TM) bus (not shown). In some implementations, when storage device 106 receives a write command from host device 104, controller 108 can initiate a data storage command to store the data to NVM 110 and monitor the progress of the data storage command. Controller 108 can determine at least one operating characteristic of storage system 100 and store the at least one operating characteristic to NVM 110. In some implementations, when storage device 106 receives a write command from host device 104, controller 108 temporarily stores the data in internal memory before sending the data associated with the write command to NVM 110. Controller 108 includes a weight counter table 120 that is used to determine and estimate error sensitivity in NVM 110, as discussed further below.

[0039] Figure 2 is a block diagram showing a method 200 of operating a storage device to execute a read or write command. Method 200 can be used with storage system 100, which has a host device 104 and a storage device 106 that includes a controller 108. Method 200 can be used with a device that has a host device and a storage device that includes a command processor.

[0040] Method 200 begins at operation 250, where the host device writes a command as an entry into a submission queue. At operation 250, the host device can write one or more commands into the submission queue. The command can be a read command or a write command. The host device can include one or more submission queues. The host device can write one or more commands into the submission queue in any order (i.e., submission order), regardless of the order in which the one or more commands are written (i.e., sequential processing order).

[0041] In operation 252, the host device writes one or more updated commit queue tail pointers and rings a doorbell or sends an interrupt signal to notify or signal the storage device of a new command ready to be executed. If there are more than one commit queue, the host can write the updated commit queue tail pointers and send a doorbell or interrupt signal for each commit queue in the commit queue. In operation 254, in response to receiving the doorbell or interrupt signal, the controller of the storage device fetches the command from one or more commit queues, and the controller receives or DMA reads the command.

[0042] In operation 256, the controller processes the command and writes or transfers the data associated with the command to the host device memory. The controller can process more than one command at a time. The controller can process one or more commands in commit order or in sequence. Processing a write command can include: identifying the partition for writing the data associated with the command, writing the data to one or more logical block addresses (LBAs) of the partition, and advancing the write pointer of the partition to identify the next available LBA within the partition.

[0043] In operation 258, once the command has been fully processed, the controller writes a completion entry corresponding to the executed command to the host device's completion queue, and moves or updates the CQ head pointer to point to the newly written completion entry.

[0044] In operation 260, the controller generates an interrupt signal or doorbell and sends it to the host device. The interrupt signal indicates that the command has been executed and the data associated with the command is available in the memory device. The interrupt signal further notifies the host device that the completion queue is ready to be read or processed.

[0045] In operation 262, the host device processes the completion entry. In operation 264, the host device writes the updated CQ head pointer to the storage device and rings a doorbell or sends an interrupt signal to the storage device to release the completion entry.

[0046] Figure 3A Shows a view of the zone namespace (ZNS) 302 used in the storage device 300 according to one embodiment. The storage device 300 can present the ZNS 302 view to the host device. Figure 3B Shows a state diagram 350 of the ZNS 302 of the storage device 300 according to one embodiment. The storage device 300 can be Figure 1The storage device 106 of the storage system 100. The storage device 300 may have one or more ZNSs 302, and each ZNS 302 may have a different size. In addition to the one or more partition namespaces 302, the storage device 300 may further include one or more conventional namespaces. Further, the ZNS 302 may be a zone-block command (ZBC) for SAS and / or a zone device ATA command set (ZAC) for SATA. Due to the relationship between possible logical and physical activities, host-side partitioning activities may be more directly related to media activities in the partitioned drive.

[0047] In the storage device 300, the ZNS 302 is the number of NVMs that can be formatted into logical blocks such that the capacity is divided into multiple partitions 306a - 306n (collectively referred to as partitions 306). The NVM may be Figure 1 a storage cell or NVM 110. Each of the partitions 306 includes a plurality of physical blocks or erase blocks (not shown) of the memory cells or NVM 304, and each of these erase blocks is associated with a plurality of logical blocks (not shown). Each of the partitions 306 may have a size aligned with the capacity of one or more erase blocks of the NVM or NAND device. When the controller 308 receives a command from, for example, a host device (not shown) or a submission queue of the host device, the controller 308 may read data from and write data to the plurality of logical blocks associated with the plurality of erase blocks (EBs) of the ZNS 302. Each of the logical blocks is associated with a unique LBA or sector.

[0048] In one embodiment, the NVM 304 is a NAND device. The NAND device includes one or more die. Each of the one or more die includes one or more planes. Each of the one or more planes includes one or more erase blocks. Each of the one or more erase blocks includes one or more word lines (e.g., 256 word lines). Each of the one or more word lines can be addressed in one or more pages. For example, an MLC NAND die may use an upper page and a lower page to achieve two bits in each cell of the entire word line (e.g., 16 KiB per page). Further, each page can be accessed at a granularity equal to or less than a full page. The controller may frequently access NAND with a user data granularity LBA size of 512 bytes. Thus, as mentioned in the following description, the NAND location is equal to a granularity of 512 bytes. Thus, with an LBA size of 512 bytes and a page size of 16 KiB for two pages of MLC NAND, this results in 32 LBAs per word line. However, the NAND location size is not intended to be limiting and is provided only as an example.

[0049] When data is written to an erase block, one or more logical blocks are correspondingly updated within partition 306 to track the location of the data within NVM 304. The data can be written to one partition 306 at a time until the partition 306 is full, or written to multiple partitions 306 such that multiple partitions 306 can be partially filled. Similarly, when data is written to a specific partition 306, the data can be written one block at a time to multiple erase blocks in a per-verticle-line order until moving to an adjacent block (i.e., writing to the first erase block until the first erase block is full before moving to the second erase block), or the data can be written multiple blocks at a time to multiple erase blocks in a per-verticle-line order to partially fill each block in a parallel manner (i.e., writing the first word line of each erase block before writing the second word line of each erase block). This sequential programming of each NAND location is a typical non-restrictive requirement of many NAND EBs.

[0050] When controller 308 selects the erase blocks that will store the data for each partition, controller 308 will be able to select the erase blocks during the partition open time, or the controller can select the erase blocks when there is a need to reach the first word line that fills the specific erase block. This may be more differentiating when using the method of fully filling one erase block before starting the next erase block as described above. Controller 308 can use the time difference to select a more optimized erase block on an immediate basis. The decision of which erase blocks are assigned and designated to each partition and its consecutive LBAs can occur within controller 308 for zero or more parallel partitions all the time.

[0051] Each partition within partition 306 is associated with a partition start logical block address (ZSLBA) or a partition start sector. The ZSLBA is the first available LBA within partition 306. For example, the first partition 306a is associated with ZaSLBA, the second partition 306b is associated with ZbSLBA, the third partition 306c is associated with ZcSLBA, the fourth partition 306d is associated with ZdSLBA, and the nth partition 306n (i.e., the last partition) is associated with ZnSLBA. Each partition 306 is identified by its ZSLBA and is configured to receive sequential writes (i.e., writing data to NVM 110 in the order in which write commands are received).

[0052] When writing data to partition 306, the write pointer 310 is advanced or updated to point to or indicate the next available block in partition 306 for writing data, so as to track the next write start point (i.e., the completion point of the previous write is equal to the start point of the subsequent write). Thus, the write pointer 310 indicates where the subsequent write to partition 306 will start. The subsequent write command is a "partition append" command, and the data associated with this subsequent write command is appended to partition 306 at the location indicated by the write pointer 310 as the next start point. A sorted list of LBAs within partition 306 can be stored for write sorting. Each partition 306 can have its own write pointer 310. Thus, when a write command is received, the partition is identified by its ZSLBA, and the write pointer 310 determines the location where data writing starts within the identified partition.

[0053] Figure 3B Shows the state diagram 350 for Figure 3A the ZNS 302. In the state diagram 350, each partition can be in a different state, such as empty, active, full, or offline. When a partition is empty, the partition contains no data (i.e., no erased block in the partition currently stores data), and the write pointer is at the ZSLBA (i.e., WP = 0). Once a write is scheduled to the partition or a partition open command is issued by the host, the empty partition will switch to an open and active partition. Partition management (ZM) commands can be used to move a partition between the partition open and partition closed states (both are active states). If a partition is active, the partition includes open blocks that can be written to, and a description of the recommended time in the active state can be provided to the host. The controller 308 includes the ZM. Partition metadata can be stored in the ZM and / or the controller 308.

[0054] The term "write" includes programming user data at 0 or more NAND locations in an erased block and / or at partially filled NAND locations in an erased block when the user data has not filled all available NAND locations. The term "write" can further include moving a partition to full due to internal drive processing needs (open block data retention issues caused by faster accumulation of these error bits on open erased blocks), the storage device 300 closing or filling a partition due to resource limitations (such as too many open partitions to track or detected defective states, etc.), or the host device closing a partition due to issues such as no more data to send to the drive, the computer shutting down, error handling on the host, limited host resources for tracking, etc.

[0055] The active partition can be open or closed. An open partition is an empty or partially filled partition that is ready to be written to and has currently allocated resources. Data received from the host device using a write command or a partition append command can be programmed into an open erase block that is currently not filled with previous data. A closed partition is an empty or partially filled partition that is not currently receiving writes continuously from the host. Moving a partition from an open state to a closed state allows the controller 308 to reallocate resources to other tasks. These tasks can include, but are not limited to, other open partitions, other regular non-partitioned regions, or other controller requirements.

[0056] In both open and closed partitions, the write pointer points to a location within the partition that is between the ZSLBA and the end of the last LBA of the partition (i.e., WP > 0). The active partition can be switched between open and closed states according to a designation made by the ZM, or this switch can occur when writes are scheduled to the partition. Additionally, the ZM can reset the active partition to clear or erase the data stored in the partition, such that the partition switches back to an empty partition. Once the active partition is full, the partition switches to a full state. A full partition is a partition that is completely filled with data and has no more available sectors or LBAs for writing data (i.e., WP = partition capacity (ZCAP)). In a full partition, the write pointer points to the end of the writable capacity of the partition. Read commands for the data stored in a full partition can still be executed.

[0057] A partition can have any total capacity, such as 256 MiB or 512 MiB. However, a small portion of each partition may be inaccessible for writing data but can still be read, such as the portion of each partition that stores parity data and one or more excluded erase blocks. For example, if the total capacity of partition 306 is 512 MiB, then the ZCAP can be 470 MiB, which is the capacity available for writing data, while 42 MiB is not available for writing data. The writable capacity (ZCAP) of a partition is equal to or less than the total partition storage capacity. The storage device 300 can determine the ZCAP of each partition when the partition is reset. For example, the controller 308 or the ZM can determine the ZCAP of each partition. When the partition is reset, the storage device 300 can determine the ZCAP of that partition.

[0058] ZM can reset a full partition, thereby scheduling the erasure of data stored in the partition so that the partition switches back to an empty partition. When resetting a full partition, although the partition may be marked as an empty partition available for writing, the data in the partition may not be immediately cleared. However, the reset partition must be erased before switching to an open and active partition. The partition can be erased at any time between ZM reset and ZM open. When resetting a partition, the storage device 300 can determine the new ZCAP of the reset partition and update the writable ZCAP attribute in the partition metadata. An offline partition is a partition to which data cannot be written. An offline partition can be in a full state, an empty state, or a partially full state and not be active.

[0059] Since resetting a partition clears all data stored in the partition or schedules the erasure of all data stored in the partition, the need for garbage collection of individual erase blocks is eliminated, thus improving the overall garbage collection process of the storage device 300. The storage device 300 can mark one or more erase blocks for erasure. When a new partition is to be formed and the storage device 300 anticipates ZM open, the one or more erase blocks marked for erasure can be erased. The storage device 300 can further decide and create the physical support for the partition when erasing these erase blocks. Thus, once the new partition is open and the erase blocks are selected to form the partition, the erase blocks will be erased. In addition, each time a partition is reset, a new order of the LBAs of the partition 306 and the write pointer 310 can be selected so that the partition 306 can tolerate receiving commands out of order. Optionally, the write pointer 310 can be turned off so that commands can be written to any starting LBA indicated by the command.

[0060] Re-reference Figure 3A When the host sends a write command to write data to the partition 306, the controller 308 pulls in the write command and identifies the write command as a write to the newly opened partition 306. The controller 308 selects a set of EBs to store the data associated with the write command for the newly opened partition 306, and the newly opened partition 306 switches to the active partition 306. The write command can be a command for writing new data or a command to move valid data to another partition for garbage collection purposes. The controller 308 is configured to DMA read new commands from a submission queue filled by the host device.

[0061] In the empty partition 306 that has just been switched to the active partition 306, because the write pointer 310 indicates the logical block associated with the ZSLBA as the first available logical block, the data is assigned to the partition 306 and a set of associated sequential LBAs of the partition 306 starting at the ZSLBA. The data can be written to one or more erase blocks or NAND locations that have been allocated for the physical location of the partition 306. After the data associated with the write command is written to the partition 306, the write pointer 310 is updated to point to the next LBA available for host writing (i.e., the completion point of the first write). The write data from the host write command is sequentially programmed into the next available NAND location in the erase block that is selected for the physical support of the partition.

[0062] For example, the controller 308 may receive a first write command to the third partition 306c, or a first partition append command. The host sequentially identifies which logical block of the partition 306 is used to write the data associated with the first command. The data associated with the first command is then written to the first or next available LBA in the third partition 306c as indicated by the write pointer 310, and the write pointer 310 is advanced or updated to point to the next available LBA available for host writing (i.e., WP>0). If the controller 308 receives a second write command to the third partition 306c, or a second partition append command, the data associated with the second write command is written to the next available LBA identified by the write pointer 310 in the third partition 306c. Once the data associated with the second command is written to the third partition 306c, the write pointer 310 is again advanced or updated to point to the next available LBA available for host writing. Resetting the third partition 306c moves the write pointer 310 back to the ZcSLBA (i.e., WP=0), and the third partition 306c switches to an empty partition.

[0063] Figure 4A , Figure 5A and Figure 6A is a graph illustrating error sensitivity of different regions of an erase block according to various embodiments. Figure 4B , Figure 5B and Figure 6B is a table containing various values ​​of different factors that contribute to the bit error sensitivity of an erase block according to various embodiments. The number of programs of the erase block is on the x-axis and the error sensitivity is on the y-axis. The x-axis ranges from the erase block containing no programming data to the erase block being full. The total number of programs that may be contained when the erase block is full is a variable value depending on the size of the program and the size of any associated metadata. In the following description, for simplicity and exemplary purposes, reference will be made to non-volatile storage cells as NVM. In addition, although Figure 4A 4C is directed to erase blocks, but the same concepts can be applied to entire partitions or entire streams, as discussed below.

[0064] In addition, the y-axis range is from low error sensitivity to high error sensitivity. Error sensitivity is relative and may depend on the type of non-volatile memory. In addition, the ranges of low sensitivity and high sensitivity are used to provide examples for further explaining the embodiments herein. The curves shown are neither restrictive nor constraining, but are used to provide possible embodiments of increasing read error sensitivity to increase writes to erase blocks.

[0065] An erase block may have a total capacity of 256 word lines. However, the erase block may have more or fewer than 256 word lines. Data is sequentially written to the word lines in the first erase block of the first partition using a write pointer (such as Figure 3A the pointer 310). When all word lines are written to the first erase block, the first erase block may be closed (i.e., each word line (WL) in the erase block (EB) has been programmed such that each cell has been programmed with a non-erased value). When a new write command is received, a second erase block may be allocated for the new write data. Similar to open and active partitions, such as Figure 3B the open and active partitions described in

[0066] In one embodiment, data is written to the first word line in the first erase block of each plane of each die within the first partition. The data is written sequentially, filling each word line of the first erase block of each plane of each die within the first partition. Once the first erase block of each plane of each die is filled, data is written to the second erase block of each plane of each die, and so on. In another embodiment, the erase block is programmed completely from top to bottom (i.e., from the first word line to the last word line) before continuing to program another erase block. In such an embodiment, the ZCAP (such as Figure 3B the ZCAP described in

[0067] However, since a predetermined read error sensitivity value is reached, the erase block may be closed before the erase block is full capacity. The predetermined read sensitivity value may be from about 1000 to about 2000. The value of the predetermined read error sensitivity value is neither intended to be limiting nor restrictive, but rather is intended to provide an example of possible values. In one embodiment, the predetermined read error sensitivity value is determined when the erase block is first opened. In another embodiment, the predetermined read error sensitivity value changes dynamically based on current conditions (such as the current predetermined read error sensitivity and / or the current number of reads of a particular section of the erase block). In yet another embodiment, the storage device may temporarily switch the location of user data received from the host and perform real-time testing to determine a new read error sensitivity value. Thus, the predetermined read error sensitivity value may change rather than being a set constant value.

[0068] For the following examples, the data size written to the erase block is equal to the word line. In the examples herein, the erase block contains 256 word lines. The values presented for the data write size and the erase block size are not intended to be limiting. The use of the term "word line" throughout the following embodiments is not intended to be limiting, but rather is intended to provide possible examples to help explain some possible embodiments. As discussed above, data may be written to the erase block or partition in a size greater than or less than the word line.

[0069] As the shared circuitry for programming and reading is further separated in the NAND die layout, the accumulation of related bit errors on the word lines within the open erase block is reduced. This separation of the circuitry allows for more isolated electrical behavior, such as crosstalk and component leakage. This correlation may be related to the word line number available for addressing the physical medium; however, a correlation between the word line number and the circuit separation is not always required.

[0070] One or more word lines in each of the plurality of partitions are grouped together into intervals. The word lines may be separated into various intervals according to a program time frame or according to an estimated error sensitivity (i.e., word lines with similar error sensitivities are grouped together in an interval). For example, word lines programmed at approximately the same time may be grouped together into an interval. The erase block may have a single interval or multiple intervals. Each interval may include one or more word lines. Each interval may have the same number of word lines or may have a different number of word lines. In embodiments where the interval includes multiple word lines, the word lines of the interval are sequential or continuous.

[0071] Using a write pointer (such as Figure 3AThe pointer 310) writes the intervals sequentially within the erase block. In addition, each interval is associated with a sensitivity weight (Sw), a read count weight (Rc), a timer count weight (Y_bin_n), and a running total weight (Tn). The symbol "n" refers to the position of the interval within all the intervals in the erase block. Different from writing data to the intervals, where the writing occurs sequentially, the read commands for reading data can occur non-sequentially within the erase block.

[0072] The first program point includes all the data currently written to the erase block, such that the first program point represents the last programmed interval. The probability of accumulating errors during the reading of an interval further from the first program point (i.e., closer to the start of the erase block) is generally less than the probability of accumulating errors during the reading of an interval closer to the first program point. For example, the first program point may include data stored in 10 intervals, where the read commands for the later intervals (i.e., closest to the first program point 406) have a higher error sensitivity probability than the read commands for the first interval (i.e., closest to the start of EB 402). The error sensitivity probability is set to various values represented by the sensitivity weight, where a lower sensitivity weight refers to a lower sensitivity probability, and a higher sensitivity weight refers to a higher error sensitivity probability. Each interval may have the same sensitivity weight as another interval, or a different sensitivity weight from other intervals. In addition, in one embodiment, each sensitivity weight is associated with a single interval. In another embodiment, the sensitivity weight may be associated with multiple intervals.

[0073] Each time one or more read commands for reading data from an interval are received, the read count for the corresponding interval (e.g., the read command for word line 5 may correspond to interval 1 (Y1)) is incremented by 1 for each read command. The increment of the read count increases the read weight count, and thus increases the running total weight, and updates Figure 1 the weight counter table 120. The timer count weight refers to the weight associated with the time that the interval storing data within the open erase block has been open. The controller (such as Figure 1 controller 108) has an internal timer or clock to continuously track the time that each interval has been open.

[0074] When the erase block is open and partially written (i.e., not full), bit errors may accumulate. Equations such as x = (threshold) / (time) (where x refers to the bit errors per time step) can be used to estimate the number of errors associated with each open interval. The threshold is a predetermined value associated with an unacceptable amount of bit error accumulation. When the predetermined value is exceeded, the erase block is closed by filling its capacity with padding data or dummy data. The time refers to the amount of time (in seconds) that an interval can be open before bit errors have accumulated.

[0075] For example, if the interval has a maximum open time of 7 days and the threshold is 1000, the number of errors accumulated per second is calculated as follows: x = 1000 / (7 days * 24 hours / day * 60 minutes / hour * 60 minutes / hour * 60 seconds / minute) = 2.756E-5 bits / second. Each time a predetermined amount of time (such as about 1 second or about 5 seconds) passes, the timer count weight increases, thereby increasing the running total weight, and updating Figure 1 the weight counter table 120.

[0076] In one embodiment, the timer count weight and the read count weight are coupled such that both affect the running total weight. In another embodiment, the timer count weight and the read count weight are uncoupled or utilized separately such that the timer count weight is associated with a first running total weight and the read count weight is associated with a second running total weight. Each running total weight is tracked such that when the first running total weight or the second running total weight reaches a predetermined read error sensitivity error, the controller is configured to close the erase block.

[0077] The controller (such as Figure 1 controller 108) may indicate to the host (such as Figure 1 host 104) a recommended signal of partition completion in order to alert the host that the erase block or partition is approaching a predetermined read error sensitivity value. The controller 108 may announce an event that notifies the host device 104 that the partition or erase block condition has changed. Then, the host device 104 should retrieve the change list and perform any mitigation that the host device deems necessary, such as by writing padding data or virtual data to fill the remaining capacity of the partition or erase block, and closing the partition or erase block.

[0078] The running total weight represents the overall error sensitivity of the interval using the sensitivity weight, the read count weight, and the timer count weight for each interval. Each time the sensitivity weight, the read count, and the timer count weight for each interval are updated, the controller 108 updates Figure 1 the weight counter table 120. A higher running total weight means a higher error sensitivity level, and a lower running total weight means a lower error sensitivity level. The most recently written interval may have a lower running total weight than the previously written interval because the most recently written interval will have a smaller contribution of timer count weight and / or read count weight. For example, if the current program point is interval 6 and a new write command to write interval 7 to the erase block is received, interval 7 may have a lower running total weight than interval 6. The lower running total weight may be due to a significantly lower timer weight count or read count, even if the sensitivity weight may be higher.

[0079] The total running weight for each interval is calculated using the following equation: (Total running weight) = (Sensitivity weight) * (Read count weight) * (Timer count weight) + (Previous total running weight). The previous total running weight applies when calculating the total running weight at each time step. However, when calculating the instantaneous total running weight, the "previous total running weight" is 0. The total running weight for each interval can be accumulated to determine whether a predetermined value is met or exceeded.

[0080] When the total running weight for any interval or the sum of each interval reaches or exceeds a predetermined value (such as approximately 1000), the erase block is closed. When the controller determines that an erase block needs to be closed, the capacity of the erase block is filled with padding data or dummy data. Alternatively, when the writable capacity of the erase block is filled with data, the erase block is closed. A closed erase block has a reduced overall error sensitivity compared to an open erase block. The predetermined values, sensitivity weight values, timer count weight values, and total running weight values mentioned herein are not intended to be limiting, but rather provide examples of possible implementations. Additionally, the curves shown are not all-inclusive, and there may be other curves representing the error sensitivity due to reading the erase block.

[0081] Figure 4A FIG. 400 shows the error sensitivities of different intervals of an erase block according to one embodiment. Figure 4B is a weight table 450 corresponding to Figure 4A according to one embodiment. The weight table 450 includes columns for interval number, the number of word lines in each interval, the sensitivity weight for each interval, the read count weight for each interval, the timer count weight for each interval, and the total running weight for each interval. The weight table 450 can be Figure 1 the weight counter table 120.

[0082] One or more first commands for receiving write data to partially fill a first erase block in a first partition. The first erase block may include previously written data (such as 10 word lines grouped together into a single interval Y0), in which case the data associated with the one or more first commands is written to the next available sequential position in the erase block. Intervals Y1 to Y17 may include the data for the one or more first write commands. In Figures 4A to 4B the example of, each of the intervals Y0 to Y17 includes 10 word lines. Thus, for example, the first erase block may include a total of 25 intervals of word lines storing user data, and the remaining word lines may be used to store metadata, including a logical-to-physical address table. Additionally, as Figure 4A shown, the first erase block is partially filled, with 18 intervals currently storing user data.

[0083] Intervals and thus read commands for the intervals are associated with a sensitivity weight that depends on the location of data within the erase block. Intervals closer to the first program point 406 or the current program point have a higher sensitivity weight associated with the data. However, intervals closer to the start of the erase block 402 have a lower sensitivity weight. For example, the first read command for intervals Y0 and Y1 has a sensitivity weight of approximately 0.5 (indicated by the first straight portion 404), while the second read command for one or more of intervals Y15, Y16, or Y17 has a higher sensitivity weight. For example, interval Y15 has a sensitivity weight of approximately 1, interval Y16 has a sensitivity weight of approximately 2, and interval Y17 has a sensitivity weight of approximately 3 (indicated by the first curved portion 408). The sensitivity weight of approximately 3 for interval Y17 indicates that any read of data located within interval Y17 has a higher or lower error sensitivity than a read of data located within interval Y16. Additionally, the received read commands can be used to read data non-sequentially. For example, the first read command can be used to read data in interval Y15, the second read command can be used to read data in interval Y1, and the third read command can be used to read data in Y16.

[0084] Figure 4B The weight table 450 is Figure 4A An example of the possible sensitivity weight values, read count values, timer count weight values, and running total weight values that each interval of the may have. Each time a read command to read data from an interval is received, the read count is incremented, thereby increasing the running total weight of the interval. For example, if a second read command to read data in interval Y17 is received, the read count is incremented from a first read count 19 associated with the first read command to a second read count 20 associated with the second read command. The resulting running total weight is incremented from 285 to 300 (e.g., Sw of 3 * Rc of 20 * Y_bin_n of 5).

[0085] After a predetermined amount of time has elapsed or a time step has advanced, the timer count weight of each interval may increase (as discussed above), thereby increasing the running total weight of each interval. For example, if one iteration of the predetermined time (i.e., one time step) has elapsed for interval Y1, the timer count weight may be incremented from 15 to 16. The resulting running total weight is incremented from 15 to 16. However, the time step interval affects each interval of the currently programmed erase block (i.e., for each of intervals Y0 through Y17, the timer count weight is incremented by 1).

[0086] In addition, if a first read command to read data from interval Y0 is received, the read count associated with interval Y0 is incremented. As a result, the running total weight of interval Y0 is increased. When a second read command to read data from interval Y15 is received, the read count of interval Y15 is incremented, thereby causing the running total weight of interval Y15 to increase. If a third read command to read data from interval Y0 is received, the read count of interval Y0 is incremented again, thereby causing the running total weight of interval Y0 to increase. Each time a pre-determined amount of time (such as one second) has expired, the timer count weight (Y_bin_n) of each interval is incremented. Thus, the running total weights of intervals Y0 through Y16 are increased at each time step interval and due to each read command to read data from an interval.

[0087] When the running total weight of one or more intervals being summed together equals or exceeds a pre-determined value (such as approximately 1000) due to changes in the sensitivity weight, read count, and / or timer count weight of the intervals, the controller closes the erase block due to the high likelihood of unacceptable bit error accumulation. For example, if the running total weight values from intervals Y0 through Y17 Figure 4B are summed to be equal to or greater than 1000, the erase block will be closed after interval Y17 at the first program point 406. The controller recognizes that the pre-determined value has been reached and will close the erase block by filling the empty capacity with padding data or dummy data.

[0088] The erase block is closed by filling the open capacity with padding data or dummy data. Since adjacent word lines are no longer programmed, the sensitivity to read interference errors is reduced in the closed or full-capacity erase block. When adjacent word lines or intervals are programmed, the voltage applied to the currently programmed word line or interval can affect the voltage of the previously programmed word line or interval, which can cause bit errors. Therefore, the final write to the final word line in the last interval of the erase block locks in the bit error sensitivity, which can result in a single closed erase block read error sensitivity section 418, where each interval has the same sensitivity weight.

[0089] A read command to read data in the erase block that has been closed due to being filled to the writable capacity (i.e., to the end of EB 410) can still be received. As Figure 4AAs shown, the closed erase block capacity section 418 has a lower sensitivity than all the sensitivities of the previously open intervals when the first erase block was open. Thus, when an erase block is closed due to being filled to the writable capacity, the read weight of any received read command is lower, such as about 0.25. When the sum of the running total weights of the intervals in the closed erase block reaches or exceeds a predetermined value (such as about 1000), the data in the first erase block can be rewritten to the second erase block. By weighting the read commands, the open time of the erase block can be longer compared to using conventional methods, thereby allowing better use of the erase block while extending the life of the erase block. Thus, due to the better utilization of the erase block, the overall life of the memory cells or the storage device can be extended.

[0090] Figure 5A FIG. 500 is a diagram showing the error sensitivities of different intervals of an erase block according to another embodiment. Figure 5B is according to another embodiment and Figure 5A corresponding weight table 550. The weight table 550 includes columns for interval number, the number of word lines in each interval, the sensitivity weight of each interval, the read count weight of each interval, the timer count weight of each interval, and the running total weight of each interval. The weight table 550 can be Figure 1 the weight counter table 120.

[0091] One or more first write commands that receive write data to partially fill a first erase block of a first partition. The erase block can include previously written data (such as 100 word lines grouped together in a single interval Y0), in which case the data associated with the one or more first commands is written to the next available sequential position in the erase block. Intervals Y1 to Y3 can include data associated with the one or more first write commands. Since interval Y0 was previously written, the timer count weight of interval Y0 will be higher than the timer count weights of intervals Y1 to Y3. In Figures 5A to 5B the example, each of intervals Y0 to Y3 can include a different number of word lines. For example, interval Y0 includes 100 word lines, interval Y1 includes 23 word lines, interval Y2 includes 14 word lines, and interval Y3 includes 6 word lines. Each of intervals Y0 to Y3 can include a different amount of word lines due to the time at which the individual word lines were programmed, or due to the estimated error sensitivity for each word line (i.e., word lines with similar error sensitivities are grouped together in an interval).

[0092] Intervals closer to the first program point 506 or the current program point have a higher sensitivity weight associated with the data. However, intervals closer to the start of the erase block 502 have a lower sensitivity weight. For example, the first read command for interval Y0 has a sensitivity weight of approximately 0.5 (indicated by the first straight portion 504), while the second read commands for one or more of intervals Y1, Y2, or Y3 have a higher sensitivity weight. For example, interval Y1 has a sensitivity weight of approximately 1, interval Y2 has a sensitivity weight of approximately 2, and interval Y3 has a sensitivity weight of approximately 3 (indicated by the first curved portion 508). The sensitivity weight of approximately 3 for interval Y3 indicates that any read of data located in interval Y3 has a higher or lower error sensitivity than a read of data located in interval Y2.

[0093] Figure 5B The weight table 550 is Figure 5A An example of the possible sensitivity weight values, read count values, timer count weight values, and running total weight values that each interval of Figure 5A may have. The read count increases each time a read command is associated with an interval. For example, if a second read command to read data in interval Y3 is received, the read count increases from a first read count 11 associated with the first read command to a second read count 12 associated with the second read command. The resulting running total weight increases from 66 to 72 (e.g., Sw of 3 * Rc of 12 * Y_bin_n of 2).

[0094] The timer count weight can increase after a predetermined amount of time has passed or a time step has advanced. For example, if two iterations of a predetermined time (i.e., two time steps) have passed for interval Y1, the timer count weight can increase from 17 to 19. The resulting running total weight increases from 391 to 437. However, the time step interval affects each interval programmed in the erase block (i.e., for each of intervals Y0 through Y3, the timer count weight increases by 2). Additionally, if a first read command to read data from interval Y0 is received, the read count associated with interval Y0 increases. As a result, the running total weight of interval Y0 increases. If a second read command to read data from interval Y0 is received, the read count of interval Y0 still increases again, resulting in an increase in the running total weight of the first interval Y0. Thus, the running total weights of intervals Y0 through Y3 increase at each time step interval and each time a read command to read data from an interval is received.

[0095] When the running total weight of one or more intervals being summed together equals or exceeds a predetermined value (such as approximately 1000) due to changes in the sensitivity weights of the intervals, read counts, and / or timer count weights, the controller shuts down the first erase block due to the high probability of unacceptable bit error accumulation. For example, if the running total weight values from Figure 5B are summed together, the resulting running total weight is 689.5. However, if the sum of the intervals exceeds the predetermined value of approximately 1000, the erase block will be shut down after interval Y3 at the first program point 506.

[0096] The erase block is shut down by filling the open capacity with padding data or dummy data. Since adjacent word lines are no longer programmed, the sensitivity to read interference errors is reduced in the shut-down or full-capacity erase block. A read command to read data in the erase block that has been shut down due to being filled to the writable capacity (i.e., to the end of EB 510) can still be received. As Figure 5A shown, the closed erase block capacity section 518 has a lower sensitivity than all the sensitivities of the previously open intervals when the first erase block was open. Therefore, when the erase block is shut down due to being filled to the writable capacity, the read weight of any received read command is lower, such as approximately 0.25. When the sum of the running total weights of the intervals in the closed erase block reaches or exceeds a predetermined value (such as approximately 1000), the data in the first erase block can be rewritten to a second erase block.

[0097] Figure 6A FIG. 600 is a diagram showing the error sensitivities of different intervals of an erase block according to yet another embodiment. Figures 6B to 6C shows a weight table 650 corresponding to Figure 6A according to various embodiments. The weight table 650 includes columns for interval number, the number of word lines in each interval, the sensitivity weight of each interval, the read count weight of each interval, the timer count weight of each interval, the previous running total weight Pw, and the running total weight of each interval. The weight table 650 can be Figure 1 the weight counter table 120 of

[0098] Receiving one or more first commands indicated by a first program point 606 to write data to partially fill a first erase block of a first partition. The first erase block may include previously written data (such as 40 word lines grouped together in interval Y0), in which case the data associated with the one or more first commands is written to the next available sequential position in the erase block. Intervals Y1 to Y3 may include data associated with the one or more first write commands. Each of intervals Y0 to Y3 may include a different number of word lines. In Figure 6A and Figure 6BIn the example, interval Y0 includes 75 word lines, interval Y1 includes 35 word lines, interval Y2 includes 25 word lines, and interval Y3 includes 10 word lines.

[0099] As Figure 6B shown in the weight table, the interval Y3 closest to the first program point 606 has the highest sensitivity weight, as shown by the first curved portion 608, while the interval Y0 closest to the start of the erase block 602 has a lower sensitivity weight, as shown by the first straight portion 604. For example, interval Y0 has a sensitivity weight of 0.5, interval Y1 has a sensitivity weight of 1, interval Y2 has a sensitivity weight of 2, and interval Y3 has a sensitivity weight of 3.

[0100] As discussed above, each time a read command to read data from an interval is received, the read count increases. For example, if a second read command associated with the data in interval Y3 is received, the read count increases from a first read count of 0 associated with the first read command to 1. The resulting running total weight increases from 0 to 30. After a predetermined amount of time has passed or a time step has advanced, the timer count weight can increase. For example, if for interval Y0, three iterations of a predetermined time (i.e., three time steps) have passed, the timer count weight can increase from 25 to 28. The resulting running total weight increases from 25 to 28. However, the time step interval affects each of the intervals Y0 to Y3 programmed in the erase block (i.e., for each of the intervals Y0 to Y3, the timer count weight increases by 3).

[0101] Then one or more second write commands are received by a controller such as Figure 1 controller 108. After the first program point 606 to the second program point 612, data is sequentially written to the first erase block. The data associated with the one or more second write commands partially fills the first erase block such that the first erase block is not written to full capacity or the end of the erase block 610. The second program point 612 refers to the last programmed interval of the first erase block. Intervals Y4 to Y17 may include the data associated with the one or more second write commands.

[0102] However, if the one or more second write commands include a sufficient number of word lines to fill the capacity of the erase block 610 (i.e., all 256 word lines are programmed), and the running total weight of the one or more intervals being summed is less than a predetermined value of about 1000, the controller will close the erase block 610 due to the full erase block capacity. Write the data associated with the third write command (i.e., the next write command) to the second erase block. As discussed above, read commands to read data in the erase block that was closed due to being filled to the writable capacity (i.e., to the end of EB 610) can still be received. As Figure 6A shown, the closed erase block capacity section 618 has a lower sensitivity than all of the sensitivities of the previously open intervals when the first erase block was open. Thus, when an erase block is closed due to being filled to the writable capacity, any received read command has a lower read weight, such as about 0.25.

[0103] Before receiving the one or more second write commands, the sensitivity weights of intervals Y0, Y1, Y2, and Y3 at the first program point 606 vary between 0.5 and 3 (shown by the first straight portion 604 and the first curved portion 608). However, when writing the data associated with the one or more second write commands to intervals Y4 to Y17, the sensitivity weights of intervals Y0 to Y3 drop to 0.5 (shown by the second straight portion 614 and Figure 6C the weight table 650 of). Because intervals Y0 to Y3 are now farther from the second program point 612. Thus, the first curved portion 608 is no longer included because the data stored in intervals Y1 to Y3 is now less susceptible to errors. Additionally, a newly written interval (such as interval Y16) can have a lower running total weight than the running total weight of a previously written interval (such as Y3), even though the newly written interval can have a higher sensitivity weight. The lower running total weight of the newly written interval can be attributed to timer count weights and read counts that are significantly lower than the timer count weights and read counts of the previously written interval.

[0104] The second straight portion 614 encompasses the first straight portion 604 and includes the intervals (not shown) between interval Y0 and interval Y14. The second straight portion 614 has a sensitivity weight of 0.5. In the second curved portion 616, interval Y15 has a sensitivity weight of 1, interval Y16 has a sensitivity weight of 2, and interval Y17 has a sensitivity weight of 3, as Figure 6C further shown by the weight table 650 of. Thus, after receiving one or more read commands to read data in intervals Y0 to Y17, and when a predetermined amount of time has passed or a time step has advanced, the running total weight count of each interval in Figure 6C the weight table 650 increases.

[0105] However, after adjusting or updating one or more sensitivity weights of an interval, the current read count weight is represented as the previous running total weight for each interval. Thus, once the sensitivity weights for intervals Y1 to Y3 are updated to 0.5 to reflect their lower error sensitivity, the current read count weight for each of the intervals is represented as the previous running total weight that will be taken into account in the running total read count weight. Thus, after receiving one or more read commands for data within a read interval, the running total weight is calculated using the following equation: (Running total weight) = (Sensitivity weight) * (Read count weight) * (Timer count weight) + (Previous running total weight). For example, as Figure 6C shown, 2 additional read commands have been received to read data from each of the intervals Y0, Y1, and Y2. Thus, the running total weight for interval Y0 is: Sw of 0.5 * Rc of 2 * Y_bin_n of 40 + Pw of 25 = 65. The running total weight for interval Y1 is: Sw of 0.5 * Rc of 2 * Y_bin_n of 30 + Pw of 90 = 120. The running total weight for interval Y2 is: Sw of 0.5 * Rc of 2 * Y_bin_n of 25 + Pw of 20 = 45.

[0106] When the running total weight of one or more intervals being summed together equals or exceeds a predetermined value (such as approximately 1000) due to changes in the sensitivity weight, read count, and / or timer count weight of the bins, the controller closes the first erase block due to the high likelihood of unacceptable bit error accumulation. For example, if the values for intervals Y0 to Y17 from Figure 6C are summed and the resulting running total weight is greater than 1000, the erase block will be closed after interval Y17 at the second program point 612. The controller recognizes that the predetermined value has been reached and will close the erase block by filling the empty capacity with padding data or dummy data.

[0107] The erase block is closed by filling the open capacity of the first erase block with padding data or dummy data. Since adjacent word lines or intervals are no longer programmed, the sensitivity to read interference errors is reduced in the closed or full-capacity erase block. When programming adjacent word lines or intervals, the voltage applied to the currently programmed word line or interval may affect the voltage of the previously programmed word line or interval, which may cause bit errors. Therefore, the final write to the final word line in the last interval of the erase block locks in the bit error sensitivity, which may result in a single read error sensitivity section 618, where each interval has the same sensitivity weight. By weighting the read commands, the open time of the erase block can be longer compared to using conventional methods, allowing for better utilization of the erase block while extending its lifespan. Therefore, due to better utilization of the erase block, the overall lifespan of the memory cells or storage device can be extended.

[0108] The word lines in an erase block are grouped together into intervals. The intervals have associated sensitivity weights, read count weights, timer count weights, and running total weights for estimating bit error accumulation sensitivity. Higher sensitivity weights, higher read count weights, higher timer counts, and higher running total weights describe an erase block with high bit error accumulation sensitivity. Accumulating an adverse amount of bit errors can lead to data corruption or data loss, reducing the operation of the memory cells. By utilizing a weighted system (i.e., sensitivity weights, read count weights, timer count weights, and running total weights), the lifespan of the memory cells can be extended and their operation improved by not closing the erase block prematurely or allowing the erase block to accumulate an unacceptable amount of errors.

[0109] In one embodiment, a storage device includes non-volatile memory cells. The capacity of the non-volatile memory cells is divided into multiple partitions. The non-volatile memory cells include multiple dies, and each die of the multiple dies includes multiple erase blocks. The storage device further includes a controller coupled to the non-volatile memory cells. The controller is configured to: sequentially write data associated with one or more first commands to a partially filled first erase block in a first partition of the multiple partitions, where the first erase block has a writable capacity. The data associated with the one or more first commands fills the first erase block partially to a first program point less than the writable capacity. The controller is further configured to receive one or more read commands to read data non-sequentially from the first erase block. Each of the one or more read commands is associated with a weight, and at least two of the weights of the one or more read commands are different. The weights are based on the proximity of the data being read to the first program point and the amount of time the first erase block has been open.

[0110] Each time a pre-determined amount of time has elapsed, these weights increase. The controller is configured to close the first erase block when the sum of the weights associated with the one or more read commands accumulates to a pre-determined value. The higher the weight of a read command, the closer the read command is to the first program point, and wherein these weights indicate the error sensitivity level. The controller is further configured to sequentially write data associated with one or more second commands to the first erase block, wherein the data associated with the one or more second commands partially fills the first erase block to a second program point less than the writable capacity. The controller is also configured to receive one or more second read commands that non-sequentially read the data from the first erase block, wherein each of the one or more second read commands is associated with a weight, wherein at least two of the weights of the one or more second read commands are different, and wherein these weights are based on the proximity of the data being read to the second program point and the amount of time the first erase block has been open. The first erase block includes a plurality of word lines. The plurality of word lines are divided into one or more intervals, wherein the data associated with the one or more first commands is stored in a first interval, and the data associated with the one or more second commands is stored in a second interval. The first interval is associated with a first weight, and the second interval is associated with a second weight, wherein each time a command to read the data stored in the first interval is received, the first weight increases, and wherein each time a command to read the data stored in the second interval is received, the second weight increases.

[0111] In another embodiment, a storage device includes non-volatile storage cells. The capacity of the non-volatile storage cells is divided into a plurality of partitions. The non-volatile storage cells include a plurality of dies, and each of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage cells. The controller is configured to receive a plurality of read commands that non-sequentially read data from a partially filled first erase block of a first partition of the plurality of partitions. The first erase block includes a plurality of word lines, and the plurality of word lines are divided into one or more intervals. Each interval is associated with a weight, and the weight is based on the position of the interval within the first erase block and the amount of time the first erase block has been open. The controller is further configured to: increase each of these weights each time a pre-determined amount of time has elapsed; and close the first erase block when the sum of the weights associated with the intervals accumulates to a pre-determined value, or when one or more write commands to fill the first erase block to its full writable capacity are received.

[0112] Each time a read command to read data stored in a section is received, the weight of that section is increased. The first section, which is set to be closest to the programming point of the first partially filled erase block, has a higher weight compared to the second section, which is set to be closer to the beginning of the first partially filled erase block. The weight of each of these sections is reduced by closing the first erase block when one or more write commands to fill the first erase block to its full write capacity are received. After closing the first erase block, each of these sections has the same weight. The weight of these sections varies between approximately 0.5 and approximately 3, and the predetermined value is approximately 1000. The weight of these sections indicates the error sensitivity level.

[0113] In another embodiment, the storage device includes non-volatile storage cells. The capacity of the non-volatile storage cells is divided into a plurality of partitions. The non-volatile storage cells include a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. Each erase block of the plurality of erase blocks includes a plurality of word lines, and the plurality of word lines of each erase block are divided into one or more sections. The storage device further includes a controller coupled to the non-volatile storage cells. The controller is configured to: receive one or more first read commands to read data from a first section of a first partially filled erase block of a first partition of the plurality of partitions, wherein the first section is associated with a first weight; and increase the first weight associated with the first section after a first predetermined amount of time has elapsed for a first time. The controller is further configured to: receive one or more second read commands to read data from a second section of the first partially filled erase block, wherein the second section is associated with a second weight different from the first weight; and increase the first weight associated with the first section and the second weight associated with the second section after the first predetermined amount of time has elapsed for a second time. The controller is further configured to: receive one or more third read commands to read the data from the first section; increase the first weight associated with the first section after reading the data stored in the first section in response to the one or more third read commands; and close the first erase block when the sum of the first weight and the second weight accumulates to a predetermined value.

[0114] The weights of these intervals indicate the error sensitivity level. The first interval is set closer to the beginning of the first erasure block, and the second interval is set closest to the program point of the first erasure block. The controller is further configured to: receive one or more fourth read commands for reading third data from a third interval of the partially filled first erasure block, wherein the third interval is associated with a third weight different from the first weight and the second weight; and close the first erasure block when the sum of the first weight, the second weight, and the third weight accumulates to a predetermined value. The controller is also configured to: increase the first weight, the second weight, and the third weight after a third time that the predetermined amount of time has elapsed; and receive one or more write commands for writing data to a fourth interval of the first erasure block. The controller is further configured to: write the data associated with the one or more write commands to the fourth interval, wherein the fourth interval is associated with a fourth weight that is temporarily lower than the first weight, the second weight, and the third weight due to the fourth interval being newly written; and close the first erasure block when the sum of the first weight, the second weight, the third weight, and the fourth weight accumulates to a predetermined value. Each weight of each interval is increased each time the data stored in the interval is read and each time the predetermined amount of time expires.

[0115] While the foregoing is directed to embodiments of the present disclosure, other and additional embodiments of the present disclosure may be envisioned without departing from the basic scope thereof, and the scope of the present disclosure is determined by the appended claims.

Claims

1. A storage device, the storage device comprising: Non-volatile storage cells, wherein the capacity of the non-volatile storage cells is divided into a plurality of partitions, and wherein the non-volatile storage cells include a plurality of dies, each die of the plurality of dies including a plurality of erase blocks, each erase block of the plurality of erase blocks including a plurality of word lines; And A controller, the controller being coupled to the non-volatile storage cells, wherein the controller is configured to: Sequentially write data associated with one or more first commands to one or more word lines among the plurality of word lines of a first partially filled erase block in a first partition of the plurality of partitions, the first erase block having a writable capacity, wherein the data associated with the one or more first commands partially fills the first erase block to a first program point less than the writable capacity; And Receive one or more read commands to non-sequentially read the data from the plurality of word lines of the first erase block, wherein: Each read command of the one or more read commands is individually associated with a weight among a plurality of first weights, At least two weights among the plurality of first weights associated with the one or more read commands are different, Each weight among the plurality of first weights is based on the proximity of the target data of the corresponding read command of the one or more read commands to the first program point, the read count of the target data of the corresponding read command, and the amount of time the first erase block has been open; And Close the first erase block when the sum of the plurality of first weights associated with the one or more read commands accumulates to a predetermined value.

2. The storage device according to claim 1, wherein each weight among the plurality of first weights increases each time a predetermined amount of time has passed.

3. The storage device according to claim 1, wherein the higher each weight among the plurality of first weights, the closer the target data of the corresponding read command is to the first program point, and wherein each weight among the plurality of first weights indicates a level of error sensitivity.

4. The storage device according to claim 1, wherein the controller is further configured to: Sequentially write data associated with one or more second commands to the first erase block, wherein the data associated with the one or more second commands partially fills the first erase block to a second program point less than the writable capacity; and Receive one or more second read commands to non-sequentially read data from the plurality of word lines of the first erase block, wherein: Each second read command of the one or more second read commands is associated with a new weight among a plurality of second weights, At least two weights among the plurality of second weights associated with the one or more second read commands are different, Each of the plurality of second weights is based on the proximity of the target data of the corresponding second read command among the one or more second read commands to the second program point, the read count of the target data of the corresponding second read command, and the amount of time the first erase block has been open.

5. The storage device according to claim 1, wherein the plurality of word lines are grouped into two or more ranges, wherein the data associated with the one or more first commands is stored in a first range of the two or more ranges, and the data associated with one or more second commands is stored in a second range of the two or more ranges.

6. The storage device according to claim 5, wherein the first range is associated with a first weight among the plurality of first weights, and the second range is associated with a second weight among the plurality of first weights, wherein the first weight increases each time a command to read the data stored in the first range is received, and wherein the second weight increases each time a command to read the data stored in the second range is received.

7. A storage device, the storage device comprising: Non-volatile storage cells, wherein the capacity of the non-volatile storage cells is divided into a plurality of partitions, and wherein the non-volatile storage cells include a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks; and A controller, the controller being coupled to the non-volatile storage cells, wherein the controller is configured to: Receive a plurality of read commands to non-sequentially read data from a partially filled first erase block of a first partition among the plurality of partitions, wherein the first erase block includes a plurality of word lines, the plurality of word lines being grouped into two or more ranges, each range of the two or more ranges being associated with a weight of a plurality of weights, and wherein each weight of the plurality of weights is based on the position of the grouped word lines of each range within the first erase block and the amount of time the first erase block has been open; Increase each weight among the plurality of weights each time a predetermined amount of time has passed; and Close the first erase block when the sum of the plurality of weights associated with the two or more ranges accumulates to a predetermined value, or when one or more write commands to fill the first erase block to its full write capacity are received.

8. The storage device according to claim 7, wherein the weight of each range of the two or more ranges increases each time a read command to read data stored in the corresponding range is received.

9. The storage device according to claim 7, wherein the first range of the two or more ranges, which is set to be closer to the program point of the partially filled first erase block than the other ranges of the two or more ranges, has a higher weight than the second range of the two or more ranges, which is set to be closer to the beginning of the partially filled first erase block than the other ranges of the two or more ranges.

10. The storage device according to claim 7, wherein when one or more write commands for filling the first erase block to the full write capacity are received, the first erase block is closed, reducing the weight of each of the two or more intervals.

11. The storage device according to claim 10, wherein after the first erase block is closed, each of the two or more intervals has the same weight value.

12. The storage device according to claim 7, wherein the weight of the interval varies between 0.5 and 3, and wherein the predetermined value is 1000.

13. The storage device according to claim 7, wherein the weight of each of the two or more intervals indicates an error sensitivity level.

14. A storage device, the storage device comprising: Non-volatile storage cells, wherein the capacity of the non-volatile storage cells is divided into a plurality of partitions, wherein the non-volatile storage cells include a plurality of dies, each of the plurality of dies includes a plurality of erase blocks, and each of the plurality of erase blocks includes a plurality of word lines, and the plurality of word lines of each erase block are grouped into two or more intervals; and A controller coupled to the non-volatile storage cells, wherein the controller is configured to: Receive one or more first read commands for reading data from word lines grouped in a first interval of a partially filled first erase block of a first partition among the plurality of partitions, the first interval being associated with a first weight; After a first time of a predetermined amount of time has elapsed, increase the first weight associated with the first interval; Receive one or more second read commands for reading data from word lines grouped in a second interval of the partially filled first erase block, the second interval being associated with a second weight different from the first weight; After a second time of the predetermined amount of time has elapsed, increase the first weight associated with the first interval and the second weight associated with the second interval; Receive one or more third read commands for reading the data from word lines grouped in the first interval; After reading the data from the word lines grouped in the first interval in response to the one or more third read commands, increase the first weight associated with the first interval; and When the sum of the first weight and the second weight accumulates to a predetermined value, close the first erase block.

15. The storage device according to claim 14, wherein the first weight and the second weight of the two or more intervals indicate an error sensitivity level.

16. The storage device according to claim 14, wherein the first interval is set to be closer to the beginning of the first erase block compared to other intervals of the two or more intervals, and the second interval is set to be closest to the program point of the first erase block compared to other intervals of the two or more intervals.

17. The storage device according to claim 14, wherein the controller is further configured to: Receiving one or more fourth read commands for reading third data from a third interval of the two or more intervals of the partially filled first erase block, the third interval being associated with a third weight different from the first weight and the second weight; and Closing the first erase block when the sum of the first weight, the second weight, and the third weight accumulates to a predetermined value.

18. The storage device according to claim 17, wherein the controller is further configured to:[[]] Increment the first weight, the second weight, and the third weight after a third time has elapsed by the predetermined amount of time; Receiving one or more write commands for writing data to a fourth interval of the two or more intervals of the partially filled first erase block; Writing the data associated with the one or more write commands to the fourth interval, wherein the fourth interval is associated with a fourth weight that is temporarily lower than the first weight, the second weight, and the third weight due to the fourth interval being newly written; And Closing the first erase block when the sum of the first weight, the second weight, the third weight, and the fourth weight accumulates to the predetermined value.

19. The storage device according to claim 18, wherein each weight of each of the two or more intervals is incremented each time the data stored in the corresponding interval is read and each time the predetermined amount of time elapses.

Citation Information

Patent Citations

  • Memory device, memory system, and operating methods thereof

    US20130304982A1

  • Storage device including nonvolatile memory device and controller with varied read weights

    US20180004415A1

  • Memory system and operating method of memory system

    US20190051361A1