CN114746835A - 用中间填充保持分区开放 - Google Patents
用中间填充保持分区开放 Download PDFInfo
- Publication number
- CN114746835A CN114746835A CN202080082902.8A CN202080082902A CN114746835A CN 114746835 A CN114746835 A CN 114746835A CN 202080082902 A CN202080082902 A CN 202080082902A CN 114746835 A CN114746835 A CN 114746835A
- Authority
- CN
- China
- Prior art keywords
- partition
- data
- commands
- storage device
- data associated
- 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
Links
Images
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
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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
- 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- 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/0626—Reducing size or complexity of storage systems
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被分成多个分区的介质单元。将与一个或多个第一命令相关联的数据写入到第一分区的第一部分。在经过预定时间量时,将虚拟数据写入到该第一分区的第二部分,以将该第一分区填充到分区容量。在接收到写入数据的一个或多个第二命令时,分配并开放第二分区,并将与该一个或多个第二命令相关联的该数据写入到该第二分区的第一部分。然后,任选地将与该一个或多个第一命令相关联的该数据重新写入到该第二分区的第二部分,以将该第二分区填充到分区容量,并擦除该第一分区。
Description
相关申请的交叉引用
本申请要求2020年4月20日提交的美国申请号16/853,408的优先权,该美国申请全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。每个逻辑块地址与擦除块上的物理位置相关联,使得SSD和/或主机设备知道存储数据的位置。一个或多个擦除块可通过其相应的逻辑块地址分组在一起以形成分组或分区。通常在将数据写入到新分组或新分区中的擦除块之前,将数据写入到分组或分区中的擦除块中的每个擦除块。
当数据被写入到分组或分区的擦除块时,该分组或分区可以部分地填满一段时间。分组或分区保持部分填满的时间量越长,分组或分区越容易出错。因此,存储在部分填满的分组或分区中的数据可能会丢失或损坏,从而对数据的可靠性产生负面影响。
因此,需要一种操作存储设备的新方法,以降低存储在存储设备中的数据的错误率并提高数据的可靠性。
发明内容
本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被分成多个分区的介质单元。将与一个或多个第一命令相关联的数据写入到第一分区的第一部分。在经过预定时间量时,将虚拟数据写入到该第一分区的第二部分,以将该第一分区填充到分区容量。在接收到写入数据的一个或多个第二命时,分配并开放第二分区,并将与该一个或多个第二命令相关联的该数据写入到该第二分区的第一部分。然后,任选地将与该一个或多个第一命令相关联的该数据重新写入到该第二分区的第二部分,以将该第二分区填充到分区容量,并擦除该第一分区。
在一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为接收将数据写入到多个分区中的第一分区的一个或多个第一命令,其中与一个或多个第一命令相关联的数据被写入到第一分区的第一部分,并且其中第一分区的第二部分保持可用于向其写入数据。控制器还被配置为确定自从接收到将数据写入到第一分区的第一命令和将虚拟数据写入到第一分区的第二部分以将第一分区填充到分区容量以来已经过去预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第二分区的第二部分。
在另一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为接收将数据写入到多个分区中的第一分区的一个或多个第一命令,其中与一个或多个第一命令相关联的数据被写入到第一分区的第一部分,并且其中第一分区的第二部分保持可用于向其写入数据。控制器还被配置为确定自从接收到将数据写入到第一分区的第一命令以来已经过去第一预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为确定自从接收到将数据写入到第一分区的第二命令以来已经过去第二预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第三命令时,开放第三分区并将与一个或多个第三命令相关联的数据写入到第三分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分,并将写入到第二分区的第一部分的与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分。
在另一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为将与一个或多个第一命令相关联的数据写入到第一分区的第一部分,并且其中第一分区的第二部分保持可用于向其写入数据。控制器还被配置为将虚拟数据写入到第一分区的第二部分,以将第一分区填充到分区容量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第二分区的第二部分。控制器被进一步配置为在计时器第二次期满时,将虚拟数据写入到第二分区的第三部分,以将第二分区填充到分区容量。控制器还被配置为在接收到将数据写入到第一分区的一个或多个第三命令时,开放第三分区并将与一个或多个第三命令相关联的数据写入到第三分区的第一部分。控制器被进一步配置为将写入到第二分区的第二部分的与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分,并将写入到第二分区的第一部分的与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2示出了根据另一个实施方案的包括耦接到主机设备的存储设备的存储系统。
图3是示出了根据一个实施方案的操作存储设备以执行读取或写入命令的方法的框图。
图4A示出了根据一个实施方案的在存储设备中使用的分区命名空间视图。
图4B示出了根据一个实施方案的针对图4A的存储设备的分区命名空间的状态图。
图5A是根据一个实施方案的存储数据的存储设备的ZNS的示意图。
图5B是示出根据一个实施方案的将数据写入到图5A的ZNS的方法的流程图。
图6A是根据另一个实施方案的存储数据的存储设备的ZNS的示意图。
图6B是示出根据一个实施方案的将数据写入到图6A的ZNS的方法的流程图。
图7A是根据又一个实施方案的存储数据的存储设备的ZNS的示意图。
图7B是示出根据一个实施方案的将数据写入到图7A的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可以包括印刷电路板(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)、PCI、PCIe、非易失性存储器标准(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、计算高速链路(CXL)、开放信道SSD(OCSSD)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
存储设备106包括NVM 110,该NVM 110可以包括多个存储器设备或介质单元。NVM110可以被配置成存储和/或检索数据。例如,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闪存存储器设备擦除数据。
存储设备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、DDR5、LPDDR5等))。
存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM。在一些实施方案中,当存储设备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中,控制器处理命令并将与该命令相关联的数据写入或转移到主机设备存储器。该控制器一次可以处理多于一个命令。该控制器可以按提交顺序或按顺序处理一个或多个命令。处理写入命令可以包括:识别用于将与命令相关联的数据写入的分区,将该数据写入该分区的一个或多个逻辑块地址(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,并且每个ZNS402可具有不同的大小。除该一个或多个分区命名空间402之外,存储设备400还可包括一个或多个常规命名空间。此外,ZNS 402可以是用于SAS的分区块命令(ZBC)和/或用于SATA的分区设备ATA命令集(ZAC)。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
在存储设备400中,ZNS 402是可被格式化成逻辑块使得容量被分成多个分区406a-406n(统称为分区406)的NVM的数量。分区406中的每个分区包括介质单元或NVM 404的多个物理块或擦除块(现在示出),并且该擦除块中的每个擦除块与多个逻辑块(未示出)相关联。当控制器408从诸如主机设备(未示出)或主机设备的提交队列接收命令时,控制器408可以从与ZNS 402的多个擦除块(EB)相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一LBA或扇区相关联。
在一个实施方案中,NVM 404为NAND器件。该NAND器件包括一个或多个裸片。该一个或多个裸片中的每个裸片包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个擦除块。该一个或多个擦除块中的每个擦除块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,MLC NAND裸片可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16kB)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以频繁地访问用户数据粒度LBA大小为512字节的NAND。因此,如全文所提及的,NAND位置等于512字节的粒度。因此,LBA大小为512字节并且MLC NAND的两个页面的页面大小为16KiB,这导致每个字线32个LBA。然而,NAND位置大小不旨在是限制性的,并且仅用作非限制性示例。
当将数据写入擦除块时,在分区406内对应地更新一个或多个逻辑块,以跟踪数据在NVM 404内的位置。数据可一次写入一个分区406,直到分区406变满,或写入多个分区406,使得多个分区406可部分变满。类似地,当将数据写入到特定分区406时,该数据可按NAND位置的顺序、逐页或逐字线地一次一块地写入到多个擦除块,直到移动到相邻块(即,写入第一擦除块直到在移动到第二擦除块之前第一擦除块变满),或者可按NAND位置的顺序、逐页或逐字线地一次多块地写入到多个擦除块,来以平行的方式部分填充每个块(即,在写入到每个擦除块的第二NAND位置或页面之前写入每个擦除块的第一NAND位置或页面)。每个NAND位置的这种顺序编程是许多NAND EB的典型非限制性要求。
分区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。因此,当接收到写入命令时,分区406由其ZSLBA标识,并且写入指针410确定在所识别的分区406内数据的写入开始的位置。
图4B示出了针对图4A的ZNS 402的状态图450。在状态图450中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不含数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于ZSLBA(即,WP=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可由ZM或控制器向主机提供活动状态下的推荐时间的描述。控制器可包括ZM。
术语“写入”包括当用户数据未填充所有可用字线时,在擦除块中的0个或更多字线、擦除和/或擦除块中的部分填充字线上编程用户数据。术语“写入”还可包括由于以下原因而关闭分区:内部驱动器处理需要(因为误比特在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备400由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。从主机设备中拉入的新数据或正在重定位的有效数据可以写入开放分区。有效数据可从一个分区(例如,第一分区402a)移动到另一个分区(例如,第三分区402c)以用于垃圾回收目的。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器408将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
在开放分区和关闭分区中,写入指针指向分区中位于ZSLBA和分区的最后LBA的末端之间的某个位置(即,WP>0)。活动分区可根据由ZM进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,ZM可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用扇区或LBA(即,WP=分区容量(ZCAP))。仍可执行满的分区中存储的数据的读取命令。
ZM可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。在重置满的分区时,尽管该分区可能标记为可供写入的空分区,但该分区的数据可能不被立即清除。但是,在切换到活动分区之前,必须擦除重置的分区。可在ZM重置和ZM开放之间的任何时间擦除分区。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
由于重置分区会清除存储在分区中的数据或调度对存储在分区中的数据的擦除,因此消除了对各个擦除块进行垃圾回收的需要,从而改善了存储设备400的整体垃圾回收过程。存储设备400可标记一个或多个擦除块以用于擦除。当将要形成新分区并且存储设备400预计ZM开放时,则可擦除被标记用于擦除的一个或多个擦除块。存储设备400还可在擦除该擦除块时决定和创建该分区的物理支持。因此,一旦新分区被开放并且擦除块被选择以形成分区,该擦除块将被擦除。此外,每次重置分区时,可选择分区406的LBA和写入指针410的新顺序,从而使分区406能够容忍不按顺序接收命令。可任选地关闭写入指针410,使得命令可被写入为命令指示的任何起始LBA。
重新参考图4A,当主机发送写入命令以向分区406写入数据时,控制器408拉入写入命令并将写入命令标识成对新打开分区406的写入。控制器408选择一组EB以存储与新打开分区406的写入命令相关联的数据,并且新打开分区406切换到活动分区406。如本文所用,控制器408发起、接收或拉入写入命令包括接收写入命令或直接存储器访问(DMA)读取该写入命令。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器408被配置为从由主机设备填充的提交队列中DMA读取新命令。
在刚切换到活动分区406的空分区406中,数据在ZSLBA处开始被写入分区406,因为写入指针410将与ZSLBA相关联的逻辑块指示为第一可用逻辑块。该数据可被写入一个或多个擦除块或针对分区406的物理位置而已分配的NAND位置。在将与写入命令相关联的数据写入分区406之后,写入指针410被更新为指向分区406中的下一个可用块,以跟踪下一个写入起始点(即,第一写入的完成点)。另选地,控制器408可选择用于将数据写入的活动分区。在活动分区中,将数据写入由写指针410指示为下一个可用块的逻辑块。
例如,控制器408可接收第一写入命令或第一分区附加命令或将该第一写入命令拉入到第三分区406c。主机按顺序识别分区406的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区406c中的如由写入指针410所指示的第一或下一个或多个可用LBA,并且写入指针410被推进或更新以指向可用于主机写入的下一个可用LBA(即,WP>0)。如果控制器408接收第二写入命令或者将第二写入命令拉入到第三分区406c,则与第二写入命令相关联的数据被写入第三分区406c的由写入指针410识别的下一个或多个可用LBA。一旦将与第二命令相关联的数据写入第三分区406c,则写入指针410就再次推进或更新以指向可用于主机写入的下一个可用LBA。重置分区406c将写入指针410移动回到ZcSLBA(即,WP=0),并且分区406c切换到空分区。
图5A是根据一个实施方案的用于存储数据的存储设备的ZNS 500的示意图。图5B是示出根据一个实施方案的将数据写入到图5A的ZNS 500的方法575的流程图。存储设备(未示出)可以是图1的存储设备106、图2的存储设备206或图4A的存储设备400。存储设备的控制器可以是图1的控制器108或图4A的控制器408。ZNS 500可以是图4A至图4B的ZNS 402。ZNS 500包括多个分区。例如,示出了第一分区1 502和第二分区2530。如上所述,ZNS 500的每个分区502、530可以包括任何数量的擦除块。例如,每个分区502、530被示出为包括8个擦除块,但可以包括额外的或更少的擦除块,诸如来自32个裸片的64个擦除块,每个都具有2个平面。另外,多个分区中的每个分区可以具有相同的分区容量(即,用于存储数据的可写入容量的量)。分区是接口描述实体,并且可能对物理NAND活动没有影响。另外,不需要分区与物理NAND活动的关系。因此,逻辑主机接口活动与物理设备活动的分离对于存储设备的效率可能是有利的。
在以下附图和相应描述中,数据由“Dxx”表示,其中“x”表示相关联命令的写入ID。此外,填充数据或虚拟数据由“DUMMYxx”表示,其中“x”表示填充或伪写入ID。将参考图5A的ZNS 500来描述图5B的方法575。在图5A至图7B中,术语“DUMMY”数据可以指输入以将分区填充到分区容量的任何数据。虚拟数据或填充数据可以是控制器识别出不是用户数据、XOR或奇偶校验数据、元数据或未列出的任何其他可用数据的任何数据集。虚拟数据或填充数据的一些选项是0s的集合、1s的集合、专门选择具有含义(即,用于虚拟数据或填充数据)的标记值,例如,“未写入数据”的内部驱动代码、随机写入的数据或任何之前通过加扰或加密算法列出的数据。虚拟数据或填充数据的各种选项可用作增加的调试能力。
在框572处,存储设备(诸如存储设备的控制器)从主机(诸如图2的主机204)接收将数据D00 504、D01 506、D02 508、D03 510写入到第一分区502的一个或多个第一命令。在框574处,与一个或多个第一命令D00 504、D01 506、D02 508、D03 510相关联的数据然后被写入到第一分区502的第一部分520。在框576处,控制器确定自从接收到将数据写入到第一分区502的命令以来已经过去了预定时间量。在框578处,第一分区502的当前为空的第二部分522然后被临时填充有填充或虚拟数据集DUMMY01 512、DUMMY02 514、DUMMY03 516、DUMMY04 518,以将第一分区502填充到分区容量。用虚拟数据DUMMY01 512、DUMMY02 514、DUMMY03 516、DUMMY04 518填充第一分区502将第一分区502切换到关闭和活动状态。术语“DUMMY”数据可以指输入以将第一分区502填充到分区容量的任何数据,如上所述。
存储设备的控制器可以包括计时器或其他机制,以确定预定时间量已经过去或期满(例如,以计时或跟踪分区已经处于开放状态的时间量)。计时器可以被配置为在预定时间量之后到期,以由于先前表征的开放EB时间对误码累积的暴露风险而触发分区的填充。EB开放时间与先前累积的编程误码累积的关系可以是或可以不是开放EB时间的函数(即,可以是从擦除EB到完全编程EB的时间)。预定时间量可以基于第一分区502的闪存类型(例如,SLC、MLC、TLC、QLC或多级单元的其他迭代)。例如,QLC的预定时间量可以在但不限于约15分钟至约三天的范围内。在另一个示例中,TLC可以具有但不限于约一天至约七天的预定时间量。因此,预定时间量可以在约15分钟至约七天或更长时间之间。这些预定时间可以包括在EB处于部分填充状态期间可接受的误码率累积的阈值。预定时间可以包括增加的复杂度水平,诸如表征EB中不同数量的部分写入数据的不同时间长度。这样的预定时间量不应当被认为是限制性的,而应当被业界普遍接受。
如果在预定时间量过去或期满之后第一分区502未被填充,则数据可靠性可能由于第一分区502的开放状态而降低。在处于开放状态的分区中的数据的暴露可能潜在地导致误码的累积。误码的累积可能潜在地导致分区中的数据丢失。分区处于开放和活动状态的时间减少可以反映NVM的更大可靠性。
在框580处,存储设备从主机设备接收将数据D04 524、D05 526、D06 528、D07 532写入到第一分区502的一个或多个第二命令。在框582处,然后,当由于第一分区502处于分区容量而接收到一个或多个第二命令时,分配并开放第二分区530。如果第二分区530当前正在存储旧的或过时的数据,则可以在写入与一个或多个第二命令D04 524、D05 526、D06528、D07 532相关联的数据之前擦除第二分区530中的擦除块。与一个或多个第二命令D04524、D05 526、D06 528、D07 532相关联的数据然后被写入到第二分区530的第一部分534。
在框584处,与一个或多个第一命令D00 504、D01 506、D02 508、D03 510相关联的数据被重新写入到第二分区530的第二部分536。因此,用与一个或多个第一命令D00 504、D01 506、D02 508、D03 510相关联的数据和与一个或多个第二命令D04 524、D05 526、D06528、D07 532相关联的数据将第二分区530填充到分区容量。
在将与一个或多个第一命令D00 504、D01 506、D02 508、D03 510相关联的数据重新写入到第二分区530的第二部分536时,可以在框586处擦除第一分区502。然后可以将第一分区1 502分配回可用资源池中。最终结果是第二分区2 530被填充到分区容量。
图6A是根据另一个实施方案的用于存储数据的存储设备的ZNS 600的示意图。图6B是示出根据一个实施方案的将数据写入到图6A的ZNS 600的方法675的流程图。存储设备(未示出)可以是图1的存储设备106、图2的存储设备206或图4A的存储设备400。存储设备的控制器可以是图1的控制器108或图4A的控制器408。ZNS 600可以是图4A至图4B的ZNS 402。ZNS 600包括多个分区。例如,示出了第一分区1 602、第二分区2 630和第三分区3 650。如上所述,每个分区602、630、650被示出为包括8个擦除块,但可以包括额外的或更少的擦除块,诸如来自32个裸片的64个擦除块,每个都具有2个平面。另外,多个分区中的每个分区可以具有相同的分区容量(即,用于存储数据的可写入容量的量)。将参考图6A的ZNS 600来描述图6B的方法675。
在框672处,存储设备(诸如存储设备的控制器)从主机(诸如图2的主机204)接收将数据D00 604、D01 606、D02 608、D03 610写入到第一分区602的一个或多个第一命令。与一个或多个第一命令D00 604、D01 606、D02 608、D03 610相关联的数据然后被写入到第一分区602的第一部分620。在框674处,控制器确定自从接收到将数据写入到第一分区602的命令以来已经过去了预定时间量。第一分区602的当前为空的第二部分622然后被临时填充有填充或虚拟数据集DUMMY01 612、DUMMY02 614、DUMMY03 616、DUMMY04 618,以将第一分区602填充到分区容量。用虚拟数据DUMMY01 612、DUMMY02 614、DUMMY03 616、DUMMY04 618填充第一分区602将第一分区602切换到关闭和活动状态。术语“DUMMY”数据可以指输入以将分区填充到分区容量的任何数据,如上所述。
存储设备的控制器可以包括计时器或其他机制,以确定预定时间量已经过去或期满(例如,以计时或跟踪分区已经处于开放状态的时间量)。计时器可以被配置为在预定时间量之后到期,以由于先前表征的开放EB时间对误码累积的暴露风险而触发分区的填充。EB开放时间与先前累积的编程误码累积的关系可以是或可以不是开放EB时间的函数(即,从擦除EB到完全编程EB的时间)。预定时间量可以基于第一分区602的闪存类型(例如,SLC、MLC、TLC、QLC或多级单元的其他迭代),诸如在约15分钟到约七天或更长时间之间。这些预定时间可以包括在EB处于部分填充状态期间可接受的误码率累积的阈值。预定时间可以包括增加的复杂度水平,诸如表征EB中不同数量的部分写入数据的不同时间长度。这样的预定时间量不应当被认为是限制性的,而应当被业界普遍接受。
如果在预定时间量过去或期满之后第一分区602未被填充,则数据可靠性可能由于第一分区602的开放状态而降低。在处于开放状态的分区中的数据的暴露可能潜在地导致误码的累积。误码的累积可能潜在地导致分区中的数据丢失。分区处于开放和活动状态的时间减少可以反映NVM的更大可靠性。
在框676处,存储设备从主机设备接收将数据D04 624、D05 626、D06 628写入到第一分区的一个或多个第二命令。然后,当由于第一分区602处于分区容量而接收到一个或多个第二命令时,分配并开放第二分区630。如果第二分区630当前正在存储旧的或过时的数据,则可以在写入与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据之前擦除第二分区630中的擦除块。与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据然后被写入到第二分区630的第一部分642。
在框678处,控制器确定自从接收到将数据写入到第一分区602或第二分区630的命令以来已经过去了预定时间量。在一个实施方案中,框674处的预定时间量与框678处的预定时间量相同。在另一个实施方案中,框674处的预定时间量与框678处的预定时间量不同。第二分区630的当前为空的第二部分654然后被临时填充有填充数据集DUMMY05 632、DUMMY06 634、DUMMY07 636、DUMMY08 638、DUMMY09 640,以将第二分区630填充到分区容量。用虚拟数据DUMMY05 632、DUMMY06 634、DUMMY07 636、DUMMY08 638、DUMMY09 640填充第二分区630将第二分区630切换到关闭和活动状态。
在框680处,存储设备从主机设备接收将数据D07 646写入到第一分区602的一个或多个第三命令。然后,当由于第一分区602和第二分区630都被填充到它们相应的分区容量而接收到一个或多个第三命令时,分配并开放第三分区650。如果第三分区650当前正在存储旧的或过时的数据,则可以在写入与一个或多个第三命令D07 646相关联的数据之前擦除第三分区650中的擦除块。与一个或多个第三命令D07 646相关联的数据然后被写入到第三分区650的第一部分652。
在框682处,与一个或多个第一命令D00 604、D01 606、D02 608、D03 610相关联的数据被任选地重新写入到第三分区650的第二部分656,而与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据被重新写入到第三分区650的第三部分658。然而,写入到第三分区650的数据可以不按顺序存储(即,首先存储与一个或多个第三命令D07 646相关联的数据,而最后存储与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据)。DRAM(诸如图1的易失性存储器112)包括可以跟踪乱序数据(例如,利用指针)的逻辑到物理(L2P)转换表。在另一个实施方案中,数据顺序的跟踪可以在写入到物理介质的预定位置的元数据中。因此,用与一个或多个第一命令D00 604、D01 606、D02 608、D03 610相关联的数据、与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据和与一个或多个第三命令D07 646相关联的数据将第三分区650填充到分区容量。
在任选地将与一个或多个第一命令D00 604、D01 606、D02 608、D03 610相关联的数据重新写入到第三分区650的第二部分656时,可以在框586处擦除第一分区602。在将与一个或多个第二命令D04 624、D05 626、D06 628相关联的数据重新写入到第三分区650的第三部分658时,可以在框684处擦除第二分区630。可以将擦除的第一分区602和第二分区630分配回可用资源池。最终结果是第三分区3 650被填充到分区容量。
图7A是根据另一个实施方案的用于存储数据的存储设备的ZNS 700的示意图。图7B是示出根据一个实施方案的将数据写入到图7A的ZNS 700的方法775的流程图。存储设备(未示出)可以是图1的存储设备106、图2的存储设备206或图4A的存储设备400。存储设备的控制器可以是图1的控制器108或图4A的控制器408。ZNS 700可以是图4A至图4B的ZNS 402。ZNS 700包括多个分区。例如,示出了第一分区1 702、第二分区2 730和第三分区3 740。如上所述,每个分区702、730、740被示出为包括8个擦除块,但可以包括额外的或更少的擦除块,诸如来自32个裸片的64个擦除块,每个都具有2个平面。另外,多个分区中的每个分区可以具有相同的分区容量(即,用于存储数据的可写入容量的量)。将参考图7A的ZNS 700来描述图7B的方法775。
在框772处,存储设备(诸如存储设备的控制器)从主机(诸如图2的主机204)接收将数据D00 704、D01 706、D02 708、D03 710写入到第一分区702的一个或多个第一命令。与一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据然后被写入到第一分区702的第一部分720。在框774处,控制器确定自从接收到将数据写入到第一分区702的命令以来已经过去了预定时间量。第一分区702的当前为空的第二部分722然后被临时填充有填充或虚拟数据集DUMMY01 712、DUMMY02 714、DUMMY03 716、DUMMY04 718,以将第一分区702填充到分区容量。用虚拟数据DUMMY01 712、DUMMY02 714、DUMMY03 716、DUMMY04 718填充第一分区702将第一分区702切换到关闭和活动状态。术语“DUMMY”数据可以指输入以将分区填充到分区容量的任何数据,如上所述。
存储设备的控制器可以包括计时器或其他机制,以确定预定时间量已经过去或期满(例如,以计时或跟踪分区已经处于开放状态的时间量)。计时器可以被配置为在预定时间量之后到期,以由于先前表征的开放EB时间对误码累积的暴露风险而触发分区的填充。EB开放时间与先前累积的编程误码累积的关系可以是或可以不是开放EB时间的函数(即,从擦除EB到完全编程EB的时间)。预定时间量可以基于第一分区702的闪存类型(例如,SLC、MLC、TLC、QLC或多级单元的其他迭代),诸如在约15分钟到约七天之间。这些预定时间可以包括在EB处于部分填充状态期间可接受的误码率累积的阈值。预定时间可以包括增加的复杂度水平,诸如表征EB中不同数量的部分写入数据的不同时间长度。这样的预定时间量不应当被认为是限制性的,而应当被业界普遍接受。
如果在预定时间量过去或期满之后第一分区702未被填充,则数据可靠性可能由于第一分区702的开放状态而降低。在处于开放状态的分区中的数据的暴露可能潜在地导致误码的累积。误码的累积可能潜在地导致分区中的数据丢失。分区处于开放和活动状态的时间减少可以反映NVM的更大可靠性。
在框776处,存储设备从主机接收将数据D04 724、D05 726、D06 728写入到第一分区702的一个或多个第二命令。然后,当由于第一分区702被填充而接收到一个或多个第二命令时,分配并开放第二分区730。如果第二分区730当前正在存储旧的或过时的数据,则可以在写入与一个或多个第二命令D04 724、D05 726、D06 728相关联的数据之前擦除第二分区730中的擦除块。与一个或多个第二命令D04 724、D05 726、D06 728相关联的数据然后被写入到第二分区730的第一部分734。
在框778处,与一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据被任选地重新写入到第二分区730的第二部分736。在任选地将与一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据重新写入到第二分区730的第二部分736时,可以在框778处擦除第一分区702。可以将擦除的第一分区702分配回可用资源池。
在框780处,控制器确定自从接收到将数据写入到第一分区702或第二分区730的命令以来已经过去了预定时间量。在一个实施方案中,框774处的预定时间量与框780处的预定时间量相同。在另一个实施方案中,框774处的预定时间量与框780处的预定时间量不同。第二分区730的当前为空的第三部分738然后被临时填充有填充或虚拟数据集DUMMY05732,以将第二分区730填充到分区容量。最终结果是第二分区2 730被填充到分区容量。用虚拟数据DUMMY05 732填充第二分区730将第二分区730切换到关闭和活动状态。
在框782处,存储设备接收将数据D07 742写入到第一分区702的一个或多个第三命令。然后,当由于第一分区702已被擦除并且第二分区730被填充到分区容量而接收到一个或多个第三命令时,分配并开放第三分区740。如果第三分区740当前正在存储旧的或过时的数据,则可以在写入与一个或多个第三命令D07 742相关联的数据之前擦除第三分区740中的擦除块。与第三命令D07 742相关联的数据然后被写入到第三分区740的第一部分744。
在框784处,与已被重新写入到第二分区730的第二部分736的一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据和与已被写入到第二分区730的第一部分734的一个或多个第二命令D04 724、D05 726、D06 728相关联的数据任选地被重新写入到第三分区740的第二部分746。然而,写入到第三分区740的数据可以不按顺序存储(即,首先存储与一个或多个第三命令D07 742相关联的数据,而最后存储与一个或多个第二命令D04 724、D05 726、D06 728相关联的数据)。DRAM(诸如图1的易失性存储器112)包括可以跟踪乱序数据(例如,利用指针)的逻辑到物理(L2P)转换表。在另一个实施方案中,数据顺序的跟踪可以在写入到物理介质的预定位置的元数据中。因此,用与一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据、与一个或多个第二命令D04 724、D05726、D06 728相关联的数据和与一个或多个第三命令D07 742相关联的数据将第三分区740填充到分区容量。
在任选地将与一个或多个第一命令D00 704、D01 706、D02 708、D03 710相关联的数据和与一个或多个第二命令D04 724、D05 726、D06 728相关联的数据重新写入到第三分区740的第二部分746时,可以在框784处擦除第二分区730。可以将擦除的第二分区730分配回可用资源池。最终结果是第三分区3 740被填充到分区容量。
由于具有用于数据写入的可用擦除块,因此分区以开放状态存在。长时间处于开放状态的分区可能由于误码的累积而潜在地导致数据可靠性的降低。误码的累积可能导致分区中的数据丢失。分区可以安全地保持在开放状态的时间量取决于存储器单元的类型(例如,SLC、MLC、TLC、QLC或多级单元的其他迭代)并且可在几分钟到几天的范围内。填充或虚拟数据可用于关闭处于开放状态的分区,从而防止在该分区中发生错误。分区保持在开放和活动状态的时间减少可以导致NVM的更大可靠性。
在一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为接收将数据写入到多个分区中的第一分区的一个或多个第一命令,其中与一个或多个第一命令相关联的数据被写入到第一分区的第一部分,并且其中第一分区的第二部分保持可用于向其写入数据。控制器还被配置为确定自从接收到将数据写入到第一分区的第一命令和将虚拟数据写入到第一分区的第二部分以将第一分区填充到分区容量以来已经过去预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第二分区的第二部分。
在与一个或多个第一命令相关联的数据被重新写入到第二分区的第二部分之后,擦除介质单元的第一分区。预定时间量在约15分钟至约3天之间。预定时间量在约1天至约7天之间。将虚拟数据写入到第一分区的第二部分将第一分区切换到关闭和活动状态。控制器包括计时器,并且该计时器确定预定时间量已经过去。存储在第三分区中的数据不按顺序存储。
在另一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为接收将数据写入到多个分区中的第一分区的一个或多个第一命令,其中与一个或多个第一命令相关联的数据被写入到第一分区的第一部分,并且其中第一分区的第二部分保持可用于向其写入数据。控制器还被配置为确定自从接收到将数据写入到第一分区的第一命令以来已经过去第一预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为确定自从接收到将数据写入到第一分区的第二命令以来已经过去第二预定时间量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第三命令时,开放第三分区并将与一个或多个第三命令相关联的数据写入到第三分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分,并将写入到第二分区的第一部分的与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分。
在确定第一预定时间量已经过去时,通过将虚拟数据写入到第一分区的第二部分以将第一分区填充到分区容量来填充介质单元的第一分区。在确定第二预定时间量已经过去时,通过将虚拟数据写入到第二分区的第二部分以将第二分区填充到分区容量来填充介质单元的第一分区。在将与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分并将与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分时,擦除介质单元的第一分区和第二分区。第一预定时间量与第二预定时间量相同。第一预定时间量和第二预定时间量在约15分钟至约7天之间。第一预定时间量与第二预定时间量不同。
在另一个实施方案中,存储设备包括介质单元,其中介质单元的容量被分成多个分区。介质单元包括多个裸片,并且该多个裸片中的每个裸片包括多个擦除块。存储设备还包括控制器,该控制器耦接到介质单元。控制器被配置为将与一个或多个第一命令相关联的数据写入到第一分区的第一部分。第一分区的第二部分保持可用于向其写入数据。控制器还被配置为将虚拟数据写入到第一分区的第二部分,以将第一分区填充到分区容量。控制器被进一步配置为在接收到将数据写入到第一分区的一个或多个第二命令时,开放第二分区并将与一个或多个第二命令相关联的数据写入到第二分区的第一部分。控制器还被配置为将写入到第一分区的第一部分的与一个或多个第一命令相关联的数据重新写入到第二分区的第二部分。控制器被进一步配置为在计时器第二次期满之后,将虚拟数据写入到第二分区的第三部分,以将第二分区填充到分区容量。控制器还被配置为在接收到将数据写入到第一分区的一个或多个第三命令时,开放第三分区并将与一个或多个第三命令相关联的数据写入到第三分区的第一部分。控制器被进一步配置为将写入到第二分区的第二部分的与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分,并将写入到第二分区的第一部分的与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分。
在与一个或多个第一命令相关联的数据被重新写入到第二分区的第二部分之后,擦除介质单元的第一分区。在将与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分并将与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分时,擦除介质单元的第二分区。计时器被设置为在预定时间量之后期满,并且预定时间量在约15分钟至约7天之间。将虚拟数据写入到第一分区的第二部分将第一分区切换到关闭和活动状态。将虚拟数据写入到第二分区的第三部分将第二分区切换到关闭和活动状态。将与一个或多个第一命令相关联的数据重新写入到第三分区的第二部分,以及将与一个或多个第二命令相关联的数据重新写入到第三分区的第三部分,使得写入到第三分区的数据不按顺序存储。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区,并且其中所述介质单元包括多个裸片,所述多个裸片中的每个裸片包括多个擦除块;以及
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
接收将数据写入到所述多个分区中的第一分区的一个或多个第一命令,其中将与所述一个或多个第一命令相关联的所述数据写入到所述第一分区的第一部分,并且其中所述第一分区的第二部分保持可用于向其写入数据;
确定自从接收到将数据写入到所述第一分区的第一命令以来已经过去预定时间量;
将虚拟数据写入到所述第一分区的所述第二部分,以将所述第一分区填充到分区容量;
在接收到将数据写入到所述第一分区的一个或多个第二命令时,开放第二分区并将与所述一个或多个第二命令相关联的所述数据写入所述第二分区的第一部分;以及
将写入到所述第一分区的所述第一部分的与所述一个或多个第一命令相关联的所述数据重新写入到所述第二分区的第二部分。
2.根据权利要求1所述的存储设备,其中在将与所述一个或多个第一命令相关联的所述数据重新写入到所述第二分区的所述第二部分之后擦除所述第一分区。
3.根据权利要求1所述的存储设备,其中所述预定时间量在约15分钟至约3天之间。
4.根据权利要求1所述的存储设备,其中所述预定时间量在约1天至约7天之间。
5.根据权利要求1所述的存储设备,其中将所述虚拟数据写入到所述第一分区的所述第二部分将所述第一分区切换到关闭和活动状态。
6.根据权利要求1所述的存储设备,其中所述控制器包括计时器,并且其中所述计时器确定所述预定时间量已经过去。
7.根据权利要求1所述的存储设备,其中存储在所述第一分区中的所述数据不按顺序存储。
8.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区,并且其中所述介质单元包括多个裸片,所述多个裸片中的每个裸片包括多个擦除块;以及
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
接收将数据写入到所述多个分区中的第一分区的一个或多个第一命令,其中将与所述一个或多个第一命令相关联的所述数据写入到所述第一分区的第一部分,并且其中所述第一分区的第二部分保持可用于向其写入数据;
确定自从接收到将数据写入到所述第一分区的第一命令以来已经过去第一预定时间量;
在接收到将数据写入到所述第一分区的一个或多个第二命令时,开放第二分区并将与所述一个或多个第二命令相关联的所述数据写入所述第二分区的第一部分;
确定自从接收到将数据写入到所述第一分区的第二命令以来已经过去第二预定时间量;
在接收到将数据写入到所述第一分区的一个或多个第三命令时,开放第三分区并将与所述一个或多个第三命令相关联的所述数据写入所述第三分区的第一部分;以及
将写入到所述第一分区的所述第一部分的与所述一个或多个第一命令相关联的所述数据重新写入到所述第三分区的第二部分,并将写入到所述第二分区的所述第一部分的与所述一个或多个第二命令相关联的所述数据重新写入到所述第三分区的第三部分。
9.根据权利要求8所述的存储设备,其中所述控制器被进一步配置为:在确定所述第一预定时间量已经过去时,将虚拟数据写入到所述第一分区的所述第二部分以将所述第一分区填充到分区容量。
10.根据权利要求8所述的存储设备,其中所述控制器被进一步配置为:在确定所述第二预定时间量已经过去时,将虚拟数据写入到所述第二分区的第二部分以将所述第二分区填充到分区容量。
11.根据权利要求8所述的存储设备,其中所述控制器被进一步配置为:在将与所述一个或多个第一命令相关联的所述数据重新写入到所述第三分区的所述第二部分并将与所述一个或多个第二命令相关联的所述数据重新写入到所述第三分区的所述第三部分时,擦除所述第一分区和所述第二分区。
12.根据权利要求8所述的存储设备,其中所述第一预定时间量与所述第二预定时间量相同。
13.根据权利要求12所述的存储设备,其中所述第一预定时间量和所述第二预定时间量在约15分钟至约7天之间。
14.根据权利要求8所述的存储设备,其中所述第一预定时间量与所述第二预定时间量不同。
15.一种存储设备,包括:
介质单元,其中所述介质单元的容量被分成多个分区,并且其中所述介质单元包括多个裸片,所述多个裸片中的每个裸片包括多个擦除块;以及
控制器,所述控制器耦接到所述介质单元,所述控制器被配置为:
将与一个或多个第一命令相关联的数据写入到第一分区的第一部分,并且其中所述第一分区的第二部分保持可用于向其写入数据;
在计时器第一次期满时,将虚拟数据写入到所述第一分区的所述第二部分,以将所述第一分区填充到分区容量;
在接收到将数据写入到所述第一分区的一个或多个第二命令时,开放第二分区并将与所述一个或多个第二命令相关联的所述数据写入所述第二分区的第一部分;
将写入到所述第一分区的所述第一部分的与所述一个或多个第一命令相关联的所述数据重新写入到所述第二分区的第二部分;
在所述计时器第二次期满时,将虚拟数据写入到所述第二分区的第三部分,以将所述第二分区填充到分区容量;
在接收到将数据写入到所述第一分区的一个或多个第三命令时,开放第三分区并将与所述一个或多个第三命令相关联的所述数据写入所述第三分区的第一部分;以及
将写入到所述第二分区的所述第二部分的与所述一个或多个第一命令相关联的所述数据重新写入到所述第三分区的第二部分,并将写入到所述第二分区的所述第一部分的与所述一个或多个第二命令相关联的所述数据重新写入到所述第三分区的第三部分。
16.根据权利要求15所述的存储设备,其中所述控制器被进一步配置为:在将与所述一个或多个第一命令相关联的所述数据重新写入到所述第二分区的所述第二部分时擦除所述第一分区。
17.根据权利要求15所述的存储设备,其中所述控制器被进一步配置为:在将与所述一个或多个第一命令相关联的所述数据重新写入到所述第三分区的所述第二部分并将与所述一个或多个第二命令相关联的所述数据重新写入到所述第三分区的所述第三部分时,擦除所述第二分区。
18.根据权利要求15所述的存储设备,其中所述计时器被设置为在预定时间量之后期满,并且其中所述预定时间量在约15分钟至约7天之间。
19.根据权利要求15所述的存储设备,其中将所述虚拟数据写入到所述第一分区的所述第二部分将所述第一分区切换到关闭和活动状态,并且其中将所述虚拟数据写入到所述第二分区的所述第三部分将所述第二分区切换到所述关闭和活动状态。
20.根据权利要求15所述的存储设备,其中将与所述一个或多个第一命令相关联的所述数据重新写入到所述第三分区的所述第二部分,以及将与所述一个或多个第二命令相关联的所述数据重新写入到所述第三分区的所述第三部分,使得写入到所述第三分区的所述数据不按顺序存储。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/853,408 US11200161B2 (en) | 2020-04-20 | 2020-04-20 | Keeping zones open with intermediate padding |
US16/853,408 | 2020-04-20 | ||
PCT/US2020/064601 WO2021216124A1 (en) | 2020-04-20 | 2020-12-11 | Keeping zones open with intermediate padding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114746835A true CN114746835A (zh) | 2022-07-12 |
Family
ID=78081701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080082902.8A Pending CN114746835A (zh) | 2020-04-20 | 2020-12-11 | 用中间填充保持分区开放 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11200161B2 (zh) |
CN (1) | CN114746835A (zh) |
DE (1) | DE112020004974T5 (zh) |
WO (1) | WO2021216124A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022021026A (ja) * | 2020-07-21 | 2022-02-02 | キオクシア株式会社 | メモリシステムおよびコマンドをフェッチする方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176908B2 (en) * | 2010-02-23 | 2015-11-03 | Rambus Inc. | Time multiplexing at different rates to access different memory types |
US9838500B1 (en) * | 2014-03-11 | 2017-12-05 | Marvell Israel (M.I.S.L) Ltd. | Network device and method for packet processing |
US9824760B2 (en) * | 2015-07-29 | 2017-11-21 | Sandisk Technologies Llc | Systems and methods of generating shaped random bits |
KR102393323B1 (ko) | 2015-08-24 | 2022-05-03 | 삼성전자주식회사 | 재사용 주기를 이용하여 사용자 데이터를 쓰기 위한 워드라인을 결정하는 저장 장치의 동작 방법 |
US10990463B2 (en) * | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
US20190371405A1 (en) | 2018-05-30 | 2019-12-05 | Circuit Blvd., Inc. | Method of filling up data on open-channel solid state drive (ssd) and an apparatus performing the same |
US11734175B2 (en) * | 2019-08-22 | 2023-08-22 | SK Hynix Inc. | Storage device and method of operating the same |
US20200089407A1 (en) | 2019-11-22 | 2020-03-19 | Intel Corporation | Inter zone write for zoned namespaces |
-
2020
- 2020-04-20 US US16/853,408 patent/US11200161B2/en active Active
- 2020-12-11 DE DE112020004974.4T patent/DE112020004974T5/de active Pending
- 2020-12-11 WO PCT/US2020/064601 patent/WO2021216124A1/en active Application Filing
- 2020-12-11 CN CN202080082902.8A patent/CN114746835A/zh active Pending
-
2021
- 2021-11-19 US US17/455,887 patent/US11656984B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2021216124A1 (en) | 2021-10-28 |
DE112020004974T5 (de) | 2022-06-30 |
US11656984B2 (en) | 2023-05-23 |
US20220075718A1 (en) | 2022-03-10 |
US11200161B2 (en) | 2021-12-14 |
US20210326250A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102370760B1 (ko) | 존 네임스페이스에 대한 존 형성 | |
KR102569783B1 (ko) | 비순차적 구역 네임스페이스들 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
CN113196226A (zh) | 固态驱动器中的分区命名空间 | |
CN114730248A (zh) | 对分区转变为开放的速率限制 | |
CN113168374A (zh) | 写入命令在分区命名空间中的保持 | |
US11500727B2 (en) | ZNS parity swapping to DRAM | |
US11436153B2 (en) | Moving change log tables to align to zones | |
CN117043753A (zh) | Zns设备中的不同写入优先级 | |
CN114730289A (zh) | Zns需求的数据完整性保护 | |
WO2023027781A1 (en) | Solution for super device imbalance in zns ssd | |
CN114730250A (zh) | 根据存储设备中的分区对读取命令加权 | |
CN113744783A (zh) | 分区名称空间(zns)驱动器中的写入数据传送调度 | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US11853565B2 (en) | Support higher number of active zones in ZNS SSD | |
CN114730291A (zh) | 具有分区的ssd的数据停放 | |
CN114730247A (zh) | 具有数据的最小写入大小的存储设备 | |
US11226761B2 (en) | Weighted read commands and open block timer for storage devices |
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 |