グラフィックカードには独自の命令セットがありますか?私はそうしていると思いますが、それがプロプライエタリなのか、それとも何らかのオープンスタンダードがあるのか疑問に思っていました。
すべてのGPU命令の前にCPU命令がありますか、それともシームレスですか?つまり、バスを介してGPU命令を送信するCPUを介してドライバーレイヤーでOpenGLまたはDirectX呼び出しを行うか、より複雑です。
はい、彼らはやる。 AMDは現在、HD4000シリーズまでの仕様も提供しています。
ここを見てください: http://developer.AMD.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf
NV命令セットのリバースエンジニアリングを行うNouveauと呼ばれるオープンソースプロジェクトもあります。
NVIDIAのアーキテクチャはAMDとは少し異なることに注意してください。それらはVLIWではなくスカラー実行を使用しているためです(ただし、複数のスレッドは、ワープまたはウェーブフロントと呼ばれるものにさらにグループ化されます)。
また、すべてのOpenGL/Direct3D呼び出しが「GPU命令」にマッピングされるわけではありません。たとえば、テクスチャをバインドする場合、ドライバーは、サンプリングに使用するテクスチャメモリをGPUに通知する適切なハードウェアレジスタのみを設定します。
実際のプログラムは、GPUでシェーダーまたはストリーム処理カーネルを実行するときにのみ実行されます。
現在、NVIDIAカードは、ある種の中間ISA PTXと呼ばれています。これについては、このドキュメントで読むことができます。
PTXプログラムは、インストール時にターゲットハードウェア命令セットに変換されます。
はい、GPUには独自の命令セットがあります。 GPU命令は、CPU命令から独立して実行されます。
AMD Graphics Core Next(GCN)
https://en.wikipedia.org/wiki/Graphics_Core_Next
初代は「南の島」と呼ばれています。
Wikiページは、ISAを文書化するAMD仕様にリンクしています。例: http://developer.AMD.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf
MIAOW https://github.com/VerticalResearchGroup/miaow と呼ばれるオープンなRTL実装さえありますが、AMDが今のところ黙って許容することを選択したIPを侵害している可能性があります( ソース )。
SPIR-V
https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation は、Krhonos標準の中間言語です。
既存のGPU ISAと同様に設計されている可能性が高いため、実装が容易になり、採用率が向上するため、実際のGPU ISAの良いアイデアが得られます。
そして、VulkanとOpenCL 2.1での採用が原因であると思われるように、この標準が普及した場合、将来の実装は、より優れたパフォーマンスを持つように実装するように設計される可能性があります。
PTXを取得および変更する方法
関連
https://computergraphics.stackexchange.com/questions/7809/what-does-gpu-Assembly-look-like
Nvidiaカードについては、このドキュメントをご覧になることをお勧めします http://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref
参照:CUDAプログラミングガイドバージョン3.0
デバイスの計算機能は、メジャーリビジョン番号とマイナーリビジョン番号によって定義されます。
メジャーリビジョン番号が同じデバイスは、コアアーキテクチャが同じです。 Fermiアーキテクチャに基づくデバイスのメジャーリビジョン番号は2です。以前のデバイスはすべて計算機能1.xです(メジャーリビジョン番号は1)。
マイナーリビジョン番号は、コアアーキテクチャの段階的な改善に対応しており、新しい機能が含まれる可能性があります。
付録Aは、すべてのCUDA対応デバイスとその計算機能のリストです。付録Gに、各コンピューティング機能の技術仕様を示します。