CN106802837A - 一种更新错误检测和纠正ecc码的方法及装置 - Google Patents

一种更新错误检测和纠正ecc码的方法及装置 Download PDF

Info

Publication number
CN106802837A
CN106802837A CN201510844082.2A CN201510844082A CN106802837A CN 106802837 A CN106802837 A CN 106802837A CN 201510844082 A CN201510844082 A CN 201510844082A CN 106802837 A CN106802837 A CN 106802837A
Authority
CN
China
Prior art keywords
data
code
ecc
row
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510844082.2A
Other languages
English (en)
Other versions
CN106802837B (zh
Inventor
黄生儒
廉肖洁
薛军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510844082.2A priority Critical patent/CN106802837B/zh
Priority to PCT/CN2016/091840 priority patent/WO2017088507A1/zh
Publication of CN106802837A publication Critical patent/CN106802837A/zh
Application granted granted Critical
Publication of CN106802837B publication Critical patent/CN106802837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明实施例公开了一种更新ECC码的方法,所述方法应用于存储介质的数据写入过程,存储介质包括多个存储块,所述方法包括:获取每个存储块中总数据的ECC码;当向存储介质随机写入一字节的数据时,获取写入的数据、数据被写入的存储空间的位置以及存储空间在写入数据之前所存储的原始数据;通过进行逻辑运算,得到写入一字节的数据后的存储空间所属的存储块中总数据的ECC码的列校验码,以及根据写入的数据和原始数据,修改存储空间所属的存储块中总数据的ECC码的行校验码;根据运算后的ECC码的列校验码和修改后的ECC码的行校验码,得到更新后的ECC码。采用本发明,可以实现在进行ECC校验时,不破坏存储介质的随机读写性。

Description

一种更新错误检测和纠正ECC码的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种更新错误检测和纠正ECC码的方法及装置。
背景技术
在计算机领域中,目前主流的两种闪存是NAND Flash(内部存储单元采用与非门相连的闪存)和NOR Flash(内部存储单元采用或非门相连的闪存)。其中,NAND Flash容易出现比特反转的问题,若NADN Flash中的重要程序代码或关键数据出现比特反转,则可能会导致计算机系统不能正常运行,因此,为了提高可靠性,NAND Flash应用时需要进行ECC(Error Checking and Correction,错误检测和纠正)校验。
ECC校验是指,在读写数据的时候以数据块(如将256字节或512字节的数据作为一个数据块)的方式计算ECC码,通过比较写入数据的ECC码与读取数据的ECC码是否一致,确定数据是否发生比特反转。由于NAND Flash本身是以数据块方式读写数据的,因此ECC校验完美适用于NAND Flash。
进一步地,随着内存工艺尺寸的不断缩小,NOR Flash也越来越容易出现比特反转的问题,目前考虑的是向NOR Flash引入ECC校验。然而,不同于NANDFlash的读写方式,NOR Flash是随机读写方式,即读写数据的大小是随机的,若向NOR Flash直接引入ECC校验,将使其局限于以数据块的方式读写数据,破坏了NOR Flash的随机读写性。
发明内容
本发明实施例提供了一种更新错误检测和纠正ECC码的方法及装置,可以实现在进行ECC校验时,不破坏存储介质的随机读写性。
本发明实施例第一方面提供了一种更新ECC码的方法,所述方法应用于存储介质的数据写入过程,所述存储介质包括多个存储块,所述方法包括:
获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码;
当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据,其中,所述存储空间的位置用以确定所述存储空间所属的存储块;
通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码;
根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
在第一方面的第一种可能实现方式中,所述通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,包括:
计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码;根据公式计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码。其中,公式的原理是,由于在异或的运算法则中^既代表增加也代表去除,因此该公式相当于在ECC_CP中增加了Data_ECC_CP,以及去除了Buf_ECC_CP。
结合第一方面的第一种可能实现方式,在第二种可能实现方式中,所述根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码,包括:
确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性;判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同;若是,则不修改所述总数据的ECC码的行校验码;若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的存储空间中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
结合第一方面以及第一方面的第一或第二种可能实现方式,在第三种可能实现方式中,所述存储块为256个字节的存储空间。一方面,存储块的字节数越少,存储介质中存储块的个数越多,所要记录的ECC码就会越多,另一方面,存储块的字节数越多,存储块中总数据就越大,所要记录的ECC码越复杂,综合上述两方面的因素,设定256个字节最为适中。
本发明实施例第二方面提供了一种校验ECC码的方法,所述方法应用于存储介质的数据写入过程,所述存储介质包括多个存储块,所述方法包括:
当向所述存储介质随机读取数据时,对读取的数据进行奇偶校验;判断所述奇偶校验是否出错;若是,则对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验。
在第二方面的第一种可能实现方式中,所述对读取的数据所在存储空间的数据进行奇偶校验,包括:
计算所述读取的数据的奇偶校验码;查询所述读取的数据所在存储空间在写入数据时保存的奇偶校验码;判断计算的奇偶校验码是否与所述保存的奇偶校验码相同;若否,则所述奇偶校验出错;若是,则所述奇偶校验未出错。通过该技术方案,可以先判定读取的数据是否出错。
在第二方面的第二种可能实现方式中,所述对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验,包括:
计算所述读取的数据所在存储空间所属的存储块中总数据的ECC码;查询所述读取的数据所在存储空间所属的存储块在写入数据时保存的奇偶校验码;通过将计算的所述ECC码与所述保存的ECC码进行比较,确定所述读取的数据中发生比特反转的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。通过该技术方案,可以确定读取的数据中出错的比特位,并将其纠正。
结合第一方面以及第一方面的第一或第二种可能实现方式,在第三种可能实现方式中,所述存储块为256个字节的存储空间。一方面,存储块的字节数越少,存储介质中存储块的个数越多,所要记录的ECC码就会越多,另一方面,存储块的字节数越多,存储块中总数据就越大,所要记录的ECC码越复杂,综合上述两方面的因素,设定256个字节最为适中。
本发明实施例第三方面提供了一种更新ECC码的装置,该装置具有实现上述第一方面提供的方法的行为功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
本发明实施例第四方面提供了一种校验ECC码的装置,该装置具有实现上述第二方面提供的方法的行为功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
本发明实施例第五方面提供了一种存储设备,包括处理器、通信总线、存储介质、存储器以及输入输出接口。其中,所述通信总线用于实现这些组件之间的连接通信;存储介质包括多个虚拟的存储块,用于存储外部设备写入的数据,或送出外部数据读取的数据;所述输入输出接口用于向外部设备提供访问的接口,以读写数据;存储器中存储有程序代码。
一方面,当存储设备处于数据写入过程时,处理器用于调用存储器中存储的程序代码,执行以下操作:
获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码;当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据,其中,所述存储空间的位置用以确定所述存储空间所属的存储块;通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码;根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
可选的,处理器通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码的具体操作为:计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码;根据公式计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码,所述^表示按位异或的运算。
又可选的,处理器根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码的具体操作为:确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性;判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同;若是,则不修改所述总数据的ECC码的行校验码;若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的存储空间中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
另一方面,当存储设备处于数据读取过程时,处理器用于调用存储器中存储的程序代码,执行以下操作:
当通过输入输出接口向所述存储介质随机读取数据时,对读取的数据进行奇偶校验;判断所述奇偶校验是否出错;若是,则对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验。
可选的,处理器对读取的数据所在存储空间的数据进行奇偶校验的具体操作为:计算所述读取的数据的奇偶校验码;查询所述读取的数据所在存储空间在写入数据时保存的奇偶校验码;判断计算的奇偶校验码是否与所述保存的奇偶校验码相同;若否,则所述奇偶校验出错;若是,则所述奇偶校验未出错。
又可选的,处理器对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验的具体操作为:计算所述读取的数据所在存储空间所属的存储块中总数据的ECC码;查询所述读取的数据所在存储空间所属的存储块在写入数据时保存的奇偶校验码;通过将计算的所述ECC码与所述保存的ECC码进行比较,确定所述读取的数据中发生比特反转的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
由上可见,本发明实施例在向存储介质随机写入数据时,只需根据写入的数据和写入前的原始数据修改存储块中总数据的ECC码即可,可以解决现有技术中必须完整写入一个存储块的数据后才能计算ECC码的问题,从而不会破坏存储介质的随机写入性;本发明实施例在向存储介质随机读取数据时,先对读取的数据进行奇偶校验,只有在奇偶校验出错时才进行ECC校验,可以解决现有技术中每次读取数据时都要完整读取一个存储块的数据后才能进行ECC校验的问题,从而减少对存储介质的随机读取性的破坏。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种更新ECC码的方法的流程示意图;
图2是本发明实施例提供的一种校验ECC码的方法的流程示意图;
图3是本发明实施例提供的一种更新ECC码的装置的结构示意图;
图4是本发明实施例提供的一种行列码修改模块的结构示意图;
图5是本发明实施例提供的一种校验ECC码的装置的结构示意图;
图6是本发明实施例提供的一种奇偶校验模块的结构示意图;
图7是本发明实施例提供的一种ECC码校验模块的结构示意图;
图8是本发明实施例提供的一种存储设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本发明的实施例,这里先介绍下ECC码的计算方法。ECC码包括列校验码与行校验码,其计算对象是数据块,下面以256字节的数据作为一个数据块为例进行说明:
第一,计算ECC码的列校验码。
应理解地,1字节(Byte)包括8位(Bit),那么将256字节按位的方式展开可得到表1。
表1
CP0表示第0列、第2列、第4列和第6列的列极性;
CP1表示第1列、第3列、第5列和第7列的列极性;
CP2表示第0列、第1列、第4列和第5列的列极性;
CP3表示第2列、第3列、第6列和第7列的列极性;
CP4表示第0列、第1列、第2列和第3列的列极性;
CP5表示第4列、第5列、第6列和第7列的列极性。
其中,CP0=[Bit0]^[Bit2]^[Bit4]^[Bit6],^表示按位异或的运算,[Bit0]表示第0列的256个Bit0异或的结果,[Bit2]表示第2列的256个Bit2异或的结果,[Bit4]表示第4列的256个Bit4异或的结果,[Bit6]表示第6列的256个Bit6异或的结果。
以此类推,可以求得CP1~CP5。假设ECC_CP表示ECC码的列校验码,则ECC_CP={CP5,CP4,CP3,CP2,CP1,CP0}。
第二,计算ECC码的行校验码。
同理,将256字节按位的方式展开可得到表2。
RP0为第0、2、4、6、……252、254行的行极性;
RP1为第1、3、5、7、……253、255行的行极性;
RP2为第0、1、4、5、……252、254行(处理两行,跳过两行)的行极性;
RP3为第2、3、6、7、……254、255行(跳过两行,处理两行)的行极性;
RP4为……行(处理四行,跳过四行)的行极性;
RP5为……行(跳过四行,处理四行)的行极性;
RP6为……行(处理八行,跳过八行)的行极性;
RP7为……行(跳过八行,处理八行)的行极性;
RP8为……行(处理十六行,跳过十六行)的行极性;
RP9为……行(跳过十六行,处理十六行)的行极性;
RP10为……行(处理三十二行,跳过三十二行)的行极性;
RP11为……行(跳过三十二行,处理三十二行)的行极性;
RP12为……行(处理六十四行,跳过六十四行)的行极性;
RP13为……行(跳过六十四行,处理六十四行)的行极性;
RP14为……行(处理一百二十八行,跳过一百二十八行)的行极性;
RP15为……行(跳过一百二十八行,处理一百二十八行)的行极性;
其中,RP0=[Byte0]^[Byte2]^[Byte4]^[Byte6]^......^[Byte252]^[Byte254],^表示异或的运算,[Byte0]表示第0行的8个Bit异或的结果,[Byte2]表示第2行的8个Bit异或的结果,等等。
以此类推,可以求得RP1~RP15。假设ECC_RP表示ECC码的行校验码,则ECC_RP={RP15,RP14,……,RP3,RP2,RP1,RP0}。
综上所述,ECC码包括列校验码ECC_CP与行校验码ECC_RP,在存储介质的ECC校验过程中,在写数据时需要以256字节的数据块为单位写入数据,即每写入256字节的数据便计算一个ECC码,同理在读数据时需要以256字节的数据块为单位读取数据,即每读取256字节的数据便计算一个ECC码。然而,如NOR Flash等随机读写方式的存储介质,在读写数据的时候是以1字节为单位进行随机读写的,其中一个优点是可以对256字节以下的小数据进行随意读写,若直接向随机读写方式的存储介质引入ECC校验,那么该优点将不复存在。
图1是本发明实施例中一种更新ECC码的方法的流程示意图,该方法应用于存储介质的数据写入过程,所述存储介质包括多个存储块,可选的,本发明实施例中,设定存储块为256个字节的存储空间。如图所示本实施例中的更新ECC码的方法的流程可以包括:
S101,获取每个存储块中总数据的ECC码。
具体的,可以通过上文介绍的ECC码的计算方法,计算出每个存储块中256字节的数据对应的ECC码。可选的,若本地已记录有最近一次写入数据后计算得到的ECC码,或者其它情况下最新计算得到的ECC码,则直接查找到该ECC码,而不必再次计算。需要指出的是,获取每个存储块中总数据的ECC码的目的在于,后续向存储介质随机写入数据时,可以通过修改该ECC码来得到新的ECC码。
S102,当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据。
需要指出的是,这里只介绍了写入一字节的数据的情况,但应理解在数据写入过程,一般是写入多个字节的数据的情况,针对这种情况,只需以一字节的方式分别执行多次即可。
具体的,当向存储介质随机写入一字节的数据时,获取写入的数据、数据被写入的存储空间的位置以及该存储空间在写入数据之前所存储的原始数据。其中,所述存储空间的位置用以确定存储空间所属的存储块,可选的,所述存储空间的位置可以是存储地址,也可以是字节的序号。以存储空间的位置是字节的序号为例:假设向存储介质随机写入的数据为0xF0,数据被写入的存储空间对应的字节的序号为Byte9,且该存储空间在写入数据前所存储的原始数据为0x31,则获取的信息为0xF0、Byte9和0x31,进一步的,假设Byte 0~Byte 255属于第一存储块,由于Byte9落在Byte 0~Byte 255这个区间,则可以确定数据被写入的存储空间属于第一存储块。
S103,通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码。
具体的,由上文可知ECC码包括列校验码和行校验码,因此需根据写入的数据和原始数据,分别修改被写入的字节所属的存储块中总数据的ECC码的列校验码和ECC码的行校验码。
首先,修改ECC码的列校验码的方法可以是:通过对写入的数据的ECC码的列校验码、原始数据的ECC码的列校验码和存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的存储空间所属的存储块中总数据的ECC码的列校验码。具体实现流程为:
步骤1,计算写入的数据的ECC码的列校验码,以及原始数据的ECC码的列校验码。
例如:假设写入的数据为0xF0,原始数据为0x31,Data_ECC_CP表示写入的数据的ECC码的列校验码,Buf_ECC_CP表示原始数据的ECC码的列校验码,则通过上述ECC码的计算方法,可计算得Data_ECC_CP={0,0,0,0,0},Buf_ECC_CP={0,1,0,1,1,0}。
步骤2,根据公式计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码。
其中,表示修改后的总数据的ECC码的列校验码,ECC_CP表示修改前的总数据的ECC码的列校验码,^表示按位异或的运算。
例如:假设Data_ECC_CP={0,0,0,0,0},Buf_ECC_CP={0,1,0,1,1,0},
这里简单介绍下上述公式的原理:通过分析ECC码的计算方法可知,ECC_CP可以表示成ECC_CP=Byte0_ECC_CP^Byte1_ECC_CP^......^Byte255_ECC_CP的形式,将其简化为ECC_CP=X^Byte9_ECC_CP=X^Buf_ECC_CP(假设Byte9为被写入的存储空间),又由于ECC_CP^Buf_ECC_CP=X^Buf_ECC_CP^Buf_ECC_CP=X,则可见,中已经更新了Byte9在写入前和写入后的数据。
其次,修改ECC码的行校验码的方法可以是:根据写入的数据和原始数据,修改存储空间所属的存储块中总数据的ECC码的行校验码。具体实现流程为:
步骤1,确定写入的数据的奇偶性,以及原始数据的奇偶性。
具体实现过程中,分别对两个数据的各Bit位进行异或,若异或结果为0,则奇偶性为偶,若异或结果为1,则为奇偶性为奇。例如:假设写入的数据为0xF0(={1,1,1,1,0,0,0,0}),原始数据为0x31(={0,0,1,1,0,0,0,1}),则对于0xF0,异或结果为1^1^1^1^0^0^0^0=0,其奇偶性为偶,对于0x31,异或结果为0^0^1^1^0^0^0^1=1,其奇偶性为奇。
步骤2,判断写入的数据的奇偶性与原始数据的奇偶性是否相同。
步骤3,若相同,则不修改总数据的ECC码的行校验码;若不同,则确定在总数据的ECC码的行校验码中,与被写入的字节中数据关联的比特位,并对其进行反转。
一方面,若写入的数据的奇偶性与原始数据奇偶性相同,通过分析ECC码的计算方法可知,写入的数据和原始数据的变化不会对ECC码的行校验码产生影响,故不用修改ECC码的行校验码。
另一方面,若写入的数据的奇偶性与原始数据奇偶性不相同,则写入的数据和原始数据的变化会对ECC码的行校验码产生影响,故要修改ECC码的行校验码。具体实现过程中,先确定在256个字节的数据对应的ECC码的行校验码中,与被写入的存储空间中数据关联的比特位,其中,关联关系可以通过查阅表2得知,例如ECC码的行校验码中与Byte0关联的比特位为RP0、RP2、RP4、RP6、RP8、RP10、RP12、RP14和RP16;接着对确定的比特位进行反转,其中,反转是指将数据0变为数据1,或将数据1变为数据0,例如:假设ECC_RP表示修改前的ECC码的行校验码,ECC_RP={RP15,RP14,……,RP3,RP2,RP1,RP0}={1,0,0,0,1,1,0,1,1,1,0,0,1,1,0,1},表示修改后的ECC码的行校验码,关联的比特位为RP0、RP2、RP4、RP6、RP8、RP10、RP12和RP14,则
S104,根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
具体的,由于ECC码包括列校验码和行校验码,因而根据写入一字节的数据后的存储块中总数据的ECC码和修改后的存储块中总数据的ECC码的行校验码,可以得到存储块中总数据的ECC码,该ECC码即为更新后的ECC码。
由上可见,本发明实施例在向存储介质随机写入数据时,只需对原有的ECC码进行修改即可,解决了现有技术中必须写入256字节的数据到存储块后才能计算ECC码的问题,从而不会破坏存储介质的随机写入性。另外,本发明实施例无需重新计算ECC码,提高了运算效率。
图2是本发明实施例中一种校验ECC码的方法的流程示意图,该方法应用于存储介质的数据读取过程,所述存储介质包括多个存储块,所述存储块为多个字节组成的存储空间,可选的,本发明实施例中,设定存储块为256个字节组成的存储空间。如图所示本实施例中的校验ECC码的方法的流程可以包括:
S201,当向所述存储介质随机读取数据时,对读取的数据进行奇偶校验。
具体的,对读取的数据进行奇偶校验的方法流程为:
步骤1,计算读取的数据的奇偶校验码。
具体实现过程中,计算奇偶校验码的方法是对读取的数据的各Bit位求取异或结果。例如:假设读取的数据为0xF0(={1,1,1,1,0,0,0,0}),则0xF0的奇偶校验码为1^1^1^1^0^0^0^0=0。
步骤2,查询读取的数据所在存储空间在写入数据时保存的奇偶校验码。
需要指出的是,存储介质中的每个字节在写入数据时,都会计算该字节对应的存储空间中数据对应的奇偶校验码,并将其保存。具体实现过程中,在读取数据之后,查询读取的数据所在存储空间所保存的奇偶校验码。
步骤3,判断计算的奇偶校验码是否与保存的奇偶校验码相同。
步骤4,若步骤3判断结果为不相同,则奇偶校验出错;若步骤3判断结果为相同,则奇偶校验未出错。
一方面,若计算的奇偶校验码与保存的奇偶校验码不相同,则说明存储的数据发生了比特反转,导致写入的是一个数据,读出的是另一个数据,此时执行步骤S202,以进行ECC校验。
另一方面,若计算的奇偶校验码与保存的奇偶校验码相同,则说明存储的数据未出现异常,此时校验结束,无需再执行步骤S202。ECC校验需要读取整个存储块中256个字节的数据以计算ECC码,使得校验效率低下,由此可见,本发明实施例可以避免每次读取数据都要进行ECC校验,保证了校验可靠性的同时提高了校验效率。
作为一种另可选的实施方式,预先将存储块划分为多个子存储块,如将256字节的存储块划分为8个32字节的存储块,当向存储介质随机读取数据时,对读取的数据所在子存储块中的数据进行奇偶校验,奇偶校验的方式与上述方式相似,唯一区别是不用保存每个字节中数据的奇偶校验码,转而保存32个字节中数据的奇偶校验码,减少了需要保存的奇偶校验码的数量。
S202,判断所述奇偶校验是否出错。
具体的,若奇偶校验出错,则执行步骤S203。
S203,对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验。
具体的,对读取的数据所在存储空间所属的存储块中总数据进行ECC码校验的方法流程为:
步骤1,计算读取的数据所在存储空间所属的存储块中总数据的ECC码。
具体实现过程中,确定读取的数据所在存储空间所属的存储块,再读取该存储块中256字节的数据,计算256字节的数据对应的ECC码。
步骤2,查询读取的数据所在存储空间所属的存储块在写入数据时保存的奇偶校验码。
需要指出的是,存储介质中的每个存储块在写入数据时,都会计算该存储块中256字节的数据对应的奇偶校验码,并将其保存。具体实现过程中,在读取数据之后,查询读取的数据所在存储空间所属的存储块对应保存的奇偶校验码。
步骤3,通过将计算的ECC码与保存的ECC码进行比较,确定读取的数据中发生比特反转的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
应理解的,ECC校验可以确定出错的比特位,具体确定方法这里不做赘述。例如:假设读取的数据为0xF0(={1,1,1,1,0,0,0,0}),确定发生比特反转的比特位为Bit0,则纠正后的数据为0xF1(={1,1,1,1,0,0,0,1})。
由上可见,本发明实施例在向存储介质随机读取数据时,先对读取的数据进行奇偶校验,只有在奇偶校验出错时才进一步进行ECC校验,避免了每次读取数据都要进行ECC校验,保证了校验可靠性的同时提高了校验效率。
图3是本发明实施例中一种更新ECC码的装置的结构示意图。本发明装置用于实现图1提供的更新ECC码的方法。如图所示本发明实施例中的更新ECC码的装置至少可以包括ECC码获取模块310、数据获取模块320、行列码修改模块330以及ECC码更新模块340,其中:
ECC码获取模块310,用于获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码。
具体的,可以通过上文介绍的ECC码的计算方法,计算出每个存储块中256字节的数据对应的ECC码。可选的,若本地已记录有最近一次写入数据后计算得到的ECC码,或者其它情况下最新计算得到的ECC码,则直接查找到该ECC码,而不必再次计算。需要指出的是,获取每个存储块中总数据的ECC码的目的在于,后续向存储介质随机写入数据时,可以通过修改该ECC码来得到新的ECC码。
数据获取模块320,用于当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据。
其中,所述存储空间的位置用以确定所述存储空间所属的存储块,可选的,所述存储空间的位置可以是存储地址,也可以是字节的序号。以存储空间的位置是字节的序号为例:假设向存储介质随机写入的数据为0xF0,数据被写入的存储空间对应的字节的序号为Byte9,且该存储空间在写入数据前所存储的原始数据为0x31,则获取的信息为0xF0、Byte9和0x31,进一步的,假设Byte 0~Byte255属于第一存储块,由于Byte9落在Byte 0~Byte 255这个区间,则可以确定数据被写入的存储空间属于第一存储块。
行列码修改模块330,用于通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码。具体实现中,行列码修改模块330可以如图4所示进一步包括列码计算单元331、列码修改单元332、奇偶性确定单元333以及行码修改单元334,其中:
列码计算单元331,用于计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码。
具体实现过程中,计算写入的数据的ECC码的列校验码,以及原始数据的ECC码的列校验码;根据公式计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码。
其中,表示修改后的总数据的ECC码的列校验码,ECC_CP表示修改前的总数据的ECC码的列校验码,^表示按位异或的运算。
列码修改单元332,用于根据计算写入一字节的数据后的所述字节对应的存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码,所述^表示按位异或的运算。
奇偶性确定单元333,用于确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性。
具体实现过程中,分别对两个数据的各Bit位进行异或,若异或结果为0,则奇偶性为偶,若异或结果为1,则为奇偶性为奇。
行码修改单元334,用于判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同,若是,则不修改所述总数据的ECC码的行校验码;若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的字节中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
一方面,若写入的数据的奇偶性与原始数据奇偶性相同,通过分析ECC码的计算方法可知,写入的数据和原始数据的变化不会对ECC码的行校验码产生影响,故不用修改ECC码的行校验码。
另一方面,若写入的数据的奇偶性与原始数据奇偶性不相同,则写入的数据和原始数据的变化会对ECC码的行校验码产生影响,故要修改ECC码的行校验码。具体实现过程中,先确定在256个字节的数据对应的ECC码的行校验码中,与被写入的存储空间中数据关联的比特位,其中,关联关系可以通过查阅表2得知,例如ECC码的行校验码中与Byte0关联的比特位为RP0、RP2、RP4、RP6、RP8、RP10、RP12、RP14和RP16;接着对确定的比特位进行反转,其中,反转是指将数据0变为数据1,或将数据1变为数据0。
ECC码更新模块340,用于根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
具体的,由于ECC码包括列校验码和行校验码,因而根据写入一字节的数据后的存储块中总数据的ECC码和修改后的存储块中总数据的ECC码的行校验码,可以得到存储块中总数据的ECC码,该ECC码即为更新后的ECC码。
图5是本发明实施例中一种校验ECC码的装置的结构示意图。本发明装置用于实现图2提供的校验ECC码的方法。如图所示本发明实施例中的校验ECC码的装置至少可以包括奇偶校验模块510、校验判断模块520以及ECC码校验模块530,其中:
奇偶校验模块510,用于当向所述存储介质随机读取数据时,对读取的数据进行奇偶校验。具体实现中,奇偶校验模块510可以如图6所示进一步包括第一计算单元511、第一查询单元512和码值判断单元513,其中:
第一计算单元511,用于计算所述读取的数据的奇偶校验码。
具体实现过程中,计算奇偶校验码的方法是对读取的数据的各Bit位求取异或结果。
第一查询单元512,用于查询所述读取的数据所在存储空间在写入数据时保存的奇偶校验码。
需要指出的是,存储介质中的每个存储空间在写入数据时,都会计算该存储空间中数据对应的奇偶校验码,并将其保存。具体实现过程中,在读取数据之后,查询读取的数据所在存储空间对应保存的奇偶校验码。
码值判断单元513,用于判断计算的奇偶校验码是否与所述保存的奇偶校验码相同;若否,则所述奇偶校验出错;若是,则所述奇偶校验未出错。
一方面,若计算的奇偶校验码与保存的奇偶校验码不相同,则说明存储的数据发生了比特反转,导致写入的是一个数据,读出的是另一个数据,此时触发ECC码校验模块530,以进行ECC校验。
另一方面,若计算的奇偶校验码与保存的奇偶校验码相同,则说明存储的数据未出现异常,此时校验结束,无需再触发ECC码校验模块530。ECC校验需要读取整个存储块中256个字节的数据以计算ECC码,使得校验效率低下,由此可见,本发明实施例可以避免每次读取数据都要进行ECC校验,保证了校验可靠性的同时提高了校验效率。
校验判断模块520,用于判断所述奇偶校验是否出错。
ECC码校验模块530,用于当所述校验判断模块判定所述奇偶校验出错时,对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验。具体实现中,ECC码校验模块530可以如图7所示进一步包括第二计算单元531、第二查询单元532和比特反转单元533,其中:
第二计算单元531,用于计算所述读取的数据所在存储空间所属的存储块中总数据的ECC码。
具体实现过程中,确定读取的数据所在存储空间所属的存储块,再读取该存储块中256字节的数据,计算256字节的数据对应的ECC码。
第二查询单元532,用于查询所述读取的数据所在存储空间所属的存储块在写入数据时保存的奇偶校验码。
需要指出的是,存储介质中的每个存储块在写入数据时,都会计算该存储块中256字节的数据对应的奇偶校验码,并将其保存。具体实现过程中,在读取数据之后,查询读取的数据所在存储空间所属的存储块对应保存的奇偶校验码。
比特反转单元533,用于通过将计算的所述ECC码与所述保存的ECC码进行比较,确定所述读取的数据中发生比特反转的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
图8是本发明实施例中的一种存储设备的结构示意图,如图8所示,存储设备可以包括:至少一个处理器801,例如CPU,至少一个通信总线802,至少一个存储介质803,存储器804,输入输出接口805。其中,通信总线802用于实现这些组件之间的连接通信。存储介质803包括多个虚拟的存储块,存储块为多个字节的存储空间。存储器804可以是高速RAM存储器,也可以是非易失的存储器(non-volatile memory),例如至少一个磁盘存储器。输入输出接口805用于向外部设备提供访问的接口,以读写数据。可选的,存储器804还可以是至少一个位于远离前述处理器801的存储装置。存储器804中存储一组程序代码。
其中,在存储介质803的数据写入过程,处理器801用于调用存储器804中存储的程序代码,执行以下操作:
获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码;
当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据,其中,所述存储空间的位置用以确定存储空间所属的存储块;
通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码;
根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
可选的,处理器801通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码的具体操作为:
计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码;
根据公式计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码,所述^表示按位异或的运算。
进一步的,处理器801根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码的具体操作为:
确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性;
判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同;
若是,则不修改所述总数据的ECC码的行校验码;
若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的存储空间中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
可选的,所述存储块为256个字节的存储空间。
另外,在存储介质803的数据读取过程,处理器801用于调用存储器804中存储的程序代码,执行以下操作:
当通过输入输出接口向所述存储介质随机读取数据时,对读取的数据进行奇偶校验;
判断所述奇偶校验是否出错;
若是,则对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验。
可选的,处理器801对读取的数据所在存储空间的数据进行奇偶校验的具体操作为:
计算所述读取的数据的奇偶校验码;
查询所述读取的数据所在存储空间在写入数据时保存的奇偶校验码;
判断计算的奇偶校验码是否与所述保存的奇偶校验码相同;
若否,则所述奇偶校验出错;若是,则所述奇偶校验未出错。
又可选的,处理器801对所述读取的数据所在存储空间所属的存储块中总数据进行ECC码校验的具体操作为:
计算所述读取的数据所在存储空间所属的存储块中总数据的ECC码;
查询所述读取的数据所在存储空间所属的存储块在写入数据时保存的奇偶校验码;
通过将计算的所述ECC码与所述保存的ECC码进行比较,确定所述读取的数据中发生比特反转的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
又可选的,所述存储块为256个字节的存储空间。
由上可见,本发明实施例在向存储介质随机写入数据时,只需根据写入的数据和写入前的原始数据修改存储块中总数据的ECC码即可,可以解决现有技术中必须完整写入一个存储块的数据后才能计算ECC码的问题,从而不会破坏存储介质的随机写入性;本发明实施例在向存储介质随机读取数据时,先对读取的数据进行奇偶校验,只有在奇偶校验出错时才进行ECC校验,可以解决现有技术中每次读取数据时都要完整读取一个存储块的数据后才能进行ECC校验的问题,从而减少对存储介质的随机读取性的破坏。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (8)

1.一种更新错误检测和纠正ECC码的方法,其特征在于,所述方法应用于存储介质的数据写入过程,所述存储介质包括多个存储块,所述方法包括:
获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码;
当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据,其中,所述存储空间的位置用以确定所述存储空间所属的存储块;
通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码;
根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
2.如权利要求1所述的方法,其特征在于,所述通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,包括:
计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码;
根据公式 T 1 = a - l n ( 2 + 3 ) b , T 3 = a - l n ( 2 - 3 ) b , 计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码,所述^表示按位异或的运算。
3.如权利要求1所述的方法,其特征在于,所述根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码,包括:
确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性;
判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同;
若是,则不修改所述总数据的ECC码的行校验码;
若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的存储空间中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
4.如权利要求1-3任一项所述的方法,其特征在于,所述存储块为256个字节的存储空间。
5.一种更新错误检测和纠正ECC码的装置,其特征在于,所述装置应用于存储介质的数据写入过程,所述存储介质包括多个存储块,所述装置包括:
ECC码获取模块,用于获取每个所述存储块中总数据的ECC码,所述ECC码包括列校验码和行校验码;
数据获取模块,用于当向所述存储介质随机写入一字节的数据时,获取写入的数据、所述数据被写入的存储空间的位置以及所述存储空间在写入所述数据之前所存储的原始数据,其中,所述存储空间的位置用以确定所述存储空间所属的存储块;
行列码修改模块,用于通过对所述写入的数据的ECC码的列校验码、所述原始数据的ECC码的列校验码和所述存储空间所属的存储块中总数据的ECC码的列校验码进行逻辑运算,得到写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,以及根据所述写入的数据和所述原始数据,修改所述存储空间所属的存储块中总数据的ECC码的行校验码;
ECC码更新模块,用于根据所述写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码和修改后的所述存储空间所属的存储块中总数据的ECC码的行校验码,得到更新后的所述存储空间所属的存储块中总数据的ECC码。
6.如权利要求5所述的装置,其特征在于,所述行列码修改模块包括:
列码计算单元,用于计算所述写入的数据的ECC码的列校验码,以及所述原始数据的ECC码的列校验码;
列码修改单元,用于根据公式 E C C _ C P ‾ = E C C _ C P ^ D a t a _ E C C _ C P ^ B u f _ E C C _ C P , 计算写入一字节的数据后的所述存储空间所属的存储块中总数据的ECC码的列校验码,其中,所述表示计算后的所述总数据的ECC码的列校验码,所述ECC_CP表示计算前的所述总数据的ECC码的列校验码,所述Data_ECC_CP表示所述写入的数据的ECC码的列校验码,所述Buf_ECC_CP表示所述原始数据的ECC码的列校验码,所述^表示按位异或的运算。
7.如权利要求5所述的装置,其特征在于,所述行列码修改模块包括:
奇偶性确定单元,用于确定所述写入的数据的奇偶性,以及所述原始数据的奇偶性;
行码修改单元,用于判断所述写入的数据的奇偶性与所述原始数据的奇偶性是否相同;
若是,则不修改所述总数据的ECC码的行校验码;
若否,则确定在所述总数据的ECC码的行校验码中,与所述被写入的存储空间中数据关联的比特位,并对其进行反转,其中,所述反转是指将数据0变为数据1,或将数据1变为数据0。
8.如权利要求5-7任一项所述的装置,其特征在于,所述存储块为256个字节组成的存储空间。
CN201510844082.2A 2015-11-26 2015-11-26 一种更新错误检测和纠正ecc码的方法及装置 Active CN106802837B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510844082.2A CN106802837B (zh) 2015-11-26 2015-11-26 一种更新错误检测和纠正ecc码的方法及装置
PCT/CN2016/091840 WO2017088507A1 (zh) 2015-11-26 2016-07-27 一种更新错误检测和纠正ecc码的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510844082.2A CN106802837B (zh) 2015-11-26 2015-11-26 一种更新错误检测和纠正ecc码的方法及装置

Publications (2)

Publication Number Publication Date
CN106802837A true CN106802837A (zh) 2017-06-06
CN106802837B CN106802837B (zh) 2020-02-21

Family

ID=58762966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510844082.2A Active CN106802837B (zh) 2015-11-26 2015-11-26 一种更新错误检测和纠正ecc码的方法及装置

Country Status (2)

Country Link
CN (1) CN106802837B (zh)
WO (1) WO2017088507A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727541A (zh) * 2019-09-02 2020-01-24 广东紫晶信息存储技术股份有限公司 一种光盘分块存储校验方法及系统
CN111984457A (zh) * 2019-05-23 2020-11-24 华为技术有限公司 对存储信息更新的方法和装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158948B (zh) * 2019-12-30 2024-04-09 深信服科技股份有限公司 基于去重的数据存储与校验方法、装置及存储介质
CN113053451B (zh) * 2021-03-05 2022-05-10 深圳三地一芯电子有限责任公司 Nandflash内生成softbit的方法、系统、主机以及储存介质
CN117349079A (zh) * 2023-11-16 2024-01-05 苏州门海微电子科技有限公司 一种用于SPI NorFlash的ECC数据纠错方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101114491A (zh) * 2006-07-25 2008-01-30 日立环球储存科技荷兰有限公司 数据记录设备、记录介质及错误检测方法
CN101420283A (zh) * 2008-12-01 2009-04-29 华为技术有限公司 一种同步数字体系中的数据保护方法、装置和通信设备
US20090150744A1 (en) * 2007-12-06 2009-06-11 David Flynn Apparatus, system, and method for ensuring data validity in a data storage process
CN102339647A (zh) * 2010-07-23 2012-02-01 北京兆易创新科技有限公司 一种检错/纠错校验模块的检测方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005327437A (ja) * 2004-04-12 2005-11-24 Nec Electronics Corp 半導体記憶装置
US7546517B2 (en) * 2004-08-03 2009-06-09 President And Fellows Of Harvard College Error-correcting circuit for high density memory
US8239732B2 (en) * 2007-10-30 2012-08-07 Spansion Llc Error correction coding in flash memory devices
CN101183565B (zh) * 2007-12-12 2011-02-16 深圳市硅格半导体有限公司 存储介质中数据校验方法
CN102110028A (zh) * 2009-12-25 2011-06-29 康佳集团股份有限公司 一种nand闪存及其数据的校验方法和装置
CN102904585B (zh) * 2012-11-08 2015-10-28 杭州士兰微电子股份有限公司 动态纠错编、解码方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101114491A (zh) * 2006-07-25 2008-01-30 日立环球储存科技荷兰有限公司 数据记录设备、记录介质及错误检测方法
US20090150744A1 (en) * 2007-12-06 2009-06-11 David Flynn Apparatus, system, and method for ensuring data validity in a data storage process
CN101420283A (zh) * 2008-12-01 2009-04-29 华为技术有限公司 一种同步数字体系中的数据保护方法、装置和通信设备
CN102339647A (zh) * 2010-07-23 2012-02-01 北京兆易创新科技有限公司 一种检错/纠错校验模块的检测方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984457A (zh) * 2019-05-23 2020-11-24 华为技术有限公司 对存储信息更新的方法和装置
WO2020233203A1 (zh) * 2019-05-23 2020-11-26 华为技术有限公司 对存储信息更新的方法和装置
CN111984457B (zh) * 2019-05-23 2022-09-02 华为技术有限公司 对存储信息更新的方法和装置
US11914895B2 (en) 2019-05-23 2024-02-27 Huawei Technologies Co. Ltd. Method for updating stored information and apparatus
CN110727541A (zh) * 2019-09-02 2020-01-24 广东紫晶信息存储技术股份有限公司 一种光盘分块存储校验方法及系统

Also Published As

Publication number Publication date
CN106802837B (zh) 2020-02-21
WO2017088507A1 (zh) 2017-06-01

Similar Documents

Publication Publication Date Title
CN106445723B (zh) 存取闪存模块的方法、闪存控制器以及记忆装置
CN106484316B (zh) 用来管理一记忆装置的方法以及记忆装置与控制器
CN106802837A (zh) 一种更新错误检测和纠正ecc码的方法及装置
TWI486767B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
US8041883B2 (en) Restoring storage devices based on flash memories and related circuit, system, and method
US20170262333A1 (en) Error correction code unit, self-test method and associated controller applied to flash memory device for generating soft information
CN103578565B (zh) 一种NAND Flash存储芯片的校验方法及装置
TWI446350B (zh) 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器
US8719491B2 (en) Encoding flash memory data with a randomizer using different seeds for different sectors
CN101763903A (zh) 快闪存储器控制器、其纠错码控制器及其方法和系统
US9141530B2 (en) Data writing method, memory controller and memory storage device
CN105005450A (zh) 数据写入方法、存储器存储装置及存储器控制电路单元
US20130166991A1 (en) Non-Volatile Semiconductor Memory Device Using Mats with Error Detection and Correction and Methods of Managing the Same
CN106155582B (zh) 非挥发性储存装置与控制器
JP2019192316A (ja) 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
US8966344B2 (en) Data protecting method, memory controller and memory storage device
CN105988936B (zh) 非挥发性储存装置与控制器
CN105808378A (zh) 元数据修复方法及装置
CN100364013C (zh) 在闪存中存放校验码的方法及装置
CN114924923A (zh) 一种硬盘写入点正确性验证方法、系统、设备及介质
CN107203436A (zh) 一种Nand Flash数据校验的方法与装置
CN107562563A (zh) Nand Flash控制方法和装置
TWI442406B (zh) 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器
CN107291372A (zh) 电子装置及其数据验证方法
JP2010108029A (ja) 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210426

Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040

Patentee after: Honor Device Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.