动态二进制翻译的优化

  • 格式:pdf
  • 大小:249.84 KB
  • 文档页数:4

在传统 的编译器技术里 , 化都 是基 于静态分析的 , 优 优化是
0 引 言
研究 和开发新 的体系结 构必 须要有 相应 的软件支 持 , 能 才
针对整个程序 , 虽然这样 能提高系统 性能 , 但花费 的代价却非 常 大 。在一个动态环境里 , 我们 可以根据代 码的运行情况 , 根据代 码段被执行 的次数不 同 , 用不 同等级 的优 化方 法。选择要 实 采 施 的优化方法在很大程度 上取决 于程序执行 所花 费的时间与信 息收集过程 的优化代码 的开销之 间 的平衡 , 求确保 使用优 化 要
所获得 的利益大 于它 的开销 。总之二进制 翻译优 化的中心思想
得到流行 和运用 ; 而一些 非常 宝贵 的软件也 面临着 由硬件 升级 换代 导致 的软件更新 问题 。代码移植成为 了软硬件协 调发展 的

个重要因素 。因此二进 制翻译 方法应 运而生 , 有助 于将 老 它 的体 系结构上 的软件移植到新 的体系结构 上运行 。根据 翻译 时
p ts o t z t n Ho t n h o e h t e e v so t z t n i ic se n d ti . eme n t ,h e i r v d ss meo t - ah p i ai . w f d te c d s ta s r e p i a i sd s u s d i e al At h a me te t ssp o i e o p i mi o oi d mi o s t i h mi z t n meh d rt e e o t z t n a p o c e . a t i b if nr d c ss me r lt e w r so e o t z t n a p o c e rd n mi a i t o s f s p i ai p r a h s Atl ,t re y i t u e o ea i o k n t p i ai p r a h s f y a c o o h mi o s l o v h mi o o b n r r n l t n tc n q e a r s n . ia y ta sai e h i u tp e e t o Ke wo d y rs B n r r n lt n D n mi ia y t n l t n Dy a c o t z t n Ho ah B i b o k i ay t sa i y a c b n r r sai a o a o n mi p i ai mi o t ts p s a c lc
就是 : 出频 繁执 行的代码段 , 找 然后根据代码被执行次数来使 用 不 同等级 的优化方法 。
机的不同 , 二进制 翻译 可 以分 为静态二 进制 翻译 和动态二进 制
翻译 。
1 1 基本 块 优化 技术 .
1 1 1 确 定值 得 性 。静态二进 制翻译无法
关键词 二进制 翻译 动态二进制翻译 动 态优 化 热路 径 基本 块
oPTI I M ZATI oN FoR DYNAM I BI C NARY TRANSLATI oN
L e g in Gu n Ha bng LiXio o g iZ n xa g a ii ayn ( colfI om t nScryE gneig S ag a i tn n e i ,h n hi 02 0,hn ) Sho fr ai eui n i r ,h n hi a og U i r t S ag a 04 C ia o n o t e n Jo v sy 2
Ab t a t sr c Th h ss p o o e wo o t z t n a p o c e o y a c b n r rn lt n tc n q e : a i lc p i z t n a d h t e t e i r p s s t pi ai p r a h s fr d n mi ia y t sai e h iu s b sc b o k o t mi o a o miai o o n
发现一 个程序 中所有 的指令代码 , 往往需要一个解释器 , 在运行 期处理所有未被翻译 的代码 。而且静态二进制 翻译 在运行过程
中往往 需要用户的参与 , 缺乏透明性。 动态 二进制翻译克服 了静态二 进制 翻译 的局 限性 , 但损 失
动态二进制 翻译采 用一边 翻译 、 一边执 行的方 法 。它处 理
维普资讯
第2 4卷第7期
20 0 7年 7 月
计 算机 应 用与软 件
Co u e p ia in nd S fwa e mp t rAp lc t s a ot r o
Vo . 4 No 7 12 .
J 12 0 u.0 7
动 态 二 进 制翻 译 的优 化
李增祥 管海兵 李晓勇
( 上海交通大学信息安全工程学院 上海 20 4 ) 02 0


提 出动 态二进 制翻译 的两种优 化方案 : 基本 块和热路径 ; 分析 了从代码 中抽取值得优 化部分 的详细过程 ; 同时也给 出针
对这两种 方案 的一些优 化方法。最后简单介绍 了当前 一些动 态二进制 翻译 系统所采用的优化技术。
代码 的基本单位是基本块 。一个 基本块 是 以一 个控制 转移 ( 如

个分支 、 调用 或跳转 指令 ) 结束 的指令 序 列。根据 代码 的执
行特点 , 肯定有一些基本块会被 频繁的执行 , 而有些基本块无人 问津。基本块的优化技术就是通过计数器计算基本块在程序运 行期 内被执行的次数 。当计数器数值达到某个 阈值 时调用一个 优化器来优化这段 代码 并将 优化后 的代 码保 存在 缓存 T ah C ce ( rnlinC c e Tas o ah 是用 于存 放 翻译 后 的代 码 的 内存 空 间 ) m 中。 如果 以后还要运行这个基本块 , 就可 以直接运 行保存 在 T ah C ce 中优化后的代码 , 而不再 需要重 新翻译 … 。其 执行过 程可 以参