CN113168374A - 写入命令在分区命名空间中的保持 - Google Patents

写入命令在分区命名空间中的保持 Download PDF

Info

Publication number
CN113168374A
CN113168374A CN201980079462.8A CN201980079462A CN113168374A CN 113168374 A CN113168374 A CN 113168374A CN 201980079462 A CN201980079462 A CN 201980079462A CN 113168374 A CN113168374 A CN 113168374A
Authority
CN
China
Prior art keywords
command
page
data
data associated
erase block
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.)
Pending
Application number
CN201980079462.8A
Other languages
English (en)
Inventor
D·L·赫尔米克
P·格雷森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN113168374A publication Critical patent/CN113168374A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

本公开整体涉及操作存储设备的方法。该存储设备的控制器第一次检索第一命令的数据,并且执行该第一命令的该数据到第一擦除块中的第一页面的第一遍编程。然后,该控制器第一次检索第二命令的数据,并且该控制器执行该第二命令的该数据到该第一擦除块中的第二页面的第一遍编程。在检索到该第二命令时,该控制器通过第二次检索该第一命令的该数据并且通过执行第二遍编程将该第一命令的该数据写入到该第一页面来完成对该第一命令的处理。该第一命令的该数据被存储在主机设备中,直到该第二遍编程完成。

Description

写入命令在分区命名空间中的保持
相关申请的交叉引用
本申请要求2019年11月26日提交的美国专利申请号16/696,830的优先权,该专利申请要求2019年6月28日提交的美国临时专利申请序列号62/868,792的权益,这两个专利申请据此以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器从主机设备接收读取或写入数据的命令。对于写入命令,与命令相关联的数据然后被临时存储在控制器的内部缓冲器或存储器中。一旦与命令相关联的数据被存储在控制器的内部存储器中,那么控制器就向主机发送命令完成条目。同时,将与命令相关联的数据在后台写入到介质或存储器设备。因此,数据在处理写入命令的整个持续时间内存储在控制器的内部存储器中。
然而,SSD控制器具有有限的内部存储量,这在电力和成本两方面对SSD造成影响。如果控制器的内部存储器完全填满,则控制器可减少并行生效的命令的数量或在不拉入相关联的数据的情况下解析命令。因此,在发送命令完成条目时以及在将数据写入到介质时将与命令相关联的数据临时存储在控制器的内部存储器中不利地影响整体SSD性能、吞吐量和效率,并且增加在处理命令时消耗的电力。
因此,需要一种提高存储设备的性能和吞吐量同时减少所消耗的电力的操作存储设备的方法。
发明内容
本公开整体涉及操作存储设备的方法。存储设备的控制器第一次检索第一命令的数据,并且执行该第一命令的数据到第一擦除块中的第一页面的第一遍编程。然后,控制器第一次检索第二命令的数据,并且控制器执行该第二命令的数据到第一擦除块中的第二页面的第一遍编程。在检索到第二命令时,控制器通过第二次检索第一命令的数据并且通过执行第二遍编程将第一命令的数据写入到第一页面来完成对第一命令的处理。第一命令的数据被存储在主机设备中,直到第二遍编程完成。
在一个实施方案中,存储设备包括介质单元和耦接到介质单元的控制器,其中介质单元的容量被分成多个分区。控制器被配置为:检索将数据写入到介质单元的第一擦除块中的第一页面的第一命令,该第一擦除块被设置在所述多个分区中的第一分区中;检索将数据写入到第一擦除块中的第二页面的第二命令;以及在检索到该第二命令时,将与第一命令相关联的数据写入到该第一擦除块中的第一页面。
在另一个实施方案中,存储设备包括介质单元。所述介质单元的容量被分成多个分区。存储设备还包括耦接到介质单元的控制器。控制器被配置为:执行与第一命令相关联的数据的第一遍编程,以将该数据部分写入到所述多个分区中的第一分区的第一擦除块中的第一页面;执行与第二命令相关联的数据的第一遍编程,以将该数据部分写入到第一擦除块中的第二页面;在执行与第二命令相关联的数据的第一遍编程时,执行第二遍编程以将与第一命令相关联的数据写入到第一擦除块中的第一页面。
在又一个实施方案中,存储设备包括介质单元和耦接到介质单元的控制器,其中介质单元的容量被分成多个分区。控制器被配置为:检索将数据写入到存储设备的第一擦除块中的第一页面的第一命令,该第一擦除块被设置在所述多个分区中的第一分区中;在施加达第一时间量的第一电压目标下将与第一命令相关联的数据部分写入到第一擦除块中的第一页面;检索将数据写入到第一擦除块中的第二页面的第二命令;在第一电压目标下将与第二命令相关联的数据部分写入到第一擦除块中的第二页面;以及在检索到第二命令时,在施加达第二时间量的第二电压目标下将与第一命令相关联的数据写入到第一擦除块中的第一页面,该第二时间量大于该第一时间量。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出了根据一个实施方案的存储系统的示意框图。
图2示出了根据另一个实施方案的包括耦接到主机设备的存储设备的存储系统。
图3是示出了根据一个实施方案的操作存储设备以执行读取或写入命令的方法的框图。
图4A示出了根据一个实施方案的在存储设备中利用的分区命名空间。
图4B示出了根据一个实施方案的针对图4A的存储设备的分区命名空间的状态图。
图5A示出了根据一个实施方案的用于操作存储设备的方法。
图5B示出了展示如在图5A的方法中所提及的用于第一遍编程和第二遍编程的预期电压分布的示例图。
图6示出了根据另一个实施方案的用于操作存储设备的方法。
图7示出了根据一个实施方案的在电力故障期间操作存储设备的方法。
图8示出了根据另一个实施方案的用于在垃圾回收过程期间操作不利用ZNS的存储设备的方法。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及操作存储设备的方法。存储设备的控制器第一次检索第一命令的数据,并且执行该第一命令的数据到第一擦除块中的第一页面的第一遍编程。然后,控制器第一次检索第二命令的数据,并且控制器执行该第二命令的数据到第一擦除块中的第二页面的第一遍编程。在检索到第二命令时,控制器通过第二次检索第一命令的数据并且通过执行第二遍编程将第一命令的数据写入到第一页面来完成对第一命令的处理。第一命令的数据被存储在主机设备中,直到第二遍编程完成。
图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可以包括印刷板(PB),存储设备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)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口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)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
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中,直到高速缓存的信息被写入非易失性存储器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。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM 110之前将与写入命令相关联的数据暂时存储在内部存储器120中。
图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的数据-QD 242等于存储设备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中,响应于接收到门铃或中断信号,存储设备的控制器从一个或多个提交队列获取命令,并且该控制器接收该命令。
在操作356中,控制器处理命令并将与该命令相关联的数据写入或转移到主机设备存储器。该控制器一次可以处理多于一个命令。例如,处理所接收的第一命令可包括将与第一命令相关联的数据部分写入到存储器设备,诸如NAND存储器设备。部分写入可以是数据的第一遍编程。在接收到第二命令时,控制器可部分写入第二命令,并且完成第一命令的写入(即,第二遍编程)。
在操作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位置或页面)。
分区406中的每个分区与分区开始逻辑块地址(ZSLBA)相关联。ZSLBA是分区406中的第一可用LBA。例如,第一分区406a与ZaSLBA相关联,第二分区406b与ZbSLBA相关联,第三分区406c与ZcSLBA相关联,第四分区406d与ZdSLBA相关联,并且第n分区406n(即最后一个分区)与ZnSLBA相关联。每个分区406由其ZSLBA标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序来将数据写入NVM 110)。
当将数据写入分区406时,写入指针410被推进或更新以指向或指示分区406中的用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针410指示对分区406的后续写入将在何处开始。后续写入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针410指示为下一个起始点的位置处被附加到分区406。分区406内的LBA的排序列表可被存储用于写入排序。每个分区406可以具有其自身的写入指针410。因此,当接收到写入命令时,分区由其ZSLBA标识,并且写入指针410确定在所识别的分区内开始写入数据的位置。
图4B示出了针对图4A的ZNS 402的状态图450。在状态图450中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不含数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于ZSLBA(即,WP=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可向主机提供活动状态下的推荐时间的描述。控制器可包括ZM。
术语“写入”包括当用户数据未填充所有可用字线时,在擦除块中的0个或更多字线、擦除和/或擦除块中的部分填充字线上编程用户数据。术语“写入”还可包括由于以下原因而关闭分区:内部驱动器处理需要(因为误比特在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备400由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。从主机设备中拉入的新数据或正在重定位的有效数据可以写入开放分区。有效数据可从一个分区(例如,第一分区402a)移动到另一个分区(例如,第三分区402c)以用于垃圾回收目的。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器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发起或拉入写入命令时,控制器408可选择空分区406以将与命令相关联的数据写入,并且空分区406切换到活动分区406。如本文所用,控制器408发起或拉入写入命令包括接收写入命令或直接存储器访问(DMA)读取该写入命令。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器408被配置为从由主机设备填充的提交队列中DMA读取或拉入新命令。
在刚切换到活动分区406的空分区406中,数据在ZSLBA处开始被写入分区406,因为写入指针410将与ZSLBA相关联的逻辑块指示为第一可用逻辑块。该数据可被写入一个或多个擦除块或针对分区406的物理位置而已分配的NAND位置。在将与写入命令相关联的数据写入分区406之后,写入指针410被更新为指向分区406中的下一个可用块,以跟踪下一个写入起始点(即,第一写入的完成点)。另选地,控制器408可选择用于将数据写入的活动分区。在活动分区中,将数据写入由写指针410指示为下一个可用块的逻辑块。
在一些实施方案中,NAND位置可等于字线。在此类实施方案中,如果写入命令小于字线,则控制器可任选地在对由多个写入命令构成的完整字线进行编程之前在另一个存储器位置诸如DRAM或SRAM中聚集若干写入命令。长于字线的写入命令将能够编程完整的字线并用数据中的一些填充该完整的字线,并且超出字线的过量数据将用于填充下一个字线。然而,NAND位置不限于等于字线,并且可具有比字线更大或更小的大小。例如,在一些实施方案中,NAND位置可等于页面的大小。
例如,控制器408可接收、拉入或DMA读取第一写入命令或第一分区附加命令到第三分区406c。主机按顺序识别分区406的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区406c中的如由写入指针410所指示的第一或下一个或多个可用LBA,并且写入指针410被推进或更新以指向可用于主机写入的下一个可用LBA(即,WP>0)。如果控制器408接收第二写入命令或者将第二写入命令拉入到第三分区406c,则与第二写入命令相关联的数据被写入第三分区406c的由写入指针410识别的下一个或多个可用LBA。一旦将与第二命令相关联的数据写入第三分区406c,则写入指针410就再次推进或更新以指向可用于主机写入的下一个可用LBA。重置第三分区406c将写入指针410移动回到ZcSLBA(即,WP=0),并且该第三分区406c切换到空分区。
图5A示出了根据一个实施方案的用于操作存储设备的方法500。图5B示出了展示方法500中所提及的用于第一遍编程(即,“模糊”编程)和第二遍编程(即,“精细”编程)的预期电压分布的示例图550。方法500可与包括控制器108的图1的存储系统100或包括命令处理器220的图2的存储系统200一起使用。方法500可使用利用ZNS(诸如图4的ZNS 402)的存储设备来实现。
在操作502中,检索将数据写入到第一擦除块中的第一页面或第一NAND位置的第一命令,与该第一命令相关联的数据从主机设备第一次被拉入、DMA读取或传输到存储设备,并且该第一命令被部分处理。第一擦除块可位于第一分区中。第一擦除块设置在介质单元诸如NAND存储器设备内。在一个实施方案中,介质单元是QLC NAND介质单元。部分处理第一命令可包括读取与第一命令相关联的数据,并且将与第一命令相关联的数据部分写入或对其执行第一遍编程到第一擦除块中的第一页面或第一NAND位置(即,数据的“模糊”编程)。在施加到第一页面或第一NAND位置的每个单元达第一时间量的第一电压目标下执行数据的部分写入。控制器可任选地丢弃与第一命令相关联的数据。
在一个实施方案中,NAND页面顺序的模糊-精细编程和交织编程的原因在于在模糊状态期间施加的高电压,这导致了相邻页面上出现高干扰。将来在两个NAND页面保持模糊编程电压意味着较低电压的精细编程步骤不会干扰相邻页面和这些相邻页面的数据。因此,最近完成的精细编程页面仅略微受正在进行精细编程步骤的精细编程的影响。类似地,相同的NAND页面与经历了模糊编程电压的页面相距两个页面。
由于与第一命令相关联的数据仅部分写入到第一页面(或第一NAND位置)或被完全丢弃,因此在一些具体实施中,该数据可能是不可读取的。另外,尽管数据可被部分写入,但第一命令是未完成的并且数据被存储在主机设备中而不是控制器中。虽然数据可在检索第一命令和将与第一命令相关联的数据部分写入到第一擦除块之间通过控制器的内部存储器,但是在处理该第一命令的持续时间内,数据不被存储在控制器存储器中。
在操作504中,检索将数据写入到第一擦除块中的第二页面或第二NAND位置的第二命令,与该第二命令相关联的数据从主机设备第一次被拉入、DMA读取或传输到存储设备,并且该第二命令被部分处理。部分处理第二命令可包括读取与第二命令相关联的数据,并且将与第二命令相关联的数据部分写入或对其执行第一遍编程到第一擦除块中的第二页面或第二NAND位置(即,数据的“模糊”编程)。在第一电压目标下执行数据的部分写入。在一个实施方案中,可将第二命令写入到介质单元的第二擦除块。控制器可任选地丢弃与第二命令相关联的数据。
在操作506中,在检索到第二命令时,通过第二次拉入、DMA读取或传输与第一命令相关联的数据并将与第一命令相关联的数据写入到第一擦除块中的第一页面或第一NAND位置来完成对该第一命令的处理。在检索到第二命令时写入与第一命令相关联的数据是在大于第一电压目标的第二电压目标下执行的,并且是该数据的第二遍编程(即,数据的“精细”编程)。将第二电压目标施加到第一页面或第一NAND位置的每个单元达大于第一时间量的第二时间量。检索第二命令触发与第一命令相关联的数据的完全写入(即,直到存储设备接收到第二命令时才完成与该第一命令相关联的数据的写入)。因此,将第一命令保持“劫持”(即,未完成、仅部分完成和/或暂停),直到检索到第二命令。将第一命令保持“劫持”还可包括扣留或延迟来自主机设备的写入完成条目或通知。一旦对第一命令的处理完成,则可从介质单元读取数据。
在将与第一命令相关联的数据写入到第一擦除块中的第一页面或第一NAND位置之后,控制器发信号通知第一命令的完成。控制器可通过以下方式发信号通知第一命令的完成:将对应于第一命令的第一完成条目写入到完成队列,更新完成队列尾部以指向第一完成条目以及向主机设备敲响门铃。然后,方法500可在从主机设备接收到后续命令时重复一次或多次。
图5B示出了展示用于第一遍编程(即,“模糊”编程)和第二遍编程(即,“精细”编程)的预期电压分布的示例图550。如图所示,编程的模糊状态552施加大的电压脉冲以对页面或NAND位置的单元进行编程,而精细状态554施加更小、更精确的电压脉冲以对页面或NAND位置的单元进行编程。对于电压状态的最终分布,模糊状态552的电压可能不能很好地控制。此类精度的缺乏是由于模糊编程状态使电压分布穿越较大的速度变化。更精确地施加精细状态554的电压,使得电压状态在精确控制的状态下完成。为了达到精确控制的状态,施加具有较小电压增量的较慢编程步骤,并且介质电路可在这些精细电压编程步骤期间应用对中间状态和/或最终状态的额外感测。
上述方法描述了其中与主机写入命令相关联的数据足够大到填充页面或NAND位置(即,与主机命令相关联的数据等于一个页面大小或一个NAND位置大小)的实施方案。然而,在其中主机写入命令太小而不能填充页面或NAND位置(即,与主机命令相关联的数据小于一个页面大小或一个NAND位置大小)或对于一个页面或一个NAND位置太大(即,与主机命令相关联的数据大于一个页面大小或一个NAND位置大小)的实施方案中,上述方法仍然适用。
在其中与主机写入命令相关联的数据太大而不能填充页面或NAND位置的实施方案中,与主机写入命令相关联的数据首先分解成页面大小或NAND位置大小。在其中与主机写入命令相关联的数据太小而不能填充页面或NAND位置的实施方案中,可能需要多于一个主机命令来填充页面或NAND位置,并且可聚集多个主机写入命令以填充页面或NAND位置。此外,可任选地合并太小而不能填充页面或NAND位置的主机写入命令。合并写入命令是可利用的由存储设备进行的独立决定,并且存储设备在选择是否合并写入命令时可考虑队列深度。
图6示出了根据另一个实施方案的用于操作存储设备的方法600。方法600可与图1的存储设备106或图2的存储设备206一起使用。方法600可使用利用ZNS(诸如图4的ZNS402)的存储设备来实现。
在操作602中,由存储设备的控制器检索将数据写入到第一擦除块中的第一页面或第一NAND位置的第一命令,并且与该第一命令相关联的数据第一次被拉入、DMA读取或传输。第一擦除块可位于第一分区中。在一个实施方案中,从主机设备诸如图1的主机设备104或图2的主机设备204检索第一命令。在另一个实施方案中,出于垃圾回收的目的,从另一个擦除块检索与第一命令相关联的数据。第一擦除块设置在介质单元或介质内,诸如NAND介质单元。在一个实施方案中,介质单元是QLC NAND介质单元。检索第一命令包括执行从主机设备对与第一命令相关联的数据的第一读取。
在操作604中,在第一电压目标下将与第一命令相关联的数据部分写入到第一擦除块中的第一页面或第一NAND位置。将第一电压电平施加到第一页面或第一NAND位置的每个单元达第一时间量。数据的部分写入可以是“模糊”写入或编程,如图5B所述。部分写入可以是数据的第一遍编程。控制器可任选地丢弃与第一命令相关联的数据。
由于与第一命令相关联的数据仅部分写入到第一擦除块或被丢弃,因此数据是不可读取的。另外,尽管数据被部分写入,但第一命令是未完成的并且数据仍然被存储在主机设备中而不是控制器中。虽然数据可在检索第一命令和将与第一命令相关联的数据部分写入到第一擦除块之间通过控制器的内部存储器,但是在处理该第一命令的持续时间内,数据不被存储在控制器存储器中。
在操作606中,由控制器检索将数据写入到第一擦除块中的第二页面或第二NAND位置的第二命令,并且与写入数据的第二命令相关联的数据第一次被拉入、DMA读取或传输,类似于操作602。检索第二命令包括执行从主机设备对与第二命令相关联的数据的第一读取。在一个实施方案中,从主机设备诸如图1的主机设备104或图2的主机设备204检索第二命令。在另一个实施方案中,出于垃圾回收的目的,从另一个擦除块检索与第二命令相关联的数据。
在操作608中,在第一电压目标下将与第二命令相关联的数据部分写入到第一擦除块中的第二页面或第二NAND位置,类似于操作604。在一个实施方案中,可将第二命令写入到介质单元的第二擦除块。控制器可任选地丢弃与第二命令相关联的数据。
在操作610中,当在操作606中检索到第二命令时,与第一命令相关联的数据第二次被拉入、DMA读取或传输,并且在第二电压目标下写入到第一擦除块中的第一页面或第一NAND位置。将第二电压目标施加到第一页面或第一NAND位置的每个单元达大于第一时间量的第二时间量。数据在第二电压目标下的写入可以是“精细”写入,如图5B所述。数据在第二电压目标下的写入可以是该数据的第二遍编程。在第二电压目标下写入与第一命令相关联的数据包括执行从主机设备对与第一命令相关联的数据的第二读取。
当在第二电压目标下写入数据之后,可从存储设备读取该数据。检索第二命令触发与第一命令相关联的数据的完全写入(即,直到存储设备接收到第二命令时才完成与该第一命令相关联的数据的写入)。因此,将第一命令保持“劫持”(即,未完成、仅部分完成和/或暂停),直到接收到第二命令。
在操作612中,控制器任选地发信号通知第一命令的完成。控制器向从主机设备接收的命令发命令通知第一命令的完成。控制器可通过以下方式发信号通知第一命令的完成:将对应于第一命令的第一完成条目写入到完成队列,更新完成队列尾部以指向第一完成条目以及向主机设备敲响门铃。与常规方法不同,在与第一命令相关联的数据的写入已被完全处理(即,对命令的处理现在不在后台进行)之后,将第一完成条目写入到完成队列。
如果出于垃圾回收的目的检索到与第一命令相关联的数据,则控制器不发信号通知第一命令的完成。因此,当出于垃圾回收的目的检索到与第一命令相关联的数据时,从主机设备的角度来看,第一命令不被暂停或保持“劫持”。
当接收到更多命令时,方法600以相同的方式继续。例如,可检索将数据写入到第一擦除块(或不同擦除块)中的第三页面或第三NAND位置的第三命令,并且在写入对应于第一写入命令的第一完成条目之后将与第三命令相关联的数据第一次拉入、DMA读取或传输。然后,将与第三命令相关联的数据部分写入到第一擦除块中的第三页面或第三NAND位置或将其丢弃。在检索到第三命令时,与第二命令相关联的数据第二次被拉入、DMA读取或传输,并且在第二电压目标下写入到第一擦除块中的第二页面或第二NAND位置。控制器可通过以下方式发信号通知第二命令的完成:将对应于第二命令的第二完成条目写入到完成队列,更新完成队列尾部以指向第二完成条目以及向主机设备敲响门铃。
因此,一旦检索到新命令,则在第一电压目标下将新命令部分写入到新页面或新NAND位置,并且在第二电压目标下将先前检索到的命令写入到不同页面或不同NAND位置。换句话说,执行新命令的第一遍编程,并且执行先前接收到的命令的第二遍编程。
上述方法描述了其中与主机写入命令相关联的数据足够大到填充页面或NAND位置(即,与主机命令相关联的数据等于一个页面大小或一个NAND位置大小)的实施方案。然而,在其中主机写入命令太小而不能填充页面或NAND位置(即,与主机命令相关联的数据小于一个页面大小或一个NAND位置大小)或对于一个页面或一个NAND位置太大(即,与主机命令相关联的数据大于一个页面大小或一个NAND位置大小)的实施方案中,上述方法仍然适用。
在其中与主机写入命令相关联的数据太大而不能填充页面或NAND位置的实施方案中,与主机写入命令相关联的数据首先分解成页面大小或NAND位置大小。在其中与主机写入命令相关联的数据太小而不能填充页面或NAND位置的实施方案中,可能需要多于一个主机命令来填充页面或NAND位置,并且可聚集多个主机写入命令以填充页面或NAND位置。此外,可任选地合并太小而不能填充页面或NAND位置的主机写入命令。合并写入命令是可利用的由存储设备进行的独立决定,并且存储设备在选择是否合并写入命令时可考虑队列深度。
图7示出了根据一个实施方案的在电力故障期间操作存储设备的方法700。方法700可与包括控制器108的图1的存储系统100或包括命令处理器220的图2的存储系统200一起使用。方法700可使用利用ZNS(诸如图4的ZNS 402)的存储设备来实现。另外,方法700可使用不利用ZNS的存储设备来实现。
在操作702中,检索将数据写入到第一擦除块中的第一页面或第一NAND位置的第一命令,与该第一命令相关联的数据第一次被拉入或DMA读取,并且该第一命令被部分处理。第一擦除块可位于第一分区中。第一擦除块设置在介质单元或介质内,诸如NAND介质单元。在一个实施方案中,介质单元是QLC NAND介质单元。部分处理第一命令可包括读取与第一命令相关联的数据,并且将与第一命令相关联的数据部分写入或对其执行第一遍编程到第一擦除块中的第一页面(即,数据的“模糊”编程),如图5B所述。在施加到第一页面或第一NAND位置的每个单元达第一时间量的第一电压目标下执行数据的部分写入。控制器可任选地丢弃与第一命令相关联的数据。
在操作704中,存储设备将第一命令保持“劫持”(即,未完成、仅部分完成和/或暂停)并等待第二次拉入或DMA读取与该第一命令相关联的数据以完成对该第一命令的处理,直到接收到第二命令。在操作706中,接收到电力损失或电力故障通知。在接收、拉入或DMA读取第二命令之前接收到电力损失通知。
在操作708中,存储设备可任选地将虚拟数据模糊编程到第一擦除块的第二页面或第二NAND位置,并且第二次拉入或DMA读取与第一命令相关联的数据以完成对该第一命令的处理。第二次拉入或DMA读取与第一命令相关联的数据使得存储设备能够完成对与第一命令相关联的数据的写入,使得可从介质单元读取该数据,如上文在方法500和600中所述。一旦对第一命令的处理完成,则可从介质单元读取数据。然后,可向主机返回写入完成通知,该写入完成通知发消息通知在下一次上电时存储设备可读取该数据。
另选地,在接收到电力损失通知时,存储设备可能未完成第一命令。在此类实施方案中,与第一命令相关联的数据的第二次拉入或DMA读取未完成,并且数据的编程处于未完成状态。如果存储设备未能完成第一命令,则与第一命令相关联的数据在下一次启动时可能是不可读取的或无效的。当接口规范适用于每个SSD时,将处理不完整的写入。就NVMe而言,写入将是不完整的,并且数据不需要是可读的。
方法500、600和700可各自单独地使用不利用ZNS的存储设备来实现。然而,不利用ZNS的存储设备可出于垃圾回收的目的将有效数据从第一擦除块移动到第二擦除块。图8示出了根据另一个实施方案的用于在垃圾回收过程期间操作不利用ZNS的存储设备的方法900。方法800可与图1的存储设备106或图2的存储设备206一起使用。
在操作802中,接收将有效数据重新写入到第一擦除块中的第一页面或第一NAND位置的第一垃圾回收(GC)命令,与该第一GC命令相关联的有效数据第一次被拉入或DMA读取,并且该第一GC命令被部分处理。第一擦除块设置在介质单元或介质内,诸如NAND介质单元。在一个实施方案中,介质单元是QLC NAND介质单元。部分处理第一GC命令可包括读取与第一GC命令相关联的有效数据,并且将与第一GC命令相关联的有效数据部分写入或对其执行第一遍编程到第一擦除块中的第一页面或第一NAND位置(即,数据的“模糊”编程),如图5B所述。在施加到第一页面或第一NAND位置的每个单元达第一时间量的第一电压目标下执行有效数据的部分写入。控制器可任选地丢弃与第一GC命令相关联的有效数据。
在操作804中,与第一GC命令相关联的有效数据第二次被拉入或DMA读取以完成对第一GC回收命令的处理,并且与第一GC命令相关联的有效数据被重新写入到第一擦除块中的第一页面或第一NAND位置,而无需等待接收到第二GC命令。重新写入与第一GC命令相关联的有效数据是在大于第一电压电平的第二电压电平下执行的,并且是该数据的第二遍编程(即,数据的“精细”编程),如图5B所述。第二电压电平是用于处理命令的目标电压电平。与第一GC命令相关联的有效数据的第二遍编程可在存储设备处理其他命令时在后台进行。因此,存储设备不将第一GC命令保持“劫持”。一旦对第一GC命令的处理完成,则可从介质单元再次读取该有效数据。
上述方法描述了其中与主机写入命令相关联的数据足够大到填充页面或NAND位置(即,与主机命令相关联的数据等于一个页面大小或一个NAND位置大小)的实施方案。然而,在其中主机写入命令太小而不能填充页面或NAND位置(即,与主机命令相关联的数据小于一个页面大小或一个NAND位置大小)或对于一个页面或一个NAND位置太大(即,与主机命令相关联的数据大于一个页面大小或一个NAND位置大小)的实施方案中,上述方法仍然适用。
在其中与主机写入命令相关联的数据太大而不能填充页面或NAND位置的实施方案中,与主机写入命令相关联的数据首先分解成页面大小或NAND位置大小。在其中与主机写入命令相关联的数据太小而不能填充页面或NAND位置的实施方案中,可能需要多于一个主机命令来填充页面或NAND位置,并且可聚集多个主机写入命令以填充页面或NAND位置。此外,可任选地合并太小而不能填充页面或NAND位置的主机写入命令。合并写入命令是可利用的由存储设备进行的独立决定,并且存储设备在选择是否合并写入命令时可考虑队列深度。
通过执行与第一命令相关联的数据的第一遍编程以将与该第一命令相关联的数据部分写入擦除块并且然后在接收到第二命令时执行与该第一命令相关联的数据的第二遍编程,与该第一命令相关联的数据可被存储在主机设备中,直到数据的写入完成。这样,控制器的易失性存储器空间诸如DRAM和/或SRAM节省了空间。通过在处理命令时将数据存储在主机设备中而不是存储在控制器的内部存储器中,改善了整体SSD性能、吞吐量和效率。此外,在处理命令时消耗的电量减少,这继而减少了与控制器相关联的成本。
在一个实施方案中,存储设备包括介质单元和耦接到介质单元的控制器,其中介质单元的容量被分成多个分区。控制器被配置为:检索将数据写入到介质单元的第一擦除块中的第一页面的第一命令,该第一擦除块被设置在所述多个分区中的第一分区中;检索将数据写入到第一擦除块中的第二页面的第二命令;以及在检索到该第二命令时,将与第一命令相关联的数据写入到该第一擦除块中的第一页面。
与第一命令相关联的数据可被存储在主机设备中,直到在接收到第二命令时将与第一命令相关联的数据写入到第一页面。控制器还可被进一步配置为:在检索第二命令之前,在施加达第一时间量的第一电压目标下将与第一命令相关联的数据部分写入到第一擦除块中的第一页面,其中在施加达大于第一时间量的第二时间量的第二电压目标下将与该第一命令相关联的数据写入到该第一页面;以及在将与该第一命令相关联的数据写入到该第一页面之后发信号通知该第一命令的完成。控制器还可被进一步配置为:在发信号通知第一命令的完成之后,检索将数据写入到第一擦除块中的第三页面的第三命令;在检索到该第三命令时,将与第二命令相关联的数据写入到该第一擦除块中的第二页面;以及发信号通知该第二命令的完成。
控制器还可被进一步配置为:在检索第三命令之前,在施加达第一时间量的第一电压目标下将与第二命令相关联的数据部分写入到第一擦除块中的第二页面,其中在施加达大于第一时间量的第二时间量的第二电压目标下将与该第二命令相关联的数据写入到该第二页面;以及在将与该第二命令相关联的数据写入到该第二页面之后发信号通知该第二命令的完成。控制器还可被进一步配置为:在发信号通知第二命令的完成之后,检索将数据写入到第一擦除块中的第四页面的第四命令;在检索到该第四命令时,将与第三命令相关联的数据写入到该第一擦除块中的第三页面;以及发信号通知该第三命令的完成。
在另一个实施方案中,存储设备包括介质单元。所述介质单元的容量被分成多个分区。存储设备还包括耦接到介质单元的控制器。控制器被配置为:执行与第一命令相关联的数据的第一遍编程,以将该数据部分写入到所述多个分区中的第一分区的第一擦除块中的第一页面;执行与第二命令相关联的数据的第一遍编程,以将该数据部分写入到第一擦除块中的第二页面;在执行与第二命令相关联的数据的第一遍编程时,执行第二遍编程以将与第一命令相关联的数据写入到第一擦除块中的第一页面。
与第一命令相关联的数据可被存储在主机设备中,直到在执行第二遍编程时将与第一命令相关联的数据写入到第一页面。可在施加达第一时间量的第一电压目标下执行第一遍编程,并且可在施加达大于第一时间量的第二时间量的第二电压目标下执行第二遍编程。控制器还可被进一步配置为:在与第一命令相关联的数据的第二遍编程完成之后,发信号通知该第一命令的完成。
控制器还可被进一步配置为:在写入第一完成条目之后,检索将数据写入到第一擦除块中的第三页面的第三命令;执行与第三命令相关联的数据的第一遍编程以将数据部分写入到第一擦除块中的第三页面;以及在检索到第三命令时,执行第二遍编程以将与第二命令相关联的数据写入到第一擦除块中的第二页面。控制器还可被进一步配置为:将与第二命令相关联的数据写入到第二页面之后,发信号通知该第二命令的完成。与第二命令相关联的数据可被存储在主机设备中,直到在执行第二遍编程时将与第二命令相关联的数据写入到第二页面。
在又一个实施方案中,存储设备包括介质单元和耦接到介质单元的控制器,其中介质单元的容量被分成多个分区。控制器被配置为:检索将数据写入到存储设备的第一擦除块中的第一页面的第一命令,该第一擦除块被设置在所述多个分区中的第一分区中;在施加达第一时间量的第一电压目标下将与第一命令相关联的数据部分写入到第一擦除块中的第一页面;检索将数据写入到第一擦除块中的第二页面的第二命令;在第一电压目标下将与第二命令相关联的数据部分写入到第一擦除块中的第二页面;以及在检索到第二命令时,在施加达第二时间量的第二电压目标下将与第一命令相关联的数据写入到第一擦除块中的第一页面,该第二时间量大于该第一时间量。
与第一命令相关联的数据可被存储在主机设备中,直到在第二电压目标下将与第一命令相关联的数据写入。控制器还可被进一步配置为:在将与第一命令相关联的数据写入到第一页面之后,发信号通知该第一命令的完成;检索将数据写入到第一擦除块中的第三页面的第三命令;在检索到该第三命令时,在第一电压目标下将与该第三命令相关联的数据部分写入到该第一擦除块中的第三页面;在第二电压目标下将与第二命令相关联的数据写入到该第一擦除块中的第二页面;以及发信号通知该第二命令的完成。
与第二命令相关联的数据可被存储在主机设备中,直到在第二电压目标下将与第二命令相关联的数据写入。控制器可被进一步配置为:在写入对应于第二写入命令的第二完成条目之后,检索将数据写入到第一擦除块中的第四页面的第四命令;在检索到该第四命令时,在第一电压目标下将与该第四命令相关联的数据部分写入到该第一擦除块中的第四页面;在第二电压目标下将与第三命令相关联的数据写入到该第一擦除块中的第三页面;以及发信号通知该第二命令的完成。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。

Claims (20)

1.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
检索将数据写入到所述介质单元的第一擦除块中的第一页面的第一命令,所述第一擦除块被设置在所述多个分区中的第一分区中;
检索将数据写入到所述第一擦除块中的第二页面的第二命令;以及
在检索到所述第二命令时,将与所述第一命令相关联的所述数据写入到所述第一擦除块中的所述第一页面。
2.根据权利要求1所述的存储设备,其中与所述第一命令相关联的所述数据被存储在主机设备中,直到在接收到所述第二命令时将与所述第一命令相关联的所述数据写入到所述第一页面。
3.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为:
在接收所述第二命令之前,在施加达第一时间量的第一电压目标下将与所述第一命令相关联的所述数据部分写入到所述第一擦除块中的所述第一页面,其中在施加达大于所述第一时间量的第二时间量的第二电压目标下将与所述第一命令相关联的所述数据写入到所述第一页面;以及
在将与所述第一命令相关联的所述数据写入到所述第一页面之后,发信号通知所述第一命令的完成。
4.根据权利要求3所述的存储设备,其中所述控制器被进一步配置为:
在发信号通知所述第一命令的所述完成之后,检索将数据写入到所述第一擦除块中的第三页面的第三命令;
在检索到所述第三命令时,将与所述第二命令相关联的所述数据写入到所述第一擦除块中的所述第二页面;以及
发信号通知所述第二命令的完成。
5.根据权利要求4所述的存储设备,其中所述控制器被进一步配置为:
在检索所述第三命令之前,在施加达第一时间量的第一电压目标下将与所述第二命令相关联的所述数据部分写入到所述第一擦除块中的所述第二页面,其中在施加达大于所述第一时间量的第二时间量的第二电压目标下将与所述第二命令相关联的所述数据写入到所述第二页面;以及
在将与所述第二命令相关联的所述数据写入到所述第二页面之后,发信号通知所述第二命令的完成。
6.根据权利要求5所述的存储设备,其中与所述第二命令相关联的所述数据被存储在主机设备中,直到在所述第二电压目标下将与所述第二命令相关联的所述数据写入到所述第二页面。
7.根据权利要求5所述的存储设备,其中所述控制器被进一步配置为:
在写入所述第二完成条目之后,检索将数据写入到所述第一擦除块中的第四页面的第四命令;
在检索到所述第四命令时,将与所述第三命令相关联的所述数据写入到所述第一擦除块中的所述第三页面;以及
发信号通知所述第三命令的完成。
8.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
执行与第一命令相关联的数据的第一遍编程,以将所述数据部分写入到所述多个分区中的第一分区的第一擦除块中的第一页面;
执行与第二命令相关联的数据的所述第一遍编程,以将所述数据部分写入到所述第一擦除块中的第二页面;以及
在执行与所述第二命令相关联的所述数据的所述第一遍编程时,执行第二遍编程以将与所述第一命令相关联的所述数据写入到所述第一擦除块中的所述第一页面。
9.根据权利要求8所述的存储设备,其中与所述第一命令相关联的所述数据被存储在主机设备中,直到在执行所述第二遍编程时将与所述第一命令相关联的所述数据写入到所述第一页面。
10.根据权利要求8所述的存储设备,其中在施加达第一时间量的第一电压目标下执行所述第一遍编程,并且在施加达大于所述第一时间量的第二时间量的第二电压目标下执行所述第二遍编程。
11.根据权利要求8所述的存储设备,其中所述控制器被进一步配置为:
在与所述第一命令相关联的所述数据的所述第二遍编程完成之后,发信号通知所述第一命令的完成。
12.根据权利要求11所述的存储设备,其中所述控制器被进一步配置为:
检索将数据写入所述第一擦除块中的第三页面的第三命令;
执行与所述第三命令相关联的数据的所述第一遍编程,以将所述数据部分写入到所述第一擦除块中的所述第三页面;以及
在检索到所述第三命令时,执行所述第二遍编程以将与所述第二命令相关联的所述数据写入到所述第一擦除块中的所述第二页面。
13.根据权利要求12所述的存储设备,其中所述控制器被进一步配置为:
在将与所述第二命令相关联的所述数据写入到所述第二页面之后,发信号通知所述第二命令的完成。
14.根据权利要求12所述的存储设备,其中与所述第二命令相关联的所述数据被存储在主机设备中,直到在执行所述第二遍编程时将与所述第二命令相关联的所述数据写入到所述第二页面。
15.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区;和
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
检索将数据写入到所述介质单元的第一擦除块中的第一页面的第一命令,所述第一擦除块被设置在所述多个分区中的第一分区中;
在施加达第一时间量的第一电压目标下,将与所述第一命令相关联的所述数据部分写入到所述第一擦除块中的所述第一页面;
检索将数据写入到所述第一擦除块中的第二页面的第二命令;
在所述第一电压目标下,将与所述第二命令相关联的所述数据部分写入到所述第一擦除块中的所述第二页面;以及
在检索到所述第二命令时,在施加达第二时间量的第二电压目标下将与所述第一命令相关联的所述数据写入到所述第一擦除块中的所述第一页面,所述第二时间量大于所述第一时间量。
16.根据权利要求15所述的存储设备,其中与所述第一命令相关联的所述数据被存储在主机设备中,直到在所述第二电压目标下将与所述第一命令相关联的所述数据写入。
17.根据权利要求15所述的存储设备,其中所述控制器被进一步配置为:
在将与所述第一命令相关联的所述数据写入到所述第一页面之后,写入对应于所述第一命令的第一完成条目;
在写入对应于所述第一写入命令的所述第一完成条目之后,检索将数据写入到所述第一擦除块中的第三页面的第三命令;以及
在所述第一电压目标下,将与所述第三命令相关联的所述数据部分写入到所述第一擦除块中的所述第三页面。
18.根据权利要求17所述的存储设备,其中所述控制器被进一步配置为:
在检索到所述第三命令时,在所述第二电压目标下将与所述第二命令相关联的所述数据写入到所述第一擦除块中的所述第二页面;以及
发信号通知所述第二命令的完成。
19.根据权利要求18所述的存储设备,其中与所述第二命令相关联的所述数据被存储在主机设备中,直到在所述第二电压目标下将与所述第二命令相关联的所述数据写入。
20.根据权利要求18所述的存储设备,其中所述控制器被进一步配置为:
在写入对应于所述第二写入命令的所述第二完成条目之后,检索将数据写入到所述第一擦除块中的第四页面的第四命令;
在所述第一电压目标下,将与所述第四命令相关联的所述数据部分写入到所述第一擦除块中的所述第四页面;
在检索到所述第四命令时,在所述第二电压目标下将与所述第三命令相关联的所述数据写入到所述第一擦除块中的所述第三页面;以及
发信号通知所述第二命令的完成。
CN201980079462.8A 2019-06-28 2019-12-17 写入命令在分区命名空间中的保持 Pending CN113168374A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962868792P 2019-06-28 2019-06-28
US62/868,792 2019-06-28
US16/696,830 US20200409601A1 (en) 2019-06-28 2019-11-26 Hold of Write Commands in Zoned Namespaces
US16/696,830 2019-11-26
PCT/US2019/066895 WO2020263322A1 (en) 2019-06-28 2019-12-17 Hold of write commands in zoned namespaces

Publications (1)

Publication Number Publication Date
CN113168374A true CN113168374A (zh) 2021-07-23

Family

ID=74042852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980079462.8A Pending CN113168374A (zh) 2019-06-28 2019-12-17 写入命令在分区命名空间中的保持

Country Status (5)

Country Link
US (1) US20200409601A1 (zh)
KR (1) KR20210096133A (zh)
CN (1) CN113168374A (zh)
DE (1) DE112019005511T5 (zh)
WO (1) WO2020263322A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200082B2 (en) 2019-10-31 2021-12-14 EMC IP Holding Company LLC Data storage system employing dummy namespaces for discovery of NVMe namespace groups as protocol endpoints
US11435914B2 (en) * 2020-03-30 2022-09-06 Western Digital Technologies, Inc. Dynamic ZNS open zone active limit
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
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
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11940911B2 (en) 2021-12-17 2024-03-26 Netapp, Inc. Persistent key-value store and journaling system
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1779860A (zh) * 2004-11-19 2006-05-31 三星电子株式会社 页面缓存器和包括页面缓存器的多状态非易失性存储设备
JP2011022760A (ja) * 2009-07-15 2011-02-03 Hagiwara Sys-Com:Kk データ消去方法及び情報機器
US20110238901A1 (en) * 2010-03-25 2011-09-29 Canon Kabushiki Kaisha Information processing apparatus capable of enabling selection of user data erase method, data processing method, and storage medium
US20120284587A1 (en) * 2008-06-18 2012-11-08 Super Talent Electronics, Inc. Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear
US20130117620A1 (en) * 2011-11-04 2013-05-09 Sang-Hyun Joo Memory system and operating method thereof
CN103678150A (zh) * 2013-12-23 2014-03-26 华为技术有限公司 固态硬盘使用方法及装置
US20140215129A1 (en) * 2013-01-28 2014-07-31 Radian Memory Systems, LLC Cooperative flash memory control
CN104298465A (zh) * 2013-07-17 2015-01-21 光宝科技股份有限公司 固态储存装置中的区块分组方法
CN104461391A (zh) * 2014-12-05 2015-03-25 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
CN104657280A (zh) * 2007-12-28 2015-05-27 株式会社东芝 存储器系统
CN106935265A (zh) * 2015-12-30 2017-07-07 爱思开海力士有限公司 非易失性存储器装置以及包括该非易失性存储器装置的数据存储装置
US20170300263A1 (en) * 2016-04-15 2017-10-19 Sandisk Technologies Inc. Memory interface command queue throttling
US20180059955A1 (en) * 2016-08-29 2018-03-01 Seagate Technology Llc Hybrid Data Storage Device with Partitioned Local Memory
US20180060232A1 (en) * 2016-08-31 2018-03-01 Sandisk Technologies Llc Flush command consolidation
CN109119120A (zh) * 2017-06-22 2019-01-01 西部数据技术公司 非易失性存储器子区块擦除干扰管理方案
CN109213689A (zh) * 2017-06-29 2019-01-15 英特尔公司 粗略轮次和精细轮次多级nvm编程
US20190095134A1 (en) * 2017-09-27 2019-03-28 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
US9575669B2 (en) * 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1779860A (zh) * 2004-11-19 2006-05-31 三星电子株式会社 页面缓存器和包括页面缓存器的多状态非易失性存储设备
CN104657280A (zh) * 2007-12-28 2015-05-27 株式会社东芝 存储器系统
US20120284587A1 (en) * 2008-06-18 2012-11-08 Super Talent Electronics, Inc. Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear
JP2011022760A (ja) * 2009-07-15 2011-02-03 Hagiwara Sys-Com:Kk データ消去方法及び情報機器
US20110238901A1 (en) * 2010-03-25 2011-09-29 Canon Kabushiki Kaisha Information processing apparatus capable of enabling selection of user data erase method, data processing method, and storage medium
US20130117620A1 (en) * 2011-11-04 2013-05-09 Sang-Hyun Joo Memory system and operating method thereof
US20140215129A1 (en) * 2013-01-28 2014-07-31 Radian Memory Systems, LLC Cooperative flash memory control
CN104298465A (zh) * 2013-07-17 2015-01-21 光宝科技股份有限公司 固态储存装置中的区块分组方法
CN103678150A (zh) * 2013-12-23 2014-03-26 华为技术有限公司 固态硬盘使用方法及装置
CN104461391A (zh) * 2014-12-05 2015-03-25 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
CN106935265A (zh) * 2015-12-30 2017-07-07 爱思开海力士有限公司 非易失性存储器装置以及包括该非易失性存储器装置的数据存储装置
US20170300263A1 (en) * 2016-04-15 2017-10-19 Sandisk Technologies Inc. Memory interface command queue throttling
US20180059955A1 (en) * 2016-08-29 2018-03-01 Seagate Technology Llc Hybrid Data Storage Device with Partitioned Local Memory
US20180060232A1 (en) * 2016-08-31 2018-03-01 Sandisk Technologies Llc Flush command consolidation
CN109119120A (zh) * 2017-06-22 2019-01-01 西部数据技术公司 非易失性存储器子区块擦除干扰管理方案
CN109213689A (zh) * 2017-06-29 2019-01-15 英特尔公司 粗略轮次和精细轮次多级nvm编程
US20190095134A1 (en) * 2017-09-27 2019-03-28 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郭云格 等: "通过差值和压缩减少SSD的擦除次数", 《计算机科学与探索》, vol. 13, no. 1, 31 January 2019 (2019-01-31), pages 45 - 55 *

Also Published As

Publication number Publication date
KR20210096133A (ko) 2021-08-04
DE112019005511T5 (de) 2021-09-16
US20200409601A1 (en) 2020-12-31
WO2020263322A1 (en) 2020-12-30

Similar Documents

Publication Publication Date Title
KR102370760B1 (ko) 존 네임스페이스에 대한 존 형성
US11126378B1 (en) Rate limit on the transitions of zones to open
KR102569783B1 (ko) 비순차적 구역 네임스페이스들
US11520660B2 (en) Storage devices hiding parity swapping behavior
CN113168374A (zh) 写入命令在分区命名空间中的保持
CN113196226A (zh) 固态驱动器中的分区命名空间
KR102663302B1 (ko) Zns 드라이브에서의 데이터 취합
US11500727B2 (en) ZNS parity swapping to DRAM
CN114730290A (zh) 将变化日志表移动至与分区对准
CN117043753A (zh) Zns设备中的不同写入优先级
WO2023027781A1 (en) Solution for super device imbalance in zns ssd
CN113744783A (zh) 分区名称空间(zns)驱动器中的写入数据传送调度
CN114730250A (zh) 根据存储设备中的分区对读取命令加权
US11853565B2 (en) Support higher number of active zones in ZNS SSD
US11656984B2 (en) Keeping zones open with intermediate padding
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