(57)【要約】本発明はフラッシュメモリの１ブロック内のページの書き換え又は追記時、元のブロックのデータの退避場所としてページバッファ２を兼用することにより、ページバッファ２とは別の退避バッファを持たず、従来の装置よりサイズを小さく抑えうるものである。  ホストによりページバッファ２へ格納される書き込み対象データ（ＤＮ８〜ＤＮ１２）が転送先ブロックの先頭ページから順に各ページのデータ領域に書き込まれる。ホストから書き込み対象データの送出完了が通知されるとき、順次かつ巡回的に、転送元ブロック内のデータ（Ｄ１３〜Ｄ３１、Ｄ０〜Ｄ７）がページバッファ経由で転送先ブロックのページに転送される。
2004021191.tif 000002
【特許請求の範囲】
【請求項１】
（Ａ）  複数のページをそれぞれ含む複数のブロックと、前記ブロックそれぞれのページオフセットを記憶するページオフセット記憶領域とを有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
（Ｂ）  前記ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
（Ｃ）  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを前記書き込み先ページの属する前記ブロック（以下、転送元ブロックという）の物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
（Ｄ）  （ａ）  前記転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号とを読み込み、
（ｂ）  前記データ消去済ブロックの一つを転送先ブロックとして選択し、
（ｃ）  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記ページオフセット記憶領域へ書き込み、
（ｄ）  前記ページオフセット記憶領域から前記転送元ブロックのページオフセットを読み出し、
（ｅ）  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を求め、
（ｆ）  前記ホストから前記ページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込み、
（ｇ）  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、
（ｈ）  前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送する、
ためのメモリ制御部；
を具備する半導体メモリ装置。
【請求項２】
（Ａ）  複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
（Ｂ）  前記ブロックそれぞれのページオフセットを記憶するためのページオフセット記憶部；
（Ｃ）  前記ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
（Ｄ）  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
（Ｅ）  （ａ）  前記転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号とを読み込み、
（ｂ）  前記データ消去済ブロックの一つを転送先ブロックとして選択し、
（ｃ）  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記ページオフセット記憶部へ書き込み、
（ｄ）  前記ページオフセット記憶部から前記転送元ブロックのページオフセットを読み出し、
（ｅ）  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を求め、
（ｆ）  前記ホストから前記ページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込み、
（ｇ）  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、
（ｈ）  前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送する、
ためのメモリ制御部；
を具備する半導体メモリ装置。
【請求項３】
（Ａ）  前記半導体メモリ装置が、
（ａ）  前記ホストから送出される、前記書き込み先ページの論理アドレスと前記書き込み対象データと、を受信するためのホストインタフェース；及び、
（ｂ）  前記フラッシュメモリ内の前記ブロックそれぞれについて論理アドレスと物理アドレスとの対応を示す論理アドレス／物理アドレス変換表、及び、前記ブロックそれぞれについて前記データ消去済ブロックであるか否かを示すためのフラグ、を記憶するアドレス変換表記憶部；を更に具備し；
（Ｂ）  前記メモリ制御部が、前記ページ領域のページ数を数え、そのページ数が所定数に達するとき又は前記ホストから前記書き込み対象データの送出の終了を通知されるとき、前記転送元ブロックから前記転送先ブロックへのデータ転送を開始する；
請求項１又は２のいずれかに記載の半導体メモリ装置。
【請求項４】
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
（Ａ）  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
（Ｂ）  前記論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するステップ；
（Ｃ）  前記データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
（Ｄ）  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記フラッシュメモリ内のページオフセット記憶領域へ書き込むステップ；
（Ｅ）  前記ページオフセット記憶領域から前記転送元ブロックのページオフセットを読み出すステップ；
（Ｆ）  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を決定するステップ；
（Ｇ）  前記ホストからページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込むステップ；
（Ｈ）  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送するステップ；
を有するフラッシュメモリへのデータ書き込み方法。
【請求項５】
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
（Ａ）  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
（Ｂ）  前記論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するステップ；
（Ｃ）  前記データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
（Ｄ）  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとしてページオフセット記憶部へ書き込むステップ；
（Ｅ）  前記ページオフセット記憶部から前記転送元ブロックのページオフセットを読み出すステップ；
（Ｆ）  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を決定するステップ；
（Ｇ）  前記ホストからページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込むステップ；
（Ｈ）  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送するステップ；
を有するフラッシュメモリへのデータ書き込み方法。
【請求項６】
前記ページ領域のページ数を数え、そのページ数が所定数に達するとき又は前記ホストから前記書き込み対象データの送出の終了を通知されるとき、前記転送元ブロックから前記転送先ブロックへのデータ転送を開始するステップ、を更に有する、請求項４又は５のいずれかに記載のフラッシュメモリへのデータ書き込み方法。
【発明の詳細な説明】
【技術分野】  本発明は、フラッシュメモリを含む半導体メモリ装置に関する。特に、そのフラッシュメモリへのデータ書き込み方法に関する。
【背景技術】  情報処理機器、更に近年ではテレビ及び冷蔵庫等の家電製品はＣＰＵを内蔵し、高度な動作制御をソフトウェアで実現する。それらの機器は動作制御用のプログラム（ファームウェア）及びパラメータを不揮発性メモリに保持する。この不揮発性メモリとして、フラッシュメモリを含む半導体メモリ装置が多用される。半導体メモリ装置は更に、ノートパソコン、携帯情報端末（ＰＤＡ）、ディジタルカメラ、ポータブルオーディオプレーヤ、及び携帯電話等の携帯型情報処理機器（モバイル機器）で、例えばメモリカードのような外付けの小型記録媒体としても多用される。これらの用途では特に、半導体メモリ装置が大容量でかつ小型であることが望ましい。
フラッシュメモリの記憶領域は一般に、一定数のメモリセルごとに複数のページに分割される。データの書き込み及び読み出しはページごとに行われる。記憶領域は更に、一定数のページごとに複数のブロックに分割される。データ消去はブロックごとに一括して行われる。従って、フラッシュメモリではＲＡＭとは異なり、データのページごとの上書きが厳密な意味では実行できない。
従来の半導体メモリ装置は、フラッシュメモリの一部のページに記憶されるデータの書き換え（以下、ページの書き換えという）、及び、データが書き込まれていないページへの新たなデータの書き込み（以下、ページの追記という）を例えば以下のように実現する。ＦＩＧ．９は、従来の半導体メモリ装置によるフラッシュメモリ１の一ブロックでのページの書き換え又は追記を説明するための図である。
従来の半導体メモリ装置は、フラッシュメモリ１、及び、退避バッファ２０とページバッファ２との二つのＲＡＭを有する。フラッシュメモリ１は複数のブロックＢ０、Ｂ１、…に分割される。物理アドレスはブロックＢ０、Ｂ１、…のそれぞれに割り当てられる。ブロックはそれぞれ３２枚のページを含む。例えば、先頭ブロック（すなわち第１ブロック）Ｂ０はページＰ０、Ｐ１、…、Ｐ３１を含み、第（ｎ＋１）ブロックＢｎ（ｎ≧１）はページＱ０、Ｑ１、…、Ｑ３１を含む。ブロック内のページはそのブロックの物理アドレスとそのブロック内でのページ番号との対で特定される。ページ番号は例えば、ブロックの先頭ページから順にそれぞれのページに付与された０〜３１のシリアル番号である。退避バッファ２０とページバッファ２とはそれぞれ、フラッシュメモリ１の一ページと実質的に同じ記憶容量を持つ。
ホストは半導体メモリ装置に対し、書き込み先ページを示す論理アドレスと書き込み対象データとを送出する。半導体メモリ装置はその書き込み対象データＤＮをページバッファ２へ格納する。一方、半導体メモリ装置はその論理アドレスからフラッシュメモリ１内の対応ページを特定する。例えば、論理アドレスが先頭ブロックＢ０の第（ｐ＋１）ページＰｐ（０≦ｐ≦３１）を示すとき、半導体メモリ装置はその論理アドレスを、先頭ブロックＢ０の物理アドレスと第（ｐ＋１）ページＰｐのページ番号ｐとの対へ変換する。その物理アドレスがデータの転送元のブロック（以下、転送元ブロックという）の物理アドレスとして特定される。半導体メモリ装置は続いて、フラッシュメモリ１内から、データが書き込まれていないブロック（以下、データ消去済ブロックという）を一つ選択する。半導体メモリ装置は例えば、データ消去済ブロックである第（ｎ＋１）ブロックＢｎを選択する。その第（ｎ＋１）ブロックＢｎの物理アドレスが、転送元ブロックＢ０に記憶されるデータの転送先のブロック（以下、転送先ブロックという）の物理アドレスとして特定される。
従来の半導体メモリ装置は次のように、転送元ブロックＢ０に記憶されるデータを転送先ブロックＢｎへ転送する。まず、転送元ブロックＢ０の先頭ページＰ０のデータＤ０が退避バッファ２０へ読み出される（ＦＩＧ．９に示される矢印Ｒ０参照）。次に、退避バッファ２０のデータＤ０が転送先ブロックＢｎの先頭ページＱ０へ書き込まれる（ＦＩＧ．９に示される矢印Ｗ０参照）。続いて、転送元ブロックＢ０の第２ページＰ１のデータＤ１が退避バッファ２０へ読み出される（ＦＩＧ．９に示される矢印Ｒ１参照）。次に、退避バッファ２０のデータＤ１が転送先ブロックＢｎの第２ページＱ１へ書き込まれる（ＦＩＧ．９に示される矢印Ｗ１参照）。そのような退避バッファ２０経由のデータ転送が書き込み先ページ（転送元ブロックＢ０の第（ｐ＋１）ページＰｐ）のページ番号ｐと同数回（＝ｐ回）繰り返される。転送元ブロックＢ０の書き込み先ページ（第（ｐ＋１）ページ）Ｐｐがデータの読み出し元のページに設定されるとき、半導体メモリ装置はそのページについては退避バッファ２０へのデータ転送をスキップする。その代わり、転送先ブロックＢｎの第（ｐ＋１）ページＱｐへは、ページバッファ２に保持された書き込み対象データＤＮが書き込まれる（ＦＩＧ．９に示される矢印Ｗｐ参照）。転送元ブロックＢ０の書き込み先ページＰｐの次のページ（第（ｐ＋２）ページ）からは再び、退避バッファ２０経由のデータ転送が繰り返される。転送元ブロックＢ０の最終ページＰ３１のデータＤ３１が退避バッファ２０経由で転送先ブロックＢｎの最終ページＱ３１へ書き込まれる（ＦＩＧ．９に示される矢印Ｒ３１とＷ３１参照）。半導体メモリ装置は、転送元ブロックＢ０の物理アドレスに対応する論理アドレスを転送先ブロックＢｎの物理アドレスに対応させる。転送先ブロックＢｎでは転送元ブロックＢ０と比べ、ページ番号ｐを持つ第（ｐ＋１）ページＰｐのデータが書き換えられている。こうして、従来の半導体メモリ装置はフラッシュメモリ１の一ブロックに対し、ページの書き換え及び追記を実現する。
半導体メモリ装置はできる限り大容量でかつ小型でなければならない。しかし、フラッシュメモリ素子の集積度の向上は容易ではない。従って、フラッシュメモリ素子以外の回路部分のサイズの縮小が望まれる。例えば、複数の機能部のそれぞれが共通の回路部分を含むとき、それらの共通部分を一つに統合し、その統合された部分を複数の機能部に共用させる。それにより、それらの共通部分の数を減らすことが望ましい。半導体メモリ装置でのサイズの縮小はチップ面積の減少により製造コストを低減させるので更に望ましい。従来の半導体メモリ装置は上記の通り、退避バッファとページバッファとの二つのＲＡＭを持つ。これらのＲＡＭは、バッファメモリとして使用される点、及びフラッシュメモリの一ページと実質的に等量の記憶容量を持つ点で共通する。従って、退避バッファとページバッファとを一つのＲＡＭに統一することが強く望まれた。しかし、従来の半導体メモリ装置によるページの書き換えでは上記の通り、書き込み先ページが退避対象となるまで、ページバッファは書き込み対象データを保持しなければならない。それ故、ページバッファを退避バッファとして兼用することは困難だった。
【発明の開示】
本発明は、退避バッファとページバッファとを一つのＲＡＭに統一することでＲＡＭのサイズを低減し、それにより小型化を実現した半導体メモリ装置、の提供を目的とする。
本発明による半導体メモリ装置は、
（Ａ）  複数のページをそれぞれ含む複数のブロックと、ブロックそれぞれのページオフセットを記憶するページオフセット記憶領域とを有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
（Ｂ）  ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
（Ｃ）  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを書き込み先ページの属するブロック（以下、転送元ブロックという）の物理アドレスと書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
（Ｄ）  （ａ）  転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号とを読み込み、（ｂ）  データ消去済ブロックの一つを転送先ブロックとして選択し、（ｃ）  書き込み先ページの論理ページ番号に基づき転送先ブロックのページオフセットを決定し、そのページオフセットを転送先ブロックのページオフセットとしてページオフセット記憶領域へ書き込み、（ｄ）  ページオフセット記憶領域から転送元ブロックのページオフセットを読み出し、（ｅ）  転送元ブロックのページオフセットと書き込み先ページの論理ページ番号とに基づき書き込み先ページの物理ページ番号を求め、（ｆ）  ホストからページバッファへ転送される書き込み対象データを転送先ブロックの先頭ページから順に書き込み、（ｇ）  書き込み対象データのページ数と書き込み先ページの物理ページ番号とに基づき転送元ブロックの転送開始ページの物理ページ番号を求め、（ｈ）  書き込み対象データが書き込まれた転送先ブロックのページ領域、の次のページ以降へ転送元ブロック内に記憶されたデータを、転送開始ページから順次かつ巡回的に、ページバッファを経由し転送する、ためのメモリ制御部；を具備する。
論理ページ番号は、ホストによりフラッシュメモリ内のページそれぞれに割り当てられるシリアル番号である。物理ページ番号は、フラッシュメモリ内のブロックごとにそれぞれの先頭ページから順にそれぞれのページに対し付与されるシリアル番号である。ブロックのページオフセットとは、そのブロックでの論理的なページ順序と物理的なページ順序との巡回的なずれをいう。ブロックのページオフセットは好ましくは、そのブロックの先頭ページの論理ページ番号と等しい。本発明による上記の半導体メモリ装置はフラッシュメモリ内のブロックそれぞれのページオフセットを記憶する。ここで、実際に記憶されるデータはページオフセットそのものの他、特定のページの論理ページ番号であっても良い。ページオフセット記憶領域は好ましくは各ブロックの先頭ページの冗長領域である。ページの冗長領域はそのページのデータ領域とは独立にアクセスされる記憶領域である。冗長領域には例えば、そのページに対応する論理アドレス、そのページが空きページか否かを示すフラグ、そのページに書き込まれたデータの有効／無効（すなわちホストによるアクセスの可否）を示すフラグ、及びそのデータの誤り検出符号（例えばＣＲＣ）が記憶される。ページオフセットの記憶場所は上記のフラッシュメモリ内のページオフセット記憶領域の他に、そのフラッシュメモリとは独立な不揮発性メモリ（以下、ページオフセット記憶部という）であっても良い。ページオフセット記憶部は例えばメモリ制御部に含まれる。ページバッファはＲＡＭであり、好ましくはＳＲＡＭである。書き込み対象データのページ数とは、フラッシュメモリ内のページ一つ当たりのデータ記憶容量を単位として表された書き込み対象データの量をいう。書き込み対象データのページ数は、その書き込み対象データが書き込まれた転送先ブロックのページ領域のページ数と等しい。
本発明による上記の半導体メモリ装置ではフラッシュメモリ内のページそれぞれの論理ページ番号が物理ページ番号からブロックごとに巡回的にずれても良い。各ページの物理ページ番号はそのページの論理ページ番号とそのページの属するブロックのページオフセットとに基づき算出される。ホストからブロック内の一部のページの書き換え又は新たなページの追記を指示されるとき、本発明による上記の半導体メモリ装置はまず、ホストからページバッファへ転送される書き込み対象データを転送先ブロックへ、その先頭ページから順に書き込む。それにより、転送元ブロックについて退避処理を開始する前にページバッファが開放される。従って、本発明による上記の半導体メモリ装置は転送元ブロックの退避処理時、ページバッファを退避バッファとして兼用できる。その結果、本発明による上記の半導体メモリ装置は従来の装置よりＲＡＭのサイズが小さい。それ故、フラッシュメモリのサイズを一定とするとき、本発明による上記の半導体メモリ装置は従来の装置より全体のサイズが小さい。
本発明による上記の半導体メモリ装置が、（ａ）  ホストから送出される、書き込み先ページの論理アドレスと書き込み対象データと、を受信するためのホストインタフェース；及び、（ｂ）  フラッシュメモリ内のブロックそれぞれについて論理アドレスと物理アドレスとの対応を示す論理アドレス／物理アドレス変換表、及び、ブロックそれぞれについてデータ消去済ブロックであるか否かを示すためのフラグ、を記憶するアドレス変換表記憶部；を更に具備し；上記のメモリ制御部が、書き込み対象データのページ数を数え、そのページ数が所定数に達するとき又はホストから書き込み対象データの送出の終了を通知されるとき、転送元ブロックから転送先ブロックへのデータ転送の開始しても良い。ここで、アドレス変換表記憶部は好ましくはＲＡＭである。論理アドレス／物理アドレス変換表は、フラッシュメモリ内のブロックそれぞれに割り当てられた論理アドレスとそのブロックの物理アドレスとの対応関係を示す表である。
ホストインタフェースはメモリ制御部から独立しているので、ホストと半導体メモリ装置との間のデータ通信がフラッシュメモリでのデータ書き込み／読み出しとは独立に実行される。それにより、例えばフラッシュメモリへのデータ書き込みに関するホストの待ち時間が短縮される。
アドレス変換部は例えば、フラッシュメモリ内のページの冗長領域を走査する。それにより、フラッシュメモリ内のブロックそれぞれの論理アドレスをリストアップする。こうして、アドレス変換部は論理アドレス／物理アドレス変換表を作成し、アドレス変換表記憶部へ格納する。アドレス変換部は、書き込み先ページの論理アドレスを転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号との対へ変換するとき、論理アドレス／物理アドレス変換表を参照する。それにより、その論理アドレスに対応する物理アドレスを速やかに検索できる。
アドレス変換部は更に、走査された冗長領域に記憶されたデータに基づき、ブロックそれぞれについてデータ消去済ブロックであるか否かをチェックする。それにより、ブロックそれぞれについて上記のフラグを決定し、アドレス変換表記憶部へ格納する。メモリ制御部は、データ消去済ブロックの一つを転送先ブロックとして選択するとき、上記のフラグを参照する。それにより、転送先ブロックを速やかに決定できる。
メモリ制御部は例えば、ホストからページバッファへ格納される書き込み対象データをページバッファから転送先ブロックへ転送するとき、その転送回数を数える。ホストは半導体メモリ装置に対し書き込み対象データの送出の終了を、例えば所定のコマンドで通知しても良い。メモリ制御部はその場合、その通知の受信時点での上記の転送回数から書き込み対象データのページ数を検出できる。メモリ制御部はそれと同時に、転送元ブロックから転送先ブロックへのデータ転送を開始する。その他に、ホストが半導体メモリ装置に対し、書き込み対象データのページ数を書き込み対象データの送出に先立ち通知しても良い。メモリ制御部はその場合、上記の転送回数がその予告されたページ数に達するとき、転送元ブロックから転送先ブロックへのデータ転送を開始する。
本発明によるフラッシュメモリへのデータ書き込み方法は：
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
（Ａ）  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
（Ｂ）  その論理アドレスを転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号との対へ変換するステップ；
（Ｃ）  データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
（Ｄ）  書き込み先ページの論理ページ番号に基づき転送先ブロックのページオフセットを決定し、そのページオフセットを転送先ブロックのページオフセットとしてフラッシュメモリ内のページオフセット記憶領域（又はページオフセット記憶部）へ書き込むステップ；
（Ｅ）  フラッシュメモリのページオフセット記憶領域（又はページオフセット記憶部）から転送元ブロックのページオフセットを読み出すステップ；
（Ｆ）  転送元ブロックのページオフセットと書き込み先ページの論理ページ番号とに基づき書き込み先ページの物理ページ番号を決定するステップ；
（Ｇ）  ホストからページバッファへ転送される書き込み対象データを転送先ブロックの先頭ページから順に書き込むステップ；
（Ｈ）  書き込み対象データのページ数と書き込み先ページの物理ページ番号とに基づき転送元ブロックの転送開始ページの物理ページ番号を求め、その書き込み対象データが書き込まれた転送先ブロックのページ領域、の次のページ以降へ転送元ブロック内に記憶されたデータを、転送開始ページから順次かつ巡回的に、ページバッファを経由し転送するステップ；を有する。ここで、論理ページ番号、物理ページ番号、ブロックのページオフセット、ページオフセット記憶領域（又はページオフセット記憶部）、ページバッファ、及び書き込み対象データのページ数はそれぞれ上記と同様に定義される。
本発明による上記のデータ書き込み方法では、フラッシュメモリ内のページそれぞれの論理ページ番号が物理ページ番号からブロックごとに巡回的にずれても良い。各ページの物理ページ番号はそのページの論理ページ番号とそのページの属するブロックのページオフセットとに基づき算出される。ホストからブロック内のページの書き換え又は追記を指示されるとき、ホストからページバッファへ転送される書き込み対象データがまず、転送先ブロックへその先頭ページから順に書き込まれる。それにより、転送元ブロックについて退避処理を開始する前にページバッファが開放される。従って、その退避処理時、そのページバッファが退避バッファとして兼用され得る。その結果、上記のデータ書き込み方法では必要なＲＡＭのサイズが従来の方法より小さい。それ故、フラッシュメモリのサイズを一定とするとき、半導体メモリ装置全体のサイズが従来の装置より小さい。
本発明による上記のデータ書き込み方法が更に、書き込み対象データが書き込まれた転送先ブロックのページ領域のページ数を数え、そのページ数が所定数に達するとき又はホストから書き込み対象データの送出の終了を通知されるとき、転送元ブロックから転送先ブロックへのデータ転送を開始するステップ、を有しても良い。例えば、書き込み対象データがページバッファから転送先ブロックへ転送されるごとに、その転送回数が数えられる。ホストは半導体メモリ装置に対し書き込み対象データの送出の終了を、例えば所定のコマンドで通知しても良い。その場合、その通知の受信時点での上記の転送回数から上記のページ領域のページ数が検出される。更にその通知時、転送元ブロックから転送先ブロックへのデータ転送が開始される。その他に、ホストが半導体メモリ装置に対し、書き込み対象データのページ数を書き込み対象データの送出に先立ち通知しても良い。その場合、上記の転送回数がその予告されたページ数に達するとき、転送元ブロックから転送先ブロックへのデータ転送が開始される。
本発明による上記の半導体メモリ装置及びそのデータ書き込み方法では、転送元ブロックについて退避処理が開始される前にページバッファが開放される。従って、その退避処理時、ページバッファが退避バッファとして兼用され得る。その結果、上記の半導体メモリ装置は従来の装置よりＲＡＭのサイズが小さい。それ故、フラッシュメモリのサイズを一定とするとき、本発明による上記の半導体メモリ装置は従来の装置より全体のサイズが小さい。特にチップ面積が小さいので、本発明による上記の半導体メモリ装置は従来の装置より製造コストが低減する。
発明の新規な特徴は添付の請求の範囲に特に記載したものに他ならないが、構成及び内容の双方に関して本発明は、他の目的や特徴と合わせて図面と共に以下の詳細な説明を読むことにより、より良く理解され評価されるであろう。
【図面の簡単な説明】  ＦＩＧ．１は、本発明の実施例による半導体メモリ装置１０を示すブロック図である。
ＦＩＧ．２は、本発明の実施例によるフラッシュメモリ１内のセルアレイの構成の概略を示す模式図である。
ＦＩＧ．３は、本発明の実施例による半導体メモリ装置１０について、ホストＨからページバッファ２へ転送される書き込み対象データＤＮ８〜ＤＮ１２に対しメモリ制御部６が行う、ページバッファ２からフラッシュメモリ１への転送処理を示す図である。
ＦＩＧ．４は、本発明の実施例による半導体メモリ装置１０について、メモリ制御部６がＦＩＧ．３に示されるデータ転送処理に続けて行う、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送処理の前半を示す図である。
ＦＩＧ．５は、本発明の実施例による半導体メモリ装置１０について、メモリ制御部６がＦＩＧ．３に示されるデータ転送処理に続けて行う、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送処理の後半を示す図である。
ＦＩＧ．６は、本発明の実施例による半導体メモリ装置１０のデータ書き込み方法のフローチャートである。
ＦＩＧ．７は、本発明の実施例による半導体メモリ装置１０のデータ書き込み方法について、ページバッファ２から転送先ブロックＢｎへの書き込み対象データＤＮ（ｑ）〜ＤＮ（ｑ＋ｍ−１）の転送（ステップＳ７）のフローチャートである。
ＦＩＧ．８は、本発明の実施例による半導体メモリ装置１０のデータ書き込み方法について、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送（ステップＳ８）のフローチャートである。
ＦＩＧ．９は、従来の半導体メモリ装置によるフラッシュメモリ１の一ブロックでのページの書き換え又は追記を説明するための図である。
図面の一部又は全部は、図示を目的とした概要的表現により描かれており、必ずしもそこに示された要素の実際の相対的大きさや位置を忠実に描写しているとは限らないことは考慮願いたい。
【発明を実施するための最良の形態】  以下、本発明の最適な実施の形態について、図面を参照しつつ説明する。
ＦＩＧ．１は本発明の実施例による半導体メモリ装置１０を示すブロック図である。半導体メモリ装置１０はホストＨと外部バス７で接続される。ここで、ホストＨは例えば、パソコン等の情報処理機器、又は、ＰＤＡ若しくは携帯電話等のモバイル機器である。半導体メモリ装置１０はホストＨに内蔵されても、外付けされても良い。
フラッシュメモリ１は、好ましくはＮＡＮＤ型ＥＥＰＲＯＭ（電気的消去及び書き込み可能不揮発性メモリ）である。ＦＩＧ．２はフラッシュメモリ１内のセルアレイの構成の概略を示す模式図である。セルアレイは複数のブロックＢ０、Ｂ１、Ｂ２、…の集合である。それぞれのブロックは例えば３２枚のページを含む。例えば、先頭ブロックＢ０は３２枚のページＰ０〜Ｐ３１を含む。他のブロックＢ１、Ｂ２、…についても同様である。フラッシュメモリ１では、データがブロックごとに一括してのみ消去される。それぞれのページは、（５１２＋１６）列×８個のメモリセルの二次元配列を含む。ここで、８個のメモリセルがＮＡＮＤ型に接続され、一つの列を構成する。更に、５１２列のメモリセルがデータ領域ＤＡを構成し、残り１６列のメモリセルは冗長領域ＲＡである。フラッシュメモリ１では、データの書き込み及び読み出しが一ページずつ行われる。但し、データ領域ＤＡと冗長領域ＲＡとは互いに独立にアクセスされる。一つのメモリセルは例えば１ビットのデータを記憶する。そのとき、１列のメモリセルは８ビット＝１バイトを記憶する。ＮＡＮＤ型ＥＥＰＲＯＭでは、１列のメモリセルにより記憶されるデータが一つのワードとして同時に入出力される。セルアレイのデータ領域ＤＡは上記の構成から計算されるとおり、１ページ当たりでは５１２バイト、１ブロック当たりでは５１２バイト×３２＝１６ｋＢ、の記憶容量を持つ。冗長領域ＲＡは、その所属するページのデータ領域ＤＡに記憶されたデータの属性を記憶する。例えば、その所属するページに対応する論理アドレス、そのページが空きページか否かを示すフラグ、そのページに書き込まれたデータの有効／無効（すなわちホストによるアクセスの可否）を示すフラグ、又はそのデータの誤り検出符号（例えばＣＲＣ）を含む。
フラッシュメモリ１へ一ブロック以上のサイズを持つ一連のデータが記憶されるとき、そのデータはページごとに分割され、データ消去済ブロックの先頭ページから順にそれぞれのページのデータ領域ＤＡへ書き込まれる。フラッシュメモリ１では特に、それぞれのブロック内で論理的なページ順序が物理的なページ順序から次のように巡回的にずれても良い。例えばＦＩＧ．２では、先頭ブロックＢ０の先頭ページ（第１ページ）Ｐ０、第２ページＰ１、…、第３０ページＰ２９、第３１ページＰ３０、及び最終ページ（第３２ページ）Ｐ３１のそれぞれはデータＤ２、Ｄ３、…、Ｄ３１、Ｄ０、及びＤ１を記憶する。ここで、先頭ブロックＢ０のページを示す符号Ｐの横の数値がそれぞれのページの物理ページ番号を示す。更に、ページＰ０〜Ｐ３１のそれぞれに記憶されるデータを示す符号Ｄの横の数値がそれぞれのページの論理ページ番号を示す。すなわち、先頭ブロックＢ０のページＰ０〜Ｐ３１それぞれの論理ページ番号が物理ページ番号から一定数「２」だけ巡回的にずれる。
論理的なページ順序と物理的なページ順序との間の巡回的なずれはブロックごとに一般に異なる。この巡回的なずれをそのブロックのページオフセットという。ページオフセットは、そのブロックの先頭ページの論理ページ番号と等しい。フラッシュメモリ１ではページオフセットが０〜３１の整数で表され、それぞれのブロックのページオフセット記憶領域に記憶される。ここで、ページオフセット記憶領域は例えば各ブロックの第１ページの冗長領域ＲＡである。ＦＩＧ．２では、先頭ブロックＢ０のページオフセット「２」がその先頭ページＰ０の冗長領域ＲＡに記憶される。ページオフセットはその他に、先頭ページとは別のページの冗長領域ＲＡに記憶されても良い。そのとき記憶されるデータはページオフセットそのものの他、そのページの論理ページ番号であっても良い。半導体メモリ装置１０はそのページの論理ページ番号と物理ページ番号との間のずれからページオフセットを算出できる。
ホストインタフェース３（ＦＩＧ．１参照）は、外部バス７と内部バス８との間でデータを中継し、半導体メモリ装置１０内の各機能部とホストＨとの間でのデータ交換を実現する。ホストインタフェース３は、ホストＨからフラッシュメモリ１に対するデータ読み出し命令を受信するとき、その読み出し命令を解読し、読み出し元のページを指定する論理アドレスをアドレス変換部４へ送出する。ホストインタフェース３は更に、メモリ制御部６によりフラッシュメモリ１からページバッファ２へ転送された読み出し対象データを、外部バス７を通しホストＨへ送出する。ホストインタフェース３は、ホストＨからフラッシュメモリ１に対するデータ書き込み命令を受信するとき、その書き込み命令を解読し、書き込み先のページを指定する論理アドレスをアドレス変換部４へ送出する。ホストインタフェース３は更に、ホストＨから受信した書き込み対象データを、内部バス８を通しページバッファ２へ転送する。
ページバッファ２は好ましくはＳＲＡＭであり、ホストインタフェース３とメモリ制御部６との間で交換されるデータを一時記憶する。ページバッファ２の記憶容量は例えば５１２バイトであり、フラッシュメモリ１内の一ページ（のデータ領域ＤＡ）の記憶容量と実質的に等しい。
アドレス変換部４は、ホストインタフェース３から論理アドレスを入力する。その論理アドレスでは例えば、上位ビットがフラッシュメモリ１内の一ブロックの論理アドレス（論理ブロックアドレス）を示し、下位ビットがそのブロック内の一ページの論理ページ番号を示す。アドレス変換部４はまず、入力された論理アドレスを論理ブロックアドレスと論理ページ番号とに分ける。アドレス変換部４は次にアドレス変換表記憶部５にアクセスする。アドレス変換表記憶部５は好ましくはＲＡＭであり、論理アドレス／物理アドレス変換表Ｌを記憶する。アドレス変換部４はその論理アドレス／物理アドレス変換表Ｌに基づき、論理ブロックアドレスを対応するブロックの物理アドレスへ変換する。その物理アドレスと論理ページ番号との対がメモリ制御部６へ送出される。ここで、論理アドレス／物理アドレス変換表Ｌは、フラッシュメモリ１内の有効なブロックのそれぞれに割り当てられた論理ブロックアドレスをそのブロックの物理アドレスに対応させた表である。アドレス変換部４は例えば、半導体メモリ装置１０の起動時、フラッシュメモリ１内の各ブロックの先頭ページの冗長領域ＲＡを走査する。それにより、フラッシュメモリ１内の有効なブロックの論理ブロックアドレスをリストアップする。こうして、論理アドレス／物理アドレス変換表Ｌが作成され、アドレス変換表記憶部５へ格納される。
アドレス変換表記憶部５は論理アドレス／物理アドレス変換表Ｌの他に、例えば、フラッシュメモリ１のブロックそれぞれについてデータ消去済ブロックであるか否かを示すためのフラグＦを記憶する。アドレス変換部４は、フラッシュメモリ１内の各ブロックの冗長領域ＲＡに記憶されたデータに基づき、ブロックそれぞれについてデータ消去済ブロックであるか否かをチェックし、上記のフラグＦを決定する。アドレス変換部４は更に、それらのフラグＦをアドレス変換表記憶部５へ格納する。
メモリ制御部６は、アドレス変換部４から入力した物理アドレスと論理ページ番号との対に基づきフラッシュメモリ１内の一ページを特定する。メモリ制御部６はその特定されたページに対しデータの読み出し／書き込みを実行する。例えばホストＨからの読み出し命令の受信時、メモリ制御部６はまず、その読み出し命令の宛先アドレスから変換された物理アドレスをアドレス変換部４から入力し、その物理アドレスに対応するフラッシュメモリ１内のブロックを特定する。メモリ制御部６は次に、そのブロックの先頭ページの冗長領域からそのブロックのページオフセットを読み出す。メモリ制御部６はそのページオフセットとアドレス変換部４から入力した論理ページ番号とに基づき、その論理ページ番号に対応する物理ページ番号を特定する。メモリ制御部６は、その物理ページ番号を持つページに記憶されるデータをフラッシュメモリ１から読み出し、ページバッファ２へ転送する。
ホストＨからの書き込み命令の受信時、メモリ制御部６は以下のようにフラッシュメモリ１に対するデータ書き込み、すなわちフラッシュメモリ１の一ブロック内でのページの書き換え又は追記を実行する。ＦＩＧ．３〜５はメモリ制御部６によるデータ書き込み方法を説明するための図である。ＦＩＧ．３は、ホストＨからページバッファ２へ転送される書き込み対象データＤＮ８〜ＤＮ１２（符号ＤＮの横の数値は論理ページ番号を示す）に対しメモリ制御部６が行う、ページバッファ２からフラッシュメモリ１への転送処理を示す。ここで、書き込み命令の宛先アドレスにより示される書き込み先ページの論理ページ番号を「８」とする。更に、書き込み対象データＤＮ８〜ＤＮ１２の総量がフラッシュメモリ１のページ五つ分の記憶容量と実質的に等しいとする。ＦＩＧ．４とＦＩＧ．５とはそれぞれ、メモリ制御部６がＦＩＧ．３に示されるデータ転送処理に続けて行う、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送処理の前半と後半とを示す。
メモリ制御部６はまず、アドレス変換部４から物理アドレスを入力する。メモリ制御部６はそのとき、その物理アドレスに対応するフラッシュメモリ１内のブロックを転送元ブロックとして特定する。例えばＦＩＧ．３〜５では、先頭ブロック（第１ブロック）Ｂ０が転送元ブロックとして特定される。メモリ制御部６は次に、転送元ブロックＢ０の先頭ページ（第１ページ）Ｐ０の冗長領域ＲＡから転送元ブロックＢ０のページオフセット「２」を読み出す。転送元ブロックＢ０のデータ領域ＤＡにはデータＤ０、Ｄ１、…、Ｄ３１（符号Ｄの横の数値はそれぞれのデータを記憶するページの論理ページ番号を示す）が記憶される。ＦＩＧ．３に示される通り、転送元ブロックＢ０ではページＰ０〜Ｐ３１（符号Ｐの横の数値は物理ページ番号を示す）の論理ページ番号が物理ページ番号からページオフセット「２」だけ巡回的にずれる。ここで、ページＰ０、Ｐ１、…、Ｐ３１の中には、データを消去された状態（ブランク）のページが含まれても良い。
メモリ制御部６は更に、書き込み先ページの論理ページ番号「８」をアドレス変換部４から入力し、その論理ページ番号「８」と転送元ブロックＢ０のページオフセット「２」との差「８−２＝６」を求める。ここで、その差は一般には−３１以上３１以下である。その差が負でないとき、メモリ制御部６はその差を書き込み先ページの物理ページ番号として同定する。上記の差が負であるとき、メモリ制御部６はその差に一ブロック当たりの総ページ数（＝３２）を加算し、その和を書き込み先ページの物理ページ番号として同定する。こうして、書き込み先ページの物理ページ番号が０以上３１以下の整数として決定される。ＦＩＧ．３〜５では転送元ブロックＢ０の第７ページＰ６が書き込み先ページとして特定される。
メモリ制御部６はアドレス変換表記憶部５にアクセスし、そこに記憶されたフラグＦに基づき、フラッシュメモリ１内のデータ消去済ブロックの一つを転送先ブロックとして選択する。例えばＦＩＧ．３〜５では第（ｎ＋１）ブロックＢｎ（ｎ≧１）が転送先ブロックとして選択される。転送先ブロックＢｎでは３２枚のページＱ０、Ｑ１、…、Ｑ３１（符号Ｑの横の数値は物理ページ番号を示す）がいずれもブランクである。
ホストインタフェース３はホストＨから送出される書き込み対象データＤＮ８〜ＤＮ１２を受信し、一ページずつページバッファ２へ書き込む。メモリ制御部６は書き込み対象データＤＮ８〜ＤＮ１２を一ページずつ、ページバッファ２から転送先ブロックＢｎへ転送する（ＦＩＧ．３に示される矢印参照）。書き込み対象データＤＮ８〜ＤＮ１２は転送先ブロックＢｎの先頭ページＱ０から順に一ページずつ書き込まれる。それにより、書き込み対象データＤＮ８〜ＤＮ１２は転送先ブロックＢｎの先頭ページＱ０から第５ページＱ４までのデータ領域ＤＡへ格納される（ＦＩＧ．３参照）。メモリ制御部６は更に、書き込み先ページの論理ページ番号「８」を転送先ブロックＢｎのページオフセットとして決定し、転送先ブロックＢｎの先頭ページＱ０の冗長領域ＲＡへ書き込む。
メモリ制御部６は書き込み対象データＤＮ８〜ＤＮ１２をページバッファ２から転送先ブロックＢｎへ転送するごとにその転送回数を数える。ホストＨは半導体メモリ装置１０に対し書き込み対象データの送出の終了を所定のコマンドで通知する。メモリ制御部６はホストインタフェース３を通しそのコマンドを検出する。メモリ制御部６はそのコマンドの検出時、上記の転送回数に基づき書き込み対象データＤＮ８〜ＤＮ１２の格納領域Ｑ０〜Ｑ４のページ数「５」を決定する。メモリ制御部６は更にその後、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送を開始する。ここで、ホストＨが半導体メモリ装置１０に対し、書き込み対象データＤＮ８〜ＤＮ１２の記憶に必要なページ数「５」を予告しても良い。メモリ制御部６はその場合、上記の転送回数がその予告されたページ数「５」に達するとき、転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送を開始する。
ページバッファ２は転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送（以下、ブロック転送という）の開始前に開放される。メモリ制御部６はページバッファ２を利用し、ブロック転送を次のように実行する（ＦＩＧ．４及びＦＩＧ．５参照）。まず、転送元ブロックＢ０の書き込み先ページ（第７ページ）Ｐ６から数えて５番目のページ（第１２ページ）Ｐ１１がブロック転送の開始ページ（以下、転送開始ページという）として特定される（ＦＩＧ．４参照）。次に、転送開始ページＰ１１から最終ページ（第３２ページ）Ｐ３１までのデータＤ１３、…、Ｄ３１、Ｄ０、Ｄ１が以下のように転送先ブロックＢｎへ転送される（ＦＩＧ．４参照）。まず、転送開始ページＰ１１のデータＤ１３がページバッファ２へ読み出される（ＦＩＧ．４に示される矢印Ｒ１参照）。更に、ページバッファ２のデータＤ１３が転送先ブロックＢｎの第６ページＱ５へ書き込まれる（ＦＩＧ．４に示される矢印Ｗ１参照）。次に、転送元ブロックＢ０の第１３ページＰ１２のデータＤ１４がページバッファ２へ読み出される（ＦＩＧ．４に示される矢印Ｒ２参照）。更に、ページバッファ２のデータＤ１４が転送先ブロックＢｎの第７ページＱ６へ書き込まれる（ＦＩＧ．４に示される矢印Ｗ２参照）。以上のようなページバッファ２経由のデータ転送が３２−（６＋５）＝２１回繰り返される。その結果、転送元ブロックＢ０の第１２ページＰ１１から最終ページＰ３１までのデータＤ１３、Ｄ１４、…、Ｄ３１、Ｄ０、Ｄ１が転送先ブロックＢｎの第６ページＱ５から第２６ページＱ２５までのデータ領域ＤＡへ転送される。
メモリ制御部６は続いて、転送元ブロックＢ０の先頭ページＰ０から書き込み先ページＰ６の一つ前のページ（第６ページ）Ｐ５までのデータＤ２、Ｄ３、…、Ｄ７を転送先ブロックＢｎへ以下のように転送する（ＦＩＧ．５参照）。まず、転送元ブロックＢ０の先頭ページＰ０のデータＤ２がページバッファ２へ読み出される（ＦＩＧ．５に示される矢印Ｒ２６参照）。更に、そのデータＤ２がページバッファ２から転送先ブロックＢｎの第２７ページＱ２６へ書き込まれる。次に、転送元ブロックＢ０の第２ページＰ１のデータＤ３）が同様に、ページバッファ２経由で転送先ブロックＢｎの第２８ページＱ２７へ転送される。以上のようなページバッファ２経由のデータ転送が６回繰り返される。その結果、転送元ブロックＢ０の先頭ページＰ０から書き込み先ページＰ６の一つ前のページ（第６ページ）Ｐ５までのデータＤ２、Ｄ３、…、Ｄ７が転送先ブロックＢｎの第２７ページＱ２６から最終ページＱ３１までのデータ領域ＤＡへ転送される。
転送開始ページの物理ページ番号は書き込み先ページの物理ページ番号と書き込み対象データの格納領域のページ数との和に等しい。ここで、その和が一ブロック当たりの総ページ数（＝３２）以上であるとき、その和からその総ページ数を除いた値が転送開始ページの物理ページ番号として同定される。メモリ制御部６はその場合、転送開始ページから書き込み先ページの一つ前のページまでのデータを転送先ブロックＢｎへ、ＦＩＧ．５に示されるデータ転送と同様に転送する。
メモリ制御部６による上記のデータ転送の結果、転送先ブロックＢｎでは転送元ブロックＢ０と比べ、論理ページ番号が「８」〜「１２」であるページのデータＤ８〜Ｄ１２が新たなデータＤＮ８〜ＤＮ１２へ書き換えられる（ＦＩＧ．５参照）。更に、論理的なページ順序が巡回的に変化し、ページオフセットが「２」から「８」へ変更される。
メモリ制御部６はブロック転送の完了時、転送元ブロックＢ０のデータを無効化し又は一括消去する。そのとき、アドレス変換部４は論理アドレス／物理アドレス変換表Ｌを更新し、転送元ブロックＢ０の物理アドレスに対応していた論理アドレスを転送先ブロックＢｎの物理アドレスへ対応させる。アドレス変換部４は更に、転送元ブロックＢ０がデータ消去済ブロックであることを示すように、アドレス変換表記憶部５に記憶されるフラグＦを再設定する。こうして、フラッシュメモリ１の一ブロック内でのページの書き換え及び追記が実現される。
メモリ制御部６は上記の通り、ページバッファ２から転送先ブロックＢｎへのデータ書き込みをその転送先ブロックＢｎの先頭ページＱ０から開始し、最終ページＱ３１で終了する。この書き込み順序は従来の装置と共通である。従って、ページバッファから転送先ブロックへのデータ書き込みについては、従来の装置と共通の構成が利用されても良い。
実施例による半導体メモリ装置１０でのデータ書き込み方法は以下のフローに従い実行される。ＦＩＧ．６は、半導体メモリ装置１０によるデータ書き込み方法のフローチャートである。
＜ステップＳ１＞
ホストＨからデータ書き込み命令が送出される。ホストインタフェース３はそのデータ書き込み命令を受信し、書き込み先ページの論理アドレスを解読する。ホストインタフェース３は更にその論理アドレスをアドレス変換部４へ送出する。
＜ステップＳ２＞
アドレス変換部４がホストインタフェース３から論理アドレスを受け取る。アドレス変換部４はそのとき論理アドレス／物理アドレス変換表Ｌを参照し、その論理アドレスを転送元ブロックＢ０の物理アドレスと書き込み先ページの論理ページ番号ｑ（０≦ｑ≦３１）との対へ変換する。アドレス変換部４は更にその対をメモリ制御部６へ送出する。
＜ステップＳ３＞
メモリ制御部６はアドレス変換表記憶部５にアクセスし、フラグＦに基づきフラッシュメモリ１内のデータ消去済ブロックの一つＢｎを転送先ブロックとして選択する。ここで、転送元ブロックＢ０がデータ消去済ブロックであるとき、転送元ブロックＢ０そのものを転送先ブロックＢｎとしても良い。その場合、以下のステップＳ８とＳ９とはスキップされる。
＜ステップＳ４＞
メモリ制御部６が、アドレス変換部４から入力される論理ページ番号ｑを転送先ブロックＢｎの先頭ページＱ０の冗長領域ＲＡへ書き込む（ＦＩＧ．３参照）。
＜ステップＳ５＞
メモリ制御部６は転送元ブロックＢ０の先頭ページＰ０の冗長領域ＲＡから、転送元ブロックＢ０のページオフセットｐ（０≦ｐ≦３１）を読み出す。
＜ステップＳ６＞
メモリ制御部６は書き込み先ページの論理ページ番号ｑと転送元ブロックＢ０のページオフセットｐとの差を求める。その差ｑ−ｐが負であるとき（ｑ−ｐ＜０）、その差ｑ−ｐに一ブロック当たりの総ページ数（＝３２）を加算する。こうして得られた０以上３１以下の整数値ｑ−ｐ又は３２＋ｑ−ｐが書き込み先ページの物理ページ番号ｒとして同定される：ｒ＝ｑ−ｐ又はｒ＝３２＋ｑ−ｐ。
＜ステップＳ７＞
ホストインタフェース３がホストＨから書き込み対象データＤＮ（ｑ）、ＤＮ（ｑ＋１）、…を受信する（符号ＤＮの横の括弧内の符号は論理ページ番号を示す）。ホストインタフェース３はその書き込み対象データＤＮ（ｑ）、ＤＮ（ｑ＋１）、…を一ページずつ、ページバッファ２へ転送する。ホストインタフェース３は更にその転送をメモリ制御部６へ通知する。メモリ制御部６はホストインタフェース３からの通知ごとに、ページバッファ２のデータＤＮ（ｑ）、ＤＮ（ｑ＋１）、…を転送先ブロックＢｎの先頭ページＱ０から順に転送する。ＦＩＧ．７はその転送のフローチャートである。
サブステップＳＳ７１：メモリ制御部６は、ホストインタフェース３から上記の転送を最初に通知されるとき、第一の整数値変数ｋを０に初期化する。
サブステップＳＳ７２：メモリ制御部６はページバッファ２のデータを転送先ブロックＢｎの第（ｋ＋１）ページＱ（ｋ）（符号Ｑの横の括弧内の符号は物理ページ番号を示す）のデータ領域ＤＡへ転送する（ＦＩＧ．３参照）。
サブステップＳＳ７３：メモリ制御部６は第一の整数値変数ｋを１だけ増やす。こうして、第一の整数値変数ｋは書き込み対象データＤＮ（ｑ）、ＤＮ（ｑ＋１）、…のページバッファ２から転送先ブロックＢｎへの転送回数を示す。
サブステップＳＳ７４：ホストＨは書き込み対象データＤＮ（ｑ）〜ＤＮ（ｑ＋ｍ−１）の送出を終えるとき、その送出終了を示す所定のコマンドを発行する。ホストインタフェース３はそのコマンドを検出する。メモリ制御部６はホストインタフェース３へアクセスし、そのコマンドが検出されたか否かをチェックする。そのコマンドが検出されないとき、処理がサブステップＳＳ７２から反復される。そのコマンドが検出されるとき、処理がサブステップＳＳ７５へ進む。
サブステップＳＳ７５：メモリ制御部６はそのコマンドの検出時、第一の整数値変数ｋを書き込み対象データＤＮ（ｑ）〜ＤＮ（ｑ＋ｍ−１）の格納領域Ｑ０〜Ｑ（ｍ−１）のページ数ｍ（１≦ｍ≦３２−ｑ）として同定する。
＜ステップＳ８＞
メモリ制御部６は転送元ブロックＢ０から転送先ブロックＢｎへのデータ転送（ブロック転送）を開始する。ＦＩＧ．８はそのブロック転送のフローチャートである。
サブステップＳＳ８１：メモリ制御部６は第二の整数値変数ｉを０に初期化する。
サブステップＳＳ８２：メモリ制御部６は、書き込み先ページの物理ページ番号ｒ（ステップＳ６参照）、書き込み対象データＤＮ（ｑ）〜ＤＮ（ｑ＋ｍ−１）の格納領域Ｑ０〜Ｑ（ｍ−１）のページ数ｍ、及び第二の整数値変数ｉを加算する。その和ｒ＋ｍ＋ｉが３２未満であるとき（ｒ＋ｍ＋ｉ＜３２）、処理はサブステップＳＳ８３へ進む。和ｒ＋ｍ＋ｉが３２以上であるとき（ｒ＋ｍ＋ｉ≧３２）、処理はサブステップＳＳ８５へ分岐する。
サブステップＳＳ８３：メモリ制御部６は、転送元ブロックＢ０の第（ｒ＋ｍ＋ｉ＋１）ページＰ（ｒ＋ｍ＋ｉ）に記憶されるデータＤ（ｑ＋ｍ＋ｉ）を転送先ブロックＢｎの第（ｍ＋ｉ＋１）ページＱ（ｍ＋ｉ）へ、ページバッファ２経由で転送する（ＦＩＧ．４参照）。ここで、符号Ｐ及びＤの横の括弧内の符号はそれぞれ物理ページ番号と論理ページ番号とを示す。
サブステップＳＳ８４：メモリ制御部６は第二の整数値変数ｉを１だけ増やす。その後、処理はサブステップＳＳ８２から繰り返される。
サブステップＳＳ８２〜ＳＳ８４のループにより、サブステップＳＳ８３が第二の整数値変数ｉ＝０、１、２、…、３１−（ｒ＋ｍ）のそれぞれについて反復される。その結果、転送元ブロックＢ０の第（ｒ＋ｍ＋１）ページＰ（ｒ＋ｍ）から第３２ページ（最終ページ）Ｐ３１までのデータＤ（ｑ＋ｍ）、Ｄ（ｑ＋ｍ＋１）、…、Ｄ（ｐ−１）が、転送先ブロックＢｎの第（ｍ＋１）ページＱｍから第（３２−ｒ）ページＱ（３１−ｒ）までのデータ領域ＤＡへ転送される（ＦＩＧ．４参照）。
サブステップＳＳ８５：メモリ制御部６は第三の整数値変数ｊの初期値をｒ＋ｍ＋ｉから３２を除いた値と等しく設定する：ｊ＝ｒ＋ｍ＋ｉ−３２。ここで、ｒ＋ｍ＜３２では第三の整数値変数ｊの初期値は０に等しい。ｒ＋ｍ≧３２では第三の整数値変数ｊの初期値はｒ＋ｍ−３２＝ｑ＋ｍ−ｐであり、０以上である。
サブステップＳＳ８６：メモリ制御部６は第三の整数値変数ｊを書き込み先ページの物理ページ番号ｒと比較する。第三の整数値変数ｊが書き込み先ページの物理ページ番号ｒ未満のとき（ｊ＜ｒ）、処理はサブステップＳＳ８７へ進む。第三の整数値変数ｊが書き込み先ページの物理ページ番号ｒに等しいとき（ｊ＝ｒ）、処理はステップＳ９へ分岐する。
サブステップＳＳ８７：メモリ制御部６は、転送元ブロックＢ０の第（ｊ＋１）ページＰ（ｊ）のデータＤ（ｐ＋ｊ）を転送先ブロックＢｎの第（３３−ｒ＋ｊ）ページＱ（３２−ｒ＋ｊ）へ、ページバッファ２経由で転送する（ＦＩＧ．５参照）。
サブステップＳＳ８８：メモリ制御部６は第三の整数値変数ｊを１だけ増やす。その後、処理はサブステップＳＳ８６から繰り返される。
サブステップＳＳ８６〜ＳＳ８８のループにより、サブステップＳＳ８７が第三の整数値変数ｊ＝０、１、２、…、ｒ−１、又はｊ＝ｑ＋ｍ−ｐ、…、ｐ−１のそれぞれについて反復される。その結果、転送元ブロックＢ０の第１ページＰ０から第ｒページＰ（ｒ−１）までのデータＤ（ｐ）、…、Ｄ（ｑ−１）が、転送先ブロックＢｎの第（３３−ｒ）ページＱ（３２−ｒ）から第３２ページ（最終ページ）Ｑ３１までのデータ領域ＤＡへ転送される（ＦＩＧ．５参照）。又は、転送元ブロックＢ０の第（ｑ＋ｍ−ｐ＋１）ページＰ（ｑ＋ｍ−ｐ）から第ｒページＰ（ｒ−１）までのデータＤ（ｑ＋ｍ）、…、Ｄ３１、Ｄ０、…、Ｄ（ｑ−１）が、転送先ブロックＢｎの第（ｍ＋１）ページＱｍから第３２ページ（最終ページ）Ｑ３１までのデータ領域ＤＡへ転送される。
＜ステップＳ９＞
メモリ制御部６は転送元ブロックＢ０のデータを一括消去し、又は無効化する。アドレス変換部４はそのとき、論理アドレス／物理アドレス変換表Ｌを更新し、転送元ブロックＢ０の物理アドレスに対応する論理アドレスを転送先ブロックＢｎの物理アドレスに対応させる。アドレス変換部４は更に、転送元ブロックＢ０がデータ消去済ブロックであることを示すように、アドレス変換表記憶部５に記憶されるフラグＦを再設定する。
以上の通り、実施例による半導体メモリ装置１０は、フラッシュメモリ１の一ブロック内のページの書き換え又は追記時、元のブロックのデータの退避場所としてページバッファ２を兼用する。それにより、従来の装置とは異なり、ページバッファ２とは別の退避バッファを持たない。その結果、従来の装置よりＲＡＭのサイズが小さい。それ故、装置全体のサイズを小さく抑え得る。
発明をある程度の詳細さをもって好適な形態について説明したが、この好適形態の現開示内容は構成の細部において変化してしかるべきものであり、各要素の組合せや順序の変化は請求された発明の範囲及び思想を逸脱することなく実現し得るものである。
【産業上の利用の可能性】
本発明による半導体メモリ装置はページバッファと退避バッファとの統合により小型化を実現する。それ故、本発明は産業上の利用可能性が極めて高い。
【図１】
2004021191.tif 000003
【図２】
2004021191.tif 000004
【図３】
2004021191.tif 000005
【図４】
2004021191.tif 000006
【図５】
2004021191.tif 000007
【図６】
2004021191.tif 000008
【図７】
2004021191.tif 000009
【図８】
2004021191.tif 000010
【図９】
2004021191.tif 000011
【手続補正書】
【提出日】平成16年6月16日(2004.6.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
(A)  複数のページをそれぞれ含む複数のブロックと、前記ブロックそれぞれのページオフセットを記憶するページオフセット記憶領域とを有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
(B)  前記ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
(C)  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを前記書き込み先ページの属する前記ブロック（以下、転送元ブロックという）の物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
(D)  (a)  前記転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号とを読み込み、
(b)  前記データ消去済ブロックの一つを転送先ブロックとして選択し、
(c)  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記ページオフセット記憶領域へ書き込み、
(d)  前記ページオフセット記憶領域から前記転送元ブロックのページオフセットを読み出し、
(e)  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を求め、
(f)  前記ホストから前記ページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込み、
(g)  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、
(h)  前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送する、
ためのメモリ制御部；
を具備する半導体メモリ装置。
【請求項２】
(A)  複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
(B)  前記ブロックそれぞれのページオフセットを記憶するためのページオフセット記憶部；
(C)  前記ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
(D)  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
(E)  (a)  前記転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号とを読み込み、
(b)  前記データ消去済ブロックの一つを転送先ブロックとして選択し、
(c)  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記ページオフセット記憶部へ書き込み、
(d)  前記ページオフセット記憶部から前記転送元ブロックのページオフセットを読み出し、
(e)  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を求め、
(f)  前記ホストから前記ページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込み、
(g)  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、
(h)  前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送する、
ためのメモリ制御部；
を具備する半導体メモリ装置。
【請求項３】
(A)  前記半導体メモリ装置が、
(a)  前記ホストから送出される、前記書き込み先ページの論理アドレスと前記書き込み対象データと、を受信するためのホストインタフェース；及び、
(b)  前記フラッシュメモリ内の前記ブロックそれぞれについて論理アドレスと物理アドレスとの対応を示す論理アドレス／物理アドレス変換表、及び、前記ブロックそれぞれについて前記データ消去済ブロックであるか否かを示すためのフラグ、を記憶するアドレス変換表記憶部；を更に具備し；
(B)  前記メモリ制御部が、前記ページ領域のページ数を数え、そのページ数が所定数に達するとき又は前記ホストから前記書き込み対象データの送出の終了を通知されるとき、前記転送元ブロックから前記転送先ブロックへのデータ転送を開始する；
請求項１又は２のいずれかに記載の半導体メモリ装置。
【請求項４】
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
(A)  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
(B)  前記論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するステップ；
(C)  前記データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
(D)  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとして前記フラッシュメモリ内のページオフセット記憶領域へ書き込むステップ；
(E)  前記ページオフセット記憶領域から前記転送元ブロックのページオフセットを読み出すステップ；
(F)  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を決定するステップ；
(G)  前記ホストからページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込むステップ；
(H)  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送するステップ；
を有するフラッシュメモリへのデータ書き込み方法。
【請求項５】
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
(A)  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
(B)  前記論理アドレスを転送元ブロックの物理アドレスと前記書き込み先ページの論理ページ番号との対へ変換するステップ；
(C)  前記データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
(D)  前記書き込み先ページの論理ページ番号に基づき前記転送先ブロックのページオフセットを決定し、そのページオフセットを前記転送先ブロックのページオフセットとしてページオフセット記憶部へ書き込むステップ；
(E)  前記ページオフセット記憶部から前記転送元ブロックのページオフセットを読み出すステップ；
(F)  前記転送元ブロックのページオフセットと前記書き込み先ページの論理ページ番号とに基づき前記書き込み先ページの物理ページ番号を決定するステップ；
(G)  前記ホストからページバッファへ転送される書き込み対象データを前記転送先ブロックの先頭ページから順に書き込むステップ；
(H)  前記書き込み対象データのページ数と前記書き込み先ページの物理ページ番号とに基づき前記転送元ブロックの転送開始ページの物理ページ番号を求め、前記書き込み対象データが書き込まれた前記転送先ブロックのページ領域、の次のページ以降へ前記転送元ブロック内に記憶されたデータを、前記転送開始ページから順次かつ巡回的に、前記ページバッファを経由し転送するステップ；
を有するフラッシュメモリへのデータ書き込み方法。
【請求項６】
前記ページ領域のページ数を数え、そのページ数が所定数に達するとき又は前記ホストから前記書き込み対象データの送出の終了を通知されるとき、前記転送元ブロックから前記転送先ブロックへのデータ転送を開始するステップ、を更に有する、請求項４又は５のいずれかに記載のフラッシュメモリへのデータ書き込み方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】  明細書
【技術分野】
【０００１】
本発明は、フラッシュメモリを含む半導体メモリ装置に関する。特に、そのフラッシュメモリへのデータ書き込み方法に関する。
【背景技術】
【０００２】
情報処理機器、更に近年ではテレビ及び冷蔵庫等の家電製品はＣＰＵを内蔵し、高度な動作制御をソフトウェアで実現する。それらの機器は動作制御用のプログラム（ファームウェア）及びパラメータを不揮発性メモリに保持する。この不揮発性メモリとして、フラッシュメモリを含む半導体メモリ装置が多用される。半導体メモリ装置は更に、ノートパソコン、携帯情報端末（ＰＤＡ)、ディジタルカメラ、ポータブルオーディオプレーヤ、及び携帯電話等の携帯型情報処理機器（モバイル機器）で、例えばメモリカードのような外付けの小型記録媒体としても多用される。これらの用途では特に、半導体メモリ装置が大容量でかつ小型であることが望ましい。
【０００３】
フラッシュメモリの記憶領域は一般に、一定数のメモリセルごとに複数のページに分割される。データの書き込み及び読み出しはページごとに行われる。記憶領域は更に、一定数のページごとに複数のブロックに分割される。データ消去はブロックごとに一括して行われる。従って、フラッシュメモリではＲＡＭとは異なり、データのページごとの上書きが厳密な意味では実行できない。
【０００４】
従来の半導体メモリ装置は、フラッシュメモリの一部のページに記憶されるデータの書き換え（以下、ページの書き換えという）、及び、データが書き込まれていないページへの新たなデータの書き込み（以下、ページの追記という）を例えば以下のように実現する。FIG.9は、従来の半導体メモリ装置によるフラッシュメモリ1の一ブロックでのページの書き換え又は追記を説明するための図である。
【０００５】
従来の半導体メモリ装置は、フラッシュメモリ1、及び、退避バッファ20とページバッファ2との二つのＲＡＭを有する。フラッシュメモリ1は複数のブロックB0、B1、…に分割される。物理アドレスはブロックB0、B1、…のそれぞれに割り当てられる。ブロックはそれぞれ32枚のページを含む。例えば、先頭ブロック（すなわち第1ブロック）B0はページP0、P1、…、P31を含み、第(n＋1)ブロックBn（n≧1）はページQ0、Q1、…、Q31を含む。ブロック内のページはそのブロックの物理アドレスとそのブロック内でのページ番号との対で特定される。ページ番号は例えば、ブロックの先頭ページから順にそれぞれのページに付与された0〜31のシリアル番号である。退避バッファ20とページバッファ2とはそれぞれ、フラッシュメモリ1の一ページと実質的に同じ記憶容量を持つ。
【０００６】
ホストは半導体メモリ装置に対し、書き込み先ページを示す論理アドレスと書き込み対象データとを送出する。半導体メモリ装置はその書き込み対象データDNをページバッファ2へ格納する。一方、半導体メモリ装置はその論理アドレスからフラッシュメモリ1内の対応ページを特定する。例えば、論理アドレスが先頭ブロックB0の第(p＋1)ページPp（0≦p≦31）を示すとき、半導体メモリ装置はその論理アドレスを、先頭ブロックB0の物理アドレスと第(p＋1)ページPpのページ番号pとの対へ変換する。その物理アドレスがデータの転送元のブロック（以下、転送元ブロックという）の物理アドレスとして特定される。半導体メモリ装置は続いて、フラッシュメモリ1内から、データが書き込まれていないブロック（以下、データ消去済ブロックという）を一つ選択する。半導体メモリ装置は例えば、データ消去済ブロックである第(n＋1)ブロックBnを選択する。その第(n＋1)ブロックBnの物理アドレスが、転送元ブロックB0に記憶されるデータの転送先のブロック（以下、転送先ブロックという）の物理アドレスとして特定される。
【０００７】
従来の半導体メモリ装置は次のように、転送元ブロックB0に記憶されるデータを転送先ブロックBnへ転送する。まず、転送元ブロックB0の先頭ページP0のデータD0が退避バッファ20へ読み出される（FIG.9に示される矢印R0参照）。次に、退避バッファ20のデータD0が転送先ブロックBnの先頭ページQ0へ書き込まれる（FIG.9に示される矢印W0参照）。続いて、転送元ブロックB0の第2ページP1のデータD1が退避バッファ20へ読み出される（FIG.9に示される矢印R1参照）。次に、退避バッファ20のデータD1が転送先ブロックBnの第2ページQ1へ書き込まれる（FIG.9に示される矢印W1参照）。そのような退避バッファ20経由のデータ転送が書き込み先ページ（転送元ブロックB0の第(p＋1)ページPp）のページ番号pと同数回（＝p回）繰り返される。転送元ブロックB0の書き込み先ページ（第(p＋1)ページ）Ppがデータの読み出し元のページに設定されるとき、半導体メモリ装置はそのページについては退避バッファ20へのデータ転送をスキップする。その代わり、転送先ブロックBnの第(p＋1)ページQpへは、ページバッファ2に保持された書き込み対象データDNが書き込まれる（FIG.9に示される矢印Wp参照）。転送元ブロックB0の書き込み先ページPpの次のページ（第(p＋2)ページ）からは再び、退避バッファ20経由のデータ転送が繰り返される。転送元ブロックB0の最終ページP31のデータD31が退避バッファ20経由で転送先ブロックBnの最終ページQ31へ書き込まれる（FIG.9に示される矢印R31とW31参照）。半導体メモリ装置は、転送元ブロックB0の物理アドレスに対応する論理アドレスを転送先ブロックBnの物理アドレスに対応させる。転送先ブロックBnでは転送元ブロックB0と比べ、ページ番号pを持つ第(p＋1)ページPpのデータが書き換えられている。こうして、従来の半導体メモリ装置はフラッシュメモリ1の一ブロックに対し、ページの書き換え及び追記を実現する。
【０００８】
【特許文献１】特開平９−２８２１１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
半導体メモリ装置はできる限り大容量でかつ小型でなければならない。しかし、フラッシュメモリ素子の集積度の向上は容易ではない。従って、フラッシュメモリ素子以外の回路部分のサイズの縮小が望まれる。例えば、複数の機能部のそれぞれが共通の回路部分を含むとき、それらの共通部分を一つに統合し、その統合された部分を複数の機能部に共用させる。それにより、それらの共通部分の数を減らすことが望ましい。半導体メモリ装置でのサイズの縮小はチップ面積の減少により製造コストを低減させるので更に望ましい。従来の半導体メモリ装置は上記の通り、退避バッファとページバッファとの二つのＲＡＭを持つ。これらのＲＡＭは、バッファメモリとして使用される点、及びフラッシュメモリの一ページと実質的に等量の記憶容量を持つ点で共通する。従って、退避バッファとページバッファとを一つのＲＡＭに統一することが強く望まれた。しかし、従来の半導体メモリ装置によるページの書き換えでは上記の通り、書き込み先ページが退避対象となるまで、ページバッファは書き込み対象データを保持しなければならない。それ故、ページバッファを退避バッファとして兼用することは困難だった。
【００１０】
本発明は、退避バッファとページバッファとを一つのＲＡＭに統一することでＲＡＭのサイズを低減し、それにより小型化を実現した半導体メモリ装置、の提供を目的とする。
【課題を解決するための手段】
【００１１】
本発明による半導体メモリ装置は、
(A)  複数のページをそれぞれ含む複数のブロックと、ブロックそれぞれのページオフセットを記憶するページオフセット記憶領域とを有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ；
(B)  ページ一つ当たりのデータ記憶容量と実質的に等量のデータを一時記憶するためのページバッファ；
(C)  書き込み先ページを指定する論理アドレス、をホストから受信し、その論理アドレスを書き込み先ページの属するブロック（以下、転送元ブロックという）の物理アドレスと書き込み先ページの論理ページ番号との対へ変換するためのアドレス変換部；及び、
(D)  (a)  転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号とを読み込み、(b)  データ消去済ブロックの一つを転送先ブロックとして選択し、(c)  書き込み先ページの論理ページ番号に基づき転送先ブロックのページオフセットを決定し、そのページオフセットを転送先ブロックのページオフセットとしてページオフセット記憶領域へ書き込み、(d)  ページオフセット記憶領域から転送元ブロックのページオフセットを読み出し、(e)  転送元ブロックのページオフセットと書き込み先ページの論理ページ番号とに基づき書き込み先ページの物理ページ番号を求め、(f)  ホストからページバッファへ転送される書き込み対象データを転送先ブロックの先頭ページから順に書き込み、(g)  書き込み対象データのページ数と書き込み先ページの物理ページ番号とに基づき転送元ブロックの転送開始ページの物理ページ番号を求め、(h)  書き込み対象データが書き込まれた転送先ブロックのページ領域、の次のページ以降へ転送元ブロック内に記憶されたデータを、転送開始ページから順次かつ巡回的に、ページバッファを経由し転送する、ためのメモリ制御部；を具備する。
【００１２】
論理ページ番号は、ホストによりフラッシュメモリ内のページそれぞれに割り当てられるシリアル番号である。物理ページ番号は、フラッシュメモリ内のブロックごとにそれぞれの先頭ページから順にそれぞれのページに対し付与されるシリアル番号である。ブロックのページオフセットとは、そのブロックでの論理的なページ順序と物理的なページ順序との巡回的なずれをいう。ブロックのページオフセットは好ましくは、そのブロックの先頭ページの論理ページ番号と等しい。本発明による上記の半導体メモリ装置はフラッシュメモリ内のブロックそれぞれのページオフセットを記憶する。ここで、実際に記憶されるデータはページオフセットそのものの他、特定のページの論理ページ番号であっても良い。ページオフセット記憶領域は好ましくは各ブロックの先頭ページの冗長領域である。ページの冗長領域はそのページのデータ領域とは独立にアクセスされる記憶領域である。冗長領域には例えば、そのページに対応する論理アドレス、そのページが空きページか否かを示すフラグ、そのページに書き込まれたデータの有効／無効（すなわちホストによるアクセスの可否）を示すフラグ、及びそのデータの誤り検出符号（例えばＣＲＣ）が記憶される。ページオフセットの記憶場所は上記のフラッシュメモリ内のページオフセット記憶領域の他に、そのフラッシュメモリとは独立な不揮発性メモリ（以下、ページオフセット記憶部という）であっても良い。ページオフセット記憶部は例えばメモリ制御部に含まれる。ページバッファはＲＡＭであり、好ましくはＳＲＡＭである。書き込み対象データのページ数とは、フラッシュメモリ内のページ一つ当たりのデータ記憶容量を単位として表された書き込み対象データの量をいう。書き込み対象データのページ数は、その書き込み対象データが書き込まれた転送先ブロックのページ領域のページ数と等しい。
【００１３】
本発明による上記の半導体メモリ装置ではフラッシュメモリ内のページそれぞれの論理ページ番号が物理ページ番号からブロックごとに巡回的にずれても良い。各ページの物理ページ番号はそのページの論理ページ番号とそのページの属するブロックのページオフセットとに基づき算出される。ホストからブロック内の一部のページの書き換え又は新たなページの追記を指示されるとき、本発明による上記の半導体メモリ装置はまず、ホストからページバッファへ転送される書き込み対象データを転送先ブロックへ、その先頭ページから順に書き込む。それにより、転送元ブロックについて退避処理を開始する前にページバッファが開放される。従って、本発明による上記の半導体メモリ装置は転送元ブロックの退避処理時、ページバッファを退避バッファとして兼用できる。その結果、本発明による上記の半導体メモリ装置は従来の装置よりＲＡＭのサイズが小さい。それ故、フラッシュメモリのサイズを一定とするとき、本発明による上記の半導体メモリ装置は従来の装置より全体のサイズが小さい。
【００１４】
本発明による上記の半導体メモリ装置が、(a)  ホストから送出される、書き込み先ページの論理アドレスと書き込み対象データと、を受信するためのホストインタフェース；及び、(b)  フラッシュメモリ内のブロックそれぞれについて論理アドレスと物理アドレスとの対応を示す論理アドレス／物理アドレス変換表、及び、ブロックそれぞれについてデータ消去済ブロックであるか否かを示すためのフラグ、を記憶するアドレス変換表記憶部；を更に具備し；上記のメモリ制御部が、書き込み対象データのページ数を数え、そのページ数が所定数に達するとき又はホストから書き込み対象データの送出の終了を通知されるとき、転送元ブロックから転送先ブロックへのデータ転送の開始しても良い。ここで、アドレス変換表記憶部は好ましくはＲＡＭである。論理アドレス／物理アドレス変換表は、フラッシュメモリ内のブロックそれぞれに割り当てられた論理アドレスとそのブロックの物理アドレスとの対応関係を示す表である。
【００１５】
ホストインタフェースはメモリ制御部から独立しているので、ホストと半導体メモリ装置との間のデータ通信がフラッシュメモリでのデータ書き込み／読み出しとは独立に実行される。それにより、例えばフラッシュメモリへのデータ書き込みに関するホストの待ち時間が短縮される。
【００１６】
アドレス変換部は例えば、フラッシュメモリ内のページの冗長領域を走査する。それにより、フラッシュメモリ内のブロックそれぞれの論理アドレスをリストアップする。こうして、アドレス変換部は論理アドレス／物理アドレス変換表を作成し、アドレス変換表記憶部へ格納する。アドレス変換部は、書き込み先ページの論理アドレスを転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号との対へ変換するとき、論理アドレス／物理アドレス変換表を参照する。それにより、その論理アドレスに対応する物理アドレスを速やかに検索できる。
アドレス変換部は更に、走査された冗長領域に記憶されたデータに基づき、ブロックそれぞれについてデータ消去済ブロックであるか否かをチェックする。それにより、ブロックそれぞれについて上記のフラグを決定し、アドレス変換表記憶部へ格納する。メモリ制御部は、データ消去済ブロックの一つを転送先ブロックとして選択するとき、上記のフラグを参照する。それにより、転送先ブロックを速やかに決定できる。
【００１７】
メモリ制御部は例えば、ホストからページバッファへ格納される書き込み対象データをページバッファから転送先ブロックへ転送するとき、その転送回数を数える。ホストは半導体メモリ装置に対し書き込み対象データの送出の終了を、例えば所定のコマンドで通知しても良い。メモリ制御部はその場合、その通知の受信時点での上記の転送回数から書き込み対象データのページ数を検出できる。メモリ制御部はそれと同時に、転送元ブロックから転送先ブロックへのデータ転送を開始する。その他に、ホストが半導体メモリ装置に対し、書き込み対象データのページ数を書き込み対象データの送出に先立ち通知しても良い。メモリ制御部はその場合、上記の転送回数がその予告されたページ数に達するとき、転送元ブロックから転送先ブロックへのデータ転送を開始する。
【００１８】
本発明によるフラッシュメモリへのデータ書き込み方法は：
複数のページをそれぞれ含む複数のブロック、を有し、データをデータ消去済ブロックの先頭ページから順に書き込む、フラッシュメモリ、へデータを書き込む方法であり；
(A)  書き込み先ページを指定する論理アドレス、をホストから受信するステップ；
(B)  その論理アドレスを転送元ブロックの物理アドレスと書き込み先ページの論理ページ番号との対へ変換するステップ；
(C)  データ消去済ブロックの一つを転送先ブロックとして選択するステップ；
(D)  書き込み先ページの論理ページ番号に基づき転送先ブロックのページオフセットを決定し、そのページオフセットを転送先ブロックのページオフセットとしてフラッシュメモリ内のページオフセット記憶領域（又はページオフセット記憶部）へ書き込むステップ；
(E)  フラッシュメモリのページオフセット記憶領域（又はページオフセット記憶部）から転送元ブロックのページオフセットを読み出すステップ；
(F)  転送元ブロックのページオフセットと書き込み先ページの論理ページ番号とに基づき書き込み先ページの物理ページ番号を決定するステップ；
(G)  ホストからページバッファへ転送される書き込み対象データを転送先ブロックの先頭ページから順に書き込むステップ；
(H)  書き込み対象データのページ数と書き込み先ページの物理ページ番号とに基づき転送元ブロックの転送開始ページの物理ページ番号を求め、その書き込み対象データが書き込まれた転送先ブロックのページ領域、の次のページ以降へ転送元ブロック内に記憶されたデータを、転送開始ページから順次かつ巡回的に、ページバッファを経由し転送するステップ；を有する。ここで、論理ページ番号、物理ページ番号、ブロックのページオフセット、ページオフセット記憶領域（又はページオフセット記憶部）、ページバッファ、及び書き込み対象データのページ数はそれぞれ上記と同様に定義される。
【００１９】
本発明による上記のデータ書き込み方法では、フラッシュメモリ内のページそれぞれの論理ページ番号が物理ページ番号からブロックごとに巡回的にずれても良い。各ページの物理ページ番号はそのページの論理ページ番号とそのページの属するブロックのページオフセットとに基づき算出される。ホストからブロック内のページの書き換え又は追記を指示されるとき、ホストからページバッファへ転送される書き込み対象データがまず、転送先ブロックへその先頭ページから順に書き込まれる。それにより、転送元ブロックについて退避処理を開始する前にページバッファが開放される。従って、その退避処理時、そのページバッファが退避バッファとして兼用され得る。その結果、上記のデータ書き込み方法では必要なＲＡＭのサイズが従来の方法より小さい。それ故、フラッシュメモリのサイズを一定とするとき、半導体メモリ装置全体のサイズが従来の装置より小さい。
【００２０】
本発明による上記のデータ書き込み方法が更に、書き込み対象データが書き込まれた転送先ブロックのページ領域のページ数を数え、そのページ数が所定数に達するとき又はホストから書き込み対象データの送出の終了を通知されるとき、転送元ブロックから転送先ブロックへのデータ転送を開始するステップ、を有しても良い。例えば、書き込み対象データがページバッファから転送先ブロックへ転送されるごとに、その転送回数が数えられる。ホストは半導体メモリ装置に対し書き込み対象データの送出の終了を、例えば所定のコマンドで通知しても良い。その場合、その通知の受信時点での上記の転送回数から上記のページ領域のページ数が検出される。更にその通知時、転送元ブロックから転送先ブロックへのデータ転送が開始される。その他に、ホストが半導体メモリ装置に対し、書き込み対象データのページ数を書き込み対象データの送出に先立ち通知しても良い。その場合、上記の転送回数がその予告されたページ数に達するとき、転送元ブロックから転送先ブロックへのデータ転送が開始される。
【発明の効果】
【００２１】
本発明による上記の半導体メモリ装置及びそのデータ書き込み方法では、転送元ブロックについて退避処理が開始される前にページバッファが開放される。従って、その退避処理時、ページバッファが退避バッファとして兼用され得る。その結果、上記の半導体メモリ装置は従来の装置よりＲＡＭのサイズが小さい。それ故、フラッシュメモリのサイズを一定とするとき、本発明による上記の半導体メモリ装置は従来の装置より全体のサイズが小さい。特にチップ面積が小さいので、本発明による上記の半導体メモリ装置は従来の装置より製造コストが低減する。
【００２２】
発明の新規な特徴は添付の請求の範囲に特に記載したものに他ならないが、構成及び内容の双方に関して本発明は、他の目的や特徴と合わせて図面と共に以下の詳細な説明を読むことにより、より良く理解され評価されるであろう。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の最適な実施の形態について、図面を参照しつつ説明する。
FIG.1は本発明の実施例による半導体メモリ装置10を示すブロック図である。半導体メモリ装置10はホストHと外部バス7で接続される。ここで、ホストHは例えば、パソコン等の情報処理機器、又は、ＰＤＡ若しくは携帯電話等のモバイル機器である。半導体メモリ装置10はホストHに内蔵されても、外付けされても良い。
【００２４】
フラッシュメモリ1は、好ましくはＮＡＮＤ型ＥＥＰＲＯＭ（電気的消去及び書き込み可能不揮発性メモリ）である。FIG.2はフラッシュメモリ1内のセルアレイの構成の概略を示す模式図である。セルアレイは複数のブロックB0、B1、B2、…の集合である。それぞれのブロックは例えば32枚のページを含む。例えば、先頭ブロックB0は32枚のページP0〜P31を含む。他のブロックB1、B2、…についても同様である。フラッシュメモリ1では、データがブロックごとに一括してのみ消去される。それぞれのページは、(512＋16）列×8個のメモリセルの二次元配列を含む。ここで、8個のメモリセルがＮＡＮＤ型に接続され、一つの列を構成する。更に、512列のメモリセルがデータ領域DAを構成し、残り16列のメモリセルは冗長領域RAである。フラッシュメモリ1では、データの書き込み及び読み出しが一ページずつ行われる。但し、データ領域DAと冗長領域RAとは互いに独立にアクセスされる。一つのメモリセルは例えば1ビットのデータを記憶する。そのとき、1列のメモリセルは8ビット＝1バイトを記憶する。ＮＡＮＤ型ＥＥＰＲＯＭでは、1列のメモリセルにより記憶されるデータが一つのワードとして同時に入出力される。セルアレイのデータ領域DAは上記の構成から計算されるとおり、1ページ当たりでは512バイト、1ブロック当たりでは512バイト×32＝16kB、の記憶容量を持つ。冗長領域RAは、その所属するページのデータ領域DAに記憶されたデータの属性を記憶する。例えば、その所属するページに対応する論理アドレス、そのページが空きページか否かを示すフラグ、そのページに書き込まれたデータの有効／無効（すなわちホストによるアクセスの可否）を示すフラグ、又はそのデータの誤り検出符号（例えばＣＲＣ）を含む。
【００２５】
フラッシュメモリ1へ一ブロック以上のサイズを持つ一連のデータが記憶されるとき、そのデータはページごとに分割され、データ消去済ブロックの先頭ページから順にそれぞれのページのデータ領域DAへ書き込まれる。フラッシュメモリ1では特に、それぞれのブロック内で論理的なページ順序が物理的なページ順序から次のように巡回的にずれても良い。例えばFIG.2では、先頭ブロックB0の先頭ページ（第1ページ）P0、第2ページP1、…、第30ページP29、第31ページP30、及び最終ページ（第32ページ）P31のそれぞれはデータD2、D3、…、D31、D0、及びD1を記憶する。ここで、先頭ブロックB0のページを示す符号Pの横の数値がそれぞれのページの物理ページ番号を示す。更に、ページP0〜P31のそれぞれに記憶されるデータを示す符号Dの横の数値がそれぞれのページの論理ページ番号を示す。すなわち、先頭ブロックB0のページP0〜P31それぞれの論理ページ番号が物理ページ番号から一定数「2」だけ巡回的にずれる。
【００２６】
論理的なページ順序と物理的なページ順序との間の巡回的なずれはブロックごとに一般に異なる。この巡回的なずれをそのブロックのページオフセットという。ページオフセットは、そのブロックの先頭ページの論理ページ番号と等しい。フラッシュメモリ1ではページオフセットが0〜31の整数で表され、それぞれのブロックのページオフセット記憶領域に記憶される。ここで、ページオフセット記憶領域は例えば各ブロックの第1ページの冗長領域RAである。FIG.2では、先頭ブロックB0のページオフセット「2」がその先頭ページP0の冗長領域RAに記憶される。ページオフセットはその他に、先頭ページとは別のページの冗長領域RAに記憶されても良い。そのとき記憶されるデータはページオフセットそのものの他、そのページの論理ページ番号であっても良い。半導体メモリ装置10はそのページの論理ページ番号と物理ページ番号との間のずれからページオフセットを算出できる。
【００２７】
ホストインタフェース3（FIG.1参照）は、外部バス7と内部バス8との間でデータを中継し、半導体メモリ装置10内の各機能部とホストHとの間でのデータ交換を実現する。ホストインタフェース3は、ホストHからフラッシュメモリ1に対するデータ読み出し命令を受信するとき、その読み出し命令を解読し、読み出し元のページを指定する論理アドレスをアドレス変換部4へ送出する。ホストインタフェース3は更に、メモリ制御部6によりフラッシュメモリ1からページバッファ2へ転送された読み出し対象データを、外部バス7を通しホストHへ送出する。ホストインタフェース3は、ホストHからフラッシュメモリ1に対するデータ書き込み命令を受信するとき、その書き込み命令を解読し、書き込み先のページを指定する論理アドレスをアドレス変換部4へ送出する。ホストインタフェース3は更に、ホストHから受信した書き込み対象データを、内部バス8を通しページバッファ2へ転送する。
ページバッファ2は好ましくはＳＲＡＭであり、ホストインタフェース3とメモリ制御部6との間で交換されるデータを一時記憶する。ページバッファ2の記憶容量は例えば512バイトであり、フラッシュメモリ1内の一ページ（のデータ領域DA）の記憶容量と実質的に等しい。
【００２８】
アドレス変換部4は、ホストインタフェース3から論理アドレスを入力する。その論理アドレスでは例えば、上位ビットがフラッシュメモリ1内の一ブロックの論理アドレス（論理ブロックアドレス）を示し、下位ビットがそのブロック内の一ページの論理ページ番号を示す。アドレス変換部4はまず、入力された論理アドレスを論理ブロックアドレスと論理ページ番号とに分ける。アドレス変換部4は次にアドレス変換表記憶部5にアクセスする。アドレス変換表記憶部5は好ましくはＲＡＭであり、論理アドレス／物理アドレス変換表Lを記憶する。アドレス変換部4はその論理アドレス／物理アドレス変換表Lに基づき、論理ブロックアドレスを対応するブロックの物理アドレスへ変換する。その物理アドレスと論理ページ番号との対がメモリ制御部6へ送出される。ここで、論理アドレス／物理アドレス変換表Lは、フラッシュメモリ1内の有効なブロックのそれぞれに割り当てられた論理ブロックアドレスをそのブロックの物理アドレスに対応させた表である。アドレス変換部4は例えば、半導体メモリ装置10の起動時、フラッシュメモリ1内の各ブロックの先頭ページの冗長領域RAを走査する。それにより、フラッシュメモリ1内の有効なブロックの論理ブロックアドレスをリストアップする。こうして、論理アドレス／物理アドレス変換表Lが作成され、アドレス変換表記憶部5へ格納される。
【００２９】
アドレス変換表記憶部5は論理アドレス／物理アドレス変換表Lの他に、例えば、フラッシュメモリ1のブロックそれぞれについてデータ消去済ブロックであるか否かを示すためのフラグFを記憶する。アドレス変換部4は、フラッシュメモリ1内の各ブロックの冗長領域RAに記憶されたデータに基づき、ブロックそれぞれについてデータ消去済ブロックであるか否かをチェックし、上記のフラグFを決定する。アドレス変換部4は更に、それらのフラグFをアドレス変換表記憶部5へ格納する。
【００３０】
メモリ制御部6は、アドレス変換部4から入力した物理アドレスと論理ページ番号との対に基づきフラッシュメモリ1内の一ページを特定する。メモリ制御部6はその特定されたページに対しデータの読み出し／書き込みを実行する。例えばホストHからの読み出し命令の受信時、メモリ制御部6はまず、その読み出し命令の宛先アドレスから変換された物理アドレスをアドレス変換部4から入力し、その物理アドレスに対応するフラッシュメモリ1内のブロックを特定する。メモリ制御部6は次に、そのブロックの先頭ページの冗長領域からそのブロックのページオフセットを読み出す。メモリ制御部6はそのページオフセットとアドレス変換部4から入力した論理ページ番号とに基づき、その論理ページ番号に対応する物理ページ番号を特定する。メモリ制御部6は、その物理ページ番号を持つページに記憶されるデータをフラッシュメモリ1から読み出し、ページバッファ2へ転送する。
【００３１】
ホストHからの書き込み命令の受信時、メモリ制御部6は以下のようにフラッシュメモリ1に対するデータ書き込み、すなわちフラッシュメモリ1の一ブロック内でのページの書き換え又は追記を実行する。FIG.3〜5はメモリ制御部6によるデータ書き込み方法を説明するための図である。FIG.3は、ホストHからページバッファ2へ転送される書き込み対象データDN8〜DN12（符号DNの横の数値は論理ページ番号を示す）に対しメモリ制御部6が行う、ページバッファ2からフラッシュメモリ1への転送処理を示す。ここで、書き込み命令の宛先アドレスにより示される書き込み先ページの論理ページ番号を「8」とする。更に、書き込み対象データDN8〜DN12の総量がフラッシュメモリ1のページ五つ分の記憶容量と実質的に等しいとする。FIG.4とFIG.5とはそれぞれ、メモリ制御部6がFIG.3に示されるデータ転送処理に続けて行う、転送元ブロックB0から転送先ブロックBnへのデータ転送処理の前半と後半とを示す。
【００３２】
メモリ制御部6はまず、アドレス変換部4から物理アドレスを入力する。メモリ制御部6はそのとき、その物理アドレスに対応するフラッシュメモリ1内のブロックを転送元ブロックとして特定する。例えばFIG.3〜5では、先頭ブロック（第1ブロック）B0が転送元ブロックとして特定される。メモリ制御部6は次に、転送元ブロックB0の先頭ページ（第1ページ）P0の冗長領域RAから転送元ブロックB0のページオフセット「2」を読み出す。転送元ブロックB0のデータ領域DAにはデータD0、D1、…、D31（符号Dの横の数値はそれぞれのデータを記憶するページの論理ページ番号を示す）が記憶される。FIG.3に示される通り、転送元ブロックB0ではページP0〜P31（符号Pの横の数値は物理ページ番号を示す）の論理ページ番号が物理ページ番号からページオフセット「2」だけ巡回的にずれる。ここで、ページP0、P1、…、P31の中には、データを消去された状態（ブランク）のページが含まれても良い。
【００３３】
メモリ制御部6は更に、書き込み先ページの論理ページ番号「8」をアドレス変換部4から入力し、その論理ページ番号「8」と転送元ブロックB0のページオフセット「2」との差「8−2＝6」を求める。ここで、その差は一般には−31以上31以下である。その差が負でないとき、メモリ制御部6はその差を書き込み先ページの物理ページ番号として同定する。上記の差が負であるとき、メモリ制御部6はその差に一ブロック当たりの総ページ数（＝32）を加算し、その和を書き込み先ページの物理ページ番号として同定する。こうして、書き込み先ページの物理ページ番号が0以上31以下の整数として決定される。FIG.3〜5では転送元ブロックB0の第7ページP6が書き込み先ページとして特定される。
【００３４】
メモリ制御部6はアドレス変換表記憶部5にアクセスし、そこに記憶されたフラグFに基づき、フラッシュメモリ1内のデータ消去済ブロックの一つを転送先ブロックとして選択する。例えばFIG.3〜5では第(n＋1)ブロックBn（n≧1）が転送先ブロックとして選択される。転送先ブロックBnでは32枚のページQ0、Q1、…、Q31（符号Qの横の数値は物理ページ番号を示す）がいずれもブランクである。
【００３５】
ホストインタフェース3はホストHから送出される書き込み対象データDN8〜DN12を受信し、一ページずつページバッファ2へ書き込む。メモリ制御部6は書き込み対象データDN8〜DN12を一ページずつ、ページバッファ2から転送先ブロックBnへ転送する（FIG.3に示される矢印参照）。書き込み対象データDN8〜DN12は転送先ブロックBnの先頭ページQ0から順に一ページずつ書き込まれる。それにより、書き込み対象データDN8〜DN12は転送先ブロックBnの先頭ページQ0から第5ページQ4までのデータ領域DAへ格納される（FIG.3参照）。メモリ制御部6は更に、書き込み先ページの論理ページ番号「8」を転送先ブロックBnのページオフセットとして決定し、転送先ブロックBnの先頭ページQ0の冗長領域RAへ書き込む。
【００３６】
メモリ制御部6は書き込み対象データDN8〜DN12をページバッファ2から転送先ブロックBnへ転送するごとにその転送回数を数える。ホストHは半導体メモリ装置10に対し書き込み対象データの送出の終了を所定のコマンドで通知する。メモリ制御部6はホストインタフェース3を通しそのコマンドを検出する。メモリ制御部6はそのコマンドの検出時、上記の転送回数に基づき書き込み対象データDN8〜DN12の格納領域Q0〜Q4のページ数「5」を決定する。メモリ制御部6は更にその後、転送元ブロックB0から転送先ブロックBnへのデータ転送を開始する。ここで、ホストHが半導体メモリ装置10に対し、書き込み対象データDN8〜DN12の記憶に必要なページ数「5」を予告しても良い。メモリ制御部6はその場合、上記の転送回数がその予告されたページ数「5」に達するとき、転送元ブロックB0から転送先ブロックBnへのデータ転送を開始する。
【００３７】
ページバッファ2は転送元ブロックB0から転送先ブロックBnへのデータ転送（以下、ブロック転送という）の開始前に開放される。メモリ制御部6はページバッファ2を利用し、ブロック転送を次のように実行する（FIG.4及びFIG.5参照）。まず、転送元ブロックB0の書き込み先ページ（第7ページ）P6から数えて5番目のページ（第12ページ）P11がブロック転送の開始ページ（以下、転送開始ページという）として特定される（FIG.4参照）。次に、転送開始ページP11から最終ページ（第32ページ）P31までのデータD13、…、D31、D0、D1が以下のように転送先ブロックBnへ転送される（FIG.4参照）。まず、転送開始ページP11のデータD13がページバッファ2へ読み出される（FIG.4に示される矢印R1参照）。更に、ページバッファ2のデータD13が転送先ブロックBnの第6ページQ5へ書き込まれる（FIG.4に示される矢印W1参照）。次に、転送元ブロックB0の第13ページP12のデータD14がページバッファ2へ読み出される（FIG.4に示される矢印R2参照）。更に、ページバッファ2のデータD14が転送先ブロックBnの第7ページQ6へ書き込まれる（FIG.4に示される矢印W2参照）。以上のようなページバッファ2経由のデータ転送が32−(6＋5)＝21回繰り返される。その結果、転送元ブロックB0の第12ページP11から最終ページP31までのデータD13、D14、…、D31、D0、D1が転送先ブロックBnの第6ページQ5から第26ページQ25までのデータ領域DAへ転送される。
【００３８】
メモリ制御部6は続いて、転送元ブロックB0の先頭ページP0から書き込み先ページP6の一つ前のページ（第6ページ）P5までのデータD2、D3、…、D7を転送先ブロックBnへ以下のように転送する（FIG.5参照）。まず、転送元ブロックB0の先頭ページP0のデータD2がページバッファ2へ読み出される（FIG.5に示される矢印R26参照）。更に、そのデータD2がページバッファ2から転送先ブロックBnの第27ページQ26へ書き込まれる。次に、転送元ブロックB0の第2ページP1のデータD3)が同様に、ページバッファ2経由で転送先ブロックBnの第28ページQ27へ転送される。以上のようなページバッファ2経由のデータ転送が6回繰り返される。その結果、転送元ブロックB0の先頭ページP0から書き込み先ページP6の一つ前のページ（第6ページ）P5までのデータD2、D3、…、D7が転送先ブロックBnの第27ページQ26から最終ページQ31までのデータ領域DAへ転送される。
【００３９】
転送開始ページの物理ページ番号は書き込み先ページの物理ページ番号と書き込み対象データの格納領域のページ数との和に等しい。ここで、その和が一ブロック当たりの総ページ数（＝32）以上であるとき、その和からその総ページ数を除いた値が転送開始ページの物理ページ番号として同定される。メモリ制御部6はその場合、転送開始ページから書き込み先ページの一つ前のページまでのデータを転送先ブロックBnへ、FIG.5に示されるデータ転送と同様に転送する。
【００４０】
メモリ制御部6による上記のデータ転送の結果、転送先ブロックBnでは転送元ブロックB0と比べ、論理ページ番号が「8」〜「12」であるページのデータD8〜D12が新たなデータDN8〜DN12へ書き換えられる（FIG.5参照）。更に、論理的なページ順序が巡回的に変化し、ページオフセットが「2」から「8」へ変更される。
【００４１】
メモリ制御部6はブロック転送の完了時、転送元ブロックB0のデータを無効化し又は一括消去する。そのとき、アドレス変換部4は論理アドレス／物理アドレス変換表Lを更新し、転送元ブロックB0の物理アドレスに対応していた論理アドレスを転送先ブロックBnの物理アドレスへ対応させる。アドレス変換部4は更に、転送元ブロックB0がデータ消去済ブロックであることを示すように、アドレス変換表記憶部5に記憶されるフラグFを再設定する。こうして、フラッシュメモリ1の一ブロック内でのページの書き換え及び追記が実現される。
【００４２】
メモリ制御部6は上記の通り、ページバッファ2から転送先ブロックBnへのデータ書き込みをその転送先ブロックBnの先頭ページQ0から開始し、最終ページQ31で終了する。この書き込み順序は従来の装置と共通である。従って、ページバッファから転送先ブロックへのデータ書き込みについては、従来の装置と共通の構成が利用されても良い。
【００４３】
実施例による半導体メモリ装置10でのデータ書き込み方法は以下のフローに従い実行される。FIG.6は、半導体メモリ装置10によるデータ書き込み方法のフローチャートである。
＜ステップS1＞
ホストHからデータ書き込み命令が送出される。ホストインタフェース3はそのデータ書き込み命令を受信し、書き込み先ページの論理アドレスを解読する。ホストインタフェース3は更にその論理アドレスをアドレス変換部4へ送出する。
＜ステップS2＞
アドレス変換部4がホストインタフェース3から論理アドレスを受け取る。アドレス変換部4はそのとき論理アドレス／物理アドレス変換表Lを参照し、その論理アドレスを転送元ブロックB0の物理アドレスと書き込み先ページの論理ページ番号q（0≦q≦31）との対へ変換する。アドレス変換部4は更にその対をメモリ制御部6へ送出する。
【００４４】
＜ステップS3＞
メモリ制御部6はアドレス変換表記憶部5にアクセスし、フラグFに基づきフラッシュメモリ1内のデータ消去済ブロックの一つBnを転送先ブロックとして選択する。ここで、転送元ブロックB0がデータ消去済ブロックであるとき、転送元ブロックB0そのものを転送先ブロックBnとしても良い。その場合、以下のステップS8とS9とはスキップされる。
＜ステップS4＞
メモリ制御部6が、アドレス変換部4から入力される論理ページ番号qを転送先ブロックBnの先頭ページQ0の冗長領域RAへ書き込む（FIG.3参照)。
＜ステップS5＞
メモリ制御部6は転送元ブロックB0の先頭ページP0の冗長領域RAから、転送元ブロックB0のページオフセットp（0≦p≦31）を読み出す。
＜ステップS6＞
メモリ制御部6は書き込み先ページの論理ページ番号qと転送元ブロックB0のページオフセットpとの差を求める。その差q−pが負であるとき（q−p＜0)、その差q−pに一ブロック当たりの総ページ数（＝32）を加算する。こうして得られた0以上31以下の整数値q−p又は32＋q−pが書き込み先ページの物理ページ番号rとして同定される：r＝q−p又はr＝32＋q−p。
【００４５】
＜ステップS7＞
ホストインタフェース3がホストHから書き込み対象データDN(q)、DN(q＋1)、…を受信する（符号DNの横の括弧内の符号は論理ページ番号を示す）。ホストインタフェース3はその書き込み対象データDN(q)、DN(q＋1)、…を一ページずつ、ページバッファ2へ転送する。ホストインタフェース3は更にその転送をメモリ制御部6へ通知する。メモリ制御部6はホストインタフェース3からの通知ごとに、ページバッファ2のデータDN(q)、DN(q＋1)、…を転送先ブロックBnの先頭ページQ0から順に転送する。FIG.7はその転送のフローチャートである。
サブステップSS71：メモリ制御部6は、ホストインタフェース3から上記の転送を最初に通知されるとき、第一の整数値変数kを0に初期化する。
サブステップSS72：メモリ制御部6はページバッファ2のデータを転送先ブロックBnの第(k＋1)ページQ(k)（符号Qの横の括弧内の符号は物理ページ番号を示す）のデータ領域DAへ転送する（FIG.3参照)。
サブステップSS73：メモリ制御部6は第一の整数値変数kを1だけ増やす。こうして、第一の整数値変数kは書き込み対象データDN(q)、DN(q＋1)、…のページバッファ2から転送先ブロックBnへの転送回数を示す。
サブステップSS74：ホストHは書き込み対象データDN(q)〜DN(q＋m−1）の送出を終えるとき、その送出終了を示す所定のコマンドを発行する。ホストインタフェース3はそのコマンドを検出する。メモリ制御部6はホストインタフェース3へアクセスし、そのコマンドが検出されたか否かをチェックする。そのコマンドが検出されないとき、処理がサブステップSS72から反復される。そのコマンドが検出されるとき、処理がサブステップSS75へ進む。
サブステップSS75：メモリ制御部6はそのコマンドの検出時、第一の整数値変数kを書き込み対象データDN(q)〜DN(q＋m−1）の格納領域Q0〜Q(m−1）のページ数m（1≦m≦32−q）として同定する。
【００４６】
＜ステップS8＞
メモリ制御部6は転送元ブロックB0から転送先ブロックBnへのデータ転送（ブロック転送）を開始する。FIG.8はそのブロック転送のフローチャートである。
サブステップSS81：メモリ制御部6は第二の整数値変数iを0に初期化する。
サブステップSS82：メモリ制御部6は、書き込み先ページの物理ページ番号r（ステップS6参照）、書き込み対象データDN(q)〜DN(q＋m−1）の格納領域Q0〜Q(m−1）のページ数m、及び第二の整数値変数iを加算する。その和r＋m＋iが32未満であるとき（r＋m＋i＜32)、処理はサブステップSS83へ進む。和r＋m＋iが32以上であるとき（r＋m＋i≧32)、処理はサブステップSS85へ分岐する。
サブステップSS83：メモリ制御部6は、転送元ブロックB0の第(r＋m＋i＋1)ページP(r＋m＋i）に記憶されるデータD(q＋m＋i）を転送先ブロックBnの第(m＋i＋1)ページQ(m＋i）へ、ページバッファ2経由で転送する（FIG.4参照)。ここで、符号P及びDの横の括弧内の符号はそれぞれ物理ページ番号と論理ページ番号とを示す。
サブステップSS84：メモリ制御部6は第二の整数値変数iを1だけ増やす。その後、処理はサブステップSS82から繰り返される。
サブステップSS82〜SS84のループにより、サブステップSS83が第二の整数値変数i＝0、1、2、…、31−(r＋m)のそれぞれについて反復される。その結果、転送元ブロックB0の第(r＋m＋1)ページP(r＋m）から第32ページ（最終ページ）P31までのデータD(q＋m)、D(q＋m＋1)、…、D(p−1）が、転送先ブロックBnの第(m＋1)ページQmから第(32−r)ページQ(31−r）までのデータ領域DAへ転送される（FIG.4参照)。
【００４７】
サブステップSS85：メモリ制御部6は第三の整数値変数jの初期値をr＋m＋iから32を除いた値と等しく設定する：j＝r＋m＋i−32。ここで、r＋m＜32では第三の整数値変数jの初期値は0に等しい。r＋m≧32では第三の整数値変数jの初期値はr＋m−32＝q＋m−pであり、0以上である。
サブステップSS86：メモリ制御部6は第三の整数値変数jを書き込み先ページの物理ページ番号rと比較する。第三の整数値変数jが書き込み先ページの物理ページ番号r未満のとき（j＜r）、処理はサブステップSS87へ進む。第三の整数値変数jが書き込み先ページの物理ページ番号rに等しいとき（j＝r）、処理はステップS9へ分岐する。
サブステップSS87：メモリ制御部6は、転送元ブロックB0の第(j＋1)ページP(j）のデータD(p＋j）を転送先ブロックBnの第(33−r＋j)ページQ(32−r＋j）へ、ページバッファ2経由で転送する（FIG.5参照)。
サブステップSS88：メモリ制御部6は第三の整数値変数jを1だけ増やす。その後、処理はサブステップSS86から繰り返される。
サブステップSS86〜SS88のループにより、サブステップSS87が第三の整数値変数j＝0、1、2、…、r−1、又はj＝q＋m−p、…、p−1のそれぞれについて反復される。その結果、転送元ブロックB0の第1ページP0から第rページP(r−1)までのデータD(p)、…、D(q−1）が、転送先ブロックBnの第(33−r)ページQ(32−r）から第32ページ（最終ページ）Q31までのデータ領域DAへ転送される（FIG.5参照)。又は、転送元ブロックB0の第(q＋m−p＋1)ページP(q＋m−p)から第rページP(r−1)までのデータD(q＋m)、…、D31、D0、…、D(q−1）が、転送先ブロックBnの第(m＋1)ページQmから第32ページ（最終ページ）Q31までのデータ領域DAへ転送される。
【００４８】
＜ステップS9＞
メモリ制御部6は転送元ブロックB0のデータを一括消去し、又は無効化する。アドレス変換部4はそのとき、論理アドレス／物理アドレス変換表Lを更新し、転送元ブロックB0の物理アドレスに対応する論理アドレスを転送先ブロックBnの物理アドレスに対応させる。アドレス変換部4は更に、転送元ブロックB0がデータ消去済ブロックであることを示すように、アドレス変換表記憶部5に記憶されるフラグFを再設定する。
【００４９】
以上の通り、実施例による半導体メモリ装置10は、フラッシュメモリ1の一ブロック内のページの書き換え又は追記時、元のブロックのデータの退避場所としてページバッファ2を兼用する。それにより、従来の装置とは異なり、ページバッファ2とは別の退避バッファを持たない。その結果、従来の装置よりＲＡＭのサイズが小さい。それ故、装置全体のサイズを小さく抑え得る。
【００５０】
発明をある程度の詳細さをもって好適な形態について説明したが、この好適形態の現開示内容は構成の細部において変化してしかるべきものであり、各要素の組合せや順序の変化は請求された発明の範囲及び思想を逸脱することなく実現し得るものである。
【産業上の利用可能性】
【００５１】
本発明による半導体メモリ装置はページバッファと退避バッファとの統合により小型化を実現する。それ故、本発明は産業上の利用可能性が極めて高い。
【図面の簡単な説明】
【００５２】
【FIG.1】  本発明の実施例による半導体メモリ装置10を示すブロック図である。
【FIG.2】  本発明の実施例によるフラッシュメモリ1内のセルアレイの構成の概略を示す模式図である。
【FIG.3】  本発明の実施例による半導体メモリ装置10について、ホストHからページバッファ2へ転送される書き込み対象データDN8〜DN12に対しメモリ制御部6が行う、ページバッファ2からフラッシュメモリ1への転送処理を示す図である。
【FIG.4】  本発明の実施例による半導体メモリ装置10について、メモリ制御部6がFIG.3に示されるデータ転送処理に続けて行う、転送元ブロックB0から転送先ブロックBnへのデータ転送処理の前半を示す図である。
【FIG.5】  本発明の実施例による半導体メモリ装置10について、メモリ制御部6がFIG.3に示されるデータ転送処理に続けて行う、転送元ブロックB0から転送先ブロックBnへのデータ転送処理の後半を示す図である。
【FIG.6】  本発明の実施例による半導体メモリ装置10のデータ書き込み方法のフローチャートである。
【FIG.7】  本発明の実施例による半導体メモリ装置10のデータ書き込み方法について、ページバッファ2から転送先ブロックBnへの書き込み対象データDN(q)〜DN(q＋m−1）の転送（ステップS7）のフローチャートである。
【FIG.8】  本発明の実施例による半導体メモリ装置10のデータ書き込み方法について、転送元ブロックB0から転送先ブロックBnへのデータ転送（ステップS8）のフローチャートである。
【FIG.9】  従来の半導体メモリ装置によるフラッシュメモリ1の一ブロックでのページの書き換え又は追記を説明するための図である。
【００５３】
図面の一部又は全部は、図示を目的とした概要的表現により描かれており、必ずしもそこに示された要素の実際の相対的大きさや位置を忠実に描写しているとは限らないことは考慮願いたい。
【国際調査報告】
2004021191.tif 000012
2004021191.tif 000013