用于改进闪存存储器存储延迟和鲁棒性的方法和设备与流程

文档序号:13664081阅读:222来源:国知局
用于改进闪存存储器存储延迟和鲁棒性的方法和设备与流程

本申请涉及存储领域,具体而言,涉及一种用于改进闪存存储器存储延迟和鲁棒性的方法和设备。



背景技术:

一般来讲,固态驱动器(ssd)的读取延迟不能是常数,并且可以基于不同的工作状况而随时间推移变化。实际上,ssd读取延迟偶尔包括非常长的读取延迟或为在应用级发生的不可接受的延迟的“长尾读取”的时间段。长尾读取尤其对重点强调更快的存储器存储系统响应时间的计算机系统基础设施产生问题。常规的方法往往无法有效地检索存储在诸如nand管芯的存储器存储装置中的数据,因为它们无法在第一位置减少这些长尾读取的发生。此外,由于被擦除、管芯故障、固有ecc故障或类似问题导致管芯被锁定,当执行数据读取程序时,这些常规方法也是低效的。



技术实现要素:

本公开的实施例通过减少发生长尾读取并且预测性地构建数据互连以提高存储器存储系统的性能以缩短平均读取延迟并增加存储器存储系统的鲁棒性。本公开的实施例执行擦除编码程序以在不同数据片段之间开发相关性并形成数据分组。

由本公开的实施例执行的数据分组程序在存储器存储装置暂时或永久地不可用于数据读取请求的情况下,将数据恢复到初始形式。本公开的实施例可以利用最小距离分离(mds)码电位,并读取预测性地检索读取结果所需的最少量的数据片段而不是从物理页直接读取。

在阅读了各种附图中所示的实施例的以下详细描述之后,本领域普通技术人员将认识到本发明的各种实施例的这些和其他目的和优点。

附图说明

结合在本说明书中并形成本说明书的一部分的附图示出了本公开的实施例并且与说明书一起用于解释本公开的原理,并且其中,相似的附图标记表示相同的元件。

图1a为描绘根据本公开的实施例的用于减少存储器存储延迟并提高鲁棒性的计算机系统部件的示例的框图。

图1b为描绘根据本公开的实施例的用于减少存储器存储延迟并提高存储器存储鲁棒性的硬件配置的示例的框图。

图1c示出了根据本公开的实施例的可用于实现用于奇偶校验生成的擦除编码的电路的示例。

图1d示出了根据本公开的实施例的具有多个信道和多个nand闪存管芯的存储器存储系统配置的示例。

图1e示出了根据本公开的实施例的包含在存储器存储系统中的数据路径的示例。

图2a为描绘根据本公开的实施例的用于执行数据恢复程序的数据片段处理的示例的框图。

图2b为描绘根据本公开的实施例的数据分组程序的示例的框图。

图2c为描绘根据本公开的实施例的数据分组程序的示例的另一框图。

图3为根据本公开的实施例的用于减少存储器存储延迟并提高存储器存储鲁棒性的过程的流程图。

图4a为根据本公开的实施例的用于执行数据分段和数据分组程序的示例性过程的流程图的第一部分。

图4b为根据本公开的实施例的用于执行数据分段和数据分组程序的示例性过程的流程图的第二部分。

具体实施方式

现将详细参考本公开的各种实施例,所述实施例的示例在附图中示出。虽然结合这些实施例进行了描述,但是应理解,它们并不旨在将本公开限制于这些实施例。相反,本公开旨在涵盖可以包含在由所附权利要求限定的本公开的精神和范围内的替代方案、修改和等同物。此外,在本公开的以下详细描述中,阐述了许多具体细节以便提供对本公开的透彻理解。然而,应理解,可以在没有这些具体细节的情况下实施本公开。在其他情况下,未详细描述公知的方法、程序、部件和电路,以免不必要地模糊本公开的各方面。

根据程序、逻辑块、处理和对计算机存储器内的数据位的操作的其他符号表示来呈现以下详细描述的一些部分。这些描述和表示为数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域的技术人员的手段。在本申请中,程序、逻辑块、处理等被认为是产生期望结果的步骤或指令的自相一致的序列。这些步骤为利用物理量的物理操纵的步骤。通常,尽管不是必要的,这些物理量采用能够在计算机系统中进行存储、传送、组合、比较和以其他方式操控的电或磁信号的形式。有时,主要是出于普遍使用的原因,将这些信号称为事务、比特、值、元素、符号、字符、样本、像素等,已被证明是方便的。

但是,应记住,所有这些和类似的术语都应该与适当的物理量相关联,并且仅仅适用于这些量的便利标签。应理解,除非另有明确说明,否则在本公开内容中,从以下讨论中显而易见的是,使用诸如“分段”、“存储”、“读取”、“写入”、“擦除”、“压缩”、“解压缩”、“编码”、“解码”、“加密”、“解密”、“纠错编码”、“纠错解码”、“生成”、“恢复”、“分组”等的术语的讨论指的是装置或计算机系统或类似的电子计算装置或处理器的动作和处理(例如,图3、图4a、图4b)。计算机系统或类似的电子计算装置操控并变换在存储器、寄存器或其他此信息存储、传输或显示装置内表示为物理(电子)量的数据。

本文所述的实施例可在驻留在某种形式的计算机可读存储介质的计算机可执行指令,诸如由一或多个计算机或其他装置执行的程序模块的一般上下文中讨论。作为示例而非限制,计算机可读存储介质可包括非暂态计算机存储介质和通信介质。一般来说,程序模块包括例程、程序、对象、组件、数据结构等,其执行特定任务或实施特定抽象数据类型。程序模块的功能可根据需要在各种实施例中组合或分布。

图1a为描绘根据本公开的实施例的用于减少存储器存储延迟并提高鲁棒性的计算机系统部件的示例的框图。尽管在图1a中公开了具体的部件,但是应理解,这些部件是示例性的。也就是说,本公开的实施例非常适合于具有各种其他部件或图1a所述的部件的变体。应理解,图1a中的部件可以与除了所呈现的部件之外的其他部件一起操作,并且图1a中所述的并非实现本公开的目标所需的所有部件。根据一些实施例,图1a中描绘的部件可以被组合以实现本公开的目标。此外,应理解,为了实现本公开的目标的目的,图1a中描述的一些部件可以与图1b中描述的一些部件(下文讨论)结合操作。

存储器存储系统100可以被实现为能够通过数据通信总线与其他电子装置通信的电子装置。可实现本公开的实施例的示例性存储器存储系统100包括通用目的的计算系统环境。例如,如图1a所示,存储器存储系统100通常包括ssd控制器110、主机接口模块112、主机接口控制器111、动态随机存取存储器(dram)接口模块114、dram控制器113、多个不同的数据信道115(以下被被称为“信道”115)、crc编码器模块116、crc解码器模块117、加密模块119、解密模块118、擦除码编码器模块121、擦除码解码器模块120、数据片段分组模块124、纠错编码器模块122和纠错解码器模块123。

ssd控制器110具有通过诸如主机接口模块112(例如,开放式nand接口、onfi等)的接口从一或多个主机装置发送和接收信号的功能。主机接口模块112由存储器存储系统100使用主机接口控制器111配置。以此方式,主机接口控制器111配置主机接口模块112以启用一个或多个主机装置和存储器存储系统100之间的通信。

例如,ssd控制器110通过主机接口模块112从主机装置接收数据写入和/或读取程序请求。这些数据写入程序可以为用于执行写入操作的诸如nand管芯的特定存储器存储装置的指令。ssd控制器110包括用于生成和/或处理芯片选择信号以便定位、寻址和/或激活特定nand管芯从而执行数据写入和/或读取程序的功能。

ssd控制器110还具有如下功能:向存储器存储系统100的其他部件发送多个不同控制信号,以便执行与由主机装置发布的数据写入程序有关的进一步程序。例如,由应用发出的读取命令操作可以由ssd控制器110并行地发送到存储与结果数据相关的数据的多个nand管芯,该读取指令操作用于读取由写入命令生成的结果数据。当发出并行读取操作时,ssd控制器110选择属于由数据片段分组模块124创建的分组数据集的nand管芯(下文将更详细地讨论)。因此,nand管芯可以由存储器存储系统100配置以便按照这样的方式存储与期望数据相关的数据:使得即便在发出读取命令时目标nand管芯不可用,也仍然可以检索该数据。

在一些实施例中,主机接口控制器111执行或包括闪存转换层(ftl),其可在固件中实施或实施为软件。以此方式,主机接口控制器111配置主机接口模块112以将逻辑地址从主机系统转换为物理地址。主机接口模块112包括例如在模拟域和数字域(例如,从模拟到数字以及从数字到模拟)之间转换数据的物理层(phy)接口和/或串行器/解串器。

dram接口模块114具有允许dram控制器113访问dram装置的功能。以此方式,dram接口模块114使用由dram控制器113确定的配置,以允许主机装置将dram装置映射到用于特定资源或i/o装置的虚拟存储器空间中。因此,其他主机装置和/或其他装置可以使用dram控制器113和/或dram接口模块114执行涉及dram装置的读和/或写数据程序。

信道115包括多个不同的数据信道,其中,每个数据信道包括向ssd控制器110传送信号以及从ssd控制器110传送信号的功能。ssd控制器110使用信道115中的数据信道,通过多个数据信道,从诸如nand管芯、dram管芯等存储器存储装置发送和接收信号。信道115可以被预配置为多位端口,诸如8位端口,这允许ssd控制器110使用多个不同的存储器存储装置执行读取和/或写入操作。以此方式,ssd控制器110包括管理外部存储装置的功能,使得存储器存储装置可以将通过信道115接收到的信号驱动到存储器存储系统100的其他部分。为了充分利用存储器存储系统100的内部带宽,nand管芯可以跨越多个数据信道而分布(参见例如本文所述的图1d)。

crc编码器模块116具有在将由解密模块118生成的数据被发送到主机装置之前用crc码编码的功能。以此方式,由crc编码器模块116生成的编码数据对数据进行编码用于传送质量保证。crc解码器模块117具有通过主机接口模块112接收数据的功能。crc解码器模块117还包括执行常规crc解码程序的功能。通过使用这些程序,crc解码器模块117确定从主机接口模块112接收到的数据是否包括crc错误。

加密模块119具有加密从crc解码器模块117生成的结果数据以产生加密数据的功能。由加密模块119生成的加密数据用信息安全保护,从而防止未经授权的用户访问从crc解码器模块117生成的数据。加密模块119还包括在执行数据加密程序时生成密钥的功能。

解密模块118具有对由存储器存储系统100接收和/或生成的加密数据进行解密的功能。例如,在一个实施例中,解密模块118包括使用加密密钥来执行解密程序的功能。以此方式,解密模块118被配置成在对存储在存储器存储装置中的结果数据执行的读取操作期间执行解密程序。

擦除码编码器模块121包括将数据分段成包括经编码的冗余数据部分的多个不同数据片段(“初始数据片段”)的功能。例如,擦除码编码器模块121包括生成诸如奇偶校验数据的数据的功能,其允许存储器存储系统100使用冗余数据部分来互连每个初始数据片段。以此方式,由擦除码编码器模块121生成的奇偶校验数据允许存储器存储系统100在包括初始数据片段和奇偶校验数据片段的所有数据片段之间构建信息相关性。

例如,在实施例中,对于一个擦除码,擦除码编码器模块121将其相关代码字定义为v=[up],其中,v为1×n向量,u为1×k向量,以及p为1×m向量。如下面的公式1所示,擦除码相应地具有由2个子矩阵h1和h2组成的奇偶校验矩阵h(大小为k行n列)。通过行和列置换,h2被构造为全等级矩阵,其可以被表示为例如r(a)=k。这种非奇异性提供h2的逆矩阵。可以使用奇偶校验片段p计算初始数据片段u。例如,可以使用矩阵a和向量u的点乘积来执行该计算。在一些实施例中,矩阵a可以由擦除码编码器模块121存储在驻留在存储器存储系统100上的数据结构或存储器中。

∴h1·u=h2·p

通常,可以通过擦除码编码器模块121按顺序处理向量u的不同片段。因此,擦除码编码器模块121包括在接收数据片段时(如公式2所示)处理数据片段的功能,而不是在生成奇偶校验数据之前等待所有初始数据片段被接收。

当初始数据片段到达时,擦除码编码器模块121将存储矩阵a的片段部分相乘。同时,累积乘积向量以获得奇偶校验向量的中间结果,如下面的公式3所示。

擦除码编码器模块121还包括将每个初始数据片段和/或奇偶校验数据存储到单独的存储器存储装置中的功能,该单独的存储器存储装置包括不同的nand管芯。例如,进一步参考公式3,作为中间结果的索引μi(i从1增加到k),奇偶校验片段准备好被编程到存储器存储装置中,诸如可以基于由存储器存储系统100的部件(诸如数据片段分组模块124)执行的程序进行分组的nand闪存管芯中。

擦除码解码器模块120包括可选地解码由擦除码编码器模块121生成的结果数据的功能。擦除码解码器模块120包括如下功能:使用由擦除码编码器模块121生成的数据片段,以使用存储在驻留在存储器存储系统100上的单独存储器存储装置中的奇偶校验数据将数据恢复到其初始形式。此外,擦除码解码器模块120包括以下功能:根据某些条件(诸如纠错编码是否有效、目标管芯是否可用、数据模式是否需要预提取等),确定是否解码由擦除码编码器模块121生成的结果数据的功能。

数据片段分组模块124包括如下功能:将存储在单独nand闪存管芯内的多个不同数据片段进行分组。数据片段分组模块124生成包括数据片段和/或奇偶校验数据的分组数据集。为每个数据片段生成奇偶校验数据,并且可以通过不同的数据信道传送奇偶校验数据并通过多个存储器存储装置(例如,至少两个nand管芯)存储奇偶校验数据。

以此方式,数据片段分组模块124生成多个分组数据单元,其中分组在分组数据单元中的数据片段密切相关的。通过使用每个相应的分组数据集中的数据片段,可以使用存储在完全不同的nand管芯中的数据片段(例如,冗余数据片段、奇偶校验数据)将写入特定nand管芯的数据恢复到分段之前的形式(或“初始形式”)。根据一些实施例,与包含数据片段的分组数据集相关的信息可以被存储在数据结构中、驻留在存储器存储系统100上的存储器或数据片段分组模块124可访问的另一位置中。

纠错编码器模块122包括编码由擦除码编码器模块121生成的结果数据的功能。纠错解码器模块123包括如下功能:解码存储在存储器存储装置上的结果数据,诸如存储在nand芯片和/或dram芯片中的结果数据的功能。以此方式,纠错解码器模块123被配置成将对存储在存储器存储装置中的结果数据执行的纠错码数据读取操作进行转换。

图1b为描绘根据本公开的实施例的用于减少存储器存储延迟并提高存储器存储鲁棒性的硬件配置的示例的框图。尽管在图1b中公开了具体的部件,但是应理解,此些部件是示例性的。也就是说,本公开的实施例非常适合于具有各种其他硬件部件或图1b所述的部件的变体。应理解,图1b中的硬件部件可以与除了所呈现的部件之外的部件一起操作,并且并非图1b中所述的所有硬件部件都是实现本公开的目标所需。根据一些实施例,图1b中描绘的部件可以被组合以实现本公开的目标。此外,应理解,为了实现本公开的目标的目的,图1b中描述的一些部件可以与图1a中描述的一些部件结合操作。

根据实施例,存储器存储系统100包括至少一个处理单元101,诸如计算机存储介质102、nand管芯103和/或dram管芯104的存储器存储单元。如本文所述,存储器存储系统100可以被实施为能够通过数据通信总线106与其他电子装置通信的电子装置。根据装置的确切配置和类型,计算机可读存储介质102可以为易失性的(诸如ram)、非易失性的(诸如rom、闪存)或两者的某种组合。计算机可读存储介质102的一部分在被执行时促成有效执行存储器的操作或线程组的请求。

在实施例中,处理器101可以为被配置成执行本文所述的操作的可编程电路(例如,由图1a中描述的部件执行的操作)。例如,处理器101可以为fpga控制器或闪存装置控制器。另选地,在实施例中,处理器101可操作以执行存储在非暂态计算机可读存储介质102中的程序,并且被配置成执行本文所述的操作(例如,由图1a中描述的部件执行的操作)。此外,系统100也可以具有附加特征和功能。例如,系统100也可包括附加的存储介质(可移除和/或不可移除),包括但不限于磁盘或光盘或磁带。计算机存储介质包括以任何方法或技术实施用于存储信息诸如计算机可读指令、数据结构、程序模块或其他数据的易失性和非易失性、可移除和不可移除介质。存储器存储系统100的增加容量允许数十个nand闪存管芯和/或dram管芯驻留在同一个pcb上。

nand管芯103包括多个不同的nand管芯(或“nand闪存装置”)。nand管芯103的每个nand管芯包括在其中存储数据的功能。例如,nand管芯103可以各自存储初始数据片段、冗余数据片段、奇偶校验数据和/或其他数据。以此方式,nand存储器103允许存储器存储系统100在包括初始数据片段、冗余数据和/或奇偶校验数据片段的所有数据片段之间构建信息相关性。每个nand管芯的容量可以为例如1g位或以上。以此方式,每个nand管芯可以具有数百个存储数十m字节的数据块。因此,一个数据块可以具有数十页,其中,每个页面具有16k字节、8k字节等。通过耦合多个信道来发送和接收来自一或多个nand管芯的信号,存储器存储系统100可以从被写入一或多个nand管芯的数据生成多个不同的数据片段。

此外,nand管芯103的每个nand管芯包括发送和接收来自诸如ssd控制器110的存储器存储系统100的其他部件的信号的功能。此外,nand管芯103的每个nand管芯包括通过来自信道115的相应信道从存储器存储系统100的部件发送和接收信号的功能。

dram管芯104包括多个不同的dram管芯。dram管芯104的每个dram管芯包括在其中存储数据的功能。dram管芯104的每个dram管芯包括发送和接收来自存储器存储系统100的其他部件(诸如ssd控制器110和/或dram控制器113)的信号的功能。例如,dram管芯104的每个dram管芯包括通过dram接口模块114发送和接收来自dram控制器113的信号的功能。以此方式,dram管芯104使用由dram控制器113确定的配置,以允许主机装置将dram管芯104映射到用于特定资源或i/o装置的虚拟存储器空间中。因此,其他主机装置和/或其他装置可以使用dram控制器113和/或dram接口模块114执行涉及dram管芯104的读和/或写数据程序。

图1c示出了根据本公开的实施例的可用于实现用于奇偶校验生成的擦除编码的电路的示例。擦除码编码器模块121包括将奇偶校验数据存储在存储器存储装置中以作为二进制位的功能。例如,如图1c的部分(a)和(b)所示,擦除码编码器模块121可以对二进制字段执行乘法和加法运算,其中,乘法和加法运算分别等同于与门和异或门。进一步参考图1c的部分(c),每当数据片段μi到达时,它就对从rom读出的一个子矩阵∧ij进行操作(例如,与运算)并与相应的行μ进行异或运算。因此,每个μi对当前列中的∧的所有m个子矩阵进行操作。

图1d示出了根据本公开的实施例的具有多个信道和多个nand闪存管芯的存储器存储系统配置的示例。图1d所示的存储器存储系统100可以包括多个信道,诸如信道115-1、115-2、115-3和115-4,其中,每个信道可被配置成发送和接收来自一或多个存储器存储装置的信号。例如,如图1d所示,信道115-1被配置成发送和接收来自nand管芯103-1、103-2和103-3的信号。此外,信道115-2被配置成发送和接收来自nand管芯103-4、103-5和103-6的信号。另外,信道115-3被配置成发送和接收来自nand管芯103-7、103-8和103-9的信号。此外,信道115-4被配置成发送和接收来自nand管芯103-10、103-11和103-12的信号。

图1e示出了根据本公开的实施例的由存储器存储系统使用的数据路径的示例。由存储器存储系统100使用的数据路径包括写入路径和读取路径两者。如图1e所示的实施例所示,写入路径可以例如在主机接口模块112从应用接收到数据写入指令时开始。写入路径可包括crc编码器模块117、加密模块119、擦除码编码器模块121和/或数据片段分组模块124以及纠错编码器模块122的进一步处理。如本文所述,存储器存储系统100经由信道115或另一种接口类型(例如,开放式nand接口、onfi)耦合到nand管芯103。可以使用同步和异步触发模式(切换(toggle))将数据移动到nand管芯103。

数据经由相同的切换机构和信道115从nand管芯103移动到读取路径。读取路径可包括纠错解码器模块123、擦除码解码器模块120、解密模块118和crc编码器模块116的进一步处理。然后,读取路径可包括经由主机接口模块112传送给应用的数据,该应用最初发出写入操作。此外,如图1e所示,开关130可用于触发或旁路擦除码解码程序。

图2a为描绘根据本公开的实施例的用于执行数据恢复程序的数据片段处理的示例的框图。如图2a所示,擦除码编码器模块121从被写入一或多个nand管芯的数据生成多个不同的数据片段,从而创建多个冗余数据片段和/或奇偶校验数据片段。此外,相同初始数据的数据片段可以跨越不同的nand管芯分布。例如,在一个实施例中,数据片段326-1、327-1和328-1可以为存储在单独的nand管芯(例如,分别为nand管芯107-1、107-2、107-n)中的单独数据片段,该nand管芯各个可以用于响应于对初始形式的数据发出“读取”操作的应用,在数据分段之前,独立地将数据恢复为初始形式。在一个实施例中,诸如数据片段326-1至328-n的每个数据片段可以存储8字节的数据和1个符号字节。

这些数据片段可以分别存储在固定长度的连续的存储块中,诸如在相应管芯内的页存储器中。例如,如图2a所示,页存储器326可以在nand管芯107-1中存储多个不同的数据片段,诸如数据片段326-1、326-2、326-3、数据片段326-n等。此外,页存储器327可以将单独的一组不同数据片段(诸如数据片段327-1、327-2、327-3、数据片段327-n等)存储在不同的存储器存储装置,诸如nand管芯107-2内。此外,页存储器328可以将单独的另一组不同数据片段(诸如数据片段328-1、328-2、328-3、数据片段328-n等)存储在不同的存储器存储装置,诸如nand管芯107-n内。

图2b和2c为描绘根据本公开的实施例的数据分组程序的示例的框图。如图2b和2c所示,数据片段分组模块124将分布在单独nand闪存管芯之中的多个不同数据片段分组。例如,如图2b所示,数据片段分组模块124可以生成分组数据集426-1,其包括数据片段326-1、327-1和329-1。如图2c所示,在一个实施例中,分组数据集426-1可以包括来自同一页的不止一个的数据片段。

进一步参考图2b所示的实施例,数据片段分组模块124还可以生成分组数据集426-2,其包括数据片段326-2、327-2和329-2。此外,数据片段分组模块124可以生成分组数据集426-3,其包括数据片段326-3、327-3和329-3。以此方式,存储器存储系统100从每个nand管芯获取几页存储器,并在多个nand管芯之间形成互连以形成分组数据集。

以此方式,数据片段分组模块124生成多个分组数据单元,其中分组在所述分组数据单元中的数据片段密切相关的。例如,通过使用每个相应的分组数据集中的数据片段,可以使用存储在完全不同的nand管芯中的数据将写入特定nand管芯的数据恢复为初始形式。例如,进一步参考图2b和2c,分组数据集426-1的数据片段326-1、327-1和329-1可以各自独立地与从应用发出的相同写命令相关联。

因此,当请求由写入命令生成的结果数据的应用发出读取请求时,存储器存储系统100可以仅使用数据片段326-1、327-1和329-1将所期望的数据恢复为其初始形式。以此方式,该存储器存储系统100仅需要从具有n个数据片段(k<n)的组中读取任何k个数据片段来重建所有剩余的n-k个数据片段。因此,存储器存储系统100减少了应用于物理页上的读取操作。当一个读取请求落在当前正在被擦除的nand管芯上时,待读取的页存储器将被同一组中的另一个页存储器的内容检索。

根据一个实施例,擦除码编码器模块121被配置成使用用于执行擦除编码程序的最小距离分离(mds)码。例如,通过使用mds码诸如里德-所罗门(rs)码(n,k)(其中,n为一个码中的片段的总数,以及k为初始数据片段的片段的总数),数据片段分组模块124生成被配置成通过读取数据片段组的任何k个片段来重建n个片段的任何n-k个数据片段的数据片段分组。例如,擦除码编码器模块121可以被配置成使用缩短的码字,其中,码字长度n=28-1-7=248以及k=216。因此,该代码可以直接纠正32个错误符号。每个片段具有8个符号,所以一个码字可以具有31个数据片段。每个数据片段可以在一个nand闪存管芯中,使得一个8k字节的页容纳1024个数据片段。

例如,进一步参考图2a,数据片段326-1、327-1和328-1可以利用第一码字配置。此外,数据片段326-2、327-2和328-2可以利用第二码字配置。另外,数据片段326-3、327-3和328-3可以利用第三码字配置。因此,通过使用由擦除码编码器模块121生成的数据片段的子集,可以在相应的物理位置上检索与初始结果数据相关的所有数据片段而无需实际感测。以此方式,存储器存储系统100被配置成读取最少数量的片段以重建尽可能多的片段。因此,当一些nand闪存管芯不可用于读取时(诸如,由于被擦除、管芯故障、固有的ecc故障等导致芯片被锁定),仍然可以检索其内容。

图3为根据本公开的实施例的用于减少存储器存储延迟并提高鲁棒性的示例性过程的流程图。

在步骤301,存储器存储系统启动处理由主机装置发出的读取请求的程序。

在步骤302,包含在存储器存储系统中的闪存转换层(ftl)定位与读取请求相关的物理页地址。

在步骤303,由存储器存储系统确定存储待读取的所需内容的nand管芯当前是否被锁定。如果nand管芯未被锁定,则存储器存储系统继续读取nand管芯的内容,如步骤304所详述。如果nand管芯被锁定,则存储器存储系统使用与锁定的nand管芯分成一组的其他nand管芯的页存储器执行并行读取操作,如步骤305所详述。

在步骤304,nand管芯未被锁定,并因此,存储器存储系统继续读取nand管芯的内容。在完成读取时,存储器存储系统完成读取请求的处理,如步骤309所详述。

在步骤305,nand芯片被锁定,并因此,存储器存储系统使用与锁定的nand管芯分成一组的其他nand管芯的页存储器来执行并行读取操作。

在步骤306,存储器存储系统执行擦除解码以再现所需页面的内容。

在步骤307,存储器存储系统对再现的数据执行crc编码程序以用于将其传送至主机接口。

在步骤308,由存储器存储系统确定是否已经读取了最后存储器页。如果已经读取最后存储器页,则存储器存储系统完成由主机装置在步骤301发出的读取请求的处理,如步骤309所详述。如果尚未读取最后存储器页,则存储器存储系统继续执行处理所发出的读取请求的程序,如步骤301所详述。

在步骤309,已经读取最后存储器页,因此存储器存储系统完成由主机装置在步骤301发出的读取请求的处理。

图4a为根据本公开的实施例的用于执行数据分段和数据分组程序的示例性过程的流程图的第一部分。

在步骤401,存储器存储系统通过网络总线从主机装置接收第一信号,以将数据写入多个nand管芯中的nand管芯。

在步骤402,存储器存储系统在nand管芯中分配存储器页,以使用被配置用于存储器存储系统的多个数据信道中的相应数据信道,基于在步骤401发出的指令来执行写入程序。

在步骤403,通过使用擦除码程序,存储器存储系统将从在步骤402期间执行的写入程序生成的结果数据分段成多个数据片段。由存储器存储系统为每个数据片段生成奇偶校验数据。奇偶校验数据通过不同的数据信道传送,并由来自多个nand管芯的至少两个nand管芯存储。

图4b为根据本公开的实施例的用于执行数据分段和数据分组程序的示例性过程的流程图的第二部分。

在步骤404,存储器存储系统针对与由在步骤402期间执行的写入程序生成的结果数据相关的每个数据片段生成数据分组。

在步骤405,存储器存储系统通过网络总线从主机装置接收第二信号,以读取由在步骤402期间执行的写入程序生成的结果数据。第二信号包括通过数据信道访问指定的nand管芯以执行读取程序的指令。

在步骤406,存储器存储系统识别与通过读取操作所寻找的数据相关联的数据组,并且相应地发送第三信号以执行在步骤405期间发出的读取操作。第三信号包括向存储与读取操作相关的数据片段的每个nand管芯并行传送的多个读取操作信号。

在步骤407,存储器存储系统使用包含在步骤406期间所识别的数据组中的数据片段将读取操作之后所寻找的数据恢复为初始形式,并将该数据传送到寻找该数据的主机装置。

尽管上面参考附图描述了本公开的示例性实施例,但是本领域技术人员应理解,在没有改变本公开的必要特征或精神的情况下,可以以各种方式实现本公开。本公开的范围应由附属权利要求解释,并且应被解释为在与本公开的范围等同的范围内的所有技术属于本公开的范围。

根据实施例,本文所述的技术通过一或多个专用计算装置实现。专用计算装置可被硬连线以执行该技术;可包括数字电子装置,诸如一或多个专用集成电路(asic)或被永久编程以执行该技术的现场可编程门阵列(fpga);可包括被编程以根据在固件、存储器、其他存储或其组合中的程序指令执行本技术的一或多个通用硬件处理器。此些专用计算装置也可将定制的硬连线逻辑、asic或fpga与定制编程组合以完成本技术。专用计算装置可为数据库服务器、存储装置、台式计算机系统、便携式计算机系统、手持式装置、联网装置或包含硬连线和/或程序逻辑以实现本技术的任何其他装置。

在本公开的实施例的前述详细描述中,已经阐述了许多具体细节以便提供对本公开的透彻理解。然而,本领域的普通技术人员应认识到,本公开能够在没有这些具体细节的情况下实施。在其他情况下,未详细描述公知的方法、程序、部件和电路,以免不必要地模糊本公开的实施例的各方面。

尽管为了清楚起见,方法能够被描绘为编号步骤的序列,但编号并不一定决定步骤的次序。应理解,一些步骤可被跳过、并行执行或不需要保持严格的序列次序的情况下执行。示出本公开的实施例的附图为半图示和不按比例的,并且具体地,一些尺寸是为了清楚呈现,并且在附图中被放大。类似地,尽管为了易于描述,附图中的视图通常显示相似的取向,但是在附图中的这种描绘在大多数情况下是任意的。

因此,描述了根据本公开的实施例。虽然已经在特定实施例中对本公开进行了描述,但本公开仅受所附权利要求和适用法律的规则和原则所要求的范围限制。

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