CN109117084A - 将逻辑储存块动态地重新调整尺寸 - Google Patents

将逻辑储存块动态地重新调整尺寸 Download PDF

Info

Publication number
CN109117084A
CN109117084A CN201810228384.0A CN201810228384A CN109117084A CN 109117084 A CN109117084 A CN 109117084A CN 201810228384 A CN201810228384 A CN 201810228384A CN 109117084 A CN109117084 A CN 109117084A
Authority
CN
China
Prior art keywords
block
erasing
storage
logical
erasing 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.)
Granted
Application number
CN201810228384.0A
Other languages
English (en)
Other versions
CN109117084B (zh
Inventor
A.班尼特
S.戈罗贝茨
L.帕克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN109117084A publication Critical patent/CN109117084A/zh
Application granted granted Critical
Publication of CN109117084B publication Critical patent/CN109117084B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

公开了对逻辑储存块动态地重新调整尺寸的设备、系统、方法以及计算机程序产品。非易失性储存器装置的控制器包含块组件,其确定非易失性储存器装置的可用擦除块的总数目。非易失性储存器装置的控制器包含尺寸模块,其确定作为可用擦除块的总数目的函数的多个逻辑块中的每一个中要包含的来自可用擦除块的擦除块的数目,使得逻辑块中的每一个的擦除块的数目彼此偏差小于预定偏差限制。非易失性储存器装置的控制器包含映射模块,其通过将确定的数目的擦除块分配到逻辑块中的每一个而产生非易失性储存器装置的逻辑块。

Description

将逻辑储存块动态地重新调整尺寸
技术领域
在各种实施例中,本公开涉及一种储存器装置,并且更特别地涉及对逻辑储存块动态地重新调整尺寸。
背景技术
储存器装置的擦除块可以逻辑上分组在一起以形成逻辑储存块。每个逻辑储存块中包含的擦除块的数目可以基于储存器装置中由于制造缺陷而存在的坏的块的数目而变化,并且可以随着擦除块变得不可使用而随时间调整,其可以使逻辑储存块的尺寸改变。
发明内容
呈现了设备以将逻辑储存块动态地重新调整尺寸。在一个实施例中,设备包含非易失性储存器装置的控制器。在一个实施例中,非易失性储存器装置的控制器包含块组件,其确定非易失性储存器装置的可用擦除块的总数目。在其它实施例中,非易失性储存器装置的控制器包含尺寸模块,其确定作为可用擦除块的总数目的函数的要包含在多个逻辑块中的每一个中的来自可用擦除块的擦除块的数目,使得擦除块的数目对于逻辑块中的每一个彼此偏差小于预定偏差限制。在某些实施例中,非易失性储存器装置的控制器包含映射模块,其通过将确定的数目的擦除块分配到逻辑块中的每一个来为非易失性储存器装置产生逻辑块。
在另一实施例中,一种设备包含用于识别非易失性记录介质的要分配到多个虚拟块的擦除块池的构件。在一些实施例中,多个虚拟块中的每一个包含多个擦除块,多个擦除块逻辑地组合以形成非易失性记录介质的单个储存单元。在一个实施例中,设备包含用于为多个虚拟块中的每一个计算尺寸的构件,其中尺寸限定要分配到多个虚拟块中的每一个的擦除块的数目。在一个实施例中,设备包含用于将擦除块从擦除块池分配到虚拟块的构件,使得在每个虚拟块之间的尺寸上的变化小于百分之二十五。
呈现了系统以将逻辑储存块动态地重新调整尺寸。在一个实施例中,系统包含非易失性存储器装置,其包含多个擦除块。在某些实施例中,非易失性存储器装置的控制器配置为进行操作以确定多个擦除块中的多少个可用于创建超级块。在一些实施例中,超级块是非易失性存储器装置的储存单元,其由多个擦除块的组合构成。在一个实施例中,非易失性存储器装置的控制器配置为进行操作以产生可使用擦除块到超级块的映射,使得映射到超级块中的每一个的可使用擦除块的数目以小于阈值尺寸变化。在一个实施例中,非易失性存储器装置的控制器配置为在确保映射到超级块中的每一个的可使用擦除块的数目变化小于阈值尺寸的时,进行操作以周期性地修改可使用擦除块到超级块的映射。
附图说明
以下参考附图中图示的具体实施例包含了更特定的描述。应理解,这些附图仅绘示了本公开的某些实施例,并且因此不认为限制其范围,通过使用附图以附加的特异性和细节描述了本公开,附图中:
图1是图示包括储存器管理模块的系统的一个示例的示意性框图;
图2是图示存储器元件的一个示例的示意性框图;
图3是图示存储器元件的另一实施例的示意性框图;
图4是图示储存器管理模块的一个示例的示意性框图;
图5是图示储存器管理模块的另一实施例的示意性框图;
图6是图示将逻辑储存块动态地重新调整尺寸的方法的一个示例的示意性流程图;
图7是图示将逻辑储存块动态地重新调整尺寸的方法的其它实施例的示意性流程图;
图8A是图示将逻辑储存块动态地重新调整尺寸的方法的另一实施例的示意性流程图;以及
图8B是图示将逻辑储存块动态地重新调整尺寸的方法的其它实施例的示意性流程图。
具体实现方式
本公开的方面可以实现为设备、系统、方法,或计算机程序产品。相应地,本公开的方面可以采取完全硬件实施例、完全软件实施例(包含固件、常驻软件、微代码等)或组合软件和硬件方面的实施例的形式,其可以全部在本文中总体上称为“电路”、“模块”、“设备”或“系统”。此外,本公开的方面可应采取实现为储存计算机可读和/或可执行程序代码的一个或多个非暂时性计算机可读储存介质的计算机程序产品的形式。
本说明书中所描述的许多功能性单元已经标记为模块,以便更特定地强调它们的实现方式独立性。例如,模块可以实现为包括定制VLSI电路或门阵列的硬件电路、诸如逻辑芯片、晶体管或其它分立式组件的现成半导体。模块还可以实现为诸如现场可编程门阵列、可编程阵列逻辑,可编程逻辑装置等的可编程硬件装置。
模块还可以至少部分地实现为由各种类型的处理器执行的软件。作为示例,可执行代码的识别的模块可以包括计算机指令的一个或多个物理或逻辑块,其可以例如组织为对象、过程或功能。然而,识别的模块的可执行体不需物理地位于一起,而可以包括不同位置中储存的不同的指令,当其逻辑上被连结在一起时,包括模块并实现模块的所述目的。
实际上,可执行代码的模块可以包含单个指令或许多指令,并且甚至可以分散在若干不同的代码段上、在不同的程序之间、跨过若干存储器装置等。在模块或模块的部分实现为软件的情况下,软件部分可以储存在一个或多个计算机可读和/或可执行储存介质上。可以采用一个或多个计算机可读储存介质的任意组合。计算机可读储存介质例如可以包含但不限于,电子的、磁性的、光学的、电磁的、红外的或半导体的系统、设备或装置,或前述的任意适当组合,但不包含传播的信号。在此文档的语境下,计算机可读和/或可执行储存介质可以为任意有形的和/或非暂时性介质,其可以含有或储存由指令执行系统、设备、处理器或装置使用或与之相关的程序。
由于进行本公开的方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,包含诸如Python、Java、Smalltalk、C++、C#、Objective C等面向对象的编程语言,诸如“C”编程语言、脚本编程语言的常规程序的编程语言,和/或其它相似编程语言。程序代码可以部分地或完全地在用户的计算机中的一个或多个上和/或在远程计算机或数据网络之上的服务器上等执行。
如本文中所使用的,组件包括有形的、物理的、非暂时性装置。例如,组件可以实现为硬件逻辑电路,包括定制VLSI电路、门阵列,或其它集成电路;现成半导体,诸如逻辑芯片、晶体管,或其它分立式装置;和/或其它机械或电力装置。组件还可以实现为可编程硬件装置,诸如场可编程门阵列、可编程阵列逻辑、可编程逻辑装置等。组件可以包括一个或多个硅集成电路装置(例如,芯片、裸芯、裸芯平面、封装体)或其它分立式电力装置,通过印刷电路板(PCB)等的电线与一个或多个其它组件电通信。在某些实施例中,本文所描述的模块中的每一个可以替代地由组件实施或实现为组件。
本说明书通篇对“一个示例”“实施例”或相似语言的参考是指关于该实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。因此,短语“在一个示例中”、“在实施例中”以及相似语言在本说明书通篇可以但不一定全部指代相同的实施例,而是指“一个或多个但不是全部的实施例”,除非明确地另有指明。术语“包含”、“包括”、“具有”及其变体是指“包含但不限于”,除非明确地另有指明。项目的枚举列表不意味着任意或全部的项目相互地排斥和/或相互地包含,除非明确地另有指明。术语“一”、“一个”和“所述”也指代“一个或多个”,除非明确地另有指明。
以下根据本公开的实施例参考方法、设备、系统,以及计算机程序产品的示意性流程图和/或示意性框图描述了本公开的方面。应当理解,示意性流程图和/或示意性框图的每个框,以及示意性流程图和/或示意性框图中的框的组合,可以通过计算机程序指令实现。可以向计算机的处理器或其它可编程数据处理设备等提供这些计算机程序指令以产生机器,使得经由处理器或其它可编程数据处理设备执行的指令创建用于实现示意性流程图和/或示意性框图框或多个框中所指定的功能和/或行为的构件。
还应该注意的是,在一些替代实现方式中,框中提到的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以实质上同时地执行,或者框有时可以以相反的顺序执行。可以设想其它步骤和方法,其在功能、逻辑或效果上等同于所示附图的一个或多个框或其部分。尽管在流程图和/或框图中可能采用了各种箭头类型和线型,但是它们被理解为不限制对应的实施例的范围。例如,箭头可以指示所示实施例的枚举步骤之间的未指定持久时间的等待或监控时段。
在以下详细描述中,进行了对附图的参考,附图构成其一部分。前述发明内容仅为说明性的而不意图以任何方式限制。除上面所描述的说明性方面、实施例以及特征之外,通过参考附图和以下详细描述,其它方面、实施例以及特征将变得显而易见。每个附图中元件的描述可以指代前面的图中的元件。相同附图标记在附图中可以指代相同元件,包含相同元件的替代实施例。
图1是系统100的一个示例的框图,其包括储存器管理模块150。储存器管理模块150可以是非易失性存储器控制器124、非易失性存储器介质控制器126、装置驱动器或储存器管理层(SML)130等中的一个或多个的一部分和/或与非易失性存储器控制器124、非易失性存储器介质控制器126、装置驱动器或储存器管理层(SML)130等中的一个或多个通信。储存器管理模块150可以在计算装置110的非易失性存储器系统102上运行,其可以包括处理器111、易失性存储器112,以及通信接口113。处理器111可以包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个专用处理器、一个或多个虚拟处理器(例如,计算装置110可以为主机内运行的虚拟机)、一个或多个处理器核心等。通信接口113可以包括一个或多个网络接口,网络接口配置为将计算装置110和/或非易失性存储器控制器124通信地耦接到网络115,诸如互联网协议网络、储存局域网络等。
计算装置110还可以包括非暂时性、计算机可读储存介质114。计算机可读储存介质114可以包括可执行指令,其配置为使计算装置110(例如,处理器111)进行本文所公开的方法中的一个或多个的步骤。替代地或附加地,储存器管理模块150可以实现为非暂时性储存介质114上储存的一个或多个计算机可读指令。
在所绘示的实施例中,非易失性存储器系统102包含储存器管理模块150。在一个实施例中,储存器管理模块150配置为确定非易失性存储器装置120的可用或可使用擦除块的总数目,并且配置为确定可用擦除块中的多少个可以分组在一起以形成多个逻辑储存块,使得每个逻辑储存块中包含的擦除块的数目彼此偏差小于预定量、百分比等。在其它实施例中,储存器管理模块150通过将确定的数目的擦除块分配到多个逻辑储存块中的每一个而产生多个逻辑储存块。
以此方式,在某些实施例中,储存器管理模块150可以保持在它们的尺寸上(例如,在分配到逻辑储存块的可使用擦除块的数目上)具有小的变化的逻辑储存块,并且因此在并行性上具有小的变化(例如,以为主机装置提供一致的带宽),以一致的并行度并行地进行诸如读取、写入、编程等操作。此外,通过减少分配到逻辑储存块中的每一个的擦除块的数目的变化,储存器管理模块150可以确保实质上全部可用和可使用擦除块—例如,好的擦除块容量—被分配到逻辑储存块。这与产生逻辑储存块的常规方法不同,常规方法可能关注创建尽可能多的—并且仅创建全尺寸的—逻辑储存块,或创建尽可能多的全尺寸逻辑储存块,并且然后使用剩余的擦除块来创建较小的、降到半尺寸的逻辑储存块。任意情况下,可能存在无法用来形成逻辑储存块的若干剩余的好的擦除块,并且可能在逻辑储存块尺寸上存在大的变化,其可以产生高并行性变化和下降的性能。
在一个实施例中,储存器管理模块150可以包括诸如装置驱动器、SML130等的可执行软件代码,其储存在计算机可读储存介质114上以在处理器111上执行。在另一实施例中,储存器管理模块150可以包括一个或多个非易失性存储器装置120的逻辑硬件,诸如非易失性存储器介质控制器126、非易失性存储器控制器124、装置控制器、场可编程门阵列(FPGA)或其它可编程逻辑、FPGA或其它可编程逻辑的固件、微控制器上执行的微代码、专用集成电路(ASIC)等。在其它实施例中,储存器管理模块150可以包含可执行软件代码和逻辑硬件两者的组合。
在一个实施例中,储存器管理模块150配置为经由总线125等从SML130接收储存请求。储存器管理模块150还可以配置为经由总线125将数据传输到SML 130和/或储存器客户端116/从SML 130和/或储存器客户端116传输数据。相应地,储存器管理模块150,在一些实施例中,可以包括一个或多个直接存储器存取(DMA)模块、远程DMA模块、总线控制器、桥接器、缓冲等等和/或与之通信,以促进储存请求和相关联的数据的传输。在另一实施例中,储存器管理模块150可以将储存请求接收作为来自储存器客户端116的API调用、作为IO-CTL命令等。下面关于图4和图5更详细地描述了储存器管理模块150。
根据各种实施例,包括储存器管理模块150的非易失性存储器控制器124可以管理一个或多个非易失性存储器装置120。(多个)非易失性存储器装置120可以包括诸如(多个)固态储存器装置的记录、存储器和/或储存器装置,其布置和/或划分为多个可寻址介质储存位置。如本文中所使用的,介质储存位置是指存储器的任意物理单元(例如,非易失性存储器装置120上的任意数目的物理储存介质)。存储器单元可以包含但不限于:页、存储器分区、擦除块、区段、块、物理储存位置的集合或集(例如,以下描述的逻辑页、逻辑擦除块)等。
非易失性存储器控制器124可以包括SML 130,其可以将逻辑地址空间134呈现到一个或多个储存器客户端116。SML的一个示例是加利福尼亚州苗必达市的SanDisk公司的Virtual Storage替代地,每个非易失性存储器装置120可以包括非易失性存储器介质控制器126,其可以将逻辑地址空间134呈现到储存器客户端116。如本文中所使用的,逻辑地址空间134是指存储器资源的逻辑表示。逻辑地址空间134可以包括多个逻辑地址(例如,逻辑地址的范围)。如本文中所使用的,逻辑地址是指涉及存储器资源的任意标识(例如,数据),包含但不限于:逻辑块地址(LBA)、柱面/头部/区段(CHS)地址、文件名、对象标识、索引节点(inode)、通用唯一标识(UUID)、全局唯一标识(GUID)、散列码、签名、索引条目、范围、区间等。
SML 130可以保持诸如正向索引的元数据135,以将逻辑地址空间134的逻辑地址映射到(多个)非易失性存储器装置120上的介质储存位置。SML130可以提供仲裁(arbitrary)、从逻辑地址到物理储存资源的任意到任意的映射。如本文中所使用的,“任意到任意”的映射可以将任意逻辑地址映射到任意物理储存资源。相应地,逻辑地址与特定的介质储存位置和/或介质地址之间可能不存在预限定的和/或预设的映射。如本文中所使用的,介质地址是指存储器资源的地址,其对管理多个存储器资源的控制器将存储器资源相互唯一地识别。作为示例,介质地址包含但不限于:介质储存位置、物理存储器单元、物理存储器单元的集合(例如,逻辑存储器单元)、存储器单元的一部分(例如,逻辑存储器单元地址和偏移、范围,和/或区间)等的地址。相应地,SML 130可以将逻辑地址映射到任意尺寸和/或粒度的物理数据资源,其可以或可不对应于(多个)非易失性存储器装置120的底层数据划分方案。例如,在一些实施例中,非易失性存储器控制器124配置为在逻辑存储器单元内储存数据,逻辑存储器单元通过逻辑上组合多个物理存储器单元形成,其可以允许非易失性存储器控制器124支持许多不同虚拟存储器单元尺寸和/或粒度。
如本文中所使用的,逻辑存储器元件是指两个或多个非易失性存储器元件的集,其被或能够被并行地管理(例如,经由I/O和/或控制总线),其可以另外被称为逻辑储存块、虚拟储存块和/或超级块。逻辑存储器元件可以包括多个逻辑存储器单元,诸如逻辑页、逻辑存储器分区(例如,逻辑擦除块)等等。如本文中所使用的,逻辑存储器单元是指组合两个或多个物理存储器单元的逻辑构造,相应的非易失性存储器元件上的每个物理存储器单元在相应的逻辑存储器元件中(例如,每个非易失性存储器元件并行地可存取)。如本文中所使用的,逻辑存储器分区是指两个或多个物理存储器分区的集,相应的非易失性存储器元件上的每个物理存储器分区在相应的逻辑存储器元件中。
由SML 130呈现的逻辑地址空间134可以具有逻辑容量,其可以对应于逻辑地址空间134中可用逻辑地址的数目和由逻辑地址引用的数据的尺寸和/或粒度。例如,包括2^32个唯一逻辑地址的逻辑地址空间134、每个引用2048字节(2KiB)的数据的逻辑容量可以为2^43字节。如本文中所使用的,千位字节(kibibyte,KiB)是指1024字节。在一些实施例中,逻辑地址空间134可以是精简配置(thinly provisioned)。如本文中所使用的,“精简配置”逻辑地址空间134是指具有超过底层(多个)非易失性存储器装置120的物理容量的逻辑容量的逻辑地址空间134。例如,SML 130可以将64-位逻辑地址空间134(例如,由64-位逻辑地址引用的逻辑地址空间134)呈现到储存器客户端116,其可以超过底层非易失性存储器装置120的物理容量。大的逻辑地址空间134可以允许储存器客户端116指派和/或引用逻辑地址的连续范围,而降低命名冲突的机会。SML 130可以利用逻辑地址与物理储存资源之间的任意到任意映射,以独立于底层物理储存器装置120而管理逻辑地址空间134。例如,SML 130可以根据需要无缝地添加和/或移除物理储存资源,并且不改变由储存器客户端116使用的逻辑地址。
非易失性存储器控制器124可以配置为将数据储存为上下文格式(contextformat)。如本文中所使用的,上下文格式是指自描述数据格式,其中以物理储存介质122上的数据来储存持久上下文元数据。持久上下文元数据提供与之储存的数据的上下文。在某些实施例中,持久上下文元数据唯一地识别持久上下文元数据与之储存的数据。例如,持久上下文元数据可以将由储存器客户端116所拥有的区段或块的数据从由储存器客户端116所拥有的其它区段或块的数据中唯一地识别。在其它实施例中,持久上下文元数据识别在数据上进行的操作。在其它实施例中,持久上下文元数据识别在数据上进行的操作的次序。在其它实施例中,持久上下文元数据识别数据的安全控制、数据类型或其它属性。在某实施例中,持久上下文元数据识别多个方面中的至少一个,包含数据类型、唯一数据标识、数据上进行的操作以及操作的次序。
持久上下文元数据可以包含但不限于:数据的逻辑地址、数据的标识(例如,文件名、对象id、标记、唯一标识等)、对其它数据的(多个)引用(例如,数据与其它数据相关联的指示符)、数据关于其它数据的相对位置或偏移(例如,文件偏移,等),数据尺寸和/或范围等。上下文数据格式可以包括包(packet)格式,其包括数据段和一个或多个标头(header)。替代地,上下文数据格式可以以其它方式(例如,在非易失性存储器介质122上的专用索引、存储器分区索引等中)将数据与上下文信息相关联。
在一些实施例中,上下文数据格式可以允许基于非易失性存储器介质122的内容来确定和/或重建数据上下文,而独立于其它元数据,诸如仲裁、上面讨论的任意到任意映射。因为数据的介质位置独立于数据的逻辑地址,仅基于数据的介质位置或介质地址可能不足以或无法确定数据的上下文。在非易失性存储器介质122上将数据储存为上下文格式可以允许在不引用其它元数据的情况下确定数据上下文。例如,上下文数据格式可以允许仅基于非易失性存储器介质122的内容而重建元数据(例如,重建逻辑地址与介质位置之间的任意到任意映射)。
在一些实施例中,非易失性存储器控制器124可以配置为将数据储存在一个或多个非对称、一次写入介质122上,诸如固态储存介质。如本文中所使用的,“一次写入”储存介质是指每次新的数据被写入或编程在之上时被重新初始化(例如,擦除)的储存介质。如本文中所使用的,“非对称”储存介质是指对于不同储存操作具有不同时延的储存介质122。许多类型的固态储存介质是非对称的;例如,读取操作可以比写入/编程操作快得多,并且写入/编程操作可以比擦除操作快得多(例如,读取介质可以比擦除块数百倍,并且比编程介质快数十倍)。
存储器介质122可以划分为存储器分区,其可以作为组(例如,擦除块)擦除以便于,尤其是考虑到介质122的非对称性质等。就此而言,原地(in-place)修改单个数据段可能要求擦除包括数据的整个擦除块,并且将修改的数据连同原始的、未改变的数据重新写入到擦除块。这可能导致低效的“写入放大”,其可能过度地损耗介质122。因此,在一些实施例中,非易失性存储器控制器124可以配置为换位(out-of-place)写入数据。如本文中所使用的,“换位”写入数据是指将数据写入到(多个)不同介质储存位置中而非“原地”盖写(overwrite)数据(例如,盖写数据的原始物理位置)。换位修改数据可以避免写入放大,因为擦除块上的现有的、有效数据与要修改的数据不必被擦除和重新复制。此外,换位写入数据可以移除来自许多储存操作的时延路径的擦除(erasure)(例如,擦除时延不再是写入操作的关键路径的一部分)。
非易失性存储器控制器124可以包括一个或多个进程,其在储存操作的服务的常规路径(例如,进行储存操作和/或服务储存请求的“路径”)之外运行。如本文中所使用的,“服务储存请求的路径”或“服务储存操作的路径”(也称为“关键路径”)是指为了服务诸如读取、写入、修改等的储存操作或请求所需的一系列处理操作。服务储存请求的路径可以包括从储存器客户端116接收请求、识别请求的逻辑地址、在非易失性存储器介质122上进行一个或多个储存操作,以及返回结果,诸如通知或数据。在服务储存请求的路径之外发生的进程可以包含但不限于:清扫器(groomer)、去重复等等。这些进程可以自治地且在背景中实施,使得它们不与其它储存操作和/或请求相干扰或影响其它储存操作和/或请求的性能。相应地,这些进程可以独立于服务储存请求而运行。
在一些实施例中,非易失性存储器控制器124包括清扫器,其配置为回收存储器分区(例如,逻辑或物理擦除块)以重新使用,使用垃圾收集或其它储存容量恢复过程。由非易失性存储器控制器124实施的换位写入范例可能导致非易失性存储器介质122上剩余的过时或无效数据。例如,用数据Y盖写数据X可能导致将Y储存在新的存储器分区上(例如,而非原地盖写X),并且更新元数据的任意到任意的映射以将Y识别为有效的、最新的(up-to-date)版本的数据。过时版本的数据X可以被标记为无效,但可能不被立即移除(例如,擦除),因为,如上面所讨论,擦除X可能涉及擦除整个存储器分区,其是耗时的操作且可能导致写入放大。相似地,不再使用的数据(例如,删除的或修整的数据)可能不被立即移除。非易失性存储器介质122可能积累大量的无效数据。
清扫器进程可以在服务储存操作的关键路径之外运行。清扫器进程可以回收存储器分区,使得它们可以重新使用于其它储存操作。如本文中所使用的,回收存储器分区是指擦除存储器分区,使得新的数据可以储存/编程在之上。回收存储器分区可以包括将存储器分区上的有效数据重新定位到新的位置。清扫器可以基于一个或多个因素识别用于回收的存储器分区,因素可以包含但不限于:存储器分区中的无效数据的量、存储器分区中的有效数据的量、存储器分区上的损耗(例如,擦除循环的数目)、自从存储器分区被编程或刷新的时间等等。
非易失性存储器控制器124还可以配置为将数据储存为日志格式。如上所述,日志格式是指限定非易失性存储器介质122上进行的储存操作的顺序的次序的数据格式。在一些实施例中,日志格式包括以非易失性存储器介质122的介质地址的预定的次序来储存数据(例如,在介质122的依序的页和/或擦除块内)。日志格式还可以包括将数据(例如,每个包或数据段)与相应的次序指示符相关联。次序指示符可以单独地应用到数据(例如,应用到每个数据包)和/或应用到数据分组(例如,依序地储存在诸如擦除块的存储器分区上的包)。在一些实施例中,当存储器分区如上所述被回收(例如,擦除)时和/或当存储器分区首次用于储存数据时,次序指示符可以应用于存储器分区。
在一些实施例中,日志格式可以包括将数据储存在“只附加(append only)”范例中。使用下面描述的日志储存模块137等,非易失性存储器控制器124可以保持非易失性存储器装置120的介质地址处的当前附加点。附加点可以是当前存储器分区和/或存储器分区内的偏移。然后数据可以从附加点依序地附加。因此,可以基于数据的存储器分区的次序指示符与存储器分区内的数据的次序的组合而确定数据的顺序次序。一经达到存储器分区的端部,非易失性存储器控制器124可以识别“下一”可用存储器分区(例如,初始化且准备好储存数据的下一存储器分区)。清扫器可以回收包括无效的、陈旧的和/或删除的数据的存储器分区,以确保数据可以继续附加到介质日志。
本文所描述的日志格式可以允许基于非易失性存储器介质122的内容将有效数据与无效数据区分,并且独立于其它元数据。如上面所讨论,无效数据可能不从非易失性存储器介质122移除,直到包括数据的存储器分区被回收。因此,具有相同上下文的多个“版本”的数据可能存在于非易失性存储器介质122上(例如,具有相同逻辑地址的多个版本的数据)。与数据相关联的次序指示符可以用来将无效版本的数据与当前的、最近的版本的数据区分;日志中最当前的数据是当前版本,且之前的版本可以被识别为无效。
储存器管理层130可以配置为将储存服务提供到一个或多个储存器客户端116。储存器客户端116可以包含计算装置110上运行的本地储存器客户端116和/或经由网络115和/或网络接口113可存取的远程储存器客户端116。储存器客户端116可以包含但不限于:操作系统、文件系统、数据库应用、服务器应用、内核级进程、用户级进程、应用等。
储存器管理层130包括一个或多个非易失性存储器装置120和/或与之通信地耦接。一个或多个非易失性存储器装置120可以包含不同类型的非易失性存储器装置,包含但不限于:固态储存器装置、硬盘驱动器、SAN储存资源等。一个或多个非易失性存储器装置120可以包括一个或多个相应的非易失性存储器介质控制器126和非易失性存储器介质122。如图1中所示,SML130可以经由传统块I/O接口131提供对一个或多个非易失性存储器装置120的存取。附加地,SML 130可以通过SML接口132提供存取以增强功能(例如,大的、虚拟地址空间134)。元数据135可以用来管理和/或跟踪通过块I/O接口131、SML接口132、缓存接口133,或其它的相关的接口中任意的接口进行的储存操作。
缓存接口133可以暴露经由储存器管理层130可存取的缓存专用特征。此外,在一些实施例中,呈现到储存器客户端116的SML接口132提供对由一个或多个非易失性存储器装置120和/或一个或多个非易失性存储器介质控制器126实现的数据转换的存取。
SML 130可以通过一个或多个接口提供储存服务,接口可以包含但不限于:块I/O接口、扩展储存器管理层接口、缓存接口等。SML 130可以通过一个或多个接口将逻辑地址空间134呈现到储存器客户端116。如上面所讨论,逻辑地址空间134可以包括多个逻辑地址,各自对应于一个或多个非易失性存储器装置120上的相应的介质位置。SML 130可以保持元数据135,其包括如上所述的逻辑地址与介质位置之间的任意到任意映射。
SML 130还可以包括日志储存模块137,其配置为以上下文、日志格式储存数据。上下文、日志数据格式可以包括将数据与诸如数据的逻辑地址等的持久上下文元数据相关联。上下文、日志格式还可以包括将数据与非易失性存储器介质122上的相应的次序标识相关联,其限定如上所述的一个或多个非易失性存储器装置120上进行的储存操作的顺序的次序。
SML 130还可以包括配置为在总线125之上将数据、命令和/或查询传输到一个或多个非易失性存储器装置120的非易失性存储器装置接口139,其可以包含但不限于:外围组件互连高速(PCI Express或PCIe)总线、串行高级技术附件(ATA)总线、并行ATA总线、小型计算机系统接口(SCSI)、火线(fireWire)、光纤通道、通用串行总线(USB)、PCIe先进切换(PCIe-AS)总线、网络115、无限带宽(Infiniband)、SCSI RDMA等。非易失性存储器装置接口139可以使用(多个)输入-输出控制(IO-CTL)命令、(多个)IO-CTL命令扩展、远程直接存储器存取等与一个或多个非易失性存储器装置120通信。
通信接口113可以包括配置为将计算装置110和/或非易失性存储器控制器124通信地耦接到网络115和/或耦接到一个或多个远程、网络-可存取储存器客户端116的一个或多个网络接口。储存器客户端116可以包含计算装置110上运行的本地储存器客户端116和/或经由网络115和/或网络接口113可存取的远程的储存器客户端116。非易失性存储器控制器124包括一个或多个非易失性存储器装置120。尽管图1绘示了单个非易失性存储器装置120,本公开在此方面不受限制并且可以适配为结合任意数目的非易失性存储器装置120。
非易失性存储器装置120可以包括非易失性存储器介质122,其可以包含但不限于:NAND闪速存储器、NOR闪速存储器、纳米随机存取存储器(纳米RAM或NRAM)、基于纳米晶体线的存储器、基于硅氧化物的10纳米以下工艺存储器、石墨烯存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)、电阻式RAM(RRAM)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、磁阻式RAM(MRAM)、动态RAM(DRAM)、相变RAM(PRAM或PCM)、磁储存介质(例如,硬盘、磁带)、光学储存介质等。尽管非易失性存储器介质122在本文中称为“存储器介质”,但是在各种实施例中,非易失性存储器介质122可以更普遍地包括能够记录数据的非易失性记录介质,其可以称为非易失性存储器介质、非易失性储存介质等。此外,在各种实施例中,非易失性存储器装置120可以包括非易失性记录装置、非易失性存储器装置、非易失性储存器装置等。
非易失性存储器介质122可以包括一个或多个非易失性存储器元件123,其可以包含但不限于:芯片、封装体、平面、裸芯等。非易失性存储器介质控制器126可以配置为管理非易失性存储器介质122上的储存操作,并且可以包括一个或多个处理器、可编程处理器(例如,现场可编程门阵列)等。在一些实施例中,非易失性存储器介质控制器126配置为将数据在非易失性存储器介质122上储存为上述上下文、日志格式或从之读取数据,并且配置为将数据传输到非易失性存储器装置120/从非易失性存储器装置120传输数据等等。
非易失性存储器介质控制器126可以通过总线127通信地耦接到非易失性存储器介质122。总线127可以包括I/O总线,以用于将数据通信到非易失性存储器元件123/从非易失性存储器元件123通信数据。总线127还可以包括控制总线,以将地址和其它命令和控制信息通信到非易失性存储器元件123。在一些实施例中,总线127可以将非易失性存储器元件123通信地并行耦接到非易失性存储器介质控制器126。此并行存取可以允许非易失性存储器元件123作为组来管理,形成逻辑存储器元件129。如上面所讨论,逻辑存储器元件可以划分为相应的逻辑存储器单元(例如,逻辑页)和/或逻辑存储器分区(例如,逻辑擦除块)。可以通过将非易失性存储器元件中的每一个的物理存储器单元逻辑上组合来形成逻辑存储器单元。例如,如果非易失性存储器介质122包括二十五(25)个非易失性存储器元件,则每个逻辑存储器单元可以包括二十五(25)个页(例如,非易失性存储器介质122的每个元件的页)。
非易失性存储器控制器124可以包括SML 130和非易失性存储器介质控制器126。SML 130可以经由一个或多个接口131、132和/或133对储存器客户端116提供储存服务。在一些实施例中,SML 130提供块-装置I/O接口131,储存器客户端116通过块-装置I/O接口131进行块级I/O操作。替代地或附加地,SML 130可以提供储存器管理层(SML)接口132,其可以对储存器客户端116提供其它储存服务。在一些实施例中,SML接口132可以包括对块装置接口131的扩展(例如,储存器客户端116可以通过对块装置接口131的扩展而存取SML接口132)。替代地或附加地,SML接口132可以提供为分开的API、服务、和/或文库(library)。SML 130还可以配置为提供缓存接口133,以使用非易失性存储器系统102缓存数据。
如上所述,SML 130可以将逻辑地址空间134呈现到储存器客户端116(例如,通过接口131、132和/或133)。SML 130可以保持元数据135,其包括逻辑地址空间134中的逻辑地址与非易失性存储器装置120上的介质位置之间的任意到任意的映射。元数据135可以包括具有条目的逻辑-到-物理映射结构,其中条目将逻辑地址空间134中的逻辑地址与非易失性存储器装置120上的介质位置映射。在一个实施例中,用非易失性存储器装置120储存数据的逻辑地址的条目而不用非易失性存储器装置120当前不储存数据的逻辑地址的条目来稀疏地填入元数据135的逻辑-到-物理映射结构。在某些实施例中,元数据135在块级跟踪数据,且SML 130将数据作为块管理。
非易失性存储器系统102还可以包括日志储存模块137,其如上所述可以配置为在非易失性存储器装置120上将数据储存为上下文、日志格式。上下文、日志数据格式可以包括将数据与非易失性存储器介质122上的逻辑地址相关联。上下文、日志格式还可以包括将数据与非易失性存储器介质122上的相应的次序标识相关联,其限定非易失性存储器介质122上进行的储存操作的顺序的次序,如上所述。非易失性存储器控制器124还可以包括非易失性存储器装置接口139,其配置为在总线125之上将数据、命令和/或查询传输到非易失性存储器介质控制器126,如上所述。
图2绘示了非易失性储存器装置210的实施例,其可以包含一个或多个存储器裸芯或芯片212。非易失性储存器装置210可以实质上类似于参考图1所描述的非易失性存储器装置120。在一些实施例中,存储器裸芯212包含存储器单元的阵列200(二维或三维)、裸芯控制器220,以及读取/写入电路230A/230B。在一个实施例中,由各种外围电路对存储器阵列200的存取以对称方式在阵列的相反侧上实现,使得每侧上的存取线和电路的密度减半。在其它实施例中,读取/写入电路230A/230B包含多个感测块250,其允许并行读取或编程存储器单元的页。
在各种实施例中,存储器阵列200是经由行解码器240A/240B通过字线且经由列解码器242A/242B通过位线可寻址的。在一些实施例中,控制器244被包含在与一个或多个存储器裸芯212相同的存储器装置210(例如,可移除储存卡或封装体)中。命令和数据在主机与控制器244之间经由线232,且在控制器与一个或多个存储器裸芯212之间经由线234传输。一种实现方式可以包含多个芯片212。
在一个实施例中,裸芯控制器220与读取/写入电路230A/230B协作以在存储器阵列200上进行存储器/储存操作。在某些实施例中,裸芯控制器220包含储存器管理模块150、状态机222、芯片上地址解码器224以及功率控制电路226。在一个实施例中,储存器管理模块150配置为确定非易失性储存器装置的可用擦除块的总数目,确定要分配到多个逻辑储存块中的每一个的可用擦除块的数目,使得分配到逻辑储存块中的每一个的擦除块的数目在变化的阈值、百分比、量等之内,并且通过将若干可用擦除块分配到逻辑储存块而产生逻辑储存块。在某些实施例中,储存器管理模块150可以包含装置驱动器的软件、和/或装置控制器244、裸芯控制器220和/或状态机222中的硬件。
在一个实施例中,状态机222提供存储器或储存操作的芯片级控制。芯片上地址解码器224提供地址接口以在由主机或存储器控制器使用的地址到由解码器240A、240B、242A、242B使用的硬件地址之间转换。功率控制电路226控制在存储器操作期间供给到字线和位线的功率和电压。在一个实施例中,功率控制电路226包含一个或多个电荷泵,其可以产生大于供给电压的电压。
图3绘示了非易失性储存器装置300的一个示例,诸如上述非易失性储存器装置210。在某些实施例中,非易失性储存器装置300组织为擦除块302aa-302mn(统称为302),其是最小可擦除单元。非易失性储存器装置300可以另外组织为页,如本文中所使用的,页可以是能够编程或读取的最小单元。在一些实施例中,非易失性储存器装置300包含多个物理储存单元304a-n(统称为304)(例如,一个或多个裸芯、裸芯平面、芯片、集成电路等),其中每个物理储存单元304具有多个擦除块302。来自对应的物理储存单元304的存储器位置(例如,擦除块302、擦除块的页、或擦除块的字线)可以分组在一起以形成逻辑储存块306、虚拟储存块、超级块等。可以使用物理地址(例如,物理页地址或物理块地址)来寻址非易失性储存器装置300的每个存储器位置。
如上所述,非易失性储存器装置300中的物理上储存块可以包含对准为对应于字线的行的存储器单元的阵列。储存块的存储器单元可以配置为单级单元(“SLC”)或多级单元(“MLC”),并且储存块中的每个字线可以配置为用于储存一个页(在SLC的情况下)或多个页(在MLC的情况下)。因此,给定储存块中的页的数目可以基于每存储器单元储存的位的数目。由于提高的储存密度,被用作2-位MLC储存块的储存块可以包含当相同的储存块被用作SLC储存块时的两倍数目的页。例如,对于由64个字线构成的储存块,储存块当用作SLC储存块时可以包含64个页,当用作2-位MLC储存块上可以包含128个页,当用作3-位MLC储存块时可以包含192个页,等等。然而,这些数目仅是说明性的,并且非易失性储存器装置300的储存块可以包含任意其它适当数目的页。
在一个实施例中,非易失性储存器装置300包含一个或多个逻辑储存块306、超级块、虚拟储存块等。如本文中所使用的,逻辑储存块306是非易失性储存器装置300的包含来自一个或多个不同物理储存单元304的擦除块302的储存单元,一个或多个不同物理储存单元304包含不同裸芯、裸芯平面、芯片、集成电路等。在某些实施例中,逻辑储存块306提供操作并行性,从而使能编程、读取,及擦除操作在位于诸如不同裸芯、裸芯平面、芯片等的不同物理储存单元304中的存储器位置上并行地进行。每个逻辑储存块306可以因此属于特定的库或者是同时地可寻址的单元(“CAU”)。在一些情况下,系统可以通过改变芯片使能(“CE”)信号的状态来存取特定逻辑储存块。
在一些实施例中,逻辑储存块306可以包含来自每个物理储存单元304的具有在物理储存单元304中相同位置或相同块号的一个擦除块302。例如,如图3中所示,逻辑储存块306a可以包含来自物理储存单元304a-n中的每一个的块位置“a”处的擦除块302。相似地,另一逻辑储存块306b可以包含来自物理储存单元304a-n中的每一个的块位置“b”、“c”处的擦除块302,以此类推。
在各种实施例中,逻辑储存块306可以由不同物理储存单元304的不同块号处的擦除块302构成。例如,逻辑储存块306b可以由位置“ca”、“cb”、“bc”等处的擦除块302构成。在这样的实施例中,物理储存单元304c的来自块位置“c”的擦除块302cc可以是坏的块,意味着擦除块302cc对于读取或写入数据可能不可用或不可使用。相应地,逻辑储存块306b可以包含来自坏的块302cc所位于的相同物理储存单元304c的不同块位置的好的擦除块302bc。
在某些实施例中,可以通过将擦除块302的存储器位置的子集虚拟地链接或“分条(striping)”在一起(例如,取代或附加于使用整个擦除块302,为更高的并行性,响应于将部分擦除块退出或将部分擦除块标记为坏的等)而形成逻辑储存块306。例如,可以通过将来自非易失性储存器装置300的一个或多个物理储存单元304的擦除块302的存储器位置的子集虚拟地链接或“分条”在一起而形成逻辑储存块306。存储器位置的子集可以包括要虚拟地链接为逻辑储存块306的不同物理储存单元304的相同的一个或多个页或字线。在其它实施例中,如上所述,来自不同裸芯、裸芯平面、芯片或其它位置的完整擦除块可以被分组以形成逻辑储存块306(例如,在没有子块分条的情况下)。
储存器管理模块150、SML 130等可以跟踪和/或管理擦除块302的与每个逻辑储存块306相关联的存储器位置。例如,储存器管理模块150可以将擦除块302的存储器位置与对应的逻辑储存块306之间的关联储存为非易失性储存器装置300的一个或多个页上的元数据。
图4绘示了储存器管理模块150的一个示例。储存器管理模块150可以实质上类似于上面相对于图1和图2所描述的储存器管理模块150。在所绘示的实施例中,储存器管理模块150包含块模块402、尺寸模块404以及映射模块406,在下面对其更详细描述。
在一个实施例中,块模块402识别非易失性储存器装置300的擦除块302的池,并且确定非易失性储存器装置300的可用擦除块302的总数目。例如,块模块402可以对非易失性储存器装置300的擦除块302扫描、测试、检查等,以确定哪个擦除块302可用于读取和写入数据(例如,“好的”块,其未被标记为“坏的”、退出的或其它情况而被从使用中剔除)。在另一示例中,块模块402可以保持非易失性储存器装置300的擦除块302的列表,并且可以将是“坏的”擦除块302(例如,具有错误、已经失效、已经被退出和/或其它原因而无法用于读取和/或写入数据的擦除块302)的擦除块302删除、标记为无效、退出等。坏的块可以包含由于在储存器装置300的制造期间的缺陷而当储存器装置300被初次使用、格式化等(例如,在裸芯分类测试操作等期间)时被确定为报废的(defunct)或有缺陷的擦除块302,和/或在储存器装置300的寿命期间变为报废的或有缺陷的擦除块302。
在某些实施例中,块模块402为可用擦除块302保持诸如擦除块位置(例如,可用擦除块302、芯片、裸芯,和/或裸芯平面标识等的存储器地址)的可用擦除块302的池、列表等,可用擦除块302的擦除块标识等等。在各种实施例中,块模块402对可以包含在逻辑储存块306、虚拟储存块、超级块等中,分配到逻辑储存块306、虚拟储存块、超级块等,或以其它方式与逻辑储存块306、虚拟储存块、超级块等相关联的可用擦除块302的总数目跟踪、计数等。
在一个实施例中,尺寸模块404配置为对可用要包含在多个逻辑储存块306中的每一个的擦除块302的数目确定、计算等。在一些实施例中,尺寸模块404确定要包含在每个逻辑储存块306中的可用擦除块302的数目,使得包含在每个逻辑储存块306中的“尺寸”或可用擦除块302的数目偏差预限定的阈值差异、预定偏差限制等,其可以是擦除块302的百分比、量或数目等。
例如,尺寸模块404可以确定在每个逻辑储存块306中要包含的可用擦除块302的数目,使得逻辑储存块306的尺寸彼此偏差或变化最多50%、25%、10%、5%、2%等。在各种实施例中,尺寸模块404确定在每个逻辑储存块306中要包含的可用擦除块302的数目,使得逻辑储存块306的尺寸在0%-5%、5%-15%、15%-25%、25%-50%等的范围内偏差或变化。相似地,尺寸模块404可以确定在每个逻辑储存块306中要包含的可用擦除块302的数目,使得逻辑储存块306的尺寸偏差或变化最多一个擦除块302、两个擦除块302、三个擦除块302等等。
在一个实施例中,为确定在每个逻辑储存块306中要包含的可用擦除块302的数目使得逻辑储存块306的尺寸偏差或变化阈值差异,尺寸模块404计算可以创建的逻辑储存块306的数目,使得在保持由阈值差异设定的尺寸限制时,每个逻辑储存块306中可以包含尽可能多的可用擦除块302。例如,如果逻辑储存块306可以包含64个擦除块302,并且存在192(64×3)个可用擦除块302,则尺寸模块404可以确定可以创建三个逻辑储存块306,其各自包含64个擦除块302,使得不存在剩余的擦除块302。
然而,如果存在190个可用擦除块302,则不是创建各自包含64个擦除块302的两个逻辑储存块306,以及包含62个擦除块302的第三逻辑储存块306,尺寸模块404可以确定一个逻辑储存块306应包含64个擦除块302,并且其余的两个逻辑储存块306应各自包含63个擦除块302,使得逻辑储存块306为实质上均等或相等的尺寸,这可以基于阈值差异而确定。
在一个实施例中,映射模块406通过将尺寸模块404确定的数目的擦除块302分配到逻辑储存块306中的每一个而为非易失性储存器装置300产生多个逻辑储存块306。例如,映射模块406可以创建、保持和/或以其它方式管理擦除块302到擦除块302所被分配到的逻辑储存块306的映射。
在一个实施例中,映射模块406将擦除块302随机地分配到逻辑储存块306。在某些实施例中,映射模块406以诸如擦除块302所位于的裸芯、裸芯平面、芯片等的顺序的顺序次序而将擦除块302分配到逻辑储存块306。在其它实施例中,映射模块406作为擦除块302中的每一个的年龄的函数而将擦除块302分配到逻辑储存块306。
如本文中所使用的,擦除块302的年龄可以指擦除块302已经被激活或主动地使用中的总时间、自从擦除块302被制造的时间、擦除块302上已经进行的编程/擦除循环的数目等。在这样的实施例中,映射模块406通过选择具有比具有更高的年龄的擦除块302更低的年龄的擦除块302—例如,以年龄的顺序次序—而将擦除块302包含在逻辑储存块306中。
在某些实施例中,映射模块406作为擦除块302的年龄函数而选择要分配到逻辑储存块306的擦除块302,使得逻辑储存块306的擦除块302的平均年龄满足预定年龄阈值。以此方式,映射模块406可以管理逻辑储存块306的“年龄”,使得逻辑储存块306的年龄是实质上相同的,而不是特定逻辑储存块306的年龄比不同逻辑储存块306的年龄实质上更低或更高。在各种实施例中,如果可能,映射模块406根据阈值差异将全部或实质上全部的可用擦除块302分配到逻辑储存块306,使得不存在或存在很少能够被分配到逻辑储存块306的可用擦除块302中的未分配的擦除块302。
图5绘示了储存器管理模块150的一个示例。储存器管理模块150可以实质上类似于上面相对于图1、图2和图4所描述的储存器管理模块150。在所绘示的实施例中,储存器管理模块150包含块模块402、尺寸模块404,以及映射模块406,其可以实质上类似于上面参考图4所描述的块模块402、尺寸模块404,以及映射模块406。此外,在一个实施例中,储存器管理模块150包含更新模块502和储备模块504,在下面对其更详细描述。
在一个实施例中,更新模块502配置为跟踪、检测、监控、确定、计算等与非易失性储存器装置300的每个逻辑储存块306相关联的刷新条件。在一些实施例中,由于在逻辑储存块306中包含的擦除块302上的改变,逻辑储存块306需要周期性地刷新、调整、修改、重新调整尺寸等。例如,擦除块302可以变坏,使得它们无法被读取或写入。在各种实施例中,更新模块502监控以刷新各种刷新条件,各种刷新条件可以触发逻辑储存块306的动态的、实时的重新调整尺寸、重新配置、修改、重新产生、重新映射等。
在某些实施例中,更新模块502跟踪的刷新条件包含逻辑储存块306的擦除块302的编程/擦除循环计数(例如,每32个编程/擦除循环)、逻辑储存块306的年龄(例如,在逻辑储存块306中包含的擦除块302的平均年龄)、诸如逻辑储存块306的擦除块302的失效的位计数的错误率度量等。更新模块502可以为每个逻辑储存块306周期性地检查擦除块302的状态来以特定间隔主动地监控刷新条件,可以检测触发逻辑储存块306的监控的事件(例如,诸如可以指示擦除块302是坏的擦除块302上的失效的读取或写入)等。
响应于刷新条件中的一个或多个满足预限定阈值,例如,响应于逻辑储存块306的擦除块302的编程/擦除循环计数满足阈值编程/擦除循环计数、逻辑储存块306的年龄满足逻辑储存块306的年龄阈值、擦除块302的失效的位计数满足失效的位计数阈值,更新模块502将在逻辑储存块306中包含的擦除块302的逻辑分组解散、移除、无效化、取消等。
更新模块502和/或映射模块406,例如,可以响应于更新模块502检测到刷新条件而将擦除块302到擦除块302所被分配到的逻辑储存块306的映射删除、移除、无效化等。在另一示例中,更新模块502可以将引用、指针或存取逻辑储存块306的其它构件移除、无效化、标记为被删除、删除等,以解散逻辑储存块306,使得逻辑储存块306无法用于从非易失性储存器装置300读取数据和/或将数据写入到非易失性储存器装置300。
在某些实施例中,在更新模块502已经被解散之后,逻辑储存块306、构成逻辑储存块306的擦除块302返回到擦除块302的可用池。在一个实施例中,块模块402确定候选包含在新的逻辑储存块306中的可用擦除块302的新的总数目。由于擦除块上的改变,例如,如果一些擦除块302已经变坏或因其它原因不再可使用,可用擦除块302的新的总数目可能不同于可用擦除块302的原始总数目。
在某些实施例中,基于可用擦除块302的池中的擦除块302的总数目,尺寸模块404确定要分配到逻辑储存块306的擦除块302的新的数目。在某些实施例中,尺寸模块404确定要分配到逻辑储存块306的擦除块302的新的数目,使得分配到每个逻辑储存块306的擦除块302的数目实质上相同或在诸如25%或更小的阈值差异内。在某些实施例中,映射模块406通过根据尺寸模块404确定要在每个逻辑储存块306中包含的擦除块302的数目来将候选擦除块302分配到逻辑储存块306而产生新的逻辑储存块306,并且更新擦除块302到擦除块302所被分配到的逻辑储存块306的映射。以此方式,可以动态地调整逻辑储存块306的尺寸,以便确保分配到每个逻辑储存块306的擦除块302的数目在阈值差异内,使得逻辑储存块306的尺寸实质上均等,并且可用擦除块302中的大部分—如果不是全部—可以分配到逻辑储存块306。
在其它实施例中,当更新模块502解散逻辑储存块306中的每一个时,尺寸模块404确定来自逻辑储存块306中的每一个的好的、可使用等的擦除块302的数目。在一个实施例中,尺寸模块404将确定的可使用擦除块302的数目储存在队列中,映射模块406可以使用队列来将擦除块302分配到逻辑储存块306。例如,如果存在五个逻辑储存块306,并且当更新模块502解散逻辑储存块306时在逻辑储存块306中的每一个中包含的可使用擦除块302的数目分别是64、63、63、64、63,则尺寸模块404可以将每个尺寸的放置在队列(或其它数据结构、列表、表等)中。然后映射模块406可以从队列弹出数目,并且将弹出数目的擦除块302分配到新的逻辑储存块306。通过跟踪逻辑储存块306在它们被解散时的尺寸,可以减少计算要分配到逻辑储存块306的擦除块302的数目所需要的处理和时间。
在一个实施例中,储备模块504配置为产生擦除块302的储备池,其包含未分配到逻辑储存块306的可用擦除块302中的一个或多个。例如,如果擦除块302因为其将使逻辑储存块306的尺寸超过阈值差异而未被分配到逻辑储存块306,储备模块504将未分配的擦除块302添加到储备擦除块302的池。
在一些实施例中,当产生逻辑储存块306时,储备模块504将擦除块302中的至少一个从擦除块302的池分配到每个逻辑储存块306。例如,当正产生或重新产生逻辑储存块306时选择要分配到逻辑储存块306的擦除块302时,在将其它擦除块302分配到逻辑储存块306之前,映射模块406可以从可用擦除块302的储备池选择至少一个擦除块302来分配到逻辑储存块306中的每一个。
储备池中放置的擦除块302可以在一段时间内不被使用,因为它们未被分配到逻辑储存块306。相应地,储备池中的擦除块302可以具有不同使用特性,诸如较低寿命、较低P/E循环计数、较低失效的位计数率等。因此,将擦除块302从储备池分配到逻辑储存块306中的一个或多个—并且如果可能则将至少一个擦除块302分配到逻辑储存块306中的每一个—可以是为逻辑储存块306提供损耗均衡的一种方式。
下面是算法的伪代码的一个示例,该算法用于将擦除块302分配到逻辑储存块306以用于按裸芯、裸芯平面等的顺序用最大数目的未分配的好的擦除块302来组建均等地或实质上均等地尺寸化的逻辑储存块306。在某些实施例中,不论坏的—例如,不可使用的—擦除块302如何分散在裸芯、裸芯平面、芯片等上,下面的伪代码以及总体上的储存器管理模块150可以组建均等地尺寸化的逻辑储存块306。
在各种实施例中,下面的示例性变量和计算可以用来设定逻辑储存块306的形成:
Max_blocks_per_planeint=具有最大数目的好的擦除块302的裸芯平面。
Total_ebsint=非易失性储存器装置300中的全部裸芯上的全部擦除块302之和。
Ebs_per_superblockfloat=((float)Total_ebsint)/((float)Max_blocks_per_planeint)
Small_ebs_per_superblockint=(int)Ebs_per_superblockfloat
Remainderfloat=Ebs_per_superblockfloat–((float)Small_ebs_per_superblockint)
Num_largerint=(int)(Remainderfloat*((float)Max_blocks_per_planeint))
在一个实施例中,在逻辑储存块306的初始形成期间,Num_largerint逻辑储存块306构建为在它们中具有(Small_ebs_per_superblockint+1)目标数目的擦除块302,然后将剩余的逻辑储存块306构建为在它们中具有Small_ebs_per_superblockint目标数目的擦除块302。在一个实施例中,当对逻辑储存块306重新构建、重新配置、重新产生等时,解散的逻辑储存块306中的擦除块302的原始数目被用作要用以重新填入逻辑储存块306的擦除块302的目标数目。此外,在某些实施例中,使用储备擦除块302池来以从每个平面选择可用的最低年龄擦除块302的附加要求来重新构建逻辑储存块306。
图6绘示了将逻辑储存块动态地重新调整尺寸的方法600的一个示例。在一个实施例中,方法600开始且块模块402确定602非易失性储存器装置300的可用擦除块302的总数目。在一些实施例中,尺寸模块404作为可用擦除块302的总数目的函数而确定604来自可用擦除块302的要包含在多个逻辑储存块306中的每一个中的擦除块302的数目,使得逻辑储存块306中的每一个的擦除块302的数目彼此偏差小于25%。在其它实施例中,映射模块406将确定的数目的擦除块302分配606到为非易失性储存器装置300产生的逻辑储存块306中的每一个,并且方法600结束。
图7绘示了将逻辑储存块动态地重新调整尺寸的方法700的一个示例。在一个实施例中,方法700开始且块模块402确定702非易失性储存器装置300的可用擦除块302的总数目。在一些实施例中,尺寸模块404作为可用擦除块302的总数目的函数而确定704来自可用擦除块302的要包含在多个逻辑储存块306中的每一个中的擦除块302的数目,使得擦除块302的数目对于逻辑储存块306中的每一个彼此偏差小于25%。在其它实施例中,映射模块406将确定的数目的擦除块302分配706到为非易失性储存器装置300产生的逻辑储存块306中的每一个。
在一个实施例中,更新模块502确定708是否已经满足刷新条件,诸如一个或多个擦除块302或逻辑储存块306的编程/擦除循环计数满足阈值编程/擦除循环计数、逻辑储存块306的年龄满足阈值年龄、一个或多个擦除块302或逻辑储存块306的失效的位计数满足阈值失效的位计数等。在某些实施例中,如果更新模块502确定708尚不满足刷新条件,则更新模块502继续确定708是否已满足刷新条件。如果更新模块502确定708已经满足了刷新条件,则更新模块502解散710逻辑储存块306,并且块模块402确定702可用来重新产生逻辑储存块306的擦除块302的总数目。
图8A和图8B绘示了将逻辑储存块动态地重新调整尺寸的方法800的一个示例。在一个实施例中,方法800开始且块模块402确定802非易失性储存器装置300的可用擦除块302的总数目。在某些实施例中,储备模块504确定要包含在储备池中的擦除块302的数目,其可以选择自逻辑储存块306的重新产生期间。储备模块504,例如,可以将预定数目的擦除块302放置在储备池中,以通过防止若干擦除块302在一段时间内被使用而提供非易失性储存器装置300的损耗均衡。
在一些实施例中,尺寸模块404作为可用擦除块302的总数目的函数而确定806来自可用擦除块302的要包含在多个逻辑储存块306中的每一个中的擦除块302的数目,使得擦除块302的数目对于逻辑储存块306中的每一个彼此偏差小于25%。在其它实施例中,映射模块406将确定的数目的擦除块302分配808到为非易失性储存器装置300产生的逻辑储存块306中的每一个。
在其它实施例中,储备模块504将未被分配到逻辑储存块306的擦除块302放置810在储备池中。在一个实施例中,更新模块502确定812是否已经满足了刷新条件,诸如一个或多个擦除块302或逻辑储存块306的编程/擦除循环计数满足阈值编程/擦除循环计数、逻辑储存块306的年龄满足阈值年龄、一个或多个擦除块302或逻辑储存块306的失效的位计数满足阈值失效的位计数等。在某些实施例中,如果更新模块502确定812尚未满足刷新条件,则更新模块502继续确定812是否已经满足刷新条件。如果更新模块502确定812已经满足了刷新条件,则更新模块502解散814逻辑储存块306。
在一个实施例中,块模块402(跟着“A”到图8B)确定816非易失性储存器装置300的可用擦除块302的总数目,包含储备池中的擦除块302。在其它实施例中,尺寸模块404作为可用擦除块302的总数目和要包含在储备池中的擦除块302的数目的函数而确定818来自可用擦除块302的要包含在多个逻辑储存块306中的每一个中的擦除块302的数目,使得擦除块302的数目对于逻辑储存块306中的每一个彼此偏差小于25%。
在各种实施例中,映射模块406和/或储备模块504从储备池确定820或选择擦除块302以包含在逻辑储存块306中的每一个中,并且映射模块406作为确定的擦除块302的数目的函数而将选择的可用的和储备擦除块302分配822到包含在每个逻辑储存块306中。例如,如果要包含在每个逻辑储存块306中的擦除块302的数目是62,且储备池中存在足够的擦除块302,使得在每个逻辑储存块306中可以包含来自储备池的一个擦除块302,则映射模块406从剩余的可用擦除块302选择61个擦除块302以包含在每个逻辑储存块306中并从储备池选择一个擦除块302,使得逻辑储存块306中的擦除块302的总数目是62。储备模块504(跟着“B”到图8A)将未分配的擦除块302放置810在储备池中,并且更新模块502继续监控812刷新条件。
在各种实施例中,用于确定非易失性储存器装置300的可用擦除块302的总数目的构件可以包含块模块402、储存器管理模块150、非易失性储存器装置接口139、非易失性存储器介质控制器126、主机计算装置110、控制器(例如,裸芯控制器220、状态机222、控制器244、装置驱动器等)、处理器111、FPGA、ASIC、其它逻辑硬件和/或计算机可读储存介质上储存的其它可执行代码。其它实施例可以包含相似或等同构件,以确定非易失性储存器装置300的可用擦除块302的总数目。
在各种实施例中,用于确定来自可用擦除块302的要包含在逻辑储存块306中的擦除块302的数目使得逻辑储存块306中的每一个中的擦除块302的数目在例如25%的阈值差异内的构件可以包含,尺寸模块404、储存器管理模块150、非易失性储存器装置接口139、非易失性存储器介质控制器126、主机计算装置110、控制器(例如,裸芯控制器220、状态机222、控制器244、装置驱动器等)、处理器111、FPGA、ASIC、其它逻辑硬件和/或计算机可读储存介质上储存的其它可执行代码。其它实施例可以包含相似或等同构件,以确定来自可用擦除块302的要包含在逻辑储存块306中的擦除块302的数目,使得逻辑储存块306中的每一个中的擦除块302的数目在阈值差异内。
在各种实施例中,将确定的数目的擦除块302分配到逻辑储存块306中的每一个的构件可以包含映射模块406、储存器管理模块150、非易失性储存器装置接口139、非易失性存储器介质控制器126、主机计算装置110、控制器(例如,裸芯控制器220、状态机222、控制器244、装置驱动器等)、处理器111、FPGA、ASIC、其它逻辑硬件,和/或计算机可读储存介质上储存的其它可执行代码。其它实施例可以包含相似或等同构件,以将确定的数目的擦除块302分配到逻辑储存块306中的每一个。
本公开可以实现为其它具体形式,而不背离其精神或基本特性。所描述的实施例在全部方面中仅认为是说明性的而非限制性的。因此,本公开的范围由所附权利要求而非前述描述指示。权利要求的等同的含义和范围内的全部改变包含在它们的范围内。

