HSAプログラミングモデル実現にあたっては、ハードウェアレベルの対応も不可欠になる。そこで鍵となるのが、“hUMA”と“hQ”と呼ばれるHSA機能だ。
“hUMA”(heterogeneous Uniform Memory Access)は、CPUとGPUがメモリアドレスを共有し、CPUとGPUそれぞれのメモリにページマッピングできるようになる。これにより、CPU側のメモリデータをGPU側のメモリにコピーすることなく読めるようになり、その逆にGPU側のメモリデータにCPUがアクセスすることもできるようになる。
また、hUMAでは、GPUコアがCPUコアとハードウェアレベルでメモリコヒーレンシを取ることで、より効率的にもう一方のメモリにアクセスできるようになる。この他、hUMAでは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”というわけだ。
Copyright © ITmedia, Inc. All Rights Reserved.