夫々がビット線に接続されている電荷蓄積部を有する複数のメモリセルを含む不揮発性半導体メモリであって、書き込むべき書込データの値に対応した量の電荷を前記電荷蓄積部に注入することによりデータの書き込みを行うデータ書込手段と、前記データ書込手段による前記データの書き込みに先立ち、前記電荷蓄積部各々から前記ビット線を介して読出電流を送出させ、前記読出電流が最大読出電流閾値よりも大となる電荷蓄積部に前記読出電流が前記最大読出電流閾値を下回るまで電荷を注入する初期化書込手段と、を有することを特徴とする不揮発性半導体メモリ。前記初期化書込手段により全ての前記電荷蓄積部は前記書込データとして第1のデータ値が書き込まれた状態に初期化され、前記データ書込手段は、前記第1のデータ値とは異なる第2のデータ値を有する書込データの書き込み対象となる電荷蓄積部に対して、前記ビット線を介して読出電流を送出させると共に当該読出電流が前記最大読出電流閾値よりも小なる第1読出電流閾値を下回るまで電荷を注入することを特徴とする請求項1記載の不揮発性半導体メモリ。前記データ書込手段は、前記第2のデータ値を有する書込データの書き込み終了後、前記第1及び第2のデータ値とは異なる第3のデータ値を有する書込データの書き込み対象となる電荷蓄積部に対して、前記ビット線を介して読出電流を送出させると共に当該読出電流が前記第1読出電流閾値よりも大であり且つ前記最大読出電流閾値よりも小なる第2読出電流閾値を下回るまで電荷を注入することを特徴とする請求項2記載の不揮発性半導体メモリ。夫々がビット線に接続されている電荷蓄積部を有する複数のメモリセルと、前記メモリセルに対するデータの書き込み制御を行う制御部と、を備えた不揮発性半導体メモリの前記制御部によって実行されるデータ書き込み方法であって、前記電荷蓄積部各々から前記ビット線を介して読出電流を送出させ、前記読出電流が最大読出電流閾値よりも大となる電荷蓄積部に前記読出電流が前記最大読出電流閾値を下回るまで電荷を注入する初期化書込ステップと、書き込むべきデータの値に対応した量の電荷を前記電荷蓄積部に注入することによりデータの書き込みを行うデータ書込ステップと、を順次実行することを特徴とするデータ書き込み方法。前記初期化書込ステップにより全ての前記電荷蓄積部は前記書込データとして第1のデータ値が書き込まれた状態に初期化され、前記データ書込ステップは、前記第1のデータ値とは異なる第2のデータ値を有する書込データの書き込み対象となる電荷蓄積部に対して、前記ビット線を介して読出電流を送出させると共に当該読出電流が前記最大読出電流閾値よりも小なる第1読出電流閾値を下回るまで電荷を注入することを特徴とする請求項4記載のデータ書き込み方法。前記データ書込ステップは、前記第2のデータ値を有する書込データの書き込み終了後、前記第1及び第2のデータ値とは異なる第3のデータ値を有する書込データの書き込み対象となる電荷蓄積部に対して、前記ビット線を介して読出電流を送出させると共に当該読出電流が前記第1読出電流閾値よりも大であり且つ前記最大読出電流閾値よりも小なる第2読出電流閾値を下回るまで電荷を注入することを特徴とする請求項5記載のデータ書き込み方法。本発明は、データ書き込み時における書込回数を減らし且つ読み出し精度を高めることが可能な半導体不揮発性メモリ及びデータ書き込み方法を提供することを目的とする。本発明による半導体不揮発性メモリは、夫々がビット線に接続されている電荷蓄積部を有する複数のメモリセルを含む不揮発性半導体メモリであって、書き込むべき書込データの値に対応した量の電荷を前記電荷蓄積部に注入することによりデータの書き込みを行うデータ書込手段と、前記データ書込手段による前記データの書き込みに先立ち、前記電荷蓄積部各々から前記ビット線を介して読出電流を送出させ、前記読出電流が最大読出電流閾値よりも大となる電荷蓄積部に前記読出電流が前記最大読出電流閾値を下回るまで電荷を注入する初期化書込手段と、を有する。また、本発明によるデータ書き込み方法は、夫々がビット線に接続されている電荷蓄積部を有する複数のメモリセルと、前記メモリセルに対するデータの書き込み制御を行う制御部と、を備えた不揮発性半導体メモリの前記制御部によって実行されるデータ書き込み方法であって、前記電荷蓄積部各々から前記ビット線を介して読出電流を送出させ、前記読出電流が最大読出電流閾値よりも大となる電荷蓄積部に前記読出電流が前記最大読出電流閾値を下回るまで電荷を注入する初期化書込ステップと、書き込むべきデータの値に対応した量の電荷を前記電荷蓄積部に注入することによりデータの書き込みを行うデータ書込ステップと、を順次実行する。本発明においては、データの書き込みを行う前に、電荷蓄積部各々から読出電流を送出させ、読出電流が最大読出電流閾値よりも大となる電荷蓄積部に、この読出電流が最大読出電流閾値を下回るまで電荷を注入する初期化書込を行うようにしている。よって、このような初期化書込を実行しない場合に比して、データ書き込み時に電荷蓄積部に注入する電荷の総量を少なくすることが可能となる。従って、電荷を注入する回数、つまりデータ書き込み回数が少なくなる分だけデータ書き込みに費やされる時間が短縮される。また、書き込み回数が全体的に少なくなるので、単一のメモリセルに2つの電荷蓄積部が設けられているメモリにアクセスする場合に、電荷蓄積部の内の一方の電荷蓄積部への書き込みに伴う、他方の電荷蓄積部の読出電流の低下が抑制されるようになる。よって、データの読み出し精度の低下を抑制することが可能となる。更に、上記した初期化書込によれば、初期状態での全電荷蓄積部における蓄積電荷量のバラツキが小さくなる。よって、かかる初期化書込後、単一のメモリセルに設けられている2つの電荷蓄積部に異なるデータが同時に書き込まれる場合、電荷蓄積部の内の一方の側だけに書き込みが継続する時間が短くなるので、読出電流値の低下を抑制することが可能となる。本発明に係る半導体不揮発性メモリにおいては、書き込むべきデータの値に対応した量の電荷を電荷蓄積部に注入するS21~S27、S31~S37、又はS41~S47データ書き込みS2~S4に先立ち、以下の如き初期化書込を行うS1。すなわち、メモリセル10に設けられている電荷蓄積部30、32の各々から読出電流RDを送出させS12、読出電流が最大読出電流閾値Iref4よりも大となる電荷蓄積部に、この読出電流が最大読出電流閾値を下回るまで電荷を注入するS13~S15。図1は、4値のデータを記憶可能な半導体不揮発性メモリの全体構成を示すブロック図である。図1に示すように、かかる半導体不揮発性メモリは、メモリセルアレイ100、ロウデコーダ104、カラムデコーダ106及びコントローラ108を有する。メモリセルアレイ100には、列方向に配列された複数のビット線BL1~BLMMは2以上の整数及びこれと交叉して行方向に配列された複数のワード線WL1~WLNNは2以上の整数が設けられている。ビット線BL及びワード線WLによる各交叉部にはメモリセル10が設けられている。メモリセル10は、例えばnチャネル型のMOSFETMetalOxideSemiconductorFieldEffectTransistorから構成されている。図2は、かかるメモリセル10の主要部を示す断面図である。図2に示す如く、p型のシリコン基板12の上面には、SiO2からなるゲート酸化膜16を介してポリシリコンからなるゲート電極17以下、ゲート端子とも言うが形成されている。このゲート電極17が図1に示すようにワード線WLに接続されている。シリコン基板12表面のゲート電極17を挟む位置にn型不純物を高濃度に含有するソース領域13およびドレイン領域14が形成されている。これらソース領域13以下、ソース端子とも言う及びドレイン領域14以下、ドレイン端子とも言うが夫々、図1に示す如く互いに異なるビット線BLに接続されている。ゲート電極17直下のシリコン基板12の表面領域はMOSFETの動作時において電流路が形成されるチャンネル領域15である。チャンネル領域15とソース領域13およびドレイン領域14との間にはソース領域13およびドレイン領域14に隣接して比較的不純物濃度の低いn型のエクステンション領域18および19が形成されている。このエクステンション領域18および19は、後述する電荷蓄積部に効率的に電荷を注入するために設けられるものである。ソース側のエクステンション領域18の上部には電荷蓄積部30が設けられ、ドレイン側のエクステンション領域19の上部には電荷蓄積部32が設けられている。電荷蓄積部30及び32の各々は、シリコン酸化膜301、シリコン窒化膜303、シリコン酸化膜305からなるONO積層絶縁膜により構成される。電荷蓄積部30及び電荷蓄積部32は、それぞれエクステンション領域18および19からゲート電極17の側壁に亘って延在している。これにより、電荷の蓄積および保持を確実に行うことができる。また、電荷蓄積部30及び電荷蓄積部32は、物理的に連続せず、互いに離間して形成されているので、各電荷蓄積部に対して別個独立に電荷を蓄積保持できる。この際、電荷蓄積部に蓄積された電荷量に応じて、電荷蓄積部30及び32の各々に、4値のデータ0~3の記憶が為される。すなわち、蓄積された電荷量が第1閾値より大となる場合にはデータ0、第1閾値よりも小であり且つ第2閾値よりも大となる場合にはデータ1、第2閾値よりも小であり且つ第3閾値よりも大となる場合にはデータ2、第3閾値よりも小であり且つ初期最小電荷量後述するより大なる場合にはデータ3の記憶状態となる。尚、メモリセル10の電荷蓄積部30及び32各々の初期状態では電荷の蓄積量は第3閾値よりも小である。かかる構成により、メモリセル10の各々は、ワード線WLを介してそのゲート端子に印加された電圧、及び一対のビット線BLを介してドレイン端子及びソース端各々に印加された電圧に応じて、4値のデータ0~3の書き込み及び読み出しを行う。ロウデコーダ104は、コントローラ108より供給された制御信号に基づいて、メモリセルアレイ100に形成されているワード線WL1~WLNに書込電圧又は走査電圧を印加する。カラムデコーダ106は、コントローラ108より供給された制御信号に基づいて、メモリセルアレイ100に形成されているビット線BL1~BLMに、接地電位、読出設定電圧又は書込設定電圧を印加する。又、カラムデコーダ106は、ビット線BLに接地電位を印加した際に、このビット線BLに接続されているメモリセル10の電荷蓄積部30又は32に蓄積された電荷に伴う電流をビット線BL上に送出させ、このビット線BL上に送出された電流値を表す読出電流値をコントローラ108に供給する。コントローラ108は、メモリセルアレイ100に書き込むべき4値のデータ以下、書込データと称するが外部より入力されると、以下の如きデータ書き込みプログラム後述するを実行する。図3は、かかるデータ書き込みプログラムによる制御手順を示すフローチャートである。図3において、先ず、コントローラ108は、メモリセルアレイ100に形成されている全てのメモリセル10の電荷蓄積部30及び32に対して、蓄積されている電荷量を初期化すべき初期化書込ルーチンを行うステップS1。図4は、かかる初期化書込ルーチンを示すフローチャートである。図4において、先ず、コントローラ108は、先頭アドレスを示す1を、アクセスアドレスAとして内蔵レジスタ図示せぬに記憶させるステップS11。次に、コントローラ108は、アクセスアドレスAにて示されるアドレスに属するメモリセル10各々の電荷蓄積部30及び32からデータを読み出すべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS12。ステップS12の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに走査電圧VSを印加する。また、ステップS12の実行により、カラムデコーダ106は、ビット線BL1~BLMの内の奇数番目に配置されているビット線BL各々に接地電位0ボルトを印加しつつ、偶数番目に配置されているビット線BL各々に読出設定電圧VRを印加する。その後、カラムデコーダ106は、偶数番目に配置されているビット線BL各々に接地電位0ボルトを印加しつつ、奇数番目に配置されているビット線BL各々に読出設定電圧VRを印加する。上記したカラムデコーダ106による一連の動作により、アクセスアドレスAに対応したワード線WLに接続されているメモリセル10各々の電荷蓄積部30及び32からビット線BL1~BLMを介して夫々の蓄積電荷量に対応した読出電流RD1~RDMが送出される。尚、電荷蓄積部30又は32に蓄積された電荷の量が大なるほど、読出電流RD値は小さくなる。次に、コントローラ108は、ビット線BL1~BLMを介して送出された読出電流RD1~RDMの全てが、図5に示す如き読出電流閾値Iref4よりも低いか否かを判定するステップS13。尚、読出電流閾値Iref4は、電荷蓄積部30、32に所定の初期最小電荷量QMINの電荷が蓄積されている場合に、この電荷蓄積部から送出し得る読出電流RDの値である。すなわち、図5に示す如く読出電流閾値Iref4は初期最小電荷量QMINに対応しており、上記ステップS13において読出電流RDが読出電流閾値Iref4よりも高いと判定された場合には、電荷蓄積部30、32の蓄積電荷の量が初期最小電荷量QMINよりも小である。また、読出電流閾値Iref4は、後述する第1~第3の読出電流閾値としての読出電流閾値Iref1~Iref3のいずれよりも大なる値を有する最大読出電流閾値である。かかるステップS13において、読出電流RD1~RDMの全てが読出電流閾値Iref4より低い状態にはないと判定された場合、つまり読出電流閾値Iref4よりも高い読出電流RDが1つでも存在する場合、コントローラ108は、以下のステップS14を実行する。つまり、コントローラ108は、読出電流閾値Iref4よりも高い読出電流RDを送出したメモリセル10に対して、初期化用書込電圧VGINを用いた書き込みを実施させるべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS14。ステップS14の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに初期化用書込電圧VGINを印加する。また、ステップS14の実行により、カラムデコーダ106は、ビット線BL1~BLMの内で、上記した読出電流閾値Iref4よりも高い読出電流RDが送出されたビット線BLに書込設定電圧VWを印加しつつ、その他のビット線BLには接地電位0ボルトを印加する。すなわち、かかるステップS14の実行により、読出電流閾値Iref4よりも高い読出電流RDを送出したメモリセル10、つまり蓄積電荷の量が初期最小電荷量QMINよりも小なる状態にある電荷蓄積部30、32には、初期化用書込電圧VGINの印加に応じた電荷が注入される。ステップS14の実行後、コントローラ108は、初期化用書込電圧VGINに電圧vを加算したものを新たな初期化用書込電圧VGINとして設定するステップS15。かかるステップS15の実行後、コントローラ108は、上記ステップS12の実行に戻って前述した如き動作を繰り返し実行する。すなわち、読出電流RD1~RDMの全てが読出電流閾値Iref4よりも低い状態になるまで、つまり全ての電荷蓄積部に初期最小電荷量QMINよりも大なる量の電荷が蓄積されるまで、初期化用書込電圧VGINを段階的に増加させつつ電荷蓄積部30、32に電荷を注入するという、ベリファイ処理S12~S15を実行するのである。この間、上記ステップS13において、読出電流RD1~RDMの全てが読出電流閾値Iref4よりも低いと判定された場合、コントローラ108は、アクセスアドレスAの内容を1だけインクリメントしたものを新たなアクセスアドレスAとして内蔵レジスタに上書き記憶するステップS16。かかるステップS16の実行後、コントローラ108は、アクセスアドレスAがメモリセルアレイ100の最終アドレスよりも大であるか否かを判定するステップS17。ステップS17においてアクセスアドレスAが最終アドレス以下であると判定された場合には、コントローラ108は、上記ステップS12の実行に戻り前述した如き動作を繰り返し実行する。一方、ステップS17においてアクセスアドレスAが最終アドレスより大であると判定された場合には、コントローラ108は、この初期化書込ルーチンを終了し、図3に示す如きデータ書き込みプログラムの実行に戻る。かかる初期化書込ルーチンの実行により、メモリセルアレイ100に形成されている全てのメモリセル10の電荷蓄積部30、32は、読出電流閾値Iref4よりも低い読出電流を送出し得る程度の電荷量が蓄積された状態、つまり初期最小電荷量QMINよりも大なる量の電荷が蓄積された状態に初期化される。例えば、初期化書込ルーチンの実行前の段階でメモリセル10各々による読出電流の分布が図5に示す如き読出電流閾値Iref4を含んで左右に広がる形態を有する分布APである場合、この初期化書込ルーチンの実行により、その分布は、図5に示す如き読出電流閾値Iref4を最大とする読出電流の分布B3に遷移する。この際、これら分布AP及びB3は、全ての電荷蓄積部における蓄積電荷量の分布に対応している。よって、図5に示すように、分布APでの最小読出電流IMに対応した最大電荷量、及び分布B3での最大の電荷量は共に初期最大電荷量QMAXであるものの、分布B3での最小の電荷量は、図5に示すように初期最小電荷量QMINに底上げされる。要するに、上記初期化書込ルーチンの実行により、メモリセル10に設けられている電荷蓄積部30、32の各々から読出電流RDを送出させ、その読出電流が読出電流閾値Iref4よりも大となる電荷蓄積部に、読出電流RDが読出電流閾値Iref4を下回るまで電荷を注入するのである。これにより、電荷蓄積部30、32各々の内で蓄積電荷量が初期最小電荷量QMINに満たないものに対して、その蓄積電荷量が少なくとも初期最小電荷量に到るまで電荷が注入されるので、全ての電荷蓄積部における蓄積電荷量の最小量が上記初期最小電荷量QMINに底上げされる。この際、図5に示す如き分布B3に含まれる読出電流RDを送出し得る電荷量の蓄積状態が、第1のデータ値としてのデータ3の記憶状態となる。かかる初期化書込ルーチンS1の実行後、コントローラ108は、外部入力された4値の書込データの内で最も読出電流値が大となるデータ0の書き込み対象となる電荷蓄積部だけにデータ0を書き込ませるデータ0書込ルーチンを行うステップS2。図6は、データ0書込ルーチンを示すフローチャートである。図6において、先ず、コントローラ108は、先頭アドレスを示す1を、アクセスアドレスAとして内蔵レジスタに記憶させるステップS21。次に、コントローラ108は、アクセスアドレスAにて示されるアドレスに属し、且つデータ0の書込対象となるメモリセル10各々の電荷蓄積部30、32からデータを読み出すべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS22。ステップS22の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに走査電圧VSを印加する。また、ステップS22の実行により、カラムデコーダ106は、ビット線BL1~BLMの内でデータ0の書込対象となるメモリセル10が接続されている一対のビット線BLの内の一方に接地電位0ボルト、他方に読出設定電圧VRを印加する。これにより、アクセスアドレスAに属しており且つデータ0の書込対象となるメモリセル10の電荷蓄積部30、32から、ビット線BLを介して読出電流RDが送出される。次に、コントローラ108は、ビット線BLを介して送出された読出電流RDの全てが、図5に示す如き読出電流閾値Iref1よりも低いか否かを判定するステップS23。尚、読出電流閾値Iref1とは、蓄積された電荷量がデータ0に対応した量を満たすか否かを判定する為の上記第1閾値に対応した第1の読出電流閾値であり、上記した最大読出電流閾値としての読出電流閾値Iref4よりも小なる値を有する。かかるステップS23において、読出電流RDの全てが読出電流閾値Iref1より低い状態にはないと判定された場合、つまり読出電流閾値Iref1よりも高い読出電流RDが1つでも存在する場合、コントローラ108は、以下のステップS24を実行する。つまり、コントローラ108は、読出電流閾値Iref1よりも高い読出電流RDを送出したメモリセル10に対して、その電荷蓄積部をデータ0の記憶状態に設定する為の書込電圧VG0を用いた書き込みを実施させるべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS24。ステップS24の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに書込電圧VG0を印加する。また、ステップS24の実行により、カラムデコーダ106は、ビット線BL1~BLMの内で、上記した読出電流閾値Iref1よりも高い読出電流RDが送出されたビット線BLに書込設定電圧VWを印加しつつ、その他のビット線BLには接地電位0ボルトを印加する。かかるステップS24により、読出電流閾値Iref1よりも高い読出電流RDを送出したメモリセル10の電荷蓄積部30、32には、書込電圧VG0の印加に応じた電荷が注入される。ステップS24の実行後、コントローラ108は、書込電圧VG0に電圧vを加算したものを新たな書込電圧VG0として設定するステップS25。かかるステップS25の実行後、コントローラ108は、上記ステップS22の実行に戻って前述した如き動作を繰り返し実行する。すなわち、データ0の書込対象となるメモリセル10の電荷蓄積部30、32から読み出された読出電流RDの全てが読出電流閾値Iref1よりも低い状態、つまりデータ0が記憶された状態になるまで、書込電圧VG0を段階的に増加させつつ電荷を電荷蓄積部30、32に注入するという、ベリファイ処理S22~S25を実行するのである。この間、上記ステップS23において、読出電流RDの全てが読出電流閾値Iref1よりも低いと判定された場合、コントローラ108は、アクセスアドレスAの内容を1だけインクリメントしたものを新たなアクセスアドレスAとして内蔵レジスタに上書き記憶するステップS26。かかるステップS26の実行後、コントローラ108は、アクセスアドレスAが、メモリセルアレイ100の全アドレスの内で書込データの最終データが書き込まれるべき最終アドレスよりも大であるか否かを判定するステップS27。ステップS27においてアクセスアドレスAが最終アドレス以下であると判定された場合、コントローラ108は、上記ステップS22の実行に戻り前述した如き動作を繰り返し実行する。一方、ステップS27においてアクセスアドレスAが最終アドレスより大であると判定された場合には、コントローラ108は、このデータ0書込ルーチンを終了し、図3に示す如きデータ書き込みプログラムの実行に戻る。上記したデータ0書込ルーチンによれば、メモリセルアレイ100の全ての電荷蓄積部30、32の内でデータ0の書込対象となる電荷蓄積部は、図5に示す読出電流閾値Iref1よりも低い読出電流の分布B0に含まれる読出電流RDを送出し得る程度の電荷量の蓄積状態、つまり第2のデータ値であるデータ0の記憶状態となる。この際、分布B0は、全ての電荷蓄積部における蓄積電荷量の分布に対応している。よって、データ0書込ルーチンによれば、図5に示すように、分布B3の如き電荷量形成状態初期状態にある電荷蓄積部に対して、データ0に対応した量の電荷が注入され、この電荷蓄積部の蓄積電荷量が初期状態での蓄積電荷の最大量QMAXよりも大なる量分布B0に遷移するのである。かかるデータ0書込ルーチンS2の実行後、コントローラ108は、外部入力された4値の書込データの内で、第2番目に読出電流値が大となるデータ1の書き込み対象となる電荷蓄積部だけにこのデータ1を書き込ませる、データ1書込ルーチンを行うステップS3。図7は、データ1書込ルーチンを示すフローチャートである。図7において、先ず、コントローラ108は、先頭アドレスを示す1を、アクセスアドレスAとして内蔵レジスタに記憶させるステップS31。次に、コントローラ108は、アクセスアドレスAにて示されるアドレスに属し、且つデータ1の書込対象となるメモリセル10各々の電荷蓄積部30、32からデータを読み出すべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS32。ステップS32の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに走査電圧VSを印加する。また、ステップS32の実行により、カラムデコーダ106は、ビット線BL1~BLMの内でデータ1の書込対象となるメモリセル10が接続されている一対のビット線BLの内の一方に接地電位0ボルト、他方に読出設定電圧VRを印加する。これにより、アクセスアドレスAに属しており且つデータ1の書込対象となるメモリセル10の電荷蓄積部30、32から、ビット線BLを介して読出電流RDが送出される。次に、コントローラ108は、ビット線BLを介して送出された読出電流RDの全てが、図5に示す如き読出電流閾値Iref2よりも低いか否かを判定するステップS33。尚、読出電流閾値Iref2とは、蓄積された電荷量がデータ1に対応した量を満たすか否かを判定する為の上記第2閾値に対応した第2の読出電流閾値であり、上記した第1の読出電流閾値Iref1よりも大であり且つ上記最大読出電流閾値Iref4よりも小なる値を有する。かかるステップS33において、読出電流RDの全てが読出電流閾値Iref2より低い状態にはないと判定された場合、つまり読出電流閾値Iref2よりも高い読出電流RDが1つでも存在する場合、コントローラ108は、以下のステップS34を実行する。つまり、コントローラ108は、読出電流閾値Iref2よりも高い読出電流RDを送出したメモリセル10に対して、その電荷蓄積部をデータ1の記憶状態に設定する為の書込電圧VG1VG0>VG1を用いた書き込みを実施させるべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS34。ステップS34の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに書込電圧VG1を印加する。また、ステップS34の実行により、カラムデコーダ106は、ビット線BL1~BLMの内で、上記した読出電流閾値Iref2よりも高い読出電流RDが送出されたビット線BLに書込設定電圧VWを印加しつつ、その他のビット線BLには接地電位0ボルトを印加する。かかるステップS34により、読出電流閾値Iref2よりも高い読出電流RDを送出したメモリセル10の電荷蓄積部30、32には、書込電圧VG1の印加に応じた電荷が注入される。ステップS34の実行後、コントローラ108は、書込電圧VG1に電圧vを加算したものを新たな書込電圧VG1として設定するステップS35。かかるステップS35の実行後、コントローラ108は、上記ステップS32の実行に戻って前述した如き動作を繰り返し実行する。すなわち、データ1の書込対象となるメモリセル10の電荷蓄積部30、32から読み出された読出電流RDの全てが読出電流閾値Iref2よりも低い状態、つまりデータ1が記憶された状態になるまで、書込電圧VG1を段階的に増加させつつ電荷を電荷蓄積部30、32に注入するという、ベリファイ処理S32~S35を実行するのである。この間、上記ステップS33において、読出電流RDの全てが読出電流閾値Iref2よりも低いと判定された場合、コントローラ108は、アクセスアドレスAの内容を1だけインクリメントしたものを新たなアクセスアドレスAとして内蔵レジスタに上書き記憶するステップS36。かかるステップS36の実行後、コントローラ108は、アクセスアドレスAが、メモリセルアレイ100の全アドレスの内で書込データの最終データが書き込まれるべき最終アドレスよりも大であるか否かを判定するステップS37。ステップS37においてアクセスアドレスAが最終アドレス以下であると判定された場合、コントローラ108は、上記ステップS32の実行に戻り前述した如き動作を繰り返し実行する。一方、ステップS37においてアクセスアドレスAが最終アドレスより大であると判定された場合には、コントローラ108は、このデータ1書込ルーチンを終了し、図3に示す如きデータ書き込みプログラムの実行に戻る。上記したデータ1書込ルーチンによれば、メモリセルアレイ100の全電荷蓄積部30、32の内でデータ1の書込対象となる電荷蓄積部は、図5に示す読出電流閾値Iref2よりも低い読出電流の分布B1に含まれる読出電流RDを送出し得る程度の電荷量の蓄積状態、つまり第3のデータ値であるデータ1の記憶状態に設定される。この際、分布B1は、全ての電荷蓄積部における蓄積電荷量の分布に対応している。よって、データ1書込ルーチンによれば、図5に示すように、分布B3の如き電荷量形成状態初期状態にある電荷蓄積部に対して、データ1に対応した量の電荷が注入され、この電荷蓄積部の蓄積電荷量が初期状態での蓄積電荷の最大量QMAXよりも大なる量分布B1に遷移するのである。かかるデータ1書込ルーチンS3の実行後、コントローラ108は、外部入力された4値の書込データの内で、第3番目に読出電流値が大となるデータ2の書き込み対象となる電荷蓄積部だけにこのデータ2を書き込ませる、データ2書込ルーチンを行うステップS4。図8は、データ2書込ルーチンを示すフローチャートである。図8において、先ず、コントローラ108は、先頭アドレスを示す1を、アクセスアドレスAとして内蔵レジスタに記憶させるステップS41。次に、コントローラ108は、アクセスアドレスAにて示されるアドレスに属し、且つデータ2の書込対象となるメモリセル10各々の電荷蓄積部30、32からデータを読み出すべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS42。ステップS42の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに走査電圧VSを印加する。また、ステップS42の実行により、カラムデコーダ106は、ビット線BL1~BLMの内でデータ2の書込対象となるメモリセル10が接続されている一対のビット線BLの内の一方に接地電位0ボルト、他方に読出設定電圧VRを印加する。これにより、アクセスアドレスAに属しており且つデータ2の書込対象となるメモリセル10の電荷蓄積部30、32から、ビット線BLを介して読出電流RDが送出される。次に、コントローラ108は、ビット線BLを介して送出された読出電流RDの全てが、図5に示す如き読出電流閾値Iref3よりも低いか否かを判定するステップS43。尚、読出電流閾値Iref3とは、蓄積された電荷量がデータ2に対応した量を満たすか否かを判定する為の上記第3閾値に対応した第3の読出電流閾値であり、上記した第2の読出電流閾値Iref2よりも大であり且つ上記最大読出電流閾値Iref4よりも小なる値を有する。また、読出電流閾値Iref3に対応した蓄積電荷量は、初期電荷量範囲分布B3に相当の最大量よりも大である。かかるステップS43において、読出電流RDの全てが読出電流閾値Iref3より低い状態にはないと判定された場合、つまり読出電流閾値Iref3よりも高い読出電流RDが1つでも存在する場合、コントローラ108は、以下のステップS44を実行する。つまり、コントローラ108は、読出電流閾値Iref3よりも高い読出電流RDを送出したメモリセル10に対して、その電荷蓄積部をデータ2の記憶状態に設定する為の書込電圧VG2VG1>VG2を用いた書き込みを実施させるべき制御信号をロウデコーダ104及びカラムデコーダ106に供給するステップS44。ステップS44の実行により、ロウデコーダ104は、アクセスアドレスAに対応したワード線WLに書込電圧VG2を印加する。また、ステップS44の実行により、カラムデコーダ106は、ビット線BL1~BLMの内で、上記した読出電流閾値Iref3よりも高い読出電流RDが送出されたビット線BLに書込設定電圧VWを印加しつつ、その他のビット線BLには接地電位0ボルトを印加する。かかるステップS44により、読出電流閾値Iref3よりも高い読出電流RDを送出したメモリセル10の電荷蓄積部30、32には、書込電圧VG2の印加に応じた電荷が注入される。ステップS44の実行後、コントローラ108は、書込電圧VG2に電圧vを加算したものを新たな書込電圧VG2として設定するステップS45。かかるステップS45の実行後、コントローラ108は、上記ステップS42の実行に戻って前述した如き動作を繰り返し実行する。すなわち、データ2の書込対象となるメモリセル10の電荷蓄積部30、32から読み出された読出電流RDの全てが読出電流閾値Iref3よりも低い状態、つまりデータ2が記憶された状態になるまで、書込電圧VG2を段階的に増加させつつ電荷を電荷蓄積部30、32に注入するという、ベリファイ処理S42~S45を実行するのである。この間、上記ステップS43において、読出電流RDの全てが読出電流閾値Iref3よりも低いと判定された場合、コントローラ108は、アクセスアドレスAの内容を1だけインクリメントしたものを新たなアクセスアドレスAとして内蔵レジスタに上書き記憶するステップS46。かかるステップS46の実行後、コントローラ108は、アクセスアドレスAが、メモリセルアレイ100の全アドレスの内で書込データの最終データが書き込まれるべき最終アドレスよりも大であるか否かを判定するステップS47。ステップS47においてアクセスアドレスAが最終アドレス以下であると判定された場合、コントローラ108は、上記ステップS42の実行に戻り前述した如き動作を繰り返し実行する。一方、ステップS47においてアクセスアドレスAが最終アドレスより大であると判定された場合には、コントローラ108は、このデータ2書込ルーチンを終了し、図3に示す如きデータ書き込みプログラムを終了させる。上記したデータ2書込ルーチンによれば、メモリセルアレイ100の全電荷蓄積部30、32の内でデータ2の書込対象となる電荷蓄積部は、図5に示す読出電流閾値Iref3よりも低い読出電流の分布B2に含まれる読出電流RDを送出し得る程度の電荷量の蓄積状態、つまり第4のデータ値であるデータ2の記憶状態に設定される。この際、分布B2は、全ての電荷蓄積部における蓄積電荷量の分布に対応している。よって、データ2書込ルーチンによれば、図5に示すように、分布B3の如き電荷量形成状態初期状態にある電荷蓄積部に対して、データ2に対応した量の電荷が注入され、この電荷蓄積部の蓄積電荷量が初期状態での蓄積電荷の最大量QMAXよりも大なる量分布B2に遷移するのである。かかるデータ2書込ルーチンS3の実行後、コントローラ108は、図3に示すデータ書き込みプログラムの実行を終了する。以上の如く、図1に示す半導体不揮発性メモリにおいては、データ0~3からなる4値の書込データを書き込むにあたり、先ず、全てのメモリセル10の電荷蓄積部30、32に対して、以下の如き初期化書込S1を行うようにしている。すなわち、電荷蓄積部30、32の各々から読出電流RDを送出させS12、読出電流が最大読出電流閾値Iref4よりも大となる電荷蓄積部に、この読出電流が最大読出電流閾値を下回るまで電荷を注入するS13~S15。つまり、電荷蓄積部30、32の各々から読み出される読出電流が全て最大読出電流閾値Iref4を下回る状態になるまで、かかる状態に到っていない電荷蓄積部に対して電荷の注入が為されるのである。これにより、全ての電荷蓄積部における蓄積電荷量の最小量が上記初期最小電荷量QMINに底上げされる。よって、初期化書込S1実行前の段階において、電荷蓄積部における蓄積電荷量の分布が、例えば図5に示す如き初期最小電荷量QMINを含んだ比較的広い分布AP破線にて示すである場合、かかる初期化書込を実行することにより、この分布は、初期最小電荷量QMINを最小とする分布B3に遷移する。つまり、図5に示すように、初期状態での蓄積電荷量の最小量が上記初期最小電荷量QMINに底上げされるのである。要するに、初期化書込前に比べて、電荷蓄積部30、32各々に蓄積されている電荷の平均量が多くなると共に、電荷蓄積部30、32各々による初期状態での蓄積電荷量のバラツキ、及び電荷蓄積部30、32各々から読み出された読出電流値のバラツキが小さくなるのである。よって、かかる初期化書込の終了後、データ0~2の書き込みS2~S4を実施する場合、上記した初期化書込を実行しない場合に比して、ベリファイ処理S22~S25、S32~S35、又はS42~S45での書き込み回数を短縮させることが可能となる。例えば、図9に示す如く、初期化書込を実行しない場合において、その初期状態が図9に示す如き読出電流K1を送出し得る状態にあるメモリセル10に、データ0を書き込む場合、その電荷蓄積部に注入すべき電荷量は図9に示す如き電荷量Q1となる。一方、初期化書込を実行した場合、このメモリセル10の初期状態は、図9に示す如き読出電流K2を送出し得る状態になる。よって、かかるメモリセル10にデータ0を書き込む場合に注入すべき電荷量Q2は、上記電荷量Q1よりも小となる。従って、初期化書込を実行することによりベリファイ処理での書き込み回数を減らすことが可能となる。また、ベリファイ処理での書き込み回数が全体的に少なくなるので、電荷蓄積部30、32の内の一方の電荷蓄積部への書き込みに伴う、他方の電荷蓄積部の読出電流の低下が抑制されるようになる。よって、書込み回数の削減による書込み時間の短縮と共に、データの読み出し精度の低下を抑制することが可能となるのである。また、初期状態での読出電流の分布の幅が広い、つまり電荷蓄積部の各々に蓄積されている電荷量のバラツキが大きいと、電荷蓄積部30、32の内の一方の電荷蓄積部への書き込み終了後も、他方の電荷蓄積部への書き込みが継続する場合がある。この際、他方の電荷蓄積部への書き込みが継続するほど、書き込みが終了した一方の電荷蓄積部が送出し得る読出電流値が低下するという不具合が生じる。しかしながら、上記した初期化書込の実行によれば、全メモリセル10における初期状態での読出電流の分布の幅を、この初期化書込を実行しない場合に比して狭くすることができるので、上述した如き不具合を解消することが可能となる。尚、図4に示す初期化書込処理では、初期状態時において読出電流閾値Iref4よりも高い読出電流を送出し得る状態、つまり図5の斜線に示される領域に含まれる電荷蓄積部に電荷を注入書込することによりその読出電流を読出電流閾値Iref4未満に制限しているが、この電荷注入の対象となる電荷蓄積部の数を変更することも可能である。例えば、図4に示すステップS12による読出処理において、ワード線WLに印加する走査電圧VSの電圧値、つまり、メモリセル10各々のゲート電極に印加する電圧値を変更する。この際、走査電圧VSの電圧値を下げると、図10に示すように、読出電流閾値Iref4に対して相対的に、初期状態時における読出電流の分布APが低電流側にシフトする。よって、かかる分布APの内で読出電流閾値Iref4よりも高い読出電流を送出し得る状態にある電荷蓄積部、つまり図10の斜線に示される領域に含まれる電荷蓄積部が電荷注入の対象となる。従って、この際、電荷注入の対象となる電荷蓄積部の数が減ることになる。また、上記実施例では、単一のメモリセル10に4値データを2系統分4ビット書き込むことが可能な半導体不揮発性メモリを例にとって動作を説明したが、単一のメモリセルに2値又は3値のデータ、或いは5値以上のデータを2系統分書き込むことが可能な半導体不揮発性メモりにも同様に適用可能である。また、図3に示すデータ書き込みプログラムでは、初期化書込S1を実行してから、本来のデータ書込S2~S4を順次実行するようにしているが、各データ書込毎に、その直前に初期化書込S1を実行するようにしても良い。また、上記実施例でのベリファイ処理S12~S15、S22~S25、S32~S35、又はS42~S45では、読出制御によってビット線BLに送出された電流に基づき電荷量の判定を行っているが、この読出時におけるビット線BL上の電圧に基づいて電荷量の判定を行うようにしても良い。この際、上記した読出電流閾値Iref1~Iref4に代えて、夫々に対応した読出電圧閾値を用いる。尚、これら読出電流閾値又は読出電圧閾値を生成する構成としては、夫々の値に対応した独立電流電圧源、或いは少なくとも1つの可変電流電圧源を用いる。要するに、図4に示すステップS13において、電荷蓄積部に蓄積されている電荷に対応した電流をビット線に送出させた際にこのビット線BLに流れる電流又はビット線BL上の電圧に基づいて、初期最小電荷量QMINよりも小なる量の電荷が蓄積されている電荷蓄積部を判定するようにすれば良いのである。