CN104347122A - 一种消息式内存模组的访存方法和装置 - Google Patents
一种消息式内存模组的访存方法和装置 Download PDFInfo
- Publication number
- CN104347122A CN104347122A CN201310330220.6A CN201310330220A CN104347122A CN 104347122 A CN104347122 A CN 104347122A CN 201310330220 A CN201310330220 A CN 201310330220A CN 104347122 A CN104347122 A CN 104347122A
- Authority
- CN
- China
- Prior art keywords
- scbc
- error
- scbcs
- memory
- read
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000015654 memory Effects 0.000 claims abstract description 277
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000001514 detection method Methods 0.000 claims description 135
- 238000012937 correction Methods 0.000 claims description 124
- 235000019580 granularity Nutrition 0.000 description 18
- 238000013461 design Methods 0.000 description 11
- 238000011084 recovery Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification 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/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
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
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
本发明公开了一种消息式内存模组的访存装置,包括:读写模块,用于将当前读写周期内待存储的SCBC存储到对应的DRAM中;处理模块,用于对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;所述读写模块,还用于将检错码存储在该内存行的第(M+2)个DRAM中,将纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。本发明实施例还提供相应的方法。本发明技术方案以SCBC为基本读写单位进行细粒度编码保护,支持可变粒度访存,可以实现对单个DRAM中任意多位错误进行纠错。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种消息式内存模组的访存方法和装置。
背景技术
在计算机系统运行中,内存的可靠性起着举足轻重的作用,一方面,随着系统配置内存的数目越来越多,内存系统的失效率会成幂指数级上升;另一方面,随着低电压工作模式技术的引进,内存发生错误的可能性增大,错误数目会增多。
错误检查和纠正(Error Checking and Correcting,ECC)内存是当前普遍采用的一种内存可靠性解决方案。ECC内存,即带有ECC校验码的内存模组,其基本思想是以内存模组位宽为基本单位进行数据保护,以内存模组位宽为64位为例,每次写入64位数据的同时为该数据计算8位的校验位存储于独立的ECC芯片中,这64个数据位与8个校验位一并组成72位ECC字,这种编码方式可以对72位ECC字中任意一位出错进行纠正,但是,对于两位出错的情况,就只能检测而不能纠正,对于更多位出错的情况,则更加无能为力了。
IBM公司在ECC内存的基础上提出了Chipkill内存技术。Chipkill内存的设计原理基于内存错误的集聚效应倾向于发生在同一块动态随机存取存储器(Dynamic Random Access Memory,DRAM)芯片上,Chipkill技术能容忍任意一个DRAM芯片的失效。Chipkill内存的内存控制器(Memory Controller,MC)需要同时控制四个带有ECC的双列直插式内存模组(Dual Inline MemoryModule,DIMM)协同工作,MC的位宽由4个72位的ECC字组成,在每个ECC字内部都可以纠检一位错误,每个DIMM上的DRAM芯片的位宽必须是4位,经过仔细地设计使同一块DRAM芯片的4位输入输出分别映射到4个不同的ECC字中,通过这样的设计即使一片DRAM芯片的4个管脚的数据全部出错,4个不同的ECC字也可以将其恢复,也就是说Chipkill技术可以容忍任意一个DIMM上任意的一个DRAM芯片损坏。Chipkill技术通过更宽的MC位宽和更大粒度的数据编码取得了较高的可靠性,但是,该技术理论上只能用于4位位宽的DRAM芯片,缺乏灵活性,且过大粒度的数据编码导致它每次读取的数据远远大于实际访存请求的数据,造成了大量不必要的功耗损失。
发明内容
本发明实施例提供一种消息式内存模组的访存方法和装置,以提供一种低功耗的、高可靠性的、可变粒度的内存访存容错解决方案。
本发明第一方面提供一种消息式内存模组的访存装置,所述内存模组包括(M+2)块动态随机存取存储器DRAM,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行;
所述装置包括:
读写模块,用于将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;
处理模块,用于对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
所述读写模块,还用于将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
在第一种可能的实现方式中,所述处理模块,还用于在收到读访存请求时,指示所述读写模块从当前的内存行中读取需要的SCBC以及对应的检错码,根据所述检错码对读取到的SCBC进行校验,判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理模块,还用于在收到写访存请求时,首先判断待写入的第二SCBC的个数X是否小于等于M/2;若X小于等于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;若X大于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块,还用于在判断有第一SCBC错误时,获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
本发明第二方面提供一种消息式内存模组的访存方法,所述内存模组包括(M+2)块动态随机存取存储器DRAM,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行;
所述方法包括:
将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;
对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
在第一种可能的实现方式中,所述方法还包括:在收到读访存请求时,从当前的内存行中读取需要的SCBC以及对应的检错码,根据所述检错码对读取到的SCBC进行校验,判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:在收到写访存请求时,判断待写入的第二SCBC的个数X是否小于等于M/2;若X小于等于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;若X大于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述的判断是否有SCBC错误之后还包括:获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
本发明实施例技术方案以SCBC为基本读写单位进行细粒度编码保护,但对于SCBC的大小没有特别限定,即,对DRAM内存芯片的位宽和突发长度不做限定,因此可以支持可变粒度访存,并且,利用独立的DRAM存储检错码可以对不同访存粒度实现检错,检错码配合纠错码可以实现对单个DRAM中任意多位错误进行纠错,是一种低功耗高可靠性的解决方案。
附图说明
图1是本发明实施例提供的消息式内存模组的访存装置的示意图;
图2是本发明实施例提供的消息式内存模组的访存装置的原理图;
图3是本发明实施例提供的消息式内存模组的访存方法的流程图;
图4a和4b是本发明实施例提供的内存控制系统的示意图。
具体实施方式
本发明实施例提供一种消息式内存模组的访存方法,以提供一种低功耗的、高可靠性的、可变粒度的内存访存容错解决方案。本发明实施例还提供相应的装置。以下分别进行详细说明。
实施例一、
请参考图1,本发明实施例提供一种消息式内存模组的访存装置。该装置可以部署在内存模组的外围控制电路中,也可以部署在内存控制器中;内存控制器则可以集成中央处理器(CentralProcessingUnit,CPU)中或者集成在计算机主板上。
所说的内存模组具体可以是DIMM,该DIMM包括多个DRAM。本文中假定DRAM的位宽为N位,N等于2的n次方,n为正整数;DRAM的突发长度(BurstLength,BL)为Q,Q为正整数,优选Q等于2的若干次方,例如等于4或8;假定DIMM包括(M+2)块DRAM,(M×N)即是整个内存模组的位宽,由于计算机内存模组位宽(M×N)一般是2的若干次方,例如通常是32或64,因此,M也是2的若干次方,可以记M等于2的m次方,m为正整数;在计算机内存模组的位宽已确定时,可以根据单个DRAM的位宽确定所需要的DRAM的个数。
本实施例中,每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇(Single Chip Burst Cluster,SCBC),每个SCBC包括(N×Q)bit数据,全部DRAM中存储的可在同一个读写周期内访存的数据即SCBC的集合形成一个内存行。每一块DRAM也可以视为一个内存列。换句话说,一个内存行表示一个读写周期,一个内存列表示一块DRAM。
所说的访存装置100包括读写模块110和处理模块120;其中,
所述读写模块110,用于将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的DRAM不包括第(M+2)个DRAM;一个读写周期内待存储的SCBC的个数不超过M;
所述处理模块120,用于对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
所述读写模块110,还用于将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
可选的,所述处理模块120,还用于在收到读访存请求时,指示所述读写模块从当前的内存行中读取需要的SCBC以及对应的检错码,根据所述检错码对读取到的SCBC进行校验,判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。若有两个或者两个以上SCBC发生错误,则处理模块120向主控设备例如内存控制器报告不可恢复错误。
可选的,所述处理模块120,还用于首先判断待写入的第二SCBC的个数X是否小于等于M/2;若X小于等于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;若X大于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
进一步的,所述处理模块120,还用于在判断有第一SCBC错误时,获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。在有两个以上DRAM中的SCBC发生错误时,所述处理模块120向主控设备例如内存控制器报告不可恢复错误。
上述的第一SCBC、第一纠错码和第一检错码可以理解为当前存储的SCBC、纠错码和检错码;第二SCBC、第二纠错码和第二检错码则是将要重新写入的SCBC、纠错码和检错码,这些数据将会覆盖上述的第一SCBC、第一纠错码和第一检错码。
一般的,目前计算机系统的内存模组通常是64位,假设选用位宽N定于8的DRAM,则用于存储SCBC的DRAM的数量应为64除以8等于8。下面,以M和N均等于8为例,对本发明实施例装置做进一步详细说明:
当M和N均等于8时,所述内存模组的数据编码结构如图2所示,图中10列分别表示第一至第(M+2)DRAM。其中,第(M+2)DRAM即图中最后一列用于存放检错码,第一至第(M+1)DRAM中的一块DRAM用于存放纠错码,另外八块DRAM用于存放SCBC。假设每块DRAM的突发长度也是8位,则每个SCBC包括8bit*8=64bit数据。图中,用Data(D)表示访存数据,用Parity(P)表示纠错码,用Checksum(C)表示检错码。同一个内存行中存储的SCBC分别用D0~D7表示,连续(M+1)个内存行中存储的纠错码分别用P0~P8表示,连续(M+1)个内存行中存储的检错码分别用C0~C8表示。广义上,所述的访存数据,纠错码和检错码都是SCBC,但在本文中,所述SCBC专指所述的访存数据(D)。
本实施例中的容错编码分为检错码和纠错码两部分,其中,检错码部分的计算包括:对同一内存行上的8个SCBC依次计算校验和,校验和的算法可以采用8位模2加法或8位二进制反码和,每个SCBC计算得到8位校验码,同一行的8个SCBC计算得到64位校验码,存储在专用的第(M+2)DRAM芯片的第一内存行对应位置,作为检错码;纠错码部分的计算包括:对同一内存行中8个SCBC的对应位进行异或运算,运算产生64位奇偶校验码,即所述纠错码P,如D0~D7对应位异或得到纠错码P0存储在第(M+1)DRAM的同一行;需要指出,连续多个内存行的纠错码分别存储在不同的DRAM,呈条带状分布于第一至第(M+1)DRAM的内存数据区用以纠错。
纠错码呈条带状分布设计的原因在于:如果所有内存行的纠错码P都保存在同一个DRAM芯片上,当连续写数据时都需要更新该芯片上相对应位置的纠错码P,会使该DRAM芯片成为访问热点,导致两个写操作之间延迟增加,更新性能下降;并且,写入纠错码P时,需要预读整个内存行上存储的全部数据,会进一步导致性能下降;而通过使纠错码呈条带状分布,可以解决上述问题。
容错编码详细的配置参数如表1所示。
表1
针对不同的访存请求,本实施例装置会执行读访存处理和写访存处理以及错误恢复处理这三种处理时序,以下分别详细说明:
A、读访存处理
当读访存请求到来,处理模块需要根据读取粒度激活响应的若干个DRAM芯片,读取SCBC数据,同时,一并读取当前内存行的检错码,对读取的SCBC数据进行校验,如果没有SCBC错误则继续进行读取,将已读取的数据上传;如果有且仅有一个DRAM芯片上有SCBC错误则进行错误恢复处理;如果多个DRAM芯片上有SCBC错误则向主控设备报告不可修复错误。所述的访存粒度是指需要访存的SCBC数据的个数。
例如:读访存请求RD(D0,D1,D2)请求读取D0-D2共计3个SCBC24byte数据,需要激活4个DRAM芯片,读取D0-D2以及C0,根据C0的前3个字节的检错码校验D0-D2,如果有任意一个SCBC出错则进入错误恢复处理。
B、写访存处理
当写访存请求到来,处理模块首先判断该写访存请求的访存粒度。所述的访存粒度是指需要访存的SCBC数据的个数。
如果该写访存请求的访存粒度,即待写入的SCBC数据的个数X小于或等于M/2,则读取该写访存请求将要写入数据位置的原SCBC数据,一并读取该行的原纠错码以及原检错码,利用原检错码校验读出的原SCBC数据,如果有且只有一个SCBC错误则进行错误恢复处理,如果没有错误则将原纠错码P与读到的原SCBC数据以及将要写入的新SCBC数据进行异或后即得到更新后的新纠错码P’,对写入的新SCBC数据同时计算新检错码C’,指示所述读写模块将新SCBC和新纠错码以及新检错码写入对应的DRAM中的对应位置。
例如:收到写访存请求WR(D0’,D1’,D2’),请求在原D0,D1,D2的位置写入D0’,D1’,D2’,3个SCBC共计24byte数据,判断写入粒度3个SCBC小于总共8个SCBC的一半,则首先读取原数据D0,D1,D2,以及同一行的校验码P0及C0,根据C0进行校验,无误则计算新的P0’=P0^D0^D1^D2^D0’^D1’^D2’,计算D0’,D1’,D2’的校验和更新C0的到C0’,最后一并写入D0’,D1’,D2’,P0’,C0’。
另一种情况,如果该写访存请求的访存粒度,即待写入的SCBC数据的个数X大于M/2,则读取在本次写访存中该内存行不应被修改的数据SCBC,一并读取该行的纠错码P以及检错码C,经过检错码C校验读出的原数据如果有错误则进入错误恢复处理,无误则将要写入的数据与刚读出本内存行不应更改的数据进行异或得到更新后的纠错码P’,对写入的数据同时计算检错码写入对应DRAM的对应位置。
例如:收到写访存请求WR(D0’,D1’,D2’,D3’,D4’,D5’),请求在原D0-D5的位置写入D0’-D5’,6个SCBC共计48byte数据,判断写入粒度6个SCBC大于总共8个SCBC的一半,则首先读取该行中写后不更改的数据D6,D7,以及同一行的校验码P0及C0,根据C0校验D6与D7,无误则计算新的P0’=D0’^D1’^D2’^D3’^D4’^D5’^D6^D7,计算D0’-D5’的校验和更新C0得到C0’,最后一并写入D0’-D5’,P0’,C0’。
综上,写访存之前,需要一次小于等于一半位宽的数据读取,之后进行纠错码与检错码的更新,最后再一并写入。其中,所述的原SCBC数据和原纠错码以及原检错码是指内存模组中原先存储的SCBC数据和纠错码以及检错码,即,上文中所述的第一SCBC数据和第一纠错码以及第一检错码;所述的新SCBC数据和新纠错码以及新检错码是更新后的SCBC数据和纠错码以及检错码,即,上文中所述的第二SCBC数据和第二纠错码以及第二检错码。
C、错误恢复处理
当检错码校验数据出错后,还要获取出现错误的SCBC的个数,如果同时多位错出只现在一个SCBC中,即同一时间单个DRAM芯片出错的情况,本实施例装置进行错误恢复处理。首先,读取出错的SCBC所在内存行的所有数据,包括未出错的SCBC,检错码C,纠错码P,根据检错码C校验读出的其他同行数据,无误则将所有其他正确的SCBC与纠错码P进行异或恢复得到整块正确数据,最后重新写入正确数据。
例如,如果D0出错,需要恢复,首先读取同一内存行的D1-D7,P0,C0,用检错码C0校验D1-D7,如果还有其他数据SCBC有错,则向设备报告不可恢复错误,如果D1-D7正确,则计算D0’=D1^D2^D3^D4^D5^D6^D7^P0,得到正确的D0’,最后写入正确数据D0’,至此恢复结束。
本发明实施例技术方案的具体配置具有一定的灵活性,可以根据不同的体系结构设计通过调整使用芯片的位宽与芯片的突发长度以及突发长度簇的组数来设置编码粒度的大小。对于更细粒度的访存容错编码设计可以使用x4位宽4次突发长度的设计,使SCBC块容量缩减为16位。对于更大粒度的访存容错编码设计可以使用x16位宽配合两组8次突发长度,用两个读写周期的时间一次最少读取256位的数据。一些实施方式中,也可以使用x8位宽4次突发长度的设计,使SCBC块容量缩减为32位,或者可以使用x16位宽8次突发长度的设计,使SCBC块容量缩减为128位,或者是其它方式。其它实施方式中,位宽和突发长度还可以随意选择其它组合,其中,位宽一般为2的若干次方。
以上,本发明实施例提供了一种消息式内存模组的访存装置,该装置以SCBC为基本读写单位进行细粒度编码保护,但对于SCBC的大小没有特别限定,即,对DRAM内存芯片的位宽和突发长度不做限定,因此可以支持可变粒度访存,支持可变数量的DRAM访存,并且,利用独立的DRAM存储检错码可以对不同访存粒度实现检错,检错码配合纠错码可以实现对单个DRAM中任意多位错误进行纠错,是一种低功耗高可靠性的解决方案。
本实施例技术方案可实现任意单芯片多错误容错,相比chipkill技术每次读写激活芯片数下降44~83%(16~30/36),激活芯片数据下降意味着动态功耗同比下降,本专利以更低的功耗开销实现Chipkill级别的容错保护,并且没有Chipkill实现的芯片位宽限制,更易于扩容。除此之外,本专利基于消息式内存的设计,实现了细粒度的保护,容错粒度可变,为上层体系结构设计提供了更多优化空间。
实施例二、
请参考图3,本发明实施例还提供一种消息式内存模组的访存方法。该方法的执行主体是内存模组的外围控制电路或者内存控制器,具体是所述外围控制电路或者内存控制器中部署的如实施例一所述的访存装置。所述内存模组包括(M+2)块动态随机存取存储器(DRAM),M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行。
所述方法包括:
210、将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;
220、对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
230、将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
可选的,所述方法还包括:
在收到读访存请求时,从当前的内存行中读取需要的SCBC以及对应的检错码,对读取到的SCBC进行校验,根据所述检错码判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
可选的,所述方法还包括:
在收到写访存请求时,判断待写入的第二SCBC的个数X是否小于等于M/2;
若X小于等于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;
若X大于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
可选的,有第一SCBC错误时,所述方法还包括:
获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
以上,本发明实施例提供了一种消息式内存模组的访存方法,该方法以SCBC为基本读写单位进行细粒度编码保护,但对于SCBC的大小没有特别限定,即,对DRAM内存芯片的位宽和突发长度不做限定,因此可以支持可变粒度访存,支持可变数量的DRAM访存,并且,利用独立的DRAM存储检错码可以对不同访存粒度实现检错,检错码配合纠错码可以实现对单个DRAM中任意多位错误进行纠错,是一种低功耗高可靠性的解决方案。
实施例三、
本发明实施例还提供一种内存控制系统。
一种实施方式中,如图4a所示,该系统包括消息式内存模组310,所述内存模组310包括外围控制电路3101和(M+2)块DRAM3102;
其中,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行。所述内存控制器可以集成在计算机主板上或者集成在计算机的CPU中。
所述外围控制电路执行以下步骤:
将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
可选的,所述外围控制电路还执行以下步骤:
在收到读访存请求时,从当前的内存行中读取需要的SCBC以及对应的检错码,对读取到的SCBC进行校验,根据所述检错码判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
可选的,所述外围控制电路还执行以下步骤:
在收到写访存请求时,判断待写入的第二SCBC的个数X是否小于等于M/2;若X小于等于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;若X大于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
其中,有第一SCBC错误时,还获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
另一种实施方式中,如图4b所示,该系统包括消息式内存模组310和内存控制器320,所述内存模组310包括(M+2)块DRAM3102;
其中,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行。所述内存控制器可以集成在计算机主板上或者集成在计算机的CPU中。
所述内存控制器执行以下步骤:
将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
可选的,所述内存控制器还执行以下步骤:
在收到读访存请求时,从当前的内存行中读取需要的SCBC以及对应的检错码,对读取到的SCBC进行校验,根据所述检错码判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
可选的,所述内存控制器还执行以下步骤:
在收到写访存请求时,判断待写入的第二SCBC的个数X是否小于等于M/2;若X小于等于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;若X大于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
其中,有第一SCBC错误时,还获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
以上,本发明实施例提供了一种内存控制系统,该内存模组以SCBC为基本读写单位进行细粒度编码保护,但对于SCBC的大小没有特别限定,即,对DRAM内存芯片的位宽和突发长度不做限定,因此可以支持可变粒度访存,支持可变数量的DRAM访存,并且,利用独立的DRAM存储检错码可以对不同访存粒度实现检错,检错码配合纠错码可以实现对单个DRAM中任意多位错误进行纠错,是一种低功耗高可靠性的解决方案。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤可以通过硬件来完成,也可以通过程序指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机读取存储器、磁盘或光盘等。
以上对本发明实施例所提供的一种消息式内存模组的访存方法和装置进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种消息式内存模组的访存装置,其特征在于:
所述内存模组包括(M+2)块动态随机存取存储器DRAM,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行;
所述装置包括:
读写模块,用于将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;
处理模块,用于对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
所述读写模块,还用于将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
2.根据权利要求1所述的装置,其特征在于:
所述处理模块,还用于在收到读访存请求时,指示所述读写模块从当前的内存行中读取需要的SCBC以及对应的检错码,根据所述检错码对读取到的SCBC进行校验,判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
3.根据权利要求1所述的装置,其特征在于:
所述处理模块,还用于在收到写访存请求时,首先判断待写入的第二SCBC的个数X是否小于等于M/2;
若X小于等于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;
若X大于M/2,则指示所述读写模块读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,指示所述读写模块将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
4.根据权利要求3所述的装置,其特征在于:
所述处理模块,还用于在判断有第一SCBC错误时,获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则指示所述读取模块读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
5.一种消息式内存模组的访存方法,其特征在于:
所述内存模组包括(M+2)块动态随机存取存储器DRAM,M等于2的m次方,m为正整数;每块DRAM中存储的可在一个读写周期内访存的数据称为单芯片突发簇SCBC,全部DRAM中存储的可在同一个读写周期内访存的数据的集合形成一个内存行;
所述方法包括:
将当前读写周期内待存储的SCBC存储到对应的DRAM中且位于当前内存行中,用于存储SCBC的所述DRAM不包括第(M+2)个DRAM;
对一个内存行中的每个SCBC分别计算一组检错码,对一个内存行中的全部SCBC计算一组纠错码;
将对一个内存行计算得到的检错码存储在该内存行的第(M+2)个DRAM中,将对一个内存行计算得到的纠错码存储在该内存行的第Z个DRAM中,Z为正整数且1≤Z≤(M+1),连续(M+1)个内存行中的纠错码分别存储在不同的DRAM中。
6.根据权利要求5所述的方法,其特征在于,还包括:
在收到读访存请求时,从当前的内存行中读取需要的SCBC以及对应的检错码,根据所述检错码对读取到的SCBC进行校验,判断是否有SCBC错误,在判断有SCBC错误时,获取发生错误的SCBC的个数,若有且仅有一个SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的SCBC进行恢复。
7.根据权利要求5所述的方法,其特征在于,还包括:
在收到写访存请求时,判断待写入的第二SCBC的个数X是否小于等于M/2;
若X小于等于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及待写入第二SCBC的X个DRAM中存储的X个第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据所述第一纠错码和所述X个第一SCBC以及所述X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中;
若X大于M/2,则读取当前的内存行中存储的第一检错码和第一纠错码以及不应被写入第二SCBC的(M-X)个DRAM中存储的第一SCBC,根据所述第一检错码判断是否有第一SCBC错误,没有第一SCBC错误时,计算所述X个第二SCBC的第二检错码,以及根据(M-X)个第一SCBC和X个第二SCBC计算第二纠错码,将所述X个第二SCBC和第二纠错码以及第二检错码写入对应的DRAM中。
8.根据权利要求7所述的方法,其特征在于,所述的判断是否有SCBC错误之后还包括:
获取发生错误的第一SCBC的个数,若有且仅有一个第一SCBC发生错误,则读取该内存行的所有数据,根据该内存行中的纠错码与其它未发生错误的SCBC,对发生的错误的第一SCBC进行恢复。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330220.6A CN104347122B (zh) | 2013-07-31 | 2013-07-31 | 一种消息式内存模组的访存方法和装置 |
KR1020167003393A KR101837318B1 (ko) | 2013-07-31 | 2014-07-31 | 메시지-타입 메모리 모듈을 위한 액세스 방법 및 디바이스 |
EP14832194.6A EP3015986B1 (en) | 2013-07-31 | 2014-07-31 | Access method and device for message-type memory module |
PCT/CN2014/083464 WO2015014301A1 (zh) | 2013-07-31 | 2014-07-31 | 一种消息式内存模组的访存方法和装置 |
US15/010,326 US9811416B2 (en) | 2013-07-31 | 2016-01-29 | Memory access method and apparatus for message-type memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330220.6A CN104347122B (zh) | 2013-07-31 | 2013-07-31 | 一种消息式内存模组的访存方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104347122A true CN104347122A (zh) | 2015-02-11 |
CN104347122B CN104347122B (zh) | 2017-08-04 |
Family
ID=52431017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310330220.6A Active CN104347122B (zh) | 2013-07-31 | 2013-07-31 | 一种消息式内存模组的访存方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9811416B2 (zh) |
EP (1) | EP3015986B1 (zh) |
KR (1) | KR101837318B1 (zh) |
CN (1) | CN104347122B (zh) |
WO (1) | WO2015014301A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991833A (zh) * | 2015-06-15 | 2015-10-21 | 联想(北京)有限公司 | 一种错误检测方法及电子设备 |
CN105511982A (zh) * | 2015-12-18 | 2016-04-20 | 山东海量信息技术研究院 | 一种容忍dram颗粒失效的内存存取方法 |
CN110718263A (zh) * | 2019-09-09 | 2020-01-21 | 无锡江南计算技术研究所 | 芯片访存通路的高效分段测试系统、方法 |
CN110727401A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种访存系统 |
CN110968450A (zh) * | 2018-09-30 | 2020-04-07 | 长鑫存储技术有限公司 | 数据存储方法及装置、存储介质、电子设备 |
WO2023236996A1 (zh) * | 2022-06-08 | 2023-12-14 | 华为技术有限公司 | 内存模组和电子设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7056570B2 (ja) * | 2016-09-23 | 2022-04-19 | ソニーグループ株式会社 | 無線機器、無線機器の処理方法およびプログラム |
KR20180127707A (ko) * | 2017-05-22 | 2018-11-30 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 이의 동작 방법 |
US10606692B2 (en) | 2017-12-20 | 2020-03-31 | International Business Machines Corporation | Error correction potency improvement via added burst beats in a dram access cycle |
US10630423B2 (en) * | 2018-01-18 | 2020-04-21 | Chin Pen Chang | Two bit error calibration device for 128 bit transfer and the method for performing the same |
US10516504B2 (en) * | 2018-03-08 | 2019-12-24 | Chin Pen Chang | Two bit error calibration device for 256 bit transfer and the method for performing the same |
EP3647952A1 (en) * | 2018-10-31 | 2020-05-06 | EM Microelectronic-Marin SA | Anti-tearing protection system for non-volatile memories |
WO2023106434A1 (ko) * | 2021-12-06 | 2023-06-15 | 주식회사 딥아이 | Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
CN102203740A (zh) * | 2011-05-27 | 2011-09-28 | 华为技术有限公司 | 数据处理方法、装置及系统 |
CN102456394A (zh) * | 2010-10-20 | 2012-05-16 | 三星电子株式会社 | 执行dram刷新操作的存储电路、系统和模块及其操作方法 |
WO2012081732A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
CN102667738A (zh) * | 2009-10-09 | 2012-09-12 | 提琴存储器公司 | 具有多个raid组分条的内存系统及其方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785835B2 (en) | 2000-01-25 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Raid memory |
US6973613B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure |
US6996766B2 (en) * | 2002-06-28 | 2006-02-07 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects a first failing component and optionally a second failing component |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US8234520B2 (en) * | 2009-09-16 | 2012-07-31 | International Business Machines Corporation | Wear leveling of solid state disks based on usage information of data and parity received from a raid controller |
WO2011094437A2 (en) * | 2010-01-28 | 2011-08-04 | Hewlett-Packard Development Company, L.P. | Memory access methods and apparatus |
US9063836B2 (en) * | 2010-07-26 | 2015-06-23 | Intel Corporation | Methods and apparatus to protect segments of memory |
US8775868B2 (en) * | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9535804B2 (en) * | 2012-05-21 | 2017-01-03 | Cray Inc. | Resiliency to memory failures in computer systems |
-
2013
- 2013-07-31 CN CN201310330220.6A patent/CN104347122B/zh active Active
-
2014
- 2014-07-31 WO PCT/CN2014/083464 patent/WO2015014301A1/zh active Application Filing
- 2014-07-31 KR KR1020167003393A patent/KR101837318B1/ko active IP Right Grant
- 2014-07-31 EP EP14832194.6A patent/EP3015986B1/en active Active
-
2016
- 2016-01-29 US US15/010,326 patent/US9811416B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
CN102667738A (zh) * | 2009-10-09 | 2012-09-12 | 提琴存储器公司 | 具有多个raid组分条的内存系统及其方法 |
CN102456394A (zh) * | 2010-10-20 | 2012-05-16 | 三星电子株式会社 | 执行dram刷新操作的存储电路、系统和模块及其操作方法 |
WO2012081732A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
CN102203740A (zh) * | 2011-05-27 | 2011-09-28 | 华为技术有限公司 | 数据处理方法、装置及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991833A (zh) * | 2015-06-15 | 2015-10-21 | 联想(北京)有限公司 | 一种错误检测方法及电子设备 |
CN104991833B (zh) * | 2015-06-15 | 2018-03-27 | 联想(北京)有限公司 | 一种错误检测方法及电子设备 |
CN105511982A (zh) * | 2015-12-18 | 2016-04-20 | 山东海量信息技术研究院 | 一种容忍dram颗粒失效的内存存取方法 |
CN110968450A (zh) * | 2018-09-30 | 2020-04-07 | 长鑫存储技术有限公司 | 数据存储方法及装置、存储介质、电子设备 |
CN110718263A (zh) * | 2019-09-09 | 2020-01-21 | 无锡江南计算技术研究所 | 芯片访存通路的高效分段测试系统、方法 |
CN110727401A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种访存系统 |
CN110718263B (zh) * | 2019-09-09 | 2021-08-10 | 无锡江南计算技术研究所 | 芯片访存通路的高效分段测试系统、方法 |
WO2023236996A1 (zh) * | 2022-06-08 | 2023-12-14 | 华为技术有限公司 | 内存模组和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2015014301A1 (zh) | 2015-02-05 |
EP3015986A4 (en) | 2016-07-27 |
KR101837318B1 (ko) | 2018-03-09 |
US9811416B2 (en) | 2017-11-07 |
KR20160030978A (ko) | 2016-03-21 |
EP3015986B1 (en) | 2017-10-04 |
EP3015986A1 (en) | 2016-05-04 |
CN104347122B (zh) | 2017-08-04 |
US20160147600A1 (en) | 2016-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104347122B (zh) | 一种消息式内存模组的访存方法和装置 | |
US10459793B2 (en) | Data reliability information in a non-volatile memory device | |
JP7276742B2 (ja) | メモリエラーを訂正するための共有パリティチェック | |
US9292382B2 (en) | Codewords that span pages of memory | |
US9183078B1 (en) | Providing error checking and correcting (ECC) capability for memory | |
US9754684B2 (en) | Completely utilizing hamming distance for SECDED based ECC DIMMs | |
TWI501251B (zh) | 區域錯誤檢測及全域錯誤校正技術 | |
US9898365B2 (en) | Global error correction | |
EP3462318B1 (en) | Memory controller error checking process using internal memory device codes | |
KR20170042433A (ko) | 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 | |
CN101634938A (zh) | 固态硬盘的数据迁移方法、数据迁移装置及固态硬盘 | |
US20160139988A1 (en) | Memory unit | |
CN104516679A (zh) | 一种raid数据处理方法及装置 | |
US9106260B2 (en) | Parity data management for a memory architecture | |
WO2016122515A1 (en) | Erasure multi-checksum error correction code | |
CN105575439B (zh) | 一种存储单元失效纠错的方法及存储器 | |
US20160147598A1 (en) | Operating a memory unit | |
US9043655B2 (en) | Apparatus and control method | |
CN104461383B (zh) | 一种独立磁盘冗余阵列的实现方法及装置 | |
CN106104491A (zh) | 具有数据保护机制的计算系统及其操作方法 | |
CN116954982A (zh) | 数据写入方法以及处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |