(57)【要約】【課題】効率の良いリフレッシュ処理を行うことが可能な半導体記憶装置の制御方法を提供する。【解決手段】半導体記憶装置の制御方法は、データ消去の単位であるブロックにデータを記憶する不揮発性メモリを備えた半導体記憶装置の制御方法であって、前記ブロックのうちから監視対象ブロックを選択し、前記監視対象ブロックに記憶されたデータの誤り数を監視する第１工程と、前記データの誤り数が所定の閾値以上である監視対象ブロックに対してリフレッシュを行う第２工程と、を含む。【選択図】図１
2010160816.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位であるブロックにデータを記憶する不揮発性メモリを備えた半導体記憶装置の制御方法であって、
前記ブロックのうちから監視対象ブロックを選択し、前記監視対象ブロックに記憶されたデータの誤り数を監視する第１工程と、
前記データの誤り数が所定の閾値以上である監視対象ブロックに対してリフレッシュを行う第２工程と、
を含むことを特徴とする半導体記憶装置の制御方法。
【請求項２】
前記第１工程は、
前記ブロックから読み出したデータの誤りを訂正する誤り訂正工程と、
前記誤り訂正工程で訂正したデータの誤り数を検出する誤り数検出工程と、
前記誤り数が所定の第１の閾値以上であるブロックをデータの誤り数を監視する監視対象ブロックとし、このブロックのデータを所定の間隔で読み出す監視工程と、
を含み、
前記第２工程は、
前記誤り数が前記第１の閾値よりも大きい所定の第２の閾値以上である前記監視対象ブロックに対してリフレッシュを行うこと、
を特徴とする請求項１に記載の半導体記憶装置の制御方法。
【請求項３】
前記監視対象ブロックのブロック番号を第１のテーブルに登録する工程を更に有し、
前記監視工程では、前記第１のテーブルを参照して前記監視対象ブロックのデータの誤り数を検出して監視すること、
を特徴とする請求項２に記載の半導体記憶装置の制御方法。
【請求項４】
リフレッシュが行われた前記監視対象ブロックの番号を前記第１のテーブルから消去する工程を更に有すること、
を特徴とする請求項３に記載の半導体記憶装置の制御方法。
【請求項５】
前記第１工程は、
前記ブロックから読み出したデータの誤りを訂正する誤り訂正工程と、
前記誤り訂正工程で訂正したデータの誤り数を検出する誤り数検出工程と、
前記ブロックから読み出したデータの読み出し量を検出するデータ読み出し量検出工程と、
前記データの読み出し量が所定の第３の閾値以上であるブロックをデータの誤り数を監視する監視対象ブロックとし、このブロックのデータを所定の間隔で読み出す監視工程と、
を含み、
前記第２工程は、
前記誤り数が所定の第２の閾値以上である前記監視対象ブロックのリフレッシュを行うこと、
を特徴とする請求項１に記載の半導体記憶装置の制御方法。
【請求項６】
前記監視対象ブロックのブロック番号を第１のテーブルに登録する工程を更に有し、
前記監視工程では、前記第１のテーブルを参照して前記監視対象ブロックのデータの誤り数を検出して監視すること、
を特徴とする請求項５に記載の半導体記憶装置の制御方法。
【請求項７】
リフレッシュが行われた前記監視対象ブロックの番号を前記第１のテーブルから消去する工程を更に有すること、
を特徴とする請求項６に記載の半導体記憶装置の制御方法。
【請求項８】
前記データの読み出し量を第２のテーブルに登録する工程を更に有し、
前記監視工程では、前記第２のテーブルを参照して前記ブロックを前記監視対象ブロックとして前記第１のテーブルに登録すること、
を特徴とする請求項６に記載の半導体記憶装置の制御方法。
【請求項９】
前記第１工程は、
前記ブロックから読み出したデータの誤りを訂正する誤り訂正工程と、
前記誤り訂正工程で訂正したデータの誤り数を検出する誤り数検出工程と、
前記ブロックへデータを書き込んでからの経過時間を検出する書き込み時刻検出工程と、
前記経過時間が所定の第４の閾値以上であるブロックをデータの誤り数を監視する監視対象ブロックとし、このブロックのデータを所定の間隔で読み出す監視工程と、
を含み、
前記第２工程は、
前記誤り数が所定の第２の閾値以上である前記監視対象ブロックのリフレッシュを行うこと、
を特徴とする請求項１に記載の半導体記憶装置の制御方法。
【請求項１０】
前記監視対象ブロックのブロック番号を第１のテーブルに登録する工程を更に有し、
前記監視工程では、前記第１のテーブルを参照して前記監視対象ブロックのデータの誤り数を検出して監視すること、
を特徴とする請求項９に記載の半導体記憶装置の制御方法。
【請求項１１】
リフレッシュが行われた前記監視対象ブロックの番号を前記第１のテーブルから消去する工程を更に有すること、
を特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１２】
前記ブロックへのデータの書き込み時刻を第３のテーブルに登録する工程を更に有し、
前記監視工程では、前記第３のテーブルを参照して前記経過時間を取得して前記ブロックを前記監視対象ブロックとして前記第１のテーブルに登録すること、
を特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１３】
前記第１工程は、
前記ブロックから読み出したデータの誤りを訂正する誤り訂正工程と、
前記誤り訂正手段で訂正したデータの誤り数を検出する誤り数検出工程と、
前記不揮発性メモリ上のブロックにデータを書き込んだ書き込み順序を検出する書き込み順序検出工程と、
前記書き込み順序が所定の第５の閾値以下であるブロックをデータの誤り数を監視する監視対象ブロックとし、このブロックのデータを所定の間隔で読み出す監視工程と、
を含み、
前記第２工程は、
前記誤り数が所定の第２の閾値以上である前記監視対象ブロックのリフレッシュを行うこと、
を特徴とする請求項１に記載の半導体記憶装置の制御方法。
【請求項１４】
前記監視対象ブロックのブロック番号を第１のテーブルに登録する工程を更に有し、
前記監視工程では、前記第１のテーブルを参照して前記監視対象ブロックのデータの誤り数を検出して監視すること、
を特徴とする請求項１３に記載の半導体記憶装置の制御方法。
【請求項１５】
リフレッシュが行われた前記監視対象ブロックの番号を前記第１のテーブルから消去する工程を更に有すること、
を特徴とする請求項１４に記載の半導体記憶装置の制御方法。
【請求項１６】
前記書き込み順序を第４のテーブルに登録する工程を更に有し、
前記監視工程では、前記第４のテーブルを参照して前記ブロックを前記監視対象ブロックとして前記第１のテーブルに登録すること、
を特徴とする請求項１４に記載の半導体記憶装置の制御方法。
【請求項１７】
前記第１のテーブルへの前記監視対象ブロックの登録順序を第５のテーブルに登録する工程を更に有し、
前記リフレッシュ工程では、前記第５のテーブルへの前記監視対象ブロックの登録数が所定の第６の閾値に達した場合に、前記第５のテーブルにおいて予め決められた登録順序の前記監視対象ブロックのリフレッシュを行うこと、
を特徴とする請求項３に記載の半導体記憶装置の制御方法。
【請求項１８】
前記リフレッシュ工程では、前記監視対象ブロックのうち前記登録順序の古い監視対象ブロックから先にリフレッシュを行うこと、
を特徴とする請求項１７に記載の半導体記憶装置の制御方法。
【請求項１９】
保持すべきデータが記憶されていない前記ブロックの番号を第６のテーブルに登録する工程を更に有し、
前記監視工程では、前記第６のテーブルへ登録された前記ブロックの番号を前記第１のテーブルから消去すること、
を特徴とする請求項３に記載の半導体記憶装置の制御方法。
【請求項２０】
前記第１のテーブルへ登録された前記監視対象ブロックの番号および該監視対象ブロックに記憶したデータで検出された誤り数を第７のテーブルに登録する工程を更に有し、
前記監視工程では、前記第７のテーブルに登録された誤り数に基づいて、前記第１のテーブルへ登録された前記監視対象ブロックについて前記所定の間隔を変更すること、
を特徴とする請求項３に記載の半導体記憶装置の制御方法。
【請求項２１】
前記監視工程では、前記第７のテーブルへ登録された前記監視対象ブロックのうち、誤り数が多い前記監視対象ブロックについては誤り数が少ない前記監視対象ブロックよりも前記所定の間隔を短くすること、
を特徴とする請求項２０に記載の半導体記憶装置の制御方法。
【請求項２２】
前記所定の間隔は、前記監視対象ブロックに記憶されたデータに前記第１の閾値を超えた誤りが発生してから、該監視対象ブロックのデータの誤りが前記誤り訂正手段の誤り訂正能力の上限に達するまでの時間よりも短いこと、
を特徴とする請求項２１に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置の制御方法に関するものであり、例えばＮＡＮＤ型フラッシュメモリを備えた半導体記憶装置のリフレッシュ方法に関するものである。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは電源供給を停止しても情報が保持可能である不揮発性メモリであり、他の不揮発性メモリよりもビット単価で優れているため大きく普及している。しかし、ＮＡＮＤ型フラッシュメモリでは、大容量化および高集積化に伴って、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブの影響が顕著化しており、保存したデータが劣化して記憶したデータを正しく再生できなくなる可能性が高まる、という問題が存在する。
【０００３】
経年変化は、時間経過と共に、電荷を蓄積したフローティングゲートから次第に電荷が抜けることでデータに誤りが生じる現象である。また、リードディスターブは、データを読み出したメモリセルに隣接したメモリセルのフローティングゲートに微量な電荷が蓄えられることによって、記憶したデータに誤りが生じる現象である。
【０００４】
経年変化とリードディスターブの問題は、発生したデータの誤りを訂正する誤り訂正符号（Error  Correcting  Code）を用いることで正しいデータを復元することが可能である。しかし、ＮＡＮＤ型フラッシュメモリ上のデータは誤ったままであるため、経年変化とリードディスターブがさらに進むことで、誤り訂正符号の訂正能力以上の誤りが発生した場合には、正しいデータを復元することができない。
【０００５】
そこで、記憶してあるデータを読み出して誤り訂正を行った後に再びＮＡＮＤ型フラッシュメモリへ書き直すリフレッシュ処理を行うことで、ＮＡＮＤ型フラッシュメモリ上へ記憶したデータが完全に破壊されることを防ぎ、データ保持期間を増加させることができる。
【０００６】
このようなリフレッシュ処理を行うことでＮＡＮＤ型フラッシュメモリ上へ記憶したデータのデータ保持期間を増加させる方法としては、例えば、ＮＡＮＤ型フラッシュメモリからの読み出し回数などを計測して規定の読み出し量に達した場合にリフレッシュ処理を実行する方法や、誤り数が増加した時にリフレッシュ処理を行う方法などが考えられる（たとえば、特許文献１参照）。
【０００７】
しかしながら、ＮＡＮＤ型フラッシュメモリでは、書き換え回数が少ないメモリセルではデータの誤りが発生しにくく、一定の決まった時間経過に伴って一律にデータの誤りが増加するわけではない。同様にＮＡＮＤ型フラッシュメモリでは、規定回数の読み出しを行うとデータの誤りが必ず増加するわけではない。したがって、実際のデータ破損状況を反映せずに読み出し回数などを利用して一律にリフレッシュ処理を行うことにより、データ破損の確率は減少するものの、不必要にリフレッシュ処理を行うことになる。
【０００８】
そして、ＮＡＮＤ型フラッシュメモリは書き換え回数に制限のあるデバイスであるため、不必要なリフレッシュ処理を行うことで、ＮＡＮＤ型フラッシュメモリの寿命を縮めるという問題がある。
【０００９】
一方で、データの破損状況を監視してリフレッシュ処理を行おうとすると、監視のためのメモリセル読み出し自体が誤り訂正処理を必要とするなど、計算量や電力消費が大きくなる、という問題がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−３２６８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、効率の良いリフレッシュ処理を行うことが可能な半導体記憶装置の制御方法を提供する。
【課題を解決するための手段】
【００１２】
本願発明の一態様によれば、データ消去の単位であるブロックにデータを記憶する不揮発性メモリを備えた半導体記憶装置の制御方法であって、前記ブロックのうちから監視対象ブロックを選択し、前記監視対象ブロックに記憶されたデータの誤り数を監視する第１工程と、前記データの誤り数が所定の閾値以上である監視対象ブロックに対してリフレッシュを行う第２工程と、を含むことを特徴とする半導体記憶装置の制御方法が提供される。
【発明の効果】
【００１３】
本発明によれば、効率の良いリフレッシュ処理を行うことが可能な半導体記憶装置の制御方法を提供できる。
【図面の簡単な説明】
【００１４】
【図１】この発明の一実施形態に従った半導体記憶装置の概略構成を示す図である。
【図２】この発明の一実施形態に従った半導体記憶装置の第１のテーブルの構成を説明するための図である。
【図３】この発明の一実施形態に従った半導体記憶装置の監視対象ブロックの選択処理を説明するためのフローチャートである。
【図４】この発明の一実施形態に従った半導体記憶装置の第１のテーブルへの監視対象ブロックの登録処理を説明するためのフローチャートである。
【図５】この発明の一実施形態に従った半導体記憶装置の第１のテーブルへのブロックの登録処理を説明するためのフローチャートである。
【図６】この発明の一実施形態に従った半導体記憶装置の第１のテーブルへ登録したブロックに対する誤り数の監視処理を説明するためのフローチャートである。
【図７】この発明の一実施形態に従った半導体記憶装置の第１のテーブルからのリフレッシュ処理したブロックの削除処理を説明するためのフローチャートである。
【図８】この発明の一実施形態に従った半導体記憶装置の第２のテーブルの構成を説明するための図である。
【図９】この発明の一実施形態に従った半導体記憶装置の監視対象ブロックの選択処理を説明するためのフローチャートである。
【図１０】この発明の一実施形態に従った半導体記憶装置の第３のテーブルの構成を説明するための図である。
【図１１】この発明の一実施形態に従った半導体記憶装置の監視対象ブロックの選択処理を説明するためのフローチャートである。
【図１２】この発明の一実施形態に従った半導体記憶装置の第４のテーブルの構成を説明するための図である。
【図１３】この発明の一実施形態に従った半導体記憶装置の監視対象ブロックの選択処理を説明するためのフローチャートである。
【図１４】この発明の一実施形態に従った半導体記憶装置の第５のテーブルの構成を説明するための図である。
【図１５】この発明の一実施形態に従った半導体記憶装置の第１のテーブルへの監視対象ブロックの登録処理を説明するためのフローチャートである。
【図１６】この発明の一実施形態に従った半導体記憶装置の第６のテーブルの構成を説明するための図である。
【図１７】この発明の一実施形態に従った半導体記憶装置の第１のテーブルから誤り数の監視対象外ブロックを削除する処理を説明するためのフローチャートである。
【図１８】この発明の一実施形態に従った半導体記憶装置の第７のテーブルの構成を説明するための図である。
【図１９】この発明の一実施形態に従った半導体記憶装置の第１のテーブルへ登録した監視対象ブロックに対する誤り数の監視処理を説明するためのフローチャートである。
【図２０】この発明の一実施例にかかるＳＳＤの構成を示す図である。
【図２１】この発明の一実施例にかかるドライブ制御回路の構成を示す図である。
【図２２】この発明の一実施例にかかるプロセッサの構成を示す図である。
【図２３】この発明の一実施例にかかるＳＳＤを搭載したポータブルコンピュータの一例を示す斜視図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、この発明にかかる半導体記憶装置の制御方法の実施の形態を詳細に説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１６】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかる半導体記憶装置１の概略構成を示す図である。なお、図１に示す半導体記憶装置１は、本発明の一実施形態であり、この構成に限定されるものではない。
【００１７】
第１の実施の形態にかかる半導体記憶装置１は、制御部３とＮＡＮＤ型フラッシュメモリ１０とから構成される。制御部３は、プログラムの実行を行う中央演算処理装置（ＣＰＵ）４と、データやプログラムなどを記憶するＲＡＭ５、半導体記憶装置１に接続されるホスト機器２との通信を行うホストインターフェース（Ｉ／Ｆ）６、タイマー７、ＮＡＮＤ型フラッシュメモリ１０とのデータ転送を制御するＮＡＮＤ  インターフェース（Ｉ／Ｆ）８と、これらの各構成部を通信可能に接続するバス９と、を備える。また、ＮＡＮＤ型フラッシュメモリ１０は、データ消去の単位であるブロックを複数配列して構成されている。
【００１８】
半導体記憶装置１は、ホストＩ／Ｆ６を介してホスト機器２と通信し、ホスト機器２の要求に応じて該ホスト機器２と半導体記憶装置１間のデータ転送を行う。ホスト機器２からの要求の解釈や半導体記憶装置１自体の制御は、制御部３の内部のＲＡＭ５に記憶したプログラムをＣＰＵ４が解釈することで実現する。また、ホスト機器２から供給されるデータは、ＮＡＮＤ型フラッシュメモリ１０上へ記憶し、制御部３はホスト機器２とＮＡＮＤ型フラッシュメモリ１０間のデータ転送を仲介する。
【００１９】
半導体記憶装置１内部の制御部３は、ホストＩ／Ｆ６を介してホスト機器２と通信を行い、制御部３内部のＲＡＭ５とホスト機器２間のデータ転送を行う。ホスト機器２から転送されたデータは、制御部３内部のＲＡＭ５へ一時的に蓄え、規定のタイミングでＮＡＮＤ  Ｉ／Ｆ８を解してＮＡＮＤ型フラッシュメモリ１０へ書き込みを行う。また、ホスト機器２からの読み出し要求に際しては、制御部３ではＣＰＵ４の指示に従ってＮＡＮＤ型フラッシュメモリ１０からデータを読み出し、制御部３内部のＲＡＭ５へ記憶する。そして、制御部３は、ＲＡＭ５上に記憶したデータをホストＩ／Ｆ６を通じてホスト機器２へ転送する。
【００２０】
ＮＡＮＤ型フラッシュメモリ１０へのデータの書き込みと読み出しの際に使用するＮＡＮＤ  Ｉ／Ｆ８は、その内部に誤り訂正回路として誤り訂正部２１と誤り数検出部２２とを有する。誤り訂正部は、ＮＡＮＤ型フラッシュメモリ１０内の任意のブロックから読み出したデータの誤りを訂正する機能を有する。誤り数検出部２２は、誤り訂正部２１で訂正した誤り数を検出する機能を有する。誤り訂正部２１が付加する誤り訂正符号の訂正能力は２ビット以上とし、ここでは８ビットの誤り訂正能力があることとして説明を行うが、本発明はこの誤り訂正能力に限定されるものではない。
【００２１】
ＲＡＭ５上のデータをＮＡＮＤ型フラッシュメモリ１０へ書き込む際には、誤り訂正部２１が、書き込むデータの誤り訂正符号を計算し、データと共にＮＡＮＤ型フラッシュメモリ１０上へ書き込みを行う。また、ＮＡＮＤ型フラッシュメモリ１０からのデータの読み出しに際しては、ＮＡＮＤ型フラッシュメモリ１０から読み出したデータと、該データと共にＮＡＮＤ型フラッシュメモリ１０へ記憶している誤り訂正符号を利用して、誤り訂正部２１が読み出したデータの誤りを訂正する。そして、誤り訂正を行った際には、誤り数検出部２２が、訂正した誤りの数を検出して自誤り数検出部２２へ記憶する。なお、ここでは、訂正した誤りの数を誤り数検出部２２へ記憶することとしているが、記憶する場所はこれに限定されるものではない。
【００２２】
また、誤り訂正部２１において誤り訂正を行った場合には、ＮＡＮＤ  Ｉ／Ｆ８がＣＰＵ４へ割り込みを行うことにより、ＮＡＮＤ型フラッシュメモリ１０に記憶されているデータに誤りが発生した旨を通知する。そしてＣＰＵ４は、ＮＡＮＤ  Ｉ／Ｆ８の誤り数検出部２２へアクセスし、発生した誤り数を取得する。
【００２３】
タイマー７は、任意の時間を設定すると内部で時間を計測し、設定された時間が経過した後にＣＰＵ４へ割り込みを発生する。ＣＰＵ４は、タイマー７からの割り込みにより、設定した時間が経過したことを知ることができる。
【００２４】
ＮＡＮＤ型フラッシュメモリ１０には、ホスト機器２から供給されるデータと、該データから誤り訂正部２１が算出した誤り訂正符号と、を合わせて記憶する。
【００２５】
ＲＡＭ５上には、近い将来にリフレッシュ処理が必要なブロックの情報を記憶するテーブルである第１のテーブル３１（請求項の第１のテーブルに対応）が構成されている。図２は、第１のテーブル３１の構成を説明するための図である。第１のテーブル３１は、複数のエントリから構成され、各エントリにはＮＡＮＤ型フラッシュメモリ１０上のブロックの番号を登録する。第１のテーブル３１へのアクセスはエントリの番号で行い、各エントリに格納されているブロックが、記憶したデータの誤り数を監視する監視対象となるブロック（以下、監視対象ブロックと呼ぶ）になる。
【００２６】
また、ＲＡＭ５上には、第２のテーブル３２（請求項の第２のテーブルに対応）、第３のテーブル３３（請求項の第３のテーブルに対応）、第４のテーブル３４（請求項の第４のテーブルに対応）、第５のテーブル３５（請求項の第５のテーブルに対応）、第６のテーブル３６（請求項の第６のテーブルに対応）および第７のテーブル３７（請求項の第７のテーブルに対応）が構成されている。第２のテーブル３２〜第７のテーブル３７については後述する。
【００２７】
本実施の形態では、ホスト機器２からの要求に従ってＮＡＮＤ型フラッシュメモリ１０から読み出したデータに誤りが生じた場合、図３に示す流れに沿って、データに誤りが発生したブロックの誤り数を監視するかどうかを決定する。図３は、第１の実施の形態における監視対象ブロックの選択処理を説明するためのフローチャートである。
【００２８】
まず、ＣＰＵ４が、ＮＡＮＤ型フラッシュメモリ１０上のブロックからデータを読み出すと、誤り訂正部２１が読み出したデータの誤りを訂正し、訂正した誤りの数を誤り数検出部２２が検出して自誤り数検出部２２へ記憶する。ＣＰＵ４は、誤り数検出部２２へアクセスし、読み出したデータに発生した誤り数を取得し、確認する（ステップＳ１０１）。そして、ＣＰＵ４は、誤り数が第１の閾値以上であるか否かを確認する（ステップＳ１０２）。第１の閾値は、監視対象とするブロックを選択するための誤り数の閾値であり、ここでは、例えば２ビットの誤り数を第１の閾値（請求項の第１の閾値に対応）とする。
【００２９】
ＮＡＮＤ型フラッシュメモリ１０上のブロックから読み出したデータに発生している誤り数が第１の閾値以上（２ビット以上）である場合は（ステップＳ１０２肯定）、経年変化やリードディスターブの影響でさらにデータの誤り数が増加して誤り訂正符号の訂正能力以上の誤りが発生する可能性がある。このため、ＣＰＵ４は、誤りが発生したブロック（ＮＡＮＤ型フラッシュメモリ１０から読み出したデータが記憶されているブロック）を、監視対象ブロックとして選択し、第１のテーブル３１へ登録する（ステップＳ１０３）。
【００３０】
また、ＮＡＮＤ型フラッシュメモリ１０から読み出したデータに発生している誤り数が第１の閾値未満（２ビット未満）である場合は（ステップＳ１０２否定）、第１のテーブル３１への登録を行わずに処理を終了する。
【００３１】
第１のテーブル３１へ登録したブロックは、記憶しているデータの誤り数が多い状態にあり、経年変化やリードディスターブの影響で誤り数がさらに増加する可能性が高い。このため、ＣＰＵ４は、第１のテーブル３１へ登録したブロックのデータを定期的にＮＡＮＤ型フラッシュメモリ１０から読み出して誤り数を確認し、データの誤り数の増加具合を監視する。そして、ＣＰＵ４は、記憶しているデータに発生した誤り数が規定の数を超えたブロックに対してリフレッシュ処理を実行する。
【００３２】
なお、ホスト機器２から要求されたデータについてのみ、ＮＡＮＤ型フラッシュメモリ１０からのデータの読み出し処理のたびに誤り数を検査する場合には、ＮＡＮＤ型フラッシュメモリ１０に記憶されていながら読み出しがほとんどないブロックに記憶されたデータの経年変化を検出することができない。このため、電源投入時や数ヶ月に一回の間隔など、任意のタイミングでＮＡＮＤ型フラッシュメモリ１０の第１のテーブルの全領域のデータを読み出して、誤り数を確認することが好ましい。これにより、読み出しがほとんどないブロックに記憶されたデータに対しても誤り数の増加具合を監視することができる。
【００３３】
図４は、監視対象ブロックがすでに第１のテーブル３１に登録済みかどうかをチェックする処理を説明するためのフローチャートである。まず、ＣＰＵ４は第１のテーブル３１のＮ番目（Ｎは、第１のテーブル３１におけるエントリ番号）のエントリに記録された内容を確認し（ステップＳ１１１）、Ｎ番目のエントリのブロックが監視対象ブロックと同一のブロックであるか否かを判断し、監視対象ブロックと同一のブロックが第１のテーブル３１に記録されているかどうかを探す（ステップＳ１１２）。
【００３４】
Ｎ番目のエントリのブロックが監視対象ブロックと同一のブロックである場合には（ステップＳ１１２肯定）、ＣＰＵ４は処理を終了する。また、Ｎ番目のエントリのブロックが監視対象ブロックと同一のブロックでない場合には（ステップＳ１１２否定）、ＣＰＵ４はＮ番目のエントリが最後のエントリかどうかを確認する（ステップＳ１１３）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ１１３否定）、ステップＳ１１１に戻ってエントリ番号を１だけインクリメントする。また、Ｎ番目のエントリが最後のエントリである場合は（ステップＳ１１３肯定）、ＣＰＵ４は処理を終了する。
【００３５】
ここで、新たに監視対象ブロックに選択したブロックが第１のテーブル３１に未登録である場合には、図５のフローチャートに示すように第１のテーブル３１に監視対象ブロックを登録する。図５は、第１のテーブル３１へ監視対象ブロックを登録するための処理を説明するためのフローチャートである。
【００３６】
まず、ＣＰＵ４は、第１のテーブル３１のＮ番目（Ｎは、第１のテーブル３１におけるエントリ番号）のエントリを確認し（ステップＳ１２１）、空きエントリであるか否かを判断する（ステップＳ１２２）。空きエントリである場合は（ステップＳ１２２肯定）、ＣＰＵ４は監視対象ブロックを該空きエントリに登録して（ステップＳ１２６）、処理を終了する。
【００３７】
また、Ｎ番目のエントリが空きエントリでない場合は（ステップＳ１２２否定）、ＣＰＵ４は、Ｎ番目のエントリが最後のエントリかどうかを確認する（ステップＳ１２３）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ１２３否定）、ステップＳ１２１に戻ってエントリ番号を１だけインクリメントする。また、Ｎ番目のエントリが最後のエントリである場合は（ステップＳ１２３肯定）、ＣＰＵ４は、第１のテーブル３１に登録されているブロックに対して強制的にリフレッシュ処理を実行して、第１のテーブル３１に空きエントリを作成する（ステップＳ１２４）。リフレッシュ処理したブロックのデータは誤り数が削減されるため、ＣＰＵ４は、第１のテーブル３１上から該ブロックを削除する。そして、ＣＰＵ４は、その空きエントリへ新たな監視対象ブロックを登録し（ステップＳ１２５）、処理を終了する。
【００３８】
つぎに、第１のテーブル３１へ登録したブロックに対するデータの誤り数の監視方法について説明する。誤り数の監視はＣＰＵ４が制御部３内のタイマー７へ監視間隔の時間を設定し、タイマー７からの割り込みが発生するたびに、図６のフローチャートに示す方法で行う。図６は、第１のテーブル３１へ登録したブロックに対する誤り数の監視処理を説明するためのフローチャートである。
【００３９】
まず、ＣＰＵ４は、第１のテーブル３１のＮ番目（Ｎは、第１のテーブル３１におけるエントリ番号）のエントリを確認し（ステップＳ１３１）、該エントリにブロックが登録済みであるか否かを判断する（ステップＳ１３２）。ブロックが登録済みでない場合は（ステップＳ１３２否定）、該エントリが最後のエントリかどうかを確認する（ステップＳ１３６）。最後のエントリでない場合は（ステップＳ１３６否定）、ステップＳ１３１に戻ってエントリ番号を１だけインクリメントする。最後のエントリである場合は（ステップＳ１３６肯定）、ＣＰＵ４は誤り数の監視処理を終了する。
【００４０】
ステップＳ１３２に戻って、ブロックが登録済みである場合は（ステップＳ１３２肯定）、ＣＰＵ４はＮ番目のエントリに登録してあるブロックのデータをＮＡＮＤ型フラッシュメモリ１０から制御部３内のＲＡＭ５上へ読み出す。次に、誤り訂正部２１が読み出したデータの誤りを訂正し、訂正した誤りの数を誤り数検出部２２が検出して自誤り数検出部２２へ記憶する。ＣＰＵ４は誤り数検出部２２へアクセスし、読み出したデータに発生した誤り数を取得し、確認する（ステップＳ１３３）。そして、ＣＰＵ４は読み出したデータの誤り数が第２の閾値（請求項の第２の閾値に対応）以上であるか否かを判断する（ステップＳ１３４）。第２の閾値は、所定の方法でデータを書き直す（リフレッシュ）ブロックを選択するための誤り数の閾値であり、ここでは、例えば４ビットの誤り数を第２の閾値とする。また、第２の閾値は、誤り訂正符号の訂正能力を考慮して設定する。
【００４１】
誤り数が第２の閾値未満（４ビット未満）である場合は（ステップＳ１３４否定）、ＣＰＵ４は、Ｎ番目のエントリが最後のエントリかどうかを確認する（ステップＳ１３６）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ１３６否定）、ステップＳ１３１に戻ってエントリ番号を１だけインクリメントする。また、Ｎ番目のエントリが最後のエントリである場合は（ステップＳ１３６肯定）、ＣＰＵ４は誤り数の監視処理を終了する。
【００４２】
ステップＳ１３４に戻って、誤り数が第２の閾値以上（４ビット以上）である場合は（ステップＳ１３４肯定）、ＣＰＵ４はＮ番目のエントリに登録してあるブロックのリフレッシュを実行する（ステップＳ１３５）。そして、ＣＰＵ４は、Ｎ番目のエントリが最後のエントリかどうかを確認する（ステップＳ１３６）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ１３６否定）、ステップＳ１３１に戻ってエントリ番号を１だけインクリメントする。Ｎ番目のエントリが最後のエントリである場合は（ステップＳ１３６肯定）、ＣＰＵ４は誤り数の監視処理を終了する。
【００４３】
また、本実施の形態では、第１のテーブル３１へ監視対象ブロックを登録するための誤り数の閾値（第１の閾値）よりも、第１のテーブル３１に登録してある監視対象ブロックをリフレッシュするための誤り数の閾値（第２の閾値）が大きくなる。これは、誤り数が少ないブロックは監視の対象とし、誤り数が多いブロックはデータを復元できなくなる可能性があるためリフレッシュを行うためである。
【００４４】
ブロックのリフレッシュ処理を行うには、まずリフレッシュ対象のブロックのデータをＮＡＮＤ型フラッシュメモリ１０から制御部３内のＲＡＭ５上へ全て読み出し、ＮＡＮＤ型フラッシュメモリ１０上のブロックの消去を実行する。そして、ブロックの消去が完了した後にＲＡＭ５内へ退避した全データを消去したブロックに書き込む。リフレッシュ処理したブロックのデータは誤り数が削減されるため、図７のフローチャートに示す方法で第１のテーブル３１上から該ブロックを削除し、監視対象ブロックから除外する。図７は、リフレッシュ処理したブロックの第１のテーブル３１上からの削除処理を説明するためのフローチャートである。
【００４５】
まず、ＣＰＵ４は、第１のテーブル３１のＮ番目（Ｎは、第１のテーブル３１におけるエントリ番号）のエントリを確認し（ステップＳ１４１）、登録されているブロックが対象ブロック、すなわちリフレッシュ処理したブロックか否かを判断する（ステップＳ１４２）。対象ブロックでない場合は（ステップＳ１４２否定）、該エントリが最後のエントリかどうかを確認する（ステップＳ１４４）。最後のエントリでない場合は（ステップＳ１４４否定）、ステップＳ１４１に戻ってエントリ番号を１だけインクリメントする。最後のエントリである場合は（ステップＳ１４４肯定）、ＣＰＵ４は処理を終了する。
【００４６】
ステップＳ１４２に戻って、登録されているブロックが対象ブロックである場合は（ステップＳ１４２肯定）、ＣＰＵ４はＮ番目のエントリに登録されているブロックを第１のテーブル３１から削除し（ステップＳ１４３）、処理を終了する。なお、もともとデータが書き込まれていたブロックへ対してデータを書き直さずに他の空いているブロックへデータを書き直してもよい。
【００４７】
上述したように、第１の実施の形態にかかる半導体記憶装置１によれば、経年変化やリードディスターブの影響で近い将来にリフレッシュ処理が必要であるデータが記憶されたＮＡＮＤ型フラッシュメモリ１０上のブロックを、ブロックに記憶したデータに発生した誤り数に基づいて選び出し、データの誤り数を監視する監視対象ブロックとして第１のテーブル３１へ登録する。そして、第１のテーブル３１に登録したブロックのデータを定期的に読み出して誤り数を検査し、データに発生した誤り数が規定の数を超えた場合にリフレッシュ処理を実行する。このようにして、ブロックのリフレッシュ処理までの期間を誤り訂正符号の訂正能力の範囲内で延ばすことでリフレッシュ処理の回数を削減し、ＮＡＮＤ型フラッシュメモリ１０の書き換え回数を抑制することができる。これにより、記憶したデータの経年変化による劣化やリードディスターブによる劣化に起因したデータ破損を少ない回数のリフレッシュ処理により確実に防止するとともに、リフレッシュ処理における処理量や電力消費が抑制された半導体記憶装置を実現することができる。
【００４８】
また、第１の実施の形態にかかる半導体記憶装置１によれば、第１のテーブル３１へ監視対象ブロックを登録するための誤り数の閾値（第１の閾値）よりも、第１のテーブル３１に登録されている監視対象ブロックをリフレッシュするための誤り数の閾値（第２の閾値）が大きく設定される。これにより、監視対象ブロックのうち誤り数が多いブロックのリフレッシュ処理を行うことで、データを復元できなくなることを防止することができる。
【００４９】
（第２の実施の形態）
第２の実施の形態では、図１の半導体記憶装置１においてＮＡＮＤ型フラッシュメモリ１０のブロックに記憶したデータの読み出し量に基づいて監視対象ブロックを選択する場合について説明する。第２の実施の形態が第１の実施の形態と異なる点は、監視対象ブロックを登録する方法であり、それ以外は第１の実施の形態の場合と同じである。
【００５０】
図８は、第２のテーブル３２の構成を説明するための図である。第２のテーブル３２は、ＮＡＮＤ型フラッシュメモリ１０上のブロックのデータの読み出し量を記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第２のテーブル３２には、ＮＡＮＤ型フラッシュメモリ１０上のブロックの番号と、該ブロックから読み出されたデータの読み出し量と、が記憶される。
【００５１】
ＣＰＵ４は、ＮＡＮＤ型フラッシュメモリ１０上のブロックからデータを読み出すたびに、データの読み出し量をページ数でカウントし、第２のテーブル３２に記憶させ、また更新する。また、第２のテーブル３２に記憶された読み出し量は、ＮＡＮＤ型フラッシュメモリ１０上のブロックにデータが記憶されてからの読み出し量であり、ブロックのデータを消去するたびに値がクリアされる。なお、データの読み出し量には、データ量の積算量や読み出し回数を用いることができる。
【００５２】
本実施の形態では、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０からのデータの読み出し処理時に、図９に示す流れに沿って、誤りが発生したブロックを監視するかどうかを決定する。図９は、第２の実施の形態における監視対象ブロックの選択処理を説明するためのフローチャートである。
【００５３】
まず、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０のブロックからのデータの読み出し処理時に、ＣＰＵ４は第２のテーブル３２において該ブロックのデータの読み出し量を更新する（ステップＳ１５１）。そして、ＣＰＵ４は、更新したデータの読み出し量が第３の閾値（請求項の第３の閾値に対応）以上であるか否かを確認する（ステップＳ１５２）。第３の閾値は、監視対象とするブロックを選択するための、ブロックからのデータ読み出し量の閾値であり、ここでは、例えば１０＾１０ページの読み出し量を第３の閾値とする。
【００５４】
ブロックのデータの読み出し量が第３の閾値以上である場合は（ステップＳ１５２肯定）、経年変化やリードディスターブの影響で誤り数が増加して誤り訂正符号の訂正能力以上の誤りが発生する可能性がある。このため、ＣＰＵ４は、データを読み出したこのブロックを監視対象ブロックとして第１のテーブル３１へ登録する（ステップＳ１５３）。また、ブロックのデータの読み出し量が第３の閾値未満である場合は（ステップＳ１５２否定）、第１のテーブル３１への登録を行わずに処理を終了する。なお、第１のテーブル３１へ登録したブロックの誤り数の監視は、第１の実施の形態の場合と同様であるため、ここでは詳細な説明は省略する。
【００５５】
上述したように、第２の実施の形態にかかる半導体記憶装置１によれば、経年変化やリードディスターブの影響で近い将来にリフレッシュ処理が必要であるデータが記憶されたＮＡＮＤ型フラッシュメモリ１０上のブロックを、ブロックに記憶したデータの読み出し量に基づいて選び出し、データの誤り数を監視する監視対象ブロックとして第１のテーブル３１へ登録する。そして、第１のテーブル３１に登録したブロックのデータを定期的に読み出して誤り数を検査し、データに発生した誤り数が規定の数を超えた場合にリフレッシュ処理を実行する。このようにして、ブロックのリフレッシュ処理までの期間を誤り訂正符号の訂正能力の範囲内で延ばすことでリフレッシュ処理の回数を削減し、ＮＡＮＤ型フラッシュメモリ１０の書き換え回数を抑制することができる。これにより、記憶したデータの経年変化による劣化やリードディスターブによる劣化に起因したデータ破損を少ない回数のリフレッシュ処理により確実に防止するとともに、リフレッシュ処理における処理量や電力消費が抑制された半導体記憶装置を実現することができる。
【００５６】
（第３の実施の形態）
第３の実施の形態では、図１の半導体記憶装置１においてＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み時刻に基づいて監視対象ブロックを選択する場合について説明する。第３の実施の形態が第１の実施の形態と異なる点は、監視対象ブロックを登録する方法であり、それ以外は第１の実施の形態の場合と同じである。
【００５７】
図１０は、第３のテーブル３３の構成を説明するための図である。第３のテーブル３３は、ＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み時刻を記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第３のテーブル３３には、ＮＡＮＤ型フラッシュメモリ１０上のブロックの番号と、該ブロックへのデータの書き込み時刻と、が記憶される。
【００５８】
ＣＰＵ４は、ＮＡＮＤ型フラッシュメモリ１０上のブロックにデータを書き込む際に、書き込み時刻を第３のテーブル３３に記憶させる。また、第３のテーブル３３に記憶された書き込み時刻は、ＮＡＮＤ型フラッシュメモリ１０上のブロックのデータを消去するたびに値がクリアされる。なお、第３のテーブル３３に記憶する書き込み時刻は、半導体記憶装置１の動作時間の他、ＮＡＮＤ型フラッシュメモリ１０の総消去回数などを利用して、書き込みを実行した時点と現在との時間的な差分が分かればよい。
【００５９】
本実施の形態では、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０のブロックからのデータの読み出し処理時に、図１１に示す流れに沿ってブロックへのデータの書き込み時刻からの経過時間を計測し、誤り数を監視するブロックを決定する。図１１は、第３の実施の形態における監視対象ブロックの選択処理を説明するためのフローチャートである。
【００６０】
まず、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０からのデータの読み出し処理時に、ＣＰＵ４はデータを読み出す対象のブロックへの最終の書き込み時刻であって第３のテーブル３３に記憶された書き込み時刻と現時刻との差、すなわちデータを読み出す対象のブロックへの書き込み時刻からの経過時間を算出する（ステップＳ１６１）。そして、ＣＰＵ４は、ブロックへの書き込み時刻からの経過時間が第４の閾値（請求項の第４の閾値に対応）以上であるか否かを確認する（ステップＳ１６２）。第４の閾値は、監視対象とするブロックを選択するための、ブロックへの書き込み時刻からの経過時間の閾値であり、ここでは、例えば一ヶ月を第４の閾値とする。
【００６１】
ブロックへの書き込み時刻からの経過時間が第４の閾値以上である場合は（ステップＳ１６２肯定）、経年変化やリードディスターブの影響で誤り数が増加して誤り訂正符号の訂正能力以上の誤りが発生する可能性がある。このため、ＣＰＵ４は、データを読み出したこのブロックを監視対象ブロックとして第１のテーブル３１へ登録する（ステップＳ１６３）。また、ブロックへの書き込み時刻からの経過時間が第４の閾値未満である場合は（ステップＳ１６２否定）、第１のテーブル３１への登録を行わずに処理を終了する。なお、第１のテーブル３１へ登録したブロックの誤り数の監視は、第１の実施の形態の場合と同様であるため、ここでは詳細な説明は省略する。
【００６２】
なお、ホスト機器２から要求されたデータについてのみ、ＮＡＮＤ型フラッシュメモリ１０からのデータの読み出し処理のたびにブロックへの書き込み時刻からの経過時間を検査する場合には、ＮＡＮＤ型フラッシュメモリ１０に記憶されていながら読み出しがほとんどないブロックに記憶されたデータの経年変化を検出することができない。このため、電源投入時や数ヶ月に一回の間隔など、任意のタイミングでＮＡＮＤ型フラッシュメモリ１０の第１のテーブルの全領域のデータを読み出して、ブロックへの書き込み時刻からの経過時間を確認することが好ましい。これにより、読み出しがほとんどないブロックに記憶されたデータに対しても誤り数の増加具合を監視することができる。
【００６３】
上述したように、第３の実施の形態にかかる半導体記憶装置１によれば、経年変化やリードディスターブの影響で近い将来にリフレッシュ処理が必要であるデータが記憶されたＮＡＮＤ型フラッシュメモリ１０上のブロックを、ブロックへの最終書き込み時刻からの経過時間に基づいて選び出し、データの誤り数を監視する監視対象ブロックとして第１のテーブル３１へ登録する。そして、第１のテーブル３１に登録したブロックのデータを定期的に読み出して誤り数を検査し、データに発生した誤り数が規定の数を超えた場合にリフレッシュ処理を実行する。このようにして、ブロックのリフレッシュ処理までの期間を誤り訂正符号の訂正能力の範囲内で延ばすことでリフレッシュ処理の回数を削減し、ＮＡＮＤ型フラッシュメモリ１０の書き換え回数を抑制することができる。これにより、記憶したデータの経年変化による劣化やリードディスターブによる劣化に起因したデータ破損を少ない回数のリフレッシュ処理により確実に防止するとともに、リフレッシュ処理における処理量や電力消費が抑制された半導体記憶装置を実現することができる。
【００６４】
（第４の実施の形態）
第４の実施の形態では、図１の半導体記憶装置１においてＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み順序に基づいて監視対象ブロックを選択する場合について説明する。第４の実施の形態が第１の実施の形態と異なる点は、監視対象ブロックを登録する方法であり、それ以外は第１の実施の形態の場合と同じである。
【００６５】
図１２は、第４のテーブル３４の構成を説明するための図である。第４のテーブル３４は、ＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み順序を記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第４のテーブル３４には、ＮＡＮＤ型フラッシュメモリ１０上のブロックの番号と、ＮＡＮＤ型フラッシュメモリ１０上への書き込み順序番号と、が記憶される。
【００６６】
ＣＰＵ４は、ホスト機器２の要求に従ってＮＡＮＤ型フラッシュメモリ１０上のブロックにデータを書き込む際に、ＮＡＮＤ型フラッシュメモリ１０上への書き込み順序番号を第４のテーブル３４に記憶、更新させる。なお、第４のテーブル３４はリンク構造などで実現し、書き込み処理毎に書き込み順序番号を更新しても処理が多くならないようにすることが好ましい。これにより、ＣＰＵ４の処理負担の軽減および処理時間の短縮が図れる。
【００６７】
本実施の形態では、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０のブロックへのデータの書き込み処理時に、図１３に示す流れに沿ってＮＡＮＤ型フラッシュメモリ１０へのブロックの書き込み順序番号を記憶、更新し、この書き込み順序番号に基づいて、誤り数を監視するブロックを決定する。図１３は、第４の実施の形態における監視対象ブロックの選択処理を説明するためのフローチャートである。
【００６８】
まず、ホスト機器２の要求に従ったＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み処理時に、ＣＰＵ４は第４のテーブル３４における書き込み順序番号を記憶、更新する（ステップＳ１７１）。そして、ＣＰＵ４は第４のテーブル３４のＮ番目（Ｎは、第４のテーブル３４における書き込み順序番号）の書き込み順序番号に対応するブロックを確認し（ステップＳ１７２）、書き込み順序番号が第５の閾値（請求項の第５の閾値に対応）以下、すなわち第５の閾値よりも古いブロックであるか否かを確認する（ステップＳ１７３）。第５の閾値は、監視対象とするブロックを選択するための書き込み順序の閾値であり、ここでは、例えば書き込み順序番号が古い（小さい）ブロックから１０個を第５の閾値とする。
【００６９】
書き込み順序番号が第５の閾値以下、すなわち第５の閾値よりも古いブロックである場合は（ステップＳ１７３肯定）、経年変化やリードディスターブの影響で誤り数が増加して誤り訂正符号の訂正能力以上の誤りが発生する可能性がある。このため、ＣＰＵ４はブロックが第１のテーブル３１に登録済みであるか否かを判断する（ステップＳ１７４）。ブロックが第１のテーブル３１に登録済みでない場合は（ステップＳ１７４否定）、ＣＰＵ４はこのブロックを監視対象ブロックとして第１のテーブル３１へ登録する（ステップＳ１７５）。すなわち、ＣＰＵ４は第５の閾値以上過去に書き込んだブロックを監視対象ブロックとして第１のテーブル３１へ登録し、データの誤り数の検査対象とする。
【００７０】
ステップＳ１７４に戻って、ブロックが第１のテーブル３１に登録済みである場合は（ステップＳ１７４肯定）、ＣＰＵ４はＮ番目の書き込み順序番号が最後の書き込み順序番号かどうかを確認する（ステップＳ１７６）。最後の書き込み順序番号でない場合は（ステップＳ１７６否定）、ステップＳ１７２に戻って書き込み順序番号を１だけインクリメントする。最後の書き込み順序番号である場合は（ステップＳ１７６肯定）、ＣＰＵ４は処理を終了する。
【００７１】
ステップＳ１７３に戻って、書き込み順序番号が第５の閾値以下でない、すなわち第５の閾値よりも新しいブロックである場合は（ステップＳ１７３否定）、ＣＰＵ４はＮ番目の書き込み順序番号が最後の書き込み順序番号かどうかを確認する（ステップＳ１７６）。最後の書き込み順序番号でない場合は（ステップＳ１７６否定）、ステップＳ１７２に戻って書き込み順序番号を１だけインクリメントする。最後の書き込み順序番号である場合は（ステップＳ１７６肯定）、ＣＰＵ４は処理を終了する。なお、第１のテーブル３１へ登録したブロックの誤り数の監視は、第１の実施の形態の場合と同様であるため、ここでは詳細な説明は省略する。
【００７２】
上述したように、第４の実施の形態にかかる半導体記憶装置１によれば、経年変化やリードディスターブの影響で近い将来にリフレッシュ処理が必要であるデータが記憶されたＮＡＮＤ型フラッシュメモリ１０上のブロックを、ＮＡＮＤ型フラッシュメモリ１０上のブロックへのデータの書き込み順序に基づいて選び出し、データの誤り数を監視する監視対象ブロックとして第１のテーブル３１へ登録する。そして、第１のテーブル３１に登録したブロックのデータを定期的に読み出して誤り数を検査し、データに発生した誤り数が規定の数を超えた場合にリフレッシュ処理を実行する。このようにして、ブロックのリフレッシュ処理までの期間を誤り訂正符号の訂正能力の範囲内で延ばすことでリフレッシュ処理の回数を削減し、ＮＡＮＤ型フラッシュメモリ１０の書き換え回数を抑制することができる。これにより、記憶したデータの経年変化による劣化やリードディスターブによる劣化に起因したデータ破損を少ない回数のリフレッシュ処理により確実に防止するとともに、リフレッシュ処理における処理量や電力消費が抑制された半導体記憶装置を実現することができる。
【００７３】
（第５の実施の形態）
第５の実施の形態では、第１の実施の形態〜第４の実施の形態の半導体記憶装置１において、第１のテーブル３１へ監視対象ブロックを登録する際に空きエントリが無い場合の処理について説明する。
【００７４】
図１４は、第５のテーブル３５の構成を説明するための図である。第５のテーブル３５は、第１のテーブル３１へ登録した監視対象ブロックの登録順序を記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第５のテーブル３５には、第１のテーブル３１へ登録した監視対象ブロックの番号と、該監視対象ブロックを第１のテーブル３１へ登録した順序番号（登録順序番号）と、が記憶される。
【００７５】
第１のテーブル３１への監視対象ブロックの登録においては、第１のテーブル３１でのエントリ番号が若い順に、登録が早い監視対象ブロックが格納される。本実施の形態では、ＣＰＵ４は監視対象ブロックを第１のテーブル３１へブロックを登録するたびにその監視対象ブロックの番号を第５のテーブル３５へ登録する。また、第５のテーブル３５では、ＣＰＵ４が第１のテーブル３１に対して監視対象ブロックの登録または削除を行うたびに登録順序番号を更新するため、リンクリストなどで実現することが好ましい。これにより、ＣＰＵ４の処理負担の軽減および処理時間の短縮が図れる。
【００７６】
以下、第１のテーブル３１へ監視対象ブロックを登録する際に空きエントリが無い場合における、第１のテーブル３１への監視対象ブロックの登録処理について図１５を参照して説明する。図１５は、第５の実施の形態における第１のテーブル３１への監視対象ブロックの登録処理を説明するためのフローチャートである。
【００７７】
まず、第１のテーブル３１への監視対象ブロックの登録処理時に、ＣＰＵ４は第５のテーブル３５に登録されている登録ブロック数が第６の閾値（請求項の第６の閾値に対応）未満であるか否かを確認する（ステップＳ１８１）。ここで、第６の閾値は、第１のテーブル３１へ登録できる最大のブロック数であり、且つ第５のテーブル３５へ登録できる最大のブロック数である。したがって、第５のテーブル３５に登録されている登録ブロック数が第６の閾値未満であるということは、第１のテーブル３１に空きエントリがあることを意味し、第５のテーブル３５に登録されている登録ブロック数が第６の閾値未満でないということは、第１のテーブル３１に空きエントリが無いことを意味する。
【００７８】
第５のテーブル３５に登録されている登録ブロック数が第６の閾値未満である場合、すなわち第１のテーブル３１に空きエントリがある場合は（ステップＳ１８１肯定）、ＣＰＵ４は第１のテーブル３１の空きエントリへ監視対象ブロックを登録し（ステップＳ１８４）、さらに第５のテーブル３５に該ブロックの番号を登録して処理を終了する。
【００７９】
また、第５のテーブル３５に登録されている登録ブロック数が第６の閾値未満でない場合（第１のテーブル３１に空きエントリが無い場合）は（ステップＳ１８１否定）、ＣＰＵ４は第５のテーブル３５を参照し、第５のテーブル３５における登録順序番号が先頭のブロックのリフレッシュ処理を実行する（ステップＳ１８２）。すなわち、第１のテーブル３１および第５のテーブル３５へ登録した順番が最も早いブロックのリフレッシュ処理を行う。
【００８０】
そして、ＣＰＵ４はリフレッシュ処理を実行したブロックを第１のテーブル３１と第５のテーブル３５から削除する（ステップＳ１８３）。その後、第１のテーブル３１の空きエントリに対して新しい監視対象ブロックの登録を行う。また、ＣＰＵ４は第５のテーブル３５の登録順序番号を更新し、第１のテーブル３１の空きエントリに登録した監視対象ブロックを第５のテーブル３５に登録する（ステップＳ１８４）。
【００８１】
上述したように、第５の実施の形態にかかる半導体記憶装置１によれば、第１のテーブル３１の空きエントリを管理することにより、第１のテーブル３１へ新たな監視対象ブロックを登録する際に空きエントリが無い場合においても、該監視対象ブロックの登録処理を可能とし、データの誤り数を監視する監視対象ブロックを管理することができる。
【００８２】
（第６の実施の形態）
第６の実施の形態では、第１の実施の形態〜第５の実施の形態の半導体記憶装置１において、データの誤り数の監視対象外になったブロックを第１のテーブル３１から削除する場合の処理について説明する。
【００８３】
図１６は、第６のテーブル３６の構成を説明するための図である。第６のテーブル３６は、保持すべきデータが記憶されていないＮＡＮＤ型フラッシュメモリ１０上のブロックを記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第６のテーブル３６は、複数のエントリから構成され、各エントリにはＮＡＮＤ型フラッシュメモリ１０上のブロックの番号のうち、保持すべきデータが記憶されていないブロックの番号を登録する。第６のテーブル３６へのアクセスはエントリの番号で行う。
【００８４】
ＣＰＵ４は、保持すべきデータが記憶されていないブロックの番号の情報を第６のテーブル３６から取得することで、そのブロックに新たなデータを書き込むことができ、また保持すべきデータが存在しなくなったブロックの番号を第６のテーブル３６へ登録する。なお、保持すべきデータが存在しなくなる状況は、主に新しいデータを書き込む場合に発生する。例えば、ＮＡＮＤ型フラッシュメモリ１０のブロック１にアドレスＡのデータＸが記録してある場合において、ホスト機器２からアドレスＡのデータＸをデータＹへ書き換える際に別のブロック（例えばブロック１００）へアドレスＡのデータＹを書き込む制御を行う制御方式では、ブロック１に保存してあるアドレスＡの過去のデータＸは保持すべきデータではなくなる。
【００８５】
以下、データの誤り数の監視対象外になった監視対象ブロックを第１のテーブル３１から削除する場合の処理について図１７を参照して説明する。図１７は、第６の実施の形態において第１のテーブル３１から誤り数の監視対象外ブロックを削除する処理を説明するためのフローチャートである。
【００８６】
まず、ＣＰＵ４は、保持すべきデータが存在しなくなったブロックが発生した際に、第１のテーブル３１のＮ番目（Ｎは、第１のテーブル３１におけるエントリ番号）のエントリを確認し（ステップＳ１９１）、登録されているブロックが対象ブロック（保持すべきデータが存在しなくなった監視対象外ブロック）であるか否かを判断する（ステップＳ１９２）。対象ブロックでない場合は（ステップＳ１９２否定）、該エントリが最後のエントリかどうかを確認する（ステップＳ１９３）。
【００８７】
ここで、最後のエントリでない場合は（ステップＳ１９３否定）、ステップＳ１９１に戻ってエントリ番号を１だけインクリメントする。最後のエントリである場合は（ステップＳ１９３肯定）、ＣＰＵ４は処理を終了する。
【００８８】
ステップＳ１９２に戻って、対象ブロックである場合は（ステップＳ１９２肯定）、ＣＰＵ４は該ブロックの第１のテーブル３１上からの削除処理を実行し、該ブロックの番号を第６のテーブル３６に登録して処理を終了する（ステップＳ１９４）。なお、第６のテーブル３６へ登録するブロックは、保持すべきデータを記憶していないためリフレッシュ処理を行う必要がない。
【００８９】
上述したように、第６の実施の形態にかかる半導体記憶装置１によれば、データが記憶されているＮＡＮＤ型フラッシュメモリ１０上のブロックに新しいデータを書き込む場合等において保持すべきデータが存在しなくなった監視対象外ブロックが発生した際に第１のテーブル３１から該監視対象外ブロックを確実に削除して、第１のテーブル３１の空きエントリを管理することができる。
【００９０】
（第７の実施の形態）
第７の実施の形態では、第１の実施の形態〜第６の実施の形態の半導体記憶装置１において、第１のテーブル３１に登録された監視対象ブロックを監視する方法について説明する。
【００９１】
図１８は、第７のテーブル３７の構成を説明するための図である。第７のテーブル３７は、第１のテーブル３１に登録されたＮＡＮＤ型フラッシュメモリ１０上のブロックの誤り数を記憶する管理テーブルであり、ＲＡＭ５上に構成されている。第７のテーブル３７は複数のエントリから構成され、各エントリには第１のテーブル３１に登録されたブロックの番号と、該ブロックに記憶したデータで検出した誤り数を登録する。第７のテーブル３７へのアクセスはエントリの番号で行う。第７のテーブル３７に登録される誤り数は、誤り数の監視を実行するたびに値を更新する。
【００９２】
以下、第１のテーブル３１へ登録した監視対象ブロックに対するデータの誤り数の監視方法について図１９を参照して説明する。図１９は、第１のテーブル３１へ登録した監視対象ブロックに対する誤り数の監視処理を説明するためのフローチャートである。
【００９３】
第１のテーブル３１へ登録した監視対象ブロックに対するデータの誤り数の監視は、ＣＰＵ４が制御部３内のタイマー７へ監視間隔の時間を設定し、タイマー７からの割り込みが発生するたびに行う。タイマー７は、ＣＰＵ４が監視間隔の時間を設定すると内部で時間を計測し、設定された時間が経過した後にＣＰＵ４へ割り込みを発生する。
【００９４】
タイマー７からの割り込みが発生すると、ＣＰＵ４は、第７のテーブル３７のＮ番目（Ｎは、第７のテーブル３７におけるエントリ番号）のエントリを確認し（ステップＳ２０１）、該エントリにブロックが登録済みであるか否かを判断する（ステップＳ２０２）。ブロックが登録済みでない場合は（ステップＳ２０２否定）、該エントリが最後のエントリかどうかを確認する（ステップＳ２０６）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ２０６否定）、ステップＳ２０１に戻ってエントリ番号を１だけインクリメントする。また、Ｎ番目のエントリが最後のエントリである場合は（ステップＳ２０６肯定）、ＣＰＵ４は誤り数の監視処理を終了する。
【００９５】
ステップＳ２０２に戻って、ブロックが登録済みである場合は（ステップＳ２０２肯定）、ＣＰＵ４は第７のテーブル３７に登録してある該ブロックの誤り数（ビット数）を確認し（ステップＳ２０３）、該誤り数が第７の閾値（請求項の第７の閾値に対応）以上であるか否かを判断する（ステップＳ２０４）。第７の閾値は、監視対象ブロックのうち、誤り数の検出処理を行うブロックを選択するための閾値であり、ここでは、例えば４ビットの誤り数を第７の閾値とする。
【００９６】
誤り数が第７の閾値未満（４ビット未満）である場合は（ステップＳ２０４否定）、ＣＰＵ４は、Ｎ番目のエントリが最後のエントリかどうかを確認する（ステップＳ２０６）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ２０６否定）、ステップＳ２０１に戻ってエントリ番号を１だけインクリメントする。Ｎ番目のエントリが最後のエントリである場合は（ステップＳ２０６肯定）、ＣＰＵ４は、誤り数の監視処理を終了する。
【００９７】
ステップＳ２０４に戻って、誤り数が第７の閾値以上（４ビット以上）である場合は（ステップＳ２０４肯定）、ＣＰＵ４は、該ブロックのデータをＮＡＮＤ型フラッシュメモリ１０から制御部３内のＲＡＭ５上へ読み出し、このデータの誤り数の検出処理を実行し（ステップＳ２０５）、検出した誤り数で第７のテーブル３７を更新する。そして、ここで検出した誤り数に基づいて、第１の実施の形態の図６により説明したリフレッシュ処理が行われる。
【００９８】
つぎに、ＣＰＵ４は、Ｎ番目のエントリが最後のエントリかどうかを確認する（ステップＳ２０６）。Ｎ番目のエントリが最後のエントリでない場合は（ステップＳ２０６否定）、ステップＳ２０１に戻ってエントリ番号を１だけインクリメントする。また、Ｎ番目のエントリが最後のエントリである場合は（ステップＳ２０６肯定）、ＣＰＵ４は誤り数の監視処理を終了する。
【００９９】
また、上記の第７の閾値は、誤り数の検出処理を行うたびに設定値が引き下げられ、次第に誤り数が少ないブロックの誤り数検出も行われやすいようにする。これにより、誤り数が多いブロックは誤り数の検出を短い周期で毎回行い、誤り数が少ないブロックは長い周期で誤り数の検出を行うことができる。そして、第７の閾値は、所定の規定値まで下げた後に再び元の値へ戻される。
【０１００】
上述したように、第７の実施の形態にかかる半導体記憶装置１によれば、第１のテーブル３１に登録した監視対象ブロックに対して、第７のテーブル３７に登録した誤り数に基づいて新たに監視対象ブロックの誤り数の検出処理を行うかどうかの判断を行う。そして、誤り数が多いブロックは誤り数の検出を短い周期で行い、誤り数が少ないブロックは誤り数の検出を長い周期で行う。これにより、第７のテーブル３７に登録された誤り数に基づいて第１のテーブル３１へ登録された監視対象ブロックの監視間隔を変更し、第１のテーブル３１に登録した監視対象ブロックの中でも、より近い将来にリフレッシュ処理が必要になる可能性が高いブロックのデータの誤り数を確実に監視しつつ、誤り数を監視する回数を削減することができ、誤り数の監視に要する計算量や電力消費を抑制することができる。
【０１０１】
（第８の実施の形態）
第８の実施の形態では、第７の実施の形態における誤り数の監視の周期について説明する。第８の実施の形態では、第１のテーブル３１に登録された監視対象ブロックに対する監視において、誤り数が少ないブロックの監視周期（タイマー７へ設定する監視間隔時間）に上限を設ける。
【０１０２】
ここで、監視周期の上限はブロックに記憶されたデータに第１の閾値を超えた誤りが発生してから、該ブロックのデータの誤りが誤り訂正部２１の誤り訂正能力の上限に達するまでの時間よりも短く設定される。また、この監視周期は、予め半導体記憶装置１の誤り発生状況や環境温度の範囲等の諸条件から予測した時間を設定してもよい。
【０１０３】
上述したように誤り数が少ないブロックの監視周期について上限を設けることにより、第１のテーブル３１に登録されたブロックが、誤り数が少ないために長い期間誤り数の監視がされないためにデータの誤りが誤り訂正部２１の誤り訂正能力を超え、正しいデータを復元できなくなることを防止することができる。
【０１０４】
なお、上述した第１の実施の形態〜第８の実施の形態における機能は、任意に取捨選択して任意の組み合わせで使用可能である。
【０１０５】
［実施例］
上記各実施の形態の半導体記憶装置１をＳＳＤ（Solid  State  Drive）として構成した場合の実施例について説明する。図２０は、ＳＳＤ１００の構成を示すブロック図である。
【０１０６】
ＳＳＤ１００は、データ保存用の複数のＮＡＮＤ型フラッシュメモリ（ＮＡＮＤメモリ）１０、データ転送用または作業領域用のＤＲＡＭ１０１、これらを制御するドライブ制御回路１０２、及び電源回路１０３を備えている。ドライブ制御回路１０２は、ＳＳＤ１００の外部に設けられる状態表示用ＬＥＤを制御するための制御信号を出力する。
【０１０７】
ＳＳＤ１００は、ＡＴＡインターフェース（ＡＴＡ  Ｉ／Ｆ）を介して、パーソナルコンピュータ等のホスト装置との間でデータを送受信する。また、ＳＳＤ１００は、ＲＳ２３２Ｃインターフェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）を介して、デバッグ用機器との間でデータを送受信する。
【０１０８】
電源回路１０３は、外部電源を受け、この外部電源を用いて複数の内部電源を生成する。これらの内部電源は、ＳＳＤ１００内の各部に供給される。また、電源回路１０３は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号を生成する。パワーオンリセット信号は、ドライブ制御回路１０２に送られる。
【０１０９】
図２１は、ドライブ制御回路１０２の構成を示すブロック図である。ドライブ制御回路１０２は、データアクセス用バス１０４、第１の回路制御用バス１０５、及び第２の回路制御用バス１０６を備えている。
【０１１０】
第１の回路制御用バス１０５には、ドライブ制御回路１０２全体を制御するプロセッサ１０７が接続されている。また、第１の回路制御用バス１０５には、各管理プログラム（ＦＷ：firmware）のブート用プログラムが格納されたブートＲＯＭ１０８がＲＯＭコントローラ１０９を介して接続されている。また、第１の回路制御用バス１０５には、電源回路１０３からのパワーオンリセット信号を受けて、リセット信号及びクロック信号を各部に供給するクロックコントローラ１１０が接続されている。
【０１１１】
第２の回路制御用バス１０６は、第１の回路制御用バス１０５に接続されている。第２の回路制御用バス１０６には、状態表示用ＬＥＤにステータス表示用信号を供給するパラレルＩＯ（ＰＩＯ）回路１１１、ＲＳ２３２Ｃインターフェースを制御するシリアルＩＯ（ＳＩＯ）回路１１２が接続されている。
【０１１２】
ＡＴＡインターフェースコントローラ（ＡＴＡコントローラ）１１３、第１のＥＣＣ（Error  Check  and  Correct）回路１１４、ＮＡＮＤコントローラ１１５、及びＤＲＡＭコントローラ１１９は、データアクセス用バス１０４と第１の回路制御用バス１０５との両方に接続されている。ＡＴＡコントローラ１１３は、ＡＴＡインターフェースを介してホスト装置との間でデータを送受信する。データアクセス用バス１０４には、データ作業領域として使用されるＳＲＡＭ１２０がＳＲＡＭコントローラ１２１を介して接続されている。
【０１１３】
ＮＡＮＤコントローラ１１５は、４つのＮＡＮＤメモリ１０とのインターフェース処理を行うＮＡＮＤ  Ｉ／Ｆ１１８、第２のＥＣＣ回路１１７、及びＮＡＮＤメモリ−ＤＲＡＭ間のアクセス制御を行うＤＭＡ転送制御用ＤＭＡコントローラ１１６を備えている。
【０１１４】
図２２は、プロセッサ１０７の構成を示すブロック図である。プロセッサ１０７は、データ管理部１２２、ＡＴＡコマンド処理部１２３、セキュリティ管理部１２４、ブートローダ１２５、初期化管理部１２６、デバッグサポート部１２７を備えている。
【０１１５】
データ管理部１２２は、ＮＡＮＤコントローラ１１５、第１のＥＣＣ回路１１４を介して、ＮＡＮＤメモリ−ＤＲＡＭ間のデータ転送、ＮＡＮＤチップに関する各種機能を制御する。
【０１１６】
ＡＴＡコマンド処理部１２３は、ＡＴＡコントローラ１１３、及びＤＲＡＭコントローラ１１９を介して、データ管理部１２２と協動してデータ転送処理を行う。セキュリティ管理部１２４は、データ管理部１２２及びＡＴＡコマンド処理部１２３と協動して各種のセキュリティ情報を管理する。ブートローダ１２５は、パワーオン時、各管理プログラム（ＦＷ）をＮＡＮＤメモリ１０からＳＲＡＭ１２０にロードする。
【０１１７】
初期化管理部１２６は、ドライブ制御回路１０２内の各コントローラ／回路の初期化を行う。デバッグサポート部１２７は、外部からＲＳ２３２Ｃインターフェースを介して供給されたデバッグ用データを処理する。
【０１１８】
図２３は、ＳＳＤ１００を搭載したポータブルコンピュータ２００の一例を示す斜視図である。ポータブルコンピュータ２００は、本体２０１と、表示ユニット２０２とを備えている。表示ユニット２０２は、ディスプレイハウジング２０３と、このディスプレイハウジング２０３に収容された表示装置２０４とを備えている。
【０１１９】
本体２０１は、筐体２０５と、キーボード２０６と、ポインティングデバイスであるタッチパッド２０７とを備えている。筐体２０５内部には、メイン回路基板、ＯＤＤユニット（Optical  Disk  Device）、カードスロット、ＳＳＤ１００等が収容されている。
【０１２０】
カードスロットは、筐体２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部２０８が設けられている。ユーザは、この開口部２０８を通じて筐体２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１２１】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、ポータブルコンピュータ２００内部に実装された状態として使用してもよいし、ポータブルコンピュータ２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１２２】
なお、上記各実施の形態の半導体記憶装置１は、ＳＳＤに限らず、例えば、ＳＤＴＭカードに代表されるメモリカードとして構成することも可能である。半導体記憶装置１をメモリカードとして構成する場合、ポータブルコンピュータに限らず、携帯電話、ＰＤＡ、デジタルスチルカメラ、デジタルビデオカメラ等、各種電子機器に対して適用可能である。
【符号の説明】
【０１２３】
１  半導体記憶装置、２  ホスト機器、３  制御部、４  ＣＰＵ、５  ＲＡＭ、６  ホストインターフェース（Ｉ／Ｆ）、７  タイマー、８  ＮＡＮＤ  インターフェース（Ｉ／Ｆ）、９  バス、１０  ＮＡＮＤ型フラッシュメモリ、２１  誤り訂正部、２２  誤り数検出部、３１  第１のテーブル、３２  第２のテーブル、３３  第３のテーブル、３４  第４のテーブル、３５  第５のテーブル、３６  第６のテーブル、３７  第７のテーブル。
【図１】
2010160816.tif 000003
【図２】
2010160816.tif 000004
【図３】
2010160816.tif 000005
【図４】
2010160816.tif 000006
【図５】
2010160816.tif 000007
【図６】
2010160816.tif 000008
【図７】
2010160816.tif 000009
【図８】
2010160816.tif 000010
【図９】
2010160816.tif 000011
【図１０】
2010160816.tif 000012
【図１１】
2010160816.tif 000013
【図１２】
2010160816.tif 000014
【図１３】
2010160816.tif 000015
【図１４】
2010160816.tif 000016
【図１５】
2010160816.tif 000017
【図１６】
2010160816.tif 000018
【図１７】
2010160816.tif 000019
【図１８】
2010160816.tif 000020
【図１９】
2010160816.tif 000021
【図２０】
2010160816.tif 000022
【図２１】
2010160816.tif 000023
【図２２】
2010160816.tif 000024
【図２３】
2010160816.tif 000025