HSAプログラミングモデル実現にあたっては、ハードウェアレベルの対応も不可欠になる。そこで鍵となるのが、“hUMA”と“hQ”と呼ばれるHSA機能だ。
“hUMA”(heterogeneous Uniform Memory Access)は、CPUとGPUがメモリアドレスを共有し、CPUとGPUそれぞれのメモリにページマッピングできるようになる。これにより、CPU側のメモリデータをGPU側のメモリにコピーすることなく読めるようになり、その逆にGPU側のメモリデータにCPUがアクセスすることもできるようになる。
また、hUMAでは、GPUコアがCPUコアとハードウェアレベルでメモリコヒーレンシを取ることで、より効率的にもう一方のメモリにアクセスできるようになる。この他、hUMAではCPUとGPUのプロセス間通信を行うシグナリングについても定義されている。

左=現状のメモリアーキテクチャと、hUMAの違い。右=CPUとGPUがメモリアドレスを共有し、CPUとGPUそれぞれのメモリにページマッピングできるようになる。これにより、CPU側のメモリデータをGPU側のメモリにコピーすることなく読めるようになり、その逆も可能になる (クリックで拡大)
左=hUMAのサポートにより、アプリケーションがGPUを利用するハードルを一段低くすることが可能になる。右=さらにGPUとCPUのプロセス間通信を実現することで、命令バッファの転送なども不要になり、アプリケーションをGPUに近いところで実行できるようになる (クリックで拡大)一方、“hQ”(heterogeneous Queing)は、OSを介さずにユーザーモードでGPUのキュー(待ち行列)に演算処理のパケットを発行できるようにする仕組みだ。現在、GPUで汎用演算処理を行うためには、アプリケーションは、まずOSのAPIを通じてグラフィックスドライバ経由でGPUにアクセスすることになり、複雑かつオーバーヘッドが大きくなるという欠点がある。
これに対し、hQでは、HSAランタイムを介して共有メモリアドレス空間にHSAキューを生成し、OSを介することなくユーザーモードでGPUで実行するパケットを発行することができるようになるため、あたかもGPUをCPUコアと同じように扱えるようにできる。また、このHSAキューは、HSAランタイムを介してCPUにも利用できるため、CPUとGPUのシームレスな連係を可能にする。HSAファウンデーションでは、このhQのパケットフォーマットやプロトコル、キューイング言語を定義し、アプリケーションが容易にGPUを並列演算処理に利用できるようにしている。
そして、これらの機能にハードウェアレベルで対応したのが、2014年1月14日に正式発表された最新のAMD Aシリーズプロセッサ“Kaveri”というわけだ。

左=現在、アプリケーションがGPUを利用しようとすると、OSのAPIを通じてグラフィックスドライバ経由でGPUにアクセスすることになり、複雑かつオーバーヘッドが大きくなるという欠点がある。右=hQでは、HSAランタイムを介して共有メモリアドレス空間にHSAキューを生成し、OSを介することなくユーザーモードでGPUで実行するパケットを発行することができるようになる (クリックで拡大)
AMDのプロセッサ「Kaveri」、ベンチマーク性能でインテルのCore-i5を上回る
サーバ用CPU市場に挑むAMDとARMの思惑――ゲーム機の成功モデルをサーバでも
AMD、モバイル向けに新型プロセッサを発表Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング