(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-19
(45)【発行日】2024-12-27
(54)【発明の名称】マルチテナンシーグラフィックス処理ユニットにおける完全利用型ハードウェア
(51)【国際特許分類】
G06T 15/00 20110101AFI20241220BHJP
【FI】
G06T15/00 501
(21)【出願番号】P 2022548924
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 US2021019790
(87)【国際公開番号】W WO2021173911
(87)【国際公開日】2021-09-02
【審査請求日】2024-01-30
(32)【優先日】2020-02-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】レックス エルドン マクラリー
【審査官】鈴木 肇
(56)【参考文献】
【文献】米国特許第07728841(US,B1)
【文献】米国特許出願公開第2011/0080415(US,A1)
【文献】特表2014-520328(JP,A)
【文献】特表2013-504129(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/16-15/177
G06F 15/80
G06T 1/00- 1/40
G06T 3/00- 5/94
G06T 11/00-19/20
(57)【特許請求の範囲】
【請求項1】
装置であって、
シェーダエンジンのセット[140,141,142,143]と、
フロントエンド(FE)回路のセット[150,151]であって、前記FE回路のセットのサブセットは、マッピングに基づいて、前記シェーダエンジンのセットのサブセットに対するジオメトリワークロードをスケジュールするように構成されている、FE回路のセット[150,151]と、
前記FE回路のセットから前記シェーダエンジンのセットを介してメモリ[132]に情報を伝達するように構成された物理経路のセット[310~317]であって、前記物理経路のセットのサブセットは、前記マッピングに基づいて、前記FE回路のセットのサブセット及び前記シェーダエンジンのセットのサブセットに割り当てられる、物理経路のセット[310~317]と、を備える、
装置。
【請求項2】
前記物理経路のセットは、前記FE回路のセットから前記シェーダエンジンのセットに情報を伝達するレーンのセットを有するコマンドバス[305]を含み、前記レーンのセットのサブセットは、前記マッピングに基づいて、前記FE回路のセットのサブセット及び前記シェーダエンジンのセットのサブセットに割り当てられる、
請求項1の装置。
【請求項3】
前記物理経路のセットは、前記シェーダエンジンのセットから受信した情報を保持するためのキャッシュ[705]を含み、前記キャッシュの部分は、前記マッピングに基づいて、前記シェーダエンジンのセットのサブセットから受信した情報を保持するために割り当てられる、
請求項2の装置。
【請求項4】
前記物理経路のセットは、前記キャッシュから前記メモリに情報を伝達するように構成されたメモリチャネルのセット[1001,1002,1003,1004]を含み、前記メモリチャネルのセットのサブセットは、前記キャッシュの部分から前記メモリに情報を伝達するために割り当てられる、
請求項3の装置。
【請求項5】
前記物理経路のセットを構成するための情報を記憶するように構成されたレジスタのセット[335]をさらに備える、
請求項4の装置。
【請求項6】
前記レジスタのセットは、前記マッピングに基づいて前記レーンのセットの前記サブセットを前記FE回路のセットの前記サブセットに割り当てるために使用される情報を記憶するためのレジスタの第1のサブセットと、前記キャッシュを分割して、前記シェーダエンジンのセットのサブセットから受信した情報を保持するための前記部分を割り当てるために使用される情報を記憶するためのレジスタの第2のサブセットと、前記キャッシュの部分から前記メモリに情報を伝達するために前記メモリチャネルのセットのサブセットを割り当てるように構成されたレジスタの第3のサブセットと、を含む、
請求項5の装置。
【請求項7】
前記物理経路のセットのサブセットは、前記シェーダエンジンの前記サブセット上で同時に実行しているアプリケーションに関連付けられる、
請求項1~6の何れかの装置。
【請求項8】
前記マッピングは、前記アプリケーションの特性に基づいて決定される、
請求項7の装置。
【請求項9】
前記マッピングは、前記アプリケーションに関連付けられた複雑度及びグラフィックス解像度のうち少なくとも1つに基づいて決定される、
請求項8の装置。
【請求項10】
方法であって、
フロントエンド(FE)回路のセット[150,151]のサブセットを、シェーダエンジンのセット[140,141,142,143]の対応するサブセットにマッピングするマッピング情報を含むレジスタのセットにアクセスすることと、
前記マッピング情報に基づいて、物理経路のセット[310~317]を、前記FE回路のセットのサブセットから前記シェーダエンジンのセットの対応するサブセットを介してメモリ[132]に情報を伝達するサブセットに空間的に分割することと、を含む、
方法。
【請求項11】
前記物理経路のセットは、前記FE回路のセットから前記シェーダエンジンのセットに情報を伝達するレーンのセットを有するコマンドバス[305]を含み、前記物理経路のセットを空間的に分割することは、前記レーンのセットのサブセットを、前記FE回路のセットのサブセット及び前記シェーダエンジンのセットのサブセットに割り当てることを含む、
請求項
10の方法。
【請求項12】
前記物理経路のセットは、前記シェーダエンジンのセットから受信した情報を保持するためのキャッシュ[705]を含み、前記物理経路のセットを空間的に分割することは、前記キャッシュを、前記シェーダエンジンのセットのサブセットから受信した情報を保持するための部分に分割することを含む、
請求項
11の方法。
【請求項13】
前記物理経路のセットは、前記キャッシュからメモリに情報を伝達するように構成されたメモリチャネルのセット[1001,1002,1003,1004]を含み、前記物理経路のセットを空間的に分割することは、前記キャッシュの部分から前記メモリに情報を伝達するために前記メモリチャネルのセットのサブセットを割り当てることを含む、
請求項
12の方法。
【請求項14】
前記物理経路のセットを空間的に分割することは、レジスタのセットに記憶された情報に基づいて前記物理経路のセットを空間的に分割することを含む、
請求項13の方法。
【請求項15】
前記レジスタのセットは、前記マッピングに基づいて前記レーンのセットの前記サブセットを前記FE回路のセットの前記サブセットに割り当てるために使用される情報を記憶するためのレジスタの第1のサブセットと、前記キャッシュを分割して、前記シェーダエンジンのセットのサブセットから受信した情報を保持するための前記部分を割り当てるために使用される情報を記憶するためのレジスタの第2のサブセットと、前記キャッシュの部分から前記メモリに情報を伝達するために前記メモリチャネルのセットのサブセットを割り当てるように構成されたレジスタの第3のサブセットと、を含む、
請求項14の方法。
【発明の詳細な説明】
【背景技術】
【0001】
ゲーミング及び他のグラフィック集中的なアプリケーションは、ユーザ定義の再構成可能な仮想パイプラインとしてグラフィックスパイプラインを実装するために使用されるシェーダエンジン及び固定機能ハードウェアユニットを含む、グラフィックス処理ユニット(GPU)の物理的リソースを貪欲に消費するものである。例えば、三次元(3D)グラフィックスを処理するための従来のグラフィックスパイプラインは、プログラム可能なシェーダによってサポートされる一連の固定機能ハードウェアブロック構成で形成される。これらの構成は、通常、Microsoft DX 11/12、Khronos Group、OpenGL、Vulkan等によって定義されるAPI等のグラフィックスアプリケーションプログラミングインターフェース(API)を介して構成される。ゲームは、典型的に、ゲームのグラフィックス処理要件を処理するように最適化されたコンソール(Xbox及びPlayStation4等)及びパーソナルコンピュータ(PC)でプレイされる。しかしながら、コンソール及びゲーミングPCは高価であり、いくつかのゲームは、ゲーミング形式のうち1つでのみ利用可能である。クラウドゲーミングは、レンダリングされたグラフィックスをユーザにストリームするクラウドサーバ内のGPUにグラフィックス処理を移し、それによってユーザのハードウェア要件を減らし、ユーザが複数の形式でゲームをプレイすることを可能にすることにより、これらの欠点を克服する。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、マルチテナンシーグラフィックス処理ユニット(GPU)内に空間分割式の完全利用可能なハードウェアを実装する処理システムのブロック図である。
【
図2】いくつかの実施形態による、ハードウェア利用を改善するために柔軟な空間分割を使用するGPUのブロック図である。
【
図3】いくつかの実施形態による、空間分割用に構成されたコマンドバスを含む、GPUの一部のブロック図である。
【
図4】いくつかの実施形態による、単一のフロントエンド(FE)回路がシェーダエンジン(SE)のセットに対するコマンドをスケジュールすることを可能にするために空間的に分割されたコマンドバスを含む、GPUの一部のブロック図である。
【
図5】いくつかの実施形態による、FE回路の第1のサブセットとSEのセットの第1のサブセットとの間に第1の物理経路を提供するために空間的に分割されたコマンドバス305を含む、GPUの一部のブロック図である。
【
図6】いくつかの実施形態による、FE回路の第2のサブセットとSEのセットの第2のサブセットとの間に第2の物理経路を提供するために空間的に分割されたコマンドバスを含む、GPUの一部のブロック図である。
【
図7】いくつかの実施形態による、空間分割に利用可能なキャッシュを含む、GPUの一部のブロック図である。
【
図8】いくつかの実施形態による、SEの第1のサブセットにキャッシュ部分の第1のサブセットへのアクセスを提供するために分割されたキャッシュを含む、GPUの一部のブロック図である。
【
図9】いくつかの実施形態による、SEの第2のサブセットにキャッシュ部分の第2のサブセットへのアクセスを提供するために分割されたキャッシュを含む、GPUの一部のブロック図である。
【
図10】いくつかの実施形態による、空間分割に利用可能なメモリチャネルのセットを含む、GPUの一部のブロック図である。
【
図11】いくつかの実施形態による、メモリへの第1の経路を提供する第1のサブセットに分割されたメモリレーンを含む、GPUの一部のブロック図である。
【
図12】いくつかの実施形態による、メモリへの第2の経路を提供する第2のサブセットに分割されたメモリレーンを含む、GPUの一部のブロック図である。
【
図13】いくつかの実施形態による、GPUのリソースを空間的に分割する方法のフロー図である。
【発明を実施するための形態】
【0004】
クラウドサーバ内のグラフィックス処理ユニット(GPU)は、コマンドのフェッチ、ジッタの処理、ジオメトリ操作の実行、及び、光線追跡の実行等のタスクを処理するためのフロントエンド(FE)ハードウェアを含む。FEハードウェアは、典型的には、コマンドフェッチャーと、フェッチされたコマンドを保持するための先入先出(first-in-first-out、FIFO)バッファ等のキューと、GPU内のシェーダエンジン上で実行するためにコマンドバッファからのコマンドをスケジュールするスケジューラと、を含む。シェーダエンジンは、FEハードウェアによって提供されるコマンドを実行するために、1つ以上のプロセッサ及び1つ以上の算術論理装置(ALU)を使用して実装される。シェーディングされたピクセルの値等のようにシェーダによって生成された結果は、頻繁に使用される情報を記憶する1つ以上のキャッシュに出力され、この情報は、対応するメモリにも記憶される。したがって、GPUは、これらのエンティティ間の結果、キャッシュ、ポート及びインターフェースを保持するためのメモリ又はレジスタを含む。情報は、FEハードウェアからシェーダエンジンにコマンドを搬送するためのコマンドバス、シェーダエンジンからの出力を記憶するためのキャッシュ、及び、キャッシュされた情報をメモリに伝達するためのメモリチャネルを含む経路を介して、FEハードウェアからメモリに流れる。したがって、GPUのリソースは、コマンドバスを介してシェーダエンジンにコマンド及びデータを伝達するために使用される帯域幅と、シェーダエンジンによって生成された結果を記憶するキャッシュと、キャッシュとメモリとの間で情報を伝達するメモリチャネルと、を含む。
【0005】
クラウドサーバ内のGPUのセットは、動的に変化する異なるアプリケーションの混合を実行する。例えば、クラウドサーバは、第1の時間間隔で4つの容易なゲーム(比較的低いリソース消費を伴う)、第2の時間間隔で2つの中級のゲーム(中程度のリソース消費を伴う)、及び、第3の時間間隔で単一の複雑なゲーム(比較的高いリソース消費を伴う)を実行している可能性がある。クラウドサーバ上で実行しているゲームは、クラウドサーバ上のそれぞれのゲームがクラウドサーバ上で実行している他のゲームの影響を受けないように、互いに分離されるべきである。したがって、GPU上で実行しているアプリケーションは、同時に実行しているアプリケーションが、同じ共有経路(又は経路の一部分)に依存する場合にその他のアプリケーションの性能に影響を及ぼすため、GPUを介して経路を共有することが許可されるべきではない。その結果、複数のアプリケーションが従来のGPU上で同時に実行している場合、一度に1つのアプリケーションのみに、GPU内で共有されるバス、キャッシュ及びメモリチャネルを介したFEハードウェアからメモリへのアクセスが与えられ、これは時折「砂時計の問題(hourglass problem)」と呼ばれる。
【0006】
図1~
図13は、GPUのリソースの空間分割を使用してGPU上で同時に実行しているアプリケーション間のリソース分離を提供する、GPUの実施形態を開示する。いくつかの実施形態では、GPUは、フロントエンド(FE)ハードウェアから、アプリケーションに割り当てられたシェーダエンジンのサブセットにコマンドを伝達するコマンドバス、シェーダエンジンのサブセットから出力を受信する共有キャッシュ、及び、共有キャッシュとメモリとの間のメモリチャネルを分割する。空間分割は、アプリケーションの複雑度、グラフィックス解像度等の同時アプリケーションの特性に基づいて実行される。それぞれのアプリケーションのコマンドバスパーティションは、対応する共有キャッシュのパーティション及びメモリチャネルのパーティションにマッピングされる。GPUのいくつかの実施形態は、複数のFE回路、レーンのセットを実装するコマンドバス、シェーダエンジンのセット、シェーダエンジンによって共有されるキャッシュ、及び、キャッシュとメモリとの間のメモリチャネルのセットをサポートするデータファブリックを含む。次いで、コマンドバスのレーン、キャッシュ及びメモリチャネルのセットは、GPU上で同時に実行しているアプリケーション間で分割される。例えば、第1のアプリケーション及び第2のアプリケーションがGPU上で同時に実行している場合、レーンの第1のサブセットが、第1のアプリケーションによって生成されたコマンドをFE回路の第1のサブセットからシェーダエンジンの第1のサブセットに伝達するために割り当てられ、レーンの第2のサブセットが、第2のアプリケーションによって生成されたコマンドをFE回路の第2のサブセットからシェーダエンジンの第2のサブセットに伝達するために割り当てられる。シェーダエンジンの第1のサブセット及び第2のサブセットによって生成された結果は、キャッシュの第1の部分及び第2の部分にそれぞれ提供される。次いで、メモリチャネルの第1のサブセット及び第2のサブセットは、キャッシュの第1の部分及び第2の部分からの情報をそれぞれメモリに書き戻すために使用される。いくつかの実施形態では、メモリチャネルの第1のサブセット及び第2のサブセットは、例えば、第1のベースアドレス及び第2のベースアドレスによって示されるメモリ位置並びにメモリストライドに情報を書き込むことによって、メモリの異なる部分にマッピングされる。
【0007】
図1は、いくつかの実施形態による、マルチテナンシー(multi-tenancy)グラフィックス処理ユニット(GPU)105内に空間分割式の完全利用可能なハードウェアを実装する処理システム100のブロック図である。処理システム100は、1つ以上の中央演算処理装置(CPU)110,111を含む。2つのCPU110,111が
図1に示されているが、処理システム100のいくつかの実施形態は、より多くの又はより少ないCPUを含む。スケーラブルデータファブリック(SDF)115は、処理システム100内のエンドポイント間のデータフローをサポートする。SDF115のいくつかの実施形態は、ペリフェラルコンポーネントインターフェース(PCI)物理層、メモリコントローラ、ユニバーサルシリアルバス(USB)ハブ、GPU105及びCPU110,111を含む計算及び実行ユニット、並びに、他のエンドポイント等の接続点間のデータフローをサポートする。図示した実施形態では、SDF115は、入力/出力(I/O)ハブ120に接続され、これは次にPCI Express(PCI-E)バス125及びノースバウンドインターフェイス(NBIF)130に接続される。また、SDF115は、動的ランダムアクセスメモリ(DRAM)又は他のメモリタイプを使用して実装される、メモリ132と通信するためのメモリチャネルのセットを提供する。スケーラブルコントロールファブリック(SCF)135は、処理システム100内でシステム制御信号を伝達する制御通信プレーン(control communication plane)を提供する。システム制御信号の例は、熱及び電力管理、試験、セキュリティ等をサポートするために使用される制御信号である。
【0008】
GPU105は、コマンドを同時に又は並行して実行するために使用されるシェーダエンジン(SE)140,141,142,143のセット(本明細書では「SE140~143」と総称される)を含む。SE140~143のいくつかの実施形態は、CPU110,111のうち何れかから受信したドローコール内の情報を使用して、シーンのモデルを表すプリミティブの頂点をシェーディングするように構成されている。また、SE140~143は、シェーディングされたプリミティブに基づいて生成されたピクセルをシェーディングし、シェーディングされたピクセルをユーザに提示するためのディスプレイに、例えば、I/Oハブ120を介して提供する。4つのシェーダエンジンが
図1に示されているが、GPU105のいくつかの実施形態は、より多くの又はより少ないシェーダエンジンを含む。SE140~143は、頻繁に使用されるデータ及び命令を記憶するグラフィックスL2キャッシュ145に接続される。いくつかの実施形態では、L2キャッシュ145は、SE140~143に実装されている1つ以上のL1キャッシュと、処理システム100に実装されている1つ以上のL3キャッシュ(又は他のラストレベルキャッシュ)と、に接続される。キャッシュは、L2キャッシュ145を含むキャッシュ階層を形成する。キャッシュ階層内の他のキャッシュは、明確にするために
図1に示されていない。
【0009】
GPU105内のフロントエンド(FE)回路は、ジオメトリワークロードのプリミティブをフェッチし、シェーダエンジン上で実行するためにジオメトリワークロードをスケジュールし、場合によっては、シリアル同期、状態更新、ドローコール、キャッシュアクティビティ、及び、プリミティブのテッセレーションを処理する。GPU105内のFE回路は、FE回路150,151を含むが、FE回路のいくつかの実施形態は、本明細書で説明するように、追加のFE回路を含むように分割される。また、FE回路は、FE回路150,151によって共有される(及びFE回路150と151との間で分配される)共有リソース153を含む(又は共有リソース153へのアクセスを有する)。例えば、共有リソース153は、FE回路150,151の両方がアクティブであり、異なるスレッド又はアプリケーションを実行している場合に、FE回路150,151に別々に割り当てられる2つの部分に分割される。別の例では、共有リソース153の全ては、FE回路150,151のうち何れかのみがアクティブである場合に、又は、FE回路150,151の組み合わされたリソースが単一のスレッド若しくはアプリケーションをサポートするために使用される場合に、単一のFE回路に割り当てられる。共有リソース153は、キャッシュ、算術論理装置(ALU)等を含む。FE回路150,151は、SE140~143へのコマンド及びコマンドに関連付けられたデータを伝達するバス155に結合される。バス155のいくつかの実施形態は、複数のマスター及び複数のスレーブをサポートする読み取り及び書き込み動作を登録するためのハブとして機能する、グラフィックスレジスタバスマネージャ(GRBM)等のコマンドバスである。GRBMは、場合によっては、デイジーストア構成で実装される。
【0010】
GPU105のリソースの空間分割は、GPU105が、異なるアプリケーションに関連付けられた異なるワークロード又はスレッドを同時に実行することを可能にする。例えば、SE140~143の第1のサブセットは、第2のアプリケーションのコマンドを実行するSE140~143の第2のサブセットと同時に、第1のアプリケーションのコマンドを実行し得る。FE回路150,151のセットのサブセットは、場合によってはワークロード又はアプリケーションの特性に基づいて決定されるマッピングに基づいて、SE140~143のセットのサブセットに対するジオメトリワークロードをスケジュールする。また、GPU105は、SE140~143を介してFE回路150,151からメモリ132に情報を伝達する物理経路のセット(明確にするために
図1に示されていない)を含む。物理経路のセットのサブセットは、マッピングに基づいて、FE回路150,151のセットのサブセットとSE140~143のセットのサブセットとの組み合わせに割り当てられる。マッピングは、GPU105を構成するために使用される、レジスタのセット(明確にするために
図1に示されていない)に記憶された情報を決定する。場合によっては、レジスタのセットは、物理経路のセットの空間分割を示す情報を記憶し、これは、異なるアプリケーションに関連付けられたコマンド間の分離を提供するために使用される。いくつかの実施形態では、異なる空間パーティション内の物理経路には、それらの対応する割り当て済みの物理経路への排他的アクセスが付与され、その結果、FE回路150,151及びSE140~143のサブセットの1つの組み合わせに割り当てられた物理経路は、その組み合わせによってのみ使用され、FE回路150,151及びSE140~143のサブセットの任意の他の組み合わせでは使用することができない。
【0011】
図2は、いくつかの実施形態による、ハードウェア利用を改善するために柔軟な空間分割を使用するGPU200のブロック図である。GPU200は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。GPU200は、本明細書では「FE回路201~203」と総称される、FE回路201,202,203のセットを含む。本明細書で使用される場合、「FE回路のセット」という語句は、必要に応じてオン又はオフにされる異なる物理的構成要素、及び、マルチスレッドのFE回路を利用する異なるスレッドを指す。本明細書で説明するように、FE回路201~203は、本明細書では「SE205~207」と総称される、対応するSE205,206,207で実行するためのコマンドバッファをスケジュールすることを含むフロントエンド機能を実行する。FE回路201~203は、GPU200のリソースを空間的に分割することによって形成される異なる経路に選択的に接続される。図示した実施形態では、FE回路201~203は、スイッチング回路215を使用して経路211,212,213に選択的に接続される。スイッチング回路215は、
図2ではデマルチプレクサとして表されているが、スイッチング回路215は、1つ以上のスイッチ、データファブリック、ルータ、マルチプレクサ、デマルチプレクサ等も含み得る。スイッチング回路215及び空間的に分割された経路の他の部分は、構成レジスタ(明確にするために
図2に示されていない)に記憶された値に基づいて構成されている。
【0012】
空間的に分割された経路211~213は、FE回路201~203からSE205~207を介してメモリに流れるコマンド及びデータのための経路を提供する。図示した実施形態では、メモリは、本明細書では「メモリパーティション221~223」と総称されるメモリパーティション221,222,223に分割される。GPU200のリソースは、FE回路201~203とSE205~207との間で情報を伝達するための複数のレーンを含むコマンドバスを含む。したがって、空間的に分割された経路は、本明細書では「レーンサブセット231~233」と総称されるコマンドバスのレーンのサブセット231,232,233を含む。また、GPU200のリソースは、SE205~207によって生成された情報をメモリに伝達するメモリチャネルのセットを含む。したがって、空間的に分割された経路は、本明細書では「メモリチャネルサブセット241~243」と総称される、メモリチャネルのサブセット241,242,243を含む。
【0013】
図示した実施形態では、スイッチング回路215は、FE回路201~203のそれぞれを経路211~213のうち対応する1つにマッピングする。しかしながら、スイッチング回路215は、FE回路201~203のサブセットを、経路211~213のサブセット又は組み合わせに選択的且つ再構成可能にマッピングする。さらに、いくつかの実施形態では、経路211~213は、本明細書で説明するように、複数のSE205~207及びGPU200の対応するリソースを含む。FE回路201~203、SE205~207、及び、空間的に分割された経路211~213のリソースの割り当ては、異なる数のアプリケーション又はスレッドを実行する場合にGPU200のリソースが完全に利用されるように決定される。例えば、単一のスレッドがGPU200上で実行している場合、FE回路201~203、SE205~207、及び、空間的に分割された経路211~213のリソースは、単一のスレッドに割り当てられる。別の例では、複数のスレッドがGPU200上で実行している場合、本明細書で説明するように、FE回路201~203、SE205~207、及び、空間的に分割された経路211~213のリソースは、複数のスレッド間で分割されて共有される。
【0014】
図3は、いくつかの実施形態による、空間分割用に構成されたコマンドバス305を含む、GPUの一部(部分)300のブロック図である。部分300は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。コマンドバス305は、FE回路320,321のセットと、本明細書では「SE325~328」と総称されるSE325,326,327,328のセットとの間で情報を独立して伝達するレーン310,311,312,313,314,315,316,317(本明細書では「レーン310~317」と総称される)を含む。
【0015】
部分300は、FE回路320,321のサブセットをレーン310~317の対応するサブセットに選択的に接続するスイッチング回路330を含む。いくつかの実施形態では、スイッチング回路330は、1つ以上のレジスタ335に記憶された情報に基づいて構成されている。また、部分300は、レーン310~317のサブセットをSE325~328のサブセットに選択的に接続するスイッチング回路340を含む。いくつかの実施形態では、スイッチング回路340は、1つ以上のレジスタ345に記憶された情報に基づいて構成されている。レジスタ335,345に記憶された情報は、FE回路320,321のサブセットをSE325~328の対応するサブセットに関連付けるマッピングを表す。スイッチング回路330,340は、レジスタ335,345に記憶された情報を使用して、FE回路320,321のサブセットとSE325~328の対応するサブセットとの間の物理経路を形成するようにレーン310~317を分割する。したがって、レーン310~317の相互排他的なサブセットが、FE回路320,321のサブセットとSE325~328の対応するサブセットとの間で情報を伝達するために提供され、これにより、異なる物理経路に関連付けられた異なる割り当てに対して、GPUの部分300によって処理されるコマンド間の分離が提供される。
【0016】
図4は、いくつかの実施形態による、単一のFE回路がSEのセットに対するコマンドをスケジュールすることを可能にするために空間的に分割されたコマンドバス305を含む、GPUの部分300のブロック図である。
図3に関して本明細書で説明したように、コマンドバス305は、FE回路320,321のサブセットとSE325~328のサブセットとの間で情報を伝達するレーン310~317のセットを含む。図示した実施形態では、スイッチング回路330は、レジスタ335に記憶された情報に基づいて、FE回路320を含むFE回路のサブセットにレーン310~317のセット全体を割り当てるように構成されている。スイッチング回路330は、FE回路321を表すボックスの破線の輪郭によって示されるように、FE回路321を含むFE回路の別のサブセットに、レーン310~317の何れのアクセスも提供しない。スイッチング回路340は、レジスタ345に記憶された情報に基づいて、レーン310~317をSE325~328のセットに接続するように構成されている。したがって、空間分割は、FE回路320に、レーン310~317を含む物理経路への排他的なアクセスを提供する。FE回路320は、レーン310~317を使用して、SE325~328のセットへのコマンドをスケジュールし、提供する。
【0017】
図5は、いくつかの実施形態による、FE回路の第1のサブセットとSEのセットの第1のサブセットとの間に第1の物理経路を提供するために空間的に分割されたコマンドバス305を含む、GPUの部分300のブロック図である。
図3に関して本明細書で説明したように、コマンドバス305は、FE回路320,321のサブセットとSE325~328のサブセットとの間で情報を伝達するレーン310~317のセットを含む。図示した実施形態では、スイッチング回路330は、レジスタ335に記憶された情報に基づいて、レーン310~313を含む第1のサブセットへの排他的なアクセスをFE回路320に提供するように構成されている。スイッチング回路330は、FE回路321を表すボックスの破線の輪郭によって示されるように、レーンの第1のサブセット310~313へのアクセスをFE回路321に提供しない。スイッチング回路340は、レジスタ345に記憶された情報に基づいて、レーン310~313をSEの第1のサブセット325,326に接続するように構成されている。スイッチング回路340は、レーン310~313をSEの第2のサブセット327,328に接続しない。したがって、空間分割は、レーン310~313を含む物理経路への排他的なアクセスをFE回路320に提供する。FE回路320は、レーン310~313を使用して、SE325,326のセットへのコマンドをスケジュールし、提供する。
【0018】
図6は、いくつかの実施形態による、FE回路の第2のサブセットとSEのセットの第2のサブセットとの間に第2の物理経路を提供するために空間的に分割されたコマンドバス305を含む、GPUの部分300のブロック図である。
図3に関して本明細書で説明したように、コマンドバス305は、FE回路320,321のサブセットとSE325~328のサブセットとの間で情報を伝達するレーン310~317のセットを含む。図示した実施形態では、スイッチング回路330は、レジスタ335に記憶された情報に基づいて、レーン314~317を含む第2のサブセットへの排他的なアクセスをFE回路321に提供するように構成されている。スイッチング回路330は、FE回路320を表すボックスの破線の輪郭によって示されるように、レーンの第2のサブセット314~317へのアクセスをFE回路320に提供しない。スイッチング回路340は、レジスタ345に記憶された情報に基づいて、レーン314~317をSEの第2のサブセット327,328に接続するように構成されている。スイッチング回路340は、レーン314~317をSEの第1のサブセット325,326に接続しない。したがって、空間分割は、レーン314~317を含む物理経路への排他的なアクセスをFE回路321に提供する。FE回路321は、レーン314~317を使用して、SE327,328のセットへのコマンドをスケジュールし、提供する。このようにして、(
図5に示すように)FE回路320に割り当てられた物理経路は、
図6に示すように、FE回路321に割り当てられた物理経路と同時に使用される。
【0019】
図7は、いくつかの実施形態による、空間分割に利用可能なキャッシュ705を含む、GPUの部分700のブロック図である。部分700は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。キャッシュ705は、異なるアプリケーション及びFE回路のサブセットに関連付けられた異なる物理経路に部分710,711,712,713(本明細書では「キャッシュ部分710~713」と総称される)を割り当てるために選択的に分割される。また、GPUの部分700は、SE720,721,722,723(本明細書では「SE720~723」と総称される)のサブセットをキャッシュ部分710~713に選択的に接続するスイッチング回路715を含む。スイッチング回路715は、レジスタ725に記憶された情報に基づいて構成される。したがって、キャッシュ部分710~713は、SE720~723を介してFE回路からメモリに情報を伝達するために使用される物理経路の一部である。
【0020】
図示した実施形態では、キャッシュ705は、キャッシュ部分710~713が異なる物理経路の一部であるように分割される。スイッチング回路715は、SE720をキャッシュ部分710に接続し、SE721をキャッシュ部分711に接続し、SE722をキャッシュ部分712に接続し、SE723をキャッシュ部分713に接続する。したがって、SE720~723は、それらの対応するキャッシュ部分710~713への排他的アクセスを有し、SE720~723によってキャッシュ部分710~713に記憶された情報は、他のSE720~723によって他のキャッシュ部分710~713に記憶された情報から分離される。
【0021】
図8は、いくつかの実施形態による、SEの第1のサブセットにキャッシュ部分の第1のサブセットへのアクセスを提供ために分割されたキャッシュ705を含む、GPUの部分700のブロック図である。部分700は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。図示した実施形態では、キャッシュ705は、キャッシュ部分の第1のサブセット710,711が、SEの第1のサブセット720,721を含む第1の物理経路に割り当てられるように分割される。スイッチング回路715は、SEの第1のサブセット720,721をキャッシュ部分の第1のサブセット710,711に接続する。SEの第1のサブセット720,721は、キャッシュ部分の第1のサブセット710,711を単一の共有キャッシュとして利用する。したがって、SE720,721は、キャッシュ部分の第1のサブセット710,711内の共有キャッシュリソースへの排他的なアクセスを有し、SEの第1のサブセット720,721によってキャッシュ部分の第1のサブセット710,711に記憶された情報は、他のSE722,723によって他のキャッシュ部分712,713に記憶された情報から分離される。
【0022】
図9は、いくつかの実施形態による、SEの第2のサブセットにキャッシュ部分の第2のサブセットへのアクセスを提供するために分割されたキャッシュ705を含む、GPUの部分700のブロック図である。部分700は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。図示した実施形態では、キャッシュ705は、キャッシュ部分の第2のサブセット712,713が、SEの第2のサブセット722,723を含む第2の物理経路に割り当てられるように分割される。スイッチング回路715は、SEの第2のサブセット722,723をキャッシュ部分の第2のサブセット712,713に接続する。SEの第2のサブセット722,723は、キャッシュ部分の第2のサブセット712,713を単一の共有キャッシュとして利用する。したがって、SE722,723は、キャッシュ部分の第2のサブセット712,713内の共有キャッシュリソースへの排他的なアクセスを有し、SEの第2のサブセット722,723によってキャッシュ部分の第2のサブセット712,713に記憶された情報は、他のSE720,721によって他のキャッシュ部分710,711に記憶された情報から分離される。このようにして、(
図8に示すように)キャッシュ部分の第1のサブセット710,711を含む物理経路は、
図9に示すように、キャッシュ部分の第2のサブセット712,713に割り当てられた物理経路と同時に使用される。
【0023】
図10は、いくつかの実施形態による、空間分割に利用可能なメモリチャネルのセットを含む、GPUの部分1000のブロック図である。GPUの部分1000は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。メモリチャネル1001,1002,1003,1004(本明細書では「メモリチャネル1001~1004」と総称される)は、部分1011,1012,1013,1014(本明細書では「キャッシュ部分1011~1014」と総称される)に分割するために利用可能なキャッシュ1010とメモリ1020との間の経路を提供するために使用される。スイッチング回路1025は、本明細書で説明するように、キャッシュ部分1011~1014のサブセットをメモリ1020に選択的に接続して、FE回路及びSEを含む物理経路の一部である物理経路を形成する。スイッチング回路1025は、レジスタ1030に記憶された情報を使用して構成される。図示した実施形態では、キャッシュ部分1011~1014のそれぞれは、スイッチング回路1025によってメモリ1020に独立して接続される。いくつかの実施形態では、キャッシュ部分1011~1014は、例えば、異なるベースアドレスによって示されるメモリ場所及びメモリストライドに情報を書き込むことによって、メモリ1020の異なる部分にマッピングされる。
【0024】
図11は、いくつかの実施形態による、メモリへの第1の経路を提供する第1のサブセットに分割されたメモリレーンを含む、GPUの部分1000のブロック図である。スイッチング回路1025は、メモリレーン1001,1002を含む第1のサブセットをキャッシュ部分の第1のサブセット1011,1012に割り当てる。図示した実施形態では、キャッシュ部分1011,1012は、メモリレーン1001,1002を共有してメモリ1020への経路を提供する(本明細書で説明するような)単一の共有キャッシュとして利用される。スイッチング回路1025は、レジスタ1030に記憶された情報を使用して構成される。キャッシュ部分の第1のサブセット1011,1012には、メモリレーンの第1のサブセット1001,1002への排他的なアクセスが提供される。キャッシュ部分の第2のサブセット1013,1014には、キャッシュ部分1013,1014を表す破線ボックスによって示されるように、メモリレーンの第1のサブセット1001、1002へのアクセスが提供されない。
【0025】
図12は、いくつかの実施形態による、メモリへの第2の経路を提供する第2のサブセットに分割されたメモリレーンを含む、GPUの部分1000のブロック図である。スイッチング回路1025は、メモリレーン1003,1004を含む第2のサブセットをキャッシュ部分の第2のサブセット1013,1014に割り当てる。図示した実施形態では、キャッシュ部分の第2のサブセット1013,1014は、メモリレーンの第2のサブセット1003,1004を共有してメモリ1020への経路を提供する単一の共有キャッシュ(本明細書で説明する)として利用される。スイッチング回路1025は、レジスタ1030に記憶された情報を使用して構成される。キャッシュ部分の第2のサブセット1013,1014には、メモリレーンの第2のサブセット1003,1004への排他的なアクセスが提供される。キャッシュ部分の第1のサブセット1011,1012には、キャッシュ部分1011,1012を表す破線ボックスによって示されるように、メモリレーンの第2のサブセット1003,1004へのアクセスが提供されない。このようにして、(
図11に示すように)キャッシュ部分の第1のサブセット1011,1012及びメモリレーン1001,1002を含む経路は、キャッシュ部分の第2のサブセット1013,1014及びメモリレーン1003,1004を含む経路と同時に使用される。
【0026】
図13は、いくつかの実施形態による、GPUのリソースを空間的に分割する方法1300のフロー図である。方法1300は、
図1に示すGPU105のいくつかの実施形態で実施される。
【0027】
ブロック1305で、GPUは、処理のワークロードを識別し、ワークロードの特性を決定する。この決定は、コマンドバッファの分析やCPUから受信した構成情報に基づいて、又は、他の技術を使用して行われる。例えば、GPUは、ワークロードが、複雑度が高い又は高いグラフィックス解像度を必要とする単一のアプリケーションによって生成されたコマンドを含むということを決定し得る。別の例では、GPUは、ワークロードが、異なる複雑度又はグラフィックス解像度を有する複数のアプリケーションによって生成されたコマンドを含むということを決定し得る。
【0028】
ブロック1310で、GPUは、対応するSEのサブセットに対するコマンドをスケジュールするために、FE回路のサブセットを割り当てる。例えば、GPUは、ワークロードが単一のアプリケーションから高い複雑度又は高い解像度のコマンドを含むということを決定することに応じて、GPUに実装されたSEのセットに対するコマンドをスケジュールするために、単一のFE回路を割り当て得る。別の例では、GPUは、複数のアプリケーションからのより低い複雑度/解像度のコマンドのために、コマンドを独立してスケジュールするためのFE回路のサブセットをSEのセットのサブセットに割り当て得る。
【0029】
ブロック1310で、GPUは、コマンドバスのレーンを、SEへのFE回路の割り当てに対応するサブセットに分割する。例えば、単一のアプリケーションのためのSEのセットに対するコマンドをスケジュールするために単一のFE回路が割り当てられる場合、コマンドバスの全てのレーンを含む経路が形成される。別の例では、SEのセットの対応するサブセットに対するコマンドをスケジュールするために、FE回路の複数のサブセットが割り当てられる場合、コマンドバスのレーンがサブセットに分割されて、FE回路のサブセットとSEのセットの対応するサブセットとのそれぞれの組み合わせのために個別の経路が形成される。
【0030】
ブロック1315で、GPUは、キャッシュを、FE回路のSEへの割り当てに対応するサブセットに分割する。例えば、単一のアプリケーションのためのSEのセットに対するコマンドをスケジュールするために単一のFE回路が割り当てられる場合、キャッシュ全体が経路に割り当てられる。別の例では、SEのセットの対応するサブセットに対するコマンドをスケジュールするためにFE回路の複数のサブセットが割り当てられる場合、キャッシュは、FE回路のサブセットとSEのサブセットとのそれぞれの組み合わせに割り当てられる部分に分割される。
【0031】
ブロック1320で、キャッシュをメモリに接続するメモリチャネルは、SEへのFE回路の割り当てに基づいて分割される。例えば、単一のアプリケーションのためのSEのセットに対するコマンドをスケジュールするために単一のFE回路が割り当てられる場合、全てのメモリチャネルが経路に割り当てられる。別の例では、SEのセットの対応するサブセットに対するコマンドをスケジュールするためにFE回路の複数のサブセットが割り当てられる場合、メモリチャネルは、FE回路のサブセットとSEのサブセットとのそれぞれの組み合わせに割り当てられるサブセットに分割される。このように、FE回路からメモリへの独立した経路は、1つ以上のアプリケーションによって排他的に使用されるように提供されるため、1つ以上のアプリケーションは、分離された経路を使用して同時に実行することが可能である。
【0032】
本明細書に開示されるように、いくつかの実施形態では、装置は、シェーダエンジンのセットと、フロントエンド(FE)回路のセットであって、FE回路のセットのサブセットは、マッピングに基づいてシェーダエンジンのセットのサブセットのためのジオメトリワークロードをスケジュールするように構成されている、FE回路のセットと、FE回路のセットからシェーダエンジンを介してメモリに情報を伝達するように構成された物理経路のセットであって、物理経路のセットのサブセットは、マッピングに基づいてFE回路のセットのサブセット及びシェーダエンジンのセットのサブセットに割り当てられる、物理経路のセットと、を含む。一態様では、物理経路のセットは、FE回路のセットからシェーダエンジンのセットに情報を伝達するレーンのセットを有するコマンドバスを含み、レーンのセットのサブセットは、マッピングに基づいてFE回路のセットのサブセット及びシェーダエンジンのセットのサブセットに割り当てられる。別の態様では、物理経路のセットは、シェーダエンジンのセットから受信した情報を保持するためのキャッシュを含み、キャッシュの部分は、マッピングに基づいてシェーダエンジンのセットのサブセットから受信した情報を保持するために割り当てられる。
【0033】
一態様では、物理経路のセットは、キャッシュからメモリに情報を伝達するように構成されたメモリチャネルのセットを含み、メモリチャネルのセットのサブセットは、キャッシュの部分からメモリに情報を伝達するために割り当てられる。別の態様では、装置は、物理経路のセットを構成するための情報を記憶するように構成されたレジスタのセットを含む。別の態様では、レジスタのセットは、マッピングに基づいてレーンのセットのサブセットをFE回路のセットのサブセットに割り当てるために使用される情報を記憶するためのレジスタの第1のサブセットと、キャッシュを分割して、シェーダエンジンのセットのサブセットから受信した情報を保持するための部分を割り当てるために使用される情報を記憶するためのレジスタの第2のサブセットと、キャッシュの部分からメモリに情報を伝達するためのメモリチャネルのセットのサブセットを割り当てるように構成されたレジスタの第3のサブセットと、を含む。
【0034】
一態様では、物理経路のセットのサブセットは、シェーダエンジンのサブセット上で同時に実行しているアプリケーションに関連付けられる。別の態様では、マッピングは、アプリケーションの特性に基づいて決定される。更に別の態様では、マッピングは、アプリケーションに関連付けられた複雑度及びグラフィックス解像度のうち少なくとも1つに基づいて決定される。
【0035】
いくつかの実施形態では、装置は、シェーダエンジンのセットと、フロントエンド(FE)回路のセットであって、FE回路のセットのサブセットは、シェーダエンジンのセットの対応するサブセットに対するジオメトリワークロードをスケジュールするように構成されている、FE回路のセットと、FE回路のセットからシェーダエンジンのセットを介してメモリに情報を伝達する物理経路のセットの空間分割を示す情報を含むレジストのセットと、を含む。一態様では、レジスタのセットに記憶された情報によって示される空間分割は、FE回路のセットのサブセット及びシェーダエンジンのセットの対応するサブセットへの物理経路のセットのサブセットの割り当てを表す。
【0036】
一態様では、物理経路のセットは、FE回路のセットからシェーダエンジンのセットに情報を伝達するレーンのセットを有するコマンドバスを含み、レジスタのセットは、FE回路のセットのサブセット及びシェーダエンジンのセットのサブセットへのレーンのセットのサブセットの割り当てを示す情報を記憶する。別の態様では、物理経路のセットは、シェーダエンジンのセットから受信した情報を保持するためのキャッシュを含み、レジスタのセットは、シェーダエンジンのセットのサブセットから受信した情報を保持するためのキャッシュの部分の割り当てを示す情報を記憶する。更に別の態様では、物理経路のセットは、キャッシュからメモリに情報を伝達するように構成されたメモリチャネルのセットを含み、レジスタのセットは、キャッシュの部分からメモリに情報を伝達するためのメモリチャネルのセットのサブセットの割り当てを示す情報を記憶する。
【0037】
一態様では、レジスタのセットは、レジスタのセットのサブセットをFE回路のセットのサブセットに割り当てるために使用される情報を記憶するためのレジスタの第1のサブセットと、キャッシュを分割して、シェーダエンジンのセットのサブセットから受信した情報を保持するための部分を割り当てるために使用される情報を記憶するためのレジスタの第2のサブセットと、キャッシュの部分からメモリに情報を伝達するためのメモリチャネルのセットのサブセットを割り当てるように構成されたレジスタの第3のサブセットと、を含む。別の態様では、物理経路のセットのサブセットは、シェーダエンジンのサブセット上で同時に実行しているアプリケーションに関連付けられる。更に別の態様では、物理経路のセットの空間分割を示すマッピングは、アプリケーションの特性に基づいて決定される。なお別の態様では、マッピングは、アプリケーションに関連付けられた複雑度及びグラフィックス解像度のうち少なくとも1つに基づいて決定される。
【0038】
いくつかの実施形態では、方法は、フロントエンド(FE)回路のセットのサブセットをシェーダエンジンのセットの対応するサブセットにマッピングするマッピング情報を含むレジスタのセットにアクセスすることと、マッピング情報に基づいて、物理経路のセットを、FE回路のセットのサブセットからシェーダエンジンのセットの対応するサブセットを介してメモリに情報を伝達するサブセットに空間的に分割することと、を含む。一態様では、物理経路のセットは、FE回路のセットからシェーダエンジンのセットに情報を伝達するレーンのセットを有するコマンドバスを含み、物理経路のセットを空間的に分割することは、FE回路のセットのサブセット及びシェーダエンジンのセットのサブセットにレーンのセットのサブセットを割り当てることを含む。
【0039】
一態様では、物理経路のセットは、シェーダエンジンのセットから受信した情報を保持するためのキャッシュを含み、物理経路のセットを空間的に分割することは、キャッシュを、シェーダエンジンのセットのサブセットから受信した情報を保持するための部分に分割することを含む。別の態様では、物理経路のセットは、キャッシュからメモリに情報を伝達するように構成されたメモリチャネルのセットを含み、物理経路のセットを空間的に分割することは、キャッシュの部分からメモリに情報を伝達するためのメモリチャネルのセットのサブセットを割り当てることを含む。
【0040】
いくつかの実施形態では、上述した装置及び技術は、
図1~
図13を参照して上述した空間的に分割されたGPU等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用される。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0041】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0042】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0043】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0044】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。