Claims (20)

1.一种设备,包括:
非易失性储存器装置的控制器,所述控制器包括:
块组件,所述块组件配置为确定所述非易失性储存器装置的可用擦除块的总数目;
尺寸组件,所述尺寸组件配置为确定,作为可用擦除块的总数目的函数的要包含在多个逻辑块中的每一个中的来自所述可用擦除块的擦除块的数目,所述擦除块的数目对于所述逻辑块中的每一个彼此偏差小于预定偏差限制;以及
映射组件,所述映射组件配置为,通过将所述确定的数目的擦除块分配到所述逻辑块中的每一个而为所述非易失性储存器装置产生所述逻辑块。
2.根据权利要求1所述的设备,其中所述控制器还包括更新组件,所述更新组件配置为:
跟踪与每个逻辑块相关联的刷新条件,所述刷新条件包括所述逻辑块的擦除块的编程/擦除循环计数、所述逻辑块的年龄以及所述逻辑块的擦除块的失效的位计数中的一个或多个;并且
响应于确定以下项中的一个,解散所述逻辑块中包含的所述擦除块的逻辑分组,所述项包括:
所述编程/擦除循环计数满足预定编程/擦除循环阈值;
所述逻辑块的年龄满足所述逻辑块的年龄阈值;以及
所述擦除块的所述失效的位计数满足失效的位计数阈值。
3.根据权利要求2所述的设备,其中:
所述块组件还配置为,响应于所述更新组件解散所述旧的逻辑块,确定用于包含在新的逻辑块中的作为候选的新的可用擦除块的总数目;
所述尺寸组件还配置为,确定作为所述可用擦除块的总数目的函数的要包含在所述新的逻辑块中的每一个的来自所述可用擦除块的新的擦除块的数目,使得所述擦除块的数目对于所述新的逻辑块中的每一个偏差小于所述预定偏差限制;并且
所述映射组件还配置为,通过将所述确定的新的擦除块的数目分配到所述新的逻辑块中的每一个而产生所述新的逻辑块。
4.根据权利要求3所述的设备,其中所述尺寸组件还配置为:
确定来自所述解散的逻辑块中的每一个的仍可使用的擦除块的数目;
将来自所述解散的逻辑块中的每一个的仍可使用的擦除块的每个数目储存在队列中;并且
对于每个新的逻辑块,将所述每个新的逻辑块中要包含的擦除块的数目设定为弹出所述队列的擦除块的下一数目。
5.根据权利要求1所述的设备,其中所述控制器还包括储备组件,所述储备组件配置为产生擦除块的储备池,所述擦除块的储备池包括不被包含在逻辑块中的所述可用擦除块中的一个或多个。
6.根据权利要求5所述的设备,其中所述储备组件还配置为,当产生所述逻辑块时,在每个逻辑块中分配来自所述擦除块池的所述擦除块中的至少一个。
7.根据权利要求1所述的设备,其中所述映射组件还配置为,当产生所述逻辑块时,将所述可用擦除块中的每一个分配到逻辑块,使得不存在能够分配到逻辑块的所述可用擦除块而未分配的擦除块。
8.根据权利要求1所述的设备,其中逻辑块由擦除块的虚拟分组构成,所述映射组件还配置为保持擦除块到所述擦除块分配到的逻辑块的映射,响应于产生新的逻辑块而更新所述映射。
9.根据权利要求1所述的设备,其中所述映射组件还配置为作为所述擦除块中的每一个的年龄的函数来选择要分配到所述逻辑块的擦除块,具有较低年龄的擦除块在具有较高年龄的擦除块之前被选择分配到逻辑块。
10.根据权利要求9所述的设备,其中擦除块的所述年龄被限定为所述擦除块被激活的总时间、自所述擦除块被制造经过的时间以及所述擦除块上已经进行的编程/擦除循环的数目中的一个或多个。
11.根据权利要求9所述的设备,其中所述映射组件还配置为作为所述擦除块的年龄的函数而选择要分配到所述逻辑块的擦除块,使得所述逻辑块中包含的所述擦除块的所述平均年龄满足预定年龄阈值。
12.根据权利要求1所述的设备,其中选择所述预定偏差限制,使得每个所述逻辑块的擦除块的所述数目偏差最多一个擦除块。
13.根据权利要求1所述的设备,其中所述预定偏差限制包括百分比,使得每个所述逻辑块的擦除块的数目偏差小于百分之二十五。
14.根据权利要求1所述的设备,其中所述非易失性储存器装置包括多个裸芯,每个裸芯包括多个平面,并且每个平面包括多个擦除块,每个逻辑块包括从所述裸芯的每个平面选择的擦除块,来自所述裸芯的每个平面的所述擦除块以所述平面的顺序次序被分配到逻辑块。
15.一种设备,包括:
用于识别要分配到多个虚拟块的非易失性记录介质的擦除块池的构件,所述多个虚拟块中的每一个包括多个擦除块,所述多个擦除块逻辑地组合以形成所述非易失性记录介质的单个储存单元;
用于计算所述多个虚拟块中的每一个的尺寸的构件,所述尺寸限定要分配到所述多个虚拟块中的每一个的擦除块的数目;以及
用于将来自所述擦除块池的擦除块分配到所述虚拟块中的每一个的构件,使得在每个虚拟块之间的尺寸上的变化小于百分之二十五。
16.根据权利要求15所述的设备,还包括:
用于跟踪与每个虚拟块相关联的刷新条件的构件,所述刷新条件包括所述虚拟块的擦除块的编程/擦除循环计数、所述虚拟块的年龄以及所述虚拟块的擦除块的失效的位计数中的一个或多个;以及
用于响应于确定以下项中的一个而解散所述虚拟块中所包含的所述擦除块的逻辑分组的构件,所述项包括:
所述编程/擦除循环计数满足预定的编程/擦除循环阈值;
所述虚拟块的年龄满足所述虚拟块的年龄阈值;以及
所述擦除块的失效的位计数满足失效的位计数阈值。
17.根据权利要求16所述的设备,还包括:
用于响应于所述旧的虚拟块被解散而识别要分配到新的虚拟块的擦除块的新的池的构件;
用于计算所述新的虚拟块中的每一个的尺寸的构件;以及
用于将来自所述擦除块的新的池的擦除块分配到所述新的虚拟块中的每一个的构件,使得在每个新的虚拟块之间的尺寸上的变化小于百分之二十五。
18.根据权利要求15所述的设备,还包括用于产生擦除块的储备池的构件,所述擦除块的储备池包括未被分配到虚拟块的所述识别的擦除块中的一个或多个。
19.根据权利要求15所述的设备,还包括用于作为所述擦除块的年龄的函数而将擦除块分配到虚拟块的构件,使得分配到所述虚拟块的所述擦除块的平均年龄满足预定年龄阈值。
20.一种系统,包括:
非易失性存储器装置,所述非易失性存储器装置包括多个擦除块;以及
用于所述非易失性存储器装置的控制器,所述控制器进行操作以用于:
确定所述多个擦除块中的多少个可用于创建超级块,所述超级块包括由多个擦除块的组合构成的所述非易失性存储器装置的储存单元;
产生所述可使用擦除块到所述超级块的映射,使得被映射到所述超级块中的每一个的所述可使用擦除块的数目以小于阈值的尺寸变化;以及
在确保被映射到所述超级块中的每一个的所述可使用擦除块的数目变化小于所述阈值尺寸时,周期性地修改所述可使用擦除块到所述超级块的映射。
CN201810228384.0A 2017-06-26 2018-03-20 将逻辑储存块动态地重新调整尺寸 Active CN109117084B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/633,608 US10649661B2 (en) 2017-06-26 2017-06-26 Dynamically resizing logical storage blocks
US15/633,608 2017-06-26

Publications (2)

Publication Number Publication Date
CN109117084A true CN109117084A (zh) 2019-01-01
CN109117084B CN109117084B (zh) 2021-07-16

Family

ID=64568042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810228384.0A Active CN109117084B (zh) 2017-06-26 2018-03-20 将逻辑储存块动态地重新调整尺寸

Country Status (3)

Country Link
US (1) US10649661B2 (zh)
CN (1) CN109117084B (zh)
DE (1) DE102018105854A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414312A (zh) * 2019-01-07 2020-07-14 爱思开海力士有限公司 数据存储装置及其操作方法
CN112148627A (zh) * 2019-06-28 2020-12-29 西部数据技术公司 针对分区命名空间的分区形成
CN116185282A (zh) * 2022-12-20 2023-05-30 珠海妙存科技有限公司 一种闪存虚拟块的分段擦除方法及系统

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10929286B2 (en) * 2018-06-29 2021-02-23 Seagate Technology Llc Arbitrated management of a shared non-volatile memory resource
WO2020039927A1 (ja) * 2018-08-21 2020-02-27 ソニー株式会社 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
KR20200066882A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11112979B2 (en) * 2019-07-26 2021-09-07 Micron Technology, Inc. Runtime memory allocation to avoid and delay defect effects in memory sub-systems
CN112748860B (zh) * 2019-10-30 2024-04-12 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
KR20210083914A (ko) * 2019-12-27 2021-07-07 에스케이하이닉스 주식회사 메모리 시스템에서의 쓰기 레이턴시 관리 방법 및 장치
US11467980B2 (en) * 2020-01-10 2022-10-11 Micron Technology, Inc. Performing a media management operation based on a sequence identifier for a block
US11287989B2 (en) * 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US11640259B2 (en) 2020-05-21 2023-05-02 Western Digital Technologies, Inc. Use of surplus erase block pairs in super block formation
KR20220165074A (ko) * 2021-06-07 2022-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20220413761A1 (en) * 2021-06-25 2022-12-29 Western Digital Technologies, Inc. Data Retention-Specific Refresh Read
US20230061800A1 (en) * 2021-09-01 2023-03-02 Micron Technology, Inc. Dynamic superblock construction
US11687263B2 (en) * 2021-12-01 2023-06-27 Western Digital Technologies, Inc. Full die recovery in ZNS SSD

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017556A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US20140164730A1 (en) * 2012-12-10 2014-06-12 Infinidat Ltd. System and methods for managing storage space allocation
US20150067415A1 (en) * 2013-09-05 2015-03-05 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
CN105027090A (zh) * 2012-10-05 2015-11-04 西部数据技术公司 用于固态驱动器中的物理到逻辑映射的方法、设备和系统
CN105760113A (zh) * 2016-02-04 2016-07-13 西安科技大学 基于nand闪存的高速存储设备及文件管理方法
CN106170773A (zh) * 2014-01-09 2016-11-30 桑迪士克科技有限责任公司 用于裸芯上缓冲式非易失性存储器的选择性回拷
CN106469019A (zh) * 2015-08-18 2017-03-01 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器储存装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
TW200743113A (en) * 2006-05-08 2007-11-16 Apacer Technology Inc Dynamic management method of portable data storage device
US20100017557A1 (en) * 2006-07-26 2010-01-21 Panasonic Corporation Memory controller, nonvolatile memory device,access device, and nonvolatile memory system
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
TWI409819B (zh) * 2009-03-03 2013-09-21 Silicon Motion Inc 平均地使用一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
JP2011070346A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US8713066B1 (en) * 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8832507B2 (en) 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9195584B2 (en) * 2012-12-10 2015-11-24 Sandisk Technologies Inc. Dynamic block linking with individually configured plane parameters
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
US20150074333A1 (en) * 2013-09-06 2015-03-12 Kabushiki Kaisha Toshiba Memory controller and memory system
KR102291507B1 (ko) * 2014-05-20 2021-08-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법
US9632712B2 (en) * 2014-07-02 2017-04-25 Sandisk Technologies Llc System and method of updating metablocks associated with multiple memory dies
KR102258126B1 (ko) * 2015-03-19 2021-05-28 삼성전자주식회사 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
KR20180026876A (ko) * 2016-09-05 2018-03-14 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102645572B1 (ko) * 2016-11-29 2024-03-11 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017556A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
CN105027090A (zh) * 2012-10-05 2015-11-04 西部数据技术公司 用于固态驱动器中的物理到逻辑映射的方法、设备和系统
US20140164730A1 (en) * 2012-12-10 2014-06-12 Infinidat Ltd. System and methods for managing storage space allocation
US20150067415A1 (en) * 2013-09-05 2015-03-05 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
CN106170773A (zh) * 2014-01-09 2016-11-30 桑迪士克科技有限责任公司 用于裸芯上缓冲式非易失性存储器的选择性回拷
CN106469019A (zh) * 2015-08-18 2017-03-01 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器储存装置
CN105760113A (zh) * 2016-02-04 2016-07-13 西安科技大学 基于nand闪存的高速存储设备及文件管理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414312A (zh) * 2019-01-07 2020-07-14 爱思开海力士有限公司 数据存储装置及其操作方法
CN111414312B (zh) * 2019-01-07 2023-03-14 爱思开海力士有限公司 数据存储装置及其操作方法
CN112148627A (zh) * 2019-06-28 2020-12-29 西部数据技术公司 针对分区命名空间的分区形成
CN116185282A (zh) * 2022-12-20 2023-05-30 珠海妙存科技有限公司 一种闪存虚拟块的分段擦除方法及系统
CN116185282B (zh) * 2022-12-20 2023-10-13 珠海妙存科技有限公司 一种闪存虚拟块的分段擦除方法及系统

