使用定制错误校正来适应固态驱动器中的可变页面大小的制作方法

文档序号:18413899发布日期:2019-08-13 19:05阅读:222来源:国知局
使用定制错误校正来适应固态驱动器中的可变页面大小的制作方法

本申请涉及存储设备,并且具体地,涉及用于支持固态设备中的可变扇区大小的系统、装置和方法。



背景技术:

nand闪存固态驱动器(ssd)设备的基本且可读单元是“扇区”或“页面”。ssd将所有数据存储在布置在ssd的多个逻辑层内的许多页面上。早期和当前的传统固态驱动器(ssd)设备利用512个字节或4096个字节(4kb)的固定扇区大小。最近,ssd已支持“可变扇区大小”。可变扇区大小指代支持超过包括随机扇区大小的标准512b和4kb扇区大小的扇区大小。计算机架构的进步(诸如nvmexpress(nvme)设备的激增)已产生扇区大小的许多选项,包括520、528、4104、4160和4224字节页面大小。可变扇区大小被设计来允许用户和应用在每个扇区中插入附加管理信息以及存储在ssd上的实际数据。

由于nand闪速存储器的基本特性而出现在扇区中存储附加数据的需要。具体地,用于给定页面的管理数据被理想地存储在页面的区域中,使得可以连同页面一起读取管理数据,从而消除多次读取。附加地,每个扇区的逻辑块地址(lba)被作为管理数据存储在扇区中,通常在扇区的带外(oob)区域中。lba数据被存储在扇区内,使得可通过读取个别扇区的内容来重建lba至物理块地址(pba)映射。

管理数据的前面使用遭受多个缺陷。首先,将lba存储在扇区的oob区域中导致不必要的读取。因为nand闪速存储器随访问而降级,所以在oob区域中存储lba的nand闪速存储器加速底层存储器器件的故障。第二,由于在读取并写入到nand闪速存储器时存在错误,必须在nand闪速存储器的一个或多个位置中复制lba至pba映射的副本,从而限制存储器的可用存储大小。



技术实现要素:

所公开的实施例通过提供用于从nand闪存器件上的储存器中移除lba的系统、设备和方法来补救这些缺陷。同利用每个页面的lba占用nand闪存存储空间的当前系统对比,所公开的实施例移除此限制并且因此增加nand闪存器件的总可用空间。因此,对于具有可变扇区大小的nand闪存器件,所述方法使得能够增加存储量,同时使校正个别nand闪存页面中的错误所需的奇偶校验比特的数量最小化。

为了实现以上解决方案,所公开的实施例提供一种包括校验子(syndrome)计算器和改进的纠错码(ecc)编码器/解码器的改进的nand闪存器件。具体地,所述校验子计算器基于用于给定页面的lba计算校验子。此校验子用于分别在写入和读取操作期间对nand闪存页面进行编码和解码。结果是由于基于lba的校验子的使用给定码字与lba强相关并且不必在nand闪存页面中存储lba。所公开的实施例附加地描述一种用于在不要求在个别nand闪存页面中存储lba的情况下重建nand闪存器件的lba至pba映射的方法。

在一个实施例中,公开了一种系统,所述系统包括:nand闪存存储器件,所述nand闪存存储器件包括多个nand闪存页面;nand闪存转换层(ftl),所述nandftl被配置为将nand闪存页面的逻辑块地址(lba)转换为物理块地址(pba);校验子计算器,所述校验子计算器被配置为使用逻辑块地址(lba)和lba奇偶校验矩阵来计算校验子,所述lba与由主机设备发出的读取命令相关联;以及纠错码(ecc)解码器,所述ecc解码器被配置为:读取位于与和所述读取命令相关联的所述lba相关联的pba处的码字,所述码字包括多个用户数据比特和多个奇偶校验比特,在所述码字收敛于所述校验子的情况下确认所述码字不包含错误,并且将所述用户数据比特发送到所述主机设备作为对所述读取命令的响应。

在另一实施例中,公开了一种方法,所述方法包括:接收来自主机设备的读取命令,所述读取命令包括nand闪存页面的逻辑块地址(lba);读取位于与所述lba相关联的物理块地址(pba)处的码字,所述码字包括多个用户数据比特和多个奇偶校验比特;使用所述lba和lba奇偶校验矩阵来计算校验子;在所述码字收敛于所述校验子的情况下确认所述码字不包含错误;以及将所述用户数据比特发送到所述主机设备作为对所述读取命令的响应。

