用于监测存储器以便引退的系统和方法与流程

文档序号:16528733发布日期:2019-01-05 10:33阅读:199来源:国知局
用于监测存储器以便引退的系统和方法与流程

本主题申请涉及用于监测存储器以便引退的系统和方法。



背景技术:

一些数据存储设备(诸如固态驱动器(ssd))不会像硬盘驱动器(hdd)那样采用移动机械部件。例如,一些存储设备使用集成电路作为存储器单元以永久地存储数据。存储器单元被布置在“页面”中,这些页面被布置在“区块”中。并且,这些区块被布置在管芯的“平面”上。通常,如果区块在编程、擦除或读取操作期间始终失效,则引退整个区块并从可用存储器池中移除整个区块。例如,存储器单元使用次数越多,越容易失效。这些单元通常被设计为在发生失效之前处理数千次读取/写入。然而,随时间推移,这些读取/写入会磨损单元的浮栅的氧化物层,从而破坏单元存储数据的能力。一旦区块的存储器单元失效,即使该区块的部分仍然可用,也要从存储设备的可用存储器池移除该区块。



技术实现要素:

本文提出的系统和方法提供了监测区块、页面和/或条带降级。在一个实施方案中,控制器可操作为扫描存储器的第一区块以识别第一区块的一部分中的失效。控制器还可操作为暂停对第一区块的失效部分的输入/输出(i/o)操作,并且测试第一区块的失效部分以确定该失效是否为瞬时失效。测试需要为第一区块的该部分加载数据,并且从第一区块的加载部分读取该数据(例如,利用纠错码(ecc))。如果在测试后该失效减弱,则控制器确定该失效是瞬时失效,并恢复对第一区块的该部分的i/o操作。

可根据设计选择以多种方式实现本文所公开的各种实施方案。例如,其系统和方法实施方案可采用计算机硬件、软件、固件或它们的组合的形式。下面将描述其他示例性实施方案。

附图说明

现在将参照附图,仅以举例的方式描述一些实施方案。在所有附图中,相同的附图标记表示相同的元素或相同类型的元素。

图1是在区块打开时处理写入的示例性存储系统的框图。

图2是图1的存储系统的示例性过程的流程图。

图3是图1的存储系统的另一个示例性过程的流程图。

图4是存储系统的示例性区块布局的示意图。

图5至图8是图1的存储系统的另一个示例性过程的流程图。

图9是示例性存储控制器及其相关联的存储设备的框图。

图10是i/o模块的框图,该i/o模块包括与主机系统对接的存储设备及其相关联的控制器。

具体实施方式

附图和以下描述示出了具体的示例性实施方案。因此应当理解,本领域技术人员将能够设想虽然在本文中没有明确描述或者显示、但是体现了包含在实施方案范围内的某些原理的各种布置。此外,本文所述的任何示例旨在帮助理解实施方案的原理,并且应被解释为不限于此类具体陈述的示例和条件。因此,实施方案不限于下述的任何具体示例。

图1是示例性存储系统10的框图,该存储系统可操作为存储由主机系统(下面示出)发出的i/o请求所产生的数据。存储系统10包括存储设备15,该存储设备进一步包括存储元件14(例如,非易失性nand闪存设备或其他永久存储装置)和任选的缓冲区13(例如,用于高速缓存、暂存等的动态随机存取存储器或“dram”)。例如,可使用一个或多个ssd架构诸如单层单元(slc)架构和多层单元(mlc)架构来配置存储元件14。slc架构允许存储器单元存储一个比特的数据。传统上,mlc架构意指存储器单元可存储两个比特的数据。但是,架构已经演进,现在能提供甚至更高层的密度,诸如每个存储器单元存储三个比特的三层单元(tlc)架构,以及每个存储器单元存储四个比特的四层单元(qlc)架构。不过一般而言,每个单元存储超过一个比特的数据的任何架构也可称为mlc架构。

存储元件14的每个存储器单元可被配置为类似于具有控制栅的金属氧化物半导体场效应晶体管(mosfet)。但是,每个存储器单元还具有由绝缘氧化物层围绕的浮栅,该浮栅被配置在mosfet的控制栅与沟道之间。由于浮栅由其绝缘层电隔离,因此置于其上的电子被俘获直到通过施加电场(例如,外加电压)移除这些电子。电子置于浮栅上会将晶体管设定为逻辑“0”状态。一旦浮栅带电,其中的电子就会将电场屏蔽于控制栅以外,从而增加存储器单元的阈值电压。这意味着要向控制栅施加更高的电压才能使晶体管的沟道导电。

为了从晶体管写入值,向控制栅施加阈值电压之间的中间电压。如果沟道在该中间电压下导电,则浮栅不带电并且使逻辑“1”存储于存储器单元中。如果沟道在中间电压下不导电,则这指示浮栅带电,从而使逻辑“0”存储于存储器单元中。通过在控制栅上断言中间电压时确定是否有电流流过晶体管来感测或“读取”逻辑“0”或逻辑“1”的存在。

不论架构如何(例如,slc、mlc、磁阻或它们的组合),存储器单元一般都被布置在页面中,通常单个页面中包括数千个单元。例如,slc闪存设备的单个页面可包括能够存储16,384个比特数据或16千字节(kb)的16,384个存储器单元。2比特mlc闪存设备的单个页面可包括能够存储相同数据量的8,192个存储器单元。典型页面大小包括2kb、4kb、8kb和16kb。闪存设备的页面被布置在区块中,其中每个区块常规地包括128或256个页面。因此,闪存设备中的每个区块可在256kb与4兆字节(mb)之间变化。当要将数据写入到闪存设备时,控制器11在逐页面的基础上对设备进行编程直到区块已满。一旦闪存设备的该区块已满,就关闭该区块直到控制器11对该区块执行擦除过程。然而,应当注意,该实施方案并非旨在限于任何页面大小或区块大小,因为这些特征会随着技术进步而不断变化。

基于前述内容,控制器11是任何这样的设备、系统、软件、固件或它们的组合,其可操作为给i/o请求提供服务以从存储设备15读取数据并将数据写入到该存储设备。存储元件14是任何包括可操作为永久地存储一个或多个比特数据的存储器的设备。

图2是图1的存储系统10的示例性过程20的流程图。在该实施方案中,控制器11可操作为在过程元素21中扫描存储元件14中的存储器的区块,以在过程元素22中确定该区块的某部分(例如,该区块的一个或多个单元、一个或多个页面、整个区块自身)中是否存在错误。例如,控制器11在后台扫描过程期间可使用标准ecc从该区块的存储器读取数据,以确定是否存在无法用ecc校正的任何错误。

如果确实存在错误,则控制器11在过程元素23中暂停对该区块的失效部分的i/o操作。在暂停该区块的该部分时,控制器11可通过首先在过程元素24中对该区块执行垃圾收集而开始测试该区块的该部分。例如,控制器11可移动不再使用的区块的未擦除部分。然后控制器11的后台任务擦除该区块的该部分。

随后,控制器11在过程元素25中为该区块的失效部分加载数据,并且在过程元素26中利用ecc读取区块的刚加载的部分。例如,控制器11可将测试数据加载到该区块的这些部分中。该测试数据由于为已知的,故可利用ecc读取,然后与初始加载到该区块的这些部分中的数据进行比较以在过程元素27中确定是否仍然存在任何错误。

另选地,控制器11数据来自实际i/o。例如,控制器11可处理i/o请求并且将i/o请求的数据高速缓存在缓冲区13中直到数据可存储在存储系统10中的某处。控制器11可使用该数据并将其加载到该区块的暂停部分中。然后控制器11可使用ecc回读该数据并且将其与缓冲区13中的数据进行比较以在过程元素27中确定是否仍然存在任何错误。

