(57)【要約】【課題】不揮発性メモリの各物理ブロックに対する負荷をより均一化する。【解決手段】  本実施の形態における半導体記憶装置は、セグメント毎の外部機器からのデータの書き込み頻度が均一になるように論理アドレスを物理ブロックに対応付けてセグメント内の論理空間を分割することにより、各セグメントに対するデータの更新頻度を分散し、物理ブロックに対する負荷の均一化にするためのウェアレベリング処理をより高精度に実現する。【選択図】図４
2008191855.tif 000002
【特許請求の範囲】
【請求項１】
データの消去処理情報が対応付けられている所定数の物理ブロックからなるセグメントを複数有する不揮発性メモリと、
外部機器からのアクセス要求に応じて上記不揮発性メモリに対するデータの書き込み及び／又は読み出し制御を行うメモリ制御手段とを備え、
上記メモリ制御手段は、
上記セグメント内の一部の物理空間と、２つの異なる論理空間である第１の論理空間及び第２の論理空間とを対応付けて管理する論理物理変換手段と、
上記セグメント内の消去処理が実行されていない旨の上記消去処理情報が対応付けられている物理ブロックに記憶されているデータを上記セグメント内の他の物理ブロックに移動させるデータ移動手段とを有する
ことを特徴とする半導体記憶装置。
【請求項２】
上記論理物理変換手段は、上記不揮発性メモリが有する物理空間がセグメントＳ０，Ｓ１，・・・，Ｓｎ−１からなる場合、当該セグメントＳ０，Ｓ１，・・・，Ｓｎ−１がそれぞれ有する上記物理空間を、それぞれ第１の論理空間Ａ０ａ及び第２の論理空間Ａ０ｂ、第１の論理空間Ａ１ａ及び第２の論理空間Ａ１ｂ、・・・、第１の論理空間Ａ（ｎ−１）ａ及び第２の論理空間Ａ（ｎ−１）ｂと対応付けて管理し、
上記外部機器から取得されたデータは、論理空間Ａ０ａ，Ａ１ａ，・・・，Ａ（ｎ−１）ａ、論理空間Ａ（ｎ−１）ｂ，・・・，Ａ１ｂ，Ａ０ｂの順に書き込まれる
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
上記データ移動手段は、データの消去処理が実行された旨の上記消去処理情報が対応付けられている上記物理ブロックに対してデータの消去処理が再度実行された場合に、上記データの移動処理を開始することを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
上記データ移動手段は、上記物理ブロックに対応付けられている全ての上記消去処理情報においてデータの消去処理が実行された旨が示されるまで、上記データの移動処理を実行することを特徴とする請求項１記載の半導体記憶装置。
【請求項５】
上記全ての消去処理情報においてデータの消去処理が実行された旨が示されたとき、データの消去処理が実行されていない旨を示すように全ての上記消去処理情報を更新することを特徴とする請求項４記載の半導体記憶装置。
【請求項６】
データの消去処理情報が対応付けられている所定数の物理ブロックからなるセグメントを複数有する不揮発性メモリを備える半導体記憶装置に用いられ、外部機器からのアクセス要求に応じて上記不揮発性メモリに対するデータの書き込み及び／又は読み出し制御を行うメモリ制御方法であって、
上記セグメント内の一部の物理空間と、２つの異なる論理空間である第１の論理空間及び第２の論理空間とを対応付けて管理し、上記セグメント内の消去処理が実行されていない旨の上記消去処理情報が対応付けられている物理ブロックに記憶されているデータを上記セグメント内の他の物理ブロックに移動させる
ことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリの各物理ブロックに対する負荷を均一化する半導体記憶装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年の半導体記憶装置は、その内部に不揮発性メモリを有しているものがある。不揮発性メモリは、データ記憶領域が複数のブロックに分割されており、ブロック毎にデータの書き込みや消去が行われる。
【０００３】
一般的に、不揮発性メモリが有する物理ブロックに対するデータの消去回数には上限が設けられており、この上限を超えた物理ブロックはデータを記憶し得ない不良のブロックとして扱われる。そして、このような不揮発性メモリは、不良のブロックの数が所定数以上になると、製品上の仕様により寿命が尽きたものとされ、使用不可能となる。
【０００４】
このように、特定の物理ブロックばかりにデータの書き込みや消去が行われることにより、特定の物理ブロックの消去回数のみが増加するようになると、特定の物理ブロックが他の物理ブロックよりも早く不良のブロックになってしまう。そして、不良のブロックの数が所定数以上になると、消去回数が少なく、未だデータを記憶することができる物理ブロックを数多く残しているのにも関わらず、不揮発性メモリが使用不可能になってしまう場合があった。
【０００５】
この問題を解決するために、例えば、次のような手法（以下、これを第１の手法という。）が提案されている。すなわち、第１の手法が適用された半導体記憶装置においては、物理ブロック毎にデータの消去回数をカウントし、この結果を消去管理テーブルに記して管理する。そして、この半導体記憶装置は、消去管理テーブルを適宜参照することにより所定の規定回数に達した物理ブロックを発見すると、この消去管理テーブルに記された全物理ブロックの消去回数を参照することにより、消去回数が最も少ない物理ブロックを特定する。次に、この半導体記憶装置は、規定回数に達した物理ブロックに記憶されているデータを、この特定した消去回数が最も少ない物理ブロックへ移動させる。このように、この第１の手法では、不揮発性メモリの各物理ブロックに対する負荷を均一化（いわゆるウェアレベルリング（Wear Leveling））することにより、不揮発性メモリの使用可能期間を向上させることが可能である（特許文献１参照）。
【０００６】
【特許文献１】特開２００３−２０３０１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで第１の手法が適用された半導体記憶装置は、消去管理テーブルに物理ブロックごとの消去回数（例えば１０００回等）を記すので、この消去管理テーブルのデータ量が大きくなってしまう上、上述したようにウェアレベルリングを行う際、消去管理テーブルに記された全物理ブロックの消去回数を参照する処理を実行しなければならないため、その構成を簡易にすることが難しかった。
【０００８】
一方、従来の半導体記憶装置では、次のような手法（以下、これを第２の手法という。）も採用されている。この第２の手法は、消去管理テーブル等を必要とせずに半導体記憶装置の構成を簡易化し得るものである。
【０００９】
図１２及び図１３は、この第２の手法を説明するための図である。図１２（Ａ）〜（Ｅ）では、不揮発性メモリ中の１つのセグメントＳＧＸを簡略化して示す。実際、この１セグメントＳＧＸは、例えば５１２個の物理ブロックＢＫ（ＢＫ０、ＢＫ１、・・・）を有し、各物理ブロックＢＫには、例えば６４ページ分のデータが記憶され得るようになされている（例えば１ページが２［Ｋｂｙｔｅ］に相当）。
【００１０】
また、図１２及び図１３では、データを記憶している物理ブロックＢＫに斜線を施すと共に、データのウェアレベリング処理が実行された物理ブロックＢＫに網掛けを施しており、またデータウェアレベリング処理の回数が多い物理ブロックＢＫほど施す網掛けを密にした。
【００１１】
第２の手法が適用された半導体記憶装置は、図１２（Ａ）に示すように、外部から供給されるデータを、データが書き込まれていない空の物理ブロックＢＫ０，ＢＫ１，・・・に順次書き込んでいく。
【００１２】
その後、外部から例えば物理ブロックＢＫ６に記憶されている６４ページ分のデータの内の一部のデータを更新する更新データがこの半導体記憶装置に対して供給されたとする（図１２（Ｂ））。
【００１３】
この際、半導体記憶装置は、物理ブロックＢＫ６に記憶されているデータの内、更新対象でないデータ（以下、これを「更新対象外データ」と呼ぶ）を読み出し、読み出した更新対象外データとこの更新データとを、このセグメントＳＧＸ中の所定の部分に確保されている空の物理ブロックＢＫ２１に対して書き込む（図１２（Ｃ）中の（ａ））。そして、この半導体記憶装置は、物理ブロックＢＫ６に記憶されている古いデータを全て消去する（図１２（Ｃ）中の（ｂ））。この後、外部から、例えば物理ブロックＢＫ３に記憶されているデータの一部を更新する更新データが半導体記憶装置に対して供給されたときも、この半導体記憶装置は同様の処理（図１２（Ｄ）中の（ｃ）及び（ｄ））を実行する。
【００１４】
このように、第２の手法が適用された半導体記憶装置は、例えば物理ブロックＢＫ６に記憶されているデータの一部を更新する際、この物理ブロックＢＫ６に一緒に記憶されていたデータを全て他の物理ブロックＢＫ２１へ移動するようにしたことにより、物理ブロックＢＫ６ばかりにデータの書込み処理や消去が行われてしまうことをある程度回避することができる。
【００１５】
次に、図１３を用いて、この第２の手法におけるデータの書き込み処理の様子を詳細に説明する。実際、このような半導体記憶装置は、論理アドレスと物理ブロックＢＫに割り当てられた物理アドレスとを対応付けてなるテーブル（以下、これを論理物理変換テーブル）を有しており、これにより、これまで書き込んだ各データの記憶位置を管理している。
【００１６】
ここで、図１３（Ａ）に示すような状態において、外部から、例えば論理アドレス＃０に対応する物理ブロックＢＫ０に記憶されているデータの一部を更新するための更新データが供給されると、半導体記憶装置は、論理物理変換テーブルを参照して論理アドレス＃０に対応する物理アドレス＃０を認識する。そしてこの半導体記憶装置は、当該認識した物理アドレス＃０に基づいて物理ブロックＢＫ０にアクセスし、このアクセスした物理ブロックＢＫ０に記憶されているデータの内、この更新データの更新対象でない更新対象外データを読み出し、この読み出した更新対象外データと更新データとを、このセグメントＳＧＸ中の空のブロックＢＫ３に対して書き込む（図１３（Ｂ））。続いて、半導体記憶装置は、物理ブロックＢＫ０に記憶されている古いデータを全て消去すると共に、論理アドレス＃０と物理ブロックＢＫ３の物理アドレス＃３とを対応付けるようにして論理物理変換テーブルを更新する。
【００１７】
この後、さらに外部より論理アドレス＃０に対応する物理ブロックＢＫ３に記憶されているデータの一部を更新するための更新データが供給されると、半導体記憶装置は、論理物理変換テーブルを参照して論理アドレス＃０に対応する物理アドレス＃３を認識する。そして、半導体記憶装置は、この認識した物理アドレス＃３に基づいてブロックＢＫ３にアクセスし、このアクセスした物理ブロックＢＫ３に記憶されているデータの内、この更新データの更新対象でない更新対象外データを読み出し、この読み出した更新対象外データと更新データとをセグメントＳＧＸ中の空の物理ブロックＢＫ６に対して書き込む（図１３（Ｃ））。続いて、半導体記憶装置は、物理ブロックＢＫ３に記憶されている古いデータを全て消去すると共に、論理アドレス＃０と物理ブロックＢＫ６の物理アドレス＃６とを対応付けるようにして論理物理変換テーブルを更新する。
【００１８】
このように、第２の手法が適用された半導体記憶装置では、例えば論理アドレス＃０に対応するデータばかりが頻繁に更新される場合であって、この他の論理アドレスに対応するデータがほとんど更新されない場合、図１３（Ｄ）に示すように、ウェアレベリング処理が実行される物理ブロックＢＫがある程度固定されてしまう（この場合、物理ブロックＢＫ０、ＢＫ３、ＢＫ６、ＢＫ１０、ＢＫ１３、ＢＫ１９）。
【００１９】
この結果、不揮発性メモリでは、ウェアレベリング処理されないために同じデータが記憶されたままになってしまう物理ブロックＢＫ（いわゆる不動ブロック）が数多く発生してしまうことになる。
【００２０】
そして、このように不動ブロックが数多く発生してしまった場合、不揮発性メモリの各物理ブロックＢＫに対する負荷が偏った状態になっているので、不揮発性メモリの使用可能期間を向上させることが難しくなってしまう。
【００２１】
このように、第２の手法を適用した半導体記憶装置は、消去管理テーブル等を保持する必要がないため、第１の手法を適用した場合と比べてその構成を簡易化し得るものの、不揮発性メモリの各物理ブロックＢＫに対する負荷を十分に均一化することができないという問題があった。
【００２２】
本発明は、以上の点を考慮してなされたものであり、簡易な構成で不揮発性メモリの各ブロックに対する負荷をより均一化することが可能な半導体記憶装置及びメモリ制御方法を提案するものである。
【課題を解決するための手段】
【００２３】
上述した目的を達成するために、本発明に係る半導体記憶装置は、データの消去処理情報が対応付けられている所定数の物理ブロックからなるセグメントを複数有する不揮発性メモリと、外部機器からのアクセス要求に応じて上記不揮発性メモリに対するデータの書き込み及び／又は読み出し制御を行うメモリ制御手段とを備え、上記メモリ制御手段は、上記セグメント内の一部の物理空間と、２つの異なる論理空間である第１の論理空間及び第２の論理空間とを対応付けて管理する論理物理変換手段と、上記セグメント内の消去処理が実行されていない旨の上記消去処理情報が対応付けられている物理ブロックに記憶されているデータを上記セグメント内の他の物理ブロックに移動させるデータ移動手段とを有することを特徴とする。
【００２４】
また、上述した目的を達成するために、本発明に係るメモリ制御方法は、データの消去処理情報が対応付けられている所定数の物理ブロックからなるセグメントを複数有する不揮発性メモリを備える半導体記憶装置に用いられ、外部機器からのアクセス要求に応じて上記不揮発性メモリに対するデータの書き込み及び／又は読み出し制御を行うメモリ制御方法であって、上記セグメント内の一部の物理空間と、２つの異なる論理空間である第１の論理空間及び第２の論理空間とを対応付けて管理し、上記セグメント内の消去処理が実行されていない旨の上記消去処理情報が対応付けられている物理ブロックに記憶されているデータを上記セグメント内の他の物理ブロックに移動させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、各セグメントに対するデータの書き込み頻度を分散し、物理ブロックに対する負荷の均一化にするためのウェアレベリング処理をより高精度に実現することが可能となる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２７】
図１は、本発明を適用した一実施の形態における半導体記憶装置１の構成を示す図である。半導体記憶装置１は、不揮発性メモリ２Ａ，２Ｂ，・・・を備える不揮発性メモリ２と、不揮発性メモリ２の制御処理を行うコントローラ３とを備えたカード型の半導体記憶装置である。半導体記憶装置１は、メモリスティック（登録商標）に相当し、パーソナルコンピュータ等の外部機器から供給されるデータが書き込まれる。
【００２８】
コントローラ３において、メモリ制御を司るＭＰＵ（Micro Processing Unit）４は、命令レジスタ等からなるレジスタ５と、誤り訂正処理等を実行するＥＣＣ（Error Correcting Circuit）６と、ＭＰＵ４がプログラムを実行展開するためのＲＡＭ（Random Access Memory）７と、不揮発性メモリ２Ａに対して読み書きされるデータが一時的に蓄積されるデータバッファ８とが接続される。また、コントローラ３は、メモリスティック内部クロックを生成するためのクロック生成部９を備える。
【００２９】
不揮発性メモリ２の所定の領域には、本実施の形態に係る処理動作を実行するためのプログラムが記憶されており、ＭＰＵ４は、このプログラムを不揮発性メモリ２より読み出してＲＡＭ７に展開し、このプログラムに基づく処理を実行する。
【００３０】
データバッファ８は、バス１０を介してシリアルインターフェース１１及びパラレルインターフェース１２と接続される。外部機器からのデータは、ラインＤＡＴＡ０〜ＤＡＴＡ３及びパラレルインターフェース１２、ラインＤＡＴＡ０及びシリアルインターフェース１１を順次介してデータバッファ８へ入力され、ＭＰＵ４は、このデータバッファ８に入力されたデータを不揮発性メモリ２Ａ，２Ｂ，・・・に書き込む動作を行う。
【００３１】
また、半導体記憶装置１には、ラインＶＳＳ，ＶＣＣを介して電源が供給される。また、半導体記憶装置１は、外部機器からのデータを取り込むために必要なクロックが入力されるラインＳＣＬＫや、外部機器に対してこの半導体記憶装置１が正常に装着されているか否かを判断するための信号が入力されるラインＩＮＳや、外部機器から供給されるデータの向きを判断するための信号が入力されるラインＢＳ等も備える。
【００３２】
不揮発性メモリ２は、複数の不揮発性メモリ（不揮発性メモリ２Ａ，２Ｂ，・・・）を備えるが、以下では省略のため、不揮発性メモリ２Ａについて説明する。
【００３３】
図２に示すように、不揮発性メモリ２Ａが有する物理空間は、複数の物理ブロックから構成される。各物理ブロックは、複数のページから構成される。各ページは、複数のセクタ（図示せず）と呼ばれるデータの書き込み又は読み出し単位から構成される。
【００３４】
この不揮発性メモリ２Ａが有する物理空間は、図３に示すように、実際にデータが書き込み、読み出し、消去等される領域であり、所定数の物理ブロックからなるセグメントを複数有するユーザデータエリア、及び、このユーザデータエリアにおける物理ブロックアドレスと論理ブロックアドレスとを対応付けて管理する論理物理変換テーブルを有する管理エリアから構成される。この論理物理変換テーブルには、例えばＦＡＴ（File Allocation Tables）等のファイルシステムを適用する。
【００３５】
なお、不揮発性メモリ２Ａが有する物理ブロック、及び、物理ブロックを構成するページは、データの追記は可能であるが、上書きは不可能である。また、不揮発性メモリ２Ａにおいて、データの書き込み、又は読み出しはセクタ単位で行い、データの消去はブロック単位で行う。
【００３６】
論理物理変換テーブルは、セグメント毎に物理ブロックに割り当てられた物理アドレスと、データの書き込み、読み出し、消去等の処理を行うための仮想的な空間である論理空間を構成する論理ブロックに割り当てられた論理アドレスとを対応付けて管理する。
【００３７】
半導体記憶装置１において、１つのセグメントは、例えば５１２個の物理ブロックを有し、各物理ブロックには、例えば６４ページ分のデータを記憶することが可能である（例えば１ページが２［Ｋｂｙｔｅ］に相当）。
【００３８】
論理物理変換テーブルは、セグメント毎の外部機器からのデータの書き込み頻度が均一になるように、各セグメント内の所定数の物理ブロックからなる物理空間を２つの論理空間である第１の論理空間及び第２の論理空間と対応付けて管理する。
【００３９】
例えば、不揮発性メモリ２Ａが有する物理空間がセグメントＳ０，Ｓ１，・・・，Ｓｎ−１からなる場合、このセグメントＳ０，Ｓ１，・・・，Ｓｎ−１がそれぞれ有する物理空間を、それぞれ第１の論理空間Ａ０ａ及び第２の論理空間Ａ０ｂ、第１の論理空間Ａ１ａ及び第２の論理空間Ａ１ｂ、・・・、第１の論理空間Ａ（ｎ−１）ａ及び第２の論理空間Ａ（ｎ−１）ｂと対応付けて管理する。外部機器から取得されたデータは、論理空間Ａ０ａ，Ａ１ａ，・・・，Ａ（ｎ−１）ａ、論理空間Ａ（ｎ−１）ｂ，・・・，Ａ１ｂ，Ａ０ｂの順に書き込まれる。
【００４０】
また、各セグメントは、２つの論理空間（第１の論理空間及び第２の論理空間）と対応付けられていない物理ブロックとして、データのウェアレベリング処理に適用される物理ブロック（以下、ウェアレベリング処理用ブロックという。）、及びデータ更新処理に適用される物理ブロック（以下、データ更新用ブロックという。）をさらに備え、後述のウェアレベリング処理によって物理ブロックに対する負荷の均一化を実現する。
【００４１】
図４は、この論理ブロックに対する論理アドレスの割り当て方法の一例を説明するための図である。
【００４２】
本例では、不揮発性メモリ２Ａが有する物理空間は、物理ブロック０〜９からなるセグメント０、物理ブロック１０〜１９からなるセグメント１、及び、物理ブロック２０〜２９からなるセグメント２から構成されるとする。
【００４３】
ここで、データ更新用ブロックは、物理ブロック８、物理ブロック１８、及び物理ブロック２８であり、ウェアレベリング処理用ブロックは、物理ブロック９、物理ブロック１９、及び物理ブロック２９である。
【００４４】
なお、ここでは、例えばアドレスＭが付された物理ブロック、論理ブロックについては、それぞれ物理ブロックＭ、論理ブロックＭと記載する。
【００４５】
論理物理変換テーブルは、各セグメントが有する物理ブロックの内、データ更新用ブロック及びウェアレベリング処理用ブロックを除く残りの物理ブロックに付された物理アドレスと論理アドレスとを１つずつ対応付けて管理する。
【００４６】
論理物理変換テーブルは、物理ブロック０〜３、物理ブロック１０〜１３、物理ブロック２０〜２３、物理ブロック２４〜２７、物理ブロック１４〜１７、物理ブロック４〜７にそれぞれ対応する論理空間に対し、順に論理アドレス０〜３、論理アドレス１０〜１３、論理アドレス２０〜２３、論理アドレス３０〜３３、論理アドレス４０〜４３、論理アドレス５０〜５３を割り当てる。論理物理変換テーブルは、論理アドレス０〜３、論理アドレス１０〜１３、論理アドレス２０〜２３、論理アドレス３０〜３３、論理アドレス４０〜４３、論理アドレス５０〜５３が対応付けられた論理空間を、順に論理空間０、論理空間１、論理空間２、論理空間３、論理空間４、論理空間５として管理する。
【００４７】
外部機器から取得されたデータは、論理アドレス０〜３、論理アドレス１０〜１３、論理アドレス２０〜２３、論理アドレス３０〜３３、論理アドレス４０〜４３、論理アドレス５０〜５３の順に書き込まれる。
【００４８】
図５は、論理物理変換テーブルが管理する１セグメント当たりの物理空間と、この物理空間に対応する論理空間との関係を示す図である。
【００４９】
論理物理変換テーブルは、各セグメントを構成する物理ブロックにデータの消去処理がなされたか否かを示す消去処理フラグを対応付けて管理する。ＭＰＵ４は、消去処理がなされた物理ブロックに対応付けられた消去処理フラグを１に設定し、消去処理がなされていない物理ブロックに対応付けられた消去処理フラグを０に設定する。
【００５０】
また、論理物理変換テーブルは、各セグメントを構成する物理ブロックに対し、後述のウェアレベリング処理が行われたか否かを示すウェアレベリング処理フラグを対応付けて管理する。ＭＰＵ４は、ウェアレベリング処理が行われた物理ブロックに対してはウェアレベリング処理フラグを１に設定し、ウェアレベリング処理がなされていない物理ブロックに対してはウェアレベリング処理フラグを０に設定する。
【００５１】
また、論理物理変換テーブルは、各セグメントを構成する物理ブロックに対し、後述のウェアレベリング処理が処理中であるか否かを示すウェアレベリング処理中フラグを対応付けて管理する。ＭＰＵ４は、ウェアレベリング処理開始時にウェアレベリング処理中フラグを１に設定し、ウェアレベリング処理終了時にウェアレベリング処理中フラグを０に設定する。
【００５２】
また、論理物理変換テーブルは、データ更新用ブロックである物理ブロックａ＋８に対してはデータ更新用ブロックアドレスを、また、ウェアレベリング処理用ブロックである物理ブロックａ＋９に対してはウェアレベリング処理用ブロックアドレス、ウェアレベリング処理の進捗状況を示すウェアレベリング処理進捗情報、及びウェアレベリング処理中フラグを対応付けて管理する。
【００５３】
なお、消去処理フラグ、ウェアレベリング処理フラグ、及びウェアレベリング処理中フラグは、管理情報として管理エリアに記憶される。また、データ更新用ブロックアドレス、ウェアレベリング処理用ブロックアドレス、及びウェアレベリング処理進捗情報も管理エリアに記憶される。
【００５４】
このように、半導体記憶装置１では、消去処理フラグ、ウェアレベリング処理フラグ、ウェアレベリング処理中フラグを各物理ブロックに対応付けて管理エリアに管理情報として記憶するが、この消去処理フラグ、ウェアレベリング処理フラグ、及びウェアレベリング処理中フラグはともにデータに対する処理がなされたか否かを示すのみの情報であって情報量は１ブロックに対して１ビット（０または１）で済むため、消去回数等を管理する従来の構成と比べて一段と簡易な構成にすることが可能となる。
【００５５】
各セグメントを構成する物理ブロックの内、データ更新用ブロック及びウェアレベリング処理用ブロック以外の物理ブロックに付された物理アドレスは、上述の方法によって設定された論理アドレスと対応付けて管理される。例えば、物理アドレスａ、物理アドレスａ＋１、物理アドレスａ＋２、物理アドレスａ＋３は、それぞれ論理アドレスｍ，論理アドレスｍ＋１、論理アドレスｍ＋２、論理アドレスｍ＋３と対応付けられて管理され、物理アドレスａ＋４、物理アドレスａ＋５、物理アドレスａ＋６、物理アドレスａ＋７は、それぞれ論理アドレスｎ、論理アドレスｎ＋１、論理アドレスｎ＋２、論理アドレスｎ＋３と対応付けて管理される。ここで、論理アドレスｍ、論理アドレスｍ＋１、論理アドレスｍ＋２、論理アドレスｍ＋３がそれぞれ割り当てられた論理空間は、まとめて論理空間Ｘとして管理され、論理アドレスｎ、論理アドレスｎ＋１、論理アドレスｎ＋２、論理アドレスｎ＋３がそれぞれ割り当てられた論理空間は、まとめて論理空間Ｙとして管理される。
【００５６】
一般に、ＦＡＴ等のファイルシステムにて管理されるデータは、論理アドレスの小さい順に更新される。ここで、物理ブロックの配列順に従って論理アドレスを順に割り当てた場合、たとえセグメント毎にデータのウェアレベリング処理を行ったとしても、セグメント０等、番号の小さいセグメントが備える物理ブロックに対して消去処理に伴う負荷が集中し、他のセグメントが有する物理ブロックよりも早くに消耗時期に達する。
【００５７】
通常、不揮発性メモリのサイズに対してデータがフルサイズに書き込まれることは少ない。不揮発性メモリ２Ａにおいて、セグメントの半分のサイズ、例えば図４に示すように、論理空間０〜２に対応する物理空間に対して頻繁に消去処理がされる場合、論理空間３〜５に対応する物理空間に対して消去処理がされないため、これら２つの物理空間には消去回数に差が生じ、ウェアレベリング処理が有効になる。また、論理アドレスの小さい順からデータを保存し、そのデータを半永久的に更新しない場合、すなわち、データを読み出し専用ファイルとして保存する場合、論理空間０〜２に対応する物理ブロックに書き込まれたデータは更新されないために消去処理がなされず、論理空間３〜５のアドレス空間が頻繁に更新されることとなる。この場合においても、セグメント内の各物理ブロックに対する消去回数に差が生じ、ウェアレベリング処理が有効となる。
【００５８】
このように、半導体記憶装置１では、不揮発性メモリ２Ａの物理空間においてデータの書き込み頻度を分散させるように、具体的には、セグメント毎の外部機器からのデータの書き込み頻度が均一になるように論理アドレスを物理アドレスに対応付けることにより、後述するウェアレベリング処理による物理ブロックに対する負荷の均一化をより高精度に実現する。
【００５９】
不揮発性メモリ２Ａを構成する所定のセグメントにおいて、ＭＰＵ４は、データの書き込みがなされた物理ブロックに対してデータの更新処理を行う。この際、ＭＰＵ４は、消去処理がなされた物理ブロックに対し、図５に示すように、消去処理フラグを１に設定する。そして、ＭＰＵ４は、消去処理フラグ１が対応付けられた物理ブロックに対して再度消去処理がなされた場合、データの消去動作に伴う不揮発性メモリ２への負荷を均一化するためのウェアレベリング処理を開始する。
【００６０】
また、ＭＰＵ４は、セグメント内における消去処理がなされていない物理ブロックに対しては消去処理フラグを０に設定する。ＭＰＵ４は、データの更新頻度が低い論理空間に対応する物理空間において、消去処理フラグ０が対応付けられた物理ブロックを論理アドレスが大きい順に検索する。そして、ＭＰＵ４は、この消去処理フラグ０が対応付けられた物理ブロックを用いてウェアレベリング処理を行う。
【００６１】
図６は、セグメント毎のデータの書き込み処理に伴うデータの更新処理の一例を説明するための図である。図６（Ａ）に示すように、外部機器より、例えば論理アドレスｍ（図示せず）に対応する物理ブロックａに対してデータの書き込み要求がなされると、ＭＰＵ４は、論理物理変換テーブルを参照することにより、論理アドレスｍに対応する物理アドレスａを認識する。また、ＭＰＵ４は、データ更新用ブロックである物理ブロックａ＋８を認識する。そして、ＭＰＵ４は、物理ブロックａ＋８に外部機器からのデータを書き込み、図６（Ｂ）に示すように、この物理アドレスａ＋８を論理アドレスｍと対応付けるように論理物理変換テーブルを更新するとともに、物理ブロックａに記憶されているデータを消去し、この物理ブロックａをデータ更新用ブロックとして論理物理変換テーブルを更新する。また、ＭＰＵ４は、物理ブロックａに対応付けられた消去処理フラグを１に設定するように管理エリアに記憶されている管理情報を更新する。
【００６２】
また、図７は、セグメント毎のウェアレベリング処理の一例を説明するための図である。データの更新処理の後、再度、論理アドレスｍに対応する物理ブロックａ＋８へのデータの書き込み要求がなされた場合、仮に、図６に示す更新処理と同様の更新処理を行うようにすると、物理ブロックａ及び物理ブロックａ＋８ばかりにデータの消去処理がされるため、物理ブロックａ及び物理ブロックａ＋８への負荷が他の物理ブロックに比べて大きくなってしまう。そこで、再度、論理アドレスｍに対応する物理ブロックへのデータの書き込み要求がなされた場合には、例えば図７（Ａ）及び図７（Ｂ）に示すようなウェアレベリング処理を行うことにより、消去処理を行う物理ブロックの固定化を抑制し、セグメント内の物理ブロックに対する負荷を均一化する。
【００６３】
例えば、物理ブロックａ＋７に消去処理フラグ０が対応付けられている場合、物理ブロックａ＋７に記憶されているデータをウェアレベリング処理用ブロックである物理ブロックａ＋９にコピーする。
【００６４】
そして、論理物理変換テーブルは、物理ブロックａ＋９が論理アドレスｎ＋３に対応付けられるように管理情報を更新するとともに、物理ブロックａ＋７をデータ更新用ブロックとして、また、物理ブロックａをウェアレベリング処理用ブロックとして管理情報を更新する。
【００６５】
このようなデータウェアレベリング処理を施したデータ更新処理の後、物理ブロックａ＋８及び物理ブロックａ＋７において上述と同様のデータの更新処理が行われる。
【００６６】
なお、このウェアレベリング処理では、ＭＰＵ４は、消去処理フラグ０が対応付けられた物理ブロックを論理アドレスの大きい順に検索する。ＭＰＵ４は、例えば図８に示すように、セグメント内で消去処理フラグ０が対応付けられた物理ブロックを検索対象ブロックとして論理アドレスの大きい順に検索する。この図８に示す例では、セグメント０において、論理空間５が有する論理アドレスｎ＋２に対応する物理ブロックａ＋６がウェアレベリング処理に用いる物理ブロックとされる。
【００６７】
ＭＰＵ４は、セグメント０が有する物理ブロックに対応付けられたウェアレベリング処理フラグが全て１になった時点でウェアレベリング処理を終了する。
【００６８】
ＭＰＵ４は、ストレージメディアにおける通常の書き込み処理に相当するデータ更新処理において、データの更新頻度が低く消去処理フラグ０が対応付けられた物理ブロックに記憶されているデータの１ページ分を、ウェアレベリング処理用ブロックにコピーするウェアレベリング処理を行い、データ更新処理を終了させる。そして、ＭＰＵ４は、次のデータ更新処理が発生した場合に、続きのデータの１ページ分を、ウェアレベリング処理用ブロックにコピーするウェアレベリング処理を行い、データ更新処理を終了させる。これにより、半導体記憶装置１におけるパフォーマンスの低下を抑制する。
【００６９】
また、半導体記憶装置１は、セグメント内の全ての物理ブロックにウェアレベリング処理がなされた場合、全ての物理ブロックに対応付けられた消去処理フラグ、ウェアレベリング処理フラグ、及びウェアレベリング処理中フラグの設定を１から０にし、ウェアレベリング処理を終了させる。
【００７０】
図９は、不揮発性メモリ２Ａにおける各セグメント内の物理ブロックのデータ更新処理の処理動作を説明するためのフローチャートである。
【００７１】
ステップＳ１において、半導体記憶装置１が備える不揮発性メモリ２に対し、外部機器よりデータが書き込まれる。
【００７２】
ステップＳ２において、半導体記憶装置１が備えるＭＰＵ４は、不揮発性メモリ２Ａの管理エリアに記憶されている論理物理変換テーブルを参照し、セグメント内のデータの更新対象となる論理アドレスに対応する物理ブロックを取得する。
【００７３】
ステップＳ３において、ＭＰＵ４は、データ更新用ブロックを取得する。
【００７４】
ステップＳ４において、ＭＰＵ４は、外部機器から取得したデータをデータ更新用ブロックに書き込む。
【００７５】
ステップＳ５において、ＭＰＵ４は、データ更新用ブロックをデータの更新対象の論理アドレスに対応する物理ブロックとして論理物理変換テーブルの管理情報を更新する。
【００７６】
ステップＳ６において、ＭＰＵ４は、データの更新対象の論理アドレスに対応する物理ブロックに記憶されているデータを消去する。
【００７７】
ステップＳ７において、ＭＰＵ４は、データの更新対象の論理アドレスに対応する物理ブロックをデータ更新用ブロックとして論理物理変換テーブルの管理情報を更新する。
【００７８】
また、このステップＳ７において、論理物理変換テーブルは、ステップＳ６にてデータの消去処理がなされた物理ブロックに対応付けられた消去処理フラグを１に設定する。ＭＰＵ４は、消去処理フラグ１が対応付けられた物理ブロックに対して再度消去処理がなされた場合、セグメント内の他の物理ブロックと比較して消去回数が多いと判断し、データの消去動作に伴う不揮発性メモリ２Ａへの負荷を均一化するためのウェアレベリング処理を開始する。
【００７９】
ステップＳ８において、ＭＰＵ４は、物理空間のウェアレベリング処理を行う。ここで、ステップＳ８におけるウェアレベリング処理の処理動作の詳細について図１０Ａ，図１０Ｂのフローチャートを参照しながら説明する。
【００８０】
ステップＳ２０において、ＭＰＵ４は、上記セグメント内のウェアレベリング処理を開始する。
【００８１】
ステップＳ２１において、ＭＰＵ４は、ウェアレベリング処理中フラグが１であるか０であるかを確認することにより、現在ウェアレベリング処理が行われているか否かを確認する。このステップＳ２１において、ウェアレベリング処理中フラグが１であれば、Ａに続くステップＳ２５に進み、０であればステップＳ２２に進む。
【００８２】
ステップＳ２２において、セグメント内の特定の物理ブロックに対して書き込みによるデータの更新処理に伴う消去処理がなされると、ＭＰＵ４は、この物理ブロックに対応付けられた消去処理フラグが０又は１の何れであるかを確認する。このステップＳ２２において消去処理フラグが０である場合は、ステップＳ２７に進む。ステップＳ２７において、ＭＰＵ４は、消去処理フラグを１にしてＤに続くステップＳ４４に進み、一連のウェアレベリング処理を終了させる。
【００８３】
一方、このステップＳ２２において消去処理フラグが１である場合は、ステップＳ２３に進む。ステップＳ２３において、ＭＰＵ４は、ウェアレベリング処理中フラグを１にし、その後ステップＳ２４においてデータの書き込みにより消去が行われた物理ブロックのウェアレベリング処理中フラグを１にし、ステップＳ２８に進む。
【００８４】
半導体記憶装置１では、例えばデータの書き込み処理等、他のデータ処理がなされた場合にデータの書き込み処理を物理ブロック単位に分割し、物理ブロック単位での書き込み処理が終わる度にウェアレベリング処理を行う。
【００８５】
ステップＳ２５において、ＭＰＵ４は、ウェアレベリング処理を行う物理ブロックに書き込みによる消去処理が発生したか否かを確認する。このステップＳ２５において、ＭＰＵ４は、ウェアレベリング処理を行う物理ブロックに書き込みによる消去処理が発生したことを確認した場合にはステップＳ４３に進み、ウェアレベリング処理を行う物理ブロックに書き込みによる消去処理が発生していないことを確認した場合にはステップＳ２６に進む。
【００８６】
ステップＳ２６において、ＭＰＵ４は、ステップＳ２８〜ステップＳ３４の処理を行うケース１、ステップＳ３５〜ステップＳ３７の処理を行うケース２、ステップＳ３８〜ステップＳ４２の処理を行うケース３の何れの時点でウェアレベリング処理途中であるかを示すウェアレベリング処理進捗情報に基づいて、ケース１、ケース２、又はケース３の何れの処理工程に進む。このウェアレベリング処理進捗情報は、続く処理工程が何れであるかを示すようにケース１、ケース２、又はケース３に設定されている。
【００８７】
ステップＳ２６の後、ケース１に進む場合、Ｂに続くステップＳ２８において、ＭＰＵ４は、セグメント内においてウェアレベリング処理フラグ０の物理ブロックを検索する。
【００８８】
ステップＳ２９において、ＭＰＵ４は、セグメント内の全ての物理ブロックに対応付けられたウェアレベリング処理フラグが１であるか否かを確認する。このステップＳ２９において、ＭＰＵ４は、セグメント内の全ての物理ブロックに対応付けられたウェアレベリング処理フラグが１である、すなわち、ウェアレベリング処理フラグ０が付された物理ブロックがないことを確認した場合はステップＳ３０に進み、消去処理フラグ０が付された物理ブロックがあることを確認した場合はステップＳ３３に進む。
【００８９】
ステップＳ３０において、ＭＰＵ４は、セグメント内の全物理ブロックに対してウェアレベリング処理フラグを０に設定し、ステップＳ３１に進む。
【００９０】
ステップＳ３１において、ＭＰＵ４は、セグメント内の全物理ブロックに対して消去処理フラグを０に設定しステップＳ３２に進む。
【００９１】
ステップＳ３２において、ＭＰＵ４は、ウェアレベリング処理中フラグを０に設定し、Ｃに続くステップＳ４４に進む。
【００９２】
ステップＳ３３において、ＭＰＵ４は、ウェアレベリング処理進捗情報をケース２に設定してステップＳ３４に進む。
【００９３】
ステップＳ３４において、ＭＰＵ４は、ウェアレベリング処理用ブロックアドレスにウェアレベリング対象の物理ブロックのアドレスを対応付ける。
【００９４】
ステップＳ２６の後、ケース２に進む場合、ステップＳ３５において、ＭＰＵ４は、この消去処理フラグ０が対応付けられた物理ブロックに記憶されている１ページ分のデータをウェアレベリング処理用ブロックにコピーする。
【００９５】
ステップＳ３６において、データを１つの物理ブロック分だけコピーし終えたか否かを確認する。このステップＳ３６において、ＭＰＵ４は、１つの物理ブロック分のデータをコピーし終えたことを確認した場合はステップＳ３７に進み、１つの物理ブロック分のデータをコピーし終えていないことを確認した場合はステップＳ４４に進む。
【００９６】
ステップＳ３７において、ＭＰＵ４は、ウェアレベリング処理進捗情報をケース３に設定してステップＳ４４に進む。なお、このケース２では、ステップＳ３５において物理ブロックのデータが１ページずつコピーされるが、各物理ブロックに６４ページ分のデータが記憶されるとすると、このケース２を経由する一連のウェアレベリング処理は、６４回繰り返されることになる。
【００９７】
ステップＳ２６の後、ケース３に進む場合、ステップＳ３８において、ＭＰＵ４は、ウェアレベリング処理フラグ０が付された物理ブロックに記憶されているデータを消去する。
【００９８】
ステップＳ３９において、ＭＰＵ４は、ウェアレベリング処理進捗情報をケース１に設定してステップＳ４０に進む。
【００９９】
ステップＳ４０において、ＭＰＵ４は、消去処理フラグを１に設定し、ステップＳ４１に進む。
【０１００】
ステップＳ４１において、ＭＰＵ４は、ウェアレベリング処理フラグを１に設定し、ステップＳ４２に進む。
【０１０１】
ステップＳ４２において、ＭＰＵ４は、ウェアレベリング処理用ブロックに設定されている物理アドレスの設定をクリアする。なお、このウェアレベリング処理は、セグメントを構成する全ての物理ブロックにおいてウェアレベリング処理フラグが１になった時点で終了する。
【０１０２】
ステップＳ４３において、ＭＰＵ４は、ウェアレベリング処理を中断する。このステップＳ４３の処理の詳細については、図１１のフローチャートを参照しながら説明する。
【０１０３】
ステップＳ４３０において、ＭＰＵ４は、セグメント内のウェアレベリング中断処理を開始する。
【０１０４】
ステップＳ４３１において、ＭＰＵ４は、ウェアレベリング処理進捗情報を確認する。ステップＳ２６の後、ケース２またはケース３に進む場合、ステップＳ４３１からステップＳ４３２に進み、ＭＰＵ４は、ウェアレベリング処理用ブロックアドレスの物理ブロックに記憶されているデータを消去し、その後ステップＳ４３３に進む。また、ステップＳ２６の後、ケース１に進む場合、ステップＳ４３１からステップＳ４３３に進む。
【０１０５】
ステップＳ４３３において、ＭＰＵ４は、消去処理フラグを１に設定する。
【０１０６】
ステップＳ４３４において、ＭＰＵ４は、ウェアレベリング処理フラグを１に設定する。
【０１０７】
ステップＳ４３５において、ＭＰＵ４は、ウェアレベリング処理用ブロックに設定されている物理アドレスの設定をクリアする。
【０１０８】
ステップＳ４３６において、ＭＰＵ４は、ウェアレベリング処理進捗情報をケース１に設定する。
【０１０９】
ステップＳ４３７において、ＭＰＵ４は、ウェアレベリング中断処理を終了する。
【０１１０】
ステップＳ４４において、一連のウェアレベリング処理は終了される。
【０１１１】
図９に戻り、ステップＳ９において、ＭＰＵ４は、更新された管理情報を管理エリアに保存する。
【０１１２】
ステップＳ１０において、ＭＰＵ４は、一連のデータ更新処理を終了する。
【０１１３】
このように、半導体記憶装置１では、不揮発性メモリ２Ａの物理空間においてデータの書き込み頻度を分散させるように、具体的には、セグメント毎の外部機器からのデータの書き込み頻度が均一になるように物理アドレスと論理アドレスとを対応付けることにより、データの更新処理に伴うウェアレベリング処理をより高精度に実現できる。これにより、半導体記憶装置１では、不揮発性メモリの各物理ブロックに対する負荷をより均一化することが可能となる。
【０１１４】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１１５】
例えば、上述の実施の形態では、一連のウェアレベリング処理を実行する手段として、ＭＰＵ４を適用したが、本発明は、これに限らず、その他種々の構成を適用することが可能である。
【産業上の利用可能性】
【０１１６】
本発明は、不揮発性メモリを有する半導体記憶装置等に利用することが可能である。
【図面の簡単な説明】
【０１１７】
【図１】本実施の形態における半導体記憶装置の構成を示す図である。
【図２】半導体記憶装置が備える不揮発性メモリの概略構成を示す図である。
【図３】半導体記憶装置が備える不揮発性メモリの概略構成を示す図である。
【図４】半導体記憶装置１における論理ブロックに対する論理アドレスの割り当て方法の一例を説明するための図である。
【図５】論理物理変換テーブルが管理する１セグメント当たりの物理空間と、この物理空間に対応する論理空間との関係を示す図である。
【図６】データの更新処理の一例を説明するための図である。
【図７】ウェアレベリング処理の一例を説明するための図である。
【図８】セグメント内において消去処理フラグ０が付された物理ブロックを検索する方法の一例を説明するための図である。
【図９】不揮発性メモリのセグメント内の物理ブロックの更新処理の処理動作を説明するためのフローチャートである。
【図１０Ａ】ウェアレベリング処理の処理動作の詳細について説明するためのフローチャートである。
【図１０Ｂ】ウェアレベリング処理の処理動作の詳細について説明するためのフローチャートである。
【図１１】ウェアレベリング処理の中断処理の動作について説明するためのフローチャートである。
【図１２】従来の書き込み処理の一例を説明するための図である。
【図１３】従来の書き込み処理の一例を説明するための図である。
【符号の説明】
【０１１８】
１  半導体記憶装置、２  不揮発性メモリ、３  コントローラ、４  ＭＰＵ、５  レジスタ、６  ＥＣＣ、７  ＲＡＭ、８  データバッファ、９  クロック生成部、１０  バス、１１  シリアルＩ／Ｆ、１２  パラレルＩ／Ｆ
【図１】
2008191855.tif 000003
【図２】
2008191855.tif 000004
【図３】
2008191855.tif 000005
【図４】
2008191855.tif 000006
【図５】
2008191855.tif 000007
【図６】
2008191855.tif 000008
【図７】
2008191855.tif 000009
【図８】
2008191855.tif 000010
【図９】
2008191855.tif 000011
【図１０Ａ】
2008191855.tif 000012
【図１０Ｂ】
2008191855.tif 000013
【図１１】
2008191855.tif 000014
【図１２】
2008191855.tif 000015
【図１３】
2008191855.tif 000016