以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
なお、以下の説明では、信号X<i:0>(iは自然数)とは、(i+1)ビットの信号であり、各々が1ビットの信号である信号X<0>、X<1>、…、及びX<i>の集合を意味する。また、構成要素Y<i:0>とは、信号X<i:0>の入力又は出力に1対1に対応する構成要素Y<0>、Y<1>、…、及びY<i>の集合を意味する。
1.第1実施形態
第1実施形態に係る半導体記憶装置について説明する。
1.1 構成について
まず、第1実施形態に係る半導体記憶装置の構成について説明する。
1.1.1 メモリシステムの全体構成について
第1実施形態に係るメモリシステムの構成例について、図1を用いて説明する。図1は、第1実施形態に係るメモリシステムの構成の一例を示すブロック図である。メモリシステム1は、例えば、外部の図示しないホスト機器と通信する。メモリシステム1は、ホスト機器(図示せず)からのデータを保持し、また、データをホスト機器に読み出す。
図1に示すように、メモリシステム1は、コントローラ10及び半導体記憶装置(NANDフラッシュメモリ)20を備えている。コントローラ10は、ホスト機器から命令を受取り、受け取られた命令に基づいて半導体記憶装置20を制御する。具体的には、コントローラ10は、ホスト機器から書込みを指示されたデータを半導体記憶装置20に書込み、ホスト機器から読出しを指示されたデータを半導体記憶装置20から読み出してホスト機器に送信する。コントローラ10は、NANDバスによって半導体記憶装置20に接続される。半導体記憶装置20は、複数のメモリセルを備え、データを不揮発に記憶する。
NANDバスは、NANDインタフェースに従った信号/CE、CLE、ALE、/WE、/RE、/WP、/RB、及びI/O<7:0>の各々について、個別の信号線を介して送受信を行う。信号/CEは、半導体記憶装置20をイネーブルにするための信号である。信号CLEは、信号CLEが“H(High)”レベルである間に半導体記憶装置20に流れる信号I/O<7:0>がコマンドであることを半導体記憶装置20に通知する。信号ALEは、信号ALEが“H”レベルである間に半導体記憶装置20に流れる信号I/O<7:0>がアドレスであることを半導体記憶装置20に通知する。信号/WEは、信号/WEが“L(Low)”レベルである間に半導体記憶装置20に流れる信号I/O<7:0>を半導体記憶装置20に取り込むことを指示する。信号/REは、半導体記憶装置20に信号I/O<7:0>を出力することを指示する。信号/WPは、データ書込み及び消去の禁止を半導体記憶装置20に指示する。信号/RBは、半導体記憶装置20がレディ状態(外部からの命令を受け付ける状態)であるか、ビジー状態(外部からの命令を受け付けない状態)であるかを示す。信号I/O<7:0>は、例えば8ビットの信号である。信号I/O<7:0>は、半導体記憶装置20とコントローラ10との間で送受信されるデータの実体であり、コマンドCMD、アドレスADD、及びデータDATを含む。データDATは、書込みデータ及び読出しデータを含む。
1.1.2 コントローラの構成について
引き続き図1を用いて、第1実施形態に係るメモリシステムのコントローラについて説明する。コントローラ10は、プロセッサ(CPU:Central Processing Unit)11、内蔵メモリ(RAM:Random Access Memory)12、ECC(Error Check and Correction)回路13、NANDインタフェース回路14、バッファメモリ15、及びホストインタフェース回路16を備えている。
プロセッサ11は、コントローラ10全体の動作を制御する。プロセッサ11は、例えば、ホスト機器から受信したデータの読出し命令に応答して、NANDインタフェースに基づく読出し命令を半導体記憶装置20に対して発行する。この動作は、書込み及び消去の場合についても同様である。また、プロセッサ11は、半導体記憶装置20からの読出しデータに対して、種々の演算を実行する機能を有する。
内蔵メモリ12は、例えば、DRAM(Dynamic RAM)等の半導体メモリであり、プロセッサ11の作業領域として使用される。内蔵メモリ12は、半導体記憶装置20を管理するためのファームウェア、及び各種の管理テーブル等を保持する。
ECC回路13は、エラー検出及びエラー訂正処理を行う。より具体的には、データの書込み時には、ホスト機器から受信したデータに基づいて、或る数のデータの組毎にECC符号を生成する。また、データの読出し時には、ECC符号に基づいてECC復号し、エラーの有無を検出する。そしてエラーが検出された際には、そのビット位置を特定し、エラーを訂正する。ECC回路13は、LDPC(Low Density Parity Check)や、BCH(Bose - Chaudhuri - Hocquenghem)等の種々の手法を適用可能である。
NANDインタフェース回路14は、NANDバスを介して半導体記憶装置20と接続され、半導体記憶装置20との通信を司る。NANDインタフェース回路14は、プロセッサ11の指示により、コマンドCMD、アドレスADD、及び書込みデータを半導体記憶装置20に送信する。また、NANDインタフェース回路14は、半導体記憶装置20から読出しデータを受信する。
バッファメモリ15は、コントローラ10が半導体記憶装置20及びホスト機器から受信したデータ等を一時的に保持する。バッファメモリ15は、例えば、半導体記憶装置20からの読出しデータ、及び読出しデータに対する演算結果等を一時的に保持する記憶領域としても使用される。
ホストインタフェース回路16は、ホスト機器と接続され、ホスト機器との通信を司る。ホストインタフェース回路16は、例えば、ホスト機器から受信した命令及びデータを、それぞれプロセッサ11及びバッファメモリ15に転送する。
1.1.3 半導体記憶装置の構成について
次に、第1実施形態に係る半導体記憶装置の構成例について、図2を用いて説明する。図2は、第1実施形態に係る半導体記憶装置の構成の一例を示すブロック図である。
半導体記憶装置20は、メモリセルアレイ21、入出力回路22、ロジック制御回路23、レジスタ24、シーケンサ25、電圧生成回路26、ロウデコーダ27、及びセンスアンプモジュール28を備えている。
メモリセルアレイ21は、複数のブロックBLK(BLK0、BLK1、…)を備えている。ブロックBLKは、ワード線及びビット線に関連付けられた複数の不揮発性メモリセルトランジスタ(図示せず)を含む。ブロックBLKは、例えばデータの消去単位となり、同一のブロックBLK内のデータは、一括して消去される。各ブロックBLKは、複数のストリングユニットSU(SU0、SU1、SU2、…)を備えている。各ストリングユニットSUは、NANDストリングNSの集合である。NANDストリングNSは、複数のメモリセルトランジスタを含む。なお、メモリセルアレイ21内のブロック数、1ブロックBLK内のストリングユニット数、及び1ストリングユニットSU内のNANDストリング数は、任意の数に設定出来る。
入出力回路22は、コントローラ10と信号I/O(I/O1〜I/O8)を送受信する。入出力回路22は、信号I/O内のコマンドCMD及びアドレスADDをレジスタ24に転送する。入出力回路22は、書き込みデータ及び読み出しデータをセンスアンプモジュール28と送受信する。
ロジック制御回路23は、コントローラ10から信号/CE、CLE、ALE、/WE、/RE、及び/WPを受信する。また、ロジック制御回路23は、信号/RBをコントローラ10に転送して半導体記憶装置20の状態を外部に通知する。
レジスタ24は、コマンドCMD及びアドレスADDを保持する。レジスタ24は、アドレスADDをロウデコーダ27及びセンスアンプモジュール28に転送すると共に、コマンドCMDをシーケンサ25に転送する。
シーケンサ25は、コマンドCMDを受け取り、受け取ったコマンドCMDに基づくシーケンスに従って半導体記憶装置20の全体を制御する。
電圧生成回路26は、シーケンサ25からの指示に基づき、データの書込み、読出し、及び消去等の動作に必要な電圧を生成する。電圧生成回路26は、生成した電圧をロウデコーダ27及びセンスアンプモジュール28に供給する。
ロウデコーダ27は、レジスタ24からアドレスADD中のロウアドレスを受取り、当該ロウアドレスに基づいてブロックBLKを選択する。そして、選択されたブロックBLKには、ロウデコーダ27を介して電圧生成回路26からの電圧が転送される。
センスアンプモジュール28は、データの読出し時には、メモリセルトランジスタからビット線に読み出された読出しデータをセンスし、センスした読出しデータを入出力回路22に転送する。センスアンプモジュール28は、データの書込み時には、ビット線を介して書込まれる書込みデータをメモリセルトランジスタに転送する。また、センスアンプモジュール28は、レジスタ24からアドレスADD中のカラムアドレスを受取り、当該カラムアドレスに基づくカラムのデータを出力する。
1.1.4 メモリセルアレイの構成について
次に、第1実施形態に係る半導体記憶装置のメモリセルアレイの構成について、図3を用いて説明する。図3は、第1実施形態に係る半導体記憶装置のメモリセルアレイの構成を説明するための回路図の一例である。
図3に示すように、NANDストリングNSの各々は、例えば8個のメモリセルトランジスタMT(MT0〜MT7)と、選択トランジスタST1と、選択トランジスタST2とを備える。なお、メモリセルトランジスタMTの個数は8個に限られず、16個や32個、64個、128個等であってもよく、その数は限定されるものではない。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを含む積層ゲートを備える。各メモリセルトランジスタMTは、選択トランジスタST1及びST2の間に、直列接続される。なお、以下の説明では『接続』とは、間に別の導電可能な要素が介在する場合も含む。
或るブロックBLK内において、ストリングユニットSU0〜SU3の選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0〜SGD3に接続される。また、ブロックBLK内の全てのストリングユニットSUの選択トランジスタST2のゲートは、選択ゲート線SGSに共通接続される。同一のブロックBLK内のメモリセルトランジスタMT0〜MT7の制御ゲートは、それぞれワード線WL0〜WL7に接続される。すなわち、同じアドレスのワード線WLは、同一のブロックBLK内の全てのストリングユニットSUに共通接続されており、選択ゲート線SGSは、同一のブロックBLK内の全てのストリングユニットSUに共通接続されている。一方、選択ゲート線SGDは、同一のブロックBLK内のストリングユニットSUの1つのみに接続される。
また、メモリセルアレイ21内でマトリクス状に配置されたNANDストリングNSのうち、同一行にあるNANDストリングNSの選択トランジスタST1の他端は、m本のビット線BL(BL0〜BL(m−1)(mは自然数))のいずれかに接続される。また、ビット線BLは、複数のブロックBLKにわたって、同一列のNANDストリングNSに共通接続される。
また、選択トランジスタST2の他端は、ソース線CELSRCに接続される。ソース線CELSRCは、複数のブロックBLKにわたって、複数のNANDストリングNSに共通接続される。
上述のとおり、データの消去は、例えば、同一のブロックBLK内にあるメモリセルトランジスタMTに対して一括して行われる。これに対して、データの読出し及び書込みは、いずれかのブロックBLKのいずれかのストリングユニットSUにおける、いずれかのワード線WLに共通接続された複数のメモリセルトランジスタMTにつき、一括して行われ得る。このような、1つのストリングユニットSU中でワード線WLを共有するメモリセルトランジスタMTの組は、例えば、セルユニットCUと称される。つまり、セルユニットCUは、一括して書込み、又は読み出し動作が実行されるメモリセルトランジスタMTの組である。セルユニットCUは、例えば、1又は複数の記憶領域の組を有し、1つのセルユニットCUに対する書込み又は読出し動作は、当該記憶領域の組の1つに対して実行される。このような記憶領域の単位を「ページ」と言う。
次に、メモリセルアレイ21の断面構造について図4を用いて説明する。図4は、第1実施形態に係る半導体記憶装置のメモリセルアレイの一部の断面構造の一例を示している。特に、図4は、1つのブロックBLK内の2つのストリングユニットSU0及びSU1に関する部分を示している。具体的には、図4は、2つのストリングユニットSU0及びSU1のそれぞれの2つのNANDストリングNSと、その周辺の部分と、を示している。そして、図4に示されるNANDストリングNSの構成が、X方向及びY方向に複数配列されており、例えばX方向及びY方向に並ぶ複数のNANDストリングNSの集合が1つのストリングユニットSUに相当する。
半導体記憶装置20は、半導体基板30上に設けられている。以下の説明では、半導体基板30の表面と平行な面をXY平面とし、XY平面に垂直な方向をZ方向とする。また、X方向とY方向は、互いに直交するものとする。
半導体基板30の上部には、p型ウェル領域30pが設けられる。p型ウェル領域30p上に、複数のNANDストリングNSが設けられる。すなわち、p型ウェル領域30p上には、例えば、選択ゲート線SGSとして機能する配線層31、ワード線WL0〜WL7として機能する8層の配線層32(WL0〜WL7)、及び選択ゲート線SGDとして機能する配線層33が、順次積層される。配線層31及び33は、複数層積層されていてもよい。積層された配線層31〜33間には、図示せぬ絶縁膜が設けられる。
配線層31は、例えば、1つのブロックBLK内の複数のNANDストリングNSの各々の選択トランジスタST2のゲートに共通接続される。配線層32は、各層毎に、1つのブロックBLK内の複数のNANDストリングNSの各々のメモリセルトランジスタMTの制御ゲートに共通接続される。配線層33は、1つのストリングユニットSU内の複数のNANDストリングNSの各々の選択トランジスタST1のゲートに共通接続される。
メモリホールMHは、配線層33、32、31を通過してp型ウェル領域30pに達するように設けられる。メモリホールMHの側面上には、ブロック絶縁膜34、電荷蓄積層(絶縁膜)35、及びトンネル酸化膜36が順に設けられる。メモリホールMH内には、半導体ピラー(導電膜)37が埋め込まれる。半導体ピラー37は、例えばノンドープのポリシリコンであり、NANDストリングNSの電流経路として機能する。半導体ピラー37の上端上には、ビット線コンタクトBLCとして機能するコンタクトプラグ38が設けられる。コンタクトプラグ38の上端上には、ビット線BLとして機能する配線層39が設けられる。なお、1つのストリングユニットSU内の1つのNANDストリングNSは、コンタクトプラグ38を介して、他のストリングユニットSU内の1つのNANDストリングNSと同一の配線層39に接続される。
以上のように、p型ウェル領域30pの上方には、選択トランジスタST2、複数のメモリセルトランジスタMT、及び選択トランジスタST1が順に積層されており、1つのメモリホールMHが、1つのNANDストリングNSに対応している。
p型ウェル領域30pの上部には、n+型不純物拡散領域40及びp+型不純物拡散領域41が設けられる。n+型不純物拡散領域40の上面上には、コンタクトプラグ42が設けられる。コンタクトプラグ42の上面上には、ソース線CELSRCとして機能する配線層43が設けられる。p+型不純物拡散領域41の上面上にはコンタクトプラグ44が設けられる。コンタクトプラグ44の上面上には、ウェル線CPWELLとして機能する配線層45が設けられる。
ストリングユニットSU0側に設けられる配線層33と、ストリングユニットSU1側に設けられる配線層33とは、絶縁領域46によって互いに絶縁される。また、ストリングユニットSU0及びSU1は、図示しない他のストリングユニットSUとスリット領域47によって区分けされる。
なお、メモリセルアレイ21の構成については、その他の構成であってもよい。メモリセルアレイ21の構成については、例えば“三次元積層不揮発性半導体メモリ”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“三次元積層不揮発性半導体メモリ”という2009年3月18日に出願された米国特許出願12/406,524号、“不揮発性半導体記憶装置及びその製造方法”という2010年3月25日に出願された米国特許出願12/679,991号、“半導体メモリ及びその製造方法”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
1.1.5 メモリセルトランジスタの閾値分布について
次に、メモリセルトランジスタMTの取り得る閾値電圧の分布について、図5を用いて説明する。図5は、第1実施形態に係る半導体記憶装置のメモリセルトランジスタの閾値電圧の分布の一例を示す模式図である。図5では、1つのメモリセルトランジスタMTに3ビットのデータが保持される場合(TLC:Triple Level Cell)の例が示される。
図5に示すように、メモリセルトランジスタMTの閾値電圧は、上位(Upper)ビット(上位データ)、中位(Middle)ビット(中位データ)、及び下位(Lower)ビット(下位データ)による3ビットデータ、すなわち“111”、“110”、“100”、“000”、“010”、“011”、“001”、及び“101”データを保持可能である。
“111”データの閾値電圧は、“Er”レベルであり、例えば、データの消去状態に相当する。そして、“Er”レベルに含まれる閾値電圧は、電圧ARより小さく、正又は負の値を有する。
“110”、“100”、“000”、“010”、“011”、“001”、及び“101”データの閾値電圧は、それぞれ“A”、“B”、“C”、“D”、“E”、“F”、及び“G”レベルである。“A”レベル〜“G”レベルは、電荷蓄積層35に電荷が注入されてメモリセルトランジスタMTにデータが書込まれた状態に相当し、各分布に含まれる閾値電圧は、例えば正の値を有する。“A”レベルに含まれる閾値電圧は、読出し電圧ARより大きく、かつ読出し電圧BRより小さい。“B”レベルに含まれる閾値電圧は、読出し電圧BRより大きく、かつ読出し電圧CRより小さい。“C”レベルに含まれる閾値電圧は、読出し電圧CRより大きく、かつ読出し電圧DRより小さい。“D”レベルに含まれる閾値電圧は、読出し電圧DRより大きく、かつ読出し電圧ERより小さい。“E”レベルに含まれる閾値電圧は、読出し電圧ERより大きく、かつ読出し電圧FRより小さい。“F”レベルに含まれる閾値電圧は、読出し電圧FRより大きく、かつ読出し電圧GRより小さい。そして、“G”レベルに含まれる閾値電圧は、読出し電圧GRより大きく、電圧VREADより小さい。電圧VREADは、或るブロックBLK内へのデータの読出しの際に、読出しの対象ではないワード線WLに印加される電圧である。また、電圧AR〜GRは、総称して電圧VCGRVとも言う。
以上のように、各メモリセルトランジスタMTは、8個の閾値電圧の分布のいずれかを有することで、8種類の状態を取ることができる。なお、各データと閾値レベルとの関係は上記に限定されるものではなく、適宜変更可能である。
また、上述の通り、データの書込み及び読出しは、1つのセルユニットCU内のページ単位で行われる。図5の例では、データは下位ビット毎、中位ビット毎、又は上位ビット毎に書込まれ、読み出される。したがって、メモリセルトランジスタMTが3ビットデータを保持している場合には、1つのセルユニットCU内の3つのページにそれぞれ、上位ビット、中位ビット、及び下位ビットに対応するデータが割当てられる。以下の説明では、上位ビット、中位ビット、及び下位ビットについて一括して書込み又は読み出されるページは、それぞれ、上位ページ、中位ページ、及び下位ページと言う。
1.1.6 センスアンプモジュールの構成について
次に、第1実施形態に係る半導体記憶装置のセンスアンプモジュールの構成について説明する。図6は、第1実施形態に係る半導体記憶装置のセンスアンプモジュールの構成の一例を説明するための平面図である。図6に示すように、センスアンプモジュール28は、ビット線BL毎に設けられたセンスアンプユニットSAU(SAU0、SAU1、…、SAU(m−1))を備えている。
センスアンプユニットSAUの各々は、センスアンプSA、演算部OP、及び例えば5つのラッチ回路ADL、BDL、CDL、DDL、並びにXDLを備えている。
センスアンプSAは、対応するビット線BLに読み出されたデータをセンスし、又書込みデータに応じてビット線BLに電圧を印加する。すなわちセンスアンプSAは、ビット線BLを直接的に制御するモジュールである。そしてセンスアンプSAには、読出し時には、例えばシーケンサ25によってストローブ信号STBが与えられる。センスアンプSAは、ストローブ信号STBがアサートされるタイミングで読み出しデータを確定させる。そして、内部に有するラッチ回路(図示せず)にこのデータを保持し、更にラッチ回路ADL、BDL、CDL、DDL、及びXDLのいずれかに転送する。
ラッチ回路ADL、BDL、CDL、及びDDLは、読出しデータ及び書込みデータを一時的に保持する。演算部OPは、センスアンプSA、ラッチ回路ADL、BDL、CDL、DDL、及びXDLに保持されているデータに対して、否定(NOT)演算、論理和(OR)演算、論理積(AND)演算、否定論理積(NAND)演算、否定論理和(NOR)演算、排他的論理和(XOR)演算等、種々の論理演算を行う。
これらのセンスアンプSA、ラッチ回路ADL、BDL、CDL、及びDDL、並びに演算部OPは、互いにデータを送受信可能なようにバスによって接続されている。そしてこのバスは、更にラッチ回路XDLに接続されている。
センスアンプモジュール28におけるデータの入出力は、ラッチ回路XDLを介して行われる。すなわち、コントローラ10から受信したデータは、ラッチ回路XDLを介して、ラッチ回路ADL、BDL、CDL、DDL、又はセンスアンプSAに転送される。また、ラッチ回路ADL、BDL、CDL、DDL又はセンスアンプSAのデータは、ラッチ回路XDLを介して、信号I/O<7:0>のいずれかの信号としてコントローラ10へ送信される。ラッチ回路XDLは、半導体記憶装置20のキャッシュメモリとして機能する。したがって、ラッチ回路ADL、BDL、CDL、及びDDLが使用中であったとしても、ラッチ回路XDLが空いていれば、半導体記憶装置20はレディ状態となることができる。
なお、図6の例では、ビット線BL0は、信号I/O<0>を通信する信号線に接続され、ビット線BL1は、信号I/O<1>を通信する信号線に接続され、ビット線BL(m−1)に接続されたラッチ回路XDLは、信号I/O<7>を通信する信号線に接続されている。このように、ビット線BLとコントローラ10との間を接続する信号線は、信号I/O<7:0>のいずれかに対応している。すなわち、或るビット線BLに接続されたNANDストリングNSは、信号I/O<7:0>のいずれかに対応付けられる。
1.2 動作について
次に、第1実施形態に係る半導体記憶装置の動作について説明する。
1.2.1 読出し動作について
まず、第1実施形態に係る半導体記憶装置において用いられる各種読出し動作について説明する。
1.2.1.1 テストリードについて
第1実施形態に係る半導体記憶装置におけるテストリード動作について説明する。「テストリード(test reading)」とは、後述する「ノーマルリード(normal reading)」及び「シフトリード(shift reading)」と区別するための用語であり、例えば、単一の特別な読出し電圧を用いて読出し動作を実行するものである。以下の説明では、テストリードに用いられる読出し電圧に対しては、読出し電圧の末尾に“t”を付して、他の読出し動作における読出し電圧と区別する。
図7は、第1実施形態に係る半導体記憶装置におけるテストリード動作の概要を示すための、半導体記憶装置20内の非選択ワード線、選択ワード線、ノードSEN、及び信号STBのタイミングチャートである。ノードSENは、センスアンプSA内に含まれるノードであり、選択ワード線に接続されたメモリセルトランジスタMTがオン状態となるかオフ状態となるかにより、ノードSENの電位が変動し、この変動量に応じてデータが“0”か“1”かが判定される。本例では、ノードSENの電位が或る閾値を下回った際には、センスアンプSAはメモリセルトランジスタMTがオン状態であると判定し、内部のラッチ回路にデータ“0”を保持する。逆に、ノードSENの電位が或る電位以上を維持すれば、センスアンプSAはメモリセルトランジスタMTがオフ状態であると判定し、データ“1”を保持する。
図7に示すように、テストリードでは、ロウデコーダ27は、選択ワード線WLに、時刻T1において或る電圧Vtを印加する。またこの間、ロウデコーダ27は、非選択ワード線に電圧VREADを印加し、センスアンプSA内のノードSENは、電圧VSSより高い電位VSENに充電される。そして、シーケンサ25は、選択ワード線WLに電圧Vtが印加されている間である時刻T2において、信号STBをアサート(図7の例では“H”レベル)する。
例えば、選択ワード線WLに電圧Vtが印加されることによってメモリセルトランジスタMTがオンした場合には、ビット線BLからソース線SLに電流が流れる。この結果、ノードSENの電荷も放電され、ノードSENの電位が低下する。センスアンプSAは、時刻T2において信号STBをアサートして、ノードSENの状態をラッチ回路に取り込む。つまり、ノードSENの電位が低下していればラッチ回路にデータ“0”が格納され、一低電位以上を維持していればラッチ回路にデータ“1”が保持される。
以上のように、テストリードでは、単一の特別な読出しレベル(電圧Vt)によってデータが確定する。
1.2.1.2 ノーマルリードについて
次に、第1実施形態に係る半導体記憶装置におけるノーマルリード動作について説明する。「ノーマルリード」とは、「テストリード」とは異なり、データを読み出す際に予め定められた(デフォルトの)読出し電圧によってデータを読み出す動作を意味する。以下の説明では、ノーマルリードに用いられる読出し電圧に対しては、各レベルの読出し電圧の末尾に“def”を付して、他の読出し動作における読出し電圧と区別する。
図8は、第1実施形態に係る半導体記憶装置におけるノーマルリード動作の概要を示すための、半導体記憶装置20内の非選択ワード線、選択ワード線、ノードSEN、及び信号STBのタイミングチャートである。
図8では、一例として、中位ページを読み出す場合を示している。
図8に示すように、中位ページ読出しでは、ロウデコーダ27は、選択ワード線WLに、時刻T3において電圧BRdefを、時刻T5において電圧DRdefを、時刻T7において電圧FRdefを、それぞれ印加する。またこの間、ロウデコーダ27は、非選択ワード線に電圧VREADを印加し、センスアンプSA内のノードSENは、電圧VSSより高い電位VSENに充電される。そして、シーケンサ25は、選択ワード線WLに電圧BRdef、DRdef、及びFRdefの各々が印加されている間に1回ずつ、すなわち時刻T4、T6、及びT8においてそれぞれ、信号STBをアサートする。
例えば、選択ワード線WLに電圧BRdefが印加されることによってメモリセルトランジスタMTがオンした場合には、センスアンプSAは、時刻T4において信号STBをアサートして、ノードSENの状態をラッチ回路に取り込む。選択ワード線WLに電圧DRdef又はFRdefが印加される場合も同様であり、時刻T6及びT8で信号STBをアサートして、ノードSENの電位に基づくデータをラッチ回路に保持させる。
演算部OPは、ラッチ回路に保持された3つの読出しレベルに基づくデータを用いて演算処理を行い、1つの読出しデータを生成する。
以上のように、中位データ読出しでは、3つの読出しレベル(電圧BRdef、DRdef、及びFRdef)によってデータが確定する。
なお、下位データ読出し及び上位データ読出しでは、2つの読出しレベル(下位データ読出しの場合は電圧ARdef及びERdef、上位データ読出しの場合は電圧CRdef及びGRdef)によってデータが確定する。
1.2.1.3 シフトリードについて
次に、第1実施形態に係る半導体記憶装置におけるシフトリード動作について説明する。シフトリードは、例えば、ノーマルリードでは正しくデータを読み出せない場合に実行される。
先に説明した図5では、各データの閾値電圧分布は互いに独立している。よって、読出し電圧として電圧VCGRVdefを各データの閾値電圧分布の間に設定することで、ノーマルリードは正しいデータを読み出すことができる。
しかしながら、種々の要因により、メモリセルトランジスタMTの閾値電圧は変動し得る。その結果、図5における各データの閾値電圧分布は、その分布幅が広がり、又は分布が移動することにより、隣接する分布同士が重なる場合がある。この様子を図9に示す。例えば、書込み直後において、“A”レベル及び“B”レベルの閾値電圧分布が図9(A)に示す通りであったとする。しかし、ディスターブ等の要因により、図9(B)に示すように閾値電圧の分布が広がったとする。すると、当初設定されていた読出し電圧BRdefで読出しを行うと、斜線部分の領域に相当するメモリセルトランジスタMTの読出しデータがエラーとなる。そして、エラービット数がECC回路13のエラー訂正可能ビット数を超えていれば、データを正しく訂正することができない。
このような場合、エラービット数が少なくなるように、より2つのレベルの閾値電圧分布の重なりが小さくなる電圧(例えば、閾値電圧分布の重なりが最も小さくなる電圧BRopt)が新たな読出し電圧として設定されることが望ましい。このように、ノーマルリードにおいて予め定められた電圧(例えば電圧BRdef)から或る値だけずらした電圧(例えば電圧BRopt)を読出し電圧に設定して行う読出し動作を、シフトリードと言う。このように、シフトリードは、ノーマルリードに対して読出し電圧を変化させた読出し方式である。シフトリードは、予め定められた電圧と異なる読出し電圧が使用されはするものの、対象のページのデータが読み出される点で、ノーマルリードと同じである。
図10は、第1実施形態に係る半導体記憶装置のシフトリード動作を説明するためのコマンドシーケンスである。
図10に示すように、コントローラ10は、まずプリフィックスコマンド“xxh”を発行する。コマンド“xxh”は、コントローラ10が半導体記憶装置20に対して、シフトリードを行う旨を宣言するためのコマンドである。引き続きコントローラ10は、例えば1サイクルにわたってアドレスを発行する。その後、コントローラ10は、例えば4サイクルにわたって電圧VCGRVdefのシフト量に対応する値ΔDAC1〜ΔDAC4を発行する。DAC(D/A converter)値は、例えば、コントローラ10が半導体記憶装置20に読出し電圧VCGRVを指定する際の指示値である。例えば、値ΔDAC1〜ΔDAC4はそれぞれ、シフトリードにおいて1〜4番目に選択ワード線WLに印加されるレベルの読出し電圧VCGRVdefからのシフト量ΔV1〜ΔV4に対応する。より具体的には、例えば、中位ページのシフトリードにおいて値ΔDAC1〜ΔDAC3が指定された場合、“B”レベル、“D”レベル、及び“F”レベルの読出し電圧BR、DR、及びFRは、シフト量ΔV1〜ΔV3を用いて、以下のように表される。
BR=BRdef+ΔV1(ΔDAC1)
DR=BRdef+ΔV2(ΔDAC2)
FR=BRdef+ΔV3(ΔDAC3)
なお、中位データのシフトリードにおいて、値ΔDAC4は冗長データであり、更に付加的な情報が設定されてもよい。
上述の例は、下位ページ及び上位ページのシフトリードにおいても同様である。すなわち、下位ページのシフトリードにおいて値ΔDAC1及びΔDAC2が指定された場合、“A”レベル及び“E”レベルの読出し電圧AR及びERは、シフト量ΔV1及びΔV2を用いて、以下のように表される。
AR=ARdef+ΔV1(ΔDAC1)
ER=ERdef+ΔV2(ΔDAC2)
また、上位ページのシフトリードにおいて値ΔDAC1及びΔDAC2が指定された場合、“C”レベル及び“G”レベルの読出し電圧CR及びGRは、シフト量ΔV1及びΔV2を用いて、以下のように表される。
CR=CRdef+ΔV1(ΔDAC1)
GR=GRdef+ΔV2(ΔDAC2)
なお、下位データ及び上位データのシフトリードにおいて、値ΔDAC3及びΔDAC4は冗長データであり、更に付加的な情報が設定されてもよい。
更にコントローラ10は、コマンド“zzh”を発行する。コマンド“zzh”は、変数であり、例えば“zzh”=“01h”の場合には下位ページ読出しを命令し、“zzh”=“02h”の場合には中位ページ読出しを命令し、“zzh”=“03h”の場合には上位ページ読出しを命令する。
その後は、コントローラ10は、ノーマルリードと同様に、第1読出しコマンド“00h”を発行し、引き続き例えば5サイクルにわたってアドレス(カラムアドレス、ブロックアドレス、ページアドレスを含む)を発行する。その後、コントローラ10は、第2読出しコマンド“30h”を発行する。
コマンド“30h”がレジスタ24に格納されると、シーケンサ25は、電圧生成回路26、ロウデコーダ27、及びセンスアンプモジュール28等を制御して、読出し動作を開始する。ロジック制御回路23は、信号/RBを“L”レベルにして、半導体記憶装置20がビジー状態であることをコントローラ10に知らせる。読出し動作の間、コントローラ10から送信されたアドレスに相当する領域から1ページ分のデータが読み出され、ラッチ回路ADL〜DDLのいずれかに保持される。保持されたデータは、必要に応じて演算部OPによる所定の演算処理が実行された後、ラッチ回路XDLに保持される。ロジック制御回路23は、信号/RBを“H”レベルにして、半導体記憶装置20がレディ状態であることをコントローラ10に知らせる。
コントローラ10は、半導体記憶装置20がレディ状態になると、信号/REを繰り返しアサートする。信号/REがトグルされるたびに、メモリセルアレイ21から読み出されたデータがコントローラ10へ送信される。
なお、上記コマンドシーケンスにおいて、半導体記憶装置20にコマンドを入力する際には、コントローラ10は信号CLEをアサートし、アドレスを入力する際には信号ALEをアサートし、データを入力する際には信号CLE及びALEをネゲートする。また、半導体記憶装置20に何らかの信号を入力する際には、コントローラ10は、信号/WEをトグルさせる。
1.2.2 トラッキング動作について
データ読出しの際にエラービット数を最少とするためには、2つのレベルの閾値電圧分布の重なりが最小となる谷位置における電圧(例えば、図9(B)における電圧BRopt)でシフトリードを行うことが望ましい。以下の説明では、最適な読出し電圧に対しては、各レベルの読出し電圧の末尾に“opt”を付して、他の読出し動作における読出し電圧と区別する。そして、以下では、最適な読出し電圧VCGRVoptを探索するための動作(トラッキング動作)について説明する。
1.2.2.1 ビットカウントトラッキングについて
第1実施形態に係るトラッキング動作の全体動作を説明する前に、ビットカウントトラッキングについて説明する。ビットカウントトラッキングは、第1実施形態に係る半導体記憶装置に対するトラッキング動作を構成する基本的な概念である。
図11は、第1実施形態に係る半導体記憶装置のビットカウントトラッキングを説明するための模式図である。図11(A)は、メモリセルトランジスタMT群の閾値電圧の分布の一例として、“A”レベル及び“B”レベルの閾値電圧分布を示したグラフである。図11(B)は、或る読出し電圧に対してオン状態となるメモリセル数(オンセル数)の推移を示したグラフである。図11(C)は、読出し電圧の範囲におけるオンセル数変化量を示したヒストグラムである。なお、図11(B)及び11(C)は、図11(A)の閾値電圧分布を有するメモリセルトランジスタMT群に対応してプロットされたものである。
図11(B)に示すように、読出し電圧を上昇させていくと、“A”レベルの中央値である電圧VAよりわずかに小さい電圧でオンセル数が急激に増大し、dM/dVが最大となる。ここで、中央値とは、図11(A)において最も閾値電圧の分布確率が高い電圧であり、Mはオンセル数で、Vは選択ワード線WLの電圧である。更に読出し電圧を大きくしていくと、オンセル数の増加率は小さくなり、或る値において最小値となる。この読出し電圧における増加率は、“A”レベルの閾値電圧分布と、“B”レベルの閾値電圧の分布とが重ならない場合にはゼロとなる。他方で重なる場合には、或る一定のゼロではない最小値(>0)となる。そして更に読出し電圧を大きくしていくと、再びオンセル数の増加率が大きくなり、“B”レベルの中央値である電圧VBよりわずかに小さい電圧で再びdM/dVが最大となる。
上述のオンセル数の累積値の変化によって、2つのレベル間の谷位置、すなわち2つのレベルの閾値電圧分布の重なりが最も小さくなる読出し電圧の位置を検出することができる。例えば、まず、読出し電圧V1を用いて読出し動作が行われる。この時のオンセル数をM1とする。次に、電圧V1よりΔVだけ大きい電圧V2を用いて読出し動作が行われる。この時のオンセル数をM2とする。すると、選択ワード線WLの電圧がV1からV2に上昇した際に新たにオンするメモリセルトランジスタMTの数は、(M2−M1)個である。
引き続き、電圧V2よりΔVだけ大きい電圧V3を用いて読出し動作を行う。この時のオンセル数をM3とする。すると、選択ワード線WLの電圧がV2からV3に上昇した際に新たにオンするメモリセルトランジスタMTの数は、(M3−M2)個である。そして、(M2−M1)>(M3−M2)であったとすれば、dM/dVが最小となる電圧は、少なくとも電圧V2より高いと考えられる。
引き続き、電圧V3よりΔVだけ大きい電圧V4を用いて読出し動作を行う。この時のオンセル数がM4であり、(M3−M2)>(M4−M3)であったとすれば、図11(C)のようなヒストグラムが得られる。
以上の結果、オンセル数変化量によって、図11(C)における一点鎖線で示されるような閾値電圧分布を推測することができ、“A”レベルと“B”レベルの間の谷位置が電圧V2と電圧V3との間にあることが推定できる。
オンセル数変化量は、例えば、読出し電圧を変化させることによって1ページ当たりの読出しデータ内のビット数(ビットカウント)が変化する様子を追跡することにより抽出される。これらの動作を総称してビットカウントトラッキングという。
1.2.2.2 全体動作について
図12は、第1実施形態に係る半導体記憶装置のトラッキングの全体動作を説明するためのフローチャートである。
図12に示すように、ステップST1において、コントローラ10は、既定の読出し電圧VCGRVdefを適用したノーマルリードコマンドを半導体記憶装置20に発行する。
ステップST2において、半導体記憶装置20は、ノーマルリードを実行し、読出しデータをコントローラ10に送信する。
ステップST3において、ECC回路13は、ノーマルリードの読出しデータに基づいてECCを実行する。コントローラ10は、ノーマルリードの読出しデータがECCをパスした場合(ステップST3;パス)、ステップST14に進み、フェイルした場合、(ステップST3;フェイル)、ステップST4に進む。
ステップST4以降のステップによって、コントローラ10は、7つの電圧AR〜GRの最適な値の発見を試みる。そのために、コントローラ10は、2段階のトラッキング動作を行う。コントローラ10は、第1段階目のトラッキング動作によって、トラッキング動作を行う複数の範囲を特定し、第2段階目のトラッキング動作によって、特定された範囲でトラッキング動作を行って最適な電圧AR〜GRを推定する。
ステップST4及びST5において、コントローラ10及び半導体記憶装置20は、1段階目のトラッキング動作(下位ページトラッキング動作及び上位ページトラッキング動作)をそれぞれ行う。下位ページトラッキング動作及び上位ページトラッキング動作の詳細については、後述する。
ステップST6において、コントローラ10は、1段階目のトラッキング動作の結果に基づいて、後続する2段階目のトラッキング動作に用いるサーチ範囲及び暫定的な谷位置を検出する。
ステップST4〜ST6における動作は、粗いシフト量によるフルレベルのシフトリードトラッキング(以下、「粗トラッキング(Coarse tracking)」とも言う。)である。粗トラッキング動作の詳細については、後述する。
ステップST7〜ST9において、コントローラ10及び半導体記憶装置20は、粗トラッキング動作によって検出された探索範囲で、第2段階目のトラッキング動作(下位ページトラッキング動作、中位ページトラッキング動作、及び上位ページトラッキング動作)を行う。ステップST7及びST9の各動作はそれぞれ、探索範囲及びシフト量が異なる点を除き、ステップST4及びST5における各動作と同等である。中位ページトラッキング動作の詳細については、後述する。
ステップST10において、コントローラ10は、2段階目のトラッキング動作の結果に基づいて、後続するシフトリードに用いる最適な谷位置を検出する。
ステップST7〜ST10における動作は、細かいシフト量による検出されたサーチ範囲のシフトリードトラッキング(以下、「精トラッキング(Fine tracking)」とも言う。)である。精トラッキング動作の詳細については、後述する。
このように、ステップST4〜ST6の粗いシフト量での下位ページトラッキング動作及び上位ページトラッキング動作によって、ステップST7〜ST10の細かいシフト量での下位ページトラッキング動作、中位ページトラッキング動作、及び上位ページトラッキング動作で探索される範囲が特定される。
ステップST11において、コントローラ10は、検出された最適な谷位置における読出し電圧VCGRVoptを適用したシフトリードコマンドを半導体記憶装置20に発行する。
ステップST12において、半導体記憶装置20は、シフトリードを実行し、最適な読出しデータをコントローラ10に送信する。
ステップST13において、ECC回路13は、シフトリードの読出しデータに基づいてECCを実行する。コントローラ10は、シフトリードの読出しデータがECCをパスした場合(ステップST13;パス)、ステップST14に進み、フェイルした場合、(ステップST13;フェイル)、ステップST15に進む。
ステップST14において、コントローラ10は、ECCパスのステータスを取得し、動作を終了する。ステップST15において、コントローラ10は、ECC結果に基づいてデータを正しく訂正できないと判定し、動作を終了する。
以上で、トラッキングの全体動作が終了する。
1.2.2.3 下位ページトラッキングについて
次に、第1実施形態に係る半導体記憶装置の下位ページトラッキング動作について説明する。
図13は、第1実施形態に係る半導体記憶装置の下位ページトラッキング動作を説明するためのフローチャートである。上述の通り、下位ページトラッキング動作は、図12におけるステップST4及びST7に共通する動作である。
図13に示すように、ステップST21において、コントローラ10は、下位ページ用のテストリードコマンドを半導体記憶装置20に発行する。
ステップST22において、半導体記憶装置20は、下位ページ用のテストリードを実行し、読出しデータTLを読み出す。半導体記憶装置20は、読出しデータTLをラッチ回路(例えばラッチ回路ADL)に保持する。
ステップST23において、コントローラ10は、以降のステップST24〜ST29で実行されるループ処理の初期化を行う(n=0(nは0≦n≦Nの整数(Nは正の整数)))。
ステップST24において、コントローラ10は、下位ページのシフトリードコマンドを半導体記憶装置20に発行する。
ステップST25において、半導体記憶装置20は、下位ページのシフトリードを実行し、(n+1)回目のループ処理において読出しデータARn/ERn(AR0/ER0、AR1/ER1、…、ARN/ERN)を読出す。半導体記憶装置20は、読出しデータARn/ERnをラッチ回路(例えばラッチ回路BDL)に保持する。(n+1)回目のループ処理における読出しデータARn/ERnは、電圧ARn及びERnを用いた下位ページのシフトリードの結果に相当する。このため、読出しデータARn/ERnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧ARn及びERnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST26において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARn/ERnに基づき、分離データARsn(ARs0、ARs1、…、ARsN)及びERsn(ERs0、ERs1、…、ERsN)を演算する。そして、半導体記憶装置20は、分離データARsn及びERsnをコントローラ10に送信する。分離データARsn及びERsnは、読出しデータARn/ERnにおける部分的な情報を有する。具体的には、分離データARsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧ARnとの関係に基づいてデータ“0”又は“1”を有する。分離データERsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧ERnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST27において、コントローラ10は、分離データARsnに基づくビットカウント、及び分離データERsnに基づくビットカウントを算出する。
ステップST28において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST28;no)、ステップST29に進んでループ数をインクリメントした後にステップST24に戻る。また、値nが値Nと等しい場合(ステップST28;yes)、下位ページのトラッキング動作を終了する。
図14は、第1実施形態に係る半導体記憶装置の下位ページトラッキング動作を説明するためのタイミングチャートである。図14は、図13におけるステップST22及びST25に対応する。すなわち、下位ページトラッキングは、時刻T11から時刻T12の間に対応するテストリード期間、及び時刻T13_0から時刻T15_Nの間に対応する下位ページシフトリードのループ期間を含む。下位ページシフトリードのループ期間は、(N+1)回の下位ページシフトリードを含む。(n+1)回目のループにおける下位ページシフトリードは、時刻T13_nから時刻T15_nの間に対応する。また、下位ページシフトリードでは、或る電圧範囲である第1探索範囲と、第1探索範囲に対して不連続であり、かつ第1探索範囲内の電圧よりも高い電圧の範囲である第2探索範囲で読出し電圧がシフトされる。ここで、或る2つの範囲が「不連続」であるとは、当該2つの範囲が重複する範囲を有さず、かつ接していないことを示す。
図14に示すように、時刻T11から時刻T12の間において、ロウデコーダ27は、選択ワード線WLに電圧Vt_lowを印加し、非選択ワード線WLに電圧VREADを印加する。なお、電圧Vt_lowは、第1探索範囲の読出し電圧より大きく、第2探索範囲の読出し電圧より小さい。また、電圧Vt_lowは、例えば、“C”レベルの既定の読出し電圧CRdefと等しい。
ロウデコーダ27は、1回目のループで、選択ワード線WLに対して、時刻T13_0から時刻T14_0の間において電圧AR0を印加し、時刻T14_0から時刻T15_0の間において電圧ER0を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T13_0から時刻T15_0の間において電圧VREADを印加する。
続いて、ロウデコーダ27は、2回目のループで、選択ワード線WLに対して、時刻T13_1から時刻T14_1の間において電圧AR1を印加し、時刻T14_1から時刻T15_1の間において電圧ER1を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T13_1から時刻T15_1の間において電圧VREADを印加する。
このように、ロウデコーダ27は、(n+1)回目のループで、選択ワード線WLに対して、時刻T13nから時刻T14_nの間において電圧ARnを印加し、時刻T14_nから時刻T15_nの間において電圧ERnを印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T13_nから時刻T15_nの間において電圧VREADを印加する。
なお、電圧ARn及びERnはそれぞれ、例えば、ループ数がインクリメントされる毎にシフト量ΔV1a及びΔV2eずつ上昇する。つまり、第1探索範囲は、例えば、左端が電圧AR0であり、右端が電圧ARNである。また、第2探索範囲は、例えば、左端が電圧ER0であり、右端が電圧ERNである。なお、シフト量ΔV1a及びΔV2eは、例えば、互いに等しい値が設定される。
図15及び図16はそれぞれ、第1実施形態に係る半導体記憶装置の下位ページトラッキングにおける読出しデータ及び分離データを説明するためのテーブルである。図15は、図13におけるステップST22及びST25に対応し、下位ページ用テストリードの読出しデータTL及び下位ページシフトリードの読出しデータARn/ERnが示される。図16は、図13におけるステップST26に対応し、読出しデータTL及びARn/ERnに基づいて演算される分離データARsn及びERsnが示される。
図15に示すように、読出しデータTLは、メモリセルトランジスタMTの閾値電圧が電圧VT_low未満の場合にはデータ“1”となり、電圧VT_low以上の場合にはデータ“0”となる。
読出しデータAR0/ER0は、メモリセルトランジスタMTの閾値電圧が電圧AR0未満の場合にはデータ“1”となり、電圧AR0以上電圧ER0未満の場合にはデータ“0”となり、電圧ER0以上の場合にはデータ“1”となる。
また、読出しデータAR1/ER1は、メモリセルトランジスタMTの閾値電圧が電圧AR1未満の場合にはデータ“1”となり、電圧AR1以上電圧ER1未満の場合にはデータ“0”となり、電圧ER1以上の場合にはデータ“1”となる。
このように、(n+1)回目のループにおける読出しデータARn/ERnは、メモリセルトランジスタMTの閾値電圧が電圧ARn未満の場合にはデータ“1”となり、電圧ARn以上電圧ERn未満の場合にはデータ“0”となり、電圧ERn以上の場合にはデータ“1”となる。
図16に示すように、分離データARs0は、メモリセルトランジスタMTの閾値電圧が電圧AR0未満の場合にはデータ“1”となり、電圧AR0以上の場合にはデータ“0”となる。
分離データARs1はそれぞれ、メモリセルトランジスタMTの閾値電圧が電圧AR1未満の場合にはデータ“1”となり、電圧AR1以上の場合にはデータ“0”となる。
このように、分離データARsnは、メモリセルトランジスタMTの閾値電圧が電圧ARn未満の場合にはデータ“1”となり、電圧ARn以上の場合にはデータ“0”となる。つまり、分離データARsnのうち、データ“1”であるものの数(ビットカウント)はそれぞれ、閾値電圧が電圧ARn未満であるメモリセルトランジスタMTの数(オンセル数)に相当する。
一方、分離データERs0は、メモリセルトランジスタMTの閾値電圧が電圧ER0未満の場合にはデータ“0”となり、電圧ER0以上の場合にはデータ“1”となる。
分離データERs1は、メモリセルトランジスタMTの閾値電圧が電圧ER1未満の場合にはデータ“0”となり、電圧ER1以上の場合にはデータ“1”となる。
このように、分離データERsnは、メモリセルトランジスタMTの閾値電圧が電圧ERn未満の場合にはデータ“0”となり、電圧ERn以上の場合にはデータ“1”となる。つまり、分離データERsnのうち、データ“0”であるものの数は、閾値電圧が電圧ERn未満であるメモリセルトランジスタMTの数に相当する。
このため、図13のステップST27において、コントローラ10は、分離データARsnのビットカウント、及び分離データERsnのビットカウントを算出することにより、それぞれ電圧ARnにおけるオンセル数、及び電圧ERnにおけるオンセル数をモニタすることができる。また、コントローラ10は、分離データARsnとARs(n+1)との間のビットカウント変化量、及び分離データERsnとERs(n+1)との間のビットカウント変化量を算出することにより、それぞれ電圧ARnとAR(n+1)との間のオンセル数変化量、及び電圧ERnとER(n+1)との間のオンセル数変化量をモニタすることができる。
なお、分離データARsnは、例えば、読出しデータTL及びARn/ERnに基づいて演算される。演算部OPは、例えば、読出しデータTLと、読出しデータARn/ERnとの論理積演算を行うことにより、分離データARsnを生成可能である(ARsn=TL AND (ARn/ERn))。
また、分離データERsnは、例えば、読出しデータTL及びARn/ERnに基づいて演算される。演算部OPは、例えば、読出しデータTLの否定演算結果 ̄TLと、読出しデータARn/ERnとの論理積演算を行うことにより、分離データERsnを生成可能である(ERsn= ̄TL AND (ARn/ERn))。
なお、演算部OPは、上述の例に依らず、任意の演算によって分離データERsnを生成可能である。例えば、演算部OPは、読出しデータTLと、読出しデータの否定演算結果( ̄ARn/ERn)との論理和演算を行うことにより、分離データERsnを生成してもよい(ERsn=TL OR ( ̄ARn/ERn))。この場合、分離データERsnは、メモリセルトランジスタMTの閾値電圧が電圧ERn未満の場合にはデータ“1”となり、電圧ERn以上の場合にはデータ“0”となる。
以上のように、下位ページトラッキングでは、半導体記憶装置20は、1回のテストリード及び(N+1)回のシフトリードから、(N+1)個の分離データの組ARs0、ARs1、…、ARsN、及び(N+1)個の分離データの組ERs0、ERs1、…、ERsNを演算する。そして、コントローラ10は、当該演算された2つの分離データの組の各々から、互いに不連続な読出し電圧の範囲(第1探索範囲及び第2探索範囲)において(N+1)個ずつビットカウントを算出する。コントローラ10は、2×(N+1)個のビットカウントから、2N個のビットカウント変化量を算出する。したがって、下位ページトラッキングでは、第1探索範囲及び第2探索範囲におけるビットカウントトラッキングを可能とするデータが算出される。
1.2.2.4 上位ページトラッキングについて
次に、第1実施形態に係る半導体記憶装置の上位ページトラッキング動作について説明する。上述の通り、上位ページトラッキング動作は、選択ワード線WLに印加される電圧の大きさが異なる点を除き、下位ページトラッキング動作と同様である。
図17は、第1実施形態に係る半導体記憶装置の上位ページトラッキング動作を説明するためのフローチャートである。上位ページトラッキング動作は、図12におけるステップST5及びST9に共通する動作である。
図17に示すように、ステップST31において、コントローラ10は、上位ページ用のテストリードコマンドを半導体記憶装置20に発行する。
ステップST32において、半導体記憶装置20は、上位ページ用のテストリードを実行し、読出しデータTUを読み出す。半導体記憶装置20は、読出しデータTUをラッチ回路(例えばラッチ回路ADL)に保持する。
ステップST33において、コントローラ10は、以降のステップST34〜ST39で実行されるループ処理の初期化を行う(n=0)。
ステップST34において、コントローラ10は、上位ページのシフトリードコマンドを半導体記憶装置20に発行する。
ステップST35において、半導体記憶装置20は、上位ページのシフトリードを実行し、(n+1)回目のループ処理において読出しデータCRn/GRn(CR0/GR0、CR1/GR1、…、CRN/GRN)を読出す。半導体記憶装置20は、読出しデータCRn/GRnをラッチ回路(例えばラッチ回路BDL)に保持する。(n+1)回目のループ処理における読出しデータCRn/GRnは、電圧CRn及びGRnを用いた上位ページのシフトリードの結果に相当する。このため、読出しデータCRn/GRnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧CRn及びGRnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST36において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTU及びCRn/GRnに基づき、分離データCRsn(CRs0、CRs1、…、CRsN)及びGRsn(GRs0、GRs1、…、GRsN)を演算する。そして、半導体記憶装置20は、分離データCRsn及びGRsnをコントローラ10に送信する。分離データCRsn及びGRsnは、読出しデータCRn/GRnにおける部分的な情報を有する。具体的には、分離データCRsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧CRnとの関係に基づいてデータ“0”又は“1”を有する。分離データGRsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧GRnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST37において、コントローラ10は、分離データCRsnに基づくビットカウント、及び分離データGRsnに基づくビットカウントを算出する。
ステップST38において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST38;no)、ステップST39に進んでループ数をインクリメントした後にステップST34に戻る。また、値nが値Nと等しい場合(ステップST38;yes)、上位ページのトラッキング動作を終了する。
図18は、第1実施形態に係る半導体記憶装置の上位ページトラッキングを説明するためのタイミングチャートである。図18は、図17におけるステップST32及びST35に対応する。すなわち、上位ページトラッキングは、時刻T21から時刻T22の間に対応するテストリード期間、及び時刻T23_0から時刻T25_Nの間に対応する上位ページシフトリードのループ期間を含む。上位ページシフトリードは、(N+1)回のシフトリードを含む。(n+1)回目のループにおける上位ページシフトリードは、時刻T23_nから時刻T25_nの間に対応する。また、上位ページシフトリードでは、或る電圧範囲である第3探索範囲と、第3探索範囲に対して不連続であり、かつ第3探索範囲の電圧よりも高い電圧の範囲である第4探索範囲で読出し電圧がシフトされる。
図18に示すように、時刻T21から時刻T22の間において、ロウデコーダ27は、選択ワード線WLに電圧Vt_upを印加し、非選択ワード線WLに電圧VREADを印加する。なお、電圧Vt_upは、第3探索範囲の読出し電圧より大きく、第4探索範囲の読出し電圧より小さい。また、電圧Vt_upは、例えば、“E”レベルの既定の読出し電圧ERdefと等しい。
ロウデコーダ27は、1回目のループで、選択ワード線WLに対して、時刻T23_0から時刻T24_0の間において電圧CR0を印加し、時刻T24_0から時刻T25_0の間において電圧GR0を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T23_0から時刻T25_0の間において電圧VREADを印加する。
続いて、ロウデコーダ27は、2回目のループで、選択ワード線WLに対して、時刻T23_1から時刻T24_1の間において電圧CR1を印加し、時刻T24_1から時刻T25_1の間において電圧GR1を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T23_1から時刻T25_1の間において電圧VREADを印加する。
このように、ロウデコーダ27は、(n+1)回目のループで、選択ワード線WLに対して、時刻T23nから時刻T24_nの間において電圧CRnを印加し、時刻T24_nから時刻T25_nの間において電圧GRnを印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T23_nから時刻T25_nの間において電圧VREADを印加する。
なお、電圧CRn及びGRnはそれぞれ、例えば、ループ数がインクリメントされる毎にシフト量ΔV1c及びΔV2gずつ上昇する。つまり、第3探索範囲は、例えば、左端が電圧CR0であり、右端が電圧CRNである。また、第4探索範囲は、例えば、左端が電圧GR0であり、右端が電圧GRNである。なお、シフト量ΔV1c及びΔV2gは、例えば、互いに等しい値が設定される。また、シフト量ΔV1c及びΔV2gは、例えば、シフト量ΔV1a及びΔV2eと等しくてもよい。
図19及び図20はそれぞれ、第1実施形態に係る半導体記憶装置の上位ページトラッキングにおける読出しデータ及び分離データを説明するためのテーブルである。図19は、図17におけるステップST32及びST35に対応し、上位ページ用テストリードの読出しデータTU及び上位ページシフトリードの読出しデータCRn/GRnが示される。図20は、図17におけるステップST36に対応し、読出しデータTU及びCRn/GRnに基づいて演算される分離データCRsn及びGRsnが示される。
図19に示すように、読出しデータTUは、メモリセルトランジスタMTの閾値電圧が電圧VT_up未満の場合にはデータ“1”となり、電圧VT_up以上の場合にはデータ“0”となる。
読出しデータCR0/GR0は、メモリセルトランジスタMTの閾値電圧が電圧CR0未満の場合にはデータ“1”となり、電圧CR0以上電圧GR0未満の場合にはデータ“0”となり、電圧GR0以上の場合にはデータ“1”となる。
また、読出しデータCR1/GR1は、メモリセルトランジスタMTの閾値電圧が電圧CR1未満の場合にはデータ“1”となり、電圧CR1以上電圧GR1未満の場合にはデータ“0”となり、電圧GR1以上の場合にはデータ“1”となる。
このように、(n+1)回目のループにおける読出しデータCRn/GRnは、メモリセルトランジスタMTの閾値電圧が電圧CRn未満の場合にはデータ“1”となり、電圧CRn以上電圧GRn未満の場合にはデータ“0”となり、電圧GRn以上の場合にはデータ“1”となる。
図20に示すように、分離データCRs0は、メモリセルトランジスタMTの閾値電圧が電圧CR0未満の場合にはデータ“1”となり、電圧CR0以上の場合にはデータ“0”となる。
分離データCRs1は、メモリセルトランジスタMTの閾値電圧が電圧CR1未満の場合にはデータ“1”となり、電圧CR1以上の場合にはデータ“0”となる。
このように、分離データCRsnは、メモリセルトランジスタMTの閾値電圧が電圧CRn未満の場合にはデータ“1”となり、電圧CRn以上の場合にはデータ“0”となる。つまり、分離データCRsnのうち、データ“1”であるものの数は、閾値電圧が電圧CRn未満であるメモリセルトランジスタMTの数に相当する。
一方、分離データGRs0は、メモリセルトランジスタMTの閾値電圧が電圧GR0未満の場合にはデータ“0”となり、電圧GR0以上の場合にはデータ“1”となる。
分離データGRs1は、メモリセルトランジスタMTの閾値電圧が電圧GR1未満の場合にはデータ“0”となり、電圧GR1以上の場合にはデータ“1”となる。
このように、分離データGRsnは、メモリセルトランジスタMTの閾値電圧が電圧GRn未満の場合にはデータ“0”となり、電圧GRn以上の場合にはデータ“1”となる。つまり、分離データGRsnのうち、データ“0”であるものの数は、閾値電圧が電圧GRn未満であるメモリセルトランジスタMTの数に相当する。
このため、図17のステップST37において、コントローラ10は、分離データCRsnのビットカウント、及び分離データGRsnのビットカウントを算出することにより、それぞれ電圧CRnにおけるオンセル数、及び電圧GRnにおけるオンセル数をモニタすることができる。また、コントローラ10は、分離データCRsnとCRs(n+1)との間のビットカウント変化量、及び分離データGRsnとGRs(n+1)との間のビットカウント変化量を算出することにより、それぞれ電圧CRnとCR(n+1)との間のオンセル数変化量、及び電圧GRnとGR(n+1)との間のオンセル数変化量をモニタすることができる。
なお、分離データCRsnは、例えば、読出しデータTU及びCRn/GRnに基づいて演算される。演算部OPは、例えば、読出しデータTUと、読出しデータCRn/GRnとの論理積演算を行うことにより、分離データCRsnを生成可能である(CRsn=TU AND (CRn/GRn))。
また、分離データGRsnは、例えば、読出しデータTU及びCRn/GRnに基づいて演算される。演算部OPは、例えば、読出しデータTUの否定演算結果 ̄TUと、読出しデータCRn/GRnとの論理積演算を行うことにより、分離データGRsnを生成可能である(GRsn= ̄TU AND (CRn/GRn))。
なお、演算部OPは、上述の例に依らず、任意の演算によって分離データGRsnを生成可能である。例えば、演算部OPは、読出しデータTUと、読出しデータの否定演算結果( ̄CRn/GRn)との論理和演算を行うことにより、分離データGRsnを生成してもよい(GRsn=TU OR ( ̄CRn/GRn))。この場合、分離データGRsnは、メモリセルトランジスタMTの閾値電圧が電圧GRn未満の場合にはデータ“1”となり、電圧GRn以上の場合にはデータ“0”となる。
以上のように、上位ページトラッキングでは、半導体記憶装置20は、1回のテストリード及び(N+1)回のシフトリードから、(N+1)個の分離データの組CRs0、CRs1、…、CRsN、及び(N+1)個の分離データの組GRs0、GRs1、…、GRsNを演算する。そして、コントローラ10は、当該演算された2つの分離データの組の各々から、互いに不連続な読出し電圧の範囲(第3探索範囲及び第4探索範囲)において(N+1)個ずつビットカウントを算出する。コントローラ10は、2×(N+1)個のビットカウントから、2N個のビットカウント変化量を算出する。したがって、上位ページトラッキングでは、第3探索範囲及び第4探索範囲におけるビットカウントトラッキングを可能とするデータが生成される。
1.2.2.5 中位ページトラッキングについて
次に、第1実施形態に係る半導体記憶装置の中位ページトラッキング動作について説明する。中位ページトラッキング動作は、読出されるレベルが3つであるため、テストリード動作が2回行われる。また、これに伴い、中位ページトラッキング動作は、シフトリードの読出しデータが3つに分離される点において下位ページトラッキング動作及び上位ページトラッキング動作と異なる。
図21は、第1実施形態に係る半導体記憶装置の中位ページトラッキング動作を説明するためのフローチャートである。図21に示される中位ページトラッキング動作は、図12におけるステップST8に対応する動作である。
図21に示すように、ステップST41において、コントローラ10は、中位ページ用の第1テストリードコマンドを半導体記憶装置20に発行する。
ステップST42において、半導体記憶装置20は、中位ページ用の第1テストリードを実行し、読出しデータTM1を読み出す。半導体記憶装置20は、読出しデータTM1をラッチ回路(例えばラッチ回路ADL)に保持する。
ステップST43において、コントローラ10は、中位ページ用の第2テストリードコマンドを半導体記憶装置20に発行する。
ステップST44において、半導体記憶装置20は、中位ページ用の第2テストリードを実行し、読出しデータTM2を読み出す。半導体記憶装置20は、読出しデータTM2をラッチ回路(例えばラッチ回路BDL)に保持する。
ステップST45において、コントローラ10は、以降のステップST46〜ST51で実行されるループ処理の初期化を行う(n=0)。
ステップST46において、コントローラ10は、中位ページのシフトリードコマンドを半導体記憶装置20に発行する。
ステップST47において、半導体記憶装置20は、中位ページのシフトリードを実行し、(n+1)回目のループ処理において読出しデータBRn/DRn/FRn(BR0/DR0/FR0、BR1/DR1/FR1、…、BRN/DRN/FRN)を読出す。半導体記憶装置20は、読出しデータBRn/DRn/FRnをラッチ回路(例えばラッチ回路CDL)に保持する。(n+1)回目のループ処理における読出しデータBRn/DRn/FRnは、電圧BRn、DRn、及びFRnを用いた中位ページのシフトリードの結果に相当する。このため、読出しデータBRn/DRn/FRnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧BRn、DRn、及びFRnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST48において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTM1、TM2、及びBRn/DRn/FRnに基づき、分離データBRsn(BRs0、BRs1、…、BRsN)、DRsn(DRs0、DRs1、…、DRsN)、及びFRsn(FRs0、FRs1、…、FRsN)を演算する。そして、半導体記憶装置20は、分離データBRsn、DRsn、及びFRsnをコントローラ10に送信する。分離データBRsn、DRsn、及びFRsnは、読出しデータBRn/DRn/FRnにおける部分的な情報を有する。具体的には、分離データBRsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧BRnとの関係に基づいてデータ“0”又は“1”を有する。分離データDRsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧DRnとの関係に基づいてデータ“0”又は“1”を有する。分離データFRsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧FRnとの関係に基づいてデータ“0”又は“1”を有する。
ステップST49において、コントローラ10は、分離データBRsn、DRsn、及びFRsnの各々に基づくビットカウントをそれぞれ算出する。
ステップST50において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST50;no)、ステップST51に進んでループ数をインクリメントした後にステップST46に戻る。また、値nが値Nと等しい場合(ステップST50;yes)、中位ページのトラッキング動作を終了する。
図22は、第1実施形態に係る半導体記憶装置の中位ページトラッキングを説明するためのタイミングチャートである。図22は、図21におけるステップST42、ST44及びST47に対応する。すなわち、中位ページトラッキングは、時刻T31から時刻T34の間に対応する中位ページ用のテストリード期間、及び時刻T35_0から時刻T38_Nの間に対応する中位ページシフトリードのループ期間を含む。中位ページシフトリードは、(N+1)回のシフトリードを含む。(n+1)回目のループにおける中位ページシフトリードは、時刻T35_nから時刻T38_nの間に対応する。また、中位ページシフトリードでは、或る電圧範囲である第5探索範囲と、第5探索範囲の電圧よりも高い電圧の範囲である第6探索範囲と、第6探索範囲の電圧よりも更に高い電圧の範囲である第7探索範囲と、で読出し電圧がシフトされる。なお、第5探索範囲、第6探索範囲、及び第7探索範囲は、互いに不連続である。
図22に示すように、時刻T31から時刻T32の間において、ロウデコーダ27は、選択ワード線WLに電圧Vt_mid1を印加し、非選択ワード線WLに電圧VREADを印加する。なお、電圧Vt_mid1は、第5探索範囲の読出し電圧より大きく、第6探索範囲の読出し電圧より小さい。
また、時刻T33から時刻T34の間において、ロウデコーダ27は、選択ワード線WLに電圧Vt_mid2を印加し、非選択ワード線WLに電圧VREADを印加する。なお、電圧Vt_mid2は、第6探索範囲の読出し電圧より大きく、第7探索範囲の読出し電圧より小さい。
ロウデコーダ27は、1回目のループで、選択ワード線WLに対して、時刻T35_0から時刻T36_0の間、時刻T36_0から時刻T37_0の間、及び時刻T37_0から時刻T38_0の間においてそれぞれ電圧BR0、DR0、及びFR0を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T35_0から時刻T38_0の間において電圧VREADを印加する。
続いて、ロウデコーダ27は、2回目のループで、選択ワード線WLに対して、時刻T35_1から時刻T36_1の間、時刻T36_1から時刻T37_1の間、及び時刻T37_1から時刻T38_1の間においてそれぞれ電圧BR1、DR1、及びFR1を印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T35_1から時刻T38_1の間において電圧VREADを印加する。
このように、ロウデコーダ27は、(n+1)回目のループで、選択ワード線WLに対して、時刻T35_nから時刻T36_nの間、時刻T36_nから時刻T37_nの間、及び時刻T37_nから時刻T38_nの間においてそれぞれ電圧BRn、DRn、及びFRnを印加する。また、ロウデコーダ27は、非選択ワード線WLに対して、時刻T35_nから時刻T38_nの間において電圧VREADを印加する。
なお、電圧BRn、DRn及びFRnはそれぞれ、例えば、ループ数がインクリメントされる毎にシフト量ΔV1b、ΔV2d及びΔV3fずつ上昇する。つまり、第5探索範囲は、例えば、左端が電圧BR0であり、右端が電圧BRNである。また、第6探索範囲は、例えば、左端が電圧DR0であり、右端が電圧DRNである。また、第7探索範囲は、例えば、左端が電圧FR0であり、右端が電圧FRNである。なお、シフト量ΔV1b、ΔV2d、及びΔV3fは、例えば、互いに等しい値が設定される。また、シフト量ΔV1b、ΔV2d、及びΔV3fは、例えば、シフト量ΔV1a、ΔV2e、ΔV1c、及びΔV2gと等しくてもよい。
図23及び図24はそれぞれ、第1実施形態に係る半導体記憶装置の中位ページトラッキングにおける読出しデータ及び分離データを説明するためのテーブルである。図23は、図21におけるステップST42、ST44及びST47に対応し、第1テストリードの読出しデータTM1、第2テストリードの読出しデータTM2、及びシフトリードの読出しデータBRn/DRn/FRnが示される。図24は、図21におけるステップST48に対応し、読出しデータTM1、TM2、及びBRn/DRn/FRnに基づいて演算される分離データBRsn、DRsn及びFRsnが示される。
図23に示すように、読出しデータTM1は、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid1未満の場合にはデータ“1”となり、電圧Vt_mid1以上の場合にはデータ“0”となる。また、読出しデータTM2は、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid2未満の場合にはデータ“1”となり、電圧Vt_mid2以上の場合にはデータ“0”となる。
読出しデータBR0/DR0/FR0は、メモリセルトランジスタMTの閾値電圧が電圧BR0未満の場合にはデータ“1”となり、電圧BR0以上電圧DR0未満の場合にはデータ“0”となり、電圧DR0以上電圧FR0未満の場合にはデータ“1”となり、電圧FR0以上の場合にはデータ“0”となる。
また、読出しデータBR1/DR1/FR1は、メモリセルトランジスタMTの閾値電圧が電圧BR1未満の場合にはデータ“1”となり、電圧BR1以上電圧DR1未満の場合にはデータ“0”となり、電圧DR1以上電圧FR1未満の場合にはデータ“1”となり、電圧FR1以上の場合にはデータ“0”となる。
このように、(n+1)回目のループにおける読出しデータBRn/DRn/FRnは、メモリセルトランジスタMTの閾値電圧が電圧BRn未満の場合にはデータ“1”となり、電圧BRn以上電圧DRn未満の場合にはデータ“0”となり、電圧DRn以上電圧FRn未満の場合にはデータ“1”となり、電圧FRn以上の場合にはデータ“0”となる。
図24に示すように、分離データBRs0は、メモリセルトランジスタMTの閾値電圧が電圧BR0未満の場合にはデータ“1”となり、電圧BR0以上の場合にはデータ“0”となる。
分離データBRs1は、メモリセルトランジスタMTの閾値電圧が電圧BR1未満の場合にはデータ“1”となり、電圧BR1以上の場合にはデータ“0”となる。
このように、分離データBRsnは、メモリセルトランジスタMTの閾値電圧が電圧BRn未満の場合にはデータ“1”となり、電圧BRn以上の場合にはデータ“0”となる。つまり、分離データBRsnのうち、データ“1”であるものの数は、閾値電圧が電圧BRn未満であるメモリセルトランジスタMTの数に相当する。
同様に、分離データDRs0は、メモリセルトランジスタMTの閾値電圧が電圧DR0未満の場合にはデータ“1”となり、電圧DR0以上の場合にはデータ“0”となる。
分離データDRs1は、メモリセルトランジスタMTの閾値電圧が電圧DR1未満の場合にはデータ“1”となり、電圧DR1以上の場合にはデータ“0”となる。
このように、分離データDRsnは、メモリセルトランジスタMTの閾値電圧が電圧DRn未満の場合にはデータ“1”となり、電圧DRn以上の場合にはデータ“0”となる。つまり、分離データDRsnのうち、データ“1”であるものの数は、閾値電圧が電圧DRn未満であるメモリセルトランジスタMTの数に相当する。
同様に、分離データFRs0は、メモリセルトランジスタMTの閾値電圧が電圧FR0未満の場合にはデータ“1”となり、電圧FR0以上の場合にはデータ“0”となる。
分離データFRs1は、メモリセルトランジスタMTの閾値電圧が電圧FR1未満の場合にはデータ“1”となり、電圧FR1以上の場合にはデータ“0”となる。
このように、分離データFRsnは、メモリセルトランジスタMTの閾値電圧が電圧FRn未満の場合にはデータ“1”となり、電圧FRn以上の場合にはデータ“0”となる。つまり、分離データFRsnのうち、データ“1”であるものの数は、閾値電圧が電圧FRn未満であるメモリセルトランジスタMTの数に相当する。
このため、図21のステップST49において、コントローラ10は、分離データBRsnのビットカウント、分離データDRsnのビットカウント、及び分離データFRsnのビットカウントを算出することにより、それぞれ電圧BRnにおけるオンセル数、電圧DRnにおけるオンセル数、及び電圧FRnにおけるオンセル数をモニタすることができる。また、コントローラ10は、分離データBRsnとBRs(n+1)との間のビットカウント変化量、分離データDRsnとDRs(n+1)との間のビットカウント変化量、及び分離データFRsnとFRs(n+1)との間のビットカウント変化量を算出することにより、それぞれ電圧BRnとBR(n+1)との間のオンセル数変化量、電圧DRnとDR(n+1)との間のオンセル数変化量、及び電圧FRnとFR(n+1)との間のオンセル数変化量をモニタすることができる。
なお、分離データBRsnは、例えば、読出しデータTM1及びBRn/DRn/FRnに基づいて演算される。演算部OPは、例えば、読出しデータTM1と、読出しデータBRn/DRn/FRnとの論理積演算を行うことにより、分離データBRsnを生成可能である(BRn=TM1 AND (BRn/DRn/FRn))。
また、分離データDRsnは、例えば、読出しデータTM1、TM2、及びBRn/DRn/FRnに基づいて演算される。演算部OPは、例えば、読出しデータTM2と、読出しデータBRn/DRn/FRnの否定演算結果( ̄BRn/DRn/FRn)との論理積演算に対して、読出しデータTM1との論理和演算を行うことにより、分離データDRsnを生成可能である(DRsn=TM1 OR (TM2 AND ( ̄BRn/DRn/FRn)))。
また、分離データFRsnは、例えば、読出しデータTM2及びBRn/DRn/FRnに基づいて演算される。演算部OPは、例えば、読出しデータTM2と、読出しデータBRn/DRn/FRnとの論理和演算を行うことにより、分離データFRsnを生成可能である(FRsn=TM2 OR (BRn/DRn/FRn))。
なお、演算部OPは、上述の例に依らず、任意の演算によって分離データDRsn及びFRsnを生成可能である。
例えば、演算部OPは、読出しデータTM1の否定演算結果 ̄TM1と、読出しデータTM2と、読出しデータBRn/DRn/FRnの否定演算結果( ̄BRn/DRn/FRn)との論理積演算を行うことにより、分離データDRsnを生成してもよい(DRsn= ̄TM1 AND TM2 AND ( ̄BRn/DRn/FRn))。この場合、分離データDRsnは、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid1未満の場合にはデータ“0”となり、電圧Vt_mid1以上電圧DRn未満の場合にはデータ“1”となり、電圧DRn以上の場合にはデータ“0”となる。
また、例えば、演算部OPは、読出しデータTM2の否定演算結果 ̄TM2と、読出しデータBRn/DRn/FRnとの論理積演算を行うことにより、分離データFRsnを生成可能してもよい(FRsn= ̄TM2 AND (BRn/DRn/FRn))。この場合、分離データFRsnは、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid2以上電圧FRn未満の場合にはデータ“1”となり、電圧FRn以上の場合にはデータ“0”となる。
以上のように、中位ページトラッキングでは、半導体記憶装置20は、2回のテストリード及び(N+1)回のシフトリードから、(N+1)個の分離データの組BRs0、BRs1、…、BRsN、(N+1)個の分離データの組DRs0、DRs1、…、DRsN、及び(N+1)個の分離データの組FRs0、FRs1、…、FRsNを演算する。そして、コントローラ10は、当該演算された3つの分離データの組の各々から、互いに不連続な読出し電圧の範囲(第5探索範囲、第6探索範囲及び第7探索範囲)において(N+1)個ずつビットカウントを算出する。コントローラ10は、3×(N+1)個のビットカウントから、3N個のビットカウント変化量を算出する。したがって、中位ページトラッキングでは、第5探索範囲、第6探索範囲及び第7探索範囲におけるビットカウントトラッキングを可能とするデータが生成される。
1.2.2.6 粗トラッキングについて
次に、第1実施形態に係る半導体記憶装置の粗トラッキング動作について説明する。
図25〜図27は、第1実施形態に係る半導体記憶装置の粗トラッキング動作を説明するための模式図である。図25〜図27はそれぞれ、図12におけるステップST4〜ST6に対応する。すなわち、図25及び図26はそれぞれ、粗トラッキングの下位ページトラッキング及び上位ページトラッキングに基づいてビットカウントトラッキングが実行される読出し電圧の範囲が模式的に示される。図27は、粗トラッキングの結果検出される暫定的な谷位置、及び精トラッキングに適用される探索範囲が模式的に示される。
第1実施形態に係る粗トラッキングでは、各レベル間(TLCの場合7つ)の谷位置となり得る電圧値を十分に含む電圧範囲(フルレベル)をトラッキングの範囲として考慮する。具体的には、粗トラッキングでは、フルレベルを連続する4つの範囲(I)〜(IV)に分割する。ここで、或る2つの範囲が「連続する」とは、一方の範囲の端部と、他方の範囲の端部とが同一の電圧を表す状態を言う。範囲(I)は電圧が最も小さい範囲を、範囲(II)は電圧が2番目に小さい範囲を、範囲(III)は電圧が3番目に小さい範囲を、範囲(IV)は電圧が最も大きい範囲に対応する。
なお、第1実施形態では、範囲(I)〜(IV)は、連続する範囲として説明したが、これに限らず、連続していなくてもよい。
図25(A)に示すように、コントローラ10は、範囲(I)を第1探索範囲として、範囲(III)を第2探索範囲としてそれぞれ設定する。具体的には、例えば、電圧AR0及びARNはそれぞれ、範囲(I)の左端及び右端の電圧が設定される。電圧ER0及びERNはそれぞれ、範囲(III)の左端及び右端の電圧が設定される。また、コントローラ10は、例えば、範囲(II)において読出し電圧Vt_low(例えば電圧CRdef)を設定する。
そして、半導体記憶装置20は、範囲(I)及び(III)について(N+1)回のシフトリードを含む下位ページトラッキングを実行する。シフトリードでは、範囲(I)及び(III)の端を含む全域にわたって、くまなく読出し電圧がシフトされる。下位ページトラッキングの結果、半導体記憶装置20は、範囲(I)の全域にわたる(N+1)個の分離データARsnを演算し、範囲(III)の全域にわたる(N+1)個の分離データERsnを演算する。
図25(B)に示すように、コントローラ10は、(N+1)個の分離データARsnに基づき、範囲(I)の全域にわたるN点のビットカウント変化量を算出する。また、コントローラ10は、(N+1)個の分離データERsnに基づき、範囲(III)の全域にわたるN点のビットカウント変化量を算出する。
このように、粗トラッキングの下位ページトラッキングを実行することにより、範囲(I)及び(III)の全域にわたるビットカウントトラッキングの結果が算出される。
また、図26(A)に示すように、コントローラ10は、範囲(II)を第2探索範囲として、範囲(IV)を第4探索範囲としてそれぞれ設定する。具体的には、例えば、電圧CR0及びCRNはそれぞれ、範囲(II)の左端及び右端の電圧が設定される。範囲(II)は範囲(I)及び(III)と連続するため、例えば、電圧CR0は電圧ARNと等しく、電圧CRNは電圧ER0と等しい。また、電圧GR0及びGRNはそれぞれ、範囲(IV)の左端及び右端の電圧が設定される。範囲(IV)は範囲(III)と連続するため、例えば、電圧GR0は電圧ERNと等しい。また、コントローラ10は、例えば、範囲(III)において読出し電圧Vt_up(例えば電圧ERdef)を設定する。
そして、半導体記憶装置20は、範囲(II)及び(IV)について(N+1)回のシフトリードを含む上位ページトラッキングを実行する。シフトリードでは、範囲(II)及び(IV)の全域にわたって、くまなく読出し電圧がシフトされる。上位ページトラッキングの結果、半導体記憶装置20は、範囲(II)の全域にわたる(N+1)個の分離データCRsnを演算し、範囲(IV)の全域にわたる(N+1)個の分離データERsnを演算する。
図26(B)に示すように、コントローラ10は、(N+1)個の分離データCRsnに基づき、範囲(II)の全域にわたるN点のビットカウント変化量を算出する。また、コントローラ10は、(N+1)個の分離データGRsnに基づき、範囲(IV)の全域にわたるN点のビットカウント変化量を算出する。
このように、粗トラッキングの上位ページトラッキングを実行することにより、範囲(II)及び(IV)の全域にわたるビットカウントトラッキングの結果が算出される。
以上により、連続する4つの範囲(I)〜(IV)について、全域にわたって4N個のビットカウント変化量が算出される。コントローラ10は、当該4N個のビットカウント変化量に基づいてビットカウントトラッキングを実行し、全てのレベル間の暫定的な谷位置を検出する。
図27に示すように、下位ページトラッキング及び上位ページトラッキングから算出されたビットカウント変化量を並べてプロットすると、フルレベルの全域にわたって、メモリセルトランジスタMTの閾値電圧分布が再現される。コントローラ10は、ビットカウント変化量が局所的に最小となっている7点を検出する。検出された7点は、対応する読出し電圧の値が小さい順に、“Er”レベル及び“A”レベル間、“A”レベル及び“B”レベル間、“B”レベル及び“C”レベル間、“C”レベル及び“D”レベル間、“D”レベル及び“E”レベル間、“E”レベル及び“F”レベル間、並びに“F”レベル及び“G”レベル間の暫定的な谷位置とみなされる。以下の説明では、検出された7点に対応する読出し電圧は、既定の読出し電圧ARdef〜GRdefに対応して、それぞれARdef2〜GRdef2と記載して他と区別する。
また、コントローラ10は、例えば、暫定的な谷位置の各々を含む電圧の範囲(i)〜(vii)を検出する。範囲(i)〜(vii)はそれぞれ、電圧ARdef2〜GRdef2を含む。また、範囲(i)〜(vii)は、暫定的な谷位置の周辺に限定されるため、互いに不連続である。なお、図27の例では、範囲(i)〜(vii)は、暫定的な谷位置として検出されたビットカウント変化量を中心とする3点を含む電圧の範囲が検出されているが、これに限らず、互いに不連続な範囲において任意の範囲を検出可能である。
以上で、粗トラッキング動作が終了する。
1.2.2.7 精トラッキングについて
引き続き図27を用いて、第1実施形態に係る半導体記憶装置の精トラッキング動作について説明する。上述の通り、粗トラッキング動作では、フルレベルに対して、下位ページトラッキング及び上位ページトラッキングによるビットカウントトラッキングが実行される。これに対して、精トラッキングでは、フルレベルではなく、限定された範囲に対して下位ページトラッキング、中位ページトラッキング及び上位ページトラッキングによるビットカウントトラッキングが実行される。
コントローラ10は、暫定的な谷位置に基づき、精トラッキングに用いる探索範囲を設定する。具体的には、コントローラ10は、精トラッキングにおける下位ページトラッキングの第1探索範囲及び第2探索範囲として、それぞれ範囲(i)及び(v)を設定する。また、コントローラ10は、精トラッキングにおける上位ページトラッキングの第3探索範囲及び第4探索範囲として、それぞれ範囲(iii)、及び(vii)を設定する。また、コントローラ10は、精トラッキングにおける中位ページトラッキングの第5探索範囲、第6探索範囲及び第7探索範囲として、それぞれ範囲(ii)、(iv)、及び(vi)を設定する。
図28は、第1実施形態に係る半導体記憶装置の粗トラッキングと精トラッキングとの差異点を説明するための模式図である。図28では、一例として、精トラッキングにおける第2探索範囲として設定された範囲(v)が示されるが、その他の探索範囲の動作も同様である。図28では、粗トラッキングにおいて算出されるビットカウント変化量(“○”と表示)と共に、精トラッキングにおいて新たに算出されるビットカウント変化量(“△”と表示)が示される。
図28に示すように、コントローラ10は、例えば、精トラッキングにおける第2探索範囲として、暫定的な谷位置の電圧ERdef2から、粗トラッキングにおけるシフト量ΔV2e1だけ前後する範囲[ERdef2−ΔV2e1、ERdef2+ΔV2e1]を設定する。そして、コントローラ10は、精トラッキングにおけるシフト量として、シフト量ΔV2e1よりも小さいシフト量ΔV2e2で読出し電圧をシフトさせるようにシフトリードコマンドを発行する。
半導体記憶装置20は、精トラッキングにおける第2探索範囲の全域にわたって、シフト量ΔV2e2ずつシフトさせてシフトリードを実行する。これにより、半導体記憶装置20は、精トラッキングにおける第2探索範囲の全域にわたって、分離データERsnを演算する。
コントローラ10は、当該分離データERsnに基づき、精トラッキングにおける第2探索範囲の全域にわたってビットカウント変化量を算出する。これにより、図28の例では、精トラッキング動作により、粗トラッキングにおいて算出されたビットカウント変化量が3点算出された範囲において、13点のビットカウント変化量が算出される。
コントローラ10は、算出されたビットカウント変化量に基づき、最適な谷位置を検出する。図28の例では、精トラッキングによって、暫定的な谷位置よりもビットカウント変化量が小さくなる点が4点検出されている。コントローラ10は、この中から、ビットカウント変化量が最小となる点を最適な谷位置として検出し、当該最適な谷位置に対応する読出し電圧を最適な読出し電圧ERoptとして設定する。
以上により、精トラッキング動作が終了する。
1.3 本実施形態に係る効果
第1実施形態によれば、閾値電圧分布の谷位置を高速かつ高精度に検出することができる。本効果につき、以下に説明する。
谷位置を検出するための様々なトラッキング手法が提案されている。例えば、第1手法として、テストリードをフルレベルにわたって実行し、トラッキングを行う手法が知られている。第1手法は、最低限の動作でフルレベルの読出しデータを取得できるため、高速にトラッキングすることができる。しかしながら、テストリードはノーマルリードと読出しのメカニズムが異なる。より具体的には、テストリードは、半導体記憶装置20内の種々の要素の状態(例えば、配線の電圧)が異なる。このため、テストリードを使用して推定された最適な読出し電圧は、ノーマルリードで最適な読出し電圧とは異なる可能性がある。このため、第1手法によるトラッキング結果は、実際の読出し動作の際における谷位置の検出精度が悪くなる可能性がある。
また、例えば、第2手法として、シフトリードをフルレベルにわたって実行し、トラッキングを行う手法が知られている。第2手法は、ノーマルリードと同じ読出し方式であるシフトリードを用いるため、ノーマルリードと異なる読出し方式であるために谷位置検出精度が悪いという第1手法のデメリットを解決し得る。しかしながら、第2手法は、1つのメモリセルトランジスタに複数ビットのデータを記憶させる場合、1回の読出し動作につき複数レベルの読出し電圧が印加される。このため、第1手法と同様に、1回の読出し動作につき1レベルの読出し電圧にのみ着目してトラッキングする場合、非常に時間を要するというデメリットがある。
また、例えば、第3手法として、シフトリードの探索範囲を予め定められた、限定された範囲に固定して実行し、トラッキングを行う手法が知られている。第3手法は、探索範囲が限定されるため、第2手法と比べて高速に動作させることが可能である。しかしながら、探索範囲が固定されているため、意図しないレベルの谷位置が探索範囲に存在する場合、谷位置を誤検出する可能性がある。
図29では、第3手法によって、或るレベルの間の谷位置P1を探索する際に生じ得る事象が模式的に示される。図29(A)は、正常に谷位置を検出し得る閾値電圧分布と探索範囲との位置関係が示され、図29(B)は、谷位置の誤検出し得る閾値電圧分布と探索範囲との位置関係が示される。
第3手法では例えば、谷位置P1が存在すると想定される範囲について、隣のレベル間の谷位置(例えばP2)を含まない範囲が固定して設定される。図29(A)の例では、探索範囲が適切に設定されているため、当該探索範囲をトラッキングすることによって谷位置P1が検出される。しかしながら、図29(B)に示すように、閾値電圧分布は、探索範囲が設定された後に、閾値電圧が全体的にシフトする場合がある。この場合、谷位置P1のみならず、谷位置P2も探索範囲に含まれため、当該探索範囲をトラッキングすると、谷位置P2におけるメモリセル数が谷位置P1におけるメモリセル数よりも小さい場合、谷位置P2を谷位置P1として誤検出してしまう可能性がある。
第1実施形態によれば、2段階のトラッキング動作が続けて実行される。具体的には、1段階目のトラッキング動作として、フルレベルにわたって第1シフト量で読出し電圧が変化する粗トラッキング動作が実行される。これにより、粗トラッキング動作では、各レベル間の暫定的な谷位置を網羅的に検出することができる。
また、粗トラッキング動作では、当該暫定的な谷位置の各々に対応する探索範囲を更に検出する。検出された各探索範囲は、フルレベルの中から、対応する谷位置を含みかつ他の谷位置を含まない範囲で設定される。これにより、各探索範囲は、互いに不連続となる。
また、2段階目のトラッキング動作として、限定された探索範囲にわたって第2シフト量で読出し電圧が変化する精トラッキング動作が実行される。精トラッキング動作では、粗トラッキング動作において検出された各探索範囲が適用される。上述の通り、粗トラッキング動作において検出された各探索範囲は、互いに不連続であるため、探索範囲毎に対応する谷位置のみが存在する。また、精トラッキング動作は粗トラッキング動作に続けて実行されるため、粗トラッキング動作と精トラッキング動作との間に谷位置が移動して探索範囲から外れてしてしまうのを防ぐことができる。したがって、谷位置の誤検出を防ぐことができる。
また、第2シフト量は、第1シフト量よりも小さい値が設定される。このため、粗トラッキング動作は、第2シフト量を用いるよりも少ない回数でフルレベルを網羅的に探索できる。一方、精トラッキング動作は、第1シフト量を用いるよりも谷位置の探索精度を高めることができる。
また、精トラッキング動作の探索範囲は、粗トラッキング動作の探索範囲よりも狭い。このため、精トラッキング動作に要する時間を短縮することができ、ひいては、トラッキングの全体動作に要する時間を短縮することができる。
また、粗トラッキング動作及び精トラッキング動作は、シフトリードによるビットカウントトラッキングを含む。これにより、ノーマルリードと同様の読出し方式を適用することができる。このため、実際の読出し動作の際の閾値電圧分布における谷位置を検出することができる。
また、シフトリードによるビットカウントトラッキングでは、1回のシフトリードで印加される複数レベルの電圧を同時にシフトさせる。これにより、例えば、下位ページトラッキング及び上位ページトラッキングの際は、1回のシフトリードあたり2点のビットカウントを算出し、中位ページトラッキングの際は1回のシフトリードあたり3点のビットカウントを算出することができる。このため、シフトリードによるビットカウントトラッキングに要する時間を短縮することができる。
また、シフトリードによるビットカウントトラッキングでは、シフトリードの前にテストリードが実行される。これにより、テストリードの読出しデータと、シフトリードの読出しデータとに基づき、分離データを演算することができる。このため、1回のシフトリードで印加される電圧レベルの数に応じてビットカウントを算出することができる。
また、粗トラッキング動作は、フルレベルを4つの範囲(I)〜(IV)に分けてビットカウントトラッキングを行う。より具体的には、下位ページトラッキングでは範囲(I)及び(III)について、上位ページトラッキングでは範囲(II)及び(IV)についてビットカウントトラッキングを行う。範囲(II)は範囲(I)及び(III)の間の範囲であり、範囲(III)は範囲(II)及び(IV)の間の範囲である。これにより、同一のページトラッキングの際の探索範囲が不連続になるように設定しつつ、フルレベルを網羅的に探索することができる。
また、精トラッキング動作は、互いに不連続な7つの範囲(i)〜(vii)の各々に対してビットカウントトラッキングを行う。より具体的には、下位ページトラッキングでは範囲(i)及び(v)について、上位ページトラッキングでは範囲(iii)及び(vii)について、中位ページトラッキングでは範囲(ii)、(iv)、及び(vi)についてビットカウントトラッキングを行う。これにより、互いに不連続な7つの範囲について、効率的にシフトリードによるビットカウントトラッキングを行うことができる。
1.4 第1実施形態の変形例
なお、第1実施形態に係る半導体記憶装置は、上述の例に限らず、種々の変形が適用可能である。
例えば、第1実施形態に係る半導体記憶装置では、粗トラッキング動作において下位ページトラッキング及び上位ページトラッキングを実行したが、これに限られない。具体的には、粗トラッキング動作では、下位ページトラッキング及び上位ページトラッキングに代えて、中位ページトラッキングが実行されてもよい。
図30は、第1実施形態の変形例に係る半導体記憶装置のトラッキングの全体動作を説明するためのフローチャートである。図30は、図12に対応し、ステップST1〜ST3及びステップST6〜ST15の動作については図12と同様であるため、その説明を省略する。
図30に示すように、コントローラ10は、ステップST3において実行されたECCがフェイルした場合、(ステップST3;フェイル)、ステップST16に進む。
ステップST16において、コントローラ10及び半導体記憶装置20は、中位ページトラッキング動作を行う。以降、ステップST6において、コントローラ10は、粗トラッキング動作の結果に基づいて、後続するトラッキング動作に用いるサーチ範囲及び暫定的な谷位置を検出する。ステップST16及びST6における動作は、粗トラッキング動作である。
また、ステップST7〜ST9において、コントローラ10及び半導体記憶装置20は、粗トラッキング動作によって検出された探索範囲で、精トラッキング動作を実行する。コントローラ10は、ステップST10において、精トラッキング動作の結果に基づき、最適な谷位置を検出する。
次に、第1実施形態の変形例に係る半導体記憶装置の粗トラッキングにおける中位ページトラッキング動作について説明する。第1実施形態の変形例に係る半導体記憶装置の粗トラッキングにおける中位ページトラッキングは、互いに不連続な第5探索範囲〜第7探索範囲の各々の間において更にビットカウントが算出される点において、他の中位ページトラッキング動作と異なる。
図31は、第1実施形態の変形例に係る半導体記憶装置の粗トラッキングにおける中位ページトラッキング動作を説明するためのフローチャートである。図31は、図30におけるステップST16に対応する。
図31に示すように、ステップST61において、コントローラ10は、中位ページ用の第1テストリードコマンドを半導体記憶装置20に発行する。
ステップST62において、半導体記憶装置20は、中位ページ用の第1テストリードを実行し、読出しデータTM1を読み出す。半導体記憶装置20は、読出しデータTM1をラッチ回路(例えばラッチ回路ADL)に保持すると共に、コントローラ10に送信する。
ステップST63において、コントローラ10は、読出しデータTM1に基づくビットカウントを算出する。
ステップST64において、コントローラ10は、中位ページ用の第2テストリードコマンドを半導体記憶装置20に発行する。
ステップST65において、半導体記憶装置20は、中位ページ用の第2テストリードを実行し、読出しデータTM2を読み出す。半導体記憶装置20は、読出しデータTM2をラッチ回路(例えばラッチ回路BDL)に保持すると共に、コントローラ10に送信する。
ステップST66において、コントローラ10は、読出しデータTM2に基づくビットカウントを算出する。
ステップST67〜ST73は、図21におけるステップST45〜ST51と同様である。
以上で、粗トラッキングにおける中位ページのトラッキング動作を終了する。
図32は、第1実施形態の変形例に係る粗トラッキングにおける中位ページトラッキングにおける読出しデータ及び分離データを説明するためのテーブルである。図32は、図31におけるステップST63、ST66、及びST71に対応し、中位ページ用テストリードの読出しデータTM1及びTM2と、中位ページシフトリードに基づいて演算される分離データTM1、TsM2、BRsn、DRsn及びFRsnが示される。このうち、分離データBRsn、DRsn、及びFRsnは、図24と同様であるため、その説明を省略する。
図32に示すように、読出しデータTM1は、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid1未満の場合にはデータ“1”となり、電圧Vt_mid1以上の場合にはデータ“0”となる。つまり、読出しデータTM1のうち、データ“1”であるものの数は、閾値電圧が電圧Vt_mid1未満であるメモリセルトランジスタMTの数に相当する。
このため、図31のステップST63において、コントローラ10は、読出しデータTM1のビットカウントを算出することにより、電圧Vt_mid1におけるオンセル数をモニタすることができる。また、コントローラ10は、分離データBRsNと読出しデータTM1との間のビットカウント変化量、及び読出しデータTM1と分離データDRs0との間のビットカウント変化量を算出することにより、それぞれ電圧BRNとVt_mid1との間のオンセル数変化量、及び電圧Vt_mid1とDR0との間のオンセル数変化量をモニタすることができる。
また、読出しデータTM2は、メモリセルトランジスタMTの閾値電圧が電圧Vt_mid2未満の場合にはデータ“1”となり、電圧Vt_mid2以上の場合にはデータ“0”となる。
このため、図31のステップST67において、コントローラ10は、読出しデータTM2のビットカウントを算出することにより、電圧Vt_mid2におけるオンセル数をモニタすることができる。また、コントローラ10は、分離データDRsNと読出しデータTM2との間のビットカウント変化量、及び読出しデータTM2と分離データFRs0との間のビットカウント変化量を算出することにより、それぞれ電圧DRNとVt_mid2との間のオンセル数変化量、及び電圧Vt_mid2とFR0との間のオンセル数変化量をモニタすることができる。
以上のように、粗トラッキングにおける中位ページトラッキングでは、半導体記憶装置20は、2回のテストリード及び(N+1)回のシフトリードから、(N+1)個の分離データの組BRs0、BRs1、…、BRsN、(N+1)個の分離データの組DRs0、DRs1、…、DRsN、及び(N+1)個の分離データの組FRs0、FRs1、…、FRsNを演算する。そして、コントローラ10は、当該演算された3つの分離データの組の各々から、異なる読出し電圧の範囲(第5探索範囲、第6探索範囲及び第7探索範囲)において連続するビットカウント変化量を算出する。
また、半導体記憶装置20は、2回のテストリードから、更に読出しデータTM1及び分離データTM2を読み出す。そして、コントローラ10は、当該読出しデータTM1及びTM2に基づき、第5探索範囲及び第6探索範囲の間、及び第6探索範囲及び第7探索範囲の間のビットカウント変化量を算出する。
図33は、第1実施形態の変形例に係る半導体記憶装置の粗トラッキング動作を説明するための模式図である。図33は、粗トラッキングの中位ページトラッキングに基づいてビットカウントトラッキングが実行される読出し電圧の範囲が模式的に示される。
第1実施形態の変形例に係る粗トラッキングでは、フルレベルを不連続な3つの範囲(V)〜(VII)に分割する。範囲(V)は電圧が最も小さい範囲を、範囲(VI)は電圧が2番目に小さい範囲を、範囲(VII)は電圧が最も大きい範囲に対応する。
図33(A)に示すように、コントローラ10は、範囲(V)を第5探索範囲として設定し、範囲(VI)を第6探索範囲として設定し、範囲(VII)を第7探索範囲として設定する。具体的には、例えば、電圧BR0及びBRNはそれぞれ、範囲(V)の左端及び右端の電圧が設定される。また、例えば、電圧DR0及びDRNはそれぞれ、範囲(VI)の左端及び右端の電圧が設定され、電圧FR0及びFRNはそれぞれ、範囲(VII)の左端及び右端の電圧が設定される。また、コントローラ10は、例えば、範囲(V)及び範囲(VI)の間において読出し電圧Vt_mid1を設定し、範囲(VI)及び範囲(VII)の間において読出し電圧Vt_mid2を設定する。
そして、半導体記憶装置20は、範囲(V)〜(VII)について(N+1)回のシフトリードを含む中位ページトラッキングを実行する。シフトリードでは、範囲(V)〜(VII)の全域にわたって、くまなく読出し電圧がシフトされる。中位ページトラッキングの結果、半導体記憶装置20は、範囲(V)の全域にわたる(N+1)個の分離データBRsnを演算し、範囲(VI)の全域にわたる(N+1)個の分離データDRsnを演算し、範囲(VII)の全域にわたる(N+1)個の分離データFRsnを演算する。また、半導体記憶装置20は、第1テストリード及び第2テストリードに基づき、読出しデータTM1及びTM2を更に読み出す。
図33(B)に示すように、コントローラ10は、(N+1)個の分離データBRsnに基づき、範囲(V)の全域にわたるN点のビットカウント変化量を算出する。コントローラ10は、(N+1)個の分離データDRsnに基づき、範囲(VI)の全域にわたるN点のビットカウント変化量を算出する。コントローラ10は、(N+1)個の分離データFRsnに基づき、範囲(VII)の全域にわたるN点のビットカウント変化量を算出する。
また、コントローラ10は、分離データBRsN及び読出しデータTM1に基づき、電圧BRN及びVt_mid1の間について1点のビットカウント変化量を算出する。コントローラ10は、分離データDRs0及び読出しデータTM1に基づき、電圧Vt_mid1及びDR0の間について1点のビットカウント変化量を算出する。コントローラ10は、分離データDRsN及び読出しデータTM2に基づき、電圧DRN及びVt_mid2の間について1点のビットカウント変化量を算出する。コントローラ10は、分離データFRs0及び読出しデータTM2に基づき、電圧Vt_mid2及びFR0の間について1点のビットカウント変化量を算出する。なお、これらの4点のビットカウント変化量は、図33(B)において黒丸で示される。
以上により、連続しない3つの範囲(V)〜(VII)の各々について、全域にわたるビットカウント変化量が算出されると共に、範囲(V)及び(VI)の間並びに範囲(VI)及び(VII)の間についてもビットカウント変化量が算出される。したがって、粗トラッキングによって、フルレベルの全域にわたってトラッキングが実行される。粗トラッキングの結果、コントローラ10は、全てのレベル間の暫定的な谷位置を検出する。
なお、上述の粗トラッキングにおいてフルレベルの全域にわたってビットカウントトラッキングを実行するためには、範囲(V)及び(VI)の間及び範囲(VI)及び(VII)の間は、任意に設定できることが望ましい。より具体的には、範囲(V)〜(VII)の間において算出されるビットカウント変化量の刻み幅が範囲(V)〜(VII)内において算出されるビットカウント変化量の刻み幅(読出し電圧のシフト量)に対して広すぎても、狭すぎても、範囲(V)〜(VII)の間において算出されるビットカウント変化量は、所望の精度を得られない可能性がある。つまり、範囲(V)〜(VII)内において算出されるビットカウント変化量の刻み幅(読出し電圧のシフト量)と、範囲(V)〜(VII)の間において算出されるビットカウント変化量の刻み幅は、同等であることが望ましい。これにより、中位ページトラッキングから算出されたビットカウント変化量を並べてプロットすると、フルレベルの全域にわたって、メモリセルトランジスタMTの閾値電圧分布が再現される。
したがって、コントローラ10は、フルレベルのビットカウントトラッキングの結果に基づき、全てのレベル間の暫定的な谷位置を検出することができる。
なお、読出しデータTM1及びTM2は、テストリードによって読み出されるデータであるため、ノーマルリードと同等の読出し方式が適用されない。このため、読み出しデータTM1及びTM2を用いて算出されるビットカウント変化量は、分離データBRsn、DRsn、及びFRsnのみを用いて算出されるビットカウント変化量と比較して、精度が悪化する可能性がある。このため、例えば、ビットカウント変化量をプロットする際に、隣接する複数点(例えば3点)を用いた加重平均を算出することが望ましい。これにより、プロットされたビットカウント変化量の精度を平均化することができる。
2.第2実施形態
次に、第2実施形態に係る半導体記憶装置について説明する。第1実施形態に係る半導体記憶装置が精トラッキングにおいてビットカウントトラッキングを実行するのに対し、第2実施形態に係る半導体記憶装置は、精トラッキングにおいてシンドロームトラッキングを実行するものである。第2実施形態では、精トラッキングのうち、特に下位ページトラッキングにおいてシンドロームトラッキングが実施される例について説明する。以下では、第1実施形態と同様の構成要素には同一の符号を付してその説明を省略し、第1実施形態と異なる部分についてのみ説明する。
2.1 シンドロームトラッキングについて
図34は、第2実施形態に係る半導体記憶装置のシンドロームトラッキングを説明するための模式図である。図34に示すように、メモリセルアレイ21から読み出された1ページ分のデータは、データとパリティとを含む。ECC回路13は、このパリティとデータとに対して用いられる、図示するようなパリティチェック行列を予め保持する。このパリティチェック行列に対して、値が“1”である位置のビットの排他的論理和演算を行うことで、パリティ検査式(シンドローム)が得られる。このシンドロームにおいて、値“1”はエラー(シンドロームNG)を示し、値“1”であるビットの数の総和が、エラー総数(シンドロームNG数)である。
シンドロームNG数は、読出しデータ内のエラービット数と相関する。特に、ECC回路13において実行されるECC処理としてLDPCが適用される場合、シンドロームNG数は、エラービット数に強い相関があることが知られている。このため、シンドロームNG数は、ビットカウント変化量よりも谷位置の検出精度が高いパラメタとなり得る。つまり、シンドロームNG数が最小となる読出し電圧は、ビットカウント変化量が最小となる読出し電圧よりも最適な谷位置となり得る。このように、シンドロームNG数が最小となる読出し電圧を探索する手法をシンドロームトラッキング(Syndrome tracking)という。シンドロームトラッキングは、ECC回路13を用いて実行されるため、ビットカウントトラッキングよりもコントローラ10への負荷が大きいが、より高精度に谷位置を探索できる。
2.2 精トラッキングの下位ページトラッキングについて
図35は、第2実施形態に係る半導体記憶装置の精トラッキングにおける下位ページトラッキング動作を説明するためのフローチャートである。図35は、探索範囲(i)及び(v)に対する精トラッキング動作を示す図12におけるステップST7に対応する動作である。
図35に示すように、ステップST71において、コントローラ10は、下位ページ用のテストリードコマンドを半導体記憶装置20に発行する。
ステップST72において、半導体記憶装置20は、下位ページ用のテストリードを実行し、読出しデータTLを読み出す。半導体記憶装置20は、読出しデータTLをラッチ回路(例えばラッチ回路ADL)に保持する。
ステップT73において、コントローラ10は、下位ページ用のノーマルリードコマンドを半導体記憶装置20に発行する。
ステップST74において、半導体記憶装置20は、下位ページ用のノーマルリードを実行し、読出しデータARd/ERdを読み出す。半導体記憶装置20は、読出しデータARd/ERdをラッチ回路(例えばラッチ回路BDL)に保持する。
ステップST75において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARd/ERdに基づき、分離データARsd及びERsdを演算する。そして、半導体記憶装置20は、分離データARsd及びERsdをコントローラ10に送信する。
ステップST76において、コントローラ10は、以降のステップST77〜ST83で実行されるループ処理の初期化を行う(n=0)。
ステップST77において、コントローラ10は、下位ページのシフトリードコマンドを半導体記憶装置20に発行する。
ステップST78において、半導体記憶装置20は、下位ページのシフトリードを実行し、(n+1)回目のループ処理において読出しデータARn/ERn(AR0/ER0、AR1/ER1、…、ARN/ERN)を読出す。半導体記憶装置20は、読出しデータARn/ERnをラッチ回路(例えばラッチ回路CDL)に保持する。
ステップST79において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARn/ERnに基づき、分離データARsn(ARs0、ARs1、…、ARsN)及びERsn(ERs0、ERs1、…、ERsN)を演算する。そして、半導体記憶装置20は、分離データARsn及びERsnをコントローラ10に送信する。
ステップST80において、コントローラ10は、分離データARsd及びERsnに基づき、統合データARsd/ERsnを生成する。また、コントローラ10は、分離データERsd及びARsnに基づき、統合データARsn/ERsdを生成する。統合データARsd/ERsnは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧ARdef及びERnとの関係に基づいてデータ“0”又は“1”を有する。統合データARsn/ERsdは、各ビットにおいて、対応するメモリセルトランジスタMTの閾値電圧と電圧ARn及びERdefとの関係に基づいてデータ“0”又は“1”を有する。
ステップST81において、コントローラ10は、統合データARsd/ERsnに基づくシンドロームNG数、及びARsn/ERSdに基づくシンドロームNG数を算出する。
ステップST82において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST82;no)、ステップST83に進んでループ数をインクリメントした後にステップST77に戻る。また、値nが値Nと等しい場合(ステップST82;yes)、精トラッキングにおける下位ページトラッキング動作を終了する。
図36〜図38はそれぞれ、第2実施形態に係る半導体記憶装置の精トラッキングにおける下位ページトラッキングによる読出しデータ、分離データ、及び統合データを説明するためのテーブルである。図36は、図35におけるステップST72、ST74及びST78に対応し、テストリードの読出しデータTL、ノーマルリードの読出しデータARd/ERd及びシフトリードの読出しデータARn/ERnが示される。図37は、図35におけるステップST75及びST79に対応し、読出しデータTL、ARd/ERd、及びARn/ERnに基づいて演算される分離データARsd、ERsd、ARsn及びERsnが示される。図38は、図35におけるステップST81に対応し、統合データARsd/ERsn及びARsn/ERsdが示される。
図36に示すように、読出しデータARsd/ERsdは、メモリセルトランジスタMTの閾値電圧が電圧ARdef未満の場合にはデータ“1”となり、電圧ARdef以上電圧ERdef未満の場合にはデータ“0”となり、電圧ERdef以上の場合には“1”となる。電圧ARdefは、例えば、(p+1)回目のループ(n=p)におけるシフトリードの際の読出し電圧ARpと等しい。また、電圧ERdefは、例えば、(q+1)回目のループ(n=q)におけるシフトリードの際の読出し電圧ERqと等しい。なお、値p及び値qは等しくてもよく、電圧ARdef及びERdefは、シフトリードの際の読出し電圧と異なっていてもよい。
その他の読出しデータTL、ARn/ERnについては、第1実施形態における図15と同様であるため、説明を省略する。
図37に示すように、分離データARsdは、メモリセルトランジスタMTの閾値電圧が電圧ARdef未満の場合にはデータ“1”となり、電圧ARdef以上の場合にはデータ“0”となる。
分離データARsdは、例えば、読出しデータTL及びARd/ERdに基づいて演算される。演算部OPは、例えば、読出しデータTLと、読出しデータARd/ERdとの論理積演算を行うことにより、分離データARsdを生成可能である(ARsd=TL AND (ARd/ERd))。
また、分離データERsdは、メモリセルトランジスタMTの閾値電圧が電圧ERdef未満の場合にはデータ“0”となり、電圧ERdef以上の場合にはデータ“1”となる。
分離データERsdは、例えば、読出しデータTL及びARd/ERdに基づいて演算される。演算部OPは、例えば、読出しデータTLの否定演算結果 ̄TLと、読出しデータARd/ERdとの論理積演算を行うことにより、分離データERsdを生成可能である(ERsd= ̄TL AND (ARd/ERd))。
その他の分離データARsn及びERsnについては、第1実施形態における図16と同様であるため、説明を省略する。
図38に示すように、統合データARs0/ERsdは、メモリセルトランジスタMTの閾値電圧が電圧AR0未満の場合にはデータ“1”となり、電圧AR0以上電圧ERdef未満の場合にはデータ“0”となり、電圧ERdef以上の場合にはデータ“1”となる。
統合データARs1/ERsdは、メモリセルトランジスタMTの閾値電圧が電圧AR1未満の場合にはデータ“1”となり、電圧AR1以上電圧ERdef未満の場合にはデータ“0”となり、電圧ERdef以上の場合にはデータ“1”となる。
このように、統合データARsn/ERsdは、メモリセルトランジスタMTの閾値電圧が電圧ARn未満の場合にはデータ“1”となり、電圧ARn以上電圧ERdef未満の場合にはデータ“0”となり、電圧ERdef以上の場合にはデータ“1”となる。つまり、統合データARsn/ERsdは、“E”レベルの読出し電圧は電圧ERdefに固定し、“A”レベルの読出し電圧のみ電圧AR0〜ARNの範囲でシフトさせたシフトリードにおける読出しデータと同等である。
なお、統合データARsn/ERsdは、例えば、分離データARsn及びERsdに基づいて演算される。コントローラ10は、例えば、分離データARsnと、分離データERsdとの論理和演算を行うことにより、統合データARsn/ERsdを生成可能である(ARsn/ERsd=ARsn OR ERsd)。
一方、統合データARsd/ERs0は、メモリセルトランジスタMTの閾値電圧が電圧ARdef未満の場合にはデータ“1”となり、電圧ARdef以上電圧ER0未満の場合にはデータ“0”となり、電圧ER0以上の場合にはデータ“1”となる。
統合データARsd/ERs1は、メモリセルトランジスタMTの閾値電圧が電圧ARdef未満の場合にはデータ“1”となり、電圧ARdef以上電圧ER1未満の場合にはデータ“0”となり、電圧ER1以上の場合にはデータ“1”となる。
このように、統合データARsd/ERs0は、メモリセルトランジスタMTの閾値電圧が電圧ARdef未満の場合にはデータ“1”となり、電圧ARdef以上電圧ERn未満の場合にはデータ“0”となり、電圧ERn以上の場合にはデータ“1”となる。つまり、統合データARsd/ERsnは、“A”レベルの読出し電圧は電圧ARdefに固定し、“E”レベルの読出し電圧のみ電圧ER0〜ERNの範囲でシフトさせたシフトリードにおける読出しデータと同等である。
なお、統合データARsd/ERsnは、例えば、分離データARsd及びERsnに基づいて演算される。コントローラ10は、例えば、分離データARsdと、分離データERsnとの論理和演算を行うことにより、統合データARsd/ERsnを生成可能である(ARsd/ERsn=ARsd OR ERsn)。
2.3 本実施形態に係る効果
図39は、第2実施形態の効果を説明するための模式図である。図39(A)及び39(B)ではそれぞれ、探索範囲(i)におけるビットカウント変化量及びシンドロームNG数の真値が、参考のために点線で示されている。また、図39(A)は、精トラッキングにおける探索範囲(i)に対してビットカウントトラッキングした場合のビットカウント変化量が“○”で示される。図39(B)は、精トラッキングにおける探索範囲(i)に対してシンドロームトラッキングした場合のビットカウント変化量が“□”で示される。
図39(A)に示すように、ビットカウント変化量は、真値に対するばらつき(分散:variance)が大きい。これにより、例えば“Er”レベルのように、“A”レベルに対して閾値電圧分布が緩やかに変化する領域では、ビットカウント変化量は、当該誤差の影響を受けやすい。このため、ビットカウントトラッキングでは、真の谷位置に対して“Er”レベル側に広い範囲で、ビットカウント変化量が最小となり得る。したがって、図39(A)に例示されるように、ビットカウントトラッキングの結果検出された谷位置P3は、真の谷位置P4から大きくずれてしまう可能性がある。
一方、図39(B)に示すように、シンドロームNG数は、ビットカウント変化量よりもエラービット数に対して強く相関するため、真値に対するばらつきがビットカウント変化量よりも小さい。このため、“Er”レベルのような閾値電圧分布が緩やかに変化する領域においても、比較的誤差の影響を受けにくい。このため、シンドロームトラッキングでは、シンドロームNG数が最小となり得る範囲は、真の谷位置に対して“Er”レベル側の範囲も“A”レベル側と同じように、狭い範囲に収まる。したがって、図39(B)に例示されるように、シンドロームトラッキングの結果検出された谷位置P5は、真の谷位置P6に精度よく追随し得る。
第2実施形態によれば、半導体記憶装置20は、精トラッキングの下位ページトラッキングにおいて、下位ページ用テストリード及び下位ページノーマルリードに基づいて、分離データARsd及びERsdを演算する。そして、下位ページシフトリードのループ処理に基づいて、分離データARsn及びERsnを演算する。コントローラ10は、分離データARsd及びERsnに基づいて統合データARsd/ERsnを生成し、分離データARsn及びERsdに基づいて統合データARsn/ERsdを生成する。コントローラ10は、ECC回路13において、生成した統合データARsd/ERsn及びARsn/ERsdに基づいて、シンドロームNG数を算出する。これにより、コントローラ10は、探索範囲(i)及び(v)について、ビットカウントトラッキングに代えて、シンドロームトラッキングを実行することができる。このため、ビットカウント変化量では谷位置検出の精度が悪化する傾向にある探索範囲(i)においても、シンドロームNG数を用いることにより、精度よく谷位置を検出することができる。
また、シンドロームトラッキングにおいて、ECC回路13は、シンドロームNG数を算出するだけでよく、実際の誤り訂正を行う必要が無い。このため、コントローラ10は、シンドロームトラッキングにおいてECC回路13による誤り訂正動作に要する時間を省略しつつ、精度の高い谷検出を実行することができる。
また、シフトリードによるシンドロームトラッキングでは、1回のシフトリードで印加される複数レベルの電圧を同時にシフトさせる。これにより、例えば、下位ページトラッキングの際は、1回のシフトリードあたり2点のシンドロームNG数を算出することができる。このため、シフトリードによるシンドロームトラッキングに要する時間を短縮することができる。
2.4 第2実施形態の第1変形例
なお、第2実施形態に係る半導体記憶装置は、上述の例に限らず、種々の変形が適用可能である。例えば、第2実施形態に係る半導体記憶装置では、シンドロームトラッキングによって探索範囲(i)及び(v)における谷位置を検出したが、これに限られない。具体的には、シンドロームトラッキングは、探索範囲(i)における谷位置の検出のみについて実行されればよく、探索範囲(v)における谷位置の検出に際してはビットカウントトラッキングが実行されてもよい。
図40は、第2実施形態の第1変形例に係る半導体記憶装置の精トラッキングにおける下位ページトラッキング動作を説明するためのフローチャートである。図40は、第2実施形態に係る図35に対応する。すなわち、図40は、探索範囲(i)及び(v)に対する精トラッキング動作を示す図12のステップST7に対応する。
図40に示すように、ステップST91〜ST94は、図35におけるステップST71〜ST74と同様であるため、説明を省略する。
ステップST95において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARd/ERdに基づき、分離データERsdのみを演算する。そして、半導体記憶装置20は、分離データERsdをコントローラ10に送信する。ステップST95は、図35におけるステップST75と、分離データARsdを演算しない点において相違する。
ステップST96において、コントローラ10は、以降のステップST97〜ST104で実行されるループ処理の初期化を行う(n=0)。
ステップST97〜ST99は、図35におけるステップST77〜ST79と同様であるため、説明を省略する。
ステップST100において、コントローラ10は、分離データERsnに基づくビットカウントを算出する。
ステップST101において、コントローラ10は、分離データERsd及びARsnを用いて、統合データARsn/ERsdを生成する。
ステップST102において、コントローラ10は、ARsn/ERsdに基づくシンドロームNG数を算出する。
ステップST103において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST102;no)、ステップST104に進んでループ数をインクリメントした後にステップST97に戻る。また、値nが値Nと等しい場合(ステップST102;yes)、精トラッキングにおける下位ページトラッキング動作を終了する。
図41は、第2実施形態の変形例の効果を説明するための模式図である。図41(A)及び41(B)ではそれぞれ、探索範囲(v)におけるビットカウント変化量及びシンドロームNG数の真値が、参考のために点線で示されている。また、図41(A)は、精トラッキングにおける探索範囲(v)に対してビットカウントトラッキングした場合のビットカウント変化量が“○”で示される。図41(B)は、精トラッキングにおける探索範囲(v)に対してシンドロームトラッキングした場合のビットカウント変化量が“□”で示される。
上述の通り、シンドロームNG数は、ビットカウント変化量よりもエラービット数に対して強く相関する。このため、図41(B)に示すように、探索範囲(v)に対するシンドロームトラッキングは、探索範囲(i)に対するシンドロームトラッキングと同様に、シンドロームNG数が最小となり得る範囲が、真の谷位置に対して狭い範囲に収まる。したがって、シンドロームトラッキングの結果検出された谷位置P9は、真の谷位置P10に精度よく追随し得る。
一方、ビットカウント変化量は、上述の通り、シンドロームNG数と比較して、真値に対するばらつきが大きい。しかしながら、図41(A)に示すように、例えば“D”レベル及び“E”レベルの間の谷位置のようにいずれのレベルも閾値電圧分布が急峻に変化する領域では、ビットカウント変化量は、当該誤差の影響を受けにくい。つまり、探索範囲(v)におけるビットカウントトラッキングの結果検出された谷位置P7は、真の谷位置P8に精度よく追随し得る。したがって、探索範囲(v)に対しては、シンドロームトラッキングの代わりにビットカウントトラッキングを用いても、最適な谷位置を精度よく検出することができる。
第2実施形態の第1変形例によれば、半導体記憶装置20は、精トラッキングの下位ページトラッキングにおいて、下位ページ用テストリード及び下位ページノーマルリードに基づいて、分離データERsdのみを演算する。そして、下位ページシフトリードのループ処理に基づいて、分離データARsn及びERsnを演算する。コントローラ10は、分離データERsnに基づいてビットカウントを算出する。また、コントローラ10は、分離データARsn及びERsdに基づいて統合データARsn/ERsdを生成する。コントローラ10は、ECC回路13において、生成した統合データARsn/ERsdに基づいて、シンドロームNG数を算出する。これにより、コントローラ10は、探索範囲(i)に対してのみシンドロームトラッキングを実行し、探索範囲(v)に対してはビットカウントトラッキングを実行することができる。このため、コントローラ10への負荷を最小限に抑えつつ、最適な谷位置を精度よく検出することができる。
2.5 第2実施形態の第2変形例
次に、第2実施形態の第2変形例について説明する。第2実施形態の第2変形例では、第2実施形態の第1変形例について、更に谷位置の検出精度を高める変形が施される。具体的には、探索範囲(i)に対するシンドロームトラッキングの統合データに用いられる“E”レベル側の分離データについて、粗トラッキングにおいて検出された暫定的な谷位置を適用する点において、第2実施形態の第1変形例と異なる。以下の説明では、第2実施形態の第1変形例と異なる点について説明し、重複する部分についてはその説明を省略する。
図42は、第2実施形態の第2変形例に係る半導体記憶装置の精トラッキングの下位ページトラッキング動作を説明するためのフローチャートである。図42は、第2実施形態の第1変形例に係る図40に対応する。
図42に示すように、ステップST111〜ST112は、図40におけるステップST91〜ST92と同様であるため、説明を省略する。
ステップST113において、コントローラ10は、粗トラッキングにおいて検出された“E”レベルの暫定的な谷位置の読出し電圧ERdef2を適用した下位ページシフトリードコマンドを発行する。具体的には、コントローラ10は、下位ページの読出し電圧が電圧ARdef及びERdef2となるように下位ページシフトリードコマンドを発行する。
ステップST114において、半導体記憶装置20は、下位ページシフトリードを実行し、読出しデータARd/ERd2を読み出す。半導体記憶装置20は、読出しデータARd/ERd2をラッチ回路(例えばラッチ回路BDL)に保持する。
ステップST115において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARd/ERd2に基づき、分離データERsd2のみを演算する。そして、半導体記憶装置20は、分離データERsd2をコントローラ10に送信する。ステップST115は、図40におけるステップST95と、分離データERsdではなく分離データERsd2を演算する点において相違する。
ステップST116において、コントローラ10は、以降のステップST117〜ST124で実行されるループ処理の初期化を行う(n=0)。
ステップST117〜ST120は、図40におけるステップST97〜ST100と同様であるため、説明を省略する。
ステップST121において、コントローラ10は、分離データERsd2及びARsnを演算し、統合データARsn/ERsd2を生成する。
ステップST122において、コントローラ10は、統合データARsn/ERsd2に基づくシンドロームNG数を算出する。
ステップST123〜ST124は、図40におけるステップST103〜ST104と同様であるため、説明を省略する。
第2実施形態の第2変形例によれば、よりシンドロームNG数を低減させた状態で探索範囲(i)に対するシンドロームトラッキングを実行することが出来る。
上述の通り、シンドロームは、パリティチェック行列に対する論理演算によって算出されるため、シンドロームのサイズは、パリティチェック行列のサイズに依存する。つまり、シンドロームNG数は、パリティチェック行列のサイズに応じた上限値を有する。このため、エラービット数が過度に大きい場合、当該エラービット数に相関するシンドロームNG数は、上限値に達した状態で飽和してしまう。シンドロームNG数が上限値に達してしまうと、読出し電圧をシフトさせてもシンドロームNG数が上限値のまま変化しないため、どちらがよりエラービット数を少なくする読出し電圧であるかが判定できない。このように、エラービット数が過度に大きい場合、シンドロームトラッキングを実行することができない。
図43は、メモリセルトランジスタMTの閾値電圧分布と、読出し電圧との関係が示される。図43に示すように、コントローラ10は、トラッキング前には既定の読出し電圧ERdefを用いて読出し動作を実行する。そして、コントローラ10は、粗トラッキング動作によって暫定的な谷位置に対応する読出し電圧ERdef2を検出する。電圧ERdef2は、電圧ERdefよりも最適な読出し電圧ERoptに近い。つまり、電圧ERdef2による読出しデータは、電圧ERdefによる読出しデータよりも、エラービット数が少ない。より具体的には、統合データARsn/ERsd2は、統合データARsn/ERsdよりも図43に示された斜線部分のメモリセル数だけ、エラービット数が少ない。
第2実施形態の第2変形例によれば、半導体記憶装置20は、精トラッキングの下位ページトラッキングにおいて、下位ページ用テストリード及び下位ページシフトリードに基づいて、分離データERsd2のみを演算する。そして、下位ページシフトリードのループ処理に基づいて、分離データARsn及びERsnを演算する。コントローラ10は、分離データERsnに基づいてビットカウントを算出する。また、コントローラ10は、分離データARsn及びERsd2に基づいて統合データARsn/ERsd2を生成する。コントローラ10は、ECC回路13において、生成した統合データARsn/ERsd2に基づいて、シンドロームNG数を算出する。上述の通り、統合データARsn/ERsd2は、統合データARsn/ERsdよりもエラービット数が少ない。このため、統合データARsn/ERsdではシンドロームNG数が上限値に達してしまう場合においても、統合データARsn/ERsd2によればシンドロームNG数が上限値に達しない程度に低減し得る。したがって、最適な谷位置を検出できる可能性を高めることができる。
2.6 第2実施形態の第3変形例
次に、第2実施形態の第3変形例について説明する。第2実施形態の第3変形例に係る半導体記憶装置は、第2実施形態の第2変形例について、更に谷位置の検出精度を高める変形が施される。具体的には、統合データの生成に用いられる“E”レベル側の分離データについて、精トラッキングにおいて検出された最適な谷位置を適用する点において、第2実施形態の第2変形例と異なる。以下の説明では、第2実施形態の第2変形例と異なる点について説明し、重複する部分についてはその説明を省略する。
図44及び図45は、第2実施形態の第3変形例に係る半導体記憶装置の精トラッキングの下位ページトラッキング動作を説明するためのフローチャートである。図44及び図45は、第2実施形態の第2変形例に係る図42に対応する。
図44に示すように、ステップST131〜ST132は、図42におけるステップST111〜ST112と同様であるため、説明を省略する。
ステップST133において、コントローラ10は、以降のステップST134〜ST139で実行されるループ処理の初期化を行う(n=0)。
ステップST134において、コントローラ10は、下位ページのシフトリードコマンドを半導体記憶装置20に発行する。
ステップST135において、半導体記憶装置20は、下位ページのシフトリードを実行し、(n+1)回目のループ処理において読出しデータARn/ERn(AR0/ER0、AR1/ER1、…、ARN/ERN)を読み出す。半導体記憶装置20は、読出しデータARn/ERnをラッチ回路(例えばラッチ回路BDL)に保持する。
ステップST136において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARn/ERnに基づき、分離データERsn(ERs0、ERs1、…、ERsn)を演算する。そして、半導体記憶装置20は、分離データERsnをコントローラ10に送信する。
ステップST137において、コントローラ10は、分離データERsnに基づくビットカウントを算出する。
ステップST138において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST138;no)、ステップST139に進んでループ数をインクリメントした後にステップST134に戻る。また、値nが値Nと等しい場合(ステップST138;yes)、ステップST140に進む。
ステップST140において、コントローラ10は、分離データERsnに基づいて算出されたビットカウントに基づくビットカウントトラッキングを実行する。コントローラ10は、ビットカウントトラッキングの結果、“E”レベルの最適な谷位置における読出し電圧ERoptを検出する。
図45に示すように、ステップ141において、コントローラ10は、以降のステップST142〜ST146で実行されるループ処理の初期化を行う(n=0)。
ステップST142において、コントローラ10は、ステップST140において検出された読出し電圧ERoptを適用した下位ページシフトリードコマンドを発行する。具体的には、コントローラ10は、(n+1)回目のループにおいて、下位ページの読出し電圧が電圧ARn及びERoptとなるように下位ページシフトリードコマンドを発行する。
ステップST143において、半導体記憶装置20は、下位ページシフトリードを実行し、(n+1)回目のループ処理において読出しデータARn/ERopt(AR0/ERopt、AR1/ERopt、…、ARN/ERopt)を読み出す。半導体記憶装置20は、読出しデータARn/ERoptをコントローラ10に送信する。
ステップST144において、コントローラ10は、読出しデータARn/ERoptに基づくシンドロームNG数を算出する。
ステップST145において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST145;no)、ステップST146に進んでループ数をインクリメントした後にステップST142に戻る。また、値nが値Nと等しい場合(ステップST145;yes)、精トラッキングの下位ページトラッキングを終了する。
第2実施形態の第3変形例によれば、よりシンドロームNG数を低減させた状態で探索範囲(i)に対するシンドロームトラッキングを実行することが出来る。
図46は、メモリセルトランジスタMTの閾値電圧分布と、読出し電圧との関係が示される。図46に示すように、コントローラ10は、トラッキング前には既定の読出し電圧ERdefを用いて読出し動作を実行する。コントローラ10は、粗トラッキング動作によって暫定的な谷位置に対応する読出し電圧ERdef2を検出する。そして、コントローラ10は、探索範囲(v)に対する精トラッキングによって“D”レベルと“E”レベルとの間の最適な谷位置に対応する読出し電圧ERoptを検出する。電圧ERoptによる読出しデータは、電圧ERdef2による読出しデータよりも、エラービット数が少ない。より具体的には、統合データARsn/ERoptは、統合データARsn/ERsd2よりも図46に示された斜線部分のメモリセル数だけ、エラービット数が少ない。
第2実施形態の第3変形例によれば、半導体記憶装置20は、精トラッキングの下位ページトラッキングにおいて、探索範囲(i)に対する下位ページシフトリードのループ処理の前に、探索範囲(v)に対する下位ページシフトリードのループ処理を実行する。コントローラ10は、探索範囲(v)に対する下位ページシフトリードのループ処理において、最適な谷位置に対応する読出し電圧ERoptを予め検出する。半導体記憶装置20は、探索範囲(i)に対する下位ページシフトリードのループ処理において、読出し電圧ERoptを適用した下位ページシフトリードを実行し、読出しデータARn/ERoptを読み出す。コントローラ10は、ECC回路13において、読出しデータARn/ERoptに基づいて、シンドロームNG数を算出する。上述の通り、統合データARsn/ERoptは、統合データARsn/ERsd2よりもエラービット数が少ない。このため、統合データARsn/ERsd2ではシンドロームNG数が上限値に達してしまう場合においても、統合データARsn/ERoptによればシンドロームNG数が上限値に達しない程度に低減し得る。したがって、最適な谷位置を検出できる可能性を高めることができる。
2.7 第2実施形態の第4変形例
次に、第2実施形態の第4変形例について説明する。第2実施形態の第4変形例に係る半導体記憶装置は、第2実施形態の第3変形例について、更に谷位置の検出精度を高める変形が施される。具体的には、第2実施形態の第4変形例は、シンドロームNG数が算出されるデータについて、電圧ERoptを適用して読み出されたデータを用いる点では第2実施形態の第3変形例と共通する。しかしながら、第2実施形態の第4変形例は、或る特定のループで電圧ERoptを適用して読み出されたデータを、他のループにおいても適用する点において第2実施形態の第3変形例と異なる。以下の説明では、第2実施形態の第3変形例と異なる点について説明し、重複する部分についてはその説明を省略する。
図47は、第2実施形態の第4変形例に係る半導体記憶装置の精トラッキングの下位ページトラッキング動作を説明するためのフローチャートである。図47は、第2実施形態の第3変形例に係る図45に対応する。また、第2実施形態の第4変形例では、第2実施形態の第3変形例に係る図44に対応する動作が共通する動作であるため、当該動作については説明を省略する。
図47に示すように、ステップST151において、コントローラ10は、以降のステップST152〜ST160で実行されるループ処理の初期化を行う(n=0)。
ステップST152において、コントローラ10は、ステップST140において検出された読出し電圧ERoptを適用した下位ページシフトリードコマンドを発行する。具体的には、コントローラ10は、(n+1)回目のループにおいて、下位ページの読出し電圧が電圧ARn及びERoptとなるように下位ページシフトリードコマンドを発行する。
ステップST153において、半導体記憶装置20は、下位ページシフトリードを実行し、(n+1)回目のループ処理において読出しデータARn/ERoptn(AR0/ERopt1、AR1/ERopt2、…、ARN/ERoptN)を読み出す。ここで、読出しデータARn/ERoptnは、いずれにおいても“E”レベル側の読出し電圧は、電圧ERoptが共通して印加される。しかしながら、“E”レベル側の読出しデータは、(n+1)回のループ処理毎に必ずしも完全一致しない。上述の差異を区別するため、便宜上読出しデータARn/ERoptの末尾にループ数の“n”を付して記載するものである。
ステップST154において、半導体記憶装置20は、ラッチ回路に保持された読出しデータTL及びARn/ERoptnに基づき、分離データARsn(ARs0、ARs1、…、ARsN)及びERsoptn(ERsopt0、ERsopt1、…、ERsoptN)を演算する。そして、半導体記憶装置20は、分離データARsn及びERsoptnをコントローラ10に送信する。
ステップST155において、コントローラ10は、ループ数が1回目(n=0)であるか否かを判定する。コントローラ10は、ループ数が1回目である場合(ステップST155;yes)、ステップST156に進み、1回目でない場合(ステップST155;no)、ステップST157に進む。
ステップST156において、コントローラ10は、1回目のループ処理における分離データERsopt0を記憶する。なお、分離データERsopt0は、1回目ではないループ処理において用いられる。
ステップST157において、コントローラ10は、分離データARsnと、1回目のループ処理における分離データERsopt0を演算し、統合データARsn/ERsopt0を生成する。
ステップST158において、コントローラ10は、統合データARsn/ERsopt0に基づくシンドロームNG数を算出する。
ステップST159において、コントローラ10は、ループ処理を継続するか否かを判定する。具体的には、値nが値Nと等しくない場合(ステップST159;no)、ステップST160に進んでループ数をインクリメントした後にステップST152に戻る。また、値nが値Nと等しい場合(ステップST159;yes)、精トラッキングの下位ページトラッキングを終了する。
第2実施形態の第4変形例によれば、シンドロームNG数の真値に対するばらつきの大きさを低減することが出来る。
図48は、或る読出し電圧に対して複数回の読出しを行った際に、ビットカウントが変動する様子を示している。図48の例では、読出し電圧ERoptが印加された場合に、読み出されるデータのビットカウントが、真値と推定される或る値μを中心に或るばらつきで変動している。このように、実際の読出し動作では、同一の書込み状態にあるページへの同一の読出し電圧が実行された場合においても、読み出しデータのビットカウントは、或る範囲で変動し得る(以下、このような変動を「ノイズ」と言う。)。つまり、精トラッキングにおけるシフトリードのループ処理においても、全てのループにおいて同一の読出し電圧ERoptが印加されたとしても、当該電圧ERoptによる読出しデータのビットカウントは、ループ毎に変動し得る。
第2実施形態の第4変形例によれば、半導体記憶装置20は、精トラッキングの下位ページトラッキングにおいて、探索範囲(i)に対する下位ページシフトリードのループ処理の前に、探索範囲(v)に対する下位ページシフトリードのループ処理を実行する。コントローラ10は、探索範囲(v)に対する下位ページシフトリードのループ処理において、最適な谷位置に対応する読出し電圧ERoptを予め検出する。半導体記憶装置20は、探索範囲(i)に対する下位ページシフトリードのループ処理において、読出し電圧ERoptを適用した下位ページシフトリードを実行し、読出しデータARn/ERoptnを読み出す。また、半導体記憶装置20は、分離データARsn及びERsoptnを演算する。コントローラ10は、1回目のループにおいて、分離データERsopt0を記憶する。そしてコントローラ10は、n回目のループにおいて、統合データARsn/ERsopt0を演算し、当該統合データARsn/ERsopt0に基づくシンドロームNG数を算出する。これにより、全てのループにおいて、電圧ERoptに基づく読出しデータの結果が、1回目のループによるもので統一される。このため、ループ毎に発生する真値に対する誤差の大きさがどのループでも同じ大きさになり、谷位置の検出精度が向上する。したがって、最適な谷位置を検出できる可能性を高めることができる。
3.第3実施形態
次に、第3実施形態に係る半導体記憶装置について説明する。第1実施形態及び第2実施形態に係る半導体記憶装置がページ単位でトラッキング動作を実行するのに対し、第3実施形態に係る半導体記憶装置は、クラスタ単位でトラッキング動作を実行するものである。以下では、第2実施形態と同様の構成要素には同一の符号を付してその説明を省略し、第2実施形態と異なる部分についてのみ説明する。
3.1 クラスタについて
まず、第3実施形態に係る半導体記憶装置におけるクラスタの概要について説明する。図49は、第3実施形態に係る半導体記憶装置におけるクラスタの概念を説明するための模式図である。
図49に示すように、半導体記憶装置20から読み出される1ページ分の読出しデータは、例えば、4つのクラスタ(クラスタ[0]、クラスタ[1]、クラスタ[2]、及びクラスタ[3])に区分される。各クラスタは、データとパリティとを含み、ECC回路13によるECC処理が実行可能な最小単位となり得る。なお、図49では、1ページ分の読出しデータが4つのクラスタに区分されることを例示しているに過ぎず、同一クラスタ内のデータが連続したカラムのデータであることを示すものではない。
コントローラ10は、1ページ分の読出しデータ内の各ビットが、いずれのクラスタに属するかを予め記憶している。つまり、ECC回路13は、1ページ分の読出しデータに対してECC処理を実行する場合、データ内の各ビットとクラスタとの対応関係に基づいて読出しデータをクラスタ単位に分割し、クラスタ毎にECC処理を実行する。そして、ECC回路13は、ECC処理がパスしたか、又はフェイルしたかをクラスタ毎に判定する。
3.2 トラッキング動作について
次に、第3実施形態に係る半導体記憶装置のトラッキング動作について説明する。図50は、第3実施形態に係る半導体記憶装置のトラッキング動作を説明するためのフローチャートである。
図50に示すように、ステップST201において、コントローラ10は、既定の読出し電圧VCGRVdefを適用したノーマルリードコマンドを半導体記憶装置20に発行する。
ステップST202において、半導体記憶装置20は、ノーマルリードを実行し、読出しデータをコントローラ10に送信する。
ステップST203において、ECC回路13は、ノーマルリードの読出しデータに基づいて各クラスタについてECCを実行する。コントローラ10は、ノーマルリードの読出しデータが全てのクラスタについてECCをパスした場合(ステップST203;パス)、ステップST214に進み、少なくとも1つのクラスタについてフェイルした場合、(ステップST203;フェイル)、ステップST204に進む。
ステップST204において、コントローラ10及び半導体記憶装置20は、トラッキング動作を実行する。ステップST204におけるトラッキング動作は、精トラッキングを含む。具体的には、例えば、ステップST204において、コントローラ10は、第1実施形態において説明したビットカウントトラッキングに基づく精トラッキングを実行してもよく、第2実施形態において説明したシンドロームトラッキングに基づく精トラッキングを実行してもよい。なお、ステップST204におけるトラッキング動作は、上述の例に限らず、任意のトラッキング動作が適用可能である。いずれにしても、コントローラ10及び半導体記憶装置20は、1ページ分の読出しデータについて、ビットカウント変化量又はシンドロームNG数等の、最適な谷位置を検出可能なパラメタを算出するための動作を実行する。
ステップST205において、コントローラ10は、ステップST205において算出されたパラメタをクラスタ毎に処理する。そして、コントローラ10は、クラスタ毎に最適な谷位置を検出する。
ステップST206において、コントローラ10は、以降のステップST207〜ST213で実行されるループ処理の初期化を行う(k=0(kは0≦k≦3の整数))。
ステップST207において、コントローラ10は、クラスタ[k]のためのシフトリードコマンドを半導体記憶装置20に発行する。ここで、クラスタ[k]のためのシフトリードコマンドは、ステップST205において検出されたクラスタ[k]についての最適な谷位置に読出し電圧をシフトさせるための値ΔDAC[k]を含む。
ステップST208において、半導体記憶装置20は、クラスタ[k]のためのシフトリードを実行し、クラスタ[k]について最適化された読出しデータR[k]を読み出す。
ステップST209において、ECC回路13は、読出しデータR[k]のうちクラスタ[k]に対してECCを実行する。コントローラ10は、読出しデータR[k]のクラスタ[k]がECCをパスした場合(ステップST209;パス)、ステップST211に進み、フェイルした場合、(ステップST209;フェイル)、ステップST210に進む。
ステップST210において、コントローラ10は、クラスタ[k]についてはデータを正しく訂正できないと判定する。ステップST211において、コントローラ10は、クラスタ[k]についてはデータを正しく訂正できたと判定する。
ステップST212において、ループ処理を継続するか否かを判定する。具体的には、値kが値3に等しくない場合(ステップST221;no)、ステップST213に進んでループ数をインクリメントした後にステップST207に戻る。また、値kが値3に等しい場合(ステップST221;yes)、動作を終了する。
なお、ステップST205において、最適な谷位置に対応する読出し電圧として、同一の値が異なるクラスタについて検出された場合、ステップST207〜ST213は、省略され得る。具体的には、例えば、クラスタ[0]及びクラスタ[1]について同一の谷位置が検出された場合、クラスタ[0]及びクラスタ[1]に対するステップST207及びST208は、2回実行することなく、1回に省略され得る。また、ステップST209〜ST211では、ECC回路13は、クラスタ[0]及びクラスタ[1]に対してそれぞれECCを実行する。
以上で、トラッキング動作が終了する。
3.3 本実施形態に係る効果
データの読出しは、ページ単位で行われる。このため、一般的に、トラッキング動作もページ単位で行われる。しかしながら、ページ単位で算出された最適な読出し電圧は、ページ内の全てのメモリセルトランジスタMTの各々に対する最適な読出し電圧の平均値であり、必ずしも全てのメモリセルトランジスタMTに対して最適な読出し電圧であるとは限らない。具体的には、例えば、閾値電圧がクラスタに依存して変動している場合、クラスタ単位で算出された最適な読出し電圧は、ページ単位で算出された最適な読出し電圧よりも、より精度よくデータを読み出し得る。
第3実施形態によれば、コントローラ10は、トラッキング動作の結果をクラスタ毎に処理する。コントローラ10は、当該処理の結果、クラスタ毎に最適な谷位置を検出する。半導体記憶装置20は、クラスタ毎に最適化された読出し電圧を適用したシフトリードを実行し、読出しデータR[k]を読み出す。コントローラ10は、クラスタ毎の読出しデータR[k]のうちの最適化された部分に対して順次ECC処理を実行する。このため、クラスタ単位で最適化された読出し電圧に基づく読出しデータを生成することができる。したがって、より精度よくデータを読み出すことができる。
3.4 第3実施形態の変形例
なお、第3実施形態に係る半導体記憶装置は、上述の例に限らず、種々の変形が適用可能である。例えば、ECC処理がフェイルしたクラスタについては、ECC処理がパスした他のクラスタにおける最適な谷位置の検出結果を適用するようにしても良い。
図51は、第3実施形態の変形例に係る半導体記憶装置のトラッキング動作の詳細を説明するためのフローチャートである。図51は、図50の一部であり、図50におけるステップST204及びST205対応する。すなわち、第3実施形態の変形例に係るトラッキング動作は、図50及び図51によって示されるが、ここでは図50に係る部分は第3実施形態と同様であるためその説明を省略し、図51についてのみ説明する。なお、図51では、一例として、ステップST203におけるECC処理において、或るクラスタがフェイルし、その他のクラスタがパスした場合が示される。
図51に示すように、ステップST221において、コントローラ10は、図50におけるステップST203の結果、或るクラスタにおけるECC処理がフェイルし、その他のクラスタにおけるECC処理がパスしたことを認識する。コントローラ10は、ECC処理がパスしたクラスタについて誤り訂正を行い、誤り訂正済みデータRtrueを生成する。つまり、誤り訂正済みデータRtrueは、ECC処理がフェイルしているクラスタについては生成されない。
ステップST222において、コントローラ10は、以降のステップST223〜ST228で実行されるループ処理の初期化を行う(n=0)。
ステップST223において、コントローラ10は、(n+1)回目のループにおけるシフトリードコマンドを半導体記憶装置20に発行する。
ステップST224において、半導体記憶装置20は、(n+1)回目のループにおけるシフトリードを実行し、(n+1)回目のループにおける読出しデータRnを読み出す。半導体記憶装置20は、読出しデータRnをコントローラ10に送信する。
ステップST225において、コントローラ10は、ECC処理がパスしたクラスタについて、読出しデータRnと、誤り訂正済みデータRtrueとに基づくフェイルビットカウントを算出する。具体的には、例えば、コントローラ10は、誤り訂正済みデータRtrueと、読出しデータRnとの排他的論理和を演算することによって、フェイルビットカウントを算出する。
ステップST226において、ループ処理を継続するか否かを判定する。具体的には、値nが値Nに等しくない場合(ステップST226;no)、ステップST227に進んでループ数をインクリメントした後にステップST223に戻る。また、値nが値Nに等しい場合(ステップST226;yes)、ステップST228に進む。
ステップST228において、コントローラ10は、ECC処理がパスしたクラスタの各々についてループ毎に算出されたフェイルビットカウントに基づき、ECC処理がパスしたクラスタの各々について最適な谷位置を検出する。コントローラ10は、例えば、フェイルビットカウントが最も小さくなる連続する2点のフェイルビットカウントを検出し、当該2点に対応する電圧の中央値を最適な谷位置として検出してもよい。
ステップST229において、コントローラ10は、ECC処理がパスしたクラスタの各々について検出された最適な谷位置に基づき、ECC処理がフェイルしたの最適な谷位置を推定する。具体的には、例えば、コントローラ10は、ECC処理がパスしたクラスタの各々における最適な谷位置の平均値を、ECC処理がフェイルしたクラスタの最適な谷位置として推定する。また、上述の例に限らず、コントローラ10は、ECC処理がパスしたクラスタの各々における最適な谷位置のうち、最も精度の高い値をECC処理がフェイルしたクラスタの最適な谷位置として推定してもよい。
以降の動作において、ECC処理がフェイルしたクラスタに最適な谷位置に対応する読出し電圧が適用された読出し動作が実行される。
第3実施形態の変形例によれば、ECC処理がフェイルしたクラスタについても、より精度よく最適な谷位置を推定することができる。本効果につき、以下説明する。
第3実施形態に係る半導体記憶装置では、一例として、ビットカウントトラッキングによってクラスタ毎の最適な谷位置が検出できる場合について説明した。しかしながら、ビットカウントトラッキングは、谷位置の検出精度が低い場合があるため、データが正しく読み出せない可能性がある。また、第3実施形態に係る半導体記憶装置では、ECC処理がフェイルしたクラスタについても、クラスタ単位によるトラッキングを実行する。このため、精度の観点から当該ECC処理がフェイルしたクラスタについて最適な谷位置を検出できない可能性がある。
図52は、ECC処理として、訂正可能ビット数が一定なBCH符号が適用された場合における、読出し電圧毎のフェイルビットカウントの変化が示される。図52(A)は、ノーマルリードにおいてECCパスするクラスタに関する、読出し電圧毎のフェイルビットカウントの変化が示される。図52(B)は、ノーマルリードにおいてECCフェイルするクラスタに関する、読出し電圧毎のフェイルビットカウントの変化が示される。
図52(A)に示すように、ECC処理によって誤りを訂正できるフェイルビットカウントの数は、上限がある。このため、電圧V6よりも低い読出し電圧、又は電圧V10よりも高い読出し電圧による読出しデータに対してECC処理を行うと、ECC処理はフェイルし、フェイルビットカウントを算出することができない。しかしながら、ノーマルリードにおいてECCパスするクラスタでは、例えばノーマルリードの読出し電圧として電圧V7が適用されると、ECCパスし、フェイルビットカウントM7が算出される。また、電圧V7近傍において或るシフト量で読出し電圧を振った場合、読出し電圧V6〜V10においても、読出しデータと、誤り訂正されたデータとの比較により、フェイルビットカウントM6〜M10が算出される。
一方、図52(B)に示すように、或るクラスタでは、ECCパスできる読出し電圧の範囲が非常に限られている場合がある。この場合、ノーマルリードの読出し電圧として電圧V7が適用されると、ECCフェイルし、フェイルビットカウントが算出できない。また、ECCパスできる読出し電圧の範囲が上述の或るシフト量よりも小さい場合、電圧V7近傍において当該或るシフト量で読出し電圧を振った場合でも、ECC処理はフェイルし、フェイルビットカウントを算出することができない。
ここで、例えば、フェイルビットカウントが算出可能なクラスタにおいて、フェイルビットカウントM8及びM9に基づき、電圧V8及び電圧V9の中間値を最適な読出し電圧V11として設定する。すると、これまでフェイルビットカウントが算出できなかったクラスタにおいても、BCH符号を用いたECC処理によってフェイルビットカウントM11を算出できる可能性がある。
なお、仮に図52(B)における探索可能範囲が電圧V8や電圧V9を含む場合、シフトリードの都度ECC処理を実行すれば、ECCパスする読出し電圧を検出することができる。しかしながら、コントローラ10にかかる負荷を軽減する観点から、シフトリードの都度ECC処理を実行させる動作は、好ましくない。
第3実施形態の変形例では、半導体記憶装置20は、ノーマルリードでECCフェイルしたクラスタがある場合、シフトリードのループ処理を実行する。コントローラ10は、ノーマルリードでECCフェイルしたクラスタ以外のクラスタに対して、ループ毎にフェイルビットカウントを算出する。フェイルビットは、ループ毎にECC処理を実行することなく算出される。コントローラ10は、算出されたフェイルビットカウントに基づき、ノーマルリードでECCフェイルしたクラスタ以外のクラスタに対して、最適な谷位置を検出する。コントローラ10は、ノーマルリードでECCフェイルしたクラスタ以外のクラスタに対して検出された最適な谷位置を、ノーマルリードでECCフェイルしたクラスタに対して適用する。これにより、ECCフェイルが起きた場合でも、ビットカウントトラッキングよりも精度の高いフェイルビットカウントを用いて、谷位置を検出することができる。したがって、より精度よくデータを読み出すことができる。
4.第4実施形態
次に、第4実施形態に係る半導体記憶装置について説明する。第1実施形態及び第2実施形態に係る半導体記憶装置がページ単位でトラッキング動作を実行し、第3実施形態に係る半導体記憶装置がクラスタ単位でトラッキング動作を実行するのに対し、第4実施形態に係る半導体記憶装置は、I/Oグループ単位でトラッキング動作を実行するものである。以下では、第3実施形態と同様の構成要素には同一の符号を付してその説明を省略し、第3実施形態と異なる部分についてのみ説明する。
4.1 メモリセルアレイの構成について
第4実施形態に係る半導体記憶装置におけるメモリセルアレイの構成について説明する。図53は、第4実施形態に係る半導体記憶装置におけるメモリセルアレイの構成を示す上面図である。図53は、図4に示されたメモリセルアレイの構成に対応する。
図53に示すように、ストリングユニットSU0及びSU1、絶縁領域46、並びにスリット領域47は、例えばX方向に沿って延びる。ストリングユニットSU0及びSU1は、絶縁領域46をY方向に挟み、スリット領域47は、ストリングユニットSU0及びSU1、並びに絶縁領域46をY方向に更に挟む。
各ストリングユニットSUにおいて、配線層31、32、及び33と絶縁膜とが交互に設けられた積層構造がxy平面内に広がり、当該積層構造内には、複数のNANDストリングNSが設けられている。NANDストリングNSは、X方向とY方向の平面内に例えば4列の千鳥状に設けられている。この1つのNANDストリングNSには、1本のビット線BLが接続される。具体的には、NANDストリングNS0〜NS7にはそれぞれコンタクトプラグ38を介してビット線BL0〜BL7が接続される。
各ビット線BLは、例えばY方向に沿って延びる。図53の例では、NANDストリングNSが4列の千鳥状に配置されているため、NANDストリングNSの上方には、例えば2本のビット線BLが通過する。コンタクトプラグ38は、当該2本のビット線BLのうち、NANDストリングNSに対応する1本のビットBLを、NANDストリングNSと接続するように設けられる。なお、NANDストリングNSの上方を通過するビット線BLの本数は、2本に限らず、任意の本数であってもよい。
上述の通り、或るビット線BLに接続されたNANDストリングNSは、信号I/O<7:0>のいずれかに対応付けられる。図53では、例えば、NANDストリングNS0、NS4、NS8、及びNS12は、或る信号線の組を介して、信号I/O<7:0>のうちの特定の信号I/Oを通信する。すなわち、NANDストリングNS0、NS4、NS8、及びNS12、…は、I/Oグループ[0]に分類される。同様に、NANDストリングNS2、NS6、NS10、及びNS14、…は、I/Oグループ[1]に分類され、NANDストリングNS1、NS5、NS9、及びNS13、…は、I/Oグループ[2]に分類され、NANDストリングNS3、NS7、NS11、及びNS15、…は、I/Oグループ[3]に分類される。各I/Oグループは、例えば、信号I/O<7:0>のうちの2つに対応付けられる。
図53の例では、I/Oグループ[0]は、スリット領域47に最も近いNANDストリングNSの組である。I/Oグループ[1]及び[2]はそれぞれ、スリット領域47に2番目、及び3番目に近いNANDストリングNSの組である。I/Oグループ[3]は、スリット領域47から最も遠く、絶縁領域46に最も近いNANDストリングNSの組である。
また、図53の例では、I/Oグループ[0]〜I/Oグループ[3]の各々は、4列の千鳥状に配置されたNANDストリングNSのうちの1列を構成する。すなわち、I/Oグループ[0]のNANDストリングNSは、X方向に沿って一列に並び、I/Oグループ[1]のNANDストリングNSは、X方向に沿ってI/Oグループ[0]と異なる列に一列に並ぶ。I/Oグループ[2]、I/Oグループ[3]についても同様である。
4.2 トラッキング動作について
次に、第4実施形態に係る半導体記憶装置のトラッキング動作について説明する。図54は、第4実施形態に係る半導体記憶装置のトラッキング動作を説明するためのフローチャートである。
図54に示すように、ステップST241において、コントローラ10は、既定の読出し電圧VCGRVdefを適用したノーマルリードコマンドを半導体記憶装置20に発行する。
ステップST242において、半導体記憶装置20は、ノーマルリードを実行し、読出しデータをコントローラ10に送信する。
ステップST243において、ECC回路13は、ノーマルリードの読出しデータに基づいてECCを実行する。コントローラ10は、ノーマルリードの読出しデータがECCをパスした場合(ステップST243;パス)、ステップST243に進み、フェイルした場合、(ステップST243;フェイル)、ステップST204に進む。
ステップST244において、コントローラ10及び半導体記憶装置20は、トラッキング動作を実行する。具体的には、例えば、ステップST244において、コントローラ10は、第1実施形態において説明したビットカウントトラッキングに基づく精トラッキングを実行してもよい。なお、ステップST244におけるトラッキング動作は、上述の例に限らず、任意のトラッキング動作が適用可能である。いずれにしても、コントローラ10及び半導体記憶装置20は、1ページ分の読出しデータについて、ビットカウント変化量等の、最適な谷位置を検出可能なパラメタを算出するための動作を実行する。
ステップST245において、コントローラ10は、ステップST245において算出されたパラメタをI/Oグループ毎に処理する。そして、コントローラ10は、I/Oグループ毎に最適な谷位置を検出する。
ステップST256において、コントローラ10は、以降のステップST247〜ST250で実行されるループ処理の初期化を行う(j=0(jは0≦j≦3の整数))。
ステップST247において、コントローラ10は、I/Oグループ[j]のためのシフトリードコマンドを半導体記憶装置20に発行する。ここで、I/Oグループ[j]のためのシフトリードコマンドは、ステップST245において検出されたI/Oグループ[j]についての最適な谷位置に読出し電圧をシフトさせるための値ΔDAC[j]を含む。
ステップST248において、半導体記憶装置20は、I/Oグループ[j]のためのシフトリードを実行し、I/Oグループ[j]について最適化された読出しデータR[j]を読み出す。
ステップST249において、ループ処理を継続するか否かを判定する。具体的には、値jが値3に等しくない場合(ステップST249;no)、ステップST250に進んでループ数をインクリメントした後にステップST247に戻る。また、値jが値3に等しい場合(ステップST249;yes)、ステップST251に進む。
なお、ステップST245において、最適な谷位置に対応する読出し電圧として、同一の値が異なるI/Oグループについて検出された場合、ステップST247〜ST250は、省略され得る。具体的には、例えば、I/Oグループ[0]及び[1]について同一の谷位置が検出された場合、I/Oグループ[0]及び[1]に対するステップST247〜ST250は、2回実行することなく、1回に省略され得る。
ステップST251において、コントローラ10は、I/Oグループ[0]〜I/Oグループ[3]についてそれぞれ最適化された読出しデータR[0]〜R[3]を統合する。具体的には、コントローラ10は、各読出しデータR[0]〜R[3]について、最適となっている部分のみを抽出し、統合する。より具体的には、コントローラ10は、読出しデータR[0]のうちのI/Oグループ[0]に対応する部分のデータと、読出しデータR[1]のうちのI/Oグループ[1]に対応する部分のデータと、読出しデータR[2]のうちのI/Oグループ[2]に対応する部分のデータと、読出しデータR[3]のうちのI/Oグループ[3]に対応する部分のデータと、を抽出する。そして、コントローラ10は、抽出された各I/Oグループに対応する部分のデータを統合し、1ページ分のデータに統合する。
ステップST252において、ECC回路13は、統合されたデータに基づいてECCを実行する。コントローラ10は、統合されたデータがECCをパスした場合(ステップST252;パス)、ステップST253に進み、フェイルした場合、(ステップST252;フェイル)、ステップST254に進む。
ステップST253において、コントローラ10は、ECCパスのステータスを取得し、動作を終了する。ステップST254において、コントローラ10は、ECC結果に基づいてデータを正しく訂正できないと判定し、動作を終了する。
以上で、トラッキング動作が終了する。
4.3 本実施形態に係る効果
読出しデータは、信号I/O<7:0>のいずれかとしてコントローラ10へ送信される。一方、特定の信号I/Oグループに属するNANDストリングNSは、特定の位置に配置され得る。特定の位置に配置されたNANDストリングNSは、当該特定の位置に応じた閾値電圧の特性を有し得る。このため、特定のI/Oグループに属するNANDストリングNSは、特定の閾値電圧の特性を有し得る。つまり、閾値電圧は、I/Oグループに依存して変動し得る。
このような場合、ページ単位で算出された最適な読出し電圧は、必ずしも全てのメモリセルトランジスタMTに対して最適な読出し電圧であるとは限らない。具体的には、I/Oグループ単位で算出された最適な読出し電圧は、ページ単位で算出された最適な読出し電圧よりも、より精度よくデータを読み出し得る。
第4実施形態によれば、コントローラ10は、トラッキング動作の結果をI/Oグループ毎に処理する。コントローラ10は、当該処理の結果、I/Oグループ毎に最適な谷位置を検出する。半導体記憶装置20は、I/Oグループ毎に最適化された読出し電圧を適用したシフトリードを実行し、読出しデータR[j]を読み出す。コントローラ10は、I/Oグループ毎の読出しデータR[j]のうちの最適化された部分同士を統合し、当該統合データに対してECC処理を実行する。このため、I/Oグループ単位で最適化された読出し電圧に基づく読出しデータを生成することができる。したがって、より精度よくデータを読み出すことができる。
5.その他の変形例等
実施形態は、上述の第1乃至第4実施形態で述べた形態に限らず、種々の変形が可能である。上述の第1実施形態及び第2実施形態では、半導体記憶装置20において分離データを演算するようにしているが、これに限らず、コントローラ10において演算するようにしてもよい。また、第2実施形態では、コントローラ10において統合データを演算するようにしているが、これに限らず、半導体記憶装置20において演算するようにしてもよい。
また、上述の各実施形態では、1つのメモリセルトランジスタMTあたり3ビットを保持可能な場合(TLC:Triple Level Cell)について説明したが、これに限られない。例えば、メモリセルトランジスタMTは、2ビットを保持可能(MLC:Multi Level Cell)でもよく、4ビット以上を保持可能でもよい。
その他、各実施形態及び各変形例において、以下の事項が適用されることが可能である。
多値レベルの読み出し動作(リード)において、Aレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば0V〜0.55Vの間である。これに限定されることなく、0.1V〜0.24V、0.21V〜0.31V、0.31V〜0.4V、0.4V〜0.5V、及び0.5V〜0.55Vのいずれかの間にしてもよい。
Bレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば1.5V〜2.3Vの間である。これに限定されることなく、1.75V〜1.8V、1.8V〜1.95V、1.95V〜2.1V、及び2.1V〜2.3Vのいずれかの間にしてもよい。
Cレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば3.0V〜4.0Vの間である。これに限定されることなく、3.0V〜3.2V、3.2V〜3.4V、3.4V〜3.5V、3.5V〜3.7V、及び3.7V〜4.0Vのいずれかの間にしてもよい。
読み出し動作の時間(tR)としては、例えば25μs〜38μs、38μs〜70μs、及び70μs〜80μsのいずれかの間にしてもよい。
書き込み動作は、プログラム動作及びベリファイ動作を含む。書き込み動作では、プログラム動作時に選択されたワード線に最初に印加される電圧は、例えば13.7V〜14.3Vの間である。これに限定されることなく、例えば13.7V〜14.0V、及び14.0V〜14.7Vのいずれかの間としてもよい。
奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧とを変えてもよい。
プログラム動作をISPP(Incremental Step Pulse Program)方式としたとき、ステップアップの電圧として、例えば0.5V程度が挙げられる。
非選択のワード線に印加される電圧としては、例えば7.0V〜7.3Vの間としてもよい。この場合に限定されることなく、例えば7.3V〜8.4Vの間としてもよく、7.0V以下としてもよい。
非選択のワード線が奇数番目のワード線であるか、又は偶数番目のワード線であるかによって印加するパス電圧を変えてもよい。
書き込み動作の時間(tProg)としては、例えば1700μs〜1800μs、1800μs〜1900μs、及び1900μs〜2000μsのいずれかの間にしてもよい。
消去動作では、半導体基板上部に形成され、かつ、メモリセルが上方に配置されたウェルに最初に印加する電圧は、例えば12V〜13.7Vの間である。この場合に限定されることなく、例えば13.7V〜14.8V、14.8V〜19.0V, 19.0〜19.8V、及び19.8V〜21Vのいずれかの間であってもよい。
消去動作の時間(tErase)としては、例えば3000μs〜4000μs、4000μs〜5000μs、及び4000μs〜9000μsのいずれかの間にしてもよい。
メモリセルは、半導体基板(シリコン基板)上に膜厚が4〜10nmのトンネル絶縁膜を介して配置された電荷蓄積層を有する。この電荷蓄積層は、膜厚が2〜3nmのSiN、又はSiONなどの絶縁膜と膜厚が3〜8nmのポリシリコンとの積層構造であってもよい。また、ポリシリコンにはRuなどの金属が添加されていてもよい。電荷蓄積層上には、絶縁膜が形成される。この絶縁膜は、例えば、膜厚が3〜10nmの下層High−k膜と膜厚が3〜10nmの上層High−k膜とに挟まれた膜厚が4〜10nmのシリコン酸化膜を有する。High−k膜としては、HfOなどが挙げられる。また、シリコン酸化膜の膜厚は、High−k膜の膜厚よりも厚くしてもよい。絶縁膜上には膜厚が3〜10nmの仕事関数調整用の材料を介して膜厚が30nm〜70nmの制御電極が形成される。ここで、仕事関数調整用の材料は、TaOなどの金属酸化膜、又はTaNなどの金属窒化膜である。制御電極としては、Wなどを用いてもよい。
また、メモリセル間にはエアギャップを形成することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。