跳到主要内容
文章
开放式访问

最优码运动:理论与实践

出版:1994年7月1日出版历史
跳过抽象节

摘要

面向实现的算法惰性代码运动提出了在抑制任何不必要的代码移动的同时最小化程序中的计算数,以避免多余的寄存器压力。特别是,延迟代码运动的原始算法的这种变体适用于节点是基本块而不是单个语句的流图,因为这种格式是优化编译器的标准格式。第一部分给出了改进算法的理论基础,其中t吨-为了简化节点为基本块的流图的处理,引入了精细流图。第二部分介绍了标准表示法中的“基本块”算法,并给出了其在标准编译器环境中的实现说明。

工具书类

  1. AHO,A.V.和ULLMAN,J.D.1975年。可简化流图的节点列表。第七届ACM计算机理论研讨会会议记录。ACM,纽约,177-185。谷歌学者谷歌学者
  2. AHO,A.V.、SETHI,R.和ULMAN,J.D.1985年。编译器:原理、技术和工具。Addison-Wesley,马萨诸塞州雷丁。谷歌学者谷歌学者
  3. CHOW,F.1983年。便携式机器无关优化器——设计和测量博士论文,技术代表83-254,斯坦福大学计算机系统实验室,斯坦福大学电气工程系,加利福尼亚州斯坦福大学。谷歌学者谷歌学者
  4. COCKE,J.和SCHWARTZ,J.T.1970年。程序设计语言及其编译器。纽约大学数学科学学院。谷歌学者谷歌学者
  5. DHAMDHERE,D.M.1991年。Morel和Renvoise全局优化算法的实际改编。ACM事务处理。程序。Lang系统。13, 2, 291-294.谷歌学者谷歌学者
  6. 1989年8月,达姆德雷。复合吊装和强度降低优化的新算法(+勘误表)。国际计算数学杂志。27, 1, 1-14, 31-32.谷歌学者谷歌学者
  7. DHAMDHERE,D.M.1988年。代码移动优化的快速算法。ACM SIGPLAN非。23, 10, 172-180.谷歌学者谷歌学者
  8. DHAMDHERE,D.M.1983年。代码优化中程序循环的特征。语言8、2、69-76。谷歌学者谷歌学者
  9. DHAMDHERE,D.M.和KHEDKER,U.P.1993年。双向数据流分析的复杂性。第20届ACM编程语言功能研讨会会议纪要。ACM,纽约,397-409。谷歌学者谷歌学者
  10. DHAMDHERE,D.M.和PATIL,H.1993年。使用边缘放置的双向数据流问题的消除算法。ACM事务处理。程序。语言系统。312-336年4月15日、2日谷歌学者谷歌学者
  11. DHAMDHERE,D.M.、ROSEN,B.K.和ZADECK,F.K.,1992年。如何高效、信息化地分析大型程序。1992年ACM SIGPLAN编程语言设计与实现会议记录。ACM SIGPLAN非。27, 7, 212-223.谷歌学者谷歌学者
  12. DRECHSLER,K.-H.和STADEL,M.P.1993年。Knoop、Riithing和Steffen的懒惰代码运动的变体。ACM SIGPLAN非。28, 5, 29-38.谷歌学者谷歌学者
  13. DRECHSLER、K.-H.和STADEL。M.P.1988年。Morel和Renvoise的“通过抑制部分冗余进行全局优化”的问题解决方案。ACM Trans。程序。语言系统。10, 4, 635-640.谷歌学者谷歌学者
  14. GRAHAM,S.L.和WEGMAN,M.N 1976年。用于全局流分析的快速且通常为线性算法。《美国临床医学杂志》23、1、172-202。谷歌学者谷歌学者
  15. HECHT,M.S.1977年。计算机程序流分析。爱思唯尔,北荷兰,阿姆斯特丹。谷歌学者谷歌学者
  16. HECHT,M.S.和ULMAN,J.D.1977年。全局数据流分析问题的简单算法。SIAM J.计算。4, 4, 519-532.谷歌学者谷歌学者
  17. HECHT,M.S.和ULMAN,J.D.1973。全局流问题的简单算法分析。在第一届ACM程序语言原理研讨会的会议记录中。纽约ACM,207-217。谷歌学者谷歌学者
  18. Josm,S.M.和DHAMDHERE,D.M.1982a。用于全局程序优化的复合提升强度折减转换——第一部分国际计算杂志。数学。11、1、21-41。谷歌学者谷歌学者
  19. JOSHI,S.M.和DHAMDHERE,D.M.1982b。用于全局程序优化的复合提升强度折减变换——第二部分。国际期刊计算。数学。11, 2, 111-126.谷歌学者谷歌学者
  20. KAM,j.B.和ULMAN,j.D.1976年。全球数据流分析和迭代算法。《美国临床医学杂志》23、1、158-171。谷歌学者谷歌学者
  21. KENNEDY,K.1975年。应用于数据流分析的节点列表。第二届ACM程序设计语言原理研讨会会议记录。纽约ACM,10-21。谷歌学者谷歌学者
  22. KNOOP,J.和STEFFEN,B.1992a。过程间重合定理。在第四届编译器构造会议(CC)的会议记录中。计算机科学讲义,第641卷。柏林斯普林格·弗拉格,125-140。谷歌学者谷歌学者
  23. KNOOP,J.和STEFFEN,B.1992b。最佳过程间部分冗余消除。扩展摘要。第四届编译器Constructzon(CC)会议记录补遗。计算机科学课堂讲稿。柏林斯普林格·弗拉格。此外,德国帕德博恩大学计算机科学系技术代表103,36-39。谷歌学者谷歌学者
  24. KNOOP,J.、RUTHING,O.和STEFFEN,B.1993年。懒惰的力量减少。J.项目。语言1,1,71-91。谷歌学者谷歌学者
  25. KNOOP,J.、ROTHING,O.和STEFFEN,B.1992。懒惰的代码运动。在1992年ACM SIGPLAN编程语言设计与实现会议的进展中。ACM SIGPLAN非。27, 70 224-234.谷歌学者谷歌学者
  26. 莫雷尔,E.1984。数据流分析和全局优化。《Compder构造的方法和工具》,B.Lorho主编。剑桥大学出版社,马萨诸塞州剑桥,289-315。谷歌学者谷歌学者
  27. MOREL,E.和RENVOISE,C.1981年。跨期消除部分冗余。在《程序流分析:理论与应用》一书中,S.S.Muchnick和N.D.Jones,Eds.Prentice Hall,Englewood Cliffs,N.J.,160-188。谷歌学者谷歌学者
  28. MOREL,E.和RENVOISE,C.1979年。通过抑制部分冗余实现全局优化。Commun公司。ACM 22、2、96-103。谷歌学者谷歌学者
  29. ROSEN,B.K.、WEGMAN,M.N.和ZADECK,F.K.,1988年。全局值数字和冗余计算。在第15届ACM编程语言原理研讨会的会议记录中。ACM,纽约,12-27。谷歌学者谷歌学者
  30. SORKIN,A.1989年。关于Morel和Renvoise的“通过抑制部分冗余进行全局优化”的问题解决方案的一些评论。ACM Trans。程序。语言系统。11, 4, 666-668.谷歌学者谷歌学者
  31. 斯蒂芬,B.1991。数据流分析作为模型检查。《计算机软件理论方面国际会议论文集》(TACS’91)(日本仙道)。计算机科学讲义,第526卷。纽约施普林格-弗拉格,346-364。谷歌学者谷歌学者
  32. 斯蒂芬B.、诺普J.和鲁辛O.,1991年。高效的代码移动和对强度降低的适应。第四届软件开发理论与实践国际联合会议(TAPSOFT)会议记录(英国布莱顿)。计算机科学讲义,第494卷。柏林施普林格-弗拉格,394-415。谷歌学者谷歌学者
  33. 斯蒂芬,B.、诺普,J.和鲁辛,O.1990。值流图:用于优化程序转换的程序表示。在第三届欧洲编程专题讨论会(ESOP)会议记录中(丹麦哥本哈根)。计算机科学讲义,第432卷。柏林施普林格-弗拉格,389-405。谷歌学者谷歌学者
  34. 塔尔扬,R.E.1981a。解决路径问题的快速算法。美国医学会期刊28、3、594-614谷歌学者谷歌学者
  35. 塔扬,R.E.,1981b年。解决路径问题的统一方法。美国临床医学杂志28,3。577-593.谷歌学者谷歌学者
  36. TARJAN,R.E.1979年。路径压缩在平衡树上的应用。美国医学会期刊26、4、690-715。谷歌学者谷歌学者
  37. ULLMAN,J.D.1973。消除公共子表达式的快速算法。信息学报2、3、191-213。谷歌学者谷歌学者

索引术语

  1. 最佳代码运动:理论与实践

      建议

      评论

      奥利维尔·路易斯·玛丽·勒卡姆

      本文的背景是编译器的全局优化部分,特别是通过避免运行时不必要的计算来实现代码运动以提高计算效率的部分。代码运动必须是正确的(即程序与没有转换的程序具有相同的含义)和安全的(即不需要计算新值)。通过在程序中尽早移动代码,可以实现计算优化(即,没有进一步的代码移动可以提高效率)。然而,这可能会不必要地移动代码,并导致其他优化问题。作者开发了一种算法,通过在程序中尽可能晚地移动代码来避免此问题,从而最小化临时变量的生存期。一个5页的介绍提出了这个问题,并提到了相关的工作。一个4页的初步部分定义了重要的概念。然后,论文分为两个大小相同的主要部分(11页),第一部分介绍方法的理论,第二部分介绍实践。最后,一个6页的附录演示了一组引理,一个长长的参考书目完成了本文。这个组织特别有趣,因为这两个主要部分是独立的,也就是说,根据您的兴趣,您可以阅读其中一个部分,而忽略另一个部分。然而,不要认为实际部分比另一部分容易:它的难度不同,但水平相同。理论部分的目的是通过使用t-细化流图的概念,以逐步和形式化的方式开发该算法,来证明该算法的正确性和最佳性。实践部分的目的是为潜在的实现者提供足够的信息,使他们能够在实际编译器中包含该思想。本节不使用t精细流程图,该算法分解为四个单向数据流分析,可以使用位向量技术有效地实现,并为并行化打开机会。一个简单但有用的示例演示了算法的行为。

      访问计算机文献的关键评论在这里

      成为评论员计算评论。

      评论

      登录选项

      检查您是否可以通过登录凭据或您的机构访问本文。

      登录

      完全访问权限

      PDF格式

      以PDF文件查看或下载。

      PDF格式

      电子阅读器

      使用eReader在线查看。

      电子阅读器