特許第5710815号(P5710815)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウィンボンド エレクトロニクス コーポレーションの特許一覧

<>
  • 特許5710815-半導体記憶装置 図000002
  • 特許5710815-半導体記憶装置 図000003
  • 特許5710815-半導体記憶装置 図000004
  • 特許5710815-半導体記憶装置 図000005
  • 特許5710815-半導体記憶装置 図000006
  • 特許5710815-半導体記憶装置 図000007
  • 特許5710815-半導体記憶装置 図000008
  • 特許5710815-半導体記憶装置 図000009
  • 特許5710815-半導体記憶装置 図000010
  • 特許5710815-半導体記憶装置 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】5710815
(24)【登録日】2015年3月13日
(45)【発行日】2015年4月30日
(54)【発明の名称】半導体記憶装置
(51)【国際特許分類】
   G11C 29/42 20060101AFI20150409BHJP
   G11C 16/06 20060101ALI20150409BHJP
   G11C 16/04 20060101ALI20150409BHJP
【FI】
   G11C29/00 631D
   G11C17/00 639C
   G11C17/00 622E
【請求項の数】14
【全頁数】14
(21)【出願番号】特願2014-47037(P2014-47037)
(22)【出願日】2014年3月11日
【審査請求日】2014年3月11日
(73)【特許権者】
【識別番号】511062254
【氏名又は名称】ウィンボンド エレクトロニクス コーポレーション
(74)【代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】山内 一貴
【審査官】 小林 紀和
(56)【参考文献】
【文献】 特開2011−28478(JP,A)
【文献】 特開2008−217755(JP,A)
【文献】 特開2007−305267(JP,A)
【文献】 特開2009−217922(JP,A)
【文献】 特開2001−167596(JP,A)
【文献】 特開平11−242899(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 29/42
G11C 16/04
G11C 16/06
(57)【特許請求の範囲】
【請求項1】
メモリアレイと、
前記メモリアレイから読み出したデータを保持し、または前記メモリアレイに書込むデータを保持するデータ保持手段と、
データの誤り検出訂正を行う誤り検出訂正手段と、
前記データ保持手段から前記誤り検出訂正手段へデータを転送する転送手段と、
前記誤り検出訂正手段により生成された誤り訂正符号を前記データ保持手段に書込む書込み手段と、
前記データ保持手段へ入力されるデータが特定のビット列を有するか否かを検出する検出手段とを有し、
前記特定のビット列が検出されたとき、前記転送手段は、前記特定のビット列に対応するデータの転送を禁止し、かつ前記書込み手段は、予め決められた誤り訂正符号を前記データ保持手段に書込む、半導体記憶装置。
【請求項2】
前記特定のビット列は、論理0からなるビット列である、請求項1に記載の半導体記憶装置。
【請求項3】
前記特定のビット列は、論理1からなるビット列である、請求項1に記載の半導体記憶装置。
【請求項4】
前記特定のビット列は、前記転送手段が一度に転送するビット数に等しいビット数である、請求項1ないし3いずれか1つに記載の半導体記憶装置。
【請求項5】
前記データ保持手段は複数のセクタに分割され、前記転送手段は、セクタ単位でデータを転送し、前記誤り訂正手段は、セクタ単位で誤り訂正処理を行う、請求項1ないし4いずれか1つに記載の半導体記憶装置。
【請求項6】
前記特定のビット列は、前記データ保持手段が保持する1ページのビット数に等しい、請求項1ないし3いずれか1つに記載の半導体記憶装置。
【請求項7】
半導体記憶装置はさらに、特定のビット列と誤り訂正符号との関係を記憶する記憶手段を含み、前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を書込む、請求項1ないし6いずれか1つに記載の半導体記憶装置。
【請求項8】
前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を生成する論理回路を含み、当該論理回路により生成された誤り訂正符号を書込む、請求項1ないし6いずれか1つに記載の半導体記憶装置。
【請求項9】
半導体記憶装置は、複数の外部入出力端子を含み、複数の外部入出力端子から入力されたデータが並列に前記データ保持手段にロードされ、前記検出手段は、並列に入力されたデータの各々が特定のビット列を含むか否かを検出する、請求項1ないいし8いずれか1つに記載の半導体記憶装置。
【請求項10】
前記検出手段は、ビットデータの遷移の有無を検出する検出回路を含む、請求項1ないし9いずれか1つに記載の半導体記憶装置。
【請求項11】
前記メモリアレイはNAND型メモリアレイであり、前記データ保持手段はページバッファを含む、請求項1ないし10いずれか1つに記載の半導体記憶装置。
【請求項12】
NAND型フラッシュメモリのプログラム方法であって、
外部入出力端子から入力されたプログラムデータをページバッファへロードし、
前記プログラムデータが特定のビット列であるか否かを検出し、
特定のビット列でないことが検出されたとき、前記ページバッファに保持されたプログラムデータをECC回路へ転送し、ECC演算により生成された誤り訂正符号を前記ページバッファに書込み、他方、特定のビット列であることが検出されたとき、前記ページバッファに保持されたプログラムデータの転送を禁止し、当該特定のビット列に対応する既知の誤り訂正符号を前記ページバッファに書込む、プログラム方法。
【請求項13】
前記プログラムデータは、すべて論理「0」のビット列である、請求項12に記載のプログラム方法。
【請求項14】
前記プログラムデータは、すべて論理「1」のビット列である、請求項12に記載のプログラム方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体記憶装置の入出力データの誤り検出訂正に関し、特に、NAND型フラッシュメモリの入力データの誤り検出および訂正に関する。
【背景技術】
【0002】
フラッシュメモリ、DRAM等の半導体メモリでは、集積度が年々増加し、不良または欠陥のない記憶素子を製造することは難しくなっている。このため、メモリチップ上には、製造工程中に発生する記憶素子の物理的な欠陥を見かけ上救済するための冗長スキームが利用される。例えば、ある冗長スキームでは、冗長メモリを設けることで、物理的な欠陥のある記憶素子を救済している。また、半導体メモリには、冗長メモリによる物理的な救済以外に、ソフトエラー対策として誤り検出訂正回路(ECC:Error Checking Correction)が用いられる。
【0003】
NAND型フラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、ビットエラーを引き起こす。特許文献1では、このようなビットエラー対策として、誤り検出訂正回路を搭載している。特に、ブロック選択トランジスタに近いセルでは、リソグラフィによるパターンのバラツキ、拡散層形成時のイオン注入のバラツキによって、ビットエラー率が高くなる傾向にあり、これをより多く救済可能にするためのECCコードを格納している。
【0004】
また、NAND型フラッシュメモリには、1つのメモリセルに1ビットのデータを格納するものに加えて、1つのメモリセルにマルチビットのデータを格納するものがある。特許文献2は、このようなマルチビットのデータのエラー訂正のスキームを開示している。さらに特許文献3は、入力されたデータにECCパリティを付加してECC符号を生成し、生成されたECC符号を物理ブロックに書込み、物理ブロックより読み出したページデータにエラーがあるときECC符号によってエラーを訂正し、訂正したエラー数が閾値以上の物理ブロックを警告ブロックとしてテーブルに登録し、データ書込み時に警告ブロックの選択の優先順位を下げるフラッシュメモリを開示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−152989号公報
【特許文献2】特開2008−165805号公報
【特許文献3】特開2010−79486号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ECC回路をオンチップで搭載するNAND型フラッシュメモリは、入力されたデータをページバッファに保持し、ページバッファに保持されたデータをECC回路へ転送し、そこでECC演算により生成された誤り訂正符号(エラーコード)をページバッファに書き戻し、その後、ページバッファのデータをメモリアレイの選択されたページにプログラムしている。しかしながら、プログラムされるすべてのページデータについてECC演算を行うと、その処理に非常に時間がかかる。NAND型フラッシュメモリでは、ページ単位でプログラムが行われるので、高集積化に伴い1ページ当たりのビット数が増加すれば、それに比例してECC回路の演算に要する時間が増加してしまう。このことは、プログラム時間の短縮の障害になり得る。
【0007】
本発明は、上記従来の課題を解決するものであり、データの信頼性を維持しつつプログラム時間の短縮を図ることができる半導体記憶装置を提供する。
【課題を解決するための手段】
【0008】
本発明に係る半導体記憶装置は、メモリアレイと、前記メモリアレイから読み出したデータを保持し、または前記メモリアレイに書込むデータを保持するデータ保持手段と、データの誤り検出訂正を行う誤り検出訂正手段と、前記データ保持手段から前記誤り検出訂正手段へデータを転送する転送手段と、前記誤り検出訂正手段により生成された誤り訂正符号を前記データ保持手段に書込む書込み手段と、前記データ保持手段へ入力されるデータが特定のビット列を有するか否かを検出する検出手段とを有し、前記特定のビット列が検出されたとき、前記転送手段は、前記特定のビット列に対応するデータの転送を禁止し、かつ前記書込み手段は、予め決められた誤り訂正符号を前記データ保持手段に書込む。
【0009】
好ましくは前記特定のビット列は、論理0からなるビット列、または論理1からなるビット列である。好ましくは前記特定のビット列は、前記転送手段が一度に転送するビット数に等しいビット数である。好ましくは前記データ保持手段は複数のセクタに分割され、前記転送手段は、セクタ単位でデータを転送し、前記誤り訂正手段は、セクタ単位で誤り訂正処理を行う。好ましくは前記特定のビット列は、前記データ保持手段が保持する1ページのビット数に等しい。好ましくは半導体記憶装置はさらに、特定のビット列と誤り訂正符号との関係を記憶する記憶手段を含み、前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を書込む。好ましくは前記書込み手段は、前記検出手段の検出結果に基づき特定のビット列に該当する誤り訂正符号を生成する論理回路を含み、当該論理回路により生成された誤り訂正符号を書込む。好ましくは半導体記憶装置は、複数の外部入出力端子を含み、複数の外部入出力端子から入力されたデータが並列に前記データ保持手段にロードされ、前記検出手段は、並列に入力されたデータの各々が特定のビット列を含むか否かを検出する。好ましくは前記検出手段は、ビットデータの遷移の有無を検出する検出回路を含む。
【0010】
本発明に係るNAND型フラッシュメモリのプログラム方法は、外部入出力端子から入力されたプログラムデータをページバッファへロードし、前記プログラムデータが特定のビット列であるか否かを検出し、特定のビット列でないことが検出されたとき、前記ページバッファに保持されたプログラムデータをECC回路へ転送し、ECC演算により生成された誤り訂正符号を前記ページバッファに書込み、他方、特定のビット列であることが検出されたとき、前記ページバッファに保持されたプログラムデータの転送を禁止し、当該特定のビット列に対応する既知の誤り訂正符号を前記ページバッファに書込む。
【発明の効果】
【0011】
本発明によれば、データ保持手段に入力されるデータが特定のビット列である場合には、データ保持手段から誤り訂正手段へデータを転送を禁止し、誤り訂正手段による演算を行うことなく誤り訂正符号をデータ保持手段に書込むようにしたので、データ保持手段から誤り訂正手段へのデータ転送時間を削減することが可能となり、メモリアレイへのデータプログラム時間を短縮することができる。
【図面の簡単な説明】
【0012】
図1】本発明の実施例に係るNAND型フラッシュメモリの全体の概略構成を示す図である。
図2】本発明の実施例に係るメモリセルアレイのNANDストリングの構成を示す回路図である。
図3】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
図4】本発明の実施例に係るフラッシュメモリに入力されるデータのフローを説明する図である。
図5】本実施例の検出回路の一例を示す図である。
図6】特定のビット列と既知の誤り訂正符号の関係を規定するテーブルである。
図7】本発明の実施例による通常のECC処理を説明する図である。
図8】本発明の実施例によるECC処理がスキップされる例を説明する図である。
図9】従来のフラッシュメモリのECC処理を説明するフローチャートである。
図10】本発明の実施例に係るフラッシュメモリのECC処理を説明するフローチャートである。
【発明を実施するための形態】
【0013】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、好ましい形態としてNAND型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【0014】
本発明の実施例に係るフラッシュメモリの典型的な構成を図1に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ10は、複数のメモリセルが行列状に配列されたメモリアレイ100と、外部入出力端子I/Oに接続され入出力データを保持する入出力バッファ110と、メモリアレイ100にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うECC回路120と、外部入出力端子または入出力バッファ110からページバッファ/センス回路170へ入力されるデータを監視し、そこから特定のビット列を検出する検出回路130と、入出力バッファ110からのアドレスデータを受け取るアドレスレジスタ140と、入出力バッファ110からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部150と、アドレスレジスタ140から行アドレス情報Axを受け取り、行アドレス情報Axをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路160と、ワード線選択回路160によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ/センス回路170と、アドレスレジスタ140から列アドレス情報Ayを受け取り、列アドレス情報Ayをデコードし、当該デコード結果に基づきページバッファ/センス回路170内のデータの選択等を行う列選択回路180と、データの読出し、プログラムおよび消去等のために必要な種々の電圧(書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど)を生成する内部電圧発生回路190とを含んで構成される。
【0015】
メモリアレイ100は、列方向に配置されたm個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ/センス回路170が配置される。このような構成以外にも、ページバッファ/センス回路170は、ブロックの他方の端部、あるいは両側の端部に配置されるものであってもよい。
【0016】
1つのメモリブロックには、図2に示すように、複数のメモリセルを直列に接続したNANDストリングユニットNUが複数形成され、1つのメモリブロック内にn+1個のストリングユニットNUが行方向に配列されている。セルユニットNUは、直列に接続された複数のメモリセルMCi(i=0、1、・・・、31)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する1つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【0017】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路160は、行アドレスAxまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。図2は、典型的なセルユニットの構成を示しているが、セルユニットは、NANDストリング内に1つまたは複数のダミーセルを包含するものであってもよい。
【0018】
メモリセルは、典型的に、Pウエル内に形成されたN型の拡散領域であるソース/ドレインと、ソース/ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート(電荷蓄積層)と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むMOS構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「1」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「0」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、1ビット(2値データ)を記憶するSLCタイプでもよいし、多ビットを記憶するMLCタイプであってもよい。
【0019】
図3は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧(例えば0V)を印加し、非選択ワード線にパス電圧Vpass(例えば4.5V)を印加し、選択ゲート線SGD、SGSに正の電圧(例えば4.5V)を印加し、ビット線選択トランジスタTD、ソース線選択トランジスタTSをオンし、共通ソース線に0Vを印加する。プログラム(書込み)動作では、選択されたワード線に高電圧のプログラム電圧Vprog(15〜20V)を印加し、非選択のワード線に中間電位(例えば10V)を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「0」または「1」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に0Vを印加し、Pウエルに高電圧(例えば20V)を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【0020】
図4に、本実施例のフラッシュメモリ10の外部入出力端子から入力されるデータの流れを示す。入出力バッファ110から提供された入力データDiは、ページバッファ/センス回路170にロードされ、同時に検出回路130にも入力される。検出回路130は、入力データDiが特定のビット列を含むデータであるか否かを検出する。特定のビット列とは、誤り検出訂正の演算を行う必要がないビット列、あるいは誤り訂正符号が既知であるビット列である。好ましい例では、検出回路130は、入力データDiがすべて「0」のビット列、または入力データがすべて「1」のビット列を検出する。
【0021】
検出回路130は、好ましくは論理回路により入力データDiの特定のビット列を検出することができる。図5は、入力データDiのビット列がすべて「0」または「1」を検出するときの検出回路の一例である。検出回路130は、入力データDiのi番目のデータとi−1番目のデータ(iは、2以上の整数)を入力する2入力のOR回路132およびAND回路134と、これらの論理回路の出力に基づきフラグ情報を設定するフラグ回路136とを含んで構成される。入力データDiがすべて「0」であるとき、OR回路132の出力はLレベルであり、それ以外であればHレベルである。また、入力データDiがすべて「1」であるとき、AND回路134の出力はHレベルであり、それ以外であればLレベルである。フラグ回路136は、入力データDiがすべて「0」、およびすべて「1」であることが判別可能な検出信号Sを出力する。例えば、検出信号Sが2ビットデータから構成され、「00」のとき入力データDiがすべて「0」、「11」のとき入力データDiがすべて「1」である。検出回路130の検出信号Sは、転送/書込み回路200およびECC回路120へ提供される。
【0022】
ECC回路120は、入力データDiを演算することにより、入力データDiの誤り検出および訂正に必要な誤り訂正符号またはパリティビットを生成する。ECCの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたkビットまたはkバイトの入力データDiをp=k+qに変換する。本明細書では、「q」を、入力データDiの誤り検出訂正に必要な誤り訂正符号またはパリティビットと称する。
【0023】
ページバッファ/センス回路170とECC回路120との間には、転送/書込み回路200が設けられる。転送/書込み回路200は、ページバッファ/センス回路170に保持された入力データDiをECC回路120へ転送する。また、転送/書込み回路200は、ECC回路120によって生成された誤り訂正符号をページバッファ/センス回路170のスペア領域に書込む。
【0024】
転送/書込み回路200は、検出回路130によって入力データDiが特定のビット列であることが検出されたとき、ページバッファ/センス回路170に保持された入力データDiの転送を禁止する。すなわち、ECC回路120は、入力データDiのECC演算を実行しない。入力データDiの転送およびECC演算を実行されない代わりに、ECC回路120は、入力データDi(=特定のビット列)の既知の誤り訂正符号を生成し、これを転送/書込み回路200へ提供し、転送/書込み回路200は、受け取った既知の誤り訂正符号をページバッファ/センス回路170のスペア領域に書込む。
【0025】
1つの例では、ECC回路120は、特定のビット列と既知の誤り訂正符号との関係を規定するテーブルを包含することができる。テーブルの一例を図6に示す。ECC回路120は、検出回路130から検出信号Sを受け取ると、当該検出信号Sに基づき特定のビット列に対応する既知の誤り訂正符号を読み出し、これを転送/書込み回路200へ出力する。例えば、入力データDiがすべて「0」であるとき(上記の例では、検出信号Sが「00」)、既知の誤り訂正符号EC0が転送/書込み回路200へ出力される。入力データDiがすべて「1」であるとき(上記の例では、検出信号Sが「11」)、既知の誤り訂正符号EC1が転送/書込み回路200へ出力される。このようなテーブルは、必ずしもECC回路120が保持する必要はなく、転送/書込み回路200が保持してもよい。あるいは、検出回路130がテーブルを保持し、既知の誤り訂正符号を転送/書込み回路200へ提供するようにしてもよい。
【0026】
さらに他の例として、ECC回路120は、検出信号Sに基づき既知の誤り訂正符号を生成する論理回路を備えるものであってもよい。例えば、検出信号Sが「00」であるとき、誤り訂正符号EC0が生成され、検出信号Sが「11」であるとき、誤り訂正符号EC1が生成され、これらの誤り訂正符号が転送/書込み回路200へ出力される。このような誤り訂正符号を生成する論理回路は、必ずしもECC回路120が備える必要はなく、転送/書込み回路200または検出回路130が備えるようにしてもよい。
【0027】
転送/書込み回路200による誤り訂正符号のページバッファ/センス回路170への書込みが終了すると、次に、ページバッファ/センス回路170に保持された入力データDiおよび誤り訂正符号がメモリアレイ100の選択されたページにプログラムされる。
【0028】
読出し動作時に、メモリアレイ100の選択ページから読み出されたデータは、ページバッファ/センス回路170に保持され、次に、転送/書込み回路200を介してECC回路120へ転送される。ECC回路120は、誤り訂正符号に基づきプログラム不良の有無、または読出し不良の有無を判定し、不良による誤りがあれば、誤り訂正符号を用いてデータを訂正する。ECC処理されたデータは、転送/書込み回路200を介してページバッファ/センス回路170へ転送され、次いで、入出力バッファ110を介して外部へ出力される。
【0029】
本実施例では、検出回路130によって入力データDiが特定のビット例であることが検出されると、ページバッファ/センス回路170に保持された入力データDiがECC回路120へ転送されることが省略され、ECC回路120による演算を行うことなく既知の誤り訂正符号がページバッファ/センス回路170に書込まれる。これにより、ページバッファ/センス回路170からECC回路120への入力データDiの転送時間およびECC演算時間を削減することができ、入力データDiのプログラムに要する時間を大幅に短縮することができる。
【0030】
次に、本実施例のより好ましい態様を図7ないし図10を用いて説明する。フラッシュメモリ10の外部入出力端子は、×1、×4、×8などの構成が可能であるが、ここでは、フラッシュメモリ10が、×8の外部入出力端子を有する例を示す。図7に示すように、外部入出力端子P0〜P7は、I/Oバッファ110−1〜110−7にそれぞれ接続され、外部入出力端子P0〜P7に入力されたデータは、I/Oバッファ110−0〜110−7に並列に入力される。ページバッファ/センス回路170は、セクタ0〜セクタ7の8つのセクタに分割されたレギュラー領域300と、スペア0、スペア1、スペア2、スペア3の4つのセクタに分割されたスペア領域310とを有する。
【0031】
ページバッファ/センス回路170のレギュラー領域300の1つのセクタには、8つの外部入出力端子P−0〜P7、すなわち入出力バッファ110−0〜110−7が割り当てられる。図1に示す列選択回路180は、受け取った列アドレス情報Ayをデコードし、当該デコード結果に基づき、外部入出力端子P−0〜P7に入力されたデータがロードされるセクタを選択する。図7に示す例では、外部入出力端子P−0〜P−7で受け取られたデータが列アドレス情報Ayに従いセクタ0にロードされ、図8に示す例では、外部入出力端子P−0〜P−7で受け取られたデータが列アドレス情報Ayに従いセクタ1にロードされる。同時に、各セクタにロードされたデータは、検出回路130に入力され、そこで入力データが特定のビット列であるか否かが監視される。
【0032】
レギュラー領域300の1つのセクタは、例えば、256バイトから構成され、1つの外部入出力端子には256ビットが割り当てられる(256bit×8=1セクタ)。また、この場合には、8つのセクタは、全体で約2Kバイトのプログラムデータを保持することができる。スペア領域310の1つのセクタは、例えば16バイトから構成され、その場合、4つのセクタ(スペア0〜スペア3)は全体で64バイトのデータを保持することができる。スペア領域310の1つのセクタは、不良メモリ素子を含むバッドブロックを識別する情報を記憶する領域311、ユーザーデータに関する情報を記憶する領域312、レギュラー領域300の2つセクタについての誤り訂正符号(パリティビット)を記憶する領域313、314、スペア領域310がECC演算されたときの誤り訂正符号(パリティビット)を記憶する領域315を有する。スペア領域310のスペア0の領域313、314は、レギュラー領域300のセクタ0、セクタ1の誤り訂正符号(パリティビット)をそれぞれ記憶し、スペア領域310のスペア1の領域313、314は、レギュラー領域300のセクタ2、セクタ3の誤り訂正符号(パリティビット)を記憶する。同様に、スペア領域310のスペア2は、レギュラー領域300のセクタ4、セクタ5のパリティビットを記憶し、スペア領域310のスペア3は、レギュラー領域300のセクタ6、セクタ7のパリティビットを記憶する。
【0033】
転送/書込み回路200は、レギュラー領域300に保持されたデータをセクタ単位で転送する。すなわち、1つのセクタが256バイトであるとき、転送/書込み回路200は、256バイトのデータをECC回路120に並列転送するための複数の転送用トランジスタを備える。転送用トランジスタの各ゲートに制御信号が共通接続され、制御信号は、制御部150によって制御される。ECC回路120は、セクタ単位で転送されたデータを受け取り、ECC演算を行うことで誤り訂正符号を生成する。転送/書込み回路200は、ECC回路120から受け取った誤り訂正符号をスペア領域310の対応するセクタの領域313または314に書込む。
【0034】
図7に示す例は、入力データDi、すなわちプログラムデータがレギュラー領域300のセクタ0にロードされる例を示している。ここでは、入力データDiが特定のビット列に該当しないので、検出回路130による検出信号Sは、転送/書込み回路200の転送を禁止させない。従って、転送/書込み回路200は、入力データDiをECC回路120へ転送し、ECC回路120によって生成された誤り訂正符号がスペア領域310のスペア0の領域313に書込まれる。
【0035】
図8は、入力データDiが特定のビット列を有するときの動作を表している。レギュラー領域300のセクタ1にロードされた入力データDiが特定のビット列に該当することが検出回路130によって検出されると、その検出信号Sが転送/書込み回路200およびECC回路120へ提供される。転送/書込み回路200は、検出信号S1に応答してセクタ1の入力データDiのECC回路120への転送を禁止する。また、ECC回路120は、検出信号Sに基づき特定のビット列を識別し、当該特定のビット列に対応する誤り訂正符号を転送/書込み回路200へ提供する。そして、転送/書込み回路200は、スペア領域310のスペア0の領域314にセクタ1の誤り訂正符号を書込む。
【0036】
図9に、従来のECC処理フローを示し、図10に、本実施例のECC処理フローを示す。初めに、従来のECC処理動作を説明する。外部コントローラからフラッシュメモリ10に対し、外部制御信号、ならびにコマンドデータ、アドレスデータおよびプログラムデータが供給される。制御部150は、外部制御信号およびコマンドデータに基づきプログラム動作を開始する。
【0037】
外部入出力端子および入出力バッファ110を介してプログラムデータ(入力データDi)がページバッファ/センス回路170へロードされると(S100)、制御部150の制御下においてプログラムシーケンスが開始される(S102)。ページバッファ/センス回路170に保持されたセクタ0のデータが転送/書込み回路200を介してECC回路120へ転送される(S104)。次に、ECC回路120においてECC演算が実行され、そこで生成されたパリティビットがページバッファ/センス回路170のスペア領域310に書き込まれる(S108)。
【0038】
次に、ECCが未処理のセクタがあるか否かが制御部150または転送/書込み回路200によって判定される(S110)。こうして、ページバッファ/センス回路170のすべてのセクタのデータがECC処理され、セクタ毎のパリティビットがスペア領域310の対応するセクタの領域313、314に書き込まれる。なお、NAND型のフラッシュメモリは、ページ単位でプログラムが行われるが、入力されるプログラムデータのサイズは、必ずしも1ページ、すなわち図7に示すレギュラー領域300の8つのセクタのサイズに等しいことを要しない。例えば、プログラムデータのサイズは、1つのセクタのサイズであることができる。通常、プログラムディスターブの観点から、同一ページに連続してプログラムすることが許される回数(NOP(Number of Program))には制限があり、そのNOPに応じて1つのページデータを分割してプログラムすることが可能である。NOPが4であるとき、1つのページデータは、例えば、2セクタ、1セクタ、3セクタ、2セクタに分けてフラッシュメモリ10に入力することが可能である。
【0039】
レギュラー領域のECC処理が終了すると、次に、スペア領域のECC処理が実行される。図7に示すように、スペア領域310のスペア0のデータが転送/書込み回路200によってECC回路120へ転送され(S112)、そこでECC処理が実行され(S114)、生成されたパリティビットが領域315に書き込まれる(S116)。ECCが未処理のセクタがあるか否かが判定され(S118)、そのようなセクタがあればステップS112からS116が繰り返される。こうして、スペア領域310のすべてのセクタのECC処理が実行される。ページバッファ/センス回路170のレギュラー領域300およびスペア領域310に保持されたすべてのデータのECC処理が終了すると、ページバッファ/センス回路170に保持されたデータがメモリアレイの選択されたページにプログラムされる(S120)。
【0040】
一方、本実施例のフラッシュメモリ10では、図10に示すように、プログラムデータがページバッファ/センス回路170にロードされ(S200)、これと並行してプログラムデータが検出回路130によって監視される(S202)。プログラムデータのページバッファ/センス回路170へのロードが完了すると、プログラムシーケンスが開始される(S204)。
【0041】
各セクタのプログラムデータがページバッファ/センス回路170に入力されるや否や、検出回路130は、各セクタのプログラムデータが特定のビット列であるか否かを検出する(S206)。もし、セクタのプログラムデータが特定のビット列に一致しなければ、当該セクタのプログラムデータは、従来と同様に、ECC回路120へ転送され、ECC処理が実行される。つまり、図7に示すECC処理が実行される。他方、セクタのプログラムデータが特定のビット列に一致することが検出回路130によって検出されたとき、転送/書込み回路200は、当該セクタのプログラムデータのECC回路120への転送を実行せず、ECC回路120は、当該セクタのプログラムデータのためのECC演算を実行しない。それ故、ステップS208、S210の処理がスキップされる。ECC回路120は、ECC演算をスキップする代わりに、検出信号Sに基づき特定のビット列を識別し、識別された特定のビット列に対応する既知のパリティビットを転送/書込み回路200へ出力し、転送/書込み回路200は、既知のパリティビットをスペア領域310の領域313または314に書込む。このような処理は、ページバッファ/センス回路170のレギュラー領域300のすべてのセクタに対し行われる(ステップS206〜214)。レギュラー領域300のECC処理が終了すると、次にスペア領域310へのECC処理が実行される。スペア領域310のECC処理は、図9に示す従来の手法と変わらないので説明を省略する。
【0042】
このように本実施例によれば、誤り訂正符号が既知である特定のビット列のプログラムデータが入力された場合には、ページバッファ/センス回路170からECC回路120へのプログラムデータの転送を実行せず、かつECC演算を不要にしたことで、入力されたデータのプログラム時間を短縮させることができる。特に、ページバッファ/センス回路170からECC回路120へのデータ転送に要する時間は比較的大きいので、プログラム時間の短縮への貢献が大きい。
【0043】
上記実施例では、ページバッファ/センス回路170に保持されたデータをECC回路120へ転送する例を示したが、ページバッファ/センス回路170が1つもしくは複数のキャッシュメモリを備えたパイプライン構造であるときにも本発明を適用することができる。この場合、キャッシュメモリとECC回路との間のデータ転送がスキップされる。
【0044】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0045】
10:フラッシュメモリ 100:メモリアレイ
110:入出力バッファ 120:ECC回路
130:検出回路 140:アドレスレジスタ
150:制御部 160:ワード線選択回路
170:ページバッファ/センス回路 180:列選択回路
190:内部電圧発生正回路 200:転送/書込み回路
300:レギュラー領域 310:スペア領域
【要約】      (修正有)
【課題】データの信頼性を維持しつつプログラム時間の短縮を図ることができる半導体記憶装置を提供する。
【解決手段】外部入出力端子から入力されたプログラムデータをページバッファ/センス回路170へロードし、プログラムデータを監視する検出回路130によってプログラムデータが特定のビット列であるか否かが検出される。プログラムデータが特定のビット列でないことが検出されたとき、ページバッファ/センス回路170に保持されたプログラムデータが転送/書込み回路200によってECC回路120へ転送され、ECC演算により生成された誤り訂正符号がページバッファ/センス回路170に書込まれる。他方、特定のビット列であることが検出されたとき、ページバッファ/センス回路170に保持されたプログラムデータの転送が禁止され、当該特定のビット列に対応する既知の誤り訂正符号がページバッファ/センス回路170に書込まれる。
【選択図】図4
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10