CN114730250A - 根据存储设备中的分区对读取命令加权 - Google Patents
根据存储设备中的分区对读取命令加权 Download PDFInfo
- Publication number
- CN114730250A CN114730250A CN202080080227.5A CN202080080227A CN114730250A CN 114730250 A CN114730250 A CN 114730250A CN 202080080227 A CN202080080227 A CN 202080080227A CN 114730250 A CN114730250 A CN 114730250A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- weight
- partition
- 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
Links
Images
Classifications
-
- 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
- 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/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
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
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)
Abstract
本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被划分为多个分区的存储单元,每个分区包括多个擦除块。数据被写入分区的擦除块到程序点,该程序点小于该擦除块的可写入容量。该擦除块中的该数据与各种读取权重相关联,这些读取权重取决于该数据相对于该程序点的位置。更接近该程序点存储的数据比更接近该擦除块开端存储的数据具有更高的读取权重。这些读取权重指示该数据的错误敏感性。当接收到一个或多个读取命令时,所读取数据的这些读取权重被累积,以估计位错误的累积,直到达到预先确定的值为止。
Description
相关申请的交叉引用
本申请要求2020年4月13日提交的美国申请号16/847,352的优先权,该申请全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。这些逻辑块地址中的每个逻辑块地址与物理介质位置相关联,使得SSD和/或主机设备知道存储数据的位置。物理介质的一个或多个擦除块可由擦除块相应的逻辑块地址分组在一起以形成多个分区。
在从擦除块读取数据若干次之后,存储数据的该擦除块可累积位错误或读取干扰错误,这可导致数据丢失或不能够读取。当擦除块内的数据读取的总次数超过预先确定的值(诸如1,000次读取)时,该擦除块被关闭以防止由于过多位错误或读取干扰错误的累积而导致的数据丢失。预先确定的值(诸如1,000次读取)可发信号告知控制器过早地或过晚地关闭擦除块,使得该擦除块可能累积不期望量的位错误。
因此,需要一种新方法,准确地确定存储设备中打开的擦除块中的位错误的累积。
发明内容
本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被划分为多个分区的存储单元,每个分区包括多个擦除块。数据被写入分区的擦除块到程序点,该程序点小于该擦除块的可写入容量。该擦除块中的该数据与各种读取权重相关联,这些读取权重取决于该数据相对于该程序点的位置。更接近该程序点存储的数据比更接近该擦除块开端存储的数据具有更高的读取权重。这些读取权重指示该数据的错误敏感性。当接收到一个或多个读取命令时,所读取数据的这些读取权重被累积,以估计位错误的累积,直到达到预先确定的值为止。
在一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为将与一个或多个第一命令相关联的数据顺序地写入该多个分区的第一分区。第一分区具有可写入容量,并且与该一个或多个第一命令相关联的该数据将第一分区部分地填充到小于该可写入容量的第一程序点。该控制器被进一步配置为接收一个或多个读取命令,以从第一分区非顺序地读取数据,其中该一个或多个读取命令中的每个读取命令与权重相关联,该权重基于该数据被读取到第一程序点的接近程度,并且其中该一个或多个读取命令的至少两个权重是不同的。
在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为接收多个读取命令,以从该多个分区的第一分区的部分填满的第一擦除块非顺序地读取数据,其中这些读取命令中的每个读取命令与权重相关联,该权重基于在第一擦除块内读取的数据的位置,并且其中这些读取命令中的至少两个权重是不同的。该控制器被进一步配置为当与这些读取命令相关联的权重的总和累积到预先确定的值时,关闭第一擦除块。
在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为接收一个或多个第一读取命令,以从第一分区的部分填满的第一擦除块读取第一数据,其中该一个或多个第一读取命令各自与第一权重相关联。该控制器被进一步配置为接收一个或多个第二读取命令,以从该部分填满的第一擦除块读取第二数据,其中该一个或多个第二读取命令各自与大于第一权重的第二权重相关联。该控制器还被配置为接收一个或多个第三读取命令,以从该部分填满的第一擦除块读取第三数据,其中该一个或多个第三读取命令各自与大于第一权重和第二权重的第三权重相关联,并且其中第三权重指示比第一权重和第二权重更高的错误敏感性。该控制器被配置为当第一权重、第二权重和第三权重的总和累积到预先确定的值时,关闭第一擦除块。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2是示出根据一个实施方案的操作存储设备以执行读取或写入命令的方法的框图。
图3A示出根据一个实施方案的在存储设备中利用的分区命名空间。
图3B示出根据一个实施方案的图3A的存储设备的分区命名空间的状态图。
图4A至图4C是示出根据各种实施方案的擦除块的程序数与擦除块的读取错误敏感性的关系的曲线图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被划分为多个分区的存储单元,每个分区包括多个擦除块。数据被写入分区的擦除块到程序点,该程序点小于该擦除块的可写入容量。该擦除块中的该数据与各种读取权重相关联,这些读取权重取决于该数据相对于该程序点的位置。更接近该程序点存储的数据比更接近该擦除块开端存储的数据具有更高的读取权重。这些读取权重指示该数据的错误敏感性。当接收到一个或多个读取命令时,所读取数据的这些读取权重被累积,以估计位错误的累积,直到达到预先确定的值为止。
图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可利用包括在存储设备106中的存储单元110(诸如非易失性存储器)来存储和检索数据。例如,存储单元110可以是任何类型的非易失性存储器,诸如MRAM、NAND、NOR或HDD。在以下描述中,出于简化和示例性目的,存储单元110被称为非易失性存储器(NVM)110。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列操作的多个存储设备,诸如存储设备106。例如,存储系统100可以包括多个存储设备106,其被配置作为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备诸如存储设备106存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。
存储设备106包括控制器108、NVM 110、电源111、易失性存储器112和接口114。控制器108包括内部存储器或缓存区(未示出)。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷电路板(PCB),存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCIExpress(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可包括多个存储器设备或存储器单元。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闪存存储器设备擦除数据。
存储设备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等))。
各种类型的易失性存储器可用于不同的访问属性。例如,DRAM可被布置用于较长的突发访问,以改善相同访问总线的带宽(BW)。或者,DRAM可用于较小的访问,使得随机的小访问可具有更好的延迟。控制器108包括附加的可选SRAM和/或嵌入式MRAM(未示出)。嵌入式MRAM是可在另一实施方案中使用的另一替代存储器。类似地,可针对不同的设计目的优化对MRAM的访问,但是SSD控制器108中嵌入式MRAM的数量可能对成本敏感。因此,选择多少数据和哪些数据进入高级非易失性存储器和高级易失性存储器将受制于系统权衡。
存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可经由切换模式(TM)总线(未示出)管理从NVM 110读取数据和/或将数据写入该NVM。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当存储设备106从主机设备104接收到写入命令时,控制器108在将与该写入命令相关联的数据发送到NVM 110之前,将该数据暂时存储在内部存储器中。
图2是示出根据一个实施方案的操作存储设备以执行读取或写入命令的方法200的框图。方法200可与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法200可以与设备一起使用,该设备具有主机设备和包括命令处理器的存储设备。
方法200开始于操作250,其中主机设备将命令作为条目写入提交队列中。在操作250处,主机设备可将一个或多个命令写入提交队列中。命令可以是读取命令或写入命令。主机设备可以包括一个或多个提交队列。主机设备可以任何顺序(即,提交顺序)将一个或多个命令写入提交队列,不管该一个或多个命令的顺序写入顺序(即,顺序处理顺序)如何。
在操作252中,主机设备写入一个或多个更新的提交队列尾指针并且敲响门铃或发送中断信号以向存储设备通知或发信号告知准备好执行的新命令。如果存在多于一个提交队列,则主机可以写入更新的提交队列尾指针并为提交队列中的每个提交队列发送门铃或中断信号。在操作254中,响应于接收到门铃或中断信号,存储设备的控制器从一个或多个提交队列获取命令,并且该控制器接收或DMA读取该命令。
在操作256中,该控制器处理命令并将与该命令相关联的数据写入或转移到主机设备存储器。该控制器一次可以处理多于一个命令。该控制器可以按提交顺序或按顺序处理一个或多个命令。处理写入命令可包括:识别用于将与该命令相关联的数据写入的分区,将该数据写入该分区的一个或多个逻辑块地址(LBA),以及推进该分区的写入指针以识别该分区内的下一个可用LBA。
在操作258中,一旦该命令已被充分处理,该控制器就将对应于已执行命令的完成条目写入主机设备的完成队列,并且移动或更新CQ头指针以指向新写入的完成条目。
在操作260中,该控制器生成中断信号或门铃并将其发送到主机设备。中断信号指示该命令已被执行并且与该命令相关联的数据在该存储器设备中可用。中断信号进一步通知主机设备完成队列已准备好被读取或处理。
在操作262中,主机设备处理完成条目。在操作264中,主机设备将更新的CQ头指针写入存储设备并敲响门铃或向该存储设备发送中断信号以释放完成条目。
图3A示出根据一个实施方案的在存储设备300中使用的分区命名空间(ZNS)302视图。存储设备300可将ZNS 302视图呈现给主机设备。图3B示出根据一个实施方案的存储设备300的ZNS 302的状态图350。存储设备300可以是图1的存储系统100的存储设备106。存储设备300可具有一个或多个ZNS 302,并且每个ZNS 302可具有不同的尺寸。除一个或多个分区命名空间302之外,存储设备300可进一步包括一个或多个常规命名空间。此外,ZNS 302可以是用于SAS的分区块命令(ZBC)和/或用于SATA的分区设备ATA命令集(ZAC)。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
在存储设备300中,ZNS 302是可被格式化成逻辑块使得容量被划分为多个分区306a-306n(统称为分区306)的NVM的数量。NVM可以是图1的存储单元或NVM 110。分区306中的每个分区包括存储器单元或NVM 304的多个物理块或擦除块(未示出),并且这些擦除块中的每个擦除块与多个逻辑块(未示出)相关联。分区306中的每个分区可具有与NVM或NAND器件的一个或多个擦除块的容量对准的尺寸。当控制器308从诸如主机设备(未示出)或主机设备的提交队列接收命令时,控制器308可从与ZNS 302的该多个擦除块(EB)相关联的该多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一LBA或扇区相关联。
在一个实施方案中,NVM 304为NAND器件。该NAND器件包括一个或多个管芯。该一个或多个管芯中的每个管芯包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个擦除块。该一个或多个擦除块中的每个擦除块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,MLC NAND管芯可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16KiB)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以频繁地访问用户数据粒度LBA大小为512字节的NAND。因此,如在下文描述中所提及的,NAND位置等于512字节的粒度。因此,LBA大小为512字节并且MLC NAND的两个页面的页面大小为16KiB,这导致每个字线32个LBA。然而,NAND位置大小不旨在进行限制,并且仅用作示例。
当将数据写入擦除块时,在分区306内对应地更新一个或多个逻辑块,以跟踪数据在NVM 304内的位置。数据可一次写入一个分区306,直到分区306填满,或写入多个分区306,使得多个分区306可部分填满。类似地,当将数据写入特定分区306时,数据可按逐字线的顺序一次一个块地写入多个擦除块,直到移动到相邻块(即,写入第一擦除块直到在移动到第二擦除块之前第一擦除块填满),或者可按逐字线的顺序一次多个块地写入多个擦除块,以平行的方式部分填充每个块(即,在写入每个擦除块的第二个字线之前写入每个擦除块的第一个字线)。每个NAND位置的这种顺序编程是许多NAND EB的典型非限制性要求。
当控制器308选择将存储每个分区的数据的擦除块时,控制器308将能够在分区开放时间选择擦除块,或该控制器可在达到填充该特定擦除块的第一个字线的需要时选择擦除块。当利用上述在开始下一个擦除块之前完全填充一个擦除块的方法时,这可能更加有差别。控制器308可使用时间差来在即时的基础上选择更优化的擦除块。将哪个擦除块分配和指定给每个分区及其连续LBA的决定能够在控制器308内针对零个或多个并行分区一直发生。
分区306中的每个分区与分区起始逻辑块地址(ZSLBA)或分区起始扇区相关联。ZSLBA是分区306中的第一可用LBA。例如,第一分区306a与ZaSLBA相关联,第二分区306b与ZbSLBA相关联,第三分区306c与ZcSLBA相关联,第四分区306d与ZdSLBA相关联,并且第n分区306n(即最后一个分区)与ZnSLBA相关联。每个分区306由其ZSLBA标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序来将数据写入NVM 110)。
当将数据写入分区306时,将写入指针310推进或更新为指向或指示分区306中用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针310指示对分区306的后续写入将在何处开始。后续写入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针310指示为下一个起始点的位置处附加到分区306。可将分区306内的LBA的排序列表存储用于写入排序。每个分区306可具有其自身的写入指针310。因此,当接收到写入命令时,分区由其ZSLBA标识,并且写入指针310确定在所识别的分区内数据的写入开始的位置。
图3B示出针对图3A的ZNS 302的状态图350。在状态图350中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不含数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于ZSLBA(即,WP=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可向主机提供活动状态下的推荐时间的描述。控制器308包括ZM。分区元数据可存储在ZM和/或控制器308中。
术语“写入”包括当用户数据尚未填充所有可用NAND位置时,在擦除块中的0个或更多个NAND位置和/或擦除块中的部分填充NAND位置上编程用户数据。术语“写入”可进一步包括由于以下原因而将分区移动至满的:内部驱动器处理需要(因为这些误比特在开放的擦除块上更快地累积而导致的开放块数据保留问题),存储设备300由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭或填充分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器308将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
在开放分区和关闭分区中,写入指针指向分区中位于ZSLBA和分区的最后LBA的末端之间的某个位置(即,WP>0)。活动分区可根据由ZM进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,ZM可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用扇区或LBA(即,WP=分区容量(ZCAP))。在满的分区中,写入指针指向该分区的可写入容量的末端。仍可执行满的分区中存储的数据的读取命令。
分区可具有任何总的容量,诸如256MiB或512MiB。然而,每个分区的一小部分可能无法访问以将数据写入,但仍可被读取,诸如每个分区的存储奇偶校验数据的部分和一个或多个被排除的擦除块。例如,如果分区306的总容量为512MiB,那么ZCAP可为470MiB,这是可用于将数据写入的容量,而42MiB不可用于写入数据。分区的可写入容量(ZCAP)等于或小于总分区存储容量。存储设备300可在分区重置时确定每个分区的ZCAP。例如,控制器308或ZM可确定每个分区的ZCAP。当分区被重置时,存储设备300可确定该分区的ZCAP。
ZM可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。在重置满的分区时,尽管该分区可能标记为可供写入的空分区,但该分区的数据可能不被立即清除。但是,在切换到开放和活动分区之前,必须擦除重置的分区。可在ZM重置和ZM开放之间的任何时间擦除分区。在重置分区时,存储设备300可确定该重置分区的新ZCAP以及更新分区元数据中的可写入ZCAP属性。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
由于重置分区会清除存储在该分区中的所有数据或调度对存储在该分区中的所有数据的擦除,因此消除了对各个擦除块进行垃圾回收的需要,从而改善了存储设备300的整体垃圾回收过程。存储设备300可标记一个或多个擦除块以用于擦除。当将要形成新分区并且存储设备300预计ZM开放时,则可擦除被标记用于擦除的该一个或多个擦除块。存储设备300可进一步在擦除这些擦除块时决定和创建该分区的物理支持。因此,一旦新分区被开放并且擦除块被选择以形成分区,该擦除块将被擦除。此外,每次重置分区时,可选择分区306的LBA和写入指针310的新顺序,使得分区306能够容忍不按顺序接收命令。可任选地关闭写入指针310,使得可将命令写入为该命令指示的任何起始LBA。
重新参考图3A,当主机发送写入命令以向分区306写入数据时,控制器308拉入该写入命令并将该写入命令标识成对新打开分区306的写入。控制器308选择一组EB以存储与新打开分区306的写入命令相关联的数据,并且新打开分区306切换到活动分区306。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器308被配置为从由主机设备填充的提交队列中DMA读取新命令。
在刚切换到活动分区306的空分区306中,因为写入指针310将与ZSLBA相关联的逻辑块指示为第一可用逻辑块,所以将数据指定给分区306和分区306的始于ZSLBA的一组相关联顺序LBA。可将该数据写入一个或多个擦除块或已针对分区306的物理位置分配的NAND位置。在将与写入命令相关联的数据写入分区306之后,写入指针310被更新为指向可用于主机写入的下一个LBA(即,第一写入的完成点)。来自该主机写入命令的写入数据被顺序地编程到擦除块中被选择用于分区的物理支持的下一个可用NAND位置中。
例如,控制器308可接收对第三分区306c的第一写入命令,或第一分区附加命令。主机按顺序识别分区306的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区306c中的如写入指针310所指示的第一或下一个可用LBA,并且将写入指针310推进或更新为指向可用于主机写入的下一个可用LBA(即,WP>0)。如果控制器308接收到对第三分区306c的第二写入命令,或第二分区附加命令,则将与第二写入命令相关联的数据写入第三分区306c中的由写入指针310识别的下一个可用LBA。一旦将与第二命令相关联的数据写入第三分区306c,写入指针310就再次推进或更新为指向可用于主机写入的下一个可用LBA。重置第三分区306c将写入指针310移动回到ZcSLBA(即,WP=0),并且该第三分区306c切换到空分区。
图4A至图4C是示出根据各种实施方案的擦除块的程序数与擦除块的读取错误敏感性的关系的曲线图。擦除块的程序数位于x轴上,并且错误敏感性位于y轴上。x轴范围为从擦除块不包含编程数据到擦除块满容量。根据程序大小以及任何相关联的元数据的大小,擦除块满容量时可能包含的程序总数是可变值。在以下描述中,出于简化和示例性目的,将非易失性存储单元称为NVM。此外,虽然图4A至图4C针对擦除块,但是相同概念可应用于整个分区或整个流,如下文所论述。
此外,y轴范围为从低错误敏感性到高错误敏感性。错误敏感性是相对的,并且可取决于非易失性存储器的类型。此外,使用低敏感性和高敏感性的范围来提供进一步解释本文的实施方案的示例。所示曲线既不是进行限制也不是进行约束,而是用于提供对擦除块中数据的读取错误敏感性增加的可能实施方案。
擦除块可具有256个字线的总容量,然而,该擦除块可具有多于或少于256个字线。利用写入指针(诸如图3A的指针310)将数据顺序地写入第一分区的第一擦除块中的字线。当将所有字线都写入第一擦除块时,可关闭第一擦除块(即,擦除块(EB)中的每个字线(WL)都已经被编程,使得每个小区都被编程有非擦除值)。当接收到新的写入命令时,可为新的写入数据分配第二擦除块。类似于开放和活动分区,诸如图3B中描述的开放和活动分区,开放的擦除块是已经被部分编程的擦除块。
在一个实施方案中,将数据写入第一分区内每个管芯的每个平面的第一擦除块中的第一个字线。将数据顺序地写入,填充第一分区内每个管芯的每个平面的第一擦除块的每个字线。当分区中的所有擦除块都被填满时,该分区处于满容量或ZCAP,诸如图3A的ZCAP。在另一个实施方案中,在继续编程另一个擦除块之前,将擦除块从顶部到底部(即,从第一个字线到最后一个字线)完全编程。在此类实施方案中,ZCAP(诸如图3B中描述的ZCAP)可由于将各个擦除块填充到满容量而动态收缩,使得先前的ZCAP等于当前的ZCAP减去一个或多个关闭的擦除块。例如,一旦第一擦除块被填充到满容量,ZCAP就可动态减少以排除该填充的第一擦除块。
然而,由于达到预先确定的读取错误敏感性值,因此在擦除块满容量之前可关闭该擦除块。预先确定的读取敏感性值可为约1000至约2000。预先确定的读取错误敏感性值的先前值既不是旨在进行限制也不是旨在进行约束,而是旨在提供可能值的示例。在一个实施方案中,在第一次开放擦除块时确定预先确定的读取错误敏感性值。在另一个实施方案中,预先确定的读取错误敏感性值基于当前条件(诸如当前预先确定的读取错误敏感性和/或对擦除块的特定区段的当前读取次数)发生动态改变。在又一个实施方案中,存储设备可临时切换从主机接收的用户数据的位置,并且实施实时测试以确定新的读取错误敏感性值。因此,预先确定的读取错误敏感性值可改变,而不是设定的恒定值。
控制器(诸如图1的控制器108)可向主机(诸如图1的主机设备104)指示分区完成的推荐信号,以便向主机警示擦除块或分区正在接近预先确定的读取错误敏感性值。控制器108可公布以下事件:向主机设备104通知分区或擦除块条件已改变。然后,主机设备104应检索改变列表并且执行主机设备认为必要的任何缓解,诸如通过写入填充数据或虚拟数据以填充分区或擦除块的剩余容量,关闭该分区或擦除块。
对于以下示例,写入擦除块的数据大小等于字线。在本文的示例中,擦除块包含256个字线。针对字线大小和擦除块大小示出的值并非旨在进行限制。在整个以下实施方案中使用术语“字线”也并非旨在进行限制,而是旨在提供可能的示例以帮助解释一些可能的实施方案。如上文所论述,数据可以大于或小于字线的大小写入擦除块或分区。
第一程序点包括当前写入擦除块的所有数据,使得第一程序点表示最后一个编程的字线。在读取距离第一程序点更远的字线(即,更接近擦除块的起始点)期间累积错误的概率通常小于读取距离第一程序点更近的字线期间累积错误的概率。例如,第一程序点可为约100个字线的数据,对后一个字线(即,最接近第一程序点)的读取命令比对第一个字线(即,最接近擦除块的开端)的读取命令具有更高的错误敏感性概率。
随着用于编程和读取的共享电路在NAND管芯布局中进一步分离,开放的擦除块内字线上的相关位错误累积减少。电路的这种分离允许电气行为更加隔离,诸如串扰和部件泄漏。这种相关性可能与可用于寻址物理介质的字线编号有关;然而,并不总是需要字线编号与电路分离之间的相关性。
将读取命令权重应用于每个读取命令,以归一化总体的错误敏感性,对更接近程序点的读取命令赋予更大的权重(即,更接近程序点的读取命令与更大的权重相关联)。图4A至图4C中示出的曲线是可能的实施方案的一般表示,并且其他曲线可适用于不同的非易失性存储器节点。
在一个实施方案中,可将一个读取权重应用于擦除块的编程数据区段。在另一个实施方案中,可将两个读取权重应用于擦除块的编程数据区段。在又一个实施方案中,可将三个读取权重应用于擦除块的编程数据区段。在另一个实施方案中,可将四个读取权重应用于擦除块的编程数据区段。在又一个实施方案中,可将多于四个读取权重应用于擦除块的编程数据区段。
图4A示出了对部分填满的第一擦除块的第一程序点406的多个字线的读取错误敏感性的曲线图400。第一程序点406可以是小于擦除块的总可写入容量的任何程序点(由“EB的末端410”示出)。在该示例中,一个或多个第一写入命令将数据写入或编程到擦除块中256个字线的总容量中的100个字线(即,第一程序点是该擦除块中的第100个字线),并且从主机接收的每个读取命令用于读取特定于该100个字线内某个字线的数据。此外,“程序1:n”表示从第一个程序(即,擦除块中位于EB的起始点402处的第一个字线)到程序点或n处的最终程序(即,擦除块中的第100个字线)的程序范围。在该示例中,n表示100个字线或100个程序。
在100个编程的字线中,约60个字线位于A1中,约20个字线位于B1中,约15个字线位于C1中,并且5个字线位于D1中。此外,指示每个区段的错误敏感性水平的读取命令权重如下:A1具有为0.5的第一权重,B1具有为1的第二权重,C1具有为2的第三权重,并且D1具有为3的第四权重。读取命令权重和每个区段的字线数量仅是示例,而并非旨在进行限制,因为可能存在任何数量的其他组合。
例如,最接近擦除块的开端/起始点402编程的前60个字线可与具有为0.5的第一权重的第一区段A1相关联,并且接下来的20个相邻字线可与具有为1的第二权重的第二区段B1相关联。例如,在第一区段A1中,字线5可具有比字线4更高或更低的错误敏感性,并且字线6可具有比字线5更高或更低的错误敏感性。在第一区段A1中,字线之间读取错误敏感性的差值可能是最小的。因此,可以第一区段A1内的每个字线的相同值来估计或平均字线的总体错误敏感性,如图4A的曲线图400的第一线性部分404所示。
然而,在第二区段B1、第三区段C1和第四区段D1中,字线与下一个相邻字线的读取错误敏感性可能显著不同,如图4A的曲线图400中的第一曲线408所示。因此,第二区段B1、第三区段C1和第四区段D1包括比第一区段A1更少的字线。通过在第二区段B1、第三区段C1和第四区段D1内分组较少的字线,仍然可以相同值来估计或平均每个区段内的总体错误敏感性。例如,与第二区段B1中被设置成更接近第三区段C1的第二字线相比,第二区段B1中被设置成更接近第一区段A1的第一字线将具有较低的敏感性。因此,第一字线的较低敏感性将抵消或甚至超过第二字线的较高敏感性,使得第二区段B1中的每个字线的总体敏感性可被平均为一个值。
此外,可从第一擦除块非顺序地读取一直存储到第一程序点406的数据。例如,控制器(诸如图1的控制器108)可接收一个或多个第一读取命令以读取区段A1中的数据,接收一个或多个第二读取命令以读取区段B1中的数据,并且接收一个或多个第三读取命令以读取区段D1中的数据。此外,控制器108在每次读取发生之后更新权重计数器表120。例如,如果对区段A1进行200次读取,对区段B1进行100次读取,并且对区段D1进行10次读取,则读取权重总和的计算如下:200*0.5+100*1+10*3=230。
除了前面的示例,控制器108还可接收一个或多个第四读取命令以读取区段D1中的数据,并且接收一个或多个第五读取命令以读取区段B1中的数据。由于新的读取命令与区段D1中的数据相关联,因此控制器108更新了权重计数器表120中区段D1的权重。例如,第四读取命令与区段D1中数据的100次读取相关联。区段D1的读取总次数为110。此外,权重的更新总和如下:200*0.5+100*1+110*3=530。
如下文进一步论述的,在与一个或多个读取命令相关联的权重的总和累积到或高于预先确定的值(诸如约1000)之后,关闭擦除块。该预先确定的值指示该擦除块中已经累积了太多错误,并且指示存储在该擦除块中的数据可能有丢失的危险。通过基于被读取的数据在该擦除块中的存储位置对这些读取命令进行加权,可以更准确地预测该擦除块的寿命。例如,在控制器确定应该关闭擦除块之前,可执行来自第一区段A1的约2000次数据读取。类似地,在控制器确定应该关闭擦除块之前,可仅执行来自第四区段C1的约333次数据读取。
图4B示出了在已经接收到将数据写入第一擦除块中的第二程序点412的一个或多个第二写入命令之后的曲线图400。第二程序点412超过第一程序点406,更接近擦除块410的末端。从第一程序点406到第二程序点412的数据由“程序n+1:n+m”表示,其中“n”表示第一程序点406的最后一个程序或字线,并且“m”表示第二程序点412的最后一个程序或字线。在该示例中,从第一程序点406到第二程序点412或从该一个或多个第一写入命令到该一个或多个第二写入命令的程序或字线的数量将为100个字线,使得第一擦除块包括在256个字线的总容量中存储数据的200个字线。与该一个或多个第二写入命令相关联的数据被顺序地写入,使得擦除块首先包含该一个或多个第一写入命令的数据,其次包含该一个或多个第二写入命令的数据。
进一步说明距离程序点更远的读取命令具有较低的错误敏感性,到第一程序点406为止前的字线的读取错误敏感性具有为0.5的第一权重(即,B1、C1和D1全部具有为0.5的权重),如第一线性部分404与第二线性部分414对准所示。因此,一旦该一个或多个第二命令的数据被写入,图4A的第一曲线408就不再包括在内。如果数据距离第二程序点412足够远,则在接收到该一个或多个第二写入命令时写入的一个或多个字线中所存储的数据可被包括在第二线性部分414中。随着越来越多的数据被写入擦除块,先前写入的数据受读取干扰的影响越来越小。例如,对于10字线编程,第八字线和第九字线可能受第十字线编程或读取的影响,但是第一字线和第二字线可能不受第十字线编程或读取的影响。
类似于第一程序点406,更接近第二程序点412的程序具有更高的读取错误敏感性,使得第五区段B2具有为1的第二权重,第六区段C2具有为2的第三权重,并且第七区段D2具有为3的第四权重,如图4B中的第二曲线416所示。此外,与第一区段相对应且由A2表示的读取命令具有为0.5的第一权重,如第一线性部分404和第二线性部分414所示。由于第七区段D2最接近第二程序点412,因此与其他区段C2、B2和A2相比,第七区段的读取错误敏感性最高。因此,与区段A2、B2和C2相比,第七区段D2具有与每个读取命令相关联的更高权重。
此外,可从第一擦除块非顺序地读取一直存储到第二程序点412(包括经过第一程序点406)的数据。例如,控制器(诸如图1的控制器108)可接收一个或多个第一读取命令以读取第五区段A2中的数据,接收一个或多个第二读取命令以读取第六区段B2中的数据,并且接收一个或多个第三读取命令以读取第八区段D2中的数据。控制器108针对每个读取命令以及权重的总和更新了权重计数器表120。继续图4A的示例,如果在第二区段A2中读取数据的一个或多个第一读取命令包含200次读取,在第六区段B2中读取数据的一个或多个第二读取命令包含10次读取,并且在第八区段D2中读取数据的一个或多个第三读取命令包含20次读取,则更新总和的计算如下:530(取自图4A示例的值)+200*0.5+10*1+20*3=700。
图4C示出了在已经接收到将数据写入第一擦除块的一个或多个第三写入命令之后的曲线图400。可将数据写入第一擦除块,使得第一擦除块被关闭或写入到满容量。在先前的情况下,通过用填充数据填充开放容量来关闭第一擦除块。在与一个或多个读取命令相关联的权重的总和累积到或高于预先确定的值之后,关闭擦除块。该预先确定的值可为约1000。该预先确定的值指示该擦除块中已经累积了太多错误,并且指示存储在该擦除块中的数据可能有丢失的危险。例如,接收一个或多个第三写入命令以将数据写入末端程序点420。在接收到一个或多个读取命令以从第一擦除块中的任何位置读取数据之后,这些读取命令的权重被累积并且被发现达到预先确定的值。然后,控制器可将填充数据或虚拟数据写入第一擦除块,以填充末端程序点420与EB的末端410之间的字线。所列出的预先确定的值并非旨在进行限制,并且该预先确定的值的其他实施方案可以是有效的。
例如,如果对于读取与第一权重0.5相关联的第一区段A2、读取与第二权重1相关联的第二区段B2、读取与第三权重2相关联的第三区段C2以及读取与第四权重3相关联的第四区段D2的多个读取命令,权重总和等于或大于预先确定的值(诸如约1000),则控制器108将关闭第一擦除块,这是由于高的总体错误敏感性,或者已经累积了不可接收的位错误量的高概率。将填充数据或虚拟数据写入第一擦除块,以便将第一擦除块填充到容量(即,填充到EB的末端410)。
此外,可接收不同的读取命令以从擦除块中的相同区段或不同区段读取数据。控制器108可在读取命令的权重超过或等于预先确定的值(诸如约1000)之后的任何点处关闭第一擦除块。例如,如果读取命令的总和等于或超过预先确定的值(诸如约1000),则可在第一程序点406处关闭第一擦除块。图4B中的先前总数700存储在图1的权重计数器表120中。如果与第八区段D2中的数据相对应的新读取命令具有100次读取,则新的总权重计算如下:700+100*3=1000。由于新的总权重等于1000,因此控制器在预先确定的值处关闭第一擦除块,这是因为已经累积了不可接受的位错误量的高可能性。一旦第一擦除块已经关闭,第一擦除块中的数据就可被重新写入第二擦除块,在这种情况下,读取的权重计数将再次从零开始。
然而,如果将用户数据写入达可写入容量,则第一擦除块也可被关闭。例如,如果接收到将数据写入第一擦除块的剩余56个字线的一个或多个第四写入命令,导致第一擦除块的所有256个字线存储用户数据(即,数据被写入第一擦除块,直到EB的末端410),则第一擦除块可满容量。当擦除块关闭或满容量时,为从任何字线读取数据而接收的任何读取命令的读取错误敏感性与第一区段A1(或第五区段A2)的相同权重相关联。因此,一旦第一擦除块关闭或满容量,图4B中所示的第二曲线416就不再包括在内。相反,第一擦除块中的所有字线的读取错误敏感性相同,如图4C中的线422所示。
此外,图4A至图4C中示出的实施方案还可应用于多个分区内的一个分区,而不是仅应用于一个分区内的一个擦除块。例如,可接收一个或多个第一写入命令以将数据写入多个分区的第一分区中的一个或多个擦除块。该一个或多个第一写入命令将该第一分区部分地填充到第一程序点,该第一程序点小于该第一分区的总可写入容量或ZCAP。当接收到一个或多个读取命令以从第一分区非顺序地读取数据时,将读取权重应用于每个读取命令,如上文所论述。
由于不再对相邻字线进行编程,因此在关闭的或满容量的擦除块中,读取干扰错误的敏感性降低。当对相邻字线进行编程时,施加到当前编程的字线的电压可能会影响先前编程的字线的电压,这可能导致位错误。因此,在擦除块中对字线的最后一次写入会锁定位错误敏感性,这可能导致单数读取错误敏感性区段。第二擦除块可在第一擦除块关闭或满容量之后被写入。
每个读取权重取决于相对于第一程序点读取的数据的位置,使得最接近第一分区的开端的第一读取权重区段可以是0.5,第二读取权重区段可以是1,第三读取权重区段可以是2,并且最接近第一程序点的第四读取权重区段可以是3。与距离第一程序点更远的数据读取请求相比,距离第一程序点更近的数据读取请求具有更高的权重。当读取权重的总和等于或大于预先确定的值(诸如约1000)时,通过用虚拟数据或填充数据填充剩余容量来关闭第一分区。然后将新的写入命令的数据写入第二分区或第二擦除块。
然而,当分区或擦除块将用户数据存储到分区容量或擦除块容量时,也可关闭第一分区或第一擦除块,在这种情况下,用于从分区或擦除块读取数据的每个读取命令将具有相同权重,如上文所论述。读取权重值和预先确定的值并非旨在进行限制,并且可存在其他实施方案。此外,根据数据在擦除块或分区内的位置,将权重应用于读取命令,通过不将擦除块或分区严格限制为约1000次读取,可提高存储器单元的总体寿命。权重系统可允许对擦除块或分区进行多次读取以及降低不可接收的位错误累积量的可能性。因此,能够更准确地预测擦除块或分区的总体寿命,从而允许延长擦除块或分区的寿命。因此,存储设备可以更有效且高效的方式进行操作。
在一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为将与一个或多个第一命令相关联的数据顺序地写入该多个分区的第一分区。第一分区具有可写入容量,并且与该一个或多个第一命令相关联的该数据将第一分区部分地填充到小于该可写入容量的第一程序点。该控制器被进一步配置为接收一个或多个读取命令,以从第一分区非顺序地读取数据,其中该一个或多个读取命令中的每个读取命令与权重相关联,该权重基于该数据被读取到第一程序点的接近程度,并且其中该一个或多个读取命令的至少两个权重是不同的。
与一个或多个命令相关联的数据被写入第一分区的部分填满的第一擦除块。该一个或多个读取命令用于读取存储在第一擦除块中的数据。该控制器被进一步配置为当与该一个或多个读取命令相关联的权重的总和累积到预先确定的值时,关闭第一擦除块。读取命令的权重越高,则该读取命令越接近第一程序点。这些权重指示错误敏感性水平。该控制器还被配置为将与一个或多个第二命令相关联的数据顺序地写入第一分区,其中与该一个或多个第二命令相关联的该数据将第一分区部分地填充到小于可写入容量的第二程序点。该控制器被进一步配置为接收一个或多个第二读取命令,以从第一分区非顺序地读取数据,其中该一个或多个第二读取命令中的每个第二读取命令与权重相关联,该权重基于该数据被读取到第二程序点的接近程度,并且其中该一个或多个第二读取命令的至少两个权重是不同的。该控制器还被配置为当与这些读取命令相关联的权重的总和累积到预先确定的值时,关闭第一分区。该控制器还被配置为将与一个或多个第三命令相关联的数据顺序地写入第一分区,其中该一个或多个第三命令将第一分区填充到可写入容量,并且接收一个或多个第三读取命令以从第一分区非顺序地读取数据,其中当第一分区被填充到可写入容量时,该一个或多个第三读取命令中的每个第三读取命令与相同权重相关联。
在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为接收多个读取命令,以从该多个分区的第一分区的部分填满的第一擦除块非顺序地读取数据,其中这些读取命令中的每个读取命令与权重相关联,该权重基于在第一擦除块内读取的数据的位置,并且其中这些读取命令中的至少两个权重是不同的。该控制器被进一步配置为当与这些读取命令相关联的权重的总和累积到预先确定的值时,关闭第一擦除块。
该一个或多个读取命令的至少四个权重是不同的。与更接近部分填满的第一擦除块的开端存储的数据相比,最接近部分填满的第一擦除块的程序点存储的数据具有更高的权重。读取命令的权重越高,则该读取命令越接近第一程序点。这些权重在约0.5至约3之间变化。预先确定的值为约1000。这些权重指示错误敏感性水平。
在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元还包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括耦接到该非易失性存储单元的控制器。该控制器被配置为接收一个或多个第一读取命令,以从第一分区的部分填满的第一擦除块读取第一数据,其中该一个或多个第一读取命令各自与第一权重相关联。该控制器被进一步配置为接收一个或多个第二读取命令,以从该部分填满的第一擦除块读取第二数据,其中该一个或多个第二读取命令各自与大于第一权重的第二权重相关联。该控制器还被配置为接收一个或多个第三读取命令,以从该部分填满的第一擦除块读取第三数据,其中该一个或多个第三读取命令各自与大于第一权重和第二权重的第三权重相关联,并且其中第三权重指示比第一权重和第二权重更高的错误敏感性。该控制器被配置为当第一权重、第二权重和第三权重的总和累积到预先确定的值时,关闭第一擦除块。
第一权重、第二权重和第三权重基于在第一擦除块内读取的数据的位置。该一个或多个第一读取命令用于读取更接近第一擦除块的开端存储的数据。该一个或多个第三读取命令用于读取最接近第一擦除块的程序点存储的数据。该一个或多个第二读取命令用于读取存储在第一擦除块的开端与第一擦除块的程序点之间的数据。该控制器被进一步配置为接收一个或多个第四读取命令,以从该部分填满的第一擦除块读取第四数据,其中该一个或多个第四读取命令各自与大于第二权重且小于第三权重的第四权重相关联,并且当第一权重、第二权重、第三权重和第四权重的总和累积到预先确定的值时,关闭第一擦除块。该一个或多个第四读取命令用于读取存储在该一个或多个第三读取命令的数据与该一个或多个第二读取命令的数据之间的数据。第一权重为约0.5,第二权重为约1,第三权重为约3,第四权重为约2,并且预先确定的值为约1000。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种存储设备,所述存储设备包括:
非易失性存储单元,其中所述非易失性存储单元的容量被划分为多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块;和
控制器,所述控制器耦接到所述非易失性存储单元,其中所述控制器被配置为:
将与一个或多个第一命令相关联的数据顺序地写入所述多个分区的第一分区,所述第一分区具有可写入容量,其中与所述一个或多个第一命令相关联的所述数据将所述第一分区部分地填充到小于所述可写入容量的第一程序点;以及
接收一个或多个读取命令,以从所述第一分区非顺序地读取所述数据,其中所述一个或多个读取命令中的每个读取命令与权重相关联,所述权重基于所述数据被读取到所述第一程序点的接近程度,并且其中所述一个或多个读取命令的至少两个权重是不同的。
2.根据权利要求1所述的存储设备,其中与所述一个或多个命令相关联的所述数据被写入所述第一分区的部分填满的第一擦除块,并且其中所述一个或多个读取命令用于读取存储在所述第一擦除块中的所述数据。
3.根据权利要求2所述的存储设备,其中所述控制器被进一步配置为:当与所述一个或多个读取命令相关联的所述权重的总和累积到预先确定的值时,关闭所述第一擦除块。
4.根据权利要求1所述的存储设备,其中读取命令的所述权重越高,则所述读取命令越接近所述第一程序点,并且其中所述权重指示错误敏感性水平。
5.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为:
将与一个或多个第二命令相关联的数据顺序地写入所述第一分区,其中与所述一个或多个第二命令相关联的所述数据将所述第一分区部分地填充到小于所述可写入容量的第二程序点;以及
接收一个或多个第二读取命令,以从所述第一分区非顺序地读取所述数据,其中所述一个或多个第二读取命令中的每个第二读取命令与权重相关联,所述权重基于所述数据被读取到所述第二程序点的接近程度,并且其中所述一个或多个第二读取命令的至少两个权重是不同的。
6.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为当与所述读取命令相关联的所述权重的总和累积到预先确定的值时,关闭所述第一分区。
7.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为:
将与一个或多个第三命令相关联的数据顺序地写入所述第一分区,其中所述一个或多个第三命令将所述第一分区填充到所述可写入容量,以及
接收一个或多个第三读取命令,以从所述第一分区非顺序地读取所述数据,其中当所述第一分区被填充到所述可写入容量时,所述一个或多个第三读取命令中的每个第三读取命令与相同权重相关联。
8.一种存储设备,所述存储设备包括:
非易失性存储单元,其中所述非易失性存储单元的容量被划分为多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块;和
控制器,所述控制器耦接到所述非易失性存储单元,其中所述控制器被配置为:
接收多个读取命令,以从所述多个分区的第一分区的部分填满的第一擦除块非顺序地读取数据,其中所述读取命令中的每个读取命令与权重相关联,所述权重基于在所述第一擦除块内读取的所述数据的位置,并且其中所述读取命令的至少两个权重是不同的;以及
当与所述读取命令相关联的所述权重的总和累积到预先确定的值时,关闭所述第一擦除块。
9.根据权利要求8所述的存储设备,其中所述一个或多个读取命令的至少四个权重是不同的。
10.根据权利要求8所述的存储设备,其中与更接近所述部分填满的第一擦除块的开端存储的所述数据相比,最接近所述部分填满的第一擦除块的程序点存储的所述数据具有更高的权重。
11.根据权利要求8所述的存储设备,其中读取命令的所述权重越高,则所述读取命令越接近所述第一程序点。
12.根据权利要求11所述的存储设备,其中所述权重在约0.5至约3之间变化。
13.根据权利要求12所述的存储设备,其中所述预先确定的值为约1000。
14.根据权利要求8所述的存储设备,其中所述权重指示错误敏感性水平。
15.一种存储设备,所述存储设备包括:
非易失性存储单元,其中所述非易失性存储单元的容量被划分为多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块;和
控制器,所述控制器耦接到所述非易失性存储单元,其中所述控制器被配置为:
接收一个或多个第一读取命令,以从第一分区的部分填满的第一擦除块读取第一数据,所述一个或多个第一读取命令各自与第一权重相关联;
接收一个或多个第二读取命令,以从所述部分填满的第一擦除块读取第二数据,所述一个或多个第二读取命令各自与大于所述第一权重的第二权重相关联;
接收一个或多个第三读取命令,以从所述部分填满的第一擦除块读取第三数据,所述一个或多个第三读取命令各自与大于所述第一权重和所述第二权重的第三权重相关联,其中所述第三权重指示比所述第一权重和所述第二权重更高的错误敏感性;以及
当所述第一权重、所述第二权重和所述第三权重的总和累积到预先确定的值时,关闭所述第一擦除块。
16.根据权利要求15所述的存储设备,其中所述第一权重、所述第二权重和所述第三权重基于在所述第一擦除块内读取的所述数据的位置。
17.根据权利要求15所述的存储设备,其中所述一个或多个第一读取命令用于读取更接近所述第一擦除块的开端存储的数据,所述一个或多个第三读取命令用于读取最接近所述第一擦除块的程序点存储的数据,并且其中所述一个或多个第二读取命令用于读取存储在所述第一擦除块的所述开端与所述第一擦除块的所述程序点之间的数据。
18.根据权利要求17所述的存储设备,其中所述控制器被进一步配置为:
接收一个或多个第四读取命令,以从所述部分填满的第一擦除块读取第四数据,所述一个或多个第四读取命令各自与大于所述第二权重并且小于所述第三权重的第四权重相关联;以及
当所述第一权重、所述第二权重、所述第三权重和所述第四权重的总和累积到预先确定的值时,关闭所述第一擦除块。
19.根据权利要求18所述的存储设备,其中所述一个或多个第四读取命令用于读取存储在所述一个或多个第三读取命令的所述数据与所述一个或多个第二读取命令的所述数据之间的数据。
20.根据权利要求19所述的存储设备,其中所述第一权重为约0.5,所述第二权重为约1,所述第三权重为约3,所述第四权重为约2,并且其中所述预先确定的值为约1000。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/847,352 | 2020-04-13 | ||
US16/847,352 US11210027B2 (en) | 2020-04-13 | 2020-04-13 | Weighting of read commands to zones in storage devices |
PCT/US2020/064609 WO2021211171A1 (en) | 2020-04-13 | 2020-12-11 | Weighting of read commands to zones in storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730250A true CN114730250A (zh) | 2022-07-08 |
Family
ID=78006538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080080227.5A Pending CN114730250A (zh) | 2020-04-13 | 2020-12-11 | 根据存储设备中的分区对读取命令加权 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11210027B2 (zh) |
CN (1) | CN114730250A (zh) |
DE (1) | DE112020005096T5 (zh) |
WO (1) | WO2021211171A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519910A (zh) * | 2023-12-29 | 2024-02-06 | 苏州元脑智能科技有限公司 | 用于虚拟机的计算快速链接内存确定方法和装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11776611B2 (en) * | 2021-08-03 | 2023-10-03 | Micron Technology, Inc. | Managing write disturb for units of a memory device using weighted write disturb counts |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9552171B2 (en) | 2014-10-29 | 2017-01-24 | Sandisk Technologies Llc | Read scrub with adaptive counter management |
US9864545B2 (en) | 2015-04-14 | 2018-01-09 | Sandisk Technologies Llc | Open erase block read automation |
US20170075593A1 (en) * | 2015-09-11 | 2017-03-16 | Sandisk Technologies Inc. | System and method for counter flush frequency |
US9711234B1 (en) | 2016-03-17 | 2017-07-18 | EMC IP Holding Co., LLC | Non-volatile memory read/write disturb monitoring |
US10089170B1 (en) * | 2016-06-15 | 2018-10-02 | Seagate Technology Llc | Open block management |
KR102606490B1 (ko) * | 2016-06-30 | 2023-11-30 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치 |
-
2020
- 2020-04-13 US US16/847,352 patent/US11210027B2/en active Active
- 2020-12-11 CN CN202080080227.5A patent/CN114730250A/zh active Pending
- 2020-12-11 WO PCT/US2020/064609 patent/WO2021211171A1/en active Application Filing
- 2020-12-11 DE DE112020005096.3T patent/DE112020005096T5/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519910A (zh) * | 2023-12-29 | 2024-02-06 | 苏州元脑智能科技有限公司 | 用于虚拟机的计算快速链接内存确定方法和装置 |
CN117519910B (zh) * | 2023-12-29 | 2024-03-22 | 苏州元脑智能科技有限公司 | 用于虚拟机的计算快速链接内存确定方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20210318833A1 (en) | 2021-10-14 |
DE112020005096T5 (de) | 2022-08-25 |
WO2021211171A1 (en) | 2021-10-21 |
US11210027B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102370760B1 (ko) | 존 네임스페이스에 대한 존 형성 | |
KR102569783B1 (ko) | 비순차적 구역 네임스페이스들 | |
CN113196226A (zh) | 固态驱动器中的分区命名空间 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
WO2020263322A1 (en) | Hold of write commands in zoned namespaces | |
US11500727B2 (en) | ZNS parity swapping to DRAM | |
US11436153B2 (en) | Moving change log tables to align to zones | |
US11960753B2 (en) | Solution for super device imbalance in ZNS SSD | |
US11537293B2 (en) | Wear leveling methods for zoned namespace solid state drive | |
CN114730250A (zh) | 根据存储设备中的分区对读取命令加权 | |
US11847337B2 (en) | Data parking for ZNS devices | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
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 |