(57)【要約】【課題】  格段と簡易な構成で不揮発性メモリの各ブロックに対する負荷をより均一化し得るようにする。【解決手段】  不揮発性メモリ２Ａの各ブロックＢＫに対応付けられた、データ消去処理が実行されたか否かを「０」及び「１」により示す消去処理状況情報に基づいて、未だデータ消去処理されていないブロックＢＫ１を認識し、当該認識したブロックＢＫ１に記憶されているデータを、他のブロックＢＫ０へ移動させるようにしたことにより、データ消去処理されないために同じデータが記憶されたままになっているブロックＢＫ（不動ブロック）を減らすことができる。【選択図】          図２
2006018893.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するためのブロックを複数有し、各上記ブロックに対しデータ消去処理が実行されたか否かを示す消去処理状況情報が対応付けられる不揮発性メモリと、
データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックに記憶されているデータを他の上記ブロックに移動させるデータ移動処理を実行するデータ移動手段と
を具えることを特徴とする半導体記憶装置。
【請求項２】
上記他のブロックは、データ消去処理が実行された旨の上記消去処理状況情報が対応付けられてなる
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
上記データ移動処理では、上記不揮発性メモリの何れかの上記ブロックに対してデータを書き込む処理が実行される度に、データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックに記憶されているデータを、所定量ずつ上記他のブロックに移動させる
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
上記データ移動手段は、データ消去処理が実行された旨の上記消去処理状況情報が対応付けられている上記ブロックに対してデータ消去処理が再度実行された場合に、上記データ移動処理を開始する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項５】
上記データ移動手段は、各上記ブロックに対応付けられている全ての上記消去処理状況情報においてデータ消去処理が実行された旨が示されるまで、上記データ移動処理を実行する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項６】
上記全ての消去処理状況情報においてデータ消去処理が実行された旨が示されたとき、データ消去処理が実行されていない旨を示すように当該全ての消去処理状況情報を更新する更新手段
を具えることを特徴とする請求項５に記載の半導体記憶装置。
【請求項７】
データを記憶するためのブロックを複数有し各上記ブロックに対しデータ消去処理が実行されたか否かを示す消去処理状況情報が対応付けられる不揮発性メモリの上記ブロックの中から、データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックを認識する第１のステップと、
上記認識したブロックに記憶されているデータを他の上記ブロックに移動させるデータ移動処理を実行する第２のステップと
を具えることを特徴とする半導体記憶装置のデータ移動方法。
【請求項８】
上記他のブロックは、データ消去処理が実行された旨の上記消去処理状況情報が対応付けられてなる
ことを特徴とする請求項７に記載の半導体記憶装置のデータ移動方法。
【請求項９】
上記データ移動処理では、上記不揮発性メモリの何れかの上記ブロックに対してデータを書き込む処理が実行される度に、データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックに記憶されているデータを、所定量ずつ上記他のブロックに移動させる
ことを特徴とする請求項７に記載の半導体記憶装置のデータ移動方法。
【請求項１０】
上記第２のステップでは、データ消去処理が実行された旨の上記消去処理状況情報が対応付けられている上記ブロックに対してデータ消去処理が再度実行された場合に、上記データ移動処理を開始する
ことを特徴とする請求項７に記載の半導体記憶装置のデータ移動方法。
【請求項１１】
上記第２のステップでは、各上記ブロックに対応付けられている全ての上記消去処理状況情報においてデータ消去処理が実行された旨が示されるまで、上記データ移動処理を実行する
ことを特徴とする請求項７に記載の半導体記憶装置のデータ移動方法。
【請求項１２】
上記全ての消去処理状況情報においてデータ消去処理が実行された旨が示されたとき、データ消去処理が実行されていない旨を示すように当該全ての消去処理状況情報を更新する
ことを特徴とする請求項１１に記載の半導体記憶装置のデータ移動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体記憶装置及びそのデータ移動方法に関し、特に不揮発性メモリ（フラッシュメモリ）の各ブロックに対する負荷を均一化する場合に適用して好適なものである。
【背景技術】
【０００２】
近年の半導体記憶装置においては、その内部に不揮発性メモリを有しているものがある。この種の不揮発性メモリは、データ記憶領域が複数のブロックに分割されており、ブロックごとにデータの書き込みや消去が行われる。
【０００３】
ところで一般的に不揮発性メモリにおいては、各ブロックに対するデータの消去回数に上限が設けられており、この上限を超えたブロックはデータを記憶し得ない不良ブロックとして扱われる。そしてこのような不揮発性メモリは、不良ブロックの数が所定数以上になってしまうと、製品上の仕様により寿命が尽きたものとされ、使用不可能になってしまう。
【０００４】
従って不揮発性メモリにおいては、ある特定ブロックばかりにデータの書き込みや消去が行われ、これにより当該特定ブロックの消去回数のみが増加するようになると、この特定ブロックが他のブロックよりも早く不良ブロックになってしまう。そしてこのようにして生じる不良ブロックの数が所定数以上になってしまうと、消去回数が少なく未だデータを記憶することができるブロックを数多く残しているのにも関わらず、不揮発性メモリが使用不可能になってしまう場合があった。
【０００５】
この問題を解決するために、例えば次のような手法（以下、これを第１の手法と呼ぶ）が提案されている。すなわち第１の手法が適用された半導体記憶装置においては、ブロックごとにデータの消去回数をカウントし、この結果を消去管理テーブルに記して管理する。そしてこの半導体記憶装置は、消去管理テーブルを適宜参照することにより所定の規定回数に達したブロックを発見すると、当該消去管理テーブルに記された全ブロックの消去回数を参照することにより、消去回数が最も少ないブロックを特定する。次いでこの半導体記憶装置は、規定回数に達したブロックに記憶されているデータを、当該特定した消去回数が最も少ないブロックへ移動させる。このようにしてこの第１の手法では、不揮発性メモリの各ブロックに対する負荷を均一化（いわゆるウェアレベルリング（Wear Leveling））することにより、不揮発性メモリの使用可能期間を向上させることができる（特許文献１参照）。
【特許文献１】特開２００３−２０３０１６（第５頁）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで第１の手法が適用された半導体記憶装置は、消去管理テーブルに対しブロックごとの消去回数（例えば1000回等）を記すので、当該消去管理テーブルのデータ量が大きくなってしまう上、上述したようにウェアレベルリングする際、消去管理テーブルに記された全ブロックの消去回数を参照するような処理を実行しなければならず、従ってその構成が簡易であるとは言い難かった。
【０００７】
一方、従来の半導体記憶装置においては、第１の手法と異なる次のような手法（以下、これを第２の手法と呼ぶ）も採用されている。以下に説明するこの第２の手法は、消去管理テーブル等を必要とせず、かくして半導体記憶装置の構成を簡易化し得るものである。
【０００８】
ここでは図４及び図５を用いて、この第２の手法を説明する。図４（Ａ）〜（Ｅ）においては、不揮発性メモリ中の１つのセグメントＳＧＸを簡略化して示している。実際上この１セグメントＳＧＸは、例えば５１２個のブロックＢＫ（ＢＫ０、ＢＫ１、……）を有し、各ブロックＢＫには、例えば６４ページ分のデータが記憶され得るようになされている（例えば１ページが２[Kbyte]に相当）。
【０００９】
因みにこの図４及び図５においては、データを記憶しているブロックＢＫに斜線を施すと共に、データ消去処理が実行されたブロックＢＫに網掛けを施しており、またデータ消去処理の回数が多いブロックＢＫほど施す網掛けを密にした。
【００１０】
第２の手法が適用された半導体記憶装置は、図４（Ａ）に示すように、外部から供給されるデータを、データが書き込まれていない空ブロックＢＫ０、ＢＫ１、……に順次書き込んでいく。
【００１１】
やがて外部から、例えばブロックＢＫ６に記憶されている６４ページ分のデータのうちの一部のデータを更新する更新データが、この半導体記憶装置に対して供給されたとする（図４（Ｂ））。
【００１２】
このときこの半導体記憶装置は、ブロックＢＫ６に記憶されているデータのうち当該更新データの更新対象でないデータ（以下、これを「更新対象外データ」と呼ぶ）を読み出し、当該読み出した更新対象外データとかかる更新データとを、このセグメントＳＧＸ中の所定部分に確保されている空ブロックＢＫ２１に対して書き込む（図４（Ｃ）中の（ａ））。そしてこの半導体記憶装置は、ブロックＢＫ６に記憶されている古いデータを全て消去する（図４（Ｃ）中の（ｂ））。この後外部から、例えばブロックＢＫ３に記憶されているデータのうちの一部を更新する更新データが半導体記憶装置に対して供給されたときも、この半導体記憶装置は同様の処理（図４（Ｄ）中の（ｃ）及び（ｄ））を実行する。
【００１３】
このように第２の手法が適用された半導体記憶装置は、例えばブロックＢＫ６に記憶されているデータの一部を更新する際、このブロックＢＫ６に一緒に記憶されていたデータを全て他のブロックＢＫ２１へ移動するようにしたことにより、ブロックＢＫ６ばかりにデータの書込み処理や消去が行われてしまうことをある程度回避することができる。
【００１４】
次に図５を用いて、この第２の手法におけるデータの書き込み処理の様子を詳細に説明する。実際上このような半導体記憶装置は、論理アドレスと各ブロックＢＫに割り当てられた物理アドレスとを対応付けてなるテーブル（以下、これを論物変換テーブル）を有しており、これによりこれまで書き込んだ各データの記憶位置を管理している。
【００１５】
ここで図５（Ａ）に示すような状態において、外部から、例えば論理アドレス＃０に対応するブロックＢＫ０に記憶されているデータの一部を更新するための更新データが供給されると、このとき半導体記憶装置は、論物変換テーブルを参照することにより論理アドレス＃０に対応する物理アドレス＃０を認識する。そしてこの半導体記憶装置は、当該認識した物理アドレス＃０に基づいてブロックＢＫ０にアクセスし、当該アクセスしたブロックＢＫ０に記憶されているデータのうち当該更新データの更新対象でない更新対象外データを読み出し、当該読み出した更新対象外データとかかる更新データとを、このセグメントＳＧＸ中の空ブロックＢＫ３に対して書き込む（図５（Ｂ））。続いて半導体記憶装置は、ブロックＢＫ０に記憶されている古いデータを全て消去すると共に、論理アドレス＃０とブロックＢＫ３の物理アドレス＃３とを対応付けるようにして論物変換テーブルを更新する。
【００１６】
この後さらに外部から、論理アドレス＃０に対応するブロックＢＫ３に記憶されているデータの一部を更新するための更新データが供給されると、このとき半導体記憶装置は、論物変換テーブルを参照することにより論理アドレス＃０に対応する物理アドレス＃３を認識する。そしてこの半導体記憶装置は、当該認識した物理アドレス＃３に基づいてブロックＢＫ３にアクセスし、当該アクセスしたブロックＢＫ３に記憶されているデータのうち当該更新データの更新対象でない更新対象外データを読み出し、当該読み出した更新対象外データとかかる更新データとを、このセグメントＳＧＸ中の空ブロックＢＫ６に対して書き込む（図５（Ｃ））。続いて半導体記憶装置は、ブロックＢＫ３に記憶されている古いデータを全て消去すると共に、論理アドレス＃０とブロックＢＫ６の物理アドレス＃６とを対応付けるようにして論物変換テーブルを更新する。
【００１７】
かくしてこの第２の手法が適用された半導体記憶装置では、例えば論理アドレス＃０に対応するデータばかりが頻繁に更新される場合であって、この他の論理アドレスに対応するデータがほとんど更新されない場合、図５（Ｄ）に示すように、データ消去処理の実行されるブロックＢＫがある程度固定されてしまう（この場合、ブロックＢＫ０、ＢＫ３、ＢＫ６、ＢＫ１０、ＢＫ１３、ＢＫ１９）。
【００１８】
この結果不揮発性メモリにおいては、データ消去処理されないために同じデータが記憶されたままになってしまうブロックＢＫ（いわゆる不動ブロック）が数多く発生してしまうことになる。
【００１９】
そしてこのように不動ブロックが数多く発生してしまった場合、不揮発性メモリの各ブロックＢＫに対する負荷が偏ってしまっている状態になっているので、不揮発性メモリの使用可能期間を向上させることが難しくなってしまう。
【００２０】
このように第２の手法を適用した半導体記憶装置は、消去管理テーブル等を保持する必要が無いので、第１の手法を適用した場合と比べてその構成を簡易化し得るものの、不揮発性メモリの各ブロックＢＫに対する負荷を十分に均一化することができないという問題があった。
【００２１】
本発明は以上の点を考慮してなされたもので、格段と簡易な構成で不揮発性メモリの各ブロックに対する負荷をより均一化し得る半導体記憶装置及びそのデータ移動方法を提案しようとするものである。
【課題を解決するための手段】
【００２２】
かかる課題を解決するため本発明においては、半導体記憶装置において、データを記憶するためのブロックを複数有し、各上記ブロックに対しデータ消去処理が実行されたか否かを示す消去処理状況情報が対応付けられる不揮発性メモリと、データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックに記憶されているデータを他の上記ブロックに移動させるデータ移動処理を実行するデータ移動手段とを設けるようにした。
【００２３】
また本発明においては、半導体記憶装置のデータ移動方法において、データを記憶するためのブロックを複数有し各上記ブロックに対しデータ消去処理が実行されたか否かを示す消去処理状況情報が対応付けられる不揮発性メモリの上記ブロックの中から、データ消去処理が実行されていない旨の上記消去処理状況情報が対応付けられた上記ブロックを認識する第１のステップと、上記認識したブロックに記憶されているデータを他の上記ブロックに移動させるデータ移動処理を実行する第２のステップとを設けるようにした。
【００２４】
このようにして、データ消去処理されていないブロックに記憶されているデータを、他のブロックへ移動させるようにしたことにより、データ消去処理されないために同じデータが記憶されたままになっているブロックを減らすことができる。
【発明の効果】
【００２５】
本発明によれば、データ消去処理されていないブロックに記憶されているデータを、他のブロックへ移動させるようにしたことにより、データ消去処理されないために同じデータが記憶されたままになっているブロックを減らすことができる。この結果、消去管理テーブル等を保持する必要なく格段と簡易な構成で、不揮発性メモリの各ブロックに対する負荷をより均一化することができる。
【発明を実施するための最良の形態】
【００２６】
以下図面について、本発明の一実施の形態を詳述する。
【００２７】
（１）半導体記憶装置の構成
図１において、１は全体としてカード型の半導体記憶装置を示し、複数の不揮発性メモリ２Ａ、……からなるメモリ部２と、当該メモリ部２を制御するコントローラ部３とを有している。なお以下では説明の便宜上、複数の不揮発性メモリ２Ａ、……のうちの不揮発性メモリ２Ａを中心に説明する。
【００２８】
因みに本実施の形態の場合、このカード型の半導体記憶装置１はメモリスティック（登録商標）に相当し、例えばパーソナルコンピュータ等の外部機器から供給されるデータが書き込まれる。
【００２９】
コントローラ部３において、制御を司るＭＰＵ（Micro Processing Unit）４に対しては、命令レジスタ等からなるレジスタ部５と、誤り訂正処理等を実行するＥＣＣ（Error Correcting Circuit）部６と、不揮発性メモリ２Ａに対して読み書きされるデータが一時蓄積されるデータバッファ部７とが接続される。またこのコントローラ部３は、ＭＳ内部クロック（メモリスティック内部クロック）を生成するためのクロック生成部８を有している。
【００３０】
データバッファ部７は、所定のバス９を介して、シリアルインターフェース部１０及びパラレルインターフェース部１１と接続される。外部機器からのデータは、所定ライン（DATA0〜DATA3）及びパラレルインターフェース部１１、（DATA0）及びシリアルインターフェース部１０を順次介してデータバッファ部７へ入力され、ＭＰＵ４は、このデータバッファ部７に入力されたデータを、不揮発性メモリ２Ａに対して書き込むようになされている。
【００３１】
またこの半導体記憶装置１に対しては、所定ライン（VSS,VCC）を介して電源が供給される。またこの半導体記憶装置１は、外部機器からのデータを取り込むために必要となるクロックが入力されるライン（SCLK）や、外部機器に対してこの半導体記憶装置１が正常に装着されているか否かを判断するための信号が入力されるライン（INS）や、外部機器から供給されるデータの向きを判断するための信号が入力されるライン（BS）等も設けられている。
【００３２】
次に図２において、不揮発性メモリ２Ａ中の１つのセグメントＳＧを簡略化して示す。実際上このセグメントＳＧは、例えば５１２個のブロックＢＫ（ＢＫ０、ＢＫ１、……）を有し、各ブロックＢＫには、例えば６４ページ分のデータが記憶されるようになされている（例えば１ページが２[Kbyte]に相当）。
【００３３】
因みに図２においては、データを記憶しているブロックＢＫに斜線を施すと共に、データ消去処理が実行されたブロックＢＫに網掛けを施しており、またデータ消去処理の回数が多いブロックＢＫほど施す網掛けを密にした。
【００３４】
本実施の形態の場合、各ブロックＢＫに対しては、データが記憶されているか否かを示す記憶状況情報（erase status）が対応付けて記憶されている。ＭＰＵ４は、データが記憶されているブロックＢＫについては、そのブロックＢＫに対応する記憶状況情報を「０」に設定し、データが記憶されていないブロックＢＫについては、そのブロックＢＫに対応する記憶状況情報を「１」に設定する。
【００３５】
また本実施の形態の場合、各ブロックＢＫに対しては、データ消去処理が実行されたか否かを示す消去処理状況情報（wear status）が対応付けて記憶されている。本実施の形態の場合このＭＰＵ４は、消去処理状況情報を全て「１」にリセットするリセット時に、各ブロックＢＫに対応付けられている全ての消去処理状況情報を「１」に設定し、この後データ消去処理が実行されたブロックＢＫが現れる度に、そのブロックＢＫに対応する消去処理状況情報を「０」に設定するようになされている。
【００３６】
図２（Ａ）に示す状態において、半導体記憶装置１のＭＰＵ４は、例えば外部機器から、論理アドレス＃０に対応するブロックＢＫ１０に記憶されているデータの一部を更新するための更新データが供給されると、ＭＰＵ４内部のＲＡＭ（図示せず）に記憶されている論物変換テーブルを参照することにより、論理アドレス＃０に対応する物理アドレス＃１０を認識し、当該認識した物理アドレス＃１０に対応するブロックＢＫ１０にアクセスする。因みにこのブロックＢＫ１０に対しては、消去処理状況情報のリセット後既にデータ消去処理が実行されているので、対応する消去処理状況情報が「０」に設定されている。
【００３７】
そしてＭＰＵ４は、当該アクセスしたブロックＢＫ１０に記憶されているデータのうち当該更新データの更新対象でない更新対象外データを読み出し、当該読み出した更新対象外データとかかる更新データとを、同セグメントＳＧ中の空ブロックＢＫ１３（物理アドレス＃１３）に対して書き込む。
【００３８】
続いてＭＰＵ４は、論理アドレス＃０とブロックＢＫ１３の物理アドレス＃１３とを対応付けるようにして論物変換テーブルを更新すると共に、ブロックＢＫ１０に対してデータ消去処理を実行する。
【００３９】
このようにして、消去処理状況情報が「０」に設定されているブロックＢＫ１０（つまり、リセット後既にデータ消去処理が実行されたブロックＢＫ１０）に対してデータ消去処理を再度実行したとき、この半導体記憶装置１のＭＰＵ４は、このままでは特定のブロックＢＫ０、ＢＫ３、ＢＫ６、ＢＫ１０、ＢＫ１３、ＢＫ１９ばかりにデータ消去処理を実行してしまう可能性が高いと判断し、これを契機として、ウェアレベリング処理を実行するためのウェアレベリング実行モードへ移行する。
【００４０】
ウェアレベリング実行モードに移行したＭＰＵ４は、このセグメントＳＧ中の各ブロックＢＫに対応付けられている記憶状況情報及び消去処理状況情報を参照することにより、リセット以後未だデータ消去処理が実行されておらず且つ現在データを記憶している例えばブロックＢＫ１（以下適宜、これを未消去処理ブロックと呼ぶ）と、リセット以後既にデータ消去処理が実行されており且つ現在データを記憶していない例えばブロックＢＫ０（以下適宜、これを消去処理済ブロックと呼ぶ）とを認識する。
【００４１】
次いでＭＰＵ４は、認識した未消去処理ブロックＢＫ１に記憶されているデータのうちの1ページ分のデータを、認識した消去処理済ブロックＢＫ０へコピーする。さらにこの後ＭＰＵ４は、このセグメントＳＧ中の何れかのブロックＢＫに対して、外部機器からのデータを書き込む処理が実行される度に、未消去処理ブロックＢＫ１に記憶されている残りのデータを１ページ分ずつ、消去処理済ブロックＢＫ０へコピーする。そしてＭＰＵ４は、図２（Ｂ）に示すように、未消去処理ブロックＢＫ１に記憶されているデータの全てを消去処理済ブロックＢＫ０へコピーし終えると、この未消去処理ブロックＢＫ１に対してデータ消去処理を実行する。
【００４２】
このようにしてこの半導体記憶装置１においては、リセット以後未だデータ消去処理されていないブロックＢＫ１に記憶されているデータを、現在データを記憶保持していない消去処理済ブロックＢＫ０へ移動するようにした。これにより、データ消去処理されないために同じデータが記憶されたままになっている不動ブロック（この場合ブロックＢＫ１等）を減らすことができる。
【００４３】
この後ＭＰＵ４は、例えば図２（Ｂ）に示すような状態になっているとき、外部機器から、論理アドレス＃０に対応するブロックＢＫ１９に記憶中のデータを一部更新するための更新データが供給されると、当該ブロックＢＫ１９に記憶されているデータのうち当該更新データの更新対象でない更新対象外データを読み出し、当該読み出した更新対象外データとかかる更新データとを、例えばウェアレベリング処理によりデータが移動されたブロックＢＫ１へ書き込むことができる（図２（Ｃ））。かくしてこの半導体記憶装置１は、論理アドレス＃０に対応するデータを、特定のブロックＢＫ０、ＢＫ３、ＢＫ６、ＢＫ１０、ＢＫ１３、ＢＫ１９ばかりに書き込み続けてしまうことを回避することができる。
【００４４】
またこの後もＭＰＵ４は、このセグメントＳＧ中の各ブロックＢＫに対応付けられた全ての消去処理状況情報が「０」になるまで、上述のウェアレベリング処理を実行し続け、当該全ての消去処理状況情報が「０」になったとき、当該全ての消去処理状況情報を「１」にリセットし、ウェアレベリング処理を実行しないウェアレベリング非実行モードへ戻るようになされている。
【００４５】
次に図３に示すフローチャートを用いて、この半導体記憶装置１により実行されるデータ書き込み処理手順ＲＴ１を説明する。
【００４６】
すなわち半導体記憶装置１のＭＰＵ４は、例えば外部機器から、ブロックＢＫ１０（図２（Ａ））に記憶されている６４ページ分のデータのうちの一部のデータを更新する更新データが供給されると、データ書き込み処理手順ＲＴ１をステップＳＰ１から開始する。
【００４７】
ステップＳＰ１においてＭＰＵ４は、ブロックＢＫ１０に記憶されているデータのうち当該更新データの更新対象でない更新対象外データを読み出し、当該読み出した更新対象外データとかかる更新データとを、同セグメントＳＧ中の空ブロックＢＫ１３に対して書き込む。
【００４８】
次いでＭＰＵ４はステップＳＰ２において、ブロックＢＫ１０に対してデータ消去処理を実行する。
【００４９】
続いてＭＰＵ４はステップＳＰ３へ移り、現在、ウェアレベリング実行モードになっているか否かを判定する。この場合このＭＰＵ４は、ウェアレベリング実行モードに未だ遷移していないので、このステップＳＰ３で否定結果を得て、次のステップＳＰ４へ移る。これに対しこのＭＰＵ４は、例えばウェアレベリング実行モードに遷移している場合、このステップＳＰ３で肯定結果を得て、後述のステップＳＰ５へ移りウェアレベリング処理を実行するようになされている。
【００５０】
ステップＳＰ４においてＭＰＵ４は、ステップＳＰ２でデータ消去処理したブロックＢＫ１０の消去処理状況情報が、そのデータ消去処理をする前に「０」に設定されていたか否かを判定する。この場合ここで肯定結果が得られるので、ＭＰＵ４はウェアレベリング実行モードに遷移し、続くステップＳＰ５へ移ってウェアレベリング処理を開始する。
【００５１】
因みに、ステップＳＰ２でデータ消去処理したブロックＢＫ１０の消去処理状況情報が、そのデータ消去処理をする前「１」に設定されていた場合、ＭＰＵ４はこのステップＳＰ４で否定結果を得て、後述のステップＳＰ９へ移るようになされている。
【００５２】
ステップＳＰ５においてＭＰＵ４は、例えば図２（Ａ）に示すセグメントＳＧ中の各ブロックＢＫに対応付けられた消去処理状況情報を参照し、これにより消去処理状況情報「１」が対応付けられているブロックＢＫを認識できたか否かを判定する。この場合ＭＰＵ４は、消去処理状況情報「１」が対応付けられているブロック（上述の未消去処理ブロック）ＢＫ１を認識し、この結果ステップＳＰ５において肯定結果を得て、続くステップＳＰ６へ移る。
【００５３】
これに対しＭＰＵ４は、例えば消去処理状況情報「１」が対応付けられているブロックＢＫを１つも認識し得なかった場合、ステップＳＰ５で否定結果を得てステップＳＰ１１へ移り、セグメントＳＧ中の各ブロックＢＫに対応付けられた全ての消去処理状況情報を「０」から「１」へリセットすると共に、ウェアレベリング非実行モードに遷移するようになされている。
【００５４】
ステップＳＰ６においてＭＰＵ４は、ステップＳＰ５で認識したブロックＢＫ１に記憶されているデータの１ページ分を、例えば現在データが記憶されていない他のブロック（上述の消去処理済ブロック）ＢＫ０へコピーする。
【００５５】
続いてＭＰＵ４はステップＳＰ７へ移り、ブロックＢＫ１に記憶されている全てのデータをブロックＢＫ０へコピーし終えたか否かを判定する。ここで例えば肯定結果が得られると、このことは、図２（Ｂ）に示すように、ブロックＢＫ１に記憶されているデータの全てをブロックＢＫ０へコピーし終えたことを意味しているので、このときＭＰＵ４は続くステップＳＰ８へ移り、ブロックＢＫ１に記憶されている古いデータを消去するデータ消去処理を実行すると共に、当該ブロックＢＫ１の消去処理状況情報を「０」に変更し、続くステップＳＰ９へ移る。
【００５６】
これに対しこのステップＳＰ７において例えば否定結果が得られると、このことは、ブロックＢＫ１に記憶されているデータの全てを他のブロックＢＫ０へコピーし終えていないことを意味しているので、このときＭＰＵ４はステップＳＰ８をスキップし、ステップＳＰ９以降の処理を順次実行するようになされている。
【００５７】
ステップＳＰ９においてＭＰＵ４は、論物変換テーブルの更新処理（ＢＭＡＰ更新処理）を実行し、次のステップＳＰ１０へ移る。この論物変換テーブルの更新処理では、例えば、ステップＳＰ１及びＳＰ２の処理によりブロックＢＫ１０のデータがブロックＢＫ１３に移動したことに伴う、論理アドレス及び物理アドレスの対応付けの更新を行う。
【００５８】
ところで本実施の形態の場合、この半導体記憶装置１は、同じ論物変換テーブルを２つ保持している。すなわち、１つ目の論物変換テーブルはステップＳＰ９で更新されるものであり、当該１つ目の論物変換テーブルのダミーとして設けられている２つ目の論物変換テーブルは、当該１つ目の論物変換テーブルに対する更新が正常に行われたか否かを確認する際に用いられるものである。またこの半導体記憶装置１は、不揮発性メモリ２Ａ中のシステムエリアを管理するための管理情報が書き込まれた管理用テーブルも保持している。この管理用テーブルには、論物変換テーブルの記憶場所を示すアドレス等も書き込まれる。
【００５９】
ステップＳＰ１０においてＭＰＵ４は、２つ目の論物変換テーブルを更新する更新処理（ＤＵＭＭＹ更新処理）を実行すると共に、必要に応じて管理用テーブルを更新する更新処理（ＳＭＡＰ更新処理）を実行し、終了ステップＳＰ１２へ移ってデータ書き込み処理手順ＲＴ１を終了する。この後さらに外部機器から、例えばこのセグメントＳＧ中の何れかのブロックＢＫに記憶されているデータを更新するための更新データが供給されると、半導体記憶装置１は、このデータ書き込み処理手順ＲＴ１をステップＳＰ１から再度開始するようになされている。
【００６０】
（２）動作及び効果
以上の構成においてこの半導体記憶装置１は、消去処理状況情報のリセット後既にデータ消去処理が実行されたブロックＢＫ１０（図２（Ａ））に対して、データ消去処理が再度実行されたとき、ウェアレベリング処理を開始する。
【００６１】
このウェアレベリング処理では、このセグメントＳＧ中の各ブロックＢＫに対応付けられて記憶されている消去処理状況情報に基づいて、リセット以後未だデータ消去処理されていない例えばブロックＢＫ１を認識し、当該認識したブロックＢＫ１に記憶されているデータを、現在データが記憶されていない他のブロックＢＫ０へ移動させるようにした。
【００６２】
これにより、データ消去処理されないために同じデータが記憶されたままになっているブロックＢＫ（不動ブロック）を確実に減らすことができる。
【００６３】
またこの半導体記憶装置１においては、各ブロックＢＫに対しそれぞれ消去処理状況情報が記憶させているが、この消去処理状況情報は、データ消去処理が実行されたか否かのみを示すだけなので１ブロックＢＫごとに１ビット（「０」及び「１」のみ）の情報量で済み、この結果、消去管理テーブル等を保持しなければならない従来構成と比べて構成を格段と簡易化することができる。
【００６４】
以上の構成によれば、不揮発性メモリ２Ａの各ブロックＢＫに対応付けられた、データ消去処理が実行されたか否かを「０」及び「１」により示す消去処理状況情報に基づいて、未だデータ消去処理されていないブロックＢＫ１を認識し、当該認識したブロックＢＫ１に記憶されているデータを、他のブロックＢＫ０へ移動させるようにしたことにより、データ消去処理されないために同じデータが記憶されたままになっているブロックＢＫ（不動ブロック）を減らすことができ、かくして格段と簡易な構成で不揮発性メモリ２Ａの各ブロックＢＫに対する負荷をより均一化することができる半導体記憶装置１を実現することができる。
【００６５】
また本実施の形態の場合、図２（Ａ）に示すように、リセット以後未だデータ消去処理されていないブロック（未消去処理ブロック）ＢＫ１に記憶されている、更新される可能性の低いデータを、リセット以後既にデータ消去処理されたことのあるブロック（消去処理済ブロック）ＢＫ０へ移動するようにした。このようにして、既にデータ消去処理が何回も行われた可能性のある消去処理済ブロックＢＫ０に、更新される可能性の低いデータを記憶保持させれば、これ以降この消去処理済ブロックＢＫ０にデータ消去処理が集中してしまうことを回避することができ、かくして各ブロックＢＫに対する負荷を格段と確実に均一化することができる。
【００６６】
さらに本実施の形態の場合のウェアレベリング処理では、不揮発性メモリ２Ａの何れかのブロックＢＫに対してデータを書き込む処理が実行される度に、未消去処理ブロックＢＫ１に記憶されているデータを少しずつ（１ページ分ずつ）、消去処理済ブロックＢＫ０に移動させるようにした。これにより、未消去処理ブロックＢＫ１に記憶されているデータを消去処理済ブロックＢＫ０に移動させる処理に起因して、不揮発性メモリ２Ａに対するデータの書き込み処理が遅くなってしまうことを回避することができる。
【００６７】
ところで、本実施の形態の半導体記憶装置１に対し次のような試験を行ってその効果を確認した。すなわちこの試験では、不揮発性メモリ２Ａの全容量をデータで満たした後このデータを全て一旦消去し、次いでこの不揮発性メモリ２Ａの半分の容量をデータで再度満たした後これを消去する、という処理を繰り返し行った。この結果、従来の第２の手法を適用した半導体記憶装置では、不揮発性メモリ２Ａの全ブロックＢＫのうち約４０％が不動ブロックＢＫになってしまうところ、本実施の形態の半導体記憶装置１では、不動ブロックＢＫの数を約３％まで抑制することができた。また本実施の形態の半導体記憶装置１では、第２の手法を適用した場合と比べて、その寿命を約２５％向上させることができた。さらに本実施の形態の半導体記憶装置１では、上述したように、未消去処理ブロックＢＫ１に記憶されている全てのデータを１度に他のブロックＢＫ０へ移動させるのではなく、当該データを少しずつ他のブロックＢＫ０へ移動させるようにしたことにより、メディアとしてのパフォーマンス（更新データの書き込み処理速度等）への影響を、約１％未満に抑制することができた。
【００６８】
なお上述の実施の形態においては、データ消去処理が実行されていない旨の消去処理状況情報が対応付けられたブロックに記憶されているデータを他のブロックに移動させるデータ移動処理（ウェアレベリング処理）を実行するデータ移動手段として、ＭＰＵ４を適用する場合について述べたが、本発明はこれに限らず、この他種々の構成を適用することができる。
【産業上の利用可能性】
【００６９】
本発明は、不揮発性メモリを有する半導体記憶装置等に利用することができる。
【図面の簡単な説明】
【００７０】
【図１】本実施の形態におけるカード型の半導体記憶装置の構成を示す略線図である。
【図２】ウェアレベリング処理の様子を示す略線図である。
【図３】データ書き込み処理手順を示すフローチャートである。
【図４】従来の書き込み処理（１）を示す略線図である。
【図５】従来の書き込み処理（２）を示す略線図である。
【符号の説明】
【００７１】
１……半導体記憶装置、２……メモリ部、２Ａ……不揮発性メモリ、４……ＭＰＵ、ＢＫ……ブロック、ＳＧ……セグメント。
【図１】
2006018893.tif 000003
【図２】
2006018893.tif 000004
【図３】
2006018893.tif 000005
【図４】
2006018893.tif 000006
【図５】
2006018893.tif 000007