如果仍然存在错误,则控制器11可在过程元素28中增加ecc(例如,增加码率),并且在过程元素29中递增该区块的该部分的失效计数。例如,该测试过程可具有迭代的性质。并且,控制器11可操作为对该区块的该部分无法正确读取数据的次数进行计数。就这一点而言,控制器11可在过程元素30中确定失效计数是否已违背失效阈值数量。如果该区块的该部分未违背该阈值,则控制器11在过程元素24中对该区块执行另一次垃圾收集,并且该过程如前所述的那样继续。然而,如果在过程元素30中该区块的该部分达到阈值失效计数,则控制器11在过程元素31中引退该区块的该部分,使得没有其他i/o可指向该区块的该部分。

返回到过程元素27,如果在过程元素26中读取该区块的加载部分之后不存在错误,则控制器11在过程元素32中确定前述失效计数是否大于零。由于该区块的该部分已成功通过读取,控制器11在过程元素33中递减失效计数。如果失效计数仍然大于零,则控制器11继续测试该区块的该部分(例如,垃圾收集以及加载和读取该区块的该部分)。否则,如果失效计数等于零(或某个其他可接受阈值),则控制器11使该区块的该部分恢复到存储系统10的存储器池。即,控制器11使区块的该部分从暂停中恢复,使得在过程元素34中对该区块的该部分的i/o操作可继续。然后控制器11继续周期性地扫描该区块的该此前失效部分,以及存储元件14中的其他区块。

还应当注意,i/o请求可直接来自主机系统,并且通常是这样。然而,i/o请求在到达存储系统10之前可高速缓存在另一个设备中。例如,i/o请求可在执行之前高速缓存在缓冲区13内,或可甚至由其他存储设备自身发出。因此,该实施方案并非旨在限于任何特定类型的i/o请求。

图3是存储系统10的另一个示例性过程40的流程图。在该实施方案中,存储系统10具有与独立磁盘冗余阵列(raid)系统类似的条带配置。就这一点而言,数据的页面可被编程/复制在存储元件14的多个区块中。例如,图4示出了可驻留在存储元件14中的区块“0”至“n”(其中“n”仅旨在表示大于“1”的整数,但不一定等于本文指定的任何其他“n”指代)。这些区块包括页面0-m(其中“m”仅旨在表示大于“1”的整数,但不一定等于本文指定的任何其他“m”指代)。但是,在这种情况下,这些页面跨越区块“0”至“n”进行分条。为了加以说明,区块0、1、3和n各自包括页面“1”。每个页面“1”是这些区块中的其他页面“1”的数据的副本。即,区块“0”的页面“1”包括区块“1”的页面“1”的相同数据,区块“1”的页面“1”又包括区块“3”的页面“1”的相同数据,以此类推。

出于这种考虑,控制器11在过程元素41中扫描条带。然后控制器11在过程元素42中确定读取条带中是否存在错误。如果该条带中存在错误,则控制器11在过程元素43中暂停对该条带的i/o操作,并且控制器11可在过程元素44中对该条带的页面进行异或运算以确定该条带的一个或多个失效页面。例如,假定区块“0”的页面“1”具有错误并且区块1、3和n的其余页面“1”具有良好数据。控制器11可对这些区块彼此进行异或运算以将该错误定位在区块“0”的页面“1”中。另选地或除此之外,控制器11可使用某种其他技术来恢复数据(例如,reedsolomon、ecc等)。

一旦已定位一个或多个失效页面,控制器11就在过程元素45中对该条带的区块执行垃圾收集。例如,控制器11可擦除失效页面。然后,控制器11可在过程元素46中为这些页面加载数据(例如,如上文类似地描述的测试数据或实际数据)。随后控制器11在过程元素47中使用ecc从这些页面读取该数据,接着在过程元素48中确定一个或多个页面中是否仍然存在错误。如果仍然存在错误,则控制器11在过程元素49和50中增加ecc并且递增失效计数,如上文类似地描述。

如果在过程元素51中失效计数大于某个失效阈值数量,则控制器11引退一个或多个失效页面。如果确定所有页面已失效大于该阈值的次数,则控制器11可引退整个条带。然而,如果失效计数小于失效阈值数量,则控制器11继续测试一个或多个失效页面(例如,对条带的一个或多个区块执行垃圾收集,为这些页面加载数据,并且利用ecc读取这些页面)。

返回到过程元素48,如果在测试失效页面之后未发生错误,则控制器11在过程元素53中确定失效计数是否大于零(或某个其他可接受的阈值数量)。如果失效计数大于零,则控制器11在过程元素54中递减失效计数,然后继续该条带的一个或多个失效页面的测试(例如,对一个或多个区块进行垃圾收集,并且加载和读取该条带的这些页面)。否则,控制器11将该条带从暂停中移除,使得可在过程元素55中继续对该条带进行i/o操作。并且,控制器11继续扫描该条带以及存储元件14内的其他条带(例如,作为后台扫描过程的一部分)。

应当注意,本文的过程实施方案是示例性的,并非旨在进行限制。其过程元素可重新布置或改变,同时仍然体现本文所公开的存储器暂停和/或引退的原理。

图5至图8是图1的存储系统10的另一个示例性过程60的流程图。例如,图5至图8中的每张图表示过程60的一部分,在该过程中控制器11执行页面、条带和/或区块暂停和/或引退。过程60在图5中从过程元素61开始,在该过程元素中控制器11监测区块的页面并且检测该页面中的错误。控制器11在过程元素62中读取该页面,并且如果该页面跨越多个区块进行分条,则控制器11在过程元素63中对该页面执行ocr。例如,控制器11可对该条带中的该页面与其他页面进行异或运算(或某种其他形式的数据恢复,诸如reedsolomon、ecc等)以确定该条带中的一个或多个页面是否已失效。

在执行ocr之后,控制器11在过程元素64中对该区块执行垃圾收集,然后在过程元素65中确定该页面是否在降级列表中。例如,如果控制器11此前在该页面中检测到错误,则控制器11可将该页面置于暂停状态。因此,如果该页面当前不处于暂停状态,则控制器11在过程元素66中将该页面输入到降级列表中。在该降级列表中,该页面可仍然能够采用来自i/o操作的数据。然后控制器11在过程元素67中递增页面错误计数,并且继续如图6所示的那样经由过程元素“b”分析该页面。然而,如果该页面当前在降级列表中,则控制器11直接移至如图7所示的那样经由过程元素“c”测试失效页面。

返回到图6,控制器11通过在过程元素68中将数据加载到该页面中并且利用ecc读取该数据来启动对该页面的测试。然后控制器11在过程元素69中确定刚才读取的降级的页面是否已通过。如果在利用ecc的读取期间该降级的页面含有错误,则控制器11直接移至如图7所示的那样经由过程元素“d”测试失效页面。否则,该降级的页面通过了利用ecc的读取并且控制器11在过程元素70中递减其页面错误计数。然后,如果在过程元素71中页面错误计数小于某个阈值,则控制器11在过程元素72中将该页面从降级列表中移除并且继续i/o操作,因为该页面中的错误被认为具有瞬时性质。随后控制器11继续在后台扫描操作期间监测该页面以及该区块中的其他页面。然而,如果页面错误计数大于该阈值,则该页面可能已遭遇多个瞬时错误。并且,控制器11可继续执行过程元素68的加载/读取操作以经由过程元素“a”继续检查该页面,从而查看错误计数是否减小。

同样,如果该降级的页面未通过读取操作(例如,如果在过程元素69中在读取该页面时存在失效),则控制器11直接移至如图7所示的那样经由过程元素“d”测试失效页面。在该实施方案中,控制器11在过程元素73中对该区块执行垃圾收集,然后在过程元素74中递增页面错误计数。控制器11在过程元素75中确定页面错误计数是否大于某个阈值。如果不是这样,则控制器11通过如图6所示的那样经由过程元素“a”加载/读取该页面来尝试重试该页面。然而,如果页面错误计数大于该阈值,则控制器11在过程元素76中将分页器计数设定为等于零,并且在过程元素76中使该页面暂停后续i/o操作,从而将该页面从存储元件14的存储器池中移除。

