(57)【要約】【課題】バッファ容量を削減できるメモリシステムを提供する。【解決手段】一実施形態のメモリシステムは、半導体メモリとコントローラとを備える。半導体メモリは複数の第１ブロックと、第２ブロックと、第１ラッチ回路及び第２ラッチ回路を備えたセンスアンプとを備える。書き込み動作時においてコントローラは、１ページ分の第１データと第１書き込み命令と、１ページ分の第２データと第２書き込み命令と、第３書き込み命令とを発行する。半導体メモリは、第１データを第１ラッチ回路に保持させ、第１ブロックにページ単位で書き込み、第２データを第２ラッチ回路に保持させ、第１ブロックにページ単位で書き込み、第３書き込み命令を受信した際には、第１ラッチ回路に保持された第１データと、第２ラッチ回路に保持された第２データを用いて、少なくとも２ページ分のデータを第２ブロックに書き込む。【選択図】図７
2019057352.tif 000002
【特許請求の範囲】
【請求項１】
データを保持可能な半導体メモリと、
前記半導体メモリにデータを制御するコントローラと
を具備し、前記半導体メモリは、１ビットデータを保持可能なメモリセルを含む複数の第１ブロックと、
２ビット以上のデータを保持可能なメモリセルを含む第２ブロックと、
第１ラッチ回路及び第２ラッチ回路を備えたセンスアンプと
を備え、書き込み動作時において前記コントローラは、１ページ分の第１データと第１書き込み命令と、１ページ分の第２データと第２書き込み命令と、第３書き込み命令とを発行し、
前記半導体メモリは、前記第１データを前記第１ラッチ回路に保持させ、該第１データをいずれかの前記第１ブロックにページ単位で書き込み、前記第２データを前記第２ラッチ回路に保持させ、該第２データをいずれかの前記第１ブロックにページ単位で書き込み、前記第３書き込み命令を受信した際には、前記第１ラッチ回路に保持された前記第１データと、前記第２ラッチ回路に保持された前記第２データを用いて、少なくとも２ページ分のデータを前記第２ブロックに書き込む、メモリシステム。
【請求項２】
前記書き込み動作時において、前記第３書き込み命令を発行した後、前記コントローラは、第１読み出し命令、第２読み出し命令、及び第４書き込み命令を発行し、
前記半導体メモリは、前記第１読み出し命令に応答して、前記第１データを前記いずれかの第１ブロックから前記第１ラッチ回路に読み出し、前記第２読み出し命令に応答して前記第２データを前記いずれかの第１ブロックから前記第２ラッチ回路に読み出し、前記第４書き込み命令に応答して、前記第１ラッチ回路及び前記第２ラッチ回路に読み出された前記第１データ及び前記第２データを用いて、少なくとも２ページ分のデータを前記第２ブロックに書き込む、請求項１記載のメモリシステム。
【請求項３】
前記第４書き込み命令は、前記第３書き込み命令で選択されたワード線を選択し、
前記第４書き込み命令に応答して前記少なくとも２ページ分のデータを書き込む際に用いられるベリファイ電圧は、前記第３書き込み命令に応答して前記少なくとも２ページ分のデータを書き込む際に用いられるベリファイ電圧よりも高い、請求項２記載のメモリシステム。
【請求項４】
前記第１データ及び前記第２データは、前記第２ブロック内のメモリセルに書き込まれる前記２ビット以上のデータの第１のビット及び第２のビットである、請求項１乃至３いずれか１項記載のメモリシステム。
【請求項５】
前記センスアンプは、第３ラッチ回路を更に備え、
前記コントローラから受信された前記第１データは、前記第３ラッチ回路に保持された後、前記第１ラッチ回路に転送され、
前記コントローラから受信された前記第２データは、前記第１データが前記第３ラッチ回路から前記第１ラッチ回路に転送された後、前記第３ラッチ回路に保持され、更に前記第２ラッチ回路に転送される、
請求項１乃至４いずれか１項記載のメモリシステム。
【請求項６】
前記センスアンプは、第３ラッチ回路を更に備え、
前記コントローラから受信された前記第１データは、前記第３ラッチ回路に保持された後、前記第１ラッチ回路に転送され、
前記コントローラから受信された前記第２データは、前記第１データが前記第３ラッチ回路から前記第１ラッチ回路に転送された後、前記第３ラッチ回路に保持され、更に前記第２ラッチ回路に転送され、
前記第１読み出し命令及び前記第２読み出し命令に応答して読み出された前記第１データ及び前記第２データは、前記第３ラッチ回路を介することなく、前記第１ラッチ回路及び前記第２ラッチ回路にそれぞれ保持される、請求項２または３記載のメモリシステム。
【請求項７】
前記第１データ及び前記第２データは、前記第２ブロック内のメモリセルに書き込まれる前記２ビット以上のデータの第１のビット及び第２のビットであり、
前記センスアンプでは、前記第１ラッチ回路が前記第１のビットに予め関連付けられ、前記第２ラッチ回路が前記第２のビットに予め関連付けられる、請求項６記載のメモリシステム。
【請求項８】
前記第１書き込み命令及び／または前記第２書き込み命令に基づく前記いずれかの前記第１ブロックへのデータの書き込みに失敗した場合、前記コントローラは前記第３書き込み命令を発行しない、請求項１乃至７いずれか１項記載のメモリシステム。
【請求項９】
前記コントローラは、前記第３書き込み命令を発行した後、前記半導体メモリにおける書き込み結果を確認するステータスリードコマンドを発行し、
前記第３書き込み命令に基づく前記第２ブロックへのデータの書き込みが失敗していれば、前記第２ブロックにおける異なるアドレスを指定して再度前記第３書き込み命令を発行し、
前記第１書き込み命令及び／または前記第２書き込み命令に基づく前記いずれかの前記第１ブロックへのデータの書き込みに失敗していれば、前記いずれかの前記第１ブロックにおける異なるアドレスを指定して再度前記データ及び前記第１書き込み命令及び／または前記第２書き込み命令を発行する、請求項１乃至７いずれか１項記載のメモリシステム。
【請求項１０】
前記コントローラは、前記第３書き込み命令を発行した後、前記半導体メモリにおける書き込み結果を確認するステータスリードコマンドを発行し、
前記第３書き込み命令に基づく前記第２ブロックへのデータの書き込みが失敗していれば、前記第２ブロックにおける異なるアドレスを指定して再度前記第３書き込み命令を発行し、前記第４書き込み命令の書き込み先アドレスとして前記異なるアドレスを指定し、
前記第１書き込み命令に基づく前記いずれかの前記第１ブロックへのデータの書き込みに失敗していれば、前記いずれかの前記第１ブロックにおける異なるアドレスを指定して再度前記第１データ及び前記第１書き込み命令を発行し、前記第１読み出し命令の読み出しアドレスとして前記異なるアドレスを指定する、請求項２または３記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
メモリセルが三次元に配列された半導体メモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８，２５０，４３７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
バッファ容量を削減できるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
本実施形態のメモリシステムは、データを保持可能な半導体メモリと、半導体メモリにデータを制御するコントローラとを備える。半導体メモリは、１ビットデータを保持可能なメモリセルを含む複数の第１ブロックと、２ビット以上のデータを保持可能なメモリセルを含む第２ブロックと、第１ラッチ回路及び第２ラッチ回路を備えたセンスアンプとを備える。書き込み動作時においてコントローラは、１ページ分の第１データと第１書き込み命令と、１ページ分の第２データと第２書き込み命令と、第３書き込み命令とを発行する。半導体メモリは、第１データを第１ラッチ回路に保持させ、該第１データをいずれかの第１ブロックにページ単位で書き込み、第２データを第２ラッチ回路に保持させ、該第２データをいずれかの第１ブロックにページ単位で書き込み、第３書き込み命令を受信した際には、第１ラッチ回路に保持された第１データと、第２ラッチ回路に保持された第２データを用いて、少なくとも２ページ分のデータを第２ブロックに書き込む。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るメモリシステムのブロック図。
【図２】図２は、第１実施形態に係るブロックの回路図。
【図３】図３は、第１実施形態に係るブロックの断面図。
【図４】図４は、第１実施形態に係るメモリセルアレイ及びカラム制御回路の回路図。
【図５】図５は、第１実施形態に係るメモリセルの閾値分布を示すグラフと、ページと読み出し動作との関係を示す概念図。
【図６】図６は、第１実施形態に係る書き込み動作において、閾値分布の変化を示すグラフ。
【図７】図７は、第１実施形態に係る書き込み動作のフローチャート。
【図８】図８は、第１実施形態に係る書き込み動作時におけるコマンドシーケンス。
【図９】図９は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１０】図１０は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１１】図１１は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１２】図１２は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１３】図１３は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１４】図１４は、第１実施形態に係る書き込み動作時におけるコマンドシーケンスとレディ／ビジー信号とコア動作を示すタイミングチャート。
【図１５】図１５は、第１実施形態に係る書き込み動作のフローチャート。
【図１６】図１６は、第１実施形態に係る書き込み動作時におけるコマンドシーケンス。
【図１７】図１７は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１８】図１８は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図１９】図１９は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図２０】図２０は、第１実施形態に係る書き込み動作時におけるメモリセルアレイ及びカラム制御回路の模式図。
【図２１】図２１は、第１実施形態に係る書き込み動作時におけるコマンドシーケンスとレディ／ビジー信号とコア動作を示すタイミングチャート。
【図２２】図２２は、第２実施形態に係る書き込み動作時におけるコマンドシーケンス。
【図２３】図２３は、第２実施形態に係るステータスリードコマンドで得られる情報を示すダイアグラム。
【図２４】図２４は、第２実施形態に係る書き込み動作時におけるコマンドシーケンス。
【図２５】図２５は、第１及び第２実施形態の変形例に係るメモリセルアレイのブロック図。
【図２６】図２６は、第１及び第２実施形態の変形例に係るメモリセルの閾値分布を示すグラフと、ページと読み出し動作との関係を示す概念図。
【図２７】図２７は、第１及び第２実施形態の変形例に係る書き込み動作のフローチャート。
【図２８】図２８は、第１及び第２実施形態の変形例に係る書き込み動作のフローチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【０００８】
１．第１実施形態  
第１実施形態に係るメモリシステムについて説明する。以下では、半導体記憶装置としてＮＡＮＤ型フラッシュメモリを備えたメモリシステムを例に挙げて説明する。
【０００９】
１．１  構成について  
１．１．１  メモリシステムの全体構成について  
まず、本実施形態に係るメモリシステムの大まかな全体構成について、図１を用いて説明する。
【００１０】
図示するようにメモリシステム１は、ＮＡＮＤ型フラッシュメモリ１００とコントローラ２００とを備えている。ＮＡＮＤ型フラッシュメモリ１００とコントローラ２００とは、例えばそれらの組み合わせにより一つの半導体装置を構成しても良く、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。また、コントローラ２００は例えばＳｏＣ（system on chip）等であっても良い。
【００１１】
ＮＡＮＤ型フラッシュメモリ１００は複数のメモリセルを備え、データを不揮発に記憶する。コントローラ２００は、ＮＡＮＤバスによってＮＡＮＤ型フラッシュメモリ１００に接続され、ホストバスによってホスト機器３００に接続される。そしてコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００を制御し、またホスト機器３００から受信した命令に応答して、ＮＡＮＤ型フラッシュメモリ１００にアクセスする。ホスト機器３００は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばＳＤＴＭインターフェースに従ったバスである。ＮＡＮＤバスは、ＮＡＮＤインターフェースに従った信号の送受信を行う。
【００１２】
１．１．２  コントローラ２００の構成について  
引き続き図１を用いて、コントローラ２００の構成の詳細について説明する。図１に示すようにコントローラ２００は、ホストインターフェース回路２１０、内蔵メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインターフェース回路２５０、及びＥＣＣ（Error Checking and Correcting）回路２６０を備えている。
【００１３】
ホストインターフェース回路２１０は、ホストバスを介してホスト機器３００と接続され、ホスト機器３００から受信した命令及びデータを、それぞれプロセッサ２３０及びバッファメモリ２４０に転送する。またプロセッサ２３０の命令に応答して、バッファメモリ２４０内のデータをホスト機器３００へ転送する。
【００１４】
プロセッサ２３０は、コントローラ２００全体の動作を制御する。例えばプロセッサ２３０は、ホスト機器３００から書き込み命令を受信した際には、それに応答して、ＮＡＮＤインターフェース回路２５０に対して書き込み命令を発行する。読み出し及び消去の際も同様である。またプロセッサ２３０は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ１００を管理するための様々な処理を実行する。なお、以下で説明するコントローラ２００の動作はプロセッサがソフトウェア（ファームウェア）を実行することによって実現されても良いし、またはハードウェアで実現されても良い。
【００１５】
ＮＡＮＤインターフェース回路２５０は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との通信を司る。そしてＮＡＮＤインターフェース回路２５０は、プロセッサ２３０から受信した命令に基づき、種々の信号をＮＡＮＤ型フラッシュメモリ１００へ送信し、またＮＡＮＤ型フラッシュメモリ１００から受信する。
【００１６】
バッファメモリ２４０は、書き込みデータや読み出しデータを一時的に保持する。
【００１７】
内蔵メモリ２２０は、例えばＤＲＡＭやＳＲＡＭ等の半導体メモリであり、プロセッサ２３０の作業領域として使用される。そして内蔵メモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００を管理するためのファームウェアや、各種の管理テーブル等を保持する。
【００１８】
ＥＣＣ回路２６０は、ＮＡＮＤ型フラッシュメモリ１００に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちＥＣＣ回路２６０は、データの書き込み時には誤り訂正符号を生成して、これを書き込みデータに付与し、データの読み出し時にはこれを復号する。
【００１９】
１．１．３  ＮＡＮＤ型フラッシュメモリ１００の構成について  
１．１．３．１  ＮＡＮＤ型フラッシュメモリ１００の全体構成について  
次に、ＮＡＮＤ型フラッシュメモリ１００の構成について説明する。図１に示すようにＮＡＮＤ型フラッシュメモリ１００は、メモリセルアレイ１１０、ロウデコーダ１２０、ドライバ回路１３０、カラム制御回路１４０、アドレスレジスタ１５０、コマンドレジスタ１６０、及びシーケンサ１７０を備える。
【００２０】
メモリセルアレイ１１０は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックＢＬＫを備えている。そしてメモリセルアレイ１１０は、コントローラ２００から与えられたデータを記憶する。
【００２１】
ロウデコーダ１２０は、ブロックＢＬＫのいずれかを選択し、更に選択したブロックＢＬＫにおけるロウ方向を選択する。
【００２２】
ドライバ回路１３０は、選択されたブロックＢＬＫに対して、ロウデコーダ１２０を介して電圧を供給する。
【００２３】
カラム制御回路１４０は、データの読み出し時には、メモリセルアレイ１１０から読み出されたデータをセンスし、必要な演算を行う。そして、このデータＤＡＴをコントローラ２００に出力する。データの書き込み時には、コントローラ２００から受信した書き込みデータＤＡＴを、メモリセルアレイ１１０に転送する。
【００２４】
アドレスレジスタ１５０は、コントローラ２００から受信したアドレスＡＤＤを保持する。コマンドレジスタ１６０は、コントローラ２００から受信したコマンドＣＭＤを保持する。
【００２５】
シーケンサ１７０は、レジスタ１５０及び１６０に保持された種々の情報に基づき、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。
【００２６】
１．１．３．２  ブロックＢＬＫの構成について  
次に、上記ブロックＢＬＫの構成について図２を用いて説明する。図示するように、ブロックＢＬＫは例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含む。また各々のストリングユニットＳＵは、複数のＮＡＮＤストリング１０を含む。
【００２７】
ＮＡＮＤストリング１０の各々は、例えば８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）及び選択トランジスタＳＴ１、ＳＴ２を含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そしてメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。
【００２８】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に接続される。これに対してストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、例えばセレクトゲート線ＳＧＳに共通接続される。もちろん、ストリングユニット毎に異なるセレクトゲート線ＳＧＳ０〜ＳＧＳ３に接続されても良い。また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。
【００２９】
また、メモリセルアレイ１１０内において同一列にあるＮＡＮＤストリング１０の選択トランジスタＳＴ１のドレインは、ビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１）、但し（Ｌ−１）は２以上の自然数）に共通接続される。すなわちビット線ＢＬは、複数のブロックＢＬＫ間でＮＡＮＤストリング１０を共通に接続する。更に、複数の選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。
【００３０】
つまりストリングユニットＳＵは、異なるビット線ＢＬに接続され、且つ同一のセレクトゲート線ＳＧＤに接続されたＮＡＮＤストリング１０を複数含む。またブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵを複数含む。そしてメモリセルアレイ１１０は、ビット線ＢＬを共通にする複数のブロックＢＬＫを含む。
【００３１】
図３は、ブロックＢＬＫの一部領域の断面図である。図示するように、ｐ型ウェル領域２０上に、複数のＮＡＮＤストリング１０が形成されている。すなわち、ウェル領域２０上には、セレクトゲート線ＳＧＳとして機能する例えば４層の配線層２７、ワード線ＷＬ０〜ＷＬ７として機能する８層の配線層２３、及びセレクトゲート線ＳＧＤとして機能する例えば４層の配線層２５が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
【００３２】
そして、これらの配線層２５、２３、２７を貫通してウェル領域２０に達するピラー状の導電体３１が形成されている。導電体３１の側面には、ゲート絶縁膜３０、電荷蓄積層（絶縁膜）２９、及びブロック絶縁膜２８が順次形成され、これらによってメモリセルトランジスタＭＴ、並びに選択トランジスタＳＴ１及びＳＴ２が形成されている。導電体３１は、ＮＡＮＤストリング１０の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体３１の上端は、ビット線ＢＬとして機能する金属配線層３２に接続される。
【００３３】
ウェル領域２０の表面領域内には、ｎ＋型不純物拡散層３３が形成されている。拡散層３３上にはコンタクトプラグ３５が形成され、コンタクトプラグ３５は、ソース線ＳＬとして機能する金属配線層３６に接続される。更に、ウェル領域２０の表面領域内には、ｐ＋型不純物拡散層３４が形成されている。拡散層３４上にはコンタクトプラグ３７が形成され、コンタクトプラグ３７は、ウェル配線ＣＰＷＥＬＬとして機能する金属配線層３８に接続される。ウェル配線ＣＰＷＥＬＬは、ウェル領域２０を介して導電体３１に電位を印加するための配線である。
【００３４】
以上の構成が、図３を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のＮＡＮＤストリング１０の集合によってストリングユニットＳＵが形成される。
【００３５】
本例では、１つのメモリセルトランジスタＭＴが例えば４ビットデータを保持可能である。この４ビットデータを、下位ビットからそれぞれlowerビット、upperビット、higherビット、及びtopビットと呼ぶことにする。そして、同一のストリングユニットＳＵにおいて同一のワード線ＷＬに接続されたメモリセルの保持するlowerビットの集合をlowerページと呼び、upperビットの集合をupperページ、higherビットの集合をhigherページ、及びtopビットの集合をtopページと呼ぶ。つまり、各ストリングユニットＳＵにおける１本のワード線ＷＬには４ページが割り当てられている。すると、各ストリングユニットＳＵには８本のワード線ＷＬが含まれているので、各ストリングユニットＳＵは３２ページ分の容量を有する。そして、１ブロックＢＬＫは４つのストリングユニットＳＵを有するので、１２８ページ分の容量を有することになる。あるいは言い換えるならば、「ページ」とは、同一ワード線に接続されたメモリセルによって形成されるメモリ空間の一部、と定義することも出来る。データの書き込み及び読み出しは、このページ毎に行われる。
【００３６】
なお、データの書き込み動作時において、いずれかのブロックＢＬＫはキャッシュブロックとして使用される。この点についての詳細は後述するが、キャッシュブロックとして使用される場合、メモリセルトランジスタＭＴは４ビットではなく１ビットデータを保持する。つまり、各ストリングユニットＳＵにおける１本のワード線ＷＬには１ページが割り当てられる。従って、各ストリングユニットＳＵは８ページ分の容量を有し、１ブロックＢＬＫは３２ページ分の容量を有することになる。
【００３７】
なおデータの消去は、ブロックＢＬＫ単位、またはブロックＢＬＫよりも小さい単位で行うことが出来る。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という2011年9月18日に出願された米国特許出願13/235,389号に記載されている。また、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE”という2010年1月27日に出願された米国特許出願12/694,690号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という2012年5月30日に出願された米国特許出願13/483,610号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００３８】
更に、メモリセルアレイ１１０の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ１１０の構成については、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００３９】
１．１．３．３  カラム制御回路１４０の構成について  
次に、カラム制御回路１４０の構成について図４を用いて説明する。図４は、本実施形態に係るカラム制御回路１４０とストリングユニットＳＵ０の回路図である。
【００４０】
図示するようにカラム制御回路１４０は、ビット線ＢＬ毎に設けられたセンスユニットＳＡＵ（ＳＡＵ０〜ＳＡＵ（Ｌ−１））を備えている。
【００４１】
センスユニットＳＡＵの各々は、センスアンプＳＡ、演算部ＯＰ、並びにラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬを備えている。
【００４２】
センスアンプＳＡは、対応するビット線ＢＬに読み出されたデータをセンスし、また書き込みデータに応じてビット線ＢＬに電圧を印加する。すなわちセンスアンプＳＡは、ビット線ＢＬを直接的に制御するモジュールである。そしてセンスアンプＳＡには、読み出し時には例えばシーケンサ１７０によってストローブ信号ＳＴＢが与えられる。センスアンプＳＡは、信号ＳＴＢがアサートされるタイミングで読み出しデータを確定させる（本例では、メモリセルがオンした場合にはデータ“０”、オフした場合にはデータ“１”と定義する）。そして、内部に有するラッチ回路（図４には図示せず）にこのデータを保持し、更にラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬのいずれかに転送する。
【００４３】
ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬは、読み出しデータ及び書き込みデータを一時的に保持する。演算部ＯＰは、センスアンプＳＡ、並びにラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬに保持されているデータにつき、否定（ＮＯＴ）演算、論理和（ＯＲ）演算、論理積（ＡＮＤ）演算、排他的論理和（ＸＯＲ）演算、否定排他的論理和（ＸＮＯＲ）演算など、種々の論理演算を行う。
【００４４】
これらのセンスアンプＳＡ、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬ、並びに演算部ＯＰは、互いにデータを送受信可能なようにバスによって接続されている。そしてこのバスは、更にラッチ回路ＸＤＬに接続されている。
【００４５】
カラム制御回路１４０におけるデータの入出力は、ラッチ回路ＸＤＬを介して行われる。すなわち、コントローラ２００から受信したデータは、ラッチ回路ＸＤＬを介して、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬ、またはセンスアンプＳＡに転送される。またラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬ、またはセンスアンプＳＡのデータは、ラッチ回路ＸＤＬを介してコントローラ２００へ送信される。そしてラッチ回路ＸＤＬは、ＮＡＮＤ型フラッシュメモリ１００のキャッシュメモリとして機能する。従って、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬが使用中であったとしても、ラッチ回路ＸＤＬが空いていれば、ＮＡＮＤ型フラッシュメモリ１００はレディ状態となることが出来る。
【００４６】
１．１．３．４  メモリセルトランジスタの保持データと閾値電圧について
次に、メモリセルトランジスタＭＴの保持データ、閾値電圧、及び各データの読み出しレベルにつき、図５を用いて説明する。図５は、各メモリセルトランジスタＭＴの取り得るデータ、閾値分布、及び読み出し時に用いる電圧について示したダイアグラムである。
【００４７】
前述のように、メモリセルトランジスタＭＴは閾値電圧に応じて４ビットのデータを保持出来る。この４ビットで表現されるデータを、閾値電圧の低いものから順に“Ｅｒ”データ、“Ａ”データ、“Ｂ”データ、“Ｃ”データ、…“Ｏ”データと呼ぶことにする。
【００４８】
“Ａ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＡ未満であり、データの消去状態に相当する。“Ｂ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＡ以上であり且つＶＢ（＞ＶＡ）未満である。“Ｂ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＢ以上であり且つＶＣ（＞ＶＢ）未満である。“Ｃ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＣ以上であり且つＶＤ（＞ＶＣ）未満である。“Ｄ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＤ以上であり且つＶＥ（＞ＶＤ）未満である。“Ｅ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＥ以上であり且つＶＦ（＞ＶＥ）未満である。“Ｆ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＦ以上であり且つＶＧ（＞ＶＦ）未満である。“Ｇ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＧ以上であり且つＶＨ（＞ＶＧ）未満である。“Ｈ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＨ以上であり且つＶＩ（＞ＶＨ）未満である。“Ｉ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＩ以上であり且つＶＪ（＞ＶＩ）未満である。“Ｊ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＪ以上であり且つＶＫ（＞ＶＪ）未満である。“Ｋ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＫ以上であり且つＶＬ（＞ＶＫ）未満である。“Ｌ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＬ以上であり且つＶＭ（＞ＶＬ）未満である。“Ｍ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＭ以上であり且つＶＮ（＞ＶＭ）未満である。“Ｎ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＮ以上であり且つＶＯ（＞ＶＮ）未満である。“Ｏ”データを保持するメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＯ以上であり且つＶＲＥＡＤ未満である。そして、４ビットデータのうちで“Ｏ”データが、閾値電圧の最も高いデータに相当する。
【００４９】
上記閾値分布は、前述のLowerビット、Upperビット、Higherビット、及びTopビットからなる４ビット（４ページ）データを書き込むことで実現される。すなわち、上記１０進数で表記した各データと、Lowerビット、Upperビット、Higherビット、及びTopビットとの関係は、次の通りである。
“Ｅｒ”データ：“１１１１”（“Top/Higher/Upper/Lower”の順で表記）
“Ａ”データ：“１１１０”
“Ｂ”データ：“１０１０”
“Ｃ”データ：“１０００”
“Ｄ”データ：“１００１”
“Ｅ”データ：“０００１”
“Ｆ”データ：“００００”
“Ｇ”データ：“００１０”
“Ｈ”データ：“０１１０”
“Ｉ”データ：“０１００”
“Ｊ”データ：“１１００”
“Ｋ”データ：“１１０１”
“Ｌ”データ：“０１０１”
“Ｍ”データ：“０１１１”
“Ｎ”データ：“００１１”
“Ｏ”データ：“１０１１”
このように、隣接する閾値レベルに相当するデータ間では、４ビットのうちの１ビットのみが変化する。
【００５０】
従って、Lowerビットを読み出す際には、Lowerビットの値（“０” or “１”）が変化する境界に相当する電圧を用いれば良く、このことはUpperビット、Higherビット、及びTopビットでも同様である。
【００５１】
すなわち、図５に示すように、Lowerページ読み出しは、“Ｅｒ”データと“Ａ”データとを区別する電圧ＶＡ、“Ｃ”データと“Ｄ”データとを区別する電圧ＶＤ、“Ｅ”データと“Ｆ”データとを区別する電圧ＶＦ、及び“Ｊ”データと“Ｋ”データとを区別する電圧ＶＫを読み出しレベルとして用いれば良い。電圧ＶＡ、ＶＤ、ＶＦ、及びＶＫを用いた読み出し動作を、それぞれ読み出し動作ＡＲ、ＤＲ、ＦＲ、及びＫＲと呼ぶ。
【００５２】
読み出し動作ＡＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＡ未満か否か（つまり保持データが“Ｅｒ”か否か）を判定する処理である。読み出し動作ＤＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＤ未満か否かを判定する処理である。読み出し動作ＦＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＦ未満か否かを判定する処理である。そして読み出し動作ＫＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＫ未満か否かを判定する処理である。
【００５３】
Upperページ読み出しは、“Ｂ”データと“Ｃ”データとを区別する電圧ＶＣ、“Ｆ”データと“Ｇ”データとを区別する電圧ＶＧ、“Ｈ”データと“Ｉ”データとを区別する電圧ＶＩ、及び“Ｌ”データと“Ｍ”データとの間の電圧ＶＭを読み出しレベルとして用いれば良い。電圧ＶＣ、ＶＧ、ＶＩ、及びＶＭを用いた読み出し動作を、それぞれ読み出し動作ＣＲ、ＧＲ、ＩＲ、及びＭＲと呼ぶ。
【００５４】
読み出し動作ＣＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＣ未満か否かを判定する処理である。読み出し動作ＧＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＧ未満か否かを判定する処理である。読み出し動作ＩＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＩ未満か否かを判定する処理である。そして読み出し動作ＭＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＭ未満か否かを判定する処理である。
【００５５】
またHigherページ読み出しは、“Ａ”データと“Ｂ”データとを区別する電圧ＶＢ、“Ｇ”データと“Ｈ”データとを区別する電圧ＶＨ、及び“Ｍ”データと“Ｎ”データとを区別する電圧ＶＮを読み出しレベルとして用いれば良い。電圧ＶＢ、ＶＨ、及びＶＮを用いた読み出し動作を、それぞれ読み出し動作ＢＲ、ＨＲ、及びＮＲと呼ぶ。
【００５６】
読み出し動作ＢＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＢ未満か否かを判定する処理である。読み出し動作ＨＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＨ未満か否かを判定する処理である。読み出し動作ＮＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＮ未満か否かを判定する処理である。
【００５７】
そしてTopページ読み出しは、“Ｄ”データと“Ｅ”データとを区別する電圧ＶＥ、“Ｉ”データと“Ｊ”データとを区別する電圧ＶＪ、“Ｋ”データと“Ｌ”データとを区別する電圧ＶＬ、及び“Ｎ”データと“Ｏ”データとを区別する電圧ＶＯを読み出しレベルとして用いれば良い。電圧ＶＥ、ＶＪ、ＶＬ、及びＶＯを用いた読み出し動作を、それぞれ読み出し動作ＥＲ、ＪＲ、ＬＲ、及びＯＲと呼ぶ。
【００５８】
読み出し動作ＥＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＥ未満か否かを判定する処理である。読み出し動作ＪＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＪ未満か否かを判定する処理である。読み出し動作ＬＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＬ未満か否かを判定する処理である。そして読み出し動作ＯＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＯ未満か否か（つまり保持データが“Ｏ”か否か）を判定する処理である。
【００５９】
１．２  書き込み動作について  
１．２．１  書き込み動作の概要について  
まず、本実施形態に係る書き込み動作の大まかな概要につき、図６を用いて説明する。図６は、ワード線ＷＬｉ及びＷＬ（ｉ＋１）に接続されたメモリセルトランジスタＭＴの閾値分布を示すグラフであり、ワード線ＷＬｉ及びＷＬ（ｉ＋１）にデータを書き込む際に実行される処理ステップにより、ワード線ＷＬｉとＷＬ（ｉ＋１）の閾値がどのように変動するかを順次示している。ｉは０〜６のいずれかの整数である。なお、図６では紙面の都合上、“Ｅｒ”〜“Ｃ”データの閾値分布しか図示していないが、“Ｄ”〜“Ｏ”データについても同様である。
【００６０】
まず、ワード線ＷＬｉ及びＷＬ（ｉ＋１）は第１の状態にあり、共に“Ｅｒ”レベルを保持する。これを第１状態と呼ぶ。第１状態において、まずワード線ＷＬｉが選択されて、データが書き込まれる。この際に使用されるプログラムベリファイレベルは、最終的な目標となるプログラムベリファイレベルＶｆｙＡ、ＶｆｙＢ、ＶｆｙＣ、…ＶｆｙＯよりも低い、ＶｆｙＡ’、ＶｆｙＢ’、ＶｆｙＣ’、…ＶｆｙＯ’である。この結果、“Ａ”レベル、“Ｂ”レベル、“Ｃ”、…“Ｏ”レベルがワード線ＷＬｉに大まかに書き込まれる。この書き込み動作を以下では「foggy書き込み」と呼ぶ。また、書き込みデータはコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に転送される。この書き込みデータの転送からfoggy書き込みまでの一連の動作を、以下では第１書き込み動作と呼ぶ。第１書き込み動作では、後述するが、キャッシュブロックに対しても同じデータが書き込まれる。第１書き込み動作により、ワード線ＷＬｉ及びＷＬ（ｉ＋１）は、図６における第２状態に示す閾値分布を有するようになる。
【００６１】
次に、第２状態において、ワード線ＷＬｉにドレイン側で隣接するワード線ＷＬ（ｉ＋１）に対して同じく第１書き込み動作が行われ、foggy書き込みが実行される。このワード線ＷＬ（ｉ＋１）に対するfoggy書き込みにより、ワード線ＷＬｉはセル間干渉効果を受けて、閾値分布は正電圧側にシフトする。この結果、図６における第３状態に示す閾値分布が得られる。
【００６２】
その後、第３状態において、再びワード線ＷＬｉが選択されて、データが書き込まれる。この際に使用されるベリファイレベルは、最終的な目標となるプログラムベリファイレベルＶｆｙＡ、ＶｆｙＢ、ＶｆｙＣ、…ＶｆｙＯである。この時点で、既に“Ａ”レベル、“Ｂ”レベル、“Ｃ”、…“Ｏ”レベルは大まかに書き込まれているので、第３状態における書き込み動作での閾値電圧のシフト量は僅かである。これを以下では「fine書き込み」と呼ぶ。fine書き込み用のデータは、コントローラ２００から与えられるのではなく、第１書き込み動作においてキャッシュブロックに書き込まれたデータを読み出して利用する。この、キャッシュブロックからの読み出しからfine書き込みまでの一連の動作を、以下では第２書き込み動作と呼ぶ。この結果、第４状態に示す閾値分布が得られる。
【００６３】
次に、第４状態において、ワード線ＷＬ（ｉ＋１）に対して同じく第２書き込み動作が行われ、fine書き込みが実行される。しかし、fine書き込みでの閾値電圧のシフト量は僅かであるので、ワード線ＷＬｉはセル間干渉効果の影響を殆ど受けない。その結果、第５状態に示すように、セル間干渉効果をほぼ無視出来る書き込みが実行出来る。
【００６４】
１．２．２  第１書き込み動作の詳細について  
次に、上記第１書き込み動作の詳細について、図７を用いて説明する。図７は、第１書き込み動作の流れを示すフローチャートである。
【００６５】
第１書き込み動作は、大まかには、コントローラ２００による４ページ分のデータのＮＡＮＤ型フラッシュメモリ１００への転送と、これらのデータのキャッシュブロックへの書き込みと、foggy書き込みの３ステップを含む。
【００６６】
図示するように、まずコントローラ２００はlowerページデータをＮＡＮＤ型フラッシュメモリ１００へ転送する（ステップＳ１０）。受信されたlowerページデータは、カラム制御回路１４０において、まずラッチ回路ＸＤＬに保持され、次に例えばラッチ回路ＡＤＬに転送される（ステップＳ１１）。そしてシーケンサ１７０は、いずれかのブロックＢＬＫをキャッシュブロックとして用い、ＡＤＬ内のlowerページデータをキャッシュブロックに書き込む（ステップＳ１２）。キャッシュブロックへのデータの書き込みは、各メモリセルへの１ビットデータの書き込みであるので、以下では「ＳＬＣ（single level cell）プログラム」と呼ぶことがある。
【００６７】
そして、上記の動作が、upperページ、higherページ、及びtopページにつき繰り返される。この際、キャッシュブロックとして使用されるブロックＢＬＫは、各ページ間で同じであっても良いし異なっていても良い。
【００６８】
すなわち、コントローラ２００はupperページデータをＮＡＮＤ型フラッシュメモリ１００へ転送する（ステップＳ１３）。受信されたlowerページデータは、ラッチ回路ＸＤＬから例えばラッチ回路ＢＤＬに転送される（ステップＳ１４）。ＡＤＬは、引き続きlowerページデータを保持し続けている。そしてシーケンサ１７０は、いずれかのブロックＢＬＫをキャッシュブロックとして用い、ＢＤＬ内のupperページデータをキャッシュブロックにＳＬＣプログラムする（ステップＳ１５）。
【００６９】
次にコントローラ２００は、higherページデータをＮＡＮＤ型フラッシュメモリ１００へ転送する（ステップＳ１６）。受信されたhigherページデータは、ラッチ回路ＸＤＬから例えばラッチ回路ＣＤＬに転送される（ステップＳ１７）。ＡＤＬ及びＢＤＬは、引き続きlowerページデータ及びupperページデータを保持し続けている。そしてシーケンサ１７０は、いずれかのブロックＢＬＫをキャッシュブロックとして用い、ＣＤＬ内のhigherページデータをキャッシュブロックにＳＬＣプログラムする（ステップＳ１８）。
【００７０】
引き続きコントローラ２００は、topページデータをＮＡＮＤ型フラッシュメモリ１００へ転送する（ステップＳ１９）。受信されたtopページデータは、ラッチ回路ＸＤＬから例えばラッチ回路ＤＤＬに転送される（ステップＳ２０）。ＡＤＬ、ＢＤＬ、及びＣＤＬは、引き続きlowerページデータ、upperページデータ、及びhigherページデータを保持し続けている。そしてシーケンサ１７０は、いずれかのブロックＢＬＫをキャッシュブロックとして用い、ＤＤＬ内のtopページデータをキャッシュブロックにＳＬＣプログラムする（ステップＳ２１）。
【００７１】
次にコントローラ２００は、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬに保持されているデータを用いたfoggyプログラム命令を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。この命令に応答してＮＡＮＤ型フラッシュメモリ１００では、いずれかのブロックＢＬＫにfoggy書き込みが実行される（ステップＳ２２）。foggy書き込みは、ＳＬＣ書き込みと異なり、１つのメモリセルに４ビットが書き込まれる。従って、このような書き込みを「ＱＬＣ（quad level cell）プログラム」と呼ぶことがある。また、キャッシュブロックと区別するために、ＱＬＣプログラム対象のブロックＢＬＫを、ＱＬＣブロックと呼ぶことがある。
【００７２】
１．２．３  第１書き込み動作のコマンドシーケンスと具体例について  
次に、上記第１書き込み動作のコマンドシーケンスと具体例について、図８乃至図１３を用いて説明する。図８は第１書き込み動作実行時のコマンドシーケンスを示し、図９乃至図１３は第１書き込み動作実行時におけるラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬ、並びにブロックＢＬＫ０〜ＢＬＫ４を示す。
【００７３】
まず図８に示すように、コントローラ２００は第１シーケンスＳＱ１を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第１シーケンスＳＱ１は、図７で説明したステップＳ１０〜Ｓ１２に対応する。第１シーケンスＳＱ１において、まずprefixコマンド“ＸＸｈ”が発行され、次にコマンド“Ａ２ｈ”が発行される。コマンド“Ａ２ｈ”はＳＬＣプログラムを命令するものである。しかし、後述するアドレスでキャッシュブロックが指定されるので、“Ａ２ｈ”の発行は省略されても良い。次に、コマンド“０１ｈ”が発行される。コマンド“０１ｈ”は、lowerページの指定を意味する。そしてprefixコマンド“ＸＸｈ”は、この“０１ｈ”と共に、lowerページデータのラッチ回路ＡＤＬへの転送を指定し、更にlowerページデータの書き込みの旨を宣言する。引き続き、コントローラ２００はコマンド“８０ｈ”を発行してアドレス入力を宣言し、例えば５サイクルにわたってアドレスＡＤＤ１を送信する。このアドレスＡＤＤ１は、lowerページデータがＳＬＣプログラムされるキャッシュブロックＢＬＫ及びページを指定する。引き続き、コントローラ２００はlowerページデータＤＡＴをＮＡＮＤ型フラッシュメモリ１００へ送信し、最後にコマンド“１５ｈ”を発行する。コマンド“１５ｈ”はキャッシュプログラムコマンドである。
【００７４】
図９は、上記第１シーケンスＳＱ１におけるコマンド“１５ｈ”が発行された際のＮＡＮＤ型フラッシュメモリ１００の動作を示す。本例では、アドレスＡＤＤ１が、ブロックＢＬＫ１のワード線ＷＬ１を指定する場合を例に示している。図示するように、lowerページデータがＸＤＬに格納されることでＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、ＸＤＬ内のデータがＡＤＬに転送されることで、レディ状態に速やかに復帰する。そして、センスアンプＳＡがlowerページデータに応じた電圧をビット線ＢＬに印加し、ロウデコーダ１２０がブロックＢＬＫ１を選択すると共に、ワード線ＷＬ１にプログラム電圧を印加することにより、lowerページデータがキャッシュブロックＢＬＫ１に書き込まれる。当然ながら、この書き込みはＳＬＣプログラムによって行われる。
【００７５】
次に図８に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第２シーケンスＳＱ２を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第２シーケンスＳＱ２は、図７で説明したステップＳ１３〜Ｓ１５に対応する。第２シーケンスＳＱ２が第１シーケンスＳＱ１と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０２ｈ”が発行され、upperページが指定される。  
・“ＸＸｈ”は“０２ｈ”と共に、upperページデータのＢＤＬへの転送を指定し、更にupperページデータの書き込みの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ２が発行され、upperページデータがＳＬＣプログラムされるキャッシュブロックＢＬＫ及びページが指定される。
・データＤＡＴはupperページデータ。
【００７６】
図１０は、上記第２シーケンスＳＱ２に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。本例では、アドレスＡＤＤ２が、ブロックＢＬＫ２のワード線ＷＬ１を指定する場合を例に示している。図示するように、upperページデータがＸＤＬに格納されることでＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、ＸＤＬ内のデータがＢＤＬに転送されることで、レディ状態に速やかに復帰する。そして、upperページデータがキャッシュブロックＢＬＫ２に書き込まれる（ＳＬＣプログラム）。
【００７７】
次に図８に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第３シーケンスＳＱ３を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第３シーケンスＳＱ３は、図７で説明したステップＳ１６〜Ｓ１８に対応する。第３シーケンスＳＱ３が第１シーケンスＳＱ１と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０３ｈ”が発行され、higherページが指定される。  
・“ＸＸｈ”は“０３ｈ”と共に、higherページデータのＣＤＬへの転送を指定し、更にhigherページデータの書き込みの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ３が発行され、higherページデータがＳＬＣプログラムされるキャッシュブロックＢＬＫ及びページが指定される。
・データＤＡＴはhigherページデータ。
【００７８】
図１１は、上記第３シーケンスＳＱ３に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。本例では、アドレスＡＤＤ３が、ブロックＢＬＫ３のワード線ＷＬ１を指定する場合を例に示している。図示するように、higherページデータがＸＤＬに格納されることでＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、ＸＤＬ内のデータがＣＤＬに転送されることで、レディ状態に速やかに復帰する。そして、higherページデータがキャッシュブロックＢＬＫ３に書き込まれる（ＳＬＣプログラム）。
【００７９】
次に図８に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第４シーケンスＳＱ４を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第４シーケンスＳＱ４は、図７で説明したステップＳ１９〜Ｓ２１に対応する。第４シーケンスＳＱ４が第１シーケンスＳＱ１と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０４ｈ”が発行され、topページが指定される。  
・“ＸＸｈ”は“０４ｈ”と共に、topページデータのＤＤＬへの転送を指定し、更にtopページデータの書き込みの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ４が発行され、topページデータがＳＬＣプログラムされるキャッシュブロックＢＬＫ及びページが指定される。
・データＤＡＴはtopページデータ。
【００８０】
図１２は、上記第４シーケンスＳＱ４に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。本例では、アドレスＡＤＤ４が、ブロックＢＬＫ４のワード線ＷＬ１を指定する場合を例に示している。図示するように、topページデータがＸＤＬに格納されることでＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、ＸＤＬ内のデータがＤＤＬに転送されることで、レディ状態に速やかに復帰する。そして、topページデータがキャッシュブロックＢＬＫ４に書き込まれる（ＳＬＣプログラム）。この時点で、ＱＬＣプログラムに必要なデータがＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬに準備される。
【００８１】
次に図８に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第５シーケンスＳＱ５を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第５シーケンスＳＱ５は、図７で説明したステップＳ２２に対応する。第５シーケンスＳＱ５において、まずコマンド“０Ｄｈ”が発行される。コマンド“０Ｄｈ”はfoggy書き込みを指定する。引き続き、コントローラ２００はコマンド“８５ｈ”を発行してアドレス入力を宣言し、例えば５サイクルにわたってアドレスＡＤＤ５を送信する。このアドレスＡＤＤ５はＱＬＣプログラムされるブロックＢＬＫ及びページを指定する。そして最後にコマンド“１０ｈ”を発行する。なお、第５シーケンスＳＱ５には書き込みデータが含まれない。なぜなら、書き込むべきデータは既にカラム制御回路１４０に保持されているからである。
【００８２】
図１３は、上記第５シーケンスＳＱ５に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。本例では、アドレスＡＤＤ５が、ＱＬＣブロックＢＬＫ０のワード線ＷＬ１を指定する場合を例に示している。図示するように、コマンド“１０ｈ”を受信することで、ＮＡＮＤ型フラッシュメモリ１００はビジー状態となる。そしてセンスアンプＳＡは、ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬ内の４ページ分のデータに応じて電圧をビット線ＢＬに印加し、ロウデコーダ１２０がブロックＢＬＫ０を選択すると共に、ワード線ＷＬ１にプログラム電圧を印加することにより、４ページ分のデータがＱＬＣブロックＢＬＫ０に書き込まれる。当然ながら、この書き込みはＱＬＣプログラムによって行われる。また、本書き込みはfoggy書き込みであるので、図６で説明したように、プログラムベリファイレベルとして、ＶｆｙＡ’、ＶｆｙＢ’、ＶｆｙＣ’、…ＶｆｙＯ’が用いられる。
【００８３】
図１４は、第１書き込み動作の一連の流れにおけるコマンドシーケンス、レディ／ビジー信号、及びコア動作を示すタイミングチャートである。図示するように、第１乃至第５コマンドシーケンスＳＱ１〜ＳＱ５が順次発行される。これらが発行される度にＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、前述のとおり、データはＸＤＬから他のラッチ回路に転送されるので、速やかにレディ状態に復帰する。すると、例えばコマンドシーケンスＳＱ１を受信することによりコア動作としてはlowerページプログラムが実行されている期間であっても、ＮＡＮＤ型フラッシュメモリ１００はすぐにレディ状態となるので、コントローラ２００は次のコマンドシーケンスＳＱ２を送信する。このように、コア動作においてプログラムが実行中であっても、ＮＡＮＤ型フラッシュメモリ１００はコマンドシーケンスＳＱ１〜ＳＱ５を連続して受信する。そして、コマンドシーケンスＳＱ５を受信した後は、図１３で説明したＱＬＣプログラムが完了するまでビジー状態を継続する。
【００８４】
１．２．４  第２書き込み動作の詳細について  
次に、上記第２書き込み動作の詳細について、図１５を用いて説明する。図１５は、第２書き込み動作の流れを示すフローチャートである。
【００８５】
第２書き込み動作は、大まかには、第１書き込み動作でキャッシュブロックに書き込まれたデータのカラム制御回路１４０内への読み出しと、読み出されたデータを用いたfine書き込みの２ステップを含む。
【００８６】
図示するように、コントローラ２００の命令に従ってシーケンサ１７０は、キャッシュブロックからlowerページデータを読み出す（ステップＳ３０）。読み出されたlowerページデータは、カラム制御回路１４０において、ラッチ回路ＸＤＬを介することなく例えばラッチ回路ＡＤＬに転送される（ステップＳ３１）。
【００８７】
そして、上記の動作が、upperページ、higherページ、及びtopページにつき繰り返される。すなわち、シーケンサ１７０はupperページデータをキャッシュブロックから読み出し（ステップＳ３２）、ラッチ回路ＸＤＬを介することなく例えばラッチ回路ＢＤＬに転送する（ステップＳ３３）。ＡＤＬは、引き続きlowerページデータを保持し続けている。
【００８８】
引き続きシーケンサ１７０は、higherページデータをキャッシュブロックから読み出し（ステップＳ３４）、ラッチ回路ＸＤＬを介することなく例えばラッチ回路ＣＤＬに転送する（ステップＳ３５）。ＡＤＬ及びＢＤＬは、引き続きlowerページデータ及びupperページデータを保持し続けている。
【００８９】
更にシーケンサ１７０は、topページデータをキャッシュブロックから読み出し（ステップＳ３６）、ラッチ回路ＸＤＬを介することなく例えばラッチ回路ＤＤＬに転送する（ステップＳ３７）。ＡＤＬ、ＢＤＬ、及びＣＤＬは、引き続きlowerページデータ、upperページデータ、及びhigherページデータを保持し続けている。
【００９０】
その後、シーケンサ１７０は、コントローラ２００の命令に応じて、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬに読み出されたデータを用いて、ＱＬＣブロックＢＬＫにfine書き込みを実行する（ステップＳ３８）。
【００９１】
１．２．５  第２書き込み動作のコマンドシーケンスと具体例について  
次に、上記第２書き込み動作のコマンドシーケンスと具体例について、図１６乃至図２０を用いて説明する。図１６は第２書き込み動作実行時のコマンドシーケンスを示し、図１７乃至図２０は第２書き込み動作実行時におけるラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＤＤＬ、及びＸＤＬ、並びにブロックＢＬＫ０〜ＢＬＫ４を示す。また、図１６乃至図２０は、第１書き込み動作で説明した図８乃至図１３に引き続くものとして説明される。
【００９２】
まず図１６に示すように、コントローラ２００は第６シーケンスＳＱ６を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第６シーケンスＳＱ６は、図１５で説明したステップＳ３０〜Ｓ３１に対応する。第６シーケンスＳＱ６において、まずprefixコマンド“ＹＹｈ”が発行され、次にコマンド“Ａ２ｈ”が発行される。第１書き込み動作時と同様、“Ａ２ｈ”の発行は省略されても良い。次に、コマンド“０１ｈ”が発行される。コマンド“０１ｈ”は、lowerページの指定を意味する。そしてprefixコマンド“ＹＹｈ”は、この“０１ｈ”と共に、lowerページデータのラッチ回路ＡＤＬへの転送を指定し、更にlowerページデータの読み出しの旨を宣言する。引き続き、コントローラ２００はコマンド“００ｈ”を発行してアドレス入力を宣言し、例えば５サイクルにわたってアドレスＡＤＤ１を送信する。このアドレスＡＤＤ１は、読み出すべきlowerページデータが保持されているキャッシュブロックＢＬＫ及びページを指定する。言い換えれば、第１書き込み動作時においてlowerページデータの書き込みに指定したアドレスである。最後にコントローラ２００はコマンド“３１ｈ”を発行する。コマンド“３１ｈ”はキャッシュリードコマンドである。
【００９３】
図１７は、上記第６シーケンスＳＱ６におけるコマンド“３１ｈ”が発行された際のＮＡＮＤ型フラッシュメモリ１００の動作を示す。図示するように、ロウデコーダ１２０がブロックＢＬＫ１を選択すると共に、ワード線ＷＬ１に読み出し電圧を印加することにより、lowerページデータがセンスアンプＳＡに読み出される。そして読み出されたlowerページデータは、センスアンプＳＡからラッチ回路ＡＤＬに転送される。なお、ブロックＢＬＫ１はキャッシュブロックであるから、読み出し動作はデータが“０”であるか“１”であるかの判断である。よって、このような読み出し動作を「ＳＬＣリード」と呼ぶことがある。本読み出し動作はＸＤＬを使用しないため、コマンド“３１ｈ”を受信してビジー状態となったＮＡＮＤ型フラッシュメモリ１００は、速やかにレディ状態に復帰する。
【００９４】
次に図１６に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第７シーケンスＳＱ７を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第７シーケンスＳＱ７は、図１５で説明したステップＳ３２〜Ｓ３３に対応する。第７シーケンスＳＱ７が第６シーケンスＳＱ６と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０２ｈ”が発行され、upperページが指定される。  
・“ＹＹｈ”は“０２ｈ”と共に、upperページデータのＢＤＬへの転送を指定し、更にupperページデータの読み出しの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ２が発行され、upperページデータが読み出されるキャッシュブロックＢＬＫ及びページが指定される。
【００９５】
図１８は、上記第７シーケンスＳＱ７に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。図示するように、ロウデコーダ１２０がブロックＢＬＫ２を選択すると共に、ワード線ＷＬ１に読み出し電圧を印加することにより、upperページデータがセンスアンプＳＡに読み出される。そして読み出されたupperページデータは、センスアンプＳＡからラッチ回路ＢＤＬに転送される。
【００９６】
次に図１６に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第８シーケンスＳＱ８を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第８シーケンスＳＱ８は、図１５で説明したステップＳ３４〜Ｓ３５に対応する。第８シーケンスＳＱ８が第６シーケンスＳＱ６と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０３ｈ”が発行され、higherページが指定される。  
・“ＹＹｈ”は“０３ｈ”と共に、higherページデータのＣＤＬへの転送を指定し、更にhigherページデータの読み出しの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ３が発行され、higherページデータが読み出されるキャッシュブロックＢＬＫ及びページが指定される。
【００９７】
図１９は、上記第８シーケンスＳＱ８に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。図示するように、ロウデコーダ１２０がブロックＢＬＫ３を選択すると共に、ワード線ＷＬ１に読み出し電圧を印加することにより、higherページデータがセンスアンプＳＡに読み出される。そして読み出されたhigherページデータは、センスアンプＳＡからラッチ回路ＣＤＬに転送される。
【００９８】
次に図１６に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第９シーケンスＳＱ９を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第９シーケンスＳＱ９は、図１５で説明したステップＳ３６〜Ｓ３７に対応する。第９シーケンスＳＱ９が第６シーケンスＳＱ６と異なる点は、以下の点である。すなわち、
・“０１ｈ”の代わりに“０４ｈ”が発行され、topページが指定される。  
・“ＹＹｈ”は“０４ｈ”と共に、topページデータのＤＤＬへの転送を指定し、更にtopページデータの読み出しの旨を宣言する。
・ＡＤＤ１の代わりにＡＤＤ４が発行され、topページデータが読み出されるキャッシュブロックＢＬＫ及びページが指定される。
【００９９】
図２０は、上記第９シーケンスＳＱ９に対応したＮＡＮＤ型フラッシュメモリ１００の動作を示す。図示するように、ロウデコーダ１２０がブロックＢＬＫ４を選択すると共に、ワード線ＷＬ１に読み出し電圧を印加することにより、topページデータがセンスアンプＳＡに読み出される。そして読み出されたtopページデータは、センスアンプＳＡからラッチ回路ＤＤＬに転送される。
【０１００】
次に図１６に示すように、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００は第１０シーケンスＳＱ１０を発行し、ＮＡＮＤ型フラッシュメモリ１００へ転送する。第１０シーケンスＳＱ１０は、図１５で説明したステップＳ３８に対応する。第１０シーケンスＳＱ１０において、コントローラ２００はまずコマンド“８５ｈ”を発行してアドレス入力を宣言し、例えば５サイクルにわたってアドレスＡＤＤ５を送信する。このアドレスＡＤＤ５はＱＬＣプログラムされるブロックＢＬＫ及びページを指定する。そして最後にコマンド“１０ｈ”を発行する。なお、第１０シーケンスＳＱ１０には書き込みデータが含まれない。なぜなら、書き込むべきデータは既にキャッシュブロックからカラム制御回路１４０に転送済みだからである。本動作の様子は、第１書き込み動作で説明した図１３と同様である。図１３と異なる点は、本書き込みはfine書き込みであるので、図６で説明したように、プログラムベリファイレベルとして、ＶｆｙＡ、ＶｆｙＢ、ＶｆｙＣ、…ＶｆｙＯが用いられる点と、ＸＤＬが使用されない点である。
【０１０１】
図２１は、第２書き込み動作の一連の流れにおけるコマンドシーケンス、レディ／ビジー信号、及びコア動作を示すタイミングチャートである。図示するように、第６乃至第１０コマンドシーケンスＳＱ６〜ＳＱ１０が順次発行される。これらが発行される度にＮＡＮＤ型フラッシュメモリ１００はビジー状態になるが、前述のとおり、読み出されたデータはＸＤＬを使用しないので、速やかにレディ状態に復帰する。すると、例えばコマンドシーケンスＳＱ６を受信することによりコア動作としてはlowerページ読み出しが実行されている期間であっても、ＮＡＮＤ型フラッシュメモリ１００はすぐにレディ状態となるので、コントローラ２００は次のコマンドシーケンスＳＱ７を発行する。このように、コア動作において読み出しが実行中であっても、ＮＡＮＤ型フラッシュメモリ１００はコマンドシーケンスＳＱ６〜ＳＱ１０を連続して受信する。そして、コマンドシーケンスＳＱ１０を受信した後は、ステップＳ３８のＱＬＣプログラムが完了するまでビジー状態を継続する。
【０１０２】
１．３  本実施形態に係る効果  
本実施形態によれば、コントローラのバッファ容量を削減できる。本効果につき、以下説明する。
【０１０３】
図６で説明した書き込み方法であると、ワード線ＷＬｉに対するfine書き込みは、ワード線ＷＬ（ｉ＋１）に対するfoggy書き込みが完了した後に行われる。すなわち、ワード線ＷＬ（ｉ＋１）に対するfoggy書き込みの期間も、ホスト機器３００から受信したワード線ＷＬｉへの書き込みデータを保持しておく必要がある。
【０１０４】
この点、本実施形態であると、foggy書き込みの際に、書き込みデータをキャッシュブロックにもＳＬＣプログラムしている。そしてfine書き込みの際には、キャッシュブロックにＳＬＣプログラムされたデータを読み出し、これを書き込みデータとして利用する。従って、ワード線ＷＬ（ｉ＋１）に対するfoggy書き込みの期間、コントローラ２００はワード線ＷＬｉへの書き込みデータを保持しておく必要がない。そのため、コントローラ２００のバッファメモリ（例えばメモリ２４０）の容量を削減できる。
【０１０５】
特に、本実施形態で説明したように１ワード線ＷＬあたり４ページが割り当てられる場合や、マルチプレーン動作するメモリシステムの場合には、fine書き込みのために保持しておくべきデータサイズは非常に大きい。よって、このような場合に顕著な効果が得られる。
【０１０６】
また、foggy書き込みやfine書き込みの時点では、既に４ページ分のデータは既にキャッシュブロックに書き込まれている。従って、これらの期間にＮＡＮＤ型フラッシュメモリ１００の電源が遮断された場合であっても、ＮＡＮＤ型フラッシュメモリ１００は再度、コントローラ２００からデータを受信する必要はない。すなわち、コントローラ２００は、書き込みデータのキャッシュブロックへの書き込みが完了した時点で、書き込みデータをバッファメモリから破棄できる。そして、突然の電源遮断が発生した場合であっても、コントローラ２００及びＮＡＮＤ型フラッシュメモリ１００から書き込みデータが失われることを防止できる。
【０１０７】
２．第２実施形態  
次に、第２実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１実施形態で説明した書き込み動作において、ステータスリードコマンドを用いて書き込みのパス／フェイルを判断するものである。以下では、第１実施形態と異なる点についてのみ説明する。
【０１０８】
２．１  ステータスリードコマンドについて  
ステータスリードコマンドは、上記第１実施形態で説明した第１書き込み動作及び第２書き込み動作の各々につき発行される。
【０１０９】
２．１．１  第１書き込み動作について  
まず、第１書き込み動作について説明する。図２２は、本実施形態に係る第１書き込み動作のコマンドシーケンスと、レディ／ビジー状態とを示すタイミングチャートであり、第１実施形態で説明した図１４に対応する。
【０１１０】
図示するように本例であると、第１書き込み動作においてfoggy書き込みが終了し、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００はステータスリードコマンド“７Ｘｈ”を発行し、これをＮＡＮＤ型フラッシュメモリ１００へ送信する。
【０１１１】
コマンド“７Ｘｈ”がコマンドレジスタ１６０に格納されると、コントローラ２００は、第１書き込み動作に関する情報を８ビットデータとしてコントローラ２００へ出力する。この８ビットデータの内容を図２３に示す。図２３に示すように、８ビットデータは下記の情報をコントローラ２００に提供する。  
・ＩＯ０（最下位ビット）：直近Ｎ回目（Ｎは自然数）の多値レベルの書き込み（本例の場合にはＱＬＣプログラム）がパスしたか否かを示し、パスした場合には“０”、フェイルした場合には“１”  
・ＩＯ１：直近（Ｎ−１）回目のＳＬＣプログラム（本例であるとtopページデータ）がパスしたか否かを示し、パスした場合には“０”、フェイルした場合には“１”  
・ＩＯ２：直近（Ｎ−２）回目のＳＬＣプログラム（本例であるとhigherページデータ）がパスしたか否かを示し、パスした場合には“０”、フェイルした場合には“１”  
・ＩＯ３：直近（Ｎ−３）回目のＳＬＣプログラム（本例であるとupperページデータ）がパスしたか否かを示し、パスした場合には“０”、フェイルした場合には“１”  
・ＩＯ４：直近（Ｎ−４）回目のＳＬＣプログラム（本例であるとlowerページデータ）がパスしたか否かを示し、パスした場合には“０”、フェイルした場合には“１”  
・ＩＯ５：True Busy情報（＝レディ：“１”）  
・ＩＯ６：Cache Busy情報（＝レディ：“１”）  
・ＩＯ７：Write Protect情報（＝no write protect：“１”）。
【０１１２】
本例の場合、ＱＬＣプログラムとＳＬＣプログラムについての情報が得られれば良い。すなわち、８ビットデータのうちの下位２ビットに着目すれば良い。従って、ＮＡＮＤ型フラッシュメモリ１００からコントローラ２００に送信される情報の一例としては、下記のケースが考えられる。  
・ケース１：“Ｅ０”＝１１１０＿００００  
“Ｅ０”は、ＱＬＣプログラムとＳＬＣプログラムの両方がパスしたことを意味する。よってコントローラ２００は、ワード線ＷＬ（ｉ＋１）への第１書き込み動作に進めば良い。
【０１１３】
・ケース２：“Ｅ１”＝１１１０＿０００１  
“Ｅ１”は、ＳＬＣプログラムにはパスしたが、ＱＬＣプログラムにフェイルしたことを意味する。従ってコントローラ２００は、図８で説明した第５シーケンスＳＱ５を再度発行し、ステップＳ２２のＱＬＣプログラムをやり直す。この際、書き込み先となるアドレスが変更される。変更後の書き込み先は、同じブロックＢＬＫ内の異なるワード線ＷＬであっても良いし、異なるブロックＢＬＫ内のワード線ＷＬであっても良い。
【０１１４】
・ケース３：“Ｅ２”＝１１１０＿００１０  
“Ｅ２”は、ＱＬＣプログラムにはパスしたが、ＳＬＣプログラムにフェイルしたことを意味する。従ってコントローラ２００は、図８で説明した第４シーケンスＳＱ４を再度発行し、ステップＳ１９〜Ｓ２１のtopページデータのＳＬＣプログラムをやり直す。この際も、書き込み先となるアドレスが変更される。変更後の書き込み先は、同じキャッシュブロックＢＬＫ内の異なるワード線ＷＬであっても良いし、異なるキャッシュブロックＢＬＫ内のワード線ＷＬであっても良い。また“Ｅ２”の場合には、topデータの書き込み先が変更されたことをコントローラ２００が把握し、第２書き込み動作における第９シーケンスＳＱ９で発行するアドレスに変更内容を反映させる。
【０１１５】
本ケースは、“Ｅ２”に限らず、lowerページのＳＬＣプログラムにフェイルした場合には“１１１１＿００００”となり、lowerページとupperページのＳＬＣプログラムにフェイルした場合には“１１１１＿１０００”となる。
【０１１６】
・ケース４：“Ｅ３”＝１１１０＿００１１  
“Ｅ３”は、ＱＬＣプログラムとＳＬＣプログラムの両方にフェイルしたことを意味する。従ってコントローラ２００は、図８で説明した第４シーケンスＳＱ４を再度発行し、topページデータのＳＬＣプログラムをやり直す。これは上記“Ｅ２”の場合と同様である。更にコントローラ２００は、図８で説明した第５シーケンスＳＱ５を再度発行し、ステップＳ２２のＱＬＣプログラムをやり直す。これは上記“Ｅ１”の場合と同様である。
【０１１７】
本ケースも、“Ｅ３”に限らず、lowerページのＳＬＣプログラムとＱＬＣプログラムとにフェイルした場合には“１１１１＿０００１”となり、lowerページとupperページのＳＬＣプログラムとＱＬＣプログラムとにフェイルした場合には“１１１１＿１００１”となる。
【０１１８】
２．１．２  第２書き込み動作について  
次に第２書き込み動作について説明する。図２４は、本実施形態に係る第２書き込み動作のコマンドシーケンスと、レディ／ビジー状態とを示すタイミングチャートであり、第１実施形態で説明した図２１に対応する。
【０１１９】
図示するように本例であると、第２書き込み動作においてfine書き込みが終了し、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、コントローラ２００はステータスリードコマンド“７Ｘｈ”を発行し、これをＮＡＮＤ型フラッシュメモリ１００へ送信する。
【０１２０】
コマンド“７Ｘｈ”がコマンドレジスタ１６０に格納されると、コントローラ２００は、第２書き込み動作に関する情報を８ビットデータとしてコントローラ２００へ出力する。この８ビットデータの内容は図２３で説明した通りである。
【０１２１】
第２書き込み動作では、ＱＬＣプログラムについての情報が得られれば良い。従って、図２３に示す８ビットデータのうちの最下位ビット（ＩＯ０）に着目すれば良い。すなわち、最下位ビットが“１”の場合には、コントローラ２００は、図１６で説明した第１０シーケンスＳＱ１０を再発行し、異なるアドレス（別のブロックでも異なるブロックでも良い）に再度、fine書き込みを実行する。
【０１２２】
２．２  本実施形態に係る効果  
本実施形態によれば、ＱＬＣプログラム及び直近のＳＬＣプログラムのパス／フェイルを確認でき、データの書き込み信頼性を向上できる。
【０１２３】
なお、図２２の例において、第１乃至第４シーケンスＳＱ１〜ＳＱ４の後にもステータスコマンド“７Ｘｈ”を発行しても良い。これによれば、topページ以外のページプログラムに関するパス／フェイル情報も得られる。この場合、いずれかのシーケンスにつきＳＬＣプログラムがフェイルとなった場合、第５シーケンスＳＱ５の発行をとり止め、フェイルとなったページプログラムからシーケンスからやり直せば良い。
【０１２４】
７．変形例など  
以上のように、上記実施形態に係るメモリシステムは、データを保持可能な半導体メモリと、半導体メモリにデータを制御するコントローラとを具備する。半導体メモリは、１ビットデータを保持可能なメモリセルを含む複数の第１ブロック(SLC block)と、２ビット以上のデータを保持可能なメモリセルを含む第２ブロック(QLC block)と、第１ラッチ回路(ADL)及び第２ラッチ回路(BDL)を備えたセンスアンプ(140)とを備える。書き込み動作時においてコントローラは、１ページ分の第１データと第１書き込み命令(SQ1 in 図8)と、１ページ分の第２データと第２書き込み命令(SQ2 in 図8)と、第３書き込み命令(SQ5 in 図8)とを発行する。半導体メモリは、第１データを第１ラッチ回路に保持させ、該第１データをいずれかの第１ブロックにページ単位で書き込み(SLC program in 図9)、第２データを第２ラッチ回路に保持させ、該第２データをいずれかの第１ブロックにページ単位で書き込み(SLC program in 図10)、第３書き込み命令を受信した際には、第１ラッチ回路に保持された第１データと、第２ラッチ回路に保持された第２データを用いて、少なくとも２ページ分のデータを前記第２ブロックに書き込む(QLC foggy program in 図12)。
【０１２５】
更に、書き込み動作時においてコントローラは、前記第３書き込み命令(SQ5)を発行した後、第１読み出し命令(SQ6 in 図16)、第２読み出し命令(SQ7 in 図16)、及び第４書き込み命令(SQ10 in 図16)を発行する。半導体メモリは、第１読み出し命令に応答して、第１データをいずれかの第１ブロックから第１ラッチ回路に読み出し(SLC read in 図17)、第２読み出し命令に応答して第２データをいずれかの第１ブロックから第２ラッチ回路に読み出し(SLC read in 図18)、第４書き込み命令に応答して、第１ラッチ回路及び第２ラッチ回路に読み出された第１データ及び第２データを用いて、少なくとも２ページ分のデータを第２ブロックに書き込む(QLC fine program)。
【０１２６】
本構成によれば、ブロックのいずれかをキャッシュとして利用することで、コントローラのバッファメモリ容量を削減できる。
【０１２７】
なお、上記説明した実施形態は一例に過ぎず、種々の変形が可能である。例えば、上記実施形態では、lowerページデータ、upperページデータ、higherページデータ、及びtopページデータが、それぞれ異なるキャッシュブロックＢＬＫ１〜ＢＬＫ４に書き込まれる場合を例に説明した。しかし、このような場合に限らず、全てのページデータが同一のキャッシュブロックＢＬＫに書き込まれても良いし、いずれか２ページまたは３ページが同じキャッシュブロックＢＬＫに書き込まれ、残りが別のキャッシュブロックＢＬＫに書き込まれる場合であっても良い。
【０１２８】
また、例えばキャッシュブロックＢＬＫのストリングユニットＳＵが、予め各ページに割り当てられている場合であっても良い。このような場合を図２５に示す。本例であると、キャッシュブロックＢＬＫ１のストリングユニットＳＵ０〜ＳＵ３は、ＱＬＣブロックＢＬＫ０のストリングユニットＳＵ０に対応する。より具体的には、キャッシュブロックＢＬＫ１のストリングユニットＳＵ０〜ＳＵ３のワード線ＷＬ１に割り当てられた４ページが、ＱＬＣブロックＢＬＫ０のストリングユニットＳＵ０のワード線ＷＬ０に対応付けられる。言い換えれば、ブロックＢＬＫ０のストリングユニットＳＵ０のワード線ＷＬ１に４ビットデータを書き込む際には、キャッシュブロックとしてブロックＢＬＫ１が選択され、lowerページデータ、upperページデータ、higherページデータ、及びtopページデータはキャッシュブロックＢＬＫ１のストリングユニットＳＵ０〜ＳＵ３のワード線ＷＬ１にそれぞれＳＬＣプログラムされる。
【０１２９】
更に図２５の例であると、キャッシュブロックＢＬＫ２のストリングユニットＳＵ０〜ＳＵ３は、ＱＬＣブロックＢＬＫ０のストリングユニットＳＵ１に対応する。より具体的には、キャッシュブロックＢＬＫ２のストリングユニットＳＵ０〜ＳＵ３のワード線ＷＬ１に割り当てられた４ページが、ＱＬＣブロックＢＬＫ０のストリングユニットＳＵ１のワード線ＷＬ１に対応付けられる。このような関連付けを持たせることで、コントローラ２００は、ＱＬＣブロックとキャッシュブロックとの対応を容易に管理できる。
【０１３０】
また、lowerページデータ、upperページデータ、higherページデータ、及びtopページデータと、カラム制御回路１４０内のラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＤＤＬとの関係も、予めＮＡＮＤ型フラッシュメモリ１００において対応付けられていてもよい。もちろん、対応付けの方法は、上記実施形態の場合に限られるものではない。
【０１３１】
更に、上記実施形態では各メモリセルトランジスタＭＴが４ビットデータを保持する場合を例に説明した。しかし、３ビット以下のデータを保持する場合であっても良いし、５ビット以上のデータを保持する場合であっても良い。また、キャッシュブロックに対してはＳＬＣプログラムを行う場合を例に説明したが、例えば２ビットデータを書き込んでも良く、本来、データを書き込むべきブロック（例えばＱＬＣブロック：４ビット）よりもビット数が少なければ効果が得られる。
【０１３２】
メモリセルトランジスタＭＴが３ビットデータを保持する場合につき、以下、簡単に説明する。図２６は、メモリセルトランジスタＭＴの保持データ、閾値電圧、及び各データの読み出しレベルを示す。図示するように、メモリセルトランジスタＭＴは、閾値電圧の低いものから順に、“Ｅｒ”データ、“Ａ”データ、“Ｂ”データ、“Ｃ”データ、“Ｄ”データ、“Ｅ”データ、“Ｆ”データ、及び“Ｇ”データを保持する。そして、Lowerページは読み出し動作ＡＲ及びＥＲによって判定され、middleページは読み出し動作ＢＲ、ＤＲ、及びＦＲによって判定され、upperページは読み出し動作ＣＲ及びＧＲによって判定される。
【０１３３】
図２７及び図２８は、本例に係る第１書き込み動作及び第２書き込み動作のフローチャートである。第１書き込み動作において、第１実施形態で説明した図７と異なる点は、コントローラ２００から受信してキャッシュブロックＢＬＫにＳＬＣプログラムすべきページ数が４ページではなく３ページ（lower/middle/upperページ）であることと、foggy書き込みにおいて、３つのラッチ回路（図２７の例であるとＡＤＬ、ＢＤＬ、及びＣＤＬ）に保持される３ページ分のデータを用いてＴＬＣ（triple level cell）プログラムされること、である。
【０１３４】
また第２書き込み動作において、第１実施形態で説明した図１５と異なる点は、キャッシュブロックＢＬＫから読み出すべきページ数が４ページではなく３ページ（lower/middle/upperページ）であることと、fine書き込みにおいて、３つのラッチ回路（図２７の例であるとＡＤＬ、ＢＤＬ、及びＣＤＬ）に保持される３ページ分のデータを用いてＴＬＣ（triple level cell）プログラムされること、である。
【０１３５】
なお、本発明に関する各実施形態において、  
（１）例えばメモリセルが２ビットデータ（”Ｅｒ”、”Ａ”、”Ｂ”、及び”Ｃ”）を保持する場合、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.65V〜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.6V, 3.6V〜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.6Vいずれかの間としてもよい。  
奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧を変えてもよい。  
プログラム動作をＩＳＰＰ方式（Incremental Step Pulse Program）としたとき、ステップアップの電圧として、例えば0.5V程度が挙げられる。  
非選択のワード線に印加される電圧としては、例えば6.0V〜7.3Vの間としてもよい。この場合に限定されることなく、例えば7.3V〜8.4Vの間としてもよく、6.0V以下としてもよい。  
非選択のワード線が奇数番目のワード線であるか、偶数番目のワード線であるかで、印加するパス電圧を変えてもよい。  
書き込み動作の時間（tProg）としては、例えば1700μs〜1800μs, 1800μs〜1900μs, 1900μs〜2000μsの間にしてもよい。  
（３）消去動作では、  
半導体基板上部に形成され、かつ、上記メモリセルが上方に配置されたウェルに最初に印加する電圧は、例えば12V〜13.6Vの間である。この場合に限定されることなく、例えば13.6V〜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の間にしてもよい。  
（４）メモリセルの構造は、  
半導体基板（シリコン基板）上に膜厚が４〜１０ｎｍのトンネル絶縁膜を介して配置された電荷蓄積層を有している。この電荷蓄積層は膜厚が２〜３ｎｍのＳｉＮ、またはＳｉＯＮなどの絶縁膜と膜厚が３〜８ｎｍのポリシリコンとの積層構造にすることができる。また、ポリシリコンにはＲｕなどの金属が添加されていても良い。電荷蓄積層の上には絶縁膜を有している。この絶縁膜は、例えば、膜厚が３〜１０ｎｍの下層Ｈｉｇｈ−ｋ膜と膜厚が３〜１０ｎｍの上層Ｈｉｇｈ−ｋ膜に挟まれた膜厚が４〜１０ｎｍのシリコン酸化膜を有している。Ｈｉｇｈ−ｋ膜はＨｆＯなどが挙げられる。また、シリコン酸化膜の膜厚はＨｉｇｈ−ｋ膜の膜厚よりも厚くすることができる。絶縁膜上には膜厚が３〜１０ｎｍの仕事関数調整用の材料を介して膜厚が３０ｎｍ〜７０ｎｍの制御電極が形成されている。ここで仕事関数調整用の材料はＴａＯなどの金属酸化膜、ＴａＮなどの金属窒化膜である。制御電極にはＷなどを用いることができる。  
また、メモリセル間にはエアギャップを形成することができる。
【０１３６】
更に、上記実施形態では半導体記憶装置としてＮＡＮＤ型フラッシュメモリを例に説明したが、ＮＡＮＤ型フラッシュメモリに限らず、その他の半導体メモリ全般に適用出来、更には半導体メモリ以外の種々の記憶装置に適用出来る。また、上記実施形態で説明したフローチャートは、その処理の順番を可能な限り入れ替えることが出来る。
【０１３７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１３８】
１…メモリシステム、１００…ＮＡＮＤ型フラッシュメモリ、１１０…メモリセルアレイ、１２０…ロウデコーダ、１３０…ドライバ回路、１４０…カラム制御回路、１５０、１６０…レジスタ、１７０…シーケンサ、２００…コントローラ、２１０、２５０…インターフェース回路、２２０、２４０…メモリ、２３０…プロセッサ、２６０…ＥＣＣ回路、３００…ホスト機器
【図１】
2019057352.tif 000003
【図２】
2019057352.tif 000004
【図３】
2019057352.tif 000005
【図４】
2019057352.tif 000006
【図５】
2019057352.tif 000007
【図６】
2019057352.tif 000008
【図７】
2019057352.tif 000009
【図８】
2019057352.tif 000010
【図９】
2019057352.tif 000011
【図１０】
2019057352.tif 000012
【図１１】
2019057352.tif 000013
【図１２】
2019057352.tif 000014
【図１３】
2019057352.tif 000015
【図１４】
2019057352.tif 000016
【図１５】
2019057352.tif 000017
【図１６】
2019057352.tif 000018
【図１７】
2019057352.tif 000019
【図１８】
2019057352.tif 000020
【図１９】
2019057352.tif 000021
【図２０】
2019057352.tif 000022
【図２１】
2019057352.tif 000023
【図２２】
2019057352.tif 000024
【図２３】
2019057352.tif 000025
【図２４】
2019057352.tif 000026
【図２５】
2019057352.tif 000027
【図２６】
2019057352.tif 000028
【図２７】
2019057352.tif 000029
【図２８】
2019057352.tif 000030