多核处理器的模拟方法及装置转让专利

申请号 : CN201410328044.7

文献号 : CN105279007B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈新科黄帅王焕东

申请人 : 龙芯中科技术有限公司

摘要 :

本发明提供一种多核处理器的模拟方法及装置,包括:在现场可编程门阵列FPGA模拟生成一个目标处理器核和共享功能部件;在所述FPGA中根据所述目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使所述目标处理器核、所述共享功能部件和所述伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。

权利要求 :

1.一种多核处理器的模拟方法,其特征在于,包括:

多核处理器的模拟装置在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;

所述多核处理器的模拟装置在所述FPGA中根据所述目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使所述目标处理器核、所述共享功能部件和所述伪处理器核形成多核处理器;

所述多核处理器的模拟装置在所述FPGA中根据所述目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,具体包括:所述多核处理器的模拟装置提取所述目标处理器核和运行的应用程序的特征信息,以使所述伪处理器核模拟生成符合所述特征信息的Trace流。

2.根据权利要求1所述的方法,其特征在于,所述模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核之后,还包括:在所述目标处理器核和所述伪处理器核上运行所述应用程序,确定所述共享功能部件的性能参数。

3.根据权利要求1或2所述的方法,其特征在于,所述在所述FPGA中根据所述目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核之后,还包括:为所述伪处理器核生成私有缓存,所述私有缓存包括存储地址及其控制位。

4.根据权利要求1或2所述的方法,其特征在于,所述特征信息包括:所述应用程序的访存密度、访存地址空间大小、私有缓存缺失率和读写比例中的至少一种。

5.一种多核处理器的模拟装置,其特征在于,包括:

第一生成模块,用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;

第二生成模块,用于在所述FPGA中根据所述第一生成模块模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使所述第一生成模块模拟生成的目标处理器核、所述第一生成模块模拟生成的共享功能部件和所述第二生成模块模拟生成的伪处理器核形成多核处理器;

提取单元,用于提取所述第一生成模块模拟生成的目标处理器核和运行的应用程序的特征信息,以使所述第二生成模块模拟生成的伪处理器核模拟生成符合所述特征信息的Trace流。

6.根据权利要求5所述的装置,其特征在于,所述多核处理器的模拟装置,还包括:确定模块,用于在所述第一生成模块模拟生成的目标处理器核和所述第二生成模块模拟生成的伪处理器核上运行所述应用程序,确定所述共享功能部件的性能参数。

7.根据权利要求5或6所述的装置,其特征在于,所述多核处理器的模拟装置,还包括:第三生成模块,用于为所述第二生成模块模拟生成的伪处理器核生成私有缓存,所述私有缓存包括存储地址和控制位。

说明书 :

多核处理器的模拟方法及装置

技术领域

[0001] 本发明涉及计算机技术,尤其涉及一种多核处理器的模拟方法及装置。

背景技术

[0002] 在计算机架构设计中,由于一个设计方法的优劣和设计参数的取舍很难通过建立模型的方法进行理论推导,因此通常通过运行实际应用程序,运用模拟的方法对目标机器的性能进行定量分析和评估。
[0003] 通过使用现场可编程门阵列(Field Programmable Gate Array,简称FPGA)可以提高模拟速度。常用的使用FPGA模拟多核处理器的方法是基于FPGA的时分复用的模拟方法,具体的,对于多核处理器中多个对称的处理器核,可以只在FPGA上实现一个处理器核,并通过让多个处理器核依次轮流使用这一个真实的处理器核来模拟多个处理器核的同时运行。例如,假定要模拟一个8核处理器,则在第1个时钟周期,核1首先在真实的处理器核上运行,该周期结束时将核1的状态保存下来,第2个时钟周期,核2开始运行并保存状态,……,直至第8个时钟周期,核8开始运行并保存状态。8个时钟周期结束后,所有的8个处理器核都运行了一个时钟周期,在访问共享功能部件时,该方法需要将在第1至7个时钟周期分别运行的核1、核2……核7的访问请求,滞后到第8个周期核8运行之后,连同第8个周期运行的核8的访问请求,一起触发访问共享功能部件。
[0004] 然而,现有的模拟方法模拟速度慢,实现复杂度高。

发明内容

