説明

不揮発性半導体記憶装置

【課題】リードディスターブを効率良く回避するための技術を提供する。
【解決手段】不揮発性半導体記憶装置(1)は、不揮発性記憶部(11)と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ(12)とを含む。上記コントローラは、上記不揮発性記憶部に、第1領域とそれとは異なる第2領域とを設定し、上記第1領域のデータについてのリフレッシュ頻度が、上記第2領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行する。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性半導体記憶装置、さらにはそれにおけるリードディスターブ対策に関し、例えばNANDフラッシュメモリシステムに適用して有効な技術に関する。
【背景技術】
【0002】
容易に書き換え可能な不揮発性半導体記憶装置として、NORフラッシュメモリとNANDフラッシュメモリとを挙げることができる。NORフラッシュメモリは、全領域へのアクセスが保証されており、またリードディスターブ不良の問題が殆ど発生しないメモリである。これに対してNANDフラッシュメモリは、必ずしも全領域が良ブロックとして保証されておらず、また読み出し処理を続けるとデータ化けが発生するというリードディスターブ不良の問題があるが、bit単価の安いメモリである。これまでアミューズメント系システムでは、データ保存用メモリとしてNANDフラッシュメモリよりもNORフラッシュメモリが多く使用されてきた。近年、保存するデータ量の増大によりメモリの単価低減が重要な課題となり、NANDフラッシュメモリを検討する例が増えてきた。リードディスターブはデータを書き直すことで解消されるが、アミューズメント系システムは読み出し処理が主で書き込み処理は殆ど又は全く実施されない。このようなシステムでは、ホスト装置が読み出し処理を繰り返すうちにリードディスターブによるデータ化けが発生する可能性があり、リードディスターブへの対策が必須となっていた。リードディスターブ対策について記載された文献として、特許文献1,2を挙げることができる。
【0003】
特許文献1では、フラッシュメモリのエラー箇所の累積を回避するために、複数のブロックのうち全ブロック数より少ない任意の数のブロックを書き直し、所定のタイミングの度に、前回とは異なるブロックを書き直しするようにしている。
【0004】
特許文献2では、リードディスターブが発生したとしても、データ読み出し処理に影響を及ぼすことの無いようにするため、データを多重化してアクセスを分散させるようにしている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−015477号公報
【特許文献2】特開2010−152472号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
NANDフラッシュメモリにおいて、リードディスターブを回避するためには、データの書き直し処理(データ読み出し、ECC(Error-Correcting Code)チェック後に、データを書き込む一連の処理(以下「リフレッシュ処理」と略記)を定期的に行えばよい。しかし、リードディスターブを回避するためのデータの書き直し処理を行っている期間は、ホスト装置からのリードコマンドを受け付けることができないため、ホスト装置からのデータリードが頻繁に行われる用途では、ホスト装置でのデータ処理に支障を来すおそれがある。リードディスターブを回避するためのデータの書き直し処理を、ホスト装置と連携して行うことが考えられるが、NANDフラッシュメモリにおけるリードディスターブに関する情報をホスト装置は把握しておらず、ホスト装置との連携は困難である。
【0007】
特許文献1では、メモリエリアを分割して順番にリフレッシュを行うようにしているが、リード処理はユーザデータ全体で均等に行われる訳ではなく、リード負荷の大きな領域と小さな領域とが偏在し、リード負荷が偏在した場合への対応が示されていない。
【0008】
特許文献2では、ミラー領域を作成し、ユーザデータを多重化している。しかし、単純にデータを多重化した場合には、メモリ領域を大量に使用してしまい、メモリコストが増大するおそれがある。
【0009】
本発明の目的は、リードディスターブを効率良く回避するための技術を提供することにある。
【0010】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0011】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0012】
すなわち、不揮発性半導体記憶装置は、不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラとを含む。このとき上記コントローラは、上記不揮発性記憶部に、第1領域とそれとは異なる第2領域とを設定し、上記第1領域のデータについてのリフレッシュ頻度が、上記第2領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行する。
【発明の効果】
【0013】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0014】
すなわち、リード処理が繰り返される場合のリードディスターブを効率良く回避することができる。
【図面の簡単な説明】
【0015】
【図1】本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの構成例ブロック図である。
【図2】リードディスターブ(以下「RD」と略記)リフレッシュ処理の説明図である。
【図3】RDリフレッシュ処理の説明図である。
【図4】NANDフラッシュメモリのメモリ領域の分割についての説明図である。
【図5】NANDフラッシュメモリのメモリ領域の分割についての説明図である。
【図6】RDリフレッシュ処理順の説明図である。
【図7】データを高負荷領域に割り当てる場合の説明図である。
【図8】エラーが発生したデータを高負荷領域に移動させる場合の説明図である。
【図9】エラー発生ブロックのアドレスをアドレス登録エリアに登録する場合の説明図である。
【図10】エラー発生ブロックのアドレスをアドレス登録エリアに登録する場合の説明図である。
【図11】データを多重化する場合の説明図である。
【図12】データを多重化する場合の説明図である。
【図13】データを多重化する場合の説明図である。
【図14】高負荷領域及び低負荷領域についての分割についての説明図である。
【図15】RDリフレッシュ処理順の説明図である。
【図16】本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの別の構成例ブロック図である。
【発明を実施するための形態】
【0016】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0017】
〔1〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置(1)は、不揮発性記憶部(11)と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ(12)とを含む。このとき上記コントローラは、上記不揮発性記憶部に、第1領域とそれとは異なる第2領域とを設定し、上記第1領域のデータについてのリフレッシュ頻度が、上記第2領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行する。このようなリフレッシュ処理によれば、上記第1領域のデータについてのリフレッシュ頻度が、上記第2領域のデータについてのリフレッシュ頻度に比べて高くなるので、例えばリードアクセスが特に多いデータについては上記第1領域に格納することによって、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。
【0018】
〔2〕上記〔1〕において、ユーザの見落としや想定外のリードアクセスに対応させるには、上記コントローラは、エラー発生にかかるデータをエラー訂正後に上記第1領域へ移動するように構成すると良い。
【0019】
〔3〕上記〔2〕において、上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用される。上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する。この場合、ホストシステム(2)のコマンド体系を変更する必要がないという利点がある。
【0020】
〔4〕上記〔3〕において、上記コントローラは、上記第1領域においてデータを多重化するように構成することができる。さらに上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部(11)の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【0021】
〔5〕上記〔1〕において、上記コントローラは、上記第1領域においてデータを多重化するように構成することができる。
【0022】
〔6〕上記〔4〕において、データ移動時間の短縮等を図るには、上記第1領域における同一ブロック内でデータを多重化すると良い。
【0023】
〔7〕上記〔1〕において、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部(11)の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【0024】
〔8〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置(1)は、不揮発性記憶部(11)と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ(12)とを含む。このとき、上記不揮発性記憶部には、アドレス登録エリアが形成される。上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を上記アドレス登録エリアに登録して管理する。さらに上記コントローラは、上記ドレス登録エリアに登録された領域についてのリフレッシュ頻度が、上記ドレス登録エリアに登録されていない領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行する。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。
【0025】
〔9〕上記〔8〕において、上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を、当該領域が属する半導体チップとは異なる半導体チップにおける上記アドレス登録エリアに登録して管理するように構成することができる。
【0026】
〔10〕上記〔9〕において、上記コントローラは、上記第1領域においてデータを多重化することができる。さらに上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部(11)の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【0027】
〔11〕上記〔8〕において、上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用される。上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する。この場合、ホストシステム(2)のコマンド体系を変更する必要がないという利点がある。
【0028】
〔12〕上記〔8〕において、上記コントローラは、上記第1領域においてデータを多重化することができる。
【0029】
〔13〕上記〔11〕において、データ移動時間の短縮や、リードディスターブに対する負荷の低減を図るには、上記第1領域における同一ブロック内でデータを多重化すると良い。
【0030】
〔14〕上記〔8〕において、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止するように構成することができる。これにより、不揮発性半導体記憶装置単体で、過剰書き直しを制限することができるので、ホストシステムは、不揮発性記憶部(11)の書き換え回数を考慮することなく、リフレッシュのためのコマンドを発行することができる。
【0031】
〔15〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置(1)は、不揮発性記憶部(11)と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラ(12)とを含む。このとき、上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する。
【0032】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0033】
《実施の形態1》
図1には、本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの構成例が示される。フラッシュメモリシステム1は、複数のNANDフラッシュメモリ(不揮発性記憶部)11とコントローラ12とを含み、ホストシステム(単に「ホスト」という)2に結合される。ホスト2は、特に制限されないが、ゲーム機やパチンコ台などのアミューズメント系システムにおける制御装置とされる。NANDフラッシュメモリ11はホスト2によってリード/ライト可能とされる。NANDフラッシュメモリ11には、ホスト2で表示される画像データなど、ホスト2で必要とされる各種データが記録されている。また、NANDフラッシュメモリ11には、システム領域が形成され、このシステム領域には、NANDフラッシュメモリ11において各種機能を実現するための変数、例えば高負荷領域及び低負荷領域の指定情報、ECC判定閾値、リフレッシュ頻度についての情報などが記録されている。これらの数値は、出荷テスト等で書き換え可能とされ、顧客要望に応じて設定される。NANDフラッシュメモリ11やコントローラ12は、それぞれ公知の半導体集積回路製造技術により、例えば単結晶シリコン基板などの一つの半導体基板に形成されている。NANDフラッシュメモリ11へのデータ書込みや、NANDフラッシュメモリ11からのデータ読出しは、コントローラ12を介して行われる。NANDフラッシュメモリ11に対する書込み単位を「ページ」といい、消去単位を「ブロック」という。コントローラ12は、ホスト2から与えられたコマンドを解釈してNANDフラッシュメモリ11の動作制御を行う。このコントローラ12は、特に制限されないが、CPU(中央処理装置)121、ROM(リード・オンリー・メモリ)122、RAM(ランダム・アクセス・メモリ)123、ECC(エラー検出訂正)回路124を含む。ROM122には、CPU121で実行されるプログラムが格納される。CPU121は、ROM122内のプログラムを実行することによって、各部の動作制御を行う。RAM123は、CPU121でプログラムが実行される際の作業領域などに利用される。ECC回路124は、NANDフラッシュメモリ11から読出されるデータに符号誤り(エラー)が発生した場合にそれを検出して訂正する。
【0034】
次に、リードアクセスが繰り返される場合のリードディスターブを効率良く回避するための対策について説明する。
【0035】
NANDフラッシュメモリ11においては、リードディスターブを回避するために、RDリフレッシュ処理が行われる。基本的なRDリフレッシュ処理として、「選択的書き直し処理」と「毎回書き直し処理」とを挙げることができる。
【0036】
選択的書き直し処理は、ホスト2から与えられた所定コマンド、又はフラッシュメモリシステム1のパワーオンリセット処理をトリガとして開始される。この選択的書き直し処理においては、例えば図2に示されるように、対象領域のデータが読み出されてECCチェックが行われ、ECCエラーが検出されたブロック(エラー有りブロック)については、エラー訂正後に書き直しが行われる。この書き直しは、電源遮断等に起因するデータ消失を回避するため、データ読み出しが行われたブロックとは異なるブロックに対して行われる。
【0037】
毎回書き直し処理は、リードアクセスが多い場合に、ホスト2から与えられた所定コマンド、又はフラッシュメモリシステム1のパワーオンリセット処理をトリガとして開始される。この毎回書き直し処理においては、上記トリガ毎に、対象領域のデータが読み出されて、ECCチェック結果に関わらず、書き直しが行われる。
【0038】
尚、選択的書き直し処理、及び毎回書き直し処理の何れの場合でも、一度に処理される対象領域の大きさ(対象ブロック数)は、ホスト2からの要請により決定される。
【0039】
上記RDリフレッシュ処理について具体的に説明する。
【0040】
RDリフレッシュ処理のタイミングは、コントローラ12によって、以下のように制御される。
【0041】
RDリフレッシュ処理は、ホスト2と連携させるため、ホスト2から与えられた所定コマンド、又はフラッシュメモリシステム1のパワーオンリセット処理をトリガとして開始され、以下のタイミングで書き直し処理が行われる。尚、RDリフレッシュ処理は、ホスト2の許容時間内に終了させる。
【0042】
RDリフレッシュ処理の開始を指示するための所定コマンドは、既存のコマンド、例えばリードコマンドを代用することができる。このリードコマンドにおいて、「通常はあり得ないアドレス」が指定された場合に、コントローラ12は、それをRDリフレッシュコマンドとして認識する。ここで「通常はあり得ないアドレス」として、例えばフラッシュメモリシステム1における最大アドレスを越えるアドレスを挙げることができる。リードコマンドによって、フラッシュメモリシステム1における最大アドレスを越えるアドレスが指定された場合、通常はコマンドエラーとなるが、コントローラ12は、それをRDリフレッシュコマンドとして認識し、それをトリガとしてRDリフレッシュ処理を開始する。このようにリードコマンドを代用することによって、既存のホスト2を修正することなく、RDリフレッシュ処理に対応可能となる。
【0043】
次に、メモリエリアの分割について説明する。
【0044】
NANDフラッシュメモリ11のリード負荷は、メモリ全領域に渡って均一ではない。また単純に全領域を書き直しては、処理時間が長すぎて実用的ではなく、RDリフレッシュ処理の効率化が必要となる。そこで、NANDフラッシュメモリ11のメモリ領域をリード負荷に応じて分割し、リード負荷に応じてRDリフレッシュ処理が行われるようにする。例えば図4に示されるように、NANDフラッシュメモリ11のメモリ領域を高負荷領域51と低負荷領域52とに分割し、高負荷領域51に対しては重点的にRDリフレッシュ処理が行われる。高負荷領域51及び低負荷領域52の設定は、例えばフラッシュメモリシステム1のパワーオンリセット処理等において、コントローラ12によって行われる。ここで、高負荷領域51に対しては、RDリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム1のパワーオンリセット処理が行われる毎に、RDリフレッシュ処理を行う。これに対して、低負荷領域52に対しては選択的にRDリフレッシュ処理が行われるようにする。このようなRDリフレッシュ処理は、コントローラ12によって制御される。このようにリード負荷に応じてRDリフレッシュ処理が行われるようにすることで、RDリフレッシュ処理の効率向上を図ることができる。また、低負荷領域を複数に分割することができる。例えば図5に示されるように、NANDフラッシュメモリ11のメモリ領域を、高負荷領域51と、低負荷領域52−1,52−2,52−3,52−4とに分割し、高負荷領域51に対しては重点的にRDリフレッシュ処理を行い、低負荷領域52−1,52−2,52−3,52−4に対しては選択的にRDリフレッシュ処理を行うようにしても良い。
【0045】
次に、高負荷領域及び低負荷領域において、RDリフレッシュ処理を効率よく実施するため、RDリフレッシュ処理開始アドレスが定義される。RDリフレッシュ処理は、このRDリフレッシュ処理開始アドレスから順番に開始される。RDリフレッシュ処理の対象領域を分散させるため、RDリフレッシュ処理開始アドレスは順次更新されるものとする。例えばRDリフレッシュ開始アドレスは、NANDフラッシュメモリ11のシステム領域に記録されている。パワーオンリセット処理において、NANDフラッシュメモリ11のシステム領域に記録されているRDリフレッシュ開始アドレスを変更することができる。NANDフラッシュメモリ11のシステム領域に記録されているRDリフレッシュ開始アドレスが、パワーオンリセット処理において、RAM123にロードされる。そしてこのRAM123内のRDリフレッシュ開始アドレスはRDリフレッシュ処理が行われる毎に順次更新されるが、NANDフラッシュメモリ11のシステム領域にはフィードバックされない。具体的には以下のようにRDリフレッシュ処理が行われる。
【0046】
図5に示されるように領域分割されている場合において、高負荷領域51がメモリ全体の20%、低負荷領域52がメモリ全体の80%(20%毎に4分割)とし、1回のリフレッシュ処理で40%の領域についてRDリフレッシュ処理される場合について説明する。このようなリフレッシュ頻度の情報は、NANDフラッシュメモリ11におけるシステム領域に格納される。この場合、例えば図6に示されるように、高負荷領域51と低負荷領域52−2とが一度にRDリフレッシュ処理され、その後、高負荷領域51と低負荷領域52−3とが一度にRDリフレッシュ処理される。次に高負荷領域51と低負荷領域52−4とが一度にRDリフレッシュ処理され、その後、高負荷領域51と低負荷領域52−1とが一度にRDリフレッシュ処理される。以下、同様にRDリフレッシュ処理が繰り返される。このようなRDリフレッシュ処理によれば、高負荷領域51については毎回RDリフレッシュ処理されるのに対して、低負荷領域52については、4回のRDリフレッシュ処理で低負荷領域52−1,52−2,52−3,52−4の全てのリフレッシュが完了する。これにより、高負荷領域におけるデータについてのリフレッシュ頻度は、低負荷領域におけるデータについてのリフレッシュ頻度に比べて高くなる。
【0047】
高負荷領域及び低負荷領域へのデータの割り当てについて説明する。
【0048】
高負荷領域及び低負荷領域へのデータの割り当て方式として、ユーザが意図的に割り当てる第1方式、エラーが発生したデータを高負荷領域に移動させる第2方式、上記第1方式と第2方式とを組み合わせた第3方式を挙げることができる。
【0049】
図7には、ユーザが意図的に割り当てる第1方式が示される。
【0050】
ユーザが意図的に、リードアクセスが多いデータを高負荷領域51に割り当てることができる。図7に示される例では、リードアクセスが多いデータ(移動元ブロック内のデータ)が高負荷領域51の移動先ブロックに割り当てられる(73)。高負荷領域51に対しては、RDリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム1のパワーオンリセット処理が行われる毎にRDリフレッシュ処理が行われるため、RDリフレッシュ処理が確実に実施されるようになる。
【0051】
図8には、エラーが発生したデータを高負荷領域に移動させる第2方式が示される。
【0052】
高負荷領域51は、初めに空き領域としておき、低負荷領域52のブロックでエラーが発生した場合にそのエラー発生データがCPU121によって逐次高負荷領域51に移動される。図8に示される例では、低負荷領域52における移動元ブロックのデータにエラーが発生し、そのエラー発生データがCPU121によって高負荷領域51における移動先ブロックに移動されている。このように、エラー発生データがCPU121によって高負荷領域51における移動先ブロックに移動される第2方式によれば、ユーザの見落としや想定外のリードアクセスに対応することができる。
【0053】
また、上記第1方式と上記第2方式との組み合わせた第3方式では、ユーザがリードアクセスが多いデータを高負荷領域51に配置するが、高負荷領域51に一定程度の空き領域を確保しておき、エラーが発生したデータがCPU121によって高負荷領域51の空き領域に遂次移動される。それによれば、確実にRDリフレッシュ処理が実施される上、ユーザの見落としや想定外のリードアクセスに対応できる。
【0054】
《実施の形態2》
図1に示されるフラッシュメモリシステム1において、エラー発生ブロックの管理を行う場合について説明する。
【0055】
図9に示されるように、NANDフラッシュメモリ11のシステム領域にアドレス登録エリア91を形成し、エラー発生ブロック92のアドレスを上記アドレス登録エリア91に登録して管理することができる。つまり、CPU121は、RDリフレッシュ処理中にエラーを確認した場合に、そのエラー発生ブロック92のアドレスを上記アドレス登録エリア91に登録する。上記アドレス登録エリア91に登録されたエラー発生ブロック92は、上記高負荷領域51と同等に取り扱われる。つまり、上記アドレス登録エリア91に登録されたエラー発生ブロック92は、RDリフレッシュコマンドが入力される毎に、あるいはフラッシュメモリシステム1のパワーオンリセット処理が行われる毎にRDリフレッシュ処理が行われる。また、上記アドレス登録エリア91に登録されていないブロックについては、上記低負荷領域52と同等に取り扱われる。これにより、リードアクセスが繰り返される場合のリードディスターブを効率良く回避することができる。また、CPU121は、アドレス登録エリア91をリードすることによって、エラー発生ブロックを速やかに把握できるため、RDリフレッシュ処理対象の検索を短時間で行うことができる。
【0056】
エラー発生ブロック92と、それを登録するアドレス登録エリア91とが同一の半導体チップの場合、エラー発生ブロック92をアドレス登録エリア91に登録している期間は、当該半導体チップにおけるRDリフレッシュ処理のためのリードができなくなる。これを回避するには、エラー発生ブロックのアドレスを別の半導体チップに登録すれば良い。例えば図10に示されるように、フラッシュメモリシステム1に半導体チップChip0,Chip1を有する場合において、半導体チップChip0には、半導体チップChip1用のアドレス登録エリア91−0を形成し、半導体チップChip1には、半導体チップChip0用のアドレス登録エリア91−1を形成する。CPU121は、半導体チップChip0におけるエラー発生ブロック92−0のアドレスを半導体チップChip1におけるアドレス登録エリア91−1に登録し、半導体チップChip1におけるエラー発生ブロック92−1のアドレスを半導体チップChip0におけるアドレス登録エリア91−0に登録する。これにより、半導体チップChip0におけるエラー発生ブロック92−0のアドレスを半導体チップChip1におけるアドレス登録エリア91−1に登録中に、半導体チップChip0におけるリード処理が可能になる。また、半導体チップChip1におけるエラー発生ブロック92−1のアドレスを半導体チップChip0におけるアドレス登録エリア91−0に登録中に、半導体チップChip1におけるリード処理が可能になる。
【0057】
《実施の形態3》
図1に示されるフラッシュメモリシステム1において、高負荷領域の多重化を行う場合について説明する。
【0058】
リードアクセスが多いと想定されるデータを多重化することで、リードアクセスを分散することができる。例えば図11に示されるように、コントローラ12は、高負荷領域51を多重化部51−1,51−2に分けて管理し、高負荷領域51におけるデータを上記多重化部51−1,51−2で多重化する。つまり、多重化部51−1にオリジナルデータが格納されている場合に、多重化部51−2には、上記オリジナルデータのコピーデータが格納されることにより、上記多重化部51−1,51−2の何れをアクセスしても同一データを得ることができるようにする。これにより、リードアクセスを多重化部51−1,51−2に分散させることができる。
【0059】
高負荷領域において、ブロック毎にデータを多重化することができる。例えば図12に示されるように、オリジナルデータOrg−0,Org−1と、そのコピーデータCopy−0,Copy−1とがそれぞれ別ブロックに記録されることで多重化される。RDリフレッシュ処理において、読み出されるデータは、一つのブロックにおける全データが対象となる。例えば一つのブロックにおけるコピーデータCopy−0,Copy−1の2ページ分のデータが読み出されて、ECC訂正後に別ブロックに書き直される。このため、オリジナルデータ又はコピーデータを読み出す際に、一つのブロックに負荷が集中する。
【0060】
また、高負荷領域において、一つのブロック内でデータを多重化することができる。例えば図13に示されるように、オリジナルデータOrg−0と、そのコピーデータCopy−0とが同一ブロックに記録されることで多重化され、オリジナルデータOrg−1と、そのコピーデータCopy−1とが同一ブロックに記録されることで多重化される。この場合、RDリフレッシュ処理において、読み出されるデータは、図12に示される場合の1/2で済む。例えば一つのブロックにおけるオリジナルデータOrg−1とそのコピーデータCopy−1とは同一であるため、オリジナルデータOrg−1又はそのコピーデータCopy−1のみを読み出せば良い。同様に、一つのブロックにおけるオリジナルデータOrg−0とそのコピーデータCopy−0とは同一であるため、オリジナルデータOrg−0又はそのコピーデータCopy−0のみを読み出せば良い。このように図13に示される多重化によれば、図13に示される多重化に比べて、RDリフレッシュ処理に読み出されるデータが1/2で良いため、データ読み出し時間の短縮や、1ブロック当たりのリードアクセスの低減を図ることができる。
【0061】
図14に示されるように、高負荷領域51を多重化部51−1,51−2に分割し、低負荷領域52を低負荷領域52−1,52−2,52−3,52−4に分割することができる。この場合、多重化部51−1,51−2(高負荷領域51)に対しては重点的にRDリフレッシュ処理が行われ、低負荷領域52−1,52−2,52−3,52−4に対しては選択的にRDリフレッシュ処理が行われる。
【0062】
重化部51−1,51−2(高負荷領域51)、及び低負荷領域52−1,52−2,52−3,52−4において、RDリフレッシュ処理を効率よく実施するため、RDリフレッシュ処理開始アドレスが定義される。RDリフレッシュ処理は、このRDリフレッシュ処理開始アドレスから順番に開始される。RDリフレッシュ処理の対象領域を分散させるため、RDリフレッシュ処理開始アドレスは順次更新されるものとする。例えばRDリフレッシュ開始アドレスは、NANDフラッシュメモリ11のシステム領域に記録されている。パワーオンリセット処理において、NANDフラッシュメモリ11のシステム領域に記録されているRDリフレッシュ開始アドレスを変更することができる。NANDフラッシュメモリ11のシステム領域に記録されているRDリフレッシュ開始アドレスが、パワーオンリセット処理において、RAM123にロードされる。そしてこのRAM123内のRDリフレッシュ開始アドレスはRDリフレッシュ処理が行われる毎に順次更新されるが、NANDフラッシュメモリ11のシステム領域にはフィードバックされない。具体的には以下のようにRDリフレッシュ処理が行われる。
【0063】
図14に示されるように領域分割されている場合において、高負荷領域51がメモリ全体の33%(16%毎に2分割)、低負荷領域52がメモリ全体の67%(16%毎に4分割)とし、1回のリフレッシュ処理で33%の領域についてRDリフレッシュ処理される場合について説明する。このようなリフレッシュ頻度の情報は、NANDフラッシュメモリ11におけるシステム領域に格納される。この場合、例えば図15に示されるように、多重化部51−2と低負荷領域52−2とが一度にRDリフレッシュ処理され、その後、多重化部51−1と低負荷領域52−3とが一度にRDリフレッシュ処理される。次に多重化部51−2と低負荷領域52−4とが一度にRDリフレッシュ処理され、その後、多重化部51−1と低負荷領域52−1とが一度にRDリフレッシュ処理される。以下、同様にRDリフレッシュ処理が繰り返される。このようなRDリフレッシュ処理によれば、高負荷領域51については、毎回1/2ずつRDリフレッシュ処理されるのに対して、低負荷領域52については、4回のRDリフレッシュ処理で低負荷領域52−1,52−2,52−3,52−4の全てのリフレッシュが完了する。換言すれば、高負荷領域51については、重点的にRDリフレッシュ処理が行われ、低負荷領域52については、選択的にRDリフレッシュ処理が行われる。
【0064】
《実施の形態4》
図16には、本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュメモリシステムの別の構成例が示される。図16に示されるフラッシュメモリシステム1が、図1に示されるのと大きく相違するのは、パワーオン回路16が設けられている点である。パワーオン回路16は、フラッシュメモリシステム1におけるパワーオン回数(電源投入回数)を保持する機能を有する。この機能は、コントローラ12内のCPU121(図1参照)によってリード/ライト可能なレジスタによって実現される。パワーオン回数(電源投入回数)情報は、NANDフラッシュメモリ11のシステム領域に保持されており、それが、CPU121でのパワーオンリセット処理においてパワーオン回路16にロードされてからインクリメントされる。パワーオン回路16に保持されているパワーオン回数は、NANDフラッシュメモリ11の電源遮断時に、NANDフラッシュメモリ11のシステム領域にフィードバックされることで、NANDフラッシュメモリ1内のパワーオン回数情報が更新される。
【0065】
ここで、ホスト2からRDリフレッシュコマンドが発行された場合、コントローラ12は、上記RDリフレッシュコマンドに応じて、RD処理対象ブロックのデータが読み出されてECCチェックが行われ、ECCエラーが検出されたブロックについてはエラー訂正が行われた後に、別のブロックへの書き直しが行われる。また、リードアクセスが多い場合(高負荷領域の場合)には、ECCチェックの結果にかかわらずに、毎回書き直しが行われる。
【0066】
RD対策を確実に実施するためには、ホスト2は十分な回数のRDリフレッシュコマンドを発行する必要があるが、ホスト2によって過剰にRDリフレッシュコマンドが発行されると、NANDフラッシュメモリ11の書き換え回数の上限を越えてしまうおそれがある。特に、リードアクセスが多い場合(高負荷領域の場合)には、ECCチェックの結果にかかわらずに、毎回書き直しが行われるため、NANDフラッシュメモリ11の書き換え回数の上限を越える可能性が高い。
【0067】
NANDフラッシュメモリ11が適用される製品(本例では、ゲーム機やパチンコ台などのアミューズメント系システム)の寿命と、NANDフラッシュメモリ11の書き換え回数の制限との関係から、NANDフラッシュメモリ11の1日当たりの書き換え回数の上限が予測できる。また、ゲーム機やパチンコ台などのアミューズメント系システムのように、NANDフラッシュメモリ11の1日当たりのパワーオン回数がほぼ決まっている場合には、NANDフラッシュメモリ11のパワーオンの回数に応じた書き換え回数の上限を想定することができる。そこで、コントローラ12は、NANDフラッシュメモリ11において書き直しが行われる際に、データの書き直し先のブロックにおける書換え回数とパワーオン回数とに基づいて、データの書き直しを実行するか否かを判別する。データの書き直し先のブロックにおける書換え回数は、NANDフラッシュメモリ11におけるシステム領域に保存されている。コントローラ12は、データの書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行する。しかし、データの書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合には、今回のデータの書き直しを中止する。このようにNANDフラッシュメモリ11におけるデータの書き直しが制限されるため、ホスト2は、NANDフラッシュメモリ11の書き換え回数を考慮することなく、RDリフレッシュコマンドを発行することができる。
【0068】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【0069】
1 フラッシュメモリシステム
2 ホスト
11 NANDフラッシュメモリ
12 コントローラ
16 パワーオン回路
121 CPU
122 ROM
123 RAM
124 ECC回路

【特許請求の範囲】
【請求項1】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記コントローラは、上記不揮発性記憶部に、第1領域とそれとは異なる第2領域とを設定し、上記第1領域のデータについてのリフレッシュ頻度が、上記第2領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行することを特徴とする不揮発性半導体記憶装置。
【請求項2】
上記コントローラは、エラー発生にかかるデータをエラー訂正後に上記第1領域へ移動する請求項1記載の不揮発性半導体記憶装置。
【請求項3】
上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、
上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用され、
上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する請求項2記載の不揮発性半導体記憶装置。
【請求項4】
上記コントローラは、上記第1領域においてデータを多重化し、且つ、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項3記載の不揮発性半導体記憶装置。
【請求項5】
上記コントローラは、上記第1領域においてデータを多重化する請求項1記載の不揮発性半導体記憶装置。
【請求項6】
上記コントローラは、上記第1領域における同一ブロック内でデータを多重化する請求項4記載の不揮発性半導体記憶装置。
【請求項7】
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項1記載の不揮発性半導体記憶装置。
【請求項8】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記不揮発性記憶部には、アドレス登録エリアが形成され、
上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を上記アドレス登録エリアに登録して管理し、且つ、
上記ドレス登録エリアに登録された領域についてのリフレッシュ頻度が、上記ドレス登録エリアに登録されていない領域のデータについてのリフレッシュ頻度に比べて高くなるように、リフレッシュトリガが発生される毎に上記第1領域及び上記第2領域についてのリフレッシュ処理を実行することを特徴とする不揮発性半導体記憶装置。
【請求項9】
上記コントローラは、上記不揮発性記憶部において、上記リフレッシュ処理中にエラー発生を確認した領域を、当該領域が属する半導体チップとは異なる半導体チップにおける上記アドレス登録エリアに登録して管理する請求項8記載の不揮発性半導体記憶装置。
【請求項10】
上記コントローラは、上記第1領域においてデータを多重化し、且つ、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項9記載の不揮発性半導体記憶装置。
【請求項11】
上記リフレッシュトリガとして、外部からの所定コマンドの入力を含み、
上記所定コマンドは、上記不揮発性半導体記憶装置に対する既存のコマンドが代用され、
上記既存のコマンドによって、上記不揮発性半導体記憶装置の最大アドレスを越えるアドレスが指定された場合に上記コントローラは、上記既存のコマンドを、上記リフレッシュ処理の開始を示すコマンドとして認識する請求項8記載の不揮発性半導体記憶装置。
【請求項12】
上記コントローラは、上記第1領域においてデータを多重化する請求項8記載の不揮発性半導体記憶装置。
【請求項13】
上記コントローラは、上記第1領域における同一ブロック内でデータを多重化する請求項11記載の不揮発性半導体記憶装置。
【請求項14】
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止する請求項8記載の不揮発性半導体記憶装置。
【請求項15】
不揮発性記憶部と、上記不揮発性記憶部の消去単位とされるブロック毎のデータを、当該ブロックとは異なるブロックに書き直すためのリフレッシュ処理を制御可能なコントローラと、を含む不揮発性半導体記憶装置であって、
上記コントローラは、上記リフレッシュ処理におけるデータ書き直し先のブロックにおける書換え回数が、パワーオン回数に応じた書き換え回数の上限に達していない場合にはデータの書き直しを実行し、上記データ書き直し先のブロックにおける書換え回数が、パワーオンの回数に応じた書き換え回数の上限に達した場合にはデータの書き直しを中止することを特徴とする不揮発性半導体記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−178194(P2012−178194A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−39294(P2011−39294)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】