在另一实施例中,公开了一种方法,所述方法包括:选择nand闪存页面;读取存储在所述nand闪存页面中的用户数据和奇偶校验比特;将逻辑块地址(lba)部分附加到所述用户数据和奇偶校验比特以形成码字,所述lba部分包括全零;向所述lba部分中的每个比特指派可能性;利用软判决解码器对所述码字进行解码,所述软判决解码器使用消息传递算法;以及在所述消息传递算法的至少一次迭代之后确认所述nand闪存页面的lba。

附图说明

本公开的上述及其他目的、特征和优点将从如附图中所图示的实施例的以下描述中显而易见,在附图中附图标记在各个视图中自始至终指代相同的部分。附图不一定按比例绘制,重点替代地被放在图示本公开的原理上。

图1是图示根据本公开的一些实施例的nand闪存封装的布局的逻辑图。

图2是根据本公开的一些实施例的用于对nand闪存页面进行解码和编码的码字和奇偶校验矩阵的图。

图3是图示根据本公开的一些实施例的用于访问nand闪存封装的系统的框图。

图4是图示根据本公开的一些实施例的用于将数据写入到nand闪存页面的方法的流程图。

图5是图示根据本公开的一些实施例的用于将数据读取到nand闪存页面的方法的流程图。

图6是图示根据本公开的一些实施例的用于重建lba至pba映射的方法的流程图。

图7是图示根据本公开的一些实施例的用于访问nand闪存器件的设备的硬件图。

具体实施方式

现在将在下文中参考附图更充分地地描述本公开,附图形成其一部分,并且附图通过图示来示出某些示例实施例。然而,主题可以被以各种不同的形式具体实现,并且因此,涵盖或要求保护的主题旨在被解释为不限于本文所阐述的任何示例实施例;示例实施例被仅仅提供为说明性的。同样地,要求保护或涵盖的主题的相当广范围是打算的。除了别的以外,例如,可以将主题具体实现为方法、设备、组件或系统。因此,实施例可以例如采取硬件、软件、固件或其任何组合(除软件本身以外)的形式。以下详细描述因此不旨在在限制性意义上进行。

在整个说明书和权利要求书中,术语可以具有在上下文中建议或者暗示的超出显式地陈述的含义的细微差别的含义。同样地,如本文所使用的短语“在一个实施例中”不一定指代相同的实施例,并且如本文所使用的短语“在另一实施例中”不一定指代不同的实施例。例如,要求保护的主题旨在整个地或部分地包括示例实施例的组合。

一般而言,可以至少部分地根据上下文中的用法来理解术语。例如,如本文所使用的术语(诸如“和”、“或”或“和/或”)可以包括可以至少部分地取决于使用此类术语的上下文的各种含义。通常,“或”在用于使列表(诸如a、b或c)相关联的情况下旨在意指a、b和c(这里在包括性意义上使用)以及a、b或c(这里在排他性意义上使用)。此外,如本文所使用的术语“一个或多个”至少部分地取决于上下文,可以用于在单数意义上描述任何特征、结构或特性,或者可以用于在复数意义上描述特征、结构或特性的组合。类似地,诸如“一”、“一个”或“该”的术语可以至少部分地取决于上下文而被理解为传达单数用法或者传达复数用法。此外,术语“基于”可以至少部分地取决于上下文而被理解为不一定旨在传达一组排他性因素,而是可以替代地允许存在不一定明确地描述的附加因素。

在下面参考方法和设备的框图和操作图示对本公开进行描述。应理解的是,框图或操作图示的每个块以及框图或操作图示中的块的组合可借助于模拟或数字硬件和计算机程序指令来实现。可将这些计算机程序指令提供给用于更改其在此详述的功能的通用计算机、专用计算机、asic或其他可编程数据处理装置的处理器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令实现在框图或操作块或块中指定的功能/行为。在一些替代实施方式中,块中指出的功能/行为可不按照操作图示中指出的顺序发生。例如,取决于所涉及的功能性/行为,实际上可基本上同时地执行相继示出的两个块,或者有时可以按照相反顺序执行这些块。

可将这些计算机程序指令提供给以下各项的处理器:用于将其功能更改为特殊目的的通用计算机;专用计算机;asic;或其他可编程数字数据处理装置,使得经由计算机或其他可编程数据处理装置的处理器执行的指令实现框图或操作块或块中指定的功能/行为,从而依照本文的实施例变换其功能性。

出于此公开的目的,计算机可读介质(或计算机可读存储介质/媒体)存储计算机数据,所述数据可以机器可读形式包括可由计算机中执行的计算机程序代码(或计算机可执行指令)。作为示例而非限制,计算机可读介质可以包括用于数据的有形或固定存储的计算机可读存储介质,或用于包含代码信号的瞬时解释的通信介质。如本文所使用的计算机可读存储介质指代物理或有形存储(与信号相反)并且包括但不限于用任何方法或技术实现以便于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的有形存储的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于ram、rom、eprom、eeprom、闪速存储器或其他固态存储器技术、cd-rom、dvd或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁存储设备,或可用于有形地存储所期望的信息或数据或指令并且可由计算机或处理器访问的任何其他物理或材料介质。

图1是图示根据本公开的一些实施例的nand闪存封装的布局的逻辑图。

nand闪存封装(102)包括存储器器件。在一些实施例中,nand闪存封装(102)包括例如在固态存储设备(ssd)中使用的存储器芯片。ssd设备包括用作硬盘、便携式存储驱动器和其他用途的设备。nand闪存封装(102)表示闪速存储器件的最高组织级别。在一些实施例中,ssd包括在单个电路板、基板或其他连接设备上配置的多个nand闪存封装。

最高组织级别nand闪存封装(102)是裸片,如图1中作为裸片(104a、104b、104n)所图示的。nand闪存封装(102)中的裸片的数量可以是适合于nand闪存封装(102)的操作的任何数量。在常见场景中,nand闪存封装将包括一个、两个或四个裸片。虽然可以使用任何数量的裸片,但是裸片的数量通常是2的幂。给定裸片(104a)是可以独立地执行命令的最小单元。

给定裸片(104a)包括一个或多个平面(106a、106b、106c和106n)。在实践中,裸片包括一个或两个平面,然而平面的数量不显式地限于一个或两个平面。一般而言,可以在平面级别下执行并发操作。

每个平面(106a、106b、106c和106n)包括一个或多个块。例如,如图所示,平面(106b)包括块(108a、108b、108c,108d和108n)。一般而言,块的数量受平面大小以及定义块大小(例如,4mb或8mb)限制。块(例如,108a)是可以被擦除的数据的最小单元。

每个块包括许多页面。例如,如图所示,块108c包括页面(110a、110b、110c、110d、110n)。与块一样,页面的数量受平面大小以及定义页面大小(例如,8kb或16kb)限制。页面是可以被写入的最小单元。结合块级擦除约束,为了“擦除”页面,必须擦除整个底层块,从而要求在擦除块之前“保存”块中的其他有效页面,并且因此擦除包括在块中的其他页面。

给定页面(例如,页面110c)包括数据部分(112)和带外区域(114)。数据部分(112)包括由nand闪存封装(102)存储在相应页面中的用户数据。如本文所讨论的,oob部分(114)存储页面的各种元数据属性。oob部分(114)包括在写入操作期间生成并且在读取操作期间用于检测用户数据中的错误的奇偶校验比特。一般而言,nand闪存封装(102)可以利用各种类型的线性块编码方案来生成奇偶校验比特,所述线性块编码方案诸如汉明码、博斯-乔赫里-霍昆格姆(bose、chaudhuri和hocquenghem,bch)码、里德-所罗门(reed-solomon)码、turbo码或低密度奇偶校验码(ldpc)。oob部分(114)附加地存储识别页面(例如,110c)在封装内的逻辑位置的逻辑块地址(lba)。将lba存储在oob部分(114)中在lba至物理块地址(pba)映射损坏或以其他方式丢失的情况下允许lba至pba重新映射。一般而言,lba至pba映射与页面本身分开地存储并且被闪存转换层(ftl)利用来将例如读取/写入命令中的lba转换为被利用来提取个别页面的pba。在某些页面(例如,块的第一页面和最后页面)中,oob区域(114)可以附加地包括擦除计数、擦除密封标记、序列编号和坏块指示器。

图2是根据本公开的一些实施例的用于对nand闪存页面进行解码和编码的码字和奇偶校验矩阵的图。

图2具体地图示用于对nand闪存数据执行错误码校正(ecc)的常规技术。一般而言,在解码期间,从nand闪存封装中检索码字c(202),所述码字c(202)包括奇偶校验比特部分(202a)、用户数据部分(202b)和lba部分(202c)。如上面所讨论的,用户数据部分(202b)和lba部分(202c)分别被存储在用户数据段和oob区域中的闪存页面内。奇偶校验部分(202a)同样地被存储在oob区域中。在读取期间,从封装中读取码字c(202)。

为了对码字进行解码并且识别错误的存在,使用奇偶校验矩阵h(204)。奇偶校验矩阵h包括三个子矩阵:奇偶校验矩阵hp(204a)、数据矩阵ha(204b)和lba矩阵hb(204c)。在解码时,当前系统计算h·ct以识别在码字c(202)中是否存在任何错误。具体地,无错误码字导致h·ct=0(或者同样c·ht=0)。

如可在图2中看到的,c=[奇偶校验|数据|lba]并且h=[hp|ha|hb]。由此可推导出[奇偶校验|数据]·[hp|ha]=[lba|hb]。换句话说,积[lba|hb]等于校验子s。因为nand闪存封装知道子矩阵hp、ha和hb,并且在影响nand闪存封装的页面的地址的所有操作期间提供lba,所有可以在操作本身期间根据lba和hb的点积(dotproduct)实时地计算校验子s。以这种方式,不要求将lba写入到nand闪速存储器,并且因此,可以减少存储在nand闪速存储器中的数据量。所公开的实施例讨论用于通过修改例如由nand闪存器件执行的读取和写入操作来实现以上lba提取的各种系统、设备和方法。

图3是图示根据本公开的一些实施例的用于访问nand闪存封装的系统的框图。

在所图示的实施例中,系统包括文件系统(302)。在一个实施例中,文件系统(302)可以包括提供对nand闪存(310)的访问的任何类型的文件系统。例如,文件系统(302)可以包括由诸如图7中图示的客户端设备实现的ext2文件系统。文件系统(302)发出用于分别从nand闪存(310)中检索数据并且将数据存储到nand闪存(310)的读取命令和写入命令。用于写入命令的信息的流程通过实线(3101-3106)来图示。用于读取命令的信息的流程通过虚线(3201-3206)来图示。

除了文件系统(302)之外,系统还包括闪存芯片(304)。闪存芯片(304)包括nand闪存转换层(ftl)(306)。ftl(306)包括用于将lba映射到pba的转换层。在一些实施例中,ftl(306)位于闪存芯片(304)它本身上(例如,在固件中)。在其他实施例中,ftl(306)可以驻留在主机设备(例如,操作文件系统(302)的设备)上。闪存芯片(304)附加地包括nand闪存储存器(310),所述nand闪存储存器(310)可以包括诸如图1中图示的存储介质(例如,存储数据的裸片、平面、块和页面)。

闪存芯片(304)附加地包括校验子计算器(308)。在一个实施例中,校验子计算器(308)可以包括嵌入在闪存芯片(304)上的专用微处理器。例如,校验子计算器(308)可以包括用于执行校验子计算的专用微控制器、现场可编程门阵列(fpga)或专用asic。在一个实施例中,校验子计算器(308)存储lba奇偶校验矩阵,然而在其他实施例中校验子计算器(308)可以从闪存芯片(304)上的存储器(未图示)访问lba奇偶校验矩阵。在一个实施例中,由校验子计算器(308)使用的子矩阵包括在图2的描述中讨论的hb矩阵。

与校验子计算器(308)类似,ecc编码器/解码器(312)可以包括嵌入在闪存芯片(304)上的专用微处理器。在一些实施例中,ecc编码器/解码器(312)可以包括单独的ecc编码器和单独的ecc解码器。例如,ecc编码器/解码器(312)可以包括用于执行校验子计算的专用微控制器、现场可编程门阵列(fpga)或专用asic。与校验子计算器(308)一样,ecc编码器/解码器(312)可以在本地存储奇偶校验矩阵或者从外部存储器访问奇偶校验矩阵。在一个实施例中,由ecc编码器/解码器(312)使用的子矩阵包括在图2的描述中讨论的子矩阵hp和ha。在一个实施例中,ecc编码器/解码器(312)可以包括软判决解码器。

在写入操作期间,文件系统(302)向nandftl(306)发送lba(线3101)。nandftl(306)生成用于访问nand闪存(310)的pba(线3106)。同时地,nandftl(306)将lba发送到校验子计算器(308)(线3103),所述校验子计算器(308)计算用于lba的校验子并且将该校验子发送到ecc编码器/解码器(312)(线3104)。ecc编码器/解码器(312)使用校验子来对从文件系统接收到的数据进行编码(线3102)并且将码字写入到nand闪存(310)(线3105)。

在读取操作期间,文件系统(302)向nandftl(306)和校验子计算器(308)发送lba(线3201、3202)。如在写入操作中一样,nandftl(306)生成用于访问nand闪存(310)的pba(线3203)并且校验子计算器(308)计算用于lba的校验子并且将该校验子发送到ecc编码器/解码器(312)(线3204)。ecc编码器/解码器(312)使用pba来从nand闪存(310)访问码字(线3205)。ecc编码器/解码器(312)然后使用校验子和奇偶校验矩阵(hp和ha)来检查码字是否有错误。ecc编码器/解码器(312)将错误校验的码字发送回到文件系统(302)(线3206)。

分别连同图4和图5一起更充分地讨论这些写入和读取操作的具体细节。

图4是图示根据本公开的一些实施例的用于将数据写入到nand闪存页面的方法的流程图。

在步骤402中,该方法接收写入命令,写入请求包括lba和用户数据。

在所图示的实施例中,写入命令由如在图3的描述中所讨论的客户端设备的文件系统发出。在一个实施例中,写入命令包括识别在nand闪存封装上应该写入数据的逻辑位置的lba。写入命令附加地包括表示要写入到nand闪存封装的用户数据的多个字节。

在步骤404中,该方法生成多个奇偶校验比特以使用包括在写入命令内的数据来形成码字。

在一个实施例中,该方法通过计算包括在写入命令内的数据和生成器矩阵g的点积来生成多个奇偶校验比特。如本领域中已知的,可以基于使用户数据矩阵ha和奇偶校验矩阵hp转置生成生成器矩阵g。当计算码字时,计算使码字收敛到预先计算的校验子s上(在图5的描述中更详细地讨论)。

在步骤406中,该方法基于与写入命令相关联的lba来检索pba。

尽管被图示为在步骤404之后发生,然而该方法可以在步骤408之前的任何时间在步骤406中计算pba并且可以与步骤404并行地执行pba的计算。在一个实施例中,使用ftl来计算pba(如先前所描述的)。pba表示通过lba识别的页面的物理地址。

在步骤408中,该方法使用pba来将码字写入到nand闪速存储器。

如在步骤406的描述中所讨论的,码字包括用户数据部分和奇偶校验比特部分。因此,同现有nand闪速存储器对比,lba未被包括在码字内。因此,在步骤408中,该方法将用户数据和奇偶校验比特写入到通过pba识别的物理页面。

虽然lba未被写入到通过pba识别的页面,但是使用lba来生成在编码时使用的校验子导致lba与用户比特之间的强相关。具体地,因为基于lba的校验子用于使码字中的奇偶校验比特收敛,所以结果得到的码字与用于生成校验子的lba强相关。

图5是图示根据本公开的一些实施例的用于将数据读取到nand闪存页面的方法的流程图。

在步骤502中,该方法从文件系统接收读取命令。

在所图示的实施例中,读取命令由如在图3的描述中所讨论的客户端设备的文件系统发出。在一个实施例中,读取命令包括对在nand闪存封装上应该从中读取数据的逻辑位置进行识别的lba。

在步骤504中,该方法使用与读取命令相关联的lba来计算pba。在一个实施方案中,使用ftl来计算pba(如先前所描述的)。pba表示通过lba识别的页面的物理地址。

在步骤506中,该方法读取位于在步骤504中计算出的pba处的码字。在一个实施例中,读取码字包括向底层nand闪速存储器发出读取命令以检索pba处的码字。

在一个实施例中,所返回的码字可以被表示为r,其中r长度为n,其中n等于用户数据k加上一组奇偶校验比特n-k的长度。为了校正错误,r可以被认为是r=c+e,其中c表示有效码字并且e表示错误向量。

在步骤508中,该方法使用lba来计算校验子,与在步骤404中执行的计算类似,其公开内容通过引用整体地并入本文。

在步骤510中,该方法试图使用校验子来对码字r进行解码。

在一个实施例中,在步骤510中,该方法计算所接收到的码字r与奇偶校验矩阵hsmall的点积。在一个实施方案中,hsmall包括先前所讨论的矩阵hp和ha(即,[hp|ha])。同现有nand闪存系统对比,hsmall的使用导致考虑到hsmall<[hp|ha|hb],完成ecc解码路由的局部迭代的延迟更短。

如上面所指示的,在步骤510中,该方法可以计算r·hsmallt以针对所接收到的码字获得对一个或多个陪集首(cosetleader)的识别。

在步骤512中,该方法确定解码是否收敛于校验子s。在一个实施例中,如果r·hsmallt=0,则该方法确定解码收敛于校验子s。在这种场景中,解码成功而在所接收到的码字r中未识别任何错误。

在一个实施例中,作为步骤512的一部分,该方法可以校正在步骤510中识别的任何可校正的错误。也就是说,该方法可以校正与校验子s的可校正的陪集首相对应的任何错误。

在步骤514中,该方法在确定r·hsmallt=0时将码字r发送到文件系统。也就是说,该方法在确定码字不包括任何错误时将码字返回给文件系统作为对读取命令的响应。

如上面所图示的,由于奇偶校验矩阵的较小大小,hsmall的使用使得能实现对来自nand闪存的读取码字的更快解码。然而,因为奇偶校验矩阵不包括lba奇偶校验矩阵并且因为码字不包括lba,所以来自较大hb矩阵的相关和辅助丢失了。因此,由于较小的奇偶校验矩阵而存在不能被校正的错误的可能性。为了补偿这个,该方法进一步包括用于在解码时利用全hb矩阵的子例行程序。

在步骤516中,该方法在方法确定解码未收敛于校验子s(即,可校正的陪集首)时检索lba矩阵hb。在原始比特错误率高于由hsmall支持的可校正的错误率的场景中给定码字可能不会收敛于校验子s。

在步骤518中,该方法使用lba矩阵来对码字进行解码。

在一个实施例中,在步骤518中,该方法将lba添加到码字以生成包括用户数据、奇偶校验比特和lba的码字。进一步地,该方法将lba矩阵(hb)添加到奇偶校验矩阵[hp|ha]。因此,码字和奇偶校验矩阵与图2中图示的码字和奇偶校验矩阵相同。然而,同利用图2中的奇偶校验矩阵和码字的当前系统对比,步骤518中的lba被保证是正确的,因为lba是从文件系统接收的。也就是说,软信息lba被保证不包括任何错误比特并且因此可以被指派最大置信度水平以用于协同解码。

在解码处理步骤518期间,码字的lba部分中的最大置信度帮助软判决解码器通过在其他可变节点和校验节点上演变软信息来校正错误。因此,通过使用已知的lba,即使当存在高原始误码率时该方法也可使码字在校验子s收敛。

在步骤520中,该方法确定软解码是否收敛于校验子s,与步骤512中描述的过程类似。在一个实施例中,如果r·ht=0,则该方法再次确定解码收敛于校验子s,其中h表示全奇偶校验矩阵。在这种场景中,解码成功而未在所接收到的码字r中识别到任何错误。在一个实施例中,作为步骤520的一部分,该方法可以校正在步骤518中识别的任何可校正的错误。也就是说,该方法可以校正与校验子s的可校正的陪集首相对应的任何错误。

如果码字可被解码并且使用全奇偶校验矩阵来校正任何错误,则方法将码字r发送到文件系统。也就是说,该方法在确定码字不包括任何错误时将码字返回给文件系统作为对读取命令的响应。

替换地,在码字仍然未能收敛于校验子s的场景中,该方法可以在步骤522中发信号通知解码处理中的错误。在一个实施例中,该方法可以进一步识别包含不可校正的错误的比特。

图6是图示根据本公开的一些实施例的用于重建lba至pba映射的方法的流程图。

如上面所图示的,所公开的实施例避免了在相应页面的oob区域中存储给定nand闪存页面的lba。一般地,nand闪存器件存储由nandftl使用的lba至pba映射表的多个副本以补偿lba至pba映射表的一个或多个副本的潜在丢失。具体地,这些表被存储在给定nand闪存器件上的多个不同的位置处以便避免数据丢失。当远程时,存在丢失lba至pba映射表的所有副本的可能性。图6中公开的方法图示用于使用上面所讨论的矩阵来恢复完全丢失的lba至pba映射的方法。在所图示的实施例中,可以针对nand闪速存储器中的每个页面执行方法以便恢复与该页面相关联的lba。

在步骤602中,该方法读取包括用于给定nand闪存页面的数据和奇偶校验比特的码字。

如上面所讨论的,nand闪存仅存储在图3中讨论的写入过程期间生成的用户数据和奇偶校验比特。在此实施例中,该方法不利用lba来访问给定页面。相比之下,可以顺序地选择页面。

在步骤604中,该方法为码字的lba部分附加零。

如上面所讨论的,码字可以包括奇偶校验比特、用户数据部分和lba部分。在步骤604中,该方法使用一维零矩阵作为码字的lba部分。因此,码字可以包括c=[奇偶校验|数据|0]。

图6中图示的方法可以利用软判决解码器作为恢复过程的一部分(如上面所描述的)。因此,可以为码字c的每个比特指派指示可能值的可能性的“软信息”。在一个实施例中,用于码字的lba部分中的每个比特的软信息被设置为1或0的50%变化。

在步骤606中,该方法使用全奇偶校验矩阵来对附加零码字进行解码。

在一个实施例中,该方法可以使用附加零码字、全奇偶校验矩阵以及码字的归零lba部分的软信息来利用方法传递解码算法。使用ldpc作为示例,该方法可以解释与全奇偶校验矩阵相对应的图(例如,tanner图),所述图包括与全奇偶校验矩阵的行相对应的一组校验节点和与全奇偶校验矩阵的列相对应的一组比特节点。

使用此图,该方法传递沿着与全奇偶校验矩阵相对应的图的边缘接收的每个码字。首先,码字被从比特节点传递到校验节点,然后从校验节点传递回到比特节点。这两遍通过图形成单次迭代。在迭代结束时,比特节点通过对传入消息求和来计算消息的可靠性。该方法继续以这种方式传递消息,直到已处理了最大迭代次数或者已满足给定码字的所有奇偶校验方程为止。

在步骤608中,该方法写入经恢复的lba至pba映射。在一个实施例中,该方法可以将lba至pba映射存储在nand闪存器件上的指定位置中。

图7是图示根据本公开的一些实施例的用于访问nand闪存器件的设备的硬件图。

客户端设备(700)可以包括比图7中所示的那些更多或更少的组件。然而,所示的组件足以公开用于实现本公开的说明性实施例。

如图7中所示,客户端设备(700)包括经由总线(714)与大容量存储器(704)通信的处理单元(cpu)(702)。客户端设备(700)还包括一个或多个网络接口(716)、音频接口(718)、显示器(720)、键区(722)、照明器(724)、输入/输出接口(726)和相机或其他光学、热或电磁传感器(728)。如本领域的技术人员所理解的,客户端设备(700)可包括一个相机/传感器(728)或多个相机/传感器(728)。

客户端设备(700)可以可选地与基站(未示出)进行通信,或者直接地与另一计算设备进行通信。网络接口(716)包括用于将客户端设备(700)耦合到一个或多个网络的电路并且被构造用于与一种或多种通信协议和技术一起使用。网络接口(716)有时被称为收发器、收发设备或网络接口卡(nic)。

音频接口(718)被布置为产生并接收音频信号,诸如人类话音的声音。例如,音频接口(718)可以耦合到扬声器和麦克风(未示出)以使得能实现与其他人的电信并且为某个动作生成音频确认。显示器(720)可以是液晶显示器(lcd)、气体等离子体、发光二极管(led),或与计算设备一起使用的任何其他类型的显示器。显示器(720)还可以包括触敏屏幕,所述触敏屏幕被布置为接收来自诸如触针或来自人手的指头的物体的输入。

键区(722)可以包括被布置为从用户接收输入的任何输入设备。例如,键区(722)可以包括按钮数字拨号盘或键盘。键区(722)还可以包括与选择并发送图像相关联的命令按钮。照明器(724)可以提供状态指示并提供光。照明器(724)可以在具体时间段内或者响应于事件而保持活动。例如,当照明器(724)活动时,它可以从背后照亮键区(722)上的按钮并且在客户端设备被供电时保持接通。另外,当特定动作(诸如拨打另一客户端设备)被执行时照明器(724)可以按照各种图案从背后照亮这些按钮。照明器(724)还可以使定位在客户端设备的透明或半透明壳体内的光源响应于动作而照亮。

客户端设备(700)还包括用于与外部设备(诸如ups或交换板设备)或图7中未示出的其他输入端或设备进行通信的输入/输出接口(726)。输入/输出接口(726)可利用一种或多种通信技术,诸如usb、红外、蓝牙tm等。

大容量存储器(704)包括ram(706)、rom(710)和其他存储装置。大容量存储器(704)图示用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的计算机存储介质的另一示例。大容量存储器(704)存储用于控制客户端设备(700)的低级操作的基本输入/输出系统(“bios”)(712)。大容量存储器还可以存储用于控制客户端设备(700)的操作的操作系统。应领会的是,此组件可以包括诸如unix或linuxtm的版本的通用操作系统,或诸如windowsclienttm操作系统的专用客户端通信操作系统。操作系统可以包括java虚拟机模块,或者与java虚拟机模块对接,所述java虚拟机模块使得能够经由java应用程序控制硬件组件和操作系统操作。

存储器(704)进一步包括文件系统(708)。在一个实施例中,文件系统(708)可以包括诸如ext3的标准文件系统或任何适合的文件系统。如上面所讨论的,文件系统(708)向存储设备(未图示)发出读取、写入和其他命令。在一个实施例中,文件系统(708)向nand闪存(730)发出此类命令。在一个实施例中,nand闪存(730)可以包括实现诸如在通过引用并入的图3的描述中所描述的芯片(304)的一个或多个nand闪存芯片的固态驱动器或类似设备。一般而言,nand闪存(730)包括实现诸如图3中图示的芯片的任何基于nand闪存的设备。

出于本公开的目的,模块是(在有或没有人类交互或增进的情况下)执行或者促进本文描述的过程、特征和/或功能的软件、硬件或固件(或其组合)系统、过程或功能性或其组件。模块可包括子模块。模块的软件组件可以被存储在计算机可读介质上以供由处理器执行。模块可以与一个或多个服务器成一体或者由一个或多个服务器加载并执行。可以将一个或多个模块分组成引擎或应用。

本领域的技术人员将认识到,本公开的方法和系统可以被以许多方式实现并且因此将不受前面的示例性实施例和示例限制。换句话说,通过单个或多个组件在硬件和软件或固件的各种组合中执行的功能元件以及个别功能可以分布在客户端级别或服务器级别或两者的软件应用当中。在这方面,可以将本文描述的不同实施例的任何数量的特征组合成单个或多个实施例,并且具有少于或多于本文描述的所有特征的替代实施例是可能的。

功能性也可以整个地或部分地以现在已知或将变得已知的方式分布在多个组件当中。因此,无数软件/硬件/固件组合在实现本文描述的功能、特征、接口和偏好时是可能的。此外,本公开的范围涵盖用于执行所描述的特征及功能和接口的常规已知方式,以及可以像将被本领域的技术人员现在并此后所理解的那样对本文描述的硬件或软件或固件组件做出的那些变化和修改。

此外,在本公开中作为流程图所呈现和描述的方法的实施例通过示例来提供以便提供对该技术的更完整理解。所公开的方法不限于本文呈现的操作和逻辑流程。设想了各种操作的顺序被更改并且被描述为较大操作的一部分的子操作被独立地执行的替代实施例。

虽然已出于本公开的目的描述了各种实施例,但是此类实施例不应该被视为将本公开的教导限于那些实施例。可以对上面描述的元件和操作做出各种变化和修改,以获得保持在本公开中描述的系统和过程的范围内的结果。

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