NandFlash的数据纠错方法、装置、电子设备及存储介质与流程

文档序号:22626841发布日期:2020-10-23 19:35阅读:212来源:国知局
Nand Flash的数据纠错方法、装置、电子设备及存储介质与流程

本发明涉及nandflash数据技术领域,尤其涉及一种nandflash的数据纠错方法、装置、电子设备及存储介质。



背景技术:

3d(threedimensions,三维)垂直设计的nandflash(闪存)芯片已逐步实现在硅片上进行垂直堆叠的结构设计,以及nandflash发展了多比特存储技术,使得芯片存储技术从单比特的slc(singlelevelcel,单层单元)和逐步发展到两比特mlc(multi-levelcell,多层单元)、三比特和四比特等。但是,nandflash芯片在使用时,随着编程/擦除次数的增加,芯片的隧道氧化物的磨损会增大,使得电荷的流失加大,从而导致误码率变高。

为了解决上述问题,相关技术在对nandflash的数据进行纠错时,主要是基于最差情况进行ecc代码设计,如基于1k字节包含70位错误的情况进行ecc设计,该技术能够降低nandflash的数据的误码率;但是,在nandflash的初始使用阶段时,由于编辑次数较少,误码率也较低,即不同阶段的使用,数据的保持时间不同,误码率也是不同的,如果基于最差情况进行ecc代码设计,会造成运算时间和存储空间的浪费,使得nandflash处理器的纠错效率低。

因此,有必要提出一种新的nandflash的数据纠错技术。



技术实现要素:

本申请提供了一种nandflash的数据纠错方法、装置、电子设备及存储介质,可以解决nandflash处理器的纠错效率低的技术问题。

本发明第一方面提供一种nandflash的数据纠错方法,所述方法包括:

当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率;

根据所述评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;

利用所述目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;

将所述编码数据储存至nandflash数据区,及将所述目标纠错编码方案储存至所述nandflash冗余区。

可选的,所述将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型的步骤之前包括:

接收nandflash芯片的测试数据,所述测试数据包括:多个不同的映射指标及所述映射指标对应的所述误码率,所述映射指标包含所述编辑次数及所述数据保持时间;

分别利用所述映射指标及对应的所述误码率按照预设的多项式拟合规则进行建模,得到所述nandflash误码率模型。

可选的,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率的步骤包括:

访问nandflash芯片的所述nandflash冗余区;

提取所述nandflash冗余区中的所述编辑次数;

将预设的所述数据保持时间及所述编辑次数输入所述nandflash误码率模型,得到所述评估的误码率。

可选的,所述根据所述评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案的步骤包括:

根据所述评估的误码率计算所述中的错误比特数,所述误码率为所述错误比特数占所述待写入数据的比率;

根据所述错误比特数与预设的错误比特数阈值对比,并根据对比结果选取所述纠错编码方案列表中的所述目标纠错编码方案。

可选的,所述目标纠错编码方案包括:单级纠错编码方案及级联纠错编码方案,则所述根据所述错误比特数与预设的错误比特数阈值对比,并根据对比结果选取所述纠错编码方案列表中的所述目标纠错编码方案的步骤包括:

将所述错误比特数与预设的错误比特数阈值对比;

若所述对比结果为所述错误比特数小于或等于所述错误比特数阈值,则选取所述纠错编码方案列表中的所述单级纠错编码方案作为所述目标纠错编码方案;

若所述对比结果为所述错误比特数大于所述错误比特数阈值,则选取所述纠错编码方案列表中的所述级联纠错编码方案作为所述目标纠错编码方案。

可选的,所述将所述编码数据储存至nandflash数据区,及将所述目标纠错编码方案储存至所述nandflash冗余区的步骤之后包括:

当接收到读取指令时,获取所述nandflash冗余区中的目标纠错编码方案,及获取所述nandflash数据区中的待解码数据,所述待解码数据为所述编码数据;

根据所述目标纠错编码方案确定所述待解码数据的目标纠错解码方案;

根据所述目标纠错解码方案对所述待解码数据进行解码纠错,得到正确的解码数据。

本发明第二方面提供一种nandflash的数据纠错装置,所述装置包括:

评估模块,用于当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率;

选取模块,用于根据所述评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;

纠错模块,用于利用所述目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;

储存模块,用于将所述编码数据储存至nandflash数据区,及将所述目标纠错编码方案储存至所述nandflash冗余区。

可选的,所述装置还包括:

获取模块,用于当接收到读取指令时,获取所述nandflash冗余区中的目标纠错编码方案,及获取所述nandflash数据区中的待解码数据,所述待解码数据为所述编码数据;

确定模块,用于根据所述目标纠错编码方案确定所述待解码数据的目标纠错解码方案;

解码模块,用于根据所述目标纠错解码方案对所述待解码数据进行解码纠错,得到正确的解码数据。

本发明第三方面提供一种电子设备,包括:存储器、处理器及通信总线,所述通信总线分别与所述存储器及所述处理器通信连接,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时,实现如第一方面所述的nandflash的数据纠错方法方法中的各个步骤。

本发明第四方面提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所述的nandflash的数据纠错方法方法中的各个步骤。

本发明提供的nandflash的数据纠错方法,包括:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率;根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。通过实施本方案,通过nandflash的编辑次数及数据保持时间评估误码率,提高评估误码率的准确度,且根据误码率选择不同的目标纠错编码方案,并利用目标纠错编码方案对待写入数据进行纠错编码,降低资源占用和功耗,提高nandflash处理器在不同误码率下的纠错编码效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a为本发明实施例提供的nandflash结构示意图;

图1b为本发明实施例提供的nandflash存储阵列结构的示意图

图2为本发明实施例提供的nandflash误码率模型的示意图;

图3为本发明实施例提供的nandflash的数据纠错方法的步骤流程图;

图4为本发明实施例提供的nandflash的数据纠错方法的又一步骤流程图;

图5为图4提供的nandflash的数据纠错方法的细化步骤流程图;

图6为本发明实施例的nandflash的数据纠错装置的模块方框图;

图7为本发明实施例提供的电子设备的架构图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于现有技术中nandflash处理器的纠错效率低的技术问题。

为了解决上述技术问题,本发明提出一种nandflash的数据纠错方法、装置、电子设备及存储介质。

请参阅图1a和图1b,图1a为本发明实施例提供的闪存nandflash的结构示意图,在该结构示意图为一个lun(logicalunitnunber)的结构图,一个lun代表一个nandflash(闪存)芯片,在该nandflash的结构示意图中,一个nandflash芯片包含存储阵列结构101和缓存结构102两部分。一方面,该存储阵列结构101拥有两个plane1011(部分或级等),每个plane1011包含2048个block(物理块或存储物理块),每个lun包含4096个block,每个block里面有128个page(页),每个页包含8.448k字节。

进一步的,请参阅图1b,图1b为本发明实施例提供的nandflash存储阵列结构的示意图,每个页里面包括:数据区和冗余区,其中,数据区包含可存储8k字节,冗余区包含或存储0.448k字节,本发明实施例将上述的数据区统称为nandflash数据区10111,及将上述冗余区统称为nandflash冗余区10112,每个plane包含:nandflash数据区10111和nandflash冗余区10112。

可以理解的是,nandflash数据区10111用于储存写入的数据,而nandflash冗余区10112用于储存:地址映射信息、芯片编辑次数、ecc校验码、坏块管理等信息;另一方面,缓存结构102包括:cacheregister1021(高速缓冲存储器)和dataregister1022(数据寄存器),可以理解的是,存储阵列结构在逻辑上划分为两个plane1011,在每个plane1011划分为2048个block,每个block划分为128个page,每个页包含8.448k字节,缓存结构102也相应地划分为相同的阵列,以实现的存储阵列结构中的数据与缓存结构中的地址映象,以提高数据处理的速度,如数据读取、储存或测试,但不限于此,其他nandflash数据处理方式也属于本实施例所包含的范围。

导致nandflash的可靠性退化的两个因素为:nandflash中数据的编辑次数(编程/擦除的次数)和nandflash采用了多比特存储技术。一方面,对nandflash存储阵列数据编辑会导致隧穿氧化层退化,具体的,编辑操作主要是依赖于电荷通过薄氧化层传输,并通过fowlernordheim(fn)隧穿进出存储层,在隧穿后,将陷阱充电到氧化物和界面状态来物理地磨损氮化硅薄膜的隧道氧化物;可能会导致在隧道氧化物中捕获电荷,或者多余的电荷流入/流出存储层,从而降低了存储单元的阈值电压,降低了可靠性。另一方面,采用了多比特存储技术后,栅极阈值电压的变化领域被划分为多个小区域,使得区域之间的容错率太小,导致邻近区域之间的阈值电压极易受到相互影响,从而产生错误位;从slc到tlc,nandflash存储的原始误码率直接降低了10-3量级,这将降低了可靠性,因此,为了保证nandflash存储数据的读出正确性,通常在nandflash处理器中会引入ecc(errorcorrectingcode,纠错码),降低误码率。

本发明实施例的ecc纠错方案的设计是基于误码率确定的,因此,需要分析nandflash存储阵列中数据的误码率。由于不同的编程/擦除次数和数据保持时间会影响nandflash数据的误码率,为了准确评估误码率,需要执行一下操作:

一、首先需要进行芯片测试,以测试不同的编辑次数和数据保持时间对误码率的影响。一般地,3dnandflash的编辑次数大约为3000次,测试方案根据编辑次数进行设定,测试过程如下:1、对nandflash芯片的奇数页编程写入“0x55”向量,偶数页编程写入“0xaa”向量,编程后读出数据,然后另存为独立的文件;2、对nandflash进行100次编程/擦除循环;3、采用高温环境加速芯片的老化来缩短测试时长,将nandflash放入125℃高温箱,设置每5分钟进行1次数据读取操作,将读取结果与独立文件进行对比,记录错误比特数;4、当测试时间达到100小时(等效55℃下10年),停止测试;5、每次对nandflash增加100次编程/擦除循环,重复步骤3和4;6、当nandflash编程/擦除循环次数达到3000次时,测试结束;7、将得到的测试数据(编辑次数、数据保持时间及误码率)建立表格或记录至表格,本实施例不对表格的绘制和记录做进一步赘述,只要体现以编辑次数和数据保持时间作为误码率的共同影响因素,体现误码率在该共同因素的影响下的变化即可。通过本阶段对芯片进行测试,可分析在编辑次数和数据保持时间的共同影响下的误码率变化情况,提高评估误码率的准确度。

二、根据测试数据对nandflash的误码率分布情况进行建模拟合,具体通过多项式拟合的方式进行建模,得到nandflash误码率模型。在建模后,使得处理器可根据nandflash当前的编辑次数和数据保持时间预估写入或编程数据时的误码率。

三、请参阅图2,为本发明实施例提供的nandflash误码率模型的示意图;获取nandflash的编辑次数和数据保持时间,将获取的nandflash存储阵列的编辑次数和数据保持时间输入nandflash误码率模型201,可得到对应的评估的误码率,通过借助本实施例的nandflash误码率模型201,可提高获取误码率的效率和准确度。

请参阅图3,为本发明实施例提供的nandflash的数据纠错方法的步骤流程图,本发明实施例提供一种nandflash的数据纠错方法,该方法以应用于图1所示的nandflash存储阵列为例,评估图1所示的nandflash存储阵列的误码率,并基于误码率选取纠错编码方案,具体的,nandflash对应的处理器执行程序时,实现本实施例的nandflash的数据纠错方法,该方法包括以下步骤:

步骤s301:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率。

具体的,该编程指令可为人为输入的编程启动指令,也可为人机触发的编程启动指令,该编程指令通过处理器接收到,该处理器的为计算机的处理器,也可为专门应用于nandflash的数据编辑的控制单元或数据处理单元,当处理器编程指令时,访问nandflash存储阵列中的nandflash冗余区,从nandflash冗余区中获取当前的编辑次数,并利用编辑次数和预设的数据保持时间通过nandflash误码率模型评估对应的误码率。

其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间。可以理解的是,该nandflash误码率模型是利用编辑次数及数据保持时间作为映射指标,通过该映射指标可获取对应的误码率。需要说明的是,利用映射指标通过nandflash误码率模型获取的误码率为nandflash或芯片当前的误码率,若对当前的nandflash芯片进行编程或写入数据,编程后或写入后的nandflash芯片会存在当前评估的误码率对应的错误比特数。因此,在对nandflash芯片进行编程或写入数据前,需要评估nandflash或芯片当前的误码率,通过本步骤s301,可提高获取nandflash芯片误码率的准确度。

步骤s302:根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案。

具体的,预设的纠错编码方案列表包含多个纠错编码方案,该纠错编码方案为包含ecc(errorcorrectingcode,纠错码)码和编码方式,多个纠错编码方案之间采用的ecc纠错码和编码方式不同。优选的,本实施例包含两种纠错编码方案,如包含:单级纠错编码方案和级联纠错编码方案,此外,单级纠错编码方案和级联纠错编码方案采用的ecc纠错码和编码方式不同,如单级纠错编码方案采用单级编码方式的,及采用的纠错码为bch码;而级联纠错编码方案采用级联编码方式,及采用的纠错码是rs码和bch码的组合,此外,级联纠错编码方案还可采用rs码和ldpc码的组合等其他的纠错码;需要说明的是,对待写入的数据进行编码纠错后,将编码后的数据存入nandflash数据区,且将编码后的纠错编码方案存储至nandflash冗余区,由于不同的纠错编码方案的纠错码的长度不同,若采用较长的ecc纠错码,处理器需要花费较多的运算时间,且会压缩其他信息(如编辑次数等信息数据)的存储,因此,需要根据评估的误码率选取包含适合纠错且具有较短纠错码的纠错编码方案,以实现编码后节省nandflash冗余区的存储空间。进一步的,根据不同复杂程度的误码率选取预设的纠错编码方案列表中的目标纠错编码方案,该目标纠错编码方案为单前的误码率对应的纠错编码方案。通过实施本步骤的方案,可根据不同的误码率选取对应的纠错编码方案,可减少运算时间,且节省存储空间。

步骤s303:利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据。

具体的,在选取纠错编码方案后,利用纠错编码方案对待写入的数据进行纠错编码,可得到经过纠错编码后的准确的编码数据。例如,当误码率较低时,选用的纠错编码方案为单级纠错编码方案,单级纠错编码方案为较为简单的纠错编码方案,具有运算时间短的特点,其纠错码为bch码,即单级纠错编码方案的纠错码的码长较短,该单级纠错编码方案应用于误码率较低的nandflash寿命期间,需要说明的是,nandflash寿命期与nandflash的编辑次数和数据保持时间相关,由于nandflash芯片的初始使用阶段的数据出现的误码率较低,采用单级纠错编码方案即可对待写入的数据完成纠错编码;当误码率高于特定值时,则选用级联纠错编码方案,其纠错码可选择为rs码和bch码的组合,级联纠错编码方案具有纠错能力强的优点,且级联纠错编码方案的运算较为复杂,需要花费较多的运算时间,适用于误码率较大情况下的对待写入数据的纠错编码。因此,无论数据中误码率对应的错误比特数目多少,都需要运行完整的ecc算法才能完成校验(纠错编码)。通过实施本步骤方案,可实现根据选取的目标纠错编码方案对待写入的数据进行编码,可提高数据的准确度,防止待写入的数据在编码后出现错误的情况,具有较高的可靠性。

步骤s304:将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。

具体的,在待写入数据进行纠错编码后,将得到的编码数据和目标纠错编码方案储存至nandflash存储阵列结构内,其中,nandflash存储阵列结构包括:nandflash数据区和nandflash冗余区。通过将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区,以实现对数据和目标纠错编码方案的保存,为纠错解码提供待解码数据和解码纠错方案的解码基础;需要说明的是,当将编码数据储存至nandflash数据区,且将目标纠错编码方案储存至nandflash冗余区后,表示对nandflash完成一次编辑(数据擦除及擦除后的编程),则nandflash冗余区的编辑次数加1,因此,每一次对nandflash的编辑(擦除及擦除后进行编程),将会使得nandflash冗余区的编辑次数的更新。通过实施本步骤的技术,可以实现对编码数据和目标纠错编码方案的储存,提高nandflash的可靠性。

本实施例提供一种nandflash的数据纠错方法,包括:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率,其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间;根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;利用目标纠错编码方案对待写入的数据进行纠错编码,得到正确的编码数据;将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。通过实施本方案,通过nandflash的编辑次数及数据保持时间评估误码率,提高评估误码率的准确度,且根据误码率选择不同的目标纠错编码方案,并利用目标纠错编码方案对待写入数据进行纠错编码,降低资源占用和功耗,提高nandflash处理器在不同误码率下的纠错编码效率。

请参阅图4,为本发明实施例提供的nandflash的数据纠错方法的又一步骤流程图,本发明另一实施例提供的nandflash的数据纠错方法包括:

s401:接收nandflash芯片的测试数据,测试数据包括:多个映射指标及映射指标对应的误码率。

在步骤s401中,接收对nandflash芯片测试后的测试数据,该测试数据具体包括:多个编辑次数和多个数据保持时间,还包括多个编辑次数和多个数据保持时间结合的多个映射指标对应的多个误码率,这些多个数据为nandflash芯片测试得到的数据,即通过对nandflash芯片进行擦除及擦除后的编程,读取编程后的数据,以计算误码率,通过连续的擦除/编程操作,以测试nandflash芯片在不同的编辑次数(擦除并擦除后进行编程的次数)及不同的数据保持时间下的误码率,通过这些测试数据可分析nandflash芯片系列在编辑次数和数据保持时间因素下的误码率分布情况。

s402:分别利用映射指标及对应的误码率按照预设的多项式拟合规则进行建模,得到nandflash误码率模型。

具体的,根据测试数据对nandflash的误码率分布情况进行建模拟合,利用映射指标及对应的误码率按照预设的多项式拟合规则进行建模,得到nandflash误码率模型。本步骤的方案可提高评估误码率的效率和准确度。

s403:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率,其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间。

s404:根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案。

s405:利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据。

s406:将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。

在本发明实施例中,步骤s403-s406为与前述实施例提供一种nandflash的数据纠错方法中的步骤s301-s304相同或相近的技术特征,步骤s403-s406的详细叙述请参考步骤s301-s304的描述,本实施例不做进一步限定。

可选的,步骤s403包括:

访问nandflash冗余区。具体的,nandflash包含nandflash数据区和nandflash冗余区,nandflash数据区用于储存写入的编码数据,该编码数据进可理解为需要储存的数据;nandflash冗余区用于储存:目标纠错编码方案、编辑次数等数据,因此,为了评估nandflash当前的误码率,需要获取写入数据或进行编码前的编辑次数和数据保持时间,则需要先访问nandflash冗余区。

进一步的,提取nandflash冗余区中的编辑次数。在访问nandflash冗余区后,提取nandflash冗余区中的编辑次数。可以理解的是,该编辑次数为上一次将数据写入nandflash后的编辑次数,即上一次编程后的编辑次数。

进一步的,将预设的数据保持时间及编辑次数输入nandflash误码率模型,得到评估的误码率。

具体的,数据保持时间为在本次编辑之前预估待写入数据编程后,在nandflash中的总存储时间,如从nandflash的首次使用时,将数据写入nandflash中直至数据被删除或擦除的时间段为每次对应的数据保持时间,该数据保持时间可用于确定每次编程后的数据所需保存时间或编程后的数据更新/重新编程的频率。在获取nandflash冗余区中的编辑次数后,将编辑次数及预设的数据保持时间输入预先建立的nandflash误码率模型中,nandflash误码率模型根据编辑次数及数据保持时间进行计算或进行映射,得到相应评估的误码率,提高获取nandflash或芯片误码率的准确度。

请参阅图5,图5为图4提供的nandflash的数据纠错方法的细化步骤流程图,该方法包括:

s401:接收nandflash芯片的测试数据,测试数据包括:多个映射指标及映射指标对应的误码率。

s402:分别利用映射指标及对应的误码率按照预设的多项式拟合规则进行建模,得到nandflash误码率模型。

s403:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率,其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间。

进一步的,步骤s404包括:

s4041:根据评估的误码率计算待写入数据中的错误比特数,误码率为错误比特数占待写入数据的比率;

s4042:根据错误比特数与预设的错误比特数阈值对比,并根据对比结果选取纠错编码方案列表中的目标纠错编码方案。

在步骤s404中,在获得评估后的误码率后,利用该评估的误码率计算或预估待写入数据的错误比特数,该待写入数据为编程储存至nandflash数据区中数据,比如,nandflash数据区可储存8k字节,该误码率可为每1k字节对应的误码率;该误码率用于评估或预算待写入数据中出现的错误比特数,及根据误码率可计算单位传输数据中的错误比特数。进一步的,将错误比特数与预设的错误比特数阈值对比,该错误比特数阈值为预先设定的阈值,用于判定待写入数据中出现错误比特数是否为数据包含严重错误的情况,经过对比可得到对比结果,进而根据对比结果选取纠错编码方案列表中的目标纠错编码方案,以实现根据不同的误码率选取对应的纠错编码方案,可减少运算时间,且节省存储空间。

s405:利用目标纠错编码方案对待写入的数据进行纠错编码,得到正确的编码数据。

s406:将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。

进一步的,目标纠错编码方案包括:单级纠错编码方案及级联纠错编码方案,则步骤s4042具体包括:

将错误比特数与预设的错误比特数阈值对比;

若对比结果为错误比特数小于或等于错误比特数阈值,则选取纠错编码方案列表中的单级纠错编码方案作为目标纠错编码方案;

若对比结果为错误比特数大于错误比特数阈值,则选取纠错编码方案列表中的级联纠错编码方案作为目标纠错编码方案。

具体的,目标纠错编码方案包括:单级纠错编码方案和级联纠错编码方案。将错误比特数与预设的错误比特数阈值对比,假若将预设的错误比特数阈值设定为30,当错误比特数为31、40、70等数值时,错误比特数大于错误比特数阈值30,则判定错误比特数为数据包含严重错误的情况,单位传输数据出现为较为复杂的错误比特数,选取纠错编码方案列表中的级联纠错编码方案(上述包含bch码和rs码组合的纠错编码方案)作为目标纠错编码方案。假若错误比特数为10、20、29、30等小于或等于30的数值时,错误比特数小于或等于错误比特数阈值30,则判定错误比特数为数据包含轻度错误的情况,单位传输数据出现为较为简单的错误比特数,选取纠错编码方案列表中的单级纠错编码方案(上述包含bch码的纠错编码方案)作为目标纠错编码方案。

进一步的,在步骤s304或步骤s406之后包括:

当接收到读取指令时,获取nandflash冗余区中的目标纠错编码方案,及获取nandflash数据区中的待解码数据,待解码数据为编码数据;

根据目标纠错编码方案确定待解码数据的目标纠错解码方案;

根据目标纠错解码方案对待解码数据进行解码纠错,得到正确的解码数据。

具体的,本发明的上述实施例的nandflash的数据纠错方法还包括:对写入nandflash储存阵列的数据进行解码纠错,该解码的过程可为数据读取过程,通过解码,可实现准确读取nandflash存储阵列中的编码数据,需要说明的是,解码过程并不是对nandflash数据区的数据进行删除/擦除,具体为数据读取过程中对数据进行分析、解译的过程。在接收读取指令时,提取nandflash冗余区中的目标纠错编码方案,该目标纠错编码方案为上一次向nandflash写入数据时的纠错编码方案,需要说明的是,nandflash储存阵列包含多个数据,向nandflash冗余区提取的目标纠错编码方案为所需要解码的数据对应的纠错编码方案,其中所需要解码的数据为待解码数据,该待解码数据于本次解码操作之前已写入nandflash中的nandflash数据区。进一步的,根据提取的目标纠错编码方案确定待解码数据对应的目标纠错解码方案,具体的,分析提取的目标纠错编码方案,得到该目标纠错编码方案的编码方式和纠错码,比如,当目标纠错编码方案为单级纠错编码方案时,编码方式为单级纠错编码方式,纠错码为bch码,根据该编码方式和纠错码确定单级纠错解码方案为目标纠错解码方案;当目标纠错编码方案为级联纠错编码方案时,编码方式为级联纠错编码方式,纠错码为bch码和rs码的组合码,根据该编码方式和纠错码确定级联纠错解码方案为目标纠错解码方案。此外,根据目标纠错解码方案对待解码数据进行解码纠错,得到正确的解码数据,经过解码纠错得到的解码数据为准确的可读取数据,可供用户的读取,具有可靠性。

需要说明的是,数据读取操作不属于对nandflash的编辑(擦除/编程),在完成上述的解码过程后,可读取到存储在nandflash数据区中的数据,nandflash冗余区的编辑次数不会递增。

请参阅图6,图6为本发明实施例提供的nandflash的数据纠错装置,该装置对应于上述的nandflash的数据纠错方法,该装置600包括:

评估模块601,用于当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率,其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间;

选取模块602,用于根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;

编码模块603,用于利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;

储存模块604,用于将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。

本发明提供的一种nandflash的数据纠错装置,包括:评估模块601、选取模块602、编码模块603及储存模块604。其中,当接收到编程指令时,通过评估模块601将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率,其中,nandflash误码率模型包含不同的映射指标与误码率的映射关系,映射指标包含编辑次数及数据保持时间;通过选取模块602根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;通过编码模块603利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;通过储存模块604将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。通过实施本方案,通过评估模块601根据nandflash的编辑次数及数据保持时间评估误码率,提高评估误码率的准确度,且通过选取模块602根据误码率选择不同的目标纠错编码方案,并利用目标纠错编码方案对待写入数据进行纠错编码,降低资源占用和功耗,提高nandflash处理器在不同误码率下的纠错编码效率。

进一步的,该装置600还包括:获取模块605、确定模块606及解码模块607,具体如下:

获取模块605,用于当接收到读取指令时,获取nandflash冗余区中的目标纠错编码方案,及获取nandflash数据区中的待解码数据,待解码数据为编码数据。

确定模块606,用于根据目标纠错编码方案确定待解码数据的目标纠错解码方案。

解码模块607,用于根据目标纠错解码方案对待解码数据进行解码纠错,得到正确的解码数据。

本发明提供的编程指令nandflash的数据纠错装置还包括:获取模块605、确定模块606及解码模块607,这些模块用于对写入nandflash储存阵列的数据进行解码的编辑,该解码的过程可为数据读取过程,通过解码,可实现准确读取nandflash存储阵列中的编码数据。具体的,在接收读取指令时,通过获取模块605获取nandflash冗余区中的目标纠错编码方案,该目标纠错编码方案为上一次向nandflash写入数据时的纠错编码方案,或为本次解码编辑之前的其他的目标纠错编码方案,需要说明的是,nandflash储存阵列包含多个数据,向nandflash冗余区提取的目标纠错编码方案为所需要解码的数据对应的纠错编码方案,其中所需要解码的数据为待解码数据,该待解码数据于本次解码编辑之前已写入nandflash中的nandflash数据区。进一步的,通过确定模块606根据提取的目标纠错编码方案确定待解码数据对应的目标纠错解码方案,如,分析提取的目标纠错编码方案,得到该目标纠错编码方案的编码方式和纠错码,比如,当目标纠错编码方案为单级纠错编码方案时,编码方式为单级纠错编码方式,纠错码为bch码,根据该编码方式和纠错码确定单级纠错解码方案为目标纠错解码方案;当目标纠错编码方案为级联纠错编码方案时,编码方式为级联纠错编码方式,纠错码为bch码和rs码的组合码,根据该编码方式和纠错码确定级联纠错解码方案为目标纠错解码方案。最后,通过解码模块607根据目标纠错解码方案对待解码数据进行解码纠错,得到正确的解码数据,经过解码纠错得到的解码数据为准确的可读取数据。通过本装置提供的获取模块605、确定模块606及解码模块607执行解码过程,得到准确的解码数据,可供用户的读取,具有可靠性。

本发明提供一种电子设备,请参阅图7,为本发明实施例提供的电子设备的架构图,该电子设备包括:存储器701、处理器702及通信总线703,通信总线703分别与存储器701及处理器702通信连接,存储器701与处理器702耦合,存储器701上存储有计算机程序,处理器702执行计算机程序时,实现上述实施例中的nandflash的数据纠错方法中的各个步骤。

示例性的,该nandflash的数据纠错方法的计算机程序主要包括:当接收到编程指令时,将预设的数据保持时间及获取的nandflash冗余区的编辑次数输入预设的nandflash误码率模型,得到评估的误码率;根据评估的误码率选取预设的纠错编码方案列表中的目标纠错编码方案;利用目标纠错编码方案对待写入数据进行纠错编码,得到正确的编码数据;将编码数据储存至nandflash数据区,及将目标纠错编码方案储存至nandflash冗余区。另外,计算机程序也可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算设备中的执行过程。例如,计算机程序可以被分割成如图6所示的评估模块601、选取模块602、编码模块603、储存模块604、获取模块605、确定模块606及解码模块607。

处理器702可以是中央处理模块(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本发明还提供一种存储介质,存储介质为计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现上述实施例中的nandflash的数据纠错方法中的各个步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种nandflash的数据纠错方法、装置、电子设备及存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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