JP2014137834A - 半導体記憶装置 - Google Patents
半導体記憶装置 Download PDFInfo
- Publication number
- JP2014137834A JP2014137834A JP2013006364A JP2013006364A JP2014137834A JP 2014137834 A JP2014137834 A JP 2014137834A JP 2013006364 A JP2013006364 A JP 2013006364A JP 2013006364 A JP2013006364 A JP 2013006364A JP 2014137834 A JP2014137834 A JP 2014137834A
- Authority
- JP
- Japan
- Prior art keywords
- data
- page buffer
- ecc
- circuit
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】データ読み出し動作の時に、復元、かつ訂正されたデータの読み出し時間を短縮することができる半導体記憶装置を提供する。
【解決手段】データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102aと、パリティメモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102cと、を含んで構成され、ECC Bus_1は、ページバッファ102a、及びページバッファ102cと接続され、ECC Bus_3に接続されるとともに、ページバッファ102cの出力データに基づき、ページバッファ102aの出力データの誤りを訂正するECC回路107aと、予め設定されたシードデータに基づいて、ページバッファ102aから入力されるデータをランダマイズし、ECC回路107aから入力されるデータをデランダマイズするランダマイザ107bと、を備える。
【選択図】図1
【解決手段】データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102aと、パリティメモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102cと、を含んで構成され、ECC Bus_1は、ページバッファ102a、及びページバッファ102cと接続され、ECC Bus_3に接続されるとともに、ページバッファ102cの出力データに基づき、ページバッファ102aの出力データの誤りを訂正するECC回路107aと、予め設定されたシードデータに基づいて、ページバッファ102aから入力されるデータをランダマイズし、ECC回路107aから入力されるデータをデランダマイズするランダマイザ107bと、を備える。
【選択図】図1
Description
本発明は、半導体記憶装置に関する。
NAND型フラッシュメモリ等に代表される半導体記憶装置は、その集積度が向上するにつれ、複数のメモリセルの間の干渉(interference)が増加するため、誤ったデータ読み出し動作や、誤ったデータ書き込み動作を行う可能性が高くなってきている。そのため、例えば特許文献1記載のフラッシュメモリでは、入力データパターン(data pattern)にデータ1とデータ0とが確率的に一定に保持されるように、入力データパターンを変える機能を実行するランダマイザを備えている。
特許文献1記載のフラッシュメモリは、データ書き込み動作においては、ランダムシード発生回路によって発生したランダムシードRS(シード)と、入力バッファを通じて入力されたオリジナルデータOD(入力データ)とをXOR(排他的論理和)演算する。特許文献1記載のフラッシュメモリは、XOR演算によりランダムデータRDを生成し(ランダマイズ;Randomize)、このランダムデータRDをメモリセルアレイのメモリセルにプログラムする。また、特許文献1記載のフラッシュメモリは、データ読み出し動作においては、ランダムデータRDと、ランダムシードRSとをXOR演算して、ランダムデータRDをオリジナルデータODに復元、すなわち、デランダマイズ(De−Randomize)し、外部へ出力する。
一方、従来のNAND型フラッシュメモリでは、多数回の書き換えに伴うトンネル酸化膜の劣化等に起因して、データ保持中に記憶素子(メモリセルトランジスタ)の保持特性が失われ、エラービットの発生率(エラー率)が大きくなる傾向がある。特に、NAND型フラッシュメモリでは、メモリセルの大容量化、すなわち製造プロセスにおける微細化が進むとエラー率は上昇してしまう傾向にある。そのため、記憶すべきデータに誤り訂正符号(Error Correcting Code)の冗長データ(パリティデータ)を付加してデータ列としてフラッシュメモリに書込むと共に、読み出し時には誤り訂正符号の冗長データを基にしてデータの訂正を行うことで、エラービットが発生したときのデータの補償を行っている。
このデータの補償は、NAND型フラッシュメモリの内部においてECC回路により演算処理してもよく、或いは、NAND型フラッシュメモリの外部、例えばメモリコントローラにおいてECC処理を行ってもよい。特許文献1記載のフラッシュメモリでは、外部のコントローラにおいてECC処理を行っている。
従って、特許文献1記載のフラッシュメモリでは、データ書き込み動作においては、外部のコントローラにおいて、ホストインターフェースを通じて入力されるデータに対してエラー訂正エンコーディング(Error Correction Encoding)を行う。これにより、外部のコントローラは、パリティビット(Parity Bit)が付け加われたデータ、すなわち、エンコードされたデータを形成する。このエンコードされたデータが、NAND型フラッシュメモリに入力され、上述の様にランダマイズ処理された後に、メモリセルに書き込まれる。
一方、データ読み出し動作においては、NAND型フラッシュメモリにおいて、上述の様にランダマイズ処理された後に、復元されたオリジナルデータが、外部のコントローラのECCデコーダに入力される。このECCデコーダは、復元されたオリジナルデータのエラーを検出し、訂正する(Error Correction Decoding)。
一方、データ読み出し動作においては、NAND型フラッシュメモリにおいて、上述の様にランダマイズ処理された後に、復元されたオリジナルデータが、外部のコントローラのECCデコーダに入力される。このECCデコーダは、復元されたオリジナルデータのエラーを検出し、訂正する(Error Correction Decoding)。
ところが、特許文献1記載のフラッシュメモリでは、シード(Seed)をページバッファ(Page Buffer)に送り、ランダマイズ(Randomize)処理をする方式を採用している。そのため、たとえばデータ読み出し(Read)動作の時に、ECCのデコード(Decode)処理を行う時間と、デランダマイズ(De−Randomize)処理を行う時間を要するため、復元、かつ訂正されたデータの読み出し時間が増大してしまうという問題がある。
そこで本発明が解決しようとする課題は、データ読み出し動作の時に、復元、かつ訂正されたデータの読み出し時間を短縮することにある。
本発明の半導体記憶装置は、第1のデータバスと、第1の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第1のデータバスと同じ本数のビット線と、前記第1のデータバスとを接続してデータを転送するデータ転送部と、を備え、前記データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチする第1のページバッファと、パリティメモリセルに接続されるビット線に出力される出力データをラッチする第2のページバッファと、を含んで構成され、前記第1のデータバスは、前記第1のページバッファ、及び前記第2のページバッファと接続され、さらに、前記第1のデータバスに接続されるとともに、前記第2のページバッファの出力データに基づき、前記第1のページバッファの出力データの誤りを訂正するECC回路と、前記第1のデータバスに接続され、予め設定されたシードデータに基づいて、前記第1のページバッファから入力されるデータをランダマイズし、前記ECC回路から入力されるデータをデランダマイズするランダマイザと、を備える、ことを特徴とする。
また、本発明の半導体記憶装置において、前記第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有し、前記ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、前記第1のデータバスからの書き込みを許可しないことを特徴とする。
また、本発明の半導体記憶装置において、前記第1のデータバスと異なる本数から構成され、前記第1のデータバスとは独立して設けられる第2のデータバスを備え、前記データ転送部は、第2の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第2のデータバスと同じ本数のビット線と、前記第2のデータバスとを接続してデータを転送し、前記第1の動作モードでは、前記第1のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、前記第2の動作モードでの救済置換を前提として存在する第3のページバッファとの間において救済置換を行わずに、前記ECC回路、及び前記ランダマイザの入力データとして取り扱うことを特徴とする。
また、本発明の半導体記憶装置において、前記第1の動作モードのデータ書き込み動作において、前記ランダマイザは、前記第1のページバッファの出力データをランダマイズして前記ECC回路に入力し、前記ECC回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第2のページバッファにパリティデータを書き込み、一方、前記第1の動作モードのデータ読み出し動作において、前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、第1のランダマイズ及びECC処理を実行することを特徴とする。
また、本発明の半導体記憶装置において、前記第1のランダマイズ及びECC処理に替えて、前記第1の動作モードのデータ書き込み動作において、前記ランダマイザは、前記第1のページバッファの出力データをランダマイズして前記第1のページバッファに書き戻し、前記ECC回路は、前記第1のページバッファに書き戻されたデータに基づいて前記第2のページバッファにパリティデータを書き込み、一方、前記第1の動作モードのデータ読み出し動作において、前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、第2のランダマイズ及びECC処理を実行することを特徴とする。
また、本発明の半導体記憶装置において、前前記第2のランダマイズ及びECC処理に替えて、前記第1の動作モードのデータ書き込み動作において、前記ランダマイザは、ランダマイズ処理に先立って取り込んだ前記第1のページバッファの不良情報に基づいて、前記第1のページバッファの出力データのうち、前記固定されたデータを除く、前記第1のページバッファの出力データをランダマイズして前記ECC回路に入力し、前記ECC回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第2のページバッファにパリティデータを書き込み、一方、前記第1の動作モードのデータ読み出し動作において、前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、第3のランダマイズ及びECC処理を実行することを特徴とする。
また、本発明の半導体記憶装置において、前記ビット線は、n(nはpとqの公倍数であり、p、及びqはp>qである自然数)本のビット線であり、前記第1のデータバスはp本であり、前記第2のデータバスはq本であって、前記データ転送部は、前記第1の動作モードでは、(n/p)本のアドレス信号が入力されると、p本のビット線とp本の第1のデータバスとの接続を行い、一方、前記第2の動作モードでは、(n/q)本のアドレス信号が入力されると、q本ビット線と第2のデータバスとの接続を行う、ことを特徴とする。なお、上記構成は、論理的空間においての概念を前提としており、物理的ビット線数nがpとqの公倍数でなくてもよく、余りをダミービット線として処理するなどで対応できる。
本発明の半導体記憶装置は、第1のデータバスと、第1の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第1のデータバスと同じ本数のビット線と、第1のデータバスとを接続してデータを転送するデータ転送部と、を備える。半導体記憶装置は、さらに、第1のデータバスに接続されるECC回路と、第1のデータバスに接続されるランダマイザと、を備える。
これにより、ページバッファの出力に接続されるECCのデータバス(第1のデータバス)を、第1動作モード(ECCモード)用に用いることができる。また、このECCのデータバスには、ランダマイザ、及びECC回路が設けられる。そのため、本発明の半導体記憶装置によれば、ECC回路、及びランダマイザを内蔵した半導体記憶装置において、ECC処理におけるデコード(Decode)動作とデランダマイズ(De−Randomize)動作を同時に実行でき、復元、かつ訂正されたデータの読み出し時間を短縮することができる。
また、半導体記憶装置は、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有する。半導体記憶装置は、第1の動作モードでは、第1のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、第2の動作モードでの救済置換を前提として存在する第3のページバッファとの間において救済置換を行わずに、ECC回路、及びランダマイザの入力データとして取り扱う。また、半導体記憶装置は、以下の第1のランダマイズ及びECC処理を実行する。すなわち、半導体記憶装置では、第1の動作モードのデータ書き込み動作において、ランダマイザは、第1のページバッファの出力データをランダマイズしてECC回路に入力し、ECC回路は、ランダマイザから入力されるデータに基づいて、パリティデータを生成して第2のページバッファにパリティデータを書き込む。一方、第1の動作モードのデータ読み出し動作において、ECC回路は、第2のページバッファのパリティデータに基づいて、第1のページバッファのデータを誤り訂正し、ランダマイザは訂正後のデータをデランダマイズして第1のページバッファに書き戻す。
これにより、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、ランダマイザ、及びECC回路により誤りが訂正される。そのため、本発明の半導体記憶装置によれば、ECCのデコード処理とデランダマイズ処理とを高速に実行することができる。また、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、ECC回路により誤りが訂正されるので、救済機能を省略することができる。
また、半導体記憶装置は、第1のランダマイズ及びECC処理に替えて、以下の第2のランダマイズ及びECC処理を実行する。すなわち、半導体記憶装置では、第1の動作モードのデータ書き込み動作において、ランダマイザは、第1のページバッファの出力データをランダマイズして第1のページバッファに書き戻し、ECC回路は、第1のページバッファに書き戻されたデータに基づいて第2のページバッファにパリティデータを書き込む。一方、第1の動作モードのデータ読み出し動作において、ECC回路は、第2のページバッファのパリティデータに基づいて、第1のページバッファのデータを誤り訂正し、ランダマイザは訂正後のデータをデランダマイズして第1のページバッファに書き戻す。
これにより、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、誤りが発生しないように処理される。そのため、本発明の半導体記憶装置によれば、ECC処理の訂正処理能力を下げずに、ECCのデコード処理とデランダマイズ処理とを高速に実行することができる。
以下、図面を参照して、本発明の実施の形態について説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
図1は、本実施形態におけるNAND型フラッシュメモリのブロック構成を示す図である。図1に示すNAND型フラッシュメモリ10は、メモリアレイ101、PB(Page Buffer;ページバッファ)102、Column Coding Circuit(カラムコーディング回路)103、Main Column Repair MUX(カラム救済回路)104を備えている。また、NAND型フラッシュメモリ10は、Parity CR MUX(パリティカラム置換回路)105、ECC Column Coding Circuit(ECCカラムコーディング回路)108、I/O PAD(I/Oパッド)106を備えている。また、NAND型フラッシュメモリ10は、ECC Engine(ECC回路)107a、及びRandomize Mixer(ランダマイザ)107bを備えている。本実施形態においては、以下、ECC回路107a、及びランダマイザ107bを、一体化してランダマイザ、及びECC回路107と呼ぶことがある。
図1において、Data Bus_1、Data Bus_2、及びData Bus_3(第2のデータバス)は、データの受け渡しをページバッファ102とI/Oパッド106との間において行なう配線であり、以下、単にData_Busと呼ぶこともある。
I/Oパッド106(インターフェース部)は、例えばNAND型フラッシュメモリ10の制御を行なうナンドコントローラとの間で上記データの受け渡しを行なう外部端子である。
また、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)は、データの受け渡しをページバッファ102とランダマイザ、及びECC回路107との間において行なう配線であり、以下、単にECC_Busと呼ぶこともある。
I/Oパッド106(インターフェース部)は、例えばNAND型フラッシュメモリ10の制御を行なうナンドコントローラとの間で上記データの受け渡しを行なう外部端子である。
また、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)は、データの受け渡しをページバッファ102とランダマイザ、及びECC回路107との間において行なう配線であり、以下、単にECC_Busと呼ぶこともある。
メモリアレイ101は、複数のメモリセルトランジスタを含んで構成される。これらの複数のメモリセルトランジスタ各々は、1ビットのデータを記憶する。メモリアレイ101において、同一のワード線に接続される複数のメモリセルトランジスタがページを構成する。1つのページにおけるメモリセルトランジスタへのデータの書き込み、及びメモリセルからのデータの読み出しは、一括して実行される。
NAND型フラッシュメモリ10は、図1に示すように、カラムコーディング回路103、及びECCカラムコーディング回路108を有する。カラムコーディング回路103とECCカラムコーディング回路108とでは、別系統のカラムアドレス(Coding)が入力される。また、カラムコーディング回路103とECCカラムコーディング回路108とは、後述するように、ページバッファ102のPB制御回路60に選択信号Sel_Aまたは選択信号Sel_Bを出力する。カラムコーディング回路103とECCカラムコーディング回路108は、ページバッファ102に直結した部分(図4(b)に示すマルチプレクサ52_b、及びPB制御回路60の部分)から、ページバッファの出力を、ECC Bus_1とData Bus_1とのいずれか一方のデータバスに接続する。
カラムコーディング回路103は、図1において不図示のアドレス制御回路から入力されるカラムアドレスに基づいて、カラムアドレス信号(図4(b)に示すSub BL Coding、及びCoding)を生成し、このカラムアドレス信号に対応するページバッファ102のページバッファユニットを選択する。これにより、I/Oパッド106、Data Bus_3、Data Bus_2、及びData Bus_1、ビット回路(後述)、及びビット線を介してメモリセルトランジスタへデータが書きこまれる。また、メモリセルからのデータがビット線、ビット回路、Data Bus_1、Data Bus_2、及びData Bus_3を介してI/Oパッド106の外部へ読み出される。
一方、ECCカラムコーディング回路108は、ECC回路107aからカラムアドレス(以下、カラムアドレスAddress Bとする)が入力される。ECCカラムコーディング回路108は、不図示のアドレス制御回路からカラムコーディング回路103に入力されるカラムアドレス(以下、カラムアドレスAddress Aとする)とは独立して、PB制御回路60に対して選択信号Sel_Bを出力して、ページバッファ102の出力とECC Bus_1とを接続する。これにより、ページバッファ102の出力と、ECC Bus_1またはData Bus_1との接続におけるアドレス制御を独立して実行することができる。
また、従来のNAND型フラッシュメモリでは、ページバッファの出力(データバスを以下、区別のためIOバスとする)を、第1の動作モードと第2の動作モードとにおいて共有している。これに対して、NAND型フラッシュメモリ10では、ページバッファの出力であるIOバスを、第1の動作モードと第2の動作モードとにおいて共有することなく、独立に設けている。
これにより、ページバッファの出力からランダマイザ、及びECC回路107への入力までの径路において、後述するカラム置換回路104等の高速なデータ転送に悪影響を及ぼす回路は不要となり、データ転送を高速に行うことができる。また、第2のデータバスを、従来の救済効率に応じたバス幅にしておくことができる。これにより、カラム置換回路104の回路規模は増大しないので、チップサイズの増加を抑制できる。さらに、NAND型フラッシュメモリ10を、ECC回路を内蔵しないNAND型フラッシュメモリに設計変更する場合であっても、ECCカラムコーディング回路108、パリティカラム置換回路105、ECC Bus_1〜ECC Bus_3、ランダマイザ、及びECC回路107を削除すればよいので、容易に設計することができる。
ページバッファ102は、メモリアレイ101のページと同じ個数のデータを保持できるように構成されている。ページバッファ102は、図1に示すように、PB(Page Buffer)_Data102aと、PB_CR102bと、PB_Parity102cと、PB_PCR102dとから構成される。以下、PB(Page Buffer)_Data102aをページバッファ102aと、PB_CR102bをページバッファ102bと、PB_Parity102cをページバッファ102cと、PB_PCR102dをページバッファ102dと、それぞれ呼ぶものとする。
ページバッファ102aは、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ(第1のページバッファ)である。また、ページバッファ102aは、通常モード(第2の動作モード)におけるデータ読み出し時に、カラムコーディング回路103から選択信号Sel_Aが入力される。ページバッファ102aは、増幅結果を読み出しデータData_Out_Aとして、Data Bus_1、Data Bus_2、及びData Bus_3(第2のデータバス)を介して、I/Oパッド106から出力する。
一方、ページバッファ102aは、ECCモード(第1の動作モード)におけるデータ読み出し時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102aは、増幅結果を読み出しデータData_Out_BとしてECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に対して出力する。
ページバッファ102aは、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ(第1のページバッファ)である。また、ページバッファ102aは、通常モード(第2の動作モード)におけるデータ読み出し時に、カラムコーディング回路103から選択信号Sel_Aが入力される。ページバッファ102aは、増幅結果を読み出しデータData_Out_Aとして、Data Bus_1、Data Bus_2、及びData Bus_3(第2のデータバス)を介して、I/Oパッド106から出力する。
一方、ページバッファ102aは、ECCモード(第1の動作モード)におけるデータ読み出し時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102aは、増幅結果を読み出しデータData_Out_BとしてECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に対して出力する。
また、ページバッファ102aは、通常モードにおけるデータ書込み時に、カラムコーディング回路103から選択信号Sel_Aが入力される。ページバッファ102aは、I/Oパッド106から入力される書き込みデータがData Bus_3、Data Bus_2、及びData Bus_1を介して書き込みデータData_In_Aとして入力される。一方、ページバッファ102aは、ECCモードにおけるデータ書き込み時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102aは、ランダマイザ、及びECC回路107におけるECC回路107aのECC処理の結果がECC Bus_3、ECC Bus_2、及びECC Bus_1を介して書き込みデータData_In_Bとして入力される。
ページバッファ102bは、ページバッファ102aに接続される通常メモリセルまたはビット線に不良が有る場合に、通常メモリセル、及びビット線とともに置換されるページバッファ(第3のページバッファ)である。すなわち、ページバッファ102aを構成するページバッファユニットの1つに不良があった場合、このページバッファユニットは、ページバッファ102bを構成するページバッファユニットの1つに置換される。なお、ページバッファ102bの動作は、上述したページバッファ102aと同じ動作であるので、説明を省略する。
このページバッファ102aからページバッファ102bへのページバッファユニットの置換を行なうのが、カラム置換回路104である。カラム置換回路104は、ページバッファ102aにおける不良のページバッファユニットを選択するカラムアドレス(後述する選択信号Sel_A)がカラムコーディング回路103に入力される場合、カラムコーディング回路103がページバッファ102bにおけるページバッファユニットを選択するように制御を実行する。
ページバッファ102cは、パリティメモリセル(ECC処理用のメモリセルトランジスタ。ただし、構成は通常メモリセルと同じ)に接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ(第2のページバッファ)である。なお、パリティメモリセルが記憶するパリティデータは、通常モードでは、I/Oパッド106を介して外部に出力されない。ページバッファ102cは、ECCモードにおけるデータ読み出し時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102cは、増幅結果を読み出しデータData_Out_Bとして、ECC Bus_1、ECC Bus_2、及びECC Bus_3を介してECC回路107に対して出力する。
また、パリティメモリセルが記憶するパリティデータは、通常モードでは、I/Oパッド106を介して外部から入力されない。
ページバッファ102cは、ECCモードにおけるデータ書き込み時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102cは、ECC回路107のECC処理の結果であるパリティデータがECC Bus_3、ECC Bus_2、及びECC Bus_1を介して書き込みデータData_In_Bとして入力される。
ページバッファ102cは、ECCモードにおけるデータ書き込み時に、ECCカラムコーディング回路108から選択信号Sel_Bが入力される。ページバッファ102cは、ECC回路107のECC処理の結果であるパリティデータがECC Bus_3、ECC Bus_2、及びECC Bus_1を介して書き込みデータData_In_Bとして入力される。
ページバッファ102dは、ページバッファ102cに接続されるパリティメモリセルまたはビット線に不良が有る場合に、パリティメモリセル、及びビット線とともに置換されるページバッファ(第4のページバッファ)である。すなわち、ページバッファ102cを構成するページバッファユニットの1つに不良があった場合、このページバッファユニットは、ページバッファ102dを構成するページバッファユニットの1つに置換される。なお、ページバッファ102dの動作は、上述したページバッファ102cと同じ動作であるので、説明を省略する。
このページバッファ102cからページバッファ102dへのページバッファユニットの置換を行なうのが、パリティカラム置換回路105である。パリティカラム置換回路105は、ページバッファ102cにおける不良のページバッファユニットを選択するカラムアドレス(後述する選択信号Sel_B)がECCカラムコーディング回路108に入力される場合、ECCカラムコーディング回路108がページバッファ102dにおけるページバッファユニットを選択するように制御を実行する。
次に、図2は、ランダマイザ、及びECC回路107の詳細な構成例を示す図である。
本実施形態においては、ランダマイザ、及びECC回路107として、BCH符号(Bose−Chaudhuri Hocquenghem code)で代表されるガロア体演算を利用したECC回路を例にとって説明する。なお、BCH符号の替りに、例えばHamming符号(Hamming code)、リードソロモン符号(Reed−Solomon code)を用いることも可能である。なお、以下の説明では、情報データ長511ビットを訂正単位とし、それぞれの訂正単位のうちの4ビットのデータの訂正が可能なBCH符号を用いたECC回路について説明する。
ランダマイザ、及びECC回路107のうち、図1に示すECC回路107aは、データの復号を司るデコーダ部と、パリティデータを生成するエンコーダ部とを含んで構成される。
本実施形態においては、ランダマイザ、及びECC回路107として、BCH符号(Bose−Chaudhuri Hocquenghem code)で代表されるガロア体演算を利用したECC回路を例にとって説明する。なお、BCH符号の替りに、例えばHamming符号(Hamming code)、リードソロモン符号(Reed−Solomon code)を用いることも可能である。なお、以下の説明では、情報データ長511ビットを訂正単位とし、それぞれの訂正単位のうちの4ビットのデータの訂正が可能なBCH符号を用いたECC回路について説明する。
ランダマイザ、及びECC回路107のうち、図1に示すECC回路107aは、データの復号を司るデコーダ部と、パリティデータを生成するエンコーダ部とを含んで構成される。
ECC回路107aのうち、デコーダ部は、Syndrome Calculation Circuit(シンドローム算出回路)31、Error−Coefficient Calculation Circuit(誤り係数算出回路)32、及びChien Search Circuit(チェン探索回路)33を含んで構成される。
シンドローム算出回路31は、NAND型フラッシュメモリ10のECCモードでのデータ読み出し時に、ページバッファ102に読み出されたメモリセルからのデータが、符号データLoad Data<510:0>として、例えばセクタ毎に入力される。シンドローム算出回路31は、この符号データLoad Data<510:0>を独立な最小多項式で除算することによりシンドロームを計算する。4ビットのデータの誤り訂正が可能なBCH符号で使用される独立な最小多項式は、4つである。シンドローム算出回路31は、これら4つの最小多項式に対応して、4つのシンドローム算出部を備えている。これらのシンドローム算出部は、それぞれシンドローム(ここではシンドロームS1、S3、S5、S7とする)を計算する。
シンドローム算出回路31は、NAND型フラッシュメモリ10のECCモードでのデータ読み出し時に、ページバッファ102に読み出されたメモリセルからのデータが、符号データLoad Data<510:0>として、例えばセクタ毎に入力される。シンドローム算出回路31は、この符号データLoad Data<510:0>を独立な最小多項式で除算することによりシンドロームを計算する。4ビットのデータの誤り訂正が可能なBCH符号で使用される独立な最小多項式は、4つである。シンドローム算出回路31は、これら4つの最小多項式に対応して、4つのシンドローム算出部を備えている。これらのシンドローム算出部は、それぞれシンドローム(ここではシンドロームS1、S3、S5、S7とする)を計算する。
誤り係数算出回路32は、これらのシンドロームS1、S3、S5、S7を使用して、セクタ毎のエラー位置探索方程式の係数(ここでは係数e4、e3、e2、e1、及びe0とする)を計算する。係数e4、e3、e2、e1、及びe0は、エラー位置探索方程式Λ(x)=e4x4+e3x3+e2x2+e1x1+e0の係数である。エラー位置探索方程式Λ(x)は、ページバッファ102からセクタ毎に読み出されたビットに誤りがあるか否かを探索する際にチェン探索回路33において用いられる。
チェン探索回路33では、誤り係数算出回路32が算出する係数(エラー位置探索方程式の係数e0〜e4)を用いて、エラー位置探索方程式Λ(x)に、代入値xとして符号データLoad Data<510:0>の位置を示すアドレス(カラムアドレス)を代入して、エラー位置探索方程式Λ(x)が0になるか否かをチェックされる。また、チェン探索回路33は、このチェック結果に応じてエラー位置(Error Position)を示す信号であるエラー検出信号EP<510:0>を出力する。チェン探索回路33は、エラー検出信号EP<510:0>において、符号データLoad Data<510:0>のビットのうち、誤りがあったビットに対してはデータ1、誤りのなかったビットに対してはデータ0とする。
ランダマイザ107bには、NAND型フラッシュメモリ10のECCモードでのデータ読み出し時に、ECCカラムコーディング回路108がページバッファ102に選択信号Sel_B(カラムアドレス)を入力することにより、このカラムアドレスが示す位置のページバッファ102の符号データLoad Data<510:0>が入力される。ランダマイザ107bは、符号データLoad Data<510:0>とエラー検出信号EP<510:0>とを排他的論理和演算(EXOR)することにより、誤りのあったビットを反転し、誤りのなかったビットは反転されず、誤りのないデータを得ることができる。
また、ランダマイザ107bは、排他的論理和演算により得られた誤りのないデータと、不図示のランダムシード発生回路によって発生したランダムシードRS<510:0>(シード)とを、更に排他的論理和演算することにより、すなわちデランダマイズ(De−Randomize)する。ランダマイザ107bは、符号データLoad Data<510:0>をエンコード前の状態に復元する。ランダマイザ107bは、符号データLoad Data<510:0>を復元したデータである、復元済の符号データStore Data<510:0>をページバッファ102に書き込む。
以上説明したECCモードでのデータ読み出し動作(デコード、及びデランダマイズ)におけるデータの流れは、図2において、実線(Decodeでのデータの流れを示す)、及び一点鎖線(Encode/Decode共通のデータの流れを示す)により示される。また、ECCモードでのデータ読み出し動作における処理において、ページバッファ102への書き込みデータである符号データStore Dataは、数学的に下記の式で表される。なお、この式では、排他的論理和演算をXORで表すこととして、ページバッファ102からの読み出しデータである符号データLoad Data、エラー検出信号EP、及びランダムシードRSを用いている。
すなわち、
Store Data=(Load Data)XOR(EP)XOR(RS)
で表わされる。
なお、この符号データStore Dataは、通常モードのデータ読み出し動作においては、カラムコーディング回路103から選択信号Sel_A(カラムアドレス)をページバッファ102に与えることにより、パリティデータを除くデータを、I/Oパッド106を介して外部に出力することができる。
すなわち、
Store Data=(Load Data)XOR(EP)XOR(RS)
で表わされる。
なお、この符号データStore Dataは、通常モードのデータ読み出し動作においては、カラムコーディング回路103から選択信号Sel_A(カラムアドレス)をページバッファ102に与えることにより、パリティデータを除くデータを、I/Oパッド106を介して外部に出力することができる。
また、ECC回路107aのうち、エンコーダ部40は、Parity Generation Circuit(パリティ生成回路)41を有する。パリティ生成回路41は、ランダマイザ107bから入力されるランダマイズ処理後のデータを生成多項式で除算して、パリティデータを生成し、生成したパリティデータを、ページバッファ102(後述するページバッファ102c)に対して出力する。
ECCモードでのデータ書込み動作(エンデコード、及びランダマイズ)では、ランダマイザ107bは、ページバッファ102から入力される、符号データLoad Data<510:0>をランダマイズする処理を行う。この際、ランダマイザ107bでは、エラー検出信号EP<510:0>を固定データ(オール0)とし、すなわちエラー検出信号EP<510:0>=0とする。ランダマイザ107bは、符号データLoad Data<510:0>と、ランダムシードRS<510:0>と、エラー検出信号EP<510:0>との排他的論理和演算を実行し、パリティ生成回路41に対して出力する符号データStore Dataを生成する。
ECCモードでのデータ書込み動作(エンデコード、及びランダマイズ)では、ランダマイザ107bは、ページバッファ102から入力される、符号データLoad Data<510:0>をランダマイズする処理を行う。この際、ランダマイザ107bでは、エラー検出信号EP<510:0>を固定データ(オール0)とし、すなわちエラー検出信号EP<510:0>=0とする。ランダマイザ107bは、符号データLoad Data<510:0>と、ランダムシードRS<510:0>と、エラー検出信号EP<510:0>との排他的論理和演算を実行し、パリティ生成回路41に対して出力する符号データStore Dataを生成する。
このパリティ生成回路41への書き込みデータである符号データStore Dataは、数学的に下記の式で表される。なお、この式では、排他的論理和演算をXORで表すこととして、ページバッファ102からの読み出しデータである符号データLoad Data、エラー検出信号EP、及びランダムシードRSを用いている。
すなわち、デコード時と同じく、
Store Data=(Load Data)XOR(EP)XOR(RS)
で表わされる。
また、パリティ生成回路41は、ランダマイザ107bから入力される符号データStore Dataからパリティデータを生成する。
ランダマイザ107bは、パリティデータを除く符号データStore Dataを、パリティ生成回路41は、パリティデータを、ページバッファ102に対して出力する。これらの合成したデータが符号データStore Dataとして、ページバッファ102に書き込まれる。
すなわち、デコード時と同じく、
Store Data=(Load Data)XOR(EP)XOR(RS)
で表わされる。
また、パリティ生成回路41は、ランダマイザ107bから入力される符号データStore Dataからパリティデータを生成する。
ランダマイザ107bは、パリティデータを除く符号データStore Dataを、パリティ生成回路41は、パリティデータを、ページバッファ102に対して出力する。これらの合成したデータが符号データStore Dataとして、ページバッファ102に書き込まれる。
このように、ECC回路107aとランダマイザ107bとを一体的に構成し、図1に示す様にECC Busに設けたので、ECCのエンコード時にランダマイズ、及びエンコードを、デコード時にデコード、及びデランダマイズを、それぞれ同時に実行することができる。
図1に戻って、ページバッファ102を構成するページバッファ102a〜102dは、全て同一の回路構成からなり、以下にその回路構成について、図3〜図7を用いて詳細に説明する。図3は、図1に示すページバッファ102、カラムコーディング回路103、及びECCカラムコーディング回路108に対応する部分の簡略的な構成を示す図である。また、図4は、図2に示すPB 4IO ユニットの内部の構成、及びPB ユニットの内部の構成を示す図である。また、図5は、PB ユニットの内部の回路構成を示す図である。また、図6は、PB ユニットの内部の他の回路構成を示す図である。また、図7は、図5、及び図6に示すビット内部回路50_i(i=0〜7の整数)の回路構成を示す図である。
図3を参照して、図1に示すページバッファ102、カラムコーディング回路103、及びECCカラムコーディング回路108に対応する部分は、4本分のIO線からの4つのデータをラッチし、4本分のIO線に対してデータを書き込むPB 4IO ユニットを有する。
図3においては、10個のPB 4IOとして、PB0 IO 0123、PB0 IO 4567、PB1IO 0123、PB1 IO 4567、PB2 IO 0123、PB2 IO 4567、PB3 IO 0123、PB3 IO 4567、PB4 IO 0123、PB4 IO 4567を示している。以下、PB0 IO 0123をPB 4IO ユニット30_0、PB0 IO 4567をPB 4IO ユニット30_1、PB1IO 0123をPB 4IO ユニット30_2、PB1 IO 4567をPB 4IO ユニット30_3、PB2 IO 0123をPB 4IO ユニット30_4、と呼ぶことがある。また、PB2 IO 4567をPB 4IO ユニット30_5、PB3 IO 0123をPB 4IO ユニット30_6、PB3 IO 4567をPB 4IO ユニット30_7、PB4 IO 0123をPB 4IO ユニット30_8、PB4 IO 4567をPB 4IO ユニット30_9と呼ぶことがある。
ここで、IO線とは、後述するPBユニットにおいて、マルチプレクサ52_bとPB制御回路60との間に設けられる入出力線である。このIO線は、本実施形態では、マルチプレクサ52_bと8個のビット回路51_0a〜51_7aとを介して、8本のビット線のいずれか一本と電気的に接続される。すなわち、IO線は、メモリセルトランジスタに書き込むデータ或いはメモリセルトランジスタから読み出されるデータが行き来する信号線である。
図4(a)を参照して、図3に示すPB 4IO ユニットは、同一の構成を有している。図4(a)では、図3に示すPB 4IO ユニット30_0を代表として、その構成を示している。PB 4IO ユニット30_0は、4個のPBユニット30_00〜30_03から構成される。
PBユニット30_00〜30_03各々は、活性レベル(以下、例としてHレベルとする)の選択信号Sel_A<0>がカラムコーディング回路103から供給されると、自身に接続される1本のIO線とData Bus(第2のデータバス;後述するデータバスData_A<7:0>)とを接続する。これにより、図4(a)に示すように、4本のIO線からデータバスData_A<3:0>へ、4ビットの読み出しデータData_Out_A<0>〜Data_Out_A<3>が読み出される。
PBユニット30_00〜30_03各々は、活性レベル(以下、例としてHレベルとする)の選択信号Sel_A<0>がカラムコーディング回路103から供給されると、自身に接続される1本のIO線とData Bus(第2のデータバス;後述するデータバスData_A<7:0>)とを接続する。これにより、図4(a)に示すように、4本のIO線からデータバスData_A<3:0>へ、4ビットの読み出しデータData_Out_A<0>〜Data_Out_A<3>が読み出される。
また、PBユニット30_00〜30_03各々は、活性レベル(以下、例としてHレベルとする)の選択信号Sel_B<0>がECCカラムコーディング回路108から供給されると、自身に接続される1本のIO線とECC Bus(第1のデータバス;後述するデータバスData_B<19:0>)とを接続する。これにより、図4(a)に示すように、4本のIO線からデータバスData_B<3:0>へ、4ビットの読み出しデータData_Out_B<0>〜Data_Out_B<3>が読み出される。
図4(b)を参照して、図4(a)に示すPBユニット各々は、回路構成が同一である8個のビット回路51_0a〜51_7aと、マルチプレクサ52_bと、本願に特徴的部分であるPB Control Cirucuit(ページバッファ制御回路)60とから構成される。
MUX(マルチプレクサ)52_bは、図1に示すカラムコーディング回路103またはECCカラムコーディング回路108からカラムアドレス信号(Sub BL Coding)が入力される。MUX(マルチプレクサ)52_bは、このカラムアドレス信号(図5において選択信号DIO<i>で示す)に基づいて、ビット回路51_0a〜ビット回路51_7aのうちいずれか一つを選択する。すなわち、マルチプレクサ52_bは、8本のビット線のうちのいずれか一本のビット線を、PB Control Circuit(PB制御回路)60と接続する。
MUX(マルチプレクサ)52_bは、図1に示すカラムコーディング回路103またはECCカラムコーディング回路108からカラムアドレス信号(Sub BL Coding)が入力される。MUX(マルチプレクサ)52_bは、このカラムアドレス信号(図5において選択信号DIO<i>で示す)に基づいて、ビット回路51_0a〜ビット回路51_7aのうちいずれか一つを選択する。すなわち、マルチプレクサ52_bは、8本のビット線のうちのいずれか一本のビット線を、PB Control Circuit(PB制御回路)60と接続する。
まず、図5、及び図7を参照して、1つのPBユニットの詳細な回路構成について説明する。
図7では、図5に示すビット内部回路50_0〜50_7各々の回路における、書き込み動作におけるデータのセンシング部、及びラッチ部、読み出し動作における信号線を駆動するドライバ部の構成を、具体的にトランジスタ、及びインバータ回路を用いて記載している。なお、図4(b)に示すビット回路51_0a〜51_7aとマルチプレクサ52_bとを合わせた回路が、ビット内部回路50_0〜50_7に相当する。すなわち、ビット内部回路は、選択信号DIOにより選択されるので、ビット回路とマルチプレクサ52_bの一部の機能を有している。
図7では、図5に示すビット内部回路50_0〜50_7各々の回路における、書き込み動作におけるデータのセンシング部、及びラッチ部、読み出し動作における信号線を駆動するドライバ部の構成を、具体的にトランジスタ、及びインバータ回路を用いて記載している。なお、図4(b)に示すビット回路51_0a〜51_7aとマルチプレクサ52_bとを合わせた回路が、ビット内部回路50_0〜50_7に相当する。すなわち、ビット内部回路は、選択信号DIOにより選択されるので、ビット回路とマルチプレクサ52_bの一部の機能を有している。
図7に示すように、ビット内部回路50_i(iを整数として、i=0〜7の8台は同一構成の回路である)は、インバータ回路511、インバータ回路512、トランジスタ513、トランジスタ514、トランジスタ515、トランジスタ521、及びトランジスタ522から構成される。ここで、トランジスタ513、トランジスタ514、トランジスタ515、トランジスタ521、及びトランジスタ522は、Nチャネル型MOS(Metal Oxide Semiconductor)トランジスタである。
ビット内部回路50_iにおいて、ラッチ部は、インバータ回路511とインバータ回路512とから構成されている。ここで、インバータ回路511は、出力端子が接続点N2においてインバータ回路512の入力端子に接続され、入力端子が接続点N1においてインバータ回路512の出力端子に接続されている。
この接続点N1は、不図示のメモリセルトランジスタにビット線を介して接続される。接続点N1は、読み出し動作において、メモリセルトランジスタが記憶するデータがData_iとして現れ、書き込み動作においてはメモリセルに書き込むべきデータがData_iとして現れる。例えば、メモリセルトランジスタがL(ロウ)レベル(データ0とする)を記憶するとき、Data_iの電位はLレベルとなり、一方、メモリセルトランジスタがH(ハイ)レベル(データ1とする)を記憶するとき、Data_iの電位はHレベルとなる。
この接続点N1は、不図示のメモリセルトランジスタにビット線を介して接続される。接続点N1は、読み出し動作において、メモリセルトランジスタが記憶するデータがData_iとして現れ、書き込み動作においてはメモリセルに書き込むべきデータがData_iとして現れる。例えば、メモリセルトランジスタがL(ロウ)レベル(データ0とする)を記憶するとき、Data_iの電位はLレベルとなり、一方、メモリセルトランジスタがH(ハイ)レベル(データ1とする)を記憶するとき、Data_iの電位はHレベルとなる。
ビット内部回路50_iにおいて、ドライバ部は、トランジスタ515、及びトランジスタ522から構成される。
トランジスタ522は、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号DIO<i>の配線に接続され、ソースがトランジスタ515のドレインに接続されている。
トランジスタ515は、ドレインがトランジスタ522のソースに接続され、ゲートが接続点N2に接続され、ソースが接地されている。
ここで、選択信号DIO<i>(i=0〜7)は、図4(b)に示すSub BL Codingである。例えば、カラムコーディング回路103は不図示のアドレス制御回路から入力される3ビットのアドレス信号に基づいて、或いはECCカラムコーディング回路108はECC回路107から入力される3ビットのアドレス信号に基づいて、選択信号DIO<i>のうちの1つの信号をHレベルとする。これにより、図5に示すビット内部回路50_0〜50_7の1つのビット内部回路が選択される。
トランジスタ522は、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号DIO<i>の配線に接続され、ソースがトランジスタ515のドレインに接続されている。
トランジスタ515は、ドレインがトランジスタ522のソースに接続され、ゲートが接続点N2に接続され、ソースが接地されている。
ここで、選択信号DIO<i>(i=0〜7)は、図4(b)に示すSub BL Codingである。例えば、カラムコーディング回路103は不図示のアドレス制御回路から入力される3ビットのアドレス信号に基づいて、或いはECCカラムコーディング回路108はECC回路107から入力される3ビットのアドレス信号に基づいて、選択信号DIO<i>のうちの1つの信号をHレベルとする。これにより、図5に示すビット内部回路50_0〜50_7の1つのビット内部回路が選択される。
以上の構成により、メモリセルトランジスタからのデータ読み出し動作において、選択信号DIO<i>がHレベルになると、読み出し信号RDの論理レベルはData_iの論理レベルと同じ論理レベルとなる。つまり、例えば読み出し信号RDをHレベルにプリチャージしておくことにより、Data_iがHレベルのときは、トランジスタ515がオフ(非導通状態)、トランジスタ522がオン(導通状態)であり、ビット内部回路50_iは、読み出し信号RDをHレベルに維持する。一方、Data_iがLレベルのときは、トランジスタ515がオン、トランジスタ522がオンであり、ビット内部回路50_iは、読み出し信号RDをHレベルからLレベルに変化させる。
読み出し信号RDの配線は、図5に示すように、PB制御回路60に接続される。
第1の動作モード(ECCモード)では、選択信号Sel_B(ECCカラムコーディング回路108が出力するカラムアドレス)が入力されると、読み出し信号RDの配線はECC Busに接続される。これにより、ECC Busには、ビット内部回路50_iのData_iがデータ読み出し信号Data_Out_Bとして読み出される。
読み出し信号RDの配線は、図5に示すように、PB制御回路60に接続される。
第1の動作モード(ECCモード)では、選択信号Sel_B(ECCカラムコーディング回路108が出力するカラムアドレス)が入力されると、読み出し信号RDの配線はECC Busに接続される。これにより、ECC Busには、ビット内部回路50_iのData_iがデータ読み出し信号Data_Out_Bとして読み出される。
一方、第2の動作モード(通常モード)では、選択信号Sel_A(カラムコーディング回路103が出力するカラムアドレス)が入力されると、読み出し信号RDの配線は、Data Busに接続される。これにより、Data Busには、ビット内部回路50_iのData_iがデータ読み出し信号Data_Out_Aとして読み出される。
図7に戻って、ビット内部回路50_iにおいて、センシング部は、トランジスタ513、トランジスタ514、トランジスタ521から構成される。
トランジスタ513は、ドレインが接続点N1に接続され、ゲートが書き込み信号DIの配線に接続され、ソースがトランジスタ521のドレインに接続されている。
トランジスタ514は、ドレインが接続点N2に接続され、ゲートが書き込み信号nDIの配線に接続され、ソースがトランジスタ521のドレインに接続されている。
トランジスタ521は、ドレインがトランジスタ513のソース、及びトランジスタ514のソースに接続され、ゲートが選択信号DIO<i>の配線に接続され、ソースが接地されている。
トランジスタ513は、ドレインが接続点N1に接続され、ゲートが書き込み信号DIの配線に接続され、ソースがトランジスタ521のドレインに接続されている。
トランジスタ514は、ドレインが接続点N2に接続され、ゲートが書き込み信号nDIの配線に接続され、ソースがトランジスタ521のドレインに接続されている。
トランジスタ521は、ドレインがトランジスタ513のソース、及びトランジスタ514のソースに接続され、ゲートが選択信号DIO<i>の配線に接続され、ソースが接地されている。
書き込み信号DI、及び書き込み信号nDIの配線は、図5に示すように、PB制御回路60に接続される。後述するように、第1の動作モードでは選択信号Sel_BによりデータバスECC Busに接続され、ECC Busからデータ書き込み信号Data_In_Bが入力される。これにより、PB制御回路60では、このデータ書き込み信号Data_In_Bのレベルに応じて書き込み信号DI、及び書き込み信号nDIのいずれか一方をLレベルからHレベルに変化させ、他方をLレベルに維持する。
一方、第2の動作モードでは、選択信号Sel_AによりData Busに接続され、Data Busからデータ書き込み信号Data_In_Aが入力される。これにより、PB制御回路60は、このデータ書き込み信号Data_In_Aのレベルに応じて書き込み信号DI、及び書き込み信号nDIのいずれか一方をLレベルからHレベルに変化させ、他方をLレベルに維持する。
一方、第2の動作モードでは、選択信号Sel_AによりData Busに接続され、Data Busからデータ書き込み信号Data_In_Aが入力される。これにより、PB制御回路60は、このデータ書き込み信号Data_In_Aのレベルに応じて書き込み信号DI、及び書き込み信号nDIのいずれか一方をLレベルからHレベルに変化させ、他方をLレベルに維持する。
以上の構成により、メモリセルトランジスタへのデータ書き込み動作において、選択信号DIO<i>がHレベルになると、書き込み信号DI、及び書き込み信号nDIのレベルに応じて、ビット内部回路50_iのData_iのレベルが決定する。具体的には、データ書き込み信号Data_In_A,またはデータ書き込み信号Data_In_BがLレベル(データ0)のとき、PB制御回路60は、書き込み信号DIをHレベル、書き込み信号nDIをLレベルとする。これにより、ビット内部回路50_iでは、トランジスタ513がオンし、トランジスタ514がオフする。そして、接続点N1はLレベル、接続点N2はHレベルとなり、Data_iの論理は、データバスの論理と同じくLレベル(データ0)となる。
一方、データ書き込み信号Data_In_A,またはデータ書き込み信号Data_In_BがHレベル(データ1)のとき、PB制御回路60は、書き込み信号DIをLレベル、書き込み信号nDIをHレベルとする。これにより、ビット内部回路50_iでは、トランジスタ513がオフし、トランジスタ514がオンする。そして、接続点N1はHレベル、接続点N2はLレベルとなり、Data_iの論理は、データバスの論理と同じくHレベル(データ1)となる。
図7に戻って、PB制御回路60(転送部)の構成を説明する。
PB制御回路60は、データバスからページバッファへのデータ転送を実行する書き込み部と、ページバッファからデータバスへのデータ転送を実行する読み出し部とからなる。
このうち、PB制御回路60の読み出し部は、トランジスタ61a、及びトランジスタ61bから構成される。
トランジスタ61a、及びトランジスタ61bは、NMOSトランジスタである。
トランジスタ61aは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Aの配線に接続され、ソースがData Bus(第2のデータバス)に接続されている。トランジスタ61bは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Bの配線に接続され、ソースがECC Bus(第1のデータバス)に接続されている。
PB制御回路60は、データバスからページバッファへのデータ転送を実行する書き込み部と、ページバッファからデータバスへのデータ転送を実行する読み出し部とからなる。
このうち、PB制御回路60の読み出し部は、トランジスタ61a、及びトランジスタ61bから構成される。
トランジスタ61a、及びトランジスタ61bは、NMOSトランジスタである。
トランジスタ61aは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Aの配線に接続され、ソースがData Bus(第2のデータバス)に接続されている。トランジスタ61bは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Bの配線に接続され、ソースがECC Bus(第1のデータバス)に接続されている。
ここで、選択信号Sel_Aは、カラムコーディング回路103が、図1において不図示のアドレス制御回路から入力されるAddress A、例えば複数ビットのアドレスに基づいて生成するカラムアドレス信号である。また、選択信号Sel_Bは、ECCカラムコーディング回路108が、図1に示すECC回路107から入力されるAddress B、例えば上記複数ビットのうちの一部のビットのアドレスに基づいて生成するカラムアドレス信号である。
このように、PB制御回路60の読み出し部は、ECCモード(第1の動作モード)のデータ読み出し時において、Hレベルの選択信号Sel_BがECCコーディング回路108から入力されると、トランジスタ61bをオンさせて読み出し信号RDの配線とECC Busとを接続する。これにより、ビット内部回路50_0〜50_7に格納されたメモリセルトランジスタのデータ(ビット内部回路ではData_i)が、ECC Busにデータ読み出し信号Data_Out_Bとして出力される。
また、PB制御回路60の読み出し部は、通常モード(第2の動作モード)のデータ読み出し時において、Hレベルの選択信号Sel_Aがコーディング回路103から入力される。PB制御回路60の読み出し部は、トランジスタ61aをオンさせて読み出し信号RDの配線とData Busとを接続する。これにより、ビット内部回路50_0〜50_7に格納されたメモリセルトランジスタのデータが、Data Busにデータ読み出し信号Data_Out_Aとして出力される。
また、PB制御回路60の読み出し部は、ページバッファ102a、及びページバッファ102cにおいて、メモリセルトランジスタ、またはメモリセルトランジスタに接続されるビット線に不良がある場合、次の構成を有している。すなわち、ECCモードのデータ読み出し時において、ECC回路107に入力するデータが固定データ(この場合はデータ0に固定する)となるように、PB制御回路60の読み出し部は、図5に示すように、不良情報格納部90a、及びデータ固定部90bを有している。
不良情報格納部90aは、インバータ回路92、インバータ回路93、トランジスタ94、トランジスタ95、及びトランジスタ96から構成される。ここで、トランジスタ94、トランジスタ95、及びトランジスタ96は、Nチャネル型MOSトランジスタである。
不良情報格納部90aにおいて、ラッチ部は、インバータ回路92とインバータ回路93とから構成されている。ここで、インバータ回路92は、出力端子が接続点N4においてインバータ回路93の入力端子に接続され、入力端子が接続点N3においてインバータ回路93の出力端子に接続されている。
この接続点N3は、アンド回路91の第1入力端子に接続される。接続点N3は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号PB_Defcetとして現れる。また、接続点N4は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号nPB_Defcetとして現れる。
不良情報格納部90aにおいて、ラッチ部は、インバータ回路92とインバータ回路93とから構成されている。ここで、インバータ回路92は、出力端子が接続点N4においてインバータ回路93の入力端子に接続され、入力端子が接続点N3においてインバータ回路93の出力端子に接続されている。
この接続点N3は、アンド回路91の第1入力端子に接続される。接続点N3は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号PB_Defcetとして現れる。また、接続点N4は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号nPB_Defcetとして現れる。
不良情報格納部90aにおいて、センシング部は、トランジスタ94、トランジスタ95、トランジスタ96から構成される。
トランジスタ94は、ドレインが接続点N3に接続され、ゲートが不良情報信号SDIの配線に接続され、ソースがトランジスタ96のドレインに接続されている。
トランジスタ95は、ドレインが接続点N4に接続され、ゲートが不良情報信号nSDIの配線に接続され、ソースがトランジスタ96のドレインに接続されている。
トランジスタ96は、ドレインがトランジスタ94のソース、及びトランジスタ95のソースに接続され、ゲートがパワーオンリセット信号POR_Modeの配線に接続され、ソースが接地されている。
トランジスタ94は、ドレインが接続点N3に接続され、ゲートが不良情報信号SDIの配線に接続され、ソースがトランジスタ96のドレインに接続されている。
トランジスタ95は、ドレインが接続点N4に接続され、ゲートが不良情報信号nSDIの配線に接続され、ソースがトランジスタ96のドレインに接続されている。
トランジスタ96は、ドレインがトランジスタ94のソース、及びトランジスタ95のソースに接続され、ゲートがパワーオンリセット信号POR_Modeの配線に接続され、ソースが接地されている。
ここで、不良情報信号SDI、及び不良情報信号nSDIは、PB制御回路60に接続されるビット線、当該ビット線に接続されるメモリセルトランジスタに不良が有るか否かを示す信号である。これらの不良情報信号は、製造後のテストにおいて、PB制御回路60に接続されるビット線等に不良が有る場合、不良情報信号SDIがデータ0(Lレベル)、不良情報信号nSDIがデータ1(Hレベル)とされる。一方、PB制御回路60に接続されるビット線等に不良がない場合、不良情報信号SDIがHレベル、不良情報信号nSDIがLレベルとされる。そして、これらの不良情報信号は、テスト後の製品出荷前において、PB制御回路60の位置を示す選択信号Sel_Bに関連付けられて、NAND型フラッシュメモリ10の例えばシステム用記憶領域に格納される。
また、パワーオンリセット信号POR_Modeは、NAND型フラッシュメモリ10の電源投入後の所定期間(不良情報信号をシステム用記憶領域からPB制御回路60に転送する期間)、Hレベルを維持する信号である。
また、パワーオンリセット信号POR_Modeは、NAND型フラッシュメモリ10の電源投入後の所定期間(不良情報信号をシステム用記憶領域からPB制御回路60に転送する期間)、Hレベルを維持する信号である。
以上の構成により、不良情報格納部90aは、NAND型フラッシュメモリ10の電源投入後に、PB制御回路60に接続されるビット線等に不良が有る場合、パワーオンリセット信号POR_ModeがHレベルとなることにより、トランジスタ94がオフ、トランジスタ95がオンする。これにより、ノードN3がHレベル、ノードN4がLレベルとなり、欠陥信号PB_DefcetがHレベルとなる。そして、不良情報格納部90aは、転送期間終了後、パワーオンリセット信号POR_ModeがLレベルとなることにより、以降のNAND型フラッシュメモリ10に電源が投入されている期間、欠陥信号PB_DefcetをHレベルに維持する。
また、不良情報格納部90aは、NAND型フラッシュメモリ10の電源投入後に、PB制御回路60に接続されるビット線等に不良がない場合、パワーオンリセット信号POR_ModeがHレベルとなることにより、トランジスタ94がオン、トランジスタ95がオフする。これにより、ノードN3がLレベル、ノードN4がHレベルとなり、欠陥信号PB_DefcetがLレベルとなる。そして、不良情報格納部90aは、転送期間終了後、パワーオンリセット信号POR_ModeがLレベルとなることにより、以降のNAND型フラッシュメモリ10に電源が投入されている期間、欠陥信号PB_DefcetをLレベルに維持する。
また、データ固定部90bは、アンド回路91、トランジスタ61cを有している。ここで、トランジスタ61cは、NMOSトランジスタである。
アンド回路91は、2入力1出力の論理積回路であり、第1入力端子が接続点N3に接続され、第2入力端子が選択信号Sel_Aの配線に接続され、出力端子は、トランジスタ61cのゲートに接続される。
トランジスタ61cは、ドレインが読み出し信号RDの配線に接続され、ゲートがアンド回路91の出力端子に接続され、ソースが接地されている。
アンド回路91は、2入力1出力の論理積回路であり、第1入力端子が接続点N3に接続され、第2入力端子が選択信号Sel_Aの配線に接続され、出力端子は、トランジスタ61cのゲートに接続される。
トランジスタ61cは、ドレインが読み出し信号RDの配線に接続され、ゲートがアンド回路91の出力端子に接続され、ソースが接地されている。
以上の構成により、PB制御回路60に接続されるビット線等に不良がない場合、データ固定部90bは、欠陥信号PB_DefcetがLレベルであるから、アンド回路91の出力信号は常にLレベルであり、トランジスタ61cはオフする。このため、データ固定部90bは実質何の動作も行わない。
一方、PB制御回路60に接続されるビット線等に不良が有る場合、欠陥信号PB_DefcetがHレベルとなっている。ECC使用時、すなわちECCモードではアンド回路91にHレベルの選択信号Sel_Bが入力されると、アンド回路91の出力信号がHレベルとなり、トランジスタ61cがオンするので、ECC Bus_1は接地され、読み出しデータData_Out_BはLレベル(GNDレベル)に固定される。つまり、PB制御回路60に接続されるビット線等に不良がある場合、ECCモードではPB制御回路は、ECC Bus_1に固定レベル(Lレベル)の読み出しデータData_Out_Bを出力するデータ固定回路として動作する。
一方、PB制御回路60に接続されるビット線等に不良が有る場合、欠陥信号PB_DefcetがHレベルとなっている。ECC使用時、すなわちECCモードではアンド回路91にHレベルの選択信号Sel_Bが入力されると、アンド回路91の出力信号がHレベルとなり、トランジスタ61cがオンするので、ECC Bus_1は接地され、読み出しデータData_Out_BはLレベル(GNDレベル)に固定される。つまり、PB制御回路60に接続されるビット線等に不良がある場合、ECCモードではPB制御回路は、ECC Bus_1に固定レベル(Lレベル)の読み出しデータData_Out_Bを出力するデータ固定回路として動作する。
なお、通常モードでのデータ読み出し時は、PB制御回路60は選択信号Sel_Aで選択されるので、アンド回路91の出力はLレベルとなり、この追加回路であるデータ固定部90bは実質動作しないことになる。もっとも、このアンド回路91を使用せず、欠陥信号PB_Defectを直接トランジスタ91cのゲートに入力すれば、PB制御回路60に接続されるビット線等に不良が有る場合、読み出し信号RDはLレベルに固定される。つまり、PB制御回路60は、通常モードで選択信号Sel_Aが入力されると、Data Bus_1に固定レベル(Lレベル)の読み出しデータData_Out_Aを出力し、ECCモードで選択信号Sel_Bが入力されると、Lレベルの読み出しデータData_Out_Bを出力するデータ固定回路として動作する。
なお、図5に示す不良情報格納部90a、及びデータ固定部90bの構成は、図6に示す構成であってもよい。図6は、PB ユニットの内部の他の回路構成を示す図である。
なお、図6において図5と同一の部分には同一の符号を付し、その説明を省略する。
図6において、不良情報格納部90aついては図5に示すものと同じ構成だが、データ固定部90bについては、データ固定部90b’としている。なお、不良情報格納部90aついて、接続点N4に現れる信号を欠陥信号nPB_Defectとしている。
データ固定部90b’は、トランジスタ61cのみから構成される。トランジスタ61cは、ソースがECC Bus(第1のデータバス)に接続されている。また、これにより、トランジスタ61bは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Bの配線に接続され、ソースがトランジスタ61cのドレインに接続されている。
なお、図6において図5と同一の部分には同一の符号を付し、その説明を省略する。
図6において、不良情報格納部90aついては図5に示すものと同じ構成だが、データ固定部90bについては、データ固定部90b’としている。なお、不良情報格納部90aついて、接続点N4に現れる信号を欠陥信号nPB_Defectとしている。
データ固定部90b’は、トランジスタ61cのみから構成される。トランジスタ61cは、ソースがECC Bus(第1のデータバス)に接続されている。また、これにより、トランジスタ61bは、ドレインが読み出し信号RDの配線に接続され、ゲートが選択信号Sel_Bの配線に接続され、ソースがトランジスタ61cのドレインに接続されている。
この構成により、PB制御回路60に接続されるビット線等に不良が有る場合、欠陥信号nPB_DefectがLレベルとなるので、トランジスタ61cがオフとなり、読み出し信号RDのECC Bus_1への伝送パスが断たれることになる。このため、読み出しデータData_Out_Bは、Pull Up回路によりHレベルに固定される。一方、PB制御回路60に接続されるビット線等に不良がない場合、欠陥信号nPB_DefectはHレベルとなり、トランジスタ61cが常時オンとなる。これにより、読み出し信号RD、つまりメモリセルトランジスタのデータを、ECC Bus_1へ読み出しデータData_Out_Bとして読み出すことができる。
データ固定部90b’は、図6に示すデータ固定部90bと比較して、読み出し信号RDの配線とECC Bus_1との間で、トランジスタ61bとトランジスタ61cとが
直列回路となるが、アンド回路を不要とできるメリットがある。
データ固定部90b’は、図6に示すデータ固定部90bと比較して、読み出し信号RDの配線とECC Bus_1との間で、トランジスタ61bとトランジスタ61cとが
直列回路となるが、アンド回路を不要とできるメリットがある。
また、図6に示すデータ固定部90b’において、例えばトランジスタ61cを、読み出し信号RDの配線とトランジスタ61a、及びトランジスタ61bのドレインとの間、すなわち読み出し信号RDの配線とPB制御回路60との間に挿入する。このようにすれば、PB制御回路60は、通常モードで選択信号Sel_Aが入力されると、Data Bus_1に固定レベル(Hレベル)の読み出しデータData_Out_Aを出力する。一方、PB制御回路60は、ECCモードで選択信号Sel_Bが入力されると、Hレベルの読み出しデータData_Out_Bを出力するデータ固定回路として動作する。
以上のような回路構成により、PB制御回路60に接続されるビット線等に不良が有る場合、データData_Out_AまたはBデータData_Out_BをLレベルまたはHレベルの固定値とすることができる。
以上のような回路構成により、PB制御回路60に接続されるビット線等に不良が有る場合、データData_Out_AまたはBデータData_Out_BをLレベルまたはHレベルの固定値とすることができる。
図5に戻って、PB制御回路60の書き込み部は、インバータ回路62、インバータ回路63、ナンド回路64、ナンド回路65、オア回路66、インバータ回路67、スイッチ68、及びスイッチ69から構成される。
インバータ回路62は、論理反転回路であり、出力端子が書き込み信号DIの配線に接続され、入力端子がナンド回路64の出力端子に接続される。インバータ回路63は、論理反転回路であり、出力端子が書き込み信号nDIの配線に接続され、入力端子がナンド回路65の出力端子に接続される。
インバータ回路62は、論理反転回路であり、出力端子が書き込み信号DIの配線に接続され、入力端子がナンド回路64の出力端子に接続される。インバータ回路63は、論理反転回路であり、出力端子が書き込み信号nDIの配線に接続され、入力端子がナンド回路65の出力端子に接続される。
ナンド回路64は、3入力1出力の否定的論理積回路であり、第1入力端子が書き込みイネーブル信号fDinEnableの配線に接続され、第2入力端子がオア回路66の出力端子に接続され、第3入力端子がインバータ回路67の出力端子に接続される。また、ナンド回路64の出力端子は、インバータ回路62の入力端子に接続される。
ナンド回路65は、3入力1出力の否定的論理積回路であり、第1入力端子が書き込みイネーブル信号fDinEnableの配線に接続され、第2入力端子がオア回路66の出力端子に接続され、第3入力端子がスイッチ68の第1入出力端子、及びスイッチ69の第1入出力端子に接続される。また、ナンド回路65の出力端子は、インバータ回路63の入力端子に接続される。
ナンド回路65は、3入力1出力の否定的論理積回路であり、第1入力端子が書き込みイネーブル信号fDinEnableの配線に接続され、第2入力端子がオア回路66の出力端子に接続され、第3入力端子がスイッチ68の第1入出力端子、及びスイッチ69の第1入出力端子に接続される。また、ナンド回路65の出力端子は、インバータ回路63の入力端子に接続される。
オア回路66は、2入力1出力の論理和回路であり、第1入力端子がアンド回路71の出力に接続され、第2入力端子が選択信号Sel_Aの配線に接続される。また、オア回路66の出力端子は、ナンド回路64の第2入力端子、及びナンド回路65の第2入力端子に接続される。アンド回路71は、選択信号Sel_Bと欠陥信号nPB_Defectとの論理積を演算する。これにより、欠陥信号nPB_DefectがHレベルの場合(不良でない場合)は、選択信号Sel_BがHレベルになることにより、ナンド回路65の第2入力端子がHレベルとなり、書き込みの条件の1つを満たすことができる。一方、欠陥信号nPB_DefectがLレベルの場合(不良ページバッファである)は選択信号Sel_Bの動作モードにおいて、ナンド回路65の第2入力端子がHレベルになることはなく、書き込みが行われなくなる。
インバータ回路67は、論理反転回路であり、入力端子がスイッチ68の第1入出力端子、及びスイッチ69の第1入出力端子に接続され、出力端子がナンド回路64の第3入力端子に接続される。
インバータ回路67は、論理反転回路であり、入力端子がスイッチ68の第1入出力端子、及びスイッチ69の第1入出力端子に接続され、出力端子がナンド回路64の第3入力端子に接続される。
スイッチ68は、双方向に信号を伝達するスイッチであり、第1入出力端子がインバータ回路67の入力端子、及びナンド回路65の第3入力端子に接続され、第2入出力端子がData Busに接続される。
スイッチ69は、双方向に信号を伝達するスイッチであり、第1入出力端子がインバータ回路67の入力端子、及びナンド回路65の第3入力端子に接続され、第2入出力端子がECC Busに接続される。なお、上記双方向スイッチがどちらも非選択の場合にインバータ回路67の入力が不定にならないように、インバータ回路67の入力がPMOSトランジスタによりPull Up(プルアップ)処理される。
スイッチ69は、双方向に信号を伝達するスイッチであり、第1入出力端子がインバータ回路67の入力端子、及びナンド回路65の第3入力端子に接続され、第2入出力端子がECC Busに接続される。なお、上記双方向スイッチがどちらも非選択の場合にインバータ回路67の入力が不定にならないように、インバータ回路67の入力がPMOSトランジスタによりPull Up(プルアップ)処理される。
以上の構成により、PB制御回路60の書き込み部は、ECCモード(第1の動作モード)のデータ書き込み時において、書き込みイネーブル信号fDinEnableがHレベルに、選択信号Sel_BがHレベルになると、スイッチ69がオンする。これにより、PB制御回路60の書き込み部は、ECC Busから入力されるデータ書き込み信号Data_In_Bのレベルに応じて、書き込み信号DI、及び書き込み信号nDIのいずれか一方をLレベルからHレベルに変化させる。具体的には、データ書き込み信号Data_In_BがLレベル(データ0)のとき、書き込み信号DIをHレベルに変化させる。これにより、ビット内部回路50_0〜50_7のうち、いずれか1つのビット内部回路のData_iが、Lレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ0が書き込まれる。
一方、データ書き込み信号Data_In_BがHレベル(データ1)のとき、書き込み信号nDIをHレベルに変化させる。これにより、ビット内部回路50_0〜50_7のうち、いずれか1つのビット内部回路のData_iが、Hレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ1が書き込まれる。
また、PB制御回路60の書き込み部は、通常モード(第2の動作モード)のデータ書き込み時において、書き込みイネーブル信号fDinEnableがHレベルに、選択信号Sel_AがHレベルになると、スイッチ68がオンする。これにより、PB制御回路60の書き込み部は、Data Busから入力されるデータ書き込み信号Data_In_Aのレベルに応じて、書き込み信号DI、及び書き込み信号nDIのいずれか一方をLレベルからHレベルに変化させる。具体的には、データ書き込み信号Data_In_AがLレベル(データ0)のとき、書き込み信号DIをHレベルに変化させる。これにより、ビット内部回路50_0〜50_7のうち、いずれか1つのビット内部回路のData_iが、Lレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ0が書き込まれる。
一方、データ書き込み信号Data_In_AがHレベル(データ1)のとき、書き込み信号nDIをHレベルに変化させる。これにより、ビット内部回路50_0〜50_7のうち、いずれか1つのビット内部回路のData_iが、Hレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ1が書き込まれる。
このように、PB制御回路60は、ページバッファ102のPBユニットを構成するビット内部回路50_0〜50_7のうち、選択信号DIO<i>により選択されたビット内部回路にビット線を介して接続されるメモリセルトランジスタと、データバス(第1のデータバス、および第2のデータバス)との間のデータ転送を制御する回路である。
また、上述した読み出し信号RDの配線、書き込み信号DIの配線、及び書き込み信号nDIの配線(IO線)は、PBユニットを構成するビット内部回路50_0〜50_7とPB制御回路60とを接続する配線であり、これらの配線はPBユニットのデータ転送用の入出力配線である。従って、本実施形態において、PB制御回路60は、ページバッファ102の入出力部と、第1、及び第2のデータバス(ECC Bus、Data Bus)との間で、書き込みデータ、及び読み出しデータを転送する。
図4(a)に戻って、以上のPB制御回路60の構成により、PB 4IOユニット30_0は次に説明する動作を実行する。
PB 4IO ユニット30_0は、Hレベルの選択信号Sel_A<0>がカラムコーディング回路103から入力されると、4本分のページバッファの入出力線(図5に示すデータ読み出し線RD;IO線IO_0〜IO_3とする)を、4ビット分のData Bus(ここではデータバスData_A<3:0>とする)にそれぞれ接続する。これにより、PB 4IO ユニット30_0は、データバスData_A<3:0>にデータ読み出し信号Data_Out_A<0>〜A<3>(以下、データ読み出し信号Data_Out_A<3:0>とする)を出力する。
PB 4IO ユニット30_0は、Hレベルの選択信号Sel_A<0>がカラムコーディング回路103から入力されると、4本分のページバッファの入出力線(図5に示すデータ読み出し線RD;IO線IO_0〜IO_3とする)を、4ビット分のData Bus(ここではデータバスData_A<3:0>とする)にそれぞれ接続する。これにより、PB 4IO ユニット30_0は、データバスData_A<3:0>にデータ読み出し信号Data_Out_A<0>〜A<3>(以下、データ読み出し信号Data_Out_A<3:0>とする)を出力する。
また、PB 4IO ユニット30_0は、Hレベルの選択信号Sel_B<0>がECCカラムコーディング回路108から入力されると、4本分のページバッファの入出力線IO線IO_0〜IO_3を、4ビット分のECC Bus(ここでは、データバスData_B<3:0>とする)にそれぞれ接続する。これにより、PB 4IO ユニット30_0は、データバスData_B<3:0>にデータ読み出し信号Data_Out_B<0>〜B<3>(以下、データ読み出し信号Data_Out_B<3:0>とする)を出力する。
図3に戻って、以上のPB 4IOユニット30_0の構成により、図3に示すデータ読み出し動作において、ページバッファ102、及びカラムコーディング回路103、及びECCカラムコーディング回路108(ここでは、データ読み出しモデルとする)は、次に説明する動作を実行する。
なお、図3に示すPB 4IOユニット30_1〜30_9に接続されるページバッファの入出力線(図5、及び図6に示すデータ読み出し線RD)を、これらのPB 4IOユニットの順番に、それぞれ次のように呼ぶ。すなわち、IO線IO_4〜IO_7、IO線IO_8〜IO_11、IO線IO_12〜IO_15、IO線IO_16〜IO_19、IO線IO_20〜IO_23、IO線IO_24〜IO_27、IO線IO_28〜IO_31、IO線IO_32〜IO_35、IO線IO_36〜IO_39とする。
また、Data Busは、8ビット幅のバスであり、これらをデータバスData_A<7:0>とする。また、ECC Busは、20ビット幅のバスであり、これらをデータバスData_B<19:0>とする。
なお、図3に示すPB 4IOユニット30_1〜30_9に接続されるページバッファの入出力線(図5、及び図6に示すデータ読み出し線RD)を、これらのPB 4IOユニットの順番に、それぞれ次のように呼ぶ。すなわち、IO線IO_4〜IO_7、IO線IO_8〜IO_11、IO線IO_12〜IO_15、IO線IO_16〜IO_19、IO線IO_20〜IO_23、IO線IO_24〜IO_27、IO線IO_28〜IO_31、IO線IO_32〜IO_35、IO線IO_36〜IO_39とする。
また、Data Busは、8ビット幅のバスであり、これらをデータバスData_A<7:0>とする。また、ECC Busは、20ビット幅のバスであり、これらをデータバスData_B<19:0>とする。
通常モード(第2の動作モード)では、カラムコーディング回路103は、選択信号Sel_A<0>〜Sel_A<4>の5つのカラムアドレスのうち1つのカラムアドレスをHレベル、残りの4つのカラムアドレスをLレベルに維持して、データ読み出しモデルに対して出力する。
例えば、通常モードにおいて、選択信号Sel_A<0>〜Sel_A<4>の順番に、選択信号を5回、データ読み出しモデルに与えると、次のようにIO線IO_0〜IO_39の40ビットのデータがデータバスData_A<7:0>に順次読み出される。
例えば、通常モードにおいて、選択信号Sel_A<0>〜Sel_A<4>の順番に、選択信号を5回、データ読み出しモデルに与えると、次のようにIO線IO_0〜IO_39の40ビットのデータがデータバスData_A<7:0>に順次読み出される。
選択信号Sel_A<0>がHレベルになると、PB 4IOユニット30_0、及びPB 4IOユニット30_1は、それぞれのPB制御回路60におけるトランジスタ61aがオンし、IO線IO_0〜IO_7とデータバスData_A<7:0>とを接続する。これにより、PB 4IOユニット30_0、及びPB 4IOユニット30_1は、データバスData_A<7:0>に、読み出しデータData_Out_A<7:0>(IO線IO_0〜IO_7のデータ)を出力する。
次に、選択信号Sel_A<1>がHレベルになると、PB 4IOユニット30_2、及びPB 4IOユニット30_3は、それぞれのPB制御回路60におけるトランジスタ61aがオンし、IO線IO_8〜IO_15とデータバスData_A<7:0>とを接続する。これにより、PB 4IOユニット30_2、及びPB 4IOユニット30_3は、データバスData_A<7:0>に、読み出しデータData_Out_A<7:0>(IO線IO_8〜IO_15のデータ)を出力する。
次に、選択信号Sel_A<2>がHレベルになると、PB 4IOユニット30_4、及びPB 4IOユニット30_5は、それぞれのPB制御回路60におけるトランジスタ61aがオンし、IO線IO_16〜IO_23とデータバスData_A<7:0>とを接続する。これにより、PB 4IOユニット30_4、及びPB 4IOユニット30_5は、データバスData_A<7:0>に、読み出しデータData_Out_A<7:0>(IO線IO_16〜IO_23のデータ)を出力する。
次に、選択信号Sel_A<3>がHレベルになると、PB 4IOユニット30_6、及びPB 4IOユニット30_7は、それぞれのPB制御回路60におけるトランジスタ61aがオンし、IO線IO_24〜IO_31とデータバスData_A<7:0>とを接続する。これにより、PB 4IOユニット30_6、及びPB 4IOユニット30_7は、データバスData_A<7:0>に、読み出しデータData_Out_A<7:0>(IO線IO_24〜IO_31のデータ)を出力する。
最後に、選択信号Sel_A<4>がHレベルになると、PB 4IOユニット30_8、及びPB 4IOユニット30_9は、それぞれのPB制御回路60におけるトランジスタ61aがオンし、IO線IO_32〜IO_39とデータバスData_A<7:0>とを接続する。これにより、PB 4IOユニット30_8、及びPB 4IOユニット30_9は、データバスData_A<7:0>に、読み出しデータData_Out_A<7:0>(IO線IO_32〜IO_39のデータ)を出力する。
このようにして、選択信号Sel_Aを5回、データ読み出しモデルに供給すると、PB 4IOユニット30_0〜30_9は、PB制御回路60により、IO線IO_0〜IO_39を8本ずつ、データバスData_A<7:0>に接続する。これにより、合計40ビットのメモリセルトランジスタの記憶するデータを、ビット線、及びIO線IO_0〜IO_39を介してData Busに読み出すことができる。
また、ECCモード(第1の動作モード)では、ECCカラムコーディング回路108は、選択信号Sel_B<0>〜Sel_B<1>の2つのカラムアドレスのうち1つのカラムアドレスをHレベル、残りの1つのカラムアドレスをLレベルに維持して、データ読み出しモデルに対して出力する。
例えば、ECCモードにおいて、選択信号Sel_B<0>〜Sel_B<1>の順番に、選択信号を2回、データ読み出しモデルに与えると、次のようにIO線IO_0〜IO_39の40ビットのデータがデータバスData_B<19:0>に順次読み出される。
例えば、ECCモードにおいて、選択信号Sel_B<0>〜Sel_B<1>の順番に、選択信号を2回、データ読み出しモデルに与えると、次のようにIO線IO_0〜IO_39の40ビットのデータがデータバスData_B<19:0>に順次読み出される。
選択信号Sel_B<0>がHレベルになると、PB 4IOユニット30_0、30_2、30_4、30_6、及び30_8は、それぞれのPB制御回路60におけるトランジスタ61bがオンする。PB 4IOユニット30_0、30_2、30_4、30_6、及び30_8は、それぞれIO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35とデータバスData_B<19:0>とを接続する。これにより、PB 4IOユニット30_0、30_2、30_4、30_6、及び30_8は、データバスData_B<19:0>に、読み出しデータData_Out_B<19:0>(IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35のデータ)を出力する。
次に、選択信号Sel_B<1>がHレベルになると、PB 4IOユニット30_1、30_3、30_5、30_7、及び30_9は、それぞれのPB制御回路60におけるトランジスタ61aがオンする。PB 4IOユニット30_1、30_3、30_5、30_7、及び30_9は、それぞれIO線IO_4〜IO_7、IO_12〜IO_15、IO_20〜IO_23、IO_28〜IO_31、IO_36〜IO_39とデータバスData_B<19:0>とを接続する。これにより、PB 4IOユニット30_1、30_3、30_5、30_7、及び30_9は、データバスData_B<19:0>に、読み出しデータData_Out_B<19:0>(IO線IO_4〜IO_7、IO_12〜IO_15、IO_20〜IO_23、IO_28〜IO_31、IO_36〜IO_39のデータ)を出力する。
このようにして、選択信号Sel_Bを2回、データ読み出しモデルに供給すると、PB 4IOユニット30_0〜30_9は、PB制御回路60により、IO線IO_0〜IO_39を20本ずつ、データバスData_B<19:0>に接続する。これにより、合計40ビットのメモリセルトランジスタの記憶するデータを、ビット線、及びIO線IO_0〜IO_39を介してECC Busに読み出すことができる。
例えば、通常モードでは、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35のデータは、選択信号を5回与えなければ、Data Busに読み出すことができなかった。これに対して、ECCモードでは、選択信号を1回与えれば(選択信号Sel_B<0>を与えれば)、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35のデータを、ECC Busに読み出すことができる。
例えば、通常モードでは、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35のデータは、選択信号を5回与えなければ、Data Busに読み出すことができなかった。これに対して、ECCモードでは、選択信号を1回与えれば(選択信号Sel_B<0>を与えれば)、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35のデータを、ECC Busに読み出すことができる。
また、図8は、図1に示すページバッファ102、カラムコーディング回路103、及びECCカラムコーディング回路108に対応する部分のデータ書き込み動作を説明するための図である。
データ書き込み動作においても、PB 4IOユニット30_0の動作により、ページバッファ102、及びカラムコーディング回路103、及びECCカラムコーディング回路108(ここでは、データ書き込みモデルとする)は、データ書き込み動作を実行する。
データ書き込みモデルでは、データの転送を図3に示す方向と逆方向に処理を行なうだけであるので、詳細な説明は省略する。
データ書き込み動作においても、PB 4IOユニット30_0の動作により、ページバッファ102、及びカラムコーディング回路103、及びECCカラムコーディング回路108(ここでは、データ書き込みモデルとする)は、データ書き込み動作を実行する。
データ書き込みモデルでは、データの転送を図3に示す方向と逆方向に処理を行なうだけであるので、詳細な説明は省略する。
データ書き込みモデルでは、例えば、通常モードでは、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35へ与えるデータは、選択信号を5回与えなければ、Data Busから書き込むことができなかった。これに対して、ECCモードでは、選択信号を1回与えれば(選択信号Sel_B<0>を与えれば)、IO線IO_0〜IO_3、IO_8〜IO_11、IO_16〜IO_19、IO_24〜IO_27、IO_32〜IO_35へ与えるデータを、ECC Busから書き込むことができる。
このように、本実施形態のNAND型フラッシュメモリ10(半導体記憶装置)は、第1のデータバス(データバスData_B<19:0>)と、第1のデータバスと異なる本数から構成され、第1のデータバスとは独立して設けられる第2のデータバス(データバスData_A<7:0>)と、を備える。また、NAND型フラッシュメモリ10は、データ転送部(PB 4IOユニット30_0〜30_9各々におけるPB制御回路60)を備える。データ転送部は、第1の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第1のデータバスと同じ本数のビット線と、第1のデータバスとを接続してデータを転送する。一方、データ転送部は、第2の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第2のデータバスと同じ本数のビット線と、第2のデータバスと、を接続してデータを転送する。
また、ビット線を、n(nはpとqの公倍数であり、p、及びqはp>qである自然数)本のビット線とすると、次の構成となっている。すなわち、第1のデータバスはp本であり、第2のデータバスはq本であって、データ転送部は、第1の動作モードでは、(n/p)本のアドレス信号が入力されると、p本のビット線とp本の第1のデータバスとの接続を行い、一方、第2の動作モードでは、(n/q)本のアドレス信号が入力されると、q本ビット線と第2のデータバスとの接続を行う。
また、NAND型フラッシュメモリ10は、メモリアレイ101と、メモリアレイ101からページ単位でデータを読み出し、メモリアレイ101から読み出された読み出しデータを格納するページバッファ102を備える。また、NAND型フラッシュメモリ10は、ページバッファ102から転送された読み出しデータに対して誤りを訂正し、この訂正された読み出しデータをページバッファ102に書き戻すECC回路107(ECC部)と、ページバッファに書き戻された読み出しデータを出力するI/Oパッド106(インターフェース部)と、を備える。このECC Busは、ECC回路107に接続され、Data Busは、I/Oパッド106に接続される。
また、NAND型フラッシュメモリ10において、ページバッファ102は、I/Oパッド106に入力された書き込みデータを格納し、ECC回路107は、ページバッファから転送された書き込みデータに対してパリティデータを生成し、パリティデータ及び書き込みデータをページバッファに書き戻す。
これにより、ページバッファ102から複数のデータバス(本実施形態ではECC Bus、Data Bus)を用意し、それぞれについて独立したカラムコーディング(Column Coding)、すなわちアドレス制御を可能にすることができる。
本実施形態では、ページバッファ102の入出力線(上記例で言えばIO_0〜IO_39)から、すなわちページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としているところが特徴である。
そのため、本実施形態における半導体記憶装置では、以下に述べる特徴的な効果を奏することができる。
本実施形態では、ページバッファ102の入出力線(上記例で言えばIO_0〜IO_39)から、すなわちページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としているところが特徴である。
そのため、本実施形態における半導体記憶装置では、以下に述べる特徴的な効果を奏することができる。
(1)第1の動作モード(本実施形態ではECCモード)において、バス幅を広げ、高速化できる。
本実施形態の説明では、1回のカラムアドレス入力により、第2の動作モード(通常モード)では、Data Busに8ビットのデータを転送し、ECCモードでは20ビットのデータを転送する場合に説明した。このように、Address_Bの入力(選択信号Sel_BのPB制御回路60への入力)次第では、すなわちページバッファ102へのカラムコーディング次第では、簡単にバス幅を広げることができる。例えば、1024個のPBユニットでカラムアドレスを2アドレスとすれば、ECCモードではECC Busを512bitのバス幅に広げてデータ転送できる。
また、ページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としている。そのため、従来のように、Data Busの一部を共有してECC回路へデータ転送する場合に比べて、高速なデータ転送が可能になる。
特に、不良のPBユニットについては、PB制御回路60が固定データをECC Busを介してECC回路107へ転送するので、ECC処理においてカラム置換回路104で救済処理した後のデータをECC Busを介してECC回路107に転送する必要はなくなる。そのため、バス幅の拡大されたECC Busの径路にカラム置換回路104を配置する必要が無くなる。このため、カラム置換回路104での救済処理に要する時間だけ、ECC処理の際のページバッファからECC回路へのデータ転送の時間を短縮できる。また、ECC処理に際してData Bus(第2のデータバス)のバス幅を拡大する必要はないので、カラム置換回路104の回路規模の増大を抑制できる。
本実施形態の説明では、1回のカラムアドレス入力により、第2の動作モード(通常モード)では、Data Busに8ビットのデータを転送し、ECCモードでは20ビットのデータを転送する場合に説明した。このように、Address_Bの入力(選択信号Sel_BのPB制御回路60への入力)次第では、すなわちページバッファ102へのカラムコーディング次第では、簡単にバス幅を広げることができる。例えば、1024個のPBユニットでカラムアドレスを2アドレスとすれば、ECCモードではECC Busを512bitのバス幅に広げてデータ転送できる。
また、ページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としている。そのため、従来のように、Data Busの一部を共有してECC回路へデータ転送する場合に比べて、高速なデータ転送が可能になる。
特に、不良のPBユニットについては、PB制御回路60が固定データをECC Busを介してECC回路107へ転送するので、ECC処理においてカラム置換回路104で救済処理した後のデータをECC Busを介してECC回路107に転送する必要はなくなる。そのため、バス幅の拡大されたECC Busの径路にカラム置換回路104を配置する必要が無くなる。このため、カラム置換回路104での救済処理に要する時間だけ、ECC処理の際のページバッファからECC回路へのデータ転送の時間を短縮できる。また、ECC処理に際してData Bus(第2のデータバス)のバス幅を拡大する必要はないので、カラム置換回路104の回路規模の増大を抑制できる。
(2)アドレス制御、アドレスマップの自由度の向上
本実施形態の説明では、通常モードにおいて、1つのカラムアドレスで8ビットのデータ転送する際、例えばPB 4IOユニット30_0、と30_1に選択信号Sel_A<0>を供給して、IO線IO_0〜IO_7のデータをData Busに転送した。これに対して、ECCモードでは、PB 4IOユニット30_0、と30_1に選択信号Sel_B<0>、Sel_B<1>と別々のアドレスを割り当てて、全アドレスについて一括でECC回路にデータ転送をすることができる。例えば、通常データとパリティデータとが、通常モードにおいて選択信号Sel_Aの異なるアドレスに割り付けられていた場合であっても、ECCモードにおいて選択信号Sel_Bの同じアドレスに割り付けることができ、通常データとパリティデータを一括してECC回路に入力することができる。このように、第2の動作モードにおけるアドレス制御が第1の動作モードにおけるアドレス制御に対して独立性が非常に高く、アドレスマップの自由度を高くすることができる。
本実施形態の説明では、通常モードにおいて、1つのカラムアドレスで8ビットのデータ転送する際、例えばPB 4IOユニット30_0、と30_1に選択信号Sel_A<0>を供給して、IO線IO_0〜IO_7のデータをData Busに転送した。これに対して、ECCモードでは、PB 4IOユニット30_0、と30_1に選択信号Sel_B<0>、Sel_B<1>と別々のアドレスを割り当てて、全アドレスについて一括でECC回路にデータ転送をすることができる。例えば、通常データとパリティデータとが、通常モードにおいて選択信号Sel_Aの異なるアドレスに割り付けられていた場合であっても、ECCモードにおいて選択信号Sel_Bの同じアドレスに割り付けることができ、通常データとパリティデータを一括してECC回路に入力することができる。このように、第2の動作モードにおけるアドレス制御が第1の動作モードにおけるアドレス制御に対して独立性が非常に高く、アドレスマップの自由度を高くすることができる。
また、通常モードではカラムアドレスは選択信号Sel_A<0>〜Sel_A<4>の5つに対し、ECCモードではカラムアドレスは選択信号Sel_B<0>、Sel_B<1>の2つとなった。このことは、通常モードにおける規格(User Spec)では、カラムアドレスが2のn乗でない(所謂きりのよくない)値で定められていたとしても、ECCモードではアドレス空間を2のn乗などのきりのよい単位空間へ変換可能であることを意味している。
これにより、ECC回路107のコード構成、たとえばコード長をいくつにするか、積符号化する場合のコード長構成の最適化などの過程において、自由度をもって設計することができ、より最適なパフォーマンスを引き出すことができる。
これにより、ECC回路107のコード構成、たとえばコード長をいくつにするか、積符号化する場合のコード長構成の最適化などの過程において、自由度をもって設計することができ、より最適なパフォーマンスを引き出すことができる。
(3)設計変更の容易化
またECC回路を内蔵した製品を設計する場合、仮に当該製品の派生製品であってECC回路の内蔵が不要な製品を別途設計するような場合、データバス(ECCバス)、アドレス制御に係るカラムコーディング回路がECCモードと通常モードでは独立している。これにより、ECCモードに係る回路と通常モードに係る回路の切り分けが明確であるため、不要なECCモードに係る回路の削減が容易となり、設計変更が容易になる。
またECC回路を内蔵した製品を設計する場合、仮に当該製品の派生製品であってECC回路の内蔵が不要な製品を別途設計するような場合、データバス(ECCバス)、アドレス制御に係るカラムコーディング回路がECCモードと通常モードでは独立している。これにより、ECCモードに係る回路と通常モードに係る回路の切り分けが明確であるため、不要なECCモードに係る回路の削減が容易となり、設計変更が容易になる。
続いて、図1に示すNAND型フラッシュメモリの第1の動作モード、及び第2の動作モードでの動作について、ページバッファ102の概略構成、及び動作フローチャートを参照して説明する。図9は、ページバッファ102を構成する各ページバッファを説明するための図である。また、図10は、ページバッファ102の動作を説明するためのフローチャートである。
図9(a)には、ページバッファ102を構成するMain Data(通常データ)用のページバッファ102a、Column Repair for Main Data(通常データの置換データ)用のページバッファ102bを模式的に示している。また、図9(a)には、ECC Parity(パリティデータ)用のページバッファ102c、及びParity’s Column Repair(パリティデータの置換データ)用のページバッファ102dを模式的に示している。
図9(a)には、これらページバッファ102a〜102dを構成するPB ユニット(図5、及び図6に示すPB制御回路60、及びビット内部回路50_0〜50_7を単位とする回路)に番号を付して示している。この番号は、図4(b)に示すCodelinng、すなわちPB ユニットの位置を示す選択信号Sel_Aの番号である。
図9(a)には、ページバッファ102を構成するMain Data(通常データ)用のページバッファ102a、Column Repair for Main Data(通常データの置換データ)用のページバッファ102bを模式的に示している。また、図9(a)には、ECC Parity(パリティデータ)用のページバッファ102c、及びParity’s Column Repair(パリティデータの置換データ)用のページバッファ102dを模式的に示している。
図9(a)には、これらページバッファ102a〜102dを構成するPB ユニット(図5、及び図6に示すPB制御回路60、及びビット内部回路50_0〜50_7を単位とする回路)に番号を付して示している。この番号は、図4(b)に示すCodelinng、すなわちPB ユニットの位置を示す選択信号Sel_Aの番号である。
すなわち、ページバッファ102aは、通常データ用のPB ユニットとして、256個のPB ユニット0〜PB ユニット255を有し、ページバッファ102bは、通常データの置換用のPB ユニットとして8個のPB ユニット256〜PB ユニット263を有する。
また、ページバッファ102cは、パリティデータ用のPB ユニットとして、36個のPB ユニット264〜PB ユニット299を有し、ページバッファ102dは、パリティデータの置換用のPB ユニットとして8個のPB ユニット300〜PB ユニット307を有する。
また、ページバッファ102cは、パリティデータ用のPB ユニットとして、36個のPB ユニット264〜PB ユニット299を有し、ページバッファ102dは、パリティデータの置換用のPB ユニットとして8個のPB ユニット300〜PB ユニット307を有する。
また、ここでは、図9(b)に示す様に、ページバッファ102aのPB ユニット1に接続される8本のビット線、或いは当該8本のビット線に接続されるメモリセルトランジスタに不良があった場合に、ページバッファ102bのPB ユニット256に置換される例を示している。また、図9(b)では、ページバッファ102cのPB ユニット265に接続される8本ビット線、或いは当該8本のビット線に接続されるメモリセルトランジスタに不良があった場合に、ページバッファ102dのPB ユニット300に置換される例を示している。
なお、図9(b)において斜線を施して示しているページバッファ102bにおけるPB ユニット257〜263は使用されないので、これらはカラム置換回路104の制御によりカラムコーディング回路103が選択することはなく、すなわち不活性状態となっている。また、同じく図9(b)において斜線を施して示しているページバッファ102dにおけるPB ユニット301〜307は使用されないので、これらはパリティカラム置換回路105の制御によりECCカラムコーディング回路108が選択することはなく、すなわち不活性状態となっている。
なお、図9(b)において斜線を施して示しているページバッファ102bにおけるPB ユニット257〜263は使用されないので、これらはカラム置換回路104の制御によりカラムコーディング回路103が選択することはなく、すなわち不活性状態となっている。また、同じく図9(b)において斜線を施して示しているページバッファ102dにおけるPB ユニット301〜307は使用されないので、これらはパリティカラム置換回路105の制御によりECCカラムコーディング回路108が選択することはなく、すなわち不活性状態となっている。
また、ページバッファ102aにおけるPB ユニット1は、通常モードでは選択されず、置換先のPB ユニット256が選択信号Sel_Aにより選択される。これにより、読み出しデータData_Out_A(PB ユニット1から読み出すはずのデータ)が、Data Bus_1、Data Bus_2、及びData Bus_3(第2のデータバス)を介してI/Oパッド106から出力される。また、通常モードでは、書き込みデータがI/Oパッド106から入力されると、Data Bus_3、Data Bus_2、及びData Bus_1を介してPB ユニット255に、書き込みデータData_A_In(PB ユニット1に書き込むはずのデータ)として入力される。このように、ユーザがカラムアドレスを供給して使用できるページバッファの領域はページバッファ102aのPB ユニット0〜255までである。つまり、ページバッファ102bのPB ユニット256〜263、ページバッファ102cのPB ユニット264〜299、及びページバッファ102dのPB ユニット300〜307は、ユーザがアクセスすることのできないページバッファの領域である。
また、ページバッファ102aにおけるPB ユニット1は、ECCモードで選択信号Sel_Bにより選択され、LレベルまたはHレベルのいずれか一方に固定された読み出しデータData_Out_Bが、ECC Bus_1、及びECC Bus_2(第1のデータバス)を介してECC回路107まで転送され、ECC処理に用いられる。また、置換先のPB ユニット256も選択信号Sel_Bにより選択され、読み出しデータData_Out_Bが、ECC Bus_1、ECC Bus_2、及びECC Bus_3を介してECC回路107まで転送され、ユーザから見たPB ユニット1の読み出しデータとしてECC処理に用いられる。また、ECCモードでは、ECC処理が終了すると、PB ユニット1に書き戻すべきデータがECC Bus_3、ECC Bus_2、およびECC Bus_1(第1のデータバス)を介してPB ユニット255に、書き込みデータData_A_Inとして入力される。なお、これらのECC処理後のデータのうちPB ユニット0〜255のデータは、上述の様に、データバスData_Aを介して外部へ誤りのないデータ(Clear Data)として読み出される。
また、ページバッファ102aにおけるPB ユニット265は、ECCモードで選択信号Sel_Bにより選択され、LレベルまたはHレベルのいずれか一方に固定された読み出しデータData_Out_Bが、ECC Bus_1、及びECC Bus_2(データバスData_B)を介してパリティカラム置換回路105まで転送される。また、置換先のPB ユニット300も選択信号Sel_Bにより選択され、読み出しデータData_Out_Bが、ECC Bus_1、及びECC Bus_2を介してパリティカラム置換回路105まで転送され、置換処理が行われる。こうして、PB ユニット300の出力するデータが、PB ユニット265の読み出しデータとしてECC Bus_3を介してECC回路107に転送され、ECC処理に用いられる。また、ECCモードでは、ECC処理が終了すると、PB ユニット265に書き戻すべきデータがECC Bus_3を介してパリティカラム置換回路105まで転送され、置換処理した後、ECC Bus_2、およびECC Bus_1(第1のデータバス)を介してPB ユニット300に、書き込みデータData_B_Inとして入力される。なお、これらのECC処理後のデータは、上述の様に、データバスData_Aを介して外部へ読み出されることはない。
図10に示すフローチャートを参照して、メモリセルトランジスタへのデータ書き込み動作、メモリセルトランジスタからのデータ読み出し動作について説明する。なお、図10(a)はデータ書込み動作(Data In)、図10(b)は、データ読み出し動作(Data Out)を、それぞれ示している。また、図10(c)は、図2に示すランダマイザ、及びECC回路107におけるデータランダマイズ(Data Randomize)、及びエンコード(Encode)処理動作を示している。また、図10(d)は、ランダマイザ、及びECC回路107におけるデコード(Decode)、及びデータデランダマイズ(Data De−Randomize)処理動作を示している。なお、以下に説明する動作において、図10(c)に示すエンコード処理、及び図10(d)に示すデコード処理は、ECCモード(第1の動作モード)における第1のランダマイズ及びECC処理(欠陥ビットに関してECC回路により不良救済する処理)である。本実施形態のNAND型フラッシュメモリ10は、ECCモードにおいて、第1のランダマイズ及びECC処理と、第2のランダマイズ及びECC処理(欠陥ビットに関して誤りが発生しないように処理され、ECC処理の訂正処理能力を下げない処理)とを切り替えて実行することが可能である。第2のランダマイズ及びECC処理の構成、及び動作については後述することとする。ここでは、第1のランダマイズ及びECC処理を用いるものとして、また、救済置換処理を中心に、ページバッファ102のECCモードにおける動作の詳細について説明する。
[データ書き込み動作]
ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット1を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(ステップST1)。
次に、通常データの置換が実行される(ステップST2)。具体的には、カラム置換回路104の制御によりカラムコーディング回路103は、PB ユニット1を選択せず、代わりにPB ユニット256を選択し、PB ユニット256には外部からのデータが格納される。
ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット1を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(ステップST1)。
次に、通常データの置換が実行される(ステップST2)。具体的には、カラム置換回路104の制御によりカラムコーディング回路103は、PB ユニット1を選択せず、代わりにPB ユニット256を選択し、PB ユニット256には外部からのデータが格納される。
次に、ユーザが所定時間経過後に、プログラム実行コマンド(Program Executuion Command)を与える(Invoke)と、通常モード(第2の動作モード)であれば、ステップST6に進みプログラム処理(ページバッファからビット線を介してメモリセルトランジスタへデータを与える)を実行する。ECCモード(第1の動作モード)であれば、ステップST5に進みECCのエンコード処理を実行する。(ステップST5)。具体的には次の処理を実行する。
ここで、図9(c)は、ECC処理でのコード構成を示している。ECCとしてのData部は、PB ユニット0〜PB ユニット263に格納されたデータであり、パリティ部(ECC Parity)は、PB ユニット264〜PB ユニット299に格納されたデータからなる。なお、PB ユニット1に書き込むべきデータは、PB ユニット256に書き込まれて格納され、PB ユニット1以外のPB ユニット0、PB ユニット2〜255には、それぞれに接続されるビット線を介してメモリセルトランジスタが記憶するデータが読み出されて格納されている。
PB ユニット0〜PB ユニット263に格納されたデータが、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)される(ステップST31)。
PB ユニット0〜PB ユニット263に格納されたデータが、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)される(ステップST31)。
なお、このとき、上述したように、ランダマイザ107bには、PB ユニット1からは固定データ(図5に示すPB制御回路60であればLデータ、図6に示すPB制御回路60であればHデータ)が入力される。また、ランダマイザ107bには、PB ユニット256からは、PB ユニット1に書き込むべきだったが実際はPB ユニット256に書き込まれたデータが入力される。
ランダマイザ107bは、ランダマイズ(Data Randomize)処理を実行し(ステップST32a)、ランダマイズ処理後のデータをECC回路107aに対して出力する。
ECC回路107aは、入力されるランダマイズ処理後のデータに対してエンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST32b)。
ランダマイザ107bは、ランダマイズ(Data Randomize)処理を実行し(ステップST32a)、ランダマイズ処理後のデータをECC回路107aに対して出力する。
ECC回路107aは、入力されるランダマイズ処理後のデータに対してエンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST32b)。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜307にECC処理後のデータを書き戻す(Data Store)処理を実行する(ステップST33)。ここで、図2に示すランダマイザ107bがPB ユニット0〜263に、パリティ生成回路41がPB ユニット264〜307に、それぞれデータを書き戻す。
なお、このとき、ECCコーディング回路108は、パリティカラム置換回路105の制御により、PB ユニット265を非選択とし、PB ユニット300を選択する。これにより、PB ユニット265に書き戻すべきパリティデータがPB ユニット300に書き戻される。また、PB ユニット0〜263には、ステップST32aでランダマイズ処理した後のデータが書き込まれ、PB ユニット264〜307にはパリティデータが書き込まれる。このように、図9(b)において斜線を施して示している不活性状態ページバッファには、図5または図6に示す回路により、書き込みがされないようになっている。
なお、このとき、ECCコーディング回路108は、パリティカラム置換回路105の制御により、PB ユニット265を非選択とし、PB ユニット300を選択する。これにより、PB ユニット265に書き戻すべきパリティデータがPB ユニット300に書き戻される。また、PB ユニット0〜263には、ステップST32aでランダマイズ処理した後のデータが書き込まれ、PB ユニット264〜307にはパリティデータが書き込まれる。このように、図9(b)において斜線を施して示している不活性状態ページバッファには、図5または図6に示す回路により、書き込みがされないようになっている。
続いて、各PBユニットにおいて、図7に示すラッチ部にメモリセルに書き込むべきデータ(Data_i)がラッチされたので、メモリセルトランジスタへのデータ書込み(Program to Memory Cell)処理が開始される(ステップST6)。
各PB ユニットでは、書込みが成功するまで、ラッチ部からメモリセルへのデータ印加が繰り返される(ステップST7)。書き込みが成功すれば、繰り返し処理は終了し(ステップST7−Yes)、書き込みが成功しなければ、書込みが成功する、まで、ステップST6に戻ってプログラム処理が実行される(ステップST7−No)。
各PB ユニットでは、書込みが成功するまで、ラッチ部からメモリセルへのデータ印加が繰り返される(ステップST7)。書き込みが成功すれば、繰り返し処理は終了し(ステップST7−Yes)、書き込みが成功しなければ、書込みが成功する、まで、ステップST6に戻ってプログラム処理が実行される(ステップST7−No)。
[データ読み出し動作]
ユーザがI/Oパッド106を介して所定のコマンド(リードコマンド)を入力し、アドレス(ここでは、PB ユニット1を選択するカラムアドレス)を入力する(ステップST11)。
次に、各PB ユニットにおいて、図6に示すビット内部回路の接続点N1に、メモリセルトランジスタからのデータ(Data_i)がセンシングされラッチ部へ読み出される(ステップST12)。
また、ビット内部回路のラッチ部にData_iがラッチされる(ステップST13)。
その後、通常モード(第2の動作モード)であれば、ステップST15に進みセンシング処理が終了する。ECCモード(第1の動作モード)では、ステップST14に進み、ECCのデコード(Decode)処理を実行する。(ステップST14)。具体的には次の処理を実行する。
ユーザがI/Oパッド106を介して所定のコマンド(リードコマンド)を入力し、アドレス(ここでは、PB ユニット1を選択するカラムアドレス)を入力する(ステップST11)。
次に、各PB ユニットにおいて、図6に示すビット内部回路の接続点N1に、メモリセルトランジスタからのデータ(Data_i)がセンシングされラッチ部へ読み出される(ステップST12)。
また、ビット内部回路のラッチ部にData_iがラッチされる(ステップST13)。
その後、通常モード(第2の動作モード)であれば、ステップST15に進みセンシング処理が終了する。ECCモード(第1の動作モード)では、ステップST14に進み、ECCのデコード(Decode)処理を実行する。(ステップST14)。具体的には次の処理を実行する。
PB ユニット0〜PB ユニット299に格納されたデータが、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)される(ステップST41)。
なお、このとき、上述したように、図2に示すECC回路107aのシンドローム算出回路31には、PB ユニット1からは固定データ(図5に示すPB制御回路60であればLデータ、図6に示すPB制御回路60であればHデータ)が入力される。また、ECC回路107aのシンドローム算出回路31には、PB ユニット256からは、PB ユニット1に書き込むべきだったが実際はPB ユニット256に書き込まれたデータが入力される。また、パリティカラム置換回路105には、PB ユニット300からは、PB ユニット265に書き込むべきだったが実際はPB ユニット300に書き込まれたパリティデータがECC Bus_1、及びECC Bus_2を介して入力され、置換処理した後、ECC Bus_3を介してECC回路107aのシンドローム算出回路31に入力する。
ランダマイザ、及びECC回路107は、デコード(Decode)処理を実行し、パリティデータに基づいて、PB ユニット0〜PB ユニット263に格納されたデータの誤りを訂正(Error Correction)する(ステップST42a)。
ランダマイザ107bは、ECC処理による訂正後のデータを、デランダマイズ(De−Randomize)処理を実行する(ステップST42b)。
なお、このとき、上述したように、図2に示すECC回路107aのシンドローム算出回路31には、PB ユニット1からは固定データ(図5に示すPB制御回路60であればLデータ、図6に示すPB制御回路60であればHデータ)が入力される。また、ECC回路107aのシンドローム算出回路31には、PB ユニット256からは、PB ユニット1に書き込むべきだったが実際はPB ユニット256に書き込まれたデータが入力される。また、パリティカラム置換回路105には、PB ユニット300からは、PB ユニット265に書き込むべきだったが実際はPB ユニット300に書き込まれたパリティデータがECC Bus_1、及びECC Bus_2を介して入力され、置換処理した後、ECC Bus_3を介してECC回路107aのシンドローム算出回路31に入力する。
ランダマイザ、及びECC回路107は、デコード(Decode)処理を実行し、パリティデータに基づいて、PB ユニット0〜PB ユニット263に格納されたデータの誤りを訂正(Error Correction)する(ステップST42a)。
ランダマイザ107bは、ECC処理による訂正後のデータを、デランダマイズ(De−Randomize)処理を実行する(ステップST42b)。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜307にデランダマイズ処理後のデータを書き戻す(Data Store)処理を実行する(ステップST43)。ここで、図2に示すランダマイザ107bがPB ユニット0〜307にデータを書き戻す。
PB ユニット0〜263には、ECC処理後のデータ(誤り訂正されたデータ)がそのまま書き戻される。PB ユニット264〜307のパリティデータ部についてはユーザーが使用しないため、ECC処理後のデータ(誤り訂正されたデータ)を書き戻す必要はないが、書き戻してもよい。パリティカラム置換回路105の制御により、PB ユニット265を非選択とし、PB ユニット300を選択する。これにより、PB ユニット265に書き戻すべき誤り訂正後のパリティデータをPB ユニット300に書き戻す。このように、図9(b)において斜線を施して示している不活性状態ページバッファには図5または図6に示す回路により、書き込みがされないようになっている。
PB ユニット0〜263には、ECC処理後のデータ(誤り訂正されたデータ)がそのまま書き戻される。PB ユニット264〜307のパリティデータ部についてはユーザーが使用しないため、ECC処理後のデータ(誤り訂正されたデータ)を書き戻す必要はないが、書き戻してもよい。パリティカラム置換回路105の制御により、PB ユニット265を非選択とし、PB ユニット300を選択する。これにより、PB ユニット265に書き戻すべき誤り訂正後のパリティデータをPB ユニット300に書き戻す。このように、図9(b)において斜線を施して示している不活性状態ページバッファには図5または図6に示す回路により、書き込みがされないようになっている。
続いて、各PBユニットにおいて、図7に示すラッチ部にメモリセルに書き込むべきデータ(Data_i)がラッチされたので、センシング(Sensing)処理が終了すし、読み出し可能な状態へ移行する(ステップST15)。
PB ユニット0〜PB ユニット255には、選択信号Sel_Aが入力され、格納されたデータが、Data Bus_1、Data Bus_2、及びData Bus_3を介して、読み出される。このとき、カラムコーディング回路103は、カラム置換回路104の制御により、PB ユニット1を非選択とし、PB ユニット256を選択する。PB ユニット256は、PB ユニット1に書き込むべきだったが実際はPB ユニット256に書き込まれたデータを出力する。つまり、不良を有するカラムの置換(Defect Column Repair)が実行される(ステップST16)。
このようにして、ユーザがPB ユニット1を介してメモリセルトランジスタへ書き込んだ書き込みデータが、不良救済されて他のメモリセルトランジスタに書き込まれ、更に書き込まれたデータが誤り訂正されて、I/Oパッド106から出力される(ステップST17)。
PB ユニット0〜PB ユニット255には、選択信号Sel_Aが入力され、格納されたデータが、Data Bus_1、Data Bus_2、及びData Bus_3を介して、読み出される。このとき、カラムコーディング回路103は、カラム置換回路104の制御により、PB ユニット1を非選択とし、PB ユニット256を選択する。PB ユニット256は、PB ユニット1に書き込むべきだったが実際はPB ユニット256に書き込まれたデータを出力する。つまり、不良を有するカラムの置換(Defect Column Repair)が実行される(ステップST16)。
このようにして、ユーザがPB ユニット1を介してメモリセルトランジスタへ書き込んだ書き込みデータが、不良救済されて他のメモリセルトランジスタに書き込まれ、更に書き込まれたデータが誤り訂正されて、I/Oパッド106から出力される(ステップST17)。
以上説明したように、本発明のNAND型フラッシュメモリ10(半導体記憶装置)は、ECC Bus_1〜3(第1のデータバス)と、第1のデータバスと異なる本数から構成され、第1のデータバスとは独立して設けられるData Bus_1〜3(第2のデータバス)と、ページバッファ102(データ転送部)と、を備える。ページバッファ102は、ECCモード(第1の動作モード)によりメモリセルとの間でデータを転送する場合、複数のビット線のうち第1のデータバスと同じ本数のビット線と、第1のデータバスとを接続してデータを転送する。一方、ページバッファ102は、通常モード(第2の動作モード)によりメモリセルとの間でデータを転送する場合、複数のビット線のうち第2のデータバスと同じ本数のビット線と、第2のデータバスとを接続してデータを転送する
また、データ転送部は、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ102a(第1のページバッファ)と、第1のページバッファに接続される通常メモリセルまたはビット線に不良が有る場合に、通常メモリセル、及びビット線とともに置換されるページバッファ102b(第3のページバッファ)と、を含んで構成される。また、データ転送部は、パリティメモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ102c(第2のページバッファ)を含んで構成される。また、第2のデータバスは、第1のページバッファ、及び第3のページバッファと接続され、第1のデータバスは、第1のページバッファ、第3のページバッファ、及び第2のページバッファと接続される。
また、データ転送部は、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ102a(第1のページバッファ)と、第1のページバッファに接続される通常メモリセルまたはビット線に不良が有る場合に、通常メモリセル、及びビット線とともに置換されるページバッファ102b(第3のページバッファ)と、を含んで構成される。また、データ転送部は、パリティメモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ102c(第2のページバッファ)を含んで構成される。また、第2のデータバスは、第1のページバッファ、及び第3のページバッファと接続され、第1のデータバスは、第1のページバッファ、第3のページバッファ、及び第2のページバッファと接続される。
また、半導体記憶装置は、第1のデータバスに接続され、第2のページバッファに接続されるパリティメモリセルまたはビット線に不良が有る場合に、パリティメモリセル、及びビット線とともに置換されるページバッファ102d(第4のページバッファ)を備える。また、半導体記憶装置は、第2のデータバスに接続されるとともに、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファを第3のページバッファに置換するカラム置換回路104(第1の救済置換回路)を備える。また、半導体記憶装置は、第1のデータバスに接続されるとともに、第2のページバッファのうちメモリセルまたはビット線に不良が有るページバッファを第4のページバッファに置換するパリティカラム置換回路105(第2の救済置換回路)を備える。また、半導体記憶装置は、第1のデータバスに接続されるとともに、第2のページバッファ、及び前記第4のページバッファの出力データに基づき、前記第1のページバッファ、及び第3のページバッファの出力データの誤りを訂正するECC回路107a(ECC回路)を備える。
また、半導体記憶装置は、第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするPB制御回路60(ページバッファ制御回路)を有する。
また、ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、第1のデータバスからの書き込みを許可しない。
また、第1の動作モードでは、第1のページバッファと、第2の動作モードでの救済置換を前提として存在する第3のページバッファとのうち、メモリセルまたはビット線に不良が有るページバッファについては救済置換を行わずに、ECC回路の入力データとして取り扱う。
また、ビット線を、n(nはpとqの公倍数であり、p、及びqはp>qである自然数)本のビット線とすると、第1のデータバスはp本であり、第2のデータバスはq本である。また、データ転送部は、第1の動作モードでは、(n/p)本のアドレス信号が入力されると、p本のビット線とp本の第1のデータバスとの接続を行い、一方、第2の動作モードでは、(n/q)本のアドレス信号が入力されると、q本ビット線と第2のデータバスとの接続を行う。なお、上記構成は、論理的空間においての概念を前提としており、物理的ビット線数nがpとqの公倍数でなくてもよく、余りをダミービット線として処理するなどで対応できる。
このように、本発明によれば、ECC回路107aへのECC Bus(第1のデータバス)のバス幅を広くしやすいことから(上記説明では、ECC回路へのバス幅は300ビット)、また、Main Data部の置換回路(カラム置換回路104)がこのECC Busの途中には不要となるため、ECC処理でのデータ転送を高速化することができる。また、Main Data部の置換回路は従来の様に増大しないことから、チップサイズの増大を抑制でき、従来に比べて製造の際のコストを低減できる効果がある。
なお、上記実施形態では、Main Data部の置換回路と比較して、規模が小さいParity部に専用のPCR置換システム(パリティカラム置換回路105)を用いて説明したが、この構成は必須ではない。もっとも、パリティカラム置換回路105は、Parity部の不良を救済する方法として有用である。パリティカラム置換回路105を用いない場合には、カラム1ビットあたり50%(0か1か)の確率で1エラー分の訂正ができなくなってしまい、ECC処理における訂正能力を損なってしまう。これに対して、上記説明の様に、パリティカラム置換回路105を用いてParity部の不良を救済すると、ECC訂正能力を向上できる。
なお、上記実施形態では、Main Data部の置換回路と比較して、規模が小さいParity部に専用のPCR置換システム(パリティカラム置換回路105)を用いて説明したが、この構成は必須ではない。もっとも、パリティカラム置換回路105は、Parity部の不良を救済する方法として有用である。パリティカラム置換回路105を用いない場合には、カラム1ビットあたり50%(0か1か)の確率で1エラー分の訂正ができなくなってしまい、ECC処理における訂正能力を損なってしまう。これに対して、上記説明の様に、パリティカラム置換回路105を用いてParity部の不良を救済すると、ECC訂正能力を向上できる。
[第1のランダマイズ及びECC処理]
続いて、ECCモード(第1の動作モード)における第1のランダマイズ及びECC処理(欠陥ビットに関してECC回路により不良救済する処理)の詳細について説明する。
なお、ここでは、上述した処理フローのうち、図10(c)に対応するランダマイズ、及びエンコード処理、及び図10(d)に対応するデコード、及びデランダマイズ処理について詳述する。また、以下では、ページバッファ102c(第2のページバッファ)におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路105による置換処理はないものとして説明をする。
続いて、ECCモード(第1の動作モード)における第1のランダマイズ及びECC処理(欠陥ビットに関してECC回路により不良救済する処理)の詳細について説明する。
なお、ここでは、上述した処理フローのうち、図10(c)に対応するランダマイズ、及びエンコード処理、及び図10(d)に対応するデコード、及びデランダマイズ処理について詳述する。また、以下では、ページバッファ102c(第2のページバッファ)におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路105による置換処理はないものとして説明をする。
また、説明を簡単にするため、上述したページバッファ102a(第1のページバッファ)を構成するPB ユニットのうち4個のPB ユニット、及び、ページバッファ102c(第2のページバッファ)を構成するPB ユニットのうち1個のPB ユニットを例にとって、ECCモード(第1の動作モード)における動作を説明する。以下では、この4個のPB ユニットをPB ユニット0〜3とし、1個のPB ユニットをPB ユニット4とする。
ここでは、ECCモードにおける動作として、ランダマイザ、及びECC回路107が、PB ユニット0〜3に格納されているデータに基づいてパリティデータを生成し、生成したパリティデータをPB1 ユニット4に書き戻す処理(ランダマイズ、及びECCエンコード処理)について説明する。また、PB ユニット4に格納されたパリティデータに基づいてPB ユニット0〜3に格納されているデータを、誤り訂正し、かつ、復元する処理(ECCデコード、及びデランダマイズ処理)について説明する。
図11は、ECCモードにおける第1のランダマイズ及びECC処理について説明するための図である。また、図12は、第1のランダマイズ及びECC処理のフローチャートである。なお、以下では、ユーザが、通常モード(第1の動作モード)において、PB ユニット0〜3に、Data D0〜D3を書き込んだものとする。また、PB ユニット4には、これらのData D0〜D3の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをParity Pxとする。
図11は、ECCモードにおける第1のランダマイズ及びECC処理について説明するための図である。また、図12は、第1のランダマイズ及びECC処理のフローチャートである。なお、以下では、ユーザが、通常モード(第1の動作モード)において、PB ユニット0〜3に、Data D0〜D3を書き込んだものとする。また、PB ユニット4には、これらのData D0〜D3の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをParity Pxとする。
図11は、第1のランダマイズ及びECC処理を、(1)〜(5)に示す処理により時系列に示し、各処理におけるData D0〜D3、及びParity Pxの論理データ(論理値)を示している。ここで、図11(a)には、Page Buffer(ページバッファ102)に格納されるデータの(1)〜(5)における変化が示されている。また、図11(b)には、Randomizer(ランダマイザ107b)における演算結果の(1)〜(5)における変化が示されている。また、図11(c)には、ECC Engine(ECC回路107a)への入力データ、及びECC処理後のデータの(1)〜(5)における変化が示されている。
また、図12(a)は、第1のランダマイズ及びECC処理におけるランダマイズ、及びエンコード処理のフローを、図12(b)は、デコード処理、及びデランダマイズ処理のフローを示している。
また、図12(a)は、第1のランダマイズ及びECC処理におけるランダマイズ、及びエンコード処理のフローを、図12(b)は、デコード処理、及びデランダマイズ処理のフローを示している。
ここで、PB ユニット1は、不良のユニットであり、PB ユニット自身、或いはPB ユニットに接続されるビット線、またはメモリセルトランジスタのいずれかに不良のあるPB ユニットであるものとする。PB ユニット1は、図5に示す回路において、欠陥信号PB_DectがHレベル、欠陥信号nPB_DefectがLレベルであり、Data D1としてデータ0が格納されている。このため、PB ユニット1は、ECCモードのデータ読み出し動作では固定データであるデータ0を出力し、ECCモードのデータ書込み動作では、データを書き込むことはできない。以下では、このPB ユニットと置換されるページバッファ102b(第3のページバッファ)におけるPB ユニット 1の動作については、すなわち、上述したパリティカラム置換回路105の動作については、ここでの説明に直接関係しないため、省略する。
なお、PB ユニット1は、通常モード(第2の動作モード)において、ページバッファ102bにおけるPB ユニットに置換される。この置換先のPB ユニットのデータ(本来、ユーザから見てPB ユニット1に書き込むはずのデータ)はECCモード(第1の動作モード)の書き込み動作においてランダマイズ処理、及びエンコード処理され、PB ユニットに書き戻される。また、置換先のPB ユニットのデータは、ECCモードの読み出し動作において、デコード処理、及びデランダマイズ処理され、PB ユニットに書き戻される。この書き戻されたデータは、通常モードにおいて、カラム置換回路104が、PB ユニット1に換えて置換先のPB ユニットを選択することにより、Data Bus(第2のデータバス)を介してI/Oパッド106に読み出される。
また、ランダマイザ107bは、一般的には入力したDataをランダム(Random)に符号化する機能を有するが、ここでは説明を簡単にするため、例示として簡易的に奇数番目のビット(ここではData D1、及びData D3)の論理を反転させる機能を有するものとする。また、ECC回路107a(ECC Engine)は、誤り訂正機能を有するが、例示として簡易的に、エンコード(Encode)時には入力されたData D0〜D3に対してParity Pxを生成し、デコード(Decode)時にはParity Pxを基にData D0〜D3の誤り訂正を行うものとする。
以下、図10(a)、図10(b)、図11、及び図12を参照しつつ、第1のランダマイズ及びECC処理について詳述する。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット0〜3を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(図10(a)に示すフローのステップST1)。これにより、図11(a)における(1)Data Inに示す様に、PB ユニット0〜3に格納されるData D0〜D3は、Data“0011”となる。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット0〜3を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(図10(a)に示すフローのステップST1)。これにより、図11(a)における(1)Data Inに示す様に、PB ユニット0〜3に格納されるData D0〜D3は、Data“0011”となる。
ページバッファ102のPB ユニット0〜PBユニット3は、Data D0〜D3(Data“0011”)を、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)する(図12(a)のフローに示すステップST51)。
まず、ランダマイザ107bは、データランダマイズ(Data Randomize)処理を行う(ステップST52a)。ここでは、ランダマイザ107bは、図11(b)における(2)Randomize&ECC Enocodeに示す様に、ランダマイズ処理により、Data“0011”をData“0110”へと変換する。
まず、ランダマイザ107bは、データランダマイズ(Data Randomize)処理を行う(ステップST52a)。ここでは、ランダマイザ107bは、図11(b)における(2)Randomize&ECC Enocodeに示す様に、ランダマイズ処理により、Data“0011”をData“0110”へと変換する。
ECC回路107aは、エンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST52b)。
ここでは、ECC回路107aは、ランダマイズ処理後の、すなわち変換後のData“0110”に基づいて、Data“0110”に対応するParity Px(Parity Data“P(0110)”とする)を生成する。
ここでは、ECC回路107aは、ランダマイズ処理後の、すなわち変換後のData“0110”に基づいて、Data“0110”に対応するParity Px(Parity Data“P(0110)”とする)を生成する。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜3に、ランダマイズ処理、及びECC処理後のデータを書き戻す(Data Store)処理を実行する(ステップST53)。
ここでは、ECC回路107aは、図11(c)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3にData“0110”を、PB ユニット4にParity Data“P(0110)”を書き戻す。しかしながら、PB ユニット1は、”0”に固定しているため、データ1を書き込むことはできない。そのため、図11(a)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。しかしながら、PB ユニット4が格納するデータは、このData“0110”に基づいて生成されるので、Parity Data“P(0110)”となる。
ここでは、ECC回路107aは、図11(c)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3にData“0110”を、PB ユニット4にParity Data“P(0110)”を書き戻す。しかしながら、PB ユニット1は、”0”に固定しているため、データ1を書き込むことはできない。そのため、図11(a)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。しかしながら、PB ユニット4が格納するデータは、このData“0110”に基づいて生成されるので、Parity Data“P(0110)”となる。
以降、PB ユニット0、2〜4において、図7に示すラッチ部にメモリセルに書き込むべきデータ(Data_i)がラッチされ、メモリセルトランジスタへのデータ書込み(Program to Memory Cell)処理が開始される(図10に示すフローのステップST6)。なお、PB ユニット1では、図5に示す回路のうち、オア回路66の出力がLレベルであり、メモリセルトランジスタにデータは書き込まれない。
メモリセルトランジスタからのデータ読み出し動作では、PB ユニット0〜PB ユニット4に格納されたデータが、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)される(ステップST61)。
ここでは、図11(c)における(4)Data Loadに示す様に、ECC回路107aには、PB ユニット0〜PB ユニット4に格納されたData“0010”、Parity Data“P(0110)”が、ランダマイザ107bを介さずに直接入力される。
ここでは、図11(c)における(4)Data Loadに示す様に、ECC回路107aには、PB ユニット0〜PB ユニット4に格納されたData“0010”、Parity Data“P(0110)”が、ランダマイザ107bを介さずに直接入力される。
ECC回路107aは、デコード(Decode)処理を実行し、Parity Data“P(0110)”に基づいて、PB ユニット0〜PB ユニット3に格納されたData“0010”の誤りを訂正(Error Correction)する(ステップST62a)。
ここでは、上記ステップST53においてPBユニット 1にデータ1を書きこむことができなかったため、PB ユニット4に格納されたデータであるParity Data“P(0110)”に基づいて、PB ユニット1のデータ0のみが誤り訂正されてデータ1となる。つまり、ECC回路107aは、図11(c)における(5)ECC Decode、De−Randomize&Data Storeに示す様に、PB ユニット0〜PB ユニット3の訂正後のデータをData“0110”とする。
ここでは、上記ステップST53においてPBユニット 1にデータ1を書きこむことができなかったため、PB ユニット4に格納されたデータであるParity Data“P(0110)”に基づいて、PB ユニット1のデータ0のみが誤り訂正されてデータ1となる。つまり、ECC回路107aは、図11(c)における(5)ECC Decode、De−Randomize&Data Storeに示す様に、PB ユニット0〜PB ユニット3の訂正後のデータをData“0110”とする。
ランダマイザ107bは、訂正後のData“0110”をランダマイズ処理(De−Randomize)する(ステップST62b)。ここでは、ランダマイザ107bは、図11(b)における(5)ECC Decode、De−Randomize&Data Storeに示す様に、ランダマイズ処理により、Data“0110”の奇数番目のビットの論理を反転させて、Data“0011”へと変換する。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜4にECC処理後のData“0011”を書き戻す(Data Store)処理を実行する(ステップST63)。
このようにして、ランダマイザ、及びECC回路107により、真のData“0011”(ユーザが、図11(a)における(1)Data Inに示す様に、PB ユニット0〜3に書き込んだはずのデータ)がページバッファ102へ格納される。
このようにして、ランダマイザ、及びECC回路107により、真のData“0011”(ユーザが、図11(a)における(1)Data Inに示す様に、PB ユニット0〜3に書き込んだはずのデータ)がページバッファ102へ格納される。
以降、第2の動作モードにおいて、選択信号Sel_Aを与えることにより、ユーザがPB ユニット0〜3を介して各メモリセルトランジスタへ書き込んだ書き込みデータが、誤り訂正されて、I/Oパッド106から出力される(図10に示すフローのステップST17)。なお、この際、PB ユニット1(不良を有するカラム)の置換(Defect Column Repair)が実行される(ステップST16)。これにより、PB ユニット1に書き込むべきであったが、実際はページバッファ102bのPBユニットに書き込まれたデータ(このデータも上述した第1のランダマイズ及びECC処理により誤り訂正されてPB ユニットに格納されている)が、I/Oパッド106から出力される。
このように、NAND型フラッシュメモリ10(半導体記憶装置)は、第1のランダマイズ及びECC処理を実行する。第1のランダマイズ及びECC処理では、ECCモード(第1の動作モード)のデータ書き込み動作において、ランダマイザ107b(ランダマイザ)は、ページバッファ102a(第1のページバッファ)の出力データをランダマイズしてECC回路107a(ECC回路)に入力する。ECC回路107aは、ランダマイザ107bから入力されるデータ(上記例ではData“0011”)に基づいて、パリティデータ(Parity Data“P(0110)”)を生成してページバッファ102c(第2のページバッファ)にパリティデータを書き込む。一方、第1のランダマイズ及びECC処理では、第1の動作モードのデータ読み出し動作において、ECC回路107aは、ページバッファ102cのパリティデータに基づいて、ページバッファ102aのデータ(上記例ではData“0010”)を誤り訂正する。ランダマイザ107bは訂正後のデータ(上記例ではData“0110”)をデランダマイズしてページバッファ102aに書き戻す。
これにより、ページバッファ102a(第1のページバッファ)のうちメモリセルまたはビット線に不良が有るPB ユニット(ページバッファ)については、ランダマイザ、及びECC回路107(ECC回路)により誤りが訂正される。そのため、本発明のNAND型フラッシュメモリ10(半導体記憶装置)によれば、ECCのデコード処理とデランダマイズ処理とを高速に実行することができるとともに、救済機能を省略することができる。
[第2のランダマイズ及びECC処理]
ところで、上述した第1のランダマイズ及びECC処理では、不良のあるPB ユニット1に対して、ECCの訂正処理能力を使用している。これに対して、不良のあるPB ユニットに対してECC回路107aによる誤り訂正を不要とする、第2のランダマイズ及びECC処理について、以下に詳述する。
なお、ここでは、第1のランダマイズ及びECC処理と同様に、図10(c)に対応するランダマイズ、及びエンコード処理、及び図10(d)に対応するデコード、及びデランダマイズ処理について詳述する。また、第1のランダマイズ及びECC処理と同様に、ページバッファ102c(第2のページバッファ)におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路105による置換処理はないものとして説明をする。
ところで、上述した第1のランダマイズ及びECC処理では、不良のあるPB ユニット1に対して、ECCの訂正処理能力を使用している。これに対して、不良のあるPB ユニットに対してECC回路107aによる誤り訂正を不要とする、第2のランダマイズ及びECC処理について、以下に詳述する。
なお、ここでは、第1のランダマイズ及びECC処理と同様に、図10(c)に対応するランダマイズ、及びエンコード処理、及び図10(d)に対応するデコード、及びデランダマイズ処理について詳述する。また、第1のランダマイズ及びECC処理と同様に、ページバッファ102c(第2のページバッファ)におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路105による置換処理はないものとして説明をする。
また、第1のランダマイズ及びECC処理と同様に、ページバッファ102aを構成するPB ユニットのうち4個のPB ユニット0〜PB ユニット3、及び、ページバッファ102c(第2のページバッファ)を構成するPB ユニットのうち1個のPB ユニット4を例にとって、ECCモード(第1の動作モード)における動作を説明する。
図13は、ECCモードにおける第2のランダマイズ及びECC処理について説明するための図である。また、図14は、第2のランダマイズ及びECC処理のフローチャートである。なお、以下では、第1のランダマイズ及びECC処理と同様に、ユーザが、通常モード(第1の動作モード)において、PB ユニット0〜3に、Data D0〜D3を書き込んだものとする。また、PB ユニット4には、これらのData D0〜D3の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをParity Pxとする。
図13は、ECCモードにおける第2のランダマイズ及びECC処理について説明するための図である。また、図14は、第2のランダマイズ及びECC処理のフローチャートである。なお、以下では、第1のランダマイズ及びECC処理と同様に、ユーザが、通常モード(第1の動作モード)において、PB ユニット0〜3に、Data D0〜D3を書き込んだものとする。また、PB ユニット4には、これらのData D0〜D3の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをParity Pxとする。
図13は、第2のランダマイズ及びECC処理を、(1)〜(7)に示す処理により時系列に示し、各処理におけるData D0〜D3、及びParity Pxの論理データ(論理値)を示している。ここで、図13(a)には、Page Buffer(ページバッファ102)に格納されるデータの(1)〜(7)における変化が示されている。図13(b)には、Randomizer(ランダマイザ107b)における演算結果の(1)〜(7)における変化が示されている。また、図13(c)には、ECC Engine(ECC回路107a)への入力データ、及びECC処理後のデータの(1)〜(7)における変化が示されている。
また、図14は、第2のランダマイズ及びECC処理におけるランダマイズ、及びエンコード処理のフローを示している。なお、デコード処理、及びデランダマイズ処理のフローについては、第1のランダマイズ及びECC処理と同じであるので、図12(b)を用いて説明する。
また、図14は、第2のランダマイズ及びECC処理におけるランダマイズ、及びエンコード処理のフローを示している。なお、デコード処理、及びデランダマイズ処理のフローについては、第1のランダマイズ及びECC処理と同じであるので、図12(b)を用いて説明する。
ここで、PB ユニット1は、第1のランダマイズ及びECC処理と同様に、不良のユニットであり、PB ユニット自身、或いはPB ユニットに接続されるビット線、またはメモリセルトランジスタのいずれかに不良のあるPB ユニットであるものとする。このため、PB ユニット1は、ECCモードのデータ読み出し動作では固定データであるデータ0を出力し、ECCモードのデータ書込み動作では、データを書き込むことはできない。なお、以下では、このPB ユニットと置換されるページバッファ102b(第3のページバッファ)におけるページバッファユニットの動作については、すなわち、上述したパリティカラム置換回路105の動作については、第1のランダマイズ及びECC処理と同様に、ここでの説明に直接関係しないため、省略する。
また、ランダマイザ107b、及び、ECC回路107aの機能は、第1のランダマイズ及びECC処理と同様の機能を有するものとする。
また、ランダマイザ107b、及び、ECC回路107aの機能は、第1のランダマイズ及びECC処理と同様の機能を有するものとする。
以下、図10(a)、図10(b)、図12(b)、図13、及び図14を参照しつつ、第2のランダマイズ及びECC処理について詳述する。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット0〜3を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(図10(a)に示すフローのステップST1)。図13(a)における(1)Data Inに示す様に、PB ユニット0〜PBユニット3に格納されるData D0〜D3は、Data“0011”となる。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがI/Oパッド106を介してNAND型フラッシュメモリ10に、所定のコマンド(ライトコマンド)を入力し、アドレス(ここでは、PB ユニット0〜3を選択するカラムアドレス)入力をし、引き続いて、書き込みデータを入力する(図10(a)に示すフローのステップST1)。図13(a)における(1)Data Inに示す様に、PB ユニット0〜PBユニット3に格納されるData D0〜D3は、Data“0011”となる。
ページバッファ102のPB ユニット0〜PBユニット3は、Data D0〜D3(Data“0011”)を、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)する(ステップST71)。
まず、ランダマイザ107bは、データランダマイズ(Data Randomize)処理を行う(ステップST72a)。ここでは、ランダマイザ107bは、図13(b)における(2)Randomizeに示す様に、ランダマイズ処理により、Data“0011”をData“0110”へと変換する。
まず、ランダマイザ107bは、データランダマイズ(Data Randomize)処理を行う(ステップST72a)。ここでは、ランダマイザ107bは、図13(b)における(2)Randomizeに示す様に、ランダマイズ処理により、Data“0011”をData“0110”へと変換する。
続いて、ランダマイザ、及びECC回路107は、第1のランダマイズ及びECC処理と相違して、PB ユニット0〜3に、ランダマイズ処理後のデータを書き戻す(Data Store)処理を実行する(ステップST81)。
ここでは、ランダマイザ107bは、図13(b)における(3)Randomize&Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0110”を書き戻す。しかしながら、PB ユニット1は、”0”に固定しているため、データ1を書き込むことはできない。そのため、図13(a)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。
ここでは、ランダマイザ107bは、図13(b)における(3)Randomize&Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0110”を書き戻す。しかしながら、PB ユニット1は、”0”に固定しているため、データ1を書き込むことはできない。そのため、図13(a)における(3)Randomize&ECC Enocodeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。
続いて、ページバッファ102のPB ユニット0〜PBユニット3は、Data D0〜D3(Data“0010”)を、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)する(ステップST82)。
ECC回路107aは、エンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST72b)。
ここでは、ECC回路107aは、第1のランダマイズ及びECC処理と相違して、PB ユニット0〜3に格納されたData“0010”に基づいて、Data“0010”に対応するParity Px(Parity Data“P(0010)”とする)を生成する。
ECC回路107aは、エンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST72b)。
ここでは、ECC回路107aは、第1のランダマイズ及びECC処理と相違して、PB ユニット0〜3に格納されたData“0010”に基づいて、Data“0010”に対応するParity Px(Parity Data“P(0010)”とする)を生成する。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜3に、ECC処理後のデータを書き戻す(Data Store)処理を実行する(ステップST73)。
ここでは、ECC回路107aは、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0010”を、PB ユニット4にParity Data“P(0010)”を書き戻す。ここで、PB ユニット1は、”0”に固定しているため、第1のランダマイズ及びECC処理と相違して、ユーザが図13(a)における(1)Data Inにおいて書いたデータと同じデータ0が書き込まれたことと同等の状態となる。つまり、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。また、PB ユニット4が格納するデータは、Data“0010”に基づいて生成されたParity Data“P(0010)”となる。なお、ページバッファに書き戻す際、PB ユニット4にParity Data“P(0010)”を書き戻し、PB ユニット0〜PBユニット3にはデータを書き戻さなくてもよい。
ここでは、ECC回路107aは、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0010”を、PB ユニット4にParity Data“P(0010)”を書き戻す。ここで、PB ユニット1は、”0”に固定しているため、第1のランダマイズ及びECC処理と相違して、ユーザが図13(a)における(1)Data Inにおいて書いたデータと同じデータ0が書き込まれたことと同等の状態となる。つまり、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。また、PB ユニット4が格納するデータは、Data“0010”に基づいて生成されたParity Data“P(0010)”となる。なお、ページバッファに書き戻す際、PB ユニット4にParity Data“P(0010)”を書き戻し、PB ユニット0〜PBユニット3にはデータを書き戻さなくてもよい。
以降、第1のランダマイズ及びECC処理と同様に、PB ユニット0、2〜4において、図7に示すラッチ部にメモリセルに書き込むべきデータ(Data_i)がラッチされ、メモリセルトランジスタへのデータ書込み(Program to Memory Cell)処理が開始される(図10に示すフローのステップST6)。なお、PB ユニット1では、図5に示す回路のうち、オア回路66の出力がLレベルであり、メモリセルトランジスタにデータは書き込まれない。
メモリセルトランジスタからのデータ読み出し動作では、PB ユニット0〜PB ユニット4に格納されたデータが、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ、及びECC回路107に入力(Data Load)される(図12(b)に示すフローのステップST61)。
ここでは、図13(c)における(6)Data Loadに示す様に、ECC回路107aには、PB ユニット0〜PB ユニット4に格納されたData“0010”、Parity Data“P(0010)”が、ランダマイザ107bを介さずに直接入力される。
ここでは、図13(c)における(6)Data Loadに示す様に、ECC回路107aには、PB ユニット0〜PB ユニット4に格納されたData“0010”、Parity Data“P(0010)”が、ランダマイザ107bを介さずに直接入力される。
ECC回路107aは、デコード(Decode)処理を実行し、Parity Data“P(0010)”に基づいて、PB ユニット0〜PB ユニット3に格納されたData“0010”の誤りを訂正(Error Correction)する(ステップST62a)。
ここでは、上記ステップST73においてPBユニット 1において、データ0が書き込まれたことと同等の状態となるので、PB ユニット1のデータ0は誤り訂正されない。ECC回路107aは、図13(c)における(7)ECC Decode、De−Randomize&Data Storeに示す様に、PB ユニット0〜PB ユニット3のデータに誤りがないので、出力データをData“0010”とする。
ここでは、上記ステップST73においてPBユニット 1において、データ0が書き込まれたことと同等の状態となるので、PB ユニット1のデータ0は誤り訂正されない。ECC回路107aは、図13(c)における(7)ECC Decode、De−Randomize&Data Storeに示す様に、PB ユニット0〜PB ユニット3のデータに誤りがないので、出力データをData“0010”とする。
ランダマイザ107bは、ECC回路107aの出力データであるData“0010”をランダマイズ処理(De−Randomize)する(ステップST62b)。ここでは、ランダマイザ107bは、図13(b)における(7)ECC Decode、De−Randomize&Data Storeに示す様に、ランダマイズ処理により、Data“0010”の奇数番目のビットの論理を反転させて、Data“0111”へと変換する。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜4にECC処理後のData“0111”を書き戻す(Data Store)処理を実行する(ステップST63)。しかしながら、PB ユニット1は、”0”に固定しているため、データ1を書き込むことはできない。そのため、図13(a)における(7)ECC Decode、De−Randomize&Data Storeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。
このようにして、ランダマイザ、及びECC回路107により、真のData“0011”(ユーザが、図13(a)における(1)Data Inに示す様に、PB ユニット0〜3に書き込んだはずのデータ)がページバッファ102へ格納される。
このようにして、ランダマイザ、及びECC回路107により、真のData“0011”(ユーザが、図13(a)における(1)Data Inに示す様に、PB ユニット0〜3に書き込んだはずのデータ)がページバッファ102へ格納される。
以降、第2の動作モードにおいて、選択信号Sel_Aを与えることにより、ユーザがPB ユニット0〜3を介して各メモリセルトランジスタへ書き込んだ書き込みデータが、誤り訂正されて、I/Oパッド106から出力される(図10に示すフローのステップST17)。なお、この際、PB ユニット1(不良を有するカラム)の置換(Defect Column Repair)が実行される(ステップST16)。これにより、PB ユニット1に書き込むべきであったが、実際はページバッファ102bのPBユニットに書き込まれたデータ(このデータも上述した第2のランダマイズ及びECC処理により誤り訂正されている)が、I/Oパッド106から出力される。
このように、NAND型フラッシュメモリ10(半導体記憶装置)は、第1のランダマイズ及びECC処理に替えて、第2のランダマイズ及びECC処理を実行する。第2のランダマイズ及びECC処理では、ECCモード(第1の動作モード)のデータ書き込み動作において、ランダマイザ107b(ランダマイザ)は、ページバッファ102a(第1のページバッファ)の出力データをランダマイズしてページバッファ102aに書き戻す。ECC回路107a(ECC回路)は、ページバッファ102aに書き戻されたデータに基づいてページバッファ102c(第2のページバッファ)にパリティデータを書き込む。一方、第2のランダマイズ及びECC処理では、第1の動作モードのデータ読み出し動作において、ECC回路107aは、ページバッファ102cのパリティデータに基づいて、ページバッファ102aのデータを誤り訂正する。ランダマイザ107bは訂正後のデータをデランダマイズしてページバッファ102aに書き戻す。
これにより、ページバッファ102a(第1のページバッファ)のうちメモリセルまたはビット線に不良が有るPB ユニット(ページバッファ)については、誤りが発生しないように処理される。そのため、本発明のNAND型フラッシュメモリ10(半導体記憶装置)によれば、ECC処理の訂正処理能力を下げずに、ECCのデコード処理とデランダマイズ処理とを高速に実行することができる。
[第3のランダマイズ及びECC処理]
なお、上述した第2のランダマイズ及びECC処理に替えて、第3のランダマイズ及びECC処理を実行することにより、上述した第2のランダマイズ及びECC処理の効果に加えて、更に、エンコード処理においてページバッファへのデータ書き戻し処理(Data Store)を1回にでき、エンコード処理の高速化を図ることができる効果を奏する。
以下、第3のランダマイズ及びECC処理について、図15、及び図16を用いて説明する。図15は、ランダマイザ107b_1の回路構成を示す図であり、図16は、第3のランダマイズ及びECC処理のフローチャートである。
ここでは、第3のランダマイズ及びECC処理として、前述のページバッファに格納されている不良情報をランダマイザ107bに転送し、ランダマイザ107b側では転送された不良ビット情報をもとに、不良ビットに対してランダマイズ処理をせず、固定データとする機構について説明する。
なお、上述した第2のランダマイズ及びECC処理に替えて、第3のランダマイズ及びECC処理を実行することにより、上述した第2のランダマイズ及びECC処理の効果に加えて、更に、エンコード処理においてページバッファへのデータ書き戻し処理(Data Store)を1回にでき、エンコード処理の高速化を図ることができる効果を奏する。
以下、第3のランダマイズ及びECC処理について、図15、及び図16を用いて説明する。図15は、ランダマイザ107b_1の回路構成を示す図であり、図16は、第3のランダマイズ及びECC処理のフローチャートである。
ここでは、第3のランダマイズ及びECC処理として、前述のページバッファに格納されている不良情報をランダマイザ107bに転送し、ランダマイザ107b側では転送された不良ビット情報をもとに、不良ビットに対してランダマイズ処理をせず、固定データとする機構について説明する。
図15に示すランダマイザ107bの1ビット分の回路(以下、ランダマイザ107b_1とする)は、排他的論理和回路151、DFF(D型フリップフロップ)152、及びアンド回路153を含んで構成される。
排他的論理和回路151において、第1入力端子が、不図示のランダムシード発生回路に接続され、ランダムシードデータRSの1ビット分のデータが入力される。また、第2入力端子が、ECC Busを介してPB ユニットに接続され、読み出しデータData_Out_Bが入力される。また、排他的論理和回路151は、出力端子がアンド回路153の第1入力端子に接続され、出力信号(ランダムシードデータRSの1ビット分のデータと読み出しデータData_Out_Bとの排他的論理和)をアンド回路153に対して出力する。
排他的論理和回路151において、第1入力端子が、不図示のランダムシード発生回路に接続され、ランダムシードデータRSの1ビット分のデータが入力される。また、第2入力端子が、ECC Busを介してPB ユニットに接続され、読み出しデータData_Out_Bが入力される。また、排他的論理和回路151は、出力端子がアンド回路153の第1入力端子に接続され、出力信号(ランダムシードデータRSの1ビット分のデータと読み出しデータData_Out_Bとの排他的論理和)をアンド回路153に対して出力する。
DFF152において、データ入力端子Dは、ECC Busを介してPB ユニットに接続され、読み出しデータData_Out_Bが入力される。また、クロック端子CKは、例えばECC回路107aが内蔵するクロック信号発生回路に接続され、クロック信号Flag_Latch_Clockが入力される。クロック信号Flag_Latch_Clockは、ランダマイズ処理期間において、選択信号Sel_Bが切り替わる毎に発生する信号である。つまり、DFF152は、クロック端子CKにクロック信号Flag_Latch_Clockのトグル(Toggle)入力されるたびに、PB ユニットが出力する読み出しデータData_Out_BがD端子に取り込まれる。
また、DFF152において、データ出力端子Qは、アンド回路153の第1入力端子に接続される。
また、DFF152において、データ出力端子Qは、アンド回路153の第1入力端子に接続される。
また、アンド回路153は、第1入力端子が排他的論理和回路151の出力端子に接続され、第2入力端子がDFF152のデータ出力端子Qに接続され、出力端子は、ランダマイザ、及びECC回路107のパリティ生成回路41とPBユニットに接続される。
ここで、図5または図6に示すPB制御回路60を参照して、ECCのエンコード処理時に、選択信号DIO<0>〜<7>をすべてLレベルとし、ビット内部回路50_0〜50_7を非選択状態とすれば、読み出し信号RDの配線から見てビット側(ビット線、及びメモリセルトランジスタ側)はハイインピーダンス状態となる。そこで、選択信号Sel_BをHレベルとしてPB ユニットのPB制御回路60を選択すれば、不良ビット情報が(トランジスタ90bを通して)、ECC Busに読み出しデータData_Out_Bとして現れる。つまり、不良ビット情報をランダマイザ107b_1のDFF152(不良ビット情報格納部)に転送することができる。
ここで、図5または図6に示すPB制御回路60を参照して、ECCのエンコード処理時に、選択信号DIO<0>〜<7>をすべてLレベルとし、ビット内部回路50_0〜50_7を非選択状態とすれば、読み出し信号RDの配線から見てビット側(ビット線、及びメモリセルトランジスタ側)はハイインピーダンス状態となる。そこで、選択信号Sel_BをHレベルとしてPB ユニットのPB制御回路60を選択すれば、不良ビット情報が(トランジスタ90bを通して)、ECC Busに読み出しデータData_Out_Bとして現れる。つまり、不良ビット情報をランダマイザ107b_1のDFF152(不良ビット情報格納部)に転送することができる。
詳細に説明すると、PB ユニットが不良であれば、欠陥信号PB_DefectがHレベルであるので、トランジスタ61cがオンし、読み出しデータData_Out_BはLレベルとなる。そこで、ランダマイザ107b_1において、不良ビット情報が読み出しデータData_Out_BとしてPB ユニットから出力されたら、クロック信号Flag_Latch_Clockをトグル入力することにより、不良情報をDFF152にラッチすることができる。PB ユニットが不良であればLレベルがDFF152にラッチされ、データ出力端子QもLレベルとなる。これにより、アンド回路153の出力信号である“Randomized Data”、ランダマイザ107b_1の出力は、Lレベルに固定される。一方、PB ユニットが不良ではない場合、読み出しデータData_Out_Bの配線はプルアップされているため、HレベルがDFF152にラッチされる。これにより、データ出力端子QはHレベルとなり、ランダムシードRSと読み出しデータData_Out_Bの排他的論理和が、アンド回路153から“Randomized Data”として出力され、ランダマイザ107b_1がランダマイザとして機能する。
続いて、図16を用いて、第3のランダマイズ及びECC処理について説明する。なお、ここでは、第2のランダマイズ及びECC処理との比較を行うため、図13を用いて説明した第2のランダマイズ及びECC処理と同様に、PB ユニット0〜PB ユニット3のうちPB ユニット1が不良ユニットであるものとして説明する。
まず、PB ユニット0〜PBユニット3から不良情報(Defect Bit Information)をランダマイザ107bに転送する(ステップST91a)。
具体的には、ページバッファ102のPB ユニット0〜PBユニット3に対して、選択信号DIOを全てLレベルにし、PB ユニット0〜PBユニット3各々において、読み出し信号RDの配線から見てビット側をハイインピーダンス状態とする。次に、選択信号Sel_BをHレベルにして、読み出し信号RDの配線とECC Busとを接続する。PB ユニット0〜PBユニット3のうち、PB ユニット1のPB制御回路60においては、トランジスタ61c、及び61bがオンして、読み出しデータData_Out_BがLレベルとなる。一方、PB ユニット0、2、3については、読み出しデータData_Out_Bの配線に接続されたプルアップ回路(Pull Up)により、読み出しデータData_Out_Bは、Hレベルに維持される。つまり、ランダマイザ107bのDFF152(ここでは、PB ユニット0〜PBユニット3に対応させて4個ある)には、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、Data D0〜D3としてData“1011”が格納される。
まず、PB ユニット0〜PBユニット3から不良情報(Defect Bit Information)をランダマイザ107bに転送する(ステップST91a)。
具体的には、ページバッファ102のPB ユニット0〜PBユニット3に対して、選択信号DIOを全てLレベルにし、PB ユニット0〜PBユニット3各々において、読み出し信号RDの配線から見てビット側をハイインピーダンス状態とする。次に、選択信号Sel_BをHレベルにして、読み出し信号RDの配線とECC Busとを接続する。PB ユニット0〜PBユニット3のうち、PB ユニット1のPB制御回路60においては、トランジスタ61c、及び61bがオンして、読み出しデータData_Out_BがLレベルとなる。一方、PB ユニット0、2、3については、読み出しデータData_Out_Bの配線に接続されたプルアップ回路(Pull Up)により、読み出しデータData_Out_Bは、Hレベルに維持される。つまり、ランダマイザ107bのDFF152(ここでは、PB ユニット0〜PBユニット3に対応させて4個ある)には、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、Data D0〜D3としてData“1011”が格納される。
次に、Data D0〜D3(Data“0011”)を、ECC Bus_1、ECC Bus_2、及びECC Bus_3(第1のデータバス)を介して、ランダマイザ107bに入力(Data Load)する(ステップST91b)。
このとき、選択信号DIOはいずれか一本が選択されるので、ページバッファ102のPB ユニット0〜PBユニット3から、Data D0〜D3(Data“0011”)が、ECC Bus_1、ECC Bus_2、及びECC Bus_3を介して、ランダマイザ107bに入力される。
このとき、選択信号DIOはいずれか一本が選択されるので、ページバッファ102のPB ユニット0〜PBユニット3から、Data D0〜D3(Data“0011”)が、ECC Bus_1、ECC Bus_2、及びECC Bus_3を介して、ランダマイザ107bに入力される。
次に、ランダマイザ107bは、データランダマイズ(Data Randomize)処理を行う(ステップST92)。ここでは、ランダマイザ107bのDFF152(不良ビット情報格納部)には、Data“1011”が格納されている。また、ここでは、ランダムシードRSは、第2のランダマイズ及びECC処理と同様、奇数番目のビットを反転させるため、Data D0〜D3に対応してData“0101”である。
PB ユニット0〜PBユニット3のうちPB ユニット1が出力するデータD1(“0”)は、DFF152に格納されているデータが“0”であるため、排他的論理和演算の結果はアンド回路153から出力されず、アンド回路153の出力信号である“Randomized Data”は“0”となる。
一方、PB ユニット0、2、3が出力するデータD0(“0”)、D2(“1”)、D3(“1”)は、それぞれランダムシードRS“0”、“0”、“1”と排他的論理和演算され、すなわち、奇数番目のデータのみ反転され、“0”、“1”、“0”となる。また、データD0、D2、D3は、DFF152に格納されているデータが全て“1”であるため、排他的論理和演算の結果がアンド回路153から出力され、アンド回路153の出力信号である“Randomized Data”は、データD0、D2、D3に対応して、それぞれ“0”、“1”、“0”となる。
つまり、固定データを出力するPB ユニット1のデータは、奇数番目のビットであるが、第2のランダマイズ及びECC処理のときのように、ランダマイズ処理(ここでは論理反転処理)されて“1”となることはない。一方、固定データではない、データD0、D2、D3は、ランダマイズ処理される。
PB ユニット0〜PBユニット3のうちPB ユニット1が出力するデータD1(“0”)は、DFF152に格納されているデータが“0”であるため、排他的論理和演算の結果はアンド回路153から出力されず、アンド回路153の出力信号である“Randomized Data”は“0”となる。
一方、PB ユニット0、2、3が出力するデータD0(“0”)、D2(“1”)、D3(“1”)は、それぞれランダムシードRS“0”、“0”、“1”と排他的論理和演算され、すなわち、奇数番目のデータのみ反転され、“0”、“1”、“0”となる。また、データD0、D2、D3は、DFF152に格納されているデータが全て“1”であるため、排他的論理和演算の結果がアンド回路153から出力され、アンド回路153の出力信号である“Randomized Data”は、データD0、D2、D3に対応して、それぞれ“0”、“1”、“0”となる。
つまり、固定データを出力するPB ユニット1のデータは、奇数番目のビットであるが、第2のランダマイズ及びECC処理のときのように、ランダマイズ処理(ここでは論理反転処理)されて“1”となることはない。一方、固定データではない、データD0、D2、D3は、ランダマイズ処理される。
以上のような固定データを除く、ランダマイズ処理の結果、ランダマイザ107bは、Data“0010”をECC回路107aに対して出力する。
これは、第2のランダマイズ及びECC処理において、ページバッファ102のPB ユニット0〜PBユニット3から、Data D0〜D3(Data“0010”)を、ECC Busを介して、ECC回路107aに入力(Data Load)する状態と同じである(図13(a)における(4)Data Load&ECC Encode参照)。
その後は、第2のランダマイズ及びECC処理と同様、下記の処理が行われる。
すなわち、ECC回路107aは、エンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST72b)。
ここでは、ECC回路107aは、ランダマイザ107bから入力されるData“0010”に基づいて、Data“0010”に対応するParity Px(Parity Data“P(0010)”)を生成する。
これは、第2のランダマイズ及びECC処理において、ページバッファ102のPB ユニット0〜PBユニット3から、Data D0〜D3(Data“0010”)を、ECC Busを介して、ECC回路107aに入力(Data Load)する状態と同じである(図13(a)における(4)Data Load&ECC Encode参照)。
その後は、第2のランダマイズ及びECC処理と同様、下記の処理が行われる。
すなわち、ECC回路107aは、エンコード(Encode)処理を実行し、パリティデータを生成(Parity Generation)する(ステップST72b)。
ここでは、ECC回路107aは、ランダマイザ107bから入力されるData“0010”に基づいて、Data“0010”に対応するParity Px(Parity Data“P(0010)”)を生成する。
続いて、ランダマイザ、及びECC回路107は、PB ユニット0〜3に、ECC処理後のデータを書き戻す(Data Store)処理を実行する(ステップST73)。
ここでは、ECC回路107aは、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0010”を、PB ユニット4にParity Data“P(0010)”を書き戻す。ここで、PB ユニット1は、”0”に固定しているため、第2のランダマイズ及びECC処理と同様、ユーザが図13(a)における(1)Data Inにおいて書いたデータと同じデータ0が書き込まれたことと同等の状態となる。つまり、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。また、PB ユニット4が格納するデータは、Data“0010”に基づいて生成されたParity Data“P(0010)”となる。
ここでは、ECC回路107aは、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3にData“0010”を、PB ユニット4にParity Data“P(0010)”を書き戻す。ここで、PB ユニット1は、”0”に固定しているため、第2のランダマイズ及びECC処理と同様、ユーザが図13(a)における(1)Data Inにおいて書いたデータと同じデータ0が書き込まれたことと同等の状態となる。つまり、図13(a)における(5)Data Storeに示す様に、PB ユニット0〜PBユニット3が格納するデータはData“0010”となる。また、PB ユニット4が格納するデータは、Data“0010”に基づいて生成されたParity Data“P(0010)”となる。
このように、第3のランダマイズ及びECC処理においては、ランダマイザ(ランダマイザ107b)は、ランダマイズ処理に先立って不良ビット情報格納部(DFF152)に取り込んだ第1のページバッファ(ページバッファ102a)の不良情報に基づいて、第1のページバッファの出力データ(Data D0〜D3)のうち、固定されたデータ(Data D1)を除く、第1のページバッファの出力データをランダマイズしてECC回路107aに入力する。これにより、第2のランダマイズ及びECC処理と同様に、ECC処理の訂正処理能力を下げずに、ECCのデコード処理とデランダマイズ処理とを高速に実行することができる。また、第2のランダマイズ及びECC処理に比べて、ページバッファにデータを書き戻すData Store処理(図14に示すステップST81)、ページバッファからECC回路へデータを入力するData Load処理(図14に示すステップST82)を不要とすることができる。そのため、第2のランダマイズ及びECC処理に比べて、ECC処理のエンコード処理を高速に実行することができる。
また、本発明のNAND型フラッシュメモリ10(半導体記憶装置)は、ECC Bus_1〜3(第1のデータバス)と、ECCモード(第1の動作モード)によりメモリセルとの間でデータを転送する場合、複数のビット線のうちECC Busと同じ本数のビット線と、ECC Busとを接続してデータを転送するページバッファ102(データ転送部)と、を備える。また、データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102a(第1のページバッファ)と、パリティメモリセルに接続されるビット線に出力される出力データをラッチするページバッファ102c(第2のページバッファ)と、を含んで構成される。そして、第1のデータバスは、第1のページバッファ、及び第2のページバッファと接続され、第1のデータバスに接続されるとともに、第2のページバッファの出力データに基づき、第1のページバッファの出力データの誤りを訂正するECC回路107a(ECC回路)を備える。また、第1のデータバスに接続され、予め設定されたシードデータに基づいて、第1のページバッファから入力されるデータをランダマイズし、ECC回路から入力されるデータをデランダマイズするランダマイザ107b(ランダマイザ)を備える。
これにより、ページバッファ102の出力に接続されるECC Bus(第1のデータバス)を、ECCモード(第1動作モード)用に用いることができる。また、ECC Busには、ランダマイザ107b(ランダマイザ)、及びECC回路107a(ECC回路)が設けられる。そのため、本発明のNAND型フラッシュメモリ10によれば、ECC回路、及びランダマイザ107(ECC回路、及びランダマイザ)を内蔵したNAND型フラッシュメモリ10(半導体記憶装置)において、ECC処理におけるデコード(Decode)動作とデランダマイズ(De−Randomize)動作を同時に実行でき、復元、かつ訂正されたデータの読み出し時間を短縮することができる。
例えば、従来のNAND型フラッシュメモリにおいては、所定のデータ長のデータについてランダマイズ処理、及びECCデコード処理する場合、ページバッファにおけるデータのセットアップとセンシング処理とに20μs(マイクロ秒)、デランダマイズ処理に10μs、ECCのデコード処理に20μs、それぞれ要しており、データの読み出し時間が50μsであった。これに対し、本実施形態のNAND型フラッシュメモリ10では、デコード(Decode)動作とデランダマイズ(De−Randomize)動作をランダマイザ、及びECC回路107において同時に実行できるため、ECCデコード、及びデランダマイズ処理に要する時間を20μsまで短縮でき、データの読み出し時間を40μsまで短縮することができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
10…NAND型フラッシュメモリ、101…メモリアレイ、102,102a,102b,102c,102d…ページバッファ、103,108…カラムコーディング回路、104…カラム置換回路、105…パリティカラム置換回路、107a…ECC回路、107b…ランダマイザ、106,106c…I/Oパッド
Claims (7)
- 第1のデータバスと、
第1の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第1のデータバスと同じ本数のビット線と、前記第1のデータバスとを接続してデータを転送するデータ転送部と、を備え、
前記データ転送部は、
通常メモリセルに接続されるビット線に出力される出力データをラッチする第1のページバッファと、
パリティメモリセルに接続されるビット線に出力される出力データをラッチする第2のページバッファと、を含んで構成され、
前記第1のデータバスは、前記第1のページバッファ、及び前記第2のページバッファと接続され、
さらに、前記第1のデータバスに接続されるとともに、前記第2のページバッファの出力データに基づき、前記第1のページバッファの出力データの誤りを訂正するECC回路と、
前記第1のデータバスに接続され、予め設定されたシードデータに基づいて、前記第1のページバッファから入力されるデータをランダマイズし、前記ECC回路から入力されるデータをデランダマイズするランダマイザと、を備える、
ことを特徴とする半導体記憶装置。 - 前記第1のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有し、
前記ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、前記第1のデータバスからの書き込みを許可しないことを特徴とする請求項1に記載の半導体記憶装置。 - 前記第1のデータバスと異なる本数から構成され、前記第1のデータバスとは独立して設けられる第2のデータバスを備え、
前記データ転送部は、第2の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第2のデータバスと同じ本数のビット線と、前記第2のデータバスとを接続してデータを転送し、
前記第1の動作モードでは、前記第1のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、前記第2の動作モードでの救済置換を前提として存在する第3のページバッファとの間において救済置換を行わずに、前記ECC回路、及び前記ランダマイザの入力データとして取り扱うことを特徴とする請求項1または請求項2いずれかに記載の半導体記憶装置。 - 前記第1の動作モードのデータ書き込み動作において、
前記ランダマイザは、前記第1のページバッファの出力データをランダマイズして前記ECC回路に入力し、前記ECC回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第2のページバッファにパリティデータを書き込み、
一方、前記第1の動作モードのデータ読み出し動作において、
前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、
第1のランダマイズ及びECC処理を実行することを特徴とする請求項3に記載の半導体記憶装置。 - 前記第1のランダマイズ及びECC処理に替えて、
前記第1の動作モードのデータ書き込み動作において、
前記ランダマイザは、前記第1のページバッファの出力データをランダマイズして前記第1のページバッファに書き戻し、前記ECC回路は、前記第1のページバッファに書き戻されたデータに基づいて前記第2のページバッファにパリティデータを書き込み、
一方、前記第1の動作モードのデータ読み出し動作において、
前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、
第2のランダマイズ及びECC処理を実行することを特徴とする請求項4に記載の半導体記憶装置。 - 前記第2のランダマイズ及びECC処理に替えて、
前記第1の動作モードのデータ書き込み動作において、
前記ランダマイザは、ランダマイズ処理に先立って取り込んだ前記第1のページバッファの不良情報に基づいて、前記第1のページバッファの出力データのうち、前記固定されたデータを除く、前記第1のページバッファの出力データをランダマイズして前記ECC回路に入力し、前記ECC回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第2のページバッファにパリティデータを書き込み、
一方、前記第1の動作モードのデータ読み出し動作において、
前記ECC回路は、前記第2のページバッファのパリティデータに基づいて、前記第1のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第1のページバッファに書き戻す、
第3のランダマイズ及びECC処理を実行することを特徴とする請求項5に記載の半導体記憶装置。 - 前記ビット線は、n(nはpとqの公倍数であり、p、及びqはp>qである自然数)本のビット線であり、前記第1のデータバスはp本であり、前記第2のデータバスはq本であって、
前記データ転送部は、
前記第1の動作モードでは、(n/p)本のアドレス信号が入力されると、p本のビット線とp本の第1のデータバスとの接続を行い、
一方、前記第2の動作モードでは、(n/q)本のアドレス信号が入力されると、q本ビット線と第2のデータバスとの接続を行う、
ことを特徴とする請求項3から請求項6いずれか一項に記載の半導体記憶装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013006364A JP2014137834A (ja) | 2013-01-17 | 2013-01-17 | 半導体記憶装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013006364A JP2014137834A (ja) | 2013-01-17 | 2013-01-17 | 半導体記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014137834A true JP2014137834A (ja) | 2014-07-28 |
Family
ID=51415255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013006364A Pending JP2014137834A (ja) | 2013-01-17 | 2013-01-17 | 半導体記憶装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014137834A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019114313A (ja) * | 2017-12-25 | 2019-07-11 | ラピスセミコンダクタ株式会社 | 半導体集積回路 |
US10720945B2 (en) | 2016-05-12 | 2020-07-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and read and copy-back methods thereof |
US11194656B2 (en) | 2019-06-04 | 2021-12-07 | Kioxia Corporation | Memory system |
-
2013
- 2013-01-17 JP JP2013006364A patent/JP2014137834A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10720945B2 (en) | 2016-05-12 | 2020-07-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and read and copy-back methods thereof |
US11362685B2 (en) | 2016-05-12 | 2022-06-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and read and copy-back methods thereof |
JP2019114313A (ja) * | 2017-12-25 | 2019-07-11 | ラピスセミコンダクタ株式会社 | 半導体集積回路 |
US11194656B2 (en) | 2019-06-04 | 2021-12-07 | Kioxia Corporation | Memory system |
US11740965B2 (en) | 2019-06-04 | 2023-08-29 | Kioxia Corporation | Memory system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140169092A1 (en) | Semiconductor memory device | |
US9424953B2 (en) | Semiconductor memory device including repair circuit | |
JP4135680B2 (ja) | 半導体記憶装置および信号処理システム | |
US9336078B1 (en) | Memory error detection circuitry | |
TWI269155B (en) | Method and checker of checking for errors in an error correction code (ECC) protected mechanism and a computer system including the checker | |
US7610542B2 (en) | Semiconductor memory in which error correction is performed by on-chip error correction circuit | |
TW556203B (en) | Semiconductor memory device having ECC type error recovery circuit | |
JP3272903B2 (ja) | 誤り訂正検出回路と半導体記憶装置 | |
WO2010004664A1 (ja) | 半導体記憶装置 | |
JP2009104757A (ja) | 半導体記憶装置 | |
JP4602246B2 (ja) | 半導体集積回路 | |
US9362007B2 (en) | Semiconductor memory device | |
US20080034253A1 (en) | Ferroelectric memory with spare memory cell array and ecc circuit | |
US8990667B2 (en) | Error check and correction circuit, method, and memory device | |
KR102146071B1 (ko) | 반도체 메모리 장치 | |
JP2014137834A (ja) | 半導体記憶装置 | |
JP6018508B2 (ja) | 不揮発性半導体記憶装置及びそのテスト方法 | |
KR102146080B1 (ko) | 반도체 메모리 장치 | |
JP2014033364A (ja) | 誤り検出訂正回路、及びメモリ装置 | |
JP5617776B2 (ja) | メモリ回路,メモリ装置及びメモリデータの誤り訂正方法 | |
JP2014142976A (ja) | 半導体記憶装置 | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4534639B2 (ja) | 半導体記憶装置 | |
JP2014116049A (ja) | 半導体記憶装置 | |
KR102021560B1 (ko) | 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치 |