通信机房监控有人看吗:LLVM之爷谈下一代编译器 | Compiler Notes(编译点滴)

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 11:40:31

LLVM之父,相信有很多人都知道,Chris Lattner。从2000年开始,搞LLVM到现在。LLVM最初的想法还是来自Chris Lattner的导师:Vikram Adve。编译界的大牛。

这篇文章来自CGO 2009的Keynote:《The Next Generation of Compilers》,keynote是学术会议上的精彩环节,一般是该领域的最权威学者做主题演讲,演讲的内容是很前瞻,高屋建瓴性质的。

过去的十年里,产品级的编译器在通用处理器上已经使用了许多技术,这些技术都是在编译器研究过程中逐渐成熟的。如基于SSA的优化、指针分析、基于程序行为的优化、链接时跨函数跨文件优化、自动向量化、包含动态语言自适应优化的实时编译。这些技术在可预见的未来将继续存在。那么,未来10年里又会从编译器研究中出现什么新的技术呢?

首先,实时编译和动态优化将被扩展到静态语言中,如C/C++和Fortran。图形应用程序中已经用到了这种技术,如MacOS X OpenGL库和AMD ATI编译器,还有即将应用到通用多核平台中的技术,如RapidMind多核开发平台。

第二,可能也是最意料之中的,编译器仍将在应对多核编程挑战中发挥重要作用。这并不是说自动并行化将死而复生,而是编译器将为并行编程提供两种形式的支持:一是为已知并行程序做优化和代码生成,二是利用交互式的,非最优的并行化技术为已有的代码以半自动化的方式提供并行编程模型。

第三,编译器将在提升程序的安全性和可靠性方面越来越重要。最近几年,许多新的语言和编译技术(如Cyclone、CCured、SAFECode)都试图确保存储绝对安全和健壮的语义操作,而且这些语言和技术甚至都直接针对C/C++语言。产品级的编译器都没有理由不提供这些安全保证,至少也应该为那些对安全敏感的软件提供特殊的安全选项支持。此外,这些支持支持也可以利用一个相比机器码生成更强大的安全和可靠性技术保证的强类型虚拟机来实现。

第四,编译器仍然需要通过更加灵巧的自动调优策略来挖掘优化潜能。这将是在已有编译技术基础上挖掘性能提升的主要动力。

最后,编译器将会采用投机优化的方式来弥补保守的静态分析优化的不足。最近体系结构的研究已经能让硬件机制高效实现此类投机,现在轮到编译器发明新的方式来让硬件支持更加强大的传统优化,或者新的优化了。

短短五段话,概括了现在编译的研究热点,而是未来前进的方向。总结起来就是:动态实时优化、多核并行化辅助、编译器可靠性、编译器自动调优、编译器投机优化。

五年以后,我们可能装个编译器的同时要安装解释器,编程序的过程中还要看着一个小小的服务在一直运行。莫名奇妙的CPU会利用率飙升。本以为中了什么病毒,旁边的程序员大哥嘿嘿一笑,说:电脑在做自动优化。

路漫漫其修远兮,吾将上下而求索!