(57)【要約】【課題】本発明は可変ページサイズを実装し得る改善されたシステムを提供する。【解決手段】複数のページテーブルエントリを含むページテーブルであって、その各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含むページテーブルと、対応するメモリページサイズ情報を含む複数のページテーブルエントリの情報をキャッシュするように適応されたトランスレーションルックアサイドバッファと、メモリ管理ソフトウェアであって、該ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズの１つ以上のページテーブルエントリに統合するために、ページテーブルにおける変更に応答し、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをさらにアップデートするメモリ管理ソフトウェアとを備える、処理システム。【選択図】なし【特許請求の範囲】
【請求項１】
処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリについての情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリ管理ソフトウェアと
を備える、処理システム。
【請求項２】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、請求項１に記載の処理システム。
【請求項３】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、請求項１に記載の処理システム。
【請求項４】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項１に記載の処理システム。
【請求項５】
処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリに対応する情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの１つ以上の対応するエントリのアップデートを容易にする、メモリ管理ソフトウェアと
を備える、処理システム。
【請求項６】
前記メモリ管理ソフトウェアは、前記トランスレーションルックアサイドバッファの前記１つ以上の対応するエントリを直接アップデートする、請求項５に記載の処理システム。
【請求項７】
前記メモリ管理ソフトウェアは、１つ以上のさらなるソフトウェアモジュールを介して、前記トランスレーションルックアサイドバッファの前記１つ以上の対応するエントリを間接的にアップデートする、請求項５に記載の処理システム。
【請求項８】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項５に記載の処理システム。
【請求項９】
前記新しいメモリページサイズ情報は、４キロバイトの倍数であるページサイズに対応する、請求項５に記載の処理システム。
【請求項１０】
前記メモリ管理ソフトウェアは、前記新しいメモリページサイズ情報による、前記隣接するページテーブルエントリのすべてに対する前記メモリページサイズ情報のアップデートを容易にするために、前記ページテーブルにおける変更に応答する、請求項５に記載の処理システム。
【請求項１１】
前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより大きいメモリページサイズを表す、請求項５に記載の処理システム。
【請求項１２】
前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項５に記載の処理システム。
【請求項１３】
前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項１１に記載の処理システム。
【請求項１４】
前記処理システムは、単一のページテーブルを備える、請求項５に記載の処理システム。
【請求項１５】
前記処理システムは、複数のページテーブルを備える、請求項５に記載の処理システム。
【請求項１６】
前記処理システムは、単一のトランスレーションルックアサイドバッファを備える、請求項５に記載の処理システム。
【請求項１７】
前記処理システムは、複数のトランスレーションルックアサイドバッファを備える、請求項５に記載の処理システム。
【請求項１８】
前記複数のトランスレーションルックアサイドバッファは、
第１のメモリページサイズを有するページテーブルエントリをキャッシュする第１のトランスレーションルックアサイドバッファと、
第２のメモリページサイズを有するページテーブルエントリをキャッシュする第２のトランスレーションルックアサイドバッファであって、該第２のメモリページサイズは、該第１のメモリページサイズと異なる、第２のトランスレーションルックアサイドバッファと
を備える、請求項１７に記載の処理システム。
【請求項１９】
メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
【請求項２０】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、請求項１９に記載のメモリ管理ソフトウェア。
【請求項２１】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、請求項１９に記載のメモリ管理ソフトウェア。
【請求項２２】
前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項１９に記載のメモリ管理ソフトウェア。
【請求項２３】
メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブル管理ソフトウェアによってなされた該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリページサイズ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの１つ以上の対応するエントリのアップデートを容易にする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
【請求項２４】
前記新しいメモリページサイズ情報は、４キロバイトの倍数であるページサイズに対応する、請求項１８に記載のメモリ管理ソフトウェア。
【請求項２５】
前記メモリページサイズ管理ソフトウェアは、前記トランスレーションルックアサイドバッファの１つ以上の対応するエントリを直接アップデートする、請求項２３に記載のメモリ管理ソフトウェア。
【請求項２６】
前記メモリページサイズ管理ソフトウェアは、前記トランスレーションルックアサイドバッファ管理ソフトウェアと協働して、前記トランスレーションルックアサイドバッファの１つ以上の対応するエントリを間接的にアップデートする、請求項２３に記載のメモリ管理ソフトウェア。
【請求項２７】
前記メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリページサイズ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項２３に記載のメモリ管理ソフトウェア。
【請求項２８】
前記メモリページサイズ管理ソフトウェアは、前記新しいメモリページサイズ情報による、前記隣接するページテーブルエントリのすべてに対する前記メモリページサイズ情報のアップデートを容易にするために、前記ページテーブルにおける変更に応答する、請求項２３に記載のメモリ管理ソフトウェア。
【請求項２９】
前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより大きいメモリページサイズを表す、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３０】
前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３１】
前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項２９に記載のメモリ管理ソフトウェア。
【請求項３２】
前記ページテーブル管理ソフトウェアは、単一のページテーブルのページテーブルエントリを管理するように適応される、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３３】
前記ページテーブル管理ソフトウェアは、複数のページテーブルのページテーブルエントリを管理するように適応される、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３４】
前記トランスレーションルックアサイドバッファ管理ソフトウェアは、単一のトランスレーションルックアサイドバッファを管理するように適応される、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３５】
前記トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理するように適応される、請求項２３に記載のメモリ管理ソフトウェア。
【請求項３６】
前記複数のトランスレーションルックアサイドバッファは、異なるページサイズを有する、請求項３５に記載のメモリ管理ソフトウェア。
【請求項３７】
処理システムのメモリを管理するための方法であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対応する、トランスレーションルックアサイドバッファの１つ以上のエントリをアップデートすることと
を包含する、方法。
【請求項３８】
処理システムのメモリを管理するための方法を実行するように適応されたソフトウェアコードを備えるストレージ媒体であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対応する、トランスレーションルックアサイドバッファの１つ以上のエントリをアップデートすることと
を包含する、ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理システムにおけるメモリ管理に関し、特に、可変のページサイズのメモリ編成を実装する処理システムに関する。
【背景技術】
【０００２】
（発明の背景）
処理システムのメモリが編成され得る様々な異なる方法がある。そのような方法の１つは、仮想メモリの使用を介する。仮想メモリは、メモリ空間のサイズおよびアドレス指定が厳密に処理システムの物理メモリに拘束されない、メモリアドレス空間においてソフトウェアを実行することを可能にする。仮想メモリシステムにおいて、オペレーティングシステムは、仮想メモリを物理メモリにマップする。オペレーティングシステムは、アドレスが要求される場合に、そのアドレスが現在メインメモリと関連しないことを検出するために、このマッピングを用いることにより、要求されるデータがアクセスされ得る。
【０００３】
仮想メモリは、ページングを通して実装され得る。処理システムがページングを用いる場合に、仮想アドレスの下位ビットは、保持されて、実際の物理アドレスの下位ビットとして直接用いられる。対照的に、上位ビットは、連続的な物理アドレスの範囲に対応する、１つ以上のアドレス変換テーブルへのキーまたはインデックスとして取扱われ得る。そのような範囲によって参照されるメモリは、ページと呼ばれ得る。ページサイズは、例えば、５１２バイトから８メガバイトの範囲のサイズであり得る。
【０００４】
仮想メモリと物理メモリとの間のマッピングは、ページテーブル配列のページテーブルエントリにおいて保存され得る。これらのページテーブルエントリは、仮想アドレスから物理アドレスへの変換を実行するためにオペレーティングシステムによって用いられ得る。処理システムはまた、仮想メモリアドレスが対応する物理アドレスに変換される効率を高めるために、トランスレーションルックアサイドバッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）（ＴＬＢ）を含み得る。ＴＬＢは、仮想アドレスをそれに対応する物理アドレスに変換するスピードを高めるために、様々なページテーブルエントリの部分を含む、固定数のエントリを有し得るキャッシュである。ＴＬＢは、検索キーが仮想アドレスであり、検索結果が物理アドレスおよびアクセス許可である、内容アドレスメモリ（ｃｏｎｔｅｎｔ−ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）を含み得る。ＴＬＢの検索が一致を生じる場合、変換は、非常に迅速であると公知であり、物理アドレスは、メモリにアクセスするために用いられる。仮想アドレスがＴＬＢ中に無い場合、変換は、ページテーブルを介して進み、完了までにより長くかかり得る。
【０００５】
仮想／物理アドレス空間のページサイズはしばしば、固定され得、かつ／または動的に変更され難くあり得る。それにもかかわらず、ページテーブルエントリおよびＴＬＢエントリにおいて用いられるページサイズは、システムメモリの性能に対して影響を有し得る。より小さなページサイズは、メモリアクセス許可の制御に高い細分性が要求される場合に、有利であり得る。同様に、小さなページサイズは、アプリケーションがその動作のために仮想メモリ空間の小さな部分を要求するだけの場合に、有利であり得る。しかし、大きなページサイズは、仮想メモリ空間が大きなページに編成される場合に、ＴＬＢミスが発生する可能性がより低いので、ＴＬＢに関連して用いられる場合に有利であり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複数のページサイズを採用する多くのシステムは、静的な方法においてそのように動く。そのようなシステムの多機能性は、制限され得る。他のシステムは、ハードウェアを用いる動的な方法において複数のページサイズを実装する。複数のＴＬＢはまた、各ページサイズと関連づけられる異なる特性によって用いられ得る。しかし、複数のページサイズを実現し得る方法は、それがハードウェアにおいて実装され、かなりの量のコストをシステムに追加し得る方法に限定される。従って、可変のページサイズを実装し得る、改良されたシステムに対するニーズが存在する。
【課題を解決するための手段】
【０００７】
（概要）
処理システムは、ページテーブルにおける変更に応答的なメモリ管理ソフトウェアを含む。メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合する。メモリ管理ソフトウェアは、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをアップデートする。
【０００８】
本発明の他のシステム、方法、特徴、および利点は、以下の図面および詳細な説明の考査において当業者にとって明らかであるかまたは明らかになる。すべてのそのような追加のシステム、方法、特徴、および利点が、この説明の中に含まれ、本発明の範囲の中にあり、以下の特許請求の範囲によって保護されることは意図されている。
【０００９】
例えば、本発明は以下を提供する。
【００１０】
（項目１）  処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリについての情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリ管理ソフトウェアと
を備える、処理システム。
【００１１】
（項目２）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、項目１に記載の処理システム。
【００１２】
（項目３）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、項目１に記載の処理システム。
【００１３】
（項目４）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目１に記載の処理システム。
【００１４】
（項目５）  処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリに対応する情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの１つ以上の対応するエントリのアップデートを容易にする、メモリ管理ソフトウェアと
を備える、処理システム。
【００１５】
（項目６）  上記メモリ管理ソフトウェアは、上記トランスレーションルックアサイドバッファの上記１つ以上の対応するエントリを直接アップデートする、項目５に記載の処理システム。
【００１６】
（項目７）  上記メモリ管理ソフトウェアは、１つ以上のさらなるソフトウェアモジュールを介して、上記トランスレーションルックアサイドバッファの上記１つ以上の対応するエントリを間接的にアップデートする、項目５に記載の処理システム。
【００１７】
（項目８）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目５に記載の処理システム。
【００１８】
（項目９）  上記新しいメモリページサイズ情報は、４キロバイトの倍数であるページサイズに対応する、項目５に記載の処理システム。
【００１９】
（項目１０）  上記メモリ管理ソフトウェアは、上記新しいメモリページサイズ情報による、上記隣接するページテーブルエントリのすべてに対する上記メモリページサイズ情報のアップデートを容易にするために、上記ページテーブルにおける変更に応答する、項目５に記載の処理システム。
【００２０】
（項目１１）  上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより大きいメモリページサイズを表す、項目５に記載の処理システム。
【００２１】
（項目１２）  上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目５に記載の処理システム。
【００２２】
（項目１３）  上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目１１に記載の処理システム。
【００２３】
（項目１４）  上記処理システムは、単一のページテーブルを備える、項目５に記載の処理システム。
【００２４】
（項目１５）  上記処理システムは、複数のページテーブルを備える、項目５に記載の処理システム。
【００２５】
（項目１６）  上記処理システムは、単一のトランスレーションルックアサイドバッファを備える、項目５に記載の処理システム。
【００２６】
（項目１７）  上記処理システムは、複数のトランスレーションルックアサイドバッファを備える、項目５に記載の処理システム。
【００２７】
（項目１８）  上記複数のトランスレーションルックアサイドバッファは、
第１のメモリページサイズを有するページテーブルエントリをキャッシュする第１のトランスレーションルックアサイドバッファと、
第２のメモリページサイズを有するページテーブルエントリをキャッシュする第２のトランスレーションルックアサイドバッファであって、該第２のメモリページサイズは、該第１のメモリページサイズと異なる、第２のトランスレーションルックアサイドバッファと
を備える、項目１７に記載の処理システム。
【００２８】
（項目１９）  メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
【００２９】
（項目２０）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、項目１９に記載のメモリ管理ソフトウェア。
【００３０】
（項目２１）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、項目１９に記載のメモリ管理ソフトウェア。
【００３１】
（項目２２）  上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目１９に記載のメモリ管理ソフトウェア。
【００３２】
（項目２３）  メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブル管理ソフトウェアによってなされた該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリページサイズ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの１つ以上の対応するエントリのアップデートを容易にする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
【００３３】
（項目２４）  上記新しいメモリページサイズ情報は、４キロバイトの倍数であるページサイズに対応する、項目１８に記載のメモリ管理ソフトウェア。
【００３４】
（項目２５）  上記メモリページサイズ管理ソフトウェアは、上記トランスレーションルックアサイドバッファの１つ以上の対応するエントリを直接アップデートする、項目２３に記載のメモリ管理ソフトウェア。
【００３５】
（項目２６）  上記メモリページサイズ管理ソフトウェアは、上記トランスレーションルックアサイドバッファ管理ソフトウェアと協働して、上記トランスレーションルックアサイドバッファの１つ以上の対応するエントリを間接的にアップデートする、項目２３に記載のメモリ管理ソフトウェア。
【００３６】
（項目２７）  上記メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ／または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および／または該追加は、該メモリページサイズ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目２３に記載のメモリ管理ソフトウェア。
【００３７】
（項目２８）  上記メモリページサイズ管理ソフトウェアは、上記新しいメモリページサイズ情報による、上記隣接するページテーブルエントリのすべてに対する上記メモリページサイズ情報のアップデートを容易にするために、上記ページテーブルにおける変更に応答する、項目２３に記載のメモリ管理ソフトウェア。
【００３８】
（項目２９）  上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより大きいメモリページサイズを表す、項目２３に記載のメモリ管理ソフトウェア。
【００３９】
（項目３０）  上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目２３に記載のメモリ管理ソフトウェア。
【００４０】
（項目３１）  上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目２９に記載のメモリ管理ソフトウェア。
【００４１】
（項目３２）  上記ページテーブル管理ソフトウェアは、単一のページテーブルのページテーブルエントリを管理するように適応される、項目２３に記載のメモリ管理ソフトウェア。
【００４２】
（項目３３）  上記ページテーブル管理ソフトウェアは、複数のページテーブルのページテーブルエントリを管理するように適応される、項目２３に記載のメモリ管理ソフトウェア。
【００４３】
（項目３４）  上記トランスレーションルックアサイドバッファ管理ソフトウェアは、単一のトランスレーションルックアサイドバッファを管理するように適応される、項目２３に記載のメモリ管理ソフトウェア。
【００４４】
（項目３５）  上記トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理するように適応される、項目２３に記載のメモリ管理ソフトウェア。
【００４５】
（項目３６）  上記複数のトランスレーションルックアサイドバッファは、異なるページサイズを有する、項目３５に記載のメモリ管理ソフトウェア。
【００４６】
（項目３７）  処理システムのメモリを管理するための方法であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対応する、トランスレーションルックアサイドバッファの１つ以上のエントリをアップデートすることと
を包含する、方法。
【００４７】
（項目３８）  処理システムのメモリを管理するための方法を実行するように適応されたソフトウェアコードを備えるストレージ媒体であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも１つに対応する、トランスレーションルックアサイドバッファの１つ以上のエントリをアップデートすることと
を包含する、ストレージ媒体。
【００４８】
（開示の要約）
処理システムは、ページテーブルにおける変更に応答的なメモリ管理ソフトウェアを含む。メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する１つ以上のページテーブルエントリへと統合する。メモリ管理ソフトウェアは、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをアップデートする。
【００４９】
本発明は、以下の図面および説明への参照によってより良く理解され得る。図面における構成要素は縮尺通りである必要はなく、代わりに本発明の原理を例示することに重点が置かれている。さらに、図面において、同様な参照数字は、異なる図面にわたって対応する部分を明示する。
【発明を実施するための最良の形態】
【００５０】
（好適な実施形態の詳細な説明）
図１は、可変のページサイズのメモリ編成を実装し得る、処理システム１００のブロック図である。処理システム１００は、物理メモリ１１０にアクセスするプロセッサ１０５を含む。プロセッサ１０５は、単一のプロセッサとして示される。しかし、システム１００は、対称マルチプロセッサシステム、並列処理システム、または他のアーキテクチャとして実装され得る。
【００５１】
物理メモリ１１０は、ソフトウェア命令空間１１５およびデータ空間１２０を含み得る。ソフトウェア命令空間１１５は、メモリ管理ソフトウェア１２５および他のソフトウェアコード１３０を含み得る。メモリ管理ソフトウェア１２５は、処理システム１００のメモリ空間を管理するために、プロセッサ１０５によって実行可能であり得る。図１において、メモリ管理ソフトウェア１２５は、仮想メモリアドレス指定を用いてシステム１００のメモリを管理する。
【００５２】
図１において、処理システム１００は、仮想メモリアドレスと物理メモリ空間１１０の対応する物理アドレスとの間のマッピングを提供する、少なくとも１つのページテーブル１３５を採用する。複数のページテーブルもまた、採用および管理され得る。ページテーブル１３５は、物理メモリ空間１１０、メモリ管理ユニット、および／または他の物理メモリ空間において存在し得る。
【００５３】
トランスレーションルックアサイドバッファ（ＴＬＢ）１４０は、ページテーブル１３５の一定のエントリをキャッシュするように適応される。キャッシュは、１４５においてプロセッサ１０５により提供される仮想アドレスと、１５０において提供される物理アドレスとの間の変換においてより速い変換を提供する。物理アドレス１５０は、同様に、物理メモリ空間１１０の対応するエントリにアクセスするために用いられる。ＴＬＢ１４０は、プロセッサ１０５の一部、メモリ管理ユニットの一部、または別個のハードウェアモジュールの一部であり得る。
【００５４】
図２は、ページテーブル１３５およびＴＬＢ１４０に対する構造を例示する。これらのテーブルにおいて、仮想アドレスの２進表現の下位ビットは、保持されて、物理アドレスの下位ビットとして用いられ得る。上位ビットは、１つ以上のページテーブルへのキーとして取扱われる。ページテーブルは、同様に、仮想アドレスから物理アドレスへの変換情報を含む。この目的のために、ページテーブル１３５は、複数のページテーブルエントリ２０５、２２５〜２５０を含み得る。例示されるページテーブルエントリ２０５、２２５〜２５０の各々は、仮想アドレスを対応する物理アドレス２１０に変換するための情報を含み得る。エントリはまた、対応する仮想アドレスページのページサイズを識別するメモリページサイズ情報２２０と、対応する仮想アドレスページに対するアクセス許可情報２１５とを含み得る。仮想アドレスページについての他の情報（そのページが最後に用いられたとき、ページがプロセスによって書込まれているか否かなどの情報）もまた、ページテーブルエントリの各々に含まれ得る。
【００５５】
トランスレーションルックアサイドバッファ１４０は、ページテーブル１３５の選択されたエントリをキャッシュするために用いられる。２７０、２７３、２７５、および２８０などで示されるＴＬＢエントリの各々は、ページテーブル１３５のページテーブルエントリにおいて見出される情報のサブセット、付加情報、または同じ情報を含み得る。図２において、ＴＬＢエントリの各々は、仮想アドレスを対応する物理アドレス２５５に変換するための情報と、対応する仮想アドレスページのページサイズを識別するメモリページサイズ情報２６５とを含み得る。ＴＬＢエントリの各々は、対応する仮想アドレスページに対するアクセス許可を識別するアクセス許可情報２６０をも含み得る。ページテーブルエントリと同様に、そのアドレスページが最後に用いられた場合に、ページがプロセスによって書込まれているか否かなどのアドレスページと関連する他の情報もまた、ＴＬＢエントリの各々において含まれ得る。
【００５６】
ＴＬＢ１４０は、限られた数のＴＬＢエントリを有し得る。エントリ数は、ページテーブル１３５におけるページテーブルエントリの数より実質的に少なくあり得る。ＴＬＢ１４０においてキャッシュされるべきページテーブルエントリの選択は、１つ以上のキャッシュプロセスによって決定され得る。そのようなプロセスは、要求される／アクセスされる仮想メモリ位置の相対的な局所性、仮想メモリ位置が様々なソフトウェアアプリケーションによってアクセスされる頻度、および／または他の基準に依存し得る。１つ以上のそのようなプロセスは、詳細なシステム要求に基づいて採用され得、その要求はシステムによって変わり得る。説明を容易にすると、ページテーブルエントリ２０５は、ＴＬＢエントリ２７０においてキャッシュされ、ページテーブルエントリ２３５は、ＴＬＢエントリ２７３においてキャッシュされ、ページテーブルエントリ２４０は、ＴＬＢエントリ２７５においてキャッシュされ、そしてページテーブルエントリ２４５は、ＴＬＢエントリ２８０においてキャッシュされる。
【００５７】
図３は、仮想メモリと関連づけられる要求を処理するために用いられ得る動作を示す図である。示されるように、仮想メモリ要求は、３０５において実行される。３１０において、チェックは、仮想メモリ要求と関連づけられる仮想メモリページがＴＬＢ１４０においてキャッシュされているか否かを決定するために行われる。キャッシュされていない場合、３１５においてシステム１００は、ＴＬＢミスを処理するソフトウェアと関連づけられる１つ以上の動作を実行し得る。しかし、仮想メモリ要求と関連づけられる仮想メモリページがＴＬＢ１４０においてキャッシュされている場合、処理システム１００は、要求が仮想メモリページと関連づけられるアクセス許可に従うか否かを決定するために要求を引続き処理する。システム１００は、要求が仮想メモリページに対する許可に違反しないことを確認するために、対応するＴＬＢエントリのアクセス許可２６０をチェックし得る。そのような許可は、対応する仮想メモリページを、読出し専用、書込み専用、読出し／書込み、または別の状態として識別し得る。３０５における仮想メモリ要求が、３２０におけるチェックによって決定されたときに無効である場合、処理システム１００は、許可違反を処理するソフトウェア３２５と関連づけられる１つ以上の動作を実行し得る。または、ＴＬＢ１４０は、物理アドレスページの上位の部分を生成するために、仮想メモリの上位ビットを用い、一方、仮想メモリアドレスの下位ビットが物理アドレスページへのオフセットとして用いられ得る。これらの動作は、３３０において実行され得る。対応する物理アドレスを用いる仮想メモリ要求の実行は、３３５において実行される。
【００５８】
図４は、可変のページサイズのメモリ編成を実装するために実行され得る動作を示す図である。４０５において、ページテーブル動作は実行される。この動作は、例えば、ページテーブルエントリへのアクセス、ページテーブルエントリの追加、ページテーブルエントリの削除、ページテーブルエントリのアップデート、または他の動作などの、ページテーブル１３５を変更する任意の動作を含み得る。４１０において、処理システム１００は、４０５において実行される動作がページテーブルエントリを変更したか否かを決定するために、ページテーブル１３５をチェックする。そのような変更は、新しいページテーブルエントリが追加されたか否か、既存のページテーブルエントリが削除されたか否か、または他の動作を含み得る。４０５において実行される動作が、ページテーブルエントリの１つ以上に対してそのような変更を結果としてもたらさなかった場合、処理システム１００は、４１５において他の動作の実行を続ける。
【００５９】
４０５において実行される動作が、ページテーブル１３５のページテーブルエントリに対する変更を結果としてもたらしていた場合、さらなるチェックは、４２０において行われる。このチェックに従って、処理システム１００は、変更が共通の特性を有する隣接するページテーブルエントリの範囲を結果としてもたらしていたか否かを決定するために、変更されたページテーブルをチェックする。隣接するページテーブルエントリは、隣接する仮想アドレスと隣接する物理アドレスとの両方を有するページテーブルエントリであり得る。４２０において、チェックは、実質的に同一かまたは全く同じアクセス許可情報を有する、隣接するページテーブルエントリの位置を示すことを伴う。このチェックの効率を上げるために、４２０における動作は、変更されたページテーブルエントリから一定の位置的な隔たり内のページテーブルエントリのチェックに制限され得る。４２０におけるチェックの間に、そのような隣接するページテーブルエントリが見出されない場合、処理システム１００は、４１５において他の動作の実行を続け得る。
【００６０】
必要な共通の特性を有する隣接するページテーブルエントリが見出される場合、隣接するページテーブルエントリは、４２５において識別されて、４３０において分析される。４３０における分析は、例えば、隣接するページテーブルエントリのいずれかが、オリジナルの隣接するページテーブルエントリのページサイズより大きなページサイズを有する、１つ以上のページテーブルエントリに統合され得るか否かの分析を含み得る。新しい、より大きなページサイズは、処理システム１００の仮想メモリ空間を編成するために用いられる、最も小さなページサイズの倍数であり得る。例えば、４２５において識別された、各々４キロバイトのページサイズを有する１６個の隣接するページテーブルエントリが在る場合、隣接するページテーブルエントリに対するページサイズは、６４キロバイトのより大きな仮想ページサイズへとアップデートされ得る。同様に、４２５において識別された、各々４キロバイトのページサイズを有する２５６個の隣接するページテーブルエントリが在る場合、隣接するページテーブルエントリに対するページサイズは、１メガバイトのより大きな仮想ページサイズへとアップデートされ得る。
【００６１】
４３０において適用される分析基準を満たす、隣接するページテーブルエントリは、新しいページサイズ情報によって４３５においてアップデートされる。４３５において適用されるアップデート動作は、隣接するページテーブルエントリの各々を、新しいページサイズ情報を含む同様な情報によって置換することを伴い得る。一方で、ページテーブルのアーキテクチャによって許される場合、隣接するページテーブルエントリを、新しいページサイズ情報を有する単一のページテーブルエントリに統合することは、可能であり得る。それによって、残りの隣接するページテーブルエントリと関連づけられるメモリを解放する。
【００６２】
４３５においてアップデートされたページテーブルエントリに対応するＴＬＢ１４０中のエントリは、新しいページサイズ情報によって４４０においてアップデートされる。４４０において適用されるアップデート動作は、統合された隣接するページテーブルエントリのいずれかに対応するＴＬＢエントリのすべてを、新しいページサイズ情報を含む新しい情報とともに単一のＴＬＢエントリに統合することを伴い得る。統合された隣接するページテーブルエントリに対応する、残りのＴＬＢエントリは、ＴＬＢ１４０から削除され得る。それによって、ＴＬＢメモリを自由にし、ＴＬＢ１４０がより多くのページテーブルエントリをキャッシュすることを可能にする。
【００６３】
より大きなページサイズを有するエントリへ統合される、図４の４２０において識別される隣接するページテーブルエントリの数は、変わり得る。例えば、４２０において識別される隣接するページテーブルエントリのすべてを統合することは、可能であり得る。一方で、識別される隣接するページテーブルエントリの１つ以上のサブセットを、同じページサイズまたは異なるページサイズの対応するページテーブルエントリへ統合することは、可能であり得る。４２０において識別される隣接するページテーブルエントリのいずれが最終的に統合されるかは、必要に応じて、システム設計仕様と４３０において識別されるエントリに適用される特定の分析要件とに依存し得る。
【００６４】
図５は、図４の４３０において示される分析動作の間に、処理システム１００によって実行され得る、複数の相互に関係づけられる動作を示す図である。図５において、動作は、４２５の識別される隣接するページテーブルエントリのいずれが、より大きなページサイズを有する１つ以上のページテーブルエントリの中にそれらを統合するための基準を満たすか否かを決定するために実行される。この目的のために、識別される隣接するページテーブルエントリの数は、５０５において決定される。５１０において、チェックは、より大きなページサイズを有する１つ以上のページテーブルエントリに統合するために、識別される範囲において十分な数の隣接するページテーブルエントリが在るか否かを決定するために行われる。より大きなページサイズを有するページテーブルエントリへ統合される前に、５１０における決定動作において存在すべき隣接するページテーブルエントリの数は、システムによって変わり得る。例示において、隣接するページテーブルエントリを、より大きな仮想ページサイズを有するページテーブルエントリへ統合するか否かに関する決定は、オリジナルの隣接するページテーブルエントリの数が、システム１００によってサポートされる新しい仮想ページサイズを有するページテーブルエントリを形成するために十分であるか否かに基づき得る。６４キロバイト、１２８キロバイト、２５６キロバイト、５１２キロバイト、および／または１メガバイトのページサイズは、一般的に多くの処理システムアーキテクチャにおいて用いられるけれども、他のページサイズ値もまた採用され得る。処理システム１００において用いられるページサイズは、例えば、ＴＬＢ１４０においてサポートされるページサイズによって制限され得る。
【００６５】
動作５１０において、プロセスは、無駄となるメモリ空間を統合が結果としてもたらすか否かを考慮し得る。統合される仮想ページの末端に過度のメモリ空間容量を、統合が結果としてもたらす場合、統合を防止するか、またはページテーブルエントリを新しいページサイズへ統合するか、５１０において決定が行われ得る。新しいページサイズは、オリジナルの隣接するページテーブルエントリのページサイズより大きくあり得るけれども、隣接するページテーブルエントリを統合するために、その他において用いられ得る最も大きなページサイズ値より小さくあり得る。
【００６６】
５１０において示される動作の結果として、初期の決定は、統合が起こるであろうか否か、識別される隣接するページテーブルエントリのいずれが統合可能であるか、統合のために用いられる提案されたページサイズ、に関してなされ得る。識別される隣接するページテーブルエントリのいずれかの統合を差控える決定が５１０において行われる場合、処理システム１００は、５１５において他のプロセスの実行を続け得る。しかし、識別される隣接するページテーブルエントリのいずれかを統合する決定が５１０において行われる場合、５２０においてさらなる分析が発生する。５２０における分析は、統合が可能な隣接するページテーブルエントリが、より大きな提案されたページサイズ値を持つ、使用に適するページテーブル境界に置かれるか否かを決定する。例えば、一組の４キロバイト／ページの隣接するページテーブルエントリが、６４キロバイトのページサイズを有するページテーブルエントリへ統合される場合、一組の隣接するページテーブルエントリの最初のページテーブルエントリは、メモリ空間１１０の６４キロバイトの境界から始まるべきである。
【００６７】
隣接するページテーブルエントリが５２０のメモリ境界基準を満たす場合、統合されるべき隣接するページテーブルエントリおよび提案されたページサイズは、５２５において図４の４３５に渡される。さもなければ、提案されたページサイズは、５３０においてシステム１００によってサポートされる、より小さな次のページサイズへ減少され得る。５３５において、プロセスは、減少したページサイズが、隣接するページテーブルエントリのオリジナルのページサイズ以下であるか否かを決定する。より小さなページサイズがオリジナルのページサイズ以下である場合、隣接するページテーブルエントリを統合する必要は全くなく、処理システム１００は、５１５において他のプロセスの実行を続け得る。しかし、減少したページサイズがオリジナルのページサイズより大きい場合、５２０におけるメモリ境界チェックは、より小さなページサイズを用いて実行され得る。示されるように、メモリ境界チェックが満たされるか、または提案されたページサイズが減少されるまで、これらの動作は繰返され得ることにより、そのページサイズは、統合のためのタグが付けられる隣接するページテーブルエントリのオリジナルのページサイズ以下である。
【００６８】
図６は、必要な場合に、隣接するページテーブルエントリのページサイズを減少させるために用いられ得るプロセスを示す。６０５において、ページテーブル動作は実行される。この動作は、例えば、ページテーブルエントリへのアクセス、ページテーブルエントリの追加、ページテーブルエントリの削除、ページテーブルエントリのアップデート、または他の動作などの、ページテーブル１３５を変更するいかなる動作をも含み得る。６１０において、処理システム１００は、６０５において実行される動作がページテーブルエントリを変更したか否かを決定する。そのような変更は、既存のページテーブルエントリが削除されたか否か、または同様な動作を含み得る。６０５における動作が、ページテーブルエントリの１つ以上に対してそのような変更を結果としてもたらさなかった場合、処理システム１００は、６１５において他の動作の実行を続ける。
【００６９】
６０５において、他のページテーブルエントリが変更する場合、さらなるチェックは、６２０において行われる。６２０において、処理システム１００は、大きなページを持つ隣接するページテーブルエントリの範囲において変更が発生していたか否かを決定するために、変更されたページテーブルをチェックする。６２０において、チェックは、変更されたページテーブルエントリが、大きいページサイズを有するページテーブルエントリへと以前に統合された、ページテーブルエントリの範囲内であるか否かを決定することを伴い得る。６２０におけるチェックの間に、いかなるそのような隣接するページテーブルエントリも見出されない場合、処理システム１００は、６１５において他の動作の実行を続け得る。
【００７０】
そのような隣接するページテーブルエントリが、６２０において見出される場合、隣接するページテーブルエントリは、６２５において識別され、６３０において分析される。６３０における分析は、隣接するページテーブルエントリが、隣接するページテーブルエントリのオリジナルのページサイズと比較して、減少したページサイズを有する複数のページテーブルエントリへと分割され得るか否かの分析を含み得る。新しい、減少したページサイズは、処理システム１００の仮想メモリ空間を編成するために用いられる最も小さなページサイズの倍数であり得る。
【００７１】
６３０において適用される分析基準を満たす隣接するページテーブルエントリは、新しいページサイズ情報によって６３５においてアップデートされる。６３５に適用されるアップデート動作は、隣接するページテーブルエントリの各々を、新しいページサイズ情報を含む同様な情報によって置換することを伴い得、および／または以前に統合されたページテーブルエントリの範囲を、より小さなページサイズを有する複数の範囲に分割することを伴い得る。
【００７２】
６３５においてアップデートされるページテーブルエントリに対応する、ＴＬＢ１４０におけるエントリは、新しいページサイズ情報によって６４０においてアップデートされる。６４０において適用されるアップデート動作は、６３０において分析された隣接するページテーブルエントリに対応する、さらなるＴＬＢエントリを追加することを伴い得る。
【００７３】
図７は、１つのメモリ管理ソフトウェア１２５のアーキテクチャを例示する図である。メモリ管理ソフトウェア１２５は、ページテーブル管理ソフトウェア７０５、ＴＬＢ管理ソフトウェア７１０、およびメモリページサイズ管理ソフトウェア７１５を含み得る。ページテーブル管理ソフトウェアは、複数のページテーブルエントリを有する、ページテーブル１３５などのページテーブルを管理し得る。複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ情報、および対応する仮想アドレスページに対するアクセス許可情報を含み得る。トランスレーションルックアサイドバッファ管理ソフトウェアは、対応するメモリページサイズ情報を含む、複数のページテーブルエントリに対応する情報を、キャッシュするように適応されるトランスレーションルックアサイドバッファを管理し得る。トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理し得る。
【００７４】
メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、ページテーブル管理ソフトウェアによって行われるページテーブルにおける変更に応答し得る。識別された隣接するページテーブルエントリの分析が、メモリページサイズへの変更を保証する場合、メモリページサイズ管理ソフトウェアは、新しいメモリページサイズ情報によって、識別された隣接するページテーブルエントリの少なくとも１つに対するメモリページサイズ情報をアップデートし得る。新しいメモリページサイズ情報は、識別される隣接するページテーブルエントリのいずれもマップされ得る、最も大きいメモリページサイズに対応し得る。新しいメモリページサイズは、識別された隣接するページテーブルエントリに対してオリジナルに割当てられたよりも大きなページサイズに対応し得る。一方で、新しいメモリページサイズ情報は、隣接するページテーブルエントリの以前に統合された範囲の減少したメモリページサイズに対応し得る。メモリページサイズ管理ソフトウェアはまた、必要な場合には、新しいメモリページサイズ情報によって、トランスレーションルックアサイドバッファの１つ以上の対応するエントリをアップデートすることを容易にし得る。
【００７５】
メモリページサイズ管理ソフトウェアは、効率を上げるために、その分析動作をページテーブルエントリの事前に定義された範囲に制限し得る。分析は、ページテーブルにおいて変更され、ページテーブルから削除され、かつ／またはページテーブルに追加された、局所的に近接するページテーブルエントリである隣接するページテーブルエントリに制限され得る。変更、削除、および／または追加は、メモリページサイズ管理ソフトウェアが、チェックを行うために応答したページテーブルにおける変更へ対応し得る。さらに、メモリページサイズ管理ソフトウェアは、新しいメモリページサイズ情報によって、隣接するページテーブルエントリのすべてに対する、メモリページサイズ情報をアップデートすることを容易にするための、ページテーブルにおける変更に応答し得る。
【００７６】
上記されるメモリ管理ソフトウェア１２５の各々の構成要素の特定の機能性は、それらの構成要素の間において共有され得る。その機能性のいかなる厳密な分割も必要がない。１つのシステムにおいて、メモリページサイズ管理ソフトウェア７１５は、トランスレーションルックアサイドバッファの対応するエントリを直接アップデートし得る。別の例示において、メモリページサイズ管理ソフトウェア７１５は、ＴＬＢアップデートを実行するためのトランスレーションルックアサイドバッファ管理ソフトウェア７１０と協働し得る。
【００７７】
図１に示されるように、メモリ管理ソフトウェア１２５は、物理メモリ１１０において存在し得る。物理メモリ１１０は、ランダムアクセスメモリまたは同様なストレージ媒体であり得る。他のシステムにおいて、メモリ管理ソフトウェア１２５は、ソフトウェアコードの使用、ストレージ、または転送のための他のストレージ媒体上に存在し得る。そのようなストレージ媒体は、例えば、ハードディスクドライブ、ＵＳＢドライブ、フラッシュメモリ、読出し専用メモリ、光学ストレージ媒体、または他のストレージ媒体を含み得る。
【００７８】
本発明の様々な実施形態が記述される一方、さらに多くの実施形態および実装が本発明の範囲において可能であることは、当業者にとって明らかである。従って、本発明は、添付の特許請求の範囲およびそれと均等な範囲を除いて限定されるべきでない。
【図面の簡単な説明】
【００７９】
【図１】図１は、例示的な処理システムのブロック図である。
【図２】図２は、図１において示される処理システムにおいて用いられ得る、ページテーブル構造およびＴＬＢ構造を例示する。
【図３】図３は、仮想メモリと関連づけられる要求を処理する動作の図である。
【図４】図４は、可変のページサイズのメモリ編成を実装する動作の図である。
【図５】図５は、図４において示される分析動作の間に、処理システムによって実行され得る図である。
【図６】図６は、隣接するページテーブルエントリのページサイズを減少させるための動作の図である。
【図７】図７は、図１において示されるメモリ管理ソフトウェアのブロック図である。
【図１】
2009020881.tif 000002
【図２】
2009020881.tif 000003
【図３】
2009020881.tif 000004
【図４】
2009020881.tif 000005
【図５】
2009020881.tif 000006
【図６】
2009020881.tif 000007
【図７】
2009020881.tif 000008
【外国語明細書】
2009020881000001.pdf