"ロウ及びカラムに沿って配列され、複数のしきい値にそれぞれ対応する2値以上のデータを記憶する複数のメモリセルを含むメモリセルアレイと、前記メモリセルアレイのロウを制御するロウ制御回路と、前記メモリセルアレイのカラムを制御するカラム制御回路と、前記カラム制御回路内に設けられ、外部データ及びベリファイの結果を一時的に保持するラッチ回路と、前記カラム制御回路内に設けられ、書き込み対象のメモリセルの個数及び前記ベリファイをパスしたメモリセルの個数を検知するビットスキャン回路と、前記カラム制御回路内に設けられ、前記ビットスキャン回路の検知結果に基づいて演算処理を実行する演算ユニットと、選択ワード線に接続されたメモリセルに前記外部データを書き込むように、前記ロウ及びカラム制御回路の動作を制御し、下位データの書き込み中に上位データの書き込みのための書き込み電圧を計算する第1モードと、設定情報に基づいて書き込み電圧が設定される第2モードとによって、前記外部データの書き込みを制御する制御回路と、を具備し、前記下位データの書き込みを開始する前に、前記ビットスキャン回路は、前記書き込み対象のメモリセルの個数を検知し、前記演算ユニットは、前記書き込み対象のメモリセルの個数と所定の判定値とを比較し、この比較結果に基づいて、前記第1モードで書き込みを実行するか前記第2モードで書き込みを実行するかを判定する、ことを特徴とする不揮発性半導体メモリ。前記書き込み対象のメモリセルの個数が前記所定の判定値以上である場合、前記第1モードが選択され、前記書き込み対象のメモリセルの個数が前記所定の判定値より小さい場合、前記第2モードが選択されることを特徴とする請求項1に記載の不揮発性半導体メモリ。前記ビットスキャン回路は、前記書き込み対象のメモリセルのうち所定の個数のメモリセルをスキャンすることを特徴とする請求項1又は2に記載の不揮発性半導体メモリ。前記ベリファイをパスしたメモリセルの個数が前記判定値以上となった場合、前記制御回路は、前記第2モードで前記下位データの書き込みを実行することを特徴とする請求項1乃至3のうちいずれか1項に記載の不揮発性半導体メモリ。前記スキャン結果において前記ベリファイをパスしたメモリセルの個数が前記判定値以上であった場合、前記ベリファイの前に前記選択ワード線に印加された書き込み電圧が記憶されることを特徴とする請求項1乃至4のうちいずれか1項に記載の不揮発性半導体メモリ。データ書き込み時の時間の増大を抑制する技術を提案する。本実施形態の不揮発性半導体メモリは、ロウ及びカラムに沿って配列され、複数のしきい値にそれぞれ対応する2値以上のデータを記憶する複数のメモリセルを含むメモリセルアレイと、前記メモリセルアレイのロウを制御するロウ制御回路と、前記メモリセルアレイのカラムを制御するカラム制御回路と、前記カラム制御回路内に設けられ、外部データ及びベリファイの結果を一時的に保持するラッチ回路と、前記カラム制御回路内に設けられ、書き込み対象のメモリセルの個数及び前記ベリファイをパスしたメモリセルの個数を検知するビットスキャン回路と、前記カラム制御回路内に設けられ、前記ビットスキャン回路の検知結果に基づいて演算処理を実行する演算ユニットと、選択ワード線に接続されたメモリセルに前記外部データを書き込むように、前記ロウ及びカラム制御回路の動作を制御し、下位データの書き込み中に上位データの書き込みのための書き込み電圧を計算する第1モードと、設定情報に基づいて書き込み電圧が設定される第2モードとによって、前記外部データの書き込みを制御する制御回路と、を具備し、前記下位データの書き込みを開始する前に、前記ビットスキャン回路は、前記書き込み対象のメモリセルの個数を検知し、前記演算ユニットは、前記書き込み対象のメモリセルの個数と所定の判定値とを比較し、この比較結果に基づいて、前記第1モードで書き込みを実行するか前記第2モードで書き込みを実行するかを判定する。[実施形態]以下、図1乃至図9を参照しながら、本実施形態に係る不揮発性半導体メモリについて詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複する説明は必要に応じて行う。1構成図1乃至図7を用いて、本実施形態の不揮発性半導体メモリの構成及び機能について、説明する。図1は、本実施形態の不揮発性半導体メモリの構成の主要部を示すブロック図である。以下では、不揮発性半導体メモリとして、フラッシュメモリを例示して説明する。メモリセルアレイ1は、複数のメモリセルを有している。複数のメモリセルによって、複数のメモリセルユニットMUが形成される。図2を用いて、図1のメモリセルアレイ1の内部構成について説明する。図1に示されるフラッシュメモリが、例えば、NAND型フラッシュメモリである場合、メモリセルアレイ1は、複数のブロックBLKを有する。このブロックBLKとは、消去の最小単位を示している。図2は、1つのブロックBLKの回路構成を示す等価回路図である。1つのブロックBLKは、x方向第1の方向に並んだ複数のメモリセルユニットMUから構成される。1つのブロックBLK内に、例えば、q個のメモリセルユニットMUが設けられている。1つのメモリセルユニットMUは、複数例えば、p個のメモリセルMC1~MCpから形成されるメモリセルストリングと、メモリセルストリングの一端に接続された第1の選択トランジスタSTS以下、ソース側選択トランジスタとよぶと、メモリセルストリングの他端に接続された第2の選択トランジスタSTD以下、ドレイン側選択トランジスタとよぶとを含んでいる。メモリセルストリングにおいて、メモリセルMC1~MCpの電流経路が、y方向第2の方向に沿って直列接続されている。メモリセルユニットMUの一端ソース側、より具体的には、ソース側選択トランジスタSTSの電流経路の一端には、ソース線SLが接続される。また、メモリセルユニットMUの他端ドレイン側、すなわち、ドレイン側選択トランジスタSTDの電流経路の一端にはビット線BLが接続されている。尚、1つのメモリセルユニットMUを構成するメモリセルの個数は、2個以上であればよく、例えば、16個、32個あるいは64個以上でもよい。以下では、メモリセルMC1~MCpを区別しない場合には、メモリセルMCと表記する。メモリセルMCは、電荷蓄積層例えば、浮遊ゲート電極、又は、トラップ準位を含む絶縁膜を有するスタックゲート構造の電界効果トランジスタである。y方向に隣接する2つのメモリセルはソース/ドレインが接続されている。これによって、メモリセルMCの電流経路が直列接続され、メモリセルストリングが形成される。ソース側選択トランジスタSTSのドレインは、メモリセルMC1のソースに接続される。ソース側選択トランジスタSTSのソース/ドレインの他方は、ソース線SLに接続される。ドレイン側選択トランジスタのソースは、メモリセルMCpのドレインに接続されている。ドレイン側選択トランジスタSTDのドレインは、ビット線BL1~BLqに接続されている。ビット線BL1~BLqの本数は、ブロックBLK内のメモリセルユニットMUの個数と同じである。ワード線WL1~WLpはx方向に延在し、各ワード線WL1~WLpはx方向に沿って配列された複数のメモリセルMCのゲートに共通に接続される。1つのメモリセルユニットMUにおいて、ワード線の本数は、1つのメモリセルストリングを構成するメモリセルの個数p個と、同じになる。ドレイン側セレクトゲート線SGDLはx方向に延び、x方向に沿って配列された複数のドレイン側選択トランジスタSTDのゲートに共通に接続される。ソース側セレクトゲート線SGSLはx方向に延び、x方向に沿って配列された複数のソース側選択トランジスタSTSのゲートに共通に接続される。以下では、各ビット線BL1~BLqを区別しない場合には、ビット線BLと表記し、各ワード線WL1~WLpを区別しない場合には、ワード線WLと表記する。図3は、メモリセルに書き込まれるデータとメモリセルのしきい値電圧との対応関係の一例を示している。図3は、メモリセルMCのしきい値電圧を示すグラフであり、縦軸にしきい値電圧しきい値レベル、しきい値電位ともよぶVthを示し、横軸にメモリセルの存在確率を示している。図3に示されるように、例えば、4値のフラッシュメモリにおいて、各々のメモリセルMCは4値のデータを保持できる。より具体的には、メモリセルMCは、しきい値電圧Vthの低い順にEErレベル、Aレベル、Bレベル、及びCレベルの4種2ビットのデータを保持できる。E、A、B、及びCレベルは、2進数表示でそれぞれ11、01、00、及び10データに、それぞれ対応づけられる。この2ビットのデータの各ビットを、図3に示されるように、上位upperビットまたは上位データ及び下位lowerビットまたは下位データとよぶ。尚、E~Cレベルと00~11データとの関係は、図3の場合に限られるものでは無く、適宜選択できる。EEraseレベルは消去レベルであり、そのしきい値電圧VthEはVthE<ARである。Aレベルのしきい値電圧VthAは、AR<VthA<BRである。Bレベルのしきい値電圧VthBは、BR<VthB<CRである。Cレベルのしきい値電圧VthCは、CR<VthC<VREADである。本実施形態において、Cレベルのデータを記憶しているメモリセルのことを、Cレベルセルとよぶ。Bレベルのデータを記憶しているメモリセルのことを、Bレベルセルとよぶ。Aレベルのデータを記憶しているメモリセルのことを、Aレベルセルとよぶ。また、Eレベル消去状態のメモリセルのことを、Eレベルセルとよぶ。上記の電位VREAD,CR,BR,ARは、読み出しコマンドの基づくデータの読み出し、又は、ベリファイのためのデータの読み出しに用いられる電位である。本実施形態において、電位読み出しレベルCRを読み出しレベルに用いて行うデータの読み出し、すなわち、しきい値がCレベルなのか、Bレベル以下なのかの判定を、C読み出しとよぶ。また、電位BRを用いて行うデータの読み出し、すなわち、しきい値がBレベル以上なのか、Aレベル以下なのかの判定を、B読み出しとよぶ。さらに、電位ARを用いて行うデータの読み出し、すなわち、しきい値がAレベル以上なのか、Eレベルなのかの判定を、A読み出しとよぶ。電位VREADは、データの読み出し時において、読み出し対象のワード線以外の非選択ワード線に印加される非選択電位である。電位VREADは、メモリセルがオンする大きさに設定される。データ書き込み時に書き込み電圧プログラム電圧又は書き込みパルスともよばれるが印加された後に、所定の判定基準を用いたベリファイ書き込みベリファイともよばれるが実行される。例えば、各しきい値の分布に対して、その低電位側のレベルが、ベリファイのための判定基準となる電位レベルとして用いられる。ただし、低電位側のレベルに加えて、しきい値の高電位側のレベルに対して、ベリファイのための判定基準が設定されてもよい。Cレベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベルCV>CRが設定される。また、Cレベルの分布の高電位端のレベルに対して、判定レベルCVH<VREADが判定基準としてさらに設定されてよい。Bレベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベルBVBVH>BV>BRが設定される。Bレベルの分布の高電位端のレベルに対して、判定レベルBVH<CRが判定基準としてさらに設定されてもよい。Aレベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベルAVAVH>AV>ARが設定される。Aレベルのしきい値分布において、その分布の高電位端のレベルに対して、判定レベルAVH<BRが判定基準としてさらに設定されてもよい。また、Eレベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルEVH<ARが設定されている。判定レベルCVH,BVH,AVHを、CVHレベル、BVHレベル、AVHレベルとそれぞれよぶ。また、判定レベルCV,BV,AVを、CVレベル、BVレベル、AVレベルとそれぞれよぶ。所定の判定レベルによるベリファイをパスしたメモリセルのしきい値は、書き込むべきデータに対応した所定のしきい値の範囲内にシフトされている。データは、同一のワード線WLに接続されたメモリセルMCに対して、一括して書き込まれ、また読み出される。この際、データは下位ビット毎、または上位ビット毎に書き込まれ、また読み出される。したがって、メモリセルMCが2ビットデータを保持している場合には、1本のワード線WLあたり、2つのページが割り当てられていることになる。以下、下位ビットについて一括して書き込みまたは読み出されるページを下位ページとよび、上位ビットについて一括して書き込みまたは読み出されるページを上位ページとよぶ。ロウ制御回路2は、メモリセルアレイ1のロウを制御する。ロウ制御回路2は、メモリセルアレイ1内に設けられたワード線及びセレクトゲート線に接続されている。ロウ制御回路2は、ロウデコーダ及びドライバを有し、アドレスバッファ図示せずから転送されたロウアドレス信号に基づいて、ブロック及びページワード線を選択し、ワード線及びセレクトゲート線の動作電位を制御する。カラム制御回路2は、メモリセルアレイ1のカラムを制御する。カラム制御回路2は、カラムデコーダ31、センスアンプ回路32、ビットスキャン回路33及び演算ユニット34を含んでいる。カラムデコーダ31は、アドレスバッファから転送されたカラムアドレス信号に基づいて、メモリセルアレイ1のカラムを選択し、センスアンプ回路32を駆動させる。センスアンプ回路32は、メモリセルアレイ1内に設けられたビット線に接続されている。センスアンプ回路32は、ビット線の電位変動を検知及び増幅し、メモリセルが記憶するデータを判別する。図4を用いて、センスアンプ回路32の内部構成について、説明する。図4は、センスアンプ回路32の内部構成の一例を模式的に示している。センスアンプ回路32は、複数のカラムユニットCUを含んでいる。各カラムユニットCUは、各ビット線BLにそれぞれ対応するように、設けられている。なお、2つのカラムユニットで1つのセンスアンプ回路32を共有していても良い。各カラムユニットCUは、1つのセンスユニット321及び1つのラッチ回路325を含んでいる。センスユニット321及びラッチ回路325は、メモリセルアレイ1のカラムに対応するように、1つのカラムに対して1つずつ設けられている。つまり、1つのセンスユニット321と1つのラッチ回路325が、1つのビット線BL及びそのビット線BLに接続されたメモリセルユニットMUに対応している。1つのセンスユニット321は、1本のビット線BLに接続される。1つのラッチ回路325は、センスユニット321を経由して、ビット線BLに接続される。センスユニット321は、データの書き込み時、カラムデコーダ31及び制御回路8の制御によって、ビット線BLの充電及び放電する。センスユニット321は、データの読み出し時、ビット線BLの電位変動を検知し、データを判別する。ラッチ回路325は、メモリセルに書き込むデータ、メモリセルから読み出されたデータ及びメモリセルに対する動作を示す設定情報以下、フラグとよぶなどを、一時的に保持する。また、ラッチ回路325によって、センスユニット321からの信号又は外部からの信号が、増幅される。ラッチ回路325は、複数のラッチ90を有する。本実施形態において、データを保持するラッチ90のことを、データラッチ90とよび、フラグを保持するラッチ90のことを、フラグラッチ90とよぶ。ラッチ回路325内のデータラッチ90は、データの書き込み時において、そのラッチ回路325に対応しているメモリセルユニットMUに書き込むべきデータ外部からのデータを保持する。また、ラッチ回路325内のデータラッチ90は、データの読み出し時において、その回路325に対応しているメモリセルユニットMUから読み出されたデータメモリセルからのデータを保持する。1つのデータラッチ90は、1ビットのデータを保持する。例えば、ベリファイ時、ベリファイ結果に基づいて、所定のデータの書き込みが完了したメモリセルベリファイパスしたメモリセルに対応するカラムユニットCUのラッチ回路325に、書き込み完了を示す情報が保持される。これによって、書き込みが完了したメモリセルに対してデータの書き込みが継続されるのを、抑制される。ラッチ回路325内のフラグラッチ90が保持するフラグは、例えば、入力されたデータが2値1ビットのデータであるか多値2ビット以上のデータであるかを示す情報、或いは、どのような書き込みモードでデータを書き込むべきかを示す情報である。例えば、1つのメモリセルが4値2ビットのデータを記憶する場合、ラッチ回路325は、2つのデータラッチ90を有する。ラッチ回路20内に設けられた2つのデータラッチのうち、一方のデータラッチ90は、2ビットのうち上位の1ビットを保持し、他下位データラッチ90は、2ビットのうち下位の1ビットを保持する。ラッチ回路325は、1つ以上のフラグラッチ90を有する。また、ラッチ回路325は、ベリファイ結果を保持するラッチ90を有する。但し、ベリファイ結果ベリファイ情報ともよばれるは、フラグラッチなどに書き込まれてもよい。尚、4値のデータの場合には、少なくとも2つのデータラッチと少なくとも1つのフラグラッチが、ラッチ回路325内に設けられているが、データのビット数が増加すると、データラッチの個数は、増大する。例えば、メモリセルMCが8値3ビットのデータを記憶する場合、ラッチ回路325は3つのデータラッチを有する。つまり、ラッチ回路325は、最上位の1ビットを保持するデータラッチと、最下位の1ビットを保持するデータラッチと、最上位と最下位との間の1ビットを保持するデータラッチとを有する。これと同様に、データが16値4ビットの場合、ラッチ回路325内のデータラッチの個数は4個となり、データが32値16ビットの場合、ラッチ回路325内のデータラッチの個数は5個となる。フラグラッチの個数は、メモリの仕様に応じて、1個でもよいし、2個以上でもよい。ビットスキャン回路33は、フラッシュメモリの書き込みシーケンスにおいて、ラッチ回路325のデータ保持状態をスキャン検知する。ビットスキャン回路33は、例えば、ラッチ回路325が保持するベリファイ結果に基づいて、ベリファイをパスしたメモリセル数をカウントする。ビットスキャン回路33は、例えば、カウンタである。なお、ビットスキャン回路33は、データの書き込みが完了したメモリセルを数えるだけでなく、データの書き込みが完了していないメモリセル、つまり、ベリファイがフェイルのメモリセルの個数も数えることができる。また、本実施形態のフラッシュメモリのビットスキャン回路33は、ラッチ回路325のデータラッチのデータ保持状態1又は0状態を数える。以下では、ビットスキャン回路32がベリファイパスまたはベリファイフェイルの個数をあるデータ保持状態のデータラッチの個数を数える動作のことを、ビットスキャンとよぶ。演算ユニット34は、ラッチ回路325が保持する情報例えば、ベリファイ結果及びビットスキャン回路33のビットスキャンの結果に対して演算処理を施す。制御回路8は、演算ユニット34の演算結果に基づいて、印加電圧の調整、書き込み動作又は読み出し動作の適否を判断する。演算ユニット34の演算結果は、制御回路8に直接転送される場合もあるし、カラムユニットCU内のラッチ回路325内に保持される場合もある。また、ビットスキャン回路33及び演算ユニット34は、例えば、ラッチ回路325が保持する外部からのデータ書き込むべきデータを参照する。そして、ビットスキャン回路33は外部からのデータに応じて書き込み対象となるメモリセルの個数、換言すると、その書き込むべきデータに対してベリファイ及びビットスキャンを実行するメモリセルの個数を、数える。以下では、書き込み対象のメモリセルのことを、書き込み対象セルとよび、書き込み対象セルの個数のことを、書き込み対象セル数第1の個数Ntとよぶ。また、書き込みが完了したベリファイをパスしたメモリセルのことを、書き込み完了セルとよび、書き込み完了セルの個数のことを、書き込み完了セル数第2の個数Naとよぶ。また、書き込みが完了していないベリファイをフェイルしたメモリセルセルのことを書き込み未完了セルとよび、書き込み未完了セルの個数のことを、書き込み未完了セル数第3の個数Nfとよぶ。ソース線制御回路4は、メモリセルユニットに接続されたソース線の電位を制御する。ウェル制御回路5は、メモリセルアレイ1内のウェル領域の電位を制御する。電位生成回路6は、データの書き込みプログラム時、データの読み出し時及び消去時に、各ワード線WLに印加される書き込み電圧、中間電位及び非選択電位を生成する。また、電位生成回路6は、例えば、セレクトゲート線に印加する電位も生成する。電位生成回路6によって生成された電位は、ロウ制御回路2に入力され、選択ワード線及び非選択ワード線、セレクトゲート線にそれぞれ印加される。データ入出力バッファ7は、データの入出力のインターフェイスとなる。データ入出力バッファ7は、データ入出力端子10Bを介して入力された外部からのデータを、一時的に保持する。データ入出力バッファ7は、メモリセルアレイ1から出力されたデータを一時的に保持し、所定のタイミングで、保持しているデータをデータ入出力端子10Bへ出力する。制御回路8は、フラッシュメモリ全体の動作を管理する。制御回路8は、コマンドインターフェイス81及びステートマシン82を含んでいる。制御回路8は、制御信号入力端子10Aから入力された制御信号を受信する。この制御信号は、例えば、メモリコントローラやホスト装置などのメモリチップとは別のチップから出力される。コマンドインターフェイス81は、データ入出力バッファ7に入力されるデータがコマンドデータコマンド信号であるか否かを判断する。データ入出力バッファ7に入力されるデータがコマンドデータを含む場合、コマンドインターフェイス81は、コマンドデータをステートマシン82に転送する。ステートマシン82は、コマンドデータに基づいて、フラッシュメモリの動作モードを決定し、かつ、その動作モードに応じて、フラッシュメモリ内の各回路の動作を制御する。また、制御回路8は、設定情報記憶ユニット83を含んでいる。設定情報記憶ユニット83は、フラッシュメモリを駆動するための設定情報設定テーブルを保持する。設定情報記憶ユニット83は、書き込み電圧の初期値、書き込み電圧の加算値ステップ値ともよばれる、ベリファイ時及びビットスキャン時に用いられる判定値Criteriaを記憶している。例えば、これらの設定に対して、フラッシュメモリの動作、メモリの内部処理或いは動作結果に応じて変更可能なように、複数の値がそれぞれ設定されている。尚、制御回路8が、ビットスキャン回路33及び演算ユニット34と実質的に同じ機能を有していてもよい。また、制御回路8が外部からのデータを参照することによって、制御回路8が、書き込み対象セル数を、ビットスキャン回路33及び演算ユニット34に通知してもよい。ここで、図5乃至図7を用いて、本実施形態のフラッシュメモリのデータの書き込み時の各動作及び機能について、より具体的に説明する。<多値データの書き込み>図5を用いて、本実施形態のフラッシュメモリの多値データの書き込みについて説明する。図5は、本実施形態のフラッシュメモリにおける書き込み動作を説明するための模式図である。上述のように、多値型のフラッシュメモリは、1つのメモリセルが2ビット以上のデータを記憶する。以下では、1つのメモリセルが、2ビットのデータ上位/下位データを記憶する場合について説明する。図5に示されるように、多値型のフラッシュメモリのデータ書き込み時、下位データ下位ページの書き込みが実行され、下位データの書き込みが完了した後、上位データ上位ページの書き込みが下位データの書き込みに連続して実行される。本実施形態において、1回の書き込みシーケンスにおける下位データの書き込み期間を第1ステージとよび、上位データの書き込み期間を第2ステージとよぶ。ここで、書き込みシーケンスとは、メモリセルのしきい値が、所定のしきい値データに対応するしきい値にシフトするまでの書き込み動作を意味する。図5に示されるように、第1及び第2ステージのそれぞれにおいて、選択されたメモリセル選択セル、書き込み対象セルに対する所定のデータの書き込みが完了するまで、1回又は複数回にわたって、書き込み電圧が選択ワード線に印加される。尚、選択ワード線に接続されたメモリセルのうち、データの書き込みが不要なメモリセル非選択セル、1データセル又は11データセルともよばれるのしきい値がシフトするのを抑制するために、そのメモリセルが接続されているビット線非選択ビット線に、所定の電位が印加される。各ステージにおいて、所定のデータが書き込まれるまで、すなわち、メモリセルのしきい値が書き込むべきデータに対応する範囲内に収まるまで、各ステージの開始時に印加される1回目の書き込み電圧を初期値とし、前回印加された書き込み電圧に対してステップ値が順次加算される。これによって、各ステージにおいて、選択セルに対するデータの書き込みが継続される。尚、1回目の書き込み電圧で、メモリセルのしきい値が、所定のしきい値にシフトした場合、そのメモリセルに対するデータの書き込みは終了する。書き込み電圧の初期値及びステップ値は、例えば、動作状況に応じて、ビットスキャンの結果によって算出された値が用いられたり、制御回路8の設定情報記憶ユニット83が保持している値が用いられたりする。尚、本実施形態のフラッシュメモリは、外部からのデータ及びコマンドに応じて、1つのメモリセルが1ビットのデータを記憶する場合があるのは、もちろんである。<ベリファイ>図6を用いて、本実施形態のフラッシュメモリにおけるベリファイについて説明する。第1及び第2のステージにおいて、M回目の書き込み電圧の印加とM1回目の書き込み電圧の印加との間に、例えば、書き込むべきデータに応じて、図3に示されるCV~AVレベルなどの判定レベルベリファイレベルを用いたベリファイが実行される。なお、Mは1以上の整数である。例えば、データに対応するしきい値の低電位側の判定レベルAV~CVレベルが用いられる場合、データの書き込みにおいて、各メモリセルに対するデータの書き込みが完了したか否かは、メモリセル書き込み対象セルのしきい値が、書き込むべきデータに対応する所定のベリファイレベル以上であるか否かによって判定される。図6において、データの書き込み前の状態Z1において、書き込み対象セル数のうち、書き込みが完了したメモリセルは0個である。そして、選択ワード線に対して書き込み電圧が印加されると、メモリセルのしきい値がシフトし、状態Z2のように、ベリファイレベル以上のしきい値を有するメモリセルが発生する。ベリファイレベルVtのしきい値のメモリセルは、データの書き込みが完了したメモリセルであり、これらのメモリセルは、ベリファイパスとなる。一方、ベリファイレベルVtより小さいしきい値電圧のメモリセルは、データの書き込みが未完了のメモリセルであり、これらのメモリセルは、ベリファイフェイルとなる。このように、メモリセルごとに特性のばらつきがあるため、選択ワード線に接続された書き込み対象セルに同じ大きさの書き込み電圧が印加されても、1つの選択ワード線ページにおいて、ベリファイパスのメモリセルとベリファイフェイルのメモリセルとが存在する。ベリファイパス及びフェイルを示すベリファイ結果ベリファイ情報は、例えば、書き込み対象セルに対応するラッチ回路325内に、保持される。書き込み電圧を徐々に大きくしていき、書き込み対象のメモリセルに対して所定のデータの書き込みが完了すると、状態Z3に示されるように、ほぼ全ての書き込み対象セルのしきい値電圧は、ベリファイレベル以上になる。尚、メモリセルのしきい値が2つのベリファイレベル例えば、AVレベルとAVHレベルとの間に存在するか否かによって、ベリファイパスかベリファイフェイルかがを判定されてもよい。<ビットスキャン>図7を用いて、本実施形態のフラッシュメモリにおけるビットスキャンについて、説明する。ここでは、図5及び図7も適宜用いて、ビットスキャンについて説明する。図7は、ビットスキャンBSの動作タイミングを説明するためのタイミングチャートである。ビットスキャン回路33によるベリファイ結果のビットスキャンBSは、データの書き込みの準備中、例えば、M回目のベリファイとM1回目の書き込み電圧の印加との間の期間に実行される。図7に示されるように、書き込み電圧が選択ワード線に印加される前に、非選択ビット線が所定の電位に充電される。ここで、非選択ビット線とは、データの書き込みが完了したメモリセルが接続されたビット線、又は、データの書き込みが不要なメモリセルが接続されたビット線のことである。非選択ビット線に対する充電によって、しきい値をシフトさせなくともよいメモリセルのチャネル電位が上昇し、そのメモリセルに対するトンネル絶縁膜を介した電子のトンネリングが抑制される。ビットスキャンBSは、選択ワード線に書き込み電圧が印加される前に、実行される。同様に、後述する演算ユニット34によるメモリセル数Naと所定の判定値Nb1との比較も選択ワード線に書き込み電圧が印加される前に実行される。これは、次の書き込み電圧に、その結果を反映させるためである。なお、M回目のベリファイとM1回目の書き込み電圧の印加との間の期間の間であれば、ビットスキャンBS及び演算ユニット34による判定は、フラッシュメモリの仕様に適した動作タイミングで実行されてもよい。ビットスキャンBSは、ラッチ回路325が保持しているベリファイ結果パス/フェイル情報を、ビットスキャン回路33がスキャン検知することによって、実行される。例えば、図6の状態Z2において、ビットスキャン回路33は、ラッチ回路325のデータ保持状態に基づいて、書き込みが完了したメモリセル数がNa個であるとスキャンする。また、書き込み対象セル数がNtで示される場合、ビットスキャン回路33は、書き込み中のメモリセル書き込み未完了セルの個数は、Nt-Na=Nf個と判別できる。このビットスキャンBSによって、ビットスキャン回路33は、M1回目の書き込み電圧の印加の前に、前回M回目の書き込み電圧の印加による書き込み結果を確認する。例えば、M回目のベリファイ結果、または、ビットスキャンBSの結果に基づいて、演算ユニット34は演算処理を行う。また、その演算結果に基づいて、制御回路8は、M1回目の書き込み電圧に適した値を設定情報の中から選択する、或いは、適した値を算出する。このように、前回M回目の書き込み結果ベリファイパス/フェイルに基づいて、次回M1回目の書き込みに適した書き込み電圧を生成することによって、書き込みの時間を短縮し、所定のサイクル内にデータの書き込みが完了するように、フラッシュメモリの動作を制御できる。また、本実施形態において、下位データの書き込み第1ステージにおいて、1回目の書き込み電圧の印加の前に、書き込み対象セルの個数をカウントするためのビットスキャンBSSが、実行される。以下では、1回の書き込み電圧の印加データ書き込みとその書き込み電圧の印加後のベリファイ及びベリファイに対するビットスキャンとから形成される動作サイクルを、書き込みループとよぶ。また、書き込みループの回数のことを、書き込みループ数とよぶ。尚、ECCErrorCheckingandCorrectingによる誤り訂正の許容ビット数を考慮して、全ての書き込み対象セルが所定のベリファイレベル以上にならなくとも、ECCにより書き込みの不良を救済できるのであれば、たとえメモリセルのしきい値がデータに対応する値でなくとも、ページ又はブロックに対するデータの書き込みを終了してもよい。この判断は、ビットスキャンBSによる書き込み未完了セル数Nfを用いて判断することができる。<書き込みモード>本実施形態のフラッシュメモリは、書き込み動作に適用される複数の書き込みモードを有する。本実施形態のフラッシュメモリは、書き込みモードの1つとして、下位データの書き込み時に、上位データの書き込みに用いるための書き込み電圧の初期値Vpgm1を求めるモードを有する。この書き込みモードにおいて、ベリファイ時において書き込み完了即ち、ベリファイパスと判定されたメモリセル数Naと所定の判定値第1の判定値Nb1とが、演算ユニット34又は制御回路8によって比較される。書き込み完了セルの個数Naは、上述のように、ビットスキャン回路33によってカウントされる。判定値Nb1は、所定のしきい値データのベリファイレベルに対して設定された値であって、例えば、設定情報の1つとして、設定情報記憶ユニット83に保持されている。書き込み完了セル数Naが判定値Nb1を越えたときの書き込み電圧の電圧値が、上位データの書き込み電圧の初期値として、演算ユニット34又は制御回路8によって判定される。その初期値は、例えば、演算ユニット34又は制御回路8に記憶される。本実施形態において、上位データの書き込み電圧の初期値に適した電圧値Vpgm1を算出しながら、下位データの書き込みを行う書き込みモードのことを、初期値計算モードとよぶ。初期値計算モードによって、上位データの書き込みに適した初期値Vpgm1が算出された場合、下位データの書き込み後、得られた初期値Vpgm1に基づいた書き込み電圧を用いて、上位データの書き込みが実行される。例えば、図5に示されるように、第2ステージにおいて、初期値Vpgm1に補正値ステップ値dVpgmXが加算された書き込み電圧Vpgm1dVpgmXが、上位データの書き込みの1回目の書き込み電圧として用いられる。また、この補正値は、正の値だけでなく、負の値も適宜用いることができる。それゆえ、前回の書き込み電圧よりも低い電圧を、次回の書き込み電圧として、選択ワード線に印加することもできる。本実施形態において、第2ステージの書き込み電圧の初期値に初期値計算モードで得られた値Vpgm1が用いられる書き込みモードのことを、最適値モードとよぶ。最適値モードにおいても、書き込み対象セルにデータの書き込みが完了するまで、書き込みループが実行される。このように、初期値計算モード及び最適値モードによって、上位データの書き込みに適した書き込み電圧を求めることによって、ワード線ごとに適した書き込み電圧を用いて、データの書き込みを実行できる。この結果として、フラッシュメモリの書き込み時間を短縮できる。第1ステージにおいて、書き込み完了セル数Naが所定の判定値第2の判定値Nb2以上になった場合、或いは、第2ステージのための初期値が得られた場合Na≧Nb1、それ以降のデータの書き込みは、初期値の算出を行わずに外部データの書き込みのみが行われる。例えば、所定の書き込みループ回数においてメモリセル数Naが判定値Nbを超えない場合、制御回路8は、初期値計算モードを終了し、初期値Vpgm1の算出を行わずに第1ステージにおける外部データの書き込みを行う。初期値計算モードにおいて、適した初期値Vpgm1を算出できなかった場合、上位データの書き込みは、設定情報として保持されている書き込み電圧の初期値を用いて、実行される場合もある。また、初期値計算モードを実行せずに、設定情報として保持されている書き込み電圧を用いて、下位データの書き込みが実行される場合もある。本実施形態において、これらの初期値の算出を行わない書き込みモード、或いは、算出された初期値を用いない書き込みモードのことを、通常モード或いは通常書き込みとよぶ。通常モードにおける書き込み電圧の初期値及びそのステップ値は、設定情報として設定情報記憶ユニット83内に保持されている。尚、本実施形態において、初期値を判定するための値Nb1と通常モードに移行するための判定値Nb2は、同じ値とし、判定値Nb1,Nb2を単にNbと示す。但し、フラッシュメモリの仕様に応じて、2つの判定値Nb1,Nb2は異なる値であってもよい。例えば、図5に示されるように、初期値計算モードのベリファイレベルは、通常モードのベリファイレベルとは異なるレベルを用いて実行される。例えば、初期値計算モードのベリファイレベルは、通常モードのベリファイレベルより低いレベル電位に設定される。通常モードにおける第1ステージのベリファイレベルが、Vt1で示される場合、初期値計算モードのベリファイレベルは、Vt1-dVtで示される。すなわち、Vt1-dVtのベリファイレベルにおける書き込み完了セル数Naが判定値Nb以上となった時に、第2ステージ上位データの書き込みのための書き込み電圧の初期値Vpgm1が決定する。このベリファイの補正値dVtは、書き込むべきデータに応じてあらかじめ設定された値であり、例えば、設定情報記憶ユニット83に保持されている。なお、初期値計算モードのベリファイレベルと通常モードにおけるベリファイレベルは同じであってもよい。また、初期値計算モードによってデータ書き込みが開始される場合における1回目の書き込み電圧の大きさは、通常モードによってデータの書き込みが開始される場合における1回目の書き込み電圧の大きさより小さい。各動作モードで用いられるステップ値補正値又は加算値は、一定値でもよいし、ビットスキャンBSの結果に応じて変化する値でもよい。例えば、初期値計算モードで用いられるステップ値dVpgm1の大きさは、通常モードで用いられるステップ値dVpgmAの大きさと異なる。例えば、ステップ電圧dVpgm1は、ステップ値dVpgmAより小さい。その結果、精度良く第2ステージ上位データの書き込みのための書き込み電圧の初期値Vpgm1を決定できる。さらには、通常モードのデータの書き込みを高速化できる。本実施形態において、下位データの書き込みを、初期値計算モードで開始するか、又は、通常モードで開始するかは、ビットスキャン回路33及び演算ユニット34によって、判定される。例えば、図5に示されるように、第1ステージ下位データの書き込みにおける1回目の書き込み電圧を印加する前に、ビットスキャン回路33が、ビットスキャンBSSによってラッチ回路325のデータ保持状態をスキャンする。このビットスキャンBSSにおいて、書き込み対象セル数Ntがカウントされる。そして演算ユニット34が、書き込み対象セル数Ntと判定値Nbとを比較する。ここで、書き込み対象セル数Ntは判定値Nbよりも大きい判定値Nbαと比較してもよい。これは、例えば、判定値Nbが書き込み完了セル数Naの80と定義されていた場合などに有効である。下位データの書き込みは、書き込み対象セルにおいて、メモリセルのしきい値を1データ保持状態消去状態から0データ保持状態にシフトさせる動作である。それゆえ、下位データラッチ90が0データに対応する状態になっているか否かを判別することで、書き込み対象セル数Ntをスキャンできる。即ち、0データ書き込みに対応するデータラッチ90の個数が、ビットスキャン回路33によってカウントされる。例えば、書き込み対象セル数Ntが、判定値Nb以上である場合、初期値計算モードで、下位データの書き込みが開始される。この際、初期値計算モードを示すフラグが、演算ユニット34又は制御回路8からフラグラッチに転送される。一方、書き込み対象セル数Ntが判定値Nbより小さい場合、初期値計算モードを実行せずに、下位データの書き込みが通常モードによって開始される。この場合、通常モードを示すフラグが、演算ユニット34又は制御回路8からフラグラッチに転送される。尚、制御回路8が、ビットスキャン回路33及び演算ユニット34と同様の機能を有してもよい。以上のように、本実施形態のフラッシュメモリは、そのデータ書き込みに用いられる動作モードとして、あらかじめ設定された書き込み電圧を用いた動作モード第1の書き込みモード、通常モードと、下位データの書き込みサイクル中に上位データの書き込みに用いる書き込み電圧を算出する動作モード第2の書き込みモード、初期値計算モードとを含んでいる。本実施形態において、下位データの書き込み時第1ステージにおいて、選択ワード線に1回目の書き込み電圧を印加する前に、例えば、演算ユニット34又は制御回路8が、書き込み対象のメモリセルの個数Ntと所定の判定値Nbとを比較する。書き込み対象セル数Ntは、ビットスキャン回路33又は制御回路8が、外部からのデータ又はデータラッチ下位データラッチのデータ保持状態を参照することによって、数えられる。そして、書き込み対象セル数Ntが判定値Nbより小さい場合、制御回路8は、通常モードで下位データの書き込みを開始させる。一方、書き込み対象セル数Ntが判定数Nb以上である場合、制御回路8は、初期値計算モードで下位データの書き込みを開始させる。従来のフラッシュメモリにおいて、書き込み対象セル数Ntが判定値Nbより小さい場合、第2ステージにおける書き込み電圧の初期値が決定しない動作不良、及び、これに起因する第1ステージの動作が終了しない動作不良が発生する可能性があった。また、所定の書き込みループ数において初期値が決定しない場合に、初期値の算出を強制的に停止させたとしても、第1ステージの書き込み時間が長くなり、書き込みシーケンス全体の時間が長くなる可能性があった。本実施形態のフラッシュメモリは、下位データの書き込みの開始時において、書き込み対象セル数Ntと判定値Nbとを比較し、書き込み対象セル数Ntが判定値Nbより小さい場合、上位データの書き込みに用いる書き込み電圧の初期値を算出せずに、設定情報に基づく書き込み電圧を用いて、下位データ及び上位データの書き込み通常モードを行う。これによって、本実施形態のフラッシュメモリは、初期値計算モードにおいて上位データの書き込みのための書き込み電圧が決まらない動作不良や、書き込み動作が終了しない動作不良を抑制できる。そして、本実施形態のフラッシュメモリは、書き込みシーケンスの動作サイクル動作時間が長くなるのを抑制できる。また、ビットスキャン回路33は、1ページに含まれる全メモリセル数又は全書き込み対象セルの一部から抽出された所定の個数のメモリセルに対して、ビットスキャンを行ってもよい。この場合、例えば、1ページに含まれる全メモリセルから一部のメモリセルを抽出し、抽出されたメモリセルを用いて初期値計算モードを行う。この抽出された所定の個数のメモリセルに対する初期値計算モードから計算された値が、1ページに含まれる全メモリセルの初期値Vpgm1の代表値とされる。例えば、データのランダマイズ処理がされている場合などでは、1ページに含まれる全メモリセルに書き込まれる0データの個数と1データの個数はほぼ均一に配置されている。そのため、1ページに含まれる全メモリセルから一部を抽出して書き込み完了セル数Naと判定値Nbとを比較することにより、1ページ全体としての初期値Vpgm1を算出することができる。1ページに含まれる全メモリセルから一部のメモリセルを抽出する処理のことを、マスク処理とよぶ。ここで、ビットスキャンはベリファイパスまたはベリファイフェイルしたメモリセルの個数を数える動作であるため、数える対象のメモリセルが増えるとビットスキャンの時間が長くなる。そこで、ベリファイを行ったメモリセルから一部を抽出してビットスキャンを行うことにより、短時間で初期値Vpgm1を算出することができる。その結果、フラッシュメモリの書き込み動作の高速化を図ることができる。尚、本実施形態のフラッシュメモリについて4値のフラッシュメモリを例示したが、下位データの書き込み時に、その下位データより上位データの書き込みに用いる書き込み電圧の初期値を算出する動作モードを有する多値型のフラッシュメモリであれば、8値3ビット、16値4ビットなどのデータを1つのメモリセルが保持するフラッシュメモリであってもよいのは、もちろんである。本実施形態のフラッシュメモリの書き込みモードは、QPWQuickPassWriteモードやLMLowerMiddleモードなど、周知の書き込みモードが適宜組み合わされてもよい。以上のように、本実施形態のフラッシュメモリによれば、データ書き込み時の時間の増大を抑制できる。2動作図8及び図9を参照して、本実施形態の不揮発性半導体メモリ例えば、フラッシュメモリの動作について、説明する。ここでは、本実施形態のメモリの動作を説明するために、図1乃至図7も適宜用いる。尚、4値のフラッシュメモリの書き込み動作を例示するが、8値3ビット又は16値4ビットなどのフラッシュメモリでもよいのはもちろんである。図8は、本実施形態のフラッシュメモリの書き込み動作を示すフローチャートである。図9は、本実施形態のフラッシュメモリの書き込み動作を説明するための模式図である。外部からデータの書き込みが要求されたとき、書き込みコマンドが、制御信号入力端子10Aを介して、外部から制御回路8へ入力される。書き込みコマンドの入力とともに、外部からのデータが、データ入出力端子10Bを介して、データ入出力バッファ7へ入力される。データ入出力バッファ7に入力されたデータがコマンドデータである場合、制御回路8内のコマンドインターフェイス81は、コマンドデータをステートマシン82に転送する。また、データの書き込み対象を示すアドレスがアドレスバッファ図示せずに入力され、メモリセルアレイ1内のロウ及びカラムが、ロウ制御回路2及びカラムデコーダ31によって、それぞれ活性化される。外部からの書き込むべきデータが、データ入出力バッファ7からカラム制御回路3内のセンスアンプ回路32に転送される。転送されたデータは、カラムアドレスに対応するラッチ回路325に、それぞれ保持される。ここで、転送されたデータのうち、上位データはラッチ回路325内の上位データラッチに保持され、下位データはラッチ回路325内の下位データラッチに保持される。データの書き込み前に、選択されたブロックに対して、消去動作が実行される。これによって、選択ブロック内の全てのメモリセルは、1又は11データ保持状態となる。尚、メモリセルの過消去状態を解消するために、ソフトプログラミングが、消去動作の後に実行されてもよい。ソフトプログラミングによってワード線WLに印加される電位は、データの書き込みに用いられる書き込み電圧より小さい。また、例えば、消去動作後に、消去ベリファイが実行される。消去動作後、本実施形態のフラッシュメモリにおいて、メモリセルに対する外部データの書き込みが開始される。第1ステージとして、下位データの書き込みが開始される。下位データの書き込み第1ステージのための準備が、設定情報に基づいて、制御回路8によって実行される。図8に示されるように、書き込み対象セル数Nt及び所定の判定値NbNb1が比較されるステップST0。書き込み対象セル数Ntは、第1ステージの1回目の書き込み電圧が印加される前に、ビットスキャン回路33によるビットスキャンBSSによって求められる。図7に示されるように、動作モードを決定するためのビットスキャンBSSは、下位データの書き込み電圧印加前、例えば、下位データの書き込みにおける非選択ビット線BLの充電期間中に、実行される。例えば、下位データの書き込みは、消去状態111データ保持状態のメモリセルのしきい値を、000データに対応するしきい値にシフトさせる動作である。そのため、ビットスキャン回路33が0データに対応するデータ保持状態の下位データラッチの個数をカウントすることによって、書き込み対象セル数Ntがスキャンされる。尚、ビット線の充電の有無を検知することで、書き込み対象セル数Ntをカウントしてもよいし、書き込むべきデータが含む0の下位データの個数から、書き込み対象セル数Ntを直接カウントしてもよい。また、全てのメモリセルデータラッチに対してビットスキャンBSSを実行せずに、例えば、マスク処理によって、所定の個数のメモリセルが含む書き込み対象セル数がカウントされてもよい。スキャンされた書き込み対象セル数Ntは演算ユニット34へ転送され、これとともに、判定値CriteriaNbが制御回路8から演算ユニット34へ転送される。演算ユニット34は、書き込み対象セル数Ntと判定値Nbとを比較する。そして、演算ユニット34は、その比較結果を、例えば、制御回路8へ通知する。書き込み対象セル数Ntが判定値Nbより小さい場合、制御回路8又は演算ユニット34は、通常モードを用いた下位データ第1ステージの書き込みが開始されるように、フラッシュメモリ全体の動作を制御するステップST1。一方、書き込み対象セル数Ntが判定値Nb以上である場合、制御回路8又は演算ユニット34は、初期値計算モードで下位データの書き込みが開始されるように、フラッシュメモリ全体の動作を制御するステップST10。例えば、通常モードを示すフラグ又は初期値計算モードを示すフラグが、制御回路8から出力され、ラッチ回路325内のフラグラッチに格納される。尚、制御回路8が、ビットスキャン回路33及び演算ユニット34と実質的に同じ機能を有してもよい。図8及び図9に示されるように、通常モードによる下位データの書き込み第1ステージが開始される場合ステップST1の場合、設定情報に基づく書き込み電圧Vpgm_LP1が、下位データの書き込みにおける1回目の書き込み電圧として、非選択ビット線BLの充電後に選択ワード線ワード線WL1に印加されるステップST2。書き込み電圧Vpgm_LP1が印加された後、内部的なデータ読み出しにより、センスユニット321によってビット線の電位がセンスされ、ベリファイレベルVt1を判定レベルとしたベリファイ書き込みベリファイが実行されるステップST3。ベリファイ結果は、例えば、ラッチ回路325に保持され、そのベリファイパスしたメモリセル書き込み完了セルの個数Naが、ビットスキャン回路33によるビットスキャンBSによって、カウントされる。ビットスキャンBSは、図7に示されるように、次の書き込み電圧の印加前までに行われる。なお、ここでのビットスキャンBSは書き込み未完了セル数Nfを数える。全ての書き込み対象セルのデータ書き込みが完了しない又はECCによる許容ビット数よりも未完了セル数Nfが大きい場合、1回目M回目の書き込み電圧に対してステップ値加算値dVpgmAが加算され、2回目M1回目の書き込み電圧が設定されるステップST4。ステップ値dVpgmAの大きさは、M回目の書き込み電圧の印加に対するビットスキャンBSの結果を、演算ユニット34が演算処理することによって、M1回目の書き込み電圧を設定するごとに適宜調整されてもよい。尚、ベリファイ後において、全てのメモリセルをビットスキャンBSせずに、マスク処理により規定された個数のメモリセルをスキャンしてもよい。全てのメモリセルのデータ書き込みが完了する又は未完了セル数Nfが許容ビット数以下になるまで、上記の書き込みループが実行される。第1ステージにおいて全ての又は所定の個数の書き込み対象セルがベリファイパスした場合、通常モードを用いた上位データの書き込み第2ステージが開始されるステップST5。図9に示されるように、通常モードによる上位データの書き込みが開始される場合、設定情報に基づく書き込み電圧Vpgm_UP1が、上位データの書き込みにおける1回目の書き込み電圧として、選択ワード線に印加されるステップST6。そして、第1ステージと同様に、第2ステージにおいても、ベリファイ及びビットスキャンステップST7、ステップ値dVpgmBの加算ステップST8が実行される。第2ステージにおいて、ベリファイレベルVt2が、ベリファイの判定基準として用いられる。ベリファイレベルVt2の値電位は、判定レベルによって変化する。補正値dVpgmBの値は、補正値dVpgmAの値と異なってもよいし、同じであってもよい。そして、第2ステージにおいて全ての書き込み対象セルのデータ書き込みが完了する又は所定の個数よりも未完了セル数Nfが小さくなった場合、外部からのデータの書き込みが終了する。尚、第1及び第2ステージにおいて、所定の書き込みループ数内で所定の個数のメモリセルがベリファイパスしなかった場合、入力されたアドレスと異なるブロック又はページが選択され、下位データ及び上位データの書き込みが再度実行される。ステップST0における書き込み対象セル数Ntと判定値Nbとの比較に基づいて、初期値計算モードが用いられる場合ステップST10、以下の動作が実行される。図8及び図9に示されるように、初期値計算モードによる下位データの書き込み第1ステージが開始される場合、書き込み電圧Vpgm0が、下位データの書き込みにおける1回目の書き込み電圧として、選択ワード線に印加されるステップST11。書き込み電圧Vpgm0が印加された後、ベリファイが実行されるステップST12。初期値計算モードにおいて、ベリファイレベルVt1-dVt1が用いられる。初期値計算モードにおけるベリファイレベルVt1-dVt1は、通常モードのベリファイレベルVt1より小さい。そして、ビットスキャン回路33によって、ベリファイレベルVt1-dVt1におけるベリファイ結果に対するビットスキャンBSが実行される。ビットスキャンBSによって、書き込み完了セル数Naがカウントされる。書き込み完了セル数Na及び判定値Nbが、演算ユニット34によって比較される。この比較によって、上位データの書き込み最適値モードに用いられる書き込み電圧の初期値が決定したか否か判定されるステップST13。書き込み完了セル数Naが判定値Nbより小さい場合、上位データの書き込み電圧の初期値は決定されず、ステップ値dVpgm1が前回M回目の書き込み電圧に加算されるステップST14。そして、M1回目の書き込み電圧の印加ステップST11、ベリファイ及びビットスキャンステップST12、書き込み完了セル数Naと判定値との比較ステップST13が、書き込み完了セル数Naが判定値Nb以上となるまで、繰り返される。所定のベリファイレベルここでは、Vt1-dVt1において書き込み完了セル数Naが判定値Nb以上となった場合、その判定結果に対応するベリファイ及びビットスキャン前に用いられたM回目の書き込み電圧Vpgm1が、上位データの書き込み電圧の初期値Vpgm1として、演算ユニット34又は制御回路8に記憶される。書き込み電圧Vpgm1は、例えば、ステップ値dVpgm1が一定値である場合、Vpgm0M-1×dVpgm1M≧1で示される。図9に示されるように、書き込み完了セル数Naが判定値Nb1以上となった後、すなわち、第2ステージの書き込み電圧の初期値Vpgm1が決定した後、初期値計算モードが終了し、通常モードによる下位データの書き込みが実行されるステップST16。尚、初期値を決定するための判定値Nb1と通常モードへ移行するのを判定するための判定値Nb2とに対して、互いに異なる判定値を設定してもよい。判定値Nb1と判定値Nb2とが異なる値に設定されている場合、初期値が決定された後において、書き込み完了セル数Naが判定値Nb2以上となるまで、初期値計算モードでデータの書き込みが継続される。第1ステージ内の初期値計算モードに続く通常モードのデータ書き込みにおいて、演算ユニット34による演算又は設定情報に基づいて、所定のステップ値dVpgmAが前回の書き込み電圧が加算され、その書き込み電圧が選択ワード線に印加されるステップST17。そして、ベリファイレベルVt1を用いたベリファイ及びそのベリファイの結果パス/フェイルに対するビットスキャンBSが実行されるステップST19。所定の個数の書き込み完了セルがベリファイパスしていなかった場合、通常モードにおける書き込み電圧の印加ステップST17、ベリファイ/ビットスキャンステップST18、及びステップ電圧の加算ステップST19から形成される書き込みループが実行される。すなわち、全てのメモリセルのデータ書き込みが完了する又は未完了セル数Nfが許容ビット数以下になるまで、上記の書き込みループが実行される。初期値計算モードを含む第1ステージ下位データの書き込みが終了した後、第2ステージ上位データの書き込みが実行される。上記のように、書き込み対象セル数Ntが判定値Nb以上であり、かつ、初期値計算モードによって、第2ステージにおける書き込み電圧の初期値Vpgm1が得られた場合、第2ステージのデータ書き込みは、最適値モードを用いた書き込みによって、実行されるステップST20。図9に示されるように、最適値モードにおける1回目の書き込み電圧は、初期値計算モードによって得られた初期値Vpgm1にステップ値補正値dVpgmXを加算した電圧値Vpgm1dVpgmXに、制御回路8によって設定される。そして、最適値モードを用いたデータ書き込みにおいて、1回目の書き込み電圧Vpgm1dVpgmXが、選択ワード線例えば、ワード線WL1に印加されるステップST21。尚、ステップ値dVpgmXを加算せずに、初期値Vpgm1を1回目の書き込み電圧として用いて、上位データの書き込みを開始してもよい。この後、書き込み電圧の印加に対するベリファイ及びビットスキャンBSが実行されるステップST22。最適値モードにおいて、通常モードによる第2ステージの書き込みと同様に、ベリファイの判定レベルとして、ベリファイレベルVt2が用いられる。全ての又は許容値を満たす個数のメモリセルがベリファイパスしなかった場合、ステップ値dVpgm2が、前回の書き込み電圧に加算されるステップST23。ステップ値dVpgm2は、ステップ値dVpgmXと同じ大きさでもよいし、設定情報に基づく一定値であってもよいし、ビットスキャンBSの結果に基づいて調整される可変値でもよい。全ての書き込み対象セルのデータ書き込みが完了する又は所定の個数よりも未完了セル数Nfが小さくなった場合、外部からのデータの書き込みが終了する。図8乃至図9に示されるフラッシュメモリの書き込み動作が、ブロック内の各ワード線に対して、順次実行される。尚、上述の各ステージのデータ書き込みにおいて、所定の回数の書き込みループでデータの書き込みが完了しない場合、外部から入力されたアドレスとは異なるアドレスに、下位及び上位のデータ書き込みが、図8及び図9に示される順序で実行されてもよい。また、初期値計算モードにおいて、所定の書き込みループ数で書き込み完了セル数Naが判定値Nb以上にならなかった場合、初期値計算モードを強制的に終了して、通常モードで下位データの書き込みを実行してもよい。この場合、上位データの書き込みは、通常モードを用いて実行される。また、初期値計算モードにおいて下位データの書き込みが完了した場合、通常モードに移行せずに、上位データの書き込み第2ステージが開始されてもよい。以上のように、本実施形態のフラッシュメモリの書き込み動作において、下位データのデータ書き込み時第1ステージに、選択ワード線に1回目の書き込み電圧を印加する前に、例えば、書き込み対象のメモリセルの個数Ntと所定の判定値Nbとが比較される。そして、書き込み対象セル数Ntが判定値Nbより小さい場合、設定情報に基づく通常モードで下位データ及び上位データの書き込みが実行される。一方、書き込み対象セル数Ntが判定数Nb以上である場合、初期値計算モードで上位データの書き込み電圧の初期値を計算しながら、下位データの書き込みが実行される。これによって、本実施形態のフラッシュメモリの書き込み動作において、書き込み対象セル数Ntが判定値Nbより小さい場合に、上位データの書き込みのための書き込み電圧が決まらない動作不良、或いは、書き込み動作が終了しない動作不良が、発生するのを抑制できる。また、本実施形態のフラッシュメモリの書き込み動作において、書き込みシーケンスの動作期間が長くなるのを抑制できる。以上のように、本実施形態のフラッシュメモリの動作によれば、データ書き込み時の時間の増大を抑制できる。[その他]本実施形態において、不揮発性半導体メモリとして、フラッシュメモリを例示したが、本実施形態は、MRAMMagnetoresistiveRAM、ReRAMResistiveRAM及びPCRAMPhaseChangeRAMのようなメモリにも適用できる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"