一种联合模拟系统及其工作方法

文档序号:6483601阅读:166来源:国知局
专利名称:一种联合模拟系统及其工作方法
技术领域
本发明涉及模拟系统加速的技术领域,特别是涉及一种联合模拟系统及其 工作方法。
背景技术
模拟器可以理解为"用纯软件的手段来仿真某一种硬件机能的机器",它是 研究新型高性能计算机体系结构的一种快速、有效的手段,是计算机体系结构 研究者的重要工具。当构建一个新系统时,模拟器可以有效地测试和验证新系 统的正确性并对其性能进行验证,可以大大降低开发的成本和时间。利用模拟 器,可以使得硬件生产厂商在构建系统之前对硬件验证,还可以使得软件开发 商在样机生产之前就能够进行软件开发,从而使软、硬件同时面世成为可能。 另外,模拟器可以在程序运行时收集机器的运行信息,帮助分析系统的行为, 从而进行相关的优化。由于模拟器的直观性和易用性,它在计算机组成和体系 结构教学领域也有广泛的应用。
目前,软件模拟器的应用最为广泛,但软件模拟器的主要弱点就是执行速
度较低,模拟的规模有限。Derek Chiou提出了软硬结合的模拟器FAST,用于 实现一个运行速度快、模拟精度高的单节点模拟器。由于硬件的执行速度很快, 所以相对于纯软件模拟器,这种混合模拟技术可以起到加速作用。
模拟器FAST将功能模拟和时序模拟分离开来,对于功能模拟部分使用软 件模拟器QEMU来实现,而对于时序模拟部分使用现场可编程门阵列模拟器来 实现。软件模拟器只提供指令集架构,确保程序可以正确运行。现场可编程门 阵列模拟器模拟微结构,模拟分支预测、缓存状态等。功能级模拟器和时序级 模拟器之间通过一个缓冲区来交互。功能级模拟器产生执行的踪迹信息,时序 级模拟器从缓冲区中读出踪迹信息进行微结构模拟。可以看出,模拟器FAST 的技术特点在于将一次指令模拟分为两个部分,重点关注的部分,即需要详细 模拟的部分,利用硬件加速;非关注部分由软件处理。相比于其它软件模拟器,模拟器FAST由于硬件的辅助可以更快地获取到
详细的时序模拟信息。但是模拟器FAST定位于单机模拟的加速,而对于大规
模并行应用程序来说,单机模拟的加速对整体的加速效果影响十分有限,随着 模拟规模的扩展,单机模拟加速手段不具备可扩展性。
现有的模拟器对大规模并行应用模拟时会模拟应用程序各个进程在所有 目标节点上运行行为的细节,当各个进程采用的工作集相近的时候,获取所有 节点的模拟细节信息意义不大,因为这些信息反映的行为特征相近,具有冗余 信息。另外,对大规模并行应用模拟时,模拟周期通常很长。而希望通过模拟 获取到的信息种类又很多,例如访存行为特种、指令执行的时序特征等。 一般 来说, 一种模拟器获取的信息种类越多其模拟速度越慢,所以仅采用一种模拟 器很难既快速又详细的获取多种行为特征信息。

发明内容
本发明的目的在于提供一种联合模拟系统及其工作方法,能够加速模拟异 构系统中的并行应用程序,达到既快速又详细的获取多种行为的特征信息的目 的。
为实现本发明的目的而提供的一种联合模拟系统,包括至少两台物理计 算机、系统主控进程模块和进程库,其中
至少一台物理计算机,包括宿主机系统模块和管理进程模块,其中 所述宿主机系统模块,用于运行宿主机进程;
所述管理进程模块,用于管理其所在物理计算机上的宿主机进程;
至少一台物理计算机,包括一种或多种类型的模拟器,代理进程模块,以
及目标机操作系统模块,其中
所述模拟器,用于模拟目标机,并获取在所述目标机上运行的目标机进程
的具体行为的特征信息;
所述代理进程模块,用于管理其所在物理计算机上的所述模拟器; 所述目标机操作系统模块,用于运行目标机进程;
系统主控进程模块,位于任意一台所述物理计算机上,用于将控制命令传 递给所述代理进程模块和所述管理进程模块;
进程库,位于每一台所述物理计算机上,用于联合模拟系统的通信操作。所述模拟器,包括一虚拟设备,所述虚拟设备使用虚拟设备所在模拟器的
资源;所述虚拟设备所在物理计算机上的代理进程模块通过控制所述虚拟设备
间接控制所述模拟器。
所述目标机操作系统模块包括驱动程序模块和后台进程模块,其中 所述驱动程序模块,用于在所述虚拟设备和目标机进程之间传递消息; 所述后台进程模块,用于控制该后台进程模块所在的目标机操作系统模块
上运行的目标机进程。
所述目标机操作系统模块,根据所述模拟器的不同类型实现不同的目标机
操作系统。
所述目标机操作系统模块,根据所述模拟器的不同类型实现相同的目标机 操作系统。
为实现本发明的目的还一种联合模拟系统,包括一台物理计算机,其特征 在于,所述物理计算机包括宿主机系统模块、管理进程模块、模拟器、代理 进程模块、目标机操作系统模块、系统主控进程模块和进程库,其中
所述宿主机系统模块,用于运行宿主机进程;
所述管理进程模块,用于管理宿主机进程;
所述模拟器,用于模拟目标机,并获取在所述目标机上运行的目标机进程
的具体行为的特征信息;
所述代理进程模块,用于管理所述模拟器; 所述目标机操作系统模块,用于运行目标机进程;
所述系统主控进程模块,用于将控制命令传递给所述代理进程模块和所述 管理进程模块;
所述进程库,负责代理进程模块和所述管理进程模块通信操作。 所述模拟器,包括一虚拟设备,所述虚拟设备使用虚拟设备所在模拟器的 资源;所述代理进程模块通过控制所述虚拟设备间接控制所述模拟器。
所述目标机操作系统模块包括驱动程序模块和后台进程模块,其中 所述驱动程序模块,用于在所述虚拟设备和目标机进程之间传递消息; 所述后台进程模块,用于控制所述目标机操作系统模块上运行的目标机进程。
所述目标机操作系统模块,根据所述模拟器的类型确定目标机操作系统。所述宿主机进程,包括SHELL程序的进程,用于发出控制命令;所述SHELL 程序由用户根据所需的功能自行编写,是根据用户输入的命令调用系统提供的 接口。
相应于一种联合模拟系统,本发明提供应用于该联合模拟系统的工作方 法,包括下列步骤
步骤A、确定联合模拟系统中的模拟器的类型并为联合模拟系统编写任务 分配脚本;
步骤B、根据所述任务分配脚本,启动联合模拟系统,为联合模拟系统中 运行的应用程序的进程统一分配系统进程ID,并利用所述任务分配脚本为联 合模拟系统创建并加载、销毁联合模拟系统中运行的应用程序的进程;
步骤C、根据所述任务分配脚本和所述系统进程ID,实现所述联合模拟系 统中运行的应用程序的进程自由通信。
所述步骤A,包括下列步骤
步骤A1、确定联合模拟系统中模拟器的类型;
步骤A2、为联合模拟系统编写任务分配脚本。
步骤A2中,所述任务分配脚本的语法格式是
物理机名进程类型 子进程数。
所述步骤B包括下列步骤
步骤Bl、为联合模拟系统中运行的应用程序的进程统一分配系统进程ID;
步骤B2、利用所述任务分配脚本为联合模拟系统创建并加载、销毁联合 模拟系统中运行的应用程序的进程;
步骤B1中,所述统一分配系统进程ID,需要确定进程空间范围,所述确 定进程空间范围,方法是若一进程空间范围是1 N,另一进程空间范围是l M,而宿主机上的进程空间是1 P,那么所述联合模拟系统能够提供范围在l (M+N+P)的进程空间。
所述创建并加载包括下列步骤
步骤B21、使用任务分配脚本创建并加载宿主机进程、目标机进程。 步骤B21中,所述创建并加载宿主机进程,方法是用户输入创建宿主机 进程请求,通过S服LL程序将创建请求提交给管理进程,该管理进程根据任务 分配脚本确定创建的宿主机进程对应的管理进程,将创建请求转交给与创建的宿主机进程对应的管理进程,该管理进程利用宿主机系统提供的进程创建和加载机制实现宿主机进程的创建和加载。
所述SHELL程序是应用程序,用于发出控制命令;SHELL程序由用户根据
所需的功能自行编写,是根据用户输入的命令调用系统提供的接口。
步骤B21中,所述创建并加载目标机进程,方法是用户输入创建目标机
进程的请求,通过SHELL程序将创建请求传递给将要运行目标机进程的模拟器对应的代理进程,该代理进程则将目标机进程创建请求转交给该模拟器的虚拟设备;虚拟设备通过中断程序通知驱动程序提取目标机进程创建请求,而驱动程序则将提取的目标机进程创建请求转给目标机的后台进程;目标机的后台进程利用目标机操作系统提供的机制创建并加载目标机进程。
所述加载分为两种情况若目标机进程未指定模拟器,联合模拟系统将从目标机进程空间中随机选取一个系统进程ID分配给该目标机进程,将该目标机进程加载到随机选择的模拟器上运行,相应改变任务分配脚本中的数据;若目标机进程指定模拟器,那么联合模拟系统将在该模拟器映射的进程空间范围内为该目标机进程选择一个系统进程ID,将该目标机进程将被加载到指定的模拟器上,相应改变任务分配脚本中的数据。
步骤C中,所述通信分为两个层面首先是系统主控进程、代理进程、管理进程之间的通信;其次是宿主机的应用程序的进程之间、目标机的应用程序的进程之间、宿主机的应用程序的进程与目标机的应用程序的进程之间通信。
所述步骤C还进一步包括
步骤Cl、位于同一宿主机上的不同宿主机进程之间进行通信;步骤C2、位于同一目标机上的不同目标机进程之间进行通信;步骤C3、位于不同目标机上的目标机进程之间进行通信;步骤C4、位于不同宿主机上的宿主机进程之间进行通信;步骤C5、位于宿主机上宿主机进程与位于目标机上的目标机进程之间进行通信。
所述步骤C3包括下列步骤
步骤C31,发送端的目标机进程,将数据提交给已经编译到发送端目标机的通信库;
步骤C32,所述通信库将数据封装成可以用于转发的数据包,然后将数据包提交给发送端的驱动程序;
步骤C33,所述驱动程序不对数据包进一步处理,直接传递给发送端的模拟器的虚拟设备;
步骤C34,所述虚拟设备需要根据传输网络的情况将大数据包划分为若干数据包分片然后再传递给相应代理进程;
步骤C35,所述代理进程根据联合模拟系统的进程树确定将请求转交的代理进程,然后转发数据包分片;
步骤C36,所述代理进程接收到数据包分片后,根据联合模拟系统的进程树确定将请求转交的代理进程,然后转发数据包分片;
步骤C37,接收数据包分片的代理进程将数据包分片转发给根据目的系统进程ID找到的目标机进程所在的模拟器的虚拟设备,该虚拟设备此时不会重组数据包分片,而是将数据包分片通知给接收端的驱动程序;
步骤C38,接收端的驱动程序接收数据包分片并将数据包分片重组回原来的数据包提交给接收端的通信库;
步骤C39,接收端通信库接收到数据包后将数据包提交给接收端的根据目的系统进程ID找到的目标机进程,完成数据传输过程。
所述步骤C4包括下列步骤
步骤C41,发送端的宿主机进程,将数据提交给己经编译到发送端的宿主机的通信库;
步骤C42,所述通信库将数据封装成用于转发的数据包,然后将数据包提交给发送端的宿主机的管理进程;
步骤C43,所述管理进程根据联合模拟系统的进程树确定将请求转交的管理进程,然后转发数据包;
步骤C44,所述管理进程接收数据包后将数据包提交给接收端的进程库;
步骤C45,所述接收端的通信库接收到数据包后将数据提交给接收端的根据目的系统进程ID找到的宿主机进程,完成数据传输过程。
所述步骤C5包括下列步骤
步骤C51,发送端的宿主机进程,将数据提交给已经编译到发送端的宿主机的通信库;
步骤C52,所述通信库将数据封装成用于转发的数据包,然后将数据包提交给发送端的宿主机的管理进程;
步骤C53,所述管理进程根据联合模拟系统的进程树确定将转发的代理进 程,并根据传输网络的情况将大数据包划分为若干数据包分片转发给确定的代 理进程;
步骤C54,所述代理进程接收数据包分片,并根据目的系统进程ID找到 目标机进程所在模拟器的虚拟设备,并转发数据包分片;
步骤C55,所述虚拟设备此时不会重组数据包分片,而是将数据包分片通 知给接收端的目标机操作系统的驱动程序;
步骤C56,所述驱动程序接收数据包分片并将数据包分片重组回原来的数 据包提交给接收端的进程库;
步骤C57,所述接收端的进程库将接收的数据包提交给根据目的系统进程 ID找到的目标机进程,完成数据传输过程。
所述进程树,与所述任务分配脚本对应,其中所述系统主控进程位于根节 点,叶节点是运行在所述联合模拟系统中的应用程序的进程,其它节点对应的 是所述模拟器的虚拟设备和所述代理进程或所述管理进程。
本发明采用多种形式模拟器联合模拟的方法运行大规模应用程序的进程, 将应用程序的进程划分为若干类别,每种类别的进程运行在一类模拟器上,由 于每个模拟器单独模拟的规模变小,所以达到快速整理模拟过程的效果,同时 实现获取多种类型的行为特征信息。


图1是本发明联合模拟系统一实施例的组成结构图2是本发明联合模拟系统的实施例说明图3是本发明联合模拟系统的工作方法的流程图4是联合模拟系统中模块间关系示意图5是本发明中进程空间的映射关系图6是本发明中进程的树形结构图7是本发明联合模拟系统另一实施例的组成结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明的一种联合模拟系统及其工作方法进行进一步详细说明。应当 理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种联合模拟系统及其工作方法,能够加速模拟异构系统中的并 行应用程序,达到既快速又详细的获取多种行为的特征信息的目的。现有的模 拟器对大规模并行应用程序模拟时会模拟应用程序的各个进程在所有目标节 点上运行行为的细节,当各个进程采用的工作集相近的时候,获取所有节点的 模拟细节信息意义不大,因为这些信息反映的行为特征相近,具有冗余信息, 所以本发明的本质是将所有目标节点上运行的实现主要行为与细节行为的应 用程序的进程分开,只对主要行为模拟,从而实现了模拟系统的加速,进而实 现快速获取特征信息。
同时,本发明采用多种形式模拟器联合模拟的方法模拟大规模应用程序的 进程,将应用程序的进程划分为若干类别,每种类别的进程运行在一类模拟器 上,由于每个模拟器单独模拟的规模变小,所以也达到快速整理模拟过程的效 果,另一方面,由于多种模拟器共同模拟,从而实现同时获取到多种类型的行 为特征信息。
为了更好的描述本发明,首先说明有关本发明的一些概念 宿主机,是指实际的物理计算机; 目标机,是指模拟器模拟出的计算机; 主要行为,是指应用程序的进程中受关注的行为; 细节行为,是指应用程序的进程中不受关注的行为; 宿主机进程,是指实现细节行为的应用程序的进程; 目标机进程,是指实现主要行为的应用程序的进程。
图l是本发明联合模拟系统一实施例的组成结构图,参照图l,本发明的 联合模拟系统包括一台物理计算机,所述物理计算机包括宿主机系统模块、 管理进程模块、模拟器、代理进程模块、目标机操作系统模块、进程库以及系 统主控进程模块,其中
所述宿主机系统模块,用于直接运行宿主机进程,而不获取该宿主机进程 的具体行为的特征信息;所述宿主机系统模块,直接运行宿主机进程,所以不会获取到该宿主机进 程的细节行为信息,但可以快速执行,辅助联合模拟系统中的其他进程完成任 务从而对整个模拟过程起到加速作用。
本发明中,在宿主机系统模块上运行的宿主机进程中包括sm^LL程序的进
程,所述SHELL程序是一种特殊的应用程序,仅用于发出控制命令;SHELL程 序由用户根据所需的功能自行编写,是根据用户输入的命令调用系统提供的接 Pl。
所述管理进程模块,用于管理在宿主机系统模块上运行的宿主机进程,对 宿主机进程之间的消息传递起到路由作用;
所述模拟器,用于模拟目标机,并获取在所述目标机上运行的目标机进程 的具体行为的特征信息;
所述模拟器只获取应用程序中主要行为的特征信息,减少了模拟器的模拟 规模,实现了整体模拟过程的加速。
所述模拟器可以是一台模拟器,也可以是多种类型的多台模拟器;在多台 模拟器的情况下,每一台模拟器只获取与模拟器本身具有相同类型的具体行为 的特征信息,保证了一次执行后能够同时获取到多种行为特征。
所述代理进程模块,用于管理所述模拟器,对所述模拟器或在所述模拟器 上运行的目标机进程之间的消息传递起到路由作用;
所述模拟器还包括虚拟设备,所述虚拟设备由其所在的模拟器调用;所述 虚拟设备是一种模拟技术领域通用的虚拟设备。
对于模拟器而言,此虚拟设备是其组成部分,虚拟设备可以利用模拟器的 资源;对于代理进程模块而言,虚拟设备是模拟器的代理人,通过控制虚拟设 备可以间接控制模拟器。
所述目标机操作系统模块,用于运行目标机进程;
所述目标机操作系统模块,既可以根据所述模拟器的不同类型实现不同的 目标机操作系统模块,也可以实现相同的目标机操作系统。
所述目标机操作系统模块还包括驱动程序模块和后台进程模块。 所述驱动程序模块位于目标机操作系统模块中,负责驱动程序与目标机进 程直接通信。为了使软硬件方便沟通,在目标机操作系统中需要为模拟器中的虚拟设备 编写驱动程序供驱动程序模块调用,消息可以通过驱动程序在虚拟设备和驱动 程序模块之间自由传递。
另外,可以在目标机操作系统之上通过后台进程模块启动一个后台进程
(demon进程)。通过后台进程可以实现对目标机进程的创建和销毁等操作。 所述代理进程模块,负责与虚拟设备直接通信。
所述系统主控进程模块,通过系统主控进程负责将控制命令传递给所述管 理进程模块和代理进程模块,实现全局的控制;
所述进程库,主要用于负责系统请求的创建、重组、转发等与通信相关的 操作,也称作通信库。它可以链接到所述驱动程序中或应用程序中,当链接到 应用程序中时可以称作应用程序库。应用程序利用应用程序库实现与模拟器模 拟的目标机进程通信。
所述系统主控进程、所述代理进程以及所述管理进程都被编译成一般意义 上的可执行文件,可以独立运行;所述虚拟设备、所述进程库以及所述驱动程 序都被编译成通信库。
所述后台进程既可以是一般意义上的可执行程序也可以是通信库。如果是 作为可执行程序,那么后台进程运行在目标机操作系统上,以用户态执行;如 果后台进程是作为通信库,则链接到指定的目标机进程中形成运行在目标机操 作系统中的核心态程序。
图7是本发明联合模拟系统另一实施例的组成结构图,参照图7,作为一 种可实施方式,本发明所述的联合模拟系统还可以以多个物理计算机的形式组 成,所述联合模拟系统包括至少两台物理计算机、系统主控进程模块和进程 库,其中
至少一台物理计算机,包括宿主机系统模块和管理进程模块,其中 所述宿主机系统模块,用于直接运行宿主机进程,而不获取该宿主机进程
的具体行为的特征信息;
本发明中,在宿主机系统模块上运行的宿主机进程中包括SHELL程序的进
程,所述SHELL程序是一种特殊的应用程序,仅用于发出控制命令;SHELL程
序由用户根据所需的功能自行编写,是根据用户输入的命令调用系统提供的接□。所述管理进程模块,负责管理宿主机进程,对宿主机进程之间的消息传递 起到路由作用;
至少一台物理计算机,包括 一种或多种类型的模拟器,代理进程模块, 以及目标机操作系统模块,其中
所述模拟器,用于模拟目标机,并获取所述目标机上运行的目标机进程的 具体行为的特征信息;
所述模拟器包括一个虚拟设备;
所述代理进程模块,用于管理其所在物理计算机上的模拟器,对所述模拟 器或在模拟器上运行的目标机进程之间的消息传递起到路由作用;
所述目标机操作系统模块,用于运行目标机进程。
所述目标机操作系统模块,既可以根据目标机进程的具体行为的类型相应 改变目标机操作系统,也可以不改变目标机操作系统。
所述目标机操作系统模块,包括后台进程模块和驱动程序模块。
系统主控进程模块,可位于任意一台所述物理计算机上,通过系统主控进 程将控制命令传递给代理进程模块和管理进程模块,实现全局的控制。
进程库,位于每一台所述物理计算机上,用于负责请求的创建、重组、转 发等与通信相关的操作。
包含多个物理计算机的联合模拟系统中的各组成部分之间的关系和通信 方式与包含一个物理计算机的联合模拟系统的情况一致,在此不再一一赘述。
本发明一种联合模拟系统,可以多种形式组成,包括但不限于以上所述两 种方式,用户可根据具体需要,决定联合模拟系统的组成形式。
图2是本发明联合模拟系统的另一实施例说明图,参照图2,作为一种实 施方式,在这个联合模拟系统虚拟出来的目标系统上模拟由6个应用程序的进 程构成的Li叩ack并行程序。可以看到,如果这六个应用程序的进程仅在访存 模拟器上运行,那么由于规模增加,整个模拟周期至少是图1中配置的3倍。 而最终获取到的信息也仅仅是访存信息。采用异构系统联合模拟系统后,将访 存模拟器和指令时序模拟器整合在一起后,保证了 一次执行后同时获取到访存 行为信息和指令时序信息。另外,由于将一部分任务分配给宿主机快速执行, 从而减少了模拟器的模拟规模,实现了整体模拟过程的加速。本发明的联合模拟系统将现有的模拟器技术及通信技术集成在一起达到 联合模拟的效果,从而达到了一次执行后同时获取多种行为的特征信息的目 的;系统内部的机制没有参与加速,但系统结构保证了参与的模拟器所要模拟 的任务规模变小,从而达到了加速效果。
相应于一种联合模拟系统,本发明还提供一种联合模拟系统的工作方法。 图3是本发明联合模拟系统的工作方法的流程图,图4是联合模拟系统中
模块间关系示意图,参照图3、图4,本发明联合模拟系统的工作方法包括下
列步骤
步骤SIOO,确定联合模拟系统中的模拟器的类型并为联合模拟系统编写 任务分配脚本;
进一步地,所述步骤S100,包括下列步骤 步骤110,确定联合模拟系统中模拟器的类型;
根据模拟器模拟目标机进程的具体行为,确定模拟器的类型,不同类型的 模拟器获取不同类型的行为的特征信息,多台模拟器共同模拟保证了一次执行 后能够同时获取多种行为的特征信息。
举例说明,若模拟器模拟目标机进程的具体行为是访存行为,则模拟器的 类型是访存模拟器,获取到访存行为的特征信息。
歩骤120,为联合模拟系统编写任务分配脚本;
为了易于联合模拟系统的使用人员配置联合模拟系统及系统中每个模拟 器所负责的任务,使用人员只需编写简单的任务分配脚本,就可以在指定的模 拟器上执行所要求的目标机进程。
所述配置任务分配脚本的语法格式如下
物理机名进程类型 子进程数。
如图4所示, 一个模拟器的目标机上运行三个应用程序,代理进程运行在
物理机0上,管理进程运行于物理机1和物理机2上,各管理两个应用程序。
主控进程不会直接参与应用程序的管理,所以这个配置脚本是 物理机1 主控进程 0
物理机0代理进程 3 物理机1 管理进程1 2 物理机2管理进程2 2歩骤200,根据任务分配脚本,启动联合模拟系统,为联合模拟系统中运 行的应用程序的进程统一分配系统进程ID,并利用所述任务分配脚本为联合
模拟系统创建并加载、销毁联合模拟系统中运行的应用程序的进程;
根据任务分配脚本启动联合模拟系统,在对应物理计算机上运行宿主机的 操作系统、代理进程、管理进程、目标机操作系统和系统主控进程。
进一步地,所述步骤S200包括下列步骤
步骤S210,为联合模拟系统中运行的应用程序的进程统一分配系统进程
ID;
为了便于支持模拟器整合到基于异构系统的联合模拟系统中,联合模拟系 统需要提供单一进程空间,即运行在联合模拟系统上的应用程序的进程被统一
分配系统进程ID,运行在联合模拟系统上的应用程序的进程通过系统进程ID 进行合作而无需关心进程所处的环境(即所述应用程序的进程是在宿主机系统 上运行,还是在模拟机的操作系统上运行)。
为了支持单一进程空间,联合模拟系统首先需要知道进程空间的范围。由 于每个集成到联合模拟系统中的模拟器本身也存在一个进程空间范围,所以联 合模拟系统需要从更高的层次管理进程空间,从而形成一个全局进程空间到局 部进程空间的映射关系。
所述模拟器为现有技术中的模拟器,包括指令模拟器、访存模拟器、指 令时序模拟器等模拟器。
图5是本发明中全部进程空间的映射关系图,下面以图5为例来说明此映
射关系。
假设指令模拟器的进程空间范围是1 N,访存模拟器的空间范围是1 M, 而宿主机上允许的进程空间是1 P,这些信息通过基于异构系统的联合模拟 系统的任务分配脚本传递给基于异构系统的联合模拟系统。那么基于异构系统 的联合模拟系统可以提供一个范围在l (M+N+P)的进程空间。
步骤220,利用所述任务分配脚本为联合模拟系统创建并加载、销毁联合 模拟系统中运行的应用程序的进程;
所述进程的创建并加载和销毁根据上述任务分配脚本实现,所述步骤 S220包括下列步骤
步骤S221,使用任务分配脚本,创建并加载运行在联合模拟系统上的应用程序的进程;
所述进程又分为宿主机进程和目标机进程两类,模拟器只获取所述目标机 进程的具体行为的特征信息,而不获取宿主机进程的具体行为的特征信息,从 而减少了模拟器的模拟规模,实现了整体模拟过程的加速。
步骤S2211,使用任务分配脚本创建并加载宿主机进程;
用户输入创建宿主机进程请求,通过SHELL程序将创建请求提交给相应的 管理进程,该管理进程根据任务分配脚本确定创建的宿主机进程对应的管理进 程,所以将创建请求转交给与创建的宿主机进程对应的管理进程,该管理进程 利用宿主机系统提供的进程创建和加载机制实现宿主机进程的创建和加载。
例如,如图4所示,创建宿主机的应用程序4的进程时,SHELL程序将创 建请求提交给管理进程1,管理进程1根据任务分配脚本确定应用程序4由管 理进程2管理,所以将创建请求转交给管理进程2。管理进程2利用宿主机操 作系统提供的进程创建机制实现应用程序4的进程的创建和加载。
步骤S2212,使用任务分配脚本创建并加载目标机进程;
用户输入创建目标机进程的请求,通过SHELL程序将创建请求传递给将要 运行目标机进程的模拟器对应的代理进程,该代理进程则将目标机进程创建请 求转交给该模拟器的虚拟设备。虚拟设备通过中断程序通知驱动程序提取目标 机进程创建请求,而驱动程序则将提取的目标机进程创建请求转给目标机的后 台进程。由于目标机的后台进程根据目标机操作系统特点而设计,所以可以利 用目标机操作系统的机制创建目标机进程。
例如,如图4所示,创建目标机的应用程序2的过程与消息传递的过程类 似,只是驱动程序最终将创建请求发送给后台进程,由后台进程利用目标机操 作系统的机制完成目标机的应用程序2的进程创建与加载。
目标机操作系统的现有机制支持进程创建后的加载,所以后台进程将直接 根据请求中的应用程序名称和参数调用目标机操作系统的函数完成进程的加 载。
加载目标机进程的时候,分为两种情况
一种情况是如果目标机进程未指定模拟器,联合模拟系统将从目标机进 程空间中随机选取一个系统进程ID分配给该目标机进程,相当于该目标机进 程加载到随机选择的模拟器上运行,那么相应改变任务分配脚本中的数据。另一种情况是如果目标机进程指定模拟器,那么联合模拟系统将在该模 拟器映射的进程空间范围内为该目标机进程选择一个系统进程ID,于是在加 载的时候该目标机进程将被加载到指定的模拟器上,同样相应改变任务分配脚 本中的数据。
步骤S222,使用任务分配脚本,销毁运行在联合模拟系统上的应用程序 的进程;
所述进程销毁过程与创建过程一致,只是传递的请求类型是销毁请求。
步骤S300,根据任务分配脚本和系统进程ID,实现所述联合模拟系统中 运行的应用程序的进程自由通信;
为了方便联合模拟系统中运行的应用程序的进程自由通信,联合模拟系统 中所有运行的进程以进程树结构组织,该进程树与任务分配脚本对应。图6 是本发明中进程的树形结构图,参照图6,其中主控进程位于根节点,叶节点 就是运行在基于异构系统的联合模拟系统中的各种应用程序的进程,其它节点 对应的是模拟器的虚拟设备和代理进程(或管理进程)。进程树结构有效地将 异构系统联合模拟框架中所有进程统一组织在一起。根据进程树可以快速确定 两个叶节点之间的路径,为消息的路由提供了基础。
数据的路由策略根据进程树结构而确定,其路由遵循两个原则
1. 如果当前进程与目标进程具有兄弟关系,则将数据直接发送给目标进程;
2. 否则,将数据直接发送给父进程,由父进程转发。 根据此路由策略,数据的发送链路可以很容易且灵活的确定。 所述统一通信机制分为两个层面首先是所述系统主控进程、所述代理进
程、所述管理进程之间的通信,由于这些模块运行于物理机上,所以可以利用 现有比较成熟的通信库,例如MPICH通信库;其次是宿主机进程之间、目标机 的进程之间、宿主机与目标机的进程之间通信。又分为以下几种情况
1. 位于同一宿主机上的不同宿主机进程之间进行通信;
2. 位于同一目标机上的不同目标机进程之间进行通信; 上述两种可以利用现有的通信技术实现,例如共享内存通信、socket套
接字通信。
3. 位于不同目标机上的目标机进程之伺进行通信;4. 位于不同宿主机上的宿主机进程之间进行通信;
例如,如图4所示,应用程序3和应用程序4,他们通信必须通过管理进
程中转。应用程序3与应用程序4通信时,首先将请求发送给管理进程l,然 后由管理进程1找到应用程序4的管理进程,将请求转发给该管理进程,最后 才到达应用程序4。
5. 位于宿主机上宿主机进程与位于目标机上的目标机进程之间进行通信。 例W,如图4所示,应用程序3与应用程序2通信,由于他们分别位于宿
主机和目标机上,所以请求先由管理进程l转交给代理进程。由于代理进程与 虚拟设备位于相同宿主机上,所以可以利用现有技术直接通信。请求由代理进 程转到虚拟设备后,将利用模拟器系统自身的通信机制将请求提交给目标机操 作系统的驱动程序。驱动程序负责将请求最终提交给应用程序2。
步骤S310,位于不同目标机上的目标机进程之间进行通信时,具体过程 如下
步骤S311,发送端的目标机进程,将数据提交给已经编译到发送端目标 机的通信库;
步骤S312,所述通信库将数据封装成可以用于转发的数据包,然后将数 据包提交给发送端的驱动程序;
步骤S313,所述驱动程序不会对数据包进一步处理,直接传递给发送端 的模拟器的虚拟设备;
步骤S314,所述虚拟设备需要根据传输网络的情况将大数据包划分为若 干小数据包然后再传递给相应代理进程(即与该模拟器位于相同物理计算机上 的代理进程);
由于在后续传输中,位于不同物理计算机上的代理进程可以一次接收的最 大数据包长度不同,所述虚拟设备在将数据发送给相应代理进程前需要根据传 输网络的情况将大数据包划分为若干小数据包(即数据包分片)。
步骤S315,所述代理进程根据联合模拟系统的进程树确定将请求转交的 代理进程,然后转发数据包分片;
步骤S316,所述代理进程接收到数据包分片后,根据联合模拟系统的进 程树确定将请求转交的代理进程,然后转发数据包分片;
步骤S317,接收数据包分片的代理进程将数据包分片转发给根据目的系统进程ID找到地目标机进程所在的模拟器的虚拟设备,该虚拟设备此时不会 重组数据包分片,而是将数据包分片通知给接收端的驱动程序;
步骤S318,接收端的驱动程序接收数据包分片并将数据包分片重组回原 来的数据包提交给接收端的通信库;
步骤S319,接收端通信库接收到数据包后将数据包提交给接收端的根据 目的系统进程ID找到的目标机进程,完成数据传输过程。
步骤S320,位于不同宿主机上的宿主机进程之间进行通信;
步骤S321,发送端的宿主机进程,将数据提交给已经编译到发送端的宿 主机的通信库;
歩骤S322,所述通信库将数据封装成用于转发的数据包,然后将数据包 提交给发送端的宿主机的管理进程;
步骤S323,所述管理进程根据联合模拟系统的进程树确定将请求转交的 管理进程,然后转发数据包;
步骤S324,所述管理进程接收数据包后将数据包提交给接收端的进程库;
步骤S325,所述接收端的通信库接收到数据包后将数据提交给接收端的 根据目的系统进程ID找到的宿主机进程,完成数据传输过程。
步骤S330,位于宿主机上宿主机进程与位于目标机上的目标机进程之间 进行通信。
步骤S331,发送端的宿主机进程,将数据提交给已经编译到发送端的宿 主机的通信库;
步骤S332,所述通信库将数据封装成用于转发的数据包,然后将数据包 提交给发送端的宿主机的管理进程;
步骤S333,所述管理进程根据联合模拟系统的进程树确定将转发的代理 进程,并根据传输网络的情况将大数据包划分为若干数据包分片转发给确定的 代理进程;
步骤S334,所述代理进程接收数据包分片,并根据目的系统进程ID找到 目标机进程所在模拟器的虚拟设备,并转发数据包分片;
步骤S335,所述虚拟设备此时不会重组数据包分片,而是将数据包分片 通知给接收端的目标机操作系统的驱动程序;
步骤S336,所述驱动程序接收数据包分片并将数据包分片重组回原来的
24数据包提交给接收端的进程库;
步骤S337,所述接收端的进程库将接收的数据包提交给根据目的系统进 程ID找到的目标机进程,完成数据传输过程。
本发明的有益效果在于
1. 本发明一种联合模拟系统及其工作方法,具有很强的灵活性,可以支持 多种类型执行应用程序的资源,易于添加新的资源,为以后的扩展提供了便利
条件;
2. 本发明一种联合模拟系统及其工作方法,具有较高的可扩展性,各个进 程各自相对独立,不完全依赖于根节点,保证了系统的可扩展性;
3. 本发明一种联合模拟系统及其工作方法,具有较高的稳定性,每个程序 执行在独立的进程空间中,不会因为某个进程崩溃而导致整个模拟失败;
4. 本发明一种联合模拟系统及其工作方法,能够既快速又详细地获取多 种行为的特征信息。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本 领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只 是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行 解释。
权利要求
1、一种联合模拟系统,用于加速模拟异构系统中的并行应用程序的进程并获取多种行为的特征信息,其特征在于,包括至少两台物理计算机、系统主控进程模块和进程库,其中至少一台物理计算机,包括宿主机系统模块和管理进程模块,其中所述宿主机系统模块,用于运行宿主机进程;所述管理进程模块,用于管理其所在物理计算机上的宿主机进程;至少一台物理计算机,包括一种或多种类型的模拟器,代理进程模块,以及目标机操作系统模块,其中所述模拟器,用于模拟目标机,并获取在所述目标机上运行的目标机进程的具体行为的特征信息;所述代理进程模块,用于管理其所在物理计算机上的所述模拟器;所述目标机操作系统模块,用于运行目标机进程;系统主控进程模块,位于任意一台所述物理计算机上,用于将控制命令传递给所述代理进程模块和所述管理进程模块;进程库,位于每一台所述物理计算机上,用于联合模拟系统的通信操作。
2、 根据权利要求1所述的联合模拟系统,其特征在于,所述模拟器,包 括一虚拟设备,所述虚拟设备使用该虚拟设备所在模拟器的资源;所述虚拟设 备所在物理计算机上的代理进程模块通过控制该虚拟设备间接控制所述模拟巡 益o
3、 根据权利要求2所述的联合模拟系统,其特征在于,所述目标机操作系统模块包括驱动程序模块和后台进程模块,其中所述驱动程序模块,用于在所述虚拟设备和目标机之间传递消息;所述后台进程模块,用于控制该后台进程模块所在的目标机操作系统模块 上运行的目标机进程。
4、 根据权利要求1所述的联合模拟系统,其特征在于,所述目标机操作系统模块对不同类型的模拟器采用相同的目标机操作系统,或根据所述模拟器 的不同类型选择不同的目标机操作系统。
5、 一种联合模拟系统,用于加速模拟异构系统中的并行应用程序的进程 并获取多种行为的特征信息,其特征在于,包括一台物理计算机,其特征在于,所述物理计算机包括宿主机系统模块、管理进程模块、模拟器、代理进程模 块、目标机操作系统模块、系统主控进程模块和进程库,其中所述宿主机系统模块,用于运行宿主机进程;所述管理进程模块,用于管理宿主机进程;所述模拟器,用于模拟目标机,并获取在所述目标机上运行的目标机进程的具体行为的特征信息;所述代理进程模块,用于管理所述模拟器; 所述目标机操作系统模块,用于运行目标机进程;所述系统主控进程模块,用于将控制命令传递给所述代理进程模块和所述 管理进程模块;所述进程库,用于代理进程模块和所述管理进程模块通信操作。
6、 根据权利要求5所述的联合模拟系统,其特征在于,所述模拟器,包 括一虚拟设备,所述虚拟设备使用该虚拟设备所在模拟器的资源;所述代理进 程模块通过控制该虚拟设备间接控制所述模拟器。
7、 根据权利要求6所述的联合模拟系统,其特征在于,所述目标机操作系统模块包括驱动程序模块和后台进程模块,其中-所述驱动程序模块,用于在所述虚拟设备和目标机之间传递消息; 所述后台进程模块,用于控制所述目标机操作系统模块上运行的目标机进程。
8、 根据权利要求5所述的联合模拟系统,其特征在于,所述目标机操作 系统模块,根据所述模拟器的类型确定目标机操作系统。
9、 根据权利要求1或5所述的联合模拟系统系统,其特征在于,所述宿 主机进程,包括SHELL程序的进程,用于发出控制命令;所述Sffi;LL程序由用 户根据所需的功能编写,是根据用户输入的命令调用系统提供的接口。
10、 一种应用于权利要求1至10任一所述的联合模拟系统的工作方法, 其特征在于,包括下列步骤步骤A、为联合模拟系统编写任务分配脚本;步骤B、根据所述任务分配脚本,启动联合模拟系统,为联合模拟系统中 运行的应用程序的进程统一分配系统进程ID,并利用所述任务分配脚本为联 合模拟系统创建并加载、销毁联合模拟系统中运行的应用程序的进程;步骤C、根据所述任务分配脚本和所述系统进程ID,实现所述联合模拟系 统中运行的应用程序的进程自由通信。
11、 根据权利要求10所述的联合模拟系统的工作方法,其特征在于,所 述步骤B包括下列步骤步骤Bl、为联合模拟系统中运行的应用程序的进程统一分配系统进程ID;步骤B2、利用所述任务分配脚本为联合模拟系统创建并加载、销毁联合模拟系统中运行的应用程序的进程。
12、 根据权利要求ll所述的联合模拟系统的工作方法,其特征在于,步 骤B1中,所述统一分配系统进程ID,需要确定进程空间范围,所述确定进程空间范围的步骤包括若一进程空间范围是1 N,另一进程空间范围是1 M,而宿主机上的进程空间是1 p,那么所述联合模拟系统能够提供范围在1 (M+N+P)的进程空间。
13、 根据权利要求11所述的联合模拟系统的工作方法,其特征在于,所 述步骤B2包括下列步骤步骤B21、使用任务分配脚本创建并加载宿主机进程和目标机进程。
14、 根据权利要求13所述的联合模拟系统的工作方法,其特征在于,步 骤B21中,所述创建并加载宿主机进程包括用户输入创建宿主机进程请求, 通过SHELL程序将创建请求提交给管理进程,该管理进程根据任务分配脚本确 定创建的宿主机进程对应的管理进程,将创建请求转交给与创建的宿主机进程 对应的管理进程,该管理进程利用宿主机系统提供的进程创建和加载机制实现 宿主机进程的创建和加载。
15、 根据权利要求14所述的联合模拟系统的工作方法,其特征在于,所 述SHELL程序的进程属于宿主机进程,用于发出控制命令;S服LL程序由用户 根据所需的功能自行编写,是根据用户输入的命令调用系统提供的接口。
16、 根据权利要求15所述的联合模拟系统的工作方法,其特征在于,步 骤B21中,所述创建并加载目标机进程包括:用户输入创建目标机进程的请求, 通过SHELL程序将创建请求传递给将要运行目标机进程的模拟器对应的代理 进程,该代理进程则将目标机进程创建请求转交给该模拟器的虚拟设备;虚拟 设备通过中断程序通知驱动程序提取目标机进程创建请求,而驱动程序则将提 取的目标机进程创建请求转给目标机的后台进程;目标机的后台进程利用目标机操作系统提供的机制创建并加载目标机进程。
17、 根据权利要求16所述的联合模拟系统的工作方法,其特征在于,所 述加载分为两种情况若目标机进程未指定模拟器,联合模拟系统将从目标机 进程空间中随机选取一个系统进程ID分配给该目标机进程,将该目标机进程加载到随机选择的模拟器上运行,相应改变任务分配脚本中的数据;若目标机进程指定模拟器,那么联合模拟系统将在该模拟器映射的进程空间范围内为该目标机进程选择一个系统进程ID,将该目标机进程将被加载到指定的模拟器上,相应改变任务分配脚本中的数据。
18、 根据权利要求10所述的联合模拟系统的工作方法,其特征在于,步 骤C中,所述通信分为两个层面首先是系统主控进程、代理进程、管理进程 之间的通信;其次是宿主机的应用程序的进程之间、目标机的应用程序的进程 之间、宿主机的应用程序的进程与目标机的应用程序的进程之间通信。
19、 根据权利要求10所述的联合模拟系统的工作方法,其特征在于,所 述步骤C还进一步包括步骤Cl、位于同一宿主机上的不同宿主机进程之间进行通信; 步骤C2、位于同一目标机上的不同目标机进程之间进行通信; 步骤C3、位于不同目标机上的目标机进程之间进行通信; 步骤C4、位于不同宿主机上的宿主机进程之间进行通信; 步骤C5、位于宿主机上宿主机进程与位于目标机上的目标机进程之间进 行通信。
20、 根据权利要求19所述的联合模拟系统的工作方法,其特征在于,所 述步骤C3包括下列步骤步骤C31,发送端的目标机进程,将数据提交给已经编译到发送端目标机 的通信库;步骤C32,所述通信库将数据封装成可以用于转发的数据包,然后将数据 包提交给发送端的驱动程序;步骤C33,所述驱动程序不对数据包进一步处理,直接传递给发送端的模 拟器的虚拟设备;步骤C34,所述虚拟设备需要根据传输网络的情况将大数据包划分为若干 数据包分片然后再传递给相应代理进程;步骤C35,所述代理进程根据联合模拟系统的进程树确定将请求转交的代理进程,然后转发数据包分片;步骤C36,所述代理进程接收到数据包分片后,根据联合模拟系统的进程 树确定将请求转交的代理进程,然后转发数据包分片;步骤C37,接收数据包分片的代理进程将数据包分片转发给根据目的系统 进程ID找到的目标机进程所在的模拟器的虚拟设备,该虚拟设备此时不会重 组数据包分片,而是将数据包分片通知给接收端的驱动程序;步骤C38,接收端的驱动程序接收数据包分片并将数据包分片重组回原来 的数据包提交给接收端的通信库;步骤C39,接收端通信库接收到数据包后将数据包提交给接收端的根据目 的系统进程ID找到的目标机进程,完成数据传输过程。
21、 根据权利要求19所述的联合模拟系统的工作方法,其特征在于,所 述步骤C4包括下列步骤步骤C41,发送端的宿主机进程,将数据提交给已经编译到发送端的宿主 机的通信库;步骤C42,所述通信库将数据封装成用于转发的数据包,然后将数据包提 交给发送端的宿主机的管理进程;步骤C43,所述管理进程根据联合模拟系统的进程树确定将请求转交的管 理进程,然后转发数据包;步骤C44,所述管理进程接收数据包后将数据包提交给接收端的进程库;步骤C45,所述接收端的通信库接收到数据包后将数据提交给接收端的根 据目的系统进程ID找到的宿主机进程,完成数据传输过程。
22、 根据权利要求19所述的联合模拟系统的工作方法,其特征在于,所 述步骤C5包括下列步骤步骤C51,发送端的宿主机进程,将数据提交给己经编译到发送端的宿主 机的通信库;步骤C52,所述通信库将数据封装成用于转发的数据包,然后将数据包提 交给发送端的宿主机的管理进程;步骤C53,所述管理进程根据联合模拟系统的进程树确定将转发的代理进 程,并根据传输网络的情况将大数据包划分为若干数据包分片转发给确定的代理进程;步骤C54,所述代理进程接收数据包分片,并根据目的系统进程ID找到 目标机进程所在模拟器的虚拟设备,并转发数据包分片;步骤C55,所述虚拟设备此时不会重组数据包分片,而是将数据包分片通 知给接收端的目标机操作系统的驱动程序;步骤C56,所述驱动程序接收数据包分片并将数据包分片重组回原来的数 据包提交给接收端的进程库;步骤C57,所述接收端的进程库将接收的数据包提交给根据目的系统进程 ID找到的目标机进程,完成数据传输过程。
23、根据权利要求20、 21或者22所述的联合模拟系统的工作方法,其特 征在于,所述进程树,与所述任务分配脚本对应,其中所述系统主控进程位于 根节点,叶节点是运行在所述联合模拟系统中的应用程序的进程,其它节点对 应的是所述模拟器的虚拟设备和所述代理进程或所述管理进程。
全文摘要
本发明公开了联合模拟系统及其工作方法。该系统包括至少两台物理计算机、系统主控进程模块和进程库,其中至少一台物理计算机,包括宿主机系统模块,用于运行宿主机进程;管理进程模块,用于管理其所在物理计算机上的宿主机进程。至少一台物理计算机,包括一种或多种类型的模拟器,用于模拟目标机,并获取目标机进程的具体行为的特征信息;代理进程模块,用于管理其所在物理计算机上的所述模拟器;以及目标机操作系统模块,用于运行目标机进程。系统主控进程模块,位于任意一台所述物理计算机上,用于将控制命令传递给所述代理进程模块和所述管理进程模块。进程库,位于每一台所述物理计算机上,负责联合模拟系统的通信操作。
文档编号G06F9/455GK101477474SQ20091007647
公开日2009年7月8日 申请日期2009年1月4日 优先权日2009年1月4日
发明者潘晓雷, 陈明宇 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1