(57)【要約】【課題】主記憶装置の使用量を削減する。【解決手段】メモリマネージャのメモリ管理部は、ステップＳ４１において、ROM上のページと値が合致するRAM上のページを検出した場合、ステップＳ４３において、値が合致するROM上のページを参照するように変換テーブルを更新し、ステップＳ４４において、検出したRAM上のページを破棄する。本技術は、例えば、組み込み機器に適用できる。【選択図】図９
2012221333.tif 000002
【特許請求の範囲】
【請求項１】
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御するメモリ管理部を
備えるメモリ管理装置。
【請求項２】
前記補助記憶装置のデータは、前記プログラムを実行する前の初期値を示す初期データ、および、前記プログラムの実行中に前記主記憶装置に出現すると予測される予測データを含む
請求項１に記載のメモリ管理装置。
【請求項３】
前記予測データは、前記プログラムを実行させたときの前記主記憶装置の内容に基づいて予測されたデータである
請求項２に記載のメモリ管理装置。
【請求項４】
前記予測データは、前記プログラムを実行させたときに前記主記憶装置に出現したデータから、出現した頻度および期間のうち少なくとも一方に基づいて抽出されたデータである
請求項３に記載のメモリ管理装置。
【請求項５】
前記予測データは、所定のサイズのブロック単位で前記補助記憶装置に格納され、
前記メモリ管理部は、前記プログラムからの要求に対して、前記ブロック単位で前記主記憶装置の領域を確保する
請求項２に記載のメモリ管理装置。
【請求項６】
前記予測データは、圧縮された状態で前記補助記憶装置に格納される
請求項２に記載のメモリ管理装置。
【請求項７】
前記プログラムの実行中に、前記主記憶装置の内容に基づいて前記予測データを生成し、前記補助記憶装置に格納する予測データ生成部を
さらに備える請求項２に記載のメモリ管理装置。
【請求項８】
前記メモリ管理部は、前記補助記憶装置のデータを書き換える場合、当該データを前記主記憶装置にコピーし、前記主記憶装置にコピーしたデータを書き換えるように制御する
請求項１に記載のメモリ管理装置。
【請求項９】
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御する
ステップを含むメモリ管理方法。
【請求項１０】
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ管理装置、メモリ管理方法、および、制御プログラムに関し、特に、主記憶装置の使用量を削減できるようにしたメモリ管理装置、メモリ管理方法、および、制御プログラムに関する。
【背景技術】
【０００２】
従来、RAM（Random Access Memory）と同様にCPU（Central Processing Unit）からランダムアクセス可能なROM（Read Only Memory）、すなわち、CPUから直接アドレス単位でデータを読み出すことが可能なROMを備えるシステムにおけるメモリ削減を実現する技術として、DRIP（Data Read In Place）が知られている。DRIPを適用したシステムにおいては、CPUは、データの初期値をRAMにコピーせずに直接ROMから読み出し、データの書き込みを行うときにはじめてRAMにデータをコピーする。
【０００３】
また、従来、主記憶装置内のデータをスワップアウトするときに、読み込み専用ファイルシステムにある元のデータとの差分データを生成し、差分データを圧縮して主記憶装置内のスワップ領域に格納する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１４０２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、DRIPを適用したシステムでは、データの書き込みを行うまではメモリの削減効果があるものの、一度書き込みが行われたデータについては、そのデータの領域を解放するまでRAMにデータが残るため、メモリ削減の効果がなくなる。
【０００６】
また、特許文献１に記載の技術では、スワップアウトするデータについては、メモリ削減の効果があるものの、スワップアウトせずに使用するデータについては、メモリ削減の効果が現れない。
【０００７】
本技術は、主記憶装置の使用量を削減できるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面のメモリ管理装置は、所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御するメモリ管理部を備える。
【０００９】
前記補助記憶装置のデータは、前記プログラムを実行する前の初期値を示す初期データ、および、前記プログラムの実行中に前記主記憶装置に出現すると予測される予測データを含むようにすることができる。
【００１０】
前記予測データは、前記プログラムを実行させたときの前記主記憶装置の内容に基づいて予測されたデータとすることができる。
【００１１】
前記予測データは、前記プログラムを実行させたときに前記主記憶装置に出現したデータから、出現した頻度および期間のうち少なくとも一方に基づいて抽出されたデータとすることができる。
【００１２】
前記予測データは、所定のサイズのブロック単位で前記補助記憶装置に格納され、前記メモリ管理部には、前記プログラムからの要求に対して、前記ブロック単位で前記主記憶装置の領域を確保させるようにすることができる。
【００１３】
前記予測データは、圧縮された状態で前記補助記憶装置に格納するようにすることができる。
【００１４】
前記プログラムの実行中に、前記主記憶装置の内容に基づいて前記予測データを生成し、前記補助記憶装置に格納する予測データ生成部をさらに設けることができる。
【００１５】
前記メモリ管理部には、前記補助記憶装置のデータを書き換える場合、当該データを前記主記憶装置にコピーし、前記主記憶装置にコピーしたデータを書き換えるように制御させることができる。
【００１６】
本技術の一側面のメモリ管理方法は、所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御するステップを含む。
【００１７】
本技術の一側面の制御プログラムは、所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御するステップを含む処理をコンピュータに実行させる。
【００１８】
本技術の一側面においては、所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータが破棄され、破棄されたデータが前記補助記憶装置から読み出される。
【発明の効果】
【００１９】
本技術の一側面によれば、主記憶装置の使用量を削減することができる。
【図面の簡単な説明】
【００２０】
【図１】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図２】メモリマネージャの機能の構成例を示すブロック図である。
【図３】ROMに格納されるデータの一例を示す図である。
【図４】データ読み出し処理を説明するためのフローチャートである。
【図５】データ書き込み処理を説明するためのフローチャートである。
【図６】データ読み出し処理および書き込み処理の具体例を説明するための図である。
【図７】データ読み出し処理および書き込み処理の具体例を説明するための図である。
【図８】データ読み出し処理および書き込み処理の具体例を説明するための図である。
【図９】メモリ再配置処理を説明するためのフローチャートである。
【図１０】メモリ再配置処理の具体例を説明するための図である。
【図１１】メモリ再配置処理の具体例を説明するための図である。
【図１２】予測ページの格納方法の変形例を示す図である。
【図１３】メモリ領域の確保方法の一例を示す図である。
【図１４】メモリマネージャの機能の第２の構成例を示すブロック図である。
【図１５】予測ページ生成処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本技術を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．変形例
【００２２】
＜１．実施の形態＞
［情報処理システムの構成例］
図１は、本技術を適用した情報処理システム１０１の一実施の形態を示すブロック図である。
【００２３】
情報処理システム１０１は、例えば、テレビジョン受像機、携帯電話機等の各種の組み込み機器や、コンピュータ等に適用可能なシステムである。
【００２４】
情報処理システム１０１は、CPU（Central Processing Unit）１１１、RAM（Random Access Memory）１１２、および、ROM（Read Only Memory）１１３を含むように構成される。CPU１１１、RAM１１２、および、ROM１１３は、バス１１４を介して相互に接続されている。
【００２５】
CPU１１１は、各種のプログラムを実行することにより、各種の機能を実現する。
【００２６】
RAM１１２は、主記憶装置として設けられ、CPU１１１の処理に必要なプログラムおよびデータを一時的に記憶する。
【００２７】
ROM１１３は、補助記憶装置として設けられ、CPU１１１の処理に必要なプログラムおよびデータが格納される。また、ROM１１３に格納されるデータは、初期データと予測データを含む。
【００２８】
ここで、初期データとは、情報処理システム１０１の動作開始前の各種のデータの初期値を示すデータである。換言すれば、初期データとは、後述するプログラム１２４−１乃至１２４−ｎを実行する前の各種のデータの初期値を示すデータである。
【００２９】
また、予測データとは、詳細は後述するが、情報処理システム１０１の動作中、すなわち、プログラム１２４−１乃至１２４−ｎの実行中にRAM１１２上に出現すると予測されるデータである。
【００３０】
また、ROM１１３は、ランダムアクセスが可能なROM、すなわち、CPU１１１から直接アドレス単位でデータを読み出すことが可能なROMにより構成される。
【００３１】
ここで、情報処理システム１０１のソフトウエアの構成例について説明する。
【００３２】
情報処理システム１０１では、例えば、CPU１１１により実行されるＯＳ（オペレーティングシステム）によりページング方式の仮想記憶が実現される。すなわち、ROM１１３のアドレス空間は所定のサイズのブロックであるページに分割され、ROM上のデータは必要に応じてページ単位でRAM１１２に配置される。
【００３３】
メモリマネージャ１２１およびメモリアクセス部１２２は、例えば、そのＯＳの機能の一部として提供される。
【００３４】
メモリマネージャ１２１は、ROM１１３上のプログラムおよびデータのRAM１１２への配置、並びに、RAM１１２の領域の確保および解放の制御を行う。また、メモリマネージャ１２１は、メモリマネージャ１２３からの要求に対する処理結果をメモリマネージャ１２３に通知する。
【００３５】
さらに、メモリマネージャ１２１は、RAM１１２およびROM１１３にアクセスするために仮想アドレスを物理アドレスに変換する変換テーブルの生成および更新を行い、変換テーブルをRAM１１２に記憶させる。また、メモリマネージャ１２１は、変換テーブルを更新したことをメモリアクセス部１２２に通知する。なお、変換テーブルは、例えば、アドレス変換テーブル、ページテーブル、または、メモリマップなどにより構成される。
【００３６】
さらに、メモリマネージャ１２１は、プログラム１２４−１乃至１２４−ｎを実行中のRAM１１２の内容のプロファイルを取り（RAM１１２の内容を分析し）、その結果を外部に出力する。
【００３７】
メモリアクセス部１２２は、メモリマネージャ１２３からの要求に応じて、変換テーブルを用いて、RAM１１２またはROM１１３からアドレス単位でデータを読み出し、メモリマネージャ１２３に渡す。また、メモリアクセス部１２２は、メモリマネージャ１２３からの要求に応じて、変換テーブルを用いて、アドレス単位でRAM１１２にデータを書き込む。さらに、メモリアクセス部１２２は、書き込み対象のデータを含むページがRAM１１２上にない場合、そのことをメモリマネージャ１２１に通知する。
【００３８】
メモリマネージャ１２３は、例えば、プログラム１２４−１乃至１２４−ｎに対して、RAM１１２およびROM１１３のデータを読み出したり、RAM１１２にデータを書き込んだりするためのライブラリ関数を提供する。そして、メモリマネージャ１２３は、プログラム１２４−１乃至１２４−ｎからのデータの読み出しまたは書き込みの要求を、メモリアクセス部１２２が実行可能な形式に変換して、メモリアクセス部１２２に通知する。
【００３９】
また、メモリマネージャ１２３は、例えば、RAM１１２の領域を確保または解放するためのライブラリ関数を提供する。そして、メモリマネージャ１２３は、プログラム１２４−１乃至１２４−ｎからの領域の確保または解放の要求を、メモリマネージャ１２１が実行可能な形式に変換して、メモリマネージャ１２１に通知する。
【００４０】
プログラム１２４−１乃至１２４−ｎは、CPU１１１が所定の機能を実現するためのアプリケーションプログラム等により構成される。
【００４１】
なお、以下、プログラム１２４−１乃至１２４−ｎを個々に区別する必要がない場合、単にプログラム１２４と称する。
【００４２】
［メモリマネージャ１２１の機能の構成例］
次に、図２を参照して、メモリマネージャ１２１の機能の構成例について説明する。
【００４３】
メモリマネージャ１２１は、プロファイル取得部１５１およびメモリ管理部１５２を含むように構成される。
【００４４】
プロファイル取得部１５１は、プログラム１２４を実行中のRAM１１２の内容のプロファイルを取り（RAM１１２の内容を分析し）、その結果を外部に出力する。
【００４５】
メモリ管理部１５２は、ROM１１３上のプログラムおよびデータのRAM１１２への配置、並びに、RAM１１２の領域の確保および解放の制御を行う。また、メモリ管理部１５２は、メモリマネージャ１２３からの要求に対する処理結果をメモリマネージャ１２３に通知する。さらに、メモリ管理部１５２は、変換テーブルの生成および更新を行い、変換テーブルをRAM１１２に記憶させる。また、メモリ管理部１５２は、変換テーブルを更新したことをメモリアクセス部１２２に通知する。
【００４６】
［予測データの予測方法］
ここで、ROM１１３に格納される予測データの予測方法について説明する。なお、予測データの予測は、例えば、情報処理システム１０１の開発段階に行われ、情報処理システム１０１は、予測データをROM１１３に格納した状態で出荷される。
【００４７】
まず、プロファイル取得部１５１は、プログラム１２４を通常どおり実行させたときのRAM１１２の内容のプロファイルを取り、取得したプロファイルを情報処理システム１０１の外部に出力する。外部に出力されたプロファイルは、図示せぬ記録装置に記録される。
【００４８】
このとき、連続してプロファイルを取るようにしてもよいし、所定の間隔毎または所定の条件を満たしたときなどに離散的にプロファイルを取るようにしてもよい。また、プロファイル取得部１５１が、RAM１１２の内容を、特に加工や分析を加えずにそのまま出力するようにしてもよいし、後の工程で処理しやすいように加工や分析を加えてから出力するようにしてもよい。
【００４９】
そして、記録したプロファイルに基づいて、ROM１１３に格納されているページと値が異なるRAM１１２上のページを抽出する。換言すれば、プログラム１２４の実行中にRAM１１２にのみ出現するページを抽出する。このようなページには、例えば、ROM１１３からRAM１１２にコピーされた後、値が書き換えられたページや、CPU１１１によりRAM１１２に確保された後、値が書き込まれたページなどがある。
【００５０】
そして、抽出されたページの全部または一部が、予測データとしてROM１１３に格納される。なお、ROM１１３に格納される予測データの量は、ROM１１３の容量により決定される。例えば、ROM１１３の容量に余裕があれば、全ての予測データをROM１１３に格納することが可能である。一方、ROM１１３の容量に余裕がなければ、予測データの一部を抽出して、ROM１１３に格納する必要がある。
【００５１】
後者の場合、例えば、プログラム１２４の実行中にRAM１１２に出現した頻度および期間のうちの少なくとも一方に基づいて、予測データを抽出することが考えられる。すなわち、出現した頻度が高い予測データや、期間が長い予測データが優先して抽出される。また、例えば、RAM１１２に出現するページのうち、初期値と比べて差分が大きいページを、優先して予測ページとしてROM１１３に格納するようにしてもよい。
【００５２】
また、プログラム１２４の特性上、プログラム１２４の実行中にRAM１１２に出現することが予め分かっているデータがある場合、そのデータを予測データとしてROM１１３に格納するようにすることが望ましい。
【００５３】
なお、以下、初期データからなるページを初期ページと称し、予測データからなるページを予測ページと称する。
【００５４】
［情報処理システム１０１の処理］
次に、図２乃至図１１を参照して、情報処理システム１０１により実行される処理について説明する。
【００５５】
なお、以下、図３に示されるように、ROM１１３に初期ページＰａおよび予測ページＰａ’が格納されているものとする。また、予測ページＰａ’は、プログラム１２４の実行中に初期ページＰａ全体の値Ａが値Ａ’に書き換えられることによりRAM１１２に出現するページに対応するものとする。さらに、以下、初期ページＰａおよび予測ページＰａ’ともにデータｘが含まれるものとする。このデータｘは、プログラム１２４により実際に処理される単位のデータである。
【００５６】
［データ読み出し処理］
まず、図４のフローチャートを参照して、情報処理システム１０１により実行されるデータ読み出し処理について説明する。
【００５７】
ステップＳ１において、プログラム１２４は、メモリマネージャ１２３に対して、データの読み出しを要求する。
【００５８】
ステップＳ２において、メモリアクセス部１２２は、データの読み出しを行う物理アドレスを求める。具体的には、メモリマネージャ１２３は、プログラム１２４により読み出しが要求されたデータの仮想アドレスを求め、求めた仮想アドレスからのデータの読み出しをメモリアクセス部１２２に要求する。メモリアクセス部１２２は、変換テーブルに基づいて、メモリマネージャ１２３により指定された仮想アドレスを物理アドレスに変換する。
【００５９】
ステップＳ３において、メモリアクセス部１２２は、求めた物理アドレスからデータを読み出す。すなわち、メモリアクセス部１２２は、求めた物理アドレスがROM１１３上のアドレスの場合、ROM１１３からデータを読み出し、RAM１１２上のアドレスの場合、RAM１１２からデータを読み出す。メモリアクセス部１２２は、読み出したデータを、メモリマネージャ１２３を介して、要求元のプログラム１２４に渡す。
【００６０】
その後、データ読み出し処理は終了する。
【００６１】
［データ書込み処理］
次に、図５のフローチャートを参照して、情報処理システム１０１により実行されるデータ書込み処理について説明する。
【００６２】
ステップＳ２１において、プログラム１２４は、メモリマネージャ１２３に対して、データの書き込みを要求する。
【００６３】
ステップＳ２２において、メモリアクセス部１２２は、データの書き込みを行う物理アドレスを求める。具体的には、メモリマネージャ１２３は、プログラム１２４によりデータの書き込みが要求された仮想アドレスを求め、求めた仮想アドレスへのデータの書き込みをメモリアクセス部１２２に要求する。メモリアクセス部１２２は、変換テーブルに基づいて、メモリマネージャ１２３により指定された仮想アドレスを物理アドレスに変換する。
【００６４】
ステップＳ２３において、メモリアクセス部１２２は、求めた物理アドレスに基づいて、書き込み対象のデータがRAM１１２上にあるか否かを判定する。書き込み対象のデータがRAM１１２上にないと判定された場合、処理はステップＳ２４に進む。
【００６５】
ステップＳ２４において、メモリ管理部１５２は、書き込み対象のデータを含むページをRAM１１２にコピーする。具体的には、メモリアクセス部１２２は、書き込み対象のデータを含むページがRAM１１２上にないことをメモリ管理部１５２に通知する。メモリ管理部１５２は、メモリアクセス部１２２から通知されたROM１１３上のページをRAM１１２にコピーする。
【００６６】
ステップＳ２５において、メモリ管理部１５２は、コピーしたページを参照するように変換テーブルを更新する。すなわち、メモリ管理部１５２は、コピー元のROM１１３上のページ（初期ページまたは予測ページ）の物理アドレスに対応付けられている仮想アドレスの変換先を、コピーしたRAM１１２上のページの物理アドレスに変更することにより、変換テーブルを更新する。これにより、以降、メモリアクセス部１２２が、コピー元のROM１１３上のページの代わりに、コピー先のRAM１１２上のページにアクセスするようになる。そして、メモリ管理部１５２は、変換テーブルを更新したことをメモリアクセス部１２２に通知する。
【００６７】
ステップＳ２６において、メモリアクセス部１２２は、更新された変換テーブルに基づいて、ステップＳ２２と同様の処理を行い、データの書き込みを行う物理アドレスを求める。
【００６８】
その後、処理はステップＳ２７に進む。
【００６９】
一方、ステップＳ２３において、書き込み対象のデータがRAM１１２上にあると判定された場合、ステップＳ２４乃至Ｓ２６の処理はスキップされ、処理はステップＳ２７に進む。
【００７０】
ステップＳ２７において、メモリアクセス部１２２は、求めた物理アドレスにデータを書き込む。そして、メモリアクセス部１２２は、データの書き込みの完了を、メモリマネージャ１２３を介して、要求元のプログラム１２４に通知する。
【００７１】
ここで、図６乃至図８を参照して、図４のデータ読み出し処理および図５のデータ書き込み処理の具体例について説明する。
【００７２】
初期ページＰａ内のデータの値が書き換えられる前は、CPU１１１は、例えばデータｘを読み出す場合、図６に示されるように、ROM１１３上の初期ページＰａから直接読み出す。
【００７３】
一方、初期ページＰａ内のデータの値を書き換える場合、図７に示されるように、CPU１１１は、ROM１１３上の初期ページＰａをRAM１１２にコピーする。そして、図８に示されるように、CPU１１１は、RAM１１２にコピーされたページＰｂ内のデータの値を書き換える。その結果、ページＰｂ全体の値は、初期ページＰａ全体の値Ａと異なる値Ｂになる。
【００７４】
以降、CPU１１１は、例えばデータｘを読み出す場合、図８に示されるように、RAM１１２上のページＰｂから読み出しを行う。同様に、CPU１１１は、例えばデータｘの値を変更する場合、RAM上のページＰｂ内のデータｘに対して書き込みを行う。
【００７５】
このように、RAM１１２上に書き込み対象のデータがない場合、書き込み対象のデータを含むページがROM１１３からRAM１１２にコピーされる。そして、RAM１１２にコピーされたページ内のデータに対して書き込みが行われる。それ以降、RAM１１２にコピーされたページ内のデータに対して、読み出しおよび書き込みが行われる。
【００７６】
［メモリ再配置処理］
次に、図９のフローチャートを参照して、情報処理システム１０１により実行されるメモリ再配置処理について説明する。
【００７７】
なお、この処理は、例えば、プログラム１２４からの要求に対して、RAM１１２の領域を確保できなくなったときや、RAM１１２の空き容量が所定の閾値以下になったときなど、RAM１１２の空き容量が不足しているときに実行される。あるいは、この処理は、例えば、CPU１１１の処理能力に余力があるとき、または、任意のタイミングで実行される。
【００７８】
また、以下、図１０に示されるように、CPU１１１が、RAM１１２上のページＰｂに対して書き込みを行うことにより、ページＰｂ全体の値が、予測ページＰａ’全体の値Ａ’と合致しているものとする。
【００７９】
ステップＳ４１において、メモリ管理部１５２は、ROM１１３上のページと値が合致するRAM１１２上のページを探索する。
【００８０】
なお、ここで用いる探索方法には、任意のものを採用することができる。例えば、ROM１１３上の初期ページおよび予測ページに、各ページの値を表すハッシュ値を予め付加しておき、そのハッシュ値を用いて探索するようにすることが考えられる。
【００８１】
ステップＳ４２において、メモリ管理部１５２は、ステップＳ４１の処理の結果、該当するページが検出されたか否かを判定する。該当するページ、すなわち、ROM１１３上のページと値が合致するRAM１１２上のページが検出されたと判定された場合、処理はステップＳ４３に進む。
【００８２】
ステップＳ４３において、メモリ管理部１５２は、合致するROM１１３上のページを参照するように変換テーブルを更新する。すなわち、メモリ管理部１５２は、検出されたRAM１１２上の全てのページについて、当該RAM上のページの物理アドレスに対応付けられている仮想アドレスの変換先を、値が合致するROM１１３上のページの物理アドレスに変更することにより、変換テーブルを更新する。
【００８３】
例えば、図１０に示される例の場合、ページＰｂの物理アドレスに対応付けられている仮想アドレスの変換先が、ページＰｂと値が合致するROM１１３上の予測ページＰａ’の物理アドレスに変更される。これにより、以降、CPU１１１は、例えばデータｘを読み出す場合、図１１に示されるように、RAM１１２上のページＰｂの代わりに、ROM１１３上の予測ページＰａ’から読み出しを行うようになる。
【００８４】
なお、もちろん、ページＰｂの値がRAM１１２上の初期ページＰａと合致する場合は、初期ページＰａを参照するように、変換テーブルが更新される。
【００８５】
ステップＳ４４において、メモリ管理部１５２は、検出されたRAM１１２上のページを破棄する。例えば、図１１に示される例の場合、RAM１１２上のページＰｂが破棄される。
【００８６】
その後、メモリ再配置処理は終了する。
【００８７】
一方、ステップＳ４２において、該当するページ、すなわち、ROM１１３上のページと値が合致するRAM１１２上のページが検出されなかったと判定された場合、ステップＳ４３およびＳ４４の処理はスキップされ、メモリ再配置処理は終了する。
【００８８】
なお、この後、予測ページＰａ’内のデータを書き換える場合には、初期ページＰａ内のデータを書き換える場合と同様に、予測ページＰａ’がRAM１１２にコピーされ、コピーされたページに対して書き込みが行われる。
【００８９】
このように、ROM１１３からRAM１１２にページをコピーした後も、RAM１１２上のページの値がROM１１３上のページと合致すれば、RAM１１２上のページが破棄され、ROM上のページが参照されるようになる。その結果、RAM１１２の使用量を削減することができる。
【００９０】
従って、RAM１１２の容量を小さくすることができる。あるいは、同じ容量のRAM１１２を用いて、より多くのデータを保持したり、より多くのプログラム１２４を同時に実行させたりすることが可能になる。
【００９１】
また、データをRAM１１２にスワップインせずに直接ROM１１３から読み出すことができるため、ROM１１３から直接読み出すことができるデータが多くなるほど、従来のスワップ機構と比較して、高速な動作を期待することができる。
【００９２】
＜２．変形例＞
以下、本技術の実施の形態の変形例について説明する。
【００９３】
［変形例１］
例えば、プログラム１２４が、RAM１１２のページの値をROM１１３の初期ページまたは予測ページと同じ値に書き換えたときに、メモリ管理部１５２にメモリの再配置を指令するようにしてもよい。例えば、上述した図１０に示されるように、プログラム１２４が、RAM１１２上のページＰｂをROM１１３上の予測ページＰａ’と同じ値Ａ’に書き換えたときに、メモリマネージャ１２３を介して、ページＰｂの再配置をメモリ管理部１５２に指令するようにしてもよい。
【００９４】
［変形例２］
また、例えば、予測ページを圧縮した状態でROM１１３に格納するようにしてもよい。
【００９５】
例えば、図１２の予測ページＰｃは、図３等に示される予測ページＰａ’を圧縮したものである。この場合、例えば予測ページＰｃ内のデータｘを読み出す場合、予測ページＰｃが解凍されて、RAM１１２にコピーされる。そして、RAM１１２にコピーされたページＰｄからデータｘが読み出される。
【００９６】
これにより、ROM１１３の容量を削減したり、あるいは、より多くの予測ページをROM１１３に格納したりすることができる。また、メモリ再配置処理により、ROM１１３上の予測ページと値が合致するRAM１１２上のページを破棄した後、当該予測ページ内のデータを読み出したり、書き込んだりするまでの間、RAM１１２の使用量を削減することができる。
【００９７】
なお、この場合、初期ページ内のデータも、該当する初期ページをROM１１３からRAM１１２に移してから読み出すようにしてもよい。このようにした場合、ROM１１３は、必ずしもランダムアクセス可能なものとする必要はない。
【００９８】
［変形例３］
さらに、例えば、プログラム１２４からの要求によりRAM１１２の領域を確保する場合に、ページ単位で領域を確保するようにしてもよい。
【００９９】
通常、各プログラム１２４は、実際に処理するデータ単位でRAM１１２の領域の確保をメモリマネージャ１２３に要求する。すなわち、各プログラム１２４は、アドレス単位で様々なサイズの領域の確保をメモリマネージャ１２３に要求する。
【０１００】
これに対して、従来のメモリマネージャ１２３は、例えば、１つのページ内に複数のデータを配置するように調整して、メモリ管理部１５２にRAM１１２の領域の確保を要求する。その結果、例えば、図１３の左側に示されるように、RAM１１２上のページＰ１ａ内にデータａ乃至ｃが混在し、ページＰ３ａ内にデータｘとデータｙが混在した状態になる。これにより、RAM１１２の使用量を削減することができる。
【０１０１】
しかし、この場合、例えば、ページＰ１ａについては、データａ乃至データｃの全ての値がROM１１３上の予測ページと合致しなければ、RAM１１２から破棄することができない。そのため、ページＰ１ａがRAM１１２から破棄される確率が低くなる。これは、ページＰ３ａについても同様である。
【０１０２】
そこで、図１３の右側に示されるように、各ページに１つずつデータが格納されるようにRAM１１２の領域を確保するようにすることが考えられる。すなわち、各プログラム１２４からの要求に対して、データ毎にページ単位でRAM１１２の領域を確保するようにすることが考えられる。その結果、ページＰ１ｂ乃至Ｐ５ｂには、データａ乃至ｙが１つずつ格納されるようになる。
【０１０３】
これにより、ページＰ１ｂ乃至Ｐ５ｂの値が、ROM１１３上の予測ページと合致し、ページＰ１ｂ乃至Ｐ５ｂをRAM１１２から破棄できる確率が高くなる。その結果、RAM１１２の使用量を削減することができる。
【０１０４】
ただし、この場合、RAM１１２上のページの利用効率が低下し、一時的にRAM１１２の使用量が増大することが予測される。これに対しては、例えば、スワップデバイスやメモリ圧縮技術などを採用することにより解消することが可能である。
【０１０５】
例えば、長期間使用しないデータを格納するページを、圧縮してRAM１１２に保持するようにすることが考えられる。この場合、例えば、ページＰ１ｂ乃至Ｐ５ｂは、未使用領域が多いため、圧縮率が高くなり、よりRAM１１２の使用量の削減効果が大きくなると考えられる。
【０１０６】
なお、この場合、RAM１１２に出現する頻度が高いページや、出現する期間が長いページの他に、圧縮率が悪いページを優先して予測ページとしてROM１１３に格納することが考えられる。これにより、RAM１１２の使用量をさらに削減することができる。
【０１０７】
［変形例４］
また、例えば、ROM１１３の代わりにフラッシュメモリ等の書き込み可能な記憶装置を補助記憶装置に用いるとともに、予測ページの学習処理を行い、動的に予測ページを生成し、補助記憶装置に格納するようにしてもよい。
【０１０８】
ここで、図１４および図１５を参照して、この場合の処理の具体例について説明する。
【０１０９】
図１４は、予測ページの学習処理を行う場合に、図２のメモリマネージャ１２１の代わりに用いられるメモリマネージャ２０１の機能の構成例を示している。メモリマネージャ２０１は、プロファイル取得部１５１、メモリ管理部１５２、および、予測ページ生成部２１１を含むように構成される。なお、図中、図２と対応する部分には同じ符号を付してあり、処理が同じ部分については、適宜説明を省略する。
【０１１０】
プロファイル取得部１５１は、RAM１１２の内容のプロファイルを取り、取得したプロファイルを予測ページ生成部２１１に供給する。
【０１１１】
予測ページ生成部２１１は、RAM１１２の内容のプロファイルに基づいて、予測ページを生成し、生成した予測データを補助記憶装置に格納する。
【０１１２】
次に、図１５のフローチャートを参照して、プログラム１２４の実行中にメモリマネージャ２０１により実行される予測ページ生成処理について説明する。なお、この処理は、例えば、連続して、所定の間隔ごとに定期的に、または、CPU１１１の処理能力に余力があるときに実行される。
【０１１３】
ステップＳ１０１において、プロファイル取得部１５１は、プログラム１２４を実行中のRAM１１２の内容のプロファイルを取り、取得したプロファイルを予測ページ生成部２１１に供給する。このとき、連続してプロファイルを取るようにしてもよいし、所定の間隔毎または所定の条件を満たしたときなどに離散的にプロファイルを取るようにしてもよい。
【０１１４】
ステップＳ１０２において、予測ページ生成部２１１は、プロファイルの結果に基づいて、予測ページを生成する。例えば、予測ページ生成部２１１は、補助記憶装置に格納されている予測ページと異なる値のページが補助記憶装置に出現した場合、そのページと同じ値のページを予測ページとして生成する。
【０１１５】
ステップＳ１０３において、予測ページ生成部２１１は、生成した予測ページを補助記憶装置に格納する。
【０１１６】
その後、予測ページ生成処理は終了する。
【０１１７】
これにより、RAM１１２上のページの値が、補助記憶装置上の予測ページと合致する確率が高くなり、よりRAM１１２の使用量を削減することができる。
【０１１８】
なお、例えば、出現頻度や出現時間に基づいて、補助記憶装置に格納する予測ページを選別するようにしてもよい。すなわち、RAM１１２に出現する頻度が高いページや、出現する期間が長いページを抽出して、補助記憶装置に格納するようにしてもよい。
【０１１９】
また、例えば、補助記憶装置に格納されている予測ページのうち長期間使用されていないものや、使用頻度が低いものを適宜削除するようにしてもよい。
【０１２０】
［変形例５］
さらに、本技術の実施の形態では、予測ページを用いなくても、RAM１１２の使用量の削減効果を得ることができる。すなわち、RAM１１２のページの値が初期ページと合致した場合にのみ、そのページを破棄し、初期ページを参照するようにするだけでも、RAM１１２の使用量の削減効果を得ることができる。
【０１２１】
［変形例６］
また、以上に示した情報処理システム１０１のソフトウエアの構成例は、その一例であり、他の構成にすることも可能である。例えば、メモリマネージャ１２１およびメモリアクセス部１２２の機能の全部または一部を、メモリマネージャ１２３やプログラム１２４が実行するようにしてもよい。また、例えば、メモリマネージャ１２１が、メモリアクセス部１２２の機能の一部または全部を実行するようにしてもよい。さらに、例えば、メモリマネージャ１２３を省略して、プログラム１２４が直接メモリマネージャ１２１およびメモリアクセス部１２２に処理を要求するようにしてもよい。
【０１２２】
［変形例７］
さらに、以上の説明では、RAM１１２およびROM１１３のデータの配置を同じサイズのブロックであるページ単位で行う例を示したが、本技術は、例えば、セグメント単位またはアドレス単位等、不均一なサイズでデータの配置を行う場合にも適用することができる。
【０１２３】
［変形例８］
また、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。例えば、メモリアクセス部１２２を、メモリ管理ユニット（MMU）等のハードウエアにより構成することも可能である。
【０１２４】
なお、一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１２５】
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。その他、プログラムは、装置に組み込まれている記憶装置（例えば、ROM１１３）に、あらかじめインストールしておくことができる。
【０１２６】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１２７】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【０１２８】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１２９】
また、例えば、本技術は以下のような構成も取ることができる。
【０１３０】
（１）
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御するメモリ管理部を
備えるメモリ管理装置。
（２）
前記補助記憶装置のデータは、前記プログラムを実行する前の初期値を示す初期データ、および、前記プログラムの実行中に前記主記憶装置に出現すると予測される予測データを含む
前記（１）に記載のメモリ管理装置。
（３）
前記予測データは、前記プログラムを実行させたときの前記主記憶装置の内容に基づいて予測されたデータである
前記（２）に記載のメモリ管理装置。
（４）
前記予測データは、前記プログラムを実行させたときに前記主記憶装置に出現したデータから、出現した頻度および期間のうち少なくとも一方に基づいて抽出されたデータである
前記（３）に記載のメモリ管理装置。
（５）
前記予測データは、所定のサイズのブロック単位で前記補助記憶装置に格納され、
前記メモリ管理部は、前記プログラムからの要求に対して、前記ブロック単位で前記主記憶装置の領域を確保する
前記（２）から（４）のいずれかに記載のメモリ管理装置。
（６）
前記予測データは、圧縮された状態で前記補助記憶装置に格納される
前記（２）から（５）のいずれかに記載のメモリ管理装置。
（７）
前記プログラムの実行中に、前記主記憶装置の内容に基づいて前記予測データを生成し、前記補助記憶装置に格納する予測データ生成部を
前記（２）から（６）のいずれかに記載のメモリ管理装置。
（８）
前記メモリ管理部は、前記補助記憶装置のデータを書き換える場合、当該データを前記主記憶装置にコピーし、前記主記憶装置にコピーしたデータを書き換えるように制御する
前記（１）から（７）のいずれかに記載のメモリ管理装置。
（９）
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御する
ステップを含むメモリ管理方法。
（１０）
所定のプログラムの実行中に、補助記憶装置のデータと合致する主記憶装置のデータを破棄し、破棄したデータを前記補助記憶装置から読み出すように制御する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【符号の説明】
【０１３１】
１０１  情報処理システム，  １１１  CPU,  １１２  RAM，  １１３  ROM,  １２１  メモリマネージャ，  １２２  メモリアクセス部,  １２３  メモリマネージャ，  １２４−１乃至１２４−ｎ  プログラム，  １５１  プロファイル取得部,  １５２  プロファイル管理部，  ２０１  メモリマネージャ,  ２１１  予測ページ生成部
【図１】
2012221333.tif 000003
【図２】
2012221333.tif 000004
【図３】
2012221333.tif 000005
【図４】
2012221333.tif 000006
【図５】
2012221333.tif 000007
【図６】
2012221333.tif 000008
【図７】
2012221333.tif 000009
【図８】
2012221333.tif 000010
【図９】
2012221333.tif 000011
【図１０】
2012221333.tif 000012
【図１１】
2012221333.tif 000013
【図１２】
2012221333.tif 000014
【図１３】
2012221333.tif 000015
【図１４】
2012221333.tif 000016
【図１５】
2012221333.tif 000017