February 06, 2009

演講:窮得只剩下 Compiler -- 淺談編譯技術的革命


上個月提到 [OSDC.TW 2009 徵稿] 的訊息,現在 [OSDC.tw] 主辦單位如火如荼地張羅於四月 18、19 兩日的議程,可參閱網站的訊息,而小弟也提交一個議程,以下是相關的資訊:
  • 中文議程名稱: 窮得只剩下 Compiler -- 淺談編譯技術的革命
  • 英文議程名稱:What Compilers do for us -- Introduction to Evolution of Compiler Technologies
  • 議程簡介:
      誠如易經所謂的窮則變、變則通、通則久,我們可見 compiler 技術的影響無所不在,無論是程式語言範疇、Web 應用程式,甚至是 OpenGL/3D,都潛藏著與 compiler 密不可分的關聯。乍看很難想像其關聯性,但回頭看看 JSP/Servlet 的運作,或者 OpenGL ARB 的 GLSL,或者當紅炸子雞 Google Android 平台的關鍵技術 Dalvik VM,不難理解編譯技術實在是解決工程問題所需的背景。

      隨著開放源碼的蓬勃發展,Compiler 相關的技術也獲得空前的成功,且當今的運算型態已變得多元,無論是虛擬化技術、VM、JIT (Just-In-Time) compiler,或者 Binary translator 等等,都是吾人耳熟能詳且為建構當今資訊建設的基礎技術。希望藉由這次的機會,分享過去幾年的開發經驗,希望能和與會的朋友們一同成長。
  • 議程大綱:
    • 隱藏在我們周遭的 Compiler 技術
    • 回首 Compiler 已遠:從 A0LLVM
    • 透過 LLVM 建構虛擬機器
    • 技術大融通與未來展望
本議程不直接談許多人印象中艱澀的 (dynamic) Compiler 技術,而是從整個廣泛應用的資訊技術中,點明「到處都是 Compiler」的現實。這樣的案例多如牛毛,比方說,現在 Web 2.0 與 Mobile Web Browser 正火熱,為了要能改善 Web 應用程式的效能,Google 與 Apple 兩家公司的工程團隊,各自推出 V8 與 SquirrelFish Extreme 等 Just-In-Time compiler for JavaScript,而 Mozilla Foundation 更是將高速的 JavaScript 引擎當作 Mozilla 2 的重要賣點,強大的自由軟體開發者 [Jim Blandy] 甚至離開專業 GNU Toolchain 開發公司 CodeSourcery,加入 Mozilla Corporation,就為了致力開發 [ActionMonkey] (整合 Mozilla 原有 SpiderMonkey 與 Adobe 貢獻的 Tamarin)。自此,這個在瀏覽器平台的戰役,從桌面系統延續到手機,又將從手機移轉到各種不同的資訊裝置上。

但撇開 JavaScript 執行引擎不論,實際上,連 Firefox/Mozilla 底層的向量繪圖函式庫 [Cairo],也透過 JIT compiler 技術,去提昇整體繪圖的效能與使用者體驗。日前,Dan Amelang 揭露他的開發成果,可參見郵件論壇的訊息 [JIT for pixman]。[pixman] 是提供給 X 與 Cairo 使用的 pixel-manipulation 函式庫,顧名思義,就是處理 image compositing 與 trapezoid rasterization 等操作,而在 Dan Amelang 的論文 [Jitblt: Efficient Run-time Code Generation for Digital Compositing] 給予令人振奮的突破,無疑是個極佳的突破點,我們也可預見 (dynamic) compiler 技術在更多資訊領域的廣泛應用。

所以,當編譯器技術走入新的層次時,就需要更強大且多元的 Toolkit,而我們選定 [LLVM] (Low Level Virtual Machine),當我們已知曉整個典範移轉 (paradigm shift) 的衝擊,就思考 LLVM 這樣的嶄新架構能給予我們哪些突破限制的可能性。當我們「窮得只剩下 Compiler」之際,該如何才能達到王陽明牧師在《窮得只剩下錢》一書提到的話:
    「人生兩條路:『生活的幸福』不等於 『生命的幸福』,兩樣幸福我們都需要」
如此兼顧「生活的幸福」與「生命的幸福」的境界呢?作為一個技術從業人員,唯有不斷追求新知,並認真反省資訊技術如何更有效率且深入的解決問題,才能更掌握「幸福」。以上,期待您的指教,謝謝!
由 jserv 發表於 February 6, 2009 08:40 PM
迴響

想聽 LLVM, 呵

godfat 真常 發表於 February 6, 2009 10:42 PM

Jserv您好:
google查詢compiler關鍵字路過此,請教您演講中是否會提及multicore and multiprocessor parallelism?
LLVM Compiler架構對此議題有什麼助益?
Thanks!
------
Introduction to myelf:
I was a programmer who struggled with GNU toolchain implementation for a proprietary JavaCard processor, then for a 32-bit embedded RISC uP.

wenchen 發表於 February 7, 2009 04:16 PM

@wenchen,
目前不考慮 multicore 與 multiprocessor parallelism,而是著重於 dynamic compiler 的設計與應用,謝謝

jserv 發表於 February 7, 2009 09:37 PM
發表迴響









記住我的資訊?