CN106681655B - 非易失性存储器中的选择性数据再循环 - Google Patents

非易失性存储器中的选择性数据再循环 Download PDF

Info

Publication number
CN106681655B
CN106681655B CN201610954790.6A CN201610954790A CN106681655B CN 106681655 B CN106681655 B CN 106681655B CN 201610954790 A CN201610954790 A CN 201610954790A CN 106681655 B CN106681655 B CN 106681655B
Authority
CN
China
Prior art keywords
block
sub
flash memory
threshold
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610954790.6A
Other languages
English (en)
Other versions
CN106681655A (zh
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN106681655A publication Critical patent/CN106681655A/zh
Application granted granted Critical
Publication of CN106681655B publication Critical patent/CN106681655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明的实施例涉及将N级单元的闪速存储块分类为子块的方法。N级单元可以存储N位数据。在一些实施例中,子块可以表示N级单元中的每个的一位。子块可在错误校正进程中被选择性地收回,诸如读取干扰收回和保留刷新。所描述的方法可以提供减小写入放大的优点。

Description

非易失性存储器中的选择性数据再循环
相关申请的交叉引用
本申请是非临时申请,要求于2015年11月6日提交的名称为“通过选择性数据再循环的写入放大减小(WRITE AMPLIFICATION REDUCTION VIA SELECTIVE DATA RECYCLING)”的申请号为62/252,140的美国临时申请的权益和优先权,其通过引用整体并入本文用于所有目的。
技术领域
本发明总体涉及用于存储装置的系统、方法和设备,且具体涉及改善性能的非易失性存储器装置。
背景技术
诸如固态驱动器(SSD)的非易失性存储器装置在消费性电子产品中有新的应用。例如,它们正在代替硬盘驱动器(HDD),其通常包括快速旋转圆盘(盘片)。有时被称为“闪速存储器”或“闪速存储器装置”(例如NAND和NOR闪速存储器装置)的非易失性存储器用于媒体存储器、摄像机、移动电话、移动计算机、笔记本计算机、USB闪速驱动器等中。非易失性存储器提供了电源关闭时存储数据的相对可靠的、紧凑的、划算的且易获取的方法。
在诸如NAND的闪速存储器中,用于来自主机端的一定量的逻辑数据的写入请求可导致多个一定量的数据被实际编程到闪速存储器中。常被称为“写入放大”的附加的编程可由诸如垃圾收集、干扰收回、保留错误收回和其它内部生成的数据的数个因素引起。
发明内容
本发明的实施例涉及可与闪速存储器装置结合使用的系统、方法和计算机可读指令。根据一些实施例,方法可以包括将第一存储块分类为至少第一子块和第二子块,该第一存储块包括多个N级单元。第一子块可以表示多个N级单元的每个的第一位,第二子块可以表示多个N级单元的每个的第二位。每个N级单元可以存储N位数据。在实施例中,N可以是大于或等于2的整数。
该方法还可以包括确定满足与第一子块相关的条件。基于满足与第一子块相关的条件的确定,可将与第一子块相关的数据复制到不同于第一存储块的第二存储块。
在一些实施例中,确定满足与第一子块相关的条件可以包括确定与第一子块相关的一个或多个错误;以及确定与第一子块相关的一个或多个错误超过阈值。在一些示例中,与第一子块相关的一个或多个错误可由读取干扰引起。在一些示例中,与第一子块相关的一个或多个错误可由数据保留的丢失引起。
在一些实施例中,确定满足与第一子块相关的条件可以包括确定对第一子块已经执行多个读取(a number of reads)。在一些实施例中,确定满足与第一子块相关的条件可以包括确定对第一子块已经执行多个编程-擦除循环。
在一些实施例中,该方法还可以包括存储与第一存储块相关的指示符,其中该指示符指示与第一存储块的第一子块相关的数据已被复制到不同的存储块。当完成(第一子块到不同的存储块的)复制时,第一存储块可被称为其第一子块被收回的块。
在一些实施例中,该方法还可以包括确定满足与第二子块相关的条件。基于满足与第二子块相关的条件的确定,可以将与第二子块相关的数据复制到第三存储块。
在一些实施例中,第二存储块可以与第三存储块相同。在其它实施例中,第二存储块可以与第三存储块不同。
在一些实施例中,第一存储块还可以包括第三子块,该第三子块表示多个N级单元的每个的第三位。在实施例中,N级单元的每个单元可以存储二位、三位、四位或更多位信息。虽然下面参照两级单元说明了几个概念,但必须注意在不丢失一般性的情况下它们可应用于存储两位或更多位信息的多级单元。
实施例还包括实施至少公开的方法的系统和计算机可读介质。以下提供这种系统和介质的示例。
附图说明
图1是示出根据实施例的包括主机、控制器和非易失性存储器的系统的框图;
图2是示出根据一些实施例的闪速存储器装置的简化框图;
图3是根据实施例的示例非易失性存储器管芯的组织的简化图;
图4是根据实施例的与两级存储器单元的四个状态对应的阈值电压分布的图;
图5是示出根据实施例的对于块的第一子块和第二子块的原始误码率相对于读取干扰计数的图;
图6是示出根据实施例的闪速存储器装置中的方法的流程图;
图7是示出根据实施例的闪速存储器装置中的另一方法的流程图;
图8是示出根据实施例的闪速存储器装置中的另一方法的流程图;
图9是示出根据实施例的闪速存储器装置中的另一方法的流程图;
图10是示出根据实施例的闪速存储器装置中的另一方法的流程图;以及
图11是包括实施例的计算机装置的简化图。
具体实施方式
下面提供了本公开的某些方面和实施例。如将对本领域技术人员显而易见的,这些方面和实施例的一些可以独立地应用并且它们中的一些可以组合应用。在下列描述中,为了说明的目的,阐述具体细节以便提供对实施例的透彻的理解。然而,将显而易见的是,在没有这些具体细节的情况下可以实施各个实施例。附图和描述不用于限制。
随后的描述提供了示例,但不用于限制本公开的范围、适用性或配置。相反,随后的示例性实施例的描述将为本领域技术人员提供实施示例性实施例的可行描述。应理解,在不背离随附权利要求所阐述的本发明的精神和范围的情况下可以对元件的功能和布置做出多种改变。
下列描述中给出了具体细节以提供对实施例的透彻理解。然而,本领域技术人员将理解的是,可以在没有这些具体细节的情况下实施实施例。例如,电路、系统、网络、进程和其它组件可以示为框图形式的组件,以避免用不必要的细节模糊实施例。在其它示例中,在没有不必要的细节的情况下,为了避免模糊实施例,可以示出已知的电路、进程、算法、结构和技术。
另外,注意到个别实施例可以被描述为被描绘为流程图、作业图、数据作业图、结构图或框图的进程。虽然流程图可以将操作描述为顺序进程,但是可以并行或同时执行许多操作。此外,可以重新布置操作的顺序。当完成进程的操作时终止该进程,但是进程可能包括附图中不包括的额外的步骤。进程可对应于方法、功能、步骤、子例程、辅程序等。当进程与功能对应时,其终止可以对应于将该功能返回至调用函数或主函数。
术语“计算机可读介质”包括但不限于便携式或非便携式的存储装置、光学存储装置和能够存储、包含或携带指令和/或数据的多种其它介质。计算机可读介质可以包括其中可以存储数据的非临时性介质,其不包括无线地或通过有线连接传播的载波和/或临时性电子信号。非临时性介质的示例可以包括但不限于磁盘或磁带、诸如光盘(CD)或数字通用光盘(DVD)的光学存储介质、闪速存储器、存储器或存储器装置。计算机可读介质可以具有存储于其上的代码和/或机器可执行指令,其可以表示步骤、功能、辅程序、程序、例程、子例程、模块、软件包、类别或指令、数据结构或程序语句的任何组合。可以通过传递和/或接收信息、数据、变量、参数或存储器内容将一个代码段联接到另一代码段或硬件电路。可以通过包括存储器共享、信息传递、令牌传递、网络传输等的任何适合的方式传递、转送或传输信息、变量、参数、数据等。
此外,可以通过硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合实施实施例。当以软件、固件、中间件或微码实现时,可以将执行必要任务(例如计算机编程产品)的程序代码或代码段存储在计算机可读或机器可读的介质中。处理器可以执行必要的任务。
下列详细描述与附图一起提供对本发明的本质和优势的更好的理解,其中相同的参考标号有时用于多幅附图中表示相似或相同的结构或结构元件。
本发明的实施例涉及用于将数据从闪速存储器中的一个位置复制和/或移动到另一位置的系统、方法和计算机可读指令。本公开中描述的方法、系统和计算机可读介质可用于例如NAND闪速存储器装置中。
本文公开的实施例不限于本文描述的具体实施例的范围。除了本文所述的那些之外,从前述描述和附图中,本发明的实施例的各种修改将对于本领域的普通技术人员而言是显而易见的。而且,虽然在用于特定目的的特定环境中的特定实施的背景下已经描述了本发明的一些实施例,但是本领域技术人员将认识到其有用性不限于此,本发明的实施例可以有利地在用于任何目的的任何环境中实施。
在闪速存储器装置中,来自主机的单个写入命令可以导致闪速存储器上的一组以上编程操作,该现象被称为“写入放大”。例如,当错误计数(由多个机制引起)超过阈值时,块中的数据可能必须收回到另一块中。这可导致额外的编程,其会最终影响闪速存储器装置的总体寿命。
在所公开的一些实施例中,可以通过将具有N(N≥2)位数据的N级单元中的数据部分地收回/再循环来减小写入放大。该方法可以有利地利用每个N级单元中的位之间或之中的电特性和其它特性的区别。在一些实施例中,通过将块逻辑地分为用于多种进程的子块,可以显著减小写入放大。
数个进程,诸如干扰收回和保留更新,可以涉及检查第一块的条件并基于是否满足条件将数据从第一块复制到不同的第二块。例如,当在循环或干扰时有可能发生信息丢失时,可以更新数据。在其中数据被存储为“0”和“1”的示例中,当保持0的位倾向于不能与保持1的位区别时,或者当保持1的位倾向于不能与保持0的位区别时,会发生信息丢失。这种现有数据的复制可有助于被称为“写入放大”的现象。
写入放大可被定义为写入闪速存储器的数据的实际量与从主机装置写入的数据的量的比值。基于NAND闪速存储器的固态硬盘(SSD)可能会遭受大的写入放大。写入放大通常大于1,一些情况下可以是5或更大。这意味着来自主机装置的一个简单的写入请求或操作可以导致对闪速存储器的多个写入操作。大的写入放大可以显著地增加延迟并缩短存储寿命。可以限制可被重写或循环的闪速存储器的次数。示例的闪速存储器可以经受一千或数百个编程-擦除循坏。
在其寿命期间可以写入到闪速存储器中的数据的总量可以与以下关联:1)闪速存储器可以允许的编程和擦除操作(P/E循环)的最大数量;2)闪速存储器的总容量;和3)平均写入放大。在闪速存储器寿命期间可以写入的数据的量因此与下式成正比:
P/E循环*磁盘容量/写入放大
如从该式显而易见的是,写入放大越大,可以从主机写入到闪速存储器装置的数据的总量越小。换言之,对于运行于主机上的给定工作量,写入放大越大,闪速存储器装置将越快用完其P/E循环预算并到达寿命终点。因此,减小写入放大可以是提高闪速存储器有效寿命的关键的解决方案。
图1描述了包括主机、闪速存储器控制器和闪速存储器的系统的一般高层结构。图2是示出根据一些实施例的闪速存储器装置的简化框图。图3描述了闪速存储器的结构的示例。图4和图5帮助说明用本发明的实施例的一些理论背景。图6-图10是示出根据一些实施例的方法的流程图。图11是包括实施例的计算机装置的简化图。
图1是示出根据实施例的包括主机110、闪速存储器控制器120和闪速存储器130的系统100的简化框图。在一些实施例中,闪速存储器130可以是NAND闪存。在其它实施例中,和NAND闪存一样,非易失性存储器130可以是被配置为外部交互的NOR闪速存储器。闪速存储器130可以被设计为在缺乏连续或基本上连续的外部电源的情况下存储数据。在一些示例中,闪速存储器130可以用于例如在诸如笔记本计算机的计算机系统中的辅助数据存储。在这样的示例中,闪速存储器装置140可以代替硬磁盘驱动器(HDD)。在一些示例中,闪速存储器控制器120可以在闪速存储器装置140的外部。在一些这样的示例中,闪速存储器控制器120可以与多个闪速存储器交互。在本说明书中稍后提供一个示例闪速存储器的体系结构和组织。在一些实施例中,可以使用其它非易失性存储器来代替闪速存储器130或者除了闪速存储器130之外还可以使用其它非易失性存储器。示例可以包括只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(F-RAM)、磁阻RAM(MRAM)、基于聚合物的有机存储器、全息存储器、相变存储器等。
主机110可以包括任何适当的硬件装置、软件应用或硬件和软件的组合。在一些实施例中,主机110可以包括主机端控制器(未示出)。在实施例中,控制器120可以接合在主机110和非易失性存储器130之间。控制器120可以被配置为接收来自主机110的各种命令并且基于这些命令与非易失性存储器130相互作用。控制器120可以使闪速存储器130能够基于从主机110接收的控制信号执行各种操作。在示例中,这可以使主机110能够编程、擦除、读取或修剪闪速存储器130的部分。
在一些实施例中,除了或代替内部易失性存储器,控制器120可以与外部易失性存储器接合。例如,控制器120可以访问外部DRAM,其中数据可以在被转移到非易失性存储器之前被存储在外部DRAM中。
图2是示出根据一些实施例的闪速存储器装置200的简化框图。如图2所示,闪速存储器装置200包括闪速存储器210。在一些实施例中,闪速存储器210可以是NAND闪速存储器,即基于NAND闪存结构的NAND闪速存储器。在一些实施例中,闪速存储器210可以包括多个N级单元,每个N级单元存储N位数据。诸如多级单元(包括两位和三位单元)的N级单元的示例在本说明书中稍后提供。通常,在实施例中,N可以是大于或等于2的任何整数。
闪速存储器210可以包括第一存储块220和第二存储块230。第一存储块220可以逻辑上划分为至少第一子块222和第二子块224。应注意第一子块222、第二子块224和其它子块(当存在时)是逻辑命名并且存在于同一物理第一存储块220中。在实施例中,第一子块222可以表示多个N级单元中的每一个的第一位,第二子块可以表示多个N级单元中的每一个的第二位。
如下面参照图4和图5所说明的,第一子块222和第二子块224可以具有彼此不同的电特性和其它特性。例如,它们可以在编程-擦除(P/E)循环下表现不同,并且还可以表现出不同的干扰特性(例如在读取或编程期间)。
闪速存储器装置200还可包括闪速存储器控制器250。在示例中,闪速存储器控制器250可包括控制器电路270、主机接口280和闪速存储器接口260。闪速存储器接口260可包括用于支持闪速存储器接口协议所必需的元件(例如,硬件、软件、固件或其任何组合)。
控制器电路270可以指任何处理逻辑,包括但不限于与处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或可配置为执行指令的任何其它电路相关的处理器或处理核。
如图2所示,闪速存储器装置200还可以包括易失性存储器240。在实施例中,易失性存储器240可以包括DRAM、双倍数据速率DRAM(DDR DRAM)、静态RAM(SRAM)和/或其它易失性存储器。一般来说,易失性存储器可以指在没有连续或基本上连续的电源的情况下丢失存储的数据的任何存储介质。
主机接口280可以用于与诸如图1的主机110的主机通信。主机接口280可以包括用于支持主机接口协议所必需的元件(例如,硬件、软件、固件或其任何组合)。
在一些实施例中,控制器电路270可以被配置为将第一存储块220分类为至少第一子块222和第二子块224。在示例中,第一子块222可以表示每个N级单元中N位的第一位,第二子块224可以表示每个N级单元中N位的第二位。在不旨在限制本公开的范围的特定示例中,控制器电路270可以被配置为将双位单元的块分类为“最低有效位(LSB)”和“最高有效位(MSB)”页面。
控制器电路270可进一步被配置为确定满足与第一子块222相关的条件,并且基于满足与第一子块222相关的条件的确定,将与第一子块222相关的数据复制到第二存储块230。
图3是根据实施例的示例闪速存储器130的组织的简化图。应注意,图3所示的结构仅用于说明目的,并且闪速存储器的实际物理组织可以与描述实质上不同。
在图3所示的示例中,闪速存储器管芯300包括两个平面310和310'。其它示例可以每个管芯包括不同数量的平面。多个这样的管芯可以包括在诸如闪速存储器130的闪速存储器中。平面310可以包括多个块,诸如块320。平面310'可以包括多个块,诸如块320'。块320可以进一步包括多个页面330。诸如页面330的页面可以共享公共字线并且可以表示最小可编程单元。页面也可以表示最小可读单位。块可以表示最小可擦除单元。
可以使用不同的沟道来组织诸如闪速存储器管芯300的管芯。每个沟道可以具有附接到其的多个管芯。例如,来自第一管芯的第一块、来自第二管芯的第一块、来自第三管芯的第一块等可以被分组在一起并且并行访问,从而形成超级块。属于相同超级块的页面可以例如被并行编程和读取。虽然超级块可以不单元物理地分组,但在逻辑上,超级块可以表现为块。本公开中描述的适合块的方法和系统在一些实施例中也可以适合超级块。
写入闪速存储器的总数据是从主机端请求编程的数据加上由SSD内部固件产生的附加数据的总和。由闪存控制器固件产生的附加数据可以至少包括:(1)由垃圾收集进程引起的附加数据编程,以将来自少数牺牲块的有效数据合并到新的空闲块,以释放更多空闲块用于将来编程;(2)由于读取干扰收回而由数据再循环引起的附加数据编程,其中将收回块中的有效数据复制到空闲块以消除累积的读取干扰错误;(3)由用于周期性数据刷新的数据再循环引起的附加数据编程,其目标是控制数据保留错误;以及(4)其它内部生成的数据。
NAND闪速存储器中的垃圾收集进程是导致写入放大增大的进程的示例。由于NAND闪速存储器装置的固有限制,可能需要在其可编程(或可重新编程)之前擦除闪存介质(例如,闪存块)。由于擦除操作的大的延迟,闪存控制器(即固件)可以保留已被擦除的空闲块的列表。当从主机发送新的写入命令时,闪存控制器可以对待被写入到已经被擦除的闪速存储器页面中的数据进行编程。这可以从关键路径(接收写入命令和数据被写入到闪速存储器中之间的时间)去除擦除操作,并且节省编程操作的延迟。当由于连续的主机数据写入导致空闲块的数量低于某一阈值时,可以触发垃圾收集程序。垃圾收集(GC)程序选择具有最少数量的有效数据的几个块,并将所选择的那些牺牲块的有效数据复制到空闲块。然后,垃圾收集可以擦除被选择来移动数据并将它们放在空闲块列表中的那些牺牲块。在GC程序期间,将有效数据从牺牲块移动到目标块可以引起附加的编程操作,并因此增大写入放大。
在读取干扰收回进程期间的再循环也可以引起写入放大。在读取干扰收回进程的示例中,当块中最差的字线(即,具有最多干扰位的字线)积累有可能导致下一读取干扰检查的潜在不可校正(通过ECC)的错误的足够错误时,可将块中的所有有效数据复制到新的空闲块。然后可以标记牺牲的干扰块用于擦除。有效数据从牺牲块到新的空闲块的这种移动导致附加的数据写入,并因此有助于附加的写入放大。
在保留刷新进程期间的再循环也可以导致写入放大。在保留刷新的示例中,当块中最差的字线积累有可能导致下一保留检查的潜在不可校正(通过ECC)的错误的足够的保留错误时,可将块中的所有有效数据复制到新的空闲块。可以标记牺牲块用于擦除。有效数据从牺牲块到新的空闲块的这种移动导致附加的数据写入,并因此有助于附加的写入放大。
总之,写入放大可以至少由以下引起:1)垃圾收集,2)读取干扰收回和3)保留刷新。如果可以减小由这些程序引起的任何附加数据的量,则可以减小写入放大,从而可以改善基于闪速存储器的数据存储的延迟和寿命。
读取干扰是指从闪存单元读取数据可导致同一块中的其它未读取单元的阈值电压移位较高的现象。读取干扰是由当将通过电压(Vpass)施加到不从其读取数据的字线时可能发生的弱编程引起。
在多级单元中,读取干扰可不同地影响多级单元的不同位。下面结合图4和图5参照双级单元说明差异背后的理论,但是该概念更广泛地应用于包括3个或更多个位的多级单元。此外,在多级单元中,对于多级单元的不同位,数据保留行为可以不同。
图4是通过曲线图400和对应表450表示的阈值电压根据两级单元中的状态变化的图示。如图4所示,2位闪存单元的阈值电压(Vth)范围通过由线410、420和430标记的三个参考电压划分为四个区域。如对应表450所示,单元的四种状态被标记为擦除(11)、P1(10)、P2(00)和P3(01)。值得注意的是,这样的标记仅仅是一个示例,并且状态可以根据不同的约定而被不同地标记。每种状态可以解码为存储在闪存单元中的2位值(例如,11、10、00或01)。该2位值中的两个位可以被称为指示左侧位的最低有效位(LSB)和指示右侧位的最高有效位(MSB)。芯片中所有闪存单元的阈值电压可以由线440标记的通过电压的上限限制。如图4所示,线420表示LSB参考电压,而线410和430表示MSB参考电压。
对于诸如图4所示的两位单元,块的LSB页面和MSB页面可以表现出不同的读取干扰特性。闪存单元中的电场强度与施加到浮置栅极的Vpass电压(线440)和特定闪存单元的阈值电压之间的差成线性比例。遂穿氧化物中的弱编程电流与电场强度呈指数相关。因此,在擦除“11”状态(最低阈值电压)的闪存单元上的读取干扰可以比任何其它编程状态大得多。在擦除状态和第一编程状态(线410)之间具有读取参考电压的页面类型可能遭受最大读取干扰错误。在图4所示的示例中,具有由线410标记的其读取参考电压之一的两位MLC闪速存储器的MSB页面遭受最多读取干扰错误。干扰的分布通过“11”分布中的虚线尾部指示。考虑到最受干扰的同一字线,MSB页面错误率可以比LSB页面的错误率高得多。
图5示出包括两级单元的闪速存储器的LSB页面和MSB页面的原始误码率/比率(BER)随读取干扰计数的变化。原始BER可以表示误码的数量除以校正(例如通过错误校正码,“ECC”)之前读取的位的总数。图5的闪速存储器已循环3000次。图5示出对于已经被重新编程3000次的闪速存储器,LSB页面和MSB页面的原始BER随着读取干扰计数增加的变化。假设闪速存储器中的ECC可以校正高达10-3的原始BER,从图5可以清楚地看出,MSB页面使ECC校正限制失效,并且可能需要在约10K读取之后收回。然而,LSB页面可以持续超过600K读取,而没有达到ECC的错误校正能力。换句话说,对于读取干扰,LSB页面数据的寿命比MSB页面的寿命长得多(>100倍)。
对于诸如图4所示的两位单元,块的LSB页面和MSB页面也可以表现出不同的P/E循环保留特性。在图4中,用参考线430读取的状态可以表现出最差的保留,因为保留错误可能主要由于两个最高状态P2和P3之间的分布别名(alias)而发生。保留的丢失导致在“01”分布中通过虚线尾部指示的分布。虽然根本的物理机制和理论可能不同,但是对于保留错误,MSB页面错误率也可以高于LSB页面错误率。
根据实施例,当MSB页面错误率显著高于LSB页面错误率时,对于MSB页面和LSB页面,可以分离块中的数据收回。更一般地,块可以被分类为至少第一子块和第二子块,每个子块在逻辑上表示多级单元中的不同位。在一些实施例中,子块可以表示块中的一种位的页面。有利地,更易于出错的子块(例如,遭受更多读取干扰或保留错误的子块)可以在不易出错的子块之前被收回到不同块。
如上所述通过子块分离收回可以出于至少以下两个原因减小写入放大:(1)不易出错的一些子块可以较不频繁地收回,从而减小数据复制进程的数量。在两级存储器单元的一些示例中,最低有效位可容许最高有效位可容许的读取干扰计数的60-100倍的读取干扰计数;和(2)不易出错的子块中的数据可能由于在块被部分收回的时间期间后续写入命令而变得无效。换句话说,不易出错的子块可以在第一部分收回的时间和整个块通过垃圾收集或第二部分收回被完全收回的时间之间通过至相同的逻辑地址的未来的写入(或修剪命令)被重写入。
应当注意,页面类型分类基于读取干扰错误,保留错误对于具有不同结构的闪速存储器可以不同。但是基于错误率将页面分类为多种类型并基于页面类型分类选择性地收回或刷新数据的构思可适用于包括读取干扰和保留错误的几个错误源。
图6是示出根据实施例的闪速存储器装置中的进程600的流程图。可以应用进程600的一个示例是在NAND闪速存储器中。虽然下面阐述了当通过图2的闪速存储器装置200执行时的进程600,但应注意,可以使用其它系统和设备来代替闪速存储器装置200执行本公开中描述的进程600和其它进程。
在步骤610中,进程600包括将包括多个N级单元的第一存储块分类为至少第一子块和第二子块。第一子块可以表示多个N级单元中的每一个的第一位,第二子块可以表示多个N级单元中的每一个的第二位。每个N级单元存储N位数据。在一些实施例中,N可以是2,并且该块可以包括双位单元。在一些实施例中,N可以是3。在其它实施例中,N可以是大于3的整数。
在一些实施例中,第一子块可以表现出与第二子块不同的编程-擦除(P/E)循环特性。在一些实施例中,第一子块可以表现出与第二子块不同的读取干扰特性。在N为2且闪速存储器单元包括最高有效位(MSB)和最低有效位(LSB)的一些实施例中,第一子块可以表示第一存储块的MSB页面,第二子块可以表示第一存储块的LSB页面。在N为3的一些实施例中,闪速存储器单元可以包括最高有效位(MSB)、中央有效位(CSB)和最低有效位(LSB)。在那些实施例中,第一存储块可以包括表示多级单元的第三位的第三子块。第一子块可以表示第一存储块的MSB页面,第二子块可以表示第一存储块的CSB页面,第三子块可以表示第一存储块的LSB页面。
在步骤620中,进程600包括确定满足与第一子块相关的条件。在一些实施例中,确定满足与第一子块相关的条件可以包括确定与第一子块相关的一个或多个错误,以及确定与第一子块相关的一个或多个错误超过阈值。在一些这样的实施例中,与第一子块相关的一个或多个错误可以由如上所述的读取干扰引起。在其它这样的实施例中,与第一子块相关的一个或多个错误可以由数据保留的丢失引起,例如,通过如上所述的P/E循环。在一些实施例中,对错误的读取可以基于已经最小化错误数的最佳读取参考电压。
在一些实施例中,确定满足与第一子块相关的条件可以包括确定与第一子块相关的多个读取。与第一子块相关的读取数量可以基于第一子块达到估计的错误数所花费的读取数量。可以基于闪速存储器控制器处的错误校正码(ECC)可以处理和/或修复的错误数来计算这种估计的错误数。在示例中,在第一子块具有需要将其收回的估计的错误之后的读取数量可以显著低于在第二子块具有需要将其收回的估计的错误之后的读取数量。
在一些实施例中,确定满足与第一子块相关的条件可以包括确定与第一子块相关的多个编程或P/E循环。与第一子块相关的循环数量可以基于第一子块达到估计的错误数所花费的循环数量。可以基于闪速存储器控制器处的错误校正码(ECC)可以处理和/或修复的错误数来计算这种估计的错误数。
在步骤630中,进程600包括基于满足与第一子块相关的条件的确定,将与第一子块相关的数据复制到与第一存储块不同的第二存储块。在实施例中,该复制可以是从第一存储块收回数据的收回进程的部分。这种收回进程可导致写入放大的增大。
在一些实施例中,在步骤640中,进程600可选地包括存储与第一存储块相关的指示符,其中该指示符指示与第一存储块的第一子块相关的数据已经被复制到不同的存储块。当(第一子块到不同存储块的)复制完成时,第一存储块可以被称为其第一子块“被收回”的块。在示例中,这可以通过与块相关的元页面中的指示符位实现。尽管在图6中未示出,但在一些块中,仍然可以周期性地检查部分收回的第一存储块,直到将来的刷新或直到垃圾收集或耗损均衡进程再循环第一存储块中的数据。
图7是示出根据实施例的闪速存储器装置中的进程700的流程图。其中可以应用进程700的一个示例是在NAND闪速存储器中。在步骤710中,进程700包括检查第一存储块是否是具有与被收回的第一子块相关的数据的块。这种检查可以各种方式执行。例如,闪存转换层(FTL)中的指示符位可以指示它是否是具有与被收回的第一子块相关的数据的块。在一些实施例中,关于是否已经收回子块的信息存储在闪速存储器中的元数据页面中。在一些示例中,指示符位可以存在于诸如与闪速存储器控制器联接的DRAM的易失性存储器中。在其它示例中,如果对应于第一子块的物理地址具有对应的有效逻辑地址,则可指示与第一子块相关的数据有效。在FTL被实现为主机系统中的软件的一部分的另一示例中,指示符位可以驻留在这种软件的操作系统中。
如果在步骤710中确定第一存储块的第一子块没有被收回,则在步骤720中,进程700包括确定第一存储块的第一子块中的一个或多个错误。这种确定可以基于例如对第一存储块中的位的阈值电压的估计。继续沿着分支,在步骤730中,进程700包括确定第一子块中的错误是否超过阈值。如果第一子块中的错误未超过阈值,则进程700可以结束。
如果第一子块中的错误超过阈值,则在步骤740处,进程700包括将与第一子块相关的数据复制到闪速存储器中的第二存储块。尽管在图7中未示出,但步骤740还可以包括更新映射表以指示逻辑地址到第二存储块中的地址的新映射。
在步骤750中,进程700包括指示第一存储块是其第一子块被收回的块。在一些实施例中,这可以使用FTL中的指示符位来完成。在一些实施例中,进程700可以在步骤750之后结束。在其它实施例中,进程700可以在步骤750之后继续步骤760。
返回到步骤710处的进程700,如果在步骤710中确定第一存储块是其第一子块被收回的块,则在步骤760处,进程700包括确定第一存储块的第二子块中的一个或多个错误。这种确定可以基于例如对第一存储块中的位的阈值电压的估计。继续沿着分支,在步骤770中,进程700包括确定第二子块中的错误是否超过阈值。如果第二子块中的错误未超过阈值,则进程700可以结束。
如果第二子块中的错误超过阈值,则在步骤780处,进程700包括将与第二子块相关的数据复制到闪速存储器中的第三存储块。在一些实施例中,第三存储块可以与第二存储块相同。尽管在图7中未示出,但步骤780还可以包括更新映射表以指示逻辑地址到第三存储块中的地址的新映射。
在步骤790中,进程700包括指示第一存储块是其第二子块被收回的块。在两级存储器单元中,这可以表示整个第一存储块已被收回的指示。
图8是示出根据实施例的用于三级存储器单元的闪速存储器装置中的进程800的流程图。进程800可以在包括多个3级单元的闪速存储器中操作。更一般地,本领域技术人员可以扩展进程800以应用于包括多个N级单元的闪速存储器,其中N大于或等于3。可以应用进程800的一个示例是在NAND闪速存储器中。
在步骤810中,进程800包括检查第一存储块是否是其第一子块被收回的块。这种检查可以多种方式执行。例如,闪存转换层(FTL)中的指示符位可以指示它是否是具有与被收回的第一子块相关的数据的块。在一些实施例中,关于子块是否已经收回的信息存储在闪速存储器中的元数据页面中。在一些示例中,指示符位可以存在于诸如与闪速存储器控制器联接的DRAM的易失性存储器中。在其它示例中,如果对应于第一子块的物理地址具有对应的有效逻辑地址,则可指示与第一子块相关的数据有效。
如果在步骤810中确定第一存储块的第一子块没有被收回,则在步骤820中,进程800包括确定第一存储块的第一子块中的一个或多个错误。这种确定可以基于例如对第一存储块中的位的阈值电压的估计。在一些实施例中,对错误的读取可以基于已经最小化错误数的最佳读取参考电压。继续沿着分支,在步骤830中,进程800包括确定第一子块中的错误是否超过阈值。如果第一子块中的错误未超过阈值,则进程800可以结束。
如果第一子块中的错误超过阈值,则在步骤840中,进程800包括将与第一子块相关的数据复制到闪速存储器中的第二存储块。尽管在图8中未示出,但步骤840还可以包括更新映射表以指示逻辑地址到第二存储块中的地址的新映射。
在步骤850中,进程800包括指示第一存储块是其第一子块被收回的块。在一些实施例中,这可以使用FTL中的指示符位来完成。在一些实施例中,进程800可以在步骤850后结束。在其它实施例中,进程800可以在步骤850之后继续步骤860。
返回到步骤810处的进程800,如果在步骤810中确定第一存储块是其第一子块被收回的块,则在步骤855中,进程800包括确定第一存储块是否是第二子块被收回的块。
如果在步骤855中确定第一存储块的第二子块没有被收回,则在步骤860中,进程800包括确定第一存储块的第二子块中的一个或多个错误。这种确定可以基于例如对第一存储块中的位的阈值电压的估计。继续沿着分支,在步骤870中,进程800包括确定第二子块中的错误是否超过阈值。如果第二子块中的错误未超过阈值,则进程800可以结束。
如果第二子块中的错误超过阈值,则在步骤880中,进程800包括将与第二子块相关的数据复制到闪速存储器中的第三存储块。尽管在图8中未示出,但步骤880还可以包括更新映射表以指示逻辑地址到第三存储块中的地址的新映射。在一些实施例中,第三存储块可以与第二存储块相同。
在步骤890中,进程800包括指示第一存储块是其第二子块被收回的块。在一些实施例中,这可以使用FTL中的指示符位来完成。在一些实施例中,进程800可以在步骤890后结束。在其它实施例中,进程800可以在步骤890之后继续步骤892。
返回到步骤855处的进程800,如果在步骤855中确定第一存储块是其第二子块被收回的块,则在步骤857中,进程800包括确定第一存储块是否是其第三子块被收回的块。
如果在步骤857中确定第一存储块的第三子块没有被收回,则在步骤892中,进程800包括确定第一存储块的第三子块中的一个或多个错误。这种确定可以基于例如对第一存储块中的位的阈值电压的估计。在步骤894中,进程800包括确定第三子块中的错误是否超过阈值。如果第三子块中的错误未超过阈值,则进程800可以结束。
如果第三子块中的错误超过阈值,则在步骤896中,进程800包括将与第三子块相关的数据复制到闪速存储器中的第四存储块。尽管在图8中未示出,但步骤896还可以包括更新映射表以指示逻辑地址到第四存储块中的地址的新映射。在一些实施例中,第四存储块可以与第二存储块和第三存储块相同。
在步骤898中,进程800包括指示第一存储块是所有子块被收回的块。
图9是示出根据实施例的闪速存储器装置中的进程900的流程图。可以应用进程900的一个示例是在包括2级单元的NAND闪速存储器中。在步骤910中,进程900包括检查所选块是否是“仅最低有效位(LSB)块”。这种检查可以多种方式执行。例如,闪存转换层(FTL)中的指示符位可以指示该块是否是仅LSB块。在一些实施例中,关于子块是否已经被收回的信息存储在闪速存储器中的元数据页面中。在一些示例中,指示符位可以存在于诸如与闪速存储器控制器联接的DRAM的易失性存储器中。在其它示例中,如果对应于最高有效位(MSB)页面的物理地址具有对应的有效逻辑地址,则可以指示所选块不是仅LSB块。
如果在步骤910中确定所选块不是仅LSB块(即,其包括有效的MSB页面),则在步骤920中,进程900包括检查最受干扰字线的MSB页面的错误。在这样的实施例中,最受干扰字线可以用作块中干扰量的指示。在其它实施例中,可以检查其它页面或字线。例如,可以检查对应于最高干扰的若干字线以解释进程变化。在一些实施例中,错误可由读取干扰引起。在一些实施例中,错误可由P/E循环引起。在一些实施例中,错误可以由多种干扰机制的组合引起。
继续沿着分支,在步骤930中,进程900包括确定最受干扰字线中的错误计数是否大于MSB页面的阈值错误计数。如果错误计数未超过阈值,则进程900可以结束。
如果最受干扰字线的错误计数超过阈值,则在步骤940中,进程900包括将所有有效MSB页面复制到闪速存储器中的另一空闲块。在步骤950中,进程900包括指示所选块是仅LSB块。在一些实施例中,进程900可以在步骤950后结束。在其它实施例中,进程900可以在步骤950之后继续步骤960。
返回到步骤910处的进程900,如果在步骤910中确定所选块是仅LSB块,则在步骤960中,进程900包括确定最受干扰字线的LSB页面的一个或多个错误。继续沿着分支,在步骤970中,进程900包括确定错误计数是否超过LSB页面的阈值。在一些实施例中,LSB页面和MSB页面的阈值错误计数可以基本上相同。如果最受干扰字线的LSB页面的错误计数未超过LSB页面的阈值,则进程900可以结束。
如果最受干扰字线的LSB页面的错误计数超过LSB页面的阈值,则在步骤980中,进程900包括将所有有效LSB页面复制到其它块。
图10是示出根据实施例的在用于3级存储器单元的闪速存储器装置中的所选块中操作的进程1000的流程图。基于它们的干扰特性,三级存储器单元中的三个位可以被分类为对最大干扰敏感的位、对中等干扰敏感的位和对最小干扰敏感的位。因此,所选块可以被划分为三种类型的页面:“最差干扰页面”,包括易受最大干扰的三级单元的每个位;“中等干扰页面”,包括易受中等干扰的三级单元的每个位;以及“最小干扰页面”,包括易受最小干扰的三级单元的每个位。
在步骤1010中,进程1000包括检查所选块是否所有最差干扰页面被收回。这种检查可以多种方式执行。例如,闪存转换层(FTL)中的指示符位可以指示所选块是否是所有最差干扰页面被收回的块。在一些实施例中,关于子块是否已经收回的信息存储在闪速存储器中的元数据页面中。
如果在步骤1010中确定所选块的最差干扰页面没有被收回,则在步骤1020中,进程1000包括确定最受干扰字线的最差干扰页面的一个或多个错误。继续沿着分支,在步骤1030中,进程1000包括确定最受干扰字线中的错误计数是否大于最差干扰页面的阈值错误计数。如果错误计数未超过阈值,则进程1000可以结束。
如果最受干扰字线的错误计数超过阈值,则在步骤1040中,进程1000包括将所有有效的最差干扰页面复制到闪速存储器中的另一空闲块。在步骤1050中,进程1000包括指示所选块是所有最差干扰页面被收回的块。在一些实施例中,进程1000可以在步骤1050后结束。在其它实施例中,进程1000可以在步骤1050之后继续步骤1060。
返回到步骤1010处的进程1000,如果在步骤1010中确定所选块被收回所有最差干扰页面,则在步骤1055中,进程1000包括确定是否收回了所有中等干扰页面。
如果在步骤1055中确定所选块的所有中等干扰页面没有被收回,则在步骤1060中,进程1000包括确定最受干扰字线的中等干扰页面的一个或多个错误。继续沿着分支,在步骤1070中,进程1000包括确定错误计数是否超过中等干扰页面的阈值。如果最受干扰字线的中等干扰页面的错误计数未超过中等干扰页面的阈值,则进程1000可以结束。
如果最受干扰字线的中等干扰页面的错误计数超过阈值,则在步骤1080中,进程1000包括将所有有效的中等干扰页面复制到闪速存储器中的其它块。在步骤1090中,进程1000包括指示所选块是所有中等干扰页面被收回的块。在一些实施例中,进程1000可以在步骤1090后结束。在其它实施例中,进程1000可以在步骤1090之后继续步骤1092。
返回到步骤1055处的进程1000,如果在步骤1055中确定所选块是所有中等干扰页面被收回的块,则在步骤1057中,进程1000包括确定所选块是否是所有最小干扰页面被收回的块。
如果在步骤1057中确定所选存储块的所有最少干扰页面没有被收回,则在步骤1092中,进程1000包括确定最受干扰字线的最小干扰页面的一个或多个错误。在步骤1094中,进程1000包括确定最受干扰字线的最小干扰页面的错误计数是否超过最小干扰页面的阈值错误计数。如果最受干扰字线的最小干扰页面的错误未超过最小干扰页面的阈值,则进程1000可以结束。
如果最受干扰字线的最小干扰页面的错误超过最小干扰页面的阈值,则在步骤1096中,进程1000包括将所有有效的最小干扰页面复制到闪速存储器中的其它块。
在步骤1098中,进程1000包括擦除所选块并将其添加到空闲块列表。
虽然上面分别从两级和三级单元的读取干扰的角度描述了进程900和1000,但是在没有失去一般性的情况下,流程可以适用于其它错误机制。例如,基于它们的保留特性,三级存储器单元中的三个位可以被分类为对最大保留丢失敏感的位、对中等保留丢失敏感的位以及对最小保留丢失敏感的位。因此,所选块可以被划分为三种类型的页面:包括对最大保留丢失敏感的三级单元的每个位的“最差保留页面”,包括对中等保留丢失敏感的三级单元的每个位的“中等保留页面”,以及包括对最小保留丢失敏感的三级单元的每个位的“最小保留页面”。在示例中,包含在最高两个编程(例如P6和P7)状态之间的读取参考电压的页面类型可以是最差保留页面。类似地,在进程900中,2位MLC页面的LSB和MSB页面可以被分类为最差保留页面和最小保留页面。在一些实施例中,LSB页面可以是最小保留页面,MSB页面可以是最差保留页面。用于保留丢失收回的3位和2位的流程可以类似于读取干扰收回的流程。
在一些实施例中,可以修改垃圾收集(GC)进程以更好地适应说明书中描述的方法、过程和系统。当块被部分再循环时,例如当存储块的第一子块已经被收回而第二子块没有被收回时,存储块中仅一半或少于一半的数据是有效的。如果GC程序没有考虑到这一点,则GC程序可以在其一半数据被复制之后不久再循环该部分块,导致低效率。为了避免这种情况,GC程序可以维持所用块的两个池:一个用于正常块,另一个用于部分再循环块,其由于读取干扰收回或保留丢失而被循环。
在示例中,这种GC程序在正常池中搜索块,并找到具有最小(或接近最小)有效数据的块。如果正常池中的有效数据大于正常块的某个阈值,则GC程序可以转向部分再循环池,以找到具有最小(或接近最小)有效数据的部分再循环块。然后,GC进程可以再循环部分再循环块。另外,GC进程可以再循环正常池中的块。
本公开中描述的方法和系统呈现出许多特征和优点。在一个实施例中,利用2位MLC闪存的LSB/MSB和3位TLC闪速存储器的LSB/CSB/MSB的读取干扰的错误率变化。在一些实施例中,执行部分数据块再循环,由此仅复制/移动经历读取干扰的最差页面类型,从而使MLC和TLC的数据复制分别减小50%和67%。这可以显著减小有效的写入放大。在另一实施例中,利用2位MLC闪存的LSB/MSB和3位TLC闪速存储器的LSB/CSB/MSB的保留的错误率变化。执行部分数据块再循环,由此仅复制/移动经历保留的最差页面类型,以使MLC和TLC的数据复制分别减小50%和67%。这也可以显著降低有效的写入放大。在其它实施例中,设计了在垃圾收集策略下处理部分再循环块的机制。因此,使用本文所述的方法,可以减小写入放大,并且可以提高基于闪存的SSD的有效寿命。
图11示出了包括本发明的实施例的示例性计算装置1100。装置1100的硬件元件可以经由总线电联接(或者可以视情况以其它方式通信)。如图11所示,计算装置1100包括处理单元1004、闪速存储器装置1002、输入/输出(I/O)系统1110、网络电路1112和多媒体电路1114。在所述的示例中,处理单元1104可以用作主机系统。
在示例中,闪速存储器装置1102可以是NAND闪速存储器装置,例如图4的闪速存储器装置,并且可以用于存储由处理单元1104访问的二手数据。闪速存储器装置1102可以包括根据上述实施例的闪速存储器控制器(未示出),用作非易失性存储器装置1102和处理单元1104之间的接口。系统存储器1106可以是诸如随机存取存储器(RAM)的易失性存储器,并且可以与处理器1108结合操作。处理器1108可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(诸如数字信号处理芯片、图形加速处理器和/或类似物)。
计算装置1100可以进一步包括将计算装置1100连接到网络的网络电路1112。网络电路可以包括但不限于调制解调器、网卡(无线或有线)、红外通信装置、无线通信装置和/或芯片组(诸如BluetoothTM装置、1602.11装置、WiFi装置、WiMax装置、蜂窝通信设施等)和/或类似物。网络电路1112可以允许与网络、其它装置和/或本文描述的任何其它装置交换数据。
如图11所示,计算装置1100可以包括多媒体电路1114。多媒体电路1114可以将计算装置1100连接到几个外部音频和视频输入和输出,诸如显示器和扬声器。I/O系统1110可以将计算装置1100连接到诸如键盘、鼠标、触摸屏、相机、红外线捕获装置等的各种输入装置和机构,以及诸如打印机、显示单元、触觉反馈装置和/或类似物的输出装置和机构。
计算装置1100还可以包括位于系统存储器1106或闪速存储器1102中的软件元件,包括装置驱动器、可执行库和/或其它代码,诸如一个或多个应用程序,其可以包括通过多个实施例提供的计算机程序,和/或可被设计为实现如本文所描述的由其它实施例提供的方法和/或配置如本文所描述的由其它实施例提供的系统。仅作为示例,就上面讨论的方法描述的一个或多个程序可以实现为由计算机(和/或计算机内的处理器)可执行的代码和/或指令;在一方面,然后,这样的代码和/或指令可以用于配置和/或适配通用计算机(或其它装置,诸如图2的闪速存储器控制器250),以根据描述的方法例如图6-图10所示的任何方法执行一个或多个操作。
这些指令和/或代码的集合可以存储在计算机可读存储介质上,诸如存储在闪速存储器装置1102内,或者在示例中,存储在闪速存储器装置1102中的闪速存储器控制器内。在一些情况下,存储介质可以包含在诸如装置1100或闪速存储器装置1102的装置内。在其它实施例中,存储介质可以与装置(例如,诸如光盘的可移动介质)分离,和/或以安装包提供,使得存储介质可用于利用存储在其上的指令/代码来编程、配置和/或适配通用计算机。这些指令可以采用可由装置执行的可执行代码的形式,和/或可以采用源和/或可安装代码的形式,其一旦(例如,使用多种通常可用编译器、安装程序、,压缩/解压缩实用程序等)编译和/或安装在装置上即采用可执行代码的形式。
可以根据具体要求进行实质性改变。例如,还可以使用定制的硬件,和/或特定元件可以硬件、软件(包括便携式软件,例如小应用程序等)或两者实现。此外,可以采用到诸如网络输入/输出装置的其它计算装置的连接。
如本文所用的术语“机器可读介质”和“计算机可读介质”是指参与提供使机器以特定方式操作的数据的任何介质。虽然本文已经详细描述了本申请的说明性实施例,但应当理解,本发明构思可以其它各种方式实现和采用,并且所附权利要求旨在被解释为包括这样的变型,除了如现有技术所限制的。

