CN112445668A - 一种实现内存on-die ECC的低成本软件方法和装置 - Google Patents

一种实现内存on-die ECC的低成本软件方法和装置 Download PDF

Info

Publication number
CN112445668A
CN112445668A CN202011478806.3A CN202011478806A CN112445668A CN 112445668 A CN112445668 A CN 112445668A CN 202011478806 A CN202011478806 A CN 202011478806A CN 112445668 A CN112445668 A CN 112445668A
Authority
CN
China
Prior art keywords
check code
data
stored
data frame
obtaining
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
CN202011478806.3A
Other languages
English (en)
Other versions
CN112445668B (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.)
Lenovo Changfeng Technology Beijing Co Ltd
Original Assignee
Lenovo Changfeng Technology Beijing 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 Lenovo Changfeng Technology Beijing Co Ltd filed Critical Lenovo Changfeng Technology Beijing Co Ltd
Priority to CN202011478806.3A priority Critical patent/CN112445668B/zh
Publication of CN112445668A publication Critical patent/CN112445668A/zh
Application granted granted Critical
Publication of CN112445668B publication Critical patent/CN112445668B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明提供了一种实现内存on‑die ECC的低成本软件方法及装置,所述方法包括:获得64bits待储存数据;计算待储存数据的8bits第一校验码;根据待储存数据与第一校验码,获得72bits数据帧;获得内存芯片的额外存储空间;将数据帧写入额外存储空间;CPU对数据帧进行回读,得到回读数据帧;计算回读数据帧中待储存数据的第二校验码;判断第二校验码与第一校验码是否一致;如果第二校验码与第一校验码不一致,确定待储存数据发生单bit跳变;获得第二校验码与第一校验码出现不一致的位置;对待储存数据进行纠错。通过软件ECC纠错方式,达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。

Description

