IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-535329シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法
<>
  • 特表-シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法 図1A
  • 特表-シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法 図1B
  • 特表-シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法 図2
  • 特表-シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】シェーダシステムにおける協調タスクの効率的な実行のためのシステム及び方法
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240920BHJP
【FI】
G06F9/52 120B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518143
(86)(22)【出願日】2022-09-02
(85)【翻訳文提出日】2024-04-25
(86)【国際出願番号】 US2022042481
(87)【国際公開番号】W WO2023055532
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】17/489,724
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ブライアン エンバーリン
(72)【発明者】
【氏名】マイケル ワイ. チョウ
(57)【要約】
シェーダシステムにおいて協調タスクを実行するための方法及びシステムが開示される。開示される技術は、システムが、協調タスクに関連付けられた入力データ及びコンピューティング命令、並びに、システムをテークオーバーモードで動作させる構成設定を受信することを含む。次いで、システムは、1つのワークグループプロセッサにおいて排他的に、協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始する。
【選択図】図3
【特許請求の範囲】
【請求項1】
シェーダシステムにおいて協調タスクを実行するための方法であって、
前記シェーダシステムが、前記協調タスクに関連付けられた入力データ及びコンピューティング命令を受信することと、
前記シェーダシステムが、前記シェーダシステムをテークオーバーモードで動作させる構成設定を受信することと、
前記シェーダシステムが、1つのワークグループプロセッサ(WGP)において排他的に、前記協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始することと、を含む、
方法。
【請求項2】
前記シェーダシステムが、第1の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、前記ウェーブフロントに関連付けられたVGPRに記憶された前記入力データのそれぞれの部分に対して前記コンピューティング命令を使用する、ことを含む、
請求項1の方法。
【請求項3】
前記ウェーブフロントの実行が完了した場合に、前記シェーダシステムが、前記協調タスクに関連付けられた更なるコンピューティング命令を受信することと、
前記シェーダシステムが、前記1つのWGPにおいて排他的に、前記ウェーブフロントを含む前記ワークグループを開始することと、
前記シェーダシステムが、第2の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、他のウェーブフロントに関連付けられたVGPRに記憶された、前記ワークグループ内の前記他のウェーブフロントによって前記第1の動作段階において生成されたデータを含むデータのそれぞれの部分に対して前記更なるコンピューティング命令を使用する、ことと、を含む、
請求項2の方法。
【請求項4】
前記ワークグループの別のウェーブフロントに関連付けられた前記WGPのメモリリソースへのアクセスを、前記ワークグループのウェーブフロントに提供することを含む、
請求項1の方法。
【請求項5】
前記WGPの前記メモリリソースは、ベクトル汎用レジスタ(VGPR)である、
請求項4の方法。
【請求項6】
前記WGPの前記メモリリソースは、ローカルデータシェア(LDS)メモリであり、
前記LDSメモリのメモリ空間へのアクセスは、前記ワークグループの全てのウェーブフロントに対して対称である、
請求項4の方法。
【請求項7】
前記WGPは、
1つ以上の単一命令複数データ(SIMD)ユニットであって、各ユニットは、前記ウェーブフロントのサブセットを実行するために使用され、各ユニットは、算術論理ユニット(ALU)と、前記ウェーブフロントのサブセットに関連付けられたVGPRと、を含む、SIMDユニットを備える、
請求項1の方法。
【請求項8】
前記WGPのキャッシュ管理ポリシーをアクティブ化することであって、前記キャッシュ管理ポリシーは、前記協調タスクの作業負荷パターンに関連する、ことを含む、
請求項1の方法。
【請求項9】
協調タスクを実行するためのシェーダシステムであって、
少なくとも1つのプロセッサと、
命令を記録するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
前記協調タスクに関連付けられた入力データ及びコンピューティング命令を受信することと、
前記シェーダシステムをテークオーバーモードで動作させる構成設定を受信することと、
1つのワークグループプロセッサ(WGP)において排他的に、前記協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始することと、
を前記シェーダシステムに実行させる、
シェーダシステム。
【請求項10】
前記命令は、
第1の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、前記ウェーブフロントに関連付けられたVGPRに記憶された前記入力データのそれぞれの部分に対して前記コンピューティング命令を使用する、こと
を前記シェーダシステムに実行させる、
請求項9のシェーダシステム。
【請求項11】
前記命令は、
前記ウェーブフロントの実行が完了した場合に、前記協調タスクに関連付けられた更なるコンピューティング命令を受信することと、
前記1つのWGPにおいて排他的に、前記ウェーブフロントを含む前記ワークグループを開始することと、
第2の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、他のウェーブフロントに関連付けられたVGPRに記憶された、前記ワークグループ内の前記他のウェーブフロントによって前記第1の動作段階において生成されたデータを含むデータのそれぞれの部分に対して前記更なるコンピューティング命令を使用する、ことと、
を前記シェーダシステムに実行させる、
請求項10のシェーダシステム。
【請求項12】
前記命令は、
前記ワークグループの別のウェーブフロントに関連付けられた前記WGPのメモリリソースへのアクセスを、前記ワークグループのウェーブフロントに提供すること
を前記シェーダシステムに実行させる、
請求項9のシェーダシステム。
【請求項13】
前記WGPの前記メモリリソースは、ベクトル汎用レジスタ(VGPR)である、
請求項12のシェーダシステム。
【請求項14】
前記WGPの前記メモリリソースは、ローカルデータシェア(LDS)メモリであり、
前記LDSメモリのメモリ空間へのアクセスは、前記ワークグループの全てのウェーブフロントに対して対称である、
請求項12のシェーダシステム。
【請求項15】
前記WGPは、
1つ以上の単一命令複数データ(SIMD)ユニットであって、各ユニットは、前記ウェーブフロントのサブセットを実行するために使用され、各ユニットは、算術論理ユニット(ALU)と、前記ウェーブフロントのサブセットに関連付けられたVGPRと、を含む、SIMDユニットを備える、
請求項9のシェーダシステム。
【請求項16】
前記命令は、
前記WGPのキャッシュ管理ポリシーをアクティブ化することであって、前記キャッシュ管理ポリシーは、前記協調タスクの作業負荷パターンに関連する、こと
を前記シェーダシステムに実行させる、
請求項9のシェーダシステム。
【請求項17】
シェーダシステムにおいて協調タスクを実行するための方法を実施するために少なくとも1つのプロセッサによって実行可能な命令を備えるコンピュータ可読記憶媒体であって、
前記方法は、
前記シェーダシステムが、前記協調タスクに関連付けられた入力データ及びコンピューティング命令を受信することと、
前記シェーダシステムが、前記シェーダシステムをテークオーバーモードで動作させる構成設定を受信することと、
前記シェーダシステムが、1つのワークグループプロセッサ(WGP)において排他的に、前記協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始することと、を含む、
コンピュータ可読記憶媒体。
【請求項18】
前記シェーダシステムが、第1の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、前記ウェーブフロントに関連付けられたVGPRに記憶された前記入力データのそれぞれの部分に対して前記コンピューティング命令を使用する、ことを含む、
請求項17のコンピュータ可読記憶媒体。
【請求項19】
前記ウェーブフロントの実行が完了した場合に、前記シェーダシステムが、前記協調タスクに関連付けられた更なるコンピューティング命令を受信することと、
前記シェーダシステムが、前記1つのWGPにおいて排他的に、前記ウェーブフロントを含む前記ワークグループを開始することと、
前記シェーダシステムが、第2の動作段階において前記ウェーブフロントを実行することであって、各ウェーブフロントは、他のウェーブフロントに関連付けられたVGPRに記憶された、前記ワークグループ内の前記他のウェーブフロントによって前記第1の動作段階において生成されたデータを含むデータのそれぞれの部分に対して前記更なるコンピューティング命令を使用する、ことと、を含む、
請求項18のコンピュータ可読記憶媒体。
【請求項20】
前記ワークグループの別のウェーブフロントに関連付けられた前記WGPのメモリリソースへのアクセスを、前記ワークグループのウェーブフロントに提供することを含む、
請求項17のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月29日に出願された米国特許出願第17/489,724号の利益を主張し、この内容は、参照によって、本明細書に十分に記載されているように組み込まれる。
【背景技術】
【0002】
シェーダシステムは、通常、処理ユニットにグループ化される多数のシェーダコアを含む。これらの処理ユニットの各々は、いくつかのシェーダコア及びメモリリソースを含むことができる。通常、複数の無関係なウェーブフロント(wavefronts)(シェーダプログラム)は、シェーダコアの各々において同時に実行することができる。したがって、例えば、1つのウェーブフロントが別のウェーブフロントの動作のために割り当てられたメモリにアクセスできないことを確実にするために、各ウェーブフロントによって所有されるデータを保護する機構が存在する。しかしながら、そのような機構は、費用がかからないわけではない。例えば、1つのウェーブフロントが第2のウェーブフロントによって生成されたデータ(又は制御)に基づいて動作しなければならない場合、第2のウェーブフロントは、共有メモリにデータを書き込まなければならず、前者のウェーブフロントは、共有メモリからデータを読み出さなければならない。このようなメモリアクセスは、時間がかかる。更に、シェーダシステムが、複数のウェーブフロントによって実施される協調タスクのために使用される場合に、ウェーブフロントの各々によって所有されるデータを保護するための時間のかかる機構は、不要である。複数のウェーブフロントによって実行される協調タスクの効率的な処理を可能にする技術が必要とされる。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
図1A】本開示の1つ以上の特徴が実施され得る、例示的なデバイスのブロック図である。
図1B】本開示の1つ以上の特徴が実施され得る、図1Aのデバイスによって採用可能なシェーダシステムを示す例示的なシステムのブロック図である。
図2】本開示の1つ以上の特徴が実施され得る、例示的なワークグループプロセッサ(WGP)のブロック図である。
図3】本開示の1つ以上の特徴が実施され得る、協調タスクを処理するための例示的な方法のフローチャートである。
【発明を実施するための形態】
【0005】
シェーダシステムにおける協調タスクの効率的な処理のためのシステム及び方法が本願において開示される。新しい動作モード、すなわちワークグループプロセッサテークオーバーモード(workgroup processor takeover mode)(又はテークオーバーモード(takeover mode))が導入され、ここでは、協調タスクを実施するために開始されるウェーブフロントが、本明細書でワークグループプロセッサ(WGP)と呼ばれるシェーダシステムの処理ユニットにおいて排他的に実行される。このモードでは、WGPのハードウェアリソースが、協調タスクを実施するためにWGP上で実行されるウェーブフロント間で共有される(例えば、ウェーブフロントは、ベクトル汎用レジスタ(VGPR)及びローカルデータシェア(LDS)メモリ等のWGPのメモリリソースへのグローバルアクセスを有する)。
【0006】
一態様では、本開示は、シェーダシステムにおいて協調タスクを実行するための方法について説明する。本方法は、システムが、タスクに関連付けられた入力データ及びコンピューティング命令を受信することと、システムが、システムをテークオーバーモードで動作させる構成設定を受信することと、システムが、1つのWGPにおいて排他的に、協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始することと、を含むことができる。本方法は、システムが、第1の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ウェーブフロントに関連付けられたVGPRに記憶された入力データのそれぞれの部分に対してコンピューティング命令を採用する、ことを更に含むことができる。ウェーブフロントの実行が完了した場合に、本方法は、システムが、タスクに関連付けられた更なるコンピューティング命令を受信することと、システムが、1つのWGPにおいて排他的に、ウェーブフロントを含むワークグループを開始することと、システムが、第2の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ワークグループ内の他のウェーブフロントによって第1の動作段階において生成され、他のウェーブフロントに関連付けられたVGPRに記憶されたデータを含むデータのそれぞれの部分に対して更なるコンピューティング命令を採用する、ことと、を含むことができる。
【0007】
別の態様では、本開示は、協調タスクを実行するためのシェーダシステムについて説明する。システムは、少なくとも1つのプロセッサと、命令を記憶するメモリと、を備える。命令は、少なくとも1つのプロセッサによって実行されると、システムに、タスクに関連付けられた入力データ及びコンピューティング命令を受信させ、システムをテークオーバーモードで動作させる構成設定を受信させ、協調タスクを実行するように構成されたウェーブフロントを含むワークグループを1つのWGP内で排他的に開始させることができる。命令は、システムに、第1の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ウェーブフロントに関連付けられたVGPRに記憶された入力データのそれぞれの部分に対してコンピューティング命令を採用する、ことを更にさせることができる。ウェーブフロントの実行が完了した場合に、命令は、システムに、タスクに関連付けられた更なるコンピューティング命令を受信することと、1つのWGPにおいて排他的に、ウェーブフロントを含むワークグループを開始することと、第2の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ワークグループ内の他のウェーブフロントによって第1の動作段階において生成され、他のウェーブフロントに関連付けられたVGPRに記憶されたデータを含むデータのそれぞれの部分に対して更なるコンピューティング命令を採用する、ことと、を行わせることもできる。
【0008】
更に別の態様では、本開示は、シェーダシステムにおいて協調タスクを実行するための方法を実施するために少なくとも1つのプロセッサによって実行可能な命令を備える非一時的なコンピュータ可読記憶媒体を記載する。本方法は、システムが、タスクに関連付けられた入力データ及びコンピューティング命令を受信することと、システムが、システムをテークオーバーモードで動作させる構成設定を受信することと、システムが、1つのWGPにおいて排他的に、協調タスクを実行するように構成されたウェーブフロントを含むワークグループを開始することと、を含む。本方法は、システムが、第1の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ウェーブフロントに関連付けられたVGPRに記憶された入力データのそれぞれの部分に対してコンピューティング命令を採用する、ことを更に含む。ウェーブフロントの実行が完了した場合に、本方法は、システムが、タスクに関連付けられた更なるコンピューティング命令を受信することと、システムが、1つのWGPにおいて排他的に、ウェーブフロントを含むワークグループを開始することと、システムが、第2の動作段階においてウェーブフロントを実行することであって、各ウェーブフロントが、ワークグループ内の他のウェーブフロントによって第1の動作段階において生成され、他のウェーブフロントに関連付けられたVGPRに記憶されたデータを含むデータのそれぞれの部分に対して更なるコンピューティング命令を採用する、ことと、を含む。
【0009】
図1Aは、例示的なデバイス100Aのブロック図であり、この例示的なデバイス100Aに基づいて本開示の1つ以上の特徴が実施され得る。デバイス100Aは、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータとすることができる。デバイス100Aは、プロセッサ102、加速処理ユニット(accelerated processing unit、APU)116、メモリ104、ストレージ106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100Aは、入力ドライバ112及び出力ドライバ114を含み得る。一態様では、デバイス100Aは、図1に示されていない追加の構成要素を含み得る。
【0010】
プロセッサ102は、中央処理装置(CPU)又はCPUの1つ以上のコアを含むことができる。シェーダシステム又はグラフィックス処理ユニット(GPU)を表すAPU116は、APUの1つ以上のコアを含むことができる。プロセッサ102及びAPU116は、同じダイ上又は別のダイ上に配置され得る。メモリ104は、プロセッサ102と同じダイ上に位置してもよく、又は、プロセッサ102とは別に位置してもよい。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ、又は、これらの組み合わせ)を含むことができる。
【0011】
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含むことができる。入力デバイス108は、例えば、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の受信のための無線ローカルエリアネットワークカード)を含むことができる。出力デバイス110は、例えば、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信のための無線ローカルエリアネットワークカード)を含むことができる。
【0012】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、入力デバイス108からプロセッサ102への入力の受信を容易にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102から出力デバイス110への出力の送信を容易にする。一態様では、入力ドライバ112及び出力ドライバ114は、オプションの構成要素であり、デバイス100Aは、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することができる。
【0013】
APU116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、及び/又は、ディスプレイ(出力デバイス110)に出力を提供するように構成され得る。以下で更に詳細に説明するように、APU116は、例えば、単一命令複数データ(single instruction multiple data、SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含むことができる。したがって、様々な機能が、本明細書では、APU116によって又はAPU116と併せて実施されるものとして説明されているが、様々な代替例では、APU116によって実施されるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、例えばグラフィカル出力をディスプレイに提供するように構成することができる同様の能力を有する他のコンピューティングデバイスによって実施される。処理システムがSIMDパラダイムに従って処理タスクを実行することができるか否かにかかわらず、処理システムは、本明細書で説明される機能を実施するように構成され得る。
【0014】
図1Bは、本開示の1つ以上の特徴が実施され得る、図1Aのデバイスによって採用可能なシェーダシステムを示す例示的なシステム100Bのブロック図である。図1Bは、APU116上での処理タスクの実行を更に詳細に示す。プロセッサ102は、メモリ104内で、プロセッサ102による実行のための1つ以上のモジュールを維持することができる。モジュールは、オペレーティングシステム120、カーネルモードドライバ122、及び、アプリケーション126を含む。これらのモジュールは、プロセッサ102及びAPU116の動作の様々な特徴を制御することができる。例えば、オペレーティングシステム120は、システムコール、すなわち、アプリケーションプログラミングインターフェース(API)を提供することができ、これは、アプリケーション126によって採用され、ハードウェアと直接インターフェースすることができる。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるアプリケーション126にAPIを提供して、APU116の様々な機能にアクセスすることによって、APU116の動作を制御することができる。また、カーネルモードドライバ122は、APU116の処理構成要素(以下で更に詳細に説明されるSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含むことができる。
【0015】
APU116は、並列処理又は逐次処理の何れか、及び、順序処理又は非順序処理の何れかを含む、グラフィックス動作及び非グラフィックス動作のためのコマンド及びプログラムを実行することができる。APU116は、プロセッサ102から受信したコマンドに基づいて、ピクセル及び/又は幾何学計算を処理する動作(例えば、ディスプレイ(出力デバイス110)への画像のレンダリング)等のグラフィックスパイプライン動作を実行するために使用することができる。また、APU116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する動作等のように、グラフィックス動作に関連しない処理動作を実行することができる。
【0016】
APU116は、WGP132.1~132.Mを含むことができ、各WGP、例えば132.1は、プロセッサ102の要求で、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上の「ウェーブフロント」(又は「ウェーブ(wave)」)として同時に実行され得る。1つ以上のウェーブは、ワークグループで実行されてもよく、各ウェーブは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブの各々を実行することによって実行される。また、ウェーブは、単一のSIMDユニット上で順次実行されてもよいし、異なるSIMDユニット138.1~138.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は、APU116によって実行される計算を含むことができる。アプリケーション126は、カーネルモードドライバ122によって提供されるAPIを使用して、処理コマンドをAPU116に発行することができる。次に、処理コマンドは、スケジューラ136に提供される。スケジューラ136は、処理コマンドを、並列実行のためにWGP132.1~132.Mに割り当てられる計算タスクに変換する。例えば、スケジューラ136は、データ(例えば、画像の1024ピクセル)に対して実行されるべき命令を含む処理コマンドを受信し得る。それに応じて、スケジューラ136は、データをグループ(例えば、各グループが64ピクセルの処理に必要なデータを含む)に分割し、1つ以上のWGPにおいてウェーブを開始することができ、各ウェーブは、データのグループ及びデータに対して実行する命令に関連付けられる。例えば、スケジューラ136は、1つ以上のWGP132のSIMD138において実行される16個のウェーブ(例えば、各々が64個のピクセルの処理を担当する)を開始することができる。
【0019】
図2は、本開示の1つ以上の特徴が実施され得る、例示的なWGP200のブロック図である。WGP200は、図1BのAPU116のWGP132.1~132.Mのうち何れかとすることができる。WGP200は、SIMDユニット220.1~220.4及びLDSメモリ250を含むことができる。各SIMD、例えば220.1は、演算論理ユニット(ALU)230.1及びVGPR240.1を含む。ALU230.1~230.4は、それぞれのSIMD220.1~220.4上で実行されるシェーダ命令によって指定される計算を実施するように設計された回路を含む。VGPR240.1~240.4は、シェーダ命令が作用するデータを格納(入力及び出力)するためにそれぞれのSIMD220.1~220.4が使用することができるレジスタである。LDSメモリ250は、SIMDユニット220.1~220.4がアクセス可能なメモリリソースである。一態様では、LDSメモリ250は、RAM260.1~260.Mの上部アレイ及びRAM270.1~270.Mの下部アレイを含む、2つのアレイに配置されたRAM(又は任意の他のタイプの揮発性メモリユニット)を含む。
【0020】
シェーダシステム(図1BのAPU116等)の通常動作モードでは、スケジューラ136がウェーブを開始しなければならない場合に、スケジューラは、先ず、システム116内のWGP132.1~132.Mのリソース可用性をチェックする。例えば、スケジューラは、WGP内で動作しているウェーブの数を、そのWGPが同時に実行することができるウェーブの最大数に対してチェックする。次いで、スケジューラは、ウェーブを実行する現在の容量を有するWGP内でウェーブを開始する。各ウェーブは、独立したプログラムであるので、通常モードでは、1つのWGPで開始されたウェーブは、別のウェーブによって処理されたデータにアクセスすることができない。1つのウェーブによって処理されたデータを別のウェーブによるアクセスから保護することは、セキュリティ対策を提供するように設計された重要なシステムの特徴である。しかしながら、このデータセキュリティシステムの特徴は、ウェーブが協調タスクを実行するために採用される場合に制御される必要があり、ウェーブ間でデータを共有することは、データセキュリティの懸念を提示しない状況においてタスクを効率的に実行するために必要とされる。
【0021】
したがって、動作モード、すなわちテークオーバーモードが本明細書で開示される。テークオーバーモードでは、通常動作モードから逸脱する動作構成がアクティブ化される。すなわち、通常動作モードにおいて1つのウェーブが別のウェーブのデータと相互作用することから保護するように設計されたハードウェア制限が取り除かれる。テークオーバーモードでは、協調タスクを実施するように設計されたウェーブは、1つのWGP200上で排他的に実行され、そのWGPのリソースを効率的に使用する。例えば、ウェーブのグループ、例えば16個のウェーブのワークグループが協調タスクを実施する場合、テークオーバーモードを設定することができる。このモードでは、システムのスケジューラ136は、1つのWGP上でこのワークグループを開始するように構成され、ワークグループ内の全てのウェーブがそれらの実行を終了する前に、そのWGP上で他のウェーブが開始されることはない。そうでなければ、スケジューラが無関係のウェーブを開始する場合、テークオーバーモードによって許可されたWGPのメモリリソースへのグローバルアクセスは、セキュリティハザードを引き起こす可能性がある。すなわち、関連しないウェーブによって生成された保護されたデータは、ワークグループ内の別のウェーブによってアクセスされてもよく、その逆も同様である。したがって、テークオーバーモードでは、ワークグループのウェーブがWGP上で排他的に開始される前に、全ての無関係なウェーブがWGPから排出され、他の無関係なウェーブを開始することができる前に、ワークグループの全てのウェーブがWGPから排出される。
【0022】
テークオーバーモードで動作するワークグループ内のウェーブは、VGPR240.1~240.4等のWGP200のメモリリソースへのグローバルアクセスを享受することができる。VGPR240.1~240.4へのこのグローバルアクセスは、WGP200内で同時に動作するウェーブのみがワークグループのウェーブであり、他の無関係なウェーブがこのモードで同時に動作することができず、ワークグループのウェーブによって処理される(所有される)VGPR内のデータと相互作用する(データを読み取る又はデータに書き込む)ことができないので、安全である。したがって、テークオーバーモードは、シェーダシステム(例えば、APU116)を、ウェーブが互いのデータ(それぞれのVGPR240.1~240.4に記憶されている)に直接到達してそれらの計算の結果を共有することができる構成に設定する。したがって、テークオーバーモードでは、ウェーブは、同じSIMD内のグローバルVGPRにアクセスすることができる。対照的に、通常モードでは、ウェーブ間でデータを共有するために、データは、別のウェーブがそれを読み取ることができる前に、1つのウェーブによって最初に共有メモリに保存されなければならず、これは、遅く高価なプロセスである。
【0023】
したがって、関連するタスクを実施するウェーブによるVGPR240.1~240.4へのグローバルアクセスは、ウェーブが互いの処理結果を使用することを可能にする。典型的には、1つの段階で実行されるウェーブが、前の段階で実行されるウェーブの処理結果を使用するので、並行して各段階でデータを処理することを伴うタスクは、テークオーバーモードから利益を得ることができる。例えば、畳み込みニューラルネットワーク(CNN)は、レイヤ(段階)内のデータを処理し、1つのレイヤは、前のレイヤの結果として生じる、処理されたデータを使用する。例えば、テークオーバーモードで動作している場合、16個のウェーブのワークグループが、CNNのレイヤによって必要とされる計算タスクを実行するために、1つのWGP200(例えば、WGP132.1)において排他的にスケジューラ136によって開始され得る。そのような場合では、SIMDユニット220.1~220.4の各々において4つのウェーブを実行することができる。256バイトのレジスタブロックをこれらのウェーブの各々に割り当てることができる。すなわち、SIMDユニット220.1上で実行されるウェーブは、その使用のためにVGPR240.1の256バイトを割り当てることができる。そのウェーブは、それが動作する必要があるデータと、その動作の結果として生じるデータとを、その割り当てられたレジスタブロックに記憶することができる。しかしながら、ウェーブは、CNNの前のレイヤにおけるウェーブの動作から生じたデータに対して動作することを必要とする場合がある。そのような場合、そのウェーブは、それらのそれぞれのSIMD内のそれらのウェーブに割り当てられたレジスタブロックにアクセスする必要がある。テークオーバーモードによって(すなわち、通常モードにおいて)可能にされるこのグローバルアクセスがない場合、CNNの1つのレイヤで動作するウェーブは、それらの結果として生じるデータを共有メモリに保存し、それによって、次のレイヤで動作するウェーブが、それらのデータに対して動作する前に、それらのデータをそれらの割り当てられたレジスタブロックにロードすることができるようにする必要がある。
【0024】
テークオーバーモードによって与えられるVGPRへのグローバルアクセスに加えて、SIMDユニット220.1~220.4は、LDSメモリ250の全ての領域へのアクセスを有することができ、そこからメモリ空間が割り当てられ得る。テークオーバーモードでは、ワークグループの全てのウェーブがLDSメモリ250内のメモリ空間への対称アクセスを受けることができるメモリ割当てポリシーが使用される。通常動作モードでは、例えば、SIMDユニット220.1は、RAM260.1内のメモリ空間に制限されたアクセスを有することができ、SIMD220.3は、RAM270.1内のメモリ空間に制限されたアクセスを有することができる。SIMDユニット220.1及び220.3に対するLDSメモリ250内のこれらのRAM260.1及び270.1の物理的配置に起因して、これらの2つのSIMDユニット220.1及び220.3の間のアクセス効率に関して非対称性が生じ得る。対照的に、テークオーバーモードでは、SIMDユニットは全て、LDS250内のメモリ全体にアクセスすることができる。例えば、SIMDユニット220.1、220.2、220.3、220.4は、それぞれ、RAM260.1、270.1、260.M、270.M内のメモリ空間に割り当てると共にアクセスすることができる。LDSメモリ250内のこれらのRAMの物理的配置により、全てのSIMDユニット(及びそれによってそれらが実行するウェーブ)への等しい(又は対称的な)アクセス効率が可能になる。
【0025】
図3は、本開示の1つ以上の特徴が実施され得る、協調タスクを処理するための例示的な方法300のフローチャートである。一態様では、方法300は、図1Bのシェーダシステムによって採用され得る。
【0026】
方法300は、ステップ310で開始することができ、ここで、協調タスクに関連付けられた入力データ及びコンピューティング命令がシステムによって受信され得る。更に、ステップ320において、テークオーバーモードの構成設定を受信することができ、システムに、動作を通常モードからテークオーバーモードに切り替えさせる。
【0027】
テークオーバーモードでは、ステップ330において、協調タスクを実行するように構成されたウェーブフロントを含むワークグループを、1つのWGPにおいて排他的に開始することができる。ステップ340において、開始されたウェーブフロントは、第1の動作段階において実行することができ、各実行ウェーブフロントは、その関連付けられたVGPRに記憶された入力データのそれぞれの部分に対して受信された命令を採用する。次いで、ウェーブフロントの実行が完了すると、ステップ350において、タスクに関連付けられた更なるコンピューティング命令がシステムによって受信され得る。
【0028】
これに応じて、ステップ360において、ウェーブフロントを含むワークグループが再び排他的に1つのWGP内で開始される。ステップ370において、開始されたウェーブフロントは、第2の動作段階で実行することができ、各実行ウェーブフロントは、他のウェーブフロントの関連VGPRに格納されているワークグループ内の他のウェーブフロントによって第1の動作段階で生成されたデータを含むデータのそれぞれの部分に対して受信された更なる命令を採用する。上述したように、第1の動作段階は、CNNの第1のレイヤにおいて実行される計算であってもよく、第2の動作段階は、CNNの第2のレイヤにおいて実行される計算であってもよい。
【0029】
一態様では、WGPのキャッシュは、WGPがテークオーバーモードで動作する場合に、異なるポリシーに従って管理され得る。例えば、協調タスクが典型的な作業負荷パターンに関連付けられるので、キャッシュ管理ポリシーは、その作業負荷パターンに従って選択され得る。したがって、構成可能なキャッシュ管理ポリシーは有用である。これは、テークオーバーモードで動作している場合にWGPの構成レジスタを動的に設定することによって行うことができる。一態様では、命令キャッシュセット/バンク(アイデンティティ)ハッシングは、テークオーバーモードに入ると自動的に設定され、テークオーバーモードを出ると自動的にリセットされ得る。
【0030】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0031】
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。適切なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ若しくは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読記憶媒体に記憶させることが可能な命令等)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
【0032】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1A
図1B
図2
図3
【国際調査報告】