(57)【要約】      （修正有）【課題】データの信頼性を維持しつつプログラム時間の短縮を図ることができる半導体記憶装置を提供する。【解決手段】外部入出力端子から入力されたプログラムデータをページバッファ／センス回路１７０へロードし、プログラムデータを監視する検出回路１３０によってプログラムデータが特定のビット列であるか否かが検出される。プログラムデータが特定のビット列でないことが検出されたとき、ページバッファ／センス回路１７０に保持されたプログラムデータが転送／書込み回路２００によってＥＣＣ回路１２０へ転送され、ＥＣＣ演算により生成された誤り訂正符号がページバッファ／センス回路１７０に書込まれる。他方、特定のビット列であることが検出されたとき、ページバッファ／センス回路１７０に保持されたプログラムデータの転送が禁止され、当該特定のビット列に対応する既知の誤り訂正符号がページバッファ／センス回路１７０に書込まれる。【選択図】図４
2015170381.tif 000002
【特許請求の範囲】
【請求項１】
メモリアレイと、
前記メモリアレイから読み出したデータを保持し、または前記メモリアレイに書込むデータを保持するデータ保持手段と、
データの誤り検出訂正を行う誤り検出訂正手段と、
前記データ保持手段から前記誤り検出訂正手段へデータを転送する転送手段と、
前記誤り検出訂正手段により生成された誤り訂正符号を前記データ保持手段に書込む書込み手段と、
前記データ保持手段へ入力されるデータが特定のビット列を有するか否かを検出する検出手段とを有し、
前記特定のビット列が検出されたとき、前記転送手段は、前記特定のビット列に対応するデータの転送を禁止し、かつ前記書込み手段は、予め決められた誤り訂正符号を前記データ保持手段に書込む、半導体記憶装置。
【請求項２】
前記特定のビット列は、論理０からなるビット列である、請求項１に記載の半導体記憶装置。
【請求項３】
前記特定のビット列は、論理１からなるビット列である、請求項１に記載の半導体記憶装置。
【請求項４】
前記特定のビット列は、前記転送手段が一度に転送するビット数に等しいビット数である、請求項１ないし３いずれか１つに記載の半導体記憶装置。
【請求項５】
前記データ保持手段は複数のセクタに分割され、前記転送手段は、セクタ単位でデータを転送し、前記誤り訂正手段は、セクタ単位で誤り訂正処理を行う、請求項１ないし４いずれか１つに記載の半導体記憶装置。
【請求項６】
前記特定のビット列は、前記データ保持手段が保持する１ページのビット数に等しい、請求項１ないし３いずれか１つに記載の半導体記憶装置。
【請求項７】
半導体記憶装置はさらに、特定のビット列と誤り訂正符号との関係を記憶する記憶手段を含み、前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を書込む、請求項１ないし６いずれか１つに記載の半導体記憶装置。
【請求項８】
前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を生成する論理回路を含み、当該論理回路により生成された誤り訂正符号を書込む、請求項１ないし６いずれか１つに記載の半導体記憶装置。
【請求項９】
半導体記憶装置は、複数の外部入出力端子を含み、複数の外部入出力端子から入力されたデータが並列に前記データ保持手段にロードされ、前記検出手段は、並列に入力されたデータの各々が特定のビット列を含むか否かを検出する、請求項１ないいし８いずれか１つに記載の半導体記憶装置。
【請求項１０】
前記検出手段は、ビットデータの遷移の有無を検出する検出回路を含む、請求項１ないし９いずれか１つに記載の半導体記憶装置。
【請求項１１】
前記メモリアレイはＮＡＮＤ型メモリアレイであり、前記データ保持手段はページバッファを含む、請求項１ないし１０いずれか１つに記載の半導体記憶装置。
【請求項１２】
ＮＡＮＤ型フラッシュメモリのプログラム方法であって、
外部入出力端子から入力されたプログラムデータをページバッファへロードし、
前記プログラムデータが特定のビット列であるか否かを検出し、
特定のビット列でないことが検出されたとき、前記ページバッファに保持されたプログラムデータをＥＣＣ回路へ転送し、ＥＣＣ演算により生成された誤り訂正符号を前記ページバッファに書込み、他方、特定のビット列であることが検出されたとき、前記ページバッファに保持されたプログラムデータの転送を禁止し、当該特定のビット列に対応する既知の誤り訂正符号を前記ページバッファに書込む、プログラム方法。
【請求項１３】
前記プログラムデータは、すべて論理「０」のビット列である、請求項１２に記載のプログラム方法。
【請求項１４】
前記プログラムデータは、すべて論理「１」のビット列である、請求項１２に記載のプログラム方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置の入出力データの誤り検出訂正に関し、特に、ＮＡＮＤ型フラッシュメモリの入力データの誤り検出および訂正に関する。
【背景技術】
【０００２】
フラッシュメモリ、ＤＲＡＭ等の半導体メモリでは、集積度が年々増加し、不良または欠陥のない記憶素子を製造することは難しくなっている。このため、メモリチップ上には、製造工程中に発生する記憶素子の物理的な欠陥を見かけ上救済するための冗長スキームが利用される。例えば、ある冗長スキームでは、冗長メモリを設けることで、物理的な欠陥のある記憶素子を救済している。また、半導体メモリには、冗長メモリによる物理的な救済以外に、ソフトエラー対策として誤り検出訂正回路（ＥＣＣ：Error Checking Correction）が用いられる。
【０００３】
ＮＡＮＤ型フラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、ビットエラーを引き起こす。特許文献１では、このようなビットエラー対策として、誤り検出訂正回路を搭載している。特に、ブロック選択トランジスタに近いセルでは、リソグラフィによるパターンのバラツキ、拡散層形成時のイオン注入のバラツキによって、ビットエラー率が高くなる傾向にあり、これをより多く救済可能にするためのＥＣＣコードを格納している。
【０００４】
また、ＮＡＮＤ型フラッシュメモリには、１つのメモリセルに１ビットのデータを格納するものに加えて、１つのメモリセルにマルチビットのデータを格納するものがある。特許文献２は、このようなマルチビットのデータのエラー訂正のスキームを開示している。さらに特許文献３は、入力されたデータにＥＣＣパリティを付加してＥＣＣ符号を生成し、生成されたＥＣＣ符号を物理ブロックに書込み、物理ブロックより読み出したページデータにエラーがあるときＥＣＣ符号によってエラーを訂正し、訂正したエラー数が閾値以上の物理ブロックを警告ブロックとしてテーブルに登録し、データ書込み時に警告ブロックの選択の優先順位を下げるフラッシュメモリを開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１５２９８９号公報
【特許文献２】特開２００８−１６５８０５号公報
【特許文献３】特開２０１０−７９４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＥＣＣ回路をオンチップで搭載するＮＡＮＤ型フラッシュメモリは、入力されたデータをページバッファに保持し、ページバッファに保持されたデータをＥＣＣ回路へ転送し、そこでＥＣＣ演算により生成された誤り訂正符号（エラーコード）をページバッファに書き戻し、その後、ページバッファのデータをメモリアレイの選択されたページにプログラムしている。しかしながら、プログラムされるすべてのページデータについてＥＣＣ演算を行うと、その処理に非常に時間がかかる。ＮＡＮＤ型フラッシュメモリでは、ページ単位でプログラムが行われるので、高集積化に伴い１ページ当たりのビット数が増加すれば、それに比例してＥＣＣ回路の演算に要する時間が増加してしまう。このことは、プログラム時間の短縮の障害になり得る。
【０００７】
本発明は、上記従来の課題を解決するものであり、データの信頼性を維持しつつプログラム時間の短縮を図ることができる半導体記憶装置を提供する。
【課題を解決するための手段】
【０００８】
本発明に係る半導体記憶装置は、メモリアレイと、前記メモリアレイから読み出したデータを保持し、または前記メモリアレイに書込むデータを保持するデータ保持手段と、データの誤り検出訂正を行う誤り検出訂正手段と、前記データ保持手段から前記誤り検出訂正手段へデータを転送する転送手段と、前記誤り検出訂正手段により生成された誤り訂正符号を前記データ保持手段に書込む書込み手段と、前記データ保持手段へ入力されるデータが特定のビット列を有するか否かを検出する検出手段とを有し、前記特定のビット列が検出されたとき、前記転送手段は、前記特定のビット列に対応するデータの転送を禁止し、かつ前記書込み手段は、予め決められた誤り訂正符号を前記データ保持手段に書込む。
【０００９】
好ましくは前記特定のビット列は、論理０からなるビット列、または論理１からなるビット列である。好ましくは前記特定のビット列は、前記転送手段が一度に転送するビット数に等しいビット数である。好ましくは前記データ保持手段は複数のセクタに分割され、前記転送手段は、セクタ単位でデータを転送し、前記誤り訂正手段は、セクタ単位で誤り訂正処理を行う。好ましくは前記特定のビット列は、前記データ保持手段が保持する１ページのビット数に等しい。好ましくは半導体記憶装置はさらに、特定のビット列と誤り訂正符号との関係を記憶する記憶手段を含み、前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を書込む。好ましくは前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を生成する論理回路を含み、当該論理回路により生成された誤り訂正符号を書込む。好ましくは半導体記憶装置は、複数の外部入出力端子を含み、複数の外部入出力端子から入力されたデータが並列に前記データ保持手段にロードされ、前記検出手段は、並列に入力されたデータの各々が特定のビット列を含むか否かを検出する。好ましくは前記検出手段は、ビットデータの遷移の有無を検出する検出回路を含む。
【００１０】
本発明に係るＮＡＮＤ型フラッシュメモリのプログラム方法は、外部入出力端子から入力されたプログラムデータをページバッファへロードし、前記プログラムデータが特定のビット列であるか否かを検出し、特定のビット列でないことが検出されたとき、前記ページバッファに保持されたプログラムデータをＥＣＣ回路へ転送し、ＥＣＣ演算により生成された誤り訂正符号を前記ページバッファに書込み、他方、特定のビット列であることが検出されたとき、前記ページバッファに保持されたプログラムデータの転送を禁止し、当該特定のビット列に対応する既知の誤り訂正符号を前記ページバッファに書込む。
【発明の効果】
【００１１】
本発明によれば、データ保持手段に入力されるデータが特定のビット列である場合には、データ保持手段から誤り訂正手段へデータを転送を禁止し、誤り訂正手段による演算を行うことなく誤り訂正符号をデータ保持手段に書込むようにしたので、データ保持手段から誤り訂正手段へのデータ転送時間を削減することが可能となり、メモリアレイへのデータプログラム時間を短縮することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図２】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図３】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
【図４】本発明の実施例に係るフラッシュメモリに入力されるデータのフローを説明する図である。
【図５】本実施例の検出回路の一例を示す図である。
【図６】特定のビット列と既知の誤り訂正符号の関係を規定するテーブルである。
【図７】本発明の実施例による通常のＥＣＣ処理を説明する図である。
【図８】本発明の実施例によるＥＣＣ処理がスキップされる例を説明する図である。
【図９】従来のフラッシュメモリのＥＣＣ処理を説明するフローチャートである。
【図１０】本発明の実施例に係るフラッシュメモリのＥＣＣ処理を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、好ましい形態としてＮＡＮＤ型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【００１４】
本発明の実施例に係るフラッシュメモリの典型的な構成を図１に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ１０は、複数のメモリセルが行列状に配列されたメモリアレイ１００と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１１０と、メモリアレイ１００にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うＥＣＣ回路１２０と、外部入出力端子または入出力バッファ１１０からページバッファ／センス回路１７０へ入力されるデータを監視し、そこから特定のビット列を検出する検出回路１３０と、入出力バッファ１１０からのアドレスデータを受け取るアドレスレジスタ１４０と、入出力バッファ１１０からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部１５０と、アドレスレジスタ１４０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１６０と、ワード線選択回路１６０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１７０と、アドレスレジスタ１４０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１７０内のデータの選択等を行う列選択回路１８０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１９０とを含んで構成される。
【００１５】
メモリアレイ１００は、列方向に配置されたｍ個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ／センス回路１７０が配置される。このような構成以外にも、ページバッファ／センス回路１７０は、ブロックの他方の端部、あるいは両側の端部に配置されるものであってもよい。
【００１６】
１つのメモリブロックには、図２に示すように、複数のメモリセルを直列に接続したＮＡＮＤストリングユニットＮＵが複数形成され、１つのメモリブロック内にｎ＋１個のストリングユニットＮＵが行方向に配列されている。セルユニットＮＵは、直列に接続された複数のメモリセルMCi(i=０、１、・・・、３１)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する１つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【００１７】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路１６０は、行アドレスＡｘまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。図２は、典型的なセルユニットの構成を示しているが、セルユニットは、ＮＡＮＤストリング内に１つまたは複数のダミーセルを包含するものであってもよい。
【００１８】
メモリセルは、典型的に、Ｐウエル内に形成されたＮ型の拡散領域であるソース／ドレインと、ソース／ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むＭＯＳ構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「１」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「０」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、１ビット（２値データ）を記憶するＳＬＣタイプでもよいし、多ビットを記憶するＭＬＣタイプであってもよい。
【００１９】
図３は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧Vpass（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ビット線選択トランジスタTD、ソース線選択トランジスタTSをオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vprog（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「０」または「１」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２０】
図４に、本実施例のフラッシュメモリ１０の外部入出力端子から入力されるデータの流れを示す。入出力バッファ１１０から提供された入力データＤｉは、ページバッファ／センス回路１７０にロードされ、同時に検出回路１３０にも入力される。検出回路１３０は、入力データＤｉが特定のビット列を含むデータであるか否かを検出する。特定のビット列とは、誤り検出訂正の演算を行う必要がないビット列、あるいは誤り訂正符号が既知であるビット列である。好ましい例では、検出回路１３０は、入力データＤｉがすべて「０」のビット列、または入力データがすべて「１」のビット列を検出する。
【００２１】
検出回路１３０は、好ましくは論理回路により入力データＤｉの特定のビット列を検出することができる。図５は、入力データＤｉのビット列がすべて「０」または「１」を検出するときの検出回路の一例である。検出回路１３０は、入力データＤｉのｉ番目のデータとｉ−１番目のデータ（ｉは、２以上の整数）を入力する２入力のＯＲ回路１３２およびＡＮＤ回路１３４と、これらの論理回路の出力に基づきフラグ情報を設定するフラグ回路１３６とを含んで構成される。入力データＤｉがすべて「０」であるとき、ＯＲ回路１３２の出力はＬレベルであり、それ以外であればＨレベルである。また、入力データＤｉがすべて「１」であるとき、ＡＮＤ回路１３４の出力はＨレベルであり、それ以外であればＬレベルである。フラグ回路１３６は、入力データＤｉがすべて「０」、およびすべて「１」であることが判別可能な検出信号Ｓを出力する。例えば、検出信号Ｓが２ビットデータから構成され、「００」のとき入力データＤｉがすべて「０」、「１１」のとき入力データＤｉがすべて「１」である。検出回路１３０の検出信号Ｓは、転送／書込み回路２００およびＥＣＣ回路１２０へ提供される。
【００２２】
ＥＣＣ回路１２０は、入力データＤｉを演算することにより、入力データＤｉの誤り検出および訂正に必要な誤り訂正符号またはパリティビットを生成する。ＥＣＣの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたｋビットまたはｋバイトの入力データＤｉをｐ＝ｋ＋ｑに変換する。本明細書では、「ｑ」を、入力データＤｉの誤り検出訂正に必要な誤り訂正符号またはパリティビットと称する。
【００２３】
ページバッファ／センス回路１７０とＥＣＣ回路１２０との間には、転送／書込み回路２００が設けられる。転送／書込み回路２００は、ページバッファ／センス回路１７０に保持された入力データＤｉをＥＣＣ回路１２０へ転送する。また、転送／書込み回路２００は、ＥＣＣ回路１２０によって生成された誤り訂正符号をページバッファ／センス回路１７０のスペア領域に書込む。
【００２４】
転送／書込み回路２００は、検出回路１３０によって入力データＤｉが特定のビット列であることが検出されたとき、ページバッファ／センス回路１７０に保持された入力データＤｉの転送を禁止する。すなわち、ＥＣＣ回路１２０は、入力データＤｉのＥＣＣ演算を実行しない。入力データＤｉの転送およびＥＣＣ演算を実行されない代わりに、ＥＣＣ回路１２０は、入力データＤｉ（＝特定のビット列）の既知の誤り訂正符号を生成し、これを転送／書込み回路２００へ提供し、転送／書込み回路２００は、受け取った既知の誤り訂正符号をページバッファ／センス回路１７０のスペア領域に書込む。
【００２５】
１つの例では、ＥＣＣ回路１２０は、特定のビット列と既知の誤り訂正符号との関係を規定するテーブルを包含することができる。テーブルの一例を図６に示す。ＥＣＣ回路１２０は、検出回路１３０から検出信号Ｓを受け取ると、当該検出信号Ｓに基づき特定のビット列に対応する既知の誤り訂正符号を読み出し、これを転送／書込み回路２００へ出力する。例えば、入力データＤｉがすべて「０」であるとき（上記の例では、検出信号Ｓが「００」）、既知の誤り訂正符号ＥＣ０が転送／書込み回路２００へ出力される。入力データＤｉがすべて「１」であるとき（上記の例では、検出信号Ｓが「１１」）、既知の誤り訂正符号ＥＣ１が転送／書込み回路２００へ出力される。このようなテーブルは、必ずしもＥＣＣ回路１２０が保持する必要はなく、転送／書込み回路２００が保持してもよい。あるいは、検出回路１３０がテーブルを保持し、既知の誤り訂正符号を転送／書込み回路２００へ提供するようにしてもよい。
【００２６】
さらに他の例として、ＥＣＣ回路１２０は、検出信号Ｓに基づき既知の誤り訂正符号を生成する論理回路を備えるものであってもよい。例えば、検出信号Ｓが「００」であるとき、誤り訂正符号ＥＣ０が生成され、検出信号Ｓが「１１」であるとき、誤り訂正符号ＥＣ１が生成され、これらの誤り訂正符号が転送／書込み回路２００へ出力される。このような誤り訂正符号を生成する論理回路は、必ずしもＥＣＣ回路１２０が備える必要はなく、転送／書込み回路２００または検出回路１３０が備えるようにしてもよい。
【００２７】
転送／書込み回路２００による誤り訂正符号のページバッファ／センス回路１７０への書込みが終了すると、次に、ページバッファ／センス回路１７０に保持された入力データＤｉおよび誤り訂正符号がメモリアレイ１００の選択されたページにプログラムされる。
【００２８】
読出し動作時に、メモリアレイ１００の選択ページから読み出されたデータは、ページバッファ／センス回路１７０に保持され、次に、転送／書込み回路２００を介してＥＣＣ回路１２０へ転送される。ＥＣＣ回路１２０は、誤り訂正符号に基づきプログラム不良の有無、または読出し不良の有無を判定し、不良による誤りがあれば、誤り訂正符号を用いてデータを訂正する。ＥＣＣ処理されたデータは、転送／書込み回路２００を介してページバッファ／センス回路１７０へ転送され、次いで、入出力バッファ１１０を介して外部へ出力される。
【００２９】
本実施例では、検出回路１３０によって入力データＤｉが特定のビット例であることが検出されると、ページバッファ／センス回路１７０に保持された入力データＤｉがＥＣＣ回路１２０へ転送されることが省略され、ＥＣＣ回路１２０による演算を行うことなく既知の誤り訂正符号がページバッファ／センス回路１７０に書込まれる。これにより、ページバッファ／センス回路１７０からＥＣＣ回路１２０への入力データＤｉの転送時間およびＥＣＣ演算時間を削減することができ、入力データＤｉのプログラムに要する時間を大幅に短縮することができる。
【００３０】
次に、本実施例のより好ましい態様を図７ないし図１０を用いて説明する。フラッシュメモリ１０の外部入出力端子は、×１、×４、×８などの構成が可能であるが、ここでは、フラッシュメモリ１０が、×８の外部入出力端子を有する例を示す。図７に示すように、外部入出力端子Ｐ０〜Ｐ７は、Ｉ／Ｏバッファ１１０−１〜１１０−７にそれぞれ接続され、外部入出力端子Ｐ０〜Ｐ７に入力されたデータは、Ｉ／Ｏバッファ１１０−０〜１１０−７に並列に入力される。ページバッファ／センス回路１７０は、セクタ０〜セクタ７の８つのセクタに分割されたレギュラー領域３００と、スペア０、スペア１、スペア２、スペア３の４つのセクタに分割されたスペア領域３１０とを有する。
【００３１】
ページバッファ／センス回路１７０のレギュラー領域３００の１つのセクタには、８つの外部入出力端子Ｐ−０〜Ｐ７、すなわち入出力バッファ１１０−０〜１１０−７が割り当てられる。図１に示す列選択回路１８０は、受け取った列アドレス情報Ａｙをデコードし、当該デコード結果に基づき、外部入出力端子Ｐ−０〜Ｐ７に入力されたデータがロードされるセクタを選択する。図７に示す例では、外部入出力端子Ｐ−０〜Ｐ−７で受け取られたデータが列アドレス情報Ａｙに従いセクタ０にロードされ、図８に示す例では、外部入出力端子Ｐ−０〜Ｐ−７で受け取られたデータが列アドレス情報Ａｙに従いセクタ１にロードされる。同時に、各セクタにロードされたデータは、検出回路１３０に入力され、そこで入力データが特定のビット列であるか否かが監視される。
【００３２】
レギュラー領域３００の１つのセクタは、例えば、２５６バイトから構成され、１つの外部入出力端子には２５６ビットが割り当てられる（２５６bit×８＝１セクタ）。また、この場合には、８つのセクタは、全体で約２Ｋバイトのプログラムデータを保持することができる。スペア領域３１０の１つのセクタは、例えば１６バイトから構成され、その場合、４つのセクタ（スペア０〜スペア３）は全体で６４バイトのデータを保持することができる。スペア領域３１０の１つのセクタは、不良メモリ素子を含むバッドブロックを識別する情報を記憶する領域３１１、ユーザーデータに関する情報を記憶する領域３１２、レギュラー領域３００の２つセクタについての誤り訂正符号（パリティビット）を記憶する領域３１３、３１４、スペア領域３１０がＥＣＣ演算されたときの誤り訂正符号（パリティビット）を記憶する領域３１５を有する。スペア領域３１０のスペア０の領域３１３、３１４は、レギュラー領域３００のセクタ０、セクタ１の誤り訂正符号（パリティビット）をそれぞれ記憶し、スペア領域３１０のスペア１の領域３１３、３１４は、レギュラー領域３００のセクタ２、セクタ３の誤り訂正符号（パリティビット）を記憶する。同様に、スペア領域３１０のスペア２は、レギュラー領域３００のセクタ４、セクタ５のパリティビットを記憶し、スペア領域３１０のスペア３は、レギュラー領域３００のセクタ６、セクタ７のパリティビットを記憶する。
【００３３】
転送／書込み回路２００は、レギュラー領域３００に保持されたデータをセクタ単位で転送する。すなわち、１つのセクタが２５６バイトであるとき、転送／書込み回路２００は、２５６バイトのデータをＥＣＣ回路１２０に並列転送するための複数の転送用トランジスタを備える。転送用トランジスタの各ゲートに制御信号が共通接続され、制御信号は、制御部１５０によって制御される。ＥＣＣ回路１２０は、セクタ単位で転送されたデータを受け取り、ＥＣＣ演算を行うことで誤り訂正符号を生成する。転送／書込み回路２００は、ＥＣＣ回路１２０から受け取った誤り訂正符号をスペア領域３１０の対応するセクタの領域３１３または３１４に書込む。
【００３４】
図７に示す例は、入力データＤｉ、すなわちプログラムデータがレギュラー領域３００のセクタ０にロードされる例を示している。ここでは、入力データＤｉが特定のビット列に該当しないので、検出回路１３０による検出信号Ｓは、転送／書込み回路２００の転送を禁止させない。従って、転送／書込み回路２００は、入力データＤｉをＥＣＣ回路１２０へ転送し、ＥＣＣ回路１２０によって生成された誤り訂正符号がスペア領域３１０のスペア０の領域３１３に書込まれる。
【００３５】
図８は、入力データＤｉが特定のビット列を有するときの動作を表している。レギュラー領域３００のセクタ１にロードされた入力データＤｉが特定のビット列に該当することが検出回路１３０によって検出されると、その検出信号Ｓが転送／書込み回路２００およびＥＣＣ回路１２０へ提供される。転送／書込み回路２００は、検出信号Ｓ１に応答してセクタ１の入力データＤｉのＥＣＣ回路１２０への転送を禁止する。また、ＥＣＣ回路１２０は、検出信号Ｓに基づき特定のビット列を識別し、当該特定のビット列に対応する誤り訂正符号を転送／書込み回路２００へ提供する。そして、転送／書込み回路２００は、スペア領域３１０のスペア０の領域３１４にセクタ１の誤り訂正符号を書込む。
【００３６】
図９に、従来のＥＣＣ処理フローを示し、図１０に、本実施例のＥＣＣ処理フローを示す。初めに、従来のＥＣＣ処理動作を説明する。外部コントローラからフラッシュメモリ１０に対し、外部制御信号、ならびにコマンドデータ、アドレスデータおよびプログラムデータが供給される。制御部１５０は、外部制御信号およびコマンドデータに基づきプログラム動作を開始する。
【００３７】
外部入出力端子および入出力バッファ１１０を介してプログラムデータ（入力データＤｉ）がページバッファ／センス回路１７０へロードされると（Ｓ１００）、制御部１５０の制御下においてプログラムシーケンスが開始される（Ｓ１０２）。ページバッファ／センス回路１７０に保持されたセクタ０のデータが転送／書込み回路２００を介してＥＣＣ回路１２０へ転送される（Ｓ１０４）。次に、ＥＣＣ回路１２０においてＥＣＣ演算が実行され、そこで生成されたパリティビットがページバッファ／センス回路１７０のスペア領域３１０に書き込まれる（Ｓ１０８）。
【００３８】
次に、ＥＣＣが未処理のセクタがあるか否かが制御部１５０または転送／書込み回路２００によって判定される（Ｓ１１０）。こうして、ページバッファ／センス回路１７０のすべてのセクタのデータがＥＣＣ処理され、セクタ毎のパリティビットがスペア領域３１０の対応するセクタの領域３１３、３１４に書き込まれる。なお、ＮＡＮＤ型のフラッシュメモリは、ページ単位でプログラムが行われるが、入力されるプログラムデータのサイズは、必ずしも１ページ、すなわち図７に示すレギュラー領域３００の８つのセクタのサイズに等しいことを要しない。例えば、プログラムデータのサイズは、１つのセクタのサイズであることができる。通常、プログラムディスターブの観点から、同一ページに連続してプログラムすることが許される回数（ＮＯＰ（Number of Program））には制限があり、そのＮＯＰに応じて１つのページデータを分割してプログラムすることが可能である。ＮＯＰが４であるとき、１つのページデータは、例えば、２セクタ、１セクタ、３セクタ、２セクタに分けてフラッシュメモリ１０に入力することが可能である。
【００３９】
レギュラー領域のＥＣＣ処理が終了すると、次に、スペア領域のＥＣＣ処理が実行される。図７に示すように、スペア領域３１０のスペア０のデータが転送／書込み回路２００によってＥＣＣ回路１２０へ転送され（Ｓ１１２）、そこでＥＣＣ処理が実行され（Ｓ１１４）、生成されたパリティビットが領域３１５に書き込まれる（Ｓ１１６）。ＥＣＣが未処理のセクタがあるか否かが判定され（Ｓ１１８）、そのようなセクタがあればステップＳ１１２からＳ１１６が繰り返される。こうして、スペア領域３１０のすべてのセクタのＥＣＣ処理が実行される。ページバッファ／センス回路１７０のレギュラー領域３００およびスペア領域３１０に保持されたすべてのデータのＥＣＣ処理が終了すると、ページバッファ／センス回路１７０に保持されたデータがメモリアレイの選択されたページにプログラムされる（Ｓ１２０）。
【００４０】
一方、本実施例のフラッシュメモリ１０では、図１０に示すように、プログラムデータがページバッファ／センス回路１７０にロードされ（Ｓ２００）、これと並行してプログラムデータが検出回路１３０によって監視される（Ｓ２０２）。プログラムデータのページバッファ／センス回路１７０へのロードが完了すると、プログラムシーケンスが開始される（Ｓ２０４）。
【００４１】
各セクタのプログラムデータがページバッファ／センス回路１７０に入力されるや否や、検出回路１３０は、各セクタのプログラムデータが特定のビット列であるか否かを検出する（Ｓ２０６）。もし、セクタのプログラムデータが特定のビット列に一致しなければ、当該セクタのプログラムデータは、従来と同様に、ＥＣＣ回路１２０へ転送され、ＥＣＣ処理が実行される。つまり、図７に示すＥＣＣ処理が実行される。他方、セクタのプログラムデータが特定のビット列に一致することが検出回路１３０によって検出されたとき、転送／書込み回路２００は、当該セクタのプログラムデータのＥＣＣ回路１２０への転送を実行せず、ＥＣＣ回路１２０は、当該セクタのプログラムデータのためのＥＣＣ演算を実行しない。それ故、ステップＳ２０８、Ｓ２１０の処理がスキップされる。ＥＣＣ回路１２０は、ＥＣＣ演算をスキップする代わりに、検出信号Ｓに基づき特定のビット列を識別し、識別された特定のビット列に対応する既知のパリティビットを転送／書込み回路２００へ出力し、転送／書込み回路２００は、既知のパリティビットをスペア領域３１０の領域３１３または３１４に書込む。このような処理は、ページバッファ／センス回路１７０のレギュラー領域３００のすべてのセクタに対し行われる（ステップＳ２０６〜２１４）。レギュラー領域３００のＥＣＣ処理が終了すると、次にスペア領域３１０へのＥＣＣ処理が実行される。スペア領域３１０のＥＣＣ処理は、図９に示す従来の手法と変わらないので説明を省略する。
【００４２】
このように本実施例によれば、誤り訂正符号が既知である特定のビット列のプログラムデータが入力された場合には、ページバッファ／センス回路１７０からＥＣＣ回路１２０へのプログラムデータの転送を実行せず、かつＥＣＣ演算を不要にしたことで、入力されたデータのプログラム時間を短縮させることができる。特に、ページバッファ／センス回路１７０からＥＣＣ回路１２０へのデータ転送に要する時間は比較的大きいので、プログラム時間の短縮への貢献が大きい。
【００４３】
上記実施例では、ページバッファ／センス回路１７０に保持されたデータをＥＣＣ回路１２０へ転送する例を示したが、ページバッファ／センス回路１７０が１つもしくは複数のキャッシュメモリを備えたパイプライン構造であるときにも本発明を適用することができる。この場合、キャッシュメモリとＥＣＣ回路との間のデータ転送がスキップされる。
【００４４】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４５】
１０：フラッシュメモリ                  １００：メモリアレイ
１１０：入出力バッファ                  １２０：ＥＣＣ回路
１３０：検出回路                        １４０：アドレスレジスタ
１５０：制御部                          １６０：ワード線選択回路
１７０：ページバッファ／センス回路      １８０：列選択回路
１９０：内部電圧発生正回路              ２００：転送／書込み回路
３００：レギュラー領域                  ３１０：スペア領域
【図１】
2015170381.tif 000003
【図２】
2015170381.tif 000004
【図３】
2015170381.tif 000005
【図４】
2015170381.tif 000006
【図５】
2015170381.tif 000007
【図６】
2015170381.tif 000008
【図７】
2015170381.tif 000009
【図８】
2015170381.tif 000010
【図９】
2015170381.tif 000011
【図１０】
2015170381.tif 000012