(57)【要約】【課題】  ＴＬＢのレイジー・フラッシングをサポートするメカニズムを提供すること。【解決手段】  アドレス変換制御は、メモリ・アクセス・ポリシーの実装を行うために仮想／物理アドレス間のマッピングを制限する。マルチ・プロセッサ・システム中の各プロセッサは、仮想アドレス変換を高速化するマッピングをキャッシュする変換索引バッファ（ＴＬＢ）、カウンタを保持する。各ＴＬＢをフラッシュする毎に対応カウンタを増分する。ページへのリンクをアドレス変換マップから除く際に、すべてのカウンタ値を記録する。ページをアクセスする際、記録済みのカウンタ値をプロセッサの現在のカウンタ値と比較してそのページへのリンクをこのマップから除いてからそのＴＬＢがフラッシュされているか否かを決定する。ＴＬＢフラッシュ動作を、必要時まで遅らせるが、しかし無効なＴＬＢエントリが使用されてアクセス・ポリシーを破ることを防ぐのに十分早く行う。【選択図】  図６
2005158040.tif 000002
【特許請求の範囲】
【請求項１】
複数のマッピング・キャッシュであって、それぞれが、コンピューティング装置の複数の処理装置のうちの対応する１つに関連付けられ、仮想アドレスを物理アドレスに変換するために使用され、アドレス変換マップに基づいてマッピングを記憶する前記複数のマッピング・キャッシュのうちの第１のマッピング・キャッシュから古くなったエントリをクリアする方法であって、
カウンタを保持すること、
前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュをフラッシュするたびに前記カウンタを更新すること、
前記アドレス変換マップ中の変更に応答して前記カウンタ値を記録すること、
前記カウンタ値の前記記録済みのカウンタ値との比較に基づいて、前記アドレス変換マップ中の前記変更が行われて以来、前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュが必ずしも確実にフラッシュされていないことを決定すること、および
前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュをフラッシュすること
を備えることを特徴とする方法。
【請求項２】
前記カウンタは、複数のカウンタのうちの１つであり、各カウンタは、前記複数のマッピング・キャッシュのうちの対応する１つに関連付けられていることを特徴とする請求項１に記載の方法。
【請求項３】
前記複数のカウンタのそれぞれは、カウンタの対応するマッピング・キャッシュがフラッシュされるときに更新されることを特徴とする請求項２に記載の方法。
【請求項４】
前記アドレス変換マップは、第１のページを含むメモリのページに対するリンクを備え、前記変更は、前記アドレス変換マップが前記第１のページに対するどのようなリンクも含まない状態に、前記アドレス変換マップを置くことを備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記アドレス変換マップは、エンティティによって読取り可能なメモリの一部分を定義し、前記メモリの前記一部分は、第１の部分を含み、前記変更は、前記第１の部分が前記エンティティによって読取り可能でない状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記アドレス変換マップは、エンティティによって書込み可能なメモリの一部分を定義し、前記メモリの前記一部分は、第１の部分を含み、前記変更は、前記第１の部分が前記エンティティによって書込み可能でない状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項１に記載の方法。
【請求項７】
ポリシーがメモリに対する許容可能なアクセスを定義し、前記方法は、
エンティティが前記ポリシーに違反して前記メモリにアクセスできるようにする仮想アドレス・マッピングを、前記アドレス変換マップが前記エンティティに対してさらされないように前記アドレス変換マップの内容を制御することをさらに備え、
前記変更は、
前記ポリシーに一致する前記マップを置くかあるいは保持する、前記アドレス変換マップに対する修正、あるいは
前記マップに対する前記エンティティの書込みアクセスを制限する、前記アドレス変換マップに対する修正
を備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記アドレス変換マップは、前記メモリの一部分に対するリンクを備え、前記アドレス変換マップのコンテンツを制御することは、前記メモリの前記一部分を前記エンティティからアクセス不可能にすることを備え、前記変更は、前記メモリの前記一部分に対するすべてのリンクを前記アドレス変換マップから取り除くことを備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記変更に先立って前記アドレス変換マップの状態を使用する可能性がある事象が生じていることを決定することをさらに備え、
前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュのフラッシングは、前記事象が生じていることの前記決定に応答して実施される
ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記事象は、前記変更によって前記アドレス変換マップから切り離されたメモリの一部分に含まれる物理アドレスへの仮想アドレスの変換を備えることを特徴とする請求項９に記載の方法。
【請求項１１】
マッピング・キャッシュおよびそれに関連するカウンタを有する複数のプロセッサと、
前記各マッピング・キャッシュがそれに基づいてマッピングを格納するアドレス変換マップを格納するメモリであって、該メモリに対するアクセスを管理するポリシーが存在し、該ポリシーに違反して前記メモリへのアクセスを可能にするマッピングについての露出を防止するように、その内容が制御される、前記アドレス変換マップ、を記憶するメモリと、
前記マッピング・キャッシュのうちの第１のマッピング・キャッシュをフラッシュし、前記マッピング・キャッシュのうちの前記第１のマッピング・キャッシュがフラッシュされると前記カウンタのうちの第１のカウンタを増分する、第１のロジックと、
前記アドレス変換マップ中または前記アドレス変換マップに関するプロパティ中の変更に応答して前記第１のカウンタの現在の値を記録する第２のロジックであって、前記記録済みのカウンタ値が前記変更に関連して記憶される第２のロジックと、
前記記録済みのカウンタ値を前記第１のカウンタの現在の値と比較し、前記比較により、前記変更以来、前記マッピング・キャッシュのうちの前記第１のマッピング・キャッシュがフラッシュされていないことが示される場合には、前記マッピング・キャッシュのうちの前記第１のマッピング・キャッシュをフラッシュするようにする第３のロジックと
を備えることを特徴とするアドレス・マッピング・キャッシュの使用を管理するシステム。
【請求項１２】
前記各プロセッサは、前記カウンタのうちの前記第１のカウンタに関連付けられ、前記第１のロジックは、前記マッピング・キャッシュのうちのどれかがフラッシュされるときに前記カウンタのうちの前記第１のカウンタを増分することを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記各マッピング・キャッシュは、複数のカウンタのうちの異なるカウンタに関連付けられ、前記第１のロジックは、所与のマッピング・キャッシュがフラッシュされるときに前記所与のマッピング・キャッシュに対応する前記カウンタを増分することを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記変更は、前記メモリの第１のページに対するすべてのリンクが前記アドレス変換マップから取り除かれる状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項１１に記載のシステム。
【請求項１５】
前記変更は、前記メモリの第１のページに対する書込み可能リンクがない状態に前記アドレス変換マップを置くことを備えることを特徴とする請求項１１に記載のシステム。
【請求項１６】
前記第３のロジックは、前記変更の結果を使用すべきことを検出するのに応答して呼び出されることを特徴とする請求項１１に記載のシステム。
【請求項１７】
前記変更は、前記メモリの第１のページに対するすべてのリンクが前記アドレス変換マップから取り除かれる状態に前記アドレス変換マップを置くことを備え、前記検出は、仮想アドレスが前記第１のページ上のロケーションに変換されていることに基づくものであることを特徴とする請求項１６に記載のシステム。
【請求項１８】
アドレス・マッピングをキャッシュする変換索引バッファのフラッシングを管理する方法を実施するコンピュータ実行可能命令をその上に符号化して有するコンピュータ読取り可能媒体であって、前記方法は、
ターゲット・ロケーションを仮想アドレスによって示すアクセス要求を受け取ること、
前記仮想アドレスを変換して前記ターゲット・ロケーションの物理アドレスを取得すること、
（１）前記ターゲット・アドレスを備えるページに関連付けられた記憶済みのカウンタ値を（２）現在のカウンタ値と比較すること、
前記記憶済みのカウンタ値と前記現在のカウンタ値との比較に基づいて、前記ページのマッピングに影響を及ぼす事象が修正されて以来、前記変換索引バッファがフラッシュされていないことを決定すること、および
前記変換索引バッファをフラッシュすること
を備えることを特徴とするコンピュータ読取り可能媒体。
【請求項１９】
前記アドレス・マッピングは、メモリ中に記憶されたアドレス変換マップによって定義され、前記変換索引バッファは、前記アドレス変換マップに基づくマッピングをキャッシュすることを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２０】
ポリシーがソフトウェア・エンティティからのメモリのアクセス可能性を定義し、前記事象は、前記アドレス・マッピングが基づくアドレス変換マップから前記メモリのページに対するリンクを取り除くことを備え、前記ページは、前記ポリシーの下で前記ソフトウェア・エンティティからアクセス不可能であることを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２１】
ポリシーがソフトウェア・エンティティからのメモリのアクセス可能性を定義し、前記事象は、アドレス変換マップを調整してページに対するマッピングを書込み不可能にすることを含み、（１）前記ポリシーは、前記ページを前記ソフトウェア・エンティティによって書込み不可能なものと定義し、または（２）前記ページは、前記アドレス変換マップの一部分を記憶することを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２２】
アドレス変換制御メカニズムは、アドレス変換マップの一部分を記憶するために使用することができる、メモリのページの集合のメンバシップを決定し、前記事象は、前記集合のメンバシップの変更を備えることを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２３】
それぞれがコンピューティング装置の複数の処理装置のうちの対応する１つに関連付けられた複数のマッピング・キャッシュであって、それぞれが仮想アドレスを物理アドレスに変換するために使用され、アドレス変換マップに基づいてマッピングを記憶する、前記複数のマッピング・キャッシュのうちの第１のマッピング・キャッシュから古くなったエントリをクリアする方法であって、
それに基づいて順次的な事象の進行を決定することができるオブジェクトを保持すること、
ページから１つまたは複数の（１）読取りアクセス、または（２）読取り／書込みアクセスを取り除く、前記アドレス変換マップに対する、変更に応答して前記オブジェクトの値を記録すること、
前記ページにアクセスする要求に応答して、前記記録済みの値と前記オブジェクトの現在の値の比較に基づいて、前記変更が行われて以来、前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュがフラッシュされていることを決定すること、および
前記変更が行われて以来、前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュがフラッシュされていることを前記比較に基づいて確かに決定できない場合には、前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュをフラッシュすること
を備えることを特徴とする方法。
【請求項２４】
前記オブジェクトは、クロックを備えることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記オブジェクトは、前記複数のマッピング・キャッシュのうちの前記第１のマッピング・キャッシュがフラッシュされるたびに増分されるカウンタを備えることを特徴とする請求項２３に記載の方法。
【請求項２６】
前記オブジェクトは、前記複数のマッピング・キャッシュのうちの１つに対応する複数のカウンタを含み、前記各カウンタは、前記カウンタの対応するマッピング・キャッシュがフラッシュされるときに増分されることを特徴とする請求項２３に記載の方法。
【請求項２７】
前記変更は、前記ページに対する読取りアクセスを取り除くことを備え、前記アクセス要求は前記ページを読み取る要求を備えることを特徴とする請求項２３に記載の方法。
【請求項２８】
前記変更は、前記ページに対する読取り／書込みアクセスを取り除くことを備え、前記アクセス要求は前記ページに書き込む要求を備えることを特徴とする請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリ管理の分野に関し、より詳細にはアドレス変換キャッシュのフラッシングに関する。
【背景技術】
【０００２】
ほとんどのコンピュータ・システムは、仮想アドレス・メカニズムを提供しており、そこでは仮想アドレスは物理アドレスにマッピングされる。メモリ・ロケーションにアクセスする要求が仮想アドレスを使用して行われるとき、この仮想アドレスは、アクセスをシークするターゲット・メモリ・ロケーションの対応する物理アドレスに変換される。１組のアドレス変換テーブルは、仮想アドレスと物理アドレスの間のマッピングを定義する。この変換テーブルは通常、メモリ中に格納され、したがってアドレスの変換には、このテーブルを読み取るためのメモリ・アクセスが必要になる。このテーブルを読み取るために必要なこのメモリ・アクセス動作は、ターゲット・ロケーションで実施すべきアクセス動作に対して追加される。したがって、仮想アドレッシングが使用されると、システムによって実施されるメモリ・アクセスの回数は、すべてのアクセス要求が物理アドレスによって実施される場合に行われるはずの回数に比べて倍増することになる。一部の仮想アドレスは、これらが複数の段階で修飾参照（dereference：参照解除）されるべきマッピングを必要とするという意味で多重レベルであり、これはアドレス変換を実施するために２回以上のメモリ・アクセスを必要とすることもある（それによって１回の基礎となるアクセス要求を実行するために３回以上のメモリ・アクセス回数が必要になる）ことを意味する。
【０００３】
アドレスを変換するために行う必要があるメモリ・アクセス回数を低減するために、多数の仮想アドレス・システムは、ＴＬＢ（translation lookaside buffer；変換索引バッファ）と呼ばれる１種のキャッシュを使用している。最近使用されたメモリ・ページは、近い将来もう一度アクセスされる可能性が高いので、このアドレス変換テーブルを使用して仮想ページ記述子を物理ページ・ロケーションに変換すると、仮想ページと物理ページの対応は、このＴＬＢにキャッシュされる。アドレス変換を実施する必要があるたびに、このＴＬＢを検査して、ＴＬＢが、この要求されたメモリ・ユニットを配置するページについてのキャッシュされたマッピングを含むかどうかを決定する。該当するマッピングがＴＬＢにキャッシュされている場合、このキャッシュ・コピーが使用され、それ以外の場合には、そのアドレスは変換テーブルから変換される。ＴＬＢのアクセスは、メモリ中の変換テーブルにアクセスするよりも速いので、ＴＬＢの使用は、連続するメモリ・アクセスが同じグループのページ上に配置されているとき（通常のケース）に、その動作のスピードを向上させる。
【０００４】
【特許文献１】米国特許第５，８９２，９００号明細書
【特許文献２】米国特許第５，９１７，９１２号明細書
【特許文献３】米国特許第５，９１５，０１９号明細書
【特許文献４】米国特許第５，４２８，７５７号明細書
【特許文献５】米国特許第５，４５５，９２２号明細書
【特許文献６】米国特許第５，７２１，８５８号明細書
【特許文献７】米国特許第５，４３７，０１７号明細書
【特許文献８】米国特許第５，３１７，７０５号明細書
【特許文献９】米国特許第４，７７９，１８８号明細書
【特許文献１０】米国特許出願公開第２００３／０，２００，４１２号明細書
【特許文献１１】米国特許出願公開第２００３／０，２００，４０２号明細書
【特許文献１２】米国特許出願公開第２００３／０，２００，４０５号明細書
【特許文献１３】米国特許出願公開第２００４／０，００３，２６２号明細書
【特許文献１４】米国特許出願公開第２００２／０，１５６，９８９号明細書
【非特許文献１】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
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＴＬＢは、仮想メモリを使用してメモリ保護を実現する場合に、いくつかの別の問題を引き起こす。メモリ保護は、どのソフトウェア・コンポーネントがどの物理メモリ・ページに対してどの種類のアクセス（例えば、読取り、書込み）を実施することができるかを管理するセキュリティ・ポリシーを実行するように努める。すなわち、この保護は、仮想アドレス−物理アドレス変換に対する編集を制御することによって仮想メモリによって実行することができる（この制御は、このマッピングを生成するオペレーティング・システムによって、あるいはかかるマッピングに対する変更をフィルタリングするＡＴＣ（address translation control；アドレス変換制御）システムによって実行することができる。）。しかし、アドレス変換が変更される際に、古くなったマッピングが依然としてＴＬＢ中に存在することもある。したがって、アドレス変換テーブルを編集して、あるソフトウェア・コンポーネントについてのページに対するあるアクセス権を取り消すとき、このコンポーネントは、これらの古くなったマッピングがＴＬＢからフラッシュ（flush：掃き出して空にする）されてしまうまで、このページに対するアクセス権を保持することもある。これを行う通常の方法は、かかる動作の一部として該当するすべてのＴＬＢをフラッシュするようにすることである。
【０００６】
しかし、ＴＬＢのフラッシング（flushing）は、特に共用メモリ・マルチ・プロセッサ上では、時間がかかる。この新しいセキュリティ・ポリシーに違反する古いマッピングを含み得るあらゆるプロセッサでは、そのＴＬＢをフラッシュするために信号を送る必要がある。この信号を送るには、一般に比較的低速なＩＰＩ（interprocessor interrupt；プロセッサ間割込み）が必要である。さらに、このフラッシュ自体が比較的に時間を要する。
【０００７】
以上を考慮すると、従来技術の欠点を克服するメカニズムが必要になっている。
【課題を解決するための手段】
【０００８】
本発明は、ＴＬＢのレイジー・フラッシング（lazy flushing）をサポートするメカニズムを提供する。各ＴＬＢごとに、カウンタを保持し、ＴＬＢがフラッシュされるたびに、このカウンタを増分する。各プロセッサがそれ自体のＴＬＢを保持するマルチ・プロセッサ・システムでは、各プロセッサごとに別々のカウンタが存在することもあり、この場合には、特定のプロセッサ用のカウンタは、そのプロセッサがそのＴＬＢをフラッシュするときに増分される。トリガ事象（triggering event）が起こるとき、該当するすべてのカウンタ値は、トリガ事象が完了した後に、記録される。「トリガ事象」とは、アドレス変換マップ、またはこのマップが制約を受けるメモリ・アクセス・ポリシーに、古いＴＬＢエントリがポリシーの違反をもたらし得るような態様で、影響を及ぼす事象のことであり、「該当するカウンタ」とは、かかる古いエントリを含む可能性のあるＴＬＢのカウンタである。例えば、メモリの所与のページが、あるポリシーの下でオフリミット（off-limits：立ち入り禁止）を宣言されて、そのページに対するマッピングがすべてこのアドレス変換マップから除去されることもあり、このマップからページを切離すことが、トリガ事象の一例であり、このページへのマッピングを含む可能性のある全てのＴＬＢについてのカウンタも、該当するカウンタである。トリガ事象が実施され、そのトリガ事象の効果または結果がこのアドレス変換プロセスで実際に使用される前に、かなりの時間が経過する場合もそうであるとすることができる（例えば、メモリの所与のページへのマッピングは、所与の時点で変更がなされるが、数百万の動作が、この切り離されたページを再使用するためのどのような試みを行う前に、実行される可能性がある。）。トリガ事象の結果を使用すべきときに、この記憶されたカウンタ値を現在のカウンタ値と比較して、そのトリガ事象以来、（もしある場合）関連するどのＴＬＢがフラッシュされていない可能性があるかを決定する。該当するどのようなＴＬＢが、それらの記録済みの値と一致するカウンタ値を有する場合、かかるＴＬＢはすべて、従来技術の方法でフラッシュされる。
【０００９】
カウンタ値が変化している場合にはＴＬＢは安全であり、すなわち、適用可能なアクセス・ポリシーの違反をもたらし得る古いＴＬＢエントリを明らかに含まず、カウンタ値が変化していない場合にはＴＬＢは、安全でないことに留意されたい。したがって、どのようなサイズのカウンタをも使用して、フラッシュに基づいて任意の方法でカウンタを変更することも（あるいは、全く変更しないことさえも）、可能である。別の可能性は、実時間カウンタを使用してその最後のフラッシュの時刻をタイム・スタンプすることであり、すなわち、クロックがある時間スキューの範囲内で同期化される場合に、フラッシュのイニシエータ（開始プログラム）は、変換が修正された時刻を単に記録し、タイム・スタンプがその変換修正時刻を少なくともその時間スキュー分だけ超過しているどのフラッシュについても完了を想定することができる。
【００１０】
ハイ・アシュアランス（high-assurance）および非ハイ・アシュアランスな環境（それぞれ、「右サイド」および「左サイド」）が隣り合って存在し、あらゆるＴＬＢフラッシュがこの右サイドへのトリップ（trip）を必要とするシステムにおいては、本発明のメカニズムを使用して右サイドへの不必要なトリップを回避することができる。例えば、右サイドと左サイドの間の各変更がＴＬＢフラッシュをもたらすこともあり、プロセッサが右サイドから左サイドへと移動するたびごとに各プロセッサごとのカウンタを増分することができる。換言すれば、右サイドがこのＴＬＢのフラッシングを確実に実施（または検証）するので、このカウンタは、このメモリ・アクセス制御スキームに損傷をもたらし得るエントリをＴＬＢが含んでいた可能性のある最後の時刻を反映している。あるページが左サイドからアクセス不能に（または左サイドによって書込み不能に）されるたびに、このページにはこのカウンタの値を用いて、本質的に「タイム・スタンプ」が行われる。このページが、プロセッサによってアクセスされるとき、プロセッサが、（１）現在、右サイドにあるか、それとも（２）ページのステイタス（状態）が変化してから確実にそのＴＬＢをフラッシュしてきたかが決定される。後者の決定は、プロセッサのカウンタ値をそのページについて保存された値よりも大きくすることによって達成することができる。
【００１１】
本発明の他の特徴について以下に説明する。
【００１２】
以上の概要、ならびに好ましい実施形態の以下の詳細な説明は、添付図面と併せ読むときによりよく理解されよう。本発明を例証する目的で、図面には本発明の例示の構成を示している。しかし、本発明は、これらの開示された特定の方法および手段に限定されるものではない。
【発明を実施するための最良の形態】
【００１３】
概要
アドレス変換制御（ＡＴＣ）は、仮想アドレスを物理アドレスに変換するために使用するマッピングを動的に制御することによってメモリ・アクセス・ポリシーを実装するために使用することができる。変換索引バッファ（ＴＬＢ）を使用してマッピングをキャッシュするとき、このアクセス・ポリシーの現在の状態と矛盾する古くなったマッピングが、ＴＬＢ中に残存することがあり、それによってメモリを、ポリシーに逆らって稼働させる使用に対して露出する（さらす）可能性がある。このＴＬＢをフラッシュすることができるが、ＴＬＢをフラッシュすることは時間を要する操作であり、これを必要以上に多い頻度で実施することは好ましくない。本発明は、フラッシュが必要になるまでＴＬＢのフラッシュを遅延させることができるレイジーＴＬＢフラッシュのためのメカニズムを提供する。このメカニズムは、各プロセッサがそれ自体のＴＬＢを保持し、他のプロセッサのＴＬＢとは別にフラッシュすることができるマルチ・プロセッサ・システム中で使用することが好ましい。
【００１４】
コンピューティング構成の例
図１は、本発明の態様を実装することができるコンピューティング環境の一例を示している。このコンピューティング・システム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどのような限定をも示唆することを意図していない。また、コンピューティング環境１００は、例示の動作環境１００に示されるコンポーネントのどの１つまたは組合せに関してどのような依存性または必要性を有するものと解釈すべきでもない。
【００１５】
本発明は、他の多数の汎用または専用のコンピューティング・システム環境または構成を用いて動作可能である。本発明に使用するのに適することができるよく知られたコンピューティングのシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な大衆消費電子製品、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータ、埋込みシステム、以上のシステムおよび装置のどれかを含む分散コンピューティング環境などが含まれる。
【００１６】
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。本発明はまた、分散コンピューティング環境でも実施されことが可能であり、この場合、タスクは、通信ネットワークまたは他のデータ伝送媒体を介してリンクされるリモート処理装置によって実施される。分散コンピューティング環境では、プログラム・モジュールおよび他のデータは、メモリ記憶装置を含むローカルコンピュータ記憶媒体にもリモート・コンピュータ記憶媒体にも配置することができる。
【００１７】
図１を参照すると、本発明を実装するシステムの一例は、コンピュータ１１０の形態の汎用コンピューティング装置を含んでいる。コンピュータ１１０のコンポーネントは、それだけには限定されないが、処理装置１２０、システム・メモリ１３０、およびこのシステム・メモリを含めて様々なシステム・コンポーネントを処理装置１２０に結合するシステム・バス１２１を含むことができる。処理装置１２０は、マルチ・スレッド・プロセッサ上でサポートされる処理装置など複数の論理処理装置を表すこともある。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、様々なバス・アーキテクチャのうちのどれかを使用したローカル・バスを含めていくつかのタイプのバス構造のうちのどれかとすることができる。一例として、限定するものではないが、かかるアーキテクチャには、ＩＳＡ（Industry Standard Architecture；業界標準アーキテクチャ）バス、ＭＣＡ（Micro Channel Architecture；マイクロ・チャネル・アーキテクチャ）バス、ＥＩＳＡ（Enhanced ISA；拡張ＩＳＡ）バス、ＶＥＳＡ（Video Electronics Standard Association；ビデオ・エレクトロニクス規格協会）ローカル・バス、および（メザニン・バス（Mezzanine bus）としても知られている）ＰＣＩ（Peripheral Component Interconnect；周辺コンポーネント相互接続）バスなどが含まれる。システム・バス１２１はまた、通信装置間のポイント・ツー・ポイント接続、スイッチング機構（switching fabric）などとしても実装することができる。
【００１８】
コンピュータ１１０は、一般に様々なコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ１１０がアクセスすることができ、揮発性媒体も不揮発性媒体も、着脱可能媒体も着脱不能媒体も含んでいる任意の使用可能な媒体とすることができる。一例として、限定するものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性の、着脱可能および着脱不能な媒体を両方とも含んでいる。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ（digital versatile disk；デジタル多用途ディスク）または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができコンピュータ１１０がアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に搬送波や他の搬送メカニズムなど変調されたデータ信号の形で、コンピュータ読取り可能命令、データ構造、プログラム・モジュールまたは他のデータを具現化し、この通信媒体は、任意の情報配信媒体を含んでいる。用語「変調されたデータ信号」は、情報を信号中で符号化するような態様で１つまたは複数のその特性が設定された、あるいは変更された信号を意味する。一例として、限定するものではないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、および音響、ＲＦ、赤外線、他の無線媒体などの無線媒体を含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるものとする。
【００１９】
システム・メモリ１３０は、ＲＯＭ（read only memory；読取り専用メモリ）１３１やＲＡＭ（random access memory；ランダム・アクセス・メモリ）１３２など揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含んでいる。起動時などにコンピュータ１１０内の要素間で情報を転送する助けをする基本ルーチンを含むＢＩＯＳ（basic input/output system；基本入出力システム）１３３は、一般にＲＯＭ１３１に記憶される。ＲＡＭ１３２は、一般に処理装置１２０から、ダイレクトにアクセス可能であり、および／または現在処理装置１２０によって動作させられているデータおよび／またはプログラム・モジュールを含んでいる。一例として、限定するものではないが、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６およびプログラム・データ１３７を示している。
【００２０】
コンピュータ１１０はまた、他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。一例にすぎないが、図１は、着脱不能な不揮発性の磁気媒体から情報を読み取りまたはそれに情報を書き込むハードディスク・ドライブ１４０、着脱可能な不揮発性の磁気ディスク１５２から情報を読み取りまたはそれに情報を書き込む磁気ディスク・ドライブ１５１、およびＣＤＲＯＭや他の光媒体など着脱可能な不揮発性光ディスク１５６から情報を読み取りまたはそれに情報を書き込む光ディスク・ドライブ１５５を示している。例示の動作環境中で使用することができる他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭなどが含まれる。このハードディスク・ドライブ１４１は、一般にインターフェース１４０などの着脱不能なメモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は、一般にインターフェース１５０などの着脱可能なメモリ・インターフェースによってシステム・バス１２１に接続される。
【００２１】
以上で説明し図１に示したドライブおよびこれらに関連するコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ読取り可能命令、データ構造、プログラム・モジュールおよび他のデータの記憶域を提供する。図１において、例えばハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じにもまたは異なるものにもすることができることに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７にはここで異なる番号が付与されて、少なくともこれらが異なるコピーであることが示されている。ユーザは、キーボード１６２や、マウス、トラック・ボール、またはタッチ・パッドとして一般に呼ばれるポインティング装置１６１などの入力装置を介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）は、マイクロホン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどを含むことができる。これらおよび他の入力装置はしばしば、システム・バスに結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレル・ポート、ゲーム・ポート、ＵＳＢ（universal serial bus；ユニバーサル・シリアル・バス）など他のインターフェースおよびバス構造によって接続することもできる。モニタ１９１または他タイプのディスプレイ装置も、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７やプリンタ１９６など他の周辺出力装置を含むこともできる。
【００２２】
コンピュータ１１０は、リモート・コンピュータ１８０など１つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク化環境中で動作することができる。このリモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワーク・ノードとすることができ、一般にコンピュータ１１０に関して以上で説明した要素の多くまたはすべてを含んでいるが図１にはメモリ記憶装置１８１だけを示している。図１に示す論理接続は、ＬＡＮ（local area network：ローカル・エリア・ネットワーク）１７１およびＷＡＮ（wide area network：ワイド・エリア・ネットワーク）１７３を含んでいるが、他のネットワークを含むこともできる。かかるネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットでは一般的になっている。
【００２３】
ＬＡＮネットワーク環境中で使用するとき、コンピュータ１１０は、ネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用するとき、コンピュータ１１０は一般に、インターネットなどＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を含んでいる。モデム１７２は、内蔵でも外付けでもよいが、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステム・バス１２１に接続することができる。ネットワーク化環境において、コンピュータ１１０に関連して示されるプログラム・モジュールまたはその一部は、リモート・メモリ記憶装置に記憶することができる。一例として、限定するものではないが、図１は、リモート・アプリケーション・プログラム１８５をメモリ装置１８１上に存在するものとして示している。図に示すネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
【００２４】
仮想アドレス・スキームの例
図２は、仮想アドレス・システムの一例を示している。図２に示す例は、ページ・タイプの仮想アドレス・スキームであるが、仮想アドレッシングは、セグメンテーションなど他のモデルに基づくことも可能なことが理解されよう。図２に示すスキームは、ＩＮＴＥＬｘ８６プロセッサ上で使用可能な仮想アドレッシング・スキームのうちの１つなどのような、２−レベルのアドレス・スキームである。このスキームは、以下に説明するように仮想ページ識別子を物理ページに変換するためには２レベルの間接化（indirection）を使用する必要があるという意味において「２−レベル」である。
【００２５】
このページング・スキームにおいて、ページ・ディレクトリ２０２は、１組のエントリを含んでいる。図３に関して以下でエントリの構造の一例をより詳細に説明するが、本質的には、各エントリは、ページ・テーブル２０４（１）、２０４（２）、２０４（３）など特定のページ・テーブルの物理ロケーション（すなわち、ページ・フレーム番号すなわち「ＰＦＮ」）を識別する。各ページ・テーブルは、やはり１組のエントリを含んでおり、ここで各エントリは、物理ロケーション（この場合にも、ページ・フレーム番号）、すなわちページ２０６（１）、２０６（２）、２０６（３）、２０６（４）などの特定のデータ・ページを識別する。データ・ページは、既定の長さの隣接するＲＡＭ１３２の一部分である。データ・ページは、任意のタイプのデータを記憶することができ、通常のデータを記憶するのに加えてデータ・ページを使用してページ・ディレクトリ２０２およびページ２０４（１）ないし２０４（３）の内容（contents）を記憶することもあることに留意されたい。したがって、所与のページは、ディレクトリ、テーブル、データ・ページとすることができ、またこれら３つの構造の任意の組合せとしての複合的な役割を果たすことができる。
【００２６】
図２に示す仮想アドレス・スキームは、特定のページを見つけるためにページ・ディレクトリ（レベル１）もページ・テーブル（レベル２）も経由する必要があるので２−レベルの仮想アドレス・スキームである。任意のレベル数を有する仮想アドレス・システムを設計することが可能であり、本発明の原理をかかるすべての仮想アドレス・スキームに適用することができることが当業者には理解されよう。当技術分野において知られているように、ＩＮＴＥＬｘ８６プロセッサは、１つ、２つ、または３つのレベルを有する仮想アドレスをサポートしており、一般に「ハイブリッド」スキームが使用されており、このスキームでは、「スモール（small）」ページ（すなわち、４キロバイト長のページ）では２−レベルの仮想アドレスが使用されるが、「ラージ（large）」ページ（すなわち、４メガ・バイト長のページ）では、１−レベルの仮想アドレスが使用される。
【００２７】
図２のページング・スキームでは、ページ上の任意のバイトをページ・ディレクトリ・オフセット（page directory offset）２１１、ページ・テーブル・オフセット（page table offset）２１２、およびページ・オフセット（page offset）２１３を含む仮想アドレス２１０によって識別することができる。したがって、物理アドレスの位置を見つけるためには、アドレスの変換を実施するメモリ管理ユニット（ＭＭＵ）２２０は、ページ・ディレクトリ・オフセット２１１を使用してページ・ディレクトリ２０２中の特定のエントリを見つける。例えば、オフセット２１１は、ゼロに等しいこともあり、これはページ・ディレクトリ２０２中のゼロ番目のエントリを調べるべきことを示している。このエントリは、ページ・テーブルを記憶するＰＦＮを含んでおり、したがってＭＭＵ２２０は、このＰＦＮを使用してページ・テーブルの１つ（例えば、ページ・テーブル２０４（１））を見つける。次いで、ＭＭＵ２２０は、ページ・テーブル・オフセット２１２をこの識別されたページ・テーブルへのインデックスとして使用し、このオフセットの位置に見出されるエントリを検索する。このエントリは、データ・ページ（例えば、ページ２０６（１））のＰＦＮを含んでおり、したがって、ＭＭＵ２２０は、ページ・オフセット２１３を識別されたページの基底アドレスに加えて物理メモリの特定のバイトの位置を見つける。ＭＭＵ２２０は、この単なるアドレス変換に加えて他の様々なファンクションを実施するようにもなっている。例えば、ＭＭＵ２２０は、このテーブル中のページ・エントリが、「ｎｏｔ  ｐｒｅｓｅｎｔ（存在しない）」とマークされている場合、ディスクからページをロードすることができる。ＭＭＵ２２０は、ページが「読取り専用」などとマークされている場合には、書込みアクセスを認めないことになる。
【００２８】
図２の仮想アドレス・スキームでは、ページ・ディレクトリそれ自体のロケーション（すなわち、ＰＦＮ）は、記憶ロケーション２０１に記憶される。ＭＭＵ２２０は、仮想アドレス２１０を変換し始めると、この記憶ロケーションの内容（contents）を使用してページ・ディレクトリ２０２を位置決めする。したがって、複数のページ・マップが存在することができ、記憶ロケーション２０１の内容を設定して所与のマップのページ・ディレクトリのＰＦＮを含むようにすることによって現在使用するために特定のマップを選択することができる。ＩＮＴＥＬｘ８６プロセッサの例では、記憶ロケーション２０１は、ＣＲ３と名付けられたレジスタに対応する。
【００２９】
ハイ・アシュアランス環境およびアドレス変換制御を介したＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ
前述の仮想アドレス・システムの一特徴は、所与のアドレス変換マップの下ではどのような仮想アドレスによってもマッピングされない物理アドレスが存在し得ることであることが理解されよう。したがって、ほとんどすべてのアクセス要求が仮想アドレスによって行われるＩＮＴＥＬｘ８６プロセッサなどのシステムでは、ソースのアドレス変換マップがオフリミット（off-limit）のメモリを指す（point）ことがないようにすることによって、所与のソースにとって物理メモリの一部分をオフリミットにすることが可能である。アドレス変換マップに対して制御を及ぼしてこのようなオフリミットのメモリを実現することをＡＴＣ（Address Translation Control；アドレス変換制御）と呼ぶ。このメモリのオフリミット部分は、時に「Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ」と呼ばれ、ＡＴＣは、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙを実現する一方法である。
【００３０】
Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙの一使用法は、ハイ・アシュアランス環境と非ハイ・アシュアランス環境が同じマシン上に共存するときの使用法である。ハイ・アシュアランス環境には、非ハイ・アシュアランス環境からはアクセスすることができないＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙを設けることができる。ハイ・アシュアランス環境の概念、およびＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙに対するその関係、については、図３を参照して以下に説明している。
【００３１】
図３は、同じマシン上に共存する２つの環境、すなわちハイ・アシュアランス環境３６０と非ハイ・アシュアランス環境３５０を示している。便宜上、これらの環境をそれぞれＲＨＳ（right-hand-side；右サイド）およびＬＨＳ（left-hand-side；左サイド）と呼ぶことにするが、ＲＨＳ３６０がハイ・アシュアランスであり、ＬＨＳ３５０が非ハイ・アシュアランスである。環境が「ハイ・アシュアランス」であることが何を意味するかは、この環境中で実施されるファンクションが正しく実施されることになる高レベルの確実さ（assurance）があるということである。このようにして、ＬＨＳ３５０は、様々なファンクション３０６（１）、３０６（２）、…３０６（ｎ）を実施し、ＲＨＳ３６０は、様々なファンクション３０８（１）、３０８（２）、…３０８（ｍ）を実施する。ＬＨＳ３５０は、ファンクション３０６（１）ないし３０６（ｎ）がどのように振る舞うと想定されているかを記述する仕様３０２に関連付けられている。同様にＲＨＳ３６０は、ファンクション３０８（１）ないし３０８（ｍ）がどのように振る舞うと想定されているかを記述する仕様３０４に関連付けられている。仕様３０２および３０４は、書かれても書かれなくてもよい。例えば、ＬＨＳ３５０は、その様々なサービス、ドライバ、システム・コールなどがどのように振る舞うと想定されているかを説明する詳細に書かれたマニュアルと共にやってくる商用オペレーティング・システムでもよい。あるいは、所与の環境がどのように振る舞うと想定されているかについての一般的な理解が単に存在し得るだけでもよく、この理解が仕様を構成することができる。
【００３２】
仕様がどのような形式を取るかにかかわらず、ほとんどすべてのソフトウェアが、バグ、バックドア（知られているものも、見出されていないものも）、論理エラーなどを含み、これらが、ソフトウェアをある予期しないような方法で振る舞わせる可能性があることが理解されよう。しかし、所与のソフトウェアの一部が、期待通りに振る舞うことになる確実さのレベル、すなわちソフトウェアの振る舞いがその仕様に記述された振る舞いと実際に一致することになる確実さのレベル、を評価することが可能である。図３の例では、ＲＨＳ３６０は、ＲＨＳ３６０が実施するように設計されているファンクション３０８（１）ないし３０８（ｍ）が仕様３０４に準拠して実際に実施されることになる確実さのレベルが比較的高いという意味で「ハイ・アシュアランス」である。同様に、ＬＨＳ３５０は、ＬＨＳ３５０が仕様３０２に準拠してファンクションを３０６（１）ないし３０６（ｎ）を実施することになる確実さのレベルが比較的低いという意味で「非ハイ・アシュアランス」である。このコンテキストにおける「比較的高い」および「比較的低い」ということは、ＲＨＳ３６０が仕様３０４に従って振る舞うことになる確実さのレベルがＬＨＳ３５０が仕様３０２に従って振る舞うことになる確実さのレベルよりも高いことを意味する。
【００３３】
一般には、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）オペレーティング・システムのうちの１つなど、フル機能を搭載した商用オペレーティング・システムは、非ハイ・アシュアランス環境であると言うことは、概ね事実である。かかる環境は、オープン・アーキテクチャをサポートし、このオープン・アーキテクチャにおいては、デバイス・ドライバ、プラグイン、および他のタイプの拡張を自由に追加することができ、このオープン・アーキテクチャは、すべての考えられる限りの環境下でかかるオペレーティング・システムの振る舞いを検証することを困難にする。したがって、何らかのタイプのセキュリティが望ましいとき、かかるフル機能のオペレーティング・システムをハイ・アシュアランスなオペレーティング・システムと一緒に稼働させることが有用である。このハイ・アシュアランスなオペレーティング・システムは、僅かな数の機能を提供する小規模のオペレーティング・システムである。ハイ・アシュアランスなオペレーティング・システムによって提供される機能は小規模なので、その動作に影響を与える可能性のある変数はより少なくなっており、したがってその振る舞いを高度の確実性に至るまで検証することはより簡単である。
【００３４】
好ましい実施形態では、ハイ・アシュアランス環境は、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ、すなわち、非ハイ・アシュアランス環境からはアクセス不可能であるメモリの一部分を含んでいる。したがって、ＲＨＳ３６０は、ＬＨＳ３５０の下で実行されるプロセスが読み取りまたは書き込む危険なしに、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ中に機密データ（例えば、暗号キー）を記憶することができる。例えば、仕様３０４は、外部からの改ざん（outside tampering）からＲＨＳ３６０が情報を保護する機能を有し、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙによって、ＲＨＳ３６０がこの機能を実施できるようにすることができる。さらに、ＲＨＳ３６０がその様々なファンクションを実施するために使用するコードをこのＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ中に記憶して、ＬＨＳ３５０の下で実行されるプロセスがこのコードに異なるコード（それによって、ＲＨＳ３６０がその仕様外で振る舞うようになることもある）を上書きしないように防止することができる。図３は、ＲＨＳ３６０が使用する場合には使用可能なＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２を示している。物理アドレス空間３１０は、所与のコンピューティング装置上で使用可能な物理メモリ・ロケーションのすべてを含んでいる。Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２は、これらのロケーションのサブセットである。図３に示すように、ＲＨＳ３６０は、物理アドレス空間３１０のすべてにアクセスできるが、ＬＨＳ３５０は、物理アドレス空間３１０の、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２を構成する一部分に対するアクセスができない。（図３は、アドレス空間のＣｕｒｔａｉｎｅｄ部分（他から見えないようにされた部分）およびＮｏｎ−Ｃｕｒｔａｉｎｅｄ部分（他から見えないようにされていない部分）をそれぞれが隣接するものとして示しているが、このように隣接している必要はない。さらに必ずしも、ＲＨＳ３６０が物理アドレス空間全体にアクセスできる必要はなく、またＬＨＳ３５０がＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２の外側にある、物理アドレス空間のあらゆる部分にアクセスできる必要もない。）
以上で指摘したように、ほとんどすべてのメモリ・アクセス要求が物理アドレスによって行われるある種のシステムが存在する。かかるシステム上でＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２を実装する一方法は、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２についての仮想アドレスがＬＨＳ３５０に露出されない（さらされない）ような方法で、アドレス変換マップの内容（contents）を制御する方法である（あるタイプのアクセス要求が、それらのターゲットを物理アドレスによって識別する可能性がある場合には、ダイレクト・メモリ・アクセス装置または他のソースからの物理的なアクセス要求をフィルタリングする排他ベクトル（exclusion vector）など、何らかの補助的な協働メカニズムによって、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙへのアクセスを制限することができる。）。ＬＨＳ３５０が、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２へと至るはずのアドレス変換マップを使用できないことを保証するいくつかのアルゴリズムが使用可能であるが、これらのアルゴリズムの背後における中心的なアイデアは、（１）プロセッサがＬＨＳ３５０で動作しているとき、ＣＲ３（図２に示す記憶ロケーション２０１）にロードされたマップはどれも、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２に含まれるページには至らないようにする、（２）ＬＨＳ３５０中のアクティブなマップを編集するどのような試みに対しても、提案された編集を評価して、その編集がＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２のページに至るリンクをもたらさないように保証することである。
【００３５】
以下は、ＡＴＣを介してＣｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙを実装するためのアルゴリズムの一例である。
【００３６】
Ｄ１を、ページ・ディレクトリとして使用することができるページの集合であるとする。Ｄ２を、ページ・テーブルとして使用することができるページの集合であるとする。Ｄを、Ｄ１とＤ２の和集合(union)（すなわち、Ｄ＝Ｄ１∪Ｄ２）であるとする。「存在している（present）」とマークされた（すなわち、その存在ビット（present bit）がセットされた）ページ・ディレクトリまたはページ・テーブル中の各エントリは、「リンク」と呼ばれる。Ｄ１中のあるページから問題となっているＤ２ページへのスモール読取り書込みリンク（small read-write link）がある場合には、Ｄ２中のページは、「書込みアクティブ（write active）」である（「スモール（small）」リンクは、ディレクトリからテーブルへのリンク、すなわち最終的にスモール・ページに至ることになるディレクトリ中のリンクである。「ラージ（large）」リンクは、ラージ・ページを指すディレクトリ中のリンクである。）。あるエンティティが読取りおよび／または書込みアクセスを許されるページを定義するポリシーが存在すると、想定する。
【００３７】
以下のインバリアント（invariants）が保持される。  
−ＣＲ３は、Ｄ１中にある；  
−すべてのＤ１ページおよびＤ２ページは、その関連するポリシーの下で読取り可能である；  
−Ｄ１ページからのあらゆるスモール・リンクは、Ｄ２ページを指す；  
−Ｄ２ページからのリンクは、そのポリシーの下で読取り可能なページを指す；  
−書込みアクティブなＤ２ページからのあらゆる読取り書込みリンクは、そのポリシーの下で書込み可能であるページで、Ｄ中にないページ、を指す；  
−Ｄ１ページからのラージ・リンクのラージ・ページ・ターゲット中に含まれるあらゆるスモール・ページはそのポリシーの下で読取り可能である；そのリンクが読取り書込みの場合には、このスモール・ページも、またそのポリシーの下に書込み可能であり、Ｄ中にはない。
【００３８】
例えば、そのポリシーが、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２をアクセス不可能と定義する場合には、ＬＨＳ３５０が使用可能なすべてのアドレス変換テーブルについて以上のインバリアントを保持することにより、仮想アドレスによってそのターゲットを識別するアクセス要求で、ＬＨＳ３５０中で生ずるアクセス要求が、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２に決して到達できないことを保証することになる。
【００３９】
ＡＴＣを伴う変換索引バッファの使用
変換索引バッファ（ＴＬＢ）は、本質的にはマッピング・データが記憶されるキャッシュである。ＴＬＢの背後にある基本的なアイデアは、最近アクセスされたページは再びアクセスされる可能性が高いというものであり、したがって、所与の仮想ページから対応する物理ページへの最近使用されたマッピングがそのＴＬＢ中に記憶される。アドレス変換テーブルからマッピングを計算するには、（少なくともＩＮＴＥＬｘ８６プロセッサ上で使用される最も一般的な２−レベルの仮想アドレス・スキームにおいては）２回のメモリ・アクセス、すなわち、ページ・ディレクトリへの、該当するページ・テーブルのロケーションを見出すための１つのアクセスと、次いで、そのページ・テーブルへの、該当するデータ・ページを見出すための２回目のアクセス、が必要である。アクセスがシークされる実際のターゲット・ロケーションは、これら２回の（他の）メモリ・アクセスが実施されてターゲットデータの物理ロケーションを見出した後に、アクセスできるだけである。ＴＬＢは、最近使用されたマッピング情報を保持する高速メモリを提供することによって、かかる追加のメモリ・アクセスの必要性を減らす。したがって、実施する必要のあるアドレス変換のたびごとに、プロセッサは、まずそのＴＬＢを参照して所与の仮想ページについてのマッピング・データがそのＴＬＢ中にキャッシュされているかどうかを決定する。そのマッピング・データがＴＬＢ中に存在しない場合には、アドレス変換テーブルが参照される。
【００４０】
図４は、プロセッサがどのようにＴＬＢ４０２を使用するかを示している。プロセッサ１２０は、一連のコードを実行し、この実行中に、メモリ４００のターゲット・ロケーション４０６から情報を読み取り、あるいはそれに情報を書き込む１つの命令が発生する。この命令は、ターゲット・ロケーション４０６の物理アドレスを識別しないが、代わりにターゲット・ロケーション４０６の仮想アドレスを指定する。したがって、プロセッサ１２０（または、多くの場合には、プロセッサ１２０に関連付けられたメモリ管理ユニット）が、この仮想アドレスを物理アドレスに変換する必要がある。プロセッサ１２０は、まずＴＬＢ４０２中を調べてこの仮想アドレスを変換する際に使用できるマッピングがキャッシュされているかどうかを決定する（丸で囲んだ１）。かかるマッピングが存在する場合には、このマッピングを使用してこのアドレスを変換する。かかるマッピングが存在しない場合には、アドレス変換マップ４０４の該当部分をメモリ４００から読み取り（丸で囲んだ２）、これらのマップ部分を使用してこの仮想アドレスを変換する。アドレスをどのように変換するかにかかわらず、この変換済みのアドレスを使用して物理ターゲット・ロケーション４０６にアクセスする（丸で囲んだ３）。ＴＬＢが効率をもたらす理由は、メモリ４００中のアドレス変換マップ４０４を読み取るのに比べてＴＬＢ４０２中の情報を調べる方が速いからである。さらに、設計によっては、ＴＬＢ４０２に記憶されたデータにより、２ステップの変換プロセスを１ステップに縮めることができる。すなわち、アドレス変換マップを使用することは、ページ・ディレクトリとページ・テーブルを別々のステップで読み取る必要がある。しかし、１つのＰＤオフセット／ＰＴオフセットの組合せをＴＬＢ４０２にキャッシュすることができ、それによって、仮想ページをＰＤオフセット／ＰＴオフセットの組合せによって単一ステップで識別できるようにすることができる。
【００４１】
ＡＴＣシステム中でＴＬＢを使用する際には、ＴＬＢを介して使用可能な変換を考慮に入れるためにこのＡＴＣのインバリアントを修正する。例えば、以前に説明したＡＴＣアルゴリズムの例では、リンクの定義を以下のように修正することができる。すなわち、あるページから別のページへのリンクは、物理メモリ中に存在する場合、または何らかのＴＬＢにキャッシュされている場合、に存在する。ＴＬＢの内容は、たいていのアーキテクチャ（例えばｘ８６プロセッサ）では直接見ることができないが、変換はメモリを介してのみＴＬＢに入力されるので、その内容をバインドすることができる。このアルゴリズム例においてそのインバリアントを使用すると、Ｄ１またはＤ２からページを取り除いて、ページに対する読取りアクセスまたは読取り書込みアクセスを放棄し、およびＤ２に対して、ページのステイタス（状態）を書込みアクティブから書込み非アクティブに、またはその逆へと変更する書込みまたは追加をし、次いでこのＴＬＢをフラッシュする必要がある。
【００４２】
しかし、ＴＬＢのフラッシングは、性能を低下させる、時間を要する動作であるので、ＴＬＢのフラッシュをさらにいっそう減らそうという本質的な誘因が存在する。第１に、ＴＬＢは、有用なマッピング・データで満たされている範囲でしか効率を向上させず、ＴＬＢのフラッシングは、このマッピング・データをこのＴＬＢから取り除いてしまう。第２に、実際のフラッシュそれ自体が、以下の理由から時間を要することもある。すなわち、図３に示すアーキテクチャでは、Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ３１２の保持は、カウンタ・ポリシー・マッピングの不在（absence of counter-policy mapping：ポリシーに反するマッピングが無いこと）に依存している。好ましい実施形態において、カウンタ・ポリシー・マッピングの不在がハイ・アシュアランス環境を提供する一要素であることから、このマッピングの制御自体は、ハイ・アシュアランス環境で実施する必要がある。したがって、アドレス変換マップ上の制御自体をハイ・アシュアランス環境で実施する必要があるだけでなく、ＴＬＢのフラッシングもハイ・アシュアランス環境で実施する（または少なくとも検証する）必要がある。したがって、ＡＴＣシステムの一部として用いられるあらゆるＴＬＢフラッシュが、現行の環境をＬＨＳ３５０からＲＨＳ３６０へと変更することを必要とする。コンテキストを１つの環境から別の環境へと変更するプロセスは、それ自体、時間を要し、フラッシュに要する時間を増大させる。したがって、必要以上の頻度のＴＬＢのフラッシングを回避することが望ましい。
【００４３】
本発明では、これらのフラッシュの一部を、遅延させて、場合によれば回避することが可能なメカニズムを提供する。一実施形態では、本発明は２つのサブ・メカニズムに基づいている。第１のサブ・メカニズムは、（例えばページをＤ２に追加し、またはページを書込みアクセス不可能にするなど）実際のメモリ・マップを修正することをしない動作で、メモリに何らかの修正を許容するその完了が必要とされるまで、概念的に遅延させることができる動作を提供する。例えば、（セキュリティ・ポリシーにおいて）あるページに対する読取りアクセスを放棄する動作（act）を、そのページが修正される可能性が存在するようになるとき（別の計算エンティティがそのページに対する読取り書込みマッピングを作成するとき）まで遅延させることができる。第２のサブ・メカニズムは、タイム・スタンプを使用してあるページに対する特定のマッピングが特定のＴＬＢに存在するかどうかをより正確に追跡する。
【００４４】
以前に提示したアルゴリズム例では、フラッシュを必要とする遅延可能な動作を、２つのクラス、すなわち、あるページを読み取ることができるようにする任意の変換をＴＬＢから除去する（あるページに対する読取りアクセスを放棄し、またはＤ１またはＤ２からページを除去する）ことを必要とする動作、およびあるページを修正することができるようにする任意の変換をＴＬＢから除去する（あるページに対する書込みアクセスを除去する）ことを必要とする動作に区分することができる。前者を「読取りフラッシング動作」、後者を「書込みフラッシング動作」と呼び、これらの動作を以下のように遅延させることができる。  
−読取りフラッシング動作は、一部の計算エンティティ（computational entity）がそのページに対する読取り書込みマッピングを作成しようと試みるまで、一部のデバイスがそのページをダイレクト・メモリ・アクセスを介して修正することができるようになるまで、あるいはそのページをＡＴＣアルゴリズムそれ自体によって修正するまで、遅延させることができる。  
−書込みフラッシング動作は、一部の計算エンティティがそのページに対する読取りまたは読取り書込みマッピングを作成しようと試みるまで、一部の装置がそのページをダイレクト・接メモリ・アクセスを修正することができるようになるまで、あるいはそのページをＡＴＣアルゴリズムそれ自体によって修正するまで、遅延させることができる。
【００４５】
読取りフラッシング動作を実施する際には、ＴＬＢが問題のページに対する読取りマッピングを依然として含む可能性がある場合に、ＴＬＢをフラッシュする必要があるだけである。このことは、そのページに対する読取りマッピングが存在していた最後の時刻以来、ＴＬＢがフラッシュされていない場合のみである可能性がある。同様に、書込みフラッシング動作を実施する際には、そのページに対する読取り書込みマッピングが最後に存在したとき以来、ＴＬＢがフラッシュされていない場合にＴＬＢをフラッシュする必要があるだけである。
【００４６】
あるページに対する読取り／読取り書込みマッピングが存在したとき以来、ＴＬＢがフラッシュされたかどうかを決定するために、各ページごとの２つのタイム・スタンプ（その読取りタイム・スタンプおよびその書込みタイム・スタンプ）、および各ＴＬＢごとの１つのタイム・スタンプ（そのフラッシュ・タイム・スタンプ）が保持される。あるページに対するこの最後の読取り／読取り書込みマッピングが除去されるときはいつでも、現在の時刻がその読取り／読取り書込みタイム・スタンプに記録される。ＴＬＢがフラッシュされるときはいつでも、現在の時刻がそのフラッシュ・タイム・スタンプに記録される。
【００４７】
時刻はいくつかの方法で測定することができる。第１の手法の例では、ＴＬＢについて使用されるクロックは、まさにフラッシュ・タイム・スタンプである。したがって、あるページについての読取りおよび読取り書込みタイム・スタンプは、ＴＬＢフラッシュ・タイム・スタンプからコピーされる。ＴＬＢがフラッシュされるとき、このフラッシュ・タイム・スタンプは、変更される（どのように変更されるかは問題ではない）。あるページ上の読取り／読取り書込みタイム・スタンプがこのフラッシュ・タイム・スタンプとは異なる場合、この読取り／読取り書込みマッピングは、ＴＬＢ中に存在しないことが保証される。偶然にこのフラッシュ・タイム・スタンプが（多分、数回）変更されているがこの読取り／読取り書込みタイム・スタンプに（例えばカウンタのラップアラウンドのために）たまたま一致する場合には、害はない。すなわち、ただ不必要なフラッシュが存在することになるだけである。
【００４８】
第２の手法の例では、時刻は、実時間または仮想クロックを用いて測定される。読取り／読取り書込みタイム・スタンプおよびフラッシュ・タイム・スタンプを記録するために使用されるクロックが、あるクロック・スキューの範囲内に収まるように常に一致することが保証される場合、この読取り／読取り書込みタイム・スタンプが少なくともクロック・スキュー分だけそのフラッシュ・タイム・スタンプに先行する場合には、その読取り／読取り書込みマッピングがＴＬＢ中に存在しないことが保証される。クロック・スキューを完全に回避する一方法は、グローバル・クロック、およびどのＴＬＢがフラッシュされるときにも増分される共用カウンタを使用することであるが、かかるクロックは、ホットスポット（hotspot）になり得る。
【００４９】
第１の手法には、同期化されたクロック（synchronized clocks）を必要としないという利点がある。しかし、考慮すべき多数のＴＬＢが存在する場合には、この第１の手法では、各ＴＬＢごとに別々の読取り／読取り書込みタイム・スタンプが必要となるのに対して、第２の手法では単一クロックの読取りしか必要とならない。さらに、第２の手法では、クロック自体についてのメモリ・コンテンション（メモリ競合）がなくなる。これら２つの手法を組み合わせることもでき、また（例えば、ベクトル・クロックなど）他のメカニズムを使用することもできる。
【００５０】
本発明は、ＴＬＢのレイジー・フラッシングを可能にするメカニズムを提供しており、その結果、ＴＬＢの明示的なフラッシュは、ＬＨＳ３５０が、このアドレス変換マップにもはや従わない古くなったＴＬＢエントリを使用してあるページに実際にアクセスしている可能性が存在するようになるまで遅延させられる。原則として、あるページに対する最後のマッピングが取り除かれるときに、このページは、「タイム・スタンプ」される（以下に説明するように、この「タイム・スタンプ」は、実際にはその時刻を含んでおらず、その代わりに順次カウンタの値を含むことがある。）。このページをその後にアクセスするとき、そのページがタイム・スタンプされて以来このＴＬＢがフラッシュされているかどうかに応じてこのＴＬＢをフラッシュすべきかについての決定が行われる。
【００５１】
図５に示すマルチ・プロセッサ・コンピュータ・システムにおいて、プロセッサ１２０（１）ないし１２０（ｎ）のそれぞれは、それ自体のＴＬＢ４０２（１）ないし４０２（ｎ）を保持する。換言すれば、プロセッサ１２０（１）ないし１２０（ｎ）はそれぞれ、同じ基礎をなすアドレス変換テーブル（same underlying address translation tables）にアクセスできるが、これらのテーブルからマッピングを別々にキャッシュすることができる。さらに、一実施形態では、各プロセッサはＬＨＳ３５０中またはＲＨＳ３６０中で動作することができる。本発明によれば、カウンタ５０２（１）ないし５０２（ｎ）は、それぞれプロセッサ１２０（１）ないし１２０（ｎ）に関連付けられる。プロセッサ上の環境がＲＨＳ３６０からＬＨＳ３５０に変更されるたびに、このプロセッサに関連付けられたカウンタが増分される。
【００５２】
ページがＬＨＳ３５０から使用不可能とされるときはいつでも（すなわち、このページが、その該当するアクセス・ポリシーの下でＬＨＳ３５０から使用不可能とされ、ＬＨＳ３５０から使用可能なすべてのマッピングから切り離されるとき）、このページには、そのカウンタ値が効果的に「タイム・スタンプされる」。（このカウンタは、物理的な意味では「時刻」をカウントしないが、ある種の事象が起こるときにそれに応答してカウンタが進むので１種の時間計測と見なすことができる。）したがって、あるページについての記憶されたカウンタ値を、ページにアクセスしようとしているプロセッサについての現在のカウンタ値と、比較することによって、このページがＬＨＳ３５０から使用不可能にされて以来、このプロセッサがＲＨＳ３６０に入ったことがあるかどうかを決定することができる（以上で説明したように、ＲＨＳ３６０に入ることは、ＴＬＢを確実にフラッシュすることを引き起こす。）。このページが切り離されてから、プロセッサがまだＲＨＳ３６０に入ったことがない場合には、このプロセッサは、ＲＨＳ３６０に入りそのＴＬＢをフラッシュする。このページにアクセスしようとする試みがＬＨＳ３５０中で生ずる場合には、このプロセッサは、ＬＨＳ３５０に戻り、再びこのページにアクセスしようとする。このページが切り離されて以来、このプロセッサがＲＨＳ３６０に入ったことがある場合（すなわち、このプロセッサが現在ＲＨＳ３６０内にあるか、それともこのページが切り離された後のあるポイントでＲＨＳ３６０に入ったことがある場合）には、このページがＬＨＳ３５０にとって使用可能であった最後の時以来、このＴＬＢが確実にフラッシュされ、したがってこのＴＬＢにはこのページに対するどのようなマッピングも含まれ得ず、それ故にこのＴＬＢはその時点でフラッシュする必要がないことが分かる。
【００５３】
図６は、ページがＬＨＳ３５０から使用不可能にされるのに続いてＴＬＢをフラッシュするプロセスを示す流れ図である。図６に示すプロセスの最初に、所与のページ（ページＸ）は、ある適用可能なアクセス・ポリシーの下でＬＨＳ３５０からアクセスできるように使用可能であると想定する。あるポイントで、ページＸは、そのアクセス・ポリシーの下でＬＨＳ３５０から使用不可能とされ、ＬＨＳ３５０から使用可能なアドレス変換マップを必要に応じて調整してページＸがこれらのマップから切り離されるようにする（６０２）。ページＸが切り離される時に、そのマシン上のプロセッサのすべてについてのカウンタ値を記録し、後で取り出すためにこの記録をページＸに関連付ける（６０４）。この記録は、そのマシン上の各プロセッサについての現在のカウンタ値を含むことが好ましい。
【００５４】
ＬＨＳ３５０にとって使用可能なマップからページＸを切り離した後、ページＸが実際にアクセスされる以前に何らかの量の時間が経過することもある。しかし、あるポイントで、ページＸを求めるアクセス要求が、特定のプロセッサ（プロセッサＹ）から生ずることになる（６０６）。次いで、ページに関連付けられた記録済みのカウンタ値を取り出し、プロセッサＹについて記憶された値がプロセッサＹの現在のカウンタ値と比較される（この記録は、他のプロセッサについての記憶されたカウンタ値も含むことになるが、他のこれらの値は、プロセッサＹがそのＴＬＢをフラッシュする必要があるかどうかを決定する際に無視される。）。プロセッサＹの現在のカウンタ値がこの記憶されたカウンタ値よりも大きい場合には、ページＸがＬＨＳ３５０から使用不可能にされて以来、プロセッサＹがＲＨＳ３６０に入りそのＴＬＢをフラッシュした場合で有るはずなので、さらなる照会なしにこのページに対するアクセスが許容される（６１４）。他方、プロセッサＹについての記憶されたカウンタ値がプロセッサＹの現在のカウンタ値と同じである場合には、ページＸが切り離されて以来、ＲＨＳ３６０には入ったことがなく、これは、すなわちプロセッサＹのＴＬＢが依然としてページＸに対するマッピングを含む可能性があることを意味する。
【００５５】
プロセッサＹがＲＨＳ３６０中で実行される場合（６１０）には、ＴＬＢは、そのアクセス・ポリシーに違反することなくページＸに対するマッピングを含むことができ、したがって、ページＸに対するアクセスが許容される（６１４）。しかし、プロセッサＹがＬＨＳ３５０中で実行されている場合（および、ページＸが切り離されて以来、プロセッサＹがそのＴＬＢをフラッシュしていないことが、６０８から知られている場合）、プロセッサＹのＴＬＢの内容（contents）がＬＨＳ３５０に対してページＸへのマッピングを露出する（さらす）ことになる可能性がある。したがって、プロセッサＹは、ＲＨＳ３６０に入りそのＴＬＢをフラッシュする（６１２）。ＴＬＢがフラッシュされた後、プロセッサＹは、ＬＨＳ３５０へと戻り、そのアクセス要求が再実行される（６１４）（それによってその要求されたアドレスをこの新しい空のＴＬＢを用いて再変換することが必要になる）。
【００５６】
あるページをＬＨＳ３５０からアクセスできないようにすることが、ＴＬＢをフラッシュする必要性を引き起こし得るただ１つの事象（event）ではなく、本発明のメカニズムを使用して他の理由で生ずるＴＬＢフラッシュを引き起こすこともできることに留意されたい。例えば、（以上で定義された）集合Ｄ１またはＤ２のうちの１つからあるページを取り除くことが、またはあるページについての読取りアクセス（または書込みアクセス）を放棄することが、ＴＬＢフラッシュの必要性を引き起こすこともある、というのは、これらの事象が、どのマッピングがこの関連するポリシーに適合しているかに対して、影響を及ぼすこともあるので。かかるケースでは、本発明のメカニズムを以上に説明した、例えば、Ｄ１またはＤ２からあるページを取り除くとき、または読取り（または書込み）アクセスを放棄するときにカウンタ値を記録すること、および、このページをアクセスする、プロセッサによる後続のどのような試みも、このページについてのプロセッサのカウンタ値と記憶済みのカウンタ値との間の比較を引き起こすこと、と同様な方法で使用することができる。
【００５７】
本発明のメカニズムは、フラッシュがＲＨＳ３６０へのトリップを必要とする場合に、またはＬＨＳ３５０もＲＨＳ３６０も使用可能である場合にさえも、限定されないことにさらに留意されたい。より一般的には、本発明のメカニズムは、マップの状態をもはや反映しない古いエントリがＴＬＢ中に存在する可能性があるどのような場合にも、例えば、あるオペレーティング・システムによって実施される通常のプロセス分離の場合にも、使用することができる。
【００５８】
前述の例は、単に説明の目的のためだけで提供されており、本発明を限定するものとは決して解釈すべきではないことに留意されたい。本発明を様々な実施形態に関して説明してきたが、本明細書中で使用してきた用語は、限定するための用語ではなく説明および例証のための用語であると理解されたい。さらに、本発明は、本明細書中で特定の手段、機材（materials）、および実施形態に関して説明してきたが、本明細書中に開示された特定のものに本発明を限定することを意図していない。それとは逆に、本発明は、特許請求の範囲の範囲内に含まれるすべての機能的に等価な構造、方法、および使用に拡張される。本明細書の教示を利用して、当業者なら本発明に多数の変更をもたらすことができ、本発明の範囲および趣旨から逸脱することなくその態様に変更を行うことができる。
【図面の簡単な説明】
【００５９】
【図１】本発明の態様を実装することができるコンピューティング環境の一例のブロック図である。
【図２】仮想アドレス・システムの一例のブロック図である。
【図３】マシン上で共存する２つの環境のブロック図で、そのメモリの一部分が他から見えないようにされている（curtained）２つの環境のブロック図である。
【図４】アドレス変換プロセス中で使用される変換索引バッファ（ＴＬＢ）を示すブロック図である。
【図５】各プロセッサがＴＬＢおよびカウンタに関連付けられる、複数のプロセッサを備えるシステムのブロック図である。
【図６】本発明の態様によるＴＬＢのレイジー・フラッシングを行うプロセスの流れ図である。
【符号の説明】
【００６０】
１００  コンピューティング環境
１１０  コンピュータ
１２０  処理装置（プロセッサ）
１２１  システム・バス
１３０  システム・メモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティング・システム
１３５  アプリケーション・プログラム
１３６  他のプログラム・モジュール
１３７  プログラム・データ
１４０  着脱不能な不揮発性メモリ・インターフェース
１４１  ハードディスク・ドライブ
１４４  オペレーティング・システム
１４５  アプリケーション・プログラム
１４６  他のプログラム・モジュール
１４７  プログラム・データ
１５０  着脱可能な不揮発性メモリ・インターフェース
１５１  磁気ディスク・ドライブ
１５２  着脱可能な不揮発性の磁気ディスク
１５５  光ディスク・ドライブ
１５６  着脱可能な不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワーク・インターフェース
１７１  ローカル・エリア・ネットワーク
１７２  モデム
１７３  ワイド・エリア・ネットワーク
１８０  リモート・コンピュータ
１８１  メモリ記憶装置
１８５  リモート・アプリケーション・プログラム
１９０  ビデオ・インターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２０１  記憶ロケーション
２０２  ページ・ディレクトリ
２０４  ページ・テーブル
２０６  ページ
２１０  仮想アドレス
２１１  ページ・ディレクトリ・オフセット
２１２  ページ・テーブル・オフセット
２１３  ページ・オフセット
２２０  メモリ管理ユニット（ＭＭＵ）
３０２  ファンクション３０６（１）ないし３０６（ｎ）がどのように振る舞うと想定されるかを記述する仕様
３０４  ファンクション３０８（１）ないし３０８（ｍ）がどのように振る舞うと想定されるかを記述する仕様
３０６  ファンクション
３０８  ファンクション
３１０  物理アドレス空間
３１２  Ｃｕｒｔａｉｎｅｄ  Ｍｅｍｏｒｙ
４００  メモリ
４０２  ＴＬＢ
４０４  アドレス変換マップ
４０６  物理ターゲット・ロケーション
【図１】
2005158040.tif 000003
【図２】
2005158040.tif 000004
【図３】
2005158040.tif 000005
【図４】
2005158040.tif 000006
【図５】
2005158040.tif 000007
【図６】
2005158040.tif 000008