JP6110946B2 - ゲスト仮想マシン内の仮想入出力メモリ管理ユニット - Google Patents

ゲスト仮想マシン内の仮想入出力メモリ管理ユニット Download PDF

Info

Publication number
JP6110946B2
JP6110946B2 JP2015529940A JP2015529940A JP6110946B2 JP 6110946 B2 JP6110946 B2 JP 6110946B2 JP 2015529940 A JP2015529940 A JP 2015529940A JP 2015529940 A JP2015529940 A JP 2015529940A JP 6110946 B2 JP6110946 B2 JP 6110946B2
Authority
JP
Japan
Prior art keywords
guest
virtual
iommu
address
page table
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
JP2015529940A
Other languages
English (en)
Other versions
JP2015526829A5 (ja
JP2015526829A (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 JP2015526829A publication Critical patent/JP2015526829A/ja
Publication of JP2015526829A5 publication Critical patent/JP2015526829A5/ja
Application granted granted Critical
Publication of JP6110946B2 publication Critical patent/JP6110946B2/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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

開示された実施形態は、概してコンピュータシステム、特に入主力(I/O)装置のためのメモリ管理ユニットに関する。
現代社会では、パーソナルコンピュータ(PC)、ワークステーション、サーバ、種々の携帯情報端末(PDA)装置などを含む種々のタイプのコンピュータシステムが至る所に存在する。全てでなくとも多くのこれらのコンピュータシステムは、プロセッサのメモリアクセスについてのメモリ管理機能を実装してきた。通常、メモリ管理機能は、種々のメモリ保護(例えば、読み出しのみ、読み出し/書き込み、特権レベル必要条件など)とともに、各プロセスにより使用される仮想アドレス空間から実際のシステムメモリに及ぶ物理アドレス空間へのアドレス変換を含む。メモリ管理機能は、各プロセスによって使用されるメモリを、権限が与えられていない他のプロセスによるアクセスから保護し、物理メモリシステムがそれ程大きくない場合でもプロセスが大きな仮想空間を使用することを可能にし、仮想アドレスを、プロセスが関与することなく利用可能な物理メモリへ再配置する、などのように様々な使用法を有する。
また、コンピュータシステムの入出力(I/O)装置が使用するアドレスは、頻繁に変換されるプロセッサアドレスと同様に、変換され得る。すなわち、I/O装置は、メモリにアクセスするために、物理アドレスではなく仮想アドレスを用いることができる。装置が物理アドレスではなく仮想アドレスを使用することは、今日のシステムにおいて、システム全体のセキュリティを向上するので望ましい。悪意のある装置(または、悪意のあるソフトウェアエージェントによりプログラムされた装置)の物理アドレスの使用は、メモリアクセスが阻止される結果となるであろう。
多くのPCなどのシングルオペレーティングシステム(OS)のコンピュータシステムでは、OSは、他のプロセス(アプリケーションおよびOSサービス)によるI/O装置へのアクセスを制御する。従って、OSは、どのプロセスが所定の装置へのアクセスを有しているのかを常時制御可能であり、装置によってアクセスされるアドレスを少なくとも幾らか制御可能である。仮想マシンシステムは、仮想マシンモニタ上で実行中の複数のゲストOSを有し得るので、より複雑である。仮想化されたシステムでは、多数のアプリケーションおよびI/O装置が、仮想アドレスの使用を通して物理メモリにアクセスする。I/Oメモリユニットは、I/O装置およびシステムメモリに接続されており、IOMMUは、装置メモリ要求内の仮想アドレスを物理アドレスに変換して、物理システムメモリにアクセスするように構成されている。
今日のコンピューティング環境は、仮想マシン(VM)環境を有し、VM環境では、複数のVMが分離した論理オペレーティングエンティティとしてシングルプロセッサシステム上で実行可能である。通常、論理的に分離されたVMは、ハードウェア装置およびデバイスドライバなどのようなプロセッサシステムの共用リソースを共有する。これらの複数のVMの共存を管理し、共用リソースとの情報交換およびVM間の情報交換を可能にするため、VM環境は、多くの場合、仮想マシンモニタ(VMM)またはハイパーバイザを使用する。
セキュリティおよび安定性は、多くのコンピュータシステム、特にVM環境で重要な問題である。従来のコンピュータシステムでは、周辺装置およびこれらに関連するデバイスドライバは、自由で拘束されないメモリアクセスを有する。このような拘束されないアクセスは、破損し、または、正常に機能しない装置またはデバイスドライバが、周辺装置の使用のためにメモリ位置が確保されていたかどうかにかかわらず、メモリ内のあらゆる位置に書き込み可能であることを意味する。オペレーティングシステムの使用のために確保されたメモリ位置が、正常に機能しない装置によって上書きされる場合には、システムクラッシュがほぼ避けられない結果になる。コンピュータシステムのユーザは安定性を要求しており、メモリ破損によるシステムクラッシュの最小化が求められる。
各周辺装置およびこれに関連するドライバに割り当てられたメモリ周辺にファイアウォールを構成し、不適切なメモリアクセスを防ぐことが必要である。また、VM環境内の不適切なメモリアクセスを防ぐ、VM内の仮想IOMMUが必要である。さらに、結果として生じる入出力応答が十分迅速であるように、かかるファイアウォールが実行されることが必要である。
いくつかの実施形態では、ゲストVM内の仮想化されたIOMMUが提供される。仮想IOMMUは、ゲストページテーブル、ホストページテーブルおよびゼネラルコントロールレジスタ(例えばGCR3)テーブルを含むデータ構造を用いる。ゲストページテーブルは、仮想IOMMUの要求速度をサポートするために、ハードウェアに実装されている。GCR3テーブルは、デバイステーブルに記憶された仮想デバイスIDパラメータを用いて索引付けられる。ゲストページテーブルのフォーマットはホストページテーブルのフォーマットと同一であり、デバイステーブル内のコントロールビットは、ゲストページテーブルの異なる使用間を区別するのに用いられる。
さらなる実施形態、開示された実施形態の機能および利点、ならびに、種々の実施形態の構造および動作を、添付の図面を参照して詳細に後述する。
本明細書に含まれ、本明細書の一部を構成する添付の図面は、開示された実施形態を示し、開示された実施形態の原理を本明細書の記載とともに説明し、当業者が、開示された実施形態を実施および使用するのを可能にするように機能する。
いくつかの実施形態によるコンピュータシステムを示す図である。 いくつかの実施形態によるIOMMUアーキテクチャを示す図である。 いくつかの実施形態による、仮想IOMMUを用いた入出力(I/O)装置によるメモリアクセスの方法を示すフローチャートである。
開示された実施形態の特徴および利点は、図面と併せて後述の詳細な記載を参照することで明らかになり、図面の同一の参照符号は、図面全体にわたって対応する構成要素を示す。図面の同一の参照番号は、通常、同一の、機能的に同様の、および/または、構造的に同様の構成要素を示す。構成要素が最初に表れる図は、対応する参照番号の一番左の桁で示されている。
背景として、仮想化および仮想などの用語は、計算技術の意味に従って使用する。特に、仮想化とは、システム、アプリケーションおよびエンドユーザによるアプローチが基本的なリソースと簡単に対話できるように、当該リソースの物理的特性を隠すために使用される技術をいう。例えば、仮想化は、1つの物理リソース(例えばメモリ)が複数の論理リソースとして見えることを可能にする。よって、仮想化技術は、1つのコンピュータが多数の仮想マシンを実行可能であることを許可し、各仮想マシンは、利用可能なリソースを完全に補足しているように見え、他の仮想マシンに対するリソースの明らかな重複がないように見える。
図1を参照すると、いくつかの実施形態によるコンピュータシステム10の簡略化されたハイレベル図を表すブロック図が示されている。図1に示すように、システム10は、1つ以上のプロセッサ12と、1つ以上の変換索引バッファ(TLB)16を有するメモリ管理ユニット(MMU)14と、メモリコントローラ(MC)18と、メモリ20と、1つ以上のI/OTLB(IOTLB)24を有する1つ以上のI/O装置22と、テーブルウォーカ28、キャッシュ30、制御レジスタ32および制御ロジック34を有するI/OMMU(IOMMU)26と、を備える。プロセッサ12は、MMU14に接続されており、MMU14は、メモリコントローラ18に接続されている。I/O装置22は、IOMMU26に接続されており、IOMMU26は、メモリコントローラ18に接続されている。IOMMU26内では、テーブルウォーカ28、キャッシュ30、制御レジスタ32および制御ロジック34は、互いに接続されている。
さらに後述するように、IOMMU26は、システム10の仮想化を単純化する種々の機能を有してもよい。仮想マシンの管理(基本的なハードウェア上での仮想マシンの実行のスケジューリング)や、種々のシステムリソースへのアクセスの制御などを行う仮想マシンモニタ(VMM)については後述する。VMMは、たまにハイパーバイザとも呼ばれることを述べておく。開示された実施形態では、プロセッサ12は、仮想化環境においてソフトウェアを実行中である。従って、3つの仮想マシン100A,100B,100C(例えばVM1〜3)と、VMM106とが示されている。所定の実施形態の仮想マシン100の数は変化してもよく、仮想マシンがユーザにより開始および停止する場合、使用中に動的に変化し得る。開示された実施形態では、仮想マシン100Aは、1つ以上のゲストアプリケーション(App)102と、ゲストオペレーティングシステム(OS)104とを有する。OS104は、システム10の物理ハードウェアではなく、OS104のためにVMM106によって生成された仮想マシン100を制御するので、「ゲスト」OSと呼ぶ。また、同様に、VM100BおよびVM100Cの各々は、1つ以上のゲストアプリケーション102と、ゲストOS104とを有してもよい。
通常、仮想マシン100内のアプリケーション102は、ゲスト仮想アドレス空間、つまりゲスト仮想アドレス(GVA)を使用する。各仮想マシン100のゲストOS104は、仮想マシン100内のゲスト「物理」アドレス(GPA)に対するGVAのマッピングを管理してもよい。ゲストOS104が、VMMなしにシステム10のハードウェア上で直接実行している場合には、ゲストOS104によって生成される物理アドレスは、実際、システム10内のメモリ位置のシステム物理アドレス(SPA)であるだろう。しかし、仮想マシン環境では、VMM106は、GPAからSPAへのマッピングを管理してもよい。よって、プロセッサ12がメモリ要求を実行する場合、ゲストOS104は、GVAからGPAへのマッピング(VMM106によってさらにSPAにマッピングしてもよい)を管理してもよい。
図1に示すように、I/O装置22からメモリ20へのパスは、プロセッサ12からメモリ20へのパスと少なくとも部分的に分離している。特に、I/O装置22からメモリ20へのパスは、MMU14を通過しない代わりに、IOMMU26を通過する。従って、MMU14は、I/O装置22からのメモリ要求に対するメモリ管理を提供することができない。通常、メモリ管理は、1つのタイプの仮想アドレス(すなわち、ソフトウェアが使用してもよいアドレス)から物理アドレス(すなわち、メモリコントローラが使用してもよいアドレス)へのアドレス変換と、メモリ保護と、を含んでもよい。メモリ保護は、例えば、特権レベル要求、キャッシュ可能性およびキャッシュ制御(例えばライトスルーまたはライトバック)、コヒーレンシなどの種々の他の属性とともに、あるレベルの細分性(例えばページ)で、メモリの読み出しおよび/または書き込みアクセスを制御してもよい。種々の実施形態では、あらゆるセットのメモリ保護が実行されてもよい。いくつかの実施形態では、IOMMU26によって実行されるメモリ保護は、MMU14によって実行されるメモリ保護と、少なくともいくつかの点で異なってもよい。1つの実施形態では、IOMMU26によって実行されるメモリ保護を、IOMMU26およびMMU14が使用する変換データを記憶する変換テーブルが共有され得るように、定義してもよい(しかし、説明を容易にするために、図1では分離して示す)。さらに後述するように、変換テーブル情報を共有するいくつかの実施形態では、特権を変更する場合などのように特定のページのレベルが上がった場合に、現時点では信頼できない可能性のある変換ページテーブルを更新するために、テーブルの再ウォークが必要となり得る。他の実施形態では、所望に応じて、IOMMU26とMMU14との間で変換テーブルを共有しなくてもよい。
通常、I/O装置22は、メモリ20内のメモリ位置にアクセスするために、メモリ読み出しおよび書き込み要求などのメモリ要求を発行し、一部のケースでは変換要求を発行するように構成され得る。メモリ要求は、例えば、ダイレクトメモリアクセス(DMA)読み出し動作または書き込み動作の一部であってもよい。DMA動作は、プロセッサ12によって実行されるソフトウェアによって開始され、DMA動作を直接または間接的に実行するようにI/O装置22をプログラムしてもよい。プロセッサ上で実行するソフトウェアが実行しているアドレス空間によっては、メモリ20にアクセスするために、当該アドレス空間に対応するアドレスをI/O装置22に提供してもよい。例えば、プロセッサ12上で実行中のゲストアプリケーション(例えばApp102)が、GVAをI/O装置22に提供してもよく、一方で、プロセッサ12上で実行中のゲストOS(例えばOS104)が、GPAをI/O装置22に提供してもよい。何れの場合も、I/O装置22がメモリアクセスを要求する場合には、メモリにアクセスするために、IOMMU26によってゲストアドレスを対応するSPAに変換してもよく、アクセスのために、システム物理アドレスをメモリコントローラ18に提供してもよい。すなわち、IOMMU26は、I/O装置22によって発せられたメモリ要求を修正して、要求内の受信したアドレスをSPAに変更(すなわち、変換)してもよく、メモリ20にアクセスするために、メモリ要求をメモリコントローラ18に転送してもよい。
種々の実施形態では、IOMMU26は、I/O装置から受信するアドレスのタイプによって、1レベル変換、2レベル変換または無変換を提供してもよい。より具体的には、IOMMU26は、1レベルのネストされた変換、または、2レベルのゲスト変換を実行してもよい。すなわち、IOMMU26は、GPAからSPAへの変換(1レベル)と、GVAからSPAへの変換(2レベル)と、の両方を提供してもよい。よって、上述したように、ゲストアプリケーション102は、メモリアクセスを要求する場合にGVAアドレスをI/O装置22に直接提供し、それによって、従来のVMMの遮断および変換を不要にしてもよい。この機能は、例えば、オフロード計算、ユーザレベルのI/OおよびI/O装置の加速などの高度な計算アーキテクチャが、仮想化システムでよりシームレスに使用されるのを可能にしうる。1レベル変換、2レベル変換または無変換について記載しているが、他の実施形態では、レベルを追加したアドレス空間を使用してもよいと考えられる。そのような実施形態では、追加レベルの変換(すなわち、複数レベルの変換)は、追加のアドレス空間に適応するように、IOMMU26により実行されてもよい。
詳細に後述するように、IOMMU26は、所定の要求においてどのタイプのアドレスを受信しているか認識する手段を有する。従って、I/O装置22がPCIエクスプレス(PCIe)相互接続などの標準の周辺バスを介してIOMMU26に接続されている実施形態では、例えば、プロセスアドレス空間識別子(PASID)は、トランザクション層プロトコル(TLP)プレフィックスを用いてIOMMU26へ送信されてもよい。
IOMMU26は、メモリのアドレスとI/O装置22からの変換要求とを変換するために、例えばメモリ20に記憶された1つ以上のセットのI/O変換テーブル36などのように、いくつかのデータ構造を使用してもよい。通常、変換テーブル36は、1つのタイプのアドレスから他のタイプのアドレスへ変換するのに使用可能な変換データのテーブルであってもよい。変換テーブル36は、任意の方法で変換データを記憶し得る。例えば、1つの実施形態では、I/O変換テーブル36は、x86およびAMD64(商標)命令セットアーキテクチャで定義されたページテーブルと同様のページテーブルを有してもよい。変換レベルによって、ゲスト仮想アドレスビットまたはゲスト物理アドレスの種々のサブセットが、テーブル36のインデックスレベルに用いられてもよく、各レベルは、変換の終了(すなわち、変換に関する実際のページ番号の記憶)であってもよいし、(他のセットのアドレスビットで索引付けされた)他のテーブルを指してもよい。ページは、変換の単位であってもよい(すなわち仮想ページ内のそれぞれのアドレスが同一の物理ページに変換する)。ページは、例えば、4キロバイトから、メガバイトまたはギガバイトにまで及ぶ様々なサイズを有してもよい。
また、I/O変換テーブル36は、(例えば、装置識別子によって)I/O装置をページテーブルのセットにマッピングするデバイステーブル(例えば、図2に示す)を有してもよい。装置識別子(ID)は、様々な方法で定義されてもよく、装置が取り付けられた周辺の相互接続によって決められてもよい。例えば、周辺構成機器相互接続(PCI)装置は、バス番号、デバイス番号および機能番号(BDF(登録商標))からデバイスIDを形成してもよい。HyperTransport(商標)(HT)装置は、バス番号およびユニットIDを使用してデバイスIDを形成してもよい。さらに後述するように、デバイステーブルは、デバイスIDによって索引付けられた複数のエントリを有してもよく、各エントリは、対応するデバイスIDを有する装置によって使用されるページテーブルのセットへのポインタを有してもよい。また、I/O装置22がプロセスに直接割り当てられた状況、または、I/O装置22がユーザプロセスと同一のアドレス空間内で計算を実行し得る状況では、メモリの分離保護を強化するために、過程アドレス空間がIOMMU26によって識別および提供される。いくつかの実施形態では、デバイステーブルは、装置の割り込みを再マッピングするために、(例えば図2に示す)割り込み再マッピングテーブルへのポインタをさらに有してもよい。よって、一般には、GVAまたはGPAからSPAへの変換が、1つ以上の変換テーブル36内の1つ以上のエントリ内に記憶されてもよく、いくつかのエントリは、他の変換と共有されてもよい。エントリからエントリへテーブルを横断または「ウォーク」することは、仮想アドレスに関する変換を識別する一部であってよい。1つの実施形態では、変換テーブル36は、上記の割り込み再マッピングテーブルを有してもよい。
特に、図1に示すIOMMU26は、所定のメモリ要求を変換するためにI/O変換テーブル36を検索するテーブルウォーカ28を有してもよい。テーブルウォーカ28は、メモリ要求(例えば、変換テーブル36から変換データを読み出すためのメモリ読み出し要求)を生成してもよい。変換テーブルの読み出しは、図1の点線の矢印38,40で示されている。
より迅速な変換を促進するために、IOMMU26は、いくつかの変換データをキャッシュしてもよい。例えば、キャッシュ30は、TLB(またはIOTLB)と同様の形態のキャッシュであってよく、以前の変換の結果や、システム物理ページ番号へのゲスト仮想ページ番号およびゲスト物理ページ番号のマッピングや、対応する変換データをキャッシュする。所定のメモリ要求に対する変換がキャッシュ30内で検出されない場合には、テーブルウォーカ28が起動され得る。種々の実施形態では、テーブルウォーカ28は、ハードウェア内、または、マイクロコントローラもしくは他のプロセッサおよび対応する実行可能コード(例えば、IOMMU26内の読み出し専用メモリ(ROM))内で実行されてもよい。また、他のキャッシュは、ページテーブルもしくはその一部、および/または、デバイステーブルもしくはその一部をキャッシュするように、キャッシュ30の一部として含まれてもよい。従って、IOMMU26は、メモリ20に記憶された変換データから読み出されまたは取得された変換データを記憶する、1つ以上のメモリを有してもよい。
図2は、いくつかの実施形態によるIOMMUアーキテクチャのさらなる詳細を示す図である。例えばキャッシュ30は、I/Oページテーブル252、デバイステーブル228および割り込み再マッピングテーブル(IRT)226のキャッシュバージョンを有し得る。また、キャッシュ30は、GCR3テーブル242のキャッシュバージョンを有し得る。制御レジスタ32は、デバイステーブルベースレジスタ(DTBR)204と、システム管理割り込み(SMI)フィルタレジスタ206と、ハードウェアエラーレジスタ208と、イベントカウンタレジスタ212と、コマンドバッファベースレジスタ(CBBR)214と、イベントログベースレジスタ(ELBR)216と、ページ要求ログベースレジスタ(PRLBR)218と、を有し得る。キャッシュ30は、IOMMU26の内部に示されているが、実施形態の範囲は係る位置に限定されない。また、実施形態では、IOMMU26の外部に設置されたキャッシュ30を含む。I/O装置の接続時にIOMMU210が検出されている場合には、ソフトウェアは、必要な制御およびデータ構造を確立するプロセスを開始する。例えば、IOMMU210が設定された場合、IOMMU26は、ゲスト仮想高度プログラム可能な割り込みコントローラ(APIC)ログ202と、デバイステーブルベースレジスタ(DTBR)204と、システム管理割り込み(SMI)フィルタレジスタ206と、ハードウェアエラーレジスタ208と、イベントカウンタレジスタ212と、コマンドバッファベースレジスタ(CBBR)214と、イベントログベースレジスタ(ELBR)216と、ページ要求ログベースレジスタ(PRLBR)218と、を有し得る。さらに、初期の設定の間、IOMMU210は、適切なゲストページテーブルのベースポインタレジスタテーブルを選択するためのオペレータ(operator)を有し得る。ベースポインタレジスタテーブルは、例えば、現在のタスクに関するページディレクトリおよびページテーブルの両方を取り付けることによって仮想アドレスから物理アドレスを変換するために、x86マイクロプロセッサプロセスによって用いられるコントロールレジスタ3(CR3)242であり得る。
1つの例では、ゲストCR3(GCR3)変更は、変換の新たなセットを確立することが可能であり、従って、プロセッサ12は、以前のコンテキストに関連するTLBエントリを自動的に無効にしてもよい。また、IOMMU210は、ページテーブルのウォークを実行する必要なしにその後の変換を行うのに用いられるアドレス変換をキャッシュするために1つ以上のTLB(図示せず)に関連付けられ得る。デバイステーブルからのアドレスは、IOMMU210に通信可能である。
IOMMU210は、データ構造が設定されると、DMA動作アクセス、割り込み再マッピング、アドレス変換などの制御を開始してもよい。
IOMMU210は、2レベル変換がサポートされるのを示すように、メモリ管理I/O(MMIO)を使用可能である。2レベル変換がサポートされると決定された場合、2レベル変換は、適切なデバイステーブルエントリ(DTE)をプログラムすることによって始動される。ネストされたページングでは、DTEに関連するトランザクションは、ページテーブルルートポインタを有してもよく、ページテーブルルートポインタは、メモリ220内のI/Oページテーブル252についてのデータ構造のルートを指す。
いくつかの実施形態では、IOMMU210は、ゲスト仮想高度プログラム可能な割り込みコントローラ(APIC)構成224を有する。他の実施形態では、仮想化されたゲストAPICをサポートするように設計されたアーキテクチャ機能を有するIOMMUを含む。
また、システム200はメモリ220を有し、メモリ220は追加のメモリブロック(図示せず)を有する。メモリコントローラ(図示せず)は、分離したチップ上に存在することが可能であり、または、プロセッサのシリコンに一体化され得る。メモリ220は、DMAおよびプロセッサアクティビティがメモリコントローラと通信するように構成されている。
1つの例では、メモリ220は、I/Oページテーブル252と、デバイステーブル228と、割り込み再マッピングテーブル(IRT)226と、コマンドバッファ232と、イベントログ234と、ハイパーバイザなどのホスト変換モジュールと、を有する。また、I/Oページテーブル252、デバイステーブル228、割り込み再マッピングテーブル(IRT)226のキャッシュされたバージョンは、IOMMU210に含まれている。いくつかの実施形態では、GCR3テーブル242は、IOMMU210内にキャッシュされることが可能であり、一方、仮想APIC224もキャッシュされてもよい。また、メモリ220は、例えばゲストOS1およびゲストOS2のように、同時に実行する1つ以上のゲストOSを有することが可能である。ハイパーバイザと、ゲストOS1およびゲストOS2とは、システムを仮想化するように動作するソフトウェア構造である。
IOMMU210、ハードウェア装置が、従来のアプローチではハイパーバイザがしなければならない動作を行うことを許可されるので、ゲストOSは、システム200のI/O装置に対してより直接に接続されている。
さらに、IOMMU210およびメモリ220は、DTBR204がデバイステーブル228の開始インデックスを指すように初期化されてもよい。さらに、CBBR214は、コマンドバッファ232に記憶されたコマンドをIOMMU210が読み出しおよび実行可能となるように、コマンドバッファ232の開始インデックスに関連付けられている。ELBR216は、イベントログ234の開始インデックスを指す。PRLBR218は、周辺ページサービス要求(PPSR)テーブル236の開始インデックスを指す。
IOMMU210は、IOMMU210と、CPUなどのシステムプロセッサとの間のコマンドおよびステータス情報の交換のために、メモリベースのキューを使用可能である。コマンドキューは、図2のコマンドバッファ232によって表わされている。コマンドバッファ232およびイベントログ234は、アクティブなIOMMU210の各々によって実装される。また、各IOMMU210は、I/Oページサービス要求キューを実装してもよい。
1つの例では、IOMMU210は、有効になると、下流の装置から到着する要求(例えば、HyperTransport(商標)リンクまたはPCIベースの通信を用いて通信してもよい)を傍受し、要求のパーミッションチェックおよびアドレス変換を実行し、変換されたバージョンを、HyperTransport(商標)リンクを介して上流に、メモリ220のスペースへ送信する。他の要求は、変更されることなく通過してもよい。
IOMMU210は、メモリ220のテーブルから読み出し、パーミッションチェック、割り込み再マッピングおよびアドレス変換を実行することが可能である。デッドロックがない動作を保証するために、デバイステーブル228、I/Oページテーブル252および割り込み再マッピングテーブル226に対するIOMMU210によるメモリアクセスは、等時性の仮想チャネルを使用可能であり、メモリ220内のアドレスを単に参照してもよい。IOMMU210により生じたコマンドバッファ232、イベントログエントリ234および任意の要求キューエントリ(図示せず)への他のメモリ読み出しは、通常の仮想チャネルを使用可能である。
IOMMU210が扱う全ての任意の装置要求について全体のテーブルルックアップ過程を実行する場合には、システム性能が実質的に低下する可能性がある。従って、IOMMU210の実装は、IOMMU210のメモリ内のテーブルの内容についての内部のキャッシュを保持すると予想される。動作中、IOMMU210は、IOMMU210によりキャッシュされたテーブルエントリを更新する場合、システムソフトウェアを使用して適切な無効化コマンドを送信可能である。
1つの例では、IOMMU210は、通常の仮想チャネルを使用する可能性を伴って、メモリ220内のイベントログ234へ書き込む。IOMMU210は、任意に、メモリ220内の周辺ページサービス要求キュー236に書き込み可能である。また、メモリ内の周辺ページサービス要求キュー236への書き込みは、通常の仮想チャネルを使用可能である。
1つの例では、IOMMU210は、周辺ページ要求にサービスするためにメモリ内の要求キューを提供し、一方で、システムプロセッサCPUは、故障メカニズムを使用する。何れかのI/O装置は、IOMMU210からの変換を要求でき、IOMMU210は、正常変換またはページフォルトで応答してもよい。
また、ホストOSは、I/O装置が開始したアクセスについて変換を実行してもよい。IOMMU210がI/O装置によりアクセスされたメモリアドレスを変換する一方で、ホストOSは、所望の変換を特定するI/Oページテーブルを構成することによって、自身のページテーブルを設定してもよい。ホストOSは、新たに構成されたI/Oページテーブルを指すエントリをデバイステーブル内に生成してもよく、新たに更新されたデバイスエントリをIOMMUに通知可能である。この時点で、(例えば、グラフィックスまたは他のI/O装置からの)対応するIOMMUのI/OテーブルおよびホストOSのI/Oテーブルを、同一のテーブルにマッピングしてもよい。
ページ保護または変換上ホストOSが実行する任意の変更を、プロセッサI/OページテーブルおよびメモリI/Oページテーブルの両方で更新してもよい。
1つの例では、IOMMU210は、典型的なハイパーバイザにより従来実行された
I/Oタスクを実行するように構成されている。この構成は、ハイパーバイザが保護、分離、割り込み再マッピングおよびアドレス変換のために介入する必要をなくす。しかし、IOMMU210が処理不可能なページフォルトが起こる場合、IOMMU210は、解決のために、ハイパーバイザによる介入を要求する場合がある。しかし、矛盾が解決されると、IOMMU210は、再度のハイパーバイザの介入なしに元のタスクを続行可能である。
ハイパーバイザは、ゲストVM1およびゲストVM2を分離し隔離するために、ネストされた変換レイヤを使用可能である。I/O装置が何れかのVMのメモリスペースに含まれるように、I/O装置は、同時に実行中のゲストVMの何れかに直接割り当てられ得る。さらに、I/O装置22は、ハイパーバイザまたは他のVMに属するメモリまたは他のI/O装置を破損または検査できない。ゲストVM内には、カーネルアドレス空間およびいくつかのプロセス(ユーザ)アドレス空間が存在する。ゲストVMメモリの内容全体に比較的自由なアクセスをI/O装置が有するように、ネストされた変換情報を用いて、ゲスト変換レイヤを用いることなく、カーネル特権をI/O装置に与えることが可能である。
ユーザレベルの(プロセス)I/Oおよび高度の計算モデルを可能にするように、ゲスト変換レイヤは、ゲストプロセスおよびI/Oの分離および切り離しのために実行され得る。IOMMU210内のゲスト変換を用いて任意のI/O装置をゲストVM内のプロセスに直接割り当てることが可能であり、また、I/O装置は、ユーザプロセスと同一のアドレス空間で計算を実行可能である。適切な変換テーブルが使用されるように、プロセスアドレス空間は、IOMMU210に識別され得る。すなわち、各メモリトランザクションは、プロセスアドレス空間ID(PASID)でタグ付け可能である。より具体的には、1つの例のPASIDは、x86基準のゲストVM内のアプリケーションアドレス空間を識別するのに使用されてもよい。PASIDは、共有されたローカルメモリ内に常駐する並行したコンテキストを隔離するために、I/O装置上で使用可能である。
デバイスIDは、アドレス変換または割り込み再マッピング動作のためにネストされたマッピングテーブルを選択するように、IOMMU210によって使用可能である。アプリケーションアドレス空間を一意的に識別するために、PASIDおよびデバイスIDは共に使用される。
上述したように、安定性およびセキュリティ上の理由で、I/O装置22のアクセスを、当該I/O装置22について権限が与えられたメモリの一部にのみ限定することが望ましい。この普遍的な要望は、仮想化環境内でも同様によくあてはまる。仮想化環境では、ハイパーバイザは、ソフトウェアスタックの下部に(すなわち、ハードウェアの近くに)位置し、実際の物理ハードウェアを制御するのはハイパーバイザである。実際の物理ハードウェアの制御を通して、ハイパーバイザは、ハードウェアが実際に存在しない場合があるにもかかわらず、ハイパーバイザの上方のソフトウェアのピースに対するハードウェア専用のピースがあるという錯覚を生成する。従って、ハイパーバイザに基いて、それぞれのオペレーティングシステムが必要とされるハードウェアへの自身の所望のアクセスを有し、このため、それぞれのオペレーティングシステムが正常に動作するように見える。それぞれのオペレーティングシステムのハードウェア必要条件を満たすのに加え、ハイパーバイザは、ハードウェアの特定の部分をそれぞれのオペレーティングシステムから秘密にして隠す状態を維持することが可能である。よって、ハイパーバイザは、これらのオペレーティングシステムのそれぞれについて重ならないビューを保持することが可能である。
ゲストオペレーティングシステムとも呼ばれるオペレーティングシステムは、同一のデバイスドライバアクセスの懸念(すなわちセキュリティおよび安定性)を有するが、1つの重要な特質がある。その特質とは、ゲストオペレーティングシステムが直接のハードウェアアクセスまたは制御を有しないことである。むしろ上述したように、ハイパーバイザは、IOMMU210内のホストハードウェア変換の責任を有する。言い換えれば、ハイパーバイザは、ホストハードウェア変換情報を利用可能であるが、係る情報は、ゲストオペレーティングシステムには利用可能でない。結果として、仮想化環境では、ハードウェアアクセスを権限の与えられた領域に限定するために、ゲストオペレーティングシステムは、I/O装置およびI/Oデバイスドライバ周辺でファイアウォールを形成できない。
仮想化環境のI/O装置についてのファイアウォール構造の1つのアプローチは、仮想化技術を用いてIOMMU210のソフトウェアバージョンを生成することである。しかし、係るアプローチは、係るソフトウェア実行の著しいオーバーヘッドによって、受け入れられない低速の解決結果をもたらすであろう。ファイアウォールのソフトウェア実行の受け入れ難さにさらに加わるのは、ソフトウェアが単に介在不可能な特定のイベントがあることである。例えば、デバイスドライバが正しく機能しているが、装置自身が正常に機能しないかウイルスにより破損されているなどの想定では、ソフトウェアは介在不可能である。特に、ソフトウェアは、係る保護メカニズムを形成する制御メカニズムを単に有しないので、結果として生じるハードウェアアクセスを隔離することができない。
図1を再度参照すると、いくつかの実施形態において、ゲストOS104には、ゲストVM100内の仮想IOMMUについてハードウェアサポートが提供される。I/O装置22が権限の与えられたメモリにのみ読み出しおよび書き込み可能で、それによって任意の他のメモリを破損できないように、係るハードウェアアプローチは、ゲストVM100がI/O装置22周辺に所望のファイアウォールを設定することを可能にする。ハイパーバイザ106は、ゲストVM100を分離し隔離するために、通常、ネストされた変換レイヤを使用する。ゲストVM100に直接割り当てられたI/O装置22は、仮想マシンのメモリ空間に制限される。I/O装置22は、ハイパーバイザまたは他の仮想マシンに属するメモリまたは周辺装置を破損または検査するのが不可能である。ゲスト仮想マシン内には、カーネルアドレス空間およびいくつかのプロセス(ユーザ)アドレス空間が存在する。I/O装置がゲスト仮想マシンメモリの内容全体に比較的自由なアクセスを有するように、ネストされた変換情報を用いて、I/O装置には、通常、カーネル特権が与えられる。ユーザレベルの(プロセス)I/Oおよび高度の計算モデルを可能にするように、ゲストプロセスおよびI/Oの分離および切り離しのためにゲスト変換レイヤが導入される。仮想IOMMU210内のゲスト変換を用いて、I/O装置22をゲスト仮想マシン内のプロセスに直接割り当て可能であり、また、GPUは、ユーザプロセスと同一のアドレス空間で計算を実行可能である。
いくつかの実施形態では、仮想IOMMUは、ゲストページテーブル254と、ホストページテーブル256と、GCR3テーブル242と、を含むデータ構造を使用する。仮想IOMMUは、I/O装置22からメモリ要求を受信する。係るメモリ要求は、I/O装置22に関連するゲスト仮想アドレスを含む。ゲスト仮想アドレスは、ゲストページテーブル254の使用を通してゲスト物理アドレスに変換される。ゲストOS104は、ゲストページテーブル254を維持する。ゲスト物理アドレスは、ホストページテーブル256の使用を通してシステム物理アドレスに変換される。ハイパーバイザ106は、ホストページテーブル256を維持する。
よって、ゲストページテーブル254は、I/O装置22のメモリ要求において、I/O装置22による正しいゲスト仮想アドレスの使用を強制または検証する。特に、ゲストページテーブル254は、ゲスト仮想アドレスがI/O装置22に関連するゲストOS104によって権限が与えられたアドレスの有効範囲内にあることを保証する。ゲスト仮想アドレスが、I/O装置22に関連するゲストOS104によって権限が与えられたアドレスの有効範囲内にない場合には、メモリ要求は、ゲストページテーブル254によって、誤ったゲスト仮想アドレスにアクセスするのを阻止される。
ゲストページテーブル254は、ハードウェア内で仮想IOMMUの要求速度をサポートするよう実行され、ハードウェア内でファイアウォールを強制する。GCR3テーブル242は、デバイステーブル228に記憶された仮想デバイスIDパラメータを用いて索引付けられている。仮想デバイスIDパラメータは、I/O装置22に関連付けられている。ゲストページテーブル254は、仮想IOMMUのGCR3テーブル242内の索引付けられたエントリに基いてアクセスされる。
いくつかの実施形態では、ゲストページテーブル254およびホストページテーブル256のフォーマットは同一であり、デバイステーブル228内のコントロールビットは、仮想IOMMU内のゲストページテーブル254の異なる使用間で区別するのに使用される。
仮想IOMMUのこの実施形態では、構成部分の仮想化は、ハードウェアアプローチおよびソフトウェアアプローチの両方を用いて実現される。上述したように、ゲストページテーブル254は、満足できる時間フレームでアドレス変換が実行されるのを確実にするように、ハードウェアを用いて実現される。仮想IOMMUの他の構成部分(例えば、ホストページテーブル256と、デバイステーブル228と、制御、構成およびエラーレポートレジスタ204,206,208,212,214,216,218と、ログ202,222,234,236と、割り込み再マッピングテーブル226)の仮想化は、従来のソフトウェアアプローチを用いて達成される。これらの特定の構成要素は、特に性能の影響を受けず、従って、ソフトウェア仮想化の使用に潜在するオーバーヘッドは、仮想IOMMUの実行において困難を全く示さない。
GCR3テーブル242の変更に関して、このテーブルは、仮想GCR3テーブルとなるように再利用される。従来の構成において、GCR3テーブル242は、GPGPU計算(すなわち、グラフィック処理ユニット上の汎用計算)をサポートするように設計される。従来の構成では、GCR3テーブル242は、PASID(プロセスアドレス空間ID)により索引付けられる。いくつかの実施形態では、GCR3テーブル242は、仮想デバイスIDにより索引付けられる。係る索引付け処置は、デバイステーブル228内に仮想デバイスIDを配置することにより実現可能である。また、当業者が理解し得るように、他の索引付けアプローチも使用可能である。
図3は、いくつかの実施形態による、I/O装置22から発したメモリ要求の周辺にファイアウォールを設ける方法のフローチャートである。図示される動作は異なる順序で実行されてもよく、場合によっては、全ての動作が必要とされない場合があることを理解すべきである。この方法は、機械可読な媒体に記憶された命令を読み出しおよび実行する1つ以上のプロセッサによって実行されてもよいことをさらに理解すべきである。
プロセスは、ステップ310で開始する。ステップ310では、仮想IOMMUは、入出力(I/O)装置によるメモリ要求を受信する。メモリ要求は、ゲスト仮想アドレスを含む。いくつかの実施形態では、仮想IOMMUは、IOMMU210の仮想実行である。いくつかの実施形態では、アドレス変換情報は、I/Oページテーブルエントリ、デバイステーブルエントリおよび割り込み再マッピングテーブル情報のうち1つ以上を含む。
ステップ320では、仮想IOMMU(例えば、IOMMU210の仮想実行)内のゲストページテーブル(例えばゲストページテーブル254)は、ゲスト仮想アドレスをゲスト物理アドレスに変換する。ゲストページテーブル254は、ゲストOS(例えば、OS104)により維持される。
ステップ330では、仮想IOMMU210内のホストページテーブル(例えば、ホストページテーブル256)は、ゲスト物理アドレスをシステム物理アドレスに変換する。ホストページテーブル256は、ハイパーバイザ(例えば、ハイパーバイザ106)により維持される。
ステップ340では、ゲスト仮想アドレスは、I/O装置(例えば、I/O装置22)についてゲストOS104により権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、検証される。
ステップ350では、ゲスト仮想アドレスがI/O装置22についてゲストOS104により権限が与えられたアドレスの有効範囲内でない場合には、仮想マシン上のメモリ要求の実行を阻止することが可能である。
ステップ360では、方法300が終了する。
記載された実施形態、および、「いくつかの実施形態」との明細書内の記述は、記載された実施形態が、特定の機能、構造、特性を有し得ることを示しているが、全ての実施形態が、その特定の機能、構造、特性を必ずしも有していない場合がある。また、係る表現は、必ずしも同一の実施形態に言及していない。さらに、特定の機能、構造または特性が、特定の実施形態と関連して記載された場合には、明確に記載されたか否かにかかわらず、他の実施形態と関連して係る機能、構造または特性をもたらすことは、当業者の知識の範囲内であることが理解される。
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア、または、それらの任意の組み合わせで実施されてもよい。本発明の実施形態は、機械可読な媒体に記憶された命令として実行されてもよく、命令は、1つ以上のプロセッサによって読み出しおよび実行されてもよい。例えば、仮想IOMMUを、機械可読な媒体に記憶された命令によりエミュレートしてもよく、命令は、1つ以上のプロセッサによって読み出しおよび実行されてもよい。機械可読な媒体は、機械(例えば、計算装置)により読み出し可能な形態の情報を記憶または送信するあらゆるメカニズムを有してもよい。例えば、機械可読な媒体は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置、電気、光、音、または、他の形態の伝搬された信号(例えば、搬送波、赤外線信号、デジタル信号など)などを含んでもよい。また、ファームウェア、ソフトウェア、ルーチン、命令は、特定のアクションを実行するものとして本明細書に記載されている場合がある。しかし、係る記載は、単に便宜上のものであり、係るアクションは、計算装置、プロセッサ、コントローラ、または、ファームウェア、ソフトウェア、ルーチン、命令などを実行する他の装置から実際にもたらされることを理解すべきである。
特定の機能の実行およびその関係を示す機能構造ブロックを活用して、実施形態を説明した。これらの機能構造ブロックの境界は、記載の簡便性のために本明細書内で独断で定義した。特定の機能およびその関係が適切に実行される限り、別の境界を定義することが可能である。
当業者の技能範囲内の知識を加えることによって、第三者が、発明の主題の全般的な概念から逸脱することなく、過度の実験なしに種々の適用そのような特定の実施形態を容易に変更および/または適合するように、特定の実施形態の上記の記載は、発明の主題の全般的な性質を十分に公開している。従って、係る適合および変更は、本明細書に示された教示および手引きに基き、開示された実施形態の意味および均等物の範囲内にあると意図される。本明細書の語句または用語が教示および手引きに照らして当業者に解釈されるように、本明細書内の用語または語句は、記載を目的としたものであって、限定するものではないと理解すべきである。

Claims (11)

  1. 仮想マシン(VM)内の仮想I/Oメモリ管理ユニット(IOMMU)が、入出力(I/O)装置によるメモリ要求を受信することであって、前記メモリ要求はゲスト仮想アドレスを含み、前記I/O装置は前記VMに割り当てられている、ことと、
    前記仮想IOMMUが、ゲストページテーブルを用いて前記ゲスト仮想アドレスをゲスト物理アドレスに変換することであって、前記ゲストページテーブルはゲストOS(オペレーティングシステム)によって維持されており、前記仮想IOMMUのデバイステーブル内の仮想I/O装置の識別子に関連するエントリに基づいてアクセスされ、前記ゲストページテーブルはハードウェアの形態で実装されており、前記デバイステーブルはソフトウェアを用いて仮想化されている、ことと、
    前記仮想IOMMUが、ホストページテーブルを用いて前記ゲスト物理アドレスをシステム物理アドレスに変換することであって、前記ホストページテーブルはハイパーバイザによって維持されている、ことと、
    前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記仮想IOMMUが、前記ゲストページテーブルを用いて前記ゲスト仮想アドレスを検証することと、
    前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内でない場合には、前記メモリ要求を、前記ゲスト仮想アドレスのアクセスから除外することと、
    を含む、方法。
  2. 前記I/O装置に関連する仮想デバイスIDによって索引付けられたゼネラルコントロールレジスタ(GCR3)テーブル内のエントリを識別することであって、前記仮想デバイスIDは前記仮想IOMMU内のデバイステーブルに記憶されている、ことをさらに含む、請求項1に記載の方法。
  3. 前記仮想IOMMUに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも1つを、ソフトウェアを用いて仮想化することをさらに含む、請求項1に記載の方法。
  4. 前記ホストページテーブルおよび前記ゲストページテーブルに同一のフォーマットを使用することと、
    仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、デバイステーブル内のコントロールビットを使用することと、をさらに含む、請求項1に記載の方法。
  5. 前記ハイパーバイザが、仮想マシンを管理することであって、前記仮想マシンは前記ゲストOSの動作をサポートするように構成されていることをさらに含む、請求項1に記載の方法。
  6. 入出力(I/O)装置により送信されたメモリ要求を受信するように構成された、仮想マシン(VM)内の仮想I/Oメモリ管理ユニット(IOMMU)を備える装置であって、
    前記メモリ要求はゲスト仮想アドレスを含み、
    前記I/O装置は前記VMに直接割り当てられており
    前記仮想IOMMUは、
    前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストOS(オペレーティングシステム)によって維持され、前記仮想IOMMUのデバイステーブル内の仮想I/O装置の識別子に関連する索引付けられたエントリに基づいてアクセスされ、ハードウェアの形態で実装されるゲストページテーブルと、
    前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
    を含むデータ構造を備え、
    前記デバイステーブルはソフトウェアを用いて仮想化されており、
    前記仮想IOMMUは、前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記ゲストページテーブルを用いて前記ゲスト仮想アドレスを検証するように構成されており、
    前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内でない場合に、前記ゲストOSは、前記メモリ要求の実行を除外する、
    装置。
  7. 前記I/O装置に関連する仮想デバイスIDによって索引付けられるように構成されたGCR3テーブルをさらに備え、前記仮想デバイスIDは前記仮想IOMMU内のデバイステーブルに記憶されている、請求項に記載の装置。
  8. 前記仮想IOMMUに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも1つは、ソフトウェアを用いて仮想化されている、請求項に記載の装置。
  9. 前記ホストページテーブルおよび前記ゲストページテーブルは同一のフォーマットを使用しており、
    デバイステーブルは、仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、コントロールビットを使用する、請求項に記載の装置。
  10. 前記ゲストOSの動作をサポートするように構成された仮想マシンをさらに備え、前記仮想マシンは前記ハイパーバイザによって管理される、請求項に記載の装置。
  11. 記憶された命令を有するコンピュータ可読記憶装置であって、計算装置によって前記命令が実行されると、前記計算装置に、
    入出力(I/O)装置が送信したメモリ要求を受信するように構成された、仮想マシン(VM)内の仮想I/Oメモリ管理ユニット(IOMMU)を備える装置であって、
    前記メモリ要求はゲスト仮想アドレスを含み、
    前記I/O装置は前記VMに直接割り当てられており
    前記仮想IOMMUは、
    前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストOSによって維持され、前記仮想IOMMUのデバイステーブル内の仮想I/O装置の識別子に関連する索引付けられたエントリに基づいてアクセスされ、ハードウェアの形態で実装されるゲストページテーブルと、
    前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
    を含むデータ構造を備え、
    前記デバイステーブルはソフトウェアを用いて仮想化されており、
    前記仮想IOMMUは、前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記ゲストページテーブルを用いて前記ゲスト仮想アドレスを検証するように構成されており、
    前記ゲスト仮想アドレスが、前記I/O装置について前記ゲストOSによって権限が与えられたアドレスの有効範囲内でない場合に、前記ゲストOSは、前記メモリ要求の実行を除外する、装置をエミュレートさせる、
    コンピュータ可読記憶装置。
JP2015529940A 2012-08-29 2013-08-27 ゲスト仮想マシン内の仮想入出力メモリ管理ユニット Active JP6110946B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/597,575 2012-08-29
US13/597,575 US9424199B2 (en) 2012-08-29 2012-08-29 Virtual input/output memory management unit within a guest virtual machine
PCT/US2013/056856 WO2014036004A1 (en) 2012-08-29 2013-08-27 Virtual input/output memory management unit wihtin a guest virtual machine

Publications (3)

Publication Number Publication Date
JP2015526829A JP2015526829A (ja) 2015-09-10
JP2015526829A5 JP2015526829A5 (ja) 2016-10-20
JP6110946B2 true JP6110946B2 (ja) 2017-04-05

Family

ID=49213080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015529940A Active JP6110946B2 (ja) 2012-08-29 2013-08-27 ゲスト仮想マシン内の仮想入出力メモリ管理ユニット

Country Status (7)

Country Link
US (1) US9424199B2 (ja)
EP (1) EP2891067B1 (ja)
JP (1) JP6110946B2 (ja)
KR (1) KR101950000B1 (ja)
CN (1) CN104685479B (ja)
IN (1) IN2015DN01637A (ja)
WO (1) WO2014036004A1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182349A (zh) * 2013-05-27 2014-12-03 联想(北京)有限公司 一种信息处理方法及电子设备
US9547603B2 (en) * 2013-08-28 2017-01-17 Wisconsin Alumni Research Foundation I/O memory management unit providing self invalidated mapping
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
US9135437B1 (en) 2014-03-24 2015-09-15 Amazon Technologies, Inc. Hypervisor enforcement of cryptographic policy
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9703726B2 (en) * 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
US20160077981A1 (en) * 2014-09-12 2016-03-17 Advanced Micro Devices, Inc. Method and Apparatus for Efficient User-Level IO in a Virtualized System
EP3209282A4 (en) 2014-10-20 2018-05-23 Pharmaceutical Manufacturing Research Services, Inc. Extended release abuse deterrent liquid fill dosage form
US9720846B2 (en) 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US9772962B2 (en) 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10216533B2 (en) 2015-10-01 2019-02-26 Altera Corporation Efficient virtual I/O address translation
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
US10509729B2 (en) * 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10073710B2 (en) 2016-02-25 2018-09-11 Red Hat Israel, Ltd. Host-driven application memory protection for virtual machines
US10671419B2 (en) 2016-02-29 2020-06-02 Red Hat Israel, Ltd. Multiple input-output memory management units with fine grained device scopes for virtual machines
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US11150928B2 (en) * 2016-06-08 2021-10-19 Red Hat Israel, Ltd. Hypervisor translation bypass
CN114218133A (zh) 2016-06-15 2022-03-22 华为技术有限公司 一种数据传输方法及装置
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10176122B2 (en) 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US10013199B2 (en) 2016-11-15 2018-07-03 Red Hat Israel, Ltd. Translation bypass by host IOMMU for systems with virtual IOMMU
US10013388B1 (en) * 2016-12-19 2018-07-03 Amazon Technologies, Inc. Dynamic peer-to-peer configuration
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
KR101716715B1 (ko) * 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN106991057B (zh) * 2017-04-11 2020-09-11 深信服科技股份有限公司 一种共享显卡虚拟化中内存的调用方法及虚拟化平台
CN107193759A (zh) * 2017-04-18 2017-09-22 上海交通大学 设备内存管理单元的虚拟化方法
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10599461B2 (en) * 2017-09-19 2020-03-24 Microsoft Technology Licensing, Llc Nested hypervisor memory virtualization
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
WO2019079960A1 (en) * 2017-10-24 2019-05-02 Intel Corporation MATERIAL ASSISTED VIRTUAL SWITCH
US11698866B2 (en) * 2017-12-29 2023-07-11 Intel Corporation Unified address translation for virtualization of input/output devices
US11036645B2 (en) * 2018-06-26 2021-06-15 Red Hat, Inc. Secure userspace networking for guests
US10853271B2 (en) * 2018-08-03 2020-12-01 Arm Limited System architecture with query based address translation for access validation
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10809929B2 (en) 2018-11-30 2020-10-20 International Business Machines Corporation Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems
KR102634986B1 (ko) * 2019-01-08 2024-02-07 한국전자통신연구원 가상화 환경에서의 프로그램 전송 장치 및 방법 그리고 이를 포함하는 시스템
CN113168380B (zh) * 2019-01-29 2022-09-09 华为技术有限公司 电子设备和地址访问方法
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11036649B2 (en) 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning
US11494211B2 (en) * 2019-04-22 2022-11-08 Advanced Micro Devices, Inc. Domain identifier and device identifier translation by an input-output memory management unit
US10909053B2 (en) * 2019-05-27 2021-02-02 Advanced Micro Devices, Inc. Providing copies of input-output memory management unit registers to guest operating systems
US20200387326A1 (en) * 2019-06-10 2020-12-10 Advanced Micro Devices, Inc. Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit
US11176056B2 (en) 2019-06-28 2021-11-16 International Business Machines Corporation Private space control within a common address space
US10891238B1 (en) * 2019-06-28 2021-01-12 International Business Machines Corporation Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context
US10970224B2 (en) 2019-06-28 2021-04-06 International Business Machines Corporation Operational context subspaces
US11074195B2 (en) 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
US11042495B2 (en) * 2019-09-20 2021-06-22 Advanced Micro Devices, Inc. Providing interrupts from an input-output memory management unit to guest operating systems
US11301402B2 (en) 2020-04-30 2022-04-12 Red Hat, Inc. Non-interrupting portable page request interface
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN112612574B (zh) * 2020-12-18 2023-09-26 海光信息技术股份有限公司 输入输出设备的内存访问管理单元、系统及地址转换方法
EP4268085A4 (en) * 2020-12-22 2024-04-10 INTEL Corporation PROCESSOR CIRCUITRY TO EXECUTE AN INPUT-OUTPUT TRANSLATION VIRTUAL ADDRESS INSTRUCTION
US12020053B2 (en) 2021-03-29 2024-06-25 Red Hat, Inc. Exposing untrusted devices to virtual machines
US11860792B2 (en) 2021-05-04 2024-01-02 Red Hat, Inc. Memory access handling for peripheral component interconnect devices
US11900142B2 (en) 2021-06-16 2024-02-13 Red Hat, Inc. Improving memory access handling for nested virtual machines
CN113868174B (zh) * 2021-10-11 2024-02-06 摩尔线程智能科技(北京)有限责任公司 验证平台搭建方法、装置及存储介质
CN115460172B (zh) * 2022-08-22 2023-12-05 曙光信息产业股份有限公司 设备地址分配方法、装置、计算机设备、介质及程序产品

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US8078827B2 (en) 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
JP5476764B2 (ja) * 2009-03-30 2014-04-23 富士通株式会社 サーバ装置、計算機システム、プログラム及び仮想計算機移動方法
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
JP5601516B2 (ja) * 2010-10-06 2014-10-08 日本電気株式会社 コンピュータ装置及びメモリリソース割当て方法
US20120110575A1 (en) 2010-10-29 2012-05-03 Unisys Corp. Secure partitioning with shared input/output
US20120246381A1 (en) 2010-12-14 2012-09-27 Andy Kegel Input Output Memory Management Unit (IOMMU) Two-Layer Addressing

Also Published As

Publication number Publication date
US20140068137A1 (en) 2014-03-06
US9424199B2 (en) 2016-08-23
CN104685479A (zh) 2015-06-03
CN104685479B (zh) 2018-04-17
EP2891067B1 (en) 2019-02-27
IN2015DN01637A (ja) 2015-07-03
KR101950000B1 (ko) 2019-02-19
WO2014036004A1 (en) 2014-03-06
JP2015526829A (ja) 2015-09-10
KR20150048173A (ko) 2015-05-06
EP2891067A1 (en) 2015-07-08

Similar Documents

Publication Publication Date Title
JP6110946B2 (ja) ゲスト仮想マシン内の仮想入出力メモリ管理ユニット
US7613898B2 (en) Virtualizing an IOMMU
US7873770B2 (en) Filtering and remapping interrupts
US7849287B2 (en) Efficiently controlling special memory mapped system accesses
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
EP2457166B1 (en) I/o memory management unit including multilevel address translation for i/o and computation offload
US9535849B2 (en) IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US20130145055A1 (en) Peripheral Memory Management
US20130262736A1 (en) Memory types for caching policies
US20130145051A1 (en) Direct Device Assignment
CA2800632C (en) Enable/disable adapters of a computing environment
US9679143B2 (en) Updated IO memory management unit identity settings for DMA remapping
US9152571B2 (en) All invalidate approach for memory management units
US20160077981A1 (en) Method and Apparatus for Efficient User-Level IO in a Virtualized System
KR20230162982A (ko) 페이지 마이그레이션을 제공하기 위한 시스템 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160829

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160829

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160829

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170310

R150 Certificate of patent or registration of utility model

Ref document number: 6110946

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250