(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-17
(45)【発行日】2024-05-27
(54)【発明の名称】マルチテナントグラフィック処理ユニットの動的透過再構成
(51)【国際特許分類】
G06T 15/00 20110101AFI20240520BHJP
【FI】
G06T15/00 501
(21)【出願番号】P 2022548926
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 US2021019855
(87)【国際公開番号】W WO2021173959
(87)【国際公開日】2021-09-02
【審査請求日】2024-02-07
(32)【優先日】2020-02-28
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】レックス エルドン マクラリー
【審査官】益戸 宏
(56)【参考文献】
【文献】米国特許出願公開第2018/0114290(US,A1)
【文献】特表2013-504131(JP,A)
【文献】特表2009-543195(JP,A)
【文献】米国特許出願公開第2011/0080415(US,A1)
【文献】米国特許第05884090(US,A)
【文献】米国特許出願公開第2008/0074433(US,A1)
【文献】米国特許出願公開第2010/0123717(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
(57)【特許請求の範囲】
【請求項1】
装置であって、
シェーダエンジンのセットと、
フロントエンド(FE)回路のセットであって、前記FE回路のセットのサブセットは、前記シェーダエンジンのセットのうち対応するサブセット上で実行するためのコマンドをスケジュールするように構成されている、FE回路のセットと、
情報を、前記シェーダエンジンのセットを介して前記FE回路のセットからメモリに伝達するように構成された物理的経路のセットであって、前記物理的経路のセットのサブセットは、前記FE回路のセットのサブセット、及び、前記シェーダエンジンのセットのうち対応するサブセット
による排他的な使用のために割り当てられている、物理的経路のセットと、
再構成要求を受信し、前記再構成要求に基づいて前記物理的経路のセット
の1つ以上のサブセットの割り当てを変更するように構成されたスケジューラと、を備える、
装置。
【請求項2】
前記スケジューラは、前記シェーダエンジンのセットのうち対応するサブセット上で実行するための前記コマンドを生成するために、少なくとも1つの第1のアプリケーションを実行している中央処理ユニット(CPU)から第1のパケット内の前記再構成要求を受信するように構成されている、
請求項1の装置。
【請求項3】
前記スケジューラは、少なくとも1つの前記コマンドの実行の完了を示す第2のパケットを送信するように構成されており、前記スケジューラは、前記第2のパケットを送信することに応じて、前記第1のパケットを受信するように構成されている、
請求項2の装置。
【請求項4】
前記再構成要求は、前記少なくとも1つの第1のアプリケーションの特性、及び、前記シェーダエンジンのセットのうち少なくとも1つによって後続実行される少なくとも1つの第2のアプリケーションの特性に基づいて、前記CPUによって生成された情報を含む、
請求項3の装置。
【請求項5】
前記物理的経路のセットを構成する情報を記憶するように構成されたレジスタのセットであって、前記スケジューラは、前記再構成要求に基づいて前記レジスタのセットをプログラムするように構成されている、レジスタのセットをさらに備える、
請求項1~4の何れかの装置。
【請求項6】
レーンのセットを実装するコマンドバスであって、前記スケジューラは、前記レーンのセットのサブセットを前記物理的経路のセットのサブセットに割り当てるように構成されている、コマンドバスと、
前記シェーダエンジンのセットによって共有されるキャッシュであって、前記スケジューラは、前記キャッシュを、前記物理的経路のセットのサブセットに割り当てられる部分に分割するように構成されている、キャッシュと、
前記キャッシュと前記メモリとの間のメモリチャネルのセットをサポートするデータファブリックであって、前記スケジューラは、前記メモリチャネルのセットのサブセットを前記物理的経路のセットのサブセットに割り当てるように構成されている、データファブリックと、をさらに備える、
請求項5の装置。
【請求項7】
前記レジスタのセットは、
前記FE回路の前記サブセットと前記シェーダエンジンの前記対応するサブセットとのマッピングを示す情報を記憶するように構成された、前記レジスタのセットの第1のサブセットと、
前記コマンドバスのレーンのセットのサブセットの、前記物理的経路のセットのサブセットへの割り当てを示す情報を記憶するように構成された、前記レジスタのセットの第2のサブセットと、
前記キャッシュの前記部分の、前記物理的経路のセットのサブセットへの割り当てを示す情報を記憶する、前記レジスタのセットの第3のサブセットと、
前記メモリチャネルのセットのサブセットの、前記物理的経路のサブセットへの割り当てを示す情報を記憶する、前記レジスタのセットの第4のサブセットと、を含む、
請求項6の装置。
【請求項8】
前記スケジューラは、前記再構成要求に基づいて、前記レーンのセットのサブセット、前記キャッシュの前記部分の割り当て、及び、前記メモリチャネルのセットのサブセットの割り当てを変更するように構成されている、
請求項7の装置。
【請求項9】
方法であって、
情報を、シェーダエンジンのセットを介してフロントエンド(FE)回路のセットからメモリに伝達する物理的経路のセット
の1つ以上のサブセットに対する変更を示す再構成要求を受信することであって、前記FE回路のセットのサブセットは、前記シェーダエンジンのセットのうち対応するサブセット上で実行するためのコマンドをスケジュールするように構成されている、ことと、
前記FE回路のセットの対応するサブセットによって使用されるために前記物理的経路のセットのサブセットを排他的に割り当てることによって、前記シェーダエンジンのセットのうち対応するサブセット上で実行するための前記コマンドを生成しているアプリケーションに対する前記物理的経路のセットの割り当てを変更することと、
前記物理的経路のセットの変更された割り当てを介して、前記FE回路のセットのサブセットから前記シェーダエンジンのセットのうち対応するサブセットに前記コマンドをディスパッチすることと、を含む、
方法。
【請求項10】
前記再構成要求を受信することは、前記シェーダエンジンのセットのうち対応するサブセット上で実行するための前記コマンドを生成するために、前記アプリケーションを実行している中央処理ユニット(CPU)から第1のパケット内の前記再構成要求を受信することを含む、
請求項9の方法。
【請求項11】
少なくとも1つの前記コマンドの実行の完了を示す第2のパケットを送信することと、
前記第2のパケットを送信することに応じて、前記第1のパケットを受信することと、をさらに含む、
請求項10の方法。
【請求項12】
前記物理的経路のセットの第1のサブセットと関連付けられた前記シェーダエンジンのセットの第1のサブセット上の第1のアプリケーションのための第1のコマンドと、前記物理的経路のセットの少なくとも1つの第2のサブセットに関連付けられた前記シェーダエンジンのセットの少なくとも1つの第2のサブセット上の少なくとも1つの第2のアプリケーションのための第2のコマンドと、を実行することと、
前記シェーダエンジンのセットの前記第1のサブセットが前記第1のコマンドの実行を完了することに応じて、前記第2のパケットを送信することと、
前記少なくとも1つの第2のアプリケーション及び少なくとも1つの第3のアプリケーションをサポートするために、前記物理的経路のセットの割り当ての変更を示す情報を含む前記第1のパケットを受信することと、をさらに含む、
請求項11の方法。
【請求項13】
前記物理的経路のセットの割り当てを、前記第1のアプリケーション及び前記少なくとも1つの第2のアプリケーションに対する第1の割り当てから、前記少なくとも1つの第2のアプリケーション及び前記少なくとも1つの第3のアプリケーションに対する第2の割り当てに変更することをさらに含む、
請求項12の方法。
【請求項14】
前記第1のパケットは、前記少なくとも1つの第2のアプリケーション及び前記少なくとも1つの第3のアプリケーションの特性に基づいて、前記CPUによって生成された情報を含む、
請求項13の方法。
【請求項15】
前記物理的経路のセットの割り当てを変更することは、前記再構成要求に基づいて、前記物理的経路のセットを構成する情報を記憶するように構成されたレジスタのセットをプログラミングすることを含む、
請求項9~14の何れかの方法。
【請求項16】
前記レジスタのセットをプログラミングすることは、
前記FE回路の前記サブセットを前記シェーダエンジンの対応するサブセットにマッピングする情報を記憶するように構成された、前記レジスタのセットの第1のサブセットをプログラミングすることと、
コマンドバスのレーンのセットのサブセットの、前記物理的経路のセットのサブセットへの割り当てを示す情報を記憶するように構成された、前記レジスタのセットの第2のサブセットをプログラミングすることと、
キャッシュの部分の、前記物理的経路のセットのサブセットへの割り当てを示す情報を記憶するように、前記レジスタのセットの第3のサブセットをプログラミングすることと、
メモリチャネルのセットのサブセットの、前記物理的経路の前記サブセットへの割り当てを示す情報を記憶するように、前記レジスタのセットの第4のサブセットをプログラミングすることと、を含む、
請求項15の方法。
【請求項17】
第1の処理ユニットであって、
第2の処理ユニット上で実行するためのコマンドを生成するための少なくとも1つのアプリケーションであって、前記第2の処理ユニットは、
シェーダエンジンのセットと、
フロントエンド(FE)回路のセットであって、前記FE回路のセットのサブセットは、前記シェーダエンジンのセットのうち対応するサブセット上で実行するためのコマンドをスケジュールするように構成されている、フロントエンド(FE)回路セットと、
情報を、前記シェーダエンジンのセットを介して前記FE回路のセットからメモリに伝達するように構成された物理的経路のセットであって、前記物理的経路のセットのサブセットは、前記FE回路のセットのサブセット及び前記シェーダエンジンのセットのうち対応するサブセット
による排他的な使用のために割り当てられている、物理的経路のセットと、を含む、少なくとも1つのアプリケーションと、
前記
第2の処理ユニットの再構成の要求に応じて、前記第2の処理ユニット内の前記物理的経路のセットの
1つ以上のサブセットの割り当てを変更するように構成されたオペレーティングシステム(OS)と、
前記第2の処理ユニットの再構成の要求を送信するように構成されたアプリケーションプログラミングインターフェース(API)と、を備える、
第1の処理ユニット。
【請求項18】
前記APIは、前記第2の処理ユニットが少なくとも1つの前記コマンドの実行を完了したことを示す情報を含む第1のパケットを受信するように構成されている、
請求項17の第1の処理ユニット。
【請求項19】
前記OSは、前記第1のパケットを受信することに応じて、前記物理的経路のセットの再構成を判定するように構成されている、
請求項18の第1の処理ユニット。
【請求項20】
前記少なくとも1つのアプリケーションは、第1のアプリケーション及び少なくとも1つの第2のアプリケーションを含み、前記第1のパケットは、前記第2の処理ユニットが前記第1のアプリケーションのコマンドの実行を完了したことを示す、
請求項19の第1の処理ユニット。
【請求項21】
前記OSは、前記第1のパケットを受信することに応じて、前記第2の処理ユニット上の前記少なくとも1つの第2のアプリケーションと同時実行するための少なくとも1つの第3のアプリケーションを選択するように構成されている、
請求項20の第1の処理ユニット。
【請求項22】
前記OSは、前記少なくとも1つの第2のアプリケーション及び前記少なくとも1つの第3のアプリケーションの特性に基づいて、前記物理的経路のセットの再構成を判定するように構成されている、
請求項21の第1の処理ユニット。
【請求項23】
前記APIは、前記第2の処理ユニット上の前記少なくとも1つの第2のアプリケーション及び前記少なくとも1つの第3のアプリケーションのコマンドの同時実行を開始する前に、前記第2の処理ユニットの再構成のための要求を送信するように構成されている、
請求項22の第1の処理ユニット。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィック処理ユニット(graphics processing unit、GPU)における処理は、典型的には、中央処理ユニット(central processing unit、CPU)によって処理されるアプリケーションプログラミングインターフェース(application programming interface、API)コール(例えば、ドローコール)によって開始される。ドローコールは、CPUによって生成され、GPUに伝送されて、フレーム内のオブジェクト(又はオブジェクトの一部)をレンダリングするようにGPUに命令するコマンドである。ドローコールは、オブジェクト又はその一部分をレンダリングするようにGPUによって使用されるテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。ドローコールを受信することに応じて、GPUは、ディスプレイに提供される画素の値を生成するようにオブジェクトをレンダリングし、ディスプレイは、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
【0002】
ゲーム及び他のグラフィックを多用するアプリケーションは、ユーザ定義の再構成可能な仮想パイプラインとしてグラフィックパイプラインを実装するために使用されるシェーダエンジン及び固定機能ハードウェアユニットを含む、GPUの物理的リソースを貪欲に消費するものである。例えば、三次元(3D)グラフィックを処理するための従来のグラフィックパイプラインは、プログラマブルシェーダによってサポートされた一連の固定機能ハードウェアブロック配置で形成される。これらの配置は、通常、Microsoft DX 11/12、Khronos Group、OpenGL、Vulkan等によって定義されたAPI等のグラフィックアプリケーションプログラミングインターフェース(API)を介して構成される。ゲームは、典型的には、ゲームのグラフィック処理要件を取り扱うように最適化されたコンソール(Xbox及びPlayStation 4等)及びパーソナルコンピュータ(personal computer、PC)で再生される。しかしながら、コンソール及びゲームPCは高価であり、いくつかのゲームは、何れかのゲーム形式のみで利用可能である。クラウドゲームは、レンダリングされたグラフィックをユーザにストリームするクラウドサーバ内のGPUにグラフィック処理を移動させ、それによって、ユーザのハードウェア要件を低減し、ユーザが複数の形式でゲームを再生することを可能にすることによって、これらの欠点を克服する。
【0003】
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
【
図1】いくつかの実施形態による、マルチテナンシーグラフィック処理ユニット(GPU)内の空間分割を実装する処理システムのブロック図である。
【
図2】いくつかの実施形態による、ハードウェア利用を改善するために、フレキシブルな空間分割を使用するGPUのブロック図である。
【
図3】いくつかの実施形態による、空間分割用に構成されたコマンドバスを含むGPUの一部のブロック図である。
【
図4】いくつかの実施形態による、空間分割に利用可能なキャッシュを含むGPUの一部のブロック図である。
【
図5】いくつかの実施形態による、空間分割に利用可能なメモリチャネルのセットを含むGPUの一部のブロック図である。
【
図6】いくつかの実施形態による、GPUにコマンドを提供するためのアプリケーションを実行する中央処理ユニット(CPU)を含む処理システムのブロック図である。
【
図7】いくつかの実施形態による、第1の構成で経路の第1のセットを実装するGPUを含む処理システムのブロック図である。
【
図8】いくつかの実施形態による、第2の構成で経路の第2のセットを実装するGPUを含む処理システムのブロック図である。
【
図9】いくつかの実施形態によるGPUの動的透過再構成を実行する方法のフロー図である。
【発明を実施するための形態】
【0005】
クラウドサーバ内のグラフィック処理ユニット(GPU)は、フェッチングコマンド、ハンドリングジッタ、ジオメトリ操作の実行、及び、レイトレーシングの実行等のタスクを取り扱うためのフロントエンド(front end、FE)ハードウェアを含む。FEハードウェアは、典型的には、フェッチされたコマンドを保持するための先入れ先出し(first-in-first-out、FIFO)バッファ等のコマンドフェッチャーと、キューと、GPU内のシェーダエンジン上での実行のためにコマンドバッファからコマンドをスケジュールするスケジューラと、を含む。シェーダエンジンは、1つ以上のプロセッサ及び1つ以上の算術論理ユニット(arithmetic logic unit、ALU)を使用して実装され、FEハードウェアによって提供されたコマンドを実行する。シェーダ処理された画素の値等のシェーダによって生成された結果は、対応するメモリにも記憶される頻繁に使用された情報を記憶する1つ以上のキャッシュに出力される。したがって、GPUは、これらのエンティティ間の結果を保持するためのメモリ又はレジスタ、キャッシュ、ポート、及び、インターフェースを含む。情報は、FEハードウェアからシェーダエンジンにコマンドを搬送するためのコマンドバスと、シェーダエンジンからの出力を記憶するためのキャッシュと、キャッシュされた情報をメモリに伝達するためのメモリチャネルと、を含む経路を介してFEハードウェアからメモリに流れる。したがって、GPUのリソースは、コマンドバスを介してシェーダエンジンにコマンド及びデータを伝達するために使用された帯域幅と、シェーダエンジンによって生成された結果を記憶するキャッシュと、キャッシュとメモリとの間の情報を伝達するメモリチャネルと、を含む。
【0006】
クラウドサーバ内のGPUのセットは、異なるアプリケーションの動的に変化する混合を実行する。例えば、クラウドサーバは、第1の時間間隔中に4つの容易なゲーム(比較的低いリソース消費を伴う)、第2の時間間隔中に2つの中等度のゲーム(中間のリソース消費を伴う)、及び、第3の時間間隔中に単一の複雑なゲーム(比較的高いリソース消費を伴う)を実行することができる。GPUのセットは、コマンドが中央処理ユニット(CPU)によってアプリケーションのために生成され、次いで、実行のためにGPUのセットに提供されるため、GPUのセット上で実行するためのコマンドを提供するアプリケーションの要件を判定することができない。
【0007】
図1~
図9は、1つ以上のアプリケーションを実行しているCPUから受信されるアプリケーションプログラミングインターフェース(API)パケット等のパケットに応じて、1つ以上のアプリケーションによって生成されたコマンドを実行するように透過的に再構成されるGPUの実施形態を開示する。CPUは、GPUが1つ以上のアプリケーションによって生成されたコマンドの実行を完了することに応じて、パケットを生成する。例えば、GPUが第1及び第2のアプリケーションのコマンドを同時に実行する場合、GPUは、第1のアプリケーションのコマンドが実行を完了したことを示すメッセージをCPUに伝送することができる。それに応じて、CPUは、GPUに第3のアプリケーションをスケジュールし、第1及び第3のアプリケーションの同時実行をサポートするようにその構成を変更することをGPUに命令するAPIパケットを生成する。GPUのいくつかの実施形態は、複数のフロントエンド(FE)回路、レーンのセットを実装するコマンドバス、シェーダエンジンのセット、シェーダエンジンによって共有されるキャッシュ、及び、キャッシュとメモリとの間のメモリチャネルのセットをサポートするデータファブリックを含む。したがって、GPUの構成を変更することは、シェーダエンジンのサブセット上で実行するためのコマンドをスケジュールするFE回路の割り当てを変更することと、コマンドバスのレーン、キャッシュ及びGPU上で同時に実行しているアプリケーション間のメモリチャネルのセットの分割を変更することと、を含む。GPUの構成は、GPU内のレジスタの値に基づいて判定される。いくつかの実施形態では、レジスタは、シェーダエンジンへのFE回路のマッピングを示すレジスタの第1のセットと、コマンドバスのレーンの分割を示すレジスタの第2のセットと、キャッシュを分割するためのレジスタの第3のセットと、メモリチャネルのセットを分割するためのレジスタの第4のセットと、を含む。レジスタは、APIパケットに含まれる情報に基づいてプログラムされる。
【0008】
図1は、いくつかの実施形態による、マルチテナンシー(multi-tenancy)グラフィック処理ユニット(GPU)105内の空間分割を実装する処理システム100のブロック図である。処理システム100は、1つ以上の中央処理ユニット(CPU)110,111を含む。2つのCPU110,111が
図1に示されているが、処理システム100のいくつかの実施形態は、より多くの又はより少ないCPUを含む。スケーラブルデータファブリック(scalable data fabric、SDF)115は、処理システム100内の端点間のデータフローをサポートする。SDF115のいくつかの実施形態は、周辺構成要素インターフェース(peripheral component interface、PCI)物理層、メモリコントローラ、ユニバーサルシリアルバス(universal serial bus、USB)ハブ、GPU105及びCPU110,111を含むコンピューティング及び実行ユニット、並びに、他の端点等の接続点間のデータフローをサポートする。図示した実施形態では、SDF115は、入力/出力(input/output、I/O)ハブ120に接続され、このハブは次いで、PCIエクスプレス(PCI express、PCI-E)バス125及びノースバウンドインターフェース(north bound interface、NBIF)130に接続される。また、処理システム100は、処理システム100内でシステム制御信号を伝達する制御通信プレーンであるスケーラブル制御ファブリック(scalable control fabric、SCF)135を含む。システム制御信号の例は、熱及び電力管理、試験、セキュリティ等をサポートするために使用された制御信号である。
【0009】
GPU105は、コマンドを同時に又は並行して実行するために使用されるシェーダエンジン(shader engine、SE)140,141,142,143(本明細書では「SE140~143」と総称される)のセットを含む。SE140~143のいくつかの実施形態は、CPU110,111のうち何れかから受信されたドローコール内の情報を使用して、シーンのモデルを表すプリミティブの頂点をシェード処理するように構成される。また、SE140~143は、シェード処理されたプリミティブに基づいて生成された画素をシェード処理し、シェード処理された画素を、例えば、I/Oハブ120を介して、ユーザに対する提示のためにディスプレイに提供する。4つのシェーダエンジンが
図1に示されているが、GPU105のいくつかの実施形態は、より多くの又はより少ないシェーダエンジンを含む。SE140~143は、頻繁に使用されたデータ及び命令を記憶するグラフィックレベル2(level 2、L2)キャッシュ145に接続されている。いくつかの実施形態では、L2キャッシュ145は、SE140~143内に実装される1つ以上のレベル1(level 1、L1)キャッシュ、及び、処理システム100内に実装される1つ以上のL3キャッシュ(又は他の最後のレベルキャッシュ)に接続される。キャッシュは、L2キャッシュ145を含むキャッシュ階層を形成する。キャッシュ階層内の他のキャッシュは、明確にするために
図1に示されていない。
【0010】
GPU105のフロントエンド(FE)回路は、幾何学的ワークロードのプリミティブをフェッチし、シェーダエンジン上での実行のための幾何学的ワークロードのスケジューリングを実行し、場合によっては、シリアル同期、状態更新、ドローコール、キャッシュ活動、及び、プリミティブのテッセレーションを取り扱う。GPU105内のFE回路は、本明細書で説明するように、FE回路150,151を含むが、FE回路のいくつかの実施形態は、追加のFE回路を含むように分割される。また、FE回路は、FE回路150,151によって共有される(及びその間に分割される)共有リソース153を含む(又はそれにアクセスする)。例えば、共有リソース153は、FE回路150,151の両方がアクティブであり、異なるスレッド又はアプリケーションを実行する場合に、FE回路150,151に別々に割り当てられる2つの部分に分割される。別の例では、共有リソース153の全ては、FE回路150,151のうち何れかのみがアクティブである場合に、又は、FE回路150,151の組み合わされたリソースが単一のスレッド又はアプリケーションをサポートするために使用される場合に、単一のFE回路に割り当てられる。共有リソース153は、キャッシュ、算術論理ユニット(arithmetic logic unit、ALU)等を含む。FE回路150,151は、SE140~143上で実行するためのコマンドバッファを受信し、バス155を介してSE140~143にスケジュールされたコマンドを提供する。バス155のいくつかの実施形態は、複数のマスター及び複数のスレーブをサポートする読み取り及び書き込み動作を登録するためのハブとして機能するグラフィックレジスタバスマネージャ(graphics register bus manager、GRBM)として実装される。GPU105及びCPU110,111は、SDF115を介してメモリ160と通信する。
【0011】
CPU110,111は、GPU105上で実行するためのコマンドを生成する1つ以上のアプリケーションを実行する。CPU110,111のいくつかの実施形態は、GPU105に伝送されたアプリケーションプログラミングインターフェース(API)コール(例えば、ドローコール)を使用してGPU上のコマンドの実行を開始して、例えば、フレーム内のオブジェクト(又はオブジェクトの一部)をレンダリングすることによって、コマンドを実行するようにGPU105に命令する。GPU105は、異なる空間分割モードで動作する。GPU105のいくつかの実施形態は、第1及び第2の空間分割モードをサポートする。第1のモードでは、FE回路150は、SE140~143の幾何学的ワークロード等のコマンドをスケジュールする。第2のモードでは、FE回路150は、SE140~143の第1のサブセットのための第1のアプリケーションからコマンドをスケジュールし、FE回路150は、SE140~143の第2のサブセットのための第2のアプリケーションのコマンドをスケジュールする。第1のサブセットは、SE140,141を含み、第2のサブセットは、SE142,143を含むが、いくつかの実施形態では、サブセットへのSE140~143の他のグループ化が使用される。
【0012】
GPU105は、FE回路150,151からSE140~143を介してメモリ160に情報を伝達するための再構成可能な物理的経路をサポートする。物理的経路のサブセットは、FE回路150,151のサブセット及び140~143の対応するサブセットに割り当てられる。例えば、上述した第2のモードでは、第1の物理的経路がFE回路150及びSE140,141に割り当てられる。第2の物理的経路は、FE回路150,151及びSE142,143に割り当てられる。したがって、GPU105は、第1及び第2の経路を使用して、第1及び第2のアプリケーションのために同時にコマンドを実行することができる。GPU105の物理的経路及び構成の割り当ては、アプリケーションを実行しているGPU105及びCPU110,111によって協働的に実行される。いくつかの実施形態では、CPU110,111は、アプリケーションの特性又はアプリケーションの特性の変化に基づいて再構成を要求する。GPU105の再構成を判定した特性の例としては、CPU110,111上で実行しているいくつかのアプリケーション、アプリケーションの複雑性、アプリケーションのグラフィック解像度等が挙げられる。CPU110,111は、以下で説明するように、再構成要求に基づいて物理的経路を変更する再構成要求をGPU105に伝送する。
【0013】
図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に示されていない)に記憶された値に基づいて構成される。
【0014】
空間的に分割された経路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を含む。
【0015】
GPU200は、GPU200上で実行するためのコマンドを生成する1つ以上のアプリケーションを実行しているCPUから受信された要求に基づいて、空間的に分割された経路211~213を構成又は再構成する。本明細書で説明するように、GPU200は、CPUから要求を受信し、要求に含まれる情報に基づいて、空間的に分割された経路211~213のリソースの割り当てを変更する。CPUは、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のリソースは、複数のスレッド間で分割及び共有される。
【0016】
いくつかの実施形態では、GPU200の構成は、レジスタ(明確にするために
図2に示されていない)のセットに示される。図示した実施形態では、スイッチング回路215は、FE回路201~203の各々を経路211~213のうち対応する1つにマッピングする。しかしながら、スイッチング回路215は、FE回路201~203のサブセットを、物理的経路211~213のサブセット又は組み合わせに選択的且つ再構成可能にマッピングする。更に、いくつかの実施形態では、経路211~213は、本明細書で説明するように、複数のSE205~207及びGPU200の対応するリソースを含む。
【0017】
図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」と総称される)を含む。
【0018】
部分300は、FE回路320,321のサブセットをレーン310~317の対応するサブセットに選択的に接続するスイッチング回路330を含む。いくつかの実施形態では、スイッチング回路330は、1つ以上のレジスタ335に記憶された情報に基づいて構成される。また、部分300は、レーン310~317のサブセットをSE325~328のサブセットに選択的に接続するスイッチング回路340を含む。レーン310~317の相互排他的なサブセットは、FE回路320,321のサブセットとSE325~328の対応するサブセットとの間の情報を伝達するために提供され、これは、GPUの部分300によって処理されたコマンド間の分離を、異なる物理的経路に関連付けられた異なる割り当てについて提供する。
【0019】
スイッチング回路340は、GPUによって実行するためのコマンドを生成するアプリケーションを実行しているCPUから受信された要求に応じて構成(又は再構成)される。いくつかの実施形態では、スイッチング回路340は、1つ以上のレジスタ345に記憶された情報に基づいて構成される。レジスタ335,345に記憶された情報は、FE回路320,321のサブセットをSE325~328の対応するサブセットと関連付けるマッピングに基づいて判定される。レーン310~317を含むGPUのリソースは、FE回路320,321のサブセットとSE325~328の対応するサブセットとの各組み合わせに割り当てられる。スイッチング回路330,340は、レジスタ335,345に記憶された情報を使用して、レーン310~317を分割して、FE回路320,321のサブセットとSE325~328の対応するサブセットとの間の物理的経路を形成する。レジスタ335,345は、本明細書で説明するように、CPUからの要求において受信された情報に基づいてプログラムされる。
【0020】
図4は、いくつかの実施形態による、空間分割に利用可能なキャッシュ405を含むGPUの一部(部分)400のブロック図である。部分400は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。キャッシュ405は、(本明細書では「キャッシュ部分410~413」と総称される)部分410,411,412,413を、異なるアプリケーション及びFE回路のサブセットに関連付けられた異なる物理的経路に割り当てるように選択的に分割される。また、GPUの部分400は、SE420,421,422,423(本明細書では「SE420~423」と総称される)のサブセットをキャッシュ部分410~413に選択的に接続するスイッチング回路415を含む。図示した実施形態では、キャッシュ405は、キャッシュ部分410~413が異なる物理的経路の一部であるように分割される。スイッチング回路415は、SE420をキャッシュ部分410に接続し、SE421をキャッシュ部分411に接続し、SE422をキャッシュ部分412に接続し、SE423をキャッシュ部分413に接続する。したがって、SE420~423は、それらの対応するキャッシュ部分410~413への排他的なアクセスを有し、SE420~423によってキャッシュ部分410~413に記憶された情報は、他のSE420~423によって他のキャッシュ部分410~413に記憶された情報から分離される。
【0021】
スイッチング回路415は、GPUによって実行するためのコマンドを生成するアプリケーションを実行しているCPUから受信された要求に応じて構成(又は再構成)される。いくつかの実施形態では、スイッチング回路415は、レジスタ425に記憶された情報に基づいて構成される。レジスタ425に記憶された情報は、SE420~423をメモリ(明確さのために
図4に示されていない)に連結する経路の一部を形成するために、SE420~423を対応するキャッシュ部分410~413と関連付ける。レジスタ425は、GPUによって実行するためのコマンドを生成するアプリケーションを実行しているCPUから受信された要求内の情報に基づいてプログラムされる。キャッシュ部分410~413を含むGPUのリソースは、使用頻度の高い情報を記憶するためにSE420~423のサブセットに割り当てられる。したがって、キャッシュ部分410~413は、SE420~423を介してFE回路からメモリに情報を伝達するために使用される物理的経路の一部である。
【0022】
図5は、いくつかの実施形態による、空間分割に利用可能なメモリチャネルのセットを含むGPUの一部(部分)500のブロック図である。GPUの部分500は、
図1に示すGPU105のいくつかの実施形態を実装するために使用される。メモリチャネル501,502,503,504(本明細書では「メモリチャネル501~504」と総称される)は、部分511,512,513,514(本明細書では「キャッシュ部分511~514」と総称される)に分割するために利用可能なキャッシュ510とメモリ520との間の経路を提供するために使用される。スイッチング回路525は、キャッシュ部分511~514のサブセットをメモリ520に選択的に接続して、本明細書で説明するように、FE回路及びSEを含む物理的経路の一部である物理的経路を形成する。スイッチング回路525は、レジスタ530に記憶された情報を使用して構成される。いくつかの実施形態では、レジスタ530は、GPUによって実行するためのコマンドを生成するアプリケーションを実行しているCPUから受信された要求内の情報に基づいてプログラムされる。図示した実施形態では、キャッシュ部分511~514の各々は、スイッチング回路525によってメモリ520に独立して接続されている。いくつかの実施形態では、キャッシュ部分511~514は、例えば、異なるベースアドレス及びメモリストライドによって示されるメモリ位置に情報を書き込むことによって、メモリ520の異なる部分にマッピングされる。
【0023】
図6は、いくつかの実施形態による、GPU610にコマンドを提供するためのアプリケーションを実行するCPU605を含む処理システム600のブロック図である。処理システム600は、
図1に示す処理システム100のいくつかの実施形態を実装するために使用される。
【0024】
オペレーティングシステム615は、処理システム600を実装するために使用されたハードウェアと、処理システム600のソフトウェアリソースと、を管理するためにCPU105上に実装される。1つ以上のアプリケーション620は、CPU105のハードウェア、ファームウェア又はソフトウェアリソースを使用して、CPU605によって実行される。いくつかの実施形態では、アプリケーション620は、実行のためにGPU610に提供されるコマンド(又はコマンドバッファ)を生成する。例えば、アプリケーション620は、ゲーミングアプリケーションのためにGPU610にグラフィックをレンダリングさせる(又は他の汎用コンピューティングを実行させる)グラフィックコマンドを提供するゲームアプリケーションを含むことができる。本明細書で説明するように、複数のアプリケーション620によって生成されたコマンドは、GPU610上で同時に実行することができる。
【0025】
いくつかの実施形態では、アプリケーション620は、アプリケーションプログラミングインターフェース(API)625を利用して、ユーザモードドライバ630又は他のGPUドライバを呼び出す。ユーザモードドライバ630は、1つ以上のコマンド(又はコマンドバッファ)をGPU610に発行する。アプリケーション620がグラフィックコマンドを発行する場合、グラフィックコマンドはGPU610に命令して、1つ以上のグラフィックプリミティブを表示可能なグラフィック画像にレンダリングする。アプリケーション620からユーザモードドライバ630に発行されたグラフィック命令に基づいて、ユーザモードドライバ630は、グラフィックのレンダリングを実行するためにGPU610の1つ以上の動作を指定する1つ以上のグラフィックコマンドを作成する。いくつかの実施形態では、ユーザモードドライバ630は、CPU605上で実行しているアプリケーション620のうち1つ以上の一部である。例えば、CPU605上で動作しているゲームアプリケーションは、ユーザモードドライバ630を実装することができる。同様に、オペレーティングシステム615のいくつかの実施形態は、CPU605がシステム又はカーネルモードで動作している場合に実行するカーネルモードドライバ635を実装する。
【0026】
GPU610は、CPU605上で実行しているアプリケーション620等の異なるアプリケーションと関連付けられたコマンドを同時に実行するための複数の再構成可能な経路を実装する。図示した実施形態では、GPU610は、フロントエンド(FE)回路640,641,642のセット(本明細書では「FE回路640~642」と総称される)、スイッチング回路645、SE650,651,652のセット(本明細書では「SE650~652」と総称される)、及び、部分660,661,662(本明細書では「キャッシュ部分660~662」と総称される)に分割される共有キャッシュ655を含む。また、GPU610は、多数のレーンを有するコマンドバスと、キャッシュ655をメモリ670と相互接続するメモリチャネルのセットとを含むリソースを提供するが、GPU610のこれらの態様は、明確にするために
図6に示されていない。
図6には3つの独立した経路が示されているが、本明細書で説明するように、GPU610は、より多くの又はより少ない経路をサポートするように再構成可能である。
【0027】
レジスタのセット675は、GPU610内の複数の経路を構成するために使用される情報を記憶する。セット675のいくつかの実施形態は、
図3に示すレジスタ335,345、
図4に示すレジスタ425、及び、
図5に示すレジスタ530を含む。スケジューラ680は、CPU605からコマンド(又はコマンドバッファ)を受信し、対応する経路でSE650~652によって実行するためのコマンド(又はコマンドバッファ)をスケジュールする。また、スケジューラ680は、SE650~652を介してFE回路640~642からメモリ670への経路を構成及び再構成するために使用される情報を用いてレジスタのセット675をプログラムする。
【0028】
CPU605は、GPU610内の経路を構成又は再構成するために使用されるパラメータを生成する。いくつかの実施形態では、スケジューラ680は、アプリケーション620のうち何れかによって提供されたコマンド(又はコマンドバッファ)が対応する経路内で実行を完了したことをCPU605に通知するために、割り込み685(又は他のメッセージ)を提供する。割り込み685の受信又は検出に応じて、CPU605は、GPU610内の経路を再構成するためのパラメータを判定する。パラメータは、アプリケーション620の特性、アプリケーション620の特性の変化、CPU605上で同時に実行しているアプリケーション620の数又はタイプの変化等に基づいて判定される。いくつかの実施形態では、特性は、いくつかのアプリケーション620、アプリケーション620の複雑性、アプリケーション620のグラフィック解像度等を含む。例えば、アプリケーション620のいくつかは、8K解像度等の高解像度を必要とする高複雑性アプリケーションであり、アプリケーション620のいくつかは、4K解像度等の中間解像度を必要とする中間複雑性アプリケーションであり、アプリケーションのうちのいくつかは、1080p解像度等の低解像度を必要とする低複雑性アプリケーションである。高、中間及び低複雑性/解像度のアプリケーションの数及び組み合わせは、経時的に変化する。CPU605は、パラメータ690をGPU610に提供する。
【0029】
パラメータ690の受信に応じて、GPU610は、提供されたパラメータ690に基づいて、経路を再構成する方法を判定する。スケジューラ680のいくつかの実施形態は、提供されたパラメータ690に基づいてレジスタのセット675をプログラムする。次いで、この経路は、レジスタのセット675内の更新された値に基づいて再構成される。例えば、パラメータ690の値が、コマンドが少数の高複雑性アプリケーション620によって生成されていることを示す場合に、スケジューラ680は、各経路について追加のSE650~652を含むより少ない数の経路を実装するためにGPU610を構成するようにレジスタのセット675をプログラムする。別の例では、パラメータ690の値が、多数の低複雑性アプリケーション620によって生成されていることを示す場合に、スケジューラ680は、各経路についてより少ないSE650~652を含むより多くの数の経路を実装するためにGPUを構成するようにレジスタのセット675をプログラムする。また、レジスタのセット675は、コマンドバスのレーン、キャッシュの一部及びメモリチャネル等の経路をサポートする他のリソースの割り当てを変更するために使用される。
【0030】
図7は、いくつかの実施形態による、第1の構成において経路の第1のセットを実装するGPU705を含む処理システム700のブロック図である。処理システム700は、
図1に示す処理システム100及び
図6に示す処理システム600のいくつかの実施形態を実装するために使用される。図示した実施形態では、GPU705は、FE回路710,711,712,713(本明細書では「FE回路710~713」と総称される)、スイッチング回路715、SE720,721,722,723(本明細書では「SE720~723」と総称される)のセット、及び、部分730,731,732,733(本明細書では「キャッシュ部分730~733」と総称される)に分割される共有キャッシュ725を含む。キャッシュ部分730~733は、メモリ735にも記憶される頻繁に使用された情報のコピーを保持する。GPU705は、スケジューラ745によってプログラムされたレジスタのセット740に記憶された情報を使用して構成される。
【0031】
図示した実施形態では、GPU705は、2つの経路750,751をサポートするように空間的に分割されている。経路750,751によって実行されるコマンドは、対応するFE回路710,712によってスケジュールされる。他のFE回路711,713は、破線のボックスによって示すように、経路750,751によって使用されない。レジスタのセット740内の情報は、第1の経路750内のFE回路710をSE720,721に接続し、第2の経路751内のFE回路712をSE722,723に接続するようにスイッチング回路715(並びにGPU705の他のリソース)を構成する。いくつかの実施形態では、レジスタのセット740内の情報も、第1の経路750内のSE720,721と、第2の経路751内のSE722,723との間の接続760,761をそれぞれ確立するために使用される。接続760,761は、例えば、I/O操作の調整、ハンドオフ等のSE間通信をサポートするために使用される。第1の経路750は、キャッシュ部分730,731を含み、第2の経路751は、キャッシュ部分732,733を含む。
【0032】
図8は、いくつかの実施形態による、第2の構成で経路の第2のセットを実装するGPU705を含む処理システム800のブロック図である。処理システム800は、
図1に示す処理システム100及び
図6に示す処理システム600のいくつかの実施形態を実装するために使用される。図示した実施形態では、GPU705は、FE回路710,711,712,713(本明細書では「FE回路710~713」と総称される)、スイッチング回路715、SE720,721,722,723(本明細書では「SE720~723」と総称される)のセット、及び、部分730,731,732,733(本明細書では「キャッシュ部分730~733」と総称される)に分割される共有キャッシュ725を含む。キャッシュ部分730~733は、メモリ735にも記憶される頻繁に使用された情報のコピーを保持する。GPU705は、スケジューラ745によってプログラムされたレジスタのセット740に記憶された情報を使用して構成される。
【0033】
図示した実施形態では、GPU705は、本明細書では「経路801~804」と総称される4つの経路801,802,803,804をサポートするように空間的に分割されている。経路801~804によって実行されるコマンドは、FE回路710~713のうち対応する1つによってスケジュールされる。レジスタのセット740内の情報は、第1の経路801内のFE回路710をSE720に接続し、第2の経路802内のFE回路711をSE721に接続し、第3の経路803内のFE回路712をSE722に接続し、第4の経路804内のFE回路713をSE723に接続するようにスイッチング回路715(並びにGPU705の他のリソース)を構成する。いくつかの実施形態では、レジスタのセット740内の情報も、第1の経路750内のSE720,721と第2の経路751内のSE722,723との間のそれぞれの接続760,761を分解(tear down)するために使用される。例えば、GPU705が以前に
図7に示す第1の構成であった場合、レジスタのセット740内の情報に基づくGPU705の再構成は、接続760,761の除去をもたらす。第1の経路801は、キャッシュ部分730を含み、第2の経路802は、キャッシュ部分731を含み、第3の経路803は、キャッシュ部分732を含み、第4の経路804は、キャッシュ部分733を含む。
【0034】
図7及び
図8は、SE720~723及びキャッシュ725がFE回路710~713の複数のサブセット間で分割される実施形態を示しているが、いくつかの実施形態では、FE回路710~713のサブセットが、FE回路710~713のうち単一の何れかを含むか、FE回路710~713が、単一のエンティティに集約される。例えば、GPU705が単一のスレッド又はアプリケーションを実行している場合、FE回路710~713のうち何れか又は集約されたFE回路710~713を含む単一のエンティティが、単一のスレッド又はアプリケーションを取り扱うために割り当てられる。その場合、FE回路710~713のサブセットは、単一の回路及びSE720~723のリソースを含み、キャッシュ725は、FE回路710~713のサブセットの数に関係なく、GPU705のリソースが完全に利用されるように、単一の回路に割り当てられる。
【0035】
図9は、いくつかの実施形態による、GPUの動的透過再構成(dynamic transparent reconfiguration)を実行する方法900のフロー図である。方法900は、
図1に示す処理システム100及び
図6に示す処理システム600のいくつかの実施形態で実施される。
【0036】
ブロック905で、GPUは、対応するCPU上で実行されているアプリケーションに関連付けられたコマンド又はコマンドバッファを完了することに応じて、割り込み(又は他のメッセージ)を生成する。いくつかの実施形態では、アプリケーションは、GPU上で実行するためのコマンド又はコマンドバッファも生成している他のアプリケーションと同時にCPU上で実行されている。
【0037】
ブロック910で、CPUは、コマンド又はコマンドバッファがGPU上で実行を完了したことを示す割り込みを検出する(又は他のメッセージを受信する)。割り込みの検出に応じて、CPUは、同時に実行されているアプリケーションの組み合わせ(mix)を変更することができる。例えば、CPUは、同時実行のために1つ以上の追加のアプリケーションを追加するか、又は、同時実行から1つ以上のアプリケーションを削除することができる。いくつかの実施形態では、CPU上で同時に実行されるアプリケーションの特性は、GPUがコマンド又はコマンドバッファの実行を完了することに応じて変化する。より高い複雑性又はグラフィック解像度要件を有するアプリケーションは、実行を開始することができ、より低い複雑性又はグラフィック解像度要件を有するアプリケーションは、実行を開始することができるか、又は、同時に実行されるアプリケーションの特性の他の変化が発生する可能性がある。
【0038】
決定ブロック915で、CPUは、GPU内のFE回路からメモリへの経路を変更(修正)するかどうかを、CPUがGPUに提供するコマンド又はコマンドバッファを実行するSEを介して判定する。判定は、CPU上で同時に実行され、GPUのコマンド又はコマンドバッファを生成するアプリケーションの特性又は特性の変化に基づいて行われる。CPUが、変更が必要でないと判定した場合に、方法900はブロック920に移行する。CPUが、変更が必要であると判定した場合に、方法900はブロック925に移行する。
【0039】
ブロック920で、CPUは、GPU内の経路の構成に変化を示さないAPIパケットを送信する。代替的に、CPUは、ブロック920において行動を取ることができず、これにより、GPUが現在の経路構成を維持することももたらす。
【0040】
ブロック925で、CPUは、GPU内の経路の変更(修正)を要求するAPIパケットを送信する。APIパケットのいくつかの実施形態は、CPU上で同時に動作しているアプリケーションを識別する情報と、アプリケーションの特性を示す情報と、を含む。代替的に、APIパケットは、同時アプリケーションに割り当てられる経路の数を要求する情報を含むことができる。何れの場合も、GPUは、APIパケット内の情報に基づいて、経路を再構成する方法を判定する役割を果たす。
【0041】
ブロック930で、GPUは、GPU内の経路を構成するために使用される構成レジスタを変更(修正)する。GPUのいくつかの実施形態は、APIパケット内のCPUから受信された情報に基づいて、構成レジスタ内のエントリの値がどのように変更されるかを判定するスケジューラを含む。次に、スケジューラは、構成レジスタを、判定された値でプログラムする。
【0042】
ブロック935で、GPUは、GPU内のSE間の通信が変更(修正)されるかどうかを判定する。例えば、1つ以上の相互接続が、SE間通信をサポートするために存在する場合に、接続を介して通信するSEが再構成の一部として異なる経路に割り当てられる場合に、接続のうち1つ以上が切断される。別の例では、2つ以上のSEが再構成の一部と同じ経路に割り当てられた場合に、SE間通信をサポートするために接続が確立される。
【0043】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0044】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0045】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0046】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。