ヘテロジニアスシステムアーキテクチャ(HSA )は、メモリとタスクを共有し、同じバス上で中央処理装置とグラフィックスプロセッサを統合することを可能にするベンダー間の仕様セットです。[1] HSAはHSA Foundationによって開発されており、HSA Foundationには(他の多くの企業の中でも)AMDやARMが含まれています。このプラットフォームの目的は、CPU、GPU、その他のコンピューティングデバイス間の通信遅延を削減し、プログラマの観点からこれらのさまざまなデバイスの互換性を高めることです。[2] : 3 [3]デバイスの分離したメモリ間でのデータの移動を計画するタスク(現在はOpenCLまたはCUDAで行う必要があります)からプログラマを解放します。[4]
CUDAやOpenCL、その他ほとんどの高度なプログラミング言語は、HSAを使用して実行パフォーマンスを向上させることができます。[5] ヘテロジニアスコンピューティングは、タブレット、スマートフォン、その他のモバイルデバイス、ビデオゲームコンソールなどのシステムオンチップデバイスで広く使用されています。[6] HSAを使用すると、プログラムは別のメモリやスケジューリングなしで、浮動小数点計算にグラフィックスプロセッサを使用できます。 [7]
根拠
HSA の背後にある理論的根拠は、計算を GPU にオフロードする際のプログラマーの負担を軽減することです。当初は AMD のみが推進し、FSA と呼ばれていたこのアイデアは、他のメーカーのDSPなど、GPU 以外の処理ユニットにも拡張されました。
-
HSA 非搭載システムでGPUに計算をオフロードするときに実行される手順
-
HSA機能を使用してHSAシステム上のGPUに計算をオフロードするときに実行される手順
最新の GPU は、単一命令複数データ(SIMD) や単一命令複数スレッド(SIMT)の実行に非常に適していますが、最新の CPU は依然として分岐などに最適化されています。
概要
もともとCell Broadband Engineなどの組み込みシステムによって導入されたヘテロジニアス コンピューティングは、複数のシステム アクター間で直接システム メモリを共有するようになり、より主流になっています。ヘテロジニアス コンピューティング自体は、 中央処理装置(CPU)、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、またはあらゆる種類の特定用途向け集積回路(ASIC) など、複数の処理装置を含むシステムを指します。システム アーキテクチャにより、グラフィックス プロセッサなどのアクセラレータが、システムの CPU と同じ処理レベルで動作できるようになります。
HSA の主な機能の 1 つに、コンピューティング デバイス用の統合仮想アドレス空間を定義するというものがあります。GPU は従来、メイン (CPU) メモリとは別に独自のメモリを持っていますが、HSA ではこれらのデバイスがページ テーブルを共有し、ポインタを共有することでデータを交換できるようにする必要があります。これは、カスタムメモリ管理ユニットによってサポートされます。[2] : 6–7 相互運用性を可能にし、プログラミングのさまざまな側面を容易にするために、HSA はCPU とアクセラレータの両方でISAに依存せず、高水準プログラミング言語をサポートするように設計されています。
これまでのところ、HSA 仕様は次の通りです。
HSA中間層
HSAIL (異種システムアーキテクチャ中間言語)、並列プログラム用の 仮想命令セット
- LLVM中間表現やSPIR ( OpenCLやVulkanで使用)に似ている[誰によると? ]
- JITコンパイラによって特定の命令セットに最終決定される
- どのコアがタスクを実行するかを後で決定する
- 明示的に並列
- 例外、仮想関数、その他の高レベル機能をサポート
- デバッグサポート
HSA メモリ モデル
- C++11、OpenCL、Java、.NETメモリモデルと互換性あり
- リラックスした一貫性
- マネージド言語(Javaなど)とアンマネージド言語(Cなど)の両方をサポートするように設計されている
- Fortran、C++、C++ AMP、Java などでプログラムされたさまざまな異種製品用のサードパーティ コンパイラの開発がはるかに容易になります。
HSAディスパッチャとランタイム
- 異種タスクキューイングを可能にするために設計:コアごとの作業キュー、キューへの作業の分散、作業のスティーリングによる負荷分散
- どのコアも、自分自身を含む他のコアの作業をスケジュールできる
- コアのスケジュール作業のオーバーヘッドを大幅に削減
モバイルデバイスはHSAの応用分野の一つであり、HSAによって電力効率が向上します。[6]
ブロック図
以下の図は、HSA と従来のアーキテクチャにおける CPU-GPU 調整を比較したものです。
-
HSA は統合仮想メモリを提供し、データ全体をコピーする代わりに PCI Express 経由でポインターを渡すことを容易にします。
-
パーティション化されたメインメモリでは、システムメモリの一部が GPU 専用に割り当てられます。その結果、ゼロコピー操作は不可能になります。
-
GPUとCPUがHSA対応の統合メインメモリ。これによりゼロコピー操作が可能になります。[8]
ソフトウェアサポート

ハードウェアに実装されているHSA固有の機能の一部は、オペレーティングシステムカーネルと特定のデバイスドライバーでサポートされている必要があります。たとえば、AMD RadeonおよびAMD FireProグラフィックスカード、およびGraphics Core Next (GCN)に基づくAPUのサポートは、 2015年2月8日にリリースされたLinuxカーネルメインラインのバージョン3.19に統合されました。[10]プログラムはamdkfd と直接対話するのではなく[さらに説明が必要]、HSAランタイムを使用してジョブをキューに入れます。[11] amdkfd と呼ばれるこの最初の実装は、「Kaveri」または「Berlin」APUに焦点を当てており、既存のRadeonカーネルグラフィックスドライバーと並行して動作します。
さらに、amdkfdはヘテロジニアスキューイング(HQ)をサポートしており、プログラマーの観点から複数のCPUとGPU間での計算ジョブの分散を簡素化することを目的としています。AMDのIOMMUバージョン2を搭載したグラフィックスハードウェアにのみ適したヘテロジニアスメモリ管理(HMM )のサポートは、Linuxカーネルメインラインバージョン4.14に採用されました。[12]
HSAプラットフォームの統合サポートは、2015年に予定されているOpenJDKの「Sumatra」リリースで発表されています。 [13]
AMD APP SDKは、並列コンピューティングを対象としたAMD独自のソフトウェア開発キットで、Microsoft WindowsとLinuxで利用できます。Boltは、異種コンピューティングに最適化されたC++テンプレートライブラリです。[14]
GPUOpenはHSAに関連する他のソフトウェアツールもいくつか含んでいます。CodeXLバージョン2.0にはHSAプロファイラーが含まれています。[15]
ハードウェアサポート
アム
2015 年 2 月現在[アップデート]、AMD の「Kaveri」A シリーズ APU ( 「Kaveri」デスクトップ プロセッサと「Kaveri」モバイル プロセッサを参照) と Sony のPlayStation 4のみが、統合 GPU がAMD の IOMMU バージョン 2 を介してメモリにアクセスできるようにしています。以前の APU (Trinity と Richland) にはバージョン 2 の IOMMU 機能が含まれていましたが、PCI Express 経由で接続された外部 GPU でのみ使用できました。[引用が必要]
2015 年以降の Carrizo および Bristol Ridge APU には、統合 GPU 用のバージョン 2 IOMMU 機能も含まれています。[引用が必要]
次の表は、 APU を含む、3D グラフィックスを搭載したAMDのプロセッサの機能を示しています( 3D グラフィックスを搭載した AMD プロセッサの一覧も参照)。
- ^ FM2+ 掘削機モデルの場合: A8-7680、A6-7480、Athlon X4 845。
- ^ PC は 1 つのノードになります。
- ^ APU は CPU と GPU を組み合わせたものです。どちらにもコアがあります。
- ^ ファームウェアのサポートが必要です。
- ^ ab ファームウェアのサポートが必要です。
- ^ SSE4 はありません。SSSE3 もありません。
- ^ 単精度パフォーマンスは、 FMA演算に基づくベース (またはブースト) コア クロック速度から計算されます。
- ^ 統合シェーダ :テクスチャマッピングユニット :レンダリング出力ユニット
- ^ ab 保護されたビデオ コンテンツを再生するには、カード、オペレーティング システム、ドライバー、アプリケーションのサポートも必要です。また、互換性のある HDCP ディスプレイも必要です。HDCP は特定のオーディオ形式の出力に必須であり、マルチメディア セットアップに追加の制約が課せられます。
- ^ 2台以上のディスプレイに映像を出力するには、追加パネルにネイティブDisplayPortサポートが必要です。[25]あるいは、アクティブなDisplayPort-DVI/HDMI/VGAアダプタを使用することもできます。
- ^ ab DRM ( Direct Rendering Manager ) は Linux カーネルのコンポーネントです。この表のサポートは最新バージョンを指します。
アーム
Mali-G71に実装されているARMのBifrostマイクロアーキテクチャ[30]は、 HSA 1.1ハードウェア仕様に完全に準拠しています。2016年6月現在[アップデート]、ARMはこのハードウェア機能を使用するソフトウェアサポートを発表していません。
参照
- グラフィックス プロセッシング ユニット(GPGPU)上の汎用コンピューティング
- 非均一メモリアクセス(NUMA)
- オープンMP
- 共有メモリ
- ゼロコピー
参考文献
- ^ Tarun Iyer (2013 年 4 月 30 日)。「AMD が異種均一メモリ アクセス (hUMA) テクノロジーを発表」。Tom 's Hardware。
- ^ ab George Kyriazis (2012年8月30日). 異機種システムアーキテクチャ: 技術レビュー(PDF) (レポート). AMD. 2014年3月28日時点のオリジナル(PDF)からアーカイブ。 2014年5月26日閲覧。
- ^ 「ヘテロジニアス システム アーキテクチャ (HSA) とは?」 AMD。2014 年 6 月 21 日時点のオリジナルよりアーカイブ。2014 年5 月 23 日閲覧。
- ^ Joel Hruska (2013 年 8月 26 日)。「HSAIL の設定: AMD が CPU/GPU 連携の将来を説明」。ExtremeTech。Ziff Davis。
- ^ Linaro (2014 年 3 月 21 日). 「LCE13: ARM 上の異種システム アーキテクチャ (HSA)」. slideshare.net .
- ^ ab 「異種システムアーキテクチャ:目的と展望」gpuscience.com 2012年11月9日。2014年2月1日時点のオリジナルよりアーカイブ。2014年5月24日閲覧。
- ^ 「異機種システムアーキテクチャ: CPU と GPU 要素を組み合わせたマルチコア画像処理」。Embedded Computing Design。2014年5 月 23 日閲覧。
- ^ 「Kaveri マイクロアーキテクチャ」。SemiAccurate 2014 年 1 月15日。
- ^ Michael Larabel (2014 年 7 月 21 日)。「Linux 上のオープンソース HSA 向けに AMDKFD ドライバーが引き続き進化」。Phoronix。2015年1月 21 日閲覧。
- ^ ab 「Linuxカーネル3.19、セクション1.3。AMD GPUデバイス用のHSAドライバー」。kernelnewbies.org 。 2015年2月8日。 2015年2月12日閲覧。
- ^ 「HSA-Runtime-Reference-Source/README.md at master」. github.com . 2014年11月14日. 2015年2月12日閲覧。
- ^ 「Linux カーネル 4.14 がセキュアなメモリ暗号化などを搭載して発表」2017 年 11 月 13 日。[永久リンク切れ ]
- ^ Alex Woodie (2013 年 8 月 26 日)。「HSA Foundation が Java の GPU 性能の向上を目指す」HPCwire。
- ^ 「Bolt on github」。GitHub 。 2022年1月11日。
- ^ AMD GPUOpen (2016年4月19日). 「CodeXL 2.0にはHSAプロファイラーが含まれています」。2018年6月27日時点のオリジナルよりアーカイブ。2016年4月21日閲覧。
- ^ 「AMD、第7世代APUを発表:ノートPC向けのBristol RidgeとStoney RidgeのExcavator mk2」。2016年5月31日。 2020年1月3日閲覧。
- ^ 「AMD モバイル「Carrizo」APU ファミリーは、2015 年にパフォーマンスとエネルギー効率の大幅な向上を実現するように設計されています」(プレスリリース)。2014 年 11 月 20 日。2015年2 月 16 日閲覧。
- ^ 「モバイル CPU 比較ガイド Rev. 13.0 ページ 5: AMD モバイル CPU 完全リスト」。TechARP.com。2017年12 月 13 日閲覧。
- ^ ab 「AMD VEGA10 および VEGA11 GPU が OpenCL ドライバーに搭載される」。VideoCardz.com。2017年6 月 6 日閲覧。
- ^ Cutress, Ian (2018年2月1日). 「ZenコアとVega: AM4向けRyzen APU – CESでのAMD Tech Day: 2018年のロードマップ公開、Ryzen APU、12nmのZen+、7nmのVega」. Anandtech . 2018年2月7日閲覧。
- ^ Larabel, Michael (2017 年 11 月 17 日). 「Radeon VCN エンコード サポートが Mesa 17.4 Git に導入」. Phoronix . 2017 年11 月 20 日閲覧。
- ^ ab 「AMD Ryzen 5000G 'Cezanne' APU、初の高解像度ダイショットを公開、180mm2パッケージに107億個のトランジスタを搭載」wccftech . 2021年8月12日. 2021年8月25日閲覧。
- ^ Tony Chen、Jason Greaves、「AMD の Graphics Core Next (GCN) アーキテクチャ」(PDF)、AMD 、2016 年8 月 13 日閲覧
- ^ 「AMD の Kaveri アーキテクチャの技術的考察」 Semi Accurate 。2014年7 月 6 日閲覧。
- ^ 「AMD Radeon™ HD 5000、HD 6000、および HD 7000 シリーズ グラフィックス カードに 3 台以上のモニターを接続するにはどうすればいいですか?」 AMD 。 2014 年12 月 8 日閲覧。
- ^ Airlie, David (2009 年 11 月 26 日). 「DisplayPort が Linux カーネル 2.6.33 にメインライン化された KMS ドライバーでサポートされる」 。2016年1 月 16 日閲覧。
- ^ 「Radeon 機能マトリックス」. freedesktop.org . 2016 年1 月 10 日閲覧。
- ^ Deucher, Alexander (2015 年 9 月 16 日). 「XDC2015: AMDGPU」(PDF) . 2016 年1 月 16 日閲覧。
- ^ ab ミシェル・デンツァー (2016 年 11 月 17 日)。 「[お知らせ] xf86-video-amdgpu 1.2.0」。lists.x.org。
- ^ 「ARM Bifrost GPU アーキテクチャ」。2016 年 5 月 30 日。
外部リンク
- 2013 年 11 月のSC13で Vinod Tipparaju がYouTubeで公開した HSA 異種システム アーキテクチャの概要
- HSAとソフトウェアエコシステム
- 2012 – HSA by Michael Houston 2016年3月5日にWayback Machineにアーカイブ
