CN104731523A - 非易失性分级存储***中的协同管理的方法及其控制器 - Google Patents
非易失性分级存储***中的协同管理的方法及其控制器 Download PDFInfo
- Publication number
- CN104731523A CN104731523A CN201410686220.4A CN201410686220A CN104731523A CN 104731523 A CN104731523 A CN 104731523A CN 201410686220 A CN201410686220 A CN 201410686220A CN 104731523 A CN104731523 A CN 104731523A
- Authority
- CN
- China
- Prior art keywords
- controller
- health
- data
- storage unit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
在至少一个实施例中,多个控制器实施非易失性分级存储***的协同管理。在存储***中,第一控制器从至少第二和第三控制器接收关于在第二和第三控制器的控制下的物理存储装置的多个存储单元的健康状况的健康报告,并维护健康报告中接收的信息的健康数据库。响应于健康事件并基于健康数据库中的信息,第一控制器修改在其控制下的多个存储单元中的一个或多个的逻辑至物理地址映射,使得具有较大访问热度的数据被映射至相对较健康的存储单元,以及具有较小访问热度的数据被映射至相对较不健康的存储单元。此后,第一控制器根据经修改的逻辑至物理地址映射,将写入请求引导至在其控制下的存储单元。
Description
技术领域
本公开涉及数据处理和存储,并且更具体地涉及存储***中的协同健康(health)管理。
背景技术
闪存是作为晶体管的浮动栅极上的电荷的每个存储元件存储数据的一个或更多比特的非易失性存储器技术。因为闪存中元件密度以及每个元件存储的比特数目在后续几代快闪技术中继续增加,所以存储元件中存储的数据将变得更易受到由读取干扰、电荷俘获、高环境温度、长存储持续时间和其它因素引起的比特错误影响。因此,即使在数据的存储密度和每单位成本不断提高时,闪存额定的读取/写入周期的数目也普遍地不断下降。
为了从给定闪存获得最长使用寿命,已经提出了各种技术。一般而言,已经假设通过所谓的“耗损均衡(wear leveling)”获得最长使用寿命,其中“耗损均衡”被定义为均衡闪存阵列中的所有物理存储器块中的编程/擦除周期的数目。如这里进一步讨论的,本公开意识到仅仅依赖于损耗均衡未实现最佳存储器寿命。
发明内容
本公开认识到,在编程/擦除(P/E)周期的数目可以被认为是确定非易失性存储器阵列中的哪些物理存储器块要被选择用于编程时的一个因素的同时,当考虑诸如错误指标(metrics)(例如,错误率和错误率的变化率)的其它“健康”因素时,实现更长的有用存储器寿命。
在至少一个实施例中,多个控制器实施非易失性分级存储***的协同管理。在存储***中,第一控制器从至少第二和第三控制器接收关于在第二和第三控制器的控制下的物理存储装置的多个存储单元的健康状况的健康报告,并维护健康报告中接收的信息的健康数据库。响应于健康事件并基于健康数据库中的信息,第一控制器修改在其控制下的多个存储单元中的一个或多个的逻辑至物理地址映射,使得具有较大访问热度的数据被映射至相对较健康的存储单元,以及具有较小访问热度的数据被映射至相对较不健康的存储单元。此后,第一控制器根据经修改的逻辑至物理地址映射,将写入请求引导(direct)至在其控制下的存储单元。
附图说明
图1是根据一个实施例的数据处理环境的高级框图;
图2-5图示了根据本公开的NAND闪存阵列内的物理存储器的示例性布置;
图6A描绘了根据本公开的块条(stripe)的示例性实施方式;
图6B描绘了根据本公开的页条的示例性实施方式;
图7图示了根据本公开的示例性数据页;
图8描绘了根据本公开的示例性数据保护页;
图9是根据一个实施例的、快闪控制器配置健康等级和热度面元(heatbin)的示例性处理的高级逻辑流程图;
图10A是根据一个实施例的、快闪控制器将健康等级与物理存储器块关联的示例性处理的高级逻辑流程图;
图10B是根据一个实施例的、快闪控制器将具有给定健康等级的物理存储器块放置到ABQ中的示例性处理的高级逻辑流程图;
图11是数据页被写入至非易失性存储器阵列的数据写入处理的示例性实施例的高级逻辑流程图;
图12是从非易失性存储器阵列读取数据的数据读取处理的示例性实施例的高级逻辑流程图;
图13是图示由健康等级划分实现的非易失性存储器***的使用寿命的延长的图;
图14描绘了包括多个控制点的分级存储***的示例性实施例;
图15图示了具有在其之下的至少一级控制的控制器维护关联的健康数据库的一个优选实施例;
图16是在存储***中维护健康数据库的方法的示例性实施例的高级逻辑流程图;
图17是存储***中的协同健康管理的方法的示例性实施例的高级逻辑流程图;
图18是云计算节点的示例的示意图;
图19描绘了说明性云计算环境;
图20示出了由图19的云计算环境提供的功能抽象层集。
具体实施方式
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令的制造品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
现在参考附图并且具体参考图1,图示了包括具有如这里进一步描述的非易失性存储器阵列的数据存储***的示例性数据处理环境100的高级框图。如所示的,数据处理环境100包括至少一个处理器***102,其具有处理指令和数据的一个或多个处理器104。处理器***102可以额外地包括本地存储装置106(例如,动态随机存取存储器(DRAM)或盘),其可以存储由处理器104执行的处理的程序代码、操作数和/或执行结果。在各个实施例中,处理器***102可以是例如移动计算设备(诸如智能电话或平板电脑)、膝上型或桌上型个人计算机***、服务器计算机***(诸如可从国际商业机器公司获得的POWER系列之一)、或大型计算机***。处理器***102还可以是使用诸如ARM、PowerPC、Intel X86或任何其它与存储器高速缓存、存储器控制器、本地存储装置、I/O总线集线器等结合的处理器的各种处理器的嵌入式处理器***。
处理器***102还包括输入/输出(I/O)适配器108,其经由I/O信道110直接(即,没有任何介入设备)或间接(即,通过至少一个中间设备)耦接至数据存储***120。在各个实施例中,I/O信道可以采用已知或未来开发的通信协议中的任何一个或组合,所述通信协议例如包括光纤信道(FC)、以太网FC(FCoE)、因特网小型计算机***接口(iSCSI)、传输控制协议/因特网协议(TCP/IP)、高速***组件互连(PCIe)等。经由I/O信道110传递的I/O操作(IOP)包括处理器***102从数据存储***120请求数据的读取IOP、以及处理器***102请求数据在数据存储***120中的存储的写入IOP。
在所图示的实施例中,数据存储***120包括接口122,通过接口122,数据存储***120经由I/O信道110接收IOP 102并对其做出反应。接口122耦接至具有关联的快闪控制器存储器126(例如,动态随机存取存储器(DRAM))的快闪控制器124(例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))。快闪控制器124还耦接至具有关联的CPU存储器130(例如,DRAM)的CPU 128,并且还耦接至诸如NAND闪存阵列140的非易失性存储器阵列。在利用FPGA实施快闪控制器124的实施例中,CPU 128可以在数据存储***120的启动期间编程并配置快闪控制器124。在启动之后,在一般操作中,快闪控制器124经由I/O信道110和接口122接收读取和写入IOP,以读取存储在NAND闪存阵列140中的数据和/或将数据存储在NAND闪存阵列140中。快闪控制器124例如通过访问NAND闪存阵列140以从NAND闪存阵列140读取所请求的数据或将所请求的数据写入NAND闪存阵列140、或者通过访问与NAND闪存阵列140关联的存储器高速缓存(未图示),来服务这些IOP。
快闪控制器124实施提供逻辑至物理地址转换的快闪转换层(FTL),以使得能够访问NAND闪存阵列140内的特定存储器位置。一般而言,由快闪控制器124从诸如处理器***102的主机设备接收的IOP包含数据要被访问(读取或写入)所在的逻辑块地址(LBA)、以及要被存储至数据存储***120的写入数据(在写入IOP的情况下)。IOP还可以指定要被访问的数据的量(或尺寸)。也可以根据数据存储***120所支持的协议和特征而传递其它信息。如本领域技术人员已知的,诸如NAND闪存阵列140中采用的NAND闪存的NAND闪存被其构造所限制,使得将可通过读取或写入IOP访问的数据的最小颗粒固定在单个闪存页的尺寸,例如16千字节(kB)。由主机设备提供的LBA因此对应于逻辑地址空间内的页。快闪转换层将此LBA转换为被分配至NAND闪存阵列140中的对应物理位置的物理地址。快闪控制器124可以执行地址转换和/或在诸如转换表(TT)150的逻辑至物理转换数据结构中存储逻辑与物理地址之间的映射,所述转换表(TT)150可以方便地存储在快闪控制器存储器126中。
如图1中进一步所示的,快闪控制器124可以维护一个或多个额外的数据结构,以追踪关于NAND闪存阵列140的信息,也可以在快闪控制器存储器126中缓冲该数据结构。例如,这些数据结构可以包括:擦除块列表(EBL)152,其识别NAND闪存阵列140中的已经被擦除的物理存储器块;一个或多个可用块队列(ABQ)154,其识别NAND闪存阵列140中可用于编程的物理存储器块;以及一个或多个块条队列(BSQ)160,其包括保持具有适合于垃圾收集的写入数据的块的块条的一个或多个占用块条队列(OBSQ)161、识别被选择用于垃圾收集的块条的再定位(relocation)块条队列(RBSQ)162、以及用于当前没有被分配数据块的块条的自由块条队列(FBSQ)163。在优选实施例中,对于每个物理存储器块,所述一个或多个ABQ 154识别该块的健康等级,其中“健康”或“健康等级”在这里被定义为该块在退出使用之前的剩余寿命的估计。因此,“较健康”的块被定义为具有相对较长的估计的剩余寿命的块,而“较不健康”的块被定义为具有相对较短的剩余寿命的块。例如,在一个可能实施方式中,定义范围从最不健康到最健康的四个健康等级,并且在四个ABQ 154中的相应一个上放置每个健康等级的块。在另一实施方式中,仅使用单个ABQ 154,并且ABQ 154中的每个条目包括编码关联的物理存储器块的健康状况的健康等级字段。
快闪控制器存储器126中的数据结构还可以包括一个或多个热度面元列表(HBL)156,其指明观察的由数据存储***120服务的每个LBA的访问频率(这里定义为“热度”)。在各个实施例中,热度可以表示仅仅写入访问、或者写入和读取访问两者的频率。热度面元的数目可以但不需要等于健康等级的数据。在一个可能实施方式中,定义范围从最冷(即,最不频繁地被访问)到最热(即,最频繁地被访问)的四个热度面元,并且每个热度的块或块条通过被放置在四个HBL 156中相应一个上而被识别。在另一个实施方式中,仅仅使用单个统一的HBL 156,并且HBL 156中的每个条目包括热度字段,其编码每个物理存储器块或块条落入其中的热度面元。在又一实施方式中,HBL 156包括两个列表,第一个列表追踪对于每个LBA或LBA范围的访问频率,并且第二个列表维护编码每个块或块条的热度面元的热度字段。
快闪控制器存储器126中的数据结构还可以包括错误指标158,其表示NAND闪存阵列140中每个物理存储器区域(例如,块或页)的一个或多个错误指标。例如,错误指标158可以包括每页和/或每块比特错误计数、比特错误率、和/或比特错误率的变化率(即,比特错误率的导数)。另外,错误指标158可以包括对于每个块的最差和/或平均每页比特错误计数、比特错误率和/或比特错误率导数。在一个可能实施方式中,仅将所有块的健康分布存储在错误指标中。然后,此分布被用于借助于根据健康分布的固定百分比将块分类为给定健康等级之一的自适应阈值集,将健康等级分配给块。例如,最健康的20%的块将被分类为等级A,接下来的20%将被分类为等级B,以此类推。
如本领域技术人员将理解的,在各个实施例中,快闪控制器124可以在常见的数据结构中结合快闪控制器存储器126中描绘的数据结构的一个或多个,并且/或者实施额外的数据结构以管理NAND闪存阵列140。
NAND闪存阵列140可以在各个实施例中采取许多形式。现在参考图2-5,描绘了根据本公开的NAND闪存阵列140内的物理存储器的一个示例性布置。
如图2中所示,NAND闪存阵列140可以由三十二(32)个可单独寻址的NAND闪存存储设备形成。在所图示的示例中,闪存存储设备M0a-M15b的每个采取板载闪存模块的形式,例如,单级元件(SLC)、多级元件(MLC)、三级元件(TLC)、或四级元件(QLC)NAND闪存模块。将三十二个NAND闪存模块布置在两个(M0a,M0b)至(M15a,M15b)的十六个组中。为了物理寻址方案的目的,两个模块的每组形成“通道(lane)”,有时也称为“信道(channel)”,使得NAND闪存阵列140包括十六条信道或通道(通道0-通道15)。
在优选实施例中,各个通道中的每个具有将其耦接至快闪控制器124的相应关联的总线。因此,通过将其通信引导至特定通信总线之一,快闪控制器124可以将其通信引导至存储器模块的通道之一。因为用于给定通道的每个通信总线独立于用于其它通道的通信总线,所以快闪控制器124可以同时通过各条通信总线发布(issue)命令以及发送或接收数据,从而使得快闪控制器124能够同时、或几乎同时地访问对应于各个通道的存储器模块。
现在参考图3,图示了可以被用于实施图2的闪存模块M0a-M15b中的任何一个的闪存模块300的示例性实施例。如图3中所示,由闪存模块300提供的物理存储位置被进一步细分为可以通过芯片使能(enable)(CE)寻址和/或识别的物理位置。在图3的示例中,每个闪存芯片300的物理存储器被分为四个芯片使能(CE0、CE1、CE2和CE3),其各自具有由快闪控制器124维护(assert)以使能对或从对应CE内的物理存储器位置的访问的相应CE线。每个CE继而被细分为多个模具(die)(例如,模具0和模具1),其各自具有两个平面(例如,平面0和平面1)。每个平面表示块的集合(下面描述),所述块由于闪存芯片的物理布局而彼此物理地关联,并且利用用于执行诸如读取和写入操作的各个操作的公共电路(例如,I/O缓冲器)。
如进一步在图4-5中所示的,可被用于实施图3的闪存模块300内的任何平面的示例性平面400包括例如2048个物理存储器块。一般而言,块500是通常以物理方式彼此关联的物理页的集合。此关联是这样的:块被定义为NAND闪存阵列140内可以被擦除的物理存储位置的最小粒度。在图5的实施例中,每个块500包括例如256个物理页,其中物理页被定义为用于读取和写入访问的可单独寻址的最小数据单位。在示例性***中,数据的每个物理页具有用于针对下面更详细描述的元数据的数据存储加上额外存储的共同容量(例如,16kB)。因此,在逐页的基础上将数据写入至NAND闪存阵列140中或从NAND闪存阵列140读取数据,但是在逐块的基础上擦除数据。如图5中进一步示出的,每个块500优选地包括页状态信息502,其将该块500中每个物理页的状态指示为停止工作的(retired)(即,退出使用)或未停止工作的(即,起作用的或仍在使用中)。在各个实施方式中,PSI 502可以被收集到块500内的单个数据结构(例如,向量或表)中,被分布在块500内(例如,作为附加至每个物理页的元数据的一个或多个比特),或者被维护在数据存储***120中的其它地方(例如,在快闪控制器存储器126中的数据结构中)。
如上所述,数据存储***120一般不允许外部设备直接寻址和/或访问NAND闪存阵列140内的物理存储器位置。而是,数据存储***120一般被配置为向外部设备呈现(present)单个连续逻辑地址空间,因此在准许快闪控制器124和CPU 128控制与各个LBA关联的数据实际上驻留在包括NAND闪存阵列140的物理存储器位置中的哪里的同时,允许主机设备从逻辑地址空间内的LBA读取数据和向逻辑地址空间内的LBA写入数据。以此方式,可以智能地管理和优化NAND闪存阵列140的性能和寿命。
当发生对数据存储***120的写入时,快闪控制器124和CPU 128将必须使存储在NAND闪存阵列140中的擦除块之一的物理页之一中的数据无效。然后,新数据将与被写入的数据合并,并且最终被存储在NAND闪存阵列140中的不同位置中。于是可见,将使页或页的部分无效,因此NAND闪存阵列140的部分变为未使用。快闪控制器124和CPU 128将最终需要通过称为垃圾收集的处理来收回(reclaim)此空间。将基于例如包括块的健康状况和擦除块内的多少数据无效的多个因素选择特定擦除块或由擦除块组成的块条。快闪控制器124在EBL 152中记录擦除的块的物理块地址(PBA)。随着从主机到从一个或多个ABQ 154分派(allocate)的块中的新写入,将读取并写入有效数据。
因为由数据存储***120实施的快闪转换层将使得对于主机设备可用的逻辑地址空间、与NAND闪存阵列140内的物理存储器隔离,所以NAND闪存阵列140的尺寸不需要等于向主机设备呈现的逻辑地址空间的尺寸。在大多数实施例中,呈现小于总的可用物理存储器的逻辑地址空间(即,过度供应(over-provision)NAND闪存阵列140)是有益的。即使存在如上所述的特定量的无效数据,以此方式的过度供应确保物理存储器资源在逻辑地址空间被完全利用时也可用。即使存在存储器故障和通过使用诸如纠错码(ECC)、循环冗余校验(CRC)和奇偶校验的数据保护方案而引起的存储器开销,除了还未被收回的无效数据之外,过度供应的空间也还可以用于确保存在足够的逻辑空间。
在一些实施例中,一次一个物理页地将数据写入至NAND闪存阵列140。在期望更稳健的错误恢复的其它实施例中,将数据写入至这里称为“页条”的NAND闪存阵列140的关联的物理页组。在优选实施例中,页条的所有页与不同通道关联,以实现高写入带宽。因为在多个实施方式中,最小擦除单位是块,所以将页条分组为块条,如在图6A中所示,其中块条中的每个块与不同通道关联。当构建块条时,可以选择来自通道的ABQ的任何自由块,但是优选地,所有块应当具有相同或类似的健康等级。注意,块选择可以进一步限制于从相同平面、模具和/或芯片使能。一旦来自每个通道的块已经被挑选,页条就优选地由来自块条中的所有块的具有相同页编号的页形成。虽然存储到NAND闪存阵列140中的各个页条的长度可以并且优选地确实变化,但是在一个实施例中,每个页条包括二至十五个数据页的写入数据(通常由主机设备提供)、以及用于存储用于写入数据的数据保护信息的一个额外的页(“数据保护页”)。例如,图6B图示了包括N个数据页(即,D页00至D页N-1)和一个数据保护页(即,P页N)的示例性页条610。所图示的数据保护页的添加需要同时为相同块条的所有页条执行垃圾收集。在块条的垃圾收集完成之后,可以将块条解散(dissolve),并且可以将每个块放置到如下说明的EBL或ABQ中。
图7图示了图6的页条610内的每个数据页的示例性格式。在此示例中,每个数据页700包括16kB的数据字段702、以及用于描述数据页的元数据的额外字段。在所图示的示例中,这些元数据字段包括包含数据页700中存储的LBA的LBA字段704、包含为数据字段702和LBA字段704的组合计算的CRC值的CRC字段706、以及包含在所图示的示例中从数据字段702、LBA字段704和CRC字段706的内容的组合计算的ECC值的ECC字段708。
图8描绘了图6的页条610的数据保护页的示例性格式。在所描绘的示例中,数据保护页800包括数据XOR(异或)字段802,其包含页条610中的数据页700的数据字段702的内容的逐比特异或(XOR)。数据保护页800还包括LBA XOR字段804,其包含页条610中的数据页700的LBA字段704的逐比特XOR。数据保护页800最后包括CRC字段806和ECC字段808,用于分别存储用于数据保护页800的CRC值和ECC值。这样的保护方案通常称为RAID 5,因为奇偶校验字段将不总是位于一个特定快闪平面上。然而,应理解,可以替代地或额外地使用诸如Reed-Solomon的替代数据保护方案。
上述用于数据页和数据保护页的格式使用多个不同保护机制保护存储在页条中的数据。首先,每个数据页中ECC比特的使用允许校正快闪页内的一些比特错误。根据使用的ECC方法,可以校正NAND快闪页内的数百比特、或者甚至数千比特。在执行了ECC校验和校正之后,经校正的CRC字段用于验证(validate)经校正的数据。一起使用时,这两个机制允许仅使用本地内页信息校正相对温和的错误以及检测更严重的错误。如果无法校正的错误例如由于用于存储数据页的物理页的故障而发生在数据页中,则可以从针对该数据条的其它数据页和数据保护页重构故障数据页的数据字段和LBA字段的内容。
虽然NAND闪存阵列140内存储页条的数据页和数据保护页的物理存储器位置将变化,但是在一个实施例中,优选地将构成给定页条的数据页和数据保护页存储在被选择用于优化数据存储***120的整体操作的物理存储器位置中。例如,在一些实施例中,存储构成页条的数据页和数据保护页以使得采用不同的物理通道来存储数据页和数据保护页的每个。这样的实施例支持对页条的高效访问,因为快闪控制器124可以同时或几乎同时地访问构成页条的所有数据页。应注意,页对通道的分配不需要按顺序(即,可以以任意顺序将数据页存储在任意通道中),并且,除非页条是全长页条(例如,包含十五个数据页和一个数据保护页),否则用于存储页条的通道不需要相邻。
已经描述了数据存储***120的一个示例性实施例的一般物理结构,现在描述数据存储***120的特定操作方面,包括涉及用于编程、写入(编程)NAND闪存阵列140的页、以及从NAND闪存阵列140读取数据的块的分派的方面。
现在参考图9,图示了根据一个实施例的、配置健康等级和热度面元的示例性处理的高级逻辑流程图。例如可以在数据存储***120的启动时以硬件、固件、软件或其组合的方式由快闪控制器124和/或CPU 128执行该方法。为了说明的简便,此后将假设由快闪控制器124执行该处理。如同这里呈现的其它逻辑流程图,以逻辑顺序、而非严格的时间顺序给出操作,并且,在一些实施例中,可以以与所呈现的顺序不同的顺序、或者并发地执行操作。
图9的配置处理在块900开始,然后前进至块902,其图示了快闪控制器124为NAND闪存阵列140中的物理存储器块配置期望数目的健康等级。在各个实施例中,健康等级的数目可以不同,但是在实验方面,已经发现在两个与八个之间(包含两个和八个在内)的健康等级的数目是有效的。例如,在一个实施例中,快闪控制器124在块902配置四个健康等级。如上所述,这里采用的健康等级被具体定义为基于除了编程/擦除周期的数目之外的一个或多个标准,例如,用于每个物理存储器块(和/或每个块内的物理页)的一个或多个错误指标。
在块904,快闪控制器124另外配置用于NAND闪存阵列140所服务的LBA的期望数目的热度面元。在各个实施例中,热度面元的数目可以不同,但是在实验方面,已经发现在两个与八个之间(包含两个和八个在内)的热度面元的数目是有效的。例如,在一个实施例中,快闪控制器124在块904配置四个热度面元。如上所述,热度面元的数目可以但不需要等于健康等级的数目。
在块906,快闪控制器124建立在块904配置的热度面元与在块902配置的健康等级之间的映射。在一个特别优选的实施例中,热度和健康状况直接相关,并且最热的LBA被映射至最健康的等级,而最冷的LBA被映射至较不健康的等级。当然,在其它实施例中,可以采用在访问热度与健康等级之间的其它映射。例如,在采用数字热度和健康等级的一个实施例中,由被选择以从彼此映射的健康等级和访问热度得到大约恒定的结果的数学函数(例如,C≈f(热度,健康状况))确定在块906建立的映射。在另一实施例中,从热度到健康等级的映射将每个热度面元映射到健康等级的经排序的优先级列表。在从ABQ中的块构建块条时,在具有给定健康等级的优选ABQ中也许没有块。经排序的优先级列表于是允许分配来自具有与优选的ABQ尽可能靠近的健康等级的另一ABQ的块。在块906之后,图9中给出的配置处理在块908结束。
现在参考图10A,描绘了根据一个实施例的、快闪控制器将健康等级与物理存储器块关联的示例性处理的高级逻辑流程图。可以在后台中、和/或在空闲时间期间,例如以几十或数百个全物理设备写入的规则周期(period)、或规则时间间隔(例如一个或多个星期)、或其组合,执行此处理。图10A的处理在块1000开始,然后前进至块1002,其描绘了快闪控制器124选择BSQ 160上的第一块条,如上所述,BSQ 160可以包括保持NAND闪存阵列140中已经被快闪控制器124写入的物理存储器块的块条的列表、或当前未被分配块的空块条的列表。接下来,在块1004,快闪控制器124确定所选择的保持具有写入数据的物理存储器块的块条是否仍在使用中。在块条在使用中的情况下,在块1006选择块条的第一块。否则,处理在块1018继续选择下个块条。
在块1008,快闪控制器124确定所选择的物理存储器块的健康等级。在各个实施例中,快闪控制器124从可以在此步骤中确定的一个或多个标准(例如,错误指标158中的一个或多个)确定健康等级。健康等级还可以考虑编程/擦除周期的数目,但是健康等级不仅仅基于编程/擦除周期的数目,因为在实验方面已经发现该指标与物理存储器块的实际寿命具有较弱的相关性,因此该指标不决定块的“健康状况”。在块1014,快闪控制器124确定在块条中是否存在更多块。响应于在块1014确定该块条包含一个或多个额外的块,在块1012从该块条选择下个块,并且快闪控制器124继续在块1008的处理。响应于确定当前块是该块条中的最后的块,快闪控制器124确定是否存在更多块条待处理。响应于在该块确定存在更多仍然待处理的块,快闪控制器124在块1018选择下个块条,并继续在块1004的处理。否则,图10A的处理在块1020结束。
现在参考图10B,描述了根据一个实施例的、快闪控制器将具有给定健康等级的物理存储器块放置到ABQ中的示例性处理的高级逻辑流程图。图10B的处理在块1050开始,然后前进至块1052,其描绘了快闪控制器124选择EBL 152上的下个块,如上所述,EBL 152是NAND闪存阵列140中的已经被快闪控制器124擦除(例如,作为垃圾收集处理的一部分)的物理存储器块的列表。接下来,在块1054,快闪控制器124确定所选择的物理存储器块是否准备好被分派用于对写入数据编程。在至少一些实施例中,在块1004描绘的确定可以包括确定是否已经满足所推荐的用于所选择的物理存储器块的停留(dwell)时间。处理在块1054反复(iterate),直到确定所选择的块准备好被分派用于对写入数据编程为止。在块1056,快闪控制器124确定所选择的物理存储器块的健康等级。在一个实施例中,已经通过图10A中描述的处理在后台中分配了健康等级。在其它实施例中,快闪控制器124从例如错误指标158中的一个或多个的一个或多个标准确定在此点的健康等级。健康等级还可以考虑编程/擦除周期的数目,但是健康等级不仅仅基于编程/擦除周期的数目,因为在实验方面已经发现该指标与物理存储器块的实际寿命具有较弱的相关性,因此该指标不决定块的“健康状况”。
如在块1058所示,快闪控制器124然后将所选择的块放置在适当的ABQ154中,并且,例如通过将所选择的块放置在排他地用于追踪具有所确定的健康等级的可用块的ABQ 154中、或者替代地通过编码用于在由多个(或所有)健康等级的块共享的共同的ABQ 154中的所选择的块的条目中的健康等级,将在块1056确定的健康等级与所选择的块关联。一旦被放置在ABQ 154中,所选择的块就可用于快闪控制器124分派用于对写入数据编程。在块1058之后,图10B的处理在块1060结束。
现在参考图11,图示了数据页被写入至非易失性存储器阵列中的数据写入处理的示例性实施例的高级逻辑流程图。例如可以以硬件、固件、软件或其组合的方式由快闪控制器124和/或CPU 128执行该方法。为了说明的简便,此后将假设由快闪控制器124执行该处理。
该方法在块1100开始,然后前进至块1102,其图示了快闪控制器124接收写入请求,例如,来自诸如处理器***102的主机设备的写入IOP、或通过垃圾收集或错误恢复处理生成的写入请求,其中通过所述错误恢复处理,原来驻留在NAND闪存阵列140内的其它地方的数据要被移动至NAND闪存阵列140内的不同位置。例如,写入请求包括要被写入至NAND闪存阵列140的写入数据以及与写入数据关联的目标LBA。响应于接收到写入请求,该处理从块1102前进至块1104-1106,其图示了快闪控制器124确定(例如,参考逻辑至物理地址转换表150)写入请求中指示的目标LBA当前是否被映射至物理存储器页,并且,如果是这样的话,则将当前与目标LBA关联的每个数据页的状态改变为指示其不再有效。如本领域中所知的,被无效的页(以及包含它们的块)最终将被擦除,并通过快闪控制器124的垃圾收集处理再次使得它们可用于分派以存储数据。
在块1108,快闪控制器124分派一个或多个物理页以存储写入数据。在一些商业实施例中,可以仅分派一个页。在此情况下,快闪控制器124优选地基于可用于分派的块的健康状况、由HBL 156指示的目标LBA的访问热度、以及在图9的块906建立的在热度面元与健康等级之间的映射,分派来自从ABQ 154之一获取的块的页。在其它实施例中,分派形成页条的多个页以存储写入数据,如上面参考图6B所述的。在后一情况下,假设保持页条的块条已经被CPU 128分派,并且被使得可用于快闪控制器124。CPU 128已经基于可用于分派的块的健康状况、以及已经被分配至该块条并且最终也被分配至其页条的目标访问热度,使用来自一个或多个ABQ 154的块而构建了该块条。块1108因此分派来自使用在图9的块906建立的在热度面元与健康等级之间的优选映射而最佳地匹配由HBL 156指示的目标LBA的访问热度的页条的物理页。因为CPU 128提前确保存在用于所有热度面元的块条,所以该映射对应于优选映射。然而,在CPU 128从ABQ 154中的块构建块条时,或许还不存在具有优选映射的可用块。在此情况下,CPU 128从其它ABQ 154的根据在图9的块906定义的函数密切追踪该映射的块构建该块条。此方法的优点是具有类似热度的数据页被写入至同一块条中,因此很有可能在未来大致同时被无效,这减少了在垃圾收集时必须被再定位的仍然有效的页的数目。结果,更频繁地使用从更健康的块构建的块条,因为它们将保持比其它块条更热的数据。这最终导致所有块的更恒定的健康分布,因此显著提高了整体耐用性。
在块1110,快闪控制器124开始将写入数据存储至所分派的页。在所描绘的实施例中,快闪控制器124将数据写入至页条中,并且在块1110将写入数据的第一数据页编程至分派至该页条的第一物理页。在块1114,快闪控制器124另外确定用于该页的元数据,并将元数据存储在包含该页的存储器块中,或者在页本身中、或者在存储器块中的其它地方(例如,作为PSI 502的一部分)。例如,如在块1114具体指示的,元数据可以包括用于该数据页的CRC和ECC,快闪控制器124可以将它们存储在该数据页的CRC字段706和ECC字段708中。在块1115,快闪控制器124还计算该数据页的奇偶校验信息。
在块1116,快闪控制器124确定是否全部写入数据已经被写入至NAND闪存阵列140中。如果快闪控制器124确定少于全部的写入数据已经被写入至NAND闪存阵列140中,则该处理返回至已经描述的块1110。响应于确定全部写入数据已经被存储在NAND闪存阵列140中(以及确定对于该页条中的全部数据页的奇偶校验计算完成),快闪控制器124将用于该页条的奇偶校验信息存储在该页条的数据保护页中(块1118)。快闪控制器124还更新逻辑至物理地址转换表以将用于存储写入数据的物理页与由主机设备指示的LBA关联(块1120)。此后,图11的处理在块1122结束。
应注意,至少块1108、1110和1114将包括检查物理页的编程是否正确完成的步骤。如果快闪控制器124确定该写入未正确完成,那么快闪控制器124将采用各种恢复技术,诸如,结束该页条、包括奇偶校验、以及在新的位置中重新构建该页条。如果该写入不成功,那么快闪控制器124还可以使物理页停止工作,对于该物理页,当读取不成功时,该写入以相同方式出故障(如在下面讨论的)。
现在参考图12,描绘了从诸如NAND闪存阵列140的非易失性存储器阵列读取数据的数据读取处理的示例性实施例的高级逻辑流程图。例如可以以硬件、固件、软件或其组合的方式由快闪控制器124和/或CPU 128执行该方法。为了说明简便,此后将假设由快闪控制器124执行该处理。
图12的处理响应于由快闪控制器124接收到读取请求而在块1200开始,然后前进至块1202。在块1202,快闪控制器124确定该读取请求是从诸如处理器***102的外部主机设备接收的读取IOP、还是快闪控制器124的后台读取处理的读取请求。当快闪控制器124不是完全忙于服务处理器***102的读取和写入IOP时,快闪控制器124可以采用这样的后台读取处理,例如用于检测并校正错误、确定块健康信息、或确定最优读取参数。例如,后台读取处理可以顺序地读取NAND闪存阵列140中的存储有效或无效的数据页的物理存储器页。
如果快闪控制器124在块1204确定读取请求源自后台读取处理,则该处理从块1202转至下面描述的块1206。然而,如果快闪控制器124在块1202确定读取请求是外部主机设备的读取IOP,则快闪控制器124转换由读取IOP指定的LBA(例如,参考快闪控制器存储器126中的逻辑至物理地址转换表(TT)150),以确定存储所请求的数据页的物理页的物理地址(块1204)。一旦确定该物理地址,快闪控制器124就通过向NAND闪存阵列140发布从与该物理地址关联的物理页读取目标数据页的读取请求,利用该物理地址访问目标数据页(块1206)。该读取请求可以请求各种尺寸的数据,但是,为了简便,假设为该读取请求所引用的每个数据页运用一次图12的处理。
在块1210,快闪控制器124计算用于该数据页的ECC并将所计算的ECC与ECC字段708的ECC内容相比较,以确定该数据页是否包含数据错误。这样的数据错误可能由于任意数目的问题,包括物理设备的氧化层中被俘获的电荷、或已经从浮动栅极泄漏的电荷。这些错误可能在本质上是永久性的,使得该元件不再能够正确地存储并读取数据,或者该错误可能由于与数据保留(retention)或由相邻元件的写入或读取造成的电噪声有关的问题。当该元件被擦除、然后被重新写入时,后一类型的错误将不存在。真正的软件错误基本上是随机的,并且通常不唯一地与NAND闪存阵列140的任何具体物理页、块或其它物理区域关联。另一方面,硬(hard)错误是由物理故障导致的数据的一个或多个比特的恶化(corruption)。硬错误可以由各种因素导致,所述因素包括但不限于:给定存储器芯片内的一个或多个组件的物理故障(诸如电荷泵的故障)、整个存储器芯片或该芯片的外部支持结构的物理故障(例如,至该芯片的电力线或地址线的损坏(break))、由于环境因素(例如,过高的温度、磁场、湿度等)导致的芯片的全部或部分的物理故障。一般而言,因为硬错误产生于存储器***的物理结构,所以硬错误唯一地与存储器芯片的特定集合、特定存储器芯片、或芯片内的特定物理区域(诸如,CE、平面、块或页)关联。
响应于在块1210确定数据页不包含数据错误,处理前进至下面描述的块1230。然而,响应于在块1210确定数据页包含一个或多个数据错误,快闪控制器124对于存储目标数据页的物理页和/或块将错误指标158更新为所发现的错误(块1211)。注意,此更新处理对于后台读取和主机读取可能不同,即,错误指标158在一个或其它情况下可能被完全或部分地更新、被聚集(aggregate)、或完全不被更新。另外,如果可能(例如,如果在码字内存在50个错误比特,并且ECC能够校正码字内的多于50个错误比特),快闪控制器124则利用ECC校正数据页中的数据错误,如在块1212所示。在块1214,快闪控制器124确定是否已经利用ECC校正了所检测的数据错误。如果是这样的话,处理就从块1214通过页连接器A前进至下面描述的块1230。另一方面,如果快闪控制器124在块1214确定数据错误不可校正,则快闪控制器124进一步在块1215确定存储发生错误的数据页的物理页是否应停止工作。例如,可以基于该物理页的可以根据该物理页中新检测的错误而在块1215重新计算的健康等级或错误指标158,做出在块1215描绘的确定。响应于在块1215确定该物理页应当停止工作,处理前进至下面描述的块1216。另一方面,如果快闪控制器124确定该物理页不应停止工作,则处理转到块1217,其图示了快闪控制器124记录不可校正的错误在物理页中发生。此后,处理转至下面描述的块1232。
在块1216,快闪控制器124例如在包含存储目标数据页的物理页的块的PSI 502中仅将该物理页标记为停止工作(即,不再可用于分派以存储新页条的数据页)。因此,与在逐块的基础上使NAND闪存中的物理存储器停止工作的现有技术***相反,数据存储***120可以优选地响应于检测到单个数据错误而在逐页的基础上使NAND闪存阵列140中的物理存储器停止工作。如将理解的,物理存储器的物理页(例如,16kB)而非块(例如,4MB)的停止工作节约物理存储器资源,从而提升性能并延长了NAND闪存阵列140的寿命。然而,作为页停止工作的结果,NAND闪存***140的物理存储器块的有效尺寸将变化。
在执行停止工作之前,此示例性实施方式等待,直到物理页具有一个或多个包含不可校正的错误的码字为止。然而,特定实施方式可以选择在不可校正之前的某点使页停止工作。例如,如果实施方式在大约1024字节上使用BCH ECC,并且可以校正50个错误比特,则快闪控制器124可以在不可校正的比特的数目达到小于50(比方说,48)的数目时决定使页停止工作。另外,本领域技术人员还将知道,根据所使用的快闪技术,快闪控制器124可以在使页停止工作之前选择执行在块1212-1214的额外步骤。例如,快闪制造商可以要求快闪控制器124为该页或块改变特定参数并执行对该页的重新读取。如果该数据仍然不可校正,那么快闪控制器124将遵循从块1214的否定路径。这样,块1212-1214可以包含许多这里描述的额外步骤用于确定该页确实不可使用。
在块1218,快闪控制器124还参考PSI 502而确定包含在块1216停止工作的页的物理存储器区域中的停止工作的物理存储器页的数目现在是否满足(例如,大于和/或等于)阈值T1。第一阈值T1所针对的物理存储器区域例如可以是块、平面、模具、CE或整个快闪模块。响应于快闪控制器124在块1218确定阈值T1不被满足,处理转至块1232。然而,响应于快闪控制器124在块1218确定阈值T1被满足,快闪控制器124将包含停止工作的物理页的整个物理存储器区域标记为停止工作、因此不可用于分派以存储新页条(块1220)。如果在块1218-1220确定停止工作的物理存储器区域是比整个闪存模块小的区域,则快闪控制器124可以可选地确定是否使包含停止工作的物理页的更大物理存储器区域停止工作。还可以确定现在在NAND闪存***120内存在太多停止工作的存储器资源以不能实现所需性能水平,并且快闪控制器124可以向用户发送指示现在是时候更换包含NAND闪存***140的物理资源的响应。该处理然后前进至块1232。
在块1230,快闪控制器124试图通过计算循环冗余码并将所计算的CRC与CRC字段706中包含的CRC相比较来验证目标数据页的数据字段702和LBA字段704。响应于数据页的成功验证,该处理前进至下面描述的块1234。然而,响应于在块1230的CRC验证的失败、或结合在块1217、1218和/或1220描述的处理,快闪控制器124读取整个页条并从该页条的其它数据页和数据保护页恢复目标数据页的正确内容(块1232)。另外,快闪控制器124将页条(包括恢复的目标数据页)移动至NAND闪存***120中的不同物理位置,并使形成旧页条的物理页无效(如果这样的页并非停止工作)。该处理从块1230或块1232前进至块1234,其图示了如果由读取IOP触发该读取,则快闪控制器124将目标数据页传送至请求的主机设备。此后,图12的处理在块1240结束。
如上所述,图12中展示的操作顺序是示例性的,并且预见到操作顺序不同于以上所述的顺序的实施例。例如,预见到如下这样的实施例:快闪控制器124在完成CRC验证之前将数据页传送至主机设备,并且此后传送数据页是否有效的指示。而且,在一些实施例中,读取IOP可以访问多个数据页、而非单个数据页。
图13图示了使用健康等级划分的非易失性存储器阵列的使用寿命的延长。在图13中,X轴表示NAND闪存阵列中的物理存储器块的编程/擦除周期的平均数目,而Y轴表示已经被快闪控制器停止工作的物理存储器页的百分比。
如图13中由曲线1300所指示的,闪存阵列通常具有停止工作的页的固定阈值百分比,在其之上,闪存阵列的性能下降至更换闪存阵列的点。在图13中给出的示例中,此阈值百分比被设置在大约物理存储器页的总数目的2.5%;在其它实施例中,例如基于闪存阵列的过度供应量和性能需求等,该阈值百分比可以更高或更低。
在图13中,曲线1302表示在采用一种类型的传统耗损均衡的情况下(也就是,在快闪控制器使每个块的编程/擦除周期的数目大致相等(即,采用随机分布)的情况下)、NAND闪存阵列中停止工作的页的百分比。仅对于一个特定说明性NAND闪存阵列而通过举例提供以下数据;对于其它NAND闪存阵列和其它NVRAM的结果可以基于广泛的因素而变化。如所示的,当采用一种类型的传统耗损均衡时,停止工作的页的数目在平均大约7000个编程/擦除周期跨过由曲线1300指示的阈值(致使NAND闪存阵列不可用)。在闪存控制器改为如这里所述地基于健康等级和访问热度来分派用于编程的页的情况下,如由曲线1304指示的,同一NAND闪存阵列的使用寿命可以被延长至平均超过10000个编程/擦除周期(多于50%的增加量)。在给出的具体示例中,快闪控制器采用在每个物理存储器块中的任意页的最大(最差)残余比特错误率(RBER)上唯一确定的四个健康等级。闪存使用相对较热的地址被映射至较健康的块并且相对较冷的地址被映射至较不健康的块的直接相关性,将落在四个热度面元内的LBA映射至这四个健康等级。
到此为止,已经参考例如由图1的快闪控制器124提供控制的存储***而描述了实施例。然而,这里公开的创新也适用于具有多个控制点的存储***。在这样的情况下,分布在存储***内的各个控制点可以协同以更好地管理存储***的整体健康状况,如这里在下面进一步描述的。
现在参考图14,描绘了包括多个控制点的分级存储***的示例性实施例。在各个实施例中,可以在包括客户端-服务器、对等等的公知或未来开发的架构的任何一个或组合中涉及控制点(在这里其每个一般称为“控制器”)。
在图14中给出的具体示例中,存储***1400包括一个或多个存储***接口1402,其如同图1的接口122那样提供用于一个或多个处理***的接口。存储***接口1402耦接至一个或多个架子1404,其各自具有一个或多个存储抽屉1406。每个抽屉1406包括一个或多个节点控制器1408(例如,RAID控制器),其各自控制一个或多个存储节点1410的操作。每个节点1410继而可以包括一个或多个控制器(例如,快闪控制器1412),其各自控制多个非易失性存储器芯片(例如,快闪芯片1414)、磁盘、光盘或其它存储设备。应理解,存储***1400中的物理存储介质可以是同质或异质的(包括不同类型的闪存(例如,SLC、cMLC、eMLC、TLC、QLC等))。
如在图14中进一步指示的,可以通过通信地耦接至存储***接口1402的本地或远程管理控制台1420(例如,执行管理且监视软件的计算平台)管理存储***1400。通过管理控制台1420,可以查看与存储***1400有关的状态信息和警报的展示。
在示例性存储***1400中,在包括快闪控制器1412和节点控制器1408的多个位置实施控制。可以在管理控制台1420、在架子1404、和/或抽屉1406可选地实施额外的控制层。如上所述,可以利用在存储层级结构(hierarchy)的上层的控制器引导在存储层级结构的下层的控制器的操作的客户端-服务器布置来实施控制。替代地或另外地,可以利用在存储层级结构的公共层的控制器是协同实施所选择的控制方法的对等点(peer)的对等布置来实施控制。
如图15中所示,在一个优选实施例中,存储***1400内的具有在其之下的至少一级控制的控制器1500(这里称为“上级控制器”)优选地维护关联的健康数据库1502。健康数据库1502优选地维护关于在存储层级结构的同一层或下一层的存储单元的概括的健康信息,从而向控制器1500提供关于在存储***1400中的同一级或控制器1500之下的存储单元(例如,架子、抽屉、节点等)的健康等级的分布的信息。上级控制器1500可以另外维持逻辑至物理(LTP)地址映射表1504,通过该逻辑至物理(LTP)地址映射表1504,上级控制器1500引导至在其控制下的特定存储单元的读取和写入请求。因此,一些实施例可以具有仅在最低级(例如,在快闪控制器1412)的LTP地址映射,而其它实施例可以在存储***1400的一个或多个更高级执行LTP地址映射(和垃圾收集)。
现在参考图16,描绘了在存储***中维护诸如健康数据库1502的健康数据库的方法的示例性实施例的高级逻辑流程图。图16的处理在块1600开始,然后前进至块1602,其描绘了上级控制器1500等待从下级控制器接收健康报告。可以例如按照周期性时间安排和/或响应于诸如在更低级控制器的控制下的存储单元的故障或停止工作的事件,由更低级控制器生成健康报告。健康报告优选地为关于对更低级控制器可见的存储单元的健康相关信息的概括的报告或摘要。例如,健康报告可以包括由更低级控制器控制的存储单元的类型(闪存、磁盘等)以及容量、存储单元的任何故障和/或停止工作、平均和/或最差情况的写入放大、平均数据热度(用于写入)、平均和/或最差情况的过度供应的百分比、平均和/或最差情况的健康等级、平均和/或最差情况的原始比特错误率,等等。响应于接收到健康报告,控制器1500相应地更新其健康数据库1502,如在块1604所示。另外,如在块1606描绘的,控制器1500可以确定并记录对于在其控制下的每个存储单元的健康等级、和/或在其控制下的多个存储单元的全部的总的(aggregate)健康等级。如在块1608所示的,控制器1500可以继而可选地生成健康报告并将该健康报告传送至另一上级控制器1500,诸如更高级控制器或对等控制器。在块1608传送的健康报告可以包括个体(individual)健康指标(例如,针对最差情况的存储单元的个体健康报告),并且优选地包括针对在存储层级结构中的较低层的两个或更多个存储单元的一个或多个合并的健康指标(例如,均值、中值、中数、标准方差等)。在块1608之后,图16的处理在块1610结束。
现在参考图17,图示了诸如存储***1400的存储***中的协同健康管理的方法的示例性实施例的高级逻辑流程图。例如,可以由存储***1400内的上级控制器1500执行所图示的处理。
该处理在块1700开始,然后前进至块1702,其图示了上级控制器1500确定是否已经触发了健康事件。例如,可以通过周期性计数器达到预定计数值、通过一个或多个健康指标满足关联的健康阈值、和/或通过对健康数据库1502的更新,来触发健康事件。作为一个示例,可以响应于使得健康数据库1502中追踪的指标的一个或多个(或组合)满足预定上阈值或下阈值的控制器1500的健康数据库1502的更新,在块1702触发健康事件。
在所描绘的实施例中,处理在块1702反复,直到确定已经触发了健康事件为止。响应于已经触发了健康事件的确定,该处理根据所触发的健康事件以及上级控制器1500的当前配置,前进至块1704、1706和1708中的一个或多个(例如,顺序地或并行地)。
在块1704,上级控制器1500确定是否将新写入操作重新引导至在其控制下的一个或多个不同存储单元。如上所述,存储设备的使用寿命、以及特别是诸如快闪芯片的非易失性存储器存储设备的使用寿命一般可以通过将较热的数据引导至较健康的存储单元并将较冷的数据引导至较不健康的存储单元而被延长。因此,为了增加在其控制下的存储单元的使用寿命,上级控制器1500可以如在块1720所示修改LTP地址映射表1504中包含的逻辑至物理地址映射,以将较热数据的较大部分引导至较健康的存储单元并且将较冷数据的较大部分引导至较不健康的存储单元。如将理解的,在一些情况下,在块1720所示的逻辑至物理地址映射的修改还可能需要上级控制器1500再定位由上级控制器1500控制的存储单元内存储的现有数据、或者使该数据无效。在块1720之后、或者响应于在块1704确定不重新引导写入,该处理前进至块1730并结束。
在块1706,上级控制器1500确定是否将现有数据从在其控制下的一个或多个存储单元再定位至其或对等控制器控制的另一存储单元。响应于在块1706确定再定位现有数据,上级控制器1500基于在其控制下的存储单元的健康状况引导现有数据的再定位,如在块1722所示。例如,上级控制器1500可以将相对较热的数据(即,较频繁被更新的数据)从一个或多个较不健康的存储单元(例如,架子、抽屉或节点)再定位至一个或多个较健康的存储单元(例如,架子、抽屉或节点)。同样地,上级控制器1500可以将相对较冷的数据(即,较不频繁被更新的数据)从一个或多个较健康的存储单元再定位至一个或多个较不健康的存储单元。如将理解的,如在块1722所示的数据的再定位一般需要上级控制器1500也修改LTP地址映射表1504中的逻辑至物理地址映射,如在块1720所示。响应于在块1706的否定确定、或在块1720之后,图17的处理在块1730结束。
在块1708,上级控制器1500确定是否期望存储***1400的存储容量增加。例如,上级控制器1500可以确定将期望添加一个或多个额外的存储的节点、抽屉或架子以保护(preserve)过度供应的阈值百分比、阈值写入放大、和/或剩余P/E周期的阈值数目。同样地,上级控制器1500可以确定期望鉴于其现有的存储单元集合的健康等级、平均比特错误率、和/或估计的剩余使用寿命,添加一个或多个额外的存储单元以延长现有存储单元的寿命。响应于在1708确定期望增加存储容量,上级控制器1500使得(例如,向管理控制台1420、向管理电子邮件,等等)呈现警报,其指示需要在存储***1400内安装额外的存储容量(包括更换已经故障或已经停止工作的现场可更换存储单元)。在优选实施例中,警报还指示推荐的待安装的存储产品(包括具体存储容量),并且可以进一步包括嵌入式超文本连接或其它可选择的元素,其使得管理员能够授权所推荐的(或不同的)存储产品的购买和安装。在块1724之后、或响应于在块1708的否定确定,该处理在块1730结束。
对于包括闪存的存储***来说,在块1720、1722和1724所示的操作的一个结果是可以有利地增加过度供应。因为过度供应与写入放大具有非线性关系,所以,即使过度供应的少量增加也会大大减低写入放大,并延迟磨损导致的故障,尤其是在已经较不健康的存储单元中。
在图16-17中描绘的处理的实施方式的一个示例中,例如在架子1404或管理控制台1420中实施的***控制器可以利用从在其控制下的每个抽屉1406接收的健康报告,来计算应当被发布至每个抽屉1406的额外写入操作的最大数目、以及应当利用的抽屉1406的最大存储容量。这些运算可以考虑物理存储介质的类型、阵列的所检测的健康状况、抽屉1406的总存储容量、抽屉1406中的过渡供应的剩余量、和/或与性能有关的其它因素。根据前述讨论应理解,优选地,***控制器并非通过简单地从P/E周期的制造商指定的额定数目中减去P/E周期的平均数目来计算每个抽屉1406的额外写入周期的最大数目。而是,额外写入的最大数目的计算优选地考虑存储单元的相对健康状况、以及如何将写入操作从较健康的存储单元展开(spread)到较不健康的存储单元。例如,***控制器可以确定快闪SSD的特定RAID阵列正在以比平均数(average population)小10%的比率经历可校正错误,因此可以确定该特定RAID阵列比制造商额定(rating)指示的具有更多的剩余写入周期。一旦计算了,写入操作的最大数目和应当使用的最大存储容量然后将在***控制器引导些写入操作并做出迁移决定以提高性能和耐用性时指导***控制器。应理解,在将针对较热数据的写入操作引导至较健康的存储单元(例如,剩余较多写入周期和/或包含更多耐用的闪存的存储单元)的同时,***控制器可以通过将频繁读取(但不频繁写入)的数据放置到相对不健康的抽屉1406,对于读取操作而选用不对称策略。此外,应理解,可以由制造商、服务提供商或管理员配置和/或更新由***控制器实施的管理策略,以实现在性能和耐用性之间的预定平衡。例如,即使作为结果而必须抑制写入操作,该策略也可以寻求实现对于各个存储单元(例如,架子、抽屉、节点)指定的寿命。
当参考上文时,本领域技术人员将理解,这里所述的存储***的元件(包括存储元件和/或控制元件)可以是协同定位的、或分布式的。分布式实施例包括分布式信息技术(IT)环境,其在本领域中通常称为“云”计算环境。应理解,虽然此公开包括对云计算的详细描述,但是这里所述的教示的实施方式不限于云计算环境。相反,可以结合现在已知或以后开发的任何其它类型的计算环境而实施本发明的实施例。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云***通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作***、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作***或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作***和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作***、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图18,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机***/服务器12,其可与众多其它通用或专用计算***环境或配置一起操作。众所周知,适于与计算机***/服务器12一起操作的计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***﹑大型计算机***和包括上述任意***的分布式云计算技术环境,等等。
计算机***/服务器12可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机***/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
如图18所示,云计算节点10中的计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是能够被计算机***/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机***/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
现在参考图19,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机***54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图18显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图20,其中显示了云计算环境50(图19)提供的一组功能抽象层。首先应当理解,图20所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图20所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机,例如***;基于RISC(精简指令集计算机)体系结构的服务器,例如***;***;IBM***;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM应用服务器软件;数据库软件,例如IBM数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作***,以及虚拟客户端。
在一个示例中,管理层64可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和***。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和***管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层66提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及移动桌面。
通过举例而非限制,可以在层60-64的任何一个中执行这里所述的存储***中的协同健康管理的技术。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
如已经描述的,在至少一个实施例中,非易失性存储器阵列的控制器为存储器阵列中的多个物理存储器区域的每个确定多个健康等级之中的关联的健康等级并记录该关联的健康等级。控制器还建立在访问热度与多个健康等级之间的映射。响应于写入请求指定地址,控制器基于该地址的访问热度和映射,从可用物理存储器区域的池中选择一物理存储器区域来服务该写入请求,并且将该写入请求所指定的数据写入至所选择的物理存储器区域。
在至少一个实施例中,多个控制器实施非易失性分级存储***的协同管理。在存储***中,第一控制器从至少第二和第三控制器接收关于在第二和第三控制器的控制下的物理存储装置的多个存储单元的健康状况的健康报告,并维护健康报告中接收的信息的健康数据库。响应于健康事件并基于健康数据库中的信息,第一控制器修改在其控制下的多个存储单元中的一个或多个的逻辑至物理地址映射,使得具有较大访问热度的数据被映射至相对较健康的存储单元,以及具有较小访问热度的数据被映射至相对较不健康的存储单元。此后,第一控制器根据经修改的逻辑至物理地址映射,将写入请求引导至在其控制下的存储单元。
虽然已经如参考一个或多个优选实施例而描述的特别示出了本发明,但是本领域技术人员将理解,可以在不违背本发明的精神和范围的情况下在其中做出形式和细节的各种变化。例如,虽然已经关于包括指引特定功能的快闪控制器的数据存储***而描述了各方面,但是应理解,本发明可以替代地被实施为包括存储程序代码的存储设备的程序产品,可以由处理器处理所述程序代码以执行这样的功能或使得这样的功能被执行。如这里采用的,“存储设备”具体被定义为仅包括法定制品以及不包括瞬时传播介质本身。
另外,虽然已经描述了包括NAND闪存的使用的实施例,但是应理解,这里的本发明不限于使用NAND闪存,而是适用于任何其它非易失性随机存取存储器(NVRAM)技术。例如,所公开的技术可以应用于相变存储器(PCM)、磁阻RAM(MRAM)和电阻RAM。
上述附图和以下所写的具体结构和功能的描述并非被呈现以限制本申请所发明的范围、或所附权利要求书的范围。而是,附图和所写描述被提供以教示本领域技术人员做出并使用寻求专利保护的本发明。本领域技术人员将理解,为了清楚和理解的原因,并未描述或示出本发明的商业实施例的全部特征。本领域技术人员还将理解,包括本发明的方面的实际商业实施例的开发将需要大量实施方式特定的决定,以实现开发者对该商业实施例的最终目标。这样的实施方式特定的决定可以包括、且同样不限于符合***相关的、业务相关的、政府相关的和其它限制,其可能由于具体实施方式、位置且随时间而改变。虽然开发者的努力在绝对意义上可能是复杂且耗时的,但是这样的努力是受益于本公开的技术人员承担的惯例。必须理解,这里公开和教示的本发明易受大量和各种修改以及替代形式影响。最后,诸如但不限于“一个”的单数术语的使用不意图限制项的数目。
Claims (14)
1.一种包括多个控制器的非易失性分级存储***中的协同管理的方法,包括:
第一控制器从所述存储***的至少第二和第三控制器接收关于在第二和第三控制器的控制下的物理存储装置的多个存储单元的健康状况的健康报告;
所述第一控制器维护所述健康报告中接收的信息的健康数据库;
响应于健康事件并基于所述健康数据库中的信息,所述第一控制器修改在其控制下的多个存储单元中的一个或多个的逻辑至物理地址映射,使得具有较大访问热度的数据被映射至相对较健康的存储单元,以及具有较小访问热度的数据被映射至相对较不健康的存储单元;以及
此后,所述第一控制器根据经修改的逻辑至物理地址映射,将写入请求引导至在其控制下的存储单元。
2.如权利要求1所述的方法,还包括:
响应于所述健康事件,所述第一控制器将在其控制下的所述多个存储单元的至少一个中存储的数据再定位至所述存储***中的另一存储单元。
3.如权利要求1所述的方法,还包括:
响应于所述健康事件,所述第一控制器使得呈现推荐向所述存储***添加存储单元的警报。
4.如权利要求1所述的方法,还包括:基于所述多个存储单元的每个的至少一个错误指标,为所述多个存储单元的每个确定关联的健康等级。
5.如权利要求1所述的方法,还包括:
所述第一控制器基于所述健康报告中接收的信息,确定在其控制下的多个存储单元的合并的健康等级;以及
所述第一控制器将关于在其控制下的多个存储单元的健康报告提供至所述存储***中的至少一个其它控制器。
6.如权利要求1所述的方法,其中第一和第二控制器是对等控制器。
7.一种用于非易失性分级存储***的第一控制器,其中:
所述第一控制器被配置为使得所述第一控制器从所述存储***的至少第二和第三控制器接收关于在第二和第三控制器的控制下的物理存储装置的多个存储单元的健康状况的健康报告,并维护所述健康报告中接收的信息的健康数据库,其中,响应于健康事件并基于所述健康数据库中的信息,所述第一控制器修改在其控制下的多个存储单元中的一个或多个的逻辑至物理地址映射,使得具有较大访问热度的数据被映射至相对较健康的存储单元、以及具有较小访问热度的数据被映射至相对较不健康的存储单元,并且此后根据经修改的逻辑至物理地址映射,将写入请求引导至在其控制下的存储单元。
8.如权利要求7所述的第一控制器,其中,所述第一控制器还被配置为使得响应于所述健康事件,所述第一控制器将在其控制下的所述多个存储单元的至少一个中存储的数据再定位至所述存储***中的另一存储单元。
9.如权利要求7所述的第一控制器,其中,所述第一控制器还被配置为使得响应于所述健康事件,所述第一控制器使得呈现推荐向所述存储***添加存储单元的警报。
10.如权利要求7所述的第一控制器,其中,所述第一控制器还被配置为使得所述第一控制器基于所述多个存储单元的每个的至少一个错误指标,为所述多个存储单元的每个确定关联的健康等级。
11.如权利要求7所述的第一控制器,其中,所述第一控制器还被配置为使得所述第一控制器基于所述健康报告中接收的信息,确定在其控制下的多个存储单元的合并的健康等级,并将关于在其控制下的多个存储单元的健康报告提供至所述存储***中的至少一个其它控制器。
12.如权利要求7所述的第一控制器,其中所述第一控制器是所述第二控制器的对等控制器。
13.一种存储***,包括:
如权利要求7所述的第一控制器;
通信地耦接至所述第一控制器的第二和第三控制器;以及
由所述第一、第二和第三控制器控制的多个存储单元,其中所述存储单元中的至少一些被分级地布置。
14.如权利要求7所述的第一控制器,其中所述第一控制器包括独立盘冗余阵列(RAID)控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/139,957 | 2013-12-24 | ||
US14/139,957 US9619381B2 (en) | 2013-12-24 | 2013-12-24 | Collaborative health management in a storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731523A true CN104731523A (zh) | 2015-06-24 |
CN104731523B CN104731523B (zh) | 2018-04-10 |
Family
ID=53400175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410686220.4A Active CN104731523B (zh) | 2013-12-24 | 2014-11-25 | 非易失性分级存储***中的协同管理的方法及其控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9619381B2 (zh) |
CN (1) | CN104731523B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528437A (zh) * | 2015-09-11 | 2017-03-22 | 慧荣科技股份有限公司 | 数据储存***与其相关方法 |
CN106708435A (zh) * | 2016-12-14 | 2017-05-24 | 北京小米移动软件有限公司 | 数据处理方法及装置 |
CN106909316A (zh) * | 2015-12-23 | 2017-06-30 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN107203341A (zh) * | 2017-05-23 | 2017-09-26 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
CN107220185A (zh) * | 2017-05-23 | 2017-09-29 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
CN107787570A (zh) * | 2015-06-26 | 2018-03-09 | 微软技术许可有限责任公司 | 轻量传送协议 |
CN108139980A (zh) * | 2015-10-19 | 2018-06-08 | 瑞典爱立信有限公司 | 用于合并存储器页的方法和存储器合并功能 |
CN108287794A (zh) * | 2018-01-26 | 2018-07-17 | 国科美国研究实验室 | Nand闪存的动态管理方法 |
CN108595125A (zh) * | 2018-04-27 | 2018-09-28 | 江苏华存电子科技有限公司 | 一种纠正闪存写入错误处理方法 |
CN108899059A (zh) * | 2018-07-25 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种固态硬盘的检测方法和设备 |
TWI644250B (zh) * | 2017-03-07 | 2018-12-11 | 慧榮科技股份有限公司 | 電子系統及其資料維護方法 |
US10296231B2 (en) | 2017-03-07 | 2019-05-21 | Silicon Motion, Inc. | Data-storage device and data maintenance method thereof |
CN110109915A (zh) * | 2018-01-18 | 2019-08-09 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN111290704A (zh) * | 2018-12-06 | 2020-06-16 | 爱思开海力士有限公司 | 用于控制储存在存储***中的数据的装置和方法 |
CN112199044A (zh) * | 2020-10-10 | 2021-01-08 | 中国人民大学 | 面向多租户的ftl设置方法、***、计算机程序及存储介质 |
CN112214161A (zh) * | 2019-07-09 | 2021-01-12 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN112346658A (zh) * | 2019-08-07 | 2021-02-09 | 国际商业机器公司 | 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 |
CN113419679A (zh) * | 2021-06-18 | 2021-09-21 | Oppo广东移动通信有限公司 | 存储装置、***级芯片、电子设备及存储方法 |
US11204705B2 (en) | 2019-03-05 | 2021-12-21 | Western Digital Technologies, Inc. | Retention-aware data tiering algorithm for hybrid storage arrays |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630585B1 (en) * | 2016-08-25 | 2023-04-18 | Pure Storage, Inc. | Processing evacuation events in a storage array that includes a plurality of storage devices |
KR20150121560A (ko) * | 2014-04-21 | 2015-10-29 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법 |
US9317211B2 (en) * | 2014-05-02 | 2016-04-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method of life management for low endurance SSD NAND devices used as secondary cache |
US9531610B2 (en) * | 2014-05-09 | 2016-12-27 | Lyve Minds, Inc. | Computation of storage network robustness |
US9082512B1 (en) * | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9626289B2 (en) * | 2014-08-28 | 2017-04-18 | Sandisk Technologies Llc | Metalblock relinking to physical blocks of semiconductor memory in adaptive wear leveling based on health |
US9513822B2 (en) * | 2014-09-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Unmap storage space |
US20160141029A1 (en) * | 2014-11-19 | 2016-05-19 | Sandisk Technologies Inc. | Health data associated with a resistance-based memory |
TWI550625B (zh) * | 2015-05-26 | 2016-09-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US9851926B2 (en) * | 2015-06-02 | 2017-12-26 | Quantum Corporation | Log structured block device for hard disk drive |
US10191802B2 (en) * | 2015-09-04 | 2019-01-29 | Oracle International Corporation | Extract-transform-load diagnostics |
US10423362B2 (en) * | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Utilizing multiple dispersal algorithms to encode data for storage in a dispersed storage network |
US9569306B1 (en) | 2015-12-18 | 2017-02-14 | International Business Machines Corporation | Recovery of multi-page failures in non-volatile memory system |
US10439881B2 (en) | 2016-05-24 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for predicting storage distance |
US10437486B2 (en) | 2016-05-24 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for tenant-aware storage sharing platform |
US11194517B2 (en) | 2016-05-24 | 2021-12-07 | Samsung Electronics Co., Ltd. | Method and apparatus for storage device latency/bandwidth self monitoring |
US10474374B2 (en) | 2016-05-24 | 2019-11-12 | Samsung Electronics Co., Ltd. | Method and apparatus for storage device latency/bandwidth self monitoring |
US11960348B2 (en) * | 2016-09-07 | 2024-04-16 | Pure Storage, Inc. | Cloud-based monitoring of hardware components in a fleet of storage systems |
CN107025066A (zh) | 2016-09-14 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 在基于闪存的存储介质中写入存储数据的方法和装置 |
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10552288B2 (en) * | 2016-12-12 | 2020-02-04 | International Business Machines Corporation | Health-aware garbage collection in a memory system |
US10254981B2 (en) * | 2016-12-12 | 2019-04-09 | International Business Machines Corporation | Adaptive health grading for a non-volatile memory |
US10353620B2 (en) | 2017-11-30 | 2019-07-16 | International Business Machines Corporation | Lifecycle management of memory devices |
US11662910B2 (en) * | 2018-02-02 | 2023-05-30 | International Business Machines Corporation | Workload and interface cognizant heat-tiered storage |
US11132133B2 (en) | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
US10599343B2 (en) * | 2018-04-06 | 2020-03-24 | Oracle International Corporation | Proactively resilvering a striped disk array in advance of a predicted disk drive failure |
CN110471788B (zh) * | 2018-05-08 | 2024-03-15 | 美光科技公司 | 异步功率损耗影响的数据结构 |
US11016693B2 (en) * | 2018-06-21 | 2021-05-25 | International Business Machines Corporation | Block health estimation for wear leveling in non-volatile memories |
US11042432B1 (en) | 2019-12-20 | 2021-06-22 | Western Digital Technologies, Inc. | Data storage device with dynamic stripe length manager |
CN111177075B (zh) * | 2019-12-26 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种垃圾数据的识别方法、***、电子设备及存储介质 |
JP2021125147A (ja) * | 2020-02-07 | 2021-08-30 | 株式会社日立製作所 | ストレージ装置およびストレージ装置のデータ処理方法 |
US11354190B2 (en) * | 2020-08-13 | 2022-06-07 | Western Digital Technologies, Inc. | Using over provisioning space for selectively storing block parity |
US11967391B2 (en) * | 2021-08-06 | 2024-04-23 | SK Hynix Inc. | System and method for testing multicore SSD firmware based on preconditions generation |
US11860733B2 (en) * | 2021-12-08 | 2024-01-02 | Western Digital Technologies, Inc. | Memory matched low density parity check coding schemes |
US11853607B2 (en) | 2021-12-22 | 2023-12-26 | Western Digital Technologies, Inc. | Optimizing flash memory utilization for NVMe KV pair storage |
US11817883B2 (en) | 2021-12-27 | 2023-11-14 | Western Digital Technologies, Inc. | Variable length ECC code according to value length in NVMe key value pair devices |
US11733876B2 (en) | 2022-01-05 | 2023-08-22 | Western Digital Technologies, Inc. | Content aware decoding in KV devices |
DE102022103944B4 (de) | 2022-02-18 | 2024-04-18 | Volkswagen Aktiengesellschaft | Verfahren und Überwachungssystem zum Überwachen eines Betriebsverhaltens eines Steuergeräts eines Kraftfahrzeugs |
CN117909106A (zh) * | 2022-10-12 | 2024-04-19 | 戴尔产品有限公司 | 用于调度数据采集的方法、电子设备和计算机程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238890A1 (en) * | 2010-03-25 | 2011-09-29 | Kabushiki Kaisha Toshiba | Memory controller, memory system, personal computer, and method of controlling memory system |
CN102393809A (zh) * | 2011-12-02 | 2012-03-28 | 浪潮集团有限公司 | 一种提高云存储ssd设备使用寿命的方法 |
US20120324191A1 (en) * | 2011-06-14 | 2012-12-20 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
CN103092764A (zh) * | 2011-10-31 | 2013-05-08 | 苹果公司 | 用于获得和使用非易失性存储器健康信息的***和方法 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
JP4648505B1 (ja) | 2010-03-30 | 2011-03-09 | 株式会社東芝 | 電子装置および電子システム |
US8560922B2 (en) | 2011-03-04 | 2013-10-15 | International Business Machines Corporation | Bad block management for flash memory |
US20150103593A1 (en) * | 2013-10-14 | 2015-04-16 | Skymedi Corporation | Method of Writing Data in Non-Volatile Memory and Non-Volatile Storage Device Using the Same |
-
2013
- 2013-12-24 US US14/139,957 patent/US9619381B2/en active Active
-
2014
- 2014-11-25 CN CN201410686220.4A patent/CN104731523B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238890A1 (en) * | 2010-03-25 | 2011-09-29 | Kabushiki Kaisha Toshiba | Memory controller, memory system, personal computer, and method of controlling memory system |
US20120324191A1 (en) * | 2011-06-14 | 2012-12-20 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
CN103092764A (zh) * | 2011-10-31 | 2013-05-08 | 苹果公司 | 用于获得和使用非易失性存储器健康信息的***和方法 |
CN102393809A (zh) * | 2011-12-02 | 2012-03-28 | 浪潮集团有限公司 | 一种提高云存储ssd设备使用寿命的方法 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107787570A (zh) * | 2015-06-26 | 2018-03-09 | 微软技术许可有限责任公司 | 轻量传送协议 |
US10917119B2 (en) | 2015-09-11 | 2021-02-09 | Silicon Motion, Inc. | Data storage system and associated data storing method for reducing data error rate |
US10469105B2 (en) | 2015-09-11 | 2019-11-05 | Silicon Motion Inc. | Data storage system and associated data storing method for reducing data error rate |
US10574271B2 (en) | 2015-09-11 | 2020-02-25 | Silicon Motion, Inc. | Data storage system and associated method for saving storage space and eliminating data errors |
US10992322B2 (en) | 2015-09-11 | 2021-04-27 | Silicon Motion, Inc. | Data storage system and associated method for saving storage space and eliminating data errors |
CN106528437B (zh) * | 2015-09-11 | 2020-02-07 | 慧荣科技股份有限公司 | 数据储存***与其相关方法 |
CN106528437A (zh) * | 2015-09-11 | 2017-03-22 | 慧荣科技股份有限公司 | 数据储存***与其相关方法 |
CN108139980A (zh) * | 2015-10-19 | 2018-06-08 | 瑞典爱立信有限公司 | 用于合并存储器页的方法和存储器合并功能 |
CN108139980B (zh) * | 2015-10-19 | 2022-03-18 | 瑞典爱立信有限公司 | 用于合并存储器页的方法和存储器合并功能 |
CN106909316A (zh) * | 2015-12-23 | 2017-06-30 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN106708435A (zh) * | 2016-12-14 | 2017-05-24 | 北京小米移动软件有限公司 | 数据处理方法及装置 |
TWI644250B (zh) * | 2017-03-07 | 2018-12-11 | 慧榮科技股份有限公司 | 電子系統及其資料維護方法 |
US10296231B2 (en) | 2017-03-07 | 2019-05-21 | Silicon Motion, Inc. | Data-storage device and data maintenance method thereof |
CN107203341A (zh) * | 2017-05-23 | 2017-09-26 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
CN107220185A (zh) * | 2017-05-23 | 2017-09-29 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
CN110109915B (zh) * | 2018-01-18 | 2024-01-05 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN110109915A (zh) * | 2018-01-18 | 2019-08-09 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
CN108287794A (zh) * | 2018-01-26 | 2018-07-17 | 国科美国研究实验室 | Nand闪存的动态管理方法 |
CN108595125A (zh) * | 2018-04-27 | 2018-09-28 | 江苏华存电子科技有限公司 | 一种纠正闪存写入错误处理方法 |
CN108899059A (zh) * | 2018-07-25 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种固态硬盘的检测方法和设备 |
CN108899059B (zh) * | 2018-07-25 | 2021-01-12 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的检测方法和设备 |
CN111290704B (zh) * | 2018-12-06 | 2023-10-27 | 爱思开海力士有限公司 | 用于控制储存在存储***中的数据的装置和方法 |
CN111290704A (zh) * | 2018-12-06 | 2020-06-16 | 爱思开海力士有限公司 | 用于控制储存在存储***中的数据的装置和方法 |
US11204705B2 (en) | 2019-03-05 | 2021-12-21 | Western Digital Technologies, Inc. | Retention-aware data tiering algorithm for hybrid storage arrays |
CN112214161A (zh) * | 2019-07-09 | 2021-01-12 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN112214161B (zh) * | 2019-07-09 | 2024-02-09 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN112346658A (zh) * | 2019-08-07 | 2021-02-09 | 国际商业机器公司 | 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 |
CN112199044A (zh) * | 2020-10-10 | 2021-01-08 | 中国人民大学 | 面向多租户的ftl设置方法、***、计算机程序及存储介质 |
CN113419679A (zh) * | 2021-06-18 | 2021-09-21 | Oppo广东移动通信有限公司 | 存储装置、***级芯片、电子设备及存储方法 |
CN113419679B (zh) * | 2021-06-18 | 2023-06-30 | Oppo广东移动通信有限公司 | 存储装置、***级芯片、电子设备及存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731523B (zh) | 2018-04-10 |
US9619381B2 (en) | 2017-04-11 |
US20150178191A1 (en) | 2015-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731523B (zh) | 非易失性分级存储***中的协同管理的方法及其控制器 | |
US10459808B2 (en) | Data storage system employing a hot spare to store and service accesses to data having lower associated wear | |
CN102498472B (zh) | 以从raid控制器接收的数据和奇偶性的使用信息为基础的固态盘的损耗均衡 | |
JP6855102B2 (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
KR101469596B1 (ko) | 스토리지 디바이스 펌웨어 및 제조 소프트웨어 | |
CN106708423B (zh) | 多模存储管理*** | |
US9990279B2 (en) | Page-level health equalization | |
CN110023896A (zh) | 直接映射的闪存存储***中的块合并 | |
CN107484427B (zh) | 用于处理存储设备中分条的方法和存储设备 | |
US20240176702A1 (en) | Data Storage Based On Characteristics of Storage Media | |
US10878111B2 (en) | Peer storage devices supporting protection information | |
US11620218B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
US10394489B2 (en) | Reusable memory devices with WOM codes | |
US20210232323A1 (en) | Managing voltage threshold shifts | |
US11947795B2 (en) | Power loss protection based on write requirements | |
US11531577B1 (en) | Temporarily limiting access to a storage device | |
US11561707B2 (en) | Allocating data storage based on aggregate duplicate performance | |
US11222265B2 (en) | Perform destages of tracks with holes in a storage system by training a machine learning module | |
WO2021181182A1 (en) | Using multi-tiered cache to satisfy input/output requests | |
US20240020227A1 (en) | Writing data to a distributed storage system | |
US11733909B2 (en) | Secure-erase prediction for data storage devices | |
US9940034B2 (en) | Reducing read access latency by straddling pages across non-volatile memory channels | |
US11314649B2 (en) | Using a machine learning module to perform destages of tracks with holes in a storage system | |
US11847331B2 (en) | Budgeting open blocks of a storage unit based on power loss prevention | |
CN103853501B (zh) | 为磁盘映像流式传输标识冗余数据的计算机实现方法和计算机*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |