JP7123235B2 - 仮想化用のgpuタスクコンテナとしてのvmid - Google Patents

仮想化用のgpuタスクコンテナとしてのvmid Download PDF

Info

Publication number
JP7123235B2
JP7123235B2 JP2021505214A JP2021505214A JP7123235B2 JP 7123235 B2 JP7123235 B2 JP 7123235B2 JP 2021505214 A JP2021505214 A JP 2021505214A JP 2021505214 A JP2021505214 A JP 2021505214A JP 7123235 B2 JP7123235 B2 JP 7123235B2
Authority
JP
Japan
Prior art keywords
task
processor
identity
container
tasks
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
JP2021505214A
Other languages
English (en)
Other versions
JP2021533455A (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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of JP2021533455A publication Critical patent/JP2021533455A/ja
Application granted granted Critical
Publication of JP7123235B2 publication Critical patent/JP7123235B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

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 Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

(関連技術の説明)
一般的な計算にグラフィックスプロセッシングユニット(GPU)を使用する要望は、現代のGPUの単位電力当たりの性能及びコストのために、より一般的になっている。GPUの計算能力は、対応する中央演算処理装置(CPU)プラットフォームの計算能力を超える速度で成長してきた。この成長は、モバイルコンピューティング市場(例えば、ノートパソコン、モバイルスマートフォン、タブレット)及びそれをサポートするサーバ/エンタープライズシステムの急激な拡大と相まって、所望のユーザエクスペリエンスと整合性のある品質を達成するために使用されてきた。結果として、データ並列コンテンツを伴うワークロードを実行するためにCPUとGPUを組み合わせて使用することが、ボリュームテクノロジーになりつつある。
GPUは、大量のスレッドレベルの並列処理を利用して、高い命令スループットを達成する。この高いスループットは、GPUを、多くの異なるパラダイムで不可欠な計算リソースにするのに役立ってきた。多くのタイプのコンピューティング環境では、複数のアプリケーションが単一の処理ユニットを共有する。1つ以上のオペレーティングシステムから複数のアプリケーションを同時に実行するには、ハードウェア及びソフトウェアに様々なサポートメカニズムが必要になる。重要なメカニズムの1つは、マシン上で実行されている各アプリケーションのアドレス空間を管理及び保護する仮想メモリである。しかしながら、現代のGPUは、複数のアプリケーションの並列実行のサポートに欠けている。その結果、GPUは、複数の並行アプリケーションを実行する場合に、高い性能オーバヘッドに悩まされる。
添付の図面と共に以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 コンピューティングシステムの別の実施形態のブロック図である。 GPUの仮想環境の一実施形態のブロック図である。 GPUの一実施形態のブロック図である。 計算パイプラインを備えたプロセッサの一実施形態のブロック図である。 仮想メモリ識別子(VMID)コンテナ内のタスクの抽象化の一実施形態のブロック図である。 コンピューティングシステムの一実施形態のブロック図である。 コンテナIDをOS又はVFのIDにマッピングするためのマッピングテーブルの一実施形態を示す図である。 コンテナIDを使用してタスクを抽象化するの方法の一実施形態を示す一般化されたフロー図である。 スケジューラがタスク用のコンテナIDを生成する方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細無しに様々な実施形態が実施され得ることを認識すべきである。場合によっては、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺通りに描かれていないことが理解されよう。例えば、一部の要素の寸法は、他の要素と比較して誇張される場合がある。
仮想メモリ識別子(VMID)コンテナ内のタスクを抽象化するための様々なシステム、装置及び方法が、本明細書で開示される。メモリに接続されたプロセッサは、第1のタスクを含む複数の並行タスクを実行する。第1の操作に対応する第1のタスクの1つ以上の命令を検出することに応じて、プロセッサは、第1のタスクを一意に識別するために使用される第1の識別子(ID)を取得し、第1のIDは、第1のタスクに対して透過的である。次に、プロセッサは、第1のIDを第2のID及び/又は第3のIDにマッピングする。プロセッサは、第2のID及び/又は第3のIDを使用して、少なくとも1つの第1のデータ構造に対する第1のタスクを識別することによって、第1の操作を完了する。一実施形態では、第1の操作は、メモリアクセス操作であり、第1のデータ構造は、ページテーブルのセットである。また、一実施形態では、第2のIDは、第1のタスクの第1のアプリケーションを識別し、第3のIDは、第1のタスクの第1のオペレーティングシステム(OS)を識別する。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェースコントローラ(NIC)135と、メモリデバイス(複数可)140と、を含む。他の実施形態では、コンピューティングシステム100は他の構成要素を含み、及び/又は、コンピューティングシステム100は異なるように構成される。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施形態では、プロセッサ105Nは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。
メモリコントローラ(複数可)130は、I/Oインタフェース120に接続されたプロセッサ105A~105N及びI/Oデバイス(図示省略)によってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に接続されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140内のメモリのタイプには、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等が含まれる。
I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、PCI(peripheral component interconnect)バス、PCI-X(PCI-Extended)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々な周辺デバイス(図示省略)がI/Oインタフェース120に接続されている。このような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインタフェースカード等を含む(ただし、これらに限定されない)。ネットワークインタフェースコントローラ(NIC)135は、ネットワーク145を介してネットワークメッセージを送受信する。
ネットワーク145は、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換ネットワーク、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、若しくは、他のタイプのネットワークを含む、任意のタイプのネットワーク又はネットワークの組み合わせを表す。LANの例には、イーサネット(登録商標)ネットワーク、FDDI(Fiber Distributed Data Interface)ネットワーク、トークンリングネットワーク等が含まれる。様々な実施形態では、ネットワーク145は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/若しくはソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/若しくはTCP/IPソフトウェア、ルータ、リピータ、スイッチ、グリッド、並びに/又は、他の構成要素を含む。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、任意の様々なタイプのコンピューティングシステム若しくはコンピューティングデバイスである。コンピューティングシステム100の構成要素の数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、図1に示す数よりも多い又は少ない構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、図1に示されていない他の構成要素を含むことに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示されている以外の方法で構成される。
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。一実施形態では、システム200は、GPU205と、システムメモリ225と、ローカルメモリ230と、を含む。また、システム200は、図を曖昧にするのを回避するために図示されていない他の構成要素も含む。GPU205は、少なくとも、コマンドプロセッサ235と、スケジューリングユニット250と、計算ユニット255A~255Nと、メモリコントローラ220と、グローバルデータシェア270と、レベル1(L1)キャッシュ265と、レベル2(L2)キャッシュ260と、を含む。図2には示されていないが、一実施形態では、計算ユニット255A~255Nは、各計算ユニット255A~255N内に1つ以上のキャッシュ及び/又はローカルメモリを含む。他の実施形態では、GPU205は、他の構成要素を含み、図示した構成要素のうち1つ以上を省略し、図2に1つのインスタンスしか示されなくても構成要素の複数のインスタンスを有し、及び/又は、他の適切な方法で構成される。
様々な実施形態では、コンピューティングシステム200は、様々なタイプのソフトウェアアプリケーションの何れかを実行する。一実施形態では、所定のソフトウェアアプリケーションの実行の一部として、コンピューティングシステム200のホストCPU(図示省略)が、GPU205上で実行されるタスクを起動する。コマンドプロセッサ235は、ホストCPUからタスクを受信し、タスクをスケジューリングユニット250に発行して、計算ユニット255A~255N上でスケジューリングする。一実施形態では、スケジューリングユニット250が所定のタスクを計算ユニット255A~255N上でスケジューリングする場合、スケジューリングユニット250は、オペレーティングシステム(OS)又は仮想関数(VF)のIDを所定のタスクの仮想メモリ(VM)IDと共にハッシュすることによって、所定のタスクに対して一意のコンテナ識別子(ID)を生成する。計算ユニット255A~255N上で実行されるタスク内のスレッドは、コンピューティングシステム200の内部及び外部の様々なデータ構造にアクセスする。スレッドがコンピューティングシステム200の外部のデータ構造にアクセスすると、コンテナIDは、VFID及び/又はVMIDにマッピングされ、VFID及び/又はVMIDは、外部データ構造に対するスレッドを識別するために使用される。
図3を参照すると、GPUの仮想環境300の一実施形態のブロック図が示されている。GPUは、複数の並行タスクをサポート可能な超並列マシンである。GPUは、様々なアプリケーションで図形処理及び/又は計算のワークロードを処理するために用いられる。図形処理のワークロードの場合、GPUは、固定機能ハードウェア及びプログラム可能シェーダを含む、ディープ混合パイプライン(deep, mixed pipeline)を含む。GPUの典型的なワークロードソース階層は、オペレーティングシステム(OS)及び仮想関数(VF)310A~310Bと、アプリケーション308A~308Nと、キュー(複数可)306Aと、描画呼び出しと、ディスパッチのレベルと、を含む。各キュー306Aは、任意の数の図形処理タスク(複数可)302A及び/又は計算タスク(複数可)304Aを含む。マルチタスクをサポートする場合、GPU上で同時にアクティブな様々なソースからの複数のワークロードが潜在的に存在する。
GPU上で複数の異なるタイプの並行アプリケーションを実行する場合、異なるワークロードの各々は、ワークロードを識別及び管理して様々な機能を実行するために、タグ付けされる。例えば、異なるワークロードの各々は、同期及びリセットのために、メモリ管理技術及び構造を実装するために、割り込みを管理するために、及び、他の機能を実装するために、タグ付けされる。一実施形態では、異なるワークロードの各々は、コンテナIDを使用して識別され、他のワークロードと区別される。一実施形態では、コンテナIDは、OS又はVFのID及びVMIDのハッシュから生成される。これにより、GPUは、異なるゲストOSからの複数の並行キュー、アプリケーション、描画及びディスパッチをサポートすることができる。他の実施形態では、コンテナIDは、他のタイプの関数及び/又は他のタイプの値から生成される。
本明細書に提示する説明のいくつかはGPUの特徴を識別しているが、同じ技術が、並列実行機能を有する他のタイプのプロセッサ(例えば、マルチコアCPU、FPGA、ASIC、DSP)にも適用されることを理解されたい。したがって、本開示を通して、ある技術がGPUによって実行されるかGPU上に実装されると説明されている場合、当該技術は、他のタイプのプロセッサ上で実行可能であることを理解されたい。
図4を参照すると、GPU400の一実施形態のブロック図が示されている。一実施形態では、GPU400は、メモリサブシステム420に接続されたグラフィックスパイプライン410を含む。一実施形態では、グラフィックスパイプライン410は、各パイプラインステージにおけるマルチタスクサポートを含む。フロントエンド425は、グラフィックスパイプライン410に転送された入力タスクを記憶するための様々なキューを含む。ジオメトリエンジン430は、グラフィックスパイプライン410で実行されている様々なタスクのために描画呼び出しコマンドを使用してプリミティブのレンダリングを実行する。シェーダエンジン435は、図形をレンダリングする際に関与する様々なシェーダステージを実装する。一実施形態では、ピクセルエンジン440は、出力情報を計算するために呼び出され、レンダリングされる画像が画面空間内でビン又はタイルのグリッドに分割された後、結果が出力表面に書き込まれるようにする。いくつかの実施形態では、ピクセルエンジン440は、ラスタライズされたオブジェクト全体で補間される頂点属性の値を計算する。他の実施形態では、グラフィックスパイプライン410は、他のステージ若しくはエンジンを含み、及び/又は、個々のエンジンは他のタイプの操作を実行する。
通常、GPUは、各ステージの順序及び依存性の要件を処理するために、マルチタスクに対するパイプラインサポートを含む。これは、個別のタスク(例えば、ジオメトリエンジン430上のタスク450A、シェーダエンジン435上のタスク450B、ピクセルエンジン440上のタスク450C)を実行するグラフィックスパイプライン410の各ステージを指す。一実施形態では、グラフィックスパイプライン410は、独立した並行図形処理タスクをサポートするように構成されている。本実施形態では、ソース階層の詳細は、GPU内の各ステージから隠されている。グラフィックスパイプラインの独立した並行図形処理タスクのサポートは、各タスクを、ステージで実行中の他の並行タスクから区別するために使用されるコンテナIDを有することによってサポートされる。
図5を参照すると、計算パイプライン505を有するプロセッサ500の一実施形態のブロック図が示されている。一実施形態では、プロセッサ500は、メモリサブシステム510に接続された計算パイプライン505を少なくとも含む。一実施形態では、プロセッサ500はGPUである。他の実施形態では、プロセッサ500は、様々な他のタイプの処理ユニット(例えば、FPGA、ASIC、DSP、マルチコアCPU)の何れかである。
計算パイプライン505は、シェーダエンジン520に接続されたフロントエンド515を含む。計算パイプライン505は、タスク525A~525Dの並行実行を可能にするために垂直分割及び/又は水平分割を含む。例えば、タスク525Aは、一実施形態ではシェーダエンジン520上で起動され、後続のクロックサイクルで他のタスクが起動される。別の実施形態では、タスク525B~525Dは、シェーダエンジン520で同時に起動及び実行される。シェーダエンジン520は、複数のタスクの並行実行を可能にするために、本実施形態では垂直に分割される。垂直分割とは、シェーダエンジン520の処理ユニット及び処理ロジックが、複数のタスクの状態を維持し、及び/又は、同じクロックサイクルで複数のタスクを処理する能力を指す。一実施形態では、個別のタスクは、コンテナIDを使用して識別され、異なるタスクの各々は、一意のコンテナIDを有する。
一実施形態では、計算パイプライン505の各ステージは、垂直に分割される。例えば、フロントエンド515は、複数の異なるタスクを同時に起動及び実行可能にするように分割されたキューを含む。また、シェーダエンジン520は、複数の計算タスクを同時に実行可能にする垂直パーティションを含む。フロントエンド515及びシェーダエンジン520は、多数のソースからワークロードを同時に実行することができる。一実施形態では、計算パイプライン505の各ステージ又はパーティションは、これらの個々のタスクを実行する場合に、タスクのソース階層を認識していない。本実施形態では、ソース階層の詳細は、プロセッサ500の境界をタスクが横断するときにのみ利用される。
図6を参照すると、仮想メモリ識別子(VMID)コンテナ内のタスクの抽象化の一実施形態のブロック図が示されている。一実施形態では、VMID602は、通常、プロセッサで実行されているアプリケーションを区別するためのメモリ管理操作に使用される。しかしながら、別の実施形態では、タスクを実行するソース階層を抽象化するために、タスクコンテナID604が、VMID602の代わりに使用される。様々な実施形態では、プロセッサは、実行中にタスクのソースを識別する必要がない。むしろ、プロセッサは、外部構成要素又は外部データ構造と相互作用する場合にソースを識別するだけでよい。一実施形態では、コンテナID604は、メモリデータ構造をバンドルするために使用される。本実施形態では、プロセッサは、あるコンテナIDが別のコンテナIDのメモリ内容にアクセスできないようにすることによって、メモリ保護を提供する。
一実施形態では、コンテナID604は、ハードウェアメカニズムによって管理され、ハードウェア実行レベルより上のソフトウェア階層に対して透過的である。ソフトウェア階層の残りの部分は、ソース追跡の既存のメカニズムを引き続き使用する。これらの既存のメカニズムは、OS ID、プロセスID、キューID等を含む。一実施形態では、タスクタグ付け及びソース階層は、プロセッサから外部構成要素への境界においてのみ関連する。例えば、パイプ終了(end-of pipe)及びリセット操作等の同期タスクは、タスクのソースを参照する。また、プロセッサの外部のメモリトランザクションは、タスクのソースを使用して、正しいメモリ管理データ構造(例えば、ページテーブル)にマッピングする。さらに、割り込み処理はソース毎に追跡され、現在実行中のタスクのうち何れのタスクに割り込むのかを識別する。また、PCI-e(peripheral component interconnect express)バスデバイス関数解決(bus-device-function resolution)がソース毎に追跡され、仮想関数又は物理関数のソースを決定する。タスクのソースを追跡するためにプロセッサの境界で実行される他のタイプの操作も可能であり、考えられる。
一実施形態では、マッピングテーブル608は、プロセッサと外部構成要素との間の各境界で維持される。マッピングテーブルは、タスクのコンテナID604を、オペレーティングシステム(OS)ID若しくは仮想関数(VF)ID606、プロセスID、又は、これら以外にマッピングする。コンテナID604を使用してタスクのソースを識別することにより、同時描画及びディスパッチ、キュー、アプリケーション、仮想関数並びにOSをプロセッサ上で実行することが可能になる。エントリ610,612,614,616は、マッピングテーブル608の任意の数のエントリを表す。一実施形態では、マッピングテーブル608は、16のエントリを有する。他の実施形態では、マッピングテーブル608は、他の数のエントリを含む。
図7を参照すると、コンピューティングシステム700の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム700は、コンテナIDを使用して、マルチタスク同時実行環境においてタスクを追跡する。コンテナIDを使用してタスクを追跡するために、システム700は、コンテナIDをタスクのソース階層にマッピングするための複数のマッピングテーブル(MT)725A~725Dを含む。MT725A~725Dの各々は任意の数のエントリを含み、エントリ数は実施形態によって異なる。
一実施形態では、システム700は、メモリサブシステム730及び入力/出力(I/O)デバイス740A~740Bに接続されたシステムオンチップ(SoC)705を含む。I/Oデバイス740A~740Bは、任意の数及びタイプの周辺装置を表す。他の実施形態では、システム700は、図を曖昧にすることを回避するために図示されていない他の構成要素も含むことに留意されたい。SoC705は、少なくとも、プロセッサコア710A~710Nと、I/Oファブリック715と、メモリ管理ユニット720と、割り込みコントローラ735と、を含む。一実施形態では、I/Oファブリック715は、I/Oデバイス740A~740Bに対応するマッピングテーブル725A~725Bを含む。また、MMU720及び割り込みコントローラ735は、それぞれマッピングテーブル725C~725Dを含む。マッピングテーブル725Cは、コンテナIDをタスクのソース階層にマッピングして、ページテーブルの適切なセットへのアクセスを可能にするために使用される。一方、マッピングテーブル725Dは、割り込みを送るために、コンテナIDを対応するソースにマッピングするために使用される。一実施形態では、異なるMT725A~725Dは、各MTのエントリが他のMTのエントリと一致するように同期される。したがって、本実施形態では、別のコンテナID用の新たなエントリのためのスペースを生成するために既存のエントリが所定のMT725A~725Dからエビクトされた場合、他のMT725A~725Dは、所定のMT725A~725Dと一致するように通知され、更新される。
図8を参照すると、コンテナIDをOSのID又はVFのIDにマッピングするためのマッピングテーブル800の一実施形態が示されている。一実施形態では、プロセッサ(例えば、図2のGPU205)は、コンテナIDをOS/VFのID及びVMIDにマッピングするためのマッピングテーブル800の1つ以上のコピーを含む。マッピングテーブル800は、コンテナIDフィールド805と、OS/VF IDフィールド810と、VMIフィールド815と、を含む。他の実施形態では、マッピングテーブル800は、他のフィールドを含み、及び/又は、異なるように構成される。所定のタスクのコンテナIDを使用して、マッピングテーブル800のルックアップを実行し、所定のタスクについて一致するOS/VF ID及びVMIDを見つける。
所定のデータ構造にアクセスするために、又は、外部構成要素と相互作用するために、タスクのソースが識別される必要がある場合、プロセッサは、マッピングテーブル800を使用して、所定のコンテナIDをタスクのOS又はVFのID及びVMIDに解決する。OS又はVFのID及び/又はVMIDは、タスクのソースを識別して、特定のタイプの操作を完了するために使用される。例えば、仮想アドレスから物理アドレスへの変換は、所定のコンテナIDのページテーブルの特定のセットにアクセスすることによって実行される。別の例では、特定のタスクは、マッピングテーブル800を使用して、コンテナIDをOS/VFのID及びVMIDに解決することによって、割り込みをどこに送るかを決定するために識別される。
一実施形態では、マッピングテーブル800は、限られた数のエントリを有する。マッピングテーブル800が一杯であり、新たなタスクがプロセッサ上で開始される場合、プロセッサは、新たなタスクの新たなエントリのためのスペースを生成するために、マッピングテーブル800から既存のエントリの1つを削除するか、中断するか、完了を待機する。いくつかの実施形態では、マッピングテーブル800の複数のコピーがプロセッサによって維持され、マッピングテーブル800の1つのコピーがプロセッサの各境界点に記憶される。これらの実施形態では、プロセッサは、マッピングテーブルを同期して、現在実行中のタスクの様々なコンテナIDに対して同じエントリがあることを確実にする。
図9を参照すると、コンテナIDを使用してタスクを抽象化する方法900の一実施形態が示されている。説明のために、本実施形態のステップ及び図10のステップは、順次示される。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上が、同時に実行され、図示した順序とは異なる順序で実行され、又は、完全に省略されることに留意されたい。また、必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも方法900を実施するように構成されている。
プロセッサは、第1のタスク及び1つ以上の他のタスクを同時に実行する(ブロック905)。一実施形態では、プロセッサはGPUである。第1のタスクを実行している間、プロセッサは、第1の操作に対応する1つ以上の命令を検出する(ブロック910)。一実施形態では、第1の操作はメモリアクセス操作である。別の実施形態では、第1の操作は、プロセッサの外部の構成要素をターゲットとする操作である。さらなる実施形態では、第1の操作は、第1のタスクのソースが識別されることを必要とする操作である。さらに別の実施形態では、第1の操作は、表示される1つ以上のピクセルをレンダリングすることを含む図形処理操作である。本実施形態では、プロセッサは、第1の操作の一部としてディスプレイに送られる1つ以上のピクセルを生成する。他の実施形態では、第1の操作は、様々な他のタイプの操作のうち何れかである。
プロセッサは、第1の操作に対応する第1のタスクの1つ以上の命令を検出したことに応じて、第1のタスクを一意に識別する第1の識別子(ID)を受信するが、第1のIDは、第1のタスクのソース階層を識別しない(ブロック915)。言い換えると、第1のIDは、第1のタスクに対して透過的である。一実施形態では、第1のIDは、コンテナIDである。次に、プロセッサは、第1のIDを、第1のタスクのソース階層を識別する第2のIDにマッピングする(ブロック920)。別の実施形態では、プロセッサは、第1のIDを、第1のタスクのソース階層を共に識別する第2のID及び第3のIDにマッピングする。本実施形態では、第2のIDは、第1のタスクの第1のアプリケーションを識別し、第3のIDは、第1のタスクの第1のオペレーティングシステム(OS)を識別する。本実施形態では、ソース階層は、第1のタスクのアプリケーション、OS、及び/又は、仮想関数(VF)を指す。これに対して、第1のIDは、第1のタスクのソース階層を抽象化する。
次に、プロセッサは、第1のタスクを識別するために第2のIDを使用して第1のデータ構造へのアクセスを実行することによって、第1の操作を完了する(ブロック925)。一実施形態では、第1のデータ構造は、仮想アドレスから物理アドレスへの変換ページテーブルのセットである。別の実施形態では、第1のデータ構造は、割り込みテーブルである。ブロック925の後に方法900が終了する。方法900は、プロセッサ上で同時に実行されている複数のタスクに対して並行して実行可能であることに留意されたい。これらの複数のタスクは、2つ以上の異なるゲストOSからのタスクを含む。
図10を参照すると、スケジューラがタスクのコンテナIDを生成する方法1000の一実施形態が示されている。プロセッサ(例えば、図2のGPU205)のスケジューラは、プロセッサの1つ以上の計算ユニットでスケジューリングされるタスクを受信する(ブロック1005)。スケジューラは、タスクに関連する仮想関数(VF)ID及び仮想メモリ(VM)IDを取得する(ブロック1010)。別の実施形態では、スケジューラは、タスクに関連するオペレーティングシステム(OS)IDを取得する。次に、スケジューラは、タスクに関連するVFID及びVMIDからタスクのコンテナIDを生成し、コンテナIDは、タスクを一意に識別する(ブロック1015)。別の実施形態では、スケジューラは、タスクに関連するOS ID及びVMIDからタスクの一意のコンテナIDを生成する。一実施形態では、スケジューラは、VMIDを用いてVFID(又はOSID)のハッシュを生成することによって、コンテナIDを生成する。次に、スケジューラは、一意のコンテナIDを用いてタスクをタグ付けする(ブロック1020)。言い換えると、タスクは、タスクのVFID、OS ID又はVMIDに関連付けられるのではなく、一意のコンテナIDに関連付けられる。これにより、プロセッサは、異なるゲストOS又は同じOSからの複数の並行タスクをサポートすることができる。
次に、スケジューラは、タスクが準備完了であると判別したことに応じて、1つ以上の計算ユニットで実行されるタスクをスケジューリングする(ブロック1025)。タスクの実行中、プロセッサは、コンテナIDをVFID及び/又はVMIDにマッピングすることによって、1つ以上のデータ構造にアクセスする(ブロック1030)。或いは、プロセッサは、ブロック1030において、コンテナIDをOS ID及び/又はVMIDにマッピングする。実施形態に応じて、1つ以上のデータ構造は、ページテーブル、割り込みテーブル、及び/又は、他のデータ構造を含む。ブロック1030の後に方法1000が終了する。一実施形態では、方法1000は、プロセッサ上で同時に実行されている複数のタスクに対して並行して実行されることに留意されたい。これらの複数のタスクは、2つ以上の異なるゲストOSからのタスクを含む。
様々な実施形態では、本明細書で説明した方法及び/又はメカニズムを実施するために、ソフトウェアアプリケーションのプログラム命令が使用される。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令は、高水準プログラミング言語によって表されている。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ形式、中間形式、又は、他の形式にコンパイルされる。或いは、ハードウェアの動作及び設計を記述するプログラム命令が記述される。このようなプログラム命令は、C言語等の高水準プログラミング言語で表される。或いは、Verilog等のハードウェア設計言語(HDL)が用いられる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体に記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセスされ、プログラムを実行するためにコンピューティングシステムにプログラム命令を提供する。一般的に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
上述した実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するように解釈されることが意図される。

Claims (20)

  1. システムであって、
    複数のタスクのプログラム命令を記憶するメモリであって、前記複数のタスクは第1のタスクを含むメモリと、
    前記メモリに接続されたプロセッサと、を備え、
    前記プロセッサは、
    前記第1のタスク及び1つ以上の他のタスクを同時に実行することと、
    第1の操作に対応する前記第1のタスクの1つ以上の命令を検出したことに応じて、
    前記第1のタスクを一意に識別する第1の識別子(ID)であって、前記第1のタスクのソース階層を識別しない第1のIDを受信することと、
    前記第1のIDを、前記第1のタスクの前記ソース階層を識別する第2のIDにマッピングすることと、
    前記第1のタスクを識別するために前記第2のIDを使用して第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、
    を行うように構成されている、
    システム。
  2. 前記プロセッサは、前記第1のIDを前記第2のID及び第3のIDにマッピングするためのマッピングテーブルにアクセスする、
    請求項1のシステム。
  3. 前記第2のIDは、第1のアプリケーションを識別し、前記第3のIDは、第1のオペレーティングシステム(OS)を識別し、前記第1のアプリケーション及び前記第1のOSは、前記第1のタスクの前記ソース階層を表す、
    請求項2のシステム。
  4. 前記プロセッサは、
    前記第1のタスクと同時に、前記第1のタスクとは異なるオペレーティングシステムの一部である第2のタスクを実行することと、
    第2の操作に対応する前記第2のタスクの1つ以上の命令を検出したことに応じて、
    前記第2のタスクを一意に識別する第4のIDであって、前記第1のタスクのソース階層を識別しない第4のIDを受信することと、
    前記第4のIDを、第5のID及び第6のIDにマッピングすることと、
    前記第2のIDと同じである前記第5のIDと、前記第3のIDとは異なる前記第6のIDと、を用いて前記第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、
    を行うように構成されている、
    請求項3のシステム。
  5. 前記第1の操作は、メモリアクセス操作であり、前記第1のデータ構造は、ページテーブルのセットである、
    請求項1のシステム。
  6. 前記プロセッサは、
    前記プロセッサと前記プロセッサの外部の各構成要素との間の各境界でマッピングテーブルを維持することと、
    前記第2のIDを取得するために、前記第1のIDを用いて前記マッピングテーブルにアクセスすることと、
    を行うように構成されている、
    請求項1のシステム。
  7. 前記第1のIDは、コンテナIDであり、前記プロセッサは、第1のコンテナIDを有するタスクが第2のコンテナIDを有するタスクのデータにアクセスするのを抑制するように構成されている、
    請求項1のシステム。
  8. 方法であって、
    第1のタスク及び1つ以上の他のタスクを同時に実行することと、
    第1の操作に対応する前記第1のタスクの1つ以上の命令を検出したことに応じて、
    前記第1のタスクを一意に識別する第1の識別子(ID)であって、前記第1のタスクのソース階層を識別しない第1のIDを受信することと、
    前記第1のIDを、前記第1のタスクのソース階層を識別する第2のIDにマッピングすることと、
    前記第1のタスクを識別するために前記第2のIDを使用して第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、を含む、
    方法。
  9. 前記第1のIDを前記第2のID及び第3のIDにマッピングするためのマッピングテーブルにアクセスすることを含む、
    請求項8の方法。
  10. 前記第2のIDは、第1のアプリケーションを識別し、前記第3のIDは、第1のオペレーティングシステム(OS)を識別し、前記第1のアプリケーション及び前記第1のOSは、前記第1のタスクの前記ソース階層を表す、
    請求項9の方法。
  11. 前記第1のタスクと同時に、前記第1のタスクとは異なるオペレーティングシステムの一部である第2のタスクを実行することと、
    第2の操作に対応する前記第2のタスクの1つ以上の命令を検出したことに応じて、
    前記第2のタスクを一意に識別する第4のIDであって、前記第1のタスクのソース階層を識別しない第4のIDを受信することと、
    前記第4のIDを、第5のID及び第6のIDにマッピングすることと、
    前記第2のIDと同じである前記第5のIDと、前記第3のIDとは異なる前記第6のIDと、を用いて前記第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、を含む、
    請求項10の方法。
  12. 前記第1の操作は、メモリアクセス操作であり、前記第1のデータ構造は、ページテーブルのセットである、
    請求項8の方法。
  13. ロセッサと前記プロセッサの外部の各構成要素との間の各境界でマッピングテーブルを維持することと、
    前記第2のIDを取得するために、前記第1のIDを用いて前記マッピングテーブルにアクセスすることと、を含む、
    請求項8の方法。
  14. 前記第1のIDは、コンテナIDであり、前記方法は、第1のコンテナIDを有するタスクが第2のコンテナIDを有するタスクのデータにアクセスするのを抑制することを含む、
    請求項8の方法。
  15. プロセッサであって、
    スケジューラユニットと、
    複数の計算ユニットと、を備え、
    前記プロセッサは、
    第1のタスク及び1つ以上の他のタスクを、前記複数の計算ユニット上で同時に実行するようにスケジューリングすることと、
    第1の操作に対応する前記第1のタスクの1つ以上の命令を検出したことに応じて、
    前記第1のタスクを一意に識別する第1の識別子(ID)であって、前記第1のタスクのソース階層を識別しない第1のIDを受信することと、
    前記第1のIDを、前記第1のタスクの前記ソース階層を識別する第2のIDにマッピングすることと、
    前記第1のタスクを識別するために前記第2のIDを使用して第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、
    を行うように構成されている、
    プロセッサ。
  16. 前記プロセッサは、前記第1のIDを前記第2のID及び第3のIDにマッピングするためのマッピングテーブルにアクセスする、
    請求項15のプロセッサ。
  17. 前記第2のIDは、第1のアプリケーションを識別し、前記第3のIDは、第1のオペレーティングシステム(OS)を識別し、前記第1のアプリケーション及び前記第1のOSは、前記第1のタスクの前記ソース階層を表す、
    請求項16のプロセッサ。
  18. 前記プロセッサは、
    前記第1のタスクと同時に、前記第1のタスクとは異なるオペレーティングシステムの一部である第2のタスクを実行することと、
    第2の操作に対応する前記第2のタスクの1つ以上の命令を検出したことに応じて、
    前記第2のタスクを一意に識別する第4のIDであって、前記第1のタスクのソース階層を識別しない第4のIDを受信することと、
    前記第4のIDを、第5のID及び第6のIDにマッピングすることと、
    前記第2のIDと同じである前記第5のIDと、前記第3のIDとは異なる前記第6のIDと、を用いて前記第1のデータ構造へのアクセスを実行することによって、前記第1の操作を完了することと、
    を行うように構成されている、
    請求項17のプロセッサ。
  19. 前記第1のIDは、コンテナIDであり、前記プロセッサは、第1のコンテナIDを有するタスクが第2のコンテナIDを有するタスクのデータにアクセスするのを抑制するように構成されている、
    請求項15のプロセッサ。
  20. 前記プロセッサは、
    前記プロセッサと前記プロセッサの外部の各構成要素との間の各境界でマッピングテーブルを維持することと、
    前記第2のIDを取得するために、前記第1のIDを用いて前記マッピングテーブルにアクセスすることと、
    を行うように構成されている、
    請求項15のプロセッサ。
JP2021505214A 2018-07-31 2019-06-26 仮想化用のgpuタスクコンテナとしてのvmid Active JP7123235B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/050,948 2018-07-31
US16/050,948 US10725822B2 (en) 2018-07-31 2018-07-31 VMID as a GPU task container for virtualization
PCT/US2019/039257 WO2020027951A1 (en) 2018-07-31 2019-06-26 Vmid as a gpu task container for virtualization

Publications (2)

Publication Number Publication Date
JP2021533455A JP2021533455A (ja) 2021-12-02
JP7123235B2 true JP7123235B2 (ja) 2022-08-22

Family

ID=67297335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021505214A Active JP7123235B2 (ja) 2018-07-31 2019-06-26 仮想化用のgpuタスクコンテナとしてのvmid

Country Status (6)

Country Link
US (3) US10725822B2 (ja)
EP (1) EP3830702A1 (ja)
JP (1) JP7123235B2 (ja)
KR (1) KR102540754B1 (ja)
CN (1) CN112368688A (ja)
WO (1) WO2020027951A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization
US10942775B2 (en) * 2019-03-01 2021-03-09 International Business Machines Corporation Modified central serialization of requests in multiprocessor systems
US11663141B2 (en) 2019-10-11 2023-05-30 Texas Instruments Incorporated Non-stalling, non-blocking translation lookaside buffer invalidation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000347940A (ja) 1999-06-08 2000-12-15 Matsushita Electric Ind Co Ltd メモリ管理装置
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources
JP2016527652A (ja) 2014-07-21 2016-09-08 ヴィア アライアンス セミコンダクター カンパニー リミテッド 多数の異なるアドレス空間をサポートするプロセッサにおける効率的なアドレス変換キャッシング

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507638B2 (en) 2011-11-08 2016-11-29 Nvidia Corporation Compute work distribution reference counters
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
CN103049334B (zh) * 2012-12-14 2015-09-30 华为技术有限公司 一种任务处理的方法和虚拟机
US9256623B2 (en) 2013-05-08 2016-02-09 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
GB2545170B (en) * 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US10365974B2 (en) * 2016-09-16 2019-07-30 Hewlett Packard Enterprise Development Lp Acquisition of object names for portion index objects
GB2563588B (en) * 2017-06-16 2019-06-26 Imagination Tech Ltd Scheduling tasks
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000347940A (ja) 1999-06-08 2000-12-15 Matsushita Electric Ind Co Ltd メモリ管理装置
JP2016527652A (ja) 2014-07-21 2016-09-08 ヴィア アライアンス セミコンダクター カンパニー リミテッド 多数の異なるアドレス空間をサポートするプロセッサにおける効率的なアドレス変換キャッシング
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources

Also Published As

Publication number Publication date
US20200042348A1 (en) 2020-02-06
WO2020027951A1 (en) 2020-02-06
US20210011760A1 (en) 2021-01-14
US10725822B2 (en) 2020-07-28
CN112368688A (zh) 2021-02-12
KR20210024636A (ko) 2021-03-05
EP3830702A1 (en) 2021-06-09
US20230055695A1 (en) 2023-02-23
US11467870B2 (en) 2022-10-11
KR102540754B1 (ko) 2023-06-08
JP2021533455A (ja) 2021-12-02

Similar Documents

Publication Publication Date Title
JP7123235B2 (ja) 仮想化用のgpuタスクコンテナとしてのvmid
KR101091224B1 (ko) 이종 처리 유닛을 위한 중앙집중형 디바이스 가상화 계층
US10037228B2 (en) Efficient memory virtualization in multi-threaded processing units
JP5583180B2 (ja) 仮想gpu
US10169091B2 (en) Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
US9436504B2 (en) Techniques for managing the execution order of multiple nested tasks executing on a parallel processor
US11741019B2 (en) Memory pools in a memory model for a unified computing system
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
CN109643277B (zh) 用于中介传递和共享存储器页合并的装置和方法
US20130179662A1 (en) Method and System for Resolving Thread Divergences
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
US9594599B1 (en) Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
US11132146B2 (en) Technique for efficiently allowing simultaneous access to resources in a computing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210322

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220627

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: 20220712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220809

R150 Certificate of patent or registration of utility model

Ref document number: 7123235

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150