(57)【要約】【課題】決められた時間内にリフレッシュを行うことで、定期的にデータの誤りを復元するだけでなく、アプリケーションプログラム実行中に致命的な不良が起こらないように、緊急リフレッシュを行うことができる。【解決手段】不揮発性半導体記憶部を含む記憶システムは、データの再書込み可能な不揮発性メモリセル群からなる記憶領域を有する情報記憶部と、情報記憶部の記憶領域から読出されるデータのエラーを検出し、エラーを訂正して出力する誤り検出訂正回路と、検出されたデータのエラーを計数する誤り個数カウンタと、情報記憶部からのデータ読出しを計数する読出回数カウンタと、読出されるデータの誤り個数に応じて、データを訂正し、再書込みを行い、更に、データの誤り個数カウンタの計数値と読出回数カウンタの計数値をリセットするリフレッシュ制御手段とを備える。【選択図】図１
2009230475.tif 000002
【特許請求の範囲】
【請求項１】
データの再書込み可能な不揮発性メモリセル群からなる記憶領域を有する情報記憶部と、
前記情報記憶部の記憶領域から読出されるデータのエラーを検出し、エラーを訂正して出力する誤り検出訂正回路と、
検出されたデータのエラーを計数する誤り個数カウンタと、
前記情報記憶部からのデータ読出しを計数する読出回数カウンタと、
前記読出されるデータの誤り個数に応じて、前記データを訂正し、再書込みを行い、更に、前記データの前記誤り個数カウンタによる計数値と前記読出回数カウンタによる計数値をリセットするリフレッシュ制御手段と、
を備えた不揮発性半導体記憶部を含む記憶システムであって、
前記リフレッシュ制御手段は、前記情報記憶部のデータが実行される前に、前記誤り個数カウンタによるエラーの計数値がエラー基準値であるデータを、前記誤り検出訂正回路にて訂正する第１のモードと、
前記情報記憶部のデータが実行されている状態であっても、前記誤り個数カウンタによるエラーの計数値がエラー復元限界値に達するデータを、前記エラー復元限界値を超える前に、前記誤り検出訂正回路にて訂正する第２のモードと、
を有することを特徴とする不揮発性半導体記憶部を含む記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に書替え可能な不揮発性半導体記憶部を含む記憶システムの改良に関し、特に、記憶データのリフレッシュ機能を備えることによって、保持するデータの信頼性を向上した不揮発性半導体記憶部を含む記憶システムに関する。
【背景技術】
【０００２】
電気的に書替え可能な不揮発性の半導体記憶装置として、高集積化が可能なＮＡＮＤ型ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｙ  Ｅｒａｓａｂｌｅ  ＰＲＯＭ）が知られている。従来の不揮発性半導体記憶装置では、記憶データの高信頼性を図るために誤り検出訂正回路（ＥＣＣと略す）が備えられており、メモリから読み出されたデータはＥＣＣによって誤りの訂正が行われる。
【０００３】
次に、ＮＡＮＤ型ＥＥＰＲＯＭの構成について説明する。データの書込み及び読出しは、ワード線を共通するメモリセル毎に行われる。この単位はページと呼ばれている。データの消去は、ドレイン側とソース側の２つの選択ゲートの間にある全ワード線を共有するメモリセルトランジスタ毎に行われる。この単位は、ブロック単位と呼ばれている。
【０００４】
図８では、特定のアドレスのメモリセルのデータを読出し続けたときの、全メモリが保持するデータ中の誤りビットが出現する状態を、読出し回数対誤りビットの発生数のグラフで概略的に表している。この図から、誤り訂正が可能なエラー数が少ない状態であるうちに、これらのデータの読出しが行われるならば、ＥＣＣによって、元の正しいデータに復元することが可能であることが判る。しかしながら、特定のアドレスばかりがアクセスされると、ＥＣＣによる誤りが不可能となってしまう、ということも判る。
【０００５】
従来の不揮発性半導体記憶装置では、メモリから読み出されたデータ（上記のページ単位）は、ＥＣＣによって誤りの訂正が行われているものの、同じブロックで読み出されていないページのメモリセルのデータには、誤りが蓄積されていき、やがてＥＣＣによる訂正が不可能になってしまうという問題が生じる。
【０００６】
そこで、特許文献１に記載された不揮発性半導体記憶部を含む記憶システムでは、ＥＣＣ補正が有効な時点で不揮発性半導体記憶部に書込まれている全データあるいは部分的なデータの書替え（リフレッシュ）を行うので、読み出されなかったデータを保持するメモリセルに、他のデータの読出しによる誤りが発生していたときにでも、正しいデータに修正されて再記録される。
【０００７】
【特許文献１】特許第３１７６０１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された不揮発性半導体記憶部を含む記憶システムでは、リフレッシュを行うタイミングについて、リフレッシュ条件が満たされれば、すぐリフレッシュを行う方式と、定期的に一括してリフレッシュを行う方式が記載されている。
【０００９】
この不揮発性半導体記憶部を含む記憶システムの対象が、アミューズメント関連のロールプレイゲーム等のアプリケーションプログラムである場合、前者のリフレッシュ方式では、不定期に、不揮発性半導体記憶部を含む記憶システムに対してウエイトが入ってしまうことになり、スムーズなゲームの進行を妨げる原因になる。
【００１０】
また、後者のリフレッシュ方式では、一括してリフレッシュを行うため、ウエイト時間が長時間となる。業務用アプリケーションプログラムの場合、営業時間前にこの作業を行うが、時間内に終了しない場合もあり、その結果、営業開始の遅れとなって、顧客のやる気を削ぎ、顧客満足度を低下させる要因になる。
【００１１】
このように、両方のリフレッシュ方式とも、一定時間動作をし続けるアプリケーションプログラムにとっては、致命的な不良となる可能性が大いにある。
【００１２】
そこで、本願発明は、決められた時間内にリフレッシュを行うことで、定期的にデータの誤りを復元するだけでなく、アプリケーションプログラム実行中に、どうしてもデータを修復しなければならない場合には、最小限の緊急リフレッシュで対応する不揮発性半導体記憶部を含む記憶システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の不揮発性半導体記憶部を含む記憶システムは、データの再書込み可能な不揮発性メモリセル群からなる記憶領域を有する情報記憶部と、情報記憶部の記憶領域から読出されるデータのエラーを検出し、エラーを訂正して出力する誤り検出訂正回路と、検出されたデータのエラーを計数する誤り個数カウンタと、情報記憶部からのデータ読出しを計数する読出回数カウンタと、読出されるデータの誤り個数に応じて、データを訂正し、再書込みを行い、更に、データの誤り個数カウンタによる計数値と読出回数カウンタによる計数値をリセットするリフレッシュ制御手段とを備えた不揮発性半導体記憶部を含む記憶システムであって、リフレッシュ制御手段は、情報記憶部のデータが実行される前に、誤り個数カウンタによるエラーの計数値がエラー基準値であるデータを、誤り検出訂正回路にて訂正する第１のモードと、情報記憶部のデータが実行されている状態であっても、誤り個数カウンタによるエラーの計数値がエラー復元限界値に達するデータを、エラー復元限界値を超える前に、誤り検出訂正回路にて訂正する第２のモードとを有することを特徴とする。
【発明の効果】
【００１４】
本願発明によれば、定期的にデータの誤りを復元するリフレッシュを行うことで、不揮発性半導体記憶部を含む記憶システムに記憶されたアプリケーションプログラムを事前にデータの誤り復元を行うことができるという効果を奏する。
また、本願発明によれば、不揮発性半導体記憶部を含む記憶システムに記憶されたアプリケーションプログラムが実行中に、データの誤り復元を実行できるので、アプリケーションプログラムにとって致命的な不良を回避することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
本発明を実施するための最良の形態について図面を用いて説明する。図１は、本発明の一実施例を示すブロック図である。
【００１６】
図１に示すように、本発明の実施の形態における不揮発性半導体記憶部を含む記憶システム２０は、メモリ本体１とメモリ本体１を制御するコントローラ１０を含んで構成される。メモリ本体１は、制御回路２、メモリセルアレイ３、データ入出力４、コマンド入力バッファ５、および、アドレス入力バッファ６を含んで構成される。また、コントローラ１０は、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  以下、ＣＰＵと略す）１１、ＥＣＣ１２、バッファメモリ１３、および、タイマー１４を含んで構成される。
【００１７】
制御回路２は、アドレス入力バッファ６から対象ブロックのアドレスを受け取り、コマンド入力バッファ５から各種コマンドを受け取り、メモリセルアレイ３やデータ入出力バッファ４にデータを読み込み、書き込みを行う。
【００１８】
メモリセルアレイ３は、ＮＡＮＤ型ＥＥＰＲＯＭであり、上述した構成を有する。データ入出力バッファ４は、入出力データを一時保持するバッファである。コマンド入力バッファ５は、メモリに対して与えられるコマンドを一時保持するバッファである。アドレス入力バッファ６は、アドレス信号を一時保持するバッファである。
【００１９】
ＣＰＵ１１は、ホスト側ＣＰＵの命令を受けて、データ処理のためにＥＥＰＲＯＭを制御する機能を備えている。ＥＣＣ１２は、読出データのエラーチェック及びエラー訂正を行う。バッファメモリ１３は、ＣＰＵ１１のメインメモリと不揮発性メモリ間に設けられるバッファメモリである。
【００２０】
図２〜図７は、本発明の一実施例である不揮発性記憶部を含む記憶システムの動作について説明したフローチャート図である。
【００２１】
図２は、本発明の一実施例である不揮発性記憶部を含む記憶システムの動作を示すメイン・フローチャート図である。
【００２２】
図２に示すように、電源が入ると、ＣＰＵ１１は、メモリセルアレイ３からリフレッシュテーブルバックアップを読み込んで、バッファメモリ１３のリフレッシュテーブルへ保存する（ステップＳ２０１）。なお、リフレッシュテーブルの更新について、後に説明を行う。
【００２３】
次に、ＣＰＵ１１は、不図示のホスト側ＣＰＵからのリフレッシュコマンドがあるか否かを判断する（ステップＳ２０２）。リフレッシュコマンドがある場合は、ステップＳ２０３に進み、リフレッシュコマンド処理を行う。なお、リフレッシュコマンド処理は、図３のリフレッシュコマンド処理のフローチャートにて説明する。また、リフレッシュコマンドがない場合は、ステップＳ２０４に進む。
【００２４】
ステップＳ２０４では、ＣＰＵ１１が、不図示のホスト側ＣＰＵからのリードコマンドがあるか否かを判断する（ステップＳ２０４）。ここから、不揮発性記憶部にあるデータ、例えば、アミューズメント関連のアプリケーションプログラムが実行される。リードコマンドがある場合は、ステップＳ２０５に進み、リードコマンド処理を行う。なお、リードコマンド処理は、図５のリードコマンド処理のフローチャートにて説明する。また、リードコマンドがない場合は、ステップＳ２０６に進む。
【００２５】
ステップＳ２０６では、ＣＰＵ１１が不図示のホスト側ＣＰＵから電源断の命令を受けているか否かを判断する。電源断の命令を受けている場合は、電源を落として終了する。電源断の命令を受けていない場合は、ステップＳ２０２へ戻り、これまでのフローを実行する。
【００２６】
図３は、本発明の一実施例である不揮発性記憶部を含む記憶システムのリフレッシュコマンド処理のフローチャート図である。
【００２７】
図３に示すように、ＣＰＵ１１は、バッファメモリ１３のリフレッシュテーブルを読み込んで、リフレッシュを行う対象ブロックを特定し、ＣＰＵ１１内の不図示のレジスタに、リフレッシュ対象ブロック数を記憶する。ここで、リフレッシュを行う優先順位も決定する（ステップＳ３０１）。優先順位は、リフレッシュコマンド処理フラグがセットされたものを最優先とし、次に優先するのは、読み出し回数がある閾値を超えたものとする。ここで示したリフレッシュコマンド処理フラグについてであるが、後述する即時リフレッシュ処理のフローチャート図（図６）にて説明を行う。また、これらのリフレッシュ対象ブロック数は、リフレッシュ許容ブロック数以内である。なお、リフレッシュ許容ブロック数は、本システムの稼動前に、リフレッシュが許される時間の範囲から算出された固定値が設定される。
【００２８】
次に、ＣＰＵ１１は、リフレッシュテーブルにおいて、リフレッシュ対象ブロックが有るかを判断する（ステップＳ３０２）。リフレッシュ対象ブロックが有れば、ステップＳ３０３へ進み、ブロック単位のリフレッシュ処理を行う。なお、ブロック単位のリフレッシュ処理については、図４のブロック単位リフレッシュ処理のフローチャートにて説明する。ステップＳ３０３の処理を行った後は、ＣＰＵ１１は、不図示のレジスタに記憶されたリフレッシュ対象ブロック数から１減らす。また、リフレッシュテーブルにおいて、リフレッシュ対象ブロックがない、または、リフレッシュ時間がない場合は、リフレッシュコマンド処理を終了する。
【００２９】
図４は、本発明の一実施例である不揮発性記憶部を含む記憶システムのブロック単位リフレッシュ処理のフローチャート図である。
【００３０】
図４に示すように、ＣＰＵ１１は、アドレス入力バッファ６に、リフレッシュ対象ブロックのアドレスを書込む（ステップＳ４０１）。次に、ＣＰＵ１１は、コマンド入力バッファ５に、リードコマンドを書込む（ステップＳ４０２）。ここで、メモリ本体１の制御回路２は、アドレス入力バッファ６からリフレッシュ対象ブロックのアドレスを受け取る。そして、制御回路２は、コマンド入力バッファ５から、リードコマンドを受け取った後に、メモリセルアレイ３から、データを読み込んで、データ入出力バッファ４に転送する。
【００３１】
次に、ＣＰＵ１１は、ＥＣＣ１２を介して、データ入出力バッファ４からデータを読み込む。読み込んだデータは、ＥＣＣ１２によって誤りの無いデータに修正される。そして、修正されたデータは、バッファメモリ１３に保存される（ステップＳ４０３）。
【００３２】
ＣＰＵ１１は、アドレス入力バッファ６に、リフレッシュ対象ブロックのアドレスを書込んだ後、コマンド入力バッファ５に消去コマンドを書き込む（ステップＳ４０４）。ここで、制御回路２は、アドレス指定されたブロックの消去を実行する。
【００３３】
ＣＰＵ１１は、アドレス入力バッファ６に、リフレッシュ対象ブロックのアドレスを書き込み、コマンド入力バッファ５にライトコマンドを書込んだ後、データ入手力バッファ４へバッファメモリ１３内に保存した誤りの無いデータを転送する（ステップＳ４０５）。ここで、制御回路２は、コマンド入力バッファ６から、ライトコマンドを受け取った後、データ入出力バッファ４に書込まれたデータをメモリセルアレイ３に書込む。
【００３４】
ＣＰＵ１１は、バッファメモリ１３内のリフレッシュテーブルにおいて、リフレッシュ対象ブロックに対する読み出し回数、誤り個数、および、リフレッシュコマンド対象フラグをそれぞれクリアする（ステップＳ４０６）。これにて、ブロック単位リフレッシュ処理を終了する。
【００３５】
図５は、本発明の一実施例である不揮発性記憶部を含む記憶システムのリードコマンド処理のフローチャート図である。
【００３６】
図５に示すように、ＣＰＵ１１は、バッファメモリ１３のリフレッシュテーブルから、リード対象ブロックの読み出し回数をＣＰＵ１１の不図示のレジスタに読み込み、保存する（ステップＳ５０１）。
【００３７】
ＣＰＵ１１は、アドレス入力バッファ６に、リード対象ブロックのアドレスを書込む（ステップＳ５０２）。ここで、制御回路２は、アドレス入力バッファ６からリード対象ブロックのアドレスを受け取る。
【００３８】
ＣＰＵ１１は、コマンド入力バッファ５に、リードコマンドを書込む（ステップＳ５０３）。ここで、制御回路２は、コマンド入力バッファ５から、リードコマンドを受け取った後、メモリセルアレイ３から、データを読み込んで、データ入出力バッファ４へ転送する。
【００３９】
ＣＰＵ１１は、ＥＣＣ１２を介して、データ入出力バッファ４からデータを読み込む。読み込んだデータは、ＥＣＣ１２によって、誤りの無いデータに修正される（ステップＳ５０４）。
【００４０】
ＣＰＵ１１は、ＥＣＣ１２から誤り個数を読み込んで、バッファメモリ１３内のリフレッシュテーブルにあるリード対象ブロックに対する誤り個数データ部にその個数を保存する（ステップＳ５０５）。
【００４１】
ＣＰＵ１１は、バッファメモリ１３内のリフレッシュテーブルにあるリード対象ブロックに対する読み出し回数データ部に、ステップＳ５０１の読み出し回数に１増加させた値を保存する（ステップＳ５０６）。
【００４２】
ＣＰＵ１１は、バッファメモリ１３内のリフレッシュテーブルにある誤り個数データ部で、誤り個数が閾値を超えているか否かを判断する（ステップＳ５０７）ここでの閾値は、エラー復元が行える限界値（エラー復元限界値）のひとつ手前の数値であり、この値を超えて本システムが稼動を続けると、その対象ブロックは、ＥＣＣで訂正ができない状態になってしまう。
【００４３】
誤り個数が閾値を超えている場合は、ステップＳ５０８へ進み、即時リフレッシュ処理を行う。なお、即時リフレッシュ処理については、図６の即時リフレッシュ処理のフローチャートにて説明する。また、誤り個数が閾値を超えていない場合は、リードコマンド処理を終了する。
【００４４】
図６は、本発明の一実施例である不揮発性記憶部を含む記憶システムの即時リフレッシュ処理のフローチャート図である。
【００４５】
図６に示すように、ＣＰＵ１１は、バッファメモリ１３から、リフレッシュテーブルを読み込む（ステップＳ６０１）。そして、ステップＳ６０２に進み、ブロック単位リフレッシュ処理を行う（ステップＳ６０２）。
【００４６】
ＣＰＵ１１は、即時リフレッシュの対象になったブロックに該当するアドレス以外で、誤り個数が一定範囲に入っているブロックに対して、リフレッシュコマンド対象フラグをリフレッシュテーブルにセットする（ステップＳ６０３）。そして、即時リフレッシュ処理を終了する。ここで、リフレッシュコマンド対象フラグをセットする際の判断基準として用いられる一定範囲の誤り個数が、エラー基準値に相当する。エラー基準値は、誤り個数がエラー復元限界値より少ない値であり、即時リフレッシュ処理をする必要はないが、定期的なリフレッシュ処理を行うための判断基準値である。
【００４７】
図７は、本発明の一実施例である不揮発性記憶部を含む記憶システムのリフレッシュテーブルバックアップ更新のフローチャート図である。
【００４８】
図７に示すように、電源が入ると、ＣＰＵ１１は、タイマー１４において予め設定された値に基づいて、メモリセルアレイ３のリフレッシュテーブルバックアップの更新を行うための割り込みを発生させる（ステップＳ７０１）。
【００４９】
ＣＰＵ１１は、アドレス入力バッファ６にリフレッシュテーブルバックアップのアドレスを書き込み、コマンド入力バッファ５にライトコマンドを書込んだ後、データ入出力バッファ４に、バッファメモリ１３のリフレッシュテーブルのデータを転送する（ステップＳ７０２）。ここで、制御回路２は、コマンド入力バッファ５からライトコマンドを受け取った後、データ入出力バッファ４に書込まれたデータをメモリセルアレイ３に書込む。これによって、バッファメモリ１３リフレッシュテーブルのデータが、メモリセルアレイ３のリフレッシュテーブルバックアップに上書きされ、データの更新が完了する。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施例のブロック図。
【図２】本発明を説明するメイン・フローチャート図。
【図３】本発明を説明するリフレッシュコマンド処理のフローチャート図。
【図４】本発明を説明するブロック単位リフレッシュ処理のフローチャート図。
【図５】本発明を説明するリードコマンド処理のフローチャート図。
【図６】本発明を説明する即時リフレッシュ処理のフローチャート図。
【図７】本発明を説明するリフレッシュテーブルバックアップの更新フローチャート図。
【図８】読み出し回数と誤り個数の発生数との関係を示すグラフ。
【符号の説明】
【００５１】
１  メモリ本体
２  制御回路
３  メモリセルアレイ
４  データ入出力バッファ
５  コマンド入力バッファ
６  アドレス入力バッファ
１０  コントローラ
１１  ＣＰＵ
１２  ＥＣＣ
１３  バッファメモリ
１４  タイマー
【図１】
2009230475.tif 000003
【図２】
2009230475.tif 000004
【図３】
2009230475.tif 000005
【図４】
2009230475.tif 000006
【図５】
2009230475.tif 000007
【図６】
2009230475.tif 000008
【図７】
2009230475.tif 000009
【図８】
2009230475.tif 000010