CN114121110A - 耐用性预知的nand闪存管理 - Google Patents

耐用性预知的nand闪存管理 Download PDF

Info

Publication number
CN114121110A
CN114121110A CN202111493176.1A CN202111493176A CN114121110A CN 114121110 A CN114121110 A CN 114121110A CN 202111493176 A CN202111493176 A CN 202111493176A CN 114121110 A CN114121110 A CN 114121110A
Authority
CN
China
Prior art keywords
durable
determining
programming operation
program
cache
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
CN202111493176.1A
Other languages
English (en)
Inventor
不公告发明人
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.)
Yingren Technology Shanghai Co ltd
Original Assignee
Yingren Technology Shanghai Co ltd
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 Yingren Technology Shanghai Co ltd filed Critical Yingren Technology Shanghai Co ltd
Publication of CN114121110A publication Critical patent/CN114121110A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

耐用性预知的NAND闪存管理。提供了用于在非易失性存储系统中执行编程操作的系统、装置和方法。在一个实施例中,提供了一种方法,该方法可以包括:基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。

Description

耐用性预知的NAND闪存管理
技术领域
本发明涉及NAND闪存设备的管理和实现,特别涉及NAND闪存设备的编程操作。
背景技术
固态硬盘(SSD)的出现在一定程度上推动了现代计算系统的发展,固态硬盘(SSD)的速度和延迟性能比传统硬盘更高。与依靠磁性来存储数据的硬盘不同,固态驱动器使用NAND闪存设备来实现数据存储。NAND闪存设备是通过先进的工艺和组装技术制造的集成电路系列,可实现多层存储单元垂直堆叠到较小的颗粒和封装中,从而实现高存储容量。
新的NAND闪存工艺技术突破带来的存储容量增加也导致NAND存储单元的可靠性降低。对于NAND闪存设备,编程操作是指将数据写入NAND闪存设备的操作。并且NAND闪存设备通常包含坏块,其中包括最初在制造过程中存在缺陷的原厂坏块(factory bad block)和经过多次编程和擦除(P/E)循环后变得有缺陷的生长坏块(grown bad block)。作为一个众所周知的行为,NAND存储单元开始随着P/E循环次数的增加而磨损,导致错误计数的增加和生长坏块的增加。
NAND闪存设备通常提供两种编程操作:常规编程操作和高速缓存编程操作。这两种编程操作都包括将数据接收到高速缓存寄存器(cache buffer)中,并将数据移动到数据寄存器(data buffer)和NAND存储单元阵列中。高速缓存编程操作将在完成从高速缓存缓冲器到数据缓冲器的数据传输时应答SSD控制器。相比之下,在完成数据传输到NAND存储单元阵列之前,常规编程操作不会应答SSD控制器,这需要几毫秒量级的长时间的编程时间(例如,tPROG)。
大多数现代SSD控制器利用高速缓存编程操作来最大限度地提高写入NAND闪存设备的性能。在启用该特性的情况下,SSD控制器一旦从NAND设备获悉数据已从高速缓存缓冲器移动到数据缓冲器中,就向主机应答写命令完成。然而,这种方法具有编程错误的潜在风险,其中,当特定NAND块在SSD控制器不知道的情况下变得有缺陷时,将数据写入NAND存储单元的最终操作可能仍会失败。这对于NAND闪存设备来说尤其是一个挑战,随着时间的推移,生长坏块的数量越来越多。
为了解决前面提到的在向主机过早应答的情况下向NAND存储阵列中的潜在写入失败的问题,具有板上DRAM的SSD控制器可以被配置为在DRAM中保留数据的副本,直到后来确认成功地将其写入NAND存储阵列。如果NAND报告一个编程错误,SSD控制器然后可以简单地用来自DRAM的数据对NAND设备进行另一个编程操作。
然而,对于一个没有DRAM的SSD控制器来说,这是一个更大的挑战,因为控制器只能在其内部SRAM中保留少量有限的数据。来自主机的写命令可能会很快超过内部SRAM的存储能力,而控制器仍在等待NAND存储设备对SRAM中存储的有限数据量进行缓慢确认,从而导致SRAM溢出。结果,在高速缓存编程操作期间,没有DRAM的SSD控制器可能无法将所有临时数据保存到其内部SRAM,这可能导致未能保存到NAND存储器的数据也未能从SRAM恢复的灾难性故障。试图改善这种情况的现有解决方案可能必须限制使用没有DRAM的SSD控制器的缓存编程操作的数量,这会导致性能下降。或者,现有的解决方案也可能以更大的芯片尺寸和更高的硅成本为代价增加内部SRAM的数量。
发明内容
本公开提供了一种耐用性预知的非易失性存储设备管理技术,用于主动监视生长坏块的潜在发生,以便最小化编程错误。在各种实施例中,可以基于诸如平均页错误计数、编程时间(例如,tPROG)和P/E循环计数等许多因素将活动存储块分类为两个组(例如,耐用组和非耐用组)。可以将不同的管理策略应用于这两个组中的每一个,以实现最优性能,同时将高速缓存编程到一个生长坏块中的概率最小化。在一个实施例中,可以根据多个因素为活动块生成耐用性得分,并且可以通过将耐用性得分与耐用性阈值进行比较来将活动块归类到耐用组或非耐用组中。
在示例性实施例中,提供了一种方法,该方法可包括:基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
在另一个示例性实施例中,提供了一种非易失性存储系统。非易失性存储系统可以包括非易失性存储设备和处理器。所述处理器可被配置为基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
在又一示例性实施例中,提供了一种非暂时性机器可读介质。所述非暂时性机器可读介质可以具有计算机指令,当由硬件处理器执行时,所述计算机指令可以使所述硬件处理器执行以下操作:基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
附图简要说明
图1示意性地示出了根据本公开的一个实施例的非易失性存储系统。
图2示意性地示出了根据本公开的一个实施例的被分类为两个组的活动存储块。
图3是根据本公开的一个实施例的用于对非易失性存储设备执行编程操作的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。
本公开提供了用于非易失性存储设备的耐用性感知管理的系统和方法。如这里所使用的,非易失性存储器设备可以是计算机存储设备,其可以在断电之后保留存储的信息,并且可以在重新通电(关闭和重新打开)之后获取到所存储的信息。非易失性存储设备可以包括NAND闪存、NOR闪存、磁阻随机存取存储器(MRAM)、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PCRAM)、Nano-RAM等。NAND闪存可以用作示例,以演示控制器实现的耐用性预知技术。然而,根据本公开的各种实施例可以利用其他类型的非易失性存储设备来实现该技术。
图1示意性地示出了根据本公开的一个实施例的非易失性存储系统100。非易失性存储系统100可以包括非易失性存储控制器102和非易失性存储设备104。当非易失性存储系统100耦合到主机时,该非易失性存储系统100可以为主机提供数据存储和/或对存储数据的访问。非易失性存储设备104可以是基于非易失性存储器(NVM)的存储设备,例如,NAND设备。应当注意,非易失性存储系统100可以包括多个非易失性存储设备,并且非易失性存储设备104可以被示为多个非易失性存储设备的代表。非易失性存储控制器102可以包括处理器106和存储器108。处理器106可以是计算机处理器,例如但不限于微处理器或微控制器。存储器108可以是非暂时性计算机可读存储介质,例如DRAM或SRAM,以存储将由处理器106执行的计算机可执行指令。
在各种实施例中,可以记录非易失性存储设备104中的哪些存储块是坏的(例如,从制造过程中或在多次P/E循环之后有缺陷)以及非易失性存储设备104中的哪些存储块是好的,以便非易失性存储控制器102可以使用好的存储块用于数据存储(例如,执行编程操作)。好的存储块也可称为非缺陷存储块或活动存储块(或简单地称为活动块)。每个活动存储块可以被分类为两个组中的一个:耐用组和非耐用组。非易失性存储控制器102可以基于耐用性组信息来管理编程操作和存储块访问。在一个示例实施例中,高速缓存编程操作可以被分配给耐用组的活动块,以实现具有更高可靠性的高性能编程,而常规编程操作可以被分配给非耐用组的活动块,其中编程错误仍然可以恢复。
此外,非易失性存储控制器102也可以用耐用性组信息设置其编程访问策略。例如,主机启动的编程命令可以通过使用来自耐用组的活动块的高速缓存编程操作来执行,以最大化主机和非易失性存储系统100的吞吐量。相反,后端编程操作,例如但不限于垃圾回收和刷新中涉及的那些操作,在可以需要较低的性能时,可以通过使用来自非耐用组的活动块的常规编程操作来执行。
非易失性存储控制器102可以通过在垃圾回收期间利用块的耐用性信息进一步提高非易失性存储设备的可靠性。例如,在一轮垃圾回收结束时,非易失性存储控制器102可以会为非耐用组中的那些块添加一个额外的坏块扫描步骤。如果一个块变得有缺陷,它将被标记为坏块并从活动使用中移除。这可以使仅针对于非耐用块的扫描坏块的努力更加有效,因为非耐用的块可能更可能变成有缺陷的坏块,并且在编程操作期间具有更高的失败风险。
有多个指示符显示在一个块变成完全缺陷之前该块可以有多耐用,例如,该块内页的错误比特数、用于编程该块的编程时间(例如,tPROG)、该块的P/E循环数。在一个实施例中,非易失性存储控制器102可以使用这些指示符作为确定块是耐用的还是非耐用的因素。非易失性存储控制器102可以在读取操作期间通过错误比特数(或错误计数)来评估存储块的耐用性,较小数目的错误计数指示较耐用的块,较大数目的错误计数指示较非耐用的块。在一个实施例中,例如,当一个存储块中最差页的错误计数低于0.5%时,可以认为该存储块为耐用块。非易失性存储控制器102也可以评估一个块的编程时间tPROG,tPROG比制造商指定的编程时间短或长得多,显示出块内潜在的物理问题。应当注意的是,错误计数的数目是大还是小,以及tPROG是长还是短可以通过针对特定非易失性存储设备的测试来确定,并且可以在非易失性存储设备的寿命期间进行调整。不同的非易失性存储设备,例如,不同品牌、相同制造商的不同批次、基于不同的架构(例如,单级单元(SLC)、多级单元(MLC)、三级单元(TLC)),在非易失性存储设备的寿命期间都可以具有不同数量的错误计数和/或tPROG。
在一些实施例中,可基于这些耐用性因素生成耐用性得分R,并用于跟踪每个活动块的健康和耐用性。耐用性得分越高,活动块可能越健康和耐用,并且它在下一个高速缓存编程操作期间突然变成缺陷的可能性越小。在一个实施例中,R可以由多个变量的函数表示,例如,R=R(x1,x2,x3,…)。这些因素可以由变量来表示,这些变量可以包括编程时间tPROG、页面错误计数和块的P/E循环计数。在一个实施例中,例如,块内的平均页错误计数可以是变量x1,最近的编程时间tPROG可以是变量x2,并且P/E循环计数可以是变量x3。对于要使用的特定非易失性存储设备,每个因素的相应权重和每个因素的数学关系(例如,线性、多项式、对数等)可以通过实验获得。在一些实施例中,页错误计数和P/E循环计数越高,块可能越不耐用,因此耐用性得分越低。而且,离制造商规定的编程时间越远,耐用性得分可能越低。
在非易失性存储设备的寿命期间内,这些耐用性因素的值可以随时间改变,并且耐用性得分也可以随时间调整。在一个实施例中,耐用性得分可按与P/E循环计数的增加成比例的间隔更新。例如,耐用性得分可以随着每100P/E循环数的增加而更新。
在一些实施例中,可以评估每个耐用性因素,并且可以为每个因素确定相应的阈值。例如,可以使用0.5%的页错误计数作为页错误计数的阈值,可以使用制造商额定P/E循环计数的50%用作P/E循环次数的阈值,可以使用制造商规定的编程时间内的20%用作编程时间的阈值。在一个实施例中,耐用性得分可以被分配为从0到7的整数值,0指示最不耐用,7指示最耐用。当一个块的所有因素都远低于它们的阈值时,该块的耐用性得分可被指定为7以指示最小风险。当该块的所有因素远高于它们的阈值时,该块的耐用性得分可被指定为0以指示最高风险。当只有一个因素高于其阈值时,可以指定中间值3。
在一些实施例中,可以针对它们各自的历史变化或变化率来评估一些变量。例如,两个单独时间戳上的页错误计数和编程时间中的差异或梯度可用于评估耐用性得分。在一个示例实现中,页面错误计数的显著增加倾向于指示有风险且非耐用的块,因此可将较低的耐用性得分指定给该块。此外,tPROG时间的急剧增加可能导致块的耐用性分数的降低。
在不同的实施例中,耐用性得分可以具有不同的取值范围。除了0到7的分数范围(在一个实现中可以是四比特值)之外,在另一个实施例中,耐用性得分可以是指定给每个块的一个单个二进制位,1表示耐用块,0表示非耐用块。在又一实施例中,耐用性得分可以用其他位数表示,例如,8位或一个字节来表示0到255的十进制范围。
在一些实施例中,活动存储块可以基于耐用性得分R将其分类为耐用组和非耐用组。在一个实施例中,例如,阈值RT,可用于确定单个活动块可能属于哪个组。如果活动块的耐用性得分R大于或等于阈值,R≥RT,则可将该块分配给耐用组。如果活动块的耐用性得分R小于阈值,R<RT,则可将该块分配给非耐用组。
在一些实施例中,耐用性得分阈值RT可以动态设置和调整,以实现性能和可靠性之间的最佳折衷。低阈值RT可以通过允许耐用组中的更多块用于更快的缓存程序操作来优先考虑性能而不是可靠性,这对于处于寿命期间早期阶段的非易失性存储设备来说可能是一个不错的选择,此时预期的生长坏块数量最少。对于处于寿命期间后期阶段的非易失性存储设备,高阈值RT可能是首选,这需要采取更保守的方法来确保最大的可靠性,同时对吞吐量和性能有一些预期的妥协。
在各种实施例中,耐用性得分阈值RT可以通过测试要在非易失性存储系统100中使用的特定非易失性存储设备来确定。不同的非易失性存储设备,例如由不同的制造商基于不同的架构(例如,单级单元(SLC)、多级单元(MLC)、三级单元(TLC))制造的,都可以具有不同的耐用性得分阈值,并且该阈值可以在非易失性存储设备的寿命期间调整。
图2示意性地示出了根据本公开的一个实施例的被分类为两个组的活动存储块。第一组可以是耐用组202,其可以包括非易失性存储控制器确定为耐用的活动块。第二组可以是非耐用组204,其可以包括非易失性存储控制器确定为非耐用的活动块。在一个实施例中,这两个组可保存在非易失性存储设备104中,并在非易失性存储系统100的操作期间加载到存储器108中。
图3是根据本公开的实施例的用于对非易失性存储设备执行编程操作的过程300的流程图。
在框302中,基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,可将非易失性存储设备的活动存储块分类为耐用组和非耐用组。在各种实施例中,例如,较小数量的错误计数、较短的编程时间和较小数量的P/E循环数都可以指示块更耐用,而较大数量的错误计数、比制造商的指定编程时间短或长得多的编程时间和较大数量的P/E循环都可以指示块非耐用。在一个实施例中,可以基于多个因素来生成每个活动存储块的耐用性得分,并且可以通过将每个活动存储块的耐用性得分与耐用性阈值进行比较来将活动存储块分类为耐用组和非耐用组。可以在非易失性存储设备的寿命期间调整耐用性得分,同时每个因素的值可以随时间改变。耐用性阈值还可以在非易失性存储设备的寿命期间内进行调整。
在框304中,可以确定需要执行高速缓存编程操作,并且在框306中,可以选择来自耐用组的第一存储块来执行高速缓存编程操作。因为当向存储单元写入数据时,耐用的活动存储块不太可能报告错误,所以实施例可以从耐用组中选择活动存储块来执行高速缓存编程操作,以实现具有更高可靠性的高性能。
在框308中,可以确定需要执行常规编程操作,并且在框310中,可以从非耐用的组中选择第二存储块以执行常规编程操作。因为当向存储单元存储数据时,非耐用的活动存储块更有可能报告错误,所以实施例可以从非耐用的组中选择活动存储块来执行常规编程操作,以便可以恢复编程错误。
与耐用性相关的非易失性存储系统100的过程300和特征可以使用软件(例如,可执行计算机处理器(CPU,GPU或两者))、硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件或三者的任何合适组合来实现。在一个实施例中,例如,过程300和非易失性存储系统100的与耐用性有关的特征可以编程在计算机处理器计算机指令中,存储在非暂时性机器可读介质(例如、非易失性存储设备104、硬盘驱动器、CD、DVD等)中,并由执行可执行指令的处理器106(例如,微处理器或微控制器)执行。
在示例性实施例中,提供了一种方法,该方法可包括:基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
在一个实施例中,确定需要执行高速缓存编程操作可以包括从主机接收编程命令,并确定需要通过高速缓存编程操作执行来自主机的编程命令。
在一个实施例中,确定需要执行常规编程操作可以包括初始化后端编程操作和确定需要由常规编程操作执行后端编程操作。
在一个实施例中,该方法还可以包括基于多个因素为每个活动存储块生成耐用性得分。将活动存储块分类到耐用组和非耐用组中可以包括将每个活动存储块的耐用性得分与耐用性阈值进行比较。
在一个实施例中,每个活动存储块的耐用性得分可以基于所述多个因素中的至少一些的历史变化来设置。
在一个实施例中,可以在非易失性存储设备的寿命期间调整耐用性阈值,其中耐用性阈值在使用的早期阶段为低并随着使用而增加。
在一个实施例中,该方法还可以包括:初始化垃圾回收操作,确定在垃圾回收操作期间擦除的块属于非耐用组,并且针对所述非耐用块执行坏块扫描。
在另一个示例性实施例中,提供了一种非易失性存储系统。非易失性存储系统可以包括非易失性存储设备和处理器。所述处理器可被配置为基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
在一个实施例中,确定需要执行高速缓存编程操作可以包括从主机接收编程命令,以及确定需要通过高速缓存编程操作执行来自主机的编程命令。
在一个实施例中,确定需要执行常规编程操作可以包括初始化后端编程操作和确定需要由常规编程操作执行后端编程操作。
在一个实施例中,处理器还可被配置为:基于多个因素为每个活动存储块生成耐用性得分。为了将活动存储块分类为耐用组和非耐用组,处理器可以进一步被配置为将每个活动存储块的耐用性得分与耐用性阈值进行比较。
在一个实施例中,每个活动存储块的耐用性得分可以基于所述多个因素中的至少一些的历史变化来设置。
在一个实施例中,可以在非易失性存储设备的寿命期间调整耐用性阈值,其中耐用性阈值在使用的早期阶段为低并随着使用而增加。
在一个实施例中,处理器还可以被配置为:初始化垃圾回收操作,确定在垃圾回收操作期间擦除的块属于非耐用组,并且针对所述非耐用块执行坏块扫描。
在又一示例性实施例中,提供了一种非暂时性机器可读介质。所述非暂时性机器可读介质可以具有计算机指令,当由硬件处理器执行时,所述计算机指令可以使所述硬件处理器执行以下操作:基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;确定需要执行高速缓存编程操作;从耐用组中选择第一存储块以执行高速缓存编程操作;确定需要执行常规编程操作;以及从非耐用组中选择第二存储块以执行常规编程操作。
在一个实施例中,确定需要执行高速缓存编程操作可以包括从主机接收编程命令,并确定需要通过高速缓存编程操作执行来自主机的编程命令。
在一个实施例中,确定需要执行常规编程操作可以包括初始化后端编程操作和确定需要由常规编程操作执行后端编程操作。
在一个实施例中,当由硬件处理器执行时,计算机指令可进一步使硬件处理器执行以下操作:基于多个因素为每个活动存储块生成耐用性得分。将活动存储块分类到耐用组和非耐用组中可以包括将每个活动存储块的耐用性得分与耐用性阈值进行比较。
在一个实施例中,每个活动存储块的耐用性得分可以基于所述多个因素中的至少一些的历史变化来设置。
在一个实施例中,可以在非易失性存储设备的寿命期间调整耐用性阈值,其中耐用性阈值在使用的早期阶段较低并随着使用而增加。
在一个实施例中,当由硬件处理器执行时,计算机指令可进一步使硬件处理器执行以下操作:初始化垃圾回收操作;确定在垃圾回收操作期间擦除的块属于非耐用组;并且针对所述非耐用块执行坏块扫描。
任何公开的方法和操作可以被实现为存储在一个或多个计算机可读存储介质(例如,非暂时性计算机可读介质,例如,一个或更多个光盘介质,易失性存储组件(例如DRAM或SRAM),或非易失性存储组件(例如硬盘驱动器)上并在设备控制器(例如,ASIC执行的固件)上执行的计算机可执行指令(例如,本文描述的操作的软件代码)。可以将用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。
尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。

Claims (21)

1.一种方法,其特征在于,包括:
基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;
确定需要执行高速缓存编程操作;
从所述耐用组中选择第一存储块以执行所述高速缓存编程操作;
确定需要执行常规编程操作;和
从所述非耐用组中选择第二存储块以执行所述常规编程操作。
2.根据权利要求1所述的方法,其特征在于,确定需要执行所述高速缓存编程操作包括:从主机接收编程命令,以及确定需要通过所述高速缓存编程操作执行来自所述主机的所述编程命令。
3.根据权利要求1所述的方法,其特征在于,确定需要执行所述常规编程操作包括:初始化后端编程操作和确定需要由所述常规编程操作执行所述后端编程操作。
4.根据权利要求1所述的方法,其特征在于,还包括:基于所述多个因素为每个活动存储块生成耐用性得分,其中将所述活动存储块分类到所述耐用组和所述非耐用组包括将每个活动存储块的所述耐用性得分与耐用性阈值进行比较。
5.根据权利要求4所述的方法,其特征在于,每个活动存储块的耐用性得分是基于所述多个因素中的至少一些的历史变化来设置的。
6.根据权利要求4所述的方法,其特征在于,在所述非易失性存储设备的寿命期间调整所述耐用性阈值,其中所述耐用性阈值在使用的早期阶段为低并且随着使用而增加。
7.根据权利要求1所述的方法,其特征在于,进一步包括:
初始化垃圾回收操作;
确定在所述垃圾回收操作期间擦除的块属于所述非耐用组;和
对所述垃圾回收操作期间擦除的块执行坏块扫描。
8.一种非易失性存储系统,其特征在于,包括:
非易失性存储设备;和
处理器,被配置为:
基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将所述非易失性存储设备的活动存储块分类为耐用组和非耐用组;
确定需要执行高速缓存编程操作;
从所述耐用组中选择第一存储块以执行高速缓存编程操作;
确定需要执行常规编程操作;和
从所述非耐用组中选择第二存储块以执行常规编程操作。
9.根据权利要求9所述的非易失性存储系统,其特征在于,确定需要执行所述高速缓存编程操作包括:从主机接收编程命令,以及确定需要通过所述高速缓存编程操作执行来自所述主机的所述编程命令。
10.根据权利要求9所述的非易失性存储系统,其特征在于,确定需要执行所述常规编程操作包括:初始化后端编程操作和确定需要由所述常规编程操作执行所述后端编程操作。
11.根据权利要求9所述的非易失性存储系统,其特征在于,所述处理器还被配置为:基于所述多个因素为每个活动存储块生成耐用性得分,其中将所述活动存储块分类到所述耐用组和所述非耐用组,所述处理器还被配置为:将每个活动存储块的所述耐用性得分与耐用性阈值进行比较。
12.根据权利要求11所述的非易失性存储系统,其特征在于,每个活动存储块的耐用性得分是基于所述多个因素中的至少一些的历史变化来设置的。
13.根据权利要求11所述的非易失性存储系统,其特征在于,在所述非易失性存储设备的寿命期间调整所述耐用性阈值,其中所述耐用性阈值在使用的早期阶段为低并且随着使用而增加。
14.根据权利要求9所述的非易失性存储系统,其特征在于,所述处理器还被配置为:
初始化垃圾回收操作;
确定在所述垃圾回收操作期间擦除的块属于所述非耐用组;和
对所述垃圾回收操作期间擦除的块执行坏块扫描。
15.一种具有计算机指令的非暂时性机器可读介质,其特征在于,当所述计算机指令由硬件处理器执行时,使所述硬件处理器执行以下操作:
基于包括页错误计数、编程时间和编程/擦除(P/E)循环数的多个因素,将非易失性存储设备的活动存储块分类为耐用组和非耐用组;
确定需要执行高速缓存编程操作;
从所述耐用组中选择第一存储块以执行高速缓存编程操作;
确定需要执行常规编程操作;和
从所述非耐用组中选择第二存储块以执行常规编程操作。
16.根据权利要求15所述的非暂时性机器可读介质,其特征在于,确定需要执行所述高速缓存编程操作包括:从主机接收编程命令,以及确定需要通过所述高速缓存编程操作执行来自所述主机的所述编程命令。
17.根据权利要求15所述的非暂时性机器可读介质,其特征在于,确定需要执行所述常规编程操作包括:初始化后端编程操作和确定需要由所述常规编程操作执行所述后端编程操作。
18.根据权利要求15所述的非暂时性机器可读介质,其特征在于,当由硬件处理器执行时,所述计算机指令还使所述硬件处理器执行以下操作:基于所述多个因素为每个活动存储块生成耐用性得分,其中将所述活动存储块分类到所述耐用组和所述非耐用组包括将每个活动存储块的所述耐用性得分与耐用性阈值进行比较。
19.根据权利要求15所述的非暂时性机器可读介质,其特征在于,每个活动存储块的耐用性得分是基于所述多个因素中的至少一些的历史变化来设置的。
20.根据权利要求15所述的非暂时性机器可读介质,其特征在于,在所述非易失性存储设备的寿命期间调整所述耐用性阈值,其中所述耐用性阈值在使用的早期阶段为低并且随着使用而增加。
21.根据权利要求15所述的非暂时性机器可读介质,其特征在于,当所述计算机指令由硬件处理器执行时,还使所述硬件处理器执行以下操作:
初始化垃圾回收操作;
确定在所述垃圾回收操作期间擦除的块属于所述非耐用组;和
对所述垃圾回收操作期间擦除的块执行坏块扫描。
CN202111493176.1A 2021-01-13 2021-12-08 耐用性预知的nand闪存管理 Pending CN114121110A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/147,539 US11488678B2 (en) 2021-01-13 2021-01-13 Grouping flash storage blocks based on robustness for cache program operations and regular program operations
US17/147,539 2021-01-13

Publications (1)

Publication Number Publication Date
CN114121110A true CN114121110A (zh) 2022-03-01

Family

ID=80364211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111493176.1A Pending CN114121110A (zh) 2021-01-13 2021-12-08 耐用性预知的nand闪存管理

Country Status (2)

Country Link
US (2) US11488678B2 (zh)
CN (1) CN114121110A (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US20190324693A1 (en) * 2018-04-19 2019-10-24 SK Hynix Inc. Storage device and operating method thereof
US10489086B1 (en) * 2018-05-02 2019-11-26 International Business Machines Corporation Reducing read errors by performing mitigation reads to blocks of non-volatile memory
US11074177B2 (en) * 2019-06-19 2021-07-27 Micron Technology, Inc. Garbage collection adapted to host write activity
US11188461B2 (en) * 2019-06-19 2021-11-30 Micron Technology, Inc. Garbage collection adapted to memory device life expectancy
US10949126B2 (en) * 2019-07-25 2021-03-16 ScaleFlux, Inc. Solid-state storage device speed performance and endurance through host-side data classification and embedded write caching
KR20210017264A (ko) * 2019-08-07 2021-02-17 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP2021043678A (ja) * 2019-09-10 2021-03-18 キオクシア株式会社 メモリシステム及び方法
US11940887B2 (en) * 2020-12-04 2024-03-26 Innogrit Technologies Co., Ltd. Cache program with backup blocks

Also Published As

Publication number Publication date
US20220223216A1 (en) 2022-07-14
US11488678B2 (en) 2022-11-01
US20230005554A1 (en) 2023-01-05
US11837298B2 (en) 2023-12-05

Similar Documents

Publication Publication Date Title
JP2019168937A (ja) メモリシステム、制御方法及びコントローラ
TWI566252B (zh) 非揮發性記憶體裝置進行耗損管理之方法
WO2021011202A1 (en) Self-adaptive read voltage adjustment using boundary error statistics for memories with time-varying error rates
US10949119B2 (en) Data shaping to reduce error rates in solid state memory devices
US11862274B2 (en) Determination of state metrics of memory sub-systems following power events
US11704024B2 (en) Multi-level wear leveling for non-volatile memory
US10324648B1 (en) Wear-based access optimization
US20240202084A1 (en) Cache program with backup blocks
US11955194B2 (en) Tracking and refreshing state metrics in memory sub-systems
EP3841479A1 (en) Hybrid wear leveling for in-place data replacement media
WO2021011416A1 (en) Read voltage management based on write-to-read time difference
WO2023028347A1 (en) Monitoring memory device health according to data storage metrics
US11928356B2 (en) Source address memory managment
US11404141B2 (en) Preemptive read refresh in memories with time-varying error rates
CN114121110A (zh) 耐用性预知的nand闪存管理
US20180261298A1 (en) Memory system including a delegate page and method of identifying a status of a memory system
US20240211168A1 (en) Source address memory managment
US11183267B2 (en) Recovery management of retired super management units
US20240062835A1 (en) Adaptive integrity scan rates in a memory sub-system based on block health metrics
CN114661237A (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
CB02 Change of applicant information

Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5)

Applicant after: Yingren Technology Co.,Ltd.

Address before: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 201210

Applicant before: Yingren Technology (Shanghai) Co.,Ltd.

CB02 Change of applicant information