JP4672281B2 - 最適化を用いたメモリアクセス制御の実装 - Google Patents

最適化を用いたメモリアクセス制御の実装 Download PDF

Info

Publication number
JP4672281B2
JP4672281B2 JP2004134539A JP2004134539A JP4672281B2 JP 4672281 B2 JP4672281 B2 JP 4672281B2 JP 2004134539 A JP2004134539 A JP 2004134539A JP 2004134539 A JP2004134539 A JP 2004134539A JP 4672281 B2 JP4672281 B2 JP 4672281B2
Authority
JP
Japan
Prior art keywords
request
memory
address translation
translation map
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004134539A
Other languages
English (en)
Other versions
JP2004334870A (ja
JP2004334870A5 (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 JP2004334870A publication Critical patent/JP2004334870A/ja
Publication of JP2004334870A5 publication Critical patent/JP2004334870A5/ja
Application granted granted Critical
Publication of JP4672281B2 publication Critical patent/JP4672281B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detergent Compositions (AREA)

Description

本発明は一般に、コンピュータセキュリティの分野に関する。より詳細には、本発明は、アドレス変換制御を用いて隔離(isolated)または「遮蔽(curtained)」メモリを実現するための効率的な技法に関する。
ある状況では、メモリには、アクセスが制限される部分である隔離されたまたは「遮蔽」された部分があることが望ましい。例えば、あるコンピュータが2つのオペレーティングシステムを並行して稼動させているが、一方のオペレーティングシステムは安全であり、他方はそうではない場合がある。この場合、安全なオペレーティングシステムは、安全でないオペレーティングシステムからアクセスできない秘密情報を記憶することのできる遮蔽メモリを有することが望ましい。
遮蔽メモリを実現する方法の1つは、アドレス変換制御による方法である。近年の多くのコンピュータは仮想メモリシステムを使用しており、仮想メモリシステムでは、コンピュータ上で稼動するソフトウェアは仮想アドレスを使用してメモリのアドレスを指定し、メモリ管理ユニットが、1組のアドレス変換マップを使用して仮想アドレスを物理アドレスに変換する。通常、各プロセスはそれ自体のアドレス変換マップを有し、したがって、仮想アドレスと物理アドレスとの間のマッピングはプロセスごとに変化する。所与のプロセスのアドレス変換マップは、物理メモリの所与のブロック(例えばページ)用の仮想アドレスをプロセスに露呈しないように構成することが可能である。このように、安全なプロセスだけが物理メモリの所与のブロックについての仮想アドレスを有するようにすることにより、アドレス変換マップの内容を制御して遮蔽メモリを実現することが可能である。
このような機構を使用して遮蔽メモリを実現するときに生じる問題の1つは、アドレス変換マップがメモリに記憶されているので、どんなメモリ書込み動作もマップに影響を与える可能性があり、それにより遮蔽メモリ用の仮想アドレスが、遮蔽メモリにアクセスできるべきでないプロセスに露呈する恐れがあることである。このような仮想アドレスが露呈しないようにする方法の1つは、メモリ書込み動作が実施されるたびに、あらゆるマップのあらゆる要素をチェックして、遮蔽メモリにアクセスできるべきでないプロセスのマップ中に仮想アドレスがあるような遮蔽メモリページがないことを確実にすることである。しかし、書込み動作の頻度を考えると、この技法は非効率的である。
従来のシステムには上述したような種々の問題があり、従来技術の欠点を克服する機構が必要とされており、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、アドレス変換マップの変更を効率的に制御するための、最適化を用いたメモリアクセス制御の実装を提供することにある。
本発明は、アドレス変換マップの変更を効率的に制御するための機構を提供する。アドレス変換マップの状態が、遮蔽メモリへのアクセスを許可されないプロセス(またはその他のエンティティ)に対して遮蔽メモリのブロックについての仮想アドレスが露呈する状態に入らないようにすることによって、遮蔽メモリを実現することができる。「ポリシー」が、どんなメモリアクセス動作が許可されるかを定義し、メモリアクセス制御システムが、アドレス変換マップがいずれかのポリシーに違反する状態に入るのを禁じることによって動作する。
このような仮想アドレスが露呈することになる状態は、しばしば、一定のプロパティを満たす複数の集合の共通部分(または非共通部分)に基づいて、あるいは一定のプロパティを満たすページの数に基づいて定義することができる。定義された集合のメンバであるページの識別を記憶またはキャッシュすることができ、したがって、アドレス変換マップの状態を変更する可能性のある書込み動作が実施されるたびに集合のメンバシップを計算する必要はない。集合中のページの識別は、例えばビットベクトルとして記憶することができ、このようなビットベクトルに対して和や共通部分などの集合演算を効率的に実施することができる。特定のプロパティを満たす正確な集合を計算するのが難しい場合もあり得るが、何らかの明確な部分集合または上位集合を実際の集合の代わりとして使用することによってポリシーへの適合を保証することができることは、数学的に証明可能とすることができる。実際の集合よりも部分集合または上位集合の方が相対的に計算しやすい場合は、実際の集合の代わりに部分集合または上位集合を使用することができる。
さらに、いくつかの書込み動作の許可は、何らかの統計のカウント、例えば一定のプロパティを満たすページの数や所与のページへの参照の数などの点から定義することができる。このような統計は、参照カウンタとして効果的に記憶またはキャッシュすることができ、増分または減分動作によって更新することができる。ビットベクトルまたはカウンタは、マップが状態を変更するたびに更新することができ、次いで、これらを効率的に使用して、ポリシーの下でのメモリアクセス動作を評価することができる。
本発明のその他の特徴については後述する。
前述の概要、ならびに後続の好適実施形態の詳細な説明は、添付の図面と共に読めばよりよく理解される。本発明を例示するために、図面には本発明の例示的な構造を示す。ただし本発明は、開示する特定の方法および手段に限定されるわけではない。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
例示的なコンピューティング構成
図1に、本発明の態様を実施することのできる例示的なコンピューティング環境を示す。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどんな制限も意味しない。またコンピューティング環境100は、この例示的な動作環境のコンピューティングシステム環境100に示すコンポーネントのいずれか1つまたは組合せに関してどんな依存も要件も有するものと解釈すべきではない。
本発明は、その他多くの汎用または専用コンピューティングシステム環境または構成でも動作する。本発明で使用するのに適するであろう周知のコンピューティングシステム、環境、および/または構成の例には、限定しないがパーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC(personal computer)、ミニコンピュータ、メインフレームコンピュータ、組込みシステムや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
本発明は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的な状況で述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークまたはその他のデータ伝送媒体を介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールおよびその他のデータは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
図1を参照すると、本発明を実施するための例示的なシステムは、コンピュータ110の形の汎用コンピューティングデバイスを含む。コンピュータ110のコンポーネントには、限定しないがプロセッサ120と、システムメモリ130と、システムメモリを含めた様々なシステムコンポーネントをプロセッサ120に結合するシステムバス121とを含めることができる。システムバス121は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびPCI(Peripheral Component Interconnects)バス(メザニンバスとも呼ばれる)が含まれる。
コンピュータ110は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ110からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性媒体、リムーバブルとノンリムーバブル媒体の両方が含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、リムーバブルとノンリムーバブルの両方の媒体が含まれる。コンピュータ記憶媒体には、限定しないがRAM、ROM、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリまたは他のメモリ技術、CD(compact disc)ROM、DVD(Digital Versatile Disc)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用できコンピュータ110からアクセスできるその他の任意の媒体が含まれる。通信媒体は通常、搬送波や他の移送機構などの変調データ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを組み入れたものであり、任意の情報送達媒体が含まれる。「変調データ信号」という語は、情報が信号中に符号化される形で1つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークや直接配線接続などの有線媒体と、音響、無線周波、赤外線、その他の無線媒体などの無線媒体とが含まれる。以上の任意の組合せもコンピュータ可読媒体の範囲に含めるべきである。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。ROM131には通常、起動中などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(basic input/output system)133が記憶されている。RAM132は通常、プロセッサ120がすぐにアクセス可能な、かつ/またはプロセッサ120によって現在操作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例として、図1には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、その他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが図1には、ノンリムーバブルかつ不揮発性の磁気媒体に対して読み書きするハードディスクドライブ141と、リムーバブルかつ不揮発性の磁気ディスク152に対して読み書きする磁気ディスクドライブ151と、CDROMや他の光媒体などリムーバブルかつ不揮発性の光ディスク156に対して読み書きする光ディスクドライブ155を示す。この例示的な動作環境で使用できるその他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、限定しないが磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステート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」)など、その他のインタフェースおよびバス構造で接続されてもよい。モニタ191または他のタイプの表示デバイスもまた、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは通常、スピーカ197やプリンタ196など他の周辺出力デバイスも備えることができ、これらは出力周辺インタフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図1にはメモリ記憶デバイス181しか示していないが、通常はパーソナルコンピュータ110に関して上述した要素の多くまたはすべてを備える。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットでよくみられるものである。
コンピュータ110は、LANネットワーキング環境で使用されるときは、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用されるときは通常、インターネットなどのWAN173を介した通信を確立するためのモデム172または他の手段を備える。モデム172は内蔵でも外付けでもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して示したプログラムモジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図1には、リモートアプリケーションプログラム185がメモリデバイス181上にあるものとして示す。図示のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することもできることは理解されるであろう。
アドレス変換を用いたメモリアクセス
コンピュータシステム中のメモリ(例えば図1に示したRAM132)は、各バイトごとに物理アドレスを有する。したがって、メモリを構成するバイトには番号が付いていると見なすことができ、各バイトはその番号で明確に識別することができる。この場合、番号は物理アドレスを構成する。例えば、256バイトのメモリでは、バイトは0から228−1の範囲の物理アドレスを有することができる。しかし、近年のコンピュータシステムでは、メモリは一般に、その物理アドレスでアクセスされるのではなく仮想アドレスでアクセスされる。アドレス変換マップを使用して、物理アドレスが仮想アドレスに変換される。
図2に、アドレス変換マップの例と、実際のコンピュータシステムにおけるその使用を示す。図2に示す例示的なアドレス変換マップは「ページング」方式であり、メモリは「ページ」と呼ばれるブロック単位で割り当てられる。図2は、INTEL(登録商標)x86プロセッサ上で使用されるページング方式を表す。
図2では、ページディレクトリ202が、ページテーブル204(1)、204(2)、204(3)などのページテーブルへの一連のポインタ(すなわちページテーブルの物理ベースアドレス)を含む。各ページテーブルは、ページ(例えばページ206(1)、206(2)、206(3)、206(4))のベースアドレスへの一連のポインタを含み、さらに後述するように、読取り専用/読み書き可能属性や存在/非存在ビットなどの情報も含むことができる。ページは、RAM132の固定長の部分である。さらに、通常はページディレクトリおよびページテーブルもRAM132に記憶される。図2に示すページング方式は2レベルのページング方式である。というのは、特定のページを突き止めるにはページディレクトリ(レベル1)とページテーブル(レベル2)の両方を通る必要があるからである。当業者には理解されるであろうが、任意のレベル数のページング方式を設計することが可能であり、本発明はこのようなすべてのページング方式に適用される。また、INTEL(登録商標)x86プロセッサは通常、図2に示す2レベルのページング方式を使用することが当技術分野で知られているが、1レベルまたは3レベルのページング方式を使用するように構成することもできる。
図2のページング方式では、ページ上のどのバイトも仮想アドレス210で識別することができ、仮想アドレス210は、ページディレクトリ(PD)オフセット211、ページテーブル(PT)オフセット212、およびページオフセット213を含む。したがって、物理アドレスを突き止めるためには、メモリ管理ユニット(MMU)220が、ページディレクトリオフセット211を使用して、ページディレクトリ202中の特定のエントリを突き止める。このエントリはページテーブルの物理ベースアドレスであり、したがってMMU220は、このアドレスをデリファレンスして、ページテーブルのうちの1つ(例えばページテーブル204(1))を突き止める。次いでMMU220は、識別されたページテーブル中への索引としてページテーブルオフセット212を使用し、このオフセットで見つかったエントリを取り出す。このエントリはページ(例えばページ206(1))の物理ベースアドレスであり、したがってMMUは、識別されたページのベースアドレスにページオフセット213を加えて、物理メモリの特定のバイトを突き止める。図3に関して後述するが、MMU220はまた、ページが読取り専用としてマークされているか読み書き可能としてマークされているか、ページが存在としてマークされているか非存在としてマークされているかなどの情報を考慮するように構成することもできる。
図2のページング方式は、ページディレクトリへのポインタを含む記憶位置201も含む。MMU220は、仮想アドレス210の変換を開始すると、このポインタを使用してページディレクトリ202を突き止める。INTEL(登録商標)x86プロセッサの例では、記憶位置201は、CR3という名前のレジスタに対応する。すなわち、INTEL(登録商標)x86プロセッサ上では、レジスタCR3は、現在のコンテキストにおけるページディレクトリの物理アドレスを記憶する。したがって、変換テーブルの代替セット(すなわちページディレクトリとページテーブルの複数のセット)を構築することが可能であり、新しいページディレクトリのベースアドレスを記憶位置201に書き込むだけで、変換テーブルのどのセットが適用されるかを変更することが可能である。この技法の一般的な使用法の1つは、コンピュータ上で稼動している各プロセスがそれ自体のページディレクトリおよびページテーブルを有することであり、新しいプロセスのページディレクトリのベースアドレスを記憶位置201に書き込むことによって、「コンテキスト切替え」(すなわちとりわけ、仮想メモリシステムが新しいプロセスのアドレス空間をポイントするようにする操作)が実施される。各プロセスがそれ自体のページディレクトリを有する場合、現在稼動しているプロセスの識別が、記憶位置201にどの値がロードされるかを決定する。
ページへのポインタを含むことに加えて、ページテーブルおよびページディレクトリはまた、ページについて「属性」を含むこともできる。図3に例示的なページテーブル204(1)の詳細を示すが、これはポインタと属性の両方を含んでいる。ページテーブル204(1)中の各エントリは、特定のページのアドレス302と、エントリによってポイントされるページが「読取り専用」かどうかを示すビット304と、エントリによってポイントされるページが「存在」するかどうかを示すビット306とを含む。したがって、ページテーブル204(1)中の第1のエントリ301がページ206(1)(図2に示す)をポイントする場合、ビット304は、0にセットされているか1にセットされているかに応じて、MMU220(図2に示す)がページ206(1)の読取りと書込みの両方を許容すべきか、読取りだけを許容すべきかを示す。同様に、ビット306は、ページ206(1)がメモリ中に存在するか否かを示す。(例えばページ206(1)の内容がディスクに移動されて、メモリ中に他のページのための空きができた場合、ビット306を0にセットして非存在を示すことができる。)その他の属性をページテーブル204(1)に記憶することもできる。
アドレス変換マップをメモリアクセス制御に使用する
仮想アドレスでメモリにアクセスするシステムでは、以下の観察に基づいてメモリへのアクセスを制限するシステムを実現することが可能である。すなわち、所与の物理アドレスに変換される仮想アドレスがないようにアドレス変換マップが構成された場合、この物理アドレスで表されるメモリにはアクセス不可能である。例えば、図2に関して上述したページング方式で、メモリの所与のページ(例えばページ206(1))は、マップを介してこのページに至るパスがないようにすることによって、アクセス不可能にすることができる。このようなパスがない場合、このページに変換される仮想アドレス210はないことになる。すべてのメモリアクセスが仮想アドレスによって行われるシステムでは、アドレス変換マップに対する制御を実施して、メモリの所与のページ(または他の部分)に仮想アドレスを与えないことにより、このメモリ部分は実質的にアクセス不可能になる。メモリに対してある物理アドレス指定が可能なシステムであっても、物理アドレスに基づくアクセス要求に対する制御で、アドレス変換マップに対する制御を補うことにより、メモリをアクセス不可能にすることができる。
アドレス変換マップの内容を制御してメモリへのアクセスを制御する技法は、正式には次のように述べることができる。メモリにアクセスできる可能性のあるソースの集合をSとする。さらに、どのソースがどのメモリ部分にアクセスできるかを定義するポリシーをPとする。したがって、s∈Sがソースである場合、MP(s)は、アドレス変換マップを介してソースsからアクセス可能なメモリ部分(例えば仮想アドレスを有するメモリ位置の集合)を表し、NA(P,s)は、ポリシーPの下でソースsからのアクセスが許可されないメモリ部分を表す。(各プロセスがそれ自体のアドレス変換マップを有する場合、各プロセスは異なる「ソース」と見なすことができる。ただしソースの概念はプロセスの例にとどまらず一般化されることは理解されるであろう。)したがって、ポリシーの施行は、以下の条件が満たされる限り保証することができる。
NA(P,s)∩MP(s)=φ
この条件を図4に示す。図4には、メモリ位置の集合であるメモリ132と、アドレス変換マッピングを介してソースsから見えるメモリ位置の集合であるMP(s)402と、ポリシーPの下でソースsからのアクセスが許可されないメモリ位置の集合であるNA(P,s)404が示されている。ソースsがアドレス変換マッピングを介してアドレス指定できる位置(MP(s))はどれも、ソースsがポリシーPの下でアクセス許可されないメモリ位置の集合には含まれないので、図4に示す条件は、ソースsに関してポリシーPを効果的に施行する。
したがって、ソースsからメモリ132の部分へのアクセスを制御する問題は、いくつかの例示的な状況では、図4に示す条件が常に真であるようにすることに還元することができる。この問題に対する解決法の1つは、アドレス変換マッピングを変更する可能性のある任意の動作(例えばメモリ書込みやCR3レジスタのロードなど)、ポリシー、または現在のソースを評価することである。本発明は、このような評価を効率的に実施できるようにする技法を提供する。
図4に示す条件は、メモリアクセス制御を実施するのに使用することのできる条件の例にすぎないことは理解されるであろう。図4の主題に対する他の変形も可能であり、例えば、アドレス変換マップに含まれるメモリ位置の集合や、ソースsからのアクセスは許可されるが書込み(または読取り)は許可されないメモリ位置の集合などを含む変形が可能である。ただし、メモリアクセス制御に関する条件は一般に、複数のメモリ位置集合が交差しないことの検証を含むことに留意されたい。
さらに、MP(s)は、ソースsから見える「マッピングされるページ」と見なすことができるが、メモリアクセス制御の概念は、ページング方式を採用するシステムに限定されないことに留意されたい。典型的な一実装形態では、ポリシーの下でソースがどのメモリ位置に書き込むことができるか、またはどのメモリ位置がソースにマッピングされるかの決定は、ページごとに行われる。ただし本発明は、メモリがページごとに割り振られる場合、またはメモリへのアクセスがページごとに許可または制約される場合に限定されない。
アドレス変換に関する一般化モデル
図2に示すとともに上述したアドレス変換マップは、ラベル付き有向グラフのモデルを使用して一般化することができる。以下、いくつかのタイプのアドレス変換マップに関する一般化モデルについて述べる。
このモデルでは、Bはベース集合であり、Lは英字である。所与のBおよびLについて、G=(V,E)はエッジラベル付き有向グラフであり、V⊆B、およびE⊆{(v,w,l):v∈V,w∈V,l∈L}である。Eのメンバはどれも、ラベルlの付いた、頂点vから頂点wへの有向エッジと解釈することができる。頂点にもラベル付けすることができる。
図5に、前述のモデルに従ったグラフを示す。グラフ500は、頂点502、504、506、508、510、512を含む。これらの頂点は、図示のようにしてエッジ522、524、526、528、530、532、534で接続されている。各エッジは、英字からの記号でラベル付けされている。この例では、英字は記号A、B、Cを含む。したがって、エッジ522および524は記号Aでラベル付けされ、エッジ526、528、532は記号Bでラベル付けされ、エッジ530および534は記号Cでラベル付けされている。グラフ500には、頂点ではないベース集合の要素(例えば要素550および552)がある場合もある。
グラフ500の構成要素は、図2に示したアドレス変換マップのいくつかの構成要素に対応することを理解されたい。例えば図2で、ページディレクトリ202、ページテーブル204(1)〜204(3)、およびページ206(1)〜206(4)は、グラフ中の頂点と見なすことができる。これらの頂点を接続するポインタ(例えばページテーブル204(1)中のエントリからページ206(1)および206(2)へのポインタ)は、グラフ中のエッジと見なすことができる。また図3に関して、エントリの属性304および306(例えば読取り専用ビットや存在ビット)は、エッジのラベルと見なすことができる。したがって、「英字」は、可能な属性順列の集合である(2つの2進数属性がある図3の例では、4つの可能な組合せがあり、したがって英字には4つの記号がある)。属性が使用されない場合は、英字は「nil」記号からなるものとすることができる。さらに、割り振られないメモリページは、入来エッジを有さないベース集合メンバに対応する。
前述のようなグラフのモデル内では、「状態」を定義することが可能である。所与のBおよびLについて、「状態」は(R,G)の対であり、ここでGは、上に定義したラベル付き有向グラフであり、R⊆Vは、Gの頂点の集合である。Rは、「ルート頂点」の集合を表す。ルート頂点は、グラフのルートとして正当に働くことのできる、ベース集合中の頂点の集合を表す。図2の例では、正当なページディレクトリの集合(すなわち、INTEL(登録商標)x86プロセッサ上のCR3レジスタなどの記憶位置201にロードすることが許可されたそれらの値)が、「ルート頂点」の集合である。所与のBおよびLについて、すべての状態の集合はSである。
上に定義したモデルに従って、アドレス変換機構(ATM)を以下のようにモデル化することができる。
−頂点のベース集合B
−英字L(空の場合もある)
−初期状態s∈S(Sは状態)
−状態遷移規則のセット(空の場合もある)
−アドレス変換関数
−グローバルフラグ
状態遷移規則は、ATMをある状態から別の状態に変更する。したがって、状態遷移規則のセットr:S→S(iは何らかの指標)を定義することが可能であり、これはATMの現在状態を変更する。ATMは、以下のタイプの遷移規則のいずれかを有することができる。
−Gのエッジの変更(追加、削除、再ラベル付け)
−Gの頂点の追加または削除
−ルート集合Rの変更
例えば図2および3の例では、ページへのポインタを削除すること、またはページの属性を変更することは、グラフのエッジの変更に対応する。新しいページディレクトリ、新しいページテーブル、または新しいデータページを追加することは、頂点の追加または削除に対応する。記憶位置201(例えばレジスタCR3)にロードすることのできるベースアドレスを有する新しいページディレクトリを定義することは、ルート集合の変更に対応する。本質的に、現在状態は、アドレス変換によってどのメモリ位置にアクセスできる可能性があるかを定義する。
前述のように、ポリシーの下でソースからのアクセスが許容されないメモリ部分についてのどんな仮想アドレスもソースに露呈しないように、アドレス変換マップに対して制限条件を課すことによって、メモリへのアクセスを制御することができる。さらに、前述のように、条件の真偽に影響を与える可能性のある動作が実施されたとき、これらの条件が継続的に存在することを評価することができる。このメモリアクセス制御技法に対する考え方の1つは、ATMの正当な状態がSの何らかの部分集合Tに限定されること、または現在状態に関する何らかのプロパティ(または述語)Pが常に真でなければならないことである。
何らかのプロパティP(前述のポリシーPとは異なる)がある場合に、状態をsからr(s)に変更する可能性のあるアクション(何らかのiの場合のrの実行)を実施するための要求を評価して、P(r(s))が真であるかどうか、すなわち、rを実行することによって生じる新しい(提案)状態がプロパティPを有することになるかどうかを判定することができる。Pが真であることが、メモリアクセスに対する制限に違反しないことを意味する場合、P(r(s))が真であることは、rを実行することによって生じる状態変更を続行できるべきであることを意味する。そうでない場合は、この動作は続行できるべきではない。
あらゆるメモリ書込みはATMの状態を変更する可能性があることがわかるはずである。したがって、以下の2つのことがわかるはずである。
−アルゴリズムは、場合によっては頻繁に、P(s)を計算しなければならない。
−通常、新しい状態s’は古い状態sから派生する。古い状態がプロパティPを有していた場合は、P(s)を仮定し、s’を生み出したsに対する変更(有限数)がPの違反につながるかどうかを分析するだけで、P(s’)を決定する複雑さを低減することが可能な場合がある。
本発明は、Pの真偽を効率的に計算できるようにする技法を提供する。前述のように、多くの場合、この効率は、ATMの現在状態を表す何らかの情報を記憶(またはキャッシュ)することによって達成することができ、この情報を後で使用して、状態遷移の下におけるPの真偽を確認するためにどんなテストを実施する必要があるか、およびどのテストを回避することができるかを決定することができる。
例示的なプロパティの種類
プロパティPのタイプの1つは、頂点の集合で表すことができるプロパティである。例えば、図4に示すとともに上に論じた条件は、本質的に、集合MP(s)とNA(P,s)が相互に交差しないプロパティである。頂点の集合およびこれらの集合間の関係で表すことのできる多くのプロパティは、集合中の頂点の識別を記憶(またはキャッシュ)することによって効率的に実装することができる。
ATMの状態がメモリアクセス制御条件を満たす状態にあるかどうかを評価する際に有用な集合の例を、以下に挙げる。
1.ルート頂点から距離kにある頂点の集合。より正式には、頂点の集合をSとし、ある頂点をwとした場合、d(S,w)は、S中の何らかの頂点から頂点wまでに距離kの(有向)パスがあることのステートメントを表す。S={v∈V:d(S,v)}である。この場合、Sがルート頂点である場合、Sは、ルートから距離dにあるページの集合を指す。例えば、頂点502がグラフ500のルートである場合、ルート頂点から距離1にある頂点の集合は、頂点504および510からなる。というのは、これらの頂点はどちらも、1つのエッジを横断することによってルートから到達することができるからである。図2に示したページマップを参照すると、ページディレクトリ202は、ルートからの距離1であり、ページテーブル204(1)から204(3)は、ルートからの距離2である。したがって図2の例では、ページディレクトリおよびページテーブルのアドレスは、ルートからの距離がそれぞれ1および2であるページの識別を記憶することによって、キャッシュすることができる。
2.エッジラベルによって判定される集合。例えば図5を参照すると、ラベル「A」の付いた入エッジを有する頂点の集合は、頂点504および510からなり、ラベル「B」の付いた入エッジを有する頂点の集合は、頂点504、506、512からなる。図2のページマップでは、属性がエッジラベルに対応し、所与の属性を有するページとして集合を定義することができる。例えば、読取り専用としてマークされたページの集合を定義(およびキャッシュ)するのが有用なことがあるが、この場合、読取り専用ビット(図3に示した参照番号304)が「オン」になっているページの集合を定義することができる。(1つのページがページマップ中で複数回にわたって参照されることもあり得るが、その場合、ページへの異なる参照は、それらの読取り専用属性が個別にセットされているものとすることができる。この場合、集合の定義は競合を解決することができる。例えば、ページへの少なくとも1つの参照が読取り専用属性を有する場合や、ページへのあらゆる参照が読取り専用属性を有する場合などに、ページは集合に含まれる。)
ローカルプロパティと非ローカルプロパティとの間に区別を設けることができる。ローカルプロパティは、所与の頂点に入射するエッジから計算することができる。すなわち、頂点vがプロパティPを有するかどうかを、vに入射するエッジだけから決定することが可能な場合、Pはローカルであると言う。そうでない場合は、Pは非ローカルである。ローカルプロパティの例は、「読み書き可能とラベル付けされた入エッジを頂点が有する」である。非ローカルプロパティの例は、「ページ(x86マシン上の)が読み書き可能マッピングを有する」である。
3.何らかのプロパティを有するk個のエッジのターゲットである頂点の集合。より正式には、P、Qを述語とし、wを頂点として、以下のように定められる。
In−degP,Q(w)=|{v∈V:P(v)および(v,w,l)∈EおよびQ(l)}|
所与の入次数(in-degree)を有する頂点の集合として集合を定義することができる。
{v∈V:In−degP,Q(v)=k}
同様に、不等式に基づいて集合を定義することもできる。例えば、何らかのプロパティを有するk個よりも多い(または少ない)エッジのターゲットである頂点の集合を定義することができる。
例えば図5を参照すると、「C」のラベルが付いた少なくとも1つの入エッジを有する頂点の集合は、頂点508および512からなる。図2のページマップを参照すると、このタイプの集合定義を使用して、いくつかのカテゴリのページをキャッシュすることができる。例えば、複数のマッピングを有するページの集合や、ちょうど1つの読出し専用マッピングを有するページの集合などである。
4.同様の集合を、出次数(out-degree)に基づいて定義することもできる。すなわち、何らかのプロパティを備えるk個の出エッジ(またはk個よりも多い出エッジか、k個よりも少ない出エッジ)を有する頂点の集合である。例えば図5を参照すると、「A」のラベルが付いたちょうど2つの出エッジを有する頂点の集合は、頂点502からなる。図2も類似の例を含む。例えば、少なくとも3つの出エッジ(他のページへの参照)を有するページの集合は、ページディレクトリ202を含む。
これらの集合を、通常の集合演算(例えば和、共通部分、補集合、集合差)によって結合することができる。例えば、ルートから距離2にあるページの集合をSとすると、一定構成のx86CPUにおける読み書き可能マッピングを有するページの集合は、以下のように表すことができる。
({x:xはラージページ入エッジを有する}共通部分{x:xは読み書き可能入エッジを有する}共通部分S)和
({x:xはスモールページ入エッジを有する}共通部分{x:xは読み書き可能マッピングを有する}共通部分S
ナイーブなアルゴリズムで、あらゆる頂点vを通ってそれが集合に属するかどうかをテストすることによって、状態変更時ごとにこれらの集合を再計算することもできる。これは高価であろう。述べたタイプの集合で表すことのできる状態プロパティをアルゴリズムで計算する場合、以下に述べるようなキャッシング方式を利用することができる。
キャッシング方式
状態変更を効率的に評価する際に使用するためのデータをキャッシュするために、様々な方式を使用することができる。例示的なキャッシング方式について以下に述べる。
方式1:単純な集合キャッシング
この方式では、集合を明示的に計算して記憶(キャッシュ)する。その後の状態変更のたびに、アルゴリズムはキャッシュを更新する。一例では、以下のアクセス演算を公開するキャッシュを維持することができる。
−Init() 空集合など、何らかの明確な値にキャッシュを初期化する。
−Add(S) S(単一要素または要素集合)をキャッシュに加える。
−Remove(S) S(単一要素または要素集合)をキャッシュから削除する。
−ShowCache(S) 現在キャッシュされているすべての要素を返す。
キャッシュは追加のアクセス演算を公開することもできる(例えば効率を高めるために)。
このようなキャッシュを表す方法の1つは、ビットベクトルによる方法である。例えば、システムが216個のメモリ物理ページを有する場合、216ビット長(すなわち8キロバイト)のベクトルが、各ページごとのブール値を表すことができる。定義された集合中にn番目のページがあるかどうかに応じて、n番目のビットはオンとオフのどちらかをとる。したがって、定義されたページ集合について、1ページあたり1ビットのコストで集合中のメンバシップをキャッシュすることができる。このタイプの表現を使用すると、和や共通部分などの集合演算は、ビットごとの「OR」および「AND」演算子を使用して非常に単純に実施されることが理解されるであろう。
方式2:上位集合化、部分集合化
メモリアクセス制御を実施する基礎のアルゴリズムの詳細によっては、キャッシュが正確なターゲット集合を含む必要がない場合がある。例えば、ターゲット集合の何らかの上位集合または部分集合をキャッシュするだけで十分な場合がある。これにより、キャッシュを維持するコストを削減することができる。図3の例では、メモリアクセス制御条件は、MP(s)がNA(P,s)と交差しないことを要求する。しかし、NA(P,s)の正確なメンバを計算するのが不都合であるか実際的でない場合は、NA(P,s)の何らかの上位集合を計算してキャッシュし、次いで、MP(s)が、計算したNA(P,s)の上位集合と交差しないことを保証することが可能である。この技法では、通常なら許容できる何らかの状態変更を拒否することになる場合があるが、禁じるべき状態変更は許容しないことになる。これにより、メモリアクセス制御のための条件が保存される。
方式3:反転エッジ表現
通常、エッジはソース頂点に記憶されるか、またはソース頂点と共に記憶される。例えば図2では、ページディレクトリおよびページテーブルは、他のページへのポインタ、ならびにそれらの属性を記憶する。所与の頂点について、すべての出エッジのターゲットを見つけるのは、通常は容易である。同時に、すべての入エッジのソースを見つけるのは、通常は高くつく。頂点はその入エッジに関する情報を持たないので、すべての入エッジを見つけるには、すべてのエッジの全数探索が必要である。
アルゴリズムが頂点の入エッジ、または入エッジから得られる情報に素早くアクセスする必要がある場合は、各頂点の入エッジに関する情報を、頂点に何らかの形で関連するデータ構造に明示的に記憶するのが有利であろう。「何らかの形で関連する」という言葉は、所与の頂点についてデータ構造(例えばアレイルックアップ)を容易に見つけられることを意味する。
最も極端な場合では、データ構造はすべての入エッジを記憶する。この場合、データ構造は、上に定義したような、エッジを要素とするキャッシュとすることができる。(また、キャッシュは集合または多重集合を記憶することもできる。)この構造が占める記憶域は、頂点の入エッジの数に比例し、このタイプの構造がすべての頂点について維持される場合、総記憶域はグラフ中のエッジの数に比例する。
派生情報を記憶すれば十分なことが多く、その方が、必要な記憶域は少ない。例えば、アルゴリズムは、各頂点の入エッジの数だけを記憶することができる。この場合、キャッシュは参照カウンタとして実装することができる。参照カウンタは通常、以下のアクセス演算を公開する。
−Init() 0など、何らかの明確な値にキャッシュを初期化する。
−Increment()
−Decrement()
−GetValue()
参照カウンタ(または同様のデータ構造)の一般的な使用法の1つは、集合を構築することである。例えば、例示的なメモリアクセス制御アルゴリズムは、入エッジのない頂点の集合、すなわち参照カウントが0である頂点の集合を計算しなければならない場合がある。参照カウンタの集まりは、この集合のキャッシュ(方式1)を次のように制御することができる。すなわち、参照カウンタの値が変化したときは常に、アルゴリズムはそれが0になったかどうかをテストする。0になった場合は、頂点をキャッシュに加える。同様に、アルゴリズムは、0であった参照カウンタが別の値をとるイベントがあったかどうかも監視する。このイベントがあった場合、アルゴリズムは頂点をキャッシュから削除する。
以下は、いくつかのキャッシング使用例である。
− d=1,2,3について、Sの上位集合S’をキャッシュする。
− d=2,3について、キャッシュを(a)明示的に記憶するか、(b)参照カウンタによって駆動することができる。
− ローカルラベルプロパティ「読み書き可能入エッジを有する」および「ラージ/スモールページ入エッジを有する」を計算する。
− 非ローカルプロパティ「読み書き可能マッピングを有する」を計算する。
− S中の頂点の読み書き可能入エッジの数について、参照カウンタを使用する。この情報を使用して、非ローカルプロパティ「読み書き可能マッピングを有する」の計算を加速することができる。
記憶済み情報を使用した例示的なメモリアクセス制御プロセス
図6に、本明細書に述べた技法を使用した、メモリアクセス制御を実施するための例示的なプロセスを示す。
最初に、メモリにアクセスするための要求を受け取る(602)。アクセス要求が受け取られると、メモリアクセス制御システムが要求を評価して、メモリアクセスを統制するポリシーに要求の実行が適合するかどうかを判定する(604)。メモリアクセスポリシーの例は、上に論じたものである。一例としてポリシーは、ソースの集合に対していくつかのページを立入り禁止と定義することができ、ポリシーは、立入り禁止ページの1つに対して、このページへのアクセスを許可されていないソースの1つから見えるマッピングを生み出すことになるアクセス要求は、どれも禁止することができる。要求の評価は、記憶済みまたはキャッシュ済み情報(606)の助けを借りて行うことができる。この記憶済みまたはキャッシュ済み情報は、ページマップに関する情報、例えば正当なページディレクトリを含むことがわかっているページの集合を含むものとすることができる。
要求を実施してもポリシーとの適合が維持されると判定された場合(608)は、要求の続行を可能にする(612)。そうでない場合は、要求を阻止するか、ポリシーに違反しない形に修正する(610)。要求をポリシーに違反しない形に修正することの一例は、次のとおりである。要求が、ページテーブルにエントリを書き込むことを求めており、その結果として立入り禁止ページにマッピングすることになる場合は、この要求を修正して、エントリは書き込まれるが「存在」ビットはオフになるようにすることができる。このため、新たにマッピングされたページに以後アクセスしようとしても、例外が生成されることになり、したがって最終的には例外ハンドラが立入り禁止ページへのアクセスを妨げることができる。このように(または他の何らかのやり方で)要求を修正した場合、修正済み要求の続行を可能にする(614)。修正済みまたは未修正の要求が実施された後、要求の実施によってキャッシュ済み情報が変更される場合は、キャッシュを更新することができる(616)。
以上の例は単に説明のために提供したものであり、本発明を限定するものと考えるべきでは決してないことに留意されたい。本発明を様々な実施形態に関して述べたが、本明細書で使用した言葉は、限定の言葉ではなく記述および例示の言葉であることを理解されたい。さらに、本発明を特定の手段、材料、および実施形態に関して本明細書に述べたが、本発明は、本明細書に開示した詳細に限定されるものではない。そうではなく本発明は、添付の特許請求の範囲に含まれるものなど、機能的に均等なあらゆる構造、方法、および使用に及ぶ。本明細書の教示があれば、当業者なら、多くの修正を実施することができ、本発明の範囲および趣旨を逸脱することなくその態様に変更を加えることができる。
本発明を適用できる実施形態のコンピューティング環境のブロック図である。 本発明を適用できる実施形態のアドレス変換マップを介して仮想アドレス指定を実施するメモリシステムのブロック図である。 本発明を適用できる実施形態の属性を有する例示的なページテーブルのブロック図である。 本発明を適用できる実施形態のメモリアクセス制御を実施するのに使用できる条件を表す、2つの例示的な交差しない集合のブロック図である。 本発明を適用できる実施形態のアドレス変換マップを表す、ラベル付き有向グラフのブロック図である。 本発明を適用できる実施形態の例示的なメモリアクセス制御プロセスの流れ図である。
符号の説明
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 ローカルエリアネットワーク(LAN)
172 モデム
173 ワイドエリアネットワーク(WAN)
180 リモートコンピュータ
181 メモリ記憶デバイス
185 リモートアプリケーションプログラム
190 ビデオインタフェース
191 モニタ
195 出力周辺インタフェース
196 プリンタ
197 スピーカ
201 記憶位置
202 ページディレクトリ
204(1)、204(2)、204(3) ページテーブル
206(1)、206(2)、206(3)、206(4) ページ
210 仮想アドレス
211 ページディレクトリオフセット
212 ページテーブルオフセット
213 ページオフセット
220 メモリ管理ユニット(MMU)
301 第1のエントリ
302 アドレス
304 ページが「読取り専用」かどうかを示すビット
306 ページが「存在」するかどうかを示すビット
402 ソースsから見えるメモリ位置の集合MP(s)
404 ポリシーPの下でソースsからのアクセスが許可されないメモリ位置の集合NA(P,s)
500 グラフ
502、504、506、508、510、512 頂点
522、524、526、528、530、532、534 エッジ
550、552 頂点ではない要素

Claims (28)

  1. メモリアクセス要求を処理する方法を実施するためのコンピュータ実行可能命令を符号化したコンピュータ読み取り可能な記録媒体であって、前記方法は、
    メモリの一部にアクセスするための要求を受け取るステップであって、前記要求は、アドレス変換マップを介して変換可能な識別子によって、アクセスされる前記メモリの一部を識別する、受け取るステップと、
    前記アドレス変換マップに関するキャッシュ済み情報に基づいて、前記要求の実行が、前記メモリへのアクセスを制限するポリシーに違反することになるかどうかを判定するステップであって、前記キャッシュ済み情報は、前記アドレス変換マップの、所定のプロパティを有するページの集合を識別するデータを含む、判定するステップと、
    前記要求の実行が前記ポリシーに違反しない場合は、前記要求に従って前記メモリへのアクセスを可能にするステップと、
    前記要求の実行が前記ポリシーに違反する場合は、
    前記要求を阻止すること、または、
    前記要求を前記ポリシーに違反しないように修正して、前記修正した要求を実行すること
    のどちらかを実施するステップと
    を備え
    前記キャッシュ済み情報は、前記アドレス変換マップ中の、前記アドレス変換マップのルートから所定距離にあるページの集合を識別するデータを含む
    ことを特徴とするコンピュータ読み取り可能な記録媒体。
  2. 前記要求は、前記メモリの前記一部に書き込む要求を含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  3. 前記アドレス変換マップは前記メモリに記憶され、前記要求は、前記アドレス変換マップが記憶されたメモリの一部に書き込む要求を含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  4. 前記キャッシュ済み情報は、指定のページへの参照の数を示すデータを含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  5. 前記キャッシュ済み情報は、指定のページへの参照の数を示すデータを含み、前記参照は指定の属性を有する
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  6. 前記キャッシュ済み情報は、前記アドレス変換マップ中の指定のページが参照するページの数を示すデータを含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  7. 前記キャッシュ済み情報は、前記アドレス変換マップ中の指定のページが参照する、また、前記指定のページが指定の属性を割り当てるページの数を示すデータを含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  8. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記キャッシュ済み情報は、前記集合の適切な上位集合を含み、前記要求の実行が前記ポリシーに違反することになるかどうかを判定する前記動作は、前記ページが前記上位集合のメンバかどうかを評価することを含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  9. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記キャッシュ済み情報は、前記集合の適切な部分集合を含み、前記要求の実行が前記ポリシーに違反することになるかどうかを判定する前記動作は、前記ページが前記部分集合のメンバかどうかを評価することを含む
    ことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  10. アドレス変換マップを介してアクセスが提供されるコンピュータメモリを管理する方法であって、
    前記アドレス変換マップの状態の少なくとも1つの態様に関する情報を記憶するステップであって、前記記憶済み情報は、前記アドレス変換マップの、所定のプロパティを有するページの集合を識別するデータを含む、記憶するステップと、
    前記コンピュータメモリにアクセスするための要求を受け取るステップと、
    前記記憶済み情報に少なくとも部分的に基づいて、前記要求の実行が、前記コンピュータメモリへのアクセスを制限するポリシーに違反することにならないと判定するステップと、
    前記要求の実行を可能にするステップと、
    前記要求の実行から生じる前記アドレス変換マップの状態を反映するように、前記記憶済み情報を更新するステップと
    を備え
    前記記憶済み情報は、前記アドレス変換マップ中の、前記アドレス変換マップのルートから所定距離にあるページの集合を識別するデータを含む
    ことを特徴とする方法。
  11. 前記要求は、前記コンピュータメモリの一部に書き込む要求を含む
    ことを特徴とする請求項10に記載の方法。
  12. 前記アドレス変換マップは前記メモリに記憶され、前記要求は、前記アドレス変換マップが記憶されたメモリの一部に書き込む要求を含む
    ことを特徴とする請求項10に記載の方法。
  13. 前記記憶済み情報は、指定のページへの参照の数を示すデータを含む
    ことを特徴とする請求項10に記載の方法。
  14. 前記記憶済み情報は、指定のページへの参照の数を示すデータを含み、前記参照は指定の属性を有する
    ことを特徴とする請求項10に記載の方法。
  15. 前記記憶済み情報は、前記アドレス変換マップ中の指定のページが参照するページの数を示すデータを含む
    ことを特徴とする請求項10に記載の方法。
  16. 前記記憶済み情報は、前記アドレス変換マップ中の指定のページが参照する、また、前記指定のページが指定の属性を割り当てるページの数を示すデータを含む
    ことを特徴とする請求項10に記載の方法。
  17. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記記憶済み情報は、前記集合の適切な上位集合を含み、前記要求の実行が前記ポリシーに違反することにならないと判定する前記動作は、前記ページが前記上位集合のメンバかどうかを評価することを含む
    ことを特徴とする請求項10に記載の方法。
  18. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記記憶済み情報は、前記集合の適切な部分集合を含み、前記要求の実行が前記ポリシーに違反することにならないと判定する前記動作は、前記ページが前記部分集合のメンバかどうかを評価することを含む
    ことを特徴とする請求項10に記載の方法。
  19. アドレス変換マップによってアドレス指定されるメモリへのアクセスを制御するためのシステムであって、
    前記メモリへのアクセスを制限するポリシーを記憶する1つまたは複数の記憶位置と、
    前記アドレス変換マップに関する情報を記憶するキャッシュであって、前記キャッシュに記憶された情報は、前記アドレス変換マップの、所定のプロパティを有するページの集合を識別するデータを含む、キャッシュと、
    前記メモリにアクセスするための要求を受け取り、前記キャッシュに記憶された前記情報に少なくとも部分的に基づいて、前記要求が前記ポリシーの下で許可できるかどうかを判定する論理とを備え、
    前記論理は、前記要求が前記ポリシーの下で許可できると判定された場合は、前記要求の続行を可能にし、前記要求が前記ポリシーの下で許可できないと判定された場合は、(1)前記要求を阻止すること、または、(2)前記要求を前記ポリシーの下で許可できる形に修正して、前記修正した要求の続行を可能にすること、のどちらかを実施し、
    前記キャッシュに記憶された情報は、前記アドレス変換マップ中の、前記アドレス変換マップのルートから所定距離にあるページの集合を識別するデータを含む
    ことを特徴とするシステム。
  20. 前記要求は、前記メモリの一部に書き込む要求を含む
    ことを特徴とする請求項19に記載のシステム。
  21. 前記アドレス変換マップは前記メモリに記憶され、前記要求は、前記アドレス変換マップが記憶されたメモリの一部に書き込む要求を含む
    ことを特徴とする請求項19に記載のシステム。
  22. 前記キャッシュに記憶された情報は、指定のページへの参照の数を示すデータを含む
    ことを特徴とする請求項19に記載のシステム。
  23. 前記キャッシュに記憶された情報は、指定のページへの参照の数を示すデータを含み、前記参照は指定の属性を有する
    ことを特徴とする請求項19に記載のシステム。
  24. 前記キャッシュに記憶された情報は、前記アドレス変換マップ中の指定のページが参照するページの数を示すデータを含む
    ことを特徴とする請求項19に記載のシステム。
  25. 前記キャッシュに記憶された情報は、前記アドレス変換マップ中の指定のページが参照する、また、前記指定のページが指定の属性を割り当てるページの数を示すデータを含む
    ことを特徴とする請求項19に記載のシステム。
  26. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記キャッシュに記憶された情報は、前記集合の適切な上位集合を含み、前記論理は、前記ページが前記上位集合のメンバかどうかを評価することによって、前記要求を許可することが前記ポリシーに違反することになるかどうかを判定する
    ことを特徴とする請求項19に記載のシステム。
  27. 前記ポリシーへの適合は、集合中のページのメンバシップに基づいて判定され、前記キャッシュに記憶された情報は、前記集合の適切な部分集合を含み、前記論理は、前記ページが前記部分集合のメンバかどうかを評価することによって、前記要求を許可することが前記ポリシーに違反することになるかどうかを判定する
    ことを特徴とする請求項19に記載のシステム。
  28. 前記論理はハードウェアとソフトウェアのうちの少なくとも一方において実現される
    ことを特徴とする請求項19に記載のシステム。
JP2004134539A 2003-05-02 2004-04-28 最適化を用いたメモリアクセス制御の実装 Expired - Fee Related JP4672281B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US46734303P 2003-05-02 2003-05-02
US10/610,666 US7139892B2 (en) 2003-05-02 2003-06-30 Implementation of memory access control using optimizations

Publications (3)

Publication Number Publication Date
JP2004334870A JP2004334870A (ja) 2004-11-25
JP2004334870A5 JP2004334870A5 (ja) 2007-06-14
JP4672281B2 true JP4672281B2 (ja) 2011-04-20

Family

ID=32995081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004134539A Expired - Fee Related JP4672281B2 (ja) 2003-05-02 2004-04-28 最適化を用いたメモリアクセス制御の実装

Country Status (13)

Country Link
US (2) US7139892B2 (ja)
EP (1) EP1473616B1 (ja)
JP (1) JP4672281B2 (ja)
KR (1) KR101024819B1 (ja)
CN (1) CN100426262C (ja)
AU (1) AU2004201803B2 (ja)
BR (1) BRPI0401685A (ja)
CA (2) CA2465255A1 (ja)
MX (1) MXPA04004145A (ja)
MY (1) MY138723A (ja)
RU (1) RU2364932C2 (ja)
TW (1) TWI346287B (ja)
ZA (1) ZA200403291B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US20050183077A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation System and method for JIT memory footprint improvement for embedded java devices
US20050283770A1 (en) * 2004-06-18 2005-12-22 Karp Alan H Detecting memory address bounds violations
US7395422B2 (en) * 2005-04-13 2008-07-01 Hewlett-Packard Development Company, L.P. Method and system of changing a startup list of programs to determine whether computer system performance increases
US8301767B1 (en) * 2005-12-21 2012-10-30 Mcafee, Inc. System, method and computer program product for controlling network communications based on policy compliance
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
WO2007085122A1 (en) * 2006-01-26 2007-08-02 Intel Corporation Optimizing memory accesses for network applications using indexed register files
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US20080244262A1 (en) * 2007-03-30 2008-10-02 Intel Corporation Enhanced supplicant framework for wireless communications
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8462161B1 (en) 2009-01-20 2013-06-11 Kount Inc. System and method for fast component enumeration in graphs with implicit edges
CN101645054B (zh) * 2009-08-25 2011-07-13 中兴通讯股份有限公司 一种数据采集卡、数据采集卡的扩展控制系统及其方法
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
FR2980905B1 (fr) * 2011-09-29 2014-03-14 Continental Automotive France Procede d'effacement d'informations memorisees dans une memoire reinscriptible non volatile, support de memorisation et calculateur de vehicule automobile
US9342704B2 (en) * 2011-12-28 2016-05-17 Intel Corporation Allocating memory access control policies
US8937317B2 (en) 2012-12-28 2015-01-20 Avogy, Inc. Method and system for co-packaging gallium nitride electronics
US9324645B2 (en) 2013-05-23 2016-04-26 Avogy, Inc. Method and system for co-packaging vertical gallium nitride power devices
US9324809B2 (en) 2013-11-18 2016-04-26 Avogy, Inc. Method and system for interleaved boost converter with co-packaged gallium nitride power devices
US9652434B1 (en) * 2013-12-13 2017-05-16 Emc Corporation Modification indication implementation based on internal model
US9864691B1 (en) * 2013-12-13 2018-01-09 EMC IP Holding Company LLC Deletion indication implementation based on internal model
US9886301B2 (en) * 2015-05-04 2018-02-06 Strato Scale Ltd. Probabilistic deduplication-aware workload migration
US10303621B1 (en) * 2017-03-07 2019-05-28 Amazon Technologies, Inc. Data protection through address modification

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0256653A (ja) * 1988-08-23 1990-02-26 Toshiba Corp 階層化メモリ管理方式
JPH07319735A (ja) * 1994-05-26 1995-12-08 Sumitomo Metal Ind Ltd メモリの不正アクセス検出方法及びシステム
JP2000353127A (ja) * 1999-06-01 2000-12-19 Internatl Business Mach Corp <Ibm> 改善されたコンピュータ・メモリ・アドレス変換システム
US20020116590A1 (en) * 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
US20020144077A1 (en) * 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0481735A3 (en) * 1990-10-19 1993-01-13 Array Technology Corporation Address protection circuit
US5179441A (en) * 1991-12-18 1993-01-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Near real-time stereo vision system
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
CN1183841A (zh) * 1995-02-13 1998-06-03 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
JPH0973412A (ja) * 1995-06-30 1997-03-18 Toshiba Corp データ転送方法及びメモリ管理装置
US5729466A (en) * 1996-04-03 1998-03-17 Cadence Design Systems, Inc. Optimization multiple performance criteria by simulating the behavior of a constraint graph expanded by subgraphs derived from PWL convex cost functions
US5663891A (en) * 1996-04-03 1997-09-02 Cadence Design Systems, Inc. Optimization of multiple performance criteria of integrated circuits by expanding a constraint graph with subgraphs derived from multiple PWL convex cost functions
US5701460A (en) * 1996-05-23 1997-12-23 Microsoft Corporation Intelligent joining system for a relational database
US5991408A (en) * 1997-05-16 1999-11-23 Veridicom, Inc. Identification and security using biometric measurements
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6807537B1 (en) * 1997-12-04 2004-10-19 Microsoft Corporation Mixtures of Bayesian networks
US6271856B1 (en) * 1998-11-19 2001-08-07 Paraform, Inc. Creating and modifying parameterizations of surfaces
US6321314B1 (en) * 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US20020118207A1 (en) * 2000-12-22 2002-08-29 Nortel Networks Limited Method and apparatus for determining graph planarity
US6938138B2 (en) * 2001-01-11 2005-08-30 International Business Machines Corporation Method and apparatus for managing access to memory
US6836836B2 (en) * 2001-01-19 2004-12-28 Sony Corporation Memory protection control device and method
JP2002237142A (ja) * 2001-02-09 2002-08-23 Matsushita Electric Ind Co Ltd 磁気記憶媒体、そのトラックピッチ制御方法、その媒体のための磁気記録装置
AU2002252297A1 (en) * 2001-03-10 2002-09-24 Bioinformatics Dna Codes, Llc Methods and tools for nucleic acid sequence analysis selection and generation
US20030079103A1 (en) * 2001-10-24 2003-04-24 Morrow Michael W. Apparatus and method to perform address translation
US7388988B2 (en) * 2002-01-14 2008-06-17 Hewlett-Packard Development Company, L.P. Systems and methods for processing boundary information of a graphical object
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7139890B2 (en) * 2002-04-30 2006-11-21 Intel Corporation Methods and arrangements to interface memory
US6963959B2 (en) * 2002-10-31 2005-11-08 International Business Machines Corporation Storage system and method for reorganizing data to improve prefetch effectiveness and reduce seek distance
US6986017B2 (en) * 2003-04-24 2006-01-10 International Business Machines Corporation Buffer pre-registration
US7085909B2 (en) * 2003-04-29 2006-08-01 International Business Machines Corporation Method, system and computer program product for implementing copy-on-write of a file
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0256653A (ja) * 1988-08-23 1990-02-26 Toshiba Corp 階層化メモリ管理方式
JPH07319735A (ja) * 1994-05-26 1995-12-08 Sumitomo Metal Ind Ltd メモリの不正アクセス検出方法及びシステム
JP2000353127A (ja) * 1999-06-01 2000-12-19 Internatl Business Mach Corp <Ibm> 改善されたコンピュータ・メモリ・アドレス変換システム
US20020116590A1 (en) * 2001-02-20 2002-08-22 International Business Machines Corporation Method of managing memory
US20020144077A1 (en) * 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes

Also Published As

Publication number Publication date
TWI346287B (en) 2011-08-01
US20060265557A1 (en) 2006-11-23
KR20040094382A (ko) 2004-11-09
RU2004113567A (ru) 2005-10-27
MY138723A (en) 2009-07-31
US20040221126A1 (en) 2004-11-04
CA2712081A1 (en) 2004-11-02
EP1473616A3 (en) 2008-05-07
JP2004334870A (ja) 2004-11-25
BRPI0401685A (pt) 2005-01-18
US7605816B2 (en) 2009-10-20
RU2364932C2 (ru) 2009-08-20
KR101024819B1 (ko) 2011-03-31
CN100426262C (zh) 2008-10-15
EP1473616B1 (en) 2017-09-27
AU2004201803A1 (en) 2004-11-18
CA2465255A1 (en) 2004-11-02
MXPA04004145A (es) 2005-07-05
ZA200403291B (en) 2005-03-30
AU2004201803B2 (en) 2009-11-12
US7139892B2 (en) 2006-11-21
EP1473616A2 (en) 2004-11-03
CN1577295A (zh) 2005-02-09
TW200508862A (en) 2005-03-01

Similar Documents

Publication Publication Date Title
JP4672281B2 (ja) 最適化を用いたメモリアクセス制御の実装
US7650478B2 (en) Using limits on address translation to control access to an addressable entity
EP1528474B1 (en) Shadow page tables for address translation control
US7058768B2 (en) Memory isolation through address translation data edit control
US9075851B2 (en) Method and apparatus for data retention in a storage system
JP3944504B2 (ja) 変換索引バッファのレイジー・フラッシング
US7975117B2 (en) Enforcing isolation among plural operating systems
HUT67635A (en) Method and arrangement for preventing unauthorized access of the units of data in the storage blocks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070423

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100816

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110119

R150 Certificate of patent or registration of utility model

Ref document number: 4672281

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 3

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

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

LAPS Cancellation because of no payment of annual fees