Memory controller and memory device

申请号 JP2012148772 申请日 2012-07-02 公开(公告)号 JP2013093012A 公开(公告)日 2013-05-16
申请人 Panasonic Corp; パナソニック株式会社; 发明人 OTSUKA TAKESHI;
摘要 PROBLEM TO BE SOLVED: To provide a memory controller and a memory device advantageous for increasing read operation speed and reliability.SOLUTION: A memory controller 2 comprises: an external interface 1; a first ECC generation section 3a; an access section 4 that controls writing on/reading from memories 7a-7e; a first ECC correction section 3b that corrects error on read error; and a controller 6 that controls the above. The controller 6 reads a piece of data by using a first read unit when reading the piece of data from the memories, and when an error occurs on the data read by the first read unit, reads the piece of data after switching the read unit to a second unit, the read size of which is smaller than that of the first read unit; and controls the first ECC correction section to perform an error correction on the data read by the second read unit by using the first ECC code.
权利要求
  • ホスト装置から与えられる書き込みデータをメモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信するメモリコントローラであって、前記メモリコントローラは、
    前記ホスト装置に対して前記書き込みデータ/前記読み出しデータの送受信を行う外部インタフェイスと、
    前記書き込みデータに対するパリティデータ及び第1のECC符号を生成する第1のECC生成部と、
    前記メモリに対する前記書き込みデータ/前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、
    前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第1のECC訂正部と、
    前記外部インタフェイス、前記第1のECC生成部、前記アクセス部、及び前記第1のECC訂正部を制御する制御部とを具備し、前記制御部は、
    前記メモリからデータを読み出す際に、第1の読み出し単位でデータを読み出し、前記第1の読み出し単位で読み出したデータにエラーが発生した場合に、前記第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位に切り替えてデータを読み出し、
    前記第2の読み出し単位で読み出したデータに対して、前記第1のECC訂正部により前記第1のECC符号を利用してエラー訂正を行うように制御を行う メモリコントローラ。
  • 前記第1のECC生成部は、N個(Nは2以上の整数)のエラー訂正が可能な第1のECC符号を生成し、
    前記制御部は、前記メモリからデータを読み出す際に、前記第1の読み出し単位で、データを読み出し、前記第1のECC符号を利用して、M個(MはM<Nを満たす0以上の整数)の誤り訂正を行い、
    前記第1の読み出し単位でデータを読み出し、前記第1の読み出し単位で読み出したデータにエラーが発生した場合に、前記第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位に切り替えてデータを読み出し、
    前記第2の読み出し単位で読み出したデータに対して、前記第1のECC訂正部により、前記第1のECC符号を利用して、N個のエラー訂正を行う 請求項1に記載のメモリコントローラ。
  • 前記メモリは、前記コントローラに複数個接続され、
    前記アクセス部は、前記メモリと対応する同数個で配置され、
    前記制御部は、前記第1のECC符号を構成する夫々のシンボルを、前記複数のアクセス部を介して、それぞれ異なる前記複数のメモリに記録させる 請求項1又は2に記載のメモリコントローラ。
  • 前記メモリは、前記第1のECC符号を構成する複数のシンボルと直交する複数のシンボルから第2のECC符号を生成する第2のECC生成部と、前記第2のECC符号により読み出されるデータの誤りを訂正する第2のECC訂正部とを備え、
    前記制御部は、前記メモリから読み出しデータを読み出す際に、前記第2のECC訂正部により訂正が不可とされるデータを、前記第1のECC訂正部によって誤り訂正するように制御する 請求項1乃至3のいずれかに記載のメモリコントローラ。
  • 前記第1のECC符号を構成する複数のシンボルと直交する複数のシンボルから第2のECC符号を生成する第2のECC生成部と、
    前記第2のECC符号により読み出されるデータの誤りを訂正する第2のECC訂正部とを更に具備し、
    前記制御部は、前記メモリから読み出しデータを読み出す際に、前記第2のECC訂正部により訂正が不可とされるデータを、前記第1のECC訂正部によって誤り訂正するように制御する 請求項1乃至3のいずれかに記載のメモリコントローラ。
  • 前記制御部は、前記第2のECC符号を前記メモリに対して、前記メモリを構成するブロック単位でライトする 請求項4又は5に記載のメモリコントローラ。
  • 前記制御部は、前記第1の読み出し単位又は前記第2の読み出し単位でデータを読み出す際に、前記メモリに対して、先頭セクタ番号と連続セクタ数とをパラメータとする内部リードコマンドを発行し、
    前記第1の読み出し単位でリードされるデータがエラー訂正できない場合、それ以降の読み出し動作を停止させるように制御する 請求項1乃至6のいずれかに記載のメモリコントローラ。
  • 前記メモリは不揮発性メモリであり、
    前記第1の読み出し単位は、前記不揮発性メモリの読み出し単位であるページの自然数倍の単位である 請求項1乃至7のいずれかに記載のメモリコントローラ。
  • 前記メモリは不揮発性メモリであり、
    前記第1の読み出し単位は、前記不揮発性メモリの読み出し単位であるページの単位である 請求項1乃至7のいずれかに記載のメモリコントローラ。
  • ホスト装置に送信されるデータを記憶するメモリと、前記メモリを制御するコントローラとを具備し、前記ホスト装置から与えられる書き込みデータを前記メモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信する記憶装置であって、前記メモリコントローラは、
    前記ホスト装置に対して前記書き込みデータ/前記読み出しデータの送受信を行う外部インタフェイスと、
    前記書き込みデータに対するパリティデータ及び第1のECC符号を生成する第1のECC生成部と、
    前記メモリに対する前記書き込みデータ/前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、
    前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第1のECC訂正部と、
    前記外部インタフェイス、前記第1のECC生成部、前記アクセス部、及び前記第1のECC訂正部を制御する制御部とを備え、前記制御部は、
    前記メモリからデータを読み出す際に、第1の読み出し単位でデータを読み出し、前記第1の読み出し単位で読み出したデータにエラーが発生した場合に、前記第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位に切り替えてデータを読み出し、
    前記第2の読み出し単位で読み出したデータに対して、前記第1のECC訂正部により前記第1のECC符号を利用してエラー訂正を行うように制御を行う 記憶装置。
  • 说明书全文

    本開示は、不揮発性メモリのデータ保持特性のバラツキ及び書き換え回数に伴う劣化を抑制する制御をするメモリコントローラ、記録装置等に関する。

    従来、フラッシュメモリが内蔵されたカード型の記録媒体であるSD(Secure Digital)カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。

    半導体記録装置に内蔵されるフラッシュメモリは、一定サイズの多数の物理ブロックから構成され、物理ブロックの単位でデータを消去できるメモリである。 昨今の大容量化の要請に対応すべく、フラッシュメモリは1セルで2ビット以上のデータが蓄積できる多値フラッシュメモリ(MLC: Multi Level Cell)が商品化されている。

    図1に、多値フラッシュメモリのフローティングゲートに蓄積する電子の数と閾値電圧(Vth)の関係の一例を示す。 図1に示すように、4値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧(Vth)に従って4状態で管理する。 消去状態は電位が一番低く、これを(1,1)とする。 そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々(1,0)、(0,0)、(0,1)とする。 このように、蓄積する電子の数に比例して閾値電位が上昇するので、所定の電位の閾値に収まるように制御することによって、1つのメモリセルに2ビットのデータを記録することができる。

    しかしながら、多値フラッシュメモリにおいては、電子のチャージ量によって4状態を識別するために、各状態間の閾値電圧の差が、2値メモリ(SLC:Single Level Cell)より小さい。
    また、書き換え回数を重ねる毎に、データの書き換えを繰り返すと、電子の注入と引き抜きによってゲート酸化膜にわずかな損傷が発生する。 この損傷が積み重なると電子トラップが数多く形成されるため、実際のフローティングゲートに蓄積される電子数が減少してしまう。 半導体プロセスの微細化に比例して、フローティングゲートに蓄積される電子数が少なくなるため、電子トラップの影響は大きくなる。

    このように、フラッシュメモリの大容量化を支える多値記録および半導体プロセスの微細化に従い、フラッシュメモリのデータ保持特性の劣化といった課題が顕著になってきた。

    上記の課題の第1の解決手法は、エラー訂正の強化である。 例えば、20n世代のフラッシュメモリでは40ビット訂正、10n世代のフラッシュメモリでは60ビット訂正のエラー訂正を前提としている。

    上記の課題の第2の解決手法は、フラッシュメモリのブロックの書き換え回数を均一化するレベリングといった手法である。 レベリングとは、外部とのインタフェイスである論理アドレスを、内部で管理している物理アドレスに変換し、同一の論理アドレスにライトしている際も、実際は異なる物理アドレスにライトするようにフラッシュメモリのアドレスを管理する手法である。 しかしながらレベリングによって、フラッシュメモリのセルのデータ保持特性バラツキを隠蔽できるものではない。

    そこで、特許文献1では、複数チップで構成されたフラッシュメモリにおいて、前記フラッシュメモリの互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取り扱う。 そして、グループ内の1ブロックを当該グループ内の他のブロックに書き込まれたユーザデータのパリティ用のブロックに割り当てることにより、誤り訂正能を強化し、フラッシュメモリのデータ保持特性の劣化を抑制することが提案されている。

    特開2006−18373号公報

    上述したように、半導体プロセスの微細化に従って要求されるエラー訂正数は増加する傾向にある。 そこで、フラッシュメモリ自体にエラー訂正機能を内蔵したエラーフリーNANDや、エラー訂正回路のみならず、論理アドレスでアクセスし、内部で書き換え回数の平均化処理等を実施するManagement−NAND等のフラッシュメモリが商品化されている。

    これらのエラーフリーNANDやManagement−NANDのエラー訂正ポリシーは一定ではないが、最大ビット数分のエラー訂正を実施する際において、フラッシュメモリの最大インタフェイス速度のスループットを満足する可能性は非常に小さい。 なぜなら、BCH符号などのエラー訂正で採用されているエラー訂正アルゴリズムは、以下の(P1)、(P2)となるからである。

    (P1)エラー訂正の可否と訂正ビット数の判定 (P2)エラー訂正位置の検出と訂正 上記(P2)の実現は、実装面積や消費電力を考慮し、数ビットのエラー訂正を繰り返して実施する手法が採用されることが多い。

    また、Management−NANDでは、フラッシュメモリの管理を内部で実施しているため、データの読み出しは、読み出し先頭論理アドレスと読み出しセクタ数を引数としたリードコマンドを発行することにより実施される。 リードエラーが発生した場合は、割り込み信号等で通知されるため、リード動作の成否はリードコマンド単位にしか知ることはできない。

    ここで、例えば、特許文献1の構成において、フラッシュメモリの代わりに前記のManagement−NANDを使用した場合の課題について、以下に述べる。
    5個のManagement−NANDを使用し、4個のManagement−NANDにユーザデータをライトし、1個のManagement−NANDにそのパリティデータをライトする。 パリティデータの生成法は夫々のManagement−NANDから抽出された4バイトのユーザデータのEXORを計算することによってパリティデータを作成する。

    図2は、論理セクタと各Management−NANDとのアサインメントを示す図である。 同図において、M0、M1、M2、M3、M4は、2MBの容量を有するManagement−NANDをそれぞれ示す。 Management−NAND(M0)には、セクタ0、セクタ4、---- セクタ4092がライトされる。 Management−NAND(M1)には、セクタ1、セクタ5、---- セクタ4093がライトされる。 Management−NAND(M2)には、セクタ2、セクタ6、---- セクタ4094がライトされる。 Management−NAND(M3)には、セクタ3、セクタ7、---- セクタ4095がライトされる。 Management−NAND(M4)には、パリティセクタ0、パリティセクタ1、---- パリティセクタ1023がライトされる。 ここでパリティセクタ0は、セクタ0、セクタ1、セクタ2、セクタ3のユーザデータのEXORを計算することによって生成された512バイトのパリティデータを示す。 同様にパリティセクタ1は、セクタ4、セクタ5、セクタ6、セクタ7のユーザデータのEXORを計算することによって生成された512バイトのパリティデータを示す。 パリティセクタ1023は、セクタ4092、セクタ4093、セクタ4094、セクタ4095のユーザデータのEXORを計算することによって生成された512バイトのパリティデータを示す。

    このようにライトされたメモリカードからデータを読み出す場合、次のような課題がある。 Management−NANDからのデータの読み出しは、読み出し先頭論理アドレスと読み出しセクタ数を引数としたリードコマンドを発行することにより実施される。 リードエラーが発生した場合は、割り込み信号等で通知されるため、リード動作の成否はリードコマンド単位にしか知ることはできない。

    上記の手法によれば、例えば4Kバイトのリードコマンドにおいて、前半の2Kバイトをリードした後にエラーが発生して割り込みが発生した場合、後半の2Kバイトのデータを取得しようとすると、後半の2Kバイトのみを読み出すリードコマンドを発行しなければならない。 さらに、後半の2Kバイトの最初の512バイトにリードエラーが発生すれば、次の512バイト分進んだアドレスのリードコマンドを発行しなければならない。 そのため、エラー発生時の処理時間が大きくなる。 その結果、映像データの再生時のリードエラー発生箇所で、転送レートが極端に劣化し、映像のフレーム抜け等が発生してしまう。

    また、上記動作を回避するため、夫々のManagement−NANDにセクタ単位でリードコマンドを発行すると、処理は単純となるが、コマンドオーバーヘッドが大きくなるため、エラーが発生しない場合の転送レートが劣化してしまう。

    そこで、以下の実施形態では、上記の課題を解決するために、積符号構成により、エラー耐性を改善しつつ、安定した高速リード転送を実現可能なコントローラ等を提案する。

    上記課題を解決するために、実施形態によれば、本発明に係るメモリコントローラは、ホスト装置から与えられる書き込みデータをメモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信するメモリコントローラであって、前記ホスト装置に対して前記書き込みデータ/前記読み出しデータの送受信を行う外部インタフェイスと、前記書き込みデータに対するパリティデータ及び第1のECC符号を生成する第1のECC生成部と、前記メモリに対する前記書き込みデータ/前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第1のECC訂正部と、前記外部インタフェイス、前記第1のECC生成部、前記アクセス部、及び前記第1のECC訂正部を制御する制御部とを具備し、前記制御部は、前記メモリからデータを読み出す際に、第1の読み出し単位でデータを読み出し、前記第1の読み出し単位で読み出したデータにエラーが発生した場合に、前記第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位に切り替えてデータを読み出し、前記第2の読み出し単位で読み出したデータに対して、前記第1のECC訂正部により前記第1のECC符号を利用してエラー訂正を行うように制御を行う。

    また、実施形態によれば、本発明に係る記憶装置は、ホスト装置に送信されるデータを記憶するメモリと、前記メモリを制御するコントローラとを具備し、前記ホスト装置から与えられる書き込みデータを前記メモリにライトし、前記メモリから読み出しデータをリードして前記ホスト装置に送信する記憶装置であって、前記メモリコントローラは、前記ホスト装置に対して前記書き込みデータ/前記読み出しデータの送受信を行う外部インタフェイスと、前記書き込みデータに対するパリティデータ及び第1のECC符号を生成する第1のECC生成部と、前記メモリに対する前記書き込みデータ/前記読み出しデータ又はパリティデータの書き込み及び読み出しを制御するアクセス部と、前記アクセス部を介して前記メモリから読み出すデータ及びパリティデータを用い、読み出しデータのエラーを訂正する第1のECC訂正部と、前記外部インタフェイス、前記第1のECC生成部、前記アクセス部、及び前記第1のECC訂正部を制御する制御部とを備え、前記制御部は、前記メモリからデータを読み出す際に、第1の読み出し単位でデータを読み出し、前記第1の読み出し単位で読み出したデータにエラーが発生した場合に、前記第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位に切り替えてデータを読み出し、前記第2の読み出し単位で読み出したデータに対して、前記第1のECC訂正部により前記第1のECC符号を利用してエラー訂正を行うように制御を行う。

    上記構成により、例えば、第1の読み出し単位をメモリの2ページ分相当とすれば、所定サイズ以上のリードコマンドや一連のリードコマンドのアドレスが連続であった場合は、読み出しコマンド数を大幅に省略できるため、読み出し性能を高速化できる。

    また、例えば、第2の読み出し単位を512バイト(=1セクタ)とすれば、夫々のメモリからの読み出しエラーを1セクタ単位で検出し、第1のECC訂正部により、エラー検出されたセクタのデータを、読み出しエラーが検出されなかったセクタのデータを利用して訂正する。 このように、1セクタ単位でエラー訂正ができるため、エラー訂正の効果を最大限発揮することができる。

    すなわち、比較的大ブロックで読み出しを実施する第1の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第2の読み出し工程とを併用することにより、高速な読み出しと信頼性の確保とを両立することができる。

    多値フラッシュメモリの電子の蓄積状態を示す模式図。

    情報記録再生装置におけるセクタレイアウトを示す図。

    実施の形態1に係る記録装置の構成図。

    フラッシュメモリの消去ブロックの構成図。

    実施の形態1の第1のECC生成部の動作説明図。

    実施の形態1におけるリードシーケンスの説明図。

    実施の形態2におけるセクタのレイアウト図。

    実施の形態2におけるリードシーケンスの説明図。

    変形例に係る記録装置の内部構成図。

    (実施の形態1)
    [0. 構成例]
    図3に実施の形態1に係る記録装置10の全体構成図を示す。 本実施の形態1に係る記録装置10は、内部にエラー訂正処理部を内蔵した複数個のフラッシュメモリ7a〜7e、及びフラッシュメモリ7a〜7eに対してデータの書き込みや読み出しを行うメモリコントローラ2を備える。

    図4に本実施の形態1で使用するフラッシュメモリ7a〜7eの消去ブロックの構成図を示す。
    フラッシュメモリ7a〜7eは、複数の消去ブロックにより構成され、各消去ブロックは複数のページで構成される。 図4に示す消去ブロックは、ページ0〜ページ127の128ページによって構成され、データの書き込み及び読み出しをページ単位で実施する。 例えば、1ページ当たりのデータ容量が8KBであれば、消去ブロックサイズは1MB、そして、消去ブロック数が1K個あれば、当該フラッシュメモリの容量は1GBとなる。

    本実施の形態1に係るフラッシュメモリ7a〜7eは、夫々に、第2のECC生成部8a〜8e及び第2のECC訂正部9a〜9eを搭載する。

    メモリコントローラ2は、外部インタフェイス部1と、外部インタフェイス部1を介して転送されるユーザデータより第1のECC符号を生成する第1のECC生成部3aと、第1のECC符号を用いてデータのエラー訂正を行う第1のECC訂正部3bとを備える。 外部インタフェイス部1は、図示しないホスト装置からのコマンドやユーザデータの送受信を行うインタフェイスである。 また、メモリコントローラ2は、第1のECC生成部3aで生成された各シンボルを5個のフラッシュメモリ7a〜7eに分配するデータ処理部4を備える。 データ処理部4は、第2のECC訂正部9a〜9eで出力されるエラー不可を示すエラー情報とフラッシュメモリ7a〜7eからのデータを第1のECC符号の符号順に並び替えて第1のECC訂正部3bに転送する。 メモリコントローラ2は、データ処理部4と、データ処理部4によって5系統に分配されたデータをフラッシュメモリ7a〜7eにライトするとともに、フラッシュメモリ7a〜7eからのデータをデータ処理部4に転送するアクセス部5a〜5eと、シーケンサ(CPU)6等を備える。 なお、それらの詳細については、後述する。
    なお、外部インタフェイス部1は、メモリコントローラ2の外部に設けてもよい。

    [1. ライト時の動作]
    次に、本実施形態に係る記憶装置10のライト時の動作について説明する。
    第1のECC生成部3aは、外部インタフェイス部1を介して転送されたユーザデータを所定サイズ単位で並列化する並列化部3a−1と、並列化されたデータ単位でパリティデータを付加してECC符号を生成するECC演算部3a−2とを有する。 ECC演算部では、(5,4)第1のECC符号を生成する。 より具体的には、ECC演算部は、並列化された4バイトのデータに対して、EXORを実施してパリティデータを生成する。 半導体不良などのエラー耐性の点を考慮すると、第1のECC符号を生成する前記4バイトのデータは別チップのフラッシュメモリにライトされることが望ましい。 このため、入力されるユーザデータをページ毎(=8Kバイト毎)に、4個のフラッシュメモリ(7a〜7d)に割り当てている。 そして、第1のECC生成部3aの並列化部により、各フラッシュメモリに割り当てられる8Kバイトのデータを4並列化して、夫々の列から1バイトずつ抽出した4バイトのデータをECC演算部3a−2に入力して、第1のECC符号のパリティデータを生成する。

    図5はライト動作における主要部のタイミングチャートを示す図である。 同図(a)は外部インタフェイス部1のデータ入力タイミング、同図(b)は第1のECC生成部3aの処理タイミング、同図(c)はフラッシュメモリ7a〜7eへのデータライトのタイミングを示す。

    まず、時刻t0において、夫々8Kバイトの書き込みデータD00、D01、D02、D03が、順次、外部インタフェイス部1から入力されると、第1のECC生成部3の並列化部3a−1は、16セクタ(=8Kバイト)単位で4列に並列(パラレル)化処理を行う。

    続いて、時刻t1において、入力された合計32Kバイトの書き込みデータD00、D01、D02、D03から、第1のECC生成部3aのECC演算部3a−1は、8KバイトのパリティデータP0を生成する。

    上記のように、64セクタ分(=32Kバイト)の書き込みデータが入力されると、第1のECC生成部3aの並列化部3a−1は、16セクタ(=8Kバイト)単位で4列に並列化する。 続いて、第1のECC生成部3aのECC演算部3a−2は、並列化された4バイト単位で、1バイトのパリティデータを生成する(同図の(a)、(b)参照)。 パリティデータの生成は、8K回繰り返して実施されるので、本例では、32Kバイトのユーザデータ当たり8Kバイトのパリティデータが生成される。

    続いて、時刻t2において、データ処理部4は、同図(c)に示すように、並列化された書き込みデータD00、D01、D02、D03及びパリティデータP0を、8Kバイト単位でフラッシュメモリ7a〜7eにそれぞれ割り当てる。

    データ処理部4により分配されたパリティデータを含む5系列のデータ(書き込みデータD00、D01、D02、D03及びパリティデータP0)は、アクセス部5a〜5eを介して、フラッシュメモリ7a〜7eにライト(書き込み)される。 ここで、本例では、書き込みデータD00、D01、D02、D03はフラッシュメモリ7a〜7dに夫々ライトされ、第1のECC生成部3aで生成されたパリティデータP0はフラッシュメモリ7eにライトされる。

    シーケンサ6は、例えば、CPUで構成され、第1のECC生成部3a、データ処理部4、アクセス部5a〜5eの上記の処理タイミングを制御する。

    続いて、フラッシュメモリ7a〜7eにおいて、入力された書き込みデータD00、D01、D02、D03及びパリティデータP0に対して、夫々の第2のECC生成部8a〜8eによりパリティデータを付加した第2のECC符号が生成される。 そして、フラッシュメモリ7a〜7eにおいて、入力されたデータD00、D01、D02、D03に対して、生成された第2のECC符号が付加されてアドレスに対応する夫々のメモリセルにライトされる。

    次に、第2のECC生成部8a〜8eの動作について説明する。 第2のECC生成部8a〜8eでは、5バイトで構成される夫々の第1のECC符号から1バイトずつ抽出し、それらを512バイト集めた書き込みデータおよびパリティデータに対して、第2のパリティデータを生成し、付加する。 この際、エラー訂正符号はBCH符号やリードソロモン符号が使用されるが、本例での本質ではないため詳細を割愛する。 例えば、本実施の形態では、リードソロモン符号を使用している。 そして、512バイト単位で32バイトの第2のパリティデータを追加した(544,512)ECC符号を生成する。 第2のECC符号は、対象とする512バイトのデータをエラー訂正する役割と、エラー訂正が不可であった場合にエラーを検出し、第1のECC符号におけるエラー位置情報を提供する役割を担っている。

    なお、生成された夫々の第2のECC符号は、上記図4で示した消去ブロックの同一ページに格納される。

    [2. リード時の動作]
    2−1. リード時のフラッシュメモリからのデータ転送動作
    まず、リード時のフラッシュメモリ7a〜7eからのメモリコントローラ2への読み出しデータの転送動作について説明する。

    図3中のフラッシュメモリ7a〜7eは、上記のように、メモリコントローラ2の制御によりライトされたデータおよびパリティデータを保持している。 ここでは、上記のように、ライトされたデータ(D00、D01、D02、D03)はフラッシュメモリ7a〜7dに、パリティデータ(P0)はフラッシュメモリ7eにそれぞれ記録されている。

    また、夫々のフラッシュメモリに搭載される第2のECC訂正部9a〜9eは、メモリセルよりページ単位でリードされた読み出しデータに対して、512バイト単位でエラー訂正を実施する。

    第2のECC訂正部9a〜9eは、512バイトに対して32バイトの第2のパリティデータが付加されているので、リードソロモン符号においては、最大16バイトのエラー訂正が可能である。

    アクセス部5a〜5eは、夫々に対応して接続されたフラッシュメモリ7a〜7eに記録されているデータのリードを行う。 本実施の形態で使用するフラッシュメモリ7a〜7eは第2のECC訂正部9a〜9eを内蔵している。 そのため、アクセス部5a〜5eは、夫々のフラッシュメモリ7a〜7eの第2のECC訂正部9a〜9eで、エラー訂正可能な場合は、エラー訂正された512バイトのデータをデータ処理部4に出力する。 一方、アクセス部5a〜5eは、16バイトを超えるエラーが発生した場合は、第2のECC訂正部9a〜9eでエラー訂正不可能となるので、訂正不可を示すエラー情報をデータ処理部4に出力する。

    データ処理部4は、夫々のアクセス部5a〜5eを介して転送される読み出しデータとエラー情報とを第1のECC符号の符号順に並び替えて、第1のECC訂正部3bに転送する。

    第1のECC訂正部3bは、エラー情報が示すエラー訂正不可であったデータを、第1のECC符号を用いてエラー訂正する。 具体的には、本例での第1のECC符号は(5,4)ECC符号なので、ECC符号を生成している5バイトにおいて、エラーデータを除いた4バイトのEXORを計算する。 これにより、エラーと検出されたデータを訂正することができる。 エラー情報の検出単位は512バイトなので、EXOR処理を512回実施すれば、エラーデータとなった箇所を復元することが可能となる。

    2−2. リード時のメモリコントローラのECC動作
    次に、リード時のフラッシュメモリ7a〜7eから転送された読み出しデータに対して行うメモリコントローラ2のECC動作について説明する。

    本例に係る動作では、シーケンサ6がメモリコントローラ2全体の制御を行う。 以下に説明するように、本例のリードシーケンスでは、第1の読み出し単位による第1の読み出し工程と、第1の読み出し単位よりも読み出しサイズが小さい第2の読み出し単位による第2の読み出し工程との2工程を実施する。 そして、第1の読み出し工程でエラー訂正できない場合にのみ、第2の読み出し工程を実施するものである。

    上記のように、第1の読み出し工程と第2の読み出し工程とでは、夫々のフラッシュメモリからデータを読み出す単位が異なる。

    より具体的には、第1の読み出し工程では、夫々のフラッシュメモリ7a〜7eより、フラッシュメモリのページ単位あるいはページの整数倍単位で、ライト済みのデータをメモリセルアレイからリード(読み出し)する。 これにより、フラッシュメモリ7a〜7eからの読み出し速度を最適化することができる。 例えば、ページサイズが8Kバイトのフラッシュメモリ7a〜7eであって、2ページの同時リードが可能の場合、第1工程におけるフラッシュメモリからの読み出し単位は16Kバイトの整数倍であるのが望ましい。 ここで整数倍としているのは、32Kバイト単位のアクセスをするとフラッシュメモリ制御におけるコマンド発行回数が16Kバイト単位のアクセスと比べて半分となるからである。 しかしながら、あまり大きくすると小ブロックのランダムリードの性能が劣化するので、小ブロックのランダムリード性能を考慮してフラッシュメモリからの読み出し単位を決定する必要がある。

    一方、第2の読み出し工程における夫々のフラッシュメモリからの読み出し単位は、第2のECC符号における最小単位とする。

    たとえば、仮にフラッシュメモリ7a〜7eからの読み出しブロックに、第2のECC符号が2個含まれていた場合(前半のECC符号+後半のECC符号)を考察すると、誤り訂正の状態は、以下の4通りとなる。
    状態(a)前半のECC符号と後半のECC符号が共にNG
    状態(b)前半のECC符号のみがNG
    状態(c)後半のECC符号のみがNG
    状態(d)前半のECC符号と後半のECC符号が共にOK
    しかしながら、本例のように、第2のECC訂正部を内蔵したメモリにおいては、前半のECC符号がNGであった場合に、それ以降のリード動作が停止される。 よって、前記(b)は(a)に含まれてしまうことになり、1個のECCエラーが2個のECCエラーに拡大してしまう。

    第2の読み出し工程では、フラッシュメモリ7a〜7eの読み出し単位と第2のECC符号の単位を一致させることにより、上記エラー拡大の課題を回避できる。

    以上に説明したように、読み出し速度を重視して、比較的大ブロックで読み出しを実施する第1の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第2の読み出し工程を併用することにより、記録装置における高速な読み出しと信頼性の確保を両立することができる。

    また、第2の読み出し工程の読み出し単位は第2のECC符号の単位と等しいことが望ましいが、記録媒体としてフラッシュメモリを使用した場合はフラッシュメモリのページサイズであってもよい。 この場合、フラッシュメモリへのアクセスは16セクタ(ページサイズが8Kバイトの場合)となる。 また、本例のように、第2のECC訂正部を内蔵したメモリでは、その内部において、第2のECC符号の単位をセクタ単位としても、フラッシュメモリへのアクセスが16セクタとなると、エラーの可否は16セクタ単位でしか検出できない。 しかしながら、フラッシメモリへのライトはページ単位で実施されるので、ライト回数と相関性が大きいリテンションによるリードエラーに関しては相関性が高い。 つまり、1セクタエラーが発生しているページは、当該ページ内に、数セクタのリードエラーが発生している可能性が大きい。 よって、システムのエラー訂正能力(第2のECC符号+第1のECC符号)における影響度は小さい。

    次に、図6を用いて、メモリコントローラ2によるエラー訂正処理について、より具体的に説明する。 図6は、第1の読み出し工程と第2の読み出し工程におけるエラー訂正シーケンスを示す図である。

    同図において、PG00、PG10はフラッシュメモリ0(7a)におけるページにライトされたデータであり、PG00とPG10は同時に読み出し可能な2ページのデータを示す。 なお、実際には、2ページのデータが同時にフラッシュメモリの端子から出力されるのではなく、フラッシュメモリ7a〜7eの内部のキャッシュに同時に読み出された後、PG00、PG10の順に端子よりメモリコントローラ2にリード転送される。 同様に、PG01、PG11はフラッシュメモリ1(7b)のページにライトされたデータである。 PG02、PG12は、フラッシュメモリ2(7c)のページにライトされたデータである。 PG03、PG13はフラッシュメモリ3(7d)のページにライトされたデータである。 PG04、PG14はフラッシュメモリ4(7e)のページにライトされたデータである。

    そして、列方向(Column direction)に沿ったページデータPG00、PG01、PG02、PG03、PG04のデータ群(シンボル)と、PG10、PG11、PG12、PG13、PG14のデータ群(シンボル)とで、夫々第1のECC符号を構成している。

    そして、本例では、第1の読み出し工程のフラッシュメモリのアクセスサイズ(第1の読み出し単位)は、同時読み出し可能な2ページ分とし、第2の読み出し工程のフラッシュメモリのアクセスサイズ(第2の読み出し単位)は1ページ分とする。 このため、第1の読み出し工程では、2ページ分同時にフラッシュメモリの内部キャッシュに読み出され、第2の読み出し工程における読み出し速度の約2倍程度となる。

    次に、同図6において、ここでは、斜線で示す読み出しデータPG00とPG11とにエラーが存在する場合の動作について詳細に説明する。

    まず、シーケンサ6は、2ページ単位の第1の読み出し単位による第1の読み出し工程を行う。

    そのため、時刻t0において、シーケンサ6は、第1の読み出し工程におけるフラッシュメモリ0(7a)の読み出しでは、読み出しデータPG00のエラーを検出した時点で、続く読み出しデータPG10のエラー有無にかかわらず処理を停止する。 よって2ページ単位でアクセスする第1の読み出し工程では、PG00にのみ存在するリードエラーがデータPG00、PG10の2ページ分のリードエラーとなる。 これは、上記状態(b)が状態(a)に含まれてしまうことに対応し、1個のECCエラーが2個のECCエラーに拡大してすることである。

    また、フラッシュメモリ1(7b)のデータ読み出しでは、同時刻t0の際、PG01ではリードエラーは検出されずに、続くPG11でリードエラーが検出される。 このケースではフラッシュメモリ1(7b)へのアクセスはエラーとなるが、データPG01は出力可能である(データPG11はリードエラーのため、出力されない)。 また、同時刻t0において、その他のフラッシュメモリ2(7c)、フラッシュメモリ3(7d)、フラッシュメモリ4(7e)からの読み出しは、リードエラー無しで正常に終了される。

    このようなケースの第1の読み出し工程における第1のECC符号について説明する。 読み出しデータPG00に関するリードエラーは、共にECC符号を構成する列方向(Column direction)に沿った読み出しデータPG01、PG02、PG03、PG04にエラーが発生していないため、これらを用いて第1のECC符号においてエラー訂正が可能である。

    しかしながら、読出しデータPG11に関するエラーは、共に第1のECC符号を構成している読み出しデータPG10がエラーとして処理されるため、読出しデータPG11と共に2重エラーとなってしまう。 そのため、1重エラーしか対応していない第1のECC符号では、エラー訂正能力を超えており、エラー訂正をすることができない。

    そこで、本例では、上記のように、第1の読み出し工程でエラー訂正が不可能であった場合は、第1の読み出し単位よりも小さい第2の読み出し単位による第2の読み出し工程に切り替えられ、データ読み出しがリトライされる。

    即ち、シーケンサ6は、第1の読み出し工程でエラー訂正が不可能であった場合、時刻t1において、第1の読み出し単位よりも小さい第2の読み出し単位による第2の読み出し工程に切り替えて、データ読み出しをリトライするように制御する。 より具体的には、シーケンサ6は、フラッシュメモリ7a〜7eに対し、先頭セクタ番号と読み出しセクタ数をパラメータとするリードコマンドを発行する。 この際、第2の読み出し工程の読み出しセクタ数を、第1の読み出し工程の読み出しセクタ数の半分程度に設定する。 そのため、本例の第2の読み出し工程では、各フラッシュメモリ7a〜7eに対して1ページ毎にアクセスする。 そのため、同図に示すように、第1の読み出し工程にかかるリードアクセスを、それぞれ半分のサイズの第2の読み出し工程Aと第2の読み出し工程Bとの2回に分割してリトライさせる。

    そのため、読み出し単位が切り替えられた第2の読み出し工程Aのリードは、読み出し単位が1ページ単位である。 従って、時刻t1の読み出しにおいて、エラーとなるデータは、フラッシュメモリ7aからの読み出しデータPG00のみとなる。 シーケンサ6は、第1のECC訂正部3bにより、第1のECC符号を構成する列方向(Column direction)のページデータPG01、PG02、PG03、PG04を用いて、エラーデータP00を訂正するように制御する。

    続いて、時刻t2において、同様に、ページデータPG10、PG12、PG13、PG14を読み出す。 このように第2の読み出し工程Aにて制御されたことにより、第1の読み出し工程でエラーとなったページデータPG10は、エラー無しでリードされる。 そのため、ページデータPG11のみがエラーデータとしてリードされる。 シーケンサ6は、第2の読み出し工程Bにおいて、第1のECC訂正部3bにより、第1のECC符号を構成する列方向(Column direction)のページデータPG10、PG12、PG13、PG14を用いて、エラーデータP11を訂正するように制御することができる。

    上記のように、本例に係る第2の読み出し工程A,Bによれば、エラー訂正能力の範囲内(1重エラー訂正)に収めることができるため、第1の読み出し工程で訂正できなかった読み出しデータPG11があっても、リードエラーを訂正することができる。

    [3. 作用効果]
    以上に説明したように、実施の形態1では、高速化を重視した比較的大ブロックで読み出しを実施する第1の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第2の読み出し工程とを切り替えて併用して制御する。 そのため、記録装置10における高速な読み出しとエラーが訂正された信頼性のデータの確保とを両立することができる点で、有利である。

    具体的には、実施の形態1の場合、エラー訂正能力を超えない範囲で、第1の読み出し工程において、2ページ分を第1の読み出し単位として、データを読み出す。 そのため、例えば、1ページ単位でデータを読み出す場合と比べ、データ読み出し速度を約2倍程度まで高速化することができる。 さらに、エラーが発生する場合であっても、第2の読み出し工程に切り替え、エラー訂正の精度を2倍とした1ページ分を第2の読み出し単位として、データを読み出す。 そのため、データ保持特性の劣化が進んだフラッシュメモリであっても、エラーを訂正でき、データの信頼性を確保することができる。 これは、例えば図1で示した多値メモリ(MLC)のように、2値メモリ(SLC:Single Level Cell)に比べて、データ保持特性の劣化の進行が進んだ場合であっても、コストを増大させることなく、データの信頼性を確保することができる点で、有効である。

    なお、図6に示した例では、第2の読み出し工程を、第2の読み出し工程Aと第2の読み出し工程Bとに2分割して実施する場合を示した。 しかしながら、第2の読み出し工程Aは、第1の読み出し工程においてもエラー訂正可能であるため、必ずしも2回分を実施する必要はない。

    また、本実施の形態1では、記録媒体のメモリとしてフラッシュメモリを一例としたが、積符号構成で記録された記録媒体であれば、同様の効果が得られることはいうまでもない。

    また、本実施の形態1では、5個のフラッシュメモリ7a〜7eで説明したが、1個のフラッシュメモリを利用し、本実施の形態1における第2の読み出し工程を5回繰り返し実施しても同様の効果が得られることはいうまでもない。 その場合、第1の読み出し工程の読み出し単位は、第1のECC符号の単位に設定すればよい。

    また、第2の読み出し工程における第1のECC訂正部3bで実施されるエラー訂正処理は、第1の読み出し工程における第1のECC訂正部3bで実施されるエラー訂正処理より、高精度に検出されたエラーセクタを使用して実施される。 ゆえに、第1の読み出し工程における第1のECC訂正部3bでのエラー訂正処理は実施してもしなくてもよい。

    また、本実施の形態のフラッシュメモリはECC機能を搭載したものを一例としたが、例えば、メモリカード等の汎用メモリカードにも適応可能であることはいうまでもない。

    また、フラッシュメモリ数を5個で説明したが、これに限るものではなく、フラッシュメモリの複数ページに同時アクセスが可能な構成であれば、同様の効果が得られることはいうまでもない。

    (実施の形態2)
    [構成例]
    実施の形態2に係る構成については、上記実施の形態1と実質的に同様であるため、詳細な説明を省略する。

    ここで、実施の形態1では、第1のECC符号を(5,4)ECC符号とし、1誤り訂正のみに対応したが、本実施の形態では、第1のECC符号を(10,8)ECC符号とし、2重誤り訂正に対応する。

    実施の形態1の第1のECC生成部3aでは、連続する2Kバイトのデータを、512バイト単位で、4個のフラッシュメモリに割り当て、各フラッシュメモリに割り当てられた512バイトのデータから1バイトずつ抽出した4バイトのデータのEXORを計算し、1バイトのパリティデータを生成した。

    本実施の形態2の第1のECC生成部3aでは、連続する64Kバイトのデータを、16Kバイト単位で、4個のフラッシュメモリ7a〜7dに割り当て、各フラッシュメモリに割り当てる16Kバイトのデータより、8Kバイトの周期で2バイトずつ抽出する。 そして、4個のフラッシュメモリ7a〜7dに割り当てる8バイトのデータより、(10,8)ECC符号を生成する。 (10,8)ECC符号では、8バイトのデータより2バイトのパリティデータを生成する。 よって、64Kバイトのデータからは、合計16Kバイトのパリティデータが生成され、これらをフラッシュメモリ7eに割り当てる。

    この場合、各フラッシュメモリに割り当てる16Kバイトのデータは8Kバイト単位で、異なるフラッシュメモリのページに割り当てられることが望ましい。 なぜならフラッシュメモリのライトはページ単位で実施されるため、書き換え回数を少なくするには、連続するセクタは同一ページにライトした方がよいからである。 さらに、フラッシュメモリのリテンション特性のバラツキは、書き換え回数の最小単位であるページに依存することが大きい。

    この場合の(10,8)ECC符号の生成について、詳細に説明する。 セクタ番号をN_Secとすると、64Kバイトに相当する128セクタを、以下のように割り当てる。
    フラッシュメモリ0 : (N_Sec %128)/32 < 1 のセクタ フラッシュメモリ1 : 1 ≦(N_Sec %128)/32 < 2 のセクタ フラッシュメモリ2 : 2 ≦(N_Sec %128)/32 < 3 のセクタ フラッシュメモリ3 : 3 ≦(N_Sec %128)/32 < 4 のセクタ (上記の%128は128で割った余りを示す。)

    そして、各フラッシュメモリに割り与えられた32セクタにおいて、連続する16セクタを、夫々のフラッシュメモリの同一ページに割り当てる。

    (10,8)ECC符号を構成するシンボルは、次式(※)を満たすセクタのグループから1バイトずつ合計8バイト抽出し、(10,8)ECC符号を生成する。

    N_Sec %128={K,K+16,K+32,K+48,K+64,K+80,K+96,K+112}(Kは、0≦K<128の整数)・・・式(※)
    生成した2バイトのパリティデータ(P0、P1)はフラッシュメモリ4において、夫々がフラッシュメモリの異なるページに割り当てられる。

    図7は、64Kバイトの各セクタの割り当てを示す図である。 同図において、フラッシュメモリ0−3におけるSを接頭語とする番号はセクタ番号を示す。 フラッシュメモリ4におけるPを接頭語とする番号の下位1ビットは2バイトで構成されるパリティデータのバイトを識別し、それ以外のビットは、パリティデータが付属するグループを示している。 例えば、フラッシュメモリ4のページ0におけるPを接頭語とする番号の下位1ビット”0”はパリティデータのバイトを識別し、以外のビット”0”〜”15”はパリティデータが付属するグループ(Group 0 (0)-(15))を示す。

    同図に示すように、フラッシュメモリ0(7a)にはセクタS0〜S31が、フラッシュメモリ1(7b)にはセクタS32〜S63が、フラッシュメモリ2(7c)にはセクタS64〜S95が、フラッシュメモリ3(7e)にはセクタS96〜S127がそれぞれ割り当てられる。 夫々のフラッシュメモリにおいて、前半の16セクタと後半の16セクタを別ページに割り当てられる。 そして、16セクタ毎に1バイト取り出し(S0、S16、S32、S48、S64、S80、S96、S112から1バイトずつ)、(10,8)ECC符号により2バイトのパリティデータを生成し、同図のセクタP00とP01に割り当てる。 このように割り当てることにより、(10,8)ECC符号を構成する10個のシンボルをフラッシュメモリの異なるページに割り与えることができる。

    これらの処理を、第1のECC生成部3aが、512回繰り返して実施することにより、夫々のセクタ(例えば、S0、S16、S32、S48、S64、S80、S96、S112)における第1のECC符号の生成処理が完了する。 同図では16個のセクタで実施するので、第1のECC符号の生成回数は(512*16)回実施することになる。

    [リード動作]
    このように、第1のECC符号を生成して、同様にフラッシュメモリ7a〜7eに書き込まれたデータの読み出し動作について、以下説明する。

    実施の形態1では、比較的大ブロックで読み出しを実施する第1の読み出し工程と、エラー訂正の精度を重視して小ブロックで読み出す第2の読み出し工程を併用する。 そして、記録装置における高速な読み出しと信頼性の確保を両立する例を説明した。

    本実施の形態2では、上記のように、第1のECC符号を2重訂正とし、第1の読み出し工程では、第2の読み出し工程より大きな第1のブロックサイズで読み出して1重エラー訂正のみを実施し、第2の読み出し工程では、第1のブロックサイズを2個以上に分割した第2のブロックサイズで読み出し、第1のブロックサイズ相当の読み出しを終了した後に、第1のECC符号による2重エラー訂正を行う。

    エラー訂正シーケンス
    図8は、実施の形態2に係る第1の読み出し工程と第2の読み出し工程におけるエラー訂正シーケンスを説明する図である。

    同図において、データPG00、PG01は、フラッシュメモリ0(7a)におけるページにライトされたデータである。 データPG00とPG01は同時に読み出し可能な2ページを示す。 実際は2ページのデータが同時にフラッシュメモリ7aの端子から出力されるのではなく、フラッシュメモリ7aの内部キャッシュに同時に読み出された後、データPG00、PG01の順に端子よりリードされる。 同様にデータPG10、PG11はフラッシュメモリ1(7b)のページにライトされたデータである。 データPG20、PG21はフラッシュメモリ2(7c)のページにライトされたデータである。 データPG30、PG31はフラッシュメモリ3(7d)のページにライトされたデータである。 データPG40、PG41はフラッシュメモリ4(7e)のページにライトされたデータである。

    そして、(10,8)ECC符号である第1のECC符号は、データPG00、PG01、PG10、PG11、PG20、PG21、PG30、PG31、PG40、PG41の10ページに跨ってライトされており、その2ページ分にリードエラーが発生していた場合もエラー訂正可能である。

    また、使用しているフラッシュメモリは、本実施の形態1と同様に、第2のECC符号にかかる処理を内蔵しているフラッシュメモリである。 そして、第1の読み出し工程のフラッシュメモリのアクセスサイズは同時読み出し可能な2ページ分とし、第2の読み出し工程のフラッシュメモリのアクセスサイズは1ページとする。 このため、第1の読み出し工程では、2ページ分同時にフラッシュメモリの内部キャッシュに読み出されるため、第2の読み出し工程における読み出し速度の約2倍程度となる。

    まず、同図の第1の読み出し工程(0)において、斜線で示すデータPG00にのみエラーが存在する場合の動作について説明する。

    時刻t0において、シーケンサ6は、フラッシュメモリへのアクセスサイズを2ページ単位としている第1の読み出し工程(0)におけるフラッシュメモリ0(7a)のデータ読み出において、データPG00のエラーを検出した時点で、データPG01のエラー有無にかかわらず処理を停止する。 よって、第1の読み出し工程(0)では、データPG00にのみ存在するリードエラーが、データPG00とPG01の2ページ分のエラーとなる。 フラッシュメモリ1(7b)〜フラッシュメモリ4(7e)のデータ読み出しでは、読み出しエラーは発生しない。 この場合、第1のECC符号を構成している10個のシンボル(PG00〜PG41)において、データPG00とPG01との2シンボルがエラーとなる。 しかしながら、上記のように、本例の(10,8)第1のECC符号は、2シンボルにリードエラー(2重エラー)が発生していた場合もエラー訂正が可能である。 従って、エラー訂正能力の範囲内であるので、第1の読み出し工程(0)においては、エラー訂正可能となる。

    次に、斜線で示すデータPG02とPG12にエラーが存在する第1の読み出し工程(1)の動作について説明する。

    時刻t1において、フラッシュメモリ0(7a)の読み出しでは、データPG02のエラーを検出した時点で、データPG03のエラー有無にかかわらず処理を停止する。 よって、2ページ単位でアクセスする本工程では、データPG02にのみ存在するリードエラーが、データPG02とPG03の2ページ分のエラーとなる。 また、フラッシュメモリ1(7b)の読み出しでも同様に、データPG12にのみ存在するリードエラーが、データPG12とPG13の2ページ分のエラーとなる。 一方、フラッシュメモリ2(7c)〜フラッシュメモリ4(7e)の読み出しでは、読み出しエラーは発生していない。 この場合、第1のECC符号を構成している10個(PG02、PG03、PG12、PG13、PG22、PG23、PG32、PG33、PG42、PG43の10ページから1バイトずつ抽出されている)のシンボルにおいて、データPG02とPG12のみならず、データPG03とPG13にかかる4シンボルのエラーに拡大してしまう。 ゆえに、本例の第1のECC符号では、エラー訂正能力の範囲外となり、第1の読み出し工程(1)においては、エラー訂正不可能となる。

    そこで、第2の読み出し工程Aと第2の読み出し工程Bとにより、第1の読み出し工程(1)にかかるリトライを実施する。 第2の読み出し工程では、フラッシュメモリへのアクセスサイズをページ単位とする。 しかしながら、1回の第2の読み出し工程でアクセスした場合のリードデータは5ページ分となり、第1のECC符号によるエラー訂正で必要なページ数(10ページ)に満たない。 そこで、同図のように、第2の読み出し工程Aと第2の読み出し工程Bの2回の読み出しを実施後に、第1のECC符号によるエラー訂正を実施する。 第2の読み出し工程AではPG02とPG12にリードエラーが発生しているが、第2の読み出し工程Bでは、リードエラーは発生しない。 ゆえに、10ページ中、2ページ分のリードエラーとなり、第1のECC符号を生成している10個のシンボルにおいて2シンボルのエラーとなり、エラー訂正可能となる。

    より具体的には、時刻t2に、シーケンサ6は、第1の読み出し工程(1)で、エラー訂正が不可能であった場合に、第1の読み出し単位(1)よりも小さい第2の読み出し単位による第2の読み出し工程A、Bに切り替えて、データ読み出しをリトライする。 より具体的には、シーケンサ6は、フラッシュメモリ7a〜7eに対し、先頭セクタ番号と読み出しセクタ数をパラメータとするリードコマンドを発行する。 この際、第2の読み出し工程の読み出しセクタ数を、第1の読み出し工程の読み出しセクタ数の半分程度に設定する。 そのため、本例の第2の読み出し工程では、各フラッシュメモリ7a〜7eに対して1ページ毎にアクセスする。 そのため、同図に示すように、第1の読み出し工程にかかるリードアクセスを、それぞれ半分のサイズの第2の読み出し工程Aと第2の読み出し工程Bとの2回に分割してリトライさせる。

    即ち、第2の読み出し工程Aでは、時刻t2に、フラッシュメモリ7a〜7eへページ単位でアクセスし、5ページ分の第1のECC符号によるエラー訂正で必要なシンボル数の半分(5シンボル)を確保する。

    続いて、時刻t3において、シーケンサ6は、同様の第2の読み出し工程Bを行い、フラッシュメモリ7a〜7eへページ単位でアクセスし、残りの5ページ分の第1のECC符号によるエラー訂正で必要なシンボル数の半分(5シンボル)を確保する。

    続いて、上記の第2の読み出し工程Aと第2の読み出し工程Bとの2回の読み出しにより確保した10シンボル(PG02、PG03、PG12、PG13、PG22、PG23、PG32、PG33、PG42、PG43)を用い、第1のECC訂正部3bにより(10,8)第1のECC符号によるエラーデータ(PG02、PG12)のエラー訂正を行う。 これにより、第1の読み出し工程では、訂正できなかったエラーを訂正することができる。

    [作用効果]
    以上説明したように、本実施の形態2では、第1のECC符号の訂正能力を2重訂正とし、フラッシュメモリへのアクセスサイズの比較的大きい第1の読み出し工程で1重訂正のみを実施し、第1の読み出し工程で実施したフラッシュメモリへのアクセスを2回以上に分割して行う第2の読み出し工程で2重訂正を実施する。 そのため、記録装置10における高速な読み出しと信頼性の確保とを両立することができる。 本例のように、訂正能力を強化した2重訂正においても、必要に応じて、適用することが可能である。

    なお、本実施の形態では、第1のECC符号によるエラー訂正数を2重訂正としたが、3重訂正や4重訂正など2重訂正以上あれば、同様の構成で実現可能であることはいうまでもない。 4重訂正であれば、第1の読み出し工程におけるフラッシュメモリへのアクセスサイズは第2の読み出し工程におけるフラッシュメモリへのアクセスサイズの4倍となる。

    また、本実施の形態のフラッシュメモリは、ECC機能を備えるフラッシュメモリを一例にあげて説明したが、メモリカードなどの汎用メモリカードにも適応可能であることはいうまでもない。

    また、フラッシュメモリ数を5個で説明したが、これに限るものではなく、フラッシュメモリの複数ページに同時アクセスが可能な構成であれば、同様の効果が得られることはいうまでもない。

    (変形例)
    実施の形態1及び実施の形態2では、第2のECC訂正部を内蔵したフラッシュメモリで説明したが、第2のECC訂正部をコンロトローラ側に内蔵してもよい。

    [構成例]
    即ち、図9は、変形例に係る記録装置10bの全体構成例を示す図である。 図示するように、第2のECC生成部8a〜8eおよび第2のECC訂正部9a〜9eがフラッシュメモリ7a〜7eに内蔵されているのではなく、第2のECC生成部8a〜8eおよび第2のECC訂正部9a〜9eがコントローラ2に内蔵されている点で、上記実施の形態1、2と相違する。

    第2のECC生成部8a〜8eおよび第2のECC訂正部9a〜9eがフラッシュメモリ7a〜7eに搭載されている場合、第2のECC訂正部9a〜9eによるエラー訂正が不可となると、以降のリードデータがメモリコントローラ2へ転送されない。
    しかしながら、本変形例のように、第2のECC訂正部9a〜9eをメモリコントローラ2に搭載すれば、第2のECC訂正部9a〜9eによるエラー訂正が不可になったとしても、読出しデータがフラッシュメモリ7a〜7eからコントローラ2へ転送されているので、それ以降の動作を継続することが可能である。 ゆえに、本変形例の場合、第2のECC訂正部9a〜9eの訂正単位以上の単位で読み出せば、第2のECC訂正部9a〜9eからの情報が欠落することはない。

    この変形例の場合、第1の読み出し工程において、第1の読み出し単位を第2の読み出し単位より大きく設定し、実施の形態1のように第1のECC符号をスルーすれば、第1のECC訂正のスループットやその演算レイテンシの影響を受けることがないので、高信頼性の第2の読み出し工程との併用により、高速・高信頼性の記録装置を提供することができる。

    また、第1の読み出し工程において、第1の読み出し単位を第2の読み出し単位より大きく設定し、実施の形態2のように、第1のECC訂正をその訂正能力以下で使用すれば、最大訂正能力で第1のECC訂正を使用する場合より、高スループット、低消費電力、低レイテンシとなる。 ゆえに、高信頼性の第2の読み出し工程との併用により、高速・高信頼性の記録装置を提供することができる。

    以上、実施の形態1、2及び変形例を用いて本発明の説明を行ったが、本発明は上記各実施形態および変形例に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。 また、上記各実施形態および変形例には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。

    実施形態によれば、記録装置は、複数のフラッシュメモリに跨るECC符号を構成しエラー耐性を改善するとともに、2個の再生モードをエラー訂正の可否で切り替えて使用することにより、高速転送とともに高信頼性を実現している。 ゆえに、高速転送ならびに高信頼性が要求される業務用のメモリカードや画像データの処理装置で使用される可能性が大きい。

    1 外部インタフェイス 2 メモリコントローラ 3a 第1のECC生成部 3b 第1のECC訂正部 4 データ処理部 5a〜5e アクセス部 6 シーケンサ(制御部)
    7a〜7e フラッシュメモリ 8a〜8e 第2のECC生成部 9a〜9e 第2のECC訂正部 10、10b 記憶装置

    QQ群二维码
    意见反馈