【実施例】
【0018】
図1に、本発明の実施例に係るモノリシックスタックのフラッシュメモリデバイスの概略構成を示す。フラッシュメモリデバイス100は、マスタ側のメモリチップ200(マスタチップ)と、少なくとも1つのスレーブ側のメモリチップ300(スレーブチップ)とを含む。本例では、1つのスレーブチップ300を例示しているが、フラッシュメモリデバイス100は、2つ以上のスレーブチップを含むものであってもよい。フラッシュメモリデバイス100は、例えば、BGAまたはCSPパッケージから構成される。例えば、BGAパッケージは、スタックされたマスタチップとスレーブチップがフレキシブル回路基板上にフリップチップ実装され、あるいはワイヤボンディングにより回路基板に接続される。
【0019】
マスタチップ200は、複数のNANDストリングユニットを含むメモリセルアレイ210、メモリセルアレイの行や列の選択を行うデコーダやページバッファ/センス回路等を含む周辺回路220、マスタチップ200の全体の動作を制御するコントローラ230、外部端子を介してホストコンピュータ10との間で信号等の送受の外部インターフェースを構成する入出力回路240を含む。スレーブチップ300は、マスタチップ200と同一の構成を有し、すなわち、複数のNANDストリングユニットを含むメモリセルアレイアレイ310、メモリセルアレイの行や列の選択を行うデコーダやページバッファ/センス回路等を含む周辺回路320、スレーブチップ300の全体の動作を制御するコントローラ330、外部端子を介してホストコンピュータ10との間で信号等の送受の外部インターフェースを構成する入出力回路340を含む。なお、フラッシュメモリデバイス100の外部端子は、マスタチップ200とスレーブチップ300とに共通であることができる。
【0020】
マスタチップ200の入出力回路240およびスレーブチップ300の入出力回路340は、例えば、データ入出力用の外部端子、制御信号(アドレスラッチイネーブル、コマンドラッチイネーブル等)を入力するための外部端子、ビジー信号/レディ信号を出力する外部端子、クロック信号を入力するための端子などを含むことができる。但し、SPI機能を搭載したフラッシュメモリデバイスは、NOR型フラッシュメモリとの互換性で動作するため、データを入力する入力端子、データを出力する出力端子、クロックを入力するクロック端子、チップセレクト端子、ライトプロテクト端子等を含むものであってもよく、必ずしも、ビジー信号やレディ信号を出力する端子は備えていない点に留意すべきである。
【0021】
マスタチップ200およびスレーブチップ300は、入出力回路240および340を介してホストコンピュータ10に接続され、ホストコンピュータ10は、フラッシュメモリデバイス100に対して読出し、プログラム、消去、ステータスレジスタの内容を読み出すリードコマンド、ステータスレジスタへの書き込みを行うライトコマンド、ステータスレジスタやワンタイムプログラム領域をロックするためのWPコマンド等を与える。マスタチップ200およびスレーブチップ300は、ホストコンピュータ10から入出力回路240および340を介して入力されるアドレスを監視し、自身が選択されたか否かを判定する。マスタチップ200またはスレーブチップ300は、自身が選択されたとき、ホストコンピュータ10から与えられた指示を実行する。但し、ステータスレジスタの書込みを行うライトコマンドを受け取った場合には、マスタチップ200およびスレーブチップ300は、それぞれライトコマンドを実行し、それぞれのステータスレジスタに同じ内容を書込み、さらにWPコマンドを受け取った場合にも、マスタチップ200およびスレーブチップ300は、それぞれWPコマンドを実行し、ステータスレジスタ/ワンタイムプログラム領域のロック動作を行う。また、ステータスレジスタのリードコマンドを受け取った場合には、選択されたメモリチップがステータスレジスタの内容を読み出し、これを出力する。
【0022】
図2は、本実施例のマスタチップの内部構成を示す図である。マスタチップ200は、複数のメモリセルアレイが行列状に配列されたメモリセルアレイ210と、周辺回路220と、コントローラ230と、入出力回路240とを含む。なお、スレーブチップ300は、マスタチップ200と同一の構成を有するため、ここでは、マスタチップ200の内部構成のみを説明する。
【0023】
周辺回路220は、入出力回路240を介してアドレスデータを受け取るアドレスレジスタ221と、アドレスレジスタ221からの行アドレス情報Axに基づきブロックの選択およびワード線の選択等を行うワード線選択回路222と、ワード線選択回路222によって選択されたページから読み出されたデータを保持したり、選択されたページにプログラムすべき入力データを保持するページバッファ/センス回路223と、アドレスレジスタ221からの列アドレス情報Ayに基づきページバッファ/センス回路223内の列アドレスのデータを選択する列選択回路224と、フラッシュメモリの動作や仕様等についてユーザーにより設定されたプロテクト情報やフラッシュメモリがビジー状態にあるか否かの情報などを格納するステータスレジスタ225と、データの読出し、プログラムおよび消去等のために必要な種々の電圧(書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど)を生成する内部電圧発生回路226とを含む。コントローラ230は、入出力回路240からコマンド等を受け取り、マスタチップ200の動作を制御する。
【0024】
メモリセルアレイ210は、列方向にm個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。1つのメモリブロックには、複数のメモリセルアレイを直列に接続したNANDストリングユニットが複数形成される。メモリセルアレイはさらに、ユーザーによってアクセスすることができない冗長領域やワンタイムプログラム領域を含む。
【0025】
メモリセルアレイ210の読出し動作では、ビット線に正の電圧を印加し、選択ワード線に例えば0Vを印加し、非選択ワード線にパス電圧を印加し、共通ソース線に0Vを印加する。プログラム動作では、選択ワード線に高電圧のプログラム電圧Vpgmを印加し、非選択のワード線に中間電位を印加し、「0」または「1」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に0Vを印加し、Pウエルに高電圧を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【0026】
ホストコンピュータ10は、フラッシュメモリデバイス100に所望の動作を実行させるとき、フラッシュメモリデバイス100にコマンドやアドレス等を出力する。コントローラ230/330は、ホストコンピュータ10からのアドレスに基づき自身が選択されたか否かを判定し、自身が選択されたと判定すると、ホストコンピュータ10からのコマンドを実行する。但し、ホストコンピュータ10からのコマンドがステータスレジスタへの書き込みを行うライトコマンド、あるいはステータスレジスタのWPコマンドの場合は例外であり、コントローラ230/330は、これらのコマンドを受け取った場合には、アドレスに無関係に、それぞれのチップでライトコマンドやWPコマンドを実行する。
ステータレジスタのリードコマンドの場合は、選択されたメモリチップがステータスレジスタの内容を出力する。
【0027】
図3に、ステータスレジスタに関するコマンドの動作フローを示す。コントローラ230/330は、ホストコンピュータ10からコマンドを受け取ると(S100)、当該コマンドがステータスレジスタに関するライトコマンドまたはWPコマンドに該当するか否かを判定する(S110)。ステータスレジスタに関するコマンドであれば、選択されたメモリチップおよび非選択のメモリチップのそれぞれにおいてステータスレジスタに関するコマンドを実行し(S120)、それ以外のコマンドであれば、選択されたメモリチップがコマンドを実行する(S130)。
【0028】
次に、WPコマンドを実行するときの動作フローを
図4に示す。WPコマンドが受け取られると(S200)、コントローラ230/330は、WPコマンドを実行し、ステータスレジスタ/ワンタイムプログラム領域をロックするためのロック情報をフューズレジスタに設定する(S210)。例えば、ステータスレジスタ/ワンタイムプログラム領域にそれぞれアサインされたフューズレジスタのビットに「1」が設定される。フューズレジスタにロック情報として「1」に設定されると、それ以降のライトコマンドによるステータスレジスタやワンタイムプログラム領域へのアクセスが禁止される。
【0029】
また、コントローラ230/330は、WPコマンドを実行する場合にはさらに、ステータスレジスタに書込まれたプロテクト情報とフューズレジスタに設定したロック情報とをメモリアレイの予め決められた冗長領域にプログラムする(S220)。この動作は、メモリセルアレイの選択ページへの通常のプログラムである。ステータスレジスタやフューズレジスタは揮発性であり、フラシュメモリが電源オフされたとき、これらのレジスタに格納されたデータは消去される。フラッシュメモリの電源が再投入されたとき、コントローラ230/330は、メモリセルアレイの冗長領域からプロテクト情報およびロック情報を読出し、読み出したプロテクト情報およびロック情報をステータスレジスタおよびフューズレジスタにロードする。
【0030】
次に、本発明の第1の実施例によるWPコマンドを実行するときのプロテクト情報およびロック情報のプログラム制御について説明する。なお、便宜上、選択されたメモリチップをマスタチップ、非選択のメモリチップをスレーブチップとする。
【0031】
第1の実施例では、マスタチップおよびスレーブチップにおいてWPコマンドを実行するとき、マスタチップのビジー期間がスレーブチップのビジー期間よりも長くなることを保証する。具体的には、マスタチップでプロテクト情報およびロック情報をプログラムするときのプログラム時間Tmが、スレーブチップでプロテクト情報およびロック情報をプログラムするときのプログラム時間Tsよりも長くなるように(Tm>Ts)、コントローラ230/330は、プログラム動作を制御する。
【0032】
プログラムは、通常、ISPPによりプログラムパルスを印加し、プログラムベリファイの合否に応じて次のプログラムパルスを印加するが、本実施例では、マスタチップに印加するプログラムパルス数Nmを固定にし、スレーブチップに印加するプログラムパルス数Nsを固定にし、プログラムパルス数Nm>プログラムパルス数Nsに設定する。また、プロテクト情報およびロック情報をプログラムするビットのベリファイを常に不合格にする。また、プロテクト情報およびロック情報が、1回のプログラムパルスまたはNm/Nsよりも少ないプログラムパルスの回数でプログラムされるように、プログラム電圧および/パルス印加時間を調整し、ベリファイを不合格にする一方で、次にプログラムパルスが印加するときに、選択ビット線にはプログラム禁止となるデータ「1」をセットするようにしてもよい。こうして、マスタチップのプログラムは、プログラムパルス数Nmで強制的に終了し、スレーブチップのプログラムは、プログラムパルス数Nsで強制的に終了するようにする。これらのプログラムパルス回数Nm、Nsやベリファイの動作に関する制御情報は、トリミング情報として予めメモリセルアレイの冗長領域に設定したり、あるいはユーザーによって適宜設定変更できるようにしてもよい。コントローラ230/330は、WPコマンドを実行するとき、当該制御情報に基づきプログラムを制御する。
【0033】
こうして、マスタチップおよびスレーブチップが同時にWPコマンドを実行した場合、マスタチップのプログラム時間が常にスレーブチップのプログラム時間よりも長くなるようにプログラムが制御され、あるいは、スレーブチップのプログラム時間が常にマスタチップのプログラム時間よりも短くなるようにプログラムが制御される。その結果、ホストコンピュータからのリードコマンドに応答してマスタチップがステータスレジスタの内容を出力するとき、スレーブチップがビジー状態であるにもかかわらず、ビジー状態でない(レディ状態)という不具合を防止することができる。言い換えれば、マスタチップがレディ状態を出力するときは常にスレーブチップはレディ状態にある。
【0034】
図5に、第1の実施例によるプログラム動作のフローを示す。ホストコンピュータ10からWPコマンドが発せられたとき(S300)、自身が選択されているメモリチップであるか否かを判定し(S310)、自身が選択されている場合には、コントローラ230/330は、プロテクト情報およびロック情報を、メモリセルアレイの冗長領域にプログラムパルス回数Nmでプログラムし(S320)、非選択であれば、プロテクト情報およびロック情報を、メモリセルアレイの冗長領域にプログラムパルス回数Nsでプログラムする(S330)。
【0035】
図6に、本実施例によるマスタチップおよびスレーブチップのビジー状態の遷移を示す。時刻t1において、WPコマンドが入力されると、マスタチップおよびスレーブチップは、WPコマンドを実行し、マスタチップおよびスレーブチップはビジー状態になる。そして、スレーブチップは、時刻t2においてロック情報およびプロテクト情報のプログラムを終了し、ビジー状態が終了する。マスタチップは、時刻t2から遅延した時刻t3において、ロック情報およびプロテクト情報のプログラムを終了し、ビジー状態が終了する。こうして、スレーブチップのビジー状態は、必ずマスタチップのビジー状態よりも前に終了する。
【0036】
SPI機能を搭載したフラッシュメモリでは、ビジー信号/レディ信号を出力するための外部端子は必須ではなく、ステータスレジスタを読み出すことでビジー状態か否かが監視される。但し、フラッシュメモリがビジー信号/レディ信号を出力する外部端子を備えている場合には、外部端子を介してビジー信号がホストコンピュータに出力される。
【0037】
次に、本発明の第2の実施例について説明する。第1の実施例では、マスタチップおよびスレーブチップが同時にWPコマンドを実行するため、プロテクト情報およびロック情報をプログラムするときの消費電流が2倍になってしまう。第2の実施例は、2倍の消費電流を回避するため、マスタチップおよびスレーブチップが同時にプログラムを実行しないようにするため、プログラムの待ち時間を導入する。
【0038】
各メモリチップには、内部カウンタが用意され、一方のメモリチップは、他方のメモリチップのプログラム動作が終了する時間まで、カウンタにより待ち時間をカウントし、他方のメモリチップのプログラム動作が終了した後に、プログラム動作を開始する。また、他方のメモリチップがプログラム動作を行っている期間、一方のメモリチップは、カウンタにより待ち時間をカウントし、ビジー状態を継続する。
【0039】
ここでは、マスタチップが先にプログラム動作を行うものとする。
1.マスタチップは、WPコマンドを受け取ると、即座にプログラム動作を開始する。他方、スレーブチップは、マスタチップがレディ状態になるまでプログラムの開始を待つ。スレーブチップの待ち時間tWAITが、マスタチップのプログラム時間tPGMよりも大きくなるように、スレーブチップのカウンタ値がセットされる(tWAIT>tPGM)。
2.マスタチップがプログラムを終了したとき、スレーブチップは、プログラムを開始する。マスタチップは、スレーブチップのプログラム動作中は、ビジー状態を継続する。マスタチップの待ち時間tWAITがスレーブチップのプログラム時間tPGMよりも大きくなるように、マスタチップのカウンタ値がセットされる(tWAIT>tPGM)。
【0040】
図7に、本実施例によるマスタチップおよびスレーブチップのビジー状態の遷移を示す。時刻t1において、ホストコンピュータからWPコマンドが入力されると、マスタチップがWPコマンドを実行し、すなわち、プロテクト情報およびロック情報をメモリセルアレイの冗長領域にプログラムする。マスタチップによるプログラムパルス数Nm1は、予め決めらえた数に固定され、マスタチップは、第1の実施例のときと同様に、プログラムパルス数Nm1を印加したときに強制的にプログラムを終了する。それ故、マスタチップにおけるプログラム時間tPGMは一定である。
【0041】
他方、スレーブチップは、時刻t1でWPコマンドを実行せず、アイドル状態で待ち時間状態となる。この待ち時間tWAITは、マスタチップのプログラム時間tPGMよりも幾分だけ長く設定される。
【0042】
マスタチップは、時刻t2で、プログラム動作を終了するが、そのとき、スレーブチップは、未だ待ち時間中である。マスタチップは、プログラム動作を終了するや否や、カウンタに設定された時間の間、待ち時間状態に入り、その間、ビジー状態を継続する。
【0043】
時刻t2から一定時間経過後の時刻t3で、スレーブチップは、待ち時間を終了するや否や、プログラムを開始する。スレーブチップによるプログラムパルス数Ns1は、予め決めらえた数に固定され、スレーブチップは、第1の実施例のときと同様に、プログラムパルス数Ns1を印加したときに強制的にプログラムを終了する。それ故、スレーブチップにおけるプログラム時間tPGMは一定である。また、マスタチップの待ち時間tWAITは、スレーブチップのプログラム時間tPGMよりも長くなるように設定される。
【0044】
時刻t4で、スレーブチップは、プログラムを終了し、時刻t4から一定時間経過後の時刻t5で、マスタチップの待ち時間が終了し、マスタチップのビジー状態が終了する。こうして、スレーブチップのビジーは、必ずマスタチップのビジーの終了前に終了することになり、マスタチップのビジー終了時にスレーブチップのビジー終了していないという事態を防止することができる。
【0045】
また、プログラム動作の許容時間tALOWが決められている場合、マスタチップのプログラム時間tPGMとスレーブチップのプログラム時間tPGMとの合計が、tALOW以下となるように、プログラム時間tPGMが設定される。例えば、許容時間tALLOWが700μs、1回のプログラムパルスの印加時間が50μsであるとき、マスタチップのプログラム終了時刻t2とスレーブチップのプログラム開始時刻t3の不連続時間を考慮し、マスタチップのプログラムパルス数Nm1を6回以下(tPGM=300μs)、スレーブチップのプログラムパルス数Ns1を6回以下(tPGM=300μs)に設定される。
【0046】
次に、本発明の第3の実施例について説明する。ホストコンピュータ10からステータススレジスタのリードコマンドが発せられたとき、マスタチップ、すなわち選択されたメモリチップのステータスレジスタの内容がホストコンピュータへ出力される。そこで、第3の実施例では、WPコマンドが発せられたとき、先にスレーブチップにWPコマンドを実行させ、その後、マスタチップにWPコマンドを実行させる。
【0047】
図8に、第3の実施例によるマスタチップとスレーブチップのビジー状態の遷移を示す。時刻t1において、ホストコンピュータからWPコマンドが入力されると、スレーブチップがWPコマンドを実行し、すなわち、プロテクト情報およびロック情報をメモリセルアレイの冗長領域にプログラムする。スレーブチップによるプログラムパルス数Ns2は、予め決めらえた数に固定され、スレーブチップは、第1の実施例のときと同様に、プログラムパルス数Ns2を印加したときに強制的にプログラムを終了する。それ故、スレーブチップにおけるプログラム時間tPGMは一定である。他方、マスタチップは、時刻t1でWPコマンドを実行せず、カウンタに設定されたカウント値により待ち時間の状態となる。マスタチップの待ち時間tWAITは、スレーブチップのプログラム時間tPGMよりも幾分大きく設定される。
【0048】
時刻t2で、スレーブチップは、プログラム動作を終了する。その後、時刻t3で、マスタチップは、待ち時間を終了するや否やプログラムを開始し、時刻t4でプログラムを終了する。ここで留意すべきは、プログラムパルス数は固定ではなく、ベリファイも強制的に不合格にせず、通常のプログラムのときと同様に行われる。つまり、プロテクト情報およびロック情報のベリファイが合格した時点でプログラムは終了する。これにより、WPコマンドの実行に要する時間を、第2の実施例のときよりも短くすることが可能である。さらに第3の実施例では、マスタチップのみが待ち時間を実施するため、スレーブチップには内部カウンタは不要である。
【0049】
上記実施例では、マスタチップおよびスレーブチップがともにNAND型フラッシュメモリを例示したが、本発明は、NOR型のマスタチップおよびスレーブチップにも適用可能である。
【0050】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。