(57)【特許請求の範囲】
【請求項１】
複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードをメモリの第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを前記メモリの第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記メモリの第３記憶領域に記憶する場合において、前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と
を具備する記憶制御装置。
【請求項２】
前記制御部は、所定のタイミングにおいて前記追記データの各々について追記前の前記第１記憶領域に当該追記データおよび当該追記データの前記第１のエラー訂正コードを上書きし、
前記エラー訂正処理部は、前記所定のタイミングにおいて前記上書きされたデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数から前記第２のエラー訂正コードを生成して当該第２のエラー訂正コードを前記第２記憶領域に記憶する
請求項１記載の記憶制御装置。
【請求項３】
複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、
前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と
を具備する記憶装置。
【請求項４】
前記メモリは、前記第１記憶領域をフラッシュメモリに記憶し、前記第３記憶領域を不揮発性ＲＡＭに記憶する請求項３記載の記憶装置。
【請求項５】
複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、
前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と、
前記メモリに対して前記リード要求または前記ライト要求を発行するホストコンピュータと
を具備する情報処理システム。
【請求項６】
複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードをメモリの第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを前記メモリの第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記メモリの第３記憶領域に記憶する場合において、前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部を備える記憶制御装置における記憶制御方法であって、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当するときには前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する第１の手順と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行う第２の手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。このＤＲＡＭは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistance RAM）などが挙げられる。
【０００３】
このような不揮発性メモリでは、データ保持特性を改善するために、エラー訂正コード（ＥＣＣ：Error Correcting Code）によるエラー検出訂正処理を行うことが一般的となっている。すなわち、書込み時にエラー訂正コードを計算してそのエラー訂正コードをデータとともに不揮発性メモリ上に記録しておいて、読出し時にはデータとエラー訂正コードとを同時に読み出してビットエラーの検出および訂正処理が行われる。近年では、複数種類のエラー訂正コードを組み合わせてエラー訂正能力を強化することも行われている。例えば、標準ＥＣＣと拡張ＥＣＣの２種類のエラー訂正コードを備えたメモリシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０８１７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、２種類のエラー訂正コードを用いることにより、長期保存特性を改善するとともに、エラー訂正コードの増大による影響を抑えている。このような従来技術においては、エラー訂正コードの対象となるデータの一部分にのみ変更が生じた際、エラー訂正コードの対象となるデータ全体を読み出した上でエラー訂正コードを再計算する必要が生じる。特に、エラー訂正コードを複数種類設けた場合には、エラー訂正コードの対象となるデータが大きくなるため、データの読み出しおよびエラー訂正コードの再計算に要する時間が長くなる。したがって、一部のデータを更新するたびにエラー訂正コードの再計算を繰り返すことは著しい性能低下をもたらす要因になり現実的ではない。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、エラー訂正コードの対象となるデータの一部分に変更が生じた際に、エラー訂正コードの再計算を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードをメモリの第１記憶領域に記憶し、上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを上記メモリの第２記憶領域に記憶し、上記複数のデータの何れかに対する追記データおよび当該追記データに対する上記第１のエラー訂正コードを上記メモリの第３記憶領域に記憶する場合において、上記複数のデータの各々について論理アドレスと上記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には上記第１記憶領域および上記第２記憶領域を書き換えることなく上記ライト要求に係るデータを上記追記データとして当該追記データおよび当該追記データに対する上記第１のエラー訂正コードを上記第３記憶領域に追記して当該追記された上記第３記憶領域における物理アドレスを上記アドレス管理部に登録する制御部と、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当する場合には上記第３記憶領域の追記データと当該追記データに対する上記第１のエラー訂正コードとによって上記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当しない場合には上記第１記憶領域におけるデータを含む上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数と上記第２記憶領域の上記第２のエラー訂正コードとによって上記第１記憶領域におけるエラー訂正を行うエラー訂正処理部とを具備する記憶制御装置およびその制御方法である。これにより、第２のエラー訂正コード対象となるデータの一部分が更新される際、第２のエラー訂正コードの再計算を不要にするという作用をもたらす。
【０００８】
また、この第１の側面において、上記制御部は、所定のタイミングにおいて上記追記データの各々について追記前の上記第１記憶領域に当該追記データおよび当該追記データの上記第１のエラー訂正コードを上書きし、上記エラー訂正処理部は、上記所定のタイミングにおいて上記上書きされたデータを含む上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数から上記第２のエラー訂正コードを生成して当該第２のエラー訂正コードを上記第２記憶領域に記憶するようにしてもよい。これにより、追記データを集約させるという作用をもたらす。
【０００９】
また、本技術の第２の側面は、複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、上記複数のデータの何れかに対する追記データおよび当該追記データに対する上記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、上記複数のデータの各々について論理アドレスと上記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には上記第１記憶領域および上記第２記憶領域を書き換えることなく上記ライト要求に係るデータを上記追記データとして当該追記データおよび当該追記データに対する上記第１のエラー訂正コードを上記第３記憶領域に追記して当該追記された上記第３記憶領域における物理アドレスを上記アドレス管理部に登録する制御部と、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当する場合には上記第３記憶領域の追記データと当該追記データに対する上記第１のエラー訂正コードとによって上記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当しない場合には上記第１記憶領域におけるデータを含む上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数と上記第２記憶領域の上記第２のエラー訂正コードとによって上記第１記憶領域におけるエラー訂正を行うエラー訂正処理部とを具備する記憶装置およびその制御方法である。これにより、メモリにおいて第２のエラー訂正コード対象となるデータの一部分が更新される際、第２のエラー訂正コードの再計算を不要にするという作用をもたらす。
【００１０】
また、この第２の側面において、上記メモリは、上記第１記憶領域をフラッシュメモリに記憶し、上記第３記憶領域を不揮発性ＲＡＭに記憶するようにしてもよい。これにより、メモリアクセスを高速化するという作用をもたらす。
【００１１】
また、本技術の第３の側面は、複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、上記複数のデータの何れかに対する追記データおよび当該追記データに対する上記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、上記複数のデータの各々について論理アドレスと上記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には上記第１記憶領域および上記第２記憶領域を書き換えることなく上記ライト要求に係るデータを上記追記データとして当該追記データおよび当該追記データに対する上記第１のエラー訂正コードを上記第３記憶領域に追記して当該追記された上記第３記憶領域における物理アドレスを上記アドレス管理部に登録する制御部と、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当する場合には上記第３記憶領域の追記データと当該追記データに対する上記第１のエラー訂正コードとによって上記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが上記第３記憶領域に該当しない場合には上記第１記憶領域におけるデータを含む上記複数のデータおよび当該複数のデータの各々に対する上記第１のエラー訂正コードの所定数と上記第２記憶領域の上記第２のエラー訂正コードとによって上記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と、上記メモリに対して上記リード要求または上記ライト要求を発行するホストコンピュータとを具備する情報処理システムおよびその制御方法である。これにより、ホストコンピュータの指示によりメモリにおいて第２のエラー訂正コード対象となるデータの一部分が更新される際、第２のエラー訂正コードの再計算を不要にするという作用をもたらす。
【発明の効果】
【００１２】
本技術によれば、エラー訂正コードの対象となるデータの一部分に変更が生じた際に、エラー訂正コードの再計算を抑制することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１３】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態における機能構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリ３００内の記憶領域のパーティション例を示す図である。
【図４】本技術の第１の実施の形態における通常アクセス領域３１０のデータと第２ＥＣＣ格納領域３３０における第２ＥＣＣの格納位置との関係例を示す図である。
【図５】本技術の第１の実施の形態におけるアドレス管理部２２１のアドレス変換テーブル構成例を示す図である。
【図６】本技術の第１の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図７】本技術の第１の実施の形態におけるリード処理の処理手順の一例を示す図である。
【図８】本技術の第１の実施の形態における集約処理の処理手順の一例を示す図である。
【図９】本技術の第２の実施の形態におけるメモリ３００の管理態様の一例を示す図である。
【図１０】本技術の第２の実施の形態におけるアドレス変換テーブル２２２の一構成例を示す図である。
【図１１】本技術の第２の実施の形態における第２ＥＣＣ管理テーブル２２３の一構成例を示す図である。
【図１２】本技術の第２の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図１３】本技術の第２の実施の形態におけるリード処理の処理手順の一例を示す図である。
【図１４】本技術の第２の実施の形態における集約処理の処理手順の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（第２ＥＣＣ格納領域位置を固定した例）
２．第２の実施の形態（第２ＥＣＣ格納領域位置を可変にした例）
３．変形例
【００１５】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリ３００と、メモリ制御部２００とを備える。メモリ制御部２００およびメモリ３００は、メモリシステム４００を構成する。ホストコンピュータ１００は、メモリシステム４００に対してデータのリードまたはライトを要求するリクエストを発行するものである。
【００１６】
メモリ３００は、通常の揮発性メモリ３０３以外に、不揮発性メモリを含む。不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリ３０２と、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）３０１とに大別される。ここで、フラッシュメモリ３０２の代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、ＮＶＲＡＭ３０１の例としては、ＰＣＲＡＭ、ＭＲＡＭ、ＲｅＲＡＭなどが挙げられる。揮発性メモリ３０３は、作業領域として用いられ、また、管理用のデータを格納するためにも用いられる。さらに、揮発性メモリ３０３は、キャッシュとして用いることも可能である。揮発性メモリ３０３は、ＤＲＡＭ、ＳＲＡＭなどにより実現することができる。揮発性メモリ３０３に格納されるデータは、電源断に備えて、必要に応じてＮＶＲＡＭ３０１またはフラッシュメモリ３０２に保持しておいて、次に電源投入された際に再利用されるようにしてもよい。
【００１７】
メモリ制御部２００は、プロセッサ２１０と、内蔵メモリ２２０と、第１ＥＣＣ処理部２３０と、第２ＥＣＣ処理部２４０と、周辺回路２５０と、ホストインターフェース２０１と、メモリインターフェース２９１乃至２９３とを備える。これらはバス２８０により相互に接続される。
【００１８】
プロセッサ２１０は、ホストコンピュータ１００からの制御コマンドを解釈して実行する処理装置である。このプロセッサ２１０は、内蔵メモリ２２０における記憶領域をプログラム格納領域およびワーク領域としてプログラムを実行する。
【００１９】
内蔵メモリ２２０は、図示しない内蔵ＲＯＭおよび内蔵ＲＡＭを含むメモリである。ログラムは内蔵ＲＯＭに格納しておいてもよく、また、メモリ３００から起動時に内蔵ＲＡＭに転送するようにしてもよい。この内蔵ＲＡＭは、ワーク領域や管理用データなどの一時格納など様々な用途に用いられる。
【００２０】
第１ＥＣＣ処理部２３０は、データの各々に対応して付加されるエラー訂正コード（ＥＣＣ：Error Correcting Code）である第１ＥＣＣの生成およびその第１ＥＣＣを用いたエラー訂正を行うものである。第２ＥＣＣ処理部２４０は、データおよび第１ＥＣＣの組を複数組まとめたデータ群に対応して付加される第２ＥＣＣの生成およびその第１ＥＣＣを用いたエラー訂正を行うものである。これら第１ＥＣＣ処理部２３０および第２ＥＣＣ処理部２４０は、ハードウェアとして実現してもよく、また、プロセッサ２１０においてプログラムを実行することによりソフトウェアとして実現してもよい。
【００２１】
周辺回路２５０は、プロセッサ２１０の周辺回路であり、例えば内蔵タイマーや汎用入出力（ＧＰＩＯ：General Purpose Input/Output）等を含む。
【００２２】
ホストインターフェース２０１は、ホストコンピュータ１００とのやりとりを行うインターフェースである。メモリシステム４００はホストインターフェース２０１を介して接続され、ホストコンピュータ１００から、メモリ３００を制御するための制御コマンドを受信し、この制御コマンドによって制御されてメモリシステムとして動作する。このホストインターフェース２０１としては、例えば、ＳＡＴＡ、ＰＣＩ  Ｅｘｐｒｅｓｓ、ｅＭＭＣ、ＵＳＢなどを利用することができる。
【００２３】
メモリインターフェース２９１は、ＮＶＲＡＭ３０１とのやりとりを行うインターフェースである。メモリインターフェース２９２は、フラッシュメモリ３０２とのやりとりを行うインターフェースである。メモリインターフェース２９３は、揮発性メモリ３０３とのやりとりを行うインターフェースである。
【００２４】
メモリシステム４００は、ライトコマンドによりメモリ３００へのデータの書込みを行い、リードコマンドによりメモリ３００からのデータの読出しを行う。ライトコマンドおよびリードコマンドは、対象データの存在する先頭論理アドレスおよびデータサイズをパラメータとして指定する。メモリシステム４００がライトコマンドのデータを受信すると、このデータに対して第１ＥＣＣが付加され、不揮発性メモリ（ＮＶＲＡＭ３０１またはフラッシュメモリ３０２）に書き込まれる。
【００２５】
第２ＥＣＣの生成および書込みは、書き込まれたデータが一定のサイズに達するか、または、周辺回路２５０における内蔵タイマーを用いて一定時間にアクセスがないデータを検出することにより、ホストコンピュータ１００からの指示とは独立に行ってもよい。または、データ保持特性強化コマンドなどのホストコンピュータ１００からの指示に従って第２ＥＣＣを生成し、不揮発性メモリに書込みを行うようにしてもよい。
【００２６】
第２ＥＣＣを適用するデータは、物理アドレスの連続した複数のデータでもよく、物理アドレスが連続していない複数のデータであってもよい。以下において、第１の実施の形態では物理アドレスの連続したケースを想定し、第２の実施の形態では物理アドレスが連続していないケースを想定する。
【００２７】
図２は、本技術の実施の形態における機能構成例を示す図である。ここでは、上述の通り、ホストコンピュータ１００とメモリ３００とをメモリ制御部２００が接続する様子を示している。そして、メモリ制御部２００の機能として、制御部２１１と、アドレス管理部２２１と、エラー訂正処理部２３４とが示されている。
【００２８】
アドレス管理部２２１は、ホストコンピュータ１００において使用されるメモリ３００の論理アドレスと、メモリ３００における物理アドレスとの対応関係を管理するものである。また、このアドレス管理部２２１は、その論理アドレスに含まれるデータについて第２ＥＣＣが生成されているか否かを示す第２ＥＣＣフラグをさらに管理する。また、このアドレス管理部２２１は、その論理アドレスに含まれるデータについて追記が行われた場合の追記前の物理アドレスをさらに管理する。このアドレス管理部２２１は、例えば内蔵メモリ２２０にアドレス変換テーブルとして保持される。
【００２９】
エラー訂正処理部２３４は、メモリ３００に記憶されるデータについて、エラー訂正コードを生成し、または、エラー訂正コードに基づいてエラー訂正を行うものである。すなわち、エラー訂正処理部２３４は、ライト時にはライトデータの第１ＥＣＣを生成するとともに、そのライトデータを含む複数のデータについて第２ＥＣＣを生成する。また、エラー訂正処理部２３４は、リード時にはリードデータとその第１ＥＣＣとによってエラー訂正を行い、訂正に失敗した場合にはそのリードデータを含む複数のデータとその第２ＥＣＣとによってエラー訂正を行う。ただし、追記を伴う際には後述するように例外的な処理内容になる。このエラー訂正処理部２３４は、第１ＥＣＣ処理部２３０および第２ＥＣＣ処理部２４０に相当する。
【００３０】
制御部２１１は、ホストコンピュータ１００とメモリ３００とのやりとりを制御するものである。すなわち、制御部２１１は、ホストコンピュータ１００からのリード要求に従ってメモリ３００からデータを読み出して、ホストコンピュータ１００に返送する。また、制御部２１１は、ホストコンピュータ１００からのライト要求に従ってメモリ３００にホストコンピュータ１００からのライトデータを書き込む。この制御部２１１は、リードまたはライト動作の際に、アドレス管理部２２１のアドレス変換テーブルを参照して論理アドレスから物理アドレスへの変換処理を行う。この制御部２１１は、プロセッサ２１０の機能として実現することを想定するが、これに限定されるものではなくハードウェア回路により実現してもよい。
【００３１】
［メモリ３００内の記憶領域］
図３は、本技術の第１の実施の形態におけるメモリ３００内の記憶領域のパーティション例を示す図である。メモリ３００内の記憶領域は、通常アクセス領域３１０と、追記領域３２０と、第２ＥＣＣ格納領域３３０の３つの領域に大別される。
【００３２】
通常アクセス領域３１０は、ホストコンピュータ１００から直接アクセス対象となる通常のデータ領域である。この通常アクセス領域３１０では、例えば３２バイトのデータに対して、２バイトの第１ＥＣＣが付加される。データと第１ＥＣＣは物理的に隣接して記憶してもよく、また、それぞれ離れた位置に記憶してもよい。この例では、１つのデータとその第１ＥＣＣをまとめたものをＮバイトの単位データとしており、単位データを４つまとめた４Ｎバイトデータを第２ＥＣＣの生成単位としている。ただし、これに限定されず、第２ＥＣＣの生成単位は単位データの整数倍であればよい。なお、通常アクセス領域３１０は、特許請求の範囲に記載の第１記憶領域の一例である。
【００３３】
追記領域３２０は、通常アクセス領域３１０のデータに対して上書きを行わずに、追記データとして別途記憶しておくための領域である。この追記領域３２０においてもデータと第１ＥＣＣは物理的に隣接して記憶してもよく、また、それぞれ離れた位置に記憶してもよい。この例では、１つの追記データに対して第１ＥＣＣが付加され、Ｎバイトデータとして記憶されるものとしている。この追記領域３２０に追記が行われると、アドレス管理部２２１の物理アドレスはこの追記領域３２０のアドレスを示すようになる。なお、追記領域３２０は、特許請求の範囲に記載の第３記憶領域の一例である。
【００３４】
第２ＥＣＣ格納領域３３０は、通常アクセス領域３１０に記憶されるデータに対応する第２ＥＣＣを格納する記憶領域である。この例では、通常アクセス領域３１０の４Ｎバイトデータに対してＮバイトの第２ＥＣＣが生成されて、この第２ＥＣＣ格納領域３３０に格納されるものとしている。なお、第２ＥＣＣ格納領域３３０は、特許請求の範囲に記載の第２記憶領域の一例である。
【００３５】
追記領域３２０および第２ＥＣＣ格納領域３３０は、通常アクセス領域３１０と同一種類のメモリに格納してもよいが、後述する集約処理をより高速に行うため、別のタイプのメモリに格納してもよい。組合せとしては、例えば、通常アクセス領域３１０をフラッシュメモリ３０２へ、追記領域３２０および第２ＥＣＣ格納領域３３０はより高速なＮＶＲＡＭ３０１へ格納することが考えられる。
【００３６】
図４は、本技術の第１の実施の形態における通常アクセス領域３１０のデータと第２ＥＣＣ格納領域３３０における第２ＥＣＣの格納位置との関係例を示す図である。ＮＶＲＡＭ３０１またはフラッシュメモリ３０２の通常アクセス領域３１０は、上述のように、例えば３４バイトを単位データとしてデータのリードおよびライトが可能であり、３４バイト毎に物理アドレスが割り当てられているものとする。
【００３７】
３４バイトの単位データは、例えば３２バイトのデータ３１１と、そのデータの第１ＥＣＣ３１２とからなる。すなわち、通常アクセス領域３１０における３２バイトのデータに対して２バイトの第１ＥＣＣが付加される。なお、一般的には、通常アクセス領域３１０の単位データ幅をＮバイト、データサイズをＡバイト、付与される第１ＥＣＣのサイズをＢバイトとすると、次式が成り立つ。
Ａ＋Ｂ ≦ Ｎ
【００３８】
さらに、例えば４つの単位データに対して３４バイトの第２ＥＣＣ３３１を付与することを想定する。この第２ＥＣＣは第２ＥＣＣ格納領域３３０に記憶される。なお、一般的には、付与される第２ＥＣＣのサイズをＣバイトとすると、次式が成り立つ。
Ｃ ≦ Ｎ
【００３９】
この第１の実施の形態では、第２ＥＣＣ格納領域３３０における第２ＥＣＣ３３１の格納位置は、通常アクセス領域３１０のデータの物理アドレスから一意に固定されることを想定する。例えば、物理アドレスの２進数表記による末尾２ビットが「００」、「０１」、「１０」、「１１」であり、他の物理アドレス部分が一致する４つの単位データ同士が１つの第２ＥＣＣに対応する。そして、物理アドレスの末尾２ビットを除いた部分をオフセットとして、第２ＥＣＣ格納領域３３０の先頭からオフセットを加算した位置がその第２ＥＣＣ３３１の格納位置になる。すなわち、通常アクセス領域３１０のデータの物理アドレスから、第２ＥＣＣ格納領域３３０における第２ＥＣＣ３３１の格納位置が、一意に固定される。
【００４０】
［アドレス変換テーブル］
図５は、本技術の第１の実施の形態におけるアドレス管理部２２１のアドレス変換テーブル構成例を示す図である。
【００４１】
アドレス管理部２２１は、単位データの各々について、論理アドレスと、物理アドレスと、第２ＥＣＣフラグと、旧物理アドレスとを対応付けて記憶している。論理アドレスは、ホストコンピュータ１００において使用される論理アドレスである。物理アドレスは、メモリ３００における単位データの物理アドレスである。
【００４２】
第２ＥＣＣフラグは、単位データに対応する第２ＥＣＣが第２ＥＣＣ格納領域３３０に格納されているか否かを示すフラグである。例えば、第２ＥＣＣが格納されている場合には「ｔｒｕｅ」を、格納されていない場合には「ｆａｌｓｅ」を示す。第２ＥＣＣが格納される場合、第２ＥＣＣ格納領域３３０における第２ＥＣＣ３３１の格納位置は、上述のように通常アクセス領域３１０のデータの物理アドレスから一意に固定される
【００４３】
旧物理アドレスは、論理アドレスに対応するデータが追記領域３２０に追記されている場合に、追記前のデータの通常アクセス領域３１０における物理アドレスを示すものである。これにより、追記前の単位データの記憶位置を特定して、第２ＥＣＣの再生成に利用することができる。
【００４４】
［ライト処理の処理手順］
図６は、本技術の第１の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００からライトコマンドを受け取ると、メモリ制御部２００はライト処理を開始する。ライトコマンドはライト対象の論理アドレスを含む。また、このライトコマンドはライトデータを伴う。エラー訂正処理部２３４は、ライトデータに対する第１ＥＣＣを生成する（ステップＳ９１１）。
【００４５】
制御部２１１は、ライトコマンドの論理アドレスに基づいてアドレス管理部２２１のアドレス変換テーブルを参照し、アドレス変換情報を取得する（ステップＳ９１２）。このアドレス変換情報は、図５により説明した、論理アドレス、物理アドレス、第２ＥＣＣフラグおよび旧物理アドレスからなる情報である。ここで、第２ＥＣＣフラグが「ｆａｌｓｅ」（すなわち、第２ＥＣＣが付与されていない）を示す場合（ステップＳ９１３：Ｎｏ）、通常アクセス領域３１０にライトデータおよび第１ＥＣＣを書き込む（ステップＳ９１４）。このとき、通常アクセス領域３１０が、例えばＲｅＲＡＭ、ＰＣＲＡＭ、ＭＲＡＭのように上書きが可能な不揮発性メモリであれば、更新前のデータの領域に対して上書きを行うことができる。一方、通常アクセス領域３１０が、ＮＡＮＤフラッシュのように上書きができないタイプの不揮発性メモリであれば、追記領域３２０に追記してもよい。追記を行った場合には、アドレス管理部２２１に追記先の物理アドレスを登録して更新する（ステップＳ９１９）。
【００４６】
第２ＥＣＣフラグが「ｔｒｕｅ」（すなわち、第２ＥＣＣが付与されている）を示す場合（ステップＳ９１３：Ｙｅｓ）、ライト処理後に第２ＥＣＣが利用できなくなることを防ぐために、追記領域３２０に追記を行う。その際、アドレス変換情報において物理アドレスが追記領域３２０を示している場合には（ステップＳ９１５：Ｙｅｓ）、既に追記が行われていることになるため、その追記領域３２０の物理アドレスに上書きする（ステップＳ９１６）。ただし、このとき追記領域３２０の他の領域にさらに追記を行うようにしてもよく、その場合にはアドレス管理部２２１に追記先の物理アドレスを登録して更新する（ステップＳ９１９）。
【００４７】
アドレス変換情報において物理アドレスが追記領域３２０を示していない場合には（ステップＳ９１５：Ｎｏ）、追記領域３２０に新たに追記を行う（ステップＳ９１７）。そして、アドレス管理部２２１に追記先の物理アドレスを登録して更新する（ステップＳ９１９）。
【００４８】
このように、第２ＥＣＣ格納領域３３０における第２ＥＣＣを引き続き使用するために、通常アクセス領域３１０に古いデータを残すとともに、新しいデータを追記領域３２０に追記する。追記部分は第１ＥＣＣしか適用されず、第２ＥＣＣは付与されないが、それ以外の部分は消去せず残したデータととともに第２ＥＣＣが適用可能である。追記部分は他の部分に較べて比較的新しく書き加えられた部分であり、データ保持特性は比較的良好であるため、問題が生じる可能性は低いと考えられる。
【００４９】
［リード処理の処理手順］
図７は、本技術の第１の実施の形態におけるリード処理の処理手順の一例を示す図である。ホストコンピュータ１００からリードコマンドを受け取ると、メモリ制御部２００はリード処理を開始する。リードコマンドはリード対象の論理アドレスを含む。
【００５０】
制御部２１１は、リードコマンドの論理アドレスに基づいてアドレス管理部２２１のアドレス変換テーブルを参照し、アドレス変換情報を取得する（ステップＳ９２１）。このアドレス変換情報は、図５により説明した、論理アドレス、物理アドレス、第２ＥＣＣフラグおよび旧物理アドレスからなる情報である。
【００５１】
そして、制御部２１１は、アドレス変換情報の物理アドレスによってメモリ３００から単位データを読み出す（ステップＳ９２２）。この単位データにはリード対象のデータおよびその第１ＥＣＣが含まれる。
【００５２】
読み出されたデータおよび第１ＥＣＣによってエラー検出および訂正が行われ、エラーが検出されない、または、検出されたエラーの訂正に成功した場合（ステップＳ９２３：Ｙｅｓ）、このリード処理を正常終了する。一方、第１ＥＣＣによって検出されたエラーの訂正に失敗した場合には（ステップＳ９２３：Ｎｏ）、第２ＥＣＣによるエラー訂正が試みられる。このとき、アドレス変換情報の第２ＥＣＣフラグが「ｆａｌｓｅ」を示している場合（ステップＳ９２４：Ｎｏ）、第２ＥＣＣによるエラー訂正を行うことができないため、このリード処理をエラー終了する。また、第２ＥＣＣフラグが「ｔｒｕｅ」を示している場合でも（ステップＳ９２４：Ｙｅｓ）、アドレス変換情報の物理アドレスが追記領域３２０に該当すれば（ステップＳ９２５：Ｙｅｓ）、第２ＥＣＣを利用することができないため、リード処理をエラー終了する。エラー終了の際には、ホストコンピュータ１００にリードエラーの発生を通知して、処理を中止する。
【００５３】
第２ＥＣＣを利用できる場合、アドレス変換情報の旧物理アドレスから第２ＥＣＣの対象となるデータ群（例えば、上述の４Ｎバイトデータ）および第２ＥＣＣの格納領域が特定される（ステップＳ９２６）。これにより、第２ＥＣＣの対象となるデータ群が通常アクセス領域３１０から読み出され、対応する第２ＥＣＣが第２ＥＣＣ格納領域３３０から読み出される（ステップＳ９２７）。読み出された第２ＥＣＣによってデータ群のエラー訂正が行われ、エラー訂正に成功した場合には（ステップＳ９２８：Ｙｅｓ）、訂正後のデータ群からリード対象データが選択される（ステップＳ９２９）。一方、エラー訂正に失敗した場合には（ステップＳ９２８：Ｎｏ）、リード処理をエラー終了する。
【００５４】
［集約処理の処理手順］
これまでの説明により、追記によるデータの一部更新により、第２ＥＣＣを毎回計算することなく書込みおよび読出しが実現できることを示した。しかし、データの一部更新を繰り返していくと、追記されたデータや第２ＥＣＣを計算するために残したデータ、管理のための情報が蓄積していくことになる。これにより、記憶容量を必要以上に消費することになる。これを抑制するために、あるタイミングで古いデータを破棄し、第２ＥＣＣを再計算し、管理情報を更新するという集約処理を行う必要性が生じる。この集約処理を開始するタイミングについては、以下のように様々なタイミングが考えられる。
【００５５】
まず、ホストコンピュータ１００から、第２ＥＣＣを追加するように明示的な指示があった時が考えられる。これは、ホストコンピュータ１００からの制御コマンドにより実現される。また、追記されたデータの総和が所定のサイズに達した時が考えられる。ここで、所定のサイズとは、メモリシステム４００における固定サイズでもよく、また、ホストコンピュータ１００からパラメータとして指示されたサイズでもよい。また、その他要因も含めて使用しているメモリの総使用量から所定のサイズを動的に変更してもよい。
【００５６】
他のタイミングとしては、追記が行われてから一定時間が経過した時が考えられる。この一定時間は、周辺回路２５０の内蔵タイマー等により検知することができる。また、読出しの際に第１ＥＣＣで訂正不可能となって第２ＥＣＣを用いた訂正を行う必要が生じた時に集約処理を行ってもよい。このように集約処理は様々なタイミングで行うことが考えられる。
【００５７】
図８は、本技術の第１の実施の形態における集約処理の処理手順の一例を示す図である。上述のようなタイミングにおいて集約処理が開始すると、制御部２１１は、アドレス管理部２２１のアドレス変換テーブルを参照して、追記が行われている領域を検索する（ステップＳ９３１）。アドレス管理部２２１において旧物理アドレスが有効な値を示していれば、追記が行われていることを示している。そして、その検索された領域を含む第２ＥＣＣの対象となるデータ群（例えば、上述の４Ｎバイトデータ）とその第２ＥＣＣの格納位置が特定できる。
【００５８】
そして、このようにして特定されたデータ群のうち、追記が行われていない単位データを通常アクセス領域３１０から読み出し、追記された単位データを追記領域３２０から読み出す（ステップＳ９３２）。このとき、単位データについて第１ＥＣＣによるデータのエラー検出が行われ、エラーが検出されない場合またはエラーが検出されても第１ＥＣＣによるエラー訂正に成功した場合には（ステップＳ９３３：Ｙｅｓ）、次のステップＳ９４１に進む。
【００５９】
一方、エラー訂正に失敗した場合には（ステップＳ９３３：Ｎｏ）、第２ＥＣＣによるエラー訂正が試みられる。このとき、アドレス変換情報の第２ＥＣＣフラグが「ｆａｌｓｅ」を示している場合（ステップＳ９３４：Ｎｏ）、第２ＥＣＣによるエラー訂正を行うことができないため、この集約処理をエラー終了する。また、第２ＥＣＣフラグが「ｔｒｕｅ」を示している場合でも（ステップＳ９３４：Ｙｅｓ）、アドレス変換情報の物理アドレスが追記領域３２０に該当すれば（ステップＳ９３５：Ｙｅｓ）、第２ＥＣＣを利用することができないため、集約処理をエラー終了する。エラー終了の際には、ホストコンピュータ１００に集約処理エラーの発生を通知して、処理を中止する。
【００６０】
第２ＥＣＣを利用できる場合、アドレス変換情報の旧物理アドレスから第２ＥＣＣの対象となるデータ群（例えば、上述の４Ｎバイトデータ）および第２ＥＣＣの格納領域が特定される（ステップＳ９３６）。これにより、第２ＥＣＣの対象となるデータ群が通常アクセス領域３１０から読み出され、対応する第２ＥＣＣが第２ＥＣＣ格納領域３３０から読み出される（ステップＳ９３７）。読み出された第２ＥＣＣによってデータ群のエラー訂正が行われ、エラー訂正に成功した場合には（ステップＳ９３８：Ｙｅｓ）、次のステップＳ９４１に進む。一方、エラー訂正に失敗した場合には（ステップＳ９３８：Ｎｏ）、集約処理をエラー終了する。
【００６１】
第１ＥＣＣまたは第２ＥＣＣによるエラー訂正が成功した場合（ステップＳ９３３またはＳ９３８：Ｙｅｓ）、通常アクセス領域３１０の旧データ領域を追記領域３２０の追記データによって上書きする（ステップＳ９４１）。そして、追記領域３２０の追記データは消去または無効化されて、追記領域３２０の使用領域が解放される。また、通常アクセス領域３１０に記憶された新たな第２ＥＣＣの対象となるデータ群により、第２ＥＣＣが再計算されて、第２ＥＣＣ格納領域３３０に上書きされる（ステップＳ９４２）。また、これに伴い、アドレス管理部２２１のアドレス変換テーブルが更新される（ステップＳ９４３）。
【００６２】
このように、本技術の第１の実施の形態によれば、第２ＥＣＣの対象となる通常アクセス領域３１０に記憶されたデータの一部に更新が生じた際に、第２ＥＣＣ格納領域３３０の固定位置に第２ＥＣＣを維持しながら追記領域３２０に追記を行うことができる。これにより、第２ＥＣＣの再計算を不要とし、更新前のデータによりエラー訂正をすることができる。また、追記領域３２０の追記データについては第１ＥＣＣのみを用いることになるが、比較的新しく書き込まれたデータであるため、第２ＥＣＣが必要となるケースは少ないものと考えられる。
【００６３】
＜２．第２の実施の形態＞
［情報処理システムの構成］
図９は、本技術の第２の実施の形態におけるメモリ３００の管理態様の一例を示す図である。第１の実施の形態では第２ＥＣＣの対象となるデータ群と第２ＥＣＣの格納位置とが固定された関係にあることを想定したが、この第２の実施の形態では両者の関係は適宜設定できることを想定する。なお、前提とするメモリシステムの構成については、図１および図２により説明した第１の実施の形態のものと同様である。
【００６４】
この例においても、第１の実施の形態と同様に、データ３１１にそのデータの第１ＥＣＣ３１２を付加したものを単位データとして扱う。通常アクセス領域３１０における単位データの物理アドレスおよび第２ＥＣＣ格納領域３３０における第２ＥＣＣの物理アドレスは、アドレス変換テーブル２２２および第２ＥＣＣ管理テーブル２２３によって管理される。これらアドレス変換テーブル２２２および第２ＥＣＣ管理テーブル２２３は、アドレス管理部２２１に記憶される。
【００６５】
アドレス変換テーブル２２２は、論理アドレスと物理アドレスの対応関係を管理するためのテーブルである。この例では、論理アドレスに対応する第２ＥＣＣ管理テーブル２２３のインデックスを保持している。
【００６６】
第２ＥＣＣ管理テーブル２２３は、第２ＥＣＣを管理するテーブルである。この例では、第２ＥＣＣの物理アドレスと、その第２ＥＣＣに対応する単位データの物理アドレスとをエントリ毎に保持しており、各エントリにはインデックス（第２ＥＣＣインデックス）が付与されている。
【００６７】
［アドレス変換テーブルの構成］
図１０は、本技術の第２の実施の形態におけるアドレス変換テーブル２２２の一構成例を示す図である。このアドレス変換テーブル２２２は、論理アドレスと、物理アドレスと、データフラグと、第２ＥＣＣフラグと、第２ＥＣＣインデックスとを関連付けて保持している。
【００６８】
論理アドレスは、ホストコンピュータ１００において指定されるメモリ３００のアドレスである。物理アドレスは、メモリ３００における物理アドレスである。なお、ここでは、論理アドレスおよび物理アドレスを"０ｘ"で始まる１６進数の記述方法によって示している。
【００６９】
データフラグは、対応する物理アドレスにデータおよび第１ＥＣＣが記憶されているか否を示すフラグである。データフラグが「Ｔｒｕｅ」であればデータおよび第１ＥＣＣが書き込まれていることを示し、「Ｆａｌｓｅ」であればデータおよび第１ＥＣＣが書き込まれていないことを示す。データフラグが「Ｆａｌｓｅ」を示す物理アドレスから読み出されるデータは、メモリの初期値となる。なお、ＮＡＮＤフラッシュの場合、初期値は全てのビットが「１」となる
【００７０】
第２ＥＣＣフラグは、対応する物理アドレスに記憶されているデータに対して第２ＥＣＣが付与されているか否かを示すフラグである。第２ＥＣＣフラグが「Ｔｒｕｅ」であれば第２ＥＣＣが付与されてデータ保持特性が強化されていることを示し、「Ｆａｌｓｅ」であれば第２ＥＣＣが付与されていないことを示す。
【００７１】
第２ＥＣＣインデックスは、第２ＥＣＣフラグが「Ｔｒｕｅ」を示すときに有効な値であり、第２ＥＣＣ管理テーブル２２３の各エントリに付与されている第２ＥＣＣインデックスを保持するものである。この図１０の例では、アドレス変換テーブル２２２のエントリ７１０、７１１、７１２および７１３において、第２ＥＣＣインデックスとして「Ｚi」が保持されている。
【００７２】
［第２ＥＣＣ管理テーブルの構成］
図１１は、本技術の第２の実施の形態における第２ＥＣＣ管理テーブル２２３の一構成例を示す図である。この第２ＥＣＣ管理テーブル２２３は、各エントリにおいて、第２ＥＣＣインデックスと、データ数と、第２ＥＣＣ物理アドレスと、第０乃至第３番目データの物理アドレスが保持されている。
【００７３】
第２ＥＣＣインデックスは、第２ＥＣＣ管理テーブル２２３のエントリを識別するためのインデックスを保持するものである。この第２ＥＣＣインデックスの値はアドレス変換テーブル２２２の対応するエントリに保持され、これによりアドレス変換テーブル２２２と第２ＥＣＣ管理テーブル２２３とが関連付けられる。
【００７４】
データ数は、このエントリに含まれるデータの数を示すものである。
【００７５】
第２ＥＣＣ物理アドレスは、このエントリに含まれるデータの第２ＥＣＣが記憶されている物理アドレスを保持するものである。
【００７６】
第０乃至第３番目データの物理アドレスは、このエントリに含まれるデータの物理アドレスを順番に保持するものである。第０乃至第３番目データの物理アドレスのうち、上述のデータ数によって示される数のデータに対応するもののみが有効である。この例では、第２ＥＣＣインデックスが「００１」のエントリにおいては、データ数が「２」を示しているため、第０および第１番目データの物理アドレスの２つのみが有効である。また、第２ＥＣＣインデックスが「０００」のエントリにおいては、データ数が「０」を示しているため、第０乃至第３番目データの物理アドレスの全てが無効である。
【００７７】
［ライト処理の処理手順］
図１２は、本技術の第２の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００からライトコマンドを受け取ると、メモリ制御部２００はライト処理を開始する。ライトコマンドはライト対象の論理アドレスを含む。また、このライトコマンドはライトデータを伴う。エラー訂正処理部２３４は、ライトデータに対する第１ＥＣＣを生成する（ステップＳ９５１）。
【００７８】
制御部２１１は、ライトコマンドの論理アドレスに基づいてアドレス管理部２２１のアドレス変換テーブル２２２を参照し、アドレス変換情報を取得する（ステップＳ９５２）。このアドレス変換情報は、図１０により説明した、論理アドレス、物理アドレス、データフラグ、第２ＥＣＣフラグおよび第２ＥＣＣインデックスからなる情報である。ここで、第２ＥＣＣフラグが「Ｆａｌｓｅ」（すなわち、第２ＥＣＣが付与されていない）を示す場合（ステップＳ９５３：Ｎｏ）、通常アクセス領域３１０にライトデータおよび第１ＥＣＣを書き込む（ステップＳ９５４）。このとき、通常アクセス領域３１０が、例えばＲｅＲＡＭ、ＰＣＲＡＭ、ＭＲＡＭのように上書きが可能な不揮発性メモリであれば、更新前のデータの領域に対して上書きを行うことができる。一方、通常アクセス領域３１０が、ＮＡＮＤフラッシュのように上書きができないタイプの不揮発性メモリであれば、追記領域３２０に追記してもよい。追記を行った場合には、アドレス変換テーブル２２２に追記先の物理アドレスを登録して更新する（ステップＳ９５９）。
【００７９】
第２ＥＣＣフラグが「Ｔｒｕｅ」（すなわち、第２ＥＣＣが付与されている）を示す場合（ステップＳ９５３：Ｙｅｓ）、新しいデータをその第１ＥＣＣとともにメモリに書き込む（ステップＳ９５７）。その際、上書きが可能な不揮発性メモリに対しても、別の空き領域に追記書込みを行う点が前述の動作とは異なる。ＮＡＮＤフラッシュのように上書きができないタイプの不揮発性メモリに対しては、同様に、既に消去済みの空き領域に対して追記を行う。これは、第２ＥＣＣフラグが付与されている領域は、第２ＥＣＣで訂正を行うため、更新前のデータが必要になるからである。そのため、更新前の古いデータおよびその第１ＥＣＣと第２ＥＣＣは、消去または上書き等を行わずとっておく。
【００８０】
そして、アドレス変換テーブル２２２の物理アドレスを、必要に応じて、新たにデータが追記された物理アドレスに更新する。また、それと同時に、この新しく書き込まれたデータに対する第２ＥＣＣフラグは「Ｆａｌｓｅ」に設定される（ステップＳ９５８）。これは、追記されたデータに対しては第２ＥＣＣが適用されないからである。ただし、第２ＥＣＣインデックスは削除せずにそのまま残す。アドレス変換テーブル２２２は常に最新の物理アドレスを保持するように維持される（ステップＳ９５９）。これにより、第２ＥＣＣフラグが「Ｆａｌｓｅ」であり、かつ、第２ＥＣＣインデックスが存在する、という２つの情報から、後述するような第２ＥＣＣ管理テーブル２２３との矛盾を検出することができるようになる。
【００８１】
これまでの説明で、第２ＥＣＣ管理テーブル２２３には特殊な項目を加えていない。これにより、第２ＥＣＣが適用された通常アクセス領域３１０で更新されなかった残りのデータを読み出す際に第１ＥＣＣでエラー訂正に失敗した場合、この第２ＥＣＣ管理テーブル２２３の情報に基づいてエラー訂正が可能となる。第２ＥＣＣが適用されたデータに対して変更を加えても、この変更により第２ＥＣＣを再計算する必要がない。
【００８２】
後から変更されて追記されたデータに対しては第２ＥＣＣが付与されていないが、このデータは更新されなかった残りのデータより比較的新しく書き込まれたデータであり、第１ＥＣＣのみでも信頼性が十分に担保されるものと考えられる。
【００８３】
なお、例えば、第２ＥＣＣが適用されたデータがＮＡＮＤフラッシュに格納されている場合、追記データをより高速なＲｅＲＡＭに格納すると、集約処理の高速化を図ることができる。
【００８４】
［リード処理の処理手順］
図１３は、本技術の第２の実施の形態におけるリード処理の処理手順の一例を示す図である。ホストコンピュータ１００からリードコマンドを受け取ると、メモリ制御部２００はリード処理を開始する。リードコマンドはリード対象の論理アドレスを含む。
【００８５】
制御部２１１は、リードコマンドの論理アドレスに基づいてアドレス変換テーブル２２２を参照し、アドレス変換情報を取得する（ステップＳ９６１）。このアドレス変換情報は、図１０により説明した、論理アドレス、物理アドレス、データフラグ、第２ＥＣＣフラグおよび第２ＥＣＣインデックスからなる情報である。
【００８６】
そして、制御部２１１は、アドレス変換情報の物理アドレスによってメモリ３００から単位データを読み出す（ステップＳ９６２）。この単位データにはリード対象のデータおよびその第１ＥＣＣが含まれる。
【００８７】
読み出されたデータおよび第１ＥＣＣによってエラー検出および訂正が行われ、エラーが検出されない、または、検出されたエラーの訂正に成功した場合（ステップＳ９６３：Ｙｅｓ）、このリード処理を正常終了する。一方、第１ＥＣＣによって検出されたエラーの訂正に失敗した場合には（ステップＳ９６３：Ｎｏ）、第２ＥＣＣによるエラー訂正が試みられる。このとき、アドレス変換情報の第２ＥＣＣフラグが「Ｆａｌｓｅ」を示している場合（ステップＳ９６４：Ｎｏ）、第２ＥＣＣによるエラー訂正を行うことができないため、このリード処理をエラー終了する。エラー終了の際には、ホストコンピュータ１００にリードエラーの発生を通知して、処理を中止する。
【００８８】
一方、第２ＥＣＣフラグが「Ｔｒｕｅ」を示している場合（ステップＳ９６４：Ｙｅｓ）、第２ＥＣＣインデックスにより指定される第２ＥＣＣ管理テーブル２２３の該当エントリは変更されていない。その変更されていないエントリから管理情報を取得する（ステップＳ９６６）。ここでいう管理情報は、図１１により説明した、データ数と、第２ＥＣＣ物理アドレスと、第０乃至第３番目データの物理アドレスである。この管理情報から第２ＥＣＣの対象となるデータ群（例えば、上述の４Ｎバイトデータ）および第２ＥＣＣの格納領域が特定される。これにより、第２ＥＣＣの対象となるデータ群が通常アクセス領域３１０から読み出され、対応する第２ＥＣＣが第２ＥＣＣ格納領域３３０から読み出される（ステップＳ９６７）。
【００８９】
読み出された第２ＥＣＣによってデータ群のエラー訂正が行われ、エラー訂正に成功した場合には（ステップＳ９６８：Ｙｅｓ）、訂正後のデータ群からリード対象データが選択される（ステップＳ９６９）。一方、エラー訂正に失敗した場合には（ステップＳ９６８：Ｎｏ）、リード処理をエラー終了する。
【００９０】
［集約処理の処理手順］
これまでの説明により、追記によるデータの一部更新により、第２ＥＣＣをその度に計算せずに、書込みおよび読出しが実現できることを示した。しかも、第２ＥＣＣ管理テーブル２２３には特殊な項目を加える必要がなく、使い方を工夫することで効率的な実装が可能となっている。しかし、データの一部更新を繰り返した際に集約処理を行う必要性が生じる点は第１の実施の形態と同様である。また、集約処理を開始するタイミングについても第１の実施の形態と同様である。
【００９１】
図１４は、本技術の第２の実施の形態における集約処理の処理手順の一例を示す図である。集約処理が開始すると、制御部２１１は、アドレス変換テーブル２２２を参照して、追記が行われている領域を検索する（ステップＳ９７１）。アドレス変換テーブル２２２において第２ＥＣＣフラグが「Ｆａｌｓｅ」であり、かつ、第２ＥＣＣインデックスが存在する、というエントリが、追記が行われている領域を示しており、それが検索対象となる。そして、検索されたエントリの示す第２ＥＣＣインデックスと同じ第２ＥＣＣインデックスを有するエントリの物理アドレスを集めて、第２ＥＣＣの対象となるデータ群（例えば、上述の４Ｎバイトデータ）の物理アドレスリストが取得される。
【００９２】
このようにして取得された第２ＥＣＣの対象となるデータ群の物理アドレスに基づいて、第２ＥＣＣの対象となるデータ群が読み出される（ステップＳ９７２）。このとき、単位データについて第１ＥＣＣによるデータのエラー検出が行われ、エラーが検出されない場合またはエラーが検出されても第１ＥＣＣによるエラー訂正に成功した場合には（ステップＳ９７３：Ｙｅｓ）、次のステップＳ９８１に進む。
【００９３】
一方、エラー訂正に失敗した場合には（ステップＳ９７３：Ｎｏ）、第２ＥＣＣによるエラー訂正が試みられる。このとき、アドレス変換情報の第２ＥＣＣフラグが「Ｆａｌｓｅ」を示している場合（ステップＳ９７４：Ｎｏ）、第２ＥＣＣによるエラー訂正を行うことができないため、この集約処理をエラー終了する。エラー終了の際には、ホストコンピュータ１００に集約処理エラーの発生を通知して、処理を中止する。
【００９４】
また、第２ＥＣＣフラグが「Ｔｒｕｅ」を示している場合（ステップＳ９７４：Ｙｅｓ）、そのエントリの第２ＥＣＣインデックスが示す第２ＥＣＣ管理テーブル２２３の管理情報が取得される（ステップＳ９７６）。そして、この管理情報に基づいて、第２ＥＣＣの対象となるデータ群およびそれに対応する第２ＥＣＣが読み出される（ステップＳ９７７）。読み出された第２ＥＣＣによってデータ群のエラー訂正が行われ、エラー訂正に成功した場合には（ステップＳ９７８：Ｙｅｓ）、次のステップＳ９８１に進む。一方、エラー訂正に失敗した場合には（ステップＳ９７８：Ｎｏ）、集約処理をエラー終了する。
【００９５】
第１ＥＣＣまたは第２ＥＣＣによるエラー訂正が成功した場合（ステップＳ９７３またはＳ９７８：Ｙｅｓ）、ステップＳ９７１において取得された物理アドレスリストに基づいて第２ＥＣＣが計算される（ステップＳ９８１）。計算された第２ＥＣＣは、管理情報の第２ＥＣＣ物理アドレスの示す領域に格納される。そして、アドレス変換テーブル２２２において追記データの第２ＥＣＣフラグを「Ｔｒｕｅ」に設定する（ステップＳ９８２）。
【００９６】
次に、古いデータを消去し、または、そのメモリ領域を解放して再利用可能にする（ステップＳ９８３）。これは、新たに生成した第２ＥＣＣ管理テーブル２２３と以前の第２ＥＣＣ管理テーブル２２３にある物理アドレスを比較して、新たに生成した第２ＥＣＣ管理テーブル２２３にない物理アドレスが対象になる。
【００９７】
最後に、ステップＳ９７１において取得された物理アドレスリストと新しい第２ＥＣＣが書き込まれた物理アドレスとを第２ＥＣＣ管理テーブル２２３の新しいエントリとして登録し、古いエントリを削除する（ステップＳ９８４）。このとき、古い第２ＥＣＣインデックスを再利用してもよい。新しい第２ＥＣＣインデックスを付与する場合は、アドレス変換テーブル２２２の第２ＥＣＣインデックスも更新する必要がある
【００９８】
なお、第２ＥＣＣが適用されたデータがＮＡＮＤフラッシュに格納されている場合、追記部分は、ＮＡＮＤフラッシュと較べて高速に読み書きが可能であるＮＶＲＡＭに格納しておけば、より高速に集約処理が可能になる。
【００９９】
このように、本技術の第２の実施の形態によれば、第２ＥＣＣの対象となる通常アクセス領域３１０に記憶されたデータの一部に更新が生じた際に、第２ＥＣＣ格納領域３３０の可変位置に第２ＥＣＣを維持しながら追記領域３２０に追記を行うことができる。
【０１００】
＜３．変形例＞
［第２ＥＣＣ対象データのキャッシュ］
データの読出しの際、第１ＥＣＣではエラー訂正することができず、第２ＥＣＣを用いてエラー訂正を行わなければならない場合、第２ＥＣＣの対象となるデータは、空間的局所性または時間的局所性の観点から、再びアクセスされる可能性が高い。そこで、第２ＥＣＣによるエラー訂正後、対象データをより高速な内蔵メモリ２２０や揮発性メモリ３０３にキャッシュしておくことが有効である。これにより、全体として高速なメモリアクセスを実現することができる。
【０１０１】
［予防的書直し］
データの読出しの際、第１ＥＣＣではエラー訂正することができず、第２ＥＣＣを用いてエラー訂正を行わなければならない場合、第２ＥＣＣの対象となるデータの保持特性が低下している兆候を示していると考えられる。そこで、第２ＥＣＣによってエラー訂正が可能であるうちに、データを予防的に書き直しておくことが有効である。この書直しの際には、同じ記憶領域に上書きしてもよく、また、他の空き領域に書き直すようにしてもよい。なお、この手法は、リードリクレーム（Read Reclaim）またはリードリフレッシュ（Read Refresh）と呼ばれる手法と同様の考え方に基づくものである。
【０１０２】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１０３】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１０４】
なお、本技術は以下のような構成もとることができる。
（１）複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードをメモリの第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを前記メモリの第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記メモリの第３記憶領域に記憶する場合において、前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と
を具備する記憶制御装置。
（２）前記制御部は、所定のタイミングにおいて前記追記データの各々について追記前の前記第１記憶領域に当該追記データおよび当該追記データの前記第１のエラー訂正コードを上書きし、
前記エラー訂正処理部は、前記所定のタイミングにおいて前記上書きされたデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数から前記第２のエラー訂正コードを生成して当該第２のエラー訂正コードを前記第２記憶領域に記憶する
前記（１）に記載の記憶制御装置。
（３）複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、
前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と
を具備する記憶装置。
（４）前記メモリは、前記第１記憶領域をフラッシュメモリに記憶し、前記第３記憶領域を不揮発性ＲＡＭに記憶する前記（３）に記載の記憶装置。
（５）複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードを第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを第３記憶領域に記憶するメモリと、
前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部と、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当する場合には前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する制御部と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行うエラー訂正処理部と、
前記メモリに対して前記リード要求または前記ライト要求を発行するホストコンピュータと
を具備する情報処理システム。
（６）複数のデータおよび当該複数のデータの各々に対する第１のエラー訂正コードをメモリの第１記憶領域に記憶し、前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数毎に対応してその第２のエラー訂正コードを前記メモリの第２記憶領域に記憶し、前記複数のデータの何れかに対する追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記メモリの第３記憶領域に記憶する場合において、前記複数のデータの各々について論理アドレスと前記第１または第３記憶領域における物理アドレスとの対応関係を管理するアドレス管理部を備える記憶制御装置における記憶制御方法であって、
ライト要求に係る論理アドレスに対応する物理アドレスが第１記憶領域に該当するときには前記第１記憶領域および前記第２記憶領域を書き換えることなく前記ライト要求に係るデータを前記追記データとして当該追記データおよび当該追記データに対する前記第１のエラー訂正コードを前記第３記憶領域に追記して当該追記された前記第３記憶領域における物理アドレスを前記アドレス管理部に登録する第１の手順と、
リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当する場合には前記第３記憶領域の追記データと当該追記データに対する前記第１のエラー訂正コードとによって前記第３記憶領域の追記データにおけるエラー訂正を行い、リード要求に係る論理アドレスに対応する物理アドレスが前記第３記憶領域に該当しない場合には前記第１記憶領域におけるデータを含む前記複数のデータおよび当該複数のデータの各々に対する前記第１のエラー訂正コードの所定数と前記第２記憶領域の前記第２のエラー訂正コードとによって前記第１記憶領域におけるエラー訂正を行う第２の手順と
を具備する記憶制御方法。
【符号の説明】
【０１０５】
１００  ホストコンピュータ
２００  メモリ制御部
２０１  ホストインターフェース
２１０  プロセッサ
２１１  制御部
２２０  内蔵メモリ
２２１  アドレス管理部
２２２  アドレス変換テーブル
２２３  第２ＥＣＣ管理テーブル
２３０  第１ＥＣＣ処理部
２３４  エラー訂正処理部
２４０  第２ＥＣＣ処理部
２５０  周辺回路
２８０  バス
２９１、２９２、２９３  メモリインターフェース
３００  メモリ
３０１  不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）
３０２  フラッシュメモリ
３０３  揮発性メモリ
３１０  通常アクセス領域
３２０  追記領域
３３０  第２ＥＣＣ格納領域
４００  メモリシステム
【図１】
0005845876.tif 000002
【図２】
0005845876.tif 000003
【図３】
0005845876.tif 000004
【図４】
0005845876.tif 000005
【図５】
0005845876.tif 000006
【図６】
0005845876.tif 000007
【図７】
0005845876.tif 000008
【図８】
0005845876.tif 000009
【図９】
0005845876.tif 000010
【図１０】
0005845876.tif 000011
【図１１】
0005845876.tif 000012
【図１２】
0005845876.tif 000013
【図１３】
0005845876.tif 000014
【図１４】
0005845876.tif 000015