(57)【要約】【課題】半導体記憶装置において、書き換え回数の増加に伴う特性変化に応じてセルからデータを読み出す際の閾値を調整する。【解決手段】電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させることでデータの書き込み若しくはデータの消去を行い、書き込み若しくは消去した際のデータの電圧値に応じて、閾値を更新させる。また、複数の閾値のうち、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値と前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の中間値に最も近い閾値に更新する。【選択図】図８
2010123192.tif 000002
【特許請求の範囲】
【請求項１】
電圧の保持状態によってデータを記憶する複数のセルと、
前記セルの電圧の保持状態を変化させることで前記セルへのデータを書き込みおよび消去を行う書込み部と、
前記セルが保持する電圧を閾値と比較する比較部と、
前記比較部による比較結果に基づいてデータを読み出す読出し部と、
前記書込み部により書き込もしくは消去した際のデータの電圧値に応じて、前記比較部で比較する閾値を更新させる閾値更新部と、
を備えた半導体記憶装置。
【請求項２】
前記閾値が異なる複数の比較部を備え、
前記閾値更新部が、前記複数の比較部を選択的に使用し、使用する比較部を代えることによって、前記比較に用いる閾値を変える請求項１に記載の半導体記憶装置。
【請求項３】
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記閾値を決定する請求項１に記載の半導体記憶装置。
【請求項４】
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の中間値以上で該中間値に最も近い閾値を比較に用いる比較部を選択する請求項２に記載の半導体記憶装置。
【請求項５】
前記セルが多値を記憶するものであり、
前記閾値更新部が、前記セルに特定の値を書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルに前記特定の値よりも電圧レベルが一つ下の値を記憶させた状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記特定の値と対応する閾値を決定する請求項１に記載の半導体記憶装置。
【請求項６】
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込む書込み部と、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出す読出し部と、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させる閾値更新部と、
を備えた制御装置。
【請求項７】
前記閾値が異なる複数の比較部を選択的に使用し、使用する比較部を前記閾値更新部が代えることによって、前記比較に用いる閾値を変える請求項６に記載の制御装置。
【請求項８】
前記セルがデータを書き込んだ状態とデータを消去した状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記閾値を決定する請求項６に記載の制御装置
。
【請求項９】
前記セルがデータを書き込んだ状態とデータを消去した状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の中間値以上で該中間値に最も近い閾値を比較に用いる比較部を選択する請求項７に記載の制御装置。
【請求項１０】
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込むステップと、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出すステップと、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させるステップと、
を制御装置が実行する閾値調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
半導体記憶装置において、セルからデータを読み出す際の閾値を調整する技術に関する。
【背景技術】
【０００２】
ＵＳＢメモリ、メモリカード、ＳＳＤ（Solid State Drive）といった不揮発性メモリを使用したメモリデバイスが広く普及している。これらメモリデバイスは、ユーザデータを保存するため、長期間に渡るデータ保存の信頼性が求められている。
【０００３】
また、画像や音楽、映像など、メモリデバイスに保存するユーザデータは増大化傾向にある。このため大容量のメモリデバイスが求められており、不揮発性メモリの製造プロセスの狭プロセス化も積極的に行われている。
【０００４】
また、本願発明に関連する先行技術として、例えば、下記の特許文献に開示される技術がある。
【特許文献１】特開２００４−０１４０４３号公報
【特許文献２】特許第２５０９２９７号公報
【特許文献３】特開２００６−００４５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
不揮発性メモリは、その構造上、メモリセルの書込状態と消去状態の電圧レベルが書き換え回数に比例して変化する。さらに書込状態と消去状態の電圧レベルの差が小さくなるという特性がある。この特性は不揮発性メモリの狭プロセス化が進むことでより顕著となる。
【０００６】
しかしながら、メモリセルの書込状態と消去状態を識別する閾値は、基準セルによって定められた固定の値である。
【０００７】
そのため、書き換え回数の増加に伴う変化が進むと、正しく書込状態と消去状態を識別することができなくなり、これが不揮発性メモリの寿命となる。
【０００８】
そして、今後さらに製造プロセスが進むことで、メモリセルの書込状態と消去状態を識別する閾値に対し、書込状態と消去状態の電圧レベルのマージンが少なくなり、信頼性の低下や、寿命の短縮を招くという問題があった。
【０００９】
そこで、半導体記憶装置において、セルからデータを読み出す際の閾値を調整する技術を提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、半導体記憶装置は、
電圧の保持状態によってデータを記憶する複数のセルと、
前記セルの電圧の保持状態を変化させることで前記セルへのデータを書き込みおよび消去を行う書込み部と、
前記セルが保持する電圧を閾値と比較する比較部と、
前記比較部による比較結果に基づいてデータを読み出す読出し部と、
前記書込み部により書き込もしくは消去した際のデータの電圧値に応じて、前記比較部
で比較する閾値を更新させる閾値更新部と、
を備えた。
【００１１】
また、上記課題を解決するため、半導体記憶装置の制御装置は、
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込む書込み部と、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出す読出し部と、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させる閾値更新部と、
を備えた。
【００１２】
また、上記課題を解決するため、半導体記憶装置の閾値調整方法は、
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込むステップと、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出すステップと、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させるステップと、
を制御装置が実行する。
【発明の効果】
【００１３】
半導体記憶装置において、セルからデータを読み出す際の閾値を調整する技術を提供できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００１５】
〈実施形態１〉
図１は、本実施の形態に係る半導体記憶装置を示す図であり、図２は、半導体記憶装置を使用する情報処理装置のハードウェア構成を示す図である。
【００１６】
図１に示すように、本実施形態１に係る半導体記憶装置１０Ａは、情報処理装置１に補助記憶装置として搭載された所謂ＳＳＤ（Solid State Drive）である。また、半導体記憶装置１０Ｂは、情報処理装置１のＵＳＢインターフェイスに接続されるＵＳＢメモリ、半導体記憶装置１０Ｃは、情報処理装置１のカードリーダ・ライタに挿入して読み書きされるメモリカードである。
【００１７】
本実施形態の半導体記憶装置は、ＮＡＮＤフラッシュメモリやＮＯＲフラッシュメモリ等の不揮発性メモリであるが、これに限定されるものではなく、セル電流を閾値と比較してデータを読み出すメモリであれば良い。なお、以下の説明では、本実施形態の半導体記憶装置を便宜上フラッシュメモリモジュール１０と示す。
【００１８】
また、図２に示す情報処理装置１は、主記憶装置であるメモリ１４、中央演算装置であるＣＰＵ１３を備える。また情報処理装置１は、ＣＰＵ１３、メモリ１４等との間で高速に情報通信および制御を行うチップセット（Ｎｏｒｔｈ Ｂｒｉｄｇｅ）１１、周辺機器に係る基本的な入出力を制御するプログラム群を格納したＢＩＯＳ１９を備える。
【００１９】
また、情報処理装置１は、上述以外にも、ＣＰＵ１３、メモリ１４に比べ比較的低速な周辺機器間の情報通信および制御を行うチップセット（Ｓｏｕｔｈ Ｂｒｉｄｇｅ）１２、メモリカードの読み込み及び書き込みを行うカードリーダ・ライタ１７、ＵＳＢ対応機器またはＰＣＩバス対応機器との接続を行うＵＳＢ／ＰＣＩインターフェイス１８、ネッ
トワークボードとの接続を行い外部との通信を可能にするＬＡＮインターフェイス１６、フラッシュメモリモジュール１０を備える。また、フラッシュメモリモジュール１０は不揮発性メモリであるＮＡＮＤフラッシュメモリ３０とフラッシュメモリを制御するＮＡＮＤコントローラ２０を備える。なお、情報処理装置１はパーソナルコンピュータに限らず、例えば携帯電話やＰＤＡなどの記憶装置を必要とする機器であればどんなものであっても良い。
【００２０】
次に、本実施の形態に係るフラッシュメモリについて説明する。図３は本実施の形態に係るフラッシュメモリの構成を示すブロック図である。
【００２１】
フラッシュメモリ３０は、ＮＡＮＤフラッシュアレイ３０１、Ｘデコーダ３０２、Ｙデコーダ３０３、センスアンプ／コンパレータ回路３０４、アドレスレジスタ／カウンタ３０５、コマンドレジスタ３０６、入出力バッファ３０７、コントロールロジック３０８を備えるものである。
【００２２】
ＮＡＮＤフラッシュアレイ３０１は、２次元に配列された複数のセルを備え、各セルのゲートを行毎にワード線ＷＬで接続し、各セルのソース及びドレインを列毎にビット線ＢＬで接続している。
【００２３】
また、Ｘデコーダ３０２は、ＮＡＮＤフラッシュアレイ３０１を構成する２次元に配列された複数のセルの行方向の選択を行うものである。また、Ｙデコーダ３０３は、複数のセルの列方向の選択を行うものである。
【００２４】
センスアンプ／コンパレータ回路３０４は、ＮＡＮＤフラッシュアレイ３０１の各セルが保持する電圧を閾値と比較し、比較結果をデジタル情報として出力する。
アドレスレジスタ／カウンタ３０５は、ＮＡＮＤフラッシュアレイ３０１にアクセスする際にアドレスを指定するものである。また、コマンドレジスタ３０６は、受信したコマンドを保持するものである。また、入出力バッファ３０７は、ホストとしての情報処理装置１とのデータ及びアドレスの入出力におけるデータを一時的に記憶する記憶領域である。また、コントロールロジック３０８は、フラッシュメモリ３０を制御する制御装置である。
【００２５】
コマンドレジスタ３０６及びコントロールロジック３０８は、入出力用の制御信号として、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、チップイネーブル信号、リードイネーブル信号、ライトイネーブル信号、ライトプロテクト信号をホストから受信し、これらの信号の組合せをコマンドとする。また、コントロールロジック３０８はレディ・ビジー信号及びエラー信号を出力するものである。
【００２６】
次にＮＡＮＤコントローラについて説明する。図４はＮＡＮＤコントローラの構成を示すブロック図である。
【００２７】
ＮＡＮＤコントローラ２０は、ホストインターフェイスユニット２０１、コントロールレジスタ２０２、バッファ２０３、ＥＣＣユニット２０４、ＮＡＮＤインターフェイスユニット２０５、マイクロプロセッサ２０６、ＲＯＭ２０７、ＲＡＭ２０８を備えるものである。
【００２８】
ホストインターフェイスユニット２０１は、ホストとコマンドの送受信を行うものである。また、コントロールレジスタ２０２は、各種パラメータを保持する領域である。
【００２９】
ＮＡＮＤインターフェイスユニット２０５は、ＮＡＮＤフラッシュメモリ３０とコマン
ドの送受信を行うものである。また、バッファ２０３は、ＮＡＮＤインターフェイスユニット２０５によりＮＡＮＤフラッシュメモリ３０から読み出されたコマンドと、ホストインターフェイスユニットによりホストから受信したコマンドを一時的に保持する領域である。
【００３０】
ＥＣＣユニット２０４は、データの書き込み時にＥＣＣを生成し、データの読み出し時にＥＣＣに基づいてデータの誤りを検出し訂正するものである。
【００３１】
マイクロプロセッサ２０６は、ＮＡＮＤコントローラ２０全体を制御するものである。また、ＲＯＭ２０７は、マイクロプロセッサ２０６が処理を行うためのファームウェアが記憶されているものである。また、ＲＡＭ２０８は、マイクロプロセッサ２０６が使用するメモリである。
【００３２】
マイクロプロセッサ２０６は、ＲＯＭ２０７から読み出したファームウェアに従って動作し、コマンドレジスタ３０６を介して受信したコマンドを処理する。当該コマンドの処理により、マイクロプロセッサ２０６は、書込み部や消去部、読出し部、閾値更新部としても機能する。
【００３３】
書込み部としてのマイクロプロセッサ２０６は、受信したコマンドに基づきアドレスレジスタ／カウンタ３０５にアクセスするＮＡＮＤフラッシュメモリ３０のアドレスを送る。
【００３４】
同様に消去部としてのマイクロプロセッサ２０６は、受信したコマンドに基づきアドレスレジスタ／カウンタ３０５にアクセスするＮＡＮＤフラッシュメモリ３０のアドレスを送る。
【００３５】
読出し部としてのマイクロプロセッサ２０６は、受信したコマンドに基づきアドレスレジスタ／カウンタ３０５にアクセスするＮＡＮＤフラッシュメモリ３０のアドレスを送る。
【００３６】
閾値更新部としてのマイクロプロセッサ２０６は、ＮＡＮＤフラッシュメモリ３０のセンスアンプ／コンパレータ回路３０４の閾値を変えてセルからデータの読出しを行い、読出しエラーが発生せずに読み出せる閾値の上限と下限を求め、上限と下限の間に新しい閾値を決定する。そして閾値更新部は、決定した閾値を用いるセンスアンプの識別符号をＮＡＮＤフラッシュメモリ３０に書き込む。
【００３７】
これにより読出し部としてのマイクロプロセッサ２０６は、ＮＡＮＤフラッシュメモリ３０からデータを読み出す際、閾値更新部によって決定した識別符号を参照して、対応する選択用情報ＳＥ−０〜ＳＥ−２をイネーブルとしてセンスアンプを選択的に動作させる。
【００３８】
次に、ＮＡＮＤフラッシュアレイを構成する複数のセルとセンスアンプ／コンパレータ回路３０４について説明する。図５は、ＮＡＮＤフラッシュアレイを構成する複数のセルを示す回路図である。また、図６はセンスアンプ／コンパレータ回路を示す回路図である。
【００３９】
図５に示すように、ＮＡＮＤフラッシュアレイ３０１は、Ｘデコーダ３０２とＹデコーダ３０３によって選択されたビット線ＢＬとワード線ＷＬにより、個々のセルのゲート−ソース間に電圧が印加される。電圧が印加されたセルは、電子がフローティングゲートに蓄えられ所定の電圧を保持する。これによってデータの書き込みが行なわれる。
【００４０】
また、ＮＡＮＤフラッシュアレイ３０１は、Ｘデコーダ３０２とＹデコーダ３０３によって選択されたビット線ＢＬとワード線ＷＬにより、セルのゲート−ドレイン間に電圧が加えられると、フローティングゲートから電子が抜け、保持した電圧が放出される。これによってデータの消去が行なわれる。
【００４１】
また、ＮＡＮＤフラッシュアレイ３０１は、Ｘデコーダ３０２とＹデコーダ３０３によって選択されたビット線ＢＬとワード線ＷＬにより、セルのソース−ドレイン間に電流（セル電流）を流す。ここで、フローティングゲートに電圧が保持されていればセル電流が流れず”０”の状態であり、フローティングゲートに電圧が保持されていなければセル電流が流れ”１”の状態である。これによってデータの読み出しが行なわれる。
【００４２】
なお、ビット線とワード線は複数のセル単位で接続されているため、ＮＡＮＤフラッシュアレイ３０１は、線を共有する複数のセルにより構成されたセルグループ単位でデータの書き込み、読み出し、消去を行う。
【００４３】
また、ＮＡＮＤフラッシュアレイ３０１と接続されたセンスアンプ／コンパレータ回路３０４は、図６に示すように、セルが保持する電圧を閾値と比較する比較部として複数のセンスアンプＳＡ０〜ＳＡ７や、基準セルＲＣ０〜ＲＣ７、コンパレータＣＣを備えている。
【００４４】
なお、セルがフローティングゲートに保持する電圧とソースドレイン間に流れるセル電流とは比例関係にある。このため、本実施形態ではセンスアンプＳＡ０〜ＳＡ７にそれぞれ接続された基準セルＲＣ０〜ＲＣ７に所定の基準電流が流れるようにし、基準電流と同じセル電流が流れる場合にセルが保持する電圧を閾値とした。
【００４５】
即ち、センスアンプＳＡ０〜ＳＡ７は、各セルに流れるセル電流と基準電流とを比較することで、セルが保持する電圧と閾値の比較結果を出力する。なお、複数のセンスアンプＳＡ０〜ＳＡ７は、それぞれ比較に用いる基準電流、即ち閾値が異なる。そこでコントロールロジック（閾値更新部）は、後述のように複数のセンスアンプＳＡ０〜ＳＡ７の何れかを選択的に動作させて閾値を調整する。
【００４６】
コンパレータ回路ＣＣは、センスアンプＳＡ０〜ＳＡ７による出力（比較結果）をデジタルデータに変換する。コンパレータ回路ＣＣは、セルが保持する電圧が閾値より高い場合、即ちセル電流が基準電流より低い場合には“０”を出力し、セルが保持する電圧が閾値より低い場合、即ちセル電流が基準電流より高い場合には”１”を出力する。
【００４７】
次に、ＮＡＮＤフラッシュアレイに格納されるデータの構成について説明する。図７は、ＮＡＮＤフラッシュアレイに格納されるデータの構成を示す図である。
【００４８】
ＮＡＮＤフラッシュメモリ３０において読み書きされるデータは、図７に示すように、データフィールドにセクタ単位で格納され、スペアフィールドにそれぞれのセクタに対応する属性情報であるスペアが格納される。また、セクタＡ〜Ｄとそれぞれのセクタに対応するスペアＡ’〜Ｄ’により構成されるブロック単位でデータが消去される。また、それぞれのセクタのスペアは、対応するセクタの番号を示すデータであるＬＳＮ（Ｌｏｇｉｃａｌ Ｓｅｃｔｏｒ Ｎｕｍｂｅｒ）と、バリディティチェックのためのデータであるＤＶ（ＤａｔａＶａｌｉｄｉｔｙ）と、セルの劣化によりデータの記録ができない不良ブロックであることを示すＢＢＩ（Ｂａｄ Ｂｌｏｃｋ Ｉｎｆｏｍａｔｉｏｎ）と、セクタの誤り訂正符号であるＥＣＣ（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｃｏｄｅ ｆｏｒ ＤａｔａＦｉｅｌｄ）と、スペアの誤り訂正符号であるＥＣＣＳ（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉ
ｏｎ Ｃｏｄｅ ｆｏｒ Ｓｐａｒｅ Ｆｉｅｌｄ）と、閾値更新部によって選択されたセンスアンプを示す識別符号ＳＥ−０〜ＳＥ−２が書き込まれている。
【００４９】
次に、閾値更新部による閾値調整方法を図８〜図１３を用いて説明する。
図８は、ＮＡＮＤフラッシュアレイ３０１の書き換え回数の増加に伴うセルの変化特性を示すグラフである。図８のグラフは、縦軸にセルのフローティングゲートが保持する電圧、横軸に書き換え回数をとっている。実線ＰＬは、書き込み状態のセルの変化特性を示し、実線ＥＬは、消去状態のセルの変化特性を示している。なお、各セルに個体差があるため、実線ＰＬと実線ＥＬはそれぞれ、高い側と低い側の２本の線でバラツキの幅を示している。点線ＳＨ０〜ＳＨ７は、センスアンプＳＡ０〜ＳＡ７がそれぞれ比較に用いる閾値ＳＨ０〜ＳＨ７を示している。即ち、センスアンプＳＡｎが閾値ＳＨｎを比較に用いる。但し、ｎは０から７までの自然数である。
【００５０】
図８に示すように、ＮＡＮＤフラッシュアレイ３０１は、書き込み状態のときにセルが保持する電圧レベルと、消去状態のときにセルが保持する電圧レベルとが、書き換え回数に比例して変化する。さらに、書込状態と消去状態の電圧レベルの差が小さくなるという特性がある。
【００５１】
例えば、閾値をＳＨ３で固定した場合、図９に示すように１２Ｎを越えたあたりで消去状態のセルの保持電圧が閾値を上回るので、正しく読み取りが行えなくなり、フラッシュメモリモジュール１０の寿命となってしまう。
【００５２】
そこで本実施形態のフラッシュメモリモジュール１０は、所定のタイミングで閾値を調整している。
図１０は、閾値調整方法の全体の流れを示すフローチャートである。閾値更新部は、書き込み部によってセルに書き込みを行わせ、センスアンプ／コンパレータ回路３０４に閾値を変えさせながら、書き込み状態のセルのデータを読み取らせ、エラーが発生しない閾値の限度ｐＳＨを求める（Ｓ１）。
【００５３】
また、閾値更新部は、消去部によってセルのデータの消去を行わせ、センスアンプ／コンパレータ回路３０４に閾値を変えさせながら、消去状態のセルの閾値を読取部によって読み取らせ、エラーが発生しない閾値の限度ｅＳＨを求める（Ｓ２）。
【００５４】
次に、閾値更新部は、書込み状態の閾値の限度ｐＳＨと消去状態の閾値の限度ｅＳＨの中間値ｔＳＨを求める（Ｓ３）。例えば、各閾値ＳＨｎに係るｎの値を用いて以下の（式１）で算出する。
ｔＳＨ＝（ｐＳＨ＋ｅＳＨ）／２ ・・・（式１）
【００５５】
なお、本実施形態では、各閾値ＳＨｎに係るｎを自然数で示しているので、Ｓ３で求めた中間値ｔＳＨを繰り上げて新たな閾値として決定する（Ｓ４）。
【００５６】
そして閾値更新部は、Ｓ３で決定した閾値を比較に用いるセンスアンプを選択し、選択したセンスアンプを示す値を図７に示すスペアフィールドのＳＥ−０〜ＳＥ−２に記録することで、比較に用いる閾値を更新する（Ｓ５）。
【００５７】
本実施形態では、スペアフィールドのＳＥ−０〜ＳＥ−２に記録する値を図１１に示すように、センスアンプＳＡ０の場合に０，０，０、センスアンプＳＡ１の場合に０，０，１、センスアンプＳＡ２の場合に０，１，０などとする。
【００５８】
例えば、ＮＡＮＤフラッシュアレイ３０１について、書き換え回数が０Ｎ（０回）のと
きに図１０の方法を適用した場合、図８の変化特性から書き込み状態の閾値の上限がＳＨ５、消去状態の閾値の下限がＳＨ０である。このため、ｔＳＡ＝（５＋０）／２＝２．５となり、閾値ＳＨ３が決定され、閾値ＳＨ３を比較に用いるセンスアンプＳＡ３が選択され、スペアフィールドのＳＥ−０〜ＳＥ−２に０，１，１が記憶される。
【００５９】
また、ＮＡＮＤフラッシュアレイ３０１について、書き換え回数が８Ｎのときに図１０の方法を適用した場合、図８の変化特性から書き込み状態の閾値の上限がＳＨ６、消去状態の閾値の下限がＳＨ１である。このため、ｔＳＡ＝（６＋１）／２＝３．５となり、閾値ＳＨ４が決定され、閾値ＳＨ４を比較に用いるセンスアンプＳＡ４が選択され、スペアフィールドのＳＥ−０〜ＳＥ−２を１，０，０に更新する。同様に書き換え回数が１２万回のとき閾値ＲＣ５が決定される。そしてマイクロプロセッサ２０６は、スペアフィールドの更新された識別符号ＳＥ−０〜ＳＥ−２を読み出してセンスアンプを選択的に動作させる。従って書き換え回数が１２Ｎを越えた場合でも、閾値がＳＨ５に更新されるので消去状態のセルの保持電圧が閾値を越えない。
【００６０】
なお、図１０の閾値の調整は、所定の書き換え回数で実行しても良いし、書き換え毎、通電時（ＮＡＮＤコントローラ２０の起動時）、ＥＣＣコードによってリードエラーを検出した時、フォーマットを行った時など、任意のタイミングで行うことができる。
【００６１】
図１２は、図１０のＳ１で閾値の上限を測定する方法の詳細説明図である。
閾値更新部は、先ず閾値を最大のＳＨ７として（Ｓ２１）、読出し部にセルの読出しを行わせる（Ｓ２２）。
【００６２】
閾値更新部は、読出しの結果がエラーか否かを判断し（Ｓ２３）、エラーでなく（Ｓ２３，Ｎｏ）、閾値がＳＨ０に達していない場合に（Ｓ２４，Ｎｏ）、閾値を一つ下げて（Ｓ２５）、Ｓ２２の読出しに戻る。
【００６３】
閾値更新部は、閾値を下げて読出しを繰り返し、限界に達して読出し結果がエラーとなった場合（Ｓ２３，Ｙｅｓ）、閾値がＳＨ７か否かを判定する（Ｓ２６）。もし、閾値がＳＨ７でエラーの場合には、セルの不良などにより限界を越えているのでマイクロプロセッサ２０６にリードエラーを通知する（Ｓ２７）。
【００６４】
一方、Ｓ２６でＳＨ７でなければ、閾値更新部は、一つ上げた閾値に決定する（Ｓ２８）。例えば、ＳＨ１まではエラーが発生せず、ＳＨ０でリードエラーが発生したのならば、ＳＨ０の一つ上のＳＨ１に決定する。
なお、ＳＨ０でもリードエラーが発生しない場合には、ＳＨ０に決定する（Ｓ２４）。
【００６５】
また、図１３は、図１０のＳ２で閾値の下限を測定する方法の詳細説明図である。
閾値更新部は、先ず閾値を最小のＲＣ０として（Ｓ３１）、読出し部にセルの読出しを行わせる（Ｓ３２）。
【００６６】
閾値更新部は、読出しの結果がエラーか否かを判断し（Ｓ３３）、エラーでなく（Ｓ３３，Ｎｏ）、閾値がＳＨ７に達していない場合に（Ｓ３４，Ｎｏ）、閾値を一つ上げて（Ｓ３５）、Ｓ３２の読出しに戻る。
【００６７】
閾値更新部は、閾値を上げて読出しを繰り返し、限界に達して読出し結果がエラーとなった場合（Ｓ３３，Ｙｅｓ）、閾値がＳＨ０か否かを判定する（Ｓ３６）。もし、閾値がＳＨ０でエラーの場合には、セルの不良などにより限界を越えているのでマイクロプロセッサ２０６にリードエラーを通知する（Ｓ３７）。
【００６８】
一方、Ｓ３６でＳＨ０でなければ、閾値更新部は、一つ下げた閾値に決定する（Ｓ３８）。例えば、ＳＨ６まではエラーが発生せず、ＳＨ７でリードエラーが発生したのならば、ＳＨ７の一つ下のＳＨ６に決定する。
なお、ＳＨ７でもリードエラーが発生しない場合、閾値更新部は閾値をＳＨ７に決定する（Ｓ３４）。
【００６９】
以上のように、本実施形態によれば、セルの変化特性に応じて閾値を上限ｐＳＨと下限ｅＳＨの中間に調整するので、フラッシュメモリ１０の長寿命化が図れると共に、セル電圧と閾値を比較する際のマージンを大きくでき信頼性が向上する。
【００７０】
なお、セルの変化特性は、セルの保持電圧が書き換え回数の増加に伴って高くなる傾向にあるので、図１０のＳ４で中間値よりも高い閾値に繰り上げることにより、更なる長寿命化を図っている。また、本実施形態では図１０のＳ３で求める中間値を上限と下限の１／２としたが、これに限らず１／１．５や２／３など、任意の割合に設定しても良い。
【００７１】
〈実施形態２〉
上記実施形態１では、一つのセルが1ビットのデータを記憶する場合を示したが、本実施形態２は、多値のデータを記憶する場合の例である。
【００７２】
図１４は、本実施形態２におけるセルの変化特性を示す図、図１５は閾値の調整方法の説明図、図１６はユーザデータ及び管理データを記憶する領域の説明図である。なお、その他の構成は、実施形態１と同じであるので、再度の説明を省略する。
【００７３】
本実施形態では、一つのセルで２ビットのデータを記憶する。即ち、フローティングゲートの電荷の状態が、００，０１，１０，１１の４段階で記録される。このため、一つのセルのセル電流を３つの閾値と比較して何れの段階であるかを判定し、データを読み出す。
【００７４】
図１４のグラフは、縦軸にセルのフローティングゲートが保持する電圧、横軸に書き換え回数をとっている。実線００Ｌは、セルに００を書き込んだ状態のセルの変化特性を示し、実線０１Ｌは、セルに０１を書き込んだ状態のセルの変化特性を示し、実線１０Ｌは、セルに１０を書き込んだ状態のセルの変化特性を示す。
【００７５】
また、実線１１Ｌは、セルに１１を記憶させた状態、即ち消去状態のセルの変化特性を示している。なお、各セルに個体差があるため、実線００Ｌ〜１１Ｌはそれぞれ、高い側と低い側の２本の線でバラツキの幅を示している。点線ＳＨ０〜ＳＨ７は、センスアンプＳＡ０〜ＳＡ７がそれぞれ比較に用いる閾値ＳＨ０〜ＳＨ７を示している。即ち、センスアンプＳＡｎが閾値ＳＨｎを比較に用いる。
【００７６】
図１５に示すように、本実施形態２の閾値調整部は、セルに書き込む値００，０１，１０、即ち消去状態以外の値のうち、特定の値ＤＡを書込み部によってセルへ書き込ませる（Ｓ４０）。本実施形態では、先ず最大値である００を書き込む。
【００７７】
次に、閾値調整部は、センスアンプＳＡ０〜ＳＡ７を順に選択し、閾値を変えさせながら、ＤＡを書き込んだ状態のセルのデータを読み取らせ、エラーが発生しない閾値の上限ｐＳＨを求める（Ｓ４１）。
【００７８】
また、閾値更新部は、Ｓ４０で書き込んだ値より電圧レベルが一つ下の値、即ちＤＡ＋１をセルに記憶させ、センスアンプ／コンパレータ回路３０４に閾値を変えさせながら、消去状態のセルの閾値を読取部によって読み取らせ、エラーが発生しない閾値の下限ｅＳ
Ｈを求める（Ｓ４２）。例えば、Ｓ４０で書き込んだ値が００であれば、０１を書き込む。
【００７９】
次に、閾値更新部は、閾値の上限ｐＳＨと閾値の下限ｅＳＨの中間値ｔＳＨを求める（Ｓ４３）。例えば、各閾値ＳＨｎに係るｎの値を用いて以下の（式１）で算出する。
ｔＳＨ＝（ｐＳＨ＋ｅＳＨ）／２ ・・・（式１）
【００８０】
なお、本実施形態２では、各閾値ＳＨｎに係るｎを自然数で示しているので、Ｓ４３で求めた中間値ｔＳＨを繰り上げて新たな閾値として決定する（Ｓ４４）。例えばｐＳＨが６、ｅＳＨが６であれば、ｔＳＨ＝６なので閾値をＳＨ６に決定する。
【００８１】
そして閾値更新部は、Ｓ４３で決定した閾値を比較に用いるセンスアンプを選択し、選択したセンスアンプを示す値を図１６に示すスペアフィールドに記録することで、比較に用いる閾値を更新する（Ｓ４５）。例えば００か０１かを判別する閾値としてＳＨ６を決定した場合、図１７に示すようにＳＨ６を用いるセンスアンプＳＡ６と対応する値１０をＳＥ−１，ＳＥ−２に記憶する。
【００８２】
なお、図１７において、ＳＥ−０，ＳＥ−１は、セルに記憶された値が００か０１かを判別するセンスアンプを示す値である。同様に、ＳＥ−２，ＳＥ−３は、０１か１０かを判別するセンスアンプを示す値、ＳＥ−４，ＳＥ−５は、１０か１１かを判別するセンスアンプを示す値である。例えば、ＳＡ６，ＳＡ３，ＳＡ０を動作させる場合、ＳＥ−０〜ＳＡ−５は、１，０，１，０，０，０となる。
【００８３】
そして、Ｓ４０で書き込んだ値ＤＡの次の値を選択し（Ｓ４６）、ＤＡが最後の値となるまでＳ４０〜Ｓ４６を繰り返す（Ｓ４７）。即ち、Ｓ４０で００を書き込んだのち、次にＳ４０に戻った場合０１を書き込む。更に、Ｓ４０で０１を書き込んだのち、次にＳ４０に戻った場合には１０を書き込む。なお、Ｓ４０で１０を書き込んだ場合、Ｓ４２では消去部によりセルのデータを消去する、即ち一つ上の値１１を記憶させた状態とする。
【００８４】
Ｓ４６で、ＤＡをカウントアップし、１１となった場合には、処理を終了する。
【００８５】
以上のように本実施形態２によれば、一つのセルが多値のデータを記憶する場合にも閾値を調整でき、フラッシュメモリモジュール１０の長寿命化を図れる。
【００８６】
また、実施形態１と実施形態２はセンスアンプ／コンパレータ回路３０４などの回路構成が同じであるので、ファームウェアでデータの書き込みや読出し等の制御を切換えることで、一つのセルに１ビットのデータを記憶させるか、多値のデータを記憶させるかを切換えても良い。
【００８７】
例えば、ＮＡＮＤコントローラ２０のＲＯＭ２０７にＭＬＣかＳＬＣかを示すフラグを記憶させ、マイクロプロセッサ２０６が、このフラグを参照し、ＳＬＣであれば実施形態１の制御を行い、ＭＬＣであれば実施形態２の制御を行う。
【００８８】
また、ＭＬＣかＳＬＣかはセクタ毎に切換えても良い。例えば実施形態２では、ＳＥ−０，ＳＥ−１の値が１，１とはならないので、ＳＬＣとして利用する場合に６th Byteと７th Byteに１，１を書き込む。そしてマイクロプロセッサ２０６が、スペアフィールドの６th Byteと７th Byteを参照し、１，１であれば実施形態１の制御を行い、１，１以外であれば実施形態２の制御を行う。
【００８９】
これにより、同じフラッシュメモリモジュール１０を信頼性の高いＳＬＣと大容量化が
図れるＭＬＣとに切換えて使用できる。
【００９０】
〈その他〉
本発明は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、図１０及び図１５の閾値調整方法は、フラッシュメモリモジュール１０内のマイクロプロセッサ２０６が行ったが、これに限らず、フラッシュメモリモジュール１０を接続した情報処理装置１のＣＰＵが行っても良い。
また、以下に付記した構成であっても良い。これらの構成要素は可能な限り組み合わせることができる。
【００９１】
（付記１）
電圧の保持状態によってデータを記憶する複数のセルと、
前記セルの電圧の保持状態を変化させることで前記セルへのデータを書き込みおよび消去を行う書込み部と、
前記セルが保持する電圧を閾値と比較する比較部と、
前記比較部による比較結果に基づいてデータを読み出す読出し部と、
前記書込み部により書き込もしくは消去した際のデータの電圧値に応じて、前記比較部で比較する閾値を更新させる閾値更新部と、
を備えた半導体記憶装置。
【００９２】
（付記２）
前記閾値が異なる複数の比較部を備え、
前記閾値更新部が、前記複数の比較部を選択的に使用し、使用する比較部を代えることによって、前記比較に用いる閾値を変える請求項１に記載の半導体記憶装置。
【００９３】
（付記３）
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記閾値を決定する請求項１に記載の半導体記憶装置。
【００９４】
（付記４）
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の中間値以上で該中間値に最も近い閾値を比較に用いる比較部を選択する請求項２に記載の半導体記憶装置。
【００９５】
（付記５）
前記セルが多値を記憶するものであり、
前記閾値更新部が、前記セルに特定の値を書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルに前記特定の値よりも電圧レベルが一つ下の値を記憶させた状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記特定の値と対応する閾値を決定する請求項１に記載の半導体記憶装置。
【００９６】
（付記６）
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込む書込み部と、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出す読出し部と、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させる閾値更新部と、
を備えた制御装置。
【００９７】
（付記７）
前記閾値が異なる複数の比較部を選択的に使用し、使用する比較部を前記閾値更新部が代えることによって、前記比較に用いる閾値を変える請求項６に記載の制御装置。
【００９８】
（付記８）
前記セルがデータを書き込んだ状態とデータを消去した状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記閾値を決定する請求項６に記載の制御装置。
【００９９】
（付記９）
前記セルがデータを書き込んだ状態とデータを消去した状態の２値を記憶するものであり、
前記閾値更新部が、前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の中間値以上で該中間値に最も近い閾値を比較に用いる比較部を選択する請求項７に記載の制御装置。
【０１００】
（付記１０）
前記セルが多値を記憶するものであり、
前記閾値更新部が、前記セルに特定の値を書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルに前記特定の値よりも電圧のレベルが一つ下の値を記憶させた状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記特定の値と対応する閾値を決定する付記６に記載の制御装置。
【０１０１】
（付記１１）
電圧の保持状態によってデータを記憶する複数のセルに対し、電圧の保持状態を変化させてデータを書き込むステップと、
前記セルが保持する電圧と閾値との比較結果に基づいてデータを読み出すステップと、
前記閾値を変えて読み出したデータの読出しエラーの有無に基づいて閾値を決定し、前記比較に用いる閾値を更新させるステップと、
を制御装置が実行する閾値調整方法。
【０１０２】
（付記１２）
前記閾値が異なる複数の比較部を選択的に使用し、使用する比較部を代えることによって、前記比較に用いる閾値を変える付記１１に記載の閾値調整方法。
【０１０３】
（付記１３）
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め
、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記閾値を決定する付記１１に記載の閾値調整方法。
【０１０４】
（付記１４）
前記セルがデータを書き込んだ状態とデータを書き込んでいない状態の２値を記憶するものであり、
前記セルにデータを書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルのデータを消去した状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の中間値以上で該中間値に最も近い閾値を比較に用いる比較部を選択する付記１２に記載の閾値調整方法。
【０１０５】
（付記１５）
前記セルが多値を記憶するものであり、
前記セルに特定の値を書き込んだ状態で読出しエラーが無く読み出せた閾値の上限を求め、前記セルに前記特定の値よりも電圧のレベルが一つ下の値を記憶させた状態で読出しエラーが無く読み出せた閾値の下限を求め、前記上限と下限の間に前記特定の値と対応する閾値を決定する付記１１に記載の閾値調整方法。
【図面の簡単な説明】
【０１０６】
【図１】半導体記憶装置を示す図
【図２】半導体記憶装置を使用する情報処理装置のハードウェア構成を示す図
【図３】フラッシュメモリの構成を示すブロック図
【図４】ＮＡＮＤコントローラの構成を示すブロック図
【図５】ＮＡＮＤフラッシュアレイを構成する複数のセルを示す回路図
【図６】センスアンプ／コンパレータ回路を示す回路図
【図７】ＮＡＮＤフラッシュアレイに格納されるデータの構成を示す図
【図８】書き換え回数の増加に伴うセルの変化特性を示す図
【図９】書き換え回数の増加に伴うセルの変化特性を示す図
【図１０】閾値調整方法の全体の流れを示すフローチャート
【図１１】センスアンプを示す値の説明図
【図１２】閾値の上限を測定する方法の詳細説明図
【図１３】閾値の下限を測定する方法の詳細説明図
【図１４】本実施形態２におけるセルの変化特性を示す図
【図１５】閾値の調整方法の説明図
【図１６】ユーザデータ及び管理データを記憶する領域の説明図
【図１７】センスアンプを示す値の説明図
【符号の説明】
【０１０７】
１  情報処理装置
１０  フラッシュメモリモジュール
３０  ＮＡＮＤフラッシュメモリ
３０１  ＮＡＮＤフラッシュアレイ
３０２  Ｘデコーダ
３０３  Ｙデコーダ
３０４  センスアンプ／コンパレータ回路
３０５  アドレスレジスタ／カウンタ
３０６  コマンドレジスタ
３０７  入出力バッファ
２０  ＮＡＮＤコントローラ
【図１】
2010123192.tif 000003
【図２】
2010123192.tif 000004
【図３】
2010123192.tif 000005
【図４】
2010123192.tif 000006
【図５】
2010123192.tif 000007
【図６】
2010123192.tif 000008
【図７】
2010123192.tif 000009
【図８】
2010123192.tif 000010
【図９】
2010123192.tif 000011
【図１０】
2010123192.tif 000012
【図１１】
2010123192.tif 000013
【図１２】
2010123192.tif 000014
【図１３】
2010123192.tif 000015
【図１４】
2010123192.tif 000016
【図１５】
2010123192.tif 000017
【図１６】
2010123192.tif 000018
【図１７】
2010123192.tif 000019