Keeping partitions open with middle fill

By writing virtual data into the storage device after a predetermined time and redistributing the data, the problem of high error rate caused by partially filled partitions is solved, thus improving data reliability and storage efficiency.

CN114746835BActive Publication Date: 2025-12-30SANDISK TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080082902.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-20
Filing Date
2020-12-11
Publication Date
2025-12-30
Estimated Expiration
2040-12-11

AI Technical Summary

Technical Problem

In existing storage devices, partially filled partitions are prone to errors, leading to data loss or corruption and affecting data reliability.

Method used

By writing virtual data to the second part of the partition after a predetermined amount of time, allocating and opening the second partition, rewriting the data to the second partition to fill the partition capacity, and erasing the first partition, the redistribution of data and capacity utilization are achieved.

Benefits of technology

It reduces the error rate in storage devices and improves data reliability and storage efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114746835B_ABST
    Figure CN114746835B_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 media unit divided into a plurality of zones. Data associated with one or more first commands is written to a first portion of a first zone. Upon passage of a predetermined amount of time, dummy data is written to a second portion of the first zone to fill the first zone to a zone capacity. Upon receiving one or more second commands to write data, a second zone is allocated and opened and the data associated with the one or more second commands is written to a first portion of the second zone. The data associated with the one or more first commands is then optionally re-written to a second portion of the second zone to fill the second zone to a zone capacity and the first zone is erased.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

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

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

[0004] Description of related fields

[0005] Storage devices such as SSDs are 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 logical block address is associated with a physical location on the erase block, allowing the SSD and / or host device to know where the data is stored. One or more erase blocks can be grouped together by their respective logical block addresses to form groups or partitions. Typically, data is written to each erase block in a group or partition before being written to the erase blocks in a new group or partition.

[0006] When data is written to the erase block of a group or partition, that group or partition may remain partially filled for a period of time. The longer a group or partition remains partially filled, the more susceptible it is to errors. Therefore, data stored in a partially filled group or partition may be lost or corrupted, negatively impacting data reliability.

[0007] Therefore, a new method for operating storage devices is needed to reduce the error rate of data stored in storage devices and improve data reliability. Summary of the Invention

[0008] This disclosure relates throughout to a method of operating a storage device. The storage device includes a controller and media units divided into multiple partitions. Data associated with one or more first commands is written to a first portion of a first partition. After a predetermined amount of time has elapsed, virtual data is written to a second portion of the first partition to fill the first partition to its capacity. Upon receiving one or more second commands to write data, a second partition is allocated and opened, and the data associated with the one or more second commands is written to the first portion of the second partition. Optionally, the data associated with the one or more first commands is then rewritten to the second portion of the second partition to fill the second partition to its capacity, and the first partition is erased.

[0009] In one embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to receive one or more first commands to write data to a first partition of the multiple partitions, wherein data associated with the one or more first commands is written to a first portion of the first partition, and wherein a second portion of the first partition remains available for writing data thereto. The controller is also configured to determine a predetermined amount of time has elapsed since receiving the first command to write data to the first partition and writing virtual data to the second portion of the first partition to fill the partition capacity. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to the first portion of the second partition. The controller is also configured to rewrite the data associated with the one or more first commands written to the first portion of the first partition to the second portion of the second partition.

[0010] In another embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to receive one or more first commands to write data to a first partition of the multiple partitions, wherein data associated with the one or more first commands is written to a first portion of the first partition, and wherein a second portion of the first partition remains available for writing data thereto. The controller is also configured to determine that a first predetermined amount of time has elapsed since receiving the first command to write data to the first partition. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to a first portion of the second partition. The controller is also configured to determine that a second predetermined amount of time has elapsed since receiving the second command to write data to the first partition. The controller is further configured to, upon receiving one or more third commands to write data to the first partition, open a third partition and write data associated with the one or more third commands to a first portion of the third partition. The controller is also configured to rewrite data associated with one or more first commands written to a first part of a first partition to a second part of a third partition, and to rewrite data associated with one or more second commands written to a first part of a second partition to a third part of a third partition.

[0011] In another embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to write data associated with one or more first commands to a first portion of the first partition, and wherein a second portion of the first partition remains available for writing data thereto. The controller is also configured to write virtual data to the second portion of the first partition to fill the first partition to its capacity. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to the first portion of the second partition. The controller is also configured to rewrite the data associated with the one or more first commands written to the first portion of the first partition to the second portion of the second partition. The controller is further configured to, upon a second expiration of a timer, write virtual data to a third portion of the second partition to fill the second partition to its capacity. The controller is also configured to, upon receiving one or more third commands to write data to the first partition, open the third partition and write the data associated with the one or more third commands to a first portion of the third partition. The controller is further configured to rewrite the data associated with the one or more first commands written to a second portion of the second partition back to a second portion of the third partition, and to rewrite the data associated with the one or more second commands written to a first portion of the second partition back to a third portion of the third partition. Attached Figure Description

[0012] Therefore, a detailed understanding of the foregoing features of this disclosure, a more specific description of this disclosure, and the foregoing brief overview can be obtained by referring to the embodiments, some of which are shown in the accompanying drawings. However, it should be noted that the drawings only illustrate typical embodiments of this disclosure and should therefore not be considered as limiting its scope, as this disclosure allows for other equally effective embodiments.

[0013] Figure 1 This is a schematic block diagram illustrating a storage system according to one implementation scheme.

[0014] Figure 2 A storage system comprising a storage device coupled to a host device is shown according to another embodiment.

[0015] Figure 3 This is a block diagram illustrating a method for operating a storage device to execute read or write commands according to one embodiment.

[0016] Figure 4A A view of partition namespaces used in a storage device according to one implementation is shown.

[0017] Figure 4B An example of an implementation scheme is shown. Figure 4A A state diagram of the partition namespace of the storage device.

[0018] Figure 5A This is a schematic diagram of a ZNS, a storage device for storing data according to one implementation scheme.

[0019] Figure 5B This illustrates writing data to according to one implementation scheme. Figure 5A The flowchart of the ZNS method.

[0020] Figure 6A This is a schematic diagram of a ZNS, a storage device for storing data according to another implementation scheme.

[0021] Figure 6B This illustrates writing data to according to one implementation scheme. Figure 6A The flowchart of the ZNS method.

[0022] Figure 7A This is a schematic diagram of a ZNS, a storage device for storing data according to yet another implementation scheme.

[0023] Figure 7B This illustrates writing data to according to one implementation scheme. Figure 7A The flowchart of the ZNS method.

[0024] For ease of understanding, the same reference numerals are used where possible to denote the same elements common in the accompanying drawings. It is conceivable that elements disclosed in one embodiment may be advantageously used in other embodiments without specific description. Detailed Implementation

[0025] In the following text, reference is made to embodiments of this disclosure. However, it should be understood that this disclosure is not limited to the specifically described embodiments. Rather, consider any combination of the following features and elements (whether or not related to different embodiments) to achieve and practice this disclosure. Furthermore, while embodiments of this disclosure may achieve advantages over other possible solutions and / or over the prior art, achieving a particular advantage through a given embodiment is not a limitation of this disclosure. Therefore, the following aspects, features, embodiments, and advantages are illustrative only and should not be considered elements or limitations of the appended claims unless expressly stated in the claims. Similarly, reference to “this disclosure” should not be construed as a generalization of any inventive subject matter disclosed herein and should not be considered elements or limitations of the appended claims unless expressly stated in the claims.

[0026] This disclosure relates throughout to a method of operating a storage device. The storage device includes a controller and media units divided into multiple partitions. Data associated with one or more first commands is written to a first portion of a first partition. After a predetermined amount of time has elapsed, virtual data is written to a second portion of the first partition to fill the first partition to its capacity. Upon receiving one or more second commands to write data, a second partition is allocated and opened, and the data associated with the one or more second commands is written to the first portion of the second partition. Optionally, the data associated with the one or more first commands is then rewritten to the second portion of the second partition to fill the second partition to its capacity, and the first partition is erased.

[0027] Figure 1 This is a schematic block diagram illustrating a storage system 100 according to one or more technologies of the present disclosure, wherein storage device 106 can be used as a storage device for host device 104. For example, host device 104 can utilize non-volatile memory device 110 included in storage device 106 to store and retrieve data. Host device 104 includes host DRAM 138. In some examples, storage system 100 may include multiple storage devices, such as storage device 106, that can operate as a storage array. For example, storage system 100 may include multiple storage devices 106 configured as a low-cost / independent disk (RAID) redundant array that collectively serves as a high-capacity storage device for host device 104.

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

[0029] The storage device 106 includes a controller 108, non-volatile memory 110 (NVM 110), a power supply 111, volatile memory 112, and an interface 114. The controller 108 includes internal memory 120 or a buffer. In some examples, for clarity, the storage device 106 may include... Figure 1Additional components not shown. For example, storage device 106 may include a printed circuit board (PCB) to which components of storage device 106 are mechanically attached, and the PCB includes conductive traces for electrically interconnecting components of storage device 106, etc. In some examples, the physical dimensions and connector configuration of 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., HDDs or SSDs), 2.5” data storage devices, 1.8” data storage devices, peripheral component interconnects (PCI), PCI expansion (PCI-X), PCI Express (PCIe) (e.g., PCIe x1, x4, x8, x16, PCIe Mini cards, MiniPCI, etc.). In some examples, storage device 106 may be directly coupled (e.g., directly soldered) to the motherboard of host device 104.

[0030] The interface 114 of storage device 106 may 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 may operate according to any suitable protocol. For example, 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 High Speed ​​Link (CXL), Open Channel SSD (OCSSD), etc. Electrical connections (e.g., data bus, control bus, or both) of interface 114 are electrically connected to controller 108, thereby providing an electrical connection between host device 104 and controller 108, allowing data exchange between host device 104 and controller 108. In some examples, the electrical connection of interface 114 can also allow storage device 106 to receive power from host device 104. For example, as Figure 1 As shown, power supply 111 can receive power from host device 104 via interface 114.

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

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

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

[0034] NVM 110 may include multiple flash memory devices or media cells. The flash memory devices may include NAND-based or NOR-based flash memory devices and may store data based on the charge contained in the floating gate of the transistors for each flash memory cell. In a NAND flash memory device, the flash memory device may be divided into multiple blocks, which may be divided into multiple pages. Each of the multiple blocks within a particular memory device may include multiple NAND cells. Rows of NAND cells may be electrically connected using word lines to define pages within the multiple pages. A corresponding cell in each of the multiple pages may be electrically connected to a corresponding bit line. Furthermore, the NAND flash memory device may be a 2D or 3D device and may be a single-level cell (SLC), multi-level cell (MLC), three-level cell (TLC), or four-level cell (QLC). Controller 108 may 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] Storage device 106 includes a power supply 111 that can provide power to one or more components of storage device 106. When operating in standard mode, power supply 111 can use power provided by an external device such as host device 104 to power one or more components. For example, power supply 111 can use power received from host device 104 via interface 114 to power one or more components. In some examples, power supply 111 may include one or more power storage components configured to power one or more components when operating in a shutdown mode, such as when power is stopped from receiving power from external devices. In this way, power supply 111 can be used as an onboard backup power source. 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 electricity 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 electricity stored by one or more power storage components increases, the cost and / or size of one or more power storage components also increases.

[0036] Storage device 106 also includes volatile memory 112, which can be used by controller 108 to store information. Volatile memory 112 may include one or more volatile memory devices. In some examples, controller 108 may use volatile memory 112 as a cache. For example, controller 108 may store cached information in volatile memory 112 until the cached information is written to non-volatile memory 110. Figure 1 As shown, volatile memory 112 can consume power received from power supply 111. Examples of 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] 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 NVM 110 and / or writing data to NVM. In some embodiments, when storage device 106 receives a write command from host device 104, controller 108 can initiate a data storage command to store data in NVM 110 and monitor the progress of the data storage command. Controller 108 can determine at least one operational characteristic of storage system 100 and store at least one operational characteristic in 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 120 before sending the data to NVM 110.

[0038] Figure 2 A storage system 200 according to another embodiment is shown, comprising a storage device 206 coupled to a host device 204. The storage system 200 may be... Figure 1 The storage system 100, host device 104 and storage device 106.

[0039] Storage device 206 can send and receive commands and data from host device 204, and includes command processor 220. Command processor 220 can be... Figure 1 The controller 108 is located within the memory device. The command processor 220 can schedule memory device accesses (such as NAND accesses) and can perform reads from the memory device before a previously received command needs to be written to the same memory device. The command processor 220 is coupled to one or more memory devices 228 and command fetch 222. The one or more memory devices 228 may be NAND non-volatile memory devices. The command fetch 222 is coupled to a commit queue arbitration 224. The commit queue arbitration 224 is coupled to one or more commit queue head and tail pointers 226.

[0040] Host device 204 includes one or more host software applications 232 coupled to one or more processing units or CPU applications 234. In one embodiment, software application 232 has a limited solid-state drive queue depth to derive latency QoS for each user of system 200. Host device 204 also includes an operating system (OS) or software application 240 without associated QoS. CPU 234 is coupled to interconnect 236 and host DRAM 238. Host DRAM 238 may store submission queue data. Interconnect 236 is coupled to storage device 206. Interconnect 236 may communicate with both submission queue head and tail pointers 226 and command fetch 222.

[0041] CPU 234 generates one or more commands 216 to send to storage device 206, and can send and receive commands from storage device 206 via command acquisition signal 244. CPU 234 can also send an interrupt or doorbell 218 to storage device 206 to notify storage device 206 of one or more commands 216. CPU 234 can limit the data queue depth submitted to storage device 206. Queue depth (QD) is the maximum number of commands queued to storage device 206, while data-QD is the amount of data associated with commands queued with QD. In one embodiment, the data-QD 242 of storage device 206 is equal to the bandwidth of storage device 206. Data-QD 242 is limited to the highest level of latency QoS that storage device 206 can still maintain. Command processor 220 then processes the commands received from host device 204.

[0042] Figure 3 This is a block diagram illustrating a method 300 for operating a storage device to execute read or write commands according to one embodiment. Method 300 can be used with storage system 100, which has a host device 104 and a storage device 106 including a controller 108. Method 300 can also be used with storage system 200, which has a host device 204 and a storage device 206 including a command processor 220.

[0043] Method 300 begins with operation 350, in which the host device writes commands as entries to a commit queue. At operation 350, the host device may write one or more commands to the commit queue. Commands may be read commands or write commands. The host device may include one or more commit queues.

[0044] In operation 352, 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 that it is ready to execute a new command. The doorbell signal could be... Figure 2 Doorbell 218. If there is more than one commit queue, the host can write an updated commit queue tail pointer and send a doorbell or interrupt signal for each commit queue. In operation 354, in response to receiving a doorbell or interrupt signal, the controller of the storage device retrieves a command from one or more commit queues, and the controller receives the command.

[0045] In operation 356, the controller processes a command and writes or transfers the data associated with that 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 the order of submission or sequentially. Processing a write command may include: identifying the partition for which the data associated with the command is to be written, writing the data to one or more logical block addresses (LBAs) of that partition, and advancing the write pointer of that partition to identify the next available LBA within that partition.

[0046] In operation 358, once the command has been fully processed, the controller writes the 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.

[0047] In Operation 360, the controller generates an interrupt signal or doorbell signal 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.

[0048] In operation 362, the host device processes the completion entry. In operation 364, the host device writes the updated CQ header pointer to the storage device and rings the doorbell or sends an interrupt signal to the storage device to release the completion entry.

[0049] Figure 4A A partition namespace (ZNS) 402 view used in storage device 400 according to one embodiment is shown. Storage device 400 can present the ZNS 402 view to a host device. Figure 4B A state diagram 450 of the ZNS 402 of a storage device 400 according to one embodiment is shown. The storage device 400 may be... Figure 1 Storage device 106 of storage system 100 Figure 2 The storage system 200 includes storage device 206. Storage device 400 may have one or more ZNS 402, and each ZNS 402 may have a different size. In addition to the one or more partition namespaces 402, storage device 400 may also include one or more general namespaces. Furthermore, ZNS 402 may be a partition block command (ZBC) for SAS and / or a partition device ATA command set (ZAC) for SATA. Due to the possible relationship between logical and physical activities, host-side partitioning activity may be more directly related to media activity within the partition drive.

[0050] In storage device 400, ZNS 402 is the number of NVMs that can be formatted into logical blocks such that the capacity is divided into multiple partitions 406a-406n (collectively referred to as partitions 406). Each partition in partition 406 includes multiple physical blocks or erase blocks (now shown) of media units or NVMs 404, and each erase block is associated with multiple logical blocks (not shown). When controller 408 receives commands from a host device (not shown) or a host device's commit queue, controller 408 can read data from and write data to the multiple logical blocks associated with the multiple erase blocks (EBs) of ZNS 402. Each logical block is associated with a unique LBA or sector.

[0051] In one implementation, NVM 404 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 the top and bottom pages to reach two bits in each cell of the entire word line (e.g., 16kB per page). Furthermore, each page can be accessed at a granularity equal to or smaller than a full page. The controller can frequently access NAND with a user data granularity LBA size of 512 bytes. Therefore, as mentioned throughout, the NAND location is equal to a granularity of 512 bytes. Thus, the LBA size is 512 bytes and the page size of the two pages of the MLC NAND is 16KiB, resulting in 32 LBAs per word line. However, the NAND location size is not intended to be limiting and is only used as a non-limiting example.

[0052] When data is written to an erase block, one or more logical blocks within partition 406 are updated accordingly to track the data's location within NVM 404. Data can be written to one partition 406 at a time until partition 406 is full, or to multiple partitions 406 such that multiple partitions 406 may become partially full. Similarly, when data is written to a particular partition 406, the data can be written block by block at a time, page by page or word by word, until an adjacent block is moved (i.e., the first erase block is written until it becomes full before moving to the second erase block), or it can be written multiple blocks at a time, page by page or word by word, to partially fill each block in a parallel manner (i.e., the first NAND location or page of each erase block is written before the second NAND location or page of each erase block is written). This sequential programming of each NAND location is a typical non-restrictive requirement for many NAND EBs.

[0053] Each partition in partition 406 is associated with a Partition Start Logical Block Address (ZSLBA). The ZSLBA is the first available LBA in partition 406. For example, the first partition 406a is associated with ZSLBA. a SLBA is associated with the second partition 406b and Z. b SLBA is associated with the third partition 406c and Z. c SLBA is associated with the fourth partition 406d and Z. d SLBA is associated, and the nth partition 406n (i.e., the last partition) is associated with Z. n SLBAs are associated. Each partition 406 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).

[0054] When data is written to partition 406, the write pointer 410 is advanced or updated to point to or indicate the next available block in partition 406 for writing data, in order to track the next write start point (i.e., the completion point of a previous write is equal to the start point of a subsequent write). Therefore, the write pointer 410 indicates where subsequent writes to partition 406 will begin. A subsequent write command is a "partition append" command, in which the data associated with the subsequent write command is appended to partition 406 at the location indicated by the write pointer 410 as the next start point. A sorted list of LBAs within partition 406 can be stored for write sorting. Each partition 406 can have its own write pointer 410. Therefore, when a write command is received, partition 406 is identified by its ZSLBA, and the write pointer 410 determines the position where the write of data within the identified partition 406 begins.

[0055] Figure 4B Showing the target Figure 4A State diagram 450 of the ZNS 402. In state diagram 450, each partition can be in different states, such as empty, active, full, or offline. When a partition is empty, it contains no data (i.e., any erase blocks in the partition do not currently store data), and the write pointer is at ZSLBA (i.e., WP = 0). Once a write is made to the partition scheduler 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 partitions between the partition open and partition closed states (both active states). If a partition is active, it includes writable open blocks, and a description of the recommended time for the active state can be provided to the host by the ZM or the controller. The controller may include the ZM.

[0056] The term "write" includes programming user data on zero or more word lines in an erase block, or on partially filled word lines in an erase and / or erase block, when user data has not filled all available word lines. The term "write" may also include closing a partition for reasons such as: internal drive processing needs (due to open block data retention issues caused by erroneous bits accumulating faster on open erase blocks), storage device 400 closing a partition due to resource constraints (such as too many open partitions to trace or a discovered defective state), or host device closing a partition due to issues such as no more data to send to the drive, computer shutdown, error handling on the host, limited host resources for tracing, etc.

