A new processor architecture poses significant financial risk to hardware and software developers alike, so both have a vested interest in easily porting code from one processor to another. Binary translation offers solutions for automatically converting executable code to run on new architectures without recompiling the source code.
--《Welcome to the opportunities of binary translation》
# 关于这本书:
虚拟机中较为重要的技术是二进制翻译。二进制翻译有效地解决了遗产代码问题,举例如下:如果你在X86机器上生成可执行文件hello后,想在MIPS机器上运行它,用./bt hello就可以了(假设bt为二进制翻译系统的可执行文件名)。它首先加载hello文件,并将它依赖的库也加载进来,然后从符号表中读取程序入口地址,以该地址为起始地址,以基本块(Block)为单位进行解释/翻译执行。
HP实验室开发的Dynamo系统让相同的可执行文件在相同的ISA上运行,在程序运行的过程中做一些优化,提高二进制码的质量,进而提升程序性能。你可以不用修改算法就能轻松提高程序性能,这是一个怎样神奇的系统!
Profile技术:插桩和采样。采样是一种非侵入式的Profile技术,不用修改二进制码和原程序。采样一般是基于硬件的,开销较小。
书中提到的一些优化,本地码链接(Code Patch)的效果很好,而且实现起来相对容易。
最值得一提的是书后面的参考文献有很多都不错,对相关的工作都有更深入的介绍。
# 本书讲未涉及或是讲解得不详细的一些技术
《a brief history of just in time》分析了各种语言(APL/BASIC/Fortran/Smalltalk/Self/ML/
Erlang/Prolog/Java)的编译器/虚拟机对Just in time技术的应用。
由于成书时间较早(2004年),在"Optimizaing Framework"一节中没有提到目前比较流行的多线程优化框架:在原有程序的基础上,新建一个或多个辅助线程来专门进行优化。多核技术的发展促进了这个框架的流行。基于此框架,我们就可以将耗时的优化放在辅助线程中进行。主线程与辅助线程并发地执行,因而不会对主线程产生较大的影响。
Feedback-directed optimization(FDO):每次运行程序时,搜集一些信息,供下次运行该程序时用作优化器的输入,这样程序就能越来越快,有没有机器学习的意味啊!Micro委员会专门举办了几届关于FDO的会议,然后就没有然后了——停了,大概觉得其中的关键技术都研究得差不多了 :)
# 关于JAVA虚拟机
JAVA虚拟机就是将JAVA源程序编译成字节码(Byte Code),然后在运行时做一些优化(Hotspot技术采用的就是即时(on the fly)编译技术)。
Welcome to the opportunities of binary translation
对“Welcome to the opportunities of binary translation”的回应
《虚拟机》热门书评
-
Welcome to the opportunities of binary translation
4有用 1无用 hex 2012-05-14
A new processor architecture poses significant financial risk to hardware and software developers alike, so both have a vested...
-
不错的入门级图书
4有用 0无用 whatisvirtual 2011-03-19
许多虚拟化的新技术贯穿在整本书中。作者揭开虚拟机的神秘面纱,深入剖析了他们的工作原理。同时,这本书也讲述了虚拟机的发展历程,分析了近几十年来不同形式的虚拟机的和姓概念。本书的开始几章主要是关注模拟器。他们深入地讲解了如何在模拟器中模拟寄存器,内存,中断等概念。内容涉及二进制的转换,比如如何重写某些难...
-
虚拟机入门必读的吧
2有用 0无用 stallboy 2010-05-04
应该是入门的标准读物吧。反正我写一个玩具虚拟保护机时浏览看了一遍。历史介绍,技术现状,未来预测,都有。并且讲得不错。...
-
非常好的书
0有用 2无用 魏理布赫 2011-01-31
虚拟机,理想很优美,现实很无奈。虚拟机在一定程度上是理想与现实折衷的结果。Java 虚拟机很好。.Net 至少有一点不好,就是对变量的操作需要 track 变量类型,强大 JIT 的支撑下,这没什么不好,但是基本上不可能解释执行,在解释执行的时候,比 Java 虚拟机要慢得多!这应该是微软的策略,它...