[0005] 本发明提供一种多核处理器的模拟方法及装置,以解决现有技术中模拟多核处理器时,模拟速度慢及实现复杂度高的问题。
[0006] 本发明的第一方面,提供一种多核处理器的模拟方法,包括:
[0007] 在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;
[0008] 在所述FPGA中根据所述目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使所述目标处理器核、所述共享功能部件和所述伪处理器核形成多核处理器。
[0009] 本发明的第二方面,提供一种多核处理器的模拟装置,包括:
[0010] 第一生成模块,用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;
[0011] 第二生成模块,用于在所述FPGA中根据所述第一生成模块模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使所述第一生成模块模拟生成的目标处理器核、所述第一生成模块模拟生成的共享功能部件和所述第二生成模块模拟生成的伪处理器核形成多核处理器。
[0012] 本发明实施例提供的多核处理器的模拟方法,包括:在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与所述目标处理器核共同访问所述共享功能部件的伪处理器核,所述伪处理器核用于产生用于访问所述共享功能部件的访问请求,以使目标处理器核、共享功能部件和伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。

附图说明

[0013] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0014] 图1为本发明实施例一提供的一种多核处理器的模拟方法的流程图;
[0015] 图2为本实施例提供的一种四核处理器的示意图;
[0016] 图3为本发明实施例二提供的一种多核处理器的模拟方法的流程图;
[0017] 图4为本发明实施例三提供的一种多核处理器的模拟装置的结构示意图;
[0018] 图5为本发明实施例四提供的一种多核处理器的模拟装置的结构示意图;
[0019] 图6为本发明实施例五提供的一种多核处理器的模拟装置的结构示意图;
[0020] 图7为本发明实施例六提供的一种多核处理器的模拟装置的结构示意图;
[0021] 图8为本发明实施例七提供的一种多核处理器的模拟装置的结构示意图。

具体实施方式

