JP3944504B2 - 変換索引バッファのレイジー・フラッシング - Google Patents

変換索引バッファのレイジー・フラッシング Download PDF

Info

Publication number
JP3944504B2
JP3944504B2 JP2004304748A JP2004304748A JP3944504B2 JP 3944504 B2 JP3944504 B2 JP 3944504B2 JP 2004304748 A JP2004304748 A JP 2004304748A JP 2004304748 A JP2004304748 A JP 2004304748A JP 3944504 B2 JP3944504 B2 JP 3944504B2
Authority
JP
Japan
Prior art keywords
page
mapping
memory
address translation
tlb
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.)
Expired - Fee Related
Application number
JP2004304748A
Other languages
English (en)
Other versions
JP2005158040A5 (ja
JP2005158040A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005158040A publication Critical patent/JP2005158040A/ja
Publication of JP2005158040A5 publication Critical patent/JP2005158040A5/ja
Application granted granted Critical
Publication of JP3944504B2 publication Critical patent/JP3944504B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

Landscapes

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

Description

本発明は、一般にメモリ管理の分野に関し、より詳細にはアドレス変換キャッシュのフラッシングに関する。
ほとんどのコンピュータ・システムは、仮想アドレス・メカニズムを提供しており、そこでは仮想アドレスは物理アドレスにマッピングされる。メモリ・ロケーションにアクセスする要求が仮想アドレスを使用して行われるとき、この仮想アドレスは、アクセスをシークするターゲット・メモリ・ロケーションの対応する物理アドレスに変換される。1組のアドレス変換テーブルは、仮想アドレスと物理アドレスの間のマッピングを定義する。この変換テーブルは通常、メモリ中に格納され、したがってアドレスの変換には、このテーブルを読み取るためのメモリ・アクセスが必要になる。このテーブルを読み取るために必要なこのメモリ・アクセス動作は、ターゲット・ロケーションで実施すべきアクセス動作に対して追加される。したがって、仮想アドレッシングが使用されると、システムによって実施されるメモリ・アクセスの回数は、すべてのアクセス要求が物理アドレスによって実施される場合に行われるはずの回数に比べて倍増することになる。一部の仮想アドレスは、これらが複数の段階で修飾参照(dereference:参照解除)されるべきマッピングを必要とするという意味で多重レベルであり、これはアドレス変換を実施するために2回以上のメモリ・アクセスを必要とすることもある(それによって1回の基礎となるアクセス要求を実行するために3回以上のメモリ・アクセス回数が必要になる)ことを意味する。
アドレスを変換するために行う必要があるメモリ・アクセス回数を低減するために、多数の仮想アドレス・システムは、TLB(translation lookaside buffer;変換索引バッファ)と呼ばれる1種のキャッシュを使用している。最近使用されたメモリ・ページは、近い将来もう一度アクセスされる可能性が高いので、このアドレス変換テーブルを使用して仮想ページ記述子を物理ページ・ロケーションに変換すると、仮想ページと物理ページの対応は、このTLBにキャッシュされる。アドレス変換を実施する必要があるたびに、このTLBを検査して、TLBが、この要求されたメモリ・ユニットを配置するページについてのキャッシュされたマッピングを含むかどうかを決定する。該当するマッピングがTLBにキャッシュされている場合、このキャッシュ・コピーが使用され、それ以外の場合には、そのアドレスは変換テーブルから変換される。TLBのアクセスは、メモリ中の変換テーブルにアクセスするよりも速いので、TLBの使用は、連続するメモリ・アクセスが同じグループのページ上に配置されているとき(通常のケース)に、その動作のスピードを向上させる。
米国特許第5,892,900号明細書 米国特許第5,917,912号明細書 米国特許第5,915,019号明細書 米国特許第5,428,757号明細書 米国特許第5,455,922号明細書 米国特許第5,721,858号明細書 米国特許第5,437,017号明細書 米国特許第5,317,705号明細書 米国特許第4,779,188号明細書 米国特許出願公開第2003/0,200,412号明細書 米国特許出願公開第2003/0,200,402号明細書 米国特許出願公開第2003/0,200,405号明細書 米国特許出願公開第2004/0,003,262号明細書 米国特許出願公開第2002/0,156,989号明細書 Bugnion, E. et al., "Disco:Running Commodity Operating Systems on Scalable Multiprocessors", Proceedings of the 16th Symposium on Operating Systems Principles (SOSP), October 1997, 1-14 Coffing, C.L., "An x86 Protected Mode Virtual Machine Monitor for the MIT Exokernel", Submitted to the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology, May 1999, 109 pages Goldberg, R.P., "Survey of Virtual Machine Research", Computer , June 1974, 34-45 Popek, G.J. et al., "Formal Requirements for Virtualizable Third Generation Architectures", Communications of the ACM, July 1974, 17(7), 412-421 Smith, J.E., "An Overview of Virtual Machine Architectures", October 26, 2001, 1-20 Waldspurger, C.A., "Memory Resource Management in VMware ESX Server", Proceedings of the 5th Symposium on Operating Systems Design and Implementation", December 9-11, 2002, 15 pages
TLBは、仮想メモリを使用してメモリ保護を実現する場合に、いくつかの別の問題を引き起こす。メモリ保護は、どのソフトウェア・コンポーネントがどの物理メモリ・ページに対してどの種類のアクセス(例えば、読取り、書込み)を実施することができるかを管理するセキュリティ・ポリシーを実行するように努める。すなわち、この保護は、仮想アドレス−物理アドレス変換に対する編集を制御することによって仮想メモリによって実行することができる(この制御は、このマッピングを生成するオペレーティング・システムによって、あるいはかかるマッピングに対する変更をフィルタリングするATC(address translation control;アドレス変換制御)システムによって実行することができる。)。しかし、アドレス変換が変更される際に、古くなったマッピングが依然としてTLB中に存在することもある。したがって、アドレス変換テーブルを編集して、あるソフトウェア・コンポーネントについてのページに対するあるアクセス権を取り消すとき、このコンポーネントは、これらの古くなったマッピングがTLBからフラッシュ(flush:掃き出して空にする)されてしまうまで、このページに対するアクセス権を保持することもある。これを行う通常の方法は、かかる動作の一部として該当するすべてのTLBをフラッシュするようにすることである。
しかし、TLBのフラッシング(flushing)は、特に共用メモリ・マルチ・プロセッサ上では、時間がかかる。この新しいセキュリティ・ポリシーに違反する古いマッピングを含み得るあらゆるプロセッサでは、そのTLBをフラッシュするために信号を送る必要がある。この信号を送るには、一般に比較的低速なIPI(interprocessor interrupt;プロセッサ間割込み)が必要である。さらに、このフラッシュ自体が比較的に時間を要する。
以上を考慮すると、従来技術の欠点を克服するメカニズムが必要になっている。
本発明は、TLBのレイジー・フラッシング(lazy flushing)をサポートするメカニズムを提供する。各TLBごとに、カウンタを保持し、TLBがフラッシュされるたびに、このカウンタを増分する。各プロセッサがそれ自体のTLBを保持するマルチ・プロセッサ・システムでは、各プロセッサごとに別々のカウンタが存在することもあり、この場合には、特定のプロセッサ用のカウンタは、そのプロセッサがそのTLBをフラッシュするときに増分される。トリガ事象(triggering event)が起こるとき、該当するすべてのカウンタ値は、トリガ事象が完了した後に、記録される。「トリガ事象」とは、アドレス変換マップ、またはこのマップが制約を受けるメモリ・アクセス・ポリシーに、古いTLBエントリがポリシーの違反をもたらし得るような態様で、影響を及ぼす事象のことであり、「該当するカウンタ」とは、かかる古いエントリを含む可能性のあるTLBのカウンタである。例えば、メモリの所与のページが、あるポリシーの下でオフリミット(off-limits:立ち入り禁止)を宣言されて、そのページに対するマッピングがすべてこのアドレス変換マップから除去されることもあり、このマップからページを切離すことが、トリガ事象の一例であり、このページへのマッピングを含む可能性のある全てのTLBについてのカウンタも、該当するカウンタである。トリガ事象が実施され、そのトリガ事象の効果または結果がこのアドレス変換プロセスで実際に使用される前に、かなりの時間が経過する場合もそうであるとすることができる(例えば、メモリの所与のページへのマッピングは、所与の時点で変更がなされるが、数百万の動作が、この切り離されたページを再使用するためのどのような試みを行う前に、実行される可能性がある。)。トリガ事象の結果を使用すべきときに、この記憶されたカウンタ値を現在のカウンタ値と比較して、そのトリガ事象以来、(もしある場合)関連するどのTLBがフラッシュされていない可能性があるかを決定する。該当するどのようなTLBが、それらの記録済みの値と一致するカウンタ値を有する場合、かかるTLBはすべて、従来技術の方法でフラッシュされる。
カウンタ値が変化している場合にはTLBは安全であり、すなわち、適用可能なアクセス・ポリシーの違反をもたらし得る古いTLBエントリを明らかに含まず、カウンタ値が変化していない場合にはTLBは、安全でないことに留意されたい。したがって、どのようなサイズのカウンタをも使用して、フラッシュに基づいて任意の方法でカウンタを変更することも(あるいは、全く変更しないことさえも)、可能である。別の可能性は、実時間カウンタを使用してその最後のフラッシュの時刻をタイム・スタンプすることであり、すなわち、クロックがある時間スキューの範囲内で同期化される場合に、フラッシュのイニシエータ(開始プログラム)は、変換が修正された時刻を単に記録し、タイム・スタンプがその変換修正時刻を少なくともその時間スキュー分だけ超過しているどのフラッシュについても完了を想定することができる。
ハイ・アシュアランス(high-assurance)および非ハイ・アシュアランスな環境(それぞれ、「右サイド」および「左サイド」)が隣り合って存在し、あらゆるTLBフラッシュがこの右サイドへのトリップ(trip)を必要とするシステムにおいては、本発明のメカニズムを使用して右サイドへの不必要なトリップを回避することができる。例えば、右サイドと左サイドの間の各変更がTLBフラッシュをもたらすこともあり、プロセッサが右サイドから左サイドへと移動するたびごとに各プロセッサごとのカウンタを増分することができる。換言すれば、右サイドがこのTLBのフラッシングを確実に実施(または検証)するので、このカウンタは、このメモリ・アクセス制御スキームに損傷をもたらし得るエントリをTLBが含んでいた可能性のある最後の時刻を反映している。あるページが左サイドからアクセス不能に(または左サイドによって書込み不能に)されるたびに、このページにはこのカウンタの値を用いて、本質的に「タイム・スタンプ」が行われる。このページが、プロセッサによってアクセスされるとき、プロセッサが、(1)現在、右サイドにあるか、それとも(2)ページのステイタス(状態)が変化してから確実にそのTLBをフラッシュしてきたかが決定される。後者の決定は、プロセッサのカウンタ値をそのページについて保存された値よりも大きくすることによって達成することができる。
本発明の他の特徴について以下に説明する。
以上の概要、ならびに好ましい実施形態の以下の詳細な説明は、添付図面と併せ読むときによりよく理解されよう。本発明を例証する目的で、図面には本発明の例示の構成を示している。しかし、本発明は、これらの開示された特定の方法および手段に限定されるものではない。
概要
アドレス変換制御(ATC)は、仮想アドレスを物理アドレスに変換するために使用するマッピングを動的に制御することによってメモリ・アクセス・ポリシーを実装するために使用することができる。変換索引バッファ(TLB)を使用してマッピングをキャッシュするとき、このアクセス・ポリシーの現在の状態と矛盾する古くなったマッピングが、TLB中に残存することがあり、それによってメモリを、ポリシーに逆らって稼働させる使用に対して露出する(さらす)可能性がある。このTLBをフラッシュすることができるが、TLBをフラッシュすることは時間を要する操作であり、これを必要以上に多い頻度で実施することは好ましくない。本発明は、フラッシュが必要になるまでTLBのフラッシュを遅延させることができるレイジーTLBフラッシュのためのメカニズムを提供する。このメカニズムは、各プロセッサがそれ自体のTLBを保持し、他のプロセッサのTLBとは別にフラッシュすることができるマルチ・プロセッサ・システム中で使用することが好ましい。
コンピューティング構成の例
図1は、本発明の態様を実装することができるコンピューティング環境の一例を示している。このコンピューティング・システム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどのような限定をも示唆することを意図していない。また、コンピューティング環境100は、例示の動作環境100に示されるコンポーネントのどの1つまたは組合せに関してどのような依存性または必要性を有するものと解釈すべきでもない。
本発明は、他の多数の汎用または専用のコンピューティング・システム環境または構成を用いて動作可能である。本発明に使用するのに適することができるよく知られたコンピューティングのシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な大衆消費電子製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、埋込みシステム、以上のシステムおよび装置のどれかを含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。本発明はまた、分散コンピューティング環境でも実施されことが可能であり、この場合、タスクは、通信ネットワークまたは他のデータ伝送媒体を介してリンクされるリモート処理装置によって実施される。分散コンピューティング環境では、プログラム・モジュールおよび他のデータは、メモリ記憶装置を含むローカルコンピュータ記憶媒体にもリモート・コンピュータ記憶媒体にも配置することができる。
図1を参照すると、本発明を実装するシステムの一例は、コンピュータ110の形態の汎用コンピューティング装置を含んでいる。コンピュータ110のコンポーネントは、それだけには限定されないが、処理装置120、システム・メモリ130、およびこのシステム・メモリを含めて様々なシステム・コンポーネントを処理装置120に結合するシステム・バス121を含むことができる。処理装置120は、マルチ・スレッド・プロセッサ上でサポートされる処理装置など複数の論理処理装置を表すこともある。システム・バス121は、メモリ・バスまたはメモリ・コントローラ、周辺バス、様々なバス・アーキテクチャのうちのどれかを使用したローカル・バスを含めていくつかのタイプのバス構造のうちのどれかとすることができる。一例として、限定するものではないが、かかるアーキテクチャには、ISA(Industry Standard Architecture;業界標準アーキテクチャ)バス、MCA(Micro Channel Architecture;マイクロ・チャネル・アーキテクチャ)バス、EISA(Enhanced ISA;拡張ISA)バス、VESA(Video Electronics Standard Association;ビデオ・エレクトロニクス規格協会)ローカル・バス、および(メザニン・バス(Mezzanine bus)としても知られている)PCI(Peripheral Component Interconnect;周辺コンポーネント相互接続)バスなどが含まれる。システム・バス121はまた、通信装置間のポイント・ツー・ポイント接続、スイッチング機構(switching fabric)などとしても実装することができる。
コンピュータ110は、一般に様々なコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ110がアクセスすることができ、揮発性媒体も不揮発性媒体も、着脱可能媒体も着脱不能媒体も含んでいる任意の使用可能な媒体とすることができる。一例として、限定するものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性の、着脱可能および着脱不能な媒体を両方とも含んでいる。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CDROM、DVD(digital versatile disk;デジタル多用途ディスク)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができコンピュータ110がアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に搬送波や他の搬送メカニズムなど変調されたデータ信号の形で、コンピュータ読取り可能命令、データ構造、プログラム・モジュールまたは他のデータを具現化し、この通信媒体は、任意の情報配信媒体を含んでいる。用語「変調されたデータ信号」は、情報を信号中で符号化するような態様で1つまたは複数のその特性が設定された、あるいは変更された信号を意味する。一例として、限定するものではないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、および音響、RF、赤外線、他の無線媒体などの無線媒体を含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるものとする。
システム・メモリ130は、ROM(read only memory;読取り専用メモリ)131やRAM(random access memory;ランダム・アクセス・メモリ)132など揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含んでいる。起動時などにコンピュータ110内の要素間で情報を転送する助けをする基本ルーチンを含むBIOS(basic input/output system;基本入出力システム)133は、一般にROM131に記憶される。RAM132は、一般に処理装置120から、ダイレクトにアクセス可能であり、および/または現在処理装置120によって動作させられているデータおよび/またはプログラム・モジュールを含んでいる。一例として、限定するものではないが、図1は、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136およびプログラム・データ137を示している。
コンピュータ110はまた、他の着脱可能/着脱不能な揮発性/不揮発性のコンピュータ記憶媒体を含むことができる。一例にすぎないが、図1は、着脱不能な不揮発性の磁気媒体から情報を読み取りまたはそれに情報を書き込むハードディスク・ドライブ140、着脱可能な不揮発性の磁気ディスク152から情報を読み取りまたはそれに情報を書き込む磁気ディスク・ドライブ151、およびCDROMや他の光媒体など着脱可能な不揮発性光ディスク156から情報を読み取りまたはそれに情報を書き込む光ディスク・ドライブ155を示している。例示の動作環境中で使用することができる他の着脱可能/着脱不能な揮発性/不揮発性のコンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROMなどが含まれる。このハードディスク・ドライブ141は、一般にインターフェース140などの着脱不能なメモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、一般にインターフェース150などの着脱可能なメモリ・インターフェースによってシステム・バス121に接続される。
以上で説明し図1に示したドライブおよびこれらに関連するコンピュータ記憶媒体は、コンピュータ110のためのコンピュータ読取り可能命令、データ構造、プログラム・モジュールおよび他のデータの記憶域を提供する。図1において、例えばハードディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147を記憶するものとして示されている。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137と同じにもまたは異なるものにもすることができることに留意されたい。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147にはここで異なる番号が付与されて、少なくともこれらが異なるコピーであることが示されている。ユーザは、キーボード162や、マウス、トラック・ボール、またはタッチ・パッドとして一般に呼ばれるポインティング装置161などの入力装置を介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力装置(図示せず)は、マイクロホン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどを含むことができる。これらおよび他の入力装置はしばしば、システム・バスに結合されるユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレル・ポート、ゲーム・ポート、USB(universal serial bus;ユニバーサル・シリアル・バス)など他のインターフェースおよびバス構造によって接続することもできる。モニタ191または他タイプのディスプレイ装置も、ビデオ・インターフェース190などのインターフェースを介してシステム・バス121に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース195を介して接続することができるスピーカ197やプリンタ196など他の周辺出力装置を含むこともできる。
コンピュータ110は、リモート・コンピュータ180など1つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク化環境中で動作することができる。このリモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワーク・ノードとすることができ、一般にコンピュータ110に関して以上で説明した要素の多くまたはすべてを含んでいるが図1にはメモリ記憶装置181だけを示している。図1に示す論理接続は、LAN(local area network:ローカル・エリア・ネットワーク)171およびWAN(wide area network:ワイド・エリア・ネットワーク)173を含んでいるが、他のネットワークを含むこともできる。かかるネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットでは一般的になっている。
LANネットワーク環境中で使用するとき、コンピュータ110は、ネットワーク・インターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用するとき、コンピュータ110は一般に、インターネットなどWAN173上で通信を確立するためのモデム172または他の手段を含んでいる。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステム・バス121に接続することができる。ネットワーク化環境において、コンピュータ110に関連して示されるプログラム・モジュールまたはその一部は、リモート・メモリ記憶装置に記憶することができる。一例として、限定するものではないが、図1は、リモート・アプリケーション・プログラム185をメモリ装置181上に存在するものとして示している。図に示すネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
仮想アドレス・スキームの例
図2は、仮想アドレス・システムの一例を示している。図2に示す例は、ページ・タイプの仮想アドレス・スキームであるが、仮想アドレッシングは、セグメンテーションなど他のモデルに基づくことも可能なことが理解されよう。図2に示すスキームは、INTELx86プロセッサ上で使用可能な仮想アドレッシング・スキームのうちの1つなどのような、2−レベルのアドレス・スキームである。このスキームは、以下に説明するように仮想ページ識別子を物理ページに変換するためには2レベルの間接化(indirection)を使用する必要があるという意味において「2−レベル」である。
このページング・スキームにおいて、ページ・ディレクトリ202は、1組のエントリを含んでいる。図3に関して以下でエントリの構造の一例をより詳細に説明するが、本質的には、各エントリは、ページ・テーブル204(1)、204(2)、204(3)など特定のページ・テーブルの物理ロケーション(すなわち、ページ・フレーム番号すなわち「PFN」)を識別する。各ページ・テーブルは、やはり1組のエントリを含んでおり、ここで各エントリは、物理ロケーション(この場合にも、ページ・フレーム番号)、すなわちページ206(1)、206(2)、206(3)、206(4)などの特定のデータ・ページを識別する。データ・ページは、既定の長さの隣接するRAM132の一部分である。データ・ページは、任意のタイプのデータを記憶することができ、通常のデータを記憶するのに加えてデータ・ページを使用してページ・ディレクトリ202およびページ204(1)ないし204(3)のコンテンツ(contents)を記憶することもあることに留意されたい。したがって、所与のページは、ディレクトリ、テーブル、データ・ページとすることができ、またこれら3つの構造の任意の組合せとしての複合的な役割を果たすことができる。
図2に示す仮想アドレス・スキームは、特定のページを見つけるためにページ・ディレクトリ(レベル1)もページ・テーブル(レベル2)も経由する必要があるので2−レベルの仮想アドレス・スキームである。任意のレベル数を有する仮想アドレス・システムを設計することが可能であり、本発明の原理をかかるすべての仮想アドレス・スキームに適用することができることが当業者には理解されよう。当技術分野において知られているように、INTELx86プロセッサは、1つ、2つ、または3つのレベルを有する仮想アドレスをサポートしており、一般に「ハイブリッド」スキームが使用されており、このスキームでは、「スモール(small)」ページ(すなわち、4キロバイト長のページ)では2−レベルの仮想アドレスが使用されるが、「ラージ(large)」ページ(すなわち、4メガ・バイト長のページ)では、1−レベルの仮想アドレスが使用される。
図2のページング・スキームでは、ページ上の任意のバイトをページ・ディレクトリ・オフセット(page directory offset)211、ページ・テーブル・オフセット(page table offset)212、およびページ・オフセット(page offset)213を含む仮想アドレス210によって識別することができる。したがって、物理アドレスの位置を見つけるためには、アドレスの変換を実施するメモリ管理ユニット(MMU)220は、ページ・ディレクトリ・オフセット211を使用してページ・ディレクトリ202中の特定のエントリを見つける。例えば、オフセット211は、ゼロに等しいこともあり、これはページ・ディレクトリ202中のゼロ番目のエントリを調べるべきことを示している。このエントリは、ページ・テーブルを記憶するPFNを含んでおり、したがってMMU220は、このPFNを使用してページ・テーブルの1つ(例えば、ページ・テーブル204(1))を見つける。次いで、MMU220は、ページ・テーブル・オフセット212をこの識別されたページ・テーブルへのインデックスとして使用し、このオフセットの位置に見出されるエントリを検索する。このエントリは、データ・ページ(例えば、ページ206(1))のPFNを含んでおり、したがって、MMU220は、ページ・オフセット213を識別されたページの基底アドレスに加えて物理メモリの特定のバイトの位置を見つける。MMU220は、この単なるアドレス変換に加えて他の様々なファンクションを実施するようにもなっている。例えば、MMU220は、このテーブル中のページ・エントリが、「not present(存在しない)」とマークされている場合、ディスクからページをロードすることができる。MMU220は、ページが「読取り専用」などとマークされている場合には、書込みアクセスを認めないことになる。
図2の仮想アドレス・スキームでは、ページ・ディレクトリそれ自体のロケーション(すなわち、PFN)は、記憶ロケーション201に記憶される。MMU220は、仮想アドレス210を変換し始めると、この記憶ロケーションのコンテンツ(contents)を使用してページ・ディレクトリ202を位置決めする。したがって、複数のページ・マップが存在することができ、記憶ロケーション201のコンテンツを設定して所与のマップのページ・ディレクトリのPFNを含むようにすることによって現在使用するために特定のマップを選択することができる。INTELx86プロセッサの例では、記憶ロケーション201は、CR3と名付けられたレジスタに対応する。
ハイ・アシュアランス環境およびアドレス変換制御を介したCurtained Memory
前述の仮想アドレス・システムの一特徴は、所与のアドレス変換マップの下ではどのような仮想アドレスによってもマッピングされない物理アドレスが存在し得ることであることが理解されよう。したがって、ほとんどすべてのアクセス要求が仮想アドレスによって行われるINTELx86プロセッサなどのシステムでは、ソースのアドレス変換マップがオフリミット(off-limit)のメモリを指す(point)ことがないようにすることによって、所与のソースにとって物理メモリの一部分をオフリミットにすることが可能である。アドレス変換マップに対して制御を及ぼしてこのようなオフリミットのメモリを実現することをATC(Address Translation Control;アドレス変換制御)と呼ぶ。このメモリのオフリミット部分は、時に「Curtained Memory」と呼ばれ、ATCは、Curtained Memoryを実現する一方法である。
Curtained Memoryの一使用法は、ハイ・アシュアランス環境と非ハイ・アシュアランス環境が同じマシン上に共存するときの使用法である。ハイ・アシュアランス環境には、非ハイ・アシュアランス環境からはアクセスすることができないCurtained Memoryを設けることができる。ハイ・アシュアランス環境の概念、およびCurtained Memoryに対するその関係、については、図3を参照して以下に説明している。
図3は、同じマシン上に共存する2つの環境、すなわちハイ・アシュアランス環境360と非ハイ・アシュアランス環境350を示している。便宜上、これらの環境をそれぞれRHS(right-hand-side;右サイド)およびLHS(left-hand-side;左サイド)と呼ぶことにするが、RHS360がハイ・アシュアランスであり、LHS350が非ハイ・アシュアランスである。環境が「ハイ・アシュアランス」であることが何を意味するかは、この環境中で実施されるファンクションが正しく実施されることになる高レベルの確実さ(assurance)があるということである。このようにして、LHS350は、様々なファンクション306(1)、306(2)、…306(n)を実施し、RHS360は、様々なファンクション308(1)、308(2)、…308(m)を実施する。LHS350は、ファンクション306(1)ないし306(n)がどのように振る舞うと想定されているかを記述する仕様302に関連付けられている。同様にRHS360は、ファンクション308(1)ないし308(m)がどのように振る舞うと想定されているかを記述する仕様304に関連付けられている。仕様302および304は、書かれても書かれなくてもよい。例えば、LHS350は、その様々なサービス、ドライバ、システム・コールなどがどのように振る舞うと想定されているかを説明する詳細に書かれたマニュアルと共にやってくる商用オペレーティング・システムでもよい。あるいは、所与の環境がどのように振る舞うと想定されているかについての一般的な理解が単に存在し得るだけでもよく、この理解が仕様を構成することができる。
仕様がどのような形式を取るかにかかわらず、ほとんどすべてのソフトウェアが、バグ、バックドア(知られているものも、見出されていないものも)、論理エラーなどを含み、これらが、ソフトウェアをある予期しないような方法で振る舞わせる可能性があることが理解されよう。しかし、所与のソフトウェアの一部が、期待通りに振る舞うことになる確実さのレベル、すなわちソフトウェアの振る舞いがその仕様に記述された振る舞いと実際に一致することになる確実さのレベル、を評価することが可能である。図3の例では、RHS360は、RHS360が実施するように設計されているファンクション308(1)ないし308(m)が仕様304に準拠して実際に実施されることになる確実さのレベルが比較的高いという意味で「ハイ・アシュアランス」である。同様に、LHS350は、LHS350が仕様302に準拠してファンクションを306(1)ないし306(n)を実施することになる確実さのレベルが比較的低いという意味で「非ハイ・アシュアランス」である。このコンテキストにおける「比較的高い」および「比較的低い」ということは、RHS360が仕様304に従って振る舞うことになる確実さのレベルがLHS350が仕様302に従って振る舞うことになる確実さのレベルよりも高いことを意味する。
一般には、MICROSOFT WINDOWS(登録商標)オペレーティング・システムのうちの1つなど、フル機能を搭載した商用オペレーティング・システムは、非ハイ・アシュアランス環境であると言うことは、概ね事実である。かかる環境は、オープン・アーキテクチャをサポートし、このオープン・アーキテクチャにおいては、デバイス・ドライバ、プラグイン、および他のタイプの拡張を自由に追加することができ、このオープン・アーキテクチャは、すべての考えられる限りの環境下でかかるオペレーティング・システムの振る舞いを検証することを困難にする。したがって、何らかのタイプのセキュリティが望ましいとき、かかるフル機能のオペレーティング・システムをハイ・アシュアランスなオペレーティング・システムと一緒に稼働させることが有用である。このハイ・アシュアランスなオペレーティング・システムは、僅かな数の機能を提供する小規模のオペレーティング・システムである。ハイ・アシュアランスなオペレーティング・システムによって提供される機能は小規模なので、その動作に影響を与える可能性のある変数はより少なくなっており、したがってその振る舞いを高度の確実性に至るまで検証することはより簡単である。
好ましい実施形態では、ハイ・アシュアランス環境は、Curtained Memory、すなわち、非ハイ・アシュアランス環境からはアクセス不可能であるメモリの一部分を含んでいる。したがって、RHS360は、LHS350の下で実行されるプロセスが読み取りまたは書き込む危険なしに、Curtained Memory中に機密データ(例えば、暗号キー)を記憶することができる。例えば、仕様304は、外部からの改ざん(outside tampering)からRHS360が情報を保護する機能を有し、Curtained Memoryによって、RHS360がこの機能を実施できるようにすることができる。さらに、RHS360がその様々なファンクションを実施するために使用するコードをこのCurtained Memory中に記憶して、LHS350の下で実行されるプロセスがこのコードに異なるコード(それによって、RHS360がその仕様外で振る舞うようになることもある)を上書きしないように防止することができる。図3は、RHS360が使用する場合には使用可能なCurtained Memory312を示している。物理アドレス空間310は、所与のコンピューティング装置上で使用可能な物理メモリ・ロケーションのすべてを含んでいる。Curtained Memory312は、これらのロケーションのサブセットである。図3に示すように、RHS360は、物理アドレス空間310のすべてにアクセスできるが、LHS350は、物理アドレス空間310の、Curtained Memory312を構成する一部分に対するアクセスができない。(図3は、アドレス空間のCurtained部分(他から見えないようにされた部分)およびNon−Curtained部分(他から見えないようにされていない部分)をそれぞれが隣接するものとして示しているが、このように隣接している必要はない。さらに必ずしも、RHS360が物理アドレス空間全体にアクセスできる必要はなく、またLHS350がCurtained Memory312の外側にある、物理アドレス空間のあらゆる部分にアクセスできる必要もない。)
以上で指摘したように、ほとんどすべてのメモリ・アクセス要求が物理アドレスによって行われるある種のシステムが存在する。かかるシステム上でCurtained Memory312を実装する一方法は、Curtained Memory312についての仮想アドレスがLHS350に露出されない(さらされない)ような方法で、アドレス変換マップのコンテンツ(contents)を制御する方法である(あるタイプのアクセス要求が、それらのターゲットを物理アドレスによって識別する可能性がある場合には、ダイレクト・メモリ・アクセス装置または他のソースからの物理的なアクセス要求をフィルタリングする排他ベクトル(exclusion vector)など、何らかの補助的な協働メカニズムによって、Curtained Memoryへのアクセスを制限することができる。)。LHS350が、Curtained Memory312へと至るはずのアドレス変換マップを使用できないことを保証するいくつかのアルゴリズムが使用可能であるが、これらのアルゴリズムの背後における中心的なアイデアは、(1)プロセッサがLHS350で動作しているとき、CR3(図2に示す記憶ロケーション201)にロードされたマップはどれも、Curtained Memory312に含まれるページには至らないようにする、(2)LHS350中のアクティブなマップを編集するどのような試みに対しても、提案された編集を評価して、その編集がCurtained Memory312のページに至るリンクをもたらさないように保証することである。
以下は、ATCを介してCurtained Memoryを実装するためのアルゴリズムの一例である。
D1を、ページ・ディレクトリとして使用することができるページの集合であるとする。D2を、ページ・テーブルとして使用することができるページの集合であるとする。Dを、D1とD2の和集合(union)(すなわち、D=D1∪D2)であるとする。「存在している(present)」とマークされた(すなわち、その存在ビット(present bit)がセットされた)ページ・ディレクトリまたはページ・テーブル中の各エントリは、「リンク」と呼ばれる。D1中のあるページから問題となっているD2ページへのスモール読取り書込みリンク(small read-write link)がある場合には、D2中のページは、「書込みアクティブ(write active)」である(「スモール(small)」リンクは、ディレクトリからテーブルへのリンク、すなわち最終的にスモール・ページに至ることになるディレクトリ中のリンクである。「ラージ(large)」リンクは、ラージ・ページを指すディレクトリ中のリンクである。)。あるエンティティが読取りおよび/または書込みアクセスを許されるページを定義するポリシーが存在すると、想定する。
以下のインバリアント(invariants)が保持される。
−CR3は、D1中にある;
−すべてのD1ページおよびD2ページは、その関連するポリシーの下で読取り可能である;
−D1ページからのあらゆるスモール・リンクは、D2ページを指す;
−D2ページからのリンクは、そのポリシーの下で読取り可能なページを指す;
−書込みアクティブなD2ページからのあらゆる読取り書込みリンクは、そのポリシーの下で書込み可能であるページで、D中にないページ、を指す;
−D1ページからのラージ・リンクのラージ・ページ・ターゲット中に含まれるあらゆるスモール・ページはそのポリシーの下で読取り可能である;そのリンクが読取り書込みの場合には、このスモール・ページも、またそのポリシーの下に書込み可能であり、D中にはない。
例えば、そのポリシーが、Curtained Memory312をアクセス不可能と定義する場合には、LHS350が使用可能なすべてのアドレス変換テーブルについて以上のインバリアントを保持することにより、仮想アドレスによってそのターゲットを識別するアクセス要求で、LHS350中で生ずるアクセス要求が、Curtained Memory312に決して到達できないことを保証することになる。
ATCを伴う変換索引バッファの使用
変換索引バッファ(TLB)は、本質的にはマッピング・データが記憶されるキャッシュである。TLBの背後にある基本的なアイデアは、最近アクセスされたページは再びアクセスされる可能性が高いというものであり、したがって、所与の仮想ページから対応する物理ページへの最近使用されたマッピングがそのTLB中に記憶される。アドレス変換テーブルからマッピングを計算するには、(少なくともINTELx86プロセッサ上で使用される最も一般的な2−レベルの仮想アドレス・スキームにおいては)2回のメモリ・アクセス、すなわち、ページ・ディレクトリへの、該当するページ・テーブルのロケーションを見出すための1つのアクセスと、次いで、そのページ・テーブルへの、該当するデータ・ページを見出すための2回目のアクセス、が必要である。アクセスがシークされる実際のターゲット・ロケーションは、これら2回の(他の)メモリ・アクセスが実施されてターゲットデータの物理ロケーションを見出した後に、アクセスできるだけである。TLBは、最近使用されたマッピング情報を保持する高速メモリを提供することによって、かかる追加のメモリ・アクセスの必要性を減らす。したがって、実施する必要のあるアドレス変換のたびごとに、プロセッサは、まずそのTLBを参照して所与の仮想ページについてのマッピング・データがそのTLB中にキャッシュされているかどうかを決定する。そのマッピング・データがTLB中に存在しない場合には、アドレス変換テーブルが参照される。
図4は、プロセッサがどのようにTLB402を使用するかを示している。プロセッサ120は、一連のコードを実行し、この実行中に、メモリ400のターゲット・ロケーション406から情報を読み取り、あるいはそれに情報を書き込む1つの命令が発生する。この命令は、ターゲット・ロケーション406の物理アドレスを識別しないが、代わりにターゲット・ロケーション406の仮想アドレスを指定する。したがって、プロセッサ120(または、多くの場合には、プロセッサ120に関連付けられたメモリ管理ユニット)が、この仮想アドレスを物理アドレスに変換する必要がある。プロセッサ120は、まずTLB402中を調べてこの仮想アドレスを変換する際に使用できるマッピングがキャッシュされているかどうかを決定する(丸で囲んだ1)。かかるマッピングが存在する場合には、このマッピングを使用してこのアドレスを変換する。かかるマッピングが存在しない場合には、アドレス変換マップ404の該当部分をメモリ400から読み取り(丸で囲んだ2)、これらのマップ部分を使用してこの仮想アドレスを変換する。アドレスをどのように変換するかにかかわらず、この変換済みのアドレスを使用して物理ターゲット・ロケーション406にアクセスする(丸で囲んだ3)。TLBが効率をもたらす理由は、メモリ400中のアドレス変換マップ404を読み取るのに比べてTLB402中の情報を調べる方が速いからである。さらに、設計によっては、TLB402に記憶されたデータにより、2ステップの変換プロセスを1ステップに縮めることができる。すなわち、アドレス変換マップを使用することは、ページ・ディレクトリとページ・テーブルを別々のステップで読み取る必要がある。しかし、1つのPDオフセット/PTオフセットの組合せをTLB402にキャッシュすることができ、それによって、仮想ページをPDオフセット/PTオフセットの組合せによって単一ステップで識別できるようにすることができる。
ATCシステム中でTLBを使用する際には、TLBを介して使用可能な変換を考慮に入れるためにこのATCのインバリアントを修正する。例えば、以前に説明したATCアルゴリズムの例では、リンクの定義を以下のように修正することができる。すなわち、あるページから別のページへのリンクは、物理メモリ中に存在する場合、または何らかのTLBにキャッシュされている場合、に存在する。TLBのコンテンツは、たいていのアーキテクチャ(例えばx86プロセッサ)では直接見ることができないが、変換はメモリを介してのみTLBに入力されるので、そのコンテンツをバインドすることができる。このアルゴリズム例においてそのインバリアントを使用すると、D1またはD2からページを取り除いて、ページに対する読取りアクセスまたは読取り書込みアクセスを放棄し、およびD2に対して、ページのステイタス(状態)を書込みアクティブから書込み非アクティブに、またはその逆へと変更する書込みまたは追加をし、次いでこのTLBをフラッシュする必要がある。
しかし、TLBのフラッシングは、性能を低下させる、時間を要する動作であるので、TLBのフラッシュをさらにいっそう減らそうという本質的な誘因が存在する。第1に、TLBは、有用なマッピング・データで満たされている範囲でしか効率を向上させず、TLBのフラッシングは、このマッピング・データをこのTLBから取り除いてしまう。第2に、実際のフラッシュそれ自体が、以下の理由から時間を要することもある。すなわち、図3に示すアーキテクチャでは、Curtained Memory312の保持は、カウンタ・ポリシー・マッピングの不在(absence of counter-policy mapping:ポリシーに反するマッピングが無いこと)に依存している。好ましい実施形態において、カウンタ・ポリシー・マッピングの不在がハイ・アシュアランス環境を提供する一要素であることから、このマッピングの制御自体は、ハイ・アシュアランス環境で実施する必要がある。したがって、アドレス変換マップ上の制御自体をハイ・アシュアランス環境で実施する必要があるだけでなく、TLBのフラッシングもハイ・アシュアランス環境で実施する(または少なくとも検証する)必要がある。したがって、ATCシステムの一部として用いられるあらゆるTLBフラッシュが、現行の環境をLHS350からRHS360へと変更することを必要とする。コンテキストを1つの環境から別の環境へと変更するプロセスは、それ自体、時間を要し、フラッシュに要する時間を増大させる。したがって、必要以上の頻度のTLBのフラッシングを回避することが望ましい。
本発明では、これらのフラッシュの一部を、遅延させて、場合によれば回避することが可能なメカニズムを提供する。一実施形態では、本発明は2つのサブ・メカニズムに基づいている。第1のサブ・メカニズムは、(例えばページをD2に追加し、またはページを書込みアクセス不可能にするなど)実際のメモリ・マップを修正することをしない動作で、メモリに何らかの修正を許容するその完了が必要とされるまで、概念的に遅延させることができる動作を提供する。例えば、(セキュリティ・ポリシーにおいて)あるページに対する読取りアクセスを放棄する動作(act)を、そのページが修正される可能性が存在するようになるとき(別の計算エンティティがそのページに対する読取り書込みマッピングを作成するとき)まで遅延させることができる。第2のサブ・メカニズムは、タイム・スタンプを使用してあるページに対する特定のマッピングが特定のTLBに存在するかどうかをより正確に追跡する。
以前に提示したアルゴリズム例では、フラッシュを必要とする遅延可能な動作を、2つのクラス、すなわち、あるページを読み取ることができるようにする任意の変換をTLBから除去する(あるページに対する読取りアクセスを放棄し、またはD1またはD2からページを除去する)ことを必要とする動作、およびあるページを修正することができるようにする任意の変換をTLBから除去する(あるページに対する書込みアクセスを除去する)ことを必要とする動作に区分することができる。前者を「読取りフラッシング動作」、後者を「書込みフラッシング動作」と呼び、これらの動作を以下のように遅延させることができる。
−読取りフラッシング動作は、一部の計算エンティティ(computational entity)がそのページに対する読取り書込みマッピングを作成しようと試みるまで、一部のデバイスがそのページをダイレクト・メモリ・アクセスを介して修正することができるようになるまで、あるいはそのページをATCアルゴリズムそれ自体によって修正するまで、遅延させることができる。
−書込みフラッシング動作は、一部の計算エンティティがそのページに対する読取りまたは読取り書込みマッピングを作成しようと試みるまで、一部の装置がそのページをダイレクト・接メモリ・アクセスを修正することができるようになるまで、あるいはそのページをATCアルゴリズムそれ自体によって修正するまで、遅延させることができる。
読取りフラッシング動作を実施する際には、TLBが問題のページに対する読取りマッピングを依然として含む可能性がある場合に、TLBをフラッシュする必要があるだけである。このことは、そのページに対する読取りマッピングが存在していた最後の時刻以来、TLBがフラッシュされていない場合のみである可能性がある。同様に、書込みフラッシング動作を実施する際には、そのページに対する読取り書込みマッピングが最後に存在したとき以来、TLBがフラッシュされていない場合にTLBをフラッシュする必要があるだけである。
あるページに対する読取り/読取り書込みマッピングが存在したとき以来、TLBがフラッシュされたかどうかを決定するために、各ページごとの2つのタイム・スタンプ(その読取りタイム・スタンプおよびその書込みタイム・スタンプ)、および各TLBごとの1つのタイム・スタンプ(そのフラッシュ・タイム・スタンプ)が保持される。あるページに対するこの最後の読取り/読取り書込みマッピングが除去されるときはいつでも、現在の時刻がその読取り/読取り書込みタイム・スタンプに記録される。TLBがフラッシュされるときはいつでも、現在の時刻がそのフラッシュ・タイム・スタンプに記録される。
時刻はいくつかの方法で測定することができる。第1の手法の例では、TLBについて使用されるクロックは、まさにフラッシュ・タイム・スタンプである。したがって、あるページについての読取りおよび読取り書込みタイム・スタンプは、TLBフラッシュ・タイム・スタンプからコピーされる。TLBがフラッシュされるとき、このフラッシュ・タイム・スタンプは、変更される(どのように変更されるかは問題ではない)。あるページ上の読取り/読取り書込みタイム・スタンプがこのフラッシュ・タイム・スタンプとは異なる場合、この読取り/読取り書込みマッピングは、TLB中に存在しないことが保証される。偶然にこのフラッシュ・タイム・スタンプが(多分、数回)変更されているがこの読取り/読取り書込みタイム・スタンプに(例えばカウンタのラップアラウンドのために)たまたま一致する場合には、害はない。すなわち、ただ不必要なフラッシュが存在することになるだけである。
第2の手法の例では、時刻は、実時間または仮想クロックを用いて測定される。読取り/読取り書込みタイム・スタンプおよびフラッシュ・タイム・スタンプを記録するために使用されるクロックが、あるクロック・スキューの範囲内に収まるように常に一致することが保証される場合、この読取り/読取り書込みタイム・スタンプが少なくともクロック・スキュー分だけそのフラッシュ・タイム・スタンプに先行する場合には、その読取り/読取り書込みマッピングがTLB中に存在しないことが保証される。クロック・スキューを完全に回避する一方法は、グローバル・クロック、およびどのTLBがフラッシュされるときにも増分される共用カウンタを使用することであるが、かかるクロックは、ホットスポット(hotspot)になり得る。
第1の手法には、同期化されたクロック(synchronized clocks)を必要としないという利点がある。しかし、考慮すべき多数のTLBが存在する場合には、この第1の手法では、各TLBごとに別々の読取り/読取り書込みタイム・スタンプが必要となるのに対して、第2の手法では単一クロックの読取りしか必要とならない。さらに、第2の手法では、クロック自体についてのメモリ・コンテンション(メモリ競合)がなくなる。これら2つの手法を組み合わせることもでき、また(例えば、ベクトル・クロックなど)他のメカニズムを使用することもできる。
本発明は、TLBのレイジー・フラッシングを可能にするメカニズムを提供しており、その結果、TLBの明示的なフラッシュは、LHS350が、このアドレス変換マップにもはや従わない古くなったTLBエントリを使用してあるページに実際にアクセスしている可能性が存在するようになるまで遅延させられる。原則として、あるページに対する最後のマッピングが取り除かれるときに、このページは、「タイム・スタンプ」される(以下に説明するように、この「タイム・スタンプ」は、実際にはその時刻を含んでおらず、その代わりに順次カウンタの値を含むことがある。)。このページをその後にアクセスするとき、そのページがタイム・スタンプされて以来このTLBがフラッシュされているかどうかに応じてこのTLBをフラッシュすべきかについての決定が行われる。
図5に示すマルチ・プロセッサ・コンピュータ・システムにおいて、プロセッサ120(1)ないし120(n)のそれぞれは、それ自体のTLB402(1)ないし402(n)を保持する。換言すれば、プロセッサ120(1)ないし120(n)はそれぞれ、同じ基礎をなすアドレス変換テーブル(same underlying address translation tables)にアクセスできるが、これらのテーブルからマッピングを別々にキャッシュすることができる。さらに、一実施形態では、各プロセッサはLHS350中またはRHS360中で動作することができる。本発明によれば、カウンタ502(1)ないし502(n)は、それぞれプロセッサ120(1)ないし120(n)に関連付けられる。プロセッサ上の環境がRHS360からLHS350に変更されるたびに、このプロセッサに関連付けられたカウンタが増分される。
ページがLHS350から使用不可能とされるときはいつでも(すなわち、このページが、その該当するアクセス・ポリシーの下でLHS350から使用不可能とされ、LHS350から使用可能なすべてのマッピングから切り離されるとき)、このページには、そのカウンタ値が効果的に「タイム・スタンプされる」。(このカウンタは、物理的な意味では「時刻」をカウントしないが、ある種の事象が起こるときにそれに応答してカウンタが進むので1種の時間計測と見なすことができる。)したがって、あるページについての記憶されたカウンタ値を、ページにアクセスしようとしているプロセッサについての現在のカウンタ値と、比較することによって、このページがLHS350から使用不可能にされて以来、このプロセッサがRHS360に入ったことがあるかどうかを決定することができる(以上で説明したように、RHS360に入ることは、TLBを確実にフラッシュすることを引き起こす。)。このページが切り離されてから、プロセッサがまだRHS360に入ったことがない場合には、このプロセッサは、RHS360に入りそのTLBをフラッシュする。このページにアクセスしようとする試みがLHS350中で生ずる場合には、このプロセッサは、LHS350に戻り、再びこのページにアクセスしようとする。このページが切り離されて以来、このプロセッサがRHS360に入ったことがある場合(すなわち、このプロセッサが現在RHS360内にあるか、それともこのページが切り離された後のあるポイントでRHS360に入ったことがある場合)には、このページがLHS350にとって使用可能であった最後の時以来、このTLBが確実にフラッシュされ、したがってこのTLBにはこのページに対するどのようなマッピングも含まれ得ず、それ故にこのTLBはその時点でフラッシュする必要がないことが分かる。
図6は、ページがLHS350から使用不可能にされるのに続いてTLBをフラッシュするプロセスを示す流れ図である。図6に示すプロセスの最初に、所与のページ(ページX)は、ある適用可能なアクセス・ポリシーの下でLHS350からアクセスできるように使用可能であると想定する。あるポイントで、ページXは、そのアクセス・ポリシーの下でLHS350から使用不可能とされ、LHS350から使用可能なアドレス変換マップを必要に応じて調整してページXがこれらのマップから切り離されるようにする(602)。ページXが切り離される時に、そのマシン上のプロセッサのすべてについてのカウンタ値を記録し、後で取り出すためにこの記録をページXに関連付ける(604)。この記録は、そのマシン上の各プロセッサについての現在のカウンタ値を含むことが好ましい。
LHS350にとって使用可能なマップからページXを切り離した後、ページXが実際にアクセスされる以前に何らかの量の時間が経過することもある。しかし、あるポイントで、ページXを求めるアクセス要求が、特定のプロセッサ(プロセッサY)から生ずることになる(606)。次いで、ページに関連付けられた記録済みのカウンタ値を取り出し、プロセッサYについて記憶された値がプロセッサYの現在のカウンタ値と比較される(この記録は、他のプロセッサについての記憶されたカウンタ値も含むことになるが、他のこれらの値は、プロセッサYがそのTLBをフラッシュする必要があるかどうかを決定する際に無視される。)。プロセッサYの現在のカウンタ値がこの記憶されたカウンタ値よりも大きい場合には、ページXがLHS350から使用不可能にされて以来、プロセッサYがRHS360に入りそのTLBをフラッシュした場合で有るはずなので、さらなる照会なしにこのページに対するアクセスが許容される(614)。他方、プロセッサYについての記憶されたカウンタ値がプロセッサYの現在のカウンタ値と同じである場合には、ページXが切り離されて以来、RHS360には入ったことがなく、これは、すなわちプロセッサYのTLBが依然としてページXに対するマッピングを含む可能性があることを意味する。
プロセッサYがRHS360中で実行される場合(610)には、TLBは、そのアクセス・ポリシーに違反することなくページXに対するマッピングを含むことができ、したがって、ページXに対するアクセスが許容される(614)。しかし、プロセッサYがLHS350中で実行されている場合(および、ページXが切り離されて以来、プロセッサYがそのTLBをフラッシュしていないことが、608から知られている場合)、プロセッサYのTLBのコンテンツ(contents)がLHS350に対してページXへのマッピングを露出する(さらす)ことになる可能性がある。したがって、プロセッサYは、RHS360に入りそのTLBをフラッシュする(612)。TLBがフラッシュされた後、プロセッサYは、LHS350へと戻り、そのアクセス要求が再実行される(614)(それによってその要求されたアドレスをこの新しい空のTLBを用いて再変換することが必要になる)。
あるページをLHS350からアクセスできないようにすることが、TLBをフラッシュする必要性を引き起こし得るただ1つの事象(event)ではなく、本発明のメカニズムを使用して他の理由で生ずるTLBフラッシュを引き起こすこともできることに留意されたい。例えば、(以上で定義された)集合D1またはD2のうちの1つからあるページを取り除くことが、またはあるページについての読取りアクセス(または書込みアクセス)を放棄することが、TLBフラッシュの必要性を引き起こすこともある、というのは、これらの事象が、どのマッピングがこの関連するポリシーに適合しているかに対して、影響を及ぼすこともあるので。かかるケースでは、本発明のメカニズムを以上に説明した、例えば、D1またはD2からあるページを取り除くとき、または読取り(または書込み)アクセスを放棄するときにカウンタ値を記録すること、および、このページをアクセスする、プロセッサによる後続のどのような試みも、このページについてのプロセッサのカウンタ値と記憶済みのカウンタ値との間の比較を引き起こすこと、と同様な方法で使用することができる。
本発明のメカニズムは、フラッシュがRHS360へのトリップを必要とする場合に、またはLHS350もRHS360も使用可能である場合にさえも、限定されないことにさらに留意されたい。より一般的には、本発明のメカニズムは、マップの状態をもはや反映しない古いエントリがTLB中に存在する可能性があるどのような場合にも、例えば、あるオペレーティング・システムによって実施される通常のプロセス分離の場合にも、使用することができる。
前述の例は、単に説明の目的のためだけで提供されており、本発明を限定するものとは決して解釈すべきではないことに留意されたい。本発明を様々な実施形態に関して説明してきたが、本明細書中で使用してきた用語は、限定するための用語ではなく説明および例証のための用語であると理解されたい。さらに、本発明は、本明細書中で特定の手段、機材(materials)、および実施形態に関して説明してきたが、本明細書中に開示された特定のものに本発明を限定することを意図していない。それとは逆に、本発明は、特許請求の範囲の範囲内に含まれるすべての機能的に等価な構造、方法、および使用に拡張される。本明細書の教示を利用して、当業者なら本発明に多数の変更をもたらすことができ、本発明の範囲および趣旨から逸脱することなくその態様に変更を行うことができる。
本発明の態様を実装することができるコンピューティング環境の一例のブロック図である。 仮想アドレス・システムの一例のブロック図である。 マシン上で共存する2つの環境のブロック図で、そのメモリの一部分が他から見えないようにされている(curtained)2つの環境のブロック図である。 アドレス変換プロセス中で使用される変換索引バッファ(TLB)を示すブロック図である。 各プロセッサがTLBおよびカウンタに関連付けられる、複数のプロセッサを備えるシステムのブロック図である。 本発明の態様によるTLBのレイジー・フラッシングを行うプロセスの流れ図である。
符号の説明
100 コンピューティング環境
110 コンピュータ
120 処理装置(プロセッサ)
121 システム・バス
130 システム・メモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティング・システム
135 アプリケーション・プログラム
136 他のプログラム・モジュール
137 プログラム・データ
140 着脱不能な不揮発性メモリ・インターフェース
141 ハードディスク・ドライブ
144 オペレーティング・システム
145 アプリケーション・プログラム
146 他のプログラム・モジュール
147 プログラム・データ
150 着脱可能な不揮発性メモリ・インターフェース
151 磁気ディスク・ドライブ
152 着脱可能な不揮発性の磁気ディスク
155 光ディスク・ドライブ
156 着脱可能な不揮発性光ディスク
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワーク・インターフェース
171 ローカル・エリア・ネットワーク
172 モデム
173 ワイド・エリア・ネットワーク
180 リモート・コンピュータ
181 メモリ記憶装置
185 リモート・アプリケーション・プログラム
190 ビデオ・インターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
201 記憶ロケーション
202 ページ・ディレクトリ
204 ページ・テーブル
206 ページ
210 仮想アドレス
211 ページ・ディレクトリ・オフセット
212 ページ・テーブル・オフセット
213 ページ・オフセット
220 メモリ管理ユニット(MMU)
302 ファンクション306(1)ないし306(n)がどのように振る舞うと想定されるかを記述する仕様
304 ファンクション308(1)ないし308(m)がどのように振る舞うと想定されるかを記述する仕様
306 ファンクション
308 ファンクション
310 物理アドレス空間
312 Curtained Memory
400 メモリ
402 TLB
404 アドレス変換マップ
406 物理ターゲット・ロケーション

Claims (8)

  1. 複数のマッピング・キャッシュであって、それぞれが、コンピューティング装置の複数の処理装置のうちの対応する1つに関連付けられ、仮想アドレスを物理アドレスに変換するために使用され、アドレス変換マップに基づいてマッピングを記憶する、前記複数のマッピング・キャッシュのうちの第1のマッピング・キャッシュから古くなったエントリをクリアする方法であって、当該方法は、
    カウンタを保持すること、
    前記複数のマッピング・キャッシュのうちの前記第1のマッピング・キャッシュをフラッシュするたびに前記カウンタを更新すること、
    前記アドレス変換マップ中の変更に応答して前記カウンタ値を記録し、記録されたカウンタ値を格納すること、
    前記カウンタ値と前記記録済みのカウンタ値との比較に基づいて、前記アドレス変換マップ中の前記変更が行われて以来、前記複数のマッピング・キャッシュのうちの前記第1のマッピング・キャッシュが必ずしも確実にフラッシュされていないことを決定すること、および
    前記複数のマッピング・キャッシュのうちの前記第1のマッピング・キャッシュをフラッシュすること
    を備え、この方法ではポリシーがメモリに対する許容可能なアクセスを定義し、前記方法は、さらに、
    エンティティが前記ポリシーに違反して前記メモリにアクセスできるようにする仮想アドレス・マッピングを、前記アドレス変換マップが前記エンティティに対してさらされないように前記アドレス変換マップのコンテンツを制御することを備え、
    前記変更は、
    前記ポリシーに一致する前記マップを置くかあるいは保持する、前記アドレス変換マップに対する修正、あるいは
    前記マップに対する前記エンティティの書込みアクセスを制限する、前記アドレス変換マップに対する修正
    を備えることを特徴とする方法。
  2. 前記アドレス変換マップは、前記メモリの一部分に対するリンクを備え、前記アドレス変換マップのコンテンツを制御することは、前記メモリの前記一部分を前記エンティティからアクセス不可能にすることを備え、前記変更は、前記メモリの前記一部分に対するすべてのリンクを前記アドレス変換マップから取り除くことを備えることを特徴とする請求項1に記載の方法。
  3. マッピング・キャッシュおよびそれに関連するカウンタを有する複数のプロセッサと、
    前記各マッピング・キャッシュがそれに基づいてマッピングを格納するアドレス変換マップを格納するメモリであって、該メモリに対するアクセスを管理するポリシーが存在し、該ポリシーに違反して前記メモリへのアクセスを可能にするマッピングについての露出を防止するように、そのコンテンツが制御される、前記アドレス変換マップ、を記憶するメモリと、
    前記マッピング・キャッシュのうちの第1のマッピング・キャッシュをフラッシュし、前記マッピング・キャッシュのうちの前記第1のマッピング・キャッシュがフラッシュされると前記カウンタのうちの第1のカウンタを増分する、第1のロジックと、
    前記アドレス変換マップ中または前記アドレス変換マップに関するプロパティ中の変更に応答して前記第1のカウンタの値を記録する第2のロジックであって、前記記録済みのカウンタ値が前記変更に関連して記憶される第2のロジックと、
    前記記録済みのカウンタ値を前記第1のカウンタの現在の値と比較し、前記比較により、前記変更以来、前記マッピング・キャッシュのうちの前記第1のマッピング・キャッシュがフラッシュされていないことが示される場合には、前記マッピング・キャッシュのうちの前記第1のマッピング・キャッシュをフラッシュするようにする第3のロジックと
    を備えることを特徴とするアドレス・マッピング・キャッシュの使用を管理するシステム。
  4. 前記各マッピング・キャッシュは、複数のカウンタのうちの異なるカウンタに関連付けられ、前記第1のロジックは、所与のマッピング・キャッシュがフラッシュされるときに前記所与のマッピング・キャッシュに対応する前記カウンタを増分することを特徴とする請求項3に記載のシステム。
  5. 前記変更は、前記メモリの第1のページに対するすべてのリンクが前記アドレス変換マップから取り除かれる状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項3に記載のシステム。
  6. 前記変更は、前記メモリの第1のページに対する書込み可能リンクがない状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項3に記載のシステム。
  7. 前記第3のロジックは、前記変更の結果を使用すべきことを検出するのに応答して呼び出されることを特徴とする請求項3に記載のシステム。
  8. 前記変更は、前記メモリの第1のページに対するすべてのリンクが前記アドレス変換マップから取り除かれる状態に前記アドレス変換マップを置くことを備え、前記検出は、仮想アドレスが前記第1のページ上のロケーションに変換されていることに基づくものであることを特徴とする請求項7に記載のシステム。
JP2004304748A 2003-11-26 2004-10-19 変換索引バッファのレイジー・フラッシング Expired - Fee Related JP3944504B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/723,823 US7069389B2 (en) 2003-11-26 2003-11-26 Lazy flushing of translation lookaside buffers

Publications (3)

Publication Number Publication Date
JP2005158040A JP2005158040A (ja) 2005-06-16
JP2005158040A5 JP2005158040A5 (ja) 2006-12-28
JP3944504B2 true JP3944504B2 (ja) 2007-07-11

Family

ID=34465717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004304748A Expired - Fee Related JP3944504B2 (ja) 2003-11-26 2004-10-19 変換索引バッファのレイジー・フラッシング

Country Status (12)

Country Link
US (2) US7069389B2 (ja)
EP (1) EP1536341B1 (ja)
JP (1) JP3944504B2 (ja)
KR (1) KR100918530B1 (ja)
CN (1) CN100424657C (ja)
AT (1) ATE457495T1 (ja)
AU (1) AU2004218704B2 (ja)
BR (1) BRPI0404015B1 (ja)
CA (1) CA2483938C (ja)
DE (1) DE602004025442D1 (ja)
MX (1) MXPA04011270A (ja)
RU (1) RU2361267C2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283566A1 (en) * 2003-09-29 2005-12-22 Rockwell Automation Technologies, Inc. Self testing and securing ram system and method
US7334159B1 (en) 2003-09-29 2008-02-19 Rockwell Automation Technologies, Inc. Self-testing RAM system and method
US7533133B1 (en) * 2004-04-28 2009-05-12 Symantec Operating Corporation Externally managed file versions
US7249241B1 (en) * 2004-04-29 2007-07-24 Sun Microsystems, Inc. Method and apparatus for direct virtual memory address caching
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US7398371B2 (en) * 2005-06-23 2008-07-08 Qualcomm Incorporated Shared translation look-aside buffer and method
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US7472227B2 (en) * 2005-08-11 2008-12-30 International Business Machines Corporation Invalidating multiple address cache entries
US8909946B2 (en) 2005-11-15 2014-12-09 Microsoft Corporation Efficient power management of a system with virtual machines
US7913057B2 (en) * 2006-01-27 2011-03-22 Graphics Properties Holdings, Inc. Translation lookaside buffer checkpoint system
US8479174B2 (en) 2006-04-05 2013-07-02 Prevx Limited Method, computer program and computer for analyzing an executable computer file
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8615643B2 (en) 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US8694712B2 (en) * 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
US7631147B2 (en) * 2006-12-06 2009-12-08 Microsoft Corporation Efficient flushing of translation lookaside buffers in a multiprocessor environment
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
US7774658B2 (en) * 2007-01-11 2010-08-10 Hewlett-Packard Development Company, L.P. Method and apparatus to search for errors in a translation look-aside buffer
US8868844B2 (en) * 2008-06-25 2014-10-21 International Business Machines Corporation System and method for a software managed cache in a multiprocessing environment
US20090327750A1 (en) * 2008-06-29 2009-12-31 Tse-Hong Wu Security system for code dump protection and method thereof
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8510511B2 (en) 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8209491B2 (en) * 2010-04-27 2012-06-26 Symantec Corporation Techniques for directory server integration
KR101155127B1 (ko) * 2010-12-24 2012-06-11 서울대학교산학협력단 멀티코어 시스템의 메모리 관리 장치 및 방법
US20120260304A1 (en) 2011-02-15 2012-10-11 Webroot Inc. Methods and apparatus for agent-based malware management
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
AU2011369945B2 (en) * 2011-10-27 2015-06-25 Huawei Technologies Co., Ltd. Method for Controlling Cache Mapping and Cache System
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9262337B2 (en) * 2013-10-09 2016-02-16 Microsoft Technology Licensing, Llc Dynamically determining a translation lookaside buffer flush promotion threshold value
RU2547636C1 (ru) * 2013-12-30 2015-04-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" Устройство для преобразования виртуальных адресов в физические адреса
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US9886391B2 (en) 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
EP3172665A4 (en) * 2014-07-25 2018-03-28 INTEL Corporation Using a conversion look aside buffer to implement an instruction set agnostic runtime architecture
US11288205B2 (en) * 2015-06-23 2022-03-29 Advanced Micro Devices, Inc. Access log and address translation log for a processor
CN107615244B (zh) 2015-06-26 2021-07-13 英特尔公司 在虚拟机上运行一个或多个容器的技术
US9898226B2 (en) * 2015-10-28 2018-02-20 International Business Machines Corporation Reducing page invalidation broadcasts in virtual storage management
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US10261916B2 (en) * 2016-03-25 2019-04-16 Advanced Micro Devices, Inc. Adaptive extension of leases for entries in a translation lookaside buffer
US10078588B2 (en) * 2016-03-25 2018-09-18 Advanced Micro Devices, Inc. Using leases for entries in a translation lookaside buffer
US10067870B2 (en) 2016-04-01 2018-09-04 Intel Corporation Apparatus and method for low-overhead synchronous page table updates
US10120814B2 (en) * 2016-04-01 2018-11-06 Intel Corporation Apparatus and method for lazy translation lookaside buffer (TLB) coherence
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10082969B2 (en) * 2017-01-26 2018-09-25 Reduxio Systems Ltd. System and method for managing a storage system
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
US10120813B2 (en) * 2017-03-08 2018-11-06 Arm Limited Address translation
US10540291B2 (en) * 2017-05-10 2020-01-21 Intel Corporation Tracking and managing translation lookaside buffers
US10725932B2 (en) 2017-11-29 2020-07-28 Qualcomm Incorporated Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown
CN110392084B (zh) * 2018-04-20 2022-02-15 伊姆西Ip控股有限责任公司 在分布式系统中管理地址的方法、设备和计算机程序产品
CN109828932B (zh) * 2019-02-18 2020-12-18 华夏芯(北京)通用处理器技术有限公司 一种地址微调加速系统
US11275697B2 (en) * 2019-05-31 2022-03-15 Apple Inc. Translation lookaside buffer invalidation for merged invalidation requests across power boundaries
CN113296685B (zh) * 2020-05-29 2023-12-26 阿里巴巴集团控股有限公司 数据处理方法及装置、计算机可读存储介质
US11995459B2 (en) * 2020-08-25 2024-05-28 VMware LLC Memory copy during virtual machine migration in a virtualized computing system
US11620235B1 (en) * 2021-10-04 2023-04-04 International Business Machines Corporation Validation of store coherence relative to page translation invalidation
US11853574B1 (en) * 2022-06-21 2023-12-26 Dell Products L.P. Container flush ownership assignment

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5642072B2 (ja) 1975-02-21 1981-10-02
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPS6324337A (ja) 1986-07-01 1988-02-01 Yokogawa Hewlett Packard Ltd キャッシュ・メモリ管理方式
JP2931636B2 (ja) 1990-06-08 1999-08-09 富士通株式会社 データ処理装置
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
JPH05225063A (ja) 1992-02-14 1993-09-03 Nec Corp バッファメモリのクリア方式
US5428757A (en) * 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
US5455922A (en) * 1992-07-28 1995-10-03 International Business Machines Corporation Dynamic validity facility for fast purging of translation bypass buffers
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
JPH06243043A (ja) 1993-02-19 1994-09-02 Kofu Nippon Denki Kk アドレス変換バッファのエントリクリア装置
ATE419586T1 (de) * 1995-02-13 2009-01-15 Intertrust Tech Corp Systeme und verfahren zur gesicherten transaktionsverwaltung und elektronischem rechtsschutz
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5787476A (en) * 1995-05-05 1998-07-28 Silicon Graphics, Inc. System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer
US5721858A (en) * 1995-12-12 1998-02-24 International Business Machines Corporation Virtual memory mapping method and system for memory management of pools of logical partitions for bat and TLB entries in a data processing system
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
JP2000067009A (ja) 1998-08-20 2000-03-03 Hitachi Ltd 主記憶共有型マルチプロセッサ
US6393525B1 (en) * 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6510508B1 (en) * 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
TWI230897B (en) * 2001-04-20 2005-04-11 Ibm Method for sharing a translation lookaside buffer between CPUs
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems

Also Published As

Publication number Publication date
US20050114607A1 (en) 2005-05-26
KR100918530B1 (ko) 2009-09-21
BRPI0404015A (pt) 2005-07-12
EP1536341B1 (en) 2010-02-10
MXPA04011270A (es) 2005-05-30
CN1622060A (zh) 2005-06-01
DE602004025442D1 (de) 2010-03-25
US7069389B2 (en) 2006-06-27
RU2361267C2 (ru) 2009-07-10
AU2004218704A1 (en) 2005-06-09
EP1536341A2 (en) 2005-06-01
CA2483938C (en) 2015-05-12
RU2004134452A (ru) 2006-05-10
ATE457495T1 (de) 2010-02-15
KR20050051540A (ko) 2005-06-01
CN100424657C (zh) 2008-10-08
AU2004218704B2 (en) 2010-02-18
CA2483938A1 (en) 2005-05-26
US20060161734A1 (en) 2006-07-20
BRPI0404015B1 (pt) 2017-01-31
EP1536341A3 (en) 2006-10-25
JP2005158040A (ja) 2005-06-16
US7287124B2 (en) 2007-10-23

Similar Documents

Publication Publication Date Title
JP3944504B2 (ja) 変換索引バッファのレイジー・フラッシング
US7287140B1 (en) System and technique for fine-grained computer memory protection
US7930513B2 (en) Writing to asymmetric memory
JP4772795B2 (ja) 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上
US8028341B2 (en) Providing extended memory protection
US8209510B1 (en) Secure pool memory management
US7543131B2 (en) Controlling an I/O MMU
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
KR20070052334A (ko) 계층적 변환 테이블을 이용하는 입력/출력 장치들을 위한어드레스 변환
JP5583274B2 (ja) コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス
GB2260006A (en) Memory management unit having cross-domain control
JP5115332B2 (ja) エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
US10909045B2 (en) System, method and apparatus for fine granularity access protection
KR20220156028A (ko) 메모리 액세서 무효화

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061110

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061110

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20061110

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20061127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070409

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110413

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120413

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120413

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140413

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees