CN112612637A - 内存数据存储方法、内存控制器、处理器芯片及电子设备 - Google Patents

内存数据存储方法、内存控制器、处理器芯片及电子设备 Download PDF

Info

Publication number
CN112612637A
CN112612637A CN202011435860.XA CN202011435860A CN112612637A CN 112612637 A CN112612637 A CN 112612637A CN 202011435860 A CN202011435860 A CN 202011435860A CN 112612637 A CN112612637 A CN 112612637A
Authority
CN
China
Prior art keywords
memory
unit
data
bit
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.)
Granted
Application number
CN202011435860.XA
Other languages
English (en)
Other versions
CN112612637B (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011435860.XA priority Critical patent/CN112612637B/zh
Publication of CN112612637A publication Critical patent/CN112612637A/zh
Application granted granted Critical
Publication of CN112612637B publication Critical patent/CN112612637B/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/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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Abstract

本发明实施例公开一种内存数据存储方法、内存控制器、处理器芯片及电子设备,涉及计算机技术领域,能够有效提高内存的可靠性。所述方法应用于内存控制器,包括:向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;按照预设规则,对每个所述数据内存颗粒,将该数据内存颗粒中存储的所述目标数据对应的各比特数值划分为至少两个比特组,各所述比特组中所含的比特位数量相等;将所述目标数据在各所述数据内存颗粒中对应的所有所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。

Description

内存数据存储方法、内存控制器、处理器芯片及电子设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存数据存储方法、内存控制器、处理器芯片及电子设备。
背景技术
Chipkill是为了解决服务器内存中ECC(error correction check,纠错检测)技术的不足而开发的,是在ECC技术基础上的改进成为一种新的ECC内存保护标准。
在内存中,由于内存位宽一般较宽,例如为32位或64位,而每个内存颗粒(chip)一般为4位、8位,因此需要将多个内存颗粒并联,从而达到所需的内存位宽。CPU向内存写入数据时,会按照CPU的数据位宽,将数据的各比特数值同时写入并联的各内存颗粒,而且还会将各比特数值按照预设算法生成校验码。一旦其中任何一个内存颗粒失效,内存控制器可以根据该校验码以及存储在其他内存颗粒中的比特数值,重新构造失效的内存颗粒中“失去”的数据,从而使服务器可以继续正常工作。
然而,上述方案只能纠正一个内存颗粒的数据失效,当有两个甚至更多的内存颗粒同时失效时,则无法对失效内存颗粒中的数据进行恢复,因此不利于内存可靠性的提升。
发明内容
有鉴于此,本发明实施例提供一种内存数据存储方法、内存控制器、处理器芯片及电子设备,能够有效提高内存的可靠性。
第一方面,本发明实施例提供一种内存数据存储方法,应用于内存控制器,包括:
向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
可选的,所述将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组包括:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
可选的,所述根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,所述方法还包括:
将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。
可选的,所述根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,所述方法还包括:
当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
可选的,所述根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复包括:
若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;
在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
第二方面,本发明的实施例还提供一种内存控制器,包括:
写入单元,用于向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
第一划分单元,用于按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
第二划分单元,用于将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
生成单元,用于根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
可选的,所述第二划分单元,具体用于:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
可选的,所述内存控制器还包括:存入单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。
可选的,所述内存控制器,还包括:
检测单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
恢复单元,用于若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
可选的,所述恢复单元包括:
确定模块,用于若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;
恢复模块,用于在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
第三方面,本发明的实施例还提供一种处理器芯片,包括:处理器核心、内存控制器;所述内存控制器一端与所述处理器核心相连,另一端与内存相连,用于根据所述处理器核心的内存访问请求,对内存进行数据读写操作,以实现本发明的实施例提供的任一种内存数据存储方法。
第四方面,本发明的实施例还提供一种电子设备,所述电子设备中设置有本发明的实施例提供的任一种内存控制器。
本发明的实施例提供的内存数据存储方法、内存控制器、处理器芯片及电子设备,内存控制器能够向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位,按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等,将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组,根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。这样,在计算纠错码时,内存位宽中的各比特数值并不是执行同一个运算,生成一个纠错码,而是将内存位宽中的各比特数值拆分为至少两个不同的纠错运算单位,每个纠错运算单位计算出一个对应的纠错码。这样,不同数据内存颗粒中的各比特数值就可能分别属于不同的纠错运算单位,进而对应不同的纠错码。这样一来就可以根据不同的纠错码分别进行数据恢复,从而实现当多个数据内存颗粒同时失效时,也可能恢复出数据的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例提供的内存数据存储方法的一种流程图;
图2为本发明的实施例提供的内存数据存储方法中纠错码生成原理的一种示意图;
图3为本发明的实施例提供的内存数据存储方法中比特组划分的一种示意图;
图4为本发明的实施例提供的内存控制器的一种结构示意图;
图5为本发明的实施例提供的处理器芯片的一种结构示意图;
图6为本发明的实施例提供的电子设备的一种结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
当前,更小的工艺尺寸和更高双倍数据速率(DDR)动态随机存取存储器(DRAM)的接口速度正在推升对更加可靠的、能够防范、检测和修复内存错误的新技术的需求。Chipkill等技术共同提升了计算系统的RAS(Reliability,Availability,Serviceability,可靠性、可用性、可维护性)。
如背景技术所言,在Chipkill技术中,在CPU向内存写入数据时,会按照CPU的数据位宽,将数据的各比特数值同时写入并联的各内存颗粒,而且还会将各比特数值按照预设算法生成校验码。一旦其中任何一个内存颗粒失效,内存控制器可以根据该校验码以及存储在其他内存颗粒中的比特数值,重新构造失效的内存颗粒中“失去”的数据,从而使服务器可以继续正常工作。然而,上述方案只能纠正一个内存颗粒的数据失效,当有两个甚至更多的内存颗粒同时失效时,则对数据恢复无能为力,不利于内存可靠性的提升。
随着大数据的发展,计算机常常需要处理海量数据运算,不同内存颗粒同时失效的情况越来越常见,因此,chipkill技术在现实应用中暴露了一定的弊端。
为了解决上述问题,发明人在研究中发现,在向内存写入目标数据时,可以通过灵活地构建校验码的结构,使至少在部分情况下,可以对两个甚至更多内存颗粒同时失效的情况,进行有效的数据恢复,因此有效提升了内存的可靠性。
为使本领域技术人员更好地理解本发明的实施例的技术构思、实施方案和有益技术效果,以下通过具体实施例进行详细说明。
如图1所示,本发明的实施例提供一种内存数据存储方法,应用于内存控制器,包括:
S11,向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
内存控制器可以根据处理器对内存的访问请求,向内存写入目标数据。目标数据可以指处理器与内存之间进行任一次数据交互的数据,目标数据的数据位宽与处理器位宽相等。
内存中可以设置有多个数据内存颗粒(chip)。每个数据内存颗粒具有一定的颗粒位宽,多个数据内存颗粒并联形成内存位宽,内存位宽与处理器位宽相等,适于与处理器进行数据交互。内存位宽中的每个位为一个比特位。例如,在本发明的一个实施例中,处理器位宽为64,内存位宽为64,每个数据内存颗粒的颗粒位宽为8,则需要8颗数据内存颗粒并联,形成64位的内存位宽。
示例性的,如图2所示,在本发明的一个实施例中,内存可以包括4个数据内存颗粒,每个数据内存颗粒的颗粒位宽为4比特,则内存控制器向内存写入目标数据时,例如写入的目标数据为0XE289(对应的二进制数为1110 0010 1000 1001),可以将所述目标数据的各比特数值并行存入所述内存的4个数据内存颗粒中对应的各比特位。
S12,按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
仍以图2所示为例,目标数据0XE289中,写入数据内存颗粒P1的比特值为1110(对应十六进制数E),写入数据内存颗粒P2的比特值为0010(对应十六进制数2),写入数据内存颗粒P3的比特值为1000(对应十六进制数8),写入数据内存颗粒P4的比特值为1001(对应十六进制数9)。则,可以将P1、P2、P3、P4中的比特数值分别划分为两个比特组,每个比特组所含的比特位数量均为2。例如,可以将P1划分为11/10,P2划分为00/10,P3划分为10/00,P4划分为10/01,图2中每个数据内存颗粒位宽的四个比特中,阴影部分的比特数值属于同一个比特组,则基于此,目标数据对应的比特组包括:11/10、00/10、10/00、10/01。
当然,在本发明的其他实施例中,也可以按照其他规则对P1、P2、P3、P4分别进行比特组的划分,比特组的划分数量以及每个比特组中所包含的比特位数都可以灵活调整。例如,可以将P1划分为四个比特组,每个比特组含有一个比特位,即1/1/1/0,或者,如图3所示,也可以将P1的首尾两位分为一个比特组,将P1的中间两位分为另一个比特组,P2、P3、P4也按照同样的方式进行分组。
S13,将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
仍以图2所示为例,在步骤S12中已经确定目标数据对应的比特组包括:11/10(P1)、00/10(P2)、10/00(P3)、10/01(P4),则可以将这些比特组划分为两个纠错运算单位,其中任一纠错运算单位均包括每个数据内存颗粒中的一个比特组。每个纠错运算单位中的比特组的数量等于数据内存颗粒的数量。
举例而言,在本发明的一个实施例中,纠错运算单位C1可以包括阴影部分的四个比特组的拼接组合:比特组11(P1)、00(P2)、10(P3)、10(P4),纠错运算单位C2可以包括空白部分的四个比特组的拼接组合:比特组10(P1)、10(P2)、00(P3)、01(P4)。当然,在本发明的其他实施例中,这种纠错运算单位的划分方法是可以根据需要调整的,只需保证划分后,每个纠错运算单位所含的比特组的数量等于数据内存颗粒的数量,且每个纠错运算单位中的比特组分别来自不同的数据内存颗粒即可。例如可以将纠错运算单位C1中的10(P4)与纠错运算单位C2中的01(P4)互换,这样也可以保证纠错运算单位C1和纠错运算单位C2都含有4个数据内存颗粒中的比特组。
S14,根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
本步骤中,可以以纠错运算单位为基本单位,在各个纠错运算单位内部按照预设算法生成对应的纠错码。例如,纠错运算单位C1中的比特组为11(P1)、00(P2)、10(P3)、10(P4),对应的比特数值为11001010,则可以将这些比特数值按照预设算法生成纠错运算单位C1对应的纠错码code1,同理可以计算出纠错运算单位C2对应的纠错码code2。这样,当任一纠错运算单位中任一比特组中的一个或多个比特值出错时,都可以利用对应的纠正码进行数据恢复。
本发明的实施例提供的内存数据的存储方法,内存控制器能够向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位,按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等,将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组,根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。这样,在计算纠错码时,内存位宽中的各比特数值并不是执行同一个运算,生成一个纠错码,而是将内存位宽中的各比特数值拆分为至少两个不同的纠错运算单位,每个纠错运算单位计算出一个对应的纠错码。这样,不同数据内存颗粒中的各比特数值就可能分别属于不同的纠错运算单位,进而对应不同的纠错码。这样一来就可以根据不同的纠错码分别进行数据恢复,从而实现当多个数据内存颗粒同时失效时,也可能恢复出数据的目的。
具体而言,在步骤S11中,内存控制器向内存写入一个数据位宽的目标数据后,内存控制器可以进一步根据写入的目标数据计算对应的纠错码。为了能够满足在2个甚至更多的数据内存颗粒同时失效时,也可以利用该纠错码对失效数据进行恢复,在本发明的实施例中,可以对写入每个数据内存颗粒中的比特数值分为至少两个不同的比特组,再利用各数据内存颗粒中的比特组形成不同的纠错运算单位。
为了使每个纠错运算单位所含的比特组的数量等于数据内存颗粒的数量,且每个纠错运算单位所含的比特组分别来自不同的数据内存颗粒,在本发明的一个实施例中,步骤S13中将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组可以包括:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
可选的,在选择目标比特组时,各数据内存颗粒既可以按照同样的规则进行选择,例如可以将每个数据内存颗粒中位于预设位置(例如左起第1个)的比特组选择为目标比特组,也可以按照不同的规则进行选择,例如可以将数据内存颗粒P1的左起第1个比特组选择为目标比特组,将数据内存颗粒P2的左起第2个比特组选择为目标比特组。
根据目标比特组形成不同的纠错运算单位后,可以以纠错运算单位为基本单位,利用每个纠错运算单位中的比特数值生成该纠错运算单位对应的纠错码。具体而言,在步骤S14中根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,本发明的实施例提供的内存数据存储方法还可以包括:将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。也即是说,本发明的实施例中,内存控制器中除了包括用于存储数据的数据内存颗粒以外,还可以包括用于存储纠正码的校验内存颗粒。校验内存颗粒的具体结构可以与数据内存颗粒的结构相同或不同,校验内存颗粒可以与多个数据内存颗粒并联。
举例而言,在本发明的一个实施例中,以DDR5 x8(每个数据内存颗粒的位宽为8)的数据内存颗粒为例,可以使用lockstep技术,将两个channel共10颗芯片组合在一起,其中,sym0-7为8个数据内存颗粒,Chk0-1为两个ECC(error correction check,纠错检测)校验内存颗粒。
本实施例中,可以将每个数据内存颗粒中x8的高4位与低4位拆开,一个x8拆成两个x4的比特组。每个x4的比特组形成一个half chip,从每个数据内存颗粒中选择一个比特组,各选出的比特组形成一个纠错运算单位。在x8的DIMM条上,若2个数据内存颗粒出错或失效,且出错的4bit分别属于两个不同的纠错运算单位,则可以将这两个错误都正确纠回,从而解决了chipkill无法纠正两个数据内存颗粒(chip)的问题,提高了DDR的RAS特性,有效提高内存可靠性与使用寿命。
进一步的,由于比特组的划分方式以及纠错运算单位的划分方式可以灵活多样,本发明的实施例提供的内存数据存储方法对失效内存数据的纠正也更为灵活有效。例如,在本发明的一个实施例中,可以根据内存出错的实际情况进行出错统计,针对出错率较高的位置和方式,定制化地划分比特组及纠错运算单位,从而进一步提高内存可靠性。
示例性的,在本发明的一个实施例中,从大量的芯片出错规律上分析,一颗数据内存颗粒(chip)出错5bit上的概率仍是小概率事件。但两个芯片各出错1-4小比特出错,是更加常见的情况。对此,现有技术中的chipkill只要是两个chip出错,将无法纠错,而本发明的实施例提供的内存数据存储方法则能很好的解决该问题,对同时失效的两个数据内存颗粒进行有效的数据恢复。
进一步地,为目标数据的各纠错运算单位生成对应的纠错码后,如果内存控制器在处理器的控制下需要从内存中读取目标数据,则发现目标数据的部分数据所在的数据内存颗粒失效时,可以根据校验内存颗粒中存储的纠错码,对失效数据内存颗粒中的数据进行恢复。
具体而言,在本发明的一个实施例中,在步骤S14根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,本发明的实施例提供的内存数据存储方法还可以包括:
当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
可选的,根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复具体可以包括:
若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;其中,第一失效单元和第二失效单元可以为任意两个不同的失效存储单元。
在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
进一步的,若第一失效单元位于第一数据内存颗粒,第二失效单元也位于第一数据内存颗粒,则同样可以确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码,在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复,也即是说,本发明的实施例提供的内存数据的存储方法对于同一数据内存颗粒的失效问题同样可以有效解决。
相应的,本发明的实施例还提供一种内存控制器,能够有效提升内存的可靠性。
如图4所示,本发明的实施例提供的内存控制器,可以包括:
写入单元31,用于向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
第一划分单元32,用于按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
第二划分单元33,用于将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
生成单元34,用于根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
本发明的实施例提供的内存控制器,能够向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位,按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等,将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组,根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。这样,在计算纠错码时,内存位宽中的各比特数值并不是执行同一个运算,生成一个纠错码,而是将内存位宽中的各比特数值拆分为至少两个不同的纠错运算单位,每个纠错运算单位计算出一个对应的纠错码。这样,不同数据内存颗粒中的各比特数值就可能分别属于不同的纠错运算单位,进而对应不同的纠错码。这样一来就可以根据不同的纠错码分别进行数据恢复,从而实现当多个数据内存颗粒同时失效时,也可能恢复出数据的目的。
可选的,第二划分单元33,具体用于:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
可选的,所述内存控制器还可以包括:存入单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。
可选的,所述内存控制器还可以包括:
检测单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
恢复单元,用于若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
可选的,所述恢复单元具体可以包括:
确定模块,用于若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;
恢复模块,用于在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
相应的,本发明的实施例还提供一种处理器芯片4,能够有效提高内存的可靠性。
如图5所示,本发明的实施例提供的处理器芯片4,可以包括:处理器核心5、内存控制器3;
内存控制器3一端与处理器核心5相连,另一端与内存6相连,用于根据处理器核心5的内存访问请求,对内存进行数据读写操作,以前述实施例提供过的任一种内存数据存储方法,因此也能实现相应的有益技术效果,前文已经进行了详细说明,此处不再赘述。
相应的,如图6所示,本发明的实施例还提供一种电子设备7,能够有效提高内存的可靠性。
本发明的实施例还提供一种电子设备7,电子设备7中设置有本发明的实施例提供的任一种内存控制器3,该内存控制器3可以设置在处理器芯片4上,因此该电子设备7也能实现相应的有益技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种内存数据存储方法,其特征在于,应用于内存控制器,包括:
向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
2.根据权利要求1所述的内存数据存储方法,其特征在于,所述将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组包括:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
3.根据权利要求1所述的内存数据存储方法,其特征在于,所述根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,所述方法还包括:
将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。
4.根据权利要求1至3中任一项所述的内存数据存储方法,其特征在于,所述根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,所述方法还包括:
当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
5.根据权利要求4所述的内存数据存储方法,其特征在于,所述根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复包括:
若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;
在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
6.一种内存控制器,其特征在于,包括:
写入单元,用于向内存写入目标数据,所述目标数据的各比特数值并行存入所述内存的至少两个数据内存颗粒中对应的各比特位;
第一划分单元,用于按照预设规则,将每个所述数据内存颗粒中存储的所述目标数据的各比特数值都划分为至少两个比特组,各所述比特组中所含的比特位数量相等;
第二划分单元,用于将所述目标数据对应的各所述比特组,划分为至少两个纠错运算单位,其中,任一纠错运算单位均包括所述目标数据在每个所述数据内存颗粒中的一个比特组;
生成单元,用于根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码。
7.根据权利要求6所述的内存控制器,其特征在于,所述第二划分单元,具体用于:
从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,各所述数据内存颗粒对应的各所述目标比特组形成一个对应的纠错运算单位;
继续从每个数据内存颗粒内所述目标数据所对应的各比特组中,选择一个目标比特组,直至所述目标数据对应的所有比特组都被选入对应的纠错运算单位。
8.根据权利要求6所述的内存控制器,其特征在于,还包括:存入单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,将所述纠错码存入校验内存颗粒中与所述目标数据对应的比特位,所述校验内存颗粒与所述数据内存颗粒不同。
9.根据权利要求6至8中任一项所述的内存控制器,其特征在于,还包括:
检测单元,用于在根据各所述纠错运算单位中的比特数值,分别生成各所述纠错运算单位对应的纠错码之后,当从内存中读所述目标数据时,检测各数据内存颗粒中,所述目标数据所在的存储单元中是否存在失效单元;
恢复单元,用于若存在失效单元,则根据所述纠错码及所述存储单元中的未失效单元,对所述失效单元进行数据恢复。
10.根据权利要求9所述的内存控制器,其特征在于,所述恢复单元包括:
确定模块,用于若第一失效单元位于第一数据内存颗粒,第二失效单元位于第二数据内存颗粒,则确定所述第一失效单元与所述第二失效单元是否对应同一个纠错码;
恢复模块,用于在所述第一失效单元与所述第二失效单元对应不同纠错码的情况下,分别利用所述第一失效单元和所述第二失效单元对应的纠错码,及所述存储单元中的未失效单元,对所述第一失效单元和所述第二失效单元进行数据恢复。
11.一种处理器芯片,其特征在于,包括:处理器核心、内存控制器;
所述内存控制器一端与所述处理器核心相连,另一端与内存相连,用于根据所述处理器核心的内存访问请求,对内存进行数据读写操作,以实现权利要求1-5中任一项所述的内存数据存储方法。
12.一种电子设备,其特征在于,所述电子设备中设置有权利要求6-10中任一项所述的内存控制器。
CN202011435860.XA 2020-12-10 2020-12-10 内存数据存储方法、内存控制器、处理器芯片及电子设备 Active CN112612637B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011435860.XA CN112612637B (zh) 2020-12-10 2020-12-10 内存数据存储方法、内存控制器、处理器芯片及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011435860.XA CN112612637B (zh) 2020-12-10 2020-12-10 内存数据存储方法、内存控制器、处理器芯片及电子设备

Publications (2)

Publication Number Publication Date
CN112612637A true CN112612637A (zh) 2021-04-06
CN112612637B CN112612637B (zh) 2023-11-21

Family

ID=75232624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011435860.XA Active CN112612637B (zh) 2020-12-10 2020-12-10 内存数据存储方法、内存控制器、处理器芯片及电子设备

Country Status (1)

Country Link
CN (1) CN112612637B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485866A (zh) * 2021-07-02 2021-10-08 海光信息技术股份有限公司 译码方法及相关装置、电子设备和存储介质
WO2023197935A1 (zh) * 2022-04-12 2023-10-19 华为技术有限公司 存储数据的方法、读取数据的方法和相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5164944A (en) * 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
CN101546291A (zh) * 2009-05-12 2009-09-30 华为技术有限公司 提高内存数据健壮性的存取方法和装置
US20140192583A1 (en) * 2005-06-24 2014-07-10 Suresh Natarajan Rajan Configurable memory circuit system and method
CN106708655A (zh) * 2017-02-16 2017-05-24 深圳前海生生科技有限公司 基于二维纠错码的内存加固方法及电路
CN111124741A (zh) * 2019-12-12 2020-05-08 上海高性能集成电路设计中心 一种面向存储器特征的增强型校验纠错装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5164944A (en) * 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
US20140192583A1 (en) * 2005-06-24 2014-07-10 Suresh Natarajan Rajan Configurable memory circuit system and method
CN101546291A (zh) * 2009-05-12 2009-09-30 华为技术有限公司 提高内存数据健壮性的存取方法和装置
CN106708655A (zh) * 2017-02-16 2017-05-24 深圳前海生生科技有限公司 基于二维纠错码的内存加固方法及电路
CN111124741A (zh) * 2019-12-12 2020-05-08 上海高性能集成电路设计中心 一种面向存储器特征的增强型校验纠错装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485866A (zh) * 2021-07-02 2021-10-08 海光信息技术股份有限公司 译码方法及相关装置、电子设备和存储介质
CN113485866B (zh) * 2021-07-02 2023-05-09 海光信息技术股份有限公司 译码方法及相关装置、电子设备和存储介质
WO2023197935A1 (zh) * 2022-04-12 2023-10-19 华为技术有限公司 存储数据的方法、读取数据的方法和相关设备

Also Published As

Publication number Publication date
CN112612637B (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
JP6882115B2 (ja) Ddr sdramインタフェイスのためのdram支援エラー訂正方法
CN107943609B (zh) 存储器模块、存储器控制器和系统及其相应操作方法
US7840860B2 (en) Double DRAM bit steering for multiple error corrections
US8341499B2 (en) System and method for error detection in a redundant memory system
CN108268340B (zh) 校正存储器中的错误的方法
US20060256615A1 (en) Horizontal and vertical error correction coding (ECC) system and method
US20190034270A1 (en) Memory system having an error correction function and operating method of memory module and memory controller
US8140940B2 (en) Method and apparatus for controlling memory
JP2005202957A (ja) エラー訂正のためのデータの分割
US5666371A (en) Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements
US9262284B2 (en) Single channel memory mirror
CN112612637B (zh) 内存数据存储方法、内存控制器、处理器芯片及电子设备
US10275307B2 (en) Detection of error patterns in memory dies
CN114442953B (zh) 一种数据校验的方法、系统、芯片和电子设备
EP4341814A1 (en) Error rates for memory with built in error correction and detection
US20080155193A1 (en) Staging method for disk array apparatus
US20080052598A1 (en) Memory multi-bit error correction and hot replace without mirroring
US11609813B2 (en) Memory system for selecting counter-error operation through error analysis and data process system including the same
JPH01286060A (ja) 記憶装置におけるeccエラー処理方式
RU2465636C1 (ru) Способ исправления одиночных ошибок и предотвращения возникновения двойных ошибок в регистровом файле и устройство для его осуществления
CN112486416A (zh) 数据处理方法、装置、存储介质及处理器
CN107315649A (zh) 一种表项校验方法和装置
JP2012230730A (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