(57)【要約】【課題】  本データとそれが不良だった場合に代わりに読み出す予備データとの対応を示すテーブルを不要とすることでデータにアクセスする時間を短縮化しかつデータ容量を低く抑えることができるメモリ装置、メモリ制御方法及びメモリ制御装置を提供する。【解決手段】  本データに訂正不能なエラーが生じた際に代わりに読み出す予備データを格納した予備データブロック２２をその本データを格納した本データブロック２１と物理アドレスが隣接するように配置する。本データブロック２１のページをそのページインデックス順に読み出し、不良ページが検出されたら、物理ブロックアドレスをインクリメントして予備データブロック２２の対応するページからデータを読み出す。【選択図】  図６
2005242903.tif 000002
【特許請求の範囲】
【請求項１】
データが書換え可能な半導体メモリと、
本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、上記半導体メモリに書き込むよう制御する制御手段を有し、
上記制御手段は、上記半導体メモリのアクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御する
ことを特徴とするメモリ装置。
【請求項２】
上記所定の規則は、予備データをその本データと物理アドレスが隣接する領域に配置するものである
ことを特徴とする請求項１記載のメモリ装置。
【請求項３】
上記制御手段は、アクセスした本データに訂正不能なエラーが生じている場合に、当該本データの予備データから新たにデータセットを用意して上記所定の規則を満たす領域に移動させる
ことを特徴とする請求項１記載のメモリ装置。
【請求項４】
上記半導体メモリは、ブロック単位でデータが消去され、該ブロック単位より小さいデータサイズのページ単位でデータが書き込まれる
ことを特徴とする請求項１記載のメモリ装置。
【請求項５】
予備データのブロックは、その本データのブロックと同一のブロックインデックスを有し、
予備データのページは、その本データのページと同一のページインデックスを有する
ことを特徴とする請求項４記載のメモリ装置。
【請求項６】
上記制御手段は、本データのブロックを構成するページを所定の順序で読み出し、その際に訂正不能なエラーが生じている不良ページを検出した場合、当該本データのブロックに対応する予備データのブロックにおける上記不良ページに対応する予備データのページから予備データを読み出し、その最終ページまで予備データのブロックを読み出す
ことを特徴とする請求項５記載のメモリ装置。
【請求項７】
本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、半導体メモリに書き込むよう制御する制御工程を有し、
上記制御工程では、上記半導体メモリのアクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御する
ことを特徴とするメモリ制御方法。
【請求項８】
上記所定の規則は、予備データをその本データと物理アドレスが隣接する領域に配置するものである
ことを特徴とする請求項７記載のメモリ制御方法。
【請求項９】
上記制御工程では、アクセスした本データに訂正不能なエラーが生じている場合に、当該本データの予備データから新たにデータセットを用意して上記所定の規則を満たす領域に移動させる
ことを特徴とする請求項７記載のメモリ制御方法。
【請求項１０】
上記制御工程では、上記半導体メモリのデータをブロック単位で消去し、該ブロック単位より小さいデータサイズのページ単位で書き込み又は読み出す
ことを特徴とする請求項７記載のメモリ制御方法。
【請求項１１】
上記制御工程では、本データ及びその予備データを書き込む際に該本データ及びその予備データと共に両者に共通のブロックインデックス及びページインデックスを書き込むよう制御する
ことを特徴とする請求項１０記載のメモリ制御方法。
【請求項１２】
上記制御工程では、本データのブロックを構成するページを所定の順序で読み出し、その際に訂正不能なエラーが生じている不良ページを検出した場合、当該本データのブロックに対応する予備データのブロックにおける上記不良ページに対応する予備データのページから予備データを読み出し、その最終ページまで予備データのブロックを読み出す
ことを特徴とする請求項１１記載のメモリ制御方法。
【請求項１３】
上記制御工程では、本データの予備データを書き込むよう指示された場合に上記所定の規則に従って予備データを書き込むよう制御する
ことを特徴とする請求項７記載のメモリ制御方法。
【請求項１４】
本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、半導体メモリに書き込むよう制御する制御手段を有し、
上記制御手段は、上記半導体メモリにアクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御する
ことを特徴とするメモリ制御装置。
【請求項１５】
上記制御手段は、上記半導体メモリのデータをブロック単位で消去し、該ブロック単位より小さいデータサイズのページ単位で書き込み又は読み出すものであって、本データ及びその予備データを書き込む際、データと共に両者に共通のブロックインデックス及びページインデックスを書き込むよう制御する
ことを特徴とする請求項１４記載のメモリ制御装置。
【請求項１６】
上記制御手段は、本データのブロックを構成するページを所定の順序で読み出し、その際に訂正不能なエラーが生じている不良ページを検出した場合、当該本データのブロックに対応する予備データのブロックにおける上記不良ページに対応する予備データのページから予備データを読み出し、その最終ページまで予備データのブロックを読み出す
ことを特徴とする請求項１５記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、本データに訂正不能なエラーが生じた際に代わりに読み出す予備データを本データと共に記録したメモリにデータを書き込む又はメモリからデータを読み出すためのメモリ制御装置、これを備えたメモリ装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
従来、例えば他の用途よりも劣悪な周囲環境で使用される機器において、信頼性を向上させるためなどに、不揮発性記録媒体として可動部を持たない半導体記録媒体が使用される。この半導体記録媒体においては、その記録容量を増大するため、又は生産性の観点などから、１ビット毎に読み書き可能なＥＥＰＲＯＭ（electrically erasable and programmable ROM）のように１メモリセルに２個の素子を用いる半導体記録媒体に代えて、ＡＮＤ型フラッシュメモリのように１メモリセルを１個の素子で実現して記録容量を増大させた半導体記録媒体が使用されている。
【０００３】
ところで、フラッシュメモリには、必然的に後発性の不良ビットが発生してしまう。そのため、フラッシュメモリを使用する場合は誤り訂正符号を使用して数個の不良ビットが発生してもその誤りを訂正して元のデータとして扱えるようにしている。ただし、誤り訂正符号には上限がありその上限を超えたものは不良ブロックとして判断し、読み込みを行なっても正規のデータを取り出すことはできずそれ以上の書き込みも禁止するものとしている。
【０００４】
フラッシュメモリにデータを格納する際、特にＡＮＤ型フラッシュメモリのような他のフラッシュメモリと比べてメモリ自体の信頼性が低いものや、不良ブロックが発生して正規のデータ取得が困難になると集積回路の動作に支障をきたしてしまうため信頼性を保証しなければならないファームウェアなどの重要度が高いデータを記憶させる場合などにおいては、本データのほかに、本データを格納したブロックに不良が発生した際の不良ブロック対策として予備のデータを別の記録領域に格納しておく。
【０００５】
そのような一例としては、本データ、その予備データ、及びその対応関係を示すテーブルを別々に格納し、不良ブロックが発生した時に、テーブルから対応関係を読み出し予備データを読むことで、本データの不良ブロックの発生に対応するものがある（下記特許文献１）。このことにより、フラッシュメモリに不良セクタが生じても当該セクタを代替して信頼性の維持を図るものである。
【０００６】
すなわち、アクセス指示に対応するデータセクタにアクセスした際、当該データセクタが不良セクタだった場合、テーブルセクタにアクセスし、そのテーブルセクタから、上記不良セクタの代替となるスペアセクタの対応情報を読み出し、この対応情報に基づき不良セクタに格納されているデータのスペアが格納されているスペアセクタにアクセスする。
【０００７】
また、テーブルセクタから対応情報を読み出そうとした際、テーブルセクタのデータエリアが不良である場合、テーブルセクタのスペアセクタから対応情報を読み出し、上記スペアセクタにアクセスする。テーブルセクタのスペアセクタの制御エリア（ＣＡ）には、代替したテーブルセクタのテーブルセクタ番号が格納されており、スペアセクタ領域の末尾から検索することで、テーブルセクタのスペアセクタを特定することができる。
【０００８】
【特許文献１】特開２０００−２２２２９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、この方法でデータを格納すると、本データを読み出し、不良ブロックと判断してから対応関係を示すテーブルを読み出し、そこから予備データを読み出すことによって正規のデータを取得することになってしまう。つまり、本データに不良ブロックが生じている場合、本データを読み出す時間（＝時間Ａ）と、本データを不良ブロックと判断し、対応テーブルを読み出す時間（＝時間Ｂ）と、予備データを読み出す時間（＝時間Ｃ）とを加算した時間が必要になってしまう。
【００１０】
上記のうち、時間Ａ及び時間Ｃはデータ読み出しに必要最低限な時間であるが、時間Ｂに関しては読み出しの際に発生するビジー時間によってアクセス時間に大きく影響が出てしまう。更に、データ量としても、必要なデータ（本データ及び予備データ）以外にテーブルを格納する分が必要となるため記録領域の実データ領域を余分に消費してしまうという問題点がある。
【００１１】
本発明は、このような従来の実情に鑑みて提案されたものであり、本データとそれが不良だった場合に代わりに読み出す予備データとの対応を示すテーブルを不要とすることでデータにアクセスする時間を短縮化しかつデータ容量を低く抑えることができるメモリ装置、メモリ制御方法及びメモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した目的を達成するために、本発明に係るメモリ装置は、本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、半導体メモリに書き込むよう制御する制御手段を有し、上記制御手段は、アクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御することを特徴とする。
【００１３】
本発明においては、本データと共にその予備データを書き込んでおき、本データに訂正不能なエラーが生じた場合に代わりに予備データを読み出すことで、重要度が高いデータを保護したり、メモリ自体の信頼性を維持するためのメモリ制御装置において、本データの予備データを予め決められた所定の規則に従って書き込んでおくことにより、予備データと本データとの対応関係の情報が不要となると共に、予備データがどこに書き込まれているかの情報を読み込んで予備データのデータ位置を認識するために必要な時間を不要とすることでデータのアクセス時間を高速化することができる。
【００１４】
また、上記所定の規則は、予備データをその本データと物理アドレスが隣接する領域に配置するものとすることができ、本データに対して物理アドレスが隣接した領域にその予備データを配置することによりアクセス速度が更に向上する。
【００１５】
更に、上記制御手段は、アクセスした本データに訂正不能なエラーが生じている場合に、当該本データの予備データを使用し、本データ及びその予備データからなるデータセットを上記所定の規則を満たす領域に移動させることができ、本データに不良が発生した場合は、再び本データとその予備データとのデータセットを所定の規則を満たすように配置しておけば、たとえ、新たに用意した本データに再び訂正不能なエラーが生じたとしても予備データが準備されているため、データを読み出すことができる。
【００１６】
更にまた、上記半導体メモリは、ブロック単位でデータが消去され、該ブロック単位より小さいデータサイズのページ単位でデータが書き込まれるものであり、更に、予備データのブロックは、その本データのブロックと同一のブロックインデックスを有し、予備データのページは、その本データのページと同一のページインデックスを有することができ、上記本データ及びその予備データは、本データ及び予備データの対応するページは同一のブロックインデックス・ページインデックスとしておくことにより、予備データを読み込みにいった際に、ページインデックスを確認することで、本データの予備データであることを確認することができる。
【００１７】
また、上記制御手段は、本データのブロックを構成するページを所定の順序で読み出し、その際に訂正不能なエラーが生じている不良ページを検出した場合、当該本データのブロックに対応する予備データのブロックにおける上記不良ページに対応する予備データのページから予備データを読み出し、その最終ページまで予備データのブロックを読み出すことができ、ブロックに不良が発生した場合であっても、予備データブロックを新たに読み込まず、不良が検出されたページから予備データを読み出すことでデータの重複読み出しをなくしてアクセス速度を向上させることができる。
【００１８】
本発明に係るメモリ制御方法は、本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、半導体メモリに書き込むよう制御する制御工程を有し、上記制御工程では、アクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御することを特徴とする。
【００１９】
本発明に係るメモリ制御装置は、本データと、当該本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データとからなるデータセットを、本データに対するその予備データの配置を定めた所定の規則に従って、半導体メモリに書き込むよう制御する制御手段を有し、上記制御手段は、上記半導体メモリにアクセスした本データに訂正不能なエラーが生じている場合に、上記所定の規則に従って当該本データの予備データを読み出すよう制御することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、例えば信頼性を高く保証しなければならない重要度が高いデータを格納する場合にその重要度が高いデータを保証するためや、メモリ自体の信頼性があまり高くない場合に格納されるデータを保証するなどのために、本データに訂正不能なエラーが生じた場合に代わりに読み出す予備データを本データ以外に準備しておく。このとき、本データに対するその予備データの配置を定めた所定の規則に従って本データ及びその予備データを配置することにより、本データに訂正不能なエラーが生じた場合に、所定の規則に従って不良が生じた本データの予備データを読み出すことができ、本データと予備データとの対応関係を示すテーブルを不要とすると共に、テーブルから対応関係を読み出して予備データを探す時間が不要となり、エラーが生じた際のデータアクセス速度を向上すると共にデータ領域を有効に活用することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を適用した具体的な実施の形態について、添付の図面を参照して説明する。この実施の形態は、本発明をフラッシュメモリ及びその制御装置からなる例えばメモリスティック（登録商標）などのメモリ装置に適用したものである。本実施の形態におけるフラッシュメモリは、本データが格納された本データブロックにアクセスして本データを読み出した際に訂正することができない不良が生じている場合に、代わりに読み出す予備データを本データと共に記録しておき、本データに不良が発生した場合に予備データが格納された予備データブロックにアクセスしてデータを読み出すものである。その際、本データと、その不良ブロック対策用の予備データとを所定の規則に従って書き込むことにより、本データと予備データとの対応関係を記述したテーブルからその対応情報を読み出して予備データブロックを探す時間を不要とすることができ、不良ブロックが生じた際のデータへのアクセス速度を高速化することができるものである。また、メモリにおいては、従来のように本データと予備データとの対応関係を示すテーブルを不要とすることでその実データの容量を大きくすることができる。
【００２２】
ここで、所定の規則とは、本データに対する予備データの配置関係を予め定めたものとすることができ、例えば、本データと物理ブロックアドレスが連続するブロックに予備データを書き込むことができる。
【００２３】
先ず、フラッシュメモリにおけるデータ構成について説明する。フラッシュメモリは、データの消去サイズをブロックといい、読み出し又は書込みサイズ（アクセスサイズ）をページという。図１は、フラッシュメモリにおけるページのデータ構成を示す図である。図１に示すように、ページ１は、データを格納するデータ部１１と、冗長部１２とに分けられる。データ部１１のサイズは例えば５１２Ｂｙｔｅであり、本データが格納される。冗長部１２のサイズは例えば１６Ｂｙｔｅであり、データ部ＥＣＣ及び冗長部ＥＣＣなどが格納される。データ部ＥＣＣは、データ部１１の本データの誤り訂正符号に用いられるもので、冗長部ＥＣＣは、データ部ＥＣＣの誤り訂正に用いられる冗長部ＥＣＣが格納されている。
【００２４】
また、冗長部１２にはデータ部ＥＣＣ及び冗長部ＥＣＣが格納される他に、リザーブ（Reserve）として数Ｂｙｔｅ分の管理データを書き込むスペースを有する。冗長部１２のサイズを上述の１６Ｋｂｙｔｅとすると、例えば、８ｋｂｙｔｅのデータ部ＥＣＣと、４ｋｂｙｔｅのリザーブ（Reserve）と、４ｋｂｙｔｅの冗長部ＥＣＣとすることができる。８ｋｂｙｔｅのデータ部ＥＣＣにより４ｋｂｙｔｅの誤りを訂正することができる。そして、例えば３２ページで、データ消去単位である１ブロックを構成する。
【００２５】
次に、データの書き込み方法について説明する。本実施の形態においては、本データに訂正できない誤りが生じている場合に代わりに読み出す予備データを本データと共に書き込む。本データ及びその予備データは、所定の規則に従って書き込まれる。この所定の規則とは、上述したように、本データに対する予備データの配置位置を定めた規則であり、本実施の形態においては、予備データを本データが格納されたブロックに物理的に隣接したブロックに格納する規則とする。したがって、図２に示すようにブロック単位で物理アドレスが隣接する領域に配置される。
【００２６】
メモリ装置は、メモリからデータを読み込む際、本データに訂正不能なエラーが発生している場合に代わりに読み出す予備データへのアクセスを制御可能な制御装置を備える。すなわち、本実施の形態におけるメモリ制御装置は、本データが読み込めない場合、予め定められた所定の規則に従って予備データを読み込みにいくようなされている。
【００２７】
これにより、メモリ制御装置は、データにアクセスして読み込みに失敗した場合、常にその規則どおりに次のデータを読み込めばよく、従来のように、本データが格納されたブロックと、その予備データが格納されたブロックとの対応関係（配置関係）を示したテーブルをメモリに書き込む必要がなくなり、かつ予備データにアクセスする時間を短縮化することができる。
【００２８】
ここで、本データ及び予備データのいずれのブロックデータも、複数のページデータから構成される。そして、各ページデータのリザーブには、本データの管理データを書き込むことができる。本実施の形態においては、データを書き込む際にその管理データ部分に本データと予備データとが対応するように同一ナンバーのブロックインデックス（Ｂ.Ｉ.）及びページインデックス（Ｐ.Ｉ.）を書き込む。データ読み出しの際、このブロックインデックス（Ｂ.Ｉ.）及びページインデックス（Ｐ.Ｉ.）を比較し、一致すれば本データに対応する予備データであるということを判断することができる。
【００２９】
また、各ブロックによって書き込まれるデータのページ数は様々であり、そのブロックの最終ページにはページインデックスに0xFFを書き込むことによりその判断が可能となる。
【００３０】
予備データは、全てのデータに対して準備されるわけではなく、例えばマイクロプログラムなどのファームウェアなど、そのデータが読み出せなくなると、集積回路の動作に支障をきたしてしまうような重要度が高いデータに対して準備されるものである。または、ＡＮＤ型フラッシュメモリなどに対してはこのような予備データを準備しておけば、信頼性を保ちつつ安価なメモリ装置を提供することが可能となる。なお、本実施の形態においては、本データに対して、本データのコピーである予備データを１つ準備するものとするが、必要に応じて１以上の予備データを用意してもよい。また、ＡＮＤ型に限らず、ＮＡＮＤ型などの他のメモリにも適用できることは言うまでもない。
【００３１】
また、メモリ制御装置には、データを書き込む際に、例えばその上位の機器から予備データを準備するか否かの指示がなされるものとする。そして、上述のような規則であれば、予備データを本データと共に書き込む際は、図２に示すように物理ブロックアドレスが連続するように書き込むものとする。また、予備データを準備しないデータは例えば順次空領域に書き込みを行うなどすればよい。
【００３２】
更に、本実施の形態においては、上述のように本データ及びその予備データの各ページのデータ冗長部１２にインデックス番号が付されており、このインデックスが記録されていることにより、本データが予備データを有することを判断することができる。このインデックス番号は、例えばデータの並び順に付すことができ、上述したようにインデックス番号が0xFFである場合に読み込みを終了する。ここで、予備データを有しないデータの場合、冗長部１２に0xFFを書き込むことにより、メモリ制御装置は、読み込んだページに対応する予備データが準備されているか否かを容易に判断することができる。
【００３３】
次に、データの読み出し方法について説明する。基本的には、各ブロックのページを順次読み出していき、不良データが見つかった場合に予備データを読み込むものである。まず、図１に示すページの読み出し方法について説明する。図３は、ページの読み出し方法を示すフローチャートである。
【００３４】
図３に示すように、データ部１１の本データ及び冗長部１２のデータ部ＥＣＣを読み出し、本データをデータ部ＥＣＣにてエラーチェックする（ステップＳ１）。ここで、本データにエラーがない場合、又は本データがデータ部ＥＣＣにて訂正可能であれば（ステップＳ２）、本データのデータを訂正し（ステップＳ３）、ページの読み出しが完了する。
【００３５】
一方、ステップＳ２にて訂正不能であれば、データ部ＥＣＣのデータを冗長部ＥＣＣにてエラーチェックする（ステップＳ４）。訂正がなければ（ステップＳ５：Ｎｏ）、データ部ＥＣＣはエラーがないことになり、したがって本データが訂正不能であることになり、読み出し失敗となる。また、エラーはあるものの（ステップＳ：Ｙｅｓ）、そのエラーが訂正可能である場合には（ステップＳ６）、データ部ＥＣＣのデータを訂正し、データ部１１の本データのエラーを訂正し（ステップＳ７）、処理を終了する。訂正不能な場合は、本データは読み出すことができず処理を終了する。
【００３６】
このようにしてページ毎にデータが読み出されるが、本データ又はデータ部ＥＣＣの訂正が不能な場合は読み出し失敗となる。この場合、物理ブロックアドレスが隣接して配される予備データを読み出すことになる。
【００３７】
図４は、データの配置例及びその読み出し順序を示す図、図５は、データ読み出し方法を示すフローチャートである。例えばファームウェアなどのデータを読み込むことを想定すると、データ量はひとつのブロック容量で格納できることは低く、数ブロックにまたがって格納することになる。その場合、図５に示すように、ブロックインデックスの上限を設定し（ステップＳ１１）、その上限までブロックインデックス順に連続してデータを読み込んでいく（ステップＳ１２）。
【００３８】
その時、上述したようにＥＣＣコードによって誤り訂正を行えた場合、すなわち、読み出したデータに誤りがないか、又は誤りが存在してもデータ部ＥＣＣで誤り訂正が可能か若しくは冗長部ＥＣＣで誤り訂正が可能であった場合、正規のデータを読み込めたことになり、１ブロック全てのデータが読み込みできた場合（ステップＳ１３：Ｙｅｓ）、データ読み出しが完了となり（ステップＳ１４）、次のブロックに格納されている本データをブロックインデックス順に読み込んでいく。そして、ブロックインデックスが上限値になるまで物理アドレスをインクリメントしていき（ステップＳ１８）、ブロックインデックスの上限値まで読み込みが完了したとき（ステップＳ１５）、読み込みを終了する。
【００３９】
一方、不良ブロックを検出した場合（ステップＳ１３：Ｎｏ）、上述したように、予め決められた所定の規則に従って予備データの読み込みをする。本実施の形態においては、本データに物理的に隣接した領域に予備データが記録されているため、メモリ制御装置は、本データブロックから物理ブロックアドレスをインクリメントすることによって隣接して配置されている予備データブロックにアクセスすることができる。このことにより予備データを読み込むことができる。その際、管理データ部分にあるブロックインデックスを読み込み、不良ブロックであった本データとブロックインデックスが同じであるかを確認する。同じであれば読み込んだ予備データが、ステップＳ１３にて読み込めなかった本データのブロック及びページと同じであると認識することができる。
【００４０】
図６は、本データを格納した本データブロック２１とその予備データを格納した予備データブロック２２とを示す図である。この図６においては、本データのページインデックスが0x01〜0x09のページである場合であって、ページインデックス0x01から読み出しを開始し、ページインデックス0x05にて誤り訂正不能なデータが発見された場合を示している。ステップＳ１６にてブロックインデックスをインクリメントして予備データブロックにアクセスした場合、本データブロック２１においては、不良が存在したページ２１５の直前のページ２１４までは読み込みが完了している。したがって予備データブロック２２の最初のページ２２１からはデータを読み込む必要がない。ここで、読み込み済みのデータを再度読み込むとアクセス時間の増大につながりアクセス速度が遅くなってしまうため、図６に示すように、予備データブロック２２では、本データブロック２１での不良がみつかったページ２１５のページインデックス（Ｐ.Ｉ.）0x05と同じナンバーのページインデックス（Ｐ.Ｉ.）0x05のページ２２５から読み出すようにすれば、読み込みの重複を防止し、不良ブロック（不良ページ）検出の際におけるアクセス時間を高速化することができる。
【００４１】
すなわち、図３に示したように、本データ又はデータ部ＥＣＣに訂正不能なエラーが発生している場合、データを読み出すことができない。例えば、ページインデックス（Ｐ.Ｉ.）0x05に対応するデータにアクセスして読み出しが失敗と判断された場合、物理アドレスをインクリメントし、予備データブロック２２を読み込みに行く。本実施の形態におけるブロックデータの本データに対応する予備データには同一のブロックインデックスが付され、ページデータの本データに対応する予備データには同一のページインデックスが付されている。従ってブロックインデックが一致しなかった場合、それは本データに対応する予備データではないと判断しその読み込みを行なわない。例えば、フラッシュメモリは生産後の時点で不良ブロックが発生している可能性もあり、それに対してはブロックインデックスに0xFFを書き込むことによりそのブロックをスキップすることとする。
【００４２】
次に、ブロックインデックスが一致したら、ページインデックスを読み出し、読み込みに失敗したページインデックス（Ｐ.Ｉ.）0x05と同一か否かを判断する。同一であれば、それは読み込みに失敗した本データに対応する予備データであると認識することができ、そのページから順次予備データを読み出していき、予備データブロックの読み込みを完了する。
【００４３】
このように、予備データは本データと隣接するように書き込みを行ないブロックインデックスには同じナンバーを書き込んでいけば、１つのデータに対して予備データを任意の量だけ格納することができる。また、不良ページが発生した場合はこのように予備データブロックのデータを読み出すが、次のブロックデータを読み出す場合は、再び本データのブロックを読み出すことができる。
【００４４】
なお、データの書込みの際、どのデータがどのアドレス（ブロック）に書き込まれたかを示すテーブルが作成され、上位の機器などから読み出し指示があった場合に当該テーブルを参照して本データを読み出す点は従来と同様である。また、メモリ制御装置は、本データに不良ページが検出された場合、自動的に隣接ブロックの対応ページを読み出すようしておけばよい。そして、メモリ制御装置は、予備データブロックを読みにいった場合には、テーブルを参照して不良ページが検出された本データブロックの次の本データブロックのアドレスを参照してデータを読み出すことができる。
【００４５】
なお、予備データブロックを一旦読み出した場合、次からは予備データブロックを上述の本データブロックの代わりとして読み出すこととし、予備データブロックに不良ページが発生した場合に逆にその不良ページに対応する本データのページにアクセスするようにしてもよい。その場合、例えばリザーブ領域に本データであるか予備データであるかを示すフラグなどを書き込んでおくなどして現在読み込み中のデータが予備データであるか本データであるかを認識すればよい。
【００４６】
本実施の形態においては、高い信頼性を保証しなければならないデータの格納方法として本データ以外に予備のデータを置くという概念において、物理アドレスが隣接する領域に予備データを配置することで、この配置関係に従って予備データを読み込むことができるため、本データと予備データとの対応関係を別に記録しておく必要がなく、また不良ブロックが発生した際の予備データへの高速なアクセスが可能となる。
【００４７】
このように、通常の書き込み及び読み込みと、ローダーモードの書き込み及び読み込みとを使い分けることによって通常のデータ及び信頼性を高くもたせたデータの２通りの格納が可能となる。また、ブロックインデックスのナンバーを比較することにより予備データを任意に設定が可能であるためより高い信頼性の実現が可能である。
【００４８】
また、本データに訂正不能なエラーが生じた場合、予備データのみとなり、これが本データの代わりになるため、予備データがなくなることになる。その場合には、本データの代わりとして使用する本来予備データであったデータを、本データ及びその予備データからなるデータセットとして、他の領域に移動させておく。なお、本実施の形態においては、予備データの物理ブロックアドレスが隣接する領域が空ブロックであればそこに再度データをコピーしておけばよいが、そうでない場合は所定の規則を満たす空ブロック、上述の例であれば連続した２つの空ブロックを検索してそこに移動させることとなる。
【００４９】
これにより、次回以降は、再び本データを読み出すことができ、新たに用意した本データにたとえエラーが発生したとしても、用意した予備データを読み出すことができる。すなわち、本データにエラーが発生して予備データのみになった場合には、その予備データのデータから、本データ及びその予備データのデータセットを新たに準備する。そして、このデータセットを本データに対する予備データの配置関係を定める規定を満たすことができる領域に書き移すことにより、再びデータを保証することができる。また、最初に使用していた予備データが格納されていたブロックはデータを消去して他の用途に使用するなどすればよい。
【００５０】
更に、ブロックインデックス・ページインデックスを実データと共に書き込んでおくことにより、本実施の形態のように、書込み・読み出し単位（ページ）と消去単位（ブロック）とが異なる場合に、データサイズが大きい方のブロックデータの読み込みに失敗しても、予備データのブロックデータのページを最初から再度読み出すのではなく、不良が発生したページに対応する予備データのページからデータを読み出すことにより、更にアクセス時間の増大を防止することができる。
【００５１】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、本実施の形態においては、物理アドレスが隣接する領域に本データとその予備データとを書き込むものとしているため、ブロックインデックス・ページインデックスをインクリメントするのみで予備データにアクセスすることができるが、所定の規則であれば、物理アドレスが隣接する領域に限らない。すなわち、所定の規則に従った領域に予備データを書き込むようにすれば、従来のように本データと予備データとの対応テーブルを用いることなく予備データにアクセスすることができる。また、フラッシュメモリとしては、ＡＮＤ型フラッシュメモリに限らずＮＡＮＤ型などのフラッシュメモリにも適用することができる。
【図面の簡単な説明】
【００５２】
【図１】フラッシュメモリにおけるページのデータ構成を示す図である。
【図２】本発明の実施の形態におけるメモリのデータ配置を示す模式図である。
【図３】ページの読み出し方法を示すフローチャートである。
【図４】本発明の実施の形態におけるデータの配置例及びその読み出し順序を示す図である。
【図５】本発明の実施の形態におけるデータ読み出し方法を示すフローチャートである。
【図６】本データブロックのページに不良ページが存在した場合に予備データブロックのページを読み出す方法を説明する模式図である。
【符号の説明】
【００５３】
１  ページ、  １１  データ部、  １２  冗長部、  ２１  本データブロック、  ２２  予備データブロック
【図１】
2005242903.tif 000003
【図２】
2005242903.tif 000004
【図３】
2005242903.tif 000005
【図４】
2005242903.tif 000006
【図５】
2005242903.tif 000007
【図６】
2005242903.tif 000008