(57)【要約】【課題】物理アドレス空間上での配置を意識することなくデータの保持特性を強化する。【解決手段】エラー訂正コード管理部は、データおよびその第１ＥＣＣを単位データとして複数の単位データを記憶部に記憶し、複数の単位データにおける所定の複数の単位データに対応してその第２ＥＣＣを記憶部に記憶する場合において、所定の複数の単位データと当該所定の複数の単位データに対応する第２ＥＣＣとの対応関係をエントリ毎に管理する。アドレス管理部は、論理アドレスとエラー訂正コード管理部におけるエントリとの対応関係を管理する。エラー訂正部は、リード対象の論理アドレスに対応するエラー訂正コード管理部におけるエントリをアドレス管理部から取得して当該エントリにおいて管理される所定の複数の単位データおよび第２ＥＣＣに基づいてエラー訂正を行う。【選択図】図１
2013114521.tif 000002
【特許請求の範囲】
【請求項１】
データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを前記記憶部に記憶する場合において、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
【請求項２】
前記所定の複数の単位データは前記記憶部において非連続な物理アドレスに記憶される請求項１記載の記憶制御装置。
【請求項３】
前記アドレス管理部は、それぞれの論理アドレスに対応する前記第２のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、
前記エラー訂正部は、前記エラー訂正コードフラグが前記第２のエラー訂正コードが記憶されている旨を示す場合のみ前記エラー訂正を行う
請求項１記載の記憶制御装置。
【請求項４】
前記エラー訂正コード管理部は、前記所定の複数の単位データの結合順序を規定し、
前記エラー訂正部は、前記結合順序に従って前記所定の複数の単位データを結合して前記エラー訂正を行う
請求項１記載の記憶制御装置。
【請求項５】
前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第２のエラー訂正コードの前記記憶部における物理アドレスを保持し、
前記エラー訂正部は、前記第２のエラー訂正コードの前記物理アドレスに従って前記記憶部から前記第２のエラー訂正コードを取得する
請求項１記載の記憶制御装置。
【請求項６】
前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第２のエラー訂正コードの前記記憶部における物理アドレス内オフセットをさらに保持し、
前記エラー訂正部は、前記第２のエラー訂正コードの前記物理アドレスおよび前記物理アドレス内オフセットに従って前記記憶部から前記第２のエラー訂正コードを取得する
請求項５記載の記憶制御装置。
【請求項７】
データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて前記第２のエラー訂正コードを生成するエラー訂正コード生成部と、
前記データ保持特性強化コマンドを受け取ると前記指定された論理アドレスの範囲に記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する請求項１記載の記憶制御装置。
【請求項８】
前記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
請求項７記載の記憶制御装置。
【請求項９】
前記エラー訂正コード管理部は、エントリ毎に前記第２のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数がゼロを示すエントリを対象とする
請求項７記載の記憶制御装置。
【請求項１０】
前記エラー訂正コード管理部は、エントリ毎に前記第２のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数が所定数に満たないエントリを対象とする
請求項７記載の記憶制御装置。
【請求項１１】
前記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて前記第２のエラー訂正コードを生成するエラー訂正コード生成部と、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する請求項１記載の記憶制御装置。
【請求項１２】
前記エントリ管理部は、前記最終アクセス時刻から所定期間経過するまでの間に前記第２のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
請求項１１記載の記憶制御装置。
【請求項１３】
データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
【請求項１４】
前記単位データ記憶部および前記エラー訂正コード記憶部は不揮発性メモリである請求項１３記載の記憶装置。
【請求項１５】
データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
【請求項１６】
データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部とを備える記憶装置における記憶制御方法であって、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得するエントリ取得手順と、
前記取得されたエントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
メモリを使用する際、メモリに記憶されたデータにおいてエラー（誤り）が生じていないかを検出し、訂正するために、エラー訂正コード（ＥＣＣ：Error Correcting Code）が付与されることがある。特に、ＮＡＮＤフラッシュメモリなどの不揮発性メモリにおいてはこのエラー訂正コードを用いることが一般的となっており、予め決められたデータ単位ごとにＥＣＣが付加されてデータが記録される。これにより、データの保持特性が強化される。例えば、データ領域におけるワード単位のデータに対して、ＥＣＣ領域にＥＣＣを記憶する不揮発性メモリシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０３９５８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、ＥＣＣは物理アドレスが連続したデータに対して生成される。しかし、ホストコンピュータが論理アドレスによって保持特性を強化しようとするデータを指定する場合、それに対応する物理アドレス空間上で連続した不揮発性メモリの領域に記録されているとは限らない。そのため、保持特性を強化しようとするデータを物理アドレス空間の連続した領域に対してコピーした上で、保持特性の強化コマンドを実行する必要が生じる。すなわち、コピーによるオーバーヘッドによりメモリシステムとしてのパフォーマンスは低下するおそれがある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、上記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを上記記憶部に記憶する場合において、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部とを具備する記憶制御装置またはその記憶制御方法である。これにより、物理アドレス空間上の任意の複数の単位データに対応する第２のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【０００７】
また、この第１の側面において、上記所定の複数の単位データは上記記憶部において非連続な物理アドレスに記憶されるように構成してもよい。これにより、非連続な物理アドレスに記憶される複数の単位データに対応する第２のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【０００８】
また、この第１の側面において、上記アドレス管理部は、それぞれの論理アドレスに対応する上記第２のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、上記エラー訂正部は、上記エラー訂正コードフラグが上記第２のエラー訂正コードが記憶されている旨を示す場合のみ上記エラー訂正を行うようにしてもよい。これにより、エラー訂正コードフラグを参照することによって無駄なエラー訂正処理をスキップさせるという作用をもたらす。
【０００９】
また、この第１の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データの結合順序を規定し、上記エラー訂正部は、上記結合順序に従って上記所定の複数の単位データを結合して上記エラー訂正を行うようにしてもよい。これにより、物理アドレス空間上の任意の複数の単位データを任意の順序で結合したデータに対応する第２のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【００１０】
また、この第１の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データに対応する上記第２のエラー訂正コードの上記記憶部における物理アドレスを保持し、上記エラー訂正部は、上記第２のエラー訂正コードの上記物理アドレスに従って上記記憶部から上記第２のエラー訂正コードを取得するようにしてもよい。これにより、物理アドレス空間上の任意の複数の単位データの物理アドレスに従って、対応する第２のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【００１１】
また、この第１の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データに対応する上記第２のエラー訂正コードの上記記憶部における物理アドレス内オフセットをさらに保持し、上記エラー訂正部は、上記第２のエラー訂正コードの上記物理アドレスおよび上記物理アドレス内オフセットに従って上記記憶部から上記第２のエラー訂正コードを取得するようにしてもよい。これにより、同一物理アドレスに記憶された複数の第２ＥＣＣから選択してエラー訂正を行うという作用をもたらす。
【００１２】
また、この第１の側面において、データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて上記第２のエラー訂正コードを生成するエラー訂正コード生成部と、上記データ保持特性強化コマンドを受け取ると上記指定された論理アドレスの範囲に記憶されているデータについて対応する上記第２のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部に登録するエントリ管理部とをさらに具備してもよい。これにより、データ保持特性強化コマンドを契機としてデータ保持特性強化処理を実行するという作用をもたらす。
【００１３】
また、この第１の側面において、上記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する上記第２のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部において解放し、その解放されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部において削除するようにしてもよい。データ保持特性強化解除コマンドを契機としてデータ保持特性強化解除処理を実行するという作用をもたらす。
【００１４】
また、この第１の側面において、上記エラー訂正コード管理部は、エントリ毎に上記第２のエラー訂正コードに対応する単位データの数を保持し、上記エントリ管理部は、エントリを新たに確保する際には上記単位データの数がゼロを示すエントリを対象とするようにしてもよい。これにより、新たにデータ保持特性を強化する際にエラー訂正コード管理部における空きエントリを利用するという作用をもたらす。
【００１５】
また、この第１の側面において、上記エラー訂正コード管理部は、エントリ毎に上記第２のエラー訂正コードに対応する単位データの数を保持し、上記エントリ管理部は、エントリを新たに確保する際には上記単位データの数が所定数に満たないエントリを対象とするようにしてもよい。これにより、新たにデータ保持特性を強化する際にエラー訂正コード管理部において対象データの物理アドレスに１つ以上の空きがあるエントリを利用するという作用をもたらす。
【００１６】
また、この第１の側面において、上記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、上記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて上記第２のエラー訂正コードを生成するエラー訂正コード生成部と、上記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する上記第２のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部に登録するエントリ管理部とをさらに具備してもよい。これにより、長い間書き換えられていないデータについては消失するおそれがあるため、データ保持特性強化を施すという作用をもたらす。この場合において、上記エントリ管理部は、上記最終アクセス時刻から所定期間経過するまでの間に上記第２のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する上記第２のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部において解放し、その解放されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部において削除するようにしてもよい。これにより、アクセス頻度が高いデータについては消失するおそれが低いため、データ保持特性強化を解除するという作用をもたらす。
【００１７】
また、本技術の第２の側面は、データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、上記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部とを具備する記憶装置である。これにより、物理アドレス空間上の任意の複数の単位データに対応する第２のエラー訂正コードによってエラー訂正を記憶装置において行うという作用をもたらす。
【００１８】
また、この第２の側面において、上記単位データ記憶部および上記エラー訂正コード記憶部は不揮発性メモリであってもよい。
【００１９】
また、本技術の第３の側面は、データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、上記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、上記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータとを具備する情報処理システムである。これにより、物理アドレス空間上の任意の複数の単位データに対応する第２のエラー訂正コードによってエラー訂正を情報処理システムにおいて行うという作用をもたらす。
【発明の効果】
【００２０】
本技術によれば、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２１】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態における不揮発性記憶領域３０３の記憶内容の一例を示す図である。
【図３】本技術の実施の形態における不揮発性記憶領域３０３の管理態様の一例を示す図である。
【図４】本技術の実施の形態におけるアドレス変換テーブル３４１の一構成例を示す図である。
【図５】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の一構成例を示す図である。
【図６】本技術の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図７】本技術の実施の形態におけるリード処理の処理手順の一例を示す図である。
【図８】本技術の実施の形態におけるデータ保持特性強化処理の処理手順の一例を示す図である。
【図９】本技術の実施の形態におけるアドレス変換テーブル３４１の第１の数値例を示す図である。
【図１０】本技術の実施の形態におけるアドレス変換テーブル３４１の第２の数値例を示す図である。
【図１１】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の第１の数値例を示す図である。
【図１２】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の第２の数値例を示す図である。
【図１３】本技術の実施の形態におけるデータ保持特性強化解除処理の処理手順の一例を示す図である。
【図１４】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の第３の数値例を示す図である。
【図１５】本技術の実施の形態におけるアドレス変換テーブル３４１の第３の数値例を示す図である。
【図１６】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の変形例（第２ＥＣＣ物理アドレス内オフセット）を示す図である。
【図１７】本技術の実施の形態におけるアドレス変換テーブル３４１の変形例（論理アドレス上で関連性のないデータ）の更新前の数値例を示す図である。
【図１８】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の変形例（論理アドレス上で関連性のないデータ）の更新前の数値例を示す図である。
【図１９】本技術の実施の形態におけるアドレス変換テーブル３４１の変形例（論理アドレス上で関連性のないデータ）の更新後の数値例を示す図である。
【図２０】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の変形例（論理アドレス上で関連性のないデータ）の更新後の数値例を示す図である。
【図２１】本技術の実施の形態におけるアドレス変換テーブル３４１の変形例（最終アクセス時刻）の数値例を示す図である。
【図２２】本技術の実施の形態における不揮発性記憶領域３０３の変形例（複数の論理アドレス）の記憶内容の一例を示す図である。
【図２３】本技術の実施の形態におけるアドレス変換テーブル３４１の変形例（複数の論理アドレス）の数値例を示す図である。
【図２４】本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の変形例（複数の論理アドレス）の数値例を示す図である。
【発明を実施するための形態】
【００２２】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態
２．変形例
【００２３】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００とメモリシステム４００とを備える。ホストコンピュータ１００は、メモリシステム４００に対して、リードまたはライトなどのリクエスト（コマンド）を発行して、それに対する応答（レスポンス）を受け取る。
【００２４】
メモリシステム４００は、ホストコンピュータ１００からリードコマンドを受信することによりデータの読出しを行う。また、メモリシステム４００は、ホストコンピュータ１００からライトコマンドを受信することによりデータの書込みを行う。また、メモリシステム４００は、データ保持特性強化コマンドを受信することによりデータの保持特性を強化するためのエラー訂正コード（ＥＣＣ：Error Correcting Code）を付与する。
【００２５】
リードコマンドでは、リード対象データの先頭論理アドレスとデータサイズとがパラメータとしてホストコンピュータ１００により指定される。ライトコマンドでは、ライト対象の先頭論理アドレスとデータサイズとがパラメータとしてホストコンピュータ１００により指定されるとともに、ライト対象データが送信される。データ保持特性強化コマンドでは、データ保持特性強化対象の論理アドレスの先頭アドレスとデータサイズとがパラメータとしてホストコンピュータ１００により指定される。
【００２６】
メモリシステム４００は、不揮発性メモリ３００と、メモリコントローラ２００とを備える。不揮発性メモリ３００は、メモリコントローラ２００と接続するための外部インターフェース３０２と、不揮発性記憶領域３０３とを備えている。不揮発性記憶領域３０３は、データ記憶領域３１０と、第１ＥＣＣ記憶領域３２０と、第２ＥＣＣ記憶領域３３０と、テーブル記憶領域３４０とを備えている。それぞれの領域に記憶される内容については後述する。
【００２７】
メモリコントローラ２００は、不揮発性メモリ３００を制御するためのコントローラである。このメモリコントローラ２００は、第１ＥＣＣ生成部２１０と、第２ＥＣＣ生成部２２０と、テーブル管理部２３０と、データライト処理部２４０とを備えている。また、このメモリコントローラ２００は、データリード処理部２５０と、第１ＥＣＣ訂正部２６０と、第２ＥＣＣ訂正部２７０と、ＥＣＣ切替処理部２８０とを備えている。また、このメモリコントローラ２００は、ホストコンピュータ１００と接続するためのホストインターフェース２０１と、不揮発性メモリ３００と接続するためのメモリインターフェース２０３とを備えている。
【００２８】
第１ＥＣＣ生成部２１０は、ホストコンピュータ１００からライトコマンドにより受信したデータに対して付加するエラー訂正コード（第１ＥＣＣ）を生成するものである。第２ＥＣＣ生成部２２０は、データの保持特性を強化するためのエラー訂正コード（第２ＥＣＣ）を生成するものである。テーブル管理部２３０は、後述するアドレス変換テーブルや第２ＥＣＣ管理テーブルなどを管理するためのものである。データライト処理部２４０は、不揮発性メモリ３００に対してデータのライト処理を行うものである。データリード処理部２５０は、不揮発性メモリ３００からデータのリード処理を行うものである。第１ＥＣＣ訂正部２６０は、第１ＥＣＣを用いてデータの誤り検出および訂正を行うものである。第２ＥＣＣ訂正部２７０は、第２ＥＣＣを用いてデータの誤り検出および訂正を行うものである。ＥＣＣ切替処理部２８０は、第１ＥＣＣでは誤り訂正ができなかった場合に、第２ＥＣＣを用いたデータの誤り検出および訂正を行うための切替処理を行うものである。
【００２９】
なお、第２ＥＣＣ訂正部２７０は、特許請求の範囲に記載のエラー訂正部の一例である。また、第２ＥＣＣ生成部２２０は、特許請求の範囲に記載のエラー訂正コード生成部の一例である。また、テーブル管理部２３０は、特許請求の範囲に記載のエントリ管理部の一例である。また、データ記憶領域３１０および第１ＥＣＣ記憶領域３２０は、特許請求の範囲に記載の単位データ記憶部の一例である。また、第２ＥＣＣ記憶領域３３０は、特許請求の範囲に記載のエラー訂正コード記憶部の一例である。
【００３０】
［不揮発性記憶領域３０３の記憶形式］
図２は、本技術の実施の形態における不揮発性記憶領域３０３の記憶内容の一例を示す図である。不揮発性記憶領域３０３は、例えば３４バイトを単位データとしてデータのリードおよびライトが可能であり、３４バイト毎に物理アドレスが割り当てられているものとする。
【００３１】
３４バイトの単位データは、例えば３２バイトのデータと、そのデータの２バイトのエラー訂正コード（第１ＥＣＣ）とからなる。すなわち、データ記憶領域３１０における３２バイトのデータに対して、２バイトの第１ＥＣＣが付与されて第１ＥＣＣ記憶領域３２０に記憶される。なお、一般的には、不揮発性記憶領域３０３の単位データ幅をＮバイト、データサイズをＡバイト、付与される第１ＥＣＣのサイズをＢバイトとすると、次式が成り立つ。
Ａ＋Ｂ ≦ Ｎ
【００３２】
さらに、例えば４つの単位データに対して３４バイトの別のエラー訂正コード（第２ＥＣＣ）を付与することを想定する。この第２ＥＣＣは第２ＥＣＣ記憶領域３３０に記憶される。この第２ＥＣＣの付与対象となる単位データは、物理アドレス空間上で非連続な物理アドレスに記憶されていてもよい。なお、一般的には、付与される第２ＥＣＣのサイズをＣバイトとすると、次式が成り立つ。
Ｃ ≦ Ｎ
【００３３】
これら単位データおよび第２ＥＣＣの不揮発性記憶領域３０３上の記憶アドレスは、以下に説明する各テーブルにより管理される。
【００３４】
なお、この例では、不揮発性メモリとして、特に、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）に適用するのが好適である。不揮発性ランダムアクセスメモリの例としては、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistance RAM）などが挙げられる。また、フラッシュメモリに適用することも可能である。
【００３５】
図３は、本技術の実施の形態における不揮発性記憶領域３０３の管理態様の一例を示す図である。単位データおよび第２ＥＣＣの不揮発性記憶領域３０３上の記憶アドレスは、アドレス変換テーブル３４１および第２ＥＣＣ管理テーブル３４２によって管理される。
【００３６】
アドレス変換テーブル３４１は、論理アドレスと物理アドレスの対応関係を管理するためのテーブルである。この例では、論理アドレスに対応する第２ＥＣＣ管理テーブル３４２のインデックスを保持している。なお、アドレス変換テーブル３４１は、特許請求の範囲に記載のアドレス管理部の一例である。
【００３７】
第２ＥＣＣ管理テーブル３４２は、第２ＥＣＣを管理するテーブルである。この例では、第２ＥＣＣの物理アドレスと、その第２ＥＣＣに対応する単位データの物理アドレスとをエントリ毎に保持しており、各エントリにはインデックス（第２ＥＣＣインデックス）が付与されている。なお、第２ＥＣＣ管理テーブル３４２は、特許請求の範囲に記載のエラー訂正コード管理部の一例である。
【００３８】
これらアドレス変換テーブル３４１および第２ＥＣＣ管理テーブル３４２は、テーブル記憶領域３４０に記憶される。
【００３９】
［アドレス変換テーブルの構成］
図４は、本技術の実施の形態におけるアドレス変換テーブル３４１の一構成例を示す図である。このアドレス変換テーブル３４１は、論理アドレスと、物理アドレスと、データフラグと、第２ＥＣＣフラグと、第２ＥＣＣインデックスとを関連付けて保持している。
【００４０】
論理アドレスは、ホストコンピュータ１００において指定される不揮発性記憶領域３０３のアドレスである。物理アドレスは、不揮発性記憶領域３０３における物理アドレスである。なお、ここでは、論理アドレスおよび物理アドレスを"０ｘ"で始まる１６進数の記述方法によって示している。
【００４１】
データフラグは、対応する物理アドレスにデータおよび第１ＥＣＣが記憶されているか否を示すフラグである。データフラグが「Ｔｒｕｅ」であればデータおよび第１ＥＣＣが書き込まれていることを示し、「Ｆａｌｓｅ」であればデータおよび第１ＥＣＣが書き込まれていないことを示す。データフラグが「Ｆａｌｓｅ」を示す物理アドレスから読み出されるデータは、メモリの初期値となる。なお、ＮＡＮＤフラッシュの場合、初期値は全てのビットが「１」となる
【００４２】
第２ＥＣＣフラグは、対応する物理アドレスに記憶されているデータに対して第２ＥＣＣが付与されているか否かを示すフラグである。第２ＥＣＣフラグが「Ｔｒｕｅ」であれば第２ＥＣＣが付与されてデータ保持特性が強化されていることを示し、「Ｆａｌｓｅ」であれば第２ＥＣＣが付与されていないことを示す。
【００４３】
第２ＥＣＣインデックスは、第２ＥＣＣフラグが「Ｔｒｕｅ」を示すときに有効な値であり、第２ＥＣＣ管理テーブル３４２の各エントリに付与されている第２ＥＣＣインデックスを保持するものである。この図４の例では、アドレス変換テーブル３４１のエントリ７１０、７１１、７１２および７１３において、第２ＥＣＣインデックスとして「Ｚi」が保持されている。
【００４４】
［第２ＥＣＣ管理テーブルの構成］
図５は、本技術の実施の形態における第２ＥＣＣ管理テーブル３４２の一構成例を示す図である。この第２ＥＣＣ管理テーブル３４２は、各エントリにおいて、第２ＥＣＣインデックスと、データ数と、第２ＥＣＣ物理アドレスと、第０乃至第３番目データの物理アドレスが保持されている。
【００４５】
第２ＥＣＣインデックスは、第２ＥＣＣ管理テーブル３４２のエントリを識別するためのインデックスを保持するものである。この第２ＥＣＣインデックスの値はアドレス変換テーブル３４１の対応するエントリに保持され、これによりアドレス変換テーブル３４１と第２ＥＣＣ管理テーブル３４２とが関連付けられる。
【００４６】
データ数は、このエントリに含まれるデータの数を示すものである。
【００４７】
第２ＥＣＣ物理アドレスは、このエントリに含まれるデータの第２ＥＣＣが記憶されている物理アドレスを保持するものである。
【００４８】
第０乃至第３番目データの物理アドレスは、このエントリに含まれるデータの物理アドレスを順番に保持するものである。第０乃至第３番目データの物理アドレスのうち、上述のデータ数によって示される数のデータに対応するもののみが有効である。この例では、第２ＥＣＣインデックスが「００１」のエントリにおいては、データ数が「２」を示しているため、第０および第１番目データの物理アドレスの２つのみが有効である。また、第２ＥＣＣインデックスが「０００」のエントリにおいては、データ数が「０」を示しているため、第０乃至第３番目データの物理アドレスの全てが無効である。
【００４９】
［ライト処理の処理手順］
図６は、本技術の実施の形態におけるライト処理の処理手順の一例を示す図である。メモリシステム４００は、ホストコンピュータ１００から、ホストインターフェース２０１を介してライトコマンドおよびライトデータを受信する。ライトコマンドは、ライト対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。ここにいうデータサイズは、論理アドレスで指定される領域を単位とした数値として表される。例えば、論理アドレスで指定される領域のサイズが３２バイトのメモリシステムにおいて、データサイズとして「２」が指定された場合、ホストコンピュータ１００から受信してライトするデータのサイズは３２×２＝６４バイトとなる。
【００５０】
メモリコントローラ２００は、ライトコマンドのパラメータとして受信したライト対象の先頭論理アドレスとデータサイズに基づいて、論理アドレス単位に処理を分割する（ステップＳ９１１）。１回の処理で実行されるのは１論理アドレスであり、ライトされるデータのサイズは単位論理アドレスにより指定される領域のサイズとなる。例えば、ライト対象の先頭論理アドレスとして「ｘi1」、データサイズとして「１」が指定された場合には、１回の処理が行われる。また、ライト対象の先頭論理アドレスとして「ｘi1」、データサイズとして「２」が指定された場合には、２回の処理に分割される。
【００５１】
そして、ライト処理の対象となる論理アドレスが決定される（ステップＳ９１２）。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定されていく。ライト対象の先頭論理アドレスとして「ｘi1」、データサイズとして「２」が指定された場合、最初に処理を実行する論理アドレスは「ｘi1」に決定される。そして、次に対象となる論理アドレスは「ｘi1＋１」に決定される。
【００５２】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル３４１から取得される（ステップＳ９１３）。このアドレス変換情報は、図４において説明した、物理アドレス、データフラグ、第２ＥＣＣフラグ、および、第２ＥＣＣインデックスである。例えば、図４の例では、対象となる論理アドレスが「ｘi1」の場合、物理アドレスとして「ｙi1」、データフラグとして「Ｔｒｕｅ」、第２ＥＣＣフラグとして「Ｔｒｕｅ」、第２ＥＣＣインデックスとして「ｚi」がそれぞれ取得される。
【００５３】
そして、ホストコンピュータ１００から受信したデータから第１ＥＣＣが計算される（ステップＳ９１４）。第１ＥＣＣの算出に使用されるデータのサイズは、１論理アドレスで指定される領域のサイズ（例えば３２バイト）である。
【００５４】
ステップＳ９１３において取得されたデータフラグが「Ｆａｌｓｅ」を示している場合には（ステップＳ９１５：Ｎｏ）、今回のライト処理によりデータが書き込まれるため、そのエントリのデータフラグは「Ｔｒｕｅ」に更新される（ステップＳ９１６）。その後、ステップＳ９１８の処理に進む。一方、データフラグが「Ｔｒｕｅ」となっている場合には（ステップＳ９１５：Ｙｅｓ）、さらに第２ＥＣＣフラグが「Ｔｒｕｅ」となっている場合（ステップＳ９１７：Ｙｅｓ）、ステップＳ９２１以降の処理を行う。それ以外の場合には、ステップＳ９１８の処理に進む。
【００５５】
第２ＥＣＣフラグが「Ｔｒｕｅ」となっている場合の処理として、データに対応する第２ＥＣＣによりエラー訂正を行うための物理アドレス情報を取得する（ステップＳ９２１）。この物理アドレス情報は、上述の第２ＥＣＣ管理テーブル３４２によって管理されているデータ数、第２ＥＣＣ物理アドレス、および、第０乃至第３番目データの物理アドレスである。ここで取得される物理アドレス情報は、ステップＳ９１３において取得された第２ＥＣＣインデックスと一致する値を有する第２ＥＣＣ管理テーブル３４２のエントリから取得される。
【００５６】
例えば、アドレス変換テーブル３４１が図４に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図５に示す値を保持しているときを想定する。論理アドレス「ｘi1」にライトが発生した際に取得される物理アドレス情報は、第２ＥＣＣインデックスが「ｚi」となる第２ＥＣＣ管理テーブル３４２のエントリから取得される。すなわち、データ数は「４」、第２ＥＣＣ物理アドレスは「ｅi」、第０番目データの物理アドレスは「ｙi0」、第１番目データの物理アドレスは「ｙi1」、第２番目データの物理アドレスは「ｙi2」、第３番目データの物理アドレスは「ｙi3」となる。
【００５７】
そして、ステップＳ９２１において取得された物理アドレス情報に基づいて、第２ＥＣＣ、データ、および、第１ＥＣＣが不揮発性記憶領域３０３から読み出される（ステップＳ９２２）。例えば、第２ＥＣＣ管理テーブル３４２から取得された第２ＥＣＣ物理アドレスが「ｅi」、データ数が「４」、第０乃至第３番目データの物理アドレスが「ｙi0」、「ｙi1」、「ｙi2」、および、「ｙi3」である場合を想定する。この場合、物理アドレス「ｅi」からは第２ＥＣＣ、物理アドレス「ｙi0」、「ｙi1」、「ｙi2」、および、「ｙi3」からは、データおよび第１ＥＣＣが読み出される。
【００５８】
ステップＳ９２２において読み出された第２ＥＣＣを用いて、データおよび第１ＥＣＣのエラー訂正が実行され、その成否により処理手順が分岐する（ステップＳ９２３）。このとき、ステップＳ９２１において取得されたデータ数が「４」より小さい場合、足りないデータについては不揮発性メモリ３００の初期値によってパディングした上で、エラー訂正を実行する。
【００５９】
第２ＥＣＣを用いたエラー訂正が成功した場合には（ステップＳ９２３：Ｙｅｓ）、ステップＳ９２４以降の処理が行われる。一方、エラー訂正に失敗した場合には（ステップＳ９２３：Ｎｏ）、ライトコマンドのエラー終了がホストコンピュータ１００に通知される（ステップＳ９２７）。このホストコンピュータ１００への通知後、そのライトコマンドはエラー終了となる。
【００６０】
ステップＳ９２３においてエラー訂正が成功した場合、その物理アドレスに記憶されていたデータおよび第１ＥＣＣを、ホストコンピュータ１００から受信したデータおよびステップＳ９１４において算出された第１ＥＣＣに置き換える（ステップＳ９２４）。例えば、アドレス変換テーブル３４１が図４で示される値を保持し、第２ＥＣＣ管理テーブル３４２が図５に示される値を保持しているとき、論理アドレス「ｘi1」に書き込みが発生した場合を想定する。この場合、第１番目データの物理アドレス「ｙi1」に記憶されているデータおよび第１ＥＣＣを、ホストコンピュータ１００から受信したデータおよびそのデータから算出された第１ＥＣＣに置き換える。
【００６１】
次に、ステップＳ９２４において置換されたデータおよび第１ＥＣＣについて、その第２ＥＣＣが算出される（ステップＳ９２５）。例えば、アドレス変換テーブル３４１が図４で示される値を保持し、第２ＥＣＣ管理テーブル３４２が図５に示される値を保持しているとき、論理アドレス「ｘi1」にライトが発生した場合を想定する。この場合、物理アドレス「ｙi0」から読み出されたデータと第１ＥＣＣが第０番目データ、物理アドレス「ｙi2」から読み出されたデータと第１ＥＣＣが第２番目データ、物理アドレス「ｙi3」から読み出されたデータと第１ＥＣＣが第３番目データとなる。また、ホストコンピュータ１００から受信したデータおよびそのデータから算出された第１ＥＣＣが第１番目データとなる。これら第０乃至３番目データを順番に連結させて、第２ＥＣＣが算出される。
【００６２】
このようにして算出された第２ＥＣＣは、ステップＳ９２１において取得された第２ＥＣＣの物理アドレスに書き込まれる（ステップＳ９２６）。この第２ＥＣＣの書込みが完了すると、ステップＳ９１８以降の処理が実行される。
【００６３】
ステップＳ９１６、Ｓ９１７またはＳ９２６の処理の後、データと、ステップＳ９１４において算出された第１ＥＣＣとが、不揮発性記憶領域３０３に書き込まれる（ステップＳ９１８）。そのライト対象の物理アドレスは、ステップＳ９１３において取得された物理アドレスである。
【００６４】
そして、ステップＳ９１１において分割した処理が全て終了したかが判定され（ステップＳ９１９）、処理が残っている場合にはステップＳ９１２以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には（ステップＳ９１９：Ｎｏ）、ライトコマンドが正常に実行された旨がホストコンピュータ１００に通知される（ステップＳ９２９）。ホストコンピュータ１００への通知が終了した後は、そのライトコマンドの処理は正常終了となる。
【００６５】
［リード処理の処理手順］
図７は、本技術の実施の形態におけるリード処理の処理手順の一例を示す図である。メモリシステム４００は、ホストコンピュータ１００から、ホストインターフェース２０１を介してリードコマンドを受信する。リードコマンドは、リード対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【００６６】
メモリコントローラ２００は、リードコマンドのパラメータとして受信したリード対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する（ステップＳ９３１）。１回の処理で実行されるのは１論理アドレスであり、読み出されるデータのサイズは単位論理アドレスで指定される領域のサイズとなる。例えば、リード対象の先頭論理アドレスとして「ｘi1」、データサイズとして「１」が指定された場合には１回の処理に分割され、リード対象の先頭論理アドレスとして「ｘi1」、データサイズとして「２」が指定された場合には２回の処理に分割される。
【００６７】
そして、リード処理の対象となる論理アドレスが決定される（ステップＳ９３２）。対象となる論理アドレスは、リード対象の先頭論理アドレスから順番に決定されていく。リード対象の先頭論理アドレスとして「ｘi1」、データサイズとして「２」が指定された場合、最初に処理を実行する論理アドレスは「ｘi1」に決定される。そして、次に対象となる論理アドレスは「ｘi1＋１」に決定される。
【００６８】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル３４１から取得される（ステップＳ９３３）。このアドレス変換情報は、図４において説明した、物理アドレス、データフラグ、第２ＥＣＣフラグ、および、第２ＥＣＣインデックスである。例えば、図４の例では、対象となる論理アドレスが「ｘi1」の場合、物理アドレスとして「ｙi1」、データフラグとして「Ｔｒｕｅ」、第２ＥＣＣフラグとして「Ｔｒｕｅ」、第２ＥＣＣインデックスとして「ｚi」がそれぞれ取得される。
【００６９】
ステップＳ９３３において取得されたデータフラグが「Ｆａｌｓｅ」を示している場合には（ステップＳ９３４：Ｎｏ）、ステップＳ９３３において取得された物理アドレスからデータのみが読み出される（ステップＳ９３５）。このとき、読み出される値は不揮発性メモリの初期値である。このデータの読出しの後はステップＳ９３８の処理が行われる。
【００７０】
一方、データフラグが「Ｔｒｕｅ」を示している場合には（ステップＳ９３４：Ｙｅｓ）、ステップＳ９３３において取得された物理アドレスからデータおよび第１ＥＣＣが読み出される（ステップＳ９３６）。そして、読み出された第１ＥＣＣを用いてデータのエラー訂正が実行され、エラー訂正の成否に応じて処理が分岐する（ステップＳ９３７）。すなわち、エラー訂正に成功した場合にはステップＳ９３８の処理が行われ、エラー訂正に失敗した場合にはステップＳ９４１以降の処理が行われる。
【００７１】
第１ＥＣＣを用いたエラー訂正に失敗した場合には（ステップＳ９３７：Ｎｏ）、ステップＳ９３３において取得された第２ＥＣＣフラグの値に応じて処理が分岐する（ステップＳ９４１）。すなわち、第２ＥＣＣフラグが「Ｆａｌｓｅ」を示している場合には（ステップＳ９４１：Ｎｏ）、それ以上のエラー訂正はできないため、リードコマンドのエラー終了がホストコンピュータ１００に通知される（ステップＳ９４７）。このホストコンピュータ１００への通知後、そのリードコマンドはエラー終了となる。
【００７２】
一方、第２ＥＣＣフラグが「Ｔｒｕｅ」を示している場合には（ステップＳ９４１：Ｙｅｓ）、データに対応する第２ＥＣＣによりエラー訂正を行うための物理アドレス情報を取得する（ステップＳ９４２）。この物理アドレス情報は、上述の第２ＥＣＣ管理テーブル３４２によって管理されているデータ数、第２ＥＣＣ物理アドレス、および、第０乃至第３番目データの物理アドレスである。ここで取得される物理アドレス情報は、ステップＳ９１３において取得された第２ＥＣＣインデックスと一致する値を有する第２ＥＣＣ管理テーブル３４２のエントリから取得される。
【００７３】
例えば、アドレス変換テーブル３４１が図４に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図５に示す値を保持しているときを想定する。論理アドレス「ｘi1」にライトが発生した際に取得される物理アドレス情報は、第２ＥＣＣインデックスが「ｚi」となる第２ＥＣＣ管理テーブル３４２のエントリから取得される。すなわち、データ数は「４」、第２ＥＣＣ物理アドレスは「ｅi」、第０番目データの物理アドレスは「ｙi0」、第１番目データの物理アドレスは「ｙi1」、第２番目データの物理アドレスは「ｙi2」、第３番目データの物理アドレスは「ｙi3」となる。
【００７４】
そして、ステップＳ９４２において取得された物理アドレス情報に基づいて、第２ＥＣＣ、データ、および、第１ＥＣＣが不揮発性記憶領域３０３から読み出される（ステップＳ９４３）。例えば、第２ＥＣＣ管理テーブル３４２から取得された第２ＥＣＣ物理アドレスが「ｅi」、データ数が「４」、第０乃至第３番目データの物理アドレスが「ｙi0」、「ｙi1」、「ｙi2」、および、「ｙi3」である場合を想定する。この場合、物理アドレス「ｅi」からは第２ＥＣＣ、物理アドレス「ｙi0」、「ｙi2」、および、「ｙi3」からは、データおよび第１ＥＣＣが読み出される。ただし、物理アドレス「ｙi1」に記憶されている第１番目データについては、既にステップＳ９３６において読み出されているため、ここでのデータの読出しは省略することができる。
【００７５】
そして、ステップＳ９４３において読み出された第２ＥＣＣを用いて、ステップＳ９４３において読み出されたデータおよび第１ＥＣＣのエラー訂正が行われ、そのエラー訂正の成否によって処理が分岐する（ステップＳ９４４）。このとき、ステップＳ９４２において取得されたデータ数が「４」より小さい場合、足りないデータについては不揮発性メモリ３００の初期値によってパディングした上で、エラー訂正を実行する。
【００７６】
第２ＥＣＣを用いたエラー訂正が成功した場合には（ステップＳ９４４：Ｙｅｓ）、ステップＳ９３８以降の処理が行われる。一方、エラー訂正に失敗した場合には（ステップＳ９４４：Ｎｏ）、リードコマンドのエラー終了がホストコンピュータ１００に通知される（ステップＳ９４７）。このホストコンピュータ１００への通知後、そのリードコマンドはエラー終了となる。
【００７７】
ステップＳ９３５、Ｓ９３７またはＳ９４４の処理の後、第１ＥＣＣまたは第２ＥＣＣを用いたエラー訂正処理によって成功したデータがホストコンピュータ１００に転送される（ステップＳ９３８）。
【００７８】
そして、ステップＳ９３１において分割した処理が全て終了したかが判定され（ステップＳ９３９）、処理が残っている場合にはステップＳ９３２以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には（ステップＳ９３９：Ｎｏ）、リードコマンドが正常に実行された旨がホストコンピュータ１００に通知される（ステップＳ９４９）。ホストコンピュータ１００への通知が終了した後は、そのリードコマンドの処理は正常終了となる。
【００７９】
［データ保持特性強化処理の処理手順］
図８は、本技術の実施の形態におけるデータ保持特性強化処理の処理手順の一例を示す図である。メモリシステム４００は、ホストコンピュータ１００から、ホストインターフェース２０１を介してデータ保持特性強化コマンドを受信する。データ保持特性強化コマンドは、データ保持特性強化対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【００８０】
メモリコントローラ２００は、データ保持特性強化コマンドのパラメータとして受信したデータ保持特性強化対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する（ステップＳ９５１）。１回の処理で実行されるのは第２ＥＣＣを付与するデータサイズであり、この例では４論理アドレスを１単位とする。ただし、データサイズで指定された値が「４」で割り切れない場合には、先頭論理アドレスから４論理アドレスずつ処理を実行し、最後に４論理アドレスに満たない数の論理アドレスを１単位として処理をする。例えば、データサイズとして「４」が指定された場合は４論理アドレスの処理を１回実行し、データサイズに「１０」が指定された場合には４論理アドレスの処理を２回実行し、最後の処理で２論理アドレスの処理を１回実行する。
【００８１】
そして、データ保持特性強化の対象となる論理アドレスが決定される（ステップＳ９５２）。対象となる論理アドレスは、データ保持特性強化対象の先頭論理アドレスからステップＳ９５１において分割された単位で決定されていく。
【００８２】
そして、対象となる１単位分の論理アドレスに対応するアドレス変換情報がアドレス変換テーブル３４１から取得される（ステップＳ９５３）。このアドレス変換情報は、図４において説明した、物理アドレス、データフラグ、第２ＥＣＣフラグ、および、第２ＥＣＣインデックスである。この処理では、最大４論理アドレス分の物理アドレス、データフラグ、第２ＥＣＣフラグ、第２ＥＣＣインデックスが取得される。
【００８３】
例えば、アドレス変換テーブル３４１の値として図９に示す例を想定する。処理対象の論理アドレスが「ｘj」から４論理アドレスの場合は、論理アドレス「ｘj」の物理アドレスとして「ｙj0」、データフラグの値として「Ｔｒｕｅ」、第２ＥＣＣフラグの値として「Ｆａｌｓｅ」が取得される。また、論理アドレス「ｘj＋１」の物理アドレスとして「ｙj1」、データフラグの値として「Ｆａｌｓｅ」、第２ＥＣＣフラグの値として「Ｆａｌｓｅ」が取得される。また、論理アドレス「ｘj＋２」の物理アドレスとして「ｙj2」、データフラグの値として「Ｔｒｕｅ」、第２ＥＣＣフラグの値として「Ｆａｌｓｅ」が取得される。また、論理アドレス「ｘj＋３」の物理アドレスとして「ｙj3」、データフラグの値として「Ｔｒｕｅ」、第２ＥＣＣフラグの値として「Ｆａｌｓｅ」が取得される。一方、処理対象の論理アドレスが「ｘj＋４」から１論理アドレスの場合は、論理アドレス「ｘj＋４」の物理アドレスとして「ｙj4」、データフラグの値として「Ｆａｌｓｅ」、第２ＥＣＣフラグの値として「Ｆａｌｓｅ」が取得される。
【００８４】
なお、この例において取得される第２ＥＣＣインデックスの値は、第２ＥＣＣフラグが「Ｆａｌｓｅ」であるため無効な値となる。
【００８５】
ステップＳ９５３において取得された物理アドレスからデータおよび第１ＥＣＣを不揮発性記憶領域３０３から読み出す（ステップＳ９５４）。ステップＳ９５３において取得されたデータフラグが「Ｆａｌｓｅ」である物理アドレスから読み出されるデータおよび第１ＥＣＣは、メモリの初期値となる。例えば、アドレス変換テーブル３４１の値として図１０に示す例を想定する。
【００８６】
処理対象の論理アドレスが「ｘj」から４論理アドレスの場合は、物理アドレス「ｙj0」、ス「ｙj1」、「ｙj2」および「ｙj3」からデータおよび第１ＥＣＣが読み出される。一方、処理対象の論理アドレスが「ｘj＋４」から１論理アドレスの場合は、物理アドレス「ｙj4」からデータおよび第１ＥＣＣが読み出される。このとき、物理アドレス「ｙj4」に対応するデータフラグが「Ｆａｌｓｅ」を示しているため、物理アドレス「ｙj4」から読み出されるデータは不揮発性メモリの初期値となる。
【００８７】
ステップＳ９５４において読み出された第１ＥＣＣを用いて、データのエラー訂正が実行され、その成否により処理手順が分岐する（ステップＳ９５５）。このエラー訂正は、ステップＳ９５３において取得されたデータフラグが「Ｔｒｕｅ」となっている物理アドレスから読み出されたデータについてのみ実行される。ステップＳ９５３において取得されたデータフラグが「Ｆａｌｓｅ」となっている物理アドレスから読み出されたデータのエラー訂正は成功として扱う。全てのユーザーデータのエラー訂正が成功した場合はステップＳ９５６の処理に進み、それ以外の場合にはステップＳ９６９の処理に進む。
【００８８】
第１ＥＣＣを用いたエラー訂正に失敗した場合には（ステップＳ９５５：Ｎｏ）、データ保持特性強化コマンドのエラー終了がホストコンピュータ１００に通知される（ステップＳ９６９）。このホストコンピュータ１００への通知後、そのデータ保持特性強化コマンドはエラー終了となる。
【００８９】
第１ＥＣＣを用いたエラー訂正が成功した場合には（ステップＳ９５５：Ｙｅｓ）、第２ＥＣＣ管理テーブル３４２の空きエントリの検索が行われる（ステップＳ９５６）。空きエントリの検索の際には、第２ＥＣＣ管理テーブル３４２の中でデータ数が「０」を示すエントリが検索され、そのエントリの第２ＥＣＣインデックスの値が取得される。
【００９０】
そして、ステップＳ９５６において検索されたエントリにおいて第２ＥＣＣ物理アドレスが取得される（ステップＳ９５７）。
【００９１】
そして、ステップＳ９５４において読み出されたデータと第１ＥＣＣの値を、論理アドレスの小さい順に連結させて、第２ＥＣＣを算出する（ステップＳ９５８）。４論理アドレスに満たない数の論理アドレスの処理では、足りないサイズのデータと第１ＥＣＣについては不揮発性メモリ３００の初期値によってパディングする。
【００９２】
例えば、アドレス変換テーブル３４１の値として図９に示す例を想定する。処理対象の論理アドレスが「ｘj」から４論理アドレスの場合は、物理アドレス「ｙj0」、「ｙj1」、「ｙj2」および「ｙj3」からデータおよび第１ＥＣＣが読み出される。このとき、物理アドレス「ｙj1」に対応するデータフラグが「Ｆａｌｓｅ」を示しているため、物理アドレス「ｙj1」から読み出されるデータおよび第１ＥＣＣは不揮発性メモリの初期値となる。読み出されたデータは、物理アドレス「ｙj0」のデータ、第１ＥＣＣ、物理アドレス「ｙj1」のデータ、第１ＥＣＣ、物理アドレス「ｙj2」のデータ、第１ＥＣＣ、物理アドレス「ｙj3」のデータ、第１ＥＣＣの順に連結され、第２ＥＣＣが算出される。
【００９３】
一方、処理を行う論理アドレスが「ｘj＋４」から１論理アドレスの場合は、物理アドレス「ｙj4」からデータと第１ＥＣＣ、以降の３物理アドレスから読み出されたデータは不揮発性メモリ３００の初期値でパディングし、第２ＥＣＣを算出する。この例の場合、データは全て不揮発性メモリ３００の初期値となる。
【００９４】
ステップＳ９５８において算出された第２ＥＣＣは、ステップＳ９５７において取得された物理アドレスに書き込まれる（ステップＳ９５９）。
【００９５】
そして、ステップＳ９５６において検索されたエントリにおいてデータ数、第０乃至第３番目データの物理アドレスの値が更新される（ステップＳ９６１）。データ数には、第２ＥＣＣを算出した際に使用されたデータが記憶されている物理アドレスの数を設定される。第０番目データの物理アドレスには、連結されたデータおよび第１ＥＣＣの先頭のデータの物理アドレスが設定される。第１乃至第３番目データの物理アドレスには、連結された順に、データおよび第１ＥＣＣの物理アドレスが設定される。
【００９６】
例えば、アドレス変換テーブル３４１の値として図９、第２ＥＣＣ管理テーブル３４２の値として図１１に示す値を有する例を想定する。処理対象の論理アドレスが「ｘj」から４論理アドレスで、ステップＳ９５６において取得された第２ＥＣＣインデックスが「ｚj0」である場合の更新後のエントリの値を図１２の上部に示す。一方、処理対象の論理アドレスが「ｘj＋４」から１論理アドレスで、ステップＳ９５６において取得された第２ＥＣＣインデックスが「ｚj4」である場合の更新後のエントリの値を図１２の下部に示す。
【００９７】
そして、アドレス変換テーブル３４１の値のうち、第２ＥＣＣフラグと第２ＥＣＣインデックスの値を更新して、不揮発性メモリ３００を更新する（ステップＳ９６２）。このとき、第２ＥＣＣには「Ｔｒｕｅ」が設定され、第２ＥＣＣインデックスにはステップＳ９５６において取得された第２ＥＣＣインデックスが設定される。
【００９８】
例えば、アドレス変換テーブル３４１の値として図９、第２ＥＣＣ管理テーブル３４２の値として図１１に示す値を有する場合を想定する。処理対象の論理アドレスが「ｘj」から４論理アドレスで、ステップＳ９５６において取得された第２ＥＣＣインデックス「ｚj0」である場合の更新後のアドレス変換テーブル３４１の値を図１０のエントリ７３０乃至７３３に示す。一方、処理対象の論理アドレスが「ｘj＋４」から１論理アドレスで、ステップＳ９５６において取得された第２ＥＣＣインデックスが「ｚj4」である場合の更新後のアドレス変換テーブル３４１の値を図１０のエントリ７３４に示す。
【００９９】
そして、ステップＳ９６１において分割した処理が全て終了したかが判定され（ステップＳ９６３）、処理が残っている場合にはステップＳ９５２以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には（ステップＳ９６３：Ｎｏ）、データ保持特性強化コマンドが正常に実行された旨がホストコンピュータ１００に通知される（ステップＳ９６４）。ホストコンピュータ１００への通知が終了した後は、そのデータ保持特性強化コマンドの処理は正常終了となる。
【０１００】
［データ保持特性強化解除処理の処理手順］
図１３は、本技術の実施の形態におけるデータ保持特性強化解除処理の処理手順の一例を示す図である。メモリシステム４００は、ホストコンピュータ１００から、ホストインターフェース２０１を介してデータ保持特性強化解除コマンドを受信する。データ保持特性強化解除コマンドは、データ保持特性強化解除対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【０１０１】
メモリコントローラ２００は、データ保持特性強化解除コマンドのパラメータとして受信したデータ保持特性強化解除対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する（ステップＳ９７１）。１回の処理で実行されるのは１論理アドレスであるものとして開始するが、処理の効率化のために複数の論理アドレスの解除が同時に可能と判別される場合は、１回の処理で複数の論理アドレスの処理を実行する。詳細は以下の説明における該当個所において説明する。
【０１０２】
そして、データ保持特性強化解除の対象となる論理アドレスが決定される（ステップＳ９７２）。処理を開始する論理アドレスは、先頭からステップＳ９７１において分割された１論理アドレスで、かつ、解除処理が実行されていない論理アドレスである。
【０１０３】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル３４１から取得される（ステップＳ９７３）。このアドレス変換情報は、図４において説明した、物理アドレス、データフラグ、第２ＥＣＣフラグ、および、第２ＥＣＣインデックスである。
【０１０４】
例えば、アドレス変換テーブル３４１の値として図１０に示す値を有する場合を想定する。処理対象の論理アドレスが「ｘj」の場合は、論理アドレス「ｘj」の物理アドレスとして「ｙj0」、データフラグの値として「Ｔｒｕｅ」、第２ＥＣＣフラグの値として「Ｔｒｕｅ」、第２ＥＣＣインデックスの値として「ｚj0」がそれぞれ取得される。一方、処理対象の論理アドレスが「ｘj＋４」から１論理アドレスの場合は、論理アドレス「ｘj＋４」の物理アドレスとして「ｙj4」、データフラグの値として「Ｆａｌｓｅ」、第２ＥＣＣフラグの値として「Ｔｒｕｅ」がそれぞれ取得される。また、第２ＥＣＣインデックスの値として「ｚj4」が取得される。
【０１０５】
そして、ステップＳ９７３において取得された物理アドレスに記憶されたデータに付与された第２ＥＣＣを計算するための物理アドレス情報が取得される（ステップＳ９７４）。第２ＥＣＣを計算するための物理アドレス情報は、第２ＥＣＣ管理テーブル３４２で管理されている、データ数、第２ＥＣＣ物理アドレス、第０乃至第３番目データの物理アドレスである。物理アドレス情報は、ステップＳ９７３において取得された第２ＥＣＣインデックスと一致する値を有する第２ＥＣＣ管理テーブル３４２のエントリから取得される。
【０１０６】
例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているときを想定する。論理アドレス「ｘj」が処理対象である場合に取得される物理アドレス情報は、第２ＥＣＣインデックスが「ｚj0」となる第２ＥＣＣ管理テーブル３４２のエントリから取得される。すなわち、データ数は「４」、第２ＥＣＣ物理アドレスは「ｅj0」、第０番目データの物理アドレスは「ｙj0」、第１番目データの物理アドレスは「ｙj1」、第２番目データの物理アドレスは「ｙj2」、第３番目データの物理アドレスは「ｙj3」となる。
【０１０７】
そして、ステップＳ９７４において取得された第０乃至第３番目データの物理アドレスの中でデータ保持特性強化解除となる論理アドレスが決定される（ステップＳ９７５）。すなわち、取得された第０乃至第３番目データの物理アドレスの中で、データ保持特性強化解除コマンドで指定された論理アドレスに対応する物理アドレスに該当するものがあれば、今回同時にデータ保持特性強化解除を行うものとして決定される。
【０１０８】
例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているとき、データ保持特性強化解除コマンドで、論理アドレス「ｘj」から３論理アドレスが範囲として指定された場合を想定する。このとき、ステップＳ９７２において処理対象の論理アドレスが「ｘj」に決定されると、ステップＳ９７５では、論理アドレス「ｘj+1」と「ｘj+2」が、論理アドレス「ｘj」の処理と同時にデータ保持特性の解除を実行する論理アドレスとして決定される。
【０１０９】
そして、ステップＳ９７４において取得された物理アドレス情報に基づいて、第２ＥＣＣ、データおよび第１ＥＣＣが不揮発性記憶領域３０３から読み出される（ステップＳ９７６）。例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているときを想定する。ステップＳ９７５においてデータ保持特性強化解除対象の論理アドレス「ｘj」、「ｘj+1」、「ｘj+2」が決定された場合、物理アドレス「ｅi0」から第２ＥＣＣが読み出される。また、物理アドレス「ｙj0」乃至「ｙj3」から第０乃至第３番目データが読み出される。このとき、第０乃至第３番目データのそれぞれは、データおよび第１ＥＣＣからなる。
【０１１０】
そして、ステップＳ９７６において読み出された第２ＥＣＣを用いて、データおよび第１ＥＣＣのエラー検出処理が行われ、その成否によって処理が分岐する（ステップＳ９７７）。すなわち、エラーが検出された場合にはステップＳ９７８以降の処理が行われ、エラーが検出されなかった場合にはステップＳ９８１以降の処理が行われる。なお、ステップＳ９７４において取得されたデータ数が「４」より小さい場合、足りないデータについては不揮発性メモリ３００の初期値によってパディングしてエラー検出が行われる。
【０１１１】
エラーが検出された場合（ステップＳ９７７：Ｙｅｓ）、ステップＳ９７６において読み出された第２ＥＣＣを用いてエラー訂正処理が行われ、その成否によって処理が分岐する（ステップＳ９７８）。すなわち、全てのデータおよび第１ＥＣＣについてエラー訂正に成功した場合にはステップＳ９７９以降の処理が行われ、エラー訂正の失敗が生じた場合にはステップＳ９８９の処理が行われる。なお、ステップＳ９７４において取得されたデータ数が「４」より小さい場合、足りないデータについては不揮発性メモリ３００の初期値によってパディングしてエラー検出が行われる。
【０１１２】
第２ＥＣＣを用いたエラー訂正に成功した場合（ステップＳ９７８：Ｙｅｓ）、エラーが発生したデータおよび第１ＥＣＣを、エラー訂正されたデータおよび第１ＥＣＣに書き直す（ステップＳ９７９）。この処理で書き直されるデータおよび第１ＥＣＣはデータ保持特性の強化を解除する論理アドレスであるか否かにかかわらず、ステップＳ９７８において訂正されたデータおよび第１ＥＣＣが書直し対象となる。
【０１１３】
第２ＥＣＣを用いてもエラー訂正に成功しなかった場合（ステップＳ９７８：Ｎｏ）、データ保持特性強化解除コマンドのエラー終了がホストコンピュータ１００に通知される（ステップＳ９８９）。このホストコンピュータ１００への通知後、そのデータ保持特性強化解除コマンドはエラー終了となる。
【０１１４】
ステップＳ９７７（Ｎｏ）またはＳ９７９の処理の後、第２ＥＣＣを再計算する必要があるか否かが判断される（ステップＳ９８１）。すなわち、Ｓ９７４において取得された第２ＥＣＣ物理アドレス情報に、ステップＳ９７５において決定されたデータ保持特性強化解除対象の論理アドレス以外の論理アドレスに対応する物理アドレスが存在するかが判断される。データ保持特性強化解除対象以外の物理アドレスが存在する場合には（ステップＳ９８１：Ｙｅｓ）、第２ＥＣＣが再計算され（ステップＳ９８２）、不揮発性記憶領域３０３の第２ＥＣＣ記憶領域３３０に記憶される（ステップＳ９８３）。この場合、ステップＳ９７７においてエラーが検出されていた場合には、エラー訂正後のデータおよび第１ＥＣＣから第２ＥＣＣが計算される。エラーが検出されていなければ読み出されたままのデータおよび第１ＥＣＣから第２ＥＣＣが計算される。
【０１１５】
例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているときを想定する。このとき、ステップＳ９７５においてデータ保持特性強化解除対象の論理アドレス「ｘj」、「ｘj+1」、「ｘj+2」が決定された場合、データ保持特性強化解除対象となっていない論理アドレスは「ｘj+3」である。ステップＳ９８２において第２ＥＣＣを算出するために用いられるデータは、物理アドレス「ｙj3」から読み出され、エラー訂正済みのデータおよび第１ＥＣＣとなる。第２ＥＣＣの算出に必要なデータサイズに満たない部分は、メモリの初期値でパディングする。なお、ステップＳ９８３において第２ＥＣＣが記憶される物理アドレスは、ステップＳ９７４において取得された第２ＥＣＣ物理アドレスである。
【０１１６】
ステップＳ９８１（Ｎｏ）またはＳ９８３の処理の後、ステップＳ９７４において取得された第２ＥＣＣ物理アドレス情報を更新し、第２ＥＣＣ管理テーブル３４２を不揮発性記憶領域３０３のテーブル記憶領域３４０に記憶する（ステップＳ９８４）。例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているときを想定する。このとき、ステップＳ９７５においてデータ保持特性強化解除対象の論理アドレス「ｘj」、「ｘj+1」、「ｘj+2」が決定された場合、第２ＥＣＣ物理アドレス情報のデータ数は「１」、第０番目データの物理アドレスは「ｙj3」に更新される。第１乃至第３番目データの物理アドレスは、データ数は「１」であるため、無効な値として扱われる。この例による更新後の第２ＥＣＣ管理テーブル３４２の内容を図１４の上部に示す。
【０１１７】
そして、アドレス変換テーブル３４１において、データ保持特性強化を解除する論理アドレスの第２ＥＣＣフラグが「Ｆａｌｓｅ」に設定される（ステップＳ９８５）。例えば、アドレス変換テーブル３４１が図１０に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１２に示す値を保持しているときを想定する。このとき、ステップＳ９７５においてデータ保持特性強化解除対象の論理アドレス「ｘj」、「ｘj+1」、「ｘj+2」が決定された場合、論理アドレス「ｘj」、「ｘj+1」、「ｘj+2」に対応する第２ＥＣＣフラグが「Ｆａｌｓｅ」に設定される。第２ＥＣＣフラグが「Ｆａｌｓｅ」に設定された論理アドレスの第２ＥＣＣインデックスは無効な値として扱われる。この例による更新後のアドレス変換テーブル３４１を図１５のエントリ７４０、７４１および７４２に示す。
【０１１８】
そして、ステップＳ９７１において分割した処理が全て終了したかが判定され（ステップＳ９８６）、処理が残っている場合にはステップＳ９７２以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には（ステップＳ９８６：Ｎｏ）、データ保持特性強化解除コマンドが正常に実行された旨がホストコンピュータ１００に通知される（ステップＳ９８７）。ホストコンピュータ１００への通知が終了した後は、そのデータ保持特性強化解除コマンドの処理は正常終了となる。
【０１１９】
［実施の形態の効果］
このように、本技術の実施の形態によれば、第２ＥＣＣ管理テーブル３４２において第２ＥＣＣおよびその対象データの物理アドレスを管理することにより、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することができる。
【０１２０】
＜２．変形例＞
［上書きを伴わない不揮発性メモリへの適用］
上述の実施の形態では、不揮発性メモリ３００においてデータの上書きが可能であることを想定して説明したが、例えばＮＡＮＤフラッシュメモリのように上書きができないメモリも存在する。上書きができないメモリの場合、不揮発性メモリにデータを書き込む前にデータの消去処理を実行する必要がある。これ以外の点については上述の実施の形態と同様の手法を採ることができ、不連続なアドレスに書き込まれたデータと、それに付加された第２ＥＣＣの物理アドレスの管理をすることができる。
【０１２１】
［複数の第２ＥＣＣを同一物理アドレスに記憶する場合］
上述の実施の形態では、１つの物理アドレスの領域には１つの第２ＥＣＣを記憶していたが、これに限定されず複数の第２ＥＣＣを同一物理アドレスに記憶することも可能である。この場合、図１６に示すように、第２ＥＣＣ管理テーブル３４２において、新たに第２ＥＣＣ物理アドレス内オフセットを保持する。そして、この第２ＥＣＣ物理アドレス内オフセットによって、そのエントリの第２ＥＣＣが第２ＥＣＣ物理アドレスにおけるどの位置に記憶されているかを示す。これにより、複数の第２ＥＣＣを同一物理アドレスに記憶するように構成することができる。なお、各データを論理アドレスにより管理を行えば第２ＥＣＣ物理アドレス内オフセットを導入する必要はないが、この例によれば、物理アドレスによって管理することにより個々のアドレス変換を不要にして、高速にアクセスを行うことができるという利点がある。
【０１２２】
なお、一般的には、不揮発性記憶領域３０３の単位データ幅をＮバイト、付与される第２ＥＣＣのサイズをＣバイトとすると、ｎ×Ｃ≦Ｎを満たす範囲でのｎが同一物理アドレスにおける第２ＥＣＣの数である。このとき、第２ＥＣＣ物理アドレス内オフセットｉは、次式を満たす整数である。
０≦ｉ≦（ｎ−１）
【０１２３】
［論理アドレス上で関連性のないデータと組み合わせて第２ＥＣＣを生成する場合］
上述の実施の形態では、論理アドレス空間において連続する複数のデータを連結して第２ＥＣＣを生成していたが、これに限定されず論理アドレス上で関連性のないデータと組み合わせて第２ＥＣＣを生成してもよい。この場合、データ保持特性強化処理の際の空きエントリの検索方法が影響を受ける。すなわち、上述の実施の形態では第２ＥＣＣを記憶する物理アドレスを決定する際にステップＳ９５６において空きエントリを検索していたが、この場合には対象データの物理アドレスに１つ以上の空きがあるエントリを検索すればよい。
【０１２４】
例えば、アドレス変換テーブル３４１が図１７に示す値を保持し、第２ＥＣＣ管理テーブル３４２が図１８に示す値を保持しているときに、データ保持特性強化コマンドで先頭論理アドレスとして「ｘj」、データサイズとして「５」が指定されたことを想定する。このとき、論理アドレス「ｘj」、「ｘj＋１」、「ｘj＋２」、「ｘj＋３」については、上述の実施の形態と同様の手法によりデータ保持特性の強化処理が行われる。そして、論理アドレス「ｘj＋４」については、ステップＳ９５６において対象データの物理アドレスに１つ以上の空きがあるエントリが検索される。つまり、データ数が「３」以下のエントリを検索すればよい。この場合、図１８の第２ＥＣＣ管理テーブル３４２であれば、第２ＥＣＣインデックス「ｚh0」のエントリも検索条件に適合する。
【０１２５】
また、ステップＳ９５８の処理では、論理アドレス「ｘj＋４」の第２ＥＣＣを算出するときに、図１８に示す物理アドレス「ｙh0」に記憶されているデータと第１ＥＣＣを読み出す。そして、論理アドレス「ｘj＋４」に対応する物理アドレス「ｙj4＋４」から読み出してエラー訂正をしたデータおよび第１ＥＣＣを連結させて、第２ＥＣＣの計算を実行する。
【０１２６】
このようにして更新された後のアドレス変換テーブル３４１の例を図１９に、第２ＥＣＣ管理テーブル３４２の例を図２０にそれぞれ示す。
【０１２７】
［アクセス時刻の経過を契機としてデータ保持特性強化を行う場合］
上述の実施の形態では、データ保持特性の強化およびその解除をホストコンピュータ１００からのコマンドにより実行していたが、データ保持特性強化等の契機はこれに限定されない。例えば、メモリコントローラ２００内にタイマーを設け、メモリコントローラ２００が自発的にデータ保持特性強化やその解除を行ってもよい。この場合、ホストコンピュータ１００からのリードコマンドやライトコマンドによってアクセスされた論理アドレスごとに、最後にアクセスされた時刻（最終アクセス時刻）を管理する。最終アクセス時刻は、リードコマンドまたはライトコマンドの実行により更新される。
【０１２８】
図２１に、最終アクセス時刻をパラメータとして有するアドレス変換テーブル３４１の例を示す。最終アクセス時刻から経過した時間が予め定められた時間を超えていて、かつ、第２ＥＣＣフラグが「Ｆａｌｓｅ」である場合には、メモリコントローラ２００は自発的にデータ保持特性強化処理を実行する。また、最終アクセス時刻から経過した時間が予め定められた時間を超えておらず、かつ、第２ＥＣＣフラグが「Ｔｒｕｅ」である場合には、コントローラは自発的にデータ保持特性強化解除処理を実行するようにしてもよい。
【０１２９】
［１つの物理アドレスが示す領域に複数の論理アドレスが対応する場合］
上述の実施の形態では、１物理アドレスで指定される領域に対して１論理アドレスで指定されるサイズのデータを記憶していたが、これに限定されない。例えば、１物理アドレスで指定される領域に対して複数の論理アドレスで指定されるサイズのデータを記憶するようにしてもよい。１物理アドレスで指定される領域に対して複数の論理アドレスで指定されるサイズのデータを記憶可能なメモリに、ｍ組のデータおよび第１ＥＣＣを記憶した例を図２２に示す。
【０１３０】
この場合、データおよび第１ＥＣＣの記憶位置を特定するために、物理アドレスだけではなく、物理アドレス内オフセットが必要になる。この物理アドレス内オフセットを導入した場合のアドレス変換テーブル３４１の例を図２３に、第２ＥＣＣ管理テーブル３４２の例を図２４にそれぞれ示す。
【０１３１】
なお、この例は、不揮発性メモリとして、特に、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリに適用するのが好適である。フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。また、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）に適用することも可能である。
【０１３２】
［ＮＶＭ  Ｅｘｐｒｅｓｓへの適用］
上述の実施の形態の応用例として、「ＮＶＭ  Ｅｘｐｒｅｓｓ」への適用例について説明する。「ＮＶＭ  Ｅｘｐｒｅｓｓ」とは、ＮＶＭＨＣＩワーキンググループにより策定された、フラッシュメモリを利用したＳＳＤ（Solid State Drive）のためのインターフェースである。
【０１３３】
まず、Dataset Management Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"である場合、データ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"である場合、データ保持特性強化の解除を行う。なお、このDataset Management Commandは、記録したデータをデバイスが最適化するためのコマンドである。
【０１３４】
また、Read Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"の場合、リード処理実行後にデータ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"の場合、リード処理実行後にデータ保持特性強化の解除処理を行う。
【０１３５】
また、Write Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"の場合、ライト処理実行後にデータ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"の場合、ライト処理実行後にデータ保持特性強化の解除処理を行う。
【０１３６】
これにより、本技術の実施の形態を「ＮＶＭ  Ｅｘｐｒｅｓｓ」に適用することができる。
【０１３７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１３９】
なお、本技術は以下のような構成もとることができる。
（１）データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを前記記憶部に記憶する場合において、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
（２）前記所定の複数の単位データは前記記憶部において非連続な物理アドレスに記憶される前記（１）に記載の記憶制御装置。
（３）前記アドレス管理部は、それぞれの論理アドレスに対応する前記第２のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、
前記エラー訂正部は、前記エラー訂正コードフラグが前記第２のエラー訂正コードが記憶されている旨を示す場合のみ前記エラー訂正を行う
前記（１）または（２）に記載の記憶制御装置。
（４）前記エラー訂正コード管理部は、前記所定の複数の単位データの結合順序を規定し、
前記エラー訂正部は、前記結合順序に従って前記所定の複数の単位データを結合して前記エラー訂正を行う前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第２のエラー訂正コードの前記記憶部における物理アドレスを保持し、
前記エラー訂正部は、前記第２のエラー訂正コードの前記物理アドレスに従って前記記憶部から前記第２のエラー訂正コードを取得する
前記（１）から（４）のいずれかに記載の記憶制御装置。
（６）前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第２のエラー訂正コードの前記記憶部における物理アドレス内オフセットをさらに保持し、
前記エラー訂正部は、前記第２のエラー訂正コードの前記物理アドレスおよび前記物理アドレス内オフセットに従って前記記憶部から前記第２のエラー訂正コードを取得する
前記（５）に記載の記憶制御装置。
（７）データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて前記第２のエラー訂正コードを生成するエラー訂正コード生成部と、
前記データ保持特性強化コマンドを受け取ると前記指定された論理アドレスの範囲に記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
前記（７）に記載の記憶制御装置。
（９）前記エラー訂正コード管理部は、エントリ毎に前記第２のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数がゼロを示すエントリを対象とする
前記（７）に記載の記憶制御装置。
（１０）前記エラー訂正コード管理部は、エントリ毎に前記第２のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数が所定数に満たないエントリを対象とする
前記（７）に記載の記憶制御装置。
（１１）前記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて前記第２のエラー訂正コードを生成するエラー訂正コード生成部と、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する前記（１）から（１０）のいずれかに記載の記憶制御装置。
（１２）前記エントリ管理部は、前記最終アクセス時刻から所定期間経過するまでの間に前記第２のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する前記第２のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
前記（１１）に記載の記憶制御装置。
（１３）データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
（１４）前記単位データ記憶部および前記エラー訂正コード記憶部は不揮発性メモリである前記（１３）に記載の記憶装置。
（１５）データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
（１６）データおよびそのデータの第１のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、前記複数の単位データにおける所定の複数の単位データに対応してその第２のエラー訂正コードを記憶するエラー訂正コード記憶部と、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第２のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部とを備える記憶装置における記憶制御方法であって、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得するエントリ取得手順と、
前記取得されたエントリにおいて管理される前記所定の複数の単位データおよび前記第２のエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【符号の説明】
【０１４０】
１００  ホストコンピュータ
２００  メモリコントローラ
２０１  ホストインターフェース
２０３  メモリインターフェース
２１０  第１ＥＣＣ生成部
２２０  第２ＥＣＣ生成部
２３０  テーブル管理部
２４０  データライト処理部
２５０  データリード処理部
２６０  第１ＥＣＣ訂正部
２７０  第２ＥＣＣ訂正部
２８０  ＥＣＣ切替処理部
３００  不揮発性メモリ
３０２  外部インターフェース
３０３  不揮発性記憶領域
３１０  データ記憶領域
３２０  第１ＥＣＣ記憶領域
３３０  第２ＥＣＣ記憶領域
３４０  テーブル記憶領域
３４１  アドレス変換テーブル
３４２  第２ＥＣＣ管理テーブル
４００  メモリシステム
【図１】
2013114521.tif 000003
【図２】
2013114521.tif 000004
【図３】
2013114521.tif 000005
【図４】
2013114521.tif 000006
【図５】
2013114521.tif 000007
【図６】
2013114521.tif 000008
【図７】
2013114521.tif 000009
【図８】
2013114521.tif 000010
【図９】
2013114521.tif 000011
【図１０】
2013114521.tif 000012
【図１１】
2013114521.tif 000013
【図１２】
2013114521.tif 000014
【図１３】
2013114521.tif 000015
【図１４】
2013114521.tif 000016
【図１５】
2013114521.tif 000017
【図１６】
2013114521.tif 000018
【図１７】
2013114521.tif 000019
【図１８】
2013114521.tif 000020
【図１９】
2013114521.tif 000021
【図２０】
2013114521.tif 000022
【図２１】
2013114521.tif 000023
【図２２】
2013114521.tif 000024
【図２３】
2013114521.tif 000025
【図２４】
2013114521.tif 000026