Also Published As

Publication number Publication date
US20180373438A1 (en) 2018-12-27
US10649661B2 (en) 2020-05-12
DE102018105854A1 (de) 2018-12-27
CN109117084B (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
CN109117084A (zh) 将逻辑储存块动态地重新调整尺寸
US10649657B2 (en) Log-based storage for different data types in non-volatile memory
US9921956B2 (en) System and method for tracking block level mapping overhead in a non-volatile memory
US10268396B2 (en) Systems and methods for managing storage endurance
US10019352B2 (en) Systems and methods for adaptive reserve storage
US10073630B2 (en) Systems and methods for log coordination
US10102144B2 (en) Systems, methods and interfaces for data virtualization
US20220244869A1 (en) File system storage allocation based on zones of a memory device
US10338817B2 (en) Systems and methods for storage recovery
US20140281307A1 (en) Handling snapshot information for a storage device
KR102087495B1 (ko) 저장 파라미터 변경
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
KR20120030137A (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
WO2012050934A2 (en) Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
US11409467B2 (en) Memory system and method of controlling nonvolatile memory and for reducing a buffer size
JP2021033849A (ja) メモリシステムおよび制御方法
CN110088738A (zh) 存储操作队列
US20240069739A1 (en) Effective storage allocation for sequentially-written memory devices
US20230197186A1 (en) Preserving blocks experiencing program failure in memory devices
US10698621B2 (en) Block reuse for memory operations
CN110688056A (zh) Nvm组的存储介质替换
US11829646B2 (en) Memory device performance based on storage traffic pattern detection
TW202246988A (zh) 用於記憶體分配的系統、方法及設備
No et al. HFM: Hybrid File Mapping Algorithm for SSD Space Utilization

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