[0057] Active partitions 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 write commands or partition append commands can be programmed into an open erase block that is not currently filled with previous data. New data pulled from the host device or valid data being relocated can be written to an open partition. Valid data can be moved from one partition (e.g., first partition 402a) to another partition (e.g., third partition 402c) for garbage collection purposes. A closed partition is an empty or partially filled partition that is not currently receiving continuous writes from the host. Moving a partition from an open state to a closed state allows the controller 408 to reallocate resources to other tasks. These tasks may include, but are not limited to, other open partitions, other regular non-partitioned areas, or other controller requirements.

[0058] In open and closed partitions, the write pointer points to a position within the partition between the ZSLBA and the end of the partition's last LBA (i.e., WP > 0). The active partition can switch between open and closed states as specified by ZM, or this switching occurs when writes are scheduled to the partition. Additionally, ZM can reset the active partition to clear or erase the data stored in it, causing the partition to switch back to an empty partition. Once the active partition is full, it switches to a full state. A full partition is one completely filled with data, and there are no more available sectors or LBAs for writing data (i.e., WP = partition capacity (ZCAP)). Read commands for data stored in a full partition can still be executed.

[0059] ZM can reset a full partition, thus scheduling the erasure of data stored on that partition and causing it to switch 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 on that partition may not be immediately erased. However, the reset partition must be erased before switching to the active partition. Partitions can be erased at any time between a ZM reset and a ZM open. Offline partitions are partitions where data cannot be written. Offline partitions can be full, empty, or partially full but not active.

[0060] Since resetting a partition erases the data stored in the partition or schedules the erasure of data stored in the partition, the need for garbage collection of individual erase blocks is eliminated, thereby improving the overall garbage collection process of storage device 400. Storage device 400 may mark one or more erase blocks for erasure. When a new partition is about to be formed and storage device 400 anticipates that the ZM (Zero Mode Management) will be open, one or more erase blocks marked for erasure may be erased. Storage device 400 may also determine and create the physical backing for the partition when erasing the erase block. Therefore, once a new partition is opened and an erase block is selected to form the partition, that erase block will be erased. Furthermore, each time a partition is reset, a new order of LBA (Local Base Bar) and write pointer 410 for partition 406 may be selected, allowing partition 406 to tolerate out-of-order command reception. Write pointer 410 may optionally be turned off, allowing commands to be written to any starting LBA indicated by the command.

[0061] Re-reference Figure 4AWhen the host sends a write command to write data to partition 406, controller 408 pulls the write command and identifies it as a write to the newly opened partition 406. Controller 408 selects a set of exponents (EBs) to store the data associated with the write command to the newly opened partition 406, and the newly opened partition 406 becomes the active partition 406. As used herein, controller 408 initiating, receiving, or pulling a write command includes receiving the write command or directly reading it via DMA. The write command can be a command to write new data or a command to move valid data to another partition for garbage collection purposes. Controller 408 is configured to read new commands via DMA from a commit queue filled by the host device.

[0062] In an empty partition 406 that has just been switched to active partition 406, data begins to be written to partition 406 at ZSLBA because the write pointer 410 indicates the logical block associated with ZSLBA as the first available logical block. This data may be written to one or more erase blocks or to a NAND location already allocated for the physical location of partition 406. After the data associated with the write command is written to partition 406, the write pointer 410 is updated to point to the next available block in partition 406 to track the next start point of the write (i.e., the completion point of the first write). Alternatively, the controller 408 may select the active partition for writing data. In the active partition, data is written to the logical block indicated by the write pointer 410 as the next available block.

[0063] For example, controller 408 may receive a first write command or a first partition append command or pull the first write command into third partition 406c. The host sequentially identifies which logical block of partition 406 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 one or more available LBAs in third partition 406c as indicated by write pointer 410, and write pointer 410 is advanced or updated to point to the next available LBA available for host writing (i.e., WP > 0). If controller 408 receives a second write command or pulls a second write command into third partition 406c, the data associated with the second write command is written to the next one or more available LBAs in third partition 406c identified by write pointer 410. Once the data associated with the second command has been written to third partition 406c, write pointer 410 is again advanced or updated to point to the next available LBA available for host writing. Resetting partition 406c moves write pointer 410 back to Z. c SLBA (i.e., WP=0), and partition 406c is switched to an empty partition.

[0064] Figure 5AThis is a schematic diagram of a ZNS 500 storage device for storing data according to one implementation scheme. Figure 5B This illustrates writing data to according to one implementation scheme. Figure 5A The flowchart of method 575 for ZNS 500. The storage device (not shown) may be... Figure 1 Storage device 106 Figure 2 storage device 206 or Figure 4A The storage device 400. The controller of the storage device can be... Figure 1 Controller 108 or Figure 4A The controller is 408. The ZNS 500 can be... Figures 4A to 4B The ZNS 402 and ZNS 500 comprise multiple partitions. For example, a first partition 1 502 and a second partition 2 530 are shown. As described above, each partition 502, 530 of the ZNS 500 can include any number of erase blocks. For example, each partition 502, 530 is shown as including 8 erase blocks, but may include additional or fewer erase blocks, such as 64 erase blocks from 32 dies, each with 2 planes. Furthermore, each of the multiple partitions can have the same partition capacity (i.e., the amount of writable capacity used to store data). A partition is an interface description entity and may not have any impact on physical NAND activity. Additionally, the relationship between partitions and physical NAND activity is not required. Therefore, the separation of logical host interface activity from physical device activity can be advantageous for the efficiency of the storage device.

[0065] In the following figures and corresponding descriptions, data is represented by "Dxx", where "x" represents the write ID of the associated command. Furthermore, padding data or dummy data is represented by "DUMMYxx", where "x" represents the padding or pseudo-write ID. (See also...) Figure 5A Using ZNS 500 to describe Figure 5B Method 575. In Figures 5A to 7B In this context, the term "DUMMY" data can refer to any data input to fill a partition to its capacity. Dummy data or padding data can be any dataset that the controller identifies as not user data, XOR or parity data, metadata, or any other available data not listed. Some options for dummy data or padding data are sets of 0s, sets of 1s, specially selected flag values ​​with meaning (i.e., for dummy data or padding data), such as internal driver code indicating "no data written," randomly written data, or any data previously listed using scrambling or encryption algorithms. These various options for dummy data or padding data can be used to enhance debugging capabilities.

[0066] At box 572, the storage device (such as the storage device controller) is connected from the host (such as... Figure 2The host (204) receives one or more first commands to write data D00 504, D01 506, D02 508, and D03 510 to the first partition 502. At box 574, the data associated with one or more first commands D00 504, D01 506, D02 508, and D03 510 is then written to the first portion 520 of the first partition 502. At box 576, the controller determines that a predetermined amount of time has elapsed since the command to write data to the first partition 502 was received. At box 578, the currently empty second portion 522 of the first partition 502 is then temporarily filled with padding or virtual datasets DUMMY01 512, DUMMY02 514, DUMMY03 516, and DUMMY04 518 to fill the first partition 502 to its capacity. Fill the first partition 502 with virtual data DUMMY01 512, DUMMY02 514, DUMMY03 516, and DUMMY04 518 to switch the first partition 502 to both the off and active states. The term "DUMMY" data can refer to any data entered to fill the first partition 502 to its capacity, as described above.

[0067] The controller of the storage device may include a timer or other mechanism to determine when a predetermined amount of time has elapsed or expired (e.g., to time or track the amount of time a partition has been in an open state). The timer may be configured to expire after the predetermined amount of time to trigger partition filling due to the risk of bit error accumulation caused by the previously characterized open EB time. The relationship between the EB open time and the previously accumulated programming bit error accumulation may or may not be a function of the open EB time (i.e., it may be the time from erasing the EB to fully programming the EB). The predetermined amount of time may be based on the flash memory type of the first partition 502 (e.g., SLC, MLC, TLC, QLC, or other iterations of multi-level cells). For example, the predetermined amount of time for QLC may range from, but is not limited to, about 15 minutes to about three days. In another example, TLC may have a predetermined amount of time from, but is not limited to, about one day to about seven days. Therefore, the predetermined amount of time may be between about 15 minutes and about seven days or longer. These predetermined times may include a threshold for acceptable bit error rate accumulation during the period when the EB is in a partially filled state. The predetermined time may include increased levels of complexity, such as different time lengths characterizing different amounts of partially written data in the EB. Such a timeframe should not be considered restrictive, but rather should be generally accepted by the industry.

[0068] If the first partition 502 is not filled after the predetermined time has elapsed or expired, data reliability may be reduced due to the open state of the first partition 502. Exposure of data in an open partition may potentially lead to the accumulation of bit errors. The accumulation of bit errors may potentially lead to data loss in the partition. A reduction in the time partitions are open and active reflects greater reliability in NVM.

[0069] At box 580, the storage device receives from the host device one or more second commands to write data D04 524, D05 526, D06 528, and D07 532 to the first partition 502. At box 582, then, when one or more second commands are received because the first partition 502 is at its partition capacity, the second partition 530 is allocated and opened. If the second partition 530 is currently storing old or obsolete data, erase blocks in the second partition 530 can be erased before writing the data associated with one or more second commands D04 524, D05 526, D06 528, and D07 532. The data associated with one or more second commands D04 524, D05 526, D06 528, and D07 532 is then written to the first portion 534 of the second partition 530.

[0070] At box 584, data associated with one or more first commands D00 504, D01 506, D02 508, D03 510 is rewritten to the second portion 536 of the second partition 530. Therefore, the second partition 530 is filled to its capacity with data associated with one or more first commands D00 504, D01 506, D02 508, D03 510 and data associated with one or more second commands D04 524, D05 526, D06 528, D07 532.

[0071] When rewriting data associated with one or more first commands D00 504, D01 506, D02 508, D03 510 to the second portion 536 of the second partition 530, the first partition 502 can be erased at box 586. The first partition 1 502 can then be allocated back to the available resource pool. The end result is that the second partition 2 530 is filled to its partition capacity.

[0072] Figure 6A This is a schematic diagram of a ZNS 600 storage device for storing data according to another embodiment. Figure 6B This illustrates writing data to according to one implementation scheme. Figure 6A The flowchart of method 675 of ZNS 600. The storage device (not shown) may be... Figure 1 Storage device 106 Figure 2 storage device 206 or Figure 4A The storage device 400. The controller of the storage device can be... Figure 1 Controller 108 or Figure 4A The controller is 408. The ZNS 600 can be... Figures 4A to 4B The ZNS 402. The ZNS 600 includes multiple partitions. For example, a first partition 1 602, a second partition 2 630, and a third partition 3 650 are shown. As described above, each partition 602, 630, 650 is shown as including 8 erase blocks, but may include additional or fewer erase blocks, such as 64 erase blocks from 32 dies, each with 2 planes. Additionally, each of the multiple partitions may have the same partition capacity (i.e., the amount of writable capacity used to store data). (See reference...) Figure 6A Using ZNS 600 to describe Figure 6B Method 675.

[0073] At box 672, the storage device (such as the storage device controller) is connected from the host (such as...) Figure 2 The host (204) receives one or more first commands to write data D00 604, D01 606, D02 608, and D03 610 to the first partition 602. The data associated with one or more first commands D00 604, D01 606, D02 608, and D03 610 is then written to the first portion 620 of the first partition 602. At box 674, the controller determines that a predetermined amount of time has elapsed since the command to write data to the first partition 602 was received. The currently empty second portion 622 of the first partition 602 is then temporarily filled with padding or virtual datasets DUMMY01 612, DUMMY02 614, DUMMY03 616, and DUMMY04 618 to fill the first partition 602 to its capacity. Fill the first partition 602 with virtual data DUMMY01 612, DUMMY02 614, DUMMY03 616, and DUMMY04 618. Switch the first partition 602 to both closed and active states. The term "DUMMY data" can refer to any data entered to fill the partition to its capacity, as described above.

[0074] The controller of the storage device may include a timer or other mechanism to determine when a predetermined amount of time has elapsed or expired (e.g., to time or track the amount of time a partition has been in an open state). The timer may be configured to expire after the predetermined amount of time to trigger partition filling due to the risk of bit error accumulation caused by the previously characterized open EB time. The relationship between the EB open time and the previously accumulated programming bit error accumulation may or may not be a function of the open EB time (i.e., the time from erasing the EB to fully programming the EB). The predetermined amount of time may be based on the flash memory type of the first partition 602 (e.g., SLC, MLC, TLC, QLC, or other iterations of multi-level cells), such as between approximately 15 minutes and approximately seven days or longer. These predetermined times may include a threshold for acceptable bit error rate accumulation during the period when the EB is in a partially filled state. The predetermined time may include increased levels of complexity, such as different time lengths characterizing different amounts of partially written data in the EB. Such predetermined time amounts should not be considered restrictive but should be generally accepted in the industry.

[0075] If the first partition 602 is not filled after the predetermined time has elapsed or expired, data reliability may be reduced due to the open state of the first partition 602. Exposure of data in an open partition may potentially lead to the accumulation of bit errors. The accumulation of bit errors may potentially lead to data loss in the partition. A reduction in the time partitions are open and active reflects greater reliability in NVM.

[0076] At box 676, the storage device receives from the host device one or more second commands to write data D04 624, D05 626, and D06 628 to the first partition. Then, when one or more second commands are received because the first partition 602 is at its partition capacity, the second partition 630 is allocated and opened. If the second partition 630 is currently storing old or obsolete data, erase blocks in the second partition 630 can be erased before writing the data associated with the one or more second commands D04 624, D05 626, and D06 628. The data associated with the one or more second commands D04 624, D05 626, and D06 628 is then written to the first portion 642 of the second partition 630.

[0077] At box 678, the controller determines that a predetermined amount of time has elapsed since receiving the command to write data to either the first partition 602 or the second partition 630. In one embodiment, the predetermined amount of time at box 674 is the same as the predetermined amount of time at box 678. In another embodiment, the predetermined amount of time at box 674 is different from the predetermined amount of time at box 678. The currently empty second portion 654 of the second partition 630 is then temporarily filled with the filling datasets DUMMY05 632, DUMMY06 634, DUMMY07 636, DUMMY08 638, and DUMMY09 640 to fill the partition capacity of the second partition 630. Filling the second partition 630 with the virtual data DUMMY05 632, DUMMY06 634, DUMMY07 636, DUMMY08 638, and DUMMY09 640 switches the second partition 630 to both the closed and active states.

[0078] At box 680, the storage device receives one or more third commands from the host device to write data D07 646 to the first partition 602. Then, when one or more third commands are received because both the first partition 602 and the second partition 630 have been filled to their respective partition capacities, the third partition 650 is allocated and opened. If the third partition 650 is currently storing old or obsolete data, erase blocks in the third partition 650 can be erased before writing the data associated with the one or more third commands D07 646. The data associated with the one or more third commands D07 646 is then written to the first portion 652 of the third partition 650.

[0079] At box 682, data associated with one or more first commands D00 604, D01 606, D02 608, D03 610 is optionally rewritten to the second portion 656 of the third partition 650, while data associated with one or more second commands D04 624, D05 626, D06 628 is rewritten to the third portion 658 of the third partition 650. However, the data written to the third partition 650 may be stored out of order (i.e., data associated with one or more third commands D07 646 is stored first, and data associated with one or more second commands D04 624, D05 626, D06 628 is stored last). DRAM (such as Figure 1The volatile memory 112 includes a logic-to-physical (L2P) translation table that can track out-of-order data (e.g., using pointers). In another embodiment, the tracking of data order can be in metadata written to a predetermined location on the physical medium. Therefore, the third partition 650 is filled to its partition capacity with data associated with one or more first commands D00 604, D01 606, D02 608, D03 610, data associated with one or more second commands D04 624, D05 626, D06 628, and data associated with one or more third commands D07 646.

[0080] When data associated with one or more first commands D00 604, D01 606, D02 608, D03 610 is optionally rewritten to the second portion 656 of the third partition 650, the first partition 602 can be erased at box 586. When data associated with one or more second commands D04 624, D05 626, D06 628 is rewritten to the third portion 658 of the third partition 650, the second partition 630 can be erased at box 684. The erased first partition 602 and second partition 630 can be allocated back to the available resource pool. The end result is that the third partition 3 650 is filled to its partition capacity.

[0081] Figure 7A This is a schematic diagram of a ZNS 700 storage device for storing data according to another embodiment. Figure 7B This illustrates writing data to according to one implementation scheme. Figure 7A The flowchart of method 775 of ZNS 700. The storage device (not shown) may be... Figure 1 Storage device 106 Figure 2 storage device 206 or Figure 4A The storage device 400. The controller of the storage device can be... Figure 1 Controller 108 or Figure 4A The controller is 408. The ZNS 700 can be... Figures 4A to 4B The ZNS 402. The ZNS 700 includes multiple partitions. For example, a first partition 1 702, a second partition 2 730, and a third partition 3 740 are shown. As mentioned above, each partition 702, 730, 740 is shown as including 8 erase blocks, but may include additional or fewer erase blocks, such as 64 erase blocks from 32 dies, each with 2 planes. Additionally, each of the multiple partitions may have the same partition capacity (i.e., the amount of writable capacity used to store data). (See reference...) Figure 7A Using ZNS 700 to describe Figure 7B Method 775.

[0082] At box 772, the storage device (such as the storage device controller) is connected from the host (such as...) Figure 2 The host (204) receives one or more first commands to write data D00 704, D01 706, D02 708, and D03 710 to the first partition 702. The data associated with one or more first commands D00 704, D01 706, D02 708, and D03 710 is then written to the first portion 720 of the first partition 702. At box 774, the controller determines that a predetermined amount of time has elapsed since the command to write data to the first partition 702 was received. The currently empty second portion 722 of the first partition 702 is then temporarily filled with padding or virtual datasets DUMMY01 712, DUMMY02 714, DUMMY03 716, and DUMMY04 718 to fill the first partition 702 to its capacity. Fill the first partition 702 with virtual data DUMMY01 712, DUMMY02 714, DUMMY03 716, and DUMMY04 718. Switch the first partition 702 to both closed and active states. The term "DUMMY data" can refer to any data entered to fill the partition to its capacity, as described above.

[0083] The controller of the storage device may include timers or other mechanisms to determine when a predetermined amount of time has elapsed or expired (e.g., to time or track the amount of time a partition has been in an open state). The timer may be configured to expire after the predetermined amount of time to trigger partition filling due to the risk of bit error accumulation caused by the previously characterized open EB time. The relationship between the EB open time and the previously accumulated programming bit error accumulation may or may not be a function of the open EB time (i.e., the time from erasing the EB to fully programming the EB). The predetermined amount of time may be based on the flash memory type of the first partition 702 (e.g., SLC, MLC, TLC, QLC, or other iterations of multi-level cells), such as between approximately 15 minutes and approximately seven days. These predetermined times may include a threshold for acceptable bit error rate accumulation during the period when the EB is in a partially filled state. The predetermined time may include increased levels of complexity, such as different time lengths characterizing different amounts of partially written data in the EB. Such predetermined time amounts should not be considered restrictive but should be generally accepted in the industry.

[0084] If the first partition 702 is not filled after the predetermined time has elapsed or expired, data reliability may be reduced due to the open state of the first partition 702. Exposure of data in an open partition may potentially lead to the accumulation of bit errors. The accumulation of bit errors may potentially lead to data loss in the partition. A reduction in the time partitions are open and active reflects greater reliability in NVM.

[0085] At box 776, the storage device receives from the host one or more second commands to write data D04 724, D05 726, and D06 728 to the first partition 702. Then, when one or more second commands are received because the first partition 702 is filled, the second partition 730 is allocated and opened. If the second partition 730 is currently storing old or obsolete data, erase blocks in the second partition 730 can be erased before writing the data associated with one or more second commands D04 724, D05 726, and D06 728. The data associated with one or more second commands D04 724, D05 726, and D06 728 is then written to the first portion 734 of the second partition 730.

[0086] At box 778, data associated with one or more first commands D00 704, D01 706, D02 708, D03 710 is optionally rewritten to the second portion 736 of the second partition 730. While optionally rewriting data associated with one or more first commands D00 704, D01 706, D02 708, D03 710 to the second portion 736 of the second partition 730, the first partition 702 can be erased at box 778. The erased first partition 702 can be allocated back to the available resource pool.

[0087] At box 780, the controller determines that a predetermined amount of time has elapsed since receiving the command to write data to either the first partition 702 or the second partition 730. In one embodiment, the predetermined amount of time at box 774 is the same as the predetermined amount of time at box 780. In another embodiment, the predetermined amount of time at box 774 is different from the predetermined amount of time at box 780. The currently empty third portion 738 of the second partition 730 is then temporarily filled with either padding or a dummy dataset DUMMY05732 to fill the partition capacity of the second partition 730. The end result is that the second partition 2 730 is filled to its partition capacity. Filling the second partition 730 with the dummy data DUMMY05 732 switches the second partition 730 to both the closed and active states.

[0088] At box 782, the storage device receives one or more third commands to write data D07 742 to the first partition 702. Then, when one or more third commands are received because the first partition 702 has been erased and the second partition 730 has been filled to its capacity, the third partition 740 is allocated and opened. If the third partition 740 is currently storing old or obsolete data, erase blocks in the third partition 740 can be erased before the data associated with one or more third commands D07 742 is written. The data associated with the third command D07 742 is then written to the first portion 744 of the third partition 740.

[0089] At box 784, data associated with one or more first commands D00 704, D01 706, D02 708, D03 710 that have been rewritten to the second portion 736 of the second partition 730, and data associated with one or more second commands D04 724, D05 726, D06 728 that have been written to the first portion 734 of the second partition 730, are optionally rewritten to the second portion 746 of the third partition 740. However, the data written to the third partition 740 may be stored out of order (i.e., data associated with one or more third commands D07 742 is stored first, and data associated with one or more second commands D04 724, D05 726, D06 728 is stored last). DRAM (such as Figure 1 The volatile memory 112 includes a logic-to-physical (L2P) translation table that can track out-of-order data (e.g., using pointers). In another embodiment, the tracking of data order can be in metadata written to a predetermined location on the physical medium. Therefore, the third partition 740 is filled to its partition capacity with data associated with one or more first commands D00 704, D01 706, D02 708, D03 710, data associated with one or more second commands D04 724, D05 726, D06 728, and data associated with one or more third commands D07 742.

[0090] When data associated with one or more first commands D00 704, D01 706, D02 708, D03 710 and data associated with one or more second commands D04 724, D05 726, D06 728 are optionally rewritten to the second portion 746 of the third partition 740, the second partition 730 can be erased at box 784. The erased second partition 730 can be allocated back to the available resource pool. The end result is that the third partition 3 740 is filled to its partition capacity.

[0091] Because there are available erase blocks for data writing, partitions exist in an open state. Partitions that remain open for extended periods can potentially lead to reduced data reliability due to the accumulation of bit errors. Accumulated bit errors can result in data loss within the partition. The amount of time a partition can safely remain open depends on the type of memory cell (e.g., SLC, MLC, TLC, QLC, or other iterations of multi-level cells) and can range from minutes to days. Filling or dummy data can be used to close open partitions, preventing errors from occurring within that partition. Reducing the time partitions remain open and active can lead to greater reliability in NVM.

[0092] In one embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to receive one or more first commands to write data to a first partition of the multiple partitions, wherein data associated with the one or more first commands is written to a first portion of the first partition, and wherein a second portion of the first partition remains available for writing data thereto. The controller is also configured to determine a predetermined amount of time has elapsed since receiving the first command to write data to the first partition and writing virtual data to the second portion of the first partition to fill the partition capacity. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to the first portion of the second partition. The controller is also configured to rewrite the data associated with the one or more first commands written to the first portion of the first partition to the second portion of the second partition.

[0093] After data associated with one or more first commands is rewritten to the second portion of the second partition, the first partition of the media unit is erased. The predetermined time interval is between approximately 15 minutes and approximately 3 days. Alternatively, the predetermined time interval is between approximately 1 day and approximately 7 days. Writing virtual data to the second portion of the first partition switches the first partition to both off and active states. The controller includes a timer that determines when the predetermined time interval has elapsed. Data stored in the third partition is not stored sequentially.

[0094] In another embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to receive one or more first commands to write data to a first partition of the multiple partitions, wherein data associated with the one or more first commands is written to a first portion of the first partition, and wherein a second portion of the first partition remains available for writing data thereto. The controller is also configured to determine that a first predetermined amount of time has elapsed since receiving the first command to write data to the first partition. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to a first portion of the second partition. The controller is also configured to determine that a second predetermined amount of time has elapsed since receiving the second command to write data to the first partition. The controller is further configured to, upon receiving one or more third commands to write data to the first partition, open a third partition and write data associated with the one or more third commands to a first portion of the third partition. The controller is also configured to rewrite data associated with one or more first commands written to a first part of a first partition to a second part of a third partition, and to rewrite data associated with one or more second commands written to a first part of a second partition to a third part of a third partition.

[0095] When it is determined that a first predetermined time period has elapsed, the first partition of the media unit is filled to its capacity by writing virtual data to the second portion of the first partition. When it is determined that a second predetermined time period has elapsed, the first partition of the media unit is filled to its capacity by writing virtual data to the second portion of the second partition. The first and second partitions of the media unit are erased when data associated with one or more first commands is rewritten to the second portion of the third partition and data associated with one or more second commands is rewritten to the third portion of the third partition. The first predetermined time period is the same as the second predetermined time period. The first and second predetermined time periods are between approximately 15 minutes and approximately 7 days. The first predetermined time period is different from the second predetermined time period.

[0096] In another embodiment, the storage device includes a media unit, wherein the capacity of the media unit is divided into multiple partitions. The media unit includes multiple dies, and each of the multiple dies includes multiple erase blocks. The storage device also includes a controller coupled to the media unit. The controller is configured to write data associated with one or more first commands to a first portion of the first partition. A second portion of the first partition remains available for writing data thereto. The controller is also configured to write virtual data to the second portion of the first partition to fill the first partition to its capacity. The controller is further configured to, upon receiving one or more second commands to write data to the first partition, open the second partition and write data associated with the one or more second commands to the first portion of the second partition. The controller is also configured to rewrite the data associated with the one or more first commands written to the first portion of the first partition back to the second portion of the second partition. The controller is further configured to, after a second timer expires, write virtual data to a third portion of the second partition to fill the second partition to its capacity. The controller is also configured to, upon receiving one or more third commands to write data to the first partition, open the third partition and write data associated with the one or more third commands to the first portion of the third partition. The controller is further configured to rewrite data associated with one or more first commands written to a second part of a second partition to a second part of a third partition, and to rewrite data associated with one or more second commands written to a first part of a second partition to a third part of a third partition.

[0097] After data associated with one or more first commands is rewritten to the second portion of the second partition, the first partition of the media unit is erased. The second partition of the media unit is erased while data associated with one or more first commands is rewritten to the second portion of the third partition and data associated with one or more second commands is rewritten to the third portion of the third partition. A timer is set to expire after a predetermined time period, which is between approximately 15 minutes and approximately 7 days. Writing virtual data to the second portion of the first partition switches the first partition to a closed and active state. Writing virtual data to the third portion of the second partition switches the second partition to a closed and active state. Rewriting data associated with one or more first commands to the second portion of the third partition, and rewriting data associated with one or more second commands to the third portion of the third partition, such that the data written to the third partition is stored out of order.

[0098] While the foregoing describes embodiments of this disclosure, other and additional embodiments of this disclosure may be contemplated without departing from the basic scope of this disclosure, the scope of which is defined by the appended claims.

Claims

1. A storage device, comprising: a media unit, wherein a capacity of the media unit is divided into a plurality of zones, and wherein the media unit comprises a plurality of dies, each of the plurality of dies comprising a plurality of erase blocks; and a controller coupled to the media unit, the controller configured to: receive one or more first commands to write data to a first zone of the plurality of zones, wherein the data associated with the one or more first commands is written to a first portion of the first zone, and wherein a second portion of the first zone remains available to write data thereto; determine that a predetermined amount of time has elapsed since receiving a first command to write data to the first zone; write dummy data to the second portion of the first zone to fill the first zone to a zone capacity; upon receiving one or more second commands to write data to the first zone, open a second zone and write the data associated with the one or more second commands to a first portion of the second zone; and re-write the data associated with the one or more first commands written to the first portion of the first zone to a second portion of the second zone.

2. The storage device of claim 1, wherein the first zone is erased after re-writing the data associated with the one or more first commands to the second portion of the second zone.

3. The storage device of claim 1, wherein the predetermined amount of time is between 15 minutes and 3 days.

4. The storage device of claim 1, wherein the predetermined amount of time is between 1 day and 7 days.

5. The storage device of claim 1, wherein writing the dummy data to the second portion of the first zone switches the first zone to a closed and active state.

6. The storage device of claim 1, wherein the controller comprises a timer, and wherein the timer determines that the predetermined amount of time has elapsed.

7. The storage device of claim 1, wherein the data stored in the first zone is not stored in order.

8. A storage device, comprising: a media unit, wherein a capacity of the media unit is divided into a plurality of zones, and wherein the media unit comprises a plurality of dies, each of the plurality of dies comprising a plurality of erase blocks; and a controller coupled to the media unit, the controller configured to: receive one or more first commands to write data to a first zone of the plurality of zones, wherein the data associated with the one or more first commands is written to a first portion of the first zone, and wherein a second portion of the first zone remains available to write data thereto; determine that a first predetermined amount of time has elapsed since receiving a first command to write data to the first zone; opening a second partition and writing the data associated with the one or more second commands to a first portion of the second partition upon receiving one or more second commands to write data to the first partition; determining that a second predetermined amount of time has elapsed since receiving a second command to write data to the first partition; opening a third partition and writing the data associated with the one or more third commands to a first portion of the third partition upon receiving one or more third commands to write data to the first partition; and re-writing the data associated with the one or more first commands written to the first portion of the first partition to a second portion of the third partition and re-writing the data associated with the one or more second commands written to the first portion of the second partition to a third portion of the third partition.

9. The storage device of claim 8, wherein the controller is further configured to, upon determining that the first predetermined amount of time has elapsed, write dummy data to the second portion of the first partition to fill the first partition to a partition capacity.

10. The storage device of claim 8, wherein the controller is further configured to, upon determining that the second predetermined amount of time has elapsed, write dummy data to a second portion of the second partition to fill the second partition to a partition capacity.

11. The storage device of claim 8, wherein the controller is further configured to, upon re-writing the data associated with the one or more first commands to the second portion of the third partition and re-writing the data associated with the one or more second commands to the third portion of the third partition, erase the first partition and the second partition.

12. The storage device of claim 8, wherein the first predetermined amount of time is the same as the second predetermined amount of time.

13. The storage device of claim 12, wherein the first predetermined amount of time and the second predetermined amount of time are between 15 minutes and 7 days.

14. The storage device of claim 8, wherein the first predetermined amount of time is different than the second predetermined amount of time.

15. A storage device, comprising: a media unit, wherein a capacity of the media unit is divided into a plurality of partitions, and wherein the media unit comprises a plurality of dies, each die of the plurality of dies comprising a plurality of erase blocks; and a controller coupled to the media unit, the controller configured to: write data associated with one or more first commands to a first portion of a first partition, and wherein a second portion of the first partition remains available for writing data thereto; upon a first expiration of a timer, write dummy data to the second portion of the first partition to fill the first partition to a partition capacity; opening a second partition and writing the data associated with the one or more second commands to a first portion of the second partition upon receiving one or more second commands to write data to the first partition; re-writing the data associated with the one or more first commands written to the first portion of the first partition to a second portion of the second partition; upon the timer expiring a second time, writing dummy data to a third portion of the second partition to fill the second partition to a partition capacity; opening a third partition and writing the data associated with the one or more third commands to a first portion of the third partition upon receiving one or more third commands to write data to the first partition; and re-writing the data associated with the one or more first commands written to the second portion of the second partition to a second portion of the third partition and re-writing the data associated with the one or more second commands written to the first portion of the second partition to a third portion of the third partition.

16. The storage device of claim 15, wherein the controller is further configured to erase the first partition upon re-writing the data associated with the one or more first commands to the second portion of the second partition.

17. The storage device of claim 15, wherein the controller is further configured to erase the second partition upon re-writing the data associated with the one or more first commands to the second portion of the third partition and re-writing the data associated with the one or more second commands to the third portion of the third partition.

18. The storage device of claim 15, wherein the timer is set to expire after a predetermined amount of time, and wherein the predetermined amount of time is between 15 minutes and 7 days.

19. The storage device of claim 15, wherein writing the dummy data to the second portion of the first partition switches the first partition to a closed and active state, and wherein writing the dummy data to the third portion of the second partition switches the second partition to the closed and active state.

20. The storage device of claim 15, wherein re-writing the data associated with the one or more first commands to the second portion of the third partition and re-writing the data associated with the one or more second commands to the third portion of the third partition causes the data written to the third partition to be stored out of order. ​

Citation Information

Patent Citations

  • Method and apparatus for storing data in a flash memory data storage device

    CN102428453A

  • Intra-zone wear leveling for heat-assisted magnetic recording-shingled magnetic recording (HAMR-SMR) type storage devices

    CN105938421A