IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧 ▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特許7504092仮想化コンピューティング環境での安全なメモリアクセス
<>
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図1
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図2
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図3
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図4
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図5
  • 特許-仮想化コンピューティング環境での安全なメモリアクセス 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-13
(45)【発行日】2024-06-21
(54)【発明の名称】仮想化コンピューティング環境での安全なメモリアクセス
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240614BHJP
   G06F 9/455 20180101ALI20240614BHJP
   G06F 12/109 20160101ALI20240614BHJP
【FI】
G06F9/50 150Z
G06F9/455 150
G06F12/109 110
【請求項の数】 15
(21)【出願番号】P 2021523799
(86)(22)【出願日】2019-06-19
(65)【公表番号】
(43)【公表日】2022-02-01
(86)【国際出願番号】 US2019037950
(87)【国際公開番号】W WO2020091850
(87)【国際公開日】2020-05-07
【審査請求日】2022-05-24
(31)【優先権主張番号】16/176,431
(32)【優先日】2018-10-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アンソニー アサロ
(72)【発明者】
【氏名】ジェフリー ジー. チェン
(72)【発明者】
【氏名】アニルーダ アール. アチャリャ
【審査官】田中 幸雄
(56)【参考文献】
【文献】米国特許出願公開第2018/0107608(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
G06F 12/109
(57)【特許請求の範囲】
【請求項1】
方法であって、
入力/出力メモリ管理ユニット(IOMMU)[105]において、バスデバイス[102]から第1のメモリアクセス要求を受信することであって、前記第1のメモリアクセス要求は、第1のメモリアドレスと、前記第1のメモリアクセス要求に関連する第1の仮想マシン(VM)[221]を示す第1の要求識別子[208]と、を含む、ことと、
IOMMUにおいて、前記第1の要求識別子において示された前記第1のVMの仮想メモリ識別子(VMID)を、前記第1のメモリアドレスに関連するメモリの第1の領域[111]に関連する仮想関数識別子(VFID)にマッピングすることに基づいて、前記メモリの第1の領域に前記第1のVMがアクセスするのを許可されたと判別したことに応じて、メモリ[110]における前記第1のメモリアクセス要求を満たすことと、を含む、
方法。
【請求項2】
前記VMIDを前記VFIDにマッピングすることは、前記第1の要求識別子を前記VFIDにマッピングすることを含む、
請求項1の方法。
【請求項3】
前記第1の要求識別子を前記VFIDにマッピングすることは、仮想関数のリンクされたリストにインデックスを付けるオフセット値に基づいてマッピングすることを含む、
請求項2の方法。
【請求項4】
前記第1の要求識別子を前記VFIDにマッピングすることは、仮想関数の前記リンクされたリストにインデックスを付けるストライド値に基づいてマッピングすることを含む、
請求項3の方法。
【請求項5】
前記ストライド値に基づいて前記第1の要求識別子を前記VFIDにマッピングすることは、前記ストライド値に対して、前記仮想関数に対応する仮想関数番号を乗算することを含む、
請求項4の方法。
【請求項6】
前記第1の要求識別子は、デバイス識別子のために予約された前記第1のメモリアクセス要求のフィールドに記憶される、
請求項1~5の何れかの方法。
【請求項7】
前記バスデバイスに関連するデバイスドライバ[332]に基づいて、前記第1の要求識別子を識別することを含む、
請求項1~6の何れかの方法。
【請求項8】
前記マッピングに基づいてページテーブル[116]のセットにアクセスすることを含む、
請求項1の方法。
【請求項9】
第1の仮想マシン(VM)[221]の代わりにワークロードを実行するためのバスデバイス[102]と、
入力/出力メモリ管理ユニット(IOMMU)[105]と、を備え、
前記IOMMUは、
前記バスデバイスから第1のメモリアクセス要求[208]を受信することであって、前記第1のメモリアクセス要求は、第1のメモリアドレスと、前記第1のVMを示す第1の要求識別子[208]と、を含む、ことと、
前記IOMMUにおいて、前記第1の要求識別子において示された前記第1のVMの仮想メモリ識別子(VMID)を、前記第1のメモリアドレスに関連するメモリの第1の領域[111]に関連する仮想関数識別子(VFID)にマッピングすることに基づいて、前記メモリの第1の領域に前記第1のVMアクセスするのを許可されたと判別したことに応じて、メモリにおける前記第1のメモリアクセス要求を満たすことと、
を行うように構成されている、
プロセッサ[101]。
【請求項10】
前記IOMMUは、前記第1の要求識別子を前記VFIDにマッピングすることによって、前記VMIDを前記VFIDにマッピングするように構成されている、
請求項9のプロセッサ。
【請求項11】
前記IOMMUは、仮想関数のリンクされたリストにインデックスを付けるオフセット値に基づいてマッピングすることによって、前記第1の要求識別子を前記VFIDにマッピングするように構成されている、
請求項10のプロセッサ。
【請求項12】
前記IOMMUは、仮想関数の前記リンクされたリストにインデックスを付けるストライド値に基づいてマッピングすることによって、前記第1の要求識別子を前記VFIDにマッピングするように構成されている、
請求項11のプロセッサ。
【請求項13】
前記IOMMUは、前記ストライド値に対して、前記仮想関数に対応する仮想関数番号を乗算することによって、前記第1の要求識別子を前記VFIDにマッピングするように構成されている、
請求項12のプロセッサ。
【請求項14】
前記第1の要求識別子は、デバイス識別子のために予約された前記第1のメモリアクセス要求のフィールドに記憶される、
請求項9~13の何れかのプロセッサ。
【請求項15】
前記バスデバイスは、前記バスデバイスに関連するデバイスドライバ[332]に基づいて、前記第1の要求識別子を識別するように構成されている、
請求項9~14の何れかのプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
仮想化コンピューティング環境では、仮想マシン(VM)と呼ばれる複数の仮想化エンティティが、個々のコンピュータシステムとしてユーザに表示されたり、ユーザと対話しながら、コンピュータリソースを共有する。例えば、サーバは、複数のVMを同時に実行することができ、これにより、複数のVMの各々が個別のコンピュータシステムとして動作するが、サーバのリソースを他のVMと共有する。仮想化コンピューティング環境は、コンピュータリソースの効率的な使用をサポートするが、各VMの安全で適切な操作を保証するために、これらのリソースを慎重に管理する必要もある。例えば、仮想化コンピューティング環境は、通常、VMが他のVMのデータに誤って又は悪意でアクセスしないように、VMに代わってシステムメモリへのアクセスを管理する。しかし、仮想化コンピューティング環境の従来のメモリアクセス技術は、特に、バスデバイス(システムの相互接続に結合されたデバイス)がメモリに直接アクセスできるようにする場合において、非効率的である。
【0002】
本開示は、添付の図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面において同じ符号を用いた場合、同様又は同一の要素であることを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、メモリへのバスデバイスのアクセスをサポートするために、異なる仮想マシンに対して異なる要求識別子を使用する処理システムのブロック図である。
図2】いくつかの実施形態による、異なる要求識別子を使用してバスデバイスを介してメモリにアクセスする、図1の処理システムで実行される異なる仮想マシンの例を示すブロック図である。
図3】いくつかの実施形態による、異なる仮想マシンのための安全なメモリアクセスをサポートするためにデバイスドライバ及びハイパーバイザを使用する、図1の処理システムの例を示すブロック図である。
図4】いくつかの実施形態による、要求識別子を使用してバスデバイスを介してメモリにアクセスするVMの方法のフロー図である。
図5】いくつかの実施形態による、ホストオペレーティングシステムから独立した割り込みを処理する、図1の処理システムの例を示すブロック図である。
図6】いくつかの実施形態による、ホストオペレーティングシステムから独立した割り込みを処理する、図1の処理システムの方法のフロー図である。
【発明を実施するための形態】
【0004】
図1図6は、バスデバイス(グラフィックスプロセッシングユニット等)でリクエスタ識別子を使用して、各メモリアクセス要求に関連する仮想マシンを識別することによって、仮想化コンピューティング環境で安全なメモリアクセスをサポートする技術を示している。仮想化コンピューティング環境は、リクエスタ識別子を使用して、システムメモリの様々な領域へのアクセスを制御し、各VMが、VMのアクセスが許可されているメモリ領域のみにアクセスするのを確実にする。これにより、仮想化コンピューティング環境は、バスデバイスによる効率的なメモリアクセスをサポートすると同時に、メモリの様々な領域が不正アクセスから保護されるのを確実にする。
【0005】
例を用いて説明すると、いくつかの実施形態では、プロセッサのグラフィックス処理ユニット(GPU)は、入出力メモリ管理ユニット(IOMMU)を介してシステムメモリとインタフェースする。プロセッサは、複数のVMを同時に実行し、各VMは、GPUを使用して、指定された動作を実行する。これらの動作の結果として生じるメモリアクセスの場合、GPUは、メモリアクセス要求を生成し、各メモリアクセス要求に、要求に関連するVMを示す要求識別子を含める。IOMMUは、メモリアクセス要求を受信すると、要求識別子に基づいてページテーブルのセットへのポインタを識別し、ページテーブルのセットを使用して、メモリアクセス要求に対するシステムメモリアドレスを識別する。ページテーブルは、各VMがシステムメモリの対応する領域にのみアクセスできるように、ハイパーバイザによって設定される。したがって、プロセッサは、メモリの各領域を不正アクセスから保護し、各VMの安全且つ適切な動作を保証する。対照的に、従来のプロセッサは、バスデバイスにおいて、異なるVMの異なるリクエスタ識別子をサポートしないので、異なるメモリ領域が不正アクセスにさらされたり、異なるVMによるバスデバイスを同時使用が制限されたりして、システム効率が低下する。
【0006】
いくつかの実施形態では、仮想化コンピューティング環境は、その環境で実行されるホストオペレーティングシステム(OS)から独立したGPU又はバスデバイスからの割り込み処理をサポートする。GPUは、同時に実行される様々なゲストOSに代わってタスクを実行するように構成されており、各ゲストOSは、異なるVMに関連付けられている。割り込みハンドラは、各タスクと対応するゲストOSとの間のマッピングテーブルを維持する。割り込みハンドラは、GPUから割り込みを受信し、各割り込みには、割り込みを生成したタスクに関連する仮想メモリを識別する組み込み仮想メモリ識別子(VMID)を有するペイロードが含まれる。割り込みハンドラは、マッピングテーブルから仮想関数識別子(VFID)を逆参照し、VFIDに基づいて、VFIDに対応するゲストOSに対して割り込みペイロードを提供する。例えば、いくつかの実施形態では、VMIDを用いた割り込みは、VMIDをVFIDにマッピングする割り込みハンドラに提供される。割り込みハンドラは、VFIDを、PCIeコントローラ等のコントローラに転送し、コントローラは、VFIDを要求IDにマッピングし、割り込みを処理するモジュール(IOMMU等)は、要求IDを使用して割り込みを処理する。これにより、仮想化コンピューティング環境は、ホストOSから独立した割り込み処理をサポートし、全体的な割り込みレイテンシを短縮する。
【0007】
図1は、いくつかの実施形態による、メモリへのバスデバイスのアクセスをサポートするために、異なる仮想マシンに対して異なる要求識別子を使用する処理システム100のブロック図である。処理システム100は、一般に、電子デバイスの代わりに命令のセット(例えば、コンピュータプログラム)を実行するように構成されている。したがって、異なる実施形態において、処理システム100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、ゲームコンソール等の複数の異なるタイプの電子デバイスの何れかに組み込まれる。
【0008】
命令のセットの実行を容易にするために、処理システム100は、プロセッサ101及びメモリ110を含む。いくつかの実施形態では、プロセッサ101は、命令のセットを実行するように構成された加速処理ユニット(APU)であり、メモリ110は、プロセッサ100のシステムメモリを共に形成するメモリモジュール(例えば、ダイナミックランダムアクセスメモリ(DRAM)メモリモジュール)のセットを含む。したがって、メモリ110は、プロセッサ101で実行される命令のセットによるアクセスに利用可能なデータ及び命令を記憶する。
【0009】
図示した例では、プロセッサ101は、グラフィックス処理ユニット(GPU)102及び入力/出力メモリ管理ユニット(IOMMU)105を含む。いくつかの実施形態では、プロセッサ101は、命令の実行をサポートする追加のモジュール(例えば、1つ以上の中央処理装置(CPU)コア、CPUコアによるメモリアクセスをサポートするメモリコントローラ、1つ以上のキャッシュ、1つ以上の入力/出力モジュール等)を含むことが理解されよう。GPU102は、一般に、1つ以上のCPUコアからのオペレーションの受信に応じて、ワークロードと呼ばれるオペレーションのセットを実行するように構成されている。オペレーションのセットは、一般に、プロセッサ101で実行されるグラフィックス及びベクトル命令に関連付けられている。
【0010】
IOMMU105は、一般に、GPU102を含むプロセッサ101の選択モジュールとメモリ110との間のインタフェースを提供するように構成されている。いくつかの実施形態では、IOMMUは、選択モジュールのメモリ110へのダイレクトメモリアクセス(DMA)機能を提供する。したがって、IOMMU105は、GPU102及び他のモジュールからメモリアクセス要求(読み出し及び書き込み要求)を受信し、メモリアクセス要求に関連する仮想アドレスを物理アドレスに変換し、物理アドレスを有するメモリアクセス要求のメモリ110へのプロビジョン(provision)を管理し、提供されたメモリアクセス要求に対する応答を管理するように構成されている。いくつかの実施形態では、IOMMU105は、PCI-e(Peripheral Component Interconnect Express)プロトコル等の特定の相互接続プロトコルに従って動作する相互接続(本明細書では、バスと呼ばれる)を介してGPU102及び他のモジュールに接続されている。バスを介してIOMMU105にメモリアクセス要求を提供するモジュールを、本明細書では「バスデバイス」と呼ぶ。簡単にするために、図1は、GPU102とIOMMU105との間の相互作用に関して説明されている。しかし、本明細書で説明する技術は、任意のバスデバイスに適用可能であり、実装可能であることが理解されよう。
【0011】
いくつかの実施形態では、処理システム100は、ある命令のセットに関連するデータが他の命令のセットによってアクセスされるのを抑制することが重要な環境で使用される。例えば、いくつかのシナリオでは、処理システム100は、処理システム100が複数の仮想マシン(VM)を同時に実行する仮想化コンピューティング環境で使用される。少なくとも別のVMに関連するデータのサブセットをVMに許可すると、VMの動作でエラーが発生したり、プライベートデータが不正アクセスにさらされることがある。したがって、図1の例では、処理システム100は、メモリ110の少なくとも一部を異なる領域(例えば、領域111,112)に分割し、各領域を、対応するVMに割り当てる。
【0012】
メモリ110の領域を不正アクセスから保護するために、IOMMU105は、VM毎に異なるページテーブルのセット(例えば、ページテーブル116,117)を使用する。VMの初期化中に、管理エンティティ(例えば、ハイパーバイザ等)は、対応するページテーブルを設定し、ページテーブルは、VMによって使用される仮想アドレスに関連する物理アドレスを識別する。管理エンティティは、物理アドレスが、そのVMに割り当てられたメモリ110の領域に対応するように、VMのページテーブルを生成する。さらに、管理エンティティは、ページテーブルポインタ115のセットを作成し、各ページテーブルポインタは、異なるページテーブルを指す。ページテーブルポインタ115は、以下にさらに説明するように、所定のページテーブルのセットを対象とするメモリアクセス要求を識別するためにIOMMUによって使用される各ページテーブルポインタの識別子をさらに含む。
【0013】
GPU102は、コンテキスト識別子(例えば、コンテキストID106,107)を使用して、実行中のVMのワークロードを管理する。したがって、GPU102は、VMからワークロードを受信することに応じて、ワークロードのコンテキストIDを生成する。いくつかの実施形態では、各コンテキストID自体が、ワークロードを生成したVMを一意に識別する。他の実施形態では、GPU102は、異なるVMからのワークロードに対して所定のコンテキストIDを再利用し、コンテキストIDと、ワークロードが受信されたタイミング又はシーケンス等の他のインジケータとの組み合わせから、ワークロードを生成したVMを識別する。GPU102は、ワークロードのメモリアクセス要求を生成する場合、ワークロードを生成したVMを識別し、メモリアクセス要求に、VMを識別する要求識別子(例えば、要求ID109)を含める。
【0014】
IOMMU105は、メモリアクセス要求の受信に応じて、要求IDを使用して、ページテーブルポインタ115のセットにインデックスを付けて、VMに関連するページテーブルを識別する。IOMMU105は、識別されたページテーブルを使用してページテーブルウォークを実行し、メモリアクセス要求の仮想アドレスを物理アドレスに変換する。次に、IOMMU105は、VMに割り当てられた領域におけるメモリアクセス要求を満たすために、物理アドレスをメモリ110に提供する。したがって、処理システム100は、要求IDを使用することによって、メモリ110の各領域を不正アクセスから保護しながら、GPU102(又は、任意のバスデバイス)がIOMMU105を介してメモリ110に直接アクセスすることを可能にする。
【0015】
いくつかの実施形態では、処理システム100は、1つ以上の既存のバスプロトコルフィールドを利用して、メモリアクセス要求の要求IDを記憶する。例えば、PCIEプロトコルは、メモリアクセス要求等のメッセージを生成したデバイスを示すデバイス識別子フィールドを含む。GPU102は、デバイス識別子フィールドを使用して、メモリアクセス要求を生成したVMを識別する要求IDを記憶する。既存のバスプロトコルフィールドを使用することによって、要求IDの実装が簡素化される。
【0016】
図2は、いくつかの実施形態による、異なるVMによって生成されたメモリアクセス要求に対して異なる要求IDを利用する処理システム100の例のブロック図である。図示した例では、GPU102は、VM221及びVM222と呼ばれる2つの異なるVMによって生成された異なるワークロードを実行する。VM221のプロビジョニング(provisioning)中に、ハイパーバイザは、要求ID208と呼ばれる要求IDをVM221に割り当てる。同様に、VM221のプロビジョニング中に、ハイパーバイザは、要求ID209と呼ばれる要求IDをVM222に割り当てる。例えば、いくつかの実施形態では、ハイパーバイザ(又は、他のハードウェアモジュール)は、次の式を使用して、VMのVFIDを要求IDにマッピングする。
【0017】
VFi_ReqID==PF ReqID+VF_OFFSET+VF#×VF_STRIDE
【0018】
式中、VF_OFFSET及びVF_STRIDEは、所定の物理関数に関連するVFのリンクされたリストにインデックスを付けるために使用される値である。
【0019】
また、図2の例では、ハイパーバイザは、プロビジョニング中にメモリ110の領域111をVM221に割り当て、領域112をVM222に割り当てることが想定されている。したがって、VM221のプロビジョニング中に、ハイパーバイザは、ページテーブル116に記憶された物理アドレスが領域111に対応するように、VM221のページテーブル116を生成する。同様に、ハイパーバイザは、ページテーブル116に記憶された物理アドレスが領域111に対応するように、VM222のページテーブル117を生成する。
【0020】
動作中、GPU102は、VM221によって生成されたワークロード、及び、VM222によって生成されたワークロードに基づいて、メモリアクセス要求を生成する。VM221によって生成されたワークロードに対するメモリアクセス要求を生成するのに応じて、GPUは、要求ID208をメモリアクセス要求に含める。同様に、VM222によって生成されたワークロードのメモリアクセス要求の生成に応じて、GPUは、要求ID209をメモリアクセス要求に含める。
【0021】
メモリアクセス要求の受信に応じて、IOMMU105は、メモリアクセス要求とともに受信した要求IDを使用して、ページテーブルポインタ115にインデックスを付ける。したがって、要求ID208を含むメモリアクセス要求の場合、IOMMU105は、ページテーブルポインタ115にインデックスを付けて、ページテーブル116へのポインタを取得する。要求ID209を含むメモリアクセス要求の場合、IOMMU105は、ページテーブルポインタ115にインデックスを付けて、ページテーブル117へのポインタを取得する。IOMMU105は、取得されたポインタによって示されるページテーブルのページウォークを実行し、それにより、メモリアクセス要求とともに受信した仮想アドレスを物理アドレスに変換する。物理アドレスは、メモリアクセス要求に関連するVMに応じて、領域111,112の何れかに対応する。
【0022】
図3は、いくつかの実施形態による、異なる仮想マシンのための安全なメモリアクセスをサポートするためにデバイスドライバ及びハイパーバイザを使用する、処理システム100の例を示すブロック図である。図示した例では、処理システムは、処理システム100における仮想マシンのプロビジョニング及び実行を管理するように一般的に構成されたハイパーバイザ330を実行する。異なる実施形態では、ハイパーバイザ330は、ソフトウェア、ハードウェア、又は、これらの組み合わせである。
【0023】
上述したように、ハイパーバイザ330は、一般に、処理システム101におけるVMのプロビジョニングを管理するように構成されている。したがって、VMの実行を開始する要求を受信したことに応じて、ハイパーバイザ330は、IOMMU105に記憶されるVMのページテーブルの生成と、生成されたページテーブルを指すページテーブルポインタの生成と、を管理する。ドライバ(図示省略)は、VMIDのVFIDへのマッピングを管理し、ハイパーバイザ330は、上記の式に従って、VFIDからの要求IDの生成を管理する。ハイパーバイザ330は、VMの要求IDがIOMMU105の対応するページテーブルポインタに関連付けられていることを確実にする。
【0024】
図3の例では、処理システム100は、デバイスドライバ332,333を実行する。デバイスドライバ332,333の各々は、GPUと対応するVM(VM221,222)との間のソフトウェアインタフェースを提供する。したがって、デバイスドライバ332,333の各々は、対応するVMからワークロードを実行する要求を受信し、要求を、GPU102の特定のタイプに従ってフォーマットされた1つ以上のコマンドに変換する。デバイスドライバ332,333は、GPU102によって実行されたワークロードの結果を示すメッセージ等のメッセージをGPU102から受信する。デバイスドライバ332,333は、メッセージ(又は、そのデータペイロード)を、対応するVMによって期待されるフォーマットに変換し、変換された情報をVMに提供する。
【0025】
いくつかの実施形態では、GPU102は、ワークロード又はコマンドを提供したデバイスドライバに基づいて、メモリアクセス要求の要求IDを識別する。特に、各デバイスドライバ332,333は、異なるVM221,222に一意に関連付けられているので、GPU102は、事実上、ワークロード又はコマンドを提供したデバイスドライバを識別することによって、ワークロード又はコマンドを提供したVMを識別する。識別されたVMに基づいて、GPU102は、メモリアクセス要求とともに識別されたVMに関連する要求IDを含む。いくつかの実施形態では、VM221,222は、GPU102とインタフェースするためのデバイスドライバを共有する。したがって、デバイスドライバは、GPU102に提供される各コマンド又はワークロードとともに、仮想メモリ識別子(VMID)を含む。GPU102は、VMIDを使用して、各メモリアクセス要求に含まれる要求IDを識別する。いくつかの実施形態では、各VMIDは、異なるVMに一意に関連付けられている。他の実施形態では、VMIDは、複数のVMによって共有され、GPU102は、VMIDと、他のコンテキスト情報(例えば、要求IDが生成されたとき、割り込みが受信されたとき、現在実行中のVM等)との組み合わせに基づいて、VMの要求IDを識別する。
【0026】
図4は、いくつかの実施形態による、要求識別子を使用して、バスデバイスを介してメモリにアクセスするVMの方法400のフロー図である。説明するために、方法400は、図1図3の処理システム100における実施例に関して説明される。ブロック402において、GPU102は、VMに代わってワークロードを実行することに基づいて、メモリアクセス要求を生成する。GPU102は、例えば、ワークロードを提供する1つ以上のデバイスドライバ、デバイスドライバによって提供されるVMのVMID、又は、これらの組み合わせに基づいて、VMのコンテキストIDを識別する。ブロック404において、GPU102は、コンテキストIDに基づいて、VMに対する要求IDを決定する。
【0027】
ブロック406において、GPU102は、メモリアクセス要求をIOMMU105に送信し、要求IDをメモリアクセス要求に含める。例えば、いくつかの実施形態では、GPU102は、VMを識別する要求IDを、処理システム100のデバイスを識別するためにデバイス識別子のために予約されたメモリアクセス要求のフィールドに含める。ブロック408において、IOMMU105は、ページテーブルポインタ115にアクセスし、要求IDに基づいてVMのページテーブルポインタを識別する。ブロック410において、IOMMU105は、ページテーブルポインタにより示されたページテーブルのセットにアクセスし、ページテーブルのセットを使用してページテーブルウォークを実行して、メモリアクセス要求の仮想アドレスを物理アドレスに変換する。ブロック410において、IOMMU105は、物理アドレスを使用してメモリ110にアクセスする。物理アドレスは、メモリアクセス要求に関連するVMに割り当てられた領域にある。したがって、各VMは、対応する領域にのみアクセスし、各VMデータを不正アクセスから保護する。
【0028】
図5は、いくつかの実施形態による、割り込みを処理する処理システム100の例を示すブロック図である。図示した例では、処理システム100は、ホストOS544と、ゲストOS546と、ゲストOS548と、を同時に実行する。OS544,546,548の各々は、処理システム100の1つ以上のプロセッサコア(図示省略)で実行される。ホストOS544は、処理システム100に対して、アプリケーション及びメモリ管理等のオペレーティングシステム機能を実行するように構成されたオペレーティングシステムである。ゲストOS546,548の各々は、処理システム100で実行される異なる対応するVMに対してオペレーティングシステム機能を実行するように構成されている。したがって、例えば、いくつかの実施形態では、ゲストOS546は、VM221(図2)によって実行されるオペレーティングシステムであり、ゲストOS548は、VM222によって実行されるオペレーティングシステムである。
【0029】
上述したように、いくつかの実施形態では、VM221,222の各々は、描画タスク、ベクトル計算タスク等のタスクを、実行するためにGPU102に割り当てる。これらのタスクを実行する過程で、GPU102は、割り込み(例えば、割り込み550)を生成して、ステータス情報等の情報を、対応するVMに非同期的に提供する。例えば、いくつかの実施形態では、GPU102は、VMの指定されたタスクの完了時に割り込みを生成し、割り込みは、タスクの結果又は他のステータス情報を示すペイロードを含む。従来、VMを同時に実行するための割り込み処理は、ホストOSを介して、又は、専用のハードウェアを使用してルーティングされていた。例えば、一部の処理システムでは、全ての割り込みが最初にホストOSに提供され、ホストOSが、割り込みの対象となるVMを識別し、識別されたVMに割り込みをルーティングする。ただし、このアプローチでは、割り込み処理のレイテンシが比較的長くなる。
【0030】
従来のアプローチとは対照的に、処理システム100は、マッピングテーブル542及び割り込みハンドラ540を使用して、ホストOS544とは独立して、ゲストOS546,548の割り込みを処理する。マッピングテーブル542は、VMID毎に、対応するVFIDを示し、さらに、VFIDに割り当てられたメモリ110(又は、処理システム100の他のメモリ)の領域を示す。GPU102によって生成された各割り込みは、割り込みを生成したタスクに対応するVMを識別するVMIDを含む。割り込みハンドラ540は、割り込みの受信に応じて、マッピングテーブル542にアクセスして、VMIDに関連するVFIDと、VFIDに関連するメモリ領域と、を識別する。割り込みハンドラ540は、割り込みのペイロードを、示されたメモリ領域に記憶し、ペイロードは、実行中のアプリケーション又は他のモジュールにプロビジョンされるために、対応するゲストOSによってアクセスされる。いくつかの実施形態では、初期化フェーズ中に、ホストOS544又は処理システム100のハイパーバイザによって領域がVFIDに割り当てられ、その結果、各VM(及び、対応するゲストOS)が、異なるメモリ領域に割り当てられ、これにより、ゲストOSが、VMを対象とする割り込みのペイロードのみにアクセスするのを確実にする。つまり、ゲストOSは、他のVMに割り当てられたメモリ領域を「認識」していないので、他のVMの割り込みペイロードにアクセスできず、これにより、割り込みペイロードを不正なアクセスから保護する。いくつかの実施形態では、割り込みペイロードは、IOMMU105を介してVMにルーティングされ、割り込み自体又はその指標は、異なるテーブルのセット(図示省略)及び他の割り込み固有のメカニズムを使用してIOMMU105に提供され、VMに割り込みを挿入する。
【0031】
いくつかの実施形態では、割り込みハンドラ540は、ホストOS544とは独立して、ゲストOS546,548の割り込みを処理する。すなわち、ホストOS544は、ゲストOS546,548に対して割り込み又は割り込みペイロードを提供する処理を行わない。これにより、処理システム101は、仮想マシンの割り込み処理に関連するレイテンシを短縮する。
【0032】
図6は、いくつかの実施形態による、ホストOSから独立した処理システムにおいてVMの割り込みを処理する方法600のフロー図である。方法600は、図1及び図5の処理システムでの実施例に関して説明される。ブロック602において、割り込みハンドラ540は、GPU102から割り込み550を受信する。これに応じて、ブロック604において、割り込みハンドラ540は、割り込み550に含まれるVMIDを使用して、マッピングテーブル542にアクセスする。マッピングテーブルは、割り込みに関連するVFIDを示し、ブロック606において、VFIDに対応するメモリ領域を示す。ブロック608において、割り込みハンドラ540は、割り込み550のデータペイロードを、示されたメモリ領域に記憶し、割り込みが受信されたことを、VFIDに対応するゲストOSに示す。これに応じて、ゲストOSは、メモリ領域に記憶されたデータペイロードにアクセスする。
【0033】
本明細書に開示されるように、いくつかの実施形態では、方法は、入力/出力メモリ管理ユニット(IOMMU)において、バスデバイスから第1のメモリアクセス要求を受信することであって、第1のメモリアクセス要求は、第1のメモリアドレスと、第1のメモリアクセス要求に関連する第1の仮想マシン(VM)を示す第1の要求識別子と、を含む、ことと、IOMMUにおいて、仮想メモリ識別子(VMID)を仮想関数識別子(VFID)にマッピングすることに基づいて、第1のメモリアドレスに関連するメモリの第1の領域に第1の仮想マシンがアクセスするのを許可されたと判別したことに応じて、メモリにおける第1のメモリアクセス要求を満たすことと、を含む。一態様では、VMIDをVFIDにマッピングすることは、第1の要求識別子をVFIDにマッピングすることを含む。別の態様では、第1の要求識別子をVFIDにマッピングすることは、仮想関数のリンクされたリストにインデックスを付けるオフセット値に基づいてマッピングすることを含む。
【0034】
一態様では、第1の要求識別子をVFIDにマッピングすることは、仮想関数のリンクされたリストにインデックスを付けるストライド値に基づいてマッピングすることを含む。別の態様では、ストライド値に基づいて第1の要求識別子をVFIDにマッピングすることは、ストライド値に対して、仮想関数に対応する仮想関数番号を乗算することを含む。さらに別の態様では、第1の要求識別子は、デバイス識別子のために予約されたメモリアクセス要求のフィールドに記憶される。さらに別の態様では、この方法は、バスデバイスに関連するデバイスドライバに基づいて、第1の要求識別子を識別することを含む。別の態様では、この方法は、マッピングに基づいてページテーブルのセットにアクセスすることを含む。さらに別の態様では、方法は、IOMMUにおいて、デバイスから第2のメモリアクセス要求を受信することであって、第2のメモリアクセス要求は、第2のメモリアドレスと、第2のメモリアクセス要求に関連する第2の仮想マシン(VM)を示す第2の要求識別子と、を含む、ことと、IOMMUにおいて、仮想メモリ識別子(VMID)を仮想関数識別子(VFID)にマッピングすることに基づいて、第1のメモリアドレスに関連するメモリの第2の領域に第2の仮想マシンがアクセスするのを許可されたと判別したことに応じて、メモリにおける第2のメモリアクセス要求を満たすことを含む。
【0035】
本明細書に開示されるように、いくつかの実施形態では、方法は、バスデバイスから割り込みを受信したことに応じて、割り込みに関連する仮想マシン識別子(VMID)を仮想関数にマッピングすることに基づいて、メモリ領域を識別することと、メモリ領域において割り込みのペイロードを記憶することと、を含む。一態様では、この方法は、ゲストオペレーティングシステムによって、メモリ領域からペイロードを取得することを含む。
【0036】
本明細書に開示されるように、いくつかの実施形態では、プロセッサは、第1の仮想マシン(VM)の代わりにワークロードを実行するためのバスデバイスと、入力/出力メモリ管理ユニット(IOMMU)であって、バスデバイスから第1のメモリアクセス要求を受信することであって、第1のメモリアクセス要求は、第1のメモリアドレスと、第1のVMを示す第1の要求識別子と、を含む、ことと、仮想マシン識別子(VMID)を仮想関数識別子(VFID)にマッピングすることに基づいて、IOMMUにおいて、第1のメモリアドレスに関連するメモリの第1の領域に第1の仮想マシンがアクセスするのを許可されたと判別したことに応じて、メモリにおける第1のメモリアクセス要求を満たすことと、を行うように構成されている、入力/出力メモリ管理ユニットと、を含む。一態様では、IOMMUは、第1の要求識別子をVFIDにマッピングすることによって、VMIDをVFIDにマッピングするように構成されている。別の態様では、IOMMUは、仮想関数のリンクされたリストにインデックスを付けるオフセット値に基づいてマッピングすることによって、第1の要求識別子をVFIDにマッピングするように構成されている。
【0037】
一態様では、IOMMUは、仮想関数のリンクされたリストにインデックスを付けるストライド値に基づいてマッピングすることによって、第1の要求識別子をVFIDにマッピングするように構成されている。別の態様では、IOMMUは、ストライド値に対して、仮想関数に対応する仮想関数番号を乗算することによって、第1の要求識別子をVFIDにマッピングするように構成されている。さらに別の態様では、第1の要求識別子は、デバイス識別子のために予約されたメモリアクセス要求のフィールドに記憶される。さらに別の態様では、バスデバイスは、バスデバイスに関連するデバイスドライバに基づいて、第1の要求識別子を識別するように構成されている。別の態様では、IOMMUは、マッピングに基づいてページテーブルのセットにアクセスするように構成されている。さらに別の態様では、IOMMUは、デバイスから第2のメモリアクセス要求を受信することであって、第2のメモリアクセス要求は、第2のメモリアドレスと、第2のメモリアクセス要求に関連する第2の仮想マシン(VM)を示す第2の要求識別子と、を含む、ことと、第1のメモリアドレスに関連するメモリの第2の領域に第2の仮想マシンがアクセスするのを許可されたと判別したことに応じて、メモリにおける第2のメモリアクセス要求を満たすことと、を行うように構成されている。
【0038】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0039】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0040】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6