(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスを備える記憶装置であって、
前記複数の記憶デバイスを制御するコントローラを具備し、
前記コントローラは、
前記記憶装置の書き込み性能が低下したことをホストが検出した場合に前記ホストから通知される前記書き込み性能の低下を示す通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第１の記憶デバイスに対してガベージコレクションの実行を指示し、
前記第１の記憶デバイスがガベージコレクションを実行している間、前記第１の記憶デバイスに対する書き込みデータを退避バッファに書き込み、
前記第１の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第１の記憶デバイスに書き込む、記憶装置。
【請求項２】
前記コントローラは、
前記退避バッファに書き込まれた前記書き込みデータの論理ブロックアドレスをアドレス表に記録し、
前記ホストからのデータの読み取り指示を受信した場合、読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在するか否かを判定し、
前記読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在する場合、前記読み取り対象のデータを前記退避バッファから読み出す請求項１記載の記憶装置。
【請求項３】
前記退避バッファは不揮発性メモリである請求項１記載の記憶装置。
【請求項４】
前記複数の記憶デバイスはＲＡＩＤを構成する請求項１記載の記憶装置。
【請求項５】
前記複数の記憶デバイスはＪＢＯＤを構成する請求項１記載の記憶装置。
【請求項６】
不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスと、前記複数の記憶デバイスを制御するコントローラとを具備する記憶装置と、
前記記憶装置に対してデータの読み書きを行い、前記記憶装置の書き込み性能の低下を検出した場合に前記書き込み性能が低下したことを通知するホストとを具備し、
前記コントローラは、
前記通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第１の記憶デバイスに対してガベージコレクションの実行を指示し、
前記第１の記憶デバイスがガベージコレクションを実行している間、前記第１の記憶デバイスに対する書き込みデータを退避バッファに書き込み、
前記第１の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第１の記憶デバイスに書き込む、情報処理システム。
【請求項７】
前記ホストは、前記記憶装置に対する書き込みテストを実行することによって前記記憶装置の書き込み性能の低下を検出する請求項６記載の情報処理システム。
【請求項８】
前記コントローラは、
前記退避バッファに書き込まれた前記書き込みデータの論理ブロックアドレスをアドレス表に記録し、
前記ホストからのデータの読み取り指示を受信した場合、読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在するか否かを判定し、
前記読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在する場合、前記読み取り対象のデータを前記退避バッファから読み出す請求項６記載の情報処理システム。
【請求項９】
前記退避バッファは不揮発性メモリである請求項６記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、記憶装置及び記憶装置を含む情報処理システムに関する。
【背景技術】
【０００２】
利用寿命のあるメモリ素子を用いた不揮発性の情報記憶装置を含む情報処理システムが知られている。この情報処理システムは、情報記憶装置の領域の更新回数を計算して寿命を判定し、寿命時に自らの機能を無効化することにより、情報記憶装置の寿命時にセキュリティ機能の低下を生じさせないようにする（下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４３９４４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ストレージボリュームに対する書き込み性能の低下を解消することができる記憶装置、及び記憶装置を含む情報処理システムが求められている。
【課題を解決するための手段】
【０００５】
実施形態によれば、不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスを備える記憶装置は、前記複数の記憶デバイスを制御するコントローラを具備する。前記コントローラは、前記記憶装置の書き込み性能が低下したことをホストが検出した場合に前記ホストから通知される前記書き込み性能の低下を示す通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第１の記憶デバイスに対してガベージコレクションの実行を指示する。前記コントローラは、前記第１の記憶デバイスがガベージコレクションを実行している間、前記第１の記憶デバイスに対する書き込みデータを退避バッファに書き込む。前記コントローラは、前記第１の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第１の記憶デバイスに書き込む。
【０００６】
また、実施形態によれば、情報処理システムは、不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスと、前記複数の記憶デバイスを制御するコントローラとを具備する記憶装置と、前記記憶装置に対してデータの読み書きを行い、前記記憶装置の書き込み性能の低下を検出した場合に前記書き込み性能が低下したことを通知するホストとを具備する。前記コントローラは、前記通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値が閾値よりも高い第１の記憶デバイスに対してガベージコレクションの実行を指示する。前記コントローラは、前記第１の記憶デバイスがガベージコレクションを実行している間、前記第１の記憶デバイスに対する書き込みデータを退避バッファに書き込む。前記コントローラは、前記第１の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第１の記憶デバイスに書き込む。
【０００８】
実施形態の記憶装置及び情報処理システムによれば、ストレージボリュームに対する書き込み性能の低下を解消することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る記憶装置の概略構成の一例を示す図。
【図２】第１の実施形態に係るデータ書き込み時のアドレス表の一例を説明するための図。
【図３】第１の実施形態に係るデータ読み取り時のアドレス表の一例を説明するための図。
【図４】第１の実施形態に係るデータ書き戻し時のアドレス表の一例を説明するための図。
【図５】第１の実施形態に係る処理の一例を示すタイミングチャート。
【図６】第２の実施形態に係る情報処理システムの全体構成の一例を示す図。
【図７】第２の実施形態に係るホストの概略構成の一例を示す図。
【図８】第２の実施形態に係る記憶装置の概略構成の一例を示す図。
【図９】第２の実施形態に係る処理のタイミングの一例を示すタイミングチャート。
【図１０】第２の実施形態に係る処理のタイミングの一例を示すタイミングチャート。
【図１１】記憶装置を含む情報処理装置の一例を示す図。
【図１２】記憶装置の概略構成の他の一例を示す図。
【発明を実施するための形態】
【００１０】
以下、各実施形態について説明する。  
（第１の実施形態）
図１は第１の実施形態に係る記憶装置の構成の一例を示す図である。
【００１１】
図１に示すように、記憶装置１０は、全体コントローラ（第１制御部）１００、キャッシュ１１０、退避用バッファ（データ保存部）１２０、及び記憶デバイス１３１〜１３６を有している。
【００１２】
全体コントローラ１００は、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）インタフェース１４０を介してホスト（図示省略）と接続されている。また、全体コントローラ１００は、バスライン１４１を介して退避用バッファ１２０、及び記憶デバイス１３１〜１３６とそれぞれ接続されており、バスライン１４２を介して退避用バッファ１２０と接続されており、バスライン１４３を介してキャッシュ１１０と接続されている。
【００１３】
記憶デバイス１３１〜１３６は、それぞれ、デバイスコントローラ１３１Ａ〜１３６Ａ（第２制御部）、ＮＡＮＤフラッシュメモリ（不揮発性メモリ）１３１Ｂ〜１３６Ｂを有している。また、デバイスコントローラ１３１Ａ〜１３６Ａは、それぞれブロック数管理部（管理部，管理手段）１３１Ｃ〜１３６Ｃ、及び第１閾値記憶部１３１Ｄ〜１３６Ｄを有している。
【００１４】
全体コントローラ１００は、キャッシュ１１０、退避用バッファ１２０、記憶デバイス１３１〜１３６を制御する。より詳細には、全体コントローラ１００は、ホスト（図示省略）からの指令に基づいて、記憶デバイス１３１〜１３６にデータを書き込み、又は、記憶デバイス１３１〜１３６からデータを読み出す。
【００１５】
また、全体コントローラ１００は、アドレス表１０１を有している。このアドレス表１０１には、データの配置、例えばガベージコレクション（以下、ＧＣという）処理中に退避用バッファ１２０にデータが書き込まれたときに、当該データに対応する論理ブロックアドレスが記録される。全体コントローラ１００は、記憶デバイス１３１〜１３６がＧＣ処理を実行している間、アドレス表１０１、キャッシュ１１０及び退避用バッファ１２０を利用して、新規データに対する処理を実行する。この処理の詳細は、後述する。
【００１６】
さらに、全体コントローラ１００は、記憶デバイス１３１と記憶デバイス１３２とを組み合わせ、それぞれの記憶領域を１つのストレージボリューム１５０として管理する。つまり、全体コントローラ１００は、ホスト（図示省略）に対して、ストレージボリューム１５０、及び記憶デバイス１３３〜１３６の５つの記憶領域を提供する。ストレージボリューム１５０は、記憶デバイス１３１及び１３２により、ストライピング、各種のＲＡＩＤ（Redundant Arrays of Inexpensive Disks 又は、Redundant Arrays of Independent Disks）が構成される。また、ストレージボリューム１５０は、ＲＡＩＤに代えて、例えば、ＪＢＯＤ（Just a bunch of Disks）のように記憶デバイス１３１及び１３２により単純に記憶領域の拡大を行った構成でも良い。このようにストレージボリューム１５０を構成する方式は問わない。また、本第１の実施形態においては、記憶デバイス１３１及び１３２によりストレージボリューム１５０を構成する場合で説明するが、任意の組み合わせでストレージボリューム１５０が構成されても良い。
【００１７】
キャッシュ１１０は、全体コントローラ１００がデータを退避用バッファ１２０、あるいは記憶デバイス１３３〜１３６に書き込むとき、又は退避用バッファ１２０、あるいは記憶デバイス１３３〜１３６からデータを読み出すときに、データを一時的に保存するために用いられる。キャッシュ１１０は、不揮発性メモリにより構成されれば良く、例えば、ＭＲＡＭ（Magneto resistive Random Access Memory）を用いる。また、キャッシュ１１０の書き込み性能は、ＮＡＮＤフラッシュメモリ１３１Ｂ〜１３６Ｂの書き込み性能より高速であることが望ましい。
【００１８】
退避用バッファ１２０は、不揮発性メモリであり、ＧＣ処理を行う際に用いられる。本第１の実施形態においては、退避用バッファ１２０の記憶容量はＮＡＮＤフラッシュメモリ１３１Ｂ〜１３６Ｂの記憶容量と同一である。ＮＡＮＤフラッシュメモリ１３１Ｂ〜１３６Ｂの記憶容量が異なる場合は、退避用バッファ１２０の記憶容量は記憶容量が最も大きいＮＡＮＤフラッシュメモリよりも大きくする。また、退避用バッファ１２０は、不揮発性メモリで構成されればよく、例えばＭＲＡＭを用いるのは、キャッシュ１１０の場合と同様である。また、退避用バッファ１２０の書き込み性能は、ＮＡＮＤフラッシュメモリ１３１Ｂ〜１３６Ｂの書き込み性能より高速であることが望ましい。
【００１９】
次に、記憶デバイス１３１〜１３６について説明する。記憶デバイス１３１〜１３６は、それぞれ実質的に同様な構成をしているため、記憶デバイス１３１を一例に挙げて説明する。
【００２０】
記憶デバイス１３１は、全体コントローラ１００の制御に基づいてデータを記憶する。より詳細には、全体コントローラの指示に基づいて、デバイスコントローラ１３１ＡがＮＡＮＤフラッシュメモリ１３１Ｂに対してデータの書き込み、読み取り等を制御する。
【００２１】
ＮＡＮＤフラッシュメモリ１３１Ｂは、データの書き込み、データの読み出しがページ単位で行われる一方、データの消去はブロック単位で行われる。ここで、例えば、１ページは２１１２バイトであり、１ブロックは６４ページである。ＮＡＮＤフラッシュメモリ１３１Ｂは、このような性質を有するため、隙間のメモリ領域などを集め連続して利用可能なメモリ領域を確保する処理、言い換えれば、記憶領域内でデータを配置する処理（ＧＣ処理）を行う必要が生じる。そして、ＧＣ処理の実行中は、デバイスコントローラ１３１Ａは、ＮＡＮＤフラッシュメモリ１３１Ｂに対して新規データの書き込みができない。
【００２２】
デバイスコントローラ１３１Ａは、全体コントローラ１００の指示に基づいてＮＡＮＤフラッシュメモリ１３１Ｂにデータを記憶し、又は、ＮＡＮＤフラッシュメモリ１３１Ｂからデータを読み出す。
【００２３】
また、デバイスコントローラ１３１Ａは、ＮＡＮＤフラッシュメモリ１３１Ｂについて、論理ブロックアドレスと物理ブロックアドレスとの変換処理、ウェアレベリング処理、ＧＣ処理を実行する。ウェアレベリング処理は、各記憶領域の書き込み回数を平均化する処理であり、ＧＣ処理は既述の処理である。
【００２４】
ブロック数管理部１３１Ｃは、ブロック（所定単位）に対応させたガベージコレクションが必要か否かを示す配置情報等を管理する。より詳細には、ブロック数管理部１３１Ｃは、ＧＣ処理が必要になっているブロック（所定単位）のブロック数（配置情報、以下、ＧＣブロック数という）、及びＮＡＮＤフラッシュメモリ１３１Ｂの全ブロックに対するＧＣブロック数の割合（以下、ＧＣブロック数率という）を管理する。本第１の実施形態においては、前記全ブロック数（記憶領域）には、ＮＡＮＤフラッシュメモリ１３１Ｂ内の予備ブロックは含まれないこととする。
【００２５】
第１閾値記憶部１３１Ｄは、ＮＡＮＤフラッシュメモリ１３１Ｂの全ブロック数に対するＧＣブロック数の占める割合がどの割合になったときに、ＧＣ処理を実行するか否かを規定する第１閾値を記憶する。
【００２６】
本第１の実施形態においては、第１閾値は記憶デバイス１３１〜１３６に対して共通であり、０．８とする。しかし、第１閾値としては、０〜１未満の値を設定することが可能である。また、ホスト（図示省略）からストレージボリューム１５０に対する単位時間当たりの書き込みデータ量が多い場合は、当該ストレージボリューム１５０を構成する記憶デバイス１３１，１３２における第１閾値を０．７５と既述の第１閾値０．８より小さく設定しても良い。逆に、ホスト（図示省略）からストレージボリューム１５０への単位時間当たりの書き込みデータ量が少ない場合は、当該ストレージボリューム１５０に属する記憶デバイス１３１，１３２における第１閾値を０．９と既述の第１閾値０．８より大きい値に設定しても良い。これらの処理は、例えば、全体コントローラ１００の指示に基づいて、デイバスコントローラ１３１Ａ，１３１Ｂがそれぞれ第１閾値記憶部１３１Ｄ，１３２Ｄの閾値を変更する。時間当たりの書き込みデータ量が多い用途が想定される場合は、短時間で記憶デバイスがガベージコレクションの必要な状態に達することが予想されるため、例えば閾値を０．８より小さい値に設定し、書き込み性能劣化に対する余裕を多めにとることができる。それに対し、時間当たりの書き込みデータ量が比較的少ない場合は、記憶デバイスがガベージコレクションの必要な状態に達するまで前記より長い時間がかかる可能性が高いため、例えば閾値を０．８より大きい値に設定することが考えられる。
【００２７】
次に、図２から図４を参照してアドレス表１０１について説明する。
【００２８】
図２は、データ書き込み時のアドレス表１０１の一例を説明するための図である。より詳細には、図２は、ＧＣ処理の完了前、且つ、退避用バッファ１２０にデータを書き込む場合に、該データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
【００２９】
図２に示すように、退避用バッファ１２０に書き込みを行った新規データ（書き換えデータを含む。以下同様）の論理ブロックアドレスについては全てアドレス表１０１に記録される。例えば、記憶デバイス１３１がＧＣ処理実行中である場合は、記憶デバイス１３１に対する新規データの書き込みを行うことができない。このため、退避バッファ１２０に当該新規データの書き込みが行われる。このとき、新規データの論理ブロックアドレスがアドレス表１０１に記録される。
【００３０】
図３は、データ読み取り時のアドレス表１０１の一例を説明するための図である。より詳細には、図３は、ＧＣ処理の完了前、且つ、データを読み出す場合に、データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
【００３１】
図３に示すように、記憶デバイス１３１〜１３６からのデータの読み取り指示を全体コントローラ１００がホスト（図示省略）から受信した場合（Ｔ１１）、全体コントローラ１００は、読み取り対象のデータの論理ブロックアドレスがアドレス表１０１に存在するか否かを検索する（Ｔ１２）。全体コントローラ１００は、論理ブロックアドレスが存在する場合、退避用バッファ１２０を参照し、論理ブロックアドレスが存在しない場合、記憶デバイス１３１〜１３６のうちの該当する記憶デバイス（以下、該当記憶デバイスという）を参照する（Ｔ１３）。
【００３２】
論理ブロックアドレスがアドレス表１０１に存在する場合、全体コントローラ１００は、退避用バッファ１２０にアクセスする（Ｔ１４）。全体コントローラ１００は、論理ブロックアドレスと対応するデータを退避バッファ１２０より読み出す（Ｔ１５）。読み出されたデータがホスト（図示省略）に送信される。
【００３３】
一方、論理ブロックアドレスがアドレス表１０１に存在しない場合、全体コントローラ１００は、該当記憶デバイスにアクセスする（Ｔ１６）。全体コントローラ１００は、論理ブロックアドレスと対応するデータを該当記憶デバイスより読み出す（Ｔ１７）。読み出されたデータがホスト（図示省略）に送信される。
【００３４】
図４は、データ書き戻し時のアドレス表の一例を説明するための図である。より詳細には、ＧＣ処理が完了後、且つ、退避用バッファ１２０に退避させたデータを対応する記憶デバイスに記憶する場合に、データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
【００３５】
全体コントローラ１００は、アドレス表１０１で管理されている論理ブロックアドレスに対して、退避用バッファ１２０からデータの書き戻しが完了した場合、その論理ブロックアドレスについては、アドレス表１０１より削除する、言い換えればクリアする（Ｔ２１）。なお、図４においては、論理ブロックアドレス上に取り消し線を引いて削除を表現している。
【００３６】
また、退避用バッファ１２０に退避させたデータの書き戻しが完了するまで、書き戻し中の記憶デバイスにはデータが書き込めないので、新規データの書き込みは、退避用バッファ１２０に行われる（退避される）。このため、書き戻しの処理が進行中のときも新規データに対応する論理ブロックアドレスがアドレス表１０１に記録（追加）される（Ｔ２２）。
【００３７】
アドレス表１０１に記録されている論理ブロックアドレスが全て削除されたときに、退避バッファ１２０に退避させていたデータが本来の記憶デバイスに送信され、書き戻し処理が完了する。以後は、新規のデータ書き込みは、退避用バッファ１２０にではなく、本来の記憶デバイスに書き込まれる（Ｔ２３）。
【００３８】
図５は、ＧＣ処理を実行するときの全体コントローラ１００とデバイスコントローラ１３１Ａとの処理の一例を示すタイミングチャートである。なお、以下では、ストレージボリューム１５０を構成する記憶デバイス１３１に対して、データの書き込み実行期間中（Ｔ１０１）にＧＣ処理が必要になった場合を例に挙げて説明する。
【００３９】
デバイスコントローラ１３１Ａは、データ書き込み実行期間中においては、ブロック数管理部１３１Ｃにより、ＧＣブロック数と共にＧＣブロック数率を管理している。そして、デバイスコントローラ１３１Ａは、例えば、書き込みが行われる毎に、ＧＣブロック数率が第１閾値である０．８を超えた否かを判断する。ＧＣブロック数率が第１閾値を超えたと判断した場合、デバイスコントローラ１３１Ａは、全体コントローラ１００へＧＣブロック数率が第１閾値を超えた旨（第１通知）を通知する（Ｔ１０２）。この通知は、言い換えれば、ガベージコレクション処理が必要である旨の通知である。
【００４０】
この第１通知を受け取った全体コントローラ１００は、デバイスコントローラ１３１Ａに対して新規のデータの書き込みを停止する（Ｔ１０３）。ＧＣ処理の実行により、記憶デバイス１３１の書き込みができなくなるためである。
【００４１】
そして、所定時間経過すると、書き込んでいるデータの最終データのＮＡＮＤフラッシュメモリ１３１Ｂに対する書き込みが完了する（Ｔ１０４）。
【００４２】
次に、全体コントローラ１００は、記憶デバイス１３１に対する新規データの書き込み先を退避用バッファ１２０にリダイレクトする（Ｔ１０６：退避手段）。これにより、新規データの書き込みが退避用バッファ１２０に行われる。なお、リダイレクトの設定が完了するまでに、ホストから書き込み要求を受信した場合は、全体コントローラ１００は、書き込み要求をキャッシュ１１０に一時保存してから退避用バッファ１２０に書き込む（Ｔ１０５）。
【００４３】
次に、全体コントローラ１００は、デバイスコントローラ１３１Ａに対して、ＧＣ処理の実行要求（指示）をする（Ｔ１０７）。この要求（指示）を受信すると、デバイスコントローラ１３１Ａは、ＮＡＮＤフラッシュメモリ１３１ＢのＧＣ処理を実行する（Ｔ１０８：実行手段）。
【００４４】
そして、デバイスコントローラ１３１Ａは、ＧＣ処理の実行が完了すると、全体コントローラ１００に対して、ＧＣ処理の実行が完了した旨（第２通知）を通知する（Ｔ１０９）。この通知は、言い換えれば、ガベージコレクション処理が完了した旨の通知である。
【００４５】
全体コントローラ１００は、この実行完了の通知（第２通知）を受信すると、退避用バッファ１２０の読み出しを開始する（Ｔ１１０）。これにより、退避用バッファ１２０から全体コントローラ１００にデータ転送がされ（Ｔ１１１）、更に、全体コントローラ１００からデバイスコントローラ１３１Ａにデータ転送がされる（Ｔ１１２）。このときに、転送されるデータに対応する論理ブロックアドレスがアドレス表１０１から削除される。
【００４６】
デバイスコントローラ１３１Ａは、転送されたデータ（退避用バッファ１２０のデータ）をＮＡＮＤフラッシュメモリ１３１Ｂに書き出す（Ｔ１１３：書き込み手段）。このように実行完了の通知を受信した場合、退避用バッファ１２０に退避させていたデータが該通知の通知元の記憶デバイス１３１に書き込まれる。なお、この処理は、全体コントローラ１００を介して退避用バッファ１２０からのデータが転送されている間、実行される。
【００４７】
そして、全体コントローラ１００は、退避用バッファ１２０から最終のデータが転送された場合（Ｔ１１４）、アドレス表１０１から論理ブロックアドレスが全て削除されているか（空白か）否かを確認する（Ｔ１１６）。アドレス表１０１から論理ブロックアドレスが全て削除されていなければ、転送されたデータが最終データでない可能性があるため、所定のエラー処理が実行される。なお、書き出し実行期間が完了（データの書き込みが再開）するまでに、ホストから受信した書き込み要求は全体コントローラ１００のキャッシュ１１０に一時保存してから、記憶デバイス１３１に書き出す処理が実行される（Ｔ１１５）。
【００４８】
アドレス表１０１から論理ブロックアドレスが全て削除されている場合は、最終のデータが全体コントローラ１００からデバイスコントローラ１３１Ａに転送される（Ｔ１１７）。そして、デバイスコントローラ１３１Ａは、最終のデータをＮＡＮＤフラッシュメモリ１３１Ｂに書き出す。これにより、退避用バッファ１２０に退避させたデータをＮＡＮＤフラッシュメモリ１３１Ｂに書き出す処理（書き出し実行期間）が終了する。
【００４９】
このように書き出し実行期間が終了した後、全体コントローラ１００が記憶デバイス１３１に対して書き込み要求を受信した場合、デバイスコントローラ１３１Ａに対して、データ書き込みを再開する（Ｔ１１８）。この書き込み要求が実行されている間が、書き込み実行期間となる。
【００５０】
なお、ストレージボリューム１５０を構成する他の記憶デバイス１３２についてもＧＣブロック数率が第１閾値０．８を超えていた場合は、アドレス表１０１から論理ブロックアドレスが全て削除された後、デバイスコントローラ１３２Ａ、及び全体コントローラ１００により、既述の処理（Ｔ１０１〜Ｔ１２８）と実質的に同様な処理が実行される。記憶デバイス１３１，１３２のいずれからＧＣ処理をするかは任意である。
【００５１】
以上のように説明した記憶装置１０によると、記憶デバイス１３１、１３２により構成されるストレージボリューム１５０については、いずれの記憶デバイス１３１、１３２についてもＧＣブロック数率が第１閾値（０．８）を超えたときに、ＧＣ処理が自動的に実行される。このため、ストレージボリューム１５０を構成する記憶デバイス１３１，１３２について、ＧＣ処理が必要なブロック数が多くなり、書き込み性能が低下するという事態を自発的に解消することができる。したがって、ストレージボリューム１５０を構成する１つの記憶デバイス１３１（又は１３２）の書き込み性能の低下の影響を受けて、ストレージボリューム１５０全体の書き込み性能が低下するという事態を事前に防止することができる。
【００５２】
また、記憶装置１０は、ＧＣ処理実行中の記憶デバイス１３１に対する新規データの書き込みを、アドレス表１０１による管理の下で、退避用バッファ１２０に一時的に保存し、ＧＣ処理が完了した後、記憶デバイスに１３１一時保存したデータを書き出すことができる。
【００５３】
さらに、記憶装置１０は、新規の書き込みを停止（Ｔ１０３）してから新規の書き込みをリダイレクトする（Ｔ１０６）までの間、及び最終のデータ転送（Ｔ１１４）からデータの書き込みが再開（Ｔ１１８）するまでの間は、新規の書き込みデータについては、キャッシュ１１０に一時的に保存することができる。
【００５４】
また、記憶装置１０は、キャッシュ１１０及び退避用バッファ１２０に、例えばＭＲＡＭを使用する。ＭＲＡＭの書き込みレイテンシは１０ナノ秒オーダーである。一方、ＮＡＮＤフラッシュメモリ１３１Ｂ，１３２Ｂの書き込みレイテンシは、ミリ秒オーダーである。このため、ＭＲＡＭは、ＮＡＮＤフラッシュメモリ１３１Ｂ，１３２Ｂよりも高速な書き込みを行うことができる。よって、記憶装置１０は、ＧＣ処理の際に、キャッシュ１１０、及び退避用バッファ１２０を利用した処理を行ってもストレージボリューム１５０に対する書き込み性能の低下を防止することができる。
【００５５】
一例を挙げてより詳細に説明する。ストレージボリューム１５０を構成する記憶デバイス１３１、１３２のＮＡＮＤフラッシュメモリ１３１Ｂ、１３２Ｂは共に、平均書き込みレイテンシ０．１ミリ秒、最大書き込みレイテンシ１００ミリ秒の書き込み性能であるとする。
【００５６】
また、記憶デバイス１３１の書き込みレイテンシが５０ミリ秒であり、記憶デバイス１３２の書き込み性能が低下しておらず書き込みレイテンシ０．１ミリ秒であったとする。
【００５７】
この場合、従来の記憶装置の場合においては、ストレージボリューム１５０全体の書き込みレイテンシは、記憶デバイス１３１の書き込み性能悪化の影響を受けて５０ミリ秒になる。これは、記憶デバイス１３１、１３２のいずれにも書き込み性能に低下が生じていない場合と比較すると、５００倍（０．１ミリ秒：５０ミリ秒）になる。
【００５８】
これに対して、本第１の実施形態の記憶装置１０の場合、例えば記憶デバイス１３１で書き込み性能の低下が生じ得る場合（ＧＣブロック数率＞第１閾値）、記憶デバイス１３１には新規データの書き込みを行わない。これに代わり、記憶装置１０は、ＮＡＮＤフラッシュメモリ１３１Ｂよりも書き込みが高速なキャッシュ１１０又は退避用バッファ１２０に該データの書き込みを行う。このため、ストレージボリューム１５０の書き込みレイテンシは、記憶デバイス１３２の平均書き込みレイテンシである０．１ミリ秒に抑えられる。したがって、ストレージボリューム１５０に対する書き込み性能の低下を防止できる。
【００５９】
また、キャッシュ１１０、及び退避用バッファ１２０にＭＲＡＭ（不揮発性メモリ）を用いることによって、既述の処理（参照：図５）を実行中に、記憶装置１０に電源断のような異常が発生しても、記憶装置１０はデータ損失を回避することができる。
【００６０】
なお、上記第１の実施形態では、ストレージボリューム１５０は、記憶デバイス１３１及び１３２という２つの記憶デバイスから構成されている。しかし、ストレージボリューム１５０は、３つ以上の記憶デバイスにより構成されていても良い。ストレージボリューム１５０は、例えば、ＲＡＩＤ１＋０のように４つの記憶デバイスから構成されている場合、ＲＡＩＤ５のように５つの記憶デバイスから構成されている場合、又はＲＡＩＤ６のように６つの記憶デバイスから構成されている場合であっても良い。
【００６１】
（第２の実施形態）
図６は、第２の実施形態に係る情報処理システム１の構成を示す図である。図６に示すように、情報処理システム１は、記憶装置２０と、ホスト３０とを含み構成されている。また、記憶装置２０と、ホスト３０とは、ＰＣｌｅインタフェース２４０、管理用ＬＡＮ（Local Area Network）２５０によりそれぞれ接続されている。
【００６２】
図７は、ホスト３０の構成の一例を示す図である。図７に示すように、ホスト３０は、アプリケーション部３１０、性能監視部（ホスト制御部）３２０、及びネットワークインタフェース３３０を有している。
【００６３】
アプリケーション部３１０は、記憶装置２０に対するデータの書き込み、記憶装置２０からのデータの読み出しを制御する。
【００６４】
ネットワークインタフェース３３０は、記憶装置２０のネットワークインタフェース２５１と管理用ＬＡＮ２５０を介して接続する。
【００６５】
性能監視部３２０は、ホスト３０から記憶装置２０のストレージボリューム２５１，２５２（後述する）に対する書き込みレイテンシを測定する。また、性能監視部３２０は、ストレージボリューム２５１，２５２の書き込み性能が所定条件に合致したか否かを判断する。更に、性能監視部３２０は、ストレージボリューム２５１，２５２について書き込み性能が書き込み所定条件に合致したと判断した場合、ネットワークインタフェース３５１を介して記憶装置２０の全体コントローラ２００（後述する）に対して、ストレージボリューム２５１，２５２の書き込み性能が所定条件に合致した旨（第３通知，性能低下通知）を通知する。ここで、所定条件とは、ストレージボリュームの書き込み性能が低下したことを判定する条件である（詳細は、後述する）。よって、この通知は、言い換えれば、ストレージボリュームの書き込み性能が低下した旨の通知といえる。
【００６６】
図８は、記憶装置２０の構成の一例を示す図である。図８に示すように、記憶装置２０は、全体コントローラ２００、キャッシュ２１０、退避用バッファ２２０，２２１、記憶デバイス２３１〜２３８、及びネットワークインタフェース２５１を有している。
【００６７】
全体コントローラ２００は、アドレス表２０１，２０２、第２閾値記憶部２１１を有している。
【００６８】
記憶デバイス２３１〜２３８は、デバイスコントローラ２３１Ａ〜２３８Ａ、及びＮＡＮＤフラッシュメモリ２３１Ｂ〜２３８Ｂを有している。また、デバイスコントローラ２３１Ａ〜２３８Ａは、ブロック数管理部２３１Ｃ〜２３８Ｃ、及び第１閾値記憶部２３１Ｄ〜２３８Ｄを有している。このように記憶デバイス２３１〜２３８の構成は、それぞれ第１の実施形態の記憶デバイス１３１と実質的に同様な構成であるため、詳細な説明は省略する。
【００６９】
全体コントローラ２００は、バスライン２４１を介して退避用バッファ２２０，２２１、及び記憶デバイス２３１〜２３８と接続されており、バスライン２４２を介してネットワークインタフェース２５１と接続されており、バスライン２４３を介してキャッシュ２１０と接続されている。また、全体コントローラ２００は、ＰＣｌｅインタフェース２４０、及びネットワークインタフェース２５１並びに管理用ＬＡＮ２５０を介してホスト３０と接続されている。
【００７０】
全体コントローラ２００は、キャッシュ２１０、退避用バッファ２２０，２２１、記憶デバイス２３１〜２３８を制御する。より詳細には、全体コントローラ２００は、ホスト３０からの指令に基づいて、記憶デバイス２３１〜２３８にデータを書き込み、又は、記憶デバイス２３１〜２３８からデータを読み出す。
【００７１】
キャッシュ２１０、アドレス表２０１，２０２、退避用バッファ２２０，２２１については、第１の実施形態のキャッシュ１１０、アドレス表１０１、退避用バッファ１２０とそれぞれ実質的に同様であるため、詳細な説明は省略する。
【００７２】
第２閾値記憶部２１１は、ＮＡＮＤフラッシュメモリ２３１Ｂ〜２３８Ｂそれぞれの全ブロック数に対するＧＣブロック数の占める割合がどの割合になったときに、ＧＣ処理を実行するかを規定する第２閾値を記憶する。なお、全ブロック数には、ＮＡＮＤフラッシュメモリ１３１Ｂ内の予備ブロックは含まれないこととする。本第２の実施形態においては、ＮＡＮＤフラッシュメモリ２３１Ｂ〜２３８Ｂ全て共通して、第２閾値は０．８とする。しかし、第２閾値としては、０〜１未満の値を設定することが可能である。
【００７３】
また、第２閾値記憶部２１１に記憶される第２閾値は、アプリケーション（プログラム）の種類、アプリケーション（プログラム）の利用状況、時刻、時間帯、アプリケーション実行時のＩ／Ｏ負荷に応じて、ホスト３０は管理用ＬＡＮ２５０を介して変更を全体コントローラ２０に指示することができる。第２閾値は、本第２の実施形態においては、ホスト３０は、ストレージボリューム２５１，２５２それぞれに対して設定可能になっている。
【００７４】
全体コントローラ２００は、記憶デバイス２３１〜２３５を組み合わせ、それぞれの記憶領域を１つのストレージボリューム２５１として管理し、記憶デバイス２３６〜２３８を組み合わせ、それぞれの記憶領域を１つのストレージボリューム２５２として管理する。つまり、全体コントローラ１００は、ホスト３０に対して、ストレージボリューム２５１，２５２（複数の記憶デバイスの組）の２つの記憶領域を提供する。ストレージボリューム２５１，２５２は、各種のＲＡＩＤが構成されても良いし、ＪＢＯＤでも良く、構成に関する方式は問わないのは第１の実施形態のストレージボリューム１５０の場合と同様である。
【００７５】
また、全体コントローラ２００は、ホスト３０から所定のストレージボリュームについて書き込み性能が書き込み性能判定値以下になっている旨の通知（第３通知）を受信したときは、当該ストレージボリュームに対して、書き込み性能の低下を解消する制御を実行する。例えば、ホスト３０からストレージボリューム２５１について上記通知を受信した場合、全体コントローラ２００は、ストレージボリューム２５１を構成する記憶デバイス２３１〜２３５からＧＣブロック数率を取得し、第２閾値を超えている記憶デバイスに対してＧＣ処理を実行させる。
【００７６】
次に、以上のように構成された情報処理システム１において、ホスト３０のアプリケーション部３１０が、ストレージボリューム２５１，２５２対して、ストレージボリューム単位でデータの読み書きを行っている場合に、性能監視部３２０が実行する処理について説明する。
【００７７】
性能監視部３２０は、ホスト３０がデータの読み書きを行っているストレージボリューム、例えばストレージボリューム２５１に対して、定期的に４０９６バイトの書き込みテストを実施し、ストレージボリューム２５１に対する書き込みレイテンシを計測する。書き込みテストの周期は、例えば、２０秒に一度とする。また、ｉ回目に計測された書き込みアクセスのレイテンシをＬ（ｉ）＝２ミリ秒とする。レイテンシＬ（ｉ）の計測は、対象となる記憶デバイス（記憶デバイス２３１〜２３５）への書き込み処理完了時の時刻より、書き込み命令発行時の時刻を引くことにより行う。
【００７８】
そして、性能監視部３２０は、ｉ回目のＬ（ｉ）からＬ（ｉ−９９）まで過去１００回のレイテンシ値の平均値Ａ（ｉ）を求める。ここで、ｉ回目の計測での平均値Ａ（ｉ）は０．３ミリ秒であったとする。性能監視部３２０は、ストレージボリューム２５１に次の書き込みテストを行ったときに、ｉ＋１回目の計測を行い、レイテンシＬ（ｉ＋１）を求める。この時、仮に、Ｌ（ｉ＋１）＝６１ミリ秒という結果が得られたとする。このとき、性能監視部３２０は、２０×Ａ（ｉ）をレイテンシの閾値Ｔ（ｉ＋１）として用いるとする。なお、係数として、２０を用いたが、この値は固定ではなく、調整できるものとする。このときの閾値Ｔ（ｉ＋１）は６ミリ秒となる。
【００７９】
さらに、性能監視部３２０は、レイテンシＬ（ｉ＋１）と閾値Ｔ（ｉ＋１）とを比較し、レイテンシＬ（ｉ＋１）がＴ（ｉ＋１）を上回った場合、閾値を超えたと判断する。今回の場合、Ｌ（ｉ＋１）：Ｔ（ｉ＋１）＝６１：６であり、レイテンシの方が大きく、閾値を超えたと判定される。次回の計測では、７０ミリ秒のレイテンシが計測され、閾値を再計算し、Ｔ（ｉ＋２）を求めると１８ミリ秒という値が得られる。それぞれの値は、Ｌ（ｉ＋２）：Ｔ（ｉ＋２）＝７０：１８となり、再度閾値を超えたと判定される。このように、性能監視部３２０は、２回連続して閾値超過を検出した場合に（既述の所定条件）、ストレージボリューム２５１に対して、書き込み性能の低下が発生していると判断する。
【００８０】
性能監視部３２０は、例えば、ストレージボリューム２５１に対して書き込み性能の低下が発生していると判断した場合、全体コントローラ２００に対して、ストレージボリューム２５１の書き込み性能が低下している旨（第３通知）を通知する。全体コントローラ２００は、該通知により、ストレージボリューム２５１において書き込み性能の低下が発生していることを認識する。
【００８１】
図９は、性能監視部３２０がストレージボリューム２５１，２５２に対して書き込み性能の低下を判断した場合の処理のタイミングの一例を示すタイミングチャートである。以下では、性能監視部３２０がストレージボリューム２５１の書き込み性能の低下を判断した場合について説明する。
【００８２】
性能監視部３２０は、ストレージボリューム２５１の書き込み性能が低下した旨（第３通知）を全体コントローラ２００に通知する（Ｔ２０１：性能低下通知手段）。この通知を受信した場合、全体コントローラ２００は、ストレージボリューム２５１を構成する全ての記憶デバイス２３１〜２３５に対して、ＧＣブロック数率の問い合わせを行う（Ｔ２０２〜Ｔ２０６）。つまり、全体コントローラ２００から各デバイスコントローラ２３１Ａ〜２３５Ａに対してＧＣブロック数率の問い合わせが行われる。
【００８３】
この問い合わせを受信した記憶デバイス２３１〜２３５の各デバイスコントローラ２３１Ａ〜２３５Ａは、それぞれブロック数管理部２３１Ｃ〜２３５Ｃに管理しているＧＣブロック数率を全体コントローラ２００に返信する（Ｔ２０７〜Ｔ２１１）。これにより、全体コントローラ２００は、記憶デバイス２３１〜２３５からブロック数率を取得する（取得手段）。
【００８４】
全体コントローラ２００は、デバイスコントローラ２３１Ａ〜２３５ＡからＧＣブロック数率を受信した場合、各デバイスコントローラ２３１Ａ〜２３５Ａから受信したＧＣブロック数率と、第２閾値記憶部２１１に記憶されている、ストレージボリューム２５１に対する第２閾値（０．８）とをそれぞれ比較する（Ｔ２１２）。このとき、例えば、デバイスコントローラ２３３Ａから受信したＧＣブロック数率のみが第２閾値を超過していたとする。
【００８５】
全体コントローラ２００は、比較結果に基づいて、ストレージボリューム２５１の書き込み性能の低下の原因は、記憶デバイス２３３であると判断する（Ｔ２１３）。次に、全体コントローラ２００は、記憶デバイス２３３に対するデータの書き込みを停止する（Ｔ２１４）。
【００８６】
図１０は、書き込み性能の低下の通知を受信したときの全体コントローラ１００とデバイスコントローラ２３３Ａとの処理の一例を示すタイミングチャートである。
【００８７】
全体コントローラ２００が記憶デバイス２３３を含むストレージボリューム２５１に対して書き込みを実行中に（Ｔ３０１）、性能監視部３２０からの通知に基づいて、ストレージボリューム２５１の書き込み性能の低下の原因（書き込み性能の低下している記憶デバイス）は、記憶デバイス２３３であると特定する（Ｔ３０２）。これらの処理は、図９を用いて既述した通りである。
【００８８】
次に、全体コントローラ２００は、記憶デバイス２３３への書き込みを停止する（Ｔ３０３）。このＴ３０３以降の処理、つまり、Ｔ３０３〜Ｔ３１８の処理は、図５を用いて説明したＴ１０３〜Ｔ１１８の処理と実質的に同様であるため、説明は省略する。なお、Ｔ３０７の処理が、ＧＣ処理を実行させる指示を出力する出力手段に該当する。
【００８９】
以上のように構成された情報処理システム１によると、ストレージボリューム２５１に対する書き込み性能が書き込み性能判定値以下になった場合に、全体コントローラ２００は、該ストレージボリューム２５１を構成する記憶デバイス２３１〜２３５のＧＣブロック数率を取得し、取得したＧＣブロック数率が第２閾値を超えている記憶デバイス（以下、対象記憶デバイスという）に対してＧＣ処理を実行させることができる。このため、ストレージボリューム２５１の書き込み性能の低下を解消することができる。
【００９０】
一例を挙げて、より詳細に説明する。ストレージボリューム２５１を構成する記憶デバイス２３１〜２３５のＮＡＮＤフラッシュメモリ２３１Ｂ〜２３５Ｂは共に、平均書き込みレイテンシ０．１ミリ秒、最大書き込みレイテンシ１００ミリ秒の書き込み性能であるとする。
【００９１】
また、記憶デバイス２３３のＮＡＮＤフラッシュメモリ２３３ＢのＧＣブロック数率が第２閾値（本第２の実施形態では０．８）を超えており、書き込みレイテンシが５０ミリ秒となっているとする。
【００９２】
この場合、従来の情報処理システムの場合においては、ストレージボリューム２５１全体の書き込みレイテンシは、記憶デバイス２３３の書き込み性能悪化の影響を受けて５０ミリ秒になる。これは、記憶デバイス２３３で書き込み性能に低下が生じていない場合と比較すると、５００倍（０．１ミリ秒：５０ミリ秒）の値となる。
【００９３】
これに対して、本第２の実施形態の情報処理システム１によると、記憶デバイス２３３を含むストレージシステム２５１の書き込み性能が書き込み性能判定値以下になった場合、記憶デバイス２３３のＧＣブロック数率は第２閾値を超えていると考えられるため記憶デバイス２３３のＧＣ処理が実行される。一方、記憶デバイス２３３に対する新規データの書き込みを行わない。これに代わり、記憶装置２０は、ＮＡＮＤフラッシュメモリ２３３Ｂよりも書き込みが高速なキャッシュ２１０又は退避用バッファ２２０に該データの書き込みを行う。よって、ストレージボリューム２５１の書き込みレイテンシは、各記憶デバイス２３１〜２３５の平均書き込みレイテンシに相当する０．１ミリ秒に、パリティ計算のオーバヘッドを加えた値に抑えられる。
【００９４】
これにより、ストレージボリューム２５１に対してデータの読み書きを行っているアプリケーション部３１０は、ストレージボリューム２５１に対する書き込み遅延に起因する応答時間の悪化、処理スループットの低下、Ｉ／Ｏタイムアウトエラーの発生を防止することができる。
【００９５】
また、記憶装置２０は、退避用バッファとして２つの退避用バッファ２２０，２２１を有しており、また、アドレス表として２つのアドレス表２０１，２０２を有している。よって、全体コントローラ２００は、例えばストレージボリューム２５１を構成する５つの記憶デバイス２３１〜２３５のうち２つの記憶デバイスのＧＣブロック数率が第２閾値を超えていると判断した場合、その２つの記憶デバイスに対する新規な書き込みデータを捕捉し、２つの退避用バッファ２２０，２２１及びアドレス表２０１，２０２をそれぞれの記憶デバイスに割り当て、退避用バッファにデータを書き込むことができる。
【００９６】
より詳細には、例えば、仮に、全体コントローラ２００は、ストレージボリューム２５１を構成する記憶デバイス２３１〜２３５のうち記憶デバイス２３１、２３２の２つの記憶デバイスのＧＣブロック数率が第２閾値を超えていると判断したとする。この場合、全体コントローラ２００は、記憶デバイス２３１に対する新規データの書き込みを退避用バッファ２２０に書き込む。このとき、全体コントローラ２００は、該新規データに関する論理ブロックアドレスの管理をアドレス表２０１により行う。また、全体コントローラ２００は、記憶デバイス２３２に対する新規データの書き込みを退避用バッファ２２１に書き込む。このとき、全体コントローラ２００は、該新規データに関する論理ブロックアドレスの管理をアドレス表２０２により行う。このため、情報処理システム１の並行処理性を向上させることができる。
【００９７】
なお、退避用バッファ２２０，２２１は、ストレージボリューム２５２に対して書き込み性能が書き込み性能判定値以下になった場合に、ストレージボリューム２５２を構成する記憶デバイス２３６〜２３８のうちの記憶デバイスに対して、ＧＣ処理を実行する必要が生じた場合にも適用することができる。
【００９８】
また、上記第２の実施形態においては、退避用バッファ２２０，２２１の２つ、この２つの退避バッファ２２０，２２１にそれぞれ対応するアドレス表２０１，２０２の２つを記憶装置２０に設ける構成で説明したがこれに限られない。退避用バッファと、この退避用バッファに対応するアドレス表を記憶装置２０に３以上設けてように構成しても良い。これにより、１つのストレージボリューム内の３つ以上の記憶デバイスにＧＣ処理が必要な場合も、同時に処理することができるため、並列処理性をより向上させることができる。
【００９９】
さらに、退避用バッファ２２０，アドレス表２０１をストレージボリューム２５１に対して用いるようにし、退避用バッファ２２１，アドレス表２０２をストレージボリューム２５２に対して用いるようにしても良い。これにより、情報処理システム１は、２つ以上のストレージボリュームがある場合にも、並列的に処理を行うことが可能になる。
【０１００】
またさらに、記憶装置２０とホスト３０とのＩ／ＯインタフェースとしてＰＣｌｅ２４０を用いた場合で説明したが、Ｉ／Ｏインタフェースはこれに限るものではない。例えば、ＰＣｌｅに代えて、Ｆｉｂｅｒ−ＣｈａｎｎｅｌなどのＦＣ−ＳＡＮ、イーサネット（登録商標）を使用したＦＣｏＥ．ｉＳＣＳＩなどの方式を記憶装置２０とホスト３０とのＩ／Ｏインタフェースとして用いても良い。
【０１０１】
なお、ストレージボリューム２５１，２５２の書き込み性能が書き込み性能判定値以下になったことの通知は、管理用ＬＡＮ２５０経由で行うこととしているが、ＰＣｌｅを用いて通知するようにしても良い。ホスト３０から記憶装置２０への第２閾値の変更の通知も同様に、経由するインタフェースは問わない。
【０１０２】
さらに、上記第２の実施形態では、記憶装置２０をホスト３０の外部記憶装置に適用した場合で説明したが、これに限るものではない。例えば、記憶装置を有する情報処理装置についても適用することが可能である。当該情報処理装置としては、例えば、サーバ装置、パーソナルコンピュータ、携帯端末装置、タブレット端末等を挙げることができる。なお、図１１は、記憶装置を組み込んだサーバ装置４００の概略構成の一例を示す図である。図１１に示すように、サーバ装置４００は、ＣＰＵ４１０、ＲＯＭ４２０、ＲＡＭ４３０、記憶装置１０、及び通信インタフェース４４０を含む。
【０１０３】
さらに、記憶装置１０、記憶装置２０、ホスト３０は、それぞれコンピュータである。このため、上記第１の実施形態で説明した処理を記憶装置１０に実現させるプログラムとして記憶装置１０に提供することが可能であり、第２の実施形態で説明した処理を、情報処理システム１を構成する記憶装置２０、ホスト３０に実現させるプログラムとして記憶装置２０、ホスト３０に提供することが可能である。この場合、外部装置から若しくはネットワークを介して受信するプログラムを記憶装置１０内の所定の記憶領域、記憶装置２０内の所定の記憶領域、ホスト３０内の所定の記憶領域にそれぞれ格納する。このように格納したプログラムを全体コントローラ１００、２００、デバイスコントローラ１３１Ａ〜１３６Ａ，２３１Ａ〜２３８Ａ、及びホスト３０内のＣＰＵが実行するようにしても良い。なお、記憶装置１０，２０、及びホスト３０がプログラムを外部から受け取る構成については従来の技術を適用することが可能である。
【０１０４】
図１２は、記憶装置５０の概略構成の一例を示す図である。記憶装置１０は、図１２に示す構成でも実現することができる。
【０１０５】
図１２に示すように、記憶装置５０は、記憶部６０、コネクションユニット（ＣＵ）５１、インタフェース部（Ｉ／Ｆ部）５２、マネジメントモジュール（ＭＭ）５３、及びバッファ５６を備えている。
【０１０６】
記憶部６０は、記憶機能およびデータ転送機能を其々有する複数のノードモジュール（ＮＭ）５４をメッシュネットワークにより相互に接続した構成を備える。記憶部６０は、複数のＮＭ５４に対してデータを分散して記憶する。データ転送機能は、各ＮＭ５４が効率的にパケットを転送する転送方式を備える。
【０１０７】
図１２では、各ＮＭ５４が其々格子点に配置された、矩形状のネットワークの例を示す。格子点の座標を座標（ｘ、ｙ）で示し、格子点に配置されるＮＭ５４の位置情報は、当該格子点の座標と対応してノードアドレス（ｘＤ、ｙＤ）で示されるものとする。また、図１２の例では、左上隅に位置するＮＭ５４が原点のノードアドレス（０、０）を有し、各ＮＭ５４を横方向（Ｘ方向）および縦方向（Ｙ方向）に移動することで、ノードアドレスが整数値で増減する。
【０１０８】
各ＮＭ５４は、それぞれ、２つ以上のインタフェース５５を備える。各ＮＭ５４は、隣接するＮＭ５４と、インタフェース５５を介して接続される。各ＮＭ５４は、２以上の異なる方向に隣接するＮＭ５４と接続される。例えば、図１２において左上隅のノードアドレス（０、０）で示されるＮＭ５４は、Ｘ方向に隣接するノードアドレス（１、０）で表されるＮＭ５４と、Ｘ方向とは異なる方向であるＹ方向に隣接するノードアドレス（０、１）で表されるＮＭ５４と、それぞれ接続される。また、図１２においてノードアドレス（５１）で表されるＮＭ５４は、互いに異なる４の方向に隣接する、ノードアドレス（１、０）、（０、１）、（２、１）および（５２）でそれぞれ示される４つのＮＭ５４に接続される。
【０１０９】
図１では、各ＮＭ５４が矩形格子の格子点に配置されるように示したが、各ＮＭ５４の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各ＮＭ５４が２以上の異なる方向に隣接するＮＭ５４と接続されればよく、例えば三角形、六角形などでもよい。また、図１では各ＮＭ５４が２次元状に配置されているが、各ＮＭ５４を３次元的に配置しても構わない。３次元的にＮＭ５４を配置した場合は、（ｘ、ｙ、ｚ）の３つの値で各ＮＭ５４を指定することができる。また、ＮＭ５４が２次元的に配置される場合には、対辺に位置するＮＭ５４同士を接続することによって、ＮＭ５４をトーラス状に接続するようにしてもよい。
【０１１０】
また、各ＮＭ５４は、ＮＣ（ノードコントローラ）を有している。ＮＣはＣＵ５１または他のＮＭ５４からインタフェース１５を介してパケットを受信したり、ＣＵ５１または他のＮＭ５４にインタフェース部５２を介してパケットを送信したりする。また、ＮＣは、受信したパケットの宛先が自ＮＭ１４である場合には、そのパケット（そのパケットに記録されるコマンド）に応じた処理を実行する。例えば、コマンドがアクセスコマンド（リードコマンドまたはライトコマンド）である場合には、ＮＣは第１の所定のメモリに対するアクセスを実行する。ＮＣは、受信したパケットの宛先が自ＮＭ５４では無い場合には、そのパケットを自ＮＭ５４に接続されている他のＮＭ５４に転送する。
【０１１１】
ＣＵ５１は、外部に接続するコネクタを備え、外部からの要求に応じて記憶部６０にデータを入出力することができる。具体的には、ＣＵ５１は、図示していない記憶領域と演算装置とを備え、演算装置は、記憶領域をワークエリアとして使用しながらサーバアプリケーションプログラムを実行することができる。ＣＵ５１は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。ＣＵ５１は、外部からの要求の処理の過程において、記憶部６０に対するアクセスを実行する。ＣＵ５１は、記憶部６０にアクセスする際には、ＮＭ５４が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自ＣＵ５１に接続されているＮＭ５４に送信する。
【０１１２】
図１２の例では、記憶装置５０は、４つのＣＵ５１を備えている。４つのＣＵ５１は、夫々異なるＮＭ５４に接続される。ここでは、４つのＣＵ５１は、ノード（０、０）、ノード（１、０）、ノード（２、０）、およびノード（３、０）に一対一に接続されている。なお、ＣＵ５１の数は任意に構成することが可能である。また、ＣＵ５１は、記憶部１０を構成する任意のＮＭ５４に接続されることが可能である。また、１つのＣＵ５１が複数のＮＭ５４に接続されてもよいし、１つのＮＭ５４が複数のＣＵ５１に接続されてもよい。また、記憶部１０を構成する複数のＮＭ５４のうちの任意のＮＭ５４にＣＵ５１が接続されてもよい。
【０１１３】
また、ＣＵ５１は、キャッシュ５１Ａを含む。キャッシュ５１は、ＣＵ５１が各種処理を実行する場合に、データを一時的に保存する。
【０１１４】
バッファ５６は、ＣＵ５１がＮＭ５４に対してデータを保存する場合に、データを一時的に保存する。また、バッファ５６に保存したデータは、ＣＵ５１により所定のタイミングで所定のＮＭ５４に保存される。
【０１１５】
次に、図１２に示すように構成される記憶装置５０と第１の実施形態で説明した記憶装置１０（参照：図１）との対応関係について説明する。
【０１１６】
全体コントローラ１００は、複数のＣＵ５１（図１２では４つのＣＵ５１）と対応している。キャッシュ１１０は、キャッシュ５１Ａと対応している。退避用バッファ１２０は、バッファ５６と対応している。記憶デバイス１３１〜１３６は、６つのＮＭ５４と対応している。デバイスコントローラ２０は、ＮＭ５４内のＮＣと対応している。
【０１１７】
したがって、記憶装置１０が実行する処理は、記憶装置５０によっても実行することが可能になっている。
【０１１８】
その他、上記実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態および変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、書き換え、変更を行うことができる。これら実施形態や変形は、発明の範囲は要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１９】
１…情報処理システム，１０，２０，５０，６０…記憶装置、３０…ホスト、５１…ＣＵ（コネクションユニット）、５１Ａ…キャッシュ、５４…ＮＭ（ノードモジュール）、５６…バッファ、１００，２００…全体コントローラ（第１制御部）、１０１，２０１，２０２…アドレス表、１１０，２１０…キャッシュ、１２０，２２０，２２１…退避用バッファ、１３１〜１３６，２３１〜２３８…記憶デバイス、１３１Ａ〜１３６Ａ，２３１Ａ〜２３８Ａ…デバイスコントローラ（第２制御部），１３１Ｂ〜１３６Ｂ，２３１Ｂ〜２３８Ｂ…ＮＡＮＤフラッシュメモリ（不揮発性メモリ）、１３１Ｃ〜１３６Ｃ，２３１Ｃ〜２３８ｃ…ブロック数管理部（管理部）、１３１Ｄ〜１３６Ｄ，２３１Ｄ〜２３８Ｄ…第１閾値記憶部、２１１…第２閾値記憶部、３１０…アプリケーション部、３２０…性能監視部（監視部）、４００…サーバ装置
【図１】
0006320318.tif 000002
【図２】
0006320318.tif 000003
【図３】
0006320318.tif 000004
【図４】
0006320318.tif 000005
【図５】
0006320318.tif 000006
【図６】
0006320318.tif 000007
【図７】
0006320318.tif 000008
【図８】
0006320318.tif 000009
【図９】
0006320318.tif 000010
【図１０】
0006320318.tif 000011
【図１１】
0006320318.tif 000012
【図１２】
0006320318.tif 000013