[发明专利]一种动态二进制翻译指令集模拟器计时方法有效
申请号: | 201410178279.2 | 申请日: | 2014-04-29 |
公开(公告)号: | CN103955357B | 公开(公告)日: | 2017-03-15 |
发明(设计)人: | 郭向英;张西超;赵雷;陈睿 | 申请(专利权)人: | 北京控制工程研究所 |
主分类号: | G06F9/40 | 分类号: | G06F9/40 |
代理公司: | 中国航天科技专利中心11009 | 代理人: | 安丽 |
地址: | 100080 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种动态二进制翻译指令集模拟器计时方法,本方法通过有效划分基本块,使得基本块每次执行时所占用的指令周期数可以在动态翻译阶段确定,从而实现模拟器的精确计时;计时过程包括下列步骤(1)以跳转指令、分支指令和内存访问指令作为基本块的划分依据;(2)在动态翻译过程中,计算被翻译指令的周期数及所在内存区域的内存延迟大小,从而在动态翻译阶段确定基本块每执行一次所占用的指令周期数;(3)模拟器在执行翻译代码时,并以基本块为单位判断实时事件的响应时机。本方法能够对实时事件及时响应,可以满足航天嵌入式软件的强实时性需求,同时由于不需要逐条指令判断实时事件的响应时机,计时开销较小。 | ||
搜索关键词: | 一种 动态 二进制 翻译 指令 模拟器 计时 方法 | ||
【主权项】:
一种动态二进制翻译指令集模拟器计时方法,其特征在于步骤如下:(1)初始化用于记录模拟器模拟执行时间的时间量SimTim为0、定义用于表示基本块内所有指令的周期数总和的计数量X、定义实时事件发生时刻Counter,所述的Counter表示从当前时刻开始,执行Counter个时钟周期后,模拟器开始执行需要处理的实时事件E;(2)定义翻译代码缓存区TC以及定义缓存区LC,所述的缓存区LC用于保存最近访问内存区域的读写延迟参数,通过查询该缓存区可快速获得所访问内存区的读写延迟参数;(3)定义用来保存不同内存区域的指令延迟周期数的内存延迟量、并根据等待状态配置寄存器的值对内存延迟量进行设置;(4)设置模拟器PC寄存器的值为目标程序起始地址;(5)查询缓存区TC,判断模拟器PC寄存器所指地址的指令是否已被翻译,若被翻译则进入步骤(7),否则进入步骤(6);(6)动态翻译基本块,动态翻译基本块具体步骤如下:a)记录当前时刻时间量SimTim的值S,并将计数量X设置为0,同时初始化指令翻译地址addr为PC寄存器的值;b)根据当前指令翻译地址addr对基本块内的指令取指,同时查询缓存区LC获取读写延迟参数,并将该延迟参数的值累加到时间量SimTim中;c)对取指指令进行动态翻译,并将该指令的周期数t累加到X中,即:X=X+t;d)判断当前取指指令是否为跳转或分支指令,若是则进入步骤e),若不是则判断当前指令是否为内存访问指令,若是内存访问指令则进入步骤e),若不是则将当前指令翻译地址addr更新为其后继地址并进入步骤a);e)记录当前时刻时间量SimTim的值TS;f)计算基本块每执行一次所占用的指令周期数NTC=(TS–S)+X,其中(TS–S)为基本块中指令取指需要的指令周期数;g)将SimTim的值恢复为S;(7)判断实时事件发生时刻Counter是否大于等于基本块指令周期数NTC,若大于等于则进入步骤(9),否则进入步骤(8);(8)重新执行步骤(6),翻译一个指令周期数为Counter的基本块,然后进入步骤(7),此时基本块指令周期数Counter等于实时事件发生时刻Counter,满足大于等于条件,进入步骤(9);(9)记录当前时刻时间量SimTim的值PS,执行基本块的动态翻译代码,执行后更新时间量SimTim的值为SimTim=SimTim+NTC,同时更新Counter=Counter–(SimTim‑PS);(10)根据基本块的执行结果更新PC值;(11)判断Counter是否小于等于0或模拟器是否被停止运行,若是则退出基本块执行;否则,进入骤(5)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410178279.2/,转载请声明来源钻瓜专利网。