(57)【要約】      （修正有）【課題】処理の効率化を図ることが可能な情報処理装置、記憶装置およびプログラムを提供する。【解決手段】処理装置１０は、複数のページで構成される第１データを処理する第１処理を実行する。第２メモリ３０は、データの読み書きの速度を示すアクセス速度が第１メモリ２０よりも低く、かつ、第１データを記憶する。第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含む。処理装置のアクセス制御部は、読み書きの対象となるページが第１ページの場合は、該ページを第１メモリに移動する移動処理を行った後に、第１メモリ上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページが第２ページの場合は、第２メモリに対してデータの読み書きを直接行う第２アクセスを実行する。【選択図】図１
2017138852.tif 000002
【特許請求の範囲】
【請求項１】
複数のページで構成される第１データを処理する第１処理を実行する処理装置と、
第１メモリと、
データの読み書きの速度を示すアクセス速度が前記第１メモリよりも低く、かつ、前記第１データを記憶する第２メモリと、を備え、
前記第１データを構成する複数のページは、前記第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が前記閾値未満の第２ページと、を含み、
前記処理装置は、
読み書きの対象となるページが前記第１ページの場合は、該ページを前記第１メモリに移動する移動処理を行った後に、前記第１メモリ上に移動した該ページの読み書きを行う第１アクセスを実行し、
読み書きの対象となるページが前記第２ページの場合は、前記第２メモリに対してデータの読み書きを直接行う第２アクセスを実行するアクセス制御部を有する、
情報処理装置。
【請求項２】
前記アクセス制御部は、
複数のページごとに、前記第１アクセスで読み書きを行うのか前記第２アクセスで読み書きを行うのかを示すアクセス情報を対応付けた対応情報に基づいて、読み書きの対象となるページが前記第１ページであるか前記第２ページであるかを判断する、
請求項１に記載の情報処理装置。
【請求項３】
前記アクセス制御部は、前記第１処理に対応するアプリケーションから、前記第１データに含まれる所定サイズのデータごとに、該データを前記第１アクセスで読み書きを行うのか前記第２アクセスで読み書きを行うのかを判断するための判断情報を指定するヒント情報を受け取り、その受け取った前記ヒント情報に基づいて、前記対応情報を設定する、
請求項２に記載の情報処理装置。
【請求項４】
前記判断情報は、ランダムアクセスが行われるデータであるか否かを示す情報であり、
前記アクセス制御部は、ランダムアクセスが行われるデータであることを示す前記判断情報が指定された前記所定サイズのデータに対応する１以上のページに対しては、前記第２アクセスで読み書きを行うことを示す前記アクセス情報を設定する、
請求項３に記載の情報処理装置。
【請求項５】
前記第２メモリは不揮発メモリであり、
前記判断情報は、前記第２メモリに保持させておきたいデータを示す永続データであるか否かを示す情報であり、
前記アクセス制御部は、前記永続データであることを示す前記判断情報が指定された前記所定サイズのデータに対応する１以上のページに対しては、前記第２アクセスで読み書きを行うことを示す前記アクセス情報を設定する、
請求項３に記載の情報処理装置。
【請求項６】
前記判断情報は、データの書き換え頻度を示す情報であり、
前記アクセス制御部は、基準値未満の書き換え頻度を示す前記判断情報が指定された前記所定サイズのデータに対応する１以上のページに対しては、前記第２アクセスで読み書きを行うことを示す前記アクセス情報を設定する、
請求項３に記載の情報処理装置。
【請求項７】
前記判断情報は、前記所定サイズのデータごとに、前記判断情報をアプリケーションから受け取った後にアクセスが行われることを示す情報を含み、
前記アクセス制御部は、
前記所定サイズのデータが、前記第１アクセスで読み書きを行うことを示す前記アクセス情報に対応付けられた１以上のページに対応する場合は、アプリケーションによるアクセスが開始される前に、該データに対応する１以上のページを前記第１メモリへ転送する処理を開始し、
前記所定サイズのデータが、前記第２アクセスで読み書きを行うことを示す前記アクセス情報に対応付けられた１以上のページに対応する場合は、アプリケーションによるアクセスが開始される前に、該データに対応する１以上のキャッシュラインを前記プロセッサが有するキャッシュメモリへ転送する処理を開始する、
請求項３乃至６のうちの何れか１項に記載の情報処理装置。
【請求項８】
前記第２アクセスで読み書きを行うことを示す前記アクセス情報に対応付けられたページのサイズは、前記第１アクセスで読み書きを行うことを示す前記アクセス情報に対応付けられたページのサイズよりも大きい、
請求項２に記載の情報処理装置。
【請求項９】
前記アクセス制御部は、
前記処理期間内の第１期間においては、前記第１データを構成する全てのページを前記第２ページとして設定し、
前記第１期間における前記第２メモリに対するデータの読み書きの状況に基づいて、前記第２ページを前記第１ページに切り替える、
請求項１に記載の情報処理装置。
【請求項１０】
前記第２メモリは不揮発メモリであり、
前記アクセス制御部は、
書き込みの対象となるページが前記第１ページの場合は、該ページを前記第１メモリに移動する前記移動処理を行った後に、前記第１メモリ上に移動した該ページに対してデータの書き込みを行うとともに、該ページのコピーを示すコピーページを前記第２メモリ上に残し、前記第２メモリ上の前記コピーページに対しても同じデータの書き込みを行う、
請求項１に記載の情報処理装置。
【請求項１１】
前記アクセス制御部は、書き込みの対象となるページを示す対象ページが前記第１ページの場合は、前記第２メモリへのデータの書き込み量が、前記第１アクセスによる書き込みが行われた後の対象ページを前記第２メモリへ書き戻すときのデータの書き込み量よりも小さくなるように、対象ページを前記第１メモリに移動する前記移動処理を行った後に、前記第１メモリ上に移動した対象ページに対してデータの書き込みを行うとともに、対象ページのコピーを示すコピーページを前記第２メモリ上に残し、前記第２メモリ上のコピーページに対しても同じデータの書き込みを行う第１の書き込み、または、対象ページを前記第１メモリに移動する前記移動処理を行った後に、前記第１メモリ上に移動した対象ページに対してのみデータの書き込みを行う第２の書き込みの何れかを行う、
請求項１に記載の情報処理装置。
【請求項１２】
前記アクセス制御部は、
前記第１データに含まれる複数のデータごとに、前記第１アクセスで読み書きを行うのか前記第２アクセスで読み書きを行うのかを特定可能な特定情報を対応付けた第２対応情報に基づいて、前記対応情報を設定する、
請求項２に記載の情報処理装置。
【請求項１３】
前記第１メモリは、前記処理装置内部のメモリを示す内部メモリである、
請求項１に記載の情報処理装置。
【請求項１４】
前記アクセス制御部は、
前記移動処理に伴って発生する、前記第１メモリと前記第２メモリとの間のデータ転送量が所定値よりも大きい場合は、前記データ転送量が前記所定値を下回るまで、読み書きの対象となるページが前記第１ページであっても前記第２アクセスを実行する、
請求項１３に記載の情報処理装置。
【請求項１５】
複数のページで構成される第１データを処理する第１処理を実行する処理装置によるデータの読み書きを制御するコントローラと、
第１メモリと、
データの読み書きの速度を示すアクセス速度が前記第１メモリよりも低く、かつ、前記第１データを記憶する第２メモリと、を備え、
前記第１データを構成する複数のページは、前記第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が前記閾値未満の第２ページと、を含み、
前記コントローラは、
読み書きの対象となるページが前記第１ページの場合は、該ページを前記第１メモリに移動する移動処理を行った後に、前記第１メモリ上に移動した該ページの読み書きを行う第１アクセスを実行し、
読み書きの対象となるページが前記第２ページの場合は、前記第２メモリに対してデータの読み書きを直接行う第２アクセスを実行するアクセス制御部を有する、
記憶装置。
【請求項１６】
複数のページで構成される第１データを処理する第１処理を実行する処理装置と、第１メモリと、データの読み書きの速度を示すアクセス速度が前記第１メモリよりも低く、かつ、前記第１データを記憶する第２メモリと、を備え、前記第１データを構成する複数のページは、前記第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が前記閾値未満の第２ページと、を含むコンピュータに、
読み書きの対象となるページが前記第１ページの場合は、該ページを前記第１メモリに移動する移動処理を行った後に、前記第１メモリ上に移動した該ページの読み書きを行う第１アクセスを実行し、
読み書きの対象となるページが前記第２ページの場合は、前記第２メモリに対してデータの読み書きを直接行う第２アクセスを実行するアクセス制御ステップを実行させるためのプログラム。
【請求項１７】
複数のページから構成される第１データを処理する第１処理を実行する処理装置と、
第１メモリと、
データの読み書きの速度を示すアクセス速度が前記第１メモリよりも低く、かつ、前記第１データを記憶する第２メモリと、を備え、
前記処理装置は、
前記第１データの読み書きを行う場合、
前記第２メモリ上のページを前記第１メモリに移動する移動処理を行った後に、前記第１メモリ上に移動した該ページの読み書きを行う第１アクセスに伴って発生する前記第１メモリと前記第２メモリとの間のデータ転送量に対する、前記第１メモリ上に移動したページの読み書きを行う量の割合が、全ての前記第１データの読み書きを前記第１アクセスで行う場合の前記割合よりも大きくなるように、前記第１アクセスと、前記第２メモリ上のデータの読み書きを直接行う第２アクセスと、を実行するアクセス制御部を有する、
情報処理装置。
【請求項１８】
複数のページから構成される第１データを処理する第１処理を実行する処理装置と、
第１メモリと、
データの読み書きの速度を示すアクセス速度が前記第１メモリよりも低く、かつ、前記第１データを記憶する第２メモリと、を備え、
前記処理装置は、
前記第１データの読み書きを行う場合、
前記第１メモリの消費電力と前記第２メモリの消費電力の合計が、
前記第２メモリ上の全ての前記第１データの読み書きを、前記第２メモリ上の前記第１データに含まれるページを前記第１メモリに移動する移動処理を行った後に、前記第１メモリ上に移動した該ページの読み書きを行う第１アクセスで行う場合の消費電力よりも小さくなるように、前記第１アクセスと、前記第２メモリに対してデータの読み書きを直接行う第２アクセスと、を実行するアクセス制御部を有する、
情報処理装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、記憶装置およびプログラムに関する。
【背景技術】
【０００２】
従来、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメインメモリに載りきらないデータを、メインメモリとは別のストレージ（例えばＨＤＤやＳＳＤ等）内に確保された領域（スワップ領域と称する場合がある）に記憶し、メインメモリからスワップ領域へページ（読み書きのデータ単位）を移動する処理（ページアウト）と、スワップ領域からメインメモリへページを移動する処理（ページイン）とからなるスワップ処理（データ移動処理）を実行しながらアプリケーションを動作させる技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、例えば４ＫＢのページをメインメモリにページインしても、そのうちの数バイトしか利用されない場合は、ページインに要する時間（オーバヘッド）や電力の大部分が無駄になってしまう。したがって、処理の効率化を図ることは困難であった。
【課題を解決するための手段】
【０００５】
実施形態の情報処理装置は、処理装置と第１メモリと第２メモリとを備える。処理装置は、複数のページで構成される第１データを処理する第１処理を実行する。第２メモリは、データの読み書きの速度を示すアクセス速度が第１メモリよりも低く、かつ、第１データを記憶する。第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含む。処理装置はアクセス制御部を有する。アクセス制御部は、読み書きの対象となるページが第１ページの場合は、該ページを第１メモリに移動する移動処理を行った後に、第１メモリ上に移動した該ページの読み書きを行う第１アクセスを実行する。また、アクセス制御部は、読み書きの対象となるページが第２ページの場合は、第２メモリに対してデータの読み書きを直接行う第２アクセスを実行する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の情報処理装置の構成の一例を示す図。
【図２】第１実施形態の第１ページおよび第２ページを説明するための図。
【図３】第１実施形態の第１ページおよび第２ページを説明するための図。
【図４】第１実施形態の情報処理装置が有するソフトウェアを示す図。
【図５】第１実施形態のページテーブルを説明するための図。
【図６】第１実施形態の情報処理装置の動作例を示す図。
【図７】変形例の情報処理装置の構成の一例を示す図。
【図８】第２実施形態のページテーブルを説明するための図。
【図９】第３実施形態の情報処理装置の構成の一例を示す図。
【図１０】第４実施形態の動作を説明するための図。
【図１１】第４実施形態の情報処理装置の動作例を示す図。
【図１２】第４実施形態のページテーブルの設定方法を説明するための図。
【図１３】第４実施形態のページテーブルの設定方法を説明するための図。
【図１４】第４実施形態の情報処理装置の動作例を説明するための図。
【図１５】第４実施形態の情報処理装置の動作例を説明するための図。
【図１６】第５実施形態のテーブル情報の一例を示す図。
【図１７】第６実施形態の情報処理装置の構成の一例を示す図。
【発明を実施するための形態】
【０００７】
以下、添付図面を参照しながら、本発明に係る情報処理装置、記憶装置およびプログラムの実施形態を詳細に説明する。
【０００８】
（第１実施形態）
具体的な内容を説明する前に、従来技術と併せて本実施形態の概要を説明する。コンピュータシステムでは、大規模なデータ処理をするアプリケーション向けに大容量のメモリ空間（アドレス空間）を提供することが必要である。Ｌｉｎｕｘ（登録商標）などのＯＳ（オペレーティングシステム）の仮想記憶(Ｖｉｒｔｕａｌ  Ｍｅｍｏｒｙ)方式のスワップ処理を利用すれば、メインメモリ（例えばＤＲＡＭ)のサイズより大きな仮想アドレス空間をアプリケーション（プロセス）に提供することができ、ＯＳはＤＲＡＭから構成されるメインメモリ(物理メモリ)に収まらないメモリサイズ（データが格納される領域）が必要なアプリケーションを動作させることができる。
【０００９】
ＯＳの仮想記憶システムでは、アプリケーションが指定する仮想アドレスを物理アドレス(メモリの位置を示す情報)にマッピングする（割り当てる）。マッピングはＯＳが管理するページ単位(以下、単に「ページ」と呼ぶ)で対応関係を記憶するページテーブルを利用して行われる。仮想記憶システムのスワップ処理機構が提供するスワップ処理では、メインメモリにマッピングされてないページ(ＤＲＡＭ上に存在しないページ)をＨＤＤ（Hard  Disk  Drive）やＳＳＤ(Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ)などのメインメモリとは異なるストレージ内に確保された領域（「スワップ領域」）に保存し、上述したスワップ処理を実行しながらアプリケーションを動作させる。このように、スワップ領域が確保されるデバイスであるスワップデバイスとしてＨＤＤやＳＳＤなどのデバイスを利用してスワップ処理を活用することで、ＤＲＡＭから構成されるメインメモリと合わせて、アプリケーションが処理するデータが記憶される領域として（処理を行うためのワーキングエリア（作業領域）として）、大きく高速なメインメモリがあるように見せることが可能になる。
【００１０】
しかし、ＳＳＤやＨＤＤなどのストレージデバイスでは、データの読み書きの速度を示すアクセス速度（データの読み書きのアクセスレイテンシ）が遅いため、これらをスワップデバイスとして利用した場合、上述のスワップ処理（スワップデバイスからメインメモリへデータを転送し、メインメモリからスワップデバイスへデータを転送する処理）が発生すると、メインメモリとＳＳＤとの間のデータ転送、または、メインメモリとＨＤＤとの間のデータ転送によりアプリケーションの速度性能が大幅に低下するという問題が起こる。この問題を解決するために、メインメモリとスワップデバイスとの間の無駄なデータ転送を抑制することで性能低下を防止することが考えられてきた。また、スワップ処理が発生するとアプリケーションの速度性能が不安定になる(予測しづらくなる)ため、極力スワップ処理が発生しないようにメインメモリのサイズを十分に確保するシステム設計がなされることが一般的である。
【００１１】
また、スワップデバイスとして、特許文献１に記載されているＳＣＭ（Storage-class  Memory）などとも呼ばれる、ＤＲＡＭ（メインメモリ）と同等あるいは少しアクセスレイテンシは大きい（リードレイテンシとライトレイテンシの両方がＤＲＡＭより大きい上でさらにライトレイテンシの方がリードレイテンシより大きい、あるいは、リードはＤＲＡＭと同等だがライトレイテンシはＤＲＡＭより遅いなど様々な特性のメモリがあるが、本発明はこれらすべてのメモリを包含するものとする）速度は遅いが、ＳＳＤやＨＤＤなどのストレージよりは高速で、かつ、ＤＲＡＭより大容量な大容量高速不揮発メモリ(Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ、以下、「ＮＶＭ」と称する）を利用すると、スワップ処理のデータ転送を高速に行うことができるので、ある程度までは積極的にスワップ処理を行っても、アプリケーションの速度性能は急激に低下することはない。
【００１２】
しかし、ＮＶＭを使うことでデータ転送のオーバヘッドが解消されると、今度は、大規模グラフ解析やデータベース操作などのアプリケーションで発生する、小さい単位で互いに異なるページに配置されている複数のデータ（それぞれが離散的に配置された複数のデータ）へのアクセスなどのローカリティが低いメモリアクセスのオーバヘッドが顕在化する。このようなメモリアクセスでは、例えば４ＫＢのページをメインメモリにページインしても、４ＫＢのうち数バイトしか使われなければ４ＫＢのページをページインするのに要する時間や電力（オーバヘッド）の大部分が無駄になる。そのような場合は、ページインせずに、ＮＶＭが従来のＳＳＤやＨＤＤと違いＯＳのページより小さな単位（バイト単位あるいはプロセッサのキャッシュラインサイズ単位など）でアクセス可能であることを利用して、メインメモリより少し遅いがバイト単位などのページよりも小さい単位でアクセス可能なＮＶＭに対してダイレクトにアクセスした方が処理を高速化・省電力化できる場合がある。そこで、本実施形態では、このダイレクトアクセス（後述の第２アクセス）と、従来のスワップ処理を介したアクセス（後述の第１アクセス）とを使い分ける（混在させる）ことで、処理の高速化・省電力化を図ることを目的とする。
【００１３】
以下、本実施形態の具体的な内容を説明する。図１は、本実施形態の情報処理装置１のハードウェア構成の一例を示す図である。図１に示すように、情報処理装置１は、プロセッサ１０と、第１メモリ２０と、第２メモリ３０とを備える。
【００１４】
プロセッサ１０は、「処理装置」の一例であり、各種の処理を実行するための装置である。この例では、プロセッサ１０は、Ｉｎｔｅｌ  ＸＥＯＮプロセッサなどのプロセッサであり、複数のプロセッサコア１０１を有する（説明の便宜上、図１では１つのプロセッサコア１０１のみを表示）。それぞれのプロセッサコア１０１は、Ｌ１データキャッシュ、Ｌ１命令キャッシュ、Ｌ２キャッシュなどのプライベートキャッシュを有している（不図示）。また、例えばＬ３キャッシュなどのキャッシュ階層における最下位に位置するキャッシュであるラストレベルキャッシュ（ＬＬＣ）を各プロセッサコア１０１で共有するシェアドキャッシュとして有している。以下では、このような構成を前提として説明するが、これに限られるものではなく、例えばシングルプロセッサシステムで構成されてもよい。
【００１５】
また、プロセッサ１０は、第１メモリコントローラ１０２（この例ではＤＲＡＭコントローラ）を内包しており、これを介して第１メモリ２０（この例ではＤＲＡＭ）が接続(メモリバス接続)されている。また、プロセッサ１０は第２メモリコントローラ１０３(この例ではＮＶＭコントローラ)を内包しており、これを介して第２メモリ３０（この例ではＮＶＭ）が接続(メモリバス接続)されている。なお、これに限らず、第２メモリ３０とプロセッサ１０の接続方法や、第２メモリ３０の実装形態は任意である。また、図１の例では、２つのメモリコントローラ（第１メモリコントローラ１０２、第２メモリコントローラ１０３）を図示しているが、これに限らず、例えば第１メモリ２０と第２メモリ３０を接続可能な一つのハイブリッド型のメモリコントローラで構成されてもよい。
【００１６】
プロセッサ１０（プロセッサコア１０１）は、アプリケーションやＯＳ（オペレーティングシステム）等のソフトウェア（プログラム）を実行することにより、各種の機能を実現する。ＯＳとは、情報処理装置１が備えるハードウェア資源を制御する機能を提供するための基本プログラムである。例えばＬｉｎｕｘなどである。また、アプリケーションとは、ＯＳを利用して、特定の機能を提供するためのプログラムであり、その種類は任意である。本実施形態では、プロセッサ１０上で動作する任意のアプリケーション（プロセス、説明の便宜上「第１処理」と称する場合がある）が、第２メモリ３０上のデータ（以下の説明では「第１データ」と称する場合がある）を処理する場合を想定する。この場合、プロセッサ１０（プロセッサコア１０１）は、第１データを処理する第１処理を実行すると考えることができる。この例では、第１データは、それぞれが一定サイズ（ＯＳが管理する単位のサイズ）のデータを示す複数のページで構成される。また、ここでは、ＯＳは、アプリケーションから、該アプリケーションが処理するデータ（第１データに含まれる処理対象のデータ）へのアクセス要求（データの読み出し要求（リード要求）または書き込み要求（ライト要求））を受け付け、その受け付けたアクセス要求に応じた制御を行う。本実施形態のＯＳが有する具体的な機能については後述する。
【００１７】
第１メモリ２０は、プロセッサ１０によるデータの読み書きに用いられるメモリであり、この例ではＤＲＡＭで構成される。第１メモリ２０は、メインメモリ（主記憶装置）として機能し、プロセッサ１０は、第１メモリ２０上のデータを直接読み書きする。第１メモリ２０は、ＭＲＡＭなどのメインメモリ用の高速な不揮発メモリなどでもよい。
【００１８】
第２メモリ３０は、プロセッサ１０と接続された大容量高速不揮発メモリ（ＮＶＭ）で構成される。一般的に、ＮＶＭは、そのアクセス速度（データの読み書きの速度）はＤＲＡＭと同等程度または少し遅いが、ＤＲＡＭより大容量(ＤＲＡＭと同等程度の容量であってもよい)で、かつ、不揮発性なので待機電力はゼロか非常に低いメモリである。第２メモリ３０を構成するＮＶＭは、例えばＭＲＡＭで構成されてもよいし、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）、３Ｄ  ＸＰｏｉｎｔ、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、Ｍｅｍｒｉｓｔｏｒなどで構成されてもよいし、以上に限られるわけではない。第２メモリ３０として想定しているメモリは、アクセスレイテンシが１０ｎｓ〜数μｓ程度であり、かつ、データを保持するための電力が第１メモリ２０よりも低いメモリであるが（典型的には不揮発メモリであるが、これに限らずデータを保持するための電力が非常に小さい揮発性メモリであってもよい）、例えばアクセスレイテンシは、１０ｎｓ〜数μｓよりも速くてもよいし遅くてもよい。また、ここでは、第２メモリ３０はＯＳのページサイズなどよりも小さい単位（バイト単位（バイトアドレッサブル）やプロセッサキャッシュラインサイズ単位）でアクセス可能な（バイトアドレッサブルな）メモリであり、プロセッサ１０からダイレクトにアクセスできるメモリであることを想定している。第２メモリ３０は、データの読み書きの速度を示すアクセス速度が第１メモリ２０よりも低く、かつ、上述の第１データを記憶する。第２メモリ３０は、大容量低消費電力メモリなどであってもよい。
【００１９】
第２メモリ３０（第２メモリ３０の一部あるいは全部）はＬｉｎｕｘなどのプロセッサ１０上で動作するＯＳ（オペレーティングシステム）の仮想記憶方式のスワップ処理で利用されるスワップデバイス（スワップ領域が確保されるデバイス）として使われる。よって、アクセス（データの読み書き）が要求されたデータを示す対象データが第２メモリ３０に存在する場合は、第１メモリ２０に空きがないあるいは少なければプロセッサ１０上で動作するＯＳの仮想記憶方式のスワップ処理により第１メモリ２０上のページ（スワップ処理の単位となるサイズのデータ）を第２メモリ３０へ転送し、第２メモリ３０上の対象データを含むページを第１メモリ２０へ転送した後、第２メモリ３０から転送された該ページに対する読み書きが行われる。なお、上記の第１メモリ２０から第２メモリ３０への転送と、第２メモリ３０から第１メモリ２０への転送の順番やタイミングは任意であってよい。例えば、第２メモリ３０上の対象データを含むページが必要になった時にすぐに第１メモリ２０へ転送できるように、その前の任意のタイミングで最近使用されてない第１メモリ２０上の複数のページをまとめて第２メモリ３０へ転送しておき第１メモリ２０を空けておくように実装されても良い。これは以降でも同じである。なお、第１メモリ２０と第２メモリ３０との間のデータ転送は、プロセッサコア１０１が行ってもよいし、不図示のデータ転送専用ハードウェア（ＤＭＡコントローラ）が行ってもよく、これは他の実施例でも同様である。
【００２０】
本実施形態では、プロセッサ１０は、アプリケーションから、第２メモリ３０上のページの読み書きが要求された場合は、該ページのアクセス特性（どのようにアクセスされるのかを示す特性）に応じて、該ページを第１メモリ２０に移動するスワップ処理（移動処理）を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスを実行するのか、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行するのかを切り替える。
【００２１】
より具体的には以下のとおりである。ここでは、第２メモリ３０上の第１データを構成する複数のページは、第１データを処理する第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページ（利用頻度が高いページ、アクセスローカリティが高いページ）と、読み書きされる回数が閾値未満の第２ページ（利用頻度が低いページ、アクセスローカリティが低いページ）と、を含む。なお、「第１処理を実行するための処理期間」とは、第１処理を実行中（アプリケーションが動作中）の期間であると考えてもよいし、第１処理を実行するための契機が発生してから第１処理が完了するまでの期間であると考えてもよい。
【００２２】
また、上述の閾値は任意であり、例えば１つのページを構成する複数のデータの総数の１／ｘ（ｘは任意に設定可能）として設定することもできる。なお、以下の説明においては、１つのページを構成する複数のデータの各々を「ページデータ」と称する。各ページデータの構造やサイズは同一であってもよいし、一部または全部が異なる形態であってもよい。
【００２３】
例えば図２に示すように、１つのページが、６４個のページデータで構成され、上記閾値として「４」が設定される場合を想定する。図２の（Ａ）に示すように、一定期間内に利用されるページデータの数が３個の場合は、閾値を下回るため、そのページの利用頻度（アクセス頻度）は低いとみなされて第２ページとなる。また、図２の（Ｂ）に示すように、一定期間内に利用されるページデータの数が６４個の場合は、閾値を上回るため、そのページの利用頻度（アクセス頻度）は高いとみなされて第１ページとなる。
【００２４】
また、例えば図３の（Ａ）に示すように、一定期間内において、１つのページ内の全てのページデータが１回ずつ利用される場合を想定する。この場合、一定期間内に利用されるページデータの数は６４個となり、上記閾値を上回るため、該ページは第１ページとなる。また、例えば図３の（Ｂ）に示すように、一定期間内において、１つのページ内の１つのページデータのみが１回だけ利用される場合を想定する。この場合、一定期間内に利用されるページデータの数は１個となり、上記閾値を下回るため、該ページは第２ページとなる。さらに、例えば図３の（Ｃ）に示すように、一定期間内において、１つのページ内の１つのページデータのみが６４回利用される場合を想定する。この場合、一定期間内に利用されるページデータの数は６４個と判断され、上記閾値を上回るため、該ページは第１ページとなる。図３の（Ｃ）の例では、１つのページを構成する６４個のページデータのうち、一定期間内に利用されるページデータは１つだけであるものの、その利用回数は上記閾値を上回る回数であるため、該ページの利用頻度は高いという判断になる。
【００２５】
そして、プロセッサ１０は、上述の第１データ(アプリケーションの処理対象となる第２メモリ３０上のデータ)を構成する複数のページのうち読み書きの対象となるページが第１ページの場合は、該ページを第１メモリ２０に移動するスワップ処理（移動処理）を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページが第２ページの場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行する。より詳細には、プロセッサ１０は、第１データを構成する複数のページのうち、アプリケーションから読み書きが要求されたページデータを示す対象データに対応するページが第１ページの場合は、該ページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した対象データの読み書きを行う第１アクセスを実行し、対象データに対応するページが第２ページの場合は、第２メモリ３０上の対象データの読み書きを直接行う第２アクセスを実行する機能を有する。
【００２６】
次に、プロセッサ１０上で動作するＯＳにより提供される機能を説明する。図４は、情報処理装置１が有するソフトウェアの構成の一例を示す図であり、プロセッサ１０が実行するソフトウェア（プログラム）として、アプリケーションとＯＳが存在する。図４に示すように、ＯＳは、アクセス制御部１１１を有する。なお、この例では、本実施形態に関する機能のみを例示して説明するが、ＯＳが有する機能は以下に説明する内容に限られるものではない。
【００２７】
アクセス制御部１１１は、第１データを構成する複数のページのうち読み書きの対象となるページが第１ページの場合は、第１アクセスを実行する。また、アクセス制御部１１１は、読み書きの対象となるページが第２ページの場合は、第２アクセスを実行する。
【００２８】
ここで、スワップ処理で第１メモリ２０へページを転送すると、第１メモリ２０（メインメモリ）はアクセス速度が速いので、該ページへのアクセスを高速化することができる。しかし、上述したようなアクセスローカリティの低いページ（上記一定期間における利用回数が閾値未満のページ）を第１メモリ２０に転送した後に、第１メモリ２０に転送された該ページの読み書きを行う場合、該ページのアクセス回数（利用回数）が閾値に満たない場合は、該ページのスワップ処理に要する時間や電力の大部分が無駄になってしまう。さらに、アクセスローカリティの低いページを第２メモリ３０から第１メモリ２０へ移すために、第１メモリ２０から第２メモリ３０へ追い出されてしまうページも出てくるので、第１メモリ２０を効率よく使えず、余計なデータ転送量がさらに増えてしまう。
【００２９】
そこで、本実施形態では、第２メモリ３０上の第１データを構成する複数のページのうち、読み書きの対象となるページがアクセスローカリティの高いページ（第１ページ）の場合は、該ページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページがアクセスローカリティの低いページ（第２ページ）の場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行することで、スワップ処理に要する時間や電力に無駄が生じることを極力抑えることができる。これにより、処理の効率化を図ることができる。また、処理の効率化で、上記余計なデータ転送量が減れば、必要な第１メモリ２０のサイズを小さくすることができるので、第１メモリ２０のサイズが小さい情報処理装置を作ることも可能になるし、または、第１メモリ２０のうち、小さくできた分の領域（不要になった領域）を動的にパワーオフして省電力化することもできる。
【００３０】
見方を変えれば、アクセス制御部１１１は、第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０の第１メモリ２０に対するアクセス量の割合を大きくする制御を行っていると考えることもできる。つまり、本実施形態のアクセス制御部１１１は、第２メモリ３０上の第１データの読み書きを行う場合、第２メモリ３０上のページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０が第１メモリ２０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の上記割合よりも大きくなるように、第１アクセスと、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスと、を実行していると考えることができる。この場合も、第２メモリ３０上の第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含み、アクセス制御部１１１は、読み書きの対象となるページが第１ページの場合は第１アクセスを行い、読み書きの対象となるページが第２ページの場合は第２アクセスを行うと考えることができる。
【００３１】
メインメモリである第１メモリ２０を効率良く利用するためには（無駄を抑えて効率よく利用するためには）、第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０の第１メモリ２０に対するアクセス量の割合を大きくすることが重要であるところ、本実施形態によれば、メモリ間のデータ転送量に対する、プロセッサ１０の第１メモリ２０へのデータアクセス量の割合を大きくすることができるので、第１メモリ２０を効率良く利用することができる。
【００３２】
また、本実施形態のアクセス制御部１１１は、第２メモリ３０上の第１データの読み書きを行う場合、第１メモリ２０の消費電力と第２メモリ３０の消費電力の合計が、第２メモリ３０上の全ての第１データの読み書きを、第２メモリ３０上の第１データに含まれるページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスで行う場合の消費電力よりも小さくなるように、第１アクセスと、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスと、を実行していると考えることができる。この場合も、第２メモリ３０上の第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含み、アクセス制御部１１１は、読み書きの対象となるページが第１ページの場合は第１アクセスを行い、読み書きの対象となるページが第２ページの場合は第２アクセスを行うと考えることができる。
【００３３】
また、本実施形態では、アクセス制御部１１１は、複数のページごとに、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのかを示すアクセス情報を対応付けた対応情報に基づいて、読み書きの対象となるページが第１ページであるか第２ページであるかを判断する。この例では、アクセス制御部１１１は、アプリケーションから、該アプリケーションが処理するデータ（第１データ）に含まれる所定サイズ（ページサイズよりも大きくてもよいし小さくてもよい）のデータごとに、該データの読み書きを第１アクセスで行うのか第２アクセスで行うのかを判断するための判断情報を指定するヒント情報を受け取り、その受け取ったヒント情報に基づいて、対応情報を設定する。アクセス制御部１１１は、アプリケーションが処理するデータを、第１メモリ２０および第２メモリ３０に配置する際に（マッピングする際に）、該アプリケーションから、該データとヒント情報とを受け取る。アクセス制御部１１１は、該アプリケーションから受け取ったデータを複数のページに分割し、ヒント情報に基づいて、ページごとに、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのかを特定した上で、各ページを第１メモリ２０または第２メモリ３０に配置する（マッピングする）。そして、それに応じて、アプリケーションが指定する仮想アドレス（処理対象のデータに割り当てられる仮想アドレス）と物理アドレス(メモリの位置を示す情報)との対応関係をページ単位で示すページテーブルを設定する。
【００３４】
図５は、本実施形態のページテーブルの一例を示す図である。図５に示すように、ページテーブルは、仮想アドレスに対応するページを識別するページ番号と、該ページの物理的な格納場所と、オフセットと、アクセス情報とを対応付けた情報である。オフセットは、ページがマッピングされた位置を示す情報（つまり、物理アドレス）である。また、アクセス情報は、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのか否かを示す情報であり、この例では、アクセス情報が「Ｙｅｓ」を示す場合は、対応するページは第２アクセスで読み書きを行うことを意味し（つまり、第２ページであることを意味し）、アクセス情報が「Ｎｏ」を示す場合は、対応するページは第１アクセスで読み書きを行うことを意味する（つまり、第１ページであることを意味する）。この例では、ページテーブルは、上述の対応情報に相当しているが、これに限らず、上述の対応情報の形態は任意である。
【００３５】
図５の例において、例えばアプリケーションからの要求を受けたＯＳが、「０」を示すページ番号に対応するページへアクセスする場合を想定する。この場合、図５のページテーブルにおいて、「０」を示すページ番号に対応するアクセス情報は「Ｎｏ」を示すので、ＯＳ(アクセス制御部１１１)は、該ページは第１ページであると判断し、スワップ処理を行い、プロセッサ１０は第１アクセスを実行することになる。また、例えばアプリケーションからの要求を受けたＯＳが、「４」を示すページ番号に対応するページへアクセスする場合を想定する。この場合、図５のページテーブルにおいて、「４」を示すページ番号に対応するアクセス情報は「Ｙｅｓ」を示すので、ＯＳ(アクセス制御部１１１)は、該ページは第２ページであると判断し、スワップ処理を行わずにプロセッサ１０は第２メモリ３０へ直接アクセスする第２アクセスを実行することになる。
【００３６】
図６は、上述のページテーブルを設定する場合の情報処理装置１（アクセス制御部１１１）の動作例を示すフローチャートである。図６に示すように、アクセス制御部１１１は、アプリケーションから、該アプリケーションが利用するデータと、上述のヒント情報とを受信する（ステップＳ１０１）。
【００３７】
次に、アクセス制御部１１１は、ステップＳ１０１で受信したデータを、複数のページに分割し、ステップＳ１０１で受信したヒント情報に基づいて、分割したページごとに、上述のアクセス情報を対応付けた対応情報を設定する（ステップＳ１０２）。この例では、ヒント情報は、アプリケーションが処理するデータに含まれる所定サイズのデータごとに、該所定サイズのデータの読み書きを第１アクセスで行うのか第２アクセスで行うのかを直接示す情報を判断情報として指定している場合を想定する。そのため、アクセス制御部１１１は、ヒント情報を参照すれば、各ページが、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのかを直ちに特定することができる（特別な判断処理は不要である）。
【００３８】
また、ＯＳ（情報処理装置１）は、アプリケーションが、上述の判断情報を指定するためのインタフェース部（ＡＰＩ）を有する形態であってもよい。これにより、アプリケーションが処理する第１データに含まれるデータが配置されるメモリ領域をアロケートする際に、該アプリケーションは、該データの読み書きを第１アクセスで行うのか第２アクセスで行うのかを直接示す判断情報を指定することができる。
【００３９】
以上に説明したように、本実施形態では、第２メモリ３０上の第１データを構成する複数のページのうち、読み書きの対象となるページがアクセスローカリティの高いページ（第１ページ）の場合は、該ページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページがアクセスローカリティの低いページ（第２ページ）の場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行することで、スワップ処理に要する時間や電力に無駄が生じることを極力抑えることができる。これにより、処理の効率化を図ることができる。
【００４０】
（第１実施形態の変形例１）
例えばＯＳの仮想記憶を使わない形態であってもよい。例えば図７に示すように、情報処理装置１は、第１データを処理する第１処理を実行する外部装置４０と、メモリモジュール５０と、を備える構成であってもよい。図７の例では、メモリモジュール５０は、上述の第１メモリ２０と、上述の第２メモリ３０と、第１メモリ２０と第２メモリ３０との間でデータ（この例ではページ単位のデータ）を移動させるコントローラ６０と、を備える。なお、データの移動のために、データ転送専用ハードウェア（ＤＭＡコントローラ）を設けておくのが望ましい。
【００４１】
図７の例では、上述のＯＳにより提供される機能（アクセス制御部１１１等の機能）は、ハードウェア要素であるコントローラ６０により実現される。この例では、コントローラ６０は、外部装置４０から、データの読み書きを要求するリクエストを受け付けると、メモリモジュール５０内の上述のページテーブルを用いて、上述の第１実施形態と同様に、第１アクセスまたは第２アクセスを行う。
【００４２】
すなわち、本変形例のメモリモジュール５０（記憶装置）は、複数のページで構成される第１データを処理する第１処理を実行する処理装置（この例では外部装置４０）によるデータの読み書きを制御するコントローラ６０と、第１メモリ２０と、第２メモリ３０とを備える。上述の第１実施形態と同様に、第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含む。そして、コントローラ６０は、読み書きの対象となるページが第１ページの場合は、該ページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページが第２ページの場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行する機能（アクセス制御部１１１の機能に相当）を有する。具体的な内容は、上述の第１実施形態と同様であるので、詳細な説明は省略する。
【００４３】
見方を変えれば、コントローラ６０（アクセス制御部１１１）は、第２メモリ３０上の第１データの読み書きを行う場合、第２メモリ３０上のページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、外部装置４０（処理装置）が第１メモリ２０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の上記割合よりも大きくなるように、第１アクセスと、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスと、を実行していると考えることができる。この場合も、第２メモリ３０上の第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含み、コントローラ６０は、読み書きの対象となるページが第１ページの場合は第１アクセスを行い、読み書きの対象となるページが第２ページの場合は第２アクセスを行うと考えることができる。
【００４４】
また、コントローラ６０（アクセス制御部１１１）は、第２メモリ３０上の第１データの読み書きを行う場合、第１メモリ２０の消費電力と第２メモリ３０の消費電力の合計が、第２メモリ３０上の全ての第１データの読み書きを、第２メモリ上の第１データに含まれるページを第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した該ページの読み書きを行う第１アクセスで行う場合の消費電力よりも小さくなるように、第１アクセスと、第２メモリに対してデータの読み書きを直接行う第２アクセスと、を実行していると考えることもできる。この場合も、第２メモリ３０上の第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含み、コントローラ６０は、読み書きの対象となるページが第１ページの場合は第１アクセスを行い、読み書きの対象となるページが第２ページの場合は第２アクセスを行うと考えることができる。
【００４５】
（第１実施形態の変形例２）
例えばスワップ処理をＯＳの仮想記憶に任せずにアプリケーションがその一部（あるいは全部）を行ってもよい。つまり、例えば、ＯＳが第２メモリ３０に読み書きの対象となるページ（対象ページ）がないことを検出すると、ＯＳがアプリケーションに制御を移して、アプリケーションが、該対象ページが第１ページなのか第２ページなのかを判定し、第１ページと判定すれば、アプリケーション独自のスワップ処理アルゴリズムにて第１メモリ２０上のどのページを第２メモリ３０へ転送するか判定した後に転送を行い、上記対象ページを第１メモリ２０へコピーするスワップ処理を行い、ページテーブルの変更はＯＳに実行させてもよい。
【００４６】
（第１実施形態の変形例３）
例えば上述のヒント情報は、第１データに含まれる所定サイズのデータごとに、ランダムアクセスが行われるデータであるか否かを示す情報を判断情報として指定する形態であってもよい。上述のページテーブルを設定する場合、アクセス制御部１１１は、ランダムアクセスが行われるデータであることを示す判断情報が指定された所定サイズのデータについては、第２アクセスで読み書きを行うと判断し（この判断処理が入る点で上述の第１実施形態と相違する）、該所定サイズのデータに対応する１以上のページに対しては、第２アクセスで読み書きを行うことを示すアクセス情報を設定する。また、ＯＳ（情報処理装置１）は、アプリケーションが、上述の判断情報を指定するためのインタフェース部（ＡＰＩ）を有する形態であってもよい。
【００４７】
（第１実施形態の変形例４）
例えば上述の第２メモリ３０は不揮発メモリであり、上述のヒント情報は、第１データに含まれる所定サイズのデータごとに、第２メモリ３０に保持させておきたいデータを示す永続データであるか否かを示す情報を判断情報として指定する形態であってもよい。上述のページテーブルを設定する場合、アクセス制御部１１１は、永続データであることを示す判断情報が指定された所定サイズのデータについては、第２アクセスで読み書きを行うと判断し（この判断処理が入る点で上述の第１実施形態と相違する）、該所定サイズのデータに対応する１以上のページに対しては、第２アクセスで読み書きを行うことを示すアクセス情報を設定する。また、ＯＳ（情報処理装置１）は、アプリケーションが、上述の判断情報を指定するためのインタフェース部（ＡＰＩ）を有する形態であってもよい。
【００４８】
（第１実施形態の変形例５）
例えば上述のヒント情報は、第１データに含まれる所定サイズのデータごとに、近々アプリケーションが利用するデータであることを示す情報を判断情報として指定する形態であってもよい。近い将来プロセッサ１０によりデータが使われるので、アプリケーションによりデータへのアクセスが開始される前に、プロセッサコア１０１に近い場所に該データを移動させておくことで、データアクセスを高速化できる。この際に、データが上述の第１アクセスで読み書きを行う場合と上述の第２アクセスで読み書きを行う場合とで異なる場所へデータを移動させる。データが、上述の第１アクセスで読み書きを行うことを示すアクセス情報に対応付けられた１以上のページに含まれる場合は、該データに対応する１以上のページに対して、アプリケーションによる実際のアクセスが開始される前に、スワップ処理でページを第２メモリ３０から第１メモリ２０へ転送する処理を開始する。一方で、データが、上述の第２アクセスで読み書きを行うことを示すアクセス情報に対応付けられた１以上のページに含まれる場合は、該データに対応する１以上のキャッシュライン（プロセッサ１０が有するキャッシュメモリに保持される単位情報）に対して、アプリケーションによる実際のアクセスが開始される前にキャッシュラインをプロセッサ１０が有するラストレベルキャッシュへ転送を開始する。要するに、上記判断情報は、所定サイズのデータごとに、該判断情報をアプリケーションから受け取った後にアクセスが行われることを示す情報を含み、アクセス制御部１１１は、所定サイズのデータが、第１アクセスで読み書きを行うことを示すアクセス情報に対応付けられた１以上のページに対応する場合は、アプリケーションによるアクセスが開始される前に、該データに対応する１以上のページを第１メモリ２０へ転送する処理を開始し、所定サイズのデータが、第２アクセスで読み書きを行うことを示すアクセス情報に対応付けられた１以上のページに対応する場合は、アプリケーションによるアクセスが開始される前に、該データに対応する１以上のキャッシュラインをプロセッサ１０が有するキャッシュメモリ（ラストレベルキャッシュ）へ転送する処理を開始する形態であってもよい。また、ＯＳ（情報処理装置１）は、アプリケーションが、上述の判断情報を指定するためのインタフェース部（ＡＰＩ）を有する形態であってもよい。
【００４９】
（第１実施形態の変形例６）
例えば上述のヒント情報は、第１データに含まれる所定サイズのデータごとに、データの書き換え頻度を示す情報を判断情報として指定する形態であってもよい。上述のページテーブルを設定する場合、アクセス制御部１１１は、基準値未満の書き換え頻度を示す判断情報が指定された所定サイズのデータについては、第２アクセスで読み書きを行うと判断し（この判断処理が入る点で上述の第１実施形態と相違する）、該所定サイズのデータに対応する１以上のページに対しては、第２アクセスで読み書きを行うことを示すアクセス情報を設定する。また、ＯＳ（情報処理装置１）は、アプリケーションが、上述の判断情報を指定するためのインタフェース部（ＡＰＩ）を有する形態であってもよい。
【００５０】
（第２実施形態）
次に、第２実施形態を説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。本実施形態では、上述のページテーブル（対応情報）において、第２アクセスで読み書きを行うことを示すアクセス情報に対応付けられたページのサイズは、第１アクセスで読み書きを行うことを示すアクセス情報に対応付けられたページのサイズよりも大きい。つまり、第２ページのページサイズは、第１ページのページサイズよりも大きい。以下、具体的な内容を説明する。
【００５１】
大容量不揮発メモリの登場で利用するメモリサイズが大きくなると、ＴＬＢ(Translation  Lookaside  Buffer)へのアクセスのミス（以下、「ＴＬＢミス」と称する場合がある）の増加によって性能への影響が大きくなることが新たな課題になる。ＴＬＢとは、上述のページテーブルのエントリ（ページテーブルの単位となるデータ（図５の例では行単位のデータ））のキャッシュ（プロセッサ１０内部に保持される、対応情報の一部のコピー（複製）であると考えてもよい）であり、プロセッサ１０内にページテーブルのエントリがキャッシュされていれば、アドレス変換を高速に行うことができる。しかし、キャッシュしたいページテーブルのエントリの数が増えてＴＬＢのエントリ数に収まらなくなるとＴＬＢミスが頻発し、ＴＬＢミスを解決するためのページテーブルへのアクセスが必要になる。このページテーブルへのアクセスなどが新たなオーバヘッドになり、アプリケーションの性能を阻害する。大容量不揮発メモリを利用してメモリサイズが大きくなると、管理する必要のあるデータが増大し、ページテーブルのサイズが大きくなるので、ＴＬＢミスが増加してしまう。データベースアプリケーションによるデータベース操作などで、例えば数バイトのアクセス単位の細かいアクセスがランダムに起こり、各ページに対して数バイト程度しか使わないような場合、その数バイトのアクセスごとにＴＬＢのエントリが必要になり、すぐにＴＬＢミスが頻発することになる。
【００５２】
そこで、本実施形態では、アクセスローカリティの低いページ（第２ページ）のサイズを大きくすることで上記問題を解消する。ページサイズを大きくすれば、必要なページテーブルのエントリ数は減るので、ＴＬＢミスが頻発することも防止できる。しかし、ページサイズは大きければ必ずしもよいわけではない。従来型の仮想記憶方式などで第１アクセスしか利用できない場合を想定すると、アプリケーションが、ページサイズの大きいページ内の数バイトのみを利用する場合、ページサイズが大きいほど無駄なデータ転送が増えてしまう。つまり、スワップ処理に伴うデータ転送量（メモリ間のデータ転送量）に対する第１メモリ２０のアクセス量が小さくなってしまう。そのため、ページサイズを大きくするページを絞り込む必要がある。
【００５３】
本実施形態では、アクセスローカリティが低い第２ページは、第２メモリ３０に対して直接アクセスとしているため、スワップ処理に伴って発生するデータ転送はない。したがって、アクセスローカリティが低い第２ページはページサイズが大きいことによるペナルティはない。そのため、このようなアクセスローカリティが低いデータのアクセスは、第２メモリ３０に対して直接行うと同時に、アクセスローカリティの高いデータよりも大きいページサイズで管理する。すなわち、上述のページテーブルにおいて、第２アクセスで読み書きを行うことを示すアクセス情報に対応付けられたページのサイズ（第２ページのサイズ）は、第１アクセスで読み書きを行うことを示すアクセス情報に対応付けられたページのサイズ（第１ページのサイズ）よりも大きい。第１ページのサイズは第１ページサイズで管理され、第２ページのサイズは、第１ページサイズよりも大きい第２ページサイズで管理される。第１ページサイズは、例えば４ＫＢなどのＯＳの通常のページサイズである。第２ページサイズは、４ＭＢや４ＧＢなどの第１ページサイズよりも大きいサイズであり、第１ページサイズの倍数になっていることが望ましい。
【００５４】
また、アクセス制御部１１１は、第１データを構成する全てのページのサイズを第２ページサイズに設定し、第１ページの読み書きが行われたときに（第１アクセスで読み書きが行われたときに）、該第１ページのページサイズを、第２ページサイズから第１ページサイズに変更することもできる。つまり、第１アクセスでアクセスされる第２メモリ３０上のデータ（第１ページに対応するデータ）も、実際にアクセスされるまでは第２ページサイズで管理されていてもよい。そして、第１アクセスで実際にアクセスが開始されるときに、第１ページサイズでの管理に切り替えてもよい。その際、それまで第２ページサイズで管理されていたページ（第２ページサイズで管理されていた第１ページ）は、それぞれが第１ページサイズを示す複数のページに分割される。例えば第１ページサイズが４ＫＢで、第２ページサイズが４ＭＢであった場合、１つの４ＭＢページは、１つのページサイズが４ＫＢの１０２４ページに分割されるという具合である。
【００５５】
また、例えば上述のページテーブルを利用して仮想アドレス（ページ番号）を物理アドレスへ変換するときに、図８に示すような、第１ページサイズで管理するページテーブル（説明の便宜上、「第１ページテーブル」と称する）と第２ページサイズで管理するページテーブル（説明の便宜上、「第２ページテーブル」と称する）で同時に変換処理を行い、その結果として、対応する物理アドレス（ページ）が２つ見つかる場合がある。一つは、第１ページサイズのページで、他の一つは第２ページサイズのページである。図８の例では、第２メモリ３０上のオフセットが「６」の第１ページサイズの物理アドレスと、第２メモリ３０上のオフセットが「０」の第２ページサイズの物理アドレスとが得られる場合などが想定される。この場合は、第２メモリ３０上のオフセットが「０」の第２ページサイズの物理アドレスに対応するページは第１アクセスでのアクセス対象になっている（「Ｎｏ」を示すアクセス情報が対応付けられている）ので、２つのページが検索されても第１ページサイズで管理するページテーブルでの変換結果が優先される。すなわち、変換結果は、第２メモリ３０上のオフセットが「６」の第１ページサイズの物理アドレスとなる。そして、第１アクセスでアクセスされる。なお、図８のページテーブルは一例であり、複数のページサイズを複数のページテーブルで管理してもよいし、複数のページサイズを一つのページテーブルで管理してもよい。
【００５６】
要するに、上述のページテーブル（対応情報）は、第１ページサイズでページを管理する第１ページテーブル（第１対応情報）と、第１ページサイズよりも大きい第２ページテーブル（第２対応情報）とを含む形態であってもよい。第１ページテーブルは、第１ページサイズの複数のページごとに、仮想アドレスと、物理アドレスと、上述のアクセス情報とを少なくとも対応付けている。また、第２ページテーブルは、第２ページサイズの複数のページごとに、仮想アドレスと、物理アドレスと、上述のアクセス情報とを少なくとも対応付けている。アクセス制御部１１１は、アプリケーションからアクセスが要求されたデータに割り当てられた仮想アドレスを物理アドレスへ変換するための変換処理を、第１ページテーブルおよび第２ページテーブルの両方を使用して行い、第１ページテーブルを用いた変換処理および第２ページテーブルを用いた変換処理の両方から、対応する物理アドレスが得られた場合は、第１ページテーブルを用いた変換処理によって得られた物理アドレスを変換結果などとすることができる。
【００５７】
以上のようにして、第２アクセスでアクセスされるページ（第２ページ）のページサイズを大きくすることで、ページテーブルのエントリの数を抑えることができる（ＴＬＢミスを減らすことができる）。さらに、第２ページのページサイズを大きくして必要なページテーブルのエントリ数を抑えることができたので、それを行った上で、ＴＬＢミスを所定の値に抑えられる範囲で（あるいはページテーブルのサイズを所定の大きさに抑えられる範囲で）、第１アクセスでアクセスされる第１ページのページサイズを積極的に小さくすることもできる。この場合の第１ページのページサイズは既存のＯＳが一般的に管理する４ＫＢなどよりも小さいサイズであり、例えば、１ＫＢや５１２バイト、２５６バイト、１２８バイト、６４バイト、３２バイトなどである。ページのサイズはプロセッサ１０のＬ１キャッシ、Ｌ２キャッシュ、Ｌ３キャッシュ、あるいは、ＬＬＣ(ラストレベルキャッシュ)のキャッシュラインサイズなどであってもよい。
【００５８】
本実施形態においても、これまでの実施形態と同様に、読み書きの対象となるページがアクセスローカリティの高いページ（第１ページ）の場合は第１アクセスを実行し、読み書きの対象となるページがアクセスローカリティの低いページ（第２ページ）の場合は第２アクセスを実行する。見方を変えれば、第２メモリ３０上の第１データの読み書きを行う場合、第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０が第１メモリ２０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の上記割合よりも大きくなるように、第１アクセスと、第２アクセスと、を実行する。以上の説明に加えて、アクセス制御部１１１は、ＴＬＢミスの回数が所定値以下となる範囲（アプリケーションの速度性能を担保できる範囲）で、第１ページのページサイズを第１ページサイズよりも小さい値に設定することもできる。ページサイズを小さくできれば、ページ内で利用するデータの割合は増えるので、無駄なデータ転送に伴う時間や電力が削減でき、第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０が第１メモリ２０に対してデータの読み書きを行う量の割合をさらに大きくすることができる。また、その結果、第１メモリ２０と第２メモリ３０の消費電力の合計を小さくすることができる。
【００５９】
また、第１アクセスでアクセスされるデータの大きさ（第１ページの数）はアプリケーションごとに異なる。第１ページの数が所定値より大きい場合は、第２ページのページサイズを大きくしても、ある程度システム全体のページ数（第１ページの数と第２ページの数との合計）は大きくなる。そのため、ＴＬＢミスを防止するためにはページサイズもそこまで積極的には小さくできない。しかし、第１ページの数が所定値より小さい場合は、第２ページのページサイズを大きくすれば、全体のページ数は比較的小さくすることができるので、ＴＬＢミスを発生しない範囲で第１ページのページサイズを小さくすることもできる。例えば第１ページのページサイズを、１ＫＢ、５１２バイト、２５６バイト、１２８バイト、６４バイト、３２バイトなどに設定することができる。ページのサイズはプロセッサ１０のＬ１キャッシ、Ｌ２キャッシュ、Ｌ３キャッシュ、あるいは、ＬＬＣ(ラストレベルキャッシュ)のキャッシュラインサイズなどであってもよい。
【００６０】
例えば情報処理装置１がサポートするページサイズが３つあり、ページサイズが大きい順番に、第３ページサイズ、第２ページサイズ、第１ページサイズであるとする。例えば、第３ページサイズは４ＭＢ、第２ページサイズは４ＫＢ、第１ページサイズは５１２バイトなどであってもよい。ページサイズはページごとに選択可能な場合に、第２ページは第３ページサイズで管理され、第１ページは少なくとも第１ページサイズあるいは第２ページサイズでの管理が選択可能で、第１ページの数が所定値以上の場合は、第２ページサイズで管理し、第１ページの数が所定値より小さい場合は、第１ページサイズで管理することもできる。つまり、上述のページテーブルで管理されるページは、異なるページサイズで管理され、第２ページは第３ページサイズで管理され、第１ページは、第３ページサイズよりも小さい第２ページサイズまたは第２ページサイズよりも小さい第１ページサイズで選択的に管理される形態であってもよい。アクセス制御部１１１は、第１ページの数が所定値以上の場合は、第１ページのページサイズを第２ページサイズに設定し（第２ページサイズで管理し）、第１ページの数が所定値未満の場合は、第１ページのサイズを第１ページサイズに設定する（第１ページサイズで管理する）こともできる。上記所定値とは、例えば、第１メモリ２０（ＤＲＡＭ）の容量の何倍かなどで表されてもよいし、その前後でＴＬＢミス率の変化点になるデータサイズが選ばれてもよいし、当然これに限定されるわけではない。以上の管理方法はＯＳの仮想記憶が前提の情報処理装置１にもメモリモジュール５０にもその他の実施形態にも適用可能である。
【００６１】
（第３実施形態）
次に、第３実施形態を説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。本実施形態では、第１データを処理する第１処理を実行するための処理期間内の第１期間においては、該第１データを構成する全てのページを第２ページとして設定し、第１期間における第２メモリ３０に対するデータの読み書きの状況に基づいて、第２ページを第１ページに切り替える。以下、具体的な内容を説明する。
【００６２】
これまでの実施形態では、第１データを処理するアプリケーションが、ヒント情報をＯＳやコントローラ６０に指定したが、ＯＳやコントローラ６０がメモリアクセスを監視し、メモリアクセスの統計情報（処理期間内の第１期間（処理期間の一部であってもよいし全部であってもよい）において、どのデータが何回アクセスされたかなどを示す情報）などから、ヒント情報を自動生成することもできる。
【００６３】
説明の便宜上、図７の構成を前提として説明するが、これに限られるものではない。コントローラ６０は第１メモリ２０と第２メモリ３０のメモリアクセスを制御するので、どのようなメモリアクセスが行われているかを監視し記録することができる。そのため、例えば、最初は第２メモリ３０上の第１データを構成する全てのページを第２ページとして設定しておき、アプリケーションを実行する。アプリケーションの実行中の任意のタイミングあるいはアプリケーションの終了時に、コントローラ６０は、そこまでの（第１期間内の）メモリアクセスの状況を取得し、そのメモリアクセスの状況から求められる統計情報に基づいて、第１期間内の利用回数が閾値以上のページを、第２ページから第１ページに切り替えることができる。つまり、コントローラ６０（アクセス制御部１１１）は、第２メモリ３０上の第１データを構成する複数のページのうち、第１期間において読み書きされた回数が閾値以上のページを、第２ページから第１ページに切り替える（例えば上述のページテーブルにおいて、該ページに対応するアクセス情報を「Ｎｏ」を示すアクセス情報に設定する）ことができる。なお、この切り替えのタイミングは任意であり、アプリケーションの実行中に切り替えてもよいし、次にアプリケーションを実行する際などのタイミングで切り替えてもよい。
【００６４】
なお、統計情報とは、例えば第１データを構成する複数のページごとのアクセス頻度である。ページ内のページデータは、プロセッサ１０などの外部装置のキャッシュラインのサイズなどの単位でアクセスされるが、ページ内でアクセスされるページデータの数や、ページ内のページデータが何回アクセスされるかなどを示す情報（上述の第１期間におけるページの利用回数を示す情報）をアクセス頻度とすることができる。この場合、外部装置４０（プロセッサ１０）が第２メモリ３０の任意のページのデータを処理する際に、コントローラ６０は、該ページの利用回数が上述の閾値より大きくなった時点で、該ページを第１メモリ２０へ転送し（スワップイン）、該ページに対応するアクセス情報を「Ｎｏ」を示すアクセス情報に切り替える（第２ページから第１ページに切り替える）。これにより、それ以降の該ページへのアクセスは、第１アクセスで行われることになる。
【００６５】
また、例えば図９に示すように、コントローラ６０は、コントローラ６０内部のメモリを示す内部メモリ７０をさらに備え、コントローラ６０は、上述の第１期間におけるデータの読み書きの結果を記録して内部メモリ７０に保存することもできる。そして、コントローラ６０は、上述の第１期間において読み書きされた回数が閾値以上のページに含まれるデータ（ページデータ）のうち、内部メモリ７０に読み書きの結果が記録されているデータを内部メモリ７０から第１メモリ２０に移動し、残りのデータを第２メモリ３０から第１メモリ２０に移動するスワップ処理を行うこともできる。この例では、コントローラ６０は、第１データを構成する複数のページのうちの任意のページの利用回数が上述の閾値以上になった場合は、該ページを第１メモリ２０へ転送する。この転送の際に、コントローラ６０は、該ページ内のページデータのうち、内部メモリ７０に保存されていたページデータは内部メモリ７０から第１メモリ２０へ転送し、内部メモリ７０に保存されていない残りのデータは第２メモリ３０からから第１メモリ２０へ転送し、該ページを第２ページから第１ページへ切り替える（該ページのアクセスを第２アクセスから第１アクセスへ切り替える）。
【００６６】
また、第１データを構成するページごとのアクセス頻度などの統計情報は、すべてのページに対して取得する必要はない。例えば、あるメモリ領域の範囲内で数個のページをサンプリングし（選び）、その結果に基づいてそのメモリ領域は第１アクセスか第２アクセスか判定してもよい。例えば第１期間において読み書きされた回数が閾値以上のページが多ければ、そのメモリ領域は第１アクセスと判定してもよい。
【００６７】
また、主に上述の第１実施形態の変形例で説明した様々なヒント情報について、コントローラ６０が学習して自動生成してもよい。また、本実施形態ではコントローラ６０による学習の例を述べたが、学習はＯＳによって行われてもいいのは言うまでもない。すなわち、本方式はＯＳの仮想記憶が前提の情報処理装置１にもその他の実施形態でも適用可能である。また、学習は機械学習などによって行われてもよい。
【００６８】
要するに、アクセス制御部１１１（コントローラ６０またはＯＳの機能）は、第１データを処理する第１処理を実行するための処理期間内の第１期間においては、第１データを構成する全てのページを第２ページとして設定し、第１期間における第２メモリ３０に対するデータの読み書きの状況に基づいて、第２ページを第１ページに切り替えることもできる。より具体的には、アクセス制御部１１１は、第１データを構成する複数のページのうち、第１期間において読み書きされた回数が閾値以上のページを、第２ページから第１ページに切り替えることができる。また、処理装置（コントローラ６０またはプロセッサ１０）内部のメモリを示す内部メモリ７０をさらに備え、アクセス制御部１１１は、第１期間におけるデータの読み書きの結果を記録して内部メモリ７０に保存し、第１期間において読み書きされた回数が閾値以上のページに含まれるデータのうち、内部メモリ７０に読み書きの結果が記録されているデータを内部メモリ７０から第１メモリ２０に移動し、残りのデータを第２メモリ３０から第１メモリ２０に移動する移動処理を行うことができる。
【００６９】
（第４実施形態）
次に、第４実施形態を説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。本実施形態では、第２メモリ３０は不揮発メモリであり、アクセス制御部１１１は、書き込みの対象となるページが第１ページの場合は、該ページを第１メモリ２０に移動するスワップ処理（移動処理）を行った後に、第１メモリ２０上に移動した該ページに対してデータの書き込みを行うとともに、該ページのコピーを示すコピーページを第２メモリ３０上に残し、第２メモリ３０上のコピーページに対しても同じデータの書き込みを行う。より具体的には、アクセス制御部１１１は、書き込みの対象となるデータが第２メモリ３０（不揮発メモリ）に保存すべきデータ（永続化データ）であって、かつ、該データに対応するページが第１ページの場合、該ページ（対象ページと称する）を第１メモリ２０に移動するスワップ処理を行った後に、第１メモリ２０上に移動した対象ページに対してデータ（書き込むべきデータ、更新データ）の書き込み（第１アクセスによる書き込み）を行うとともに、対象ページのコピーを示すコピーページを第２メモリ３０上に残し、第２メモリ３０上のコピーページに対しても同じデータの書き込み（第２アクセスによる書き込み）を行い、第１メモリ２０上の書き込み内容（対象ページ）を破棄することで、第２メモリ３０上の書き込み内容（書き込みが行われたコピーページ）を永続化する。以下、具体的な内容を説明する。
【００７０】
これまでの実施形態では、メインメモリと大容量ＮＶＭを組み合わせて高速な大容量メモリ空間を提供する方式を中心に説明してきた。ここでは、まず、ＤＲＡＭなどの揮発性メモリから構成されるメインメモリと大容量ＮＶＭを組み合わせて、高速で不揮発な大容量メモリ空間を提供する方法を説明する。つまり、本実施形態では、メインメモリに揮発性メモリであるＤＲＡＭを利用しているのにもかかわらず、アプリケーションからは、全体として高速な不揮発メモリ装置があるように見せることができる。第１メモリ２０がＤＲＡＭなどの揮発性メモリである場合、第１アクセスで第１メモリ２０にページインしたページに対してデータをライトし、そのデータを保存するためには、ライトしたデータをページアウト（第２メモリ３０へ転送）することで不揮発メモリ（第２メモリ３０）に保存(永続化)することもできるが、より高速な方法を示す。なお、本実施形態では、書き込みの対象となるデータが第２メモリ３０（不揮発メモリ）に保存すべきデータ（永続化データ）であることを前提としたが、これから示す高速化・省電力化の方法は、その場合に限らず、これまでの実施形態で説明してきた、メインメモリと大容量ＮＶＭを組み合わせて高速な大容量メモリ空間を提供するより汎用性の高い方式に対して適用できることは言うまでもない。例えば、ページアウトの処理は、データを永続化する必要のない場合でも、第１アクセスを利用する際のスワップ処理では普通に発生することなので、後術するページアウトに掛かる処理時間と電力を削減するために第２メモリ３０へ同時にライトする方法は有効である。
【００７１】
高速な大容量メモリ空間を提供するために、これまでの実施形態では、読み書きの対象となるページがアクセスローカリティの高いページ（第１ページ）の場合は、第１アクセスを実行し、読み書きの対象となるページがアクセスローカリティの低いページ（第２ページ）の場合は、第２アクセスを実行していた。見方を変えれば、第２メモリ３０上の第１データの読み書きを行う場合、第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０が第１メモリ２０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の上記割合よりも大きくなるように、第１アクセスと、第２アクセスと、を実行していた。本実施形態においても、この点については同じである。本実施形態では、上記に加えて、第２アクセスを活用して第１メモリ２０を効率よく利用することで、不揮発な大容量メモリ空間を高速化する。この際に、第１アクセスにより第１メモリ２０上のデータ（ライトの対象となるページデータ）へライトする際に、第２アクセスにより第２メモリ３０上の該データのコピーに対して同じ内容をライトするようにして、常に第１メモリ２０上のライトした結果（ライト結果）と第２メモリ３０上のライト結果を同じにしておけば、そのライト結果を永続化する際に、第１メモリ２０上のライト結果を破棄するだけで、該ライト結果を第２メモリ３０上に高速に保存することができる。第１アクセスにより第１メモリ２０上のデータをリードする場合は、これまで通り第１メモリ２０から該データをリードすればよい。
【００７２】
説明の便宜上、図７の構成を前提として説明するが、これに限られるものではない。第１アクセスによりライトを行う場合、ライトの対象となるページ（ライトの対象となるページデータを含むページ）を第１メモリ２０へ転送してから、該ページに対するライト（対象となるページデータの更新）を行うが、そのライトの際に、同じデータ（書き込み内容）を第２メモリ３０側にもライトする。例えば図１０に示すように、第２メモリ３０上のデータＡが保存するデータ（永続化データ）である際に、外部装置４０（プロセッサコア１０１）から、第２メモリ３０上で保存する必要があるデータＡに対してデータの書き込みを要求するライト要求が来ると、コントローラ６０は、データＡに対応するページ（対象ページ）を第１メモリ２０へ転送し、第１メモリ２０上に転送した対象ページに対してライトする。同時に、第２メモリ３０上にデータＡのコピーを残し、第２メモリ３０上に残したデータＡのコピーに対しても同じ内容をライトする。つまり、ライトされた内容を含むページが第１メモリ２０と第２メモリ３０上に同時に存在する状態を作る。後続のライト要求に対しても同じように振る舞い（つまり双方にライトする）、後続のリード要求に対してはこれまでの第１アクセスによるアクセスと同様に、コントローラ６０は、アクセスが高速な第１メモリ２０側からリードするように制御する。データを永続化する際は、第２メモリ３０へのライトが完了したあとで、第１メモリ２０上の対応するデータを破棄するだけでよい。データを破棄するとは、例えば当該データに対応するページのページテーブルの設定から、第１メモリ２０上のページ位置への変換情報を破棄することである。このように第２メモリ３０側にも随時ライトしておくことで、一連のライト処理の完了後に第１メモリ２０上のページを第２メモリ３０へ転送するよりも高速にデータの保存を行うことができる。このようにして、アプリケーションには全体として高速な不揮発メモリがあるように見せることができる。
【００７３】
図１１は、本実施形態のコントローラ６０の動作例を示すフローチャートである。図１１の例では、ステップＳ２０１において、コントローラ６０は、外部装置４０から第１ページへのアクセス要求を受信することを前提とする。次に、コントローラ６０は、第２メモリ３０上の、アクセス要求の対象となる第１ページ（以下、「対象ページ」と称する）を第１メモリ２０へ転送し、対象ページのコピー（以下、「コピーページ」と称する）を第２メモリ３０へ残すための制御を行う（ステップＳ２０２）。次に、コントローラ６０は、図１２に示すように、対象ページに対応するページ番号に対して、第１メモリ２０上の対象ページの位置を示すオフセット（第１メモリオフセット）と、第２メモリ３０上のコピーページの位置を示すオフセット（第２メモリオフセット）とを対応付けてページテーブルを設定する（ステップＳ２０３）。
【００７４】
そして、ステップＳ２０１で受信したアクセス要求がライト要求の場合（ステップＳ２０４：Ｎｏ）、コントローラ６０は、対象ページとコピーページの両方へデータをライトする（ステップＳ２０５）。ライトしたデータを保存する場合は、コントローラ６０は、図１３の（Ａ）の状態から（Ｂ）の状態になるようにページテーブルを設定する。つまり、第１メモリ２０上のページを指している第１メモリオフセットを無効（ＩＮＶＡＬＩＤ）な状態に設定する。
【００７５】
一方、ステップＳ２０１で受信したアクセス要求がリード要求の場合（ステップＳ２０４：Ｙｅｓ）、第１メモリ２０からデータをリードし（第１メモリ２０上に転送した対象ページ内のリード対象のデータを読み出し）、そのリードしたデータを外部装置４０へ返す（ステップＳ２０６）。
【００７６】
また、本実施形態では、システムの高速化をした上で、さらに省電力化を実現する。一般的に、不揮発メモリはＤＲＡＭなどの揮発性メモリに対してアクセス時の消費電力が高い。そこで、リードとライトの回数を減らすことが重要である。特にリードよりライト時の電力が高いのが特徴で、ライトをいかに減らすかが省電力化という観点で非常に重要である。
【００７７】
本実施形態においても、これまでの実施形態と同様に、読み書きの対象となるページがアクセスローカリティの高いページ（第１ページ）の場合は第１アクセスを実行し、読み書きの対象となるページがアクセスローカリティの低いページ（第２ページ）の場合は第２アクセスを実行する。見方を変えれば、第２メモリ３０上の第１データの読み書きを行う場合、第１アクセスに伴って発生する第１メモリ２０と第２メモリ３０との間のデータ転送量に対する、プロセッサ１０が第１メモリ２０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の上記割合よりも大きくなるように、第１アクセスと、第２アクセスと、を実行すると考えることができる。これは、消費電力を効率化するためでもある。つまり、アクセスローカリティの高いページへのアクセスを第１メモリ２０上で行うようにすることで、第２メモリ３０へのリードとライトを削減することができるからである。
【００７８】
そのうえで、第２メモリ３０へのライトを削減するように、第１メモリ２０と第２メモリ３０への同時ライトを制御することが重要である。図１４を例に挙げて説明する。図１４は、アプリケーションによる３つのアクセスパターンを例示している。図１４の（Ａ）は、処理期間よりも短い一定期間において、第２メモリ３０上の第１データを構成する複数のページのうちの任意の１つのページを構成する６４個のページデータの各々に対して１回ずつリードされ、該ページを構成する６４個のページデータのうちの１つのページデータに対してのみライトが行われている。つまり、リードの回数は多いがライトの回数は少ない。このような場合、ページの利用回数が閾値（例えば「４回」等）以上であれば、メモリ間のデータ転送量（第１メモリ２０と第２メモリ３０との間のデータ転送量）に対する第１メモリ２０へのアクセス量が高くなるように、該ページへのアクセスは第１アクセスで行われる（該ページは第１ページとなる）。次に、図１４の（Ｂ）は、１つのページを構成する６４個のページデータの各々に対してリードおよびライトが３回ずつ行われている。つまり、リード回数もライト回数も多く、アクセス後に一度ページアウトされるとする。このような場合、ページの利用回数が閾値（例えば「３２回」等）以上であれば、メモリ間のデータ転送量に対する第１メモリ２０へのアクセス量が高くなるように、該ページへのアクセスは第１アクセスで行われる（該ページは第１ページとなる）。また、図１４の（Ｃ）は、１つのページを構成する６４個のページデータのうち１つのページデータのみに対してリードが１回行われ、１つのページデータのみに対してライトが１回行われている。つまり、リード回数もライト回数も少ないので、このような場合はページの利用回数が閾値（例えば「３２回」等）を下回るため、メモリ間のデータ転送量に対する第１メモリ２０へのアクセス量が高くなるように、該ページへのアクセスは第２アクセスで行われる（該ページは第２ページとなる）。仮に該ページを第１アクセスとしてしまった場合には、第１メモリ２０へ転送されてプロセッサ１０でページを更新された後にページアウトされる際に１ページ分のライトが第２メモリ３０に対して行われることになってしまう。そのため、該ページのようにライトの量が小さいページについては第２アクセスで行うことで、１つのページデータのみに対するライト１回で済むので、省電力化することができる。
【００７９】
このように、第１アクセスと第２アクセスをまずは切り分ける。そのうえで、第１アクセスでアクセスを行う場合の第２メモリ３０へのライトを削減するように、第１メモリ２０と第２メモリ３０への同時ライトを制御する。図１５を例に挙げて説明する。図１５では、図１４の（Ａ）に対応する（Ａ）と、図１４の（Ｂ）に対応する（Ｂ）について、第１メモリ２０のみにライトする場合と、第１メモリ２０と第２メモリ３０へ同時にライトする場合のどちらがよいかを示している。
【００８０】
まず、（Ａ）の場合、第１アクセスにより、ライト要求の対象となるページ（対象ページ）を第１メモリ２０へ転送し、第１メモリ２０のみにライトすると、その間は第２メモリ３０へのライトはない。しかし、第１メモリ２０上でライトされたページは、スワップ処理で最終的に第２メモリ３０へ追い出される(ページアウトされる)ことも考慮する必要がある。ページアウトの時には、ページごと第２メモリ３０にライトする必要がある。図１５に示す「ページアウト」と表示された長方形は、そのページアウト時に必要な電力の量を表している。それに対して、第１メモリ２０と第２メモリ３０へ同時にライトする場合、第２メモリ３０上のコピーページに含まれるページデータのうち、書き込みの対象となるページデータ「２」に対してのみ、ライトするだけでよい。第１メモリ２０上の対象ページも更新するが、第２メモリ３０上のコピーページも同時に更新しているので第１メモリ２０上の対象ページをページアウトする（第２メモリ３０に書き戻す）必要はなく、第１メモリ２０上の対象ページを破棄すればよいからである。以上により、（Ａ）については、第１メモリ２０と第２メモリ３０へ同時にライトした方が消費電力は低くできる。
【００８１】
次に、（Ｂ）の場合、第１アクセスにより、対象ページを第１メモリ２０へ転送し、第１メモリ２０のみにライトすると、その間は第２メモリ３０へのライトはなく、第１メモリ２０上でライトされたページは、最後にスワップ処理で第２メモリ３０へ追い出される(ページアウトされる)。そのため、第２メモリ３０へのライトはページアウトのときのみである。一方で、第１メモリ２０と第２メモリ３０へ同時にライトする場合、ページアウトは不要だが、ライトの都度、第２メモリ３０へのライトが発生することになる。そのため、図１５に示すように、第２メモリ３０へのライトの量は第１メモリ２０のみにライトする場合と比較して３倍になる。以上により、（Ｂ）については、第１メモリ２０のみにライトした方が消費電力を低くできるので、こちらを選択する。
【００８２】
すなわち、コントローラ６０（アクセス制御部１１１）は、これまでの実施形態と同様の構成を前提としつつ、書き込みの対象となるページを示す対象ページが第１ページの場合は、第２メモリ３０へのデータの書き込み量が、第１アクセスによる書き込みが行われた後の対象ページを第２メモリ３０へ書き戻すときの（ページアウトするときの）データの書き込み量よりも小さくなるように、第１の書き込みまたは第２の書き込みの何れかを行う。ここでは、「第１の書き込み」は、対象ページを第１メモリ２０に移動する移動処理を行った後に、第１メモリ２０上に移動した対象ページに対してデータの書き込みを行うとともに、対象ページのコピーを示すコピーページを第２メモリ３０上に残し、第２メモリ３０上のコピーページに対しても同じデータの書き込みを行うことを指す。「第２の書き込み」は、対象ページを第１メモリ２０に移動する移動処理を行った後に、第１メモリ２０上に移動した対象ページに対してのみデータの書き込みを行う（第２メモリ３０に対するデータの書き込みは行わない）ことを指す。
【００８３】
また、以上の説明からも理解されるように、スワップアウトに要する電力を減らすことも重要である。これは、例えばＰＣＭなどの書き換え消費電力が比較的高いメモリでは特に重要である。特に、このような場合は、第１メモリ２０へページインしても、第２メモリ３０でコピーをとっておき、リードは第１メモリ２０上のデータに対して行い、ライトは第１メモリ２０上のデータと第２メモリ３０上のコピーに対して行い、当該ページがページアウトされる際には、実際にデータを第１メモリ２０から第２メモリ３０へコピーせずに、第１メモリ２０上のデータを破棄する。すなわち、コントローラ６０（アクセス制御部１１１）は、これまでの実施形態と同様の構成を前提としつつ、読み出しの対象となるページを示す読み出し対象ページが第１ページの場合は、第２メモリ３０上の読み出し対象ページを第１メモリ２０に移動する移動処理を行った後に、第１メモリ２０上に移動した読み出し対象ページからデータの読み出しを行う。また、書き込みの対象となるページを示す書き込み対象ページが第１ページの場合は、第２メモリ３０上の書き込み対象ページを第１メモリ２０に移動する移動処理を行った後に、第１メモリ２０上に移動した該書き込み対象ページに対するデータの書き込みを行うとともに、該書き込み対象ページのコピーを示すコピーページを第２メモリ３０上に残し、第２メモリ３０上のコピーページに対しても同じデータの書き込みを行う。そして、第１メモリ２０上の書き込みが行われた後の書き込み対象ページを第２メモリ３０へ追い出すときは、その書き込みが行われた後の書き込み対象ページを破棄する。
【００８４】
また、第２メモリ３０へのライトのデータ量が小さくなるように、第１メモリ２０と第２メモリ３０へ同時にライトする場合と、第１メモリ２０のみへライトする場合とを、さらに混載させて行う場合、ＭＲＡＭやＰＣＭなどではライトに掛かる消費電力が異なるため、どのような消費電力特性のＮＶＭを使うかで、混載のさせ方を変えてもよい。
【００８５】
また、メインメモリとしてＤＲＡＭを採用する場合、待機電力が課題となるため、動的にＤＲＡＭサイズを調整し、アプリケーションに応じてＤＲＡＭサイズを減らすことで、要求された速度性能を低下させずに消費電力を削減する方法を本実施形態と組み合わせることで、さらに消費電力を下げることができる。上記方法としては、例えば第１メモリ２０のうちデータの読み書きに必要な第１電力が供給される領域を示す１以上の有効領域より大きいサイズの第１データを処理する第１処理を実行するための期間内の一定期間において発生するスワップ処理の処理量を示すスワップ処理オーバヘッドが閾値以下になるよう、有効領域の数を変化させる制御を行う方法などが考えられる。これにより、アプリケーションの速度性能（プロセッサ１０の速度性能）を担保しつつ省電力化を図ることができる。このアプリケーションに応じてＤＲＡＭサイズを減らすことで要求された速度性能を低下させずに消費電力を削減する方法は、本実施形態以外のすべての実施形態とも組み合わせて利用することが可能である。
【００８６】
また、一般的に、多くのアプリケーションでライトはリードに比べると少ないので、第１メモリ２０（ＤＲＡＭ）と第２メモリ３０（ＮＶＭ）へ同時にライトする場合と、第１メモリ２０のみへライトする場合とで消費電力が少なくなるようにページ毎に考慮せずに、すべてのページに対して同時にライトするようにしてもよい。
【００８７】
また、第２メモリ３０へのライトのデータ量が小さくなるように、第１メモリ２０（ＤＲＡＭ）と第２メモリ３０（ＮＶＭ）へ同時にライトする場合と、第１メモリ２０のみへライトする場合とを、さらに混載させて行う場合、メモリのタイプによって、書き換え回数の上限が異なる。そのため、メモリの書き換え回数の上限に応じて、メモリの書き換え回数の上限が低いメモリに対しては第１メモリ２０（ＤＲＡＭ）と第２メモリ３０（ＮＶＭ）へ同時にライトするのを控えめにしたりするなど、混載のさせ方を変えてもよい。
【００８８】
このように、本実施形態では、データを更新する（あるいは保存）する方法が３つある。第１の方法は、第１アクセスにより、第１メモリ２０へ転送した対象ページへデータを書き込み、書き込みが行われた対象ページを第２メモリ３０へ戻す方法である。第２の方法は、第２アクセスにより、第２メモリ３０に対してデータの書き込みを直接行う方法である。第３の方法は、以上に説明した、第２メモリ３０上の書き込みの対象となるページ（対象ページ）が第１ページの場合は、対象ページを第１メモリ２０に移動する移動処理を行った後に、第１メモリ２０上に移動した対象ページに対するデータの書き込みを行うとともに、対象ページのコピーを示すコピーページを第２メモリ３０上に残し、第２メモリ３０上のコピーページに対しても同じデータの書き込みを行う方法である。以上の３つの方法をコントローラ６０で用途や状況に応じて使い分けることができる。具体的には、例えば処理時間を削減するためや消費電力を下げたりするために使い分けることができる。なお、図７の構成において、書き込みの対象となるデータが第２メモリ３０（不揮発メモリ）に保存すべきデータ（永続化データ）である場合、データの保存（データベースアプリケーションのコミット処理）の完了は、それぞれ、第１の方法の場合は書き込みが行われた対象ページを第２メモリ３０へ戻す書き込みが完了したことであり、第２の方法の場合は第２メモリ３０に対してデータの直接書き込みが完了したことであり、第３の方法の場合は第２メモリ３０上のコピーページに対しても行う同じデータの書き込みが完了（あるいはその後第１メモリ２０上の同じデータの破棄までが完了）したことであり、コントローラ６０は、それぞれの完了後に外部装置に完了を通知する機能（高速なコミット機能）を有していてもよい。
【００８９】
（第５実施形態）
次に、第５実施形態を説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。これまでの実施形態では、ＯＳやコントローラ６０は、ページ単位などの決まったデータサイズでデータを管理し、第２メモリ３０と第１メモリ２０との間でデータ（管理サイズのデータ）転送を行っていた。これに対して、本実施形態では、第１データに含まれる複数のデータがそれぞれ記憶される領域（複数のデータと１対１に対応する複数のメモリ領域）を単位として管理を行う。個々のデータ（ページサイズには限られない）にはＩＤが割り当てられ、ＩＤにより管理される。また、ＩＤにより管理されるデータは、データ本体と、データの特徴を示すメタデータとの組で構成される。つまり、本実施形態のＯＳやコントローラ６０は、図１６に示すような、第１データに含まれる複数のデータと１対１に対応する複数のＩＤごとに、データ本体が記憶されるメモリ領域の位置を示すメモリ領域情報と、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのかを少なくとも記述したメタデータとを対応付けたテーブル情報に基づいて、上述のページテーブルを設定することができる。
【００９０】
図１６に示すテーブル情報は、第１データに含まれる複数のデータごとに、第１アクセスで読み書きを行うのか第２アクセスで読み書きを行うのかを特定可能な特定情報（メタデータに対応）を対応付けた第２対応情報に相当すると考えることができる。そして、アクセス制御部１１１（ＯＳまたはコントローラ６０）は、上記第２対応情報に基づいて、上述のページテーブルを設定すると考えてもよい。上記第２対応情報は、上述したヒント情報の一例であると考えてもよい。
【００９１】
なお、メタデータは、対応するデータに対して、複数付加されていてもよい。図１６のメモリ領域情報とは、第２メモリ３０のうち、データ本体が格納されているメモリ領域の位置を示す情報であり、例えば先頭アドレスとサイズの組の集合などである。メタデータは、第２メモリ３０上にデータを保存あるいは確保する際にアプリケーションが設定（付加）する。図１６には、行列形式のデータである第１行列データと第２行列データがある。第１行列データのメタデータには、第２アクセスで読み書きを行うことを示すメタデータが付加されている。第２行列データのメタデータには、第１アクセスで読み書きを行うことを示すメタデータが付加されている。
【００９２】
なお、対応するデータが保存されている領域（メモリ領域情報が示す領域）中のどの領域（第１領域）からデータアクセスを開始するかを別のメタデータ（第２メタデータ）として記憶しておいてもよい。その場合、第１メタデータとして第１アクセスで読み書きを行うことを示すメタデータが付加されている場合は、アプリケーションがＩＤを指定する時などの対応するデータに対するアプリケーションによる実際のアクセスが開始される前の任意のタイミングで、ＯＳは第１領域のデータを第１メモリ２０へ転送するスワップ処理を開始することができる。また、第１メタデータとして第２アクセスで読み書きを行うことを示すメタデータが付加されている場合は、ＯＳは第１領域のデータをプロセッサ１０が有するラストレベルキャッシュへ事前にロードすることができる。このように事前にデータを転送することで第１処理をさらに高速化・省電力化することができる。
【００９３】
第２メモリ３０（ＮＶＭ）上の第１行列データと第２行列データをアプリケーションで利用する時に、ＯＳは設定されているメタデータを上述のヒント情報として利用する。つまり、メタデータの情報を基に、第１データに含まれる複数のデータごとに、第１アクセスでアクセスするか第２アクセスでアクセスするかを判定し、第１アクセスでアクセスすると判定した場合は、第１アクセスでアクセスすることを示すアクセス情報をページテーブルに設定し、第２アクセスでアクセスすると判定した場合は、第２アクセスでアクセスすることを示すアクセス情報をページテーブルに設定する。メタデータの形態は、第１実施形態の各変形例で示したような形態などであるが、それ以外の任意の形態であってもよい。また、以上の構成はＯＳの仮想記憶が前提の情報処理装置１にもメモリモジュール５０にもその他の実施形態にも適用可能である。
【００９４】
（第６実施形態）
次に、第６実施形態を説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。本実施形態では、上述の第１メモリ２０は、プロセッサ１０（あるいはコントローラ６０）内部のメモリを示す内部メモリで構成される。以下、具体的な内容を説明する。図１７は、本実施形態の情報処理装置１のハードウェア構成の一例を示す図である。図１７に示すように、情報処理装置１は、ＳｏＣ(Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ)２１０と、ＮＶＭなどで構成される第２メモリ３０と、を備える。ＳｏＣ２１０は、内部モジュールとして、プロセッサコア１０１と、上述の第１メモリ２０として機能する（メインメモリとして機能する）内部メモリ８０と、第２メモリコントローラ１０３と、を備え、これらはバス２２０を介して接続される。この例では、ＳｏＣ２１０が「処理装置」に対応している。ＳｏＣ２１０に対して、メインメモリとして、ＤＲＡＭをＳｏＣ２１０に接続する代わりに、ＤＲＡＭより高速なＳｏＣ２１０内部のメモリ（内部メモリ８０）を利用することでスワップ処理をより高速に行うことが可能になる。
【００９５】
この例では、プロセッサコア１０１はＡＲＭプロセッサなどであり、キャッシュメモリ（Ｌ１キャッシュ、Ｌ２キャッシュ）やＮＥＯＮなどの汎用（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）エンジンなどを備えている。ＳｏＣ２１０は、１つのプロセッサコア１０１を持つシングルコアの構成であってもよいし、複数のプロセッサコアを持つマルチコアの構成（マルチコアプロセッサ）であってもよい。
【００９６】
内部メモリ８０は、例えばＳＲＡＭなどから構成されるが、これに限らず、例えばＭＲＡＭなどの高速な不揮発メモリであってもよい。内部メモリ８０はオンチップメモリであるためにＳｏＣ２１０に接続されるメモリ（第１メモリ２０や第２メモリ３０）よりもアクセスに掛かるレイテンシも消費電力も低くすることができる。
【００９７】
このような、ＤＲＡＭの大きい待機電力を削減できる利点があることや、ＤＲＡＭを持たないことで情報処理装置１に必要な部品数を削減できる利点などの観点からもＤＲＡＭを持たない、ＤＲＡＭレスなシステム構成の情報処理装置１の形態であってもよい。このようなシステムにおいても、図１７に示す内部メモリ８０を上述の第１メモリ２０とすることで、これまで説明してきた方式が実現可能である。
【００９８】
要するに、情報処理装置１は、複数のページで構成される第１データを処理する第１処理を実行する処理装置（この例ではＳｏＣ２１０）と、内部メモリ８０と、データの読み書きの速度を示すアクセス速度が内部メモリ８０よりも低く、かつ、第１データを記憶する第２メモリ８０と、を備え、第１データを構成する複数のページは、第１処理を実行するための処理期間よりも短い一定期間において、読み書きされる回数が閾値以上の第１ページと、読み書きされる回数が閾値未満の第２ページと、を含む。そして、処理装置は、読み書きの対象となるページが第１ページの場合は、該ページを内部メモリ８０に移動する移動処理を行った後に、内部メモリ８０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページが第２ページの場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行するアクセス制御部１１１を有する形態であってもよい。
【００９９】
見方を変えれば、上記アクセス制御部１１１は、第１データの読み書きを行う場合、第２メモリ３０上のページを内部メモリ８０に移動する移動処理を行った後に、内部メモリ８０上に移動した該ページの読み書きを行う第１アクセスに伴って発生する内部メモリ８０と第２メモリ３０との間のデータ転送量に対する、外部装置４０（処理装置）が内部メモリ８０に対してデータの読み書きを行う量の割合が、全ての第１データの読み書きを第１アクセスで行う場合の割合よりも大きくなるように、第１アクセスと、第２メモリ３０上のデータの読み書きを直接行う第２アクセスと、を実行する形態であってもよいと考えることもできる。
【０１００】
なお、内部メモリ８０の容量は、ＤＲＡＭで構成されるメインメモリなどよりは小さいことが一般的である。この場合、基本的には、読み書きの対象となるページが第１ページの場合は、該ページを内部メモリ８０に移動する移動処理を行った後に、内部メモリ８０上に移動した該ページの読み書きを行う第１アクセスを実行し、読み書きの対象となるページが第２ページの場合は、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行する。しかし、内部メモリ８０が小さすぎるために、内部メモリ８０と第２メモリ３０との間の所定の期間内のデータの転送量が所定値より大きくなってしまった場合、データ転送量が多いために、処理時間や消費電力が大きくなってしまう。その場合には、読み書きの対象となるページが第１ページとなる一部のページについて、第１ページであっても第２ページとして扱い、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスを実行する。このようにすることで、処理時間や消費電力の大幅な増加を抑制することができる。内部メモリ８０の場合はサイズが小さいので、このように内部メモリ８０と第２メモリ３０の間のデータ転送量を観測して、第２アクセスの対象となるページを増やすことで上記データ転送量を減らすことができる。データ転送量が所定値より小さくなるまで第２アクセスの対象となるページを１つずつ増やし、データ転送量を所定値と比較することを、データ転送量が所定値より小さくなるまで繰り返してもよい。なお、この方法は、第１メモリが内部メモリの場合に限定されるわけではなく、これまでの実施例についても同様に適用可能であるのは言うまでもない。
【０１０１】
要するに、アクセス制御部１１１は、上記移動処理に伴って発生する、第１メモリ２０(内部メモリ８０も含む)と第２メモリ３０との間のデータ転送量が所定値よりも大きい場合は、データ転送量が所定値を下回るまで、読み書きの対象となるページが第１ページであっても第２アクセスを実行することができる。
【０１０２】
また、上記アクセス制御部１１１は、第１データの読み書きを行う場合、内部メモリ８０の消費電力と第２メモリ３０の消費電力の合計が、第２メモリ３０上の全ての第１データの読み書きを、第２メモリ３０上の第１データに含まれるページを内部メモリ８０に移動する移動処理を行った後に、内部メモリ８０上に移動した該ページの読み書きを行う第１アクセスで行う場合の消費電力よりも小さくなるように、第１アクセスと、第２メモリ３０に対してデータの読み書きを直接行う第２アクセスと、を実行する形態であってもよいと考えることもできる。
【０１０３】
本実施形態の構成はＯＳの仮想記憶が前提の情報処理装置１にもメモリモジュール５０にもその他の実施形態にも適用可能である。
【０１０４】
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１０５】
また、上述の各実施形態および各変形例は任意に組み合わせることが可能である。
【符号の説明】
【０１０６】
１      情報処理装置
１０    プロセッサ
２０    第１メモリ
３０    第２メモリ
４０    外部装置
５０    メモリモジュール
６０    コントローラ
８０    内部メモリ
１０１  プロセッサコア
１０２  第１メモリコントローラ
１０３  第２メモリコントローラ
１１１  アクセス制御部
２１０  ＳｏＣ
２２０  バス
【図１】
2017138852.tif 000003
【図２】
2017138852.tif 000004
【図３】
2017138852.tif 000005
【図４】
2017138852.tif 000006
【図５】
2017138852.tif 000007
【図６】
2017138852.tif 000008
【図７】
2017138852.tif 000009
【図８】
2017138852.tif 000010
【図９】
2017138852.tif 000011
【図１０】
2017138852.tif 000012
【図１１】
2017138852.tif 000013
【図１２】
2017138852.tif 000014
【図１３】
2017138852.tif 000015
【図１４】
2017138852.tif 000016
【図１５】
2017138852.tif 000017
【図１６】
2017138852.tif 000018
【図１７】
2017138852.tif 000019