(57)【特許請求の範囲】
【請求項１】
ａ．仮想アドレス空間における複数の仮想アドレス、
ｂ．各ページが１個以上の物理アドレスの領域を含む複数のページ、及び
ｃ．物理アドレスの前記領域と仮想アドレスとを関連付けることにより、複数の仮想アドレスと複数の物理アドレスとを関連付ける装置を含み、
少なくとも、１個の物理アドレスの前記領域のバイト数であるサイズが、他の１個の物理アドレスの前記領域の前記サイズより大きく、そして、物理アドレスの前記領域のサイズは、他の物理アドレスの前記領域の前記サイズの倍数ではなく、前記領域の前記サイズの前記領域には複数のアドレスが存在する仮想メモリ領域を提供するためのメモリ管理装置。
【請求項２】
ａ．少なくとも１個の物理アドレスの前記サイズが、２の累乗の数ではなく、
ｂ．少なくとも１個のページの前記サイズが、２の累乗の数ではない請求項１に記載のメモリ管理装置。
【請求項３】
仮想アドレスの少なくとも１個の第１の仮想アドレスが、
ａ．２の累乗の数ではなく、又は、
ｂ．前記仮想アドレスの前記サイズの倍数ではない請求項１に記載のメモリ管理装置。
【請求項４】
ページの物理アドレスの前記領域における第１の物理アドレスが、
ａ．２の累乗ではなく、又は、
ｂ．物理アドレスの前記領域の前記サイズの倍数ではなく、
ｃ．前記ページの前記サイズの倍数ではない請求項１に記載のメモリ管理装置。
【請求項５】
１個以上のページが予備の容量を有する請求項１に記載のメモリ管理装置。
【請求項６】
ｉ．データ要素の物理アドレスを既存の仮想アドレスセットから分離し、物理アドレスを他の仮想アドレスセットと改めて関連付けすることによって、１個以上のデータ要素を既存の仮想アドレスセットから他の一つの仮想アドレスセットに再配置する構成となっているデータ再配置モジュール、
ｉｉ．１個以上の追加的物理アドレスを仮想アドレスに関連付けることによって、仮想メモリ領域で１個以上の追加的なデータ要素を挿入する構成となっている挿入モジュール、
ｉｉｉ．１個以上の物理アドレスを仮想アドレスから分離することによって、前記仮想アドレス領域における１個以上のデータ要素を削除する構成となっているデータ削除モジュール、
複数の仮想アドレスに保存された複数のデータ要素と、上記ｉ乃至ｉｉｉの少なくとも１個を有する請求項１に記載のメモリ管理装置。
【請求項７】
ａ．再配置されたデータ要素の数は、２の累乗ではなく、又は、
ｂ．前記既存の仮想アドレスと再配置されたデータ要素の前記新規の仮想アドレスとの間の数の相違が、２の累乗ではなく、又は、
ｃ．挿入されたデータ要素の数が、２の累乗ではなく、又は、
ｄ．削除されたデータ要素の数が、２の累乗ではない、請求項６に記載のメモリ管理装置。
【請求項８】
ａ．仮想アドレス空間における複数の仮想アドレスを提供することによって、
ｂ．複数のページにおいて複数の物理アドレスの領域を提供することによって、及び
ｃ．物理アドレスの前記領域と仮想アドレスとを関連付けることにより、物理アドレスを仮想アドレスと関連付けることによって、仮想メモリ領域を提供する方法であり、
少なくとも、１個の物理アドレスの前記領域のバイト数であるサイズが、他の１個の物理アドレスの前記領域の前記サイズより大きく、そして、物理アドレスの前記領域のサイズは、他の物理アドレスの前記領域の前記サイズの倍数ではなく、前記領域の前記サイズの前記領域には複数のアドレスが存在する仮想メモリ領域を提供する方法。
【請求項９】
ａ．少なくとも１個の物理アドレスの前記サイズが、２の累乗の数ではなく、
ｂ．少なくとも１個のページの前記サイズが、２の累乗の数ではない請求項８に記載の方法。
【請求項１０】
仮想アドレスの少なくとも１個の第１の仮想アドレスが、
ａ．２の累乗の数ではなく、又は、
ｂ．前記仮想アドレスの前記サイズの倍数ではない、請求項８に記載の方法。
【請求項１１】
ページの物理アドレスの少なくとも１個の前記領域における第１の物理アドレスが、
ａ．２の累乗ではなく、又は、
ｂ．物理アドレスの前記領域の前記サイズの倍数ではなく、
ｃ．前記ページの前記サイズの倍数ではない、請求項８に記載の方法。
【請求項１２】
１個以上のページが予備の容量を有する、請求項８に記載の方法。
【請求項１３】
ｉ．データ要素の物理アドレスを既存の仮想アドレスセットから分離し、物理アドレスを他の仮想アドレスセットと改めて関連付けすることによって、１個以上のデータ要素を既存の仮想アドレスセットから他の一つの仮想アドレスセットに再配置し、
ｉｉ．１個以上の追加的物理アドレスを仮想アドレスに関連付けることによって、仮想メモリ領域で１個以上の追加的なデータ要素を挿入し、
ｉｉｉ．１個以上の物理アドレスを仮想アドレスから分離することによって、前記仮想アドレス領域における１個以上のデータ要素を削除し、
幾つかの仮想アドレスに複数のデータ要素を保存し、上記ｉ乃至ｉｉｉの少なくとも１個を有する、請求項８に記載の方法。
【請求項１４】
ａ．再配置されたデータ要素の数は、２の累乗ではなく、又は、
ｂ．前記既存の仮想アドレスと再配置されたデータ要素の前記新規の仮想アドレスとの間の数の相違が、２の累乗ではなく、又は、
ｃ．挿入されたデータ要素の数が、２の累乗ではなく、又は、
ｄ．削除されたデータ要素の数が、２の累乗ではない、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータおよびその他の電子装置におけるメモリ管理に関する。より具体的には、仮想メモリシステムにおける可変サイズページのマッピングに関する。また、仮想メモリシステムにおいて可変サイズページのマッピングが可能なコンピュータに関する。
【背景技術】
【０００２】
仮想メモリシステムは、最新のコンピュータその他の電子装置に広く用いられている。仮想メモリシステムにより、プログラムが１個以上の仮想メモリ領域内の仮想アドレスを用いてデータにアクセス可能になる。
【０００３】
仮想メモリシステムにおけるメモリ管理装置（ＭＭＵ）は、アドレス空間のあるアドレスを別のアドレス空間内のアドレスに変換する。ＭＭＵにおいて、第１のアドレス空間は仮想アドレス空間と呼ばれ、第２のアドレス空間は物理アドレス空間と呼ばれる。仮想アドレス空間内のアドレスは仮想アドレスと呼ばれ、物理アドレス空間内のアドレスは物理アドレスと呼ばれる。ある場合には、有用なアドレスを導くために物理アドレスを更に変換しなければならない。
【０００４】
ＭＭＵは、仮想アドレス空間内のある範囲のアドレスにページテーブルエントリを関連付けるため、変換ルックアサイドバッファ形式のルックアップテーブル、ページテーブル、反転ページテーブル、ハッシュテーブル等を含んでいる。多くのＭＭＵは、変換ルックアサイドバッファとページテーブルを併用する。ページテーブルエントリは、ページ記述子としても知られる変換記述子を含んでいる。ページ記述子フィールドは、ページテーブルエントリに物理アドレス空間内の複数のアドレスを関連付ける。従来のシステムにおいて、物理アドレス空間は所定の固定されたサイズのページに分割されている。各ページ記述子フィールドは、物理アドレス空間内にページのアドレスを保持している。通常、ページ記述子の下位ビットは切り捨てられる。
【０００５】
アドレス変換の実行中、仮想アドレスはページ番号およびページオフセットに分割される。ＭＭＵは、ページ番号に関連付けられたページテーブルエントリを特定する。ページテーブルエントリ内のページ記述子フィールド内のページのアドレスは、仮想アドレスのページオフセット部分に連接されて物理アドレスに到達する。
【０００６】
ページテーブルエントリはまた、ページテーブルエントリによりマッピングされるページに対してアクセス制御および保護を提供すべく、書込み専用フィールド、読出し専用フィールド、および実行フィールド等、複数のアクセス制御および保護フィールドをも含んでいる。
【０００７】
ページは、その時々で主記憶装置または２次記憶装置内に置かれていてもよい。仮想メモリシステム内のページデータベース、ページフレームデータベース、またはコアマップがページ内の物理的な位置を追跡する。
【０００８】
ページの有効サイズは、ページ内のアドレスがマッピングされる仮想アドレスの数である。従来の仮想メモリシステムにおいて、ページのサイズは、その有効サイズと同じである。
【０００９】
仮想メモリシステムは多くの場合、複数のレベルで、または他のアドレス変換機構と合わせて実装される。例えば、インテル８０３８６マイクロプロセッサは、ページディレクトリおよびページテーブルをサポートする２レベルのページ変換機構を実装する。インテル８０３８６マイクロプロセッサはまた、ページング機構に加えセグメント化機構をサポートしている。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
既存の仮想メモリシステムには多くの短所がある。特に、後述するように、物理メモリの仮想アドレス空間へのマッピング用に提供されるフレームワークは柔軟性に欠ける。
【００１１】
１．ページのサイズは、少数の可能なページサイズから選択しなければならない。ページを任意のサイズとすることは不可能である。２の累乗でないサイズのページとすることは不可能である。
２．ページ内の物理アドレスは、固定された境界で区切られていなければならない。ページ内の物理アドレスは、当該ページのサイズの倍数でなければならない。ページ内の物理アドレスを他のまたは任意に選択された境界で区切ることは不可能である。
３．ある種の仮想メモリシステムは、可能なページサイズの中から、複数のページサイズをサポートする。ある場合には、定められた規則に従い、２ページ以上が仮想アドレス空間だけでなく物理アドレス空間でも連続していればそれらを組み合わせてより大きなページを形成することがある。しかし一般的には、単一の仮想アドレス空間内で任意のサイズのページを組み合わせて使用するのは不可能、非実用的、または不利である。
４．ページは、仮想アドレス空間内の固定された境界でマッピングされなければならない。そのような仮想アドレスは、ページのサイズの倍数でなければならない。ページを他のまたは任意に選択された仮想アドレスにマッピングすることは不可能である。ある仮想アドレスに既にマッピングされたページを、より上位または下位の仮想アドレス、すなわちそのように固定された境界で区切られていない新規仮想アドレスに再マッピングすることは不可能である。
５．ページ全体が仮想アドレス空間にマッピングされる。未使用、予備、またはマッピング未実施のスペースをページ内に維持することは不可能である。ページの有効サイズは、ページのサイズに等しくなければならない。
６．仮想アドレスのページオフセット部分は変換されないが、ページ内のページオフセットとして変更なしに用いられる。さもなければページオフセットは、変換またはマッピング処理を施されない。
７．ページテーブルエントリは、ページ全体を仮想アドレス空間にマッピングする。ページテーブルエントリを用いてページの一部をマッピングすることは不可能である。複数のページテーブルエントリを同一ページ、または同一ページの一部にマッピングすることは無意味である。
８．きめ細かい保護およびアクセス制御が提供されない。保護およびアクセス制御は上述のように、固定されたサイズのページに限定される。しかし実際には、制御が必要なデータの論理ユニットを１個以上の固定されたサイズのページに確実にぴったり合わせることは不可能である。
９．メモリがマッピングされた関数またはプロシージャの作成および管理方法が提供されない。
１０．メモリがマッピングされた仮想ルックアップテーブルの作成および管理方法が提供されない。プログラミングにおいて、いくつかの計算の結果をルックアップテーブルとして提供することが望ましい場合が多い。例えば、仮想ルックアップテーブルは、自然数の２乗根を提供することができる。理想的には、そのようなルックアップテーブルへのエントリが最初に仮想アドレスでアクセスされたときに、ユーザー定義関数が呼び出されてそのような位置で関連する値が計算されてもよい。そのような値を小さいページに配置しておき、次いで仮想アドレス空間にマッピングすることができる。しかし、既存の仮想メモリシステムでは、非常に大きいページサイズが必要とされ、所望の結果に加えていくつかの数の２乗根の計算が必要とされよう。このため仮想ルックアップテーブルが現実的でなくなる。
１１．既存データの大量複製無しに実行可能な、仮想メモリ領域内での任意の量のデータの再配置、挿入、または削除する方法が提供されない。
１２．変換ルックアサイドバッファに存在する限られたページテーブルエントリの使用を最適化する方法が不十分である。
従って、物理メモリを仮想アドレス空間へマッピングするより柔軟且つ効率的な方法に対するニーズが存在する。
【課題を解決するための手段】
【００１２】
本発明のいくつかの目的は、以下のような仮想メモリシステムを提供することである。
１．異なるサイズまたは異なる有効サイズのページを連続的な仮想アドレス空間にマッピングする。
２．ページの有効サイズ（すなわち、ページ内のアドレスがマッピングされる仮想アドレスの数）はページのサイズと同じである必要はない。ページの有効サイズは、その時々で異なっていてもよい。
３．ページのサイズまたは有効サイズは固定されている必要はなく、ページ毎に異なってよく、任意の好都合なサイズであってもよい。ページのサイズまたは有効サイズは、ページフレームサイズに一切依存しない。
４．ページは、未使用、マッピング未実施、または予備のスペースを所有している。ページ内の未使用、マッピング未実施、または予備のスペースはその時々で変動してもよい。ページサイズに等しいデータをページが保存する必要はなく、未使用スペースを有していてもよいため、異なる量のデータを保存する。
５．ページ内の物理アドレスは、固定された境界で区切る必要がない。ページがマッピングされる仮想アドレスは、固定された境界で区切る必要がない。
６．ページテーブルエントリは２以上のページ、または２以上ページの一部を仮想アドレス空間にマッピングすることができる。複数のページテーブルエントリがページ、またはページの一部にマッピングされる。
７．仮想メモリ領域の任意の部分に対してきめ細かいアクセス制御および保護を提供する。可変または異なるサイズのページに対してアクセス制御および保護を提供する。更に、ページの一部に対してアクセス制御および保護を提供することができる。
８．仮想メモリ領域内で任意の量のデータを再配置、挿入、および削除する方法を提供し、その動作は物理メモリ内で大量のデータの複製を必要としない。
９．効率的なメモリのマッピングされた関数およびプロシージャの作成および管理方法を提供する。効率的な仮想ルックアップテーブルの作成および管理方法も提供する。提供される仮想ルックアップテーブルの動作は、所望以外のルックアップテーブルエントリの値の計算を必要としない。
１０．変換ルックアサイドバッファ内における限られた数のページテーブルエントリの使用を最適化する方法を提供する。
更なる目的および利点は、以下の説明および図面を参照しながら明らかになる。
【００１３】
本発明により、可変サイズまたは異なるサイズのページをマッピングする仮想メモリシステムを作成する装置および方法を提供する。本発明は、異なるサイズのページを仮想アドレス空間にマッピングする。従って、本発明を使用する間、ページに保存されるデータの量はページ毎に異なっていてもよい。
【図面の簡単な説明】
【００１４】
【図１】本発明のメモリ管理装置１０１の模式図を示す。
【図２Ａ】仮想アドレス空間を示す。
【図２Ｂ】物理アドレス空間を示す。
【図３】仮想アドレスを示す。
【図４】ページテーブルの構造を示す。
【図５】ページテーブルエントリの構造を示す。
【図６】マッピングエントリの構造を示す。
【図７】変換記述子選択モジュールの動作を示す。
【図８】アドレス計算モジュールの動作を示す。
【図９】可変サイズページの仮想アドレス空間へのマッピングの模式図を示す。
【図１１】本発明のメモリ管理装置１１０１の模式図を示す。
【図１２】変換ルックアサイドバッファを示す。
【図２１】本発明のメモリ管理装置２１０１の模式図を示す。
【図２２】変換ルックアサイドバッファ２２０１を示す。
【図３１】本発明の仮想メモリ領域３１０１を示す。
【図３２Ａ】可変サイズページ３２０１を示す。
【図３２Ｂ】可変サイズページ３２０２を示す。
【図３３】ページデータベース３３０１を示す。
【図３４】複数のページ３２０１および３２０２から仮想アドレス空間２０１へのマッピングを示す。
【図３８Ａ】例示的なメモリ領域３８０１を示す。
【図３８Ｂ】いくつかの既存データの再配置および新規データの挿入後の例示的なメモリ領域３８０１を示す。
【図４１】仮想メモリ領域４１０１の模式図を示す。
【図５１】仮想ルックアップテーブル５１０１の模式図を示す。
【発明を実施するための形態】
【００１５】
本発明について好適な実施形態および添付の図面を参照しながら以下に述べる。しかし、前記図面は、本発明を例示するものに過ぎず、一切これを限定するものではない。
【００１６】
図１に本発明の好適な実施形態の模式図を示す。従って、メモリ管理装置１０１は、仮想アドレス空間２０１、物理アドレス空間２０２、ページテーブル４０１、ページテーブルエントリ選択モジュール７０１、変換記述子選択モジュール７０２、アドレス計算モジュール８０１、ページフォールトハンドラ９０１、およびアクセスコントローラ１００１を含んでいる。
【００１７】
図２Ａに仮想アドレス空間を示す。仮想アドレス空間２０１は複数の仮想アドレスを含んでいる。
【００１８】
図２Ｂに物理アドレス空間を示す。物理アドレス空間２０２は複数のページ２０３を含んでいる。各ページ２０３は複数の物理アドレスを含んでいる。
【００１９】
図３に仮想アドレス３０１を示す。仮想アドレスは、ページ番号３０２およびページオフセット３０３に分割される。
【００２０】
図４にページテーブル４０１を示す。ページテーブルは複数のページテーブルエントリ５０１を含んでいる。
【００２１】
図５にページテーブルエントリ５０１を示す。ページテーブルエントリは、１個以上のマッピングエントリ６０１を含んでいる。
【００２２】
図６にマッピングエントリ６０１を示す。マッピングエントリは、変換記述子であって、後述するように仮想アドレスから物理アドレスへのマッピングを含んでいる。マッピングエントリは、ＬＡＢフィールド６０２、ＰＡＢフィールド６０３、ＢＣフィールド６０４、存在ビットフィールド６０５、アクセス済みビットフィールド６０６、ダーティビットフィールド６０７、読出し専用ビットフィールド６０８、書込み専用ビットフィールド６０９、および実行ビットフィールド６１０を含んでいる。
【００２３】
ＬＡＢフィールドは仮想アドレスを保持する。ＰＡＢフィールドは物理アドレスを保持する。ＢＣフィールドはバイトのカウント値を保持する。マッピングエントリは、複数の仮想アドレスを同数の物理アドレスにマッピングする。ＬＡＢおよびＰＡＢは、下位ビット切捨てることなく、完全なアドレスを保持する。
【００２４】
ページテーブルエントリ選択モジュール７０１は、受信した仮想アドレスのページ番号３０２をページテーブル内の索引内のように用いて、ページテーブルエントリを選択する。
【００２５】
図７に変換記述子選択モジュール７０２を示す。変換記述子選択モジュール７０２は、選択されたページテーブルエントリ内で適当なマッピングエントリを選択しようと試みる。存在ビットフィールドが設定されていて、仮想アドレスがＬＡＢ値以上であり、且つ仮想アドレスがＬＡＢとＢＣ値の合計より小さい場合、マッピングエントリは選択に適していると考えられる。
【００２６】
図８にアドレス計算モジュール８０１の動作を示す。アドレス計算モジュール８０１は、選択されたマッピングエントリのＰＡＢ値とページオフセット３０３を加算することにより、所与の仮想アドレスに対する物理アドレスを計算する。
【００２７】
図９にメモリ管理装置１０１の動作を示す。仮想アドレスを用いてデータアクセスを行なう間、ページ選択モジュールはページテーブルエントリを選択し、変換記述子選択モジュールは選択されたページテーブルエントリ内のマッピングエントリを選択する。アドレス計算モジュールは上述のように物理アドレスを計算する。本システムは、このように計算された物理アドレスのデータにアクセスする。
【００２８】
しかし、適当なページテーブルエントリまたは適当なマッピングエントリが選択できない場合、ページフォールトが生じる。ページフォールトハンドラ９０１はページフォールトを扱う。ページフォールト−ハンドラは、適当なページを準備し、適当なマッピングエントリをページテーブルエントリ内に挿入する。ページフォールトハンドラは次いでシステムに制御を返し、メモリアクセス動作が再開される。
【００２９】
メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域がアクセスされた場合、アクセス済みビットフィールドをマッピングエントリに設定する。メモリが書込みのためにアクセスされた場合、メモリ管理装置はダーティビットフィールドを設定する。マッピングエントリ内のアクセス済みビットおよびダーティビットフィールドを用いて代替ポリシを実装する。
【００３０】
アクセスコントローラ１００１は、メモリ保護および制御方針を実装すべく構成されている。アクセスコントローラは、所望のアクセス制御を行なうべく、後述するように必要に応じてマッピングエントリ内に読出し専用、書込み専用、および実行ビットフィールドを設定する。マッピングエントリ内に読出し専用ビットフィールドが設定されている場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域のデータの変更が試みられるならば例外またはフォールトを生起させる。書込み専用ビットフィードが設定される場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域内のデータの読出しが試みられたならば例外またはフォールトを生起させる。実行ビットフィールドが設定されていない場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域内のデータの実行が試みられるならば例外またはフォールトを生起させる。これらの例外またはフォールトは適当なハンドラにより扱われる。
【００３１】
マッピングエントリによりマッピングされるバイトの数は固定されておらず、必要に応じて変動してもよい。マッピングエントリによりマッピングされるバイトの数は、１個以上の特定のページサイズの倍数である必要がない。マッピングされるバイトの数は、２の倍数または２の累乗である必要がない。マッピングエントリによりマッピングされる開始および終了仮想アドレスは、仮想アドレス空間内のいずれかの特定の境界も整列配置されている必要がなく、必要に応じて変動してもよい。マッピングエントリによりマッピングされる開始および終了物理アドレスは、物理アドレス空間内のいかなる特定の境界で区切る必要はなく、必要に応じて異なっていてもよい。
【００３２】
マッピングエントリは従って、ページの全体または一部を仮想アドレス空間にマッピングする。ページ内の複数の領域を、１個以上のページテーブルエントリ内の１個以上のマッピングエントリを用いて仮想アドレス空間にマッピングしてもよい。
【００３３】
マッピングエントリはページ内の任意の量のデータを仮想アドレス空間にマッピングすることができるため、当該ページは未使用、予備、またはマッピング未実施のスペースを保持し得る。そのような予備のスペースを後で仮想アドレス空間にマッピングして、後述するようにデータの挿入および削除に用いることができる。
【００３４】
本明細書から分かるように、仮想メモリシステムは、仮想アドレス空間において、任意のサイズまたは任意の有効サイズの複数のページをマッピングすることができる。ページのサイズおよび有効サイズは固定されておらず、且つ等しい必要はない。仮想メモリ領域内のページのサイズおよび有効サイズは各々、仮想メモリ領域内の他のページのサイズおよび有効サイズに等しくなくてもよい。ページ内の物理アドレスは固定された境界で区切られていなくてもよい。ページ内の第１のアドレスがマッピングされる仮想アドレスは固定された境界で区切られていなくてもよい。
【００３５】
図１１に、本発明の別の好適な実施形態の模式図を示す。これによれば、メモリ管理装置１１０１は、仮想アドレス空間２０１、物理アドレス空間２０２、変換ルックアサイドバッファ１２０１、ページテーブルエントリ５０１、マッピングエントリ６０１、ページテーブルエントリ選択モジュール７０１、変換記述子選択モジュール７０２、アドレス計算モジュール８０１、ページフォールトハンドラ９０１、およびアクセスコントローラ１００１を含んでいる。
【００３６】
図１２に変換ルックアサイドバッファ１２０１を示す。変換ルックアサイドバッファは、１個以上のページテーブルエントリ５０１を含んでいる。変換ルックアサイドバッファ内の各ページテーブルエントリにはページ番号が関連付けられている。
【００３７】
仮想メモリアドレスにアクセスする場合、選択モジュールはページ番号を用いて変換ルックアサイドバッファのページテーブルエントリを選択する。適当なページテーブルエントリが選択されたならば、上述のように、選択されたページテーブルエントリ内の適当なマッピングエントリの選択を試みる。アドレス計算モジュールは上述のように、物理アドレスを計算する。ここで本システムは、このように計算された物理アドレスにおいてデータにアクセス可能になる。
【００３８】
メモリ管理装置は、適当なページテーブルエントリまたは適当なマッピングエントリが選択できなかった場合、ページフォールトを生成する。ページフォールトハンドラソフトウェア９０１がページフォールトを扱う。ページフォールトハンドラは、物理メモリ領域またはページを準備し、マッピングエントリを変換ルックアサイドバッファ内のページテーブルエントリに挿入して、本システムに制御を返す。
【００３９】
本実施形態の他の構成要素については既に上で述べている。
【００４０】
図２１に本発明の別の好適な実施形態の模式図を示す。これによれば、メモリ管理装置２１０１は、仮想アドレス空間２０１、物理アドレス空間２０２、変換ルックアサイドバッファ２２０１、ページテーブルエントリ５０１、マッピングエントリ６０１、変換記述子選択モジュール７０２、アドレス計算モジュール８０１、ページフォールトハンドラ９０１、およびアクセスコントローラ１００１を含んでいる。
【００４１】
図２２に変換ルックアサイドバッファ２２０１を示す。変換ルックアサイドバッファは単一のページテーブルエントリ５０１を含んでいる。ページテーブルエントリ５０１は、１個以上のマッピングエントリ６０１を含んでいる。
【００４２】
本実施形態において、仮想アドレスはページ番号およびページオフセットに分割されていない。仮想アドレス全体がページオフセットとして扱われる。仮想アドレスにおいてメモリ位置にアクセスする場合、変換記述子選択モジュール７０２は上述のように、ページテーブルエントリ５０ｌ内のマッピングエントリの中から適当なマッピングエントリの選択を試みる。アドレス計算モジュールは上述のように物理アドレスを計算する。ここで本システムは、そのように導かれた物理アドレスでデータにアクセス可能になる。
【００４３】
メモリ管理装置は、適当なマッピングエントリが選択できなかった場合、ページフォールトを生成する。ページフォールトハンドラソフトウェア９０１がページフォールトを扱う。ページフォールトハンドラは、関連する物理メモリ領域またはページを準備し、適当なマッピングエントリを変換ルックアサイドバッファ内のページテーブルエントリに挿入して、本システムに制御を返す。
【００４４】
図３１に本発明の別の実施形態を示す。これによれば、仮想メモリ領域３１０１は、メモリ管理装置１０１、可変サイズページ３２０１または３２０２、ページデータベース３３０１、データ再配置モジュール３５０１、データ挿入モジュール３６０１、およびデータ削除モジュール３７０１を含んでいる。
【００４５】
図３２Ａに、サイズがｎバイトである可変サイズページ３２０１を示す。ｎの値はページ毎に異なっていてもよい。
【００４６】
図３２Ｂに、９１バイトの未使用または予備スペースおよび９３３バイトの有効サイズを合わせて１０２４バイトの容量を有するページ３２０２を示す。すなわち、当該ページの９３３バイトだけが仮想アドレス空間にマッピングされる。ページの有効サイズおよびページ内の未使用スペースの量はページ毎に、且つその時々で異なっていてもよい。
【００４７】
図３３にページデータベース３３０１を示す。ページデータベースは複数のページ３２０１または３２０２を含んでいる。ページデータベースは、ページおよびそれらの仮想アドレス、仮想メモリ領域内の各ページのサイズおよび有効サイズを把握している。ページの仮想アドレス、サイズおよび有効サイズは、その時々で異なっていてもよい。
【００４８】
図３４に、メモリ管理装置１０１または１１０１内のページテーブル４０１を用いたページデータベース内の複数のページ３２０１および３２０２の仮想アドレス空間２０１へのマッピングの模式図を示す。ページテーブル４０１内の１個以上のページテーブルエントリ５０１内の１個以上のマッピングエントリ６０１は、各可変サイズページ内のアドレスを仮想アドレス空間にマッピングする。
【００４９】
データ再配置モジュール３５０１は、仮想メモリ領域内の１個以上のメモリデータ要素をより上位または下位の仮想アドレスに再配置する。データ再配置モジュールは、ページディレクトリ内の１個以上のページをそれらの仮想アドレスから分離して、そのようなページに新規仮想アドレスを関連付けることにより、データを再配置する。従って、データ再配置モジュールは、そのようなデータを物理的に複製することなくメモリ領域内のデータをより上位または下位のアドレスに再配置する。
【００５０】
データ挿入モジュール３６０１は、１個以上のデータ要素を仮想メモリ領域に挿入する。データ挿入モジュールは、データ再配置モジュールを用いて、１個以上の既存データ要素を新規仮想アドレスに再配置する。データ挿入モジュールはまた、ページデータベース内に新規のページを挿入して、当該新規ページに仮想アドレスを関連付けるべく構成されている。データ挿入モジュールはまた、予備の容量を有するページに追加的なデータ要素を挿入すべく構成されている。
【００５１】
データ削除モジュール３７０１は、仮想メモリ領域内の１個以上のデータ要素を削除する。データ削除モジュールは、ページ内の１個以上の既存データ要素を削除して、予備の容量を増やすべく構成されている。データ削除モジュールはまた、１個以上のデータ要素を、それらがマッピングされている仮想アドレスから分離すべく構成されている。データ削除モジュールはまた、ページデータベース内の１個以上のページを削除すべく構成されている。更に、データ削除モジュールは、データ再配置モジュールを用いて、１個以上のデータ要素を新規仮想アドレスに再配置する。
【００５２】
データ再配置モジュール、データ挿入モジュール、およびデータ削除モジュールは、以下の動作の１個以上を実行することにより、仮想メモリ領域内のデータを再配置、挿入、および削除すべく構成されている。
１．１個以上の新規のページをページデータベース内に挿入する。
２．ページデータベース内の１個以上の既存のページを削除する。
３．データベース内のページを他のページに置換する。
４．ページデータベース内のページの順序を再配置する。
５．ページデータベース内の１個以上のページのサイズを増やす。
６．ページデータベース内の１個以上のページのサイズを減らす。
７．ページデータベース内の１個以上のページを仮想アドレス空間内のより上位アドレスに改めて関連付ける。
８．ページデータベース内の１個以上のページを仮想アドレス空間内のより下位のアドレスに改めて関連付ける。
９．そのようなページ内の未使用スペースを用いて新規のデータを既存のページに挿入して、当該ページの有効サイズを増やす。
１０．ページデータベース内のページから既存データを削除し、そのようなページ内の未使用スペースを増やして、当該ページの有効サイズを減らす。
１１．ページテーブルまたは変換ルックアサイドバッファ内の１個以上のマッピングエントリを変更することにより、既存のマッピングを再マッピングまたは無効にする。
【００５３】
図３８Ａ、３８Ｂに、メモリ領域内でのデータの再配置および挿入方法を示す。データの削除方法は挿入方法の逆である。
【００５４】
図３８Ａに、例示的な仮想メモリ領域３８０１に含まれる複数の可変サイズページを示す。これによれば、ページ＃１、＃２、＃３、および＃４は、仮想アドレス０、６３、９３、および７９２にマッピングされる。更に、ページ＃１、＃２、＃３、および＃４は、各々６３、３０、６９９および１７バイトを仮想アドレス空間にマッピングする。仮想メモリ領域内の合計サイズは８０９バイトである。
【００５５】
図３８Ｂに、いくつかの既存データを再配置、および新規データを挿入した後、仮想メモリ領域３８０１に含まれるページを示す。これによれば、ページ＃３および＃４は各々、アドレス１０５および８０４でマッピングされている。ページ＃５はメモリ領域内に挿入され、アドレス９３にマッピングされる。ページ＃１および＃２は不変のままである。仮想アドレス空間内のページ＃５によりマッピングされたバイトの数は１２である。仮想メモリ領域内の新規サイズは８２１バイトである。
【００５６】
このように、ページ＃３および＃４内の複数のバイトは、当該ページ内のデータを物理的に複製することなくメモリ領域内のより上位アドレスに再配置され、ページ＃５内の複数のバイトはメモリ領域内に挿入される。
【００５７】
図４１に本発明の別の実施形態を示す。これによれば、仮想メモリ領域４１０１は、メモリ管理装置１０１およびユーザー定義関数４１０２を含んでいる。
【００５８】
ユーザー定義関数４１０２は、本システム、プログラマ、またはユーザーにより設定されて動作および／または値を提供する。
【００５９】
仮想メモリ領域内の仮想アドレスがアクセスされた場合、ページフォールトが生じる。ページフォールトハンドラはユーザー定義関数４１０２を呼び出す。ユーザー定義関数には入力パラメータとして仮想アドレスが与えられ、それに基づいて構成された動作を実行する、および／または値を計算する。値は小さいページに保存される。ページフォールトハンドラは、１個以上のマッピングエントリを用いて仮想アドレスにページをマッピングする。これにより計算された値は仮想アドレスでアクセス可能になる。
【００６０】
図５１に本発明の別の実施形態に示す。これによれば、仮想ルックアップテーブル５１０１は、仮想メモリ領域４１０１、および複数の仮想テーブルエントリ５１０２を含んでいる。仮想メモリ領域内の１個以上の仮想アドレスが仮想テーブルエントリを表す。仮想メモリ領域内の全ての仮想テーブルエントリが全体で仮想ルックアップテーブルを表す。
【００６１】
仮想ルックアップテーブル内のエントリがアクセスされた場合、ページフォールトが生じる。ページフォールトハンドラがユーザー定義関数４１０２を呼び出す。ユーザー定義関数が値を計算する。この計算された値は小さいページに保存され、次いで適当な仮想アドレスにマッピングされる。このように、仮想ルックアップテーブル内でアクセスされたエントリ以外のエントリのために値を計算する必要がない。
【００６２】
ルックアップテーブル内のエントリはまた、マッピングエントリ内に読出し専用ビットフィールドを設定することにより保護することができる。しかし、読出し専用保護を用いない場合、ルックアップテーブル内のエントリは仮想アドレスを用いて変更することができる。そのような任意の変更は、ユーザー定義関数への入力として後続動作で用いることができる。ユーザー定義関数はまた、他の仮想ルックアップテーブルまたは仮想メモリ領域に保存された値を使用することができる。
【００６３】
上述の利点に加え、本発明は他の多くの利点をもたらす。例えば、本発明は、複数のデータ構造の構造および使用法を簡素化することにより、コンピュータの効率を向上させる。本発明は様々なサイズの複数のネットワークパケットを用いた仮想メモリ領域の生成に有用である。本発明はまた、任意のサイズの穴を有するメモリ領域の生成に有用である。
【００６４】
本発明は、ページテーブルまたは変換ルックアサイドバッファ、または他の任意の適当な機構を用いて実装してもよい。本発明はまた、あるレベルの物理アドレスが別のレベルの仮想アドレスであるように、複数のレベルで実装してもよい。ページディレクトリ、セグメント化等のサポートを含めることにより、ページ変換機構を拡張してもよい。
【００６５】
マッピングエントリの構造のいくつかの変型例によりページテーブルエントリまたはＴＥＢエントリのサイズを減らすことができる。例えば、上位ビットのいくつかを除去することによりＬＡＢフィールドを切り捨てることができる。これは、ページ番号がそのようなビットの値を示唆するためである。２個のマッピングエントリを有するページテーブルエントリの場合、そのような値は先行エントリのＬＡＢ＋ＢＣから容易に導くことができるため、第２のマッピングエントリのＬＡＢは必要とされない。更に、第２のマッピングエントリのＰＡＢ内の複数の下位ビットは、それらの値が適当な条件の下でゼロであることが保証できるため、除外することができる。
【００６６】
好適な実施形態により、１バイトのメモリマッピングの粒度を示す。ビット、ワード、倍長ワード等の他のデータ型、または他のレコード型を用いてマッピング処理の粒度を変更することが可能である。
【００６７】
本発明を用いて、複数のページを、単一のページテーブルエントリを用いて、または単一のページフレームへ、マッピングすることができる。またページテーブルエントリを用いて、単一のページを、複数のページテーブルエントリを用いて、または複数のページフレームへ、マッピングすることもできる。更に、ページフレーム内の全てのアドレスを同時にマッピングする必要がなく、ページテーブルエントリを用いてページフレームの一部だけを物理メモリにマッピングすることができる。
【００６８】
本発明はまた、上述の特徴の１個以上を備えたコンピュータその他の電子装置を含んでいる。
【００６９】
上述の説明が多くの具体例を含んでいるが、これらが本発明の範囲を限定するものではなく、むしろそれらの好適な実施例として解釈されたい。他の多くの変型例も可能である。
【図１】
0005647252.tif 000002
【図２Ａ】
0005647252.tif 000003
【図２Ｂ】
0005647252.tif 000004
【図３】
0005647252.tif 000005
【図４】
0005647252.tif 000006
【図５】
0005647252.tif 000007
【図６】
0005647252.tif 000008
【図７】
0005647252.tif 000009
【図８】
0005647252.tif 000010
【図９】
0005647252.tif 000011
【図１１】
0005647252.tif 000012
【図１２】
0005647252.tif 000013
【図２１】
0005647252.tif 000014
【図２２】
0005647252.tif 000015
【図３１】
0005647252.tif 000016
【図３２Ａ】
0005647252.tif 000017
【図３２Ｂ】
0005647252.tif 000018
【図３３】
0005647252.tif 000019
【図３４】
0005647252.tif 000020
【図３８Ａ】
0005647252.tif 000021
【図３８Ｂ】
0005647252.tif 000022
【図４１】
0005647252.tif 000023
【図５１】
0005647252.tif 000024