歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

開源開發工具GCC將大翻修 性能有望全面提升

作者: CNET科技資訊網
CNETNews.com.cn 2005-03-25 04:44 PM

CNET科技資訊網3月25日國際報道 若大幅翻修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 會造成程序的執行性能減慢,所以預料主要會用於測試版,正式產品會關閉此項功能。

另外也將推出的,是Fortran 95程序編譯器的預覽版。Fortran 是擁有數十年歷史的程序設計語言,Fortran 95是其更新版,至今仍是撰寫科學與技術應用程序頗受歡迎的語言。Henderson 說,以C++ 程序語言寫的軟件,執行速度應該會更快,在某些情況下甚至“出奇的棒”。

GCC 是通用型編譯器,支持的程序設計語言包括:C 、C++ 、Java、Fortran 、Pascal、Objective-C 以及Ada.GCC 可支持的處理器平台則包括:英特爾Pentium 這類x86 處理器、AMD的Opteron 、Sun 的Sparc 、惠普的PA-RISC 、IBM 的Power ,以及大型主機處理器如英特爾的Itanium 、MIPS、ARM 、日立的SuperH和摩托羅拉的68000 系列。

“GCC 的優點向來是可攜性(portability)與跨平台支持(cross-platform support),而不是速度,”O'Grady 說。

Mitchell說,目前GCC 配有大約十位10主力程序設計師。Linux 與其他高知名度開放源代碼計劃掀起的商業化與專業化浪潮,如今也讓GCC 受到洗禮。

“就大多數源代碼的撰寫者而言,他們此刻多半是為了生計而寫程序,和十年前的情況大異其趣,”Mitchell說:“現在,許多的程序開發工作非常耗時,而且需要長期耕耘,很難在學期之間短短兩周的假期內一氣呵成。”

員工約十二人的CodeSourcery公司靠銷售GCC 相關服務賺錢,同時也賣GCC 周邊的低端程序設計元件,例如“GNU C Library (glibc)”,是一套預先寫好的軟件元件合集。例如,其他公司可聘請CodeSourcery支持他們新推出的操作系統或處理器。

其他選項

當然,GCC 不是程序設計師的唯一選擇,甚至也不是唯一的開放源代碼編譯器。

新創公司Pathscale 就供應一款與GCC 3.3 兼容的開放源代碼編譯器。“本公司志在成為講究高性能人士的首選GCC 替代選擇,”Pathscale 營銷副總裁Len Rosenthal 說。

Pathscale 的編譯器是Silicon Graphics Open64 編譯器的一種開放源代碼版本,獲美國多所國家實驗室用於超級電腦運算任務。但Rosenthal 說,此編譯器即使只搭配普通的應用程序,也能產生執行速度更快的軟件。

Rosenthal 明白,Pathscale 現在挑戰的是GCC 本尊。但他強調,Pathscale 懷有遠大的抱負。“我們的目標是成為x86 平台的缺省編譯器,”他說。

還有另一個根基更穩的GCC 競爭者——英特爾公司。英特爾的編譯器被公認為x86 平台應用軟件的標准編譯器。英特爾營銷部門兼商業軟件與產品部門經理James Reinders自豪地指出,連使用廣泛的MySQL 開放源代碼數據庫也采用英特爾的編譯器。

可是,有趣的是,協助改良GCC 的,也是同一群英特爾編譯器的工程師。Reinders說,那是因為GCC 是促使應用軟件向英特爾處理器平台靠攏的關鍵開發工具。例如,英特爾協助修改GCC ,以便讓GCC 產生支持Itanium 處理器的軟件。

Reinders說:“顯然GCC 普遍獲得采用,在軟件開發社區扮演重要的角色。若小看它的重要性,不免太愚蠢。”




Copyright © Linux教程網 All Rights Reserved