(57)【要約】【課題】リードディスターブを効率良く回避するための技術を提供する。【解決手段】不揮発性半導体記憶装置（１）は、不揮発性記憶部（１１）と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ（１２）とを含む。上記コントローラは、上記不揮発性記憶部に、第１領域とそれとは異なる第２領域とを設定し、上記第１領域のデータについてのリフレッシュ頻度が、上記第２領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行する。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。【選択図】図１
2012178194.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記コントローラは、上記不揮発性記憶部に、第１領域とそれとは異なる第２領域とを設定し、上記第１領域のデータについてのリフレッシュ頻度が、上記第２領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行することを特徴とする不揮発性半導体記憶装置。
【請求項２】
上記コントローラは、エラー発生にかかるデータをエラー訂正後に上記第１領域へ移動する請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、
上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用され、
上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する請求項２記載の不揮発性半導体記憶装置。
【請求項４】
上記コントローラは、上記第１領域においてデータを多重化し、且つ、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項３記載の不揮発性半導体記憶装置。
【請求項５】
上記コントローラは、上記第１領域においてデータを多重化する請求項１記載の不揮発性半導体記憶装置。
【請求項６】
上記コントローラは、上記第１領域における同一ブロック内でデータを多重化する請求項４記載の不揮発性半導体記憶装置。
【請求項７】
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項１記載の不揮発性半導体記憶装置。
【請求項８】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記不揮発性記憶部には、アドレス登録エリアが形成され、
上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を上記アドレス登録エリアに登録して管理し、且つ、
上記ドレス登録エリアに登録された領域についてのリフレッシュ頻度が、上記ドレス登録エリアに登録されていない領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行することを特徴とする不揮発性半導体記憶装置。
【請求項９】
上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を、当該領域が属する半導体チップとは異なる半導体チップにおける上記アドレス登録エリアに登録して管理する請求項８記載の不揮発性半導体記憶装置。
【請求項１０】
上記コントローラは、上記第１領域においてデータを多重化し、且つ、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項９記載の不揮発性半導体記憶装置。
【請求項１１】
上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、
上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用され、
上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する請求項８記載の不揮発性半導体記憶装置。
【請求項１２】
上記コントローラは、上記第１領域においてデータを多重化する請求項８記載の不揮発性半導体記憶装置。
【請求項１３】
上記コントローラは、上記第１領域における同一ブロック内でデータを多重化する請求項１１記載の不揮発性半導体記憶装置。
【請求項１４】
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項８記載の不揮発性半導体記憶装置。
【請求項１５】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止することを特徴とする不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置、さらにはそれにおけるリードディスターブ対策に関し、例えばＮＡＮＤフラッシュメモリシステムに適用して有効な技術に関する。
【背景技術】
【０００２】
容易に書き換え可能な不揮発性半導体記憶装置として、ＮＯＲフラッシュメモリとＮＡＮＤフラッシュメモリとを挙げることができる。ＮＯＲフラッシュメモリは、全領域へのアクセスが保証されており、またリードディスターブ不良の問題が殆ど発生しないメモリである。これに対してＮＡＮＤフラッシュメモリは、必ずしも全領域が良ブロックとして保証されておらず、また読み出し処理を続けるとデータ化けが発生するというリードディスターブ不良の問題があるが、bit単価の安いメモリである。これまでアミューズメント系システムでは、データ保存用メモリとしてＮＡＮＤフラッシュメモリよりもＮＯＲフラッシュメモリが多く使用されてきた。近年、保存するデータ量の増大によりメモリの単価低減が重要な課題となり、ＮＡＮＤフラッシュメモリを検討する例が増えてきた。リードディスターブはデータを書き直すことで解消されるが、アミューズメント系システムは読み出し処理が主で書き込み処理は殆ど又は全く実施されない。このようなシステムでは、ホスト装置が読み出し処理を繰り返すうちにリードディスターブによるデータ化けが発生する可能性があり、リードディスターブへの対策が必須となっていた。リードディスターブ対策について記載された文献として、特許文献１，２を挙げることができる。
【０００３】
特許文献１では、フラッシュメモリのエラー箇所の累積を回避するために、複数のブロックのうち全ブロック数より少ない任意の数のブロックを書き直し、所定のタイミングの度に、前回とは異なるブロックを書き直しするようにしている。
【０００４】
特許文献２では、リードディスターブが発生したとしても、データ読み出し処理に影響を及ぼすことの無いようにするため、データを多重化してアクセスを分散させるようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０１５４７７号公報
【特許文献２】特開２０１０−１５２４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＮＡＮＤフラッシュメモリにおいて、リードディスターブを回避するためには、データの書き直し処理（データ読み出し、ＥＣＣ（Error-Correcting Code）チェック後に、データを書き込む一連の処理（以下「リフレッシュ処理」と略記）を定期的に行えばよい。しかし、リードディスターブを回避するためのデータの書き直し処理を行っている期間は、ホスト装置からのリードコマンドを受け付けることができないため、ホスト装置からのデータリードが頻繁に行われる用途では、ホスト装置でのデータ処理に支障を来すおそれがある。リードディスターブを回避するためのデータの書き直し処理を、ホスト装置と連携して行うことが考えられるが、ＮＡＮＤフラッシュメモリにおけるリードディスターブに関する情報をホスト装置は把握しておらず、ホスト装置との連携は困難である。
【０００７】
特許文献１では、メモリエリアを分割して順番にリフレッシュを行うようにしているが、リード処理はユーザデータ全体で均等に行われる訳ではなく、リード負荷の大きな領域と小さな領域とが偏在し、リード負荷が偏在した場合への対応が示されていない。
【０００８】
特許文献２では、ミラー領域を作成し、ユーザデータを多重化している。しかし、単純にデータを多重化した場合には、メモリ領域を大量に使用してしまい、メモリコストが増大するおそれがある。
【０００９】
本発明の目的は、リードディスターブを効率良く回避するための技術を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、不揮発性半導体記憶装置は、不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラとを含む。このとき上記コントローラは、上記不揮発性記憶部に、第１領域とそれとは異なる第２領域とを設定し、上記第１領域のデータについてのリフレッシュ頻度が、上記第２領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行する。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、リード処理が繰り返される場合のリードディスターブを効率良く回避することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの構成例ブロック図である。
【図２】リードディスターブ（以下「ＲＤ」と略記）リフレッシュ処理の説明図である。
【図３】ＲＤリフレッシュ処理の説明図である。
【図４】ＮＡＮＤフラッシュメモリのメモリ領域の分割についての説明図である。
【図５】ＮＡＮＤフラッシュメモリのメモリ領域の分割についての説明図である。
【図６】ＲＤリフレッシュ処理順の説明図である。
【図７】データを高負荷領域に割り当てる場合の説明図である。
【図８】エラーが発生したデータを高負荷領域に移動させる場合の説明図である。
【図９】エラー発生ブロックのアドレスをアドレス登録エリアに登録する場合の説明図である。
【図１０】エラー発生ブロックのアドレスをアドレス登録エリアに登録する場合の説明図である。
【図１１】データを多重化する場合の説明図である。
【図１２】データを多重化する場合の説明図である。
【図１３】データを多重化する場合の説明図である。
【図１４】高負荷領域及び低負荷領域についての分割についての説明図である。
【図１５】ＲＤリフレッシュ処理順の説明図である。
【図１６】本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの別の構成例ブロック図である。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置（１）は、不揮発性記憶部（１１）と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ（１２）とを含む。このとき上記コントローラは、上記不揮発性記憶部に、第１領域とそれとは異なる第２領域とを設定し、上記第１領域のデータについてのリフレッシュ頻度が、上記第２領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行する。このようなリフレッシュ処理によれば、上記第１領域のデータについてのリフレッシュ頻度が、上記第２領域のデータについてのリフレッシュ頻度に比べて高くなるので、例えばリードアクセスが特に多いデータについては上記第１領域に格納することによって、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。
【００１８】
〔２〕上記〔１〕において、ユーザの見落としや想定外のリードアクセスに対応させるには、上記コントローラは、エラー発生にかかるデータをエラー訂正後に上記第１領域へ移動するように構成すると良い。
【００１９】
〔３〕上記〔２〕において、上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用される。上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する。この場合、ホストシステム（２）のコマンド体系を変更する必要がないという利点がある。
【００２０】
〔４〕上記〔３〕において、上記コントローラは、上記第１領域においてデータを多重化するように構成することができる。さらに上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部（１１）の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【００２１】
〔５〕上記〔１〕において、上記コントローラは、上記第１領域においてデータを多重化するように構成することができる。
【００２２】
〔６〕上記〔４〕において、データ移動時間の短縮等を図るには、上記第１領域における同一ブロック内でデータを多重化すると良い。
【００２３】
〔７〕上記〔１〕において、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部（１１）の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【００２４】
〔８〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置（１）は、不揮発性記憶部（１１）と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ（１２）とを含む。このとき、上記不揮発性記憶部には、アドレス登録エリアが形成される。上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を上記アドレス登録エリアに登録して管理する。さらに上記コントローラは、上記ドレス登録エリアに登録された領域についてのリフレッシュ頻度が、上記ドレス登録エリアに登録されていない領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第１領域及び上記第２領域についてのリフレッシュ処理を実行する。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。
【００２５】
〔９〕上記〔８〕において、上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を、当該領域が属する半導体チップとは異なる半導体チップにおける上記アドレス登録エリアに登録して管理するように構成することができる。
【００２６】
〔１０〕上記〔９〕において、上記コントローラは、上記第１領域においてデータを多重化することができる。さらに上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部（１１）の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【００２７】
〔１１〕上記〔８〕において、上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用される。上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する。この場合、ホストシステム（２）のコマンド体系を変更する必要がないという利点がある。
【００２８】
〔１２〕上記〔８〕において、上記コントローラは、上記第１領域においてデータを多重化することができる。
【００２９】
〔１３〕上記〔１１〕において、データ移動時間の短縮や、リードディスターブに対する負荷の低減を図るには、上記第１領域における同一ブロック内でデータを多重化すると良い。
【００３０】
〔１４〕上記〔８〕において、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部（１１）の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【００３１】
〔１５〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置（１）は、不揮発性記憶部（１１）と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ（１２）とを含む。このとき、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する。
【００３２】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３３】
《実施の形態１》
図１には、本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの構成例が示される。フラッシュメモリシステム１は、複数のＮＡＮＤフラッシュメモリ（不揮発性記憶部）１１とコントローラ１２とを含み、ホストシステム（単に「ホスト」という）２に結合される。ホスト２は、特に制限されないが、ゲーム機やパチンコ台などのアミューズメント系システムにおける制御装置とされる。ＮＡＮＤフラッシュメモリ１１はホスト２によってリード／ライト可能とされる。ＮＡＮＤフラッシュメモリ１１には、ホスト２で表示される画像データなど、ホスト２で必要とされる各種データが記録されている。また、ＮＡＮＤフラッシュメモリ１１には、システム領域が形成され、このシステム領域には、ＮＡＮＤフラッシュメモリ１１において各種機能を実現するための変数、例えば高負荷領域及び低負荷領域の指定情報、ＥＣＣ判定閾値、リフレッシュ頻度についての情報などが記録されている。これらの数値は、出荷テスト等で書き換え可能とされ、顧客要望に応じて設定される。ＮＡＮＤフラッシュメモリ１１やコントローラ１２は、それぞれ公知の半導体集積回路製造技術により、例えば単結晶シリコン基板などの一つの半導体基板に形成されている。ＮＡＮＤフラッシュメモリ１１へのデータ書込みや、ＮＡＮＤフラッシュメモリ１１からのデータ読出しは、コントローラ１２を介して行われる。ＮＡＮＤフラッシュメモリ１１に対する書込み単位を「ページ」といい、消去単位を「ブロック」という。コントローラ１２は、ホスト２から与えられたコマンドを解釈してＮＡＮＤフラッシュメモリ１１の動作制御を行う。このコントローラ１２は、特に制限されないが、ＣＰＵ（中央処理装置）１２１、ＲＯＭ（リード・オンリー・メモリ）１２２、ＲＡＭ（ランダム・アクセス・メモリ）１２３、ＥＣＣ（エラー検出訂正）回路１２４を含む。ＲＯＭ１２２には、ＣＰＵ１２１で実行されるプログラムが格納される。ＣＰＵ１２１は、ＲＯＭ１２２内のプログラムを実行することによって、各部の動作制御を行う。ＲＡＭ１２３は、ＣＰＵ１２１でプログラムが実行される際の作業領域などに利用される。ＥＣＣ回路１２４は、ＮＡＮＤフラッシュメモリ１１から読出されるデータに符号誤り（エラー）が発生した場合にそれを検出して訂正する。
【００３４】
次に、リードアクセスが繰り返される場合のリードディスターブを効率良く回避するための対策について説明する。
【００３５】
ＮＡＮＤフラッシュメモリ１１においては、リードディスターブを回避するために、ＲＤリフレッシュ処理が行われる。基本的なＲＤリフレッシュ処理として、「選択的書き直し処理」と「毎回書き直し処理」とを挙げることができる。
【００３６】
選択的書き直し処理は、ホスト２から与えられた所定コマンド、又はフラッシュメモリシステム１のパワーオンリセット処理をトリガとして開始される。この選択的書き直し処理においては、例えば図２に示されるように、対象領域のデータが読み出されてＥＣＣチェックが行われ、ＥＣＣエラーが検出されたブロック（エラー有りブロック）については、エラー訂正後に書き直しが行われる。この書き直しは、電源遮断等に起因するデータ消失を回避するため、データ読み出しが行われたブロックとは異なるブロックに対して行われる。
【００３７】
毎回書き直し処理は、リードアクセスが多い場合に、ホスト２から与えられた所定コマンド、又はフラッシュメモリシステム１のパワーオンリセット処理をトリガとして開始される。この毎回書き直し処理においては、上記トリガ毎に、対象領域のデータが読み出されて、ＥＣＣチェック結果に関わらず、書き直しが行われる。
【００３８】
尚、選択的書き直し処理、及び毎回書き直し処理の何れの場合でも、一度に処理される対象領域の大きさ（対象ブロック数）は、ホスト２からの要請により決定される。
【００３９】
上記ＲＤリフレッシュ処理について具体的に説明する。
【００４０】
ＲＤリフレッシュ処理のタイミングは、コントローラ１２によって、以下のように制御される。
【００４１】
ＲＤリフレッシュ処理は、ホスト２と連携させるため、ホスト２から与えられた所定コマンド、又はフラッシュメモリシステム１のパワーオンリセット処理をトリガとして開始され、以下のタイミングで書き直し処理が行われる。尚、ＲＤリフレッシュ処理は、ホスト２の許容時間内に終了させる。
【００４２】
ＲＤリフレッシュ処理の開始を指示するための所定コマンドは、既存のコマンド、例えばリードコマンドを代用することができる。このリードコマンドにおいて、「通常はあり得ないアドレス」が指定された場合に、コントローラ１２は、それをＲＤリフレッシュコマンドとして認識する。ここで「通常はあり得ないアドレス」として、例えばフラッシュメモリシステム１における最大アドレスを越えるアドレスを挙げることができる。リードコマンドによって、フラッシュメモリシステム１における最大アドレスを越えるアドレスが指定された場合、通常はコマンドエラーとなるが、コントローラ１２は、それをＲＤリフレッシュコマンドとして認識し、それをトリガとしてＲＤリフレッシュ処理を開始する。このようにリードコマンドを代用することによって、既存のホスト２を修正することなく、ＲＤリフレッシュ処理に対応可能となる。
【００４３】
次に、メモリエリアの分割について説明する。
【００４４】
ＮＡＮＤフラッシュメモリ１１のリード負荷は、メモリ全領域に渡って均一ではない。また単純に全領域を書き直しては、処理時間が長すぎて実用的ではなく、ＲＤリフレッシュ処理の効率化が必要となる。そこで、ＮＡＮＤフラッシュメモリ１１のメモリ領域をリード負荷に応じて分割し、リード負荷に応じてＲＤリフレッシュ処理が行われるようにする。例えば図４に示されるように、ＮＡＮＤフラッシュメモリ１１のメモリ領域を高負荷領域５１と低負荷領域５２とに分割し、高負荷領域５１に対しては重点的にＲＤリフレッシュ処理が行われる。高負荷領域５１及び低負荷領域５２の設定は、例えばフラッシュメモリシステム１のパワーオンリセット処理等において、コントローラ１２によって行われる。ここで、高負荷領域５１に対しては、ＲＤリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム１のパワーオンリセット処理が行われる毎に、ＲＤリフレッシュ処理を行う。これに対して、低負荷領域５２に対しては選択的にＲＤリフレッシュ処理が行われるようにする。このようなＲＤリフレッシュ処理は、コントローラ１２によって制御される。このようにリード負荷に応じてＲＤリフレッシュ処理が行われるようにすることで、ＲＤリフレッシュ処理の効率向上を図ることができる。また、低負荷領域を複数に分割することができる。例えば図５に示されるように、ＮＡＮＤフラッシュメモリ１１のメモリ領域を、高負荷領域５１と、低負荷領域５２−１，５２−２，５２−３，５２−４とに分割し、高負荷領域５１に対しては重点的にＲＤリフレッシュ処理を行い、低負荷領域５２−１，５２−２，５２−３，５２−４に対しては選択的にＲＤリフレッシュ処理を行うようにしても良い。
【００４５】
次に、高負荷領域及び低負荷領域において、ＲＤリフレッシュ処理を効率よく実施するため、ＲＤリフレッシュ処理開始アドレスが定義される。ＲＤリフレッシュ処理は、このＲＤリフレッシュ処理開始アドレスから順番に開始される。ＲＤリフレッシュ処理の対象領域を分散させるため、ＲＤリフレッシュ処理開始アドレスは順次更新されるものとする。例えばＲＤリフレッシュ開始アドレスは、ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されている。パワーオンリセット処理において、ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されているＲＤリフレッシュ開始アドレスを変更することができる。ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されているＲＤリフレッシュ開始アドレスが、パワーオンリセット処理において、ＲＡＭ１２３にロードされる。そしてこのＲＡＭ１２３内のＲＤリフレッシュ開始アドレスはＲＤリフレッシュ処理が行われる毎に順次更新されるが、ＮＡＮＤフラッシュメモリ１１のシステム領域にはフィードバックされない。具体的には以下のようにＲＤリフレッシュ処理が行われる。
【００４６】
図５に示されるように領域分割されている場合において、高負荷領域５１がメモリ全体の２０％、低負荷領域５２がメモリ全体の８０％（２０％毎に４分割）とし、１回のリフレッシュ処理で４０％の領域についてＲＤリフレッシュ処理される場合について説明する。このようなリフレッシュ頻度の情報は、ＮＡＮＤフラッシュメモリ１１におけるシステム領域に格納される。この場合、例えば図６に示されるように、高負荷領域５１と低負荷領域５２−２とが一度にＲＤリフレッシュ処理され、その後、高負荷領域５１と低負荷領域５２−３とが一度にＲＤリフレッシュ処理される。次に高負荷領域５１と低負荷領域５２−４とが一度にＲＤリフレッシュ処理され、その後、高負荷領域５１と低負荷領域５２−１とが一度にＲＤリフレッシュ処理される。以下、同様にＲＤリフレッシュ処理が繰り返される。このようなＲＤリフレッシュ処理によれば、高負荷領域５１については毎回ＲＤリフレッシュ処理されるのに対して、低負荷領域５２については、４回のＲＤリフレッシュ処理で低負荷領域５２−１，５２−２，５２−３，５２−４の全てのリフレッシュが完了する。これにより、高負荷領域におけるデータについてのリフレッシュ頻度は、低負荷領域におけるデータについてのリフレッシュ頻度に比べて高くなる。
【００４７】
高負荷領域及び低負荷領域へのデータの割り当てについて説明する。
【００４８】
高負荷領域及び低負荷領域へのデータの割り当て方式として、ユーザが意図的に割り当てる第１方式、エラーが発生したデータを高負荷領域に移動させる第２方式、上記第１方式と第２方式とを組み合わせた第３方式を挙げることができる。
【００４９】
図７には、ユーザが意図的に割り当てる第１方式が示される。
【００５０】
ユーザが意図的に、リードアクセスが多いデータを高負荷領域５１に割り当てることができる。図７に示される例では、リードアクセスが多いデータ（移動元ブロック内のデータ）が高負荷領域５１の移動先ブロックに割り当てられる（７３）。高負荷領域５１に対しては、ＲＤリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム１のパワーオンリセット処理が行われる毎にＲＤリフレッシュ処理が行われるため、ＲＤリフレッシュ処理が確実に実施されるようになる。
【００５１】
図８には、エラーが発生したデータを高負荷領域に移動させる第２方式が示される。
【００５２】
高負荷領域５１は、初めに空き領域としておき、低負荷領域５２のブロックでエラーが発生した場合にそのエラー発生データがＣＰＵ１２１によって逐次高負荷領域５１に移動される。図８に示される例では、低負荷領域５２における移動元ブロックのデータにエラーが発生し、そのエラー発生データがＣＰＵ１２１によって高負荷領域５１における移動先ブロックに移動されている。このように、エラー発生データがＣＰＵ１２１によって高負荷領域５１における移動先ブロックに移動される第２方式によれば、ユーザの見落としや想定外のリードアクセスに対応することができる。
【００５３】
また、上記第１方式と上記第２方式との組み合わせた第３方式では、ユーザがリードアクセスが多いデータを高負荷領域５１に配置するが、高負荷領域５１に一定程度の空き領域を確保しておき、エラーが発生したデータがＣＰＵ１２１によって高負荷領域５１の空き領域に遂次移動される。それによれば、確実にＲＤリフレッシュ処理が実施される上、ユーザの見落としや想定外のリードアクセスに対応できる。
【００５４】
《実施の形態２》
図１に示されるフラッシュメモリシステム１において、エラー発生ブロックの管理を行う場合について説明する。
【００５５】
図９に示されるように、ＮＡＮＤフラッシュメモリ１１のシステム領域にアドレス登録エリア９１を形成し、エラー発生ブロック９２のアドレスを上記アドレス登録エリア９１に登録して管理することができる。つまり、ＣＰＵ１２１は、ＲＤリフレッシュ処理中にエラーを確認した場合に、そのエラー発生ブロック９２のアドレスを上記アドレス登録エリア９１に登録する。上記アドレス登録エリア９１に登録されたエラー発生ブロック９２は、上記高負荷領域５１と同等に取り扱われる。つまり、上記アドレス登録エリア９１に登録されたエラー発生ブロック９２は、ＲＤリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム１のパワーオンリセット処理が行われる毎にＲＤリフレッシュ処理が行われる。また、上記アドレス登録エリア９１に登録されていないブロックについては、上記低負荷領域５２と同等に取り扱われる。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。また、ＣＰＵ１２１は、アドレス登録エリア９１をリードすることによって、エラー発生ブロックを速やかに把握できるため、ＲＤリフレッシュ処理対象の検索を短時間で行うことができる。
【００５６】
エラー発生ブロック９２と、それを登録するアドレス登録エリア９１とが同一の半導体チップの場合、エラー発生ブロック９２をアドレス登録エリア９１に登録している期間は、当該半導体チップにおけるＲＤリフレッシュ処理のためのリードができなくなる。これを回避するには、エラー発生ブロックのアドレスを別の半導体チップに登録すれば良い。例えば図１０に示されるように、フラッシュメモリシステム１に半導体チップＣｈｉｐ０，Ｃｈｉｐ１を有する場合において、半導体チップＣｈｉｐ０には、半導体チップＣｈｉｐ１用のアドレス登録エリア９１−０を形成し、半導体チップＣｈｉｐ１には、半導体チップＣｈｉｐ０用のアドレス登録エリア９１−１を形成する。ＣＰＵ１２１は、半導体チップＣｈｉｐ０におけるエラー発生ブロック９２−０のアドレスを半導体チップＣｈｉｐ１におけるアドレス登録エリア９１−１に登録し、半導体チップＣｈｉｐ１におけるエラー発生ブロック９２−１のアドレスを半導体チップＣｈｉｐ０におけるアドレス登録エリア９１−０に登録する。これにより、半導体チップＣｈｉｐ０におけるエラー発生ブロック９２−０のアドレスを半導体チップＣｈｉｐ１におけるアドレス登録エリア９１−１に登録中に、半導体チップＣｈｉｐ０におけるリード処理が可能になる。また、半導体チップＣｈｉｐ１におけるエラー発生ブロック９２−１のアドレスを半導体チップＣｈｉｐ０におけるアドレス登録エリア９１−０に登録中に、半導体チップＣｈｉｐ１におけるリード処理が可能になる。
【００５７】
《実施の形態３》
図１に示されるフラッシュメモリシステム１において、高負荷領域の多重化を行う場合について説明する。
【００５８】
リードアクセスが多いと想定されるデータを多重化することで、リードアクセスを分散することができる。例えば図１１に示されるように、コントローラ１２は、高負荷領域５１を多重化部５１−１，５１−２に分けて管理し、高負荷領域５１におけるデータを上記多重化部５１−１，５１−２で多重化する。つまり、多重化部５１−１にオリジナルデータが格納されている場合に、多重化部５１−２には、上記オリジナルデータのコピーデータが格納されることにより、上記多重化部５１−１，５１−２の何れをアクセスしても同一データを得ることができるようにする。これにより、リードアクセスを多重化部５１−１，５１−２に分散させることができる。
【００５９】
高負荷領域において、ブロック毎にデータを多重化することができる。例えば図１２に示されるように、オリジナルデータＯｒｇ−０，Ｏｒｇ−１と、そのコピーデータＣｏｐｙ−０，Ｃｏｐｙ−１とがそれぞれ別ブロックに記録されることで多重化される。ＲＤリフレッシュ処理において、読み出されるデータは、一つのブロックにおける全データが対象となる。例えば一つのブロックにおけるコピーデータＣｏｐｙ−０，Ｃｏｐｙ−１の２ページ分のデータが読み出されて、ＥＣＣ訂正後に別ブロックに書き直される。このため、オリジナルデータ又はコピーデータを読み出す際に、一つのブロックに負荷が集中する。
【００６０】
また、高負荷領域において、一つのブロック内でデータを多重化することができる。例えば図１３に示されるように、オリジナルデータＯｒｇ−０と、そのコピーデータＣｏｐｙ−０とが同一ブロックに記録されることで多重化され、オリジナルデータＯｒｇ−１と、そのコピーデータＣｏｐｙ−１とが同一ブロックに記録されることで多重化される。この場合、ＲＤリフレッシュ処理において、読み出されるデータは、図１２に示される場合の１／２で済む。例えば一つのブロックにおけるオリジナルデータＯｒｇ−１とそのコピーデータＣｏｐｙ−１とは同一であるため、オリジナルデータＯｒｇ−１又はそのコピーデータＣｏｐｙ−１のみを読み出せば良い。同様に、一つのブロックにおけるオリジナルデータＯｒｇ−０とそのコピーデータＣｏｐｙ−０とは同一であるため、オリジナルデータＯｒｇ−０又はそのコピーデータＣｏｐｙ−０のみを読み出せば良い。このように図１３に示される多重化によれば、図１３に示される多重化に比べて、ＲＤリフレッシュ処理に読み出されるデータが１／２で良いため、データ読み出し時間の短縮や、１ブロック当たりのリードアクセスの低減を図ることができる。
【００６１】
図１４に示されるように、高負荷領域５１を多重化部５１−１，５１−２に分割し、低負荷領域５２を低負荷領域５２−１，５２−２，５２−３，５２−４に分割することができる。この場合、多重化部５１−１，５１−２（高負荷領域５１）に対しては重点的にＲＤリフレッシュ処理が行われ、低負荷領域５２−１，５２−２，５２−３，５２−４に対しては選択的にＲＤリフレッシュ処理が行われる。
【００６２】
重化部５１−１，５１−２（高負荷領域５１）、及び低負荷領域５２−１，５２−２，５２−３，５２−４において、ＲＤリフレッシュ処理を効率よく実施するため、ＲＤリフレッシュ処理開始アドレスが定義される。ＲＤリフレッシュ処理は、このＲＤリフレッシュ処理開始アドレスから順番に開始される。ＲＤリフレッシュ処理の対象領域を分散させるため、ＲＤリフレッシュ処理開始アドレスは順次更新されるものとする。例えばＲＤリフレッシュ開始アドレスは、ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されている。パワーオンリセット処理において、ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されているＲＤリフレッシュ開始アドレスを変更することができる。ＮＡＮＤフラッシュメモリ１１のシステム領域に記録されているＲＤリフレッシュ開始アドレスが、パワーオンリセット処理において、ＲＡＭ１２３にロードされる。そしてこのＲＡＭ１２３内のＲＤリフレッシュ開始アドレスはＲＤリフレッシュ処理が行われる毎に順次更新されるが、ＮＡＮＤフラッシュメモリ１１のシステム領域にはフィードバックされない。具体的には以下のようにＲＤリフレッシュ処理が行われる。
【００６３】
図１４に示されるように領域分割されている場合において、高負荷領域５１がメモリ全体の３３％（１６％毎に２分割）、低負荷領域５２がメモリ全体の６７％（１６％毎に４分割）とし、１回のリフレッシュ処理で３３％の領域についてＲＤリフレッシュ処理される場合について説明する。このようなリフレッシュ頻度の情報は、ＮＡＮＤフラッシュメモリ１１におけるシステム領域に格納される。この場合、例えば図１５に示されるように、多重化部５１−２と低負荷領域５２−２とが一度にＲＤリフレッシュ処理され、その後、多重化部５１−１と低負荷領域５２−３とが一度にＲＤリフレッシュ処理される。次に多重化部５１−２と低負荷領域５２−４とが一度にＲＤリフレッシュ処理され、その後、多重化部５１−１と低負荷領域５２−１とが一度にＲＤリフレッシュ処理される。以下、同様にＲＤリフレッシュ処理が繰り返される。このようなＲＤリフレッシュ処理によれば、高負荷領域５１については、毎回１／２ずつＲＤリフレッシュ処理されるのに対して、低負荷領域５２については、４回のＲＤリフレッシュ処理で低負荷領域５２−１，５２−２，５２−３，５２−４の全てのリフレッシュが完了する。換言すれば、高負荷領域５１については、重点的にＲＤリフレッシュ処理が行われ、低負荷領域５２については、選択的にＲＤリフレッシュ処理が行われる。
【００６４】
《実施の形態４》
図１６には、本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの別の構成例が示される。図１６に示されるフラッシュメモリシステム１が、図１に示されるのと大きく相違するのは、パワーオン回路１６が設けられている点である。パワーオン回路１６は、フラッシュメモリシステム１におけるパワーオン回数（電源投入回数）を保持する機能を有する。この機能は、コントローラ１２内のＣＰＵ１２１（図１参照）によってリード／ライト可能なレジスタによって実現される。パワーオン回数（電源投入回数）情報は、ＮＡＮＤフラッシュメモリ１１のシステム領域に保持されており、それが、ＣＰＵ１２１でのパワーオンリセット処理においてパワーオン回路１６にロードされてからインクリメントされる。パワーオン回路１６に保持されているパワーオン回数は、ＮＡＮＤフラッシュメモリ１１の電源遮断時に、ＮＡＮＤフラッシュメモリ１１のシステム領域にフィードバックされることで、ＮＡＮＤフラッシュメモリ１内のパワーオン回数情報が更新される。
【００６５】
ここで、ホスト２からＲＤリフレッシュコマンドが発行された場合、コントローラ１２は、上記ＲＤリフレッシュコマンドに応じて、ＲＤ処理対象ブロックのデータが読み出されてＥＣＣチェックが行われ、ＥＣＣエラーが検出されたブロックについてはエラー訂正が行われた後に、別のブロックへの書き直しが行われる。また、リードアクセスが多い場合（高負荷領域の場合）には、ＥＣＣチェックの結果にかかわらずに、毎回書き直しが行われる。
【００６６】
ＲＤ対策を確実に実施するためには、ホスト２は十分な回数のＲＤリフレッシュコマンドを発行する必要があるが、ホスト２によって過剰にＲＤリフレッシュコマンドが発行されると、ＮＡＮＤフラッシュメモリ１１の書き換え回数の上限を越えてしまうおそれがある。特に、リードアクセスが多い場合（高負荷領域の場合）には、ＥＣＣチェックの結果にかかわらずに、毎回書き直しが行われるため、ＮＡＮＤフラッシュメモリ１１の書き換え回数の上限を越える可能性が高い。
【００６７】
ＮＡＮＤフラッシュメモリ１１が適用される製品（本例では、ゲーム機やパチンコ台などのアミューズメント系システム）の寿命と、ＮＡＮＤフラッシュメモリ１１の書き換え回数の制限との関係から、ＮＡＮＤフラッシュメモリ１１の１日当たりの書き換え回数の上限が予測できる。また、ゲーム機やパチンコ台などのアミューズメント系システムのように、ＮＡＮＤフラッシュメモリ１１の１日当たりのパワーオン回数がほぼ決まっている場合には、ＮＡＮＤフラッシュメモリ１１のパワーオンの回数に応じた書き換え回数の上限を想定することができる。そこで、コントローラ１２は、ＮＡＮＤフラッシュメモリ１１において書き直しが行われる際に、データの書き直し先のブロックにおける書換え回数とパワーオン回数とに基づいて、データの書き直しを実行するか否かを判別する。データの書き直し先のブロックにおける書換え回数は、ＮＡＮＤフラッシュメモリ１１におけるシステム領域に保存されている。コントローラ１２は、データの書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行する。しかし、データの書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合には、今回のデータの書き直しを中止する。このようにＮＡＮＤフラッシュメモリ１１におけるデータの書き直しが制限されるため、ホスト２は、ＮＡＮＤフラッシュメモリ１１の書き換え回数を考慮することなく、ＲＤリフレッシュコマンドを発行することができる。
【００６８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００６９】
１  フラッシュメモリシステム
２  ホスト
１１  ＮＡＮＤフラッシュメモリ
１２  コントローラ
１６  パワーオン回路
１２１  ＣＰＵ
１２２  ＲＯＭ
１２３  ＲＡＭ
１２４  ＥＣＣ回路
【図１】
2012178194.tif 000003
【図２】
2012178194.tif 000004
【図３】
2012178194.tif 000005
【図４】
2012178194.tif 000006
【図５】
2012178194.tif 000007
【図６】
2012178194.tif 000008
【図７】
2012178194.tif 000009
【図８】
2012178194.tif 000010
【図９】
2012178194.tif 000011
【図１０】
2012178194.tif 000012
【図１１】
2012178194.tif 000013
【図１２】
2012178194.tif 000014
【図１３】
2012178194.tif 000015
【図１４】
2012178194.tif 000016
【図１５】
2012178194.tif 000017
【図１６】
2012178194.tif 000018