(57)【特許請求の範囲】
【請求項１】
揮発性の主記憶装置と、
不揮発性の主記憶装置と、
主記憶装置の各々が揮発性であるか不揮発性であるかを示す属性を記憶し、主記憶装置の各々に関連付けて、さらに、リード／ライトの区別と、ランダムアクセス／シーケンシャルアクセスの区別と、ブロックサイズと、の組み合わせであるアクセスパターンごとにアクセス性能を記憶する特性情報記憶手段と、
前記アクセスパターンと前記アクセス性能との組み合わせと、前記属性と、を含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する主記憶確保手段と、を備える、
メモリ割当装置。
【請求項２】
揮発性の主記憶装置と、
不揮発性の主記憶装置と、
主記憶装置の各々が揮発性であるか不揮発性であるかを示す属性を記憶し、主記憶装置に関連付けて、さらに、寿命の長さを記憶する特性情報記憶手段と、
前記属性と前記寿命の長さとを含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する主記憶確保手段と、を備える、
メモリ割当装置。
【請求項３】
前記特性情報記憶手段は、主記憶装置に関連付けて、さらに、アクセス性能を記憶し、
前記主記憶確保手段は、前記アクセス性能をさらに含む前記要件を指定した前記記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、当該要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する請求項２のメモリ割当装置。
【請求項４】
前記特性情報記憶手段は、主記憶装置に関連付けて、さらに、リード／ライトの区別と、ランダムアクセス／シーケンシャルアクセスの区別と、ブロックサイズと、の組み合わせであるアクセスパターンごとに前記アクセス性能を記憶し、
前記主記憶確保手段は、前記アクセスパターンと前記アクセス性能との組み合わせをさらに含む前記要件を指定した前記記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、当該要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する請求項３のメモリ割当装置。
【請求項５】
主記憶装置の各々が揮発性あるいは不揮発性であることを、主記憶装置にアクセスして判別し、判別結果を前記特性情報記憶手段に登録する初期設定手段を、さらに、備える請求項１乃至４の何れか１項のメモリ割当装置。
【請求項６】
コンピュータが、
揮発性、または、不揮発性主記憶装置の各々が、揮発性であるか不揮発性であるかを示す属性を特性情報記憶手段に記憶し、
主記憶装置に関連付けて、さらに、リード／ライトの区別と、ランダムアクセス／シーケンシャルアクセスの区別と、ブロックサイズと、の組み合わせであるアクセスパターンごとにアクセス性能を前記特性情報記憶手段に記憶し、
前記アクセスパターンと前記アクセス性能との組み合わせと、前記属性と、を含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する、
メモリ割当方法。
【請求項７】
コンピュータが、
揮発性、または、不揮発性主記憶装置の各々が、揮発性であるか不揮発性であるかを示す属性を特性情報記憶手段に記憶し、
主記憶装置に関連付けて、さらに、寿命の長さを前記特性情報記憶手段に記憶し、
前記属性と、前記寿命の長さとを含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する、
メモリ割当方法。
【請求項８】
コンピュータが、
前記特性情報記憶手段に記憶する処理において、主記憶装置に関連付けて、さらに、アクセス性能を前記特性情報記憶手段に記憶し、
前記領域を確保する処理において、前記アクセス性能をさらに含む前記要件を指定した前記記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、当該要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する請求項７のメモリ割当方法。
【請求項９】
コンピュータが、
前記特性情報記憶手段に記憶する処理において、主記憶装置に関連付けて、さらに、リード／ライトの区別と、ランダムアクセス／シーケンシャルアクセスの区別と、ブロックサイズと、の組み合わせであるアクセスパターンごとに前記アクセス性能を前記特性情報記憶手段に記憶し、
前記領域を確保する処理において、前記アクセスパターンと前記アクセス性能との組み合わせをさらに含む前記要件を指定した前記記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、当該要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する請求項８のメモリ割当方法。
【請求項１０】
コンピュータが、
主記憶装置の各々が揮発性あるいは不揮発性であることを、主記憶装置にアクセスして判別し、判別結果を前記特性情報記憶手段に登録する請求項６乃至９の何れか１項のメモリ割当方法。
【請求項１１】
揮発性の主記憶装置と、不揮発性の主記憶装置とを備えたコンピュータに、
主記憶装置の各々が、揮発性であるか不揮発性であるかを示す属性を特性情報記憶手段に記憶させる処理と、
主記憶装置に関連付けて、さらに、リード／ライトの区別と、ランダムアクセス／シーケンシャルアクセスの区別と、ブロックサイズと、の組み合わせであるアクセスパターンごとにアクセス性能を前記特性情報記憶手段に記憶させる処理と、
前記アクセスパターンと前記アクセス性能との組み合わせと、前記属性と、を含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する処理と、を実行させるプログラム。
【請求項１２】
揮発性の主記憶装置と、不揮発性の主記憶装置とを備えたコンピュータに、
主記憶装置の各々が、揮発性であるか不揮発性であるかを示す属性を特性情報記憶手段に記憶させる処理と、
主記憶装置に関連付けて、さらに、寿命の長さを前記特性情報記憶手段に記憶させる処理と、
前記属性と前記寿命の長さとを含む要件を指定した記憶域確保要求が入力されると、前記特性情報記憶手段を検索して、前記要件を満たす主記憶装置を特定し、特定された主記憶装置から領域を確保する処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ割り当て装置、メモリ割当方法、および、プログラム、特に、主記憶装置として揮発性メモリと不揮発性メモリの両者を使用するメモリ割り当て装置、メモリ割当方法、および、プログラムに関する。
【背景技術】
【０００２】
低速であるものの容量あたりのコストに優れ、不揮発性の特性を持つHDD(Hard Disk Drive)などは、データの永続性保証が可能な補助記憶装置として使用されている。一方、容量あたりのコストは高価であるが、高速アクセスが可能なDRAM（Dynamic Random Access Memory）は揮発性の特性を持つため、データの永続性を保証しない主記憶装置として利用されている。
【０００３】
補助記憶装置と主記憶装置は、その大きな特性の差違から、アプリケーション側が意識して別の記憶デバイスとして管理されている。主記憶装置はCPU（Central Processing Unit）の同期命令であるload/store命令、あるいは、MOV命令によってアクセスされている。一方、補助記憶装置はデバイスドライバを介して、DMA（Direct Memory Access）による非同期処理が行われていた。その理由は、比較的低速なI/O処理時間をCPU使用時間から隠ぺいするためである。
【０００４】
近年では、NAND フラッシュや、相変化メモリなどの新たな不揮発性メモリ（以降、NV（Non-Volatile）メモリと略記）が出現している。これらの新たなNVメモリは、高速ランダムアクセス性能を持ちながら、低コストかつ不揮発性、すなわちデータの永続保持特性、を合わせ持ち、CPUの同期命令であるload/store命令、あるいは、MOV命令によってアクセスされる。
【０００５】
新たなNVメモリはHDD等の補助記憶装置に取って代わりつつあり、コンピュータ等の情報処理装置内で、DRAMのような揮発性メモリと、新たなNVメモリが主記憶装置として混在していくことが想像される。
【０００６】
特許文献１は、異なるレイテンシ時間を持つメモリ装置を有するシステムを開示する。このシステムは、頻繁にアクセスされるメモリアドレスを、物理メモリの最短レイテンシ時間領域に割り当てる。
【０００７】
この為、このシステムは、例えば、最初に最短レイテンシ時間グループから優先的にメモリを割り当てることによって、オペレーティングシステムが、このマッピングを利用できるようにする。また、メモリが満杯である場合には、オペレーティングシステムは、メモリのどのエリアが最も頻繁にアクセスされるかを監視し、次に、より短いレイテンシ時間グループとより長いレイテンシ時間グループとの間であちこちにデータを移動させる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００６-５００６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
情報処理装置内において、主記憶装置は、ほぼ単一階層の記憶域として扱われてきた。つまり、主記憶装置に用いられるメモリデバイスは、物理的な距離、すなわちレイテンシの違いが意識されることは有っても、基本的に単一特性をもつものとして扱われてきた。アプリケーション側は、メモリデバイスの特性を区別していないのが一般的であった。このような技術の例は、特許文献１のシステムや、NUMA（Non-Uniform Memory Access）システムで見られる。
【００１０】
今後、新たなNVメモリの性能等が、DRAM等にいっそう近づいてくると、NVメモリを、補助記憶装置としてではなく、主記憶装置として扱いたいというニーズが生まれること予想される。この場合、アプリケーションに主記憶装置のメモリ領域を割り当てる際に、アプリケーションが要求する特性や性能を担保することが必要となる。しかし、特許文献１のシステムのようにオペレーティングシステムによる推定に基づく割当方法は、アプリケーション側の要求にきめ細かく対応するのは困難である。
【００１１】
本発明は、上記課題を解決し、主記憶としてDRAM等の揮発性メモリとNVメモリが混在する情報処理装置において、アプリケーションが要求するメモリの特性や性能を担保できるメモリ割り当て装置、メモリ割当方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の１実施の形態のメモリ確保装置は、揮発性の主記憶装置と、不揮発性の主記憶装置と、主記憶装置の各々に関連付けて、揮発性あるいは不揮発性の区別を記憶する特性情報記憶手段と、揮発性あるいは不揮発性の区別を指定した記憶域確保要求を入力されると、前記特性情報記憶手段を検索して指定を満たす主記憶装置を特定して、特定された主記憶装置から領域を確保する主記憶確保手段と、を備える。
【００１３】
本発明の１実施の形態のメモリ確保方法は、揮発性、または、不揮発性主記憶装置の各々に関連付けて、揮発性あるいは不揮発性の区別を特性情報記憶手段に記憶し、揮発性あるいは不揮発性の区別を指定した記憶域確保要求を入力されると、前記特性情報記憶手段を検索して指定を満たす主記憶装置を特定して、特定された主記憶装置から領域を確保する。
【００１４】
本発明の１実施の形態のプログラムは、揮発性の主記憶装置と、不揮発性の主記憶装置とを備えたコンピュータに、主記憶装置の各々に関連付けて、揮発性あるいは不揮発性の区別を特性情報記憶手段に記憶させる処理と、揮発性あるいは不揮発性の区別を指定した記憶域確保要求を入力されると、前記特性情報記憶手段を検索して指定を満たす主記憶装置を特定して、特定された主記憶装置から領域を確保する処理と、を実行させる。
【発明の効果】
【００１５】
本発明にかかるメモリ割り当て装置は、メモリ割り当てに際し、アプリケーションが要求するメモリの特性や性能を担保する。
【図面の簡単な説明】
【００１６】
【図１】図１は、第１の実施の形態にかかるメモリ確保装置10の構成を示す図である。
【図２】図２は、第３の実施の形態にかかるメモリ確保装置10の構成を示す図である。
【図３】図３は、特性情報記憶部1-7に格納される、デバイス特性情報エントリ30の構成を示す図である。
【図４】図４は、特性情報記憶部1-7に格納される、デバイス特性情報テーブル40の構成を示す図である。
【図５】図５は、初期設定部1-6の動作フローチャートである。
【図６】図６は、アプリケーションプログラムと主記憶確保部1-5によるメモリ確保の動作フローチャートである。
【図７】図７は、第２の実施の形態にかかるデバイス特性情報エントリ30の構成を示す図である。
【発明を実施するための形態】
【００１７】
＜第１の実施の形態＞
＜構成＞
図１は、本実施の形態にかかるメモリ確保装置10の構成を示す図である。
【００１８】
メモリ確保装置10は、CPU1-1と、CPU1-1に接続されるVメモリ1-3、NVメモリ1-2、およびチップセット1-4と、チップセット1-4を介してCPU1-1に接続されるNVメモリ1-2とを含む。ここで、Vメモリ1-3は、揮発性メモリ、つまり電源供給が絶たれた場合に値の保持ができないメモリであり、例えば、DRAMである。NVメモリ1-2は、不揮発性の半導体メモリ、つまり電源供給が絶たれた場合でも値の保持が可能なメモリであり、例えば、NAND フラッシュや、相変化メモリである。チップセット1-4は、NVメモリ1-2のコントローラを内蔵し、CPU1-1からのメモリアクセス要求をコントロールする装置である。各Vメモリ1-3、およびNVメモリ1-2のアクセス性能、例えば、アクセスレイテンシ時間は一律でなくても良い。
【００１９】
メモリ確保装置10は、さらに、主記憶確保部1-5と、初期設定部1-6と、特性情報記憶部1-7と、インターコネクト1-8とを含む。主記憶確保部1-5、初期設定部1-6、および特性情報記憶部1-7は、インターコネクト1-8を介して、CPU1-1、Vメモリ1-3、NVメモリ1-2、およびチップセット1-4と接続されている。
【００２０】
主記憶確保部1-5は、例えば、CPU1-1により実行されるアプリケーションプログラムから要求を受け付けて、Vメモリ1-3、またはNVメモリ1-2の領域を確保する。初期設定部1-6は、Vメモリ1-3、および、NVメモリ1-2の初期設定時に、それらの特性情報を取得して、特性情報記憶部1-7に登録する。
【００２１】
主記憶確保部1-5、および初期設定部1-6は、論理回路で構成される。主記憶確保部1-5、または初期設定部1-6は、Vメモリ1-3、またはNVメモリ1-2に格納されて、CPU1-1に実行されるプログラム（図示されず）により実現されても良い。この場合、メモリ確保装置10は、コンピュータ装置であり、プログラムを実行するCPU1-1が、主記憶確保部1-5、または初期設定部1-6として機能する。この場合、主記憶確保部1-5、および、初期設定部1-6は、例えば、オペレーティングシステムの一部、または、拡張として実現される。
【００２２】
特性情報記憶部1-7は、Vメモリ1-3、および、NVメモリ1-2の一部であっても良いし、別個の半導体メモリ装置であっても良い。
【００２３】
図３は、特性情報記憶部1-7に格納される、デバイス特性情報エントリ30の構成を示す図である。図４は、特性情報記憶部1-7に格納される、デバイス特性情報テーブル40の構成を示す図である。デバイス特性情報エントリ30と、デバイス特性情報テーブル40とは、Vメモリ1-3、および、NVメモリ1-2の特性情報を格納する。
【００２４】
図３によれば、デバイス特性情報エントリ30は、Vメモリ1-3、およびNVメモリ1-2の各々（以降、メモリデバイスと略記）対応に、デバイスID3-1と、測定済フラグ3-2と、揮発性フラグ3-3と、テーブルポインタ3-4とを格納する。
【００２５】
デバイスID3-1は、各メモリデバイスに割当てられたユニークな値であり、識別子として使われる。測定済フラグ3-2は、各メモリデバイスの特性検出、性能測定が行われたか否かを示すフラグである。揮発性フラグ3-3は、各メモリデバイスが揮発性か否かを示すフラグである。テーブルポインタ3-4は、各メモリデバイスの性能特性を保持する、デバイス特性情報テーブル40へのポインタ情報である。
【００２６】
ここで、測定済フラグ3-2は、例えば、メモリデバイスの特性検出、性能測定が実行済みであれば’1‘、未であれば’0’の値を記憶する。測定済フラグ3-2は、メモリデバイスの初期化時に、未であれば特性検出、性能測定を行うための判断に用いられる。揮発性フラグ3-3は、例えば、揮発性のメモリデバイスについては、’1’、不揮発性のメモリデバイスについては、’0’の値を記憶する。テーブルポインタ3-4は、それぞれのメモリデバイスの性能測定情報が格納されているデバイス特性情報テーブル40を指し示すポインタ（アドレス）を記憶する。
【００２７】
図４によれば、デバイス特性情報テーブル40は、各性能属性4-1対応に、性能値4-2を格納する。
【００２８】
性能属性4-1は、メモリデバイスの性能測定の条件となるアクセスパターンを記憶する。アクセスパターンは、例えば、シーケンシャルリード、ランダムリード、シーケンシャルライト、またはランダムライトの区別と、データ転送のブロックサイズの組み合わせである。なお図中、シーケンシャルリードはREAD/SEQ、ランダムリードはREAD/RND、シーケンシャルライトはWRITE/SEQ、ランダムライトはWRITE/RNDと表記されている。ブロックサイズは、例えば、64B, 128Bと表記されている。
【００２９】
性能値4-2は、対応するアクセスパターンで測定したメモリデバイスの性能値を記憶する。本図では、レイテンシ（単位は[ns]）を例に挙げているが、スループットなどとしても良い。
【００３０】
＜動作＞
図５は、初期設定部1-6の動作フローチャートである。初期設定部1-6は、メモリの初期化時、例えば、メモリ確保装置10の立ち上げ時、に起動される。起動されると、初期設定部1-6は、デバイス特性情報エントリ30の各エントリを最初から最後まで順次アクセスして（ステップ5-5、5-6）、以下の処理を行う。
【００３１】
初期設定部1-6は、ステップ5-1で、アクセス中のエントリの測定済フラグ3-2を読み取り、ステップ5-1aで、性能測定が完了しているか否かの確認を行う。測定済フラグ3-2が’1’で性能測定が完了している場合（ステップ5-1aでYes）、当該エントリに対応するメモリデバイスの性能測定は不要のため、ステップ5-6で、次のエントリのアクセスに進む。
【００３２】
測定済フラグ3-2が’0’で性能測定が完了していない場合は（ステップ5-1aでNo）、初期設定部1-6は、ステップ5-2で、揮発性フラグ3-3の設定と、測定済フラグ3-2の更新を行う。
【００３３】
初期設定部1-6は、アクセス中のエントリに対応するメモリデバイスが、システムパラメータ等から明示的に揮発性と判る場合は揮発性フラグ3-3を’1’に、不揮発性と判る場合は揮発性フラグ3-3を’0’に設定する。
【００３４】
明示的に特性が得られない場合、初期設定部1-6は、メモリデバイスへ試験用データを書き込み、メモリデバイスの電源遮断と再投入、メモリデバイスからのデータ読み込み、書き込みデータと読み込みデータの比較を行って、揮発性の確認を行う。初期設定部1-6は、書き込みデータと読み込みデータが一致すれば不揮発性、一致しなければ揮発性と判断する。
【００３５】
初期設定部1-6は、続けて性能測定を行うため、測定済フラグ3-2を、あらかじめ、測定済みを表す’1’に更新する。
【００３６】
初期設定部1-6は、ステップ5-3で、アクセス中のエントリに対応するメモリデバイスに対して性能測定を行う。初期設定部1-6は、リード/ライト、シーケンシャルアクセス/ランダムアクセス、ブロックサイズの組み合わせの複数のアクセスパターンで、性能測定を行う。ブロックサイズは、メモリデバイスの特性が変化するサイズや、データベースなどのワークロードのアクセス単位で設定される。ブロックサイズは、例えば、64B, 128B, 256B, 512B, 1KB, 4KB, 8KB, 16KB, 32KB, 64KB, 128GB, 256GB, 512KB, 1MB, 4MBである。
【００３７】
ステップ5-4で、初期設定部1-6は、ステップ5-3で得られた各パターンの性能測定結果を、デバイス特性情報テーブル40の性能値4-2へ格納する。初期設定部1-6は、性能属性4-1が示すパターンと測定を実施したパターンが一致するエントリへ当該パターンの測定値を格納する。これにより、メモリデバイス毎に、アクセスパターンに応じた性能値を得ることが可能になる。
【００３８】
初期設定部1-6は、同一メモリデバイス、同一パターンに対して、複数回の性能測定を行い、最悪値、平均値、最良値などを設定する。初期設定部1-6は、これらのうちの、いずれか、１つを性能値4-2に格納しても良いし、各々の測定値を、個別のテーブルに持つようにしても良い。
【００３９】
初期設定部1-6は、ステップ5-5で、アクセスしたデバイス特性情報エントリ30が、最終エントリであるか否かを確認する。言い換えると、初期設定部1-6は、すべてのメモリデバイスの性能測定が完了しているかを確認する。初期設定部1-6は、最終エントリであれば（ステップ5-5でYes）、処理を終了し、最終エントリでなければ（ステップ5-5でNo）、ステップ5-6で次のエントリのアクセスに進む。たとえば、図３のデバイス特性情報エントリ30の例において、アクセスしたレコードのデバイスID3-1が’1’だった場合は、ステップ5-6のインクリメントにより、初期設定部1-6は、デバイスID3-1が、’2’のレコードを、以降でアクセスする。
【００４０】
これにより、性能測定が行われていない、全てのメモリデバイスの性能測定が行われる。また、新たなメモリデバイスが追加される場合、デバイス特性情報テーブル40に新しいレコードが追加される。ホットプラグに対応しているデバイスは、組み込み時の初期化時に、初期設定部1-6が起動されて、性能測定が行われる。
【００４１】
図６は、アプリケーションプログラムと主記憶確保部1-5によるメモリ確保の動作フローチャートである。
【００４２】
アプリケーションプログラムは、利用可能メモリを得るために、主記憶確保部1-5へメモリアロケーション要求を行う。その際、アプリケーションプログラムは、ステップ6-1で、アロケーションを希望するメモリの要件を指定する。要件は、例えば、メモリデバイスの属性が揮発もしくは不揮発であるかに加え、性能要件、要求メモリサイズを含む。性能要件は、アクセスパターンの種別毎に指定する。性能要件は、例えば、ブロックサイズが128Bのシーケンシャルリードでアクセスレイテンシ500ns未満、ブロックサイズが128Bのシーケンシャルライトでアクセスレイテンシ1μs未、かつ、他のアクセスパターンでアクセスレイテンシは不問というものである。
【００４３】
アプリケーションプログラムからメモリアロケーション要求を受けて、主記憶確保部1-5が、ステップ6-2で、デバイス特性情報エントリ30とデバイス特性情報テーブル40をスキャンして、要件を満たすメモリデバイスに空きが有るか確認を行う。
【００４４】
具体的には、主記憶確保部1-5は、まず、アプリケーションプログラムから指定された、揮発、不揮発性の属性が、揮発性フラグ3-3と一致するデバイス特性情報エントリ30を探す。発見した場合、主記憶確保部1-5は、そのテーブルポインタ3-4が指し示すデバイス特性情報テーブル40の性能属性4-1をスキャンして、アプリケーションプログラムが指定したアクセスパターンの種別と一致するエントリの性能値4-2を参照する。その値が、アプリケーションプログラムの性能要件を満たす範囲であれば、主記憶確保部1-5は、該当するデバイスID3-1に対応するメモリデバイスから領域を確保し、アプリケーションプログラムに割当てる。このとき、主記憶確保部1-5は、該当するメモリデバイスの空き容量の有無により、確保可否の判断を行う。
【００４５】
主記憶確保部1-5は、メモリアロケーションに成功すると、例えば、確保したメモリのアドレスをアプリケーションプログラムに通知する。主記憶確保部1-5は、確保したメモリを、アプリケーションプログラムから指定された仮想アドレスにマップしても良い。
【００４６】
主記憶確保部1-5は、全てのデバイス特性情報テーブル40を索引し、アプリケーションプログラムの要件を満たすメモリデバイスのエントリが存在しない場合は、エラーコードをアプリケーションプログラムへ返却する。
【００４７】
アプリケーションプログラムは、ステップ6-3でメモリアロケーション要求の終了コードを参照し、エラーであれば（ステップ6-3でYes）、メモリアロケーションを異常終了する。このとき、アプリケーションプログラムは、要件を変えて再度、メモリアロケーション要求を行っても良い。
【００４８】
終了コードがエラーではない場合は（ステップ6-3でNo）、正常にメモリアロケーションが行われている。このため、アプリケーションプログラムは、返却されたメモリのアドレスから、要求したメモリサイズの範囲でメモリアクセスが可能になる。ステップ6-4は、アプリケーションプログラムによる、割り当てられたメモリデバイスへのアクセス部分を示す。
【００４９】
アプリケーションプログラムでの処理が終了し（ステップ6-3aでYes）、該当メモリ空間の解放が可能になる場合、アプリケーションプログラムは、ステップ6-5でメモリデアロケーション要求を主記憶確保部1-5に対して行う。
【００５０】
主記憶確保部1-5は、アプリケーションプログラムからのメモリデアロケーション要求に従い、ステップ6-6でメモリ領域を解放する。
【００５１】
＜効果＞
本実施の形態にかかるメモリ確保装置10は、メモリ割り当てに際し、アプリケーションプログラムが要求するメモリの特性や性能を担保できる。その理由は、主記憶確保部1-5は、メモリアロケーション要求についてアプリケーションプログラムが指定した要件を受け付けて、当該要件に合ったメモリ領域を確保するからである。要件は、例えば、メモリデバイスの属性が揮発もしくは不揮発であるかに加え、性能要件、要求メモリサイズを含む。
【００５２】
この結果、本実施の形態にかかるメモリ確保装置10を利用するアプリケーションプログラムは、特性（揮発、不揮発性、性能特性）の異なるメモリデバイスを、補助記憶装置としてではなく、主記憶装置として一元的に利用できる。
【００５３】
＜第２の実施形態＞
＜構成と動作＞
図７は、本実施の形態にかかるデバイス特性情報エントリ30の構成を示す図である。本実施の形態にかかるデバイス特性情報エントリ30は、第１の実施の形態のデバイス特性情報エントリ30に比べて、有寿命3-5が追加されている。
【００５４】
有寿命3-5は、エントリに対応するメモリデバイスの寿命指標を格納する。寿命指標は、例えば、半永久（寿命なし）の場合は0、高位のエンデュランス品は1、中位のエンデュランス品は2、低位のエンデュランス品は3である。例えば、半永久はDRAM、高位のエンデュランス品は相変化メモリ、中位のエンデュランス品はSLC(Single Level Cell) NANDフラッシュ、低位のエンデュランス品はMLC(Multi Level Cell) NANDフラッシュである。
【００５５】
本実施の形態の主記憶確保部1-5は、メモリアロケーションの要求についてアプリケーションプログラムが指定した要件として、例えば、メモリデバイスの属性が揮発もしくは不揮発であるか、性能要件、要求メモリサイズ、に加え、寿命指標を受け付ける。その結果、主記憶確保部1-5は、図６のステップ6-2において、アプリケーションプログラムが指定した揮発、不揮発性の属性が、揮発性フラグ3-3と一致し、かつ、アプリケーションプログラムが指定した寿命指標が、有寿命3-5の寿命指標と一致するデバイス特性情報エントリ30を探す。主記憶確保部1-5は、それ以外は第1の実施の形態と同じ動作をする。
【００５６】
＜効果＞
アプリケーションプログラムは、メモリアロケーションの要求で、デバイスの寿命を考慮したデバイスの選択が可能になる。これにより書き込み比率が高いワークロードでは、有寿命品のデバイスの利用を避けることが可能になる。
【００５７】
＜第３の実施形態＞
図２は、本実施の形態にかかるメモリ確保装置10の構成を示す図である。メモリ確保装置10は、揮発性の主記憶装置であるVメモリ1-3と、不揮発性の主記憶装置であるNVメモリ1-2と、特性情報記憶部1-7と、主記憶確保部1-5とを備える。
【００５８】
特性情報記憶部1-7は、主記憶装置の各々に関連付けて、揮発性あるいは不揮発性の区別を記憶する。主記憶確保部1-5は、揮発性あるいは不揮発性の区別を指定した記憶域確保要求を入力されると、特性情報記憶部1-7を検索して指定を満たす主記憶装置を特定して、特定された主記憶装置から領域を確保する。
【００５９】
なお、メモリ確保要求は、図示されないCUP1-1が実行するアプリケーションプログラムが発行しても良いし、専用の画像処理チップ等が発行しても良い。
【００６０】
本実施の形態にかかるメモリ確保装置10は、メモリ割り当てに際し、アプリケーションプログラムが要求するメモリの特性や性能を担保できる。その理由は、主記憶確保部1-5は、メモリアロケーション要求についてアプリケーションプログラムが指定した要件を受け付けて、当該要件に合ったメモリ領域を確保するからである。要件は、例えば、メモリデバイスの属性が揮発もしくは不揮発であるかに加え、性能要件、要求メモリサイズを含む。
【００６１】
この結果、本実施の形態にかかるメモリ確保装置10を利用するアプリケーションプログラムは、特性（揮発、不揮発性、性能特性）の異なるメモリデバイスを、補助記憶装置としてではなく、主記憶装置として一元的に利用できる。
【００６２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６３】
1-1    CPU
1-2    NVメモリ
1-3    Vメモリ
1-4    チップセット
1-5    主記憶確保部
1-6    初期設定部
1-7    特性情報記憶部
1-8    インターコネクト
3-1    デバイスID
3-2    測定済フラグ
3-3    揮発性フラグ
3-4    テーブルポインタ
3-5    有寿命
4-1    性能属性
4-2    性能値
10    メモリ確保装置
30    デバイス特性情報エントリ
40    デバイス特性情報テーブル
【図１】
0006716894.tif 000002
【図２】
0006716894.tif 000003
【図３】
0006716894.tif 000004
【図４】
0006716894.tif 000005
【図５】
0006716894.tif 000006
【図６】
0006716894.tif 000007
【図７】
0006716894.tif 000008