CN108664362B - 内存镜像的处理方法、内存控制器及用户设备 - Google Patents
内存镜像的处理方法、内存控制器及用户设备 Download PDFInfo
- Publication number
- CN108664362B CN108664362B CN201710210810.3A CN201710210810A CN108664362B CN 108664362 B CN108664362 B CN 108664362B CN 201710210810 A CN201710210810 A CN 201710210810A CN 108664362 B CN108664362 B CN 108664362B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- target
- memory
- memory module
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000012795 verification Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1456—Hardware arrangements for backup
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
技术领域
本发明涉及内存技术,尤其涉及一种内存镜像的处理方法、内存控制器及用户设备。
背景技术
内存储器系统是现代计算机系统中不可缺少的部分,目前主要使用的内存储器系统有DDR、DDR2、DDR3、DDR4等等。内存储器系统由内存控制器进行控制,其中内存储控制器可集成在处理器的内部,也可以作为与处理器物理分离的结构存在。
内存镜像是将主数据和与主数据对应的冗余数据,分别放在不同的内存模组内,主数据存储的内存模组可以称为主内存,冗余数据存储的内存模组可以称为镜像内存。现有技术中实现对数据的镜像存储的方法所采用的装置如下:内存控制器具有第一存储器通道接口和第二存储器通道接口,内存控制器通过第一通道接口与第一通道连接,内存控制器通过第二通道接口与第二通道连接;实现对数据的镜像存储的方法如下:内存控制器确定主数据对应的第一存储器组件(内存模组),以及冗余数据对应的第二存储器组件后,将主数据通过第一通道写入第一存储器组件,将冗余数据通过第二通道写入第二存储器组件中。
但是上述方法必须在多通道内存器系统中使用,而且同时采用两个通道实现对数据的镜像存储,使得原有双通道的双倍带宽只有一半的实际利用率,从而导致带宽利用率低。
发明内容
本发明提供一种内存镜像的处理方法、内存控制器及用户设备,以克服现有技术中的内存镜像的处理方法造成的带宽利用率低的技术问题。
本发明提供一种内存镜像的处理方法,应用于内存控制器,所述内存控制器控制的内存包括至少两个内存模组,每个所述内存模组包括至少一个芯片;所述方法包括:
所述内存控制器获取数据写入指令,所述数据写入指令中包括待写入的第一数据;
所述内存控制器在所述内存中确定位于同一通道上的至少两个目标写内存模组,并控制各所述目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,所述至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,所述通道为所述数据总线和所述地址总线确定的通道;
所述内存控制器通过所述通道将所述第一数据写入各所述目标写内存模组各自包括的芯片中;其中,在各所述目标写内存模组中,其中一个所述目标写内存模组内写入的第一数据为主数据,剩余的各所述目标写内存模组内写入的第一数据为镜像数据。
如上所述的方法,所述数据写入指令中还包括所述第一数据对应的写线性地址;所述内存控制器在所述内存中确定位于同一通道上的至少两个目标写内存模组,包括:
所述内存控制器根据所述写线性地址,确定第一目标写内存模组;
所述内存控制器在所述内存的剩余内存模组中确定与所述第一目标写内存模组位于同一通道上的至少一个第二目标写内存模组;
所述内存控制器根据所述第一目标写内存模组和所述第二目标写内存模组,确定至少两个目标写内存模组。
如上所述的方法,所述内存控制器将所述第一数据写入各所述目标写内存模组各自包括的芯片中,包括:
所述内存控制器根据所述写线性地址,确定所述第一数据的写物理地址;
所述内存控制器根据所述第一数据,得到所述第一数据对应的第一校验数据;
所述内存控制器根据所述写物理地址,通过所述通道将所述第一数据和所述第一校验数据写入各所述目标写内存模组各自包括的芯片中。
如上所述的方法,所述方法还包括:
所述内存控制器接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述内存控制器根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述内存控制器根据所述读物理地址,从第一目标读内存模组读取第二数据和第二校验数据;所述第一目标读内存模组为任意一个目标读内存模组;
所述内存控制器根据从第一目标读内存模组读取的第二数据,得到第三校验数据;
所述内存控制器根据所述第二校验数据和第三校验数据判断从第一目标读内存模组读取的第二数据是否正确,若是,则向所述数据读取设备发送从第一目标读内存模组读取的第二数据。
如上所述的方法,所述方法还包括:
若从第一目标读内存模组中读取的第二数据错误,所述内存控制器根据所述第二校验数据和第三校验数据,判断从第一目标读内存模组读取的第二数据是否可被纠正,若是,则对从第一目标读内存模组读取的第二数据进行纠正,向所述数据读取设备发送纠正后的从第一目标读内存模组读取的第二数据;
或者,
若从第一目标读内存模组中读取的第二数据错误,所述内存控制器从第二目标读内存模组中读取第二数据和第二校验数据;所述第二目标读内存模组为任意一个所述目标读内存模组,所述第二目标读内存模组与所述第一目标读内存模组不同;
所述内存控制器根据从第二目标读内存模组中读取的第二数据,得到第四校验数据;
所述内存控制器根据所述第二校验数据和第四校验数据判断从第二目标读内存模组中读取的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组中读取的第二数据。
如上所述的方法,所述方法还包括:
所述内存控制器接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述内存控制器根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述内存控制器根据所述读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;所述第一目标读内存模组和第二目标读内存模组为任意两个所述目标读内存模组;
所述内存控制器判断两次读取的第二数据是否相同,若是,则向数据读取设备发送所述第二数据。
本发明还提供一种于内存控制器,所述内存控制器控制的内存包括至少两个内存模组,每个所述内存模组包括至少一个芯片;所述内存控制器包括:
接收模块,用于获取数据写入指令,所述数据写入指令中包括待写入的第一数据;
目标内存模组确定模块,用于在所述内存中确定位于同一通道上的至少两个目标写内存模组,并控制各所述目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,所述至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,所述通道为所述数据总线和所述地址总线确定的通道;
数据写入模块,用于通过所述通道将所述第一数据写入各所述目标写内存模组各自包括的芯片中;其中,在各所述目标写内存模组中,其中一个所述目标写内存模组内写入的第一数据为主数据,剩余的各所述目标写内存模组内写入的第一数据为镜像数据。
如上所述的内存控制器,所述目标内存模组确定模块具体用于,
根据所述写线性地址,确定第一目标写内存模组;
在所述内存的剩余内存模组中确定与所述第一目标写内存模组位于同一通道上的至少一个第二目标写内存模组;
根据所述第一目标写内存模组和所述第二目标写内存模组,确定至少两个目标写内存模组。
如上所述的内存控制器,所述数据写入模块具体用于:
根据所述写线性地址,确定所述第一数据的写物理地址;
根据所述第一数据,得到所述第一数据对应的第一校验数据;
根据所述写物理地址,通过所述通道将所述第一数据和所述第一校验数据写入各所述目标写内存模组各自包括的芯片中。
如上所述的内存控制器,所述内存控制器还包括数据读取模块、检验数据生成模块和判断模块;
所述接收模块还用于,接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述目标内存模组确定模块还用于,根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述数据读取模块,用于根据所述读物理地址,从第一目标读内存模组读取第二数据和第二校验数据;所述第一目标读内存模组为任意一个目标读内存模组;
所述检验数据生成模块,用于根据从第一目标读内存模组读取的第二数据,得到第三校验数据;
所述判断模块,用于根据所述第二校验数据和第三校验数据判断从第一目标读内存模组读取的第二数据是否正确,若是,则向所述数据读取设备发送从第一目标读内存模组读取的第二数据;
若从第一目标读内存模组中读取的第二数据错误,所述判断模块还用于,根据所述第二校验数据和第三校验数据,判断从第一目标读内存模组读取的第二数据是否可被纠正,若是,则对从第一目标读内存模组读取的第二数据进行纠正,向所述数据读取设备发送纠正后的从第一目标读内存模组读取的第二数据;
或者,
若从第一目标读内存模组中读取的第二数据错误,所述数据读取模块还用于,从第二目标读内存模组中读取第二数据和第二校验数据;所述第二目标读内存模组为任意一个所述目标读内存模组,所述第二目标读内存模组与所述第一目标读内存模组不同;
所述校验数据生成模块还用于,根据从第二目标读内存模组中读取的第二数据,得到第四校验数据;
所述判断模块还用于,根据所述第二校验数据和第四校验数据判断从第二目标读内存模组中读取的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组中读取的第二数据。
如上所述的内存控制器,所述内存控制器还包括数据读取模块和判断模块;
所述接收模块还用于,接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述目标内存模组确定模块用于,根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述数据读取模块用于,根据所述读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;所述第一目标读内存模组和第二目标读内存模组为任意两个所述目标读内存模组;
所述判断模块用于,判断两次读取的第二数据是否相同,若是,则向数据读取设备发送所述第二数据。
本发明还提供一种用户设备,包括如上任一所述的内存控制器。
本发明的内存镜像的处理方法包括:内存控制器获取数据写入指令,数据写入指令中包括待写入的第一数据;内存控制器在所述内存中确定位于同一通道上的至少两个目标写内存模组,并控制各目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道;内存控制器通过确定的目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中;其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。本发明的内存镜像的处理方法在实现了数据镜像内存的基础上,保证了带宽的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的内存系统的架构示意图一;
图2为本发明提供的内存系统的架构示意图二;
图3为本发明提供的内存镜像的处理方法实施例一的流程图;
图4为本发明提供的一个内存模组的示意图;
图5为本发明提供的内存镜像的处理方法实施例二的流程图;
图6为本发明提供的内存镜像的处理方法实施例三的流程图;
图7为本发明提供的内存镜像的处理方法实施例四的流程图;
图8为本发明提供的内存控制器实施例一的结构示意图;
图9为本发明提供的内存控制器实施例二的结构示意图;
图10为本发明提供的用户设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的内存系统的架构示意图一,参见图1,该内存系统包括至少一个内存控制器11,每个内存控制器外设置有一个通道12,每个通道12上设置有至少两个内存模组13,内存控制器11通过通道12与内存模组13连接,处在同一通道上的多个内存模组也可以说该多个内存模组连接在同一地址总线上和连接在同一数据总线上。其中,内存模组0-1指的是第0通道上的第1个内存模组,内存模组1-1指的是第1通道上的第1个内存模组,其余的内存模组的标号的意义与此相同。
如图1所示的内存系统的内存镜像的处理方法的流程为:处理器或者其它设备向内存系统中任一内存控制器11发送数据写入指令,内存控制器11接收到数据写入指令后确定至少两个内存模组13,此时确定的至少两个内存模组13必定位于同一通道;接着通过通道将数据写入指令中包括的待写入数据同时写入上述确定的至少两个内存模组13中,实现了对待写入数据的镜像存储。比如,图1中的数据1为待写入的数据,内存模组0-0、内存模组0-1位于同一通道上,数据1同时被写入了内存模组0-0和内存模组0-1。
图2为本发明提供的内存系统的架构示意图二,参见图2,该内存系统包括一个内存控制器21,内存控制器外设置有多个通道22,每个通道22上设置有至少两个内存模组23,内存控制器21通过各通道22与各自通道上设置的内存模组23连接,处在同一通道上的多个内存模组也可以说该多个内存模组连接在同一地址总线上和连接在同一数据总线上。
如图2所示的内存系统的内存镜像的处理方法的流程为:处理器或者其它设备向内存控制器21发送数据写入指令,内存控制器21接收到数据写入指令后确定位于同一通道上的至少两个内存模组;接着通过通道将数据写入指令中包括的待写入数据同时写入上述确定的至少两个内存模组中,实现了对待写入数据的镜像存储。比如,图2中的数据1为待写入的数据,内存模组0-0、内存模组0-1位于同一通道上,数据1同时被写入了内存模组0-0和内存模组0-1。
上述以图1和图2为例,对本实施例所应用的系统架构进行了说明。本领域技术人员可以理解,本实施例可应用的系统架构并不限于上述两种架构,对于在同一通道上具有至少两个内存模组的内存系统,都可以应用到本实施例中。
下面采用具体的实施例,对上述内存镜像的处理方法的具体实现过程进行详细说明。
图3为本发明提供的内存镜像的处理方法实施例一的流程图,如图3所示,本实施例的方法应用于内存控制器,本实施例的方法可以包括:
步骤S101、内存控制器获取数据写入指令,数据写入指令中包括待写入的第一数据;
步骤S102、内存控制器在内存中确定位于同一通道上的至少两个目标写内存模组,并控制各目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道;
步骤S103、内存控制器通过目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中;其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。
具体地,本实施例中的内存控制器控制的内存包括至少两个内存模组,每个内存模组包括至少一个芯片。
在本实施例中,以处理器数据总线的位宽为64位,组成内存模组的芯片为16K×8位,每个内存模组包括8个16K×8位的芯片为例进行说明。本领域技术人员可以理解,该处理器数据总线的位宽还可以为128位或者32位,其实现方式类似,本实施例此处不再赘述。
图4为本发明提供的一个内存模组的示意图。如图4所示,一个内存模组41包括8个芯片42。对于内存包括的内存模组的数量,是由内存的存储单元决定的,比如128K×64位的内存,总共需要(128/16)×(64/8)=64片芯片,也就是内存一共包括8个内存模组。
在实际的镜像内存的处理过程中,内存控制器获取数据写入指令,数据写入指令中包括待写入的第一数据;其中,数据写入指令可为处理器或者外部其它的设备的控制器发送的。本领域技术人员可以理解的是,在图1所示的内存系统中,本实施例中的内存控制器为内存系统中的任一内存控制器。
内存控制器在接收到数据写入指令后,内存控制器在内存中确定位于同一通道上的至少两个目标写内存模组,并控制目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号。其中,位于同一通道上的至少两个目标写内存模组也可以描述为至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道,内存控制器通过通道与内存之间进行信息传输。
其中,内存控制器在内存中确定至少两个目标写内存模组具有以下两种可能的实现方式。
一种可能实现的方式为:内存控制器获取与第一数据对应的写线性地址,写线性地址包括在上述的数据写入指令中;内存控制器根据写线性地址,确定第一目标写内存模组;内存控制器在内存的剩余内存模组中确定与第一目标写内存模组位于同一通道上的第二目标写内存模组,也可以说第二目标写内存模组是第一目标写内存模组所在的通道上的内存模组;内存控制器根据第一目标写内存模组和所述第二目标写内存模组,确定至少两个目标写内存模组。第二目标写内存模组与第一目标写内存模组位于同一通道也可以描述为:各第二目标写内存模组与第一目标写内存模组连接在同一数据总线上和连接在同一地址总线上。
对于该种实现方式,在图1所示的内存系统中,因为接收某一数据写入指令的内存控制器为任一内存控制器,每个内存控制器外设置有一条通道,所以内存控制器确定的至少两个内存模组肯定是位于同一通道;在图2所示的内存系统中,内存控制器在根据内存控制器根据写线性地址,确定第一目标写内存模组后,确定的至少一个第二目标写内存模组需要与第一目标写内存模组位于同一通道,比如确定第一目标写内存模组为内存模组1-1,至少一个第二目标写内存模组可为内存模组1-2、内存模组1-3、内存模组1-4中的任意一个或多个。
其中,内存控制器根据写线性地址,确定第一目标写内存模组的方法可以参照现有技术中的方法,本实施例不再赘述。
另一种可能实现的方式为:内存控制器获取与第一数据对应的写线性地址,写线性地址包括在上述的数据写入指令中;内存控制器根据写线性地址,确定位于同一通道上的至少两个目标写内存模组。
对于该种实现方式,在图2所示的内存系统中,内存控制器根据写线性地址,确定至少两个目标写内存模组的方法可以为:内存控制器根据第一线性地选择通道0或1,若选择了通道0,在确定两个目标写内存模组时,在写线性地址中任意选择两个数字,比如选择两个数字为0,2,那么内存模组0-0和内存模组0-2即为两个目标写内存模组,当然在该种情况下,任意选择的两个数字必须在0~3之间。在图1所示的内存系统中,若接收某一数据写入指令的内存控制器对应的通道为0,在确定两个目标写内存模组时,可在写线性地址中任意选择两个数字,比如选择两个数字为0,2,那么内存模组0-0和内存模组0-2即为两个目标写内存模组,当然在该种情况下,任意选择的两个数字也必须在0~3之间。
内存控制器在各目标写内存模组确定之后,内存控制器控制各目标写内存模组中包括的芯片的片选端的输入信号为有效电平信号,当芯片的片选端的输入信号为有效电平信号时,说明该芯片为目标芯片,数据便会被写入目标芯片中。具体地,芯片外围包括片选端、地址线引脚、数据线引脚等,一般情况下,当片选端输入的信号为低电平信号时,说明片选端的输入信号为有效电平信号,该芯片为目标芯片。一个内存模组中包括的芯片共用同一个片选信号,也就是一个内存模组中包括的芯片的片选端输入的信号相同,这是由数据写入内存的方式决定的。其中,数据写入内存的方式为:当将处理器一个传输周期内传输的64位数据(相当于数据总线的位宽)写入内存中时,若内存模组中具有8个16K×8位的芯片,那么该内存模组的每个芯片中被写入8位数据。
本领域技术人员可以理解的是,若位于同一通道上的多个内存模组中包括的芯片的片选端的输入信号均为有效电平信号,则待写入的数据会被同时写入上述多个内存模组中。
接着内存控制器通过目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中,具体包括:内存控制器根据写线性地址,确定第一数据的写物理地址;内存控制器根据写物理地址,通过目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中。其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。
具体地,内存控制器根据写线性地址和写物理地址的映射关系,得到写物理地址,写物理地址包括行地址和列地址,比如内存控制器根据写线性地址确定的写物理地址为第2行第3列,则第一数据被写入各目标写内存模组各自包括的芯片的第2行第3列对应的存储单元中。
举例来说,当将处理器一个传输周期内传输的64位数据写入内存中时,若内存模组中具有8个16K×8位的芯片,该内存模组的每个芯片中被写入8位数据,而每个芯片由8个存储体组成,每个存储体的第2行第3列对应的存储单元中被写入1位数据。
由于各目标写内存模组均连接在同一数据总线和地址总线上,而且是同时被写入的,所以不会降低带宽的利用率,在实现了数据镜像内存的基础上,保证了带宽的利用率。
本领域技术人员应当明白,本实施例中所指的第一数据可为处理器一个传输周期内传输的数据。举例来说,若处理器一个传输周期内可传输的数据为64位,待写入的数据大于64位,比如为128位,则该待写入的数据分两次存储至各目标写内存模组中;先是64位的数据(第一数据)经处理器发送至内存控制器,内存控制器确定好至少两个目标写内存模组及物理地址后,将该64位的数据写入各目标写内存模组各自包括的芯片的第2行第3列(以此为例)的存储单元内,接着剩余的64位数据(第一数据)经处理器、内存控制器后写入各目标写内存模组中包括的芯片的第2行第4列的存储单元内。
本实施例的内存镜像的处理方法包括:内存控制器获取数据写入指令,数据写入指令中包括待写入的第一数据;内存控制器在内存中确定位于同一通道上的至少两个目标写内存模组,并控制各目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道;内存控制器通过确定的目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中;其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。本实施例的内存镜像的处理方法在实现了数据镜像内存的基础上,保证了带宽的利用率。
为了保证后续的数据读取过程所读取的数据为正确的数据,本实施例在上一实施例的基础了作了进一步的改进。图5为本发明提供的内存镜像的处理方法实施例二的流程图,如图5所示,本实施例的方法可以包括:
步骤S201、内存控制器获取数据写入指令,数据写入指令中包括待写入的第一数据;
步骤S202、内存控制器在内存中确定位于同一通道上的至少两个目标写内存模组,并控制各目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道;
步骤S203、内存控制器根据写线性地址,确定第一数据的写物理地址,并根据第一数据,得到第一数据对应的第一校验数据;
步骤S204、内存控制器根据写物理地址,通过目标写内存模组所在的通道将第一数据和第一校验数据写入各目标写内存模组各自包括的芯片中;其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。
具体地,对于步骤S201~步骤S202与上一实施例相同,本实施例不再赘述。本实施例中第一数据的意义与上一实施例相同。
对于步骤S203、内存控制器根据写线性地址,确定第一数据的写物理地址的方法与上一实施例相同,本实施例不再赘述。对于内存控制器根据第一数据,得到第一数据对应的第一校验数据,可采用错误检查和纠正(Error Checking and Correcting,简称ECC)校验方法或者奇偶位校验方法,还可以采用其它的方法,本实施例不作限定。本领域技术人员应该明白,针对每个第一数据都会生成相应的第一校验数据。比如上一实施例中的举例:处理器一个传输周期内可传输的数据为64位,若待写入的数据大于64位,比如为128位,则该待写入的数据分两次存储至目标写内存模组中,也就是该待写入的数据具有两个第一数据。先被写入的64位的第一数据会对应产生一个第一校验数据,后被写入的64位的第一数据也会对应产生一个第一校验数据。
对于步骤S204,内存控制器根据写物理地址,通过目标写内存模组所在的通道将第一数据和第一校验数据写入各目标写内存模组各自包括的芯片中。
下面以ECC校验方法得到的第一校验数据的存储过程为例,说明内存控制器根据写物理地址,通过目标写内存模组所在的通道将第一数据和第一校验数据写入各目标写内存模组各自包括的芯片中的过程。
采用ECC校验方法得到的第一校验数据为8位字长的校验数据,则内存中的内存模组需要增加一个8位的芯片,比如:若在处理器数据总线的位宽为64位,组成内存模组的芯片为16K×8位,每个内存模组需要包括8个16K×8位的芯片的情况下,此时为了存储校验位,需要增加一个芯片,也就是每个内存模组包括9个16K×8位的芯片,其中一个芯片用来存储8位字长的校验数据。
若内存控制器确定第一数据存储至各目标写内存模组对应的芯片中写物理地址为第2行第3列的存储单元内,那么校验数据也被存储至各目标写内存模组对应芯片中写物理地址为第2行第3列的存储单元内。
本实施例的内存镜像的处理方法,通过将校验数据写入内存的方法,可以保证后续的数据读取过程所读取的数据为正确的数据。
图6为本发明提供的内存镜像的处理方法实施例三的流程图,如图6所示,本实施例的方法可针对采用图3或图5对应的实施例的数据写入方法写入的数据的读取过程,本实施例的方法可以包括:
步骤S301、内存控制器接收数据读取设备发送的数据读取指令,数据读取指令中包括读线性地址;
步骤S302、内存控制器根据读线性地址,确定待读取的第二数据的读物理地址和第二数据对应的各目标读内存模组,若读线性地址和写线性地址相同,则第二数据与第一数据相对应;
步骤S303、内存控制器根据读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;第一目标读内存模组和第二目标读内存模组为任意两个目标读内存模组;
步骤S304、内存控制器判断两次读取的第二数据是否相同,若是,则向数据读取设备发送第二数据。
本实施例的数据读取过程,若在数据写入过程中没有写入校验数据,需要读取多个内存模组内存储的数据,比较从多个内存模组内读出的数据是否相同,来判断读取的数据是否为正确的数据或者说读取的数据是否为待读出的数据。
具体地,内存控制器接收数据读取设备发送的数据读取指令,数据读取指令中包括读线性地址。其中,数据读取设备可为处理器或者外部其它的设备,数据读取指令中包括待读取的数据的线性地址,用于指示待读取的数据存储的具体位置。
内存控制器接收到数据读取指令后,根据数据读取指令中包括的读线性地址确定待读取的第二数据的读物理地址和第二数据对应的各目标读内存模组。其中,各目标读内存模组为待读取的第二数据被写入的模组,若被写入的待读取的第二数据在内存中没有发生变化,每个目标读内存模组内存储的待读取的第二数据是相同的。
本领域技术人员应当明白,此处根据读线性地址确定第二数据对应的各目标读内存模组的方法与图3对应的实施例中根据写线性地址确定第一数据对应的各目标写内存模组的方法相同,根据读线性地址确定第二数据的读物理地址的方法与图3对应的实施例中根据写线性地址确定第一数据的写物理地址的方法相同。也就是说对于同一个内存系统,数据读取时所遵循的规则是与数据写入时所遵循的规则相对应的。因此,若读线性地址和写线性地址相同,则第二数据与第一数据相对应。
内存控制器在确定好存储第二数据的各目标读内存模组及读物理地址后,根据读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;其中,第一目标读内存模组和第二目标读内存模组为任意两个目标读内存模组。
比如,读物理地址为第3行第4列,第一目标读内存模组和第二目标读内存模组为图1中的内存模组0-2和内存模组0-3,则分别从内存模组0-2和内存模组0-3中包括的芯片的第3行第4列的存储单元中读取数据。
内存控制器分别从第一目标读内存模组和第二目标读内存模组中读取数据后,判断两次读取的第二数据是否相同,若是,向数据读取设备发送第二数据。其中,判断两次读取的第二数据是否相同的方法可采用现有技术中的方法,本实施例不作限定。
若从第一目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据相同,说明了从第一目标读内存模组读出的第二数据或从第二目标读内存模组读出的第二数据就是想要读出的数据,原先被写入的数据没有丢失或者被篡改,则可以向数据读取设备发送从第一目标读内存模组读取的第二数据或从第二目标读内存模组读取的第二数据。
若从第一目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据不相同,说明了第一目标读内存模组读出的第二数据和/或从第二目标读内存模组读出的第二数据不是想要读出的数据,原先被写入的数据丢失或者被篡改;若目标读内存模组只有两个,在确定两次读取的第二数据不相同后,需要向数据读取设备发送数据错误报告,若目标读内存模组的个数大于两个,则可以采用如下的方法进行操作。
下面以目标读内存模组的个数为3个,3个目标读内存模组分别为:第一目标读内存模组、第二目标读内存模组和第三目标读内存模组,来说明在上述从第一目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据不相同的情况下的后续操作。
从第三目标读内存模组中包括的芯片的读物理地址处的存储单元读取第二数据,依次判断从第三目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据是否相同,从第三目标读内存模组读出的第二数据与从第一目标读内存模组读出的第二数据是否相同;若从第三目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据相同,则说明从第三目标读内存模组读出的第二数据或从第二目标读内存模组读出的第二数据就是想要读出的数据,向数据读取设备发送从第三目标读内存模组读出的第二数据或从第二目标读内存模组读出的第二数据;若从第三目标读内存模组读出的第二数据与从第一目标读内存模组读出的第二数据相同,则说明从第三目标读内存模组读出的第二数据或从第一目标读内存模组读出的第二数据就是想要读出的数据,向数据读取设备发送从第三目标读内存模组读出的第二数据或从第一目标读内存模组读出的第二数据;若从第三目标读内存模组读出的第二数据与从第二目标读内存模组读出的第二数据不相同,且从第三目标读内存模组读出的第二数据与从第一目标读内存模组读出的第二数据不相同,则向数据读取设备发送数据错误报告。
本领域技术人员可以理解的是,若数据是一次写入64位,那么数据读取过程也是一次读取64位,也就是此时第二数据为64位字长的数据,每次读取的第二数据均按照相同的读取方法读取,直至所需要字长的数据读取完毕。
本实施例的内存镜像的处理方法,通过从多个被写入相同数据的内存模组中读取数据来确定判断的数据是否正确,保证了读取的数据为正确的数据。
图7为本发明提供的内存镜像的处理方法实施例四的流程图,如图7所示,本实施例的方法是针对采用图5对应的实施例的数据写入方法写入的数据的读取过程,本实施例的方法可以包括:
步骤S401、内存控制器接收数据读取设备发送的数据读取指令,数据读取指令中包括读线性地址;
步骤S402、内存控制器根据读线性地址,确定待读取的第二数据的读物理地址和第二数据对应的各目标读内存模组,若读线性地址和写线性地址相同,则从第一目标读内存模组读取的第二数据与第一数据相对应;
步骤S403、内存控制器根据读物理地址,从第一目标读内存模组中读取第二数据和第二校验数据;第一目标读内存模组为任意一个目标读内存模组;
步骤S404、内存控制器根据从第一目标读内存模组读取的第二数据,得到第三校验数据;
步骤S405、内存控制器根据第二校验数据和第三校验数据判断从第一目标读内存模组读取的第二数据是否正确,若是,则向数据读取设备发送从第一目标读内存模组读取的第二数据。
本实施例的数据读取过程,由于在数据写入过程中写入了校验数据,所以可每次只读取一个内存模组内存储的数据,通过校验数据确定从该内存模组内读出的数据是否正确,或者说判断读取的数据是否为待读出的数据。当然,也可以采用上一实施例的数据读取过程。
具体地,内存控制器接收数据读取设备发送的数据读取指令,数据读取指令中包括读线性地址。其中,数据读取设备可为处理器或者外部其它的设备,数据读取指令中包括待读取的数据的线性地址,用于指示待读取的数据存储的具体位置。
内存控制器接收到数据读取指令后,根据数据读取指令中包括的读线性地址确定待读取的第二数据的读物理地址和第二数据对应的各目标读内存模组。其中,各目标读内存模组为待读取的第二数据被写入的模组,若被写入的待读取的第二数据在内存中没有发生变化,每个目标读内存模组内存储的待读取的第二数据是相同的。
本领域技术人员应当明白,此处根据读线性地址确定第二数据对应的各目标读内存模组的方法与图5对应的实施例中根据写线性地址确定第一数据对应的各目标写内存模组的方法相同,根据读线性地址确定第二数据的读物理地址的方法与图5对应的实施例中根据写线性地址确定第一数据的写物理地址的方法相同,也就是说对于同一个内存系统,数据读取时所遵循的规则是与数据写入时所遵循的规则相对应的。此外,读线性地址和写线性地址可相同,若读线性地址和写线性地址相同,则第二数据与第一数据相对应。
内存控制器在确定好存储第二数据的各目标读内存模组及读物理地址后,根据读物理地址,从第一目标读内存模组中读取第二数据和第二校验数据;第一目标读内存模组为任意一个目标读内存模组。其中,第二校验码是在数据的写入过程中根据写入第一目标读内存模组中读物理地址处的数据的生成的。
比如,读物理地址为第3行第4列,第一目标读内存模组为图1中的内存模组0-2,则从内存模组0-2中包括的芯片的第3行第4列的存储单元中读取数据。
接着内存控制器根据从第一目标读内存模组中读取第二数据,重新生成校验码,称为第三校验码,其中,第三校验码的生成方法与第二校验码的生成方法相同。
根据第二校验码和第三校验码判断从第一目标读内存模组中读取的第二数据是否正确,若是,则向数据读取设备发送第二数据。
具体地,若校验码的生成方法为ECC校验方法,则对第二校验码和第三校验码进行异或操作,根据异或操作的结果判断从第一目标读内存模组中读取的第二数据是否正确。若校验码的生成方法为奇偶位校验方法,则直接判断第二校验码和第三校验码是否相同,若相同,则确定从第一目标读内存模组中读取的第二数据正确。
若根据第二校验码和第三校验码判断的从第一目标读内存模组中读取的第二数据不正确,且校验码的生成方法为ECC校验方法,由于ECC校验方法是可以纠正一位错的,因此可进行如下操作:根据第二校验数据和第三校验数据,判断第一目标读内存模组中读取的第二数据是否可被纠正,若是,则对第一目标读内存模组中读取的第二数据进行纠正,向数据读取设备发送纠正后的第一目标读内存模组中读取的第二数据;若否,从第二目标读内存模组中读取第二数据和第二校验数据;第二目标读内存模组为任意一个目标读内存模组,第二目标读内存模组与第一目标读内存模组不同;根据从第二目标读内存模组中读取第二数据,得到第四校验数据;根据第二校验数据和第四校验数据判断从第二目标读内存模组读出的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组读出的第二数据;若从第二目标读内存模组读出的第二数据不正确,重复上述相同的操作,直至从第N目标读内存模组读出的第二数据正确或可纠正或者各目标读内存模组均被读取。
若根据第二校验码和第三校验码判断的从第一目标读内存模组中读取的第二数据不正确,且校验码的生成方法不为ECC校验方法,则直接进行如下操作:从第二目标读内存模组中读取第二数据和第二校验数据;第二目标读内存模组为任意一个目标读内存模组,第二目标读内存模组与第一目标读内存模组不同;根据从第二目标读内存模组中读取第二数据,得到第四校验数据;根据第二校验数据和第四校验数据判断从第二目标读内存模组读出的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组读取的第二数据;若从第二目标读内存模组读出的第二数据不正确,重复上述相同的操作,直至从第N目标读内存模组读出的第二数据正确或者各目标读内存模组均被读取。
本领域技术人员可以理解的是,若数据是一次写入64位,那么数据读取过程也是一次读取64位,也就是此时第二数据为64位字长的数据,每次读取的第二数据均按照相同的读取方法读取,直至所需要字长的数据读取完毕。
图8为本发明提供的内存控制器实施例一的结构示意图,如图8所示,本实施例的装置可以包括:接收模块81、目标内存模组确定模块82和数据写入模块83,其中,接收模块81用于获取数据写入指令,数据写入指令中包括待写入的第一数据;目标内存模组确定模块82用于在内存中确定位于同一通道上的至少两个目标写内存模组,并控制各目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,通道为数据总线和地址总线确定的通道;数据写入模块83用于通过目标写内存模组所在的通道将第一数据写入各目标写内存模组各自包括的芯片中;其中,在各目标写内存模组中,其中一个目标写内存模组内写入的第一数据为主数据,剩余的各目标写内存模组内写入的第一数据为镜像数据。
其中,目标内存模组确定模块82具体用于获取与第一数据对应的写线性地址;根据写线性地址,确定第一目标写内存模组;在内存的剩余内存模组中确定与第一目标写内存模组位于同一通道上的至少一个第二目标写内存模组;根据第一目标写内存模组和第二目标写内存模组,确定至少两个目标写内存模组。
数据写入模块83具体用于根据写线性地址,确定第一数据的写物理地址;根据第一数据,得到第一数据对应的第一校验数据;根据写物理地址,通过目标写内存模组所在的通道将第一数据和第一校验数据写入各目标写内存模组各自包括的芯片中。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9为本发明提供的内存控制器实施例二的结构示意图,如图9所示,本实施例的装置在图8所示的实施例的基础上,还可以包括:数据读取模块84、校验数据生成模块85和数据判断模块86。
其中,接收模块81还用于接收读取设备发送的数据读取指令,数据读取指令中包括读线性地址。
目标内存模组确定模块82还用于根据读线性地址,确定待读取的第二数据的读物理地址和第二数据对应的各目标读内存模组。
若数据写入过程,写入了校验数据,数据读取模块84用于根据读物理地址,从第一目标读内存模组中读取第二数据和第二校验数据;第一目标读内存模组为任意一个目标读内存模组;校验数据生成模块85用于根据从第一目标读内存模组读取的第二数据,得到第三校验数据;数据判断模块86用于根据第二校验数据和第三校验数据判断第二数据是否正确,若是,则向数据读取设备发送从第一目标读内存模组读取的第二数据。
若从第一目标读内存模组读取的第二数据错误,数据判断模块86还用于根据第二校验数据和第三校验数据,判断从第一目标读内存模组读取的第二数据是否可被纠正,若是,则对从第一目标读内存模组读取的第二数据进行纠正,向数据读取设备发送纠正后的从第一目标读内存模组读取的第二数据。
若从第一目标读内存模组读取的第二数据错误,且从第一目标读内存模组读取的第二数据不可被纠正,数据读取模块84还用于从第二目标读内存模组中读取第二数据和第二校验数据;第二目标读内存模组为任意一个目标读内存模组,第二目标读内存模组与第一目标读内存模组不同;校验数据生成模块85还用于根据从第二目标读内存模组读取的第二数据,得到第四校验数据;数据判断模块86还用于内存控制器根据第二校验数据和第四校验数据判断从第二目标读内存模组读取的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组读取的第二数据。
若数据写入过程,没有写入校验数据,则数据读取模块84还用于根据读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;第一目标读内存模组和第二目标读内存模组为任意两个目标读内存模组;数据判断模块86还用于判断两次读取的第二数据是否相同,若是,则向数据读取设备发送第二数据。
本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图10为本发明提供的用户设备的结构示意图,如图10所示,本实施例的用户设备包括:内存控制器91,其中,内存控制器91可以采用图8或图9对应的实施例的结构,内存控制器91可以集成在用户设备92内部的控制芯片93上,控制芯片93可为处理器。
其中,用户设备包括但不限于手机、电脑、平板等设备。
其对应地,可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种内存镜像的处理方法,其特征在于,应用于内存控制器,所述内存控制器控制的内存包括至少两个内存模组,每个所述内存模组包括至少一个芯片;所述方法包括:
所述内存控制器获取数据写入指令,所述数据写入指令中包括待写入的第一数据,以及所述第一数据对应的写线性地址;
所述内存控制器根据所述写线性地址,确定第一目标写内存模组;
所述内存控制器在所述内存的剩余内存模组中确定与所述第一目标写内存模组位于同一通道上的至少一个第二目标写内存模组,所述第二目标写内存模组为与上述第一目标写内存模组位于同一通道上的任意写内存模组;
所述内存控制器根据所述第一目标写内存模组和所述第二目标写内存模组,确定至少两个目标写内存模组,并控制各所述目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,所述至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,所述通道为所述数据总线和所述地址总线确定的通道;
所述内存控制器通过所述通道将所述第一数据写入各所述目标写内存模组各自包括的芯片中;其中,在各所述目标写内存模组中,其中一个所述目标写内存模组内写入的第一数据为主数据,剩余的各所述目标写内存模组内写入的第一数据为镜像数据。
2.根据权利要求1所述的方法,其特征在于,所述内存控制器将所述第一数据写入各所述目标写内存模组各自包括的芯片中,包括:
所述内存控制器根据所述写线性地址,确定所述第一数据的写物理地址;
所述内存控制器根据所述第一数据,得到所述第一数据对应的第一校验数据;
所述内存控制器根据所述写物理地址,通过所述通道将所述第一数据和所述第一校验数据写入各所述目标写内存模组各自包括的芯片中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述内存控制器接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述内存控制器根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述内存控制器根据所述读物理地址,从第一目标读内存模组读取第二数据和第二校验数据;所述第一目标读内存模组为任意一个目标读内存模组;
所述内存控制器根据从第一目标读内存模组读取的第二数据,得到第三校验数据;
所述内存控制器根据所述第二校验数据和第三校验数据判断从第一目标读内存模组读取的第二数据是否正确,若是,则向所述数据读取设备发送从第一目标读内存模组读取的第二数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若从第一目标读内存模组中读取的第二数据错误,所述内存控制器根据所述第二校验数据和第三校验数据,判断从第一目标读内存模组读取的第二数据是否可被纠正,若是,则对从第一目标读内存模组读取的第二数据进行纠正,向所述数据读取设备发送纠正后的从第一目标读内存模组读取的第二数据;
或者,
若从第一目标读内存模组中读取的第二数据错误,所述内存控制器从第二目标读内存模组中读取第二数据和第二校验数据;所述第二目标读内存模组为任意一个所述目标读内存模组,所述第二目标读内存模组与所述第一目标读内存模组不同;
所述内存控制器根据从第二目标读内存模组中读取的第二数据,得到第四校验数据;
所述内存控制器根据所述第二校验数据和第四校验数据判断从第二目标读内存模组中读取的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组中读取的第二数据。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述内存控制器接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述内存控制器根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述内存控制器根据所述读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;所述第一目标读内存模组和第二目标读内存模组为任意两个所述目标读内存模组;
所述内存控制器判断两次读取的第二数据是否相同,若是,则向数据读取设备发送所述第二数据。
6.一种内存控制器,其特征在于,所述内存控制器控制的内存包括至少两个内存模组,每个所述内存模组包括至少一个芯片;所述内存控制器包括:
接收模块,用于获取数据写入指令,所述数据写入指令中包括待写入的第一数据,以及所述第一数据对应的写线性地址;
目标内存模组确定模块,用于在所述内存中确定位于同一通道上的至少两个目标写内存模组,并控制各所述目标写内存模组各自包括的芯片的片选端的输入信号为有效电平信号;其中,所述至少两个目标写内存模组连接在同一数据总线上以及连接在同一地址总线上,所述通道为所述数据总线和所述地址总线确定的通道;
数据写入模块,用于通过所述通道将所述第一数据写入各所述目标写内存模组各自包括的芯片中;其中,在各所述目标写内存模组中,其中一个所述目标写内存模组内写入的第一数据为主数据,剩余的各所述目标写内存模组内写入的第一数据为镜像数据;
所述目标内存模组确定模块具体用于,根据所述写线性地址,确定第一目标写内存模组;
在所述内存的剩余内存模组中确定与所述第一目标写内存模组位于同一通道上的至少一个第二目标写内存模组,所述第二目标写内存模组为与上述第一目标写内存模组位于同一通道上的任意写内存模组;
根据所述第一目标写内存模组和所述第二目标写内存模组,确定至少两个目标写内存模组。
7.根据权利要求6所述的内存控制器,其特征在于,所述数据写入模块具体用于:
根据所述写线性地址,确定所述第一数据的写物理地址;
根据所述第一数据,得到所述第一数据对应的第一校验数据;
根据所述写物理地址,通过所述通道将所述第一数据和所述第一校验数据写入各所述目标写内存模组各自包括的芯片中。
8.根据权利要求7所述的内存控制器,其特征在于,所述内存控制器还包括数据读取模块、校验 数据生成模块和判断模块;
所述接收模块还用于,接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述目标内存模组确定模块还用于,根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述数据读取模块,用于根据所述读物理地址,从第一目标读内存模组读取第二数据和第二校验数据;所述第一目标读内存模组为任意一个目标读内存模组;
所述校验 数据生成模块,用于根据从第一目标读内存模组读取的第二数据,得到第三校验数据;
所述判断模块,用于根据所述第二校验数据和第三校验数据判断从第一目标读内存模组读取的第二数据是否正确,若是,则向所述数据读取设备发送从第一目标读内存模组读取的第二数据;
若从第一目标读内存模组中读取的第二数据错误,所述判断模块还用于,根据所述第二校验数据和第三校验数据,判断从第一目标读内存模组读取的第二数据是否可被纠正,若是,则对从第一目标读内存模组读取的第二数据进行纠正,向所述数据读取设备发送纠正后的从第一目标读内存模组读取的第二数据;或者,若从第一目标读内存模组中读取的第二数据错误,所述数据读取模块还用于,从第二目标读内存模组中读取第二数据和第二校验数据;所述第二目标读内存模组为任意一个所述目标读内存模组,所述第二目标读内存模组与所述第一目标读内存模组不同;
所述校验数据生成模块还用于,根据从第二目标读内存模组中读取的第二数据,得到第四校验数据;
所述判断模块还用于,根据所述第二校验数据和第四校验数据判断从第二目标读内存模组中读取的第二数据是否正确,若是,则向数据读取设备发送从第二目标读内存模组中读取的第二数据。
9.根据权利要求6或7所述的内存控制器,其特征在于,所述内存控制器还包括数据读取模块和判断模块;
所述接收模块还用于,接收数据读取设备发送的数据读取指令,所述数据读取指令中包括读线性地址;
所述目标内存模组确定模块还用于,根据所述读线性地址,确定待读取的第二数据的读物理地址和所述第二数据对应的各目标读内存模组,若所述读线性地址和所述写线性地址相同,则所述第二数据与所述第一数据相对应;
所述数据读取模块还用于,根据所述读物理地址,分别从第一目标读内存模组中读取第二数据,从第二目标读内存模组中读取第二数据;所述第一目标读内存模组和第二目标读内存模组为任意两个所述目标读内存模组;
所述判断模块用于,判断两次读取的第二数据是否相同,若是,则向数据读取设备发送所述第二数据。
10.一种用户设备,其特征在于,包括权利要求6-9任一项所述的内存控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710210810.3A CN108664362B (zh) | 2017-03-31 | 2017-03-31 | 内存镜像的处理方法、内存控制器及用户设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710210810.3A CN108664362B (zh) | 2017-03-31 | 2017-03-31 | 内存镜像的处理方法、内存控制器及用户设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664362A CN108664362A (zh) | 2018-10-16 |
CN108664362B true CN108664362B (zh) | 2021-06-15 |
Family
ID=63784550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710210810.3A Active CN108664362B (zh) | 2017-03-31 | 2017-03-31 | 内存镜像的处理方法、内存控制器及用户设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664362B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021142851A1 (zh) * | 2020-01-19 | 2021-07-22 | 华为技术有限公司 | 一种片上系统及数据校验方法 |
CN112540732B (zh) * | 2020-12-23 | 2022-11-11 | 展讯半导体(成都)有限公司 | 数据处理方法及相关产品 |
WO2023208231A1 (zh) * | 2022-04-29 | 2023-11-02 | 华为技术有限公司 | 一种内存数据读写方法、系统以及内存控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876925A (zh) * | 2009-11-27 | 2010-11-03 | 成都市华为赛门铁克科技有限公司 | 内存镜像处理方法、装置和系统 |
CN102708021A (zh) * | 2010-11-09 | 2012-10-03 | 国际商业机器公司 | 镜像数据存储系统中的增强错误检测 |
CN103019883A (zh) * | 2012-12-31 | 2013-04-03 | 华为技术有限公司 | 一种内存纠错方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436563B2 (en) * | 2013-10-01 | 2016-09-06 | Globalfoundries Inc. | Memory system for mirroring data |
CN103827834B (zh) * | 2013-11-22 | 2015-09-30 | 华为技术有限公司 | 一种内存数据的迁移方法、计算机和装置 |
US9798628B2 (en) * | 2014-04-25 | 2017-10-24 | Rambus Inc. | Memory mirroring |
US9626108B2 (en) * | 2014-09-16 | 2017-04-18 | Kove Ip, Llc | Dynamically provisionable and allocatable external memory |
CN104268035A (zh) * | 2014-10-10 | 2015-01-07 | 深圳雷柏科技股份有限公司 | 一种存储数据的恢复方法 |
-
2017
- 2017-03-31 CN CN201710210810.3A patent/CN108664362B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876925A (zh) * | 2009-11-27 | 2010-11-03 | 成都市华为赛门铁克科技有限公司 | 内存镜像处理方法、装置和系统 |
CN102708021A (zh) * | 2010-11-09 | 2012-10-03 | 国际商业机器公司 | 镜像数据存储系统中的增强错误检测 |
CN103019883A (zh) * | 2012-12-31 | 2013-04-03 | 华为技术有限公司 | 一种内存纠错方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108664362A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10803971B2 (en) | Device for supporting error correction code and test method thereof | |
US20080082872A1 (en) | Memory controller, memory system, and data transfer method | |
KR20170076106A (ko) | 제어회로 및 제어회로를 포함하는 메모리 장치 | |
CN108664362B (zh) | 内存镜像的处理方法、内存控制器及用户设备 | |
KR20190086936A (ko) | 메모리 장치 | |
US10186302B2 (en) | Semiconductor systems performing double-write operations and methods of operating the same | |
US7075851B2 (en) | Semiconductor memory device inputting/outputting data and parity data in burst operation | |
CN115705265A (zh) | 存储器设备及其操作方法 | |
KR20200052842A (ko) | 메모리 시스템, 메모리 모듈 및 메모리 시스템의 동작 방법 | |
EP3179727A1 (en) | Video server device and writing/reading data method | |
US10379926B2 (en) | Method and device for monitoring data error status in a memory | |
US10671479B2 (en) | High performance memory controller | |
CN116072207A (zh) | 故障寻址电路及存储器 | |
US9361180B2 (en) | Storing data by an ECC memory | |
CN106158031B (zh) | 半导体存储器以及数据写入方法 | |
KR20200018156A (ko) | 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법 | |
US9104596B2 (en) | Memory system | |
CN110058955B (zh) | 具有错误纠正功能的内存和相关内存系统 | |
US10867663B2 (en) | Control method for memory and non-transitory computer-readable media | |
KR20220086839A (ko) | Otp 메모리의 프로그래밍 제어 시스템 및 방법 | |
CN103365737B (zh) | 数据读写方法、读写装置及数据存储系统 | |
CN113808642B (zh) | 数据存取系统和操作数据存取系统的方法 | |
US20230385147A1 (en) | Memory control circuit, memory, and memory module | |
CN112486416B (zh) | 数据处理方法、装置、存储介质及处理器 | |
CN112466380B (zh) | 存储器及其存储方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |