CN100562857C - 校验数据的方法和装置 - Google Patents
校验数据的方法和装置 Download PDFInfo
- Publication number
- CN100562857C CN100562857C CNB2007101609750A CN200710160975A CN100562857C CN 100562857 C CN100562857 C CN 100562857C CN B2007101609750 A CNB2007101609750 A CN B2007101609750A CN 200710160975 A CN200710160975 A CN 200710160975A CN 100562857 C CN100562857 C CN 100562857C
- Authority
- CN
- China
- Prior art keywords
- data
- check code
- check
- verification
- piece
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
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
本发明公开了一种校验数据的方法和装置,属于数据存储领域。所述方法包括:CPU生成待校验的数据的错误检查和纠正的校验码,所述数据存储在目标芯片所使用的内存中;存储所述校验码;CPU根据所述数据和校验码对所述数据进行错误检查和纠正校验。所述装置包括处理模块、存储模块和校验模块。本发明可以正确判断出目标芯片所使用的内存中的数据的正确性,与现有技术相比,克服了目标芯片硬件不支持ECC校验功能的缺陷,可以对目标芯片所使用的内存中的数据进行保护,提高了数据的可靠性。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种校验数据的方法和装置。
背景技术
ECC(Error Checking and Correcting,错误检查和纠正)是指存储数据时,在数据位额外的位存储一个ECC计算结果,即ECC校验码,当重新读取已存储的数据时,根据ECC校验码对该数据进行校验,如果发现该数据有错误,则进行相应的处理。如当检查出有1个比特位错误时,则进行纠正,当检查出有多个比特位错误时,则产生告警信息。
现有技术中ECC功能一般由芯片的内存控制器来完成,当在内存中存储数据时,内存控制器进行ECC计算得到ECC校验码,并将该ECC校验码也存储在内存中,当从内存中读取该数据时,根据已存储的ECC校验码对该数据进行校验,如果该数据发生错误则进行相应的纠正和保护。
在实现本发明的过程中,发明人发现上述现有技术至少具有以下缺点:
并非所有芯片的内存控制器都具有ECC功能,当这种硬件上不支持ECC功能的芯片在内存中存储和读取数据时,无法根据ECC校验码对数据进行ECC校验,因此,当发生异常情况时,无法对存储的数据进行保护,可能导致重要的数据遭到破坏。如当由于某种原因发生一个比特位跳变而使内存中的数据发生软失效时,无法对该数据进行校验和保护。
发明内容
为了提高数据的可靠性,本发明实施例提供了一种校验数据的方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种校验数据的方法,所述方法包括:
将目标芯片所使用的内存划分成至少一块,将待校验的数据存储在所述块中,记录存储所述数据的块的状态为已使用,所述目标芯片与CPU相连;
CPU生成所述数据的错误检查和纠正的校验码;
存储所述校验码;
CPU检查所述划分的块的状态,如果为已使用,则根据所述校验码和所述块中存储的数据对所述数据进行错误检查和纠正校验。
另一方面,本发明实施例还提供了一种校验数据的装置,所述装置包括:
划分模块,用于将目标芯片所使用的内存划分为至少一块,所述目标芯片与所述装置相连;
数据存储模块,用于将待校验的数据存储在所述划分模块划分的块中;
记录模块,用于将所述数据存储模块存储所述数据的块的状态记录为已使用;
处理模块,用于生成待校验的数据的错误检查和纠正的校验码;
存储模块,用于存储所述处理模块生成的校验码;
校验模块,用于检查所述划分模块划分的块的状态,当检查出至少一块的状态为已使用时,读取所述状态为已使用的块,根据所述块中的数据和所述存储模块存储的校验码,对所述数据进行错误检查和纠正校验。
本发明实施例提供的技术方案的有益效果是:
通过预先生成ECC校验码并在校验时根据读取的数据与该ECC校验码对该数据进行ECC校验,可以正确判断出目标芯片所使用的内存中的数据的正确性。与现有技术相比,克服了目标芯片硬件不支持ECC校验功能的缺陷,可以及时检测出目标芯片所使用的内存中的数据是否遭到破坏,并对其进行保护,提高了数据的可靠性。
附图说明
图1是本发明实施例1提供的校验数据的方法流程图;
图2是本发明实施例1提供的芯片与内存的关系示意图;
图3是本发明实施例1提供的CPU对NP所使用的内存中的数据进行保护的示意图;
图4是本发明实施例2提供的校验数据的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例通过在目标芯片所使用的内存中存储数据时生成并存储该数据的ECC校验码,校验时读取该数据和ECC校验码,根据该数据和ECC校验码对该数据进行ECC校验。
实施例1
参见图1,本发明实施例提供了一种校验数据的方法,具体包括:
S101:在目标芯片所使用的内存中存储数据。
S102:生成并存储该数据的ECC校验码;
其中,生成ECC校验码的步骤可以由软件实现,本实施例中,执行该软件代码的过程由CPU来实现。该ECC校验码可以存储在CPU所使用的内存中,也可以存储在其他存储器中,例如目标芯片所使用的内存。本实施例中,该ECC校验码存储在CPU所使用的内存中。
S103:从目标芯片所使用的内存中读取数据,从CPU所使用的内存中读取ECC校验码。
其中,可以在使用该数据时,对该数据进行ECC校验,也可以定时对内存中的数据进行校验,如5ms或10ms等等。
S104:根据读取的数据和ECC校验码,对该数据进行ECC校验。
其中,对数据进行ECC校验的方法,可以是在读取所述数据时按照相同的算法重新计算得到新的ECC校验码,将新的ECC校验码与S102中生成的ECC校验码进行比较,若两个ECC校验码不相同,则说明所述数据出现了错误;若两个ECC校验码相同,则说明所述数据正确。其中,比较两个ECC校验码是否相同的方法有多种。例如,对S102中生成的ECC校验码和计算得到的新ECC校验码进行按位异或,若结果为0,则表示该数据正确;否则,表示该数据错误。
若经过ECC校验之后,发现所述数据发生了错误,还可以对该数据进行纠正或告警等处理,例如,如果发生一个比特位的错误,则进行纠正处理;如果发生多个比特位的错误,则进行告警处理。
参见图2,校验时,CPU通过目标芯片从目标芯片所使用的内存中读取数据,CPU从其所使用的内存中读取已存储的ECC校验码,并根据该ECC校验码和来自目标芯片的数据对该数据进行ECC校验,从而验证目标芯片所使用的内存中存储的数据的正确性。
为了避免由于频繁进行校验而过多地占用芯片的资源,进一步地,上述方法中还可以增加下面的步骤:
在目标芯片所使用的内存中存储数据之前,将目标芯片所使用的内存划分成至少一块,通常分为多块,当存储数据时,将数据存储在划分好的块中,并将存有数据的块的状态记录为已使用。如可以设计一个数据结构,存储数据时将生成的ECC校验码和该数据所在的内存块的使用状态均存储在该数据结构中;此时,若ECC校验码也存储在目标芯片所使用的内存中,则该ECC校验码和所述数据存储在不同的块中。
校验时采用定时校验的方式,定时检查存储数据的各个块的状态,如果当前块为已使用,则从该块中读取数据,并从存储ECC校验码的块中读取该ECC校验码,根据读取的数据和ECC校验码对该数据进行ECC校验。其中,根据实际情况,对于存储数据的各个块,可以每次检查部分内存块,也可以每次检查所有的内存块。进一步地,当从内存中删除已存储的数据时,可以将该数据所在的内存块的状态修改为未使用,以方便后续使用。
上述过程S101至S104可以用来对比较重要的数据涉及的内存进行ECC管理和保护。例如,参见图3,CPU生成和下发NP(Network Processor,网络处理器)报文转发过程中应用到的各种表项给NP,NP收到后根据表项内容进行报文分类、过滤、业务处理和路由转发等处理,图中的内存为NP所使用的内存,其中保存有表项的具体内容。当CPU下发表项时,CPU的驱动程序将表项写入内存中,同时触发调用预注册在驱动程序中的回调函数,回调函数计算出该表项的ECC校验码,并将ECC校验码保存在CPU分配的ECC数据结构中,该数据结构可以存储在CPU所使用的内存中,也可以存储在图中所示NP所使用的内存中。另外,CPU启动一个定时检查任务,读取NP内存中的表项并与存储在ECC数据结构内的ECC校验码一起对该表项进行ECC校验,如果校验的结果为表项正确,表示NP内存区未发生软失效,系统可正常运行;如果校验的结果为表项错误,表示NP内存区发生失效;检查任务根据保存的ECC校验码进行纠错,如果不能纠错,则检查任务通过告警模块告知上层,上层根据表项地址、重要程度确定处理策略。
本实施例针通过预先生成ECC校验码并在校验时根据数据与该ECC校验码进行ECC校验,可以正确判断出目标芯片所使用的内存中的数据的正确性。与现有技术相比,克服了目标芯片硬件不支持ECC校验功能的缺陷,可以及时检测出目标芯片所使用的内存中的数据是否遭到破坏,并对其进行保护,提高了数据的可靠性。对内存进行分块存储和ECC校验,可以节省ECC校验所占用的宝贵资源,提高了效率和实用性。
实施例2
参见图4,本发明实施例还提供了一种校验数据的装置,具体包括:
处理模块,用于生成待校验的数据的错误检查和纠正的校验码,数据存储在目标芯片所使用的内存中;在本实施例中目标芯片及目标芯片所使用的内存均位于所述装置中;
存储模块,用于存储处理模块生成的校验码;
校验模块,用于根据数据和存储模块存储的校验码,对数据进行错误检查和纠正校验。
进一步地,校验模块具体包括:
读取单元,用于定时从内存中读取数据,或使用数据时,从内存中读取数据,还用于读取存储模块存储的校验码;
校验单元,用于根据读取单元读取的数据和校验码,对数据进行错误检查和纠校验。
进一步地,上述装置还包括:
划分模块,用于将目标芯片所使用的内存划分为至少一块;
数据存储模块,用于将待校验的数据存储在划分模块划分的块中;
记录模块,用于将数据存储模块存储数据的块的状态记录为已使用;
相应地,校验模块具体包括:
检查单元,用于检查划分模块划分的块的状态;
校验单元,用于当检查单元检查出至少一块的状态为已使用时,读取状态为已使用的块,根据该块中存储的数据和存储模块存储的校验码对数据进行错误检查和纠正校验。
进一步地,上述装置还包括:
纠正模块,用于当校验模块校验出数据错误时,对数据进行纠正或告警处理。
本实施例通过预先生成ECC校验码并在校验时根据数据与该ECC校验码进行ECC校验,可以正确判断出目标芯片所使用的内存中的数据的正确性。与现有技术相比,克服了目标芯片硬件不支持ECC校验功能的缺陷,可以及时检测出目标芯片所使用的内存中的数据是否遭到破坏,并对其进行保护,提高了数据的可靠性。
本发明实施例可以利用软件实现,相应的软件可以存储在可读取的存储介质中,如芯片或内存中。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种校验数据的方法,其特征在于,所述方法包括:
将目标芯片所使用的内存划分成至少一块,将待校验的数据存储在所述块中,记录存储所述数据的块的状态为已使用,所述目标芯片与CPU相连;
CPU生成所述数据的错误检查和纠正的校验码;
存储所述校验码;
CPU检查所述划分的块的状态,如果为已使用,则根据所述校验码和所述块中存储的数据对所述数据进行错误检查和纠正校验。
2.根据权利要求1所述的校验数据的方法,其特征在于,所述存储所述校验码,具体为:
将所述校验码存储在CPU所使用的内存中,或者将所述校验码存储在所述目标芯片所使用的内存中。
3.根据权利要求1所述的校验数据的方法,其特征在于,所述CPU检查所述划分的块的状态,如果为已使用,则根据所述校验码和所述块中存储的数据对所述数据进行错误检查和纠正校验,具体为:
CPU定时检查所述划分的块的状态,如果为已使用,则读取所述数据和校验码,对所述数据进行错误检查和纠正校验;
或使用所述数据时,CPU检查所述划分的块的状态,如果为已使用,则读取所述数据和所述校验码,对所述数据进行错误检查和纠正校验。
4.根据权利要求1至3中任一权利要求所述的校验数据的方法,其特征在于,所述方法还包括:
当CPU根据所述数据和校验码对所述数据进行错误检查和纠正校验,发现所述数据错误时,对所述数据进行纠正或告警处理。
5.一种校验数据的装置,其特征在于,所述装置包括:
划分模块,用于将目标芯片所使用的内存划分为至少一块,所述目标芯片与所述装置相连;
数据存储模块,用于将待校验的数据存储在所述划分模块划分的块中;
记录模块,用于将所述数据存储模块存储所述数据的块的状态记录为已使用;
处理模块,用于生成待校验的数据的错误检查和纠正的校验码;
存储模块,用于存储所述处理模块生成的校验码;
校验模块,用于检查所述划分模块划分的块的状态,当检查出至少一块的状态为已使用时,读取所述状态为已使用的块,根据所述块中的数据和所述存储模块存储的校验码,对所述数据进行错误检查和纠正校验。
6.根据权利要求5所述的校验数据的装置,其特征在于,所述校验模块具体包括:
读取单元,用于定时检查所述划分模块划分的块的状态,当检查出至少一块的状态为已使用时,读取所述状态为已使用的块以及该块内的数据,或使用所述数据时,从所述数据所在的块中读取所述数据,还用于读取所述存储模块存储的校验码;
校验单元,用于根据所述读取单元读取的数据和校验码,对所述数据进行错误检查和纠校验。
7.根据权利要求5或6所述的校验数据的装置,其特征在于,所述装置还包括:
纠正模块,用于当所述校验模块校验出所述数据错误时,对所述数据进行纠正或告警处理。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101609750A CN100562857C (zh) | 2007-12-14 | 2007-12-14 | 校验数据的方法和装置 |
PCT/CN2008/073460 WO2009089716A1 (fr) | 2007-12-14 | 2008-12-11 | Procédé et dispositif de vérification de données |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101609750A CN100562857C (zh) | 2007-12-14 | 2007-12-14 | 校验数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101178675A CN101178675A (zh) | 2008-05-14 |
CN100562857C true CN100562857C (zh) | 2009-11-25 |
Family
ID=39404936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101609750A Expired - Fee Related CN100562857C (zh) | 2007-12-14 | 2007-12-14 | 校验数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100562857C (zh) |
WO (1) | WO2009089716A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100562857C (zh) * | 2007-12-14 | 2009-11-25 | 华为技术有限公司 | 校验数据的方法和装置 |
CN103198269B (zh) * | 2012-01-06 | 2017-05-10 | 上海华虹集成电路有限责任公司 | 防失败的密钥保存系统 |
CN103246574B (zh) * | 2012-02-10 | 2015-11-11 | 阿里巴巴集团控股有限公司 | 数据准确性的校验方法及装置 |
CN103534704A (zh) * | 2012-10-31 | 2014-01-22 | 华为技术有限公司 | 一种处理失效报文的方法、网络设备和处理器 |
CN103019883B (zh) * | 2012-12-31 | 2015-08-26 | 华为技术有限公司 | 一种内存纠错方法及系统 |
CN103577275B (zh) * | 2013-10-24 | 2017-07-07 | 华为技术有限公司 | 一种数据校验的方法、设备和系统 |
CN105589823A (zh) * | 2014-10-22 | 2016-05-18 | 乐视移动智能信息技术(北京)有限公司 | Usb接口复用mhl的方法、装置和电路 |
CN105224415B (zh) * | 2015-09-25 | 2018-01-09 | 北京奇虎科技有限公司 | 用于实现业务任务的码的生成方法及装置 |
CN106792183A (zh) * | 2016-12-16 | 2017-05-31 | 深圳Tcl数字技术有限公司 | 电视机的数据纠错方法及系统 |
CN106775476A (zh) * | 2016-12-19 | 2017-05-31 | 中国人民解放军理工大学 | 混合内存系统及其管理方法 |
CN108037753B (zh) * | 2017-12-15 | 2019-10-15 | 北京经纬恒润科技有限公司 | 一种数据检测方法和装置 |
CN109358981B (zh) * | 2018-09-25 | 2022-07-05 | 珠海市杰理科技股份有限公司 | 存储器读取错误纠正方法、系统、计算机设备和存储介质 |
CN109992444A (zh) * | 2019-03-25 | 2019-07-09 | 深圳忆联信息系统有限公司 | 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质 |
CN110825557B (zh) * | 2019-04-23 | 2020-12-22 | 上海安路信息科技有限公司 | 存储方法及存储系统 |
CN111949433A (zh) * | 2019-05-15 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 非易失性存储器工作参数的处理方法、控制装置及存储器 |
CN111078462B (zh) * | 2019-12-26 | 2023-09-22 | 海光信息技术股份有限公司 | 数据校验方法及电路 |
CN111176884B (zh) * | 2019-12-30 | 2023-05-16 | 西安智多晶微电子有限公司 | 用于fpga配置存储器的sec校验方法和装置 |
CN111158948B (zh) * | 2019-12-30 | 2024-04-09 | 深信服科技股份有限公司 | 基于去重的数据存储与校验方法、装置及存储介质 |
CN111443887A (zh) * | 2020-03-26 | 2020-07-24 | 京东方科技集团股份有限公司 | 显示驱动芯片及其数据处理方法 |
CN112164356B (zh) * | 2020-09-21 | 2022-04-26 | 昆山龙腾光电股份有限公司 | 检错方法及点亮治具 |
CN112306410B (zh) * | 2020-10-29 | 2022-09-30 | 珠海格力电器股份有限公司 | 一种电能表的数据处理方法、装置、存储介质及电能表 |
CN112631823A (zh) * | 2020-12-30 | 2021-04-09 | 锐捷网络股份有限公司 | 文件的处理方法及装置 |
CN112948165B (zh) * | 2021-02-26 | 2024-02-13 | 许继集团有限公司 | 一种继电保护装置内存数据可靠性保障方法 |
CN112804031B (zh) * | 2021-04-01 | 2021-06-22 | 广州征安电子科技有限公司 | 一种可进行错误数据纠正的数据传输远程终端系统 |
CN113868012A (zh) * | 2021-08-27 | 2021-12-31 | 山东云海国创云计算装备产业创新中心有限公司 | 一种实现错误检查和纠正码功能的方法和装置 |
CN114721867A (zh) * | 2022-02-14 | 2022-07-08 | 阿里巴巴(中国)有限公司 | 数据校验方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5459742A (en) * | 1992-06-11 | 1995-10-17 | Quantum Corporation | Solid state disk memory using storage devices with defects |
CN101060015A (zh) * | 2007-05-23 | 2007-10-24 | 北京芯技佳易微电子科技有限公司 | 一种多比特闪存及其错误检测和纠正的方法 |
CN100562857C (zh) * | 2007-12-14 | 2009-11-25 | 华为技术有限公司 | 校验数据的方法和装置 |
-
2007
- 2007-12-14 CN CNB2007101609750A patent/CN100562857C/zh not_active Expired - Fee Related
-
2008
- 2008-12-11 WO PCT/CN2008/073460 patent/WO2009089716A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN101178675A (zh) | 2008-05-14 |
WO2009089716A1 (fr) | 2009-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100562857C (zh) | 校验数据的方法和装置 | |
US10019312B2 (en) | Error monitoring of a memory device containing embedded error correction | |
KR100681429B1 (ko) | 반도체 메모리 장치 및 그것의 비트 에러 검출 방법 | |
KR100645058B1 (ko) | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 | |
KR101572038B1 (ko) | 메모리 어레이의 에러 수정 방법 | |
US7890836B2 (en) | Method and apparatus of cache assisted error detection and correction in memory | |
US7587658B1 (en) | ECC encoding for uncorrectable errors | |
TW200837550A (en) | Memory system and method of operation | |
US8566672B2 (en) | Selective checkbit modification for error correction | |
WO2007097019A1 (ja) | キャッシュ制御装置およびキャッシュ制御方法 | |
AU597140B2 (en) | Efficient address test for large memories | |
CN102135925B (zh) | 用于检测错误检查和纠正内存的方法和装置 | |
CN111475327B (zh) | 存储系统及其操作方法 | |
US20150095738A1 (en) | Error Detection and Correction in Ternary Content Addressable Memory (TCAM) | |
US20060077750A1 (en) | System and method for error detection in a redundant memory system | |
US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
CN108228381A (zh) | 存储系统及其错误校正方法 | |
US9529669B2 (en) | Error detection and correction in binary content addressable memory (BCAM) | |
US20080077840A1 (en) | Memory system and method for storing and correcting data | |
CN102981925A (zh) | 应用于通讯设备的寄存器巡检校验控制方法 | |
US8028221B2 (en) | Error correction and error detection method for reading of stored information data and a storage control unit for the same | |
CN114203252A (zh) | 非易失存储器的坏块检测方法、装置、设备及存储介质 | |
JP6193112B2 (ja) | メモリアクセス制御装置、メモリアクセス制御システム、メモリアクセス制御方法、及び、メモリアクセス制御プログラム | |
CN111352754A (zh) | 一种数据存储检错纠错方法及数据存储装置 | |
US20230386598A1 (en) | Methods for real-time repairing of memory failures caused during operations, memory systems performing repairing methods, and data processing systems including repairing memory systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091125 Termination date: 20151214 |
|
EXPY | Termination of patent right or utility model |