(57)【要約】【課題】  フラッシュメモリの使用効率を向上する外部記憶装置を提供することを目的とする。【解決手段】  複数ページから構成されるブロックを単位として消去が行なわれ、該ページをデータの読み書きの最小単位とするフラッシュメモリを用いた外部記憶装置であって、前記フラッシュメモリは、前記ページ毎に、所定のビット数のエラー訂正を行なう符号を格納する冗長部領域と、前記フラッシュメモリ内の所定箇所に、予備的なビット代替領域とを備え、前記ページ内に存在し、該ページ単位のエラー訂正では対応できない欠損ビットに対して、前記予備的なビット代替領域のアドレスを割り当てるビット管理部と、前記割り当てられたアドレスに基づき、前記欠損ビットと前記ビット代替領域内のビットとを置き換えて、前記エラー訂正では対応できない欠損ビットを含む前記ブロックに前記データの読み書きを行なうブロック制御部とを備えた外部記憶装置とする。【選択図】  図３
2005196658.tif 000002
【特許請求の範囲】
【請求項１】
複数ページから構成されるブロックを単位として消去が行なわれ、該ページをデータの読み書きの最小単位とするフラッシュメモリを用いた外部記憶装置であって、
前記フラッシュメモリは、
前記ページ毎に、所定のビット数のエラー訂正を行なう符号を格納する冗長部領域と、
前記フラッシュメモリ内の所定箇所に、予備的なビット代替領域とを備え、
前記ページ内に存在し、該ページ単位のエラー訂正では対応できない欠損ビットに対して、前記予備的なビット代替領域のアドレスを割り当てるビット管理部と、
前記割り当てられたアドレスに基づき、前記欠損ビットと前記ビット代替領域内のビットとを置き換えて、前記エラー訂正では対応できない欠損ビットを含む前記ブロックに前記データの読み書きを行なうブロック制御部と
を備えた外部記憶装置。
【請求項２】
請求項１に記載の外部記憶装置であって、
前記ビット代替領域を、前記ブロック毎の所定のページに設け、
前記ビット管理部は、前記エラー訂正では対応できない欠損ビットに対して、同一ブロック内に存在する前記ビット代替領域内のビットのアドレスを割り当てる外部記憶装置。
【請求項３】
請求項１または２に記載の外部記憶装置であって、
前記ビット管理部は、前記フラッシュメモリの所定箇所に、前記ビット単位の置き換えに必要なアドレスを記憶する記憶手段を備えた外部記憶装置。
【請求項４】
請求項１ないし３のいずれかに記載の外部記憶装置であって、
前記フラッシュメモリは、ＮＡＮＤ型構造のフラッシュメモリである外部記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを搭載した外部記憶装置に関するものである。
【背景技術】
【０００２】
従来から、不揮発性の半導体メモリであるフラッシュメモリを搭載した外部記憶装置がある。フラッシュメモリは、データを記憶する複数のブロックから構成され、その構造上、データの消去はブロック単位で行なわれ、一つのブロックの消去回数に制限がある。フラッシュメモリを搭載した外部記憶装置では、こうしたブロック毎の情報を管理して、例えば、消去回数をブロックの使用可否の判断基準とし、基準を超えるブロックは使用せず、代替ブロックにデータを書き込んで対応している。
【０００３】
例えば、特許文献１には、セクタ（ブロック）内で検出された欠陥セルの発生数が所定の範囲を超える場合に、欠陥セクタの代替である冗長セクタへ、データの置き換えを行なう代替処理の技術が開示されている。こうした欠損セルを含むブロックは、予め用意された代替ブロックと置き換えられ、システム側で管理される。つまり、システムは、使用不可として管理されたブロックへ保存しようとするデータを代替ブロックに保存することで、円滑なデータの保存を実行している。
【０００４】
【特許文献１】特許第３２２６０４２号公報
【０００５】
こうしたシステムのフラッシュメモリに発生する欠陥は、使用段階のものに限らず、例えば、製造過程で発生するものも存在する。通常、フラッシュメモリの製造業者は、製造出荷段階で発生した欠損のあるブロック（不良ブロック）であることを示す情報をフラッシュメモリの一領域に記憶して出荷している。こうしたブロックの管理情報を記憶したフラッシュメモリを組み込むシステムでは、システム側は、使用前にブロックの良否の情報を確認し、不良ブロックとされたブロックに関しては、以後、アクセスしないようにシステムを構成している。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、こうした不良ブロックの取り扱いでは、フラッシュメモリ全体としての使用効率が悪化するという問題があった。不良ブロックの中には、ブロック内の一部のビットのみが破損している場合もある。例えば、あるブロック内に数ビットの欠損ビットが存在する場合であっても、そのブロック全体を使用不可として扱っていた。
【０００７】
本発明は、こうした問題の少なくとも一部を解決し、メモリの使用効率を向上する外部記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の外部記憶装置は、上記課題の少なくとも一部を解決するため、以下の手法を採った。すなわち、複数ページから構成されるブロックを単位として消去が行なわれ、該ページをデータの読み書きの最小単位とするフラッシュメモリを用いた外部記憶装置であって、前記フラッシュメモリは、前記ページ毎に、所定のビット数のエラー訂正を行なう符号を格納する冗長部領域と、前記フラッシュメモリ内の所定箇所に、予備的なビット代替領域とを備え、前記ページ内に存在し、該ページ単位のエラー訂正では対応できない欠損ビットに対して、前記予備的なビット代替領域のアドレスを割り当てるビット管理部と、前記割り当てられたアドレスに基づき、前記欠損ビットと前記ビット代替領域内のビットとを置き換えて、前記エラー訂正では対応できない欠損ビットを含む前記ブロックに前記データの読み書きを行なうブロック制御部とを備えたことを要旨としている。
【０００９】
本発明の外部記憶装置によれば、冗長部領域に格納した符号を用いたエラー訂正では、訂正できない欠損ビットに対して、ビット単位の代替をし、エラー訂正可能な欠損ビットは、そのまま使用する。したがって、欠損ビットを含むブロックを有効に使用することができ、フラッシュメモリを効率的に使用するシステムを構築することができる。
【００１０】
上記の構成を有する外部記憶装置において、ビット代替領域を、前記ブロック毎の所定のページに設け、前記ビット管理部は、前記エラー訂正では対応できない欠損ビットに対して、同一ブロック内に存在する前記ビット代替領域内のビットのアドレスを割り当てるものとしても良い。
【００１１】
かかる外部記憶装置によれば、一のブロック内に存在する欠損ビットをビット単位で代替し、その代替領域を同一のブロック内に設ける。したがって、一のブロックへのアクセスで、連続したデータの読み書きを行なうことができる。
【００１２】
上記の構成を有する外部記憶装置のビット管理部は、前記フラッシュメモリの所定箇所に、前記ビット単位の置き換えに必要なアドレスを記憶する記憶手段を備えるものとしても良い。かかる外部記憶装置によれば、ビット単位の代替に必要な情報をフラッシュメモリ内の所定箇所に記憶する。したがって、情報を記憶する別個のメモリを設ける必要がない。また、フラッシュメモリであるため、情報を不揮発的に記憶することができる。特に、一のブロック内の欠損ビットに対して、ビット代替領域とアドレス等の情報とを同一ブロック内に記憶することで、処理を容易にすることができる。
【００１３】
上記の構成を有する外部記憶装置のフラッシュメモリは、ＮＡＮＤ型構造のフラッシュメモリであるものとしても良い。一般に、高集積化が可能であるＮＡＮＤ型構造のフラッシュメモリでは、ビット線コンタクトを共有とする構造上の理由から、１つの欠損が広い範囲に亘って発生する可能性がある。こうしたＮＡＮＤ型構造のフラッシュメモリに本発明を適用することで、特に使用効率を向上することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の外部記憶装置の一実施例について説明する。図１は、本発明の一実施例としての外部記憶装置１０の構成を示す全体ブロック図である。図示するように、この外部記憶装置１０は、外部機器とデータをやり取りするホストＩ／Ｆ２０，ＣＰＵ３０，プログラムメモリ４０，ＲＡＭ５０，外部からのデータを不揮発的に保存するフラッシュメモリ６０，フラッシュメモリ６０へのデータの読み書きを制御するフラッシュコントローラ７０等から構成されている。
【００１５】
ホストＩ／Ｆ２０は、ユニバーサルシリアルバス（ＵＳＢ）規格に準拠し、外部機器（例えば、パーソナルコンピュータやデジタルスチルカメラ等）との接続が可能である。外部機器から外部記憶装置１０へのデータの書込みや読み出し等のアクセスは、このホストＩ／Ｆ２０を介して行なわれる。なお、ホストＩ／Ｆ２０は、ＵＳＢに限らず、ＩＥＥＥ１３９３，ＡＴＡ等の規格に準拠するものとしても良い。
【００１６】
ＣＰＵ３０は、電源投入時にプログラムメモリ４０から実行プログラムを読み込み、外部記憶装置１０全体の動作環境を整える。ＣＰＵ３０は、例えば、ホストＩ／Ｆ２０を介して、外部機器からデータの書換え要求を受けた場合には、ＲＡＭ５０を作業領域として、一次的にフラッシュメモリ６０内のデータを読み込み、データの修正を行ない、再びフラッシュメモリ６０にデータを書き込む。具体的には、ＣＰＵ３０は、フラッシュメモリ６０内のデータの読み出し指示、修正データの書込み指示等をフラッシュコントローラ７０へ出力している。
【００１７】
フラッシュコントローラ７０は、ＣＰＵ３０の指令に従い、フラッシュメモリ６０からのデータの読み出し、データの書込み、データの消去などのフラッシュメモリ６０内のデータを管理、制御している。具体的には、フラッシュメモリ６０の寿命を低下させる特定領域への頻繁なデータの書換えを回避するため、データの書き込み可能な領域を演算し、フラッシュメモリ６０のデータ書込み領域を平均的に使用する制御を行なっている。
【００１８】
フラッシュメモリ６０は、データを書き込む領域である複数のブロックから構成され、各ブロックにデータを記憶するメモリである。図２は、本実施例で採用するフラッシュメモリ６０の構造である。本実施例では、２５６Ｍｂｉｔの容量を有するＮＡＮＤ型のフラッシュメモリを使用している。図示するように、このフラッシュメモリ６０は、フラッシュコントローラ７０からの指令を受けてデータを一時的に格納するレジスタＲと、データの記憶領域である複数の物理的なブロックＢとからなる。この１つのブロックＢは、３２ページＰの領域に分割されている。
【００１９】
このフラッシュメモリ６０は、ブロック単位でデータの消去が行なわれ、ページ単位でデータの読み出し、書込みが行なわれる。読み出し、書き込みの最小単位である１ページは、所定容量のデータ書込み領域８０と、エラー訂正符号（ＥＣＣ符号）やブロックの使用状態などの管理情報を格納する冗長部領域８５とから構成されている。また、最終ページの前ページ目（３１ページ）は、後述する欠損ビットの代替領域であるビット代替領域９０として使用される。このビット代替領域９０は、同一ブロック内のどのページに設けても良い。
【００２０】
ＥＣＣ（Error  Correcting  Code）符号は、ビット化けなどのエラーを訂正するために本来のデータとは別に付加される冗長コードである。フラッシュコントローラ７０は、所定のブロックＢに書き込まれるデータに対して、ＥＣＣ符号を生成する。つまり、フラッシュコントローラ７０は、データの書込み段階で、ＥＣＣ符号をデータに付加して、フラッシュメモリ６０に格納している。
【００２１】
こうして生成されたＥＣＣ符号は、例えば、外部機器であるパーソナルコンピュータから外部記憶装置１０に対して、所定のデータの読み出しを指令された場合に利用される。ホストＩ／Ｆ２０を介して読み出し指令を受信したＣＰＵ３０は、要求されるデータの出力指令をフラッシュコントローラ７０に送信する。指令を受けたフラッシュコントローラ７０は、該当するブロックから要求されるデータを、ＥＣＣ符号と共に読み出し、ＥＣＣ符号に基づいてデータのエラーチェックを行なう。エラーチェックの結果、エラーが無い場合には、そのままパーソナルコンピュータにデータを送信する。他方、訂正可能な範囲のエラーがある場合には、該当箇所のビットを反転し、訂正した適切なデータをパーソナルコンピュータへ出力している。
【００２２】
なお、本実施例のＥＣＣ機能は、１ページＰあたり２ビットのエラー訂正が可能である。この２ビットのエラー訂正は、リードソロモン符号を用いて実現することができる。
【００２３】
ビット代替領域９０は、製造出荷時に予め何らかの欠損を含んでいる不良ブロックに関して、ビット単位での欠損のチェックを行ない、所定数量の欠損ビットを検出した場合に、その欠損ビットに書き込まれるデータを同じブロック内の別の領域に代替するための領域である。本実施例のフラッシュメモリ６０は、不良ブロックを精査して、所定数以上の欠損ビットが存在する場合には、ビット単位の代替処理を実行し、使用可能なメモリ領域を拡張している。
【００２４】
なお、このビット単位の代替に必要な情報、例えば、代替するビットのアドレス、ビット単位の代替を実行するページ番号などは、ブロック毎の最終ページに記録される。この情報は、ビット代替領域９０と同一ページ内に設けるものとしても良い。
【００２５】
この不良ブロックにおけるビット単位の代替処理について説明する。図３は、不良ブロックの使用可否の判断およびビット単位での代替処理を示すフローチャートである。この処理は、外部記憶装置１０の製造段階で外部機器により実行される。
【００２６】
まず、外部機器はフラッシュメモリ６０の全てのブロックについて、製造出荷段階で不良ブロックとされているか否かの判断を行ない、不良ブロック数ｎを検出する（ステップＳ１００）。本実施例のフラッシュメモリ６０は、各ブロックの先頭ページに対し５１７バイト目にブロックの使用可否を示すデータが予め入力されている。このデータを読むことで、各ブロックが不良ブロックであるか否かの判断をしている。
【００２７】
外部機器は、ブロックの物理的な構成順で１番目のブロックから順に、不良ブロックの検出を行い、最初に検出された不良ブロックを１番目の不良ブロック（Ｎｏ＝１）として特定し、最終ブロックまで順次、不良ブロックの検出を行なう。このステップで、不良ブロックの全数ｎと各不良ブロック番号と物理的なブロック番号との対応関係を検出する。
【００２８】
続いて、ステップＳ１００で、特定された１番目の不良ブロックに対応する物理的ブロックを選定し（ステップＳ１１０）、このブロックに対して、リードチェックを実行する（ステップＳ１２０）。このリードチェックでは、１番目の不良ブロックのページ毎に所定のデータを書き込み、書き込んだデータと読み出したデータとを比較することで、ビット単位のエラーの有無を検出する。例えば、所定のデータとして「１０１０１０・・・」のチェックデータを１番目の不良ブロックの１ページ目に書込み、これを読み出し、両者を比較している。このチェックデータの読み書きは、１つのアドレスに対応して値「０」と値「１」とのデータが書き込まれるように、２回行なわれる。なお、データの読込みには、１回の先頭アドレスの指定で、連続読み出しの実行が可能であるバーストモードを利用している。
【００２９】
ステップＳ１２０で、読み出したデータがチェックデータと同一である場合には、「エラー無し」と判断して、リードチェックしたページは、最終ページであるか否かを判断する（ステップＳ１７０）。ステップＳ１７０で、最終ページまでリードチェックを行なっていないと判断した場合には、ステップＳ１２０へ戻り、次のページに対して、リードチェックを行なう。他方、最終ページのリードチェックを行なったと判断した場合、つまり、１番目も不良ブロックの全ページについてリードチェックを実行したと判断した場合には、リードチェックを行なった不良ブロックが最後のものであるか否かを判断する処理へ移行する（ステップＳ１８０）。
【００３０】
ステップＳ１８０で、リードチェックした不良ブロックは最後（ｎ番目）のものであり、他にチェックしていない不良ブロックが存在しないと判断した場合には、この処理を終了する。他方、ステップＳ１８０で、リードチェックした不良ブロックが最後のものではないと判断した場合には、Ｎｏ＝Ｎｏ+１とおいて（ステップＳ１９０）、ステップＳ１２０に戻り、次の不良ブロックに関して、リードチェックを行なう。
【００３１】
ステップＳ１２０で、読み出したデータがチェックデータと異なる場合には、「エラー有り」と判断して、欠損ビットの場所（アドレス）、数量を特定する（ステップＳ１３０）。例えば、先のチェックデータを用いた場合、読み出したデータが「１０００１０・・・」であれば、３ビット目（１ページ）に１ビットエラーが発生したと判断する。
【００３２】
続いて、検出した欠損ビットの数がＥＣＣ機能の訂正可能ビット数範囲内であるか否かを判断する（ステップＳ１４０）。本実施例では、２ビットまでのエラー訂正が可能であるため、検出したビットエラーが１ビット以下であるか否かを基準としている。これは、フラッシュメモリ６０の使用により後発的にビットエラーが生じても、１ビットまでのエラーであればＥＣＣ機能で対応することができるからである。
【００３３】
ステップＳ１４０で、欠損ビットが１ビット以下であると判断した場合には、その欠損ビットを含むページを使用可能ページと認定し（ステップＳ１５０）、最終ページまでリードチェックを実行したか否かを判断する（ステップＳ１７０）。最終ページでない場合には、次ページについて、ステップＳ１２０からの処理を繰り返し、最終ページである場合には、ステップＳ１８０の処理以降を繰り返す。
【００３４】
他方、ステップＳ１４０で、検出したビットエラーが１ビットより多いと判断した場合には、ＥＣＣ機能の訂正では対応できないため、欠損ビットをビット代替領域９０と置き換える欠損ビットの代替処理を行なう（ステップＳ１６０）。具体的には、欠損ビットに対して、同一ブロック内に設けたビット代替領域９０内のビットアドレス（代替アドレス）を割り当て、欠損ビット箇所のページ番号，アドレスと、ビット代替領域９０の代替アドレスとの対応テーブルを生成し、このテーブルをフラッシュメモリ６０の最終ページに書き込む処理を行なっている。
【００３５】
ステップＳ１６０での欠損ビットの代替アドレス等を記憶することで、リードチェックで欠損ビットの存在したページは使用可能であると判断し、最終ページまでリードチェックを実行したか否かを判断する（ステップＳ１７０）。最終ページでない場合には、次ページについて、ステップＳ１２０からの処理を繰り返し、最終ページである場合には、ステップＳ１８０の処理以降を繰り返す。ステップＳ１８０で、リードチェックした不良ブロックが、最後のものでない場合には、次の不良ブロックについて、ステップＳ１２０からの処理を繰り返し、最後のものである場合には、この一連の処理を終了する。
【００３６】
こうした処理を経て、製造出荷段階で不良ブロックと認定されていたブロックは、使用可能ブロックとして認識される。図４は、ビット単位の代替処理の実行前後のブロックの状態を示す説明図である。図４（ａ）は、製造出荷段階での不良ブロックをそのまま管理したフラッシュメモリを組み込んで製造した外部記憶装置の一例である。図示するように、ｍ番目のブロックの２ページ目に１ビットの欠損ビットを含んでおり、ｍ番目のブロックは使用不可と定義されている。同様に、ｍ＋２番目のブロックも、３ページ目に３ビットの欠損ビットを含み、使用不可とされている。
【００３７】
他方、図４（ｂ）は、ビット単位の代替処理を実行したフラッシュメモリ６０を組み込んで製造した外部記憶装置１０の一例である。図示するように、ｍ番目のブロックの２ページ目の欠損ビットは、ＥＣＣ機能によりエラー訂正可能であるため、そのまま使用できるブロックとなる。ｍ＋２番目のブロックは、３ページ目に３ビットの欠損ビットを含むため、このページはエラー訂正では対応できない。そのため、３１ページ目に欠損ビットの代替ビットを割り当てている。こうして、３ページ目の欠損ビットに書き込もうとするデータは、代替ビットに書き込むこととし、このブロックも使用できるブロックとなる。なお、ビット単位の代替に用いる代替アドレス等の情報は、最終ページに書き込まれる。
【００３８】
使用可能と認定されたブロックについての管理情報は、外部記憶装置１０の製造工程で、フラッシュメモリ６０の冗長部領域８５に書き込まれる。つまり、フラッシュメモリの製造出荷段階で不良ブロックを示す情報に替えて、または、それとは別に、全ブロックの管理情報を生成し、冗長部領域８５に書き込んでいる。このフラッシュメモリ６０を組み込んだ外部記憶装置１０では、フラッシュコントローラ７０は、ビット単位の代替アドレスを認識し、ｍ＋２番目のブロックにデータを書き込む時には、代替アドレスを読み込んで、欠損ビットのアドレスに書き込まれるデータを代替アドレスに書き込み、読込み時には、代替アドレスからデータを読み込む処理を行なう。また、ｍ番目もブロックにデータを書き込む時には、そのままデータを書込み、読込み時には、ＥＣＣ機能による訂正を実行して適性なデータを出力する。
【００３９】
この一連の処理では、製造出荷段階で欠損があるとされたブロックの不良箇所を精査し、ＥＣＣ機能の訂正可能な範囲内でのビットエラーであれば、そのまま使用可能なブロックであるとし、訂正可能な範囲外のビットエラーであれば、代替ビットを割り当てて、使用可能なブロックとする。したがって、不良ブロック内の有効なビット領域を効率的に使用することができる。さらに、ビット単位での代替を実行するため、同一ブロック内に代替領域を設けることができる。したがって、ブロック単位での代替を実行する場合に比べて、連続的な記録領域を生成し、効率的なシステムを構築することができる。
【００４０】
なお、本実施例では、代替する欠損ビットの数量に上限を設けていないが、所定数以上の欠損ビットが検出された場合には、ブロックの信頼性が低いとして、そのブロックを不良ブロックとして、以後、アクセスを禁止するようにしても良い。また、本実施例では、不良ブロックに関してのみ、チェックを行ない使用の可否を判断しているが、フラッシュメモリ６０の全ブロックについて、チェックを行なうこととしても良い。この場合、流通過程で発生した欠損も的確に把握することができる。
【００４１】
また、本実施例では、２ビットの欠損ビットはビット単位の代替をするものとしたが、例えば、２ビットの欠損ビット中、１ビットは代替し、残りの１ビットはＥＣＣ機能により訂正して使用可能なブロックとするものとしても良い。
【００４２】
なお、この一連の処理は、外部機器で実行し、フラッシュメモリ６０の使用可能なブロックを拡張した外部記憶装置を生成しているが、この処理の実行機能をフラッシュコントローラ７０に持たせるものとしても良い。この場合、電源投入時などの所定のタイミングで、空き領域であるブロックに対して、リードチェックを実行し、使用可能なブロックを認識するものとすれば良い。
【００４３】
以上、本発明の実施の形態について説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることはもちろんである。本実施例では、ＥＣＣ機能として２ビットの訂正が可能である構成としたが、ＥＣＣ機能を更に強化して、複数ビットの訂正を可能としても良い。その場合、冗長部領域を拡大して、ＥＣＣ符号を格納する構成となる。
【図面の簡単な説明】
【００４４】
【図１】本発明の第１実施例としての外部記憶装置の構成を示す全体ブロック図である。
【図２】本実施例で採用するフラッシュメモリの構造である。
【図３】本実施例のビット単位の代替処理のフローチャートである。
【図４】ビット単位の代替処理の前後の様子を示す説明図である。
【符号の説明】
【００４５】
１０...外部記憶装置
２０...ホストＩ／Ｆ
３０...ＣＰＵ
４０...プログラムメモリ
５０...ＲＡＭ
６０...フラッシュメモリ
７０...フラッシュコントローラ
８０...データ書込み領域
８５...冗長部領域
９０...ビット代替領域
【図１】
2005196658.tif 000003
【図２】
2005196658.tif 000004
【図３】
2005196658.tif 000005
【図４】
2005196658.tif 000006