Weighting read commands according to partitions in storage devices

By assigning read weights to the partition erase blocks of the storage device, the problem of data loss caused by accumulated bit errors in the erase blocks is solved, enabling accurate estimation and timely closure of bit errors, thereby improving the reliability and data integrity of the storage device.

CN114730250BActive Publication Date: 2026-03-27SANDISK TECH
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-12-11
Publication Date
2026-03-27

AI Technical Summary

Technical Problem

In existing storage devices, erase blocks are prone to accumulating bit errors after reaching a predetermined number of reads, leading to data loss. Existing methods cannot accurately estimate the accumulation of bit errors, causing erase blocks to be closed too early or too late, affecting the reliability of storage devices.

Method used

By assigning different read weights to data when writing it to the erase block of a partition, the estimated bit error is accumulated based on the read weight, and the erase block is closed when a predetermined value is reached. The controller manages read commands for multiple partitions and erase blocks, thereby achieving accurate estimation and timely closure of bit errors.

Benefits of technology

It effectively prevents data loss caused by the accumulation of bit errors in erase blocks, improves the reliability and data integrity of storage devices, and extends the lifespan of erase blocks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114730250B_ABST
    Figure CN114730250B_ABST
Patent Text Reader

Abstract

The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and a storage unit divided into a plurality of zones, each zone including a plurality of erase blocks. Data is written to an erase block of a zone to a program point that is less than the writable capacity of the erase block. The data in the erase block is associated with various read weights that depend on the location of the data relative to the program point. Data stored closer to the program point has a higher read weight than data stored closer to the beginning of the erase block. The read weights indicate error sensitivity of the data. When one or more read commands are received, the read weights of the read data are accumulated to estimate a cumulative bit error until a predetermined value is reached.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims priority to U.S. Application No. 16 / 847,352, filed April 13, 2020, the entire contents of which are incorporated herein by reference. Background Technology Technical Field

[0004] The embodiments disclosed herein relate generally to storage devices, such as solid-state drives (SSDs).

[0005] Description of the Related Art

[0006] Storage devices such as SSDs can be used in computers for applications requiring 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. Typically, an SSD's controller receives commands to read data from the host device or write data to the storage device. Data is read and written to one or more erase blocks in the storage device. Each of these logical block addresses is associated with a physical media location, allowing the SSD and / or host device to know where the data is stored. One or more erase blocks on the physical media can be grouped together by their corresponding logical block addresses to form multiple partitions.

[0007] After a number of reads from the erase block, the erase block storing the data can accumulate bit errors or read interference errors, which can lead to data loss or inability to be read. When the total number of reads within the erase block exceeds a predetermined value (such as 1,000 reads), the erase block is turned off to prevent data loss due to the accumulation of too many bit errors or read interference errors. The predetermined value (such as 1,000 reads) can signal the controller to turn off the erase block too early or too late, allowing it to accumulate an undesirable number of bit errors.

[0008] Therefore, a new method is needed to accurately determine the accumulation of bit errors in open erase blocks in storage devices. Summary of the Invention

[0009] The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and a storage unit divided into a plurality of zones, each zone including a plurality of erase blocks. Data is written to an erase block of a zone to a program point that is less than a writable capacity of the erase block. The data in the erase block is associated with various read weights that depend on a location of the data relative to the program point. Data stored closer to the program point has a higher read weight than data stored closer to a beginning of the erase block. The read weights indicate error sensitivity of the data. When one or more read commands are received, the read weights of the read data are accumulated to estimate a cumulative bit error until a predetermined value is reached.

[0010] In one embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage unit. The controller is configured to sequentially write data associated with one or more first commands to a first zone of the plurality of zones. The first zone has a writable capacity, and the data associated with the one or more first commands partially fills the first zone 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 zone, wherein each read command of the one or more read commands is associated with a weight that is based on a proximity of the data being read to the first program point, and wherein at least two weights of the one or more read commands are different.

[0011] In another embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage unit. 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 zone of the plurality of zones, wherein each read command of the read commands is associated with a weight that is based on a location of the data being read within the first erase block, and wherein at least two weights of the read commands are different. The controller is further configured to close the first erase block when a sum of the weights associated with the read commands accumulates to a predetermined value.

[0012] In another embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes 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 unit. The controller is configured to receive one or more first read commands to read first data from a partially filled first erase block of a first zone, where the one or more first read commands are each associated with a first weight. The controller is further configured to receive one or more second read commands to read second data from the partially filled first erase block, where the one or more second read commands are each associated with a second weight that is greater than the first weight. The controller is also configured to receive one or more third read commands to read third data from the partially filled first erase block, where the one or more third read commands are each associated with a third weight that is greater than the first weight and the second weight, and where the third weight indicates a higher error sensitivity than the first weight and the second weight. The controller is configured to close the first erase block when a sum of the first weight, the second weight, and the third weight accumulates to a predetermined value. BRIEF DESCRIPTION OF DRAWINGS

[0013] Therefore, by reference to the embodiments, which follow, a detailed understanding of the above-mentioned features of the present disclosure, a more specific description of the present disclosure, the above-mentioned brief summary, can be obtained. However, it should be noted that the accompanying drawings only show typical embodiments of the present disclosure and therefore should not be considered limiting in scope, as the present disclosure can allow for other equally effective embodiments.

[0014] Figure 1 is a schematic block diagram illustrating a storage system in accordance with one embodiment.

[0015] Figure 2 is a block diagram illustrating a method of operating a storage device to execute a read or write command in accordance with one embodiment.

[0016] Figure 3A illustrates a zone namespace utilized in a storage device in accordance with one embodiment.

[0017] Figure 3B illustrates a state diagram of a zone namespace of a storage device in accordance with one embodiment. Figure 3A

[0018] Figures 4A-4C is a graph illustrating a relationship of a program number of an erase block to a read error sensitivity of the erase block in accordance with various embodiments.

[0019] ​To aid in understanding, where possible, the same reference numbers have been used to denote the same elements throughout the drawings. It is contemplated that elements disclosed in one embodiment can be advantageously used in other embodiments without specific recitation again. DETAILED DESCRIPTION

