【レポート】

Apple A4の秘密を申請特許から解き明かす - ベクトル処理と省電力機構

2 Appleが買収したPA Semiと「DLP(Data Level Parallelism)」

    Junya Suzuki  [2010/03/11]

    昨今のプロセッサは高速化のためにさまざまな並列化のテクニックが用いられているが、それらは主にスーパースカラ(スケーラ)型プロセッサで採用されている「ILP(Instruction Level Parallelism)」、マルチコア型プロセッサで採用されている「TLP(Thread Level Parallelism)」、そしてベクトル型プロセッサで採用されている「DLP(Data Level Parallelism)」の3つに大別される。それぞれに長所と短所があり、用途に応じて使い分けられている。

    中でも最もポピュラーなものがILPで、同時実行可能な命令数を増やすことで並列性を向上させるテクニックなため、既存のプログラムをそのまま高速動作可能なメリットがあり、採用事例も多い。逆にTLPやDLPでは並列性を意識したプログラムの記述が求められるため、既存の汎用プログラムは書き換えなしでパフォーマンスを発揮できない。特にDLPにおける普及の問題はプログラムのベクトル化で、大量のデータを一度に処理することが可能なDLPプロセッサのメリットを活かすのに必要なループ処理のベクトル化が大きなネックとなっている。

    なぜループ処理のベクトル化が問題になるのかといえば、それらはループ処理の依存関係にある。依存関係にはループによって生じるデータの依存と、メモリのアドレスに依存するものの2種類が存在する。これらはコンパイラの静的解析では発見できず、実際にデータが流れてくるまで依存関係を決定できない。ゆえにコンパイラは並列化に必要なベクトル化が行えず、本来パフォーマンス向上に必要なベクトル化がより小規模で行われるようになり、DLPのメリットが享受できないというものだ。

    端的な例でいえば、あるループによって生じる計算データをメモリ上に書き込んで、そのデータをさらに別のループでメモリから読み込んで処理しようと思った場合、ここに依存関係が生じる。後者のループは前者のループが終了するまで実行できないため、DLPでのベクトル化は行えないことになる。実際にはより複雑なケースが中心となるが、こうしたケースではコンパイラの処理に限界があるため、しばしばハンドコーディングによる最適化などのテクニックが用いられることがある。

    Sherman氏が指摘するポイントはここだ。Appleが買収したPA SemiのエンジニアはこうしたDLPの技術を研究しており、PA Semiのプロセッサ("PWRficient"と思われる)では1命令で複数のデータを同時に扱うことが可能だという。データ同時処理とはベクトル化のことを意味する。DLPは主に大量のデータに対して同じような処理を繰り返す仕組みに向いており、例えば画像や音楽、動画などが典型的なものだろう。いわゆるマルチメディア処理が中心だが、iPadのターゲットはここが中心で、それをより少ない消費電力で実現するのが重要となる。

    前述の9つの特許はデータの独立性を追跡し、並列処理可能なデータを発見した場合にハンドコーディングなしで自動的に最適化を行う方法を記したものだ。つまり、既存プログラムを上記のテクニックに対応したシステムで実行するだけで、自動的に最適化が行われることになる。命令の実行ステップが減少して、演算ユニットの利用効率が向上すれば、確かに無駄な電力消費は低減される。もしiPadがバッテリ持続時間を向上させる省電力機構に注力しているのであれば、ここで申請されている特許の数々の技術がサポートされている可能性があるというのがSherman氏の指摘だ。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン