(57)【特許請求の範囲】
【請求項１】
第１メモリと、
外部から第１要求を受信するインタフェース部と、
前記第１メモリから読み出したデータに対し、複数のエラー訂正のうちの前記第１要求に応じたエラー訂正を実行する処理部と、
を備え、
前記インタフェース部は、外部から第２要求を受信し、前記第２要求に応じて前記複数のエラー訂正の一覧を外部に送信し、
前記第１要求は、送信された前記一覧に基づき生成されている、
メモリシステム。
【請求項２】
前記一覧は、前記複数のエラー訂正の訂正能力または訂正時間を含む、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第１要求は、その実行を許可するエラー訂正である第１のエラー訂正の指定を含まず、その実行を許可しないエラー訂正である第２のエラー訂正の指定を含み、
前記処理部は、前記第１のエラー訂正を実行し、前記第２のエラー訂正を実行しない、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記第１要求は、条件の指定を含み、
前記処理部は、前記複数のエラー訂正のうちから前記第１要求によって指定された条件を満たす第１のエラー訂正を選択し、前記第１のエラー訂正を実行し、前記第１のエラー訂正と異なる第２のエラー訂正を実行しない、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記条件は、時間の制限値であって、
前記処理部は、第３要求の実行時のレイテンシが前記制限値を越えないように前記第１のエラー訂正を選択する、前記第３要求は前記データのリードの要求である、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項６】
第２メモリをさらに備え、
前記インタフェース部は、前記第１要求に含まれる指定を前記第２メモリに格納し、
前記処理部は、前記第２メモリに格納された指定を参照する、
ことを特徴とする請求項３に記載のメモリシステム。
【請求項７】
前記インタフェース部は、SCSI(Small  Computer  System  Interface)規格に準拠し、
前記第１要求は、前記指定を含むModeSelectコマンドであり、
前記第２メモリは、ModePageである、
ことを特徴とする請求項６に記載のメモリシステム。
【請求項８】
複数のエラー訂正の一覧を記憶する記憶部と、
データを記憶するメモリと、
前記メモリに格納されているデータに対するエラー訂正の種類を外部からの要求に応じて選択する処理部と、
を備え、
前記処理部は、前記一覧を外部へ送信し、送信された前記一覧に基づき生成されている前記要求を受信する、
メモリシステム。
【請求項９】
メモリシステムとホストとを備え、
前記メモリシステムは、第１メモリと、前記ホストと通信するインタフェース部と、複数のエラー訂正を実行可能な処理部とを備え、
前記ホストは、前記インタフェース部に第２要求を送信し、
前記インタフェース部は、前記ホストから第２要求を受信し、前記第２要求に応じて前記複数のエラー訂正の一覧を前記ホストに送信し、
前記ホストは、前記一覧に基づき第１要求を生成し、生成した前記第１要求を前記インタフェース部に送信し、
前記処理部は、前記第１メモリから読み出したデータに対し、前記複数のエラー訂正のうちの前記第１要求に応じたエラー訂正を実行する、
処理装置。
【請求項１０】
前記ホストは、前記処理部が前記第１要求に応じたエラー訂正に失敗した場合にエラー訂正を実行する、
請求項９に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、一般的に、メモリシステムおよび処理装置に関する。
【背景技術】
【０００２】
従来、メモリシステムは、データを記憶するストレージとして機能するメモリを有する。メモリに記憶されるデータにエラーが生じる場合がある。メモリシステムは、データに含まれるエラーを訂正する機能（エラー訂正機能）を有する。メモリシステムは、訂正能力が異なる複数のエラー訂正機能を有する場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１７７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、メモリシステムを含むシステムにおいて効率的にエラー訂正を実行することが可能となるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリシステムは、第１メモリと、インタフェース部と、処理部とを備える。前記インタフェース部は、外部から第１要求を受信する。前記処理部は、前記第１メモリから読み出したデータに対し、複数のエラー訂正のうちの前記第１要求に応じたエラー訂正を実行する。前記インタフェース部は、外部からの第２要求を受信し、前記第２要求に応じて前記複数のエラー訂正の一覧を外部に送信する。前記第１要求は、前記送信された一覧に基づき生成されている。
【図面の簡単な説明】
【０００６】
【図１】図１は、メモリシステムの第１の実施形態の実装例を示す図である。
【図２】図２は、メモリシステムの構成例を示す図である。
【図３】図３は、メモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。
【図４】図４は、電荷量の分布と読み出し電圧との関係を示す図である。
【図５】図５は、レベル３訂正のためのフレームの構成例を示す図である。
【図６】図６は、第１リストのデータ構成例を示す図である。
【図７】図７は、第１設定情報のデータ構成例を示す図である。
【図８】図８は、ホストの構成例を示す図である。
【図９】図９は、第２リストのデータ構成例を示す図である。
【図１０】図１０は、第２設定情報のデータ構成例を示す図である。
【図１１】図１１は、第１の実施形態の設定処理を説明するシーケンス図である。
【図１２】図１２は、メモリシステムに対するリードの際のホストの動作を説明するフローチャートである。
【図１３】図１３は、リード要求の受信時のメモリシステムの動作を説明するフローチャートである。
【図１４】図１４は、応答の一例を示す図である。
【図１５】図１５は、第１設定情報の別のデータ構成例を示す図である。
【図１６】図１６は、第３の実施形態の設定処理を説明するフローチャートである。
【図１７】図１７は、メモリシステムの第４の実施形態の実装例を示す図である。
【図１８】図１８は、RAIDコントローラの構成例を示す図である。
【図１９】図１９は、メモリシステムの第５の実施形態の実装例を示す図である。
【図２０】図２０は、ストレージコントローラの構成例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、メモリシステムの第１の実施形態の実装例を示す図である。情報処理システム１０００は、ホスト２と、複数のメモリシステム１とを備える。各メモリシステム１は、ホスト２に接続され、夫々ホスト２の外部記憶装置として機能する。ホスト２は、各メモリシステム１に対しアクセス要求を発行することができる。アクセス要求は、データをライトする要求であるライト要求、および、データをリードする要求であるリード要求を含む。各メモリシステム１とホスト２との間の通信インタフェース規格としては任意のインタフェース規格が採用可能である。例えば、SCSI(Small  Computer  System  Interface)規格、SAS（Serial  Attached  SCSI）規格、PCI  Express規格、SATA(Serial  ATA)規格などが採用可能である。
【０００９】
各メモリシステム１は、例えば同一の構成を具備する。図２は、メモリシステム１の構成例を示す図である。
【００１０】
メモリシステム１は、メモリコントローラ１０およびNAND型のフラッシュメモリ（NANDメモリ）１１を備える。NANDメモリ１１は、ストレージとして機能するメモリである。ストレージとしては、NAND型のフラッシュメモリ以外の種類のメモリが採用可能である。例えば、NOR型のフラッシュメモリ、ReRAM(Resistance  Random  Access  Memory)、MRAM(Magnetoresistive  Random  Access  Memory)、または磁気ディスクなどがストレージとして採用可能である。
【００１１】
NANDメモリ１１は、メモリセルアレイ１６を備える。メモリセルアレイ１６は、eraseの単位となるブロックを複数備えて構成される。
【００１２】
図３は、メモリセルアレイ１６に含まれる１個のブロックの構成例を示す回路図である。図示するように、各ブロックは、Ｘ方向に沿って順に配列された（ｑ＋１）個のＮＡＮＤストリングを備えている（ｑは、０以上の整数）。（ｑ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１３】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたMOSFET（Metal  Oxide  Semiconductor  Field  Effect  Transistor）から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成された電荷蓄積層（Floating  Gate）、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、Floating  Gateに蓄えられる電子の数に応じてしきい値電圧が変化し、このしきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルトランジスタＭＴは、Floating  Gateに、データに応じた量の電荷を保持する。
【００１４】
具体的には、メモリセルトランジスタＭＴは、NANDメモリ１１が備える周辺回路（図示せず）によって、しきい値電圧がデータに応じた目標値に到達するように電子がチャージされる。周辺回路は、チャージポンプ、ロウデコーダ、センスアンプおよびカラムデコーダを含む。メモリセルトランジスタＭＴは、１ビットのデータを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００１５】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１６】
ワード線ＷＬ０〜ＷＬｑは、ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴは１ページとして取り扱われ、このページごとにデータのプログラム及びデータのリードが行われる。
【００１７】
例えば、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う記憶方式によれば、上位ページデータ“ｘ”と下位ページデータ“ｙ”で定義される４値データ“ｘｙ”の何れか一つをメモリセルトランジスタＭＴに保持可能である。この、４値データ“ｘｙ”は、Floating  Gateに蓄えられる電荷量の順に、例えば、データ“１１”、“０１”、“００”、“１０”が割り当てられる。データ“１１”は、消去状態である。なお、各データに関連づけられる電荷量の順番は、上記に限定されない。隣接するデータ間のハミング距離が１となるように電荷量に各データが関連づけられる方式であれば、任意の方式が採用可能である。
【００１８】
周辺回路は、リード動作時においては、メモリセルトランジスタＭＴに記憶されているデータ（“１１”、“０１”、“００”、“１０”）を特定するために、ワード線ＷＬに読み出し電圧を印加する。
【００１９】
図４は、電荷量の分布と読み出し電圧との関係を示す図である。横軸は、電荷量に応じたしきい値電圧を示している。図示するように、各データに割り当てられた電荷量は、実際には、夫々、一定の幅の範囲に分布する。メモリセルトランジスタＭＴに保持された電荷量が何れの範囲に属するかは、各範囲の間に設定された読み出し電圧としきい値電圧との比較に基づいて判定される。例えば、周辺回路は、上位ページデータが“１”であるか“０”であるかを、メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在するか否かによって判定する。メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在する場合、周辺回路は、上位ページデータは“０”であると判定する。メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在しない場合、周辺回路は、上位ページデータは“１”であると判定する。また、周辺回路は、下位ページデータが“１”であるか“０”であるかを、メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth1よりも大きいか小さいかによって判定する。メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth1よりも大きい場合、周辺回路は、下位ページデータが“０”であると判定する。メモリセルトランジスタＭＴのしきい値電圧が読み出し電圧Vth1よりも小さい場合、周辺回路は、下位ページデータが“１”であると判定する。
【００２０】
各データに割り当てられた電荷量の範囲は、時間経過とともに、また、アクセス毎に、変化する。したがって、メモリセルアレイ１６にライトされたデータの値が、異なる値としてリードされる場合がある。データの変化に対応できるように、NANDメモリ１１は、読み出し電圧Vth0〜Vth2が変更可能に構成される。
【００２１】
メモリコントローラ１０は、ホスト２とNANDメモリ１１との間のデータ転送を含むメモリシステム１の全ての動作、の制御を実行する。メモリコントローラ１０は、インタフェース（I/F）部１２、第１処理部１３、NAND制御部１４、および記憶部１５を備える。インタフェース（I/F）部１２、第１処理部１３、およびNAND制御部１４のうちの一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現可能である。ソフトウェアによって構成要素が実現されるとは、ＣＰＵ（Central  Processing  Unit）と予めプログラムを記憶するメモリとを備えるコンピュータにおいて前記ＣＰＵが前記プログラムに従って構成要素の機能を実現することをいう。
【００２２】
I/F部１２は、ホスト２とメモリコントローラ１０との間の通信の制御を実行する。I/F部１２は、ホスト２からのアクセス要求をNAND制御部１４に転送したり、ホスト２からの設定要求に応じてメモリコントローラ１０の動作設定を行ったりする。
【００２３】
NAND制御部１４は、I/F部１２から受信するアクセス要求に応じてNANDメモリ１１に対するアクセスを実行する。具体的には、NAND制御部１４は、ライト要求に応じてデータをNANDメモリ１１にライトする。また、NAND制御部１４は、リード要求に応じてデータをNANDメモリ１１からリードする。
【００２４】
第１処理部１３は、後述の第２処理部２４がホスト２におけるエラー訂正機能を担っていることに対し、メモリシステム１におけるエラー訂正機能を担う。第１処理部１３は、NANDメモリ１１にライトされるデータにエラー訂正符号を付す。また、第１処理部１３は、NANDメモリ１１からリードされたデータに対して、エラー訂正符号に基づいて、エラー検出およびエラー訂正を実行する。
【００２５】
さらに、第１処理部１３は、訂正能力が夫々異なる複数のモードのエラー訂正を実行することができる。第１処理部１３は、何れのモードでもエラー訂正が実行可能なようにデータにエラー訂正符号を付す。例えば、第１処理部１３は、レベル１〜４のモードでエラー訂正を実行できることとする。レベル１のモードのエラー訂正による訂正能力が最も低く、レベルが高いモードのエラー訂正ほど訂正能力が高い。各モードのエラー訂正の手法を以下に説明する。なお、レベルｘのモードのエラー訂正を、レベルｘ訂正、と表記する。
【００２６】
レベル１訂正は、例えばＢＣＨ符号を使用した訂正である。第１処理部１３は、ライト対象のデータを所定サイズ毎に分割し、分割によって生成された各部分データによってレベル１訂正のフレーム（第１フレーム）を生成する。第１フレームのサイズはページのサイズと同じであってもよいし異なっていてもよい。例えば、第１フレームのサイズはページのサイズよりも小さい。NAND制御部１４は、生成された各第１フレームをNANDメモリ１１にライトする。各第１フレームは、１つの部分データと、当該１つの部分データから演算されたエラー訂正符号を含む。第１処理部１３は、レベル１訂正を第１フレーム単位で実行する。
【００２７】
レベル２訂正においては、例えば、第１処理部１３は、ＢＣＨ符号によるエラー訂正に成功するまで、読み出し電圧Vth0〜Vth2を夫々変化させながら複数回のリードを実行する。前述のように、各データに割り当てられた電荷量の範囲の変化に起因してメモリセルアレイ１６内のデータにエラーが生じる。読み出し電圧Vth0〜Vth2をより適した電圧に設定することにより、エラービットの数が減少し、その結果、訂正の成功率が向上する。読み出し電圧Vth0〜Vth2をどのように変化させるかについては、任意に設計可能である。レベル２訂正によれば読み出し電圧Vth0〜Vth2を変化させながら複数回のリードが実行されるので、レベル２訂正による訂正にかかる時間はレベル１訂正による訂正にかかる時間よりも大きい。
【００２８】
レベル３訂正は、例えば、複数のデータを用いて行われるエラー訂正である。図５は、レベル３訂正のためのフレームの構成例を示す図である。この例によれば、第１処理部１３は、複数（ここでは４つ）の第１フレームを１つのフレームグループとして管理する。第１処理部１３は、１つのフレームグループに属する４つの第１フレームを使って、レベル３訂正のためのフレーム（第２フレーム）を構築する。例えば、１つの第１フレームの先頭からｉ番目のビットは、他の３つの第１フレームの先頭からｉ番目のビットとともにｉ番目の第２フレームを構成する。レベル３訂正のためのエラー訂正符号としては、例えばＲＳ符号が採用可能である。第２フレーム毎のエラー訂正符号は、NANDメモリ１１内の所定の位置に格納される。第２フレーム内にその第２フレームのエラー訂正符号が格納されてもよい。
【００２９】
レベル３訂正においては、第１処理部１３は、リード対象のデータを構成する第１フレームのほかに、当該第１フレームと同一のフレームグループを構成する３つの第１フレームをリードする。そして、リード対象のデータを構成する第１フレームに含まれるエラービット毎に第２フレームに対するエラー訂正を実行する。
【００３０】
なお、１つのフレームグループを構成する４つの第１フレームの組み合わせは任意の方法で決定される。例えば、１つのフレームグループとして管理される４つの第１フレームは、夫々、属するブロックが異なる。また、例えば、NANDメモリ１１が夫々接続されるチャネルが異なる複数のメモリチップによって構成される場合には、属するメモリチップが夫々異なる複数の第１フレームによって１つのフレームグループを構成することが可能である。また、メモリセルアレイ１６が並列に動作可能な領域（District）に分割されて構成される場合には、属するDistrictが夫々異なる複数の第１フレームによって１つのフレームグループを構成することが可能である。レベル３訂正によれば、複数の第１フレームをリードする必要があるため、レベル３訂正にかかる時間はレベル１訂正にかかる時間およびレベル２訂正にかかる時間よりも大きい。
【００３１】
レベル４のモードのエラー訂正（レベル４訂正）の例を説明する。レベル４訂正においては、第１処理部１３は、第１フレーム毎のエラー訂正と第２フレーム毎のエラー訂正とを交互に繰り返すことによって、フレームグループ内に含まれる１以上のエラービットを逐次訂正する。換言すると、レベル４訂正においては、第１処理部１３は、第１フレーム毎のエラー訂正と第２フレーム毎のエラー訂正とで積符号（product  code）を構成し、反復訂正を行う。レベル４訂正によれば、第１フレーム毎のエラー訂正と第２フレーム毎のエラー訂正とが繰り返されるため、レベル４訂正にかかる時間はレベル３訂正にかかる時間よりも大きい。
【００３２】
記憶部１５は、レジスタまたはメモリによって構成される。記憶部１５は、第１リスト１０１および第１設定情報１０２が格納される。記憶部１５としては、任意の種類のメモリが採用可能である。例えば、DRAM（Dynamic  Random  Access  Memory）またはSRAM（Static  Random  Access  Memory）が採用可能である。
【００３３】
図６は、第１リスト１０１のデータ構成例を示す図である。第１リスト１０１は、メモリシステム１で実行可能なエラー訂正のモードのリストである。第１リスト１０１には、モード毎に訂正能力と訂正にかかる時間（訂正時間）とが記述される。第１リスト１０１に記述される訂正能力としては、他のモードとの比較が可能であれば任意の指標が採用可能である。例えば、所定サイズのデータ内のエラー訂正可能な最大のビット数が、訂正能力の指標として採用可能である。また、第１リスト１０１に記述される訂正時間としては、他のモードとの比較が可能であれば任意の指標が採用可能である。例えば、所定ビット数のエラーの訂正にかかる時間のワースト値が訂正時間の指標として採用可能である。また、所定ビット数のエラーの訂正にかかる時間の平均値が訂正時間の指標として採用可能である。
【００３４】
図７は、第１設定情報１０２のデータ構成例を示す図である。第１設定情報１０２は、第１リスト１０１に記述されている複数のモードのエラー訂正の夫々について、実行の許可または実行の不許可が設定される情報である。図７の例では、「Enabled」は実行が許可されていることを示し、「Disabled」は実行が許可されていないことを示す。即ち、レベル１訂正およびレベル２訂正は許可されており、レベル３訂正およびレベル４訂正は許可されていない。実行の許可および不許可は、ホスト２（正確には設定部２３）によって設定される。
【００３５】
図８は、ホスト２の構成例を示す図である。ホスト２は、訂正制御部２１およびI/F部２２を備える。なお、アクセス要求を発行するための構成の説明を省略する。
【００３６】
I/F部２２は、メモリシステム１とホスト２との間の通信の制御を実行する。訂正制御部２１は、データの訂正に関する制御を実行する。具体的には、訂正制御部２１は、設定部２３、第２処理部２４、および記憶部２５を備える。設定部２３および第２処理部２４のうちの一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現可能である。記憶部２５は、レジスタまたはメモリによって構成される。
【００３７】
第２処理部２４は、１以上のモードのエラー訂正を実行することができる。例えば、第２処理部２４は、複数のメモリシステム１を用いてRAID（Redundant  Arrays  of  Inexpensive  Disks）を構築し、RAIDに基づくエラー訂正を実行する。エラー訂正のための方式として、RAID  1、RAID  5、RAID  6、RAID  10、RAID  01、またはこれらの組み合わせが採用可能である。また、速度の向上を図るために、例えばRAID  5またはRAID  6などのエラー訂正の方式は、ストライピングと組み合わせて実装されてもよい。また、第２処理部２４は、エラー訂正符号を用いたエラー訂正を実行してもよい。
【００３８】
記憶部２５は、レジスタまたはメモリによって構成される。記憶部２５は、第２リスト２０１、第２設定情報２０２、および第１リスト１０１が格納される。記憶部２５としては、任意の種類のメモリが採用可能である。例えば、DRAM（Dynamic  Random  Access  Memory）またはSRAM（Static  Random  Access  Memory）が採用可能である。第１リスト１０１は、１つのメモリシステム１から取得され、記憶部２５に格納される。情報処理システム１０００を構成する複数のメモリシステム１がエラー訂正機能のモードに関して同一の構成を有さない場合には、記憶部２５は、第１リスト１０１がメモリシステム１毎に格納されてもよい。
【００３９】
図９は、第２リスト２０１のデータ構成例を示す図である。第２リスト２０１は、ホスト２で実行可能なエラー訂正のモードのリストである。第２リスト２０１には、第１リスト１０１と同様に、モード毎に訂正能力と訂正にかかる時間（訂正時間）とが記述される。
【００４０】
図１０は、第２設定情報２０２のデータ構成例を示す図である。第２設定情報２０２は、第２リスト２０１に記述されている複数のモードのエラー訂正のうち、実行の許可と実行の不許可とが設定される情報である。図１０の例では、「Enabled」は実行が許可されていることを示し、「Disabled」は実行が許可されていないことを示す。即ち、図１０の例によれば、レベル１訂正は許可されておらず、レベル２訂正およびレベル３訂正は許可されている。実行の許可および実行の不許可は、設定部２３によって設定される。
【００４１】
設定部２３は、第１リスト１０１を取得する。そして、設定部２３は、第１リスト１０１および第２リスト２０１に基づいて不要なモードの特定を行う。設定部２３は、特定した結果に基づいて、第１設定情報１０２および第２設定情報２０２を生成する。具体的には、設定部２３は、メモリシステム１において実行可能な複数のモードのうち、不要なモードに関しては「Disabled」を記録し、不要でないモードに関しては「Enabled」を記録した第１設定情報１０２を生成する。また、設定部２３は、ホスト２において実行可能な複数のモードのうち、不要なモードに関しては「Disabled」を記録し、不要でないモードに関しては「Enabled」を記録した第２設定情報２０２を生成する。設定部２３は、第１設定情報１０２をI/F部２２に送信し、I/F部２２は第１設定情報１０２を対象のメモリシステム１に送信する。
【００４２】
不要なモードの特定は、任意の手法によって実行されうる。例えば、設定部２３は、第１リスト１０１に記載される複数のモードのうちの一に着目する（第１着目モード）。そして、設定部２３は、第２リスト２０１に記載される複数のモードのうちの一に着目する（第２着目モード）。そして、設定部２３は、第１着目モードと第２着目モードとの間で、訂正能力および訂正時間を比較する。第１着目モードと第２着目モードとのうち、一方のモードの訂正能力が他方のモードの訂正能力と同じかまたは低く、かつ前記一方のモードの訂正時間が前記他方のモードの訂正時間より大きい場合、設定部２３は、前記一方のモードを不要なモードとして決定する。また、前記一方のモードの訂正能力が他方のモードの訂正能力より低く、かつ前記一方のモードの訂正時間が前記他方のモードの訂正時間と同じかまたは大きい場合、設定部２３は、前記一方のモードを不要なモードとして決定する。設定部２３は、第１リスト１０１に記載される全てのモードと第２リスト２０１に記載される全てのモードとの間の組み合わせの全てについて上記の比較を行う。
【００４３】
図６に示される第１リスト１０１の例と、図９に示される第２リスト２０１の例と、に従って設定部２３による判断の例を説明する。メモリシステム１において実行可能なレベル４訂正は、ホスト２において実行可能なレベル３訂正に比べ、訂正能力が低く、かつ、訂正時間が同じである。したがって、設定部２３は、メモリシステム１におけるレベル４訂正は不要であると判断する。また、メモリシステム１において実行可能なレベル３訂正は、ホスト２において実行可能なレベル２訂正と比較して、訂正能力が同じであり、かつ、訂正時間が大きい。したがって、設定部２３は、メモリシステム１におけるレベル３訂正は不要であると判断する。また、ホスト２において実行可能なレベル１訂正は、メモリシステム１において実行可能なレベル２訂正と比較して、訂正能力が低く、かつ、訂正時間が同じである。したがって、設定部２３は、ホスト２におけるレベル１訂正は不要であると判断する。
【００４４】
なお、第１着目モードと第２着目モードとのうち、一方のモードが他方のモードより訂正能力が高く、かつ前記一方のモードが前記他方のモードより訂正時間が大きい場合、設定部２３は、所定のアルゴリズムに基づいて決定する。例えば、設定部２３は、訂正能力および訂正時間を変数とする所定の関数に基づいて第１着目モードおよび第２着目モードの夫々について評価値を演算し、演算された各着目モードの評価値間の比較に基づいて不要なモードを決定する。評価値としては、例えば、訂正能力を訂正時間で除算して得られる値（単位時間当たりにエラー訂正が可能なエラービット数）が採用可能である。
【００４５】
また、第１着目モードと第２着目モードとのうち、一方のモードが他方のモードより訂正能力が高く、かつ前記一方のモードが前記他方のモードより訂正時間が大きい場合、設定部２３は、何れのモードも不要なモードと決定しないようにしてもよい。
【００４６】
次に、第１の実施形態の情報処理システム１０００の動作を説明する。
【００４７】
図１１は、第１設定情報１０２および第２設定情報２０２の設定に関する動作（設定処理）を説明するシーケンス図である。まず、ホスト２において、設定部２３は、メモリシステム１に対して第１リスト１０１を要求する（S１）。要求は、I/F部２２を介してメモリシステム１に送信される。メモリシステム１においては、I/F部１２は、S１の要求を受信すると、記憶部１５から第１リスト１０１を読み出して、読み出した第１リスト１０１をホスト２に送信する（S２）。ホスト２においては、I/F部２２は、第１リスト１０１を受信すると、受信した第１リスト１０１を記憶部２５に格納する。
【００４８】
続いて、ホスト２においては、設定部２３は、第１リスト１０１および第２リスト２０１に基づいて不要なモードを決定し、決定結果に基づいて第１設定情報１０２および第２設定情報２０２を生成する（S３）。設定部２３は、第１設定情報１０２をI/F部２２に送信し、I/F部２２は第１設定情報１０２をメモリシステム１に送信する（S４）。メモリシステム１においては、I/F部１２は、受信した第１設定情報１０２を記憶部１５に格納する。ホスト２においては、設定部２３は、生成した第２設定情報２０２を記憶部２５に格納する（S5）。
【００４９】
図１１に示す設定処理は、所定のタイミングで実行される。例えば、設定処理は、情報処理システム１０００の起動時に実行される。設定処理は、起動毎に実行されてもよいし、最初の起動の際に一度だけ実行されてもよい。また、設定処理は、情報処理システム１０００の運用中の任意のタイミングで実行されてもよい。
【００５０】
図１２は、メモリシステム１に対するリードの際のホスト２の動作を説明するフローチャートである。ホスト２は、まず、リード要求をメモリシステム１に送信する（S１１）。リード要求は、ホスト２内の図示しないCPUによって生成され、I/F部２２によってメモリシステム１に送信される。メモリシステム１は、リード要求を受信すると、受信したリード要求に応じた動作を実行する。
【００５１】
図１３は、リード要求の受信時のメモリシステム１の動作を説明するフローチャートである。メモリシステム１においては、リード要求は、I/F部１２によって受信される。I/F部１２は、受信したリード要求をNAND制御部１４に転送する。NAND制御部１４は、リード要求によるリード対象のデータをNANDメモリ１１からリードする（S３１）。
【００５２】
続いて、第１処理部１３は、第１設定情報１０２を参照することによって、レベル１訂正に対して「Enabled」が設定されているか否かを判定する（S３２）。レベル１訂正に対して「Enabled」が設定されている場合（S３２、Yes）、第１処理部１３は、レベル１訂正を実行する（S３３）。続いて、第１処理部１３は、レベル１訂正が失敗したか否かを判定する（S３４）。訂正が失敗するとは、１以上のエラービットが訂正されずに残ることである。
【００５３】
レベル１訂正に対して「Enabled」が設定されていない場合（S３２、No）、または、レベル１訂正が失敗した場合（S３４、Yes）、第１処理部１３は、第１設定情報１０２を参照することによって、レベル２訂正に対して「Enabled」が設定されているか否かを判定する（S３５）。レベル２訂正に対して「Enabled」が設定されている場合（S３５、Yes）、第１処理部１３は、レベル２訂正を実行する（S３６）。第１処理部１３は、レベル２訂正が失敗したか否かを判定する（S３７）。
【００５４】
レベル２訂正に対して「Enabled」が設定されていない場合（S３５、No）、または、レベル２訂正が失敗した場合（S３７、Yes）、第１処理部１３は、第１設定情報１０２を参照することによって、レベル３訂正に対して「Enabled」が設定されているか否かを判定する（S３８）。レベル３訂正に対して「Enabled」が設定されている場合（S３８、Yes）、第１処理部１３は、レベル３訂正を実行する（S３９）。第１処理部１３は、レベル３訂正が失敗したか否かを判定する（S４０）。
【００５５】
レベル３訂正に対して「Enabled」が設定されていない場合（S３８、No）、または、レベル３訂正が失敗した場合（S４０、Yes）、第１処理部１３は、第１設定情報１０２を参照することによって、レベル４訂正に対して「Enabled」が設定されているか否かを判定する（S４１）。レベル４訂正に対して「Enabled」が設定されている場合（S４１、Yes）、第１処理部１３は、レベル４訂正を実行する（S４２）。第１処理部１３は、レベル４訂正が失敗したか否かを判定する（S４３）。
【００５６】
レベル４訂正に対して「Enabled」が設定されていない場合（S４１、No）、または、レベル４訂正が失敗した場合（S４３、Yes）、第１処理部１３は、メモリシステム１におけるエラー訂正に失敗した旨の報告である「Unrecovered  Error」報告をエラー訂正に失敗したデータとともにI/F部１２に送信し、I/F部１２はそれらをホスト２に送信する（S４４）。なお、エラー訂正に失敗したデータとは、エラー訂正が実行される前の、エラーを含むデータをいう。
【００５７】
レベル１訂正が成功した場合（S３４、No）、レベル２訂正が成功した場合（S３７、No）、レベル３訂正が成功した場合（S４０、No）、または、レベル４訂正が成功した場合（S４３、No）、I/F部１２は、訂正されたデータをホスト２に送信する（S４５）。S４４の処理の後、または、S４５の処理の後、メモリシステム１はリード要求に応じた動作を終了する。
【００５８】
ホスト２においては、リード要求の送信後、I/F部２２は、データの受信を待ち受ける。I/F部２２は、データとともに「Unrecovered  Error」報告を受信した場合（S１２、Yes）、データおよび「Unrecovered  Error」報告を第２処理部２４に送信する。第２処理部２４は、第２設定情報２０２を参照することによって、レベル１訂正に対して「Enabled」が設定されているか否かを判定する（S１３）。レベル１訂正に対して「Enabled」が設定されている場合（S１３、Yes）、第２処理部２４は、メモリシステム１においてエラー訂正に失敗したデータに対し、レベル１訂正を実行する（S１４）。第２処理部２４は、レベル１訂正が失敗したか否かを判定する（S１５）。
【００５９】
レベル１訂正に対して「Enabled」が設定されていない場合（S１３、No）、または、レベル１訂正が失敗した場合（S１５、Yes）、第２処理部２４は、第２設定情報２０２を参照することによって、レベル２訂正に対して「Enabled」が設定されているか否かを判定する（S１６）。レベル２訂正に対して「Enabled」が設定されている場合（S１６、Yes）、第２処理部２４は、レベル２訂正を実行する（S１７）。第２処理部２４は、レベル２訂正が失敗したか否かを判定する（S１８）。
【００６０】
レベル２訂正に対して「Enabled」が設定されていない場合（S１６、No）、または、レベル２訂正が失敗した場合（S１８、Yes）、第２処理部２４は、第２設定情報２０２を参照することによって、レベル３訂正に対して「Enabled」が設定されているか否かを判定する（S１９）。レベル３訂正に対して「Enabled」が設定されている場合（S１９、Yes）、第２処理部２４は、レベル３訂正を実行する（S２０）。第２処理部２４は、レベル３訂正が失敗したか否かを判定する（S２１）。
【００６１】
「Unrecovered  Error」報告を伴わないでデータを受信した場合（S１２、No）、レベル１訂正が成功した場合（S１５、No）、レベル２訂正が成功した場合（S１８、No）、または、レベル３訂正が成功した場合（S２１、No）、ホスト２の動作が終了する。
【００６２】
レベル３訂正に対して「Enabled」が設定されていない場合（S１９、No）、または、レベル３訂正が失敗した場合（S２１、Yes）、ホスト２はエラー処理を実行し（S２２）、ホスト２の動作が終了する。なお、エラー処理の処理内容は任意の処理が適用可能である。例えば、ホスト２は、エラー処理として、ユーザにリードに失敗した旨の表示を行う。
【００６３】
このように、第１の実施形態によれば、第１処理部１３は、複数のモードのエラー訂正を実行できる。そして、第１処理部１３は、複数のモードのエラー訂正のうち、外部の設定部２３からの要求に応じたモードのエラー訂正を実行する。これにより、ホスト２がエラー訂正機能を備える場合に、情報処理システム１０００全体でエラー訂正を効率的に実行することが可能となる。
【００６４】
また、I/F部１２は、エラー訂正機能の一覧である第１リスト１０１を外部からの要求に応じて外部に送信することができる。これにより、設定部２３は、メモリシステム１にて実行可能なエラー訂正を確認した後に、メモリシステム１において実行可能なエラー訂正の実行の許可または不許可を設定することが可能である。
【００６５】
また、第１リスト１０１には、訂正能力および訂正時間がモード毎に記述されている。これにより、設定部２３は、第１リスト１０１に記載の訂正能力および訂正時間を許可または不許可の設定の判断に供することが可能となる。なお、第１リスト１０１には、訂正能力および訂正時間のうちの何れかのみ記述されていてもよい。また、第１リスト１０１に記載される情報は、許可または不許可の設定の判断に使用可能な情報であれば、訂正能力および訂正時間以外の任意の情報が記述されてもよい。
【００６６】
また、設定部２３は、S４の処理において、モード毎に許可および不許可の何れかが設定された第１設定情報１０２を送信する、として説明した。設定部２３は、許可されるモードまたは不許可のモードの何れかのみ指定してもよい。許可されるモードのみが指定される場合、第１処理部１３は、許可されたモードのエラー訂正のみを実行し、許可されていないモードのエラー訂正を実行しない。また、不許可のモードのみが指定される場合、第１処理部１３は、不許可として指定されていないモードのエラー訂正を実行し、不許可として指定されたモードのエラー訂正を実行しない。
【００６７】
また、第１処理部１３は、メモリシステム１におけるエラー訂正に失敗した場合にエラー訂正に失敗したデータをホスト２に送信する、として説明した。第１処理部１３はエラー訂正に失敗したデータを送信せず、第２処理部２４はエラー訂正に失敗したデータを使用せずにRAIDによって当該データを回復してもよい。RAIDによるデータの回復は、エラー訂正の概念に含まれる。
【００６８】
また、第１処理部１３は、第１リスト１０１に記載された何れのモードでもエラー訂正が実行可能なようにデータにエラー訂正符号を付す、として説明した。第１処理部１３は、データに付すエラー訂正符号を設定によって選択可能に構成されてもよい。例えば、第１処理部１３は、第１設定情報１０２に「Enabled」が設定されたモードのエラー訂正を実行するために必要なエラー訂正符号のみを、ライトするデータに付す。例えば、レベル３訂正のためのエラー訂正符号およびレベル４訂正のためのエラー訂正符号を使用しないことが設定されている場合、第１処理部１３は、第２フレームの構築を行わない。また、例えば、第１処理部１３は、エラー訂正符号を付すか否かが設定される情報を、第１設定情報１０２とは別の情報として管理してもよい。実行が許可されたモードのエラー訂正符号が付されていない場合、第１処理部１３は、そのモードのエラー訂正の実行は禁止されているものとして振る舞う。エラー訂正符号の付加を行わないことを指定できることによって、冗長データの書き込み量を低減することが可能となる。
【００６９】
また、ホスト２においては、設定部２３は、メモリシステム１が実行可能な複数のエラー訂正のモードのうちの実行が許可されるエラー訂正のモードをメモリシステム１に設定する。具体的には、設定部２３は、メモリシステム１が実行可能な複数のエラー訂正のモードのうちの実行が許可されるエラー訂正のモードを選択し、選択したモードをメモリシステム１に設定する。第２処理部２４は、メモリシステム１が実行が許可されたエラー訂正に失敗した場合、ホスト２におけるエラー訂正を実行する。
【００７０】
なお、第２処理部２４が実行が許可された全てのモードのエラー訂正に失敗した場合、ホスト２はエラー処理を実行する、として説明した。第２処理部２４が実行が許可された全てのモードのエラー訂正に失敗し、かつ、「Disabled」が設定されたモードが第１設定情報１０２に記録されている場合、訂正制御部２１は、メモリシステム１に、「Disabled」が設定されたモードのエラー訂正を実行させてもよい。
【００７１】
（第２の実施形態）
ホスト２と各メモリシステム１との間の通信インタフェース規格としてSCSI規格が採用される場合、I/F部２２は、S１の処理においてINQUIRYコマンドを使用できる。S１の処理においてINQUIRYコマンドが使用される場合には、I/F部１２は、S2の処理において、INQUIRYコマンドに対する応答として第１リスト１０１を送信する。
【００７２】
図１４は、SCSI規格が採用される場合の応答の一例を示す図である。応答３００は、エラー訂正のモード毎に７バイトの領域３０１を備える。各領域３０１には、モードの識別情報（Level  No.）、訂正能力、および訂正時間が記述される。なお、応答３００の先頭の４バイトの領域はヘッダ領域として使用される。
【００７３】
また、SCSI規格が採用される場合には、ホスト２がデバイスに対してパラメータを設定する手段として、ModePageを利用した設定が可能である。ModePageは、SCSI規格に準拠するデバイスが提供する、入力方式のうちの１つである。ここでは一例として、ModePageは記憶部１５に確保されることとする。I/F部２２は、S３の処理において、ModeSelectコマンドを使用することによって、ModePageにパラメータを設定する。
【００７４】
図１５は、SCSI規格が採用される場合の第１設定情報１０２のデータ構成例を示す図である。ModePageは、複数のページ領域を有し、各ページ領域はページ番号によって夫々識別される。ModePageは、SCSI規格に特有のパラメータが設定されるページ領域のほかに、ベンダーユニークなページ領域を含む。例えば、ベンダーユニークなページ領域に、第１設定情報１０２を記録することが可能である。図１５の例では、ベンダーユニークなページ領域であるページ番号が「３５」のページ領域が第１設定情報１０２として使用されている。図１５の第１設定情報１０２においては、先頭から２バイト目に、「D_Level1」、「D_Level2」、「D_Level3」、および「D_Level4」の４つのビットが定義されている。ここで、「D_Levelx」は、レベルｘ訂正の実行が許可されているか否かを示すフラグ情報である。「D_Level1」、「D_Level2」、「D_Level3」、および「D_Level4」に、許可または不許可を示す値が設定される。
【００７５】
また、SCSI規格が採用される場合には、第１処理部１３は、CHECK  CONDITIONステータスを送信することができる。CHECK  CONDITIONステータスは、コマンドの実行が失敗した旨の報告である。例えば、第１処理部１３は、CHECK  CONDITIONステータスを含むレスポンスフレームを送信し、CHECK  CONDITIONステータスを含むレスポンスフレームに後続して、Unrecovered  Errorを示すセンスデータを送信する。ホスト２は、CHECK  CONDITIONステータスを含むレスポンスフレームおよびセンスデータの受信によってメモリシステム１でのエラー訂正の実行に失敗した旨を認識する。
【００７６】
このように、SCSI規格が適用される場合には、ホスト２は、各メモリシステム１に対し、ModeSelectコマンドによって第１設定情報１０２を設定することが可能である。また、ホスト２は、INQUIRYコマンドによって第１リスト１０１を取得することが可能である。また、ホスト２は、CHECK  CONDITIONステータスの受信によってメモリシステム１でのエラー訂正の実行に失敗した旨を認識することが可能である。なお、第１処理部１３はセンスデータを用いることによってUnrecovered  Errorを通知するとして説明したが、Unrecovered  Errorの通知手法はこれに限定されない。例えば、第１処理部１３は、CHECK  CONDITIONステータスを含むレスポンスフレームに、Unrecovered  Errorである旨を示す情報を付加してもよい。
【００７７】
（第３の実施形態）
第３の実施形態においては、ホスト２（正確には設定部２３）がメモリシステム１に実行が許可されるエラー訂正のモードを設定する手法として、設定部２３は、条件をメモリシステム１に送信する。メモリシステム１においては、第１処理部１３は、自身が実行可能なエラー訂正のモードのうち、ホスト２から受信した条件、に合致するモードを選択する。条件は、例えば時間の制限値（制限時間）を含む。設定部２３は、メモリシステム１に対し、例えば、リード要求のレイテンシが制限時間を越えないようにモードを選択する。
【００７８】
図１６は、第３の実施形態の設定処理を説明するフローチャートである。ホスト２において、設定部２３は、メモリシステム１に対して制限時間の指定を送信する（S５１）。例えばホスト２と各メモリシステム１との間の通信インタフェース規格としてSCSI規格が採用される場合には、制限時間の指定は、OCTタイマの使用によって実現できる。
【００７９】
メモリシステム１においては、I/F部１２は、S５１の指定を受信すると、受信した指定を第１処理部１３に送信する。第１処理部１３は、４つのモードからモードを選択する（S５２）。モードの選択方法は任意の方法が採用可能である。例えば、第１処理部１３は、レベル１訂正からレベル順に訂正時間を順次合算し、合算値が制限時間を越えない範囲でモードの数が最大になるように、モードの選択を実行する。S５２の処理の後、第１処理部１３は、選択したモードに「Enabled」を設定し、選択されていないモードに「Disabled」を設定した第１設定情報１０２を記憶部１５に格納する（S５３）。
【００８０】
このように、第３の実施形態によれば、設定部２３は、条件を指定することができる。第１処理部１３は、指定された条件を満たすように、複数のモードからモードを選択する。そして、第１処理部１３は、選択されたモードのエラー訂正を実行し、選択されていないモードのエラー訂正を実行しない。これにより、設定部２３が直接にモードを指定する必要なく情報処理システム１０００全体でエラー訂正を効率的に実行することが可能となる。
【００８１】
また、設定部２３は、一例として、時間の制限値を指定することができる。これにより、ホスト２は、リード要求のレイテンシの制御が可能となる。
【００８２】
（第４の実施形態）
図１７は、メモリシステム１の第４の実施形態の実装例を示す図である。メモリシステム１は、例えば第４の実施形態の情報処理システムとしてのサーバシステム２０００に実装される。サーバシステム２０００は、ディスクアレイ３０００とラックマウントサーバ４０００とが接続線５０００によって接続されて構成される。接続線５０００の通信インタフェース規格としては任意の規格が採用可能である。ラックマウントサーバ４０００は、サーバラックに１以上のホスト４がマウントされて構成される。複数のホスト４は、接続線５０００を介してディスクアレイ３０００にアクセスすることができる。複数のホスト４は、ディスクアレイ３０００に対してリード要求を含むアクセス要求を送信することができる。
【００８３】
また、ディスクアレイ３０００は、サーバラックに、RAIDコントローラ３と、１以上のメモリシステム１と、がマウントされて構成される。各メモリシステム１は、各ホスト４からのリード要求を実行することができる。
【００８４】
RAIDコントローラ３は、サーバラックに具備される複数のメモリシステム１を用いてRAID（Redundant  Arrays  of  Inexpensive  Disks）を構築する。RAIDコントローラ３は、各ホスト４からのリード要求（第１リード要求）を受信する。RAIDコントローラ３は、サーバラックにマウントされた複数のメモリシステム１のうちの、受信したリード要求によって要求されたデータを記憶する１以上のメモリシステム１を特定する。RAIDコントローラ３は、特定した１以上のメモリシステム１にリード要求（第２リード要求）を送信する。また、RAIDコントローラ３は、各メモリシステム１に対し、第１〜第３の実施形態の訂正制御部２１と同様の動作を実行する。図１８は、RAIDコントローラ３の構成例を示す図である。第１の実施形態と同じ構成要素には同一の符号および名称を付して、重複する説明を省略する。
【００８５】
RAIDコントローラ３は、I/F部３１、設定部２３、第２処理部２４、および記憶部２５を備える。記憶部２５は、第２リスト２０１、第２設定情報２０２、および第１リスト１０１が格納される。I/F部３１は、サーバラックのバックプレーンを介して各メモリシステム１に接続されており、各メモリシステム１とRAIDコントローラ３との間の通信の制御を実行する。
【００８６】
RAIDコントローラ３は、第１リード要求によって要求されたデータのエラー訂正に第２リード要求のあて先のメモリシステム１またはRAIDコントローラ３において成功した場合には、エラー訂正後のデータを第１リード要求の送信元のホスト４に送信する。
【００８７】
なお、RAIDコントローラ３はサーバラックにマウントされるユニットであるとして説明したが、RAIDコントローラ３はサーバラックのバックプレーンにチップの形態で実装されてもよい。
【００８８】
（第５の実施形態）
図１９は、メモリシステム１の第５の実施形態の実装例を示す図である。第４の実施形態に含まれる構成要素と同じ構成要素には、第４の実施形態と同じ名称および符号を付す。第４の実施形態に含まれる構成要素と同じ構成要素の説明は省略する。
【００８９】
第５の実施形態の情報処理システム、としてのサーバシステム２０００は、ディスクアレイ３０００とラックマウントサーバ４０００とを備える。ディスクアレイ３０００とラックマウントサーバ４０００とは、接続線５０００によって接続されている。ラックマウントサーバ４０００は、サーバラックに１以上のホスト４がマウントされて構成される。各ホスト４は、ラックマウントサーバ４０００に対してリード要求を含むアクセス要求を送信することができる。
【００９０】
ディスクアレイ３０００は、サーバラックに、ストレージコントローラ５と、１以上のメモリシステム１と、がマウントされて構成される。ストレージコントローラ５は、各ホスト４からの第１リード要求を受信する。ストレージコントローラ５は、サーバラックにマウントされた複数のメモリシステム１のうちの、受信した第１リード要求によって要求されたデータを記憶する１以上のメモリシステム１を特定する。ストレージコントローラ５は、特定した１以上のメモリシステム１に第２リード要求を送信する。各メモリシステム１は、受信した第２リード要求に応じて、第１〜第３の実施形態のメモリシステム１と同じ動作を実行する。
【００９１】
ストレージコントローラ５は、ディスクアレイ３０００に具備される複数のメモリシステム１を統括する。具体的には、ストレージコントローラ５は、ディスクアレイ３０００に具備される複数のメモリシステム１を用いて、RAIDの構築、ストレージの仮想化、およびストレージのミラーリングを行う。また、ストレージコントローラ５は、各メモリシステム１に対し、第１〜第３の実施形態の訂正制御部２１と同様の動作を実行する。ストレージコントローラ５は、第１リード要求によって要求されたデータのエラー訂正にストレージコントローラ５または第２リード要求のあて先のメモリシステム１において成功した場合には、エラー訂正後のデータを第１リード要求の送信元のホスト４に送信する。
【００９２】
図２０は、ストレージコントローラ５の構成例を示す図である。第１の実施形態と同じ構成要素には同一の符号および名称を付して、重複する説明を省略する。
【００９３】
ストレージコントローラ５は、I/F部３１、設定部２３、ストレージ管理部５２、および記憶部２５を備える。記憶部２５は、第２リスト２０１、第２設定情報２０２、および第１リスト１０１が格納される。I/F部３１は、サーバラックのバックプレーンを介して各メモリシステム１に接続されており、各メモリシステム１とストレージコントローラ５との間の通信の制御を実行する。ストレージ管理部５２は、RAIDの構築と、ストレージの仮想化と、ストレージのミラーリングと、を行う。
【００９４】
ストレージの仮想化とは、複数のメモリシステム１を１つの仮想的なストレージデバイス（ストレージプール）として統合する技術である。ストレージ管理部５２は、サーバラックに具備される複数のメモリシステム１のうちの２以上のメモリシステム１を用いて１つのストレージプールを構成する。ストレージ管理部５２は、ストレージプールから仮想的なボリュームを生成し、生成した仮想的なボリュームを各ホスト４に外部記憶装置として提供する。なお、ボリュームとは、各ホスト４が位置の指定に使用することができる連続するアドレスが割り当てられた一塊の記憶領域をいう。ストレージ管理部５２は、１以上のメモリシステム１が提供する物理的な記憶領域を、アドレスの変換を使用することによって、１つの仮想的なボリューム（以降、仮想ボリューム）として管理する。仮想ボリュームに対し、メモリシステム１が提供する物理的な記憶領域を、実ボリュームと表記する。RAIDによって構築された記憶領域は、実ボリュームの概念に含まれることとする。即ち、ストレージ管理部５２は、RAIDによって構築された記憶領域を用いて仮想ボリュームを構築することが可能である。ストレージ管理部５２は、仮想ボリュームと実ボリュームとの両方を各ホスト４に提供してもよい。ストレージ管理部５２は、１つのストレージプールから、予め設定された数の仮想ボリュームを生成する。
【００９５】
ストレージのミラーリングとは、２以上のボリュームでグループを構成し、グループに属する一のボリューム（正ボリューム）に格納されるデータの複製をグループに属する他のボリューム（副ボリューム）にも格納する技術である。副ボリュームの数は任意である。ストレージ管理部５２は、グループの構築、および、データの複製の副ボリュームへの書き込みを実行する。ミラーリングのグループを構成するボリュームは、実ボリュームであってもよいし仮想ボリュームであってもよい。ここでは、ストレージ管理部５２は、１つのディスクアレイ３０００内の複数のボリュームによってミラーリングのグループを構成する、として説明する。ディスクアレイ３０００がネットワークを介して他の記憶装置に接続されている場合には、ストレージ管理部５２は、前記他の記憶装置を副ボリュームとして使用してもよい。
【００９６】
ストレージ管理部５２は、第２処理部２４を備える。第２処理部２４は、複数のモードのデータ回復を実行することができる。各モードのデータ回復は、夫々エラー訂正の概念に含まれる。第２処理部２４によるデータ回復のモードを説明する。
【００９７】
（１）RAIDを利用したデータ回復
第２処理部２４は、RAIDを利用してデータの回復を行う。
【００９８】
（２）副ボリュームを利用したデータ回復
第２処理部２４は、正ボリュームに対する第２リード要求に応じて「Unrecovered  Error」報告を受信した場合、前記第２リード要求の対象のデータの複製を副ボリュームから取得する。副ボリュームの数が２以上である場合において、一の副ボリュームに対するリード要求に応じて「Unrecovered  Error」報告を受信した場合、第２処理部２４は、他の副ボリュームから複製を取得してもよい。なお、正ボリュームに格納されているデータの復旧のタイミングは任意である。第２処理部２４は、第１リード要求の送信元のホスト４に対するデータの送信を行った後に正ボリュームにおけるデータの復旧を行ってもよいし、第１リード要求の送信元のホスト４に対するデータの送信を行う前に正ボリュームにおけるデータの復旧を行ってもよい。
【００９９】
上記した第２処理部２４が実行可能なデータ回復のモードは、第２リスト２０１に予め記述されている。第２リスト２０１には、モード毎に訂正能力と訂正時間とが記述される。第２処理部２４が実行を許可されたモードは、第２設定情報２０２に記述される。第２設定情報２０２は、設定部２３によって生成される。第２処理部２４は、「Unrecovered  Error」報告に応じて、第２設定情報２０２に記述されたモードのデータ回復を実行する。
【０１００】
なお、ホスト４はサーバラックにマウントされていなくてもよい。また、ディスクアレイ３０００からストレージコントローラ５を省略し、ストレージコントローラ５の機能をホスト４に実装することが可能である。ストレージコントローラ５の機能は、ホスト４に、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせによって実装されうる。
【０１０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０２】
１  メモリシステム、２  ホスト、３  RAIDコントローラ、４  ホスト、５  ストレージコントローラ、１０  メモリコントローラ、１１  NANDメモリ、１２  I/F部、１３  第１処理部、１５  記憶部、２１  訂正制御部、２２  I/F部、２３  設定部、２４  第２処理部、２５  記憶部、３１  I/F部、５２  ストレージ管理部、１０１  第１リスト、１０２  第１設定情報、２０１  第２リスト、２０２  第２設定情報、１０００  情報処理システム、２０００  サーバシステム、３０００  ディスクアレイ、４０００  ラックマウントサーバ、５０００  接続線。
【図１】
0006486723.tif 000002
【図２】
0006486723.tif 000003
【図３】
0006486723.tif 000004
【図４】
0006486723.tif 000005
【図５】
0006486723.tif 000006
【図６】
0006486723.tif 000007
【図７】
0006486723.tif 000008
【図８】
0006486723.tif 000009
【図９】
0006486723.tif 000010
【図１０】
0006486723.tif 000011
【図１１】
0006486723.tif 000012
【図１２】
0006486723.tif 000013
【図１３】
0006486723.tif 000014
【図１４】
0006486723.tif 000015
【図１５】
0006486723.tif 000016
【図１６】
0006486723.tif 000017
【図１７】
0006486723.tif 000018
【図１８】
0006486723.tif 000019
【図１９】
0006486723.tif 000020
【図２０】
0006486723.tif 000021