CN113179658B - 非顺序分区命名空间 - Google Patents
非顺序分区命名空间 Download PDFInfo
- Publication number
- CN113179658B CN113179658B CN202080006553.1A CN202080006553A CN113179658B CN 113179658 B CN113179658 B CN 113179658B CN 202080006553 A CN202080006553 A CN 202080006553A CN 113179658 B CN113179658 B CN 113179658B
- Authority
- CN
- China
- Prior art keywords
- partition
- command
- logical blocks
- data associated
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000005192 partition Methods 0.000 title claims abstract description 492
- 238000000034 method Methods 0.000 abstract description 20
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开整体涉及操作存储设备的方法。存储设备的控制器被配置为检索将数据写入第一分区的一个或多个第一逻辑块的第一命令,并将与第一命令相关联的数据直接存储器访问(DMA)读取并写入第一逻辑块。第一逻辑块在第一分区的分区起始点和第一分区的分区容量之间。控制器被配置为检索将数据写入第一分区的一个或多个第二逻辑块的第二命令,并将与第二命令相关联的数据DMA读取并写入第二逻辑块。第二逻辑块在第一分区的分区起始和分区容量之间,并且第一逻辑块与第二逻辑块是非顺序的。
Description
相关申请的交叉引用
本申请要求2019年12月4日提交的美国申请号16/703,643的优先权,该美国申请要求2019年9月12日提交的美国临时专利申请序列号62/899,717的优先权和权益,这两个专利申请全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收将数据从主机设备读取或写入到存储器设备的命令。存储器设备的数量被称为命名空间,并且控制器被配置为从存储器设备的一个或多个命名空间读取数据或将数据写入存储器设备的一个或多个命名空间。每个命名空间由多个逻辑块地址(LBA)或扇区构成。控制器可在任何时间访问任何命名空间内的任何LBA。
然而,当命名空间内的一段连续的LBA(例如,LBA 1-8)已经在存储数据并且后写入被接收到该段内的LBA(例如,LBA 4)的所选择的数据时,控制器必须读出该段内的所有数据,修改所选择的数据,并且将与该段的每个LBA相关联的数据重新写入新位置。此类读取-修改-写入过程可降低存储设备和主机两者的性能,以及降低存储设备的耐久性并增加主机开销。
因此,需要一种操作存储设备的新方法。
发明内容
本公开整体涉及操作存储设备的方法。存储设备的控制器被配置为检索将数据写入第一分区的一个或多个第一逻辑块的第一命令,并将与第一命令相关联的数据直接存储器访问(DMA)读取并写入第一逻辑块。第一逻辑块在第一分区的分区起始点和第一分区的分区容量之间。控制器被配置为检索将数据写入第一分区的一个或多个第二逻辑块的第二命令,并将与第二命令相关联的数据DMA读取并写入第二逻辑块。第二逻辑块在第一分区的分区起始点和分区容量之间,并且第一逻辑块与第二逻辑块是非顺序的。
在一个实施方案中,存储设备包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;以及耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区的第一命令以及直接存储器访问(DMA)读取与第一命令相关联的数据,识别第一分区的一个或多个第一逻辑块以写入与第一命令相关联的数据,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,检索将数据写入第一分区的第二命令以及DMA读取与第二命令相关联的数据,以及识别第一分区的一个或多个第二逻辑块以写入与第二命令相关联的数据,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第二逻辑块与一个或多个第一逻辑块间隔开一个或多个空逻辑块。
在另一个实施方案中,存储设备包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;以及耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区中的一个或多个第一逻辑块的第一命令,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址与第一分区的分区容量之间,将与第一命令相关联的数据写入第一分区的一个或多个第一逻辑块并写入介质单元中的第一位置,检索将数据写入第一分区中的一个或多个第二逻辑块的第二命令,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第二逻辑块与第一一个或多个逻辑块是非顺序的,以及将与第二命令相关联的数据写入第一分区的一个或多个第二逻辑块并写入介质单元中的第二位置,该第二位置位于第一位置的顺序位置。
在又一个实施方案中,存储系统包括:主机设备,该主机设备包括第一跟踪表;和存储系统。存储系统包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块,并且其中介质单元存储第二跟踪表;和耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区中的一个或多个第一逻辑块的第一命令以及DMA读取与第一命令相关联的数据,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,将与第一命令相关联的数据写入第一分区的一个或多个第一逻辑块,更新第一跟踪表和第二跟踪表以指示一个或多个第一逻辑块不可用于写入与后续命令相关联的数据,检索将数据写入第一分区中的一个或多个第二逻辑块的第二命令以及DMA读取与第二命令相关联的数据,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址与第一分区的分区容量之间,并且其中一个或多个第二逻辑块中的至少一个第二逻辑块与一个或多个第一逻辑块是非顺序的,将与第二命令相关联的数据写入第一分区的一个或多个第二逻辑块;以及更新第一跟踪表和第二跟踪表以指示一个或多个第二逻辑块不可用于写入与后续命令相关联的数据。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2示出了根据另一个实施方案的包括耦接到主机设备的存储设备的存储系统。
图3是示出了根据一个实施方案的操作存储设备以执行读取或写入命令的方法的框图。
图4A示出了根据一个实施方案的在存储设备中使用的分区命名空间。
图4B示出了根据一个实施方案的针对图4A的存储设备的分区命名空间的状态图。
图5A示出了根据一个实施方案的顺序检查关闭的分区命名空间。
图5B示出了根据一个实施方案的针对图5A的分区命名空间接收的写入命令的对应表。
图6A示出了根据另一个实施方案的顺序检查打开的分区命名空间。
图6B示出了根据一个实施方案的针对图6A的分区命名空间接收的写入命令的对应表。
图7A至图7F示出了根据一个实施方案的向ZNS的分区的非顺序写入并且不接收分区附加命令。
图8示出了跟踪由图7A-图7F的分区检索的写入命令的对应表。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及操作存储设备的方法。存储设备的控制器被配置为检索将数据写入第一分区的一个或多个第一逻辑块的第一命令,并将与第一命令相关联的数据直接存储器访问(DMA)读取并写入第一逻辑块。第一逻辑块在第一分区的分区起始点和第一分区的分区容量之间。控制器被配置为检索将数据写入第一分区的一个或多个第二逻辑块的第二命令,并将与第二命令相关联的数据DMA读取并写入第二逻辑块。第二逻辑块在第一分区的分区起始点和分区容量之间,并且第一逻辑块与第二逻辑块是非顺序的。
图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在存储设备106中的非易失性存储器设备110来存储和检索数据。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列操作的多个存储设备,诸如存储设备106。例如,存储系统100可以包括多个存储设备106,其被配置为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备诸如存储设备106存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。
该存储设备106包括控制器108、非易失性存储器110(NVM 110)、电源111、易失性存储器112和接口114。控制器108包括分区管理120。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷电路板(PCB),存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCI Express(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)、相干加速器(CXL)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
存储设备106包括NVM 110,其可以包括多个存储器设备。NVM 110可以被配置成存储和/或检索数据。例如,NVM 110的存储器设备可以从控制器108接收数据和指示存储器设备存储数据的消息。类似地,NVM 110的存储器设备可以从控制器108接收指示存储器设备检索数据的消息。在一些示例中,存储器设备中的每个存储器设备可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储器设备)。在一些示例中,存储器设备中的每个存储器设备可以被配置为存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储器设备可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、硬盘驱动器(HDD)以及任何其他类型的非易失性存储器设备。
NVM 110可以包括多个闪存存储器设备。闪存存储器设备可以包括基于NAND或NOR的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NAND闪存存储器设备中,闪存存储器设备可以被分成多个块,这些块可以被分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NAND单元。NAND单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NAND闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可能以页面等级向NAND闪存存储器设备写入数据以及从NAND闪存存储器设备读取数据,并且以块等级从NAND闪存存储器设备擦除数据。
存储设备106包括电源111,其可以向存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
存储设备106还包括易失性存储器112,该易失性存储器可由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。在一些示例中,控制器108可以使用易失性存储器112作为高速缓存。例如,控制器108可以将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入NVM 110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM 110。控制器108可包括分区管理120,以管理对分区的读取和写入,以及有效数据向分区和自分区的重定位以用于垃圾回收目的。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM110。
图2示出了根据另一个实施方案的包括耦接到主机设备204的存储设备206的存储系统200。存储系统200可以是图1的存储系统100、主机设备104和存储设备106。
存储设备206可以从主机设备204发送和接收命令和数据,并且包括命令处理器220。命令处理器220可为图1中的控制器108。命令处理器220可以调度存储器设备访问(诸如NAND访问),并且可以在先前接收的命令需要写入相同存储器备之前执行对存储器设备的读取。命令处理器220耦接到一个或多个存储器设备228和命令获取222。一个或多个存储器设备228可以是NAND非易失性存储器设备。命令获取222耦接到提交队列仲裁224。提交队列仲裁224耦接到一个或多个提交队列头和尾指针226。
主机设备204包括耦接到一个或多个处理单元或CPU应用程序234的一个或多个主机软件应用程序232。在一个实施方案中,软件应用程序232具有有限的固态驱动器队列深度以便为系统200的每个用户导出延迟QoS。主机设备204还包括没有相关QoS的操作系统(OS)或软件应用程序240。CPU 234耦接到互连件236和主机DRAM 238。主机DRAM 238可以存储提交队列数据。互连件236耦接到存储设备206。互连件236可以与提交队列头和尾指针226以及命令获取222两者通信。
CPU 234生成一个或多个命令216以发送到存储设备206,并且可以经由命令获取信号244从存储设备206发送和接收命令。CPU 234还可以向存储设备206发送中断或门铃218,以向存储设备206通知一个或多个命令216。CPU 234可以限制提交给存储设备206的数据队列深度。队列深度(QD)是排队到存储设备206的命令的最大数量,而数据-QD是与用QD排队的命令相关联的数据量。在一个实施方案中,存储设备206的数据-QD242等于存储设备206的带宽。数据-QD 242限于在其下存储设备206仍然可以维持期望的延迟QoS的最高等级。命令处理器220然后处理从主机设备204接收到的命令。
图3是示出了根据一个实施方案的操作存储设备以执行读取或写入命令的方法300的框图。方法300可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法300可以与存储系统200一起使用,该存储系统具有主机设备204和包括命令处理器220的存储设备206。
方法300开始于操作350,其中主机设备将命令作为条目写入提交队列中。在操作350处,主机设备可以将一个或多个命令写入提交队列中。命令可以是读取命令或写入命令。主机设备可以包括一个或多个提交队列。主机设备可以任何顺序(即,提交顺序)将一个或多个命令写入提交队列,而不管一个或多个命令的顺序写入顺序(即,顺序处理顺序)如何。
在操作352中,主机设备写入一个或多个更新的提交队列尾指针并且敲响门铃或发送中断信号以向存储设备通知或发信号告知准备好执行的新命令。门铃信号可以是图2的门铃218。如果存在多于一个提交队列,则主机可以写入更新的提交队列尾指针并为提交队列中的每个提交队列发送门铃或中断信号。在操作354中,响应于接收到门铃或中断信号,存储设备的控制器从一个或多个提交队列获取命令,并且该控制器接收或DMA读取该命令。
在操作356中,控制器处理命令并将与该命令相关联的数据写入或转移到主机设备存储器。该控制器一次可以处理多于一个命令。该控制器可以按提交顺序或按顺序处理一个或多个命令。处理写入命令可以包括:识别用于将与命令相关联的数据写入的分区,将该数据写入该分区的一个或多个LBA,以及推进该分区的写入指针以识别该分区内的下一个可用LBA。
在操作358中,一旦该命令已被充分处理,控制器就将对应于执行的命令的完成条目写入主机设备的完成队列,并且移动或更新CQ头指针以指向新写入的完成条目。
在操作360中,控制器生成中断信号或门铃并将其发送到主机设备。中断信号指示该命令已被执行并且与该命令相关联的数据在该存储器设备中可用。中断信号进一步通知主机设备完成队列已准备好被读取或处理。
在操作362中,主机设备处理完成条目。在操作364中,主机设备将更新的CQ头指针写入存储设备并敲响门铃或向存储设备发送中断信号以释放完成条目。
图4A示出了根据一个实施方案的在存储设备400中使用的分区命名空间(ZNS)402视图。存储设备400可将ZNS 402视图呈现给主机设备。图4B示出了根据一个实施方案的针对存储设备400的ZNS 402的状态图450。存储设备400可为图1的存储系统100的存储设备106或图2的存储系统200的存储设备206。存储设备400可具有一个或多个ZNS 402,并且每个ZNS 402可具有不同的大小。除该一个或多个分区命名空间402之外,存储设备400还可包括一个或多个常规命名空间。此外,ZNS 402可以是用于SAS的分区块命令(ZBC)和/或用于SATA的分区设备ATA命令集(ZAC)。
在存储设备400中,ZNS 402是可被格式化成逻辑块使得容量被分成多个分区406a-406n(统称为分区406)的NVM的数量。分区406中的每个分区包括介质单元或NVM 404的多个物理块或擦除块(现在示出),并且该擦除块中的每个擦除块与多个逻辑块(未示出)相关联。当控制器408从诸如主机设备(未示出)或主机设备的提交队列接收命令时,控制器408可以从与ZNS 402的多个擦除块相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一LBA或扇区相关联。
在一个实施方案中,NVM 404为NAND设备。该NAND设备包括一个或多个管芯。该一个或多个管芯中的每个管芯包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个擦除块。该一个或多个擦除块中的每个擦除块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,MLC NAND管芯可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16kB)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以频繁地访问用户数据粒度LBA大小为512字节的NAND。因此,如以下描述所提及的,NAND位置等于512字节的粒度。因此,MCL NAND的两个页面的LBA大小为512字节并且页面大小为16kB,这将导致大约每个字线16个NAND位置。然而,NAND位置大小不旨在是限制性的,并且仅用作示例。
当将数据写入擦除块时,在分区406内对应地更新一个或多个逻辑块,以跟踪数据在NVM 404内的位置。数据可一次写入一个分区406,直到分区406变满,或被写入多个分区406,使得多个分区406可部分变满。类似地,当将数据写入特定分区406时,数据可按NAND位置的顺序或逐字线地一次一个块地写入多个擦除块,直到移动到相邻块(即,写入第一擦除块直到在移动到第二擦除块之前第一擦除块变满),或者可按NAND位置的顺序或逐字线地一次多个块地写入多个擦除块,来以更平行的方式部分填充每个块(即,在写入每个擦除块的第二NAND位置之前写入每个擦除块的第一NAND位置)。
当控制器408选择将存储每个分区的数据的擦除块时,控制器408将能够在分区打开时间选择擦除块,或者控制器408可以随着填充该特定擦除块的第一NAND位置或字线的需求被达到而选择擦除块。当利用上述在开始下一个擦除块之前完全填充一个擦除块的方法时,这可能更加有差别。控制器408可以使用该时间差来在即时的基础上选择更优化的擦除块。哪个擦除块被分配和指定给每个分区及其连续LBA的决定可以在控制器408内针对零个或多个并行分区一直发生。
分区406中的每个分区与分区起始逻辑块地址(ZSLBA)或分区起始扇区相关联。ZSLBA是分区406中的第一可用LBA。例如,第一分区406a与ZaSLBA相关联,第二分区406b与ZbSLBA相关联,第三分区406c与ZcSLBA相关联,第四分区406d与ZdSLBA相关联,并且第n分区406n(即最后一个分区)与ZnSLBA相关联。每个分区406由其ZSLBA标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序来将数据写入NVM110)。
当将数据写入分区406时,写入指针410被推进或更新以指向或指示分区406中的用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针410指示对分区406的后续写入将在何处开始。后续写入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针410指示为下一个起始点的位置处被附加到分区406。分区406内的LBA的排序列表可被存储用于写入排序。每个分区406可以具有其自身的写入指针410。因此,当接收到写入命令时,分区406由其ZSLBA标识,并且写入指针410确定在所识别的分区406内数据的写入开始的位置。
图4B示出了针对图4A的ZNS 402的状态图450。在状态图450中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不含数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于ZSLBA(即,WP=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可由ZM或控制器408向主机提供活动状态下的推荐时间的描述。控制器可包括ZM。
术语“写入”包括当用户数据未填充所有可用NAND位置时,在擦除块中的0个或更多个NAND位置和/或擦除块中的部分填充的NAND位置上编程用户数据。术语“写入”还可包括由于以下原因而将分区移动至满的:内部驱动器处理需要(因为误比特在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备400由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭或填充分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器408将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
在开放分区和关闭分区中,写入指针指向分区中位于ZSLBA和分区的最后LBA的末端之间的某个位置(即,WP>0)。活动分区可根据由ZM进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,ZM可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用块(即,WP=分区容量(ZCAP))。仍可执行满的分区中存储的数据的读取命令。
ZM可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。如果重置了满的分区,那么可能不会立即清除该分区的数据,尽管该分区可能标记为可供写入的空分区。但是,在切换到开放和活动分区之前,必须擦除重置的分区。可在ZM重置和ZM开放之间的任何时间擦除分区。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
由于重置分区会清除存储在分区中的所有数据或调度对存储在分区中的所有数据的擦除,因此消除了对各个擦除块进行垃圾回收的需要,从而改善了存储设备400的整体垃圾回收过程。存储设备400可标记一个或多个擦除块以用于擦除。当将要形成新分区并且存储设备400预计ZM开放时,则可擦除被标记用于擦除的一个或多个擦除块。存储设备400还可在擦除该擦除块时决定和创建该分区的物理支持。因此,一旦新分区被开放并且擦除块被选择以形成分区,该擦除块将被擦除。此外,每次重置分区时,可选择分区406的LBA和写入指针410的新顺序,从而使分区406能够容忍以顺序方式接收命令。可任选地关闭写入指针410,使得命令可被写入为命令指示的任何起始LBA。
重新参见图4A,当控制器408从主机204接收到写入命令或直接存储器访问(DMA)读取写入数据时,控制器408可选择空擦除块以将与命令相关联的数据写入,并且空分区406切换到活动和开放分区406。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器408被配置为从由主机设备填充的提交队列中DMA读取或拉入新命令。
在刚切换到活动分区406的空分区406中,数据在ZSLBA处开始被指定到分区406以及分区406的相关联组的顺序LBA,因为写入指针410将与ZSLBA相关联的逻辑块指示为第一可用逻辑块。该数据可被写入一个或多个擦除块或针对分区406的物理位置而已分配的NAND位置。在将与写入命令相关联的数据写入分区406之后,写入指针410被更新为指向可用于主机写入的下一个LBA(即,第一写入的完成点)。来自此类主机写入命令的写入数据被顺序地编程到擦除块中的被选择用于该分区的物理支持的下一个可用NAND位置中。
在一些实施方案中,NAND位置可等于字线。在此类实施方案中,如果写入命令小于字线,则控制器可任选地在对由多个写入命令构成的整个字线进行编程之前,在另一个存储器位置诸如DRAM或SRAM中聚集若干写入命令。长于字线的写入命令将能够编程完整的字线并用一些数据填充完整的字线,并且超出字线的多余数据将用于填充下一个字线。出于本说明书的目的,写入数据大小等于512字节的NAND位置;然而,NAND位置的大小并非旨在进行限制。
例如,控制器408可将第一写入命令接收到第三分区406c,或接收第一分区附加命令。主机按顺序识别分区406的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区406c中的如由写入指针410所指示的第一或下一个或多个可用LBA,并且写入指针410被推进或更新以指向可用于主机写入的下一个可用LBA(即,WP>0)。如果控制器408将第二写入命令接收到第三分区406c,或接收第二分区附加命令,则与第二写入命令相关联的数据被写入第三分区406c中由写入指针410识别的下一个可用LBA。一旦将与第二命令相关联的数据写入第三分区406c,则写入指针410就再次推进或更新以指向可用于主机写入的下一个可用LBA。重置分区406c将写入指针410移动回到ZcSLBA(即,WP=0),并且分区406c切换到空分区。
然而,严格的写入排序可能导致主机写入每个分区406退化为单个写入I/O,这限制了主机性能并增加了主机开销。因此,存储设备400被配置为接收制造商或供应商特定的命令以关闭顺序检查。
图5A示出了根据一个实施方案的在接收分区附加命令时顺序检查关闭的ZNS500。图5B示出了针对ZNS 500检索的写入命令的对应表550。表550可存储在控制器中或存储设备的存储器设备中。ZNS 500可以是图4的ZNS 402。虽然图5A的ZNS 500被示出为包括一个分区506,但ZNS 500可包括多个分区506。此外,ZNS 500的多个分区中的每个分区506可具有其自身的单独表550,或者一个表550可跟踪由多个分区中的每个分区506检索的所有写入命令。图6A示出了根据另一个实施方案的在接收分区附加命令时顺序检查打开的ZNS 600。图6B示出了针对ZNS 600检索的写入命令的对应表650。ZNS 600可以是图4的ZNS402。
在图5A中,第一写入命令(写入0)520、第二写入命令522(写入1)和第三写入命令524(写入2)被接收或DMA读取,并且分区506由其ZSLBA识别以存储与第一写入命令520、第二写入命令522和第三写入命令524中的每一者相关联的数据。该写入命令520、522、524可以各自是用于写入新数据的命令,或者是将有效数据从一个分区移动到另一个分区以用于垃圾回收目的的命令。控制器(诸如图4A的控制器408)被配置为从主机设备检索新命令,并且DMA读取与新命令相关联的数据。顺序地,第一写入命令520旨在首先写入,第二写入命令522旨在第二写入,并且第三写入命令524旨在第三写入。分区506包括多个逻辑块5120-5127(统称为逻辑块512)。逻辑块中的每个逻辑块对应于LBA,其在表550中示出。虽然示出了八个逻辑块512,但分区506可包括任何数量的逻辑块512。
图5B示出了跟踪由分区506检索的写入命令的对应表550。表550包括标识命令的写入ID(即,命令的顺序)的第一列552、标识起始LBA的第二列554、标识写入与命令相关联的数据和预期起始LBA所需的逻辑块的数量的第三列556、标识在写入已记录在完成队列之后写入指针510已经推进的逻辑块的数量的第四列558、标识分区与ZSLBA的LBA偏移的第五列560和标识与用于存储数据的LBA相关联的NAND地址的物理位置的第六列562。虽然示出了三个写入指针5100、5101、5102,但分区506仅包括一个写入指针510,并且三个写入指针5100、5101、5102在数据在不同时间写入分区506时指示单个写入指针510的位置,如下所述。
每个写入命令520、522、524按提交顺序而不是按顺序显示在表550中。在表550中,由写入ID 1标识的第二写入命令522在由写入ID 0标识的第一写入命令520之前被接收。第二列554将第二写入命令522的起始LBA标识为ZSLBA,并且需要两个逻辑块(2LBA)来存储数据,如第三列556中所标识。由于第一写入命令520应该是对分区506的第一顺序写入并且仅需要一个逻辑块(1LBA),因此第三列556进一步将第二命令522的预期起始LBA标识为分区506的第二逻辑块512i。
然而,由于第二命令522在第一命令520之前被提交,因此第二命令522在写入指针5100所指示的分区506的第一可用逻辑块5120处开始。由于表550仅将起始LBA指示为ZSLBA,因此将与第二命令522相关联的数据写入由写入指针5100指示的第一可用逻辑块5120。在将与第二命令522相关联的数据写入分区506的第一逻辑块5120和第二逻辑块512i时,写入指针510被推进两个逻辑块,并且对应地更新第四列558。如表550的第六列562所示,与第二命令522相关联的数据存储在第一NAND位置NL0和第二NAND位置NL1中,因为第一逻辑块5120和第二逻辑块5121分别对应于第一NAND位置NL0和第二NAND位置NL1。
然后,存储设备的控制器确定与ZSLBA的LBA偏移,并且完成条目作为写入分区506的最后一个LBA返回到完成队列。写入指针510的推进、偏移的确定以及完成条目到完成队列的返回可同时发生或以任何顺序发生。然后更新第五列560以标识在将与第二命令522相关联的数据写入分区506之后,LBA从ZSLBA偏移二(ZSLBA+2)。将完成条目返回到完成队列并且更新第五列560通知主机设备与第二命令相关联的数据被存储在何处。
在第二写入命令522之后提交第一写入命令520。因此,针对第一命令(写入ID 0)的第二列554将第一写入命令520的起始LBA标识为ZSLBA,并且需要一个逻辑块(1LBA),如第三列556中所标识的。虽然应该将与第一写入命令520相关联的数据写入第一逻辑块5120,如第三列556中所标识,但是与第二写入命令522相关联的数据已经被写入第一逻辑块5120,如第五列560中针对第二命令(写入ID 1)所标识的。
由于控制器跟踪第五列560中的LBA偏移并相应地推进写入指针510,因此控制器确认使用了第一逻辑块5120,并将与第一命令520相关联的数据写入下一个可用逻辑块5122,如写入指针510i所指示。在将与第一命令520相关联的数据写入分区506的第三逻辑块5122时,写入指针510推进一个逻辑块,并且对应地更新第四列558。如表550的第六列562所示,与第一命令520相关联的数据存储在第三NAND位置NL2中,因为第三逻辑块5122对应于第三NAND位置NL2。
然后,存储设备的控制器确定与ZSLBA的LBA偏移,并且完成条目作为写入分区506的最后一个LBA返回到完成队列。写入指针510的推进、偏移的确定以及完成条目到完成队列的返回可同时发生或以任何顺序发生。然后更新第五列560以标识在将与第一命令520和第二命令522相关联的数据写入分区506之后,LBA现在从ZSLBA偏移三(ZSLBA+3)。将完成条目返回到完成队列并且更新第五列560通知主机设备与第一命令相关联的数据被存储在何处。
第三命令524第三被提交。对于第三命令524(写入ID 2),表550在第二列554中将起始LBA标识为ZSLBA,并且在第三列556中标识需要四个逻辑块(4LBA)。控制器将与第三命令524相关联的数据写入下一个可用逻辑块5123,如写入指针5101所指示。在将与第三命令524相关联的数据写入第四逻辑块5123至第七逻辑块5126时,写入指针5102被推进四个逻辑块,并且对应地更新第四列558。如表550的第六列562所示,与第三命令524相关联的数据存储在第四至第七NAND位置NL3-NL6中,因为第四至第七逻辑块5123-5126分别对应于第四至第七NAND位置NL3-NL6。
然后,存储设备的控制器确定与ZSLBA的LBA偏移,并且完成条目作为写入分区506的最后一个LBA返回到完成队列。写入指针510的推进、偏移的确定以及完成条目到完成队列的返回可同时发生或以任何顺序发生。然后更新第五列560以标识在将与第一命令520、第二命令522和第三命令524相关联的数据写入分区506之后,LBA现在从ZSLBA偏移七(ZSLBA+7)。将完成条目返回到完成队列并且更新第五列560通知主机设备与第三命令相关联的数据被存储在何处。
另选地,图6A-图6B示出了顺序检查打开的ZNS 600,以及针对ZNS600检索的写入命令的对应表650。虽然图6A的ZNS 600被示出为包括一个分区606,但ZNS 600可包括多个分区606。此外,ZNS 600的多个分区中的每个分区606可具有其自身的单独表650,或者一个表650可跟踪由多个分区中的每个分区606检索的所有写入命令。
在图6A中,第一写入命令(写入0)620、第二写入命令622(写入1)和第三写入命令624(写入2)被检索或DMA读取,并且分区606由其ZSLBA识别以存储与第一写入命令620、第二写入命令622和第三写入命令624中的每一者相关联的数据。控制器(诸如图4A的控制器408)被配置为从主机设备DMA读取新命令。顺序地,第一写入命令620旨在首先写入,第二写入命令622旨在第二写入,并且第三写入命令624旨在第三写入。分区606包括多个逻辑块6120-6127(统称为逻辑块612)。逻辑块中的每个逻辑块对应于LBA,其在表650中示出。虽然示出了八个逻辑块612,但分区606可包括任何数量的逻辑块612。
图6B示出了跟踪接收到分区606的写入命令的对应表650。表650包括标识命令的写入ID的第一列652、标识起始LBA的第二列654、标识写入与命令相关联的数据和起始LBA所需的逻辑块的数量的第三列656、标识在写入已记录在完成队列之后写入指针610已经推进的逻辑块的数量的第四列658和标识与用于存储数据的LBA相关联的NAND地址的物理位置的第五列662。
每个写入命令620、622、624按提交顺序而不是按顺序显示在表650中。在表650中,由写入ID 1标识的第二写入命令622在由写入ID 0标识的第一写入命令620之前被接收。第二列654将第二写入命令622的起始LBA标识为ZSLBA之后的第二逻辑块(ZSLBA+1)(即,第二LBA6121),并且需要两个逻辑块(2LBA)来存储数据,如第三列656中所标识的。由于第一写入命令620应该是对分区606的第一顺序写入并且仅需要一个逻辑块(1LBA)来存储数据,因此第三列656进一步将第二命令622的起始LBA标识为分区606的第二LBA 6121。
由于第二命令622是在第一命令620之前提交的,因此控制器尝试在与第一命令620相关联的数据之前写入与第二命令622相关联的数据。然而,写入指针610将与第一逻辑块地址相关联的第一逻辑块6120指示为第一可用逻辑块,但表650冲突地将第二逻辑块612i指示为第二命令622的起始逻辑块。由于写入指针610和表650指示针对第二命令622的不同起始LBA,因此与第二命令622相关联的数据不能被写入分区606。
图7A至图7F示出了根据一个实施方案的向ZNS 700的分区706的非顺序写入并且不接收分区附加命令。ZNS 700可与图4的存储设备400和NVM 404一起使用。ZNS 700可以是图4的ZNS 402。虽然在ZNS 700中仅示出了一个分区706,但ZNS 700可包括多个分区,并且下文所述的类似的无序写入活动可发生在多个分区中的一者或多者中。图8示出了跟踪由分区706检索的写入命令的示例性对应表800。ZNS 700的多个分区中的每个分区706可具有其自身的单独的表800,或者一个表800可跟踪由多个分区中的每个分区706检索的所有写入命令。表800可存储在控制器中、存储设备的存储器设备中和/或主机设备中。在一个实施方案中,存储设备和主机设备两者单独地存储表800。
如上所述,示例性NAND位置等于512字节的粒度。因此,MCL NAND的两个页面的LBA大小为512字节并且页面大小为16kB,这将导致大约每个字线16个NAND位置。然而,NAND位置大小不旨在是限制性的,并且仅用作示例。另外,虽然NAND用作示例,但也可以使用其他类型的存储器,并且NAND并非旨在进行限制。
图7A示出了分区706为空并且不存储数据(即,尚未检索到命令以将数据写入分区706)。分区706可处于空状态或活动状态。分区706包括多个逻辑块7120-7127(统称为逻辑块712)。逻辑块712中的每个逻辑块对应于在图8的对应表800中跟踪的LBA或扇区。虽然示出了八个逻辑块712,但分区706可包括任何数量的逻辑块712。ZSLBA指示分区706的起始或第一LBA,而ZSLBA+ZCAP指示分区706的结束或全容量(即,分区容量)。
控制器(诸如图4A的控制器408)被配置为从主机设备检索到分区706的新命令,并且DMA读取与新命令相关联的数据。然后,控制器可将与该命令相关联的数据写入分区706的一个或多个逻辑块712。分区706不利用写入指针,因为写入指针用于识别下一个顺序可用的逻辑块712。此外,关闭顺序检查,如上面图5A至图5B中所述。然而,控制器仍然可以实现可选的安全特征,以确定特定LBA是否已经在分区活动状态的当前持续时间期间被写入。如果在分区活动状态的当前持续时间期间已经写入特定LBA,则控制器可任选地拒绝对LBA的第二写入。
图8示出了跟踪分区706所接收的写入命令的对应表800。表800可存储在DRAM中。表800包括标识命令的写入ID(即,命令的顺序)的第一列852、标识起始LBA的第二列854、标识写入与命令相关联的数据和预期起始LBA所需的逻辑块的数量的第三列856、将用于存储与命令相关联的数据的LBA标识为不可用于写入(即,满的)的第四列860和标识与用于存储数据的LBA相关联的NAND地址的物理位置的第五列862。
图7B示出了在已从主机设备检索到对分区706的第一命令730并且与第一命令730相关联的数据已被写入分区706的第四逻辑块7123之后的分区706。主机识别分区706的哪个逻辑块712用来写入与第一命令730相关联的数据。主机设备可以在ZSLBA和ZSLBA+ZCAP之间选择分区706的任何可用逻辑块712,并且该选择不需要是顺序的。由于主机设备具体地识别分区706的一个或多个逻辑块712以存储数据,因此不需要使用写入指针。
然后,控制器检索第一命令730,DMA读取与第一命令730相关联的数据,并将数据写入由主机设备识别的所选择的逻辑块712(即,第四逻辑块7123)。当与第一命令730相关联的数据被编程到第四逻辑块7123时,与第四逻辑块7123相关联的NAND地址可以是存储设备的NAND或NVM中的第一可用NAND位置(即,对应的LBA指针指向NAND中的第一可用NL)。例如,第一命令730的数据的NAND地址可以是第一NAND位置NL0。利用常规分区附加命令,第四逻辑块7123对应于NAND中的第四NL(例如,第四NAND位置NL3)。因此,即使分区706的LBA不被顺序地编程,NAND或NVM也被顺序地编程。然后更新图8的表800,并且将完成条目返回到主机设备的完成队列,以通知主机设备与第一命令730相关联的数据已存储在由主机设备识别的所选择的逻辑块7123中。
主机设备和存储设备均可单独跟踪分区706的哪些逻辑块712已用于存储数据。一旦逻辑块712已被写入,主机设备和存储设备两者跟踪写入的逻辑块712是否不能或不可用于存储更多数据,直到分区706再次返回到空的状态。
图7C示出了在已从主机设备检索到对分区706的第二命令732并且与第二命令732相关联的数据已被写入分区706的第七逻辑块7126之后的分区706。主机再次识别分区706的哪个逻辑块712用来写入与第二命令732相关联的数据。除了已经存储与第一命令730相关联的状态的第四逻辑块7123之外,主机设备可以选择ZSLBA和ZSLBA+ZCAP之间的分区706的任何可用逻辑块712。主机设备对逻辑块712的选择不需要是顺序的。例如,与第一命令730相关联的数据存储在第四逻辑块7123中,而与第二命令732相关联的数据将存储在第七逻辑块7126中。
然后,控制器检索第二命令732,DMA读取与第二命令732相关联的数据,并将数据写入由主机设备识别的所选择的逻辑块712(即,第七逻辑块7126)。当与第二命令732相关联的数据被编程到第七逻辑块7126时,与第七逻辑块7126相关联的NAND地址可以是存储设备的NAND或NVM中的下一个可用NL(即,对应的LBA指针指向NAND中的下一个可用NL)。例如,第二命令732的数据的NAND地址可以是第二NAND位置NL1。利用常规分区附加命令,第七逻辑块7126对应于NAND中的第七NL(例如,第七NL6)。因此,即使分区706的LBA不被顺序地编程,NAND或NVM也被顺序地编程。然后更新图8的表800,并且将完成条目返回到主机设备的完成队列,以通知主机设备与第二命令732相关联的数据已存储在由主机设备识别的所选择的逻辑块7126中。
图7D示出了在已从主机设备检索到对分区706的第三命令734并且与第三命令734相关联的数据已被写入分区706的第二逻辑块7121、第三逻辑块7122和第八逻辑块7127之后的分区706。主机再次识别分区706的哪些逻辑块712写入与第三命令734相关联的数据,这需要多于一个逻辑块712。除了第四逻辑块7123和第七逻辑块7126之外,主机设备可以选择ZSLBA和ZSLBA+ZCAP之间的分区706的任何可用逻辑块712,第四逻辑块7123和第七逻辑块7126已经分别存储与第一命令730和第二命令732相关联的状态。主机设备对逻辑块712的选择不需要是顺序的。例如,与第三命令734相关联的数据将被存储在第二逻辑块7121、第三逻辑块7122和第八逻辑块7127中。
然后,控制器检索第三命令734,DMA读取与第三命令734相关联的数据,并将数据写入由主机设备识别的所选择的逻辑块712(即,第二逻辑块7121、第三逻辑块7122和第八逻辑块7127)。当与第三命令734相关联的数据被编程到第二逻辑块7121、第三逻辑块7122和第八逻辑块7127时,与第二逻辑块7121、第三逻辑块7122和第八逻辑块7127相关联的NAND地址可以是存储设备的NAND或NVM中的下一个可用NL(即,对应的LBA指针指向NAND中的下一个可用NL)。例如,第三命令734的数据的NAND地址可以是第三NAND位置NL2、第四NAND位置NL3和第五NAND位置NL4。利用常规分区附加命令,第二逻辑块7121、第三逻辑块7122和第八逻辑块7127分别对应于NAND中的第二NL、第三NL和第八NL(例如,第二NAND位置NL1、第三NAND位置NL2和第八NAND位置NL7)。因此,即使分区706的LBA不被顺序地编程,NAND或NVM也被顺序地编程。然后更新图8的表800,并且将完成条目返回到主机设备的完成队列,以通知主机设备与第三命令734相关联的数据已存储在由主机设备识别的所选择的逻辑块7121、7122、7127中。
图7E示出了在已从主机设备检索到对分区706的第四命令736并且与第四命令736相关联的数据已被写入分区706的第五逻辑块7124和第六逻辑块7125之后的分区706。主机再次识别分区706的哪些逻辑块712要写入与第四命令736相关联的数据,这需要多于一个逻辑块712。除了已经存储与第一命令730、第二命令732和第三命令734相关联的状态的第二逻辑块7121至第四逻辑块7123、第七逻辑块7126和第八逻辑块7127之外,主机设备可以选择ZSLBA和ZSLBA+ZCAP之间的分区706的任何可用逻辑块712。主机设备对逻辑块712的选择不需要是顺序的;然而,如果这样选择,主机设备可以选择顺序逻辑块。例如,与第四命令736相关联的数据将被存储在第四逻辑块7123和第五逻辑块7124中。
然后,控制器检索第四命令736,DMA读取与第四命令736相关联的数据,并将数据写入由主机设备识别的所选择的逻辑块712(即,第四逻辑块7123和第五逻辑块7124)。当与第四命令736相关联的数据被编程到第四逻辑块7123和第五逻辑块7124时,与第四逻辑块7123和第五逻辑块7124相关联的NAND地址可以是存储设备的NAND或NVM中的下一个可用NL(即,对应的LBA指针指向NAND中的下一个可用NL)。例如,第四命令736的数据的NAND地址可以是第六NAND位置NL5和第七NAND位置NL6。利用常规分区附加命令,第四逻辑块7123和第五逻辑块7124分别对应于NAND中的第四NL和第五NL(例如,第四NAND位置NL3和第五NAND位置NL4)。因此,即使分区706的LBA不被顺序地编程,NAND或NVM也被顺序地编程。然后更新图8的表800,并且将完成条目返回到主机设备的完成队列,以通知主机设备与第四命令736相关联的数据已存储在由主机设备识别的所选择的逻辑块7123、7124中。
图7F示出了在已从主机设备检索到对分区706的第五命令738并且与第五命令738相关联的数据已被写入分区706的第一逻辑块712o之后的分区706。主机再次识别分区706的哪个逻辑块712用来写入与第五命令738相关联的数据。除了已经存储与第一至第四命令730-736相关联的状态的第二至第八逻辑块7121-7127之外,主机设备可以选择ZSLBA和ZSLBA+ZCAP之间的分区706的任何可用逻辑块712。
然后,控制器检索第五命令738,DMA读取与第五命令738相关联的数据,并将数据写入由主机设备识别的所选择的逻辑块712(即,第一逻辑块7120)。当与第五命令738相关联的数据被编程到第一逻辑块712o时,与第一逻辑块7120相关联的NAND地址可以是存储设备的NAND或NVM中的下一个可用NL(即,对应的LBA指针指向NAND中的下一个可用NL)。例如,第五命令738的数据的NAND地址可以是第八NAND位置NL7。利用常规分区附加命令,第一逻辑块7120对应于NAND中的第一NL(例如,第一NAND位置NL0)。因此,即使分区706的LBA不被顺序地编程,NAND或NVM也被顺序地编程。然后更新图8的表800,并且将完成条目返回到主机设备的完成队列,以通知主机设备与第五命令738相关联的数据已存储在由主机设备识别的所选择的逻辑块7120中。
在将与第五命令738相关联的数据写入第一逻辑块7120时,分区706处于满状态,并且分区706的容量被完全利用。满的分区是完全填充有数据的分区,并且不再有用于写入数据的可用块。仍可执行满的分区中存储的数据的读取命令。ZM可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。一旦分区706擦除了数据,切换到擦除状态,然后切换到活动状态,主机设备就可以根据上述方法选择分区706的逻辑块712,以按照任何顺序写入数据。主机设备不限于以与上述相同的序列将数据写入分区706,而是可以任何顺序选择任何可用的逻辑块712。
在擦除分区706时,LBA指针都指向默认值,这意味着没有物理位置,诸如空、0x0000、0xFFFF等。当控制器接收到每次写入时,将数据写入下一个NAND位置,同时检查现有LBA值以确保其指向空。如果LBA值未指向跟踪表800中的空,则控制器确定这不是在该持续时间期间通过分区活动状态写入LBA的第一次。可任选地拒绝写入,因为主机不遵守仅一次写入每个LBA的新规则。拒绝写入和安全特征使得存储设备能够保持顺序写入流量,并确保后台垃圾回收特征可继续关闭。
相反地,在常规方法中,一旦分区被擦除,所有LBA就指向标记值,诸如空、0x0000、0xFFFF等。当写入顺序地填充分区时,写入指向放置数据的下一个NAND位置的每个LBA。同时,检查当前写入的LBA,以仅确定其是否与最后写入LBA为顺序的。
利用对该分区的非顺序写入,如图7至图8所述,而不是利用分区附加命令,使得存储设备能够切断所执行的工作量,因为存储设备跟踪写入,但不必跟踪和更新写入指针。此外,与分区附加命令不同,主机设备决定用于存储数据的LBA。因此,存储设备性能和主机性能两者均被提高,并且存储设备开销被降低。
要决定用于存储数据的LBA的主机设备可能能够使用该优点来避免竞争状况。这使得主机端应用中的一些现有结构能够继续而无需修改。例如,一些主机端应用具有知道所有可用存储LBA的一个实体,并且该实体将向其他主机应用管理写入位置。利用对该分区的非顺序写入,如图7至图8所述,允许主机中的其他应用保持其指定的LBA并在稍后的时间消耗其指定的LBA。因此,不存在对分区的非顺序写入的危险。由于存储设备可关闭顺序写入检查,因此改善了存储设备的耐久性。保持存储设备的耐久性,因为传入数据仍然可以放置在下一个可用NAND位置上。
在一个实施方案中,存储设备包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;以及耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区的第一命令以及直接存储器访问(DMA)读取与第一命令相关联的数据,识别第一分区的一个或多个第一逻辑块以写入与第一命令相关联的数据,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,检索将数据写入第一分区的第二命令以及DMA读取与第二命令相关联的数据,以及识别第一分区的一个或多个第二逻辑块以写入与第二命令相关联的数据,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第二逻辑块与一个或多个第一逻辑块间隔开一个或多个空逻辑块。
控制器被进一步配置为在检索用于写入数据的第二命令之前写入与第一命令相关联的数据,并且在识别第一分区的一个或多个第二逻辑块之后写入与第二命令相关联的数据。控制器被进一步配置为在写入与第一命令相关联的数据之后将第一完成条目返回到主机设备的完成队列,并且在写入与第二命令相关联的数据之后将第二完成条目返回到主机设备的完成队列。控制器被进一步配置为在写入与第一命令相关联的数据之后更新一个或多个跟踪表,以指示在返回第一完成条目之后,一个或多个第一逻辑块不可用于写入与后续命令相关联的数据,以及在写入与第二命令相关联的数据之后更新一个或多个跟踪表,以指示在返回第二完成条目之后,一个或多个第二逻辑块不可用于写入与后续命令相关联的数据。
一个或多个跟踪表包括存储在存储设备中的第一跟踪表和存储在主机设备中的第二跟踪表。主机设备使用第二跟踪表来选择用于存储与第二命令相关联的数据的一个或多个第二块。主机设备选择用于存储与第一命令相关联的数据的一个或多个第一块。
在另一个实施方案中,存储设备包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;以及耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区中的一个或多个第一逻辑块的第一命令,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址与第一分区的分区容量之间,将与第一命令相关联的数据写入第一分区的一个或多个第一逻辑块并写入介质单元中的第一位置,检索将数据写入第一分区中的一个或多个第二逻辑块的第二命令,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第二逻辑块与第一一个或多个逻辑块是非顺序的,以及将与第二命令相关联的数据写入第一分区的一个或多个第二逻辑块并写入介质单元中的第二位置,该第二位置位于第一位置的顺序位置。
控制器被进一步配置为检索将数据写入第一分区中的一个或多个第三逻辑块的第三命令,其中一个或多个第三逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第三逻辑块与一个或多个第二逻辑块是非顺序的,并且将与第三命令相关联的数据写入第一分区的一个或多个第三逻辑块并写入介质单元中的第三位置,第三位置位于第二位置的顺序位置。将与第二命令相关联的数据写入两个或更多个第二逻辑块,并且两个或更多个第二逻辑块彼此是非顺序的。主机设备选择用于存储与第一命令相关联的数据的一个或多个第一块以及用于存储与第二命令相关联的数据的一个或多个第二逻辑块。
控制器被进一步配置为在写入与第一命令相关联的数据之后将第一完成条目返回到主机设备的完成队列,并且在写入与第一命令相关联的数据之后更新一个或多个跟踪表以指示一个或多个第一逻辑块不可用于写入与后续命令相关联的数据。一个或多个跟踪表中的至少一个存储在存储设备的介质单元中。
在又一个实施方案中,存储系统包括:主机设备,该主机设备包括第一跟踪表;和存储系统。存储系统包括:介质单元,其中介质单元的容量被划分为多个分区,每个分区包括多个逻辑块,并且其中介质单元存储第二跟踪表;和耦接到介质单元的控制器。控制器被配置为检索将数据写入第一分区中的一个或多个第一逻辑块的第一命令以及DMA读取与第一命令相关联的数据,其中一个或多个第一逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,将与第一命令相关联的数据写入第一分区的一个或多个第一逻辑块,更新第一跟踪表和第二跟踪表以指示一个或多个第一逻辑块不可用于写入与后续命令相关联的数据,检索将数据写入第一分区中的一个或多个第二逻辑块的第二命令以及DMA读取与第二命令相关联的数据,其中一个或多个第二逻辑块在第一分区的分区起始逻辑块地址与第一分区的分区容量之间,并且其中一个或多个第二逻辑块中的至少一个第二逻辑块与一个或多个第一逻辑块是非顺序的,将与第二命令相关联的数据写入第一分区的一个或多个第二逻辑块;以及更新第一跟踪表和第二跟踪表以指示一个或多个第二逻辑块不可用于写入与后续命令相关联的数据。
控制器被进一步配置为检索将数据写入第一分区中的一个或多个第三逻辑块的第三命令以及DMA读取与第三命令相关联的数据,其中一个或多个第三逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中一个或多个第三逻辑块与至少一个或多个第二逻辑块是非顺序的,将与第三命令相关联的数据写入第一分区的一个或多个第三逻辑块,以及更新第一跟踪表和第二跟踪表以指示一个或多个第三逻辑块不可用于写入与后续命令相关联的数据。控制器被进一步配置为检索将数据写入第一分区中的两个或更多个第三逻辑块的第三命令以及DMA读取与第三命令相关联的数据,其中两个或更多个第三逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中两个或更多个第三逻辑块中的至少一个设置在第一一个或多个逻辑块与一个或多个第二逻辑块之间,将与第三命令相关联的数据写入第一分区的两个或更多个第三逻辑块,以及更新第一跟踪表和第二跟踪表以指示两个或更多个第三逻辑块不可用于写入与后续命令相关联的数据。
控制器被进一步配置为检索将数据写入第一分区中的两个或更多个第三逻辑块的第三命令以及DMA读取与第三命令相关联的数据,其中两个或更多个第三逻辑块在第一分区的分区起始逻辑块地址和第一分区的分区容量之间,并且其中两个或更多个第三逻辑块中的至少一者顺序地位于一个或多个第一逻辑块或一个或多个第二逻辑块之前,将与第三命令相关联的数据写入第一分区的两个或更多个第三逻辑块,以及更新第一跟踪表和第二跟踪表以指示两个或更多个第三逻辑块不可用于写入与后续命令相关联的数据。主机设备基于第一跟踪表来选择用于存储与第一命令相关联的数据的一个或多个第一块以及用于存储与第二命令相关联的数据的一个或多个第二逻辑块。
控制器被进一步配置为在写入与第一命令相关联的数据之后将第一完成条目返回到主机设备的完成队列,并且其中主机设备在接收到第一完成条目之后更新第一跟踪表。将与第二命令相关联的数据写入两个或更多个第二逻辑块,并且其中两个或更多个第二逻辑块彼此间隔开一个或多个空逻辑块或更多个第一逻辑块。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种存储设备,包括:
介质单元,其中所述介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
检索将数据写入第一分区的第一命令并直接存储器访问读取即DMA读取与所述第一命令相关联的数据;
识别所述第一分区的一个或多个第一逻辑块以写入与所述第一命令相关联的所述数据,其中所述一个或多个第一逻辑块在所述第一分区的分区起始逻辑块地址和所述第一分区的分区容量之间;
将与所述第一命令相关联的所述数据写入所述第一分区的一个或多个第一逻辑块;
检索将数据写入所述第一分区的第二命令并DMA读取与所述第二命令相关联的数据;
识别所述第一分区的一个或多个第二逻辑块以写入与所述第二命令相关联的所述数据,其中所述一个或多个第二逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述一个或多个第二逻辑块与所述一个或多个第一逻辑块间隔开一个或多个空逻辑块;
在DMA读取与所述第二命令相关联的所述数据之后所述一个或多个空逻辑块保持空时,将与所述第二命令相关联的所述数据写入所述第一分区的所述一个或多个第二逻辑块;以及
检索一个或多个附加命令以将数据写入所述第一分区并且将与所述一个或多个附加命令关联的数据顺序或者非顺序地写入所述第一分区内的一个或多个可用逻辑块,直到所述第一分区达到所述分区容量,其中一旦所述第一分区达到所述分区容量,就调度对所述第一分区内存储的所有数据的擦除。
2.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为:
在检索写入数据的所述第二命令之前写入与所述第一命令相关联的所述数据。
3.根据权利要求2所述的存储设备,其中所述控制器被进一步配置为:
在写入与所述第一命令相关联的所述数据之后,将第一完成条目返回到主机设备的完成队列;以及
在写入与所述第二命令相关联的所述数据之后,将第二完成条目返回到所述主机设备的所述完成队列。
4.根据权利要求3所述的存储设备,其中所述控制器被进一步配置为:
在写入与所述第一命令相关联的所述数据之后更新一个或多个跟踪表,以指示在返回所述第一完成条目之后,所述一个或多个第一逻辑块不可用于写入与后续命令相关联的数据;以及
在写入与所述第二命令相关联的所述数据之后更新所述一个或多个跟踪表,以指示在返回所述第二完成条目之后,所述一个或多个第二逻辑块不可用于写入与后续命令相关联的数据。
5.根据权利要求4所述的存储设备,其中所述一个或多个跟踪表包括存储在所述存储设备中的第一跟踪表和存储在所述主机设备中的第二跟踪表。
6.根据权利要求5所述的存储设备,其中所述主机设备使用所述第二跟踪表来选择用于存储与所述第二命令相关联的所述数据的所述一个或多个第二逻辑块。
7.根据权利要求1所述的存储设备,其中主机设备选择用于存储与所述第一命令相关联的所述数据的所述一个或多个第一逻辑块。
8.一种存储设备,包括:
介质单元,其中所述介质单元的容量被划分为多个分区,每个分区包括多个逻辑块;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
检索并且读取将数据写入第一分区中的一个或多个第一逻辑块的第一命令,其中所述一个或多个第一逻辑块在所述第一分区的分区起始逻辑块地址与所述第一分区的分区容量之间;
在紧接读取所述第一命令之后,将与所述第一命令相关联的所述数据写入所述第一分区的所述一个或多个第一逻辑块并写入所述介质单元中的第一位置;
检索并且读取将数据写入所述第一分区中的一个或多个第二逻辑块的第二命令,其中所述一个或多个第二逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述一个或多个第二逻辑块与所述一个或多个第一逻辑块是非顺序的;
在读取所述第二命令之后一个或多个空逻辑块在所述一个或多个第一逻辑块和所述一个或多个第二逻辑块之间保持空时,将与所述第二命令相关联的所述数据写入所述第一分区的所述一个或多个第二逻辑块并写入所述介质单元中的第二位置,所述第二位置位于所述第一位置的顺序位置;以及
检索一个或多个附加命令以将数据写入所述第一分区并且将与所述一个或多个附加命令关联的数据顺序或者非顺序地写入所述第一分区内的一个或多个可用逻辑块,直到所述第一分区达到所述分区容量,其中一旦所述第一分区达到所述分区容量,就调度对所述第一分区内存储的所有数据的擦除。
9.根据权利要求8所述的存储设备,其中在检索一个或多个附加命令之前,所述控制器被进一步配置为:
检索将数据写入所述第一分区中的一个或多个第三逻辑块的第三命令,其中所述一个或多个第三逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述一个或多个第三逻辑块与所述一个或多个第二逻辑块是非顺序的;以及
将与所述第三命令相关联的所述数据写入所述第一分区的所述一个或多个第三逻辑块并写入所述介质单元中的第三位置,所述第三位置位于所述第二位置的顺序位置。
10.根据权利要求8所述的存储设备,其中与所述第二命令相关联的所述数据被写入两个或更多个第二逻辑块,并且其中所述两个或更多个第二逻辑块彼此是非顺序的。
11.根据权利要求8所述的存储设备,其中主机设备选择用于存储与所述第一命令相关联的所述数据的所述一个或多个第一块,以及用于存储与所述第二命令相关联的所述数据的所述一个或多个第二逻辑块。
12.根据权利要求8所述的存储设备,其中在检索一个或多个附加命令之前,所述控制器被进一步配置为:
在写入与所述第一命令相关联的所述数据之后,将第一完成条目返回到主机设备的完成队列;以及
在写入与所述第一命令相关联的所述数据之后更新一个或多个跟踪表,以指示所述一个或多个第一逻辑块不可用于写入与后续命令相关联的数据。
13.根据权利要求12所述的存储设备,其中所述一个或多个跟踪表中的至少一个跟踪表存储在所述存储设备的所述介质单元中。
14.一种存储系统,包括:
主机设备,所述主机设备包括第一跟踪表;和
存储系统,其中所述存储系统包括:
介质单元,其中所述介质单元的容量被划分为多个分区,每个分区包括多个逻辑块,并且其中所述介质单元存储第二跟踪表;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
检索将数据写入第一分区中的一个或多个第一逻辑块的第一命令并DMA读取与所述第一命令相关联的数据,其中所述一个或多个第一逻辑块在所述第一分区的分区起始逻辑块地址和所述第一分区的分区容量之间;
在紧接检索所述第一命令并且DMA读取与所述第一命令相关联的所述数据之后,将与所述第一命令相关联的所述数据写入所述第一分区的所述一个或多个第一逻辑块;
更新所述第一跟踪表和所述第二跟踪表以指示所述一个或多个第一逻辑块不可用于写入与后续命令相关联的数据;
检索将数据写入所述第一分区中的一个或多个第二逻辑块的第二命令并DMA读取与所述第二命令相关联的数据,其中所述一个或多个第二逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述一个或多个第二逻辑块中的至少一个第二逻辑块与所述一个或多个第一逻辑块是非顺序的;
在检索所述第二命令并且DMA读取与所述第二命令相关联的所述数据之后一个或多个空逻辑块在所述一个或多个第一逻辑块和所述一个或多个第二逻辑块之间保持空时,将与所述第二命令相关联的所述数据写入所述第一分区的所述一个或多个第二逻辑块;
更新所述第一跟踪表和所述第二跟踪表以指示所述一个或多个第二逻辑块不可用于写入与后续命令相关联的数据;以及
检索一个或多个附加命令以将数据写入所述第一分区并且将与所述一个或多个附加命令关联的数据顺序或者非顺序地写入所述第一分区内的一个或多个可用逻辑块,直到所述第一分区达到所述分区容量,其中一旦所述第一分区达到所述分区容量,就调度对所述第一分区内存储的所有数据的擦除。
15.根据权利要求14所述的存储系统,其中在检索一个或多个附加命令之前,所述控制器被进一步配置为:
检索将数据写入所述第一分区中的一个或多个第三逻辑块的第三命令并DMA读取与所述第三命令相关联的数据,其中所述一个或多个第三逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述一个或多个第三逻辑块与至少所述一个或多个第二逻辑块是非顺序的;
将与所述第三命令相关联的所述数据写入所述第一分区的所述一个或多个第三逻辑块;以及
更新所述第一跟踪表和所述第二跟踪表以指示所述一个或多个第三逻辑块不可用于写入与后续命令相关联的数据。
16.根据权利要求14所述的存储系统,其中在检索一个或多个附加命令之前,所述控制器被进一步配置为:
检索将数据写入所述第一分区中的两个或更多个第三逻辑块的第三命令并DMA读取与所述第三命令相关联的数据,其中所述两个或更多个第三逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述两个或更多个第三逻辑块中的至少一个第三逻辑块设置在所述一个或多个第一逻辑块与所述一个或多个第二逻辑块之间;
将与所述第三命令相关联的所述数据写入所述第一分区的所述两个或更多个第三逻辑块;以及
更新所述第一跟踪表和所述第二跟踪表以指示所述两个或更多个第三逻辑块不可用于写入与后续命令相关联的数据。
17.根据权利要求14所述的存储系统,其中在检索一个或多个附加命令之前,所述控制器被进一步配置为:
检索将数据写入所述第一分区中的两个或更多个第三逻辑块的第三命令并DMA读取与所述第三命令相关联的数据,其中所述两个或更多个第三逻辑块在所述第一分区的所述分区起始逻辑块地址和所述第一分区的所述分区容量之间,并且其中所述两个或更多个第三逻辑块中的至少一个第三逻辑块顺序地位于所述一个或多个第一逻辑块或所述一个或多个第二逻辑块之前;
将与所述第三命令相关联的所述数据写入所述第一分区的所述两个或更多个第三逻辑块;以及
更新所述第一跟踪表和所述第二跟踪表以指示所述两个或更多个第三逻辑块不可用于写入与后续命令相关联的数据。
18.根据权利要求14所述的存储系统,其中所述主机设备基于所述第一跟踪表来选择用于存储与所述第一命令相关联的所述数据的所述一个或多个第一块以及用于存储与所述第二命令相关联的所述数据的所述一个或多个第二逻辑块。
19.根据权利要求18所述的存储系统,其中所述控制器被进一步配置为在写入与所述第一命令相关联的所述数据之后将第一完成条目返回到所述主机设备的完成队列,并且其中所述主机设备在接收到所述第一完成条目之后更新所述第一跟踪表。
20.根据权利要求14所述的存储系统,其中与所述第二命令相关联的所述数据被写入两个或更多个第二逻辑块,并且其中所述两个或更多个第二逻辑块彼此间隔开一个或多个空逻辑块或所述一个或多个第一逻辑块中的至少一个。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962899717P | 2019-09-12 | 2019-09-12 | |
US62/899,717 | 2019-09-12 | ||
US16/703,643 US11294827B2 (en) | 2019-09-12 | 2019-12-04 | Non-sequential zoned namespaces |
US16/703,643 | 2019-12-04 | ||
PCT/US2020/023171 WO2021050107A1 (en) | 2019-09-12 | 2020-03-17 | Non-sequential zoned namespaces |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113179658A CN113179658A (zh) | 2021-07-27 |
CN113179658B true CN113179658B (zh) | 2024-09-20 |
Family
ID=74865996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080006553.1A Active CN113179658B (zh) | 2019-09-12 | 2020-03-17 | 非顺序分区命名空间 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11294827B2 (zh) |
KR (1) | KR102569783B1 (zh) |
CN (1) | CN113179658B (zh) |
DE (1) | DE112020000139T5 (zh) |
WO (1) | WO2021050107A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593258B2 (en) * | 2019-11-26 | 2023-02-28 | Micron Technology, Inc. | Enhanced filesystem support for zone namespace memory |
KR20210108107A (ko) * | 2020-02-25 | 2021-09-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11860791B2 (en) * | 2020-04-24 | 2024-01-02 | Netapp, Inc. | Methods for managing input-output operations in zone translation layer architecture and devices thereof |
US11789611B2 (en) * | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
KR20220104511A (ko) * | 2021-01-18 | 2022-07-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) * | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
CN114138193B (zh) * | 2021-11-25 | 2024-03-26 | 郑州云海信息技术有限公司 | 一种分区命名空间固态硬盘的数据写入方法、装置及设备 |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
EP4449238A1 (en) | 2021-12-16 | 2024-10-23 | NetApp, Inc. | Scalable solid-state storage system and methods thereof |
US11995316B2 (en) | 2022-06-15 | 2024-05-28 | Samsung Electronics Co., Ltd. | Systems and methods for a redundant array of independent disks (RAID) using a decoder in cache coherent interconnect storage devices |
KR20240002402A (ko) | 2022-06-29 | 2024-01-05 | 에스케이하이닉스 주식회사 | 라이트 포인터 및 라이트 카운트를 이용하여 네임스페이스를 관리하는 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
US20240111456A1 (en) * | 2022-10-02 | 2024-04-04 | Silicon Motion, Inc. | Storage device controller and method capable of allowing incoming out-of-sequence write command signals |
US20230229358A1 (en) * | 2023-03-23 | 2023-07-20 | Lemon Inc. | Zoned namespaces storage device and system |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526599B2 (en) | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
US8112574B2 (en) | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US8607016B2 (en) * | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US7779056B2 (en) | 2006-09-15 | 2010-08-17 | Sandisk Corporation | Managing a pool of update memory blocks based on each block's activity and data order |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
US20080235464A1 (en) * | 2007-03-19 | 2008-09-25 | Shai Traister | System for conversion of update blocks based on comparison with a threshold size |
US20080235489A1 (en) | 2007-03-19 | 2008-09-25 | Sergey Anatolievich Gorobets | Systems for forcing an update block to remain sequential |
US9612948B2 (en) * | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US20150212752A1 (en) * | 2013-04-08 | 2015-07-30 | Avalanche Technology, Inc. | Storage system redundant array of solid state disk array |
KR102148889B1 (ko) * | 2014-08-18 | 2020-08-31 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
KR20160027805A (ko) * | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US20170337212A1 (en) * | 2015-01-13 | 2017-11-23 | Hitachi Data Systems Engineering UK Limited | Computer program product, method, apparatus and data storage system for managing defragmentation in file systems |
US9696934B2 (en) * | 2015-02-12 | 2017-07-04 | Western Digital Technologies, Inc. | Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory |
US9940261B2 (en) * | 2016-05-05 | 2018-04-10 | Western Digital Technology, Inc. | Zoning of logical to physical data address translation tables with parallelized log list replay |
KR20170128012A (ko) | 2016-05-13 | 2017-11-22 | 주식회사 맴레이 | 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 |
JP6855704B2 (ja) * | 2016-08-22 | 2021-04-07 | 富士通株式会社 | ストレージシステム、ストレージ制御装置及びデータ格納方法 |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN109582599B (zh) * | 2017-09-29 | 2023-12-22 | 上海宝存信息科技有限公司 | 数据储存装置以及非挥发式存储器操作方法 |
US10621084B2 (en) * | 2018-03-05 | 2020-04-14 | International Business Machines Corporation | Efficient garbage collection in the presence of block dependencies |
-
2019
- 2019-12-04 US US16/703,643 patent/US11294827B2/en active Active
-
2020
- 2020-03-17 WO PCT/US2020/023171 patent/WO2021050107A1/en active Application Filing
- 2020-03-17 DE DE112020000139.3T patent/DE112020000139T5/de active Pending
- 2020-03-17 CN CN202080006553.1A patent/CN113179658B/zh active Active
- 2020-03-17 KR KR1020217016550A patent/KR102569783B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
CN113179658A (zh) | 2021-07-27 |
WO2021050107A1 (en) | 2021-03-18 |
KR20210076143A (ko) | 2021-06-23 |
DE112020000139T5 (de) | 2021-07-29 |
US20210081330A1 (en) | 2021-03-18 |
KR102569783B1 (ko) | 2023-08-22 |
US11294827B2 (en) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113179658B (zh) | 非顺序分区命名空间 | |
CN113196226B (zh) | 固态驱动器中的分区命名空间 | |
CN112148627B (zh) | 针对分区命名空间的分区形成 | |
CN113168374B (zh) | 写入命令在分区命名空间中的保持 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
CN114730248A (zh) | 对分区转变为开放的速率限制 | |
US11436153B2 (en) | Moving change log tables to align to zones | |
US20210374003A1 (en) | ZNS Parity Swapping to DRAM | |
CN117043753A (zh) | Zns设备中的不同写入优先级 | |
US20220075718A1 (en) | Keeping Zones Open With Intermediate Padding | |
CN114077547A (zh) | 具有分区命名空间的主机管理的硬件压缩 | |
CN113744783A (zh) | 分区名称空间(zns)驱动器中的写入数据传送调度 | |
CN114730250A (zh) | 根据存储设备中的分区对读取命令加权 | |
US11853565B2 (en) | Support higher number of active zones in ZNS SSD | |
US20230061979A1 (en) | Solution For Super Device Imbalance In ZNS SSD | |
WO2023027782A1 (en) | Purposeful super device imbalance for zns ssd efficiency | |
CN118901052A (zh) | 基于存储设备热负载的受控系统管理 | |
CN117616377A (zh) | 跨zns ssd中的超级设备的超级块分配 | |
CN116897341A (zh) | 隐含流 | |
CN114730291A (zh) | 具有分区的ssd的数据停放 | |
CN114730605A (zh) | 用于存储设备的加权读取命令和开放块定时器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240829 Address after: California, USA Applicant after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Applicant before: Western Digital Technologies, Inc. Country or region before: U.S.A. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |