(57)【要約】【課題】複数の半導体記憶装置を効率よく使用できるようにする。【解決手段】データを一時的に格納する複数の半導体記憶装置３２と、半導体記憶装置３２上のデータに対するアクセス傾向と複数の半導体記憶装置３２のそれぞれの残り書き込み量とに基づいて、データの移動先の半導体記憶装置３２を、複数の半導体記憶装置３２の中から決定する決定部１２２と、複数の半導体記憶装置３２のうち一の半導体記憶装置３２のデータを、決定部１２２によって決定された移動先の半導体記憶装置３２に移動させる移動処理部１２２とを備える。【選択図】図６
2018036711.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と、
データを一時的に格納する複数の半導体記憶装置と、
前記半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージシステム。
【請求項２】
前記決定部が、
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、請求項１記載のストレージシステム。
【請求項３】
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
ことを特徴とする、請求項１または２記載のストレージシステム。
【請求項４】
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、請求項１〜３のいずれか１項に記載のストレージシステム。
【請求項５】
前記複数の半導体記憶装置のそれぞれ書き込み可能量と、前記複数の前記半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の前記半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定する必要性判定部を備え、
前記必要性判定部が、前記データの移動が必要であると判定した場合に、前記移動処理部が、前記データを前記移動先の半導体記憶装置に移動させる
ことを特徴とする、請求項１〜４のいずれか１項に記載のストレージシステム。
【請求項６】
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出する算出部と、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する制限部と
を備えることを特徴とする、請求項１〜５のいずれか１項に記載のストレージシステム。
【請求項７】
データを一時的に格納する複数の半導体記憶装置を備え、
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージシステム。
【請求項８】
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージ制御装置。
【請求項９】
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージ制御装置。
【請求項１０】
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定し、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる
処理を、プロセッサに実行させる、制御プログラム。
【請求項１１】
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
処理をプロセッサに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム，ストレージ制御装置および制御プログラムに関する。
【背景技術】
【０００２】
近年、サーバやストレージ装置等において、ＳＳＤ（Solid State Drive）を２次キャッシュとして用いるシステムが知られている。また、キャッシュの容量増はヒット率の向上に直結するため、前述の如くＳＳＤを２次キャッシュとして用いるシステムにおいては、複数のＳＳＤを単一の２次キャッシュ領域として使用することも知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５５１６号公報
【特許文献２】特開２０１３−２０６１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＳＳＤの記憶媒体として使用されているＮＡＮＤフラッシュはデータの書き込み、削除を行なうことでビットエラー率が増えてゆく。このためＳＳＤは内部のＮＡＮＤフラッシュへのデータ書き込みを平準化するような仕組み（ウェアレベリング）を実施するとともに、ＳＳＤに書き込み可能な容量（寿命／ＴＢＷ：Total Byte Written）を定めている。
【０００５】
寿命を超えるとＳＳＤはリードオンリー状態となり、データの読み出しは可能だが、書き込みはできなくなる。ＳＳＤが寿命を迎えた場合には、ＳＳＤ交換のための保守作業が必要となるので、利用者にとって可用性低下や保守コストの増大につながる。
【０００６】
しかしながら、ＳＳＤの寿命（ＴＢＷ）は、製造業者（ベンダ）やＮＡＮＤタイプ、容量によって異なる。寿命が異なる複数のＳＳＤを混在させて２次キャッシュとして使用した場合に、これらのＳＳＤは同一の２次キャッシュとして使用しているにも関わらず、異なるタイミングで保守交換が必要になり、非効率的であるという課題がある。
【０００７】
また、同じＴＢＷを有する複数のＳＳＤを用いて２次キャッシュを構成した場合であっても、不良等によって一つのＳＳＤを交換した場合には、異なるタイミングでのＳＳＤの保守交換が生じることとなる。
【０００８】
１つの側面では、本発明は、複数の半導体記憶装置を効率よく使用できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
このため、このストレージシステムは、記憶装置と、データを一時的に格納する複数の半導体記憶装置と、それぞれ書き込み可能量装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部とを備える。
【発明の効果】
【００１０】
一実施形態によれば、複数の半導体記憶装置を効率よく使用できる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態の一例としての情報処理装置のハードウェア構成を例示する図である。
【図２】第１実施形態の一例としての情報処理装置の機能構成を示す図である。
【図３】第１実施形態の一例としての情報処理装置における寿命管理テーブルを説明するための図である。
【図４】従来の情報処理装置におけるＳＳＤの寿命管理方法と、第１実施形態の情報処理装置におけるＳＳＤの寿命管理方法とを例示する図である。
【図５】第２実施形態の一例としての情報処理装置におけるキャッシュデータの分類を説明するための図である。
【図６】第２実施形態の一例としての情報処理装置の機能構成を示す図である。
【図７】第２実施形態の一例としての情報処理装置における１次キャッシュ管理テーブルを例示する図である。
【図８】実施形態の一例としての情報処理装置における２次キャッシュ管理テーブルを例示する図である。
【図９】は第２実施形態の一例としての情報処理装置におけるページマッピングテーブルを例示する図である。
【図１０】第２実施形態の一例としての情報処理装置におけるＬＢＡ（Logical Block Addressing）マッピングの初期状態を説明するための図である
【図１１】第２実施形態の一例としての情報処理装置における寿命管理テーブルを例示する図である。
【図１２】第２実施形態の一例としての情報処理装置における寿命管理テーブル，マッピングテーブル，フリーページリストおよび交換候補ページリストと、ＳＳＤとの対応関係を説明するための図である。
【図１３】第２実施形態の一例としての情報処理装置における２次キャッシュに対するリードアクセス処理を説明するためのフローチャートである。
【図１４】第２実施形態の一例としての情報処理装置における２次キャッシュに対するライトアクセス時の処理を説明するためのフローチャートである。
【図１５】第２実施形態の一例としての情報処理装置における２次キャッシュに対するライトアクセス時の処理を説明するためのフローチャートである。
【図１６】第２実施形態の一例としての情報処理装置におけるデータの再配置を伴うライトの過程を説明するための図である。
【図１７】第２実施形態の一例としての情報処理装置におけるデータの再配置を伴うライトの過程を説明するための図である。
【図１８】第２実施形態の一例としての情報処理装置における２次キャッシュに対するステージングアクセス時の処理を説明するフローチャートである。
【図１９】第２実施形態の一例としての情報処理装置におけるデータの再配置を伴うステージングの過程を説明するための図である。
【図２０】第２実施形態の一例としての情報処理装置におけるデータの再配置を伴うステージングの過程を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本ストレージシステム，ストレージ制御装置および制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１３】
（Ｉ）第１実施形態の説明
図１は第１実施形態の一例としての情報処理装置１のハードウェア構成を例示する図、図２はその機能構成を示す図である。
【００１４】
情報処理装置１は、例えば、ストレージ装置やサーバコンピュータであり、図１に例示するように、ＣＰＵ（Central Processing Unit）１０，アダプタ２０，ＤＲＡＭ（Dynamic Random Access Memory）３１，ＨＤＤ（Hard Disk Drive）４０および複数（本実施形態では２つ）のＳＳＤ３２−１，３２−２を備える。
【００１５】
ＨＤＤ４０は、各種データやプログラム等を格納する記憶装置である。ＨＤＤ４０は２つ以下もしくは４つ以上備えてもよい。また、複数のＨＤＤ４０を用いてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を形成してもよい。以下、ＨＤＤ４０をディスク４０という場合がある。
【００１６】
ストレージ装置においては、ＣＰＵ１０，アダプタ２０，ＤＲＡＭ３１およびＳＳＤ３２−１，３２−２は、ストレージ制御装置（ＣＭ：コントロールモジュール）に備えられる。
【００１７】
アダプタ２０は、ＣＰＵ１０とＨＤＤ４０およびＳＳＤ３２−１，３２−２とを通信可能に接続し、これらのＣＰＵ１０，ＨＤＤ４０，ＳＳＤ３２−１，３２−２の間で各種コマンドやデータの授受を行なうインタフェースである。
【００１８】
ＤＲＡＭ３１は、主記憶装置であり、ＣＰＵ１０が各種処理を実行する際のワーキングメモリとして利用されるとともに、情報処理装置１としての１次キャッシュとしても用いられる。
【００１９】
以下、ＤＲＡＭ３１を、メモリ３１という場合がある。メモリ３１は、ＤＲＡＭに限定されるものではなく、例えば、ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）等の揮発性メモリであってもよい。
【００２０】
ＤＲＡＭ３１の記憶領域には、後述する寿命管理テーブル１２３ａを構成する情報が格納される。
【００２１】
ＳＳＤ３２−１，３２−２は、記憶媒体にＮＡＮＤフラッシュ等の半導体素子メモリを用いた半導体記憶装置である。半導体素子メモリは、データの書き込みや削除を行なうことで、ビットエラー率が増える特性を有する。従って、ＳＳＤ３２−１，３２−２には使用回数制限がある。
【００２２】
なお、一般に、ＳＳＤ３２−１，３２−２はＤＲＡＭ３１よりもアクセス性能が低く（低速）、且つ、ＤＲＡＭ３１よりも大容量である。
【００２３】
本情報処理装置１においては、これらの複数（本実施形態では２つ）のＳＳＤ３２−１，３２−２の記憶領域が、２次キャッシュとして用いられる。
【００２４】
以下、ＳＳＤ３２−１をＳＳＤ＃０と表し、ＳＳＤ３２−２をＳＳＤ＃１と表す場合がある。
【００２５】
また、以下、ＳＳＤを示す符号としては、複数のＳＳＤのうち１つを特定する必要があるときには符号３２−１，３２−２または＃０，＃１を用いるが、任意のＳＳＤを指すときには符号３２を用いる。
【００２６】
ＨＤＤ４０から読み出されたデータは、２次キャッシュであるＳＳＤ３２に格納（ステージング）される。また、これらのＳＳＤ３２に格納されたデータは、２次キャッシュドライバ１０２によって読み出され（キャッシュリード）、１次キャッシュであるメモリ３１（ＤＲＡＭ３１）に格納される。
【００２７】
以下、ＳＳＤ３２を２次キャッシュ３２という場合がある。また、メモリ３１を１次キャッシュ３１という場合がある。
【００２８】
ＣＰＵ１０は、種々の制御や演算を行なう処理装置（プロセッサ，コンピュータ）であり、図示しないＲＯＭ（Read Only Memory）やＨＤＤ４０に格納されたＯＳ（Operating System）やプログラム（制御プログラム，デバイスドライバ）を実行することにより、種々の機能を実現する。
【００２９】
本第１実施形態の情報処理装置１は、図２に示すように、キャッシュ制御部１０１，２次キャッシュドライバ１０２，ディスクドライバ１０３およびユーザアプリ１０４としての機能を有する。
【００３０】
そして、これらのキャッシュ制御部１０１，２次キャッシュドライバ１０２，ディスクドライバ１０３およびユーザアプリ１０４は、ＣＰＵ１０がプログラム（制御プログラム）を実行することで実現される。
【００３１】
なお、これらのキャッシュ制御部１０１，２次キャッシュドライバ１０２およびディスクドライバ１０３としての機能を実現するためのプログラム（制御プログラム）は、例えば図示しない記録媒体に記録された形態で提供される。そして、ＣＰＵ１０（コンピュータ）はその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してＣＰＵ１０に提供するようにしてもよい。
【００３２】
キャッシュ制御部１０１，２次キャッシュドライバ１０２およびディスクドライバ１０３としての機能を実現する際には、内部記憶装置（本実施形態ではＤＲＡＭ３１等）に格納されたプログラムがＣＰＵ１０によって実行される。このとき、記録媒体に記録されたプログラムをＣＰＵ１０が読み取って実行するようにしてもよい。
【００３３】
キャッシュ制御部１０１は、ユーザアプリ１０４からデータの読み出しもしくは書き込みの要求を受け付ける。キャッシュ制御部１０１は、データの読み出しもしくは書き込みの要求を受けると、そのアクセス対象のデータが１次キャッシュ３１もしくは２次キャッシュ３２上に存在するかを確認する。アクセス対象のデータが１次キャッシュ３１上に存在する場合、そのデータはＤＲＡＭ３１上に配置されているので、キャッシュ制御部１０１は、直接、ＤＲＡＭ３１からデータの読み出しもしくは、ＤＲＡＭ３１へのデータの書き込みを行なってユーザアプリ１０４に応答を行なう。
【００３４】
一方、アクセス対象のデータが２次キャッシュ３２上に存在する場合は、キャッシュ制御部１０１は、２次キャッシュドライバ１０２にデータの読み出しもしくは書き込み要求を行なう。
【００３５】
データが１次キャッシュ３１および２次キャッシュ３２のいずれにもない場合、キャッシュ制御部１０１は、ディスクドライバ１０３に対して、データの読み出し要求または書き込み要求を行なう。このディスクドライバ１０３がＨＤＤ４０からのデータの読み出し、もしくはＨＤＤ４０へのデータの書き込みを行なう。
【００３６】
また、キャッシュ制御部１０１は、データのアクセス頻度に応じて、ディスクドライバ１０３に対してデータの読み出しを要求し、読み出したデータを２次キャッシュ３２へ書き込ませるステージング（Staging）を行なう。ステージングは、ユーザアプリ１０４からのデータ要求とは非同期にバックグラウンドで実行される。
【００３７】
なお、ステージングに対して、２次キャッシュ３２上の任意のデータをユーザアプリ１０４からの要求に応じて書き換える操作を、２次キャッシュ３２へのライトと呼び、ステージングとは区別するものとする。
【００３８】
２次キャッシュ３２に載せるデータの選択方法は、例えば１次キャッシュ３１から追い出されたデータをＨＤＤ４０から再読出しして２次キャッシュ３２へ書き込むなど、適宜変更して実施することができる。
【００３９】
ディスクドライバ１０３は、ＨＤＤ４０からのデータ読み出し、もしくはＨＤＤ４０へのデータの書き込みを行なう。ディスクドライバ１０３は、キャッシュ制御部１０１からのディスクアクセス要求に応じて、ＨＤＤ４０からのデータ読み出し、もしくはＨＤＤ４０へのデータの書き込みを行なう。
【００４０】
２次キャッシュドライバ１０２は、ＳＳＤ３２からのデータ読み出し、もしくはＳＳＤ３２へのデータの書き込みを行なう。すなわち、２次キャッシュドライバ１０２は、２次キャッシュ３２に対するデータの書き込みや読み出しを行なう。
【００４１】
本第１実施形態において、２次キャッシュドライバ１０２は平準化制御部１２１としての機能を有する。
【００４２】
平準化制御部１２１は、本情報処理装置１の２次キャッシュ３２として使用している複数（本実施形態では２つ）のＳＳＤ３２について、全てのＳＳＤ３２の寿命満了時期が同じ（もしくはほぼ同じ）になるように一定時間当たりの書き込み量を制限する。
【００４３】
従来手法においては、ＳＳＤの保証期間はＳＳＤ毎に固定の値として取り扱っている。本第１実施形態の情報処理装置１においては、２次キャッシュ３２として使用している全てのＳＳＤ３２が同時期に寿命を迎えるようにするために、残り保証期間を全てのＳＳＤ３２で同一にする制御を行なう。
【００４４】
すなわち、平準化制御部１２１は、残り保証期間をＳＳＤ３２単体から２次キャッシュ３２全体へと拡張して取り扱う。
【００４５】
平準化制御部１２１は、各ＳＳＤ３２の残り保証期間に基づき、以下の式（１）により２次キャッシュ全体の残り保証期間を算出する。
【００４６】
２次キャッシュ全体の残り保証期間 =（ＳＳＤ＃０の残り保証期間 + ＳＳＤ＃１の残り保証期間）／ＳＳＤ台数・・・（１）
また、平準化制御部１２１は、上記式（１）を用いて算出した２次キャッシュ全体の残り保証期間を用いて、以下の式（２）により、ＳＳＤ３２毎に単位時間当たりの書き込み可能量を算出する。このＳＳＤ３２の単位時間当たりの書き込み可能量は、個々のＳＳＤ３２に単位時間に書き込むことができるデータ量を示す。なお、単位時間は、ＳＳＤ３２の書き込み可能量を制限する時間単位であり、例えば、１０秒とする。
【００４７】
単位時間当たりＳＳＤの書き込み可能量 = （（ＳＳＤ  ＴＢＷ−ＳＳＤへの総書き込み量）／２次キャッシュ全体の残り保証期間）×単位時間・・・（２）
従って、ＳＳＤ＃０およびＳＳＤ＃１の各書き込み可能量は、それぞれ、上記式（２）を用いて以下のように求められる。
【００４８】
ＳＳＤ＃０の単位時間当たり書き込み可能量 = （（ＳＳＤ＃０  ＴＢＷ − ＳＳＤ＃０への総書き込み量）／２次キャッシュ全体の残り保証期間）×単位時間
ＳＳＤ＃１の単位時間当たり書き込み可能量 = （（ＳＳＤ＃１  ＴＢＷ − ＳＳＤ＃０への総書き込み量）／２次キャッシュ全体の残り保証期間）×単位時間
平準化制御部１２１（２次キャッシュドライバ１０２）は、寿命管理テーブル１２３ａを用いて、各ＳＳＤ３２の寿命を管理する。
【００４９】
図３は本第１実施形態の一例としての情報処理装置１における寿命管理テーブル１２３ａを説明するための図である。
【００５０】
この図３に示す例においては、寿命管理テーブル１２３ａは、ＴＢＷ，保証期間，総書き込み量，稼動時間，単位時間当たり書き込み可能量，書き込み制限状態および全体の残り保証期間を寿命情報として管理する。
【００５１】
なお、ＴＢＷ，保証期間，総書き込み量，単位時間当たり書き込み可能量および書き込み制限状態は、ＳＳＤ３２毎に設定される（管理単位）。これに対して、全体の残り保証期間は、複数の２次キャッシュ３２を含むシステム全体を単位に設定される。また、図中の上向き矢印（↑）は、一つ上の項と同じ値（同上）であることを示す。
【００５２】
また、ＴＢＷ，保証期間，総書き込み量および稼動時間としては、当該ＳＳＤ３２に予め書き込まれた値が初期値として用いられる。また、単位時間当たり書き込み可能量については、当該ＳＳＤ３２の本情報処理装置１への組み込み時に、上記式（２）を用いて算出された値が初期値として用いられる。
【００５３】
総書き込み量は、ＳＳＤ３２に書き込まれたデータの総量であり、例えばメモリ３１上に保持される。２次キャッシュドライバ１０２は、ＳＳＤ３２への書き込みを行うたびに総書き込み量を加算するとともに、単位時間当たりの書き込み可能量を減算する。
【００５４】
また、２次キャッシュドライバ１０２は、単位時間が経過するごとに単位時間当たり書き込み可能量の値を式（２）により再計算する。
【００５５】
単位時間当たり書き込み可能量の値が０となった場合に、２次キャッシュドライバ１０２は、そのＳＳＤ３２に対して、書き込み制限状態を設定する。すなわち、書き込み制限状態フラグ“１”を設定する。２次キャッシュドライバ１０２は、書き込み制限状態に“１”が設定されたＳＳＤ３２に、これ以降、単位時間が経過するまでの間は、当該ＳＳＤ３２への書き込み要求に対してエラーを応答する。
【００５６】
稼動時間は、そのＳＳＤ３２が使用された時間の総計であり、２次キャッシュドライバ１０２により定期的（例えば、数時間毎）に更新される。
【００５７】
単位時間当たり書き込み可能量は、上述した式（２）により算出される値である。書き込み制限状態とは、ＳＳＤ３２への書き込みが制限されているか否かを示す情報である。全体の残り保証期間は、上述した式（１）により算出される値である。
【００５８】
本第１実施形態の情報処理装置１において、平準化制御部１２１は、単位時間当たりの書き込み可能量を算出するに際して、ＳＳＤ３２毎の保証期間ではなく、上記式（１）により算出した、２次キャッシュ全体の残り保証期間を用いる。
【００５９】
この２次キャッシュ全体の残り保証期間としては、本情報処理装置１の起動時に上記式（１）を用いて算出された値が初期値として設定される。また、２次キャッシュ全体の残り保証期間は、２次キャッシュ３２を構成するうちの少なくとも１つのＳＳＤ３２を交換または増設する際に再計算される。また、この際、交換や増設を行なわないＳＳＤ３２についても、単位時間当たり書き込み可能量の再計算を行なう。
【００６０】
２次キャッシュドライバ１０２は、単位時間が経過する毎に、単位時間当たり書き込み可能量を再計算し、また、ＳＳＤ３２が書き込み制限状態に設定されていれば、“０”を設定することでこれをリセットする。
【００６１】
上述の如く構成された情報処理装置１において、２次キャッシュドライバ１０２は、ＳＳＤ３２への書き込みを行うたびに総書き込み量を加算するとともに、単位時間当たりの書き込み可能量を減算する。書き込み可能量が再計算されるまでの間に、この単位時間当たりの書き込み可能量の値が０となった場合、単位時間あたりに書き込み可能な容量を超過したことを示す。そこで、２次キャッシュドライバ１０２は、ＳＳＤ３２を書き込み制限状態にする。
【００６２】
具体的には、２次キャッシュドライバ１０２は、寿命管理テーブル１２３ａに書き込み制限状態フラグをセットすることで、ＳＳＤ３２を書き込み制限状態にする。
【００６３】
２次キャッシュドライバ１０２は、ＳＳＤ３２を書き込み制限状態にした場合には、それ以降の所定期間の間は該当ＳＳＤ３２への書き込み要求に対してはエラーを応答する。
【００６４】
また、所定時間が経過すると、２次キャッシュドライバ１０２は、上記の式（２）に基づき、書き込み可能量を再計算し、ＳＳＤ３２が書き込み制限状態であればこれをリセットする。
【００６５】
図４は従来の情報処理装置におけるＳＳＤの寿命管理方法と、本第１実施形態の情報処理装置１におけるＳＳＤの寿命管理方法とを例示する図である。
【００６６】
この図４においては、残り保証期間が３年のＳＳＤ＃０と残り保証期間が５年のＳＳＤ＃１との２つのＳＳＤ３２を用いて２次キャッシュ３２を構成する例を示す。
【００６７】
従来手法においては、符号（Ａ）に示すように、個々のＳＳＤ３２毎に保証期間が管理されるので、ＳＳＤ＃０は３年後に寿命を迎える一方で、ＳＳＤ＃１は５年後に寿命を迎え、３年後と５年後とにＳＳＤ３２の交換作業が生じる。
【００６８】
これに対して、本第１実施形態の情報処理装置１においては、符号（Ｂ）に示すように、平準化制御部１２１は、先ず、以下に示すように、ＳＳＤ＃０とＳＳＤ＃１とで構成した２次キャッシュ全体の残り保証期間を上記式（１）を用いて算出する。すなわち、
２次キャッシュ全体の残り保証期間 =（３年＋５年）／２台＝４年
これは2つのＳＳＤ３２が４年後に同時に寿命を迎えるように書き込みを制限すべきことを意味する。
【００６９】
ここで、ＳＳＤ＃０のＴＢＷが５ＰＢ（ペタバイト：petabyte）であり、ＳＳＤ＃０の総書き込み量（既に書き込んだ量）が２ＰＢであるものとし、また、ＳＳＤ＃１のＴＢＷが５ＰＢであり、ＳＳＤ＃１の総書き込み量が０ＰＢであるものとする。この場合、各ＳＳＤ３２の単位時間当たりの書き込み可能量は上記式（２）を用いることで、以下のように算出される。なお、書き込み制限の単位時間はＳＳＤ＃０，＃１間において共通で１０秒であるものとする。
【００７０】
ＳＳＤ＃０の単位時間当たり書き込み可能量 =（５ＰＢ−２ＰＢ）／［｛４年×（３６５×２４×６０×６０）｝秒］×１０秒  ＝２３ＭＢ／１０秒
ＳＳＤ＃１の単位時間当たり書き込み可能量 =（５ＰＢ−０ＰＢ）／［｛４年×（３６５×２４×６０×６０）｝秒］×１０秒  ＝３９ＭＢ／１０秒
すなわち、残り寿命が短いＳＳＤ＃０の単位時間当たり書き込み可能量を、ＳＳＤ＃０よりも残り寿命が長いＳＳＤ＃１の単位時間当たり書き込み可能量より少なくし、ＳＳＤ＃０への書き込み量を絞ることで、残り保証期間が３年のＳＳＤ＃０を４年もたせる。
【００７１】
その一方で、ＳＳＤ＃１の単位時間当たり書き込み可能量を多くすることで、本来５年の保証期間があるところを４年でＴＢＷに到達するよう、データの書き込み量を制御する。
【００７２】
これにより、元々は異なる残り寿命を有していたＳＳＤ＃０とＳＳＤ＃１とが共に４年でＴＢＷに到達し、１度の保守作業でＳＳＤ３２の交換を完了させることができる。すなわち、２次キャッシュ３２を構成する複数のＳＳＤ３２の寿命を揃え、効率的に使用することができる。
【００７３】
２次キャッシュドライバ１０２は、残り保証期間および単位時間当たり書き込み可能量を定期的に更新する。また、ＳＳＤ３２を交換した場合にも２次キャッシュ３２全体の残り寿命を算出し直す。これにより、ＳＳＤ３２が交換されて寿命の長いＳＳＤ３２が追加された場合に、その分だけ２次キャッシュ３２全体の寿命を長くすることができる。
【００７４】
（ＩＩ）第２実施形態の説明
【００７５】
（Ａ）構成
第２実施形態の情報処理装置１は、図１に示す第１実施形態の情報処理装置１と同様のハードウェア構成を有する。
【００７６】
本情報処理装置１において、ＳＳＤ３２は２次キャッシュ３２として使用されており、ＳＳＤ３２上のデータは一様にアクセスされるわけではない。
【００７７】
図５は第２実施形態の一例としての情報処理装置１におけるキャッシュデータの分類を説明するための図である。
【００７８】
本第２実施形態においては、図５に示すように、ＳＳＤ３２上のデータを、そのデータアクセスの傾向に基づいてアクセスパターンＡ，Ｂ，Ｃの３種類に分類する。
【００７９】
アクセスパターンＡ：ライトアクセスが多いデータ。書き換え頻度が高いデータである。このアクセスパターンＡのデータを、残り書き込み量の多いＳＳＤ３２へ配置すべきデータであるとして取り扱う。すなわち、アクセスパターンＡのページのデータは、残り寿命が長いＳＳＤ３２に配置されるべきデータである。
【００８０】
アクセスパターンＢ：ライトアクセスが少なく、且つ、リードアクセスが多いデータ。リードキャッシュとしてとしてヒット率が高いが、書き換えはされないデータであるので、このアクセスパターンＢのデータは、残り書き込み量の少ないＳＳＤ３２へ配置することができる。すなわち、アクセスパターンＢのページのデータは、残り寿命が短いＳＳＤ３２に配置されるべきデータである。
【００８１】
アクセスパターンＣ：ライトアクセスが少なく、且つ、リードアクセスも少ないデータ。アクセス頻度の低いデータである。このアクセスパターンＣのデータは、近い将来に破棄され、新たなデータがステージングされると考えられるため、残り書き込み量の多いＳＳＤ３２へ配置すべきであるとして取り扱う。すなわち、アクセスパターンＣのページのデータは、残り寿命が長いＳＳＤ３２に配置されるべきデータである。
【００８２】
なお、上記アクセスパターンＡ，Ｂ，Ｃは、１次キャッシュ３１から追い出された後、２次キャッシュ３２へステージングされるデータについても同様の傾向がある。
【００８３】
本第２実施形態の情報処理装置１においては、上記アクセスパターンＡ〜Ｃに分類したアクセス傾向に基づいてデータをＳＳＤ３２間で再配置することで、残り書き込み量の少ないＳＳＤ３２へライトやステージングが集中することを防ぎ、且つ、リードキャッシュとして有効利用することができる。
【００８４】
なお、各ＳＳＤ３２は、それぞれが内部のファームウェアによって、既知の手法によりウェアレベリングを行なわれているものとする。従って、再配置の際に考慮すべき事項は、どのＳＳＤ３２にデータを配置するかということであり、ＳＳＤ３２上のデータのありか（ＳＳＤ３２上の論理ＬＢＡ）を考慮する必要は無い。
【００８５】
アクセスパターンによるデータ配置の変更は、２次キャッシュドライバ１０２とキャッシュ制御部１０１とを連携させることで実現する。
【００８６】
本第２実施形態の情報処理装置１においては、ＤＲＡＭ３１の記憶領域には、後述する１次キャッシュ管理テーブル１１１，２次キャッシュ管理テーブル１１２，寿命管理テーブル１２３ｂ，ページマッピングテーブル１２４，フリーページリスト１２５および交換候補ページリスト１２６を構成する各情報が格納される（図６参照）。
【００８７】
図６は第２実施形態の一例としての情報処理装置１の機能構成を示す図である。
【００８８】
また、第２実施形態の情報処理装置１は、図６に示すように、キャッシュ制御部１０１，２次キャッシュドライバ１０２，ディスクドライバ１０３およびユーザアプリ１０４としての機能を有する。
【００８９】
そして、本第２実施形態においても、これらのキャッシュ制御部１０１，２次キャッシュドライバ１０２，ディスクドライバ１０３およびユーザアプリ１０４は、ＣＰＵ１０がプログラム（制御プログラム）を実行することで実現される。
【００９０】
キャッシュ制御部１０１は、１次キャッシュ管理テーブル１１１の管理を行ない、この１次キャッシュ管理テーブル１１１を参照して、ユーザアプリ１０４より要求されたデータが１次キャッシュ３１上に存在するかを確認する。
【００９１】
図７は第２実施形態の一例としての情報処理装置１における１次キャッシュ管理テーブル１１１を例示する図である。
【００９２】
１次キャッシュ管理テーブル１１１は、図７に示すように、エントリＮｏ．に対して、LUN（Logical Unit Number），LU LBA，Read回数，Write回数およびその他キャッシュ管理情報を対応付けて管理する。
【００９３】
ここで、LUNは、ＨＤＤ４０の論理ユニット番号である。LU LBAは各ＨＤＤ４０における論理ブロックアドレスを示す。また、この１次キャッシュ管理テーブル１１１におけるエントリはキャッシュの１ページに相当する。ページとは、あるLU LBAを先頭とした固定長サイズ（例えば256ブロック）のデータの塊であり、キャッシュ制御部１０１はこの単位でデータを１次キャッシュ３１および２次キャッシュ３２に配置する。以下、キャッシュのページをキャッシュページという場合がある。
【００９４】
従って、例えば、１次キャッシュ管理テーブル１１１に、LUN＝0，LU LBA=0x00となるエントリ（図７のエントリＮｏ．＝1参照）が存在する場合、１次キャッシュ３１上にLUN0のLBA 0x00から１ページ分のデータが存在することを示している。
【００９５】
Read回数およびWrite回数は、各エントリのデータに対するリード処理およびライト処理により行なわれるアクセスのカウント値であり、キャッシュ制御部１０１は、１次キャッシュ３１における各エントリのデータに対してデータの読み出しや書き込みを行なう度に、１次キャッシュ管理テーブル１１１における該当ページのRead回数もしくはWrite回数をカウントアップする。
【００９６】
その他のキャッシュ管理情報は、例えば、ページ内のデータ有効、無効等を示すビットマップやキャッシュのヒットミスを判定するハッシュ情報等である。キャッシュ制御部１０１は１次キャッシュ管理テーブル１１１上に様々な管理情報を保持することによって１次キャッシュ３１上のページを管理する。なお、キャッシュ管理情報として管理される情報は、これらに限定されるものではなく適宜変更して実施することができる。また、これらの情報の管理方法は、適宜変更して実施することができる。
【００９７】
また、キャッシュ制御部１０１は、２次キャッシュ管理テーブル１１２の管理を行ない、この２次キャッシュ管理テーブル１１２を参照して、ユーザアプリ１０４より要求されたデータが２次キャッシュ３２上に存在するかを確認する。
【００９８】
図８は第２実施形態の一例としての情報処理装置１における２次キャッシュ管理テーブル１１２を例示する図である。
【００９９】
２次キャッシュ管理テーブル１１２は、図８に示すように、エントリＮｏ．に対して、LUN（Logical Unit Number），LU LBA，Read回数，Write回数，２次キャッシュＬＢＡおよびその他キャッシュ管理情報を対応付けて管理する。
【０１００】
以下、図中において既述の項目や既述の符号と同じ項目や符号は、同様の内容を示しているので、その説明は省略する。
【０１０１】
２次キャッシュLBAは、２次キャッシュ３２上の論理ブロックアドレスである。本情報処理装置１において、２次キャッシュ３２は、複数（例えば２つ）のＳＳＤ３２を備えて構成されている。キャッシュ制御部１０１は、これらの複数のＳＳＤ３２の記憶領域を、単一のＬＢＡ空間として扱い、下位の２次キャッシュドライバ１０２にて個別のＳＳＤ３２の論理LBA（SSD LBA）への変換を行なうものとする。
【０１０２】
図８に例示する２次キャッシュ管理テーブル１１２において、例えば、エントリＮｏ．＝1の２次キャッシュLBAの値“0x00”は、該当LU LBAのデータが２次キャッシュ３２上のLBA 0x00から１ページ分存在することを示している。データが２次キャッシュ３２を構成するＳＳＤ３２の内のどこに存在するかは、より下層の２次キャッシュドライバ１０２にて判断することができる。
【０１０３】
キャッシュ制御部１０１は、２次キャッシュ３２上の各エントリのデータに対してデータの読み出しや書き込みを行なう度に、２次キャッシュ管理テーブル１１２における該当ページのRead回数もしくはWrite回数をカウントアップする。
【０１０４】
例えば、図８に例示する２次キャッシュ管理テーブル１１２のエントリＮｏ．＝1の“LUN＝0”および“LU LBA＝0x1000”は、２次キャッシュ３２上にLUN0のLBA 0x1000から1ページ分のデータが存在することを示している。そして、エントリＮｏ．＝1においては、このデータに対して、リードアクセスおよびライトアクセスがそれぞれ１０回あったことを示す。
【０１０５】
また、キャッシュ制御部１０１は、２次キャッシュドライバ１０２へデータの読み出し（Read）、書き込み（Write/Staging）を要求する際に、該当ページのRead回数、Write回数を２次キャッシュドライバ１０２へ通知する。
【０１０６】
２次キャッシュ３２上に存在するデータについては、キャッシュ制御部１０１は２次キャッシュ管理テーブル１１２のRead回数およびWrite回数を通知する。すなわち、１次キャッシュ３１へのリードアクセスやライトアクセスを行なう場合である。
【０１０７】
２次キャッシュ３２上に存在しないデータを新たに書き込む場合、すなわちステージングアクセスを行なう場合には、キャッシュ制御部１０１は、１次キャッシュ管理テーブル１１１上のRead回数およびWrite回数を通知する。
【０１０８】
キャッシュ制御部１０１は、１次キャッシュ３１から破棄されたページのエントリを２次キャッシュ３２へのステージング候補として記憶する。そして、キャッシュ制御部１０１は、バックグラウンドで該当ページをＨＤＤ４０から読み出して２次キャッシュ３２へステージングする際に、該当エントリのRead回数およびWrite回数を２次キャッシュドライバ１０２へ通知する。
【０１０９】
ここで、キャッシュ制御部１０１は、１次キャッシュ管理テーブル１１１とは別に、２次キャッシュ管理テーブル１１２のような中間テーブルによって破棄したデータのRead回数やWrite回数を記憶しても良い。
【０１１０】
２次キャッシュドライバ１０２は、これらの回数を元に該当ページのアクセス傾向を判定する。このページに対するアクセス傾向の判定方法については後述する。
【０１１１】
キャッシュ制御部１０１は、２次キャッシュ３２のＬＢＡ（２次キャッシュLBA）を指定することで２次キャッシュドライバ１０２へデータの読み出しや書き込みを要求する。なお、読み出しおよび書き込みの単位は、ステージングはページ単位であり、リードおよびライトは論理ブロック単位である。
【０１１２】
ディスクドライバ１０３は、ＨＤＤ４０からのデータ読み出し、もしくはＨＤＤ４０へのデータの書き込みを行なう。すなわち、ディスクドライバ１０３は、ＨＤＤ４０に対するデータの書き込みや読み出しを行なう。
【０１１３】
２次キャッシュドライバ１０２は、ＳＳＤ３２からのデータ読み出し、もしくはＳＳＤ３２へのデータの書き込みを行なう。すなわち、２次キャッシュドライバ１０２は、２次キャッシュ３２に対するデータの書き込みや読み出しを行なう。
【０１１４】
２次キャッシュドライバ１０２は、２次キャッシュ３２および１次キャッシュ３１のデータのアクセスパターンに応じて、データを配置するＳＳＤ３２を動的に変更する。
【０１１５】
そして、本第２実施形態においては、２次キャッシュドライバ１０２は、図６に示すように、第１実施形態における２次キャッシュドライバ１０２としての機能に加えて、再配置制御部１２２としての機能を備える。
【０１１６】
再配置制御部１２２は、データの書き込み頻度と読み込み頻度とに着目して、ＳＳＤ３２間においてデータの再配置（交換，移動）を行なう。
【０１１７】
具体的には、再配置制御部１２２は、書き込み頻度の高いデータを、残り書き込み量の少ないＳＳＤ３２から、残り書き込み量の多いＳＳＤ３２へ移動させる。また、再配置制御部１２２は、残り書き込み量の多いＳＳＤ３２から、書き込み頻度が低く、且つ、読み込み頻度がより高いデータを選択して残り書き込み量の少ないＳＳＤ３２へ移動させる制御を行なう。
【０１１８】
本情報処理装置１においては、ＳＳＤ３２間においてデータの再配置を行なうことによりＳＳＤ３２の残り書き込み量の偏りを解消し、書き込み制限により発生する２次キャッシュ３２のヒット率低下を防ぐとともに、残り書き込み量の少ないＳＳＤ３２をリードキャッシュとして有効に活用することができる。
【０１１９】
ＳＳＤ３２間におけるデータの再配置においては、再配置対象のデータが格納されている再配置元のＳＳＤ３２から、再配置先のＳＳＤ３２へのデータ（再配置対象のデータ）の移動（第１の移動，再配置移動）が行なわれる。
【０１２０】
また、データの再配置には、再配置の前後での各ＳＳＤ３２のデータ量を一定に保つために、再配置先のＳＳＤ３２から再配置元のＳＳＤ３２へ、交換データ（再配置対象のデータ）の移動（第２の移動，交換移動）が行なわれる。
【０１２１】
すなわち、ＳＳＤ３２間におけるデータの再配置は、ＳＳＤ３２間におけるデータの再配置移動と交換移動との２つの処理を含む。
【０１２２】
例えば、再配置制御部１２２は、ＳＳＤ３２間においてページデータの再配置を行なうに際して、一方のＳＳＤ３２（例えば、ＳＳＤ＃１）から他方のＳＳＤ３２（例えば、ＳＳＤ３２＃０）にページデータを移動（再配置移動：第１の移動）させた後、これと交換に、ＳＳＤ＃０からＳＳＤ＃１へページデータの移動（交換移動：第２の移動）を行なう。
【０１２３】
２次キャッシュドライバ１０２は、ＳＳＤ３２へアクセスを行なう際に、指定された２次キャッシュLBAを、２次キャッシュ３２を構成するＳＳＤ３２のSSD NoおよびＳＳＤ３２の物理ＬＢＡ（SSD LBA）へ変換してＳＳＤ３２へアクセスを行なう。
【０１２４】
２次キャッシュドライバ１０２は、この２次キャッシュLBAの変換にページマッピングテーブル１２４を用いる。
【０１２５】
図９は第２実施形態の一例としての情報処理装置１におけるページマッピングテーブル１２４を例示する図である。
【０１２６】
ページマッピングテーブル１２４は、２次キャッシュ３２の全ページを管理するものである。ページマッピングテーブル１２４は、例えば、図９に示すように、エントリＮｏ．に対して、２次キャッシュLU LBA（２次キャッシュLBA），SSD No.およびSSD LBAを対応付けて管理する。
【０１２７】
ページマッピングテーブル１２４は、例えば、２次キャッシュLBAの昇順で並んでいることが望ましい。
【０１２８】
初期状態、すなわち、２次キャッシュ３２へのデータ書き込みなしの状態では、各ページは特定のＳＳＤ３２の物理ＬＢＡにマッピングされている。
【０１２９】
また、キャッシュページにマッピングされた物理ＬＢＡとは別に、各ＳＳＤ３２は特定のページにマッピングされていないフリーの物理ＬＢＡ領域を保持している。このフリーの物理ＬＢＡ領域は、２次キャッシュドライバ１０２によって、後述するフリーページリスト１２５にてページ単位で管理されるものとする。
【０１３０】
図１０は第２実施形態の一例としての情報処理装置１におけるＬＢＡマッピングの初期状態を説明するための図である。
【０１３１】
この図１０に示す例において、ＳＳＤ＃０は、２次キャッシュLBA＝0〜999に相当し、ＳＳＤ＃１は２次キャッシュLBA＝1000〜1999に相当する。
【０１３２】
そして、ＳＳＤ＃０において、SSD LBA＝0〜999が２次キャッシュLBA＝0〜999に相当し、ＳＳＤ＃１において、SSD LBA＝0〜999が２次キャッシュLBA＝1000〜1999に相当する。
【０１３３】
また、各ＳＳＤ＃０，＃１には、それぞれ、フリー域と寿命情報を格納する領域とが備えられる。
【０１３４】
前述した第１実施形態においては、キャッシュページに対する物理ＬＢＡのマッピングは固定であったが、本第２実施形態においては、再配置制御部１２２が、ページマッピングテーブル１２４を書き換え、ＳＳＤ３２間でデータの交換（再配置）を行なうことでマッピングを変更する。
【０１３５】
なお、データの再配置はページ単位で行なう。これはキャッシュデータの空間的局所性を生かして再配置を効率的に行なうためである。
【０１３６】
データの再配置は２つのＳＳＤ３２への書き込みを伴う。そのため、頻繁に行なうとそれ自体によりＳＳＤ３２の寿命を消費することになる。
【０１３７】
ここで、データの再配置が必要とされるのはＳＳＤ３２の残り書き込み量に偏りがある場合であり、残り書き込み量が均一な場合、再配置は不要である。従って、再配置制御部１２２は、ＳＳＤ３２の残り書き込み量に基づいてデータ再配置の必要性を判定する。
【０１３８】
このように、再配置制御部（必要性判定部）１２２は、２次キャッシュ３２を構成する複数のＳＳＤ３２間において再配置を行なう必要があるか否かを判定する、再配置必要性判定機能を有する。
【０１３９】
具体的には、再配置制御部１２２は、２次キャッシュ３２を構成する全てのＳＳＤ３２の書き込み可能量の平均値と、各ＳＳＤ３２の書き込み可能量とを比較する。そして、これらの値において乖離が激しい場合に、該当ＳＳＤ３２上にマッピングされたページについて再配置を行なう。
【０１４０】
ＳＳＤ３２間におけるデータの再配置は、２つのＳＳＤ３２への書き込みを伴うため、頻繁に行なうと、この再配置処理自体により、ＳＳＤ３２の寿命を消費することになる。
【０１４１】
本情報処理装置１においては、再配置が必要とされるのはＳＳＤ３２の残り書き込み量に偏りがある場合であり、残り書き込み量が均一な場合には再配置は不要であるものとする。そこで、再配置必要性判定機能においては、ＳＳＤ３２の残り書き込み量に基づいてデータ再配置の必要性を判定する。
【０１４２】
具体的には、２次キャッシュ３２を構成する全てのＳＳＤ３２の書き込み可能量の平均値と、各ＳＳＤ３２の書き込み可能量とを比較し、乖離の激しい場合に該当ＳＳＤ３２上にマッピングされたページについて再配置を行なう。
【０１４３】
再配置制御部１２２は、以下の式（３）〜（６）を用いて、書き込み可能量が平均値よりも一日分以上少ない場合に再配置が必要であると判定する。
【０１４４】
２次キャッシュ全体の残り書き込み量=（ＳＳＤ＃０  ＴＢＷ−ＳＳＤ＃０への総書き込み量）+（ＳＳＤ＃１  ＴＢＷ−ＳＳＤ＃１への総書き込み量）・・・（３）
１日当たりの書き込み可能量平均＝（２次キャッシュ全体の残り書き込み量／２次キャッシュ全体の残り保証期間（秒）×１日（＝６０×６０×２４秒））／ＳＳＤ台数・・・（４）
ＳＳＤの残り書き込み量平均＝２次キャッシュ全体の残り書き込み量／ＳＳＤ台数・・・（５）
各ＳＳＤの残り書き込み量＝（ＳＳＤ  ＴＢＷ−ＳＳＤへの総書き込み量）・・・（６）
再配置制御部１２２は、上記の式（５），（６）において、以下の式（７）に示す条件を満たす場合に、再配置が必要であると判定する。
【０１４５】
［ＳＳＤの残り書き込み量］＋［１日当たりの書き込み可能量平均］＜［ＳＳＤの残り書き込み量平均］・・・（７）
このように、再配置制御部（必要性判定部）１２２は、個々のＳＳＤ３２の書き込み可能量（ＳＳＤの残り書き込み量）と、複数のＳＳＤ３２におけるデータ書き込み可能量の平均値（ＳＳＤの残り書き込み量平均）とを比較する。そして、個々のＳＳＤ３２の書き込み可能量と、複数のＳＳＤ３２におけるデータ書き込み可能量の平均値との差が閾値（１日当たりの書き込み可能量平均）以上となった場合に、ＳＳＤ３２間におけるデータの再配置が必要であると判断する。
【０１４６】
なお、上記例においては、再配置の必要性を判断する閾値として［１日当たりの書き込み可能量平均］を用いた例を示したが、これに限定されるものではなく、他の固定値を用いる等、適宜変更して実施することができる。
【０１４７】
これらの計算は寿命管理テーブル１２３ｂ（図１１参照）の使用時間を更新する度に行なう。再配置制御部１２２は、再配置が必要であると判定した場合は、寿命管理テーブル１２３ｂにその旨を示す情報（再配置対象状態）を記憶する。また、反対に残り寿命が多いＳＳＤ３２についてもそれを記憶する。
【０１４８】
図１１は第２実施形態の一例としての情報処理装置１における寿命管理テーブル１２３ｂを例示する図である。
【０１４９】
この図１１に示す例において、寿命管理テーブル１２３ｂは、図３に例示した寿命管理テーブル１２３ａに加えて、再配置対象状態，残り書き込み量，再配置先ＳＳＤおよび１日当たりの平均書き込み可能量を寿命情報として管理する。
【０１５０】
本第２実施形態の情報処理装置１においては、寿命管理テーブル１２３ｂに記録されるこれらの情報を用いることで、再配置必要性判定機能を実現することができる。
【０１５１】
ここで、再配置対象状態は、ＳＳＤ３２毎に当該ＳＳＤ３２が上記の式（７）に示す条件を満たすか否かを示すフラグである。例えば、再配置対象であると判定された場合、すなわち、再配置が必要である場合には“１”が設定される。この再配置対象状態は、稼動時間更新時およびＳＳＤ３２の交換時のタイミングで更新される。
【０１５２】
残り書き込み量は、当該ＳＳＤ３２に書き込み可能な残容量を示す。再配置制御部１２２は、この残り書き込み量の値を比較して再配置先のＳＳＤ３２を決定する。この残り書き込み量は、稼動時間更新時およびＳＳＤ３２の交換時のタイミングで更新される。
【０１５３】
再配置先ＳＳＤは、再配置先として決定されたＳＳＤ３２を特定するための識別情報（ＳＳＤ  Ｎｏ．）が登録される。なお、再配置対象ＳＳＤ数が非対象ＳＳＤ数よりも多い場合には（再配置対象ＳＳＤ数＞非対象ＳＳＤ数）、１つのＳＳＤ３２が複数の再配置対象ＳＳＤの再配置先となってもよい。この再配置先ＳＳＤは、ＳＳＤ３２が再配置対象となったタイミングで設定される。
【０１５４】
１日当たりの平均書き込み可能量は、上記式（４）によって算出される値であり、本情報処理装置１の起動時に算出される。また、この１日当たりの平均書き込み可能量は、例えば、稼動時間更新時およびＳＳＤ３２の交換時のタイミングで更新される。
【０１５５】
再配置制御部１２２（２次キャッシュドライバ１０２）は、単位時間ごと（例えば、１０秒ごと：第１の間隔）に各ＳＳＤ３２について、以下に示す処理（a1）〜（a3）を行なう。
【０１５６】
（a1）上記の式（６）に基づき、各ＳＳＤ３２の残り書き込み量を算出する。
（a2）上記の式（２）に基づき、単位時間あたりＳＳＤ書き込み可能量を算出する。
（a3）ＳＳＤ３２が書き込み制限状態であれば、この状態を解除する。
【０１５７】
すなわち、再配置制御部１２２（２次キャッシュドライバ１０２）は、単位時間が経過する毎に、単位時間当たり書き込み可能量を再計算し、また、ＳＳＤ３２が書き込み制限状態に設定されていれば、“０”を設定することでこれをリセットする。
【０１５８】
また、再配置制御部１２２（２次キャッシュドライバ１０２）は、単位時間よりはるかに大きな間隔（例えば、数時間ごと；第２の間隔）で、書き込み制限量の元となる稼働時間および再配置対象状態の更新を行なう。書き込み制限は短い時間間隔で行なうことで書き込みエラーとなる時間を最小とし、かつリアルタイム性のある制御を行なうものである。その一方で、データの再配置は短い時間間隔では効果が出にくいため、数時間の間隔で更新を行なうのである。
【０１５９】
これらの稼働時間および再配置対象状態の更新処理は以下の処理（b1）〜（b6）に示すように行なう。
【０１６０】
（b1）各ＳＳＤ３２について記憶している稼働時間を加算する。
（b2）上記の式（６）に基づき、各ＳＳＤ３２の残り書き込み量を更新する。
（b3）上記の式（１）に基づき、２次キャッシュ全体の残り保証期間を更新する。
（b4）上記の式（４）に基づき、１日当たりの平均書き込み可能量を更新する。
（b5）各ＳＳＤ３２について、上記の式（７）に基づき、再配置対象状態であるか判定する。再配置対象としたＳＳＤ３２には再配置対象状態フラグを“１”に設定する。
（b6）処理（b5）で再配置対象とならなかった残りのＳＳＤ３２を、残り書き込み量の多い順に再配置対象ＳＳＤ３２の再配置先として割り振る。具体的には再配置対象となったＳＳＤ３２のエントリの再配置先ＳＳＤ３２に非再配置対象ＳＳＤ３２のSSD Noを設定する。なお、［再配置対象ＳＳＤ数］＞［非対象ＳＳＤ数］の場合、一つのＳＳＤ３２が複数の再配置対象ＳＳＤ３２の再配置先となっても良い。
【０１６１】
また、再配置制御部１２２（２次キャッシュドライバ１０２）は、フリーページリスト１２５および交換候補ページリスト１２６を管理する。
【０１６２】
フリーページリスト１２５には、ＳＳＤ３２において、データが格納されていない空きページ（空き領域）のSSD LBAがエントリ要素として登録される。すなわち、フリーページリスト１２５は、ＳＳＤ３２における空きページを管理するキューとして機能する。
【０１６３】
初期状態ではフリーページリスト１２５のエントリには、２次キャッシュLBAが割り当てられていないページ（領域）のSSD LBAが設定されている。
【０１６４】
交換候補ページリスト１２６には、他のＳＳＤ３２にデータを交換移動させる候補であるページ（領域）のSSD LBA，２次キャッシュLBAおよびリード回数／ライト回数比率が、エントリ要素として登録される。すなわち、交換候補ページリスト１２６は、ＳＳＤ３２における移動候補（交換候補）ページを管理するキューとして機能する。
【０１６５】
初期状態では、交換候補ページリスト１２６には、２次キャッシュLBAの割り当てられた任意の領域のSSD LBAが設定されている。
【０１６６】
再配置制御部１２２は、ＳＳＤ３２間においてデータの再配置を行なうに際して、フリーページリスト１２５を参照して、再配置先のＳＳＤ３２における空きページを確認し、この空きページに再配置対象のデータを格納することで再配置移動を実現する。
【０１６７】
また、再配置制御部１２２は、データの再配置に伴う、再配置先のＳＳＤ３２からの交換移動を行なうに際して、再配置先のＳＳＤ３２の交換候補ページリスト１２６を参照して、交換移動させる交換候補のデータが格納されているページを確認する。
【０１６８】
また、再配置制御部１２２は、再配置元のＳＳＤ３２のフリーページリスト１２５を参照して、再配置元のＳＳＤ３２における空きページを確認する。
【０１６９】
そして、再配置制御部１２２は、再配置先のＳＳＤ３２から交換候補のデータを読み出し、再配置元のＳＳＤ３２の空きページに交換データを格納することで、交換移動を実現する。
【０１７０】
本情報処理装置１においては、上述の如き、ＳＳＤ３２間におけるデータの再配置は、２次キャッシュ３２に対するライトアクセスおよびステージングアクセスのそれぞれに伴って行なわれる。
【０１７１】
なお、ライトアクセスに伴うデータの再配置においては、図１６を用いて後述するように、ＤＲＡＭ３１のドライバ作業域において、ライト対象２次キャッシュページのデータ（再配置対象データ）にライトデータがマージされ、このマージ後のデータが、再配置先のＳＳＤ３２に格納する。
【０１７２】
また、これらのＳＳＤ３２間におけるデータの再配置（再配置移動および交換移動）に伴い、再配置制御部１２２は、再配置先ＳＳＤ３２および再配置元ＳＳＤ３２のそれぞれについて、フリーページリスト１２５と交換候補ページリスト１２６との更新を行なう。
【０１７３】
なお、これらのフリーページリスト１２５および交換候補ページリスト１２６の更新方法については後述する。
【０１７４】
図１２は、第２実施形態の一例としての情報処理装置１における寿命管理テーブル１２３ｂ，ページマッピングテーブル１２４，フリーページリスト１２５および交換候補ページリスト１２６と、ＳＳＤ３２との対応関係を説明するための図である。
【０１７５】
この図１２に示すように、フリーページリスト１２５および交換候補ページリスト１２６は、ＳＳＤ３２毎に備えられる。
【０１７６】
また、寿命管理テーブル１２３ｂにおいては、個々のＳＳＤ３２を管理対象とする要素と、システム全体を管理対象とする要素とを含む。
【０１７７】
図１１に示すように、寿命管理テーブル１２３ｂにおける個々のＳＳＤ３２を管理対象とする要素とは、具体的には、ＴＢＷ，保証期間，総書き込み量，稼動時間，単位時間当たり書き込み可能量，書き込み制限状態，再配置対象状態，残り書き込み量および再配置先ＳＳＤである。また、システム全体を管理対象とする要素は、全体の残り保証期間および１日当たりの平均書き込み可能量である。
【０１７８】
これに対して、ページマッピングテーブル１２４においては、エントリ毎に関連付けられるＳＳＤ３２が異なる。
【０１７９】
再配置制御部１２２は、交換候補ページリスト１２６に登録されたページのデータを他のＳＳＤ３２に移動させる。その際、再配置制御部１２２は、フリーページリスト１２５を参照することで、移動先のＳＳＤ３２における空きページの位置を確認し、この空きページに移動対象のデータを格納することで、ＳＳＤ３２に格納済みのデータに影響を与えることなく、ＳＳＤ３２間におけるデータの移動（再配置）を実現する。
【０１８０】
すなわち、フリーページリスト１２５および交換候補ページリスト１２６は、データ（ページ）の再配置先のＳＳＤ３２（以下、再配置先ＳＳＤ３２という）において、ページ再配置の管理に使用される。
【０１８１】
なお、フリーページリスト１２５の最大エントリ数と交換候補ページリスト１２６の最大エントリ数とは等しい。また、フリーページの容量は同時にデータの交換を行なう上限値となり、１単位時間当たりにＳＳＤ３２へ書き込み可能な容量と同程度とする。また、この容量は、再配置元ＳＳＤ３２が書き込み制限状態になっても、次の単位時間までデータ交換せずに待機できる程度の容量であることが望ましい。
【０１８２】
なお、この容量は各ＳＳＤ３２単体の保証期間とＴＢＷとに基づいて算出する固定値としても良く、また、ＳＳＤ３２組み込み時に算出する２次キャッシュ３２の全体書き込み可能量から動的に設定しても良い。
【０１８３】
再配置制御部１２２（２次キャッシュドライバ１０２）は、再配置元ＳＳＤ３２からライト頻度の高いページ（図５に示すアクセスパターンＡのページ）を、再配置先ＳＳＤ３２のフリーページリスト１２５の示す領域に書き込む（第１の再配置）。また、これと交換に、再配置制御部１２２は、交換候補ページリスト１２６の示すリード頻度の高いページ（アクセスパターンＢのページ）を、再配置元ＳＳＤ３２へ書き込む（第２の再配置）。
【０１８４】
これらのフリーページリスト１２５および交換候補ページリスト１２６は双方向リストである。例えば、フリーページリスト１２５のエントリには、ＳＳＤ  ＬＢＡが記録されている。
【０１８５】
これに対して、交換候補ページリスト１２６のエントリには、ＳＳＤ  ＬＢＡが記録されている。さらに、交換候補ページリスト１２６のエントリには、２次キャッシュＬＢＡ，およびリード回数／ライト回数の回転比率が記録されている。
【０１８６】
（Ｂ）動作
【０１８７】
（Ｂ−１）２次キャッシュリードアクセス
例えば、ユーザアプリ１０４からの読み込み要求に対してキャッシュ制御部１０１が２次キャッシュ３２のキャッシュヒット（２次キャッシュヒット）を判定した場合に、２次キャッシュ３２のリードアクセスが行なわれる。
【０１８８】
再配置制御部１２２は、リードアクセスを契機に、対象の２次キャッシュ３２のキャッシュページのリード回数（Read回数）、およびRead回数とWrite回数との比を確認する。再配置制御部１２２は、例えば、２次キャッシュ３２における当該リード対象のキャッシュページ（対象ページ、該当ページ）がアクセスパターンＢ、すなわち、残り寿命の短いＳＳＤ３２へ配置すべきデータであるか判定する。
【０１８９】
対象ページがアクセスパターンＢに該当する場合には、再配置制御部１２２は、この対象ページについての情報をＳＳＤ３２の交換候補ページリスト１２６に記録する。そして、再配置制御部１２２は、後述のライトアクセス、ステージングアクセスにおいて再配置の実施を決定した場合に、この対象ページのデータを寿命の短いＳＳＤ３２へ移動（再配置）させる。
【０１９０】
上述の如く構成された第２実施形態の一例としての情報処理装置１における２次キャッシュ３２に対するリードアクセス処理を、図１３に示すフローチャート（ステップＡ１〜Ａ１１）に従って説明する。
【０１９１】
キャッシュ制御部１０１が２次キャッシュドライバ１０２にリード要求を発行することで、以下の処理が開始される。
【０１９２】
本処理においては、２次キャッシュLBA，論理ブロック数，リード対象ページ（以下、対象ページ，該当２次キャッシュページもしくは該当ページという場合がある）の２次キャッシュ管理テーブル１１２におけるRead回数およびWrite回数が入力される。また、これらの情報に加えて、ＤＲＡＭ３１上におけるデータを転送すべき領域の指定も行なわれる。
【０１９３】
ステップＡ１において、再配置制御部１２２（２次キャッシュドライバ１０２）は、ページマッピングテーブル１２４に対して、該当２次キャッシュLBAを含むページのエントリを参照する。
【０１９４】
ステップＡ２において、再配置制御部１２２は、対象ページにマッピングされたSSD No，SSD LBAおよびLBAオフセットより、対応するＳＳＤ３２のSSD LBAからデータを読み出し、指定されたＤＲＡＭ３１上の１次キャッシュ領域に転送する。
【０１９５】
なお、指定された全てのデータを転送した後、２次キャッシュドライバ１０２は、キャッシュ制御部１０１にリード完了を通知する。また、キャッシュ制御部１０１は、さらに上位のユーザアプリ１０４にリード完了を通知する。以降の処理は、ユーザアプリ１０４に対してはバックグラウンド処理として実行することができる。
【０１９６】
ステップＡ３において、キャッシュ制御部１０１は、２次キャッシュドライバ１０２からリード完了の通知を受けると、２次キャッシュ管理テーブル１１２の該当ページのRead回数をインクリメント（１を加算）する。
【０１９７】
ステップＡ４において、２次キャッシュドライバ１０２は、キャッシュ制御部１０１から受け取ったRead回数が一定の閾値以上であるかを判定する。Read回数が閾値より小さい場合は（ステップＡ４のＮＯルート参照）、該当２次キャッシュページを交換候補とはせずに、処理を終了する。
【０１９８】
一方、ステップＡ４における確認の結果、Read回数が閾値以上の場合は（ステップＡ４のＹＥＳルート参照）、ステップＡ５に移行する。
【０１９９】
ステップＡ５において、２次キャッシュドライバ１０２は、キャッシュ制御部１０１から通知された該当２次キャッシュ３２のキャッシュページのWrite回数およびRead回数を用いて、該当２次キャッシュページのRead回数／Write回数の比率を算出する。
【０２００】
ステップＡ６において、ステップＡ５で算出したRead回数／Write回数の比が１未満である場合（ステップＡ６のＮＯルート参照）、すなわち、対象ページがRead回数よりWrite回数が多いページの場合には、処理を終了する。
【０２０１】
一方、ステップＡ５で算出したRead回数／Write回数の比が１以上である場合（ステップＡ６のＹＥＳルート参照）、すなわち、対象ページがRead回数の方がWrite回数よりも多いページである場合には、前述したアクセスパターンＢに該当し、このページのデータは、寿命の短い他のＳＳＤ３２に書き込む交換候補ページとする。
【０２０２】
ステップＡ７において、再配置制御部１２２は、交換候補ページリスト１２６を参照して、リードした２次キャッシュページがマッピングされている該当ＳＳＤ３２の交換候補ページリスト１２６のエントリが最大まで埋まっているかを確認する。すなわち、再配置制御部１２２は、交換候補ページリスト１２６に空きがあるかを確認する。
【０２０３】
確認の結果、該当ＳＳＤ３２の交換候補ページリスト１２６に空きが無ければ（ステップＡ７のＮＯルート参照）、ステップＡ８に移行する。
【０２０４】
ステップＡ８において、再配置制御部１２２は、交換候補ページリスト１２６の最後のエントリのRead回数／Write回数比率が、リード対象２次キャッシュ３２のページのRead回数／Write回数比以上かを確認する。すなわち、再配置制御部１２２は、対象ページのRead回数／Write回数比が、交換候補ページリスト１２６の最後尾に登録されている（最終エントリの）Read回数／Write回数比よりも大きいか否かを確認する。
【０２０５】
確認の結果、リード対象ページのRead回数／Write回数比が、交換候補ページリスト１２６の最終エントリ以下の場合には（ステップＡ８のＮＯルート参照）、再配置制御部１２２は、対象の２次キャッシュ３２のキャッシュページを交換候補とはせずに、処理を終了する。
【０２０６】
また、確認の結果、リード対象ページのRead回数／Write回数比が、交換候補ページリスト１２６の最終エントリより大きい場合には（ステップＡ８のＹＥＳルート参照）、ステップＡ９に移行する。
【０２０７】
ステップＡ９において、再配置制御部１２２は、交換候補ページリスト１２６の最終エントリをリード対象ページのSSD LBA，２次キャッシュLBAおよびRead回数／Write回数比を用いて上書きする。その後、ステップＡ１１に移行する。
【０２０８】
また、ステップＡ７における確認の結果、該当ＳＳＤ３２の交換候補ページリスト１２６に空きがある場合には（ステップＡ７のＹＥＳルート参照）、ステップＡ１０に移行する。
【０２０９】
ステップＡ１０においては、再配置制御部１２２は、交換候補ページリスト１２６の最後尾にエントリを追加し、SSD LBA，２次キャッシュLBAおよびRead回数／Write回数比を記録する。
【０２１０】
その後、ステップＡ１１において、再配置制御部１２２は、交換候補ページリスト１２６の最後尾エントリについて、当該交換候補ページリスト１２６に登録されている他のエントリとRead回数／Write回数比を比較する。そして、再配置制御部１２２は、交換候補ページリスト１２６に登録されたエントリを、Read回数／Write回数比の大きいものから順に並ぶようにソートして（並べ替えて）、処理を終了する。
【０２１１】
（Ｂ−２）２次キャッシュライトアクセス
再配置制御部１２２は、２次キャッシュ３２上のデータが更新されるタイミングで、書き込み対象（ライト対象）のＳＳＤ３２が再配置対象状態である場合には、書き込み先ページのデータの再配置を検討する。
【０２１２】
具体的には、例えば、ライト対象の２次キャッシュ３２のキャッシュページ（以下、ライト対象ページ、対象ページ，当該ページという場合がある）のWrite回数が一定値以上の場合に、再配置制御部１２２は、対象ページが前述したアクセスパターンＡ、すなわち、対象ページのデータは寿命の長いＳＳＤ３２へ配置すべきデータであると判定する。再配置制御部１２２は、寿命管理テーブル１２３ｂに設定されたＳＳＤ３２へマッピングを変更する。
【０２１３】
また、再配置制御部１２２は、再配置先ＳＳＤ３２の交換候補ページリスト１２６からRead回数／Write回数比の大きいページを再配置対象のＳＳＤ３２へ書き込む。これによって、ライトアクセス頻度の高いページは残り書き込み量の多いＳＳＤ３２へ、ライトアクセス頻度は低く、リードキャッシュとしては有用なページを残り書き込み量の少ないＳＳＤ３２へ再配置してＳＳＤ３２の使用の効率化を図る。
【０２１４】
上述の如く構成された第２実施形態の一例としての情報処理装置１における２次キャッシュ３２に対するライトアクセス時の処理を、図１６および図１７を参照しながら、図１４および図１５に示すフローチャート（ステップＢ１〜Ｂ３２）に従って説明する。
【０２１５】
なお、図１４はステップＢ１〜Ｂ１８を、図１５はステップＢ１９〜Ｂ３２を、それぞれ示す。また、図１６および図１７は、それぞれデータの再配置を伴うライトの過程を説明するための図であり、図１６はＳＳＤ＃１からＳＳＤ＃０へのデータの移動（再配置）を、図１７はＳＳＤ＃０からＳＳＤ＃１へのデータの移動（再配置）をそれぞれ示す。
【０２１６】
なお、これらの図１６，図１７に示す例においては、ＳＳＤ＃０の残り書き込み可能量が多く、ＳＳＤ＃１の残り書き込み可能量が少ないものとする。
【０２１７】
例えば、ユーザアプリ１０４からのライト要求に対してキャッシュ制御部１０１が２次キャッシュ３２のキャッシュヒットを判定した場合に、２次キャッシュ３２のライトアクセスが行なわれる。
【０２１８】
なお、ライトの２次キャッシュヒットに対する処理として、２次キャッシュ３２上のデータを直接書き換える手法と、１次キャッシュ３１上に書き込んだ後にバックグラウンドで２次キャッシュ３２上のデータを書き換える手法とが考えられる。本第２実施形態においては、後者を想定するものとする。
【０２１９】
キャッシュ制御部１０１が２次キャッシュドライバ１０２に対してライト要求を発行することで、以下の処理が開始される（図１６の符号Ｐ００参照）。
【０２２０】
本処理においては、２次キャッシュLBA，論理ブロック数，ライト対象ページ（以下、対象ページ，該当２次キャッシュページもしくは該当ページという場合がある）の２次キャッシュ管理テーブル１１２におけるRead回数およびWrite回数が入力される。また、これらの情報に加えて、ＤＲＡＭ３１上におけるデータを転送すべき領域の指定も行なわれる。
【０２２１】
ステップＢ１において、再配置制御部１２２（２次キャッシュドライバ１０２）は、ページマッピングテーブル１２４に対して、該当２次キャッシュLBAを含むページのエントリを参照する。
【０２２２】
ステップＢ２において、再配置制御部１２２は、対象ページのマッピングされたＳＳＤ３２の寿命管理テーブル１２３ｂを参照し、該当ＳＳＤ３２が書き込み制限状態であるかを確認する。
【０２２３】
該当ＳＳＤ３２が書き込み制限状態の場合、すなわち、ライト要求されたページのマッピング先ＳＳＤ３２が書き込み制限状態の場合には（ステップＢ２のＹＥＳルート参照）、ステップＢ３に移行する。
【０２２４】
ステップＢ３において、再配置制御部１２２は、データの書き込みをあきらめて該当２次キャッシュページを破棄する。
【０２２５】
再配置制御部１２２は、キャッシュ制御部１０１に対して、書き込み不可である旨を通知する。キャッシュ制御部１０１は、２次キャッシュ管理テーブル１１２から該当ページを削除し、処理を終了する。
【０２２６】
ここで、ユーザアプリ１０４によるライトデータは、２次キャッシュ３２上には直接格納されず、常にＤＲＡＭ３１の１次キャッシュ３１上もしくはＨＤＤ４０上に存在するものとする。２次キャッシュ３２上にしか存在しないライトデータを有する場合は、該当２次キャッシュページの削除が不可能だからである。
【０２２７】
なお、このようなデータの存在を許す実装は、上述したステップＢ３の処理に代えて、該当２次キャッシュページを読み出してＤＲＡＭ３１の１次キャッシュ３１もしくはＨＤＤ４０に書き込んでから削除する等の処理に置き換えることで実現可能である。
【０２２８】
また、ステップＢ２における確認の結果、該当ＳＳＤ３２が書き込み制限状態でない場合（ステップＢ２のＮＯルート参照）、ステップＢ４に移行する。
【０２２９】
ステップＢ４において、再配置制御部１２２は、更に、該当ＳＳＤ３２の寿命管理テーブル１２３ｂを参照して、再配置対象状態であるかを確認する。確認の結果、ＳＳＤ３２が再配置対象状態でない場合には（ステップＢ４のＮＯルート参照）、データのＳＳＤ３２間の再配置（移動）は実施せず、ステップＢ８に移行する。
【０２３０】
一方、確認の結果、ＳＳＤ３２が再配置状態である場合には（ステップＢ４のＹＥＳルート参照）、ステップＢ５に移行する。
【０２３１】
ステップＢ５においては、再配置制御部１２２は、該当２次キャッシュページのWrite回数が所定の閾値以上であるかを確認する。確認の結果、Write回数が閾値未満の場合は（ステップＢ５のＮＯルート参照）、データのＳＳＤ３２間の再配置は不要と判断され、ステップＢ８に移行する。
【０２３２】
また、ステップＢ５における確認の結果、Write回数が閾値以上の場合は（ステップＢ５のＹＥＳルート参照）、ステップＢ６に移行する。
【０２３３】
ステップＢ６においては、再配置制御部１２２は、ライト要求された２次キャッシュページのマッピング先ＳＳＤ３２の寿命管理テーブル１２３ｂより再配置先SSD Noを取得し、再配置先ＳＳＤ３２が書き込み制限状態であるかを確認する。
【０２３４】
確認の結果、再配置先ＳＳＤ３２が書き込み制限状態である場合（ステップＢ６のＹＥＳルート参照）、書き込みの制限を優先して再配置はあきらめ、ステップＢ８へ移行する。
【０２３５】
また、確認の結果、再配置先ＳＳＤ３２が書き込み制限状態でない場合には（ステップＢ６のＮＯルート参照）、ステップＢ７に移行する。
【０２３６】
ステップＢ７においては、再配置制御部１２２は、再配置先ＳＳＤ３２のフリーページリスト１２５にエントリが存在するか確認する。再配置先ＳＳＤ３２のフリーページリスト１２５にエントリがない場合（ステップＢ７のＮＯルート参照）、すなわち、フリーページが枯渇している場合は、再配置をあきらめて、ステップＢ８に移行する。
【０２３７】
なお、上記のステップＢ６，Ｂ７の処理を、再配置先ＳＳＤ３２を確認する再配置先ＳＳＤチェック処理という。この再配置先ＳＳＤチェック処理においては、ＳＳＤ３２の再配置をあきらめて、再配置を行なわないという選択が行なわれ得る。
【０２３８】
この再配置先ＳＳＤチェック処理は後述するステージングアクセスにおいても同様に行なわれる（図１８のステップＣ８参照）。
【０２３９】
また、以下のステップＢ８〜Ｂ１３においては、データの再配置を実施せずに、現在マッピングされているＳＳＤ３２のSSD LBAへライトデータを書き込む処理を行なう。
【０２４０】
先ず、ステップＢ８〜Ｂ１０において、ＳＳＤ３２への書き込み量判定処理を行なう。以下のステップＢ８〜Ｂ１０の処理は、ＳＳＤ３２にデータの書き込みを行うたびに実施する処理であり、これによりＳＳＤ３２が書き込み制限状態になるべきかを判定する。
【０２４１】
ステップＢ８において、再配置制御部１２２は、マッピング先ＳＳＤ３２の寿命管理テーブル１２３ｂを参照して、単位時間当たりの書き込み可能量からライト要求で指定された論理ブロック数を減算する。
【０２４２】
ステップＢ９において、再配置制御部１２２は、減算した結果の書き込み可能量が０以下であるかを判定し、書き込み可能量が０以下である場合には（ステップＢ９のＹＥＳルート参照）、ステップＢ１０に移行する。
【０２４３】
ステップＢ１０において、再配置制御部１２２は、マッピング先ＳＳＤ３２の単位時間当たり書き込み可能量が０以下となった場合に、該当ＳＳＤ３２を書き込み制限状態にする。
【０２４４】
なお、書き込み可能量が０以下となった場合に、超過した分の書き込み量を寿命管理テーブル１２３ｂに記憶し、次の単位時間で設定される書き込み可能量からあらかじめ超過分の書き込み量を減じても良い。
【０２４５】
その後、ステップＢ１１において、再配置制御部１２２は、マッピング先ＳＳＤ３２が書き込み制限状態でなく再配置も実施しない場合、マッピング先ＳＳＤ３２にライトデータを書きこむ。また、ステップＢ９における確認の結果、減算した結果の書き込み可能量が０より多い場合にも（ステップＢ９のＮＯルート参照）、ステップＢ１１に移行する。
【０２４６】
ステップＢ１２において、マッピング先ＳＳＤ３２へのデータ書き込みが完了したら、再配置制御部１２２は、該当ＳＳＤ３２の寿命管理テーブル１２３ｂの総書き込み量に書き込んだブロック数分を加算する。その後、再配置制御部１２２は、キャッシュ制御部１０１にライト（Write）処理の処理完了を通知する。
【０２４７】
ステップＢ１３において、２次キャッシュドライバ１０２からライト処理の完了を通知されたキャッシュ制御部１０１は２次キャッシュ管理テーブル１１２の該当ページのエントリのWrite回数を加算し、処理を終了する。
【０２４８】
一方、ステップＢ７における確認の結果、再配置先ＳＳＤ３２のフリーページリスト１２５にエントリがある場合（ステップＢ７のＹＥＳルート参照）、すなわち、フリーページがある場合は、ページの再配置を行なうべく、ステップＢ１４以下の処理を行なう。
【０２４９】
ステップＢ１４において、再配置制御部１２２は、フリーページリスト１２５の先頭エントリを取得し、同エントリに記載されたページをライト対象ページの再配置先とする。
【０２５０】
ステップＢ１５において、再配置制御部１２２は、再配置先に指定されたＳＳＤ３２（再配置先ＳＳＤ３２）について書き込み量判定処理を行なう。すなわち、再配置制御部１２２は、再配置先ＳＳＤ３２の寿命管理テーブル１２３ｂにおける単位時間当たり書き込み可能量を減算して、０以下となるか判定する。単位時間当たり書き込み可能量が０以下の場合は、該当ＳＳＤ３２を書き込み制限状態にする。なお、前述したステップＢ８においては、ライト要求された論理ブロック数を減じたのに対し、ここでは１ページ分のブロック数を減じる。
【０２５１】
ステップＢ１６において、再配置制御部１２２は、ライト要求された２次キャッシュページのマッピングされたＳＳＤ３２（再配置元ＳＳＤ３２）から、ＤＲＡＭ３１上の作業領域（ドライバ作業域）に該当ページのデータ（１ページ分）を読み出す（図１６の符号Ｐ０１参照）。
【０２５２】
再配置元ＳＳＤ３２からのライト対象２次キャッシュページのデータ（再配置対象データ）の読み出しが完了すると、ステップＢ１７において、再配置制御部１２２は、ＤＲＡＭ３１の作業領域上に読み出したライト対象２次キャッシュページのデータに、キャッシュ制御部１０１より要求され、ＤＲＡＭ３１（１次キャッシュ３１）に格納されていたライトデータをマージする（図１６の符号Ｐ０２参照）。
【０２５３】
ステップＢ１８において、再配置制御部１２２は、ＤＲＡＭ３１上の作業領域から再配置先ＳＳＤ３２のSSD LBAへ該当ページデータを書きこむ（図１６の符号Ｐ０３参照）。
【０２５４】
ステップＢ１９において、再配置制御部１２２は、再配置先ＳＳＤ３２への書き込みが完了すると、再配置先ＳＳＤ３２の寿命管理テーブル１２３ｂの総書き込み量を加算する。
【０２５５】
ステップＢ２０において、再配置制御部１２２は、ページマッピングテーブル１２４の該当ページエントリのSSD No、SSD LBAを再配置先のページの値に更新する。なお、SSD LBAは再配置先ＳＳＤ３２のフリーページリスト１２５のエントリで指定された値を用いる。
【０２５６】
ステップＢ２１において、再配置制御部１２２は、再配置元ＳＳＤ３２のライト対象ページが存在したSSD LBAをフリーページとして、再配置元ＳＳＤ３２のフリーページリスト１２５の最後尾エントリに追加する（図１６の符号Ｐ０４参照）。
【０２５７】
ステップＢ２２において、再配置制御部１２２は、ページマッピングテーブル１２４および再配置元ＳＳＤ３２のフリーページリスト１２５の更新が完了すると、キャッシュ制御部１０１へライト完了を通知する。通知を受けたキャッシュ制御部１０１は２次キャッシュ管理テーブル１１２の該当ページのWrite回数を1加算する。
【０２５８】
以上のように、ＳＳＤ３２間における２次キャッシュページデータの再配置（第１の再配置）を伴うライト処理が行なわれる。
【０２５９】
なお、これ以降、すなわち、ステップＢ２３以降の処理は、２次キャッシュドライバ１０２のみが実施し、キャッシュ制御部１０１に対してはバックグラウンド処理として動作できる。
【０２６０】
そして、以下に示すステップＢ２３〜Ｂ３２の処理を、ページ交換処理という。このページ交換処理は、後述するステージングアクセスにおいても同様に行なわれる（図１８のステップＣ１８参照）。
【０２６１】
ステップＢ２３において、上述の如く第１の再配置を実施した場合、再配置制御部１２２は、キャッシュ制御部１０１にライト完了を通知した後でバックグラウンドに処理を継続する。
【０２６２】
初めに、再配置制御部１２２は再配置先ＳＳＤ３２の交換候補ページリスト１２６の先頭エントリを取得する。これはRead回数が一定以上でRead回数／Write回数の比率の高い寿命の近い再配置元ＳＳＤ３２に配置すべきデータである。
【０２６３】
ステップＢ２４において、２次キャッシュドライバ１０２は再配置元ＳＳＤ３２が書き込み制限状態であるか確認する。なお、前述した図１４のステップＢ２において当該ＳＳＤ３２が書き込み制限状態であるか否かを確認したにもかかわらず再確認を行なうのは、以下の理由による。すなわち、再配置元ＳＳＤ３２からのデータの読み出しおよび再配置先ＳＳＤ３２へのデータ書き込みを待っている間に、別のプロセスによって再配置元ＳＳＤ３２へ更なるデータ書き込みが実施された可能性があるからである。
【０２６４】
ステップＢ２４における確認の結果、再配置元ＳＳＤ３２が書き込み制限状態でない場合には（ステップＢ２４のＮＯルート参照）、ステップＢ２５において、次の監視時間まで待機する。すなわち、次の単位時間まで処理を待ち、制限状態が解除されると、ステップＢ２６に移行する。
【０２６５】
また、ステップＢ２４における確認の結果、再配置元ＳＳＤ３２が書き込み制限状態である場合にも（ステップＢ２４のＹＥＳルート参照）、ステップＢ２６に移行する。
【０２６６】
ステップＢ２６においては、再配置制御部１２２は再配置元ＳＳＤ３２について書き込み量判定処理を行なう。すなわち、前述したステップＢ８〜Ｂ１０と同様の処理を行なう。ここで、単位時間当たり書き込み可能量から減じるブロック数は１ページ分のブロック数である。
【０２６７】
ステップＢ２７において、再配置制御部１２２は、再配置先ＳＳＤ３２の交換候補ページリスト１２６の先頭エントリを取得し、そこに記載された再配置先ＳＳＤ３２のSSD LBAから１ページ分のデータをＤＲＡＭ３１上の作業領域に読み出す（図１７の符号Ｐ０５参照）。
【０２６８】
ＤＲＡＭ３１上の作業領域へのデータの読み出しが完了すると、ステップＢ２８において、再配置制御部１２２は、再配置元ＳＳＤ３２のフリーページリスト１２５の任意のエントリ（フリーページエントリ）を取得する。
【０２６９】
ステップＢ２９において、再配置制御部１２２は、再配置元ＳＳＤ３２のフリーページエントリに指定されたSSD LBAに、ステップＢ２７においてＤＲＡＭ３１の作業領域に読み出したページデータを書きこむ（図１７の符号Ｐ０６参照）。
【０２７０】
このフリーページへのデータの書き込みが完了すると、ステップＢ３０において、再配置制御部１２２は、再配置元ＳＳＤ３２の総書き込み量を１ページ分加算する。
【０２７１】
ステップＢ３１において、再配置制御部１２２は、交換候補ページリスト１２６のエントリ（交換候補ページエントリ）の２次キャッシュLBAに基づいて、ページマッピングテーブル１２４の該当ページエントリを検索し、SSD No、SSD LBAの値を再配置元ＳＳＤ３２のフリーページエントリに記載されたSSD LBAを用いて更新する。これにより、再配置制御部１２２は、ページマッピングテーブル１２４における交換候補ページのエントリを書き換える。
【０２７２】
ステップＢ３２において、再配置制御部１２２は、再配置先ＳＳＤ３２の交換候補ページリスト１２６のエントリのSSD LBAをフリーページリスト１２５のエントリの最後尾に追加して、処理を終了する。
【０２７３】
（Ｂ−３）ステージングアクセス
２次キャッシュ３２へのステージングは、ライトと同様にＳＳＤ３２への書き込みを伴う処理であるが、ライトアクセスが既存のデータ変更であるのに対し、書き込まれるデータがこれまでとは別もの、すなわち、ＨＤＤ４０上の別の領域のデータである点で、ライトアクセスと異なる。
【０２７４】
このため、キャッシュ制御部１０１は、Read回数やWrite回数を通知する際に、２次キャッシュ管理テーブル１１２ではなく、１次キャッシュ管理テーブル１１１（もしくは別のステージング管理テーブル）の値を使用する。
【０２７５】
２次キャッシュ管理テーブル１１２の該当エントリは新規作成され、Read回数およびWrite回数は０に初期化される。
【０２７６】
再配置制御部１２２（２次キャッシュドライバ１０２）は、ライトアクセスと同様に、このWrite回数をもとにページの再配置を決定するが、閾値はライトアクセスの場合とは異なる。
【０２７７】
１次キャッシュ３１と２次キャッシュ３２とでは、アクセス頻度やデータがキャッシュ上（記憶領域上）に存在する時間が異なるため、Write回数の閾値はライトアクセスとステージングアクセスとで別に設定され、それぞれ適切にチューニングされることが望ましい。
【０２７８】
Write回数が閾値以上の場合は、再配置制御部１２２は、該当ページがアクセスパターンＡ、すなわち、寿命の長いＳＳＤ３２に配置すべきデータであると判定して、ライトアクセスの場合と同様に再配置先ＳＳＤ３２へページを再配置する。
【０２７９】
上述の如く構成された第２実施形態の一例としての情報処理装置１における２次キャッシュ３２に対するステージングアクセス時の処理を、図１９および図２０を参照しながら、図１８に示すフローチャート（ステップＣ１〜Ｃ１８）に従って説明する。
【０２８０】
なお、図１９および図２０は、それぞれデータの再配置を伴うステージングの過程を説明するための図であり、図１９はＳＳＤ＃０へのデータの移動（再配置）を、図２０はＳＳＤ＃０からＳＳＤ＃１へのデータの移動（再配置）をそれぞれ示す。
【０２８１】
なお、これらの図１９，図２０に示す例においては、ＳＳＤ＃０の残り書き込み可能量が多く、ＳＳＤ＃１の残り書き込み可能量が少ないものとする。
【０２８２】
キャッシュ制御部１０１は、ユーザアプリ１０４の要求とは非同期に２次キャッシュ３２へのデータのステージングを決定し、ステージング要求が発行される。これにより、以下の処理が開始される。
【０２８３】
これは例えば１次キャッシュ３１からのデータの追い出しなどを契機に対象ページが設定され、ユーザアプリ１０４に対してバックグラウンドで実行される。
【０２８４】
ステップＣ１において、キャッシュ制御部１０１は、ＨＤＤ４０よりステージング対象ページをＤＲＡＭ３１の作業領域に読み出す。なお、実際には、キャッシュ制御部１０１は、ディスクドライバ１０３等の、ＨＤＤ４０の制御を管理する別のソフトウェアモジュールに、ＨＤＤ４０からのデータの読み出しを依頼する。
【０２８５】
ＨＤＤ４０からＤＲＡＭ３１上へ１ページ分のデータの読み出しが完了すると、ステップＣ２において、キャッシュ制御部１０１は、２次キャッシュドライバ１０２にステージング要求を行なう（図１９の符号Ｐ０７参照）。
【０２８６】
本処理においては、２次キャッシュLBAおよび、１次キャッシュ管理テーブル１１１の該当ページのRead回数およびWrite回数が入力される。また、これらの情報に加えて、ＤＲＡＭ３１上における該当ページが存在する作業領域の指定も行なわれる。
【０２８７】
ここで、ステージング対象の２次キャッシュLBAは、キャッシュ制御部１０１が、２次キャッシュ３２の領域の内の無効なページの中から選択する。キャッシュ制御部１０１は、無効なページを管理するために２次キャッシュ管理テーブル１１２とは別に２次キャッシュLBAに関するフリーページリストなどを持つ。
【０２８８】
キャッシュ制御部１０１からステージング要求を受けると、ステップＣ３において、再配置制御部１２２（２次キャッシュドライバ１０２）は、要求された２次キャッシュLBAに一致する、ページマッピングテーブル１２４のエントリを参照する。
【０２８９】
ステップＣ４においては、再配置制御部１２２は、ページマッピングテーブル１２４でステージング要求先の２次キャッシュ３２のページ（２次キャッシュページ）にマッピングされたＳＳＤ３２の寿命管理テーブル１２３ｂを参照する。そして、該当ページにマッピングされたＳＳＤ３２が書き込み制限状態であるかを確認する。
【０２９０】
確認の結果、ＳＳＤ３２が書き込み制限状態である場合は（ステップＣ４のＹＥＳルート参照）、ステップＣ５に移行する。ステップＣ５において、再配置制御部１２２は、キャッシュ制御部１０１へステージング不能である旨を通知する。再配置制御部１２２は、該当ページのステージングを諦め、ＤＲＡＭ３１上に読み出したデータを破棄して処理を終了する。
【０２９１】
ステップＣ４における確認の結果、マッピング先ＳＳＤ３２が書き込み制限状態でない場合（ステップＣ４のＮＯルート参照）、ステップＣ６に移行する。ステップＣ６においては、再配置制御部１２２は、さらに、該当ＳＳＤ３２が再配置対象状態であるかを確認する。
【０２９２】
ステップＣ６における確認の結果、ＳＳＤ３２が再配置対象状態の場合（ステップＣ６のＹＥＳルート参照）、ステップＣ７において、再配置制御部１２２は、ステージング要求時に受け取った該当ページの１次キャッシュ３１上のWrite回数が閾値以上であるかを判定する。
【０２９３】
１次キャッシュ３１上のWrite回数が閾値以上である場合（ステップＣ７のＹＥＳルート参照）、再配置制御部１２２は、ステージングするＳＳＤ３２を再配置先ＳＳＤ３２に変更する。
【０２９４】
再配置制御部１２２（２次キャッシュドライバ１０２）は、ステージング要求された２次キャッシュLBAのマッピングされていたＳＳＤ３２の寿命管理テーブル１２３ｂより再配置先SSD Noを取得する。ステップＣ８において、再配置制御部１２２は、このＳＳＤ３２について再配置先ＳＳＤチェック処理を実施する。すなわち、前述した図１４のステップＢ６，Ｂ７と同様の処理を行なう。
【０２９５】
このステップＣ８における再配置先ＳＳＤチェック処理において、ステージング先のＳＳＤ３２の再配置をあきらめ、再配置を行なわない場合には、ステップＣ９に移行する。
【０２９６】
また、ステップＣ６においてＳＳＤ３２が再配置対象状態でない場合（ステップＣ６のＮＯルート参照）、および、ステップＣ７において１次キャッシュ３１上のWrite回数が閾値未満である場合（ステップＣ７のＮＯルート参照）も、それぞれステップＣ９に移行する。
【０２９７】
ステップＣ９において、再配置制御部１２２は、マッピング先ＳＳＤ３２について書き込み量判定処理を行なう。すなわち、前述した図１４のステップＢ８〜Ｂ１０と同様の処理を行なう。なお、単位時間当たり書き込み可能量から減算するのはキャッシュ制御部１０１からのステージング要求で指定された１ページ分の論理ブロック数である。
【０２９８】
その後、ステップＣ１０において、再配置制御部１２２は、ページマッピングテーブル１２４上でステージング対象２次キャッシュLBAがマッピングされたＳＳＤ３２のSSD LBAへデータを書き込む。この書き込むデータは、上記ステップＣ１において、ＤＲＡＭ３１上に読み出されたＨＤＤ４０上のデータである。
【０２９９】
ＳＳＤ３２へのＨＤＤ４０のデータの書き込みが完了すると、ステップＣ１１において、再配置制御部１２２は、マッピング先ＳＳＤ３２の総書き込み量に１ページ分の論理ブロック数を加算する。
【０３００】
ステップＣ１２において、再配置制御部１２２は、キャッシュ制御部１０１にステージング完了を通知する。通知を受けたキャッシュ制御部１０１は２次キャッシュ管理テーブル１１２にステージングが成功した２次キャッシュページのエントリを追加する。２次キャッシュ管理テーブル１１２のWrite回数およびRead回数は０に初期化される。テーブルの更新が完了すると、ステージング処理を終了する。
【０３０１】
一方、ステップＣ８の再配置先ＳＳＤチェック処理の結果、ステージング対象ページを再配置する場合には、ステップＣ１３に移行する。
【０３０２】
ステップＣ１３において、再配置制御部１２２は、再配置先ＳＳＤ３２のフリーページリスト１２５の先頭エントリを取得し、同エントリのSSD LBAを再配置先とする。
【０３０３】
ステップＣ１４において、再配置制御部１２２は、上述したステップＣ１でＤＲＡＭ３１上に読み出されたＨＤＤ４０上のデータを再配置先ＳＳＤ３２のフリーページエントリに示されたSSD LBAへ書きこむ（図１９の符号Ｐ０８参照）。
【０３０４】
なお、ライトアクセスとは異なり、ステージングにおいては、再配置元ＳＳＤ３２上のマッピングされたSSD LBA上のデータは無効データなので、読み出しとマージ処理は不要である。
【０３０５】
ステップＣ１４における、再配置先ＳＳＤ３２へのＤＲＡＭ３１上のデータの書き込みが完了すると、ステップＣ１５において、再配置制御部１２２は、再配置先ＳＳＤ３２の寿命管理テーブル１２３ｂの総書き込み量を１ページ分加算する。
【０３０６】
ステップＣ１６において、再配置制御部１２２は、ページマッピングテーブル１２４の該当ページエントリのSSD No、SSD LBAを更新する。すなわちSSD Noを再配置先ＳＳＤ３２に、SSD LBAをフリーページリスト１２５のエントリに示されたSSD LBAに変更する。
【０３０７】
ステップＣ１７において、再配置制御部１２２は、キャッシュ制御部１０１へステージング完了を通知する。ステージング完了の通知を受けたキャッシュ制御部１０１は２次キャッシュ管理テーブル１１２にステージングしたページのエントリを追加する。これは、スップＣ１２における再配置しない場合の処理と同様の処理が実行される。
【０３０８】
キャッシュ制御部１０１へステージング完了通知を行なった後、再配置制御部１２２は、ステップＣ１８においてページ交換処理を実施する。
【０３０９】
ページ交換処理は、図１５のステップＢ２３〜Ｂ３２と同様の処理が行なわれる（図２０の符号Ｐ０９，Ｐ１０参照）。また、この処理は、キャッシュ制御部１０１に対してはバックグラウンドに行われる。その後、処理を終了する。
【０３１０】
（Ｃ）効果
このように、第２実施形態の一例としての情報処理装置１によれば、上述した第１実施形態と同様の作用効果を得ることができる他、２次キャッシュ３２のデータについて、リード回数およびライト回数を計数することでページ毎にデータアクセス傾向を求め、各データアクセス傾向に応じて、再配置先のＳＳＤ３２を決定する。
【０３１１】
具体的には、再配置制御部１２２が、ライトアクセスが多いデータ（アクセスパターンＡ）を、残り書き込み量の多い（残り寿命が長い）ＳＳＤ３２へ再配置する。
【０３１２】
また、ライトアクセスが少なく、且つ、リードアクセスが多いデータ（アクセスパターンＢ）を、残り書き込み量の少ないＳＳＤ３２へ配置する。
【０３１３】
さらに、ライトアクセスが少なく、且つ、リードアクセスも少ないデータ（アクセスパターンＣ）を残り書き込み量の多いＳＳＤ３２へ配置する。
【０３１４】
これらにより、ＳＳＤ３２の寿命を縮め易いライトアクセスが多いデータが、残り寿命が長いＳＳＤ３２に配置される一方で、ＳＳＤ３２の寿命を縮め難いデータが、残り寿命が短いＳＳＤ３２に配置され、ＳＳＤ３２の残り寿命の差を短くすることができ、２次キャッシュ３２として用いられる複数のＳＳＤ３２をバランスよく利用することができる。
【０３１５】
再配置制御部１２２が、アクセスパターンに基づいてページデータの再配置を行なうことで、ＳＳＤ３２の残り書き込み量の片よりを防止し、特定のＳＳＤ３２に対して極端な書き込み制限が行なわれることで生じる弊害を阻止することができる。例えば、ＳＳＤ３２への書き込み失敗多発や、これによって生じる２次キャッシュ３２のヒット率低下を防止することができる。
【０３１６】
ページマッピングテーブル１２４を書き換えることで、ＳＳＤ３２間のデータの再配置を容易に行なうことができる。
【０３１７】
また、ＳＳＤ３２間におけるデータの再配置をページ単位で行なうことで、キャッシュデータの空間的局所性を生かして再配置を効率的に行なうことができる。
【０３１８】
キャッシュ制御部１０１が、１次キャッシュ３１における各エントリのデータに対してデータの読み出しや書き込みを行なう度に、１次キャッシュ管理テーブル１１１における該当ページのRead回数もしくはWrite回数をカウントアップする。そして、再配置制御部１２２が、これらのRead回数およびWrite回数に基づき、ページ毎のアクセスパターンを容易に判定することができる。
【０３１９】
前述した第１実施形態の情報処理装置１においては、式（２）に基づき、残りの書き込み可能量が少ないＳＳＤ３２ほど制限量が少なくなる。また、この制限量は複数のＳＳＤ３２の間での書き込み可能量の差が大きいほど少なくなる。
【０３２０】
第１実施形態の手法ではＳＳＤ３２の物理LBAとキャッシュデータ（論理LBA）のマッピングとは固定であるが、上記のように制限量が極端に少なくなった場合に、特定の論理LBAについてキャッシュデータの更新（ライトアクセス）や新規キャッシュデータの配置（ステージング）が制限される。すなわち、寿命の短いＳＳＤ３２の領域に、ライトアクセスやステージングが集中した場合にエラーとなるケースが多くなり、２次キャッシュ３２の使用効率が低下するおそれがある。
【０３２１】
これに対して、本第２実施形態の情報処理装置１においては、書き込み頻度の高いデータを残り書き込み量の少ないＳＳＤ３２からより多いＳＳＤ３２へ移動し、また、残り書き込み量の多いＳＳＤ３２から書き込み頻度が低く、読み込み頻度のより高いデータを選択して残り書き込み量の少ないＳＳＤ３２へ移動する。
【０３２２】
これによりＳＳＤ３２の残り書き込み量の偏りを解消し、書き込み制限により発生する２次キャッシュ３２のヒット率低下を防ぐとともに、残り書き込み量の少ないＳＳＤ３２をリードキャッシュとして有効に活用することができる。
【０３２３】
また、再配置制御部１２２が、複数のＳＳＤ３２の残り書き込み量に偏りがあるかを判断することで、再配置の必要性を判断する。すなわち、再配置制御部１２２が、例えば、上記の式（５），（６）において、上記の式（７）に示す条件を満たす場合に、再配置が必要であると判定する。
【０３２４】
これにより、ＳＳＤ３２の残り書き込み可能量が平均値よりも一日分以上少ない場合に再配置が必要であると判定され、再配置が行なわれるので、複数のＳＳＤ３２間において、残り書き込み量の偏りが大きくなり過ぎることを阻止することができる。
【０３２５】
（ＩＩＩ）その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０３２６】
例えば、上述した各実施形態においては、２つのＳＳＤ３２を２次キャッシュ３２として用いる例を示しているが、これに限定されるものではない。すなわち、３つ以上のＳＳＤ３２を２次キャッシュ３２として用いてもよく、種々変形して実施することができる。
【０３２７】
また、２次キャッシュ３２は、ＳＳＤ３２に限定されるものではなく、ＳＳＤ以外の半導体記憶装置等を２次キャッシュ３２として用いてもよい。
【０３２８】
上述した各実施形態においては、情報処理装置１の２次キャッシュとして備えられた複数のＳＳＤ３２間におけるデータの再配置を行なう例について示しているが、これに限定されるものではない。例えば、ストレージ装置の記憶装置（ストレージ）として複数のＳＳＤ３２を備え、これらの複数のＳＳＤ３２間におけるデータの再配置に適用してもよく、種々変形して実施することができる。
【０３２９】
第２実施形態においては、２次キャッシュドライバ１０２が平準化制御部１２１および再配置制御部１２２としての機能を備えているが、これに限定されるものではなく、平準化制御部１２１としての機能を削除もしくは無効化してもよい。
【０３３０】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０３３１】
（ＩＶ）付記
以上の各実施形態に関し、更に以下の付記を開示する。
【０３３２】
（付記１）
記憶装置と、
データを一時的に格納する複数の半導体記憶装置と、
前記半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージシステム。
【０３３３】
（付記２）
前記決定部が、
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記１記載のストレージシステム。
【０３３４】
（付記３）
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
ことを特徴とする、付記１または２記載のストレージシステム。
【０３３５】
（付記４）
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージシステム。
【０３３６】
（付記５）
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定する必要性判定部を備え、
前記必要性判定部が、前記データの移動が必要であると判定した場合に、前記移動処理部が、前記データを前記移動先の半導体記憶装置に移動させる
ことを特徴とする、付記１〜４のいずれか１項に記載のストレージシステム。
【０３３７】
（付記６）
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出する算出部と、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する制限部と
を備えることを特徴とする、付記１〜５のいずれか１項に記載のストレージシステム。
【０３３８】
（付記７）
データを一時的に格納する複数の半導体記憶装置を備え、
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージシステム。
【０３３９】
（付記８）
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージ制御装置。
【０３４０】
（付記９）
前記決定部が、
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記８記載のストレージ制御装置。
【０３４１】
（付記１０）
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
ことを特徴とする、付記８または９記載のストレージ制御装置。
【０３４２】
（付記１１）
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記８〜１０のいずれか１項に記載のストレージ制御装置。
【０３４３】
（付記１２）
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定する必要性判定部を備え、
前記必要性判定部が、前記データの移動が必要であると判定した場合に、前記移動処理部が、前記データを前記移動先の半導体記憶装置に移動させる
ことを特徴とする、付記８〜１１のいずれか１項に記載のストレージ制御装置。
【０３４４】
（付記１３）
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出する算出部と、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する制限部と
を備えることを特徴とする、付記８〜１２のいずれか１項に記載のストレージ制御装置。
【０３４５】
（付記１４）
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージ制御装置。
【０３４６】
（付記１５）
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定し、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる
処理を、プロセッサに実行させる、制御プログラム。
【０３４７】
（付記１６）
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記１５記載の制御プログラム。
【０３４８】
（付記１７）
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記１５または１６記載の制御プログラム。
【０３４９】
（付記１８）
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記１５〜１７のいずれか１項に記載の制御プログラム。
【０３５０】
（付記１９）
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定し、
前記データの移動が必要であると判定した場合に、前記データを前記移動先の半導体記憶装置に移動させる
処理を、前記プロセッサに実行させる、付記１５〜１８のいずれか１項に記載の制御プログラム。
【０３５１】
（付記２０）
前記複数の前記半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
処理を、前記プロセッサに実行させる、付記１５〜１９のいずれか１項に記載の制御プログラム。
【０３５２】
（付記２１）
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
処理をプロセッサに実行させる制御プログラム。
【符号の説明】
【０３５３】
１    情報処理装置
１０    ＣＰＵ
２０    アダプタ
３１    ＤＲＡＭ，メモリ（１次キャッシュ）
３２−１，３２−２，３２    ＳＳＤ（２次キャッシュ，ストレージ）
４０    ＨＤＤ
１０１    キャッシュ制御部
１０２    ２次キャッシュドライバ
１０３    ディスクドライバ
１０４    ユーザアプリ
１１１    １次キャッシュ管理テーブル
１１２    ２次キャッシュ管理テーブル
１２１    平準化制御部
１２２    再配置制御部
１２３ａ，１２３ｂ    寿命管理テーブル
１２４    ページマッピングテーブル
１２５    フリーページリスト
１２６    交換候補ページリスト
【図１】
2018036711.tif 000003
【図２】
2018036711.tif 000004
【図３】
2018036711.tif 000005
【図４】
2018036711.tif 000006
【図５】
2018036711.tif 000007
【図６】
2018036711.tif 000008
【図７】
2018036711.tif 000009
【図８】
2018036711.tif 000010
【図９】
2018036711.tif 000011
【図１０】
2018036711.tif 000012
【図１１】
2018036711.tif 000013
【図１２】
2018036711.tif 000014
【図１３】
2018036711.tif 000015
【図１４】
2018036711.tif 000016
【図１５】
2018036711.tif 000017
【図１６】
2018036711.tif 000018
【図１７】
2018036711.tif 000019
【図１８】
2018036711.tif 000020
【図１９】
2018036711.tif 000021
【図２０】
2018036711.tif 000022