コンピュータグラフィックスおよび集積回路設計において、Graphics Core Next ( GCN ) [ 1 ]は、 AMDが開発したグラフィックス処理ユニット用の一連のマイクロアーキテクチャであり、同社のTeraScaleマイクロアーキテクチャの後継です。GCN を搭載した最初の製品は、2012 年 1 月 9 日に発売されました。[ 2 ]
GCNとTeraScaleの命令セットはどちらも単一命令複数データ(SIMD)ですが、GCNプロセッサはRISC(縮小命令セットコンピュータ)であり、前世代のVLIW(非常に長い命令語)ベースの設計とは対照的です。 [ 3 ] RISCへの移行により、 TeraScaleよりもトランジスタ数が大幅に増加しますが、ハードウェアリソースを最大限に活用するVLIW命令の生成に伴う複雑さが軽減され、よりシンプルなコンパイラと容易なソフトウェア最適化が可能になります。RISC設計により、GCNプロセッサは汎用コンピューティング(GPGPU)も実行できます。
GCNグラフィックスチップは、 28nmのCMOSプロセス、および14nm(Samsung ElectronicsとGlobalFoundries)と7nm(TSMC)のFinFETプロセスで製造され、 AMDのRadeon HD 7000、HD 8000、200、300、400、500、Vegaシリーズのグラフィックスカードの一部のモデル(別途リリースされたRadeon VIIを含む)で利用可能です。GCNは、 PlayStation 4やXbox OneなどのAccelerated Processing Unit(APU)のグラフィックス部分にも使用されています。
GCNは2019年にRDNAマイクロアーキテクチャおよび命令セットアーキテクチャに取って代わられた。
GCN命令セットはAMDが所有しており、GPU専用に開発されました。除算のためのマイクロオペレーションは存在しません。
以下のドキュメントが利用可能です:
GCN命令セット用のLLVMコンパイラバックエンドが利用可能です。[ 5 ]これはMesa 3Dで使用されています。
GNU Compiler Collection 9 は、2019 年以降、シングルスレッドのスタンドアロン プログラム向けにGCN 3 と GCN 5 をサポートしており[ 6 ] 、GCC 10 ではOpenMPとOpenACCを介してオフロードも行っています[ 7 ]。
MIAOWは、 AMD Southern Islands GPGPUマイクロアーキテクチャのオープンソースRTL実装です。
2015年11月、AMDはCUDAベースのアプリケーションを共通のC++プログラミングモデルに移植できるようにすることを目的としたボルツマン・イニシアチブを発表した。 [ 8 ]
Super Computing 15イベントにおいて、AMDは、クラスタクラスの高性能コンピューティング向けヘッドレスLinuxドライバおよびHSAランタイムインフラストラクチャであるヘテロジニアス・コンピュート・コンパイラ(HCC) 、そしてCUDAアプリケーションを前述の共通C++モデルに移植するためのヘテロジニアス・コンピュート・インターフェース・フォー・ポータビリティ(HIP)ツールを展示した。
2017年7月現在、Graphics Core Next命令セットは5つのバージョンアップを経てきました。最初の4世代間の違いはごくわずかですが、第5世代のGCNアーキテクチャでは、ストリームプロセッサが大幅に改良され、パフォーマンスが向上し、1つの高精度数値の代わりに2つの低精度数値の同時処理がサポートされるようになりました。[ 9 ]

グラフィックスコマンドプロセッサ(GCP)は、GCNマイクロアーキテクチャの機能ユニットです。他のタスクの中でも、非同期シェーダーの処理を担当しています。[ 10 ]
非同期演算エンジン(ACE)は、演算処理を担う独立した機能ブロックであり、その目的はグラフィックスコマンドプロセッサの目的と類似している。
GCNの第3世代以降、ハードウェアには2つのスケジューラが搭載されています。1つはシェーダー実行中に「ウェーブフロント」をスケジュールするスケジューラ(CUスケジューラ、またはコンピュートユニットスケジューラ)、もう1つは描画キューとコンピュートキューの実行をスケジュールするスケジューラです。後者は、固定機能パイプラインの速度や帯域幅によってグラフィックスコマンドの利用率が低下している場合にコンピュート演算を実行することでパフォーマンスを向上させます。この機能は非同期コンピュートと呼ばれています。
特定のシェーダーの場合、GPUドライバはレイテンシを最小限に抑えるために、 CPU上で命令をスケジュールすることもあります。

ジオメトリプロセッサは、ジオメトリアセンブラ、テッセレータ、および頂点アセンブラで構成されています。
TesselatorはDirect3D 11およびOpenGL 4.6 [ 11 ]で定義されているようにハードウェアでテッセレーションを実行することができ、ATI TruFormおよびTeraScaleのハードウェアテッセレーションの後継として、当時AMDの最新の半導体知的財産コアとなりました。
1 つの演算ユニット (CU) は、64 個のシェーダープロセッサと 4 つのテクスチャマッピングユニット(TMU) を組み合わせたものです。[ 12 ] [ 13 ]演算ユニットはレンダリング出力ユニット(ROP)とは別個のものですが、ROP にデータを供給します。[ 13 ]各演算ユニットは、以下の要素で構成されています。
4 つの演算ユニットは、16KiB の L1 命令キャッシュと 32KiB の L1 データキャッシュを共有するように配線されており、どちらも読み取り専用です。SIMD-VU は一度に 16 個の要素を (サイクルごとに) 処理しますが、SU は一度に 1 つの要素 (1 回/サイクル) を処理できます。さらに、SU は分岐などの他のいくつかの操作も処理します。[ 15 ]
すべての SIMD-VU には、レジスタを格納する専用メモリがあります。レジスタには 2 種類あります。スカラーレジスタ (S0、S1 など) はそれぞれ 4 バイトの数値を保持し、ベクトルレジスタ (V0、V1 など) はそれぞれ 64 個の 4 バイトの数値のセットを表します。ベクトルレジスタでは、すべての演算が 64 個の数値に対して並列に実行されます。これは 64 個の入力に対応します。たとえば、一度に 64 個の異なるピクセルを処理することができます (それぞれの入力はわずかに異なるため、最終的にわずかに異なる色が得られます)。
各SIMD-VUには、512個のスカラーレジスタと256個のベクトルレジスタを搭載できる領域があります。
AMDは、各GCN演算ユニット(CU)が64 KiBのローカルデータ共有(LDS)を持つと主張している。[ 16 ]
CUスケジューラはハードウェア機能ブロックであり、どのSIMD-VUが実行されるかを選択します。スケジューリングのために、サイクルごとに1つのSIMD-VUを選択します。これは、他のハードウェアまたはソフトウェアスケジューラと混同しないでください。
シェーダーは、グラフィックス処理を実行するGLSLで記述された小さなプログラムであり、カーネルは、GPGPU処理を実行するOpenCLで記述された小さなプログラムです。これらのプロセスはそれほど多くのレジスタを必要としませんが、システムメモリまたはグラフィックスメモリからデータをロードする必要があります。この操作にはかなりのレイテンシが伴います。AMDとNvidiaは、この避けられないレイテンシを隠すために、複数のスレッドをグループ化するという同様のアプローチを選択しました。AMDはこのようなグループを「ウェーブフロント」と呼び、Nvidiaは「ワープ」と呼びます。スレッドのグループは、このアプローチでレイテンシを隠すGPUのスケジューリングの最も基本的な単位です。これは、SIMD方式で処理されるデータの最小サイズであり、コードの最小実行単位であり、その中のすべてのスレッドで単一の命令を同時に処理する方法です。
GCNアーキテクチャを採用したすべてのGPUでは、「ウェーブフロント」は64スレッドで構成され、NvidiaのGPUでは、「ワープ」は32スレッドで構成されます。
AMDの解決策は、各SIMD-VUに複数のウェーブフロントを割り当てることです。ハードウェアはレジスタを異なるウェーブフロントに分配し、あるウェーブフロントがメモリ上の結果を待っている場合、CUスケジューラはSIMD-VUに別のウェーブフロントを割り当てます。ウェーブフロントはSIMD-VUごとに割り当てられます。SIMD-VU間でウェーブフロントの交換は行われません。1つのSIMD-VUにつき最大10個のウェーブフロント(したがって、CUあたり最大40個)を割り当てることができます。
AMD CodeXLには、SGPRとVGPRの数と波面数の関係を示す表が表示されますが、基本的には、SGPRの場合は波面数1つあたり104~512、VGPRの場合は波面数1つあたり256となっています。
なお、 SSE命令と併せて考えると、この最も基本的な並列処理レベルの概念は「ベクトル幅」と呼ばれることが多い。ベクトル幅は、そのベクトルに含まれるビットの総数によって特徴付けられる。
各SIMDベクトルユニットには以下が含まれます。
各SIMD-VUは10個のウェーブフロント命令バッファを持ち、1つのウェーブフロントを実行するのに4サイクルかかる。
GCNの多くの実装には、通常、AMDの他のASICブロックがいくつか組み込まれています。これには、統合ビデオデコーダ、ビデオコーディングエンジン、AMD TrueAudioなどが含まれますが、これらに限定されません。
ビデオコーディングエンジンは、 Radeon HD 7000シリーズで初めて導入されたビデオエンコードASICです。[ 17 ]
VCEの初期バージョンでは、YUV420ピクセルフォーマットでのH.264のIフレームとPフレームのエンコード、SVEテンポラルエンコード、およびディスプレイエンコードモードのサポートが追加され、第2バージョンではYUV420およびYUV444 IフレームのBフレームのサポートが追加されました。
VCE 3.0はGCNの第3世代の一部を構成し、高画質ビデオスケーリングとHEVC(H.265)コーデックを追加しました。
VCE 4.0はVegaアーキテクチャの一部であり、その後Video Core Nextに置き換えられた。
2011年のプレビュー記事で、AnandTechはGraphics Core Nextでサポートされている統合仮想メモリについて書いた。[ 18 ]

ハードウェアに実装されている特定のHSA機能の一部は、オペレーティングシステムのカーネル(そのサブシステム) および/または特定のデバイス ドライバからのサポートを必要とします。たとえば、2014 年 7 月に、AMD は、Graphics Core Next ベースのRadeonグラフィックス カードをサポートするために、 Linux カーネル メインライン3.17 にマージされる 83 個のパッチを公開しました。いわゆる HSA カーネル ドライバは/drivers/gpu/hsaディレクトリにあり、DRMグラフィックス デバイス ドライバは/drivers/gpu/drm [ 21 ]にあり、Radeon カード用の既存の DRM ドライバを拡張します。[ 22 ]この最初の実装は、単一の「Kaveri」 APUに焦点を当てており、既存の Radeon カーネル グラフィックス ドライバ (kgd) と連携して動作します。
ハードウェアスケジューラはスケジューリング[ 23 ]を実行し、少なくとも1つのACEに少なくとも1つの空のキューができるまでこれらのキューをバッファリングすることで、計算キューのACEへの割り当てをドライバからハードウェアにオフロードします。これにより、すべてのキューがいっぱいになるか、安全に割り当てるキューがなくなるまで、HWSはバッファリングされたキューをACEに即座に割り当てます。[ 24 ]
スケジューリング作業の一部には、優先度付きキューが含まれており、優先度の低いタスクをプリエンプトして優先度の高いタスクを実行する必要なく、重要なタスクを他のタスクよりも高い優先度で実行できるため、優先度の高いタスクが使用していないリソースを他のタスクが使用できるようにしながら、GPU をできるだけ占有するようにスケジュールされた優先度の高いタスクとタスクを同時に実行できます。[ 23 ]これらは基本的にディスパッチコントローラを持たない非同期コンピューティングエンジンです。[ 23 ]これらは第 4 世代 GCN マイクロアーキテクチャで初めて導入されましたが、[ 23 ]内部テスト目的で第 3 世代 GCN マイクロアーキテクチャにも存在していました。[ 25 ]ドライバの更新により、第 3 世代 GCN パーツのハードウェアスケジューラが製品で使用できるようになりました。[ 23 ]
このユニットは、頂点シェーダーに入る前に退化した三角形を破棄し、フラグメントシェーダーに入る前にフラグメントを覆わない三角形を破棄します。[ 26 ]このユニットは、第4世代GCNマイクロアーキテクチャで導入されました。[ 26 ]
GCN 1マイクロアーキテクチャは、Radeon HD 7000シリーズのグラフィックカードのいくつかで使用されました。

