(57)【特許請求の範囲】
【請求項１】
複数のメモリセルが直列に接続されたＮＡＮＤ型メモリアレイを有する半導体記憶装置のデータ処理方法であって、
メモリアレイの同一ページにｎ回連続してデータをプログラムする場合に、入力されたアドレス情報に基づき選択されたページにデータをプログラムするときの記憶領域を識別する識別情報と前記記憶領域がプログラムされた領域か否かを示すプログラム情報とを生成するステップと、
前記データをスクランブルするステップと、
スクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択されたページにプログラムするステップと、
を有するデータ処理方法。
【請求項２】
前記生成するステップは、同一ページにｎ回連続してデータがプログラムされるとき、ｎ個の識別情報およびｎ個の記憶領域のプログラム情報を生成する、請求項１に記載のデータ処理方法。
【請求項３】
前記プログラムするステップは、ページバッファに保持されたスクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択されたページにプログラムする、請求項１または２に記載のデータ処理方法。
【請求項４】
前記生成するステップは、前記データの入力回数およびサイズに基づき前記識別情報を生成することを含む、請求項１ないし３いずれ１つに記載のデータ処理方法。
【請求項５】
前記生成するステップは、前記データの入力回数および入力されたアドレス情報に基づき前記識別情報を生成することを含む、請求項１ないし３いずれか１つに記載のデータ処理方法。
【請求項６】
前記識別情報は、データをプログラムするときの記憶領域の最終アドレスを含む、請求項１ないし５いずれか１つに記載のデータ処理方法。
【請求項７】
処理方法はさらに、前記選択されたページからデータを読み出すとき、前記識別情報および前記プログラム情報に基づき、読み出されたデータがプログラムされたデータかまたは消去されたデータかを判定するステップを含む、請求項１ないし６いずれか１つに記載のデータ処理方法。
【請求項８】
処理方法はさらに、読み出されたデータがプログラムされたデータであると判定されたとき、当該データをデスクランブルし、読み出されたデータが消去されたデータであると判定されたとき、当該データのデスクランブルをキャンセルするステップを含む、請求項７に記載のデータ処理方法。
【請求項９】
複数のメモリセルが直列に接続されたＮＡＮＤ型のメモリアレイと、
入力されたアドレス情報に基づき前記メモリアレイのページを選択する選択手段と、
前記メモリアレイの同一ページにｎ回連続してデータをプログラムするとき、入力されたデータを前記選択手段によって選択されたページにプログラムするときの記憶領域を識別する識別情報と当該記憶領域がプログラムされた領域か否かを示すプログラム情報とを生成する生成手段と、
入力されたプログラムすべきデータをスクランブルするスクランブル手段と、
前記スクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択手段により選択されたページにプログラムするプログラム手段と、
を有する半導体記憶装置。
【請求項１０】
前記生成手段は、同一ページにｎ回連続してデータがプログラムされるとき、ｎ個の識別情報およびｎ個の記憶領域のプログラム情報を生成する、請求項９に記載の半導体記憶装置。
【請求項１１】
フラッシュメモリはさらに、前記メモリアレイの選択されたページにプログラムするデータまたはメモリアレイの選択されたページから読み出されたデータを保持するデータ保持手段を含み、
前記生成手段は、前記データ保持手段に前記識別情報および前記プログラム情報を書き込む、請求項９または１０に記載の半導体記憶装置。
【請求項１２】
フラッシュメモリはさらに、前記選択手段によって選択されたページからデータを読み出す手段を含み、前記読み出す手段は、前記識別情報および前記プログラム情報に基づき読み出されたデータがプログラムされたデータか消去されたデータかを判定し、読み出されたデータがプログラムされたデータであると判定されたとき、当該データを前記スクランブル手段によりデスクランブルし、読み出されたデータが消去されたデータであると判定されたとき、当該データのデスクランブルをキャンセルする、請求項９ないし１１いずれか１つに記載の半導体記憶装置。
【請求項１３】
前記識別情報は、データをプログラムするときの記憶領域の最終アドレスを含む、請求項９ないし１２いずれか１つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリ等の半導体記憶装置に関し、特にＮＡＮＤ型フラッシュメモリにおけるデータのスクランブル方法に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、複数のブロックから構成されたメモリアレイを有し、１つのブロックには、複数のメモリセルが直列に接続されたＮＡＮＤストリングが形成される。典型的にデータの読出しやプログラムは、ページ単位で行われ、データの消去はブロック単位で行われる。
【０００３】
特許文献１は、ＮＡＮＤ型フラッシュメモリの動作信頼性を向上させるデータの書込み方法を開示している。この書込み方法は、ワード線のアドレスに基づきスクランブル方式を選択し、選択したスクランブル方式に従い書込むべきデータをスクランブルし、スクランブルされたデータを対応するページに書込むものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９８２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＮＡＮＤ型フラッシュメモリのメモリセルは、フローティングゲート（電荷蓄積層）とコントロールゲートとを備えたＮ型のＭＯＳ構造から構成される。フローティングゲートに電子が蓄積されると、メモリセルのしきい値が正方向にシフトし、この状態は、データ「０」である。他方、フローティングゲートから電子が放出されると、しきい値が負方向にシフトし、この状態は、データ「１」である。ブロックが一括消去されたとき、当該ブロック内のすべてのメモリセルは、データ「１」である。
【０００６】
このようなフラッシュメモリにおいて、プログラム（書込み）や消去が繰り返されたとき、データに依存した信頼性の悪化が生じ得る。例えば、プログラムするとき、データ「０」の割合がデータ「１」よりも圧倒的に多いような場合、またはそれと反対にデータ「１」の割合がデータ「０」よりも圧倒的に多いような場合である。メモリセルの微細化、高集積化により、メモリセル間の距離が短くなり、隣接するメモリセルが容量的に結合され、相互に干渉し得る状況にある。１つのメモリセルを取り囲む周辺のメモリセルが全てデータ「０」であれば、中心のメモリセルには、周辺のメモリセルの電荷が影響して全てデータ「１」の場合に比べしきい値が高くなる。さらに、データ「０」またはデータ「１」の偏在は、データを読み出すときのソースライン電圧の浮き電圧の相違によりセンスアンプの特性にも悪影響を及ぼしかねない。
【０００７】
それ故、信頼性の観点からすると、データ「０」とデータ「１」の割合はおおよそ０．５であることが望ましい。これを実現する１つの方法に、データスクランブルスキームがある。つまり、プログラムすべきデータを、乱数を用いてスクランブルし、スクランブルしたデータをメモリアレイにプログラムする。スクランブルは、例えば、プログラムするアドレスをシーズに用いてアドレス毎に乱数を変えることが可能であり、これにより、メモリアレイの行方向および列方向において、データ「０」とデータ「１」をランダムに配置させることができる。また、読出し動作では、メモリアレイから読み出されたデータをスクランブルしたときの乱数によりデスクランブルすることで、スクランブルされたデータは元のデータに変換される。
【０００８】
ＮＡＮＤ型フラッシュメモリでは、データを消去した後のメモリセルは、データ「１」であり、消去後の読出し動作では、例えば、「ＦＦｈ」のデータが出力されなければならない。このため、データスクランブルをＮＡＮＤ型フラッシュメモリに用いた場合には、消去後のデータがすべて「１」となるように、デスクランブルを禁止する必要がある。他方、確率的には非常に小さいが、データスクランブルによりプログラムされたデータがすべて「１」となることがある。このようなデータを読出す場合には、デスクランブルする必要がある。このような制約から、ＮＡＮＤ型フラッシュメモリでは、メモリアレイの冗長領域等に、当該ページが消去された状態のものか、またはプログラムされた状態のものかを判定するためのフラグビットを設けている。フラグビットは、当該ページを含むブロックが消去されたとき、データ「１」であり、当該ページがプログラムされたとき、データ「０」に変更される。
【０００９】
図１（Ａ）は、プログラム動作時のフロー、図１（Ｂ）は、読出し動作時のフローである。先ず、プログラム動作では、外部のコントローラからプログラムコマンドが受け取られ（Ｓ１０）、次いで、アドレスおよびプログラムすべきデータが受け取られる（Ｓ１２）。受け取られたデータは、スクランブルされ（Ｓ１４）、さらに選択されたページがプログラムされたことを示すようにフラグがデータ「１」から「０」に変更される（Ｓ１６）。次に、スクランブルされたデータおよびフラグが選択されたページにプログラムされる（Ｓ１８）。
【００１０】
読出し動作では、外部のコントローラから読出しコマンドおよびアドレスが入力されると（Ｓ２０）、メモリアレイの選択されたページからデータが読出され（Ｓ２２）、次に、フラグの判定が行われる（Ｓ２４）。フラグが「０」であれば、仮にすべてのデータが「１」であるにせよ、そのデータはプログラムされたデータであるから、読み出されたデータがデスクランブルされ（Ｓ２６）、元のデータに変換されて出力される（Ｓ２８）。一方、フラグが「１」であれば、読み出したデータは消去後のデータであるから、デスクランブル処理をすることなくそのままデータを出力する（Ｓ２８）。
【００１１】
ここで、ＮＡＮＤ型フラッシュメモリでは、同一ページにｎ回（ｎは、２以上の自然数）連続してデータをプログラムする機能（以下、便宜上、パーシャルページプログラムという）を実行することが可能である。メモリセルの高集積化が進むと、１ページのサイズも増加し、プログラムするデータ量が１ページのサイズに満たない場合がある。仮に、同一ページに１回しかデータをプログラムすることができないとなると、各ページの利用効率が低下し、その反面、１ページにプログラム可能な複数のデータがあるときに、それらのデータを複数のページにプログラムしなければならないのであれば、プログラムに要する時間が大幅に増加してしまう。他方、同一ページにｎ回連続してプログラムするということは、そのページにｎ回の高いプログラム電圧が印加されることになるため、プログラムの回数には制限がある。例えば、ｎ＝４であれば、同一ページに、４回連続してデータをプログラムすることができる。以後、パーシャルページプログラムによって同一ページにプログラムされるデータを、パーシャルデータと称す。
【００１２】
パーシャルページプログラムは、例えば、外部のコントローラからプログラムコマンドを受け取った後に、行アドレスＡｘおよび列アドレスＡｙ１を受け取り、次に、パーシャルデータＤ１を受け取り、引き続き完了コマンドを受け取ると、パーシャルデータのプログラムが開始される。すなわち、行アドレスＡｘによって選択されたページの列アドレスＡｙ１を先頭にパーシャルデータＤ１がプログラムされ、その間、ＮＡＮＤフラッシュメモリは、アクセスを禁止のためのビジー信号を外部コントローラへ出力し、アクセス禁止が解除された時点でレディ信号を外部コントローラへ出力する。外部コントローラは、レディ信号を受け取ると、次のパーシャルデータをプログラムするため、上記と同様に、再び、プログラムコマンド、列アドレスＡｙ２、パーシャルデータＤ２、および完了コマンドをＮＡＮＤフラッシュメモリに送信し、ＮＡＮＤフラッシュメモリは、同一ページの列アドレスＡｙ２を先頭にパーシャルデータＤ２をプログラムする。このような処理がｎ回繰り返され、結果的に、１つのページには、ｎ個のパーシャルデータＤ１、Ｄ２、…、Ｄｎがプログラムされる。
【００１３】
このようなパーシャルページプログラムを実行可能なＮＡＮＤ型フラッシュメモリにおいて、データスクランブルスキームを採用した場合には、ページ内のパーシャルデータがプログラムされたものか、あるいは消去されたものであるかを判定しなければならない。パーシャルページプログラムによりプログラムされるパーシャルデータのサイズは、固定ではなく可変するため、パーシャルデータの境界が判明しなければ、データスクランブルを適切に実行することができない。
【００１４】
本発明は、このような従来の課題を解決し、パーシャルページプログラムおよびデータスクランブルの両立を図り、かつ信頼性を向上させる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のデータ処理方法は、複数のメモリセルが直列に接続されたＮＡＮＤ型メモリアレイを有する半導体記憶装置におけるものであって、メモリアレイの同一ページにｎ回連続してデータをプログラムする場合に、入力されたアドレス情報に基づき選択されたページにデータをプログラムするときの記憶領域を識別する識別情報と前記記憶領域がプログラムされた領域か否かを示すプログラム情報とを生成するステップと、前記データをスクランブルするステップと、スクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択されたページにプログラムするステップと、を有する。
【００１６】
好ましくは前記生成するステップは、同一ページにｎ回連続してデータがプログラムされるとき、ｎ個の識別情報およびｎ個の記憶領域のプログラム情報を生成する。好ましくは前記プログラムするステップは、ページバッファに保持されたスクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択されたページにプログラムする。好ましくは前記生成するステップは、前記データの入力回数およびサイズに基づき前記識別情報を生成することを含む。好ましくは前記識別情報は、データをプログラムするときの記憶領域の最終アドレスを含む。好ましくは処理方法はさらに、前記選択されたページからデータを読み出すとき、前記識別情報および前記プログラム情報に基づき、読み出されたデータがプログラムされたデータかまたは消去されたデータかを判定するステップを含む。好ましくは処理方法はさらに、読み出されたデータがプログラムされたデータであると判定されたとき、当該データをデスクランブルし、読み出されたデータが消去されたデータであると判定されたとき、当該データのデスクランブルをキャンセルするステップを含む。
【００１７】
本発明に係る半導体記憶装置は、複数のメモリセルが直列に接続されたＮＡＮＤ型のメモリアレイと、入力されたアドレス情報に基づき前記メモリアレイのページを選択する選択手段と、前記メモリアレイの同一ページにｎ回連続してデータをプログラムするとき、入力されたデータを前記選択手段によって選択されたページにプログラムするときの記憶領域を識別する識別情報と当該記憶領域がプログラムされた領域か否かを示すプログラム情報とを生成する生成手段と、入力されたプログラムすべきデータをスクランブルするスクランブル手段と、前記スクランブルされたデータ、前記識別情報および前記プログラム情報を前記選択手段により選択されたページにプログラムするプログラム手段と、を有する。
【００１８】
好ましくは前記生成手段は、同一ページにｎ回連続してデータがプログラムされるとき、ｎ個の識別情報およびｎ個の記憶領域のプログラム情報を生成する。好ましくはフラッシュメモリはさらに、前記メモリアレイの選択されたページにプログラムするデータまたはメモリアレイの選択されたページから読み出されたデータを保持するデータ保持手段を含み、前記生成手段は、前記データ保持手段に前記識別情報および前記プログラム情報を書き込む。好ましくはフラッシュメモリはさらに、前記選択手段によって選択されたページからデータを読み出す手段を含み、前記読み出す手段は、前記識別情報および前記プログラム情報に基づき読み出されたデータがプログラムされたデータか消去されたデータかを判定し、読み出されたデータがプログラムされたデータであると判定されたとき、当該データを前記スクランブル手段によりデスクランブルし、読み出されたデータが消去されたデータであると判定されたとき、当該データのデスクランブルをキャンセルする。好ましくは前記識別情報は、データをプログラムするときの記憶領域の最終アドレスを含む。
【発明の効果】
【００１９】
本発明によれば、同一ページにｎ回連続してデータをプログラムするとき、データをプログラムするときの記憶領域を識別する識別情報と当該記憶領域のプログラム情報を生成し、これらの情報をスクランブルされたデータと一緒に記憶するにしたので、パーシャルページプログラムが実行される場合であっても、データのスクランブル処理を適切に行うことが可能になり、信頼性の低下を防止することができる。
【図面の簡単な説明】
【００２０】
【図１】データスクランブルを行うＮＡＮＤ型フラッシュメモリの動作フローであり、図１（Ａ）は、プログラム動作時のフロー、図１（Ｂ）は、読出し動作時のフローである。
【図２】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図３】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図４】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
【図５】本発明の実施例に係るフラッシュメモリに入力されるデータのフローを説明する図である。
【図６】本発明の実施例に係るパーシャルページプログラムが実行されるときに生成される各パーシャルデータに関する管理情報を説明する図である。
【図７】本発明の実施例に係るパーシャルページプログラムが実行されるときの各パーシャルデータのプログラムを説明する図である。
【図８】本発明の実施例に係るフラッシュメモリの動作フローであり、図８（Ａ）は、プログラム動作時のフロー、図８（Ｂ）は、読出し動作時のフローである。
【図９】本発明の実施例に係るパーシャルページプログラムされたデータを読み出すときの動作を説明する図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について図面を参照して詳細に説明する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは同一ではないことに留意すべきである。
【００２２】
本発明の実施例に係るフラッシュメモリの典型的な構成を図２に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ１０は、複数のメモリセルが行列状に配列されたメモリアレイ１００と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１１０と、メモリアレイ１００にプログラムするデータのスクランブルやそこから読み出されたデータのデスクランブルを行うスクランブル部１２０と、外部入出力端子または入出力バッファ１１０からページバッファ／センス回路１７０へ入力されるデータを監視し、入力されたデータの回数やサイズを検出する検出部１３０と、入出力バッファ１１０からのアドレスデータを受け取るアドレスレジスタ１４０と、入出力バッファ１１０からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部１５０と、アドレスレジスタ１４０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１６０と、ワード線選択回路１６０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１７０と、アドレスレジスタ１４０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１７０内のデータの選択等を行う列選択回路１８０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧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に供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２８】
次に、本実施例のフラッシュメモリ１０のスクランブル部１２０および検出部１３０の詳細について図５を参照して説明する。入出力バッファ１１０から入力されるパーシャルデータＤｉは、ページバッファ／センス回路１７０にロードされ、このパーシャルデータＤｉは、同時に検出部１３０にも入力される。検出部１３０は、パーシャルページプログラムが実行されるとき、パーシャルデータＤｉがプログラムされる記憶領域を検出する。好ましくは、検出部１３０は、パーシャルデータＤｉのサイズを検出し、その検出結果からパーシャルデータＤｉがプログラムされる記憶領域の列アドレスを算出する。例えば、検出部１３０は、パーシャルデータＤｉのビット数をカウントするカウンタを含み、そのカウント結果からパーシャルデータＤｉのサイズを検出する。さらに検出部１３０は、パーシャルページプログラムにおいて、パーシャルデータＤｉが何回目に入力されたデータかを検出する。パーシャルデータＤｉの入力回数もまた、カウンタによってカウントされる。検出部１３０の検出結果Ｓは、スクランブル部１２０および制御部１５０等へ提供される。スクランブル部１２０は、転送／書込み回路１２２、管理情報生成部１２４、およびデータ処理部１２６を含んで構成される。
【００２９】
転送／書込み回路１２２は、ページバッファ／センス回路１７０に保持されたパーシャルデータＤｉをデータ処理部１２６へ転送したり、データ処理部１２６で処理されたデータをパージバッファ／センス回路１７０へ転送する。また、転送／書込み回路１２２は、管理情報生成部１２４によって生成されたパーシャルデータの管理情報をページバッファ／センス回路１７０のスペア領域に書込む。
【００３０】
管理情報生成部１２４は、検出部１３０の検出結果Ｓに基づきパーシャルデータの管理情報を生成する。図６は、管理情報生成部１２４によって生成される管理情報の一例を示している。同図は、パーシャルページプログラムによって、同一ページにパーシャルページＤ１、Ｄ２、Ｄ３、Ｄ４がプログラムされるときに、パーシャルデータＤ３までのプログラムが終了した時点の状態を示している。先ず、１回目のパーシャルデータＤ１が入力されたとき、検出部１３０は、パーシャルデータＤ１のサイズと入力順を検出し、この検出結果が管理情報生成部１２４へ提供される。管理情報生成部１２４は、当該検出結果に基づき、パーシャルデータＤ１の管理情報を生成する。この例では、パーシャルデータＤ１を記憶する記憶領域Ｐ１を識別するために、記憶領域Ｐ１の開始アドレスと最終アドレスが生成される。また、記憶領域Ｐ１がプログラムされた領域であることを示すため、フラグを「１」から「０」に変更する。同様に、２回目のパーシャルデータＤ２が入力されると、パーシャルデータＤ２のサイズと入力順が検出され、管理情報生成部１２４は、パーシャルデータＤ２の記憶領域Ｐ２を識別するための開始アドレスおよび最終アドレスを生成し、かつ記憶領域Ｐ２がプログラムされた領域であることを示すためフラグを「０」に変更する。以後、同様に、パーシャルデータＤ３、Ｄ４が入力されるたびに、それらの管理情報が生成される。
【００３１】
データ処理部１２６は、乱数によりデータのスクランブル、またはデータのデスクランブルを行う。好ましくは、データ処理部１２６は、パーシャルデータＤｉをプログラムする行アドレスもしくは列アドレスをシーズに行アドレス毎に乱数を変更する。
【００３２】
図７は、パーシャルデータのプログラムを説明する図である。ここでは、ページバッファ１７０は、ユーザーによって使用されるレギュラー領域２００と、ユーザーによって使用されない冗長領域２１０とを備えているものとする。レギュラー領域２００および冗長領域２１０は、メモリアレイ１００のレギュラー領域および冗長領域にそれぞれ対応する。図７（Ａ）に示すように、パーシャルデータＤ１が入力されたとき、パーシャルデータＤ１は、データ処理部１２６によってスクランブルされ、転送／書込み回路１２２は、スクランブルされたデータをページバッファの記憶領域Ｐ１に転送する。管理情報生成部１２４は、パーシャルデータＤ１に関する管理情報Ｍ１を生成し、転送／書込み回路１２２は、管理情報Ｍ１を冗長領域２１０に書込む。その後、ページバッファ１７０に保持されたパーシャルデータＤ１および管理情報Ｍ１は、メモリアレイ１００の選択されたページにプログラムされる。
【００３３】
次に、列アドレスおよびパーシャルデータＤ２が入力されると、スクランブルされたパーシャルデータＤ２が記憶領域Ｐ２に転送される。また、パーシャルデータＤ２に関する管理情報Ｍ２が生成され、管理情報Ｍ２が冗長領域２１０に書込まれ、その後、同一ページに、パーシャルデータＤ２および管理情報Ｍ２がプログラムされる。パーシャルデータＤ３およびＤ４も同様に、入力された列アドレスに従い、選択されたページにプログラムされ、最終的に、図７（Ｅ）に示すように、選択されたページには、パーシャルデータＤ１、Ｄ２、Ｄ３、Ｄ４と、それらの管理情報Ｍ１、Ｍ２、Ｍ３、Ｍ４がプログラムされる。図７の例では、パーシャルデータＤ１、Ｄ２、Ｄ３、Ｄ４がちょうどレギュラー領域２００のサイズに等しい例が示されているが、レギュラー領域２００のサイズよりも小さいものであってもよい。
【００３４】
次に、本実施例のフラッシュメモリのパーシャルページプログラムが実行されるときのフローを図８（Ａ）に示す。先ず、外部のコントローラからプログラムのコマンドが入出力バッファ１１０を介して制御部１５０に受け取られると、制御部１５０は、プログラムシーケンスを実行するため、スクランブル部１２０、検出部１３０、ワード線選択回路１６０、ページバッファ／センス回路１７０および列選択回路１８０の制御を開始する（Ｓ１００）。次いで、入出力バッファ１１０を介してアドレスおよびパーシャルデータが受け取られると（Ｓ１１０）、図７に示したようにパーシャルデータの管理情報が生成され（Ｓ１２０）、かつパーシャルデータのスクランブル処理が成され（Ｓ１３０）、パーシャルデータおよび管理情報がページバッファにセットされ（Ｓ１４０）、ワード線選択回路１６０によって選択されたページにパーシャルデータおよび管理情報がプログラムされる（Ｓ１５０）。その後、パーシャルデータおよび列アドレスが入力されるたびに、ステップＳ１２０〜Ｓ１５０が繰り返される。
【００３５】
図８（Ｂ）に、データの読出し動作のフローを示す。先ず、外部コントローラから読出しのコマンドが制御部１５０に受け取られると、制御部１５０は、読出しシーケンスを実行するため、スクランブル部１２０、検出部１３０、ワード線選択回路１６０、ページバッファ／センス回路１７０および列選択回路１８０の制御を開始する（Ｓ２００）。次いで、アドレスが入力されると、ワード線選択回路１６０はアドレスに従いページを選択し、選択されたページのデータがページバッファに読み出される（Ｓ２１０）。スクランブル部１２０は、各記憶領域のフラグを読取り（Ｓ２２０）、各記憶領域のデータをデスクランブルするか否かを決定する。つまり、フラグが「０」であれば、記憶領域のデータをデスクランブル処理し（Ｓ２４０）、フラグが「１」であれば、記憶領域のデータをデスクランブルしないように、スクランブル部１２０は、転送／書込み回路１２２およびデータ処理部１２６を制御する。そして、ページバッファから入出力バッファ１１０へデータが出力される（Ｓ２５０）。
【００３６】
図７（Ｅ）に示すパーシャルデータがページを読み出しされるときの動作を図９に示す。ページバッファ１７０には、選択されたページにプログラムされたデータが転送される。つまり、ページバッファ１７０には、パーシャルデータＤ１、Ｄ２、Ｄ３、Ｄ４と、これらの管理情報Ｍ１、Ｍ２、Ｍ３、Ｍ４が保持される。スクランブル部１２０は、管理情報Ｍ１〜Ｍ４に基づき記憶領域Ｐ１〜Ｐ４に記憶されたパーシャルデータＤ１〜Ｄ４がプログラムされたデータかあるいは消去されたデータかを判定する。フラグが「０」であれば、仮にその記憶領域のすべてのデータが「１」であるにせよ、それらはプログラムされたデータであるから、デスクランブルしなければならない。フラグが「１」であれば、その記憶領域のデータは、プログラムされていない消去されたデータであるからデスクランブルをキャンセルしなければならない。
【００３７】
スクランブル部１２０は、フラグが「０」であれば、開始アドレスおよび終了アドレスで規定される記憶領域のデータをデータ処理部１２６へ転送し、そこでデスクランブルされたデータを受け取り、このデータをページバッファ１７０に書き戻す。フラグが「１」であれば、その記憶領域のデータをデータ処理部１２６へ転送することを禁止し、そのままページバッファ１７０に保持させる。例えば、記憶領域Ｐ１、Ｐ２、Ｐ３のフラグが「０」であり、記憶領域Ｐ４のフラグが「１」であれば、記憶領域Ｐ１、Ｐ２、Ｐ３のパーシャルデータＤ１、Ｄ２、Ｄ３がデータ処理部１２６へ転送され、そこでデスクランブル処理され、デスクランブル処理されたパーシャルデータＤ１、Ｄ２、Ｄ３がページバッファに書込まれる。他方、記憶領域Ｐ４のパーシャルデータＤ４は、データ処理部１２６へ転送されず、そのまま保持される。こうして、スクランブル部１２０による処理が終了された後、ページバッファ１７０に保持されたデータが入出力バッファ１１０を介して外部のコントローラへ出力される。
【００３８】
このように本実施例によれば、パーシャルページプログラムが実行されるとき、パーシャルデータの管理情報を生成し、これをパーシャルデータに関連付けしてプログラムし、データを読み出すとき、管理情報を参照してデスクランブルを制御するようにしたので、プログラムされたパーシャルデータをデスクランブルし、消去されたパーシャルデータをデスクランブルしないようにしたので、パーシャルページプログラムとデータスクランブルとを両立し、信頼性の向上を図ることができる。
【００３９】
上記実施例では、パーシャルデータの管理情報として、記憶領域を識別するために開始アドレスと終了アドレスをそれぞれ生成し記憶するようにしたが、記憶領域を識別できる情報であれば、他の情報であってもよい。パーシャルデータのデータサイズであってもよい。また、記憶領域の境界を認識することができれば良いため、終了アドレスだけを生成し、記憶するようにしてもよい。
【００４０】
さらに上記実施例では、検出部１３０のカウンタを利用してパーシャルデータがプログラムされる開始アドレスまたは終了アドレスを生成するようにしたが、パーシャルページプログラムが実施されるときに入力される列アドレスを利用して終了アドレスまたは開始アドレスを生成するようにしてもよい。例えば、図７（Ｂ）のパーシャルデータＤ２をプログラムするとき、入力された列アドレスＡｙ２は、パーシャルデータＤ２の開始アドレスであり、この開始アドレスよりも１つ前の列アドレスをパーシャルデータＤ１の終了アドレスとすることができる。このため、パーシャルデータＤ２をプログラムするときに、列アドレスＡｙ２から算出されたパーシャルデータＤ１の終了アドレスをパーシャルデータＤ１の管理情報Ｍ１として同時に書込み、また、必要があれば、入力された列アドレスＡｙ２をパーシャルデータＤ２の開始アドレスとして管理情報Ｍ２に書込むようにしてもよい。同様に、パーシャルデータＤ２の終了アドレスは、パーシャルデータＤ３をプログラムするときに入力された列アドレスＡｙ３から算出され、パーシャルデータＤ３をプログラムするときに同時に管理情報Ｍ２に書込まれる。最後のパーシャルデータＤ４の記憶領域Ｐ４については、入力された列アドレスＡｙ４からレギュラー領域２００の最後の列アドレスまでとし、列アドレスＡｙ４を記憶領域Ｐ４の開始アドレスとして管理領域Ｍ４に書込むようにしてもよい。このような方法を利用すれば、検出部１３０のカウンタを利用することなく、各記憶領域の境界を示すアドレス情報を容易に生成することが可能になる。
【００４１】
さらに上記実施例では、パーシャルデータのデータサイズおよび入力順を検出する検出部１３０を設けたが、列選択回路１８０に含まれるアドレスカウンタ等を利用することでパーシャルデータのサイズを検出するようにしてもよい。
【００４２】
以上のように本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４３】
１０：フラッシュメモリ                  １００：メモリアレイ
１１０：入出力バッファ                  １２０：スクランブル部
１２２：転送／書込み回路                １２４：管理情報生成部
１２６：データ処理部                    １３０：検出部
１４０：アドレスレジスタ                １５０：制御部
１６０：ワード線選択回路                １７０：ページバッファ／センス回路
１８０：列選択回路                      １９０：内部電圧発生正回路
２００：レギュラー領域                  ２１０：冗長領域
【要約】
【課題】  パーシャルページプログラムとデータスクランブルとを両立し、信頼性を向上させるフラッシュメモリを提供する。
【解決手段】  本発明のフラッシュメモリにおいて、同一ページにｎ回連続してデータをプログラムする場合、入力されたアドレス情報に基づき選択されたページにデータをプログラムするときの記憶位置を示す位置情報と当該位置情報により規定される記憶領域がプログラムされたものであること識別するフラグ情報とを生成し、スクランブルされたデータ、位置情報およびフラグ情報をメモリアレイの選択されたページにプログラムする。
【選択図】  図８【図１】
0005940705.tif 000002
【図２】
0005940705.tif 000003
【図３】
0005940705.tif 000004
【図４】
0005940705.tif 000005
【図５】
0005940705.tif 000006
【図６】
0005940705.tif 000007
【図７】
0005940705.tif 000008
【図８】
0005940705.tif 000009
【図９】
0005940705.tif 000010