JP2013509621A - メモリ管理装置及び仮想メモリ領域を提供する方法 - Google Patents

メモリ管理装置及び仮想メモリ領域を提供する方法 Download PDF

Info

Publication number
JP2013509621A
JP2013509621A JP2012530409A JP2012530409A JP2013509621A JP 2013509621 A JP2013509621 A JP 2013509621A JP 2012530409 A JP2012530409 A JP 2012530409A JP 2012530409 A JP2012530409 A JP 2012530409A JP 2013509621 A JP2013509621 A JP 2013509621A
Authority
JP
Japan
Prior art keywords
page
virtual
addresses
physical
virtual address
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.)
Granted
Application number
JP2012530409A
Other languages
English (en)
Other versions
JP5647252B2 (ja
Inventor
カムレッシュ ガンディー
Original Assignee
カムレッシュ ガンディー
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 カムレッシュ ガンディー filed Critical カムレッシュ ガンディー
Publication of JP2013509621A publication Critical patent/JP2013509621A/ja
Application granted granted Critical
Publication of JP5647252B2 publication Critical patent/JP5647252B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

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

Abstract

可変サイズページが可能なように構成された仮想メモリシステムの管理方法を提供する。ページのサイズは2の累乗である必要がない。可変且つ任意サイズのページが連続的なセグメントまたは仮想アドレス空間にマッピングされる。本方法はまた、仮想メモリ領域内のデータの効果的な再配置、挿入および削除を提供する。本方法はまた、仮想ルックアップテーブルを提供する。

Description

本発明はコンピュータおよびその他の電子装置におけるメモリ管理に関する。より具体的には、仮想メモリシステムにおける可変サイズページのマッピングに関する。また、仮想メモリシステムにおいて可変サイズページのマッピングが可能なコンピュータに関する。
仮想メモリシステムは、最新のコンピュータその他の電子装置に広く用いられている。仮想メモリシステムにより、プログラムが1個以上の仮想メモリ領域内の仮想アドレスを用いてデータにアクセス可能になる。
仮想メモリシステムにおけるメモリ管理装置(MMU)は、アドレス空間のあるアドレスを別のアドレス空間内のアドレスに変換する。MMUにおいて、第1のアドレス空間は仮想アドレス空間と呼ばれ、第2のアドレス空間は物理アドレス空間と呼ばれる。仮想アドレス空間内のアドレスは仮想アドレスと呼ばれ、物理アドレス空間内のアドレスは物理アドレスと呼ばれる。ある場合には、有用なアドレスを導くために物理アドレスを更に変換しなければならない。
MMUは、仮想アドレス空間内のある範囲のアドレスにページテーブルエントリを関連付けるため、変換ルックアサイドバッファ形式のルックアップテーブル、ページテーブル、反転ページテーブル、ハッシュテーブル等を含んでいる。多くのMMUは、変換ルックアサイドバッファとページテーブルを併用する。ページテーブルエントリは、ページ記述子としても知られる変換記述子を含んでいる。ページ記述子フィールドは、ページテーブルエントリに物理アドレス空間内の複数のアドレスを関連付ける。従来のシステムにおいて、物理アドレス空間は所定の固定されたサイズのページに分割されている。各ページ記述子フィールドは、物理アドレス空間内にページのアドレスを保持している。通常、ページ記述子の下位ビットは切り捨てられる。
アドレス変換の実行中、仮想アドレスはページ番号およびページオフセットに分割される。MMUは、ページ番号に関連付けられたページテーブルエントリを特定する。ページテーブルエントリ内のページ記述子フィールド内のページのアドレスは、仮想アドレスのページオフセット部分に連接されて物理アドレスに到達する。
ページテーブルエントリはまた、ページテーブルエントリによりマッピングされるページに対してアクセス制御および保護を提供すべく、書込み専用フィールド、読出し専用フィールド、および実行フィールド等、複数のアクセス制御および保護フィールドをも含んでいる。
ページは、その時々で主記憶装置または2次記憶装置内に置かれていてもよい。仮想メモリシステム内のページデータベース、ページフレームデータベース、またはコアマップがページ内の物理的な位置を追跡する。
ページの有効サイズは、ページ内のアドレスがマッピングされる仮想アドレスの数である。従来の仮想メモリシステムにおいて、ページのサイズは、その有効サイズと同じである。
仮想メモリシステムは多くの場合、複数のレベルで、または他のアドレス変換機構と合わせて実装される。例えば、インテル80386マイクロプロセッサは、ページディレクトリおよびページテーブルをサポートする2レベルのページ変換機構を実装する。インテル80386マイクロプロセッサはまた、ページング機構に加えセグメント化機構をサポートしている。
既存の仮想メモリシステムには多くの短所がある。特に、後述するように、物理メモリの仮想アドレス空間へのマッピング用に提供されるフレームワークは柔軟性に欠ける。
1.ページのサイズは、少数の可能なページサイズから選択しなければならない。ページを任意のサイズとすることは不可能である。2の累乗でないサイズのページとすることは不可能である。
2.ページ内の物理アドレスは、固定された境界で区切られていなければならない。ページ内の物理アドレスは、当該ページのサイズの倍数でなければならない。ページ内の物理アドレスを他のまたは任意に選択された境界で区切ることは不可能である。
3.ある種の仮想メモリシステムは、可能なページサイズの中から、複数のページサイズをサポートする。ある場合には、定められた規則に従い、2ページ以上が仮想アドレス空間だけでなく物理アドレス空間でも連続していればそれらを組み合わせてより大きなページを形成することがある。しかし一般的には、単一の仮想アドレス空間内で任意のサイズのページを組み合わせて使用するのは不可能、非実用的、または不利である。
4.ページは、仮想アドレス空間内の固定された境界でマッピングされなければならない。そのような仮想アドレスは、ページのサイズの倍数でなければならない。ページを他のまたは任意に選択された仮想アドレスにマッピングすることは不可能である。ある仮想アドレスに既にマッピングされたページを、より上位または下位の仮想アドレス、すなわちそのように固定された境界で区切られていない新規仮想アドレスに再マッピングすることは不可能である。
5.ページ全体が仮想アドレス空間にマッピングされる。未使用、予備、またはマッピング未実施のスペースをページ内に維持することは不可能である。ページの有効サイズは、ページのサイズに等しくなければならない。
6.仮想アドレスのページオフセット部分は変換されないが、ページ内のページオフセットとして変更なしに用いられる。さもなければページオフセットは、変換またはマッピング処理を施されない。
7.ページテーブルエントリは、ページ全体を仮想アドレス空間にマッピングする。ページテーブルエントリを用いてページの一部をマッピングすることは不可能である。複数のページテーブルエントリを同一ページ、または同一ページの一部にマッピングすることは無意味である。
8.きめ細かい保護およびアクセス制御が提供されない。保護およびアクセス制御は上述のように、固定されたサイズのページに限定される。しかし実際には、制御が必要なデータの論理ユニットを1個以上の固定されたサイズのページに確実にぴったり合わせることは不可能である。
9.メモリがマッピングされた関数またはプロシージャの作成および管理方法が提供されない。
10.メモリがマッピングされた仮想ルックアップテーブルの作成および管理方法が提供されない。プログラミングにおいて、いくつかの計算の結果をルックアップテーブルとして提供することが望ましい場合が多い。例えば、仮想ルックアップテーブルは、自然数の2乗根を提供することができる。理想的には、そのようなルックアップテーブルへのエントリが最初に仮想アドレスでアクセスされたときに、ユーザー定義関数が呼び出されてそのような位置で関連する値が計算されてもよい。そのような値を小さいページに配置しておき、次いで仮想アドレス空間にマッピングすることができる。しかし、既存の仮想メモリシステムでは、非常に大きいページサイズが必要とされ、所望の結果に加えていくつかの数の2乗根の計算が必要とされよう。このため仮想ルックアップテーブルが現実的でなくなる。
11.既存データの大量複製無しに実行可能な、仮想メモリ領域内での任意の量のデータの再配置、挿入、または削除する方法が提供されない。
12.変換ルックアサイドバッファに存在する限られたページテーブルエントリの使用を最適化する方法が不十分である。
従って、物理メモリを仮想アドレス空間へマッピングするより柔軟且つ効率的な方法に対するニーズが存在する。
本発明のいくつかの目的は、以下のような仮想メモリシステムを提供することである。
1.異なるサイズまたは異なる有効サイズのページを連続的な仮想アドレス空間にマッピングする。
2.ページの有効サイズ(すなわち、ページ内のアドレスがマッピングされる仮想アドレスの数)はページのサイズと同じである必要はない。ページの有効サイズは、その時々で異なっていてもよい。
3.ページのサイズまたは有効サイズは固定されている必要はなく、ページ毎に異なってよく、任意の好都合なサイズであってもよい。ページのサイズまたは有効サイズは、ページフレームサイズに一切依存しない。
4.ページは、未使用、マッピング未実施、または予備のスペースを所有している。ページ内の未使用、マッピング未実施、または予備のスペースはその時々で変動してもよい。ページサイズに等しいデータをページが保存する必要はなく、未使用スペースを有していてもよいため、異なる量のデータを保存する。
5.ページ内の物理アドレスは、固定された境界で区切る必要がない。ページがマッピングされる仮想アドレスは、固定された境界で区切る必要がない。
6.ページテーブルエントリは2以上のページ、または2以上ページの一部を仮想アドレス空間にマッピングすることができる。複数のページテーブルエントリがページ、またはページの一部にマッピングされる。
7.仮想メモリ領域の任意の部分に対してきめ細かいアクセス制御および保護を提供する。可変または異なるサイズのページに対してアクセス制御および保護を提供する。更に、ページの一部に対してアクセス制御および保護を提供することができる。
8.仮想メモリ領域内で任意の量のデータを再配置、挿入、および削除する方法を提供し、その動作は物理メモリ内で大量のデータの複製を必要としない。
9.効率的なメモリのマッピングされた関数およびプロシージャの作成および管理方法を提供する。効率的な仮想ルックアップテーブルの作成および管理方法も提供する。提供される仮想ルックアップテーブルの動作は、所望以外のルックアップテーブルエントリの値の計算を必要としない。
10.変換ルックアサイドバッファ内における限られた数のページテーブルエントリの使用を最適化する方法を提供する。
更なる目的および利点は、以下の説明および図面を参照しながら明らかになる。
本発明により、可変サイズまたは異なるサイズのページをマッピングする仮想メモリシステムを作成する装置および方法を提供する。本発明は、異なるサイズのページを仮想アドレス空間にマッピングする。従って、本発明を使用する間、ページに保存されるデータの量はページ毎に異なっていてもよい。
本発明のメモリ管理装置101の模式図を示す。 仮想アドレス空間を示す。 物理アドレス空間を示す。 仮想アドレスを示す。 ページテーブルの構造を示す。 ページテーブルエントリの構造を示す。 マッピングエントリの構造を示す。 変換記述子選択モジュールの動作を示す。 アドレス計算モジュールの動作を示す。 可変サイズページの仮想アドレス空間へのマッピングの模式図を示す。 本発明のメモリ管理装置1101の模式図を示す。 変換ルックアサイドバッファを示す。 本発明のメモリ管理装置2101の模式図を示す。 変換ルックアサイドバッファ2201を示す。 本発明の仮想メモリ領域3101を示す。 可変サイズページ3201を示す。 可変サイズページ3202を示す。 ページデータベース3301を示す。 複数のページ3201および3202から仮想アドレス空間201へのマッピングを示す。 例示的なメモリ領域3801を示す。 いくつかの既存データの再配置および新規データの挿入後の例示的なメモリ領域3801を示す。 仮想メモリ領域4101の模式図を示す。 仮想ルックアップテーブル5101の模式図を示す。
本発明について好適な実施形態および添付の図面を参照しながら以下に述べる。しかし、前記図面は、本発明を例示するものに過ぎず、一切これを限定するものではない。
図1に本発明の好適な実施形態の模式図を示す。従って、メモリ管理装置101は、仮想アドレス空間201、物理アドレス空間202、ページテーブル401、ページテーブルエントリ選択モジュール701、変換記述子選択モジュール702、アドレス計算モジュール801、ページフォールトハンドラ901、およびアクセスコントローラ1001を含んでいる。
図2Aに仮想アドレス空間を示す。仮想アドレス空間201は複数の仮想アドレスを含んでいる。
図2Bに物理アドレス空間を示す。物理アドレス空間202は複数のページ203を含んでいる。各ページ203は複数の物理アドレスを含んでいる。
図3に仮想アドレス301を示す。仮想アドレスは、ページ番号302およびページオフセット303に分割される。
図4にページテーブル401を示す。ページテーブルは複数のページテーブルエントリ501を含んでいる。
図5にページテーブルエントリ501を示す。ページテーブルエントリは、1個以上のマッピングエントリ601を含んでいる。
図6にマッピングエントリ601を示す。マッピングエントリは、変換記述子であって、後述するように仮想アドレスから物理アドレスへのマッピングを含んでいる。マッピングエントリは、LABフィールド602、PABフィールド603、BCフィールド604、存在ビットフィールド605、アクセス済みビットフィールド606、ダーティビットフィールド607、読出し専用ビットフィールド608、書込み専用ビットフィールド609、および実行ビットフィールド610を含んでいる。
LABフィールドは仮想アドレスを保持する。PABフィールドは物理アドレスを保持する。BCフィールドはバイトのカウント値を保持する。マッピングエントリは、複数の仮想アドレスを同数の物理アドレスにマッピングする。LABおよびPABは、下位ビット切捨てることなく、完全なアドレスを保持する。
ページテーブルエントリ選択モジュール701は、受信した仮想アドレスのページ番号302をページテーブル内の索引内のように用いて、ページテーブルエントリを選択する。
図7に変換記述子選択モジュール702を示す。変換記述子選択モジュール702は、選択されたページテーブルエントリ内で適当なマッピングエントリを選択しようと試みる。存在ビットフィールドが設定されていて、仮想アドレスがLAB値以上であり、且つ仮想アドレスがLABとBC値の合計より小さい場合、マッピングエントリは選択に適していると考えられる。
図8にアドレス計算モジュール801の動作を示す。アドレス計算モジュール801は、選択されたマッピングエントリのPAB値とページオフセット303を加算することにより、所与の仮想アドレスに対する物理アドレスを計算する。
図9にメモリ管理装置101の動作を示す。仮想アドレスを用いてデータアクセスを行なう間、ページ選択モジュールはページテーブルエントリを選択し、変換記述子選択モジュールは選択されたページテーブルエントリ内のマッピングエントリを選択する。アドレス計算モジュールは上述のように物理アドレスを計算する。本システムは、このように計算された物理アドレスのデータにアクセスする。
しかし、適当なページテーブルエントリまたは適当なマッピングエントリが選択できない場合、ページフォールトが生じる。ページフォールトハンドラ901はページフォールトを扱う。ページフォールト−ハンドラは、適当なページを準備し、適当なマッピングエントリをページテーブルエントリ内に挿入する。ページフォールトハンドラは次いでシステムに制御を返し、メモリアクセス動作が再開される。
メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域がアクセスされた場合、アクセス済みビットフィールドをマッピングエントリに設定する。メモリが書込みのためにアクセスされた場合、メモリ管理装置はダーティビットフィールドを設定する。マッピングエントリ内のアクセス済みビットおよびダーティビットフィールドを用いて代替ポリシを実装する。
アクセスコントローラ1001は、メモリ保護および制御方針を実装すべく構成されている。アクセスコントローラは、所望のアクセス制御を行なうべく、後述するように必要に応じてマッピングエントリ内に読出し専用、書込み専用、および実行ビットフィールドを設定する。マッピングエントリ内に読出し専用ビットフィールドが設定されている場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域のデータの変更が試みられるならば例外またはフォールトを生起させる。書込み専用ビットフィードが設定される場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域内のデータの読出しが試みられたならば例外またはフォールトを生起させる。実行ビットフィールドが設定されていない場合、メモリ管理装置は、マッピングエントリによりマッピングされたメモリ領域内のデータの実行が試みられるならば例外またはフォールトを生起させる。これらの例外またはフォールトは適当なハンドラにより扱われる。
マッピングエントリによりマッピングされるバイトの数は固定されておらず、必要に応じて変動してもよい。マッピングエントリによりマッピングされるバイトの数は、1個以上の特定のページサイズの倍数である必要がない。マッピングされるバイトの数は、2の倍数または2の累乗である必要がない。マッピングエントリによりマッピングされる開始および終了仮想アドレスは、仮想アドレス空間内のいずれかの特定の境界も整列配置されている必要がなく、必要に応じて変動してもよい。マッピングエントリによりマッピングされる開始および終了物理アドレスは、物理アドレス空間内のいかなる特定の境界で区切る必要はなく、必要に応じて異なっていてもよい。
マッピングエントリは従って、ページの全体または一部を仮想アドレス空間にマッピングする。ページ内の複数の領域を、1個以上のページテーブルエントリ内の1個以上のマッピングエントリを用いて仮想アドレス空間にマッピングしてもよい。
マッピングエントリはページ内の任意の量のデータを仮想アドレス空間にマッピングすることができるため、当該ページは未使用、予備、またはマッピング未実施のスペースを保持し得る。そのような予備のスペースを後で仮想アドレス空間にマッピングして、後述するようにデータの挿入および削除に用いることができる。
本明細書から分かるように、仮想メモリシステムは、仮想アドレス空間において、任意のサイズまたは任意の有効サイズの複数のページをマッピングすることができる。ページのサイズおよび有効サイズは固定されておらず、且つ等しい必要はない。仮想メモリ領域内のページのサイズおよび有効サイズは各々、仮想メモリ領域内の他のページのサイズおよび有効サイズに等しくなくてもよい。ページ内の物理アドレスは固定された境界で区切られていなくてもよい。ページ内の第1のアドレスがマッピングされる仮想アドレスは固定された境界で区切られていなくてもよい。
図11に、本発明の別の好適な実施形態の模式図を示す。これによれば、メモリ管理装置1101は、仮想アドレス空間201、物理アドレス空間202、変換ルックアサイドバッファ1201、ページテーブルエントリ501、マッピングエントリ601、ページテーブルエントリ選択モジュール701、変換記述子選択モジュール702、アドレス計算モジュール801、ページフォールトハンドラ901、およびアクセスコントローラ1001を含んでいる。
図12に変換ルックアサイドバッファ1201を示す。変換ルックアサイドバッファは、1個以上のページテーブルエントリ501を含んでいる。変換ルックアサイドバッファ内の各ページテーブルエントリにはページ番号が関連付けられている。
仮想メモリアドレスにアクセスする場合、選択モジュールはページ番号を用いて変換ルックアサイドバッファのページテーブルエントリを選択する。適当なページテーブルエントリが選択されたならば、上述のように、選択されたページテーブルエントリ内の適当なマッピングエントリの選択を試みる。アドレス計算モジュールは上述のように、物理アドレスを計算する。ここで本システムは、このように計算された物理アドレスにおいてデータにアクセス可能になる。
メモリ管理装置は、適当なページテーブルエントリまたは適当なマッピングエントリが選択できなかった場合、ページフォールトを生成する。ページフォールトハンドラソフトウェア901がページフォールトを扱う。ページフォールトハンドラは、物理メモリ領域またはページを準備し、マッピングエントリを変換ルックアサイドバッファ内のページテーブルエントリに挿入して、本システムに制御を返す。
本実施形態の他の構成要素については既に上で述べている。
図21に本発明の別の好適な実施形態の模式図を示す。これによれば、メモリ管理装置2101は、仮想アドレス空間201、物理アドレス空間202、変換ルックアサイドバッファ2201、ページテーブルエントリ501、マッピングエントリ601、変換記述子選択モジュール702、アドレス計算モジュール801、ページフォールトハンドラ901、およびアクセスコントローラ1001を含んでいる。
図22に変換ルックアサイドバッファ2201を示す。変換ルックアサイドバッファは単一のページテーブルエントリ501を含んでいる。ページテーブルエントリ501は、1個以上のマッピングエントリ601を含んでいる。
本実施形態において、仮想アドレスはページ番号およびページオフセットに分割されていない。仮想アドレス全体がページオフセットとして扱われる。仮想アドレスにおいてメモリ位置にアクセスする場合、変換記述子選択モジュール702は上述のように、ページテーブルエントリ50l内のマッピングエントリの中から適当なマッピングエントリの選択を試みる。アドレス計算モジュールは上述のように物理アドレスを計算する。ここで本システムは、そのように導かれた物理アドレスでデータにアクセス可能になる。
メモリ管理装置は、適当なマッピングエントリが選択できなかった場合、ページフォールトを生成する。ページフォールトハンドラソフトウェア901がページフォールトを扱う。ページフォールトハンドラは、関連する物理メモリ領域またはページを準備し、適当なマッピングエントリを変換ルックアサイドバッファ内のページテーブルエントリに挿入して、本システムに制御を返す。
図31に本発明の別の実施形態を示す。これによれば、仮想メモリ領域3101は、メモリ管理装置101、可変サイズページ3201または3202、ページデータベース3301、データ再配置モジュール3501、データ挿入モジュール3601、およびデータ削除モジュール3701を含んでいる。
図32Aに、サイズがnバイトである可変サイズページ3201を示す。nの値はページ毎に異なっていてもよい。
図32Bに、91バイトの未使用または予備スペースおよび933バイトの有効サイズを合わせて1024バイトの容量を有するページ3202を示す。すなわち、当該ページの933バイトだけが仮想アドレス空間にマッピングされる。ページの有効サイズおよびページ内の未使用スペースの量はページ毎に、且つその時々で異なっていてもよい。
図33にページデータベース3301を示す。ページデータベースは複数のページ3201または3202を含んでいる。ページデータベースは、ページおよびそれらの仮想アドレス、仮想メモリ領域内の各ページのサイズおよび有効サイズを把握している。ページの仮想アドレス、サイズおよび有効サイズは、その時々で異なっていてもよい。
図34に、メモリ管理装置101または1101内のページテーブル401を用いたページデータベース内の複数のページ3201および3202の仮想アドレス空間201へのマッピングの模式図を示す。ページテーブル401内の1個以上のページテーブルエントリ501内の1個以上のマッピングエントリ601は、各可変サイズページ内のアドレスを仮想アドレス空間にマッピングする。
データ再配置モジュール3501は、仮想メモリ領域内の1個以上のメモリデータ要素をより上位または下位の仮想アドレスに再配置する。データ再配置モジュールは、ページディレクトリ内の1個以上のページをそれらの仮想アドレスから分離して、そのようなページに新規仮想アドレスを関連付けることにより、データを再配置する。従って、データ再配置モジュールは、そのようなデータを物理的に複製することなくメモリ領域内のデータをより上位または下位のアドレスに再配置する。
データ挿入モジュール3601は、1個以上のデータ要素を仮想メモリ領域に挿入する。データ挿入モジュールは、データ再配置モジュールを用いて、1個以上の既存データ要素を新規仮想アドレスに再配置する。データ挿入モジュールはまた、ページデータベース内に新規のページを挿入して、当該新規ページに仮想アドレスを関連付けるべく構成されている。データ挿入モジュールはまた、予備の容量を有するページに追加的なデータ要素を挿入すべく構成されている。
データ削除モジュール3701は、仮想メモリ領域内の1個以上のデータ要素を削除する。データ削除モジュールは、ページ内の1個以上の既存データ要素を削除して、予備の容量を増やすべく構成されている。データ削除モジュールはまた、1個以上のデータ要素を、それらがマッピングされている仮想アドレスから分離すべく構成されている。データ削除モジュールはまた、ページデータベース内の1個以上のページを削除すべく構成されている。更に、データ削除モジュールは、データ再配置モジュールを用いて、1個以上のデータ要素を新規仮想アドレスに再配置する。
データ再配置モジュール、データ挿入モジュール、およびデータ削除モジュールは、以下の動作の1個以上を実行することにより、仮想メモリ領域内のデータを再配置、挿入、および削除すべく構成されている。
1.1個以上の新規のページをページデータベース内に挿入する。
2.ページデータベース内の1個以上の既存のページを削除する。
3.データベース内のページを他のページに置換する。
4.ページデータベース内のページの順序を再配置する。
5.ページデータベース内の1個以上のページのサイズを増やす。
6.ページデータベース内の1個以上のページのサイズを減らす。
7.ページデータベース内の1個以上のページを仮想アドレス空間内のより上位アドレスに改めて関連付ける。
8.ページデータベース内の1個以上のページを仮想アドレス空間内のより下位のアドレスに改めて関連付ける。
9.そのようなページ内の未使用スペースを用いて新規のデータを既存のページに挿入して、当該ページの有効サイズを増やす。
10.ページデータベース内のページから既存データを削除し、そのようなページ内の未使用スペースを増やして、当該ページの有効サイズを減らす。
11.ページテーブルまたは変換ルックアサイドバッファ内の1個以上のマッピングエントリを変更することにより、既存のマッピングを再マッピングまたは無効にする。
図38A、38Bに、メモリ領域内でのデータの再配置および挿入方法を示す。データの削除方法は挿入方法の逆である。
図38Aに、例示的な仮想メモリ領域3801に含まれる複数の可変サイズページを示す。これによれば、ページ#1、#2、#3、および#4は、仮想アドレス0、63、93、および792にマッピングされる。更に、ページ#1、#2、#3、および#4は、各々63、30、699および17バイトを仮想アドレス空間にマッピングする。仮想メモリ領域内の合計サイズは809バイトである。
図38Bに、いくつかの既存データを再配置、および新規データを挿入した後、仮想メモリ領域3801に含まれるページを示す。これによれば、ページ#3および#4は各々、アドレス105および804でマッピングされている。ページ#5はメモリ領域内に挿入され、アドレス93にマッピングされる。ページ#1および#2は不変のままである。仮想アドレス空間内のページ#5によりマッピングされたバイトの数は12である。仮想メモリ領域内の新規サイズは821バイトである。
このように、ページ#3および#4内の複数のバイトは、当該ページ内のデータを物理的に複製することなくメモリ領域内のより上位アドレスに再配置され、ページ#5内の複数のバイトはメモリ領域内に挿入される。
図41に本発明の別の実施形態を示す。これによれば、仮想メモリ領域4101は、メモリ管理装置101およびユーザー定義関数4102を含んでいる。
ユーザー定義関数4102は、本システム、プログラマ、またはユーザーにより設定されて動作および/または値を提供する。
仮想メモリ領域内の仮想アドレスがアクセスされた場合、ページフォールトが生じる。ページフォールトハンドラはユーザー定義関数4102を呼び出す。ユーザー定義関数には入力パラメータとして仮想アドレスが与えられ、それに基づいて構成された動作を実行する、および/または値を計算する。値は小さいページに保存される。ページフォールトハンドラは、1個以上のマッピングエントリを用いて仮想アドレスにページをマッピングする。これにより計算された値は仮想アドレスでアクセス可能になる。
図51に本発明の別の実施形態に示す。これによれば、仮想ルックアップテーブル5101は、仮想メモリ領域4101、および複数の仮想テーブルエントリ5102を含んでいる。仮想メモリ領域内の1個以上の仮想アドレスが仮想テーブルエントリを表す。仮想メモリ領域内の全ての仮想テーブルエントリが全体で仮想ルックアップテーブルを表す。
仮想ルックアップテーブル内のエントリがアクセスされた場合、ページフォールトが生じる。ページフォールトハンドラがユーザー定義関数4102を呼び出す。ユーザー定義関数が値を計算する。この計算された値は小さいページに保存され、次いで適当な仮想アドレスにマッピングされる。このように、仮想ルックアップテーブル内でアクセスされたエントリ以外のエントリのために値を計算する必要がない。
ルックアップテーブル内のエントリはまた、マッピングエントリ内に読出し専用ビットフィールドを設定することにより保護することができる。しかし、読出し専用保護を用いない場合、ルックアップテーブル内のエントリは仮想アドレスを用いて変更することができる。そのような任意の変更は、ユーザー定義関数への入力として後続動作で用いることができる。ユーザー定義関数はまた、他の仮想ルックアップテーブルまたは仮想メモリ領域に保存された値を使用することができる。
上述の利点に加え、本発明は他の多くの利点をもたらす。例えば、本発明は、複数のデータ構造の構造および使用法を簡素化することにより、コンピュータの効率を向上させる。本発明は様々なサイズの複数のネットワークパケットを用いた仮想メモリ領域の生成に有用である。本発明はまた、任意のサイズの穴を有するメモリ領域の生成に有用である。
本発明は、ページテーブルまたは変換ルックアサイドバッファ、または他の任意の適当な機構を用いて実装してもよい。本発明はまた、あるレベルの物理アドレスが別のレベルの仮想アドレスであるように、複数のレベルで実装してもよい。ページディレクトリ、セグメント化等のサポートを含めることにより、ページ変換機構を拡張してもよい。
マッピングエントリの構造のいくつかの変型例によりページテーブルエントリまたはTEBエントリのサイズを減らすことができる。例えば、上位ビットのいくつかを除去することによりLABフィールドを切り捨てることができる。これは、ページ番号がそのようなビットの値を示唆するためである。2個のマッピングエントリを有するページテーブルエントリの場合、そのような値は先行エントリのLAB+BCから容易に導くことができるため、第2のマッピングエントリのLABは必要とされない。更に、第2のマッピングエントリのPAB内の複数の下位ビットは、それらの値が適当な条件の下でゼロであることが保証できるため、除外することができる。
好適な実施形態により、1バイトのメモリマッピングの粒度を示す。ビット、ワード、倍長ワード等の他のデータ型、または他のレコード型を用いてマッピング処理の粒度を変更することが可能である。
本発明を用いて、複数のページを、単一のページテーブルエントリを用いて、または単一のページフレームへ、マッピングすることができる。またページテーブルエントリを用いて、単一のページを、複数のページテーブルエントリを用いて、または複数のページフレームへ、マッピングすることもできる。更に、ページフレーム内の全てのアドレスを同時にマッピングする必要がなく、ページテーブルエントリを用いてページフレームの一部だけを物理メモリにマッピングすることができる。
本発明はまた、上述の特徴の1個以上を備えたコンピュータその他の電子装置を含んでいる。
上述の説明が多くの具体例を含んでいるが、これらが本発明の範囲を限定するものではなく、むしろそれらの好適な実施例として解釈されたい。他の多くの変型例も可能である。

Claims (54)

  1. 物理アドレス空間を仮想アドレス空間にマッピングするメモリ管理装置であって、
    a.複数の仮想アドレスを含む仮想アドレス空間、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間、
    c.1個以上の変換記述子、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子とページ内の複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を含み、
    i.変換記述子によりマッピングされた前記アドレスの数が2(nは自然数)に等しくない、または
    ii.変換記述子に関連付けられた前記仮想アドレスの数が2(nは自然数)に等しくない、または
    iii.変換記述子に関連付けられた前記物理アドレスの数が2(nは自然数)に等しくないメモリ管理装置。
  2. 物理アドレス空間を仮想アドレス空間にマッピングするメモリ管理装置であって、
    a.複数の仮想アドレスを含む仮想アドレス空間、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間、
    c.1個以上の変換記述子、および
    i.仮想アドレス空間の1個以上の仮想アドレスの範囲と変換記述子との関連を維持し、
    ii.変換記述子と1個以上の物理アドレスの範囲との関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を含み、
    i.変換記述子に関連付けられた仮想アドレスの範囲内の第1の仮想アドレスが、前記変換記述子によりマッピングされた前記アドレスの数の倍数ではない、または
    ii.前記変換記述子に関連付けられた物理アドレスの範囲内の第1の物理アドレスが、前記変換記述子によりマッピングされた前記アドレスの数の倍数ではないメモリ管理装置。
  3. 物理アドレス空間を仮想アドレス空間にマッピングするメモリ管理装置であって、
    a.複数の仮想アドレスを含む仮想アドレス空間、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間、
    c.1個以上の変換記述子、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子と複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を含み、
    i.仮想アドレスのページオフセットを含むビットの値が、自身に関連付けられた物理アドレスの対応ビットの値に等しくない、または
    ii.仮想アドレス内のページオフセットが、自身に関連付けられた物理アドレスと、前記関連付けられた物理アドレスが含まれるページの前記物理アドレスとの差に等しくないメモリ管理装置。
  4. 物理アドレス空間を仮想アドレス空間にマッピングするメモリ管理装置であって、
    a.複数の仮想アドレスを含む仮想アドレス空間、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間、
    c.1個以上の変換記述子、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子と複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を含み、
    前記仮想アドレス空間内の最上位または最下位仮想アドレスにマッピングされた物理アドレスを含まないページのサイズまたは有効サイズが、2(nは自然数)に等しくない数であるメモリ管理装置。
  5. 物理アドレス空間を仮想アドレス空間にマッピングするメモリ管理装置であって、
    a.複数の仮想アドレスを含む仮想アドレス空間、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間、
    c.1個以上の変換記述子、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子と複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を含み、
    ページが仮想アドレス空間にマッピングされる複数の物理アドレスを含んでいて、前記ページはまた予備のスペースを含み、予備のスペースとは前記仮想アドレス空間にマッピング可能であるが、前記仮想アドレス空間にはマッピングされていない前記ページ内の複数の物理アドレスである、メモリ管理装置。
  6. 変換記述子が、前記変換記述子に関連付けられた1個以上の仮想アドレスに対するアクセス制御を行なうべく構成されている、請求項1、2、3、4、または5のいずれか1項に記載のメモリ管理装置。
  7. ページがマッピングされる前記仮想アドレスが、
    i.前記ページのサイズの倍数でも
    ii.前記ページの有効サイズの倍数でも
    ない、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  8. ページの前記物理アドレスが、
    i.前記ページのサイズの倍数でも
    ii.前記ページの有効サイズの倍数でも
    ない、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  9. ページのサイズが2(nは自然数)に等しくない数である、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  10. 仮想アドレス空間にマッピングされたページのサイズが、同じく前記仮想アドレス空間にマッピングされた他のページのサイズより大きく、且つ前記他のページのサイズが1より大きい、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  11. 前記ページのサイズが前記他のページのサイズの倍数ではない、請求項10に記載のメモリ管理装置。
  12. ページの有効サイズが2(nは自然数)に等しくない数である、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  13. 仮想アドレス空間にマッピングされたページの有効サイズが、同じく前記仮想アドレス空間にマッピングされた他のページの有効サイズにより大きく、且つ前記他のページのサイズが1より大きい、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  14. 前記ページの有効サイズが前記他のページの有効サイズの倍数ではない、請求項13に記載のメモリ管理装置。
  15. ページ内の物理アドレスを仮想アドレスにマッピングするページテーブルエントリが、前記ページ内の1個以上の他の物理アドレスを前記仮想アドレスにマッピングするページテーブルエントリではない、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  16. ページテーブルエントリがページ内に含まれる物理アドレスを仮想アドレスにマッピングし、且つ他のページ内に含まれる物理アドレスを前記仮想アドレスにマッピングする、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  17. ページのサイズまたは有効サイズが、単一の変換記述子に関連付けられた前記ページ内に含まれる物理アドレスの数の倍数ではない、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  18. 仮想アドレスが、前記仮想アドレスがアクセスされた場合にフォールトハンドラにより呼び出されるプロシージャに関連付けられている、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  19. 前記プロシージャがページに値を保存して、前記ページを前記仮想アドレス空間にマッピングする、請求項18に記載のメモリ管理装置。
  20. 前記プロシージャが設定可能である、請求項18に記載のメモリ管理装置。
  21. 仮想ルックアップテーブルを更に含み、前記仮想ルックアップテーブルが複数のルックアップテーブルエントリを含んでいて、各ルックアップテーブルエントリには1個以上の仮想アドレスが関連付けられていて、
    前記プロシージャは、前記ルックアップテーブルエントリに関連付けられた仮想アドレスがアクセスされた場合に、前記ルックアップテーブルエントリに対応する値を決定し、前記値をページに保存して、前記ページを前記仮想アドレス空間にマッピングする、請求項18に記載のメモリ管理装置。
  22. 前記ルックアップテーブルエントリに関連付けられた仮想アドレスがアクセスされない場合、前記ルックアップテーブルエントリの値を計算する必要も前記仮想アドレス空間に保存する必要もない、請求項21に記載のメモリ管理装置。
  23. a.前記仮想アドレス空間内の複数の仮想アドレスに論理的に保存された複数のデータ要素を含む仮想メモリ領域、および
    i.1個以上のページ内の1個以上の物理アドレスをそれらの既存の仮想アドレスから分離する、および
    ii.前記1個以上物理アドレスを新規仮想アドレスに改めて関連付けることにより、
    b.前記仮想メモリ領域内の1個以上のデータ要素をそれらの既存の仮想アドレスから前記仮想アドレス空間内の新規仮想アドレスに再配置するためのデータ再配置モジュールを更に含む、請求項1、2、3、4、5、または6のいずれか1項に記載のメモリ管理装置。
  24. 新規位置に再配置された物理アドレスの数が2(nは自然数)に等しい数である、請求項23に記載のメモリ管理装置。
  25. 新規位置に再配置された物理アドレスの数が2(nは自然数)に等しくない数である、請求項23に記載のメモリ管理装置。
  26. a.前記データ再配置モジュールに、1個以上の既存データ要素を新規仮想アドレスに再配置させる、および
    b.既に仮想アドレスにマッピングされていない追加的な物理アドレスであるページ内の追加的な物理アドレスを、他の物理アドレスがマッピングされている仮想アドレスよりも下位の仮想アドレスにマッピングすることにより、
    前記仮想メモリ領域に1個以上の追加的なデータ要素を挿入するデータ挿入モジュールを更に含む、請求項23に記載のメモリ管理装置。
  27. a.ページ内の物理アドレスを自身がマッピングされている前記仮想アドレスからマッピング解除する、および
    b.前記データ再配置モジュールに、1個以上の既存データ要素を新規仮想アドレスに再配置させることにより、
    前記仮想メモリ領域内の1個以上のデータ要素を削除するデータ削除モジュールを更に含む、請求項23に記載のメモリ管理装置。
  28. メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法であって、
    a.複数の仮想アドレスを含む仮想アドレス空間を提供するステップ、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間を提供するステップ、
    c.1個以上の変換記述子を提供するステップ、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子とページ内の複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持するステップを含み、
    i.変換記述子によりマッピングされた前記アドレスの数が2(nは自然数)に等しくない、または
    ii.変換記述子に関連付けられた前記仮想アドレスの数が2(nは自然数)に等しくない、または
    iii.変換記述子に関連付けられた前記物理アドレスの数が2(nは自然数)に等しくない方法。
  29. メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法であって、
    a.複数の仮想アドレスを含む仮想アドレス空間を提供するステップ、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間を提供するステップ、
    c.1個以上の変換記述子を提供するステップ、および
    i.仮想アドレス空間の1個以上の仮想アドレスの範囲と変換記述子との関連を維持し、
    ii.変換記述子と1個以上の物理アドレスの範囲との関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持する装置を提供するステップを含み、
    i.変換記述子に関連付けられた仮想アドレスの範囲内の第1の仮想アドレスが、前記変換記述子によりマッピングされた前記アドレスの数の倍数ではない、または
    ii.変換記述子に関連付けられた物理アドレスの範囲内の第1の物理アドレスが、前記変換記述子によりマッピングされた前記アドレスの数の倍数ではない方法。
  30. メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法であって、
    a.複数の仮想アドレスを含む仮想アドレス空間を提供するステップ、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間を提供するステップ、
    c.1個以上の変換記述子を提供するステップ、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子とページ内の複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持するステップを含み、
    i.仮想アドレスのページオフセットを含むビットの値が、自身に関連付けられた物理アドレスの対応ビットの値に等しくない、または
    ii.仮想アドレス内のページオフセットが、自身に関連付けられた物理アドレスと、前記関連付けられた物理アドレスが含まれるページ内の物理アドレスとの差に等しくない方法。
  31. メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法であって、
    a.複数の仮想アドレスを含む仮想アドレス空間を提供するステップ、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間を提供するステップ、
    c.1個以上の変換記述子を提供するステップ、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子とページ内の複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持するステップを含み、
    ページのサイズまたは有効サイズが、2(nは自然数)に等しくない数である方法。
  32. メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法であって、
    a.複数の仮想アドレスを含む仮想アドレス空間を提供するステップ、
    b.各ページが1個以上の物理アドレスを含む複数のページを含む物理アドレス空間を提供するステップ、
    c.1個以上の変換記述子を提供するステップ、および
    i.複数の仮想アドレスと変換記述子との関連を維持し、
    ii.変換記述子と複数の物理アドレスとの関連を維持することにより、
    d.複数の仮想アドレスと複数の物理アドレスとの関連を維持するステップを含み、
    ページが仮想アドレス空間にマッピングされる複数の物理アドレスを含んでいて、前記ページはまた予備のスペースを含み、予備のスペースとは前記仮想アドレス空間にマッピング可能であるが、前記仮想アドレス空間にはマッピングされていない前記ページ内の複数の物理アドレスである方法。
  33. 変換記述子が、前記変換記述子に関連付けられた1個以上の仮想アドレスに対するアクセス制御を行なうべく構成されている、メモリ管理装置内の物理アドレス空間を仮想アドレス空間にマッピングする方法。
  34. ページがマッピングされる前記仮想アドレスが、
    i.前記ページのサイズの倍数でも、
    ii.前記ページの有効サイズの倍数でも
    ない、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  35. ページの前記物理アドレスが、
    i.前記ページのサイズの倍数でも、
    ii.前記ページの有効サイズの倍数でも
    ない、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  36. ページのサイズが2(nは自然数)に等しくない数である、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  37. 仮想アドレス空間にマッピングされたページのサイズが、同じく前記仮想アドレス空間にマッピングされた他のページのサイズより大きく、且つ前記他のページのサイズが1より大きい、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  38. 前記ページのサイズが前記他のページのサイズの倍数ではない、請求項37に記載のメモリ管理装置。
  39. ページの有効サイズが2(nは自然数)に等しくない数である、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  40. 仮想アドレス空間にマッピングされたページの有効サイズが、同じく前記仮想アドレス空間にマッピングされた他のページの有効サイズにより大きく、且つ前記他のページのサイズが1より大きい、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  41. 前記ページの有効サイズが前記他のページの有効サイズの倍数ではない、請求項40に記載のメモリ管理装置。
  42. ページ内の物理アドレスを仮想アドレスにマッピングするページテーブルエントリが、前記ページ内の1個以上の他の物理アドレスを前記仮想アドレスにマッピングするページテーブルエントリではない、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  43. ページテーブルエントリがページ内に含まれる物理アドレスを仮想アドレスにマッピングし、且つ他のページ内に含まれる物理アドレスを前記仮想アドレスにマッピングする、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  44. ページのサイズまたは有効サイズが、単一の変換記述子に関連付けられた前記ページ内に含まれる物理アドレスの数の数の倍数ではない、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  45. 仮想アドレスが、前記仮想アドレスがアクセスされた場合に呼び出されるプロシージャに関連付けられている、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  46. 前記プロシージャがページに値を保存して、前記ページを前記仮想アドレス空間にマッピングする、請求項45に記載のメモリ管理装置。
  47. 前記プロシージャが設定可能である、請求項45に記載のメモリ管理装置。
  48. a.複数のルックアップテーブルエントリを含む仮想ルックアップテーブルであって、各ルックアップテーブルエントリに1個以上の仮想アドレスが関連付けられている仮想ルックアップテーブルを提供する、および
    b.ルックアップテーブルエントリに対応する値をページに保存し、前記ルックアップテーブルエントリに関連付けられた仮想アドレスがアクセスされた場合に、前記ページを仮想アドレス空間にマッピングする、請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  49. 前記ルックアップテーブルエントリに関連付けられた仮想アドレスがアクセスされない場合、前記ルックアップテーブルエントリの値を計算する必要も前記仮想アドレス空間に保存する必要もない、請求項48に記載のメモリ管理装置。
  50. a.前記仮想アドレス空間内の複数の仮想アドレスに論理的に保存された複数のデータ要素を含む仮想メモリ領域を提供するステップ、および
    i.1個以上のページ内の1個以上の物理アドレスをそれらの既存の仮想アドレスから分離する、および
    ii.前記1個以上物理アドレスを新規仮想アドレスに改めて関連付けることにより、
    b.前記仮想メモリ領域内の1個以上のデータ要素をそれらの既存の仮想アドレスから前記仮想アドレス空間内の新規仮想アドレスに再配置するステップ、
    請求項28、29、30、31、32、または33のいずれか1項に記載の方法。
  51. 新規位置に再配置された物理アドレスの数が2(nは自然数)に等しい数である、請求項50に記載のメモリ管理装置。
  52. 新規位置に再配置された物理アドレスの数が2(nは自然数)に等しくない数である、請求項50に記載のメモリ管理装置。
  53. a.1個以上の既存データ要素を新規仮想アドレスに再配置させる、および
    b.既に仮想アドレスにマッピングされていない追加的な物理アドレスであるページ内の追加的な物理アドレスを、他の物理アドレスがマッピングされている仮想アドレスよりも下位の仮想アドレスにマッピングすることにより、
    前記仮想メモリ領域の1個以上の追加的なデータ要素を前記仮想アドレス空間に挿入する、請求項50に記載のメモリ管理装置。
  54. a.ページ内の物理アドレスを自身がマッピングされている前記仮想アドレスからマッピング解除する、および
    b.1個以上の既存データ要素を新規仮想アドレスに再配置させることにより、
    前記仮想メモリ領域内の1個以上のデータ要素を削除する、請求項50に記載の方法。
JP2012530409A 2009-09-25 2010-09-22 メモリ管理装置及び仮想メモリ領域を提供する方法 Active JP5647252B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN2020/CHE/2009 2009-09-25
IN2020CH2009 2009-09-25
PCT/IN2010/000641 WO2011048606A2 (en) 2009-09-25 2010-09-22 Virtual-memory system with variable-sized pages

Publications (2)

Publication Number Publication Date
JP2013509621A true JP2013509621A (ja) 2013-03-14
JP5647252B2 JP5647252B2 (ja) 2014-12-24

Family

ID=43757915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012530409A Active JP5647252B2 (ja) 2009-09-25 2010-09-22 メモリ管理装置及び仮想メモリ領域を提供する方法

Country Status (6)

Country Link
US (1) US20120185667A1 (ja)
EP (1) EP2529309A2 (ja)
JP (1) JP5647252B2 (ja)
CN (1) CN102754086B (ja)
CA (1) CA2775306A1 (ja)
WO (1) WO2011048606A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021531583A (ja) * 2018-07-27 2021-11-18 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP2021532468A (ja) * 2018-07-27 2021-11-25 アーム・リミテッド メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014504381A (ja) * 2010-05-19 2014-02-20 カムレッシュ ガンディー データオブジェクトの構成
US20130254511A1 (en) * 2010-10-22 2013-09-26 St-Ericsson Sa Improving Storage Lifetime Using Data Swapping
JP5393813B2 (ja) * 2012-01-27 2014-01-22 京セラドキュメントソリューションズ株式会社 メモリー管理装置および画像処理装置
JP5949046B2 (ja) * 2012-03-28 2016-07-06 ソニー株式会社 記録装置、記録方法
US9058268B1 (en) * 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
CN103793331B (zh) * 2012-10-31 2016-12-21 安凯(广州)微电子技术有限公司 一种物理内存管理方法及装置
US9329991B2 (en) 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US10114758B2 (en) * 2013-09-13 2018-10-30 Nvidia Corporation Techniques for supporting for demand paging
US9519649B2 (en) 2013-10-07 2016-12-13 International Business Machines Corporation Free space management in a database
US9213600B2 (en) 2013-11-11 2015-12-15 Seagate Technology Llc Dynamic per-decoder control of log likelihood ratio and decoding parameters
CN105468542B (zh) * 2014-09-03 2019-03-26 杭州华为数字技术有限公司 地址分配方法及装置
CN106528453B (zh) * 2015-09-10 2019-10-18 中国航空工业第六一八研究所 基于复合尺度页的页表分区管理装置和方法
WO2017044124A1 (en) * 2015-09-11 2017-03-16 Hewlett Packard Enterprise Development Lp Switch process virtual address space
KR101754348B1 (ko) * 2016-06-17 2017-07-06 고려대학교 산학협력단 정보 저장 테이블을 관리하는 분석 시스템 및 그의 제어 방법
US10169246B2 (en) * 2017-05-11 2019-01-01 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
CN107644000B (zh) * 2017-09-20 2020-11-03 中国核动力研究设计院 一种基于at96总线的页面扩展方法
GB2568301B (en) 2017-11-13 2020-05-13 Advanced Risc Mach Ltd Address space access control
US10599580B2 (en) * 2018-05-23 2020-03-24 International Business Machines Corporation Representing an address space of unequal granularity and alignment
DE112019007482T5 (de) * 2019-06-21 2022-04-21 Intel Corporation Verfahren, systeme, fertigungartikel und vorrichtungen zur steuerung von adressraumisolierung in einer virtuellen maschine
CN110287131B (zh) * 2019-07-01 2021-08-20 潍柴动力股份有限公司 一种内存管理方法及装置
WO2021120132A1 (zh) * 2019-12-19 2021-06-24 华为技术有限公司 一种存储***及数据交叉方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6417137A (en) * 1987-07-13 1989-01-20 Nippon Telegraph & Telephone Control system for large-capacity page
US5708790A (en) * 1995-12-12 1998-01-13 International Business Machines Corporation Virtual memory mapping method and system for address translation mapping of logical memory partitions for BAT and TLB entries in a data processing system
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5835961A (en) * 1996-05-03 1998-11-10 Digital Equipment Corporation System for non-current page table structure access
US6477612B1 (en) * 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US7484070B1 (en) * 2004-01-09 2009-01-27 Conexant Systems, Inc. Selective memory block remapping
US7296139B1 (en) * 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US8504795B2 (en) * 2004-06-30 2013-08-06 Intel Corporation Method, system, and program for utilizing a virtualized data structure table
US7386700B2 (en) * 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
US7895410B1 (en) * 2005-06-14 2011-02-22 Oracle America, Inc. Method and apparatus for facilitating adaptive page sizes
US7516297B2 (en) * 2005-11-10 2009-04-07 Hewlett-Packard Development Company, L.P. Memory management
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US8527734B2 (en) * 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
JP2011018182A (ja) * 2009-07-08 2011-01-27 Panasonic Corp アドレス変換装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6417137A (en) * 1987-07-13 1989-01-20 Nippon Telegraph & Telephone Control system for large-capacity page
US5708790A (en) * 1995-12-12 1998-01-13 International Business Machines Corporation Virtual memory mapping method and system for address translation mapping of logical memory partitions for BAT and TLB entries in a data processing system
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200801048001; Douglas E.Comer: Essentials of Computer Architecture 第1版, 20080422, P.207,208, 株式会社翔泳社 *
JPN6014003738; Douglas E.Comer: Essentials of Computer Architecture 第1版, 20080422, P.207,208, 株式会社翔泳社 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021531583A (ja) * 2018-07-27 2021-11-18 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP2021532468A (ja) * 2018-07-27 2021-11-25 アーム・リミテッド メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
JP7359837B2 (ja) 2018-07-27 2023-10-11 アーム・リミテッド メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
JP7397057B2 (ja) 2018-07-27 2023-12-12 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
US11907301B2 (en) 2018-07-27 2024-02-20 Arm Limited Binary search procedure for control table stored in memory system

Also Published As

Publication number Publication date
EP2529309A2 (en) 2012-12-05
WO2011048606A3 (en) 2011-06-23
CN102754086B (zh) 2015-09-16
US20120185667A1 (en) 2012-07-19
CN102754086A (zh) 2012-10-24
WO2011048606A2 (en) 2011-04-28
JP5647252B2 (ja) 2014-12-24
CA2775306A1 (en) 2011-04-28

Similar Documents

Publication Publication Date Title
JP5647252B2 (ja) メモリ管理装置及び仮想メモリ領域を提供する方法
EP2510444B1 (en) Hierarchical translation tables control
TWI356995B (en) Data processing apparatus having memory protection
US10956340B2 (en) Hardware-based pre-page walk virtual address transformation independent of page size utilizing bit shifting based on page size
US10061711B2 (en) File access method and apparatus, and storage system
US6230248B1 (en) Method and apparatus for pre-validating regions in a virtual addressing scheme
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
US7149873B2 (en) Methods and apparatus for a dual address space operating system
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
KR20210033054A (ko) 컴퓨터 프로세서의 가상 머신 레지스터
WO2008094455A2 (en) Hierarchical immutable content-addressable memory processor
US11409663B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US11237980B2 (en) File page table management technology
US11334499B2 (en) Method for locating metadata
US9047175B2 (en) System and method for storing and modifying data objects
KR20210038992A (ko) 하이퍼바이저의 존재를 기반으로 한 컴퓨터 프로세서의 동적 구성
CA2758235A1 (en) Device and method for storage, retrieval, relocation, insertion or removal of data in storage units
JP2015060571A (ja) キャッシュメモリシステムおよびプロセッサシステム
Wongchaowart et al. A content-aware block placement algorithm for reducing PRAM storage bit writes
JP2013140546A (ja) メモリ管理装置
KR20190005135A (ko) 비휘발성 메모리의 데이터 스와핑 방법 및 장치

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140507

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141106

R150 Certificate of patent or registration of utility model

Ref document number: 5647252

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250