一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

减少基于校验子的准循环解码器的延迟的制作方法

2021-03-19 12:21:00 来源:中国专利 TAG:存储器 装置 校正 总体上 文献
减少基于校验子的准循环解码器的延迟的制作方法

该专利文献总体上涉及非易失性存储器装置,并且更具体地,涉及非易失性存储器装置中的错误校正。



背景技术:

数据完整性是任何数据存储装置和数据传送的重要特征。强错误校正码(ecc)被推荐用于包括nand闪速存储器装置的各种类型的数据存储装置。

固态驱动器(ssd)使用多层nand闪存装置进行持久存储。然而,多层nand闪存装置可能本身不可靠,并且通常需要使用ecc来实现数据可靠性的显著提高,但是以ecc奇偶校验位的额外存储空间为代价。需要可以以最小延迟提供数据保护的越来越高效的ecc。



技术实现要素:

所公开技术的实施例涉及减少基于校验子的准循环解码器的延迟的方法、装置和系统。除了其他特征和优点之外,本文中描述的方法和装置有利地使得能够实施准循环线性码解码器的低延迟。

在示例方面,一种减少解码器的延迟的方法包括:接收噪声码字,该码字已经由准循环线性代码生成并且在被解码器接收之前被提供至通信信道;基于噪声码字计算校验子;生成多个存储器单元地址,第一存储器单元地址是校验子的函数,后续存储器单元地址在校验子的函数的预定地址范围内;以减少解码器的延迟的并行方式,根据多个存储器单元地址读取多个错误模式,计算多个错误模式中的每个的校验和;基于多个错误模式中的每个的校验和,确定发送码字的候选版本。

在另一示例方面,上述方法可以由包括处理器的视频编码器设备或视频解码器设备来实施。

在又一示例方面,这些方法可以以处理器可执行指令的形式实现并且存储在计算机可读程序介质上。

该专利文件中描述的主题可以以提供下列特征中的一个或多个的特定方式来实施。

附图说明

图1示出存储器系统的示例。

图2是示例性非易失性存储器装置的示图。

图3是示出非易失性存储器装置的单元电压电平分布(vth)的示例示图。

图4是示出非易失性存储器装置的单元电压电平分布(vth)的另一示例示图。

图5是示出编程干扰之前和之后的非易失性存储器装置的单元电压电平分布(vth)的示例示图。

图6是示出非易失性存储器装置的作为参考电压的函数的单元电压电平分布(vth)的示例示图。

图7示出准循环码的示例性奇偶校验矩阵。

图8是示出基于准循环校验子的解码器的示例的框图。

图9a是作为位错误率的函数的比较不同最小距离的码字失败率(cfr)的示例性能图。

图9b是作为码长度的函数的比较不同最小距离的码字失败率(cfr)的示例性能图。

图10是示出具有低延迟操作的基于准循环校验子的解码器的另一示例的框图。

图11示出用于减少准循环线性码解码器的延迟的另一示例方法的流程图。

具体实施方式

闪速存储器在诸如下列的便携式电子装置中普遍存在:计算机、数码相机、数字音乐播放器、蜂窝电话、个人数据助理(pda)等。这些主机装置使用闪存转换层(ftl)与闪速存储器通信,该ftl是用于将任意主机请求的地址(称为逻辑块地址(lba))转换成闪速存储器中的存储相应数据的实际位置(称为物理块地址(pba))的表。该表的大小通常很大,并且通常存储在动态随机存取存储器(dram)中。

通常,ftl至少执行下列功能:

○将更新的信息写入到新的空页面,并且将所有后续请求转换成其新地址

○通过均匀地使用可用页面来维持损耗均衡

○对所有使用的块高效地执行垃圾收集操作

图1至图6概述可以实施所公开技术的实施例的非易失性存储器系统。

图1是基于公开技术的一些实施例来实施的存储器系统100的示例的框图。存储器系统100包括存储器模块110,该存储器模块110可用于存储供其他电子装置或系统使用的信息。存储器系统100可以被并入(例如,位于电路板上)其他电子装置和系统中。可选地,存储器系统100可以被实施为外部存储装置,诸如usb闪存驱动器和固态驱动器(ssd)。

在存储器系统100中包括的存储器模块110可以包括存储器区域(例如,存储器阵列)102、104、106和108。存储器区域102、104、106和108中的每个可以包括在单个存储器管芯或多个存储器管芯中。存储器管芯可以包括在集成电路(ic)芯片中。

多个存储器区域102、104、106和108中的每个可以包括多个存储器单元。可以基于存储器单元组(memoryunit)执行读取操作、编程操作或擦除操作。因此,每个存储器单元组可以包括预定数量的存储器单元。存储器区域102、104、106和108中的存储器单元可以包括在单个存储器管芯或多个存储器管芯中。

存储器区域102、104、106和108中的每个中的存储器单元可以以行和列布置在存储器单元组中。存储器单元组中的每个可以是物理单元组。例如,多个存储器单元的组可以形成存储器单元组。存储器单元组中的每个也可以是逻辑单元组。例如,存储器单元组可以是可以由诸如存储库(bank)地址、块地址和基于页面的地址的唯一地址来标识的存储库、块或页面。在读取操作或写入操作期间,与特定存储器单元组相关联的唯一地址可用于访问该特定存储器单元组。基于该唯一地址,可以将信息写入到该特定存储器单元组中的一个或多个存储器单元或从该特定存储器单元组中的一个或多个存储器单元中检索信息。

存储器区域102、104、106和108中的存储器单元可以包括非易失性存储器单元。非易失性存储器单元的示例包括闪速存储器单元、相变存储器(pram)单元、磁阻随机存取存储器(mram)单元或其他类型的非易失性存储器单元。在存储器单元被配置为nand闪速存储器单元的示例实施方式中,可以基于页面来执行读取操作或写入操作。然而,基于块对nand闪速存储器执行擦除操作。

非易失性存储器单元中的每个可以被配置为单层单元(slc)或多层存储器单元。单层单元可以每单元存储一个信息位。多层存储器单元可以每单元存储多于一个信息位。例如,存储器区域102、104、106和108中的存储器单元的每个可以被配置为每单元存储两个信息位的多层单元(mlc)、每单元存储三个信息位的三层单元(tlc)或每单元存储四个信息位的四层单元(qlc)。在另一示例中,存储器区域111中的存储器单中的每个可以被配置为存储至少一个信息位(例如,一个信息位或多个信息位),并且存储器区域112中的存储器单元中的每个可以被配置为存储多于一个信息位。

如图1所示,存储器系统100包括控制器模块120。控制器模块120包括与存储器模块110通信的存储器接口121、与主机(未示出)通信的主机接口126、执行固件级别代码的处理器124以及临时或永久存储可执行固件/指令和相关信息的高速缓存和存储器122和123。在一些实施方式中,控制器模块120可以包括对存储在存储器模块110中的信息执行错误校正操作的错误校正引擎125。错误校正引擎122可以被配置为检测/校正单个位错误或多个位错误。在另一实施方式中,错误校正引擎125可以位于存储器模块110中。

主机可以是包括一个或多个处理器的装置或系统,操作该一个或多个处理器以从存储器系统100检索数据,或者将数据存储或写入到存储器系统100中。在一些实施方式中,主机的示例可以包括个人计算机(pc)、便携式数字装置、数字照相机、数字多媒体播放器、电视和无线通信装置。

在一些实施方式中,控制器模块120还可以包括与主机通信的主机接口126。主机接口126可以包括符合包括但不限于下列的主机接口规范中的至少一个的组件:串行高级技术附件(sata)、串列小型计算机系统接口(sas)规范、高速外围组件互连(pcie)。

图2示出基于所公开技术的一些实施例来实施的存储器单元阵列的示例。

在一些实施方式中,存储器单元阵列可以包括被划分成许多块的nand闪速存储器阵列,并且每个块包括一定数量的页面。每个块包括多个存储器单元串,并且每个存储器单元串包括多个存储器单元。

在存储器单元阵列是nand闪速存储器阵列的一些实施方式中,以页面为单位来执行读取操作和写入(编程)操作,并且以块为单位来执行擦除操作。在对块中包括的任何页面执行编程操作之前,必须同时擦除相同的块中的所有存储器单元。在一个实施方式中,nand闪速存储器可以使用偶数/奇数位线结构。在另一实施方式中,nand闪速存储器可以使用全位线结构。在偶数/奇数位线结构中,偶数位线和奇数位线沿每条字线交错并且被交替访问,使得偶数和奇数位线中的每对可以共享诸如页面缓冲器的外围电路。在全位线结构中,同时访问所有位线。

图3示出多层单元装置中的阈值电压分布曲线的示例,其中将每个编程/擦除状态的单元数量绘制为阈值电压的函数。如图3中所示,阈值电压分布曲线包括阈值电压最低的擦除状态(表示为“er”并且对应于“11”)以及读取电压处于(由虚线表示的)状态之间的三个编程状态(分别表示为“p1”、“p2”和“p3”,分别对应于“01”、“00”和“10”)。在一些实施例中,由于存储器阵列的材料属性上的差异,编程/擦除状态的阈值电压分布中的每个具有有限的宽度。

在将多于一个数据位写入存储器单元中时,由于相邻分布之间的距离减小,因此需要对存储器单元的阈值电压电平进行精细布置。这是通过使用增量步进脉冲编程(ispp)来实现的,即,使用编程和验证方法,利用施加到字线的阶梯编程电压,对相同字线上的存储器单元进行重复编程。每个编程状态与在验证操作中使用的验证电压相关联,并且设置每个阈值电压分布窗口的目标位置。

可能由阈值电压分布失真或重叠而导致读取错误。理想的存储器单元阈值电压分布可能由于例如编程和擦除(p/e)周期、单元间干扰以及数据保留错误等而显著失真或重叠,将在下文中进行讨论,并且在大多数情况下,可以通过使用错误校正码(ecc)来管理这种读取错误。

图4示出理想阈值电压分布曲线410的示例和失真的阈值电压分布曲线420的示例。纵轴表示存储器单元的数量,存储器单元具有在横轴上表示的特定阈值电压。

对于n位多层单元nand闪速存储器,每个单元的阈值电压可以被编程为2n个可能值。在理想的多层单元nand闪速存储器中,每个值对应于非重叠阈值电压窗口。

闪速存储器p/e周期对单元晶体管的电荷撷取层或浮栅的隧道氧化物造成破坏,这导致阈值电压偏移,从而逐渐降低存储器装置噪声容限。随着p/e周期增加,不同编程状态的相邻分布之间的裕度减小,最后这些分布开始重叠。在具有被编程在相邻分布的重叠范围内的阈值电压的存储器单元中存储的数据位可能被误判为不同于原始目标值的值。

图5示出nand闪速存储器中的单元间干扰的示例。单元间干扰还会使闪存单元的阈值电压失真。一个存储器单元晶体管的阈值电压偏移可以通过干扰单元与牺牲单元之间的寄生电容耦合效应,来影响该存储器单元晶体管的相邻存储器单元晶体管的阈值电压。单元间干扰的量可能受nand闪速存储器位线结构的影响。在偶数/奇数位线结构中,一个字线上的存储器单元交替地连接到偶数位线和奇数位线,并且在相同字线中的奇数单元之前对偶数单元进行编程。因此,偶数单元和奇数单元经历不同量的单元间干扰。全位线结构中的单元比偶数/奇数位线结构中的偶数单元受到更少的单元间干扰,并且全位线结构可以高效地支持高速电流感测,以提高存储器读取和验证速度。

图5中的虚线表示所考虑的单元的p/e状态(在编程干扰之前)的正常分布,并且“相邻状态值”表示已被编程到相邻状态的值。如图5所示,如果相邻状态被编程为p1,则所考虑的单元的阈值电压分布偏移特定量。然而,如果相邻状态被编程为具有比p1更高的阈值电压的p2,则与邻近状态为p1相比,这导致更大的偏移。类似地,当相邻状态被编程为p3时,阈值电压分布的偏移最大。

图6通过将正常阈值电压分布和偏移阈值电压分布进行比较,来示出nand闪速存储器中的保留错误的示例。存储在nand闪速存储器中的数据往往会随着时间的推移而损坏,这被称为数据保留错误。保留错误是由单元晶体管的浮栅或电荷撷取层中存储的电荷丢失所引起的。由于浮栅或电荷撷取层的损耗,具有更多编程擦除周期的存储器单元更可能经历保留错误。在图6的示例中,顶行电压分布(损坏之前)和底行分布(被保留错误损害)的比较显示了向左偏移。

在图4至图6中描述的失真和干扰效应可能出现在存储ftl的dram中,并且在大多数情况下,当从dram读取数据(例如,从lba到pba的ftl映射)时,大部分的ecc工作负荷用于校正任何错误。

所公开技术的实施例包括减少(基于错误校正能力和较高的最小距离)而已知为最佳用于编码/解码ftl表的ecc的解码延迟的方法、系统和装置。在示例中,通过以特定方式对ecc的奇偶校验矩阵进行重新排序并且针对ecc计算的某些部分实施并行处理来减少解码延迟。

现有的ecc实施方式使用具有最小距离(dmin)为4的单错误校正和双错误检测(缩写为secded)码。这表示解码器可以在校正模式下校正1个错误,并且在检测模式下最多可以检测3个错误。

在一些实施例中,使用具有dmin=5的(256、240)准循环线性码。准循环线性码生成240个输入数据位的256-240=16个奇偶校验位,并且(与最初的1个错误相比)最多可以校正两个错误,这显著提高码字失败率(cfr)。在图7中示出了(256、240)准循环线性码的奇偶校验矩阵700的示例。如图所示,256×16奇偶校验矩阵700包括大小为16×16的子矩阵(表示为700a、700b、700c、……700x),这些子矩阵中的每一个是循环子矩阵(并且其中子矩阵中的点表示非零值)。

示例实施例包括用于准循环线性码的基于校验子的解码器,对于基于校验子的解码器仅考虑个错误模式;具体地,256个单位错误和个两位错误(因为该ecc最多可以校正两个错误)。在现有系统的示例中,校验子可以包括16位向量,并且由常规的(256、240)准循环线性码使用的总存储器将为64.25千字节(kb)。相反,本文中描述的、利用奇偶校验矩阵的准循环属性并且实施基于哈希的寻址来压缩标准阵列解码表的示例性基于准循环校验子的解码器使用5kb的总存储器。

在图8中示出根据示例实施例的基于准循环校验子的解码器800的框图。如图所示,校验子生成器810使用所接收的n位噪声码字(在图8中表示为in[0,n-1])来计算校验子(s)。例如,如果奇偶校验矩阵表示为h,则将校验子计算为

s=h·(in[0,n-1])t

(n-k 1)位校验子(在图8中表示为syn[0,n-k])被输入到生成地址和移位数量的地址生成器820。在一些实施例中,基于哈希函数而生成输出地址,并且所计算的移位数量是最大可能移位。在其他实施例中,哈希函数执行模数运算(以存储器大小作为模数)来生成地址。在示例中,哈希函数可以是md-5或sha-3哈希函数。在另一示例中,哈希函数可以使用线性反馈移位寄存器(lfsr)来实施。

在一些实施例中,基于准循环校验子的解码器800包括由错误模式组成的压缩表830。在一些实施例中,错误模式包括陪集首部(cosetleaders),陪集首部与唯一的校验子-错误对相对应。在示例中,基于准循环线性码的奇偶校验矩阵的循环移位属性来识别唯一的校验子-错误对。

输出地址(a)被用作压缩表830中的索引以读取单个陪集首部。此外,压缩表830被设计为使得相应校验子的唯一函数将在压缩表830内部的地址a的范围(表示为δ)中。在一些实施例中,以并行方式来校验压缩表的范围a至a δ中的所有错误模式,以有利地减少解码器的延迟,并且找到校正错误模式陪集首部。以并行方式实施错误模式校验能够在闪存转换层(ftl)中实施本文所述的准循环码。当存储介质正被访问以进行读取/写入操作时,因为ftl对于坏块的重新映射(经由lba和pba)和损耗均衡是连续可响应的(responsible),所以ftl具有迫切的延迟需求。

将校正错误模式陪集首部、(由地址生成器820生成的)移位数量和所接收的噪声码字(in[0,n-1])输入到计算校正错误模式的错误位置计算器840。在示例中,基于校正错误模式陪集首部和移位数量来确定校正错误模式。校正错误模式和所接收的噪声码字用于输出候选的(或最有可能的)发送码字(在图8中表示为out[0,k-1])。

图9a和图9b是利用基于信道的码长度n和最小距离d以及失败位率(或位错误率)ε来示出本文中描述的示例性准循环线性码的码字失败率(cfr)的性能图。图9a将cfr绘制为位错误率ε的函数(固定值n=1000),并且图9b将cfr绘制为码长度n的函数(固定位错误率ε=0.001)。如图所示,与d=3或4相比,d=5的解码错误概率降低了多于一个数量级。

在图10中示出基于准循环校验子的解码器1000的另一示例的框图。该示例包括与如上所述的图8中所示的一些特征和/或组件相似的一些特征和/或组件。在图10的上下文中可能没有单独描述这些特征和/或组件中的至少一些。

如图10所示,根据校验子的函数来计算地址(a),然后地址(a)用于识别错误模式。压缩的标准阵列表1030不包含所有可能的错误模式,而是将地址a用于识别与所计算的校验子相对应的一系列可能的(或候选的)错误模式。在示例中,在压缩的标准阵列表1030中识别到在地址范围a至a δ内的错误模式,然后以并行方式进行校验,这有利地减少了解码器的延迟。在一些实施例中,可以使用位向量的十进制表示,来存储存储器中所存储的任何位向量(例如,校验子、错误模式等)。

此外,通过利用准循环奇偶校验矩阵的结构进一步减少了解码器延迟,其中对于(256、240)准循环线性码,该准循环奇偶校验矩阵包括多个16×16子矩阵。在示例中,基于每个循环子矩阵的相应十进制表示,来对每个循环子矩阵的列进行排序。与原始(未排序)版本相比,准循环奇偶校验矩阵的列的重新排序有利地能够使用更少的计算,来(针对每个存储的错误模式)计算校正错误位置。使用重新排序的准循环奇偶校验矩阵可以将后处理操作简化为可以以硬件高效执行的移位操作。

图11示出用于减少准循环线性码解码器的延迟的方法1100的流程图。在操作1110中,方法1100包括接收噪声码字,该码字已经由准循环线性码而生成并且在被解码器接收之前被提供至通信信道。

在操作1120中,方法1100包括基于噪声码字来计算校验子。在示例中,基于噪声码字和准循环解码器的奇偶校验矩阵的乘积来计算校验子。

在操作1130中,方法1100包括生成多个存储器单元地址,第一存储器单元地址是校验子的函数,并且后续存储器单元地址在校验子的函数的预定地址范围内。

在一些实施例中,预定地址范围包括连续的存储器单元地址。

在操作1140中,方法1100包括以减少解码器的延迟的并行方式,根据多个存储器单元地址读取多个错误模式,并且计算多个错误模式中的每一个的校验和。

在操作1150中,方法1100包括基于多个错误模式中的每一个的校验和来确定发送码字的候选版本。

在一些实施例中,基于准循环线性码的奇偶校验矩阵的至少一列的十进制表示来计算多个错误模式中的一个或多个错误位置。

在一些实施例中,准循环线性码是在闪存转换层(ftl)中使用的准循环(256、240)线性码,并且码字包括从逻辑块地址(lba)到物理块地址(pba)的映射。

在一些实施例中,准循环线性码的奇偶校验矩阵包括多个n×n循环子矩阵。在示例中,n=16。

在一些实施例中,校验子的函数是校验子的哈希函数,并且哈希函数基于开放式寻址哈希表。

本专利文件中描述的主题和功能操作的实施方式可以在包括本说明书中公开的结构及其等同方案的各种系统、数字电子电路或计算机软件、固件或硬件或它们中的一种或多种的组合中实施。本专利文件中描述的主题的实施方式可以被实施为一种或多种计算机程序产品,即在有形和非暂时性计算机可读介质上编码的计算机程序指令的一个或多个模块,以由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储装置、机器可读存储装置衬底、存储器装置、实现机器可读传播信号的物质组合,或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,通过示例的方式,包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该设备还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一种或多种的组合的代码。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以包括编译或解释语言的任何形式的编程语言来编写,并且可以以包括以下的任何形式进行部署:作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、存储在专用于所讨论程序的单个文件中或存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以部署计算机程序以在位于一个站点上或分布在多个站点上并通过通信网络互连的一台计算机或多台计算机上执行。

本说明书中描述的进程和逻辑流程可以由一个或多个可编程处理器来执行,该可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。进程和逻辑流程也可以由专用逻辑电路来执行,并且设备也可以实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。

通过示例的方式,适于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何种类的数字计算机的任意一种或多种处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括用于存储数据的一个或多个大容量存储装置,例如,磁盘、磁光盘或光盘,或可操作地联接以从该一个或多个大容量存储装置接收数据或将数据传送到该一个或多个大容量存储装置。然而,计算机不必需具有这些装置。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,作为示例,包括半导体存储器装置,例如eprom、eeprom和闪速存储器装置。处理器和存储器可以由专用逻辑电路来辅助或被并入专用逻辑电路中。

虽然该专利文件包含许多细节,但是这些细节不应解释为对任何发明或可能要求保护的范围的限制,而应解释为对特定发明的特定实施例的特征的描述。在该专利文件中在单独的实施例的上下文中描述的某些特征也可以在单个实施例的组合中实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合中来实施。此外,虽然可以在上下文中将特征描述为以某些组合起作用并且甚至最初如此这样保护,但是在某些情况下,可以从组合中删除所要求保护的组合中的一个或多个特征,并且可以将所要求保护的组合指向子组合或子组合的变型。

类似地,虽然在附图中以特定的顺序描绘了操作,但是这不应理解为要求以所示的特定次序或以顺序的次序来执行这些操作,或者执行所有示出的操作以实现期望的效果。此外,在该专利文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。

仅描述了一些实施方式和示例,并且可以基于本专利文件中描述和示出的内容进行其他实施方案、改进和变型。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