(57)【特許請求の範囲】
【請求項１】
レギュラー領域とスペア領域とを含むメモリアレイと、
前記メモリアレイに記憶するデータまたは前記メモリアレイから読み出されたデータの誤りを訂正する機能を備え、かつ誤り訂正のための生成した誤り訂正符号を前記スペア領域の格納領域に格納する機能を備えた誤り訂正手段と、
メモリの動作を定義するための情報と前記格納領域を設定するためのアドレス情報とを格納する書き換え可能な不揮発性レジスタであって、当該アドレス情報は、前記誤り訂正符号を格納するための先頭アドレスと前記誤り訂正符号のサイズを含む、前記不揮発性レジスタと、
外部から受け取ったコマンドに応答して前記不揮発性レジスタをアクセスし、外部から受け取ったアドレス情報に基づき前記不揮発性レジスタに格納されたアドレス情報を変更可能な制御手段とを有し、
前記制御手段は、電源が投入されたとき、前記不揮発性レジスタからアドレス情報を読出し、
前記誤り訂正手段は、プログラム動作時または読出し動作時に、前記不揮発性レジスタから読み出されたアドレス情報に従い前記誤り訂正符号を前記スペア領域に格納する、半導体装置。
【請求項２】
前記制御手段は、前記不揮発性レジスタから読み出されたアドレス情報を、不揮発性レジスタよりも読出し速度が速い揮発性レジスタに保持させ、前記誤り訂正手段は、前記揮発性レジスタからアドレス情報を読み出す、請求項１に記載の半導体装置。
【請求項３】
前記不揮発性レジスタは、コンフィギュレーションレジスタである、請求項１または２に記載の半導体装置。
【請求項４】
前記誤り訂正手段がイネーブルされたときの格納領域は、前記誤り訂正手段がディスエーブルされたときの格納領域と異なり、前記制御手段は、前記誤り訂正手段がイネーブルされたときの格納領域に対応するアドレス情報に変更可能である、請求項１に記載の半導体装置。
【請求項５】
前記制御手段は、外部からのコマンドに応じて、前記不揮発性レジスタに格納されたアドレス情報を読出し、読み出したアドレス情報を外部へ出力する出力手段を含む、請求項１ないし４いずれか１つに記載の半導体装置。
【請求項６】
前記出力手段は、前記アドレス情報に含まれるサイズが、前記誤り訂正符号のサイズより小さいとき、警告情報を出力する、請求項５に記載の半導体装置。
【請求項７】
前記出力手段は、前記アドレス情報に含まれる先頭アドレスの数が、連続してプログラムできる最大回数より大きいとき、警告情報を出力する、請求項５に記載の半導体装置。
【請求項８】
請求項１ないし７いずれか１つに記載の半導体装置と、
前記半導体装置と接続された外部コントローラとを含み、
前記外部コントローラは、前記格納領域を設定するためのアドレス情報を前記半導体装置へ出力する、システム。
【請求項９】
外部コントローラは、前記不揮発性レジスタに格納された前記誤り訂正手段の格納領域に関する情報を受け取り、当該受け取られた情報に基づき前記アドレス情報を出力する、請求項８に記載のシステム。
【請求項１０】
メモリアレイと、
前記メモリアレイに記憶するデータまたは前記メモリアレイから読み出されたデータの誤りを訂正する機能を備え、かつ誤り訂正のための生成した誤り訂正符号を格納領域に格納する機能を備えた誤り訂正手段と、
前記格納領域を外部から設定可能な設定手段と、
前記設定手段に設定された情報を外部へ出力する出力手段とを含み、
前記出力手段は、前記格納領域を設定するためのアドレス情報で規定されるサイズが、前記誤り訂正符号のサイズより小さいとき警告情報を出力する、半導体装置。
【請求項１１】
メモリアレイと、
前記メモリアレイに記憶するデータまたは前記メモリアレイから読み出されたデータの誤りを訂正する機能を備え、かつ誤り訂正のための生成した誤り訂正符号を格納領域に格納する機能を備えた誤り訂正手段と、
前記格納領域を外部から設定可能な設定手段と、
前記設定手段に設定された情報を外部へ出力する出力手段とを含み、
前記出力手段は、前記格納領域を設定するためのアドレス情報に含まれる先頭アドレスの数が連続してプログラムできる最大回数より大きいとき警告情報を出力する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、オンチップの誤り検出・訂正機能を備えたＮＡＮＤ型フラッシュメモリに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、読出し動作等においてビットエラーを引き起こす。特許文献１は、このようなビットエラー対策として、誤り検出訂正回路（ＥＣＣ：Error Checking Correction）を搭載している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５２９８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＡＮＤフラッシュの微細化に伴い、読出し中等に発生するエラービット数は増加の傾向にある。各サプライヤーは、従来製品との互換性を持たせるため、またよりシステムで使い易くするために、誤り検出訂正をデバイス自身で実行する機能を備えた製品を展開している。これは、オンチップＥＣＣ製品と呼ばれ、ＥＣＣ計算で使用するコード情報をデバイス内部で自動的に算出し、これを決められたアドレス領域に書込む動作を実行している。
【０００５】
図１に、ＥＣＣ機能をオンチップで搭載するＮＡＮＤ型フラッシュメモリの要部を示す。ＥＣＣ機能をオンチップで搭載するフラッシュメモリでは、コマンドまたは設定等によりＥＣＣをイネーブル／ディスエーブルすることが可能である。プログラム動作時、外部入出力端子から入力されたデータは、ページバッファ／センス回路１０へロードされ、ロードされたデータが転送回路２０を介してＥＣＣ回路３０へ転送される。転送回路２０は、双方向のデータ転送が可能な複数のトランジスタを含み、各トランジスタは、ゲートに共通接続された制御信号ＴＧによって駆動される。ＥＣＣ回路３０は、転送されたデータのＥＣＣ演算を行い、コード情報、すなわち誤り検出・訂正のための誤り訂正符号を生成し、誤り訂正符号をページバッファ／センス回路１０のスペア領域に書き戻す動作を行う。次に、ページバッファ／センス回路１０に保持されたプログラムデータおよび誤り訂正符号がメモリアレイの選択ページにプログラムされる。また、読出し動作時、メモリアレイの選択ページから読み出されたデータがページバッファ／センス回路１０に保持され、次に、保持されたデータが転送回路２０を介してＥＣＣ回路３０へ転送される。ＥＣＣ回路３０は、誤り訂正符号に基づき読出しデータの誤りの検出、訂正を行い、誤りが検出された場合には訂正したデータをページバッファ／センス回路１０にセットする。そして、ページバッファ／センス回路１０に保持されたデータが外部入出力端子から出力される。
【０００６】
しかしながら、従来のオンチップＥＣＣ機能を搭載したフラッシュメモリには、次のような課題がある。図２（Ａ）は、オンチップＥＣＣ機能を搭載したフラッシュメモリ側のスペア領域のアドレスマッピングの例示であり、図２（Ｂ）は、システム４０側のスペア領域のアドレスマッピングの例示である。図２（Ａ）に示すように、例えば、ページバッファ／センス回路１０が２Ｋバイト（５１２Ｂ×４）のレギュラー領域ＲＥＧと、６４バイト（１６Ｂ×４）のスペア領域ＳＰＡとから構成されものとする。この場合、レギュラー領域ＲＥＧは、４つのセクタ（Main0,Main1,Main2,Main3）に分割され、各セクタにデータがロードされ、セクタ単位でＥＣＣ処理が行われる。このとき、ＥＣＣ演算によって生成された誤り訂正符号がスペア領域ＳＰＡに格納される。スペア領域ＳＰＡの１６バイトの領域Ｓ０は、セクタ０（Main0）の誤り訂正符号を格納し、領域Ｓ１がセクタ１（Main1）の誤り訂正符号を格納し、領域Ｓ２がセクタ２（Main2）の誤り訂正符号を格納し、領域Ｓ３がセクタ３（Main3）の誤り訂正符号を格納する。その後、ページバッファ１０に保持されたレギュラー領域ＲＥＧおよびスペア領域ＳＰＡのデータは、メモリアレイの選択ページのレギュラー領域ＲＥＧおよびスペア領域ＳＰＡにプログラムされる。
【０００７】
他方、ＥＣＣ機能を実行可能なシステム４０が、図２（Ｂ）に示すように、５１２バイトのセクタと１６バイトのスペアとが対になるような構成であると、少なくともスペア領域の領域Ｓ０とＳ１のアドレスとが、フラッシュメモリ側のレギュラー領域ＲＥＧのアドレスに重複してしまう。このため、オンチップＥＣＣ機能を実行するフラッシュメモリとの互換性を図るためには、システム側でファームウエアを変更し、両者のスペア領域のアドレスを一致させる必要があり、それ故、オンチップＥＣＣ機能を搭載したフラッシュメモリとシステムとの間に完全な互換性があるとは言えなかった。
【０００８】
図３は、１つのスペア領域（１６バイト）の例示であり、図３（Ａ）、（Ｂ）、（Ｃ）は、それぞれ仕様が異なるフラッシュメモリ側のスペア領域、図３（Ｄ）は、システム側のスペア領域である。図３（Ａ）のフラッシュメモリでは、先頭２バイトにはバッドブロックか否かの識別情報が格納され、次の６バイトにはユーザーデータが格納され、次の６バイトには、セクタ０（Main0）の誤り訂正符号が格納され、最後の２バイトには、セクタ０の誤り訂正符号についての誤り訂正符号（以下、スペア領域の誤り訂正符号という）が格納される。図３（Ｂ）のフラッシュメモリでは、「８〜Ｆ」の８バイトに、セクタ０の誤り訂正符号とスペア領域の誤り訂正符号が格納される。図３（Ａ）と図３（Ｂ）の場合、同じバイト位置に誤り訂正符号が格納されるが、スペア領域の誤り訂正符号を格納する位置が必ずしも一致しない。図３（Ｃ）のフラッシュメモリでは、「１〜３」の３バイトにセクタ０の誤り訂正符号が格納され、「４〜７」の４バイトには、スペア領域の誤り訂正符号が格納される。これに対し、図３（Ｄ）のシステム側では、「２〜９」の８バイトに誤り訂正符号およびスペア領域の誤り訂正符号が格納され、「Ａ〜Ｆ」の６バイトには、ユーザーが自由に利用することができるメタデータが格納される。このように、フラッシュメモリのスペア領域とシステム側のスペア領域とのアドレスが仮に一致したとしても、スペア領域の異なる位置に誤り訂正符号が格納されると、両者に完全な互換性がなくなってしまう。
【０００９】
本発明は、上記した従来の課題を解決するものであり、既存のシステムとの間で互換性を図る誤り訂正機能を備えた半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る半導体装置は、メモリアレイと、前記メモリアレイに記憶するデータまたは前記メモリアレイから読み出されたデータの誤りを訂正する機能を備え、かつ誤り訂正のための生成した誤り訂正符号を格納領域に格納する機能を備えた誤り訂正手段と、前記格納領域を外部から設定可能な設定手段とを有する。
【００１１】
好ましい態様では、前記設定手段は、外部から前記格納領域を設定するためのアドレス情報を受け取り、当該アドレス情報に基づき前記格納領域を設定する。好ましい態様では、前記アドレス情報は、前記誤り訂正符号を格納するための先頭アドレスと、前記誤り訂正符号のサイズとを含む。好ましい態様では、前記設定手段は、外部からのコマンドに基づき前記格納領域を設定する。好ましい態様では、前記設定手段は、不揮発性レジスタ（例えば、コンフィギュレーションレジスタ）に前記アドレス情報を保持する。好ましい態様では、半導体装置はさらに、前記設定手段に設定された情報を外部へ出力する出力手段を含む。好ましい態様では、前記出力手段は、前記アドレス情報に含まれるサイズが、前記誤り訂正符号のサイズより小さいとき、警告情報を出力する。好ましい態様では、前記出力手段は、前記アドレス情報に含まれる先頭アドレスの数が、連続してプログラムできる最大回数より大きいとき、警告情報を出力する。好ましい態様では、前記メモリアレイは、レギュラー領域とスペア領域とを含み、前記スペア領域が前記格納領域を含む。
【００１２】
本発明に係るシステムは、上記構成の半導体装置と、前記半導体装置と接続された外部コントローラとを含み、前記外部コントローラは、前記格納領域を設定するためのアドレス情報を前記半導体装置へ出力する。好ましい態様では、外部コントローラは、前記設定手段に設定された情報を受け取り、当該受け取られた情報に基づき前記アドレス情報を出力する。
【発明の効果】
【００１３】
本発明によれば、誤り訂正符号を格納する格納領域を外部から設定可能にすることで、半導体装置の格納領域を変更することができ、これにより、既存のシステムの仕様を変更することなく、半導体装置との間でデータの互換性を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】従来のフラッシュメモリのオンチップＥＣＣ動作を説明する図である。
【図２】従来のフラッシュメモリのスペア領域とホスト装置側のスペア領域とのアドレスマッピングが異なる例を示す図である。
【図３】従来のフラッシュメモリのスペア領域とホスト装置側のスペア領域に格納される情報の一例を示す図である。
【図４】本発明の実施例に係るメモリシステムの一構成例を示す図である。
【図５】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図６】本発明の実施例に係るフラッシュメモリの動作時に各部に印加される電圧の一例を示す図である。
【図７】本発明の実施例によるプログラム動作時のレギュラー領域のＥＣＣ処理を説明する図である。
【図８】本発明の実施例によるプログラム動作時のスペア領域のＥＣＣ処理を説明する図である。
【図９】本発明の実施例に係るスペア領域の誤り訂正符号の格納領域を設定する動作を説明するフローチャートである。
【図１０】本実施例による誤り訂正符号の格納領域を変更する例である。
【図１１】スペア領域の位置が異なる場合の誤り訂正符号の格納領域を変更する具体例である。
【図１２】本実施例による誤り訂正符号の格納領域を変更する他の例である。
【図１３】本発明の実施例によるＥＣＣ動作の例を示すフローチャートである。
【図１４】本発明の第２の実施例の動作シーケンスを説明する図である。
【図１５】本発明の第３の実施例の動作シーケンスを説明する図である。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、半導体記憶装置の好ましい形態としてＮＡＮＤ型フラッシュメモリを例示する。
【実施例】
【００１６】
図４は、本実施例のメモリシステムの一例を示す図である。メモリシステム２００は、外部コントローラ２１０と、当該外部コントローラ２１０に接続されたフラッシュメモリ１００とを含む。外部コントローラ２１０は、特に限定されるものではないが、例えば、コンピュータ、デジタルカメラ、プリンタ、メモリコントローラなどの電子装置やホスト装置である。外部コントローラ２１０は、フラッシュメモリ１００にコマンド、データ、制御信号等を送信し、フラッシュメモリ１００の動作（プログラム、読出し、消去、設定など）を制御する。
【００１７】
図５は、フラッシュメモリ１００の構成を示す図である。フラッシュメモリ１００は、複数のメモリセルが行列状に配列されたメモリアレイ１１０と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１２０と、メモリアレイ１１０にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うＥＣＣ回路１３０と、入出力バッファ１２０からのアドレスデータを受け取るアドレスレジスタ１４０と、ＥＣＣ回路によって生成された誤り訂正符号を格納するアドレス情報を記憶する不揮発性のコンフィギュレーションレジスタ１５０と、外部コントローラ２１０からのコマンドデータや制御信号に基づき各部を制御するコントローラ１６０と、アドレスレジスタ１４０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択やワード線の選択等を行うワード線選択回路１７０と、ワード線選択回路１７０によって選択されたページから読み出されたデータを保持したり、選択されたページへプログラムするデータを保持するページバッファ／センス回路１８０と、アドレスレジスタ１４０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１７０内の列の選択等を行う列選択回路１９０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１９２とを含んで構成される。
【００１８】
メモリアレイ１１０は、列方向に配置されたｍ個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。１つのメモリブロックには、複数のメモリセルを直列に接続したＮＡＮＤストリングが複数形成される。メモリセルは、例えば、Ｐウエル内に形成されたＮ型の拡散領域であるソース／ドレインと、ソース／ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むＭＯＳ構造を有する。ＮＡＮＤストリングは、２次元アレイ状に形成されるものでもよいし、３次元アレイ状に形成されるものでもよい。また、メモリセルは、１ビット（２値データ）を記憶するＳＬＣタイプでもよいし、多ビットを記憶するＭＬＣタイプであってもよい。
【００１９】
図６は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧Vpass（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ＮＡＮＤストリングのビット線側選択トランジスタ、ソース線側選択トランジスタをオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vpgm（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線側選択トランジスタをオンさせ、ソース線側選択トランジスタをオフさせ、「０」または「１」のデータに応じた電位をビット線に供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２０】
ＥＣＣ回路１３０は、コマンドまたは出荷時の設定等によりイネーブルまたはディスエーブルにすることが可能である。オンチップＥＣＣ機能がイネーブルされた場合、ＥＣＣ回路１３０は、プログラム動作時に入出力バッファ１２０を介してデータ（プログラムすべきデータ）がページバッファ／センス回路１８０にロードされると、ページバッファ／センス回路１８０から転送されたデータを演算し、誤り訂正符号を生成する。ＥＣＣの演算は、例えば、パリティチェック、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたｋビットまたはｋバイトのデータをｐ＝ｋ＋ｑに変換する。「ｑ」は、データの誤り検出訂正に必要な誤り訂正符号またはパリティビットである。ＥＣＣ回路１３０は、生成した誤り訂正符号をページバッファ／センス回路１８０のスペア領域に格納する。こうして、ページバッファ／センス回路１８０にセットされたデータと誤り訂正符号がメモリアレイ１１０の選択ページにプログラムされる。
【００２１】
読出し動作時、メモリアレイ１１０の選択ページから読み出されたデータがページバッファ／センス回路１８０に保持されると、ＥＣＣ回路１３０は、ページバッファ／センス回路１８０から転送されたデータおよび誤り訂正符号に基づき読出しデータの誤りの検出を行い、誤りが検出された場合には訂正したデータをページバッファ／センス回路１８０にセットする。そして、ページバッファ／センス回路１８０に保持されたデータが入出力バッファ１２０を介して出力される。
【００２２】
コンフィギュレーション（ＣＦ）レジスタ１５０は、フラッシュメモリ１００の動作を定義するための種々の情報を格納するが、本実施例に係るＣＦレジスタ１５０は、スペア領域の誤り訂正符号を格納する格納領域を設定するための情報、すなわち、ＥＣＣ回路１３０によって生成された誤り訂正符号を格納するためのアドレス情報を記憶する。ＣＦレジスタ１５０は、書き換え可能な不揮発性メモリから構成され、外部コントローラ２１０は、例えば、特定のコマンドを出力することでＣＦレジスタ１５０にアクセスし、ＣＦレジスタ１５０の設定内容を変更することができる。あるいは、このようなコマンドによらず、外部コントローラ２１０は、フラッシュメモリ１００が特定のモードにあるとき（例えば、テストモード）、ＣＦレジスタ１５０にアクセスし、ＣＦレジスタ１５０の設定を変更することができる。
【００２３】
ＣＦレジスタ１５０には、上記したように誤り訂正符号の格納領域を規定するためのアドレス情報が保持されるが、このアドレス情報は、デフォルト設定では、図２（Ａ）に示すように、レギュラー領域のセクタ３（Main3）の直後のスペア領域の全体のスペア０〜スペア３（１６Ｂ×４）を格納領域に設定している。図７は、そのようなアドレス情報がデフォルト設定されているときのＥＣＣ処理の一例を示す。
【００２４】
コントローラ１６０は、入出力バッファ１２０を介してプログラムコマンドを受け取ると、プログラムのためのシーケンスを開始する。フラッシュメモリ１００が×８の外部入出力端子を有するとき、外部入出力端子Ｐ０〜Ｐ７から各Ｉ／Ｏバッファ１２０−１〜１２０−７を介してページバッファ／センス回路１８０に入力データＤｉがロードされる。
本例の場合、ページバッファ／センス回路１８０は、セクタ０〜セクタ３の４つのセクタに分割されたレギュラー領域３００と、スペア０、スペア１、スペア２、スペア３の４つのセクタに分割されたスペア領域３１０とを有する。レギュラー領域３００の１つのセクタは、５１２バイトから構成され、スペア領域３１０の１つのセクタは、１６バイトから構成される。
【００２５】
スペア領域３１０の１つのセクタは、例えば、不良メモリセルを含むバッドブロックを識別する情報を記憶する領域３１１、ユーザーデータを記憶する領域３１２、レギュラー領域３００の１つセクタについての誤り訂正符号を記憶する領域３１３、スペア領域３１０がＥＣＣ演算されたときの誤り訂正符号を記憶する領域３１４を有する。スペア０の領域３１３は、セクタ０の誤り訂正符号を記憶し、スペア１の領域３１３は、セクタ１の誤り訂正符号を記憶し、スペア２は、セクタ２の誤り訂正符号を記憶し、スペア３は、セクタ３の誤り訂正符号を記憶する。
【００２６】
レギュラー領域３００の１つのセクタには、入出力バッファ１２０−０〜１２０−７が割り当てられ、つまり、１つの外部入出力端子には５１２ビットが割り当てられる（５１２bit×８＝１セクタ）。列選択回路１９０は、プログラム動作時に受け取った列アドレス情報Ａｙをデコードし、当該デコード結果に基づき、外部入出力端子Ｐ−０〜Ｐ７からの入力データＤｉがロードされるセクタを選択する。図７は、外部入出力端子Ｐ−０〜Ｐ−７で受け取られた入力データＤｉがセクタ０にロードされる例を示している。
【００２７】
また、本実施例のＥＣＣ回路１３０は、誤り訂正符号を書込むための書込み回路を含む。好ましくは、ＥＣＣ回路１３０は、レギュラー領域３００の１つのセクタと等しいバイト数のデータまでＥＣＣ演算を行うことができる。レギュラー領域３００の１つのセクタが５１２バイトであれば、ＥＣＣ回路は、５１２バイトのデータについてＥＣＣ演算を行い、例えば、１ビットの誤りを訂正する誤り訂正符号を生成する。この場合、全体の４セクタでは、最大で４ビットの誤りを訂正することができる。
【００２８】
ＥＣＣ回路１３０は、生成された誤り訂正符号をスペア領域３１０の対応する領域３１３に書込む。図７に示す例では、入力データＤｉがセクタ０にロードされるので、誤り訂正符号は、スペア０の領域３１３に書込まれる。
【００２９】
図８に、スペア領域３１０に格納されるデータのＥＣＣ処理を例示する。レギュラー領域３００の各セクタについてＥＣＣ処理が終了すると、次に、スペア領域３１０の各セクタについてＥＣＣ処理が行われる。スペア領域３１０の１つのセクタ内に含まれるどのデータのＥＣＣ処理を行うかは任意であるが、本例では、領域３１２、３１３のデータについてＥＣＣ処理を行う。それ故、スペア０の領域３１２、３１３のデータがＥＣＣ回路１３０に転送され、ＥＣＣ処理によって生成された誤り訂正符号が、スペア０の領域３１４に書込まれる。同様の処理が、他のスペア１ないしスペア３についても行われる。ＥＣＣ処理が終了すると、メモリアレイ１１０の選択ページへのプログラムが開始される。
【００３０】
次に、ＣＦレジスタ１５０に保持されるアドレス情報の変更について詳細に説明する。図９は、アドレス情報を変更または設定するための動作を説明するフローチャートである。先ず、外部コントローラ２１０は、フラッシュメモリ１００に対して、ＣＦレジスタ１５０の設定を変更するための特定のコマンドを出力し、この特定のコマンドがフラッシュメモリ１００で受け取られる（Ｓ１００）。コントローラ１６０は、受け取った特定のコマンドに応答してＣＦレジスタ１５０の設定を変更するためのシーケンスを開始する。
【００３１】
外部コントローラ２１０は、フラッシュメモリ１００に対して、誤り訂正符号の格納領域を規定するためのアドレス情報を出力し、当該アドレス情報がフラッシュメモリ１００に入力される（Ｓ１０２）。コントローラ１６０は、入力されたアドレス情報に従いＣＦレジスタ１５０の設定内容を変更する（Ｓ１０４）。
【００３２】
ここで、外部コントローラ２１０から発せられるアドレス情報は、好ましくは、誤り訂正符号を格納する先頭アドレス、およびサイズ（バイト数）とを含む。仮に、図７に示すようなレギュラー領域３００とスペア領域３１０とが設定される場合、アドレス情報は、スペア０、スペア１、スペア２およびスペア３の各々の誤り訂正符号を格納するための先頭アドレスおよびサイズとを含む。スペア０であれば、領域３１３の先頭アドレスとそこからのサイズである。
【００３３】
次に、誤り訂正符号の格納領域の具体的な変更例について説明する。図１０（Ａ）は、フラッシュメモリ側のデフォルト時のスペア領域の構成、図１０（Ｂ）は、システム側のスペア領域の構成、図１０（Ｃ）は、本実施例により図１０（Ａ）のスペア領域の誤り訂正符号の格納領域を変更したときの例である。図１０（Ａ）において、誤り訂正符号の格納領域は、先頭アドレスが「８」から始まる８バイトで規定される領域であり、図１０（Ｂ）のシステム側の誤り訂正符号の格納領域は、先頭アドレスが「２」から始まる８バイトで規定される領域である。システム側の「Ａ〜Ｆ」の６バイトのメタ領域は、ユーザーがデータを格納する領域であり、システムとの間に互換性を持たせるためには、メタ領域と重複するフラッシュメモリ側の「Ａ〜Ｆ」の誤り訂正符号の格納領域を変更させる必要がある。そこで、本実施例では、図１０（Ｃ）に示すように、フラッシュメモリ側の誤り訂正符号の格納領域を変更するため、外部コントローラ２１０は、先頭アドレス「２」、サイズ＝８バイトを含むアドレス情報をフラッシュメモリ１００に出力し、コントローラ１６０は、入力されたアドレス情報に従いＣＦレジスタ１５０の設定内容を変更する。
【００３４】
図１０の例は、フラッシュメモリ側とシステム側のスペア領域の位置が一致する場合であるが、図２（Ａ）、（Ｂ）に示すようにスペア領域の位置が異なる場合も同様に、先頭アドレスとサイズとを含むアドレス情報をＣＦレジスタ１５０に設定し、誤り訂正符号の格納領域を変更する。レギュラー領域のセクタ０〜３（Main0〜Main3）の合計が２０４８バイト、スペア領域のセクタＳ０〜Ｓ３の合計が６４バイト、両者の合計が２１１２バイトであり、この中に、誤り訂正符号を格納するための先頭アドレスとサイズとが設定される。すなわち、図１１（Ａ）に示すように、セクタ０(Main0)の誤り訂正符号を格納するための先頭アドレスＸ０は、５１４（５１２Ｂ＋２Ｂ）であり、サイズは８バイトとなる。以後、図１０（Ｃ）の構成に従うと、フリースペースが６バイト、次のセクタ１（Main1）が５１２バイト、その直後のバッドブロックが２バイトとなり、次のスペアＳ１の先頭アドレスＸ１は、１０４２（＝５１２＋１６＋５１２＋２）、次のスペアＳ２の先頭アドレスＸ２は、１５７０、最後のスペアＳ３の先頭アドレスは、２０９８となる。また、それらのサイズは、全て８バイトである。また、仮に、図２（Ａ）に示すようなスペア領域ＳＰＡに変更するならば、スペア０の先頭アドレスが２０５０、スペア１の先頭アドレスが２０６６、スペア２の先頭アドレスが２０８２、スペアＳ３の先頭アドレスが２０９８となる。それらのサイズは、全て８バイトである。また、図１１（Ｂ）は、図１１（Ａ）に示すセクタとスペア領域の順序を反転したアドレスマッピングを有する例を示している。スペア領域のセクタ０は、レギュラー領域のセクタ０の誤り訂正符号を格納し、同様に、スペア領域のセクタ１、２、３は、それぞれレギュラー領域のセクタ１、２、３の誤り訂正符号を格納する。図１１（Ｂ）のときとも、上記と同様の方法により、スペア領域の各セクタ０、１、２、３の先頭アドレスとそのサイズを含むアドレス情報を変更することができる。
【００３５】
図１２は、本実施例の他の誤り訂正符号の格納領域の変更例を示す。図１２（Ａ）は、オンチップＥＣＣモードがディスエーブル時のフラッシュメモリ側のページバッファの例であり、ページバッファは、セクタ０〜セクタ３（Main0〜Main3）の２０４８バイトのレギュラー領域３００と、１２８バイトのスペア領域３１０とを有する。図１２（Ｂ）は、システム側のページバッファの構成であり、１２８バイトのスペア領域には、誤り訂正符号の格納領域（ＥＣＣ）と、ユーザーが使用するメタ（Meta）領域とが設定される。図１２（Ｃ）は、図１２（Ａ）のフラッシュメモリのＥＣＣがイネーブルされたときのページバッファの構成であり、この場合、１２８バイトのスペア領域が６４バイトのスペア領域と６４バイトの隠された領域（ユーザーから見ることができない領域）に設定される。このような例では、６４バイトの隠された領域がシステム側のメタ領域と重複してしまい、システム間のデータの互換性が損なわれる。そこで、本実施例を適用したフラッシュメモリは、図１２（Ｄ）に示すように、１２８バイトのスペア領域３１０の中に、システム側の誤り訂正符号の格納領域と一致するように誤り訂正符号の格納領域を変更することができる。その結果、システム側のメタ領域をそのまま利用することが可能になる。
【００３６】
次に、本実施例のＥＣＣ動作について図１３のフローを参照して説明する。図４に示すシステム２００が起動され、フラッシュメモリ１００に電源が投入されると（Ｓ２００）、コントローラ１６０は、パワーアップシーケンスのためのプログラムまたはステートマシンを開始する。コントローラ１６０は、その一環として、ＣＦレジスタ１５０をアクセスし、そこからアドレス情報を読出し、これを、例えば、ＳＲＡＭやＤＲＡＭ等の高速読出しが可能な揮発性レジスタに保持させる（Ｓ２１０）。
【００３７】
その後、プログラム動作時等において、ＥＣＣ動作が行われるとき（Ｓ２２０）、ＥＣＣ回路１３０は、揮発性レジスタからアドレス情報を読出し（Ｓ２３０）、当該アドレス情報により規定されたスペア領域または格納領域内に生成した誤り訂正符号を格納する（Ｓ２４０）。また、メモリアレイから読み出したデータについてＥＣＣを行う場合には、スペア領域または格納領域から誤り訂正符号が読み出され、読出しデータについての誤りの検出・訂正が行われる。
【００３８】
このように本実施例によれば、オンチップＥＣＣ機能を備えたフラッシュメモリにおいて、ＥＣＣ回路によって生成された誤り訂正符号を格納する格納領域を外部から変更できるようにしたので、システム側のアドレスマッピングないしファームウエアを変更することなく、メモリシステムとの互換性を図ることができる。
【００３９】
次に、本発明の第２の実施例について説明する。上記実施例では、外部コントローラ２１０からフラッシュメモリ１００にアドレス情報を出力し、ＣＦレジスタ１５０の設定内容を変更する例を示したが、この場合、ユーザーは、フラッシュメモリのＥＣＣに関連する仕様（例えば、生成される誤り訂正符号のバイト数）を予め知っておくことことが望ましい。第２の実施例では、外部コントローラ２１０は、フラッシュメモリ１００からＣＦレジスタに保持されている誤り訂正符号の格納領域に関する情報を読み出す機能を備える。
【００４０】
図１４は、第２の実施例の動作を示すシーケンスの一例である。先ず、外部コントローラ２１０は、フラッシュメモリ１００に対してＣＦレジスタ１５０の内容を読み出すためのコマンドを出力する。コントローラ１６０は、当該特定のコマンドに応じてＣＦレジスタ１５０に保持されたアドレス情報を読み出し（Ｓ３００）、読み出したアドレス情報を外部コントローラ２１０へ出力する。外部コントローラ２１０は、受信したアドレス情報に基づき、フラッシュメモリ１００のＥＣＣの仕様を出力する。これにより、ユーザーは、フラッシュメモリ１００のＥＣＣ回路１３０によって生成される誤り訂正符号のサイズを確認することができる。その後、第１の実施例で説明したように、ＣＦレジスタ１５０のアドレス情報を変更する場合には、生成される誤り訂正符号のサイズよりも小さくならないようなサイズを含むアドレス情報がフラッシュメモリ１００へ送信される。
【００４１】
次に、本発明の第３の実施例について説明する。第３の実施例では、フラッシュメモリ１００のコントローラ１６０は、外部コントローラ２１０から送信されるアドレス情報が、ＥＣＣ回路１３０によって生成される誤り訂正符号のサイズよりも小さい場合には、外部コントローラ２１０に対して警告を発する。図１５は、第３の実施例の動作を示すシーケンスの一例である。同図に示すように、外部コントローラ２１０からフラッシュメモリ１００に対して誤り訂正符号の格納領域を変更するためのアドレス情報が送信されると、コントローラ１６０は、送信されたアドレス情報に含まれるサイズＳａと、ＥＣＣ回路１３０によって生成される誤り訂正符号のサイズＳｂとを比較し（Ｓ４１０）、変更されるサイズＳａが生成される誤り訂正符号のサイズＳｂ以上であれば、コントローラ１６０は、ＣＦレジスタ１５０のアドレス情報を変更する（Ｓ４２０）。変更されるサイズＳａが生成される誤り訂正符号のサイズＳｂよりも小さい場合には、コントローラ１６０は、外部コントローラ２１０に対して警告、あるいは生成される誤り訂正符号のサイズＳｂの情報を送信し、外部コントローラ２１０は、警告等を出力することでその旨をユーザーに知らせる（Ｓ４３０）。
【００４２】
また、フラッシュメモリが、パーシャルページプログラム機能、すなわち１ページサイズ（２Ｋバイト）よりも小さいサイズのデータを同一ワード線に複数回プログラムする機能を備えている場合、高いプログラム電圧が繰り返し同一ワード線に印加されることの悪影響を防止するため、許容されるプログラムの最大回数Ｎｏｐが規定されている。第３の実施例の変形例として、コントローラ１６０は、外部コントローラ２１０からのアドレス情報に含まれる先頭アドレスの数と最大回数Ｎｏｐとを比較し、最大回数Ｎｏｐよりも大きい場合には、外部コントローラ２１０に対して警告を発するようにしてもよい。
【００４３】
上記実施例では、誤り訂正符号の格納領域を規定するアドレス情報をＣＦレジスタに設定する例を示したが、これは一例であり、他の不揮発性の記憶領域であってもよい。そのような記憶領域は、ユーザーによって利用されるまたは参照されるメモリアレイの領域から隠された領域であってもよい。また、誤り訂正符号の格納領域を規定するアドレス情報は、物理的アドレス空間を示すアドレスであってもよいし、論理的アドレス空間を示すアドレスであってもよい。さらに不揮発性の記憶領域は、例えば、ＮＯＲ型またはＮＡＮＤ型の記憶素子、ＥＥＰＲＯＭ、ＭＲＡＭ、ＲｅＲＡＭ等の記憶素子などから構成されるものでもよい。
【００４４】
さらに上記実施例では、フラッシュメモリを例示したが、本発明は、オンチップＥＣＣ機能を搭載する他の半導体記憶装置、あるいはメモリ機能を備えた半導体装置（例えば、フラッシュメモリが埋め込まれた半導体装置）にも適用することができる。
【００４５】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４６】
１００：フラッシュメモリ                １１０：メモリアレイ
１２０：入出力バッファ                  １３０：ＥＣＣ回路
１４０：アドレスレジスタ                １５０：コンフィギュレーションレジスタ
１６０：コントローラ                    １７０：ワード線選択回路
１８０：ページバッファ／センス回路      １９０：列選択回路
３００：レギュラー領域                  ３１０：スペア領域
【図１】
0006258399.tif 000002
【図２】
0006258399.tif 000003
【図３】
0006258399.tif 000004
【図４】
0006258399.tif 000005
【図５】
0006258399.tif 000006
【図６】
0006258399.tif 000007
【図７】
0006258399.tif 000008
【図８】
0006258399.tif 000009
【図９】
0006258399.tif 000010
【図１０】
0006258399.tif 000011
【図１１】
0006258399.tif 000012
【図１２】
0006258399.tif 000013
【図１３】
0006258399.tif 000014
【図１４】
0006258399.tif 000015
【図１５】
0006258399.tif 000016