(57)【要約】【課題】書込みカウンタの値又は読出しカウンタの値が閾値以上となったブロックであっても、実際には異常となっていないブロックを継続して利用することができるようにすることによりフラッシュメモリを延命させることを可能とするフラッシュメモリの延命方法を提供する。【解決手段】書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピーステップと、コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化ステップと、コピー元のブロックを予備ブロック群に追加する予備ブロック追加ステップと、を備える。【選択図】図４
2010079659.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含むフラッシュメモリの延命装置であって、
書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピー手段と、
コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化手段と、
前記コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加手段と、
を備えることを特徴とするフラッシュメモリの延命装置。
【請求項２】
前記予備ブロック追加手段は、前記予備ブロック群に含まれるブロックの数が基準数未満の時にのみ動作することを特徴とする
請求項１に記載のフラッシュメモリの延命装置。
【請求項３】
前記予備ブロック群に含まれるブロックの数が前記基準数以上の時に、前記コピー元のブロックを異常ブロック群に追加する異常ブロック追加手段を更に備えることを特徴とする
請求項２に記載のフラッシュメモリの延命装置。
【請求項４】
複数のブロックを含むフラッシュメモリの延命方法であって、
書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピーステップと、
コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化ステップと、
前記コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加ステップと、
を備えることを特徴とするフラッシュメモリの延命方法。
【請求項５】
前記予備ブロック追加ステップは、前記予備ブロック群に含まれるブロックの数が基準数未満の時にのみ行われることを特徴とする
請求項４に記載のフラッシュメモリの延命方法。
【請求項６】
前記予備ブロック群に含まれるブロックの数が前記基準数以上の時に、前記コピー元のブロックを異常ブロック群に追加する異常ブロック追加ステップを更に備えることを特徴とする
請求項５に記載のフラッシュメモリの延命方法。
【請求項７】
複数のブロックを含むフラッシュメモリの延命方法をコンピュータに実行させるためのプログラムであって、
前記延命方法は、
書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピーステップと、
コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化ステップと、
前記コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加ステップと、
を備えることを特徴とするプログラム。
【請求項８】
前記延命方法において、前記予備ブロック追加ステップは、前記予備ブロック群に含まれるブロックの数が基準数未満の時にのみ行われることを特徴とする
請求項７に記載のプログラム。
【請求項９】
前記延命方法は、前記予備ブロック群に含まれるブロックの数が前記基準数以上の時に、前記コピー元のブロックを異常ブロック群に追加する異常ブロック追加ステップを更に備えることを特徴とする
請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ、特に、ＮＡＮＤタイプのように、読み出し回数、書き込み回数に制限のあるフラッシュメモリの延命装置、その方法及びその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
近年、フラッシュメモリが登場し、コンピュータの外部記憶装置などに利用されている。例えば、ＵＳＢ(Universal Serial Bus)メモリ、ＳＤカードメモリなどには、フラッシュメモリが利用されている。また、ハードディスクドライブ（ＨＤＤ）と互換性を有するインターフェースを持つ所謂ＳＳＤ(Solid State Drive)にもフラッシュメモリが利用されている。ＳＳＤはＨＤＤと比較し、消費電力が少なく、アクセス時間が短く、また、耐衝撃性に優れているという利点を有するため、一部のコンピュータ（特に、携帯型のコンピュータ）において、ＨＤＤがＳＳＤに置き換わりつつある。
【０００３】
特許文献１には、ＥＥＰＲＯＭ(Electrically Erasable Programmable Read Only Memory)において、データ誤りを検出したならば、誤りを訂正して、訂正後のデータを元の場所に書き込む技術が記載されている。
【特許文献１】特許第３１７６０１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、フラッシュメモリは、１０万回程度書込みが行われたり、１０万回程度読出しが行われると、寿命が尽きてしまうという欠点を有する。
【０００５】
その欠点を改善するための方法として、フラッシュメモリを論理的に複数のブロックに分割し、不良となったブロックを予備ブロックに置き換える方法がある。
【０００６】
この方法によれば、図１に示すように、フラッシュメモリ１００に含まれるブロックは、稼働ブロック群１０１に含まれるブロック１０１−１、１０１−２、・・・、１０１−Ｌ、予備ブロック群１０３に含まれるブロック１０３−１、１０３−２、・・・、１０３−Ｍ及び異常ブロック群１０５に含まれるブロック１０５−１、１０５−２、・・・、１０５−Ｎに分類される。ここで、例えば、１個のブロックは６４個のページより成り、１個のページは２０４８バイトより成る。
【０００７】
稼働ブロック群１０１に含まれるブロックは、現在利用されているブロックであり、予備ブロック群に含まれるブロックは、稼働ブロック群１０１に含まれているブロックのうち将来不良となるブロックの代わりとなるブロックであり、異常ブロック群１０５に含まれるブロックは、不良となったブロックである。
【０００８】
このようにして、稼働ブロック群１０１に含まれるブロックの一部が不良となっても、予備ブロック群１０３に含まれるブロックが枯渇するまで、フラッシュメモリの寿命は維持される。
【０００９】
上述した寿命維持方法の詳細を図２を参照して説明する。
【００１０】
図２を参照すると、まず、イニシャライズ等が行われる（ステップＳ９０１）。
【００１１】
次に、書込みコマンド又は読出しコマンドを受け付ける（ステップＳ９０３）。
【００１２】
次に、ステップＳ９０３で書込みコマンドを受け付けたのであれば、書込み動作を行い、ステップＳ９０３で読出しコマンドを受け付けたのであれば、読出し動作を行う（ステップＳ９０５）。
【００１３】
次に、ＥＣＣ(Error Correcting Code)エラーが発生したか否かを判断する（ステップＳ９０７）。ここで利用されるＥＣＣは例えば、５１２バイトに対して４ビット誤り訂正能力を有する。
【００１４】
ＥＣＣエラーが発生しない場合には（１ビットも誤りがない場合には）（ステップＳ９０７でＮＯ）、ステップＳ９０９に進む。
【００１５】
ＥＣＣエラーが発生した場合には（少なくとも１ビットの誤りがあれば）（ステップＳ９０７でＹＥＳ）、ステップＳ９１３に進む。
【００１６】
ステップＳ９１３では、規定ビット数以上の誤りが発生したのであるか否かを判断する。規定ビット数としては、例えば、４ビットを設定する。
【００１７】
規定ビット数未満の誤りが発生したのであれば（例えば、１〜３ビットの誤りが発生したのであれば）（ステップＳ９１３でＮＯ）、ステップＳ９１５に進み、規定ビット数以上の誤りが発生したのであれば（例えば、４ビットの誤りが発生したのであれば）（ステップＳ９１３でＹＥＳ）、ステップＳ９１７に進む。
ステップＳ９１５では、ＥＣＣ訂正を行い、ステップＳ９０９に進む。
【００１８】
ステップＳ９１７でも、ＥＣＣ訂正を行うが、ステップＳ９１９に進む。
【００１９】
ステップＳ９１９では、訂正後のデータを予備ブロック群１０３に含まれる予備ブロックのうちの何れかのブロックにコピーする。
【００２０】
ステップＳ９１９に続き、ステップＳ９１９でデータがコピーされた予備ブロックを稼働データブロック群に移動し（稼働ブロックに変更し）（ステップＳ９２１）、ステップＳ９１３で規定ビット数以上の誤りが検出されたブロック（異常となった稼働ブロック）を異常ブロック群に移動する（異常ブロックに変更する）（ステップＳ９２３）。これらの移動はアドレス管理により論理的に行われる。以下で「移動」といったときにもアドレス管理による論理的な移動のことである。ステップＳ９２１での移動とステップＳ９２３での移動により、異常となった稼働ブロックのアドレスは、予備ブロック群から稼働ブロック群に移動してきたブロックに割り当てられることとなり、この移動してきたブロックが稼働ブロックとなる。
【００２１】
ステップＳ９０９では、ステップＳ９０３で書込みコマンドを受け付けたのであれば、書込みカウンタをカウントアップし、ステップＳ９０３で読出しコマンドを受け付けたのであれば、読出しカウンタをカウントアップする。
【００２２】
次に、ステップＳ９０９でカウントアップしたカウンタの値が閾値以上であるか否かを判断する（ステップＳ９１１）。
【００２３】
ステップＳ９０９でカウントアップしたカウンタの値が閾値未満であれば（ステップＳ９１１でＮＯ）、ステップＳ９０３に戻る。
【００２４】
ステップＳ９０９でカウントアップしたカウンタの値が閾値以上であれば（ステップＳ９１１でＹＥＳ）、予備ブロックが１個以上あるか否かを判断する（ステップＳ９２５）。
【００２５】
予備ブロックがなければ（ステップＳ９２５）、動作を終了する（フラッシュメモリは使えなくなる）。
【００２６】
予備ブロックが１個以上あれば（ステップＳ９２５でＹＥＳ）、ステップＳ９１１でカウンタの値が閾値以上であると判断された稼働ブロックのデータを予備ブロック群１０３に含まれる予備ブロックのうちの何れかのブロックにコピーする（ステップＳ９２７）。
【００２７】
ステップＳ９２７に続き、ステップＳ９２７でデータがコピーされた予備ブロックを稼働データブロック群に移動し（稼働ブロックに変更し）（ステップＳ９２９）、ステップＳ９１１でカウンタの値が閾値以上であると判断された稼働ブロック（異常となった稼働ブロック）を異常ブロック群に移動する（異常ブロックに変更する）（ステップＳ９３１）。ステップＳ９２９での移動とステップＳ９３１での移動により、異常となった稼働ブロックのアドレスは、予備ブロック群から稼働ブロック群に移動してきたブロックに割り当てられることとなり、この移動してきたブロックが稼働ブロックとなる。
【００２８】
ステップＳ９３１からは、ステップＳ９０３に戻る。
【００２９】
以上が通常行われている寿命維持の方法である。
【００３０】
しかし、この方法では、まだ利用できるのにもかかわらず、書込みカウンタ又は読出しカウンタの値が閾値以上となったという原因のみによって、稼働ブロックが異常ブロックとなってしまう。
【００３１】
そこで、本発明は、書込みカウンタの値又は読出しカウンタの値が閾値以上となったブロックであっても、実際には異常となっていないブロックを継続して利用することができるようにすることによりフラッシュメモリを延命させることを可能とするフラッシュメモリの延命方法、その装置及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３２】
本発明によれば、複数のブロックを含むフラッシュメモリの延命装置であって、書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピー手段と、コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化手段と、コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加手段と、を備えることを特徴とするフラッシュメモリの延命装置が提供される。
【００３３】
また、本発明によれば、複数のブロックを含むフラッシュメモリの延命方法であって、書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピーステップと、コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化ステップと、コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加ステップと、を備えることを特徴とするフラッシュメモリの延命方法が提供される。
【００３４】
更に、本発明によれば、複数のブロックを含むフラッシュメモリの延命方法をコンピュータに実行させるためのプログラムであって、前記延命方法は、書込み回数又は読出し回数が所定値以上となったブロックのデータを予備ブロック群に含まれる或るブロックにコピーするコピーステップと、コピー先のブロックをコピー元のブロックの代わりに利用させるようにするための利用可能化ステップと、コピー元のブロックを前記予備ブロック群に追加する予備ブロック追加ステップと、を備えることを特徴とするプログラムが提供される。
【発明の効果】
【００３５】
本発明によれば、書込み回数又は読出し回数が所定値以上となったブロックを予備ブロック群に追加するので、フラッシュメモリを延命させることが可能となる。
【発明を実施するための最良の形態】
【００３６】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００３７】
本実施形態によるフラッシュメモリの延命方法の詳細を図３及び図４を参照して説明する。
【００３８】
図３を図２と比較すると明らかなように、本実施形態による延命方法は、ステップＳ２１１での判断結果が肯定的であった場合に続くステップ以外のステップについては、通常の寿命維持方法と同一である。
【００３９】
すなわち、図３に示すステップＳ２０１、Ｓ２０３、Ｓ２０５、Ｓ２０７、Ｓ２０９、Ｓ２１１、Ｓ２１３、Ｓ２１５、Ｓ２１７、Ｓ２１９、Ｓ２２１及びＳ２２３は、図２に示すステップＳ９０１、Ｓ９０３、Ｓ９０５、Ｓ９０７、Ｓ９０９、Ｓ９１１、Ｓ９１３、Ｓ９１５、Ｓ９１７、Ｓ９１９、Ｓ９２１及びＳ９２３と同一である。従って、重複する説明を省略する。
【００４０】
図３及び図４を参照すると、ステップＳ２１１での判断結果が肯定的であった場合には、予備ブロック１０３群に含まれる予備ブロックの数が基準数以上であるか否かが判断される（ステップＳ２２５）。
【００４１】
予備ブロック１０３群に含まれる予備ブロックの数が基準数以上である場合には（ステップＳ２２５でＹＥＳ）、ステップＳ２２７、Ｓ２２９及びＳ２３１が行われる。ステップＳ２２７、Ｓ２２９及びＳ２３１は、図２に示すステップＳ９２７、Ｓ９２９及びＳ９３１と同一であるので、重複する説明を省略する。
【００４２】
予備ブロック１０３群に含まれる予備ブロックの数が基準数未満である場合には（ステップＳ２２５でＮＯ）、ステップＳ２１１でカウンタの値が閾値以上であると判断された稼働ブロックのデータを予備ブロック群１０３に含まれる予備ブロックのうちの何れかのブロックにコピーする（ステップＳ２３３）。
【００４３】
ステップＳ２３３に続き、ステップＳ２３３でデータがコピーされた予備ブロックを稼働データブロック群に移動し（稼働ブロックに変更し）（ステップＳ２３５）、ステップＳ２１１でカウンタの値が閾値以上であると判断された稼働ブロック（異常となった稼働ブロック）を予備ブロック群に移動する（戻す）（予備ブロックに変更する）（ステップＳ２３７）。ステップＳ２３５での移動とステップＳ２３７での移動により、異常となった稼働ブロックのアドレスは、予備ブロック群から稼働ブロック群に移動してきたブロックに割り当てられることとなり、この移動してきたブロックが稼働ブロックとなる。
【００４４】
本実施形態によれば、書込み回数又は読出し回数が閾値以上となったブロックは、それのみをもって異常ブロックとして扱われるようにはならず、更に、予備ブロックが基準数以上ある場合にのみ異常ブロックとして扱われるようになる。
【００４５】
書込み回数又は読出し回数が閾値以上となったブロックは、予備ブロックの数が基準値未満である場合には、予備ブロック群に戻される。
【００４６】
仮に、書込み回数又は読出し回数が閾値以上となったブロックを無条件に予備ブロックに戻すと、予備ブロック群に含まれるブロックが異常である確率が高くなってしまう。これを避けるために、書込み回数又は読出し回数が閾値以上となったブロックは、予備ブロックの数が基準値未満である場合に限り、予備ブロック群に戻される。
【００４７】
予備ブロックの数が基準値未満となるのは、従来であれば、寿命となる時期に近い時期であり、この時期からステップＳ２３３、Ｓ２３５及びＳ２３７の動作が行われるようになる。従って、寿命となる時期が近づかない限り、従来と同様に、予備ブロック群に異常ブロックが含まれているという確率を低く抑えることができる。
【００４８】
ステップＳ２３７で予備ブロック群に戻されたブロックが実際にも異常ブロックである場合には、ステップＳ９０７、Ｓ９１３、Ｓ９１７、Ｓ９１９、Ｓ９２１及びＳ９２３により、その異常ブロックは異常ブロック群に移動されることとなる。従って、ステップＳ２３７が実行されても、異常なブロックは、一旦は、予備ブロック群に移動されるが、終局的には、異常ブロック群に移動されることとなる。従って、ステップＳ２３７が実行されても、フラッシュメモリの信頼性を下げずに、フラッシュメモリを延命させることが可能となる。
【００４９】
なお、この延命方法は、図１に示す制御部１０７により行われる。図１に示すように、制御部１０７をフラッシュメモリ１００と別に設けても良いし、図１とは異なり制御部１０７をフラッシュメモリ１００に含ませても良い。
【００５０】
また、制御部１０７をハードウェアのみによって構成しても良いが、制御部１０７にＣＰＵやＤＳＰを設け、ＣＰＵやＤＳＰによるプログラム実行により制御部１０７の機能を実現させても良い。
【図面の簡単な説明】
【００５１】
【図１】フラッシュメモリの内部構成及び制御部を示すブロック図である。
【図２】通常行われるフラッシュメモリの寿命維持方法を説明するためのフローチャートである。
【図３】本発明の実施形態によるフラッシュメモリの延命方法を説明するためのフローチャート（１／２）である。
【図４】本発明の実施形態によるフラッシュメモリの延命方法を説明するためのフローチャート（２／２）である。
【符号の説明】
【００５２】
１００  フラッシュメモリ
１０１  稼働ブロック群
１０３  予備ブロック群
１０５  異常ブロック群
【図１】
2010079659.tif 000003
【図２】
2010079659.tif 000004
【図３】
2010079659.tif 000005
【図４】
2010079659.tif 000006