十二 282009
不知不觉,一个多月的时间,Fred Chow的讲义就被翻译完了。感谢那些奉献代码的人,在编译器优化上所做的努力和探索永没有止境。
感谢忍住我蹩脚的英语和汉语,看了这些翻译的朋友们。在这个翻译的过程中,深深感到自己的水平很不足,很多翻译别说雅和达,连信这个简单的要求都很难达到。争取将这些资料进一步的完善,能够给更多的人一个可靠的参考。希望大家多提意见和建议.
单就我个人,还是在翻译的过程中,学到了很多,原先都是单纯的看ppt,但是发现那样的话,印象不顾深刻,所以就决定一点点的翻译。自这个博客创建以来,一直希望能将这里搞成编译爱好者们喜欢的网站,呵呵我将继续努力。
Fred Chow是Open64的几个元老级人物之一,高屋建瓴,统观全局的讲述,让我在翻译的过程中很是佩服,只有在这样的积累下,才能讲出这么详实概括的课程。
附上基于Open64发表的文章,这些文章中的东西都可能已经应用到了目前每个人电脑中使用的一些程序里。
- MICRO-1996: “Combining Loop Transformations Considering Caches and Scheduling”, M. E. Wolf, et al.
- CC-1996: “Effective Representation of Aliases and Indirect Memory Operations in SSA Form”, F. Chow, et al.
- PACT-1996: “Loop Induction Variable Canonicalization in Parallelizing Compilers”, S. liu, et al.
- PLDI-1997: “Data Distribution Support on Distributed Shared Memory Multiprocessors”, R. Chandra, et al.
- PLDI-1997: “A New Algorithm for Partial Redundancy Elimination based on SSA Form”, F. Chow, et al.
- CC-1998: “Strength Reduction via SSAPRE”, R. Kennedy, et al.
- PLDI-1998: “Register Promotion by Sparse Partial Redundancy Elimination of Loads and Stores”, R. Lo, et al.
- PACT-1998: “A New Framework for Integrated Global Local Scheduling”, S. Mantripragada, et al.
- TOPLAS-1999: “Partial Redundancy Elimination in SSA Form”, R. Kennedy, et al.
- 2001: “Using the SGI Pro64 Open Source Compiler Infra-Structure for Teaching and Research”, J. Amaral, et al.
- EPIC-2001 Workshop: “EPIC Instruction Scheduling based on Optimal Approaches”, S. Haga and R. Barua.
- PACT-2002: “Effective Compilation Support for Variable Instruction Set Architecture”, J. Liu, et al.
- CASES-2002: “A Near-Optimal Instruction Scheduler for a Tightly-constrained, Variable Instruction Set Embedded Processor”, J. Liu and F. Chow.
- NPC2002: “Engineering a C Compiler for the Cognigine CGN16100 Network Processor”, T. Kong, et al.
- Euro-Par-2002: “Reuse Distance-Based Cache Hints Selection”, K. Beyls and E. D’Hollander.
- PLDI-2003: “A Compiler Framework for Speculative Analysis and Optimizations”, J. Lin, et al.
- CGO-2003: “Speculative Register Promotion Using Advanced Load Address Table (ALAT)”, J. Lin, et al.
- IEEE-TOC-2003: “Variable Instruction Set Architecture and its Compiler Support”, J. Liu, et al.
- INRIA Research Report 2003: “Putting Polyhedral Loop Transformations to Work”, C. Bastoul, et al.
- PACT-2004: “A Compiler Framework for Recovery Code Generation in General Speculative Optimizations”, J. Lin, et al.
- CGO-2007: “Rapidly Selecting Good Compiler Optimizations using Performance Counters”, J. Cavazos, et al.
整个Open64课程系列的文章包括以下,请阅读中指正

你好,看了你的文章对我现在的open64研究很有帮助。
能发一份原版ppt给我吗?多谢!
博主写得很好啊,赞一个!很高兴认识像你这样喜欢编译技术的人,今后可以多多交流啊!我是搜Open64的资料发现这里的,我也想要一份原文的PPT,谢谢!
你好,搜LLVM的时候找到了你这里,内容非常不错。
我读研的室友目前就在Fred参与的一家创业型小公司工作,能跟Fred这种人有一起工作的机会确实很难得。我对编译的兴趣也是受他耳濡目染,目前也在开始看LLVM。
希望以后能多互相交流:)
很高兴你喜欢这里的文章。很高兴又认识一个对编译技术感兴趣的人。呵呵,希望日后能有更多的机会和你多多交流。欢迎多来这里看看,也欢迎多多评论感兴趣的文章:)
非常不错,博主也花了不少时间吧?
想要一份原文ppt,能发一份么?
已发送
我想要一份原文ppt,谢谢!
已发送,请查收
[...] Open64课程-结语 (12) [...]
看了你翻译的open64的讲义,很好,我想要一份原文ppt看看,可以吗?
一份Fred Chow的原文PPT看一下,可以吗?
@sunjun, 完全可以,呵呵,已经能送到你的邮箱了,请查收。请不要用于商业目的,欢迎来这里讨论:)
最近正在研究JVM的编译器,发现了Open64,翻译的很不错,能把原文的ppt也发给我份吗,谢谢
!
@lisang, 已发送,请查收:)
太感謝啦,对我这个门外汉来说已经很清楚啦,我也说点编辑语言,没想到你学的是设计语言,层次有点深。顺便说一下你给的这个链接不太好用,还有本文最后的几个链接都提示404。呵呵,那你的第一志愿是?
@王辉, 抱歉,是因为用的插件有问题,导致链接出错,现在已经搞定了:)
编译器的学问太大了,你所说的设计语言国内都没有几个人敢干的,何况我一个刚刚接触编译器一年多的小毛孩。我现在的方向是后端优化,这是努力的方向而已,现在正在作的工作只是调调bug,因为编译器太大了,像我这种功力的人,干这个都很吃力了。
Hi erlv, 做到这实在不容易呀。我有个问题想问一下,編绎器工作具体是指什么工作,你读的是什么专业目前?提前道声谢。
@王辉, 编译器工作窄了你可以认为是做编译器的,包括前端的编程语言设计和扩展,具体可以是并行研究,程序安全分析,程序正确性分析等等。中端和后端的则主要集中在程序的优化,说白了就是让程序跑的更快,包括CPU底层的优化,运行时的优化,和目标机器无关的优化等等。这些都应该属于编译器相关的工作。不过,因为对大多数人来讲,编译器只是一个工具,所以这些工作从事的人不多,而且基本上都偏重于研究性质的。如果往宽了说,上到程序设计语言、下到底层CPU都能和编译器扯上关系,呵呵。 你可以看看Open64课程的这篇文章http://www.lingcc.com/2009/11/19/10024/ 。就会大致有个了解了。
我的专业是软件工程。呵呵,当时考研没考好,调剂的。这只是个虚名,关键还是看作什么具体的工作。不知我有没有回答清楚你的问题。
@erlv, 呵呵,软件工程就软件工程吧,我也是读这个虚专业,最后还是得看自己喜欢什么。
@donghao, 恩,说的没错,我觉得编译器也挺适合搞软件工程学习的。自成体系,容易量化,中间的很多优化技术都需要全局的架构涉及,既不能重复劳动又要保证拿到性能,同时还有产品级的正确性问题。MIT就是用构造编译器的方式作为计算机工程类课的学分。参见MIT OCW 6.035
支持一下。
@shenrfen, 谢谢,欢迎常来看看:)