JP3822081B2 - データ書込装置、データ書込制御方法及びプログラム - Google Patents
データ書込装置、データ書込制御方法及びプログラム Download PDFInfo
- Publication number
- JP3822081B2 JP3822081B2 JP2001301789A JP2001301789A JP3822081B2 JP 3822081 B2 JP3822081 B2 JP 3822081B2 JP 2001301789 A JP2001301789 A JP 2001301789A JP 2001301789 A JP2001301789 A JP 2001301789A JP 3822081 B2 JP3822081 B2 JP 3822081B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- storing
- memory block
- storage device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/88—Masking faults in memories by using spares or by reconfiguring with partially good memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/88—Masking faults in memories by using spares or by reconfiguring with partially good memories
- G11C29/883—Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Numerical Control (AREA)
Description
【発明の属する技術分野】
この発明は、データ書込装置及びデータ書込制御方法に関し、特に、複数の記憶装置に同一のデータを書き込むためのデータ書込装置及びデータ書込制御方法に関する。
【0002】
【従来の技術】
小型の記憶装置として、フラッシュメモリが用いられている。フラッシュメモリには、大別してNOR型、NAND型、AND型がある。
NOR型のフラッシュメモリは、1バイト単位でのランダムアクセスが可能である。しかし、NAND型やAND型のフラッシュメモリに比べると、高価であり、集積度が低い。一方、NAND型やAND型のフラッシュメモリは、NOR型のフラッシュメモリに比べると、安価で集積度が高いため、広く用いられている。NAND型のフラッシュメモリとしては、例えば、東芝社製の「TH58512FT」などがある。
【0003】
【発明が解決しようとする課題】
しかし、NAND型やAND型のフラッシュメモリは、記憶領域を構成するメモリブロックのうちに含まれる不良メモリブロック(データを正常に記憶できないメモリブロック)の割合が無視できないほど大きい。従って、複数のNAND型(あるいはAND型)フラッシュメモリに同一のデータを書き込むためにアドレシングを並列的に行っても、正常に書き込みができない場合が多い。
【0004】
このため、複数のNAND型(あるいはAND型)フラッシュメモリに同一のデータを書き込む場合は、フラッシュメモリに個別にチップイネーブル信号などの制御信号を供給するなどして、個々のフラッシュメモリに順次にデータの書き込みを行っていた。
【0005】
しかし、この手法によった場合、データを書き込む対象のNAND型(あるいはAND型)フラッシュメモリが大量であると、書き込みを完了するのに要する時間が極めて長くなって非効率的である。このため、所定のデータがプリインストールされたNAND型(あるいはAND型)フラッシュメモリを含む製品を量産することは、従来極めて困難であった。
【0006】
この発明は上記実状に鑑みてなされたもので、不良メモリブロックを含み得る複数の記憶装置に効率的に同一のデータを記憶させるためのデータ書込装置及びデータ書込制御方法を提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するため、この発明の第1の観点にかかるデータ書込装置は、
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込装置であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、を備え、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
【0008】
このようなデータ書込装置によれば、データを記憶させるメモリブロックが記憶装置毎に個別に決定された上、記憶させるべきデータは一括して供給される。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
なお、シリアルデータは1ビット毎に順次伝送されるデータには限られず、いわゆるバイトシリアル構成のデータ(1バイト毎に順次伝送されるデータ)等、複数ビット毎に順次伝送されるデータも含む。
【0009】
各記憶装置は、アドレスの供給を複数個に分けて受けるものであってもよい。この場合、前記書込手段は、記憶装置別に供給する各アドレスを構成する複数個の部分のうち、複数の記憶装置に共通している部分を、当該複数の記憶装置に一括して供給するものであってもよい。
このような構成を有することにより、データを記憶させるメモリブロックのアドレスも、その共通部分が一括して複数の記憶装置に供給されるので、データを記憶させるために要する時間は更に短縮される。
【0010】
各記憶装置は、データを記憶した後、当該データが正常に記憶された否かを判別して判別結果を前記アドレス決定手段に通知する手段を備えるものであってもよい。
この場合、前記アドレス決定手段は、データが正常に記憶されていないことを示す判別結果を通知されたとき、当該判別結果を通知した記憶装置のメモリブロックのうちから、当該データを新たに記憶させる対象のメモリブロックを決定する手段を備え、
前記書込手段は、正常に記憶されなかったデータを、前記データを新たに記憶させる対象として決定された前記メモリブロックに記憶させる手段を備えるものとすれば、たとえば後発的に不良のメモリブロックが生じた場合にも、記憶に失敗したデータが代わりのメモリブロックに確実に記憶される。
【0011】
前記書込手段は、データを記憶させるべきメモリブロックが不足する記憶装置があるか否かを判別し、あると判別したとき、当該記憶装置のメモリブロックに当該データ以降のデータを記憶させるのを停止する手段を備えるものとすれば、データを記憶させるべきメモリブロックが存在しないにも係わらずデータの記憶を試みる無駄な処理が続くことが避けられ、データを記憶させる処理が更に効率的になる。
【0012】
前記記憶装置は、具体的には、たとえばNAND型フラッシュメモリより構成されていてもよいし、また、AND型フラッシュメモリより構成されていてもよい。
【0013】
また、この発明の第2の観点にかかるデータ書込制御方法は、
アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込方法であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定ステップと、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込ステップと、より構成されており、
前記アドレス決定ステップは、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新するステップと、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するステップと、より構成され、
前記書込ステップは、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定ステップを更に含む、
ことを特徴とする。
【0014】
このようなデータ書込制御方法によれば、データを記憶させるメモリブロックが記憶装置毎に個別に決定された上、記憶させるべきデータは一括して供給される。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
【0015】
また、この発明の第3の観点にかかるプログラムは、
コンピュータを、
シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を供給する手段とを各々備える複数の記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、
して機能させるためのプログラムであって、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とする。
【0016】
このようなプログラムを実行するコンピュータは、データを記憶させるメモリブロックを記憶装置毎に個別に決定した上、記憶させるべきデータを一括して供給する。従って、これらの記憶装置は、不良ブロックを含んでいても、効率的に同一のデータを記憶する。
【0017】
【発明の実施の形態】
以下、この発明の実施の形態に係るデータ書込装置及びデータ書込制御方法を、フラッシュメモリ書込装置を例として説明する。
【0018】
(第1の実施の形態)
図1は、この発明の第1の実施の形態にかかるフラッシュメモリ書込装置の構成を示す図である。図示するように、このフラッシュメモリ書込装置は、NANDフラッシュメモリコントローラCNと、バスB1と、アドレスラッチイネーブル信号線B2−1〜B2−n(nは後述するNANDフラッシュメモリの総数)と、コマンドラッチイネーブル信号線B3−1〜B3−nと、リードイネーブル信号線B4−1〜B4−nと、レディー信号線B5−1〜B5−nとより構成されている。バスB1は、データを書き込む対象であるn個のNANDフラッシュメモリN−1〜N−nに共通に接続されるデータ/アドレスバス及びライトイネーブル信号線とより構成されている。
【0019】
NANDフラッシュメモリコントローラCNは、バスB1を介して、NANDフラッシュメモリN−1〜N−nの後述するデータ/アドレスバス及びライトイネーブル端子に接続されている。
また、NANDフラッシュメモリコントローラCNは、アドレスラッチイネーブル信号線B2−k(kは1以上n以下の任意の整数)を介して、NANDフラッシュメモリN−kのアドレスラッチイネーブル端子に接続されている。
また、NANDフラッシュメモリコントローラCNは、コマンドラッチイネーブル信号線B3−kを介して、NANDフラッシュメモリN−kのコマンドラッチイネーブル端子に接続されている。
また、NANDフラッシュメモリコントローラCNは、リードイネーブル信号線B4−kを介して、NANDフラッシュメモリN−kのリードイネーブル端子に接続されている。
また、NANDフラッシュメモリコントローラCNは、レディー信号線B5−kを介して、NANDフラッシュメモリN−kのレディー端子に接続されている。
【0020】
NANDフラッシュメモリコントローラCNは、制御部及び記憶部より構成されている。NANDフラッシュメモリコントローラCNの制御部は、CPU(Central Processing Unit)等より構成されており、NANDフラッシュメモリコントローラCNの記憶部から、後述するデータ書き込みの処理を制御するプログラムを読み出して実行する。
【0021】
NANDフラッシュメモリコントローラCNの記憶部は、PROM(Programmable Read Only Memory)等の不揮発性記憶装置と、RAM(Random Access Memory)等の揮発性記憶装置とより構成されている。NANDフラッシュメモリコントローラCNの記憶部が備える不揮発性記憶装置は、データ書き込みの処理を制御する上述のプログラムを予め記憶しており、NANDフラッシュメモリコントローラCNの記憶部の揮発性記憶装置は、NANDフラッシュメモリコントローラCNの制御部のワークエリアとして用いられる。
【0022】
NANDフラッシュメモリN−k(kは1以上n以下の任意の整数)は、NAND型のEEPROM(Electrically Erasable/Programmable ROM)より構成されている。
【0023】
図2は、NANDフラッシュメモリN−kの構成を示すブロック図である。図示するように、NANDフラッシュメモリN−kは、データ/アドレスバスと、入出力コントロール回路と、コマンドレジスタと、制御回路と、ステータスレジスタと、動作ロジックコントロール回路と、メモリセルアレイと、データレジスタと、アドレスレジスタと、ローアドレスバッファと、ローアドレスデコーダと、カラムバッファと、カラムデコーダとから構成される。
【0024】
データ/アドレスバスは、外部の回路に接続しており、複数ビットのビット幅を持っている。
入出力コントロール回路は、データ/アドレスバスを経由してコマンド、データ及びアドレスを外部の回路から受け取り、あるいは外部の回路へと送出する。コマンドレジスタは、入出力コントロール回路が外部の回路から受け取ったコマンドをビット列として保管する。
制御回路は、コマンドレジスタに保管されたコマンドにより指定される通りに、NANDフラッシュメモリN−kの内部の動作を制御する。
ステータスレジスタは、制御回路が行った制御の結果を外部の回路へ通知する。
動作ロジックコントロール回路は、外部の回路から供給される信号に応答して入出力コントロール回路及び制御回路の動作を制御する。なお、動作ロジックコントロール回路は、ライトイネーブル端子、アドレスラッチイネーブル端子、リードイネーブル端子、コマンドラッチイネーブル端子、レディー端子を備えている。
メモリセルアレイは、後述する複数のメモリセルより構成される。
データレジスタは、メモリセルに読み書きされる対象のデータを保管する。
アドレスレジスタは、メモリセルアレイに読み書きされる対象のデータの位置(アドレス)を記憶する。
ローアドレスバッファ、ローアドレスデコーダ、カラムバッファ及びカラムデコーダは、アドレスレジスタが記憶する複数ビットのアドレスを、メモリセルを特定する行及び列へと変換し、このメモリセルを選択する。
【0025】
NANDフラッシュメモリN−kの各メモリセルは、1バイトの記憶容量を有する。これらのメモリセルは、論理的には、たとえば、図3に示すように、縦131072行、横528列のマトリクス状に配置されている。従って、NANDフラッシュメモリN−kは全体としてはほぼ69.2メガバイトの記憶容量を有する。
【0026】
メモリセルのマトリクスの各行は、図示するように、528バイトの記憶容量を有するページを構成する。各ページに含まれるメモリセルには、連続的に1から528までの番地が与えられている。
また、各ページは、先頭から32ページ単位で1つのブロックを構成する。各ブロックは16キロバイトの記憶容量を有し、記憶領域全体は、4096個のブロックから構成されている。各々のブロックに属するページには、連続的に1から32までのページアドレスが与えられている。
【0027】
また、各ページは、図示するように、先頭から512バイトの領域を占めるデータ領域と、末尾16バイトを占める冗長部とから構成される。
読み書き対象のデータのアドレス(物理アドレス)は、例えば26ビットのビット列より構成される。物理アドレスの下位9ビットは、このデータが読み書きされるメモリセルがある列の位置(列位置)を、残りの上位17ビットは、このメモリセルがある行の位置(行位置)を示す。列位置の範囲は1〜512であり、行位置の範囲は1〜131072である。
【0028】
行位置を示す17ビットのうち例えば下位5ビットは、このメモリセルを含むブロック内でこのメモリセルが属するページの位置(ページ位置)を、残りの上位12ビットは、このブロックの位置(ブロック位置)を示す。ページ位置の範囲は1〜32であり、ブロック位置の範囲は1〜4096である。
【0029】
フラッシュメモリN−kは、データを読み書きするとき、通常、列位置「0」を示すアドレスを記憶し、ページの先頭からデータを読み書きする。こうする結果、フラッシュメモリN−kは、データ領域の先頭からデータを読み書きする。データ領域には、ユーザが利用するユーザデータや、NANDフラッシュメモリN−kにアクセスする外部の装置が実行するデバイスドライバなど、任意のデータが格納される。
【0030】
一方、各々のページの冗長部には、後述する処理に従い、当該ページのデータ領域に格納されているデータ(ユーザデータやデバイスドライバなど)の内容が破壊されていないことを確認するためのエラーチェックコードが格納され、更に、エラーフラグが格納される。
エラーフラグは各ブロックのすべてのページに格納される必要はなく、例えば各ブロックの先頭のページ(つまり、1ページ目)の冗長部のみに格納されてもよい。
【0031】
エラーフラグは、このエラーフラグが格納されているブロックが、データを正常に格納可能なブロック(良品ブロック)であるか、良品ブロックでないブロックすなわち不良ブロックであって、NANDフラッシュメモリN−kの製造者等によって出荷前に不良と判断されたブロック(初期不良ブロック)であるか、不良ブロックであって、NANDフラッシュメモリN−kの使用中にデータの正常な格納ができないと判断されたブロック(後発不良ブロック)であるか、を示すデータである。
【0032】
ただし、エラーフラグは、例えば特願2001−076945で開示されているように、冗長部に格納された他のフラグと組み合わせて、データ領域にあるデータの属性を示すために用いてもよい。
【0033】
なお、良品ブロックを示すエラーフラグの値は、データの消去を行わず単に上書きすることにより後発不良ブロックを表す値へと更新可能となるように選ばれている。
具体的には、例えばエラーフラグが1バイト(8ビット)のビット列より構成されるものとし、このビット列のうち値「1」を示すビットが7ビット以上あるときエラーフラグは良品ブロックを示すものとし、2ビット以上6ビット以下のときは後発不良ブロックを示すものとし、値「0」を示すビットが7ビット以上のときは初期不良ブロックを示すものとすればよい。このように定められていれば、冗長部のメモリセルの記憶値を消去せず「1」から「0」へ上書きすることにより、良品ブロックを示すエラーフラグを、後発不良ブロックを表すよう更新できる。
【0034】
NANDフラッシュメモリN−kは、データの読み出しを指示されたとき、読み出しを指示された行のデータを、先頭からメモリセル1個分(すなわち、1バイト)ずつ528回に分けて読み出し、データ/アドレスバスから順次供給する機能を有する。なお、データの読み出しの指示は、たとえば、データ/アドレスバスにリードコマンドを供給し、次にデータ/アドレスバスに読み出し対象の先頭のメモリセルを指定する物理アドレスとなるアドレスビット列(ブロックアドレス、ページアドレス及び列アドレスを組み合わせたもの)を供給し、NANDフラッシュメモリN−kが指定された1ページ分(または、指定されたページのうち指定された列アドレス以降)のデータをデータレジスタに保管してレディー信号をアクティブレベルにしたことを確認後、リードイネーブル端子にリードイネーブル信号を供給することにより行う。
【0035】
また、NANDフラッシュメモリN−kは、記憶内容の消去をブロック単位で行う。
NANDフラッシュメモリN−kは、ブロックの記憶内容を消去するよう指示する消去コマンドに続いて、記憶内容を消去する対象のブロックのアドレスを供給され、さらに消去実行コマンドを供給されると、当該ブロックに含まれるすべてのメモリセルの記憶内容をリセットする(具体的には、各メモリセルの記憶値を「1」とする)。
【0036】
一方、NANDフラッシュメモリN−kは、データ/アドレスバスに所定のストアコマンドが供給されると、ライトイネーブル端子に供給される後述のWE(Write Enable)信号と、アドレスラッチイネーブル端子に供給される後述のALE(Address Latch Enable)信号との双方がいずれもアクティブレベルに達した時点を検知する。そして、検知した時点にデータ/アドレスバスに供給されているアドレスデータを、データ書き込み対象の物理アドレス(詳しくは、ブロックアドレス、ページアドレス、及びページ内の先頭バイトを表す列アドレスを組み合わせたアドレスビット列)の一部を表すビット列としてラッチする。そして、ビット列を4回ラッチすると、その後、ALE信号が非アクティブレベルの状態でWE信号がアクティブレベルに達する毎に、データ/アドレスバスに供給された書き込み対象のデータを、NANDフラッシュメモリN−kのデータレジスタに、1バイトずつ記憶する。
【0037】
1ページ分の書き込み対象のデータがデータレジスタに記憶された後、データ/アドレスバスに所定のライトコマンド(又はプログラムコマンド)が供給されると、NANDフラッシュメモリN−kは、データレジスタに保管されている書き込み対象のデータを、ラッチした4個のビット列により表されるデータ書き込み対処の物理アドレスが示すメモリセル以降のメモリセルに記憶する。
【0038】
(第1の実施の形態の動作)
次に、このフラッシュメモリ書込装置の処理を、図4を参照して説明する。図4は、データ書き込みの処理を示すフローチャートである。
【0039】
このフラッシュメモリ書込装置がデータ書き込みの処理を開始すると、まず、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nにデータ読み出しを指示し、NANDフラッシュメモリN−1〜N−nの記憶領域の冗長部に格納されているエラーフラグを読み出す。そして、NANDフラッシュメモリコントローラCNが読み出したエラーフラグが示す値に基づき、NANDフラッシュメモリN−1〜N−nの記憶領域内のすべての良品ブロックのブロックアドレスを表すデータ(テーブル)を作成し、記憶する(図4、ステップS1)。
【0040】
次に、NANDフラッシュメモリコントローラCNは、変数DATA#の使用を宣言する(つまり、変数DATA#の値を格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保する)。そして、変数DATA#に値「0」を格納する(ステップS2)。
【0041】
さらにNANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nに書き込む1ブロック分のデータを格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保し、図示しない記憶制御用の回路を制御することによって、1ブロック分の書き込みデータを、確保した記憶領域(データ保管領域)に収納する(ステップS3)。
【0042】
次に、NANDフラッシュメモリコントローラCNは、変数DATA#の値を1だけインクリメントする(ステップS4)。
次いで、NANDフラッシュメモリコントローラCNはテーブルを参照し、変数DATA#の現在の値dに基づいて、NANDフラッシュメモリN−1〜N−nのどのブロックにデータを書き込むかを決定する(ステップS5)。
【0043】
ステップS5の処理を更に具体的に説明すると、NANDフラッシュメモリコントローラCNはまず、テーブルを参照し、NANDフラッシュメモリN−k(kは1以上n以下の任意の整数)について、ブロックアドレスがd番目に小さい良品ブロックのブロックアドレスを特定する。
【0044】
次に、NANDフラッシュメモリコントローラCNは、変数PAGE#の使用を宣言する(つまり、変数PAGE#の値を格納するための記憶領域を自己の記憶部が備える揮発性記憶装置の記憶領域内に確保する)。そして、変数PAGE#に値「0」を格納する(ステップS6)。
【0045】
さらにNANDフラッシュメモリコントローラCNは、データ保管領域に収納されている1ブロック分のデータのうち、変数PAGE#が示すページに格納されるべき部分の先頭が収納されているアドレスを特定する(ステップS7)。
【0046】
次に、NANDフラッシュメモリコントローラCNは、バスB1を介してNANDフラッシュメモリN−1〜N−nのデータ/アドレスバスにストアコマンド(Coms)を送出することにより、NANDフラッシュメモリN−1〜N−nに、NANDフラッシュメモリN−1〜N−nのデータレジスタへ書き込み対象のデータの1ページ分を格納する準備をさせる。
【0047】
続いて、NANDフラッシュメモリコントローラCNは、変数DATA#によって特定したブロックアドレス、変数PAGE#によって特定したページアドレス、及びページ内の先頭を表す列アドレスを組み合わせたアドレスビット列(物理アドレス)を、4回に分けてNANDフラッシュメモリN−kにラッチさせる。具体的には、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−kにアドレスをラッチさせるため、物理アドレスの一部を構成するビット列をデータ/アドレスバスに送出し、この状態で更に、アドレスラッチイネーブル信号線B2−kを介してNANDフラッシュメモリN−kにアクティブレベルのALE信号を供給し、また、バスB1を介して、NANDフラッシュメモリN−1〜N−nにアクティブレベルのWE信号を供給する。
【0048】
NANDフラッシュメモリN−kは、自己に供給されるALE信号及びWE信号の両方がアクティブレベルとなった時点にデータ/アドレスバスに送出されているデータを、物理アドレスの一部を表すビット列としてラッチする。
【0049】
すなわち、たとえば図5に示すように、ストアコマンド(図5で「Coms」として示すデータ)が送出された後、NANDフラッシュメモリN−1にラッチさせるべきビット列のひとつ(図5で「add(1)」として示すデータ)をラッチさせる場合は、WE信号及びアドレスラッチイネーブル信号線B2−1に供給されるALE信号(図5で「ALE信号(B2−1)」として示す信号)が両方アクティブレベル(図5で破線により示す信号レベル)に達する時点において、このビット列(「add(1)」)がバスB1に送出されているようにする。
【0050】
同様に、NANDフラッシュメモリN−kにラッチさせるべきビット列のひとつ(図5で「add(k)」として示すデータ)をラッチさせる場合は、WE信号及びアドレスラッチイネーブル信号線B2−kに供給されるALE信号(図5で「ALE信号(B2−k)」として示す信号)が両方アクティブレベルに達する時点においてビット列「add(k)」がバスB1に送出されているようにする。
【0051】
なお、NANDフラッシュメモリコントローラCNは、複数のNANDフラッシュメモリにラッチさせるビット列が共通する場合、なるべくこの共通するビット列が同一のタイミングでこれらのNANDフラッシュメモリにラッチされるよう、各ビット列の送出のタイミングを調整するものとする。
【0052】
具体的には、たとえば図5に示すように、NANDフラッシュメモリN−1及びN−nに共通にラッチさせるべきビット列(図5で「add(n)」として示すデータ)をラッチさせる場合は、WE信号と、ALE信号(B2−1)と、アドレスラッチイネーブル信号線B2−nに供給されるALE信号(図5で「ALE信号(B2−n)」として示す信号)とがいずれもアクティブレベルに達する時点においてビット列「add(n)」がバスB1に送出されているようにする。
【0053】
より具体的に、例えば、書き込み対象のデータの物理アドレスが26ビットのビット列からなり、このビット列の下位9ビットがデータを書き込む対象の先頭のメモリセルの列位置(1〜512)を示し、上位17ビットがこのメモリセルの行位置(1〜131072)を示すとする。また、行位置を示す17ビットのビット列の下位5ビットがこのメモリセルのページ位置(1〜32)を示し、上位12ビットがブロック位置(1〜4096)を示すとする。
そして、データを書き込む対象のメモリセルの列位置の下位8ビットがn個のNANDフラッシュメモリすべてに共通しており、また、ブロック位置の上位10ビットもNANDフラッシュメモリすべてに共通しているとする。また、メモリセルの列位置の上位1ビット、ページ位置を示す5ビット及びブロック位置の下位2ビットについては、値が共通であるNANDフラッシュメモリの組が3組あるとする。
この場合、NANDフラッシュメモリコントローラCNは、例えば、
(1) 第1回目は、データを書き込む対象のメモリセルの列位置の下位8ビットをn個のNANDフラッシュメモリすべてに共通して送出し、
(2) 第2回目〜第4回目では、このメモリセルの列位置の上位1ビットと、ページ位置5ビットと、ブロック位置の下位2ビットとを、これらの値が共通であるNANDフラッシュメモリの組毎に1回ずつ、合計3回にわたって送出し、
(3) 第5回目は、ブロック位置の上位10ビットのうちの8ビットをすべてのNANDフラッシュメモリに共通して送出し、
(4) 第6回目は、ブロック位置を示すビット列の残り2ビットを、すべてのNANDフラッシュメモリに共通して送出する、
等の手法で、各ビット列の送出のタイミングを調整する。
【0054】
このようなタイミングの調整を行うことにより、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nに物理アドレスをラッチさせるために費やす時間を短縮する。
【0055】
なお、ビット列の送出タイミングを説明するために上述した具体的な数値は、この実施の形態の理解を容易にするために例示したものであって、数値の組み合わせは上述したものには限定されない。
【0056】
続いて、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nにデータを書き込むため、データ保管領域に収納されている1ブロック分のデータのうちアドレスが特定された先頭位置以降の1ページ分のデータを先頭から1バイトずつ順次データ/アドレスバスに送出し、1バイト送出する毎に、NANDフラッシュメモリN−1〜N−nにアクティブレベルのWE信号を供給する。この結果、NANDフラッシュメモリN−1〜N−nは、各自のデータレジスタに1ページ分のデータを保管する。
【0057】
次に、NANDフラッシュメモリコントローラCNは、バスB1を介してNANDフラッシュメモリN−1〜N−nのデータ/アドレスバスにライトコマンド(図5で「Comw」として示すデータ)を送出する。NANDフラッシュメモリN−1〜N−nの制御回路は、ライトコマンドを受け取ると書き込み動作を開始し、レディー信号を非アクティブ状態にする。
この結果、NANDフラッシュメモリN−1〜N−nは、各自が最も新しくラッチした物理アドレスが示すページのメモリセルに、データレジスタに保管している書き込み対象のデータ1ページ分を記憶する(ステップS8)。
【0058】
NANDフラッシュメモリN−1〜N−nの各制御回路は、1ページ分のデータをデータレジスタからメモリセルに書き込むとき、データの書き込みの成否を検査しながら書き込みを行う。具体的には、例えば、メモリセルの記憶内容とデータレジスタの記憶内容とを比較して、データが所定の時間内または所定回数以内の書き込み動作で正しくメモリセルにデータが記憶されたか否かを検査する。正しく記憶されなかった場合はデータ書き込み失敗(Fail)を示し、正しく記憶された場合はデータ書き込み成功(Pass)を示すステータスビットをステータスレジスタに格納する。そして、1ページ分のデータの書き込みを終了すると、レディー信号をアクティブ状態にする。
【0059】
NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nすべてのレディー信号がアクティブ状態になったことを確認し、バスB1を介して、NANDフラッシュメモリN−1〜N−nのデータ/アドレスバスにステータスリードコマンドを送出する。
【0060】
次に、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−kのリードイネーブル信号をアクティブ状態にして、NANDフラッシュメモリN−kのステータスレジスタを記憶内容を読み取る。
【0061】
NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nのすべてについて上述の動作によりステータスレジスタの記憶内容を読み取り、処理をステップS10に移す(ステップS9)。
【0062】
NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nのすべてのステータスレジスタの記憶内容が、に書き込み成功(具体的には、例えば、ステータスレジスタ内の「Pass」を表す特定のビットが所定のアクティブ状態になっている場合)であれば、処理をステップS11に移す。
【0063】
一方、NANDフラッシュメモリN−1〜N−nのいずれかのステータスレジスタの記憶内容が、に書き込み失敗(具体的には、例えば、ステータスレジスタ内の「Pass」を表すビットが非アクティブ状態になっている場合)であれば、該当するNANDフラッシュメモリのブロックが後発不良であるとして処理をステップS13に移す(ステップS10)。
【0064】
ステップS11で、NANDフラッシュメモリコントローラCNは、変数PAGE#の値に基づき、NANDフラッシュメモリN−1〜N−nに最後にデータを書き込んだページが、ブロックの末尾のページであるか否かを判別する。
【0065】
具体的には、例えばNANDフラッシュメモリN−1〜N−nの各々のブロックが32個のページからなる場合、変数PAGE#の値が「31」未満であれば、現在書き込み対象であるブロックにまだデータが書き込まれていないページがあると判断し、処理をステップS16に移す。一方、変数PAGE#の値が「31」であれば、最後にデータを書き込んだページが、現在書き込み対象であるブロックの末尾のページであると判断し、処理をステップS12に移す。
【0066】
ステップS16で、NANDフラッシュメモリコントローラCNは、変数PAGE#の値を1だけインクリメントすることにより次のページにデータを書き込む準備をして、処理をステップS7へ移す。
【0067】
ステップS12で、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nに書き込むべきデータがすべて書き込まれたか否かを判別し、書き込まれていないと判別すれば処理をステップS3に戻し、書き込まれたと判別すれば、データ書き込みの処理を終了する。
【0068】
ステップS13で、NANDフラッシュメモリコントローラCNは、書き込み失敗となったNANDフラッシュメモリ(以下では、このNANDフラッシュメモリはNANDフラッシュメモリN−kであるものとして説明する)のブロックを後発不良ブロックと特定する。また、ステップS8で最も新しく書き込みを行ったページを表す変数PAGE#の値を特定する。
【0069】
次に、NANDフラッシュメモリコントローラCNは、データが正常に書き込まれなかったNANDフラッシュメモリN−kのページを含むブロック内の各ページの冗長部に、このブロックが後発不良ブロックであることを示すエラーフラグを書き込む。ただし、このブロックのすべてのページにエラーフラグを書き込む代わりに、このブロックの先頭のページの冗長部のみにエラーフラグを書き込むようにしてもよい。こうすることにより、このブロックが後発不良ブロックであることを示すようにする書き込みの時間を短縮することができる。
【0070】
続いて、NANDフラッシュメモリコントローラCNは、データが正常に書き込まれなかったNANDフラッシュメモリN−kのブロックを表すデータを除外する形で、テーブルを更新(あるいは再度作成)する(ステップS14)。
【0071】
続いて、NANDフラッシュメモリコントローラCNは、更新(又は再度作成)されたテーブルに基づいて、NANDフラッシュメモリN−kのd番目の良品ブロックとなったブロックを特定し、特定したブロックに、変数DATA#が示すブロックの先頭のページから変数PAGE#が特定するページまでに書き込まれたデータを、ステップS8と同様の処理を行うことにより順次書き込む。
そして、NANDフラッシュメモリN−1〜N−nの残りのページへの書き込みを行うため処理をステップS11へ移す(ステップS15)。
【0072】
以上説明したステップS1〜S16の処理が行われる結果、NANDフラッシュメモリN−1〜N−nには、互いに同一のデータが書き込まれる。
なお、ステップS15で新たに選んだ良品ブロックへの書き込み処理のとき、ページへの書き込み後、ステップS9と同様にして書き込みの成否を検査し、書き込み失敗と判断したときはステップS13以降の処理を再度行うようにしてもよい。こうすると、後発不良ブロックが連続して発生した場合にも代わりのブロックを特定することができ、より効率的な書き込みが行える。
【0073】
なお、このフラッシュメモリ書込装置の構成は上述のものに限られない。
例えば、NANDフラッシュメモリN−kの各ブロックの大きさは上述の大きさに限られない。例えば、各ブロックは32ページから構成される必要はなく、例えば、各ページの大きさの整数倍であればよい。また、1個の物理アドレスを構成するビット列をラッチする回数も上述の回数に限られない。
また、NANDフラッシュメモリN−kが備えるブロックの数や、1ページあたりのメモリセルの数や冗長部の数も任意である。
【0074】
また、フラッシュメモリN−kの各ブロックは、更に複数のゾーンへと更に分類されていもよく、各ゾーンにゾーンアドレスが与えられていてもよい。この場合、データ書き込みの処理においてNANDフラッシュメモリコントローラCNが作成(更新、再作成)するテーブルは、NANDフラッシュメモリN−1〜N−nの記憶領域内の良品ブロックのブロックアドレス及びゾーンアドレスを表すデータより構成されているようにすればよい。
【0075】
また、NANDフラッシュメモリコントローラCNは、NANDフラッシュメモリN−1〜N−nに書き込むデータを、操作者の操作に従って取得したり、あるいは、自己に装着された記録媒体から読み取ることにより取得したり、あるいは通信回線を介して外部のシステムから受信することにより取得するようにしてもよい
この場合、NANDフラッシュメモリコントローラCNは、たとえば、キーボードや、記録媒体からのデータの読み出しを行う記録媒体ドライバ(例えば、フレキシブルディスクドライブ装置やMO(Magneto Optical disk)ドライブ装置)や、外部との通信を行うためのシリアルポート等からなる入力部を備えていればよい。
【0076】
また、上述のステップS2で変数DATA#に代入する初期値は、必ずしも「0」である必要はなく、例えば、NANDフラッシュメモリN−kの末尾のブロックのブロックアドレスより1だけ大きい数を変数DATA#の初期値としてもよいし、あるいは、NANDフラッシュメモリN−kの末尾のブロックのブロックアドレス以下の任意のオフセット値を変数DATA#の初期値としてもよい。
【0077】
また、変数DATA#をインクリメントする代わりにデクリメントする(具体的には、変数DATA#の値を1だけ減少させる)ことも差し支えない。
【0078】
また、NANDフラッシュメモリコントローラCNは、たとえば上述のステップS12においてテーブルを参照する等して、NANDフラッシュメモリN−1〜N−nのうちに、データを記憶させることが可能なメモリブロックが残っていないものがあるか否かを判別し、あると判別したとき、データ書き込みの処理を中断するようにしてもよい。こうすることにより、無駄な処理が後続することが避けられる。なお、データ書き込みの処理を中断する対象のNANDフラッシュメモリは、データを記憶させることが可能なメモリブロックが残っていないと案別されたものだけでもよいし、n個のNANDフラッシュメモリN−1〜N−nすべてであってもよい。
【0079】
また、1ページ分のデータを書き込むとき、上述した動作では、同一ページのデータ領域と冗長部とには、ステップS8及びS15の処理各1回でデータを書き込んでいる。しかし、データ領域及び冗長部のそれぞれについて別個にステップS8〜S10及びS13〜S15の処理を行うことにより、データを書き込むようにしてもよい。
こうすることにより、データ領域の書き込みの成否を検査した後、検査結果(後発不良ブロックであるか否か)に関係なく冗長部にデータの書き込みができる。この手法によれば、NANDフラッシュメモリの冗長部に特殊なフラグなどを書き込んで使用することが容易になる。
【0080】
(第2の実施の形態)
次に、NANDフラッシュメモリへのデータの書き込みを行う、この発明の第2の実施の形態フラッシュメモリ書込装置を説明する。図6は、このフラッシュメモリ書込装置の構成を示す図である。
【0081】
図6に示すように、このフラッシュメモリ書込装置は、NANDフラッシュメモリコントローラCNに代えてNANDフラッシュメモリコントローラCAを備える点と、バスB1に代えてバスB6を備える点と、アドレスラッチイネーブル信号線B2−1〜B2−nに代えてライトイネーブル信号線B7−1〜B7−nを備える点と、コマンドラッチイネーブル信号線B3−1〜B3−nを備えていない代わりに、アドレスラッチイネーブル信号とコマンドラッチイネーブル信号とがNANDフラッシュメモリN−1〜N−nに共通なバス信号としてバスB6により伝送される点とを除き、図1に示す構成と実質的に同一である。
なお、NANDフラッシュメモリA−kの構成は、NANDフラッシュメモリN−kと実質的に同一である。
【0082】
NANDフラッシュメモリコントローラCAは、バスB6を介して、データを書き込む対象であるn個のNANDフラッシュメモリA−1〜A−nのデータ/アドレスバスと、アドレスラッチイネーブル端子と、コマンドラッチイネーブル端子とに接続されているものとする。また、NANDフラッシュメモリコントローラCAは、リードイネーブル信号線B4−kを介して、NANDフラッシュメモリA−kのリードイネーブル端子に接続されており、また、レディー信号線B5−kを介して、NANDフラッシュメモリA−kのレディー端子に接続されており、また、ライトイネーブル信号線B7−kを介して、NANDフラッシュメモリA−kのライトイネーブル端子に接続されているものとする。
【0083】
また、NANDフラッシュメモリA−kは、データ/アドレスバスにストアコマンド(Coms)が供給されると、ライトイネーブル端子に供給されるWE信号がアクティブレベルに達した時点を検知し、検知した時点にデータ/アドレスバスに供給されているデータを、データ書き込み対象のブロックのブロックアドレスの一部を表すビット列としてラッチする。そして、ビット列を4回ラッチすると、その後WE信号がアクティブレベルに達する毎に、データ/アドレスバスに供給された書き込み対象のデータを、ラッチした4個のビット列により表されるブロックアドレスが示すブロックに、1バイトずつ記憶する。
【0084】
NANDフラッシュメモリコントローラCAの物理的及び機能的構成は、実行するデータ書き込み処理が後述の通りである点を除き、NANDフラッシュメモリコントローラCNの構成と実質的に同一である。
【0085】
(第2の実施の形態の動作)
図5のフラッシュメモリ書込装置のNANDフラッシュメモリコントローラCA及びNANDフラッシュメモリA−1〜A−nが行うデータ書き込みの処理は、図3に示す処理、すなわち図1の構成のNANDフラッシュメモリコントローラCN及びNANDフラッシュメモリN−1〜N−nが行う処理と実質的に同一である。
【0086】
ただし、ステップS8及びS15でNANDフラッシュメモリコントローラCAは、データを書き込むページの物理アドレスとして特定した物理アドレスをラッチさせるため、この物理アドレスの一部をなすビット列をデータ/アドレスバスに送出し、この状態で更に、バスB6にアドレスラッチイネーブル(ALE)信号を送出すると共に、ライトイネーブル信号線B7−kを介してNANDフラッシュメモリA−kにアクティブレベルのWE信号を供給するものとする。
そして、NANDフラッシュメモリA−kは、自己に供給されるALE信号とWE信号とがいずれもアクティブレベルとなった時点にデータ/アドレスバスに送出されているデータを、物理アドレスの一部を表すビット列としてラッチするものとする。
【0087】
すなわち、たとえば図7に示すように、ストアコマンド「Coms」が送出された後、NANDフラッシュメモリA−1にラッチさせるべきビット列のひとつ(図7で「add(1)」として示すデータ)をラッチさせる場合は、バスB6のアドレスラッチイネーブル(ALE)信号がアクティブレベル(図7で破線により示す信号レベル)に保持された状態で、ライトイネーブル信号線B7−1に供給されるWE信号(図7で「WE信号(B7−1)」として示す信号)がアクティブレベルに達する時点において、このビット列「add(1)」がバスB6にデータ/アドレス信号として送出されているようにする。
【0088】
また、NANDフラッシュメモリA−kにラッチさせるべきビット列のひとつ(図7で「add(k)」として示すデータ)をラッチさせる場合は、バスB6のALE信号がアクティブレベルに保持された状態で、ライトイネーブル信号線B7−kに供給されるWE信号(図7で「WE信号(B7−k)」として示す信号)がアクティブレベルに達する時点において、ビット列「add(k)」がバスB6にデータ/アドレス信号として送出されているようにする。
【0089】
なお、NANDフラッシュメモリコントローラCAも、第1の実施の形態と同様、複数のNANDフラッシュメモリにラッチさせるビット列が共通する場合は、なるべくこの共通するビット列が同一のタイミングでこれらのNANDフラッシュメモリにラッチされるよう、各ビット列の送出のタイミングを調整するものとする。こうすることにより、NANDフラッシュメモリコントローラCAは、NANDフラッシュメモリA−1〜A−nにブロックアドレスをラッチさせるために費やす時間を短縮する。
【0090】
すなわち、たとえば図7に示すように、NANDフラッシュメモリA−1及びA−nに共通にラッチさせるべきビット列(図7で「add(n)」として示すデータ)をラッチさせる場合は、バスB6のALE信号がアクティブレベルに保持された状態で、しかも、WE信号(B7−1)と、ライトイネーブル信号線B7−nに供給されるWE信号(図7で「WE信号(B7−n)」として示す信号)とがいずれもアクティブレベルに達する時点において、ビット列「add(n)」がバスB6にデータ/アドレス信号として送出されているようにする。
【0091】
なお、このフラッシュメモリ書込装置の構成は上述のものに限られない。
例えば、NANDフラッシュメモリA−1〜A−nは、ANDフラッシュメモリ(例えば、日立製作所製のHN29W12811など)より構成されていてもよい。
【0092】
また、チップイネーブル(CE)信号によってフラッシュメモリの入出力のイネーブル/ディスエーブルを制御する構成を有したフラッシュメモリがある。このようなフラッシュメモリにデータを書き込むため、ALE信号の代わりにCE信号を用いて物理アドレスのラッチを行わせるような構成を有していてもよい。
【0093】
また、ALE信号の供給を受けずWE信号のみによって物理アドレスのラッチを制御する構成を有したフラッシュメモリがある。このようなフラッシュメモリにデータを書き込むため、ALE信号を用いずWE信号を用いて物理アドレスのラッチを行わせ、シリアルクロック信号を用いてデータの読み書きを制御する構成を有してもよい。
【0094】
その他、本発明の実施の形態に係るフラッシュメモリ書込装置の構成は、本発明の主旨の範囲内で種々応用が可能である。
【0095】
以上、この発明の実施の形態を説明したが、この発明のデータ書込装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。具体的には、たとえばNANDフラッシュメモリが接続されたコンピュータに上述のNANDフラッシュメモリコントローラCNの動作を実行するためのプログラムを格納した媒体(フレキシブルディスク、CD−ROM等)から当該プログラムをインストールしたり、ANDフラッシュメモリが接続されたコンピュータに上述のANDフラッシュメモリコントローラCAの動作を実行するためのプログラムを格納した媒体から当該プログラムをインストールしたりすることにより、上述の処理を実行するフラッシュメモリ書込装置を構成することができる。
【0096】
また、例えば、通信ネットワークの掲示板(BBS)に当該プログラムを掲示し、これを通信回線を介して配信してもよく、また、当該プログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して当該プログラムを復元するようにしてもよい。
そして、当該プログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【0097】
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【0098】
【発明の効果】
以上説明したように、この発明によれば、不良メモリブロックを含み得る複数の記憶装置に効率的に同一のデータを記憶させるためのデータ書込装置及びデータ書込制御方法が実現される。
【図面の簡単な説明】
【図1】この発明の第1の実施の形態にかかるフラッシュメモリ書込装置の基本構成を示す図である。
【図2】フラッシュメモリの物理的構成を示すブロック図である。
【図3】フラッシュメモリの記憶領域の論理的構造を示す図である。
【図4】データ書き込みの処理を示すフローチャートである。
【図5】NANDフラッシュメモリコントローラがブロックアドレス及びデータを供給するタイミング示す図である。
【図6】この発明の第2の実施の形態にかかるフラッシュメモリ書込装置の基本構成を示す図である。
【図7】ANDフラッシュメモリコントローラがブロックアドレス及びデータを供給するタイミング示す図である。
【符号の説明】
CN、CA NANDフラッシュメモリコントローラ
N−1〜N−n、A−1〜A−n ANDフラッシュメモリ
B1、B6 バス
B2−1〜B2−n アドレスラッチイネーブル信号線
B3−1〜B3−n コマンドラッチイネーブル信号線
B4−1〜B4−n リードイネーブル信号線
B5−1〜B5−n レディー信号線
B7−1〜B7−n ライトイネーブル信号線
Claims (8)
- アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込装置であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、を備え、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とするデータ書込装置。 - 各記憶装置は、アドレスの供給を複数個に分けて受けるものであり、
前記書込手段は、記憶装置別に供給する各アドレスを構成する複数個の部分のうち、複数の記憶装置に共通している部分を、当該複数の記憶装置に一括して供給する、
ことを特徴とする請求項1に記載のデータ書込装置。 - 各記憶装置は、データを記憶した後、当該データが正常に記憶された否かを判別して判別結果を前記アドレス決定手段に通知する手段を備えるものであり、
前記アドレス決定手段は、データが正常に記憶されていないことを示す判別結果を通知されたとき、当該判別結果を通知した記憶装置のメモリブロックのうちから、当該データを新たに記憶させる対象のメモリブロックを決定する手段を備え、
前記書込手段は、正常に記憶されなかったデータを、前記データを新たに記憶させる対象として決定された前記メモリブロックに記憶させる手段を備える、
ことを特徴とする請求項1又は2に記載のデータ書込装置。 - 前記書込手段は、データを記憶させるべきメモリブロックが不足する記憶装置があるか否かを判別し、あると判別したとき、当該記憶装置のメモリブロックに当該データ以降のデータを記憶させるのを停止する手段を備える、
ことを特徴とする請求項1、2又は3に記載のデータ書込装置。 - 前記記憶装置は、NAND型フラッシュメモリより構成されている、
ことを特徴とする請求項1乃至4のいずれか1項に記載のデータ書込装置。 - 前記記憶装置は、AND型フラッシュメモリより構成されている、
ことを特徴とする請求項1乃至4のいずれか1項に記載のデータ書込装置。 - アドレスを割り当てられた複数のメモリブロックをそれぞれ含む複数の記憶装置に互いに同一のデータを記憶させるためのデータ書込方法であって、
各記憶装置は、シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を記憶し、供給する手段とを備えるものであり、
各記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定ステップと、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込ステップと、より構成されており、
前記アドレス決定ステップは、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新するステップと、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するステップと、より構成され、
前記書込ステップは、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定ステップを更に含む、
ことを特徴とするデータ書込制御方法。 - コンピュータを、
シリアルデータの入力を指示するストアコマンド及びアドレスを供給された後に書き込む対象のデータを供給され、最後に書き込みを指示するライトコマンドを供給されたとき、当該アドレスを割り当てられたメモリブロックに当該データを記憶する手段と、不良のメモリブロックを特定するエラー情報を供給する手段とを各々備える複数の記憶装置よりエラー情報を取得し、取得したエラー情報に基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定するアドレス決定手段と、
各記憶装置にストアコマンドを供給し、同一のデータを記憶する各メモリブロックを示すものとして決定された各アドレスを記憶装置別に供給した後、当該データを各記憶装置に一括して供給し、最後にライトコマンドを供給することにより各該メモリブロックにデータを記憶させる書込手段と、
して機能させるためのプログラムであって、
前記アドレス決定手段は、
取得したエラー情報に基づき、良品であるメモリブロックのアドレスを表すテーブルを作成及び更新する手段と、
前記テーブルに基づき、同一のデータを記憶するメモリブロックのアドレスを記憶装置毎に決定する手段と、より構成され、
前記書込手段は、データを記憶させたメモリブロックが不良のメモリブロックであるか否かを判別し、不良のメモリブロックであると判別したとき、当該メモリブロックにエラー情報を記憶させるエラー情報設定手段を更に備える、
ことを特徴とするプログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001301789A JP3822081B2 (ja) | 2001-09-28 | 2001-09-28 | データ書込装置、データ書込制御方法及びプログラム |
EP02800271A EP1433183B1 (en) | 2001-09-28 | 2002-09-27 | Data writing apparatus, data writing method, and program |
DE60205266T DE60205266T8 (de) | 2001-09-28 | 2002-09-27 | Datenschreibvorrichtung, datenschreibverfahren und programm |
US10/476,475 US7191296B2 (en) | 2001-09-28 | 2002-09-27 | Data writing apparatus, data writing method, and program |
PCT/JP2002/010064 WO2003030181A1 (en) | 2001-09-28 | 2002-09-27 | Data writing apparatus, data writing method, and program |
AT02800271T ATE300784T1 (de) | 2001-09-28 | 2002-09-27 | Datenschreibvorrichtung, datenschreibverfahren und programm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001301789A JP3822081B2 (ja) | 2001-09-28 | 2001-09-28 | データ書込装置、データ書込制御方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003109384A JP2003109384A (ja) | 2003-04-11 |
JP3822081B2 true JP3822081B2 (ja) | 2006-09-13 |
Family
ID=19122146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001301789A Expired - Fee Related JP3822081B2 (ja) | 2001-09-28 | 2001-09-28 | データ書込装置、データ書込制御方法及びプログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US7191296B2 (ja) |
EP (1) | EP1433183B1 (ja) |
JP (1) | JP3822081B2 (ja) |
AT (1) | ATE300784T1 (ja) |
DE (1) | DE60205266T8 (ja) |
WO (1) | WO2003030181A1 (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181611B2 (en) * | 2002-10-28 | 2007-02-20 | Sandisk Corporation | Power management block for use in a non-volatile memory system |
EP1501100B1 (en) * | 2003-07-22 | 2018-11-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device, memory system, and operating methods |
JP4534498B2 (ja) | 2004-01-28 | 2010-09-01 | ソニー株式会社 | 半導体装置およびその起動処理方法 |
JP4561110B2 (ja) * | 2004-01-29 | 2010-10-13 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
WO2005074613A2 (en) * | 2004-02-03 | 2005-08-18 | Nextest Systems Corporation | Method for testing and programming memory devices and system for same |
TW200604810A (en) * | 2004-02-20 | 2006-02-01 | Renesas Tech Corp | Nonvolatile memory and data processing system |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
KR100632947B1 (ko) | 2004-07-20 | 2006-10-12 | 삼성전자주식회사 | 불 휘발성 메모리 장치 및 그것의 프로그램 방법 |
FR2874440B1 (fr) * | 2004-08-17 | 2008-04-25 | Oberthur Card Syst Sa | Procede et dispositif de traitement de donnees |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
KR100704628B1 (ko) | 2005-03-25 | 2007-04-09 | 삼성전자주식회사 | 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치 |
JP4842563B2 (ja) * | 2005-05-16 | 2011-12-21 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 |
JP4859402B2 (ja) * | 2005-07-04 | 2012-01-25 | 株式会社アドバンテスト | 試験装置、及び製造方法 |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
US7609561B2 (en) * | 2006-01-18 | 2009-10-27 | Apple Inc. | Disabling faulty flash memory dies |
US20070174641A1 (en) * | 2006-01-25 | 2007-07-26 | Cornwell Michael J | Adjusting power supplies for data storage devices |
US7702935B2 (en) * | 2006-01-25 | 2010-04-20 | Apple Inc. | Reporting flash memory operating voltages |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US8170402B2 (en) * | 2006-04-07 | 2012-05-01 | Cinegest, Inc. | Portable high capacity digital data storage device |
US7558131B2 (en) * | 2006-05-18 | 2009-07-07 | Micron Technology, Inc. | NAND system with a data write frequency greater than a command-and-address-load frequency |
US20080010510A1 (en) * | 2006-06-19 | 2008-01-10 | Tony Turner | Method and system for using multiple memory regions for redundant remapping |
JP4956068B2 (ja) * | 2006-06-30 | 2012-06-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
KR100851545B1 (ko) | 2006-12-29 | 2008-08-11 | 삼성전자주식회사 | 커맨드 및 어드레스 핀을 갖는 낸드 플래시 메모리 및그것을 포함한 플래시 메모리 시스템 |
US7913032B1 (en) | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
US20080288712A1 (en) | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
KR101433861B1 (ko) * | 2007-10-22 | 2014-08-27 | 삼성전자주식회사 | 메모리 시스템 및 그 구동방법 |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8838876B2 (en) | 2008-10-13 | 2014-09-16 | Micron Technology, Inc. | Translation layer in a solid state storage device |
JP2010134741A (ja) * | 2008-12-05 | 2010-06-17 | Internatl Business Mach Corp <Ibm> | プログラムを実行する方法およびシステム |
CN101615145B (zh) * | 2009-07-24 | 2011-12-07 | 中兴通讯股份有限公司 | 一种提高存储器数据缓存可靠性的方法和装置 |
JP2012182788A (ja) * | 2011-02-10 | 2012-09-20 | Panasonic Corp | 記録システム、記録方法およびコンピュータプログラム |
US9037931B2 (en) * | 2011-12-21 | 2015-05-19 | Advanced Micro Devices, Inc. | Methods and systems for logic device defect tolerant redundancy |
EP2608211A1 (en) * | 2011-12-22 | 2013-06-26 | Fluiditech IP Limited | Method of testing a flash memory |
US20130166795A1 (en) * | 2011-12-23 | 2013-06-27 | Stec, Inc. | System and method for streaming data in flash memory applications |
US20150205541A1 (en) * | 2014-01-20 | 2015-07-23 | Samya Systems, Inc. | High-capacity solid state disk drives |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353256A (en) * | 1993-06-30 | 1994-10-04 | Intel Corporation | Block specific status information in a memory device |
JP3589033B2 (ja) | 1998-06-25 | 2004-11-17 | 東京エレクトロンデバイス株式会社 | フラッシュメモリシステム |
JP3597393B2 (ja) | 1998-08-19 | 2004-12-08 | シャープ株式会社 | データ記録再生装置 |
JP2000276367A (ja) | 1999-03-23 | 2000-10-06 | Advantest Corp | データ書込装置、データ書込方法、及び試験装置 |
KR100330164B1 (ko) | 1999-04-27 | 2002-03-28 | 윤종용 | 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법 |
US6535780B1 (en) | 1999-11-10 | 2003-03-18 | Data I/O Corporation | High speed programmer system |
JP4371524B2 (ja) | 2000-03-17 | 2009-11-25 | 株式会社東芝 | メモリの不良エリア管理回路 |
US6528843B1 (en) * | 2002-05-03 | 2003-03-04 | Silicon Based Technology Corp. | Self-aligned split-gate flash memory cell having a single-side tip-shaped floating-gate structure and its contactless flash memory arrays |
-
2001
- 2001-09-28 JP JP2001301789A patent/JP3822081B2/ja not_active Expired - Fee Related
-
2002
- 2002-09-27 US US10/476,475 patent/US7191296B2/en not_active Expired - Fee Related
- 2002-09-27 DE DE60205266T patent/DE60205266T8/de not_active Expired - Fee Related
- 2002-09-27 WO PCT/JP2002/010064 patent/WO2003030181A1/en active IP Right Grant
- 2002-09-27 EP EP02800271A patent/EP1433183B1/en not_active Expired - Lifetime
- 2002-09-27 AT AT02800271T patent/ATE300784T1/de not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JP2003109384A (ja) | 2003-04-11 |
ATE300784T1 (de) | 2005-08-15 |
DE60205266T2 (de) | 2006-03-30 |
DE60205266D1 (de) | 2005-09-01 |
WO2003030181A1 (en) | 2003-04-10 |
US20040172576A1 (en) | 2004-09-02 |
US7191296B2 (en) | 2007-03-13 |
DE60205266T8 (de) | 2006-06-08 |
EP1433183A1 (en) | 2004-06-30 |
EP1433183B1 (en) | 2005-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3822081B2 (ja) | データ書込装置、データ書込制御方法及びプログラム | |
US8161230B2 (en) | Nonvolatile memory system, and data read/write method for nonvolatile memory system | |
EP1242868B1 (en) | Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time | |
US8300465B2 (en) | Semiconductor and flash memory systems | |
JP4761959B2 (ja) | 半導体集積回路装置 | |
US6906961B2 (en) | Erase block data splitting | |
JP4373943B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US9846643B2 (en) | Methods for maintaining a storage mapping table and apparatuses using the same | |
US20090193183A1 (en) | Nonvolatile memory system, and data read/write method for nonvolatile memory system | |
JP3310011B2 (ja) | 半導体メモリおよびこれを使用した半導体メモリボード | |
US20020188814A1 (en) | Non-volatile storage device and rewrite control method thereof | |
JPH0574178A (ja) | 不揮発性icメモリ | |
US10185662B2 (en) | Methods for reprogramming data and apparatuses using the same | |
US9852068B2 (en) | Method and apparatus for flash memory storage mapping table maintenance via DRAM transfer | |
EP3057100B1 (en) | Memory device and operating method of same | |
CN114089908A (zh) | 非易失性存储器及其操作方法 | |
JP2720013B2 (ja) | 書込みチェック機能を備えた電気的に変更可能な不揮発性メモリ | |
JP4661748B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2006178909A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4332108B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2007280140A (ja) | 半導体記憶装置および信号処理システム | |
JP2005293177A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP2007094638A (ja) | メモリコントローラ及びフラッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051227 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060621 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090630 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090630 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |