(57)【要約】【課題】複数種類のＥＣＣを有するメモリにアクセスする際の処理速度を向上させ、記憶容量を節減する。【解決手段】第１ライト単位生成部は第１モードのライトコマンドが発行された場合にライトデータをメモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと第１エラー訂正コードとを対にして第１モードを示すモード情報を付与したものを第１ライト単位として生成する。第２ライト単位生成部は第２モードのライトコマンドが発行された場合にライトデータをメモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ第２モードを示すモード情報を付与したものを第２ライト単位として生成する。ライト処理部は第１モードでは第１ライト単位をアクセス単位とし、第２モードでは第２ライト単位をアクセス単位として、メモリにライトする。【選択図】図１
2013143118.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と
を具備する記憶制御装置。
【請求項２】
前記メモリから前記アクセス単位を読み出して前記モード情報を抽出するリード処理部と、
前記モード情報が前記第１モードを示している場合には前記アクセス単位に含まれる前記第１サイズのデータと前記第１エラー訂正コードとからエラー訂正を行う第１エラー訂正処理部と、
前記モード情報が前記第２モードを示している場合には前記アクセス単位に含まれる前記所定サイズに区切られたデータと前記第２エラー訂正コードとからエラー訂正を行う第２エラー訂正処理部と
をさらに具備する請求項１記載の記憶制御装置。
【請求項３】
前記第１サイズのデータについて第１エラー訂正コードを生成する第１エラー訂正コード生成部と、
前記第２サイズのデータについて第２エラー訂正コードを生成する第２エラー訂正コード生成部と
をさらに具備する請求項１記載の記憶制御装置。
【請求項４】
前記モード情報は前記アクセス単位における所定の位置に格納される請求項１記載の記憶制御装置。
【請求項５】
前記モード情報は前記アクセス単位における先頭に格納される請求項４記載の記憶制御装置。
【請求項６】
第１ライト単位生成部および第２ライト単位生成部は、前記モード情報に前記モード情報の第３のエラー訂正コードを付加する請求項１記載の記憶制御装置。
【請求項７】
前記第３のエラー訂正コードはビット多数決によってエラー訂正を行うエラー訂正コードである請求項６記載の記憶制御装置。
【請求項８】
前記リード処理部は、前記モード情報と前記第３のエラー訂正コードとから前記モード情報のエラーを訂正する請求項６記載の記憶制御装置。
【請求項９】
所定のアクセス単位によりアクセスされるメモリと、
前記メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と
を具備する記憶装置。
【請求項１０】
前記メモリは不揮発性メモリである請求項９記載の記憶装置。
【請求項１１】
所定のアクセス単位によりアクセスされるメモリと、
前記メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と、
前記メモリに対して前記ライトコマンドおよびリードコマンドを発行するコンピュータと
を具備する情報処理システム。
【請求項１２】
メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成手順と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成手順と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
メモリを使用する際、メモリに記憶されたデータにおいてエラー（誤り）が生じていないかを検出し、訂正するために、エラー訂正コード（ＥＣＣ：Error Correcting Code）が付与されることがある。特に、不揮発性メモリにおいてはこのエラー訂正コードを用いることが一般的となっている。すなわち、書込み時にエラー訂正コードを生成してそのエラー訂正コードをデータとともにメモリ上に記録しておいて、読出し時にはデータとエラー訂正コードとを同時に読み出してエラー訂正処理が行われる。これにより、メモリのデータ保持特性を改善することができる。
【０００３】
データ保持特性は書き換え回数の増大とともに劣化するため、より強力なエラー訂正コードを付加することは信頼性の強化につながる。しかし、パリティサイズが大きくなるため、冗長領域の容量を拡張する必要があり、例えば３２バイトのような小さなデータ単位の場合、コストの課題が大きくなる。一方、例えば５１２バイトのような大きなサイズのデータ単位の場合は、パリティの占める容量を相対的に小さく抑えることができ、コストの課題を改善できる。そこで、データの内容やそれを保存するメモリセルの状態によって、３２バイトや５１２バイトといった２つのデータサイズのうちいずれか最適な方を選択してデータを保存することが、パフォーマンスと容量効率の２つのバランスを取る上で重要となっている。例えば、メモリの各ページのデータにＥＣＣ指定情報を設けて、これにより第１ＥＣＣと第２ＥＣＣのいずれかを利用するようにした半導体メモリシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９２０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、ＥＣＣ指定情報によりエラー訂正コードの種別を指定することにより、異なる２つのエラー訂正コードを使い分けている。その際、これらの不揮発性メモリ上に書き込むライト単位のデータ構成は、データを保存するデータ部と、エラー訂正コードなどを保存する冗長部とからなる。この場合、データ部のデータと冗長部のエラー訂正コードとが１対１の関係にあればライト単位を書き込むたびにエラー訂正コードを生成することができる。しかしながら、エラー訂正コードを生成するサイズが大きい場合、１つのライト単位に含まれるデータだけではエラー訂正コードを生成できず、複数のライト単位にまたがったデータについてまとめてエラー訂正コードを生成する必要が生じる。したがって、ライト処理の際にはエラー訂正コードが生成されるのを待ってライト単位を生成することになる。また、リード処理の際には複数のリード単位にまたがるデータおよびエラー訂正コードをまとめた上でエラー訂正処理を行うことになる。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、複数種類のエラー訂正コードを有するメモリにアクセスする際の処理速度を向上し、記憶容量を節減することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリに対する第１モードのライトコマンドが発行された場合には上記第１モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの上記第１エラー訂正コードとを対にしてそれぞれ上記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、上記メモリに対する第２モードのライトコマンドが発行された場合には上記第２モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ上記第２モードを示す上記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、上記第１モードのライトコマンドが発行された場合には上記第１ライト単位をアクセス単位として上記メモリにライトし、上記第２モードのライトコマンドが発行された場合には上記第２ライト単位を上記アクセス単位として上記メモリにライトするライト処理部とを具備する記憶制御装置である。これにより、第１モードおよび第２モードの何れにおいてもエラー訂正コードが生成されるまで待つことなくメモリへの書込みを遂行するという作用をもたらす。
【０００８】
また、この第１の側面において、上記メモリから上記アクセス単位を読み出して上記モード情報を抽出するリード処理部と、上記モード情報が上記第１モードを示している場合には上記アクセス単位に含まれる上記第１サイズのデータと上記第１エラー訂正コードとからエラー訂正を行う第１エラー訂正処理部と、上記モード情報が上記第２モードを示している場合には上記アクセス単位に含まれる上記所定サイズに区切られたデータと上記第２エラー訂正コードとからエラー訂正を行う第２エラー訂正処理部とをさらに具備してもよい。これにより、第１モードおよび第２モードの何れにおいても途中のデータを別途保持することなくエラー訂正を遂行するという作用をもたらす。
【０００９】
また、この第１の側面において、上記第１サイズのデータについて第１エラー訂正コードを生成する第１エラー訂正コード生成部と、上記第２サイズのデータについて第２エラー訂正コードを生成する第２エラー訂正コード生成部とをさらに具備してもよい。これにより、モード情報に合致したサイズのエラー訂正コードを生成するという作用をもたらす。
【００１０】
また、この第１の側面において、上記モード情報は上記アクセス単位における所定の位置に格納されるように構成してもよい。これにより、アクセス単位における所定の位置を参照することにより、第１モードおよび第２モードの何れであるかを判定するという作用をもたらす。この場合において、特に、上記モード情報は上記アクセス単位における先頭に格納されるようにしてもよい。これにより、アクセス単位における先頭を参照することにより、第１モードおよび第２モードの何れであるかを判定するという作用をもたらす。
【００１１】
また、この第１の側面において、第１ライト単位生成部および第２ライト単位生成部は、上記モード情報に上記モード情報の第３のエラー訂正コードを付加してもよい。これにより、モード情報については他のデータとは取り扱いを独立させるという作用をもたらす。この場合において、特に、上記第３のエラー訂正コードはビット多数決によってエラー訂正を行うようにしてもよい。また、上記リード処理部は、上記モード情報と上記第３のエラー訂正コードとから上記モード情報のエラーを訂正するようにしてもよい。
【００１２】
また、本技術の第２の側面は、所定のアクセス単位によりアクセスされるメモリと、上記メモリに対する第１モードのライトコマンドが発行された場合には上記第１モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの上記第１エラー訂正コードとを対にしてそれぞれ上記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、上記メモリに対する第２モードのライトコマンドが発行された場合には上記第２モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ上記第２モードを示す上記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、上記第１モードのライトコマンドが発行された場合には上記第１ライト単位をアクセス単位として上記メモリにライトし、上記第２モードのライトコマンドが発行された場合には上記第２ライト単位を上記アクセス単位として上記メモリにライトするライト処理部とを具備する記憶装置である。これにより、第１モードおよび第２モードの何れにおいてもエラー訂正コードが生成されるまで待つことなくメモリにおいて書込みを遂行するという作用をもたらす。なお、この第２の側面において、特に上記メモリは不揮発性メモリであることを想定してもよい。
【００１３】
また、本技術の第３の側面は、所定のアクセス単位によりアクセスされるメモリと、上記メモリに対する第１モードのライトコマンドが発行された場合には上記第１モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの上記第１エラー訂正コードとを対にしてそれぞれ上記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、上記メモリに対する第２モードのライトコマンドが発行された場合には上記第２モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ上記第２モードを示す上記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、上記第１モードのライトコマンドが発行された場合には上記第１ライト単位をアクセス単位として上記メモリにライトし、上記第２モードのライトコマンドが発行された場合には上記第２ライト単位を上記アクセス単位として上記メモリにライトするライト処理部と、上記メモリに対して上記ライトコマンドおよびリードコマンドを発行するコンピュータとを具備する情報処理システムである。これにより、第１モードおよび第２モードの何れにおいてもエラー訂正コードが生成されるまで待つことなくコンピュータから指示に従ってメモリにおいて書込みを遂行するという作用をもたらす。
【００１４】
また、本技術の第４の側面は、メモリに対する第１モードのライトコマンドが発行された場合には上記第１モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの上記第１エラー訂正コードとを対にしてそれぞれ上記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成手順と、上記メモリに対する第２モードのライトコマンドが発行された場合には上記第２モードのライトコマンドに係るライトデータを上記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ上記第２モードを示す上記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成手順と、上記第１モードのライトコマンドが発行された場合には上記第１ライト単位をアクセス単位として上記メモリにライトし、上記第２モードのライトコマンドが発行された場合には上記第２ライト単位を上記アクセス単位として上記メモリにライトするライト処理手順とを具備する記憶制御方法である。これにより、第１モードおよび第２モードの何れにおいてもエラー訂正コードが生成されるまで待つことなくメモリへの書込みを遂行するという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、複数種類のエラー訂正コードを有するメモリにアクセスする際の処理速度を向上させるとともに、記憶容量を節減することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１６】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるメモリ制御部２００の機能構成例を示す図である。
【図３】本技術の実施の形態における第１ライト単位のフォーマット構成例を示す図である。
【図４】本技術の実施の形態における第２ライト単位のフォーマット構成例を示す図である。
【図５】本技術の実施の形態におけるモード情報のフォーマット構成例を示す図である。
【図６】本技術の実施の形態における３２バイトモードのリード処理手順例を示す流れ図である。
【図７】本技術の実施の形態における５１２バイトモードのリード処理手順例を示す流れ図である。
【図８】本技術の実施の形態における３２バイトモードのライト処理手順例を示す流れ図である。
【図９】本技術の実施の形態における５１２バイトモードのライト処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．実施の形態
２．変形例
【００１８】
＜１．実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、不揮発性メモリ３００と、メモリ制御部２００とを備える。メモリ制御部２００および不揮発性メモリ３００は、メモリシステム４００を構成する。ホストコンピュータ１００は、メモリシステム４００に対してデータのリードまたはライトを要求するリクエストを発行するものである。
【００１９】
この実施の形態では、不揮発性メモリ３００は、リードおよびライトのアクセス単位として３４バイトを想定する。このアクセス単位には、データおよびエラー訂正コード等が含まれる。また、ページアクセスする際のデータのページサイズとして５１２バイトを想定する。ホストコンピュータ１００は、不揮発性メモリ３００に対してリードまたはライトを要求する際、エラー訂正コードのモード指定を行う。モード指定が第１モード（３２バイトモード）の場合、ページ内のデータ３２バイト毎にエラー訂正コードを付与する。このときのエラー訂正コードを第１ＥＣＣと呼称する。一方、モード指定が第２モード（５１２バイトモード）の場合、ページ内のデータ５１２バイト全体に対してエラー訂正コードを付与する。このときのエラー訂正コードを第２ＥＣＣと呼称する。
【００２０】
不揮発性メモリ３００は、電源が供給されていない状態においてもその内容を保持し続ける不揮発性の性質を有するメモリである。不揮発性メモリ３００としては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、ＮＶＲＡＭの例としては、ＰＣＲＡＭ、ＭＲＡＭ、ＲｅＲＡＭなどが挙げられる。
【００２１】
この不揮発性メモリ３００は、セルアレイ３１０と、メモリバッファ３２０と、制御インターフェース３０１とを備える。セルアレイ３１０は、各ビットのデータ値を記憶するメモリセルを、マトリクス状に配置したものである。各メモリセルは電源が供給されていない状態においてもその内容を保持し続ける不揮発性の性質を有する。メモリバッファ３２０は、セルアレイ３１０にライトするためのデータまたはセルアレイ３１０からリードしたデータを保持するためのバッファである。制御インターフェース３０１は、メモリ制御部２００との間のやり取りを行うインターフェースである。
【００２２】
メモリ制御部２００は、不揮発性メモリ３００を制御するためのものである。このメモリ制御部２００は、第１ＥＣＣ処理部２１０と、第２ＥＣＣ処理部２２０と、ページバッファ２４０と、制御レジスタ２５０と、制御部２９０と、ホストインターフェース２０１と、メモリインターフェース２０２とを備える。
【００２３】
第１ＥＣＣ処理部２１０は、第１ＥＣＣを生成し、または、第１ＥＣＣによりエラー訂正を行うものである。第２ＥＣＣ処理部２２０は、第２ＥＣＣを生成し、または、第２ＥＣＣによりエラー訂正を行うものである。
【００２４】
ページバッファ２４０は、ページ内のデータ５１２バイトを保持するためのバッファである。すなわち、このページバッファ２４０は、ホストコンピュータ１００から指示されたライトデータ、または、不揮発性メモリ３００から読み出されたリードデータをページ単位に保持する。
【００２５】
制御レジスタ２５０は、ホストコンピュータ１００から発行された制御コマンド、または、不揮発性メモリ３００からのステータスを保持するレジスタである。
【００２６】
制御部２９０は、メモリ制御部２００の全体を制御するためのものである。ホストインターフェース２０１は、ホストコンピュータ１００との間のやり取りを行うインターフェースである。メモリインターフェース２０２は、不揮発性メモリ３００との間のやり取りを行うインターフェースである。
【００２７】
［メモリ制御部の機能構成］
図２は、本技術の実施の形態におけるメモリ制御部２００の機能構成例を示す図である。メモリ制御部２００は、第１ＥＣＣ生成部２１１と、第１ＥＣＣ訂正部２１２と、第２ＥＣＣ生成部２２１と、第２ＥＣＣ訂正部２２２と、第１ライト単位生成部２９１と、第２ライト単位生成部２９２と、ライト処理部２９３と、リード処理部２９４とを備える。第１ＥＣＣ生成部２１１および第１ＥＣＣ訂正部２１２は、第１ＥＣＣ処理部２１０の機能である。第２ＥＣＣ生成部２２１および第２ＥＣＣ訂正部２２２は、第２ＥＣＣ処理部２２０の機能である。第１ライト単位生成部２９１、第２ライト単位生成部２９２、ライト処理部２９３、および、リード処理部２９４は、制御部２９０の機能である。
【００２８】
第１ＥＣＣ生成部２１１は、ページバッファ２４０から供給された３２バイトのデータから第１ＥＣＣを生成するものである。第２ＥＣＣ生成部２２１は、ページバッファ２４０から供給された５１２バイトのデータから第２ＥＣＣを生成するものである。
【００２９】
第１ライト単位生成部２９１は、ライトデータを３２バイト毎に区切ったデータとその第１エラー訂正コードとを対にして、それぞれ３２バイトモードを示すモード情報を付与したものを第１ライト単位として生成するものである。
【００３０】
第２ライト単位生成部２９２は、ライトデータを５１２バイト毎に区切ったデータとその第２エラー訂正コードとの対を所定サイズに区切って、それぞれ５１２バイトモードを示すモード情報を付与したものを第２ライト単位として生成するものである。
【００３１】
ライト処理部２９３は、第１ライト単位または第２ライト単位を不揮発性メモリ３００にライトするものである。すなわち、ライト処理部２９３は、３２バイトモードのライトコマンドが発行された場合には第１ライト単位をアクセス単位として不揮発性メモリ３００にライトする。また、ライト処理部２９３は、５１２バイトモードのライトコマンドが発行された場合には第２ライト単位をアクセス単位として不揮発性メモリ３００にライトする。
【００３２】
リード処理部２９４は、不揮発性メモリ３００からアクセス単位毎に読み出しを行うものである。このリード処理部２９４は、アクセス単位からモード情報を抽出して、そのアクセス単位が３２バイトモードまたは５１２バイトモードの何れによりライトされたものであるかを判定する。
【００３３】
第１ＥＣＣ訂正部２１２は、モード情報が３２バイトモードを示している場合に、アクセス単位に含まれる３２バイトのデータとその第１エラー訂正コードとからエラー訂正を行うものである。第２ＥＣＣ訂正部２２２は、モード情報が５１２バイトモードを示している場合に、アクセス単位に含まれる５１２バイト毎に区切られたデータとその第２エラー訂正コードとからエラー訂正を行うものである。
【００３４】
［アクセス単位のフォーマット構成］
図３は、本技術の実施の形態における第１ライト単位のフォーマット構成例を示す図である。この第１ライト単位のそれぞれは、先頭から、３ビットのモード情報と、３２バイトのデータと、４ビットの追加情報と、９ビットの第１ＥＣＣを有している。
【００３５】
モード情報は、このアクセス単位が第１ライト単位であるか第２ライト単位であるかを示すものであり、この場合には第１ライト単位である旨を示す。このモード情報は第１ＥＣＣの対象とされず、後述のように冗長ビットを有することにより保持強化を行っている。
【００３６】
データは、第１ライト単位のそれぞれにおいて均等に３２バイトとなっている。したがって、５１２バイトのページデータをライトするためには１６個の第１ライト単位が必要になる。追加情報は、３２バイトデータに関する追加情報であり、必要に応じて利用される。
【００３７】
第１ＥＣＣは、データおよび追加情報を対象として生成された第１エラー訂正コードである。したがって、第１ライト単位のそれぞれにおいて独立して、第１ＥＣＣの生成および第１ＥＣＣによるエラー検出訂正が行われる。
【００３８】
図４は、本技術の実施の形態における第２ライト単位のフォーマット構成例を示す図である。この第２ライト単位はそれぞれが均等のフォーマットではなく、１６個まとめた状態で、５１２バイトのデータと、２バイトの追加情報と、１１７ビットの第２ＥＣＣとを有する。そして、それぞれの第２ライト単位の先頭に３ビットのモード情報が付加される。
【００３９】
モード情報は、このアクセス単位が第１ライト単位であるか第２ライト単位であるかを示すものであり、この場合には第２ライト単位である旨を示す。このモード情報は第２ＥＣＣの対象とされず、後述のように冗長ビットを有することにより保持強化を行っている。
【００４０】
第２ＥＣＣは、データおよび追加情報を対象として生成された第２エラー訂正コードである。したがって、この第２ＥＣＣによって、第２ライト単位を１６個まとめた状態において、第２ＥＣＣの生成および第２ＥＣＣによるエラー検出訂正が行われる。
【００４１】
［第１ＥＣＣおよび第２ＥＣＣの比較］
ここで、第１ＥＣＣおよび第２ＥＣＣについてビット不良率（ビットエラーレート）を比較する。ＥＣＣ適用前のビット不良率ｆが独立同分布をしていると仮定すると、ｎビットの中のｃビットを訂正可能にした場合の、ＥＣＣ適用後の実効的なビット不良率ＵＢＥ（Uncorrectable Bit Error）は次の式１により求められる。ただし、同時読出しビット数をｎとする。
【数１】
2013143118.tif 000003
【００４２】
まず、３２バイトデータに対して１ビット検出訂正を行うためには９ビットのエラー訂正コードが必要になる。式１において、３２バイトのビット不良率を１０-6とすると、１ビット訂正後のビット不良率は約１０-9となる。また、３２バイトデータに対して２ビット検出訂正を行うためには１８ビットのエラー訂正コードが必要になる。式１において、３２バイトのビット不良率を１０-6とすると、２ビット訂正後のビット不良率は約１０-13となる。
【００４３】
一方、５１２バイトデータに対して３ビット検出訂正を行うためには３９ビットのエラー訂正コードが必要になる。式１において、５１２バイトのビット不良率を１０-6とすると、３ビット訂正後のビット不良率は約１０-14となる。これは、３２バイトデータに対して２ビット検出訂正を想定した場合と同等のビット不良率である。
【００４４】
また、５１２バイトデータに対して８ビット検出訂正を行うためには１０４ビットのエラー訂正コードが必要になる。式１において、５１２バイトのビット不良率を１０-6とすると、８ビット訂正後のビット不良率は約１０-20となる。これは、ビット不良率をさらに低下させているが、この場合のエラー訂正コードのサイズ比は３２バイトデータに対して１ビット検出訂正を行った場合よりも小さい。
【００４５】
この実施の形態では、計３４バイト弱のデータおよび追加情報に対して１ビットの第１ＥＣＣを付与し、計５１４バイトのデータおよび追加情報に対して１１７ビットの第２ＥＣＣを付与している。したがって、第２ＥＣＣによるビットエラーレートは第１ＥＣＣよりも十分低く、第２ＥＣＣのサイズ比は第１ＥＣＣのサイズ比よりも十分小さいことがわかる。
【００４６】
図５は、本技術の実施の形態におけるモード情報のフォーマット構成例を示す図である。上述のように、モード情報は３ビット構成であり、本来であれば同じ値を有することを想定している。すなわち、「０」であれば３２バイトモードであることを示し、「１」であれば５１２バイトモードであることを示す。しかし、何れかのビットが誤って反転してしまうおそれがあり、そのためにさらに２ビットを冗長に保持している。そのため、３ビットのなかで多数決処理を行った結果によってモードを判定する。これにより、１ビットエラーが生じた場合でも正しくモードを判定することができる。すなわち、このモード情報の３ビットのうち、何れかの１ビットに対して他の２ビットをエラー訂正コードとして付加したものとみることができる。
【００４７】
このモード情報は、アクセス単位の先頭３ビットを占めており、第１ライト単位および第２ライト単位の両者に共通の位置に存在する。したがって、アクセス単位の先頭３ビットをチェックするだけで３２バイトモードまたは５１２バイトモードの何れであるかを判定することができる。ここではアクセス単位の先頭３ビットにモード情報を有することとしているが、第１ライト単位および第２ライト単位の両者に共通の位置として予め定められた位置であればどこに配置してもよい。
【００４８】
［３２バイトモードのリード処理手順］
図６は、本技術の実施の形態における３２バイトモードのリード処理手順例を示す流れ図である。不揮発性メモリ３００に対してリードコマンドが発行されると（ステップＳ９１１）、まずアクセス単位の先頭のモード情報がリード処理部２９４によって不揮発性メモリ３００から読み出される（ステップＳ９１２）。このとき、モード情報が３２バイトモードを示していない場合には（ステップＳ９１３：Ｎｏ）、モード不整合によりエラー終了となる。
【００４９】
モード情報が３２バイトモードを示している場合には（ステップＳ９１３：Ｙｅｓ）、不揮発性メモリ３００からモード情報に続くデータ、追加情報および第１ＥＣＣがリード処理部２９４によって読み出される（ステップＳ９１４）。そして、第１ＥＣＣ処理部２１０の第１ＥＣＣ訂正部２１２に、データおよび追加情報が入力される（ステップＳ９１５）。これにより、第１ＥＣＣによるエラー検出処理が行われる。その後、データはページバッファ２４０に格納されていく（ステップＳ９１６）。このとき、エラーが検出されると（ステップＳ９１７：Ｙｅｓ）、ページバッファ２４０上でエラーを生じたビットのエラー訂正処理が行われる（ステップＳ９１８）。その後、ページバッファ２４０上の３２バイトデータはホストコンピュータ１００に出力される（ステップＳ９１９）。
【００５０】
［５１２バイトモードのリード処理手順］
図７は、本技術の実施の形態における５１２バイトモードのリード処理手順例を示す流れ図である。ここでは、１６個のアクセス単位に順次アクセスするための制御変数ｉを想定し、この制御変数ｉの初期値として「１」を代入する（ステップＳ９２１）。
【００５１】
不揮発性メモリ３００に対してリードコマンドが発行されると（ステップＳ９２２）、アクセス単位がリード処理部２９４によって不揮発性メモリ３００から読み出される（ステップＳ９２３）。このとき、モード情報が５１２バイトモードを示していない場合には（ステップＳ９２４：Ｎｏ）、モード不整合によりエラー終了となる。
【００５２】
モード情報が５１２バイトモードを示している場合には（ステップＳ９２４：Ｙｅｓ）、モード情報以外を第２ＥＣＣ処理部２２０の第２ＥＣＣ訂正部２２２に入力する（ステップＳ９２５）。これにより、第２ＥＣＣによるエラー検出処理が順番に行われていく。その後、データはページバッファ２４０に格納されていく（ステップＳ９２６）。
【００５３】
制御変数ｉは「１」ずつ加算され、「１６」になるまでステップＳ９２２以降の処理を繰り返す（ステップＳ９２７：Ｎｏ）。これにより、上述のように第２ＥＣＣによるエラー検出処理が順番に行われていく。そして、制御変数ｉが「１６」の時に（ステップＳ９２７：Ｙｅｓ）、第２ＥＣＣ訂正部２２２において第１６番目のアクセス単位に含まれるデータおよび追加情報を最後の入力として（ステップＳ９２５）、繰返しを終了する（ステップＳ９２７：Ｙｅｓ）。その結果として、第２ＥＣＣによるエラー検出結果が得られる。このとき、エラーが検出されていた場合には（ステップＳ９２９：Ｙｅｓ）、ページバッファ２４０上でエラーを生じたビットのエラー訂正処理が行われる（ステップＳ９３１）。その後、ページバッファ２４０上の５１２バイトデータはホストコンピュータ１００に出力される（ステップＳ９３２）。
【００５４】
この実施の形態では、不揮発性メモリ３００から読み出されたデータを第２ＥＣＣ訂正部２２２に随時入力していき、最後に読み出された第２ＥＣＣによってエラー訂正を行うことができるため、処理途中のデータを一時的に保持する必要がない。仮に、最後のアクセス単位以外においてデータと第２ＥＣＣを分散させた場合には、アクセス単位から両者を抽出して保持しておく必要が生じる。この点、本実施の形態によれば、処理途中のデータを一時的に保持しないで済むため、そのための記憶領域を節減することができる。
【００５５】
［３２バイトモードのライト処理手順］
図８は、本技術の実施の形態における３２バイトモードのライト処理手順例を示す流れ図である。ホストコンピュータ１００からライトコマンドとともにライトデータを受け取ると、ライトデータおよび追加情報はページバッファ２４０に格納される（ステップＳ９４１）。そして、ページバッファ２４０上の３２バイトデータおよび追加情報に対して第１ＥＣＣ生成部２１１によって第１ＥＣＣが生成される（ステップＳ９４２）。
【００５６】
そして、図３により説明したように、先頭に３２バイトモードを示すモード情報が付加され、データ、追加情報および第１ＥＣＣが続く第１ライト単位が、第１ライト単位生成部２９１によって生成される（ステップＳ９４３）。
【００５７】
ライト処理部２９３は不揮発性メモリ３００にライトコマンドを発行する（ステップＳ９４４）。そして、生成された第１ライト単位をアクセス単位として、メモリインターフェース２０２からアクセス単位毎に不揮発性メモリ３００に対して出力が行われる（ステップＳ９４５）。
【００５８】
［５１２バイトモードのライト処理手順］
図９は、本技術の実施の形態における５１２バイトモードのライト処理手順例を示す流れ図である。ホストコンピュータ１００からライトコマンドとともにライトデータを受け取ると、ライトデータおよび追加情報はページバッファ２４０に格納される（ステップＳ９５１）。これにより、以下のアクセス単位毎の出力と並行して、ページバッファ２４０上の５１２バイトデータおよび追加情報に対して第２ＥＣＣ生成部２２１によって第２ＥＣＣが生成される（ステップＳ９５７）。
【００５９】
一方、１６個のアクセス単位に順次アクセスするための制御変数ｉを想定し、この制御変数ｉの初期値として「１」を代入する（ステップＳ９５２）。そして、図４により説明したように、先頭に５１２バイトモードを示すモード情報が付加され、データが続く第２ライト単位（＃０１乃至＃１５）が、第２ライト単位生成部２９２によって生成される（ステップＳ９５３）。
【００６０】
ライト処理部２９３は不揮発性メモリ３００にライトコマンドを発行する（ステップＳ９５４）。そして、生成された第２ライト単位をアクセス単位として、メモリインターフェース２０２からアクセス単位毎に不揮発性メモリ３００に対して出力が行われる（ステップＳ９５５）。
【００６１】
制御変数ｉは「１」加算され、「１６」になるまでステップＳ９５３以降の処理を繰り返す（ステップＳ９５６：Ｎｏ）。制御変数ｉが「１６」になると（ステップＳ９５６：Ｙｅｓ）、第１６番目の第２ライト単位において図４により説明したように、先頭に５１２バイトモードを示すモード情報が付加され、データ、追加情報および第２ＥＣＣが続く第２ライト単位が、第２ライト単位生成部２９２によって生成される（ステップＳ９６３）。
【００６２】
ライト処理部２９３は不揮発性メモリ３００にライトコマンドを発行する（ステップＳ９６４）。そして、生成された第２ライト単位をアクセス単位として、メモリインターフェース２０２からアクセス単位毎に不揮発性メモリ３００に対して出力が行われる（ステップＳ９６５）。
【００６３】
この実施の形態では、ライトデータを第２ＥＣＣ生成部２２１に随時入力していき、最後の第２ライト単位において第２ＥＣＣをまとめて書き込むため、他の第２ライト単位の書込みの際には待ちを生じることがない。仮に、最後の第２ライト単位以外においてデータと第２ＥＣＣを分散させた場合には、第２ライト単位を書き込む際に最終的に第２ＥＣＣが生成されるのを待つ必要が生じるため、ライト処理全体の処理時間を遅延させてしまう。この点、本実施の形態によれば、第２ライト単位の書込みの際に待ちを生じることがなく、ライト処理全体の処理時間を高速化することができる。
【００６４】
このように、本実施の形態によれば、５１２バイトモードにおけるデータおよび第２ＥＣＣの配置を工夫したことにより、リード処理に要する記憶領域を節減することができるとともに、ライト処理の実行時間を高速化することができる。また、モード情報をアクセス単位の所定の位置に配置したことにより、３２バイトモードまたは５１２バイトモードの何れであるかを速やかに判定することができる。
【００６５】
＜２．変形例＞
上述の実施の形態では、モード情報は第１ＥＣＣまたは第２ＥＣＣの対象とならないことを想定し、それに代えて冗長ビットを加えた３ビットの構成を採用した。これに対し、モード情報を第１ＥＣＣまたは第２ＥＣＣの対象に含ませる構成を採ることも可能である。すなわち、ステップＳ９４２においてモード情報を合わせて第１ＥＣＣを生成し、ステップＳ９５７においてモード情報を合わせて第２ＥＣＣを生成してもよい。この場合、ステップＳ９１５においてモード情報を合わせて第１ＥＣＣによるエラー検出が行われ、ステップＳ９１７においてモード情報を合わせて第１ＥＣＣによるエラー訂正が行われる。また、ステップＳ９２８においてモード情報を合わせて第２ＥＣＣによるエラー検出が行われ、ステップＳ９３１においてモード情報を合わせて第２ＥＣＣによるエラー訂正が行われる。
【００６６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００６７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、不揮発性メモリを搭載したメモリカードやＳＳＤ等を用いることができる。
【００６８】
なお、本技術は以下のような構成もとることができる。
（１）メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と
を具備する記憶制御装置。
（２）前記メモリから前記アクセス単位を読み出して前記モード情報を抽出するリード処理部と、
前記モード情報が前記第１モードを示している場合には前記アクセス単位に含まれる前記第１サイズのデータと前記第１エラー訂正コードとからエラー訂正を行う第１エラー訂正処理部と、
前記モード情報が前記第２モードを示している場合には前記アクセス単位に含まれる前記所定サイズに区切られたデータと前記第２エラー訂正コードとからエラー訂正を行う第２エラー訂正処理部と
をさらに具備する前記（１）に記載の記憶制御装置。
（３）前記第１サイズのデータについて第１エラー訂正コードを生成する第１エラー訂正コード生成部と、
前記第２サイズのデータについて第２エラー訂正コードを生成する第２エラー訂正コード生成部と
をさらに具備する前記（１）または（２）に記載の記憶制御装置。
（４）前記モード情報は前記アクセス単位における所定の位置に格納される前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記モード情報は前記アクセス単位における先頭に格納される前記（４）に記載の記憶制御装置。
（６）第１ライト単位生成部および第２ライト単位生成部は、前記モード情報に前記モード情報の第３のエラー訂正コードを付加する前記（１）から（４）のいずれかに記載の記憶制御装置。
（７）前記第３のエラー訂正コードはビット多数決によってエラー訂正を行うエラー訂正コードである前記（６）に記載の記憶制御装置。
（８）前記リード処理部は、前記モード情報と前記第３のエラー訂正コードとから前記モード情報のエラーを訂正する前記（６）に記載の記憶制御装置。
（９）所定のアクセス単位によりアクセスされるメモリと、
前記メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と
を具備する記憶装置。
（１０）前記メモリは不揮発性メモリである前記（９）に記載の記憶装置。
（１１）所定のアクセス単位によりアクセスされるメモリと、
前記メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成部と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成部と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理部と、
前記メモリに対して前記ライトコマンドおよびリードコマンドを発行するコンピュータと
を具備する情報処理システム。
（１２）メモリに対する第１モードのライトコマンドが発行された場合には前記第１モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも小さい第１サイズ毎に区切ったデータと当該データの前記第１エラー訂正コードとを対にしてそれぞれ前記第１モードを示すモード情報を付与したものを第１ライト単位として生成する第１ライト単位生成手順と、
前記メモリに対する第２モードのライトコマンドが発行された場合には前記第２モードのライトコマンドに係るライトデータを前記メモリのアクセス単位よりも大きい第２サイズ毎に区切ったデータと当該データの第２エラー訂正コードとの対を所定サイズに区切ってそれぞれ前記第２モードを示す前記モード情報を付与したものを第２ライト単位として生成する第２ライト単位生成手順と、
前記第１モードのライトコマンドが発行された場合には前記第１ライト単位をアクセス単位として前記メモリにライトし、前記第２モードのライトコマンドが発行された場合には前記第２ライト単位を前記アクセス単位として前記メモリにライトするライト処理手順と
を具備する記憶制御方法。
【符号の説明】
【００６９】
１００  ホストコンピュータ
２００  メモリ制御部
２０１  ホストインターフェース
２０２  メモリインターフェース
２１０  第１ＥＣＣ処理部
２１１  第１ＥＣＣ生成部
２１２  第１ＥＣＣ訂正部
２２０  第２ＥＣＣ処理部
２２１  第２ＥＣＣ生成部
２２２  第２ＥＣＣ訂正部
２４０  ページバッファ
２５０  制御レジスタ
２９０  制御部
２９１  第１ライト単位生成部
２９２  第２ライト単位生成部
２９３  ライト処理部
２９４  リード処理部
３００  不揮発性メモリ
３０１  制御インターフェース
３１０  セルアレイ
３２０  メモリバッファ
４００  メモリシステム
【図１】
2013143118.tif 000004
【図２】
2013143118.tif 000005
【図３】
2013143118.tif 000006
【図４】
2013143118.tif 000007
【図５】
2013143118.tif 000008
【図６】
2013143118.tif 000009
【図７】
2013143118.tif 000010
【図８】
2013143118.tif 000011
【図９】
2013143118.tif 000012