前編、中編に引き続き、Snow Leopardの秘密に迫っていこう。
目次
ハードの性能を引き出すために
パソコンの性能は、OSやアプリケーションを64bit対応にしたからといって、劇的に向上するわけではない。性能アップのためには、クロックに代わって増えているCPUコアを上手に使うアプリケーションの並列化が鍵となる。
しかしプログラムの並列化は非常に難しい。
プログラムの90%が並列化可能になっても、わずか10%が並列化できていないだけで、100%並列実行可能なプログラムに比べて、コアを増やしたときの性能向上は半分に落ちてしまう(アムダールの法則という。Wikipedia)。
単にマルチスレッドのサポートがあるだけでは駄目で、より高レベルな並列化支援の枠組みが必要だ。
そこで、アップルは並列化、高速化のためのふたつの枠組みを提供する。ひとつが「Grand Central Dispatch」(GCD)、そしてもう一つが「OpenCL」だ。
並列化をOS側で支援する「GCD」
GCDは開発者への負担を抑えつつ、OS側で並列化を促進するための枠組みを提供するというもの。
これは、ただマルチスレッドに対応したフレームワークを提供するという意味ではない。その程度のことは現在あるMac OS Xの開発環境「Cocoa」でもある程度は実現されているし、かつての「BeOS」ですらアプリケーションフレームワークはマルチスレッド対応であった。
しかし、単にライブラリやフレームワークがマルチスレッドになってアプリケーションの一部が並列化可能になっても、先のアムダールの法則が指し示すように、それだけでは性能が上がらない。
だから、GCDではもっと抜本的な対策が取られている。
GCDではマルチコアを活かした処理を実行するエンジン部分を土台として整えて、オブジェクト志向のフレームワークとしてプログラマに提供する。これは一部の特別なアプリケーション向けという意味ではなく、システム全体のAPIとして用意されている。つまり、GCDはどのアプリケーションでも利用可能だ。
そして、GCDの利用やGCDを使ったアプリケーションへの移行を支援するようなツールも展開するようだ。
プログラミング言語を拡張する
いちばんのポイントは、さらに「プログラミング言語に対してGCDを支援するための拡張を施す」と言う点だ。
これまでの並列化プログラミングは「いくつスレッドを作って」「それをどう動かして」というレベルから細かく開発者が面倒を見なければらなかった。一方で、GCDでは「ここら辺が並列化可能っぽい」「その中でもここは並列化しないで逐次で実行して」と要所を指定していくぐらいの手間で、あとはエンジンが自動的にスレッドを用意して、各コアに処理を分散して実行させるところまでをサポートしてくれるようだ。
プログラミング言語を拡張した例としては、マイクロソフトの「構造化例外処理」(Structured Exception Handling、SEHと略される)がある。
これは C/C++ といったプログラミング言語に独自の拡張を施し、システムと協調したエラー処理を明快に記述することができるようになるというもの。言語のレベルから支援したSEHのおかげで、Windows NT、2000、XPなどのWindowsは、それまでのWindows 3.1や95、98に比べてより高い安定性を実現した。
また、並列化のために言語を拡張した例としては、インテルの推進する「OpenMP」がある。OpenMPがどちらかというと科学技術計算のような高度な計算を分散させるのに対し、GCDは一般プログラミング向け、例えば「Mail」や「Safari」のようなアプリケーションの並列化を支援するような味付けがされているのだろう。
この連載の記事
-
第13回
iPhone
なぜMac OS Xの64bit移行はスムーズなのか? -
第12回
iPhone
ジョブズという「One More Thing」は必要なかった -
第11回
iPhone
iPhone 3.0、知っておきたい6つの「画期的」新機能 -
第10回
iPhone
林信行に聞く「Mac&iPhoneの未来予想図」 -
第9回
iPhone
まとめて読むiPhone 3G Sの魅力 WWDC 2009基調講演【後編】 -
第8回
iPhone
写真でわかる、iPhone OS 3.0新機能 WWDC 2009基調講演【中編】 -
第7回
iPhone
開発者が見る、ここがスゴいぞ新iPhone -
第6回
iPhone
iPhone for everybodyでiPhone 3G Sが安く買える -
第5回
iPhone
Snow Leopardも出没! WWDC 2009基調講演【前編】 -
第4回
iPhone
値下げで魅力UP MacBook Pro&Air新機種が登場 - この連載の一覧へ