【レポート】
BSDCan2008、およびその直前に開催されたFreeBSD Developer Summitを通じて関係者がもっとも強い関心を持ったのは、もしかするとChris Lattner氏が担当したセッション「BSD licensed C++ compiler - LLVM and Clang: Next Generation Compiler Technology」だったかもしれない。同氏のセッションで初めてLLVM(Low Level Virtual Machine)について知ったという人も少なからずいたようだ。Lattner氏はLLVMのチーフアーキテクトであり、同技術を語るには適切な人物といえる。
LLVMはモダンなテクニックで開発されたコンパイラインフラストラクチャだ。プログラミング言語に依存しないモダンなオプティマイザとコードジェネレータを持ち、複数のプログラミング言語とアーキテクチャをサポートし、GCC互換フロントエンドllvm-gccを持っているという特徴がある。再利用可能なオプティマイザをさまざまなポイントで実行して最適化を行う。静的ビルドも動的ビルドもその組み合わせも可能だ。さらに特記すべきはllvm-gccフロントエンドを除いて、GPLではなくBSD Licenseで開発されているという点だ。
|
|
LLVM optimizer features used by llvm-gcc - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
Other LLVM features used by llvm-gcc - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
|
|
LLVM Link Time Optimization - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
OpenGL to LLVM: At runtime - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
既存のOSS C/C++/Objective Cコンパイラは古いコード生成技術に基づいており、JITやクロスファイルオプティマイザといったモダン技術を採用していないため、ほかのアプリケーションで再利用しにくく、さらにリリースごとに遅くなっているという状況にある。LLVMはモダンなテクニックを活用することでこうした状況を改善することに目的がおかれている。従来どおり静的にコンパイルすることもできるし、JITで動作させることにも対応している。
FreeBSDではメインのコンパイラにGCCを採用している。GCCはOSS C/C++コンパイラのメインストリームにあり、複数のアーキテクチャに対応している。今のところGCCをメインコンパイラとして採用するのはリーズナブルな選択肢だ。しかし、*BSDではコンパイラがGPLであることに抵抗を感じる向きもあり、GCCがGPLv3に移行した場合の影響を懸念する声もある。そのため、BSD Licenseや他ライセンスのC/C++コンパイラの模索も常に続けられている。
LLVMというコンパイラがあることは以前から知られており、すでにPorts Collection(devel/llvm)にも追加されている。野心的な目標を掲げていることが同プロジェクトページからよくわかるが、GCCが存在する中でそういったコンパイラの開発が可能なのか半信半疑であったり、そもそもGCC以外の候補をそれほど気にしていなかったという状況だったと言えるだろう。しかし、サイトのドキュメントを読むのと、実際に担当者から話を聞くのとでは、印象がだいぶ違ってくる。発表を聞く開発者はLLVMに大きな関心を持ったようだった。
LLVMが魅力的なのは、BSD Licenseである以外にも、GCC 4.2のリプレースを目指したllvm-gccフロントエンドを用意しているところにある。簡単に言ってしまえば、gccをllvm-gccに変更するだけで入れ替えができる。しかも入れ替えるだけで最適化時間が30%ほど短縮されるほか、生成されるコードが5%から10%ほど優れたものになるという。
|
|
Carbon.h Parsing / Analysis Time - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
ProgreSQL Front-end Times - BSDCan2008 Chris Lattner氏の発表資料より抜粋 |
LLVMがGCC 4.2のリプレースを目的としたフロントエンドllvm-gccを持っているからといって、完璧にすべての互換性を実現しているわけではない。それにFreeBSDがLLVMへの移行に取り組んだとしても、その対応はすぐに終わるというものではないだろう。しかし、BSD Licenseであり、コンパイル性能も生成されるコードの質も良いということになれば、開発者が興味を惹かれないわけがない。
しかも、カーネルのみならず、Ports CollectionのビルドにLLVMを採用すればビルド時間を短縮できる可能性がある。OpenOffice.orgやKDE、Gnomeなど大規模アプリケーションが増える中、ビルド時間が短いうえに上質なコードを生成するコンパイラの存在は魅力的だ。ports committerにとってもLLVMは魅力的である。
LLVMではGCC 4.2互換のフロントエンドではなく、独自のC/C++/Objective CフロントエンドとしてClangを持っている。GCCフロントエンドは遅いうえにメモリを大量に消費し、さらに最近のIDEが要求する機能に対応しきれないため、それらを解決したフロントエンドが必要という発想によるものだ。Clangはコンパイル時間がGCCよりも高速なうえにモダンなIDEや商用コードチェッカにも対応している。
さらにLLVMは、C/C++/Objective C以外の言語への発展も可能だ。多くのプログラミング言語ですでに実装された最適化技術が採用できるということになれば、LLVMの発展性の高さは魅力的なものだ。もちろんその間、GCCの開発も停滞しているわけではない。GNU binutilsの一部として新しいELFリンカ機能が登場するなど改善も続けられている。
ともあれ、LLVMは魅力的なコンパイルインフラとしての認識を広めつつあるようだ。直近でFreeBSDがLLVMを採用するとは思えないが、長期的に見た場合、LLVMへの移行も起こりうるということは抑えておくと良いだろう。
| 性能改善ツールの要「DTrace」がFreeBSD 8にマージ - BSDCan2008 [2008/6/3] |
| FreeBSD、U-Boot対応で組込開発負荷軽減 - BSDCan2008 [2008/6/3] |
| 問題報告システムをより使いやすいものにするには? - BSDCan2008 [2008/6/3] |
| 急成長! FreeBSD/mips対応アプライアンス - BSDCan2008 [2008/6/3] |
| Jail + リソース制限機能、FreeBSD 8で登場か - BSDCan2008 [2008/6/3] |
| FreeBSD 7、1500%ピーク性能改善の裏にあるもの - AsiaBSDCon 2008 [2008/4/4] |
| GEOMでジャーナリング、UFSの機能を柔軟に拡張 - AsiaBSDCon 2008 [2008/4/4] |
| f.root-servers.netを支えるFreeBSDとBIND9 - AsiaBSDCon 2008 [2008/4/4] |
| 使いやすさ抜群! FreeBSDベースのデスクトップOS PC-BSD - AsiaBSDCon 2008 [2008/4/4] |
| FreeBSD 7.0登場 - 高負荷時ピーク性能が1500%改善 [2008/2/28] |
| FreeBSD 6.3登場 - 2010年1月セキュリティ対応期限 [2008/1/20] |
| 超高速HTTPアクセラレータ最新版"Varnish 1.1"登場 [2007/7/23] |
| 備えあれば憂いなし - pfSense/pfSyncでネットワーク管理を容易に [2007/5/24] |
| PCをNASサーバへ変身させる! かんたん本格派NASソリューション - FreeNAS登場 [2007/5/24] |
| 高速化プログラミングの参照実装としても活用される「Varnish」 [2007/5/24] |
| FreeBSDにおけるサーバ仮想化の取り組み [2007/5/21] |
| 足掛け7年のサクセスストーリ - マルチコアシステムで大幅に性能向上達成 [2007/5/19] |
| Ports Collection 17,000へ - インフラやメカニズムの改善へ着手 [2007/5/19] |
| インストーラが世代交代 - sysintall(8)からfinstallへ [2007/5/18] |
| マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] |
| Linux Mint 12 KDE登場 [10:26 2/10] |
| Dell、重複排除により最大98%のデータ削減が可能なバックアップストレージを発売 [09:44 2/10] |
| 北大、「ポジトロン断層撮影法」による脳腫瘍の性質を診断する手法を開発 [09:40 2/10] |
| NICTなど、手術支援ロボット「da Vinci」の3D裸眼映像伝送実証実験を計画 [09:36 2/10] |
|
カシオ、子供の入園/入学にぴったりな[お名前・似顔絵シール]印刷サービス [17:38 2/10] 家電 |
|
TVウォッチャーの芸能まるごと1週間 - メイサ&赤西結婚、花子妊娠に沸いた [17:10 2/10] エンタメ |
|
竹達彩奈、デビューシングル「Sinfonia! Sinfonia!!!」を4/11にリリース [17:02 2/10] ホビー |
|
一緒に住むのをためらってしまう相手のクセとは? [17:00 2/10] キャリア |
|
日産、スカイラインクーペ特別仕様車「55th Limited」を55台限定発売 [16:54 2/10] ライフ |