JP2013519965A - Tlbサポート設計のiommu - Google Patents

Tlbサポート設計のiommu Download PDF

Info

Publication number
JP2013519965A
JP2013519965A JP2012553997A JP2012553997A JP2013519965A JP 2013519965 A JP2013519965 A JP 2013519965A JP 2012553997 A JP2012553997 A JP 2012553997A JP 2012553997 A JP2012553997 A JP 2012553997A JP 2013519965 A JP2013519965 A JP 2013519965A
Authority
JP
Japan
Prior art keywords
address translation
cache
management unit
translation information
memory management
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
JP2012553997A
Other languages
English (en)
Other versions
JP2013519965A5 (ja
JP5650766B2 (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 JP2013519965A publication Critical patent/JP2013519965A/ja
Publication of JP2013519965A5 publication Critical patent/JP2013519965A5/ja
Application granted granted Critical
Publication of JP5650766B2 publication Critical patent/JP5650766B2/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/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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • 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/654Look-ahead translation

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)
  • Stored Programmes (AREA)

Abstract

【解決手段】
実施形態は、ページテーブルの構造及びフォーマットに依存しない改良されたトランスレーション挙動を有する入力/出力メモリ管理ユニット(IOMMU)のより小さくより単純なハードウエア実装を可能にする。実施形態はまた、デバイスに依存しない構造及び実装の方法を提供し、ソフトウエアのより大きな一般性を可能にする(より少ない特定のソフトウエアバージョンは同時に開発コストを低減する)。
【選択図】図10

Description

本発明は概してコンピュータシステムに関し、より特定的には入力/出力メモリ管理ユニット(IOMMU)に関する。
メモリ管理ユニット(MMU)は中央処理ユニット(CPU)に関連付けられ得る。例えばCPU_MMUは、CPUによって用いられる仮想アドレスをシステムメモリに対応する物理アドレスへとトランスレートするように構成され、そしてCPU_MMUはアクセス(存在、読み出し、書き込み等)を認証して、CPUに関連付けられるメモリオーバーコミット、リロケーション及び保護を可能にする。
x86_CPUに関連しているシステムにおいては、比較的最近、入力/出力周辺機器に関連付けられる入力/出力(IO)MMUが定義されるようになってきた。入力/出力メモリ管理ユニット(IOMMU)は、例えば周辺機器によって使用される仮想アドレスに関連付けられる周辺機器要求に応答してシステムメモリからトランスレーション情報をリトリーブして(retrieve)、その仮想アドレスをシステムメモリの対応物理アドレスへとトランスレートする。
IOMMUは、典型的には、主システムメモリの内容を調べて必要なトランスレーション情報を探し出す(ページテーブルウォークを行う)ページテーブルウォーカー論理(page-table walker logic)を含み得る。例えば、IOMMU内にキャッシュされていない情報を周辺機器が要求する場合(即ち「ミス」)、システムメモリから情報を得るためにテーブルウォーカーが用いられる。しかし、ページテーブルウォーカーは実装するのに複雑であるので、IOMMUのチップ又はチップ部品のシリコン面積及び電力消費を増大させる可能性がある。IOMMUは、IOMMUハードウエアが利用可能な限定された情報に基づきローカル的に最適化されるようにページテーブルウォーカーを実装する(例えば最長時間未使用(least-recently-used)(LRU)アルゴリズムに基づきIOMMU内にキャッシュされる情報に影響する)。ハードウエアのみ実装(hardware-only implementations)のそのような例は、過剰なトランスレーションフェッチ(fetches)(「ページテーブルウォーク(page-table walks)」)及び過剰なトランスレーションミスを潜在的に引き起こし、IOサブシステムの性能を低下させまたメモリ待ち時間の増大をもたらす可能性がある。
加えて、IOMMUは典型的には、特定のアーキテクチャに付随するページテーブルエントリのフォーマットに基づき情報を読み出し且つ構文解析するように構成され、ページテーブルフォーマットをハードウエア設計に委ねる特定のページテーブルアーキテクチャに、つまりは特定の適合可能なプロセッサ実装に、IOMMUを限定している。
ソフトウエア設計/管理の(software architected/managed)トランスレーションルックアサイドバッファ(translation look-aside buffer)(TLB)キャッシュもまた知られている。ソフトウエアがTLBを管理し、そして任意のページテーブルウォークはソフトウエアにおいて行われる。ソフトウエアはエントリをTLB内へロードするが、ハードウエア基盤がソフトウエア設計のTLBを支援することはない。また、ソフトウエア設計のTLBは、ローディング及び/又は無効化に際して柔軟性を有していない、つまりエントリがTLB内へロードされるときに、ローダ(loader)は先行するエントリを置換する影響を有する。
幾つかのIO制御器又は周辺機器は、オペレーティングシステム又はハイパーバイザ(hypervisor)におけるデバイスドライバソフトウエアによって管理される単純なMMUを含む。例えば典型的なグラフィクス制御器は、グラフィクスカード上の「ローカルMMU」を含む。このような場合、「ローカルMMU」マッピングハードウエアは、洗練されたアルゴリズムを用いるシステムソフトウエアによって制御されるが、各MMUは固有のものであり且つ固有のドライバを必要とする。周辺機器ハードウエアに対する変更点はドライバに対する変更を必要とし、開発コストを跳ね上げると共に開発スケジュールを長期化させ、最終的には製品化までの時間を遅らせる。このことはまた、仮想化されたシステムにおけるハイパーバイザのための一般的なドライバを製造供給元が作成することができず、従って特定のドライバがハイパーバイザ内に含まれている必要があることを意味し、ハイパーバイザの選択は、システム内に存在する的確なIO周辺機器に依存することになる。これは、サポートされるオペレーティングシステムのためのドライバに加えてハイパーバイザのために更に別のドライバが作成され且つ試験される必要があることを意味し、開発コスト及び時間が更に跳ね上がる。
IOMMU性能を改善し、且つソフトウエアがハイパーバイザのために一度作成されると共に周辺機器メモリマッピングアーキテクチャの多重実装に用いられることを可能にする手法が必要とされている。
本発明の実施形態は、ページテーブルの構造及びフォーマットに依存しない改良されたトランスレーション挙動を伴うIOMMUのより小さくより単純なハードウエア実装を可能にする。実施形態はまた、デバイスに依存しない構造及び実装の方法を提供し、ソフトウエアのより大きな一般性を可能にする(より少ない特定のソフトウエアバージョンは同時に開発コストを低減する)。
1つの実施形態は、システムの入力/出力(I/O)メモリ管理ユニット(IOMMU)でプリフェッチ即時コマンドを受け取ることを含む方法に関連している。プリフェッチ即時コマンドは、(i)仮想アドレス、及び(ii)仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をIOMMUに関連付けられるI/Oトランスレーションルックアサイドバッファ(IOTLB)内へと選択的に記憶することを含む。
別の実施形態は、プリフェッチ即時コマンドを受け取るように構成される入力/出力(I/O)メモリ管理ユニット(IOMMU)を含むシステムに関連している。プリフェッチ即時コマンドは、(i)仮想アドレス、及び(ii)仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。IOMMUに関連付けられるI/Oトランスレーションルックアサイドバッファ(IOTLB)は、少なくとも資源状態に基づいてアドレストランスレーション情報を選択的に記憶するように構成される。
更に別の実施形態は、システムの入力/出力(I/O)メモリ管理ユニット(IOMMU)でプリフェッチ即時コマンドを受け取ることを含む方法を、コンピューティングデバイスによって実行される場合にコンピューティングデバイスに行わせるコンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体に関連している。プリフェッチ即時コマンドは、(i)仮想アドレス、及び(ii)仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をIOMMUに関連付けられるI/Oトランスレーションルックアサイドバッファ(IOTLB)内へと選択的に記憶することを含む。
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。ここに含まれる教示に基き追加的な実施形態が関連分野を含めた当業者にとって明らかであろう。
ここに組み込まれ且つ出願書類の一部をなす添付の図面は実施形態を示し、そして上述の一般的な説明及び下記の実施形態の詳細な説明と共に、本発明の実施形態の原理を説明することに役立つ。
図1はある実施形態に従いIOMMUを含むシステムを示すブロック図である。
図2は別の実施形態に従うIOMMUを示すブロック図である。
図3は別の実施形態に従いシステムメモリと相互作用するIOMMUを含むシステムを示すブロック図である。
図4は別の実施形態に従いシステムメモリと相互作用するIOMMUを含むシステムを示すブロック図である。
図5は別の実施形態に従いアドレストランスレーション情報を選択的に記憶するための方法を示すフロー図である。
図6は別の実施形態に従うIOMMUを示すブロック図である。
図7は更に別の実施形態に従いシステムメモリと相互作用するIOMMUを含むシステムを示すブロック図である。
図8は更に別の実施形態に従いシステムメモリと相互作用するIOMMUを含むシステムを示すブロック図である。
図9は更に別の実施形態に従いアドレストランスレーションデータに対する要求をサービスするための方法を示すフロー図である。
図10は更に別の実施形態に従いシステムメモリと相互作用するIOMMUを含むシステムを示すブロック図である。
図11は更に別の実施形態に従いIOMMUとIOTLBを伴う周辺機器とを含むシステムを示すブロック図である。
図12は更に別の実施形態に従い割り込み再マッピングバッファ及びデバイステーブルエントリバッファを含むシステムを示すブロック図である。
本発明の実施形態は、メモリ管理ユニット及びその応用を提供する。以下の詳細な説明において、「1つの実施形態」、「ある実施形態」、「例示的実施形態」等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。
図1はCPU106とCPU106に関連付けられるCPU_MMU108とを含むシステム100を示すブロック図である。システム100は、周辺機器110に関連付けられるIOMMU102を更に含む。ここには図示されていないが、システム100においては、多重のCPU_MMU108が考慮されるのと同時に多重のIOMMUが考慮される(例えば多重プロセッサシステム)。
IOMMU102は、一連の定義された機能及び挙動に従って動作する。これらの機能及び挙動は、システムメモリ104内にキューされ(queued)且つIOMMU102によって読み出されてIOMMU102によって実行/使用される一連のコマンドに関連付けられている。
IOMMU102は、周辺機器110とシステムメモリ104の間で仮想/物理アドレスをトランスレートし、そして割り込み再マッピングを行う。割り込み再マッピングは、再マッピング割り込みに対応するアドレスをトランスレートするという点において、アドレストランスレーションと同様に機能する。IOMMU102のトランスレーション/再マッピング速度を向上させるために、システムメモリ104内に記憶されるアドレストランスレーション/割り込み再マッピング情報がIOMMU102内にキャッシュされ得る。この処理は、IOMMU102がトランスレーション又は再マッピング情報にアクセスし得る速度を高める。
図2は図1のIOMMU102を示す更に詳細なブロック図である。IOMMU202は、主システムメモリ104(図1参照)の内容を調べるように構成されるページテーブルウォーカー214を含む。ページテーブルウォーカー214はまた、IOMMU102内での記憶/キャッシングのための情報の配置及びリトリーバル(retrieval)を容易にする。ページテーブルウォーカー214は、トランスレーションルックアサイドバッファ(TLB)212と称されるキャッシュ内へとトランスレーション情報を挿入することができ、TLB212は入力/出力TLB(IOTLB)212としても知られる。IOTLB212は、仮想アドレス216と物理アドレス218の間でのアドレストランスレーションに用いられ得る。同様のキャッシング構造が割り込み再マッピングに対しても用いられ得る。
IOMMU102は、キャッシュされるべき情報の充填とIOMMU102及び/又はIOTLB212内にキャッシュされるトランスレーション/再マッピング情報の無効化又はフラッシング(flushing)とを制御するシステムメモリ104からのコマンドを読み出す。IOMMU102は更に、周辺機器110からの情報に対する要求に応答してシステムメモリ104からのトランスレーション/再マッピング情報を自動的にロードすることが可能である。例えばIOMMU102は、ハードウエアのページテーブルウォーカー214を実装して、ページテーブルウォークを行うと共にシステムメモリ104のページテーブルから物理アドレス218をリトリーブする(retrieve)ことができる。トランスレートされるべき仮想アドレス216がIOTLB212内にキャッシュされていない場合に、ページテーブルウォークは、仮想アドレス216を含む周辺機器110からの要求に応答することができる。
IOTLB212内のアドレストランスレーション/再マッピング情報は、ハードウエア及び/又はソフトウエアにより種々の方法(トランスレーションバッファポリシーとも称される)において維持され且つ更新され得る。例えば、CPU106上のシステムソフトウエアは、システムメモリ104内に記憶される対応する情報が変化していることを理由としてもはや有効ではないIOMMU102内にキャッシュされている情報を無効化することができる。IOMMU102はまた、IOMMU102内にキャッシュされるトランスレーションエントリのキャッシング及び退去を主としてハードウエアが決定するように、トランスレーションバッファポリシーをハードウエアにおいて実装することもできる。キャッシュされたトランスレーションエントリが退去させられると、新たな情報のための場所を空けることができる。キャッシュされたトランスレーションエントリは、それがもはや有効ではなくなったときにフラッシュされる(flushed)必要がある。これらの及び他の技術は、IOTLB212内の情報が置換されることになる場合又はもはや有効ではなくなった場合にこれを処理するために適用され得る。
IOMMU102は、システムメモリ104からの情報を、その情報に対する要求を周辺機器110から受け取るのに先立ちプリフェッチする(prefetch)ことができる。プリフェッチコマンドは、例えば、「IOMMUにおけるトランスレーションデータプリフェッチ(Translation Data Prefetch in an IOMMU)」の表題で2008年4月30日に出願された米国特許出願第12/112,611号に開示されるように実装することができ、その内容はその全部を参照としてここに組み込まれる。プリフェッチコマンドは、システムメモリ104のページテーブルをウォークすること及び例えば指定された(デバイス仮想)アドレスに関連付けられるトランスレーション情報をプリロードする(preload)ことをIOMMU102に指示することができる。従って、プリロードされたトランスレーション情報は、要求がIOMMU102内に入ってきたときにIOTLB212において利用可能である。
図3はIOMMU302及びシステムメモリ304を含むシステム300を示すブロック図である。システム300はページテーブル320及びイベントログバッファ328を更に含む。アドレストランスレーション情報322はページテーブル320内でアクセス可能である。IOMMUエントリ330はイベントログバッファ328内でアクセス可能である。システム300はCPU306及びCPU_MMU308を追加的に含む。
単一又は複数のIOMMUキャッシュを充填することに関して、IOMMU302は、システムメモリ304のページテーブル320内に記憶されるアドレストランスレーション情報322にアクセスしてこれをキャッシュする。図示されるように、IOMMU302のページテーブルウォーカー314は、ページテーブルウォークを行ってアドレストランスレーション情報322をリトリーブする。アドレストランスレーション情報322は、次いでIOTLB312内にキャッシュされる。アドレストランスレーション情報322に対して周辺機器310からの後続の要求がIOMMU302に到着すると、アドレストランスレーション情報322はIOTLB312において利用可能となり、ページテーブルウォークは不要になる。IOTLB312でもはや利用可能でないアドレストランスレーション情報322に対する要求がIOMMU302に到着すると、ページテーブル320からのアドレストランスレーション情報322を得るために、次のページテーブルウォークが行われ得る。代替的には、システム300は、プリフェッチ即時コマンド(prefetch immediate command)326を利用してIOTLB312の内容を更新することができる。
IOMMU302は、システムメモリ304のコマンドキュー324内に記憶されるコマンドを読み出して使うことができる。これにより、IOMMU302は、その単一又は複数のキャッシュを、コマンドにおいて渡された情報を用いて充填することができる。充填ポリシーに加えて、IOMMU302によって読み出されたコマンドは、実際上、IOTLB312内にキャッシュされた情報をソフトウエアが無効化し又は更新することを可能にする。例えば、無効化は、アドレストランスレーション情報322が変化し、IOTLB312内の先にキャッシュされたアドレストランスレーション情報が、変化したアドレストランスレーション情報322にもはや対応しなくなったときの状態と関連付けられ得る。
IOMMU302によってコマンドキュー324から読み出されたコマンドは、IOMMU302の機能を更に拡大することができる。プリフェッチ即時コマンド326は、プリフェッチ即時コマンド326の本体(body)内にアドレストランスレーション情報322を含むことができる。IOMMU302は次いで、プリフェッチ即時コマンド326を介してアドレストランスレーション情報322を受け取ることができる。従ってIOMMU302は、アドレストランスレーション情報322を得るためにページテーブルウォーカー314を用いてページテーブル320をウォークする必要はない。プリフェッチ即時コマンド326内の情報は、ページテーブルウォーキングをなんら行うことなしに、IOTLB312内へ直接的にロードされ得る。図示されるように、ページテーブルウォーカー314は、プリフェッチ即時コマンド326と連動してバックアップし且つ/又は動作するために利用可能である。
プリフェッチ即時コマンド326は、IOMMUへの新たなコマンドとして又は上述したプリフェッチコマンドの変形として実装され得る。また、プリフェッチ即時コマンド326は、必要な情報をシステムソフトウエアが書き込む一連のMMIOレジスタとして実装されてもよい。
図4は実施形態に従いプリフェッチ即時コマンド426を実装しているシステム400を示すブロック図である。システム400は、周辺機器410に関連付けられており、そしてCPU406、CPU_MMU408及びシステムメモリ404を含み得る。システムメモリ404は、ページテーブル420、コマンドキュー424及びイベントログバッファ428を含む。システムメモリ404はまた、IOページテーブル430に関連付けられていてもよい。アドレストランスレーション情報422はIOページテーブル430内に記憶され得る。IOページテーブル430の内部フォーマットは、ページテーブル420の内部フォーマットと同じである必要はない。プリフェッチ即時コマンド426は、アドレストランスレーション情報422をIOTLB412内へキャッシュする。アドレストランスレーション情報422は、仮想アドレス416及び物理アドレス418と関連付けられている。システム400は、コマンドキュー424及びプリフェッチ即時コマンド426を管理して、アドレストランスレーション情報422をプリフェッチ即時コマンド426による使用のために供することができる。従って、プリフェッチ即時コマンド426を用いてIOMMUと相互作用しているシステム400は、システム400がIOMMU402におけるデータのキャッシングに関連付けられるための柔軟性及び機会を導入する。
加えて、システム400は、ページテーブルウォーカー414を用いる必要性なしに、アドレストランスレーション情報422のキャッシングをIOTLB412で達成することができる。従ってシステム400は、特定のハードウエア実装のページテーブルウォーカー414(用いられている場合における)とインタフェースするために特定のシステムドライバを含んでいる必要がない。しかし、プリフェッチ即時コマンド426は、妥当な場合、ハードウエアページテーブルウォーカー414と連動して全体の性能を改善するために動作可能であることが検討される。
図5は実施形態に従いシステム状態に基づきアドレストランスレーション情報を選択的に記憶する例示的な方法560を示すフローチャートである。ステップ570において、IOMMUは、アドレストランスレーション情報を指定するプリフェッチ即時コマンドを受け取る。ステップ572では、例えばIOMMU又はシステムによってシステム状態がチェックされる。システム状態はシステムの資源状態を含むことができ、システムの資源状態は、システム資源の利用可能性、IOTLBにおける1つ以上の空きアドレスエントリの利用可能性、電力節約及び/若しくはスリープ状態、並びに/又は係属中システム要求を考慮したシステム資源の利用可能性、を含むことができる。資源状態はまた、プリフェッチ即時コマンドにおいて指定されるアドレストランスレーション情報に対応するIOTLB内に記憶される1つ以上の有効アドレスエントリの優先度、又はプリフェッチ即時コマンドにおいて指定される無効化表示、を含むこともできる。
ステップ574では、システム状態に基づきプリフェッチ即時コマンドを無視するかどうかの決定がなされる。プリフェッチ即時コマンドを無視しないとの決定である場合には、方法はステップ576へ進み、アドレストランスレーション情報がIOMMUのIOTLBに記憶される。方法はステップ576からステップ578へ進む。ステップ574においてプリフェッチ即時コマンドを無視するとの決定である場合には、方法はステップ578へ進み、コマンドキュー内の次のIOMMUコマンドが処理される。
プリフェッチ即時コマンドのためのコマンドフォーマットは、トランスレートされた物理アドレスと、指定された(デバイス仮想)アドレスに対する許可アクセス標識及びIOMMUドメイン情報を含む他の情報と、を含むことができる。コマンドフォーマットはまた、IOTLBスロット宛先を含んでいてもよい。
IOMMUはプリフェッチ即時コマンドを選択的に無視することができる。例えば、IOMMUは、IOMMUキャッシュ内に存在しているエントリが上書きされるべきではないことと、アドレストランスレーションが挿入されるべき現在利用可能なIOMMUキャッシュエントリがないことと、を決定することができる。無視されたプリフェッチ即時コマンドに含まれてはいたが挿入されてはいなかったアドレストランスレーション情報に対して要求がIOMMUに後で到着する場合、IOMMUは、ページテーブルウォークを行い又はプリフェッチ即時コマンドを要求して、要求されたアドレストランスレーション情報を得ることができる。何らかの理由によりプリフェッチ即時コマンドを引き受けるのに不都合があり又は正当な時間でない場合には、プリフェッチ即時コマンドは無視されるのが安全である。
プリフェッチ即時コマンドの選択的な引き受け/無視は、コマンドを引き受けるかどうかを決定する際に資源状態を考慮することによってIOMMUがシステム性能を最適化することを可能にする。アドレストランスレーション情報を取得してそれを挿入するためのハードウエアベースの基盤/メカニズムがIOMMUの実施形態に利用可能であり、プリフェッチ即時コマンドはハードウエア基盤の中でも最高の加速である。プリフェッチ即時コマンドはアドレストランスレーション情報をロードすることができ、あるいは当該コマンドは無視されてアドレストランスレーション情報をロードするのにハードウエアメカニズムが頼られてよい。
プリフェッチ即時コマンドは、アドレストランスレーション情報をIOMMUに提供するために、IOMMUのページテーブルウォーカーに対する代替案を提供する。加えて、提供されたアドレストランスレーション情報をIOMMUのIOTLB内へロードすること及び/又は挿入することのために、種々の技術が実装され得る。ここに開示される実施形態は、IOMMUの既存の機能と連動して動作することができ、あるいはIOMMU機能をオーバーライドする(override)ことができる。
1つの実施形態においては、提供されたアドレストランスレーション情報をIOMMUのIOTLB内へ、即ちIOMMUの内部アドレストランスレーションキャッシュ内へ挿入するために、IOMMUのネイティブキャッシュ置換アルゴリズム(native cache replacement algorithm)が用いられ得る。IOMMU_IOTLBトランスレーションキャッシュは、提供されたアドレストランスレーション情報をIOTLB内へロード/挿入するに際して、通常はこのようにして機能することになる。しかし、アドレストランスレーション情報を取得し且つ/又はこれをIOMMUのネイティブキャッシュ置換アルゴリズムに提供するために、IOMMU全体がページウォーク機能を必要とするわけではない。
従って、IOMMUのネイティブキャッシュ置換アルゴリズムは、退去をもたらし得る状況、例えば提供されたアドレストランスレーション情報を記憶するためにIOTLB内に空きスロットが無い状況を取り扱うことができる。例えば、IOTLBの通常動作は、IOTLB内に既にキャッシュされたアドレストランスレーション情報が使用され又は要求される前であっても、その既にキャッシュされたアドレストランスレーション情報が他の提供されたアドレストランスレーション情報によって退去させられる(置換される)ことを可能にする。
別の実施形態においては、プリフェッチ即時コマンドは、IOMMU_IOTLBトランスレーションキャッシュ内の特定のスロット内へ情報をロードすることをIOMMUに指示するその情報を含むことができる。この情報のローディングは、当該プリフェッチ即時コマンドのためのIOMMUトランスレーションキャッシュ置換ハードウエア及び/又はアルゴリズムをオーバーライドし又は置換する。IOTLBの通常動作は次いで、トランスレーション情報が使用される前にそれが退去させられる(置換される)ことを可能にする。システムはIOMMUに指示することができるので、システムは、IOMMUトランスレーションキャッシュ置換ハードウエア及び/又はアルゴリズムの仕様からは解放されている。
更に別の実施形態においては、IOTLB構造は、例えばシステムソフトウエアが直接的に内容を操作することができるMMIOスペース内に直接的にさらされており、あるいはアドレス/データレジスタ対を介して間接的にMMIOスペース内にさらされている。
図6は実施形態に従いサイドTLB632を含むIOMMU602の別の実施形態を示すブロック図である。IOMMU602は、仮想アドレス616、物理アドレス618及びページテーブルウォーカー614に関連付けられている。サイドTLB632はIOTLB612から切り離されている。IOMMU602は、提供されたアドレストランスレーション情報を特別の「サイド」トランスレーションルックアサイドバッファ(サイドTLB632)内へ挿入することができる。サイドTLB632は、システムソフトウエアによって管理されてよく、そして頻繁に使用されるトランスレーションを含むことができる。サイドTLB632を用いて、頻繁に使用されるトランスレーションをIOTLB612とは別にしておくことによって、頻繁に使用されるトランスレーションがIOTLB612内のスロットに対する他のアドレストランスレーションと競合することを回避することができる。TLB632内にキャッシュされている頻繁に使用されるトランスレーションは、IOTLB612上で実行されるIOMMU602の通常のトランスレーションキャッシュ動作によっては退去させられないであろうから、サイドTLB632を「スティッキー(sticky)」にして、アドレストランスレーション情報を記憶するために常時利用可能にする。例えば、TLBキャッシュのエントリ内に記憶されるアドレストランスレーション情報を必要とするデバイス直接メモリアクセス(DMA)動作は、IOMMUによるページウォークによって遅滞なく迅速にトランスレートされるであろう。
図7は実施形態に従いIOTLB712及びサイドTLB732を含むIOMMU702を伴うシステム700を示すブロック図である。システム700は、CPU706、CPU_MMU708及びシステムメモリ704を含む。システムメモリ704は、ページテーブル720、コマンドキュー724及びイベントログバッファ728を含む。システム700においては、仮想アドレス716を含む周辺機器710からの要求は、IOMMU702に到着する。IOMMU702は、物理アドレス718に関連付けられ且つ仮想アドレス716に対応するアドレストランスレーション情報がIOMMU702でIOTLB712及び/又はサイドTLB732内にキャッシュされるかどうかを決定する。当該情報がIOMMU702で利用可能でなく且つ主システムメモリ704のページテーブル720から利用可能である場合には、IOTLBミスとなる(当該情報が利用可能ではないページフォールトとは区別される)。ページテーブルウォーカー714は、システムメモリ704のページテーブル720にアクセスしてIOMMU702で要求をサーブするのに必要なアドレストランスレーション情報を取得しそして提供するために利用可能である。加えて、システム700は、ページテーブルウォーカー714がページテーブルウォークを行うのを待つことなしに、コマンドキュー724を用いてプリフェッチ即時コマンド726を実行し、サイドTLB732及びIOTLB712に対してアドレストランスレーション情報722を提供することができる。
IOMMU702は、プリフェッチ即時コマンド726に関連付けられる記憶装置(キャッシュ;例えばIOTLB712及びサイドTLB732)のサイズ及び機能に関する情報を、システムソフトウエアが記憶装置キャッシュの使用を最適化し得るよう、システムソフトウエア及び/又はシステム700に提供するように構成され得る。提供される情報は、例えば、エントリの数及び種類並びにそれらのキャッシュとしての組織化を含み得る。従ってシステム700は、IOMMU702の記憶装置キャッシュ資源をグローバルシステムレベルで知的に管理することができる。
図8は実施形態に従いIOTLB812を含むIOMMU802を伴うシステム800を示すブロック図である。システム800はシステムメモリ804及びCPU_MMU808を含む。システムメモリ804は、ページテーブル820、コマンドキュー824及びイベントログバッファ828を含む。図8の実施形態においては、IOMMU802はページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。仮想アドレス816を含む周辺装置810からの要求は、IOMMU802に到着する。IOMMU802は、仮想アドレス816及び物理アドレス818に関連付けられるアドレストランスレーション情報がIOMMU802で周辺装置810からのトランスレーション要求をサーブするために利用可能であるかどうかを決定する。アドレストランスレーション情報がIOMMU802でキャッシュされていない場合(例えばIOTLBミスの場合)には、IOMMU802は、イベントログバッファ828で新たなIOMMUイベントログを作成する。イベントログエントリは、トランスレーション情報がIOMMU802によって要求されている旨の信号を主CPU806へ送る。主CPU806は、プリフェッチ即時コマンド826を用いてアドレストランスレーション情報822をIOTLB812内へ挿入することができ、またイベントをトリガーした周辺機器810のIO動作をレジュームする(resume)ことができる。IOTLBミスの蓋然性を更に低減し又は排除するために、IOMMU802キャッシュの実装決定及び使用パターンに応じて、サイドTLB(図8には図示せず;例えば図7を参照)がIOMMU802内に含まれていてよい。
プリフェッチ即時コマンドは、ドメイン情報(デバイステーブルエントリ内容)をIOMMUキャッシュ構造内に投入するために、ドメイン情報を含むことができる。代替的には、ドメイン情報を投入することは、種々の実装仕様に応じて、別個のコマンドとして実装され得る。
図9はI/O動作からの要求をサービスするための例示的な方法960を示すフローチャートである。ステップ980では、アドレストランスレーション情報を要求しているI/O動作からの要求が受け取られる。ステップ982では、要求に関連付けられるアドレストランスレーション情報が既にIOMMUのIOTLB内に記憶されているかどうかが決定される。アドレストランスレーション情報が既に記憶されている場合には、方法はステップ984へ進み、要求されているアドレストランスレーション情報が提供される。ステップ982においてアドレストランスレーション情報がまだ記憶されていない場合には、方法は986へ進み、IOMMUイベントログエントリが作成されて、アドレストランスレーション情報が要求されている旨の信号が送られる。ステップ990では、要求されたアドレストランスレーション情報が、プリフェッチ即時コマンドを用いて、IOMMUイベントログエントリに応答して1つ以上のIOMMUキャッシュ内へ挿入される。ステップ992では、アドレストランスレーション情報を要求しているI/O動作がレジュームされる。
図10はIOMMUイベントログエントリ1030を含むイベントログバッファ1028を伴うシステム1000を示すブロック図である。図示される実施形態はIOMMU1002内にページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。システム1000はCPU_MMU1008及びシステムメモリ1004を含む。システムメモリ1004は、ページテーブル1020、コマンドキュー1024及びイベントログバッファ1028を含む。システム1000においては、周辺機器1010からの要求はIOMMU1002に到着する。IOMMU1002は、周辺機器1010からのトランスレーション要求をサービスするためにアドレストランスレーション情報がIOMMU1002で利用可能であるかどうかを決定する。アドレストランスレーション情報がIOMMU1002でキャッシュされていない場合(例えばIOTLBミスの場合)には、新たなIOMMUイベントログエントリ1030がイベントログバッファ1028で作成される。IOMMUエントリ1030は、トランスレーション情報がIOMMU1002によって要求されている旨の信号をCPU1006へ送る。主CPU1006は、プリフェッチ即時コマンド1026を用いてアドレストランスレーション情報1022をIOTLB1012に提供する。トランスレーション情報1022は、プリフェッチ即時コマンド1026をシステムメモリ1004のコマンドキュー1024内へ投入することによって提供される。IOMMU1002はコマンドキュー1024からプリフェッチ即時コマンド1026をフェッチし、そしてプリフェッチ即時コマンド1026を実行する。提供されたアドレストランスレーション情報1022は次いで、上述した種々の充填ポリシーを用いてIOTLB1012内へ挿入され得る。
例えばプリフェッチ即時コマンド1026は、IOTLB1012の特定のスロットを含むことができ又はIOTLB1012の特定のロケーションに関する他の情報を含むことができる。代替的には、提供されたアドレストランスレーション情報1022をIOTLB1012内へ挿入するために、IOMMUのネイティブキャッシュ置換アルゴリズムを用いることができる。IOTLBミスの蓋然性を更に低減し又は排除するために、IOMMU1002キャッシュの実装決定及び使用パターンに応じて、サイドTLB(図示せず)がIOMMU1002内に含まれていてよい。
アドレストランスレーション情報は、種々の理由で無効にされ且つ/又はIOMMUの単一若しくは複数のトランスレーションキャッシュから除去され得る。例えば、IOMMU内にキャッシュされるアドレストランスレーション情報は、システムメモリのページテーブル内に記憶されるアドレストランスレーション情報にもはや対応していないであろう。
ある実施形態においては、ネイティブIOMMU検索アルゴリズムを用いてIOMMUがその単一又は複数の内部アドレストランスレーションキャッシュを検索し、任意の特定の無効化する単一又は複数のエントリを見つけ出すように、INVALIDATE_IOMMU_PAGESコマンドが、無効化するアドレストランスレーション情報又は特定のアドレスを指定するために用いられ得る。
別の実施形態においては、INVALIDATE_IOMMU_PAGESコマンドが、無効化するアドレスの代わりに無効化するIOMMUの特定のスロットを表示することができる。当該コマンドはINVALIDATE_IOMMU_PAGESコマンドの変形として構成することができ、あるいは当該コマンドは新たなコマンドとして構成することができる。
別の実施形態においては、無効化は、プリフェッチ即時コマンドを発行することによって達成され得る。プリフェッチ即時コマンドは、占有されているアドレストランスレーションスロットを特定することができ、また占有されているアドレストランスレーションスロットに含まれる情報が上書きされるべきであることを指定することができる。例えば、プリフェッチ即時コマンドは無効化ビットを含むことができる。無効化ビットが表示されている場合、IOMMUは、プリフェッチ即時コマンドに従うこと及び既存のアドレストランスレーション情報に上書きすることを指示される。従って無効化ビットは、IOMMUがプリフェッチ即時コマンドを選択的に無視し得るかどうかを制御することができる。
例えばシステムソフトウエアが内容を直接的に操作し得るMMIOスペースにIOTLB構造が直接的にさらされている更に別の実施形態においては、無効化は直接アクセス方法を用いて達成され得る。この実施形態においては、システムソフトウエアは、MMIOスペースを介してIOTLBを操作することによってシステムソフトウエアがエントリをテーブル内に挿入したのと同じやり方でエントリを無効化することができる。
例えば主x86プロセッサ上で実行中のシステムソフトウエアがこれらの新たなコマンドによって増強されるが、導き出される利益は、それら利益を達成するために容易に変化させられ得るソフトウエアにおいて実装され得る。システムソフトウエアは、無修正のハードウエアメカニズムがローカルレベルで達成し得る又は予想され得るよりも洗練された、適切な、適合性のある、及び効率的な置換技術を実装することが可能である。幾つかのシステム制約に対して、典型的には性能敏感なシステムに対して、ソフトウエアコマンド及びここに説明される関連する構造を補完するために、ハードウエアページテーブルウォーカーを伴う完全IOMMUが実装され得る。
図11はIOMMU1102とIOTLBを伴う周辺機器1111とを含むシステム1100を示すブロック図である。システム1100は、システムメモリ1104、CPU1106及びCPU_MMU1108を含む。幾つかの周辺機器は、周辺機器内でIOTLBを用いるであろう。周辺機器のIOTLBは、IOMMU1102のIOTLBの論理的拡張として機能することができる。IOTLB1111を伴う周辺機器は、IOMMU1102を利用して、トランスレーション情報を取得すると共にそれを戻すためにページテーブルウォークを行うことができる(例えばPCI−SIG_ATSアドレストランスレーションサービス(PCI-SIG ATS Address Translation Services))。ここに説明されるプリフェッチ即時コマンド並びに他の関連するコマンド及び構造は、従って、IOTLB1111を伴う周辺機器を含むそのようなシステムに適合する。
そのようなシステムにおいてIOTLB1111を伴う周辺機器は、それらのIOTLBをポピュレートする(populate)するために、PCI−SIG_ATSプロトコルを用い続ことができる。そのようなシステムにおいてIOTLBを伴う周辺機器はまた、それらのIOTLBをポピュレートするために、ここに説明される実施形態を採用することができる。システムソフトウエアは、IOMMUと周辺機器のIOTLBとの両方をポピュレートすることができ、そしてプロトコル及びソフトウエアは、効率性のために互換性があってよい。ある実施形態においては、IOMMUはATSプロトコルをサポートする必要はなくてよく、設計を簡素化し且つシリコン面積及び電力要求を低減することができる。
図12はIOTLB1212、ページテーブルウォーカー1214、割り込み再マッピングバッファ1234及びデバイステーブルエントリバッファ1236を含むIOMMU1202の更なる実施形態を示すブロック図である。IOMMU1202は、仮想アドレス1216と物理アドレス1218の間でトランスレーションする際のアドレストランスレーションと同様に機能するが割り込みに適用される割り込み再マッピングと称される特徴を提供する。ここに説明される技術及び実施形態は、従って、割り込み再マッピングに用いられ得る。アドレストランスレーションの代わりに割り込み再マッピング情報を伝えるために、新たなコマンド又は既存のコマンドの変形が実装され得る。同様に、割り込み再マッピング情報の無効化のために、新たな又は変形されたコマンドが実装され得る。アドレストランスレーション及び割り込み再マッピングは、対応するテーブルが別々であり且つ独立していることを理由として、IOMMUデバイステーブルエントリバッファ1236によって独立して相互に関連付けられ得る。従って、IOMMU1202は、強化されたアドレストランスレーション及び割り込み再マッピングを行うことができる。
結論
ここに説明される実施形態は、IOMMU実装(製品)の製品化までの時間を改善することができ、新たなIOMMUハードウエアを開発し、試験し及びサポートするのに要求される努力を低減することができ、そしてソフトウエアがグローバル的に最適なポリシー決定を行ってそれが適用可能なハードウエアによるローカル的に最適なポリシー決定を改善するのを可能にするメカニズムを提供することができる。実施形態はまた、サイドTLBを利用してソフトウエア管理の「迅速パス(quick path)」トランスレーション特徴を可能にする。IOメモリ管理ユニットの機能がより効率的に実装され得る(より少ないシリコン面積)し、またIOはそのようなシステムでより高速に動作することができる。提案される強化の有無にかかわらず、多重IOMMUが互換性の理由からシステム内に共存することができ、即ち新旧チップ設計がシステム設計において混在し得る。幾つかの実施形態はページウォーカーハードウエアを必要としないので、この場合におけるIOMMUは小型化が可能でありまたより小さなFPGAを取り付けることができる。実施形態は、IOMMUが特定のページテーブルのフォーマットをハードウエア配線することを必要としないので、実施形態は種々のページテーブルフォーマット(例えば非x86プロセッサ及びフォーマットを伴う)と協働することができる。
本発明の側面を実施する論理によって実行される命令は、C及びC++等の種々のプログラミング言語、アセンブリ言語、並びに/又はハードウエア記述言語(HLD)においてコード化されてよく、また論理又は他のデバイスによって実行され得るオブジェクトコードへとコンパイルされてよい。
上述の実施形態は、ベリログ(Verilog)、RTL、ネットリスツ(netlists)等のハードウエア記述言語において記述されてよく、またこれらの記述は、ここに説明されるような本発明の側面を具現化する1つ以上のハードウエアデバイスを作り出すマスクワーク/フォトマスクの生成を通じて製造プロセスを最終的に構成するために用いられ得る。
本発明の側面は、全体又は一部においてコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶される命令は、本発明の実施形態の全部又は一部を行うようにプロセッサを適合させることができる。
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の1つ以上であるが全てではない例示的な実施形態を記述しているはずであり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。

Claims (25)

  1. メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、
    決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法。
  2. 前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項1の方法。
  3. 前記アドレストランスレーション情報は、(i)仮想アドレス、及び(ii)前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項1の方法。
  4. 前記メモリ管理ユニットは入力/出力(I/O)メモリ管理ユニット(IOMMU)である請求項1の方法。
  5. 前記キャッシュはI/Oトランスレーションルックアサイドバッファ(IOTLB)である請求項1の方法。
  6. 前記キャッシュは前記IOTLBに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項5の方法。
  7. 前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、
    当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を更に備える請求項1の方法。
  8. 前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、
    前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、
    前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を更に備える請求項1の方法。
  9. 前記アドレストランスレーション情報を前記キャッシュに関連付けられる1つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスすることを更に備える請求項1の方法。
  10. 前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化することを更に備え、
    前記無効化することは、(i)1つ以上のアドレスエントリ、及び(ii)1つ以上のスロット、の少なくとも1つを指定する無効化コマンドに応答する請求項1の方法。
  11. 指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶することを更に備える請求項1の方法。
  12. 少なくとも前記資源状態に基づいて割り込み再マッピング情報を前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファで選択的に記憶することを更に備える請求項1の方法。
  13. メモリ管理ユニットを備えるコンピュータシステムであって、
    前記メモリ管理ユニットは、前記コンピュータシステムの資源状態を決定すると共に決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶するように構成されるコンピュータシステム。
  14. 前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項13のシステム。
  15. 前記アドレストランスレーション情報は、(i)仮想アドレス、及び(ii)前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項13のシステム。
  16. 前記メモリ管理ユニットは入力/出力(I/O)メモリ管理ユニット(IOMMU)である請求項13のシステム。
  17. 前記キャッシュはI/Oトランスレーションルックアサイドバッファ(IOTLB)である請求項13のシステム。
  18. 前記キャッシュは前記IOTLBに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項17のシステム。
  19. 前記メモリ管理ユニットは、
    前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、
    当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を行うように更に構成される請求項13のシステム。
  20. 前記メモリ管理ユニットは、
    前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、
    前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、
    前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を行うように更に構成される請求項13のシステム。
  21. 前記メモリ管理ユニットは、
    前記アドレストランスレーション情報を前記キャッシュに関連付けられる1つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスするように更に構成される請求項13のシステム。
  22. 前記メモリ管理ユニットは、
    (i)1つ以上のアドレスエントリ、及び(ii)1つ以上のスロット、の少なくとも1つを指定する無効化コマンドに応答して、前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化するように更に構成される請求項13のシステム。
  23. 前記メモリ管理ユニットは、
    指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶するように更に構成される請求項13のシステム。
  24. 前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファであって、少なくとも前記資源状態に基づいて割り込み再マッピング情報を選択的に記憶するように構成される再マッピングバッファを更に備える請求項13のシステム。
  25. コンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピューティングデバイスによって実行される場合に、
    メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、
    決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法を前記コンピューティングデバイスに行わさせる有形的コンピュータ可読媒体。
JP2012553997A 2010-02-17 2011-02-16 Tlbサポート設計のiommu Active JP5650766B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/707,341 US8244978B2 (en) 2010-02-17 2010-02-17 IOMMU architected TLB support
US12/707,341 2010-02-17
PCT/US2011/025075 WO2011103184A2 (en) 2010-02-17 2011-02-16 Iommu architected tlb support

Publications (3)

Publication Number Publication Date
JP2013519965A true JP2013519965A (ja) 2013-05-30
JP2013519965A5 JP2013519965A5 (ja) 2014-04-03
JP5650766B2 JP5650766B2 (ja) 2015-01-07

Family

ID=44041567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012553997A Active JP5650766B2 (ja) 2010-02-17 2011-02-16 Tlbサポート設計のiommu

Country Status (6)

Country Link
US (1) US8244978B2 (ja)
EP (2) EP3486788A1 (ja)
JP (1) JP5650766B2 (ja)
KR (1) KR101623514B1 (ja)
CN (1) CN103026348B (ja)
WO (1) WO2011103184A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190002473A (ko) * 2016-05-27 2019-01-08 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9152571B2 (en) * 2012-07-31 2015-10-06 Ati Technologies Ulc All invalidate approach for memory management units
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9064030B2 (en) 2012-11-29 2015-06-23 International Business Machines Corporation Tree traversal in a memory device
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN105095108A (zh) * 2014-05-06 2015-11-25 展讯通信(上海)有限公司 输入输出存储器管理单元及控制方法、装置
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9323701B2 (en) 2014-07-29 2016-04-26 Netapp, Inc. Technique for synchronizing IOMMU memory de-registration and incoming I/O data
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US9542332B2 (en) * 2014-11-13 2017-01-10 Via Alliance Semiconductor Co., Ltd. System and method for performing hardware prefetch tablewalks having lowest tablewalk priority
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US11782601B2 (en) 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
CN112214424B (zh) 2015-01-20 2024-04-05 乌尔特拉塔有限责任公司 对象存储器结构、处理节点、存储器对象存储和管理方法
WO2016118564A1 (en) * 2015-01-20 2016-07-28 Ultrata Llc Universal single level object memory address space
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
KR101994952B1 (ko) * 2015-03-27 2019-07-01 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 방법, 메모리 관리 유닛, 및 메모리 제어 장치
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US10459847B1 (en) * 2015-07-01 2019-10-29 Google Llc Non-volatile memory device application programming interface
US20170024145A1 (en) * 2015-07-23 2017-01-26 Qualcomm Incorporated Address translation and data pre-fetch in a cache memory system
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
WO2017100288A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Memory fabric operations and coherency using fault tolerant objects
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
CA3006773A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
US9727484B1 (en) * 2016-01-29 2017-08-08 International Business Machines Corporation Dynamic cache memory management with translation lookaside buffer protection
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
US10386904B2 (en) 2016-03-31 2019-08-20 Qualcomm Incorporated Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks
US10977192B1 (en) * 2016-04-08 2021-04-13 Amazon Technologies, Inc. Real-time memory-page state tracking and its applications
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10599569B2 (en) 2016-06-23 2020-03-24 International Business Machines Corporation Maintaining consistency between address translations in a data processing system
US10095620B2 (en) * 2016-06-29 2018-10-09 International Business Machines Corporation Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US10929310B2 (en) * 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11157285B2 (en) 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor
KR20220078132A (ko) 2020-12-03 2022-06-10 삼성전자주식회사 어드레스 변환을 수행하는 시스템 온 칩 및 이의 동작 방법
US12111772B2 (en) * 2020-12-23 2024-10-08 Intel Corporation Device, system and method for selectively dropping software prefetch instructions
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备
KR20230163881A (ko) 2022-05-24 2023-12-01 삼성전자주식회사 입출력 메모리 관리 유닛과 이를 포함하는 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124237A (ja) * 1992-10-13 1994-05-06 Fuji Xerox Co Ltd アドレス変換バッファ装置
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2004133933A (ja) * 2002-10-10 2004-04-30 Internatl Business Mach Corp <Ibm> 仮想メモリを管理するための方法およびプロファイリング・キャッシュ
US20070136534A1 (en) * 2005-12-09 2007-06-14 Wayne Mesard Method and apparatus for selectively prefetching based on resource availability
US20080209130A1 (en) * 2005-08-12 2008-08-28 Kegel Andrew G Translation Data Prefetch in an IOMMU

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134633A (en) * 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6438593B1 (en) * 1998-05-21 2002-08-20 Lucent Technologies Inc. Method for information retrieval in broadcast disk systems
GB2378277B (en) * 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
US7673116B2 (en) * 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
CN101246452B (zh) * 2007-02-12 2010-12-15 国际商业机器公司 执行快速的mmu模拟的方法和装置、以及全系统模拟器
US7904692B2 (en) * 2007-11-01 2011-03-08 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests
US8234432B2 (en) * 2009-01-26 2012-07-31 Advanced Micro Devices, Inc. Memory structure to store interrupt state for inactive guests

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124237A (ja) * 1992-10-13 1994-05-06 Fuji Xerox Co Ltd アドレス変換バッファ装置
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2004133933A (ja) * 2002-10-10 2004-04-30 Internatl Business Mach Corp <Ibm> 仮想メモリを管理するための方法およびプロファイリング・キャッシュ
US20080209130A1 (en) * 2005-08-12 2008-08-28 Kegel Andrew G Translation Data Prefetch in an IOMMU
US20070136534A1 (en) * 2005-12-09 2007-06-14 Wayne Mesard Method and apparatus for selectively prefetching based on resource availability

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190002473A (ko) * 2016-05-27 2019-01-08 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
JP2019521409A (ja) * 2016-05-27 2019-07-25 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用
KR102423713B1 (ko) 2016-05-27 2022-07-21 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
JP7232644B2 (ja) 2016-05-27 2023-03-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用

Also Published As

Publication number Publication date
US8244978B2 (en) 2012-08-14
WO2011103184A2 (en) 2011-08-25
KR101623514B1 (ko) 2016-05-23
CN103026348A (zh) 2013-04-03
US20110202724A1 (en) 2011-08-18
CN103026348B (zh) 2016-03-16
JP5650766B2 (ja) 2015-01-07
EP2537098B1 (en) 2018-11-21
EP3486788A1 (en) 2019-05-22
KR20130009781A (ko) 2013-01-23
EP2537098A2 (en) 2012-12-26
WO2011103184A3 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
JP5650766B2 (ja) Tlbサポート設計のiommu
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US5359723A (en) Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US7996650B2 (en) Microprocessor that performs speculative tablewalks
US6412057B1 (en) Microprocessor with virtual-to-physical address translation using flags
US20140013058A1 (en) Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
KR100240914B1 (ko) 데이터 프리페치 방법 및 프로세싱 시스템
US20130262736A1 (en) Memory types for caching policies
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
JP2008542948A (ja) コンフィギュラブルトランスレーションルックアサイドバッファを備えたマイクロプロセッサ
JP2013500524A (ja) 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
US20040117588A1 (en) Access request for a data processing system having no system memory
US11853225B2 (en) Software-hardware memory management modes
WO2016139444A1 (en) Cache maintenance instruction
US7017024B2 (en) Data processing system having no system memory
US20040117590A1 (en) Aliasing support for a data processing system having no system memory
JP2022548219A (ja) 変換ルックアサイドバッファ無効化
JP2000339221A (ja) 変換装置のエントリを無効化するシステム及び方法
WO2022133841A1 (en) Apparatus and method for address pre-translation to enhance direct memory access by hardware subsystems
US11853228B1 (en) Partial-address-translation-invalidation request
US11314657B1 (en) Tablewalk takeover
US20040117583A1 (en) Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme
Bhattacharjee et al. Heterogeneity and Virtualization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140217

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140217

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140725

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141113

R150 Certificate of patent or registration of utility model

Ref document number: 5650766

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250