JP7490791B2 - マルチテナントグラフィック処理ユニットの動的透過再構成 - Google Patents

マルチテナントグラフィック処理ユニットの動的透過再構成 Download PDF

Info

Publication number
JP7490791B2
JP7490791B2 JP2022548926A JP2022548926A JP7490791B2 JP 7490791 B2 JP7490791 B2 JP 7490791B2 JP 2022548926 A JP2022548926 A JP 2022548926A JP 2022548926 A JP2022548926 A JP 2022548926A JP 7490791 B2 JP7490791 B2 JP 7490791B2
Authority
JP
Japan
Prior art keywords
subset
application
physical paths
processing unit
gpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022548926A
Other languages
English (en)
Other versions
JP2023514998A (ja
JPWO2021173959A5 (ja
Inventor
エルドン マクラリー レックス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023514998A publication Critical patent/JP2023514998A/ja
Publication of JPWO2021173959A5 publication Critical patent/JPWO2021173959A5/ja
Application granted granted Critical
Publication of JP7490791B2 publication Critical patent/JP7490791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Description

グラフィック処理ユニット(graphics processing unit、GPU)における処理は、典型的には、中央処理ユニット(central processing unit、CPU)によって処理されるアプリケーションプログラミングインターフェース(application programming interface、API)コール(例えば、ドローコール)によって開始される。ドローコールは、CPUによって生成され、GPUに伝送されて、フレーム内のオブジェクト(又はオブジェクトの一部)をレンダリングするようにGPUに命令するコマンドである。ドローコールは、オブジェクト又はその一部分をレンダリングするようにGPUによって使用されるテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。ドローコールを受信することに応じて、GPUは、ディスプレイに提供される画素の値を生成するようにオブジェクトをレンダリングし、ディスプレイは、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
ゲーム及び他のグラフィックを多用するアプリケーションは、ユーザ定義の再構成可能な仮想パイプラインとしてグラフィックパイプラインを実装するために使用されるシェーダエンジン及び固定機能ハードウェアユニットを含む、GPUの物理的リソースを貪欲に消費するものである。例えば、三次元(3D)グラフィックを処理するための従来のグラフィックパイプラインは、プログラマブルシェーダによってサポートされた一連の固定機能ハードウェアブロック配置で形成される。これらの配置は、通常、Microsoft DX 11/12、Khronos Group、OpenGL、Vulkan等によって定義されたAPI等のグラフィックアプリケーションプログラミングインターフェース(API)を介して構成される。ゲームは、典型的には、ゲームのグラフィック処理要件を取り扱うように最適化されたコンソール(Xbox及びPlayStation 4等)及びパーソナルコンピュータ(personal computer、PC)で再生される。しかしながら、コンソール及びゲームPCは高価であり、いくつかのゲームは、何れかのゲーム形式のみで利用可能である。クラウドゲームは、レンダリングされたグラフィックをユーザにストリームするクラウドサーバ内のGPUにグラフィック処理を移動させ、それによって、ユーザのハードウェア要件を低減し、ユーザが複数の形式でゲームを再生することを可能にすることによって、これらの欠点を克服する。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、マルチテナンシーグラフィック処理ユニット(GPU)内の空間分割を実装する処理システムのブロック図である。 いくつかの実施形態による、ハードウェア利用を改善するために、フレキシブルな空間分割を使用するGPUのブロック図である。 いくつかの実施形態による、空間分割用に構成されたコマンドバスを含むGPUの一部のブロック図である。 いくつかの実施形態による、空間分割に利用可能なキャッシュを含むGPUの一部のブロック図である。 いくつかの実施形態による、空間分割に利用可能なメモリチャネルのセットを含むGPUの一部のブロック図である。 いくつかの実施形態による、GPUにコマンドを提供するためのアプリケーションを実行する中央処理ユニット(CPU)を含む処理システムのブロック図である。 いくつかの実施形態による、第1の構成で経路の第1のセットを実装するGPUを含む処理システムのブロック図である。 いくつかの実施形態による、第2の構成で経路の第2のセットを実装するGPUを含む処理システムのブロック図である。 いくつかの実施形態によるGPUの動的透過再構成を実行する方法のフロー図である。
クラウドサーバ内のグラフィック処理ユニット(GPU)は、フェッチングコマンド、ハンドリングジッタ、ジオメトリ操作の実行、及び、レイトレーシングの実行等のタスクを取り扱うためのフロントエンド(front end、FE)ハードウェアを含む。FEハードウェアは、典型的には、フェッチされたコマンドを保持するための先入れ先出し(first-in-first-out、FIFO)バッファ等のコマンドフェッチャーと、キューと、GPU内のシェーダエンジン上での実行のためにコマンドバッファからコマンドをスケジュールするスケジューラと、を含む。シェーダエンジンは、1つ以上のプロセッサ及び1つ以上の算術論理ユニット(arithmetic logic unit、ALU)を使用して実装され、FEハードウェアによって提供されたコマンドを実行する。シェーダ処理された画素の値等のシェーダによって生成された結果は、対応するメモリにも記憶される頻繁に使用された情報を記憶する1つ以上のキャッシュに出力される。したがって、GPUは、これらのエンティティ間の結果を保持するためのメモリ又はレジスタ、キャッシュ、ポート、及び、インターフェースを含む。情報は、FEハードウェアからシェーダエンジンにコマンドを搬送するためのコマンドバスと、シェーダエンジンからの出力を記憶するためのキャッシュと、キャッシュされた情報をメモリに伝達するためのメモリチャネルと、を含む経路を介してFEハードウェアからメモリに流れる。したがって、GPUのリソースは、コマンドバスを介してシェーダエンジンにコマンド及びデータを伝達するために使用された帯域幅と、シェーダエンジンによって生成された結果を記憶するキャッシュと、キャッシュとメモリとの間の情報を伝達するメモリチャネルと、を含む。
クラウドサーバ内のGPUのセットは、異なるアプリケーションの動的に変化する混合を実行する。例えば、クラウドサーバは、第1の時間間隔中に4つの容易なゲーム(比較的低いリソース消費を伴う)、第2の時間間隔中に2つの中等度のゲーム(中間のリソース消費を伴う)、及び、第3の時間間隔中に単一の複雑なゲーム(比較的高いリソース消費を伴う)を実行することができる。GPUのセットは、コマンドが中央処理ユニット(CPU)によってアプリケーションのために生成され、次いで、実行のためにGPUのセットに提供されるため、GPUのセット上で実行するためのコマンドを提供するアプリケーションの要件を判定することができない。
図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パケットに含まれる情報に基づいてプログラムされる。
図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を含む。システム制御信号の例は、熱及び電力管理、試験、セキュリティ等をサポートするために使用された制御信号である。
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に示されていない。
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と通信する。
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の他のグループ化が使用される。
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に伝送する。
図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に示されていない)に記憶された値に基づいて構成される。
空間的に分割された経路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を含む。
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のリソースは、複数のスレッド間で分割及び共有される。
いくつかの実施形態では、GPU200の構成は、レジスタ(明確にするために図2に示されていない)のセットに示される。図示した実施形態では、スイッチング回路215は、FE回路201~203の各々を経路211~213のうち対応する1つにマッピングする。しかしながら、スイッチング回路215は、FE回路201~203のサブセットを、物理的経路211~213のサブセット又は組み合わせに選択的且つ再構成可能にマッピングする。更に、いくつかの実施形態では、経路211~213は、本明細書で説明するように、複数のSE205~207及びGPU200の対応するリソースを含む。
図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」と総称される)を含む。
部分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によって処理されたコマンド間の分離を、異なる物理的経路に関連付けられた異なる割り当てについて提供する。
スイッチング回路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からの要求において受信された情報に基づいてプログラムされる。
図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に記憶された情報から分離される。
スイッチング回路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回路からメモリに情報を伝達するために使用される物理的経路の一部である。
図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の異なる部分にマッピングされる。
図6は、いくつかの実施形態による、GPU610にコマンドを提供するためのアプリケーションを実行するCPU605を含む処理システム600のブロック図である。処理システム600は、図1に示す処理システム100のいくつかの実施形態を実装するために使用される。
オペレーティングシステム615は、処理システム600を実装するために使用されたハードウェアと、処理システム600のソフトウェアリソースと、を管理するためにCPU105上に実装される。1つ以上のアプリケーション620は、CPU105のハードウェア、ファームウェア又はソフトウェアリソースを使用して、CPU605によって実行される。いくつかの実施形態では、アプリケーション620は、実行のためにGPU610に提供されるコマンド(又はコマンドバッファ)を生成する。例えば、アプリケーション620は、ゲーミングアプリケーションのためにGPU610にグラフィックをレンダリングさせる(又は他の汎用コンピューティングを実行させる)グラフィックコマンドを提供するゲームアプリケーションを含むことができる。本明細書で説明するように、複数のアプリケーション620によって生成されたコマンドは、GPU610上で同時に実行することができる。
いくつかの実施形態では、アプリケーション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を実装する。
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は、より多くの又はより少ない経路をサポートするように再構成可能である。
レジスタのセット675は、GPU610内の複数の経路を構成するために使用される情報を記憶する。セット675のいくつかの実施形態は、図3に示すレジスタ335,345、図4に示すレジスタ425、及び、図5に示すレジスタ530を含む。スケジューラ680は、CPU605からコマンド(又はコマンドバッファ)を受信し、対応する経路でSE650~652によって実行するためのコマンド(又はコマンドバッファ)をスケジュールする。また、スケジューラ680は、SE650~652を介してFE回路640~642からメモリ670への経路を構成及び再構成するために使用される情報を用いてレジスタのセット675をプログラムする。
CPU605は、GPU610内の経路を構成又は再構成するために使用されるパラメータを生成する。いくつかの実施形態では、スケジューラ680は、アプリケーション620のうち何れかによって提供されたコマンド(又はコマンドバッファ)が対応する経路内で実行を完了したことをCPU605に通知するために、割り込み685(又は他のメッセージ)を提供する。割り込み685の受信又は検出に応じて、CPU605は、GPU610内の経路を再構成するためのパラメータを判定する。パラメータは、アプリケーション620の特性、アプリケーション620の特性の変化、CPU605上で同時に実行しているアプリケーション620の数又はタイプの変化等に基づいて判定される。いくつかの実施形態では、特性は、いくつかのアプリケーション620、アプリケーション620の複雑性、アプリケーション620のグラフィック解像度等を含む。例えば、アプリケーション620のいくつかは、8K解像度等の高解像度を必要とする高複雑性アプリケーションであり、アプリケーション620のいくつかは、4K解像度等の中間解像度を必要とする中間複雑性アプリケーションであり、アプリケーションのうちのいくつかは、1080p解像度等の低解像度を必要とする低複雑性アプリケーションである。高、中間及び低複雑性/解像度のアプリケーションの数及び組み合わせは、経時的に変化する。CPU605は、パラメータ690をGPU610に提供する。
パラメータ690の受信に応じて、GPU610は、提供されたパラメータ690に基づいて、経路を再構成する方法を判定する。スケジューラ680のいくつかの実施形態は、提供されたパラメータ690に基づいてレジスタのセット675をプログラムする。次いで、この経路は、レジスタのセット675内の更新された値に基づいて再構成される。例えば、パラメータ690の値が、コマンドが少数の高複雑性アプリケーション620によって生成されていることを示す場合に、スケジューラ680は、各経路について追加のSE650~652を含むより少ない数の経路を実装するためにGPU610を構成するようにレジスタのセット675をプログラムする。別の例では、パラメータ690の値が、多数の低複雑性アプリケーション620によって生成されていることを示す場合に、スケジューラ680は、各経路についてより少ないSE650~652を含むより多くの数の経路を実装するためにGPUを構成するようにレジスタのセット675をプログラムする。また、レジスタのセット675は、コマンドバスのレーン、キャッシュの一部及びメモリチャネル等の経路をサポートする他のリソースの割り当てを変更するために使用される。
図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に記憶された情報を使用して構成される。
図示した実施形態では、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を含む。
図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に記憶された情報を使用して構成される。
図示した実施形態では、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を含む。
図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のリソースが完全に利用されるように、単一の回路に割り当てられる。
図9は、いくつかの実施形態による、GPUの動的透過再構成(dynamic transparent reconfiguration)を実行する方法900のフロー図である。方法900は、図1に示す処理システム100及び図6に示す処理システム600のいくつかの実施形態で実施される。
ブロック905で、GPUは、対応するCPU上で実行されているアプリケーションに関連付けられたコマンド又はコマンドバッファを完了することに応じて、割り込み(又は他のメッセージ)を生成する。いくつかの実施形態では、アプリケーションは、GPU上で実行するためのコマンド又はコマンドバッファも生成している他のアプリケーションと同時にCPU上で実行されている。
ブロック910で、CPUは、コマンド又はコマンドバッファがGPU上で実行を完了したことを示す割り込みを検出する(又は他のメッセージを受信する)。割り込みの検出に応じて、CPUは、同時に実行されているアプリケーションの組み合わせ(mix)を変更することができる。例えば、CPUは、同時実行のために1つ以上の追加のアプリケーションを追加するか、又は、同時実行から1つ以上のアプリケーションを削除することができる。いくつかの実施形態では、CPU上で同時に実行されるアプリケーションの特性は、GPUがコマンド又はコマンドバッファの実行を完了することに応じて変化する。より高い複雑性又はグラフィック解像度要件を有するアプリケーションは、実行を開始することができ、より低い複雑性又はグラフィック解像度要件を有するアプリケーションは、実行を開始することができるか、又は、同時に実行されるアプリケーションの特性の他の変化が発生する可能性がある。
決定ブロック915で、CPUは、GPU内のFE回路からメモリへの経路を変更(修正)するかどうかを、CPUがGPUに提供するコマンド又はコマンドバッファを実行するSEを介して判定する。判定は、CPU上で同時に実行され、GPUのコマンド又はコマンドバッファを生成するアプリケーションの特性又は特性の変化に基づいて行われる。CPUが、変更が必要でないと判定した場合に、方法900はブロック920に移行する。CPUが、変更が必要であると判定した場合に、方法900はブロック925に移行する。
ブロック920で、CPUは、GPU内の経路の構成に変化を示さないAPIパケットを送信する。代替的に、CPUは、ブロック920において行動を取ることができず、これにより、GPUが現在の経路構成を維持することももたらす。
ブロック925で、CPUは、GPU内の経路の変更(修正)を要求するAPIパケットを送信する。APIパケットのいくつかの実施形態は、CPU上で同時に動作しているアプリケーションを識別する情報と、アプリケーションの特性を示す情報と、を含む。代替的に、APIパケットは、同時アプリケーションに割り当てられる経路の数を要求する情報を含むことができる。何れの場合も、GPUは、APIパケット内の情報に基づいて、経路を再構成する方法を判定する役割を果たす。
ブロック930で、GPUは、GPU内の経路を構成するために使用される構成レジスタを変更(修正)する。GPUのいくつかの実施形態は、APIパケット内のCPUから受信された情報に基づいて、構成レジスタ内のエントリの値がどのように変更されるかを判定するスケジューラを含む。次に、スケジューラは、構成レジスタを、判定された値でプログラムする。
ブロック935で、GPUは、GPU内のSE間の通信が変更(修正)されるかどうかを判定する。例えば、1つ以上の相互接続が、SE間通信をサポートするために存在する場合に、接続を介して通信するSEが再構成の一部として異なる経路に割り当てられる場合に、接続のうち1つ以上が切断される。別の例では、2つ以上のSEが再構成の一部と同じ経路に割り当てられた場合に、SE間通信をサポートするために接続が確立される。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (23)

  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の処理ユニット。
JP2022548926A 2020-02-28 2021-02-26 マルチテナントグラフィック処理ユニットの動的透過再構成 Active JP7490791B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/804,345 2020-02-28
US16/804,345 US11403729B2 (en) 2020-02-28 2020-02-28 Dynamic transparent reconfiguration of a multi-tenant graphics processing unit
PCT/US2021/019855 WO2021173959A1 (en) 2020-02-28 2021-02-26 Dynamic transparent reconfiguration of a multi-tenant graphics processing unit

Publications (3)

Publication Number Publication Date
JP2023514998A JP2023514998A (ja) 2023-04-12
JPWO2021173959A5 JPWO2021173959A5 (ja) 2024-02-16
JP7490791B2 true JP7490791B2 (ja) 2024-05-27

Family

ID=77463845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022548926A Active JP7490791B2 (ja) 2020-02-28 2021-02-26 マルチテナントグラフィック処理ユニットの動的透過再構成

Country Status (6)

Country Link
US (1) US11403729B2 (ja)
EP (1) EP4111409A4 (ja)
JP (1) JP7490791B2 (ja)
KR (1) KR20220148229A (ja)
CN (1) CN115335851B (ja)
WO (1) WO2021173959A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240184623A1 (en) * 2022-12-01 2024-06-06 Ati Technologies Ulc Job limit enforcement for improved multitenant quality of service
US20240193844A1 (en) * 2022-12-08 2024-06-13 Advanced Micro Devices, Inc. Configurable multiple-die graphics processing unit

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080074433A1 (en) 2006-09-21 2008-03-27 Guofang Jiao Graphics Processors With Parallel Scheduling and Execution of Threads
JP2009543195A (ja) 2006-06-28 2009-12-03 マイクロソフト コーポレーション グラフィックスパイプラインステートの高速再構成
US20100123717A1 (en) 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US20110080415A1 (en) 2009-10-06 2011-04-07 Duluk Jr Jerome F Inter-shader attribute buffer optimization
JP2013504131A (ja) 2009-09-03 2013-02-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 非同期タスクディスパッチを可能にする処理ユニット
US20180114290A1 (en) 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884090A (en) * 1997-07-17 1999-03-16 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
US9142057B2 (en) 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US20130155077A1 (en) 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Policies for Shader Resource Allocation in a Shader Core
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
CN105830026B (zh) * 2013-11-27 2020-09-15 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009543195A (ja) 2006-06-28 2009-12-03 マイクロソフト コーポレーション グラフィックスパイプラインステートの高速再構成
US20080074433A1 (en) 2006-09-21 2008-03-27 Guofang Jiao Graphics Processors With Parallel Scheduling and Execution of Threads
US20100123717A1 (en) 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
JP2013504131A (ja) 2009-09-03 2013-02-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 非同期タスクディスパッチを可能にする処理ユニット
US20110080415A1 (en) 2009-10-06 2011-04-07 Duluk Jr Jerome F Inter-shader attribute buffer optimization
US20180114290A1 (en) 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline

Also Published As

Publication number Publication date
KR20220148229A (ko) 2022-11-04
US20210272229A1 (en) 2021-09-02
US11403729B2 (en) 2022-08-02
JP2023514998A (ja) 2023-04-12
EP4111409A4 (en) 2023-12-06
CN115335851B (zh) 2024-04-02
EP4111409A1 (en) 2023-01-04
WO2021173959A1 (en) 2021-09-02
CN115335851A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
US10664942B2 (en) Reconfigurable virtual graphics and compute processor pipeline
JP5303787B2 (ja) 単一パステセレーション
US8102391B2 (en) Hybrid rendering of image data utilizing streaming geometry frontend interconnected to physical rendering backend through dynamic accelerated data structure generator
JP5170782B2 (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
EP1921584B1 (en) Graphics processing apparatus, graphics library module, and graphics processing method
US9911212B2 (en) Resetting of dynamically grown accelerated data structure
US20110063285A1 (en) Rendering of stereoscopic images with multithreaded rendering software pipeline
US20100239186A1 (en) Accelerated Data Structure Positioning Based Upon View Orientation
JP7490791B2 (ja) マルチテナントグラフィック処理ユニットの動的透過再構成
EP1921583A2 (en) Graphics processing apparatus
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
WO2024123775A1 (en) Configurable multiple-die graphics processing unit
US20220237851A1 (en) Spatial partitioning in a multi-tenancy graphics processing unit
US12026380B2 (en) Dynamic memory reconfiguration
JP2021507337A (ja) アクセラレーテッド処理デバイスの帯域幅を増加させるための並列データ転送
US20210089423A1 (en) Flexible multi-user graphics architecture
US12051144B2 (en) Fully utilized hardware in a multi-tenancy graphics processing unit

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240207

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20240207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240415

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240515

R150 Certificate of patent or registration of utility model

Ref document number: 7490791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150