发明名称 一种动态二进制翻译指令集模拟器计时方法
摘要 一种动态二进制翻译指令集模拟器计时方法,本方法通过有效划分基本块,使得基本块每次执行时所占用的指令周期数可以在动态翻译阶段确定,从而实现模拟器的精确计时;计时过程包括下列步骤:(1)以跳转指令、分支指令和内存访问指令作为基本块的划分依据;(2)在动态翻译过程中,计算被翻译指令的周期数及所在内存区域的内存延迟大小,从而在动态翻译阶段确定基本块每执行一次所占用的指令周期数;(3)模拟器在执行翻译代码时,并以基本块为单位判断实时事件的响应时机。本方法能够对实时事件及时响应,可以满足航天嵌入式软件的强实时性需求,同时由于不需要逐条指令判断实时事件的响应时机,计时开销较小。
申请公布号 CN103955357A 申请公布日期 2014.07.30
申请号 CN201410178279.2 申请日期 2014.04.29
申请人 北京控制工程研究所 发明人 郭向英;张西超;赵雷;陈睿
分类号 G06F9/40(2006.01)I 主分类号 G06F9/40(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 安丽
主权项 一种动态二进制翻译指令集模拟器计时方法,其特征在于步骤如下:(1)初始化用于记录模拟器模拟执行时间的时间量SimTim为0、定义用于表示基本块内所有指令的周期数总和的计数量X、定义实时事件发生时刻Counter,所述的Counter表示从当前时刻开始,执行Counter个时钟周期后,模拟器开始执行需要处理的实时事件E;(2)定义翻译代码缓存区TC以及定义缓存区LC,所述的缓存区LC用于保存最近访问内存区域的读写延迟参数,通过查询该缓存区可快速获得所访问内存区的读写延迟参数;(3)定义用来保存不同内存区域的指令延迟周期数的内存延迟量、并根据等待状态配置寄存器的值对内存延迟量进行设置;(4)设置模拟器PC寄存器的值为目标程序起始地址;(5)查询缓存区TC,判断模拟器PC寄存器所指地址的指令是否已被翻译,若被翻译则进入步骤(13),否则进入步骤(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的基本块并进入步骤(9);9)记录当前时刻时间量SimTim的值PS,执行基本块的动态翻译代码,执行后更新时间量SimTim的值为SimTim=SimTim+NTC,同时更新Counter=Counter–(SimTim‑PS);10)根据基本块的执行结果更新PC值;11)判断Counter是否小于等于0或模拟器是否被停止运行,若是则退出基本块执行;否则,进入骤(5)。
地址 100080 北京市海淀区北京2729信箱
您可能感兴趣的专利