(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-10
(54)【発明の名称】グラフィックスプロセッサのための論理スロットからハードウェアスロットへのマッピング
(51)【国際特許分類】
G06F 9/50 20060101AFI20240903BHJP
G06F 9/46 20060101ALI20240903BHJP
G06F 9/38 20180101ALI20240903BHJP
G06F 12/084 20160101ALI20240903BHJP
G06F 12/0875 20160101ALI20240903BHJP
G06F 12/0891 20160101ALI20240903BHJP
【FI】
G06F9/50 150E
G06F9/46 420A
G06F9/38 370X
G06F12/084
G06F12/0875 106
G06F12/0891
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024506912
(86)(22)【出願日】2022-07-20
(85)【翻訳文提出日】2024-02-05
(86)【国際出願番号】 US2022037716
(87)【国際公開番号】W WO2023018529
(87)【国際公開日】2023-02-16
(32)【優先日】2021-08-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-08-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
【氏名又は名称原語表記】Apple Inc.
【住所又は居所原語表記】One Apple Park Way,Cupertino, California 95014, U.S.A.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】ハヴリル アンドリュー エム
(72)【発明者】
【氏名】フィッシュウィック スティーヴン
(72)【発明者】
【氏名】ゴットウォルト ディヴィッド エイ
(72)【発明者】
【氏名】バウマン ベンジャミン
(72)【発明者】
【氏名】テイラー ラルフ シー
(72)【発明者】
【氏名】ベレス メリッサ エル
(72)【発明者】
【氏名】ワイルダー ムラデン
(72)【発明者】
【氏名】ラバーニ ランクーヒー アリ
(72)【発明者】
【氏名】マクギャリー ファーガス ダブリュ
【テーマコード(参考)】
5B013
5B205
【Fターム(参考)】
5B013DD05
5B205KK22
5B205MM03
(57)【要約】
開示される技術は、グラフィックスプロセッサにおけるワーク分散に関する。いくつかの実施形態では、装置は、複数の論理スロットと、各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットとを実装する回路を含む。回路は、グラフィックスワークの第1及び第2のセットのための異なる分散規則を決定し、分散規則に基づいて論理スロットを分散ハードウェアスロットにマッピングすることができる。様々な実施形態では、開示される技術は、有利には、様々なサイズのグラフィックスキックのための分散シェーダプロセッサにわたってワークを効率的に分散させることができる。
【特許請求の範囲】
【請求項1】
装置であって、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを、第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上に分散させる、ように構成された制御回路と、を備える装置。
【請求項2】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項3】
所与のグループの前記サブユニットは、同じ物理的ダイ上に実装される、請求項2に記載の装置。
【請求項4】
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項5】
前記制御回路は、グラフィックスワークの前記第1及び第2のセット内のワーク量に基づいて、前記第1及び第2の分散規則を選択するように構成される、請求項1に記載の装置。
【請求項6】
グラフィックスワークの前記第1のセットは、前記第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、前記計算キックは、少なくとも1つの他のカーネルを含み、前記装置は、前記少なくとも1つの他のカーネルに対して前記第1のカーネルとは異なる分散規則を選択するように構成される、請求項1に記載の装置。
【請求項7】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、前記第1の分散規則を決定するように構成される、請求項1に記載の装置。
【請求項8】
前記装置は、以下のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの前記第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの前記第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項7に記載の装置。
【請求項9】
前記グラフィックスプロセッササブユニットは、それぞれの
フラグメント生成回路と、
シェーダコア回路と、
データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路と、
ジオメトリ処理回路と、
分散ワーク負荷分散回路と、を含む、請求項1に記載の装置。
【請求項10】
前記分散ハードウェアスロットは、それぞれの
構成レジスタと、
バッチ待ち行列回路と、
バッチ反復回路と、を含み、
サブユニット内のシェーダ回路は、その複数の分散ハードウェアスロットからワークを受信して実行するように構成される、請求項1に記載の装置。
【請求項11】
論理スロットのための制御回路は、
第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサと、
計算ワークグループのバッチを生成するように構成されたカーネルプロセッサと、
計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を含み、
前記制御回路は、
示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路と、
割り当てられたサブユニットへの分散のために、異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路と、を含む、請求項1に記載の装置。
【請求項12】
前記ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成され、異なるハードウェアスロットの前記状態は、少なくとも、無効、実行中、空、及びフラッシュを含む、請求項11に記載の装置。
【請求項13】
前記装置は、
カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、
1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットのための全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作と、を実行するように構成される、請求項1に記載の装置。
【請求項14】
前記制御回路は、
複数の論理スロットのスロットのためのそれぞれの保持値であって、保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、を実行するように更に構成される、請求項1に記載の装置。
【請求項15】
前記制御回路は、
前記第1の論理スロットのための構成レジスタのプログラミングの完了の前に、グラフィックスワークの前記第1のセットの部分を、グラフィックスワークの前記第1のセットに割り当てられた分散ハードウェアスロットであって、前記分散ハードウェアスロットは、グラフィックスワークの前記第1のセットの受信された部分のための待ち行列回路を含む、分散ハードウェアスロットに送信することを実行するように更に構成される、請求項1に記載の装置。
【請求項16】
設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、前記設計情報は、前記回路が、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを、第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上に分散させる、ように構成された制御回路と、を含む、非一時的コンピュータ可読記憶媒体。
【請求項17】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達された1つ以上のソフトウェアオーバーライドに基づいて前記第1の分散規則を決定するように構成され、前記回路は、以下のタイプのソフトウェアオーバーライド、すなわち
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
方法であって、
グラフィックスプロセッサの制御回路によって、グラフィックスワークの第1及び第2のセットを、複数の論理スロットを実装する回路の第1及び第2の論理スロットに割り当てることと、
前記制御回路によって、各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセット内の全てのグラフィックスプロセッササブユニットに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定することと、
前記制御回路によって、前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定することと、
前記制御回路によって、前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定することと、
前記制御回路によって、前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定することと、
前記制御回路によって、前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上に分散させることと、を含む、方法。
【請求項20】
前記複数の論理スロットのスロットに対するそれぞれの保持値であって、前記保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、
を更に含む、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してグラフィックスプロセッサに関し、より詳細には、複数の複製された処理要素を有するグラフィックスプロセッサにおいてグラフィックスワークを分散させるための技術に関する。
【背景技術】
【0002】
増大する計算能力を考慮すると、グラフィックスプロセッシングユニット(GPU)は、現在、大規模なワーク負荷のために広く使用されている。ワーク負荷は、例えば、頂点シェーダ、フラグメントシェーダ、及び計算タスクを含み得る。Metal及びOpenCLなどのAPIは、ソフトウェア開発者に、それらのアプリケーションのためにGPUの計算能力にアクセスするためのインタフェースを与える。近年、ソフトウェア開発者は、アプリケーションのかなりの部分をGPUの使用に移している。
【0003】
プロセス技術が縮小し、GPUがより強力になるにつれて、それらは多数のシェーダコアを含むことができる。ソフトウェア又はファームウェアは、「キック」と呼ばれる、実行されるべきワーク単位を提供することができる。データマスタ回路(例えば、計算データマスタ、頂点データマスタ、及びピクセルデータマスタ)は、例えば、通信ファブリックを介して、これらのキックからのワークを複数の複製されたシェーダコアに分散させることができる。シェーダの数がスケーリングするにつれて、ワーク分散及びスケジューリング技術は、性能及び電力消費に実質的に影響を及ぼし得る。
【図面の簡単な説明】
【0004】
【
図1A】いくつかの実施形態による、例示的なグラフィックス処理動作の概要を示す図である。
【0005】
【
図1B】いくつかの実施形態による、例示的なグラフィックスユニットを示すブロック図である。
【0006】
【
図2】いくつかの実施形態による、論理スロットを分散ハードウェアスロットにマッピングするように構成された例示的な一次制御回路を示すブロック図である。
【0007】
【
図3】いくつかの実施形態による、一次制御回路とGPUハードウェアサブユニットの例示的なグループとを示すブロック図である。
【0008】
【
図4】いくつかの実施形態による、論理スロットを分散ハードウェアスロットにマッピングするための3つの例示的な分散モードを示す図である。
【0009】
【
図5】いくつかの実施形態による、異なる分散モードを使用する分散ハードウェアへの複数の論理スロットの例示的なマッピングを示す図である。
【0010】
【
図6】いくつかの実施形態による、一次制御回路の詳細な例示的要素を示すブロック図である。
【0011】
【
図7】いくつかの実施形態による、例示的な分散スロット状態及びカーネル常駐情報を示す図である。
【0012】
【
図8】いくつかの実施形態による、論理スロットを分散mGPUハードウェアスロットにマッピングするための例示的な方法を示すフロー図である。
【0013】
【
図9】いくつかの実施形態による、例示的なソフトウェアオーバーライドフィールドを示す図である。
【0014】
【
図10A】いくつかの実施形態による、異なる例示的な分散モードのハードウェアスロット状態に基づいてハードウェアスロットを選択するための例示的な技術を示すフロー図である。
【
図10B】いくつかの実施形態による、異なる例示的な分散モードのハードウェアスロット状態に基づいてハードウェアスロットを選択するための例示的な技術を示すフロー図である。
【
図10C】いくつかの実施形態による、異なる例示的な分散モードのハードウェアスロット状態に基づいてハードウェアスロットを選択するための例示的な技術を示すフロー図である。
【0015】
【
図11A】いくつかの実施形態による、例示的な論理スロット保持ステータス値を示す図である。
【0016】
【
図11B】いくつかの実施形態による、ハードウェアスロットを再利用するための例示的な技術を示すフロー図である。
【0017】
【
図12】いくつかの実施形態による、例示的なソフトウェア制御ハードウェアスロット保持手順を示すフロー図である。
【0018】
【
図13】いくつかの実施形態による、より高い優先度の論理スロットのためのmGPU内の例示的な予約済みハードウェアスロットを示す図である。
【0019】
【
図14A】いくつかの実施形態による、無条件フィールドをエンコードする例示的なキャッシュフラッシュ無効化コマンドを示す。
【
図14B】いくつかの実施形態による、例示的なフラッシュ制御回路を示す。
【0020】
【
図15】いくつかの実施形態による、グラフィックスワークのセットによって示される例示的なアフィニティマップを示すブロック図である。
【0021】
【
図16】いくつかの実施形態による、アフィニティベースのスケジューリングのための例示的なカーネルウォーカ回路を示すブロック図である。
【0022】
【
図17】いくつかの実施形態による、ソフトウェア指示アフィニティに基づくカーネルの例示的な反復を示す図である。
【0023】
【
図18】いくつかの実施形態による、例示的なワークシェア制御回路を示すブロック図である。
【0024】
【
図19A】いくつかの実施形態による、依存関係追跡及びステータス回路を伴う例示的な論理スロットマネージャを示すブロック図であり、
【
図19B】例示的な追跡及びステータスフィールドを示す。
【0025】
【
図20】いくつかの実施形態による、キックスロットマネージャのための例示的なレジスタプリフェッチバッファを示す図である。
【0026】
【
図21】いくつかの実施形態による、キックスロットマネージャによって処理される上部スロットのための例示的なステートマシンを示す図である。
【0027】
【
図22】いくつかの実施形態による、例示的な方法を示すフロー図である。
【
図23】いくつかの実施形態による、例示的な方法を示すフロー図である。
【
図24】いくつかの実施形態による、例示的な方法を示すフロー図である。
【
図25】いくつかの実施形態による、例示的な方法を示すフロー図である。
【0028】
【
図26】いくつかの実施形態による、例示的な計算デバイスを示すブロック図である。
【0029】
【
図27】いくつかの実施形態による、開示されるシステム及びデバイスの例示的な用途を示す図である。
【0030】
【
図28】いくつかの実施形態による、回路設計情報を記憶する例示的なコンピュータ可読媒体を示すブロック図である。
【発明を実施するための形態】
【0031】
本開示は、論理キックスロット及び論理キックスロットから分散ハードウェアへのワークの分散に関する様々な技術を対象とする。
図1A-1Bは、グラフィックスプロセッサの概要を提供する。
図2~
図8は、グラフィックス処理のために論理スロットを分散ハードウェアスロットにマッピングする技術の概要を提供する。
図9は、マッピングに影響を及ぼし得る例示的なソフトウェアオーバーライドを示す。
図10~
図14は、論理スロットマッピングのコンテキストにおいて、分散モードを実施し、ハードウェアスロットを再利用し、ハードウェアスロットを保持し、論理スロット優先度を提供し、キャッシュフラッシュ動作を処理するための例示的な技術を示す。
図15~
図18は、アフィニティベースのスケジューリングのための例示的な技術を示す。
図19~
図21は、ソフトウェアとインタフェースし、論理スロットを構成するキックスロットマネージャを示す。残りの図は、例示的な方法、システム、アプリケーションなどを示す。様々な実施形態では、開示される技術は、以下で詳細に説明するように、従来の技術に対して、グラフィックスプロセッサの性能を有利に改善するか、又は電力消費を低減することができる。
グラフィックス処理の概要
【0032】
図1Aを参照すると、グラフィックスデータを処理するための例示的な処理フロー100を説明するフロー図が示されている。いくつかの実施形態では、変換及び照明手順110は、規定された光源ロケーション、反射率などに基づいて、アプリケーションから受信した頂点の照明情報を処理すること、頂点をポリゴン(例えば、三角形)に組み立てること、及びポリゴンを、三次元空間内のポジションに基づいた正しいサイズ及び向きに変換することを伴い得る。クリップ手順115は、閲覧可能領域の外側にあるポリゴン又は頂点を廃棄することを伴い得る。ラスタ化手順120は、各ポリゴン内にフラグメントを規定し、例えば、ポリゴンの頂点のテクスチャ座標に基づいて、各フラグメントに対して初期色値を割り当てることを伴い得る。フラグメントは、フラグメントが重なり合う画素の属性を指定することができるが、実際の画素属性は、(例えば、フレームバッファ内の)複数のフラグメントを組み合わせること、1つ以上のフラグメントを無視すること(例えば、フラグメントが他のオブジェクトによって覆われている場合)、又はその両方に基づいて決定されてもよい。シェーディング手順130は、照明、影、バンプマッピング、透光性などに基づいてピクセル構成要素を変更することを伴い得る。シェーディングされたピクセルは、フレームバッファ135内でアセンブルされ得る。最新のGPUは、典型的には、アプリケーション開発者によるシェーディング及び他の処理手順のカスタマイズを可能にするプログラム可能なシェーダを含む。したがって、様々な実施形態において、
図1Aの例示的な要素は、様々な順序で実行されてもよいし、並行して実行されてもよいし、省略されてもよい。追加の処理手順もまた実施されてもよい。
【0033】
ここで
図1Bを参照すると、いくつかの実施形態による、グラフィックスユニット150を示す簡略ブロック図が示されている。図示した実施形態では、グラフィックスユニット150は、プログラム可能なシェーダ160、頂点パイプ185、フラグメントパイプ175、テクスチャ処理ユニット(TPU)165、画像書き込みユニット170、及びメモリインタフェース180を含む。いくつかの実施形態では、グラフィックスユニット150は、複数の実行パイプライン又はインスタンスを用いてグラフィックスデータを並行して処理するように構成され得る、プログラム可能なシェーダ160を用いて、頂点データ及びフラグメントデータの両方を処理するように構成される。
【0034】
図示する実施形態において、頂点パイプ185は、頂点データを処理するように構成された様々な固定機能ハードウェアを含み得る。頂点パイプ185は、頂点処理を調整するために、プログラム可能なシェーダ160と通信するように構成されてもよい。図示した実施形態では、頂点パイプ185は、更なる処理のために、処理されたデータを、フラグメントパイプ175又はプログラム可能なシェーダ160に送信するように構成されている。
【0035】
図示する実施形態において、フラグメントパイプ175は、画素データを処理するように構成された様々な固定機能ハードウェアを含み得る。フラグメントパイプ175は、フラグメント処理を調整するために、プログラム可能なシェーダ160と通信するように構成されてもよい。フラグメントパイプ175は、頂点パイプ185又はプログラム可能なシェーダ160からのポリゴンにラスタ化を実行して、フラグメントデータを生成するように構成されてもよい。頂点パイプ185及びフラグメントパイプ175は、グラフィックスデータにアクセスするために、メモリインタフェース180に連結されてもよい(連結は図示されていない)。
【0036】
図示する実施形態において、プログラム可能なシェーダ160は、頂点パイプ185から頂点データを受信し、フラグメントパイプ175及びTPU165からフラグメントデータを受信するように構成されている。プログラム可能なシェーダ160は、頂点データの様々な変換及び調整を含み得る、頂点データに対する頂点処理タスクを実行するように構成されてもよい。図示した実施形態におけるプログラム可能なシェーダ160は、また、例えば、テクスチャリング及びシェーディングなどの画素データに対するフラグメント処理タスクを実行するように構成される。プログラム可能なシェーダ160は、データを並行して処理するために複数の実行パイプラインの複数のセットを含んでもよい。
【0037】
いくつかの実施形態では、プログラム可能なシェーダは、1つ以上の異なるSIMDグループを並列に実行するように構成されたパイプラインを含む。各パイプラインは、フェッチ、デコード、発行、実行など、所与のクロックサイクルにおいて動作を実行するように構成された様々なステージを含んでもよい。プロセッサ「パイプライン」の概念はよく理解されており、プロセッサが命令に対して実行する「ワーク」を複数のステージに分割する概念を指す。いくつかの実施形態では、命令デコード、ディスパッチ、実行(すなわち、パフォーマンス)、及びリタイアメントは、異なるパイプラインステージの例であってもよい。要素/部分の順序を変えることで、多くの異なるパイプラインアーキテクチャが可能である。様々なパイプラインステージが、1つ以上のプロセッサクロックサイクル中に命令に対してそのような工程を実行し、次いで、命令又は命令に関連する動作を、更なる処理のために他のステージに渡す。
【0038】
「SIMDグループ」という用語は、そのよく理解されている意味に従って解釈されることが意図されており、処理ハードウェアが、異なるスレッドのための異なる入力データを使用して同じ命令を並列に処理するスレッドのセットを含む。様々なタイプのコンピュータプロセッサは、SIMD命令を実行するように構成されたパイプラインのセットを含み得る。例えば、グラフィックスプロセッサは、しばしば、関係するスレッドのセットのための命令をSIMD方式で実行するように構成されたプログラム可能なシェーダコアを含む。SIMDグループのために使用され得る名前の他の例は、ウェーブフロント、クリーク、又はワープを含む。SIMDグループは、コンピュータの並列処理能力に基づいていくつかのSIMDグループに分割され得る、より大きいスレッドグループの一部であり得る。いくつかの実施形態では、各スレッドは、そのスレッドのオペランドをフェッチし、スレッドのセットの他のパイプラインと並行して指定された動作を実行するハードウェアパイプラインに割り当てられる。プロセッサは、複数の別個のSIMDグループも並列に実行することができるように、多数のパイプラインを有することができることに留意されたい。いくつかの実施形態では、各スレッドは、例えばレジスタファイル内にプライベートオペランドストレージを有する。したがって、レジスタファイルからの特定のレジスタの読み出しは、SIMDグループ内の各スレッドに対するレジスタのバージョンを提供することができる。
【0039】
いくつかの実施形態では、複数のプログラム可能なシェーダユニット160がGPUに含まれる。これらの実施形態では、グローバル制御回路は、GPUの異なるサブ部分にワークを割り当てることができ、次に、シェーダパイプラインによって処理されるシェーダコアにワークを割り当てることができる。
【0040】
図示する実施形態において、TPU165は、プログラム可能なシェーダ160からのフラグメント処理タスクをスケジュールするように構成されている。いくつかの実施形態では、TPU165は、テクスチャデータを事前にフェッチし、(例えば、メモリインタフェース180を介して)プログラム可能なシェーダ160による更なる処理のために初期の色をフラグメントに割り当てるように構成される。TPU165は、例えば、正規化された整数形式又は浮動小数点形式のフラグメント構成要素を提供するように構成されてもよい。いくつかの実施形態では、TPU165は、プログラム可能なシェーダ160内の4つの実行パイプラインのグループによって処理されるように2×2フォーマットの4つのグループ(「フラグメントクワッド」)のフラグメントを提供するように構成される。
【0041】
いくつかの実施形態では、画像書き込みユニット(IWU)170は、画像の処理済みタイルを記憶するように構成され、レンダリングされた画像に対して、表示のために又は記憶のためのメモリに転送される前に動作を実行することができる。いくつかの実施形態では、グラフィックスユニット150は、タイルベースの遅延レンダリング(TBDR)を実行するように構成される。タイルベースのレンダリングでは、スクリーン空間の異なる部分(例えば、画素の正方形又は矩形)を、別々に処理することができる。メモリインタフェース180は、様々な実施形態において、様々なメモリ階層のうちの1つ以上との通信を容易にすることができる。
【0042】
上述したように、グラフィックスプロセッサは、通常、コンピューティングシステムによって要求される特定のグラフィックス処理動作を実行するように構成された専用回路を含む。これは、例えば、固定関数頂点処理回路、ピクセル処理回路、又はテクスチャサンプリング回路を含み得る。グラフィックスプロセッサはまた、GPUシェーダコアを使用し得るが、固定機能グラフィックスハードウェアを使用し得ない非グラフィックス計算タスクを実行し得る。一例として、機械学習ワーク負荷(推論、訓練、又は両方を含み得る)は、それらの並列処理能力のために、GPUに割り当てられることが多い。したがって、GPUによって実行される計算カーネルは、GPUシェーダによって実行されるべき機械学習モデルのニューラルネットワーク層又は他の態様を実装するなど、機械学習タスクを指定するプログラム命令を含み得る。いくつかのシナリオでは、非グラフィックスワーク負荷はまた、例えば、元々意図されたものとは異なる目的のために、専用グラフィックス回路を利用し得る。
【0043】
更に、グラフィックスプロセッサを参照して本明細書で説明される様々な回路及び技術は、他の実施形態では他のタイプのプロセッサにおいて実装され得る。他のタイプのプロセッサは、CPUなどの汎用プロセッサ、又は専用並列処理能力を有する機械学習もしくは人工知能アクセラレータを含んでもよい。これらの他のタイプのプロセッサは、グラフィックス命令を実行するように、又はグラフィックス動作を実行するように構成されなくてもよい。例えば、他のタイプのプロセッサは、典型的なGPUに含まれる固定機能ハードウェアを含まなくてもよい。機械学習アクセラレータは、ニューラルネットワーク層又は機械学習モデルの他の態様を実装することなど、いくつかの動作のための専用ハードウェアを含み得る。概して言えば、メモリ要件、計算能力、電力消費、及び機械学習アクセラレータのプログラム可能性の間には設計上のトレードオフが存在し得る。したがって、異なる実装は、異なる性能目標に焦点を合わせることができる。開発者は、所与の機械学習アプリケーションのための複数の潜在的なハードウェアターゲットの中から、例えば、汎用プロセッサ、GPU、及び異なる特殊機械学習アクセラレータの中から選択することができる。
ワーク分散及び論理スロットの概要
【0044】
図2は、いくつかの実施形態による、例示的な一次制御回路及びグラフィックスプロセッササブユニットを示すブロック図である。図示の実施形態では、グラフィックスプロセッサは、一次210及びサブユニット220A~220Nを含む。
【0045】
一次制御回路210は、例えば、計算データマスタ、頂点データマスタ、又はピクセルデータマスタであってもよい。したがって、いくつかの実施形態では、グラフィックスプロセッサは、同じセットのサブユニットに異なるタイプのワークを送信する一次制御回路210の複数のインスタンスを含む。一次制御回路210は、インタフェースを介して、ソフトウェア、ファームウェア、又は両方からキックを受信してもよい。本明細書で使用される場合、「ソフトウェア」という用語は、実行可能プログラム命令を広く指し、例えば、ファームウェア、オペレーティングシステム、及びサードパーティアプリケーションを包含する。したがって、本明細書におけるソフトウェアへの様々な言及は、代替的に又は追加的にファームウェアに適用され得ることを理解されたい。一次制御回路210は、図示の実施形態では、論理スロットから分散ハードウェアスロットへのマッピング制御回路215を含む。制御回路215は、(例えば、
図4を参照して以下で議論される異なる分散モードに従って)論理スロット(「キックスロット」と称され得る)からグラフィックスプロセッサの全部又は一部上の分散ハードウェアスロットにワークを分散させてもよい。
【0046】
様々な回路が、論理スロットを制御するものとして本明細書で説明される。「論理」という用語は、論理スロットへのワークの割り当てが、割り当てられたワークのグラフィックス命令をどのハードウェアが実際に実行するかを暗示しないことを意味する。制御回路は、論理スロットに関する情報を維持し、実際の実行のために論理スロットからのワークをハードウェアスロットに割り当てるハードウェアを含むことができる。したがって、論理スロットへの最初の割り当て時に、ワークのセットを実行するハードウェアスロットは知られていない。以下で詳細に説明するように、論理スロットは、特に複数のシェーダコアを有するグラフィックスプロセッサにおいて、グラフィックスワークをスケジューリングするとき、性能及び電力消費の点で様々な利点を提供し得る。
【0047】
グラフィックスデータのフレームをレンダリングするために、複数の「キック」が実行され得る。いくつかの実施形態では、キックは、実行されるべき複数のスレッドを含み得る(及びシェーダによって実行されない他のタイプのグラフィックスワークを潜在的に含み得る)単一のコンテキストからのワークの単位である。キックは、(スレッド自体によって指定される以外)のスレッド間のメモリ同期、スレッド間の同時性、又はスレッド間の起動順序に関するいかなる保証も提供しない場合がある。いくつかの実施形態では、キックは、別のキックの結果に依存するものとして識別されてもよく、これは、ハードウェアメモリコヒーレンシのサポートを必要とせずにメモリ同期を可能にし得る。通常、グラフィックスファームウェア又はハードウェアプログラムは、処理のためにワークをパイプライン(複数可)に送信する前に、各キックのための構成レジスタを設定する。多くの場合、キックが開始されると、キックが終了するまで(その時点で結果が階層内の別のレベルに書き込まれ得る)、あるレベルを超えてメモリ階層にアクセスしない。所与のキックについての情報は、対応するグラフィックス動作を完了するために必要とされる、状態情報、実行すべきシェーダプログラム(複数可)のロケーション、バッファ情報、テクスチャデータのロケーション、利用可能なアドレス空間などを含み得る。グラフィックスファームウェア又はハードウェアは、キックをスケジュールし、例えば、キックが完了したときに割り込みを検出することができる。いくつかの実施形態では、グラフィックスユニットの部分は、一度に単一のキックに作用するように構成される。本明細書で詳細に説明するように、追跡スロット(「トップスロット」とも呼ばれる)及び論理キックスロットは、シェーダハードウェアにキックを割り当てる前にキックを制御するために使用され得る。キックは、プロシージャルジオメトリを描画するコマンド、シャドウサンプリング方法を設定するコマンド、メッシュを描画するコマンド、テクスチャを取得するコマンド、生成計算を実行するコマンドなどを含むことができる1つ以上のレンダリングコマンドのセットを含むことができる。キックは、フレームのレンダリング中に様々な段階のうちの1つで実行することができる。レンダリング段階の例は、カメラレンダリング、光レンダリング、投影、テクスチャリング、フラグメントシェーディングなどを含むが、これらに限定されない。キックは、例えば、計算ワーク、頂点ワーク、又はピクセルワークのためにスケジュールされ得る。
【0048】
サブユニット220は、いくつかの実施形態では、GPUの処理能力を高めるために複製され得るスケーリングユニットである。各GPUサブユニット220は、グラフィックスプログラムの命令を独立して処理することが可能であり得る。サブユニット220は、図示の実施形態では、それぞれの分散ハードウェアスロット230を実装する回路を含む。これらのハードウェアスロットは、本明細書では「dSlot」と呼ばれることもある。各サブユニットは、複数のハードウェアスロット230を含むことができる。サブユニットは、本明細書では「mGPU」と呼ばれることもある。いくつかの実施形態では、一次制御回路210は、論理スロットからのワークを各サブユニット220内の多くても1つの分散ハードウェアスロットに割り当てる。いくつかの実施形態では、各サブユニットは、フラグメント生成回路と、シェーダプログラムを実行するように構成されたシェーダコア回路と、メモリシステム回路(1つ以上のキャッシュ及びメモリ管理ユニットを含み得る)と、ジオメトリ処理回路と、分散ワーク負荷分散回路(一次制御回路210と協調してワークをシェーダパイプラインに分散させ得る)とを含む。
【0049】
各分散ハードウェアスロットは、割り当てられたキック又はその一部を処理するように構成された様々な回路を含むことができ、構成レジスタ、ワーク待ち行列、待ち行列内のワークを反復するように構成された回路(例えば、計算ワーク項目のバッチ)、コンテキストロード/ストアを順序付ける回路、及びワーク分散追跡回路を含む。各サブユニット220は、サブユニット中の分散スロットからワークを受け入れ、パイプラインを使用してワークを実行する複数のシェーダを含み得る。例えば、各シェーダは、各分散ハードウェアスロットのための待ち行列を含むことができ、ワーク優先度に基づいて待ち行列の中からワークを選択することができる。
【0050】
いくつかの実施形態では、所与のサブユニット220は、
図1の複数のプログラム可能なシェーダ160を含む。
【0051】
以下で詳細に説明するように、論理スロットから分散ハードウェアスロットへのマッピング制御回路215は、様々なパラメータ、ソフトウェア制御入力などに基づいて、サブユニット220にわたってキックを分散させることができる。
【0052】
図3は、いくつかの実施形態による、一次制御回路及びグループ化されたプロセッササブユニットのより詳細な例を示すブロック図である。図示の実施形態では、一次制御回路210は、キックスロットマネージャ(KSM)350と通信し、構成レジスタ312を含む。これらの構成レジスタは、セットアップレジスタ及び実行レジスタの両方を含み得る。セットアップフェーズレジスタは、キックを実行するために使用される分散ハードウェアに依存しないグローバル構造であり得るが、実行レジスタはサブユニット構造ごとであり得る。一般に、一次制御回路210内に示されているが、構成レジスタは、種々の適切な回路内(例えば、分散制御回路340内)に含まれてもよく、異なるスコープを有してもよい(例えば、いくつかのレジスタはブートスコープされてもよく、いくつかは論理スロットに関連付けられてもよく、いくつかは分散スロットに関連付けられてもよい)。いくつかの構成レジスタは共有されてもよく、グローバルレジスタ回路及びサブユニットごとのレジスタ回路の両方に同じ値を設定してもよい。構成レジスタデータは、定義されたフォーマットでメモリに記憶され、取り出され、アンパックされて、所与のキックのための物理構成レジスタをポピュレートすることができる。
【0053】
図示の実施形態では、mGPU320A~320Nはグループ化され、一次制御回路210は複数のそのようなグループと通信する。mGPUはサブユニット220の一例である。mGPU305の各グループは、図示の実施形態では、キャッシュ360を共有する。これは、例えば、各mGPU320がレベル1キャッシュを維持する実施形態では、レベル2キャッシュであり得る。この共有キャッシュは、命令、データ、又はその両方を記憶するために使用され得る。以下で詳細に説明するように、同じグループ305に対するデータアフィニティ特性を用いたスケジューリングワークは、キャッシュ効率にとって有益であり得る。いくつかの実施形態では、mGPU305の各グループは、例えば、マルチダイ実装において、同じダイ又は半導体基板上に実装される。
【0054】
各mGPU320は、図示の実施形態では、一次制御回路210からワークを受信し、mGPU内でワークを割り当て、(例えば、通信ファブリックを介して)ワーク完了を一次制御回路210に報告し得る分散制御回路を含む。ワークを割り当てる信号は、実行する実際の命令又は操作されるデータを含まなくてもよいが、実行されるプログラム命令のロケーションを識別してもよい。
【0055】
キックスロットマネージャ350は、図示の実施形態では、ソフトウェア/ファームウェアインタフェースからキックを受信し、論理スロットへの割り当てのためにキックを一次制御回路210に通信するように構成される。キックスロットマネージャ350と制御回路との間の例示的な通信は、
図6を参照して以下で詳細に説明され、キックスロットマネージャ350の詳細な例示的実施形態は、
図19を参照して以下で説明される。
【0056】
以下で詳細に説明される
図4及び
図5は、いくつかの実施形態による、論理スロットからワークを分散させるために制御回路215の実施形態によって実装される技術の例を提供する。
【0057】
図4は、いくつかの実施形態による、3つの例示的な分散モードを示す図である。一般的に、分散モードは分散の幅を示す。図示の例では、各mGPUは、3つの分散ハードウェアスロット(DS0~DS2)を実装し、2つのグループ(グループ0及びグループ1)は各々、2つのmGPU(mGPU0及びmGPU1)を含む。mGPUごとの様々な数のハードウェアスロット、グループごとのmGPU、及びグラフィックスプロセッサごとのグループが、様々な実施形態において実装され得ることに留意されたい。異なる特定の例示的な数の要素を有する実施形態が、説明の目的のために本明細書で論じられるが、これらの例は、本開示の範囲を限定することを意図するものではない。
【0058】
上記で説明したように、3つの例示的なモード全てにおいて、論理スロットは、所与のmGPUの多くても1つのハードウェアスロットを占有することができる。論理スロットからのワークが分散されるハードウェアスロットは、
図4において斜線を用いて示されている。更に、制御回路215は、特定の状況において論理対ハードウェアスロットマッピングを動的に調整することができることに留意されたい。論理スロットは、ハードウェアスロットが割り当てられているmGPU内の分散制御回路にワークを分散させる。次いで、分散制御回路は、mGPU内のシェーダにワークを分散させることができる。
【0059】
モードAは、図示の例では、単一mGPU分散モードである。このモードでは、制御回路215は、論理スロットから単一のmGPU上の単一のハードウェアスロットにワークを割り当てる。
【0060】
モードBは、図示の例では、単一グループ分散モードである。このモードでは、制御回路215は、論理スロットから、mGPUのグループ(この例では、グループ0)内の各mGPU上のスロットにワークを割り当てる。
【0061】
モードCは、図示の例では、より大きなマルチグループ分散モードである。このモードでは、制御回路215は、論理スロットから、mGPUの複数のグループ(例えば、いくつかの実施形態では、グラフィックスプロセッサ上のあらゆるグループ)の各mGPU内のスロットにワークを割り当てる。
【0062】
制御回路215は、以下で詳細に説明される種々の考慮に基づいて、論理スロット(又は、例えば、カーネルのために、論理スロットに割り当てられるキックの一部)のための分散モードを決定してもよい。一般に、制御回路215は、一次制御回路が特定の時間に管理しているワーク量に基づいて、ワークのセットのサイズに基づいて、又はその両方に基づいて、分散モードを選択してもよい。更に、ソフトウェアオーバーライド機能は、ソフトウェア又はファームウェアがキックにおけるワークの分散を調整することを可能にし得る。更に、優先度、動的再マッピング、及び再利用技術は、論理からハードウェアスロットマッピングに影響を及ぼす可能性がある。
【0063】
制御回路215は、ハードウェアスロット割り当て及び割り当て解除をキックスロットマネージャ350に報告してもよく、それは、ソフトウェア又はファームウェアが、現在の論理スロットマッピング(例えば、分散モード、特定のマッピングなど)に関する情報をクエリすることを可能にし得る。
【0064】
なお説明の目的上、グループ/mGPU/ハードウェアスロットレベルの編成が含まれているが、本開示の範囲を限定することは意図していない。いくつかの実施形態では、「グループ」レベルの編成が省略されてもよく、これにより、単一mGPU又は複数mGPUの2つの分散モードのみがもたらされ得る。いくつかの実施形態では、追加の分散モード(例えば、単一mGPUモード及び単一グループモードに加えて、グループモードの単一グループ及びグループモードの複数グループをもたらし得るグループのグループ)に関連付けられ得る、追加のレベルの編成が実装され得る。
【0065】
図5は、いくつかの実施形態による、複数の論理スロットからの利用可能なハードウェアスロットの例示的な充填を示す図である。図示の実施例では、制御回路215は、複数の分散モードを使用して、9つの論理スロット510A~510Iを(4つのmGPUの4つのグループ内の)48個の分散スロットにマッピングする。
【0066】
図示の例では、回路215は、論理スロット510A、510D、510G、及び510Iに対して単一mGPU分散モードを使用する。例えば、論理スロット510Aは、グループ0のmGPU0内の単一の分散スロットDS0を受信する。
【0067】
回路215は、論理スロット510B、510E、及び510Hに対して単一グループ分散モードを使用する。例えば、論理スロット510Bは、グループ1の各mGPU上で分散スロットDS0を受信する。
【0068】
回路215は、論理スロット510C及び510Fに対して複数グループ分散モードを使用する。例えば、論理スロット510Cは、図示された各mGPU上の分散スロットを受信する。
【0069】
全てのハードウェアスロットが常に割り当てられるわけではないが、一般的に、利用可能なスロットを充填することは性能を向上させ得ることに留意されたい。論理スロットに割り当てられたキックが完了したとき、別のキックをその論理スロットに割り当てることができ、論理スロットを物理スロットに再マッピングすることができる。
例示的な制御回路
【0070】
図6は、いくつかの実施形態による、制御回路の詳細な例を示すブロック図である。図示の実施形態では、キックスロットマネージャはマッピング制御回路215と通信し、マッピング制御回路215は、図示の実施形態では、dSlotリソースアロケータ620、制御ストリームプロセッサ(CSP)630A~630N、カーネルプロセッサ640A~640N、mGPU割り当て回路650A~650N、及びキックスロットアービタ660を含む。いくつかの実施形態では、プロセッサによってサポートされる各論理スロットは、要素630、640、及び650の割り当てられたセットを有する。
図6の特定の詳細は計算ワークに関連するが、頂点シェーディング及びピクセルシェーディングなどの他のタイプのワークに同様の技術を使用することができることに留意されたい。
【0071】
キックスロットマネージャ350は、図示の実施形態では、キックを論理スロットに割り当て、キック情報を対応する制御ストリームプロセッサ630に送信する。制御ストリームプロセッサ630は、キックが処理を完了したときにキックスロットマネージャ350に通知することができる。
【0072】
制御ストリームプロセッサ630は、図示の実施形態では、それらのキックスロットの順序付けを管理し、キックのための制御ストリームをフェッチ及び実行し、キック完了を追跡する。制御ストリームプロセッサ630は、カーネル粒度で動作することができる(カーネルは、キックのために制御ストリームからフェッチされ得る)。制御ストリームプロセッサ630は、dSlotリソースアロケータ620と通信して、それらの論理スロットのためのdSlotリソースを取得することができる。制御ストリームプロセッサ630は、カーネルのための分散モードを決定し、それらの分散モード及び分散されたスロット割り当てを有するカーネルをカーネルプロセッサ640に送信するように構成される。
【0073】
dSlotリソースアロケータ620は、いくつかの実施形態では、複数の論理スロットから要求を受信し、dSlotをカーネルに割り当てる要求を処理するように構成された回路を含む。いくつかの実施形態では、dSlotリソースアロケータ620は、分散モードを選択し、キックの部分に(例えば、カーネル粒度で)dSlotを割り当てるが、他の粒度も考えられる。いくつかの実施形態では、dSlotリソースアロケータ620は、以下で更に詳細に説明するように、最初にキック優先度に基づいて論理スロットを割り当て、次にキックエージに基づいて割り当てる。例えば、DRA620は、閾値よりも大きい優先度レベルを有するキックからのカーネルのためにいくつかの分散スロットを予約し得る。
【0074】
カーネルプロセッサ640は、図示の実施形態では、一次計算データマスタに含まれる。カーネルプロセッサ640は、カーネルからワークグループのバッチを作成し、その分散モード及び分散スロット割り当てを有するバッチをmGPU割り当て回路650に送信するように構成される。カーネルプロセッサ640は、以下で詳細に説明するように、アフィニティ、負荷分散、又はその両方に基づいて、分散のためのバッチを選択することができる。カーネルプロセッサ640は、割り当てられたdSlotの指示と、どのmGPUがカーネルによってターゲットにされることを許可されるかを示すターゲットマスクとを受信することができる。
【0075】
本明細書で使用される場合、グラフィックスコンテキストにおける「計算カーネル」という用語は、グラフィックスプロセッサなどのアクセラレーションハードウェアのためにコンパイルされたルーチンを含む、そのよく理解されている意味に従って解釈されるように意図されている。カーネルは、例えば、OpenCL Cなどの別個のプログラム言語によって指定されてもよく、OpenGLなどのシェーディング言語で計算シェーダとして書かれてもよく、又は高レベル言語でアプリケーションコードに埋め込まれてもよい。計算カーネルは通常、いくつかのワークグループを含み、ワークグループはいくつかのワークアイテム(スレッドとも呼ばれる)を含む。計算カーネルに関して本明細書で説明する様々な技術は、頂点又はピクセル処理タスクなどの他のタイプのワークに適用され得ることに留意されたい。
【0076】
mGPU割り当て回路650は、図示の実施形態では、バッチを受信し、バッチをターゲットmGPUに送信する。回路650は、分散モードの関数であり得る許容可能なmGPUターゲットのマスクと共にバッチを受信してもよい。そのマスクを使用して、回路650は、負荷分散に基づいてmGPUターゲットを選択することができる。
【0077】
キックスロットアービタ660は、図示の実施形態では、宛先mGPUに送信するために利用可能なバッチの中から選択する。例えば、キックスロットアービタ660は、各サイクルでバッチを送信するために1つ以上の論理キックスロットを選択してもよい。選択されたバッチ(及び実行ステータスに関連付けられた戻り情報)は、通信ファブリックを介して送信され得る。ファブリックは、例えば、2021年1月26日に出願された「Shared Control Bus for Graphics Processors」という名称の米国特許出願公開第17/158,943号に記載されるような制御シグナリング専用であってもよい。
【0078】
図6の回路によって実行される様々な追加の機能は、例えば、動的マッピング、ソフトウェアオーバーライド、優先度、保持技術、再利用技術、キャッシュフラッシュ、及びアフィニティなどの特定の機能を説明するセクションにおいて、以下で詳細に説明される。
カーネルごとのマッピング技術
【0079】
いくつかの実施形態では、計算キックの実行中のカーネルごとのマッピングは、キック粒度では困難であろう動的割り当てを提供し得る(キックを実行する前に、キックがいくつの分散スロットを占有すべきかを決定することは困難であり得る)。上記で簡単に説明したように、制御ストリームプロセッサ630及びdSlotリソースアロケータ620は、これらの技術を容易にすることができる。
【0080】
図7は、いくつかの実施形態による、例示的な分散スロット状態及びカーネル常駐情報を示す図である。この情報は、動的マッピングを容易にすることができる。
【0081】
dslot_statusは、図示の例では、各dSlotについて維持され、dSlotが無効であるか、実行中であるか、空であるか、フラッシュしているか、又は保持されているかを示す。無効状態は、dSlotがどの論理スロットによっても所有されていないことを示す。実行中状態は、dSlotが論理スロットによって所有され、現在実行中であることを示す。空の状態は、dSlotが論理スロットによって所有され、実行が終了していることを示す。フラッシュ状態は、キャッシュフラッシュ(例えば、メモリ階層によるフラッシュ無効化)のプロセスにおけるように、dSlotが論理スロットによって所有されていることを示す。保持状態は、dSlotが論理スロットによって所有され、カーネルの完了後(例えば、カーネル終了キャッシュフラッシュ無効化後)に、例えば性能データを保存するために保持されていることを示す。これらの状態は説明のために含まれているが、他の実施形態では、他の状態が実装されてもよく、状態が省略されてもよく、又はその両方であってもよいことに留意されたい。
【0082】
dslot_owner状態は、図示の例では、各dSlotについて維持され、dSlotを所有する論理スロットを示す。どの論理スロットも無効なdSlotを所有していないので、このフィールドは無効状態に関連しない。
【0083】
per_kernel_residency状態は、図示の例では、各カーネル及び各mGPUについて維持され、カーネルがmGPUに割り当てられたかどうかを示す。計算ワークのためにカーネルごとに維持される様々な情報は、カーネルを利用しない他のタイプのワークのためのキック又はキックの部分について同様に維持され得ることに留意されたい。
【0084】
図8は、いくつかの実施形態による、キックのカーネルをマッピングするための例示的な方法を示すフロー図である。
【0085】
810において、図示の実施形態では、制御回路は、カーネル依存関係がクリアされ、キックに割り当てられた論理スロットがアイドルカーネルプロセッサを有するまで待機する。これにより、先行するカーネルは、キックのための次のカーネルを開始する前に反復を終了することができる。
【0086】
820において、図示の実施形態では、CSPは分散モードを決定し、分散モードを有する要求をDRA620に送信する。
【0087】
830において、DRA620は、分散スロット割り当てで応答する。例示的なDRAアービトレーションアルゴリズムは、以下で詳細に説明される。
【0088】
840において、図示の実施例では、一次制御回路は、いくつかの活動を行う。まず、カーネルに対してdSlotが割り当てられた全てのmGPUに、分散スロット開始メッセージを送信する。次に、どのdSlotが影響を受けているかを示すdSlotマスクを含むレジスタ書き込みコマンドをレジスタコピーユニットに送信する。レジスタコピーユニットは、カーネルのための分散スロットスコープ制御レジスタを書き込む。(レジスタコピーユニットは、キックのための論理スロットスコープ制御レジスタを既に書き込んでいてもよい)。最後に、一次制御回路は、指示されたmGPUにワークを送信する。ワークは、レジスタコピーユニットによる全てのレジスタ書き込みが完了するまでフェンスされ得ることに留意されたい。
【0089】
一次制御回路は、それが分散させる全てのカーネルの完了ステータスを追跡することもできる。例えば、カーネルが実行していたdSlotが全て実行中から空に移行したときを検出することができる。
ソフトウェアオーバーライド技術の例
【0090】
いくつかの実施形態では、ソフトウェアは、カーネルのデフォルトの分散モードをオーバーライドするための様々な指示を提供することができる。これにより、ソフトウェアは、例えば、重要なワークが単一のmGPUに割り当てられるリスクを冒すのではなく、重要なワークを並列化することができる。更に、これは、ソフトウェアがカーネルをmGPUの特定のグループに割り当てることを可能にし得る。
【0091】
図9は、例示的なソフトウェアオーバーライドフィールドを示す図である。ソフトウェア又はファームウェアは、これらのフィールドを調整してカーネル分散を制御することができる。mGPUマスクフィールドは、図示の実施形態では、どのmGPUがこのキックによって使用され得るかを示す。例えば、マスクは、mGPUごとにビットを含み得る。これは、ソフトウェアが、キックについて特定のmGPUを回避又はターゲットにすることを示すことを可能にし得る。分散モードフィールドは、ソフトウェアが分散モードを選択することを可能にする。デフォルト値は、論理スロットのための制御ストリームプロセッサ630が分散モードを選択することを可能にし得る。他の値は、制御ストリームプロセッサ630が選択したであろうモードにかかわらず(少なくともソフトウェアオーバーライドが有効にされる動作モードにおいて)、制御ストリームプロセッサ630によって実装され得る分散モードを指定し得る。デフォルトモードでは、mGPU割り当て回路650は、負荷分散に基づいて、CSPによって柔軟に選択された分散モードに従ってdSlotを選択することができ、他のモードでは、mGPU割り当て回路は、ソフトウェアオーバーライドによって指定された制限に従うことができる。
【0092】
フォースグループフィールドは、ソフトウェアがキックを実行するグループを選択することを可能にする。これは、例えば、単一mGPU又は単一グループ分散モードと共に指定され得る。ポリシーフィールドは、ソフトウェアが、単一mGPU又は単一グループ分散のためのスケジューリングポリシーを指定することを可能にする。図示の例では、ソフトウェアは、「第1のオプション選択」ポリシー(デフォルトであり得る)又はラウンドロビンポリシーを指定することができる。第1のオプション選択ポリシーは、それらのインデックスに従って第1の利用可能な要素(例えば、mGPU又はグループ)を選択することができ、これは、フラグメント化を回避し、他のスライスのためにより連続したdSlotを空けておくことができる。ラウンドロビンポリシーは、リソースの使用をランダム化することができ、選択されたリソースのロケーションを回避して実質的な性能変動を引き起こすことができるが、複数のグループにわたって小さなスライスを分散させることがある。他の実施形態では、様々なポリシーを指定することができる。ソフトウェアオーバーライドフィールドを考慮するアービトレーションの詳細な例は、以下で説明される。
例示的なアービトレーション技術
【0093】
図10A~
図10Cは、いくつかの実施形態による、それぞれの異なる分散モードのためのハードウェアスロットアービトレーションのための例示的な技術を示すフロー図である。開示される技術は、概して、同じ論理スロット内の連続するカーネルを広く分散させることができることに留意されたい(例えば、カーネルAが、mGPU0内のdSlotを割り当てられた単一mGPUカーネルである場合、やはり単一mGPUカーネルであるカーネルBがmGPU1内のdSlotに割り当てられることになり、これは、より少ない論理スロットが同時に実行されることを可能にしながら、論理スロットの実行を完了することを優先することができる)。
【0094】
いくつかの実施形態では、DRA620は、例えば、同じ論理スロットからの後続のカーネルがdSlot(複数可)を使用することを可能にするために、可能な限りdSlotを空の状態のままにする。これは、キャッシュフラッシュ無効化と、新しく割り当てられたdSlotのための実行構成レジスタの書き込みとを低減し得る。いくつかの実施形態では、別の論理スロットによって所有されている空状態のdSlotは、新しい論理スロットに割り当てられる前に、再利用プロセス(
図11を参照して以下で説明される)を経て、無効に移行しなければならない。
【0095】
一般に、以下で詳細に説明されるように、DRA620は、カーネルのためのdSlotを選択するために、以下の優先度方式を使用する。最も高い優先度は、論理スロットによって既に所有されている空のdSlotである。これらのdSlotは、書き込まれた制御レジスタを有し、即時実行のために自由である。中程度の優先度は無効なdSlotであり、これは新たに割り当てられ、制御レジスタ書き込みを必要とする可能性があるが、即時実行のためには自由である。最も低い優先度は、分散スロットによって既に所有されている実行中のdSlotである。これらのdSlotは、書き込まれた制御レジスタを有するが、別のカーネルの後ろで待機する必要がある場合がある。
【0096】
図10Aは、単一mGPU分散モードのためのアービトレーション方法を示す。1010において、図示の実施形態では、DRA620は、そのフォースグループ及びmGPUマスクフィールドに基づいて、カーネルのための許容可能なmGPUのセットを決定する。このセットは、ソフトウェアによって選択されないmGPUの任意のグループを省いてもよい。
【0097】
1012において、図示の実施形態では、DRA620は、カーネルの論理スロットが既に空状態のdSlotを所有しているmGPUを選択する。要素1012、1016、及び1018が同点の場合、DRA620は、ハードウェアリソースを選択するために、決定されたポリシー(例えば、いくつかの実施形態では、デフォルト、ソフトウェア指定、又は単一タイプのポリシー)を使用することに留意されたい。例えば、要素1012を満たす複数のmGPUが存在する場合、DRA620は、mGPUを選択するためにポリシーを適用することができる。1つ以上のmGPUがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0098】
1014において、図示の実施形態では、DRA620は、論理スロットがまだdSlotを所有していない少なくとも1つの無効なdSlotを有するmGPUを選択する。1つ以上のmGPUがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0099】
1016において、図示の実施形態では、DRA620は、最も無効なスロットを有するmGPUを選択する。1つ以上のmGPUがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0100】
1018において、図示の実施形態では、DRA620は、論理スロットが実行状態のハードウェアスロットを既に所有しているmGPUを選択する。1つ以上のmGPUがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0101】
1020において、図示の実施形態では、DRA620は、再利用手順を試みる。そのような手順の例は、
図11を参照して以下で更に詳細に説明される。再利用が失敗した場合、フローは進む。
【0102】
1022において、図示の実施形態では、DRA620は、割り当て機械を再開し、再調停する。様々な分散モードに対して、再調停は、分散モードを満たすのに十分な数のハードウェアスロットが利用可能になるまで行われてもよい。
【0103】
図10Bは、単一グループ分散モードのためのアービトレーション方法を示す。1030において、図示の実施形態では、DRA620は、
図10Aの要素1010と同様に、許容可能なmGPUのセットを決定する。
【0104】
1032において、図示の実施形態では、DRA620は、グループ内の全てのmGPUが、空又は無効状態にあるカーネルの論理スロットによって所有されるdSlotを有するグループを選択する。同点の場合、DRA620は、無効なdSlotが最も少ないグループを選択する。1つ以上のグループがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0105】
1034において、図示の実施形態では、DRA620は、グループ内の全てのmGPUが、実行、無効、又は空状態にある論理スロットによって所有されるdSlotを有するグループを選択する。同点の場合、DRA620は、実行状態のスロットを有するmGPUが最も少ないグループを選択する。DRA620は、依然として同点がある場合、ポリシーを適用し得る。1つ以上のグループがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0106】
1038及び1040において、dRA620は、上記で説明した要素1020及び1022と同様に、再利用を試み、次いで割り当て機械を再開し、再調停する。
【0107】
図10Cは、マルチグループ分散モードのためのアービトレーション方法を示す。1050において、図示の実施形態では、DRA620は、mGPUマスクに基づいて(この例では全てのグループが使用されるので、フォースグループコマンドに基づくのではなく)許容可能なmGPUのセットを決定する。
【0108】
1052において、図示の実施形態では、DRA620は、許容可能なmGPUのセット内の各ターゲットmGPUについて要素1054~1058の動作を実行する。1054において、DRAは、空又は実行状態にあるカーネルの論理スロットによって既に所有されているdSlotを選択する。1つ以上のdSlotがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。
【0109】
1056において、図示の実施形態では、DRA620は、無効なdSlotを選択する。1つ以上のdSlotがこれらの基準を満たす場合、それらのうちの1つが選択され、カーネルが終了するまで、その論理スロットに対するアービトレーションが終了する。そうでない場合、フローは進む。1058において、図示の実施形態では、DRA620は再利用を試みる。
【0110】
要素1052の動作がカーネルに対する各mGPU内のdSlotの割り当てに成功しなかった場合、フローは1060に進み、DRA620は割り当て機械を再開し、再調停する。
【0111】
上記で説明した様々な技術はソフトウェアオーバーライドフィールドを考慮するが、他の実施形態では、ソフトウェアオーバーライドは実装されなくてもよく、又は特定の動作モードで無効にされてもよいことに留意されたい。その場合、DRAは、上記で説明したように動作し得るが、ソフトウェアオーバーライドの考慮は省略する。
スロットの再利用
【0112】
いくつかの実施形態では、制御回路は、論理スロットが、別の論理スロットに割り当てられたハードウェアスロットを再利用することを可能にするように構成される。いくつかの実施形態では、より高い優先度の論理スロットのみが、他の論理スロットからハードウェアスロットを再利用することを許可される。論理スロット優先度を実施するための例示的技術が以下で説明されるが、一般に、優先度はソフトウェアによって示され得る。いくつかの実施形態では、空状態にあるハードウェアスロットのみが、別の論理スロットによって再利用されるのに的確である。
【0113】
一般に、制御回路は、ハードウェアスロットを可能な限り長く空の状態に保つことを試み得る。これは、ハードウェアスロットを新しい論理スロットに切り替えるときにキャッシュフラッシュ無効化を実行し、構成レジスタを書き込むオーバーヘッドを回避することができる(ハードウェアスロットを空の状態に保つことは、同じ論理スロットが、ハードウェアスロットを使用するために同じキックから別のカーネルを送信することを可能にすることができ、これはこのオーバーヘッドを回避するからである)。しかしながら、このために、他の重要な論理スロットがそのようなハードウェアスロットを取ることを可能にすることによって、性能を改善することができる。
【0114】
図11Aは、いくつかの実施形態による、ハードウェアスロット再利用のために使用される保持信号の例示的な値を示す図である。保持信号は、持続性信号とも称され得る。各CSP 630は、(例えば、CSP 630がそのキックを実行している距離に応じて)そのハードウェアスロットを保持したい範囲を示す保持信号をDRA620に送信することができる。
【0115】
図示の例では、保持信号は3つの値のうちの1つを有するが、他の実施形態では他の値のセットが考えられる。低い値は、論理スロットがキックのための制御ストリーム終端信号に到達したこと、及び処理すべきカーネルがカーネル待ち行列に残っていないことを示す。この場合、論理スロットは、キックのために別のハードウェアスロットを必要としない。中程度の値は、論理スロットが制御ストリーム終端に到達していないが、実行のためにハードウェアスロットを要求する準備ができているカーネルが現在ないことを示す。高い値は、論理スロットが実行のためにハードウェアスロットを要求するカーネルを有することを示す。
【0116】
いくつかの実施形態では、DRA620は、要求を満たすために十分なハードウェアスロットが再利用され得る場合にのみ、スロットを再利用するように構成される。そうでない場合、再利用の試みは失敗する可能性がある。再利用が成功すると、DRA620は、そのステートマシンを再開し、論理スロットを再調停する。DRA620は、任意の再利用されたスロットについてメモリ階層とのキャッシュフラッシュ無効化を開始し得る。これは、それらのスロットをフラッシュ状態に移行させることができるが、それらのスロットは、それらがフラッシュ及び無効状態への移行を終了すると、アービトレーションのために利用可能になることができる。
【0117】
図11Bは、いくつかの実施形態による、別の論理スロットに現在割り当てられている1つ以上のハードウェアスロットを再利用するための例示的技術を示すフロー図である。1110において、図示の実施形態では、DRA620は、全てのdSlotがフラッシュ状態にあることを発見する。それは、flushing_set内のdSlotのセットを示すデータ構造を生成し得る。これらのdSlotがカーネルの要求を処理するのに十分である場合、DRA620は再利用をキャンセルし、フラッシュが終了するのを待つ。そうでない場合、フローは進む。
【0118】
1120において、図示の実施形態では、DRA620は、空にされ、(a)コンテキストを記憶しておらず、(b)いかなるフラッシュdSlotも有していない論理スロットによって所有されている全てのdSlotを発見する。それは、このallowed_set内のdSlotのセットを示すデータ構造を生成し得る。低い保持値を有するallowed_set内のdSlotがflushing_set内のdSlotと組み合わされ、要求をサービスするのに十分である場合、DRA620は、それらのdSlotを再利用し、それらのdSlotに対するキャッシュフラッシュ無効化を開始する。そうでない場合、フローは進む。
【0119】
1130において、図示の実施形態では、DRA620はまず、要求が低優先度論理スロットに対するものであるか高優先度論理スロットに対するものであるかを決定し、それに応じて動作する。他の実施形態では、他の優先度の粒度がサポートされてもよいことに留意されたい。低優先度の要求元に対して、DRA620は、低優先度論理スロットによって所有される中程度の保持値を有するallowed_set内のスロットであるスロットのdo_setを生成する。DRA620は、flushing_setとdo_setの両方にdSlotを見つける。これらのdSlotが要求を処理するのに十分である場合、DRA620は、これらのdSlotを再利用し、これらのdSlotに対するキャッシュフラッシュ無効化を開始する。そうでない場合、フローは進む。
【0120】
高優先度の要求元に対して、DRA620は、高優先度論理スロットによって所有される中程度の保持値を有するallowed_set内のスロットであるスロットのdo_setを生成する。DRA620は、flushing_setとdo_setの両方にdSlotを見つける。これらのdSlotが要求を処理するのに十分である場合、DRA620は、これらのdSlotを再利用し、これらのdSlotに対するキャッシュフラッシュ無効化を開始する。そうでない場合、フローは進む。
【0121】
1140において、図示の実施形態では、DRA620は、allowed_set内にあり、高い保持値を有し、より低い優先度及びより低いエージを有する論理スロットに属するスロットをdo_setに追加する。DRA620は、flushing_setと更新されたdo_setの両方にdSlotを見つける。これらのdSlotが要求を処理するのに十分である場合、DRA620は、これらのdSlotを再利用し、これらのdSlotに対するキャッシュフラッシュ無効化を開始する。そうでない場合、再利用をキャンセルし、アービトレーションを再開することができる。
【0122】
様々な実施形態において、開示される技術は、有利には、現在の論理スロットのためにハードウェアスロットを空に保つこと(オーバーヘッドを回避するため)と、それらのハードウェアスロットが特定のシナリオにおいて他の論理スロットによって再利用されることを依然として可能にすることとの間のバランスを提供し得る。
スロット保持
【0123】
いくつかの実施形態では、制御回路は、スロットを解放するように命令されるまで(例えば、ソフトウェアによって)、論理スロットのためのハードウェアスロットを保持するように構成される。これは、ソフトウェアが、性能レジスタ、メモリ、又はキック実行の影響を受ける他のデータなどの種々のキック情報を照会することを可能にし得る。いくつかの実施形態では、各キックは、論理スロットに対してマッピングされるハードウェアスロットが割り当て解除されるのを待つべきかどうかを示すretain_slotsフィールド(例えば、ビット)を含む。
【0124】
いくつかの実施形態では、保持されたスロットを有するキックが論理スロットに割り当てられる場合、他のスロットは、優先度にかかわらず、その論理スロットからリソースを再利用することができない。
【0125】
図12は、いくつかの実施形態による、スロットが保持された状態でキックを処理するために一次制御回路によって実行される例示的な方法を示すフロー図である。この手順は、ソフトウェア通信を可能にするために、KSM 350と通信して実行することができる。1210において、図示の実施例では、一次制御回路210は、スロットハードウェアスロットが保持されるべきであることを示す、retain_slotsフィールドセットを用いてキックを開始する。
【0126】
1220において、図示の例では、キックはそのワークを完了し、デバイスはカーネルフラッシュ処理の終了を実行する。ハードウェアスロットは、マッピングされたままである。
【0127】
1230において、一次制御回路210は、kick_done信号をKSM 350に送信する。また、dSlotを保持状態に移行させる。
【0128】
1240において、ソフトウェア又はファームウェアは、キックの影響を受ける性能レジスタ、メモリなどに照会することができる。1250において、KSM 350は、release_slots信号を送信する(例えば、照会が完了したことを示すソフトウェア命令に基づいて)。
【0129】
1260において、一次制御回路210は、ハードウェアスロットの割り当てを解除するプロセスを完了し、ハードウェアスロットは無効状態に移行し、ここで別の論理スロットに利用可能である。1270において、一次制御回路210は、割り当て解除メッセージをKSM 350に送信し、割り当て解除が完了したことを通知する。
【0130】
いくつかの実施形態では、ハング状態を回避するために、スロットが維持されているキックは、常にマルチグループ分散モードを使用し、完了をブロックすることができない。したがって、保持を伴う論理スロットと保持を伴わない論理スロットとの間で調停するとき、保持を伴う論理スロットは、常に優先度を有することができる。更に、KSM 350は、例えば、mGPUごとのdSlotの数に対応する、保持セットを有する論理スロットの閾値数までのみをスケジュールすることができる。いくつかの実施形態では、保持セットを有する全ての論理スロットは、高い優先度に昇格される。
高優先度キックのための予約スロット
【0131】
上記で簡単に説明したように、異なる論理スロットは、例えばソフトウェアによって指定されるような異なる優先度レベルを有することができる。いくつかの実施形態では、所与のmGPU上で、ハードウェアスロットのサブセットが、閾値優先度を満たす論理スロット(例えば、2つの優先度レベルを有するシステム内のより高い優先度のスロット)のために予約される。
【0132】
図13は、mGPUのいくつかのハードウェアスロットを示すブロック図である。いくつかの実施形態では、1つ以上のdSlot(
図13において黒一色で示される)は、高優先度論理スロットのために予約され、1つ以上のdSlot(
図13において水平陰影で示される)は、全ての論理スロットに利用可能である(及び低優先度論理スロットに利用可能な唯一のハードウェアスロットである)。
【0133】
いくつかの実施形態では、高優先度論理スロットは、他のスロットを使用しようと試みる前に、最初にmGPUの予約済みハードウェアスロットを使用しようと試みる。他の実施形態では、高優先度論理スロットは、例えばラウンドロビン技術を使用して、mGPUの全てのハードウェアスロットを等しく使用しようと試みることができる。
【0134】
いくつかの実施形態では、低優先度論理スロットは、高優先度論理スロットがそれらを使用する機会がない限り、高優先度論理スロットからハードウェアスロットを再利用することを許可されない。
【0135】
様々な実施形態において、開示される優先技術は、ソフトウェアが重要なワークの分散に影響を与えて、あまり重要でないワークからの障害を低減することを有利に可能にし得る。
フラッシュ技術
【0136】
上述のように、キャッシュフラッシュ無効化(CFI)は、ハードウェアスロットが新しい論理スロットに割り当てられるたびに実行されてもよい。更に、一次制御回路210は、計算キックのために制御ストリームに含まれる任意のCFIを実行しなければならない。しかしながら、ハードウェアスロットはカーネルレベルで動的にマッピングされ得るので、制御ストリームCFIのためにフラッシュすべきハードウェアスロットのセットは決定論的でないことがある。以下の説明は、この現象に対処するための技術を提供する。特に、全ての関連するmGPU(例えば、いくつかの実装形態におけるグラフィックスプロセッサ内の全てのmGPU)をフラッシュする「無条件」CFIが導入される。
【0137】
図14Aは、いくつかの実施形態による、無条件フィールドを有する例示的なキャッシュフラッシュ無効化コマンドを示す図である。各CFIは、この例では、「無条件」フィールドを含む。標準(無条件でない)CFIは、標準CFIが発行されるときに論理スロットによって所有される全てのハードウェアスロットに適用される。論理スロットが何らかのmGPUにおいてハードウェアスロットを所有していない場合であっても、無条件CFIは全てのmGPUに送信される。
【0138】
図14Bは、いくつかの実施形態による、無条件CFIを処理するように構成されたdSlotリソースアロケータの一実施形態を示すブロック図である。図示の例では、DRA620は、カーネルフラッシュ制御レジスタ1330の最後と、割り当て解除フラッシュ制御レジスタ1340とを含む。いくつかの実施形態では、一次制御回路210は、多くとも1つの無条件CFIが任意の所与の時間に顕著であり得るように、ステートマシンを実装する。論理スロットは、このリソースを調停することができる。
【0139】
カーネルフラッシュ制御レジスタ1330は、カーネルの終わりにどのmGPUをフラッシュすべきかを示すビットのセットを維持することができる。割り当て解除フラッシュ制御レジスタ1340は、キックの途中でdSlot割り当て解除時にどのmGPUをフラッシュするかを示すビットのセットを維持することができる(これは、カーネルフラッシュの終了によって指定されるビットのサブセットであり得ることに留意されたい)。
【0140】
DRA620は、dSlotが割り当て解除されたとき、以下の手順を実装し得る。最初に、dSlotが、論理スロットのために割り当てられたdSlotを有するグループ内の最後のmGPUでない場合、DRA620は、より少数のキャッシュ(例えば、グループによって共有されるL2キャッシュではなく、1つ以上のL1キャッシュ)を潜在的にフラッシュ無効化することができる割り当て解除フラッシュ制御レジスタ1340を使用する。dSlotがグループの最後のmGPU内にある場合、DRA620は、カーネルフラッシュ制御レジスタ1330の最後を使用して、どのキャッシュ(複数可)をフラッシュするかを決定する。
【0141】
様々な実施形態では、開示された技術は、有利には、非決定論的フラッシュ挙動を回避し、キャッシュ効率を改善し、又はその両方を行うことができる。
アフィニティに基づく分散
【0142】
複数のGPUサブユニットがキャッシュ(例えば、グループ305のサブユニット320A~320N)を共有する実施形態では、制御回路は、同じメモリ領域(複数可)にアクセスするカーネルの部分を、キャッシュを共有するサブユニットにスケジュールすることができる。これは、特に同じキックのカーネル間でキャッシュ効率を改善することができる。
【0143】
いくつかの実施形態では、一次制御回路210は、キャッシュなどのリソースを共有するハードウェアのセットに対応し得る、アフィニティ領域のセットを定義する。いくつかの実施形態では、アフィニティ領域とmGPUのターゲットグループとの間に固定された関係が存在する(ただし、この関係は、カーネルの次元に応じて変動し得る)。一次制御回路210は、いくつかのアフィニティマップを記憶する制御レジスタを含んでもよい。各アフィニティマップは、カーネル部分とアフィニティ領域との間の関係を指定することができる。このようにして、各カーネルは、そのメモリアクセスを反映するアフィニティマップを参照することができる(例えば、アフィニティマップを構成し、各カーネルのアフィニティマップを指定することができるソフトウェアによって決定される)。したがって、ソフトウェアは、複数のデータマスタ間で共有することもできる構成レジスタを使用して、潜在的なアフィニティパターンをプログラムすることができる。キック内では、異なるカーネルが異なるアフィニティマップに従って分散され得る。
【0144】
図15は、いくつかの実施形態による、グラフィックスワークのセット(例えば、計算カーネル)のための例示的なアフィニティ技術を示す図である。図示の実施形態では、グラフィックスワークのセット(例えば、カーネル)は、アフィニティマップ1520を指定するアフィニティマップインジケータ1515を含む。インジケータは、例えば、アフィニティマップのテーブルへのポインタ又はインデックスであってもよい。アフィニティマップは、カーネルのN個の部分に対するmGPUの対応するターゲットグループ305を示す。カーネルの「部分」は、実際にはアフィニティマップ内のフィールドでなくてもよく、エントリのインデックスに基づいて暗示されてもよいことに留意されたい。例えば、アフィニティマップ中の第3のエントリは、カーネルの3/N番目の部分に対応し得る。デバイスは、複数の異なるアフィニティマップを指定するように構成可能な構成レジスタを含み得る。更に、所与のアフィニティマップは、複数のカーネルによって参照され得る。
【0145】
いくつかの実施形態では、グラフィックスワークのセットの部分をターゲットグループに直接マッピングするのではなく、アフィニティマップは、グラフィックスワークのセットの部分をアフィニティ領域にマッピングし、次いで、アフィニティ領域をハードウェアのセット(例えば、mGPUのグループに)にマッピングする間接マッピングを使用してもよい。
【0146】
制御回路は、示されたアフィニティマップに基づいて、グラフィックスワークのセットを分散させてもよい。同じグループをターゲットとするグラフィックスワーク1510のセットの複数の部分は、同じグループ/アフィニティ領域に割り当てられてもよい(したがって、グループのmGPUによって共有されるキャッシュを共有してもよく、これはキャッシュ効率性を向上させることができる)。
【0147】
開示される実施形態は、mGPUのグループの粒度でアフィニティを指定するが、アフィニティは、例えば、メモリ階層内の様々なレベルの共有キャッシュを用いて、様々な適切な粒度のいずれかで指定され、実装され得ることに留意されたい。開示される実施形態は、例示的な目的で含まれているが、本開示の範囲を限定することを意図するものではないことに留意されたい。
【0148】
図16は、いくつかの実施形態による、アフィニティに基づいてカーネルからワークグループのバッチを分散させるように構成された例示的な回路を示すブロック図である。図示の実施形態では、1つの論理スロットのための制御回路は、制御ストリームプロセッサ630、一次カーネルウォーカ1610、グループウォーカ1620 A~1620 N、グループウォーカアービタ1630、mGPU割り当て回路650、キックスロットアービタ660、及び通信ファブリック1660を含む。同様の回路が、デバイスによってサポートされる論理スロットごとにインスタンス化され得る。要素1610、1630、及び1640は、上述したカーネルプロセッサ640に含まれてもよく、同様に番号付けされた要素は、
図6を参照して上述したように構成されてもよいことに留意されたい。
【0149】
各カーネルは、複数の次元(典型的には三次元)のワークグループに編成することができる。これらのワークグループは、複数のスレッド(ワークアイテムとも呼ばれる)を含むことができる。一次カーネルウォーカ1610は、図示の実施形態では、指定されたアフィニティマップに従って、mGPUのグループをターゲットとするカーネルの部分を含むアフィニティサブカーネルを提供するためにカーネルを通して反復するように構成される。一次カーネルウォーカ1610は、サブカーネルの初期ワークグループの座標を使用して、所与のグループウォーカ1620に割り当てられたサブカーネルを示すことができる。
図16の要素間で送信される様々なカーネルデータは、実際のワークを含まなくてもよく、むしろ、例えば、カーネルとの座標を使用して、割り当てられるべきワークのロケーションを示す制御シグナリングであってもよいことに留意されたい。
【0150】
異なる次元を有するカーネルの場合、一次カーネルウォーカ1610は、カーネルをN個のアフィニティ領域に分割することができる。例えば、アフィニティマップごとにN個のアフィニティ領域を有する実施形態では、一次カーネルウォーカ1610は、一次元カーネルのためにN個の領域全てを使用することができる。二次元カーネルの場合、一次カーネルウォーカ1610は、カーネルを
【数1】
個のアフィニティ領域のグリッドによって
【数2】
に分割することができる。三次元カーネルの場合、一次カーネルウォーカ1610は、カーネルを長方形のアフィニティ領域に分割することができる(一例として、z次元全体に及ぶ
【数3】
個のアフィニティ領域のグリッドによる
【数4】
【0151】
グループウォーカ1620は、図示の実施形態では、それぞれのアフィニティサブカーネルを独立してウォークし、バッチを生成するように構成され、各バッチは1つ以上のワークグループを含む。バッチは、計算ワークがmGPUにディスパッチされる粒度であってよい。所与のアフィニティサブカーネルは、
図17を参照して以下で詳細に説明するように、複数のスレッド制限付きウォーク順序サブカーネルに分割することができることに留意されたい。カーネルウォーク順序を制御するための様々な技術が、2020年9月11日に出願された米国特許出願公開第17/018,913号明細書において論じられており、アフィニティサブカーネルをウォークするためにグループウォーカ1620によって使用され得る。
【0152】
グループウォーカアービタ1630は、図示の実施形態は、利用可能なバッチ間で調停するように構成され、mGPU割り当て回路650は、選択されたバッチをウォーカに割り当てるように構成される。
【0153】
割り当て回路650は、mGPUマスク及びロードバランシングを使用して、任意のソフトウェアオーバーライドに従ってmGPUを割り当てることができる。キックスロットアービタ660は、準備されたバッチ間を調停し、それらを通信ファブリック1660を介してターゲットmGPUに送信する。通信ファブリック1660は、割り当てられたワークの特性を示す制御シグナリングと、ワーク完了を示す追跡シグナリングとを送信するように構成されたワーク負荷分散共有バス(WDSB)であってもよく、これについては、例えば、上記で参照した米国特許出願公開第17/158,943号明細書に記載されている。
【0154】
いくつかの実施形態では、デバイスは、例えば、ソフトウェア制御に基づいて、又はある条件下で制御回路を使用して、アフィニティベースのスケジューリングをオフにすることができる。この状況では、一次カーネルウォーカ1610は、カーネル全体を単一のグループウォーカ1620に割り当てることができる。
【0155】
mGPUにおける分散制御回路340の各インスタンスは、実行のためにワークグループをシェーダパイプラインに割り当てる前に、受信したバッチを記憶するための入力待ち行列及びバッチ実行待ち行列を含むことができる。
【0156】
図17は、いくつかの実施形態による、例示的なカーネル反復を示す図である。図示の実施形態では、カーネル1710は、複数の部分(1つの次元におけるM個の部分及び別の次元におけるX個の部分)を含む。これらの部分の各々は、アフィニティサブカーネルと呼ばれてもよく、アフィニティ領域にマッピングされてもよい(複数のアフィニティサブカーネルが同じアフィニティ領域にマッピングされてもよいことに留意されたい)。
【0157】
図示の例では、部分A0は、複数のスレッド制限サブカーネル部分A~Nを含む。各アフィニティサブカーネル内で、グループウォーカ1620Aは、米国特許出願公開第17/018,913号明細書に記載されているような制限付き反復を使用することができる。図示のように、スレッド制限サブカーネル部分Aは、通信ファブリック1660を介して分散され得るいくつかのバッチに分割される(ここで、バッチ内の各正方形はワークグループを表す)。開示される実施形態では、部分A0からの全てのバッチは、mGPUの同じグループに割り当てられてもよい(カーネル1710の他の部分もまた、mGPUのこのグループを対象としてもよいことに留意されたい)。様々な実施形態において、開示されるアフィニティ技術は、キャッシュ効率を有利に改善することができる。
【0158】
いくつかの実施形態では、アフィニティベースのスケジューリングは、ある状況において、例えば、非同種カーネルに対して、性能を一時的に低下させ得る。例えば、mGPUのいくつかのグループは、他のグループがあまり複雑でない部分を終了したときに、カーネルの複雑な部分に対して依然として動作している可能性がある。したがって、いくつかの実施形態では、グラフィックスプロセッサは、例えばカーネルの終わりに、アフィニティベースのスケジューリングをオーバーライドするためにワークスティーリング技術を実装する。これらの実施形態では、カーネルに対してアイドル状態であるmGPUのグループは、カーネル上でまだ動作しているグループからワークを行うことができ、これは、カーネルの全体的な実行時間を有利に短縮することができる。
【0159】
いくつかの実施形態では、制御回路は、mGPUの1つ以上の提供者グループ(例えば、最も多くの仕事が残っているグループ(複数可))を選択し、ある状態にあるmGPUの他のグループ(例えば、カーネルに対するそれらのワークの全て、又は少なくともそれらの仕事の閾値量を完了した)を、ワーク受容者グループとして選択する。ワーク受容者グループは、提供者グループに割り当てられたアフィニティサブカーネルからバッチを受信することができ、それによって、特定の状況においてアフィニティ技術をオーバーライドする。
【0160】
図18は、いくつかの実施形態による、ワークシェアリングを容易にするように構成された例示的な回路を示すブロック図である。図示の実施形態では、一次カーネルmGPU1610は、mGPUの各グループをターゲットとするカーネルの残りの部分(例えば、アフィニティサブカーネル)を追跡するように構成された回路1810A~1810Nを含む。例えば、所与のグループが7つのアフィニティサブカーネルによってターゲットとされ、4つのアフィニティサブカーネルを受け取った場合、そのグループについて3つのアフィニティサブカーネルが残っている。
【0161】
ワークシェアリング制御回路1820は、図示の実施形態では、回路1810によって維持される情報に基づいて、ワーク提供者グループ(複数可)及び受信者グループ(複数可)を選択するように構成される。これらのグループを識別する情報は、図示の実施形態では、回路1830及び1840に保持される。いくつかの実施形態では、グループは、カーネルのアフィニティマップ内のアフィニティ領域に関連付けられた場合にのみ、ワークを行うのに適格である。いくつかの実施形態では、グループは、カーネルに割り当てられた(アフィニティマップを介して割り当てられた)ワークの全てをディスパッチすると、カーネルに対してワークを行うのに適格であるようになる。
【0162】
いくつかの実施形態では、ワーク提供者グループは、最も後ろにある(ディスパッチするために残っている最大数の部分を有する)グループである。グループがワークを受けるのに適格であるとき、グループは提供者グループにロックオンすることができる。図示のように、一次カーネルウォーカ1610は、そのような受信者グループの同期のために状態情報(例えば、アフィニティサブカーネルの座標ベース情報)を送信することができる。
【0163】
提供者用のグループカーネルウォーカ(この例では1620A)は、ワークグループのバッチを生成し、その対応するグループ内のmGPUに、又はワーク需要者グループのいずれかのmGPUに送信する。適格なmGPUのセットは、例えば、mGPU割り当て回路650が、負荷分散に基づいて適格なmGPUのセットの中から選択することができるように、グループウォーカ1620AからのmGPUマスクによって指定され得る。
【0164】
いくつかの実施形態では、ドネータグループがその現在の部分(例えば、アフィニティサブカーネル)のディスパッチを終了すると、受信側はロック解除され、新しいドネータを選択することができ、プロセスは、カーネル全体がディスパッチされるまで継続することができる。
キックスロットマネージャ回路の例
【0165】
図19Aは、いくつかの実施形態による、例示的なキックスロットマネージャを示すブロック図である。図示の実施形態では、キックスロットマネージャ350は、ソフトウェアインタフェースを実装し、レジスタコピーエンジン1910と、ステータス回路1920(例えば、スコアボード)を追跡する依存関係とを含む。図示の実施形態では、キックスロットマネージャ350は、メモリインタフェース1930、制御レジスタインタフェース1940、及び一次制御回路210と通信する。
【0166】
いくつかの実施形態では、キックスロットマネージャ350は、ソフトウェアがキックを割り当てることができる複数の「トップスロット」を実装する。これらのトップスロットは、本明細書では「追跡スロット」とも呼ばれる。次いで、キックスロットマネージャ350は、キック間のソフトウェア指定依存関係を処理し、追跡スロットから一次制御回路210内の論理スロットにキックをマッピングし、キック実行ステータスを追跡し、ステータス情報をソフトウェアに提供することができる。いくつかの実施形態では、専用キックスロットマネージャ回路は、ソフトウェア制御の実装と比較して、キックからキックへの移行時間を有利に短縮し得る。
【0167】
レジスタコピーエンジン1910は、いくつかの実施形態では、メモリインタフェース1930を介してメモリから(例えば、キック構成レジスタのための)レジスタデータを取得し、キックのためにインタフェース1940を介して構成レジスタをプログラムするように構成される。いくつかの実施形態では、レジスタコピーエンジン1910は、キックのためにシェーダリソースを割り当てる前に、構成レジスタデータを内部バッファ(
図19Aに明示的に図示せず)にプリフェッチするように構成される。これは、様々な実施形態において、新たなキックを開始するときにキックからキックへの移行時間を短縮し得る。レジスタコピーエンジン1910は、メモリインタフェース1930を介して制御レジスタデータにアクセスすることができ、制御レジスタインタフェース1940を介して制御レジスタに書き込むことができる。
【0168】
いくつかの実施形態では、レジスタコピーエンジン1910は、優先度でキックのためのデータをプリフェッチするように構成され、追加のデータを要求する前に、最初に要求されたレジスタデータが取り出されるのを待たなくてもよい(これは、レジスタデータを読み取ることに関連するメモリ待ち時間を吸収し得る)。いくつかの実施形態では、レジスタコピーエンジン1910は、適切な分散スロットがプログラムされるように、例えばmGPUマスクに基づいて、マスクされたブロードキャストレジスタプログラミングをサポートする。いくつかの実施形態では、レジスタコピーエンジン1910を使用して制御レジスタをプログラムすることにより、一次ファームウェアプロセッサからワークをオフロードすることができる。
【0169】
いくつかの実施形態では、キックスロットマネージャ350は、キックをスケジュールし、キックのための全ての構成レジスタのプログラミングの前に、ワーク割り当て情報を一次制御回路210に送信するように構成される。一般に、初期キックスケジューリングはパイプライン化され得る。これは、セットアップフェーズレジスタプログラミング、分散されたスロットを識別する一次制御回路、ワークをキューイングする一次制御回路と並行して制御レジスタをプログラミングするレジスタコピーエンジン1910、及び最終制御レジスタが書き込まれた後に開始するキューイングされたワークを含み得る。これは、ダウンストリーム回路がワーク割り当てを受信して待ち行列に入れ、構成レジスタが書き込まれるとすぐに処理を開始することを可能にし、いくつかの実施形態では、キックからキックへの移行時間を更に短縮する。特に、これは、全ての制御レジスタがプログラムされるまで待ち行列ワークを待つことに対して、複数の制御バス横断に関連付けられた待ち時間を節約し得る。
【0170】
依存関係追跡及びステータス回路1920は、以下で詳細に説明するように、ソフトウェアから受信した情報を記憶し、ソフトウェアインタフェースを介してステータス情報をソフトウェアに提供することができる。いくつかの実施形態では、追跡スロットは、複数のタイプの一次制御回路(例えば、計算、ピクセル、及び頂点制御回路)によって共有される。他の実施形態では、特定の追跡スロットは、特定のタイプの一次制御回路のために予約されてもよい。
【0171】
図19Bは、いくつかの実施形態による、追跡スロットごとの例示的な追跡及びステータスデータを図示する図である。図示の実施形態では、回路1920は、各追跡スロットについて以下の情報、すなわち、識別子、ステータス、データ識別、依存関係、実行データ、及び構成を維持する。これらの例示的なフィールドの各々について、以下で詳細に説明する。いくつかの実施形態では、ステータス及び実行データフィールドは、ソフトウェアによる読み取り専用であり、他のフィールドは、ソフトウェア構成可能である。
【0172】
各追跡スロットは、一意のIDを割り当てられ得る。したがって、キックスロットマネージャ350は、最大数の追跡スロットをサポートし得る。様々な実施形態では、サポートされる追跡スロットの数は、全ての利用可能な追跡スロットを使用するために十分に小さい非依存キックが並行してスケジュールされ得ることがかなり稀であるように選択され得る。いくつかの実施形態では、サポートされる追跡スロットの数は、サポートされる論理スロットの数よりも多い。
【0173】
ステータスフィールドは、いくつかの実施形態では、スロットの現在の状態及びスロットが有効であるかどうかを示す。このフィールドはまた、適用可能な場合、論理スロットと、追跡スロットに割り当てられた任意の分散スロットとを示し得る。いくつかの実施形態では、ステータスフィールドは、以下のステータス値をサポートする。空、プログラミング完了、レジスタフェッチ開始、親待機、リソース待機、分散スロット待機、実行中、要求停止、割り当て解除、キックスロットマネージャによる待ち行列解除、一次制御回路による待ち行列解除、コンテキストの記憶、及び完了。他の実施形態では、ステータスフィールドは、他の状態、説明される状態のサブセットなどをサポートしてもよい。例示的な状態は、
図21のステートマシンを参照して以下で詳細に説明される。
【0174】
データ識別フィールドは、いくつかの実施形態では、キックのための制御レジスタデータのロケーションを示す。これは、例えば、初期レジスタアドレス及びいくつかの構成レジスタとして指定することができる。また、レジスタコンテキスト識別子を含んでもよい。いくつかの実施形態では、データ識別フィールドは、サンプラ又はメモリアパーチャなど、キックによって使用される他のリソースも示す。これらのリソースのうちのいくつかはハードリソースであってもよく、その結果、キックは、それらが利用可能になるまで進行することができず、一方、他のリソースはソフトリソースであってもよく、キックは、ある状況において、それらなしで、又は要求されたリソースの一部のみを伴って進行し得る。一例として、メモリアパーチャは、ソフトリソースと見なされてもよく、キックは、それらのソフトリソースが利用可能でない場合であっても(潜在的に、要求ソフトウェアに送信された通知を用いて)進行することを許可されてもよい。
【0175】
依存関係フィールドは、いくつかの実施形態では、他のスロット内のキックに対するスロットの任意の依存関係を示す。一例として、回路1920は、N×N個の行列(ここで、Nは追跡スロットの数である)を実装してもよく、各スロットは、スロットが他のスロットに依存するかどうかを示す他の各スロットのエントリを含む。エントリは、他のスロットからのキックが完了するとクリアされてもよい。他の実施形態では、他の技術を使用して依存関係を符号化することができる。キックスロットマネージャ350は、示された依存関係に従って追跡スロットを論理スロットに割り当てることができる(例えば、キックが依存する全ての追跡スロットが完了するまでキックを論理スロットに割り当てるのを待つことによって)。依存関係追跡をソフトウェア/ファームウェア制御から専用ハードウェアに移動することは、論理スロットのより効率的な使用を可能にし得、キックからキックへの移行を低減し得る。
【0176】
実行データフィールドは、いくつかの実施形態では、キックの実行ステータスに関する情報を提供する。例えば、このフィールドは、キックが分散スロット上で実行を開始するとき、及びキックが終了するときに、キックを論理スロットに割り当てるためのタイムスタンプを提供することができる。様々な他の性能又はデバッグ情報も同様に示され得る。いくつかの実施形態では、様々な追跡スロット情報が、保持フィールドが設定されたスロットについて保持され、それらのマッピングされたハードウェアリソースも解放されない(潜在的に、論理スロットレベル、分散スロットレベル、又はその両方でステータスレジスタへのアクセスを可能にする)。
【0177】
構成フィールドは、いくつかの実施形態では、スロットを制御する一次制御回路のタイプ(例えば、計算、ピクセル、又は頂点)、スロットの優先度、保持スロット指示、キック割り込み指示の強制終了、又はそれらの任意の組み合わせを示す。この構成フィールドは、例えば、スロットの構成を示すためにソフトウェアによってプログラム可能であり、特定のソフトウェアオーバーライド情報を提供することができる。カーネル割り込みの終了は、グローバルに設定され得るか、又はキックごとにトリガするように(又はキックの閾値数の後にトリガするように)設定され得る。これは、必要なときに割り込み機能を依然として保持しながら、割り込みの処理に費やされるファームウェア時間を(特定の状況において割り込みを省略することによって)有利に短縮することができる。
【0178】
様々な実施形態では、開示される追跡回路は、ソフトウェアが、(例えば、これらのキックの実行を開始、停止、照会、及び修正する能力を用いて)いくつかのキックを並行して処理することを可能にし得る。
【0179】
図20は、いくつかの実施形態による、例示的なレジスタプリフェッチバッファ構成を示す図である。図示の実施形態では、レジスタはタイプによって編成される(例えば、この例では、全てのセットアップレジスタがバッファの始めにあり、実行レジスタがバッファの終わりにある)。一般的に言えば、セットアップレジスタは、キックが開始する前にキックを構成するために使用され、実行レジスタは、キックの分散実行のために使用される。図示の実施形態では、バッファは、レジスタが位置する構成レジスタ空間内のオフセット及びそのペイロードを示す。
【0180】
プリフェッチされたレジスタデータのこの編成は、有利には、所与のタイプのレジスタのブロックの始め又は終わりに新しいレジスタを保存することを依然として可能にしながら、例えば、キックからキックへのバッファ再利用のために、前のレジスタのオーバーライドを可能にし得る。様々な実施形態では、2つ以上の異なるタイプのレジスタが、そのような技術を容易にするためにタイプによって一緒にグループ化され得る。いくつかの実施形態では、レジスタプリフェッチバッファはSRAMである。他の実施形態では、レジスタプリフェッチバッファはキャッシュであり、追加のスペースが必要な場合、(例えば、最後に使用されたアルゴリズム又は別の適切な追い出しアルゴリズムに従って)エントリを追い出すことができる。
【0181】
図21は、いくつかの実施形態による、例示的なキックスロットマネージャ状態を示すステートマシン図である。空状態2110から、制御回路は、スロットをキックのために割り当てるためにスロットを有効にするように構成される。スロットのデータがプログラムされたとき(例えば、
図19Bを参照して上述した依存関係及び構成)、状態は「プログラミング完了」状態2112に移行する。レジスタコピーエンジン1910がフェッチ要求を受け入れた後、状態はレジスタフェッチ開始2114に移行する(図示の実施形態では、これは、リソースを追跡スロットに割り当てる前のプリフェッチであることに留意されたい)。フェッチが完了したことをレジスタコピーエンジン1910が示した後、状態は「親を待つ」状態2116に移行する。追跡スロットについて全ての依存関係が満たされると、状態は「リソースを待つ」状態2118に移行する。
【0182】
図示のように、状態2110~2118のいずれかにおいて停止が要求された場合、状態は「KSMからの待ち行列解除」2126に移行する。スロットがリセットされると、状態は空状態2110に戻る。例えば、リソースがスロットにまだ割り当てられていないので、状態2116は、以下に詳細に説明される他の停止状態よりも実質的に少ない割り当て解除動作を必要とし得ることに留意されたい。
【0183】
リソースが割り当てられると、状態は「dSlot待機状態」2120に移行し、KSMは、2124において(例えば、一次制御回路からの)制御応答を待つ。dSlot(複数可)が割り当てられると、状態は実行状態2122に移行する。これらの状態において停止が要求された場合(2128に示す)、KSMは2130において制御応答を待つ。キックが停止要求の後に、又は実行状態2122から行われた場合、スロットは2132で割り当て解除され、キックは2138で完了する。
【0184】
状態2120又は2122において停止が要求され、制御応答2130が論理スロットが記憶されていることを示す場合、状態は割り当て解除状態2134に移行し、2140においてコンテキストが記憶されるのを待ってから、スロットをリセットする。2130における制御応答が待ち行列解除を示す場合、状態は割り当て解除2136に移行し、次いで、スロットをリセットする前に「一次制御回路から待ち行列解除」2142に移行する(これは、状態2134及び2140に対して、論理スロットのコンテキストストアを必要としない、より優雅な待ち行列解除であり得る)。一般的に言えば、開示される技術は、有利には、一次制御回路が複数のレベルでワークのスケジューリングを一時停止することを可能にし、ファームウェアが安全な様式でハードウェアと相互作用することを可能にし得る。
【0185】
スロットが状態2138、2140、又は2142からリセットされると、キックスロットマネージャは、保持フィールドが設定されているかどうかを判定し、設定されていない場合、空状態2110に戻る。保持フィールドが設定されている場合、KSMは、2148で(例えば、ソフトウェア制御に基づいて)割り当てられた論理スロットが割り当て解除されるのを待つ。一般的に言えば、追跡スロットは、明示的に保持されない限り、自動的にリサイクルされ得る。
【0186】
上述したように、依存関係追跡及びステータス回路1920は、各スロットの現在の状態をソフトウェアに提供することができる。
【0187】
いくつかの実施形態では、キックスロットマネージャ350は、例えば、サポートされる追跡スロットの数の変動を可能にすることによって、複数のGPUサイズにわたってスケーラブルである。(ファームウェア又はソフトウェアによる)追跡スロット、次いで(一次制御回路による)論理スロット、次いで分散スロットの開示される動的階層スケジューリングは、有利には、階層レベルにわたって分散されたスケジューリングインテリジェンスを伴う効率的分散を提供し得る。
【0188】
いくつかの実施形態では、キックスロットマネージャ350は、追跡スロットに基づいて1つ以上の電力制御動作を実行するように構成される。例えば、制御回路は、(例えば、クロックゲーティング、電力ゲーティングなどによって)1つ以上の回路の電力状態を低減し得る。多数の追跡スロットを伴ういくつかの実施形態では、制御回路は、他の回路が追跡スロット内で待ち行列に入れられたワークを有するときであっても、他の回路の電力状態を低減することができる。例えば、制御回路は、追跡スロット内にキックを有する場合であっても、ピクセルデータマスタの電力状態を低減することができる。
【0189】
いくつかの実施形態では、スケジュールされた追跡スロットのための第1のアクションは、それが所望よりも低い電力状態にある場合、任意の関連付けられた回路の電力状態の増加である。例えば、制御回路は、ピクセルデータマスタのための電源投入レジスタに書き込むことによって、ピクセルキックを開始してもよい。一般的に言えば、デバイスは、種々のタイプの論理(例えば、キャッシュ、フィルタリング論理、光線追跡回路など)をパワーゲイトし、追跡スロットがその論理を使用するであろうとき、それらの論理ブロックに電力を供給してもよい。いくつかの実施形態では、キックスロットマネージャ350は、追跡スロットに割り当てられたキックが1つ以上のタイプの回路を使用するかどうかを示す、各追跡スロットの1つ以上のフラグを維持する。キックスロットマネージャ350は、これらの追跡スロットのスケジューリングに応答して、これらのタイプの回路が必要な電力状態を満たすようにさせ得る。
例示的な方法
【0190】
図22は、いくつかの実施形態による、論理スロットを使用してグラフィックスワークを分散させるための例示的な方法を示すフロー図である。
図22に示す方法は、とりわけ、本明細書で開示するコンピュータ回路、システム、デバイス、要素又は構成要素のいずれかと共に使用することができる。様々な実施形態では、図示の方法要素のいくつかは、同時に実行されてもよく、図示のものとは異なる順序で実行されてもよく、又は省略されてもよい。必要に応じて、追加の方法要素が実行されてもよい。
【0191】
2210において、図示の実施形態では、制御回路は、グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当てる。いくつかの実施形態では、回路は複数の論理スロットを実装し、グラフィックスプロセッササブユニットのセットは各々、複数の分散ハードウェアスロットを実装する。いくつかの実施形態では、グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有する。いくつかの実施形態では、所与のグループのサブユニットは、同じ物理的ダイ上に実装される。いくつかの実施形態では、サブユニットは、個別のフラグメント生成回路、シェーダコア回路、データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路、ジオメトリ処理回路、並びに分散ワーク負荷分散回路を含む。いくつかの実施形態では、分散ハードウェアスロットは、それぞれ、構成レジスタ、バッチ待ち行列回路、及びバッチ反復回路を含む。様々な実施形態において、サブユニット内のシェーダ回路は、その複数の分散ハードウェアスロットからワークを受信して実行するように構成される。
【0192】
「グラフィックスプロセッササブユニットのセットが各々、複数の分散ハードウェアスロットを実装する」という記載は、グラフィックスプロセッササブユニットのセットが少なくとも2つのサブユニットを含み、その各々が複数の分散ハードウェアスロットを実装することを意味する。いくつかの実施形態では、デバイスは、必ずしも複数の分散ハードウェアスロットを実装しない追加のグラフィックスプロセッササブユニット(セット内にない)を有してもよい。したがって、「複数の分散ハードウェアスロットを各々実装するグラフィックスプロセッササブユニットのセット」という句は、全ての場合において、デバイス内の全てのサブユニットが複数の分散ハードウェアスロットを実装することを意味するものと解釈されるべきではなく、単に、いくつかの事例においてそうであり、他の事例においてそうではない可能性を提供する。同様の解釈は、用語「各」を使用する本明細書の他の記述に対しても意図される。
【0193】
2220において、図示の実施形態では、制御回路は、セット内のグラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの第1のセットのための分散規則を決定する。
【0194】
2230において、図示の実施形態では、制御回路は、セット内のグラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの第2のセットのための分散規則を決定する。いくつかの実施形態では、グラフィックスワークの第2のセットに対して決定された分散規則は、グラフィックスワークの第1のセットをサブユニットの単一のグループに分散させることを示す。代替的に、グラフィックスワークの第2のセットに対して決定された分散規則は、グラフィックスワークの第2のセットを単一のサブユニットに分散させることを示し得る。
【0195】
制御回路は、グラフィックスワークの第1及び第2のセット内のワーク量に基づいて、第1及び第2の分散規則を選択してもよい。制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、第1の分散規則を決定してもよい。これらは、以下のタイプの例示的なソフトウェアオーバーライド、すなわち、どのサブユニットが第1のワークセットに利用可能であるかを示すマスク情報、指定された分散規則、第1のワークセットが展開されるべきサブユニットのグループを示すグループ情報、及びスケジューリングポリシーを示すポリシー情報の任意の適切な組み合わせを含むことができる。いくつかの実施形態では、制御回路は、複数の論理スロットのスロットのためのそれぞれの保持値を決定し、保持値は、論理スロットのためのカーネルのステータスを示す。制御回路は、それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを伴う論理スロットが、第2のより低い優先度レベルを伴う論理スロットに割り当てられたハードウェアスロットを再利用することを可能にしてもよい。
【0196】
グラフィックスワークの第1及び第2のセットは、キックであってもよい。グラフィックスワークの第1及び第2のセットは、同じキック又は異なるキックにおける計算カーネルであってもよい。したがって、いくつかの実施形態では、グラフィックスワークの第1のセットは、第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、計算キックは、少なくとも1つの他のカーネルを含み、装置は、少なくとも1つの他のカーネルに対して第1のカーネルとは異なる分散規則を選択するように構成される。
【0197】
2240において、図示の実施形態では、制御回路は、第1の分散規則に基づいて、第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定する。
【0198】
2250において、図示の実施形態では、制御回路は、第2の分散規則に基づいて、第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定する。
【0199】
2260において、図示の実施形態では、制御回路は、決定されたマッピングに従って、グラフィックスワークの第1及び第2のセットをグラフィックスプロセッササブユニットのうちの1つ以上に分散させる。
【0200】
いくつかの実施形態では、論理スロットのための制御回路は、第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサ(例えば、CSP 630)と、計算ワークグループのバッチを生成するように構成されたカーネルプロセッサ(例えば、回路640)と、計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路(例えば、回路650)とを含む。いくつかの実施形態では、制御回路は、示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路(例えば、回路620)と、割り当てられたサブユニットへの分散のために異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路(例えば、回路660)とを含む。いくつかの実施形態では、ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成される。異なるハードウェアスロットの状態は、少なくとも、例えば、無効、実行中、空、及びフラッシュを含んでもよい。
【0201】
いくつかの実施形態では、デバイスは、複数のタイプのキャッシュフラッシュ無効化動作を実行するように構成され、キャッシュフラッシュ無効化動作は、カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットについて全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作とを含み得る。
【0202】
図23は、いくつかの実施形態による、論理スロットを優先度付けするための例示的な方法を示すフロー図である。
図23に示す方法は、とりわけ、本明細書で開示するコンピュータ回路、システム、デバイス、要素又は構成要素のいずれかと共に使用することができる。様々な実施形態では、図示の方法要素のいくつかは、同時に実行されてもよく、図示のものとは異なる順序で実行されてもよく、又は省略されてもよい。必要に応じて、追加の方法要素が実行されてもよい。
【0203】
2310において、図示の実施形態では、制御回路は、ソフトウェア指定グラフィックスワークの第1のセットと、グラフィックスワークの第1のセットのためのソフトウェア指示優先度情報とを受信する。
【0204】
2320において、図示の実施形態では、制御回路は、グラフィックスワークの第1のセットを、デバイスによって実装された複数の論理スロットのうちの第1の論理スロットに割り当てる。
【0205】
2330において、図示の実施形態では、制御回路は、論理スロットと、デバイスのグラフィックスサブユニットによって実装された分散ハードウェアスロットとの間のマッピングを決定し、マッピングは、優先度が閾値優先度レベルを上回る論理スロットのために、各サブユニットにおける閾値数のハードウェアスロットを予約する。いくつかの実施形態では、論理スロットの第1のサブセットは高優先度スロットであり、残りの論理スロットは低優先度スロットである。これらの実施形態では、制御回路は、ソフトウェア指示優先度情報に基づいて、グラフィックスワークの第1のセットを第1の論理スロットに割り当ててもよい。他の実施形態では、優先度は、様々な他の技術を使用して符号化及び追跡され得る。
【0206】
2340において、図示の実施形態では、制御回路は、マッピングのうちの1つに従って、グラフィックスワークの第1のセットをグラフィックスプロセッササブユニットのうちの1つ以上に分散させる。
【0207】
いくつかの実施形態では、制御回路(例えば、分散型スロットリソースアロケータ回路)は、第1のソフトウェア指示優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にする、再利用手順を実行するように構成される。
【0208】
いくつかの実施形態では、グラフィックスワークの第1のセットのためのソフトウェア入力(例えば、スロット保持コマンド)に基づいて、制御回路は、グラフィックスワークの第1のセットのための処理の完了後、第1の論理スロットのための分散ハードウェアスロットのマッピングを維持するように構成される。いくつかの実施形態では、制御回路は、マッピングされた分散スロットを解放することを示すソフトウェア入力の後にのみ、グラフィックスワークの第1のセットのためのマッピングされた分散ハードウェアスロットを別の論理スロットに割り当てる。
【0209】
いくつかの実施形態では、制御回路は、グラフィックスワークの第1のセットのためのステータス情報をソフトウェアに提供する。制御回路は、種々のステータス状態をサポートしてもよく、限定ではないが、依存関係の待機、グラフィックスワークの第1のセットのための構成データの待機、割り当て分散スロットの待機、ハードウェアリソースの待機、空、プログラミング完了、論理スロットの待機、割り当て解除、及び記憶されたコンテキストを含んでもよい。ステータス情報は、例えば、第1の論理スロットを識別し、割り当てられた分散ハードウェアスロットを識別し、又はグラフィックスワークの第1のセットの実行に関連付けられたタイムスタンプ情報を示し得る。
【0210】
制御回路は、優先度情報に加えて、又は優先度情報の代わりに、様々なソフトウェア制御又はオーバーライド機能をサポートすることができ、限定ではないが、セット内のグラフィックスプロセッササブユニットの一部のみに分散させるか、又はセット内のグラフィックスプロセッササブユニットの全てに分散させるかを示す指定された分散規則、グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報、どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報、及びスケジューリングポリシーを示すポリシー情報を含む。
【0211】
いくつかの実施形態では、デバイスは、マッピングのための分散規則を決定するように構成された制御ストリームプロセッサ回路と、ソフトウェア入力、制御ストリームプロセッサ回路からの決定された分散規則、分散スロット状態情報に基づいてマッピングを決定するように構成された分散スロットリソースアロケータ回路とを含む。
【0212】
図24は、いくつかの実施形態による、アフィニティベースのスケジューリングのための例示的な方法を示すフロー図である。
図24に示す方法は、とりわけ、本明細書で開示するコンピュータ回路、システム、デバイス、要素又は構成要素のいずれかと共に使用することができる。様々な実施形態では、図示の方法要素のいくつかは、同時に実行されてもよく、図示のものとは異なる順序で実行されてもよく、又は省略されてもよい。必要に応じて、追加の方法要素が実行されてもよい。
【0213】
2410において、図示の実施形態では、制御回路(例えば、カーネルウォーカ回路)は、グラフィックスワーク(例えば、計算カーネル)のソフトウェア指定されたセットと、グラフィックスプロセッササブユニットのグループへのグラフィックスワークのセットの部分のソフトウェア指示されたマッピングとを受信する。第1のグループのサブユニットは第1のキャッシュを共有することができ、第2のグループのサブユニットは第2のキャッシュを共有することができる。マッピングは、グラフィックスサブユニットの特定のグループを識別してもしなくてもよいことに留意されたい。むしろ、マッピングは、計算カーネルの複数の部分がグラフィックスプロセッササブユニットの同じグループに割り当てられるべきであることを指定することができるが、ハードウェアがグラフィックスプロセッササブユニットのどのグループを実際に割り当てるかを決定することを可能にすることができる。
【0214】
2420において、図示の実施形態では、制御回路は、マッピングに基づいて、グラフィックスワークのセットの第1のサブセットをグラフィックスサブユニットの第1のグループに割り当て、グラフィックスワークのセットの第2のサブセットをグラフィックスサブユニットの第2のグループに割り当てる。
【0215】
制御回路は、構成レジスタ内に、グラフィックスワークのセットの部分のグラフィックスプロセッササブユニットのグループへの複数のマッピングを記憶するように構成され得る。
【0216】
カーネルウォーカ回路は、計算カーネルの部分を決定するように構成された一次カーネルウォーカ回路(例えば、
図16の要素1610)と、ワークグループのバッチを決定するためにグラフィックスサブユニットの第1のグループに割り当てられた計算カーネルの部分を反復するように構成された第1のグループウォーカ回路(例えば、
図16の要素1620)と、ワークグループのバッチを決定するためにグラフィックスサブユニットの第2のグループに割り当てられた計算カーネルの部分を反復するように構成された第2のグループウォーカ回路とを含むことができる。カーネルウォーカ回路は、第1及び第2のグループウォーカ回路によって決定されたワークグループのバッチの中から選択するように構成されたグループウォーカアービトレーション回路(例えば、
図16の要素1630)と、グループウォーカアービトレーション回路によって選択されたバッチを、選択されたグループウォーカ回路に対応するサブユニットのグループ内の1つ以上のグラフィックスサブユニットに割り当てるように構成されたサブユニット割り当て回路(例えば、mGPU割り当て回路650)とを更に含むことができる。
【0217】
いくつかの実施形態では、デバイスは、計算カーネルのためにそれらの割り当てられた部分の全てをディスパッチしたサブユニットの1つ以上の他のグループのセットを決定し、サブユニットの第1のグループをターゲットとするものとしてマッピングによって示された計算カーネルの少なくとも第1の部分を、サブユニットの1つ以上の他のグループのグループに割り当てるように構成されたワークシェアリング制御回路を含む。
【0218】
いくつかの実施形態では、制御回路は、1つ以上の動作モードにおいて、アフィニティベースのワーク分散を無効にする。制御回路は、一次元カーネル、二次元カーネル、及び三次元カーネルを含む複数の次元の計算カーネルのためのグラフィックスプロセッササブユニットアフィニティマップのグループへの計算カーネルの部分のマッピングをサポートし得る。
【0219】
いくつかの実施形態では、コンピューティングデバイスによって実行可能な命令を記憶した非一時的コンピュータ可読媒体は、計算カーネルと、グラフィックスプロセッササブユニットのグループへの計算カーネルの部分の対応するマッピングとを受信することであって、計算カーネル及びマッピングは命令によって指定され、マッピングは、グラフィックスプロセッササブユニットの所与のグループにマッピングされた計算カーネルの部分のセットに対するキャッシュアフィニティを示す、ことと、マッピングに基づいて、計算カーネルの第1のサブセットをグラフィックスサブユニットの第1のグループに割り当て、計算カーネルの第2のサブセットをグラフィックスサブユニットの第2のグループに割り当てることとを含む動作を実行する。
【0220】
図25は、いくつかの実施形態による、キックスロットマネージャ動作のための例示的な方法を示すフロー図である。
図25に示す方法は、とりわけ、本明細書で開示するコンピュータ回路、システム、デバイス、要素又は構成要素のいずれかと共に使用することができる。様々な実施形態では、図示の方法要素のいくつかは、同時に実行されてもよく、図示のものとは異なる順序で実行されてもよく、又は省略されてもよい。必要に応じて、追加の方法要素が実行されてもよい。
【0221】
2510において、図示の実施形態では、制御回路(例えば、スロットマネージャ回路)は、追跡スロット回路のエントリを使用して、グラフィックスワークのセットのためのソフトウェア指定情報を記憶し、情報は、ワークのタイプ、グラフィックスワークの他のセットへの依存関係、及びグラフィックスワークのセットのためのデータのロケーションを含む。
【0222】
いくつかの実施形態では、追跡スロット回路は、グラフィックスワークのセットに関連付けられた様々な情報を照会するためにソフトウェアアクセス可能である。これは、例えば、グラフィックスワークのセットについてのステータス、グラフィックスワークのセットの実行に関連付けられたタイムスタンプ情報、論理一次スロットを示す情報、及び1つ以上の分散ハードウェアスロットを示す情報を含み得る。いくつかの実施形態では、追跡スロット回路は、グラフィックスワークのセットについて少なくとも以下のステータス状態を示すステータス値をサポートする:空、レジスタフェッチ開始、グラフィックスワークの1つ以上の他のセットの待機、論理スロットリソースの待機、分散ハードウェアスロットリソースの待機、及び実行中。
【0223】
2520において、図示の実施形態では、制御回路は、ロケーションから、グラフィックスワークのセットのためのシェーダコアリソースを割り当てる前に、グラフィックスワークのセットのための構成レジスタデータをプリフェッチする。プリフェッチは、グラフィックスワークのセットのための追跡スロットの構成後であるが、制御回路がグラフィックスワークのセットを開始することを決定する前(例えば、その全ての依存関係が満たされる前)に行われ得ることに留意されたい。制御回路は、プリフェッチをいつ開始するかを決定するための種々の基準を利用してもよい。プリフェッチは、共有メモリ(制御回路の複数のインスタンス間で共有され得るか、非GPUプロセッサと共有され得るか、又はその両方であり得る)からスロットマネージャ回路のSRAMメモリ要素に実行されてもよい。
【0224】
いくつかの実施形態では、制御回路は、構成レジスタのプログラミングの完了前に、グラフィックスワークのセットの部分を、グラフィックスワークのセットに割り当てられたハードウェアスロットに送信する。ハードウェアスロットは、グラフィックスワークのセットの受信された部分のための待ち行列回路を含んでもよい。
【0225】
2530において、図示の実施形態では、制御回路は、プリフェッチされたデータを使用して、グラフィックスワークのセットのための構成レジスタをプログラムする。構成レジスタは、グラフィックスワークのセットのプロパティ、グラフィックスワークのセットのためのデータのロケーション、グラフィックスワークのセットを処理するためのパラメータなどを指定することができる。構成レジスタは、グラフィックスワークのセットによって処理されるデータを記憶するデータレジスタとは異なる場合がある。
【0226】
2540において、図示の実施形態では、制御回路は、依存関係に従って、グラフィックスプロセッサ回路によるグラフィックスワークのセットの処理を開始する。制御回路は、グラフィックスワークのセットを論理一次スロットに割り当て(構成レジスタデータの少なくとも一部は、論理一次スロットの構成レジスタのためのものであってもよい)、論理スロットを1つ以上の分散ハードウェアスロットに割り当ててもよい(構成レジスタデータの少なくとも一部は、1つ以上の分散ハードウェアスロットの構成レジスタのためのものであってもよい)。
【0227】
いくつかの実施形態では、制御回路は、追跡スロット回路のエントリからグラフィックスワークのセットを開始すると共に、グラフィックスワークのセットに関する情報に基づいて、グラフィックスワークのセットに関連付けられた1つ以上の回路に対して、低電力モードから高電力モードへの増加を開始するように構成される。
【0228】
いくつかの実施形態では、グラフィックス命令は、グラフィックスワークのセットについての情報(例えば、ワークのタイプ、グラフィックスワークの他のセットへの依存関係、及びグラフィックスワークのセットについてのデータのロケーションを示す)を記憶することを指定し、追跡スロット回路に問い合わせて、グラフィックスワークのセットについてのステータス情報(例えば、空、レジスタフェッチ開始、グラフィックスワークの1つ以上の他のセットの待機、論理スロットリソースの待機、分散ハードウェアスロットリソースの待機、及び実行中、グラフィックスワークのセットの実行に関連付けられたタイムスタンプ情報、割り当てられた論理一次スロットを示す情報、及び割り当てられた分散ハードウェアスロットを示す情報の中からのステータス)を決定する。
【0229】
いくつかの実施形態では、グラフィックスワークのセットに対する停止コマンドに応答して、制御回路は、追跡スロットの現在のステータスに応じて異なる動作を実行するように構成される。例えば、制御回路は、論理一次スロットが割り当てられていないという決定に応答して、追跡スロット回路のエントリをリセットしてもよい。別の例として、制御回路は、論理一次スロットが割り当てられたという決定に応答して、論理一次スロットの割り当てを解除し、追跡スロット回路のエントリをリセットしてもよい。更に別の例として、制御回路は、1つ以上の分散ハードウェアスロットが割り当てられているという決定に応答して、1つ以上のコンテキストスイッチ動作を行い、1つ以上の分散ハードウェアスロットの割り当てを解除し、論理一次スロットの割り当てを解除し、追跡スロット回路のエントリをリセットしてもよい。
例示的なデバイス
【0230】
次に
図26を参照すると、デバイス2600の例示的な実施形態を示すブロック図が示されている。いくつかの実施形態では、デバイス2600の要素は、システムオンチップ内に含まれてもよい。いくつかの実施形態では、デバイス2600は、バッテリ駆動され得るモバイルデバイスに含まれてもよい。したがって、デバイス2600による電力消費は重要な設計考慮事項であり得る。図示した実施形態では、デバイス2600は、ファブリック2610、コンピュートコンプレックス2620、入力/出力(I/O)ブリッジ2650、キャッシュ/メモリコントローラ2645、グラフィックスユニット2675、及びディスプレイユニット2665を含む。いくつかの実施形態では、図示した構成要素に加えて、又はその代わりに、デバイス2600は、ビデオプロセッサエンコーダ及びデコーダ、画像処理要素又は認識要素、コンピュータビジョン要素などの他の構成要素(図示せず)を含んでもよい。
【0231】
ファブリック2610は、様々な相互接続、バス、MUX、コントローラなどを含んでもよく、デバイス2600の様々な要素間の通信を容易にするように構成されてもよい。いくつかの実施形態では、ファブリック2610の部分は、様々な異なる通信プロトコルを実装するように構成されてもよい。他の実施形態では、ファブリック2610は単一の通信プロトコルを実装してもよく、ファブリック2610に連結される要素は単一の通信プロトコルからその他の通信プロトコルに内部で変換してもよい。
【0232】
図示する実施形態では、コンピュートコンプレックス2620は、バスインタフェースユニット(BIU)2625、キャッシュ2630、並びにコア2635及びコア2640を含む。様々な実施形態では、コンピュートコンプレックス2620は、様々な数のプロセッサ、プロセッサコア及びキャッシュを含んでもよい。例えば、コンピュートコンプレックス2620は、1、2又は4個のプロセッサコア、又は任意の他の好適な数を含んでもよい。一実施形態では、キャッシュ2630は、セットアソシエイティブL2キャッシュである。いくつかの実施形態では、コア2635及び2640は、内部命令及び/又はデータキャッシュを含み得る。いくつかの実施形態では、ファブリック2610、キャッシュ2630、又はデバイス2600内の他の場所のコヒーレンシユニット(図示せず)は、デバイス2600の様々なキャッシュ間のコヒーレンシを維持するように構成されてもよい。BIU2625は、コンピュートコンプレックス2620とデバイス2600の他の要素との間の通信を管理するように構成されてもよい。コア2635及びコア2640などのプロセッサコアは、オペレーティングシステム命令及びユーザアプリケーション命令を含み得る特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されてもよい。
【0233】
キャッシュ/メモリコントローラ2645は、ファブリック2610と1つ以上のキャッシュ及び/又はメモリとの間のデータの転送を管理するように構成されてもよい。例えば、キャッシュ/メモリコントローラ2645は、L3キャッシュに連結されてもよく、これは次にシステムメモリに連結されてもよい。他の実施形態では、キャッシュ/メモリコントローラ2645は、メモリに直接結合されてもよい。いくつかの実施形態では、キャッシュ/メモリコントローラ2645は、1つ以上の内部キャッシュを含み得る。
【0234】
本明細書で使用するとき、用語「連結された」は、要素間の1つ以上の接続を示すことができ、連結は介在要素を含んでもよい。例えば、
図26では、グラフィックスユニット2675は、ファブリック2610及びキャッシュ/メモリコントローラ2645を介してメモリに「連結されている」と記載されてもよい。対照的に、
図26の図示する実施形態では、介在要素が存在しないため、グラフィックスユニット2675はファブリック2610に「直接結合されている」。
【0235】
グラフィックスユニット2675は、1つ以上のプロセッサ、例えば1つ以上のグラフィックスプロセッシングユニット(GPU)を含んでもよい。グラフィックスユニット2675は、例えば、OPENGL(登録商標)、Metal、又はDIRECT3D(登録商標)命令などの、グラフィックス指向の命令を受信することができる。グラフィックスユニット2675は、特化したGPU命令を実行してもよいし、受信したグラフィックス指向の命令に基づいて他の動作を実行してもよい。グラフィックスユニット2675は一般的に、大ブロックのデータを並行して処理するように構成されてもよく、ディスプレイに出力するためにフレームバッファに画像を構築してもよく、ディスプレイは、デバイスに含まれてもよく、又は別個のデバイスであってもよい。グラフィックスユニット2675は、1つ以上のグラフィックス処理パイプラインに変換、照明、三角形、及びレンダリングのエンジンを含んでもよい。グラフィックスユニット2675は、表示画像のための画素情報を出力することができる。様々な実施形態では、グラフィックスユニット2675は、グラフィックスプログラムを実行するように構成された高並列実行コアを含むことができるプログラム可能なシェーダ回路を含んでもよく、それは、画素タスク、頂点タスク、及び計算タスク(グラフィックス関連であっても、そうでなくてもよい)を含んでもよい。
【0236】
いくつかの実施形態では、グラフィックスユニット2675は、追跡スロット、論理スロット、分散ハードウェアスロットなどを実装する様々な開示された回路を含む。
【0237】
ディスプレイユニット2665は、フレームバッファからデータを読み取り、表示のための画素値のストリームを提供するように構成されてもよい。ディスプレイユニット2665は、いくつかの実施形態では、ディスプレイパイプラインとして構成することができる。加えて、ディスプレイユニット2665は、出力フレームを生成するように複数のフレームをブレンドするように構成されてもよい。更に、ディスプレイユニット2665は、ユーザディスプレイ(例えば、タッチスクリーン又は外部ディスプレイ)に結合するための1つ以上のインタフェース(例えば、MIPI(登録商標)又は埋め込みディスプレイポート(eDP))を含んでもよい。
【0238】
I/Oブリッジ2650は、例えば、ユニバーサルシリアルバス(USB)通信、セキュリティ、オーディオ、及び/又は低電力常時オン機能を実装するように構成された様々な要素を含み得る。I/Oブリッジ2650はまた、例えば、パルス幅変調(PWM)、汎用入出力(GPIO)、シリアル周辺インタフェース(SPI)、及びインターインテグレーテッドサーキット(I2C)などのインタフェースを含んでもよい。様々なタイプの周辺機器及びデバイスは、I/Oブリッジ2650を介してデバイス2600に連結されてもよい。
【0239】
いくつかの実施形態では、デバイス2600は、ファブリック2610又はI/Oブリッジ2650に接続され得るネットワークインタフェース回路(明示的に図示せず)を含む。ネットワークインタフェース回路は、有線、無線、又はその両方であり得る様々なネットワークを介して通信するように構成され得る。例えば、ネットワークインタフェース回路は、有線ローカルエリアネットワーク、無線ローカルエリアネットワーク(例えば、WiFiを介して)、又は広域ネットワーク(例えば、インターネット又は仮想プライベートネットワーク)を介して通信するように構成されてもよい。いくつかの実施形態では、ネットワークインタフェース回路は、1つ以上の無線アクセス技術を使用する1つ以上のセルラーネットワークを介して通信するように構成される。いくつかの実施形態では、ネットワークインタフェース回路は、デバイス間通信(例えば、Bluetooth(登録商標)又はWiFi Direct)などを使用して通信するように構成される。様々な実施形態では、ネットワークインタフェース回路は、様々なタイプの他のデバイス及びネットワークへの接続性をデバイス2600に提供してもよい。
例示的な用途
【0240】
ここで
図27を参照すると、上述の回路、デバイス、又はシステムのいずれかを含み得る様々なタイプのシステムが示されている。本明細書で説明する技術のうちの1つ以上を組み込むか、又は別様に利用することができるシステム又はデバイス2700は、広範囲のエリアで利用され得る。例えば、システム又はデバイス2700は、デスクトップコンピュータ2710、ラップトップコンピュータ2720、タブレットコンピュータ2730、セルラーもしくは携帯電話2740、又はテレビ2750(又はテレビに連結されたセットトップボックス)などのシステムのハードウェア一部として利用され得る。
【0241】
同様に、開示された要素は、スマートウォッチ又は健康監視デバイスなどのウェアラブルデバイス2760において利用され得る。スマートウォッチは、多くの実施形態において、様々な異なる機能、例えば、電子メールへのアクセス、セルラーサービス、カレンダー、健康監視などを実装し得る。ウェアラブルデバイスはまた、ユーザのバイタルサインの監視、接触追跡などの疫学機能の実行、緊急医療サービスへの通信の提供などの健康監視機能のみを実行するように設計されてもよい。首に装着されるデバイス、人体に埋め込み可能なデバイス、拡張及び/又は仮想現実に基づくものなどのコンピュータ生成現実体験を提供するように設計された眼鏡又はヘルメットなどを含む、他のタイプのデバイスも考えられる。
【0242】
システム又はデバイス2700はまた、様々な他のコンテキストにおいて使用され得る。例えば、システム又はデバイス2700は、クラウドベースサービス2770を実装する専用サーバ又は共有ハードウェアなどのサーバコンピュータシステムのコンテキストにおいて利用されてもよい。更に、システム又はデバイス2700は、冷蔵庫、サーモスタット、セキュリティカメラなど、家庭で一般に見られるデバイス2780を含む、広範な専用の日常デバイスにおいて実装され得る。そのようなデバイスの相互接続は、「モノのインターネット」(IoT)と呼ばれることが多い。要素はまた、様々な輸送形態で実装されてもよい。例えば、システム又はデバイス2700は、様々なタイプの車両2790の制御システム、誘導システム、娯楽システムなどにおいて使用され得る。
【0243】
図27に示される用途は、単なる例示であり、開示されるシステム又はデバイスの潜在的な将来の用途を限定することを意図するものではない。他の例示的な用途は、ポータブルゲームデバイス、音楽プレーヤ、データ記憶デバイス、無人航空機などを含むが、これらに限定されない。
例示的なコンピュータ可読媒体
【0244】
本開示は、様々な例示的な回路について上記により詳細に説明した。本開示は、そのような回路を含む実施形態だけでなく、そのような回路を指定する設計情報を含むコンピュータ可読記憶媒体もまた網羅することが意図される。したがって、本開示は、開示された回路を含む装置だけでなく、開示された回路を含むハードウェア(例えば、集積回路)を生成するように構成された製造システムによって認識されるフォーマットで回路を指定する記憶媒体も網羅する特許請求の範囲を支持することを意図する。そのような記憶媒体に対する特許請求の範囲は、例えば、回路設計物を生成するが、それ自体は設計物を製造しない実在物を網羅することを意図する。
【0245】
図28は、いくつかの実施形態による、回路設計情報を記憶する例示的な非一時的コンピュータ可読記憶媒体を示すブロック図である。図示した実施形態では、半導体製造システム2820は、非一時的コンピュータ可読媒体2810に記憶された設計情報2815を処理し、設計情報2815に基づいて集積回路2830を製造するように構成されている。
【0246】
非一時的コンピュータ可読記憶媒体2810は、様々な適切な種類のメモリデバイス又は記憶デバイスのいずれかを含んでもよい。非一時的コンピュータ可読記憶媒体2810は、インストール媒体、例えば、CD-ROM、フロッピーディスク又はテープデバイス、DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAMなどの、コンピュータシステムメモリ又はランダムアクセスメモリ、フラッシュ、磁気媒体、例えばハードドライブ、又は光記憶装置などの、不揮発性メモリ、レジスタ、又はその他の類似の種類のメモリ要素などであってもよい。非一時的コンピュータ可読記憶媒体2810は、他の種類の非一時的メモリ、又はそれらの組み合わせも含んでもよい。非一時的コンピュータ可読記憶媒体2810は、異なるロケーション、例えば、ネットワークを通じて接続されている異なるコンピュータシステムに存在し得る2つ以上の記憶媒体を含んでもよい。
【0247】
設計情報2815は、VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDLなど(これらに限定されない)のハードウェア記述言語を含む様々な適切なコンピュータ言語のいずれかを使用して指定され得る。設計情報2815は、集積回路2830の少なくとも一部を製造するために半導体製造システム2820によって使用可能であり得る。設計情報2815のフォーマットは、少なくとも1つの半導体製造システム2820によって認識され得る。いくつかの実施形態では、設計情報2815はまた、集積回路2830の合成、レイアウト、又はその両方を指定する1つ以上のセルライブラリを含んでもよい。いくつかの実施形態では、設計情報は、セルライブラリ要素及びそれらの接続性を指定するネットリストの形態で、全体的に又は部分的に指定される。設計情報2815は、単独で、対応する集積回路の製造に十分な情報を含んでもよいし、含まなくてもよい。例えば、設計情報2815は、製造される回路要素を指定してもよいが、それらの物理的レイアウトを指定しなくてもよい。この場合、設計情報2815は、指定された回路を実際に製造するためにレイアウト情報と組み合わされる必要があり得る。
【0248】
集積回路2830は、様々な実施形態において、メモリ、アナログ又は混合信号回路などの1つ以上のカスタムマクロセルを含むことができる。そのような場合、設計情報2815は、含まれるマクロセルに関連する情報を含んでもよい。このような情報としては、限定するものではないが、回路図キャプチャデータベース、マスク設計データ、行動モデル、及びデバイス又はトランジスタレベルネットリストが挙げられる。本明細書で使用するとき、マスク設計データは、グラフィックスデータシステム(GDSII)、又は任意の他の好適なフォーマットに従ってフォーマットされてもよい。
【0249】
半導体製造システム2820は、集積回路を製造するように構成された様々な適切な要素のうちのいずれかを含んでもよい。これは、例えば、半導体材料を堆積させること(例えば、ウェハ上に、これはマスキングを含み得る)と、材料を除去すること、堆積された材料の形状を変更すること、材料を改質すること(例えば、材料をドープすることによって、又は紫外線処理を使用して誘電率を変更することによって)、などのための要素を含んでもよい。半導体製造システム2820はまた、正しい動作のために製造された回路の様々な試験を実行するように構成されてもよい。
【0250】
様々な実施形態では、集積回路2830は、設計情報2815によって指定された回路設計に従って動作するように構成されており、これは、本明細書に記載した機能のいずれかを実行することを含んでもよい。例えば、集積回路2830は、
図1B、
図2~3、
図6、
図14B、
図16、
図18、
図19A、及び
図26に示される様々な要素のいずれかを含み得る。更に、集積回路2830は、他の構成要素と共に本明細書に記載された様々な機能を実行するように構成されてもよい。更に、本明細書に記載された機能は、複数の接続された集積回路によって実行されてもよい。
例示的な実施形態
【0251】
以下の番号付けされた条項は、本明細書に開示される様々な非限定的な実施形態を示す。
セットA
A1.装置であって、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを、第1及び第2の論理スロットに割り当て、
セット内のグラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの第1のセットのための第1の分散規則を決定し、
セット内のグラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの第2のセットのための第2の分散規則を決定し、
第1の分散規則に基づいて、第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
第2の分散規則に基づいて、第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
決定されたマッピングに従って、グラフィックスワークの第1及び第2のセットをグラフィックスプロセッササブユニットのうちの1つ以上に分散させる、ように構成された制御回路と、を備える装置。
A2.グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
第2の分散規則は、グラフィックスワークの第2のセットを単一のグループのサブユニットに分散させることを示す、セットA内のいずれかの前の条項の装置。
A3.所与のグループのサブユニットは、同じ物理的ダイ上に実装される、セットA内のいずれかの前の条項の装置。
A4.第2の分散規則は、グラフィックスワークの第2のセットを単一のサブユニットに分散させることを示す、セットA内のいずれかの前の条項の装置。
A5.制御回路は、グラフィックスワークの第1及び第2のセット内のワーク量に基づいて、第1及び第2の分散規則を選択するように構成される、セットA内のいずれかの前の条項の装置。
A6.グラフィックスワークの第1のセットは、第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、計算キックは、少なくとも1つの他のカーネルを含み、装置は、少なくとも1つの他のカーネルに対して第1のカーネルとは異なる分散規則を選択するように構成される、セットA内のいずれかの前の条項の装置。
A7.制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、第1の分散規則を決定するように構成される、セットA内のいずれかの前条項の装置。
A8.装置は、以下のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて第1の分散規則を選択するように構成される、セットA内のいずれかの前の条項の装置。
A9.グラフィックスプロセッササブユニットは、それぞれの
フラグメント生成回路と、
シェーダコア回路と、
データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路と、
ジオメトリ処理回路と、
分散ワーク負荷分散回路と、を含む、セットA内のいずれかの前の条項の装置。
A10.分散ハードウェアスロットは、それぞれの
構成レジスタと、
バッチ待ち行列回路と、
バッチ反復回路と、を含み、
サブユニット内のシェーダ回路は、その複数の分散ハードウェアスロットからワークを受信して実行するように構成される、セットA内のいずれかの前の条項の装置。
A11.論理スロットのための制御回路は、
第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサと、
計算ワークグループのバッチを生成するように構成されたカーネルプロセッサと、
計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を含み、
制御回路は、
示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路と、
割り当てられたサブユニットへの分散のために、異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路と、を含む、セットA内のいずれかの前の条項の装置。
A12.ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成され、異なるハードウェアスロットの状態は、少なくとも、無効、実行中、空、及びフラッシュを含む、セットA内のいずれかの前の条項の装置。
A13.装置は、
カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、
1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットのための全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作と、を実行するように構成される、セットA内のいずれかの前の条項の装置。
A14.制御回路は、
複数の論理スロットのスロットのためのそれぞれの保持値であって、保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、を実行するように更に構成される、セットA内のいずれかの前の条項の装置。
A15.制御回路は、
第1の論理スロットのための構成レジスタのプログラミングの完了の前に、グラフィックスワークの第1のセットの部分を、グラフィックスワークの第1のセットに割り当てられた分散ハードウェアスロットであって、分散ハードウェアスロットは、グラフィックスワークの第1のセットの受信された部分のための待ち行列回路を含む、分散ハードウェアスロットに送信することを実行するように更に構成される、セットA内のいずれかの前の条項の装置。
A16.セットA内のいずれかの前の条項の装置が実行するように構成される動作の任意の組み合わせを含む、方法。
A17.設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、設計情報は、回路が、
条項A1~A15に記載の要素の任意の組み合わせを含むことを指定する、非一時的コンピュータ可読記憶媒体。
セットB
B1.装置であって、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットと、
制御回路であって、
ソフトウェア指定グラフィックスワークの第1のセットと、グラフィックスワークの第1のセットのためのソフトウェア指示優先度情報とを受信し、
グラフィックスワークの第1のセットを第1の論理スロットに割り当て、
論理スロットと分散ハードウェアスロットとの間のマッピングであって、マッピングは、優先度が閾値優先度レベルを超える論理スロットのために、各サブユニットにおける閾値数のハードウェアスロットを予約する、マッピングを決定し、
マッピングのうちの1つに従って、グラフィックスワークの第1のセットをグラフィックスプロセッササブユニットのうちの1つ以上に分散させるように構成される、制御回路と、を備える、装置。
B2.第1のセットのグラフィックスワークのためのソフトウェア入力に基づいて、制御回路が、
グラフィックスワークの第1のセットのための処理の完了後に、第1の論理スロットのための分散ハードウェアスロットのマッピングを維持し、
マッピングされた分散スロットを解放することを示すソフトウェア入力の後にのみ、グラフィックスワークの第1のセットのためのマッピングされた分散ハードウェアスロットを別の論理スロットに割り当てる、ように構成される、セットB内のいずれかの前の条項の装置。
B3.論理スロットの第1のサブセットは高優先度スロットであり、残りの論理スロットは低優先度スロットであり、制御回路は、ソフトウェア指示優先度情報に基づいて、グラフィックスワークの第1のセットを第1の論理スロットに割り当てるように構成される、セットB内のいずれかの前の条項の装置。
B4.制御回路は、グラフィックスワークの第1のセットのためのステータス情報をソフトウェアに提供するように構成される、セットB内のいずれかの前の条項の装置。
B5.制御回路は、少なくとも以下のステータス状態、すなわち、
従属関係の待機と、
グラフィックスワークの第1のセットのための構成データの待機と、
割り当て分散スロットの待機と、をサポートする、セットB内のいずれかの前の条項の装置。
B6.ステータス情報は、
第1の論理スロットの識別と、
割り当てられた分散ハードウェアスロットの識別と、
グラフィックスワークの第1のセットの実行に関連付けられたタイムスタンプ情報と、を含む、セットB内のいずれかの前の条項の装置。
B7.制御回路は、以下のタイプのソフトウェアオーバーライド、すなわち、
セット内のグラフィックスプロセッササブユニットの一部のみに分散させるか、セット内のグラフィックスプロセッササブユニットの全てに分散させるかを示す指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、に基づいてマッピングを決定するように構成される、セットB内のいずれかの前の条項の装置。
B8.制御回路は、以下の追加のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいてマッピングを決定するように構成される、セットB内のいずれかの前の条項の装置。
B9.
マッピングのための分散規則を決定するように構成された制御ストリームプロセッサ回路と、
分散型スロットリソースアロケータ回路であって、
ソフトウェア入力と、
制御ストリームプロセッサ回路からの決定された分散規則と、
分散スロット状態情報と、に基づいてマッピングを決定するように構成される分散型スロットリソースアロケータ回路と、を更に備える、セットB内のいずれかの前の条項の装置。
B10.分散型スロットリソースアロケータ回路は、第1のソフトウェア指示優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にする、再利用手順を実行するように構成される、セットB内のいずれかの前の条項の装置。
B11.セットB内のいずれかの前の条項の装置が実行するように構成される動作の任意の組み合わせを含む、方法。
B12.設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、設計情報は、回路が、
条項B1~B10に記載の要素の任意の組み合わせを含むことを指定する、非一時的コンピュータ可読記憶媒体。
セットC
C1.装置であって、
グラフィックスプロセッササブユニットの第1及び第2のグループであって、サブユニットの第1のグループが第1のキャッシュを共有し、サブユニットの第2のグループが第2のキャッシュを共有する、グラフィックスプロセッササブユニットの第1及び第2のグループと、
分散回路であって、
グラフィックスワークのソフトウェア指定されたセットと、グラフィックスプロセッササブユニットのグループへのグラフィックスワークのセットの部分のソフトウェア指示マッピングとを受信し、
マッピングに基づいて、グラフィックスワークのセットの第1のサブセットをグラフィックスサブユニットの第1のグループに割り当て、グラフィックスワークのセットの第2のサブセットをグラフィックスサブユニットの第2のグループに割り当てるように構成される、分散回路と、を備える、装置。
C2.構成レジスタ内に、グラフィックスワークのセットの部分のグラフィックスプロセッササブユニットのグループへの複数のマッピングを記憶するように構成される制御回路を含む、セットC内のいずれかの前の条項の装置。
C3.グラフィックスワークのセットは計算カーネルである、セットC内のいずれかの前の条項の装置。
C4.分散回路は、
計算カーネルの部分を決定するように構成された一次カーネルウォーカ回路と、
グラフィックスサブユニットの第1のグループに割り当てられた計算カーネルの部分を反復してワークグループのバッチを決定するように構成された第1のグループウォーカ回路と、
グラフィックスサブユニットの第2のグループに割り当てられた計算カーネルの部分を反復してワークグループのバッチを決定するように構成された第2のグループウォーカ回路と、を含む、セットC内のいずれかの前の条項の装置。
C5.分散回路は、
第1及び第2のグループウォーカ回路によって決定されたワークグループのバッチの中から選択するように構成されたグループウォーカアービトレーション回路と、
グループウォーカアービトレーション回路によって選択されたバッチを、選択されたグループウォーカ回路に対応するサブユニットのグループ内の1つ以上のグラフィックスサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を更に含む、セットC内のいずれかの前の条項の装置。
C6.
ワークシェアリング制御回路であって、
グラフィックスワークのセットのために割り当てられた部分の全てをディスパッチしたサブユニットの1つ以上の他のグループのセットを決定し、
サブユニットの第1のグループをターゲットとするものとしてマッピングによって示されたグラフィックスワークのセットの少なくとも第1の部分を、1つ以上の他のグループのサブユニットのうちの1つのグループに割り当てるように構成される、ワークシェアリング回路を更に含む、セットC内のいずれかの前の条項の装置。
C7.装置は、一次元、二次元、及び三次元を含む複数の次元のためのグラフィックスプロセッササブユニットアフィニティマップのグループへのグラフィックスワークのセットの部分のマッピングをサポートする、セットC内のいずれかの前の条項の装置。
C8.
複数の論理スロットを実装する回路であって、第1及び第2のグループ内のサブユニットのセットは各々、複数の分散ハードウェアスロットを実装する、回路と、
制御回路であって、
グラフィックスワークのセットを第1の論理スロットに割り当て、
セット内のグラフィックスプロセッササブユニットの全てに分散させるか、グラフィックスプロセッササブユニットの一部のみに分散させるかを示す、グラフィックスワークのセットのための分散規則を決定し、
分散規則に基づいて、及びグラフィックスワークのセットの部分のグラフィックスプロセッササブユニットのグループへのマッピングに基づいて、第1の論理スロットと1つ以上の分散ハードウェアスロットのそれぞれのセットとの間のマッピングを決定するように構成される、制御回路と、を更に備える、セットC内のいずれかの前の条項の装置。
C9.コンピューティングデバイスによって実行可能である命令を記憶した非一時的コンピュータ可読媒体であって、
グラフィックスワークのセットと、
グラフィックスワークのセットの部分のグラフィックスプロセッササブユニットのグループへの対応するマッピングであって、グラフィックスワークのセット及びマッピングは命令によって指定され、マッピングは、グラフィックスプロセッササブユニットの所与のグループにマッピングされたグラフィックスワークのセットの部分のセットに対するキャッシュアフィニティを示す、マッピングとを受信することと、
マッピングに基づいて、グラフィックスワークのセットの第1のサブセットをグラフィックスサブユニットの第1のグループに割り当て、グラフィックスワークのセットの第2のサブセットをグラフィックスサブユニットの第2のグループに割り当てることと、を含む動作を実行する、非一時的コンピュータ可読媒体。
C10.動作は、1つ以上の動作モードにおいてアフィニティベースのワーク分散を無効化することを更に含む、セットC内のいずれかの前の条項の非一時的コンピュータ可読媒体。
C11.動作は、複数の異なるマッピングに基づいて、グラフィックスワークのセットのサブセットをグラフィックスサブユニットのグループに割り当てることを含み、複数の異なるマッピングは、グラフィックスワークのセットの少なくとも2つの次元のためのマッピングを含む、セットC内のいずれかの前の条項の非一時的コンピュータ可読媒体。
C12.コンピューティングデバイスは、複数の論理スロットを実装するグラフィックス回路を含み、第1及び第2のグループ内のサブユニットが各々、複数の分散ハードウェアスロットを実装し、動作は、論理スロットと、グラフィックスワークのセットのための1つ以上の分散ハードウェアスロットのそれぞれのセットとの間のマッピングを少なくとも部分的に制御するために、1つ以上のソフトウェアオーバーライドを指定することを更に含む、セットC内のいずれかの前の条項の非一時的コンピュータ可読媒体。
C13.1つ以上のソフトウェアオーバーライドは、
どのサブユニットがグラフィックスワークのセットに利用可能であるかを示すマスク情報と、
分散幅を示す指定された分散規則と、
グラフィックスワークのセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、の少なくとも1つを含む、セットC内のいずれかの前の条項の非一時的コンピュータ可読媒体。
C14.セットC内のいずれかの前の条項の動作の任意の組み合わせを含む、方法。
C15.設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、設計情報は、回路が、
条項C1~C8に記載された要素の任意の組み合わせを含むことを指定する、非一時的コンピュータ可読記憶媒体。
セットD
D1.装置であって、
グラフィックスプロセッサ回路と、
複数の追跡スロットのエントリを実装する追跡スロット回路と、
スロットマネージャ回路であって、
追跡スロット回路のエントリを使用して、グラフィックスワークのセットのためのソフトウェア指定情報であって、情報は、ワークのタイプ、グラフィックスワークの他のセットへの依存関係、及びグラフィックスワークのセットのためのデータのロケーションを含む、情報を記憶し、
ロケーションから、グラフィックスワークのセットのためのシェーダコアリソースを割り当てる前に、グラフィックスワークのセットのための構成レジスタデータをプリフェッチする、ように構成される、スロットマネージャ回路と、
制御回路であって、
プリフェッチされたデータを使用してグラフィックスワークのセットのためのプログラム構成レジスタをプログラムし、
依存関係に従って、グラフィックスプロセッサ回路によるグラフィックスワークのセットの処理を開始する、ように構成される、制御回路と、を備える、装置。
D2.制御回路は、
構成レジスタのプログラミングが完了する前に、グラフィックスワークのセットの部分を、グラフィックスワークのセットに割り当てられたハードウェアスロットであって、ハードウェアスロットは、グラフィックスワークのセットの受信された部分のための待ち行列回路を含む、ハードウェアスロットに送信するように更に構成される、セットD内のいずれかの前の条項の装置。
D3.制御回路は、
グラフィックスワークのセットを論理一次スロットに割り当てることであって、構成レジスタデータの少なくとも一部は、論理一次スロットの構成レジスタのためのものである、割り当てることと、
論理スロットを1つ以上の分散ハードウェアスロットに割り当てることであって、構成レジスタデータの少なくとも一部は、1つ以上の分散ハードウェアスロットの構成レジスタのためのものである、割り当てることと、を実行するように構成される、セットD内のいずれかの前の条項の装置。
D4.グラフィックスワークのセットに対する停止コマンドに応答して、スロットマネージャ回路は、
論理一次スロットが割り当てられていないという決定に応答して、追跡スロット回路のエントリをリセットし、
論理一次スロットが割り当てられたという決定に応答して、論理一次スロットの割り当てを解除し、追跡スロット回路のエントリをリセットし、
1つ以上の分散ハードウェアスロットが割り当てられているという決定に応答して、1つ以上のコンテキストスイッチ動作を行い、1つ以上の分散ハードウェアスロットの割り当てを解除し、論理一次スロットの割り当てを解除し、追跡スロット回路のエントリをリセットする、ように構成される、セットD内のいずれかの前の条項の装置。
D5.追跡スロット回路内のエントリは、
グラフィックスワークのセットのステータスと、
グラフィックスワークのセットの実行に関連付けられたタイムスタンプ情報と、
論理一次スロットを示す情報と、
1つ以上の分散ハードウェアスロットを示す情報と、を照会するためにソフトウェアアクセス可能である、セットD内のいずれかの前の条項の装置。
D6.追跡スロット回路は、グラフィックスワークのセットについて少なくとも以下のステータス状態、すなわち、空、レジスタフェッチ開始、グラフィックスワークの1つ以上の他のセットの待機、論理スロットリソースの待機、分散ハードウェアスロットリソースの待機、及び実行中を示すステータス値をサポートする、セットD内のいずれかの前の条項の装置。
D7.スロットマネージャ回路は、追跡スロット回路のエントリからグラフィックスワークのセットを開始すると共に、グラフィックスワークのセットに関する情報に基づいて、グラフィックスワークのセットに関連付けられた1つ以上の回路に対して、低電力モードから高電力モードへの増加を開始するように構成される、セットD内のいずれかの前の条項の装置。
D8.プリフェッチは、共有メモリからスロットマネージャ回路のSRAMメモリ要素へと実行される、セットD内のいずれかの前の条項の装置。
D9.プリフェッチは、共有メモリからキャッシュへと実行される、セットD内のいずれかの前の条項の装置。
D10.スロットマネージャ回路は、グラフィックスワークのセットが第1の共有リソース及び第2の共有リソースを使用することを決定するように構成され、
第1の共有リソースについて、スロットマネージャ回路は、第1の共有リソースが利用可能になるまでグラフィックスワークのセットを停止するように構成され、
第2の共有リソースについて、スロット管理回路は、第2の共有リソースが利用可能になる前にグラフィックスワークのセットが進行することを可能にし、第2の共有リソースが利用可能になる前にグラフィックスワークのセットが進行したことを報告するように構成される、セットD内のいずれかの前の条項の装置。
D11.セットD内のいずれかの前の条項の装置が実行するように構成される動作の任意の組み合わせを含む、方法。
D12.設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、設計情報は、回路が、
条項D1~D10に記載された要素の任意の組み合わせを含むことを指定する、非一時的コンピュータ可読記憶媒体。
【0252】
本明細書で使用する「...ように構成された回路の設計を指定する設計情報」という形態の語句は、その要素が満たされるために対象の回路が作製されなければならないことを意味するものではない。むしろ、この語句は、設計情報には、製造されると、指示されたアクションを実行するように構成されるか、又は指定された構成要素を含む回路について記載されていることを示す。
***
【0253】
本開示は、「一実施形態」又は「実施形態」のグループ(例えば、「いくつかの実施形態」又は「様々な実施形態」)への言及を含む。実施形態は、開示された概念の異なる実装形態又は例である。「一実施形態」、「一実施形態」、「特定の実施形態」などへの言及は、必ずしも同じ実施形態を指すものではない。具体的に開示されたものを含む多数の可能な実施形態、並びに本開示の趣旨又は範囲内にある修正又は代替が企図される。
【0254】
本開示は、開示された実施形態から生じ得る潜在的な利点を論じることができる。これらの実施形態の全ての実装形態は、必然的に、潜在的な利点のいずれか又は全てを示す。特定の実装形態について利点が実現されるかどうかは、多くの要因に依存し、そのいくつかは本開示の範囲外である。実際、特許請求の範囲内にある実装形態が、任意の開示された利点のいくつか又は全てを発揮しない場合がある理由は多く存在する。例えば、特定の実装形態は、開示された実施形態のうちの1つと併せて、1つ以上の開示された利点を無効にする又は減少させる、本開示の範囲外の他の回路を含み得る。更に、特定の実装形態(例えば、実装技術又はツール)の次善の設計実行もまた、開示された利点を無効にする又は減少させ得る。熟練した実行を想定しても、利点の実現は、実装形態が展開される環境状況などの他の要因に依然として依存し得る。例えば、特定の実装形態に供給される入力は、本開示で対処される1つ以上の問題が特定の機会に生じるのを防止することができ、その結果、その解決策の恩恵が実現されない可能性がある。起こり得る本開示の外部要因の存在を考慮すると、本明細書に記載される任意の潜在的な利点は、侵害を実証するために満たされなければならない請求項の限定として解釈されるべきではないことが明確に意図される。むしろ、そのような潜在的な利点の識別は、本開示の利益を有する設計者に利用可能な改善のタイプを例示することが意図される。そのような利点は、許容可能に記載されていること(例えば、特定の利点が「生じ得る」という記載)は、そのような利点が実際に実現され得るかどうかに関する疑念を伝えることを意図するものではなく、そのような利点の実現が、多くの場合、追加の要因に依存するという技術的現実を認識することを意図するものである。
【0255】
特に明記しない限り、実施形態は非限定的である。すなわち、開示された実施形態は、単一の実施例のみが特定の特徴に関して説明されている場合でも、本開示に基づいて作成される特許請求の範囲を限定することを意図するものではない。開示された実施形態は、それに反する記述が本開示に存在しない場合、限定的ではなく例示的であることが意図される。上記の記載は、開示される実施形態だけでなく、本開示による恩恵を受ける当業者にとって明らかとなるであろう代替物、修正例、及び均等物を網羅する請求項を可能にすることが意図される。
【0256】
例えば、本出願の特徴は、任意の好適な様式で組み合わせることができる。したがって、このような特徴の組み合わせのいずれに対しても、本願(又は、本願に対する優先権を主張する出願)の審査手続き中に、新しい特許請求を策定し得る。特に、添付の特許請求の範囲を参照すると、従属請求項からの特徴は、他の独立請求項に従属する請求項を含め、適宜、他の従属請求項の特徴と組み合わせることができる。同様に、それぞれの独立請求項からの特徴は、適宜組み合わせることができる。
【0257】
したがって、添付の従属請求項は、それぞれが単一の他の請求項に従属するように作成され得るが、追加の従属も企図される。本開示と一致する従属項における特徴の任意の組み合わせが企図され、本出願又は別の出願で特許請求され得る。要約すると、組み合わせは、添付の特許請求の範囲に具体的に列挙されるものに限定されない。
【0258】
適宜、1つのフォーマット又は法定種類(例えば、装置)で作成される請求項はまた、別のフォーマット又は法定種類(例えば、方法)の対応する請求項をサポートするように意図されることが企図される。
***
【0259】
本開示は法的文書であるため、様々な用語及び語句は、行政及び司法的解釈の対象となり得る。以下の段落、並びに本開示を通じて提供される定義は、本開示に基づいて作成された特許請求の範囲をどのように解釈するかにおいて使用されることを公的に通知する。
【0260】
単数形のアイテム(すなわち、「a」、「an」、又は「the」が先行する名詞又は名詞句)への言及は、文脈上特に明示されない限り、「1つ以上」を意味することを意図している。したがって、特許請求の範囲における「アイテム」への言及は、文脈を伴わずに、アイテムの追加のインスタンスを排除するものではない。「複数の」アイテムは、2つ以上のアイテムのセットを指す。
【0261】
「may」という語は、本明細書では許容の意味(すなわち、可能性を有する、可能である)で使用されており、義務の意味で使用されていない(すなわち、必須ではない)。
【0262】
「含む(comprising)」及び「含む(including)」という用語及びその形態は、オープンエンドであり、「限定されるものではないが、含む」を意味する。
【0263】
「又は」という用語が、選択肢のリストに関して本開示で使用される場合、文脈上特に明示されない限り、包括的な意味で使用されることが一般に理解されるであろう。したがって、「x又はy」の列挙は、「xもしくはy、又はその両方」と同等であり、したがって、1)xであるがyではない、2)yであるがxではない、及び3)xとyの両方、を包含する。一方、「x又はyのいずれかであるが、両方ではない」という語句は、「又は」が排他的な意味で使用されていることを明確にする。
【0264】
「w、x、y、z、又はそれらの任意の組み合わせ」、又は「...w、x、y、及びzのうちの少なくとも1つ」の列挙は、セット内の要素の総数までの単一要素を含む全ての可能性を網羅することを意図している。例えば、セット[w,x,y,z]の場合、これらの表現は、セットの任意の単一要素(例えば、wであるが、x、y、又はzではない)、任意の2つの要素(例えば、w及びxであるが、y又はzではない)、任意の3つの要素(例えば、w、x、及びyであるが、zではない)、及び4つ全ての要素を網羅する。したがって、「...w、x、y、及びzのうちの少なくとも1つ」という語句は、セット[w、x、y、z]の少なくとも1つの要素を指し、それによって、この要素のリストにおける全ての可能な組み合わせを網羅する。この語句は、wの少なくとも1つのインスタンス、xの少なくとも1つのインスタンス、yの少なくとも1つのインスタンス、及びzの少なくとも1つのインスタンスが存在する必要があると解釈されるべきではない。
【0265】
本開示において、様々な「ラベル」は、名詞又は名詞句に先行し得る。文脈上特に明示されない限り、特徴(例えば、「第1の回路」、「第2の回路」、「特定の回路」、「所与の回路」など)に使用される様々なラベルは、特徴の異なる例を指す。更に、特徴に適用されるとき、「第1」、「第2」、及び「第3」というラベルは、特に明記しない限り、任意のタイプの順序(例えば、空間、時間、論理など)を意味するものではない。
【0266】
本明細書で使用する「~に基づいて」という語句は、判定に影響を及ぼす1つ以上の要因を記述するために使用される。この用語は、追加の要因が決定に影響を及ぼすことがある可能性を除外しない。すなわち、決定は、指定された要因のみに基づくか、又は、指定された要因並びに他の指定されていない要因に基づき得る。「Bに基づいてAを判定する」という語句を検討する。この語句により、Bは、Aを判定するために使用されるか、又はAの判定に影響を及ぼす要因であることが特定される。この語句は、Aの判定が、Cなど、何らかの他の要因にも基づき得ることを除外しない。この語句は、AがBのみに基づいて決定される一実施形態をも網羅することを意図している。本明細書で使用する「~に基づいて」という語句は、「~に少なくとも部分的に基づいて」という語句と同義である。
【0267】
「に応じて」及び「に応答して」という語句は、効果をトリガする1つ以上の要因を記載する。この語句は、追加の要因が、特定の要因と共に、又は指定された要因とは無関係に、効果に影響を及ぼす、又はそうでなければ効果をトリガする可能性を排除するものではない。すなわち、効果は、これらの要因のみに応じてもよいし、指定された要因並びに他の指定されていない要因に応じてもよい。「Bに応じてAを実行する」という語句を検討する。この語句により、Bは、Aの実行をトリガする、又はAについての特定の結果をトリガする要因である。この語句は、Aの実行が、Cなど、他の要因にも応じ得ることを除外しない。この語句はまた、Aを実行することがB及びCに共に応答し得ることを除外しない。この語句は、AがBに応じてのみ実行される一実施形態も対象として含むことを意図している。本明細書で使用するとき、「~に応答して」という語句は、「~に少なくとも部分的に応答して」という語句と同義である。同様に、「に応じて」という語句は、「少なくとも部分的に応じて」という語句と同義である。
***
【0268】
本開示内で、(「ユニット」、「回路」、他の構成要素などと様々に呼ばれることがある)様々な実在物は、1つ以上のタスク又は動作を実施するように「構成されている(configured)」ものとして記述又は主張されることがある。[1つ以上のタスクを実施する]ように構成されている[エンティティ]というこの表現は、本明細書では構造(すなわち、物理的なもの)を指すために使用される。より具体的には、この表現は、この構造が動作中に1つ以上のタスクを実施するように配置されたことを示すために使用される。構造は、その構造が現在動作していない場合でも、何らかのタスクを実施する「ように構成されている」と述べられることがある。このように、何らかのタスクを実施するように「構成されている」ものとして記述又は説明されるエンティティは、デバイス、回路、プロセッサユニットとタスクを実行するように実行可能なプログラム命令を記憶したメモリとを有するシステムなどの物理的なものを指す。この語句は、本明細書では無形のものを指すために使用されない。
【0269】
場合によっては、様々なユニット/回路/構成要素を、タスク又は動作のセットを実行するものとして本明細書で説明することができる。具体的に記載されていない場合でも、それらのエンティティがそれらのタスク/動作を実行するように「構成されている」ことが理解される。
【0270】
「~ように構成されている」という用語は、「~ように構成可能な」を意味することを意図していない。例えば、プログラムされていないFPGAは、特定の機能を実行するように「構成されている」と見なされない。しかしながら、このプログラムされていないFPGAは、その機能を実行するように「構成可能」であり得る。適切なプログラミング後、FPGAは次いで、特定の機能を実行するように「構成されている」と言うことができる。
【0271】
本開示に基づく米国特許出願の目的のために、構造が1つ以上のタスクを実行するように「構成されている」と特許請求の範囲に記載することは、その請求要素について、米国特許法第112条(f)項を援用することを明示的に意図していない。出願人が本開示に基づき、米国特許出願の審査過程中に第112条(f)項を援用することを望む場合、それは、[機能を実行する]「ための手段」を使用して請求項の要素を説明することになる。
【0272】
本開示には、様々な「回路」が記載され得る。これらの回路又は「回路構成」は、組み合わせ論理、クロック記憶デバイス(例えば、フリップフロップ、レジスタ、ラッチなど)、有限状態機械、メモリ(例えば、ランダムアクセスメモリ、埋め込み動的ランダムアクセスメモリ)、プログラマブルロジックアレイなどの様々なタイプの回路要素を含むハードウェアを構成する。回路は、カスタム設計されてもよいし、又は標準的なライブラリから取得されてもよい。様々な実装形態では、回路構成は、必要に応じて、デジタル構成要素、アナログ構成要素、又は両方の組み合わせを含むことができる。特定のタイプの回路は、一般に「ユニット」(例えば、復号ユニット、算術論理ユニット(ALU)、機能ユニット、メモリ管理ユニット(MMU)など)と称され得る。そのようなユニットはまた、回路又は回路構成を指す。
【0273】
図面に示され、本明細書に記載されている、開示された回路/ユニット/構成要素及び他の要素は、前述の段落に記載されているものなどのハードウェア要素を含む。多くの場合、特定の回路内のハードウェア要素の内部配置は、その回路の機能を説明することによって指定され得る。例えば、特定の「復号ユニット」は、「命令のオペコードを処理し、複数の機能ユニットのうちの1つ以上に命令をルーティングする」機能を実行することと説明され得、これは、復号ユニットがこの機能を実行するように「構成されている」ことを意味する。この機能の明細は、コンピュータ技術の当業者に対して、回路の可能な構造のセットを暗示するのに十分である。
【0274】
様々な実施形態では、前の段落で論じられるように、回路、ユニット、及びその他の要素は、それらが実行するように構成されている機能又は動作によって定義され得る。そのような回路/ユニット/構成要素の互いに対する配置、及びそれらが相互作用する方法は、最終的に集積回路内で製造されるか、又はFPGAにプログラムされるハードウェアのマイクロアーキテクチャ定義を生成して、マイクロアーキテクチャ定義の物理的実装形態を形成する。したがって、マイクロアーキテクチャ定義は、多くの物理的実装形態が導出され得る構造として当業者によって認識され、その実装形態の全てが、マイクロアーキテクチャ定義によって説明されるより広い構造に属する。すなわち、本開示に従って提供されるマイクロアーキテクチャ定義を提示された当業者は、過度の実験を伴わずに、通常の技術を用いて、回路/ユニット/構成要素の説明を、Verilog又はVHDLなどのハードウェア記述言語(HDL)にコードすることによって構造を実装し得る。HDL記述は、多くの場合、機能的であり得るように見える様式で表現される。しかし、この分野の当業者にとっては、このHDL記述は、回路、ユニット、又は構成要素の構造を次のレベルの実装詳細に変換するのに使用される方法である。そのようなHDL記述は、挙動コード(典型的には合成可能ではない)、レジスタ転送言語(RTL)コード(挙動コードとは対照的に、典型的には合成可能である)、又は構造コード(例えば、論理ゲート及びそれらの接続を指定するネットリスト)の形態をとり得る。HDL記述は、所与の集積回路製造技術のために設計されたセルのライブラリに対して合成されてもよく、タイミング、電力、及び他の理由のために修正されて、結果としてファウンドリに送信することができる最終設計データベースとなり、マスクを生成し、最終的に集積回路を製造することができる。いくつかのハードウェア回路又はその一部も、回路図エディタでカスタム設計して、合成された回路と共に集積回路設計に取り込むことができる。集積回路は、トランジスタ及び他の回路要素(例えば、コンデンサ、抵抗、インダクタなどの受動要素)、並びにトランジスタと回路要素との間のインターコネクトを更に含むことができる。いくつかの実施形態は、ハードウェア回路を実現するために一体的に接続された複数の集積回路を実装することができ、及び/又は、いくつかの実施形態では、個別の要素を使用することができる。あるいは、HDL設計は、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)などのプログラム可能な論理アレイに統合してもよく、FPGAに実装してもよい。この回路グループの設計とこれらの回路の後続の低位実装との間のこの切り離しは、一般に、このプロセスは回路実装プロセスの異なる段階で実行されるため、回路又は論理設計者が、回路がどのように構成されているかの説明以外に、低位実装形態のための特定の構造セットを全く指定しないというシナリオをもたらす。
【0275】
回路要素の多くの異なる低位の組み合わせを使用して、回路の同じ仕様を実装することができるという事実は、その回路に多数の等価構造をもたらす。上記のように、これらの低位回路実装形態は、製造技術の変化、集積回路を製造するために選択されるファウンドリ、特定のプロジェクトに提供されるセルのライブラリなどに応じて変化し得る。多くの場合、これらの異なる実装形態を生成するための異なる設計ツール又は方法によって行われる選択は、任意であり得る。
【0276】
更に、所与の実施形態の場合、回路の特定の機能仕様の単一の実装形態が、多数のデバイス(例えば、数百万個のトランジスタ)を含むことは一般的である。したがって、この絶対量の情報により、膨大な量の同等の可能な実装形態は言うまでもなく、単一の実施形態を実装するために使用される低位構造を完全に列挙することは非現実的である。この理由のために、本開示は、業界で用いられる機能的な省略を使用して、回路の構造を説明する。
【手続補正書】
【提出日】2024-02-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフィックスプロセッサを備える装置であって、前記グラフィックスプロセッサは、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散された第1のグラフィックスワーク及びグラフィックスワークのセットを実行するように構成される、制御回路と、を含む、装置。
【請求項2】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項3】
所与のグループの前記サブユニットは、同じ物理的ダイ上に実装される、請求項2に記載の装置。
【請求項4】
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項5】
前記制御回路は、グラフィックスワークの前記第1及び第2のセット内のワーク量に基づいて、前記第1及び第2の分散規則を選択するように構成される、請求項1に記載の装置。
【請求項6】
グラフィックスワークの前記第1のセットは、前記第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、前記計算キックは、少なくとも1つの他のカーネルを含み、前記装置は、前記少なくとも1つの他のカーネルに対して前記第1のカーネルとは異なる分散規則を選択するように構成される、請求項1に記載の装置。
【請求項7】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、前記第1の分散規則を決定するように構成される、請求項1に記載の装置。
【請求項8】
前記装置は、以下のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの前記第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの前記第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項7に記載の装置。
【請求項9】
前記グラフィックスプロセッササブユニットは、それぞれの
フラグメント生成回路と、
データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路と、
ジオメトリ処理回路と、
分散ワーク負荷分散回路と、を更に含む、請求項1に記載の装置。
【請求項10】
前記分散ハードウェアスロットは、それぞれの
バッチ待ち行列回路と、
バッチ反復回路と、を更に含む、請求項1に記載の装置。
【請求項11】
論理スロットのための制御回路は、
第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサと、
計算ワークグループのバッチを生成するように構成されたカーネルプロセッサと、
計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を含み、
前記制御回路は、
示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路と、
割り当てられたサブユニットへの分散のために、異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路と、を含む、請求項1に記載の装置。
【請求項12】
前記ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成され、異なるハードウェアスロットの前記状態は、少なくとも、無効、実行中、空、及びフラッシュを含む、請求項11に記載の装置。
【請求項13】
前記装置は、
カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、
1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットのための全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作と、を実行するように構成される、請求項1に記載の装置。
【請求項14】
前記制御回路は、
複数の論理スロットのスロットのためのそれぞれの保持値であって、保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、を実行するように更に構成される、請求項1に記載の装置。
【請求項15】
前記制御回路は、
前記第1の論理スロットのための構成レジスタのプログラミングの完了の前に、グラフィックスワークの前記第1のセットの部分を、グラフィックスワークの前記第1のセットに割り当てられた分散ハードウェアスロットであって、前記分散ハードウェアスロットは、グラフィックスワークの前記第1のセットの受信された部分のための待ち行列回路を含む、分散ハードウェアスロットに送信することを実行するように更に構成される、請求項1に記載の装置。
【請求項16】
設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、前記設計情報は、前記回路が、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッサのグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散された第1のグラフィックスワーク及びグラフィックスワークのセットを実行するように構成される、制御回路と、を含む、非一時的コンピュータ可読記憶媒体。
【請求項17】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達された1つ以上のソフトウェアオーバーライドに基づいて前記第1の分散規則を決定するように構成され、前記回路は、以下のタイプのソフトウェアオーバーライド、すなわち
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
方法であって、
グラフィックスプロセッサの制御回路によって、グラフィックスワークの第1及び第2のセットを、複数の論理スロットを実装する回路の第1及び第2の論理スロットに割り当てることと、
前記制御回路によって、各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセット内の全てのグラフィックスプロセッササブユニットに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定することであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、決定することと、
前記制御回路によって、前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定することと、
前記制御回路によって、前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定することと、
前記制御回路によって、前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定することと、及び
前記制御回路によって、前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上に分散させることと、
前記グラフィックスプロセッササブユニットによって、それらの個別のシェーダプロセッサ回路を使用して、前記分散された第1のグラフィックスワーク及びグラフィックスワークのセットを実行することと、を含む、方法。
【請求項20】
前記複数の論理スロットのスロットに対するそれぞれの保持値であって、前記保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、
を更に含む、請求項19に記載の方法。
【手続補正書】
【提出日】2024-04-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフィックスプロセッサを備える装置であって、前記グラフィックスプロセッサは、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行するように構成される、制御回路と、を含む、装置。
【請求項2】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項3】
所与のグループの前記サブユニットは、同じ物理的ダイ上に実装される、請求項2に記載の装置。
【請求項4】
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項5】
前記制御回路は、グラフィックスワークの前記第1及び第2のセット内のワーク量に基づいて、前記第1及び第2の分散規則を選択するように構成される、請求項1に記載の装置。
【請求項6】
グラフィックスワークの前記第1のセットは、前記第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、前記計算キックは、少なくとも1つの他のカーネルを含み、前記装置は、前記少なくとも1つの他のカーネルに対して前記第1のカーネルとは異なる分散規則を選択するように構成される、請求項1に記載の装置。
【請求項7】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、前記第1の分散規則を決定するように構成される、請求項1に記載の装置。
【請求項8】
前記装置は、以下のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの前記第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの前記第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項7に記載の装置。
【請求項9】
前記グラフィックスプロセッササブユニットは、それぞれの
フラグメント生成回路と、
シェーダプロセッサ回路と、
データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路と、
ジオメトリ処理回路と、
分散ワーク負荷分散回路と、を含む、請求項1に記載の装置。
【請求項10】
前記分散ハードウェアスロットは、それぞれの
バッチ待ち行列回路と、
バッチ反復回路と、を含み、
サブユニットにおける前記シェーダプロセッサ回路は、その複数の分散ハードウェアスロットからのワークを受信して実行するように構成されている、請求項1に記載の装置。
【請求項11】
論理スロットのための制御回路は、
第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサと、
計算ワークグループのバッチを生成するように構成されたカーネルプロセッサと、
計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を含み、
前記制御回路は、
示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路と、
割り当てられたサブユニットへの分散のために、異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路と、を含む、請求項1に記載の装置。
【請求項12】
前記ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成され、異なるハードウェアスロットの前記状態は、少なくとも、無効、実行中、空、及びフラッシュを含む、請求項11に記載の装置。
【請求項13】
前記装置は、
カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、
1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットのための全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作と、を実行するように構成される、請求項1に記載の装置。
【請求項14】
前記制御回路は、
複数の論理スロットのスロットのためのそれぞれの保持値であって、保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、を実行するように更に構成される、請求項1に記載の装置。
【請求項15】
前記制御回路は、
前記第1の論理スロットのための構成レジスタのプログラミングの完了の前に、グラフィックスワークの前記第1のセットの部分を、グラフィックスワークの前記第1のセットに割り当てられた分散ハードウェアスロットであって、前記分散ハードウェアスロットは、グラフィックスワークの前記第1のセットの受信された部分のための待ち行列回路を含む、分散ハードウェアスロットに送信することを実行するように更に構成される、請求項1に記載の装置。
【請求項16】
設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、前記設計情報は、前記回路が、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行するように構成される、制御回路と、を含む、非一時的コンピュータ可読記憶媒体。
【請求項17】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達された1つ以上のソフトウェアオーバーライドに基づいて前記第1の分散規則を決定するように構成され、前記回路は、以下のタイプのソフトウェアオーバーライド、すなわち
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
方法であって、
グラフィックスプロセッサの制御回路によって、グラフィックスワークの第1及び第2のセットを、複数の論理スロットを実装する前記グラフィックスプロセッサにおける回路の第1及び第2の論理スロットに割り当てることと、
前記制御回路によって、各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセット内の全てのグラフィックスプロセッササブユニットに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定することであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、決定することと、
前記制御回路によって、前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定することと、
前記制御回路によって、前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定することと、
前記制御回路によって、前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定することと、及び
前記制御回路によって、前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上のワーク待ち行列回路に分散させることと、
前記グラフィックスプロセッササブユニットによって、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行することと、を含む、方法。
【請求項20】
前記複数の論理スロットのスロットに対するそれぞれの保持値であって、前記保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、
を更に含む、請求項19に記載の方法。
【手続補正書】
【提出日】2024-08-02
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフィックスプロセッサを備える装置であって、前記グラフィックスプロセッサは、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行するように構成される、制御回路と、を含む、装置。
【請求項2】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項3】
所与のグループの前記サブユニットは、同じ物理的ダイ上に実装される、請求項2に記載の装置。
【請求項4】
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のサブユニットに分散させることを示す、請求項1に記載の装置。
【請求項5】
前記制御回路は、グラフィックスワークの前記第1及び第2のセット内のワーク量に基づいて、前記第1及び第2の分散規則を選択するように構成される、請求項1に記載の装置。
【請求項6】
グラフィックスワークの前記第1のセットは、前記第1の論理スロットに割り当てられた計算キックの第1のカーネルであり、前記計算キックは、少なくとも1つの他のカーネルを含み、前記装置は、前記少なくとも1つの他のカーネルに対して前記第1のカーネルとは異なる分散規則を選択するように構成される、請求項1に記載の装置。
【請求項7】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達される1つ以上のソフトウェアオーバーライドに基づいて、前記第1の分散規則を決定するように構成される、請求項1に記載の装置。
【請求項8】
前記装置は、以下のタイプのソフトウェアオーバーライド、すなわち、
どのサブユニットがグラフィックスワークの前記第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの前記第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項7に記載の装置。
【請求項9】
前記グラフィックスプロセッササブユニットは、それぞれの
フラグメント生成回路と、
シェーダプロセッサ回路と、
データキャッシュ及びメモリ管理ユニットを含むメモリシステム回路と、
ジオメトリ処理回路と、
分散ワーク負荷分散回路と、を含む、請求項1に記載の装置。
【請求項10】
前記分散ハードウェアスロットは、それぞれの
バッチ待ち行列回路と、
バッチ反復回路と、を含み、
サブユニットにおける前記シェーダプロセッサ回路は、その複数の分散ハードウェアスロットからのワークを受信して実行するように構成されている、請求項1に記載の装置。
【請求項11】
論理スロットのための制御回路は、
第1及び第2の分散規則を決定するように構成された制御ストリームプロセッサと、
計算ワークグループのバッチを生成するように構成されたカーネルプロセッサと、
計算ワークグループのバッチをサブユニットに割り当てるように構成されたサブユニット割り当て回路と、を含み、
前記制御回路は、
示された分散規則に基づいてストリームプロセッサを制御するためにハードウェアスロットを割り当てるように構成されたハードウェアスロットリソースアロケータ回路と、
割り当てられたサブユニットへの分散のために、異なる論理スロットからのバッチ間で調停するように構成された論理スロットアービタ回路と、を含む、請求項1に記載の装置。
【請求項12】
前記ハードウェアスロットリソースアロケータ回路は、ハードウェアスロットの状態に基づいてハードウェアスロットを割り当てるように構成され、異なるハードウェアスロットの前記状態は、少なくとも、無効、実行中、空、及びフラッシュを含む、請求項11に記載の装置。
【請求項13】
前記装置は、
カーネルが割り当てられた1つ以上のサブユニットについてのみキャッシュをフラッシュ及び無効化する第1のタイプのキャッシュフラッシュ無効化動作と、
1つ以上のキャッシュレベルでグラフィックスプロセッササブユニットのセットのための全てのキャッシュをフラッシュ及び無効化する無条件タイプのキャッシュフラッシュ無効化動作と、を実行するように構成される、請求項1に記載の装置。
【請求項14】
前記制御回路は、
複数の論理スロットのスロットのためのそれぞれの保持値であって、保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、を実行するように更に構成される、請求項1に記載の装置。
【請求項15】
前記制御回路は、
前記第1の論理スロットのための構成レジスタのプログラミングの完了の前に、グラフィックスワークの前記第1のセットの部分を、グラフィックスワークの前記第1のセットに割り当てられた分散ハードウェアスロットであって、前記分散ハードウェアスロットは、グラフィックスワークの前記第1のセットの受信された部分のための待ち行列回路を含む、分散ハードウェアスロットに送信することを実行するように更に構成される、請求項1に記載の装置。
【請求項16】
設計に従って回路を生成するために設計情報を使用するように構成された半導体製造システムによって認識されるフォーマットでハードウェア集積回路の少なくとも一部の設計を指定する設計情報を記憶した非一時的コンピュータ可読記憶媒体であって、前記設計情報は、前記
ハードウェア集積回路が、
複数の論理スロットを実装する回路と、
各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセットであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、グラフィックスプロセッササブユニットのセットと、
制御回路であって、
グラフィックスワークの第1及び第2のセットを第1及び第2の論理スロットに割り当て、
前記セット内の前記グラフィックスプロセッササブユニットの全てに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定し、
前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定し、
前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定し、
前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定し、
前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上の前記ワーク待ち行列回路に分散させるように構成され、
前記グラフィックスプロセッササブユニットは、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行するように構成される、制御回路と、を含む、
ことを指定する、非一時的コンピュータ可読記憶媒体。
【請求項17】
前記グラフィックスプロセッササブユニットは、複数のサブユニットの複数のグループに編成され、同じグループ内のサブユニットはキャッシュを共有し、
前記第2の分散規則は、グラフィックスワークの前記第2のセットを単一のグループのサブユニットに分散させることを示す、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記制御回路は、実行されているグラフィックスプログラムによって信号伝達された1つ以上のソフトウェアオーバーライドに基づいて前記第1の分散規則を決定するように構成され、前記
制御回路は、以下のタイプのソフトウェアオーバーライド、すなわち
どのサブユニットがグラフィックスワークの第1のセットに利用可能であるかを示すマスク情報と、
指定された分散規則と、
グラフィックスワークの第1のセットが展開されるべきサブユニットのグループを示すグループ情報と、
スケジューリングポリシーを示すポリシー情報と、に基づいて前記第1の分散規則を選択するように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
方法であって、
グラフィックスプロセッサの制御回路によって、グラフィックスワークの第1及び第2のセットを、複数の論理スロットを実装する前記グラフィックスプロセッサにおける回路の第1及び第2の論理スロットに割り当てることと、
前記制御回路によって、各々が複数の分散ハードウェアスロットを実装するグラフィックスプロセッササブユニットのセット内の全てのグラフィックスプロセッササブユニットに分散させることを示す、グラフィックスワークの前記第1のセットのための第1の分散規則を決定することであって、
所与の分散ハードウェアスロットは、グラフィックスワークを記憶するように構成されたワーク待ち行列回路と、前記記憶されたグラフィックスワークに対応する構成レジスタとを含み、
所与のグラフィックスプロセッササブユニットは、前記サブユニットの複数の分散ハードウェアスロット内に記憶されたグラフィックスワークによって指定される命令を実行するように構成されたシェーダプロセッサ回路を含む、決定することと、
前記制御回路によって、前記セット内の前記グラフィックスプロセッササブユニットの全てよりも少ない数に分散させることを示す、グラフィックスワークの前記第2のセットのための第2の分散規則を決定することと、
前記制御回路によって、前記第1の分散規則に基づいて、前記第1の論理スロットと1つ以上の分散ハードウェアスロットの第1のセットとの間のマッピングを決定することと、
前記制御回路によって、前記第2の分散規則に基づいて、前記第2の論理スロットと1つ以上の分散ハードウェアスロットの第2のセットとの間のマッピングを決定することと、及び
前記制御回路によって、前記決定されたマッピングに従って、前記グラフィックスワークの第1及び第2のセットを前記グラフィックスプロセッササブユニットのうちの1つ以上のワーク待ち行列回路に分散させることと、
前記グラフィックスプロセッササブユニットによって、それらの個別のシェーダプロセッサ回路を使用して、前記分散されたグラフィックスワークの第1及び第2のセットを実行することと、を含む、方法。
【請求項20】
前記複数の論理スロットのスロットに対するそれぞれの保持値であって、前記保持値は、論理スロットのためのカーネルのステータスを示す、保持値を決定することと、
前記それぞれの保持値のうちの1つ以上に基づいて、第1の優先度レベルを有する論理スロットが、第2のより低い優先度レベルを有する論理スロットに割り当てられたハードウェアスロットを再利用することを可能にすることと、
を更に含む、請求項19に記載の方法。
【国際調査報告】