(57)【要約】【課題】スワップアウト処理時に出力するデータ量を削減することで、スワップアウト処理の高速化を行うスワップアウト制御装置を提供すること。【解決手段】使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定する出力対象決定部１０２と、一次記憶装置のメモリ領域に書き換えがあったかどうかの情報を保持する差分情報記憶部１１１と、二次記憶装置の書き込み単位であるブロック毎に管理情報を保持している二次記憶管理情報記憶部１１２と、出力対象記憶部１１０が記憶するアドレス範囲のデータと、過去にスワップアウトした二次記憶装置上のデータとの差分を判定する差分情報判定部１０３と、差分があると判定された場合にスワップアウト処理するスワップアウト処理部１０４とを備え、二次記憶装置への書き込み量を削減する。【選択図】図２
2009020776.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する一次記憶装置と二次記憶装置の間のスワップ処理を制御するスワップアウト制御装置であって、
使用している前記一次記憶装置上のメモリ領域から、スワップ出力対象となるメモリ領域のアドレス範囲を決定する出力対象決定手段と、
前記二次記憶装置上に格納されているデータに対し、前記データの前記二次記憶装置上での現在の状態と、前記データがスワップアウト前に格納されていた前記一次記憶装置上のアドレス範囲とを含んだ管理情報を保持する二次記憶管理情報記憶手段と、
前記二次記憶管理情報記憶手段に保持された管理情報を用いて、前記出力対象決定手段が決定した前記アドレス範囲に対応するデータが、前記二次記憶装置上に存在するか否かを判断し、前記出力対象決定手段が決定した前記アドレス範囲のデータと、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定する差分情報判定手段と、
前記差分情報判定手段が相違がありと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定手段が相違がないと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行わないスワップアウト処理手段を備えたことを特徴とするスワップアウト制御装置。
【請求項２】
書き込みが行われた前記一次記憶装置のデータの格納場所を指定するアドレス情報を差分情報として保持する差分情報記憶手段と、
前記一次記憶装置に対する書き込みを監視し、前記差分情報記憶手段に格納されている差分情報を更新するメモリ管理手段と、
前記差分情報判定手段は、前記差分情報記憶手段に格納されている差分情報を用いて、前記出力対象決定手段が決定した前記アドレス範囲のデータと、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定することを特徴とする請求項１記載のスワップアウト制御装置。
【請求項３】
前記二次記憶装置からスワップインしたデータの複製を保持するバッファメモリと、
前記二次記憶装置からスワップインしたデータの複製を、前記バッファメモリへ保存するスワップイン処理部と、
プロセスに対し、前記プロセスが使用する一次記憶装置のデータの格納場所を指定するアドレス情報と、前記バッファメモリに前記プロセスが使用するデータの複製が保持されているか否かの情報を保持するプロセスメモリ情報記憶手段とを備え、
前記差分情報判定手段は、前記プロセスメモリ情報記憶手段に保持された情報を用いて、前記出力対象決定手段が決定した前記アドレス範囲のデータが、前記バッファメモリに存在するか否かを判断し、前記出力対象決定手段が決定した前記アドレス範囲のデータと前記バッファメモリに存在するデータを使って、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定することを特徴とする請求項２記載のスワップアウト制御装置。
【請求項４】
前記差分情報判断手段は、前記出力対象決定手段が決定したアドレス範囲を、前記二次記憶装置への書き込み単位で分割し、前記分割されたアドレス範囲毎に、相違があるかどうかを判定し、
前記スワップアウト処理手段は、前記差分情報判定手段が相違がありと判断した場合、前記分割されたアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定手段が相違がないと判断した場合、前記分割されたアドレス範囲のデータの二次記憶装置への出力を行わないことを特徴とする請求項３記載のスワップアウト制御装置。
【請求項５】
前記差分情報判断手段は、前記出力対象決定手段が決定したアドレス範囲を、前記二次記憶装置への書き込み単位にまとめ、前記まとめられたアドレス範囲毎に、相違があるかどうかを判定し、
前記スワップアウト処理手段は、前記差分情報判定手段が相違がありと判断した場合、前記まとめられたアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定手段が相違がないと判断した場合、前記まとめられたアドレス範囲のデータの二次記憶装置への出力を行わないことを特徴とする請求項３記載のスワップアウト制御装置。
【請求項６】
データを格納する一次記憶装置と二次記憶装置の間のスワップ処理を制御するスワップアウト制御方法であって、
使用している前記一次記憶装置上のメモリ領域から、スワップ出力対象となるメモリ領域のアドレス範囲を決定する出力対象決定ステップと、
前記二次記憶装置上に格納されているデータに対し、前記データの前記二次記憶装置上での現在の状態と、前記データがスワップアウト前に格納されていた前記一次記憶装置上のアドレス範囲とを含んだ管理情報を保持する二次記憶管理情報記憶部を用いて、前記出力対象決定ステップで決定した前記アドレス範囲に対応するデータが、前記二次記憶装置上に存在するか否かを判断し、前記出力対象決定ステップで決定した前記アドレス範囲のデータと、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定する差分情報判定ステップと、
前記差分情報判定ステップで相違がありと判断した場合、前記出力対象決定ステップで決定したアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定ステップで相違がないと判断した場合、前記出力対象決定ステップで決定したアドレス範囲のデータの前記二次記憶装置への出力を行わないスワップアウト処理ステップを備えたことを特徴とするスワップアウト制御方法。
【請求項７】
データを格納する一次記憶装置と二次記憶装置の間のスワップ処理を制御するスワップアウト制御装置であって、
使用している前記一次記憶装置上のメモリ領域から、スワップ出力対象となるメモリ領域のアドレス範囲を決定する出力対象決定手段と、
前記二次記憶装置上に格納されているデータに対し、前記データの前記二次記憶装置上での現在の状態と、前記データがスワップアウト前に格納されていた前記一次記憶装置上のアドレス範囲とを含んだ管理情報を保持する二次記憶管理情報記憶手段と、
前記二次記憶管理情報記憶手段に保持された管理情報を用いて、前記出力対象決定手段が決定した前記アドレス範囲に対応するデータが、前記二次記憶装置上に存在するか否かを判断し、前記出力対象決定手段が決定した前記アドレス範囲のデータと、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定する差分情報判定手段と、
前記差分情報判定手段が相違がありと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定手段が相違がないと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行わないスワップアウト処理手段を備えたことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で実行される二次記憶装置を一次記憶装置の退避領域として利用するスワップ処理の高速化に関するものである。
【背景技術】
【０００２】
従来、仮想記憶を利用する計算機システムにおいて、プログラムは、１つ以上のプロセスとして実行される。各プロセスが動作するには、動作中に使用するデータを格納するための記憶領域が必要となる。この記憶領域は、一次記憶装置または二次記憶装置上に割り当てられる。
【０００３】
一般に、二次記憶装置は一次記憶装置に比べて、アクセス速度（データ読み書き）が低速であるため、一次記憶装置が優先的に使用される。また、計算機システムが同時に複数のプログラムを起動することで、必要とする記憶領域の合計の量が一次記憶装置全体の量より大きくなった場合、一次記憶装置で記憶しているデータの一部を二次記憶装置に退避するスワップ処理を行う。
【０００４】
二次記憶装置は一次記憶装置に比べて低速であるため、スワップ処理によるデータの移動動作は、計算機処理において大きなオーバヘッドとなる。特に、ページ単位での使用履歴に基づいて、二次記憶装置へのスワップアウト対象のデータを決定する場合、動作中のプロセスが、たまたま履歴の古いページをアクセスすることで、一次記憶装置への移動（スワップ処理）によるオーバーヘッドが発生する。さらに、そのページアクセス時に、応答性を重視するリアルタイム性が必要な処理が含まれているような場合には、オーバヘッドによる遅延が発生し、リアルタイム性を阻害することがあった。
【０００５】
そのため、従来の技術として、アプリケーションの切替えタイミングで、切替え対象のアプリケーション（プロセス群）に関連するデータをまとめて二次記憶装置から一次記憶装置へロードすることにより、その後の処理のパフォーマンス低下を防ぎ、転送効率を上げるものがあった（例えば、特許文献１参照）。
【特許文献１】特表２００１−５１７８３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記従来の技術では、アプリケーションの切換え後のパフォーマンスは改善するが、アプリケーション切換え時のオーバヘッドについては改善できない。つまり、アプリケーション切替え時に一度にデータ転送を行うことにより、切替え完了までの時間がかかるという課題を有していた。
【０００７】
本発明は、前記従来の課題を解決するもので、スワップアウト処理時に出力するデータ量を削減することで、スワップアウト処理の高速化を行うスワップアウト制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
前記従来の課題を解決するために、本発明のスワップアウト制御装置は、データを格納する一次記憶装置と二次記憶装置の間のスワップ処理を制御するスワップアウト制御装置であって、使用している前記一次記憶装置上のメモリ領域から、スワップ出力対象となるメモリ領域のアドレス範囲を決定する出力対象決定手段と、前記二次記憶装置上に格納されているデータに対し、前記データの前記二次記憶装置上での現在の状態と、前記データがスワップアウト前に格納されていた前記一次記憶装置上のアドレス範囲とを含んだ管理情報を保持する二次記憶管理情報記憶手段と、前記二次記憶管理情報記憶手段に保持された管理情報を用いて、前記出力対象決定手段が決定した前記アドレス範囲に対応するデータが、前記二次記憶装置上に存在するか否かを判断し、前記出力対象決定手段が決定した前記アドレス範囲のデータと、前記二次記憶装置上に存在するデータとに相違があるかどうかを判定する差分情報判定手段と、前記差分情報判定手段が相違がありと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行い、前記差分情報判定手段が相違がないと判断した場合、前記出力対象決定手段が決定したアドレス範囲のデータの前記二次記憶装置への出力を行わないスワップアウト処理手段を有し、スワップアウト時に、そのアドレス範囲のデータが、過去にスワップアウトされており、かつそのデータが二次記憶装置上に存在していた場合、二次記憶装置上のデータと相違があるかを判断し、相違がなければ、実際の書き込み動作をせず、前回のスワップインしたデータを有効にするだけで出力処理を完了することができる。
【０００９】
本構成によって、スワップアウト時に、出力するデータ量を削減することが可能となる。
【発明の効果】
【００１０】
本発明のスワップアウト制御装置によれば、スワップアウト時の二次記憶装置へのデータ出力量を減らし、スワップアウト処理のオーバヘッドを少なくすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１２】
（実施の形態１）
図１は、本発明の実施の形態におけるスワップアウト制御装置を備えた情報処理装置の構成を示すハードウェア構成図である。
【００１３】
この情報処理装置１０００は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置１０００の一例は、代表的にはＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ；パーソナルコンピュータ或いはパソコン）等の汎用のコンピュータやＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）或いは携帯電話機等の携帯通信端末、デジタルカメラ、携帯オーディオプレイヤーなどである。携帯通信端末の世界では二次記憶にメモリを退避するスワップ技術において、スワップ処理の高速化が要求されるので、本発明のスワップアウト制御装置による効果がもたらす利益が甚大である。
【００１４】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）１、ＭＭＵ２（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）、メモリ装置３、通信装置４４、入力装置５０、表示装置５５、タイマー回路６１及び割込コントローラ６５を備えている。これらの各構成要素は、バスライン６０を通じて互いに接続されている。また、必要に応じて、バスライン６０には、二次記憶装置３５及び読取書込装置４２を接続することが可能となっている。二次記憶装置３５、読取書込装置４２、入力装置５０及び表示装置５５は、それぞれ、インタフェース３６、４５、５１及び５６を通じてバスライン６０に接続される。
【００１５】
スワップアウト制御装置１０は、ＣＰＵ１とＭＭＵ２とメモリ装置３と二次記憶装置３５とを備えている。
【００１６】
ＣＰＵ１は、単一のＣＰＵで構成されても良く、複数のＣＰＵで構成されても良い。一例として、情報処理装置１０００は、複数のＣＰＵ１１、１２、１３、・・・を有するものとする。またＣＰＵ毎に、ＭＭＵ２１、２２、２３・・・を有するものとする。メモリ装置３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３１及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３２を備えている。ＲＯＭ３１は、ＣＰＵ１の動作を規定するコンピュータプログラムを記憶している。コンピュータプログラムは、二次記憶装置３５に記憶させることもできる。ＣＰＵ１は、ＲＯＭ３１又はハードディスク装置などの二次記憶装置３５が格納するコンピュータプログラムを、必要に応じてＲＡＭ３２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。ＲＡＭ３２は、ＣＰＵ１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ＲＯＭ３１には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体も含まれる。ＲＡＭ３２には、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
【００１７】
二次記憶装置３５は、内蔵する不図示のハードディスクや、大容量フラッシュメモリなどに対して、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である。読取書込装置４２は、記録媒体４１（例えばＣＤやＤＶＤやＢＤ−ＲＯＭやメモリカードなど）に記録されたコンピュータプログラム、或いはデータを読取る装置である。また、読取書込装置４２は、記録媒体４１（例えばＣＤやＤＶＤやＢＤ−ＲＯＭやメモリカードなど）にプログラム或いはデータを書込む装置である。
【００１８】
通信装置４４は、電話回線やネットワーク線や無線や赤外線通信等の通信回線４３を介して、外部の機器と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。
【００１９】
入力装置５０は、ユーザの操作によりデータ等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、或いは着脱自在のマウス、キーボードである。また、マイクなどの音声入力機器などであってもよい。
【００２０】
表示装置５５は、データ、画像等を画面に表示したり、データ等を音声で表示したりする装置であり、例えばＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）、ブラウン管、スピーカである。
【００２１】
タイマー回路６１は、一定の周期でタイマー割込信号を出力する装置である。割込コントローラ６５は、タイマー回路６１、入力装置５０、ＣＰＵ１のうちの処理実行中のＣＰＵ以外のＣＰＵ、ネットワークデバイスとしての通信装置４４、二次記憶装置３５、読取書込装置４２等から送られる割込要求信号を、ＣＰＵ１へ中継する装置である。各装置からの割込要求には優先度が付けられている。割り込みコントローラ６５は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
【００２２】
以上のように、情報処理装置１０００は、コンピュータとして構成されている。上記コンピュータプログラムは、ＲＯＭ３１、不図示のフレキシブルディスク、ＣＤ−ＲＯＭ等のプログラム記録媒体４１を通じて供給することも、電気通信回線４３等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体４１としてＣＤ−ＲＯＭに記録されたコンピュータプログラムは、読取書込装置４２を情報処理装置１０００へ接続することにより、読み出すことができ、更にＲＡＭ３２或いは二次記憶装置３５に格納することができる。
【００２３】
プログラム記録媒体としてＲＯＭ３１によってコンピュータプログラムが供給される場合には、当該ＲＯＭ３１を情報処理装置１０００に搭載することにより、ＣＰＵ１は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線４３等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置４４を通じて受信され、例えば、ＲＡＭ３２或いは二次記憶装置３５に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であっても良い。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００２４】
図２は、本実施の形態におけるスワップアウト制御装置の構成を示すブロック図である。通常、このスワップアウト制御装置の実体は、メモリ装置３或いはＨＤＤなどの大容量二次記憶装置３５に格納され、ＣＰＵ１と協働して実行することにより、スワップアウト処理の高速化を実現している。なお、図２のＭＭＵ２と二次記憶装置１０７は、図１中のＭＭＵ２と二次記憶装置３５に相当する。また、一次記憶装置とは、図１中のメモリ装置３を示している。
【００２５】
二次記憶管理情報記憶部１１２は、二次記憶装置の書き込み単位であるブロック毎に管理情報を保持している。管理情報には、対象ブロックの状態（解放、書き込み済み、読み込み済み）と、二次記憶装置に書き込まれたデータが存在していた一次記憶装置上のアドレス範囲（メモリ領域を識別するメモリＩＤやページＩＤ、また、開始アドレスと終了アドレスや、開始アドレスとデータサイズなど）を含んでいる。
【００２６】
差分情報保持部１１１は、各プロセスが使用する一次記憶装置のメモリ領域に対して、書き換えがあったかどうかの情報を保持する。つまり、二次記憶装置に出力済みのデータ（スワップアウト済みのデータ）との差分情報を保持する。
【００２７】
スワップアウト指示部１０１は、スワップアウト処理の開始タイミングを判断し、出力対象決定部１０２に、開始指示を通知する。具体的には、一次記憶装置上のメモリ領域の空きサイズと、前もって決められている閾値との比較を行い、空きサイズが閾値より小さい場合に、スワップアウト処理を開始すると判断する。また、デーモンから通知を受け取ることで、定期的に主記憶装置上の空きサイズの確保を行ってもよい。また、必要とする主記憶装置上の空きサイズに基づいて、スワップアウト処理により二次記憶装置に移動するデータのサイズ（メモリ領域サイズ）を決定し、スワップ対象決定部１０２に通知する。
【００２８】
出力対象決定部１０２は、使用している一次記憶装置上のメモリ領域から、スワップ出力対象となるメモリ領域のアドレス範囲を決定し、決定した１つ以上のアドレス範囲を出力対象記憶部１１０に格納し、スワップ出力要求を行う。アドレス範囲の選択の方法としては、例えば特定プロセスが使用している一次記憶装置３のアドレス範囲を選択するなどの方法も考えられる。ここでの、アドレス範囲を決定する方式については、上記例に限らず、一次記憶装置３全体から単位アドレス範囲あたりの、各アドレス範囲のデータに対するアクセス頻度や、書き換え頻度などを使ってＬＲＵなどの方式によって、出力するアドレス範囲のデータを決定する方法なども考えられる。
【００２９】
出力対象記憶部１１０は、出力対象決定部１０２によって決定された出力対象候補の０以上複数個のアドレス範囲情報を記憶する。
【００３０】
差分情報判定部１０３は、出力対象決定部１０２からのスワップ出力要求を受け取り、出力対象記憶部１１０に保持されたアドレス範囲情報を取り出し、二次記憶管理情報記憶部１１２に格納された管理情報を用いて、取り出したアドレス範囲のデータが、過去二次記憶装置に出力したデータとして二次記憶装置上に存在するかどうかを確認する。二次記憶装置上にデータが存在しない場合には、スワップアウト処理部１０４に対して、そのアドレス範囲のデータのスワップアウト処理を指示する。存在する場合には、差分情報記憶部１１１に格納された差分情報を用いて、取り出したアドレス範囲のデータ（一次記憶装置上のデータ）と、過去に二次記憶装置に出力済みであり二次記憶装置上に存在するデータとに、相違があるかないかを判定する。相違ありと判定した場合には、スワップアウト処理部１０４に対して、そのアドレス範囲のデータのスワップアウト処理を指示する。相違なしと判定した場合には、スワップアウト処理の必要なしとして、スワップアウト処理部１０４に対して、スワップアウト処理をしないように指示する。つまり、一次記憶装置上の出力対象のアドレス範囲に保存されたデータについて、同一のアドレス範囲のデータが過去に二次記憶装置に保存された場合に、現在二次記憶装置に保存されている最新のデータが、現在有効であるか否かを判断する。
【００３１】
スワップアウト処理部１０４は、差分情報判定部１０３からの指示を受け取り、指示に基づいて処理を行う。スワップアウト処理を行う指示を受けた場合、指示されたスワップアウト対象の一次記憶装置上のアドレス範囲のデータの出力をデータ出力部１０５に指示する。一方、スワップアウト処理を行わない指示を受けた場合、データ出力部１０５へのデータ出力指示は行わない。さらに、スワップアウト処理をする・しないにかかわらず、出力対象のアドレス範囲に対応する対象ブロックの管理情報（対象ブロックの状態、アドレス範囲）の更新を行う。これにより、二次記憶管理情報記憶部１１２に保持されている対象ブロックの状態は、「書き込み済み」となる。
【００３２】
データ出力部１０６は、スワップアウト処理部１０４からの出力指示を受け取り、指示された一次記憶装置上のアドレス範囲のデータを、二次記憶装置に書き込む処理を行う。
【００３３】
メモリ管理部１０６は、ＣＰＵ１による一次記憶装置への書き込み信号を監視し、書き込みが行われた一次記憶装置上のメモリ領域のアドレス範囲を、差分情報記憶部１１１に格納する処理を行う。具体的には、ＭＭＵ２に対して、スワップが可能なアドレス範囲のデータの書き換えを禁止する。ＣＰＵ１が処理を行い書き換えが禁止されたメモリ領域への書き込みを行うと、ＭＭＵ２が書き込み違反を検出し、割込などを通じて、メモリ管理部１０６を呼び出す。メモリ管理部１０６は、割込コントローラ６５およびＣＰＵ１より、書き込み違反のあった書き込みアドレスを入手し、そのアドレスが含まれるアドレス範囲に対して差分情報ありとして差分情報記憶部１１１を更新する。また、メモリ管理部１０６は、ＣＰＵ１による一次記憶装置上への読み書きを監視し、アプリケーションなどが必要とするデータを格納するメモリ領域のアドレス範囲をスワップイン処理部１０７に通知する。
【００３４】
スワップイン処理部１０７は、メモリ管理部１０６からの通知を受け、二次記憶管理情報記憶部１１２を用いて、アプリケーションなどが必要とするデータが、二次記憶装置に退避済みのアドレス範囲のデータであるか否かを確認する。二次記憶装置に退避済みのアドレス範囲のデータであると判断した場合、スワップイン処理を行うことに決定し、必要なデータの読み取り要求を、データ入力部１０８に対して行う。また、スワップイン処理部１０７は、スワップイン処理を行うアドレス範囲の対象ブロックの管理情報（対象ブロックの状態、アドレス範囲）の更新を行う。これにより、二次記憶管理情報記憶部１１２に保持されている対象ブロックの状態は、「読み取り済み」となる。
【００３５】
データ入力部１０８は、スワップイン処理部１０７からのデータの読み取り要求を受け取り、要求されたデータを、二次記憶装置から読み取り、読み取ったデータを一次記憶装置に書き込む処理を行う。
【００３６】
以上により、本発明のスワップアウト制御装置は、スワップアウトされたデータをスワップイン時に破棄せず、二次記憶装置上に一次的に保持しておくことで、スワップアウト時に、そのアドレス範囲のデータが、過去にスワップアウトされており、かつそのデータが二次記憶装置上に存在していた場合、二次記憶装置上のデータと相違があるかを判断し、相違がなければ、実際の書き込み動作をせず、前回スワップアウトした二次記憶装置上のデータを有効（書き込み済み）にするだけで、二次記憶装置へのデータの出力処理を完了することができる。これにより、スワップアウト時に出力するデータ量を削減することが可能となり、スワップ処理時のオーバーヘッドを減らすことができる。
【００３７】
図５は、差分情報記憶部１１１が保持する差分情報の一例を示したものである。プロセスＩＤとは、プロセスを識別する識別子である。アドレス範囲とは、各プロセスが使用している一次記憶装置上のメモリ領域を識別する情報（メモリ領域を識別するメモリＩＤやページＩＤ、また、開始アドレスと終了アドレスや、開始アドレスとデータサイズなど）である。書き換え状況とは、一次記憶装置上の各メモリ領域（アドレス範囲）に対して書き換えがあったかどうかの情報である。この書き換え状況は、メモリ領域が割り当てられた際に、メモリ管理部１０６により「差分あり」と設定され、スワップイン処理された際に、メモリ管理部１０６により「差分なし」と更新される。また、一次記憶装置上のメモリ領域に書き込みがあった際に、メモリ管理部１０６により「差分あり」に更新される。
【００３８】
図６は、二次記憶管理情報記憶部１１２が保持する管理情報の一例を示したものである。ブロックＩＤとは、二次記憶装置上のメモリ領域を識別する情報であり、二次記憶装置の書き込み単位であるブロックで管理している。アドレス範囲とは、各ブロックＩＤのデータが存在していた一次記憶装置上のメモリ領域を識別する情報である。状態とは、各ブロックの状態であり、二次記憶装置上での状態を「解放」、「書き込み済み」、「読み込み済み」で示している。
【００３９】
なお、二次記憶管理情報記憶部１１２での情報の管理単位については、二次記憶装置の書き込み単位であるブロックで管理する例を示したが、処理効率を考えて複数のブロックをまとめて管理することも可能である。また逆に、書き込み量を減らすためにより小さなブロックで管理する形態をとることも可能である。
【００４０】
また、二次記憶管理情報記憶部１１２へ情報を設定する処理については、前述では、スワップアウト処理部１０４とスワップイン処理部１０７が行うとしたが、処理をまとめて、あるいは分割して行う都合から、同等の処理を行う前段・後段の処理で書き込む形態をとることが可能である。
【００４１】
二次記憶装置上のデータの解放に関しては、アプリケーションの終了時などプロセスが終了したタイミングで実行することができる。つまり、そのプロセスが使用していたデータ、つまり、一次記憶装置上に保持していたデータだけでなく、対応する二次記憶装置上のデータを解放できる。また、二次記憶装置を有効活用するために、前述のスワップイン処理の後、読み取り済みとして二次記憶管理情報記憶部１１２に記録されているデータについても、必要に応じて解放できる。解放するタイミングとしては一定周期、あるいは二次記憶装置上で使用中（二次記憶管理情報記憶部１１２で「書き込み済み」あるいは、「読み取り済み」と記録されている領域）でない領域のサイズが不足した場合などの条件で、解放を行うことができる。解放処理については、二次記憶管理情報記憶部１１２が「読み取り済み」と記録している領域から解放する。さらに、そのデータの利用履歴や、どのプロセスがそのデータを利用しているかの情報などから、解放する優先順位を決めることも可能である。
【００４２】
以上により、本発明のスワップアウト制御装置は、スワップアウトされたデータをスワップイン時に破棄せず、二次記憶装置上に一次的に保持しておくことで、スワップアウト時に、そのアドレス範囲のデータが、過去にスワップアウトされており、かつそのデータが二次記憶装置上に存在していた場合、二次記憶装置上のデータと相違があるかを判断し、相違がなければ、実際の書き込み動作をせず、前回スワップアウトした二次記憶装置上のデータを有効（書き込み済み）にするだけで、二次記憶装置へのデータの出力処理を完了することができる。これにより、スワップアウト時に出力するデータ量を削減することが可能となり、スワップ処理時のオーバーヘッドを減らすことができる。
【００４３】
また、本発明にかかるスワップアウト制御装置は、スワップ処理時のオーバーヘッドを減らすことで、プロセス切り替え時間を短縮するとともに、二次記憶装置の長寿命化を実現する。このため、レスポンス時間が重要な情報機器やＮＡＮＤなど書き換え寿命が短い二次記憶装置を持つＡＶ機器や通信機器、家電機器などのコンピュータを搭載する機器において大変有用である。
【００４４】
（実施の形態２）
本実施の形態では、二次記憶装置の読み取り・書き込み性能を向上するために、ＯＳ（Ｏｐｅｒａｔｉｏｎｇ  Ｓｙｓｔｅｍ）がバッファメモリを使用する場合について説明する。このバッファメモリは。二次記憶装置に退避済みのアドレス範囲のデータを必要とした場合に、スワップイン処理したデータを、一時的に格納保持するのに使用する。また、二次記憶装置の書き込み単位（ブロック）が、ＭＭＵ２の管理するアドレス領域の単位より小さい場合について説明する。
【００４５】
図３は、本実施の形態におけるスワップアウト制御装置の構成を示すブロック図である。ここでは、実施の形態１と同じ構成要素には同じ符号を付し、その説明を省略する。
【００４６】
バッファメモリ２１０は、アプリケーションなどが、二次記憶装置に退避済みのアドレス範囲のデータを必要とした場合に、スワップイン処理したデータを、一時的に格納保持する。
【００４７】
プロセスメモリ管理部２０１は、ＣＰＵ１による一次記憶装置への書き込み信号を監視し、書き込みが行われた一次記憶装置上のメモリ領域のアドレス範囲を、差分情報記憶部１１１に格納する処理を行う。具体的には、ＭＭＵ２に対して、スワップが可能なアドレス範囲のデータの書き換えを禁止する。ＣＰＵ１が処理を行い書き換えが禁止されたメモリ領域への書き込みを行うと、ＭＭＵ２が書き込み違反を検出し、割込などを通じて、プロセスメモリ管理部２０１を呼び出す。プロセスメモリ管理部２０１は、割込コントローラ６５およびＣＰＵ１より、書き込み違反のあった書き込みアドレスを入手し、そのアドレスが含まれるアドレス範囲に対して差分情報ありとして差分情報記憶部１１１を更新する。また、プロセスメモリ管理部２０１は、ＣＰＵ１による一次記憶装置上への読み書きを監視し、アプリケーションなどが必要とするデータを格納するメモリ領域のアドレス範囲をスワップイン処理部２０４に通知する。また、各プロセスが使用するメモリ領域のデータが、バッファメモリ２１０に保持されているか否かを管理する。
【００４８】
プロセスメモリ情報記憶部２１１は、各プロセスが使用する一次記憶装置のメモリ領域に対して、バッファメモリ２１０に対応するデータの複製が保持されているか否かの情報を保持する。つまり、スワップイン処理部２０４が、スワップイン処理時にバッファメモリ２１０に読み出したデータを格納処理した際に、プロセスメモリ管理部２０１に通知し、プロセスメモリ管理部２０１が、プロセスメモリ情報記憶部２１１に格納されている情報を更新する。
【００４９】
スワップイン処理部２０４は、プロセスメモリ管理部２０１からの通知を受け、二次記憶管理情報記憶部１１２を用いて、アプリケーションなどが必要とするデータが、二次記憶装置に退避済みのアドレス範囲のデータであるか否かを確認する。二次記憶装置に退避済みのアドレス範囲のデータであると判断した場合、スワップイン処理を行うことに決定し、必要なデータの読み取り要求を、データ入力部２０５に対して行う。また、スワップイン処理部２０４は、スワップイン処理を行うアドレス範囲の対象ブロックの管理情報（対象ブロックの状態、アドレス範囲）の更新を行う。これにより、二次記憶管理情報記憶部１１２に保持されている対象ブロックの状態は、「読み取り済み」となる。さらに、データ入力部２０５から、読み取ったデータを受け取り、バッファメモリ２１０に格納処理する。
【００５０】
データ入力部２０５は、スワップイン処理部２０４からのデータの読み取り要求を受け取り、要求されたデータを、二次記憶装置から読み取り、読み取ったデータを一次記憶装置に書き込む処理を行う。また、読み取ったデータをスワップイン処理部２０４に通知する。
【００５１】
差分情報判定部２０３は、出力対象決定部１０２からのスワップ出力要求を受け取り、出力対象記憶部１１０に保持されたアドレス範囲情報を取り出し、二次記憶管理情報記憶部１１２に格納された管理情報を用いて、取り出したアドレス範囲のデータが、過去二次記憶装置に出力したデータとして二次記憶装置上に存在するかどうかを確認する。二次記憶装置上にデータが存在しない場合には、スワップアウト処理部１０４に対して、そのアドレス範囲のデータのスワップアウト処理を指示する。存在する場合には、差分情報記憶部１１１に格納された差分情報を用いて、取り出したアドレス範囲のデータが、過去に二次記憶装置に出力済みであり二次記憶装置上に存在するデータと、一次記憶装置上の出力対象のデータとの差分情報を確認し、相違があるかないかを判定する。相違ありと判定した場合には、差分ブロック情報作成部２０２に、対象のアドレス範囲に対応する複数のブロックの中のどのブロックに差分があるかの問い合わせを行い、問い合わせ結果に従って、スワップアウト処理部１０４に対して、差分があるブロックに対応する一部のアドレス範囲のデータのスワップアウト処理を指示する。相違なしと判定した場合には、スワップアウト処理の必要なしとして、スワップアウト処理部１０４に対して、スワップアウト処理をしないように指示する。つまり、一次記憶装置上の出力対象のアドレス範囲に保存されたデータについて、同一のアドレス範囲のデータが過去に二次記憶装置に保存された場合に、現在二次記憶装置に保存されている最新のデータが、現在有効であるか否かを判断する。
【００５２】
差分ブロック情報作成部２０２は、プロセスメモリ情報記憶部２１１に格納された情報を用いて、差分情報判定部２０３から通知されたアドレス範囲に対して、バッファメモリ２１０に対応するデータの複製が保持されているか否かを判断する。バッファメモリ２１０に対応するデータがある場合、バッファメモリ２１０上のデータと、通知されたアドレス範囲のデータとを、ブロック単位で比較を行う。差分ブロック情報作成部２０２は、比較した結果を、差分情報判定部２０３に通知する。つまり、差分があるブロックに対応する一部のアドレス範囲を、差分情報判定部２０３に通知する。また、バッファメモリ２１０に対応するデータがない場合、通知されたアドレス範囲をそのまま、差分情報判定部２０３に通知する。
【００５３】
以上により、本発明のスワップアウト制御装置は、スワップインされたデータをバッファメモリに一旦複製が作成することで、スワップアウト時に、出力しようとするアドレス範囲に格納されている二次記憶装置の複製がバッファメモリ上に存在すれば、バッファメモリに格納されているデータと、スワップアウトしようとしているアドレス範囲に格納されているデータとを比較することで、書き換わったメモリ領域を判定することができる。
【００５４】
また、スワップアウト先の二次記憶装置の書き換えブロックの単位が、ＣＰＵが管理するアドレス範囲の管理単位（ページ）より小さい場合には、書き換えブロックのサイズ単位でページを分割し、書き換えが行われたブロックのみを出力対象とすることで、出力するデータ量を減らすことができる。
【００５５】
図７は、差分情報記憶部１１１が保持する差分情報の一例を示したものである。ここでは、管理単位をアドレス範囲ではなく、小ブロック単位としている。これにより、上記差分ブロック情報作成部２０２の、比較処理の簡易化し、比較処理時間を減らすことが可能である。差分ブロック情報作成２０２は、差分情報記憶部１１１に格納された情報を用いて、書き込みが必要な小ブロックを判断することができる。また、差分ブロック情報作成部２０２は、書き込み処理などの処理効率を考慮し、閾値、例えばアドレス領域中の７５％以上、の小ブロックの書き込みが必要となった場合には、それ以降の比較をやめてすべての小ブロックを書き込みするように判定する機能を持つこともできる。
【００５６】
このようなバッファメモリの複製は、通常一次記憶装置から確保されるため、無制限に確保できるわけではない。このため一定周期あるいは、一次記憶装置上で解放状態にある記憶装置量が不足と判定された場合に、使用履歴、あるいはそのバッファメモリが管理されている、プロセスの重要性、処理優先度、あるいは現在の情報処理装置全体の動作状態（入力待ち、再生中、通信中など）などを元にバッファメモリの管理単位で優先度をつけて解放し、一次記憶装置を有効活用することもできる。
【００５７】
以上により、本発明のスワップアウト制御装置は、スワップアウトされたデータをスワップイン時に破棄せず、二次記憶装置上に一次的に保持しておくことで、スワップアウト時に、そのアドレス範囲のデータが、過去にスワップアウトされており、かつそのデータが二次記憶装置上に存在していた場合、二次記憶装置上のデータと相違があるかを判断し、相違がなければ、実際の書き込み動作をせず、前回スワップアウトした二次記憶装置上のデータを有効（書き込み済み）にするだけで、二次記憶装置へのデータの出力処理を完了することができる。これにより、スワップアウト時に出力するデータ量を削減することが可能となり、スワップ処理時のオーバーヘッドを減らすことができる。
【００５８】
また、本発明のスワップアウト制御装置は、スワップインされたデータをバッファメモリに一旦複製が作成することで、スワップアウト時に、出力しようとするアドレス範囲に格納されている二次記憶装置の複製がバッファメモリ上に存在すれば、バッファメモリに格納されているデータと、スワップアウトしようとしているアドレス範囲に格納されているデータとを比較することで、書き換わったメモリ領域を判定することができる。
【００５９】
また、スワップアウト先の二次記憶装置の書き換えブロックの単位が、ＣＰＵが管理するアドレス範囲の管理単位（ページ）より小さい場合には、書き換えブロックのサイズ単位でページを分割し、書き換えが行われたブロックのみを出力対象とすることで、出力するデータ量を、更に減らすことができる。
【００６０】
また、二次記憶装置内に含まれるキャッシュではなく、一次記憶装置内にスワップインされたデータに対するバッファメモリを持ち、メモリの有効活用を図るとともに、複写回数を削減することが可能となる。
【００６１】
（実施の形態３）
本実施の形態では、二次記憶装置の書き込みブロックサイズが、ＭＭＵ２の管理するアドレス範囲の単位より大きい場合について説明する。
【００６２】
図４は、本実施の形態におけるスワップアウト制御装置の構成を示すブロック図である。ここでは、実施の形態１及び実施の形態２と同じ構成要素には同じ符号を付し、その説明を省略する。
【００６３】
スワップアウト処理部３０２は、差分情報判定部１０３からの指示を受け取り、指示に基づいて処理を行う。スワップアウト処理を行う指示を受けた場合、指示されたスワップアウト対象の一次記憶装置上のアドレス範囲を、合成ブロック情報作成部３０１に通知し、不足しているデータを要求する。つまり、二次記憶装置の書き込み単位であるブロックに対して、差分情報判定部１０３から通知されたアドレス範囲が小さいことから、書き込みブロックすべてを埋めることができず、この不足しているデータが生じる。スワップアウト処理部３０２は、合成ブロック情報作成部３０１から得られたデータで、書き込みブロックの中で不足しているデータを補完し、補完したデータの出力をデータ出力部１０５に指示する。また、スワップアウト処理部３０２は、合成ブロック情報策西部３０１から補完データがないとの返答を受けた場合、二次記憶装置から、出力するアドレス範囲を含んだ過去に書き込まれたブロックのデータを読み取って不足部分を補完し、補完したデータの出力をデータ出力部１０５に指示する。一方、スワップアウト処理を行わない指示を受けた場合、データ出力部１０５へのデータ出力指示は行わない。さらに、スワップアウト処理をする・しないにかかわらず、出力対象のアドレス範囲に対応する対象ブロックの管理情報（対象ブロックの状態、アドレス範囲）の更新を行う。これにより、二次記憶管理情報記憶部１１２に保持されている対象ブロックの状態は、「書き込み済み」となる。
【００６４】
合成ブロック情報作成部３０１は、プロセスメモリ情報記憶部２１１に格納された情報を用いて、差分情報判定部２０３から通知されたアドレス範囲に対して、このアドレス範囲の前後のデータがバッファメモリ２１０対応するデータの複製が保持されているか否かを判断する。バッファメモリ２１０に対応するデータがある場合、バッファメモリ２１０の対応するデータを、補完データとして、スワップアウト処理部３０２に通知する。また、バッファメモリ２１０に対応するデータがない場合、合成ブロック情報作成部３０１は、スワップアウト処理部３０２に、補完データがないと返答する。
【００６５】
図８は、差分情報記憶部１１１が保持する差分情報の一例を示したものである。二次記憶装置の書き込み単位であるブロックが、アドレス範囲の単位より大きいことにより、１つのブロックＩＤに対して、複数のアドレス範囲が対応することになる。
【００６６】
以上により、本発明のスワップアウト制御装置は、スワップアウトされたデータをスワップイン時に破棄せず、二次記憶装置上に一次的に保持しておくことで、スワップアウト時に、そのアドレス範囲のデータが、過去にスワップアウトされており、かつそのデータが二次記憶装置上に存在していた場合、二次記憶装置上のデータと相違があるかを判断し、相違がなければ、実際の書き込み動作をせず、前回スワップアウトした二次記憶装置上のデータを有効（書き込み済み）にするだけで、二次記憶装置へのデータの出力処理を完了することができる。これにより、スワップアウト時に出力するデータ量を削減することが可能となり、スワップ処理時のオーバーヘッドを減らすことができる。
【００６７】
また、本発明のスワップアウト制御装置では、スワップアウト先の二次記憶装置の書き換えブロックの単位が、ＣＰＵが管理するアドレス範囲の管理単位（ページ）より大きい場合、スワップインの際に読み出した、上記バッファメモリ内にあるアドレスの連続するページを適切に組み合わせて書き込みブロックを構成することで、その中の１ページを書き換えるために、書き換えブロックを構成する残りのページを一旦読み込んでから、書き換えを要求するページを上書きし、その後二次記憶装置へ書き込むという処理を行わないで済む。
【００６８】
また、二次記憶装置内に含まれるキャッシュではなく、一次記憶装置内にスワップインされたデータに対するバッファメモリを持ち、メモリの有効活用を図るとともに、複写回数を削減することが可能となる。
【００６９】
なお、本発明の実施の形態におけるスワップアウト制御装置は、典型的にはプログラムで実現されるが、集積回路であるＬＳＩとしてもよい。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００７０】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【００７１】
以上、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【００７２】
本発明にかかるスワップアウト制御装置は、スワップアウト対象のデータが、二次記憶装置上のデータと相違があるかを判断することで、スワップアウトするデータ量を減らす機能を有し、二次記憶装置を持つＡＶ機器や通信機器、家電機器などのコンピュータを搭載する機器において有用である。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施の形態における情報処理装置の構成を示すハードウェア構成図
【図２】本発明の実施の形態におけるスワップアウト制御装置の構成を示すブロック図
【図３】本発明の実施の形態におけるスワップアウト制御装置の構成を示すブロック図
【図４】本発明の実施の形態におけるスワップアウト制御装置の構成を示すブロック図
【図５】本発明の実施の形態における差分情報記憶部の差分情報の一例を示す図
【図６】本発明の実施の形態における二次記憶管理情報記憶部の管理情報の一例を示す図
【図７】本発明の実施の形態における二次記憶管理情報記憶部の管理情報の一例を示す図
【図８】本発明の実施の形態における二次記憶管理情報記憶部の管理情報の一例を示す図
【符号の説明】
【００７４】
１    ＣＰＵ
２    ＭＭＵ
１０    スワップアウト制御装置
３    メモリ装置
３１    ＲＯＭ
３２    ＲＡＭ
３５    二次記憶装置
３６    インタフェース
４１    記憶媒体
４２    読取書込装置
４３    通信回線
４４    通信装置
４５    インタフェース
５０    入力装置
５１    インタフェース
５５    表示装置
５６    インタフェース
６０    バスライン
６１    タイマー回路
６５    割込コントローラ
１０１，３０２    スワップアウト指示部
１０２    出力対象決定部
１０３，２０３    差分情報判定部
１０５    データ出力部
１０６    メモリ管理部
１０７，２０４    スワップイン処理部
１０８，２０５    データ入力部
１１０    出力対象記憶部
１１１    差分情報記憶部
１１２    二次記憶管理情報記憶部
２０１    プロセスメモリ管理部
２０２    差分ブロック情報生成部
３０１    合成ブロック情報生成部
２１０    バッファメモリ
【図１】
2009020776.tif 000003
【図２】
2009020776.tif 000004
【図３】
2009020776.tif 000005
【図４】
2009020776.tif 000006
【図５】
2009020776.tif 000007
【図６】
2009020776.tif 000008
【図７】
2009020776.tif 000009
【図８】
2009020776.tif 000010