Partitioned append command scheduling based on partition state
By prioritizing partitions based on their status and age within a Partition Namespace (ZNS) environment and scheduling partition-attached commands, the complexity of open partition management is addressed, improving device performance and efficiency while reducing latency and cost.
Patent Information
- Application Number
- CN202080081489.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-04-10
- Filing Date
- 2020-12-11
- Publication Date
- 2026-02-27
- Estimated Expiration
- 2040-12-11
AI Technical Summary
In a partitioned namespace (ZNS) environment, the management of open partitions becomes more complex, leading to more complex device designs and reduced performance. Existing technologies struggle to effectively schedule additional commands for partitions.
By determining partition priorities based on partition status and age, and scheduling additional commands for partitions, efficient partition management is achieved to ensure that high-priority partitions are processed first.
It improves device performance and efficiency, reduces device-side write amplification, extends device life, and reduces latency and cost.
Smart Images

Figure CN114746834B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This application claims priority to U.S. Application No. 16 / 845685, filed April 10, 2020, the entire contents of which are incorporated herein by reference. Background Technology Technical Field
[0004] The implementation scheme disclosed herein relates to scheduling additional commands for partition namespaces (ZNS).
[0005] Description of the Related Art
[0006] Partition Namespaces (ZNS) represent a new direction in the storage field, where data storage devices are restricted to partitions with write order. ZNS aims to reduce device-side write amplification and over-provisioning by aligning host write patterns with internal device geometry and reducing the need for device-side writes that are not directly linked to host writes.
[0007] ZNS offers numerous benefits, including: reduced costs due to minimal DRAM requirements per SSD; potential savings due to reduced need for over-provisioning of NAND media; better SSD lifespan through reduced write amplification; significantly reduced latency; significantly improved throughput; and a standardized interface for enabling robust software and hardware external systems.
[0008] In a ZNS environment, multiple partitions can be opened simultaneously. Generally, more open partitions mean a more complex design. Having a large number of open partitions in parallel complicates implementation. One example is XOR management. Each open partition has a dedicated XOR buffer, and therefore many open partitions require more XOR buffers that cannot typically be stored in SRAM. In some cases, storage devices need to fold the buffers into DRAM and NAND, which complicates the design and degrades performance.
[0009] Therefore, there is a need in the art for ZNS devices with more efficient management of open partitions. Summary of the Invention
[0010] This disclosure relates overall to scheduling partition append commands for a partition namespace (ZNS). Partition append commands are scheduled in the most efficient manner possible, consistent with open partitions in the ZNS, rather than being executed sequentially or randomly. Partition priority is determined based on the length of time a partition has been open along with its partition state. Generally, older and / or fuller partitions have higher priority. Once partition priorities are established, partition append commands are scheduled to ensure that append commands for high-priority partitions are processed first, allowing open partitions to be filled before they are closed.
[0011] In one embodiment, a data storage device includes: a memory device; and a controller coupled to the memory device, wherein the controller is configured to: determine a state of at least one zone in a zone namespace (ZNS) environment; determine an age of the at least one zone in the ZNS environment; calculate a priority of the at least one zone based on the determined state and the determined age; and process a zone append command based on the calculated priority.
[0012] In another embodiment, a data storage device includes: a memory device; and a controller coupled to the memory device, wherein the controller includes: a command extractor; a command executor; a flash interface module coupled to the memory device; and a zone append command scheduler coupled to the command extractor, the command executor, and the flash interface module.
[0013] In another embodiment, a data storage device includes: a memory device; a controller coupled to the memory device; and means for scheduling a zone append command based on an age of an open zone and a fullness of an open zone in a zone namespace (ZNS) environment. BRIEF DESCRIPTION OF DRAWINGS
[0014] So that the manner in which the above recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, can be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure can admit to other equally effective embodiments.
[0015] Figure 1 is a schematic block diagram of a storage system showing a storage device having a storage device that can be used as a host device in accordance with one or more techniques of the present disclosure.
[0016] Figure 2A is a schematic diagram of device control for a conventional SSD.
[0017] Figure 2B is a schematic diagram of device control for a ZNS SSD in accordance with an embodiment.
[0018] Figure 3 is a schematic diagram of a zone append command.
[0019] Figure 4 is a schematic diagram of a state diagram for a ZNS SSD in accordance with an embodiment.
[0020] Figure 5 is a schematic diagram of a zone append scheduling according to one embodiment.
[0021] Figure 6 is a schematic diagram of a zone append command scheduler according to one embodiment.
[0022] Figure 7 is a schematic block diagram illustrating a storage system according to one embodiment.
[0023] Figure 8 is a graph illustrating zone append command priority based on zone state.
[0024] To facilitate an understanding of this description, like reference characters are used to identify like elements throughout the service figures. It is contemplated that elements disclosed in one embodiment can be advantageous for use in other embodiments without specific recitation. DETAILED DESCRIPTION
[0025] 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 particularly described embodiments. On the contrary, any combination of the following features and elements, whether related to different embodiments or not, can be utilized to realize and practice the present disclosure. In addition, although 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, reference to “the present disclosure” should not be construed as an identification of any one or all of the inventive subject matter disclosed herein, and should not be construed as a limitation of the elements or scope of the appended claims, unless specifically recited in such a limitation.
[0026] The present disclosure generally relates to scheduling zone append commands for zone namespace (ZNS). Zone append commands are scheduled in the most efficient way possible in line with open zones of ZNS, rather than taking zone append commands in order or randomly. Zone priority is determined based on how long a zone has been open along with the length of time the zone has been open. Generally, older and / or fuller zones increase priority. Once zone priority is established, zone append commands are scheduled to ensure that zone append commands for high priority zones are processed first, so that open zones can be filled before being closed.
[0027] Figure 1is a schematic block diagram illustrating a storage system 100 in accordance with one or more techniques of this disclosure, in which a data storage device 106 can be used as a storage device for a host device 104. For example, the host device 104 can utilize NVM 110 included in the data storage device 106 to store and retrieve data. The host device 104 includes host DRAM 138. In some examples, the storage system 100 can include multiple storage devices, such as data storage device 106, which can operate as a storage array. For example, the storage system 100 can include multiple data storage devices 106 configured to collectively operate as a redundant array of inexpensive / independent disks (RAID) for a mass storage device for the host device 104.
[0028] The storage system 100 includes a host device 104 that can store data to and / or retrieve data from one or more storage devices, such as data storage device 106. As shown, the host device 104 can communicate with the data 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” pad, a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, etc. Figure 1
[0029] The data storage device 106 includes a controller 108, a non-volatile memory 110 (NVM 110), a power supply 111, a volatile memory 112, an interface 114, and a write buffer 116. In some examples, the data storage device 106 can include additional components not shown in FIG. 1 for the sake of clarity. For example, the data storage device 106 can include a printed circuit board (PCB) to which the components of the data storage device 106 are mechanically attached, and which includes electrically interconnecting conductive traces of the components of the data storage device 106, etc. In some examples, the physical size and connector configuration of the data 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, the data storage device 106 can be directly coupled (e.g., directly soldered) to a motherboard of the host device 104. Figure 1
[0030] The interface 114 of the data storage device 106 can include one or both of a data bus for exchanging data with the host device 104 and a control bus for exchanging commands with the host device 104. The interface 114 can operate according to any suitable protocol. For example, the 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 and PCIe, Non-Volatile Memory express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), etc. Electrical connections of the interface 114 (e.g., the data bus, the control bus, or both) are electrically connected to the controller 108, providing electrical connections between the host device 104 and the controller 108, allowing data to be exchanged between the host device 104 and the controller 108. In some examples, the electrical connections of the interface 114 can also allow the data storage device 106 to receive power from the host device 104. For example, as shown in FIG. 1, the power supply 111 can receive power from the host device 104 via the interface 114. Figure 1
[0031] The data storage device 106 includes the NVM 110, which can include a plurality of memory devices or storage 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.).
[0032] 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.
[0033] The NVM 110 can include a plurality of flash memory devices or storage units. The flash memory devices can include NAND or NOR based flash memory devices and can store data based on charge contained in a floating gate of a transistor for each flash memory cell. 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 single-level cell (SLC), multi-level cell (MLC), triple-level cell (TLC), or 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.
[0034] The data storage device 106 includes a power source 111, which can provide power to one or more components of the data 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.
[0035] The data 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 Figure 1As 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, etc.).
[0036] Data storage device 106 includes a controller 108, which can manage one or more operations of data storage device 106. For example, controller 108 can manage reading data from NVM 110 and / or writing data to the NVM. In some embodiments, when data storage device 106 receives a write command from host device 104, controller 108 can initiate a data storage command to store data to the 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 the at least one operational characteristic to the NVM 110. In some embodiments, when data storage device 106 receives a write command from host device 104, controller 108 temporarily stores data associated with the write command in an internal memory or write buffer 116 before sending the data to NVM 110.
[0037] Figure 2A and Figure 2B is a schematic diagram of device control for an SSD according to various embodiments. In one embodiment, Figure 2A and Figure 2B The flash device of Figure 1 NVM 110 of data storage device 106 of Figure 2A and Figure 2B The flash device of Figure 2A and Figure 2B Each square of the block storage device of
[0038] Figure 2Ais a diagram of device control for a traditional SSD. The SSD receives data from multiple applications such as application 1, application 2, and application 3. The data is stored in the flash memory of the SSD. In the SSD, the storage device controls data placement. Data is written to the flash memory in order such that data from each application can be written in the order the data was received. Because data from each application can be random throughout the order writes, latency can increase and throughput can be impeded.
[0039] Figure 2B is a diagram of device control for a ZNS SSD. Similar to Figure 2A , the SSD receives data from multiple applications such as application 1, application 2, and application 3. The data is stored in the flash memory of the SSD. In the SSD, the application or host (such as Figure 1 host device 104) controls data placement in the partition. The flash memory of the SSD is divided into various equal capacity partitions. These partitions can be viewed as parallel units where the host device 104 can direct workloads or data to a specific parallel unit (i.e., the host has block access to the flash memory). For example, data associated with application 1 is located in the first partition, while data associated with application 2 is located in the second partition, and data associated with application 3 is located in the third partition. Due to partition provisioning, latency is reduced relative to latency of traditional SSD device control and throughput is improved relative to throughput of traditional SSD device control.
[0040] Figure 3 is a diagram of a partition append command. The host (such as Figure 1 host device 104) opens a partition implicitly or explicitly. The host device 104 issues several partition append commands to the same address. The storage device (such as Figure 1 data storage device 106) is responsible for filling data from the host device 104 and informing the host device 104 of where each command accurately wrote data within the partition. The location of the data written to the NVM (such as Figure 1 NVM 110) is stored within a logical to physical (L2P) table in volatile memory (such as Figure 1 volatile memory 112 and NVM 110). The L2P table includes pointers to one or more logical block addresses (LBAs) where data, such as user data, is stored.
[0041] As Figure 3As shown, each block in the partition is 4K in size. The term "block" is used for example purposes and is not limited to 4K in size. The data storage device 106 receives three write commands (i.e., three partition append commands) in the order of 4K WriteO, 8K Write1, and 16K Write2. Further, the write pointer (WP) of the partition corresponds to the next available location for a write command. In Figure 3 4K WriteO is written to the first block and the new write pointer location is at the beginning of the second block (i.e., at the 4K size location in the partition). After WriteO is written to the first block, 8K Write1 is written to the next available block, thus occupying the next two blocks (i.e., two 4K size blocks). The write pointer is updated to reflect the 16K size location of the partition for the next write command. The last 16K Write2 command is written to the next four blocks (i.e., four 4K size blocks). The write pointer is updated to reflect a total partition size of 28K, where the next write command will be written to the 28K size location. At each location, the L2P table is updated using the relevant pointers pointing to each block or each write command. Although exemplified in the above order, the write commands received simultaneously can be written sequentially in any order (i.e., out of order) such that Write2 can be written in the partition before WriteO due to the ZNS environment.
[0042] Figure 4 is a schematic diagram of a state diagram of a ZNS SSD according to one embodiment. In Figure 4 the various partition states (ZS) are empty (i.e., ZSE: Empty), implicitly open (i.e., ZSIO: Implicit Open), explicitly open (i.e., ZSEO: Explicit Open), closed (i.e., ZSC: Closed), full (i.e., ZSF: Full), read-only (i.e., ZSRO: Read-Only), and offline (i.e., ZSO: Offline). The general flow path of a partition can be from the empty state to the open state, which can be either implicitly open or explicitly open. From the open state, the partition can be at full capacity such that the ZNS is full. After the full state, the partition contents can be erased, which resets the ZNS to empty.
[0043] After a controller (such as the controller 108 of Figure 1 is powered on or a reset event, the initial state of each partition is determined by the partition characteristics of each partition. For example, the partition state ZSE: Empty is represented by a valid write pointer (WP) pointing to the lowest LBA in the partition (i.e., the beginning LBA of the partition). The partition state ZSC: Closed is represented by a WP that does not point to the lowest LBA in the partition. The partition state ZSF: Full is the initial state when the most recent partition condition was full. The partition state ZSRO: Read-Only is the initial state when the most recent partition condition was read-only. The partition state ZSO: Offline is the initial state when the most recent partition condition was offline.
[0044] The partition can have any total capacity or total size, such as 256 MiB or 512 MiB. However, a small portion of each partition can not be accessible to write data to, but can still be read, such as the portion of each partition storing XOR data, metadata, and one or more excluded erase blocks. For example, if the total capacity of a partition is 512 MiB, then the zone capacity (ZCAP) can be 470 MiB, which is the capacity available to write data to, and 42 MiB is not available to write data to. The ZCAP of a partition is equal to or less than the total partition storage capacity or total partition storage size. A data storage device, such as Figure 1 data storage device 106 or Figure 2B SSD, can determine the ZCAP of each partition at a partition reset. For example, a controller, such as Figure 1 controller 108, can determine the ZCAP of each partition. The storage device can determine the ZCAP of a partition when the partition is reset.
[0045] When a partition is empty (i.e., ZSE: empty), the partition contains no data (i.e., none of the erase blocks in the partition currently store data), and the write pointer (WP) is at the beginning LBA of the partition (ZSLBA) (i.e., WP = 0). The ZSLBA refers to the beginning of the partition (i.e., the first NAND location of the partition). The write pointer indicates where data is written in the partition of the storage device. Once a write is scheduled to the partition or a partition open command is issued by the host (i.e., ZSIO: implicit open or ZSEO: explicit open), the empty partition will switch to an open and active partition. Partition management (ZM) commands can be used to move a partition between a partition open and a partition closed state (both active states). If a partition is active, the partition includes open blocks that can be written to, and the host can be provided a description of the recommended time in active state. The controller 108 includes ZM (not shown). Partition metadata can be stored in the ZM and / or the controller 108.
[0046] 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 NAND locations can be flash locations, as mentioned in Figure 2A and Figure 2B The term “write” can further include moving a partition to a full (i.e., ZSF: full) state due to internal drive processing needs (open block data preservation issues because error bits accumulate faster on open erase blocks), the data storage device 106 closing or filling a partition due to resource limitations (like too many open partitions to track or find defect states, etc.), or the host device, such as Figure 1The host device 104 closes a zone because of issues such as no more data to send to the drive, computer shutdown, error handling on the host, limited host resources for tracking, etc.
[0047] An active zone can be open (i.e., ZSIO: implicit open or ZSEO: explicit open) or closed (i.e., ZSC: closed). An open zone is an empty zone or a partially filled zone that is ready for writes and has currently allocated resources. Data received from the host device with a write command or zone append command can be programmed to open erase blocks that are not currently filled with prior 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 108 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.
[0048] In open and closed zones, the write pointer points to some 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. In addition, 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 blocks for writing data (i.e., WP = zone capacity (ZCAP)). In a full zone, the write pointer points to the end of the writeable capacity of the zone. Read commands of data stored in a full zone can still be executed.
[0049] The ZM can reset a full zone (i.e., ZSF: full) to schedule erasure of data stored in the zone so that the zone switches back to an empty zone (i.e., ZSE: empty). When a full zone is reset, although the zone can be marked as an empty zone available for writes, the data of the zone can not be immediately cleared. 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 data storage device 106 can determine a new ZCAP for the zone and update the writeable ZCAP attribute in the zone metadata. An offline zone is a zone that cannot have data written to it. An offline zone can be in a full state, an empty state, or in a partially full state without being in an active state.
[0050] As resetting a zone clears or schedules erasure of data stored in the zone, the need for garbage collection of individual erase blocks is eliminated, improving the overall garbage collection process of the data storage device 106. The data storage device 106 can mark one or more erase blocks for erasure. When a new zone is to be formed and the data storage device 106 anticipates a ZM open, then the one or more erase blocks marked for erasure can be erased. The data storage device 106 can further decide and create the physical backing of the zone at the time of erasing the erase block. Thus, once a new zone is opened and an erase block is selected to form the zone, the erase block will be erased. Further, each time a zone is reset, a new order of LBAs and write pointers of the zone can be selected, enabling the zone to tolerate out-of-order receipt of commands. The write pointer can optionally be closed such that commands can be written to any starting LBA as indicated by the command.
[0051] The controller 108 provides a ZAL value for each zone. 分区活动限制 (ZAL) value. In various embodiments, the ZAL can also apply to blocks and / or streams. A ZAL value is assigned to each zone, where the ZAL value represents the time for which an open zone can remain open. In a standard storage device, the ZAL value is fixed for the time that the relevant zone is used by the host device 104 (i.e., the storage device receives write or read commands for the relevant zone from the host). The ZAL value is shared by each zone of the namespace (i.e., a global ZAL value). The time to which the ZAL value corresponds is the maximum time value before an unacceptable amount of bit errors has accumulated in the zone. The host device 104 or the data storage device 106 can close the zone before the ZAL value is reached to avoid accumulating an unacceptable amount of bit errors.
[0052] If the zone activity limit is restricted to a non-zero value, the controller can transition a zone in any of the "ZSIO: Implicit Open", "ZSEO: Implicit Open", or "ZSC: Closed" states to the "ZSF: Full" state. When a zone transitions to the "ZSIO: Implicit Open" state or the "ZSEO: Explicit Open" state, an internal timer in seconds is started so that the host device 104 or the data storage device 106 identifies when the ZAL value is exceeded. If the ZAL value or time limit is exceeded, the controller 108 can either warn the host device 104 that the zone needs to end (i.e., the zone needs to be at full capacity) or transition the zone to the "ZSF: Full" state. When the host device 104 is warned that the zone needs to end, the zone end recommended field is set to 1 and a zone information change event is reported to the host device 104. When a zone transitions to the "ZSF: Full" state, the zone by controller field is set to 1 and a zone information change event is reported to the host device 104. Because the ZAL value is a global parameter for each zone of a storage device, a zone can close too early, allowing for less than optimal storage drive operation, or can close too late, allowing for an unacceptable amount of bit errors to accumulate, which can result in a decrease in the integrity of the data storage device. The unacceptable accumulation of bit errors can also result in a decrease in the performance of the data storage device. The global ZAL parameter is a static parameter and can be based on a worst case estimate of the conditions the host can face.
[0053] Figure 5 is a schematic of zone additional scheduling according to one embodiment. Each open zone of a storage device, such as the data storage device 106 of Figure 1 is monitored by a controller, such as the controller 108 of Figure 1 The controller 108 can apply a zone priority value on each zone based on the status of the zone, including but not limited to the amount of data available in the zone, the zone health (i.e., zone cycling), and the remaining time an open zone can have before reaching the ZAL, as described in Figure 4 Each zone additional command is scheduled based on the zone priority so that zones that reach the zone close criteria can be written first, effectively filling the zone to maximum capacity without a tablet or dummy data.
[0054] In Figure 5In particular embodiments, a zone X has a certain capacity as indicated by a cylinder, where the volume of the cylinder is a representation of the effective capacity of the zone (i.e., total capacity - space lost to metadata and overhead). For example, if the effective capacity of zone X (the amount of data available in the zone) is 300 MiB, then 300 MiB of user data can be written to zone X. Further, the controller 108 can have firmware to determine to what extent a certain zone can be filled by utilizing watermarks, such as Watermark A, Watermark B, and Watermark C. A zone can have one or more watermarks associated with the capacity, where more watermarks allow for greater accuracy in determining the current volume of data in the zone. For example, Watermark A refers to a zone filled to one quarter of the total capacity (i.e., 75 MiB), Watermark B refers to a zone filled to one half of the total capacity (i.e., 150 MiB), and Watermark C refers to a zone filled to three quarters of the total capacity (i.e., 225 MiB).
[0055] Further, a zone X is associated with a zone age, where the zone age refers to the amount of time that the zone has been in an active and open state, as described in Figure 4 In particular embodiments, a zone with a higher zone age (i.e., an older zone) is more susceptible to bit error accumulation and has a smaller difference between the current age of the zone and the ZAL of the zone than a zone with a lower zone age. By associating both the age of a zone and the amount of data that can be written to the zone, zone priority scheduling (i.e., which zone to write data to) can be utilized to effectively manage open zones in a storage device.
[0056] Figure 6 is a schematic diagram of a zone append command scheduler according to one embodiment. Figure 5 Aspects of Figure 6 may be similar to Figure 6 In particular embodiments, multiple zones are open. The more parallel open zones in a storage device, the greater the complexity of the zone append command scheduler. For example, each open zone has an XOR buffer, and each open XOR buffer can typically not be stored in SRAM. In some cases, a controller, such as the controller 108 of Figure 1 may fold the XOR buffers into the DRAM and NAND of the storage device, such as the data storage device 106 of Figure 1 The zone append command scheduler can be the zone append command scheduler described in Figure 5
[0057] The partition attachment command scheduler can operate based on one or more criteria, such as partition fullness and partition aging, giving higher priority to fuller and older partitions than to less fuller and younger partitions. Once a partition exceeds a predetermined threshold, such as partition age, partition fullness, or both, controller 108 closes the partition by filling the remaining space with tablet data. By utilizing partition priority ratings, partitions can be closed more quickly, resulting in the accumulation of multiple open areas within data storage device 106. Controller 108 identifies the partition priority rating throughout its lifecycle. The partition lifecycle is determined by... Figure 4 The partition append command is characterized by the ZNS protocol described herein. For illustrative purposes, the partition append command may be referred to as the command herein. The controller accepts the partition's state during the command fetch phase. Furthermore, the partition's state is further considered when selecting the next command in the execution phase. The partition's state is considered in any arbitration phase when data or control messages associated with the partition append command are transferred.
[0058] Under certain conditions, the ZNS protocol allows devices to close open partitions or place partitions offline. In one implementation, once the storage device detects that a partition will be offline, it assigns the highest priority rating to the relevant partition and attempts to close the partition normally by executing a partition append command associated with the relevant partition, thus filling and closing the partition without requiring tablet data to fill it.
[0059] The partition-attached scheduler receives the status of all available commands associated with a partition, as well as the status of each partition. For example, each partition receives a large number of incomplete commands, including commands held in storage for execution (i.e., buffers), commands waiting to be executed from the host (such as...). Figure 1 The host device 104 extracts commands, memory, commands waiting in the execution phase, etc. The partition-attached command scheduler receives the priority of each partition, which is based on the amount of available data in the partition and partition aging. Based on the partition information, the partition-attached command scheduler determines the partition with the highest priority and attempts to schedule commands to close the partition. For example, if three partitions, partition 1, partition 2, and partition 3, are open in the data storage device 106, the controller 108 determines the priority rating of each partition based on factors such as partition fullness and partition aging. If the priority rating of partition 3 is higher than that of partition 1, and the priority rating of partition 1 is higher than that of partition 2, the partition-attached command scheduler will first attempt to schedule commands to partition 3 to fill that partition first, then to partition 1 to fill that partition second, and then to partition 2 to fill that partition third.
[0060] Figure 7is a schematic block diagram illustrating a storage system 700 according to one embodiment. Aspects of the storage system 700 can be similar to Figure 1 the storage system 100 of FIG. 1. A host 702 can utilize a non-volatile memory (NVM) 734 having a partitioned namespace included in a data storage device 710 to efficiently store and retrieve data. The host 702 includes a host memory 704 and an interface (not shown). The host 702 can include a wide variety of devices such as a computer server, a network attached storage (NAS) unit, a desktop computer, a notebook (e.g., laptop) computer, a tablet computer (e.g., “smart” tablet), a mobile device, a set-top box, a telephone handset (e.g., “smart” phone), a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, an automotive application (e.g., mapping, autonomous driving), or other device capable of running one or more virtual hosts. In certain embodiments, the host 702 includes any device having a processing unit or any form of hardware capable of processing data, including a general purpose processing unit, special purpose hardware such as an application specific integrated circuit (ASIC), configurable hardware such as a field programmable gate array (FPGA), or any other form of processing unit configured by software instructions, microcode, or firmware. The host memory 704 is a device that allows storage and retrieval of information such as executable instructions, encryption keys, configuration, and other data. The host memory 704 can be DRAM, virtual memory, other main memory, and combinations thereof. The host memory 704 includes parallel redundancy protocol, data buffers, and other components.
[0061] The interface can be a network interface or a data storage device interface. The network interface enables the host 702 to communicate with the data storage device 710 via a communication medium. The network interface can be one or more network adapters, also referred to as network interface cards (NICs). The data storage device interface enables the host 702 to communicate with the data storage device 710 via a dedicated link.
[0062] The host 702 interface interacts with the data storage device 710 interface for ingress and egress of communications between the host 702 and the data storage device 710. The data storage device 710 interface and the host 702 interface operate under a communication protocol such as a Peripheral Component Interface Express (PCIe) serial communication protocol or other suitable communication protocol. The interface includes one or more ports such as a PCIe port, a RDMA port (Ethernet, RoCE / iWARP, InfinBand), a Fibre Channel port, a TCP port, or other suitable fabric port. Devices connected to the PCIe fabric communicate directly to other devices by providing a PCIe address. The fabric routes such communications to the appropriate device based on the PCIe address. A portion of the address is a device number that specifies the physical device to which the communication is to be routed.
[0063] Host 702 and data storage device 710 can communicate over NVMe communications over a PCIe interface. The NVMe communications can be by one or more of NVMe over PCIe fabric, NVMe over non-PCIe fabric, and / or native PCIe. NVMe over non-PCIe fabric includes transport abstraction layers on both sides of the fabric interface to translate native PCIe transactions over non-PCIe fabric. Host 702 can be connected to data storage device 710 through a data center storage system network, an enterprise storage system network, a storage area network, a cloud storage network, a local area network (LAN), a wide area network (WAN), the Internet, other networks, wired links, wireless links, and interconnections thereof.
[0064] Data storage device 710 can be a network storage device, an internal storage drive (e.g., a server computer, a desktop hard drive, a laptop), a data center storage device, an external storage device, an embedded mass storage device, a removable mass storage device, and other suitable data storage devices.
[0065] Data storage device 710 includes a storage device controller 712 that manages operations of data storage device 710, such as writes to and reads from a zoned namespace of a partition of NVM 734 that includes a ZNS protocol, as described in Figure 5 The term NVM used herein can refer to NS-A alone or to one or more non-volatile memory units within data storage device 710 for exemplary purposes. Each namespace includes one or more zones, such as zone 0 and zone 1. Storage device controller 712 can include one or more processors 714, which can be multi-core processors. Processors 714 process components of data storage device 710 through firmware and / or software. Processors 714 execute instructions of computer-readable program code of the firmware and / or software. Storage device controller 712 implements processes described herein by execution of instructions by processors 714, by hardware, or by a combination thereof. Hardware can include various components of storage device controller 712, such as logic gates, switches, application specific integrated circuits (ASICs), programmable logic controllers, embedded microcontrollers, registers, and other components.
[0066] Storage device controller 712 can operate under the NVMe protocol, although other protocols are applicable. The NVMe protocol is a communication interface / protocol developed for SSDs for operation on hosts and storage devices linked through a PCIe interface. The NVMe protocol provides a command queue and completion path for data accessed by host 702 that is stored in data storage device 710.
[0067] The NVM 734 of the data storage device 710 can be configured for long-term storage of information as non-volatile memory space and retains information after power on / off cycles. The NVM 734 can be composed of one or more dies of NAND flash memory. Other examples of non-volatile memory include phase change memory, ReRAM memory, MRAM memory, magnetic media (including shingled magnetic recording), optical disks, floppy disks, electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and other solid state memory. Magnetic media non-volatile memory can be one or more disks in the data storage device 710. Each disk can contain one or more zones composed of one or more data tracks. The NVM 734 can include one or more types of non-volatile memory.
[0068] The data storage device 710 can also include other components such as a flash interface module 730, a zone append command scheduler 718, an error correction module 732, a command extractor 720, a command executor 726, and a control path 722. The storage device controller 712 can interact with the NVM 734 with the flash interface module 730 for read and write operations. The DMA module 724 performs data transfers between the host 702 and the data storage device 710 without involvement of the host 702 CPU. The data transfer scheduler 728 controls data transfers when activating the control path to extract a physical page region (PRP), issuing completion and interrupts, and activating DMA for actual data transfers between the host 702 and the data storage device 710. The error correction module 732 corrects data extracted from the memory array. The command extractor 720 parses commands to the command executor 726 for execution on the flash interface module 730. The zone append command scheduler 718 can be a zone append scheduler of Figure 5 and Figure 6 where the zone append command scheduler receives a status of all available commands associated with the zone and a status of each zone with a related available command.
[0069] Figure 8 is a diagram illustrating zone append command priority based on zone status. Figure 4 , Figure 5 , Figure 6 and Figure 7 may be relevant in the description of Figure 8 The priority of a command is increased based on a status of an open zone. The status of an open zone includes a fullness of the zone and an age of the zone. For example, a higher priority zone includes more data and will be filled with data before a zone with less data. As Figure 8As shown in the middle, the combination of zone fullness and zone age has an exponential relationship compared to priority. As zones age and are filled with data, the likelihood of the zone having a higher cumulative unacceptable amount of bit errors, which can corrupt current data or make data stored in the zone unusable. The zone append command scheduler allows for efficient management of zones in order to minimize the number of open zones in parallel and shorten the average lifetime of zones to increase the endurance of each zone through program / erase cycles.
[0070] By determining the priority of open zones in a ZNS environment, zone append commands can be scheduled to maximize the number of zones closed due to fullness rather than age.
[0071] In one embodiment, a data storage device includes a memory device; and a controller coupled to the memory device, wherein the controller is configured to determine a state of at least one zone in a zone namespace (ZNS) environment; determine an age of the at least one zone in the ZNS environment; calculate a priority of the at least one zone based on the determined state and the determined age; and process a zone append command based on the calculated priority. The state of the at least one zone is fullness of the at least one zone. The controller is configured to determine the state, determine the age, and calculate the priority of all open zones of the ZNS environment. The controller is configured to process the zone append command in a priority order from high priority to low priority. The controller includes a zone append command scheduler. The controller is further configured to send the calculated priority to the zone append command scheduler. Calculating the priority includes adding the determined state and the determined age together. The controller is configured to determine the state, determine the age, and calculate the priority before extracting data from a host device.
[0072] In another embodiment, a data storage device includes: a memory device; and a controller coupled to the memory device, wherein the controller includes: a command extractor; a command executor; a flash interface module coupled to the memory device; and a zone append command scheduler coupled to the command extractor, the command executor, and the flash interface module. The zone append command scheduler monitors an age of each zone in a zone namespace (ZNS) environment. The zone append command scheduler monitors a state of each zone in the ZNS. The zone append command scheduler is configured to instruct the command extractor to extract commands for the zones based on a priority calculated for each zone. The priority calculated for each zone is based on the age of each zone and the state of each zone. The zone append command scheduler is configured to provide a higher priority to a zone append command to be written to a zone having a longer open time period compared to another zone. The zone append command scheduler is configured to provide a higher priority to a zone append command to be written to a zone that is closer to full compared to another zone.
[0073] In another embodiment, a data storage device includes: a memory device; a controller coupled to the memory device; and means for scheduling zone append commands based on an age of open zones and a fullness of open zones in a zone namespace (ZNS) environment. The data storage device further includes means for determining an age of all open zones. The data storage device further includes means for determining an age of all open zones. The data storage device further includes means for instructing a command extractor to extract commands according to instructions from the means to be scheduled. The data storage device further includes means for monitoring a zone state of all open zones.
[0074] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments 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 data storage device, the data storage device comprising: a memory device; and a controller coupled to the memory device, wherein the controller is configured to: determine a fullness of at least one open zone in a zone namespace environment (ZNS environment), wherein the fullness is less than a total capacity of the at least one open zone; determine an age of the at least one open zone in the ZNS environment; calculate a priority of the at least one open zone based on the determined fullness and the determined age; and process a zone append command of the at least one open zone based on the calculated priority, wherein the zone append command contains a same address as an open zone of the at least one open zone in the ZNS environment, wherein the calculated priority of the at least one open zone is higher than a calculated priority of another open zone in the ZNS environment, the zone append command of the at least one open zone is scheduled before other zone append commands of the another open zone, the at least one open zone is filled before the at least one open zone is closed, and the calculated priority increases when the determined age increases or the determined fullness increases.
2. The data storage device of claim 1, wherein the controller is configured to determine the fullness, determine the age, and calculate the priority of all open zones of the ZNS environment.
3. The data storage device of claim 2, wherein the controller is configured to process the zone append commands in a priority order from high priority to low priority.
4. The data storage device of claim 1, wherein the controller comprises a zone append command scheduler.
5. The data storage device of claim 4, wherein the controller is further configured to send the calculated priority to the zone append command scheduler.
6. The data storage device of claim 1, wherein calculating the priority comprises adding the determined fullness and the determined age together.
7. The data storage device of claim 1, wherein the controller is configured to determine the fullness, determine the age, and calculate the priority before data is fetched from a host device.
8. A data storage device, the data storage device comprising: a memory device; and a controller coupled to the memory device, wherein the controller comprises: a command fetcher; a command executor; a flash interface module coupled to the memory device; and a zone append command scheduler coupled to the command fetcher, the command executor, and the flash interface module, wherein the zone append command scheduler is configured to: receive a zone append command, wherein: the zone append command is based on a calculated priority; the calculated priority is based on a fullness of at least one open zone and an age of the at least one open zone; the fullness is less than a total capacity of the at least one open zone; and the zone append command is processed based on the calculated priority. The zone append command includes the same address as the at least one open zone in a zone namespace environment, i.e., ZNS environment; and processing zone append commands for the at least one open zone based on the calculated priority, wherein the calculated priority for the at least one open zone is higher than a calculated priority for another open zone in the ZNS environment, the zone append command for the at least one open zone is scheduled before other zone append commands for the another open zone, the at least one open zone is filled before the at least one open zone is closed, and the calculated priority increases when the age increases or the fullness increases.
9. The data storage device of claim 8, wherein the zone append command scheduler monitors an age of each zone in a zone namespace environment, i.e., ZNS environment.
10. The data storage device of claim 8, wherein the zone append command scheduler monitors a fullness of each zone in the ZNS environment.
11. The data storage device of claim 8, wherein the zone append command scheduler is configured to instruct the command fetcher to fetch commands for each of the zones based on a priority calculated for each of the zones.
12. The data storage device of claim 11, wherein the priority calculated for each of the zones is based on an age of each of the zones and a fullness of each of the zones.
13. The data storage device of claim 8, wherein the zone append command scheduler is configured to provide a higher priority to a zone append command for a zone that is to be written to for a longer open period of time compared to another zone.
14. The data storage device of claim 8, wherein the zone append command scheduler is configured to provide a higher priority to a zone append command for a zone that is to be written to closer to full compared to another zone.
15. A data storage device, the data storage device comprising: a memory device; a controller coupled to the memory device; and means for scheduling a zone append command based on an age of at least one open zone in a zone namespace environment, i.e., ZNS environment, and a fullness of the at least one open zone, wherein the fullness is less than a total capacity of the at least one open zone, wherein the zone append command includes the same address as the at least one open zone in the ZNS environment, wherein a priority is calculated based on the age of the at least one open zone and the fullness of the at least one open zone, and wherein the calculated priority for the at least one open zone is higher than a calculated priority for another open zone in the ZNS environment, the zone append command for the at least one open zone is scheduled before other zone append commands for the another open zone, the at least one open zone is filled before the at least one open zone is closed, and the calculated priority increases when the age increases or the fullness increases.
16. The data storage device of claim 15, further comprising means for determining an age of all open partitions.
17. The data storage device of claim 15, further comprising means for instructing a command extractor to extract commands from instructions from the means to be scheduled.
18. The data storage device of claim 15, further comprising means for monitoring a partition status of all open partitions.
Citation Information
Patent Citations
Data storage method and system of storage system and related components
CN109739445A
Log-structured file system for zone block devices with small zones
US10417190B1