Claims (19)

1.一种闪速存储器装置,其包括:
闪速存储器,其包括:
第一存储块,其包括多个N级单元,每个N级单元存储N位数据;
电路,其包括联接到所述闪速存储器的处理逻辑,并且被配置为:
将所述第一存储块分类为至少第一子块和第二子块,所述第一子块表示所述多个N级单元中的每一个的第一位,所述第二子块表示所述多个N级单元中的每一个的第二位;
当确定所述第一子块未被回收时,基于第一阈值确定满足与所述第一子块相关的条件;
基于满足与所述第一子块相关的条件的确定,将与所述第一子块相关的数据复制到与所述第一存储块不同的第二存储块;
当确定所述第一子块已被回收时,基于第二阈值确定满足与所述第二子块相关的条件;
基于满足与所述第二子块相关的条件的确定,将与所述第二子块相关的数据复制到第三存储块,
其中所述第一阈值与所述第一子块中的错误相关,并且所述第二阈值与所述第二子块中的错误相关。
2.根据权利要求1所述的闪速存储器装置,其中确定满足与所述第一子块相关的条件包括:
确定与所述第一子块相关的一个或多个错误;
确定与所述第一子块相关的一个或多个错误超过所述第一阈值。
3.根据权利要求1所述的闪速存储器装置,其中确定满足与所述第一子块相关的条件包括:
确定与所述第一子块相关的多个读取。
4.根据权利要求1所述的闪速存储器装置,其中所述电路进一步被配置为:
存储与所述第一存储块相关的指示符,其中所述指示符指示与所述第一存储块的第一子块相关的数据已被复制到不同的存储块。
5.根据权利要求1所述的闪速存储器装置,其中所述第二存储块与所述第三存储块相同。
6.根据权利要求1所述的闪速存储器装置,其中所述第二存储块不同于所述第三存储块。
7.根据权利要求1所述的闪速存储器装置,其中所述第一存储块进一步包括第三子块,所述第三子块表示所述多个N级单元中的每一个的第三位。
8.根据权利要求2所述的闪速存储器装置,其中与所述第一子块相关的一个或多个错误由读取干扰引起。
9.根据权利要求2所述的闪速存储器装置,其中与所述第一子块相关的一个或多个错误由数据保留的丢失引起。
10.一种操作闪速存储器装置的方法,其包括:
将包括多个N级单元的第一存储块分类为至少第一子块和第二子块,所述第一子块表示所述多个N级单元中的每一个的第一位,所述第二子块表示所述多个N级单元中的每一个的第二位,每个N级单元存储N位数据;
当确定所述第一子块未被回收时,基于第一阈值确定满足与所述第一子块相关的条件;
基于满足与所述第一子块相关的条件的确定,将与所述第一子块相关的数据复制到与所述第一存储块不同的第二存储块;
当确定所述第一子块已被回收时,基于第二阈值确定满足与所述第二子块相关的条件;
基于满足与所述第二子块相关的条件的确定,将与所述第二子块相关的数据复制到第三存储块,
其中所述第一阈值与所述第一子块中的错误相关,并且所述第二阈值与所述第二子块中的错误相关。
11.根据权利要求10所述的方法,其中确定满足与所述第一子块相关的条件包括:
确定与所述第一子块相关的一个或多个错误;以及
确定与所述第一子块相关的一个或多个错误超过阈值。
12.根据权利要求10所述的方法,其中确定满足与所述第一子块相关的条件包括:
确定与所述第一子块相关的多个读取。
13.根据权利要求10所述的方法,其进一步包括:
存储与所述第一存储块相关的指示符,其中所述指示符指示与所述第一存储块的第一子块相关的数据已被复制到不同的存储块。
14.根据权利要求10所述的方法,其中所述第二存储块与所述第三存储块相同。
15.根据权利要求10所述的方法,其中所述第二存储块不同于所述第三存储块。
16.根据权利要求10所述的方法,其中所述第一存储块进一步包括第三子块,所述第三子块表示所述多个N级单元中的每一个的第三位。
17.根据权利要求11所述的方法,其中与所述第一子块相关的一个或多个错误由读取干扰引起。
18.根据权利要求11所述的方法,其中与所述第一子块相关的一个或多个错误由数据保留的丢失引起。
19.一种非临时计算机可读介质,其上存储有指令,当由处理器执行时,所述指令执行方法,所述方法包括:
将包括多个N级单元的第一存储块分类为至少第一子块和第二子块,所述第一子块表示所述多个N级单元中的每一个的第一位,所述第二子块表示所述多个N级单元中的每一个的第二位,每个N级单元存储N位数据;
当确定所述第一子块未被回收时,基于第一阈值确定满足与所述第一子块相关的条件;
基于满足与所述第一子块相关的条件的确定,将与所述第一子块相关的数据复制到与所述第一存储块不同的第二存储块;
当确定所述第一子块已被回收时,基于第二阈值确定满足与所述第二子块相关的条件;
基于满足与所述第二子块相关的条件的确定,将与所述第二子块相关的数据复制到第三存储块;
其中所述第一阈值与所述第一子块中的错误相关,并且所述第二阈值与所述第二子块中的错误相关。
CN201610954790.6A 2015-11-06 2016-11-03 非易失性存储器中的选择性数据再循环 Active CN106681655B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562252140P 2015-11-06 2015-11-06
US62/252,140 2015-11-06
US15/148,731 US10002073B2 (en) 2015-11-06 2016-05-06 Selective data recycling in non-volatile memory
US15/148,731 2016-05-06

Publications (2)

Publication Number Publication Date
CN106681655A CN106681655A (zh) 2017-05-17
CN106681655B true CN106681655B (zh) 2020-08-07

Family

ID=58667690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610954790.6A Active CN106681655B (zh) 2015-11-06 2016-11-03 非易失性存储器中的选择性数据再循环

Country Status (2)

Country Link
US (1) US10002073B2 (zh)
CN (1) CN106681655B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540274B2 (en) * 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10290353B2 (en) * 2016-09-06 2019-05-14 Western Digital Technologies, Inc. Error mitigation for 3D NAND flash memory
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
US10445195B2 (en) 2017-08-07 2019-10-15 Micron Technology, Inc. Performing data restore operations in memory
US11294580B2 (en) 2017-12-22 2022-04-05 Samsung Electronics Co., Ltd. Nonvolatile memory device
KR102469539B1 (ko) * 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치
KR102369391B1 (ko) * 2017-12-27 2022-03-02 삼성전자주식회사 비휘발성 메모리 장치의 데이터 소거 방법 및 이를 수행하는 비휘발성 메모리 장치
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
US10564886B2 (en) 2018-02-20 2020-02-18 Western Digital Technologies, Inc. Methods and apparatus for controlling flash translation layer recycle from host
JP2019168937A (ja) * 2018-03-23 2019-10-03 東芝メモリ株式会社 メモリシステム、制御方法及びコントローラ
US11048597B2 (en) 2018-05-14 2021-06-29 Micron Technology, Inc. Memory die remapping
US10839922B2 (en) * 2018-05-26 2020-11-17 Sandisk Technologies Llc Memory disturb detection
TWI668570B (zh) * 2018-08-09 2019-08-11 群聯電子股份有限公司 資料整併方法、記憶體儲存裝置及記憶體控制電路單元
KR20200123683A (ko) * 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 데이터를 저장할 수 있는 복수의 영역을 포함하는 메모리 시스템 및 메모리 시스템의 동작방법
CN110308876B (zh) * 2019-07-01 2024-05-17 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
JP2021043908A (ja) * 2019-09-13 2021-03-18 キオクシア株式会社 メモリシステムおよび制御方法
US10832790B1 (en) 2019-09-26 2020-11-10 Western Digital Technologies, Inc. Performance of non data word line maintenance in sub block mode
KR20210076505A (ko) * 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
TWI729674B (zh) * 2020-01-13 2021-06-01 慧榮科技股份有限公司 資料儲存裝置及其垃圾蒐集方法
US11287989B2 (en) 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US20220043588A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Localized memory traffic control for high-speed memory devices
TWI775143B (zh) * 2020-09-09 2022-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US11942174B2 (en) * 2021-02-09 2024-03-26 Micron Technology, Inc. Topology-based retirement in a memory system
US11528039B2 (en) * 2021-03-17 2022-12-13 Innogrit Technologies Co., Ltd. Error recovery using adaptive LLR lookup table
US11579797B2 (en) * 2021-04-29 2023-02-14 Micron Technology, Inc. Memory sub-system refresh
US20230070300A1 (en) * 2021-09-03 2023-03-09 Micron Technology, Inc. Embedded memory lifetime testing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409107A (zh) * 2007-10-08 2009-04-15 三星电子株式会社 对非易失性存储单元编程的方法
CN105009091A (zh) * 2012-12-26 2015-10-28 西部数据技术公司 用于数据存储系统的动态预留空间

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7333364B2 (en) * 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US9478315B2 (en) 2014-06-03 2016-10-25 Sandisk Technologies Llc Bit error rate mapping in a memory system
US9652381B2 (en) * 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9852799B2 (en) * 2014-11-19 2017-12-26 Sandisk Technologies Llc Configuration parameter management for non-volatile data storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409107A (zh) * 2007-10-08 2009-04-15 三星电子株式会社 对非易失性存储单元编程的方法
CN105009091A (zh) * 2012-12-26 2015-10-28 西部数据技术公司 用于数据存储系统的动态预留空间

Also Published As

Publication number Publication date
US20170132125A1 (en) 2017-05-11
CN106681655A (zh) 2017-05-17
US10002073B2 (en) 2018-06-19

Similar Documents

Publication Publication Date Title
CN106681655B (zh) 非易失性存储器中的选择性数据再循环
US10031698B2 (en) Method of wear leveling for data storage device
US9448868B2 (en) Data storing method, memory control circuit unit and memory storage apparatus
US9880770B2 (en) Supporting invalidation commands for non-volatile memory
US9798656B2 (en) Memory controller, method of operating, and apparatus including same
US10096357B2 (en) Data storage device and data writing method thereof
TWI505088B (zh) 基於寫入頻率將資料寫至記憶體不同部份之方法、非暫態電腦可讀媒體與裝置
US9627085B2 (en) Refresh method for flash memory and related memory controller thereof
US9927985B2 (en) Method of dynamic table journaling
US20160139812A1 (en) Hot-cold data separation method in flash translation layer
JP2008181380A (ja) メモリシステムおよびその制御方法
US20190095100A1 (en) Block Clearing Method
US10452280B2 (en) Hybrid storage system employing reconfigurable memory
US20230097187A1 (en) Hybrid wear leveling for in-place data replacement media
US10283196B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US20130024608A1 (en) Flash memory apparatus
CN112740189B (zh) 非易失性存储器的多级损耗均衡
US11720286B2 (en) Extended cross-temperature handling in a memory sub-system
US20170285953A1 (en) Data Storage Device and Data Maintenance Method thereof
TW201339958A (zh) 記憶體控制器、記憶體儲存裝置與資料寫入方法
KR20200116375A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10977144B2 (en) Memory system and method of operating the same
US9830077B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US20200005870A1 (en) Memory start voltage management
KR101604949B1 (ko) 메모리 제어 방법 및 메모리 제어 장치

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
GR01 Patent grant
GR01 Patent grant