(57)【要約】 【課題】  データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供すること。【解決手段】  データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードである。例示的な方法は、データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立するステップを含む。この部分は、第１の仮想メモリ・ページの全体よりも小さいものである。第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。【選択図】      図６
2008041088.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいてデータ構造を保護するコンピュータにより実施される方法であって、
前記データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立するステップであって、前記部分は前記第１の仮想メモリ・ページの全体より少ない、前記確立するステップと、
前記第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成するステップと
を含む方法。
【請求項２】
前記第１の仮想メモリ・ページ内の使用可能アドレス範囲の間に前記第１の保護アドレス範囲を確立するステップをさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記第１の仮想メモリ・ページの複数の付加的な部分内に複数の付加的な保護アドレス範囲を確立し、前記複数の付加的な保護アドレス範囲が、複数の使用可能アドレス範囲の間に交互配置されるようにするステップをさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項４】
第２の仮想メモリ・ページのサイズと等しくなるように前記第１の保護アドレス範囲のサイズを設定するステップをさらに含み、前記第２の仮想メモリ・ページの前記サイズは、前記第１の仮想メモリ・ページの前記サイズより小さい、請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記第１の保護アドレス範囲の前記サイズを設定する前記ステップは、アプリケーションによって実行される、請求項４に記載のコンピュータにより実施される方法。
【請求項６】
前記第１の保護アドレス範囲の第２のサイズを設定するステップをさらに含む、請求項５に記載のコンピュータにより実施される方法。
【請求項７】
第２の仮想メモリ・ページのサイズの倍数となるように前記第１の保護アドレス範囲のサイズを設定するステップをさらに含み、前記第２の仮想メモリ・ページの前記サイズは、前記第１の仮想メモリ・ページの前記サイズより小さい、請求項１に記載のコンピュータにより実施される方法。
【請求項８】
変換のために前記第１の仮想メモリ・ページ内にあるアドレスを提示するステップと、
前記アドレスが前記第１の保護アドレス範囲内にあることに応答して、前記格納例外信号を生成するステップと
をさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項９】
前記第１の保護アドレス範囲は保護帯域を含む、請求項１に記載にコンピュータにより実施される方法。
【請求項１０】
データ処理システムにおいてデータ構造を保護するためのコンピュータ使用可能プログラム・コードを有するコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
前記データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立するためのコンピュータ使用可能プログラム・コードであって、前記部分は前記第１の仮想メモリ・ページの全体より少ない、コンピュータ使用可能プログラム・コードと、
前記第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成するためのコンピュータ使用可能プログラム・コードと
を含む、コンピュータ・プログラム。
【請求項１１】
前記第１の仮想メモリ・ページ内の使用可能アドレス範囲の間に、前記第１の保護アドレス範囲を確立するためのコンピュータ使用可能プログラム・コードをさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
第２の仮想メモリ・ページのサイズと等しくなるように前記第１の保護アドレス範囲のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含み、前記第２の仮想メモリ・ページの前記サイズは、前記第１の仮想メモリ・ページの前記サイズより小さい、請求項１０に記載のコンピュータ・プログラム。
【請求項１３】
前記第１の保護アドレス範囲の前記サイズを設定するための前記コンピュータ使用可能プログラム・コードは、アプリケーションを含む、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記第１の保護アドレス範囲の第２のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
第２の仮想メモリ・ページのサイズの倍数になるように前記第１の保護アドレス範囲のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含み、前記第２の仮想メモリ・ページの前記サイズは、前記第１の保護アドレス範囲のサイズより小さい、請求項１０に記載のコンピュータ・プログラム。
【請求項１６】
変換のために前記第１の仮想メモリ・ページ内にあるアドレスを提示するためのコンピュータ使用可能プログラム・コードと、
前記アドレスが前記第１の保護アドレス範囲内にあることに応答して、格納例外信号を生成するためのコンピュータ使用可能プログラム・コードと
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１７】
プロセッサと、
前記プロセッサに接続されたバスと、
前記バスに接続され、１組の命令を含むコンピュータ・プログラムと
を備え、前記プロセッサは、
前記第１の仮想メモリ・ページの全体より少ない、前記データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレスを確立し、
前記第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成する、
ための前記命令の組を実行するように適合されている、データ処理システム。
【請求項１８】
前記プロセッサは、前記第１の仮想メモリ・ページ内の使用可能アドレス範囲の間に前記第１の保護アドレス範囲を確立するための前記命令の組を実行するようにさらに適合されている、請求項１７に記載のデータ処理システム。
【請求項１９】
前記プロセッサは、前記第１の保護アドレス範囲の前記サイズより小さい第２の仮想メモリ・ページのサイズと等しくなるように、前記第１の保護アドレス範囲のサイズを設定するための前記命令の組を実行するようにさらに適合されている、請求項１７に記載のデータ処理システム。
【請求項２０】
前記プロセッサは、アプリケーションを用いて、前記第１の保護アドレス範囲の前記サイズを設定するための前記命令の組を実行するようにさらに適合されている、請求項１９に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、改良されたデータ処理システムに関し、具体的には、大容量仮想メモリ・ページを管理することに関する。
【背景技術】
【０００２】
多重処理プロセッサ・アーキテクチャにおいては、プログラムを実行し、データを操作するために、物理メモリ及び仮想メモリが用いられる。物理メモリは、コンピュータ・チップ又はハードドライブ上にあるような、純粋に物理デバイスの形態のメモリを指す。ここで用いられる物理メモリは、主として、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなチップ・ベースのメモリを指すが、ハードドライブのような他の形態の物理メモリを指すこともできる。仮想メモリ又は仮想メモリ・アドレッシングは、非連続メモリが、連続メモリとしてソフトウェア・アプリケーションに提示される、マルチタスク式コンピュータ・オペレーティング・システムによって用いられるメモリ管理技術である。この連続メモリは、仮想アドレス空間と呼ばれる。仮想メモリにより、ソフトウェアが、そのサイズ及びアドレッシングが必ずしもコンピュータの物理メモリに結び付けられていないメモリ・アドレス空間において動作することが可能になる。このように、仮想メモリは、コンピュータの揮発性メモリ（ランダム・アクセス・メモリのような）内に含まれるデータの一部を、一時的にハードディスク上に格納することを可能にし、より多くのデータ及びプログラムが同時に動作することを可能にする。仮想メモリがなければ、コンピュータは、同時に多くのプログラムを動作させたり、又は多くのデータを保持したりすることができない。
【０００３】
幾つかのプロセッサ・アーキテクチャにおいては、物理メモリ及び仮想メモリの両方を、メモリ・ページとして知られるデータ構造に論理的に分割することができる。物理メモリ・ページは、物理メモリ内のメモリ・ページであり、仮想メモリ・ページは、仮想メモリ内のメモリ・ページである。いずれの種類のメモリ・ページも、これに関連付けられたページ・テーブル・エントリ（ＰＴＥ）を有する。ページ・テーブル・エントリは、仮想ページ番号を物理ページ番号にマッピングするのを可能にするデータを含む。ページ・テーブルは、ページ・テーブル・エントリの集まりである。ページ・テーブル・エントリは、プロセッサが、メモリ・ページが配置された場所を追跡することを可能にし、プロセッサは、必要に応じて又は要求に応じて、データにアクセスできるようになる。メモリ・ページ及びページ・テーブル・エントリの正確な構成及びコンテンツは、変わり得る。
【０００４】
幾つかのプロセッサ・アーキテクチャにおいては、仮想ページ番号と物理ページ番号の間の変換が、ページ・テーブル・エントリ内にも含まれる。これらのアーキテクチャにおいて、特定の仮想アドレスの変換が要求されると、プロセッサは、ページ・テーブルを検索する。
【０００５】
しかしながら、ページ・テーブル全体へのアクセス及び検索には、相対的に時間がかかることがある。したがって、ページ・テーブル・エントリをキャッシュ内に格納することが可能である。幾つかのプロセッサ・アーキテクチャにおいては、ページ・テーブル・エントリは、変換索引バッファ（translation lookaside buffer、ＴＬＢ）として知られるキャッシュ内に格納される。ページ・テーブル・エントリは、仮想メモリ・ページ毎に１つ割り当てられるので、ページ・サイズがより大きいほど、ページ・テーブル・エントリ毎に、より多くのデータを変換することが可能になる。「より大容量の」という用語は、多くの周知のより小容量のページ・サイズに対して、ページのメモリ・サイズを記述する相対的な用語である。「大容量の」ページ・サイズは、約千キロバイトより大きいサイズを有するものであるが、一般的に、「大容量の」ページは、１６メガバイト又はそれより大きいものである。「小容量の」又は「より小容量の」ページ・サイズは、約千キロバイトより小さいものであるが、一般的に、「小容量の」又は「より小容量の」ページ・サイズは、僅か数キロバイト又はそれより小さいものである。したがって、より大容量のページは、キャッシュ内で所望のページ・テーブル・エントリを首尾よく見つける可能性を高くすることによって、大量のデータにアクセスするというプログラムの性能上の利益を提供することができる。
【０００６】
さらに、特定のクラスのアプリケーションは、プロセッサの仮想アドレス空間における有効データ・ページの間に「保護ページ」を配置することから恩恵を受ける。プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページにより、プロセッサ格納例外を介して、アプリケーションに通知することが可能になる。保護ページの周知の用途は、データ・ストレージ装置において、重要なデータ構造を保護することである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
大容量のメモリ・ページを保護ページとして用いることもできる。しかしながら、実際には、保護されるデータ構造のために数キロバイトしか必要とせず、大容量のメモリ・ページが何メガバイトも消費することがあるので、大容量のメモリ・ページを保護ページとして用いない。言い換えれば、使用されるデータ・ページ上のデータ構造が小さくなる傾向があるので、大容量データ・ページの残りの部分が無駄になる。その結果、このクラスのアプリケーションを用いるとき、膨大なメモリが無駄になる。このため、小容量のメモリ・ページだけが保護ページとして用いられる。しかしながら、上述したように、小容量のメモリ・ページは、大容量のメモリ・ページの性能を有してはいない。
【課題を解決するための手段】
【０００８】
説明に役立つ例は、データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立するステップを含む。この部分は、第１の仮想メモリ・ページの全体よりも小さい。第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
【発明を実施するための最良の形態】
【０００９】
本発明の特性と考えられる新規な特徴が、特許請求の範囲に記載される。しかしながら、本発明自体、並びに、その好ましい使用形態、更なる目的及び利点は、添付図面と併せて読むとき、例証となる実施形態に関する以下の詳細な説明を参照することによって最も良く理解されるであろう。
【００１０】
ここで図面、特に図１を参照すると、例証となる実施形態を実装することができるデータ処理システムの図形的な表現が示される。システム・ユニット１０２と、ビデオ表示端末装置１０４と、キーボート１０６と、フロッピィ・ドライブ及び他のタイプの永続ストレージ媒体及び取り外し可能なストレージ媒体を含むことができるストレージ装置１０８と、マウス１１０とを含むコンピュータ１００が、示される。パーソナル・コンピュータ１００には、例えば、ジョイスティック、タッチパッド、タッチスクリーン、トラックボール、マイク等といった付加的な入力デバイスを含ませることもできる。コンピュータ１００は、ニューヨーク州アーモンク所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの製品である、ＩＢＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標および登録商標）ｅＳｅｒｖｅｒ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）コンピュータ、又はＩｎｔｅｌｌｉＳｔａｔｉｏｎ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標および登録商標）コンピュータのような、いずれかの好適なコンピュータとすることができる。示される図は、パーソナル・コンピュータを示しているが、ネットワーク・コンピュータのような他のタイプのデータ処理システムにおいて、他の実施形態を実装することができる。コンピュータ１００は、コンピュータ１００内で動作中のコンピュータ可読媒体に常駐しているシステム・ソフトウェアを用いて実装することができる、グラフィカル・ユーザ・インターフェース（ＧＵＩ）を含むことも好ましい。
【００１１】
ここで図２を参照すると、例証となる実施形態を実装することができるデータ処理システムのブロック図が示される。データ処理システム２００は、例証となる実施形態のためのプロセスを実施するコード又は命令を配置することができる、図１のコンピュータ１００のようなコンピュータの一例である。示される例においては、データ処理システム２００は、ノースブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウスブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＩＣＨ）２０４とを含むハブ・アーキテクチャを用いる。プロセッサ２０６、メイン・メモリ２０８及びグラフィックス・プロセッサ２１０は、ノースブリッジ及びメモリ・コントローラ・ハブ２０２に接続される。グラフィックス・プロセッサ２１０は、例えば、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を通してＭＣＨに連結することができる。
【００１２】
示される例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２が、サウスブリッジ及びＩ／Ｏコントローラ・ハブ２０４に接続されており、音声アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読み取り専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアルバス（ＵＳＢ）ポート及び他の通信ポート２３２、並びにＰＣＩ／ＰＣＩｅデバイス２３４が、バス２３８を通して、サウスブリッジ及びＩ／Ｏコントローラ・ハブ２０４に連結されており、ハードディスク・ドライブ（ＨＤＤ）２２６及びＣＤ−ＲＯＭドライブ２３０が、バス２４０を通して、サウスブリッジ及びＩ／Ｏコントローラ・ハブ２０４に連結される。ＰＣＩ／ＰＣＩｅデバイスは、例えば、イーサネット・アダプタ、アドイン・カード、及びノートパソコンのためのＰＣカードを含むことができる。ＰＣＩは、カード・バス・コントローラを用いるが、ＰＣＩｅはこれを用いない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）とすることができる。ハードディスク・ドライブ２２６及びＣＤ−ＲＯＭドライブ２３０は、例えば、ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）又はｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）インターフェースを用いることができる。スーパーＩ／Ｏ（ＳＩＯ）装置２３６をサウスブリッジ及びＩ／Ｏコントローラ・ハブ２０４に連結することもできる。
【００１３】
オペレーティング・システムは、プロセッサ２０６上で動作し、図２のデータ処理システム２００内の種々のコンポーネントを調整し、これらを制御する。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）  ＸＰのような市販のオペレーティング・システムとすることができる（Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは、米国、その他の国々、又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）。Ｊａｖａ（商標）プログラミング・システムのようなオブジェクト指向プログラミング・システムが、オペレーティング・システムとの組み合わせで実行することができ、データ処理システム２００上で実行されているＪａｖａプログラム又はアプリケーションからオペレーティング・システムへの呼び出しを行う（Ｊａｖａ及び全てのＪａｖａベースの商標は、米国、その他の国々、又はその両方におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標である）。
【００１４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムに対する命令は、ハードディスク・ドライブ２２６のようなストレージ装置上に配置され、プロセッサ２０６による実行のために、メイン・メモリ２０８内にロードすることができる。例証となる実施形態のプロセスは、例えば、メイン・メモリ２０８、読み取り専用メモリ２２４等のメモリ内に、或いは１つ又は複数の周辺機器内に配置することができるコンピュータにより実施される命令を用いて、プロセッサ２０６により実行することができる。
【００１５】
図１及び図２のハードウェアは、実施に応じて変えることができる。フラッシュメモリ、等価な不揮発性メモリ、或いは光ディスク・ドライブ等のような他の内部ハードウェア又は周辺機器を、図１及び図２に示されるハードウェアに加えて又はこれらの代わりに用いることができる。また、例証となる実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用することもできる。
【００１６】
幾つかの例示的な例においては、データ処理システム２００は、一般に、オペレーティング・システム・ファイル及び／又はユーザが生成したデータを格納するための不揮発性メモリを提供するように、フラッシュメモリを用いて構成されたパーソナル・デジタル・アシスタント（ＰＤＡ）としてもよい。バス・システムは、システム・バス、Ｉ／Ｏバス及びＰＣＩバスなどの１つ又は複数のバスから構成されてもよい。勿論、ファブリック又はアーキテクチャに接続された異なるコンポーネント又はデバイス間でデータを転送するいずれかのタイプの通信ファブリック又はアーキテクチャを用いて、バス・システムを実装することもできる。通信ユニットは、モデム又はネットワーク・アダプタなどの、データの送受信に用いられる１つ又は複数のデバイスを含むことができる。メモリは、例えば、ノースブリッジ及びメモリ・コントローラ・ハブ２０２内に見出されるようなメイン・メモリ２０８又はキャッシュとすることができる。処理ユニットは、１つ又は複数のプロセッサ又はＣＰＵを含むことができる。図１及び図２に示される例及び上述の例は、アーキテクチャ上の制限を意味するものではない。例えば、データ処理システム２００は、ＰＤＡの形態を取ることに加えて、タブレット型コンピュータ、ラップトップ型コンピュータ、又は電話装置とすることもできる。
【００１７】
示される実施形態は、ソース・コードをコンパイルするための、コンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。説明に役立つ例における方法は、図１に示されるデータ処理システム１００又は図２に示されるデータ処理システム２００のようなデータ処理システムにおいて実行することができる。
【００１８】
例証となる実施形態は、図１に示されるデータ処理システム１００又は図２に示されるデータ処理システム２００のようなデータ処理システムにおいてデータ構造を保護するための、コンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立することを含む。この部分は、第１の仮想メモリ・ページ全体よりも小さい。したがって、この部分は、第１の仮想メモリ・ページのサイズより小さいサイズを有する。第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
【００１９】
このように、仮想メモリ・ページは、保護帯域と使用可能帯域に分割されるので、アプリケーションは、保護ページの利益を得ると同時に、大容量のメモリ・ページを用いる利益を得ることもできる。以下により詳細に説明されるように、保護帯域は、メモリ・ページ内の保護アドレス範囲である。対照的に、プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページにより、プロセッサ格納例外を介して、アプリケーションに通知することが可能になる。したがって、保護帯域はメモリ・ページ内に存在するのに対して、保護ページはメモリ・ページ全体である。
【００２０】
図３は、例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。プロセッサ仮想アドレス空間３００は、データ処理システムのメモリ内に配置される。例えば、プロセッサ仮想アドレス空間３００は、図２のプロセッサ・ユニット２０６、メイン・メモリ２０８、又はハードディスク２２６内に存在することができ、それ自体が図１のデータ処理システム１００の表現である。
【００２１】
プロセッサ仮想アドレス空間３００は、仮想メモリ・ページ３０４、仮想メモリ・ページ３０８及び仮想メモリ・ページ３１２のような、１つ又は複数の仮想メモリ・ページを含む。背景技術において説明されたように、仮想メモリ・ページは、データ処理システム内の仮想メモリの論理パーティションである。仮想メモリは、非連続メモリが連続メモリとしてソフトウェア・アプリケーションに提示される、マルチタスク式コンピュータ・オペレーティング・システムによって用いられるメモリ管理技術である。
【００２２】
さらに、ページ・テーブル・エントリは、各仮想メモリ・ページの一部である。ページ・テーブル・エントリは、仮想ページ番号を物理ページ番号にマッピングすることを可能にするデータを含む。このように、ページ・テーブル・エントリ３０６は仮想メモリ・ページ３０４と関連付けられ、ページ・テーブル・エントリ３１０は仮想メモリ・ページ３０８と関連付けられ、ページ・テーブル・エントリ３１４は仮想メモリ・ページ３１２と関連付けられる。各々の種類のメモリ・ページが、ページ番号をページ・テーブル・エントリにマッピングするページ・テーブル・エントリ（ＰＴＥ）と関連付けられる。図３に示される矢印で示されるように、プロセッサは、ページ・テーブル・エントリのマッピングを介して異なる仮想メモリ・ページにアクセスすることができ、プロセッサは、別の仮想ページと関連して１つの仮想ページからデータにアクセスできるようになる。
【００２３】
ページ・テーブル３０２は、プロセッサ仮想アドレス空間３００とも関連付けられる。ページ・テーブル３０２は、ページ・テーブル・エントリの集まりである。ページ・テーブル３０２は、いずれかの簡便なメモリ位置に配置されたデータ構造内に格納することができる。ページ・テーブル・エントリは、プロセッサが、メモリ・ページが配置された場所を追跡することを可能にし、プロセッサは、必要に応じて又は要求に応じて、データにアクセスできるようになる。メモリ・ページ及びページ・テーブル・エントリの正確な構成及びコンテンツは、実施に応じて変わり得る。
【００２４】
この説明に役立つ例において、仮想ページ番号と物理ページ番号の間の変換は、ページ・テーブル・エントリ内に含まれる。したがって、特定の仮想アドレスについての変換が要求されると、プロセッサは、ページ・テーブル３０２を検索することができる。
【００２５】
しかしながら、ページ・テーブル全体へのアクセス及び検索には、相対的に時間がかかり得る。したがって、ページ・テーブル・エントリは、キャッシュ３１６のようなキャッシュ内に格納することができる。幾つかのプロセッサ・アーキテクチャにおいては、ページ・テーブル・エントリは、変換索引バッファ（ＴＬＢ）として知られるキャッシュ内に格納することができる。図３に示されるように、ページ・テーブル・エントリは、仮想メモリ・ページ毎に１つ割り当てられるので、ページ・サイズがより大きいほど、ページ・テーブル・エントリ毎に、より多くのデータを変換することが可能になる。したがって、より大容量のページは、キャッシュにおいて所望のページ・テーブル・エントリを首尾よく見つける可能性を高くすることによって、大量のデータにアクセスするというプログラムの性能上の利益を提供することができる。
【００２６】
「より大容量の」という用語は、多くの周知のより小容量のページ・サイズに対して、ページのメモリ・サイズを記述する相対的な用語である。「大容量の」ページ・サイズは、約千キロバイトより大きいサイズを有するものであるが、一般的に、「大容量の」ページは、１６メガバイト又はそれより大きいものである。「小容量の」又は「より小容量の」ページ・サイズは、約千キロバイトより小さいものであるが、一般的に、「小容量の」又は「より小容量の」ページ・サイズは、僅か数キロバイト又はそれより小さいものである。
【００２７】
図４は、例証となる実施形態による、仮想ページ番号を実ページ番号に変換する図を示すブロック図である。図４に示されるプロセスは、図３のプロセッサ仮想アドレス空間３００において実施することができ、図１のデータ処理システム１００又は図２のデータ処理システム２００において確立される。キャッシュ４０４は、図３のキャッシュ３１６に対応し、ページ・テーブル４０６は、図３のページ・テーブル３０２に対応する。
【００２８】
示される例示的な例においては、プロセッサは、所望の仮想メモリ・ページにアクセスするために、仮想ページ番号４００を実ページ番号４０２に変換するように命令される。プロセッサは、ページ・テーブル４０６又はキャッシュ４０４のいずれかを用いて、このタスクを達成することができる。ページ・テーブル４０６は、全ての仮想ページ番号及び全ての実ページ番号を含む、全てのページ・テーブル・エントリ及びページ番号の完全なリストを含む。プロセッサは、変換を行うために、常にページ・テーブル４０６を使用できなくてはならないが、ページ・テーブル４０６の検索に必要な時間が、希望するより長いことがある。
【００２９】
このため、データ処理システムに、キャッシュ４０４が与えられる。例示的な例においては、キャッシュ４０４は、変換索引バッファ（ＴＬＢ）として知られる。キャッシュ４０４は、最近用いられた全てのページ・テーブル・エントリを、よって、ページ番号を含む。他の例示的な例においては、キャッシュ４０４は、一般的なページ・テーブル・エントリ及びページ番号を含む。他の例示的な例においては、キャッシュ４０４は、選択されたページ・テーブル・エントリ及びページ番号を含む。更に他の例示的な例においては、キャッシュ４０４は、これらのタイプの情報の組み合わせを含むことができる。
【００３０】
いずれにせよ、キャッシュ４０４は、ページ・テーブル４０６より少ない、通常はずっと少ないページ・テーブル・エントリ及びページ番号を含む。その結果、プロセッサがキャッシュ４０４において仮想ページ番号４００及び実ページ番号４０２を見つけることができる場合には、変換を行うためにページ・テーブル４０６を用いる場合より、仮想ページ番号４００と実ページ番号４０２の間の変換が、すっと迅速に進むことができる。
【００３１】
図５は、例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。仮想アドレス空間５００は、図３に示される仮想アドレス空間３００と類似しているが、仮想アドレス空間５００は、保護ページの使用を示す。プロセッサ仮想アドレス空間５００は、図３に示されるプロセッサ仮想アドレス空間３００に対応する。同様に、図５のページ・テーブル５０２及びキャッシュ５１６は、図３のページ・テーブル３０２及びキャッシュ３１６に対応する。プロセッサは、ページ・テーブル５０２及びキャッシュ５１６を用いて、図４に示されるようなメモリ・アドレス変換を行う。
【００３２】
背景技術において説明されたように、幾つかのアプリケーションは、プロセッサの仮想アドレス空間内の有効なデータ・ページ間に「保護ページ」を配置することから恩恵を受ける。プログラムが、有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページが、プロセッサ格納例外を介して、アプリケーションに通知することを可能にする。保護ページの周知の用途は、データ・ストレージ装置において重要なデータ構造を保護することである。
【００３３】
図５に示される説明に役立つ例においては、保護仮想メモリ・ページ５０８が、データ仮想メモリ・ページ５０４とデータ仮想メモリ・ページ５１０との間に挿入される。同様に、保護仮想メモリ・ページ５１４が、データ仮想メモリ・ページ５１０と他の何らかの仮想メモリ・ページ（図示せず）との間に挿入される。データ仮想メモリ・ページ５０４及び５１０は、プロセッサ仮想アドレス空間５００を使用するアプリケーションに関連したデータを含む。データ仮想メモリ・ページ５０４は、ページ・テーブル・エントリ５０６を含み、データ仮想メモリ・ページ５１０は、ページ・テーブル・エントリ５１２を含む。このように、データ仮想メモリ・ページ５０４及びデータ仮想メモリ・ページ５１０は、図３の仮想メモリ・ページ３０４、３０８及び３１２と同じ構造を有する。
【００３４】
保護仮想メモリ・ページ５０８及び５１４は、そのアプリケーションが望ましくない方法でプロセッサ仮想アドレス空間５００にアクセスするのを防止する。説明に役立つ例においては、アプリケーションが有効ページを超えてメモリにアクセスしようと試みる場合には、保護仮想メモリ・ページ５０８及び保護仮想メモリ・ページ５１４がセットアップされ、保護仮想メモリ・ページ５０８又は保護仮想メモリ・ページ５１４にアクセスしようと試みるようになる。例においては、有効ページは、例えば、データ仮想メモリ・ページ５０４又はデータ仮想メモリ・ページ５１０とすることができる。しかしながら、アプリケーションは、保護仮想メモリ・ページにアクセスすることができない。このように、アプリケーションが有効な仮想メモリ・ページを超えてメモリにアクセスしようと試みる場合には、プロセッサは、格納例外信号をアプリケーションに送信する。次いで、アプリケーションは、そうした障害又はエラーを処理するようにアプリケーションがプログラムされたどのような方法でも、その障害又はエラーを処理する。このように、アプリケーションが、データ・ストレージ装置内の重要なデータ構造にアクセスするのを防止することができる。
【００３５】
保護仮想メモリ・ページ５０８及び５１４は、大容量仮想メモリ・ページとしても、又は小容量仮想メモリ・ページとしてもよい。大容量仮想メモリ・ページは、何メガバイトものデータまでのメモリ量を含むことができる。小容量仮想メモリ・ページは、１メガバイト未満のデータまでのメモリ量を含むことができる。図５に示される説明に役立つ例においては、保護仮想メモリ・ページ５０８及び保護仮想メモリ・ページ５１４の代わりに、小容量保護仮想メモリ・ページを使用することが知られている。しかしながら、この場合、データ仮想メモリ・ページ５０４及びデータ仮想メモリ・ページ５１０もまた、小容量仮想メモリ・ページである。保護仮想メモリ・ページによって保護されることが必要なデータ構造は、比較的小さく、多数である可能性が高いので、仮想メモリ・ページは、小容量仮想メモリ・ページである。「小容量の」という用語は、約数千キロバイト又はそれより容量が小さいメモリ・ページ又はデータ構造を指す。「小容量の」という用語はまた、上で定義されたような周知の「大容量の」メモリ・ページより容量が小さいデータ構造であるメモリ・ページを指すこともできる。
【００３６】
それにも関わらず、大容量のメモリ・ページを保護ページとして使用することも可能である。しかしながら、場合によっては、保護されるデータ構造のために数キロバイトしか必要とされず、大容量のメモリ・ページは何メガバイトも消費することがあるので、大容量のメモリ・ページは保護ページとして使用されない。言い換えると、使用されるデータ・ページのデータ構造は小さくなる傾向があるため、大容量のデータ・ページの残りの部分が無駄になる。その結果、このクラスのアプリケーションを用いるとき、膨大な量のメモリが無駄になる。このため、小容量のメモリ・ページだけが、保護ページとして用いられる。しかしながら、上述のように、小容量のメモリ・ページは、大容量のメモリ・ページの性能を有してはいない。
【００３７】
図６は、例証となる実施形態による、保護帯域が実装されるプロセッサ仮想アドレス空間の表現を示すブロック図である。プロセッサ仮想アドレス空間６００が、多数の仮想メモリ・ページを含み、かつ、ページ・テーブル及びキャッシュと関連付けられているという点で、プロセッサ仮想アドレス空間６００は、図３のプロセッサ仮想アドレス空間３００及び図５のプロセッサ仮想アドレス空間５００と類似している。
【００３８】
具体的には、プロセッサ仮想アドレス空間６００は、仮想メモリ・ページ６０４、仮想メモリ・ページ６０６及び仮想メモリ・ページ６０８を含むが、より多くの仮想メモリ・ページを含むことができる。同様に、プロセッサ仮想アドレス空間６００は、ページ・テーブル６０２及びキャッシュ６１４と関連付けられる。ページ・テーブル６０２は、図５のページ・テーブル５０２及び図３のページ・テーブル３０２と類似している。同様に、キャッシュ６１４は、図５のキャッシュ５１６及び図３のキャッシュ３１６と類似している。したがって、ページ・テーブル６０２及びキャッシュ６１４の動作は、図５に示される対応する動作に類似している。
【００３９】
しかしながら、図３及び図５に示される仮想メモリ・ページとは異なり、仮想メモリ・ページ６０４、６０６及び６０８の各々は、交互する使用可能なアドレス範囲と保護アドレス範囲からできた多数の領域にセグメント化されている。仮想メモリ・ページ内の使用可能アドレス範囲が、使用可能アドレス範囲６１０のような、図６の文字「Ｕ」で示される。使用可能アドレス範囲は、使用可能帯域と呼ぶこともできる。仮想メモリ・ページ内の保護アドレス範囲は、保護アドレス範囲６１２のような、図６の文字「Ｇ」で示される。保護アドレス範囲は、保護帯域と呼ぶこともできる。対照的に、プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページが、プロセッサ格納例外を介して、アプリケーションに通知することを可能にする。したがって、保護帯域はメモリ・ページ内に存在するのに対して、保護ページはメモリ・ページ全体である。
【００４０】
各使用可能アドレス範囲は、アプリケーションがアクセスできるデータを格納するための領域を提供する。しかしながら、アプリケーションが、保護アドレス範囲の１つにアクセスしようと試みる場合には、プロセッサは、格納例外信号をアプリケーションに送信する。アプリケーションは、アプリケーションのプログラミングに従って、例外又は障害を処理する。
【００４１】
図６に示される説明に役立つ例においては、仮想メモリ・ページ６０４、６０６及び６０８の各々は大容量仮想メモリ・ページであるが、それらを小容量仮想メモリ・ページとすることもできる。上述のように、仮想メモリ・ページ６０４、６０６及び６０８は大容量のものなので、データ処理システムは、大容量仮想メモリ・ページを使用する性能上の利点から恩恵を受ける。しかしながら、大容量仮想メモリ・ページ内の保護アドレス範囲は、アプリケーションが誤ってデータにアクセスするのを防止するので、プロセッサ仮想アドレス空間６００において保護仮想メモリ・ページが用いられていなくても、データ処理システムは、保護仮想メモリ・ページを使用する利益を得る。
【００４２】
帯域のサイズすなわちアドレス範囲のサイズが、典型的な小容量仮想メモリ・ページのサイズと同じになるように選択された場合には、アプリケーションは、保護帯域を有する大容量仮想メモリ・ページを、図５に示されるような小容量データ仮想メモリ・ページ及び保護仮想メモリ・ページのグループと区別することができない。したがって、アプリケーションは、図５の仮想アドレス空間の構成を用いる利益の全てを獲得し、図６に示されるような大容量仮想メモリ・ページを使用する利益の全ても獲得する。
【００４３】
他の説明に役立つ例においては、使用可能アドレス範囲及び保護アドレス範囲の帯域のサイズすなわちアドレス範囲のサイズは可変のものであり、アプリケーション又はユーザによる要求で、プロセッサにより設定することができる。メモリ管理システムを管理するオペレーティング・システム、又はソフトウェア、或いはハードウェアが、各大容量仮想メモリ・ページにおける使用可能なデータ・アドレス範囲及び保護アドレス範囲のサイズを構成することを、アプリケーションが要求する。対照的に、現在の保護仮想メモリ・ページは、利用可能なページ・サイズに制限される。したがって、大容量仮想メモリ・ページにおいて保護帯域を使用することにより、以前には存在しなかった柔軟性がアプリケーションに与えられる。
【００４４】
図７乃至図１１は、大容量仮想メモリ・ページにおいて保護帯域又は保護アドレス範囲を実装する方法を詳細に示す。図７は、例証となる実施形態による、有効アドレス表現を示すブロック図である。有効アドレスは、データ処理システムにおけるメモリ部分の相対的な位置を表す。例証となる実施形態においては、この部分のサイズは、メモリ自体のサイズより小さい。有効アドレスは、実メモリ・アドレス又は仮想メモリ・アドレスについてのアドレスとすることができる。図７に示される有効アドレスは、図３及び図５に関して記載されたような、仮想メモリ・ページと関連したページ・テーブル・エントリの一部として含ませることができる。
【００４５】
有効アドレス７００は、セグメント７０２、ページ番号７０４及びページ・オフセット７０６のような３つの部分を含むことができる。この説明に役立つ例においては、有効アドレス７００は、６４ビットのアドレスであるが、異なるサイズのものにすることもできる。セグメント７０２は、特定のメモリ位置のアドレス番号を含む。ページ番号７０４は、特定のメモリ位置と関連した仮想メモリ・ページに関するデータを含む。ページ・オフセット７０６は、特定のメモリ位置を追跡し、操作する際に使用する他の情報を含む。図４に関して記載されたようなキャッシュ又はページ・テーブルを用いて、プロセッサは、図７の有効アドレス７００を、図８に示される物理アドレス８００に変換する。
【００４６】
図８は、例証となる実施形態による、物理アドレスの表示に変換された、図７に示される有効アドレスのブロック図である。物理アドレス８００は、物理メモリ・システムにおけるメモリの特定部分の相対的な位置を表す。物理アドレス８００は、物理ページ・アドレス８０２及びページ・オフセット８０４を含む。物理ページ・アドレス８０２は、物理メモリの特定部分のアドレス番号を含む。ページ・オフセット８０４は、変換の際に変わらないので、ページ・オフセット８０４は、図７に示されるページ・オフセット７０６と同じである。
【００４７】
図９は、例証となる実施形態による、物理アドレスにおけるページ・オフセット表現を示すブロック図である。したがって、図９に示されるページ・オフセット９００は、図８のページ・オフセット８０４及び図７のページ・オフセット７０６に対応する。示される説明に役立つ例においては、仮想メモリ・ページは、１６メガバイトのサイズを有し、ページ・オフセット７０６は、このサイズの仮想メモリ・ページについての典型的な２４ビットのサイズを有する。したがって、図９は、ページ・オフセット９００において利用可能な２４ビットの各々を示し、ここで各ビットは、ビット０からビット２３まで表記される。セル９０２のような、任意の特定のセルは、１ビットである。
【００４８】
図１０は、例証となる実施形態による、物理アドレスにおけるページ・オフセット表現を示すブロック図である。ページ・オフセット１０００は、図９のページ・オフセット９００、図８のページ・オフセット８０４及び図７のページ・オフセット７０６に対応する。しかしながら、セル１００２内のビット（セル１２）は、１の値を有するように設定される。セル１００２の値は１又は０にしかすることができないので、１の値は「真」と呼ぶことができる。したがって、０の値は「偽」と呼ぶことができる。
【００４９】
この説明に役立つ例においては、有効アドレス７００は、使用可能アドレス範囲上か、又は保護アドレス範囲上のいずれかにある。プロセッサは、ビットマスクを用いて、有効アドレス７００が使用可能アドレス範囲上にあるか又は保護アドレス範囲上にあるかを判断することができる。
【００５０】
ビットマスクは、演算と共に、他の場所に格納された情報を抽出するために用いられる何らかのデータである。ビットマスクを用いて、例えば、２進列又は２進数における特定のビットの状態を抽出することができる。例えば、２進列１００１１１０１０において、ユーザが、最上位のビットから数えて５番目のビットの状態を抽出することを望む。００００１００００のようなビットマスクは、「ＡＮＤ」演算子と共に用いることができる。１「ＡＮＤ」１＝１であり、１「ＡＮＤ」０は０であることを想起すると、第５のビットの状態を判断することができる。この場合、ビットマスクは、第１の２進列における第５のビットの値を抽出し、その値は数「１」である。
【００５１】
説明に役立つ例を続けると、プロセッサは、保護ビットマスクと呼ぶことができるビットマスクを用いて、ページ・オフセット９００内のセル１００２の状態を判断する。セル１００２が「真」である場合、すなわち「１」の値を有する場合、有効アドレス７００が使用可能アドレスとなるように、保護ビットマスク及びページ・オフセット９００が選択され、設計される。例えば、プロセッサは、「ＡＮＤ」演算を用いて、ページ・オフセット９００を保護ビットマスクと比較する。比較の結果が、「真」の値を有するセル１００２をもたらす場合には、アドレス７００は、使用可能範囲内にある。しかしながら、比較の結果が、「偽」すなわち「０」の値を有するセル１００２をもたらす場合には、アドレス範囲は、保護アドレス範囲内にある。この場合、プロセッサは、格納例外をアプリケーションに送り、保護アドレス範囲内にアクセスしようと試みる。
【００５２】
図１１は、例証となる実施形態による、使用可能帯域と保護帯域にセグメント化された大容量の仮想ページのブロック図である。大容量仮想メモリ・ページ１１００は、帯域１１０２及び帯域１１０４のような多数の帯域を含む。各帯域は、大容量仮想メモリ・ページ１１００内のメモリの部分を表す。例証となる実施形態において、部分のサイズは、仮想メモリ・ページ１１００のサイズより小さい。各帯域は、図７に示される有効アドレス７００のような、１つ又は複数の有効アドレスと関連付けられた。示される例証となる例においては、大容量仮想メモリ・ページ１１００は、交互する使用可能帯域と保護帯域に分割される。例えば、帯域１１０２は使用可能帯域であり、帯域１００４は保護帯域である。
【００５３】
アプリケーションがアクセスしようと試みるアドレスを用いて「ＡＮＤ」演算を実行することにより、大容量仮想メモリ・ページ１１００を、示されるような使用可能帯域と保護帯域に分割することができる。各アドレスのページ・オフセットが使用可能帯域にある場合には、アプリケーションは、対応するメモリの部分にアクセスすることができる。他方、上述のように、アドレスのページ・オフセットが保護帯域にある場合には、プロセッサが、格納例外信号を送信する。このように、大容量仮想メモリ・ページ１１００を、示されるような保護帯域と仮想帯域に分割することができる。同様に、図６に示される大容量仮想メモリ・ページ６０４、６０６、６０８、並びに、図３及び図５に示される大容量仮想メモリ・ページも、保護帯域と使用可能帯域に分割することができる。
【００５４】
異なるように説明すると、帯域に関する情報をアドレスのセグメント・レベルに格納し、有効アドレスから実アドレスへのマッピングを生成する機構に伝搬することができる。保護帯域にある有効アドレスが変換のために提示された場合には、その有効アドレスは、「ＡＮＤ」演算を用いて、保護ビットマスクと比較される。保護ビットマスク内に単一のビットが存在する。比較の結果が「真」である場合には、格納例外が生成され、そのメモリ領域にアクセスしようとしているアプリケーションに伝達される。比較の結果が「偽」である場合には、そのアドレスは使用可能帯域内にあり、アプリケーションは、有効アドレスに対応するメモリの部分にアクセスすることができる。
【００５５】
有効アドレスのページ・オフセットにおいて選択された特定のビットは、所望のサイズの保護帯域及び使用可能帯域を設定する。したがって、大容量仮想メモリ・ページ内の保護帯域及び使用可能帯域のサイズは、保護帯域特性を用いて、ユーザ、プロセッサ、オペレーティング・システム、又はアプリケーションによって変更し、変えることができる。例えば、４キロバイトの帯域サイズを所望する場合には、保護ビットマスク内のビット１２は、「１」の値を有するように設定される。
【００５６】
帯域が保護帯域であるか又は使用可能帯域であるかを判断する方法は、上述された方法とは変わり得る。この判断を行うための別の説明に役立つ例は、ビットマスクを用いて全てのアクセスをメモリと比較し、比較する直前にビットマスクを設定することである。別の説明に役立つ例は、周知の保護帯域においてビットマスク比較を行うことである。
【００５７】
説明に役立つ例においては、保護帯域のサイズは、従来の小容量のメモリ・ページの倍数に等しいサイズに制限される。保護帯域のアドレス範囲にアクセスできなくても、仮想メモリ・ページは、物理メモリにおいて連続している。したがって、メモリは、保護帯域のアドレス範囲において無駄になる。しかしながら、保護帯域のサイズが、既存の小容量仮想メモリ・ページのサイズの倍数である場合には、他の場合には無駄になる物理メモリを、より小容量の仮想メモリ・ページとしてマッピングすることができる。このように、保護帯域のサイズが小容量のメモリ・ページのサイズの整数倍である場合には、付加的なメモリの無駄は生じない。
【００５８】
図１２は、例証としての実施形態による、データ処理システムにおけるメモリ・アクセスを示すフローチャートである。図１２に示されるプロセスは、図１のデータ処理システム１００及び図２のデータ処理システム２００のような、データ処理システムにおいて実施することができる。図１２に示されるプロセスはまた、図５に示されるプロセッサ仮想アドレス空間５００のような、保護仮想メモリ・ページを有するプロセッサ仮想アドレス空間に対しても実施することができる。さらに、実ページ番号への仮想ページ番号の変換は、図４に説明されるように達成することができる。図２のプロセッサ２０６のようなプロセッサが、変換を行うこともできる。
【００５９】
プロセスは、ソフトウェア・アプリケーションが、特定の有効アドレスに配置されたメモリの部分からデータのロードを開始しようと試みるときに始まる（ステップ１２０２）。プロセッサは、仮想アドレスである有効アドレスを物理アドレスに変換し始める（ステップ１２０４）。その変換プロセスの一部として、プロセッサは、有効アドレス及び物理アドレスについてのページ・テーブル・エントリを見つける（ステップ１２０６）。
【００６０】
次いで、プロセッサは、保護ページ・ビットについてのエントリが存在するかどうかを判断する（ステップ１２０８）。保護ページ・ビットについてのエントリが存在しないという判断に応答して、プロセッサは、仮想アドレスから物理アドレスへの変換を完了する（ステップ１２１０）。次いで、ソフトウェア・アプリケーションは、物理アドレス内のメモリの部分にアクセスし（ステップ１２１２）、その後、プロセスは終了する。
【００６１】
保護ページ・ビットについてのエントリが存在するという判断に応答して、プロセッサは、有効アドレスを保護レジスタと比較する（ステップ１２１４）。比較が「真」の結果を有する場合には、アクセスされた仮想メモリ・ページは、使用可能な仮想メモリ・ページである。その結果、プロセスは、上述されたようなステップ１２１０及び１２１２に続く。
【００６２】
これに対して、ステップ１２１４における比較が「偽」の結果を有する場合には、プロセッサは格納例外を生成し、仮想メモリ・ページにアクセスしようと試みているソフトウェア・アプリケーションに、例外信号すなわちページ・フォールト信号を送信する（ステップ１２１６）。その時点で、ソフトウェア・アプリケーションは、そのプログラミングに応じてページ・フォールトを処理し（ステップ１２１８）、その後、プロセスは終了する。
【００６３】
図１３は、例証としての実施形態による、保護帯域を用いるデータ処理システムにおけるメモリ・アクセスを示すフローチャートである。図１３に示されるプロセスは、図１のデータ処理システム１００及び図２のデータ処理システム２００などのデータ処理システムにおいて実施することができる。図１３に示されるプロセスはまた、図６に示されるプロセッサ仮想アドレス空間６００又は図３に示されるプロセッサ仮想アドレス空間３００のようなプロセッサ仮想アドレス空間に対して実施することもできる。さらに、実ページ番号への仮想ページ番号の変換は、図４に説明されるように達成することができる。図２のプロセッサ２０６のようなプロセッサが変換を行うこともできる。したがって、図１３は、図６に関して記載されたような、保護帯域を用いる方法を表す。図１３に示されるプロセスは、種々のプロセッサ・アーキテクチャに適用可能である。
【００６４】
プロセスは、図１２のプロセスと同じように始まる。最初に、ソフトウェア・アプリケーションは、特定の有効アドレスに配置されたメモリの部分からデータのロードを開始しようと試みる（ステップ１３００）。しかしながら、次に、プロセッサは、その有効アドレスについて有効アドレスから実アドレスへのマッピング（ＥＲＡＴ）が存在するかどうかを判断する（ステップ１３０２）。その有効アドレスについて有効アドレスから実アドレスへのマッピングが存在するという判断に応答して、ページ・テーブル・エントリにおいて保護ビットが設定されているかどうかについての判断が行われる（ステップ１３０４）。ページ・テーブル・エントリにおいて保護ビットが設定されていない場合には、プロセッサは、アプリケーションが、物理アドレスにおけるメモリの部分へのアクセスを開始するのを可能にする（ステップ１３１４）。
【００６５】
しかしながら、ページ・テーブル・エントリにおいて保護ビットが設定されている場合には、プロセッサは、保護ビットマスクを用いて、ページ・オフセットを、有効アドレスのページ・オフセットと比較する（ステップ１３１６）。比較の結果が「真」である場合には、プロセッサは、その保護ビット状態についての有効アドレスから実アドレスへのマッピング設定をロードする（ステップ１３１２）。その後、プロセッサは、ソフトウェア・アプリケーションが、メモリの部分へのアクセスを開始するのを可能にし（ステップ１３１４）、その後、プロセスは終了する。
【００６６】
ステップ１３１６に戻ると、保護ビットマスクを用いるページ・オフセットの比較結果が「偽」であった場合には、プロセッサは、格納例外すなわちページ・フォールトを生成し、格納例外が生成されたという信号をアプリケーションに送信する（ステップ１３１８）。ソフトウェア・アプリケーションは、プログラミングに応じて、ページ・フォールトを処理し（ステップ１３２０）、その後、プロセスは終了する。
【００６７】
ステップ１３０２に戻ると、プロセッサが、その有効アドレスについての有効アドレスから実アドレスへのマッピングが存在しないと判断した場合には、プロセッサは、有効アドレスすなわち仮想アドレスから物理アドレスへの変換を始める（ステップ１３０６）。次いで、プロセッサは、ページ・テーブル・エントリを探して物理アドレスを検索する（ステップ１３０８）。次いで、プロセッサは、有効アドレスについて、ページ・テーブル・エントリにおいて保護ビットが設定されているかどうかについての判断を行う（ステップ１３１０）。
【００６８】
ページ・テーブル・エントリにおいて保護ビットが設定されていない場合には、プロセッサは、保護ビットの状態についての有効アドレスから実アドレスへのマッピング設定をロードする（ステップ１３１２）。その後、プロセッサは、ソフトウェア・アプリケーションが、物理アドレスと関連したメモリの部分にアクセスすることを可能にし（ステップ１３１４）、その後、プロセスは終了する。
【００６９】
他方、ステップ１３１０において、ページ・テーブル・エントリにおいて保護ビットが設定された場合には、プロセッサは、保護ビットマスクを用いて、ページ・オフセットを有効アドレスのページ・オフセットと比較する（ステップ１３１６）。比較の結果が「真」である場合には、プロセッサは、その保護ビットの状態についての有効アドレスから実アドレスへのマッピング設定をロードする（ステップ１３１２）。その後、プロセッサは、ソフトウェア・アプリケーションが、メモリの部分へのアクセスを始めることを可能にし（ステップ１３１４）、その後、プロセスは終了する。
【００７０】
しかしながら、ステップ１３１６において、保護ビットマスクを用いるページ・オフセットの比較の結果が「偽」であった場合には、プロセッサは、格納例外すなわちページ・フォールトを生成し、格納例外が生成されたという信号をアプリケーションに送信する（ステップ１３１８）。ソフトウェア・アプリケーションは、プログラミングに応じてページ・フォールトを処理し（ステップ１３２０）、その後、プロセスは終了する。
【００７１】
図１４は、例証としての実施形態による、仮想メモリ・ページにおける保護アドレス範囲の確立及び使用を示すフローチャートである。図１４に示されるプロセスは、図１のデータ処理システム１００及び図２のデータ処理システム２００などのデータ処理システムにおいて実施することができる。図１４に示されるプロセスは、図６に示されるプロセッサ仮想アドレス空間６００又は図３に示されるプロセッサ仮想アドレス空間３００のようなプロセッサ仮想アドレス空間に対して実施することもできる。図２のプロセッサ２０６のようなプロセッサが変換を行うこともできる。さらに、実ページ番号への仮想ページ番号の変換は、図４に説明されたように達成することができる。
【００７２】
プロセッサ、アプリケーション、又はユーザが、仮想メモリ・ページ内に保護アドレス範囲を確立するときに、プロセスが始まる（ステップ１４００）。アプリケーション、プロセッサ、又は他のソフトウェア、或いはハードウェアが、後でその保護アドレス範囲にアクセスしようと試みる場合には、試みに応答して、プロセッサが、格納例外信号を生成する（ステップ１４０２）。プロセッサは、格納例外信号を、アプリケーション、又はその保護アドレス範囲にアクセスしようと試みているハードウェアに伝送することができる。アプリケーションはそのプログラミングに応じて格納例外を処理し、ハードウェアはその設計に応じて格納例外を処理する。後に、所望であれば、プロセッサ、アプリケーション、又はユーザは、新しいサイズの保護アドレス範囲を設定すべきかどうかを判断する（ステップ１４０４）。この判断は、ユーザの要求、又は必要性、或いはアプリケーションの好ましい動作モードに応じて行われる。新しいサイズの保護アドレス範囲が設定された場合には、プロセスは、ステップ１４００に戻る。
【００７３】
他方、保護アドレス範囲についての新しいサイズが設定されない場合には、プロセッサは、変換のために、仮想メモリ・ページ内にあるアドレスを提示する（ステップ１４０６）。アドレスが保護アドレス範囲内にある場合には、プロセッサは、格納例外信号を生成する（ステップ１４０８）。
【００７４】
次いで、プロセッサは、変換のために付加的なアドレスを提示するかどうかを判断する（ステップ１４１０）。付加的なアドレスが変換されるべきでない場合には、プロセスは終了する。他方、変換されるべき別のアドレスがある場合には、プロセッサ、アプリケーション、又はユーザは、保護アドレス範囲のサイズを再確立又は変更するかどうかを判断する（ステップ１４１２）。保護アドレス範囲のサイズが再確立又は変更される場合には、プロセスはステップ１４００に戻り、繰り返す。他の場合には、保護アドレス範囲のサイズは再確立又は変更されない場合には、プロセスはステップ１４０６に戻り、そこで、プロセッサは、変換のために、仮想メモリ・ページ内のアドレスを提示する。次いで、ステップ１４１０において、プロセスは、最終的に変換のために付加的なアドレスが提示されなくなるまで繰り返し続け、そこでプロセスは終了する。
【００７５】
ここに記載される例証としての実施形態は、データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第１の仮想メモリ・ページの部分内に第１の保護アドレス範囲を確立するステップを含む。この部分のサイズは、第１の仮想メモリ・ページ全体よりも小さい。第１の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
【００７６】
ここに記載される例証としての実施形態は、プロセッサ仮想アドレス空間において保護機能を実施する周知の方法に優る幾つかの利点を有する。例えば、仮想メモリ・ページを保護帯域と使用可能帯域に分割することにより、アプリケーションは、保護仮想メモリ・ページの利益を獲得し、同時に大容量のメモリ・ページを用いる利益を獲得することもできる。言い換えれば、アプリケーションは、プロセッサ仮想アドレス空間において保護仮想メモリ・ページが用いられない場合でも、保護仮想メモリ・ページの利益を獲得することができる。
【００７７】
本発明、全体がハードウェアの実施形態、全体がソフトウェアの実施形態、又は、ハードウェア要素とソフトウェア要素の両方を含む実施形態の形式を取ることができる。好ましい実施形態においては、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されるものではないソフトウェアに実装される。
【００７８】
さらに、本発明は、コンピュータ又はいずれかの命令実行システムによって、又はこれらと接続して、用いるためのプログラム・コードを提供するコンピュータ・プログラム又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形態を取ることができる。この説明のために、コンピュータ可読媒体は、命令実行システム、機器又は装置によって、或いはこれらと接続して、用いるためのプログラムを含み、格納し、通信し、伝搬し、又は転送することが可能ないずれかの有形の装置とすることができる。
【００７９】
媒体は、電子システム、磁気システム、光学システム、電磁気システム、赤外線システム、若しくは半導体システム（又は機器若しくは装置）、又は伝搬媒体とすることができる。コンピュータ可読媒体の例は、半導体メモリ又は固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、磁気ハードディスク及び光ディスクを含む。現時点における光ディスクの例は、コンパクトディスク−読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−読み取り／書き込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤを含む。
【００８０】
プログラム・コードを格納及び／又は実行するのに適したデータ処理システムは、システム・バスを通してメモリ要素に直接的に又は間接的に接続された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行時に使用されるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得しなければならない回数を減少させるように少なくとも幾つかのプログラム・コードの一時的な記憶場所を提供するキャッシュ・メモリと、を含むことができる。
【００８１】
入力／出力（Ｉ／Ｏ）装置（キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されるものではない）は、直接的に、又は介在するＩ／Ｏコントローラを通して、システムに接続することができる。
【００８２】
データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、データ処理システムを、他のデータ処理システム又は遠隔プリンタ若しくはストレージ装置に接続できるように、ネットワーク・アダプタをシステムに接続することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現時点で利用可能なごくわずかなタイプのネットワーク・アダプタである。
【００８３】
本発明の説明は、例示及び説明の目的で提示されたものであり、網羅的であること又は開示された形式の発明に限定することを意図するものではない。当業者であれば、多くの修正及び変形が明らかであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明するように、及び、当業者以外であっても、考えられる特定の用途に適合するような様々な修正を伴う様々な実施形態について本発明を理解できるように、選択され、説明されたものである。
【図面の簡単な説明】
【００８４】
【図１】例証となる実施形態の態様を実施することができる、データ処理システムの図形表示である。
【図２】例証となる実施形態の態様を実施することができる、データ処理システムのブロック図である。
【図３】例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。
【図４】例証となる実施形態による、実ページ番号への仮想ページ番号の変換の表現を示すブロック図である。
【図５】例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。
【図６】例証となる実施形態による、保護帯域が実装されるプロセッサ仮想アドレス空間の表現を示すブロック図である。
【図７】例証となる実施形態による、有効アドレス表現を示すブロック図である。
【図８】例証となる実施形態による、物理アドレス表現に変換された図７の有効アドレスのブロック図である。
【図９】例証となる実施形態による、物理アドレスにおけるページ・オフセット表現のブロック図である。
【図１０】例証となる実施形態による、物理アドレスにおけるページ・オフセット表現のブロック図である。
【図１１】例証となる実施形態による、使用可能帯域と保護帯域にセグメント化された大容量仮想ページのブロック図である。
【図１２】例証となる実施形態による、データ処理システムにおけるメモリ・アクセスを示すフローチャートである。
【図１３】例証となる実施形態による、保護帯域を用いるデータ処理システムにおけるメモリ・アクセスを示すフローチャートである。
【図１４】例証となる実施形態による、仮想メモリ・ページにおける保護アドレス範囲の確立及び使用を示すフローチャートである。
【符号の説明】
【００８５】
１００、２００：データ処理システム
３００、５００、６００：プロセッサ仮想アドレス空間
３０２、４０６、５０２、６０２：ページ・テーブル
３０４、３０８、３１２、６０４、６０６、６０８、１１００：仮想メモリ・ページ
３０６、３１０、３１４、５０６、５１２：ページ・テーブル・エントリ
３１６、４０４、５１６、６１４：キャッシュ
５０４、５１０：データ仮想メモリ・ページ
５０８、５１４：保護仮想メモリ・ページ
６００：プロセッサ仮想アドレス空間
６１０：使用可能アドレス範囲
６１２：保護アドレス範囲
７００：有効アドレス
７０６、８０４、９００、１０００：ページ・オフセット
８００：物理アドレス
【図１】
2008041088.tif 000003
【図２】
2008041088.tif 000004
【図３】
2008041088.tif 000005
【図４】
2008041088.tif 000006
【図５】
2008041088.tif 000007
【図６】
2008041088.tif 000008
【図７】
2008041088.tif 000009
【図８】
2008041088.tif 000010
【図９】
2008041088.tif 000011
【図１０】
2008041088.tif 000012
【図１１】
2008041088.tif 000013
【図１２】
2008041088.tif 000014
【図１３】
2008041088.tif 000015
【図１４】
2008041088.tif 000016