[0022] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023] 图1为本发明实施例一提供的一种多核处理器的模拟方法的流程图。如图1所示,该方法包括以下步骤:
[0024] 步骤S100、在FPGA中模拟生成一个目标处理器核和共享功能部件。
[0025] 步骤S101、在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使目标处理器核、共享功能部件和伪处理器核形成多核处理器。
[0026] 上述各步骤的执行主体为具备模拟和处理功能的模拟装置。在实际中,该模拟装置可以是处理器。
[0027] 具体的,可以在FPGA中模拟生成一个目标处理器核和共享功能部件。该目标处理器核可以实现真实的处理器核的功能,该共享功能部件为多个处理器核共享的一些功能部件,如互联网络、内存控制器(Memory Controller)及最后一级缓存(Last Level Cache)等。
[0028] 进一步地,可以在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,以使目标处理器核、共享功能部件和伪处理器核形成多核处理器。上述伪处理器核的功能是用来产生与上述目标处理器核类似的访问请求,即访问共享功能部件的访问请求,也就是说,该伪处理器核的功能相当于处理器核的历史痕迹(Trace)生成器,其与目标处理器核、共享功能部件等一起,共同构成了在FPGA上模拟实现的多核处理器。
[0029] 需要说明的是,在实际中,在FPGA上模拟生成目标处理器核和共享功能部件的操作均与现有技术相同,例如将目标处理器核和共享功能部件的代码在FPGA上实现,而上述模拟生成伪处理器核只需将能够产生访问请求的代码在FPGA上实现即可。
[0030] 此外,由于上述伪处理器核不需要实现详细的流水线、计算单元、运算单元和私有缓存等结构,因而它们占用的FPGA资源非常少,因此在实际中,可以只实现一个目标处理器核,而将其余核用伪处理器核替代。
[0031] 以4核处理器为例,图2为本实施例提供的一种四核处理器的示意图。如图2所示,图中的箭头均表示有信息交互,此外,目标处理器核1为真实的处理器核,即上述目标处理器核,而伪处理器核2~4均为上述伪处理器核,共享功能部件1为互联网络,其两侧的两个接口均为片间互联接口,即与其他芯片相连的接口,共享功能部件2为最后一级Cache,共享功能部件3为内存控制器。在实现时,可以只将一个处理器核1以及共享功能部件1~3用一个或少数几个FPGA实现,而将剩余的处理器核采用上述模拟生成伪处理器核的方式在FPGA上实现,如此便将整个系统全部实现在一个或少数几个FPGA中。由于保留了一个真实的目标处理器核,而其余核均是用伪处理器核替代,因此,可以使用这个目标处理器核来运行实际应用程序,产生可信的运行结果。与只在FPGA上实现一个处理器核的模拟方法相比,由于添加了多个伪造的伪处理器核,从而构造了一个多个处理器核简称多核的环境,因而可以精确地反映在共享资源竞争的情况下,真实的处理器核会受到的影响,并动态的反应到实时的Trace流中,因此可以有效地评估共享功能部件在多核环境下的性能。
[0032] 本发明实施例提供的多核处理器的模拟方法,包括:在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使目标处理器核、共享功能部件和伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0033] 图3为本发明实施例二提供的一种多核处理器的模拟方法的流程图。在本实施例中,各步骤的执行主体为具备模拟和处理功能的模拟装置。在实际中,该模拟装置可以是处理器。如图3所示,该方法包括以下步骤:
[0034] 步骤S200、在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件。
[0035] 具体的,该步骤的描述与步骤S100的描述相同,在此不再赘述。
[0036] 步骤S201、在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核。
[0037] 具体的,该步骤的描述与步骤S101的描述相同。
[0038] 由于上述伪处理器核是为了产生与目标处理器核类似的访问请求,因此,可以对应用程序的行为特征进行提取,从而使得伪处理器核可以产生与目标处理器核类似的访问共享功能部件的访问请求。
[0039] 作为一种可行的实施方式,可以将目标处理器核的访问请求,即该目标处理器核运行待运行的应用程序时产生的访问请求,如数据访问接口的访问请求和一致性消息接口的访问请求等,作为伪处理器核的输入信号,让伪处理器核生成与真实处理器核特征相同的实时的Trace流,以模拟典型的多用户相同进程的情况,其中,实时的Trace流是指在应用程序的整个运行过程中,对出现的访问请求的实时记录。在实际中,在模拟生成伪处理器核时,可以在FPGA上实现能够检测目标处理器核生成的访问请求以及能够根据目标处理器核生成的实时的Trace流,生成特征类似的实时的Trace流的代码,从而在目标处理器核运行应用程序时,伪处理器核也可以生成实时的Trace流。
[0040] 作为另一种可行的实施方式,可以提取目标处理器核和其运行的应用程序的特征信息,以使伪处理器核模拟生成符合该特征信息的Trace流,以模拟多用户混合进程,即不同进程的情况。该特征信息可以包括:应用程序的访存密度、访存地址空间大小、私有缓存缺失率和读写比例中的至少一种。在实际中,可以根据提取的特征信息,在FPGA上模拟生成能够生成符合特征信息的Trace流的伪处理器核。
[0041] 需要说明的是,对于第一种实施方式,由于伪处理器核的访问请求是基于目标处理器核的访问请求生成的,因此,其更适用于评估多核上运行相同的应用程序时的多核处理器的性能;对于第二种实施方式,由于伪处理器核的访问请求是基于应用程序的特征信息生成的,因此,其可以用于评估多核上运行不同的应用程序时的多核处理器的性能。
[0042] 步骤S202、在目标处理器核和伪处理器核上运行应用程序,确定共享功能部件的性能参数。
[0043] 具体的,可以通过在目标处理器核和伪处理器核上运行应用程序,对多核处理器的性能进行评估,也就是确定共享功能部件的性能参数,例如评估整个多核系统的缓存一致性、互联网络的处理速度和响应频率、内存控制器的处理速度和响应频率等。
[0044] 可选的,在评估缓存一致性时,可以为伪处理器核生成私有缓存的存储地址及其控制位。上述私有缓存的存储地址及其控制位相当于一个伪造的私有缓存,它们对一致性消息的处理过程与真实的私有缓存完全一样,但其不需要存储数据内容,因而只需要存储地址(Tag)和其它的用于控制缓存一致性的控制位即可。对于缓存行大小为64字节的缓存来说,其面积大约为真实缓存的1/8左右,因此,这种只实现存储地址和控制位的方式的实现复杂度低,占用资源少。具体在评估缓存一致性时,可以伪造一些激励让伪造的私有缓存主动发出与目标处理器核及其他伪处理器核地址相同的共享访问,就可以模拟缓存一致性的行为。
[0045] 在评估互联网络和内存控制器的性能时,它们作为共享功能部件,其主要任务分别是数据路由和数据存取,它们收到的访问请求是来自上述目标处理器核还是伪处理器核,对它们来说并没有差别。因此,添加伪处理器核的方法可以很好地模拟多核环境,并评估这些共享功能部件的性能。
[0046] 本发明实施例提供的多核处理器的模拟方法,包括:在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;在FPGA中根据目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使目标处理器核、共享功能部件和伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0047] 图4为本发明实施例三提供的一种多核处理器的模拟装置的结构示意图。如图4所示,该多核处理器的模拟装置1包括:第一生成模块10和第二生成模块11。
[0048] 具体的,第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块11用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块20模拟生成的伪处理器核形成多核处理器。
[0049] 本实施例提供的多核处理器的模拟装置1,包括:第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块11用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块20模拟生成的伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0050] 图5为本发明实施例四提供的一种多核处理器的模拟装置的结构示意图。如图5所示,该多核处理器的模拟装置2包括:第一生成模块10和第二生成模块20。图5中的第一生成模块10与实施例三相同,此处不再赘述。第二生成模块20包括:输入单元21。
[0051] 具体的,输入单元21用于将第一生成模块10模拟生成的目标处理器核的访问请求作为第二生成模块20模拟生成的伪处理器核的输入信号,以使第二生成模块20模拟生成的伪处理器核模拟产生实时的历史痕迹Trace流。
[0052] 本实施例提供的多核处理器的模拟装置2,包括:第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块20用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块20模拟生成的伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0053] 图6为本发明实施例五提供的一种多核处理器的模拟装置的结构示意图。如图6所示,该多核处理器的模拟装置3包括:第一生成模块10和第二生成模块30。图6中的第一生成模块10与实施例三相同,此处不再赘述。第二生成模块30包括:提取单元31。需要说明的是,在实际中,该第二生成模块30也可以同时包括实施例四种的输入单元21和本实施例的提取单元31,此处并未示出,但其也在本发明的保护范围之内。
[0054] 具体的,提取单元31用于提取第一生成模块10模拟生成的目标处理器核和运行的应用程序的特征信息,以使第二生成模块30模拟生成的伪处理器核模拟生成符合特征信息的Trace流。
[0055] 本实施例提供的多核处理器的模拟装置3,包括:第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块30用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块30模拟生成的伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0056] 图7为本发明实施例六提供的一种多核处理器的模拟装置的结构示意图。如图7所示,该多核处理器的模拟装置4包括:第一生成模块10、第二生成模块11和确定模块40。图7中的第一生成模块10和第二生成模块11,与实施例三相同,此处不再赘述。需要说明的是,此处的第二生成模块11也可以是上述实施例中的第二生成模块20或30。
[0057] 具体的,确定模块40用于在第一生成模块10模拟生成的目标处理器核和第二生成模块11模拟生成的伪处理器核上运行应用程序,确定共享功能部件的性能参数。
[0058] 本实施例提供的多核处理器的模拟装置4,包括:第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块11用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块11模拟生成的伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0059] 图8为本发明实施例七提供的一种多核处理器的模拟装置的结构示意图。如图8所示,该多核处理器的模拟装置5包括:第一生成模块10、第二生成模块11和第三生成模块50。图8中的第一生成模块10和第二生成模块11,与实施例三相同,此处不再赘述。需要说明的是,此处的第二生成模块11也可以是上述实施例中的第二生成模块20或30。此外,该多核处理器的模拟装置5也可以。
[0060] 具体的,第三生成模块50用于为第二生成模块11模拟生成的伪处理器核生成私有缓存,私有缓存包括存储地址和控制位。
[0061] 本实施例提供的多核处理器的模拟装置4,包括:第一生成模块10用于在现场可编程门阵列FPGA中模拟生成一个目标处理器核和共享功能部件;第二生成模块11用于在FPGA中根据第一生成模块10模拟生成的目标处理器核运行的应用程序,模拟生成至少一个与目标处理器核共同访问共享功能部件的伪处理器核,伪处理器核用于产生用于访问共享功能部件的访问请求,以使第一生成模块10模拟生成的目标处理器核、第一生成模块10模拟生成的共享功能部件和第二生成模块11模拟生成的伪处理器核形成多核处理器。采用本发明实施例的技术方案,可以降低模拟多核处理器的复杂度,并提高模拟速度。
[0062] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0063] 所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0064] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0065] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。