Cool Chips XIIIにおいてGoogleのShih-wei Liao氏は"Device Cloud Computing"と題する基調講演を行った。Device Cloud Computing(DCC)とは、携帯デバイスのような非常に小さい機器とクラウドデータセンターのような非常に大きいシステムでコンピューティングが行われるという状態を指す造語である。

図1 GoogleのDCCについて講演するLiao氏

図2に示すように、Bill Gates氏はパソコンを個人の机(地)に置こうとしたが、Googleはクラウド(天)でコンピューティングを行い、歩いている人にも計算パワーを提供するという。

図2 Laio氏の示した天人合一の図

そしてDCCでは、移動中の人が携帯機器から指先1つで巨大センターのスーパーコンピュータを使えるという天(Cloud)と人が一体になる「天人合一」の状態であるという。「天人合一」は、広辞苑によると「天と人とは理を媒介にしてひとつながりだと考える」という中国の考え方となっているが、現代では天と人はインターネットやWi-Fi、3Gなどを媒介にして繋がっているというところであろうか。

そしてAndroid携帯電話などは目、耳、口の相当する機能やGPSによる位置認識機能を持ち人間の感覚の延長となることができる。このようなインプットを膨大なデータの集積と強力な処理能力を持つクラウドセンターと結びつけるとAugmented Reality(AR:コンピュータの情報処理により、周囲の状況をより良く理解する情報を提供する)が実現できるという。すでに携帯電話の表示機能とGPS機能を使った行き先案内や、現在位置の近くのグルメレストランを案内するサービスなどが行われており、さらにカメラやマイクを使えば、外国語の看板や説明を読んだり、異なる言語で話している内容も理解できたりするようになる。

Liao氏の話はここまでがビジョンの話で、その後は一転して、いかにして携帯電話とクラウドセンターのソフトウェアをチューニングして使用メモリ量を減らしたり、性能を上げたりするかという話になった。指導原理としての理想は高く掲げなければいけないが、それを実現していくためには地道な努力で改善を積み重ねて行くことが必要ということであろう。

携帯デバイス側のAndroidの開発ツールとしては、Donut(ドーナツ)と呼ばれる版ではgcc4.2.1を使用していたが最新のEclair(エクレア)ではgcc4.4.0に替えコードを記憶するメモリ量を17.5%削減したが、性能の低下は無視できる程度に納まっているという。

また、gccには何十個もコンパイラオプションがあるが、図3に示すように、遺伝子的アルゴリズムを使ってメモリ量と性能の観点で最適のコンパイラオプションの組み合わせをサーチしているという。まず、初期のオプションセットでのコンパイルし、実行結果から必要メモリ量と実行性能を評価する。そして不適当なオプションを除き、別のオプションとの組み合わせや突然変異のオプションを組み込むなどを繰り返して使用メモリ量や実行時間が改善されるようにオプションセットを進化させて行き、最適なオプションのセットを見つける。

図3 遺伝子的アルゴリズムによる最適コンパイルオプションのサーチ

その結果、図4に示すように6.6%のコードサイズの削減ができたという。

図4 コンパイルオプションの最適化でコードサイズを6.6%削減

また、まず実行状況を測定するコードを埋め込んだソースを作ってコンパイルし、典型的な入力を与えて動作させてプログラムの振る舞いをプロファイルとして記録する。そして、次にこのプロファイルを与えて、測定コード無しのソースをプロファイル付きでコンパイルするというFDO(Feedback-Directed Optimization)を行っている。プロファイルを見ると、それぞれの条件分岐がどのような確率で分岐するかなどが分かるので、それに応じたバイナリを作ることができる。その結果、コードサイズを約7%、実行時間を3%削減できたという。

また、プロセサが持っているパフォーマンスモニタ(リアルタイムに実行命令数、キャッシュミス数などの情報を与える)の情報を使ってメモリのプリフェッチなどをコントロールするというダイナミックな最適化も行っている。そしてマルチコアプロセッサに対しては仮想化を使ってロードバランスを行い、IOMMU機能を使って仮想化のオーバヘッドを減らすなど、携帯機器の必要メモリ量を減らし、性能を上げる努力を行っている。

このように、1つひとつの項目は数%からせいぜい10%強の改善であるが、考え付く限りの手法を試して改善を積み上げている。コードサイズが小さくなれば携帯機器のメモリ量を減らしたり、同じメモリ量なら多くの機能を動かしたりすることができる。また、実行時間の短縮は同じ処理をするならば消費電力の低減につながり電池寿命が延びる。

当然のことながら、携帯デバイス側だけでなく、クラウドセンター側のソフトウェアについても同じように徹底的に性能改善を行っている。Googleのように数万台のサーバがあるデータセンターでは、ソフトウェアの1%性能改善でも数百台のサーバが浮くことになり、サーバの購入費用だけでなく電気代も減るということで、億円単位のコストダウンになるのであるから当然のことである。

Google内部でどのように開発が行われているかが公開されることは少なく、Laio氏の講演は非常に興味深いものであった。