一旦该页面处于暂停状态,控制器11就在过程元素78中增加ecc/码率。然后控制器11在过程元素79中扫描该页面的错误。这可包括为该页面加载数据并且利用增加的ecc读取该数据。由此,由控制器11如图8所示的那样经由过程元素“e”执行引退评估。

在该引退评估中,控制器11利用增加的ecc确定暂停的页面是否已通过。如果是这样,控制器11保持该页面处于降级状态但允许i/o操作继续如图6所示的那样经由过程元素“a”利用增加的ecc加载和读取该页面。然而,如果在利用增加的ecc时该页面仍然产生错误,则控制器11决定在过程元素81中引退该页面。由此,执行条带分析以确定条带中引退的页面的数量是否已违背阈值。例如,如果条带中的这些页面无法经由异或运算恢复,则控制器11在过程元素84中引退整个条带,从而阻止对该条带执行i/o操作。

如果该条带中引退的页面的数量小于阈值数量,则控制器11在过程元素83中确定每个区块的引退的页面的百分比是否大于阈值。例如,如果大部分页面已失效并且这些页面被认为即使利用增加的ecc也不能操作,则控制器11在过程元素85中引退整个区块。如果每个区块的引退的页面的百分比小于该阈值,则控制器11将这些页面保持在降级列表中并且尝试如图6所示的那样经由过程元素“a”利用增加的ecc读取这些页面。

通常,当区块的页面失效时,整个区块被引退。在存储元件14是闪存设备的实施方案中,对页面进行降级和/或暂停的该新方法允许区块保存下来,从而延长存储元件14的寿命以及增加存储元件14的可用存储器的量。此外,引退整个区块一般需要重建整个垃圾收集,这可影响存储系统10的性能。引退或至少降级单独页面不会影响性能,因为该过程在后台执行,作为典型扫描过程的一部分。并且,通过检测降级页面,可在该页面具有不可恢复的读取错误之前引退该页面。

应当注意,本文所公开的实施方案并非旨在限于ecc和外码恢复(ocr)技术,诸如异或运算和reedsolomonocr技术。例如,在闪存设备中,另一种恢复技术可包括抖动(例如,改变)电压基准阈值(vref)以产生更可靠的结果。

本文的实施方案可采用硬件、固件、软件或它们的组合的形式。图9和图10示出了可操作为采用本文所述的系统和方法的这种组合。更具体地讲,图9是示例性存储系统10及其相关联的设备控制器(例如,控制器11)和存储设备15(例如,图1的存储元件14和缓冲区13)的框图。图10是存储模块216的框图,该存储模块包括与主机系统502对接的存储系统10及其相关联的控制器11/存储设备15。

在图9中,控制器11包括主机接口111,该主机接口可操作为与主机系统对接以传送主机系统的i/o操作。主机接口111可用标签跟踪模块113配置,该标签跟踪模块可操作为跟踪单独i/o命令的进展(例如,指向存储设备15中的某些地址的读取和写入命令)。标签跟踪模块113可将从主机系统接收的命令的外部标志与控制器11在该命令的处理期间可访问的内部标志进行关联以识别处理的状态。

控制器11还包括数据处理模块121,该数据处理模块包括处理引擎123,该处理引擎一般可操作为对从主机接口111接收或驻留在缓冲区131内的数据执行某些任务,诸如格式化该数据、转码该数据、压缩该数据、解压缩该数据、加密该数据、解密该数据、数据编码/格式化或它们的任何组合中的一者或多者。例如,数据处理模块121的处理引擎123可操作为处理来自生成该操作的主机系统的i/o模块的i/o操作,使得i/o操作的数据可写入到存储设备15的逻辑地址。处理引擎123可提取写入i/o命令的数据并且使其准备好存储于存储设备15中。这样做时,处理引擎123可使用多种数据压缩算法中的任何一种来压缩该数据。当从存储设备15检索该数据时,处理引擎123可根据用于压缩该数据以便存储的算法来解压缩该数据。

缓冲区131可操作为存储向主机系统传输和从主机系统传输的数据。缓冲区131还可存储系统数据,诸如由控制器11用来管理存储元件14、缓冲区13及存储器137中任何可能的高层raid功能的存储器表。其他模块可包括用于提供高层纠错和冗余功能的纠错码(ecc-x)模块135,以及用于控制数据向和从缓冲区131的移动的直接存储器存取(dma)模块133。

控制器11还包括纠错码模块161,该纠错码模块可操作为使用多种纠错码技术(例如,循环冗余校验、汉明码、低密度奇偶校验码编码器等)中的任何一种提供缓冲区131中的数据的低层纠错和冗余处理。

设备接口逻辑模块191可操作为根据其中的设备的协议向和从存储设备15传输数据。设备接口逻辑模块191包括调度模块193,该调度模块可操作为使对存储设备15的i/o操作排队。

本文的控制器11还包括映射模块141,该映射模块可操作为根据查找表12对存储设备15中的位置执行数据寻址。例如,映射模块141可使用查找表12将来自主机系统的逻辑区块地址(lba)转换为指向缓冲区13、存储元件14或两者的区块/页面地址。查找表12可全部或部分地存储于控制器11和/或存储设备15中。例如,在一些实施方案中,查找表12的一部分可高速缓存在控制器11中,且大致所有的查找表12非易失性地存储于存储设备15中。

回收器151代表控制器11执行垃圾收集。例如,回收器151可通过扫描映射模块141的查找表12来确定活跃使用的存储设备15的部分。就这一点而言,回收器151可通过擦除未使用的部分,而使存储设备15的未使用或“释放”的部分可用于写入。回收器151还可移动存储设备15内的数据以使存储设备15的较大连续部分可用于写入。

控制器11还包括控制控制器11的各个方面的cpu171。例如,cpu171可处理指令或固件以实现跟踪和控制从主机系统接收的命令的命令管理173。该固件还可实现控制缓冲区131的分配和使用的缓冲区管理175以及用于控制映射模块141的转换管理177。该固件还可采用一致性管理179来控制数据寻址的一致性以避免冲突,诸如可在外部数据存取与回收数据存取之间发生的那些冲突。该固件还可提供用于控制设备接口逻辑模块191的设备管理181以及用于控制控制器11内的部件的身份信息的修改和传送的身份管理182。

在图10中,主机系统202可操作为处理软件指令并且与存储模块216执行i/o操作以从一个或多个存储系统10读取并写入到一个或多个存储系统10。就这一点而言,主机系统202可包括操作系统205,该操作系统为主机系统202提供计算环境。驱动器207可操作为通过链路206传送到存储模块216以与用其配置的各种存储系统10执行i/o操作。

与其他计算系统一样,操作系统205可经由管理软件214(例如,bios软件)启动。主机系统202还可包括应用程序软件209以代表主机系统202执行各种计算过程(例如,字处理应用程序、图像处理应用程序等)。主机系统202还可包括i/o和存储功能217,该i/o和存储功能可操作为通过通信网络219(例如,互联网、局域网、广域网等)与一个或多个服务器218进行i/o操作。就这一点而言,存储模块216可充当主机系统202的i/o操作的高速缓存存储器。

可用中间控制器203配置存储模块216,该中间控制器可操作为将主机系统202的各种i/o操作切换到存储系统10的lba。就这一点而言,存储模块216可包括存储器212,该存储器存储中间控制器203的映射信息以对lba进行i/o操作。控制器11的映射模块141也可操作为用可变大小的映射单元根据查找表12对存储设备15中的位置执行数据寻址,并且将来自主机系统202的lba转换为指向存储设备15的区块/页面地址。

应当注意,本文所公开的实施方案不限于任何类型的存储设备15,因为它们可在其他永久存储设备(包括hdd、ssd、磁阻存储设备等)中实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1