新時代到来! ヘテロジニアス・コンピューティング最新動向【前編】:プロセッサ/マイコン(3/4 ページ)
2014年1月14日、ヘテロジニアス・コンピューティングに向けたフレームワーク「HSA」(Heterogeneous System Architecture)をハードウェアレベルで初めてサポートするAMD Aシリーズプロセッサ“Kaveri”が正式に発表された。HSA対応アプリケーションの開発プラットフォームとしても期待を集めているKaveriを中心に、HSAの現状と今後を探る。
HSA
Kaveri最大の特徴となるのは、やはりHSAのサポートだ。
- 並列処理プログラムが、CPUやGPUを意識することなく動作できるようにするプログラミングモデルの整備
- システムやアーキテクチャの違いを吸収する中間言語やランタイムの整備
- CPUとGPUのメモリアドレス共有と、CPUーGPU間のメモリコヒーレンシ(整合性)の実現
HSAでは、これらのことなどを標準化され、x86でもARMプラットフォームでも、そして、いかなるGPUアーキテクチャでも、プログラムを大きく変更することなく動作できるようにしようとしている。
その基本的な仕組みは、HSAIL(HSA Intermediate Language)と呼ばれる中間言語によってGPU(またはCPUも含む)の命令セットの違いを吸収し、JIT(Just In Time)コンパイラまたはランタイム(各ハードウェアベンダーが用意するファイナライザ)がGPU(またはCPU)のネイティブ命令セットに変換するというもの。ただ、HSAILが抽象化するのは、主にGPUが得意とする並列処理命令であり、CPUで処理した方が効率的な演算処理や、GPU本来の役割であるグラフィックス処理は含まない。
HSAファウンデーションでは、1つのプログラムコードで、全てのプラットフォームをサポートできるようにすることを最終的なゴールとしており、同ファウンデーションのメンバーのCPUアーキテクチャ、すなわちx86、ARM、そしてMIPS(2012年末にImagination Technologiesが買収)の間で、積極的にバイナリ変換ができる環境を整えるられるよう働きかける可能性も残されている。
HSAでは、HSAILの生成にC++AMPなどの高レベルコンパイラによるプログラミングの他、Open CLで書かれたプログラムは、ClangやEDG(Edison Design Group)のフロントエンドでOpen CLのSPIR(Standard Portable Intermediate Representation)に変換された後、LLVM(Low Level Virtual Machine)でHSAILに最適化される。また、Javaの並列プログラミングに関しては、OracleとAMDが共同開発したOpen CLアクセラレーションAPIのAPARAPI(A PARallel API)を利用することで、HSAでも汎用演算処理をGPUに割り当てることができるようになる。
こうして、HSAILのバイナリコードを生成することで、各ハードウェアの命令セットアーキテクチャに近いレベルでアプリケーションを実行できるため、より効率的かつ高パフォーマンスが得られるというのが、HSA陣営の主張だ。
Copyright © ITmedia, Inc. All Rights Reserved.