[0020] In the following, 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 related to different embodiments or not, is contemplated to implement and practice the present disclosure. Furthermore, although the embodiments of the present disclosure can achieve advantages over other possible solutions and / or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not a limitation of the present disclosure. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims, unless specifically recited therein. Likewise, a reference to“the present disclosure” should not be construed as an identification of any one invention or generally precluding its further combination with a further invention, even though particular combinations can be expressly disclosed. The following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims, unless specifically recited therein.

[0021] The present disclosure generally relates to methods of operating a storage device. The storage device includes a controller and a storage unit divided into a plurality of zones, each zone including a plurality of erase blocks. Data is written to an erase block of a zone to a program point, the program point being less than a writable capacity of the erase block. The data in the erase block is associated with various read weights, the read weights depending on a location of the data relative to the program point. Data stored closer to the program point has a higher read weight than data stored closer to a beginning of the erase block. The read weights indicate error sensitivity of the data. When one or more read commands are received, the read weights of the read data are accumulated to estimate a cumulative bit error until a predetermined value is reached.

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

[0023] 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 shown, the host device 104 can communicate with the storage device 106 via an interface 114. The host device 104 can include any of a variety of devices, including a computer server, a network-attached storage (NAS) unit, a desktop computer, a notebook (i.e., laptop) computer, a tablet computer, a set-top box, a telephone handset such as a so-called “smart” phone, a so-called “smart” tablet, a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, etc. Figure 1

[0024] The storage device 106 includes a controller 108, NVM 110, a power supply 111, volatile memory 112, and the interface 114. The controller 108 includes an internal memory or cache (not shown). In some examples, for the sake of clarity, the storage device 106 can include Figure 1 ​Additional components not shown in FIG. 1 can be included. For example, storage device 106 can include a printed circuit board (PCB) to which components of storage device 106 are mechanically attached and which includes conductive traces that electrically interconnect the components of storage device 106, etc. In some examples, the physical size and connector configuration of storage device 106 can conform to one or more standard form factors. Some example standard form factors include, but are not limited to, 3.5” data storage devices (e.g., HDDs or SSDs), 2.5” data storage devices, 1.8” data storage devices, peripheral component interconnect (PCI), PCI extended (PCI-X), PCI Express (PCIe) (e.g., PCIe xl, x4, x8, x16, PCIe Mini card, MiniPCI, etc.). In some examples, storage device 106 can be directly coupled (e.g., directly soldered) to a motherboard of host device 104.

[0025] Interface 114 of storage device 106 can include one or both of a data bus for exchanging data with host device 104 and a control bus for exchanging commands with host device 104. Interface 114 can operate according to any suitable protocol. For example, interface 114 can 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. Electrical connections of interface 114 (e.g., data bus, control bus, or both) are electrically connected to controller 108, providing electrical connections between host device 104 and controller 108, allowing data to be exchanged between host device 104 and controller 108. In some examples, electrical connections of interface 114 can also allow storage device 106 to receive power from host device 104. For example, as shown, power supply 111 can receive power from host device 104 via interface 114. Figure 1

[0026] ​The storage device 106 includes an NVM 110, which can include a plurality of memory devices or memory units. The NVM 110 can be configured to store and / or retrieve data. For example, a storage unit of the NVM 110 can receive data and receive a message from the controller 108 instructing the storage unit to store the data. Similarly, a storage unit of the NVM 110 can receive a message from the controller 108 instructing the storage unit to retrieve data. In some examples, each of the storage units can be referred to as a die. In some examples, a single physical chip can include multiple dies (i.e., multiple storage units). In some examples, each storage unit 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.).

[0027] In some examples, each storage unit 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.

[0028] The NVM 110 can include a plurality of flash memory devices or storage units. A flash memory device can include a NAND or NOR based flash memory device and can store data based on charge contained in a floating gate of a transistor for each flash memory unit. In a NAND flash memory device, the flash memory device can be divided into a plurality of blocks, which can be divided into a plurality of pages. Each block of the plurality of blocks within a particular memory device can include a plurality of NAND cells. Rows of NAND cells can be electrically connected using a word line to define a page of the plurality of pages. Respective cells in each page of the plurality of pages can be electrically connected to a respective bit line. Further, 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 a page level and erase data from the NAND flash memory device at a block level.

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

[0030] 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 cached information in the volatile memory 112 until the cached information is written to the non-volatile memory 110. As shown, the volatile memory 112 can consume power received from the power source 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.). Figure 1

[0031] ​Various types of volatile memory can be used for different access attributes. For example, DRAM can be arranged for longer burst accesses to improve bandwidth (BW) of the same access bus. Alternatively, DRAM can be used for smaller accesses so 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 embodiment. Similarly, access to MRAM can be optimized for different design purposes, but the amount of embedded MRAM in SSD controller 108 can be cost sensitive. Thus, how much and which data goes into advanced non-volatile memory and advanced volatile memory will be subject to system tradeoffs.

[0032] Storage device 106 includes a controller 108, which 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 toggle mode (TM) bus (not shown). In some embodiments, when storage device 106 receives a write command from host device 104, controller 108 can initiate a data store command to store data to NVM 110 and monitor progress of the data store command. Controller 108 can determine at least one operational characteristic of storage system 100 and store the at least one operational characteristic to the NVM 110. In some embodiments, when storage device 106 receives a write command from host device 104, controller 108 temporarily stores data associated with the write command in internal memory before sending the data to NVM 110.

[0033] Figure 2 is a block diagram illustrating a method 200 of operating a storage device to perform a read or write command, according to one embodiment. 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.

[0034] 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 a 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 the 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 were written (i.e., order processing order).

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

[0036] In operation 256, the controller processes the command and writes or transfers 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 the one or more commands in submission order or in order. Processing a write command can include identifying a partition for writing data associated with the command, writing the data to one or more logical block addresses (LBAs) of the partition, and advancing a write pointer of the partition to identify a next available LBA within the partition.

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

[0038] In operation 260, the controller generates and sends an interrupt signal or doorbell 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.

[0039] 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 free the completion entry.

[0040] Figure 3A A zone namespace (ZNS) 302 view used in a storage device 300 is shown, according to one embodiment. The storage device 300 can present the ZNS 302 view to a host device. Figure 3B A state diagram 350 of the ZNS 302 of the storage device 300 is shown, according to one embodiment. The storage device 300 can be Figure 1The storage device 300 can have one or more ZNSs 302, and each ZNS 302 can have a different size. In addition to one or more zone namespaces 302, the storage device 300 can further include one or more regular namespaces. Moreover, the ZNSs 302 can be zone block commands (ZBC) for SAS and / or zone device ATA command set (ZAC) for SATA. Due to the relationship between the possible logical and physical activities, host-side zone activities can be more directly related to media activities in the zone drives.

[0041] In the storage device 300, the ZNS 302 is a quantity of NVM that can be formatted into logical blocks such that the capacity is divided into a plurality of zones 306a-306n (collectively, zones 306). The NVM can be Figure 1 Each of the zones 306 includes a plurality of physical blocks or erase blocks (not shown) of memory cells or NVM 304, and each of the erase blocks is associated with a plurality of logical blocks (not shown). Each of the zones 306 can have a size that is aligned with the capacity of one or more erase blocks of the NVM or NAND device. When the controller 308 receives a command from, such as, a host device (not shown) or a submission queue of a host device, the controller 308 can 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.

[0042] In one embodiment, the NVM 304 is a NAND device. The NAND device includes one or more dies. Each of the one or more dies 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 can use an upper page and a lower page to reach two bits in each cell of the entire word line (e.g., 16 KiB per page). Moreover, each page can be accessed at a granularity equal to or less than a full page. A controller can frequently access NAND with a user data granularity LBA size of 512 bytes. Thus, as referenced in the description below, a NAND location is equal to a granularity of 512 bytes. Thus, the LBA size is 512 bytes and the page size of two pages of MLC NAND is 16 KiB, which results in 32 LBAs per word line. However, the NAND location size is not intended to be limiting and is used as an example only.

[0043] When data is written to an erase block, one or more logical blocks within the zone 306 are correspondingly updated to track the location of the data within the NVM 304. Data can be written one zone 306 at a time until the zone 306 is filled, or to multiple zones 306 so that multiple zones 306 can be partially filled. Similarly, when data is written to a particular zone 306, data can be written one block at a time in sequential order of word lines until moving to an adjacent block (i.e., writing to a first erase block until the first erase block is filled before moving to a second erase block), or can be written multiple blocks at a time in a parallel fashion to partially fill each block (i.e., writing to a first word line of each erase block before writing to a second word line of each erase block). This sequential programming of each NAND location is a typical, non-limiting requirement of many NAND EBs.

[0044] When the controller 308 selects the erase block in which to store the data for each zone, the controller 308 will be able to select the erase block at the zone open time, or the controller can select the erase block when the need to fill the first word line of that particular erase block is reached. This can be more differentiated when using the above-described method of completely filling one erase block before starting the next erase block. The controller 308 can use the time differential to select a more optimal erase block on a just-in-time basis. The decision of which erase block to allocate and assign to each zone and its contiguous LBAs can be happening within the controller 308 for zero or multiple parallel zones at a time.

[0045] Each of the zones 306 is associated with a zone start logical block address (ZSLBA) or zone start sector. The ZSLBA is the first available LBA in the zone 306. For example, the first zone 306a is associated with a ZSLBA of 0, the second zone 306b is associated with a ZSLBA of 2048, the third zone 306c is associated with a ZSLBA of 4096, the fourth zone 306d is associated with a ZSLBA of 6144, and the nth zone 306n (i.e., the last zone) is associated with a ZSLBA of 81920. Each zone 306 is identified by its ZSLBA and is configured to receive sequential writes (i.e., to write data to the NVM 110 in the order in which write commands are received). a b c d n Each zone 306 is identified by its ZSLBA and is configured to receive sequential writes (i.e., to write data to the NVM 110 in the order in which write commands are received).

[0046] ​​​​When data is written to a zone 306, the write pointer 310 is advanced or updated to point or indicate the next available block in the zone 306 for writing data to, in order to track the next write starting point (i.e., the completion point of a previous write equals the starting point of a subsequent write). Thus, the write pointer 310 indicates where a subsequent write to the zone 306 will start. The subsequent write command is a “zone append” command, where the data associated with the subsequent write command is appended to the zone 306 at the location indicated by the write pointer 310 as the next starting point. An ordered list of LBAs within a zone 306 can be stored for write ordering. Each zone 306 can have its own write pointer 310. Thus, when a write command is received, the zone is identified by its ZS LBA, and the write pointer 310 determines the location within the identified zone where the write of data starts.

[0047] Figure 3B A state diagram 350 for the ZNS 302 is shown for Figure 3A In the state diagram 350, each zone can be in a different state, such as empty, active, full, or offline. When a zone is empty, the zone contains no data (i.e., none of the erase blocks in the zone currently store data), and the write pointer is at the ZS LBA (i.e., WP = 0). An empty zone will switch to an open and active zone once a write is scheduled to the zone or an open zone command is issued by the host. Zone management (ZM) commands can be used to move a zone between the open zone and closed zone states (both active states). If a zone is active, the zone includes open blocks that can be written to, and a description of the recommended time in active state can be provided to the host. The controller 308 includes the ZM. Zone metadata can be stored in the ZM and / or the controller 308.

[0048] The term “write” includes programming user data on 0 or more NAND locations in an erase block and / or partially filled NAND locations in an erase block when user data has not filled all available NAND locations. The term “write” can further include moving a zone to full due to internal drive processing needs (open block data retention issues because these uncorrected bits accumulate faster on open erase blocks), the storage device 300 closing or filling a zone due to resource limitations (like too many open zones to track or defect states found), or the host device closing a zone because of issues such as no more data to send to the drive, the computer is shutting down, error processing on the host, limited host resources for tracking, and the like.

[0049] An active zone can be open or closed. An open zone is an empty zone or a partially filled zone that is ready for writes and has current allocated resources. Data received from the host device with a write command or zone append command can be programmed to an open erase block that is not currently filled with previous data. A closed zone is an empty zone or a partially filled zone that is not currently receiving writes continuously from the host. Moving a zone 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 zones, other regular non-zone areas, or other controller needs.

