CN112612637B - 内存数据存储方法、内存控制器、处理器芯片及电子设备 - Google Patents
内存数据存储方法、内存控制器、处理器芯片及电子设备 Download PDFInfo
- Publication number
- CN112612637B CN112612637B CN202011435860.XA CN202011435860A CN112612637B CN 112612637 B CN112612637 B CN 112612637B CN 202011435860 A CN202011435860 A CN 202011435860A CN 112612637 B CN112612637 B CN 112612637B
- Authority
- CN
- China
- Prior art keywords
- memory
- error correction
- data
- bit
- unit
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 317
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013500 data storage Methods 0.000 title abstract description 17
- 239000008187 granular material Substances 0.000 claims abstract description 143
- 239000002245 particle Substances 0.000 claims abstract description 22
- 238000011084 recovery Methods 0.000 claims description 20
- 238000001514 detection method Methods 0.000 claims description 5
- 210000004027 cell Anatomy 0.000 claims 2
- 210000000352 storage cell Anatomy 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06F11/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- 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
- G06F11/1068—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 in sector programmable memories, e.g. flash disk
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)
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中任一项所述的内存控制器。
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 CN112612637A (zh) | 2021-04-06 |
CN112612637B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485866B (zh) * | 2021-07-02 | 2023-05-09 | 海光信息技术股份有限公司 | 译码方法及相关装置、电子设备和存储介质 |
CN116954981A (zh) * | 2022-04-12 | 2023-10-27 | 华为技术有限公司 | 存储数据的方法、读取数据的方法和相关设备 |
CN118132324A (zh) * | 2024-05-06 | 2024-06-04 | 上海芯联芯智能科技有限公司 | 一种芯片内存修复方法及装置 |
Citations (4)
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 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
CN106708655A (zh) * | 2017-02-16 | 2017-05-24 | 深圳前海生生科技有限公司 | 基于二维纠错码的内存加固方法及电路 |
CN111124741A (zh) * | 2019-12-12 | 2020-05-08 | 上海高性能集成电路设计中心 | 一种面向存储器特征的增强型校验纠错装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
-
2020
- 2020-12-10 CN CN202011435860.XA patent/CN112612637B/zh active Active
Patent Citations (4)
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 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
CN106708655A (zh) * | 2017-02-16 | 2017-05-24 | 深圳前海生生科技有限公司 | 基于二维纠错码的内存加固方法及电路 |
CN111124741A (zh) * | 2019-12-12 | 2020-05-08 | 上海高性能集成电路设计中心 | 一种面向存储器特征的增强型校验纠错装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112612637A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112612637B (zh) | 内存数据存储方法、内存控制器、处理器芯片及电子设备 | |
CN107766172B (zh) | 用于ddr sdram接口的dram辅助纠错方法 | |
CN107943609B (zh) | 存储器模块、存储器控制器和系统及其相应操作方法 | |
US8341499B2 (en) | System and method for error detection in a redundant memory system | |
US7523364B2 (en) | Double DRAM bit steering for multiple error corrections | |
US20190034270A1 (en) | Memory system having an error correction function and operating method of memory module and memory controller | |
US20060256615A1 (en) | Horizontal and vertical error correction coding (ECC) system and method | |
JP2005202957A (ja) | エラー訂正のためのデータの分割 | |
US8140940B2 (en) | Method and apparatus for controlling memory | |
US5666371A (en) | Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements | |
US10275307B2 (en) | Detection of error patterns in memory dies | |
CN115552422A (zh) | 用于加速神经网络的存储器故障映射 | |
US9230687B2 (en) | Implementing ECC redundancy using reconfigurable logic blocks | |
US20230214295A1 (en) | Error rates for memory with built in error correction and detection | |
US7389446B2 (en) | Method to reduce soft error rate in semiconductor memory | |
US11994946B2 (en) | Memory bank protection | |
CN114442953B (zh) | 一种数据校验的方法、系统、芯片和电子设备 | |
US20080155193A1 (en) | Staging method for disk array apparatus | |
US11609813B2 (en) | Memory system for selecting counter-error operation through error analysis and data process system including the same | |
JPH01286060A (ja) | 記憶装置におけるeccエラー処理方式 | |
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 |