JP2015500524A - 効率的なメモリ及びリソース管理 - Google Patents

効率的なメモリ及びリソース管理 Download PDF

Info

Publication number
JP2015500524A
JP2015500524A JP2014544777A JP2014544777A JP2015500524A JP 2015500524 A JP2015500524 A JP 2015500524A JP 2014544777 A JP2014544777 A JP 2014544777A JP 2014544777 A JP2014544777 A JP 2014544777A JP 2015500524 A JP2015500524 A JP 2015500524A
Authority
JP
Japan
Prior art keywords
memory
iommu
data
pointer
page
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.)
Granted
Application number
JP2014544777A
Other languages
English (en)
Other versions
JP5870206B2 (ja
JP2015500524A5 (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 JP2015500524A publication Critical patent/JP2015500524A/ja
Publication of JP2015500524A5 publication Critical patent/JP2015500524A5/ja
Application granted granted Critical
Publication of JP5870206B2 publication Critical patent/JP5870206B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • 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/651Multi-level translation tables

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)

Abstract

本システムは、メモリ内のデータへのアクセスと関連付けられたポインタを、入出力メモリ管理ユニット(IOMMU)を介して入出力(I/O)デバイスに送ることを可能にする。I/Oデバイスは、データをローカルI/Oデバイスメモリにコピーすることなく、IOMMUを介してメモリ内のデータにアクセスする。I/Oデバイスは、ポインタに基づいてメモリ内のデータに関する操作を行う。このようにして、I/Oデバイスは、費用のかかるコピーなしでメモリにアクセスできるようになる。【選択図】図5

Description

本発明は、概して、コンピューティングシステムに関する。より具体的には、本発明は、コンピューティングシステム内の仮想アドレス空間の共有に関する。
グラフィックスプロセッシングユニット(GPU)を通常のコンピュータ操作に使用することに対する要望が、GPUの単位電力及び/又は単位経費当たりの模範的な性能により、最近、増々顕著になっている。GPUの計算能力は、概して、対応する中央処理装置(CPU)のプラットフォームの計算能力を超えた比率で成長している。この成長は、モバイルコンピューティング市場及びこれに必要な支援サーバ/エンタープライズシステムの急激な拡大と相まって、所望のユーザ経験の特定された質を提供するために利用されている。その結果、データ並列コンテンツを伴うワークロードを実行するためのCPU及びGPUの組み合わせの使用は、ボリューム技術となりつつある。
しかしながら、GPUは、従来、グラフィックスの高速化のみに利用可能な、制約されたプログラム環境で機能してきた。このような制約は、GPUのプログラムエコシステムがが、CPUほど豊富でなかったという事実から生じていた。したがって、GPUの使用のほとんどは、二次元(2D)及び三次元(3D)のグラフィックスに限られ、そして、グラフィックス及びビデオのアプリケーションプログラミングインターフェース(API)を扱うことにすでに慣れている、数少ない最先端のマルチメディアのアプリケーションに限られている。
マルチベンダがサポートする標準API及び支援ツールであるOpenCL(登録商標)やDirectCompute(登録商標)の出現により、従来のアプリケーションにおけるGPUの制限は、従来のグラフィックスを越えて拡大されている。OpenCL(登録商標)及びDirectCompute(登録商標)は、将来性のある出発点ではあるが、CPU及びGPUの組み合わせが、CPUと同様に、大多数のプログラムタスク用に流動的に用いられることを可能にする環境及びエコシステムを生成することに対して、多くの障害が残されている。
現行のコンピューティングシステムは、多くの場合、複数の処理デバイスを含んでいる。例えば、コンピューティングシステムによっては、CPU及びGPUの両方は、個別のチップ(例えば、CPUはマザーボードに配置され、GPUはグラフィックカードに配置され得る)に含まれており、又は、単一のチップのパッケージに含まれている。しかしながら、これらの配置の何れも、(i)効率的なスケジューリング、(ii)プロセス間にサービス品質(QoS)保証を提供すること、(iii)プログラミングモデル、(iv)複数のターゲットの命令セットアーキテクチャ(ISA)にコンパイルすること、及び、(v)個別のメモリシステム、の各々を、電力消費を最小限にしつつ行う、ということに関連する大きな課題を依然として含んでいる。
例えば、個々のチップの配置は、各プロセッサがメモリにアクセスするために、チップ間のインターフェースの利用を、システム及びソフトウェアアーキテクトに対して強いることになる。これらの外部インターフェース(例えば、チップ間)は、協働する異種のプロセッサのメモリ待ち時間及び電力消費に悪影響を及ぼすと同時に、個別のメモリシステム(すなわち、個別のアドレス空間)及びドライバにより管理される共有メモリによって、きめ細やか(fine grain)なオフロードには許容不可能となるオーバーヘッドがもたらされる。
別の例において、複数のプロセッサによってアクセスされるメモリに記憶された一部の画像は、所望のレベルの品質で記憶されていない場合がある。例えば、画像の画質、コントラスト、配向(例えば、回転)等が正しくない場合がある。典型的に、表示される前に操作を要する画像データがメモリ内に存在する場合には、その画像データは、それを操作することの可能なI/Oデバイスのメモリにコピーされ、その後で、印刷できるようにメモリにコピーバックされる必要がある。このプロセスは、時間がかかり、且つ、例えば、記憶された画像データの品質を低減させ得る。
したがって、共有メモリに記憶されたデータに複数のプロセッサがアクセスするための効率的な様式が必要である。
GPU、アクセラレイテッドプロセシングユニット(APU)、及び、GPUによる汎目的計算(GPGPU)は、この分野では共通に使用されている用語であるが、「アクセラレイテッド処理デバイス(APD)」という表現は、より広い表現とみなされている。例えば、APDは、従来のCPU、従来のGPU及び/又はこれらの組み合わせなどのリソースに関して、アクセラレイティンググラフィックス処理タスク、データ並列タスク、ネステッドデータ並列タスクに関連した機能及び計算を加速した形で実行する、ハードウェア及び/又はソフトウェアの協働集団を指している。
より具体的には、本発明の実施形態は、IOMMUの効率的なメモリ及びリソース管理のための方法、システム及びコンピュータ可読記憶媒体に関する。一実施形態では、メモリ内のデータへのアクセスに関連するポインタが、入出力メモリ管理ユニット(IOMMU)を介して、入出力(I/O)デバイスに送られる。I/Oデバイスは、データをローカルI/Oデバイスメモリにコピーすることなく、IOMMUを介してメモリ内のデータにアクセスする。I/Oデバイスは、ポインタに基づいて、メモリ内のデータに操作を行う。
本発明のさらなる特徴及び利点、並びに、本発明の様々な実施形態の構造及び動作を、添付の図面を参照して、以下に詳細に説明する。本発明は、本明細書に記載された特定の実施形態に限定されないことに留意されたい。そのような実施形態は、例示目的のみのために本明細書に開示される。本明細書に含まれている教示に基づく追加的な実施形態が、当業者によって明らかとなるであろう。
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本発明を例示し、さらに、説明とともに本発明の原理を説明するように機能し、当業者が本発明を実施することを可能にする。本発明の様々な実施形態が、図面を参照して以下に記載され、同様の参照番号が、全体を通じて同様の構成要素を指して使用される。
本発明の実施形態による処理システムの例示的なブロック図である。 図1に例示されているAPDの例示的なブロック図である。 本発明の実施形態によるIOMMUネスト型ページングトランザクションシステムの第1のレイヤの例示的なブロック図である。 実施形態によるIOMMUネスト型ページングトランザクションの第2のレイヤの例示的なブロック図である。 本発明の実施形態が適用され得る、従来のメモリとI/Oデバイスとの関係についてのブロック図である。 本発明の実施形態が適用され得る、直接デバイス割り当てスキームのブロック図である。 本発明の実施形態が適用され得る、I/Oデバイスのページフォルト及び解決体系についての例示である。 本発明による効率的なメモリ及びリソース管理を例示するフローチャートである。
以下の詳細な説明において、「一実施形態」、「実施形態」、「例示的な実施形態」等への言及は、記載の実施形態が、特定の特徴、構造又は特性を含み得ることを示すが、あらゆる実施形態が、特定の特徴、構造又は特性を必ずしも含むわけではない場合がある。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造又は特性が、実施形態に関連して記載される場合には、かかる特徴、構造又は特性を他の実施形態に関連して達成することは、明確に記載されているか否かにかかわらず、当業者の知識の範囲内であると考えられる。
「本発明の実施形態」という用語は、本発明の全ての実施形態が、提案されている特徴、利点又は操作のモードを含むことを要するものではない。本発明の範囲から逸脱することなく、代替の実施形態を創作することができ、本発明における周知の要素は、詳細には記述されないか、又は、本発明に関連する細部を曖昧にしないために割愛される場合がある。さらに、本明細書に使用される用語は、特定の実施形態を説明する目的のみであり、制限するように意図するものではない。例えば、本明細書に使用される際、単数形「1つの(a)」、「1つの(an)」、及び、「その(the)」は、文脈により別途明確に示されない限り、複数形を含むことを意図する。「備える(comprises)」、「備えている(comprising)」、「含む(includes)」及び/又は「含んでいる(including)」という用語は、本明細書で使用される際、言及される特徴、完全体、ステップ、操作、要素及び/又は構成要素の存在を明示するが、1つ以上の他の特徴、完全体、ステップ、操作、要素、構成要素及び/又はこれらの群の存在を排除するものではない。
図1は、CPU102及びAPD104を含む、統合されたコンピューティングシステム100の例示的な図である。CPU102は、1つ以上の単一コア、又は、マルチコアのCPUを含み得る。本発明の一実施形態において、システム100は、統合されたプログラム及び実行環境を提供するために、CPU102及びAPD104を組み合わせて、単一のシリコンダイ又はパッケージ上に形成される。この環境は、APD104が、いくつかのプログラムタスクについてCPU102と同程度に流動的に使用されることを可能にする。しかしながら、CPU102及びAPD104が単一のシリコンダイ上に形成されることは、本発明の絶対的な要件ではない。いくつかの実施形態においては、それらが別個に形成され、同じ基板上又は異なる基板上に取り付けられることが可能である。
また、一実施形態では、システム100は、メモリ106、オペレーティングシステム(OS)108及び通信基盤109を含む。OS108及び通信基盤109は、以下に、より詳細に説明される。
また、システム100は、カーネルモードドライバ(KMD)110と、ソフトウェアスケジューラ(SWS)112と、例えば入出力メモリ管理ユニット(IOMMU)などのメモリ管理ユニット116と、を含む。システム100の構成要素は、ハードウェア、ファームウェア又はこれらの任意の組み合わせとして実装され得る。当業者であれば、システム100が、図1に示された実施形態で示されているものに加えて、又は、これらと異なる1つ以上のソフトウェア、ハードウェア及びファームウェア構成要素を含んでもよいことを理解するであろう。
一実施形態では、KMD110等のドライバは、典型的に、ハードウェアが接続するコンピュータバス又は通信サブシステムを通じて、デバイスと通信する。コールプログラムがドライバ内のルーチンを呼び出す場合には、ドライバは、デバイスにコマンドを発行する。デバイスがドライバにデータを送り返すと、ドライバは、当初のコールプログラムにルーチンを呼び出す。一実施形態では、ドライバは、ハードウェア依存及びオペレーティングシステム固有である。これらは、通常、任意の必要な非同期時間依存ハードウェアインターフェースに必要とされる割り込み処理を提供する。デバイスドライバは、特に最新のWindows(登録商標)プラットフォーム上では、カーネルモード(Ring0)又はユーザモード(Ring3)で作動し得る。ユーザモードでドライバを作動させる主な利点は、うまく書かれていないユーザモードデバイスドライバがカーネルメモリを上書きすることによって、システムの機能を停止させることが不可能であることから、安定性を向上させる点にある。一方、ユーザ/カーネル−モードの移行は、通常、相当な性能オーバーヘッドを課し、それによって、ユーザモードドライバに対して待ち時間が短く高いスループットの要件を禁止する。カーネル空間は、システムコールの使用を通じてのみユーザモジュールによってアクセスされ得る。UNIX(登録商標)シェル又は他のGUIに基づくアプリケーションなどのエンドユーザ用プログラムは、ユーザ空間の一部である。これらのアプリケーションは、カーネルサポート機能を通じて、ハードウェアとやりとりする。
CPU102は、制御プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は、デジタル信号プロセッサ(DSP)のうちの1つ以上(図示されない)を含み得る。CPU102は、例えば、コンピューティングシステム100の操作を制御するOS108、KMD110、SWS112及びアプリケーション111を含む、制御論理を実行する。この例示的な実施形態において、CPU102は、一実施形態によれば、例えば、そのアプリケーションに関連する処理を、CPU102と、APD104等の他の処理リソースとにわたって分配することによって、アプリケーション111の実行を開始及び制御する。
APD104は、とりわけ、例えば、特に並列処理に適し得るグラフィックス操作及び他の操作等の、選択された機能のためのコマンド及びプログラムを実行する。一般に、APD104は、例えばピクセル操作や、幾何学的計算や、画像をディスプレイにレンダリングすること等のグラフィックスパイプライン操作を実行するために、頻繁に使用され得る。また、本発明の様々な実施形態において、APD104は、CPU102から受け取ったコマンド又は命令に基づいて、計算処理操作を実行し得る。
例えば、コマンドは、命令セットアーキテクチャ(ISA)内で定義されない特別な命令とみなされ、通常、所与のISA又はハードウェアの固有の部分からの命令セットによって達成され得る。1つのコマンドは、ディスパッチプロセッサ、コマンドプロセッサ又はネットワークコントローラ等の特別なプロセッサによって実行されてもよい。一方、命令は、例えば、コンピュータアーキテクチャ内のプロセッサの単一の操作とみなされ得る。一実施形態では、2つのISAセットを使用する場合に、一部の命令がx86プログラムを実行するために使用され、一部の命令がAPD/GPU計算ユニット上でカーネルを実行するために使用される。
例示的な実施形態において、CPU102は、選択されたコマンドをAPD104に伝送する。選択されたコマンドは、並列実行に適切なグラフィックスコマンド及び他のコマンドを含み得る。選択されたコマンドは、コンピュータ処理コマンドを含んでもよく、CPU102から実質的に独立して実行され得る。
APD104は、限定されないが、1つ以上の単一命令複数データ(SIMD)プロセシングコア等の独自の計算ユニット(図示されない)を含み得る。本明細書に示される場合、SIMDは、独自のデータ及び共有のプログラムカウンタをそれぞれ有する複数の処理要素上でカーネルが同時に実行される、数学パイプライン(math pipeline)又はプログラミングモデルである。全ての処理要素は、厳密に同一な命令セットを実行する。条件付き実行制御の使用により、ワークアイテムを、発行されたコマンドごとに参加させるか否かを可能ならしめる。
一実施形態では、各APD104計算ユニットは、1つ以上のスカラー及び/若しくはベクトル浮動小数点数演算ユニット並びに/又は算術論理ユニット(ALU)を含み得る。また、APD計算ユニットは、逆二乗根ユニット及びサイン/コサインユニット等の特別な目的の処理ユニット(図示されない)を含み得る。一実施形態では、APD計算ユニットは、本明細書において、集合的にシェーダコア122と称される。
一般的に、1つ以上のSIMDを有することは、APD104を、例えば、グラフィックス処理において一般的なものである等のように、データ並列タスクの実行に理想的に適したものにする。
ピクセル処理等の一部のグラフィックスパイプライン操作や他の並列計算操作は、同じコマンドの流れ又は計算カーネルが、入力データ要素の流れ又は集団上で行われることを必要とし得る。同じ計算カーネルの各々のインスタンス化は、そのようなデータ要素を並列に処理するために、シェーダコア122内の複数の計算ユニット上で同時に実行され得る。本明細書で参照される場合、例えば、計算カーネルは、プログラム内で宣言される命令であって、APD/GPU計算ユニット上で実行される命令を含む関数である。また、この関数は、カーネル、シェーダ、シェーダプログラム又はプログラムとも称される。
例示的な実施形態において、各計算ユニット(例えば、SIMDプロセシングコア)は、受信データを処理するために、特定のワークアイテムの各々のインスタンスの作成を実行し得る。ワークアイテムは、コマンドによってデバイス上で呼び出されたカーネルの並列実行の集団の1つである。ワークアイテムは、計算ユニット上で実行するワークグループの一部として、1つ以上の処理要素によって実行され得る。
ワークアイテムは、自身のグローバルID及びローカルIDにより、集団内の他の実行と区別される。一実施例において、単一のSIMDエンジン上で同時に実行するワークグループ内のワークアイテムのサブセットは、ウェーブフロント136と称され得る。ウェーブフロントの幅は、ハードウェアSIMDエンジンの特徴である。本明細書で参照される場合、1つのワークグループとは、単一の計算ユニット上で実行する関連ワークアイテムの集団である。グループ内のワークアイテムは、同じカーネルを実行し、ローカルメモリ及びワークグループバリアを共有する。
1つのワークグループからの全てのウェーブフロントは、同じSIMDエンジン上で処理される。ウェーブフロント全体にわたる命令が1つずつ発行され、全てのワークアイテムが同じ制御フローに従う場合、各ワークアイテムは同じプログラムを実行する。各ワークアイテムがカーネルを通じて固有のコードパスを実際に取得することの可能なウェーブフロント内で、分散した制御フローを可能にするために、実行マスク及びワークアイテム条件付き実行制御が用いられる。ウェーブフロント開始時に完全なワークアイテムセットが利用可能でない場合には、部分実装ウェーブフロントが処理され得る。また、ウェーブフロントは、ワープ、ベクトル又はスレッドと称され得る。
コマンドは、ウェーブフロントに対して1つずつ発行され得る。全てのワークアイテムが同じ制御フローに従う場合、各ワークアイテムは、同じプログラムを実行し得る。一実施形態では、各ワークアイテムがカーネルドライバを通じて固有のコードパスを実際に取得することができる分散制御フローを可能にするために、実行マスク及びワークアイテムの条件付き実行制御が用いられる。開始時に完全なワークアイテムセットが利用可能でない場合、部分ウェーブフロントが処理され得る。例えば、シェーダコア122は、所定数のウェーブフロント136を同時に実行することができ、各ウェーブフロント136は所定数のワークアイテムを含む。
システム100内において、APD104は、グラフィックスメモリ130等の独自のメモリを含む。グラフィックスメモリ130は、APD104内での計算時に使用するためのローカルメモリを提供する。シェーダコア122内の個別の計算ユニット(図示されない)は、独自のローカルデータストア(図示されない)を有し得る。一実施形態において、APD104は、ローカルグラフィックスメモリ130へのアクセス、及び、メモリ106へのアクセスを含む。別の実施形態において、APD104は、ダイナミックランダムアクセスメモリ(DRAM)へのアクセス、又は、APD104に直接取り付けられ、且つ、メモリ106から分離した他のメモリ(図示されない)へのアクセスを含み得る。
示された実施形態では、APD104は、1つ又は「n」個のコマンドプロセッサ(CP)124を含む。CP124は、APD104内の処理を制御する。また、CP124は、実行されるコマンドを、メモリ106内のコマンドバッファ125から取り出し、取り出したコマンドのAPD104上での実行を調整する。
一実施形態では、CPU102は、アプリケーション111に基づいて、コマンドを適切なコマンドバッファ125に入力する。本明細書で参照される場合、アプリケーションとは、CPU及びAPD内の計算ユニット上で実行することになるプログラム部分の組み合わせである。
複数のコマンドバッファ125は、APD104上で各プロセスの実行が予定されている状態で、維持され得る。
CP124は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせで実装され得る。一実施形態において、CP124は、スケジューリング論理を含む論理を実装するためのマイクロコードを有する縮小命令セットコンピュータ(RISC)エンジンとして、実装され得る。
また、APD104は、1つ又は「n」個のディスパッチコントローラ(DC)126を含む。本願では、ディスパッチという用語は、ディスパッチコントローラによって実行されるコマンドを指す。ディスパッチコントローラは、1セットの計算ユニット上の1セットのワークグループに対するカーネルの実行を開始するために、コンテキスト状態を使用する。DC126は、シェーダコア122内でワークグループを開始するための論理を含む。いくつかの実施形態において、DC126は、CP124の一部として実装され得る。
また、システム100は、APD104上での作動のためのランリスト150からプロセスを選択するためのハードウェアスケジューラ(HWS)128を含む。HWS128は、ラウンドロビン方式、優先レベルを使用して、又は、他のスケジューリング方針に基づいて、ランリスト150からプロセスを選択し得る。優先レベルは、例えば、動的に判定され得る。HWS128は、例えば、新たなプロセスを追加することによって、及び、ランリスト150から現行のプロセスを削除することによって、ランリスト150を管理するための機能を含む。HWS128のランリスト管理論理は、時には、ランリストコントローラ(RLC)と称される。
本発明の様々な実施形態において、HWS128がRLC150からプロセスの実行を開始するとき、CP124は、対応するコマンドバッファ125からのコマンドの取り出し及び実行を開始する。いくつかの場合において、CP124は、CPU102から受信したコマンドに対応するコマンドであって、APD104内で実行される1つ以上のコマンドを生成し得る。一実施形態において、CP124は、他の構成要素とともに、APD104及び/又はシステム100のリソースの利用を改善または最大化する様式で、APD104上でコマンドの優先順位化およびスケジューリングを実施する。
APD104は、割り込みジェネレータ146へのアクセスを有することができ、又は、割り込みジェネレータ146を含んでもよい。割り込みジェネレータ146は、APD104がページフォルト等の割り込みイベントにあった場合に、OS108に割り込むようにAPD104によって構成され得る。例えば、APD104は、上記のページフォルト割り込みを生成するために、IOMMU116内の割り込み生成論理に依存し得る。
また、APD104は、シェーダコア122内で作動しているプロセスに先制するために、先制及びコンテキストスイッチ論理(logic)120を含み得る。コンテキストスイッチ論理120は、例えば、プロセスを停止させ、その現在の状態(例えば、シェーダコア122の状態及びCP124の状態)を保存するための機能性を含む。
本明細書で参照される場合、状態という用語は、初期状態、中間状態及び最終状態を含み得る。初期状態は、マシンが、出力データセットを生成するために、プログラムに従って入力データセットの処理を開始する時点である。例えば、処理が進行することを可能にするために、いくつかの時点で記憶することが必要な中間状態が存在する。この中間状態は、何らかの他のプロセスによる割り込みの際に、後で実行を継続することを可能にするために、記憶される場合がある。出力データセットの一部として記録され得る最終状態も存在する。
また、先制及びコンテキストスイッチ論理120は、別のプロセスをAPD104にコンテキストスイッチするための論理を含み得る。別のプロセスをAPD104上での作動状態にコンテキストスイッチするための機能は、例えば、そのプロセス用に前に保存された状態を回復させ、その実行を開始して、APD104上で作動するためのCP124及びDC126を通じて、そのプロセスのインスタンスを作成することを含んでもよい。
メモリ106は、DRAM(図示されない)等の非永続的メモリを含み得る。メモリ106は、アプリケーション又は他の処理論理の部分の実行中に、例えば、処理論理命令、定数及び変数を記憶し得る。例えば、一実施形態において、CPU102上で1つ以上の操作を行う制御論理の一部は、CPU102による操作のそれぞれの部分の実行中に、メモリ106内に存在し得る。本明細書に使用される「処理論理」又は「論理」という用語は、制御フローコマンド、計算を行うためのコマンド、及び、リソースへの関連アクセスのためのコマンドを指す。
実行中、個別のアプリケーション、OS機能、処理論理コマンド及びシステムソフトウェアは、メモリ106内に存在し得る。OS108にとって必須の制御論理コマンドは、通常、実行中にメモリ106内に存在する。例えば、KMD110及びソフトウェアスケジューラ112を含む他のソフトウェアコマンドも、システム100の実行中にメモリ106内に存在し得る。
この実施形態では、メモリ106は、APD104にコマンドを送信するためにCPU102によって使用されるコマンドバッファ125を含む。また、メモリ106は、プロセスリスト及びプロセス情報(例えば、アクティブリスト152及びプロセス制御ブロック154)を含む。これらのリスト及び情報は、APD104及び/又は関連するスケジューリングハードウェアにスケジューリング情報を伝達するために、CPU102上で実行するスケジューリングソフトウェアによって使用される。メモリ106へのアクセスは、メモリ106に連結されているメモリコントローラ140によって管理され得る。例えば、メモリ106に対する読み書きを行うための、CPU102又は他のデバイスからの要求は、メモリコントローラ140によって管理される。
システム100の他の態様に戻って参照すると、IOMMU116は、マルチコンテキストメモリ管理ユニットである。
本明細書に使用される際、コンテキスト(しばしば、プロセスと称される)は、カーネルが実行される環境、並びに、同期及びメモリ管理が定義されるドメインとみなされ得る。コンテキストは、1セットのデバイスと、これらのデバイスにアクセス可能なメモリと、対応するメモリ特性と、カーネルの実行又はメモリオブジェクト上の動作を計画するために使用される1つ以上のコマンドキューとを含む。一方、プロセスは、コンピュータを作動させるプロセスを生成することになる、アプリケーションのプログラムの実行とみなされ得る。OSは、プログラムが実行するためのデータ記録及び仮想メモリアドレス空間を生成し得る。メモリ及びプログラム実行の現在の状態は、プロセスと称され得る。OSは、プロセスがメモリ上で初期状態から最終状態へと動作するためのタスクをスケジュールすることになる。
図1に示される実施形態に戻って参照すると、IOMMU116は、APD104を含むデバイスに対するメモリページアクセスのための仮想アドレスから物理アドレスへの変換を行うための論理を含む。また、IOMMU116は、例えば、APD104等のデバイスによるページアクセスがページフォルトとなった場合に、割り込みを生成する論理を含んでもよい。さらに、IOMMU116は、変換索引バッファ(TLB)118を含んでもよいし、TLBへのアクセスを有してもよい。TLB118は、1つの例として、メモリ106内のデータに対するAPD104による要求のための論理(すなわち、仮想)メモリアドレスから物理メモリアドレスへの変換を加速させるための内容アドレスメモリ(CAM)において、実装され得る。
示される実施形態において、通信基盤109は、必要に応じて、システム100の構成要素を相互接続する。通信基盤109は、1つ以上のペリフェラルコンポーネント相互接続(PCI)バス、拡張PCI(PCI−E)バス、アドバンストマイクロコントローラバスアーキテクチャ(AMBA)バス、アクセラレイテッドグラフィックスポート(AGP)又はそのような通信基盤を含み得る(図示されない)。また、通信基盤109は、イーサネット(登録商標)、イーサネット(登録商標)と同様のネットワーク、又は、アプリケーションのデータ変換率要件を満たす任意の好適な物理的通信基盤、を含み得る。通信基盤109は、コンピューティングシステム100の構成要素を含む構成要素を相互接続するための機能性を含む。
この実施形態では、OS108は、システム100のハードウェア構成要素を管理し、共通のサービスを提供するための機能を含む。様々な実施形態において、OS108は、CPU102上で実行し、共通のサービスを提供し得る。これらの共通のサービスは、例えば、CPU102内での実行のためのスケジューリングアプリケーション、フォルト管理、割り込みサービス、及び、他のアプリケーションの入出力を処理することを含み得る。
いくつかの実施形態において、割り込みコントローラ148等の割り込みコントローラによって生成される割り込みに基づいて、OS108は、適切な割り込み処理ルーチンを呼び出す。例えば、ページフォルト割り込みを検出すると、OS108は、割り込みハンドラを呼び出し、関連ページのメモリ106内へのロードを開始し、対応するページテーブルを更新することができる。
また、OS108は、ハードウェア構成要素へのアクセスが、OSによって管理されるカーネル機能を通じて仲介されるのを確実にすることによって、システム100を保護するための機能を含み得る。実際には、OS108は、アプリケーション111等のアプリケーションが、CPU102上で、ユーザ空間において作動することを確実にする。また、OS108は、アプリケーション111が、ハードウェア及び/又は入出力機能にアクセスするために、OSによって提供されるカーネル機能を呼び出すことを確実にする。
例として、アプリケーション111は、CPU102上で実行されるユーザ計算を行うための様々なプログラム又はコマンドを含む。この統合コンセプトは、CPU102が、APD104での処理のための選択されたコマンドを、途切れることなく送信することを可能にし得る。この統合型APD/CPUフレームワークの下では、アプリケーション111からの入出力要求は、対応するOS機能を通じて処理される。
一実施形態において、KMD110は、アプリケーションプログラムインターフェース(API)を実装し、それを通じて、CPU102、又は、CPU102若しくは他の論理上で実行するアプリケーションが、APD104の機能を呼び出し得る。例えば、KMD110は、CPU102からのコマンドをコマンドバッファ125のキューに入れることができ、APD104はその後にコマンドを取り出す。さらに、KMD110は、SWS112とともに、APD104上で実行されるプロセスのスケジューリングを行うことができる。SWS112は、例えば、APD上で実行されるプロセスの優先順位化されたリストを維持するための論理を含み得る。
本発明の他の実施形態において、CPU102上で実行するアプリケーションは、コマンドをキューに入れるときに、KMD110を完全にバイパスし得る。
いくつかの実施形態において、SWS112は、APD104上で実行されるプロセスのアクティブリスト152をメモリ106内に維持する。また、SWS112は、ハードウェア内のHWS128によって管理されるアクティブリスト152内のプロセスのサブセットを選択する。APD104上で各プロセスを作動させることに関する情報は、CPU102からプロセス制御ブロック(PCB)154を通じてAPD104に伝達される。
アプリケーション、OS及びシステムソフトウェアのための処理論理は、マスクワーク/フォトマスクの生成を通じた製造プロセスを最終的に構成して、本明細書に記載される発明の態様を具現化するハードウェアデバイスを生成することを可能にするために、C等のプログラミング言語、及び/又は、Verilog、RTL若しくはネットリスト等のハードウェア記述言語で指定されるコマンドを含み得る。
当業者であれば、本明細書を読むことにより、コンピューティングシステム100が図1に示されるものよりも多い又は少ない構成要素を含み得ることを理解するであろう。例えば、コンピューティングシステム100は、1つ以上の入力インターフェースと、不揮発性記憶域と、1つ以上の出力インターフェースと、ネットワークインターフェースと、1つ以上のディスプレイ又はディスプレイインターフェースとを含み得る。
図2は、CPU202及びメモリ206を備えるI/Oデバイスインターフェースアーキテクチャを例示する図であって、図1のより詳細な図を例示するブロック図である。さらに、図2は、メモリ206と、IOMMU216と、バス278を介して接続された、符号250,252,254で表されるI/OデバイスA,B,Cとの間で動作するように構成されたメモリマッピング構造を例示している。IOMMU216等のIOMMUは、直接メモリアクセス(DMA)仮想アドレスをシステム物理アドレスに変換するように操作するハードウェアデバイスであり得る。一般に、IOMMU216等のIOMMUは、1つ以上の一意アドレス空間を構築し、その一意アドレス空間(複数可)を使用して、デバイスのDMA操作がどのようにメモリにアクセスするかを制御する。図2は、例示目的で1つのIOMMUのみを示すが、本発明の実施形態は1つより多いIOMMUを含んでもよい。
通常、IOMMUは、独自の個別のバス及びI/Oデバイス(複数可)に接続され得る。図2において、バス209は、PCIバス、AGPバス、PCI−Eバス(より正確にはポイントツーポイント接続)、又は、現在利用可能であるか若しくは将来開発される任意の他の種類のバス若しくは通信チャネルを含む、コンピュータシステムにおいて使用される任意の種類のバスであり得る。バス209は、割り込みコントローラ248、KMD210、SWS212、アプリケーション211及びOS208を、システム200内の他の構成要素と相互接続させ得る。さらに、相互接続割り込みコントローラ248、KMD210、SWS212、アプリケーション211及びOS208は、本明細書に記載される割り込みコントローラ148、KMD110、SWS112、アプリケーション111及びOS108と実質的に同様であり、再度説明は行わない。
IOMMU216に接続され得るI/Oデバイスを、図2にさらに例示する。I/Oデバイスインターフェースアーキテクチャは、符号250,252,254により表示されるI/OデバイスA,B,Cを含む。また、I/OデバイスCは、メモリ管理I/O(MMIO)マップ及びホストデ−タパス(HDP)256と、デバイスプロセッシングコンプレックス258と、プライベートMMU260と、IOTLB264と、アドレス変換サービス(ATS)/周辺要求インターフェース(PRI)要求ブロック262と、ローカルメモリ268と、ローカルメモリ保護マップ266と、マルチプレクサ270,272,274,276とを含む。
I/OデバイスA,B,Cは、限定されないが、APD、拡張カード、周辺カード、広範なオフロード能力を持つネットワークインターフェースコントローラ(NIC)カード、WANインターフェースカード、音声インターフェースカード、及び、ネットワークモニタリングカードを含む、多くの種類のI/Oデバイスを表す。2つ以上のI/Oデバイスが、様々なバス構成を通じて、各IOMMUに接続され得る。
システム200は、本システムの高レベルの機能を示しており、実際の物理的な実装形態は、多くの形態をとり得る。例えば、MMU214は、一般に、各プロセッサ202に統合される。図2に示される実施形態は、プロセッサ202のノード間のHyperTransport(HT)(登録商標)のコヒーレントファブリックと、プロセッサ202のノードとI/Oデバイス250,252,254又は他のI/Oデバイスの相互接続を橋渡しする任意のI/Oハブ(示されない)との間のHT I/Oリンクと、に基づくものであり得る。
あるいは、任意の他のコヒーレント相互接続がプロセッサ202のノード間に使用されてもよく、及び/又は、任意の他のI/O相互接続がプロセッサノードとI/Oデバイスとの間で使用されてもよい。さらに、別の実施形態では、従来のPC設計において、メモリ206及び1つ以上のI/O相互接続にさらに連結される、ノースブリッジに連結されたプロセッサ202を含んでもよい。
I/Oデバイス250,252,254の何れも、DMA操作が処理されるIOMMU216を通って上向きにフローするDMA操作(すなわち、割り込み)を発行してもよい。その後、このフローは、内部に組み込まれたメモリコントローラ214を含み得るプロセッサ202へと続く。
I/Oデバイスの接続時にIOMMU216が検出された場合、ソフトウェアは、必要な制御及びデータ構造を確立するプロセスを開始する。例えば、IOMMU216が設定される場合、IOMMU216は、デバイステーブルベースレジスタ(DTBR)241、コマンドバッファベースレジスタ(CBBR)238、イベントログベースレジスタ(ELBR)236、制御論理249、及び、周辺ページ要求レジスタ(PPRR)242を含み得る。さらに、初期設定中に、IOMMU216は、適切なゲストページテーブルのベースポインタレジスタテーブルを選択するためのオペレータ246を含み得る。ベースポインタレジスタテーブルは、例えば、現在のタスクのページディレクトリ及びページテーブルの両方を配置することによって仮想アドレスから物理アドレスに変換するために、x86マイクロプロセッサ処理によって使用される制御レジスタ3(CR3)であり得る。
ゲストCR3(GCR3)の変更は、新たなセットの変換を確立してもよく、したがって、プロセッサは、以前のコンテキストに関連したTLB218のエントリを自動的に無効にし得る。GCR3レジスタは、必要であれば、表題「Input/Output Memory Management Unit Two−Layer Addressing」の米国特許出願第61/423,062号に記載された、I/Oページテーブルウォーカ244を始めるように動作する。米国特許出願第61/423,062号は、参照によりその全体が本明細書に組み込まれる。また、IOMMU216は、ページテーブルウォークを行う必要なく、その後の変換を履行するために使用されるアドレス変換をキャッシュするために、1つ以上のTLB218と関連付けられ得る。デバイステーブルからのアドレスは、バス282を介して、IOMMU216に伝達され得る。
データ構造が設定されると、IOMMU216は、DMA操作アクセス、割り込み再マッピング及びアドレス変換を開始することができる。
IOMMU216は、2レベルの変換がサポートされていることを示すために、メモリ管理I/O(MMIO)を使用し得る。2レベルの変換がサポートされると判定されたときには、2レベルの変換は、適切なデバイステーブルエントリ(DTE)をプログラムすることによって、有効にされる。
ネスト型ページングにおいては、DTEと関連するトランザクションは、メモリ206内のI/Oページテーブル224のためのデータ構造のルートを指し示すページテーブルルートポインタを含み得る。
したがって、IOMMU216は、マッピングされたゲストポインタを使用して、GVAからGPAへのアドレス変換を含むようにデバイステーブルエントリを拡張することによって、I/Oページテーブルにアクセスすることができる。GVAからGPAへの変換は、ゲストOSによって管理される(以降、「L1」変換という)。
さらに、IOMMU216は、マッピングされたシステムポインタを使用して、I/Oページテーブルにアクセスし、GVAからSPAへの変換を行うことができる。GPAからSPAへの変換は、ハイパーバイザ234によって管理され得る(以降、「L2」変換という)。
したがって、両方の種類のポインタを備えるDTEを使用して、カスケードアドレス変換ウォークの2つのレイヤを実行することができる。
L2及びL1の変換処理によって生成されたネスト型アドレス空間は、コンピュータオフロード、ユーザレベルI/O及びアクセラレイテッドI/Oデバイス等の仮想化システムにおける先進の計算アーキテクチャを可能にする。
図2に示されているとおり、IOMMU216は、メモリ206と、I/Oデバイス250,252,254との間に接続されている。さらに、IOMMU216は、メモリ206、メモリコントローラ240及びI/Oデバイス250,252,254とは別個のチップ上に配置され得る。IOMMU216は、主なシステムリソースを管理するように設計されてもよく、I/Oデバイスによってアクセスされるメモリ上でパーミッションチェック及びアドレス変換を提供するためにI/Oページテーブル224を使用し得る。また、I/Oページテーブルは、AMD64のロング形式で設計されてもよい。デバイステーブル226は、I/Oデバイスが特定の領域に割り当てられるのを許可する。また、I/Oページテーブル224は、I/Oデバイスのページテーブルへのポインタを含むように構成されてもよい。
IOMMU216は、許可されていないDMA要求を再度マッピングすることにより、セキュリティ及びパーミッションチェック対策として、悪質なDMA要求を阻むよう構成され得る。さらに、割り込み再マッピングに関して、IOMMU216は、(i)DMA要求を正しいメモリ位置にリダイレクトすること、及び、(ii)DMA要求を、ゲストVMを作動させる正しい仮想または物理CPUにリダイレクトすること、を行うように構成され得る。また、IOMMU216は、I/Oデバイスの確実な直接割り当てを効率的に管理する。さらに、IOMMU216は、I/Oデバイスの割り込みのためのパーミッションチェック及び割り込み再マッピングを提供するために割り込み再マッピングテーブルを使用する。
一実施形態において、IOMMU216は、ゲスト仮想アドバンストプログラムバブル割り込みコントローラ(APIC)構造(図示されない)を含む。別の実施形態では、仮想化されたAPICをサポートするように設計されたアーキテクチャ特性を有するIOMMUを含む。
IOMMU216は、ハイパーバイザの介入なしに、同時に作動している1つ以上のゲスト(例えば、ゲストVM)に対して直接的に、割り込みの引き渡しをサポートする。言い換えれば、IOMMU216は、ハイパーバイザ234を必要とすることなく、変換サービスを提供し得る。例示的なIOMMU216は、標準的なPCI INTx、MSI又はMSI−X割り込みを使用して、割り込みを信号で知らせる。
また、システム200は、追加のメモリブロック(図示されない)を含むメモリ206を含む。メモリコントローラ240は、別個のチップ上にあってもよいし、プロセッサ202シリコン内に統合されてもよい。メモリ206は、DMA及びプロセッサアクティビティがメモリコントローラ240と通信するように構成されている。
メモリ206は、I/Oページテーブル224と、デバイステーブル226と、割り込み再マッピングテーブル(IRT)228と、コマンドバッファ222と、イベントログ220と、ハイバーバイザ234等のホスト変換モジュールとを含む。また、メモリ206は、例えば符号230で表示されるゲストOS1とゲストOS2(232)等のように同時に作動している1つ以上のOSを含み得る。ハイバーバイザ234及びゲストOS230,232は、本システムを仮想化するための作業を行うソフトウェア構成体である。
ハードウェアデバイスであるIOMMU216が、従来の手法の下ではハイパーバイザ234が行う必要のある作業を行うことが許可されているため、ゲストOS230,232等のゲストOSは、本システム200内のI/Oデバイス250,252,254等のI/Oデバイスにより直接的に接続されている。
さらに、IOMMU216及びメモリ206は、DTBR241がデバイステーブル226の開始インデックスを指し示すように、初期化されてもよい。さらに、CBBR238は、IOMMU216がコマンドバッファ222に記憶されているコマンドを読み込み且つ実行するように、コマンドバッファ222の開始インデックスに関連付けられている。ELBR236は、イベントログ220の開始インデックスを指し示している。PPRR242は、周辺ページサービス要求(PPSR)テーブル227の開始インデックスを指し示している。
IOMMU216は、IOMMU216と、CPU202等のシステムプロセッサとの間でコマンド及び状態情報を交換するために、メモリベースのキューを使用する。コマンドキューは、図2においてコマンドバッファ222によって示されている。コマンドバッファ222及びイベントログ220は、アクティブなIOMMU216によって実装される。また、IOMMU216は、I/Oページサービス要求キューを実装してもよい。
IOMMU216は、有効となった場合に、下流デバイスから到達する要求(例えば、HyperTransport(登録商標)リンク又はPCIベースの通信を使用して伝達され得る)を遮断し、要求に対してパーミッションチェック及びアドレス変換を行い、変換されたバージョンを、HyperTransport(登録商標)を介して上流方向のメモリ206空間に送信する。他の要求は、変更されずに送られてもよい。
IOMMU216は、パーミッションチェック、割り込み再マッピング及びアドレス変換を行うために、メモリ206内のテーブルから読み取ることができる。デッドロックフリー動作を確実にするために、デバイステーブル226、I/Oページテーブル224及び割り込み再マッピングテーブル228に対するIOMMU216によるメモリアクセスは、アイソクロナス仮想チャネルを使用し、メモリ206内のアドレスのみを参照し得る。
IOMMU216により始められるコマンドバッファ222、イベントログエントリ220及び任意の要求キューエントリ(図示されない)へのメモリ読み取りは、通常の仮想チャネルを使用し得る。
IOMMU216が、自ら処理するあらゆるデバイス要求に対して完全なテーブルルックアップ処理を行う場合には、システム性能は実質的に低下する可能性がある。したがって、IOMMU216の実装は、IOMMU216のインメモリテーブルの内容に対する内部キャッシュを維持することが期待される。動作中に、IOMMU216は、IOMMU216によってキャッシュされたテーブルエントリを更新するときに、適切な無効コマンドを送信するためのシステムソフトウェアを使用し得る。
IOMMU216は、イベントログ220を、通常の仮想チャネルを使用することが可能なメモリ206内に書き込む。IOMMU216は、任意の方法で、メモリ206内の周辺ページサービス要求キュー227に書き込むことができる。メモリ内の周辺ページサービス要求キュー227への書き込みも、通常の仮想チャネルを使用し得る。
システムプロセッサCPU202がフォルト機構を使用する一方で、IOMMU216は、周辺ページ要求に情報提供するために、メモリ内に要求キューを提供する。I/Oデバイス250,252,254の何れも、IOMMU216から変換を要求することができ、IOMMU216は、成功した変換又はページフォルトで応答し得る。
本発明の実施形態において、IOMMU216は、ページテーブルにより管理されるネスト型ページテーブルのための、2レベルのアドレス変換をサポートし得る。ゲスト変換の例は、4Kバイト、2Mバイト及び1GバイトページをサポートするAMD64のロングページテーブルと直接互換性がある。
IOMMU216は、メモリアクセスの要求を処理し、メモリ保護がIOMMU216に対して変換テーブルデータを共有することを許可するように、実装される。この変換テーブルデータは、IOMMU216及び/又はMMU214によって使用されるネスト型ページテーブルデータを含み得る。また、IOMMU216は、変換テーブルの共有がIOMMU216とMMU214との間で許可されないように、実装され得る。
また、ホストOSは、I/Oデバイス主導アクセスに対する変換を行うことができる。IOMMU216は、I/Oデバイスによってアクセスされるメモリアドレスを変換する一方で、ホストOSは、所望の変換を特定するI/Oページテーブルを構築することによって、それ独自のページテーブルを設定してもよい。ホストOSは、新たに構築されたI/Oページテーブルを指し示すデバイステーブルにエントリを生成してもよく、新たに更新されたデバイスエントリをIOMMUに通知し得る。この時点で、対応するIOMMU I/Oテーブル(例えば、グラフィックス又は他のI/Oデバイス)及びホストOS I/Oテーブルは、同じテーブルにマッピングされる。
ホストOSがページの保護又は変換に行う何れの変更も、プロセッサI/Oページテーブル及びメモリI/Oページテーブルの両方で更新され得る。
IOMMU216は、模範的なハイパーバイザ234によって従来的に行われるI/Oタスクを行うように構成されている。このような設定が、保護、隔離、割り込み再マッピング、及び、アドレス変換のためのハイパーバイザの介入の必要性を排除する。しかしながら、IOMMU216によって処理することができないページフォルトが生じたときには、IOMMU216は、解決のためにハイパーバイザ234の介入を要求してもよい。しかしながら、コンフリクトが解決されると、IOMMU216は、再びハイパーバイザの介入なしで、元のタスクを継続し得る。
ハイパーバイザ234は、仮想マシンモニタ(VMM)としても知られており、ゲストVM230,232を分離及び隔離するために、ネスト型変換レイヤを使用する。I/Oデバイス250,252,254等のI/Oデバイスは、I/Oデバイス250,252,254が、それぞれのVMの何れか1つのメモリ空間に含まれるように、同時に作動しているゲストVMの何れかに直接割り当てられ得る。さらに、I/Oデバイス250,252,254等のI/Oデバイスは、ハイパーバイザ234又は別のVMに属するメモリ又は他のI/Oデバイスを破損又は検査することができない。ゲストVM内には、1つのカーネルアドレス空間及びいくつかのプロセス(ユーザ)アドレス空間がある。ゲスト変換レイヤを使用せず、ネスト型変換情報を使用して、I/Oデバイスにカーネル特権が与えられてもよく、その結果、ゲストVMメモリの全内容に比較的自由なアクセスを有することになる。
ユーザレベル(プロセス)I/Oおよび先進の計算モデルを有効にするために、ゲスト変換レイヤは、ゲストプロセス及びI/Oの分離及び隔離のために実装される。IOMMU216内でゲスト変換を使用して、I/Oデバイスの何れも、例えばAPD104又はI/Oデバイス250,252,254等のゲストVM又はI/Oデバイス内のプロセスに直接割り当てられてもよく、ユーザプロセスと同じアドレス空間内で計算を実行し得る。プロセスアドレス空間は、IOMMU216に対して識別されてもよく、その結果、適切な変換テーブルが使用される。すなわち、各メモリ変換は、プロセスアドレス空間ID(PASID)でタグ付けされ得る。より具体的には、PASIDの一例が、x86キャノニカルゲストVM内でアプリケーションアドレス空間を識別するために使用されてもよい。PASIDは、共有ローカルメモリ268内に存在している同時使用のコンテキストを隔離するために、I/Oデバイス250,252,254等のI/Oデバイス上で使用され得る。
デバイスIDは、アドレス変換又は割り込み再マッピング操作のためのネスト型マッピングテーブルを選定するために、IOMMU216によって使用され得る。PASID及びデバイスIDは、アプリケーションアドレス空間を一意に識別するために使用される。
I/Oバスを使用してI/Oデバイスを接続するシステムにおいて、バスプロトコルは、デバイスID、アドレス及びアクセスタイプと同様に、開始するPASIDを保持するように拡張され得る。PCI−SIG PCI−E仕様においては、バスパケットのPASIDのトランザクションレイヤパケット(TLP)のプレフィックスは、符号246によって表示され、上述した米国特許出願第61/423,062号で考察されている、適切なゲストCR3 GCR3テーブルを選定するために、IOMMU216によってその後に使用され得るPASID情報を保持する。これにより、プロセス及びVM間のメモリ隔離を確実にする。
プロセッサダイ上にI/Oデバイスを統合させるシステムにおいては、I/Oデバイスをメモリに接続するためのI/Oバスを使う必要がない。これらの場合、PASIDは、有線で、又は、統合されたI/Oデバイスと統合されたIOMMUとの間のタグとして、簡単に運ばれ得る。ソフトウェア互換性のために、統合されたI/Oデバイスは、ATSビヘイビア及びセマンティクスをエミュレートすることが推奨される。何れの場合でも、メモリ隔離は、プロセス及びVM間で保証される。
パフォーマンス又はセキュリティのためにローカルメモリ268等のローカルメモリを含む高性能のマルチコンテキストI/Oデバイスは、IOMMU216によって提供される同様のメモリ隔離及び分離の保証を提供し得る。
そのようなデバイスの一般的なアーキテクチャについては、システム構成要素CPU202及びIOMMU216を例示している図2が再び参照される。I/Oデバイスの多くの部分が任意であり、そのため、機能がバイパスされる場合にはマルチプレクサ270,272,274,276が示される。例えば、システムアドレス空間へのアクセスは、ATS/PRIユニット262とともに機能するIOTLB264を通じてフローするか、又は、サービス用のIOMMU216に直接フローするかの何れかであり得る。デバイスプロセッシングコンプレックス258は、本明細書に記載されるように、APD104等の汎用APD、I/Oデバイス250,252,254等のI/Oデバイス、又は、他の特別な計算エンジンを示し得る。
本発明の実施形態において、データアクセスは、CPU202又はデバイスプロセッシングコンプレックス258により開始し得る。データアクセスは、ローカルメモリ268からのローカルメモリアクセス、又は、メモリ206からのシステムアクセスで終了し得る。例示的な実施形態において、変換効率化のためにATSを使用するIOTLB264の機能性が追加されてもよい。高度な機能及び効率性のために、PPR/PRIサポートが追加され得る。ATS/PRIの高度な機能性は、符号262によって表示されている。周辺装置は、カスタムアドレス変換及びアクセス制御のために、プライベートMMU260等のプライベートMMUを提供してもよい。
例として、周辺ローカルメモリ268の実装は、各デバイスにとって固有であり得る。しかしながら、一般的には、この実装は、望ましくは、各デバイスが以下のような特性を維持することを確保する:
1.デバイスプロセッシングコンプレックス258からメモリ206へのアクセスは、ゲスト変換に必要とされる方針を実施するために、プライベートMMU260又はIOMMU216によって処理される。
2.デバイスプロセッシングコンプレックス258からメモリ206へのアクセスは、ネスト型変換に必要とされる方針を実施するために、IOTLB264(ATS及び/又はPRI要求262を使用してもよい)又はIOMMU216によって処理される。
3.CPU202又はデバイスプロセッシングコンプレックス258から周辺ローカルメモリ268へのアクセスは、ゲスト変換に必要とされる方針を実施するために、プライベートMMU260によって処理される。
4.CPU202又はデバイスプロセッシングコンプレックス258から周辺ローカルメモリ268へのアクセスは、ネスト型変換に必要とされる方針を実施するために、ローカルメモリ保護マップ266によって処理される。
符号314,312によって表示されている図3A及び3Bは、図2の例示的な実施形態に従った2レイヤアドレス変換システムの例示的なブロック図のとおり、ともに機能する。さらに具体的には、本システムは、I/Oページテーブル224のデータ構造に設定されているとおり、ゲストアドレス変換テーブル構造314及びシステムアドレス変換テーブル構造312を含む。4レベルのページテーブル構造が例示され、4Kバイトの物理ページ331にアクセスするために使用される。本発明の実施形態は、より多い又はより少ないレベル(例えば、3レベルのページテーブル構造は2Mバイトの物理ページを指し、2レベルのページテーブル構造は1Gバイトの物理ページを指す等)を使用するページテーブル構造を提供する。
GVAは、アドレス変換トランザクション(例えば、ATSに対する要求)を発行するI/Oデバイスによって提供されてもよい。最終的に、GVAは、アクセスするデータバイト330に関連したSPAに変換されてもよい。
GCR3テーブルエントリ317は、ページマップレベル4(PML4)テーブルアドレス332を含む。PML4テーブルアドレス332は、ルートページテーブルポインタ334に対応しているが、GPAの形式である。システム314,312は、PML4テーブルアドレス332をGPA形式からSPA形式に転換させるネスト型ウォーク336を行うように、ともに機能する。SPAは、レベル4ページテーブル338のルートのシステム物理アドレスに対応する。このように、例えばルートページテーブルポインタ334に関連付けられた太い黒線は、ネスト型ウォーク336を使用して取得されるSPAを示し得る。
レベル4ページテーブル338は、ルートページテーブルポインタ334を使用して識別され、レベル4ページテーブル338のエントリは、ページマップレベル4(PML4)オフセット337を使用して、インデックス化される。PML4のオフセット337は、変換されることになるGVA326の39〜47ビットと関連付けられている。したがって、PML4のエントリ(PML4E)339は、ルートページテーブルポインタ334、レベル4ページテーブル338及びPML4オフセット337を使用して配置される。ゲストがGVA326を使用してメモリの参照を試みるとき、PML4E339がGPAであることから、システム314,312は、ネスト型ウォーク336を使用してPML4E339をSPAに変換するように、ともに機能する。
ネスト型ウォーク336を完了するために、システム312は、メモリ206内に設定されたI/Oページテーブル224構造を使用して実装されてもよく、これにより、ゲストアドレス変換テーブル構造314からGPAごとにGPAからSPAへの転換を遂行する。例えば、GPA340は、ルートページテーブルポインタ341に対応するSPAを取得するために、変換用のPML4E339とともにロードされてもよい。GPA340は、システムアドレス変換テーブル構造312の様々なテーブルをインデックス化するために使用されるオフセットを含む。
ネスト型ウォーク336は、ページマップレベル4(PML4)テーブル344のルートを配置するために、PML4E339に関連付けられたnCR3 342を使用する。PML4オフセット346(GPA340の39〜47ビット)がPML4テーブル344へのインデックス化するために使用され、エントリnPML4E348を取得する。nPML4E348は、ページディレクトリポインタ(PDP)テーブル350のルートを指し示し、PDPオフセット352(GPA340の30〜38ビット)がPDPテーブル350へのインデックス化するために使用され、エントリnPDPE354を取得する。
nPDPE354は、ページディレクトリ(PD)テーブル356のルートを指し示し、PDオフセット358(GPA340の21〜29ビット)がPDテーブル356へのインデックス化するために使用され、エントリnPDE360を取得する。nPDE360は、ページテーブル362のルートを指し示し、PTオフセット364(GPA340の12〜20ビット)がページテーブル362へのインデックス化するために使用され、エントリnPTE366を取得する。nPTE366は、ゲスト4KBメモリページ368のルートを指し示し、物理ページオフセット370(GPA340の0〜11ビット)がゲスト4KBメモリページ368へのインデックス化するために使用され、エントリgPML4E372を取得する。gPML4E372は、GPAのPML4E339に対応するSPA値であり、レベル3ページテーブル374をゲストアドレス変換テーブル構造314内に配置するために、ルートページテーブルポインタ341によって使用される。
レベル3ページテーブル374は、PDPE376(GPA形式)を取得するために、PDPオフセット375を使用してインデックス化される。ネスト型ウォーク336は、GPAのPDPE376を、ルートページテーブルポインタ377に対応するSPA値に転換するために使用される。ルートページテーブルポインタ377は、PDE380(GPA形式)を取得するためにページディレクトリオフセット379(GVA326の21〜29ビット)を使用してインデックス化されたレベル2ページテーブル378を配置するために使用される。ネスト型ウォーク336は、GPAのPDE380を、ルートページテーブルポインタ381に対応するSPA値に転換するために使用される。
本発明の実施形態において、ルートページテーブルポインタ381は、PTE384(GPA形式)を取得するためのページテーブルオフセット383(GVA326の12〜20ビット)を使用してインデックス化されたレベル1ページテーブル382を配置するために使用される。ネスト型ウォーク336は、GPAのPTE384を、ルートページテーブルポインタ385に対応するSPA値に転換するために使用される。ルートページテーブルポインタ385は、データバイト330を取得するために物理ページオフセット386(GVA326の0〜11ビット)を使用してインデックス化された4Kバイト物理ページ331を配置するために使用される。
このように、システム314,312は、2レイヤのGVAからGPAへのアドレス変換及びGPAからSPAへのアドレス変換を行うために、ページテーブルウォークのネスト型カスケードを使用する。ネスト型アドレス処理の2つのレイヤが示されているが、同様のネスト型/再帰コールを使用して、追加的なレイヤを実装してもよい。システムアドレス変換テーブル構造312及びゲストアドレス変換テーブル構造314に関連付けられた変換は、ハードウェア内で実装されてもよい。別個のハードウェアがゲスト/システム変換の各セットに提供されてもよいが、1セットのハードウェアが両方のセットの変換に使用されてもよい。
上記のとおり、従来的な複数の処理デバイスコンピューティングシステムに関連した課題の1つは、別個のメモリシステムを維持すること、及び/又は、共有メモリシステムに関するドライバ管理に関連するオーバーヘッドである。従来的な複数の処理デバイスシステムにおけるこのオーバーヘッドの一例は、複数の処理デバイス間で1セットのデータを共有するとき、2つ以上のコピーコマンドを用意する要件である。
図4は、2つの別個のコピーコマンドを使用した従来のシステムにおけるメモリコピー変換のブロック図400を例示している。便宜上、メモリ402及びAPD又はその他のI/Oデバイス406は、メモリ206及びAPD104又は他のI/Oデバイス250,252,254と実質的に類似であり、再度記述されない。
アドレス変換に加えて、IOMMU216は、I/OデバイスによるDMA転送に対するアクセス保護を提供する。さらに、IOMMU216は、I/Oデバイスを選定するための安全なユーザレベルアプリケーションを提供する。また、IOMMU216は、I/Oデバイスを選定するための安全なVMVMゲストOSアクセスを提供する。
図4に例示されているとおり、複数のコピーコマンドを行うための要件は、不必要なシステムのオーバーヘッドを作り出す。例えば、ソフトウェア構成体とみなされ得る個別のバウンスバッファが、通常、複数のコピーコマンドを用意するために必要とされる。従来的には、バウンスバッファは、64ビットのアドレス指定をサポートしていないデバイスのために、DMAトラフィック用の低システムメモリ内に配置される。OSは、I/Oドライバによって使用される高メモリ内の実際のバッファに、又はそこから、DMAデータをコピーすることができる。一実施例において、この手法は、システムメモリが、1つの処理デバイスから受信したデータ(例えば、画像データ)を、それが操作され得る別の処理デバイス(またはローカルI/Oデバイス)メモリ406にコピーすることを必要とする。ローカルデバイスメモリ406へのコピーは、番号404で表示されている。番号408は、画像データ上で行われる動作(例えば、計算、サブルーチン実行、またはいくつかの機能)を表す。番号410に表示されているとおり、操作が完了すると、画像データは、次いで、システムメモリ402にコピーし戻される必要がある。
IOMMU216は、システムレベルのソフトウェアに大幅な増強を可能とし得る。例えば、1つの増強は、64ビットシステムにレガシ32ビットI/Oデバイスのサポートを提供する。この増強は、バウンスバッファ及び高価なメモリコピーを必要としない。したがって、コピーコマンドに関連したオーバーヘッドが低減される。
図5は、図4に例示されている個別のコピーコマンドの必要性を排除する効率的なメモリ管理システムの例示的なブロック図500である。
図5において、IOMMU516、メモリ506、ゲストOS530,532、及び、ハイバーバイザ534は、IOMMU216、メモリ206、ゲストOS230および232、およびハイパーバイザ235と、それぞれ実質的に同様である。さらに、I/Oデバイス550,552,554は、APD104又は他のI/Oデバイス250,252,254と実質的に同様である。したがって、便宜上、図2及び図5における同様の要素の記述は、繰り返されない。
また図5において、符号590,592,594の各々は、例示的なI/Oデバイス590,552,554によって送信されるDMA要求を表す。IOMMU516によって提供されるネスト型ページングトランザクションは、1つの動作(例えば、計算、サブルーチン実行又はいくつかの機能)のある要素を取り出して、システムが直接操作を通じて動作を効率的に適応させるために、例示的なI/Oデバイス550,552,554を提供する。
例示的実施形態では、APD又は他のI/Oデバイスの直接操作を通じて、画像データを含み得るメモリ506を直接操作し得るが、画像データは、依然としてメモリ506内にある。メモリ506のこの直接的な操作によって、メモリ506及びI/Oデバイス550,552,554は、同じゲスト仮想アドレス空間から離れて動作することが可能となる。この実施形態では、IOMMU516は、I/Oデバイス550,552,554によるメモリ506への直接アクセスを容易にするために、マッピングされたゲストポインタを使用することができる。これにより、データ操作の前、又は、データへの任意の操作の完了後に、メモリ506が、まずデータ(画像データ)をI/Oデバイス550,552,554にコピーする必要性を排除する。直接メモリ操作及び本明細書に記載される他の拡張を介して、これらの追加的なコピー手順を排除することにより、改善された効率性及びデータコピーに関連するオーバーヘッドの低減を可能にする。
図6は、本発明の別の態様による動作フロー図600である。示される実施例において、システム600は、メモリ606と、IOMMU616と、周辺デバイス687とを含み、これらは、メモリ206と、IOMMU216と、I/Oデバイス254と実質的に同様である。
一実施形態では、メモリ606は、イベントログ620と、コマンドバッファ622と、I/Oページテーブル624と、デバイステーブル626と、PPSRキュー627と、割り込み再マッピングテーブル628と、ゲストOS630と、ゲストOS632と、ハイパーバイザ634とを含む。これらの要素は図2に記述されているものと同様である。ATS要求680、ATS応答682、PRI要求684及びPRI応答686は、例示的な図2に従って導入されたATS/PRI262のさらに詳細な例示である。周辺装置687は、符号688によって表示されているようにATS応答を評価するように構成されてもよく、符号689によって表示されているようにPRI応答を評価するように構成されてもよい。
本発明の別の態様は、GPAをSPAに変換するために周辺装置687によって使用されるATSを提供する。図6において、ATSは、仮想化のための安全なデバイス主導のアドレス変換を提供する。GPAをSPAに変換するために、PCI−E接続されている周辺装置687は、IOMMU616によって認識されるPASIDのTLPプリフィックス有り又は無しで、ATS要求680(PCIのSIG仕様)を発行する。IOMMU616は、必要なときには、IOTLB264からのキャッシュされた情報を使用して、及び/又は、テーブルウォーカ244を使用して、ページテーブルをウォークすることによって、アクセス特権を評価する。IOMMU616は、ATS680要求の結果を判定し(681)、結果として得られるアクセス特権は、プロセッサ及び/又はハイパーバイザ634による介入を必要とすることなくATS応答682に戻される。
さらに、アドレス変換サービスは、GVA又はGPAをSPAに変換するために、周辺装置687によって要求され得る。GVAをSPAに変換するために、PCIeによって接続されている周辺装置687は、フラグ(例えば、アクセス及びダーティビット状態)及びカノニカル仮想アドレスを提示するための有効なPASIDを含むATS要求680を発行する。統合型周辺装置687は、フラグ及び仮想アドレスを提示するために、有線信号等、ATSプロトコル以外の手段を使用してもよい。IOMMU616は、効率化のために、IOTLB264にキャッシュされた情報を使用して、アクセス特権を評価し、必要なときには、テーブルウォーカ244を使用してページテーブルをウォークすることができる。AMD64セマンティクスにマッチさせるために、IOMMUは、以前にキャッシュされた情報がそのアクセスに対して不十分な権利を指摘した場合には、そのゲストページテーブル、I/Oページテーブル624を再度ウォークすることができる。結果として得られるアクセス特権は、ATS応答682に戻される(681)。ゲストアドレスのための追加情報を有するために、IOMMU616は、有効なPASIDを含むPCIeのTLPのプレフィックスを使用する。
IOMMU616は、周辺装置687があたかも実際にメモリにアクセスしたかのようにATS要求680に対応しながら、GVAページテーブル、I/Oページテーブル624内のアクセストビット及びダーティビット(図示されない)を更新する必要がある。GVAのアクセストビット及びダーティビットを評価する目的で、IOMMU616は、ATS要求680のATSパケット(図示されない)内に示されるアクセスレベルを使用し得る。読み取り専用アクセスのためのATS要求680は、アクセストビット設定を判定してもよく、読み書きアクセスのためのATS要求680は、ダーティビット設定を判定し得る。GPAを処理するとき、IOMMU616は、ページテーブルを読み取り専用として扱い得る。
さらに、ソフトウェアは、IOMMU616に周辺装置687への無効化要求を生成させるためのINVALIDATE_IOTLB_PAGESコマンドを発行する。周辺装置687に下流送信される無効化要求は、内容がGPAの場合、有効なPASIDプリフィックスを欠いている。周辺装置687に下流送信される無効化要求は、内容がGVAであり、PASIDがPASIDのTLPのプリフィックス内にある場合、有効なPASIDのプリフィックスを有する。
IOTLB264を有する周辺装置687が、不十分な特権による不履行の原因となるキャッシュされた変換エントリを無効にし、ATSを使用して新たな変換を取得しなければならない状況について、以下に説明する。
周辺装置687は、ネスト型(ホスト)アクセスのためのアクセス特権を判定するために、IOTLB264からのアドレス変換情報、又は、ATSを介して取得されたアドレス変換情報を使用し得る。AMD拡張として、IOTLB264を有する周辺装置687は、アクセスビット及びダーティビットの両方がゲストアクセス用のIOTLBエントリ内で「1」に設定されている場合、不十分な特権による不履行の原因となるキャッシュされたエントリを無効化し得る。周辺装置687は、次いで、ATSを使用して変換情報を要求し、アクセスを再試行しなければならない。修正された特権が再試行にとって不十分である場合、周辺装置687は、そのアクセスを放棄するか又は権限昇格のためのPCI−E PRI要求684を発行するために適切な措置を取らなければならない。
ATSの場合、IOMMU616は、ATS応答682で送り返す結果を判定する681ために必要な全ての情報を有する。しかしながら、PRIの場合、PRI要求は、ゲストOS630,632、ハイパーバイザ634、及び/又は、ソフトウェア(SW)に送られ、PRI応答686の結果を判定すること(683)を補助する。例えば、PRI要求684は、ソフトウェア方針決定が、ゲストOS630,632及び/又はハイパーバイザ634によって行われることを必要とする。PRI、PCI−Sig仕様は、周辺装置687が、例示的なVMブロック629(例えば、ソフトウェア)からメモリ管理サービスを要求することを許可する。
さらに、IOMMU616は、任意に、PCI−SIG ATS仕様を補完するものとして、PRI仕様をサポートする。PRIは、ATSと併せて、周辺ページフォルトサポートを提供する。PRIに対するIOMMU616のサポートは、PPRサービスである。
従来のシステムにおいて、OSは、I/Oに使用されるメモリページを固定することを必要とされる。固定されたメモリとは、常時、実メモリに維持されるメモリページを指す。メモリページを固定することで、ページャが他の利用のためにメモリページを盗むことを禁止する。メモリページは、通常、DMAの開始前に固定されなければならず、DMAの完了時に、固定解除されてもよい。固定されたページは、多くの場合、制限された容量の別個のメモリプールから割り付けられる。
ATS及びPRIは、周辺装置687が、I/Oに固定されていないページを使用できるようにするために、ともに使用され得る。ATS要求680を処理する際、IOMMU616は、不十分なアクセス特権又は存在しないページが検出されたときに、エラーを信号で伝えない。その代わりに、IOMMU616は、I/Oページテーブル624から算定されたパーミッションを返す。周辺装置687は、適切なアクション(例えば、I/Oページテーブル624にページテーブルエントリをサービスするためのシステムソフトウェアを要求するためにPRIを使用する)を判定するために、PRI応答686を検討する。周辺ページ要求サービス(PPR)/PRIの使用は、周辺装置687が、I/Oページテーブル624のページのアクセス特権を変更することを、OSに対して要求できるようにする。PPR付きのATSの使用は、システムが、低減されたメモリフットプリントで、効率的に動作することを可能にし得る。
本発明の例示的な操作において、IOMMU616は、全てのメモリ606がDMAジョブ要求を処理するために物理的に利用できない場合、メモリを周辺装置687に提供するよう実装される。例えば、周辺装置687がATS要求680を送信し、メモリがメモリ606内で物理的に利用できない場合には、一般的に、ページフォルトの結果となり得る。ページフォルトは、ATS_Calc623を介したメモリアクセス試行に応答したコマンドバッファ622からIOMMU616への信号によって示され得る。
また、周辺装置687がATS対応である場合、周辺装置687は、IOMMU616に対してPRI要求684を発行し得る。PRI要求684は、IOMMU616によって受信され、IOMMU616は、ソフトウェア方針683がPRI応答686を算定するために必要とされるため、PRI要求684に応答して、ゲストOS630、ゲストOS632及びハイパーバイザ634を含むシステムブロック629に信号631を送信する。ハイパーバイザ634は、IOMMU信号PRI_Calc631を処理することに関してゲストOS630,632よりも優先され、PRI_Calc631の処理をゲストOS630,632に送る前に、PRI_Calc631を処理することの第1の拒否権を有する。周辺装置687がPRI要求684を送信し、メモリがメモリ606内で物理的に利用できない場合には、通常、ページフォルトの結果となり得る。ページフォルトは、PRI_Calc631を介したメモリアクセス試行に応答したコマンドバッファ622からIOMMU616への信号によって示され得る。
ページフォルトの結果となった場合、IOMMU616は、ATS_Calc623又はPRI_Calc631を、PPSRテーブル627(例えば、PPRキュー)に送信するよう構成されている。これは、IOMMU616が、有効なPRI要求684を受信すると、仮想アドレス空間に対する変更を要求するためのPPRメッセージを生成するためである。VMブロック629内に設定されているソフトウェア方針は、ページ内でのスワッピング、新たなページの割り付け、要求の拒否、セキュリティ権限の更新、コピーオンライト操作の提供、又は、決定的なページフォルトを防ぐための任意の他の便宜によって、ページフォルト問題を解決することができる。
PPRに対応するIOMMU616は、メモリ606内の共有サーキュラーバッファ(図示されない)によって、PPI要求をホストソフトウェア683に報告してもよい。IOMMU616は、有効となったときに、I/OデバイスのPPRレコードをバッファに書き込んでもよい。ホストソフトウェア683は、ホストソフトウェア683がPPR要求ログエントリを使い果たしたということをIOMMU616に示すために、IOMMU216のPPR要求ログのヘッドポインタ(図示されない)をインクリメントする。ソフトウェア683がPPR要求601の処理を完了したとき、PPRキュー627は、I/Oデバイス687に結果を通知するために、IOMMUジョブ完了コマンドを使用する。
より多くのメモリについての、メモリ606へのIOMMU616の要求が受け入れられると、仮想ブロック629内のゲストOS630,632のうちの1つが、メモリ606内に物理的に存在しない(すなわち、I/Oページテーブル624のページがOSによって未だにロードされていない)メモリ606内のページへのアクセスが試みられた場合にのみ、ディスクページ(すなわち、物理メモリ)をメモリ606内にコピーし得る。
通常、アプリケーション211が処理を開始するときには、アプリケーション211のページはメモリ内に存在していない。その結果、DMA操作を実行するために必要なアプリケーション211の重要なページがPRI応答686に関連してメモリ606にロードされる前に、多くのページフォルトが生じる可能性がある。仮想メモリブロック629がDMA動作のために必要なページのみをロードするように動作する場合、結果として、仮想ブロック629内のより多くのプロセッサが、ロードされることを許可されることになる。より多くのプロセッサが、仮想ブロック629にロードされることが可能である場合、GCR3レジスタをロードするために必要な時間の量は、前述の表題「Input/Output Memory Management Unit Two−Layer Addressing」の米国特許出願第61/423,062号に記載されるように、低減される。
ソフトウェア方針683がVMブロック629によって開始されると、コマンドバッファ622は、矢印625によって表示されているように、IOMMU616に通知を行う。IOMMU616は、ATS応答682又はPRI応答686を、IOMMU616に送信する。周辺装置687は、符号688,689でそれぞれ表示されているとおり、結果としてのATS応答682及びPRI応答686を評価する。あるいは、IOMMU616は、解決がない場合、イベントログ620に書き込みを行ってもよく、結果として決定的なページフォルトが生じる。
図7は、本発明の実施形態を実施する例示的な方法700のフロー図である。方法700において、ステップ702は、メモリ402内のデータへのアクセスと関連付けられたポインタを、IOMMU216を介してI/Oデバイス406に送ることを示している。I/Oデバイスは、そのI/Oデバイスに対してローカルであるI/Oデバイスメモリ内にデータをコピーする必要なく、IOMMUを介してメモリ内のデータにアクセスする。
ステップ704は、I/Oデバイスによって、ポインタに基づいてメモリ内のデータに操作を行うことを示している。IOMMU216は、IOMMU216によって送られたポインタに基づいて、I/Oデバイス406を制御することができる。I/Oデバイス406は、メモリ402にアクセスする。この動作は、I/Oデバイス406のローカルメモリ266に、メモリ402内のデータをコピーする動作404を行うことを必要としない。また、410で操作されたデータをメモリ402にコピーバックするコピー動作412の必要もない。
(結論)
発明の概要及び要約は、本発明者によって企図される本発明の1つ以上ではあるが全てではない例示的な実施形態を示しており、したがって、本発明及び添付の特許請求の範囲を如何様にも限定することを意図するものではない。
本発明は、その特定の機能の実現及び関係を示す機能的な構成要素を用いて上述されている。これらの機能の構成要素の境界線は、説明の便宜のために本明細書に恣意的に定義されている。その特定の機能の実現及び関係が適切に行われる限り、代替的な境界線が定義されてもよい。
特定の実施形態について上述した説明は、当業者の範囲内の知識を適用することにより、他者が、様々な応用のために、このような特定の実施形態を、過度な実験をすることなく、本発明の概括的な概念から逸脱することなく、容易に変更及び/又は改造し得る、本発明の概括的な特徴を十分に公表するであろう。したがって、そのような改造及び変更は、本明細書に提示される教示及び指導に基づいて、開示される実施形態の等価物の意味及び範囲内に含まれることが意図される。本明細書の語法又は用語法は、教示及び指導に鑑み、当業者により理解されるべきものであるように、本明細書における語法又は用語法は、説明目的であって制限する目的ではないことを理解されたい。
本発明の広がりや範囲は、上記の例示的な実施形態の何れによっても限定されるべきではなく、以下の特許請求の範囲及びそれらの均等物によってのみ定義されるべきである。

Claims (12)

  1. メモリ内のデータへのアクセスに関連するポインタを、入出力メモリ管理ユニット(IOMMU)を介して入出力(I/O)デバイスに送ることであって、前記I/Oデバイスは、前記データをローカルI/Oデバイスメモリにコピーすることなく、前記IOMMUを介して前記メモリ内の前記データにアクセスすることと、
    前記I/Oデバイスによって、前記ポインタに基づいて前記メモリ内の前記データに関する操作を行うことと、を含む、
    方法。
  2. 前記IOMMUは、ハイパーバイザ又はゲストオペレーティングシステム(OS)による介入を必要とすることなく、前記ポインタを送るように構成されている、請求項1に記載の方法。
  3. 前記ポインタは、前記I/Oデバイスによって使用できるように構成されており、プロセスは、前記ポインタを再構成することなく、仮想マシンにおいて作動する、請求項1に記載の方法。
  4. 前記I/Oデバイスによって、前記IOMMUと関連付けられたネスト型ページングトランザクションを使用して、前記メモリ内の前記データを操作することをさらに含む、請求項1に記載の方法。
  5. 前記データは、画像データを含む、請求項1に記載の方法。
  6. 前記メモリ及び前記I/Oデバイスは、同じゲスト仮想アドレス空間から動作して、前記ゲストOSによる前記メモリ内の前記データの直接操作を提供する、請求項1に記載の方法。
  7. 入出力メモリ管理ユニット(IOMMU)を備え、
    前記IOMMUは、
    メモリ内のデータへのアクセスと関連付けられたポインタを、入出力(I/O)デバイスに送ることであって、前記I/Oデバイスは、前記データをローカルI/Oデバイスメモリにコピーすることなく、前記IOMMUを介して前記メモリ内の前記データにアクセスすること、を行うように構成されており、
    前記ポインタは、前記I/Oデバイスが前記メモリ内の前記データに関する操作を行うことを可能にするように構成されている、
    装置。
  8. 前記IOMMUは、ハイパーバイザ又はゲストオペレーティングシステム(OS)による介入を必要とすることなく、前記ポインタを送るように構成されている、請求項7に記載の装置。
  9. 前記ポインタは、前記I/Oデバイスによって使用できるように構成されており、プロセスは、前記ポインタを再構成することなく、仮想マシンにおいて作動する、請求項7に記載の装置。
  10. 前記IOMMUと関連付けられたネスト型ページングトランザクションは、前記I/Oデバイスが前記メモリ内の前記データを操作することを可能にする、請求項7に記載の装置。
  11. 前記メモリ内の前記データは、画像データを含む、請求項7に記載の装置。
  12. 前記メモリ及び前記I/Oデバイスは、同じゲスト仮想アドレス空間から動作して、前記ゲストOSによる前記メモリ内の前記データの直接操作を提供する、請求項7に記載の装置。
JP2014544777A 2011-11-30 2012-11-19 効率的なメモリ及びリソース管理 Active JP5870206B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/308,211 US8719464B2 (en) 2011-11-30 2011-11-30 Efficient memory and resource management
US13/308,211 2011-11-30
PCT/US2012/065860 WO2013081884A1 (en) 2011-11-30 2012-11-19 Efficient memory and resource management

Publications (3)

Publication Number Publication Date
JP2015500524A true JP2015500524A (ja) 2015-01-05
JP2015500524A5 JP2015500524A5 (ja) 2016-01-14
JP5870206B2 JP5870206B2 (ja) 2016-02-24

Family

ID=47436175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014544777A Active JP5870206B2 (ja) 2011-11-30 2012-11-19 効率的なメモリ及びリソース管理

Country Status (6)

Country Link
US (1) US8719464B2 (ja)
EP (1) EP2786259A1 (ja)
JP (1) JP5870206B2 (ja)
KR (1) KR101861297B1 (ja)
CN (1) CN104040518B (ja)
WO (1) WO2013081884A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989136B2 (en) 2019-12-03 2024-05-21 International Business Machines Corporation Methods and systems for translating virtual addresses in a virtual memory based system

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9319254B2 (en) * 2012-08-03 2016-04-19 Ati Technologies Ulc Methods and systems for processing network messages in an accelerated processing device
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US9479466B1 (en) * 2013-05-23 2016-10-25 Kabam, Inc. System and method for generating virtual space messages based on information in a users contact list
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US9396113B2 (en) 2013-08-06 2016-07-19 Oracle International Corporation Flexible configuration hardware streaming unit
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9798377B2 (en) 2014-10-08 2017-10-24 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10055136B2 (en) * 2015-07-29 2018-08-21 Red Hat Israel, Ltd. Maintaining guest input/output tables in swappable memory
US9846592B2 (en) * 2015-12-23 2017-12-19 Intel Corporation Versatile protected input/output device access and isolated servicing for virtual machines
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) * 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
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
US10120709B2 (en) 2016-02-29 2018-11-06 Red Hat Israel, Ltd. Guest initiated atomic instructions for shared memory page host copy on write
US10191859B2 (en) 2016-03-31 2019-01-29 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10678702B2 (en) 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US10109099B2 (en) * 2016-09-29 2018-10-23 Intel Corporation Method and apparatus for efficient use of graphics processing resources in a virtualized execution enviornment
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN106874212A (zh) * 2016-12-30 2017-06-20 郑州云海信息技术有限公司 一种基于ipsan的存储器的通信方法和系统
US11200183B2 (en) * 2017-03-31 2021-12-14 Intel Corporation Scalable interrupt virtualization for input/output devices
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10565126B2 (en) * 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
CN109582599B (zh) * 2017-09-29 2023-12-22 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US20190227942A1 (en) * 2018-01-24 2019-07-25 Dell Products, Lp System and Method to Handle I/O Page Faults in an I/O Memory Management Unit
US10990436B2 (en) * 2018-01-24 2021-04-27 Dell Products L.P. System and method to handle I/O page faults in an I/O memory management unit
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US11249918B2 (en) * 2018-10-30 2022-02-15 Hewlett Packard Enterprise Development Lp Mapping entry invalidation
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
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11182092B1 (en) 2020-07-14 2021-11-23 Red Hat, Inc. PRI overhead reduction for virtual machine migration
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
CN112507649B (zh) * 2020-12-23 2024-04-02 珠海一微半导体股份有限公司 一种模拟版图的数模引脚映射到数字版图的方法
EP4315084A1 (en) * 2021-03-25 2024-02-07 INTEL Corporation Pasid granularity resource control for iommu
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005500592A (ja) * 2001-04-24 2005-01-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 共有メモリを用いて仮想メモリを実現するマルチプロセッサシステムならびにページ化メモリの整合性を管理するためのページ差し替え方法
JP2005018620A (ja) * 2003-06-27 2005-01-20 Toshiba Corp 情報処理システムおよびメモリ管理方法
JP2008508598A (ja) * 2004-07-30 2008-03-21 インテル コーポレイション アーキテクチャイベントの間のプロセッサリソースの保持
JP2011023000A (ja) * 2009-07-14 2011-02-03 Intel Corp マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454414B2 (en) * 2005-08-30 2008-11-18 International Business Machines Corporation Automatic data retrieval system based on context-traversal history
US7653803B2 (en) * 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
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
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
US8627413B2 (en) * 2009-11-23 2014-01-07 Symantec Corporation System and method for authorization and management of connections and attachment of resources
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8244978B2 (en) * 2010-02-17 2012-08-14 Advanced Micro Devices, Inc. IOMMU architected TLB support

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005500592A (ja) * 2001-04-24 2005-01-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 共有メモリを用いて仮想メモリを実現するマルチプロセッサシステムならびにページ化メモリの整合性を管理するためのページ差し替え方法
JP2005018620A (ja) * 2003-06-27 2005-01-20 Toshiba Corp 情報処理システムおよびメモリ管理方法
JP2008508598A (ja) * 2004-07-30 2008-03-21 インテル コーポレイション アーキテクチャイベントの間のプロセッサリソースの保持
JP2011023000A (ja) * 2009-07-14 2011-02-03 Intel Corp マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989136B2 (en) 2019-12-03 2024-05-21 International Business Machines Corporation Methods and systems for translating virtual addresses in a virtual memory based system

Also Published As

Publication number Publication date
JP5870206B2 (ja) 2016-02-24
KR20140102695A (ko) 2014-08-22
US8719464B2 (en) 2014-05-06
WO2013081884A1 (en) 2013-06-06
EP2786259A1 (en) 2014-10-08
KR101861297B1 (ko) 2018-05-25
US20130138840A1 (en) 2013-05-30
CN104040518B (zh) 2016-11-16
CN104040518A (zh) 2014-09-10

Similar Documents

Publication Publication Date Title
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
US20130145055A1 (en) Peripheral Memory Management
US11995462B2 (en) Techniques for virtual machine transfer and resource management
US20130145051A1 (en) Direct Device Assignment
JP6110946B2 (ja) ゲスト仮想マシン内の仮想入出力メモリ管理ユニット
US9606936B2 (en) Generalized control registers
US8578129B2 (en) Infrastructure support for accelerated processing device memory paging without operating system integration
US8478922B2 (en) Controlling a rate at which adapter interruption requests are processed
US11907542B2 (en) Virtualized-in-hardware input output memory management
US20130262736A1 (en) Memory types for caching policies
US20120246381A1 (en) Input Output Memory Management Unit (IOMMU) Two-Layer Addressing
CA2800632C (en) Enable/disable adapters of a computing environment
US9459907B2 (en) Guest controlled malicious payload protection
US10140148B1 (en) Copy based IOMMU emulation for out-of-process emulated devices

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151118

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151118

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160108

R150 Certificate of patent or registration of utility model

Ref document number: 5870206

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250