Kaveri最大の特徴となるのは、やはりHSAのサポートだ。
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.