开源开发工具GCC将大翻修 性能有望全面提升

ZDNet软件频道 时间:2005-05-23 作者:CNETNews.com.cn |  我要评论()
本文关键词:
GCC 是一种“编译器”(compiler),把程序的“源代码”(即程序设计人员用C 这类高端语言所写的指令)转换成电脑能够理解的“二进位”(binary)指令。几乎所有的开放源代码软件都以GCC 为基础。

GCC 是一种“编译器”(compiler),把程序的“源代码”(即程序设计人员用C 这类高端语言所写的指令)转换成电脑能够理解的“二进位”(binary)指令。几乎所有的开放源代码软件都以GCC 为基础。

即将推出的GCC 4.0 版包含全新的基础,让转译过程更精密,CodeSourcery公司GCC 4 发布经理兼“源代码长”Mark Mitchell 说。“4.0 版的首要目标,就是打造一个最佳化的基础架构,让编译器产生品质大幅提升的源代码,”Mitchell说。

编译器在软件开发社区之外乏人闻问,但GCC 的意义重大,所以备受瞩目。举例来说,改良后的GCC 可提升开放源代码软件的整体性能,举凡Linux 、Firefox 乃至于OpenOffice.org和Apache,执行性能都会为之一振,连带增强与微软、IBM 及其他专有软件较劲的竞争力。

GCC 也是整个协作软件开发理念的基础。若说GCC 是自由与开放源代码程序设计运动的中流砥柱和发动机,重要性有如媒体自由之于民主政治,一点也不为过。

GCC 的全名是“GNU 编译器合集”(GNU Compiler Collection ),属于GNU 替代Unix(GNU's Not Unix)方案中的原始计划之一。Richard Stallman在1980年代成立GNU 以及姊妹机构自由软件基金会(Free Software Foundation),其宗旨在开创一种可自由扩散的Unix仿制版,不受专有软件授权的拘束。

第一版GCC 在1987年发布,GCC 3.0 版2001年问世。此编译器的开发工作大多由一家名叫 Cygnus Solutions 的公司资助。这家开放源代码商业先驱1999年被Linux 经销商Red Hat 公司收购。

但改良GCC 并非易事。Evans Data分析师Nicholas Petreley 说,从GCC 3.3 版升级到3.4 版,在性能上虽然有进步,但却造成回溯兼容性的问题:有些用3.3 版编译顺畅的软件,改用3.4 版就破功。

RedMonk 分析师Stephen O'Grady 也表示,更新版的GCC 不应牺牲支持众多处理器类型的能力。O'Grady 说:“若新版GCC 能达到艰钜的目标,也就是以最佳化加速性能的同时,仍无损跨平台兼容性及回溯兼容性,那么其影响力极其深远。”

4.0 版新增功能

GCC 4.0 新增一个基础,以便在这个基础上添加最佳化(optimizations)处理。最佳化过程可能采取几种形式,但大致而言,都提供让编译器一览程序全貌的方法。

例如,目前的GCC 版本可把某程序局部的一小部分最佳化。但一种新式的最佳化,称为“纯量取代与聚集”(scalar replacement and aggregates),让GCC 找寻范围涵盖更大量源代码的信息结构,然后GCC 再把那些物件(objects)拆开,以便把物件元件直接存在快速的芯片上缓存内存(on-chip memory),而不是存入缓慢的主内存(main memory)。

Mitchell说:“打造最佳化架构,是为了赋予编译器宏观的能力。”这种架构称为“树状SSA ”(Tree SSA);SSA 的全称是“静态单一指派”(static single assignment)。

不过,Mitchell说,这个最佳化架构只是起步而己,下一步会附带可插入此架构的编写最佳化(writing optimizations )。“现在,那个架构的用途还不多,以后的用途会扩充,”Mitchell说。

Red Hat 程序设计师兼GCC 主力程序设计师Richard Henderson 说,GCC 4.1 版推出时,可能加入一种称为“自动向量化”(autovectorization)的最佳化功能。这项功能的用途,是在软件中找寻某个区域,让单一指令适用于多重的信息元素,借此精简处理器的作业过程。对小至电玩游戏大至超级电脑运算的各种应用来说,这种功能堪称便利。

GCC 4.0 版也引进称为“Mudflap ”的安全功能,在检查缓冲区溢位(buffer overruns)弱点的编译程序中加入额外的功能,Mitchell 说。Mudflap 会造成程序的执行性能减慢,所以预料主要会用于测试版,正式产品会关闭此项功能。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134