动态二进制翻译中基于profile的优化算法研究

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:a82430lusofqw
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
二进制翻译(Binary Translation)是指在不需要可执行程序源代码的情况下,把源机器平台上的二进制程序经过一定的转换之后运行在目标机器平台上的过程。所谓动态二进制翻译就是边翻译边执行,并在翻译的过程中进行动态优化。动态二进制翻译为解决代码遗留,代码移植以及构建分布式虚拟计算环境等问题提供了一个良好的解决方法,因此在近年来得到了越来越广泛的关注和研究。由于动态二进制翻译和优化中的所有工作都是在运行时完成,对系统性能有较高的要求,因此应该采取跟静态编译和优化不同的途径。本文主要研究在动态二进制翻译中如何有效地收集运行时的profile信息,以及如何用这些信息来进行有针对性的优化,研究内容主要包括三方面:程序运行时的profile,热代码的识别和优化,以及基于profile信息的代码cache管理。Profile是指对程序运行时信息的统计和收集。传统的动态二进制翻译器都是采用基于基本块的profile,其缺点是工作量大,信息缺乏连贯性。本文提出了一种高效的基于路径的profile方法,实现上稍为复杂,但可以在一定程度上克服传统方法中的缺点。热代码的识别和优化分两步,首先根据收集的profile信息找出频繁执行的一段连续的基本块序列,然后把这些基本块合并成具有单一入口和多个出口的超级块,这样做一方面可以减少因基本块结束而引发的上下文切换,另一方面,超级块中包含更多的指令,给中间代码的优化提供了广阔的空间。代码cache的调度和管理算法主要是指已翻译代码的替换算法。由于基本块不定长,不合理的替换将在cache中产生很多碎片,降低cache的利用率。而采用FIFO等不会产生碎片的算法又往往降低替换的准确性,即把当前的热块替换出去,造成频繁翻译。本文提出了多层次cache,即将代码按照他们的profile信息存放到对应的cache层次中,最大限度地减少碎片率和错误替换次数。
其他文献
谷歌安卓占据巨大的市场份额且逐年增长。面对如此庞大的用户市场,安卓安全问题也变得更加严峻。在目前的各类恶意应用软件中,虽然扣费软件占据恶意应用的绝大部分,但是窃取用户
通信电源作为电信网络正常运行的关键,是企业本地网管监控系统重点监管网元设备之一。由于历史原因,在现有通信网络中实际存在“多厂家、多型号、多协议”的品种繁杂的通信电源设备。在构建网管系统时,需要针对不同协议的设备开发不同的监控数据采集模块,这将必然导致系统的开发周期长、升级推广困难。针对系统当前所面临的问题,依据中间件理论和面向对象技术高度抽象监控模块处理逻辑,设计并实现了通信电源协议适配池组件模块
近年来,尽管我国对交通基础设施投资巨大,但道路里程的增加仍满足不了快速增长的车辆出行需求;加之其它相关因素的影响,如驾驶员素质、道路环境、车辆性能等,导致目前我国交
针对WebGIS客户端可复用性和功能可定制性要求,论文设计了一个基于AJAX的组件式WebGIS客户端框架结构,采用JavaScript语言实现了一个基于AJAX和组件的织女星灌区地理信息系统
CAI是以人工智能科学、认知科学、计算机科学、教育学和心理学为理论基础发展起来的一种计算机应用模式。它是计算机应用技术的一个新领域,又代表了一种新的教学思想和教学手
学位
隐写技术是将秘密信息隐藏在载体中,尽可能不引起第三方怀疑地通过公共信道发送出去;隐写分析是隐藏信息检测的一个重要分支,主要是针对图象、声音、视频等多媒体数据,在对隐
随着互联网的快速发展,人们越来越多地通过搜索引擎来实现信息的获取。从海量数据中获取信息越来越困难,搜索引擎最核心的技术是网络爬行器方法,对网络爬行器的研究、改进成
本文通过对代码生成技术的研究,设计并实现了.NET环境下基本业务系统生成平台,以提高业务系统的开发效率。文章在分析了平台的实现意义、功能需求的基础上,对生成平台进行了
随着Internet的快速发展,互联网已经发展成为一个巨大的分布式信息空间,为用户提供了一个极具有价值的信息源。然而,在利用搜索引擎进行Internet信息检索时,返回的搜索结果数