(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-10
(54)【発明の名称】加速処理ユニットのインライン中断
(51)【国際特許分類】
G06F 9/48 20060101AFI20241203BHJP
【FI】
G06F9/48 200D
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535496
(86)(22)【出願日】2022-11-18
(85)【翻訳文提出日】2024-07-08
(86)【国際出願番号】 US2022050491
(87)【国際公開番号】W WO2023129301
(87)【国際公開日】2023-07-06
(32)【優先日】2021-12-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アレクサンダー フアド アシュカー
(72)【発明者】
【氏名】マンゲッシュ ピー. ニジャシャー
(72)【発明者】
【氏名】ラカン ゼット. クライシャ
(72)【発明者】
【氏名】マヌ ラストギ
(57)【要約】
加速処理ユニット(APU)のインライン中断のための方法及びシステムが開示される。技術は、動作モード及びAPUによって実行されるコマンドを含むパケットを受信することと、動作モードが中断開始モードである場合に、以前のパケットで受信したコマンドの実行を中断することと、APUが、受信したパケット内のコマンドを実行することと、を含む。中断されたコマンドの実行は、次に受信したパケットにおける動作モードが中断終了モードである場合に再開される。
【選択図】
図3
【特許請求の範囲】
【請求項1】
加速処理ユニット(APU)のインライン中断のための方法であって、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、を含む、
方法。
【請求項2】
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを含む、
請求項1の方法。
【請求項3】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項1の方法。
【請求項4】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項1の方法。
【請求項5】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項1の方法。
【請求項6】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項1の方法。
【請求項7】
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項1の方法。
【請求項8】
前記APUは、グラフィックス処理ユニット、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイプロセッサ、又は、ニューラル処理ユニットのうち何れかである、
請求項1の方法。
【請求項9】
前記実行することは、前記APUの実行エンジンによって行われる、
請求項1の方法。
【請求項10】
前記実行エンジンはシェーダである、
請求項8の方法。
【請求項11】
受信したパケットは、前記APUによってメモリ内のキューからフェッチされ、前記キューは、前記受信したパケットを生成したアプリケーションに関連付けられている、
請求項1の方法。
【請求項12】
APUのインライン中断のためのシステムであって、
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、
を前記システムに行わせる、
システム。
【請求項13】
前記命令は、
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを前記システムに行わせる、
請求項12のシステム。
【請求項14】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項12のシステム。
【請求項15】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項12のシステム。
【請求項16】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項12のシステム。
【請求項17】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項12のシステム。
【請求項18】
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項12のシステム。
【請求項19】
加速処理ユニット(APU)のインライン中断を実行するように構成された前記APUを記述するハードウェア記述言語命令を含むコンピュータ可読記憶媒体であって、
前記APUは、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、
を行うことが可能である、
コンピュータ可読記憶媒体。
【請求項20】
前記APUは、
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することが可能である、
請求項19のコンピュータ可読記憶媒体の命令。
【請求項21】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
【請求項22】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
【請求項23】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項19のコンピュータ可読記憶媒体の命令。
【請求項24】
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
【請求項25】
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項19のコンピュータ可読記憶媒体の命令。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年12月28日に出願された米国特許出願第17/564,049号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
限られた時間内に大量のデータを処理することを必要とするプロセッサは、1つ以上の加速処理ユニット(accelerated processing units、APU)を利用することができる。APUを使用する場合、従来、プロセッサは、APUによって実行されるコマンドを送信すること、及び、APUからコマンド完了肯定応答(command completion acknowledgments)を受信することを含む、APUの動作を制御している。通常、APUのコンピューティングリソースは、1つ以上のプロセッサ上で実行される複数のアプリケーションによって共有される。アプリケーションが高い優先度で集中的なワークロードの実行を必要とする場合、アプリケーションがAPUの計算リソースをその独占的使用のために確保することを可能にする機能は貴重である。しかしながら、別のワークロードを優先してAPUの現在のワークロードを中断し、次いで再開することは、通常、APUとプロセッサとの間の通信を必要とするプロセッサの関与を必要とする。プロセッサとAPUとの間のそのような往復通信は、APUによるワークロード実行時間の予測可能性を損なう。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1A】本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
【
図1B】本開示の1つ以上の特徴が実装され得ることに基づく、
図1Aのデバイスによって使用可能なAPUを示す例示的なシステムのブロック図である。
【
図2】本開示の1つ以上の特徴を実装することができるAPUのインライン中断を示す例示的なシステムの機能ブロック図である。
【
図3】本開示の1つ以上の特徴を実装することができるAPUのインライン中断のための例示的な方法のフローチャートである。
【発明を実施するための形態】
【0005】
APUのインライン中断(inline suspension)のためのシステム及び方法が開示される。プロセッサによってAPUにパケットで送信されたコマンドでそれぞれの動作モードをインラインすることによって、APUによって処理されているワークロードの中断、次いで再開をトリガするための技術が開示される。このようにしてAPUを中断及び再開する能力は、プロセッサの関与なしにAPUのコンピューティングリソースを排他的に利用するための高い優先度及び集中的なワークロードを可能にし、ひいては予測可能なワークロード実行時間を可能にする。
【0006】
本願において開示される態様は、APUのインライン中断のための方法を説明する。この方法は、APUによって実行される動作モード及びコマンドを含むパケットを受信することと、動作モードが中断開始モード(suspension initiation mode)であることに応じて、前のパケット内で受信されたコマンドの実行を中断することと、APUによって、受信されたパケット内のコマンドを実行することと、を含む。方法は、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを更に含む。
【0007】
また、本願に開示される態様は、APUのインライン中断のためのシステムを説明する。システムは、少なくとも1つのプロセッサと、命令を記憶するメモリと、を備える。命令は、少なくとも1つのプロセッサによって実行されると、システムに、動作モード及びAPUによって実行されるコマンドを含むパケットを受信させ、動作モードが中断開始モードであることに応じて、前のパケット内で受信されたコマンドの実行を中断し、APUによって、受信されたパケット内のコマンドを実行させる。更に、命令は、システムに、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開させる。
【0008】
更に、本願に開示される態様は、動作モード及びAPUによって実行されるコマンドを含むパケットを受信することと、動作モードが中断開始モードであることに応じて、前のパケット内で受信されたコマンドの実行を中断することと、APUによって、受信されたパケット内のコマンドを実行することと、が可能なAPUのインライン中断を実行するように適合されたAPUを記述するハードウェア記述言語命令を含む非一時的なコンピュータ可読記憶媒体を記載する方法は、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを更に含む。
【0009】
図1Aは、本開示の1つ以上の特徴を実装することができる例示的なデバイス100Aのブロック図である。デバイス100Aは、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータであり得る。デバイス100Aは、プロセッサ102、APU106、メモリ104、ストレージ116、入力デバイス108、及び、出力デバイス110を含む。また、デバイス100Aは、入力ドライバ112及び出力ドライバ114を含み得る。一態様では、デバイス100Aは、
図1Aに示されていない追加の構成要素を含み得る。
【0010】
プロセッサ102は、中央処理ユニット(CPU)又はCPUの1つ以上のコアを含むことができる。APU106は、高度並列処理ユニット、グラフィックス処理ユニット(GPU)、又は、それらの組み合わせを表すことができる。プロセッサ102及びAPU106は、同じダイ上又は別のダイ上に位置し得る。メモリ104は、プロセッサ102と同じダイ上に位置し得るか、又は、プロセッサ102とは別に位置し得る。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、キャッシュ、又は、これらの組み合わせ)を含むことができる。
【0011】
ストレージ116は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含むことができる。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の受信のための無線ローカルエリアネットワークカード)等の1つ以上の入力デバイスを表すことができる。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信のための無線ローカルエリアネットワークカード)等の1つ以上の出力デバイスを表すことができる。
【0012】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、入力デバイス108からプロセッサ102への入力の受信を容易にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102から出力デバイス110への出力の送信を容易にする。一態様では、入力ドライバ112及び出力ドライバ114は、オプションの構成要素であり、デバイス100Aは、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することができる。
【0013】
APU106は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、及び/又は、ディスプレイ(出力デバイス110)に出力を提供するように構成され得る。以下で更に詳細に説明するように、APU106は、例えば、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含むことができる。したがって、様々な機能が、本明細書では、APU106によって又はAPU106と併せて実行されるものとして説明されているが、様々な代替例では、APU106によって実行されるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によってドライブされず、例えば、グラフィカル出力をディスプレイに提供するように構成することができる同様の能力を有する他のコンピューティングデバイスによって追加的又は代替的に実行され得る。処理システムがSIMDパラダイムに従って処理タスクを実行することができるかどうかにかかわらず、処理システムは、本明細書で説明される機能を実行するように構成され得る。
【0014】
図1Bは、本開示の1つ以上の特徴を実装することができる
図1Aのデバイスによって使用可能な加速システムを示す例示的なシステム100Bのブロック図である。
図1Bは、APU106上での処理タスクの実行を更に詳細に示す。プロセッサ102は、メモリ104内で、プロセッサ102による実行のための1つ以上のモジュールを維持することができる。モジュールは、オペレーティングシステム120、ドライバ122、及び、アプリケーション126を含む。これらのモジュールは、プロセッサ102及びAPU106の動作の様々な特徴を制御することができる。例えば、オペレーティングシステム120は、システムコール、すなわち、アプリケーションプログラミングインターフェース(API)を提供することができ、これは、アプリケーション126によって採用され、ハードウェアと直接インターフェースすることができる。ドライバ122は、例えば、プロセッサ102上で実行されるアプリケーション126にAPIを提供して、APU106の様々な機能にアクセスすることによって、APU106の動作を制御することができる。
【0015】
APU106は、並列処理又は逐次処理の何れか、及び、順序処理又は非順序処理の何れかを含む、グラフィックス動作及び非グラフィックス動作に関連するコマンドを実行することができる。APU106は、プロセッサ102から受信したコマンドに基づいて、ピクセル及び/又は幾何学計算を処理する動作(例えば、ディスプレイ(出力デバイス110)への画像のレンダリング)等のグラフィックスパイプライン動作を実行するために使用することができる。また、APU106は、プロセッサ102から受信したコマンドに基づいて、多次元データ、物理シミュレーション、計算流体力学、又は、他の計算タスクの処理に関連する動作等のように、グラフィックス動作に関連しない処理動作を実行することができる。代替的な実施形態では、APU106は、信号処理動作を実行することができ(例えば、APU106は、デジタル信号プロセッサ又はDSPにおいて具現化され得る)、ビットストリームによって構成されたフィールドプログラマブルゲートアレイ(FPGA)の使用を通じて加速動作を実行することができ、ニューラル処理ユニット(又はNPU)の使用を通じてニューラル処理動作を実行することができ、又は、プロセッサ102よりもむしろ加速処理ユニット(APU)の使用を通じてより効率的に実行され得る他の動作を実行することができる。
【0016】
APU106は、ワークグループプロセッサ(WGP)132.1~132.Mを含むことができ、各WGP、例えば132.1は、SIMDパラダイムに従って並列の方式で動作を実行することができる1つ以上のSIMDユニット、例えば138.1.1~138.1.Nを有することができる。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより、同じプログラムを、異なるデータで実行することができるものである。一例では、各SIMDユニット、例えば138.1.1は、64のレーン(すなわち、スレッド)を実行することができ、各レーンは、SIMDユニット内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行する。レーンは、全てのレーンが所定の命令を実行する必要がない場合等に、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。具体的には、条件付き分岐(又は制御フローが個々のレーンによって実行される計算に基づいている他の命令)を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスの直列実行が、任意の制御フローを可能にする。一態様では、WGP132.1~132.Mの各々は、ローカルキャッシュを有することができる。別の態様では、複数のWGPがキャッシュを共有することができる。
【0017】
WGP、例えば132.1内の実行の基本的単位は、ワークアイテムである。通常は、各ワークアイテムは、特定のレーンにおいて並列に実行され得るプログラムの単一のインスタンシエイションを表す。ワークアイテムは、単一のSIMD、例えば138.1.1上の「ウェーブフロント(wavefront)」(又は「ウェーブ(wave)」)として同時に実行され得る。1つ以上のウェーブは、ワークグループで実行されてもよく、各ウェーブは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブの各々を実行することによって実行される。また、ウェーブは、単一のSIMDユニット上で逐次実行され得るか、又は、異なるSIMDユニット138.1.1~138.1.N上で部分的に若しくは完全に並列に実行され得る。したがって、ウェーブは、単一のSIMDユニット、例えば、138.1.1上で同時に実行することができるワークアイテムの集合と考えることができる。したがって、プロセッサ102から受信されたコマンドが、プログラムが単一のSIMDユニット上で同時に実行させることができない程度に特定のプログラムが並列化されるべきであることを示す場合、そのプログラムは、2つ以上のSIMDユニット(例えば、138.1.1~138.1.N)上に並列化されるか、同じSIMDユニット(例えば、138.1.1)上で直列化されるか、又は、必要に応じて並列化と直列化との両方がされ得るウェーブに分けることができる。スケジューラ136は、異なるWGP132.1~132.M及びそれらのそれぞれのSIMDユニット上で様々なウェーブを開始することに関連する動作を実行するように構成され得る。
【0018】
WGP132.1~132.Mによって与えられる並列性は、例えば、ピクセル値に対する動作(例えば、フィルタ動作)、幾何学的データに対する動作(例えば、頂点変換)、及び、他のグラフィックス関連動作等のグラフィックス関連動作に好適である。例えば、プロセッサ102上で実行されるアプリケーション126は、APU106によって実行される計算を伴うことができる。アプリケーション126は、ドライバ122によって提供されるAPIを使用して、処理コマンドをAPU106に発行することができる。次いで、処理コマンドは、スケジューラ136に提供される。スケジューラ136は、処理コマンドを、並列実行のためにWGP132.1~132.Mに割り当てられる計算タスクに変換する。例えば、スケジューラ136は、データ(例えば、画像の1024ピクセル)に対して実行されるべき命令を含む処理コマンドを受信し得る。それに応じて、スケジューラ136は、データをグループ(例えば、各グループが64ピクセルの処理に必要なデータを含む)に分割し、1つ以上のWGPにおいてウェーブを開始することができ、各ウェーブは、データのグループ及びデータに対して実行する命令に関連付けられる。例えば、スケジューラ136は、1つ以上のWGP132のSIMD138において実行される16個のウェーブ(例えば、各々が64ピクセルの処理を担う)を開始することができる。
【0019】
図2は、本開示の1つ以上の特徴を実装することができるAPUのインライン中断を示す例示的なシステム200の機能ブロック図である。システム200は、プロセッサ210(例えば、
図1Aのプロセッサ102)、APU215(例えば、
図1BのAPU106)、及び、メモリ220(例えば、
図1Aのメモリ104)を含む。APU215は、コマンドプロセッサ250と、シェーダスケジューラ230と、WGP240.1~240.N(例えば、
図1BのWGP132)を有するシェーダ240と、を含む。メモリ220は、それぞれメモリインターフェース222及び224を介して、プロセッサ210及びコマンドプロセッサ250によってアクセス可能である。プロセッサ210は、ユーザアプリケーション212及びドライバ214等のソフトウェアモジュールを実行するように構成され、それを介してアプリケーション212はコマンドプロセッサ250とインターフェースすることができる。したがって、コンピュータゲーム又はシミュレータ等のアプリケーション212は、ドライバ214によって提供されるアプリケーションプログラミングインターフェース(API)を使用して、シェーダ240によって実行されるべき計算タスクを指定するコマンドをコマンドプロセッサ250に送ることができる。そのようなコマンドは、以下で更に説明するように、パケットフォーマットに従ってパケット内で配信される。
【0020】
コマンドプロセッサ250は、プロセッサ210上で動作するソフトウェアモジュールと、シェーダ240等のAPU215の実行(又は処理)エンジンとの間のインターフェースを提供するように構成されている。コマンドプロセッサ250は、フェッチャ255、ドアベル260、グラフィックスコマンドプロセッサ270、計算コマンドプロセッサ280、及び、キューマネージャ290等の機能構成要素を含むことができる。上述したように、ユーザアプリケーション212は、ドライバ214を介して、コマンドプロセッサ250に配信されるコマンドのパケットを生成することができる。配信の1つの機構は、(メモリインターフェース222を介して)メモリ220内のアプリケーション関連キューにこれらのパケットを記憶し、次いで、1つ以上の新しいパケットがメモリ内のそのキュー内で利用可能であることをコマンドプロセッサのドアベル260に信号を送ることによるものであり得る。そのような信号の受信に応じて、ドアベルは、フェッチャ255による1つ以上の新しいパケットの読み取りをトリガするように構成されている。次いで、フェッチャ255は、(メモリインターフェース224を介して)メモリ220内のキューからパケットを読み取り、読み取られたパケットを先入れ先出し(FIFO)順序でパケットキュー257、258内にプッシュする。描画(グラフィックス)コマンドを含むパケットはキュー257に記憶され、ディスパッチ計算コマンドを含むパケットはキュー258に記憶される。グラフィックスコマンドプロセッサ270及び計算コマンドプロセッサ280は、パケットが到着すると、それぞれキュー257及び258からパケットをポップアウトするように構成されている。複数のアプリケーション212(例えば、ホスト210上で同時に実行される)がそれぞれのパケットを生成する場合、各アプリケーションに関連付けられたパケットは、メモリ内のそれぞれのキューに記憶されてもよく、フェッチャ255は、メモリ220内の各キューからパケットを読み出し、読み出したパケットをそれぞれのパケットキュー257、258にプッシュするように構成されている。
【0021】
一態様では、パケットフォーマットは、パケットヘッダと、1つ以上のコマンドと、を含み得る。本明細書で開示するように、パケットヘッダは、パススルーモード、中断開始モード、及び、中断終了モードを含む動作モードを符号化する。パススルー動作モードでは、コマンドプロセッサ250は、通常の動作状態で動作する。すなわち、新たに到着したコマンドは、現在利用可能なコンピューティングリソースによって処理される。例えば、全てのWGP240.1~240.Nが、以前に受信されたコマンドに関連付けられたウェーブの処理に関与している場合、新たに到着したコマンドは、WGPのうち1つ以上が利用可能になるまで待たなければならない。対照的に、中断開始動作モードでは、コマンドプロセッサ250は、現在処理されているウェーブの実行を中断し、全てのWGPを、新たに到着したコマンドに関連付けられたウェーブの実行に利用可能にするように構成されている。この動作モードは、中断終了動作モードが有効になるまで保持され、有効になった時点で、中断されたウェーブの実行が再開(復元)され、コマンドプロセッサ250が通常の動作状態の下で再び動作するように戻る。これらの3つの動作モードが処理され得る方法は、以下に更に開示される。
【0022】
ヘッダ内にパススルー動作モードを符号化するパケットが受信されると、コマンドプロセッサ250はパケットのコマンドを復号する。パケット内のコマンドは、APU215の構成要素に関連付けられた状態又は制御レジスタを設定するために使用されるコマンドであってもよい。また、パケット内のコマンドは、同期動作に使用されるコマンドであってもよい。パケット内のかなりの数のコマンドは、描画(グラフィックス)コマンド及び計算ディスパッチコマンド等のような、シェーダ240に向けられた計算タスクに関係し得る。したがって、コマンドプロセッサ250は、コマンドを復号する場合、コマンドに作用し得る(例えば、コマンドに従って状態レジスタを設定する)か、又は、コマンドを宛先構成要素に送信して、それに作用し得る。描画(グラフィックス)コマンド又は計算ディスパッチコマンドは、それぞれグラフィックスコマンドプロセッサ270又は計算コマンドプロセッサ280によって処理される。これらのプロセッサ270、280は、それぞれのコマンドをシェーダコマンドに変換する。キューマネージャ290は、これらのシェーダコマンドをそれぞれのキューに記憶し、これらのキューをシェーダスケジューラ230に供給される実行パイプに接続する。シェーダスケジューラ230は、利用可能なWGP240.1~240.Nにシェーダコマンドを割り当てる。
【0023】
したがって、パススルー動作モードでは、コマンドは、現在利用可能なコンピューティングリソースに基づいてコマンドプロセッサ250によって処理され、すなわち、これらのコマンドによって規定される計算タスクは、シェーダ240の現在利用可能なWGPにスケジュールされる(230)。しかしながら、そのヘッダ中に動作の中断開始モードを符号化するパケットが受信される場合、コマンドプロセッサ250は、パケット内のコマンドが処理される前に、シェーダ240のWGP240.1~240.N上で現在処理されているウェーブの中断動作を開始する。同様に、中断終了動作モードをそのヘッダ内に符号化するパケットが受信されると、パケット内のコマンドが処理され、次いで、コマンドプロセッサ250は、中断されたウェーブを再開(復元)してそれらの処理を継続することによって中断を終了する。中断段階(すなわち、中断開始モードを符号化するパケットで始まり、中断終了モードを符号化するパケットで終わる段階)中に受信されるコマンドは、APUの全てのコンピューティングリソースを利用可能であり、したがって、シェーダ240の全てのWGP240.1~240.N上で排他的にスケジュールすることができる。次いで、中断段階中に、APUは、パケットを生成したアプリケーション(本明細書で開示される態様によれば、中断モードを開始したアプリケーション)に関連付けられたメモリ220内のキューからフェッチされたパケット内のコマンドを排他的に処理する。APUは、中断段階が終了するまで、他のアプリケーションに関連付けられたメモリ220内のキューに記憶されたパケットを供給しない(例えば、フェッチしない)。
【0024】
したがって、上述したように、中断開始モードがパケットのヘッダから復号されると、中断動作がトリガされる。すなわち、コマンドプロセッサ250は、シェーダスケジューラ230に供給する実行パイプへの任意の新しいキューの接続を停止するようにキューマネージャ290に信号を送る。更に、キューマネージャ290は、実行パイプに現在接続されている任意のキューをオフに切り替える、休止する又は停止するように信号を送られる。一態様では、パケットのヘッダ中の情報に基づいて、中断は、現在動作しているウェーブを中断することによって、そのようなウェーブを排出させることによって、又は、それらの組合せによって実行され得る。中断動作が完了すると、全てのシェーダリソースが利用可能になり、シェーダのWGPは使用されておらず、したがって、中断段階中に受信されたコマンドによって規定される計算タスクでスケジュールされるように利用可能である。中断段階は、後続のパケットのヘッダから中断終了モードが復号されるまで継続する。このとき、上述したように、中断ウェーブが再開(復元)される。
【0025】
現在実行中のウェーブを中断することは、計算ウェーブ保存復元(CWSR)手順と呼ばれる手順によって使用することができ、それを通してウェーブを中断し復元することができる。CWSR手順では、コマンドプロセッサ250は、ウェーブを現在実行しているシェーダ240.1~240.Nに、それらの状態をメモリに保存し、それら自体を実行から除去するように命令する。次いで、コマンドプロセッサ250は、ハードウェアマシンをトリガして、ウェーブリプレイリストをメモリ内のスタックに保存する。ウェーブを再開(復元)するために、コマンドプロセッサ250は、スタックをハードウェア実行ユニットにプッシュバックし、次いで、再生されたウェーブは、それらの状態を復元し、それらが以前に停止した場所で動作を再開する。
【0026】
図3は、本開示の1つ以上の特徴が実装され得るAPU215のインライン中断のための例示的な方法300のフローチャートである。通常の動作中、プロセッサ210は、計算タスクに関連付けられたコマンドを、1つ以上のパケットを介してAPU215に送信する。したがって、方法300は、ステップ310において、パケットを受信することから始まる。ステップ320において、受信されたパケットのヘッダは、動作モードを決定するために復号される。決定された動作モードが中断開始モードでない場合、ステップ340において、受信されたパケット内のコマンドは、APU215の現在利用可能なコンピューティングリソースに基づいて実行される。したがって、受信されたパケット内のコマンドに関連付けられたウェーブは、WGP240.1~240.Nを、以前に受信されたパケットから受信されたコマンドに関連付けられた他の(現在実行中の)ウェーブと共有しなければならない場合がある。しかしながら、動作モードが中断開始モードであると決定された場合、ステップ330において、シェーダ処理は中断される。すなわち、シェーダ240の全てのコンピューティングリソースを利用可能にするために、WGP240.1~240.N内で現在実行中のウェーブが中断される。中断が完了すると、ステップ340で、受信されたパケット内のコマンドは、シェーダ240によって排他的に実行される。ステップ350において、動作モードが中断終了モードであると決定された場合、ステップ360において、中断されたウェーブが再開(復元)される。中断されたウェーブが再開(復元)されると(360)、(ステップ330とステップ360との間に続く)中断段階が終了する。すなわち、後続のパケット内のコマンドは、別の中断段階を再びトリガする中断開始動作モードを符号化するパケットが受信されるまで、再開(復元)されたウェーブとコンピューティングリソースを共有しながら実行される。
【0027】
一態様では、動作モードは、例えば、1つ以上のパケットで受信されたコマンドの処理に関連するイベントに基づいて、APU215によって変更され得る。モードは、(通常の動作状態の間の)パススルー動作モードから中断開始動作モードに変更されて、中断段階における動作をもたらすことができる。代替的に、モードは、(中断段階での動作中の)パススルー動作モードから中断終了動作モードに変更されて、中断段階での動作を停止してもよい。例えば、グラフィックスコマンドプロセッサ270又は計算コマンドプロセッサ280によるコマンドの処理中に(又はこれらの処理されたコマンドに関連付けられたシェーダコマンドを実行するウェーブの処理中に)、これらのコマンドの全て又はサブセットの実行のために全てのコンピューティングリソースを引き継ぐことを要求するイベントが発生し得る。そのような状況では、コマンドプロセッサ250は、APUの全てのコンピューティングリソースをこのコマンドサブセットの実行専用にするために、動作モードをパススルーモードから中断開始モードに変更することを決定することができる。このコマンドサブセットの実行の終了時に、コマンドプロセッサ250は、動作モードを中断終了モードに変更し、通常の動作状態に戻ることができる。代替的に、中断段階の下でコマンドを処理している間に、中断段階を終了することを要求するイベントが発生する可能性があり、その場合、コマンドプロセッサ250は、動作モードを中断終了モードに変更することができる。
【0028】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0029】
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連付けられた1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令等)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、次いで、このマスクワークを半導体製造プロセスにおいて使用して、実施形態の態様を実装するプロセッサを製造する。
【0030】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【国際調査報告】