CN101477481A - 一种自动纠错系统及方法 - Google Patents

一种自动纠错系统及方法 Download PDF

Info

Publication number
CN101477481A
CN101477481A CNA2009100779912A CN200910077991A CN101477481A CN 101477481 A CN101477481 A CN 101477481A CN A2009100779912 A CNA2009100779912 A CN A2009100779912A CN 200910077991 A CN200910077991 A CN 200910077991A CN 101477481 A CN101477481 A CN 101477481A
Authority
CN
China
Prior art keywords
data
correcting code
bug check
ecc
error correction
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.)
Pending
Application number
CNA2009100779912A
Other languages
English (en)
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CNA2009100779912A priority Critical patent/CN101477481A/zh
Publication of CN101477481A publication Critical patent/CN101477481A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开了一种自动纠错系统及方法。该方法包括下列步骤:根据输入数据进行错误检查修正码编码,并将所述根据输入数据进行编码得到的错误检查修正码和所述输入数据一并存储;根据读出的所述输入数据进行错误检查修正码编码,同时将所述根据输入数据进行编码得到的错误检查修正码与所述根据读出数据进行编码得到的错误检查修正码进行对比,查找错误数据位;根据所述错误数据位对读出数据进行纠正,并将纠正后的数据输入存储介质,同时将包括所述错误数据位的信息发送出去并发出重新读出数据请求。其能够实现自动纠正存储介质中的读写错误。

Description

一种自动纠错系统及方法
技术领域
本发明涉及计算机领域,特别是涉及一种自动纠错系统及方法。
背景技术
随着数字科技的发展,使得日常生活的数据慢慢转变成为以数字数据的方式进行存储,并可通过各种不同的接口进行数字数据的备份与传输,从而有利于提高数据存储的便利性和正确性。然而,在进行数据传输或存储的过程中,难免会出现数据传输或存储错误的情形,目前普遍是利用错误检查修正码(Error Checking and Correcting,ECC)对传输或存储的数据进行检测及纠正,以检查和纠正数据在传输或存储过程中是否有出现错误的情形。
图1是现有技术中的一种ECC纠错系统的结构示意图,通过它可以说明现有技术中ECC算法的运算原理。这种ECC纠错系统以预先确定的具有固定位数的数据包(本实施例中为64位)为工作对象。来自原始数据包的被选位被发送到多个奇偶校验树(本实施例中为8个),用于计算不同数据子集的奇偶性。每个数据子集大约由数据包数据位的一半组成,而且每个子集当中的数据都与其他子集当中的数据存在部分重叠。最后得出来的奇偶校验位(也称为纠错码位)将与原始数据一起被传输或存储。由于采用这样的形势来选择数据子集,因而当在数据传输过程中有错误被引入到原始数据中时可以通过比较由同样奇偶计算方法计算得到的奇偶校验位与初始纠错码位来识别错误位。尽管此种ECC纠错系统能够为数据完整性提供优良的保护,但是奇偶计算需要复杂的布线,从而导致ECC纠错系统不仅速度慢而且十分复杂;另外,如果数据包的大小发生改变,就需要重新设计ECC纠错系统,而且当数据包大小增加时,ECC纠错系统的运算速度往往会产生明显下降。
另外,目前一些发明专利大多是通过不同的方式实现产生ECC的功能,但在纠正错误位的问题上仍然需要人工进行修改,不能实现自动纠正读写错误功能。
发明内容
本发明的目的在于提供一种自动纠错系统及方法,以实现自动纠正存储介质中的读写错误。
为实现本发明的目的而提供的一种自动纠错系统,设置在读写请求总线和结果输出总线之间,用于实现在产生错误检查修正码功能的同时自动纠正读写错误的功能,所述自动纠错系统包括:存储介质输入模块、存储介质存储模块、错误检查修正码产生模块以及存储介质输出模块,其中:
所述存储介质输入模块,用于向存储介质输入数据,和接受错误检查修正码纠错请求;
所述错误检查修正码产生模块,用于根据输入数据或读出数据产生错误检查修正码;
所述存储介质存储模块,用于存储输入数据以及根据输入数据编码产生的错误检查修正码;
所述存储介质输出模块,用于根据输入数据产生的错误检查修正码和读出数据产生的错误检查修正码进行比较,查找并纠正错误数据位;并将纠错后的数据和错误检查修正码纠错请求发送给所述存储介质输入模块,同时发出重新读出数据请求。
所述存储介质输出模块,包括:错误检查修正码对比模块、错误检查修正码纠错模块和请求发送模块,其中:
所述错误检查修正码对比模块,用于根据输入数据产生的错误检查修正码和读出数据产生的错误检查修正码进行比较,查找错误数据位;
所述错误检查修正码纠错模块,用于纠正错误数据位;
所述请求发送模块,用于将纠错后的数据和错误检查修正码纠错请求发送给所述存储介质输入模块,同时发出重新读出数据请求。
为实现本发明的目的还提供一种自动纠错方法,用于自动纠正存储介质中的读写错误,所述方法包括下列步骤:
步骤100.根据输入数据进行错误检查修正码编码,并将所述根据输入数据进行编码得到的错误检查修正码和所述输入数据一并存储;
步骤200.根据读出的所述输入数据进行错误检查修正码编码,同时将所述根据输入数据进行编码得到的错误检查修正码与所述根据读出数据进行编码得到的错误检查修正码进行对比,查找错误数据位;
步骤300.根据所述错误数据位对读出数据进行纠正,并将纠正后的数据输入存储介质,同时将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
所述步骤100,包括下列步骤:
步骤110.根据输入数据进行错误检查修正码编码;
步骤120.将所述错误检查修正码和输入数据一并存储。
所述步骤110,包括下列步骤:
步骤111.根据输入数据,对标签信息进行错误检查修正码编码;
步骤112.根据输入数据,对数据信息进行错误检查修正码编码。
所述对标签信息进行错误检查修正码编码,是根据标签信息的位数,对标签信息高位加n位零,合并为64位数据进行编码。
所述步骤112,包括下列步骤:
步骤112a.将N位输入数据分成M(M=N/64)个64位数据data_in;
步骤112b.为第m(m=1)个64位数据data_in,产生8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32;
步骤112c.将所述8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32分别与所述64位数据进行运算,得到8位错误检查修正码:
data_ecc[0]=^(data_in & Cx)
data_ecc[1]=~(^(data_in & C0))
data_ecc[2]=^(data_in & C1)
data_ecc[3]=^(data_in & C2)
data_ecc[4]=^(data_in & C4)
data_ecc[5]=~(^(data_in & C8))
data_ecc[6]=^(data_in & C16)
data_ecc[7]=^(data_in & C32)
步骤112d.令m=m+1,判断m是否小于或等于M,若是则返回步骤112b;否则结束错误检查修正码编码。
所述步骤200,包括下列步骤:
步骤210.根据读出的所述输入数据进行错误检查修正码编码;
步骤220.将所述根据输入数据进行编码得到的错误检查修正码与所述根据读出的所述输入数据进行编码得到的错误检查修正码进行对比,查找错误数据位。
所述步骤210,包括下列步骤:
步骤211.根据读出的所述输入数据,对标签信息进行错误检查修正码编码;
步骤212.根据读出的所述输入数据,对数据信息进行错误检查修正码编码。
所述步骤220,包括下列步骤:
步骤221.对比所述输入数据的标签信息的错误检查修正码与读出数据的标签信息的错误检查修正码,查找错误标签信息位;
步骤222.对比所述输入数据的数据信息的错误检查修正码与读出数据的数据信息的错误检查修正码,查找错误数据信息位。
所述步骤300,包括下列步骤:
步骤310.根据所述错误数据位对读出的所述输入数据进行纠正,对错误数据位取反;
步骤320.发送错误检查修正码纠错请求,并将纠正后的数据重新输入存储介质;
步骤330.将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
所述步骤330,包括下列步骤:
步骤331.将错误数据位的信息组成缓存内部错误检查修正码校验结果总线发送出去;
步骤332.将缓存访问结果输出总线中的scacheres_ecc信息发送出去,报告出现错误检查修正码错误,提醒进行重新读出数据。
本发明的有益效果在于:
1.本发明的自动纠错系统布线简单,节省原材料,运算速度快;
2.本发明的自动纠错系统能够一次检测出多位读写错误,提高纠错效率;
3.本发明的自动纠错系统不需要人工进行修改,能够实现自动纠正读写错误功能。
附图说明
图1是现有技术中的一种ECC纠错系统的结构示意图;
图2是本发明一种自动纠错系统的结构示意图;
图3是本发明一种自动纠错方法的流程图;
图4是本发明中对数据进行ECC编码并存储的流程图;
图5是本发明中对比数据输入前后的ECC进行错误查找的流程图;
图6是本发明中根据错误信息自动纠正读写错误的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种自动纠错系统及方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种自动纠错系统及方法,是通过自动对写入Cache的数据产生一份错误检查修正码(Error Checking and Correcting,ECC)并一起存入Cache中;在读出数据时再次对数据产生新的ECC,并将新的ECC与原ECC进行比较,得出错误位信息;自动纠正错误位并通过总线发送错误信息,并让系统重新读取纠错后的信息,同时将纠错后的数据存入Cache实现自动纠正存储介质读写错误。
下面结合上述目标详细介绍本发明一种自动纠错系统。图2是本发明一种自动纠错系统的结构示意图,如图2所示,所述自动纠错系统位于读写请求总线和结果输出总线之间,包括:存储介质输入模块1、ECC产生模块2、存储介质存储模块3以及存储介质输出模块4,其中:
所述存储介质输入模块1,用于向存储介质输入数据和接受ECC纠错请求;
所述存储介质输入模块1,根据从读缓存请求总线(Scacheref)和写缓存请求总线(Scachewrite)接收到的数据,向存储介质输入数据;同时接收通过缓存内部ECC校验结果总线(Scorrect)传输的ECC纠错请求。
所述ECC产生模块2,用于根据输入数据或读出数据产生ECC;
较佳地,作为一种可实施方式,对64位的输入数据产生ECC。
所述存储介质存储模块3,用于存储输入数据以及根据输入数据编码产生的ECC;
所述存储介质存储模块3,接收通过缓存内部存储器输入总线传输的数据并存储。
所述存储介质输出模块4,用于根据输入数据产生的ECC和读出数据产生的ECC进行比较,查找并纠正错误数据位;并将纠错后的数据和ECC纠错请求发送给所述存储介质输入模块1,同时发出重新读出数据请求。
所述存储介质输出模块4,对通过缓存内部存储器输出总线(Sramout)传输的数据进行处理,对于没有错误的数据,通过缓存访问结果输出总线和缓存对外写数据总线输出数据;对于有错误的数据,通过缓存内部ECC校验结果总线(Scorrect)发出包括重新读出数据请求的ECC纠错请求。
所述存储介质输出模块4,包括:ECC对比模块41、ECC纠错模块42和请求发送模块43,其中:
所述ECC对比模块41,用于根据输入数据产生的ECC和读出数据产生的ECC进行比较,查找错误数据位;
所述ECC纠错模块42,用于纠正所述错误数据位;
所述请求发送模块43,用于将纠错后的数据和ECC纠错请求发送给所述存储介质输入模块,同时发出重新读出数据请求。
所述重新读出数据请求,是通过缓存内部ECC校验结果总线(Scorrect)发到存储介质输入模块。
相应于本发明的一种自动纠错系统,本发明还提供一种自动纠错方法,用于实现在产生错误检查修正码功能的同时自动纠正读写错误的功能。
图3是本发明一种自动纠错方法的流程图,如图3所示,所述方法包括下列步骤:
步骤100.根据输入数据进行ECC编码,并将所述根据输入数据进行编码得到的ECC和所述输入数据一并存储;
图4是本发明中对数据进行ECC编码并存储的流程图,如图4所示,所述步骤100,包括下列步骤:
步骤110.根据输入数据进行ECC编码;
所述ECC编码的方法,是现有技术中一种公开的方法,是根据需要编码的位数不同,相应密锁有不同。在此不再一一赘述。
步骤111.根据输入数据,对标签信息进行ECC编码;
对标签信息进行ECC编码的方法是:根据tag信息的位数,对tag信息高位加n位零,合并为64位数据进行编码。
作为一种可实施方式,对于一个需要存储的cache行,其中包括256位数据信息和40位标签(tag)信息。
针对40位标签(tag)信息进行ECC编码,得到tag_ecc[7:0]是{24’b0,tag[39:0]}的ECC,其中{24’b0,tag[39:0]}表示高24位为0,低40位为tag信息的64位数据。
步骤112.根据输入数据,对数据信息进行ECC编码;
步骤112a.将N位输入数据分成M(M=N/64)个64位数据data_in;
步骤112b.为第m(m=1)个64位数据data_in,产生8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32;
所述64位密锁对相应的ECC来说是固定的,查询相应ECC算法即能得到,是一种现有技术,在此不再一一赘述。
步骤112c.将所述8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32分别与所述64位数据进行运算,得到8位ECC:data_ecc[0]、data_ecc[1]、data_ecc[2]、data_ecc[3]、data_ecc[4]、data_ecc[5]、data_ecc[6]、data_ecc[7],所述64位数据data_in、64位密锁与ECC的对应关系如下:(其中,“&”为二元逻辑与操作;“^”为异或操作,当只有一个操作数的时候,“^”表示对这个数所有位,按位进行异或,当有两个操作数的时候,“^”表示对两个数之间相同的位进行异或;“~”为逻辑非操作。)
data_ecc[0]=^(data_in & Cx)
data_ecc[1]=~(^(data_in & C0))
data_ecc[2]=^(data_in & C1)
data_ecc[3]=^(data_in & C2)
data_ecc[4]=^(data_in & C4)
data_ecc[5]=~(^(data_in & C8))
data_ecc[6]=^(data_in & C16)
data_ecc[7]=^(data_in & C32)
作为一种可实施方式,根据上述实施例,针对256位数据信息进行ECC编码,将256位数据信息分成4个64位数据分别进行ECC编码,得到32位data_ecc信息,8位tag_ecc信息。data_ecc信息是写入时对数据进行的ECC编码结果:data_ecc[7:0]位是data[63:0]位的ECC,data_ecc[15:8]位是data[127:64]位的ECC,data_ecc[23:16]位是data[191:128]位的ECC,data_ecc[31:24]位是data[255:192]位的ECC。
步骤112d.令m=m+1,判断m是否小于或等于M,若是则返回步骤112b;否则结束ECC编码。
步骤120.将所述ECC和输入数据一并存储。
根据上述假设,将所述40位tag信息的8位ECC和40位tag信息,256位数据信息的32位ECC和256位数据信息一起存储到cache。
步骤200.对读出的所述输入数据再次进行ECC编码,同时将所述根据输入数据进行编码得到的ECC与所述根据读出数据进行编码得到的ECC进行对比,查找错误数据位;
读取存储的数据,对于读出的数据生成新的ECC,同时根据随数据一起读出的旧ECC,进行对比,查找错误数据位。
图5是本发明中对比数据输入前后的ECC进行错误查找的流程图,如图5所示,所述步骤200,包括下列步骤:
步骤210.根据读出的所述输入数据进行ECC编码;
步骤211.根据读出的所述输入数据,对其标签信息进行ECC编码;
步骤212.根据读出的所述输入数据,对其数据信息进行ECC编码。
步骤210中所述ECC编码方法与步骤110的编码方法完全一致,在此不再一一赘述。
作为一种可实施方式,根据上述假设,对读出的data,tag信息重新进行编码,产生data_chk,tag_chk信息,其中data_chk[7:0]位是data[63:0]位的新的ECC,data_chk[15:8]位是data[127:64]位的新的ECC,data_chk[23:16]位是data[191:128]位的新的ECC,data_chk[31:24]位是data[255:192]位的新的ECC;tag_chk[7:0]是{24’b0,tag[39:0]}的新的ECC,其中{24’b0,tag[39:0]}表示高24位为0,低40位为tag信息的64位数据。
步骤220.将所述根据输入数据进行编码得到的ECC与所述根据读出的所述输入数据进行编码得到的ECC进行对比,查找错误数据位;
根据ECC算法,将新旧校验码进行异或操作,得到一个8位的值,这8位的值根据ECC算法提供的表进行比较,如果是64种不同值中的一种,则表示64位数据相应位出错,如果是0,表示没有错误,如果是其他,表示出现了不可纠正的错误。此方法为现有技术,在此不再一一赘述。
步骤221.对比所述输入数据的标签信息的ECC与读出数据的标签信息的ECC,查找错误标签信息位;
步骤222.对比所述输入数据的数据信息的ECC与读出数据的数据信息的ECC,查找错误数据信息位;
作为一种可实施方式,根据上述实施例,对输入的data_ecc和data_chk、tag_ecc和tag_chk信息,以及ECC校验有效信息refvec_ecc,tag位有效信息tag_valid,进行查错。生成data_error,data_fatal,tag_error,tag_fatal信息。具体过程如下:
对于新旧校验码data_ecc[7:0]和data_chk[7:0],进行“^”操作,得到中间变量syndrome,syndrome=data_ecc^data_chk,data_error=|syndrome;data_fatel=data_error && err_syndrome,其中err_syndrome表示错误不可纠正。
对于新旧校验码tag_ecc[7:0]和tag_chk[7:0],进行“^”操作,得到中间变量syndrome,syndrome=data_ecc^data_chk,tag_error=|syndrome;tag_fatal=tag_error && err_syndrome,其中err_syndrome表示错误不可纠正。
步骤220中的对比方法,不同于现有技术中的奇偶检验法,它能够一次检测出多位错误数据。
步骤300.根据所述错误数据位对读出数据进行纠正,并将纠正后的数据输入存储介质,同时将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
作为一种可实施方式,对于64位数据输入:data_in,8位旧ECC:data_ecc,8位新ECC:data_chk,产生64位纠正的数据输出data_out,
图6是本发明中根据错误信息自动纠正读写错误的方法的流程图,如图6所示,所述步骤300,包括下列步骤:
步骤310.根据所述错误数据位对读出的所述输入数据进行纠正,对错误数据位取反;
在步骤220中,已经查找到错误数据位后,对错误位纠错采用机器纠错,纠错后的正确数据的每一位,是根据这一位是否错误,来选择是用数据,还是取反。
作为一种可实施方式,例如某一位原来数据是data[4],它的固有错误标记是syndrome4,检查得到的syndrome等于syndrome4,则正确数据new_data[4]=(syndrome==syndrome4)?!data[4]:data[4],这个表达式表示该位错误则取反,正确则取原值。
步骤320.发送ECC纠错请求,将纠正后的数据重新输入存储介质;
发送ECC纠错请求,将由二级缓存发出的scachewrite_allow信号(目的是告诉上级模块,二级缓存是否做好了准备接受写数据请求)置为0,不再允许外部的写请求,而优先将来自scorrect的正确的纠正信息通过sramin总线(sramin总线是scache内部的信号,作用是将写入的信息送入存储器中)写入存储器。
作为一种可实施方式,当error为1时,如果ECC校验有效(表示检测到ECC错误),并且tag_error或者data_error为1(表示tag或者data有错,而非不可纠正错误),那么表示取出的数据有错,需要进行纠正。cache输出模块里用信号scacheres_ecc=sramout_ecccheck & (tag_error|data_error)来向系统发出是否有ECC错误的信息。
步骤330.将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
所述步骤330,包括下列步骤:
步骤331.将错误数据位的信息组成scorrect总线发送出去;
缓存内部ECC校验结果(scorrect)总线,表示如下:
scorrect[0]=scorrect_valid;
scorrect[2:1]=scorrect_scseti;
scorrect[15:3]=scorrect_scindex;
scorrect[16:16]=scorrect_wen;
scorrect[56:17]=scorrect_tag;
scorrect[312:57]=scorrect_data;
其中:
scorrect_valid,表示是否需要进行ECC纠错,置1表示需要进行ECC纠错;置0表示不需要进行ECC纠错;
scorrect_scseti,根据判断出哪一组数据出错得到,表示出错数据组编号;
scorrect_scindex,包含读请求的索引信息;
所述索引信息的位数表示的是scache中索引块的数量,不同的scache可能定义的长度会有不同,这里13位表示2的13次方种映射可能,如果每个索引块大小是64个字节,那么这个scache就是8k*64B=512KB大小。
scorrect_wen,表示是否要将正确数据写入存储器,置1表示要将正确数据写入存储器;置0表示不要将正确数据写入存储器;
对cache来说,读出里面数据有很多种情况,如果是一个置换操作,读的目的是将旧的数据写出去,写到内存中去,同时将新的数据写入这个被置换的位置。此时如果纠错,需要将正确数据写出去,而不是写入cache,因为原来位置已经被新的数据代替了.这种情况下,正确数据重新在cache里走了一遍,然后输出,而不需要再写入存储器。
scorrect_tag,表示经过校验后得到的正确tag信息;
scorrect_data,表示经过校验后得到的正确数据信息。
通过设置scorrect总线中的参数,发出所述错误数据位的信息。
步骤332.将缓存访问结果输出(scacheres)总线(scacheres总线是scache模块的输出信号,将读取出来的数据和信息传送出去)中的scacheres_ecc信息发送出去,报告出现ECC错误,提醒进行重新读出数据。
步骤330中,发出重新读出数据请求,使得正确的数据被重新读取,不必人工进行查找再加以改动,实现了自动纠错。
本发明的有益效果在于:
1.本发明的自动纠错系统布线简单,节省原材料,运算速度快;
2.本发明的自动纠错系统能够一次检测出多位读写错误,提高纠错效率;
3.本发明的自动纠错系统不需要人工进行修改,能够实现自动纠正读写错误功能。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (12)

1.一种自动纠错系统,设置在读写请求总线和结果输出总线之间,其特征在于,所述自动纠错系统包括:存储介质输入模块、存储介质存储模块、错误检查修正码产生模块以及存储介质输出模块,其中:
所述存储介质输入模块,用于向存储介质输入数据,和接受错误检查修正码纠错请求;
所述错误检查修正码产生模块,用于根据输入数据或读出数据产生错误检查修正码;
所述存储介质存储模块,用于存储输入数据以及根据输入数据编码产生的错误检查修正码;
所述存储介质输出模块,用于对根据输入数据产生的错误检查修正码和读出数据产生的错误检查修正码进行比较,查找并纠正错误数据位;并将纠错后的数据和错误检查修正码纠错请求发送给所述存储介质输入模块,同时发出重新读出数据请求。
2.根据权利要求1所述的自动纠错系统,其特征在于,所述存储介质输出模块,包括:错误检查修正码对比模块、错误检查修正码纠错模块和请求发送模块,其中:
所述错误检查修正码对比模块,用于根据输入数据产生的错误检查修正码和读出数据产生的错误检查修正码进行比较,查找错误数据位;
所述错误检查修正码纠错模块,用于纠正错误数据位;
所述请求发送模块,用于将纠错后的数据和错误检查修正码纠错请求发送给所述存储介质输入模块,同时发出重新读出数据请求。
3.一种自动纠错误方法,用于实现在产生错误检查修正码功能的同时自动纠正读写错误的功能,其特征在于,所述方法包括下列步骤:
步骤100.根据输入数据进行错误检查修正码编码,并将所述根据输入数据进行编码得到的错误检查修正码和所述输入数据一并存储;
步骤200.根据读出的所述输入数据进行错误检查修正码编码,同时将所述根据输入数据进行编码得到的错误检查修正码与所述根据读出数据进行编码得到的错误检查修正码进行对比,查找错误数据位;
步骤300.根据所述错误数据位对读出数据进行纠正,并将纠正后的数据输入存储介质,同时将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
4.根据权利要求3所述的自动纠错方法,其特征在于,所述步骤100,包括下列步骤:
步骤110.根据输入数据进行错误检查修正码编码;
步骤120.将所述错误检查修正码和输入数据一并存储。
5.根据权利要求4所述的自动纠错方法,其特征在于,所述步骤110,包括下列步骤:
步骤111.根据输入数据,对标签信息进行错误检查修正码编码;
步骤112.根据输入数据,对数据信息进行错误检查修正码编码。
6.根据权利要求5所述的自动纠错方法,其特征在于,所述对标签信息进行错误检查修正码编码,是根据标签信息的位数,对标签信息高位加n位零,合并为64位数据进行编码。
7.根据权利要求5所述的自动纠错方法,其特征在于,所述步骤112,包括下列步骤:
步骤112a.将N位输入数据分成M(M=N/64)个64位数据data_in;
步骤112b.为第m(m=1)个64位数据data_in,产生8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32;
步骤112c.将所述8个64位密锁Cx,C0,C1,C2,C4,C8,C16,C32分别与所述64位数据进行运算,得到8位错误检查修正码:
data_ecc[0]=^(data_in & Cx)
data_ecc[1]=~(^(data_in & C0))
data_ecc[2]=^(data_in & C1)
data_ecc[3]=^(data_in & C2)
data_ecc[4]=^(data_in & C4)
data_ecc[5]=~(^(data_in & C8))
data_ecc[6]=^(data_in & C16)
data_ecc[7]=^(data_in & C32)
步骤112d.令m=m+1,判断m是否小于或等于M,若是则返回步骤112b;否则结束错误检查修正码编码。
8.根据权利要求3所述的自动纠错方法,其特征在于,所述步骤200,包括下列步骤:
步骤210.根据读出的所述输入数据进行错误检查修正码编码;
步骤220.将所述根据输入数据进行编码得到的错误检查修正码与所述根据读出的所述输入数据进行编码得到的错误检查修正码进行对比,查找错误数据位。
9.根据权利要求8所述的自动纠错方法,其特征在于,所述步骤210,包括下列步骤:
步骤211.根据读出的所述输入数据,对标签信息进行错误检查修正码编码;
步骤212.根据读出的所述输入数据,对数据信息进行错误检查修正码编码。
10.根据权利要求8所述的自动纠错方法,其特征在于,所述步骤220,包括下列步骤:
步骤221.对比所述输入数据的标签信息的错误检查修正码与读出数据的标签信息的错误检查修正码,查找错误标签信息位;
步骤222.对比所述输入数据的数据信息的错误检查修正码与读出数据的数据信息的错误检查修正码,查找错误数据信息位。
11.根据权利要求3所述的自动纠错方法,其特征在于,所述步骤300,包括下列步骤:
步骤310.根据所述错误数据位对读出的所述输入数据进行纠正,对错误数据位取反;
步骤320.发送错误检查修正码纠错请求,并将纠正后的数据重新输入存储介质;
步骤330.将包括所述错误数据位的信息发送出去并发出重新读出数据请求。
12.根据权利要求11所述的自动纠错方法,其特征在于,所述步骤330,包括下列步骤:
步骤331.将错误数据位的信息组成缓存内部错误检查修正码校验结果总线发送出去;
步骤332.将缓存访问结果输出总线中的scacheres_ecc信息发送出去,报告出现错误检查修正码错误,提醒进行重新读出数据。
CNA2009100779912A 2009-02-06 2009-02-06 一种自动纠错系统及方法 Pending CN101477481A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2009100779912A CN101477481A (zh) 2009-02-06 2009-02-06 一种自动纠错系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2009100779912A CN101477481A (zh) 2009-02-06 2009-02-06 一种自动纠错系统及方法

