一种用于处理器仿真模型中的系统调用转换直通通道方法

文档序号:6612933阅读:149来源:国知局
专利名称:一种用于处理器仿真模型中的系统调用转换直通通道方法
技术领域
本发明涉及处理器仿真模型,操作系统系统调用,目标软件仿真和调试等 技术领域,尤其涉及一种用于处理器仿真模型中的系统调用转换的直通通道方法。
背景技术
在基于微处理器的嵌入式系统开发中,处理器仿真模型是个重要的评估工 具。它能够模拟目标处理器硬件执行目标程序的过程,统计目标程序运行过程 中所消耗的时钟周期数、目标处理器内部寄存器实时状态、流水线信息、内部 各个执行单元的工作负荷等目标处理器运行时的详细动态信息。它使得嵌入式 系统架构设计人员和嵌入式系统软件设计人员在目标处理器硬件实现之前就 可以以较小的工作量,较快的速度,较高的精确度对嵌入式系统设计空间进行 有效搜索,快速平衡嵌入式软件和硬件的任务划分,进而改进系统设计,縮短 迭代周期,提高设计的效率和质量。同时,嵌入式处理器硬件设计人员依据时 钟精确的处理器仿真模型进行硬件处理器的设计和修改,和系统软件人员并行 工作,从而做到了软硬件协同设计,提高了嵌入式系统的开发效率。具体内容 可参见参考文献1。
处理器仿真模型一般由高级程序语言编写而成(一般为c/c十+语言),是
一个运行于主机上的嵌入式系统评估平台。对主机而言,它是一个普通的应用
程序;但是对用户而言,它是一个嵌入式目标系统的仿真平台。
在处理器仿真模型上运行的是各种面向特定应用领域的目标程序,它们被 用来评估、检测和统计目标处理器的性能指标,为嵌入式系统架构设计和软硬 件任务划分提供可靠的依据。目标程序一般由高级程序语言编写而成(一般为
(:化++语言)。在处理器仿真模型上运行目标代码,按照传统的方法,需要一个
操作系统运行于该仿真模型的平台之上,在该操作系统平台上运行目标程序。 虽然运行操作系统可以使目标程序得到完善的支持,提高目标程序运行的可靠 性和可移植性,但运行操作系统不仅带来了额外的仿真开销,增加了目标程序
的运行时间;而且其产生的结果在某些时候会影响目标程序的评估结果,使得 目标程序的真实运行信息被掩盖,失去目标程序的意义。而如果摈弃操作系统 在处理器仿真模型上直接运行目标裸程序,就会涉及到许多底层操作和修改, 显然这会破坏目标程序的可靠性和可移植性,影响目标程序的快速仿真和嵌入
式系统的高效开发。因此对于嵌入式系统开发人员来说,迫切需要找到一种既 不影响目标程序的运行信息,也不增加额外的仿真开销,又可以直接进行快速
仿真评估的方法。
在计算机系统中,系统调用是计算机操作系统的核心内容之一。运行在操 作系统之上的目标程序发出的底层操作请求正是通过它得到实现的。它不仅可 以将应用程序对计算机硬件的访问请求传达到计算机硬件设备,控制其完成指
定的操作,并将操作结果反馈给应用程序;而且可以对系统软件资源进行管理、 调度和优化,提高系统的执行效率。具体内容可参见参考文献2。在处理器仿 真模型中,通过对系统调用进行转换和映射,可以取代运行操作系统而使目标 程序获得良好的支持,从而实现目标程序在处理器仿真模型上快速和准确的仿 真。目前存在的处理器仿真模型中的系统调用转换方法, 一般都采用在处理器 异常服务子程序中对目标程序的系统调用进行转换的方法,这种方法需要处理 器频繁地进行上下文切换,进入异常服务子程序后才能进行系统调用的转换, 导致系统调用转换的效率低,代码复杂,可移植性和可扩展性都比较差。 参考文献
1. 马鹏,徐国强.微处理器仿真技术研究.计算机工程,2003年29巻2 期:213-214,260;
2. Abraham Silberschatz,Peter Baer Galvin,Greg Gagne著,郑扣根译.操作系 统概念(第六版翻译版).高等教育出版社,2004年。

发明内容
本发明的目的是为了提高处理器仿真模型中系统调用转换的效率,降低其 转换实现的复杂度,实现目标程序在模拟平台上的快速评估和调试,提供一种 用于处理器仿真模型中的系统调用转换直通通道方法。
目标程序源代码经过处理器的软件工具链的处理后,其中的系统调用请求 最终都体现为系统调用异常指令的形式,由处理器仿真模型进行执行,同时系 统调用的各个参数被存放在处理器的指定的通用寄存器中。本发明提出的处理 器仿真模型中的系统调用转换直通通道就是在处理器仿真模型执行系统调用 异常指令的过程中实现的。在对每个系统调用进行转换和实现的过程中,本发 明提出了转换子通道的方式,每个转换子通道之间相互独立,各自对对应的系 统调用进行转换,据此便可独立添加和定制不同的系统调用转换,可扩展性很 好。
用于处理器仿真模型中的系统调用转换直通通道方法包括如下步骤
1) 在处理器仿真模型中的系统调用异常指令执行模块中,建立用于系统
调用转换的直通通道入口函数;
2) 在步骤1)所建立的直通通道入口函数中,利用处理器仿真模型中的寄 存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存;
3) 根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类,对于 每一类系统调用,建立起一个对应的系统调用转换子通道函数,在步骤l)所 建立的直通通道入口函数中对其进行调用;
4) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口 模块将该类系统调用的数据地址参数所指向的数据从处理器仿真模型的存储 器空间传送到主机系统的存储器空间;
5) 在步骤3)所建立的子通道函数中,把由步骤2)所提取并暂存的仿真 模型的系统调用的参数转换为适用于主机系统的系统调用的参数,调用主机系 统的对应于该类的系统调用,并接收主机系统的系统调用的返回数据地址及返 回值;
6) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口 模块,将步骤5)中接收的主机系统的系统调用的返回数据地址所指向的数据 从主机系统的存储器空间传送到处理器仿真模型的存储器空间;
7) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的寄存器组 模块及其所定义的写方法,将步骤5)中接收到的主机系统的系统调用返回值 写回处理器仿真模型的寄存器组,标志此次系统调用的结束。
所述的在步骤l)所建立的直通通道入口函数中,利用处理器仿真模型中 的寄存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存根 据系统调用的参数被全部存放于处理器仿真模型的寄存器组中的Rl至R6寄 存器中这一特征,利用处理器仿真模型中的寄存器组模块及其所定义的读寄存 器的方法,从处理器仿真模型的寄存器组中提取出系统调用异常指令所包含的 全部参数,对应于所提取的全部参数,自定义一组数据变量,将提取出来的每 一个系统调用参数存放在一个自定义变量中。
所述的根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类, 对于每一类系统调用,建立起一个对应的系统调用转换子通道函数,在步骤l) 所建立的直通通道入口函数中进行调用处理器仿真模型中系统调用的参数列 表中的第一个参数的值表示该系统调用所属的类别编号,根据这一特征,使用 步骤2)中所存放在自定义变量中的系统调用的第一个参数,对该系统调用进
行所属类别划分,对于每一类系统调用,建立对应的一个系统调用转换子通道 函数,该子通道函数被用来对该类系统调用实施具体的转换。
所述的在歩骤3)所建立的子通道函数中,利用处理器仿真模型中的总线 接口模块将该类系统调用的数据地址参数所指向的数据从处理器仿真模型的 存储器空间传送到主机系统的存储器空间利用处理器仿真模型中的总线接口 模块,将系统调用的数据地址参数所指示的数据从处理器仿真模型的存储器空 间中传送到主机系统的存储器空间中,该传送的起始地址由处理器仿真模型中 的系统调用的数据地址参数所指定,该传送的目的地址由用户在主机存储器空 间中自定义的数据结构的地址变量所指定,该传送的数据块大小由处理器仿真 模型中的系统调用的指示数据块大小的参数所指定。
所述的在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线 接口模块,将步骤5)中接收的主机系统的系统调用的返回数据地址所指向的 数据从主机系统的存储器空间传送到处理器仿真模型的存储器空间利用处理 器仿真模型中的总线接口模块,将步骤5)所接收的主机系统的系统调用的返 回数据地址所指向的数据从主机系统的存储器空间中传送到处理器仿真模型 的存储器空间中,该传送的起始地址由主机系统系统调用的返回数据地址参数 所指定,该传送的目的地址由处理器仿真模型中系统调用的指示接收数据存放 地址的参数所指定,该传送的数据块大小由处理器仿真模型中的系统调用的指 示数据块大小的参数所指定。
本发明具有的有益效果
1) 高效、灵活、快速、可靠地替代操作系统实现对目标程序中系统调用
的支持;
2) 可扩展性强,子通道之间相互独立,可以根据不同目标程序的需求灵 活定制系统调用的转换支持;
3) 扩展简单,无需上下文切换开销,代码量小(以C语言为例,平均添 加一个系统调用支持子通道仅需要约30行左右的代码);
4) 可移植性好,该方法为通用方法,可支持多种处理器仿真模型,可运 行于多种主机平台上;
5) 改动代价低,该方法对原处理器仿真模型的改动很小,可以在不改动 原代码的前提下,整体嵌入本发明的系统调用转换直通通道,完成对目标程序 中系统调用的支持。


