内存备份过程中的系统命令的处理方法和装置的制作方法

文档序号:6359014阅读:175来源:国知局
专利名称:内存备份过程中的系统命令的处理方法和装置的制作方法
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种内存备份过程中的系统命令的处理方法和装置。
背景技术
容错计算机一般都带有ECC(Error Correction Code,错误纠正码)错误检查和纠正功能,内存备份是容错计算机的一种重要的可靠性特性。上述内存备份是指当一个内存区域(一般以Rank或DIMM为单位)中出现可纠正错误超过一定阈值后,则认为该内存区域不可靠,极有可能被损坏,导致内存区域中存储的数据丢失。于是,内存控制器上报上述出错的内存区域给操作系统,操作系统根据上述出错的内存区域的大小,寻找适当的备份内存区域,通知内存控制器启动内存备份操作,由内存控制器将上述出错的内存区域中存储的数据搬移到备份内存区域,从而避免不可靠的内存带来的风险。上述内存备份操作由内存控制器中的备份引擎模块来完成,具体处理过程如下当一个内存区域中出现可纠正错误超过一定阈值后时,内存控制器便启动备份操作。备份引擎模块首先设置备份引擎的读地址为错误内存区域的首地址,发起读命令,从上述错误内存区域中读取数据。备份引擎模块往往连续发起多个读命令,连续从上述错误内存区域中读取的数据。内存控制器接收到从上述错误内存区域中读取的数据后,使用ECC 对数据进行错误纠正,发起写命令,将纠正后的数据写入到备份内存空间。如果上述错误内存区域中的数据没有全部被搬移,则增加读地址,继续读取后续数据,重复前面的操作,直至内存备份操作结束。在上述内存备份操作中,操作系统可能发起对上述错误内存区域的读写操作命令,当该命令的地址小于上述备份引擎模块已经读取的数据的最大地址,并且大于上述备份引擎模块已经写入的数据的最大地址,则直接阻塞该读写操作命令。在实现本发明过程中,发明人发现上述现有技术中至少存在如下问题在目前的技术方案中,对有冲突的系统命令直接进行了阻塞,这将影响系统读写操作的性能。

发明内容
本发明的实施例提供了一种内存备份过程中的系统命令的处理方法和装置,以实现在内存备份操作过程中对系统命令不阻塞,使系统命令得到及时处理。一种内存备份过程中的系统命令的处理方法,包括获取写操作命令对应的写入地址;如果所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据;将所述写入地址减去设定数值得到后续从所述原始内存区域中读取数据的起始地址。
一种内存备份过程中的系统命令的控制器,包括地址比较模块,用于获取写操作命令对应的写入地址,确定所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中;数据处理模块,用于将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。由上述的技术方案可以看出,本发明实施例中将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据,以解决内存备份操作过程中对系统命令阻塞的问题,使写操作命令得到及时处理,并且保证了写操作命令与内存备份地址冲突时的数据一致性问题,提升了内存备份操作时的系统性能。