一种实现内存on-die ECC的低成本软件方法和装置
技术领域
本发明涉及ECC纠错技术领域,尤其涉及一种实现内存on-die ECC的低成本软件方法和装置。
背景技术
当前业界主流的内存支持ECC的方案,主要是通过增加一颗用于存储ECC码的DDR颗粒的内存条,来实现内存的单bit纠错。虽然当前通用服务器领域用的内存条绝大部分已经支持ECC纠错功能,但主板上使用的DDR颗粒受主板及CPU的限制,还不能支持ECC纠错。
但本申请发明人在实现本申请实施例中技术方案的过程中,发现上述现有技术至少存在如下技术问题:
现有技术中的ECC纠错方案由于增加一颗用于存储ECC码的DDR颗粒内存条,从而存在纠错成本高昂,同时还需CPU支持ECC功能,且不适用于单DDR颗粒的技术问题。
发明内容
本发明实施例提供了一种实现内存on-die ECC的低成本软件方法和装置,用以解决现现有技术中的ECC纠错方案由于增加一颗用于存储ECC码的DDR颗粒内存条,从而存在纠错成本高昂,同时还需CPU支持ECC功能,且不适用于单DDR颗粒的技术问题。通过软件ECC纠错方式,达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。
鉴于上述问题,提出了本申请实施例以便提供一种实现内存on-die ECC的低成本软件方法和装置。
第一方面,本发明提供了一种实现内存on-die ECC的低成本软件方法,所述方法包括:获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
优选的,所述判断所述第二校验码与所述第一校验码是否一致,还包括:如果所述第二校验码与所述第一校验码保持一致,确定所述待储存数据未发生单bit跳变。
优选的,所述根据所述待储存数据与所述第一校验码,获得数据帧,包括:将所述待储存数据拆分成8组,其中,每组为8bits数据;将所述第一校验码附加到所述待储存数据后面,得到所述数据帧。
优选的,所述第二校验码为所述回读数据帧中待储存数据的实际校验码,且所述第二校验码仍为8bits。
优选的,所述内存芯片为单DDR颗粒。
优选的,所述内存芯片为多DDR颗粒。
第二方面,本发明提供了一种实现内存on-die ECC的低成本软件装置,所述装置包括:
第一获得单元,所第一获得单元用于获得待储存数据,其中,所述待储存数据为64bits数据;
第一计算单元,所述第一计算单元用于计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
第二获得单元,所述第二获得单元用于根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
第三获得单元,所述第三获得单元用于获得内存芯片的额外存储空间;
第一写入单元,所述第一写入单元用于将所述数据帧写入所述内存芯片的额外存储空间中;
第一回读单元,所述第一回读单元用于CPU对所述数据帧进行回读,得到回读数据帧;
第二计算单元,所述第二计算单元用于计算所述回读数据帧中待储存数据的第二校验码;
第一判断单元,所述第一判断单元用于判断所述第二校验码与所述第一校验码是否一致;
第一确定单元,所述第一确定单元用于如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
第四获得单元,所述第四获得单元用于获得所述第二校验码与所述第一校验码出现不一致的位置;
第一纠错单元,所述第一纠错单元用于根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
优选的,所述第一判断单元还包括:
第二确定单元,所述第二确定单元用于如果所述第二校验码与所述第一校验码保持一致,确定所述待储存数据未发生单bit跳变。
优选的,所述第二获得单元包括:
第一拆分单元,所述第一拆分单元用于将所述待储存数据拆分成8组,其中,每组为8bits数据;
第一附加单元,所述第一附加单元用于将所述第一校验码附加到所述待储存数据后面,得到所述数据帧。
优选的,所述第二校验码为所述回读数据帧中待储存数据的实际校验码,且所述第二校验码仍为8bits。
优选的,所述内存芯片为单DDR颗粒。
优选的,所述内存芯片为多DDR颗粒。
第三方面,本发明提供了一种实现内存on-die ECC的低成本软件装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单b it跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明实施例提供的一种实现内存on-die ECC的低成本软件方法和装置,所述方法包括:获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单b it跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。用以解决现现有技术中的ECC纠错方案由于增加一颗用于存储ECC码的DDR颗粒内存条,从而存在纠错成本高昂,同时还需CPU支持ECC功能,且不适用于单DDR颗粒的技术问题。通过软件ECC纠错方式,达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明实施例中一种实现内存on-die ECC的低成本软件方法的流程示意图;
图2为本发明实施例中一种实现内存on-die ECC的低成本软件装置的结构示意图;
图3为本发明实施例中另一种实现内存on-die ECC的低成本软件装置的结构示意图;
图4为本发明实施例中数据写入内存的流程示意图。
附图标记说明:第一获得单元1,第一计算单元2,第二获得单元3,第三获得单元4,第一写入单元5,第一回读单元6,第二计算单元7,第一判断单元8,第一确定单元9,第四获得单元10,第一纠错单元11,总线300,接收器301,处理器302,发送器303,存储器304,总线接口306。
具体实施方式
本发明实施例提供了一种实现内存on-die ECC的低成本软件方法和装置,用以解决现现有技术中的ECC纠错方案由于增加一颗用于存储ECC码的DDR颗粒内存条,从而存在纠错成本高昂,同时还需CPU支持ECC功能,且不适用于单DDR颗粒的技术问题。
本发明提供的技术方案总体思路如下:获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。通过软件ECC纠错方式,达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例一
图1为本发明实施例中一种实现内存on-die ECC的低成本软件方法的流程示意图。如图1所示,本发明实施例提供了一种实现内存on-die ECC的低成本软件方法,所述方法包括:
步骤s1:获得待储存数据,其中,所述待储存数据为64bits数据;
步骤s2:计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
步骤s3:根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
步骤s4:获得内存芯片的额外存储空间;
步骤s5:将所述数据帧写入所述内存芯片的额外存储空间中;
步骤s6:CPU对所述数据帧进行回读,得到回读数据帧;
步骤s7:计算所述回读数据帧中待储存数据的第二校验码;
步骤s8:判断所述第二校验码与所述第一校验码是否一致;
步骤s9:如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
步骤s10:获得所述第二校验码与所述第一校验码出现不一致的位置;
步骤s11:根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
进一步的,所述根据所述待储存数据与所述第一校验码,获得数据帧,包括:将所述待储存数据拆分成8组,其中,每组为8bits数据;将所述第一校验码附加到所述待储存数据后面,得到所述数据帧。
进一步的,所述第二校验码为所述回读数据帧中待储存数据的实际校验码,且所述第二校验码仍为8bits。
具体而言,所谓ECC,就是英文字母“Error Correcting Code”的缩写,中文译为错误检查和纠正,所述ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,用于提高计算机运行的稳定性和增加可靠性。“内存on-die ECC”意指内存条上用于储存ECC码的固有内存芯片,在本发明实施例中不需增加额外的用于储存ECC码的DDR颗粒内存条,其中,DDR为英文字母Double DataRate SDRAM的缩写,译为双倍速率同步动态随机存储器,利用底层软件将数据存储在DDR内部的储存空间中,通过牺牲大约10%的内存容量及带宽性能,来获取更高的系统可靠性,可以降低高可靠性应用场景下系统宕机的风险。如图4所示,当CPU需要对所述内存芯片写入数据时,首先将所述待储存数据中每64bits数据拆分成若8组,每组8bits,然后CPU内部通过软件计算出所述待储存数据的8bits的ECC校验码,即所述第一校验码,将所述第一校验码附加到所述待储存数据的后面,这样共72bits组成一帧数据帧,与传统技术不同的是,本发明实施例获取到所述内存芯片的额外存储空间,并将所述72bits数据帧写入所述内存芯片的额外存储空间中,当CPU需要用到所述内存芯片中的数据时,CPU会对所述数据帧进行回读,当读取到这一帧数据之后,底层软件会重新计算所述回读帧数据中的64bits数据的实际ECC码值,即所述第二校验码,然后将所述第二校验码与所述回读帧数据中包含的8bitECC码值(所述第一校验码)进行比较分析,判断两者是否保持一致,即判断所述64bits数据在写入和回读时的ECC码值是否相同,如果所述第二校验码与所述第一校验码不一致,就能确定出所述待储存数据发生单bit跳变,根据所述第二校验码与所述第一校验码出现不一致的位置,底层软件就可定位到此次回读数据帧中发生单bit跳变的位置,从而对所述待储存数据进行纠错。进一步达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。
进一步的,所述判断所述第二校验码与所述第一校验码是否一致,还包括:如果所述第二校验码与所述第一校验码保持一致,确定所述待储存数据未发生单bit跳变。
进一步的,所述内存芯片为单DDR颗粒。
进一步的,所述内存芯片为多DDR颗粒。
具体而言,如果所述第二校验码与所述第一校验码保持一致,即所述64bits数据在写入和回读时的ECC码值相同,就可确定出所述待储存数据未发生单bit跳变,不需再对其进行纠错。由于本发明实施例通过底层软件将所述待储存数据写入所述内存芯片的额外存储空间,则不需额外增加ECC内存,因而对于单DDR颗粒或多DDR颗粒内存条均支持,具有适用范围广的有点。只要对现有硬件进行适配,不依赖芯片的集成度,完全软件实现ECC纠错功能适用于愿意为了高可靠性小幅牺牲性能的场景。
实施例二
基于与前述实施例中一种实现内存on-die ECC的低成本软件方法同样的发明构思,本发明还提供一种实现内存on-die ECC的低成本软件装置,如图2所示,所述装置包括:
第一获得单元1,所第一获得单元1用于获得待储存数据,其中,所述待储存数据为64bits数据;
第一计算单元2,所述第一计算单元2用于计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
第二获得单元3,所述第二获得单元3用于根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
第三获得单元4,所述第三获得单元4用于获得内存芯片的额外存储空间;
第一写入单元5,所述第一写入单元5用于将所述数据帧写入所述内存芯片的额外存储空间中;
第一回读单元6,所述第一回读单元6用于CPU对所述数据帧进行回读,得到回读数据帧;
第二计算单元7,所述第二计算单元7用于计算所述回读数据帧中待储存数据的第二校验码;
第一判断单元8,所述第一判断单元8用于判断所述第二校验码与所述第一校验码是否一致;
第一确定单元9,所述第一确定单元9用于如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
第四获得单元10,所述第四获得单元10用于获得所述第二校验码与所述第一校验码出现不一致的位置;
第一纠错单元11,所述第一纠错单元11用于根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
进一步的,所述第一判断单元8还包括:
第二确定单元,所述第二确定单元用于如果所述第二校验码与所述第一校验码保持一致,确定所述待储存数据未发生单bit跳变。
进一步的,所述第二获得单元3包括:
第一拆分单元,所述第一拆分单元用于将所述待储存数据拆分成8组,其中,每组为8bits数据;
第一附加单元,所述第一附加单元用于将所述第一校验码附加到所述待储存数据后面,得到所述数据帧。
进一步的,所述第二校验码为所述回读数据帧中待储存数据的实际校验码,且所述第二校验码仍为8bits。
进一步的,所述内存芯片为单DDR颗粒。
进一步的,所述内存芯片为多DDR颗粒。
前述图1实施例一中的一种实现内存on-die ECC的低成本软件方法的各种变化方式和具体实例同样适用于本实施例的一种实现内存on-die ECC的低成本软件装置,通过前述对一种实现内存on-die ECC的低成本软件方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种实现内存on-die ECC的低成本软件装置的实施方法,所以为了说明书的简洁,在此不再详述。
实施例三
基于与前述实施例中一种实现内存on-die ECC的低成本软件方法同样的发明构思,本发明还提供一种实现内存on-die ECC的低成本软件装置,其上存储有计算机程序,该程序被处理器执行时实现前文所述一种实现内存on-die ECC的低成本软件方法的任一方法的步骤。
其中,在图3中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
实施例四
基于与前述实施例中一种实现内存on-die ECC的低成本软件方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
在具体实施过程中,该程序被处理器执行时,还可以实现实施例一中的任一方法步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明实施例提供的一种实现内存on-die ECC的低成本软件方法和装置,所述方法包括:获得待储存数据,其中,所述待储存数据为64bits数据;计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;获得内存芯片的额外存储空间;将所述数据帧写入所述内存芯片的额外存储空间中;CPU对所述数据帧进行回读,得到回读数据帧;计算所述回读数据帧中待储存数据的第二校验码;判断所述第二校验码与所述第一校验码是否一致;如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;获得所述第二校验码与所述第一校验码出现不一致的位置;根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。用以解决现现有技术中的ECC纠错方案由于增加一颗用于存储ECC码的DDR颗粒内存条,从而存在纠错成本高昂,同时还需CPU支持ECC功能,且不适用于单DDR颗粒的技术问题。通过软件ECC纠错方式,达到了在不额外增加ECC的前提下,实现数据的单bit纠错,显著增加系统可靠性,降低硬件成本,且不需CPU支持ECC功能的技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种实现内存on-die ECC的低成本软件方法,其特征在于,所述方法包括:
获得待储存数据,其中,所述待储存数据为64bits数据;
计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
获得内存芯片的额外存储空间;
将所述数据帧写入所述内存芯片的额外存储空间中;
CPU对所述数据帧进行回读,得到回读数据帧;
计算所述回读数据帧中待储存数据的第二校验码;
判断所述第二校验码与所述第一校验码是否一致;
如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
获得所述第二校验码与所述第一校验码出现不一致的位置;
根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
2.如权利要求1所述的方法,其中,所述判断所述第二校验码与所述第一校验码是否一致,还包括:
如果所述第二校验码与所述第一校验码保持一致,确定所述待储存数据未发生单bit跳变。
3.如权利要求1所述的方法,其中,所述根据所述待储存数据与所述第一校验码,获得数据帧,包括:
将所述待储存数据拆分成8组,其中,每组为8bits数据;
将所述第一校验码附加到所述待储存数据后面,得到所述数据帧。
4.如权利要求1所述的方法,其中,所述第二校验码为所述回读数据帧中待储存数据的实际校验码,且所述第二校验码仍为8bits。
5.如权利要求1所述的方法,其中,所述内存芯片为单DDR颗粒。
6.如权利要求1所述的方法,其中,所述内存芯片为多DDR颗粒。
7.一种实现内存on-die ECC的低成本软件装置,其特征在于,所述装置包括:
第一获得单元,所第一获得单元用于获得待储存数据,其中,所述待储存数据为64bits数据;
第一计算单元,所述第一计算单元用于计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
第二获得单元,所述第二获得单元用于根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
第三获得单元,所述第三获得单元用于获得内存芯片的额外存储空间;
第一写入单元,所述第一写入单元用于将所述数据帧写入所述内存芯片的额外存储空间中;
第一回读单元,所述第一回读单元用于CPU对所述数据帧进行回读,得到回读数据帧;
第二计算单元,所述第二计算单元用于计算所述回读数据帧中待储存数据的第二校验码;
第一判断单元,所述第一判断单元用于判断所述第二校验码与所述第一校验码是否一致;
第一确定单元,所述第一确定单元用于如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
第四获得单元,所述第四获得单元用于获得所述第二校验码与所述第一校验码出现不一致的位置;
第一纠错单元,所述第一纠错单元用于根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
8.一种实现内存on-die ECC的低成本软件装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
获得待储存数据,其中,所述待储存数据为64bits数据;
计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
获得内存芯片的额外存储空间;
将所述数据帧写入所述内存芯片的额外存储空间中;
CPU对所述数据帧进行回读,得到回读数据帧;
计算所述回读数据帧中待储存数据的第二校验码;
判断所述第二校验码与所述第一校验码是否一致;
如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
获得所述第二校验码与所述第一校验码出现不一致的位置;
根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
获得待储存数据,其中,所述待储存数据为64bits数据;
计算所述待储存数据的第一校验码,其中,所述第一校验码为8bits;
根据所述待储存数据与所述第一校验码,获得数据帧,其中,所述数据帧为72bits;
获得内存芯片的额外存储空间;
将所述数据帧写入所述内存芯片的额外存储空间中;
CPU对所述数据帧进行回读,得到回读数据帧;
计算所述回读数据帧中待储存数据的第二校验码;
判断所述第二校验码与所述第一校验码是否一致;
如果所述第二校验码与所述第一校验码不一致,确定所述待储存数据发生单bit跳变;
获得所述第二校验码与所述第一校验码出现不一致的位置;
根据所述第二校验码与所述第一校验码出现不一致的位置,对所述待储存数据进行纠错。
CN202011478806.3A 2020-12-15 2020-12-15 一种实现内存on-die ECC的低成本软件方法和装置 Active CN112445668B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011478806.3A CN112445668B (zh) 2020-12-15 2020-12-15 一种实现内存on-die ECC的低成本软件方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011478806.3A CN112445668B (zh) 2020-12-15 2020-12-15 一种实现内存on-die ECC的低成本软件方法和装置

Publications (2)

Publication Number Publication Date
CN112445668A true CN112445668A (zh) 2021-03-05
CN112445668B CN112445668B (zh) 2022-11-04

Family

ID=74739962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011478806.3A Active CN112445668B (zh) 2020-12-15 2020-12-15 一种实现内存on-die ECC的低成本软件方法和装置

Country Status (1)

Country Link
CN (1) CN112445668B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183579A (zh) * 2015-09-24 2015-12-23 联想(北京)有限公司 一种数据校验方法及装置、电子设备
CN108806737A (zh) * 2018-06-14 2018-11-13 深圳市爱协生科技有限公司 芯片内数据处理方法、模块、芯片及计算机设备
CN111506452A (zh) * 2020-04-21 2020-08-07 记忆科技(深圳)有限公司 数据存储保护方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183579A (zh) * 2015-09-24 2015-12-23 联想(北京)有限公司 一种数据校验方法及装置、电子设备
CN108806737A (zh) * 2018-06-14 2018-11-13 深圳市爱协生科技有限公司 芯片内数据处理方法、模块、芯片及计算机设备
CN111506452A (zh) * 2020-04-21 2020-08-07 记忆科技(深圳)有限公司 数据存储保护方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112445668B (zh) 2022-11-04

Similar Documents

Publication Publication Date Title
CN107430538B (zh) 基于错误类型的ecc的动态应用
KR101860809B1 (ko) 메모리 시스템 및 메모리 에러 정정 방법
JP4071940B2 (ja) メモリ設計のための共有式誤り訂正
US7523364B2 (en) Double DRAM bit steering for multiple error corrections
US8862953B2 (en) Memory testing with selective use of an error correction code decoder
US9092349B2 (en) Storage of codeword portions
US10558518B2 (en) Dynamic adjustments within memory systems
KR20170129703A (ko) On-die dram ecc로부터의 선택적 정보 추출
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
JP2005202957A (ja) エラー訂正のためのデータの分割
CN110968450A (zh) 数据存储方法及装置、存储介质、电子设备
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
CN110535476B (zh) Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质
CN110572164B (zh) Ldpc译码方法、装置、计算机设备及存储介质
US20150143201A1 (en) Error-correcting code distribution for memory systems
CN111625199A (zh) 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质
US11372720B2 (en) Systems and methods for encoding metadata
CN112445668B (zh) 一种实现内存on-die ECC的低成本软件方法和装置
US9612891B2 (en) Memory controller, information processing apparatus, and method of controlling information processing apparatus
CN109710445B (zh) 内存校正方法和电子设备
JP2005149503A (ja) Dmaを使用してメモリをテストするためのシステムおよび方法
US9361180B2 (en) Storing data by an ECC memory
CN114116530B (zh) 存储控制方法及装置、数据处理方法及装置以及存储介质
US20230409428A1 (en) Boot data reading system, boot data reading method, and processor circuit
US11928027B1 (en) System and method for error checking and correction with metadata storage in a memory controller

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