CN103827834B一种内存数据的迁移方法、计算机和装置
技术领域
本发明涉及计算机技术,特别是一种内存数据的迁移方法、计算机和装置。
背景技术
内存(Memory)也被称为主存储器,是计算机中重要的部件之一。计算机中 所有程序的运行都是在内存中进行,因此内存的性能对计算机的影响非常大。内 存能够用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据。 只要计算机在运行中,处理器就会把需要运算的数据调到内存中进行运算,当运 算完成后处理器再将结果传送出来,内存的运行也决定了计算机的稳定运行。
在X86架构下,服务器支持的内存数量越来越多,最新的Intel E7V2处理器, 单颗处理器最多可以支持2块内存板,每块内存板最多可以支持12根内存条,在一 个8P系统中内存条数量可以达到192根。然而,目前系统中内存的故障率能够高达 0.1%,内存故障不仅可能引起系统运行不稳定,还可能引起系统的死机。
现有技术无法实现计算机中内存数据的迁移,当系统中出现内存故障时,无 法在计算机正常运行的情况下实现故障内存板或者故障内存条中的数据的迁移, 因此无法对故障内存进行在线维护,只能先对该计算机下电后才能更换故障内存 板或故障内存条。
发明内容
本发明实施例提供了一种内存数据的迁移方法、计算机和装置,能够在计算机 不下电的情况下实现内存数据的迁移。
第一方面,本发明实施例提出了一种计算机,包括
处理器;
基本输入输出系统;
主存储器,用于加载所述基本输入输出系统中存储的指令以及所述计算机的 操作系统的指令,所述主存储器包括一个或多个内存卡;
内存控制器,每个内存卡配置对应的内存控制器;
在该计算机中,所述处理器用于执行所述操作系统的指令,并在执行所述操 作系统的指令时接收第一触发指令,根据所述第一触发指令,退出所述操作系统 并执行所述基本输入输出系统的内存数据的迁移指令,所述处理器根据所述基本 输入输出系统的内存数据的迁移指令执行如下操作:确定待迁移内存数据的源内 存卡;为所述源内存卡确定备份内存卡;指示所述源内存卡的内存控制器进行内 存数据的迁移;
所述源内存卡的内存控制器用于接收所述处理器的指示,根据所述处理器的 指示将所述源内存卡的内存数据迁移到所述备份内存卡。
结合第一方面,在第一种可能的实现方式中,所述处理器具体用于将所述源 内存卡和所述备份内存卡设置为镜像模式,向所述源内存卡的内存控制器发送数 据读指令,所述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存 卡的内存数据,以及向所述源内存卡的内存控制器发送数据写指令,所述数据写 指令用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡; 所述源内存卡的内存控制器具体用于根据所述处理器的数据读指令读取所述源内 存卡的内存数据,接收所述处理器发送的所述数据写指令,根据所述源内存卡和 所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存数据发送给所 述备份内存卡的内存控制器;所述备份内存卡的内存控制器用于将接收到的所述 源内存卡的内存数据写入到所述备份内存卡。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现 方式中,所述处理器具体用于获取分次迁移策略,根据所述分次迁移策略,指示 所述源内存卡的内存控制器分多次进行内存数据的迁移。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述 处理器具体用于根据所述分次迁移策略执行如下操作a)-d),直至将所述源内存 卡的内存数据全部迁移到所述备份内存卡,所述操作a)-d)包括:a)确定当次 迁移的数据量,指示所述源内存卡的内存控制器将所述当次迁移的数据量迁移到 所述备份内存卡,或者,确定当次迁移的时长,指示所述源内存卡的内存控制器 在所述当次迁移的时长内进行内存数据的迁移;b)在确定所述源内存卡的内存 控制器完成所述当次迁移之后,退出所述基本输入输出系统并执行所述操作系统 的指令;c)接收第二触发指令,所述第二触发指令用于指示所述处理器返回执 行所述基本输入输出系统的内存数据的迁移指令;d)根据所述基本输入输出系 统的内存数据的迁移指令,返回执行步骤a)。
结合第一方面或者第一方面的第一种可能的实现方式或者第二种可能的实现 方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述源内存卡的 内存控制器还用于对所述源内存卡的错误数据进行监控,若所述错误数据的数量 超过阈值,触发所述第一触发指令;所述处理器具体用于接收所述源内存卡的内 存控制器触发的所述第一触发指令。
结合第一方面或者第一方面的第一种可能的实现方式或者第二种可能的实现 方式或者第三种可能的实现方式,在第五种可能的实现方式中,所述操作系统还 用于配置内存数据的迁移的启动策略,或者接收用户发送的内存数据的迁移的启 动指令,所述操作系统根据所述启动策略或启动指令指示所述处理器产生所述第 一触发指令。
第二方面,本发明实施例提供了一种内存数据的迁移方法,用于迁移计算机 中的内存数据,该方法包括:
所述计算机的处理器在执行操作系统的指令时,接收第一触发指令;
所述处理器根据所述第一触发指令,退出所述操作系统并执行基本输入输出 系统的内存数据的迁移指令;
所述处理器根据所述基本输入输出系统的内存数据的迁移指令执行如下操 作:
确定待迁移内存数据的源内存卡;
为所述源内存卡确定备份内存卡;
指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡 的内存控制器根据所述处理器的指示将所述源内存卡的内存数据迁移到所述备份 内存卡。
结合第二方面,在第一种可能的实现方式中,该方法还包括:所述处理器将 所述源内存卡和所述备份内存卡设置为镜像模式;所述处理器指示所述源内存卡 的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述 处理器的指示读取所述源内存卡的内存数据,将所读取的所述源内存卡的内存数 据写入到所述备份内存卡,包括:
所述处理器向所述源内存卡的内存控制器发送数据读指令,所述数据读指令 用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据;
所述源内存卡的内存控制器根据所述处理器的数据读指令读取所述源内存卡 的内存数据;
所述处理器向所述源内存卡的内存控制器发送数据写指令,所述数据写指令 用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡;
所述源内存卡的内存控制器接收所述处理器发送的所述数据写指令,根据所 述源内存卡和所述备份内存卡之间的镜像模式,将所读取的所述源内存卡的内存 数据发送给所述备份内存卡的内存控制器,以使得所述备份内存卡的内存控制器 将接收到的所述源内存卡的内存数据写入到所述备份内存卡。
结合第二方面或者第二方面的第一种可能的实现方式吗,在第二种可能的实 现方式中,在所述处理器指示所述源内存卡的内存控制器进行内存数据的迁移之 前,还包括:所述处理器获取分次迁移策略;则,所述处理器根据所述分次迁移 策略,指示所述源内存卡的内存控制器分多次进行内存数据的迁移。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述 处理器根据所述分次迁移策略指示所述源内存卡的内存控制器分多次进行内存数 据的迁移,包括:a)所述处理器确定当次迁移的数据量,指示所述源内存卡的 内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或者,所述处理器 确定当次迁移的时长,指示所述源内存卡的内存控制器在所述当次迁移的时长内 进行内存数据的迁移;b)在确定所述源内存卡的内存控制器完成所述当次迁移 之后,所述处理器退出所述基本输入输出系统并执行操作系统的指令;c)所述 处理器接收第二触发指令,所述第二触发指令用于指示所述处理器返回执行所述 基本输入输出系统的内存数据的迁移指令;d)所述处理器根据所述基本输入输 出系统的内存数据的迁移指令,返回执行步骤a),直至所述源内存卡的内存数 据全部迁移到所述备份内存卡。
结合第二方面或者第二方面的第一种可能的实现方式或者第二种可能的实现 方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述源内存卡的 内存控制器对所述源内存卡的错误数据进行监控,若所述错误数据的数量超过阈 值,所述源内存卡的内存控制器触发所述第一触发指令;则,所述处理器接收所 述源内存卡的内存控制器触发的所述第一触发指令。
结合第二方面或者第二方面的第一种可能的实现方式或者第二种可能的实现 方式或者第三种可能的实现方式,在第五种可能的实现方式中,在所述计算机的 处理器在执行操作系统的指令时,所述方法还包括:所述操作系统根据预置的内 存数据的迁移的启动策略或者用户的内存数据迁移的启动指令指示所述处理器产 生所述第一触发指令;则,所述处理器接收自身产生的所述第一触发指令。
第三方面,本发明实施例提出了一种基本输入输出系统,该基本输入输出系 统包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述处 理器执行如下方法:
确定待迁移内存数据的源内存卡;
为所述源内存卡确定备份内存卡;
指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡 的内存控制器根据所述处理器的指示将所述源内存卡的内存数据迁移到所述备份 内存卡。
结合第三方面,所述处理器还根据所述计算机执行指令执行如下方法:将所 述源内存卡和所述备份内存卡设置为镜像模式;所述指示所述源内存卡的内存控 制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所述指示读取 所述源内存卡的内存数据,将所读取的所述源内存卡的内存数据写入到所述备份 内存卡,包括:
向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于指示所 述源内存卡的内存控制器读取所述源内存卡的内存数据;
向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所 述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,以使得所述源内 存卡的内存控制器根据所述处理器的数据读指令读取所述源内存卡的内存数据, 接收到所述数据写指令后,根据所述源内存卡和所述备份内存卡之间的镜像模式, 将所读取的所述源内存卡的内存数据发送给所述备份内存卡的内存控制器。
结合第三方面或者第三方面的第一种可能的实现方式,在第二种可能的实现 方式中,所述处理器还根据所述计算机执行指令执行如下方法:获取分次迁移策 略;根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次进行内存数 据的迁移。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述 处理器根据所述分次迁移策略指示所述源内存卡的内存控制器分多次进行内存数 据的迁移,包括:确定当次迁移的数据量,指示所述源内存卡的内存控制器将所 述当次迁移的数据量迁移到所述备份内存卡,或者,确定当次迁移的时长,指示 所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁移;在确 定所述源内存卡的内存控制器完成所述当次迁移之后,退出所述基本输入输出系 统并执行操作系统的指令内存卡内存卡。
结合第三方面或者第一种可能的实现方式或者第二种可能的实现方式或者第 三种可能的实现方式,在第四种可能的实现方式中,该基本输入输出系统还包括: 在确定所述源内存卡的内存数据全部迁移到所述备份内存卡之后,将所述源内存 卡的系统地址指向的目标内存卡更改为所述备份内存卡。
在本发明实施例中,处理器在接收到第一触发指令后,退出操作系统并执行 基本输入输出系统的内存数据的迁移指令,所述基本输入输出系统的内存数据的 迁移指令使得所述处理器能够确定待迁移内存数据的源内存卡,为所述源内存卡 确定备份内存卡,指示所述源内存卡的内存控制读取所述源内存卡的内存数据并 将所读取的所述源内存卡的内存数据写入所述备份内存卡,从而能够对所述源内 存卡的内存数据进行迁移,实现了在计算机不下电的情况下对故障内存卡的在线 维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维 护的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的计算机的系统框图;
图2为本发明实施例提供的内存数据的迁移方法流程图;
图3为本发明实施例提供的又一种内存数据的迁移方法流程图;
图4为本发明实施例提供的又一种内存数据的迁移方法流程图;
图5为本发明实施例提供的装置组成图。
具体实施方式
本发明实施例提供了一种内存数据的迁移方法、计算机和装置,能够在计算 机正常运行的情况下进行内存数据的迁移。
一种实现内存数据迁移的计算机
如图1所示,为实施本发明实施例的计算机的一个示例,该计算机可以包括 主存储器101、内存控制器102、处理器105、基本输入输出系统(Basic Input Output System,BIOS)104和硬盘(图1未示出)。所述主存储器101包括至少一个内 存卡,图1中以3个内存卡为例,内存卡101-A、101-B、101-C。所述内存控制 器102用于控制所述主存储器101,可以为所述主存储器101的每个内存卡配置 对应的内存控制器102,例如内存卡101-A的内存控制器102-A,内存卡101-B 的内存控制器102-B,内存卡101-C的内存控制器102-C。本实施例中的内存卡具 体可以是内存板或者内存条等任何可以作为内存的存储介质,一个内存卡可以指 一根内存条或一个内存板,也可以指多根内存条的集合或多个内存板的集合。每 个内存卡都配置有对应的内存控制器,内存卡和内存控制器的对应关系可以是一 对一,也可以是一对多或者多对一,图1只是本发明实施示例之一。
在所述计算机系统开机后,所述主存储器101可以在计算机开机启动时,加 载所述BIOS104中的指令以及存储在硬盘中的计算机的操作系统(Operating System,OS)103的指令,所述处理器105可以执行所述BIOS 104的指令或所述 计算机的操作系统(Operating System,OS)103的指令,例如所述处理器105可 以执行BIOS104的指令对所述计算机中的设备进行初始化,以及执行所述OS103 的指令对所述内存卡进行读写操作,其中,所述处理器105主要指CPU内核部分, 可以是一个CPU内核,也可以是多个CPU内核的集合,在本发明实施例中,所 述处理器105是多个CPU内核的集合。所述BIOS104可以是一个处理芯片,在 该处理芯片内注册了多个处理指令,所述处理器105可以执行这些处理指令。
本实施例中为了实现内存数据的迁移,需要在计算机中配置备份内存卡,以 作为源内存卡的内存数据的迁移的目标内存卡,另外,待进行内存数据迁移的内 存卡在本实施例中被称为源内存卡。在图1所示的实施例中,内存卡101-A和 101-B可以是源内存卡,内存卡101-C是本发明实施例配置的备份内存卡。本实 施例中,以为计算机指定一个备份内存卡101-C为例,实际上,也可以为计算机 指定多个备份内存卡。本发明实施例所说的内存数据的迁移的目的是使得备份内 存卡能够获得源内存卡中的内存数据,为了实现上述迁移的目的,在具体实现中, 可以采用内存数据的复制、拷贝或者搬迁等方式,只要实现了备份内存卡能够获 得源内存卡中的内存数据的迁移目的,上述各种具体实现方式都在本发明实施例 的“迁移”范畴之类。
本发明实施例中,可以对BIOS 104进行改进,例如在BIOS 104中注册新的 内存数据的迁移指令,使得处理器执行BIOS 104的内存数据的迁移指令来实现内 存数据的迁移。
本发明实施例的计算机的各组成可以执行如下操作:
所述处理器105用于在执行OS103的指令时,接收内存数据迁移的触发指令, 根据所述内存数据迁移的触发指令,退出OS103并执行BIOS 104的内存数据的 迁移指令,所述BIOS 104的内存数据的迁移指令使得所述处理器执行如下操作: 确定待迁移内存数据的源内存卡,例如所述源内存卡101-A,为所述源内存卡确 定备份内存卡,例如所述备份内存卡101-C,以及指示所述源内存卡的内存控制 器102-A进行内存数据的迁移。
所述源内存卡的内存控制器102-A用于接收所述处理器的指示,根据所述处 理器的指示读取所述源内存卡101-A的内存数据,将所读取的所述源内存卡101-A 的内存数据写入到所述备份内存卡,实现将所述源内存卡101-A的数据迁移到所 述备份内存卡101-C。
在本发明实施例中,处理器105可以在运行OS的指令时接收到所述内存数 据迁移的触发指令,根据所述内存数据迁移的触发指令退出OS103并执行BIOS 104的内存数据的迁移指令,实现将所述源内存卡101-A的数据写入所述备份内 存卡101-C,能够在计算机不下电的情况下,对所述源内存卡101-A的内存数据 进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整个计算 机下电才能进行故障内存卡的更换或维护的问题。此外,由于所述处理器是执行 BIOS的指令完成内存数据的迁移,能够实现对OS内核模块所在的内存卡的数据 进行迁移,避免了通过OS操作不能对OS内核模块数据进行迁移的问题。
下面对本发明实施例展开进行详细地介绍。
关于配置备份内存卡
本实施例中,为了保证内存数据迁移的指令被正确地执行,所述备份内存卡 作为待迁移的内存数据的目标设备,与计算机中的其他内存卡具有一定的不同之 处,例如在内存数据迁移完成之前对OS 103不可见,即OS103无法对其进行读 写操作;所述处理器105可以执行BIOS 104的指令对所述备份内存卡101-C进行 特殊初始化,使得所述备份内存卡101-C准备就绪并可以正常使用,但是所述初 始化过程避免为所述备份内存卡101-C分配系统地址,从而使得所述OS 103无法 对所述备份内存卡101-C进行任何读写操作,这样可以保证将源内存卡的内存数 据完整迁移到备份卡,保证迁移过程中已经迁移的数据不会被覆盖上其他的数据, 使得迁移的内存数据受到破坏。
配置所述备份内存卡可以包括:
1、指定并记录备份内存卡的标识。可以是由用户将备份内存卡插入硬件插槽 之后,将该备份内存卡的标识通过OS 103在所述计算机的某个存储模块上进行记 录,例如记录在高级配置和电故障管理接口(Advanced Configuration and Power Management Interface,ACPI)列表中,所述ACPI列表为OS 103与BIOS 104交 互的信息表的集合,OS 103和BIOS 104都可以对其进行查询操作,此种情况下, 即指定在计算机中已经硬件存在内存卡为备份内存卡;也可以是用户并不将备份 内存卡插入硬件插槽,而是指定备份内存卡后续将要插入的硬件插槽的槽位号, 将指定的槽位号作为备份内存卡的标识进行记录,此种情况下,即指定在计算机 中还没有硬件存在内存卡为备份内存卡。
指定并记录备份内存卡的标识,处理器105后续可以查询用来记录备份内存 卡的存储模块,例如ACPI列表,以确定备份内存卡。
2、对备份内存卡执行特殊的初始化。在指定了备份内存卡之后,可以对该备 份内存卡进行特殊的初始化,以使得该备份内存卡准备就绪,计算机可以将源内 存卡的内存数据写入所述备份内存卡。对备份内存卡初始化,需要该内存卡已经 插入硬件插槽,而实际上,何时将备份内存卡插入硬件插槽可以非常灵活,可以 是指定备份内存卡之前即插入,也可以是在指定备份内存卡之后,以及执行内存 数据的迁移之前的任何时间。具体来说初始化的场景可以分为两种,一种是内存 数据的迁移启动之前,由用户按下备份单元上的按钮,该按钮产生初始化中断, 使得BIOS104执行对该备份内存卡的特殊初始化,一种是内存数据的迁移启动之 后,如果BIOS检测到备份内存卡还没有完成初始化,可以临时启动对备份内存 卡的初始化。
其中,对所述备份内存卡进行特殊初始化是指对所述备份内存卡进行配置, 使得所述备份内存卡准备就绪并可以正常使用,但是对OS103不可见;所述初始 化的过程包含正常初始化的各种行为,除了在初始化过程中避免为该备份内存卡 分配系统地址,例如,对所述备份内存卡进行初始化可以包括为所述备份内存卡 供电,配置相关性能等参数,配置所述备份内存卡与计算机中的处理器之间的通 信连接,检测所述备份内存卡是否能够进行正常的读写操作等。在对所述备份内 存卡进行初始化时,避免为所述备份内存卡分配系统地址,从而所述OS103无法 获取所述备份内存卡的系统地址,不能对所述备份内存卡进行任何读写操作,即 所述备份内存卡虽然已经准备就绪,但对所述OS不可见,此时所述OS不能使用 所述备份内存卡。
关于内存数据迁移的触发
在本发明实施例中,内存数据的迁移的启动是根据源内存卡的故障情况或者 用户的需求而触发并启动的,也就是说,计算机开机启动后,正常执行OS103的 指令,根据接收到的内存数据迁移的触发指令切换到BIOS104并执行BIOS104 的指令,以实现内存数据的迁移。在本发明实施例中,所述处理器105在接收到 所述内存数据迁移的触发指令时,才进行内存数据的迁移,即针对用户指定的源 内存卡或者有明确故障的源内存卡进行内存数据的迁移,不需要预先指定固定的 源内存卡,也不需要预先配置源内存卡和备份内存卡的镜像关系,因此,本发明 实施例针对明确地源内存卡实现内存数据的迁移的触发,即保证了故障的及时处 理,又节约了计算机的资源,保证了计算机的高效率。
本发明实施例中内存数据迁移的触发指令用来指示处理器105退出OS 103 并执行BIOS 104的内存数据的迁移指令,以实现内存数据的迁移。由于本发明实 施例可以实现内存数据的一次迁移,也可以实现内存数据的多次迁移,因此,在 本发明实施例中内存数据迁移的触发指令可以包括第一触发指令和第二触发指 令,将启动内存数据的第一次迁移的内存数据迁移的触发指令称为第一触发指令, 将触发内存数据的后续迁移的内存数据迁移的触发指令称为第二触发指令。
所述第一触发指令的触发可以比较灵活,例如可以由处理器105根据OS 103 的指令触发所述第一触发指令,还可以由所述源内存卡的内存控制器102-A触发 所述第一触发指令,具体地,例如:
(1)源内存卡的内存控制器102-A和102-B还可以分别对源内存卡101-A 和101-B的错误数据进行监控,若源内存卡101-A或101-B的错误数据超过阈值, 对应的内存控制器可以触发所述第一触发指令,例如,源内存卡101-A的错误数 据超过阈值,内存控制器102-A触发所述第一触发指令;所述处理器105可以接 收所述源内存卡的内存控制器102-A触发的所述第一触发指令,退出OS 103并执 行BIOS 104的内存数据的迁移指令。具体地,所述第一触发指令可以是系统管理 中断(System Management Interrupt,SMI)。
(2)所述第一触发指令还可以由OS根据用户发送的内存数据的迁移的启动 指令直接触发处理器来产生,也可以由OS根据用户在所述OS中预置的内存数据 的迁移的启动策略来产生。例如用户直接向OS发送指令,OS根据用户的指令指 示处理器产生所述第一触发指令,或者例如用户预先在OS中配置的按照时间或 者处理器的运行状态来启动内存数据的迁移的启动策略,在该启动策略被满足时, OS指示处理器产生所述第一触发指令。所述处理器105可以接收自身触发的所述 第一触发指令,退出OS 103并执行BIOS 104的内存数据的迁移指令。
关于分多次实现内存数据的迁移
本发明实施例的一个较优的实施例中,将分多次进行内存数据的迁移。由于 在进行内存数据迁移的过程中,所述处理器105如果一直执行BIOS 104的指令来 进行内存数据的迁移,将在较长的时间内无法执行OS 103的指令以进行业务处 理,这会影响计算机的正常运行导致其它业务处理长时间处于中止状态,并影响 到用户的体验,因此所述处理器105可以分多次进行内存数据的迁移,例如,在 完成一次内存数据迁移之后,所述处理器105可以退出所述BIOS 104,执行所述 OS 103的指令,进行正常的业务处理,直到进行下一次内存数据迁移时,再退出 所述OS 103,再次执行所述BIOS 104的内存数据的迁移指令,以继续进行内存 数据的迁移。这种分多次进行内存数据的迁移的方式,使得处理器交替执行OS103 和BIOS104的指令,并最终完成了内存数据的迁移,避免了系统业务的长时间中 断,保证了系统的正常运行。
针对上述分多次进行内存数据迁移的方式,在本发明的又一实施例中,可以 对所述BIOS 104的内存数据的迁移指令进行进一步改进,使得所述处理器105 执行所述BIOS 104的内存数据的迁移指令时,可以获取分次迁移策略,根据所述 分次迁移策略指示所述源内存卡的内存控制器102-A分多次进行内存数据的迁 移,所述分次迁移策略可以由用户配置,例如用户可以根据需求指定每次迁移的 数据量或者每次迁移的时长,所述处理器105执行所述BIOS 104的内存数据的迁 移指令时,可以根据所述指定的每次迁移的数据量或者每次迁移的时长,执行如 下操作a)-d),直到将所述源内存卡101-A的内存数据全部迁移到所述备份内存 卡101-C,所述操作a)-d)包括:
a)根据所述每次迁移指定的数据量确定当次迁移的数据量,指示所述源内存 卡的内存控制器102-A将所述当次迁移的数据量迁移到所述备份内存卡101-C, 或者,根据每次迁移的时长确定所述当次迁移的时长确定当次迁移的时长,指示 所述源内存卡的内存控制器102-A在所述当次迁移的时长内进行内存数据的迁 移,或者根据处理器的运行状态,指示所述源内存卡的内存控制器102-A在处理 器的运行状态为空闲的时间段内进行内存数据的迁移,其中所述处理器的运行状 态为空闲状态可以是处理器的占用率小于设定阈值;
b)在确定所述源内存卡的内存控制器102-A完成所述当次迁移之后,退出所 述BIOS 104并执行OS 103的指令;
c)接收第二触发指令,所述第二触发指令用于指示所述处理器返回执行所述 BIOS 104的指令以继续进行内存数据的迁移;
d)返回执行步骤a)。
所述处理器105通过上述操作a)-d),实现了分多次将所述源内存卡101-A 的数据迁移到了所述备份内存卡101-C。
其中,所述第二触发指令,可以由处理器105根据OS 103的指令触发,还可 以是根据预先配置的第二触发指令的触发条件来触发,例如可以在所述迁移策略 中配置所述第二触发指令的触发条件,所述第二触发指令的触发条件可以包括每 次迁移的间隔时长或者处理器的运行状态,所述处理器105可以根据所述每次迁 移的间隔时长,配置内存迁移定时器,以使得所述内存迁移定时器根据所述每次 迁移的间隔时长触发所述第二触发指令,例如可以将所述内存迁移定时器配置在 计算机的南桥中;或者,根据自身的运行状态,触发所述第二触发指令,例如, 所述处理器105在自身运行状态为空闲时触发所述第二触发指令。
在本发明实施例中,所述处理器105可以根据所述分次迁移策略,指示所述 源内存卡的内存控制器102-A分多次将所述源内存卡的内存数据迁移到所述备份 内存卡,使得在进行内存数据迁移的过程中,所述处理器能够根据需求退出OS 103执行BIOS 104的内存数据的迁移指令,或者退出BIOS 104执行OS 103的指 令进行业务处理,使得所述计算机的业务能够及时处理,避免在进行大量内存数 据迁移时导致的计算机业务的长时间中断,保障了该计算机的正常运行。
关于将所述源内存卡和所述备份内存卡设置为镜像模式
在进行内存数据的迁移之前,所述处理器105还可以将所述源内存卡和所述 备份内存卡设置为镜像模式,使得所述源内存卡的内存控制102-A可以根据所述 处理器105的指示以及所述镜像模式,将所述源内存卡的内存数据写入所述备份 内存卡。
具体地,在所述处理器105执行BIOS 104的内存数据的迁移指令,确定所述 源内存卡101-A和所述备份内存卡101-C之后,可以在所述源内存卡的内存控制 器102-A中配置所述备份内存卡的标识,在所述备份内存卡的内存控制器109中 配置所述源内存卡的标识,以使得所述源内存卡101-A与所述备份内存卡101-C 之间设置为镜像模式。当然设置镜像模式还包括建立所述源内存卡101-A与所述 备份内存卡101-C之间的数据传输通道等操作,具体实现在此不做赘述。
所述处理器105执行BIOS 104的内存数据的迁移指令时,还可以根据BIOS 104的指令向所述源内存卡的内存控制器发送数据读指令,所述数据读指令用于 指示所述源内存卡的内存控制器102-A读取所述源内存卡101-A的数据,接收所 述源内存卡的内存控制器102-A发送的所述数据读指令的响应消息后,还可以向 所述源内存卡的内存控制器102-A发送数据写指令,所述数据写指令用于指示所 述源内存卡的内存控制器102-A将所述读取的数据写回所述源内存卡101-A。从 而所述源内存卡的内存控制器102-A可以根据所述处理器105发送的数据读指令, 读取所述源内存卡101-A的数据,根据所述处理器105发送的数据写指令将所述 读取的数据写回所述源内存卡101-A,以及根据所述源内存卡的内存控制器102-A 中配置的所述备份内存卡的标识,将所述读取的数据写入所述备份内存卡的内存 控制器102-C,所述备份内存卡的内存控制器102-C将接收到的数据写入所述备 份内存卡101-C,从而实现了所述源内存卡101-A的数据迁移到所述备份内存卡 101-C。
通过上述方式,所述处理器105可以将所述源内存卡101-A的所有数据迁移 到所述备份内存卡101-C,保证了内存数据的完整迁移。并且,由于源内存卡和 备份内存卡设置成了镜像模式,在退出BIOS执行OS的指令的时候,所述OS对 源内存卡的任何写操作都会同时写到备份内存卡上,保证了在备份内存卡上的已 经迁移的内存数据的准确性。
关于对非错误数据进行迁移
当内存卡中的错误数据过多时,可能导致内存卡故障甚至引起计算机的重启, 因此,在进行内存数据迁移的过程中,可以只对非错误数据进行迁移。
所述处理器在执行所述BIOS 104的内存数据的迁移指令进行内存数据的迁 移时,还可以指示所述源内存卡的内存控制器102-A确定所述源内存卡101-A中 的非错误数据,并根据检测结果打上检测标记,例如获取所述源内存卡的内存控 制器102-A确定的所述非错误数据的信息,从而可以根据所述检错标记指示所述 源内存卡的内存控制器102-A对所述非错误数据进行迁移,避免将所述源内存卡 101-A中的错误数据迁移到所述备份内存卡101-C而可能导致的计算机重启或可 能导致的所述备份内存卡101-C产生故障。
关于迁移条件
为了保证内存数据迁移的顺利进行,在进行内存数据迁移之前,所述处理器 105可以检查所述备份内存卡101-C是否满足迁移条件,即是否可以作为所述源 内存卡101-A数据迁移数据的目标设备,避免由于所述备份内存卡101-C由于未 完成初始化或者内存容量不够等情况而导致的数据迁移失败。
具体地,所述处理器执行所述BIOS 104的内存数据的迁移指令时,还可以执 行如下操作:在指示所述源内存卡的内存控制器1012-A将所述源内存卡101-A 的数据迁移到所述备份内存卡101-C之前,确定所述备份内存卡101-C是否完成 初始化,若所述备份内存卡101-C完成初始化,则将所述源内存卡101-A和所述 备份内存卡101-C设置为镜像模式,以便后续进行内存数据的迁移;
所述处理器105执行所述BIOS 104的内存数据的迁移指令时,还可以确定所 述备份内存卡101-C的内存容量是否大于所述源内存卡101-A的内存容量,若所 述备份内存卡101-C的内存容量是大于所述源内存卡101-A的内存容量,则确定 满足所述迁移条件,可以后续将所述源内存卡101-A的内存数据迁移到所述备份 内存卡101-C。
所述处理器105执行所述BIOS 104的内存数据的迁移指令时,还可以确定所 述源内存卡101-A与所述备份内存卡101-C是否属于同一个处理器控制,如果不 属于,表示可以将所述源内存卡101-A的数据迁移到所述备份内存卡101-C,从 而将所述源内存卡106和所述备份内存卡107设置为镜像模式,以便后续进行内 存数据的迁移。
关于内存数据迁移完成之后的备份内存卡与源内存卡的替换
当所述源内存卡的内存控制器102-A将所述源内存卡101-A的数据全部迁移 到所述备份内存卡101-C之后,所述处理器105执行所述BIOS 104的内存数据的 迁移指令时,还可以建立所述源内存卡101-A的系统地址与所述备份内存卡101-C 的映射关系,将所述源内存卡的系统地址指向的目标内存卡更改为所述备份内存 卡,使得所述备份内存卡101-C可以替代所述源内存卡101-A,接管所述OS 103 对所述源内存卡101-A的所有读写操作。
在所述备份内存卡已经替换了所述源内存卡之后,所述处理器105还可以对 所述源内存卡101-A执行下电操作,使得在所述计算机在不下电的情况下,可以 移除或者更换所述源内存卡101-A,解决了现有技术中需要对整个计算机下电才 能进行故障内存卡的更换或维护的问题。
一种内存数据的迁移方法
结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,用 于迁移计算机中的内存数据,所述计算机的基本输入输出系统中存储有内存数据 的迁移指令,如图2所示,所述方法包括:
S201:所述计算机的处理器在执行OS的指令时,接收第一触发指令。
所述第一触发指令可以由源内存卡的内存控制器根据源内存卡的故障状况触 发,例如,源内存卡的内存控制器监控到某一个源内存卡出现多次错误,已经达 到预设阈值,可以触发该第一触发指令指示处理器对所述出现多次错误的源内存 卡启动内存数据的迁移;所述第一触发指令还可以由OS根据用户的指示触发处 理器触发所述第一触发指令,例如,用户有迁移需求时,可以主动向OS发送启 动指令,OS根据所述启动指令指示处理器触发所述第一触发指令,又例如,用户 可以在OS内预置启动策略,当启动策略被满足时,触发处理器触发所述第一触 发指令。
S202:所述处理器根据所述第一触发指令,执行BIOS的内存数据的迁移指 令。
所述处理器在获取所述第一触发指令后,退出操作系统并执行BIOS的内存 数据的迁移指令,所述BIOS的内存数据的迁移指令使得所述处理器执行步骤 S203-S205。
S203:所述处理器根据所述BIOS的内存数据的迁移指令,确定待迁移内存 数据的源内存卡。
S204:所述处理器根据所述BIOS的内存数据的迁移指令,为所述源内存卡 确定备份内存卡。
所述处理器可以确定所述源内存卡的目标内存卡,一般来说,目标内存卡即 备份内存卡。所述备份内存卡可以是预先配置的。
S205:所述处理器根据所述BIOS的内存数据的迁移指令,指示所述源内存 卡的内存控制器进行内存数据的迁移,以使得所述源内存卡的内存控制器根据所 述处理器的指示将所述源内存卡的内存数据迁移到所述备份内存卡。
在确定所述源内存卡和所述备份内存卡之后,所述处理器可以根据所述BIOS 的内存数据的迁移指令,指示所述源内存卡的内存控制器读取所述源内存卡的内 存数据,将所读取的数据写入所述备份内存卡,实现从而实现了所述源内存卡的 内存数据迁移到所述备份内存卡。在本发明实施例中,所述处理器可以接收第一 触发指令,根据所述第一触发指令,退出操作系统并执行所述BIOS的内存数据 的迁移指令,所述BIOS的内存数据的迁移指令使得所述处理器确定确定待迁移 内存数据的源内存卡和所述源内存卡的备份内存卡,以及指示所述源内存卡的内 存控制器将所述源内存卡的内存数据写入所述备份内存卡,从而在计算机不下电 的情况下,能够对所述源内存卡的内存数据进行迁移,实现了对故障内存卡的在 线维护,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或 维护的问题。此外,由于所述处理器是执行BIOS的指令完成内存数据的迁移, 能够实现对OS内核模块所在的内存卡的数据进行迁移,避免了不能对OS内核模 块数据进行迁移的问题。
方法具体实施例一
结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,如 图3所示,用于迁移计算机中内存数据,所述计算机的BIOS中存储有内存数据 的迁移指令,例如,可以将源内存卡的内存数据迁移到备份内存卡,所述源内存 卡可以是内存卡101-A,所述备份内存卡可以是内存卡101-C,所述内存卡101-C 可以是计算机开机之前已经插入硬件插槽的内存卡,也可以是临时新增的内存卡, 在进行内存数据迁移之前,所述内存卡101-C的标识被配置在ACPI列表中并在 执行迁移之前执行完毕特殊初始化过程即可,本发明实施例的内存数据的迁移方 法可以包括:
S301:处理器根据BIOS的指令获取指定的备份内存卡的标识并配置到ACPI 列表中。
在所述计算机开机启动时,处理器执行所述BIOS的指令,可以为用户呈现 BIOS的起始菜单,用户通过BIOS的起始菜单配置指定的备份内存卡的标识,所 述处理器可以获得用户配置的备份内存卡的标识,并记录在ACPI列表中,使得 后续可以通过读取所述ACPI列表获取所述备份内存卡的信息。当然,所述处理 器还可以将所述备份内存卡的标识记录在其它存储单元或列表中,所述处理器后 续可以获取记录的所述备份内存卡的标识即可,本发明实施例在此不作限定。
所述备份内存卡的标识可以是所述备份内存卡所插入的槽位的槽位编号或者 所述槽位相关的号码。在本发明实施例中,所述备份内存卡可以是在计算机开机 启动前就已经插入槽位中,也可以是在计算机开机启动后再插入到槽位中的,如 果所述备份内存卡已经插入槽位中,则所述备份内存卡的标识为当次插入的槽位 的槽位编号,如果所述备份内存卡还未插入到槽位中,则所述备份内存卡的标识 可以是用户指定的槽位的槽位编号,所述备份内存卡可以在后续直接插入所述用 户指定的槽位。
步骤301为可选步骤,用户并不一定要在计算机开机启动时将所述备份内存 卡的标识提供给处理器,还可以在计算机开机启动后将所述备份内存卡的标识提 供给处理器,此时所述处理器执行OS的指令,用户可以通过OS将所述备份内存 卡的标识提供给所述处理器。
S302:所述处理器根据所述BIOS的指令对所述备份内存卡进行初始化,所 述初始化过程避免为所述备份内存卡分配系统地址。
所述处理器获取用户指定的所述备份内存卡的标识之后,可以重新启动计算 机,执行所述BIOS的指令以对所述备份内存卡进行特殊的初始化,即初始化过 程避免为所述备份内存卡分配系统地址,使得所述备份内存卡准备就绪,但是对 OS不可见。
具体地,在计算机重启时,所述处理器将执行BIOS的初始化指令,所述BIOS 的初始化指令可以使得所述处理器确定所述备份内存卡是否已经插入槽位,如果 已经插入槽位,即确定所述备份内存卡已经硬件存在,则可以对所述备份内存卡 进行初始化。
当然,本步骤为可选步骤,实际上,所述处理器也可以不重启计算机对所述 备份内存卡进行初始化,而是在后续需要使用该备份内存卡的时候,例如迁移前, 确定所述备份内存卡未完成初始化时,再对所述备份内存卡进行初始化。
S303:源内存卡的内存控制器对所述源内存卡的错误数据进行监控,判断所 述错误数据是否超过阈值,若所述错误数据超过阈值,则所述源内存卡的内存控 制器触发第一触发指令。
由于当内存卡中的错误数据超过一定值时,可能导致该内存卡发生故障,甚 至引起计算机重启,因此,在计算机开机启动时,所述处理器可以执行所述BIOS 的指令对所述源内存卡的内存控制器进行配置,使得所述源内存卡的内存控制器 可以对所述源内存卡的错误数据进行监控,当所述源内存卡的错误数据超过阈值 时,触发所述第一触发指令,所述第一触发指令用于指示处理器退出OS并执行 BIOS的内存数据迁移指令,以启动内存数据的迁移,其中,所述阈值可以由所述 处理器在计算机开机启动时配置到源内存卡的内存控制器,使得所述源内存卡的 内存控制器在开机启动后就可以统计所述源内存卡中的错误数据,对所述源内存 卡进行实时监测。
如果计算机中的源内存卡有多个时,可以对每个源内存卡的错误数据进行监 控,当监控到其中任何一个源内存卡的错误数据超过所述阈值时,触发所述第一 触发指令,指示BIOS启动对该内存卡的内存数据迁移。
所述源内存卡的内存控制器触发所述第一触发指令具体可以是触发计算机系 统管理中断SMI,所述处理器接收到所述源内存卡的内存控制器触发的所述SMI 中断之后,进入系统管理(System Management,SM)模式,此时所述处理器将 退出OS并执行BIOS的指令。
在本发明实施例中,能够对计算机中的源内存卡进行监控,所述处理器能够 针对有问题的源内存卡触发所述第一触发指令,进行内存数据的迁移,能够保证 故障及时解决,并且只在源内存卡出现故障时才进行内存数据迁移,节省了系统 资源。
进一步,所述源内存卡的内存控制器可以在自身的寄存器中记录所述源内存 卡的错误数据的数量超过阈值,以便后续指示处理器确定出问题的内存卡即源内 存卡。
S304:所述处理器获取所述第一触发指令,根据所述第一触发指令,退出操 作系统并执行BIOS的内存数据的迁移指令。
所述处理器接收到所述SMI中断之后,进入系统管理模式,此时所述处理器 退出OS并执行BIOS的内存数据的迁移指令,所述内存数据的迁移指令可以使得 所述处理器执行步骤S305-步骤S312。
S305:所述处理器根据所述BIOS的内存数据的迁移指令,查询所述源内存 卡的内存控制器,确定所述源内存卡。
在启动内存数据的迁移之后,所述处理器需要确定待迁移数据的内存卡,即 源内存卡,所述处理器可以执行所述BIOS的内存数据的迁移指令,确定触发所述 第一触发指令的源内存控制器对应的内存卡为源内存卡,例如,查询所述计算机 中的内存控制器的寄存器,通过所述源内存卡的内存控制器的寄存器中记录的信 息,确定所述源内存卡。
进一步,所述处理器在确定所述源内存卡之后,还可以将所述源内存卡的标 识记录到所述ACPI列表中,以使得后续可以通过读取所述ACPI列表获取所述源 内存卡的信息。
S306:所述处理器根据所述BIOS的内存数据的迁移指令,查询所述ACPI 列表,确定所述备份内存卡的标识。
所述处理器可以从所述ACPI列表中获取记录的备份内存卡的标识,所述备 份内存卡的标识可能为一个,还可能为多个,如果为多个所述备份内存卡的标识, 则所述处理器可以从所述ACPI列表中获取多个所述备份内存卡的标识,并根据 所述源内存卡的信息,从多个所述备份内存卡的标识中挑选一个作为所述备份内 存卡的标识,例如根据所述源内存卡的内存容量,从所述多个备份内存卡中挑选 一个内存容量大于所述源内存卡的内存容量的内存卡,确定该内存卡的标识作为 所述备份内存卡的标识,又例如,可以根据所述源内存卡归属的处理器的信息, 从所述多个备份内存卡中挑选一个与所述源内存卡不属于同一个处理器控制的内 存卡,确定该内存卡的标识作为所述备份内存卡的标识。
S307:所述处理器根据所述BIOS的内存数据的迁移指令,确定所述备份内 存卡是否满足迁移条件。
在进行所述源内存卡的内存数据的迁移之前,所述处理器需要确定所述备份 内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡进行内存数据 的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存卡内存容量不 够等问题而导致的数据迁移失败。
所述处理器确定所述备份内存卡是否满足迁移条件具体可以是:确定所述备 份内存卡是否完成初始化,若所述备份内存卡完成初始化,则表明所述备份内存 卡准备就绪,满足迁移条件;如果在执行本步骤之前,所述步骤S302并未执行, 即如果所述备份内存卡没有完成初始化,所述处理器可以在此时执行BISO的初 始化指令,对所述备份内存卡进行特殊的初始化,使得所述备份内存卡准备就绪, 满足迁移条件。
进一步,确定所述备份内存卡是否满足迁移条件还可以是:确定所述备份内 存卡的内存容量是否大于所述源内存卡的内存容量,如果大于所述源内存卡的内 存容量,则表明可以将所述源内存卡的内存数据迁移到所述备份内存卡,所述备 份内存板满足迁移条件;或者,
确定所述源内存卡与所述备份内存卡是否属于同一个处理器控制,如果确定 不属于同一个处理器控制,则表明可以将所述源内存卡的内存数据迁移到所述备 份内存卡,所述备份内存板满足迁移条件。
S308:若所述备份内存卡满足迁移条件,则所述处理器根据所述BIOS的内 存数据的迁移指令,指示所述源内存卡的内存控制器执行内存巡检操作,以确定 所述源内存卡中的非错误数据。
在进行内存数据迁移之前,所述处理器可以指示所述源内存卡的内存控制器 执行内存巡检操作,以确定所述源内存卡中的非错误数据,并根据检测结果打上 检测标记,使得后续将所述源内存卡的内存数据迁移到所述备份内存卡时,能够 根据所述检错标记只迁移所述源内存卡中的非错误数据,避免了将错误数据迁移 到所述备份内存卡而导致的计算机重启等问题。
所述源内存卡的内存控制器,能够根据所述处理器的指示,启动内存巡检操 作,所述内存巡检操作具体可以是,根据设定的检错机制,对所述源内存卡的内 存数据进行检测,以判断所述源内存卡中哪些数据是错误数据,并标记所述错误 数据的系统地址,即根据检测结果打上检测标记,使得后续进行内存数据迁移时, 所述处理器能够根据标记的所述错误数据的系统地址,迁移所述源内存卡中的非 错误数据。
所述源内存卡的内存控制器在执行完巡检操作之后,可以对自身的寄存器进 行配置,所述处理器可以通过查询该寄存器,确定所述巡检操作是否完成,当所 述巡检操作完成之后,所述处理器可以执行步骤309,即将所述源内存卡和所述 备份内存卡设置为镜像模式,以进行内存数据的迁移。
此步骤为可选步骤,所述处理器并不一定要指示所述源内存控制器进行内存 巡检操作。
S309:若所述备份内存卡满足迁移条件,则所述处理器根据所述BIOS的内 存数据的迁移指令,将所述源内存卡和所述备份内存卡设置为镜像模式。
为了实现内存数据的迁移,所述处理器可以将所述源内存卡和所述备份内存 卡设置为镜像模式,在设置了所述镜像模式之后,所述源内存卡的内存控制能够 根据所述处理器的指示,将所述源内存卡的内存数据写入所述备份内存卡。
具体地,所述处理器在执行所述BIOS的内存数据的迁移指令时,可以在所 述源内存卡的内存控制器中配置所述备份内存卡的标识,在所述备份内存卡的内 存控制器中配置所述源内存卡的标识,以使得所述源内存卡与所述备份内存卡之 间设置为镜像模式,从而所述源内存卡能够根据所述处理器的指示,将所述源内 存卡的内存数据发送到所述备份内存卡的内存控制器,使得所述备份内存卡的内 存控制器将所述源内存卡的内存数据写入所述备份内存卡。
此外,将所述源内存卡和所述备份内存卡设置为镜像模式还可以包括,所述 处理器将所述源内存卡的内存控制器的地址配置信息复制到所述备份内存卡的内 存控制器,使得所述备份内存卡按照所述源内存卡的地址分配方式,为所述备份 内存卡分配系统地址。
S310:所述处理器根据所述BIOS的内存数据的迁移指令,指示所述源内存 卡的内存控制器进行内存数据的迁移。
所述处理器在配置所述源内存卡与所述备份内存卡之间的镜像模式之后,可 以指示所述源内存卡的内存控制器对所述源内存卡进行内存数据的迁移。
具体地,所述处理器可以向所述源内存卡的内存控制器发送数据读指令,所 述数据读指令用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数 据,在确定所述源内存卡的内存控制器完成所述数据读指令之后,所述处理器可 以向所述源内存卡的内存控制器发送数据写指令,所述数据写指令用于指示所述 源内存卡的内存控制器将所述读取的数据写回所述源内存卡,从而使得所述源内 存卡的内存控制器可以根据所述数据读指令,读取所述源内存卡的内存数据,然 后再根据所述数据写指令,将所述读取的数据写入所述源内存卡,以及根据所述 镜像模式,将所述读取的数据发送给所述备份内存卡的内存控制器,使得所述备 份内存卡的内存控制器能够将所述读取的数据写入所述备份内存卡,实现了内存 数据的迁移,能够将所述源内存卡的所有内存数据迁移到所述备份内存卡,而不 仅仅只迁移启动内存数据迁移后,新写入所述源内存卡中的数据。
由于在进行内存数据迁移的过程中,所述处理器如果一直执行BIOS的指令 来进行内存数据的迁移,将在较长的时间内无法执行OS的指令以进行业务处理, 这会影响计算机的正常运行导致其它业务处理长时间处于中止状态,因此所述处 理器可以分多次进行内存数据的迁移,例如,在完成一次内存数据迁移之后,所 述处理器可以退出所述BIOS,执行所述OS的指令,进行正常的业务处理,直到 进行下一次内存数据迁移时,再退出所述OS,再次执行所述BIOS的内存数据的 迁移指令,以继续进行内存数据的迁移。这种分多次进行内存数据的迁移的方式, 使得处理器交替执行OS和BIOS的指令,并最终完成了内存数据的迁移,避免了 系统业务的长时间中断,保证了系统的正常运行。在本发明实施例中,为了实现 上述分多次进行内存数据的迁移方法,可以对所述BIOS的内存数据的迁移指令 进行进一步改进,例如预先在所述BIOS的内存数据的迁移指令中配置每次迁移 的数据量或每次迁移的时长,即配置分次迁移策略,使得所述处理器执行所述 BIOS的内存数据的迁移指令时,可以按照所述分次迁移策略,指示所述源内存卡 的内存控制器分多次进行内存数据的迁移,具体地,所述处理器可以通过以下步 骤指示所述源内存卡的内存控制器分多次进行内存数据的迁移:
a)所述处理器根据所述每次迁移指定的数据量确定当次迁移的数据量,指示 所述源内存卡的内存控制器将所述当次迁移的数据量迁移到所述备份内存卡,或 者,所述处理器根据每次迁移的时长确定所述当次迁移的时长确定当次迁移的时 长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁 移,或者根据处理器的运行状态,指示所述源内存卡的内存控制器102-A在处理 器的运行状态为空闲的时间段内进行内存数据的迁移,其中所述处理器的运行状 态为空闲状态可以是处理器的占用率小于设定阈值;
b)在确定所述源内存卡的内存控制器完成所述当次迁移之后,所述处理器退 出所述BIOS并执行所述OS的指令;
c)所述处理器接收第二触发指令,所述第二触发指令用于指示所述处理器返 回执行所述BIOS的指令以继续进行内存数据的迁移
d)所述处理器根据所述BIOS的指令,返回执行步骤a),直至所述源内存 卡的内存数据全部迁移到所述备份内存卡。
在步骤b)中,所述处理器退出所述BIOS并执行所述OS的指令进行业务处 理时,可能对所述源内存板进行读写操作,即使所述OS利用所述处理器对所述 源内存卡中已经迁移的数据块A进行数据写操作,由于设置了镜像模式,所述源 内存卡的内存控制器也能够将所述写操作的数据写入所述备份内存卡的数据块 A,避免了数据的丢失,保证了所述备份内存卡与所述源内存卡数据的一致性。
此外,用户还可以在所述分次迁移策略中配置所述第二触发指令的触发条件, 所述第二触发指令的触发条件可以是每次迁移的间隔时长,则处理器可以从所述 迁移策略中获取所述每次迁移的间隔时长,并根据所述每次迁移的间隔时长配置 内存迁移定时器,以使得所述内存迁移定时器根据所述每次迁移的间隔时长触发 所述第二触发指令,即根据所述每次迁移的间隔时长指示所述处理器继续进行内 存数据的迁移,例如,所述处理器可以在计算机的南桥中设置所述内存迁移定时 器;
所述第二触发指令的触发条件还可以是处理器的运行状态,所述处理器可以 根据自身的运行状态,触发所述第二触发指令,例如,所述处理器的运行状态可 以是处理器处于空闲状态,或者处理器的占用率小于特定阈值,所述处理器在执 行所述OS的指令时可以实时监控自身运行信息,当处理器的占用率小于设置的 特定阈值时,触发所述第二迁移指令,使得所述处理器根据自身触发的所述第二 迁移指令,退出所述OS执行所述BIOS的指令,继续进行内存数据的迁移,当然, 所述处理器还可以利用主板控制单元(Base Mainboard Controller,BMC)对自 身是运行状态进行监控并触发所述第二触发指令,本发明实施例在此不作限定。
进一步,所述处理器在指示所述源内存卡的内存控制器进行内存数据的迁移 时,可以根据所述源内存卡的内存控制器记录的所述错误数据的地址,指示所述 源内存卡的内存控制器将所述源内存卡中的非错误数据迁移到所述备份内存卡, 避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重 启。
S311:所述处理器根据所述BIOS的内存数据的迁移指令,将所述源内存卡 的系统地址指向的目标内存卡更改为所述备份内存卡。
在内存数据迁移完成之后,所述处理器可以将源内存卡的系统地址映射到所 述备份内存卡,使得所述源内存卡的系统地址指向的目标内存卡更改为所述备份 内存卡,所述备份内存卡可以替代所述源内存卡,接管对所述源内存卡的所有读 写操作。
S312:所述处理器根据所述BIOS的内存数据的迁移指令,对所述源内存卡执 行下电操作。
在所述源内存卡的内存数据迁移完成之后,所述处理器可以对所述源内存卡 执行下电操作,使得在所述计算机不下电的情况下,可以移除或者更换所述源内 存卡,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维 护的问题。
在本发明实施例中,所述处理器可以获取第一触发指令,根据所述第一触发 指令,退出OS并执行BIOS的内存数据的迁移指令,所述BIOS的内存数据的迁 移指令使得所述处理器能够确定所述源内存卡和所述备份内存卡,并在确定所述 备份内存卡满足迁移条件后,将所述源内存卡和所述备份内存卡设置为镜像模式, 指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内存数据 写入所述备份内存卡,从而在计算机不下电的情况下,能够对所述源内存卡的内 存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整 个计算机下电才能进行故障内存卡的更换或维护的问题。并且,所述处理器根据 触发的第一触发指令,启动内存数据的迁移,只在源内存卡出现故障或需要进行 内存数据迁移时才进行内存数据迁移,有效节约了系统资源。此外,由于所述处 理器是执行BIOS的指令完成内存数据的迁移,能够实现对OS内核模块所在的内 存卡的数据进行迁移,避免了不能对OS内核模块数据进行迁移的问题。。
在本发明实施例中,所述处理器还可以将所述源内存卡的所有数据迁移到所 述备份内存卡,而不是只迁移在启动内存迁移之后,新写入所述源内存卡的内存 数据,保证了内存数据的完整迁移。进一步,所述处理器还可以根据分次迁移策 略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迁移到所 述备份内存卡,使得在进行内存数据迁移的过程中,所述处理器能够根据需求退 出OS执行BIOS的内存数据的迁移指令,或者退出BIOS执行OS的指令进行业 务处理,从而保证所述计算机的业务能够及时处理,避免在进行大量内存数据迁 移时导致的计算机业务的长时间中断,保障了该计算机的正常运行。进一步,所 述处理器还能够指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数 据,并指示所述源内存卡的内存控制器将所述非错误数据迁移到所述备份内存卡, 避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重 启。
进一步,在本发明实施例中,在进行内存数据迁移之前,所述处理器还可以 确定所述备份内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡 进行内存数据的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存 卡未完成初始化或者内存容量不够等问题而导致的数据迁移失败。
具体实施例二
结合图1所示的计算机,本发明实施例提供了一种内存数据的迁移方法,如 图3所示,用于迁移计算机中内存数据,所述计算机的BIOS中存储有内存数据 的迁移指令,例如,能够将源内存卡的内存数据迁移到备份内存卡,所述源内存 卡可以是内存卡101-A,所述备份内存卡可以是内存卡101-C,所述内存卡101-C 可以是计算机开机之前已经插入硬件插槽的内存卡,也可以是临时新增的内存卡, 在进行内存数据迁移之前,所述内存卡101-C的标识被配置在ACPI列表中并在 执行迁移之前执行完毕初始化过程即可,本发明实施例的内存数据的迁移方法可 以包括:
S401:处理器根据OS的指令将指定的备份内存卡的标识配置到ACPI列表中。
在所述计算机开机启动后,所述处理器执行所述OS的指令,用户可以向所 述OS提供指定备份内存卡的标识,所述处理器可以根据所述OS的指令获取用户 指定的备份内存卡的标识,并配置到所述ACPI列表中,由于所述ACPI列表为 BIOS和OS都可以访问的列表,使得所述处理器后续执行所述BIOS的代码时可 以通过读取所述ACPI列表,获取所述备份内存卡的信息,当然所述备份内存卡 的标识也可以记录在其它的存储单元或者列表中,保证所述处理器在执行所述OS 的指令和所述BIOS的指令时都可以访问该存储单元或者列表即可,本发明实施 例在此不作限定。
本步骤为可选步骤,用户还可以在计算机开机启动时指定备份内存卡的标识, 此时所述处理器运行所述BIOS的指令,用户可以向所述BIOS提供所述备份内存 卡的标识,所述处理器可以根据所述BIOS的指令获取用户指定的所述备份单元 的标识。
其中,所述备份单元的标识可以是所述备份内存卡所插入的槽位的槽位编号 或者所述槽位相关的号码。在本发明实施例中,所述备份内存卡可以是在计算机 开机启动前就已经插入槽位中,也可以是在计算机开机启动后再插入到槽位中的, 如果所述备份内存卡已经插入槽位中,则所述备份内存卡的标识为当次插入的槽 位的槽位编号,如果所述备份内存卡还未插入到槽位中,则所述备份内存卡的标 识可以是用户指定的槽位的槽位编号,所述备份内存卡可以在后续直接插入所述 用户指定的槽位。
进一步,所述处理器还可以根据所述BIOS的指令对所述备份内存卡进行初 始化,使得所述备份内存卡准备就绪,可以正常使用,但是对所述OS不可见, 即所述处理器执行所述OS的指令时不能对所述备份内存卡进行读写操作,具体 地,当所述指定的备份内存卡是在计算机开机启动后再插入到槽位中的,则可以 在所述备份内存卡插入槽位时,通过所述备份内存卡上的触发按钮,触发处理器 执行所述BIOS的初始化指令对所述备份内存卡进行初始化,当然,也可以在后 续需要使用该备份内存卡的时候,所述处理器再执行所述BIOS的初始化指令对 所述备份内存卡进行初始化;当所述指定的备份内存卡是在计算机开机启动前就 已经插入槽位中,则在计算机开机启动时,所述处理器执行BIOS的指令,用户 需要通过BIOS的起始菜单,配置所述备份内存卡的标识,使得所述处理器执行 所述BISO的指令,在确定所述备份内存卡已经硬件存在时对所述备份内存卡进 行特殊的初始化。
S402:所述处理器根据所述OS的指令将指定的源内存卡的标识配置到ACPI 列表中。
在所述计算机开机启动后,所述处理器执行所述OS的指令时,当用户发现 某个内存卡性能不稳定或是工作时间太长时或者其他需要更换的情况,可以指定 该内存卡为待迁移数据的内存卡,即源内存卡,并将所述源内存卡的标识提供给 所述OS,所述处理器可以根据所述OS的指令获取用户指定的源内存卡的标识, 并将所述源内存卡的标识配置到ACPI列表中,以使得后续所述处理器执行所述 BIOS的内存数据的迁移指令时,可以通过读取所述ACPI列表,获取所述源内存 卡的信息。
在本发明实施例中,用户可以分别将所述源内存卡与所述备份内存卡的标识 提供给所述OS,还可以一起将所述源内存卡与所述备份内存卡的标识提供给所述 OS,使得所述处理器可以分别将所述源内存卡与所述备份内存卡的标识配置到所 述ACPI列表中,例如通过步骤401和402将所述源内存卡与所述备份内存卡的 标识配置到所述ACPI列表中,也可以将所述源内存卡与所述备份内存卡的标识 一起配置到所述ACPI列表中,本发明实施例在此不作限定。
S403:所述处理器根据所述OS的指令触发第一触发指令。
在所述处理器执行OS的指令进行业务处理时,如果用户有内存数据的迁移 需求,可以向OS发送内存数据的迁移指示,即启动指令,所述OS根据用户发送 内存数据的迁移指示,指令处理器产生所述第一触发指令,所述处理器根据所述 OS的指令产生所述第一触发指令,所述第一触发指令用于指示所述处理器退出 OS并执行BIOS的内存数据的迁移指令。
其中,所述第一触发指令具体可以是SMI,例如,所述处理器可以根据所述 OS的指令,改变GPIO的管脚电平,使得该计算机的南桥芯片(South Bridge) 触发所述SMI,所述处理器可以接收所述SMI;又例如,所述处理器可以根据所 述OS的指令,对计算机中的南桥中的寄存器进行配置,使得该计算机的南桥触 发所述SMI,所述处理器可以接收所述SMI;在本发明实施例中,所述处理器还 可以通过其它的方式触发所述第一触发指令,本发明实施例在此不作限定。
S404:所述处理器根据所述第一触发指令,退出操作系统并执行BIOS的内 存数据的迁移指令。
所述处理器接收到所述SMI中断之后,进入系统管理模式,此时所述处理器 退出OS并执行BIOS的内存数据的迁移指令,所述内存数据的迁移指令可以使得 所述处理器执行步骤S405-步骤S411。
S405:所述处理器查询所述ACPI列表,确定所述源内存卡和所述备份内存 卡。
由于所述处理器预先在所述ACPI列表中记录了所述源内存卡和所述备份内 存卡的标识,因此所述处理器可以查询所述述ACPI列表中,获取记录的所述源 内存卡和所述备份内存卡的标识,根据所述源内存卡和所述备份内存卡的标识, 确定所述源内存卡和所述备份内存卡。
当所述备份内存卡有多个时,则所述处理器可以从所述ACPI列表中获取多 个所述备份内存卡的标识,并根据所述源内存卡的信息,从多个所述备份内存卡 的标识中挑选一个作为所述备份内存卡的标识,例如根据所述源内存卡的内存容 量,从所述多个备份内存卡中挑选一个内存容量大于所述源内存卡的内存容量的 内存卡,确定该内存卡的标识作为所述备份内存卡的标识,又例如,可以根据所 述源内存卡归属的处理器的信息,从所述多个备份内存卡中挑选一个与所述源内 存卡不属于同一个处理器控制的内存卡,确定该内存卡的标识作为所述备份内存 卡的标识。
S406:所述处理器确定所述备份内存卡是否满足迁移条件。
S407:若所述备份内存卡满足迁移条件,则所述处理器指示所述源内存卡的 内存控制器执行内存巡检操作,以确定所述源内存卡中的非错误数据。
S408:若所述备份内存卡满足迁移条件,则所述处理器将所述源内存卡和所 述备份内存卡设置为镜像模式。
S409:所述处理器指示所述源内存卡的内存控制器进行内存数据的迁移。
S410:所述处理器建立所述源内存卡的系统地址与所述备份内存卡的映射关 系。
S411:所述处理器对所述源内存卡执行下电操作。
在本发明实施例中,步骤S406-S411的具体实施方式与步骤S307-S312类似, 在此不再赘述。
在所述源内存卡的内存数据迁移完成之后,所述处理器可以对所述源内存卡 执行下电操作,使得在所述计算机不下电的情况下,可以移除或者更换所述源内 存卡,解决了现有技术中需要对整个计算机下电才能进行故障内存卡的更换或维 护的问题。
在本发明实施例中,所述处理器可以获取第一触发指令,根据所述第一触发 指令,退出OS并执行BIOS的内存数据的迁移指令,所述BIOS的内存数据的迁 移指令使得所述处理器能够确定所述源内存卡和所述备份内存卡,并在确定所述 备份内存卡满足迁移条件后,将所述源内存卡和所述备份内存卡设置为镜像模式, 指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内存数据 写入所述备份内存卡,从而在计算机不下电的情况下,能够对所述源内存卡的内 存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需要对整 个计算机下电才能进行故障内存卡的更换或维护的问题。并且,所述处理器根据 触发的第一触发指令,启动内存数据的迁移,只在源内存卡出现故障或需要进行 内存数据迁移时才进行内存数据迁移,有效节约了系统资源。此外,由于所述处 理器是执行BIOS的指令完成内存数据的迁移,能够实现对OS内核模块所在的内 存卡的数据进行迁移,避免了不能对OS内核模块数据进行迁移的问题。。
在本发明实施例中,所述处理器还可以将所述源内存卡的所有数据迁移到所 述备份内存卡,而不是只迁移在启动内存迁移之后,新写入所述源内存卡的内存 数据,保证了内存数据的完整迁移。进一步,所述处理器还可以根据分次迁移策 略,指示所述源内存卡的内存控制器分多次将所述源内存卡的内存数据迁移到所 述备份内存卡,使得在进行内存数据迁移的过程中,所述处理器能够根据需求退 出OS执行BIOS的内存数据的迁移指令,或者退出BIOS执行OS的指令进行业 务处理,从而保证所述计算机的业务能够及时处理,避免在进行大量内存数据迁 移时导致的计算机业务的长时间中断,保障了该计算机的正常运行。进一步,所 述处理器还能够指示所述源内存卡的内存控制器确定所述源内存卡中的非错误数 据,并指示所述源内存卡的内存控制器将所述非错误数据迁移到所述备份内存卡, 避免将所述源内存卡中的错误数据迁移到所述备份内存卡而可能导致的计算机重 启。
进一步,在本发明实施例中,在进行内存数据迁移之前,所述处理器还可以 确定所述备份内存卡是否满足迁移条件,如果满足迁移条件,才对所述源内存卡 进行内存数据的迁移,保证了内存数据迁移的顺利进行,避免由于所述备份内存 卡未完成初始化或者内存容量不够等问题而导致的数据迁移失败。
本发明实施例提供了一种基本输入输出系统,如图5所示,所述基本输入输 出系统包括计算机执行指令501,所述基本输入输出系统可以是一个处理芯片, 当计算机的处理器执行所述计算机执行指令501时,所述计算机执行如下方法:
确定待迁移内存数据的源内存卡;
为所述源内存卡确定备份内存卡;
指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所述源内存卡 的内存控制器根据所述处理器的指示将所述源内存卡的内存数据迁移到所述备份 内存卡。
进一步,所述计算机还可以根据所述计算机执行指令501执行如下方法:
将所述源内存卡和所述备份内存卡设置为镜像模式;
所述处理器指示所述源内存卡的内存控制器进行内存数据的迁移,以使得所 述源内存卡的内存控制器根据所述处理器的指示读取所述源内存卡的内存数据, 将所读取的所述源内存卡的内存数据写入到所述备份内存卡,包括:
所述处理器向所述源内存卡的内存控制器发送数据读指令,所述数据读指令 用于指示所述源内存卡的内存控制器读取所述源内存卡的内存数据;
所述处理器向所述源内存卡的内存控制器发送数据写指令,所述数据写指令 用于指示所述源内存卡的内存控制器将所述读取的数据写回所述源内存卡,以使 得所述源内存卡的内存控制器根据所述处理器的数据读指令读取所述源内存卡的 内存数据,接收到所述数据写指令后,根据所述源内存卡和所述备份内存卡之间 的镜像模式,将所读取的所述源内存卡的内存数据发送给所述备份内存卡的内存 控制器。
进一步,所述计算机还可以根据所述计算机执行指令501执行如下方法:
所述计算机获取分次迁移策略;
所述计算机根据所述分次迁移策略,指示所述源内存卡的内存控制器分多次 进行内存数据的迁移。进一步,所述计算机根据所述分次迁移策略指示所述源内 存卡的内存控制器分多次进行内存数据的迁移可以包括:
所述计算机确定当次迁移的数据量,指示所述源内存卡的内存控制器将所述 当次迁移的数据量迁移到所述备份内存卡,或者,所述计算机确定当次迁移的时 长,指示所述源内存卡的内存控制器在所述当次迁移的时长内进行内存数据的迁 移;
在确定所述源内存卡的内存控制器完成所述当次迁移之后,所述计算机退出 所述基本输入输出系统并执行操作系统的指令。
进一步,所述计算机还可以根据所述计算机执行指令501执行如下方法:
所述计算机确定所述备份内存卡是否满足迁移条件,如果满足所述迁移条件, 执行所述指示所述源内存卡的内存控制器进行内存数据的迁移的步骤;其中,所 述迁移条件包括但不限于以下条件之一或任意组合:所述备份内存卡完成初始化、 所述备份板的内存容量大于或等于所述源内存卡的内存容量。
此外,所述计算机还可以根据所述计算机执行指令501,在所述备份内存卡 未完成初始化时,对所述备份内存卡进行初始化,其中,所述初始化避免为所述 备份内存卡分配系统地址。
进一步,当计算机的处理器执行所述计算机执行指令501时,在所述计算机 指示所述源内存卡的内存控制器进行内存数据的迁移之前,所述计算机还可以执 行如下方法:
所述计算机指示所述源内存卡的内存控制器检测所述源内存卡中的非错误数 据并进行标记;
则,所述计算机根据所述基本输入输出系统的内存数据的迁移指令,指示所 述源内存卡的内存控制器根据所述标记对所述非错误数据进行迁移。
进一步,所述计算机还可以根据所述计算机执行指令501,在确定所述源内 存卡的内存数据全部迁移到所述备份内存卡之后,将所述源内存卡的系统地址指 向的目标内存卡更改为所述备份内存卡。
在本发明实施例中,所述基本输入输出系统包括计算机执行指令501,使得 计算机执行所述计算机执行指令501时,可以确定待迁移内存数据的源内存卡、 为所述源内存卡确定备份内存卡,将所述源内存卡和所述备份内存卡设置为镜像 模式,指示所述源内存卡的内存控制器根据所述镜像模式,将所述源内存卡的内 存数据写入所述备份内存卡,从而在计算机不下电的情况下,能够对所述源内存 卡的内存数据进行迁移,实现了对故障内存卡的在线维护,解决了现有技术中需 要对整个计算机下电才能进行故障内存卡的更换或维护的问题。此外,由于所述 计算机的处理器是执行BIOS的计算机执行指令501完成内存数据的迁移,能够 实现对OS内核模块所在的内存卡的数据进行迁移,避免了不能对OS内核模块数 据进行迁移的问题。
在本发明实施例中,还可以将所述源内存卡的所有数据迁移到所述备份内存 卡,而不是只迁移在启动内存迁移之后,新写入所述源内存卡的内存数据,保证 了内存数据的完整迁移。进一步,所述计算机的处理器执行所述计算机执行指令 501时,还可以根据分次迁移策略,指示所述源内存卡的内存控制器分多次将所 述源内存卡的内存数据迁移到所述备份内存卡,使得在进行内存数据迁移的过程 中,所述处理器能够根据需求退出OS执行BIOS的计算机执行指令501,或者退 出BIOS执行OS的指令进行业务处理,从而保证所述计算机的业务能够及时处理, 避免在进行大量内存数据迁移时导致的计算机业务的长时间中断,保障了该计算 机的正常运行。进一步,所述处理器还能够指示所述源内存卡的内存控制器确定 所述源内存卡中的非错误数据,并指示所述源内存卡的内存控制器将所述非错误 数据迁移到所述备份内存卡,避免将所述源内存卡中的错误数据迁移到所述备份 内存卡而可能导致的计算机重启。
进一步,在本发明实施例中,在进行内存数据迁移之前,所述处理器执行所 述计算机执行指令501时,还可以确定所述备份内存卡是否满足迁移条件,如果 满足迁移条件,才对所述源内存卡进行内存数据的迁移,保证了内存数据迁移的 顺利进行,避免由于所述备份内存卡未完成初始化或者内存容量不够等问题而导 致的数据迁移失败。
本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形 式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算 机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设 备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器 (ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读 存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使 得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生 成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机 上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上, 或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中, 在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。 例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致 同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例 的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。 这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约 束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功 能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或 替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权 利要求的保护范围为准。