[0050] In open and closed zones, the write pointer points to a location in the zone between the ZSLBA and the end of the last LBA of the zone (i.e., WP > 0). An active zone can switch between open and closed states according to a designation by the ZM or when a write is scheduled to the zone. Additionally, the ZM can reset an active zone to clear or erase data stored in the zone so that the zone switches back to an empty zone. Once an active zone is full, the zone switches to a full state. A full zone is a zone that is completely filled with data and has no more available sectors or LBAs for writing data (i.e., WP = zone capacity (ZCAP)). In a full zone, the write pointer points to the end of the zone's writeable capacity. Read commands of data stored in a full zone can still be executed.

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

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

[0053] Since resetting a zone clears or schedules erasure of all data stored in the zone, the need for garbage collection of individual erase blocks is eliminated, 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 zone is to be formed and the storage device 300 anticipates a ZM open, then 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 zone when erasing the erase blocks. Thus, once a new zone is opened and an erase block is selected to form the zone, the erase block will be erased. In addition, each time a zone is reset, a new order of LBAs and write pointers 310 of the zones 306 can be selected so that the zones 306 can tolerate out-of-order command reception. The write pointers 310 can optionally be closed so that commands can be written to any starting LBA indicated by the command.

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

[0055] In the spare partition 306 just switched to active, because the write pointer 310 indicates the first available logical block associated with the ZSLBA, data is assigned to the partition 306 and a set of associated sequential LBAs of the partition 306 starting at the ZSLBA. This data can be written to one or more erase blocks or NAND locations allocated for the physical locations 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 writes (i.e., the completion point of the first write). The write data from this host write command is programmed sequentially into the next available NAND locations of the physical support selected for the partition in the erase block.

[0056] For example, the controller 308 can receive a first write command, or first partition append command, to the third partition 306c. The host identifies which logical block of the partition 306 to use to write data associated with the first command in sequence. 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 writes (i.e., WP > 0). If the controller 308 receives a second write command, or second partition append command, to the third partition 306c, the data associated with the second write command is written to the next available LBA in the third partition 306c identified by the write pointer 310. 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 writes. Resetting the third partition 306c moves the write pointer 310 back to the ZSLBA (i.e., WP = 0), and the third partition 306c switches to a spare partition. c

[0057] Figures 4A-4C is a graph illustrating the relationship of the number of programs of an erase block to the read error sensitivity of the erase block according to various embodiments. The number of programs of an 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 programmed data to the erase block being full. The total number of programs that can be contained at the erase block full capacity is a variable value depending on the program size and the size of any associated metadata. In the following description, for simplicity and exemplary purposes, the non-volatile storage unit is referred to as NVM. Also, while the following description is in terms of an erase block, the same concepts can apply to an entire partition or an entire stream as discussed below. Figures 4A-4C

[0058] ​​Further, the y-axis ranges from low error sensitivity to high error sensitivity. Error sensitivity is relative and can depend on the type of non-volatile memory. Further, the use of low and high sensitivity ranges is provided to further illustrate the embodiments herein. The illustrated curves are neither limiting nor constraining, but are used to provide possible embodiments of increased read error sensitivity of data in an erase block.

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

[0060] In one embodiment, data is written into the first word line in the first erase block of each plane of each die within the first partition. Data is sequentially written, filling each word line of the first erase block of each plane of each die within the first partition. When all of the erase blocks in the partition are filled, the partition is at full capacity or ZCAP, such as the ZCAP of Figure 3A In another embodiment, an erase block is completely programmed 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 the ZCAP described in Figure 3B In such an embodiment, the ZCAP, such as the ZCAP described in

[0061] However, the erase block can be closed before the erase block is full due to reaching a predetermined read error sensitivity value. The predetermined read sensitivity value can be from about 1000 to about 2000. The previous values of the predetermined read error sensitivity value are not intended to be limiting or restrictive, but rather to provide examples of possible values. In one embodiment, the predetermined read error sensitivity value is determined at the first opening of the erase block. In another embodiment, the predetermined read error sensitivity value is dynamically changed based on current conditions, such as the current predetermined read error sensitivity and / or the current number of reads to a particular section of the erase block. In yet another embodiment, the storage device can temporarily switch the location of user data received from the host and implement a real-time test to determine a new read error sensitivity value. Thus, the predetermined read error sensitivity value can change, rather than being a set constant value.

[0062] A controller, such as controller 108 of Figure 1 may indicate a recommendation signal to a host, such as host device 104 of Figure 1 that a zone is complete in order to alert the host that an erase block or zone is approaching a predetermined read error sensitivity value. The controller 108 can publish the following event: a notification to the host device 104 that a zone or erase block condition has changed. The host device 104 should then retrieve the change list and perform any mitigation that the host device deems necessary, such as closing the zone or erase block by writing padding data or dummy data to fill the remaining capacity of the zone or erase block.

[0063] For the following example, the data size written to the erase block is equal to a word line. In the examples herein, an erase block contains 256 word lines. The values shown for the word line size and erase block size are not intended to be limiting. The use of the term "word line" throughout the following embodiments is also not intended to be limiting, but rather to provide an example of what is possible to help explain some possible embodiments. As discussed above, data can be written to an erase block or zone in sizes larger or smaller than a word line.

[0064] The first program point includes all data currently written to the erase block, such that the first program point represents the last programmed word line. The probability of accumulating errors during a read of a word line further from the first program point (i.e., closer to the beginning of the erase block) is generally less than the probability of accumulating errors during a read of a word line closer to the first program point. For example, the first program point can be about 100 words of data, and a read command to a word line further from the first program point (i.e., closest to the beginning of the erase block) has a higher probability of error sensitivity than a read command to a word line closer to the first program point (i.e., closest to the beginning of the erase block).

[0065] As the shared circuitry for programming and reading is further separated in the NAND die layout, the correlation bit error accumulation on the open erase block inner word lines is reduced. This separation of the circuitry allows for more isolation of electrical behaviors, such as crosstalk and component leakage. This correlation can be related to the word line numbering available to address the physical media; however, the correlation between the word line numbering and the separation of the circuitry is not always required.

[0066] A read command weight is applied to each read command to normalize the overall error sensitivity, giving greater weight to read commands closer to the program point (i.e., read commands closer to the program point are associated with greater weight). Figures 4A-4C The curve shown in the middle is a general representation of a possible implementation, and other curves can be applicable to different non-volatile memory nodes.

[0067] In one implementation, one read weight can be applied to the program data section of an erase block. In another implementation, two read weights can be applied to the program data section of an erase block. In yet another implementation, three read weights can be applied to the program data section of an erase block. In another implementation, four read weights can be applied to the program data section of an erase block. In yet another implementation, more than four read weights can be applied to the program data section of an erase block.

[0068] Figure 4A A graph 400 of read error sensitivity is shown for a plurality of word lines of a first program point 406 of a partially filled first erase block. The first program point 406 can be any program point that is less than the total writable capacity of the erase block (shown by the“end of EB 410”). In this example, one or more first write commands write or program data into 100 word lines out of the total capacity of 256 word lines in the erase block (i.e., the first program point is the 100th word line in the erase block), and each read command received from the host is to read data specific to a certain word line within the 100 word lines. Further, “program 1 :n” represents the program range from the first program (i.e., the first word line in the erase block at the start of EB 402) to the final program at program point or n (i.e., the 100th word line in the erase block). In this example, n represents 100 word lines or 100 programs.

[0069] Of the 100 programmed word lines, about 60 word lines are in Al, about 20 word lines are in Bl, about 15 word lines are in Cl, and 5 word lines are in Dl. Further, the read command weight indicative of the error sensitivity level of each section is as follows: Al has a first weight of 0.5, Bl has a second weight of 1, Cl has a third weight of 2, and Dl has a fourth weight of 3. The read command weights and the number of word lines for each section are merely examples and are not intended to be limiting as any number of other combinations are possible.

[0070] For example, the first 60 word lines programmed closest to the beginning / starting point 402 of the erase block can be associated with a first section Al having a first weight of 0.5, and the next 20 adjacent word lines can be associated with a second section Bl having a second weight of 1. For example, in the first section Al, word line 5 can have a higher or lower error sensitivity than word line 4, and word line 6 can have a higher or lower error sensitivity than word line 5. The difference in read error sensitivity between the word lines can be minimal in the first section Al. Thus, the overall error sensitivity of the word lines can be estimated or averaged at a single value for each word line within the first section Al, as shown by the first linear portion 404 of the graph 400. Figure 4A

[0071] However, in the second section Bl, the third section Cl, and the fourth section Dl, the read error sensitivity of a word line can be significantly different than the next adjacent word line, as shown by the first curve 408 in the graph 400. Thus, the second section Bl, the third section Cl, and the fourth section Dl include fewer word lines than the first section Al. By grouping fewer word lines within the second section Bl, the third section Cl, and the fourth section Dl, the overall error sensitivity within each section can still be estimated or averaged at a single value. For example, the first word line in the second section Bl set closer to the first section Al will have a lower sensitivity than the second word line in the second section Bl set closer to the third section Cl. Thus, the lower sensitivity of the first word line will offset or even outweigh the higher sensitivity of the second word line, such that the overall sensitivity of each word line in the second section Bl can be averaged to a single value. Figure 4A Further, data stored up to the first program point 406 can be read non-sequentially from the first erase block. For example, a controller, such as the controller 102, can read the data stored in the first section Al, the second section Bl, and the third section Cl, and then read the data stored in the fourth section Dl. In this example, the controller 102 can read the data stored in the first section Al, the second section Bl, and the third section Cl in a first pass, and then read the data stored in the fourth section Dl in a second pass. In this example, the controller 102 can read the data stored in the first section Al, the second section Bl, and the third section Cl in a first pass, and then read the data stored in the fourth section Dl in a second pass.

[0072] Figure 1 ​​The controller 108 can receive one or more first read commands to read data in section Al, one or more second read commands to read data in section Bl, and one or more third read commands to read data in section Dl. In addition, the controller 108 updates the weight counter table 120 after each read occurs. For example, if 200 reads are performed to section Al, 100 reads are performed to section Bl, and 10 reads are performed to section Dl, the calculation of the read weight sum is as follows: 200*0.5 + 100*1 + 10*3 = 230.

[0073] In addition to the previous example, the controller 108 can receive one or more fourth read commands to read data in section Dl, and one or more fifth read commands to read data in section Bl. Since the new read commands are associated with data in section Dl, the controller 108 updates the weight of section Dl in the weight counter table 120. For example, the fourth read commands are associated with 100 reads of data in section Dl. The total number of reads of section Dl is 110. In addition, the update sum of the weights is as follows: 200*0.5 + 100*1 + 110*3 = 530.

[0074] As discussed further below, after the sum of the weights associated with one or more read commands accumulates to or above a predetermined value, such as about 1000, the erase block is closed. This predetermined value indicates that too many errors have accumulated in the erase block, and that the data stored in the erase block is in danger of being lost. By weighting the read commands based on the storage location of the data being read in the erase block, the life of the erase block can be more accurately predicted. For example, about 2000 data reads from the first section Al can be performed before the controller determines that the erase block should be closed. Similarly, about 333 data reads from the fourth section Cl can be performed before the controller determines that the erase block should be closed.

[0075] Figure 4BThe graph 400 is shown after one or more second write commands have been received to write data into a second program point 412 in the first erase block. The second program point 412 is past the first program point 406, closer to the end of the erase block 410. The data from the first program point 406 to the second program point 412 is denoted by “programs n+1 : n+m,” where “n” denotes the last program or word line of the first program point 406 and “m” denotes the last program or word line of the second program point 412. In this example, the number of programs or word lines from the first program point 406 to the second program point 412, or from the one or more first write commands to the one or more second write commands, will be 100 word lines, such that the first erase block includes 200 word lines storing data in a total capacity of 256 word lines. The data associated with the one or more second write commands is written sequentially such that the erase block first contains the data of the one or more first write commands and second contains the data of the one or more second write commands.

[0076] Further illustrating that read commands further from the program point have lower error sensitivity, the read error sensitivity of the word lines before the first program point 406 has a first weight of 0.5 (i.e., Bl, Cl, and Dl all have a weight of 0.5), as shown by the alignment of the first linear portion 404 with the second linear portion 414. Thus, once the data of the one or more second commands is written, Figure 4A the first curve 408 is no longer included. If the data is far enough from the second program point 412, the data stored in the one or more word lines written upon receipt of the one or more second write commands can be included in the second linear portion 414. As more and more data is written to the erase block, the previously written data is less and less affected by read disturb. For example, for a 10 word line program, the eighth and ninth word lines can be affected by the tenth word line program or read, but the first and second word lines can not be affected by the tenth word line program or read.

[0077] Similar to the first program point 406, programs closer to the second program point 412 have a higher read error sensitivity, such that the fifth segment B2 has a second weight of 1, the sixth segment C2 has a third weight of 2, and the seventh segment D2 has a fourth weight of 3, as shown by the second curve 416 in Figure 4B Furthermore, the read commands corresponding to the first segment and denoted by A2 have a first weight of 0.5, as shown by the first linear portion 404 and the second linear portion 414. Since the seventh segment D2 is closest to the second program point 412, the read error sensitivity of the seventh segment is highest compared to the other segments C2, B2, and A2. Thus, the seventh segment D2 has a higher weight associated with each read command compared to the segments A2, B2, and C2.

[0078] Further, data stored up to the second program point 412 (including past the first program point 406) can be read non-sequentially from the first erase block. For example, a controller (such as the controller 108 of the example Figure 1 The controller 108 can receive one or more first read commands to read data in the fifth section A2, receive one or more second read commands to read data in the sixth section B2, and receive one or more third read commands to read data in the eighth section D2. The controller 108 updates the weight counter table 120 for each read command and the sum of the weights. Continuing with the example Figure 4A of the example, if the one or more first read commands to read data in the second section A2 contain 200 reads, the one or more second read commands to read data in the sixth section B2 contain 10 reads, and the one or more third read commands to read data in the eighth section D2 contain 20 reads, the calculation of the sum of the updates is as follows: 530 (taken from the Figure 4A value of the example) + 200*0.5 + 10*1 + 20*3 = 700.

[0079] Figure 4C The graph 400 is shown after one or more third write commands have been received to write data to the first erase block. Data can be written to the first erase block such that the first erase block is closed or written to full capacity. In the previous case, the first erase block was closed by filling the open capacity with padding data. The erase block is closed after the sum of the weights associated with the one or more read commands accumulates to or above a predetermined value. The predetermined value can be about 1000. The predetermined value indicates that too many errors have accumulated in the erase block and indicates that there is a risk of data stored in the erase block being lost. For example, one or more third write commands are received to write data to the end program point 420. After one or more read commands are received to read data from any location in the first erase block, the weights of the read commands are accumulated and found to reach the predetermined value. The controller can then write padding data or dummy data to the first erase block to fill the word lines between the end program point 420 and the end of the block 410. The listed predetermined value is not intended to be limiting, and other embodiments of the predetermined value can be valid.

[0080] For example, if for a plurality of read commands to read the first section A2 associated with a first weight of 0.5, the second section B2 associated with a second weight of 1, the third section C2 associated with a third weight of 2, and the fourth section D2 associated with a fourth weight of 3, the sum of the weights is equal to or greater than a predetermined value, such as about 1000, the controller 108 will close the first erase block due to a high overall error susceptibility or a high probability that an unacceptable amount of bit errors has accumulated. Fill data or dummy data is written to the first erase block in order to fill the first erase block to capacity (i.e., to the end 410 of the EB).

[0081] Further, different read commands can be received to read data from the same section or different sections in the erase block. The controller 108 can close the first erase block at any point after the sum of the weights of the read commands exceeds or equals the predetermined value, such as about 1000. For example, the first erase block can be closed at the first program point 406 if the sum of the read commands equals or exceeds the predetermined value, such as about 1000. Figure 4B the previous total 700 in the weight counter table 120 of Figure 1 If a new read command corresponding to data in the eighth section D2 has 100 reads, the new total weight is calculated as follows: 700 + 100*3 = 1000. Since the new total weight equals 1000, the controller closes the first erase block at the predetermined value because of a high likelihood that an unacceptable amount of bit errors has accumulated. Once the first erase block has been closed, the data in the first erase block can be re-written to a second erase block, in which case the weight count for reads will again start at zero.

[0082] However, the first erase block can also be closed if user data is written up to the writable capacity. For example, if one or more fourth write commands are received to write data to the remaining 56 word lines of the first erase block, resulting in all 256 word lines of the first erase block storing user data (i.e., data is written to the first erase block up to the end 410 of the EB), the first erase block can be full. When the erase block is closed or full, the read error susceptibility of any read commands received to read data from any word line is associated with the same weight of the first section Al (or the fifth section A2). Thus, once the first erase block is closed or full, Figure 4B the second curve 416 shown in FIG. 4B is no longer included. Instead, the read error susceptibility of all word lines in the first erase block is the same, as shown by the line 422 in FIG. 4B. Figure 4C

[0083] Further, Figures 4A-4C ​The embodiments illustrated in the middle can also apply to one partition within a plurality of partitions, rather than only to one erase block within one partition. For example, one or more first write commands can be received to write data to one or more erase blocks in a first partition of a plurality of partitions. The one or more first write commands partially fill the first partition to a first program point, which is less than the total writeable capacity or ZCAP of the first partition. When one or more read commands are received to read data non-sequentially from the first partition, a read weight is applied to each read command as discussed above.

[0084] As adjacent word lines are no longer programmed, the sensitivity to read disturb errors is reduced in a closed or full capacity erase block. When adjacent word lines are programmed, the voltage applied to a currently programmed word line can affect the voltage of a previously programmed word line, which can cause bit errors. Thus, the last write to a word line in an erase block locks in bit error sensitivity, which can result in a single read error sensitivity section. A second erase block can be written to after the first erase block is closed or full.

[0085] Each read weight depends on the location of the data read relative to the first program point, such that a first read weight section closest to the beginning of the first partition can be 0.5, a second read weight section can be 1, a third read weight section can be 2, and a fourth read weight section closest to the first program point can be 3. Data read requests closer to the first program point have a higher weight compared to data read requests further from the first program point. When the sum of the read weights is equal to or greater than a predetermined value, such as about 1000, the first partition is closed by filling the remaining capacity with dummy data or padding data. Data for new write commands are then written to a second partition or a second erase block.

[0086] However, the first partition or first erase block can also be closed when the partition or erase block stores user data to the partition capacity or erase block capacity, in which case each read command to read data from the partition or erase block will have the same weight as discussed above. The read weight value and predetermined value are not intended to be limiting, and other embodiments can exist. Further, applying a weight to a read command based on the location of the data within the erase block or partition can improve the overall lifespan of the memory cells by not strictly limiting the erase block or partition to about 1000 reads. The weight system can allow for multiple reads of the erase block or partition and reduce the likelihood of an unacceptable accumulation of bit errors. Thus, the overall lifespan of the erase block or partition can be more accurately predicted, allowing for an extension of the lifespan of the erase block or partition. As a result, the storage device can operate in a more efficient and effective manner.

[0087] In one embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage unit. The controller is configured to sequentially write data associated with one or more first commands to a first zone of the plurality of zones. The first zone has a writable capacity, and the data associated with the one or more first commands partially fills the first zone 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 zone, where each read command of the one or more read commands is associated with a weight that is based on a proximity of the data being read to the first program point, and where at least two of the weights of the one or more read commands are different.

[0088] The data associated with the one or more commands is written to a partially filled first erase block of the first zone. The one or more read commands are used to read data stored in the first erase block. The controller is further configured to close the first erase block when a sum of the weights associated with the one or more read commands accumulates to a predetermined value. The higher the weight of a read command, the closer the read command is to the first program point. The weights indicate a level of error sensitivity. The controller is also configured to sequentially write data associated with one or more second commands to the first zone, where the data associated with the one or more second commands partially fills the first zone to a second program point that is less than the writable capacity. The controller is further configured to receive one or more second read commands to non-sequentially read data from the first zone, where each second read command of the one or more second read commands is associated with a weight that is based on a proximity of the data being read to the second program point, and where at least two of the weights of the one or more second read commands are different. The controller is also configured to close the first zone when a sum of the weights associated with the read commands accumulates to a predetermined value. The controller is also configured to sequentially write data associated with one or more third commands to the first zone, where the one or more third commands fill the first zone to the writable capacity, and receive one or more third read commands to non-sequentially read data from the first zone, where each third read command of the one or more third read commands is associated with a same weight when the first zone is filled to the writable capacity.

[0089] In another embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage unit. The controller is configured to receive a plurality of read commands to read data non-sequentially from a partially filled first erase block of a first zone of the plurality of zones, where each of the read commands is associated with a weight, the weight is based on a location of data read within the first erase block, and where at least two of the weights of the read commands are different. The controller is further configured to close the first erase block when a sum of the weights associated with the read commands accumulates to a predetermined value.

[0090] At least four of the one or more read commands have different weights. Data stored closest to a program point of the partially filled first erase block has a higher weight than data stored closer to a beginning of the partially filled first erase block. The higher the weight of a read command, the closer the read command is to the first program point. The weights vary between about 0.5 to about 3. The predetermined value is about 1000. The weights indicate a level of error sensitivity.

[0091] In another embodiment, a storage device includes a non-volatile storage unit. A capacity of the non-volatile storage unit is divided into a plurality of zones. The non-volatile storage unit also includes a plurality of dies, and each die of the plurality of dies includes a plurality of erase blocks. The storage device also includes a controller coupled to the non-volatile storage unit. The controller is configured to receive one or more first read commands to read first data from a partially filled first erase block of a first zone, where the one or more first read commands are each associated with a first weight. The controller is further configured to receive one or more second read commands to read second data from the partially filled first erase block, where the one or more second read commands are each associated with a second weight that is greater than the first weight. The controller is also configured to receive one or more third read commands to read third data from the partially filled first erase block, where the one or more third read commands are each associated with a third weight that is greater than the first weight and the second weight, and where the third weight indicates a higher level of error sensitivity than the first weight and the second weight. The controller is configured to close the first erase block when a sum of the first weight, the second weight, and the third weight accumulates to a predetermined value.

[0092] The first weight, the second weight, and the third weight are based on a location of data read within the first erase block. The one or more first read commands are to read data stored closer to a beginning of the first erase block. The one or more third read commands are to read data stored closest to a program point of the first erase block. The one or more second read commands are to read data stored between the beginning of the first erase block and the program point of the first erase block. The controller is further configured to receive one or more fourth read commands to read fourth data from the partially filled first erase block, wherein the one or more fourth read commands are each associated with a fourth weight that is greater than the second weight and less than the third weight, and to close the first erase block when a sum of the first weight, the second weight, the third weight, and the fourth weight accumulates to a predetermined value. The one or more fourth read commands are to read data stored between the data of the one or more third read commands and the data of the one or more second read commands. The first weight is about 0.5, the second weight is about 1, the third weight is about 3, the fourth weight is about 2, and the predetermined value is about 1000.

[0093] While the foregoing is directed to implementations of the present disclosure, other and further implementations of the disclosure can be devised without departing from the basic scope thereof, and the scope of the present disclosure is determined by the claims that follow.

Claims

1. A storage device comprising: a non-volatile storage unit, wherein a capacity of the non-volatile storage unit is divided into a plurality of zones, wherein the non-volatile storage unit comprises a plurality of dies, each of the plurality of dies comprises a plurality of erase blocks, and wherein each zone of the plurality of zones comprises a plurality of erase blocks; and a controller coupled to the non-volatile storage unit, wherein the controller is configured to: sequentially write data associated with one or more first commands to a first zone of the plurality of zones, the first zone having a writable capacity, wherein the data associated with the one or more first commands partially fills the first zone to a first program point that is less than the writable capacity; and receive one or more read commands to read the data from the first zone non-sequentially, wherein: a weight of a plurality of initial weights is applied to each of the one or more read commands, the plurality of initial weights each having a value based on a proximity of the data being read to the first program point indicating a level of susceptibility to read errors, values of at least two of the plurality of initial weights applied to the one or more read commands are different; a first initial weight of the plurality of initial weights has a first level of susceptibility to read errors, the first initial weight being associated with a first number of word lines in the first zone disposed closest to a zone start point of the first zone, a second initial weight of the plurality of initial weights has a second level of susceptibility to read errors higher than the first level of susceptibility, the second initial weight being associated with a second number of word lines in the first zone disposed closest to the first program point, and the first number of word lines is more than the second number of word lines.

2. The storage device of claim 1, wherein the data associated with the one or more commands is written to a partially filled first erase block of the first zone, and wherein the one or more read commands are to read the data stored in the first erase block.

3. The storage device of claim 2, wherein the controller is further configured to close the first erase block when a sum of the weights applied to the one or more read commands accumulates to a predetermined value.

4. The storage device of claim 1, wherein the higher the weight of a read command, the closer the read command is to the first program point.

5. The storage device of claim 1, wherein the controller is further configured to: sequentially write data associated with one or more second commands to the first zone, wherein the data associated with the one or more second commands partially fills the first zone to a second program point that is less than the writable capacity; and Receive one or more second read commands to read the data from the first partition out of order, wherein a weight of a plurality of update weights is applied to each of the one or more second read commands, each of the plurality of update weights having a value indicating a sensitivity level to read errors based on how close the data is to the second program point, wherein at least two of the plurality of update weights applied to the one or more second read commands have different values, wherein the first number of word lines in the first partition and the second number of word lines in the first partition each have a first update weight, and wherein the third number of word lines in the first partition set to be closest to the second program point have a second update weight greater than the first update weight.

6. The storage device of claim 1, wherein the controller is further configured to shut down the first partition when the sum of the weights associated with the read command accumulates to a predetermined value.

7. The storage device of claim 1, wherein the controller is further configured to: Data associated with one or more third commands is sequentially written to the first partition, wherein the one or more third commands fill the first partition to the writable capacity, and Receive one or more third read commands to read the data from the first partition out of order, wherein when the first partition is filled to the writable capacity, the same weight of the plurality of initial weights is applied to each of the one or more third read commands.

8. A storage device, the storage device comprising: A non-volatile memory cell, wherein the capacity of the non-volatile memory cell is divided into multiple partitions, and wherein the non-volatile memory cell includes multiple dies, each of the multiple dies includes multiple erase blocks, and wherein each of the multiple partitions includes multiple erase blocks; and A controller, coupled to the non-volatile memory cell, wherein the controller is configured to: Receive multiple read commands to read data non-sequentially from a first erase block partially filled in the first partition of the multiple partitions, wherein: A weight of multiple weights is applied to each of one or more read commands, each weight having a value that indicates a sensitivity level to read errors based on the position of the data read within the first erase block. At least two of the plurality of weights applied to the read command have different values. The data in the first partition is associated with at least two portions and two different weights, the at least two portions of the data comprising different numbers of word lines, and The first weight, which has the lowest sensitivity level to read errors among the plurality of weights, is applied to the data stored as the partition start point closest to the first partition; as well as When the sum of the weights applied to the read command accumulates to a predetermined value, the first erase block is closed.

9. The storage device of claim 8, wherein values of at least four of the plurality of weights applied to the one or more read commands are different.

10. The storage device of claim 8, wherein the data stored closest to a program point of the partially filled first erase block has a higher weight than the data stored closer to the zone start point of the partially filled first erase block.

11. The storage device of claim 8, wherein the higher the weight applied to a read command, the closer the read command is to a first program point.

12. The storage device of claim 11, wherein each of the plurality of weights varies between 0.5 and 3.

13. The storage device of claim 12, wherein the predetermined value is 1000.

14. The storage device of claim 8, wherein a first portion of data stored in the first zone has the first weight, a second portion of data stored in the first zone closer to a program point has a second weight of the plurality of weights, the second weight has a second level of sensitivity to read errors higher than a lowest level of sensitivity, and the first portion is greater than the second portion.

15. A storage device, the storage device comprising: a non-volatile storage unit, wherein a capacity of the non-volatile storage unit is divided into a plurality of zones, and wherein the non-volatile storage unit comprises a plurality of dies, each of the plurality of dies comprising a plurality of erase blocks, and wherein each zone of the plurality of zones comprises a plurality of erase blocks; and a controller coupled to the non-volatile storage unit, wherein the controller is configured to: receive one or more first read commands to read first data from a first number of word lines of a partially filled first erase block of a first zone, a first weight of a plurality of weights applied to each of the one or more first read commands, the plurality of weights each having an indicated level of sensitivity to read errors; receive one or more second read commands to read second data from a second number of word lines of the partially filled first erase block, a second weight of the plurality of weights applied to each of the one or more second read commands, wherein a value of the second weight is greater than a value of the first weight, and wherein the second number of word lines is less than the first number of word lines; receive one or more third read commands to read third data from a third number of word lines of the partially filled first erase block, a third weight of the plurality of weights applied to each of the one or more third read commands, wherein a value of the third weight is greater than values of the first weight and the second weight, and wherein the third weight indicates a higher error sensitivity than the first weight and the second weight, and wherein the third number of word lines is less than the first number of word lines; and when a sum of the first weight, the second weight, and the third weight accumulates to a predetermined value, close the first erase block.

16. The storage device of claim 15, wherein the first weight, the second weight, and the third weight are based on a location of the data read within the first erase block.

17. The storage device of claim 15, wherein the one or more first read commands are to read data stored closer to a beginning of the first erase block, the one or more third read commands are to read data stored closest to a program point of the first erase block, and wherein the one or more second read commands are to read data stored between the beginning of the first erase block and the program point of the first erase block.

18. The storage device of claim 17, wherein the controller is further configured to: receive one or more fourth read commands to read fourth data from a fourth number of word lines of the partially filled first erase block, a fourth weight of the plurality of weights applied to each of the one or more fourth read commands, wherein a value of the fourth weight is greater than a value of the second weight and less than a value of the third weight, and wherein the fourth number of word lines is less than the first number of word lines; and turn off the first erase block when a sum of the first weight, the second weight, the third weight, and the fourth weight accumulates to a predetermined value.

19. The storage device of claim 18, wherein the one or more fourth read commands are to read data stored between the data of the one or more third read commands and the data of the one or more second read commands.

20. The storage device of claim 19, wherein the first weight is 0.5, the second weight is 1, the third weight is 3, the fourth weight is 2, and wherein the predetermined value is 1000.

Citation Information

Patent Citations

  • Read Scrub with Adaptive Counter Management

    US20160124679A1

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

    US20180004415A1