(57)【特許請求の範囲】
【請求項１】
第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する記憶制御装置。
【請求項２】
前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してライトアクセス指令が生じた場合にはライトアクセスが禁止である旨を前記ライトアクセス指令の指令元に通知を行う
請求項１記載の記憶制御装置。
【請求項３】
前記第２のエラー検出訂正コードが有効であるか否かを指示する第２のエラー検出訂正コード有効フラグを前記第２のデータ単位毎に管理する第２のエラー検出訂正コード有効フラグ管理部をさらに具備し、
前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した前記第２のデータ単位に対してリードアクセス指令が生じた場合には前記第２のエラー検出訂正コード有効フラグに基づいて前記リードアクセス指令の指令元に通知を行う
請求項１記載の記憶制御装置。
【請求項４】
前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対して前記第２のエラー検出訂正コードの削除指令が生じた場合には前記第２のエラー検出訂正コードの削除が禁止である旨を前記削除指令の指令元に通知を行う
請求項１記載の記憶制御装置。
【請求項５】
前記第２のデータ単位の少なくとも一部に対応する一時代替領域が存在するか否かを指示する一時代替領域有効フラグを前記第２のデータ単位毎に管理する一時代替領域有効フラグ管理部をさらに具備し、
前記制御部は、前記一時代替領域が存在する領域に対してライトアクセス指令が生じた場合には前記一時代替領域に対してライトアクセスを行い、前記一時代替領域が存在する領域に対してリードアクセス指令が生じた場合には前記一時代替領域に対してリードクセスを行う
請求項１記載の記憶制御装置。
【請求項６】
前記制御部は、前記一時代替領域の解消指令が生じた場合には前記一時代替領域の記憶内容を前記メモリに反映して前記第１および第２のエラー検出訂正コードを生成し直す請求項５記載の記憶制御装置。
【請求項７】
前記制御部は、システムのシャットダウンの際に、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を前記第２のエラー検出訂正コードを利用して修復する
請求項１記載の記憶制御装置。
【請求項８】
前記第２のデータ単位は、複数の前記第１のデータ単位の各々に対応する付加情報をさらに備える
請求項１記載の記憶制御装置。
【請求項９】
第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、
前記メモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する記憶装置。
【請求項１０】
第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、
前記メモリに対するアクセス指令を発行するホストコンピュータと、
前記メモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴う前記アクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する情報処理システム。
【請求項１１】
第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理手順と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御手順と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリのエラー検出訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
不揮発性メモリおよびそれを制御するメモリコントローラからなる記憶装置において、メモリコントローラはデータの保持特性を改善するために入力されたデータに対して書込み単位毎にエラー検出訂正コード（ＥＣＣ）を生成する。メモリ上にはデータとともにＥＣＣパリティが関連付けて記憶される。このデータの読出し時にはデータとともにＥＣＣパリティが読み出され、ビット誤りの検出処理およびビット誤り訂正処理を行ったデータが出力される。不揮発性メモリのセルのデータ保持特性は、書換え回数の増大とともに劣化するという特性があり、より訂正能力の高いＥＣＣを使用することは信頼性の強化につながる。一方、訂正能力が高いと同じ書込み単位を保護するためのパリティサイズが大きくなるため、ＥＣＣパリティを保存するための容量を拡張する必要が生じ、コストが高くなってしまう。
【０００３】
そこで、従来は、所定の書込み単位を保護するための第１ＥＣＣに加えて、複数の書込み単位を保護するためのより訂正能力の高い第２ＥＣＣを用意することによりデータの信頼性を改善することが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０８１７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、第１ＥＣＣに加えて第２ＥＣＣを用意することにより、第１のＥＣＣでは訂正不可能なエラーが発生した場合に、第２ＥＣＣを使用してエラー訂正を行うことができるため、データの信頼性を向上することができる。しかしながら、第２のＥＣＣが対象とするデータのサイズは、第１ＥＣＣが対象とするデータよりも大きいため、新たなデータのライトによって第２ＥＣＣの無効化または再生成が必要になるケースが多くなる。その際、第１ＥＣＣでは訂正不可能なデータを含んでいるとすると、第２ＥＣＣをそのまま無効にしたのでは、データを訂正する機会が失われてしまう。一方、そのたびに第２ＥＣＣによりデータを訂正してから第２のＥＣＣを生成するという処理を行っていたのでは、そのために比較的長い時間を要することから、メモリのアクセス性能に影響を与えるおそれがある。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、第１ＥＣＣでは訂正不可能なデータが発生した際に、第２ＥＣＣによる訂正を任意のタイミングで行うことを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、第１のデータ単位に対応する第１のエラー検出訂正コードおよび上記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリにおいて上記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを上記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位を修復する場合には上記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部とを具備する記憶制御装置およびその記憶制御方法である。これにより、第１のエラー検出訂正コードでは訂正できないエラーを、第２のエラー検出訂正コードにより訂正する際のタイミングを柔軟にするという作用をもたらす。なお、上記第２のデータ単位は、複数の上記第１のデータ単位の各々に対応する付加情報をさらに備えてもよい。
【０００８】
また、この第１の側面において、上記制御部は、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位に対してライトアクセス指令が生じた場合にはライトアクセスが禁止である旨を上記ライトアクセス指令の指令元に通知を行うようにしてもよい。これにより、第２のエラー検出訂正コードによる訂正を促すという作用をもたらす。
【０００９】
また、この第１の側面において、上記第２のエラー検出訂正コードが有効であるか否かを指示する第２のエラー検出訂正コード有効フラグを上記第２のデータ単位毎に管理する第２のエラー検出訂正コード有効フラグ管理部をさらに具備し、上記制御部は、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した上記第２のデータ単位に対してリードアクセス指令が生じた場合には上記第２のエラー検出訂正コード有効フラグに基づいて上記リードアクセス指令の指令元に通知を行うようにしてもよい。これにより、第２のエラー検出訂正コードによる訂正が可能か否かを指令元に知らせるという作用をもたらす。
【００１０】
また、この第１の側面において、上記制御部は、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位に対して上記第２のエラー検出訂正コードの削除指令が生じた場合には上記第２のエラー検出訂正コードの削除が禁止である旨を上記削除指令の指令元に通知を行うようにしてもよい。これにより、訂正の余地を担保するという作用をもたらす。
【００１１】
また、この第１の側面において、上記第２のデータ単位の少なくとも一部に対応する一時代替領域が存在するか否かを指示する一時代替領域有効フラグを上記第２のデータ単位毎に管理する一時代替領域有効フラグ管理部をさらに具備し、上記制御部は、上記一時代替領域が存在する領域に対してライトアクセス指令が生じた場合には上記一時代替領域に対してライトアクセスを行い、上記一時代替領域が存在する領域に対してリードアクセス指令が生じた場合には上記一時代替領域に対してリードアクセスを行うようにしてもよい。これにより、第２のエラー検出訂正コードの利用を維持するという作用をもたらす。
【００１２】
また、この第１の側面において、上記制御部は、上記一時代替領域の解消指令が生じた場合には上記一時代替領域の記憶内容を上記メモリに反映して上記第１および第２のエラー検出訂正コードを生成し直すようにしてもよい。これにより、一時代替領域を解消して、第１および第２のエラー検出訂正コードを生成し直すという作用をもたらす。
【００１３】
また、この第１の側面において、上記制御部は、システムのシャットダウンの際に、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位を上記第２のエラー検出訂正コードを利用して修復するようにしてもよい。これにより、次のシステム起動までの時間が空いた場合に備えてデータの保護を高めるという作用をもたらす。
【００１４】
また、本技術の第２の側面は、第１のデータ単位に対応する第１のエラー検出訂正コードおよび上記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、上記メモリにおいて上記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを上記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位を修復する場合には上記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部とを具備する記憶装置である。これにより、メモリにおける第１のエラー検出訂正コードでは訂正できないエラーを、第２のエラー検出訂正コードにより訂正する際のタイミングを柔軟にするという作用をもたらす。
【００１５】
また、本技術の第３の側面は、第１のデータ単位に対応する第１のエラー検出訂正コードおよび上記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、上記メモリに対するアクセス指令を発行するホストコンピュータと、上記メモリにおいて上記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを上記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位に対してデータ変更を伴う上記アクセス指令が生じた場合には当該アクセスを禁止する制御部と、上記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している上記第２のデータ単位を修復する場合には上記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部とを具備する情報処理システムである。これにより、メモリにおいて生じた第１のエラー検出訂正コードでは訂正できないエラーを、第２のエラー検出訂正コードにより訂正する際に、そのタイミングをホストコンピュータから柔軟に指令するという作用をもたらす。
【発明の効果】
【００１６】
本技術によれば、第１ＥＣＣでは訂正不可能なデータが発生した際に、第２ＥＣＣによる訂正を任意のタイミングで行うことができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１７】
【図１】本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるメモリセルアレイ３２０の記憶形式の一例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリセルアレイ３２０の第２ＥＣＣ領域３２３の記憶形式の一例を示す図である。
【図４】本技術の実施の形態におけるメモリセルアレイ３２０の記憶形式の他の例を示す図である。
【図５】本技術の第１の実施の形態における第２ＥＣＣ設定処理の処理手順例を示す流れ図である。
【図６】本技術の第１の実施の形態におけるリード処理の処理手順例を示す流れ図である。
【図７】本技術の第１の実施の形態におけるライト処理の処理手順例を示す流れ図である。
【図８】本技術の第１の実施の形態における第２ＥＣＣ削除処理の処理手順例を示す流れ図である。
【図９】本技術の第１の実施の形態における起動処理の処理手順例を示す流れ図である。
【図１０】本技術の第１の実施の形態におけるシャットダウン処理の処理手順例を示す流れ図である。
【図１１】本技術の第２の実施の形態における情報処理システムの一構成例を示す図である。
【図１２】本技術の第２の実施の形態におけるメモリセルアレイ３２０の第２ＥＣＣ領域３２３の記憶形式の一例を示す図である。
【図１３】本技術の第２の実施の形態における第２ＥＣＣ設定処理の処理手順例を示す流れ図である。
【図１４】本技術の第２の実施の形態における訂正不可エラー修復処理の処理手順例を示す流れ図である。
【図１５】本技術の第２の実施の形態におけるデータ一時代替解消処理の処理手順例を示す流れ図である。
【図１６】本技術の第２の実施の形態におけるリード処理の処理手順例を示す流れ図である。
【図１７】本技術の第２の実施の形態におけるライト処理の処理手順例を示す流れ図である。
【図１８】本技術の第２の実施の形態における第２ＥＣＣ削除処理の処理手順例を示す流れ図である。
【図１９】本技術の第２の実施の形態におけるシャットダウン処理の処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１８】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（訂正不可エラー発生フラグによるアクセス制御）
２．第２の実施の形態（一時代替領域を組み合わせたアクセス制御）
【００１９】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とから構成される。メモリコントローラ２００およびメモリ３００はストレージシステムを構成する。
【００２０】
ホストコンピュータ１００は、メモリ３００に対してデータのリード処理およびライト処理や、エラー訂正に関する処理等を指令するコマンドを発行するものである。このホストコンピュータ１００は、ホストコンピュータ１００としての処理を実行するプロセッサ１１０と、メモリコントローラ２００との間のやりとりを行うためのコントローラインターフェース１０１とを備える。
【００２１】
メモリコントローラ２００は、ホストコンピュータ１００からのコマンドに従って、メモリ３００に対するリクエスト制御を行うものである。このメモリコントローラ２００は、制御部２１０と、ＥＣＣ処理部２２０と、データバッファ２３０と、ホストインターフェース２０１と、メモリインターフェース２０２とを備える。
【００２２】
制御部２１０は、メモリコントローラ２００全体の制御を行うものである。この制御部２１０は、ホストコンピュータ１００から指令されたコマンドを解釈して、メモリ３００に対して必要なリクエストを要求する。この例では、ホストコンピュータ１００からのコマンドとして、第２ＥＣＣ設定コマンド、リードコマンド、ライトコマンド、第２ＥＣＣ削除コマンド、起動コマンド、シャットダウンコマンド等が想定される。
【００２３】
ＥＣＣ処理部２２０は、メモリ３００に記録されるデータのエラー訂正コード（ＥＣＣ：Error Correcting Code）の生成、および、メモリ３００から読み出したデータのエラー検出および訂正処理を実行するものである。後述するように、この実施の形態においては、エラー訂正コードとして第１ＥＣＣおよび第２ＥＣＣの２種類を想定する。なお、ＥＣＣ処理部２２０は、特許請求の範囲に記載の訂正部の一例である。
【００２４】
データバッファ２３０は、ホストコンピュータ１００から受け取ったライトデータや、メモリ３００から受け取ったリードデータなどを転送する際に一時的に保持するためのバッファである。
【００２５】
ホストインターフェース２０１は、ホストコンピュータ１００との間のやりとりを行うためのインターフェースである。メモリインターフェース２０２は、メモリ３００との間のやりとりを行うためのインターフェースである。
【００２６】
メモリ３００は、制御部３１０と、メモリセルアレイ３２０と、コントローラインターフェース３０１とを備えている。制御部３１０は、メモリ３００全体の制御を行うものであり、メモリコントローラ２００から受け取った要求に従って、メモリセルアレイ３２０に対するアクセスを制御する。コントローラインターフェース３０１は、メモリコントローラ２００との間のやりとりを行うためのインターフェースである。
【００２７】
メモリセルアレイ３２０は、複数のメモリセルからなるメモリセルアレイであり、ビット毎に２値の何れかの値を記憶するメモリセルが２次元状（マトリクス状）に多数配列されている。このメモリセルアレイ３２０は不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）を想定する。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【００２８】
メモリセルアレイ３２０の各メモリセルは、データ領域３２１、第１ＥＣＣ領域３２２および第２ＥＣＣ領域３２３を含む。データ領域３２１は、通常のデータを記憶するための領域である。データ領域３２１は、後述のように第１のデータ単位に区分けされる。
【００２９】
第１ＥＣＣ領域３２２は、第１のデータ単位に対応する第１ＥＣＣを記憶するための領域である。第２ＥＣＣ領域３２３は、第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２ＥＣＣを記憶するための領域である。
【００３０】
メモリセルアレイ３２０へのデータ書込み時には、メモリコントローラ２００はデータに第１ＥＣＣパリティを加えたデータをメモリ３００に送信する。データおよび第１ＥＣＣパリティは、メモリ３００に同時に書き込まれる。読出し時にはデータおよび第１ＥＣＣパリティが同時に読み出され、メモリコントローラ２００は第１ＥＣＣによるエラー検出訂正処理を行った後、そのデータをデータバッファ２３０からホストコンピュータ１００に対して送信する。メモリコントローラ２００は、第２ＥＣＣを設定する指令をホストコンピュータ１００から受けた場合に、対象となる複数の第１のデータ単位を含むデータ領域を読み出し、その際、ＥＣＣ処理部２２０によって第１ＥＣＣによるエラー検出訂正処理を行う。そして、エラーが全て訂正されたデータを順次ＥＣＣ処理部２２０に入力して、複数の第１のデータ単位のデータが入力された結果として生成された第２ＥＣＣパリティを第２ＥＣＣ領域３２３の一部に書き込む。その際、第２ＥＣＣパリティ以外のフラグ情報を保持するために、第２ＥＣＣパリティを記憶する第２ＥＣＣ領域３２３に対しても第１ＥＣＣで保護することが望ましい。
【００３１】
［メモリセルアレイの記憶形式］
図２は、本技術の実施の形態におけるメモリセルアレイ３２０の記憶形式の一例を示す図である。ここでは、ｎページからなる第２ＥＣＣブロックを示している。ここにいうページは物理的な書込み単位を表す。この第２ＥＣＣブロックは、第１ＥＣＣの対象となる第１のデータ単位のデータをデータ領域に記憶し、第１ＥＣＣのパリティを冗長領域に記憶する。各ページにおいて、データと第１ＥＣＣパリティとが１対１に対応して関連付けて記憶される。また、第（ｎ×ｍ＋１）ページは、第２ＥＣＣ保存用のページとしてｍ個分の第２ＥＣＣブロックの第２ＥＣＣパリティとそれらを保護する第１ＥＣＣパリティとが関連付けて記憶される。
【００３２】
第２ＥＣＣブロック＃１を構成する第１ページから第ｎページまでのデータ＃１乃至ｎについての、第２のデータ単位に対応するエラー検出訂正コードを第２ＥＣＣエントリ＃１と称する（図３参照）。第２ＥＣＣエントリ＃２以降についても同様である。第２のデータ単位は第１のデータ単位を複数毎にまとめたものであるため、第２のデータ単位の方が第１のデータ単位よりも大きくなる。なお、この例では、第１のデータ単位のみを複数毎にまとめたものを第２のデータ単位としているが、第１のデータ単位に対応する第１ＥＣＣパリティ等の付加情報をそれぞれ含めて複数毎にまとめたものを第２のデータ単位としてもよい。
【００３３】
ここで、具体的な実施例として５１２バイトを１セクタとし、第１ＥＣＣが１セクタサイズのデータを保護するのに対して、第２ＥＣＣが連続する８セクタサイズ（４Ｋバイト）のデータを保護することを想定する。第１ＥＣＣが２ビット訂正可能である場合のパリティサイズは２６ビットであり、訂正前のＢＥＲ（ビットエラーレート）が１０-6に対して訂正後のＢＥＲは約１０-11となる。一方、第２ＥＣＣが５ビット訂正可能である場合のパリティサイズは８０ビットであり、訂正前のＢＥＲが１０-6に対して訂正後のＢＥＲは約１０-15となり、上の第１ＥＣＣよりも改善されている。なお、この第２ＥＣＣと同等のＢＥＲを第１ＥＣＣのみによって得るにはセクタ単位で６ビット訂正が必要となり、その場合の第１ＥＣＣのパリティサイズは７８ビットである。すなわち、８セクタ分では６２４ビットとなることから、上の第２ＥＣＣのパリティサイズの７倍以上の容量が必要となる。したがって、第２ＥＣＣを設けることにより、結果的にパリティサイズを小さくすることができることがわかる。
【００３４】
図３は、本技術の第１の実施の形態におけるメモリセルアレイ３２０の第２ＥＣＣ領域３２３の記憶形式の一例を示す図である。上述のように、第（ｎ×ｍ＋１）ページでは第２ＥＣＣとその第１ＥＣＣパリティとが関連付けて記憶される。ここでは、ｍ個の第２ＥＣＣエントリ６１０に対して１つの第１ＥＣＣパリティ６２０が関連付けて記憶されるものとしている。書込み単位のデータ領域のサイズに合わせて複数の第２ＥＣＣパリティと付加情報を複数個記憶することにより、第２ＥＣＣパリティの記憶に必要な領域を効率化することができる。
【００３５】
第２ＥＣＣエントリ６１０は、それぞれ、第２ＥＣＣパリティ６１１と、対象物理アドレス６１２と、第２ＥＣＣ有効フラグ６１３と、訂正不可エラー発生フラグ６１４とを付加情報として記憶する。図２のように第２ＥＣＣブロック＃１乃至＃ｍが常に物理的に連続に配置される場合には、対象物理アドレス６１２の情報は先頭となる書込み単位の物理アドレスを示す。
【００３６】
第２ＥＣＣパリティ６１１は、第１のデータ単位を複数毎にまとめた第２のデータ単位に対するエラー検出訂正コードのパリティである。
【００３７】
対象物理アドレス６１２は、第２ＥＣＣパリティ６１１の保護対象となるデータ領域のメモリ３００における物理アドレスを示すものである。この対象物理アドレス６１２は、連続する書込み単位が保護対象である場合にはその先頭となる物理アドレスを有し、不連続の書込みを許容する場合にはｍ個の物理アドレスを有する。
【００３８】
第２ＥＣＣ有効フラグ６１３は、第２ＥＣＣパリティ６１１が有効であるか否かを示すフラグである。ここでは、第２ＥＣＣパリティ６１１が有効であれば「ＯＮ」、第２ＥＣＣパリティ６１１が有効でなければ「ＯＦＦ」であるものとする。
【００３９】
訂正不可エラー発生フラグ６１４は、第２ＥＣＣパリティ６１１の保護対象となるデータ領域内で第１ＥＣＣでは訂正できないエラーが発生しているか否かを示すフラグである。ここでは、第１ＥＣＣでは訂正できないエラーが発生していれば「ＯＮ」、未発生であれば「ＯＦＦ」であるものとする。
【００４０】
なお、ここでは付加情報をメモリセルアレイ３２０に記憶する例を示したが、この付加情報はメモリコントローラ２００において記憶して、管理するようにしてもよい。
【００４１】
図４は、本技術の実施の形態におけるメモリセルアレイ３２０の記憶形式の他の例を示す図である。メモリ３００は、書込み単位としてはデータ領域のみを記憶し、第１ＥＣＣパリティをデータ領域とは独立した領域に書込む場合を示したものである。
【００４２】
この例において、データ領域と冗長領域とが異なるバンク領域であった場合には、上述の例と同様にデータ書込み時に並行して第１ＥＣＣパリティの書込みを開始することができる。また、第２ＥＣＣパリティの記憶態様として、データ領域に第２ＥＣＣパリティとその付加情報とを記憶し、これらのデータも他のデータと同様に第１ＥＣＣによって保護することが望ましい。
【００４３】
［メモリコントローラの動作］
図５は、本技術の第１の実施の形態における第２ＥＣＣ設定処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００から第２ＥＣＣ設定コマンドの指令を受けると、以下の第２ＥＣＣ設定処理を行う。この第２ＥＣＣ設定処理では、対象となる領域の第２ＥＣＣが有効でなければ第２ＥＣＣを有効にする。一方、第２ＥＣＣが有効であって、第１ＥＣＣによる訂正不可エラーが発生していない場合には、何も動作しない。第１ＥＣＣによる訂正不可エラーが発生している場合には、第２ＥＣＣによってエラー訂正を行う。
【００４４】
そのために、まず第２ＥＣＣ有効フラグ６１３がチェックされ、無効であればステップＳ９１２以降の第２ＥＣＣを有効にする処理を行い（ステップＳ９１１：ＯＦＦ）、有効であればステップＳ９２１以降の処理を行う（ステップＳ９１１：ＯＮ）。
【００４５】
第２ＥＣＣを有効にする処理では、第１のデータ単位が順次読み出される（ステップＳ９１２）。読み出された第１のデータ単位についてエラーが検出され、そのエラーが第１ＥＣＣによって訂正不可能な場合には（ステップＳ９１３）、第２ＥＣＣを生成することなく第２ＥＣＣ設定処理をエラー終了する。一方、第１のデータ単位についてエラーが検出されず、または、検出されたエラーが第１ＥＣＣによって訂正可能な場合には、第２ＥＣＣが生成される（ステップＳ９１４）。対象となる領域の第１ＥＣＣが全て読み出されると（ステップＳ９１５：Ｎｏ）、生成された第２ＥＣＣが第２ＥＣＣパリティ６１１に書き込まれる（ステップＳ９１６）。そして、第２ＥＣＣ有効フラグ６１３が「有効」を示す「ＯＮ」に設定される（ステップＳ９１７）。また、訂正不可エラー発生フラグ６１４は「未発生」を示す「ＯＦＦ」にクリアされる（ステップＳ９１８）。
【００４６】
第２ＥＣＣ有効フラグ６１３が有効である旨を示している場合（ステップＳ９１１：ＯＮ）、訂正不可エラー発生フラグ６１４がチェックされ、第１ＥＣＣによる訂正不可エラーが発生していなければそのまま処理を終了する（ステップＳ９２１：ＯＦＦ）。第１ＥＣＣによる訂正不可エラーが発生している場合には（ステップＳ９２１：ＯＮ）、以下の処理が行われる。すなわち、第１のデータ単位が順次読み出され（ステップＳ９２２）、対象となる領域の第１ＥＣＣが全て読み出されるまで（ステップＳ９２４：Ｎｏ）、第２ＥＣＣによるエラー検出が行われる（ステップＳ９２３）。そして、エラーを発生しているデータについて第２ＥＣＣによる訂正が試みられる（ステップＳ９２５）。このとき、第２ＥＣＣによる訂正が不可能であれば（ステップＳ９２６：Ｎｏ）、メモリ３００に反映することなく第２ＥＣＣ設定処理をエラー終了する。一方、第２ＥＣＣによる訂正が可能であれば（ステップＳ９２６：Ｙｅｓ）、訂正された第１のデータ単位がメモリ３００に上書きされる（ステップＳ９２７）。対象となる領域について訂正が完了すると（ステップＳ９２８）、第１ＥＣＣによる訂正不可エラーを有する状態は修正されるため、訂正不可エラー発生フラグ６１４は「未発生」を示す「ＯＦＦ」にクリアされる（ステップＳ９２９）。
【００４７】
図６は、本技術の第１の実施の形態におけるリード処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からリードコマンドの指令を受けると、以下のリード処理を行う。このリード処理では、制御部２１０の指示により、指定されたサイズのデータが第１のデータ単位を最小単位として読み出される（ステップＳ９４１）。読み出された第１のデータ単位について第１ＥＣＣによるエラーの検出訂正処理が行われる（ステップＳ９４２）。エラーが検出されず、または、検出されたエラーが訂正された場合には（ステップＳ９４３：Ｎｏ）、そのエラーを含まないデータが出力される（ステップＳ９４４）。これらの処理が指定されたサイズを満たすまで繰り返される（ステップＳ９４５）。
【００４８】
ただし、第１ＥＣＣにより訂正できないエラーが発生した場合には（ステップＳ９４３：Ｙｅｓ）、リード処理は中止され、訂正不可エラー発生フラグ６１４は「発生」を示す「ＯＮ」に設定される（ステップＳ９４６）。さらに、第２ＥＣＣ有効フラグ６１３が有効を示さない場合には（ステップＳ９４７：ＯＦＦ）、訂正の余地がない旨をホストコンピュータ１００に通知する（ステップＳ９４９）。第２ＥＣＣ有効フラグ６１３が有効を示す場合には（ステップＳ９４７：ＯＮ）、第１ＥＣＣによる訂正は不可能なものの、第２ＥＣＣを利用した訂正の余地がある旨をホストコンピュータ１００に通知する（ステップＳ９４８）。これにより、ホストコンピュータ１００からの第２ＥＣＣによる修復指令を促すことができる。これに対し、ホストコンピュータ１００は、上述の第２ＥＣＣ設定コマンドを指令することにより、訂正不可エラーが発生している状態の解消を試みる。
【００４９】
図７は、本技術の第１の実施の形態におけるライト処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からライトコマンドの指令を受けると、以下のライト処理を行う。このライト処理では、まず、第２ＥＣＣ有効フラグ６１３がチェックされる。第２ＥＣＣ有効フラグ６１３が「ＯＦＦ」に設定されている場合には（ステップＳ９６１：ＯＦＦ）、そのまま通常の書込みを開始する。第２ＥＣＣ有効フラグ６１３が「ＯＮ」に設定されている場合には（ステップＳ９６１：ＯＮ）、次に訂正不可エラー発生フラグ６１４がチェックされる（ステップＳ９６２）。そして、第１ＥＣＣにより訂正できないエラーが発生している場合には（ステップＳ９６２：ＯＮ）、書込み禁止である旨をホストコンピュータ１００に通知する（ステップＳ９７２）。これにより、ホストコンピュータ１００からの第２ＥＣＣによる修復指令を促すことができる。これに対し、ホストコンピュータ１００は、上述の第２ＥＣＣ設定コマンドを指令することにより、訂正不可エラーが発生している状態の解消を試みる。
【００５０】
第１ＥＣＣにより訂正できないエラーが発生していない場合には（ステップＳ９６２：ＯＦＦ）、第２ＥＣＣ有効フラグ６１３が「ＯＦＦ」にクリアされる（ステップＳ９６３）。
【００５１】
ホストコンピュータ１００からライトデータを第１のデータ単位毎に受け取ると（ステップＳ９６４）、ＥＣＣ処理部２２０によって第１ＥＣＣが生成されて（ステップＳ９６５）、制御部２１０の指示によりメモリ３００に書き込まれる（ステップＳ９６６）。
【００５２】
ステップＳ９６４からＳ９６６の処理は、指定されたサイズのライトデータについて、第１のデータ単位を最小単位として繰り返される（ステップＳ９６８）。ただし、第２のデータ単位の区切りを挟むときには、ステップＳ９６１に戻って処理を繰り返す（ステップＳ９６７）。
【００５３】
ステップＳ９６３において第２ＥＣＣ有効フラグ６１３が「ＯＮ」から「ＯＦＦ」にクリアされた場合には（ステップＳ９６９：Ｙｅｓ）、第２ＥＣＣ有効フラグ６１３が無効を示すようになった旨をホストコンピュータ１００に通知する（ステップＳ９７１）。これにより、ホストコンピュータ１００からの第２ＥＣＣの新たな設定指令を促すことができる。これに対し、ホストコンピュータ１００は、上述の第２ＥＣＣ設定コマンドを指令することにより、第２ＥＣＣを新たに設定することを試みる。
【００５４】
図８は、本技術の第１の実施の形態における第２ＥＣＣ削除処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００から第２ＥＣＣ削除コマンドの指令を受けると、以下の第２ＥＣＣ削除処理を行う。この第２ＥＣＣ削除処理は、第２ＥＣＣが必要なくなった場合や、ライト処理の前にいったん第２ＥＣＣをクリアしたい場合などに指令される。より具体的には、長期に亘って書換えが生じないコールドデータから、頻繁に書換えが発生するホットデータへの切替え時に第２ＥＣＣ削除処理が行われることが想定される。
【００５５】
この第２ＥＣＣ削除処理では、まず、第２ＥＣＣ有効フラグ６１３がチェックされ、「ＯＦＦ」に設定されている場合には（ステップＳ９８１：ＯＦＦ）、そのまま完了する。第２ＥＣＣ有効フラグ６１３が「ＯＮ」に設定されている場合には（ステップＳ９８１：ＯＮ）、次に訂正不可エラー発生フラグ６１４がチェックされる。そして、第１ＥＣＣにより訂正できないエラーが発生している場合には（ステップＳ９８２：ＯＮ）、第２ＥＣＣが削除できない旨をホストコンピュータ１００に通知する（ステップＳ９８７）。これにより、ホストコンピュータ１００からの第２ＥＣＣによる修復指令を促すことができる。これに対し、ホストコンピュータ１００は、上述の第２ＥＣＣ設定コマンドを指令することにより、訂正不可エラーが発生している状態の解消を試みる。
【００５６】
第１ＥＣＣにより訂正できないエラーが発生していない場合には（ステップＳ９８２：ＯＦＦ）、第２ＥＣＣ有効フラグ６１３を「ＯＦＦ」にクリアして、第２ＥＣＣが無効な状態に変更する（ステップＳ９８５）。そして、第２ＥＣＣが正常に削除された旨をホストコンピュータ１００に通知する（ステップＳ９８６）。
【００５７】
図９は、本技術の第１の実施の形態における起動処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ストレージシステムの起動が指令された際、以下の起動処理を行う。この起動処理では、全てのストレージ領域を対象に前回のシャットダウンまでに発生していた全ての読出し不可能エラーを起動時に第２ＥＣＣによって訂正する。もし、第１ＥＣＣによる訂正不可エラーが発生していないことを確認した場合には第２ＥＣＣを削除し、そうではない場合にはそのエラーを訂正することにより、ストレージシステムとしての運用準備作業を行う。これらの処理は、メモリコントローラ２００が起動した直後に、または、メモリコントローラ２００がホストから起動が指令された際に、実行される。
【００５８】
まず、最初の第２のデータ単位について訂正不可エラー発生フラグ６１４がチェックされる（ステップＳ７１１）。訂正不可エラー発生フラグ６１４が「ＯＦＦ」を示す場合には（ステップＳ７１１：ＯＦＦ）、第２ＥＣＣ有効フラグ６１３がチェックされ（ステップＳ７１２）、対応する第２ＥＣＣパリティ６１１が有効ではない第２のデータ単位についてはスキップされる（ステップＳ７１２：ＯＦＦ）。
【００５９】
第２ＥＣＣ有効フラグ６１３が「ＯＮ」を示す場合には（ステップＳ７１２：ＯＮ）、その第２データ単位について第１のデータ単位が順次読み出され（ステップＳ７１３）、第１ＥＣＣによる訂正不能が確認される（ステップＳ７１４）。対象となる第２データ単位の読出しと確認が終了するまで、次の第１データ単位についての処理が繰り返される（ステップＳ７１５）。対象となる第２データ単位について第１データ単位の読出しが完了すると、対象となる第２ＥＣＣの削除処理が行われる（ステップＳ７１６）。この第２ＥＣＣ削除処理は、図８により説明したものと同様である。
【００６０】
訂正不可エラー発生フラグ６１４が「ＯＮ」を示す場合（ステップＳ７１１：ＯＮ）、または、第１ＥＣＣでは訂正できないエラーが発生した場合（ステップＳ７１４：Ｙｅｓ）、第２ＥＣＣの設定処理が行われる（ステップＳ７１７）。この第２ＥＣＣ設定処理は、図５により説明したものと同様である。そして、第２ＥＣＣ設定処理におけるビットエラー訂正処理に成功した場合には（ステップＳ７１９：Ｙｅｓ）、次の第２のデータ単位の処理に進む。第２ＥＣＣ設定処理におけるビットエラー訂正処理に失敗（エラー終了）した場合には（ステップＳ７１９：Ｎｏ）、起動処理の失敗をホストコンピュータ１００に通知する（ステップＳ７２３）。
【００６１】
全ての第２のデータ単位について処理が完了した場合には（ステップＳ７２１：Ｎｏ）、起動処理の成功をホストコンピュータ１００に通知する（ステップＳ７２２）。
【００６２】
図１０は、本技術の第１の実施の形態におけるシャットダウン処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からストレージシステムのシャットダウンが指令された際、以下のシャットダウン処理を行う。このシャットダウン処理では、メモリ３００の状態を調べ、第２ＥＣＣにより訂正が可能な第２のデータ単位については第２ＥＣＣの設定処理を行うことにより訂正し、シャットダウンの準備作業を行う。いったんシャットダウンされた後は、次に起動されて書換えが発生するまでに時間が空いてしまうことが予想されるため、第２ＥＣＣによる保護を行うものである。
【００６３】
まず、最初の第２のデータ単位を対象として、訂正不可エラー発生フラグ６１４がチェックされ、第１ＥＣＣでは訂正できないエラーが発生していない場合には（ステップＳ７３１：ＯＦＦ）、第２ＥＣＣ有効フラグ６１３がチェックされる（ステップＳ７３１）。
【００６４】
第２ＥＣＣが有効な第２のデータ単位については（ステップＳ７３２：ＯＮ）、既に第２ＥＣＣが有効であり、訂正不可能データも発生していないことから、次の第２データ単位の処理へ移行する（ステップＳ７３８：Ｙｅｓ）。
【００６５】
第１ＥＣＣでは訂正できないエラーが発生している場合（ステップＳ７３１：ＯＮ）、または、そのエラーが発生していなくても第２ＥＣＣが無効な第２のデータ単位である場合には（ステップＳ７３２：ＯＦＦ）、第２ＥＣＣ設定処理が行われる（ステップＳ７４１）。この第２ＥＣＣ設定処理は、図５により説明したものと同様である。第２ＥＣＣの設定に成功した場合には次の第２のデータ単位の処理に進み（ステップＳ７４２：Ｙｅｓ）、第２ＥＣＣの設定に失敗した場合にはシャットダウン失敗をホストコンピュータ１００に通知する（ステップＳ７４３）。これらステップＳ７４１乃至Ｓ７４３の処理は、以下において共通する処理である。
【００６６】
これまでの処理は、全ての第２のデータ単位について順次行われる。そして、全ての第２のデータ単位について処理が完了すると（ステップＳ７３８：Ｎｏ）、シャットダウンの成功をホストコンピュータ１００に通知する（ステップＳ７３９）。
【００６７】
このように、本技術の第１の実施の形態によれば、第１ＥＣＣによる訂正不可エラーの発生を訂正不可エラー発生フラグ６１４として記憶しておくことにより、第２ＥＣＣによる訂正処理を任意のタイミングで行うことを可能とする。
【００６８】
＜２．第２の実施の形態＞
［情報処理システムの構成］
図１１は、本技術の第２の実施の形態における情報処理システムの一構成例を示す図である。この第２の実施の形態の情報処理システムは、データ領域３２１に一時代替領域３２４を設けた点で第１の実施の形態と異なっている。他の点においては同様であるため、詳細な説明は省略する。
【００６９】
この一時代替領域３２４は、第２ＥＣＣにより保護される領域について新たな書込みが生じた場合に、それまでの第２ＥＣＣを引き続き利用できるように、新たな書込みの内容を一時的に記憶するための領域である。
【００７０】
［メモリセルアレイの記憶形式］
図１２は、本技術の第２の実施の形態におけるメモリセルアレイ３２０の第２ＥＣＣ領域３２３の記憶形式の一例を示す図である。この第２の実施の形態の第２ＥＣＣエントリ６１０は、一時代替領域有効フラグ群６１５をさらに備える点で第１の実施の形態と異なっている。他の点においては同様であるため、詳細な説明は省略する。
【００７１】
この一時代替領域有効フラグ群６１５は、各ページ＃１乃至＃（ｎ−１）に対応する一時代替領域がそれぞれ有効に存在するか否かを示すフラグ群である。ここでは、対応する一時代替領域が有効であれば「ＯＮ」、有効でなければ（存在しなければ）「ＯＦＦ」であるものとする。
【００７２】
なお、ここでは一時代替領域有効フラグ群６１５を含む付加情報をメモリセルアレイ３２０に記憶する例を示したが、この付加情報はメモリコントローラ２００において記憶して、管理するようにしてもよい。
【００７３】
［メモリコントローラの動作］
図１３は、本技術の第２の実施の形態における第２ＥＣＣ設定処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００から第２ＥＣＣ設定コマンドの指令を受けると、以下の第２ＥＣＣ設定処理を行う。この第２の実施の形態における第２ＥＣＣ設定処理は、第２ＥＣＣ有効フラグ６１３が有効な場合（ステップＳ８１１：ＯＦＦ）の処理内容は第１の実施の形態と同様である（ステップＳ８１１乃至Ｓ８１７）。また、第２ＥＣＣが無効な場合については（ステップＳ８１１：ＯＮ）、第１ＥＣＣによる訂正不可エラーの修復処理（ステップＳ８２０）については第１の実施の形態と同様であるが、データ一時代替解消処理（ステップＳ８３０）を伴う点において異なっている。
【００７４】
図１４は、本技術の第２の実施の形態における訂正不可エラー修復処理（ステップＳ８２０）の処理手順例を示す流れ図である。この訂正不可エラー修復処理は、第１の実施の形態におけるステップＳ９２１乃至Ｓ９２８と基本的に同様である。
【００７５】
まず、訂正不可エラー発生フラグ６１４がチェックされ、第１ＥＣＣによる訂正不可エラーが発生していなければそのまま処理を終了する（ステップＳ８２１：ＯＦＦ）。第１ＥＣＣによる訂正不可エラーが発生している場合には（ステップＳ８２１：ＯＮ）、以下の処理が行われる。すなわち、第１のデータ単位が順次読み出され（ステップＳ８２２）、対象となる領域の第１ＥＣＣが全て読み出されるまで（ステップＳ８２５：Ｎｏ）、エラー検出が行われる（ステップＳ８２３、Ｓ８２４）。ここで、第１ＥＣＣにより訂正できないエラーが検出された場合には（ステップＳ８２３：訂正不可）、そのまま処理を終了する。一方、第１ＥＣＣにより訂正可能なエラーが検出されて訂正が行われた場合、または、エラーが検出されず訂正不要な場合には（ステップＳ８２３：訂正可／不要）、第２ＥＣＣによるエラー検出が行われる（ステップＳ８２４）。そして、エラーを発生しているデータについて第２ＥＣＣによる訂正が行われ（ステップＳ８２６）、訂正された第１のデータ単位がメモリ３００に上書きされる（ステップＳ８２７）。対象となる領域について訂正が完了すると（ステップＳ８２８）、第１ＥＣＣによる訂正不可エラーを有する状態は修正されるため、訂正不可エラー発生フラグ６１４は「未発生」を示す「ＯＦＦ」にクリアされる（ステップＳ８２９）。
【００７６】
図１５は、本技術の第２の実施の形態におけるデータ一時代替解消処理（ステップＳ８３０）の処理手順例を示す流れ図である。このデータ一時代替解消処理では、各ページのデータ領域のデータを第１のデータ単位として、一時代替領域の存在を順次調べて解消していく。
【００７７】
一時代替領域有効フラグ群６１５における対応するページのフラグが有効を示していなければ（ステップＳ８３１：ＯＦＦ）、対応する一時代替領域が存在しないため、データ領域から第１のデータ単位の読出しが行われる（ステップＳ８９１）。第１ＥＣＣにより訂正できないエラーが検出された場合には（ステップＳ８９３：訂正不可）、訂正できない旨をホストコンピュータ１００に報告して（ステップＳ８９９）、そのまま処理を終了する。一方、第１ＥＣＣにより訂正可能なエラーが検出されて訂正が行われた場合、または、エラーが検出されず訂正不要な場合には（ステップＳ８９３：訂正可／不要）、第２ＥＣＣ生成の処理（ステップＳ８３６）に進む。
【００７８】
一方、一時代替領域有効フラグ群６１５における対応するページのフラグが有効を示していれば（ステップＳ８３１：ＯＮ）、一時代替領域から第１のデータ単位の読出しが行われる（ステップＳ８３２）。ここで、第１ＥＣＣにより訂正できないエラーが検出された場合には（ステップＳ８３３：訂正不可）、そのまま処理を終了する。一方、第１ＥＣＣにより訂正可能なエラーが検出されて訂正が行われた場合、または、エラーが検出されず訂正不要な場合には（ステップＳ８３３：訂正可／不要）、読み出された第１のデータ単位は、データ領域に書き込まれる（ステップＳ８３４）。そして、一時代替領域の第１のデータ単位は解放され、一時代替領域有効フラグ群６１５における対応するページのフラグは「ＯＦＦ」にクリアされる（ステップＳ８３５）。
【００７９】
何れの場合であっても、得られた第１のデータ単位に基づいて第２ＥＣＣが生成される（ステップＳ８３６）。これらの処理は対象となる第２のデータ単位に含まれる第１のデータ単位について繰り返される（ステップＳ８３７）。このようにして生成された第２ＥＣＣが第２ＥＣＣ領域３２３に書き込まれる（ステップＳ８３８）。これにより、当該第２のデータ単位に対応する一時代替領域は解消される。
【００８０】
図１６は、本技術の第２の実施の形態におけるリード処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からリードコマンドの指令を受けると、以下のリード処理を行う。この第２の実施の形態におけるリード処理は、一時代替領域有効フラグ群６１５における対応するページのフラグが有効を示していなければ（ステップＳ８５１：ＯＦＦ）、第１の実施の形態と同様の処理となる（ステップＳ８４１乃至Ｓ８４９）。
【００８１】
一方、一時代替領域有効フラグ群６１５における対応するページのフラグが有効を示していれば（ステップＳ８５１：ＯＮ）、その一時代替領域の第１のデータ単位が読み出され（ステップＳ８５２）、第１ＥＣＣによるエラー検出訂正処理が行われる（ステップＳ８５３）。そして、第１ＥＣＣでは訂正できないエラーが発生した場合には（ステップＳ８５４：Ｙｅｓ）、訂正の余地がない旨をホストコンピュータ１００に通知する（ステップＳ８４９）。
【００８２】
エラーが検出されず、または、検出されたエラーが訂正された場合には（ステップＳ８５４：Ｎｏ）、そのエラーを含まないデータが出力される（ステップＳ８４４）。これらの処理が指定されたサイズを満たすまで繰り返される（ステップＳ８４５）。
【００８３】
図１７は、本技術の第２の実施の形態におけるライト処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からライトコマンドの指令を受けると、以下のライト処理を行う。この第２の実施の形態におけるライト処理は、第２ＥＣＣ有効フラグ６１３が有効を示していなければ（ステップＳ８６１：ＯＦＦ）、第１の実施の形態と同様の処理となる（ステップＳ８６３乃至Ｓ８６７）。
【００８４】
一方、第２ＥＣＣ有効フラグ６１３が有効を示している場合には（ステップＳ８６１：ＯＮ）、一時代替領域有効フラグ群６１５における対応するページのフラグがチェックされ、有効でなければ（ステップＳ８７１：ＯＦＦ）、有効に設定される（ステップＳ８７２）。これにより一時代替領域の使用準備が整ったことになる。そして、ホストコンピュータ１００からライトデータを第１のデータ単位毎に受け取ると（ステップＳ８７３）、ＥＣＣ処理部２２０によって第１ＥＣＣが生成されて（ステップＳ８７４）、一時代替領域に書き込まれる（ステップＳ８７５）。
【００８５】
ステップＳ８７１からＳ８７５の処理は、指定されたサイズのライトデータについて、第１のデータ単位を最小単位として繰り返される（ステップＳ８７７）。ただし、第２のデータ単位の区切りを挟むときには、ステップＳ８６１に戻って処理を繰り返す（ステップＳ８７６）。
【００８６】
ステップＳ８７２において一時代替領域が新たに確保された場合には（ステップＳ８７８：Ｙｅｓ）、一時代替領域が新たに発生した旨をホストコンピュータ１００に通知する（ステップＳ８７９）。
【００８７】
図１８は、本技術の第２の実施の形態における第２ＥＣＣ削除処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００から第２ＥＣＣ削除コマンドの指令を受けると、以下の第２ＥＣＣ削除処理を行う。この第２の実施の形態における第２ＥＣＣ削除処理は、一時代替領域有効フラグ群６１５をチェックする点以外は、第１の実施の形態と同様の処理となる（ステップＳ８８１、Ｓ８８４乃至Ｓ８８６）。
【００８８】
この第２ＥＣＣ削除処理では、まず、第２ＥＣＣ有効フラグ６１３がチェックされ（ステップＳ８８０）、ＯＦＦの場合には（ステップＳ８８１：ＯＦＦ）そのまま処理を完了する。第２ＥＣＣ有効フラグ６１３がＯＮの場合には（ステップ８８１：ＯＮ）、次に訂正不可エラー発生フラグ６１４がチェックされる（ステップＳ８８２）。そして、第１ＥＣＣにより訂正できないエラーが発生している場合には（ステップＳ８８２：ＯＮ）、第２ＥＣＣが削除できない旨をホストコンピュータ１００に通知する（ステップＳ８８７）。また、一時代替領域有効フラグ群６１５における対応するページのフラグが順次チェックされ（ステップＳ８８４）、有効な一時代替領域が存在する場合にも（ステップＳ８８３：ＯＮ）、第２ＥＣＣが削除できない旨をホストコンピュータ１００に通知する（ステップＳ８８７）。これにより、ホストコンピュータ１００からの第２ＥＣＣによる修復指令を促すことができる。これに対し、ホストコンピュータ１００は、上述の第２ＥＣＣ設定コマンドを指令することにより、訂正不可エラーが発生している状態の解消を試みる。
【００８９】
それ以外の場合には、第２ＥＣＣ有効フラグ６１３を「ＯＦＦ」にクリアして、第２ＥＣＣが無効な状態に変更する（ステップＳ８８５）。そして、第２ＥＣＣが正常に削除された旨をホストコンピュータ１００に通知する（ステップＳ８８６）。
【００９０】
図１９は、本技術の第２の実施の形態におけるシャットダウン処理の処理手順例を示す流れ図である。メモリコントローラ２００は、ストレージシステムのシャットダウンが指令された際、以下のシャットダウン処理を行う。この第２の実施の形態におけるシャットダウン処理は、一時代替領域有効フラグ群６１５をチェックする点以外は、第１の実施の形態と同様の処理となる（ステップＳ７７１、Ｓ７７２、Ｓ７７４乃至Ｓ７８３）。なお、ステップＳ７７６において、第１ＥＣＣにより訂正されるビット数がある閾値以上であった場合には、次の起動までに訂正不可能になる可能性が高いと判断して、シャットダウン前にデータを修正するために第２ＥＣＣ設定処理を行う。
【００９１】
対象となる第２のデータ単位におけるチェックの一環として、一時代替領域有効フラグ群６１５における対応するページのフラグが順次チェックされ（ステップＳ７７３）、有効な一時代替領域が存在する場合には第２ＥＣＣ設定処理が行われる（ステップＳ７８１）。この第２ＥＣＣ設定処理は、図１３により説明したものと同様である。
【００９２】
なお、第２の実施の形態における起動処理については特に図示していないが、基本的には第１の実施の形態と同様である。
【００９３】
このように、本技術の第２の実施の形態によれば、一時代替領域を設けることにより、第２ＥＣＣにより保護される領域に新たな書込みが生じた際に、それまでの第２ＥＣＣを引き続き利用できるようにすることができる。
【００９４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９６】
なお、本技術は以下のような構成もとることができる。
（１）第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する記憶制御装置。
（２）前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してライトアクセス指令が生じた場合にはライトアクセスが禁止である旨を前記ライトアクセス指令の指令元に通知を行う
前記（１）に記載の記憶制御装置。
（３）前記第２のエラー検出訂正コードが有効であるか否かを指示する第２のエラー検出訂正コード有効フラグを前記第２のデータ単位毎に管理する第２のエラー検出訂正コード有効フラグ管理部をさらに具備し、
前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した前記第２のデータ単位に対してリードアクセス指令が生じた場合には前記第２のエラー検出訂正コード有効フラグに基づいて前記リードアクセス指令の指令元に通知を行う
前記（１）または（２）に記載の記憶制御装置。
（４）前記制御部は、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対して前記第２のエラー検出訂正コードの削除指令が生じた場合には前記第２のエラー検出訂正コードの削除が禁止である旨を前記削除指令の指令元に通知を行う
前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記第２のデータ単位の少なくとも一部に対応する一時代替領域が存在するか否かを指示する一時代替領域有効フラグを前記第２のデータ単位毎に管理する一時代替領域有効フラグ管理部をさらに具備し、
前記制御部は、前記一時代替領域が存在する領域に対してライトアクセス指令が生じた場合には前記一時代替領域に対してライトアクセスを行い、前記一時代替領域が存在する領域に対してリードアクセス指令が生じた場合には前記一時代替領域に対してリードクセスを行う
前記（１）から（４）のいずれかに記載の記憶制御装置。
（６）前記制御部は、前記一時代替領域の解消指令が生じた場合には前記一時代替領域の記憶内容を前記メモリに反映して前記第１および第２のエラー検出訂正コードを生成し直す前記（５）に記載の記憶制御装置。
（７）前記制御部は、システムのシャットダウンの際に、前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を前記第２のエラー検出訂正コードを利用して修復する
前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記第２のデータ単位は、複数の前記第１のデータ単位の各々に対応する付加情報をさらに備える
前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、
前記メモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する記憶装置。
（１０）第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリと、
前記メモリに対するアクセス指令を発行するホストコンピュータと、
前記メモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴う前記アクセス指令が生じた場合には当該アクセスを禁止する制御部と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正部と
を具備する情報処理システム。
（１１）第１のデータ単位に対応する第１のエラー検出訂正コードおよび前記第１のデータ単位を複数毎にまとめた第２のデータ単位に対応する第２のエラー検出訂正コードを記憶するメモリにおいて前記第１のエラー検出訂正コードでは訂正できないエラーが発生したか否かを指示する訂正不可エラー発生フラグを前記第２のデータ単位毎に管理する訂正不可エラー発生フラグ管理手順と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位に対してデータ変更を伴うアクセス指令が生じた場合には当該アクセスを禁止する制御手順と、
前記第１のエラー検出訂正コードでは訂正できないエラーが発生した旨を指示している前記第２のデータ単位を修復する場合には前記第２のエラー検出訂正コードを利用して当該第２のデータ単位を訂正する訂正手順と
を具備する記憶制御方法。
【符号の説明】
【００９７】
１００  ホストコンピュータ
１０１  コントローラインターフェース
１１０  プロセッサ
２００  メモリコントローラ
２０１  ホストインターフェース
２０２  メモリインターフェース
２１０  制御部
２２０  ＥＣＣ処理部
２３０  データバッファ
３００  メモリ
３０１  コントローラインターフェース
３１０  制御部
３２０  メモリセルアレイ
３２１  データ領域
３２２  第１ＥＣＣ領域
３２３  第２ＥＣＣ領域
３２４  一時代替領域
【図１】
0006028709.tif 000002
【図２】
0006028709.tif 000003
【図３】
0006028709.tif 000004
【図４】
0006028709.tif 000005
【図５】
0006028709.tif 000006
【図６】
0006028709.tif 000007
【図７】
0006028709.tif 000008
【図８】
0006028709.tif 000009
【図９】
0006028709.tif 000010
【図１０】
0006028709.tif 000011
【図１１】
0006028709.tif 000012
【図１２】
0006028709.tif 000013
【図１３】
0006028709.tif 000014
【図１４】
0006028709.tif 000015
【図１５】
0006028709.tif 000016
【図１６】
0006028709.tif 000017
【図１７】
0006028709.tif 000018
【図１８】
0006028709.tif 000019
【図１９】
0006028709.tif 000020