計算とディスパッチを制御する非同期計算エンジンがあります。[ 15 ] [ 30 ]
ZeroCore Powerは、長時間アイドル状態のときにGPUの機能ユニットをオフにする省電力技術です。[ 31 ] AMD ZeroCore Power技術はAMD PowerTuneを補完します。
ディスクリートGPU(Southern Islandsファミリー):


第2世代GCNはRadeon HD 7790で初めて導入され、Radeon HD 8770、R7 260/260X、R9 290/290X、R9 295X2、R7 360、R9 390/390X 、 Steamrollerベースのデスクトップ「Kaveri」APUおよびモバイル「Kaveri」APU 、そしてPumaベースの「Beema」および「Mullins」APUにも搭載されています。FreeSyncのサポート、AMD TrueAudio、改良版のAMD PowerTuneテクノロジーなど、初代GCNに比べて多くの利点があります。
GCN第2世代では、「シェーダーエンジン」(SE)と呼ばれる構成要素が導入されました。シェーダーエンジンは、1つのジオメトリプロセッサ、最大44個のCU(Hawaiiチップ)、ラスタライザー、ROP、およびL1キャッシュで構成されます。グラフィックスコマンドプロセッサ、8つのACE、L2キャッシュとメモリコントローラ、オーディオおよびビデオアクセラレータ、ディスプレイコントローラ、2つのDMAコントローラ、およびPCIeインターフェースは、シェーダーエンジンの一部ではありません。
A10-7850K 「Kaveri」には、独立したスケジューリングと作業項目のディスパッチを行うための 8 つの CU (計算ユニット) と 8 つの非同期計算エンジンが搭載されています。[ 32 ]
2013年11月のAMD開発者サミット(APU)で、マイケル・マントールはRadeon R9 290Xを発表した。[ 33 ]
ディスクリートGPU(Sea Islandsファミリー):
APUに統合されています:

GCN第3世代[ 34 ]は、2014年に「Tonga」GPUを搭載したRadeon R9 285およびR9 M295Xとともに導入されました。テッセレーション性能の向上、メモリ帯域幅の使用を削減するロスレスデルタカラー圧縮、更新されより効率的な命令セット、ビデオ用の新しい高品質スケーラー、HEVCエンコード(VCE 3.0)およびHEVCデコード(UVD 6.0)、新しいマルチメディアエンジン(ビデオエンコーダー/デコーダー)を特徴としています。デルタカラー圧縮はMesaでサポートされています。[ 35 ]ただし、倍精度演算の性能は前世代と比較して劣っています。[ 36 ]
ディスクリートGPU:
APUに統合されています:


Arctic IslandsファミリーのGPUは、2016年第2四半期にAMD Radeon 400シリーズとともに導入されました。3Dエンジン(つまりGCA(グラフィックスおよびコンピュートアレイ)またはGFX)は、Tongaチップに搭載されているものと同じです。[ 38 ]しかし、Polarisは、より新しいディスプレイコントローラエンジン、UVDバージョン6.3などを備えています。
Polaris 30 を除くすべての Polaris ベースのチップは、Samsung Electronicsが開発しGlobalFoundriesにライセンス供与された14 nm FinFETプロセスで製造されています。[ 39 ]少し新しいリフレッシュ版 Polaris 30 は、Samsung と GlobalFoundries が開発した12 nm LP FinFET プロセス ノードで構築されています。第 4 世代 GCN 命令セット アーキテクチャは、第 3 世代と互換性があります。これは 14 nm FinFET プロセス向けに最適化されており、第 3 世代 GCN よりも高い GPU クロック速度を実現できます。[ 40 ]アーキテクチャの改善には、新しいハードウェア スケジューラ、新しいプリミティブ破棄アクセラレータ、新しいディスプレイ コントローラ、および HEVC を 4K 解像度で 60 フレーム/秒、カラー チャネルごとに 10 ビットでデコードできる更新された UVD が含まれます。
ディスクリートGPU: [ 41 ]
Polarisは専用GPUに加えて、PlayStation 4 ProとXbox One XのAPUにも採用されており、それぞれ「Neo」と「Scorpio」という名称で呼ばれている。
第4世代GCNアーキテクチャを採用した全てのGPUのFP64性能は、FP32性能の1/16である。

AMDは2017年1月に、次世代GCNアーキテクチャの詳細を「次世代コンピューティングユニット」と称して公開し始めた。[ 40 ] [ 45 ] [ 46 ]新しい設計では、クロックあたりの命令数の増加、クロック速度の向上、 HBM2のサポート、メモリアドレス空間の拡大が期待されていた。ディスクリートグラフィックスチップセットには「HBCC(高帯域幅キャッシュコントローラ)」も含まれているが、APUに統合される場合は含まれない。[ 47 ]さらに、新しいチップには、ラスタライズおよびレンダリング出力ユニットの改善が含まれると予想されていた。ストリームプロセッサは、 8ビット、16ビット、および32ビットの数値のパック演算Rapid Pack Mathテクノロジーをサポートするために、以前の世代から大幅に変更されている。これにより、精度が低くても許容される場合(たとえば、 1つの単精度数値と同じ速度で2つの半精度数値を処理する場合)に、パフォーマンスが大幅に向上する。
NvidiaはMaxwellでタイルベースのラスタライズとビニングを導入し[ 48 ] 、これがMaxwellの効率向上の大きな理由となった。1月には、AnandTechは、Vegaで導入される新しい「DSBR(Draw Stream Binning Rasterizer)」により、Vegaがエネルギー効率の最適化に関してNvidiaに追いつくだろうと推測した[ 49 ] 。
また、新しいシェーダーステージであるプリミティブシェーダーのサポートも追加されました。[ 50 ] [ 51 ]プリミティブシェーダーは、より柔軟なジオメトリ処理を提供し、レンダリングパイプラインの頂点シェーダーとジオメトリシェーダーを置き換えます。2018年12月現在、必要なAPIの変更がまだ行われていないため、プリミティブシェーダーは使用できません。[ 52 ]
Vega 10とVega 12は、サムスン電子が開発し、GlobalFoundriesにライセンス供与された14nm FinFETプロセスを採用しています。Vega 20は、TSMCが開発 した7nm FinFETプロセスを採用しています。
ディスクリートGPU:
APUに統合されています:
Vega 20を除くすべてのGCN第5世代GPUの倍精度浮動小数点(FP64)性能は、FP32性能の16分の1です。Radeon Instinct搭載のVega 20では、FP32性能の半分です。Radeon VII搭載のVega 20では、FP32性能の4分の1です。 [ 59 ]すべてのGCN第5世代GPUは、半精度浮動小数点(FP16)計算をサポートしており、これはFP32性能の2倍です。
1. Treasure (Lexa) や Hawaii Refresh (Ellesmere) などの古いコードネームは記載されていません。 2.初回発売日。Polaris 20 (2017 年 4 月) などの派生チップの発売日は記載されていません。
{{cite news}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)非同期コンピューティングエンジン(ACE)
の新しい非同期計算エンジンは、GCN上での計算操作のコマンドプロセッサとして機能します。ACEの主な目的は、作業を受け取り、処理のためにCUにディスパッチすることです。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)