图1是系统调用转换直通通道在目标系统和主机系统间所处的位置及其功 能示意图2是系统调用转换直通通道的整体结构和工作流程示意图3是系统调用转换子通道的具体结构和工作流程示意图4是在系统调用转换直通通道的支持下,含有系统调用的目标程序的指
令执行流程图。
具体实施例方式
本发明中,处理器仿真模型是一个运行于主机之上的仿真平台,而且主机 上已经存在完善的系统调用接口,于是本发明提出一种方法,在处理器仿真模 型与主机之间建立直通通道,将运行于处理器仿真模型之上的系统调用请求通 过这个直通通道,传送到主机上进行执行,并且将结果由此通道返回。整个系 统调用直通通道完全建立在处理器仿真模型执行目标指令的单元中实现,避免 了处理器仿真模型频繁进入异常服务程序和进行上下文切换的开销,高效实现 了各种系统调用,全面支持目标程序的执行。
用于处理器仿真模型中的系统调用转换直通通道方法包括如下步骤
1) 在处理器仿真模型中的系统调用异常指令执行模块中,建立用于系统 调用转换的直通通道入口函数,目标程序中出现的所有的系统调用异常指令, 都会经由处理器仿真模型的系统调用异常指令执行模块进入此直通通道入口 函数,进而被转换执行,参见图l;
2) 在步骤1)所建立的直通通道入口函数中,利用处理器仿真模型中的寄 存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存,参见图 2;
3) 根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类,对于 每一类系统调用,建立起一个对应的系统调用转换子通道函数,每个转换子通 道之间相互独立,各自对对应的系统调用进行转换,据此便可独立添加和定制 不同的系统调用转换。在步骤l)所建立的直通通道入口函数中进行调用,参
见图2;
4) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口 模块将该类系统调用的数据地址参数所指向的数据从处理器仿真模型的存储
器空间传送到主机系统的存储器空间,参见图3;
5) 在步骤3)所建立的子通道函数中,把由步骤2)所提取并暂存的仿真 模型的系统调用的参数转换为适用于主机系统的系统调用的参数,调用主机系
统的对应于该类的系统调用,并接收主机系统的系统调用的返回数据地址及返 回值,参见图3;
6) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口 模块,将步骤5)中接收的主机系统的系统调用的返回数据地址所指向的数据 从主机系统的存储器空间传送到处理器仿真模型的存储器空间,参见图3;
7) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的寄存器组 模块及其所定义的写方法,将步骤5)中接收到的主机系统的系统调用返回值 写回处理器仿真模型的寄存器组,标志此次系统调用的结束,参见图3。
所述的在步骤l)所建立的直通通道入口函数中,利用处理器仿真模型中
的寄存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存根
据系统调用的参数被全部存放于处理器仿真模型的寄存器组中Rl至R6寄存 器中这一特征,利用处理器仿真模型中的寄存器组模块及其所定义的读寄存器 的方法,从处理器仿真模型的寄存器组中提取出系统调用异常指令所包含的全 部参数,对应于所提取的全部参数,自定义一组数据变量,将提取出来的每一 个系统调用参数存放在一个自定义变量中。
所述的根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类, 对于每一类系统调用,建立起一个对应的系统调用转换子通道函数,在步骤l)
所建立的直通通道入口函数中进行调用处理器仿真模型中系统调用的参数列
表中的第一个参数的值表示该系统调用所属的类别编号,根据这一特征,使用
步骤2)中所存放在自定义变量中的系统调用的第一个参数,对该系统调用进
行所属类别划分,对于每一类系统调用,建立对应的一个系统调用转换子通道 函数,该子通道函数被用来对该类系统调用实施具体的转换。
所述的在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线
接口模块将该类系统调用的数据地址参数所指向的数据从处理器仿真模型的
存储器空间传送到主机系统的存储器空间利用处理器仿真模型中的总线接口 模块,将系统调用的数据地址参数所指示的数据从处理器仿真模型的存储器空 间中传送到主机系统的存储器空间中,该传送的起始地址由处理器仿真模型中 的系统调用的数据地址参数所指定,该传送的目的地址由用户在主机存储器空 间中自定义的数据结构的地址变量所指定,该传送的数据块大小由处理器仿真 模型中的系统调用的指示数据块大小的参数所指定。
所述的在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线 接口模块,将步骤5)中接收的主机系统的系统调用的返回数据地址所指向的
数据从主机系统的存储器空间传送到处理器仿真模型的存储器空间利用处理 器仿真模型中的总线接口模块,将步骤5)所接收的主机系统的系统调用的返 回数据地址所指向的数据从主机系统的存储器空间中传送到处理器仿真模型 的存储器空间中,该传送的起始地址由主机系统系统调用的返回数据地址参数 所指定,该传送的目的地址由处理器仿真模型中系统调用的指示接收数据存放 地址的参数所指定,该传送的数据块大小由处理器仿真模型中的系统调用的指 示数据块大小的参数所指定。 实施例
实现处理器仿真模型中的"读(read)"系统调用,该系统调用的分类编号 是3,该系统调用的功能是从指定的主机文件或设备中读取数据到仿真模型中 指定的地址。实现本发明具体所包含的步骤如下
1) 在处理器仿真模型中的系统调用异常指令执行模块中,建立用于系统 调用转换的直通通道入口函数;
2) 在步骤1)所建立的直通通道入口函数中,利用处理器仿真模型中的寄 存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存,取得该 系统调用的各个参数;
3) 根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类,对于 每一类系统调用,建立起一个对应的系统调用转换子通道函数,根据第一个参 数所表示的系统调用号来选择对应的转换子通道函数,本实施例中第一个参数 值为3,即表示3号"读(read)"系统调用,建立对应的3号子通道函数,并 将剩余的参数传递给该子通道函数。系统调用直通通道的子通道是完成系统调 用转换的实体,不同的系统调用对应着不同的子通道。在步骤l)所建立的直
通通道入口函数中调用该3号子通道函数;
4) 在步骤3)所建立的子通道函数中,对3号子通道函数中所接收的三个 参数进行相应的转换参数一表示所要读取的主机上的目标文件的描述符,直
接传递给主机系统,作为主机"读(read)"系统调用的参数一;参数三表示所 要读取的字节数,直接传递给主机系统,作为主机"读(read)"系统调用的参 数三;根据该参数三所规定的字节数运用高级程序语言向主机的存储器申请相 同大小的一块内存空间,并将该块内存空间的起始地址作为主机的"读(read)" 系统调用的参数二;
5) 在步骤3)所建立的子通道函数中,根据步骤4)中得到的三个主机系 统调用的参数,调用主机系统的"读(read)"系统调用,从由参数一指定的文
件中读取由参数三指定的字节数的数据存放到由参数二所指定的主机内存中;
6) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口
模块,将步骤5)中主机"读(read)"系统调用执行后所读取的数据内容从主 机的内存中传递到处理器仿真模型的存储器空间中,其中,前者的地址由主机 的"读(read)"系统调用的参数二所指定,后者的地址由目标程序的"读(read)" 系统调用的参数二指示;
7) 在步骤3)所建立的子通道函数中,利用处理器仿真模型中的寄存器组 模块及其所定义的写方法,将步骤5)中主机"读(read)"系统调用的返回值 写入处理器仿真模型中的指定的通用寄存器,标志此次系统调用的结束。至此, 完成3号"读(read)"系统调用由处理器仿真模型到主机系统的转换执行。
权利要求
1.一种用于处理器仿真模型中的系统调用转换直通通道方法,其特征在于包括如下步骤1)在处理器仿真模型中的系统调用异常指令的执行模块中,建立用于系统调用转换的直通通道入口函数;2)在步骤1)所建立的直通通道入口函数中,利用处理器仿真模型中的寄存器组模块及其所定义的读方法,对系统调用的参数进行提取和暂存;3)根据步骤2)所提取并暂存的系统调用参数对系统调用进行分类,对于每一类系统调用,建立起一个对应的系统调用转换子通道函数,在步骤1)所建立的直通通道入口函数中对其进行调用;4)在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口模块将该类系统调用的数据地址参数所指向的数据从处理器仿真模型的存储器空间传送到主机系统的存储器空间;5)在步骤3)所建立的子通道函数中,把由步骤2)所提取并暂存的仿真模型的系统调用的参数转换为适用于主机系统系统调用的参数,调用主机系统的对应于该类的系统调用,并接收主机系统的系统调用的返回数据地址及返回值;6)在步骤3)所建立的子通道函数中,利用处理器仿真模型中的总线接口模块,将步骤5)中接收的主机系统的系统调用的返回数据地址所指向的数据从主机系统的存储器空间传送到处理器仿真模型的存储器空间;7)在步骤3)所建立的子通道函数中,利用处理器仿真模型中的寄存器组模块及其所定义的写方法,将步骤5)中接收到的主机系统的系统调用返回值写回处理器仿真模型的寄存器组,标志此次系统调用的结束。
2. 根据权利要求1所述的一种用于处理器仿真模型中的系统调用转换直通 通道方法,其特征在于所述的在步骤l)所建立的直通通道入口函数中,利用 处理器仿真模型中的寄存器组模块及其所定义的读方法,对系统调用的参数进 行提取和暂存根据系统调用的全部参数被存放于处理器仿真模型的通用寄存 器组中Rl至R6寄存器中这一特征,利用处理器仿真模型中的寄存器组模块 及其所定义的读寄存器的方法,从处理器仿真模型的寄存器组中提取出系统调 用异常指令所包含的全部参数,对应于所提取的全部参数,自定义一组数据变 量,将提取出来的每一个系统调用参数存放在一个自定义变量中。
3. 根据权利要求1所述的一种用于处理器仿真模型中的系统调用转换直通通道方法,其特征在于所述的根据步骤2)所提取并暂存的系统调用参数对系 统调用进行分类,对于每一类系统调用,建立起一个对应的系统调用转换子通 道函数,在步骤l)所建立的直通通道入口函数中对其进行调用处理器仿真 模型中系统调用的参数列表中的第一个参数的值即Rl寄存器的值表示该系统 调用所属的类别编号,根据这一特征,使用步骤2)中所存放在自定义变量中 的系统调用的第一个参数的值,对该系统调用进行所属类别的划分,对于每一 类系统调用,建立对应的一个系统调用转换子通道函数,该子通道函数被用来 对该类系统调用实施具体的转换。
4. 根据权利要求1所述的一种用于处理器仿真模型中的系统调用转换直通 通道方法,其特征在于所述的在步骤3)所建立的子通道函数中,利用处理器 仿真模型中的总线接口模块将该类系统调用的数据地址参数所指向的数据从 处理器仿真模型的存储器空间传送到主机系统的存储器空间利用处理器仿真模型中的总线接口模块,将系统调用的数据地址参数所指示的数据从处理器仿 真模型的存储器空间中传送到主机系统的存储器空间中,该传送的起始地址由 处理器仿真模型中的系统调用的数据地址参数所指定,该传送的目的地址由用 户在主机存储器空间中自定义的指示接收数据存放地址的变量所指定,该传送 的数据块大小由处理器仿真模型中的系统调用的指示数据块大小的参数所指 定。
5. 根据权利要求1所述的一种用于处理器仿真模型中的系统调用转换直通 通道方法,其特征在于所述的在步骤3)所建立的子通道函数中,利用处理器 仿真模型中的总线接口模块,将步骤5)中接收的主机系统的系统调用的返回 数据地址所指向的数据从主机系统的存储器空间传送到处理器仿真模型的存 储器空间利用处理器仿真模型中的总线接口模块,将步骤5)所接收的主机 系统的系统调用的返回数据地址所指向的数据从主机系统的存储器空间中传 送到处理器仿真模型的存储器空间中,该传送的起始地址由主机系统系统调用 的返回数据地址参数所指定,该传送的目的地址由处理器仿真模型中系统调用 的指示接收数据存放地址的参数所指定,该传送的数据块大小由处理器仿真模 型中的系统调用的指示数据块大小的参数所指定。
全文摘要
本发明公开了一种用于处理器仿真模型中的系统调用转换的直通通道方法。利用处理器仿真模型中的寄存器组模块对目标程序中的系统调用参数进行提取和处理,并利用总线接口模块完成数据在不同系统空间之间的搬运,对相应的目标程序中的系统调用进行转换。这一系列过程是被嵌入在处理器仿真模型执行系统调用异常指令的过程中实现的。该方法清晰的划分了系统调用转换直通通道的入口,子通道等各个模块,定义了整个流程,使得系统调用转换直通通道结构明晰,维护简单,升级方便。该方法具有可扩展性强,可移植性好,改动代价低等优点,能够进行高效的系统调用转换,支持目标程序的快速仿真和高效调试。
文档编号G06F9/455GK101187881SQ20071016446
公开日2008年5月28日 申请日期2007年12月3日 优先权日2007年12月3日
发明者严晓浪, 孟建熠, 燎 殷, 凯 黄 申请人:浙江大学;杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1