图1为本发明实施例一提供的一种内存备份过程中的系统命令的处理方法的流程图;图2为本发明实施例二提供的一种内存备份过程中的系统命令的处理方法的流程图;图3为本发明实施例二提供的一种备份引擎模块按照数据的地址从小到大的顺序进行数据读取和写入的操作的示意图;图4为本发明实施例二提供的一种备份引擎模块在DDR(Dual data rate,双倍数据率)内存控制器的位置示意图;图5为本发明实施例三提供的一种内存备份过程中的系统命令的处理装置的具体结构图。
具体实施例方式实施例一该实施例提供的一种内存备份过程中的系统命令的处理方法的处理流程如图1 所示,包括如下的处理步骤步骤11、获取写操作命令对应的写入地址,确定所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中。在内存备份过程中,备份引擎模块根据其发起的备份读命令,按照数据的地址从小到大的顺序从原始内存区域中依次读取数据,所述备份引擎模块将读取的数据进行错误纠正后,再将数据进行缓存。然后,所述备份引擎模块根据其发起的备份写命令,按照数据的地址从小到大的顺序依次将读取的数据依次写入到备份内存区域中。获取所述备份引擎模块已经从原始内存区域中读取的数据的最大地址和所述备份引擎模块已经写入到备份内存区域中的数据的最大地址。由于所述备份引擎模块发起的备份读命令和备份写命令之间存在一定的延时,所述从原始内存区域中读取的数据的最大地址往往要大于所述已经写入到备份内存区域中的数据的最大地址。获取来自操作系统的写操作命令的写入地址,当所述写入地址小于或者等于所述从原始内存区域中读取的数据的最大地址,并且大于所述写入到备份内存区域中的数据的最大地址,则判断所述写入地址对应的数据已经被备份引擎模块从原始内存区域中读取、 但是没有写入到备份内存区域中,即所述写入地址对应的数据正处于缓存中。步骤12、将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。然后,将所述写入地址减去设定数值(比如为1)得到后续从所述原始内存区域中读取数据的起始地址,所述备份引擎模块后续从所述起始地址开始,从所述原始内存区域中读取数据。由上述本发明实施例提供的技术方案可以看出,本发明实施例解决了内存备份操作过程中对系统命令阻塞的问题,使写操作命令得到及时处理,并且保证了写操作命令与内存备份地址冲突时的数据一致性问题,提升了内存备份操作时的系统性能。实施例二该实施例提供的一种内存备份过程中的系统命令的处理方法的处理流程如图2 所示,包括如下的处理步骤步骤21、在容错计算机中,各种系统命令都维持在命令队列中。在命令队列空闲的时候,备份引擎模块将连续的发起备份读命令,从原始内存区域中读取数据,对读取的数据进行错误纠正后,再进行缓存。然后,备份引擎模块将发起备份写命令,将缓存的数据写入到备份内存区域中。该实施例提供的一种备份引擎模块按照数据的地址从小到大的顺序进行数据读取和写入的操作的示意图如图3所示,在图3中,备份引擎模块已经从原始内存区域中读取的数据的最大地址为N+6,已经写入到备份内存区域中的数据的最大地址为N,地址N+1到 N+6对应的数据处于缓存状态。获取系统命令的地址,判断所述系统命令的地址是否属于所述原始内存区域,如果是,则执行步骤23 ;否则,执行步骤22。步骤22、当所述系统命令的地址不属于所述原始内存区域时,则所述系统命令和备份引擎模块的内存备份操作没有冲突,对所述系统命令进行正常的映射和处理操作。步骤23、当所述系统命令的地址属于所述原始内存区域时,判断所述备份引擎模块的内存备份操作是否已经结束,如果是,执行步骤M ;否则;执行步骤25。步骤对、确定所述系统命令的地址对应的数据已经被写入到备份地址区域,于是, 将所述系统命令映射到备份内存区域中,根据所述系统命令在所述备份内存区域中进行相应的数据处理操作。步骤25、判断所述命令的地址是否小于或者等于备份引擎模块已经写入到备份内存区域中的数据的最大地址,比如,依据图3,判断所述命令的地址是否小于或者等于N。如果是,则执行步骤M ;否则执行步骤26。步骤沈、确定所述系统命令的地址对应的数据还没有被写入到备份地址区域,于是,判断所述命令的地址是否大于备份引擎模块已经从原始地址区域中读取的数据的最大地址,比如,依据图3,判断所述命令的地址是否大于N+6。如果是,则执行步骤27 ;否则执行步骤观。步骤27、将所述系统命令映射到原始内存区域中,根据所述系统命令在所述原始内存区域中进行相应的数据处理操作。步骤观、判断所述系统命令的地址对应的数据已经被备份引擎模块从原始内存区域中读取、但是没有写入到备份内存区域中,判断所述系统命令是否是写命令,如果是,执行步骤四;否则,执行步骤27。步骤四、将所述系统命令映射到原始内存区域中,按照所述系统命令的地址在所述原始内存区域中写入数据。将所述系统命令的地址减去设定数值(比如为1)得到所述备份引擎模块下一次从所述原始内存区域中读取数据的起始地址。所述备份引擎模块后续从所述起始地址开始,从所述原始内存区域中读取数据。由上述本发明实施例提供的技术方案可以看出,本发明实施例解决了内存备份操作过程中对系统命令阻塞的问题,使系统命令得到及时处理,并且保证了系统命令与内存备份地址冲突时的数据一致性问题,提升了内存备份操作时的系统性能。采用本发明实施例的技术方案后,当系统命令较少时,备份引擎模块将会连续的发起备份读写操作,加快备份操作速度;当系统命令较多时,由于内存备份操作不会对系统命令进行阻塞,优先保证了系统命令的执行。实施例三在容错计算机中,内存备份操作由内存控制器中的备份引擎模块来完成,该实施例提供的一种备份引擎模块在DDR(Dual data rate,双倍数据率)内存控制器的位置示意图如图4所示,备份引擎模块负责启动和执行备份操作相关的I^e-charge (发布), 八(^1卯(激活),^^切(写)/彻&(1(读)等命令。仲裁模块进行命令仲裁后将命令送入命令队列,命令队列中存储了所有对DDR读写的命令,即包括系统命令、备份读、写命令。命令队列中可以存储较多的命令,一般大于8个,命令队列中的多个命令可以按照DDR读写的时序特性进行性能优化。DDR执行模块接收并执行命令队列输出的命令。ECC模块负责写数据冗余位计算和读数据差错校验。错误统计模块根据ECC模块对写数据冗余位计算和读数据差错校验的结果,对各个内存区域的错误数进行统计,并将错误数发送给备份引擎模块。 备份引擎模块将各个内存区域的错误数和备份操作的阈值进行比较,以确定是否需要启动备份操作。该实施例还提供了一种内存备份过程中的系统命令的控制器,该装置设置在上述备份引擎模块中,其具体结构如图5所示,包括如下的模块地址比较模块51,用于获取写操作命令对应的写入地址,确定所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中;数据处理模块52,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。具体的,所述的地址比较模块51,还用于当备份引擎模块根据接收到的读命令,按照数据的地址从小到大的顺序从所述原始内存区域中依次读取数据,并且根据接收到的写命令,按照数据的地址从小到大的顺序将读取的数据依次写入到备份内存区域中时,获取所述备份引擎模块已经从原始内存区域中读取的数据的最大地址和所述备份引擎模块已经写入到备份内存区域中的数据的最大地址;当所述命令的地址小于或者等于所述从原始内存区域中读取的数据的最大地址,并且大于所述写入到备份内存区域中的数据的最大地址,则判断所述系统命令的地址对应的数据已经被所述备份引擎模块从原始内存区域中读取、但是没有写入到备份内存区域中。具体的,所述的数据处理模块52,还用于当所述写入地址大于所述从原始内存区域中读取的数据的最大地址时,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。具体的,所述的数据处理模块52,还用于当所述写入地址小于或者等于所述写入到备份内存区域中的数据的最大地址时,将所述写操作命令映射到所述备份内存区域,根据所述写操作命令在所述备份内存区域中的所述写入地址上写入数据。具体的,所述的数据处理模块52,还用于获取读操作命令对应的读取地址,将读操作命令映射到所述原始内存区域中,根据所述读操作命令从所述原始内存区域中的所述读取地址中读取数据。应用本发明实施例的装置进行内存备份的具体过程与前述方法实施例类似,此处不再赘述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。综上所述,本发明实施例解决了内存备份操作过程中对系统命令阻塞的问题,使系统命令得到及时处理,并且保证了系统命令与内存备份地址冲突时的数据一致性问题, 提升了内存备份操作时的系统性能。采用本发明实施例的技术方案后,当系统命令较少时,备份引擎模块将会连续的发起备份读写操作,加快备份操作速度;当系统命令较多时,由于内存备份操作不会对系统命令进行阻塞,优先保证了系统命令的执行。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
8
权利要求
1.一种内存备份过程中的系统命令的处理方法,其特征在于,包括获取写操作命令对应的写入地址;如果所述写入地址对应的数据已经从原始内存区域中读取、-但是没有写入到备份内存区域中,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据;将所述写入地址减去设定数值得到后续从所述原始内存区域中读取数据的起始地址。
2.根据权利要求1所述的内存备份过程中的系统命令的处理方法,其特征在于,所述的如果所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中,包括当按照数据的地址从小到大的顺序从所述原始内存区域中依次读取数据,并且按照数据的地址从小到大的顺序将读取的数据依次写入到备份内存区域中时,获取已经从原始内存区域中读取的数据的最大地址和已经写入到备份内存区域中的数据的最大地址;如果所述写入地址小于或者等于所述从原始内存区域中读取的数据的最大地址,并且大于所述写入到备份内存区域中的数据的最大地址,则确定所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中。
3.根据权利要求1或2所述的内存备份过程中的系统命令的处理方法,其特征在于,所述的方法还包括当所述写入地址大于所述从原始内存区域中读取的数据的最大地址时,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。
4.根据权利要求1或2所述的内存备份过程中的系统命令的处理方法,其特征在于,所述的方法还包括当所述写入地址小于或者等于所述写入到备份内存区域中的数据的最大地址时,将所述写操作命令映射到所述备份内存区域,根据所述写操作命令在所述备份内存区域中的所述写入地址上写入数据。
5.根据权利要求1至4任一项所述的内存备份过程中的系统命令的处理方法,其特征在于,所述的方法还包括获取读操作命令对应的读取地址,将读操作命令映射到所述原始内存区域中,根据所述读操作命令从所述原始内存区域中的所述读取地址中读取数据。
6.一种内存备份过程中的系统命令的控制器,其特征在于,包括地址比较模块,用于获取写操作命令对应的写入地址,确定所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中;数据处理模块,用于将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。
7.根据权利要求6所述的内存备份过程中的系统命令的控制器,其特征在于所述的地址比较模块,还用于当备份引擎模块根据其发起的备份读命令,按照数据的地址从小到大的顺序从所述原始内存区域中依次读取数据,并且根据其发起的备份写命令,按照数据的地址从小到大的顺序将读取的数据依次写入到备份内存区域中时,获取所述备份引擎模块已经从原始内存区域中读取的数据的最大地址和所述备份引擎模块已经写入到备份内存区域中的数据的最大地址;当所述命令的地址小于或者等于所述从原始内存区域中读取的数据的最大地址,并且大于所述写入到备份内存区域中的数据的最大地址,则判断所述系统命令的地址对应的数据已经被所述备份引擎模块从原始内存区域中读取、但是没有写入到备份内存区域中。
8.根据权利要求6或7所述的内存备份过程中的系统命令的控制器,其特征在于所述的数据处理模块,还用于当所述写入地址大于所述从原始内存区域中读取的数据的最大地址时,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据。
9.根据权利要求6或7所述的内存备份过程中的系统命令的控制器,其特征在于所述的数据处理模块,还用于当所述写入地址小于或者等于所述写入到备份内存区域中的数据的最大地址时,将所述写操作命令映射到所述备份内存区域,根据所述写操作命令在所述备份内存区域中的所述写入地址上写入数据。
10.根据权利要求6至9任一项所述的内存备份过程中的系统命令的控制器,其特征在于所述的数据处理模块,还用于获取读操作命令对应的读取地址,将读操作命令映射到所述原始内存区域中,根据所述读操作命令从所述原始内存区域中的所述读取地址中读取数据。
全文摘要
本发明实施例提供了一种内存备份过程中的系统命令的处理方法和装置。该方法主要包括获取写操作命令对应的写入地址,如果所述写入地址对应的数据已经从原始内存区域中读取、但是没有写入到备份内存区域中,将所述写操作命令映射到所述原始内存区域,根据所述写操作命令在所述原始内存区域中的所述写入地址上写入数据,将所述写入地址减去设定数值得到后续从所述原始内存区域中读取数据的起始地址。利用本发明实施例,解决了内存备份操作过程中对系统命令阻塞的问题,使系统命令得到及时处理,并且保证了系统命令与内存备份地址冲突时的数据一致性问题,提升了内存备份操作时的系统性能。
文档编号G06F11/14GK102395956SQ201180001642
公开日2012年3月28日 申请日期2011年7月7日 优先权日2011年7月7日
发明者兰可嘉, 程永波, 贺成洪 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1