(57)【要約】【課題】読み出し動作の高速化及び信頼性の向上に有利なメモリコントローラ、記憶装置を提供する。【解決手段】実施形態によれば、メモリコントローラ２は、外部インタフェイス１と、第１のＥＣＣ生成部３ａと、メモリ７ａ〜７ｅに対する書き込み及び読み出しを制御するアクセス部４と、読み出しデータのエラーを訂正する第１のＥＣＣ訂正部３ｂと、これらを制御する制御部６とを具備する。前記制御部６は、メモリからデータを読み出す際に、第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により前記第１のＥＣＣ符号を利用してエラー訂正を行うように制御を行う。【選択図】図３
2013093012.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から与えられる書き込みデータをメモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信するメモリコントローラであって、前記メモリコントローラは、
前記ホスト装置に対して前記書き込みデータ／前記読み出しデータの送受信を行う外部インタフェイスと、
前記書き込みデータに対するパリティデータ及び第１のＥＣＣ符号を生成する第１のＥＣＣ生成部と、
前記メモリに対する前記書き込みデータ／前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、
前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第１のＥＣＣ訂正部と、
前記外部インタフェイス、前記第１のＥＣＣ生成部、前記アクセス部、及び前記第１のＥＣＣ訂正部を制御する制御部とを具備し、前記制御部は、
前記メモリからデータを読み出す際に、第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、
前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により前記第１のＥＣＣ符号を利用してエラー訂正を行うように制御を行う
メモリコントローラ。
【請求項２】
前記第１のＥＣＣ生成部は、Ｎ個（Ｎは２以上の整数）のエラー訂正が可能な第１のＥＣＣ符号を生成し、
前記制御部は、前記メモリからデータを読み出す際に、前記第１の読み出し単位で、データを読み出し、前記第１のＥＣＣ符号を利用して、Ｍ個（ＭはＭ＜Ｎを満たす０以上の整数）の誤り訂正を行い、
前記第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、
前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により、前記第１のＥＣＣ符号を利用して、Ｎ個のエラー訂正を行う
請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリは、前記コントローラに複数個接続され、
前記アクセス部は、前記メモリと対応する同数個で配置され、
前記制御部は、前記第１のＥＣＣ符号を構成する夫々のシンボルを、前記複数のアクセス部を介して、それぞれ異なる前記複数のメモリに記録させる
請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記メモリは、前記第１のＥＣＣ符号を構成する複数のシンボルと直交する複数のシンボルから第２のＥＣＣ符号を生成する第２のＥＣＣ生成部と、前記第２のＥＣＣ符号により読み出されるデータの誤りを訂正する第２のＥＣＣ訂正部とを備え、
前記制御部は、前記メモリから読み出しデータを読み出す際に、前記第２のＥＣＣ訂正部により訂正が不可とされるデータを、前記第１のＥＣＣ訂正部によって誤り訂正するように制御する
請求項１乃至３のいずれかに記載のメモリコントローラ。
【請求項５】
前記第１のＥＣＣ符号を構成する複数のシンボルと直交する複数のシンボルから第２のＥＣＣ符号を生成する第２のＥＣＣ生成部と、
前記第２のＥＣＣ符号により読み出されるデータの誤りを訂正する第２のＥＣＣ訂正部とを更に具備し、
前記制御部は、前記メモリから読み出しデータを読み出す際に、前記第２のＥＣＣ訂正部により訂正が不可とされるデータを、前記第１のＥＣＣ訂正部によって誤り訂正するように制御する
請求項１乃至３のいずれかに記載のメモリコントローラ。
【請求項６】
前記制御部は、前記第２のＥＣＣ符号を前記メモリに対して、前記メモリを構成するブロック単位でライトする
請求項４又は５に記載のメモリコントローラ。
【請求項７】
前記制御部は、前記第１の読み出し単位又は前記第２の読み出し単位でデータを読み出す際に、前記メモリに対して、先頭セクタ番号と連続セクタ数とをパラメータとする内部リードコマンドを発行し、
前記第１の読み出し単位でリードされるデータがエラー訂正できない場合、それ以降の読み出し動作を停止させるように制御する
請求項１乃至６のいずれかに記載のメモリコントローラ。
【請求項８】
前記メモリは不揮発性メモリであり、
前記第１の読み出し単位は、前記不揮発性メモリの読み出し単位であるページの自然数倍の単位である
請求項１乃至７のいずれかに記載のメモリコントローラ。
【請求項９】
前記メモリは不揮発性メモリであり、
前記第１の読み出し単位は、前記不揮発性メモリの読み出し単位であるページの単位である
請求項１乃至７のいずれかに記載のメモリコントローラ。
【請求項１０】
ホスト装置に送信されるデータを記憶するメモリと、前記メモリを制御するコントローラとを具備し、前記ホスト装置から与えられる書き込みデータを前記メモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信する記憶装置であって、前記メモリコントローラは、
前記ホスト装置に対して前記書き込みデータ／前記読み出しデータの送受信を行う外部インタフェイスと、
前記書き込みデータに対するパリティデータ及び第１のＥＣＣ符号を生成する第１のＥＣＣ生成部と、
前記メモリに対する前記書き込みデータ／前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、
前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第１のＥＣＣ訂正部と、
前記外部インタフェイス、前記第１のＥＣＣ生成部、前記アクセス部、及び前記第１のＥＣＣ訂正部を制御する制御部とを備え、前記制御部は、
前記メモリからデータを読み出す際に、第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、
前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により前記第１のＥＣＣ符号を利用してエラー訂正を行うように制御を行う
記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、不揮発性メモリのデータ保持特性のバラツキ及び書き換え回数に伴う劣化を抑制する制御をするメモリコントローラ、記録装置等に関する。
【背景技術】
【０００２】
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるＳＤ（Secure Digital）カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
【０００３】
半導体記録装置に内蔵されるフラッシュメモリは、一定サイズの多数の物理ブロックから構成され、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは１セルで２ビット以上のデータが蓄積できる多値フラッシュメモリ（ＭＬＣ： Multi Level Cell）が商品化されている。
【０００４】
図１に、多値フラッシュメモリのフローティングゲートに蓄積する電子の数と閾値電圧（Ｖｔｈ）の関係の一例を示す。図１に示すように、４値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧（Ｖｔｈ）に従って４状態で管理する。消去状態は電位が一番低く、これを（１，１）とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々（１，０）、（０，０）、（０，１）とする。このように、蓄積する電子の数に比例して閾値電位が上昇するので、所定の電位の閾値に収まるように制御することによって、１つのメモリセルに２ビットのデータを記録することができる。
【０００５】
しかしながら、多値フラッシュメモリにおいては、電子のチャージ量によって４状態を識別するために、各状態間の閾値電圧の差が、２値メモリ（ＳＬＣ：Single Level Cell）より小さい。  
また、書き換え回数を重ねる毎に、データの書き換えを繰り返すと、電子の注入と引き抜きによってゲート酸化膜にわずかな損傷が発生する。この損傷が積み重なると電子トラップが数多く形成されるため、実際のフローティングゲートに蓄積される電子数が減少してしまう。半導体プロセスの微細化に比例して、フローティングゲートに蓄積される電子数が少なくなるため、電子トラップの影響は大きくなる。
【０００６】
このように、フラッシュメモリの大容量化を支える多値記録および半導体プロセスの微細化に従い、フラッシュメモリのデータ保持特性の劣化といった課題が顕著になってきた。
【０００７】
上記の課題の第１の解決手法は、エラー訂正の強化である。例えば、２０ｎ世代のフラッシュメモリでは４０ビット訂正、１０ｎ世代のフラッシュメモリでは６０ビット訂正のエラー訂正を前提としている。
【０００８】
上記の課題の第２の解決手法は、フラッシュメモリのブロックの書き換え回数を均一化するレベリングといった手法である。レベリングとは、外部とのインタフェイスである論理アドレスを、内部で管理している物理アドレスに変換し、同一の論理アドレスにライトしている際も、実際は異なる物理アドレスにライトするようにフラッシュメモリのアドレスを管理する手法である。しかしながらレベリングによって、フラッシュメモリのセルのデータ保持特性バラツキを隠蔽できるものではない。
【０００９】
そこで、特許文献１では、複数チップで構成されたフラッシュメモリにおいて、前記フラッシュメモリの互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取り扱う。そして、グループ内の１ブロックを当該グループ内の他のブロックに書き込まれたユーザデータのパリティ用のブロックに割り当てることにより、誤り訂正能力を強化し、フラッシュメモリのデータ保持特性の劣化を抑制することが提案されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１８３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、半導体プロセスの微細化に従って要求されるエラー訂正数は増加する傾向にある。そこで、フラッシュメモリ自体にエラー訂正機能を内蔵したエラーフリーＮＡＮＤや、エラー訂正回路のみならず、論理アドレスでアクセスし、内部で書き換え回数の平均化処理等を実施するＭａｎａｇｅｍｅｎｔ−ＮＡＮＤ等のフラッシュメモリが商品化されている。
【００１２】
これらのエラーフリーＮＡＮＤやＭａｎａｇｅｍｅｎｔ−ＮＡＮＤのエラー訂正ポリシーは一定ではないが、最大ビット数分のエラー訂正を実施する際において、フラッシュメモリの最大インタフェイス速度のスループットを満足する可能性は非常に小さい。なぜなら、ＢＣＨ符号などのエラー訂正で採用されているエラー訂正アルゴリズムは、以下の（Ｐ１）、（Ｐ２）となるからである。
【００１３】
（Ｐ１）エラー訂正の可否と訂正ビット数の判定
（Ｐ２）エラー訂正位置の検出と訂正
上記（Ｐ２）の実現は、実装面積や消費電力を考慮し、数ビットのエラー訂正を繰り返して実施する手法が採用されることが多い。
【００１４】
また、Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤでは、フラッシュメモリの管理を内部で実施しているため、データの読み出しは、読み出し先頭論理アドレスと読み出しセクタ数を引数としたリードコマンドを発行することにより実施される。リードエラーが発生した場合は、割り込み信号等で通知されるため、リード動作の成否はリードコマンド単位にしか知ることはできない。
【００１５】
ここで、例えば、特許文献１の構成において、フラッシュメモリの代わりに前記のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤを使用した場合の課題について、以下に述べる。  
５個のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤを使用し、４個のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤにユーザデータをライトし、１個のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤにそのパリティデータをライトする。パリティデータの生成法は夫々のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤから抽出された４バイトのユーザデータのＥＸＯＲを計算することによってパリティデータを作成する。
【００１６】
図２は、論理セクタと各Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤとのアサインメントを示す図である。同図において、Ｍ０、Ｍ１、Ｍ２、Ｍ３、Ｍ４は、２ＭＢの容量を有するＭａｎａｇｅｍｅｎｔ−ＮＡＮＤをそれぞれ示す。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤ（Ｍ０）には、セクタ０、セクタ４、----  セクタ４０９２がライトされる。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤ（Ｍ１）には、セクタ１、セクタ５、----  セクタ４０９３がライトされる。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤ（Ｍ２）には、セクタ２、セクタ６、----  セクタ４０９４がライトされる。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤ（Ｍ３）には、セクタ３、セクタ７、----  セクタ４０９５がライトされる。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤ（Ｍ４）には、パリティセクタ０、パリティセクタ１、----  パリティセクタ１０２３がライトされる。ここでパリティセクタ０は、セクタ０、セクタ１、セクタ２、セクタ３のユーザデータのＥＸＯＲを計算することによって生成された５１２バイトのパリティデータを示す。同様にパリティセクタ１は、セクタ４、セクタ５、セクタ６、セクタ７のユーザデータのＥＸＯＲを計算することによって生成された５１２バイトのパリティデータを示す。パリティセクタ１０２３は、セクタ４０９２、セクタ４０９３、セクタ４０９４、セクタ４０９５のユーザデータのＥＸＯＲを計算することによって生成された５１２バイトのパリティデータを示す。
【００１７】
このようにライトされたメモリカードからデータを読み出す場合、次のような課題がある。Ｍａｎａｇｅｍｅｎｔ−ＮＡＮＤからのデータの読み出しは、読み出し先頭論理アドレスと読み出しセクタ数を引数としたリードコマンドを発行することにより実施される。リードエラーが発生した場合は、割り込み信号等で通知されるため、リード動作の成否はリードコマンド単位にしか知ることはできない。
【００１８】
上記の手法によれば、例えば４Ｋバイトのリードコマンドにおいて、前半の２Ｋバイトをリードした後にエラーが発生して割り込みが発生した場合、後半の２Ｋバイトのデータを取得しようとすると、後半の２Ｋバイトのみを読み出すリードコマンドを発行しなければならない。さらに、後半の２Ｋバイトの最初の５１２バイトにリードエラーが発生すれば、次の５１２バイト分進んだアドレスのリードコマンドを発行しなければならない。そのため、エラー発生時の処理時間が大きくなる。その結果、映像データの再生時のリードエラー発生箇所で、転送レートが極端に劣化し、映像のフレーム抜け等が発生してしまう。
【００１９】
また、上記動作を回避するため、夫々のＭａｎａｇｅｍｅｎｔ−ＮＡＮＤにセクタ単位でリードコマンドを発行すると、処理は単純となるが、コマンドオーバーヘッドが大きくなるため、エラーが発生しない場合の転送レートが劣化してしまう。
【００２０】
そこで、以下の実施形態では、上記の課題を解決するために、積符号構成により、エラー耐性を改善しつつ、安定した高速リード転送を実現可能なコントローラ等を提案する。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、実施形態によれば、本発明に係るメモリコントローラは、ホスト装置から与えられる書き込みデータをメモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信するメモリコントローラであって、前記ホスト装置に対して前記書き込みデータ／前記読み出しデータの送受信を行う外部インタフェイスと、前記書き込みデータに対するパリティデータ及び第１のＥＣＣ符号を生成する第１のＥＣＣ生成部と、前記メモリに対する前記書き込みデータ／前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第１のＥＣＣ訂正部と、前記外部インタフェイス、前記第１のＥＣＣ生成部、前記アクセス部、及び前記第１のＥＣＣ訂正部を制御する制御部とを具備し、前記制御部は、前記メモリからデータを読み出す際に、第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により前記第１のＥＣＣ符号を利用してエラー訂正を行うように制御を行う。
【００２２】
また、実施形態によれば、本発明に係る記憶装置は、ホスト装置に送信されるデータを記憶するメモリと、前記メモリを制御するコントローラとを具備し、前記ホスト装置から与えられる書き込みデータを前記メモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信する記憶装置であって、前記メモリコントローラは、前記ホスト装置に対して前記書き込みデータ／前記読み出しデータの送受信を行う外部インタフェイスと、前記書き込みデータに対するパリティデータ及び第１のＥＣＣ符号を生成する第１のＥＣＣ生成部と、前記メモリに対する前記書き込みデータ／前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第１のＥＣＣ訂正部と、前記外部インタフェイス、前記第１のＥＣＣ生成部、前記アクセス部、及び前記第１のＥＣＣ訂正部を制御する制御部とを備え、前記制御部は、前記メモリからデータを読み出す際に、第１の読み出し単位でデータを読み出し、前記第１の読み出し単位で読み出したデータにエラーが発生した場合に、前記第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位に切り替えてデータを読み出し、前記第２の読み出し単位で読み出したデータに対して、前記第１のＥＣＣ訂正部により前記第１のＥＣＣ符号を利用してエラー訂正を行うように制御を行う。
【発明の効果】
【００２３】
上記構成により、例えば、第１の読み出し単位をメモリの２ページ分相当とすれば、所定サイズ以上のリードコマンドや一連のリードコマンドのアドレスが連続であった場合は、読み出しコマンド数を大幅に省略できるため、読み出し性能を高速化できる。
【００２４】
また、例えば、第２の読み出し単位を５１２バイト（＝１セクタ）とすれば、夫々のメモリからの読み出しエラーを１セクタ単位で検出し、第１のＥＣＣ訂正部により、エラー検出されたセクタのデータを、読み出しエラーが検出されなかったセクタのデータを利用して訂正する。このように、１セクタ単位でエラー訂正ができるため、エラー訂正の効果を最大限発揮することができる。
【００２５】
すなわち、比較的大ブロックで読み出しを実施する第１の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第２の読み出し工程とを併用することにより、高速な読み出しと信頼性の確保とを両立することができる。
【図面の簡単な説明】
【００２６】
【図１】多値フラッシュメモリの電子の蓄積状態を示す模式図。
【図２】情報記録再生装置におけるセクタレイアウトを示す図。
【図３】実施の形態１に係る記録装置の構成図。
【図４】フラッシュメモリの消去ブロックの構成図。
【図５】実施の形態１の第１のＥＣＣ生成部の動作説明図。
【図６】実施の形態１におけるリードシーケンスの説明図。
【図７】実施の形態２におけるセクタのレイアウト図。
【図８】実施の形態２におけるリードシーケンスの説明図。
【図９】変形例に係る記録装置の内部構成図。
【発明を実施するための形態】
【００２７】
（実施の形態１）
［０．構成例］  
図３に実施の形態１に係る記録装置１０の全体構成図を示す。本実施の形態１に係る記録装置１０は、内部にエラー訂正処理部を内蔵した複数個のフラッシュメモリ７ａ〜７ｅ、及びフラッシュメモリ７ａ〜７ｅに対してデータの書き込みや読み出しを行うメモリコントローラ２を備える。
【００２８】
図４に本実施の形態１で使用するフラッシュメモリ７ａ〜７ｅの消去ブロックの構成図を示す。  
フラッシュメモリ７ａ〜７ｅは、複数の消去ブロックにより構成され、各消去ブロックは複数のページで構成される。図４に示す消去ブロックは、ページ０〜ページ１２７の１２８ページによって構成され、データの書き込み及び読み出しをページ単位で実施する。例えば、１ページ当たりのデータ容量が８ＫＢであれば、消去ブロックサイズは１ＭＢ、そして、消去ブロック数が１Ｋ個あれば、当該フラッシュメモリの容量は１ＧＢとなる。
【００２９】
本実施の形態１に係るフラッシュメモリ７ａ〜７ｅは、夫々に、第２のＥＣＣ生成部８ａ〜８ｅ及び第２のＥＣＣ訂正部９ａ〜９ｅを搭載する。
【００３０】
メモリコントローラ２は、外部インタフェイス部１と、外部インタフェイス部１を介して転送されるユーザデータより第１のＥＣＣ符号を生成する第１のＥＣＣ生成部３ａと、第１のＥＣＣ符号を用いてデータのエラー訂正を行う第１のＥＣＣ訂正部３ｂとを備える。外部インタフェイス部１は、図示しないホスト装置からのコマンドやユーザデータの送受信を行うインタフェイスである。また、メモリコントローラ２は、第１のＥＣＣ生成部３ａで生成された各シンボルを５個のフラッシュメモリ７ａ〜７ｅに分配するデータ処理部４を備える。データ処理部４は、第２のＥＣＣ訂正部９ａ〜９ｅで出力されるエラー不可を示すエラー情報とフラッシュメモリ７ａ〜７ｅからのデータを第１のＥＣＣ符号の符号順に並び替えて第１のＥＣＣ訂正部３ｂに転送する。メモリコントローラ２は、データ処理部４と、データ処理部４によって５系統に分配されたデータをフラッシュメモリ７ａ〜７ｅにライトするとともに、フラッシュメモリ７ａ〜７ｅからのデータをデータ処理部４に転送するアクセス部５ａ〜５ｅと、シーケンサ（ＣＰＵ）６等を備える。なお、それらの詳細については、後述する。  
なお、外部インタフェイス部１は、メモリコントローラ２の外部に設けてもよい。
【００３１】
［１．ライト時の動作］  
次に、本実施形態に係る記憶装置１０のライト時の動作について説明する。  
第１のＥＣＣ生成部３ａは、外部インタフェイス部１を介して転送されたユーザデータを所定サイズ単位で並列化する並列化部３ａ−１と、並列化されたデータ単位でパリティデータを付加してＥＣＣ符号を生成するＥＣＣ演算部３ａ−２とを有する。ＥＣＣ演算部では、（５，４）第１のＥＣＣ符号を生成する。より具体的には、ＥＣＣ演算部は、並列化された４バイトのデータに対して、ＥＸＯＲを実施してパリティデータを生成する。半導体不良などのエラー耐性の点を考慮すると、第１のＥＣＣ符号を生成する前記４バイトのデータは別チップのフラッシュメモリにライトされることが望ましい。このため、入力されるユーザデータをページ毎（＝８Ｋバイト毎）に、４個のフラッシュメモリ（７ａ〜７ｄ）に割り当てている。そして、第１のＥＣＣ生成部３ａの並列化部により、各フラッシュメモリに割り当てられる８Ｋバイトのデータを４並列化して、夫々の列から１バイトずつ抽出した４バイトのデータをＥＣＣ演算部３ａ−２に入力して、第１のＥＣＣ符号のパリティデータを生成する。
【００３２】
図５はライト動作における主要部のタイミングチャートを示す図である。同図（ａ）は外部インタフェイス部１のデータ入力タイミング、同図（ｂ）は第１のＥＣＣ生成部３ａの処理タイミング、同図（ｃ）はフラッシュメモリ７ａ〜７ｅへのデータライトのタイミングを示す。
【００３３】
まず、時刻ｔ０において、夫々８Ｋバイトの書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３が、順次、外部インタフェイス部１から入力されると、第１のＥＣＣ生成部３の並列化部３ａ−１は、１６セクタ（＝８Ｋバイト）単位で４列に並列（パラレル）化処理を行う。
【００３４】
続いて、時刻ｔ１において、入力された合計３２Ｋバイトの書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３から、第１のＥＣＣ生成部３ａのＥＣＣ演算部３ａ−１は、８ＫバイトのパリティデータＰ０を生成する。
【００３５】
上記のように、６４セクタ分（＝３２Ｋバイト）の書き込みデータが入力されると、第１のＥＣＣ生成部３ａの並列化部３ａ−１は、１６セクタ（＝８Ｋバイト）単位で４列に並列化する。続いて、第１のＥＣＣ生成部３ａのＥＣＣ演算部３ａ−２は、並列化された４バイト単位で、１バイトのパリティデータを生成する（同図の（ａ）、（ｂ）参照）。パリティデータの生成は、８Ｋ回繰り返して実施されるので、本例では、３２Ｋバイトのユーザデータ当たり８Ｋバイトのパリティデータが生成される。
【００３６】
続いて、時刻ｔ２において、データ処理部４は、同図（ｃ）に示すように、並列化された書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３及びパリティデータＰ０を、８Ｋバイト単位でフラッシュメモリ７ａ〜７ｅにそれぞれ割り当てる。
【００３７】
データ処理部４により分配されたパリティデータを含む５系列のデータ（書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３及びパリティデータＰ０）は、アクセス部５ａ〜５ｅを介して、フラッシュメモリ７ａ〜７ｅにライト（書き込み）される。ここで、本例では、書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３はフラッシュメモリ７ａ〜７ｄに夫々ライトされ、第１のＥＣＣ生成部３ａで生成されたパリティデータＰ０はフラッシュメモリ７ｅにライトされる。
【００３８】
シーケンサ６は、例えば、ＣＰＵで構成され、第１のＥＣＣ生成部３ａ、データ処理部４、アクセス部５ａ〜５ｅの上記の処理タイミングを制御する。
【００３９】
続いて、フラッシュメモリ７ａ〜７ｅにおいて、入力された書き込みデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３及びパリティデータＰ０に対して、夫々の第２のＥＣＣ生成部８ａ〜８ｅによりパリティデータを付加した第２のＥＣＣ符号が生成される。そして、フラッシュメモリ７ａ〜７ｅにおいて、入力されたデータＤ００、Ｄ０１、Ｄ０２、Ｄ０３に対して、生成された第２のＥＣＣ符号が付加されてアドレスに対応する夫々のメモリセルにライトされる。
【００４０】
次に、第２のＥＣＣ生成部８ａ〜８ｅの動作について説明する。第２のＥＣＣ生成部８ａ〜８ｅでは、５バイトで構成される夫々の第１のＥＣＣ符号から１バイトずつ抽出し、それらを５１２バイト集めた書き込みデータおよびパリティデータに対して、第２のパリティデータを生成し、付加する。この際、エラー訂正符号はＢＣＨ符号やリードソロモン符号が使用されるが、本例での本質ではないため詳細を割愛する。例えば、本実施の形態では、リードソロモン符号を使用している。そして、５１２バイト単位で３２バイトの第２のパリティデータを追加した（５４４，５１２）ＥＣＣ符号を生成する。第２のＥＣＣ符号は、対象とする５１２バイトのデータをエラー訂正する役割と、エラー訂正が不可であった場合にエラーを検出し、第１のＥＣＣ符号におけるエラー位置情報を提供する役割を担っている。
【００４１】
なお、生成された夫々の第２のＥＣＣ符号は、上記図４で示した消去ブロックの同一ページに格納される。
【００４２】
［２．リード時の動作］
２−１．リード時のフラッシュメモリからのデータ転送動作  
まず、リード時のフラッシュメモリ７ａ〜７ｅからのメモリコントローラ２への読み出しデータの転送動作について説明する。
【００４３】
図３中のフラッシュメモリ７ａ〜７ｅは、上記のように、メモリコントローラ２の制御によりライトされたデータおよびパリティデータを保持している。ここでは、上記のように、ライトされたデータ（Ｄ００、Ｄ０１、Ｄ０２、Ｄ０３）はフラッシュメモリ７ａ〜７ｄに、パリティデータ（Ｐ０）はフラッシュメモリ７ｅにそれぞれ記録されている。
【００４４】
また、夫々のフラッシュメモリに搭載される第２のＥＣＣ訂正部９ａ〜９ｅは、メモリセルよりページ単位でリードされた読み出しデータに対して、５１２バイト単位でエラー訂正を実施する。
【００４５】
第２のＥＣＣ訂正部９ａ〜９ｅは、５１２バイトに対して３２バイトの第２のパリティデータが付加されているので、リードソロモン符号においては、最大１６バイトのエラー訂正が可能である。
【００４６】
アクセス部５ａ〜５ｅは、夫々に対応して接続されたフラッシュメモリ７ａ〜７ｅに記録されているデータのリードを行う。本実施の形態で使用するフラッシュメモリ７ａ〜７ｅは第２のＥＣＣ訂正部９ａ〜９ｅを内蔵している。そのため、アクセス部５ａ〜５ｅは、夫々のフラッシュメモリ７ａ〜７ｅの第２のＥＣＣ訂正部９ａ〜９ｅで、エラー訂正可能な場合は、エラー訂正された５１２バイトのデータをデータ処理部４に出力する。一方、アクセス部５ａ〜５ｅは、１６バイトを超えるエラーが発生した場合は、第２のＥＣＣ訂正部９ａ〜９ｅでエラー訂正不可能となるので、訂正不可を示すエラー情報をデータ処理部４に出力する。
【００４７】
データ処理部４は、夫々のアクセス部５ａ〜５ｅを介して転送される読み出しデータとエラー情報とを第１のＥＣＣ符号の符号順に並び替えて、第１のＥＣＣ訂正部３ｂに転送する。
【００４８】
第１のＥＣＣ訂正部３ｂは、エラー情報が示すエラー訂正不可であったデータを、第１のＥＣＣ符号を用いてエラー訂正する。具体的には、本例での第１のＥＣＣ符号は（５，４）ＥＣＣ符号なので、ＥＣＣ符号を生成している５バイトにおいて、エラーデータを除いた４バイトのＥＸＯＲを計算する。これにより、エラーと検出されたデータを訂正することができる。エラー情報の検出単位は５１２バイトなので、ＥＸＯＲ処理を５１２回実施すれば、エラーデータとなった箇所を復元することが可能となる。
【００４９】
２−２．リード時のメモリコントローラのＥＣＣ動作  
次に、リード時のフラッシュメモリ７ａ〜７ｅから転送された読み出しデータに対して行うメモリコントローラ２のＥＣＣ動作について説明する。
【００５０】
本例に係る動作では、シーケンサ６がメモリコントローラ２全体の制御を行う。以下に説明するように、本例のリードシーケンスでは、第１の読み出し単位による第１の読み出し工程と、第１の読み出し単位よりも読み出しサイズが小さい第２の読み出し単位による第２の読み出し工程との２工程を実施する。そして、第１の読み出し工程でエラー訂正できない場合にのみ、第２の読み出し工程を実施するものである。
【００５１】
上記のように、第１の読み出し工程と第２の読み出し工程とでは、夫々のフラッシュメモリからデータを読み出す単位が異なる。
【００５２】
より具体的には、第１の読み出し工程では、夫々のフラッシュメモリ７ａ〜７ｅより、フラッシュメモリのページ単位あるいはページの整数倍単位で、ライト済みのデータをメモリセルアレイからリード（読み出し）する。これにより、フラッシュメモリ７ａ〜７ｅからの読み出し速度を最適化することができる。例えば、ページサイズが８Ｋバイトのフラッシュメモリ７ａ〜７ｅであって、２ページの同時リードが可能の場合、第１工程におけるフラッシュメモリからの読み出し単位は１６Ｋバイトの整数倍であるのが望ましい。ここで整数倍としているのは、３２Ｋバイト単位のアクセスをするとフラッシュメモリ制御におけるコマンド発行回数が１６Ｋバイト単位のアクセスと比べて半分となるからである。しかしながら、あまり大きくすると小ブロックのランダムリードの性能が劣化するので、小ブロックのランダムリード性能を考慮してフラッシュメモリからの読み出し単位を決定する必要がある。
【００５３】
一方、第２の読み出し工程における夫々のフラッシュメモリからの読み出し単位は、第２のＥＣＣ符号における最小単位とする。
【００５４】
たとえば、仮にフラッシュメモリ７ａ〜７ｅからの読み出しブロックに、第２のＥＣＣ符号が２個含まれていた場合（前半のＥＣＣ符号＋後半のＥＣＣ符号）を考察すると、誤り訂正の状態は、以下の４通りとなる。  
状態（ａ）前半のＥＣＣ符号と後半のＥＣＣ符号が共にＮＧ
状態（ｂ）前半のＥＣＣ符号のみがＮＧ
状態（ｃ）後半のＥＣＣ符号のみがＮＧ
状態（ｄ）前半のＥＣＣ符号と後半のＥＣＣ符号が共にＯＫ
しかしながら、本例のように、第２のＥＣＣ訂正部を内蔵したメモリにおいては、前半のＥＣＣ符号がＮＧであった場合に、それ以降のリード動作が停止される。よって、前記（ｂ）は（ａ）に含まれてしまうことになり、１個のＥＣＣエラーが２個のＥＣＣエラーに拡大してしまう。
【００５５】
第２の読み出し工程では、フラッシュメモリ７ａ〜７ｅの読み出し単位と第２のＥＣＣ符号の単位を一致させることにより、上記エラー拡大の課題を回避できる。
【００５６】
以上に説明したように、読み出し速度を重視して、比較的大ブロックで読み出しを実施する第１の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第２の読み出し工程を併用することにより、記録装置における高速な読み出しと信頼性の確保を両立することができる。
【００５７】
また、第２の読み出し工程の読み出し単位は第２のＥＣＣ符号の単位と等しいことが望ましいが、記録媒体としてフラッシュメモリを使用した場合はフラッシュメモリのページサイズであってもよい。この場合、フラッシュメモリへのアクセスは１６セクタ（ページサイズが８Ｋバイトの場合）となる。また、本例のように、第２のＥＣＣ訂正部を内蔵したメモリでは、その内部において、第２のＥＣＣ符号の単位をセクタ単位としても、フラッシュメモリへのアクセスが１６セクタとなると、エラーの可否は１６セクタ単位でしか検出できない。しかしながら、フラッシメモリへのライトはページ単位で実施されるので、ライト回数と相関性が大きいリテンションによるリードエラーに関しては相関性が高い。つまり、１セクタエラーが発生しているページは、当該ページ内に、数セクタのリードエラーが発生している可能性が大きい。よって、システムのエラー訂正能力（第２のＥＣＣ符号＋第１のＥＣＣ符号）における影響度は小さい。
【００５８】
次に、図６を用いて、メモリコントローラ２によるエラー訂正処理について、より具体的に説明する。図６は、第１の読み出し工程と第２の読み出し工程におけるエラー訂正シーケンスを示す図である。
【００５９】
同図において、ＰＧ００、ＰＧ１０はフラッシュメモリ０（７ａ）におけるページにライトされたデータであり、ＰＧ００とＰＧ１０は同時に読み出し可能な２ページのデータを示す。なお、実際には、２ページのデータが同時にフラッシュメモリの端子から出力されるのではなく、フラッシュメモリ７ａ〜７ｅの内部のキャッシュに同時に読み出された後、ＰＧ００、ＰＧ１０の順に端子よりメモリコントローラ２にリード転送される。同様に、ＰＧ０１、ＰＧ１１はフラッシュメモリ１（７ｂ）のページにライトされたデータである。ＰＧ０２、ＰＧ１２は、フラッシュメモリ２（７ｃ）のページにライトされたデータである。ＰＧ０３、ＰＧ１３はフラッシュメモリ３（７ｄ）のページにライトされたデータである。ＰＧ０４、ＰＧ１４はフラッシュメモリ４（７ｅ）のページにライトされたデータである。
【００６０】
そして、列方向（Column direction）に沿ったページデータＰＧ００、ＰＧ０１、ＰＧ０２、ＰＧ０３、ＰＧ０４のデータ群（シンボル）と、ＰＧ１０、ＰＧ１１、ＰＧ１２、ＰＧ１３、ＰＧ１４のデータ群（シンボル）とで、夫々第１のＥＣＣ符号を構成している。
【００６１】
そして、本例では、第１の読み出し工程のフラッシュメモリのアクセスサイズ（第１の読み出し単位）は、同時読み出し可能な２ページ分とし、第２の読み出し工程のフラッシュメモリのアクセスサイズ（第２の読み出し単位）は１ページ分とする。このため、第１の読み出し工程では、２ページ分同時にフラッシュメモリの内部キャッシュに読み出され、第２の読み出し工程における読み出し速度の約２倍程度となる。
【００６２】
次に、同図６において、ここでは、斜線で示す読み出しデータＰＧ００とＰＧ１１とにエラーが存在する場合の動作について詳細に説明する。
【００６３】
まず、シーケンサ６は、２ページ単位の第１の読み出し単位による第１の読み出し工程を行う。
【００６４】
そのため、時刻ｔ０において、シーケンサ６は、第１の読み出し工程におけるフラッシュメモリ０（７ａ）の読み出しでは、読み出しデータＰＧ００のエラーを検出した時点で、続く読み出しデータＰＧ１０のエラー有無にかかわらず処理を停止する。よって２ページ単位でアクセスする第１の読み出し工程では、ＰＧ００にのみ存在するリードエラーがデータＰＧ００、ＰＧ１０の２ページ分のリードエラーとなる。これは、上記状態（ｂ）が状態（ａ）に含まれてしまうことに対応し、１個のＥＣＣエラーが２個のＥＣＣエラーに拡大してすることである。
【００６５】
また、フラッシュメモリ１（７ｂ）のデータ読み出しでは、同時刻ｔ０の際、ＰＧ０１ではリードエラーは検出されずに、続くＰＧ１１でリードエラーが検出される。このケースではフラッシュメモリ１（７ｂ）へのアクセスはエラーとなるが、データＰＧ０１は出力可能である（データＰＧ１１はリードエラーのため、出力されない）。また、同時刻ｔ０において、その他のフラッシュメモリ２（７ｃ）、フラッシュメモリ３（７ｄ）、フラッシュメモリ４（７ｅ）からの読み出しは、リードエラー無しで正常に終了される。
【００６６】
このようなケースの第１の読み出し工程における第１のＥＣＣ符号について説明する。読み出しデータＰＧ００に関するリードエラーは、共にＥＣＣ符号を構成する列方向（Column direction）に沿った読み出しデータＰＧ０１、ＰＧ０２、ＰＧ０３、ＰＧ０４にエラーが発生していないため、これらを用いて第１のＥＣＣ符号においてエラー訂正が可能である。
【００６７】
しかしながら、読出しデータＰＧ１１に関するエラーは、共に第１のＥＣＣ符号を構成している読み出しデータＰＧ１０がエラーとして処理されるため、読出しデータＰＧ１１と共に２重エラーとなってしまう。そのため、１重エラーしか対応していない第１のＥＣＣ符号では、エラー訂正能力を超えており、エラー訂正をすることができない。
【００６８】
そこで、本例では、上記のように、第１の読み出し工程でエラー訂正が不可能であった場合は、第１の読み出し単位よりも小さい第２の読み出し単位による第２の読み出し工程に切り替えられ、データ読み出しがリトライされる。
【００６９】
即ち、シーケンサ６は、第１の読み出し工程でエラー訂正が不可能であった場合、時刻ｔ１において、第１の読み出し単位よりも小さい第２の読み出し単位による第２の読み出し工程に切り替えて、データ読み出しをリトライするように制御する。より具体的には、シーケンサ６は、フラッシュメモリ７ａ〜７ｅに対し、先頭セクタ番号と読み出しセクタ数をパラメータとするリードコマンドを発行する。この際、第２の読み出し工程の読み出しセクタ数を、第１の読み出し工程の読み出しセクタ数の半分程度に設定する。そのため、本例の第２の読み出し工程では、各フラッシュメモリ７ａ〜７ｅに対して１ページ毎にアクセスする。そのため、同図に示すように、第１の読み出し工程にかかるリードアクセスを、それぞれ半分のサイズの第２の読み出し工程Ａと第２の読み出し工程Ｂとの２回に分割してリトライさせる。
【００７０】
そのため、読み出し単位が切り替えられた第２の読み出し工程Ａのリードは、読み出し単位が１ページ単位である。従って、時刻ｔ１の読み出しにおいて、エラーとなるデータは、フラッシュメモリ７ａからの読み出しデータＰＧ００のみとなる。シーケンサ６は、第１のＥＣＣ訂正部３ｂにより、第１のＥＣＣ符号を構成する列方向（Column direction）のページデータＰＧ０１、ＰＧ０２、ＰＧ０３、ＰＧ０４を用いて、エラーデータＰ００を訂正するように制御する。
【００７１】
続いて、時刻ｔ２において、同様に、ページデータＰＧ１０、ＰＧ１２、ＰＧ１３、ＰＧ１４を読み出す。このように第２の読み出し工程Ａにて制御されたことにより、第１の読み出し工程でエラーとなったページデータＰＧ１０は、エラー無しでリードされる。そのため、ページデータＰＧ１１のみがエラーデータとしてリードされる。シーケンサ６は、第２の読み出し工程Ｂにおいて、第１のＥＣＣ訂正部３ｂにより、第１のＥＣＣ符号を構成する列方向（Column direction）のページデータＰＧ１０、ＰＧ１２、ＰＧ１３、ＰＧ１４を用いて、エラーデータＰ１１を訂正するように制御することができる。
【００７２】
上記のように、本例に係る第２の読み出し工程Ａ，Ｂによれば、エラー訂正能力の範囲内（１重エラー訂正）に収めることができるため、第１の読み出し工程で訂正できなかった読み出しデータＰＧ１１があっても、リードエラーを訂正することができる。
【００７３】
［３．作用効果］  
以上に説明したように、実施の形態１では、高速化を重視した比較的大ブロックで読み出しを実施する第１の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第２の読み出し工程とを切り替えて併用して制御する。そのため、記録装置１０における高速な読み出しとエラーが訂正された信頼性のデータの確保とを両立することができる点で、有利である。
【００７４】
具体的には、実施の形態１の場合、エラー訂正能力を超えない範囲で、第１の読み出し工程において、２ページ分を第１の読み出し単位として、データを読み出す。そのため、例えば、１ページ単位でデータを読み出す場合と比べ、データ読み出し速度を約２倍程度まで高速化することができる。さらに、エラーが発生する場合であっても、第２の読み出し工程に切り替え、エラー訂正の精度を２倍とした１ページ分を第２の読み出し単位として、データを読み出す。そのため、データ保持特性の劣化が進んだフラッシュメモリであっても、エラーを訂正でき、データの信頼性を確保することができる。これは、例えば図１で示した多値メモリ（ＭＬＣ）のように、２値メモリ（ＳＬＣ：Single Level Cell）に比べて、データ保持特性の劣化の進行が進んだ場合であっても、コストを増大させることなく、データの信頼性を確保することができる点で、有効である。
【００７５】
なお、図６に示した例では、第２の読み出し工程を、第２の読み出し工程Ａと第２の読み出し工程Ｂとに２分割して実施する場合を示した。しかしながら、第２の読み出し工程Ａは、第１の読み出し工程においてもエラー訂正可能であるため、必ずしも２回分を実施する必要はない。
【００７６】
また、本実施の形態１では、記録媒体のメモリとしてフラッシュメモリを一例としたが、積符号構成で記録された記録媒体であれば、同様の効果が得られることはいうまでもない。
【００７７】
また、本実施の形態１では、５個のフラッシュメモリ７ａ〜７ｅで説明したが、１個のフラッシュメモリを利用し、本実施の形態１における第２の読み出し工程を５回繰り返し実施しても同様の効果が得られることはいうまでもない。その場合、第１の読み出し工程の読み出し単位は、第１のＥＣＣ符号の単位に設定すればよい。
【００７８】
また、第２の読み出し工程における第１のＥＣＣ訂正部３ｂで実施されるエラー訂正処理は、第１の読み出し工程における第１のＥＣＣ訂正部３ｂで実施されるエラー訂正処理より、高精度に検出されたエラーセクタを使用して実施される。ゆえに、第１の読み出し工程における第１のＥＣＣ訂正部３ｂでのエラー訂正処理は実施してもしなくてもよい。
【００７９】
また、本実施の形態のフラッシュメモリはＥＣＣ機能を搭載したものを一例としたが、例えば、メモリカード等の汎用メモリカードにも適応可能であることはいうまでもない。
【００８０】
また、フラッシュメモリ数を５個で説明したが、これに限るものではなく、フラッシュメモリの複数ページに同時アクセスが可能な構成であれば、同様の効果が得られることはいうまでもない。
【００８１】
（実施の形態２）
［構成例］
実施の形態２に係る構成については、上記実施の形態１と実質的に同様であるため、詳細な説明を省略する。
【００８２】
ここで、実施の形態１では、第１のＥＣＣ符号を（５，４）ＥＣＣ符号とし、１誤り訂正のみに対応したが、本実施の形態では、第１のＥＣＣ符号を（１０，８）ＥＣＣ符号とし、２重誤り訂正に対応する。
【００８３】
実施の形態１の第１のＥＣＣ生成部３ａでは、連続する２Ｋバイトのデータを、５１２バイト単位で、４個のフラッシュメモリに割り当て、各フラッシュメモリに割り当てられた５１２バイトのデータから１バイトずつ抽出した４バイトのデータのＥＸＯＲを計算し、１バイトのパリティデータを生成した。
【００８４】
本実施の形態２の第１のＥＣＣ生成部３ａでは、連続する６４Ｋバイトのデータを、１６Ｋバイト単位で、４個のフラッシュメモリ７ａ〜７ｄに割り当て、各フラッシュメモリに割り当てる１６Ｋバイトのデータより、８Ｋバイトの周期で２バイトずつ抽出する。そして、４個のフラッシュメモリ７ａ〜７ｄに割り当てる８バイトのデータより、（１０，８）ＥＣＣ符号を生成する。（１０，８）ＥＣＣ符号では、８バイトのデータより２バイトのパリティデータを生成する。よって、６４Ｋバイトのデータからは、合計１６Ｋバイトのパリティデータが生成され、これらをフラッシュメモリ７ｅに割り当てる。
【００８５】
この場合、各フラッシュメモリに割り当てる１６Ｋバイトのデータは８Ｋバイト単位で、異なるフラッシュメモリのページに割り当てられることが望ましい。なぜならフラッシュメモリのライトはページ単位で実施されるため、書き換え回数を少なくするには、連続するセクタは同一ページにライトした方がよいからである。さらに、フラッシュメモリのリテンション特性のバラツキは、書き換え回数の最小単位であるページに依存することが大きい。
【００８６】
この場合の（１０，８）ＥＣＣ符号の生成について、詳細に説明する。セクタ番号をＮ＿Ｓｅｃとすると、６４Ｋバイトに相当する１２８セクタを、以下のように割り当てる。
フラッシュメモリ０  ：  （Ｎ＿Ｓｅｃ  ％１２８）／３２  ＜  １  のセクタ
フラッシュメモリ１  ：  １  ≦（Ｎ＿Ｓｅｃ  ％１２８）／３２  ＜  ２  のセクタ
フラッシュメモリ２  ：  ２  ≦（Ｎ＿Ｓｅｃ  ％１２８）／３２  ＜  ３  のセクタ
フラッシュメモリ３  ：  ３  ≦（Ｎ＿Ｓｅｃ  ％１２８）／３２  ＜  ４  のセクタ
（上記の％１２８は１２８で割った余りを示す。）
【００８７】
そして、各フラッシュメモリに割り与えられた３２セクタにおいて、連続する１６セクタを、夫々のフラッシュメモリの同一ページに割り当てる。
【００８８】
（１０，８）ＥＣＣ符号を構成するシンボルは、次式（※）を満たすセクタのグループから１バイトずつ合計８バイト抽出し、（１０，８）ＥＣＣ符号を生成する。
【００８９】
Ｎ＿Ｓｅｃ  ％１２８＝｛Ｋ，Ｋ＋１６,Ｋ＋３２,Ｋ＋４８,Ｋ＋６４,Ｋ＋８０,Ｋ＋９６,Ｋ＋１１２｝（Ｋは、０≦Ｋ＜１２８の整数）・・・式（※）
生成した２バイトのパリティデータ（Ｐ０、Ｐ１）はフラッシュメモリ４において、夫々がフラッシュメモリの異なるページに割り当てられる。
【００９０】
図７は、６４Ｋバイトの各セクタの割り当てを示す図である。同図において、フラッシュメモリ０−３におけるＳを接頭語とする番号はセクタ番号を示す。フラッシュメモリ４におけるＰを接頭語とする番号の下位１ビットは２バイトで構成されるパリティデータのバイトを識別し、それ以外のビットは、パリティデータが付属するグループを示している。例えば、フラッシュメモリ４のページ０におけるＰを接頭語とする番号の下位１ビット”０”はパリティデータのバイトを識別し、以外のビット”０”〜”１５”はパリティデータが付属するグループ（Group 0 (0)-(15)）を示す。
【００９１】
同図に示すように、フラッシュメモリ０（７ａ）にはセクタＳ０〜Ｓ３１が、フラッシュメモリ１（７ｂ）にはセクタＳ３２〜Ｓ６３が、フラッシュメモリ２（７ｃ）にはセクタＳ６４〜Ｓ９５が、フラッシュメモリ３（７ｅ）にはセクタＳ９６〜Ｓ１２７がそれぞれ割り当てられる。夫々のフラッシュメモリにおいて、前半の１６セクタと後半の１６セクタを別ページに割り当てられる。そして、１６セクタ毎に１バイト取り出し（Ｓ０、Ｓ１６、Ｓ３２、Ｓ４８、Ｓ６４、Ｓ８０、Ｓ９６、Ｓ１１２から１バイトずつ）、（１０,８）ＥＣＣ符号により２バイトのパリティデータを生成し、同図のセクタＰ００とＰ０１に割り当てる。このように割り当てることにより、（１０，８）ＥＣＣ符号を構成する１０個のシンボルをフラッシュメモリの異なるページに割り与えることができる。
【００９２】
これらの処理を、第１のＥＣＣ生成部３ａが、５１２回繰り返して実施することにより、夫々のセクタ（例えば、Ｓ０、Ｓ１６、Ｓ３２、Ｓ４８、Ｓ６４、Ｓ８０、Ｓ９６、Ｓ１１２）における第１のＥＣＣ符号の生成処理が完了する。同図では１６個のセクタで実施するので、第１のＥＣＣ符号の生成回数は（５１２＊１６）回実施することになる。
【００９３】
［リード動作］  
このように、第１のＥＣＣ符号を生成して、同様にフラッシュメモリ７ａ〜７ｅに書き込まれたデータの読み出し動作について、以下説明する。
【００９４】
実施の形態１では、比較的大ブロックで読み出しを実施する第１の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第２の読み出し工程を併用する。そして、記録装置における高速な読み出しと信頼性の確保を両立する例を説明した。
【００９５】
本実施の形態２では、上記のように、第１のＥＣＣ符号を２重訂正とし、第１の読み出し工程では、第２の読み出し工程より大きな第１のブロックサイズで読み出して１重エラー訂正のみを実施し、第２の読み出し工程では、第１のブロックサイズを２個以上に分割した第２のブロックサイズで読み出し、第１のブロックサイズ相当の読み出しを終了した後に、第１のＥＣＣ符号による２重エラー訂正を行う。
【００９６】
エラー訂正シーケンス  
図８は、実施の形態２に係る第１の読み出し工程と第２の読み出し工程におけるエラー訂正シーケンスを説明する図である。
【００９７】
同図において、データＰＧ００、ＰＧ０１は、フラッシュメモリ０（７ａ）におけるページにライトされたデータである。データＰＧ００とＰＧ０１は同時に読み出し可能な２ページを示す。実際は２ページのデータが同時にフラッシュメモリ７ａの端子から出力されるのではなく、フラッシュメモリ７ａの内部キャッシュに同時に読み出された後、データＰＧ００、ＰＧ０１の順に端子よりリードされる。同様にデータＰＧ１０、ＰＧ１１はフラッシュメモリ１（７ｂ）のページにライトされたデータである。データＰＧ２０、ＰＧ２１はフラッシュメモリ２（７ｃ）のページにライトされたデータである。データＰＧ３０、ＰＧ３１はフラッシュメモリ３（７ｄ）のページにライトされたデータである。データＰＧ４０、ＰＧ４１はフラッシュメモリ４（７ｅ）のページにライトされたデータである。
【００９８】
そして、（１０，８）ＥＣＣ符号である第１のＥＣＣ符号は、データＰＧ００、ＰＧ０１、ＰＧ１０、ＰＧ１１、ＰＧ２０、ＰＧ２１、ＰＧ３０、ＰＧ３１、ＰＧ４０、ＰＧ４１の１０ページに跨ってライトされており、その２ページ分にリードエラーが発生していた場合もエラー訂正可能である。
【００９９】
また、使用しているフラッシュメモリは、本実施の形態１と同様に、第２のＥＣＣ符号にかかる処理を内蔵しているフラッシュメモリである。そして、第１の読み出し工程のフラッシュメモリのアクセスサイズは同時読み出し可能な２ページ分とし、第２の読み出し工程のフラッシュメモリのアクセスサイズは１ページとする。このため、第１の読み出し工程では、２ページ分同時にフラッシュメモリの内部キャッシュに読み出されるため、第２の読み出し工程における読み出し速度の約２倍程度となる。
【０１００】
まず、同図の第１の読み出し工程（０）において、斜線で示すデータＰＧ００にのみエラーが存在する場合の動作について説明する。
【０１０１】
時刻ｔ０において、シーケンサ６は、フラッシュメモリへのアクセスサイズを２ページ単位としている第１の読み出し工程（０）におけるフラッシュメモリ０（７ａ）のデータ読み出において、データＰＧ００のエラーを検出した時点で、データＰＧ０１のエラー有無にかかわらず処理を停止する。よって、第１の読み出し工程（０）では、データＰＧ００にのみ存在するリードエラーが、データＰＧ００とＰＧ０１の２ページ分のエラーとなる。フラッシュメモリ１（７ｂ）〜フラッシュメモリ４（７ｅ）のデータ読み出しでは、読み出しエラーは発生しない。この場合、第１のＥＣＣ符号を構成している１０個のシンボル（ＰＧ００〜ＰＧ４１）において、データＰＧ００とＰＧ０１との２シンボルがエラーとなる。しかしながら、上記のように、本例の（１０，８）第１のＥＣＣ符号は、２シンボルにリードエラー（２重エラー）が発生していた場合もエラー訂正が可能である。従って、エラー訂正能力の範囲内であるので、第１の読み出し工程（０）においては、エラー訂正可能となる。
【０１０２】
次に、斜線で示すデータＰＧ０２とＰＧ１２にエラーが存在する第１の読み出し工程（１）の動作について説明する。
【０１０３】
時刻ｔ１において、フラッシュメモリ０（７ａ）の読み出しでは、データＰＧ０２のエラーを検出した時点で、データＰＧ０３のエラー有無にかかわらず処理を停止する。よって、２ページ単位でアクセスする本工程では、データＰＧ０２にのみ存在するリードエラーが、データＰＧ０２とＰＧ０３の２ページ分のエラーとなる。また、フラッシュメモリ１（７ｂ）の読み出しでも同様に、データＰＧ１２にのみ存在するリードエラーが、データＰＧ１２とＰＧ１３の２ページ分のエラーとなる。一方、フラッシュメモリ２（７ｃ）〜フラッシュメモリ４（７ｅ）の読み出しでは、読み出しエラーは発生していない。この場合、第１のＥＣＣ符号を構成している１０個（ＰＧ０２、ＰＧ０３、ＰＧ１２、ＰＧ１３、ＰＧ２２、ＰＧ２３、ＰＧ３２、ＰＧ３３、ＰＧ４２、ＰＧ４３の１０ページから１バイトずつ抽出されている）のシンボルにおいて、データＰＧ０２とＰＧ１２のみならず、データＰＧ０３とＰＧ１３にかかる４シンボルのエラーに拡大してしまう。ゆえに、本例の第１のＥＣＣ符号では、エラー訂正能力の範囲外となり、第１の読み出し工程（１）においては、エラー訂正不可能となる。
【０１０４】
そこで、第２の読み出し工程Ａと第２の読み出し工程Ｂとにより、第１の読み出し工程（１）にかかるリトライを実施する。第２の読み出し工程では、フラッシュメモリへのアクセスサイズをページ単位とする。しかしながら、１回の第２の読み出し工程でアクセスした場合のリードデータは５ページ分となり、第１のＥＣＣ符号によるエラー訂正で必要なページ数（１０ページ）に満たない。そこで、同図のように、第２の読み出し工程Ａと第２の読み出し工程Ｂの２回の読み出しを実施後に、第１のＥＣＣ符号によるエラー訂正を実施する。第２の読み出し工程ＡではＰＧ０２とＰＧ１２にリードエラーが発生しているが、第２の読み出し工程Ｂでは、リードエラーは発生しない。ゆえに、１０ページ中、２ページ分のリードエラーとなり、第１のＥＣＣ符号を生成している１０個のシンボルにおいて２シンボルのエラーとなり、エラー訂正可能となる。
【０１０５】
より具体的には、時刻ｔ２に、シーケンサ６は、第１の読み出し工程（１）で、エラー訂正が不可能であった場合に、第１の読み出し単位（１）よりも小さい第２の読み出し単位による第２の読み出し工程Ａ、Ｂに切り替えて、データ読み出しをリトライする。より具体的には、シーケンサ６は、フラッシュメモリ７ａ〜７ｅに対し、先頭セクタ番号と読み出しセクタ数をパラメータとするリードコマンドを発行する。この際、第２の読み出し工程の読み出しセクタ数を、第１の読み出し工程の読み出しセクタ数の半分程度に設定する。そのため、本例の第２の読み出し工程では、各フラッシュメモリ７ａ〜７ｅに対して１ページ毎にアクセスする。そのため、同図に示すように、第１の読み出し工程にかかるリードアクセスを、それぞれ半分のサイズの第２の読み出し工程Ａと第２の読み出し工程Ｂとの２回に分割してリトライさせる。
【０１０６】
即ち、第２の読み出し工程Ａでは、時刻ｔ２に、フラッシュメモリ７ａ〜７ｅへページ単位でアクセスし、５ページ分の第１のＥＣＣ符号によるエラー訂正で必要なシンボル数の半分（５シンボル）を確保する。
【０１０７】
続いて、時刻ｔ３において、シーケンサ６は、同様の第２の読み出し工程Ｂを行い、フラッシュメモリ７ａ〜７ｅへページ単位でアクセスし、残りの５ページ分の第１のＥＣＣ符号によるエラー訂正で必要なシンボル数の半分（５シンボル）を確保する。
【０１０８】
続いて、上記の第２の読み出し工程Ａと第２の読み出し工程Ｂとの２回の読み出しにより確保した１０シンボル（ＰＧ０２、ＰＧ０３、ＰＧ１２、ＰＧ１３、ＰＧ２２、ＰＧ２３、ＰＧ３２、ＰＧ３３、ＰＧ４２、ＰＧ４３）を用い、第１のＥＣＣ訂正部３ｂにより（１０，８）第１のＥＣＣ符号によるエラーデータ（ＰＧ０２、ＰＧ１２）のエラー訂正を行う。これにより、第１の読み出し工程では、訂正できなかったエラーを訂正することができる。
【０１０９】
［作用効果］  
以上説明したように、本実施の形態２では、第１のＥＣＣ符号の訂正能力を２重訂正とし、フラッシュメモリへのアクセスサイズの比較的大きい第１の読み出し工程で１重訂正のみを実施し、第１の読み出し工程で実施したフラッシュメモリへのアクセスを２回以上に分割して行う第２の読み出し工程で２重訂正を実施する。そのため、記録装置１０における高速な読み出しと信頼性の確保とを両立することができる。本例のように、訂正能力を強化した２重訂正においても、必要に応じて、適用することが可能である。
【０１１０】
なお、本実施の形態では、第１のＥＣＣ符号によるエラー訂正数を２重訂正としたが、３重訂正や４重訂正など２重訂正以上あれば、同様の構成で実現可能であることはいうまでもない。４重訂正であれば、第１の読み出し工程におけるフラッシュメモリへのアクセスサイズは第２の読み出し工程におけるフラッシュメモリへのアクセスサイズの４倍となる。
【０１１１】
また、本実施の形態のフラッシュメモリは、ＥＣＣ機能を備えるフラッシュメモリを一例にあげて説明したが、メモリカードなどの汎用メモリカードにも適応可能であることはいうまでもない。
【０１１２】
また、フラッシュメモリ数を５個で説明したが、これに限るものではなく、フラッシュメモリの複数ページに同時アクセスが可能な構成であれば、同様の効果が得られることはいうまでもない。
【０１１３】
（変形例）  
実施の形態１及び実施の形態２では、第２のＥＣＣ訂正部を内蔵したフラッシュメモリで説明したが、第２のＥＣＣ訂正部をコンロトローラ側に内蔵してもよい。
【０１１４】
［構成例］  
即ち、図９は、変形例に係る記録装置１０ｂの全体構成例を示す図である。図示するように、第２のＥＣＣ生成部８ａ〜８ｅおよび第２のＥＣＣ訂正部９ａ〜９ｅがフラッシュメモリ７ａ〜７ｅに内蔵されているのではなく、第２のＥＣＣ生成部８ａ〜８ｅおよび第２のＥＣＣ訂正部９ａ〜９ｅがコントローラ２に内蔵されている点で、上記実施の形態１、２と相違する。
【０１１５】
第２のＥＣＣ生成部８ａ〜８ｅおよび第２のＥＣＣ訂正部９ａ〜９ｅがフラッシュメモリ７ａ〜７ｅに搭載されている場合、第２のＥＣＣ訂正部９ａ〜９ｅによるエラー訂正が不可となると、以降のリードデータがメモリコントローラ２へ転送されない。
しかしながら、本変形例のように、第２のＥＣＣ訂正部９ａ〜９ｅをメモリコントローラ２に搭載すれば、第２のＥＣＣ訂正部９ａ〜９ｅによるエラー訂正が不可になったとしても、読出しデータがフラッシュメモリ７ａ〜７ｅからコントローラ２へ転送されているので、それ以降の動作を継続することが可能である。ゆえに、本変形例の場合、第２のＥＣＣ訂正部９ａ〜９ｅの訂正単位以上の単位で読み出せば、第２のＥＣＣ訂正部９ａ〜９ｅからの情報が欠落することはない。
【０１１６】
この変形例の場合、第１の読み出し工程において、第１の読み出し単位を第２の読み出し単位より大きく設定し、実施の形態１のように第１のＥＣＣ符号をスルーすれば、第１のＥＣＣ訂正のスループットやその演算レイテンシの影響を受けることがないので、高信頼性の第２の読み出し工程との併用により、高速・高信頼性の記録装置を提供することができる。
【０１１７】
また、第１の読み出し工程において、第１の読み出し単位を第２の読み出し単位より大きく設定し、実施の形態２のように、第１のＥＣＣ訂正をその訂正能力以下で使用すれば、最大訂正能力で第１のＥＣＣ訂正を使用する場合より、高スループット、低消費電力、低レイテンシとなる。ゆえに、高信頼性の第２の読み出し工程との併用により、高速・高信頼性の記録装置を提供することができる。
【０１１８】
以上、実施の形態１、２及び変形例を用いて本発明の説明を行ったが、本発明は上記各実施形態および変形例に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記各実施形態および変形例には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。
【産業上の利用可能性】
【０１１９】
実施形態によれば、記録装置は、複数のフラッシュメモリに跨るＥＣＣ符号を構成しエラー耐性を改善するとともに、２個の再生モードをエラー訂正の可否で切り替えて使用することにより、高速転送とともに高信頼性を実現している。ゆえに、高速転送ならびに高信頼性が要求される業務用のメモリカードや画像データの処理装置で使用される可能性が大きい。
【符号の説明】
【０１２０】
１  外部インタフェイス
２  メモリコントローラ
３ａ  第１のＥＣＣ生成部
３ｂ  第１のＥＣＣ訂正部
４  データ処理部
５ａ〜５ｅ  アクセス部
６  シーケンサ（制御部）
７ａ〜７ｅ  フラッシュメモリ
８ａ〜８ｅ  第２のＥＣＣ生成部
９ａ〜９ｅ  第２のＥＣＣ訂正部
１０、１０ｂ  記憶装置
【図１】
2013093012.tif 000003
【図２】
2013093012.tif 000004
【図３】
2013093012.tif 000005
【図４】
2013093012.tif 000006
【図５】
2013093012.tif 000007
【図６】
2013093012.tif 000008
【図７】
2013093012.tif 000009
【図８】
2013093012.tif 000010
【図９】
2013093012.tif 000011