(57)【要約】【課題】一実施形態は、スワップアウトの際のメモリ管理制御装置のレスポンスを向上させることができる。【解決手段】一実施形態に係るメモリ管理制御装置は、データ領域とスワップ領域とを含むメモリと、プロセッサとを含む。プロセッサは、データ領域に記憶されているデータをスワップ領域にスワップアウトする際に、所定の条件が満たされればデータを第１の圧縮率で圧縮する。プロセッサは、データ領域に記憶されているデータをスワップ領域にスワップアウトする際に、所定の条件が満たされなければデータを第１の圧縮率よりも圧縮率の低い第２の圧縮率で圧縮する。【選択図】図５
2018063505.tif 000002
【特許請求の範囲】
【請求項１】
データ領域とスワップ領域とを含むメモリと、
前記データ領域に記憶されているデータを前記スワップ領域にスワップアウトする際に、所定の条件が満たされれば前記データを前記第１の圧縮率で圧縮し、前記所定の条件が満たされなければ前記データを前記第１の圧縮率よりも圧縮率の低い第２の圧縮率で圧縮するプロセッサと、
を含む、メモリ管理制御装置。
【請求項２】
前記第１の圧縮率での前記データの圧縮は、第１の圧縮アルゴリズムで実行され、
前記第２の圧縮率での前記データの圧縮は、前記第１の圧縮アルゴリズムよりも圧縮率の低い第２の圧縮アルゴリズムで実行されることを特徴とする、
請求項１に記載のメモリ管理制御装置。
【請求項３】
前記所定の条件は、前記プロセッサが前記メモリ管理制御装置の操作状況を示す操作情報に基づいて、前記メモリ管理制御装置が未使用中と判定することであり、
前記プロセッサは、前記メモリ管理制御装置が未使用中と判定した場合に、前記データを前記第１の圧縮率で圧縮する、
ことを特徴とする請求項１又は２に記載のメモリ管理制御装置。
【請求項４】
前記所定の条件は、前記プロセッサの使用率が所定の閾値よりも低いことを含み、
前記プロセッサは、前記プロセッサの使用率が所定の閾値以上である場合、前記データを前記第２の圧縮率で圧縮する、
ことを特徴とする請求項１又は２に記載のメモリ管理制御装置。
【請求項５】
前記所定の条件は、前記データに過去に実行されたスワップアウトとスワップインの履歴に基づく前記データのスワップアウトからスワップインまでの時間間隔が、所定時間よりも長いことであり、
前記プロセッサは、前記時間間隔が所定時間よりも長いと判定した場合に、前記データを前記第１の圧縮率で圧縮する、
ことを特徴とする請求項１又は２に記載のメモリ管理制御装置。
【請求項６】
前記所定の条件は、前記メモリ管理制御装置の操作状況を示す操作情報と、前記プロセッサの使用率と、前記データに過去に実行されたスワップアウトとスワップインの履歴に基づく前記データのスワップアウトからスワップインまでの時間間隔とのうちの複数の情報を用いる複数の判定条件を含み、
前記プロセッサは、前記第１の圧縮率及び前記第２の圧縮率のうちから、前記複数の判定条件に基づいて決定した圧縮率を用いて前記データを圧縮する、
ことを特徴とする請求項１又は２に記載のメモリ管理制御装置。
【請求項７】
メモリのデータ領域に記憶されているデータを、前記メモリのスワップ領域にスワップアウトする際に、所定の条件が満たされれば前記データを前記第１の圧縮率で圧縮し、前記所定の条件が満たされなければ前記データを前記第１の圧縮率よりも圧縮率の低い第２の圧縮率で圧縮する、
ことを含む、メモリ管理制御装置が実行するメモリ管理制御方法。
【請求項８】
メモリのデータ領域に記憶されているデータを、前記メモリのスワップ領域にスワップアウトする際に、所定の条件が満たされれば前記データを前記第１の圧縮率で圧縮し、前記所定の条件が満たされなければ前記データを前記第１の圧縮率よりも圧縮率の低い第２の圧縮率で圧縮する、
処理を、メモリ管理制御装置に実行させるメモリ管理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラムに関する。
【背景技術】
【０００２】
近年、メモリ管理制御装置において、オペレーティングシステム（ＯＳ）が使用する物理メモリのサイズが増加している。なお、メモリ管理制御装置は、例えば、携帯電話機、スマートフォン、タブレット端末、車載器（例えば、カーナビゲーションシステム）、及びユビキタス製品などのメモリの管理や制御を行う装置を含む。ＯＳが使用する物理メモリのサイズの増加に対処するために、例えば、物理メモリを効率よく利用するための技術が知られている（例えば、特許文献１及び特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１１６０１７号公報
【特許文献２】特開２００２−２４０８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリを効率的に利用するために、メモリに記憶されているデータをスワップ領域にスワップアウトすることがあり、スワップアウトする際に、データを圧縮が行われることがある。この場合、スワップアウトには、スワップする対象のメモリ領域の探索、スワップ対象のメモリ領域の圧縮、スワップアウトのためのメモリコピーなどのオーバーヘッドがある。そして、例えば、これらの処理を行うプロセッサの処理能力やメモリの読み書きのスピードに十分なパフォーマンスがない場合、或いは、他の処理によってそれらのリソースが使用されている場合、メモリ管理制御装置のレスポンスが遅くなってしまうことがある。
【０００５】
１つの側面では、本発明は、スワップアウトの際のメモリ管理制御装置のレスポンスを向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの態様のメモリ管理制御装置は、データ領域とスワップ領域とを含むメモリと、プロセッサとを含む。プロセッサは、データ領域に記憶されているデータをスワップ領域にスワップアウトする際に、所定の条件が満たされればデータを第１の圧縮率で圧縮する。プロセッサは、データ領域に記憶されているデータをスワップ領域にスワップアウトする際に、所定の条件が満たされなければデータを第１の圧縮率よりも圧縮率の低い第２の圧縮率で圧縮する。
【発明の効果】
【０００７】
スワップアウトの際のメモリ管理制御装置のレスポンスを向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】例示的なメモリ管理制御装置のハードウェア構成を示す図である。
【図２】物理メモリの領域を例示する図である。
【図３】例示的なメモリの領域確保処理を示す図である。
【図４】第１の実施形態に係るメモリの領域確保処理を示す図である。
【図５】第１の実施形態に係るスワップアウト処理を例示する図である。
【図６】実施形態に係る履歴情報を例示する図である。
【図７】第１の実施形態に係るスワップ情報を例示する図である。
【図８】第２の実施形態に係るスワップアウト処理を例示する図である。
【図９】第２の実施形態に係るスワップ情報を例示する図である。
【図１０】第２の実施形態に係るスワップイン処理の動作フローを例示する図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【００１０】
図１は、例示的なメモリ管理制御装置１００のハードウェア構成示す図である。なお、メモリ管理制御装置１００は、例えば、携帯電話機、スマートフォン、タブレット端末、車載器（例えば、カーナビゲーションシステム）、及びユビキタス製品などであってよい。メモリ管理制御装置１００は、例えば、プロセッサ１０１、メモリ１０２、記憶装置１０３、入力装置１０４、及び表示装置１０５を含んでよい。なお、プロセッサ１０１、メモリ１０２、記憶装置１０３、入力装置１０４、及び表示装置１０５は、例えば、バス１１０を介して互いに接続されている。
【００１１】
プロセッサ１０１は、メモリ管理制御装置１００の各部を制御する。また、プロセッサ１０１は、例えば、メモリ１０２に記憶されているメモリ管理制御プログラムを読み出して実行することにより、後述する動作フローの手順を実行する。なお、プロセッサ１０１は、例えば、シングルプロセッサであっても、マルチプロセッサ及びマルチコアを備えるプロセッサであってもよい。
【００１２】
メモリ１０２は、例えば半導体メモリであり、ＲＡＭ領域及びＲＯＭ領域を含んでいてよい。なお、メモリ１０２は、メモリ管理制御装置１００に実際に搭載されているメモリであり、以下の説明では、メモリ１０２を物理メモリ１０２と呼ぶことがある。記憶装置１０３は、例えばｅＭＭＣなどのフラッシュメモリ等の半導体メモリ、ハードディスク、又は外部記憶装置である。なお、ＲＡＭ（ラム）は、Random Access Memoryの略称である。また、ＲＯＭ（ロム）は、Read Only Memoryの略称である。ｅＭＭＣ（イーエムエムシー）は、Embedded Multi Media Cardの略称である。
【００１３】
入力装置１０４は、例えば、ボタンやキーなどの入力を受け付けるデバイスである。また、表示装置１０５は、例えばディスプレーなどであってよい。入力装置１０４と表示装置１０５は合わせて、タッチパネルとして実装されてもよい。また、メモリ管理制御装置１００は、更に、プロセッサ１０１の指示に従って外部とデータを送受信する通信インタフェースを備えていてもよい。また、メモリ管理制御装置１００は、音声出力装置や音声入力装置などのその他の入出力装置を備えていてもよい。
【００１４】
上述のように、例えば、メモリ管理制御装置１００において、オペレーティングシステムが使用する物理メモリのサイズが増加している。これに対応するために、例えば、容量の大きい物理メモリを搭載するとメモリ管理制御装置１００のコストが高くなる。そのため、限られた容量で効率よくメモリを利用するための省メモリ制御技術が望まれている。
【００１５】
省メモリ制御の一例において、物理メモリ１０２内にスワップ領域を設けて、物理メモリ１０２上のスワップ対象のデータをスワップ領域に圧縮してスワップアウトすることがある。図２は、物理メモリ１０２内にスワップ領域を設ける場合の物理メモリ１０２の領域を例示する図である。この場合、物理メモリ１０２の一部にスワップ領域２０１が確保される。また、物理メモリ１０２上のスワップ領域２０１以外の通常のメモリとして用いる領域を、以下ではデータ領域２０２と呼ぶ。データ領域２０２には、例えば、オペレーティングシステムや、アプリケーションなどが参照するデータが記憶されている。そして、メモリ不足時には、物理メモリ１０２に確保したスワップ領域２０１に、スワップ対象のデータが圧縮されてスワップアウトされる。スワップ領域２０１にスワップアウトされたデータは圧縮されているため、メモリを効率的に使用することができる。なお、データ領域２０２には、メモリの管理に用いられる情報などが記憶されている管理領域２０３が含まれていてよい。管理領域２０３は、例えば、後述する履歴情報６００、及びスワップ情報７００，９００などの情報を記憶していてよい。また、この様に物理メモリ１０２内にスワップ領域２０１を設けるメモリ管理方式の一例に、Ｌｉｎｕｘ（登録商標）のＺＲＡＭと呼ばれる方式がある。
【００１６】
図３は、例示的なメモリ１０２の領域確保処理を示す図である。例えば、他のアプリケーションなどからデータ領域２０２においてメモリ領域を確保するように要求する領域確保要求が入力されると、プロセッサ１０１は、図３の例示的な領域確保処理を開始してよい。
【００１７】
ステップ３０１（以降、ステップを“Ｓ”と記載し、例えば、Ｓ３０１と表記する）においてプロセッサ１０１は、要求されたメモリ領域を確保するのに十分な空き容量がメモリ１０２にあるか否かを判定する。空き容量がメモリ１０２にある場合（Ｓ３０１があり）、フローはＳ３０６に進む。この場合、Ｓ３０６においてプロセッサ１０１は、メモリ確保要求で要求された領域を空き領域に確保し、本動作フローは終了する。一方、空き容量がメモリ１０２にない場合（Ｓ３０１がなし）、フローはＳ３０２に進む。
【００１８】
Ｓ３０２においてプロセッサ１０１は、データ領域２０２においてスワップ対象のメモリ領域を探索する。例えば、プロセッサ１０１は、ＬＲＵ（Least Recently Used）でスワップ対象のメモリ領域を探索してよい。ＬＲＵでは、例えば、メモリ１０２のデータ領域２０２に保存されているデータの中で最後に参照されてから最も時間が経過しているデータが保存されているメモリ領域が探し出される。なお、メモリ領域は、例えば、ページ単位の領域であってよい。
【００１９】
Ｓ３０３においてプロセッサ１０１は、探索されたメモリ領域をスワップ対象にする。Ｓ３０４においてプロセッサ１０１は、スワップ対象のメモリ領域に保存されているデータを、所定の圧縮率で圧縮する。そして、Ｓ３０５でプロセッサ１０１は、圧縮した圧縮データを、スワップ領域２０１にスワップアウトする。Ｓ３０６においてプロセッサ１０１は、データをスワップアウトした後のメモリ領域を解放し、メモリ確保要求で要求された領域を確保して、本動作フローは終了する。
【００２０】
例えば、以上で述べた様に、メモリ１０２にスワップ領域２０１を設けて、メモリ１０２の空き容量が不足した際に所定の圧縮率でデータを圧縮してスワップアウトを行ったとする。この場合、スワップアウトには、スワップする対象のメモリ領域の探索、スワップ対象のメモリ領域の圧縮、スワップアウトのためのメモリコピーなどのオーバーヘッドがある。そして、例えば、これらの処理を行うプロセッサの処理能力やメモリの読み書きのスピードに十分なパフォーマンスがない場合、或いは、他の処理によってそれらのリソースが使用されている場合、メモリ管理制御装置のレスポンスが遅くなってしまうことがある。そのため、例えば、装置のレスポンスを向上させることのできる技術が望まれている。
【００２１】
そこで、実施形態では、スワップ対象となったデータの圧縮の際の圧縮率を動的に変更し、それにより、メモリ管理制御装置１００のレスポンスを向上させて、メモリ管理制御装置１００のパフォーマンスを改善する。実施形態では、スワップ領域２０１へのデータのスワップアウトの際の圧縮率を動的に変更するために、以下の情報をスワップアウトの圧縮率を決定する判定に用いる。
（１）メモリ管理制御装置１００の操作状況
（２）プロセッサの使用率
（３）スワップ領域２０１へのスワップアウトからスワップインまでの時間間隔
【００２２】
（１）について、例えば、圧縮の処理負荷が高く、メモリ管理制御装置１００のレスポンスが遅くなったとしても、ユーザがメモリ管理制御装置１００を利用していない場合、レスポンスの低下を感じることはない。そのため、例えば、メモリ管理制御装置１００の操作状況が操作中でなければ、圧縮率を高い圧縮率に設定し、圧縮を実行してもよい。
【００２３】
（２）について、例えば、プロセッサの使用率が既に高い場合、圧縮率を高くすると更なる負荷をプロセッサ１０１にかけてしまう。そのため、例えば、圧縮率を低くしてプロセッサ１０１への負荷を抑えることが好ましい。
【００２４】
（３）について、例えば、スワップ領域２０１へのスワップアウトからスワップインまでの時間間隔が短い場合、スワップアウトしてもすぐにスワップインを行うことになる可能性が高い。そして、スワップ領域２０１に長期間保存されるデータではない場合には、高圧縮率で圧縮を施すよりも、低圧縮率で圧縮を施した方が圧縮にかかる時間や処理負荷を低減でき、好ましい。一方、スワップ領域２０１に長期間保存されるデータであれば、高圧縮率でデータを圧縮してメモリ１０２を占有する領域を抑えることで、メモリを効率的に利用することができる。
【００２５】
そして、プロセッサ１０１は、例えば、以上のような情報を考慮して、スワップアウト時の圧縮率を決定することで、プロセッサ１０１に過剰な負荷がかかることを抑制することができる。また、一方で、プロセッサ１０１の処理能力に余裕がある状況や、メモリ管理制御装置１００の操作状況に基づいてメモリ管理制御装置１００が利用されていないと判定される場合には、高い圧縮率を選択し、メモリ１０２の利用効率を高めることができる。以下、第１の実施形態を説明する。
【００２６】
＜第１の実施形態＞
図４は、第１の実施形態に係るメモリ１０２の領域確保処理を示す図である。例えば、他のアプリケーションなどからデータ領域２０２においてメモリ領域を確保するように要求する領域確保要求が入力されると、プロセッサ１０１は、図４の第１の実施形態に係る領域確保処理を開始してよい。
【００２７】
Ｓ４０１においてプロセッサ１０１は、メモリに空き容量があるか否かを判定する。メモリに空き容量がある場合（Ｓ４０１があり）、本動作フローは終了する。一方、メモリに空き容量がない場合（Ｓ４０１がなし）、フローはＳ４０２に進む。
【００２８】
Ｓ４０２においてプロセッサ１０１は、データ領域２０２においてスワップ対象のメモリ領域を探索する。例えば、プロセッサ１０１は、ＬＲＵでスワップ対象のメモリ領域を探索してよい。Ｓ４０３においてプロセッサ１０１は、探索されたメモリ領域をスワップ対象にする。Ｓ４０４においてプロセッサ１０１は、スワップアウト処理を実行する。スワップアウト処理の詳細は、図５を参照して後述するが、スワップアウト処理では、圧縮率を動的に変更してデータを圧縮し、スワップアウトが実行される。そして、Ｓ４０５でプロセッサ１０１は、データをスワップアウトした後のメモリ領域を解放し、領域確保要求で要求されたメモリ領域を確保して、本動作フローは終了する。
【００２９】
図５は、第１の実施形態に係るスワップアウト処理を例示する図である。プロセッサ１０１は、例えば、図４のＳ４０４に進むと、図５のスワップアウト処理を開始してよい。
【００３０】
Ｓ５０１においてプロセッサ１０１は、メモリ管理制御装置１００の操作状況を示す操作情報を取得する。そして、Ｓ５０２においてプロセッサ１０１は、取得した操作状況を示す操作情報に基づいて、メモリ管理制御装置１００が使用中であるか否かを判定してよい。例えば、プロセッサ１０１は、メモリ管理制御装置１００の表示装置１０５の表示画面が消灯しているか否かの情報を、操作状況を示す操作情報として用いてよい。この場合、表示装置１０５の表示画面が消灯していれば、プロセッサ１０１は、ユーザがメモリ管理制御装置１００を使用していないと判定してよい。一方、表示装置１０５の表示画面が点灯している場合に、プロセッサ１０１は、ユーザがメモリ管理制御装置１００を使用していると判定してよい。なお、別の実施形態では、ユーザがメモリ管理制御装置１００へのログイン状況を、操作状況を示す操作情報として用いてもよい。そして、Ｓ５０２においてメモリ管理制御装置１００が未使用中であれば（Ｓ５０２が未使用中）、フローはＳ５０９に進み、プロセッサ１０１は圧縮率に第１の圧縮率に設定する。なお、第１の圧縮率は、後述する第２の圧縮率よりも高い圧縮率である。この様に、メモリ管理制御装置１００が使用中ではないことが推定される状況では、たとえレスポンスが低下したとしてもユーザが体感する可能性が低く、プロセッサ１０１は、高圧縮率を用いて圧縮を行い、メモリを節約してよい。一方、Ｓ５０２においてメモリ管理制御装置１００が使用中であれば（Ｓ５０２が使用中）、フローはＳ５０３に進む。
【００３１】
Ｓ５０３においてプロセッサ１０１は、プロセッサ１０１の使用率の情報を取得する。Ｓ５０４においてプロセッサ１０１は、プロセッサ１０１の使用率が高いか否かを判定する。なお、プロセッサ１０１の使用率には、例えば、プロセッサのロードアベレージが使用されてよい。例えば、プロセッサ１０１は、ロードアベレージが所定の閾値を超えているかどうかでプロセッサの使用率が高いか否かを判定してよい。例えば、プロセッサ１０１は、プロセッサ１０１の使用率が所定の閾値以上である場合に、使用率が高いと判定してよい。一方、プロセッサ１０１は、プロセッサ１０１の使用率が所定の閾値よりも低ければ、使用率が低いと判定してよい。所定の閾値は、例えば、その閾値を超えた状態で、スワップ対象のデータを高圧縮率で圧縮した場合に、メモリ管理制御装置１００のレスポンスに影響が出る可能性が高いと判定できる値に設定されてよい。Ｓ５０４においてプロセッサ１０１の使用率が高い場合（Ｓ５０４がＹＥＳ）、フローはＳ５０７に進む。一方、プロセッサ１０１の使用率が高くない場合（Ｓ５０４がＮＯ）、フローはＳ５０５に進む。
【００３２】
Ｓ５０５においてプロセッサ１０１は、過去に実行されたスワップアウトとスワップインの履歴を格納する履歴情報６００に基づいて、スワップ対象のデータのスワップアウトとスワップインの時間間隔を取得する。
【００３３】
図６は、実施形態に係る履歴情報６００を例示する図である。履歴情報６００には、過去に実行されたスワップアウト及びスワップインと対応するエントリが登録されている。エントリには、例えば、仮想アドレス、種別、及び日時の情報が対応付けられて含まれていてよい。仮想アドレスは、例えば、エントリと対応するスワップアウト又はスワップインで処理対象であったデータの仮想アドレスが登録されている。また、種別は、エントリがスワップインの情報を含むか、スワップアウトの情報を含むかを示す情報である。日時は、エントリと対応するスワップイン又はスワップアウトが実行された日時を表す情報である。
【００３４】
プロセッサ１０１は、例えば、スワップ対象のデータの仮想アドレスを有するエントリを履歴情報６００から特定し、過去に行われたスワップアウトからスワップインまでの時間間隔を取得してよい。なお、時間間隔は、例えば、スワップ対象のデータに前回実行されスワップアウトからスワップインまでの時間間隔など１つの時間間隔に基づいていてもよい。或いは別の実施形態では、時間間隔は、例えば、スワップ対象のデータに過去に実行された複数のスワップアウトからスワップインまでの時間間隔を代表する代表値であってよい。代表値は、例えば、スワップ対象のデータに対する過去の複数のスワップアウトからスワップインまでの時間間隔の平均値であってよく、或いは、最大値や最小値などその他の値であってもよい。
【００３５】
そして、Ｓ５０６においてプロセッサ１０１は、スワップ対象のデータのスワップアウトからスワップインまでの時間間隔が短いか否かを判定する。スワップ対象のデータのスワップアウトからスワップインまでの時間間隔が所定時間よりも長い場合、プロセッサ１０１は、時間間隔が長いと判定し（Ｓ５０６が長）、フローはＳ５０９に進む。Ｓ５０９においてプロセッサ１０１は、圧縮率を高い第１の圧縮率に設定する。
【００３６】
一方、Ｓ５０６において、例えば、スワップ対象のデータのスワップアウトからスワップインまでの時間間隔が所定時間以下である場合、プロセッサ１０１は、時間間隔が短いと判定し（Ｓ５０６が短）、フローはＳ５０７に進む。なお、履歴情報６００に履歴がなく、スワップ対象のデータの初回のスワップアウトである場合には、時間間隔が短いと判定してよい。Ｓ５０７においてプロセッサ１０１は、圧縮率を第１の圧縮率よりも低い第２の圧縮率に設定する。なお、スワップ対象となったデータをスワップアウトしてからスワップインするまでの時間間隔が長い場合、データが長時間スワップアウトされていることになる。その場合、高圧縮率で圧縮することでメモリを効率的に利用することが可能になる。一方、スワップ対象となったメモリ領域をスワップアウトしてからスワップインするまでの時間間隔が短い場合、すぐにまたスワップインが行われる可能性があるため、低圧縮率で圧縮することでプロセッサ１０１にかかる負荷を抑えることができる。
【００３７】
Ｓ５０８においてプロセッサ１０１は、スワップアウトに関する情報を記録する。例えば、プロセッサ１０１は、管理領域２０３に記憶された履歴情報６００に、スワップアウトの実行時刻に関するエントリを登録してよい。プロセッサ１０１は、例えば、履歴情報６００のエントリの仮想アドレスとして、スワップ対象のデータの仮想アドレスを登録し、種別にスワップアウトと登録し、日時にスワップアウトの実行時刻として、現在の時刻を記録してする。なお、後述する第２の実施形態で例示するように、スワップインの際にもスワップインの実行時刻が履歴情報６００に登録されるものとする。
【００３８】
また、プロセッサは、管理領域２０３に記憶されたスワップ情報７００にスワップアウトに関する情報を含むエントリを記録してよい。図７は、実施形態に係るスワップ情報７００を例示する図である。スワップ情報７００は、例えば、仮想アドレス、スワップアウト先アドレス、及びサイズを含む。仮想アドレスは、例えば、スワップ対象のデータに割り当てられている仮想アドレス空間上のアドレスである。スワップアウト先アドレスは、スワップ対象のデータを保存するスワップ領域２０１内でのアドレスである。また、サイズは、スワップ対象のデータのサイズである。
【００３９】
Ｓ５１０においてプロセッサ１０１は、スワップ情報７００に登録したスワップアウト先のアドレスと対応するスワップ領域２０１内のメモリ領域に、圧縮したスワップ対象のデータをスワップアウトし、本動作フローは終了し、フローはＳ４０５の処理へと続く。
【００４０】
以上で述べた様に、実施形態によればプロセッサ１０１は、例えば、レスポンスに影響が出たとしてもユーザが体感する可能性の低いメモリ管理制御装置１００が未使用と推定される状況で、スワップアウトに圧縮率の高い第１の圧縮率を利用する。それにより、メモリを節約することができる。
【００４１】
また、実施形態によればプロセッサ１０１は、スワップアウトを実行する際に、プロセッサ１０１の使用率が高い場合、第１の圧縮率よりも圧縮率の低い第２の圧縮率を利用する。プロセッサ１０１の負荷が高い状態では圧縮率の低い第２の圧縮率を利用することで、スワップアウトの処理がプロセッサ１０１に与える影響を抑え、それにより、メモリ管理制御装置１００のレスポンスが低下するのを抑制することができる。
【００４２】
また、実施形態によればプロセッサ１０１は、スワップアウトを実行する際に、スワップ対象のデータのスワップアウトとスワップインの時間間隔が短い場合、第１の圧縮率よりも圧縮率の低い第２の圧縮率を利用する。一方、スワップ対象のデータのスワップアウトとスワップインの時間間隔が長い場合、第１の圧縮率を利用する。このように、スワップインが再度実行されるまでの時間が短いデータには、圧縮率の低い第２の圧縮率を利用して圧縮と復号の負荷を抑制することができる。一方、スワップインが再度実行されるまでの時間が長いデータには、圧縮率の高い第１の圧縮率を利用することで、メモリの利用効率を高めることができる。
【００４３】
従って、実施形態によれば、スワップアウトの処理がプロセッサ１０１に与える影響を抑え、それにより、メモリ管理制御装置１００のレスポンスが低下するのを抑制することができる。
【００４４】
なお、別の実施形態では、例えば、上述の（１）〜（３）の情報うちのいずれか１つを用いて圧縮率を設定してもよい。例えば、図５のＳ５０２において使用中と判定された場合に、フローをＳ５０７に進めて、操作状況により圧縮率を設定する動作フローとしてもよい。また、同様に、Ｓ５０１の処理の後、フローをＳ５０３に進め、次のＳ５０４でＮＯと判定した場合に、フローをＳ５０９に進め、プロセッサの使用率により圧縮率を設定する動作フローとしてもよい。更に、Ｓ５０１の処理の後、フローをＳ５０５に進めて、スワップ対象のデータのスワップアウトからスワップインまでの時間間隔により圧縮率を設定する動作フローとしてもよい。或いは、更に別の実施形態では、上述の（１）〜（３）の情報のうちの２つを用いて圧縮率を設定してもよい。
【００４５】
また、例えば、別の実施形態では、図５のＳ５０６において時間間隔が短いと判定した場合に、更に、スワップ対象のデータを参照するタスクの処理の時間間隔に基づいて、圧縮率を第１の圧縮率と第２の圧縮率のいずれかに振り分ける処理が含まれていてもよい。この場合、例えば、プロセッサ１０１は、タスクの処理の時間間隔が長い場合、圧縮率をＳ５０９の第１の圧縮率に振り分けてよい。また、プロセッサ１０１は、タスクの処理の時間間隔が短い場合、圧縮率をＳ５０７の第２の圧縮率に振り分けてよい。この様に、更なるパラメータを用いて圧縮率を振り分けることで、メモリの使用効率等を更に改善することが可能である。
【００４６】
＜第２の実施形態＞
第１の実施形態では、圧縮の際の圧縮率を設定するパラメータを変更することで圧縮率を変更する場合を例示したが、実施形態はこれに限定されるものではない。第２の実施形態では、圧縮アルゴリズムを変更することで圧縮率を変更する場合を例示する。
【００４７】
図８は、第２の実施形態に係るスワップアウト処理を例示する図である。プロセッサ１０１は、例えば、図４のＳ４０４に進むと、図８のスワップアウト処理を開始してよい。
【００４８】
なお、図８においてＳ８０１〜Ｓ８０６までの処理までは、図５のＳ５０１〜Ｓ５０６までの処理と対応しており、プロセッサ１０１は、例えば、Ｓ５０１〜Ｓ５０６の処理と同様に処理を実行してよい。Ｓ８０９においてプロセッサ１０１は、圧縮率の高い第１のアルゴリズムでスワップ対象のデータを圧縮する。また、Ｓ８０７ではプロセッサ１０１は、第１のアルゴリズムよりも低い圧縮率でデータを圧縮する第２の圧縮アルゴリズムで、スワップ対象のデータを圧縮する。一例として、第１のアルゴリズムは、７‐ＺＩＰであってよく、第２のアルゴリズムはＺＩＰであってよい。また、ＲＡＲなどのその他の圧縮アルゴリズムが用いられてもよい。
【００４９】
Ｓ８０８においてプロセッサ１０１は、スワップアウトに関する情報を記録する。例えば、プロセッサ１０１は、履歴情報６００にスワップアウトの実行時刻に関するエントリを登録してよい。また、プロセッサ１０１は、例えば、メモリ１０２の管理領域２０３に記憶されている第２の実施形態に係るスワップ情報９００にスワップアウトに関する情報を記録してよい。
【００５０】
図９は、第２の実施形態に係るスワップ情報９００を例示する図である。スワップ情報９００は、例えば、仮想アドレス、スワップアウト先アドレス、サイズ、及び圧縮方式を含む。なお、仮想アドレス、スワップアウト先アドレス、及びサイズについては、スワップ情報７００の仮想アドレス、スワップアウト先アドレス、及びサイズとそれぞれ対応する情報であってよい。そして、圧縮方式には、Ｓ８０７又はＳ８０９の処理でスワップ対象のデータの圧縮に用いた圧縮アルゴリズムを識別するための情報が登録される。
【００５１】
そして、Ｓ８１０でプロセッサ１０１は、スワップ情報９００に登録したスワップアウト先のアドレスと対応するスワップ領域２０１内のメモリ領域に、圧縮したスワップ対象のデータをスワップアウトし、本動作フローは終了し、フローはＳ４０５の処理に続く。
【００５２】
以上の第２の実施形態で例示するように、実施形態は、圧縮の際のパラメータ以外にも、圧縮アルゴリズムを変更するなどその他の方法で圧縮率を変更して、実施されてもよい。また、例えば、圧縮アルゴリズムを適切に選択することで、圧縮率の更なる向上や、プロセッサに与える負荷の低減を図ることが可能である。
【００５３】
図１０は、第２の実施形態に係るスワップイン処理の動作フローを例示する図である。例えば、スワップ領域２０１に退避したデータの呼び出し指示が入力されるなどした場合、プロセッサ１０１は、図１０のスワップイン処理を開始してよい。
【００５４】
Ｓ１００１においてプロセッサ１０１は、呼び出されたデータをスワップ領域２０１において探索する。Ｓ１００２において呼び出されたデータの探索に成功したか否かを判定する。探索に失敗した場合（Ｓ１００２が失敗）、フローはＳ１００３に進み、プロセッサ１０１はエラーを出力して、本動作フローは終了する。また、探索に成功した場合（Ｓ１００２が成功）、フローは、Ｓ１００４に進む。
【００５５】
Ｓ１００４においてプロセッサ１０１は、スワップ情報９００を参照し、呼び出し対象のデータと対応するエントリの圧縮方式を特定する。Ｓ１００５においてプロセッサ１０１は、スワップ情報９００において呼び出し対象のデータと対応するエントリのスワップアウト先アドレスから、データサイズに規定されるサイズのデータを読み出し、特定した圧縮方式を用いて復号する。そして、Ｓ１００６においてプロセッサ１０１は、復号したデータをエントリの仮想アドレスと紐付けてメモリに確保した空き領域にスワップインする。
【００５６】
Ｓ１００６においてプロセッサ１０１は、スワップインに関する情報を更新する。例えばプロセッサ１０１は、スワップ情報９００からスワップインしたデータと対応するエントリを削除する。また、プロセッサ１０１は、履歴情報６００にスワップインの実行時刻に関するエントリを登録する。Ｓ１００６において情報の更新が完了すると、本動作フローは終了する。
【００５７】
以上で述べた様に、第２の実施形態では、プロセッサ１０１は、スワップアウトの際にスワップ情報９００に圧縮形式も保存している。そのため、プロセッサ１０１は、スワップインの際に適切な圧縮形式を選択してデータを復号することができる。
【００５８】
なお、図１０では、第２の実施形態に係る圧縮形式を変更する場合のスワップインの処理を例示している。しかしながら、例えば、圧縮アルゴリズムではなく圧縮のパラメータを変更する場合には、Ｓ１００４の処理を省略し、Ｓ１００５で所定の圧縮アルゴリズムを用いて復号を行うことで、第１の実施形態と対応するスワップインの処理を実行することができる。
【００５９】
以上で述べたように、上述の実施形態によれば、スワップアウトの際のメモリ管理制御装置１００のレスポンスを向上させることができる。
【００６０】
なお、メモリ管理制御装置１００の機種などによりプロセッサ１０１の処理の能力、タスクの数、各タスクの処理量が異なる。そのため、高圧縮率及び低圧縮率のそれぞれの圧縮で実際に用いるパラメータの値や圧縮アルゴリズムは、予め調査を行って最適解が決定されてよい。
【００６１】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の実施形態ではメモリ１０２にスワップ領域２０１が設けられている場合において実施形態を適用する例を述べた。しかしながら、実施形態はこれに限定されるものではない。例えば、ハードディスクなどの他の記憶装置１０３にスワップ領域２０１が設けられている場合にも実施形態は適用することができる。その場合にも、例えば、スワップアウトの際のメモリ管理制御装置１００のレスポンスの影響を考慮して圧縮率を変更することができる。また、例えば、メモリ管理制御装置１００のレスポンスへの影響が軽微な状況では、高圧縮率を用いることで、スワップアウトでデータを保存する記憶領域を削減することができる。また、更に、例えば、記憶装置１０３への読み書きの速度が遅い場合などには、高圧縮率を用いて圧縮したデータを書き込んだり読み込んだりすることで、スワップアウトの際の書き込み、スワップインの際の読み込みにかかる時間を短縮することができる。従って、実施形態は、例えば、パーソナルコンピュータ（ＰＣ）や、ノートＰＣなどのメモリ管理制御装置１００にも適用することができる。
【００６２】
また、例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。
【００６３】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【００６４】
１００      メモリ管理制御装置
１０１      プロセッサ
１０２      メモリ
１０３      記憶装置
１０４      入力装置
１０５      表示装置
１１０      バス
２０１      スワップ領域
２０２      データ領域
２０３      管理領域
【図１】
2018063505.tif 000003
【図２】
2018063505.tif 000004
【図３】
2018063505.tif 000005
【図４】
2018063505.tif 000006
【図５】
2018063505.tif 000007
【図６】
2018063505.tif 000008
【図７】
2018063505.tif 000009
【図８】
2018063505.tif 000010
【図９】
2018063505.tif 000011
【図１０】
2018063505.tif 000012