(57)【要約】【課題】書き込みエラーが多発した場合においても、連続して書き込みが可能な信頼性の高い半導体記録装置を提供する。【解決手段】書き込むべきデータをＥＣＣ符号として不揮発性メモリを構成する複数の物理ブロックに記録し、書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、時間間隔が第１の基準時間以内であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとＥＣＣのグループになっているブロック番号とを登録する。そして、所定のタイミングで、誤り位置管理手段に登録された書き込みエラーを読み出し、ＥＣＣ符号により誤り訂正することによって復元し、再書き込みを行う。これにより、ホスト機器のバッファメモリのオーバーフローを防止できるため、書き込みエラーが頻発した場合においても、映像信号のリアルタイム記録が可能である。【選択図】図４
2010097600.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックにより構成され、且つ物理ブロックが複数ページによって構成される不揮発性メモリを内蔵し、所定数の前記物理ブロックを１つのグループとする半導体記録装置において、
データの書き込みの際に入力されたデータに対して、ＥＣＣパリティを付加して、ＥＣＣ符号を生成するＥＣＣ生成手段と、
前記ＥＣＣ生成手段によって生成されたＥＣＣ符号の構成単位を１つのグループの各物理ブロックに分配するデータ分配手段と、
前記データ分配手段によって分配されたデータを、不揮発性メモリの１つのグループの各物理ブロックに書き込むデータ書き込み手段と、
不揮発性メモリへのデータの書き込み時に書き込みエラーを検出する書き込みエラー検出手段と、
書き込みエラーが発生した物理ブロックと同一グループを構成する全ての物理ブロックを登録する誤り位置管理手段と、
前記不揮発性メモリの１つのグループの物理ブロックよりＥＣＣ符号を読み出すデータ読み出し手段と、
前記誤り位置管理手段に登録されている書き込みエラーが生じた物理ブロックのデータを、その物理ブロックが含まれるグループのエラーが生じていない物理ブロックのデータによって誤り訂正する誤り訂正手段と、
前回の書き込みエラー発生から第１の基準時間Ｔ１の経過前に生じた書き込みエラーの位置情報について前記誤り位置管理手段により登録し、所定のタイミングで前記誤り位置管理手段に登録されたブロックを読み出し、前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするよう制御するシーケンサと、具備する半導体記録装置。
【請求項２】
前記シーケンサは、前回の書き込みエラーの発生から第１の基準時間Ｔ１の経過後に生じた書き込みエラーに対して前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みする請求項１記載の半導体記録装置。
【請求項３】
前記シーケンサの所定のタイミングは、前の書き込みエラーがあった再書き込み処理から第２の基準時間Ｔ２以上が経過したタイミングである請求項１記載の半導体記録装置。
【請求項４】
前記シーケンサの所定のタイミングは、書き込みエラーの再書き込み処理から第２の基準時間Ｔ２以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込み終了後のタイミングである請求項１記載の半導体記録装置。
【請求項５】
前記シーケンサの所定のタイミングは、書き込みエラーの再書き込みから処理から第２の基準時間Ｔ２以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込みが第３の基準時間以内に終了したタイミングである請求項１記載の半導体記録装置。
【請求項６】
前記シーケンサの所定のタイミングは、半導体記録装置への電源の投入及び停止の少なくとも一方のタイミングである請求項１記載の半導体記録装置。
【請求項７】
前記不揮発性メモリは、Ｎ＋Ｍ個（Ｎ，Ｍは自然数）の物理ブロックを１つのグループとするものであり、
前記ＥＣＣ生成手段は、データの書き込みの際に入力された（Ａ＊Ｎ）ワード（Ａは自然数）のデータに対して、Ａワードの間隔で抽出したＮワードにＭワードのＥＣＣパリティを付加して、（Ｎ＋Ｍ）ワードのＥＣＣ符号をＡ個生成するものである請求項１に記載の半導体記録装置。
【請求項８】
前記データ分配手段は、前記ＥＣＣ生成手段によって生成されたＥＣＣ符号の（Ｎ＋Ｍ）ワードを、１ワード毎に前記不揮発性メモリの物理ブロックのグループ内で異なる物理ブロックに分配を繰り返すことにより、１つのグループの物理ブロックにＡワードずつ分配するものである請求項７記載の半導体記録装置。
【請求項９】
前記第１の基準時間Ｔ１は、
Ｒin：映像信号の入力レート
Ｔout：半導体記録装置の１グループ当たりの書き込み保証時間
Ｔerr：書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
Ｄ：１グループの物理ブロックに記録されるＥＣＣパリティを含まないデータ量、とすると、
（Ｒin＊（Ｔout＋Ｔerr））／（Ｄ−Ｔout＊Ｒin）
で示される請求項１〜請求項８のいずれか１項記載の半導体記録装置。
【請求項１０】
前記の第２の基準時間Ｔ２は、
Ｒin：映像信号の入力レート
Ｔout：半導体記録装置の１グループ当たりの書き込み保証時間
Ｔerr：書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
Ｄ：１グループの物理ブロックに記録されるＥＣＣパリティを含まないデータ量、とすると、
（Ｒin＊（Ｔout＋Ｔerr））／（Ｄ−Ｔout＊Ｒin）
で示される請求項３又は４記載の半導体記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリで発生する書き込みエラーを修復するようにした半導体記録装置に関する。
【背景技術】
【０００２】
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるＳＤ（Secure Digital）カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
【０００３】
半導体記録装置に内蔵されているフラッシュメモリは、一定サイズの多数の物理ブロックから成り、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは１セルで２ビット以上のデータが蓄積できる多値フラッシュメモリが商品化されている。
【０００４】
図１に、多値フラッシュメモリのフローティングゲートに蓄積する電子の数と閾値電圧（Ｖｔｈ）の関係の一例を示す。図１に示すように、４値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧（Ｖｔｈ）に従って４状態で管理する。消去状態は電位が一番低く、これを（１，１）とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々（１，０）（０，０）（０，１）とする。このように、蓄積する電子の数に比例して電位が上昇するので、所定の電位の閾値に収まるように制御することによって、１つのメモリセルに２ビットのデータを記録することができる。
【０００５】
図２に４値のフラッシュメモリの１つの物理ブロックの模式図を示す。図２に示す物理ブロックは、２Ｋ個（Ｋは自然数）のページによって構成されている。そして、書き込み処理は、ページ番号０から昇順に実施される。ここで、ページ番号ｍ（０≦ｍ＜Ｋ）のページとページ番号（Ｋ＋ｍ）番のページは１つのメモリセルを共有している関係（以下、セル共有関係という）にあるとする。セル共有関係にあるページにおいて、最初に書き込むページを第１ページ、次に書き込むページを第２ページと呼ぶ。つまり、ページ番号ｍへの書き込み（第１ページへの書き込み）と、ページ番号（Ｋ＋ｍ）への書き込み（第２ページへの書き込み）は、同一のセルに電子をチャージしていることになる。図１を参照に説明すると、第１ページへの書き込みでは、電位は最大でも半分までしか上昇しないように制御し、次の第２ページへの書き込みでは、電位は半分から最大まで電位が上昇するように制御する。
【０００６】
図３に、フラッシュメモリセルの状態遷移を示す。図３に示すように、フラッシュメモリの物理ブロックの１つのメモリセルの状態は、以下のように遷移する。
（ａ）データを消去した後は、メモリセルの状態は（１，１）
（ｂ）第１ページの書き込み後は、セルの状態は（１，１）又は（１，０）
（ｃ）第２ページの書き込み後は、セルの状態は（１，１），（１，０），（０，０）又は（０，１）
このように、多値のフラッシュメモリでは、Ｖｔｈに複数の閾値を設けてフラッシュメモリの電子の蓄積量を制御する多値記録を行い、大容量化を実現している。
【０００７】
上記の（ｂ），（ｃ）の状態遷移についてさらに詳細に説明する。（ｂ）においては、第１ページのメモリセルに１を書き込んだ後の状態が（１，１）であり、０を書き込んだ後の状態が（１，０）となる。さらに（ｃ）においては、（ｂ）での状態によって遷移が限定される。即ち、（ｂ）で（１，１）の状態からの遷移は、１を書き込んだ場合は（１，１）の状態が保持され、０を書き込んだ場合は（０，１）となる。一方、（ｂ）で（１，０）の状態からの遷移は、１を書き込んだ場合は（１，０）の状態が保持され、０を書き込んだ場合は（０，０）となる。
【０００８】
しかしながら、（ｂ）から（ｃ）への遷移の過程において、書き込みエラーが書き込み済みの第１ページに伝搬するといった問題が発生する。即ち、（ｂ）で（１，１）であったメモリセルを（０，１）の状態にすべく電子注入を実施している際に、セル寿命等により、電位が（０，１）に対応するＶｔｈにまで上昇せずに、途中で停止してしまう場合がある。例えば（１，０）で停止したとすると、書き込み済みであった第１ページが１から０に遷移してしまう。この場合エラーは、第２ページのみならず、第１ページにも伝搬するといった問題があった。
【０００９】
図２において、第１ページの書き込み、即ちページ０〜ページ（Ｋ−１）への書き込みの場合には、書き込みエラーはＶｔｈが（１，１）の状態から（１，０）に上昇しないエラーである。また、第２ページへの書き込み、即ちページＫ〜ページ（２Ｋ−１）の書き込みによってＶｔｈの状態は（１，１）（１，０）（０，０）（０，１）になる。この場合の書き込みエラーには、次の２つの種類がある。
（エラー１）  Ｖｔｈ（１，０）が（０，０）に上昇しない。
（エラー２）  Ｖｔｈ（１，１）が（０，１）に上昇しない。
エラー１の場合は、Ｖｔｈ（１，０）とＶｔｈ（０，０）が隣接しており、エラーが第１ページに伝搬することはない。しかしエラー２の場合はＶｔｈ（１，１）とＶｔｈ（０，１）の間に２状態をはさんでいる。特に、Ｖｔｈ（１，０）は第１ページの書き込み後の値であり、第２ページの書き込みによってＶｔｈが（１，０）にまでしか上昇しなかった場合は、第２ページが書き込みエラーになるのみならず、第１ページのデータも破壊してしまうことになる。例えば、ページＫの書き込み中に書き込みエラーが発生すると、書き込み済みであったページ０のデータを破壊する可能性がある。
【００１０】
この課題を解決するために、特許文献１では、フラッシュメモリを制御するメモリコントローラにバッファメモリを設け、第２ページの書き込みが完了するまで第１ページのデータをバッファメモリに格納しておき、第２ページの書き込みで書き込みエラーが発生した場合は、バッファメモリのデータをロードして第１ページのデータもフラッシュメモリに再度書き込むように制御している。
【特許文献１】特開２００６−３８３６６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来の手法では第２ページの書き込みが終了するまで第１ページのデータをバッファメモリに保持し、第２ページの書き込み時に書き込みエラーが発生した場合は、第１ページまで遡って再書き込みしなければならない。
【００１２】
また、セル共有ページの情報が公開されていない場合には、第１ページと第２ページの区別がつかないため、あるページへの書き込みでエラーが発生した場合には、その時点でそのページを含む物理ブロックの全ての書き込み済みのページにデータを再度書き込む必要が生じる。
【００１３】
多値フラッシュメモリの物理ブロックのサイズはプロセスの微細化に従って増大しており、物理ブロック単位の再書き込みにかかる時間は、物理ブロックサイズに比例して大きくなる。よって、ビットレートの高い映像信号をフラッシュメモリを用いた半導体記録装置にリアルタイム記録する場合には、再書き込みが連続して発生すると、ホスト機器側のバッファメモリがオーバーフローしてしまうといった問題があった。即ち、従来の手法では、多値フラッシュメモリにおける書き込みエラーで発生するエラー伝搬の修復は可能であるが、それに伴う再書き込みデータが増加し、再書き込み処理時間が増加してしまうという新しい問題が生じる。
【００１４】
本発明は上記課題を解決するものであり、書き込みエラーが多発した場合においても、連続して書き込みが可能な信頼性の高い半導体記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
この課題を解決するために、本発明の半導体記録装置は、複数の物理ブロックにより構成され、且つ物理ブロックが複数ページによって構成される不揮発性メモリを内蔵し、所定数の前記物理ブロックを１つのグループとする半導体記録装置において、データの書き込みの際に入力されたデータに対して、ＥＣＣパリティを付加して、ＥＣＣ符号を生成するＥＣＣ生成手段と、前記ＥＣＣ生成手段によって生成されたＥＣＣ符号の構成要素を１つのグループの各物理ブロックに分配するデータ分配手段と、前記データ分配手段によって分配されたデータを、不揮発性メモリの１つのグループの各物理ブロックに書き込むデータ書き込み手段と、不揮発性メモリへのデータの書き込み時に書き込みエラーを検出する書き込みエラー検出手段と、書き込みエラーが発生した物理ブロックと同一グループを構成する全ての物理ブロックを登録する誤り位置管理手段と、前記不揮発性メモリの１つのグループの物理ブロックよりＥＣＣ符号を読み出すデータ読み出し手段と、前記誤り位置管理手段に登録されている書き込みエラーが生じた物理ブロックのデータを、その物理ブロックが含まれるグループのエラーが生じていない物理ブロックのデータによって誤り訂正する誤り訂正手段と、前回の書き込みエラー発生から第１の基準時間Ｔ１の経過前に生じた書き込みエラーの位置情報について前記誤り位置管理手段により登録し、所定のタイミングで前記誤り位置管理手段に登録されたブロックを読み出し、前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするよう制御するシーケンサと、具備するものがある。
【００１６】
ここで前記シーケンサは、前回の書き込みエラーの発生から第１の基準時間Ｔ１の経過後に生じた書き込みエラーに対して前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするようにしてもよい。
【００１７】
ここで前記シーケンサの所定のタイミングは、前の書き込みエラーがあった再書き込み処理から第２の基準時間Ｔ２以上が経過したタイミングとしてもよい。
【００１８】
ここで前記シーケンサの所定のタイミングは、書き込みエラーの再書き込み処理から第２の基準時間Ｔ２以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込み終了後のタイミングとしてもよい。
【００１９】
ここで前記シーケンサの所定のタイミングは、書き込みエラーの再書き込みから処理から第２の基準時間Ｔ２以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込みが第３の基準時間以内に終了したタイミングとしてもよい。
【００２０】
ここで前記シーケンサの所定のタイミングは、半導体記録装置への電源の投入及び停止の少なくとも一方のタイミングとしてもよい。
【００２１】
ここで前記不揮発性メモリは、Ｎ＋Ｍ個（Ｎ，Ｍは自然数）の物理ブロックを１つのグループとするものであり、前記ＥＣＣ生成手段は、データの書き込みの際に入力された（Ａ＊Ｎ）ワード（Ａは自然数）のデータに対して、Ａワードの間隔で抽出したＮワードにＭワードのＥＣＣパリティを付加して、（Ｎ＋Ｍ）ワードのＥＣＣ符号をＡ個生成するものとしてもよい。
【００２２】
ここで前記データ分配手段は、前記ＥＣＣ生成手段によって生成されたＥＣＣ符号の（Ｎ＋Ｍ）ワードを、１ワード毎に前記不揮発性メモリの物理ブロックのグループ内で異なる物理ブロックに分配を繰り返すことにより、１つのグループの物理ブロックにＡワードずつ分配するものとしてもよい。
【００２３】
ここで前記第１の基準時間Ｔ１は、
Ｒin：映像信号の入力レート
Ｔout：半導体記録装置の１グループ当たりの書き込み保証時間
Ｔerr：書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
Ｄ：１グループの物理ブロックに記録されるＥＣＣパリティを含まないデータ量、とすると、
（Ｒin＊（Ｔout＋Ｔerr））／（Ｄ−Ｔout＊Ｒin）
で示されるようにしてもよい。
【００２４】
ここで前記の第２の基準時間Ｔ２は、
Ｒin：映像信号の入力レート
Ｔout：半導体記録装置の１グループ当たりの書き込み保証時間
Ｔerr：書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
Ｄ：１グループの物理ブロックに記録されるＥＣＣパリティを含まないデータ量、とすると、
（Ｒin＊（Ｔout＋Ｔerr））／（Ｄ−Ｔout＊Ｒin）
で示されるようにしてもよい。
【発明の効果】
【００２５】
上記構成によって、本発明によれば、不揮発性メモリを構成する複数の物理ブロックからＥＣＣ符号を構成して不揮発性メモリに記録する。書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、前記時間間隔が基準値以下であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとＥＣＣのグループになっているブロック番号とを登録する。そして、所定のタイミングで、前記誤り位置管理手段に登録された書き込みエラーをロードし、前記誤り位置管理手段に登録された書き込みエラーブロックのエラーをＥＣＣ符号により誤り訂正することによって復元し、再書き込みを行う。このため書き込みエラーが比較的短い間隔で発生した場合においても、再書き込み処理を遅らせることができる。
【００２６】
これにより、ホスト機器からデータを続けて受け付けることができ、ホスト機器のバッファメモリのオーバーフローを防止することができる。従って、再書き込み処理に時間を要す多値フラッシュメモリにおいて、書き込みエラーの頻発が許容されることになる。ホスト機器が映像機器で映像信号を半導体記録装置に記録する場合においても、映像信号のリアルタイム記録が可能である。
【図面の簡単な説明】
【００２７】
【図１】図１は多値フラッシュメモリの電子の蓄積状態を示す模式図である。
【図２】図２は多値フラッシュメモリの物理ブロックのセル共有を示す図である。
【図３】図３は多値フラッシュメモリのセルの状態遷移図である。
【図４】図４は本実施の形態における半導体記録装置の構成図である。
【図５】図５は本実施の形態における物理ブロックのデータ及びパリティの配置の説明図である。
【図６】図６は本実施の形態におけるパリティの作成の説明図である。
【図７】図７は本実施の形態における書き込みエラーが発生した場合の処理フロー図である。
【図８】図８は本実施の形態における書き込みエラーの修復処理を示す概念図である。
【図９】図９は書き込みエラーの修復処理を示す誤り位置の登録例を示す説明図である。
【図１０Ａ】図１０Ａは本実施の形態における書き込みエラーの修復処理を示すタイムチャートである。
【図１０Ｂ】図１０Ｂは本実施の形態における書き込みエラーの修復処理を示すタイムチャートである。
【発明を実施するための形態】
【００２８】
図４に第１の実施の形態による半導体記録装置の構成図を示す。本実施の形態において、外部インターフェイス手段１は、図示しないホスト機器からのコマンドやデータを受信し、データの転送を行うインターフェイスである。
【００２９】
ＥＣＣ生成手段２はホスト機器からライトコマンドを受信したときに、受信したライトデータに対してエラー訂正パリティを付加するものである。より詳細には、入力された（Ａ＊Ｎ）ワード（Ａ、Ｎは自然数）のデータに対して、Ａワードの間隔で抽出したＮワードにＭワード（Ｍは自然数）のＥＣＣパリティを付加して、（Ｎ＋Ｍ）ワードの第１のＥＣＣ符号をＡ個生成するものである。尚ＥＣＣパリティはエラー訂正の機能を持つコードである。ここで本実施の形態では、Ｎを４、Ｍを２、Ａを５１２として説明する。
【００３０】
データ分配手段３はＥＣＣ生成手段２でＥＣＣパリティを付加されたＥＣＣ符号をワード単位でフラッシュメモリの各物理ブロックに分配するものである。より具体的にはＥＣＣ生成手段２によって生成されたＥＣＣ符号の（Ｎ＋Ｍ）ワード、ここでは６ワードを、１ワード毎にフラッシュメモリの異なる物理ブロックに分配を繰り返すことにより、（Ｎ＋Ｍ）個の物理ブロックにＡワードずつ分配する。
【００３１】
データ書き込み手段４ａ〜４ｆは、データ分配手段３によって分配された物理ブロック当たりＡワードのデータを、不揮発性メモリの各物理ブロックに記録するものである。ここでは（Ｎ＋Ｍ）を６としているので、データ書き込み手段４ａ〜４ｆは６並列に実装し、６個のフラッシュメモリ５ａ〜５ｆの夫々１つの物理ブロックに夫々データを書き込むものである。
【００３２】
本実施の形態の半導体記録装置は、（Ｎ＋Ｍ）個、ここでは６個のフラッシュメモリ５ａ〜５ｆを有している。フラッシュメモリ５ａ〜５ｆは４値のフラッシュメモリとし、夫々は多数の物理ブロックから構成される。物理ブロックは消去単位であって、夫々２Ｋ個（Ｋは自然数）のページを有する。フラッシュメモリの内部は前述した図２に示すように０〜２Ｋ−１までのページ番号で管理されている。このうちページ番号０〜Ｋ−１のＫページはメモリセルの第１ページにより構成され、ページ番号Ｋ〜２Ｋ−１のＫページはメモリセルの第２ページにより構成される。各ページはＡワードの記憶容量を持っている。ここでは１ワードは例えば１バイト、即ち８ビットとする。ＥＣＣ生成手段２で生成されるＥＣＣ符号を構成する４つの論理ブロックを論理セグメント、各論理セグメントに対応する（Ｎ＋Ｍ）個の物理ブロックをグループという。
【００３３】
テーブル管理手段６ａ〜６ｆは、論物変換テーブルとブロックエントリテーブルを管理するものであって、フラッシュメモリの数に対応して６個実装される。論物変換テーブルは外部インターフェイス手段１を介して指示される論理ブロックと、論理ブロックに対応するフラッシュメモリの物理ブロックのアドレスとを関連づけるものである。ブロックエントリテーブルは電源の投入後に生成されるもので、各物理ブロックの使用又は未使用を示すテーブルである。テーブル管理手段６ａ〜６ｆは独立に動作し、これらのテーブルを管理すると共にデータ書き込みの際論理ブロックに対応する新規物理ブロックを抽出するものである。
【００３４】
書き込みエラー検出手段７ａ〜７ｆは各フラッシュメモリ５ａ〜５ｆに書き込みを行ったときに生じる書き込みエラーを夫々検出するものであり、フラッシュメモリの数に対応して６個実装する。
【００３５】
誤り位置管理手段８は、書き込みエラー検出手段７ａ〜７ｆで検出されたエラーに対して、書き込みエラーが発生した物理ブロック及びこのブロックとグループを構成する他の物理ブロック（以下、エレメントブロックという）のブロック番号とを登録するものである。書き込みエラー発生直後に再書き込み処理を実施する場合は、誤り位置管理手段８を動作させる必要はない。一方、書き込みエラー発生直後に再書き込み処理を実施しない場合には、誤り位置管理手段８は、将来的に再書き込みを行う物理ブロックとして、書き込みエラーが発生した物理ブロックとそのエレメントブロックとを登録しておく。
【００３６】
データ読み出し手段９ａ〜９ｆは、ホスト機器より半導体記録装置に読み出しコマンドが与えられたときに、指定されたアドレスに対応する各フラッシュメモリ５ａ〜５ｆより、データを読み出すものである。またデータの書き込み時にエラーがあり、誤り位置管理手段８で管理されている書き込みエラーをＥＣＣ符号に基づいて訂正する場合にもデータを読み出す。
【００３７】
誤り訂正手段１０は、データの書き込み時にエラーがあったときに、データ読み出し手段９ａ〜９ｆを介して読み出されたデータと、誤り位置管理手段８で示すエラー位置とに基づいて、エラー訂正を実施し、データを復元するものである。復元したデータは、データ分配手段３、データ書き込み手段４ａ〜４ｆを介してフラッシュメモリ５ａ〜５ｆのいずれかに書き戻される。
【００３８】
シーケンサ１１は、ホスト機器から発行されるライトコマンドが与えられ、データを書き込んだときに書き込みエラーが生じると、そのエラーの間隔を監視し、後述するシナリオを切り替える。より詳細には、シーケンサ１１はライトコマンドのエラー間隔に応じてエラーブロックと当該エラーブロックのエレメントブロックのデータをデータ読み出し手段９ａ〜９ｆを介して読み出し、誤り訂正手段１０により誤り訂正を実施する。更にシーケンサ１１は修復されたエラーブロックのデータをデータ分配手段３、データ書き込み手段４ａ〜４ｆを介して新規物理ブロックに書き込むものである。
【００３９】
次に本実施の形態の半導体記録装置の動作について説明する。まずテーブル管理手段６ａ〜６ｆは、電源投入時に論物変換テーブルをリードし、全物理ブロックの使用状態（使用又は未使用）を示すブロックエントリテーブルを作成する。本実施の形態では、テーブル管理手段６ａ〜６ｆは、フラッシュメモリ６個を制御するため、ブロックエントリテーブルを６個作成する。
【００４０】
次にデータの書き込みについて説明する。データを書き込む場合には、ホスト機器は、半導体記録装置にライトコマンドと共に論理アドレス及び書き込みデータを転送する。ここで書き込みデータはワード単位で表示し、ワード０からワード８ＫＡのデータを書き込みデータとして転送するものとする。外部インターフェイス手段１を介してライトコマンドを受けると、ＥＣＣ生成手段２は、書き込みデータをワード単位でＡワード毎に分離し、ＥＣＣパリティを付加する。データ分配手段３は、各フラッシュメモリに記録するためデータをＡワード毎に分配して夫々データ書き込み手段４ａ〜４ｆに入力する。
【００４１】
図５は６つのフラッシュメモリ５ａ〜５ｆにストライピング記録される場合の並列の物理ブロックとデータ及びパリティの関係を示す図である。図中の物理ブロックＰＢ０はフラッシュメモリ５ａの物理ブロック、物理ブロックＰＢ１はフラッシュメモリ５ｂの物理ブロックであり、以下同様に物理ブロックＰＢ２，ＰＢ３，ＰＢ４，ＰＢ５は夫々フラッシュメモリ５ｃ，５ｄ，５ｅ，５ｆの物理ブロックである。ＰＮはページ番号を示す。外部のホスト機器により指定されるライトアドレスに対して、フラッシュメモリのページ内のワード番号、フラッシュメモリの番号、各フラッシュメモリの物理ブロックの番号、物理ブロック内のページ番号が一意で定まる。図５の物理ブロックＰＢ０〜ＰＢ３の各ページには、そのページに書き込まれる先頭のワード番号が示されている。そして、フラッシュメモリ５ｅ、５ｆの物理ブロックの各ページにはＥＣＣ生成手段２により生成されたＥＣＣパリティが書き込まれる。
【００４２】
図６はＥＣＣ生成手段２によるＥＣＣパリティの生成方法を示す。図６（ａ）に、各物理ブロックＰＢ０，ＰＢ１，ＰＢ２，ＰＢ３及びＰＢ４，ＰＢ５のページ０のワードのアサインメントを示す。図６（ｂ）は各ページの最初のワードに関するＥＣＣパリティとの関連図、図６（ｃ）は各ページの２番目のワードに関するＥＣＣパリティとの関連図、図６（ｄ）は各ページの最終ワードに関するＥＣＣパリティとの関連図である。上記のように、複数のデータを夫々要素とし、複数の要素を夫々相異なる物理ブロック、ここではＰＢ０〜ＰＢ３から抽出してＥＣＣパリティを生成し、２バイト分のＥＣＣパリティを１バイトづつ別の物理ブロック、ここではＰＢ４、ＰＢ５に記録する。
【００４３】
ここでＥＣＣ符号について説明する。ＥＣＣ生成手段２では、１ワード、即ち１バイトを上位４ビットと下位４ビットに分割し、各４ビットを１シンボルとする。そして、Ｘ4＋Ｘ＋１を生成多項式とするＧＦ（１６）のガロア体において、（６，４）のリードソロモン符号を構成し、２シンボルのパリティを生成する。即ち、入力シンボルを（ａ３，ａ２，ａ１，ａ０）、パリティシンボルを（ｐ１，ｐ０）とすると、入力シンボルの情報多項式は次式で示される。
Ａ（Ｘ）＝ａ３＊Ｘ3＋ａ２＊Ｘ2＋ａ１＊Ｘ1＋ａ０  ・・・（１）
また符号生成多項式は次式で示される。
Ｇ（Ｘ）＝（Ｘ−α0）（Ｘ−α）  ・・・（２）
この符号生成多項式において、
Ａ（Ｘ）＊Ｘ2÷Ｇ（Ｘ）の剰余Ｒ（Ｘ）を求め、Ｒ（Ｘ）の１次項をｐ１、Ｒ（Ｘ）の０次項をｐ０とする。図６では物理ブロックＰＢ４に１次項であるＰ１＿０，Ｐ１＿１，・・・Ｐ１＿（Ａ−１）が書き込まれ、物理ブロックＰＢ５に０次項であるＰ０＿０，Ｐ０＿１，・・・Ｐ０＿（Ａ−１）が書き込まれることを示している。
【００４４】
こうすればこのうちの最大２個の物理ブロックへの書き込みにエラーが生じて、ａ３，ａ２，ａ１，ａ０，ｐ１，ｐ０のうち２つの要素がエラーとなっても、ＥＣＣ符号の他の要素に基づいて後述する誤り訂正を実施することにより、データを復元することができる。
【００４５】
データ書き込み手段４ａ〜４ｆは、データ分配手段３により分配されたデータをフラッシュメモリ５ａ〜５ｄの物理ブロックの各ページに書き込み、分配されたＥＣＣパリティをフラッシュメモリ５ｅ，５ｆに書き込む。フラッシュメモリへの書き込みにおいては、所定の時間以内にＶｔｈが所望の電位に到達しない場合に、フラッシュメモリのセルエラーと判断する。書き込みエラー検出手段７ａ〜７ｆはフラッシュメモリより得られるエラーの出力を誤り位置とする。書き込みエラーが発生した場合は、以後は書き込みエラーが発生した物理ブロックを使用せず、続けて別の物理ブロックに書き込む。そのためエラーが発生した物理ブロックをバッドブロックとして登録し、新物理ブロックを抽出して再度書き込む処理が必要となる。
【００４６】
次に、書き込みエラーの発生後の処理について説明する。本実施の形態では、グループを構成する６個の物理ブロックのうち、２つの物理ブロックへの書き込みエラーがあっても訂正可能である。よって、１つのグループのうち書き込みエラーが発生した物理ブロック数に従って、以下のシナリオに従って動作させる。
（シナリオ１）１つのグループの書き込みエラーが生じた物理ブロック数が３以上の場合は、ホスト機器にエラーステータスを返し、ホスト機器は当該ライトコマンドにかかるデータのみ、再書き込みを実施する。
（シナリオ２）エラーブロック数が２以下であって前回の書き込みエラーが発生してからの第１の基準時間Ｔ１を経過して書き込みエラーが発生した場合は、当該コマンドより前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをＥＣＣ訂正した後、新規物理ブロックに再度書き込む。
（シナリオ３）エラーブロック数が２以下であって、前回の書き込みエラーが発生してから第１の基準時間Ｔ１が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段８に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が１個の場合と２個の場合に分類して登録する。
（シナリオ４）前回の書き込みエラーが発生し、登録してからの第１の基準時間Ｔ１を経過して、更に書き込みエラーが発生しなかった場合、誤り位置管理手段８に登録されている書き込みブロックのエラーページ前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをＥＣＣで誤り訂正して再度書き込む。このとき２つの書き込みエラーを生じた物理ブロック数のグループを優先して誤り訂正する。
（シナリオ５）エラーブロック数が２以下であって、再書き込みから第２の基準時間Ｔ２が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段８に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が１個の場合と２個の場合に分類して登録する。
（シナリオ６）前回のエラーの復元と再書き込みから第２の基準時間Ｔ２が経過して書き込みエラーが発生しなかった場合、誤り位置管理手段８に登録されているエラーブロックのエラーページ前に書き込み済みであったページ及びエラーページをＥＣＣで誤り訂正した後、新規物理ブロックに再度書き込む。このときも２つの書き込みエラーが生じたグループの誤り訂正を優先する。
【００４７】
以上の（シナリオ１）〜（シナリオ６）について、図７のフローチャートを参照にしながら詳細に説明する。
（シナリオ１）まず、Ｓ１において書き込みエラーが発生した物理ブロック数が３以上かどうかを判断し、３以上の場合に、ステップＳ２に進んでホスト機器から再書き込みを実施する。１つのグループに３物理ブロック以上のライトエラーが発生する確率はほぼ０であるため、不揮発性メモリの不良と考えられる。よってこの場合は、故障時に発生する異常処理として書き込みエラーの発生直後に、エラーステータスをホスト機器に返す。このときホスト機器は当該コマンドにかかるデータのリライトを実施する。シナリオ１は、書き込んだＥＣＣ符号によってエラーの訂正が不可能な場合であり、セル共有部に伝搬したエラーの復元も不可能である。しかしながら、エラー発生確率が１Ｅ−０６とすると、６個の物理ブロックの内３個がエラーになる確率は２Ｅ―１７程度であり、生起確率が微少なため特に問題としない。
【００４８】
（シナリオ２）２ブロック以下の書き込みエラーが発生した場合は、Ｓ３において、前回の書き込みエラーが発生してから第１の基準時間Ｔ１を経過したかどうかを判定する。前回の書き込みエラーが発生してからの経過時間をＴ＿Ｒｅａｌとすると、次式（３）を満たす場合にＳ４に進んで誤り訂正手段１０による誤り訂正を行う。
Ｔ＿Ｒｅａｌ＞Ｔ１  ・・・（３）
ここで基準時間Ｔ１について説明する。まず
Ｒin：映像信号の入力レート
Ｔout：半導体記録装置の１グループ当たりの書き込み保証時間
Ｔerr：書き込みエラー発生からエラーステータスをホストに返すまでの時間とする。
１度書き込みエラーが発生した場合は、書き込みが成功した場合と比較して、（Ｔout＋Ｔerr）に相当する時間が余分に発生し、これをライト速度と考えることができる。このときＲin＊（Ｔout＋Ｔerr）分のデータがホスト機器のバッファメモリに蓄積される。従って、書き込みエラーが発生したときに、ホスト機器が再書き込みすることができる条件は、ホスト機器のバッファメモリの空き容量がＲin＊（Ｔout＋Ｔerr）以上あることである。
【００４９】
一方、論理セグメントのデータ量をＤとすると、エラーが発生していない場合に、ホスト機器のバッファメモリに蓄積されたデータ量は、平均的にＴout＊（Ｄ／Ｔout−Ｒin）減少していく。よって、Ｒin＊（Ｔout＋Ｔerr）分のデータがホスト機器のバッファメモリから解放される時間をＴ＿ＲＥＦで定義すると、この時間は次式で示される。
Ｔ＿ＲＥＦ＝（Ｒin＊（Ｔout＋Ｔerr））／（Ｄ−Ｔout＊Ｒin）  ・・・（４）
従ってこの時間Ｔ＿ＲＥＦを第１の基準時間Ｔ１とする。後述する第２の基準時間Ｔ２についても同様とする。
【００５０】
上記のように、シーケンサ１１は入力されるコマンドと書き込みエラー発生の状態とを管理し、前回の書き込みエラーに起因してホスト機器のバッファメモリに蓄積されたデータが全て解放されるタイミングを予測し、発生した書き込みエラーにかかるエラー修復を実施する。その後Ｓ５において第１の経過時間の計数を開始する。
【００５１】
シナリオ２の誤り訂正と再書き込み処理について、以下詳細に説明する。本実施の形態では、４値フラッシュメモリを用いているため、各メモリセルを第１ページと第２ページの２ページで共有している。このため前述したように第２ページの書き込み時にエラーが生じると、メモリのセルを共有する第１ページにもエラーが伝搬する可能性がある。従って、書き込みエラー検出手段７ａ〜７ｆは、書き込み時に書き込みエラーが発生したかどうかを検出する。物理ブロックにおけるセル共有の状態は半導体プロセス、半導体製造会社によって異なるため、フラッシュメモリのセル共有情報は不明なものとして再書き込みを行う。例えば、第（Ｋ＋１）ページの書き込みにおいてエラーが発生したとする。エラー発生ページが第２ページであれば、それより前のページ０〜ページＫのうちのいずれかのページに、ページ（Ｋ＋１）とセルを共有する第１ページが含まれている。
【００５２】
図８（ａ），（ｂ），（ｃ）はエラー発生ブロックを修復する際の説明図である。この場合は以下のステップに沿って処理を行う。
（Ｓ１１）書き込みエラー検出手段により書き込みエラーが発生した物理ブロックと発生したページを検出する。図８（ａ）は、書き込み中にエラーが発生した場合に、そのージを示す模式図であり、物理ブロックのハッチングで示すページ（Ｋ＋１）にデータを書き込んでいるときに書き込みエラーが発生したことを示す。
（Ｓ１２）テーブル管理手段６ａ〜６ｆにより新物理ブロックを確保する。
（Ｓ１３）エラー発生した以前のページをＥＣＣ符号の要素としているグループの他の物理ブロックのページ（ページ０〜ページ（Ｋ＋１））のデータをデータ読み出し手段８ａ〜８ｆを介して読み出す。図８（ｂ）はエラーが発生した物理ブロックのエラー訂正の対象となるページを示す模式図である。
（Ｓ１４）データ読み出し手段８ａ〜８ｆによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段１０により誤り訂正する。
（Ｓ１５）誤り訂正されたページのデータを、新物理ブロックのページに書き込む。図８（ｃ）はデータを修復した後の新物理ブロックの状態を示す。
【００５３】
ここで誤り訂正手段１０による誤り訂正について説明する。ここで誤り訂正手段１０が受信した６個のシンボルをｂ３，ｂ２，ｂ１，ｂ０，ｑ１，ｑ０とする。このシンボルにおいて、ｂ３はＰＢ０、ｂ２はＰＢ１、ｂ１はＰＢ２、ｂ０はＰＢ３、ｑ１はＰＢ４、ｑ０はＰＢ５の夫々の物理ブロックから読み出されたデータである。このうちエラーが検出されたブロックから読み出されたシンボルは誤りを含んでいる可能性がある。この場合、次式を受信符号多項式とする。
Ｕ（Ｘ）＝ｂ３＊Ｘ5＋ｂ２＊Ｘ4＋ｂ１＊Ｘ3＋ｂ０＊Ｘ2＋ｑ１＊Ｘ＋ｑ０  ・・・（５）
そしてＵ（Ｘ）において、エラーの可能性のある２個のシンボルを０として、Ｕ（１）およびＵ（α）を計算する。ここで、誤りシンボル位置をｙ０、ｙ１（０≦ｙ０，ｙ１≦５を満たす整数）、誤りの大きさをｚ０、ｚ１とすると、下記の式（６），（７）が成立する。
ｚ０＋ｚ１＝Ｕ（α0）、  ・・・（６）
αy0＊ｚ０＋αy1＊ｚ1＝Ｕ（α）  ・・・（７）
式（６），（７）において、誤り位置ｙ０、ｙ１は既知なので、２元連立方程式を解くことによって、誤りの大きさｚ０、ｚ１を計算し、誤り位置ｙ０、ｙ１にかかるシンボルを夫々ｚ０、ｚ１に誤り訂正することができる。こうして１つのグループから読み出したＥＣＣ訂正符号において最大２ページの誤り訂正が不可であった場合も、残りの４ページのデータと２個の誤り位置から計算して、誤り位置にかかるページのデータを誤り訂正することができる。
【００５４】
以上説明したように、（Ｋ＋１）ページに書き込みエラーが発生した場合に、（Ｋ＋１）ページより前のいずれかのページにセル共有しているページがあり、当該ページのデータにエラーが伝搬している可能性がある。従って、エラー訂正符号を構成している他の物理ブロックの対応するページのデータを読み出して誤り訂正を実施し、データを復元した後に再度書き込む。この処理を各ブロックのエラーが生じたページより前に書き込まれた全ページ、即ち０ページからＫページまで実施する。こうすることにより、セル共有に基づくエラー伝搬を防止することができる。また、このシナリオ２は、式（３）を満たす場合、即ち書き込みエラーの発生間隔が比較的長い場合に限定して実施するので、ホスト機器のバッファメモリがオーバーフローすることはない。
【００５５】
尚、上記説明では、ホスト機器にエラーステータスを返さず、ライトコマンドで生じるエラーも誤り訂正をしながら再書き込んでいるが、ホスト機器にエラーステータスを返し、ホスト機器が当該コマンドにかかるデータを再度書き込むようにしてもよい。
【００５６】
次に、以降の書き込みエラーの発生時間が式（３）を満たさなかった場合について、図７のフローチャートを用いて説明する。
【００５７】
（シナリオ３）シナリオ３において、１つのグループの書き込みエラー物理ブロック数が２個以下の場合は、Ｓ６においてエラー毎に誤り位置管理手段８に、エラー物理ブロックとそのエレメントブロックとを登録する。このとき書き込みエラーの物理ブロック数が多いグループを優先してデータ復元処理を実施するため、図９に示すように書き込みエラー物理ブロック数が１個の場合と２個の場合に分類して登録しておく。
【００５８】
（シナリオ４）シナリオ４は、誤り位置管理手段８により登録されている書き込みエラーをＥＣＣ訂正によって復元して再書き込みを実施するシナリオである。この場合Ｓ７，Ｓ８に示すように前回の書き込みエラーが発生してから第１の基準時間Ｔ１が経過した後に誤り訂正と再書き込みを行う。更にその後にＳ９において第２の経過時間の計数を開始する。この場合はシナリオ２と同様に、少なくともホスト機器のバッファメモリの空き容量がＲin＊（Ｔout＋Ｔerr）以上保証されており、シナリオ４の実施中にホスト機器のバッファメモリがオーバーフローすることはない。また、シナリオ４はホスト機器が発行した書き込みコマンドにかかる書き込み動作が成功した直後に実施するのが望ましい。そうすればホスト機器はデータ書き込み中と認識し、ホスト機器から命令したデータの書き込み時間が増加しているように検出されるからである。不揮発性メモリの書き込み時間は３倍以上のばらつきがあるので、書き込み時間が増加するのはホスト機器にとって想定内の事象である。
【００５９】
また、ホスト機器から命令されたデータの書き込み時間を計測し、書き込み時間が第３の基準時間Ｔ３以内に終了した後に限定して、再書き込み処理を実施すれば、本処理を隠すことができる。さらに、（シナリオ４）が実施されると、ホスト機器のバッファメモリにデータが蓄積されていくので、Ｓ５で開始した第１の経過時間の計数はリセットされることとなる。
【００６０】
エラーブロック数が２以下であって、再書き込みから第２の基準時間Ｔ２が経過するまでに書き込みエラーが発生した場合について説明する。
【００６１】
（シナリオ５）シナリオ５において、１つのグループの書き込みエラー物理ブロック数が２個以下の場合は、Ｓ６においてエラー毎に誤り位置管理手段８に、エラー物理ブロックとそのエレメントブロックとを登録する。このとき書き込みエラーの物理ブロック数が多いグループを優先してデータ復元処理を実施するため、図９に示すように書き込みエラー物理ブロック数が１個の場合と２個の場合に分類して登録しておく。
【００６２】
（シナリオ６）シナリオ６は、誤り位置管理手段８により登録されている書き込みエラーをＥＣＣ訂正によって復元して再書き込みを実施するシナリオである。この場合Ｓ７，Ｓ８に示すように前回の書き込みエラーが発生してから第２の基準時間Ｔ２が経過した後に誤り訂正と再書き込みを行う。更にその後にＳ９において第２の経過時間の計数を開始する。この場合はシナリオ２と同様に、少なくともホスト機器のバッファメモリの空き容量がＲin＊（Ｔout＋Ｔerr）以上保証されており、シナリオ６の実施中にホスト機器のバッファメモリがオーバーフローすることはない。
【００６３】
シナリオ４，６で実施する誤り訂正と再書き込み処理は、以下のステップで実施される。
（Ｓ２１）誤り位置管理手段８より、書き込みエラー物理ブロック数が２個発生したグループを優先して、当該グループの各物理ブロック番号と書き込みエラーが発生した物理ブロックの位置を読み出し
（Ｓ２２）新物理ブロックを確保
（Ｓ２３）Ｓ２１で読み出したグループにおいて、書き込みエラーが発生していない物理ブロックのページをデータ読み出し手段８ａ〜８ｆを介してリード
（Ｓ２４）データ読み出し手段８ａ〜８ｆによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段１０により誤り訂正
（Ｓ２５）誤り訂正されたページのデータを、新物理ブロックのページに書き込み
（Ｓ２６）ホスト機器に書き込み終了ステータスを返す。
【００６４】
次にこのエラーが生じた後の誤り訂正と再書き込み処理について、タイムチャートを用いて説明する。図１０Ａ，図１０Ｂにおいて横軸は時間軸を示し、１つのグループの物理ブロックのエラー数は２以下とする。図１０Ａにおいて、時刻t1のタイミングで第１のエラーＥ１が生じたものとする。このときシーケンサ１１は以前にエラーがなければ、シナリオ２に従って誤り訂正を行う。次いで時刻t2に第２のエラーＥ２が生じたとする。この場合は基準時間Ｔ１以内に第２のエラーＥ２が生じているので、時刻t2の時点では誤り訂正を行わず、シナリオ３により誤り位置管理手段８に登録（Ｒ）する。そして時刻t3に基準時間Ｔ１を経過するので、その後の時刻t4のタイミングでシナリオ４に従って誤り訂正と再書き込み（ＲＷ）を行う。ここで再書き込みによってホスト機器からデータの転送を遅らせる必要があり、ホスト機器内のバッファにはデータが蓄積していく。従って更にエラーが生じた場合には、この再書き込み時間からの時間によって直ちにエラー訂正するか、登録しておき後に誤り訂正するかを判断する必要がある。そこで時刻t4より再書き込み時に時間の計測を開始する。その後、時刻t5に第２の基準時間Ｔ２の範囲内で第３のエラーＥ３が起これば、シナリオ５に従って誤り位置管理手段８に登録（Ｒ）する。そして時刻t6に第２の基準時間Ｔ２を経過するので、その後の時刻t7にシナリオ６に従って再書き込み（ＲＷ）を行う。ここで第１，第２の基準時間Ｔ１，Ｔ２はいずれもＴ＿ＲＥＦとすることができる。こうすればホスト機器内のバッファに転送すべきデータがあふれることがなく、連続してデータを転送することができる。
【００６５】
図１０Ｂに示す時刻t1からt6までの処理については図１０Ａの場合と同様である。図１０Ｂでは時刻t7の再書き込みに代えて、次に送られてきたライトコマンド（ＷＣ）によってデータを書き込んだ直後に、再書き込みを行う。この場合にライトコマンドに伴うデータの書き込み時間が長ければホスト機器のバッファにデータを蓄積しきれなくなる可能性がある。従ってこのライトコマンドの書き込み時間を第３の基準時間Ｔ３と比較し、第３の基準時間Ｔ３内であるときにのみデータの復元と再書き込みを実施するようにしてもよい。第３の基準時間Ｔ３はデータの書き込み時間として許容される時間より十分短い時間とする。
【００６６】
以上説明したように、本実施の形態によれば、データの書き込み時にエラー訂正符号を構成して不揮発性メモリに記録し、書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、前記時間間隔が基準値以上であれば書き込みエラー直後に再書き込みを実施し、前記時間間隔が基準値以下であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとＥＣＣのグループになっているブロック番号とを登録する。そして、直前に発生した書き込みエラーとの間隔が基準時間以上経過した場合に、誤り位置管理手段に登録された書き込みエラーのブロックをロードし、そのブロックのエラーをＥＣＣ符号により誤り訂正することによって復元し再書き込みを行う。このため、書き込みエラーが比較的短い間隔で発生した場合においても、再書き込み処理を遅らせることができ、ホスト機器のバッファメモリのオーバーフローを防止できる。従って、再書き込み処理に時間を要する多値フラッシュメモリにおいて書き込みエラーが頻発した場合においても、データを続けて書き込むことができる。ホスト機器が映像信号のリアルタイム記録機器の場合においても、リアルタイム記録が可能である。
【００６７】
なお、本実施の形態では、２つの書き込みエラーが生じたグループの復元を優先して再書き込みを実施したが、発生時間を優先してもよいし、場合によっては、１個の書き込みエラーのグループは訂正しなくてもよい。
【００６８】
上記説明では、シナリオ２の起動は、前回の書き込みエラーが発生からの基準時間Ｔ１を経過した場合の書き込みエラーの発生時として説明したが、周期的にライトコマンドが与えられる場合には、ライトコマンド数によって基準時間Ｔ１を規定してもよい。またシナリオ３における処理も、連続して書き込みエラーが発生しなかったライトコマンドの数で基準時間Ｔ１を規定してもよい。
【００６９】
また、シナリオ３の処理にかかる誤り位置管理手段で登録する誤り位置情報は、書き込みエラー発生の頻度に従って、不揮発性メモリに登録してもよいし、しなくてもよい。
【００７０】
また、シナリオ３の起動は、ホスト機器から所定時間以上コマンドが発行されなかった場合でもよい。更に、シナリオ３の起動は、電源投入直後あるいは、電源オフ時の処理として実施してもよい。
【００７１】
なお、上記説明では簡単のためにＥＣＣ符号は２パリティとしたが、それ以上のパリティを付加しても良いし、１パリティであってもよいことはいうまでもない。即ちパリティの数Ｍは、１以上の任意の自然数とすることができる。
【００７２】
本実施の形態では、１つのメモリセルに格納するビット数が２ビットの４値フラッシュメモリを用いた半導体記録装置について説明したが、本発明はさらに状態を増加させ、１セルに３ビット以上格納できる多値フラッシュメモリにも適応することができる。さらに、多値フラッシュメモリのみならず、２値フラッシュメモリやその他の不揮発性メモリに適応しても同様の効果が得られる。
【００７３】
また本実施の形態では６つのフラッシュメモリを用いてＥＣＣ符号の各要素を夫々のフラッシュメモリに記憶するようにしているが、１つのフラッシュメモリの中で異なる物理ブロックに記録するようにしてもよい。
【００７４】
又本実施の形態では、データ分配手段３は１つのグループを形成する物理ブロックに均等にデータを分配するようにしたが、必ずしも均等でなくてもよい。
【００７５】
更に本実施の形態では、誤り位置管理手段は図９に示すように書き込みエラーがあった物理ブロック、及びその物理ブロックとグループを構成するエレメントブロックとを登録するようにしたが、書き込みエラーがあった物理ブロックと同一グループを構成する全ての物理ブロックを登録しておいてもエラー訂正を行うことができる。
【産業上の利用可能性】
【００７６】
本発明の半導体記録装置は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリで発生する書き込みエラーをエラーの後に修復することができ、フラッシュメモリに連続してデータを書き込む際に書き込み速度を維持することができるため、信頼性を必要とされる業務用分野で使用される可能性が大きい。
【符号の説明】
【００７７】
１  外部インターフェイス手段
２  ＥＣＣ生成手段
３  データ分配手段
４ａ〜４ｆ  データ書き込み手段
５ａ〜５ｆ  フラッシュメモリ
６ａ〜６ｆ  ライトエラー検出手段
７  フラグ生成手段
８  誤り位置管理手段
９ａ〜９ｆ  データ読み出し手段
１０  誤り訂正手段
１１  シーケンサ
【図１】
2010097600.tif 000003
【図２】
2010097600.tif 000004
【図３】
2010097600.tif 000005
【図４】
2010097600.tif 000006
【図５】
2010097600.tif 000007
【図６】
2010097600.tif 000008
【図７】
2010097600.tif 000009
【図８】
2010097600.tif 000010
【図９】
2010097600.tif 000011
【図１０Ａ】
2010097600.tif 000012
【図１０Ｂ】
2010097600.tif 000013