(57)【特許請求の範囲】
【請求項１】
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込装置であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、を備え、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とするデータ書込装置。
【請求項２】
各記憶装置は、アドレスの供給を複数個に分けて受けるものであり、
前記書込手段は、記憶装置別に供給する各アドレスを構成する複数個の部分のうち、複数の記憶装置に共通している部分を、当該複数の記憶装置に一括して供給する、
ことを特徴とする請求項１に記載のデータ書込装置。
【請求項３】
各記憶装置は、データを記憶した後、当該データが正常に記憶された否かを判別して判別結果を前記アドレス決定手段に通知する手段を備えるものであり、
前記アドレス決定手段は、データが正常に記憶されていないことを示す判別結果を通知されたとき、当該判別結果を通知した記憶装置のメモリブロックのうちから、当該データを新たに記憶させる対象のメモリブロックを決定する手段を備え、
前記書込手段は、正常に記憶されなかったデータを、前記データを新たに記憶させる対象として決定された前記メモリブロックに記憶させる手段を備える、
ことを特徴とする請求項１又は２に記載のデータ書込装置。
【請求項４】
前記書込手段は、データを記憶させるべきメモリブロックが不足する記憶装置があるか否かを判別し、あると判別したとき、当該記憶装置のメモリブロックに当該データ以降のデータを記憶させるのを停止する手段を備える、
ことを特徴とする請求項１、２又は３に記載のデータ書込装置。
【請求項５】
前記記憶装置は、ＮＡＮＤ型フラッシュメモリより構成されている、
ことを特徴とする請求項１乃至４のいずれか１項に記載のデータ書込装置。
【請求項６】
前記記憶装置は、ＡＮＤ型フラッシュメモリより構成されている、
ことを特徴とする請求項１乃至４のいずれか１項に記載のデータ書込装置。
【請求項７】
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込方法であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定ステップと、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込ステップと、より構成されており、
前記アドレス決定ステップは、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新するステップと、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するステップと、より構成され、
前記書込ステップは、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定ステップを更に含む、
ことを特徴とするデータ書込制御方法。
【請求項８】
コンピュータを、
シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を供給する手段とを各々備える複数の記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、
して機能させるためのプログラムであって、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ書込装置及びデータ書込制御方法に関し、特に、複数の記憶装置に同一のデータを書き込むためのデータ書込装置及びデータ書込制御方法に関する。
【０００２】
【従来の技術】
小型の記憶装置として、フラッシュメモリが用いられている。フラッシュメモリには、大別してＮＯＲ型、ＮＡＮＤ型、ＡＮＤ型がある。
ＮＯＲ型のフラッシュメモリは、１バイト単位でのランダムアクセスが可能である。しかし、ＮＡＮＤ型やＡＮＤ型のフラッシュメモリに比べると、高価であり、集積度が低い。一方、ＮＡＮＤ型やＡＮＤ型のフラッシュメモリは、ＮＯＲ型のフラッシュメモリに比べると、安価で集積度が高いため、広く用いられている。ＮＡＮＤ型のフラッシュメモリとしては、例えば、東芝社製の「ＴＨ５８５１２ＦＴ」などがある。
【０００３】
【発明が解決しようとする課題】
しかし、ＮＡＮＤ型やＡＮＤ型のフラッシュメモリは、記憶領域を構成するメモリブロックのうちに含まれる不良メモリブロック（データを正常に記憶できないメモリブロック）の割合が無視できないほど大きい。従って、複数のＮＡＮＤ型（あるいはＡＮＤ型）フラッシュメモリに同一のデータを書き込むためにアドレシングを並列的に行っても、正常に書き込みができない場合が多い。
【０００４】
このため、複数のＮＡＮＤ型（あるいはＡＮＤ型）フラッシュメモリに同一のデータを書き込む場合は、フラッシュメモリに個別にチップイネーブル信号などの制御信号を供給するなどして、個々のフラッシュメモリに順次にデータの書き込みを行っていた。
【０００５】
しかし、この手法によった場合、データを書き込む対象のＮＡＮＤ型（あるいはＡＮＤ型）フラッシュメモリが大量であると、書き込みを完了するのに要する時間が極めて長くなって非効率的である。このため、所定のデータがプリインストールされたＮＡＮＤ型（あるいはＡＮＤ型）フラッシュメモリを含む製品を量産することは、従来極めて困難であった。
【０００６】
この発明は上記実状に鑑みてなされたもので、不良メモリブロックを含み得る複数の記憶装置に効率的に同一のデータを記憶させるためのデータ書込装置及びデータ書込制御方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、この発明の第１の観点にかかるデータ書込装置は、
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込装置であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、を備え、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
【０００８】
このようなデータ書込装置によれば、データを記憶させるメモリブロックが記憶装置毎に個別に決定された上、記憶させるべきデータは一括して供給される。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
なお、シリアルデータは１ビット毎に順次伝送されるデータには限られず、いわゆるバイトシリアル構成のデータ（１バイト毎に順次伝送されるデータ）等、複数ビット毎に順次伝送されるデータも含む。
【０００９】
各記憶装置は、アドレスの供給を複数個に分けて受けるものであってもよい。この場合、前記書込手段は、記憶装置別に供給する各アドレスを構成する複数個の部分のうち、複数の記憶装置に共通している部分を、当該複数の記憶装置に一括して供給するものであってもよい。
このような構成を有することにより、データを記憶させるメモリブロックのアドレスも、その共通部分が一括して複数の記憶装置に供給されるので、データを記憶させるために要する時間は更に短縮される。
【００１０】
各記憶装置は、データを記憶した後、当該データが正常に記憶された否かを判別して判別結果を前記アドレス決定手段に通知する手段を備えるものであってもよい。
この場合、前記アドレス決定手段は、データが正常に記憶されていないことを示す判別結果を通知されたとき、当該判別結果を通知した記憶装置のメモリブロックのうちから、当該データを新たに記憶させる対象のメモリブロックを決定する手段を備え、
前記書込手段は、正常に記憶されなかったデータを、前記データを新たに記憶させる対象として決定された前記メモリブロックに記憶させる手段を備えるものとすれば、たとえば後発的に不良のメモリブロックが生じた場合にも、記憶に失敗したデータが代わりのメモリブロックに確実に記憶される。
【００１１】
前記書込手段は、データを記憶させるべきメモリブロックが不足する記憶装置があるか否かを判別し、あると判別したとき、当該記憶装置のメモリブロックに当該データ以降のデータを記憶させるのを停止する手段を備えるものとすれば、データを記憶させるべきメモリブロックが存在しないにも係わらずデータの記憶を試みる無駄な処理が続くことが避けられ、データを記憶させる処理が更に効率的になる。
【００１２】
前記記憶装置は、具体的には、たとえばＮＡＮＤ型フラッシュメモリより構成されていてもよいし、また、ＡＮＤ型フラッシュメモリより構成されていてもよい。
【００１３】
また、この発明の第２の観点にかかるデータ書込制御方法は、
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込方法であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定ステップと、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込ステップと、より構成されており、
前記アドレス決定ステップは、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新するステップと、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するステップと、より構成され、
前記書込ステップは、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定ステップを更に含む、
ことを特徴とする。
【００１４】
このようなデータ書込制御方法によれば、データを記憶させるメモリブロックが記憶装置毎に個別に決定された上、記憶させるべきデータは一括して供給される。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
【００１５】
また、この発明の第３の観点にかかるプログラムは、
コンピュータを、
シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を供給する手段とを各々備える複数の記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、
して機能させるためのプログラムであって、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とする。
【００１６】
このようなプログラムを実行するコンピュータは、データを記憶させるメモリブロックを記憶装置毎に個別に決定した上、記憶させるべきデータを一括して供給する。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
【００１７】
【発明の実施の形態】
以下、この発明の実施の形態に係るデータ書込装置及びデータ書込制御方法を、フラッシュメモリ書込装置を例として説明する。
【００１８】
（第１の実施の形態）
図１は、この発明の第１の実施の形態にかかるフラッシュメモリ書込装置の構成を示す図である。図示するように、このフラッシュメモリ書込装置は、ＮＡＮＤフラッシュメモリコントローラＣＮと、バスＢ１と、アドレスラッチイネーブル信号線Ｂ２−１〜Ｂ２−ｎ（ｎは後述するＮＡＮＤフラッシュメモリの総数）と、コマンドラッチイネーブル信号線Ｂ３−１〜Ｂ３−ｎと、リードイネーブル信号線Ｂ４−１〜Ｂ４−ｎと、レディー信号線Ｂ５−１〜Ｂ５−ｎとより構成されている。バスＢ１は、データを書き込む対象であるｎ個のＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに共通に接続されるデータ／アドレスバス及びライトイネーブル信号線とより構成されている。
【００１９】
ＮＡＮＤフラッシュメモリコントローラＣＮは、バスＢ１を介して、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの後述するデータ／アドレスバス及びライトイネーブル端子に接続されている。
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、アドレスラッチイネーブル信号線Ｂ２−ｋ（ｋは１以上ｎ以下の任意の整数）を介して、ＮＡＮＤフラッシュメモリＮ−ｋのアドレスラッチイネーブル端子に接続されている。
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、コマンドラッチイネーブル信号線Ｂ３−ｋを介して、ＮＡＮＤフラッシュメモリＮ−ｋのコマンドラッチイネーブル端子に接続されている。
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、リードイネーブル信号線Ｂ４−ｋを介して、ＮＡＮＤフラッシュメモリＮ−ｋのリードイネーブル端子に接続されている。
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、レディー信号線Ｂ５−ｋを介して、ＮＡＮＤフラッシュメモリＮ−ｋのレディー端子に接続されている。
【００２０】
ＮＡＮＤフラッシュメモリコントローラＣＮは、制御部及び記憶部より構成されている。ＮＡＮＤフラッシュメモリコントローラＣＮの制御部は、ＣＰＵ（Central Processing Unit）等より構成されており、ＮＡＮＤフラッシュメモリコントローラＣＮの記憶部から、後述するデータ書き込みの処理を制御するプログラムを読み出して実行する。
【００２１】
ＮＡＮＤフラッシュメモリコントローラＣＮの記憶部は、ＰＲＯＭ（Programmable Read Only Memory）等の不揮発性記憶装置と、ＲＡＭ（Random Access Memory）等の揮発性記憶装置とより構成されている。ＮＡＮＤフラッシュメモリコントローラＣＮの記憶部が備える不揮発性記憶装置は、データ書き込みの処理を制御する上述のプログラムを予め記憶しており、ＮＡＮＤフラッシュメモリコントローラＣＮの記憶部の揮発性記憶装置は、ＮＡＮＤフラッシュメモリコントローラＣＮの制御部のワークエリアとして用いられる。
【００２２】
ＮＡＮＤフラッシュメモリＮ−ｋ（ｋは１以上ｎ以下の任意の整数）は、ＮＡＮＤ型のＥＥＰＲＯＭ（Electrically Erasable/Programmable ROM）より構成されている。
【００２３】
図２は、ＮＡＮＤフラッシュメモリＮ−ｋの構成を示すブロック図である。図示するように、ＮＡＮＤフラッシュメモリＮ−ｋは、データ／アドレスバスと、入出力コントロール回路と、コマンドレジスタと、制御回路と、ステータスレジスタと、動作ロジックコントロール回路と、メモリセルアレイと、データレジスタと、アドレスレジスタと、ローアドレスバッファと、ローアドレスデコーダと、カラムバッファと、カラムデコーダとから構成される。
【００２４】
データ／アドレスバスは、外部の回路に接続しており、複数ビットのビット幅を持っている。
入出力コントロール回路は、データ／アドレスバスを経由してコマンド、データ及びアドレスを外部の回路から受け取り、あるいは外部の回路へと送出する。コマンドレジスタは、入出力コントロール回路が外部の回路から受け取ったコマンドをビット列として保管する。
制御回路は、コマンドレジスタに保管されたコマンドにより指定される通りに、ＮＡＮＤフラッシュメモリＮ−ｋの内部の動作を制御する。
ステータスレジスタは、制御回路が行った制御の結果を外部の回路へ通知する。
動作ロジックコントロール回路は、外部の回路から供給される信号に応答して入出力コントロール回路及び制御回路の動作を制御する。なお、動作ロジックコントロール回路は、ライトイネーブル端子、アドレスラッチイネーブル端子、リードイネーブル端子、コマンドラッチイネーブル端子、レディー端子を備えている。
メモリセルアレイは、後述する複数のメモリセルより構成される。
データレジスタは、メモリセルに読み書きされる対象のデータを保管する。
アドレスレジスタは、メモリセルアレイに読み書きされる対象のデータの位置（アドレス）を記憶する。
ローアドレスバッファ、ローアドレスデコーダ、カラムバッファ及びカラムデコーダは、アドレスレジスタが記憶する複数ビットのアドレスを、メモリセルを特定する行及び列へと変換し、このメモリセルを選択する。
【００２５】
ＮＡＮＤフラッシュメモリＮ−ｋの各メモリセルは、１バイトの記憶容量を有する。これらのメモリセルは、論理的には、たとえば、図３に示すように、縦１３１０７２行、横５２８列のマトリクス状に配置されている。従って、ＮＡＮＤフラッシュメモリＮ−ｋは全体としてはほぼ６９．２メガバイトの記憶容量を有する。
【００２６】
メモリセルのマトリクスの各行は、図示するように、５２８バイトの記憶容量を有するページを構成する。各ページに含まれるメモリセルには、連続的に１から５２８までの番地が与えられている。
また、各ページは、先頭から３２ページ単位で１つのブロックを構成する。各ブロックは１６キロバイトの記憶容量を有し、記憶領域全体は、４０９６個のブロックから構成されている。各々のブロックに属するページには、連続的に１から３２までのページアドレスが与えられている。
【００２７】
また、各ページは、図示するように、先頭から５１２バイトの領域を占めるデータ領域と、末尾１６バイトを占める冗長部とから構成される。
読み書き対象のデータのアドレス（物理アドレス）は、例えば２６ビットのビット列より構成される。物理アドレスの下位９ビットは、このデータが読み書きされるメモリセルがある列の位置（列位置）を、残りの上位１７ビットは、このメモリセルがある行の位置（行位置）を示す。列位置の範囲は１〜５１２であり、行位置の範囲は１〜１３１０７２である。
【００２８】
行位置を示す１７ビットのうち例えば下位５ビットは、このメモリセルを含むブロック内でこのメモリセルが属するページの位置（ページ位置）を、残りの上位１２ビットは、このブロックの位置（ブロック位置）を示す。ページ位置の範囲は１〜３２であり、ブロック位置の範囲は１〜４０９６である。
【００２９】
フラッシュメモリＮ−ｋは、データを読み書きするとき、通常、列位置「０」を示すアドレスを記憶し、ページの先頭からデータを読み書きする。こうする結果、フラッシュメモリＮ−ｋは、データ領域の先頭からデータを読み書きする。データ領域には、ユーザが利用するユーザデータや、ＮＡＮＤフラッシュメモリＮ−ｋにアクセスする外部の装置が実行するデバイスドライバなど、任意のデータが格納される。
【００３０】
一方、各々のページの冗長部には、後述する処理に従い、当該ページのデータ領域に格納されているデータ（ユーザデータやデバイスドライバなど）の内容が破壊されていないことを確認するためのエラーチェックコードが格納され、更に、エラーフラグが格納される。
エラーフラグは各ブロックのすべてのページに格納される必要はなく、例えば各ブロックの先頭のページ（つまり、１ページ目）の冗長部のみに格納されてもよい。
【００３１】
エラーフラグは、このエラーフラグが格納されているブロックが、データを正常に格納可能なブロック（良品ブロック）であるか、良品ブロックでないブロックすなわち不良ブロックであって、ＮＡＮＤフラッシュメモリＮ−ｋの製造者等によって出荷前に不良と判断されたブロック（初期不良ブロック）であるか、不良ブロックであって、ＮＡＮＤフラッシュメモリＮ−ｋの使用中にデータの正常な格納ができないと判断されたブロック（後発不良ブロック）であるか、を示すデータである。
【００３２】
ただし、エラーフラグは、例えば特願２００１−０７６９４５で開示されているように、冗長部に格納された他のフラグと組み合わせて、データ領域にあるデータの属性を示すために用いてもよい。
【００３３】
なお、良品ブロックを示すエラーフラグの値は、データの消去を行わず単に上書きすることにより後発不良ブロックを表す値へと更新可能となるように選ばれている。
具体的には、例えばエラーフラグが１バイト（８ビット）のビット列より構成されるものとし、このビット列のうち値「１」を示すビットが７ビット以上あるときエラーフラグは良品ブロックを示すものとし、２ビット以上６ビット以下のときは後発不良ブロックを示すものとし、値「０」を示すビットが７ビット以上のときは初期不良ブロックを示すものとすればよい。このように定められていれば、冗長部のメモリセルの記憶値を消去せず「１」から「０」へ上書きすることにより、良品ブロックを示すエラーフラグを、後発不良ブロックを表すよう更新できる。
【００３４】
ＮＡＮＤフラッシュメモリＮ−ｋは、データの読み出しを指示されたとき、読み出しを指示された行のデータを、先頭からメモリセル１個分（すなわち、１バイト）ずつ５２８回に分けて読み出し、データ／アドレスバスから順次供給する機能を有する。なお、データの読み出しの指示は、たとえば、データ／アドレスバスにリードコマンドを供給し、次にデータ／アドレスバスに読み出し対象の先頭のメモリセルを指定する物理アドレスとなるアドレスビット列（ブロックアドレス、ページアドレス及び列アドレスを組み合わせたもの）を供給し、ＮＡＮＤフラッシュメモリＮ−ｋが指定された１ページ分（または、指定されたページのうち指定された列アドレス以降）のデータをデータレジスタに保管してレディー信号をアクティブレベルにしたことを確認後、リードイネーブル端子にリードイネーブル信号を供給することにより行う。
【００３５】
また、ＮＡＮＤフラッシュメモリＮ−ｋは、記憶内容の消去をブロック単位で行う。
ＮＡＮＤフラッシュメモリＮ−ｋは、ブロックの記憶内容を消去するよう指示する消去コマンドに続いて、記憶内容を消去する対象のブロックのアドレスを供給され、さらに消去実行コマンドを供給されると、当該ブロックに含まれるすべてのメモリセルの記憶内容をリセットする（具体的には、各メモリセルの記憶値を「１」とする）。
【００３６】
一方、ＮＡＮＤフラッシュメモリＮ−ｋは、データ／アドレスバスに所定のストアコマンドが供給されると、ライトイネーブル端子に供給される後述のＷＥ（Write Enable）信号と、アドレスラッチイネーブル端子に供給される後述のＡＬＥ（Address Latch Enable）信号との双方がいずれもアクティブレベルに達した時点を検知する。そして、検知した時点にデータ／アドレスバスに供給されているアドレスデータを、データ書き込み対象の物理アドレス（詳しくは、ブロックアドレス、ページアドレス、及びページ内の先頭バイトを表す列アドレスを組み合わせたアドレスビット列）の一部を表すビット列としてラッチする。そして、ビット列を４回ラッチすると、その後、ＡＬＥ信号が非アクティブレベルの状態でＷＥ信号がアクティブレベルに達する毎に、データ／アドレスバスに供給された書き込み対象のデータを、ＮＡＮＤフラッシュメモリＮ−ｋのデータレジスタに、１バイトずつ記憶する。
【００３７】
１ページ分の書き込み対象のデータがデータレジスタに記憶された後、データ／アドレスバスに所定のライトコマンド（又はプログラムコマンド）が供給されると、ＮＡＮＤフラッシュメモリＮ−ｋは、データレジスタに保管されている書き込み対象のデータを、ラッチした４個のビット列により表されるデータ書き込み対処の物理アドレスが示すメモリセル以降のメモリセルに記憶する。
【００３８】
（第１の実施の形態の動作）
次に、このフラッシュメモリ書込装置の処理を、図４を参照して説明する。図４は、データ書き込みの処理を示すフローチャートである。
【００３９】
このフラッシュメモリ書込装置がデータ書き込みの処理を開始すると、まず、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎにデータ読み出しを指示し、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの記憶領域の冗長部に格納されているエラーフラグを読み出す。そして、ＮＡＮＤフラッシュメモリコントローラＣＮが読み出したエラーフラグが示す値に基づき、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの記憶領域内のすべての良品ブロックのブロックアドレスを表すデータ（テーブル）を作成し、記憶する（図４、ステップＳ１）。
【００４０】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＤＡＴＡ＃の使用を宣言する（つまり、変数ＤＡＴＡ＃の値を格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保する）。そして、変数ＤＡＴＡ＃に値「０」を格納する（ステップＳ２）。
【００４１】
さらにＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに書き込む１ブロック分のデータを格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保し、図示しない記憶制御用の回路を制御することによって、１ブロック分の書き込みデータを、確保した記憶領域（データ保管領域）に収納する（ステップＳ３）。
【００４２】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＤＡＴＡ＃の値を１だけインクリメントする（ステップＳ４）。
次いで、ＮＡＮＤフラッシュメモリコントローラＣＮはテーブルを参照し、変数ＤＡＴＡ＃の現在の値ｄに基づいて、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのどのブロックにデータを書き込むかを決定する（ステップＳ５）。
【００４３】
ステップＳ５の処理を更に具体的に説明すると、ＮＡＮＤフラッシュメモリコントローラＣＮはまず、テーブルを参照し、ＮＡＮＤフラッシュメモリＮ−ｋ（ｋは１以上ｎ以下の任意の整数）について、ブロックアドレスがｄ番目に小さい良品ブロックのブロックアドレスを特定する。
【００４４】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＰＡＧＥ＃の使用を宣言する（つまり、変数ＰＡＧＥ＃の値を格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保する）。そして、変数ＰＡＧＥ＃に値「０」を格納する（ステップＳ６）。
【００４５】
さらにＮＡＮＤフラッシュメモリコントローラＣＮは、データ保管領域に収納されている１ブロック分のデータのうち、変数ＰＡＧＥ＃が示すページに格納されるべき部分の先頭が収納されているアドレスを特定する（ステップＳ７）。
【００４６】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、バスＢ１を介してＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのデータ／アドレスバスにストアコマンド（Ｃｏｍｓ）を送出することにより、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのデータレジスタへ書き込み対象のデータの１ページ分を格納する準備をさせる。
【００４７】
続いて、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＤＡＴＡ＃によって特定したブロックアドレス、変数ＰＡＧＥ＃によって特定したページアドレス、及びページ内の先頭を表す列アドレスを組み合わせたアドレスビット列（物理アドレス）を、４回に分けてＮＡＮＤフラッシュメモリＮ−ｋにラッチさせる。具体的には、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−ｋにアドレスをラッチさせるため、物理アドレスの一部を構成するビット列をデータ／アドレスバスに送出し、この状態で更に、アドレスラッチイネーブル信号線Ｂ２−ｋを介してＮＡＮＤフラッシュメモリＮ−ｋにアクティブレベルのＡＬＥ信号を供給し、また、バスＢ１を介して、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎにアクティブレベルのＷＥ信号を供給する。
【００４８】
ＮＡＮＤフラッシュメモリＮ−ｋは、自己に供給されるＡＬＥ信号及びＷＥ信号の両方がアクティブレベルとなった時点にデータ／アドレスバスに送出されているデータを、物理アドレスの一部を表すビット列としてラッチする。
【００４９】
すなわち、たとえば図５に示すように、ストアコマンド（図５で「Ｃｏｍｓ」として示すデータ）が送出された後、ＮＡＮＤフラッシュメモリＮ−１にラッチさせるべきビット列のひとつ（図５で「ａｄｄ（１）」として示すデータ）をラッチさせる場合は、ＷＥ信号及びアドレスラッチイネーブル信号線Ｂ２−１に供給されるＡＬＥ信号（図５で「ＡＬＥ信号（Ｂ２−１）」として示す信号）が両方アクティブレベル（図５で破線により示す信号レベル）に達する時点において、このビット列（「ａｄｄ（１）」）がバスＢ１に送出されているようにする。
【００５０】
同様に、ＮＡＮＤフラッシュメモリＮ−ｋにラッチさせるべきビット列のひとつ（図５で「ａｄｄ（ｋ）」として示すデータ）をラッチさせる場合は、ＷＥ信号及びアドレスラッチイネーブル信号線Ｂ２−ｋに供給されるＡＬＥ信号（図５で「ＡＬＥ信号（Ｂ２−ｋ）」として示す信号）が両方アクティブレベルに達する時点においてビット列「ａｄｄ（ｋ）」がバスＢ１に送出されているようにする。
【００５１】
なお、ＮＡＮＤフラッシュメモリコントローラＣＮは、複数のＮＡＮＤフラッシュメモリにラッチさせるビット列が共通する場合、なるべくこの共通するビット列が同一のタイミングでこれらのＮＡＮＤフラッシュメモリにラッチされるよう、各ビット列の送出のタイミングを調整するものとする。
【００５２】
具体的には、たとえば図５に示すように、ＮＡＮＤフラッシュメモリＮ−１及びＮ−ｎに共通にラッチさせるべきビット列（図５で「ａｄｄ（ｎ）」として示すデータ）をラッチさせる場合は、ＷＥ信号と、ＡＬＥ信号（Ｂ２−１）と、アドレスラッチイネーブル信号線Ｂ２−ｎに供給されるＡＬＥ信号（図５で「ＡＬＥ信号（Ｂ２−ｎ）」として示す信号）とがいずれもアクティブレベルに達する時点においてビット列「ａｄｄ（ｎ）」がバスＢ１に送出されているようにする。
【００５３】
より具体的に、例えば、書き込み対象のデータの物理アドレスが２６ビットのビット列からなり、このビット列の下位９ビットがデータを書き込む対象の先頭のメモリセルの列位置（１〜５１２）を示し、上位１７ビットがこのメモリセルの行位置（１〜１３１０７２）を示すとする。また、行位置を示す１７ビットのビット列の下位５ビットがこのメモリセルのページ位置（１〜３２）を示し、上位１２ビットがブロック位置（１〜４０９６）を示すとする。
そして、データを書き込む対象のメモリセルの列位置の下位８ビットがｎ個のＮＡＮＤフラッシュメモリすべてに共通しており、また、ブロック位置の上位１０ビットもＮＡＮＤフラッシュメモリすべてに共通しているとする。また、メモリセルの列位置の上位１ビット、ページ位置を示す５ビット及びブロック位置の下位２ビットについては、値が共通であるＮＡＮＤフラッシュメモリの組が３組あるとする。
この場合、ＮＡＮＤフラッシュメモリコントローラＣＮは、例えば、
（１）  第１回目は、データを書き込む対象のメモリセルの列位置の下位８ビットをｎ個のＮＡＮＤフラッシュメモリすべてに共通して送出し、
（２）  第２回目〜第４回目では、このメモリセルの列位置の上位１ビットと、ページ位置５ビットと、ブロック位置の下位２ビットとを、これらの値が共通であるＮＡＮＤフラッシュメモリの組毎に１回ずつ、合計３回にわたって送出し、
（３）  第５回目は、ブロック位置の上位１０ビットのうちの８ビットをすべてのＮＡＮＤフラッシュメモリに共通して送出し、
（４）  第６回目は、ブロック位置を示すビット列の残り２ビットを、すべてのＮＡＮＤフラッシュメモリに共通して送出する、
等の手法で、各ビット列の送出のタイミングを調整する。
【００５４】
このようなタイミングの調整を行うことにより、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに物理アドレスをラッチさせるために費やす時間を短縮する。
【００５５】
なお、ビット列の送出タイミングを説明するために上述した具体的な数値は、この実施の形態の理解を容易にするために例示したものであって、数値の組み合わせは上述したものには限定されない。
【００５６】
続いて、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎにデータを書き込むため、データ保管領域に収納されている１ブロック分のデータのうちアドレスが特定された先頭位置以降の１ページ分のデータを先頭から１バイトずつ順次データ／アドレスバスに送出し、１バイト送出する毎に、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎにアクティブレベルのＷＥ信号を供給する。この結果、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎは、各自のデータレジスタに１ページ分のデータを保管する。
【００５７】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、バスＢ１を介してＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのデータ／アドレスバスにライトコマンド（図５で「Ｃｏｍｗ」として示すデータ）を送出する。ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの制御回路は、ライトコマンドを受け取ると書き込み動作を開始し、レディー信号を非アクティブ状態にする。
この結果、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎは、各自が最も新しくラッチした物理アドレスが示すページのメモリセルに、データレジスタに保管している書き込み対象のデータ１ページ分を記憶する（ステップＳ８）。
【００５８】
ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの各制御回路は、１ページ分のデータをデータレジスタからメモリセルに書き込むとき、データの書き込みの成否を検査しながら書き込みを行う。具体的には、例えば、メモリセルの記憶内容とデータレジスタの記憶内容とを比較して、データが所定の時間内または所定回数以内の書き込み動作で正しくメモリセルにデータが記憶されたか否かを検査する。正しく記憶されなかった場合はデータ書き込み失敗（Ｆａｉｌ）を示し、正しく記憶された場合はデータ書き込み成功（Ｐａｓｓ）を示すステータスビットをステータスレジスタに格納する。そして、１ページ分のデータの書き込みを終了すると、レディー信号をアクティブ状態にする。
【００５９】
ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎすべてのレディー信号がアクティブ状態になったことを確認し、バスＢ１を介して、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのデータ／アドレスバスにステータスリードコマンドを送出する。
【００６０】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−ｋのリードイネーブル信号をアクティブ状態にして、ＮＡＮＤフラッシュメモリＮ−ｋのステータスレジスタを記憶内容を読み取る。
【００６１】
ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのすべてについて上述の動作によりステータスレジスタの記憶内容を読み取り、処理をステップＳ１０に移す（ステップＳ９）。
【００６２】
ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのすべてのステータスレジスタの記憶内容が、に書き込み成功（具体的には、例えば、ステータスレジスタ内の「Ｐａｓｓ」を表す特定のビットが所定のアクティブ状態になっている場合）であれば、処理をステップＳ１１に移す。
【００６３】
一方、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのいずれかのステータスレジスタの記憶内容が、に書き込み失敗（具体的には、例えば、ステータスレジスタ内の「Ｐａｓｓ」を表すビットが非アクティブ状態になっている場合）であれば、該当するＮＡＮＤフラッシュメモリのブロックが後発不良であるとして処理をステップＳ１３に移す（ステップＳ１０）。
【００６４】
ステップＳ１１で、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＰＡＧＥ＃の値に基づき、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに最後にデータを書き込んだページが、ブロックの末尾のページであるか否かを判別する。
【００６５】
具体的には、例えばＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの各々のブロックが３２個のページからなる場合、変数ＰＡＧＥ＃の値が「３１」未満であれば、現在書き込み対象であるブロックにまだデータが書き込まれていないページがあると判断し、処理をステップＳ１６に移す。一方、変数ＰＡＧＥ＃の値が「３１」であれば、最後にデータを書き込んだページが、現在書き込み対象であるブロックの末尾のページであると判断し、処理をステップＳ１２に移す。
【００６６】
ステップＳ１６で、ＮＡＮＤフラッシュメモリコントローラＣＮは、変数ＰＡＧＥ＃の値を１だけインクリメントすることにより次のページにデータを書き込む準備をして、処理をステップＳ７へ移す。
【００６７】
ステップＳ１２で、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに書き込むべきデータがすべて書き込まれたか否かを判別し、書き込まれていないと判別すれば処理をステップＳ３に戻し、書き込まれたと判別すれば、データ書き込みの処理を終了する。
【００６８】
ステップＳ１３で、ＮＡＮＤフラッシュメモリコントローラＣＮは、書き込み失敗となったＮＡＮＤフラッシュメモリ（以下では、このＮＡＮＤフラッシュメモリはＮＡＮＤフラッシュメモリＮ−ｋであるものとして説明する）のブロックを後発不良ブロックと特定する。また、ステップＳ８で最も新しく書き込みを行ったページを表す変数ＰＡＧＥ＃の値を特定する。
【００６９】
次に、ＮＡＮＤフラッシュメモリコントローラＣＮは、データが正常に書き込まれなかったＮＡＮＤフラッシュメモリＮ−ｋのページを含むブロック内の各ページの冗長部に、このブロックが後発不良ブロックであることを示すエラーフラグを書き込む。ただし、このブロックのすべてのページにエラーフラグを書き込む代わりに、このブロックの先頭のページの冗長部のみにエラーフラグを書き込むようにしてもよい。こうすることにより、このブロックが後発不良ブロックであることを示すようにする書き込みの時間を短縮することができる。
【００７０】
続いて、ＮＡＮＤフラッシュメモリコントローラＣＮは、データが正常に書き込まれなかったＮＡＮＤフラッシュメモリＮ−ｋのブロックを表すデータを除外する形で、テーブルを更新（あるいは再度作成）する（ステップＳ１４）。
【００７１】
続いて、ＮＡＮＤフラッシュメモリコントローラＣＮは、更新（又は再度作成）されたテーブルに基づいて、ＮＡＮＤフラッシュメモリＮ−ｋのｄ番目の良品ブロックとなったブロックを特定し、特定したブロックに、変数ＤＡＴＡ＃が示すブロックの先頭のページから変数ＰＡＧＥ＃が特定するページまでに書き込まれたデータを、ステップＳ８と同様の処理を行うことにより順次書き込む。
そして、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの残りのページへの書き込みを行うため処理をステップＳ１１へ移す（ステップＳ１５）。
【００７２】
以上説明したステップＳ１〜Ｓ１６の処理が行われる結果、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎには、互いに同一のデータが書き込まれる。
なお、ステップＳ１５で新たに選んだ良品ブロックへの書き込み処理のとき、ページへの書き込み後、ステップＳ９と同様にして書き込みの成否を検査し、書き込み失敗と判断したときはステップＳ１３以降の処理を再度行うようにしてもよい。こうすると、後発不良ブロックが連続して発生した場合にも代わりのブロックを特定することができ、より効率的な書き込みが行える。
【００７３】
なお、このフラッシュメモリ書込装置の構成は上述のものに限られない。
例えば、ＮＡＮＤフラッシュメモリＮ−ｋの各ブロックの大きさは上述の大きさに限られない。例えば、各ブロックは３２ページから構成される必要はなく、例えば、各ページの大きさの整数倍であればよい。また、１個の物理アドレスを構成するビット列をラッチする回数も上述の回数に限られない。
また、ＮＡＮＤフラッシュメモリＮ−ｋが備えるブロックの数や、１ページあたりのメモリセルの数や冗長部の数も任意である。
【００７４】
また、フラッシュメモリＮ−ｋの各ブロックは、更に複数のゾーンへと更に分類されていもよく、各ゾーンにゾーンアドレスが与えられていてもよい。この場合、データ書き込みの処理においてＮＡＮＤフラッシュメモリコントローラＣＮが作成（更新、再作成）するテーブルは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎの記憶領域内の良品ブロックのブロックアドレス及びゾーンアドレスを表すデータより構成されているようにすればよい。
【００７５】
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに書き込むデータを、操作者の操作に従って取得したり、あるいは、自己に装着された記録媒体から読み取ることにより取得したり、あるいは通信回線を介して外部のシステムから受信することにより取得するようにしてもよい
この場合、ＮＡＮＤフラッシュメモリコントローラＣＮは、たとえば、キーボードや、記録媒体からのデータの読み出しを行う記録媒体ドライバ（例えば、フレキシブルディスクドライブ装置やＭＯ（Magneto Optical disk）ドライブ装置）や、外部との通信を行うためのシリアルポート等からなる入力部を備えていればよい。
【００７６】
また、上述のステップＳ２で変数ＤＡＴＡ＃に代入する初期値は、必ずしも「０」である必要はなく、例えば、ＮＡＮＤフラッシュメモリＮ−ｋの末尾のブロックのブロックアドレスより１だけ大きい数を変数ＤＡＴＡ＃の初期値としてもよいし、あるいは、ＮＡＮＤフラッシュメモリＮ−ｋの末尾のブロックのブロックアドレス以下の任意のオフセット値を変数ＤＡＴＡ＃の初期値としてもよい。
【００７７】
また、変数ＤＡＴＡ＃をインクリメントする代わりにデクリメントする（具体的には、変数ＤＡＴＡ＃の値を１だけ減少させる）ことも差し支えない。
【００７８】
また、ＮＡＮＤフラッシュメモリコントローラＣＮは、たとえば上述のステップＳ１２においてテーブルを参照する等して、ＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎのうちに、データを記憶させることが可能なメモリブロックが残っていないものがあるか否かを判別し、あると判別したとき、データ書き込みの処理を中断するようにしてもよい。こうすることにより、無駄な処理が後続することが避けられる。なお、データ書き込みの処理を中断する対象のＮＡＮＤフラッシュメモリは、データを記憶させることが可能なメモリブロックが残っていないと案別されたものだけでもよいし、ｎ個のＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎすべてであってもよい。
【００７９】
また、１ページ分のデータを書き込むとき、上述した動作では、同一ページのデータ領域と冗長部とには、ステップＳ８及びＳ１５の処理各１回でデータを書き込んでいる。しかし、データ領域及び冗長部のそれぞれについて別個にステップＳ８〜Ｓ１０及びＳ１３〜Ｓ１５の処理を行うことにより、データを書き込むようにしてもよい。
こうすることにより、データ領域の書き込みの成否を検査した後、検査結果（後発不良ブロックであるか否か）に関係なく冗長部にデータの書き込みができる。この手法によれば、ＮＡＮＤフラッシュメモリの冗長部に特殊なフラグなどを書き込んで使用することが容易になる。
【００８０】
（第２の実施の形態）
次に、ＮＡＮＤフラッシュメモリへのデータの書き込みを行う、この発明の第２の実施の形態フラッシュメモリ書込装置を説明する。図６は、このフラッシュメモリ書込装置の構成を示す図である。
【００８１】
図６に示すように、このフラッシュメモリ書込装置は、ＮＡＮＤフラッシュメモリコントローラＣＮに代えてＮＡＮＤフラッシュメモリコントローラＣＡを備える点と、バスＢ１に代えてバスＢ６を備える点と、アドレスラッチイネーブル信号線Ｂ２−１〜Ｂ２−ｎに代えてライトイネーブル信号線Ｂ７−１〜Ｂ７−ｎを備える点と、コマンドラッチイネーブル信号線Ｂ３−１〜Ｂ３−ｎを備えていない代わりに、アドレスラッチイネーブル信号とコマンドラッチイネーブル信号とがＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎに共通なバス信号としてバスＢ６により伝送される点とを除き、図１に示す構成と実質的に同一である。
なお、ＮＡＮＤフラッシュメモリＡ−ｋの構成は、ＮＡＮＤフラッシュメモリＮ−ｋと実質的に同一である。
【００８２】
ＮＡＮＤフラッシュメモリコントローラＣＡは、バスＢ６を介して、データを書き込む対象であるｎ個のＮＡＮＤフラッシュメモリＡ−１〜Ａ−ｎのデータ／アドレスバスと、アドレスラッチイネーブル端子と、コマンドラッチイネーブル端子とに接続されているものとする。また、ＮＡＮＤフラッシュメモリコントローラＣＡは、リードイネーブル信号線Ｂ４−ｋを介して、ＮＡＮＤフラッシュメモリＡ−ｋのリードイネーブル端子に接続されており、また、レディー信号線Ｂ５−ｋを介して、ＮＡＮＤフラッシュメモリＡ−ｋのレディー端子に接続されており、また、ライトイネーブル信号線Ｂ７−ｋを介して、ＮＡＮＤフラッシュメモリＡ−ｋのライトイネーブル端子に接続されているものとする。
【００８３】
また、ＮＡＮＤフラッシュメモリＡ−ｋは、データ／アドレスバスにストアコマンド（Ｃｏｍｓ）が供給されると、ライトイネーブル端子に供給されるＷＥ信号がアクティブレベルに達した時点を検知し、検知した時点にデータ／アドレスバスに供給されているデータを、データ書き込み対象のブロックのブロックアドレスの一部を表すビット列としてラッチする。そして、ビット列を４回ラッチすると、その後ＷＥ信号がアクティブレベルに達する毎に、データ／アドレスバスに供給された書き込み対象のデータを、ラッチした４個のビット列により表されるブロックアドレスが示すブロックに、１バイトずつ記憶する。
【００８４】
ＮＡＮＤフラッシュメモリコントローラＣＡの物理的及び機能的構成は、実行するデータ書き込み処理が後述の通りである点を除き、ＮＡＮＤフラッシュメモリコントローラＣＮの構成と実質的に同一である。
【００８５】
（第２の実施の形態の動作）
図５のフラッシュメモリ書込装置のＮＡＮＤフラッシュメモリコントローラＣＡ及びＮＡＮＤフラッシュメモリＡ−１〜Ａ−ｎが行うデータ書き込みの処理は、図３に示す処理、すなわち図１の構成のＮＡＮＤフラッシュメモリコントローラＣＮ及びＮＡＮＤフラッシュメモリＮ−１〜Ｎ−ｎが行う処理と実質的に同一である。
【００８６】
ただし、ステップＳ８及びＳ１５でＮＡＮＤフラッシュメモリコントローラＣＡは、データを書き込むページの物理アドレスとして特定した物理アドレスをラッチさせるため、この物理アドレスの一部をなすビット列をデータ／アドレスバスに送出し、この状態で更に、バスＢ６にアドレスラッチイネーブル（ＡＬＥ）信号を送出すると共に、ライトイネーブル信号線Ｂ７−ｋを介してＮＡＮＤフラッシュメモリＡ−ｋにアクティブレベルのＷＥ信号を供給するものとする。
そして、ＮＡＮＤフラッシュメモリＡ−ｋは、自己に供給されるＡＬＥ信号とＷＥ信号とがいずれもアクティブレベルとなった時点にデータ／アドレスバスに送出されているデータを、物理アドレスの一部を表すビット列としてラッチするものとする。
【００８７】
すなわち、たとえば図７に示すように、ストアコマンド「Ｃｏｍｓ」が送出された後、ＮＡＮＤフラッシュメモリＡ−１にラッチさせるべきビット列のひとつ（図７で「ａｄｄ（１）」として示すデータ）をラッチさせる場合は、バスＢ６のアドレスラッチイネーブル（ＡＬＥ）信号がアクティブレベル（図７で破線により示す信号レベル）に保持された状態で、ライトイネーブル信号線Ｂ７−１に供給されるＷＥ信号（図７で「ＷＥ信号（Ｂ７−１）」として示す信号）がアクティブレベルに達する時点において、このビット列「ａｄｄ（１）」がバスＢ６にデータ／アドレス信号として送出されているようにする。
【００８８】
また、ＮＡＮＤフラッシュメモリＡ−ｋにラッチさせるべきビット列のひとつ（図７で「ａｄｄ（ｋ）」として示すデータ）をラッチさせる場合は、バスＢ６のＡＬＥ信号がアクティブレベルに保持された状態で、ライトイネーブル信号線Ｂ７−ｋに供給されるＷＥ信号（図７で「ＷＥ信号（Ｂ７−ｋ）」として示す信号）がアクティブレベルに達する時点において、ビット列「ａｄｄ（ｋ）」がバスＢ６にデータ／アドレス信号として送出されているようにする。
【００８９】
なお、ＮＡＮＤフラッシュメモリコントローラＣＡも、第１の実施の形態と同様、複数のＮＡＮＤフラッシュメモリにラッチさせるビット列が共通する場合は、なるべくこの共通するビット列が同一のタイミングでこれらのＮＡＮＤフラッシュメモリにラッチされるよう、各ビット列の送出のタイミングを調整するものとする。こうすることにより、ＮＡＮＤフラッシュメモリコントローラＣＡは、ＮＡＮＤフラッシュメモリＡ−１〜Ａ−ｎにブロックアドレスをラッチさせるために費やす時間を短縮する。
【００９０】
すなわち、たとえば図７に示すように、ＮＡＮＤフラッシュメモリＡ−１及びＡ−ｎに共通にラッチさせるべきビット列（図７で「ａｄｄ（ｎ）」として示すデータ）をラッチさせる場合は、バスＢ６のＡＬＥ信号がアクティブレベルに保持された状態で、しかも、ＷＥ信号（Ｂ７−１）と、ライトイネーブル信号線Ｂ７−ｎに供給されるＷＥ信号（図７で「ＷＥ信号（Ｂ７−ｎ）」として示す信号）とがいずれもアクティブレベルに達する時点において、ビット列「ａｄｄ（ｎ）」がバスＢ６にデータ／アドレス信号として送出されているようにする。
【００９１】
なお、このフラッシュメモリ書込装置の構成は上述のものに限られない。
例えば、ＮＡＮＤフラッシュメモリＡ−１〜Ａ−ｎは、ＡＮＤフラッシュメモリ（例えば、日立製作所製のＨＮ２９Ｗ１２８１１など）より構成されていてもよい。
【００９２】
また、チップイネーブル（ＣＥ）信号によってフラッシュメモリの入出力のイネーブル／ディスエーブルを制御する構成を有したフラッシュメモリがある。このようなフラッシュメモリにデータを書き込むため、ＡＬＥ信号の代わりにＣＥ信号を用いて物理アドレスのラッチを行わせるような構成を有していてもよい。
【００９３】
また、ＡＬＥ信号の供給を受けずＷＥ信号のみによって物理アドレスのラッチを制御する構成を有したフラッシュメモリがある。このようなフラッシュメモリにデータを書き込むため、ＡＬＥ信号を用いずＷＥ信号を用いて物理アドレスのラッチを行わせ、シリアルクロック信号を用いてデータの読み書きを制御する構成を有してもよい。
【００９４】
その他、本発明の実施の形態に係るフラッシュメモリ書込装置の構成は、本発明の主旨の範囲内で種々応用が可能である。
【００９５】
以上、この発明の実施の形態を説明したが、この発明のデータ書込装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。具体的には、たとえばＮＡＮＤフラッシュメモリが接続されたコンピュータに上述のＮＡＮＤフラッシュメモリコントローラＣＮの動作を実行するためのプログラムを格納した媒体（フレキシブルディスク、ＣＤ−ＲＯＭ等）から当該プログラムをインストールしたり、ＡＮＤフラッシュメモリが接続されたコンピュータに上述のＡＮＤフラッシュメモリコントローラＣＡの動作を実行するためのプログラムを格納した媒体から当該プログラムをインストールしたりすることにより、上述の処理を実行するフラッシュメモリ書込装置を構成することができる。
【００９６】
また、例えば、通信ネットワークの掲示板（ＢＢＳ）に当該プログラムを掲示し、これを通信回線を介して配信してもよく、また、当該プログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して当該プログラムを復元するようにしてもよい。
そして、当該プログラムを起動し、ＯＳの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【００９７】
なお、ＯＳが処理の一部を分担する場合、あるいは、ＯＳが本願発明の１つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【００９８】
【発明の効果】
以上説明したように、この発明によれば、不良メモリブロックを含み得る複数の記憶装置に効率的に同一のデータを記憶させるためのデータ書込装置及びデータ書込制御方法が実現される。
【図面の簡単な説明】
【図１】この発明の第１の実施の形態にかかるフラッシュメモリ書込装置の基本構成を示す図である。
【図２】フラッシュメモリの物理的構成を示すブロック図である。
【図３】フラッシュメモリの記憶領域の論理的構造を示す図である。
【図４】データ書き込みの処理を示すフローチャートである。
【図５】ＮＡＮＤフラッシュメモリコントローラがブロックアドレス及びデータを供給するタイミング示す図である。
【図６】この発明の第２の実施の形態にかかるフラッシュメモリ書込装置の基本構成を示す図である。
【図７】ＡＮＤフラッシュメモリコントローラがブロックアドレス及びデータを供給するタイミング示す図である。
【符号の説明】
ＣＮ、ＣＡ      ＮＡＮＤフラッシュメモリコントローラ
Ｎ−１〜Ｎ−ｎ、Ａ−１〜Ａ−ｎ      ＡＮＤフラッシュメモリ
Ｂ１、Ｂ６      バス
Ｂ２−１〜Ｂ２−ｎ      アドレスラッチイネーブル信号線
Ｂ３−１〜Ｂ３−ｎ      コマンドラッチイネーブル信号線
Ｂ４−１〜Ｂ４−ｎ      リードイネーブル信号線
Ｂ５−１〜Ｂ５−ｎ      レディー信号線
Ｂ７−１〜Ｂ７−ｎ      ライトイネーブル信号線
【図１】
0003822081.tif 000002
【図２】
0003822081.tif 000003
【図３】
0003822081.tif 000004
【図４】
0003822081.tif 000005
【図５】
0003822081.tif 000006
【図６】
0003822081.tif 000007
【図７】
0003822081.tif 000008