Publications (1)

Publication Number Publication Date
CN101477481A true CN101477481A (zh) 2009-07-08

Family

ID=40838202

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009100779912A Pending CN101477481A (zh) 2009-02-06 2009-02-06 一种自动纠错系统及方法

Country Status (1)

Country Link
CN (1) CN101477481A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043683A (zh) * 2010-12-27 2011-05-04 北京握奇数据系统有限公司 一种智能卡内存中数据运算的方法及一种智能卡
CN102135925A (zh) * 2010-12-27 2011-07-27 西安锐信科技有限公司 用于检测错误检查和纠正内存的方法和装置
CN102279776A (zh) * 2010-06-11 2011-12-14 无锡中星微电子有限公司 一种错误检查与纠正能力的测试方法及装置
CN102656566A (zh) * 2009-12-17 2012-09-05 国际商业机器公司 固态存储系统中的数据管理
CN103019883A (zh) * 2012-12-31 2013-04-03 华为技术有限公司 一种内存纠错方法及系统
CN103092727A (zh) * 2013-01-18 2013-05-08 大唐移动通信设备有限公司 Flash存储介质上的数据纠错方法和装置
CN103197984A (zh) * 2012-01-10 2013-07-10 炬力集成电路设计有限公司 一种对数据进行查错的方法和装置
CN103197986A (zh) * 2013-03-19 2013-07-10 西安华芯半导体有限公司 内存数据中监督位快速生成方法
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
CN105183579A (zh) * 2015-09-24 2015-12-23 联想(北京)有限公司 一种数据校验方法及装置、电子设备
CN105279048A (zh) * 2015-12-01 2016-01-27 浪潮(北京)电子信息产业有限公司 一种数据恢复方法及装置
CN108511028A (zh) * 2015-12-18 2018-09-07 中国科学院计算技术研究所 利用纠错码自动校正访问存储装置数据的装置及方法
CN109388518A (zh) * 2017-08-11 2019-02-26 华邦电子股份有限公司 数据写入方法
CN113868012A (zh) * 2021-08-27 2021-12-31 山东云海国创云计算装备产业创新中心有限公司 一种实现错误检查和纠正码功能的方法和装置

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102656566A (zh) * 2009-12-17 2012-09-05 国际商业机器公司 固态存储系统中的数据管理
CN102656566B (zh) * 2009-12-17 2015-12-16 国际商业机器公司 固态存储系统中的数据管理
US9037951B2 (en) 2009-12-17 2015-05-19 International Business Machines Corporation Data management in solid state storage systems
CN102279776B (zh) * 2010-06-11 2015-06-24 无锡中星微电子有限公司 一种错误检查与纠正能力的测试方法及装置
CN102279776A (zh) * 2010-06-11 2011-12-14 无锡中星微电子有限公司 一种错误检查与纠正能力的测试方法及装置
CN102135925A (zh) * 2010-12-27 2011-07-27 西安锐信科技有限公司 用于检测错误检查和纠正内存的方法和装置
CN102135925B (zh) * 2010-12-27 2012-10-17 西安锐信科技有限公司 用于检测错误检查和纠正内存的方法和装置
CN102043683B (zh) * 2010-12-27 2013-04-24 北京握奇数据系统有限公司 一种智能卡内存中数据运算的方法及一种智能卡
CN102043683A (zh) * 2010-12-27 2011-05-04 北京握奇数据系统有限公司 一种智能卡内存中数据运算的方法及一种智能卡
CN103197984B (zh) * 2012-01-10 2016-03-09 炬芯(珠海)科技有限公司 一种对数据进行查错的方法和装置
CN103197984A (zh) * 2012-01-10 2013-07-10 炬力集成电路设计有限公司 一种对数据进行查错的方法和装置
CN103019883B (zh) * 2012-12-31 2015-08-26 华为技术有限公司 一种内存纠错方法及系统
CN103019883A (zh) * 2012-12-31 2013-04-03 华为技术有限公司 一种内存纠错方法及系统
CN103092727A (zh) * 2013-01-18 2013-05-08 大唐移动通信设备有限公司 Flash存储介质上的数据纠错方法和装置
CN103197986A (zh) * 2013-03-19 2013-07-10 西安华芯半导体有限公司 内存数据中监督位快速生成方法
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
CN104991833B (zh) * 2015-06-15 2018-03-27 联想(北京)有限公司 一种错误检测方法及电子设备
CN105183579A (zh) * 2015-09-24 2015-12-23 联想(北京)有限公司 一种数据校验方法及装置、电子设备
CN105183579B (zh) * 2015-09-24 2019-09-24 联想(北京)有限公司 一种数据校验方法及装置、电子设备
CN105279048A (zh) * 2015-12-01 2016-01-27 浪潮(北京)电子信息产业有限公司 一种数据恢复方法及装置
CN105279048B (zh) * 2015-12-01 2018-04-13 浪潮(北京)电子信息产业有限公司 一种数据恢复方法及装置
CN108511028A (zh) * 2015-12-18 2018-09-07 中国科学院计算技术研究所 利用纠错码自动校正访问存储装置数据的装置及方法
CN109388518A (zh) * 2017-08-11 2019-02-26 华邦电子股份有限公司 数据写入方法
CN109388518B (zh) * 2017-08-11 2022-05-31 华邦电子股份有限公司 数据写入方法
CN113868012A (zh) * 2021-08-27 2021-12-31 山东云海国创云计算装备产业创新中心有限公司 一种实现错误检查和纠正码功能的方法和装置

Similar Documents

Publication Publication Date Title
CN101477481A (zh) 一种自动纠错系统及方法
US7900118B2 (en) Flash memory system and method for controlling the same
US8010875B2 (en) Error correcting code with chip kill capability and power saving enhancement
US20070268905A1 (en) Non-volatile memory error correction system and method
JP2012118979A (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
CN101901169B (zh) 扫描装置及方法
US20160283316A1 (en) Concurrent error detection in a ternary content-addressable memory (tcam) device
CN111506452B (zh) 数据存储保护方法、装置、计算机设备及存储介质
CN115729746A (zh) 一种基于crc和ecc存储数据保护方法
CN101488369B (zh) Bch码控制器接口电路
CN106528437A (zh) 数据储存系统与其相关方法
CN105022675B (zh) 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置与方法
CN101388256A (zh) 用于一存储器元件产生一低级错误更正码的控制器及其方法
US10552243B2 (en) Corrupt logical block addressing recovery scheme
CN104598330B (zh) 基于双备份的数据保存和校验方法
CN101256521A (zh) 提高闪存资料存取可靠性的方法
US7240272B2 (en) Method and system for correcting errors in a memory device
US7954034B1 (en) Method of and system for protecting data during conversion from an ECC protection scheme to a parity protection scheme
CN101803204B (zh) 纠正位串错误的方法
CN101452722B (zh) 错误检测码产生电路和使用该电路的编码电路及相关方法
CN115827304A (zh) 一种片内高速总线数据的校验系统及校验方法
CN107943415A (zh) 基于fat文件系统的查找空闲簇的方法和系统
CN114203252A (zh) 非易失存储器的坏块检测方法、装置、设备及存储介质
CN106250050A (zh) 用于数据传输中的实时空白页检测的方法和装置
CN117349079B (zh) 一种用于SPI NorFlash的ECC数据纠错方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31 contract change

Contract record no.: 2010990000062

Denomination of invention: Automatic error correction system and method

License type: exclusive license

Record date: 2010.1.28

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090708

EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model