(57)【要約】マルチスレッドプロセッサ（１０５）のプロセッサコア（１１１〜１１４）によって共有されるリソース内のウェーブのフットプリント（３４０〜３４３）又はリソース割り当てが、プロセッサコアで実行されるウェーブと同時に測定される。フットプリントは、時間間隔で平均化される。フットプリントの平均に基づいて、マルチスレッドプロセッサで実行されるいくつかのウェーブが生成され、ディスパッチされる。場合によっては、リソース内のウェーブのフットプリントの平均値に基づいて決定されるレートでウェーブが生成される。ウェーブを生成するレートは、リソース内のウェーブのフットプリントの平均値の変化に応じて変更される。【選択図】図３
2021501409.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッドプロセッサのプロセッサコアによって共有されているリソース内のウェーブのリソース割り当てを、前記プロセッサコアで実行されているウェーブと同時に測定することと、
前記マルチスレッドプロセッサにおいて、前記リソース割り当てを時間間隔に亘って平均化することと、
前記マルチスレッドプロセッサにおいて、前記リソース割り当ての平均に基づいて、前記マルチスレッドプロセッサで実行するためにディスパッチされるいくつかのウェーブを生成することと、を含む、
方法。
【請求項２】
前記ウェーブのリソース割り当てを測定することは、前記ウェーブの生成、前記ウェーブへのリソース割り当て、前記ウェーブからのリソース割り当て解除のうち少なくとも１つに対応する時間で、又は、所定の実行サイクル数に対応する時間間隔で、前記ウェーブのリソース割り当てを測定することを含む、
請求項１の方法。
【請求項３】
前記リソース割り当てを測定することは、前記ウェーブが前記プロセッサコアで実行されている間に、前記ウェーブの最大リソース割り当てを測定することを含む、
請求項１の方法。
【請求項４】
前記リソース内のウェーブのリソース割り当てを測定することは、基準時間に対するトレーリング期間の間に前記リソース内のウェーブのリソース割り当てを測定することを含む、
請求項１の方法。
【請求項５】
前記リソース割り当てを時間間隔に亘って平均化することは、前記トレーリング期間に亘って前記リソース割り当ての移動平均を生成することを含む、
請求項４の方法。
【請求項６】
前記いくつかのウェーブを生成することは、前記トレーリング期間に亘る前記リソース割り当ての移動平均に基づいて、前記基準時間後の前記いくつかのウェーブを生成することを含む、
請求項５の方法。
【請求項７】
以前のトレーリング期間における以前の移動平均に対する前記移動平均の変化に応じて、実行のためにディスパッチされるウェーブの数を変更することをさらに含む、
請求項６の方法。
【請求項８】
前記リソース割り当てを平均化することは、前記ウェーブの複数のサブセットに対する複数のリソース割り当ての平均を生成することを含み、
前記いくつかのウェーブを生成することは、前記複数のリソース割り当ての平均に基づいて決定された数のウェーブを生成することを含む、
請求項１の方法。
【請求項９】
前記ウェーブの複数のサブセットは、単一命令複数データ操作を含む前記ウェーブのサブセット、実行を完了したウェーブのサブセット、及び、前記ウェーブを実行するシェーダのタイプに対応するウェーブのサブセットのうち少なくとも１つを含む、
請求項８の方法。
【請求項１０】
複数のプロセッサコアと、
前記複数のプロセッサコアによって実行されるいくつかのウェーブを生成するように構成されたコントローラであって、前記生成されるウェーブの数は、前記複数のプロセッサコアで実行されているウェーブによって共有されるリソース内のウェーブの測定されたリソース割り当ての平均値を使用して決定される、コントローラと、を備える、
処理システム。
【請求項１１】
前記ウェーブのリソース割り当ては、前記ウェーブの生成、前記ウェーブへのリソース割り当て、前記ウェーブからのリソース割り当て解除のうち少なくとも１つに対応する時間で、又は、所定の実行サイクル数に対応する時間間隔で測定される、
請求項１０の処理システム。
【請求項１２】
前記測定されたリソース割り当ては、前記ウェーブが前記複数のプロセッサコアで実行されている間に測定された前記ウェーブの最大リソース割り当てである、
請求項１０の処理システム。
【請求項１３】
前記ウェーブのリソース割り当ては、基準時間に対するトレーリング期間の間に測定される、
請求項１０の処理システム。
【請求項１４】
測定されたフットプリントの平均値は、前記トレーリング期間に亘る前記測定されたリソース割り当ての移動平均である、
請求項１３の処理ステム。
【請求項１５】
前記コントローラは、前記トレーリング期間に亘る前記測定されたリソース割り当ての移動平均に基づいて、前記基準時間後の前記いくつかのウェーブを生成するように構成されている、
請求項１４の処理システム。
【請求項１６】
前記コントローラは、以前のトレーリング期間に亘る以前の移動平均に対する前記移動平均の変化に応じて、実行のためにディスパッチされるウェーブの数を変更するように構成されている、
請求項１５の処理システム。
【請求項１７】
前記測定されたリソース割り当ての平均値は、前記ウェーブの複数のサブセットに対する測定されたリソース割り当ての複数の平均値を含み、
前記コントローラは、前記測定されたフットプリントの複数の平均値に基づいて決定された数のウェーブを生成するように構成されている、
請求項１０の処理システム。
【請求項１８】
前記ウェーブの複数のサブセットは、単一命令複数データ操作を含む前記ウェーブのサブセット、実行を完了したウェーブのサブセット、及び、前記ウェーブを実行するシェーダのタイプに対応するウェーブのサブセットのうち少なくとも１つを含む、
請求項１７の処理システム。
【請求項１９】
マルチスレッドプロセッサにおいて、前記マルチスレッドプロセッサのプロセッサコアによる実行のためにディスパッチされるウェーブを、前記プロセッサコアで実行されている間に前記ウェーブによって共有されるリソース内の前記ウェーブのリソース割り当ての平均値に基づいて決定されるレートで生成することと、
前記マルチスレッドプロセッサにおいて、前記ウェーブのリソース割り当ての平均値の変化に応じて、前記ウェーブの生成レートを変更することと、を含む、
方法。
【請求項２０】
前記ウェーブの生成レートを変更することは、前記ウェーブのリソース割り当ての平均値の減少に応じて前記ウェーブの生成レートを増加させることと、前記ウェーブのリソース割り当ての平均値の増加に応じて前記ウェーブの生成レートを減少させることと、を含む、
請求項１９の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
グラフィックス処理ユニット（ＧＰＵ）及び他のマルチスレッド処理ユニットは、通常、複数のデータセットで単一プログラムの複数のインスタンスを同時に実行する複数の処理要素（プロセッサコア又はコンピューティングユニットとも呼ばれる）を実装する。インスタンスは、スレッド又はウェーブと呼ばれる。いくつかのウェーブが作成（又は生成）され、マルチスレッド処理ユニットの各処理要素にディスパッチされる。処理ユニットは、数千のウェーブが処理ユニットでプログラムを同時に実行するように、数百の処理要素を含むことができる。ＧＰＵの処理要素は、通常、プログラマブルシェーダ及び固定機能ハードウェアブロックのシーケンスから構成されるグラフィックスパイプラインを使用して、三次元（３Ｄ）グラフィックスを処理する。例えば、フレームに表示されるオブジェクトの３Ｄモデルは、ユーザに表示するためのピクセル値を生成するために、プリミティブ（例えば、グラフィックスパイプラインで処理される三角形、他のポリゴン又はパッチ等）のセットによって表すことができる。マルチスレッドＧＰＵでは、ウェーブが、シェーダの異なるインスタンスを実行して、異なるプリミティブでの計算を同時又は並列に実行する。マルチスレッド処理ユニットで同時に実行されるウェーブは、処理ユニットのリソースの一部を共有する。共有リソースは、ウェーブの状態情報を記憶するベクトル汎用レジスタ（ＶＧＰＲ）と、ウェーブのデータを記憶するために使用されるローカルデータ共有（ＬＤＳ）と、ローカルキャッシュ階層とメモリとの間で情報を移動するのに利用可能な帯域幅と、等を含む。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ディスプレイへの出力を意図した視覚イメージを生成するためのグラフィックス処理ユニット（ＧＰＵ）を含む処理システムのブロック図である。
【図２】いくつかの実施形態による、高次ジオメトリプリミティブを処理して三次元（３Ｄ）シーンのラスタライズ画像を生成することができるグラフィックスパイプラインを示す図である。
【図３】いくつかの実施形態による、共有リソースの動的割り当てに基づくウェーブの生成をサポートする処理システムの一部のブロック図である。
【図４】いくつかの実施形態による、共有リソースのウェーブの測定されたフットプリントを時間関数としてプロットした図である。
【図５】いくつかの実施形態による、共有リソースのウェーブの平均フットプリントのプロット、及び、マルチスレッド処理ユニットにおける複数のインフライトのウェーブのプロットを含む図である。
【図６】いくつかの実施形態による、マルチスレッド処理ユニットで実行されるウェーブのフットプリントの平均に基づいてウェーブの生成を制御する方法のフロー図である。
【図７】いくつかの実施形態による、共有リソースの２つの異なるウェーブの測定されたフットプリントを時間関数としてプロットした図である。
【発明を実施するための形態】
【０００４】
マルチスレッド処理ユニットによって同時に実行されるウェーブの数は、共有リソースの可用性によって制限される。従来のウェーブ生成技術では、全てのウェーブが同じリソース割り当て（本明細書では、ウェーブのフットプリントとも呼ばれる）を必要とし、さらに、ウェーブの実行中にウェーブのフットプリントが一定のままであることを必要とすることを想定している。同時に実行するためにディスパッチされるウェーブの数は、想定される静的なフットプリントを利用可能なリソースの合計と比較することによって決定される。ウェーブの実際のフットプリントは、通常、想定される静的なフットプリントと異なり、ウェーブのフットプリントは、通常、ウェーブが実行されるにつれて変化する。このことは、ウェーブへのリソースの非効率的な割り当てにつながる。例えば、ウェーブ毎の静的なフットプリントが、任意の個々のウェーブの実際のフットプリント以上の最大値を有すると想定すると、マルチスレッドＧＰＵで同時に実行されるウェーブは、利用可能な全てのリソースよりも少ない量しか消費しない。別の例では、ウェーブ毎のフットプリントが、実行中のウェーブのフットプリント以下の最小値を有すると想定すると、ウェーブが同じリソースで競合するためにウェーブの実行がシリアライズされ、これにより、ウェーブを並列に実行することによって達成されるレイテンシの隠蔽の程度が低減又は排除される。ウェーブによって使用されるメモリ帯域幅が、使用可能なメモリユニット帯域幅を、実行中のウェーブの数で割った値を超える場合に、シリアライズが発生する。
【０００５】
マルチスレッドプロセッサでウェーブを実行する間に、リソースを共有しているウェーブのフットプリントを測定することによって、共有リソースの競合によるシリアライズを回避しながら、マルチスレッドプロセッサ（ＧＰＵ等）の共有リソースの使用率を向上させる。測定されたウェーブのフットプリントは、時間間隔で平均化され、ウェーブの平均フットプリントが決定される。マルチスレッドプロセッサでの実行のためにディスパッチされるウェーブの数（又は、実行のためのウェーブの生成レート）は、平均フットプリントに基づいて決定される。例えば、マルチスレッドプロセッサで同時に実行するためにディスパッチされるウェーブの数を、利用可能な共有リソースを平均フットプリントで割った値に設定することができる。いくつかの実施形態では、平均フットプリントは、マルチスレッドプロセッサで同時に実行するためにディスパッチされたウェーブのフットプリントの指数関数的に重み付けされた移動平均等の移動平均を使用して決定される。ウェーブのフットプリントは、ウェーブが生成されたとき、共有リソースがウェーブに割り当てられたとき、共有リソースが割り当て解除されたとき、各プロセッササイクルの間、所定のサイクル数が完了した後、又は、他の任意の時間若しくは時間間隔で測定されてもよい。単一の平均フットプリントが、ディスパッチされた全てのウェーブの平均をもとめることによって決定され、又は、複数の平均フットプリントが、ディスパッチされたウェーブのサブセットについて決定される。サブセットは、単一命令複数データ（ＳＩＭＤ）で実行されるウェーブ、実行が完了したウェーブ、様々なタイプのシェーダを実行するウェーブ等のように、ディスパッチされたウェーブの共通の特性に基づいて決定される。
【０００６】
図１は、いくつかの実施形態による、ディスプレイ１１０への出力を意図した視覚イメージを生成するためのグラフィックス処理ユニット（ＧＰＵ）１０５を含む処理システム１００のブロック図である。ＧＰＵ１０５は、複数のプロセッサコア１１１，１１２，１１３，１１４を含むマルチスレッドプロセッサであり、本明細書ではこれらをまとめて「プロセッサコア１１１〜１１４」と呼ぶ。プロセッサコア１１１〜１１４は、命令を同時又は並列に実行するように構成されている。図１では、分かり易くするために４つのプロセッサコア１１１〜１１４を示しているが、ＧＰＵ１０５のいくつかの実施形態は、数十又は数百以上のプロセッサコアを含む。プロセッサコア１１１〜１１４の処理リソースは、ディスプレイ１１０に表示するオブジェクトの画像をレンダリングするグラフィックスパイプラインを実装するために使用される。プロセッサコア１１１〜１１４のいくつかの実施形態は、複数のデータセットで単一のプログラムの複数のインスタンス（又は、ウェーブ）を同時に実行する。ＧＰＵ１０５のウェーブ生成制御ロジックは、本明細書で説明するように、動的に決定されたウェーブのフットプリントに基づいて、プロセッサコア１１１〜１１４で実行されるウェーブを生成する。
【０００７】
処理システム１００は、メモリ１１５を含む。メモリ１１５のいくつかの実施形態は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）として実装されている。しかし、メモリ１１５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、不揮発性ＲＡＭ等を含む他のタイプのメモリを使用して実装されてもよい。図示した実施形態では、ＧＰＵ１０５は、バス１２０を介してメモリ１１５と通信する。しかし、ＧＰＵ１０５のいくつかの実施形態は、直接接続を介して、又は、他のバス、ブリッジ、スイッチ、ルータ等を介して、メモリ１１５と通信する。ＧＰＵ１０５は、メモリ１１５に記憶された命令を実行することができ、実行された命令の結果等の情報をメモリ１１５に記憶することができる。例えば、メモリ１１５は、ＧＰＵ１０５のプロセッサコア１１１〜１１４によって実行されるプログラムコードからの命令のコピー１２５を記憶することができる。
【０００８】
処理システム１００は、命令を実行するための中央処理装置（ＣＰＵ）１３０を含む。ＣＰＵ１３０のいくつかの実施形態は、命令を同時又は並列に独立して実行することができる複数のプロセッサコア１３１，１３２，１３３，１３４（本明細書ではまとめて「プロセッサコア１３１〜１３４」と呼ぶ）を含む。また、ＣＰＵ１３０は、バス１２０に接続されており、これにより、バス１２０を介してＧＰＵ１０５及びメモリ１１５と通信することができる。ＣＰＵ１３０は、メモリ１１５に記憶されたプログラムコード１３５等の命令を実行することができ、実行された命令の結果等の情報をメモリ１１５に記憶することができる。また、ＣＰＵ１３０は、ドローコールをＧＰＵ１０５に発行することによって、グラフィックス処理を開始することができる。ドローコールは、ＧＰＵ１０５にフレーム内のオブジェクト（又は、オブジェクトの一部）のレンダリングを指示するために、ＣＰＵ１３０によって生成され、ＧＰＵ１０５に送信されるコマンドである。ドローコールのいくつかの実施形態は、オブジェクト又はその一部をレンダリングするためにＧＰＵ１０５によって使用されるテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。ドローコールに含まれる情報は、状態情報を含む状態ベクトルと呼ぶことができる。ＧＰＵ１０５は、オブジェクトをレンダリングして、ディスプレイ１１０に提示されるピクセル値を生成し、ディスプレイ１１０は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
【０００９】
入出力（Ｉ／Ｏ）エンジン１４０は、処理システム１００の他の要素（例えば、キーボード、マウス、プリンタ、外部ディスク等）と同様に、ディスプレイ１１０に関連する入出力動作を処理する。Ｉ／Ｏエンジン１４０は、ＧＰＵ１０５、メモリ１１５又はＣＰＵ１３０と通信できるように、バス１２０に接続されている。図示した実施形態では、Ｉ／Ｏエンジン１４０は、外部記憶媒体１４５（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ネットワークサーバ等）に記憶された情報を読み出すように構成されている。外部記憶媒体１４５は、ビデオゲーム等のアプリケーションを実行するために使用されるプログラムコードを表す情報を記憶する。外部記憶媒体１４５のプログラムコードは、ＧＰＵ１０５によって実行される命令のコピー１２５、又は、ＣＰＵ１３０によって実行されるプログラムコード１３５を形成するために、メモリ１１５に書き込まれてもよい。
【００１０】
マルチスレッドＧＰＵ１０５のプロセッサコア１１１〜１１４は、ＧＰＵ１０５のウェーブの実行をサポートするために使用されるリソースを共有する。ＧＰＵ１０５のいくつかの実施形態は、プロセッサコア１１１〜１１４で実行されるウェーブの状態情報を記憶するベクトル汎用レジスタ（ＶＧＰＲ、明確にするために図１に示されていない）のセットを実装する。ＶＧＰＲは、プロセッサコア１１１〜１１４で同時に実行されているウェーブ間で共有される。例えば、各ウェーブにはＶＧＰＲのサブセットが割り当てられ、ウェーブの状態情報が記憶される。また、ウェーブは、同時に実行されるウェーブ間で分割されるローカルデータ共有、ローカルキャッシュにアクセスするためにウェーブによって共有されるメモリ帯域幅等を含む、ＧＰＵ１０５の他のリソースを共有する。マルチスレッドＣＰＵ１３０のプロセッサコア１３１〜１３４もリソースを共有する。ＧＰＵ１０５との関連で後述するように、ウェーブ生成及び共有リソースの動的な割り当ても、マルチスレッドＣＰＵ１３０のいくつかの実施形態で実施される。
【００１１】
異なるウェーブは、プロセッサコア１１１〜１１４での実行中に異なる量のリソースを消費する。したがって、各ウェーブは、異なるリソースフットプリントを有する。さらに、ウェーブによって消費されるリソースは、通常、当該ウェーブの実行中に変化する。例えば、ウェーブの状態情報を記憶するために必要なＶＧＰＲの数は、ウェーブが実行されると変化する。ウェーブによって生成される中間結果の量は、通常、ウェーブの実行が始まると増加し、ウェーブの実行中にピークに達し、ウェーブの実行が完了すると減少する。したがって、中間結果（及び、他の状態情報）を記憶するために必要なＶＧＰＲの数は、記憶する必要がある情報の量に応じて増加し、ピークに達し、その後減少する。同様のパターンが、ローカルデータの共有やメモリ帯域幅を含む他のリソースの消費においても見られる。
【００１２】
ＧＰＵ１０５は、ＧＰＵ１０５の共有リソース内のウェーブのフットプリントの動的な推定に基づいて、プロセッサコア１１１〜１１４で実行するためのウェーブを生成する。共有リソース内のウェーブのフットプリントは、プロセッサコア１１１〜１１４で実行されるウェーブと同時に測定される。ウェーブの測定されたフットプリントは、例えば、測定されたフットプリントの指数関数的に重み付けされた移動平均を使用して、時間間隔に亘って平均化される。平均フットプリントに基づいて、プロセッサコア１１１〜１１４によって実行される複数のウェーブが生成され、ディスパッチされる。例えば、生成されるウェーブの数を、利用可能な共有リソースを平均フットプリントで割った値に設定することができる。利用可能な共有リソースは、共有リソースの合計から、プロセッサコア１１１〜１１４で現在実行されているウェーブに割り当てられている共有リソースを減算したものに等しい。
【００１３】
場合によっては、ＧＰＵ１０５は、共有リソース内のウェーブのフットプリントの平均値に基づいて決定されるレートでウェーブを生成する。ＧＰＵ１０５は、リソース内のウェーブのフットプリントの平均値の変化に応じて、ウェーブの生成レートを変更する。ＧＰＵ１０５は、処理システム１００のボトルネックと考えられる単一のリソース内の平均フットプリントに基づいて、生成されるウェーブの数（又は、生成されるウェーブのレート）を決定することができ、又は、複数の共有リソース内の平均フットプリントの組み合わせに基づいて、ウェーブの数を決定することができる。
【００１４】
図２は、いくつかの実施形態による、高次のジオメトリプリミティブを処理して三次元（３Ｄ）シーンのラスタライズ画像を生成することができるグラフィックスパイプライン２００を示す図である。グラフィックスパイプライン２００は、図１に示すＧＰＵ１０５のいくつかの実施形態において実装される。例えば、グラフィックスパイプライン２００は、図１に示すマルチスレッドＧＰＵ１０５のプロセッサコア１１１〜１１４を使用して実装されてもよい。
【００１５】
グラフィックスパイプライン２００は、シーンのモデルの部分を表すオブジェクトを定義するのに使用されるストレージリソース２０１からの情報にアクセスするように構成された入力アセンブラ２０２を含む。ソフトウェアで実装可能な頂点シェーダ２０３は、プリミティブの単一の頂点を入力として論理的に受信し、単一の頂点を出力する。頂点シェーダ２０３等のシェーダのいくつかの実施形態は、例えば、図１に示すプロセッサコア１１１〜１１４によって複数の頂点を同時に処理することができるように、大規模な単一命令多重データ（ＳＩＭＤ）処理を実施する。図２に示すグラフィックスパイプライン２００は、グラフィックスパイプライン２００に含まれる全てのシェーダが、共有された大規模なＳＩＭＤ計算ユニットにおいて同じ実行プラットフォームを有するように、ユニファイドシェーダモデル（unified shader model）を実装する。したがって、頂点シェーダ２０３を含むシェーダは、本明細書においてユニファイドシェーダプール（unified shader pool）２０４と呼ばれるリソースの共通セットを使用して実装される。ユニファイドシェーダプール２０４のいくつかの実施形態は、図１に示すＧＰＵ１０５のプロセッサコア１１１〜１１４を使用して実装される。
【００１６】
ハルシェーダ２０５は、入力パッチを定義するのに使用される入力高次パッチ又はコントロールポイントに基づいて動作する。ハルシェーダ２０５は、テッセレーション係数及び他のパッチデータを出力する。ハルシェーダ２０５によって生成されたプリミティブは、オプションでテッセレータ２０６に提示されてもよい。テッセレータ２０６は、ハルシェーダ２０５からオブジェクト（パッチ等）を受信し、例えば、ハルシェーダ２０５によってテッセレータ１０６に提供されるテッセレーション係数に基づいて入力オブジェクトをテッセレーションすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーション処理によって生成されるプリミティブの粒度を指定するテッセレーション係数によって示すように、例えばパッチ等の入力高次プリミティブを、より詳細なレベルを表す低次出力プリミティブのセットに分割する。したがって、シーンのモデルを（メモリ又は帯域幅を節約するために）少数の高次プリミティブで表すことができ、高次プリミティブをテッセレーションすることによってさらなる詳細を追加することができる。
【００１７】
ドメインシェーダ２０７は、ドメイン位置及び（オプションで）他のパッチデータを入力する。ドメインシェーダ２０７は、提供された情報に基づいて動作し、入力ドメイン位置及び他の情報に基づいて、出力用の単一の頂点を生成する。ジオメトリシェーダ２０８は、入力プリミティブを受信し、入力プリミティブに基づいて、ジオメトリシェーダ２０８によって生成される最大４つのプリミティブを出力する。プリミティブの１つのストリームがラスタライザ２０９に提供され、最大４つのプリミティブのストリームがストレージリソース２０１のバッファに連結され得る。ラスタライザ２０９は、シェーディング操作と、他の操作（例えば、クリッピング、パースペクティブ分割、シザリング、ビューポート選択等）と、を実行する。ピクセルシェーダ２１０は、ピクセルフローを入力し、入力されたピクセルフローに応じて、０又は別のピクセルフローを出力する。出力マージャブロック２１１は、ピクセルシェーダ２１０から受信したピクセルに対して、ブレンド、デプス（depth）、ステンシル又は他の操作を実行する。
【００１８】
グラフィックスパイプライン２００のステージは、ユニファイドシェーダプール２０４の処理リソースを使用して、異なるステージによって実行されているウェーブによって共有されるストレージリソース２１５にアクセスすることができる。ストレージリソース２１５の一部は、図１に示すＧＰＵ１０５の一部としてオンチップで実装されるか、図１に示すメモリ１１５のいくつかの実施形態を使用してオフチップで実装される。ストレージリソース２１５は、複数のウェーブのワークグループ内での読み出し／書き込み通信及び同期に使用されるＬＤＳ２２０を含む。ストレージリソース２１５は、ウェーブによって実行された動作の中間結果等のように、ウェーブの現在の状態を定義する状態情報を記憶するＶＧＰＲ２２５も含む。ストレージリソース２１５は、頂点データ、テクスチャデータ、及び、グラフィックスパイプライン２００の１つ以上のステージによって頻繁に使用される他のデータ等の情報をキャッシュするために使用されるキャッシュ階層２３０をさらに含む。また、ストレージリソース２１５は、他のレジスタ、バッファ、メモリ又はキャッシュを含むことができる。グラフィックスパイプライン２００の共有リソースは、グラフィックスパイプライン２００のステージとストレージリソース２１５との間の通信をサポートするために使用されるメモリファブリックの帯域幅も含む。
【００１９】
グラフィックスパイプライン２００で実行中のウェーブは、ストレージリソース２１５及びグラフィックスパイプライン２００の他の共有リソースにおいて異なるフットプリントを有する。例えば、画像の非常に詳細な前景部分をシェーディングするのに使用されるウェーブは、画像のあまり詳細ではない背景部分をシェーディングするのに使用されるウェーブよりも、共有リソースにおいて大きなフットプリントを有してもよい。また、ウェーブのフットプリントは、グラフィックスパイプライン２００を通過するにつれて変化する。例えば、共有リソース内のウェーブのフットプリントは、頂点シェーダ２０３での実行中に（比較的小さい）第１値で開始することができ、その後、グラフィックスパイプライン２００の後続するステージでウェーブが追加の中間結果を生成すると、ウェーブのフットプリントが増加し得る。したがって、ウェーブ生成制御ロジックは、ＬＤＳ２２０、ＶＧＰＲ２２５、キャッシュ階層２３０、ストレージリソース２１５へのアクセスに使用されるメモリ帯域幅、及び、他の共有リソース内のウェーブのフットプリントの動的な推定に基づいて、グラフィックスパイプライン２００で実行されるウェーブを生成するように構成されている。
【００２０】
図３は、いくつかの実施形態による、共有リソースの動的割り当てに基づくウェーブの生成をサポートする処理システムの一部３００のブロック図である。一部３００は、図１に示す処理システム１００のいくつかの実施形態を実施するために使用される。例えば、一部３００は、図１に示すＧＰＵ１０５又はＣＰＵ１３０のいくつかの実施形態を実施するために使用されるマルチスレッド処理ユニット３０５を含む。処理ユニット３０５は、本明細書でまとめて「プロセッサコア３１０〜３１３」と呼ばれる複数のプロセッサコア３１０，３１１，３１２，３１３を含む。プロセッサコア３１０〜３１３は、ＬＤＳ３２０と、ＶＧＰＲ３２５と、キャッシュ３３０と、を含むリソース３１５のセットを共有する。また、プロセッサコア３１０〜３１３は、処理ユニット３０５と共有リソース３１５との間の接続３３５のメモリ帯域幅を共有する。
【００２１】
プロセッサコア３１０〜３１３で実行されるウェーブは、共有リソース３１５において異なるフットプリントを有する。例えば、第１ウェーブは、ＬＤＳ３２０においてフットプリント３４０、ＶＧＰＲ３２５においてフットプリント３４１、キャッシュ３３０においてフットプリント３４２を有する。また、第１ウェーブは、フットプリント３４３と、接続３３５で利用可能なメモリ帯域幅と、を有する。共有リソース内のウェーブのフットプリント３４０〜３４３は、プロセッサコア３１０〜３１３で実行されるウェーブと同時に測定される。例えば、フットプリント３４０は、特定の時間に第１ウェーブに割り当てられるバイト数として測定されてもよく、フットプリント３４１は、特定の時間に第１ウェーブに割り当てられるレジスタ数として測定されてもよく、フットプリント３４２は、特定の時間に第１ウェーブに割り当てられるキャッシュエントリ数として測定されてもよい。接続３３５内のフットプリント３４３は、特定の時間における第１ウェーブに関連するキャッシュフェッチ又はミスの数に基づいて、測定又は推定されてもよい。フットプリント３４０〜３４３の他の測定値（又は、他の共有リソースのフットプリント）も使用することができる。
【００２２】
フットプリント３４０〜３４３の複数の測定は、ウェーブ毎に経時的に行われる。ウェーブが生成されたとき、リソースがウェーブに割り当てられたとき、及び、リソースがウェーブから割り当て解除されたときに、測定を行うことができる。また、ウェーブのフットプリント３４０〜３４３を、所定の実行サイクル数に対応する時間間隔で測定することができる。例えば、フットプリント３４０〜３４３を、実行サイクル毎に１回、Ｎ実行サイクル毎に１回、又は、実行サイクルの他のサブセットの後に測定することができる。したがって、各ウェーブは、共有リソース内のウェーブのフットプリント３４０〜３４３の経時的な変化を示す測定値のセットに関連付けられる。
【００２３】
ウェーブ生成コントローラ３４５は、測定されたフットプリント３４０〜３４３の平均値に基づいて、新たなウェーブを生成してプロセッサコア３１０〜３１３にディスパッチする。ウェーブ生成コントローラ３４５のいくつかの実施形態は、ウェーブ内で実行される命令又は動作を示す情報３５０と、フットプリント３４０の測定値を示す情報３５５と、を受信する。ウェーブ生成コントローラ３４５は、特定の時間間隔に亘って測定されたフットプリント３４０〜３４３の平均値を生成する。ウェーブ生成コントローラ３４５のいくつかの実施形態は、例えば、指数関数的に重み付けされた移動平均として、基準時間に対するトレーリング期間（trailing time interval）に亘る平均値を生成する。ウェーブのサブセットに対して異なる平均値を生成することができる。例えば、フットプリント３４０〜３４３の平均値を、単一命令複数データ操作を含むウェーブのサブセット、実行を完了したウェーブのサブセット、ウェーブを実行するシェーダのタイプに対応するウェーブのサブセット等に対して生成することができる。
【００２４】
ウェーブ生成コントローラ３４５は、フットプリント３４０〜３４３の平均値に基づいて決定されたウェーブ数をディスパッチする（又は、決定されたレートでウェーブをディスパッチする）。例えば、トレーリング期間を決定するのに使用される基準時間の後に生成されるウェーブの数又はレートは、平均値に基づいて決定される。また、ウェーブ生成コントローラ３４５は、以前のトレーリング期間に亘る以前の移動平均に対する移動平均の変化に応じて、生成されるウェーブの数（又は、ウェーブ生成レート）を変更するように構成されている。例えば、移動平均の減少に応じて、より高いレートでウェーブを生成することができ、これは、より多くの共有リソース３１５が他のウェーブへの割り当てに利用可能であることを示している。別の例では、移動平均の増加に応じてウェーブをより低いレートで生成することができ、これは、他のウェーブに割り当てることができる共有リソースがより少ないことを示している。
【００２５】
ウェーブ生成コントローラ３４５のいくつかの実施形態は、サブセットに対して計算された平均フットプリントに基づいて、ウェーブの異なるサブセットに対して生成される異なるウェーブ数（又は、異なるウェーブ生成レート）を決定する。例えば、ウェーブ生成コントローラ３４５は、単一命令複数データ操作、実行を完了したウェーブのサブセット、ウェーブを実行する異なるタイプのシェーダに対応するウェーブのサブセット等を含むウェーブのサブセットの平均値に基づいて、異なる数のウェーブを生成（又は、異なるレートでウェーブを生成）することができる。
【００２６】
図４は、いくつかの実施形態による、共有リソースのウェーブの測定されたフットプリント４０５の時間関数としてのプロット４００を示す図である。測定されたフットプリント４０５は、図４において実線で示されている。しかし、いくつかの実施形態では、測定されたフットプリント４０５は、所定の実行サイクル数に対応する時間間隔等の特定の時間間隔における複数の離散測定値で形成される。最初に、測定されたフットプリント４０５は、比較的低い値で始まり、その後、ウェーブの実行が進むにつれて増加（又は、減少）する。測定されたフットプリント４０５の移動平均４１０は、基準時間４２０に対するトレーリング期間４１５の間に実行された測定の値を用いて計算される。例えば、移動平均４１０は、トレーリング期間４１５の間に実行された測定の値を用いて計算される、指数関数的に重み付けされた移動平均であってもよい。基準時間４２０は、現在の時間に対応してもよいし、所定の時間間隔で生じるように選択されてもよい。
【００２７】
図５は、いくつかの実施形態による、共有リソースのウェーブの平均フットプリント５０５のプロット５００、及び、マルチスレッド処理ユニットにおける複数のインフライトのウェーブ５１５のプロット５１０を含む図である。平均フットプリント５０５は、本明細書で説明するように、マルチスレッド処理ユニットのプロセッサコアで実行されるウェーブと同時に、ウェーブのフットプリントの測定値に基づいて決定される。次に、コントローラは、平均フットプリント５０５に基づいて、インフライトのウェーブの数５１５を決定する。本明細書で使用される「インフライトのウェーブ」という用語は、マルチスレッド処理ユニットのプロセッサコアで実行するために生成され、ディスパッチされたが、未だリタイアしていないウェーブを指す。したがって、インフライトのウェーブの数５１５は、コントローラによって生成されるウェーブの数、又は、コントローラが新たなウェーブを生成するレートによって決定される。
【００２８】
プロット５００は、各ウェーブが占有する共有リソース内のフットプリントであると最初に想定される最小平均フットプリント５２０を示している。また、プロット５００は、個々のウェーブに割り当てられる共有リソースの最大量を表す最大平均フットプリント５２５も示している。コントローラは、平均フットプリントの現在値に基づいてウェーブを生成する。プロット５１０は、生成されるウェーブの数（又は、ウェーブが生成されるレート）を決定するために使用される平均フットプリントが最小平均フットプリント５２０に等しいので、インフライトのウェーブの数５１５が最初比較的高いことを示している。インフライトのウェーブの数５１５は、平均フットプリント５０５が最大値５２５に達するまで、平均フットプリント５０５の増加に応じて減少する。次に、インフライトのウェーブの数５１５は、平均フットプリント５０５の減少に応じて増加する。
【００２９】
図６は、いくつかの実施形態による、マルチスレッド処理ユニットで実行されるウェーブのフットプリントの平均に基づいてウェーブの生成を制御する方法６００のフロー図である。方法６００は、図１に示すコンピューティングシステム１００、及び、図３に示すコンピューティングシステムの一部３００のいくつかの実施形態で実施される。図６に示す方法６００は、マルチスレッド処理ユニットで実行されるウェーブのための共有リソースの平均フットプリントを決定するが、方法６００のいくつかの実施形態は、複数の共有リソース、ウェーブの異なるサブセット等の平均フットプリントを決定する。
【００３０】
ブロック６０５において、コントローラは、初期のフットプリントに基づいて、マルチスレッド処理ユニットで実行するためのウェーブを生成する。いくつかの実施形態では、初期のフットプリントは、最小平均フットプリントに設定される。コントローラは、初期のフットプリントに基づいて決定された数のウェーブを生成（又は、決定されたレートでウェーブを生成）し続ける。
【００３１】
ブロック６１０において、マルチスレッド処理ユニットで実行されているウェーブのフットプリントの移動平均が決定される。共有リソースの個々の方法のフットプリントが測定され、測定されたフットプリントを用いて移動平均が計算される。例えば、移動平均は、基準時間に対するトレーリング期間に亘って実行されるフットプリントの測定値を使用して決定されてもよい。
【００３２】
決定ブロック６１５において、コントローラは、平均フットプリントが増加したか否かを決定する。増加していない場合、方法６００は、決定ブロック６２０に進む。平均フットプリントが増加した場合、方法６００は、決定ブロック６２５に進み、コントローラは、平均フットプリントが最大フットプリントに等しいか否かを決定する。平均フットプリントが最大フットプリントに等しい場合、方法６００は、ブロック６１０に戻り、コントローラは、新たに取得したフットプリントの測定値に基づいて移動平均を計算し続ける。したがって、コントローラは、最大フットプリントに基づいて決定された数のウェーブを生成（又は、決定されたレートでウェーブを生成）し続ける。平均フットプリントが最大フットプリントに等しくない場合、方法６００は、ブロック６３０に進む。コントローラは、平均フットプリントの増加に応じて、例えば、生成されるウェーブの数を減らすことによって、又は、ウェーブの生成レートを減少させることによって、ブロック６３０においてインフライトのウェーブの数を減らす。
【００３３】
決定ブロック６２０において、コントローラは、平均フットプリントが減少したか否かを決定する。減少していない場合、方法６００は、ブロック６１０に進む。したがって、コントローラは、以前の（変更されていない）平均フットプリントに基づいて決定された数のウェーブを生成（又は、決定されたレートでウェーブを生成）し続ける。平均フットプリントが減少した場合、方法６００は、決定ブロック６３５に進み、コントローラは、平均フットプリントが最小フットプリントに等しいか否かを決定する。平均フットプリントが最小フットプリントに等しい場合、方法６００は、ブロック６１０に戻り、コントローラは、新たに取得したフットプリントの測定値に基づいて移動平均を計算し続ける。したがって、コントローラは、最小フットプリントに基づいて決定された数のウェーブを生成（又は、決定されたレートでウェーブを生成）し続ける。平均フットプリントが最小フットプリントに等しくない場合、方法６００は、ブロック６４０に進む。コントローラは、平均フットプリントの減少に応じて、例えば、生成されるウェーブの数を増やすことによって、又は、ウェーブの生成レートを増加させることによって、ブロック６４０においてインフライトのウェーブの数を増やす。
【００３４】
図７は、いくつかの実施形態による、共有リソースの２つの異なるウェーブの測定されたフットプリント７０５，７１０の時間関数としてのプロット７００を示す図である。測定されたフットプリント７０５，７１０は、図７において実線で示されている。しかし、いくつかの実施形態では、測定されたフットプリント７０５，７１０は、所定の実行サイクル数に対応する時間間隔等の特定の時間間隔における複数の離散測定値で形成される。フットプリント７０５，７１０は、対応するウェーブがプロセッサコアで実行されている間に測定される。測定されたフットプリント７０５，７１０は、同時に存在し、時間的にオフセットされている。しかし、他の測定値は、必ずしも同時に存在し、又は、時間的にオフセットされているわけではない。例えば、場合によっては、測定されたフットプリント７０５，７１０は、異なる時間に、又は、ウェーブが異なるプロセッサで実行されている間に測定される。
【００３５】
ウェーブは、異なるコードパス（例えば、ＧＰＵのシェーダ内の異なる実行パス等）を使用してウェーブを生成する異なる特性を有する。例えば、画面イメージ内の２つのタイプのマテリアルをシェーディングするように構成されたピクセルシェーダでウェーブが実行されている場合、ピクセルシェーダは、第１マテリアルタイプ又は第２マテリアルタイプのオブジェクトに対応するピクセルをシェーディングする場合に異なる動作をする場合がある。その結果、ピクセルシェーダを通過する異なるコードパスに沿って異なるピクセルをシェーディングするのに使用されるウェーブがもたらされる。異なるタイプのマテリアルのシェーディングに関連する特性を例示目的で使用しているが、異なる最大フットプリントをもたらすウェーブの他の特性を使用して、異なるタイプのウェーブを区別することもできる。
【００３６】
異なるコードパスに沿って実行されるウェーブは、共有リソースの異なる最大フットプリントに到達する。図示した実施形態では、第１コードパスに沿って実行される第１ウェーブは、第１最大フットプリント７１５に到達し、第２コードパスに沿って実行される第２ウェーブは、第１最大フットプリント７１５よりも小さい第２最大フットプリント７２０に到達する。最大フットプリント７１５，７２０は、ウェーブがプロセッサコアで実行されている間にフットプリントを監視することによって決定される。第１コードパスに沿って実行されるウェーブ（第１ウェーブ等）の平均フットプリントは、ウェーブの最大フットプリント（第１最大フットプリント７１５等）を平均化することによって計算される。第２コードパスに沿って実行されるウェーブ（第２ウェーブ等）の平均フットプリントは、ウェーブの最大フットプリント（第２最大フットプリント７２０等）を平均化することによって計算される。
【００３７】
いくつかの実施形態では、異なるタイプのウェーブの平均最大フットプリントを使用して、何れのタイプのウェーブが実行されているかに応じて、生成されるウェーブの異なる数（又は、レート）を決定する。例えば、ピクセルシェーダが第１タイプのマテリアルをシェーディングしている場合、ピクセルシェーダを通過する対応する第１コードパスに沿って実行されるウェーブの平均最大フットプリントを使用して、生成されるウェーブの数（又は、レート）を決定する。別の例では、ピクセルシェーダが第２タイプのマテリアルをシェーディングしている場合、ピクセルシェーダを通過する対応する第２コードパスに沿って実行されるウェーブの平均最大フットプリントを使用して、生成されるウェーブの数（又は、レート）を決定する。上記の場合、第１タイプのウェーブの平均最大フットプリントは、第２タイプのウェーブの平均最大フットプリントよりも大きい。したがって、第１タイプのウェーブは、第２タイプのウェーブよりも少ない数（又は、低いレート）で生成される。
【００３８】
いくつかの実施形態では、上記の装置及び技術は、図１〜図６を参照して上述したコンピューティングシステム等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００３９】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００４０】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００４１】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００４２】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021501409.tif 000003
【図２】
2021501409.tif 000004
【図３】
2021501409.tif 000005
【図４】
2021501409.tif 000006
【図５】
2021501409.tif 000007
【図６】
2021501409.tif 000008
【図７】
2021501409.tif 000009
【手続補正書】
【提出日】令和2年7月1日(2020.7.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチスレッドプロセッサのプロセッサコアによって共有されているリソース内のウェーブのリソース割り当てを、前記プロセッサコアで実行されているウェーブと同時に測定することと、
前記マルチスレッドプロセッサにおいて、前記リソース割り当てを時間間隔に亘って平均化することと、
前記マルチスレッドプロセッサにおいて、前記リソース割り当ての平均に基づいていくつかのウェーブを生成することと、前記マルチスレッドプロセッサで実行するために前記生成されたウェーブをディスパッチすることと、を含む、
方法。
【請求項２】
前記ウェーブのリソース割り当てを測定することは、前記ウェーブの生成、前記ウェーブへのリソース割り当て、前記ウェーブからのリソース割り当て解除のうち少なくとも１つに対応する時間で、又は、所定の実行サイクル数に対応する時間間隔で、前記ウェーブのリソース割り当てを測定することを含む、
請求項１の方法。
【請求項３】
前記リソース割り当てを測定することは、前記ウェーブが前記プロセッサコアで実行されている間に、前記ウェーブの最大リソース割り当てを測定することを含む、
請求項１の方法。
【請求項４】
前記リソース内のウェーブのリソース割り当てを測定することは、基準時間に対するトレーリング期間の間に前記リソース内のウェーブのリソース割り当てを測定することを含む、
請求項１の方法。
【請求項５】
前記リソース割り当てを時間間隔に亘って平均化することは、前記トレーリング期間に亘って前記リソース割り当ての移動平均を生成することを含む、
請求項１〜４の何れかの方法。
【請求項６】
前記いくつかのウェーブを生成することは、前記トレーリング期間に亘る前記リソース割り当ての移動平均に基づいて、前記基準時間後の前記いくつかのウェーブを生成することを含む、
請求項５の方法。
【請求項７】
以前のトレーリング期間における以前の移動平均に対する前記移動平均の変化に応じて、実行のためにディスパッチされるウェーブの数を変更することをさらに含む、
請求項６の方法。
【請求項８】
前記リソース割り当てを平均化することは、前記ウェーブの複数のサブセットに対する複数のリソース割り当ての平均を生成することを含み、
前記いくつかのウェーブを生成することは、前記複数のリソース割り当ての平均に基づいて決定された数のウェーブを生成することを含む、
請求項１の方法。
【請求項９】
複数のプロセッサコアと、
前記複数のプロセッサコアによって実行されるいくつかのウェーブを生成するように構成されたコントローラであって、前記生成されるウェーブの数は、前記複数のプロセッサコアで実行されているウェーブによって共有されるリソース内のウェーブの測定されたリソース割り当ての平均値を使用して決定される、コントローラと、を備える、
処理システム。
【請求項１０】
前記ウェーブのリソース割り当ては、前記ウェーブの生成、前記ウェーブへのリソース割り当て、前記ウェーブからのリソース割り当て解除のうち少なくとも１つに対応する時間で、又は、所定の実行サイクル数に対応する時間間隔で測定される、
請求項９の処理システム。
【請求項１１】
前記測定されたリソース割り当ては、前記ウェーブが前記複数のプロセッサコアで実行されている間に測定された前記ウェーブの最大リソース割り当てである、
請求項９の処理システム。
【請求項１２】
前記ウェーブのリソース割り当ては、基準時間に対するトレーリング期間の間に測定される、
請求項９の処理システム。
【請求項１３】
前記コントローラは、前記トレーリング期間に亘る前記測定されたリソース割り当ての移動平均に基づいて、前記基準時間後の前記いくつかのウェーブを生成するように構成されている、
請求項９〜１２の何れかの処理システム。
【請求項１４】
前記コントローラは、以前のトレーリング期間に亘る以前の移動平均に対する前記移動平均の変化に応じて、実行のためにディスパッチされるウェーブの数を変更するように構成されている、
請求項１３の処理システム。
【請求項１５】
前記測定されたリソース割り当ての平均値は、前記ウェーブの複数のサブセットに対する測定されたリソース割り当ての複数の平均値を含み、
前記コントローラは、前記測定されたリソース割り当ての複数の平均値に基づいて決定された数のウェーブを生成するように構成されている、
請求項９の処理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
ブロック６１０において、マルチスレッド処理ユニットで実行されているウェーブのフットプリントの移動平均が決定される。共有リソースの個々のウェーブのフットプリントが測定され、測定されたフットプリントを用いて移動平均が計算される。例えば、移動平均は、基準時間に対するトレーリング期間に亘って実行されるフットプリントの測定値を使用して決定されてもよい。
【国際調査報告】
2021501409.tif 000010
2021501409.tif 000011