JP2002358233A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Info

Publication number
JP2002358233A
JP2002358233A JP2001164546A JP2001164546A JP2002358233A JP 2002358233 A JP2002358233 A JP 2002358233A JP 2001164546 A JP2001164546 A JP 2001164546A JP 2001164546 A JP2001164546 A JP 2001164546A JP 2002358233 A JP2002358233 A JP 2002358233A
Authority
JP
Japan
Prior art keywords
block
page
virtual
data
flash memory
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.)
Granted
Application number
JP2001164546A
Other languages
English (en)
Other versions
JP4316824B2 (ja
Inventor
Naoki Mukoda
直樹 向田
Kenzo Kida
健三 木田
Yukio Terasaki
幸夫 寺崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2001164546A priority Critical patent/JP4316824B2/ja
Publication of JP2002358233A publication Critical patent/JP2002358233A/ja
Application granted granted Critical
Publication of JP4316824B2 publication Critical patent/JP4316824B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 フラッシュメモリに対する一連のデータ書き
込み処理をより高速に行うことができるメモリコントロ
ーラを提供する。 【解決手段】 本発明によるメモリコントローラは、ホ
ストコンピュータより供給されるホストアドレスに基づ
いて、複数の物理ブロックからなるメモリにアクセスす
るメモリコントローラであって、各物理ブロックを複数
のグループに分類する手段と、互いに異なるグループに
属する複数の物理ブロックを仮想的に結合することによ
り複数の仮想ブロックを形成する手段と、隣り合うホス
トアドレスを仮想ブロック内において互いに異なる物理
ブロックに割り当てる手段と、仮想ブロックに含まれる
空きページを検出する手段とを備えている。

Description

【発明の詳細な説明】
【0001】
【発明の属する利用分野】本発明は、メモリコントロー
ラ、フラッシュメモリシステム及びフラッシュメモリの
制御方法に関し、特に、フラッシュメモリに対する一連
のデータ書き込み処理をより高速に行うことができるメ
モリコントローラ、フラッシュメモリシステム及びフラ
ッシュメモリの制御方法に関する。
【0002】
【従来の技術】近年、メモリカードやシリコンディスク
などに用いられる半導体メモリとして、フラッシュメモ
リ、特にNAND型フラッシュメモリが用いられること
が多い。NAND型フラッシュメモリは、メモリセルを
消去状態(論理値=1)から書込状態(論理値=0)に
変化させる場合は、これをメモリセル単位で行うことが
可能である一方、メモリセルを書込状態(0)から消去
状態(1)に変化させる場合は、これをメモリセル単位
で行うことができず、複数のメモリセルからなる所定の
消去単位(ブロック単位)でしかこれを行うことができ
ない。かかる一括消去動作は、一般的に「ブロック消
去」と呼ばれる。
【0003】このように、NAND型フラッシュメモリ
においては、書込状態(0)から消去状態(1)への変
化をメモリセル単位で行うことができないため、フラッ
シュメモリにデータを書き込む場合には、データを書き
込むべき領域に含まれる全てのメモリセルを事前にブロ
ック消去しておく必要がある。ブロック消去された領域
は、データが格納されていない空きブロックとなり、フ
ラッシュメモリに新たなデータを書き込む場合には、こ
のような空きブロックが検索され、発見された空きブロ
ックに対して当該データが書き込まれることになる。こ
こで、各ブロックは、それぞれ、データの読み出し及び
書き込みにおけるアクセス単位である複数の「ページ」
によって構成されている。
【0004】このようなフラッシュメモリへのデータの
書き込みは、次のようにして行われる。
【0005】まず、ホストコンピュータからデータ書き
込み要求が発行され、書き込み先のアドレス及び書き込
むべきデータが送信されると、かかるデータが、コント
ローラ内に設けられたメモリに一時的に格納される。次
いで、コントローラは、一時的にメモリに格納されてい
るデータをフラッシュメモリへ転送し、これを書き込み
先のアドレスが示すページに書き込むよう、フラッシュ
メモリに対して指示する。これに応答して、フラッシュ
メモリは、コントローラから転送されたデータを指定さ
れたページに格納し、これにより、一連のデータ書き込
み処理が完了する。
【0006】
【発明が解決しようとする課題】従来より、同一ブロッ
ク内における各ページは、ホストコンピュータから見
て、連続するアドレスを有するものとして取り扱われて
いる。一方、ホストコンピュータからのデータ書き込み
要求は、連続する複数アドレスに対してなされることが
多く、この場合、コントローラは、あるブロック内の連
続する複数ページに、次々とデータを書き込む必要があ
る。
【0007】この場合、コントローラはまず、最初のペ
ージに書き込むべきデータをフラッシュメモリに転送
し、かかるデータを当該ページに書き込むよう、フラッ
シュメモリに対して指示する。これに応答して、フラッ
シュメモリが、転送されたデータを指定されたページに
格納すると、次いで、コントローラは、次のページに書
き込むべきデータをフラッシュメモリに転送し、当該ペ
ージに書き込むよう、フラッシュメモリに対して指示す
る。このような処理を、要求された複数アドレスについ
て次々と実行することにより、連続する複数ページへの
一連のデータの書き込み処理が完了する。
【0008】ここで、ひとつのページに対する書き込み
処理に要する時間は、主に、書き込むべきデータをコン
トローラからフラッシュメモリに転送するために必要な
時間(データ転送時間)、コントローラからフラッシュ
メモリに書き込み命令を発行する時間(命令発行時
間)、実際にフラッシュメモリにデータが書き込まれる
時間(フラッシュプログラム時間)等からなり、このう
ち、フラッシュプログラム時間は、特に長い時間(例え
ば、約200μsec)を要する。
【0009】従来は、このように比較的長い時間を要す
る1回のデータ書き込み処理を、ページ単位で次々と行
っているため、ホストコンピュータより、連続する複数
アドレスに対してデータ書き込み要求がなされた場合、
一連のデータの書き込み処理が完了するには、データを
書き込むべきページ数に実質的に比例した時間が必要で
あった。
【0010】このため、ホストコンピュータより連続す
る複数アドレスに対してデータ書き込み要求がなされた
場合に、一連のデータの書き込み処理をより高速に行う
ことができるメモリコントローラ、フラッシュメモリシ
ステム及びフラッシュメモリの制御方法が望まれてい
た。
【0011】したがって、本発明の目的は、フラッシュ
メモリに対する一連のデータ書き込み処理をより高速に
行うことができるメモリコントローラ及びこのようなメ
モリコントローラを備えるフラッシュメモリシステムを
提供することである。
【0012】また、本発明の他の目的は、フラッシュメ
モリに対する一連のデータ書き込み処理をより高速に行
うことができるフラッシュメモリの制御方法を提供する
ことである。
【0013】
【課題を解決するための手段】本発明のかかる目的は、
ホストコンピュータより供給されるホストアドレスに基
づいて、複数の物理ブロックからなるメモリにアクセス
するメモリコントローラであって、前記各物理ブロック
を複数のグループに分類する手段と、互いに異なるグル
ープに属する複数の物理ブロックを仮想的に結合するこ
とにより複数の仮想ブロックを形成する手段と、隣り合
うホストアドレスを前記仮想ブロック内において互いに
異なる物理ブロックに割り当てる手段と、前記仮想ブロ
ックに含まれる空きページを検出する手段とを備えるメ
モリコントローラによって達成される。
【0014】本発明によれば、隣り合うホストアドレス
が、仮想ブロック内において互いに異なる物理ブロック
に割り当てられているため、連続する複数アドレスに対
するアクセスがホストコンピュータから要求された場
合、これらアドレスによりアクセスされる物理ブロック
は、互いに異なる物理ブロックとなる。このため、アク
セスされた各物理ブロックがそれぞれ独立して動作する
ことにより、一連の処理を並列に行うことができる。こ
れにより、フラッシュメモリに対する一連の処理をより
高速に行うことが可能となる。
【0015】本発明の好ましい実施態様においては、メ
モリコントローラが、前記ホストコンピュータより空き
ページに対するユーザデータの書き込みが要求されたこ
とに応答して、前記空きページが属する物理ブロックに
ついてのブロック間転送を行うことなく、前記空きペー
ジへ前記ユーザデータを書き込む書込手段とをさらに備
えている。
【0016】本発明の好ましい実施態様によれば、ブロ
ック間転送を行うことなく、ユーザデータの書き込みを
行っているので、ブロック間転送の頻度が低くなる。こ
のため、データの書き込みに必要な一連の処理を高速に
行うことが可能となる。
【0017】本発明のさらに好ましい実施態様において
は、メモリコントローラが、前記ホストコンピュータよ
り使用済みページに対するユーザデータの書き込みが要
求されたことに応答して、前記使用済みページが属する
仮想ブロックを構成する複数の物理ブロックのうち、前
記使用済みページが属する物理ブロック以外の物理ブロ
ックについてのブロック間転送を行うことなく、前記使
用済みページが属する物理ブロックについてブロック間
転送を行う手段をさらに備えている。
【0018】本発明のさらに好ましい実施態様によれ
ば、前記使用済みページが属する物理ブロックについて
のみブロック間転送を行っているので、ブロック間転送
の頻度が低くなる。このため、データの書き込みに必要
な一連の処理を高速に行うことが可能となる。
【0019】本発明のさらに好ましい実施態様において
は、メモリコントローラが、各仮想ブロックに含まれる
仮想ページのうち、先頭の仮想ページからユーザデータ
が書き込まれている最後の仮想ページまでの仮想ページ
を使用済みページとして取り扱い、それ以外の仮想ペー
ジを空きページとして取り扱う。
【0020】本発明のさらに好ましい実施態様において
は、前記グループが、前記複数の物理ブロックを少なく
ともメモリチップ別に分類するものである。
【0021】本発明の好ましい実施態様によれば、メモ
リチップ別に各物理ブロックがグループ分けされている
ことから、連続する複数のホストアドレスに対応する物
理ブロックは、それぞれ異なるメモリチップに属するこ
ととなる。このため、これらメモリチップが、並列処理
を行うことができない通常のメモリチップであっても、
それぞれのメモリチップが独立して動作することによ
り、並列処理を行うことが可能となる。
【0022】本発明のさらに好ましい実施態様において
は、前記グループが、前記複数の物理ブロックを少なく
ともバンク別に分類するものである。
【0023】本発明のさらに好ましい実施態様によれ
ば、バンク別に各物理ブロックがグループ分けされてい
ることから、連続する複数のホストアドレスに対応する
物理ブロックは、それぞれ異なるバンクに属することと
なる。このため、メモリチップが一つのみであっても、
それぞれのバンクが独立して動作することにより、並列
処理を行うことが可能となる。特に、メモリチップを複
数個用い、互いに異なるバンクに属する複数の物理ブロ
ックを、複数のメモリチップに亘って仮想的に結合する
ことにより仮想ブロックを構成すれば、より多くの処理
を並列に実行することが可能となるので、フラッシュメ
モリに対する一連の処理をより高速に行うことが可能と
なる。
【0024】本発明の前記目的はまた、ホストコンピュ
ータより供給されるホストアドレスに基づいて、それぞ
れn個の物理ページからなる複数の物理ブロックによっ
て構成されるメモリにアクセスするメモリコントローラ
であって、前記ホストコンピュータよりユーザデータの
書き込みが要求されたことに応答して、m個の物理ブロ
ックを仮想的に結合することによってn×m個の仮想ペ
ージからなる仮想ブロックを形成する手段と、前記n×
m個の仮想ページのうち、前記ホストアドレスにより特
定される第1の仮想ページのユーザ領域内へ前記ユーザ
データを書き込む手段と、前記n×m個の仮想ページの
うち、先頭の仮想ページの冗長領域内へ空きページ情報
を書き込む手段とを備えるメモリコントローラによって
達成される。
【0025】本発明によれば、m個の物理ブロックを仮
想的に結合することによってn×m個の仮想ページから
なる仮想ブロックを形成するとともに、先頭の仮想ペー
ジの冗長領域内へ空きページ情報を書き込んでいること
から、これを参照することにより、ユーザデータの書き
込みが行われた後における当該仮想ブロックの空きペー
ジを知ることができる。
【0026】本発明の好ましい実施態様においては、前
記空きページ情報が、空きページが存在するか否かを示
す空きページフラグと、空きページを特定する空きペー
ジデータとを少なくとも含んでいる。
【0027】本発明のさらに好ましい実施態様において
は、前記空きページデータが、前記第1の仮想ページに
続く第2の仮想ページを特定するデータである。
【0028】本発明のさらに好ましい実施態様によれ
ば、第2の仮想ページ以降の仮想ページが空きページで
あることが保証されるため、第2の仮想ページ以降の仮
想ページへの新たなユーザデータの書き込みが要求され
た場合に、ブロック間転送を行うことなく、ユーザデー
タの追加的な書き込みを行うことが可能となる。
【0029】本発明のさらに好ましい実施態様において
は、前記第1の仮想ページと前記第2の仮想ページが互
いに異なる物理ブロックに属している。
【0030】本発明のさらに好ましい実施態様によれ
ば、隣り合うホストアドレスが、同じ仮想ブロック内の
互いに異なる物理ブロックに対応することになるため、
各物理ブロックがそれぞれ独立して動作することができ
る。これにより、フラッシュメモリに対する一連の処理
をより高速に行うことが可能となる。
【0031】本発明のさらに好ましい実施態様において
は、メモリコントローラが、前記ホストコンピュータよ
り前記仮想ブロックに対するユーザデータの書き込みが
さらに要求されたことに応答して、前記空きページ情報
に基づき、前記ホストコンピュータより供給されたホス
トアドレスにより特定される第3の仮想ページへの前記
ユーザデータの追加的な書き込みが可能であるか否かを
判断する手段と、前記判断の結果、ユーザデータの追加
的な書き込みが可能であると判断されたことに応答し
て、前記第3の仮想ページのユーザ領域内へ前記ユーザ
データを書き込む手段と、前記第2の仮想ページの冗長
領域内へ前記第3の仮想ページに続く第4の仮想ページ
を特定する空きページデータを書き込む手段とをさらに
備えている。
【0032】本発明のさらに好ましい実施態様によれ
ば、第4の仮想ページ以降の仮想ページが空きページで
あることが保証されるため、第4のページ以降のページ
への新たなユーザデータの書き込みが要求された場合
に、ブロック間転送を行うことなく、ユーザデータの追
加的な書き込みを行うことが可能となる。
【0033】本発明のさらに好ましい実施態様において
は、前記第3の仮想ページと前記第4の仮想ページが互
いに異なる物理ブロックに属している。
【0034】本発明のさらに好ましい実施態様において
は、メモリコントローラが、前記判断の結果、ユーザデ
ータの追加的な書き込みが不可能であると判断されたこ
とに応答して、前記第3の仮想ページが属する物理ブロ
ックを他の物理ブロックに入れ替える手段をさらに備え
ている。
【0035】本発明のさらに好ましい実施態様によれ
ば、ユーザデータの追加的な書き込みが不可能な仮想ペ
ージが属する物理ブロックについてのみブロック間転送
を行っているので、ブロック間転送の頻度が低くなる。
このため、データの書き込みに必要な一連の処理を高速
に行うことが可能となる。
【0036】本発明のさらに好ましい実施態様において
は、メモリコントローラが、前記ホストコンピュータよ
り前記仮想ブロックの最後の仮想ページに対するユーザ
データの書き込みがさらに要求されたことに応答して、
前記空きページ情報に基づき、前記最後の仮想ページへ
の前記ユーザデータの追加的な書き込みが可能であるか
否かを判断する手段と、前記判断の結果、ユーザデータ
の追加的な書き込みが可能であると判断されたことに応
答して、前記最後の仮想ページのユーザ領域内へ前記ユ
ーザデータを書き込む手段と、前記先頭の仮想ページの
冗長領域内に格納された前記空きページフラグを変化さ
せる手段とをさらに備えている。
【0037】本発明のさらに好ましい実施態様によれ
ば、最後の仮想ページに対してユーザデータを書き込む
際に、先頭の仮想ページの冗長領域内に格納された空き
ページフラグを変化させていることから、これを参照す
ることにより、当該物理ブロックへの新たなユーザデー
タの書き込みを禁止することができる。
【0038】本発明のさらに好ましい実施態様において
は、前記先頭の仮想ページと前記最後の仮想ページが互
いに異なる物理ブロックに属している。
【0039】本発明の前記目的はまた、複数の物理ブロ
ックからなるフラッシュメモリと、ホストコンピュータ
より供給されるホストアドレスに基づいて前記フラッシ
ュメモリにアクセスするメモリコントローラとを備え、
前記コントローラが、前記各物理ブロックを複数のグル
ープに分類する手段と、互いに異なるグループに属する
複数の物理ブロックを仮想的に結合することにより複数
の仮想ブロックを形成する手段と、隣り合うホストアド
レスを前記仮想ブロック内において互いに異なる物理ブ
ロックに割り当てる手段と、前記仮想ブロックに含まれ
る空きページを検出する手段とを備えることを特徴とす
るフラッシュメモリシステムによって達成される。
【0040】本発明においても、隣り合うホストアドレ
スが、仮想ブロック内において互いに異なる物理ブロッ
クに割り当てられているため、アクセスされた各物理ブ
ロックがそれぞれ独立して動作することにより、一連の
処理を並列に行うことができる。これにより、フラッシ
ュメモリに対する一連の処理をより高速に行うことが可
能となる。
【0041】本発明の好ましい実施態様においては、前
記各物理ブロックがユーザ領域と冗長領域とを備え、前
記冗長領域には、自己が属する仮想ブロックを特定する
情報が記録されている。
【0042】本発明のさらに好ましい実施態様において
は、前記冗長領域には、自己が属する仮想ブロックに含
まれる前記空きページに関する情報がさらに格納されて
いる。
【0043】本発明の前記目的はまた、複数の物理ブロ
ックを仮想的に結合することにより仮想ブロックを形成
するステップと、ホストコンピュータよりデータの書き
込みが指示された場合、前記仮想ブロックを構成する全
ての物理ブロックの追書込不能領域が書き込み対象とな
っていることに応答して、前記仮想ブロックを構成する
全ての物理ブロックを他の物理ブロックに置き換えるス
テップとを備えるフラッシュメモリの制御方法によって
達成される。
【0044】本発明の好ましい実施態様においては、フ
ラッシュメモリの制御方法が、前記ホストコンピュータ
よりデータの書き込みが指示された場合、前記仮想ブロ
ックを構成する一部の物理ブロックの追書込不能領域が
書き込み対象となっており、前記仮想ブロックを構成す
る残りの物理ブロックの追書込不能領域が書き込み対象
となっていないことに応答して、前記残りの物理ブロッ
クを他の物理ブロックに置き換えることなく、前記一部
の物理ブロックを他の物理ブロックに置き換えるステッ
プをさらに備えている。
【0045】本発明の好ましい実施態様においては、フ
ラッシュメモリの制御方法が、前記残りの物理ブロック
の追書込可能領域が書き込み対象となっていることに応
答して、前記データを前記残りの物理ブロックに対して
追加的に書き込むステップをさらに備えている。
【0046】
【発明の好ましい実施の形態】以下、添付図面を参照し
ながら、本発明の好ましい実施態様について詳細に説明
する。
【0047】図1は、本発明の好ましい実施態様にかか
るフラッシュメモリシステム1を概略的に示すブロック
図である。
【0048】図1に示されるように、フラッシュメモリ
システム1はカード形状であり、4個のフラッシュメモ
リチップ2−0〜2−3と、コントローラ3と、コネク
タ4とが、一つのカード内に集積されて構成される。フ
ラッシュメモリシステム1は、ホストコンピュータ5に
着脱可能に装着されて使用され、ホストコンピュータ5
に対する一種の外部記憶装置として用いられる。ホスト
コンピュータ5としては、文字、音声、あるいは画像情
報等の種々の情報を処理するパーソナルコンピュータや
デジタルスチルカメラをはじめとする各種情報処理装置
が挙げられる。
【0049】各フラッシュメモリチップ2−0〜2−3
は、それぞれ128Mバイト(1Gビット)の記憶容量
を有する半導体チップである。フラッシュメモリシステ
ム1においては、528バイトを1ページとし、これを
最小アクセス単位としている。したがって、これら各フ
ラッシュメモリチップ2−0〜2−3は、それぞれ25
6Kページのアドレス空間を含み、フラッシュメモリチ
ップ2−0〜2−3の合計で、1Mページのアドレス空
間を備えることになる。また、フラッシュメモリシステ
ム1においては、これら4つのフラッシュメモリチップ
2−0〜2−3は、512Mバイト(4Gビット)の記
憶容量を有し、1Mページのアドレス空間を備える一つ
の大きなメモリとして取り扱われる。このため、これら
1Mページからなるアドレス空間から特定のページにア
クセスするためには、20ビットのアドレス情報が必要
となる。したがって、ホストコンピュータ5は、フラッ
シュメモリシステム1に対し、20ビットのアドレス情
報を供給することによって、特定のページに対するアク
セスを行う。以下、ホストコンピュータ5よりフラッシ
ュメモリシステム1に供給される20ビットのアドレス
情報を「ホストアドレス」と呼ぶ。
【0050】コントローラ3は、マイクロプロセッサ6
と、ホストインターフェースブロック7と、SRAMワ
ークエリア8と、バッファ9と、フラッシュメモリイン
ターフェースブロック10と、ECC(エラー・コレク
ション・コード)ブロック11と、フラッシュシーケン
サブロック12とから構成される。これら機能ブロック
によって構成されるコントローラ3は、一つの半導体チ
ップ上に集積されている。
【0051】マイクロプロセッサ6は、コントローラ3
を構成する各機能ブロック全体の動作を制御するための
機能ブロックである。
【0052】ホストインターフェースブロック7は、バ
ス13を介してコネクタ4に接続されており、マイクロ
プロセッサ6による制御のもと、ホストコンピュータ5
とのデータやアドレス情報、ステータス情報、外部コマ
ンド情報の授受を行う。すなわち、フラッシュメモリシ
ステム1がホストコンピュータ5に装着されると、フラ
ッシュメモリシステム1とホストコンピュータ5とは、
バス13、コネクタ4及びバス14を介して相互に接続
され、かかる状態において、ホストコンピュータ5より
フラッシュメモリシステム1に供給されるデータ等は、
ホストインターフェースブロック7を入口としてコント
ローラ3の内部に取り込まれ、また、コントローラ3よ
りホストコンピュータ5に供給されるデータ等は、ホス
トインターフェースブロック7を出口としてホストコン
ピュータ5に供給される。さらに、ホストインターフェ
ースブロック7は、ホストコンピュータ5より供給され
るホストアドレス及び外部コマンドを一時的に格納する
タスクファイルレジスタ(図示せず)及びエラーが発生
した場合にセットされるエラーレジスタ等(図示せず)
を有している。
【0053】SRAMワークエリア8は、マイクロプロ
セッサ6によるフラッシュメモリチップ2−0〜2−3
の制御に必要なデータが一時的に格納される作業領域で
あり、複数のSRAMセルによって構成される。
【0054】バッファ9は、フラッシュメモリチップ2
−0〜2−3から読み出されたデータ及びフラッシュメ
モリチップ2−0〜2−3に書き込むべきデータを一時
的に蓄積するバッファである。すなわち、フラッシュメ
モリチップ2−0〜2−3から読み出されたデータは、
ホストコンピュータ5が受け取り可能な状態となるまで
バッファ9に保持され、フラッシュメモリチップ2−0
〜2−3に書き込むべきデータは、フラッシュメモリチ
ップ2−0〜2−3が書き込み可能な状態となるととも
に、後述するECCブロック11によってエラーコレク
ションコードが生成されるまでバッファ9に保持され
る。
【0055】フラッシュメモリインターフェースブロッ
ク10は、バス15を介して、フラッシュメモリチップ
2−0〜2−3とのデータやアドレス情報、ステータス
情報、内部コマンド情報の授受を行うとともに、各フラ
ッシュメモリチップ2−0〜2−3に対して対応するチ
ップ選択信号#0〜#3を供給するための機能ブロック
である。チップ選択信号#0〜#3は、ホストコンピュ
ータ5からデータの読み出しまたは書き込みが要求され
た場合、ホストコンピュータ5より供給されるホストア
ドレスに基づいて生成される内部アドレスの上位2ビッ
トに基づいて、そのいずれかが活性化される信号であ
る。具体的には、内部アドレスの上位2ビットが「0
0」であればチップ選択信号#0が活性化され、「0
1」であればチップ選択信号#1が活性化され、「1
0」であればチップ選択信号#2が活性化され、「1
1」であればチップ選択信号#3が活性化される。対応
するチップ選択信号が活性化されたフラッシュメモリチ
ップ2−0〜2−3は選択状態となり、データの読み出
しまたは書き込みが可能となる。尚、「内部コマンド」
とは、コントローラ3がフラッシュメモリチップ2−0
〜2−3を制御するためのコマンドであり、ホストコン
ピュータ5がフラッシュメモリシステム1を制御するた
めの「外部コマンド」と区別される。
【0056】ECCブロック11は、フラッシュメモリ
チップ2−0〜2−3に書き込むデータに付加すべきエ
ラーコレクションコードを生成するとともに、読み出し
データに付加されたエラーコレクションコードに基づい
て、読み出しデータに含まれる誤りを訂正するための機
能ブロックである。
【0057】フラッシュシーケンサブロック12は、フ
ラッシュメモリチップ2−0〜2−3とバッファ9との
データの転送を制御するための機能ブロックである。フ
ラッシュシーケンサブロック12は、複数のレジスタ
(図示せず)を備え、マイクロプロセッサ6による制御
のもと、フラッシュメモリチップ2−0〜2−3からの
データの読み出しまたはフラッシュメモリチップ2−0
〜2−3へのデータの書き込みに必要な値がこれらレジ
スタに設定されると、データの読み出しまたは書き込み
に必要な一連の動作を自動的に実行する。
【0058】次に、各フラッシュメモリチップ2−0〜
2−3を構成する各フラッシュメモリセルの具体的な構
造について説明する。
【0059】図2は、フラッシュメモリチップ2−0〜
2−3を構成する各フラッシュメモリセル16の構造を
概略的に示す断面図である。
【0060】図2に示されるように、フラッシュメモリ
セル16は、P型半導体基板17に形成されたN型のソ
ース拡散領域18及びドレイン拡散領域19と、ソース
拡散領域18とドレイン拡散領域19との間のP型半導
体基板17を覆って形成されたトンネル酸化膜20と、
トンネル酸化膜20上に形成されたフローティングゲー
ト電極21と、フローティングゲート電極21上に形成
された絶縁膜22と、絶縁膜22上に形成されたコント
ロールゲート電極23とから構成される。このような構
成を有するフラッシュメモリセル16は、フラッシュメ
モリチップ2−0〜2−3内において、複数個直列に接
続されて、NAND型フラッシュメモリを構成する。
【0061】フラッシュメモリセル16は、フローティ
ングゲート電極21に電子が注入されているか否かによ
って、「消去状態」と「書込状態」のいずれかの状態が
示される。フラッシュメモリセル16が消去状態である
ことは、当該フラッシュメモリセル16にデータ「1」
が保持されていることを意味し、フラッシュメモリセル
16が書込状態であることは、当該フラッシュメモリセ
ル16にデータ「0」が保持されていることを意味す
る。すなわち、フラッシュメモリセル16は、1ビット
のデータを保持することが可能である。
【0062】図2に示されるように、消去状態とは、フ
ローティングゲート電極21に電子が注入されていない
状態を指す。消去状態におけるフラッシュメモリセル1
6は、デプレッション型のトランジスタとなり、コント
ロールゲート電極23に読み出し電圧が印加されている
か否かに関わらず、ソース拡散領域18とドレイン拡散
領域19との間のP型半導体基板17の表面にはチャネ
ル24が形成される。したがって、ソース拡散領域18
とドレイン拡散領域19とは、コントロールゲート電極
23に読み出し電圧が印加されているか否かに関わら
ず、チャネル24によって常に電気的に接続状態とな
る。
【0063】図3は、書込状態であるフラッシュメモリ
セル16を概略的に示す断面図である。
【0064】図3に示されるように、書込状態とは、フ
ローティングゲート電極21に電子が蓄積されている状
態を指す。フローティングゲート電極21はトンネル酸
化膜20及び絶縁膜22に挟まれているため、一旦、フ
ローティングゲート電極21に注入された電子は、きわ
めて長時間フローティングゲート電極21内にとどま
る。書込状態におけるフラッシュメモリセル16は、エ
ンハンスメント型のトランジスタとなり、コントロール
ゲート電極23に読み出し電圧が印加されていないとき
には、ソース拡散領域18とドレイン拡散領域19との
間のP型半導体基板17の表面にはチャネルが形成され
ず、コントロールゲート電極23に読み出し電圧が印加
されているときには、ソース拡散領域18とドレイン拡
散領域19との間のP型半導体基板17の表面にチャネ
ル(図示せず)が形成される。したがって、コントロー
ルゲート電極23に読み出し電圧が印加されていない状
態では、ソース拡散領域18とドレイン拡散領域19と
は電気的に絶縁され、コントロールゲート電極23に読
み出し電圧が印加された状態では、ソース拡散領域18
とドレイン拡散領域19とが電気的に接続される。
【0065】ここで、選択されたフラッシュメモリセル
16が消去状態であるか書込状態であるかは、次のよう
にして読み出すことができる。すなわち、複数個直列に
接続されたフラッシュメモリセル16のうち、選択され
たフラッシュメモリセル16以外の全てのフラッシュメ
モリセル16のコントロールゲート電極23に読み出し
電圧を印加し、この状態において、これらフラッシュメ
モリセル16の直列体に電流が流れるか否かを検出す
る。その結果、かかる直列体に電流が流れれば、選択さ
れたフラッシュメモリセル16が消去状態であると判断
することができ、かかる直列体に電流が流れなければ、
選択されたフラッシュメモリセル16が書込状態である
と判断することができる。このようにして、直列体に含
まれる任意のフラッシュメモリセル16に保持されたデ
ータが「0」であるのか「1」であるのかを読み出すこ
とができる。但し、NAND型フラッシュメモリにおい
ては、ひとつの直列体に含まれる2以上のフラッシュメ
モリセル16に保持されたデータを同時に読み出すこと
はできない。
【0066】また、消去状態であるフラッシュメモリセ
ル16を書込状態に変化させる場合、コントロールゲー
ト電極23に正の高電圧が印加され、これによって、ト
ンネル酸化膜20を介してフローティングゲート電極2
1へ電子が注入される。フローティングゲート電極21
への電子の注入は、FNトンネル電流による注入が可能
である。一方、書込状態であるフラッシュメモリセル1
6を消去状態に変化させる場合、コントロールゲート電
極23に負の高電圧が印加され、これによって、トンネ
ル酸化膜20を介してフローティングゲート電極21に
蓄積された電子が排出される。
【0067】次に、各フラッシュメモリチップ2−0〜
2−3の持つアドレス空間の具体的な構成について説明
する。
【0068】図4は、フラッシュメモリチップ2−0の
アドレス空間の構造を概略的に示す図である。
【0069】図4に示されるように、フラッシュメモリ
チップ2−0のアドレス空間は、物理ブロック#0〜#
8191からなる8192個の物理ブロックによって構
成される。また、図4には示されていないが、フラッシ
ュメモリチップ2−1〜2−3も、フラッシュメモリチ
ップ2−0と同様に物理ブロック#0〜#8191から
なる8192個の物理ブロックによって構成されてい
る。これら各ブロックは、いずれも16Kバイトの記憶
容量を有する。
【0070】ここで、上記各物理ブロックは、データの
消去単位である。すなわち、フラッシュメモリチップ2
−0〜2−3では、各フラッシュメモリセル16ごと
に、その状態を書込状態から消去状態に変化させること
はできず、フラッシュメモリセル16を書込状態から消
去状態に変化させる場合は、当該フラッシュメモリセル
16が属するブロックに含まれる全てのフラッシュメモ
リセル16が一括して消去状態とされる。逆に、フラッ
シュメモリチップ2−0〜2−3では、各フラッシュメ
モリセル16ごとに、その状態を消去状態から書込状態
に変化させることは可能である。
【0071】さらに、図4に示されるように、フラッシ
ュメモリチップ2−0を構成する各物理ブロック#0〜
#8191は、それぞれ物理ページ#0〜#31からな
る32個の物理ページによって構成されている。また、
フラッシュメモリチップ2−1〜2−3を構成する各物
理ブロック#0〜#8191も、フラッシュメモリチッ
プ2−0を構成する各物理ブロック#0〜#8191と
同様に、それぞれ32個の物理ページによって構成され
ている。
【0072】これら各ページはデータの読み出し及び書
き込みにおけるアクセス単位であり、図4に示されるよ
うに、ビットb0〜b7からなる8ビットを1バイトと
して、それぞれ512バイトのユーザ領域25と16バ
イトの冗長領域26によって構成される。ユーザ領域2
5は、ホストコンピュータ5より供給されるユーザデー
タが格納される領域である。
【0073】図5は、冗長領域26のデータ構造を概略
的に示す図である。
【0074】図5に示されるように、冗長領域26は、
エラーコレクションコード格納領域27、仮想ブロック
アドレス格納領域28、スタートページフラグ29、ス
タートページデータ格納領域30及びその他の付加情報
によって構成される。
【0075】エラーコレクションコード格納領域27
は、対応するユーザ領域25に格納されたユーザデータ
の誤りを訂正するための付加情報(エラーコレクション
コード)を格納するための領域であり、ユーザ領域25
に格納されたデータに含まれるデータの誤りが所定数以
下であれば、エラーコレクションコード格納領域27に
格納されたエラーコレクションコードを用いてこれを訂
正し、正しいデータとすることができる。
【0076】仮想ブロックアドレス格納領域28は、当
該物理ブロックが属する仮想ブロックのアドレス(仮想
ブロックアドレス)を格納するための領域である。仮想
ブロック及び仮想ブロックアドレスの詳細については後
述する。また、スタートページフラグ29及びスタート
ページデータ格納領域30についての説明も後述する。
【0077】冗長領域26のその他の領域には、当該ブ
ロックについての異常を表示するブロックステータス等
が格納されているが、これらについての説明は省略す
る。
【0078】このように、各ページは、512バイトの
ユーザ領域25と16バイトの冗長領域26からなるの
で、各ページは、8×(512バイト+16バイト)=
4224個のフラッシュメモリセルによって構成される
ことになる。
【0079】このように、各フラッシュメモリチップ2
−0〜2−3はそれぞれ8192個の物理ブロックによ
って構成されるが、このうち、8000個の物理ブロッ
クは実際にデータを格納することができるブロック(以
下、「実使用ブロック」という)として取り扱われ、残
りの192個のブロックは「冗長ブロック」として取り
扱われる。冗長ブロックは、データ書き込みに備えて待
機している空きブロックである。フラッシュメモリチッ
プ2−0〜2−3のアドレス空間は、実使用ブロックの
みによって構成される。また、ある物理ブロックに不良
が発生し、使用不能となった場合には、不良が発生した
ブロックの数だけ冗長ブロックとして割り当てられる物
理ブロックの数が減らされる。
【0080】さらに、実使用ブロックは、各フラッシュ
メモリチップ2−0〜2−3から一つずつ選ばれた4つ
の物理ブロックが仮想的に結合された「仮想ブロック」
を構成する。これにより、仮想ブロック#0〜#799
9からなる最大8000個の仮想ブロックが構成され
る。
【0081】図6は、仮想ブロックのマッピングの一例
を示す図である。
【0082】図6に示される例では、フラッシュメモリ
チップ2−0に含まれる物理ブロック#150、フラッ
シュメモリチップ2−1に含まれる物理ブロック#68
11、フラッシュメモリチップ2−2に含まれる物理ブ
ロック#8191、フラッシュメモリチップ2−3に含
まれる物理ブロック#3048が仮想的に結合され、一
つの仮想ブロックを構成している。このように、本実施
態様においては、ひとつの仮想ブロックを構成する4つ
の物理ブロックは互いに異なるフラッシュメモリチップ
に含まれていることが必要である。このようにして、最
大8000個の仮想ブロックが構成される。
【0083】図7は、図6に示された仮想ブロックの仮
想ページ構造を示す図である。
【0084】図7に示されるように、仮想ブロックは、
仮想ページ#0〜仮想ページ#127からなる128個
の仮想ページによって構成される一つのブロックとして
取り扱われる。ここで、仮想ブロックのうち、物理ブロ
ック#150からなる部分に含まれる32個のページ
は、仮想ページ番号として4i(iは、物理ページ番
号)が与えられ、物理ブロック#6811からなる部分
に含まれる32個のページは、仮想ページ番号として4
i+1が与えられ、物理ブロック#8191からなる部
分に含まれる32個のページは、仮想ページ番号として
4i+2が与えられ、物理ブロック#3048からなる
部分に含まれる32個のページは、仮想ページ番号とし
て4i+3が与えられる。詳細は後述するが、これら仮
想ページ番号は、ホストアドレスの下位7ビットと対応
している。
【0085】ここで、図5に示したスタートページフラ
グ29及びスタートページデータ格納領域30について
説明する。
【0086】スタートページフラグ29は、2ビットで
構成されるフラグであり、このうち、上位の1ビットは
仮想ページ#0において有効なビットであり、下位の1
ビットは仮想ページ#0〜#126において有効なビッ
トである。具体的には、仮想ページ#0のスタートペー
ジフラグ29が「1x(xは任意)」であれば当該仮想
ブロックにスタートページが存在することを示し、仮想
ページ#0のスタートページフラグ29が「0x」であ
れば当該仮想ブロックにスタートページが存在しないこ
とを示す。また、仮想ページ#0〜#126のスタート
ページフラグ29が「x0」であれば、対応するスター
トページデータ格納領域30の内容が有効であることを
示し、スタートページフラグ29が「x1」であれば、
対応するスタートページデータ格納領域30の内容が無
効であることを示す。
【0087】スタートページデータ格納領域30は、当
該仮想ブロックのスタートページを特定するための付加
情報(スタートページデータ)を格納するための領域で
ある。ここで、「スタートページ」とは、当該仮想ブロ
ックにおいて、最終ページ(仮想ページ#127)を含
む1または2以上の連続する仮想ページが、データの格
納されていない空きページとなっている場合に、これら
連続する仮想ページの中の先頭の仮想ページを指す。例
えば、ある仮想ブロックの仮想ページ#0〜#50にの
みデータが格納されている場合にはスタートページは仮
想ページ#51となり、ある仮想ブロックの仮想ページ
#83にのみデータが格納されている場合にはスタート
ページは仮想ページ#84となる。したがって、各仮想
ブロックにおいて、スタートページ以降の仮想ページ
は、データの格納されていない空きページであることが
保証される。
【0088】スタートページデータを用いたスタートペ
ージの特定は、「スタートページ検索」によって行うこ
とができる。スタートページ検索においては、まず、仮
想ページ#0のスタートページデータ格納領域30に格
納されているスタートページデータが参照され、かかる
スタートページデータが示す仮想ページのスタートペー
ジフラグ29が参照される。例えば、仮想ページ#0の
スタートページデータ格納領域30に格納されているス
タートページデータが「0100111B(39)」で
あれば、次に、仮想ページ#39のスタートページフラ
グ29が参照される。その結果、スタートページフラグ
29が「x0」であるために、対応するスタートページ
データ格納領域30の内容が有効であると判断されれ
ば、さらにその内容が示すページのスタートページフラ
グ29が参照される。このようにして、スタートページ
データに基づき、対応するスタートページフラグ29が
有効であるか否かを次々に判定し、参照されたスタート
ページフラグ29が「x1」となったところでスタート
ページ検索を終了し、かかる仮想ページが「スタートペ
ージ」であると判断される。例えば、上記の例のよう
に、仮想ページ#0のスタートページデータ格納領域3
0に格納されているスタートページデータが「0100
111B(39)」であり、仮想ページ#39のスター
トページフラグ29が「x1」であれば、仮想ページ#
39がスタートページであると判断される。
【0089】次に、仮想ブロックとこれを構成する4つ
の物理ブロックとの関係について説明する。
【0090】上述のとおり、本実施態様においては、各
フラッシュメモリチップ2−0〜2−3に含まれる81
92個の物理ブロックによって、最大8000個の仮想
ブロックが構成されるが、これら8000個の仮想ブロ
ックと各仮想ブロックを構成する4つの物理ブロックと
の関係は、SRAMワークエリア8上に展開されるアド
レス変換テーブル31に保持される。
【0091】図8は、アドレス変換テーブル31のデー
タ構造を示す概略図である。
【0092】図8に示されるように、アドレス変換テー
ブル31は、仮想ブロック表示領域#0〜#7999か
らなる8000個の仮想ブロック表示領域がこの順に並
んで構成され、これら各仮想ブロック表示領域#0〜#
7999は、それぞれセル#j−0〜セル#j−3(j
は、仮想ブロックアドレス)からなる4個のセル、スタ
ートページ格納領域#j及びフラグ#jによって構成さ
れる。例えば、仮想ブロック表示領域#0はセル#0−
0〜セル#0−3、スタートページ格納領域#0及びフ
ラグ#0によって構成され、仮想ブロック表示領域#1
はセル#1−0〜セル#1−3、スタートページ格納領
域#1及びフラグ#1によって構成される。したがっ
て、アドレス変換テーブル31は、32000個のセル
と、8000個のスタートページ格納領域と、8000
個のフラグによって構成されることになる。ここで、セ
ル#j−0を構成するスロット#0はフラッシュメモリ
チップ2−0に対応し、セル#j−1を構成するスロッ
ト#1はフラッシュメモリチップ2−1に対応し、セル
#j−2を構成するスロット#2はフラッシュメモリチ
ップ2−2に対応し、セル#j−3を構成するスロット
#3はフラッシュメモリチップ2−3に対応している。
【0093】各仮想ブロック表示領域に含まれるセル#
j−0〜#j−3には、それぞれ当該仮想ブロックを構
成する物理ブロックのアドレス(物理ブロックアドレ
ス)が格納される。ここで、「物理ブロックアドレス」
とは、各物理ブロックに割り当てられたブロック番号を
2進数で表したアドレスであり、13ビットで構成され
る。例えば、図6及び図7に示された仮想ブロックが、
仮想ブロック#0であるとすれば、当該仮想ブロック
は、物理ブロック#150、物理ブロック#6811、
物理ブロック#8191及び物理ブロック#3048よ
り構成されることから、これら物理ブロックの物理ブロ
ックアドレスはそれぞれ「0000010010110
B」、「1101010011011B」、「1111
111111111B」及び「01011111010
00B」となり、セル#0−0〜#0−3には、これら
物理ブロックアドレスがそれぞれ格納されることにな
る。
【0094】また、各仮想ブロックに含まれるフラグ#
jは、当該仮想ブロック表示領域が有効であるか無効で
あるかを示している。具体的には、フラグ#jが「1」
を示していれば当該仮想ブロック表示領域#jは有効で
あり、フラグ#jが「0」を示していれば当該仮想ブロ
ック表示領域#jは無効である。したがって、フラグ#
jが「0」を示している仮想ブロック表示領域について
は、これに含まれるセル#j−0〜#j−3及びスター
トページ格納領域#jに格納されている内容は無視され
る。
【0095】さらに、スタートページ格納領域#0〜#
7999には、対応する仮想ブロックのスタートページ
に関する情報が7ビットで格納されている。具体的に
は、スタートページ格納領域に格納されたスタートペー
ジが「0000000B(0)」である場合には、対応
する仮想ブロックにはスタートページが存在しないこと
が示され、「0000001B(1)」である場合に
は、対応する仮想ブロックにスタートページは存在する
が、上述したスタートページ検索によってスタートペー
ジを求める必要があることが示され、それ以外の値であ
る場合には、その値がスタートページであることが示さ
れる。例えば、スタートページ格納領域に格納されたス
タートページが「0101100B(44)」である場
合には、当該仮想ブロックのスタートページは仮想ペー
ジ#44となる。
【0096】上述のように、アドレス変換テーブル31
は、32000個のセルと8000個のスタートページ
格納領域と8000個のフラグによって構成されてお
り、各セルには13ビットの情報(物理ブロックアドレ
ス)、各スタートページ格納領域には7ビットの情報
(スタートページ)、各フラグには1ビットの情報を格
納する必要があるから、アドレス変換テーブル31は、
SRAMワークエリア8の記憶容量のうち、約72kバ
イトを占有することとなる。
【0097】アドレス変換テーブル31の生成は、次の
ように行われる。
【0098】フラッシュメモリチップ2−0〜2−3を
構成する各物理ブロックのうち、データが格納されてい
るブロックの各先頭ページ(物理ページ#0)の冗長領
域26に含まれる仮想ブロックアドレス格納領域28に
は、当該物理ブロックがどの仮想ブロックに属するかを
示す仮想ブロックアドレスが含まれており、各物理ブロ
ックの各先頭ページ(物理ページ#0)に含まれている
仮想ブロックアドレスがマイクロプロセッサ6による制
御のもと、フラッシュメモリインターフェースブロック
10を介して読み出される。
【0099】ここで、消去済みの空きブロックにおいて
は、冗長領域26の仮想ブロックアドレス格納領域28
に格納されている仮想ブロックアドレスは「オール1
(1111111111111B)」となっているはず
である。すなわち、仮想ブロックは、上述のとおり、#
0(0000000000000B)〜#7999(1
111100111111B)までしかなく、したがっ
て、これがオール1(1111111111111B)
である場合には、当該物理ブロックが消去済みの空きブ
ロックであると判断することができる。一方、冗長領域
26の仮想ブロックアドレス格納領域28に格納された
仮想ブロックアドレスが「0000000000000
B」〜「1111100111111B」である場合に
は、当該仮想ブロックアドレスは有効な仮想ブロックア
ドレスである。
【0100】したがって、マイクロプロセッサ6は、各
物理ブロックの先頭ページ(物理ページ#0)の冗長領
域26に含まれる仮想ブロックアドレスを参照し、これ
がオール1ではなく有効な仮想ブロックのアドレスを示
していれば、アドレス変換テーブル31を構成するセル
のうち、チップ番号(#0〜#3)及び読み出された仮
想ブロックアドレスによって特定されるセルに、当該物
理ブロックの物理ブロックアドレスを格納する。例え
ば、フラッシュメモリチップ2−0に属する物理ブロッ
ク#12より読み出された仮想ブロックアドレスが「1
23」であれば、セル#123−0に、物理ブロックア
ドレスとして「12」が書き込まれ、さらに、対応する
フラグ#123が「1」にされる。
【0101】さらに、マイクロプロセッサ6は、上記仮
想ブロックアドレスが有効な仮想ブロックのアドレスを
示していれば、当該仮想ブロックの先頭ページ(仮想ペ
ージ#0)の冗長領域26に格納されているスタートペ
ージフラグ29を参照する。仮想ページ#0におけるス
タートページフラグ29は、上述のとおり、「1x」で
あれば当該仮想ブロックにスタートページが存在するこ
とを示し、「0x」であれば当該仮想ブロックにスター
トページが存在しないことを示す。そして、スタートペ
ージフラグ29を参照した結果、これが「1x」であれ
ば、アドレス変換テーブル31内の対応するスタートペ
ージ格納領域の内容を「0000001B(1)」と
し、これが「0x」であれば、アドレス変換テーブル3
1内の対応するスタートページ格納領域の内容を「00
00000B(0)」とする。
【0102】このような処理が、データが格納されてい
る全ての物理ブロックについて行われる。これにより、
アドレス変換テーブル31の生成が完了する。
【0103】次に、SRAMワークエリア8に格納され
る消去済みブロックキュー32のデータ構造について説
明する。
【0104】図9は、SRAMワークエリア8に格納さ
れる消去済みブロックキュー32のデータ構造を示す概
略図である。
【0105】図9に示されるように、消去済みブロック
キュー32は、キューセット#0〜#5からなる6つの
キューセットによって構成され、これらは、それぞれキ
ュー#k−0〜キュー#k−3(kは、キューセット番
号)からなる4個のキューによって構成される。例え
ば、キューセット#0はキュー#0−0〜キュー#0−
3によって構成され、キューセット#1はキュー#1−
0〜キュー#1−3によって構成される。したがって、
消去済みブロックキュー32は、24個のキューによっ
て構成される。ここで、キュー#k−0はフラッシュメ
モリチップ2−0に対応し、キュー#k−1はフラッシ
ュメモリチップ2−1に対応し、キュー#k−2はフラ
ッシュメモリチップ2−2に対応し、キュー#k−3は
フラッシュメモリチップ2−3に対応している。
【0106】各キューセット#0〜#5を構成するキュ
ー#k−0〜#k−3には、ユーザ領域25を構成する
全てのフラッシュメモリセル16が消去状態となってい
る物理ブロックの物理ブロックアドレスが格納される。
したがって、例えば、フラッシュメモリチップ2−0に
属する消去済みの物理ブロック#153を消去済みブロ
ックキュー32に登録する場合、当該物理ブロックアド
レスである「0000010011001B(15
3)」がキュー#0−0〜#5−0のいずれかに格納さ
れる。同様にして、例えば、フラッシュメモリチップ2
−2に属する消去済みのブロック#6552を消去済み
ブロックキュー32に登録する場合、当該物理ブロック
アドレスである「1100110011000B(65
52)」がキュー#0−2〜#5−2のいずれかに格納
される。
【0107】このようにして、各フラッシュメモリチッ
プ2−0〜2−3ごとに最大6つの消去済みブロックの
物理ブロックアドレスが消去済みブロックキュー32に
登録され、これによって最大6つのキューセット#0〜
#5が生成される。
【0108】消去済みブロックキュー32の生成は、マ
イクロプロセッサ6による制御のもと、上述したアドレ
ス変換テーブル31の生成の際に行われ、データ書き込
みに備えて待機している冗長ブロックの中から、これら
キューに登録すべき物理ブロックが選ばれる。
【0109】次に、本実施態様にかかるフラッシュメモ
リシステム1の動作について、データの読み出し動作、
データの書き込み動作の順に説明する。
【0110】まず、本実施態様にかかるフラッシュメモ
リシステム1によるデータの読み出し動作について説明
する。
【0111】データの読み出し動作においては、ホスト
アドレスから内部アドレスへの変換が行われた後、かか
る内部アドレスを用いてユーザデータの読み出し実行さ
れる。以下、かかる動作について、具体的な例を挙げて
詳細に説明する。
【0112】ここでは、ホストコンピュータ5より、バ
ス14、コネクタ4及びバス13を介して、外部コマン
ドの一種である外部読み出しコマンドとともにホストア
ドレス、例えば「00000111111111100
000B」がフラッシュメモリシステム1に供給された
場合を例に説明する。
【0113】まず、ホストアドレス及び外部読み出しコ
マンドがコントローラ3に供給されると、これらホスト
アドレス及び外部読み出しコマンドは、ホストインター
フェースブロック7が有するタスクファイルレジスタ
(図示せず)に一時的に格納される。
【0114】次に、タスクファイルレジスタ(図示せ
ず)に格納されたホストアドレスが正しいアドレスであ
るか否か、すなわち、かかるホストアドレスが、本来存
在しない物理アドレスや無効なアドレスを示していない
か否かが、ホストインターフェースブロック7によって
判定される。
【0115】かかる判定の結果、タスクファイルレジス
タ(図示せず)に格納されたホストアドレスが有効なア
ドレスであると判断されれば、アドレス変換テーブル3
1を用いて内部アドレスに変換される。一方、これが異
常なアドレスであると判断されれば、ホストインターフ
ェースブロック7が有するエラーレジスタ(図示せず)
がセットされ、ホストコンピュータは、かかるレジスタ
の内容を参照することにより、エラーの発生を知ること
ができる。
【0116】次に、アドレス変換テーブル31を用いた
内部アドレスへの変換について、図10を参照しながら
説明する。
【0117】図10においては、便宜上、ホストアドレ
スから上位13ビットを「A」とし、上位14ビット目
〜上位18ビット目からなる5ビットを「B」とし、下
位2ビットを「C」と表記している。
【0118】まず、マイクロプロセッサ6による制御の
もと、20ビットのホストアドレスから上位13ビット
(A)が取り出され、これによってアドレス変換テーブ
ル31内のいずれかの仮想ブロック表示領域が選択され
る。本例では、ホストアドレスの上位13ビット(A)
が「0000011111111B(255)」である
から、選択される仮想ブロック表示領域は、仮想ブロッ
ク表示領域#255となる。
【0119】次に、マイクロプロセッサ6による制御の
もと、選択された仮想ブロック表示領域#255に含ま
れる4個のセルのうち、ホストアドレスの下位2ビット
(C)と同じ枝番号を有するセルの内容が読み出され
る。この場合、ホストアドレスの下位2ビット(C)が
「00B(0)」であるから、その内容が読み出される
セルは、セル#255−0となる。図10に示されるよ
うに、本例では、かかるセル#255−0の内容が「0
000100001111B」であるものとする。
【0120】次に、マイクロプロセッサ6による制御の
もと、ホストアドレスの下位2ビット(C)、読み出さ
れたセルの内容、及びホストアドレスの上位14ビット
目〜上位18ビット目からなる5ビット(B)がこの順
に結合される。結合されたアドレスは、内部アドレスと
なる。この場合、ホストアドレスの下位2ビット(C)
は「00B」であり、読み出されたセルの内容は「00
00100001111B」であり、ホストアドレスの
上位14ビット目〜上位18ビット目からなる5ビット
(B)は「11000B」であることから、得られる内
部アドレスは、図10に示されるように、「00000
010000111111000B」となる。
【0121】以上より、ホストアドレスから内部アドレ
スへの変換が完了する。
【0122】一方、ホストインターフェースブロック7
が有するタスクファイルレジスタ(図示せず)に外部読
み出しコマンドが格納されていることに応答して、マイ
クロプロセッサ6による制御のもと、フラッシュシーケ
ンサブロック12が有するレジスタ(図示せず)に対す
る設定がなされる。かかる設定は、次のように行われ
る。
【0123】まず、マイクロプロセッサ6による制御の
もと、内部コマンドの一種である内部読み出しコマンド
がフラッシュシーケンサブロック12内の所定のレジス
タ(図示せず)に設定される。さらに、マイクロプロセ
ッサ6による制御のもと、20ビット長の内部アドレス
がフラッシュシーケンサブロック12内の所定のレジス
タ(図示せず)に設定される。
【0124】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタに対する設定が完了す
ると、フラッシュシーケンサブロック12による一連の
読み出し動作が実行される。フラッシュシーケンサブロ
ック12による一連の読み出し動作は、次の通りであ
る。
【0125】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された内部アドレスの上位2
ビットに基づき、フラッシュメモリチップ2−0〜2−
3のうち、アクセスすべきページが属するフラッシュメ
モリチップに対応するチップ選択信号を活性化するよ
う、フラッシュメモリインターフェースブロック10に
指示する。この場合、内部アドレスの上位2ビットは
「00B(0)」であるから、アクセスすべきページが
属するフラッシュメモリチップは、フラッシュメモリチ
ップ2−0であり、チップ選択信号#0が活性化され
る。これにより、フラッシュメモリチップ2−0は、デ
ータの読み出しが可能な状態となる。一方、チップ選択
信号#1〜#3は、非活性状態が保たれる。
【0126】次に、フラッシュシーケンサブロック12
は、所定のレジスタに格納された内部アドレスの下位1
8ビット「000010000111111000B」
を、所定のレジスタに格納された内部読み出しコマンド
とともにバス15に供給するよう、フラッシュメモリイ
ンターフェースブロック10に指示する。バス15に供
給された18ビットの内部アドレス及び内部読み出しコ
マンドは、フラッシュメモリチップ2−0〜2−3に対
し共通に供給されるが、上述のとおり、チップ選択信号
#0は活性状態となっており、チップ選択信号#1〜#
3は非活性状態となっているので、バス15に供給され
た内部アドレス及び内部読み出しコマンドは、フラッシ
ュメモリチップ2−0に対してのみ有効となる。
【0127】これに応答して、フラッシュメモリチップ
2−0は、供給された18ビットの内部アドレス「00
0010000111111000B」に格納されたデ
ータの読み出しを実行する。ここで、供給された18ビ
ットの内部アドレス「000010000111111
000B」のうち、上位13ビットは物理ブロックを特
定し、下位5ビットは当該物理ブロック内の物理ページ
を特定するために用いられる。この場合、上位13ビッ
トは「0000100001111B(271)」であ
り、下位5ビットは「11000B(24)」であるか
ら、特定される物理ブロックはブロック#271とな
り、特定される物理ページは物理ページ#24となる。
すなわち、フラッシュメモリチップ2−0は、ブロック
#271の物理ページ#24に格納されたデータの読み
出しを実行する。かかる読み出し動作においては、ユー
ザ領域25に格納されたユーザデータのみならず、冗長
領域26に格納された各種付加情報も読み出される。
【0128】尚、図7において説明したように、本実施
態様においては、4つの物理ブロックが仮想的に結合さ
れて一つの仮想ブロックが構成されているので、フラッ
シュメモリチップ2−0に属する物理ブロック#271
の物理ページ#24は、仮想ブロック#255の仮想ペ
ージ#96に対応する。
【0129】このようにしてフラッシュメモリチップ2
−0から読み出されたユーザデータ及び付加情報は、バ
ス15を介してフラッシュメモリインターフェースブロ
ック10に供給される。フラッシュメモリインターフェ
ースブロック10がユーザデータ及び付加情報を受け取
ると、フラッシュシーケンサブロック12による制御の
もと、付加情報に含まれるエラーコレクションコードが
抽出され、ユーザデータ及び抽出されたエラーコレクシ
ョンコードがECCブロック11に供給される。ユーザ
データ及びエラーコレクションコードがECCブロック
11に供給されると、ECCブロック11は、エラーコ
レクションコードに基づき、ユーザデータに誤りがある
か否かを判断し、誤りがないと判断すれば、供給された
ユーザデータをそのままバッファ9に格納し、誤りがあ
ると判断すれば、これをエラーコレクションコードに基
づいて訂正し、訂正後のユーザデータをバッファ9に格
納する。このようにしてバッファ9に誤りのないユーザ
データが格納されると、フラッシュシーケンサブロック
12による一連の読み出し動作が完了する。
【0130】そして、バッファ9に格納されたユーザデ
ータは、マイクロプロセッサ6による制御のもと、ホス
トインターフェースブロック7より、バス13、コネク
タ4及びバス14を介してホストコンピュータ5に供給
される。
【0131】以上により、一連の読み出し動作が完了す
る。
【0132】次に、本実施態様にかかるフラッシュメモ
リシステム1による種々のデータ書き込み動作について
説明する。
【0133】書き込み動作1(空きブロックにデータを
書き込む場合) 空きブロックにデータを書き込む場合、すなわち新規デ
ータの書き込み動作においては、仮想ブロックの生成、
生成された仮想ブロックの仮想ページ#0〜#3に対す
る冗長データの書き込み、生成された仮想ブロックの所
定の仮想ページに対するユーザデータの書き込みが実行
される。以下、かかる動作について、具体的な例を挙げ
て詳細に説明する。
【0134】ここでは、ホストコンピュータ5より、バ
ス14、コネクタ4及びバス13を介して、外部コマン
ドの一種である外部書き込みコマンドと、対応する仮想
ブロックにデータが割り当てられていない連続した複数
のホストアドレス、例えば「000101010101
01000100B」〜「0001010101010
1000111B」と、これら各アドレスに書き込むべ
きデータとがフラッシュメモリシステム1に供給された
場合を例に説明する。ここでは、これら連続するホスト
アドレスを、ホストアドレス#0〜#3と呼ぶ。
【0135】まず、ホストアドレス#0〜#3及び外部
書き込みコマンドがコントローラ3に供給されると、こ
れらホストアドレス#0〜#3及び外部書き込みコマン
ドは、ホストインターフェースブロック7が有するタス
クファイルレジスタ(図示せず)に一時的に格納され
る。さらに、ホストアドレス#0〜#3にそれぞれ対応
する書き込みデータがコントローラ3に供給されると、
マイクロプロセッサ6による制御のもと、これらデータ
がECCブロック11に送出される。これらデータの供
給を受けたECCブロック11は、これらデータを解析
してエラーコレクションコードを生成し、これを一時的
に保持する。さらに、ECCブロック11は、スタート
ページデータとして、ホストアドレス#3の下位7ビッ
トに1を加算したデータを生成し、これを一時的に保持
する。この場合、スタートページデータは、「1001
000(72)」となる。
【0136】次に、タスクファイルレジスタ(図示せ
ず)に格納されたホストアドレス#0〜#3が正しいア
ドレスであるか否か、すなわち、かかるホストアドレス
#0〜#3が、本来存在しない物理アドレスや無効なア
ドレスを示していないか否かが、ホストインターフェー
スブロック7によって判定される。
【0137】かかる判定の結果、タスクファイルレジス
タ(図示せず)に格納されたホストアドレス#0〜#3
が有効なアドレスであると判断されれば、アドレス変換
テーブル31を用いて内部アドレスに変換される。一
方、これが異常なアドレスであると判断されれば、ホス
トインターフェースブロック7が有するエラーレジスタ
(図示せず)がセットされ、ホストコンピュータは、か
かるレジスタの内容を参照することにより、エラーの発
生を知ることができる。
【0138】図11は、アドレス変換テーブル31を用
いた内部アドレスへの変換方法を説明するための図であ
る。
【0139】図11に示されるように、本例では、ホス
トアドレス#0〜#3の上位13ビット(A)が「00
01010101010B(682)」であるから、選
択される仮想ブロック表示領域は、仮想ブロック表示領
域#682となる。
【0140】次に、マイクロプロセッサ6による制御の
もと、SRAMワークエリア8に格納されているアドレ
ス変換テーブル31から、仮想ブロック表示領域#68
2の内容が読み出される。ここでは、新規データの書き
込み動作、すなわち対応する仮想ブロックに現在データ
が割り当てられていないホストアドレスに対して新しく
データを割り当てる動作であるので、仮想ブロック表示
領域#682内のフラグ#682は「0(無効)」を示
している。
【0141】次に、マイクロプロセッサ6による制御の
もと、消去済みブロックキュー32を構成するキューセ
ット#0〜#5のいずれか、例えば、キューセット#0
が選択され、かかるキューセット#0を構成する各キュ
ー#0−0〜#0−3に格納された内容が読み出され
る。上述のとおり、各キューに格納されているのは、消
去済みブロックの物理ブロックアドレスである。図11
に示されるように、本例では、これらキュー#0−0〜
#0−3の内容がそれぞれ「000000000111
1B(15)」、「1110000110011B(7
219)」、「0101111110000B(305
6)」、「1000100000000B(435
2)」であるものとする。
【0142】キュー#0−0〜#0−3に格納された内
容が読み出されると、これらが仮想ブロック表示領域#
682のセル#682−0〜セル#682−3にそれぞ
れ格納されるとともに、対応するスタートページ格納領
域#682に、上記スタートページ「1001000
(72)」が格納される。さらに、対応するフラグ#6
82が「1(有効)」に書き換えられる。これにより、
仮想ブロックの生成が完了する。
【0143】そして、図11に示されるように、マイク
ロプロセッサ6による制御のもと、ホストアドレス#0
〜#3それぞれの下位2ビット(C)、対応するキュー
の内容、及びホストアドレス#0〜#3の上位14ビッ
ト目〜上位18ビット目からなる5ビット(B)がこの
順に結合される。結合されたアドレスは、それぞれ内部
アドレス#0〜#3となる。この場合、ホストアドレス
#0〜#3の下位2ビット(C)はそれぞれ「00B」
〜「11B」であり、読み出されたセルの内容は「00
00000001111B」、「1110000110
011B」、「0101111110000B」、「1
000100000000B」であり、ホストアドレス
#0〜#3の上位14ビット目〜上位18ビット目から
なる5ビット(B)はいずれも「10001B」である
ことから、得られる4つの内部アドレス#0〜#3の値
は、図11に示される値となる。
【0144】これにより、ホストアドレス#0〜#3か
ら内部アドレス#0〜#3への変換が完了する。上述の
とおり、内部アドレスの上位2ビットは、アクセスすべ
きフラッシュメモリチップの番号を示し、内部アドレス
の上位3ビット目〜上位15ビット目は、アクセスすべ
き物理ブロックアドレスを示し、内部アドレスの下位5
ビットは、アクセスすべき物理ページを示している。し
たがって、内部アドレス#0によって特定される物理ペ
ージは、フラッシュメモリチップ2−0の物理ブロック
#15の物理ページ#17となり、内部アドレス#1に
よって特定される物理ページは、フラッシュメモリチッ
プ2−1の物理ブロック#7219の物理ページ#17
となり、内部アドレス#2によって特定される物理ペー
ジは、フラッシュメモリチップ2−2の物理ブロック#
3056の物理ページ#17となり、内部アドレス#3
によって特定される物理ページは、フラッシュメモリチ
ップ2−3の物理ブロック#4352の物理ページ#1
7となる。
【0145】さらに、ホストインターフェースブロック
7が有するタスクファイルレジスタ(図示せず)に外部
書き込みコマンドが格納されていることに応答して、マ
イクロプロセッサ6による制御のもと、フラッシュシー
ケンサブロック12が有するレジスタ(図示せず)に対
する設定がなされる。かかる設定は、次のように行われ
る。
【0146】まず、マイクロプロセッサ6による制御の
もと、内部コマンドの一種であるデータ転送コマンド及
び内部書き込みコマンドがフラッシュシーケンサブロッ
ク12内の所定のレジスタ(図示せず)に設定される。
さらに、マイクロプロセッサ6による制御のもと、上記
生成された4つの内部アドレス#0〜#3がフラッシュ
シーケンサブロック12内の所定のレジスタ(図示せ
ず)に設定される。
【0147】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタ(図示せず)に対する
設定が完了すると、フラッシュシーケンサブロック12
による一連の書き込み動作が実行される。本例において
は、フラッシュシーケンサブロック12による一連の書
き込み動作は、仮想ブロック#682の仮想ページ#0
〜#3に対する各種冗長データの書き込み、並びに、仮
想ブロック#682の仮想ページ#68〜#71に対す
るユーザデータ及び各種冗長データの書き込みの順に実
行される。
【0148】図12は、フラッシュシーケンサブロック
12による仮想ブロック#682の仮想ページ#0〜#
3に対する一連の書き込み動作を概略的に示すタイミン
グ図である。
【0149】まず、フラッシュシーケンサブロック12
は、仮想ブロック#682の仮想ページ#0に対応する
内部アドレス#5を生成する。ここで、仮想ブロック#
682の仮想ページ#0に対応する内部アドレス#5と
は、フラッシュメモリチップ2−0内の物理ブロック#
15の物理ページ#0に対応し、その値は、「0000
0000000111100000B」である。
【0150】次に、このようにして生成された内部アド
レス#5の上位2ビットに基づいて、フラッシュメモリ
チップ2−0〜2−3のうち、アクセスすべきページが
属するフラッシュメモリチップに対応するチップ選択信
号を活性化するよう、フラッシュメモリインターフェー
スブロック10に指示する。この場合、内部アドレス#
5の上位2ビットは「00B(0)」であるから、チッ
プ選択信号#0が活性化される。これにより、フラッシ
ュメモリチップ2−0は、データの書き込みが可能な状
態となる。一方、チップ選択信号#1〜#3は、非活性
状態が保たれる。
【0151】次に、フラッシュシーケンサブロック12
は、上記内部アドレス#5の下位18ビット「0000
00000111100000B」を、所定のレジスタ
(図示せず)に格納されたデータ転送コマンドとともに
バス15に供給するよう、フラッシュメモリインターフ
ェースブロック10に指示する。バス15に供給された
内部アドレス#5の下位18ビット及びデータ転送コマ
ンドは、フラッシュメモリチップ2−0〜2−3に対し
共通に供給されるが、上述のとおり、チップ選択信号#
0は活性状態となっており、チップ選択信号#1〜#3
は非活性状態となっているので、バス15に供給された
内部アドレス#5の下位18ビット及びデータ転送コマ
ンドは、フラッシュメモリチップ2−0に対してのみ有
効となる(転送先指定)。
【0152】これにより、フラッシュメモリチップ2−
0は、供給された内部アドレス#5の下位18ビット
「000000000111100000B」に対応す
るページに書き込まれるべきデータの受け付けが許可さ
れた状態となる。
【0153】次に、仮想ブロック#682の仮想ページ
#0に書き込むべきデータが、フラッシュシーケンサブ
ロック12により、フラッシュメモリインターフェース
ブロック10を介して、バス15に供給される。ここ
で、仮想ブロック#682の仮想ページ#0とは、フラ
ッシュメモリチップ2−0内の物理ブロック#15の物
理ページ#0に対応し、ここに書き込むべきデータと
は、仮想ブロックアドレス、スタートページフラグ、ス
タートページデータ及びその他の付加情報であり、これ
らはいずれも冗長領域26に書き込まれるデータであ
る。この場合、仮想ブロックアドレスは「000101
0101010B(682)」であり、スタートページ
フラグは「10」であり、スタートページデータは「1
001000(72)」である。フラッシュメモリチッ
プ2−0内の物理ブロック#15の物理ページ#0のそ
の他の部分、すなわち、ユーザ領域25の全部分、冗長
領域26のうちエラーコレクションコード格納領域27
等には何らのデータも書き込まれない。但し、各ページ
に対するデータの書き込みは、ページ単位で一括して行
われるため、実際には、上記データを書き込まない部分
については、書き込み処理が実行されないのではなく、
「オール1」からなる書き込みデータが書き込まれるこ
とになる。
【0154】バス15に供給された仮想ブロックアドレ
ス、スタートページフラグ、スタートページデータ及び
冗長領域26に格納されるその他の付加情報も、やはり
フラッシュメモリチップ2−0〜2−3に対し共通に供
給されるが、上述のとおり、チップ選択信号#0が活性
状態となっているため、フラッシュメモリチップ2−0
に対してのみ有効となる(データ転送)。
【0155】このようにして、書き込みデータの受け付
けが許可された状態にあるフラッシュメモリチップ2−
0に対して仮想ブロックアドレスやスタートページフラ
グ等の付加情報が転送されると、かかる付加情報は、フ
ラッシュメモリチップ2−0内に備えられたレジスタ
(図示せず)に一時的に格納される。
【0156】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−0に対し
て発行する(書き込み命令)。
【0157】これに応答して、フラッシュメモリチップ
2−0は、所定のレジスタに格納されている上記付加情
報を、転送先指定処理によって指定されたアドレスに書
き込む(フラッシュプログラミング)。すなわち、レジ
スタに格納されている付加情報が、内部アドレス#5の
下位18ビット「00000000011110000
0B」により特定されるページ、つまり、フラッシュメ
モリチップ2−0の物理ブロック#15の物理ページ#
0に書き込まれる。フラッシュメモリチップ2−0の物
理ブロック#15の物理ページ#0は、仮想ブロック#
682の仮想ページ#0に対応する。
【0158】フラッシュメモリチップ2−0がフラッシ
ュプログラミングを実行している間、フラッシュシーケ
ンサブロック12は、仮想ブロック#682の仮想ペー
ジ#1に対応する内部アドレス#6を生成し、当該内部
アドレスにより示される物理ページに、仮想ページ#0
に書き込んだ情報と同じ情報を書き込む。ここで、仮想
ブロック#682の仮想ページ#1に対応する内部アド
レス#6とは、フラッシュメモリチップ2−1内の物理
ブロック#7219の物理ページ#0に対応し、その値
は、「01111000011001100000B」
である。
【0159】このような書き込み動作が、内部アドレス
#7、#8を用いて仮想ブロック#682の仮想ページ
#2及び仮想ページ#3に対しても行われ、これによ
り、仮想ブロック#682の仮想ページ#0〜仮想ペー
ジ#3の冗長領域26には、いずれも同じ情報が書き込
まれる。ここで、仮想ブロック#682の仮想ページ#
2とは、フラッシュメモリチップ2−2の物理ブロック
#3056の物理ページ#0に対応し、仮想ブロック#
682の仮想ページ#3とは、フラッシュメモリチップ
2−3の物理ブロック#4352の物理ページ#0に対
応する。
【0160】図13は、仮想ブロック#682の仮想ペ
ージ#0〜#3に対する一連の書き込み処理が完了した
状態における仮想ブロック#682の内容を示す概略図
である。
【0161】図13では、冗長領域26については、仮
想ブロックアドレス格納領域28、スタートページフラ
グ29及びスタートページデータ格納領域30のみが示
され、エラーコレクションコード格納領域27等のその
他の付加情報については省略されている。
【0162】このようにして、仮想ブロック#682の
仮想ページ#0〜#3に対する一連の書き込み処理が完
了すると、次に、仮想ブロック#682の仮想ページ#
68〜#71に対するユーザデータ及び各種冗長データ
の書き込みが実行される。
【0163】フラッシュシーケンサブロック12による
仮想ブロック#682の仮想ページ#68〜#71に対
する一連の書き込み動作も、図12に示されるタイミン
グで実行される。以下、仮想ブロック#682の仮想ペ
ージ#68〜#71に対する一連の書き込み動作につい
て詳細に説明する。
【0164】まず、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部アド
レスのうち、上位2ビットが「00B(0)」である内
部アドレス#0を選択し、当該内部アドレス#0の上位
2ビットに基づいて、フラッシュメモリチップ2−0〜
2−3のうち、アクセスすべきページが属するフラッシ
ュメモリチップに対応するチップ選択信号を活性化する
よう、フラッシュメモリインターフェースブロック10
に指示する。この場合、内部アドレス#0の上位2ビッ
トは「00B(0)」であるから、アクセスすべきペー
ジが属するフラッシュメモリチップは、フラッシュメモ
リチップ2−0であり、チップ選択信号#0が活性化さ
れる。これにより、フラッシュメモリチップ2−0は、
データの書き込みが可能な状態となる。一方、チップ選
択信号#1〜#3は、非活性状態が保たれる。
【0165】次に、フラッシュシーケンサブロック12
は、内部アドレス#0の下位18ビット「000000
000111110001B」を、所定のレジスタ(図
示せず)に格納されたデータ転送コマンドとともにバス
15に供給するよう、フラッシュメモリインターフェー
スブロック10に指示する。バス15に供給された内部
アドレス#0の下位18ビット及びデータ転送コマンド
は、フラッシュメモリチップ2−0〜2−3に対し共通
に供給されるが、上述のとおり、チップ選択信号#0は
活性状態となっており、チップ選択信号#1〜#3は非
活性状態となっているので、バス15に供給された内部
アドレス#0の下位18ビット及びデータ転送コマンド
は、フラッシュメモリチップ2−0に対してのみ有効と
なる(転送先指定)。
【0166】これにより、フラッシュメモリチップ2−
0は、供給された内部アドレス#0の下位18ビット
「000000000111110001B」に対応す
るページに書き込まれるべきデータの受け付けが許可さ
れた状態となる。
【0167】次に、バッファ9に格納されている書き込
みデータのうち、ホストアドレス#0に対応するデータ
及び対応するエラーコレクションコード等の冗長領域2
6に格納すべき付加情報が、フラッシュシーケンサブロ
ック12により、フラッシュメモリインターフェースブ
ロック10を介して、バス15に供給される。ここで、
冗長領域26に格納すべき付加情報のうち、仮想ブロッ
クアドレス、スタートページフラグ及びスタートページ
データについては、仮想ページ#0〜#3に格納された
内容と同じである。バス15に供給されたデータ及びエ
ラーコレクションコード等の付加情報も、やはりフラッ
シュメモリチップ2−0〜2−3に対し共通に供給され
るが、上述のとおり、チップ選択信号#0が活性状態と
なっているため、フラッシュメモリチップ2−0に対し
てのみ有効となる(データ転送)。
【0168】このようにして、書き込みデータの受け付
けが許可された状態にあるフラッシュメモリチップ2−
0に対して書き込みデータ及びエラーコレクションコー
ド等の付加情報が転送されると、かかる書き込みデータ
及びエラーコレクションコードは、フラッシュメモリチ
ップ2−0内に備えられたレジスタ(図示せず)に一時
的に格納される。
【0169】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−0に対し
て発行する(書き込み命令)。
【0170】これに応答して、フラッシュメモリチップ
2−0は、所定のレジスタに格納されているデータ及び
エラーコレクションコード等の付加情報を、転送先指定
処理によって指定されたアドレスに書き込む(フラッシ
ュプログラミング)。すなわち、レジスタに格納されて
いるデータ及びエラーコレクションコード等の付加情報
が、内部アドレス#0の下位18ビット「000000
000111110001B」により特定されるペー
ジ、つまり、フラッシュメモリチップ2−0の物理ブロ
ック#15の物理ページ#17に書き込まれる。フラッ
シュメモリチップ2−0の物理ブロック#15の物理ペ
ージ#17は、仮想ブロック#682の仮想ページ#6
8に対応する。
【0171】フラッシュメモリチップ2−0がフラッシ
ュプログラミングを実行している間、フラッシュシーケ
ンサブロック12は、所定のレジスタ(図示せず)に格
納された内部アドレスのうち、上位2ビットが「01B
(0)」である内部アドレス#1を選択し、当該内部ア
ドレス#1の上位2ビットに基づいて、チップ選択信号
#1を活性化させる。これにより、フラッシュメモリチ
ップ2−1は、データの書き込みが可能な状態となる。
【0172】次に、フラッシュシーケンサブロック12
は、内部アドレス#1の下位18ビット「111000
011001110001B」を、所定のレジスタ(図
示せず)に格納されたデータ転送コマンドとともにバス
15に供給するよう、フラッシュメモリインターフェー
スブロック10に指示する。この場合、上述のとおり、
チップ選択信号#1が活性状態となっているので、バス
15に供給された内部アドレス#1の下位18ビット及
びデータ転送コマンドは、フラッシュメモリチップ2−
1に対してのみ有効となる(転送先指定)。
【0173】その後、上述のとおり、フラッシュメモリ
チップ2−1に対してデータ転送、及び書き込み命令の
発行が行われ、ホストアドレス#1に対応するデータ及
び対応するエラーコレクションコード等の付加情報が、
内部アドレス#1により特定されるページに書き込まれ
る。この場合、内部アドレス#1の下位18ビットは
「111000011001110001B」であるか
ら、ホストアドレス#1に対応するデータ及び対応する
エラーコレクションコード等の付加情報は、フラッシュ
メモリチップ2−1の物理ブロック#7219の物理ペ
ージ#17に書き込まれる。フラッシュメモリチップ2
−1の物理ブロック#7219の物理ページ#17は、
仮想ブロック#682の仮想ページ#69に対応する。
【0174】このようなデータ書き込み動作が、内部ア
ドレス#2及び#3に対しても実行され、これにより、
ホストアドレス#2及び#3に対応するデータ及び対応
するエラーコレクションコード等の付加情報も、それぞ
れ内部アドレス#2及び#3により特定されるページへ
書き込まれる。この場合、内部アドレス#2の下位18
ビットは「010111111000010001B」
であるから、ホストアドレス#2に対応するデータ及び
対応するエラーコレクションコード等の付加情報は、フ
ラッシュメモリチップ2−2の物理ブロック#3056
の物理ページ#17に書き込まれる。同様に、内部アド
レス#3の下位18ビットは「10001000000
0010001B」であるから、ホストアドレス#3に
対応するデータ及び対応するエラーコレクションコード
等の付加情報は、フラッシュメモリチップ2−3の物理
ブロック#4352の物理ページ#17に書き込まれ
る。
【0175】ここで、フラッシュメモリチップ2−2の
物理ブロック#3056の物理ページ#17は、仮想ブ
ロック#682の仮想ページ#70に対応し、フラッシ
ュメモリチップ2−3の物理ブロック#4352の物理
ページ#17は、仮想ブロック#682の仮想ページ#
71に対応する。
【0176】また、マイクロプロセッサ6は、上述のデ
ータ書き込みによって、消去済みブロックキュー32の
キューセット#0に格納された物理ブロックアドレス
が、消去済みブロックの物理ブロックアドレスではなく
なったことに応答して、新たな消去済みブロックを冗長
ブロックの中から選択し、選択された消去済みブロック
の物理ブロックアドレスを新たにキュー#0−0〜#0
−3に格納する。
【0177】このようにして、フラッシュシーケンサブ
ロック12による一連の書き込み動作が完了する。
【0178】図14は、仮想ブロック#682の仮想ペ
ージ#68〜#71に対する一連の書き込み処理が完了
した状態における仮想ブロック#682の内容を示す概
略図である。
【0179】図14では、ユーザ領域25のうち、ユー
ザデータの格納されている部分にはハッチングが施され
ている。
【0180】かかる一連の書き込み動作においては、連
続するホストアドレス#0〜#3に対応するデータが、
それぞれ異なるフラッシュメモリチップ2−0〜2−3
に属する異なる物理ブロック内に書き込まれた点が重要
である。これら4つの物理ブロックは、上述のとおり一
つの仮想ブロック#682を構成し、連続するホストア
ドレス#0〜#3に対応するデータは、当該仮想ブロッ
ク#682内の連続する仮想ページ#68〜#71に書
き込まれたことになる。
【0181】また、図14に示されるように、仮想ブロ
ック#682の仮想ページ#68〜#71にのみユーザ
データが格納されており、その他の仮想ページにはユー
ザデータが格納されていないので、当該仮想ブロックに
おけるスタートページは「72」であり、かかる値が仮
想ページ#0のスタートページデータ格納領域30に格
納されていることが分かる。このため、コントローラ3
は、この仮想ブロックの仮想ページ#72〜#127が
空きページであることを知ることが可能となり、その
後、ホストコンピュータ5より仮想ブロック#682の
仮想ページ#72〜#127に対するデータの書き込み
が要求された場合であっても、ブロック間転送を行うこ
となく、仮想ページ#72〜#127へ直接データを書
き込むことが可能となる。
【0182】尚、上記の例では、仮想ブロックの先頭ペ
ージである仮想ページ#0以外のページ(仮想ページ#
1〜#3、#68〜#71)にも、スタートページフラ
グ及びスタートページデータを書き込んでいるが、これ
らは参照されることがないので、省略しても構わない。
【0183】さらに、上記の例では、各物理ブロックの
先頭ページである仮想ページ#0〜#3以外のページ
(仮想ページ#68〜#71)にも、仮想ブロックアド
レスを書き込んでいるが、これを省略しても構わない。
【0184】書き込み動作2(使用済みブロックにデー
タを全て追加して書き込む場合) すでにデータの格納されている仮想ブロック(使用済み
ブロック)にデータを追加して書き込む場合、アドレス
変換テーブル31内の対応するスタートページ格納領域
を参照することによって、当該ブロックへの全てのデー
タの追加的な書き込みが可能であるか否かが判断され
る。
【0185】かかる判断においては、まず、当該ブロッ
クに関するスタートページの特定が行われる。スタート
ページの特定は、上述のとおり、スタートページ検索に
よって特定する方法と、アドレス変換テーブル31内の
スタートページ格納領域に格納されたスタートページか
ら直接特定する方法がある。
【0186】前者の方法によるスタートページの特定
は、スタートページは存在するものの、コントローラ3
が起動されてから当該仮想ブロックへのデータの書き込
みが未だ行われていない場合に実行される。すなわち、
アドレス変換テーブル31の作成の際に、当該仮想ブロ
ックの仮想ページ#0〜#3に含まれる仮想ブロックア
ドレスが有効な仮想ブロックアドレスを示しており、且
つ、スタートページフラグ29が「1x」であった場
合、アドレス変換テーブル31内の対応するスタートペ
ージ格納領域は「00001B」とされるので、この場
合、コントローラ3は、スタートページ検索を行うこと
によって当該仮想ブロックに関するスタートページを特
定することが可能となる。
【0187】一方、後者の方法によるスタートページの
特定は、上記書き込み動作1において説明したように、
コントローラ3が起動された後、当該仮想ブロックへの
データの書き込みが少なくとも1回行われた場合に実行
される。すなわち、当該ブロックへのデータの書き込み
が少なくとも1回行われた場合、上述のとおり、アドレ
ス変換テーブル31内の対応するスタートページ格納領
域にスタートページが書き込まれるので、この場合、コ
ントローラ3は、対応するスタートページ格納領域を参
照することによって当該仮想ブロックに関するスタート
ページを特定することが可能となる。
【0188】このようにいずれかの方法でスタートペー
ジが特定されると、次に、かかるスタートページと書き
込み対象である仮想ページの先頭ページとが比較され、
これによってデータの追加的な書き込みが可能であるか
否かが最終的に判断される。かかる判断は、書き込み対
象である仮想ページの先頭ページを示す7ビットの値
が、スタートページを示す7ビットの値と同じか、また
はこれを超えていれば、すべてのデータの追加的な書き
込みが可能であるとされ、書き込み対象である仮想ペー
ジの先頭ページを示す7ビットの値が、スタートページ
を示す7ビットの値未満であれば、全てのデータを追加
的に書き込むことは不可能であるとされる。尚、書き込
み対象の仮想ページ番号は、上述のとおり、ホストアド
レスの下位7ビット(B+C)によって示される。
【0189】全てのデータの追加的な書き込み処理を行
う場合、ユーザデータを書き込むべき仮想ページの先頭
ページがスタートページと一致しているか否かによっ
て、行われる処理が異なる。
【0190】まず、ユーザデータを書き込むべき仮想ペ
ージの先頭ページがスタートページと一致している場
合、すなわち、スタートページに対してユーザデータの
書き込みが行われる場合には、当該書き込み処理によっ
て新たなスタートページとなる仮想ページの番号が、ス
タートページデータとしてユーザデータを書き込むべき
各仮想ページの冗長領域26内のスタートページデータ
格納領域30に書き込まれる。
【0191】一方、書き込み対象である仮想ページの先
頭ページがスタートページと一致していない場合、すな
わち、スタートページに対してユーザデータの書き込み
が行われない場合には、当該書き込み処理によって新た
なスタートページとなる仮想ページの番号が、スタート
ページデータとして現在のスタートページ及び書き込み
対象の各仮想ページの冗長領域26内のスタートページ
データ格納領域30に書き込まれる。
【0192】また、書き込み処理を行うとスタートペー
ジが存在しなくなる場合、すなわち、ユーザデータを書
き込むべき仮想ページに最終ページ(仮想ページ#12
7)が含まれている場合には、仮想ページ#0の冗長領
域26のスタートページフラグ29が「0x」に書き換
えられる。
【0193】ここで、新たなスタートページとなる仮想
ページとは、書き込み対象である最後の仮想ページの次
のページである。
【0194】以上説明した、使用済みブロックに対する
全てのデータの追加的な書き込み処理について、具体的
な例を挙げてより詳細に説明する。
【0195】まず、ユーザデータを書き込むべき仮想ペ
ージの先頭ページがスタートページと一致している場合
について説明する。
【0196】ユーザデータを書き込むべき仮想ページの
先頭ページがスタートページと一致している場合 ここでは、上述した書き込み動作1が完了した直後の状
態(図14参照)において、ホストコンピュータ5よ
り、バス14、コネクタ4及びバス13を介して、外部
コマンドの一種である外部書き込みコマンドと、2つの
ホストアドレス「00010101010101001
000B」(ホストアドレス#0)及び「000101
01010101001001B」(ホストアドレス#
1)と、これらホストアドレスにそれぞれ書き込むべき
データとがフラッシュメモリシステム1に供給された場
合を例に説明する。尚、これらホストアドレスは、それ
ぞれ仮想ブロック#682の仮想ページ#72、#73
に対応する。
【0197】ホストアドレス#0、#1及び外部書き込
みコマンドがコントローラ3に供給された場合の、コン
トローラ3の基本的な動作は上述したとおりであり、重
複する部分の説明は省略する。
【0198】図15は、ホストアドレス#0、#1を内
部アドレス#0、#1に変換する方法を説明するための
図である。
【0199】図15に示されるように、本例では、ホス
トアドレス#0、#1の上位13ビット(A)が「00
01010101010B」であるから、選択される仮
想ブロックは、仮想ブロック#682となる。
【0200】次に、マイクロプロセッサ6による制御の
もと、SRAMワークエリア8に格納されているアドレ
ス変換テーブル31から仮想ブロック表示領域#682
が選択され、仮想ブロック表示領域#682を構成する
4個のセルのうち、ホストアドレスの下位2ビット
(C)と同じ枝番号を有するセルの内容が読み出され
る。この場合、ホストアドレス#0の下位2ビット
(C)が「00B(0)」であり、ホストアドレス#1
の下位2ビット(C)が「01B(1)」であるから、
その内容が読み出されるセルは、セル#682−0及び
セル#682−1となる。本例では、セル#682−0
及びセル#682−1の内容は、上述のとおり、それぞ
れ「0000000001111B」及び「11100
00110011B」である。
【0201】次に、マイクロプロセッサ6による制御の
もと、ホストアドレスの下位2ビット(C)、読み出さ
れたセルの内容、及びホストアドレスの上位14ビット
目〜上位18ビット目からなる5ビット(B)がこの順
に結合される。結合されたアドレスは、それぞれ内部ア
ドレス#0及び#1となる。この場合、ホストアドレス
#0については、その下位2ビット(C)が「00B」
であり、対応するセルの内容が「0000000001
111B」であり、ホストアドレス#0の上位14ビッ
ト目〜上位18ビット目からなる5ビット(B)が「1
0010B」であることから、得られる内部アドレス#
0は、「00000000000111110010
B」となる。また、ホストアドレス#1については、そ
の下位2ビット(C)が「01B」であり、対応するセ
ルの内容が「1110000110011B」であり、
ホストアドレス#1の上位14ビット目〜上位18ビッ
ト目からなる5ビット(B)が「10010B」である
ことから、得られる内部アドレス#1は、「01111
000011001110010B」となる。
【0202】以上より、ホストアドレス#0、#1から
内部アドレス#0、#1への変換が完了する。
【0203】次に、マイクロプロセッサ6による制御の
もと、アドレス変換テーブル31から対応するスタート
ページ格納領域#682が選択され、ここに格納された
内容が読み出される。本例においては、スタートページ
格納領域#682の内容は「1001000B(7
2)」である。
【0204】このようにしてスタートページが読み出さ
れると、マイクロプロセッサ6による制御のもと、書き
込み対象である仮想ページの先頭ページとの比較が行わ
れる。この場合、書き込み対象である仮想ページの先頭
ページは、ホストアドレス#0によって示されているの
で、スタートページの値「1001000B(72)」
と、ホストアドレス#0の下位7ビットの値「1001
000B(72)」とが比較されることとなる。このよ
うに、本例では、ホストアドレス#0の下位7ビットの
値「1001000B(72)」がスタートページの値
「1001000B(72)」と一致しているので、デ
ータの追加的な書き込みが可能であると判断される。
【0205】さらに、マイクロプロセッサ6による制御
のもと、ユーザデータが書き込まれるべき仮想ページの
最終ページを示すホストアドレス#1の下位7ビットに
1を加算したデータ、すなわち新たなスタートページが
生成される。かかるスタートページの値は、スタートペ
ージデータとして、ECCブロック11内に一時的に保
持される。この場合、ホストアドレス#1の下位7ビッ
トが「1001001B(73)」であるから、ECC
ブロック11内に格納される新たなスタートページデー
タは「1001010B(74)」となる。
【0206】さらに、アドレス変換テーブル31内の対
応するスタートページ格納領域#682に、上記新たな
スタートページ「1001010B(74)」が上書き
される。
【0207】以上より、内部アドレス#0によってアク
セスされるのはフラッシュメモリチップ2−0内の物理
ブロック#15の物理ページ#18となり、内部アドレ
ス#1によってアクセスされるのはフラッシュメモリチ
ップ2−1内の物理ブロック#7219の物理ページ#
18となる。
【0208】その後、フラッシュシーケンサブロック1
2が有するレジスタ(図示せず)への設定が完了する
と、フラッシュシーケンサブロック12による一連の書
き込み動作が実行される。
【0209】すなわち、本例においては、まず内部アド
レス#0を用いて転送先指定が行われた後、バッファ9
に格納されている書き込みデータのうち、ホストアドレ
ス#0に対応するデータ及び対応するエラーコレクショ
ンコード等の冗長領域26に格納すべき付加情報が、フ
ラッシュメモリチップ2−0に対してデータ転送され、
その後、書き込み命令が発行される。これにより、フラ
ッシュメモリチップ2−0の物理ブロック#15の物理
ページ#18に対する書き込み処理が完了する。ここ
で、フラッシュメモリチップ2−0の物理ブロック#1
5の物理ページ#18に書き込むべきデータとは、ホス
トアドレス#0に対応するユーザデータ、当該ユーザデ
ータに対応するエラーコレクションコード、仮想ブロッ
クアドレス、スタートページフラグ、スタートページデ
ータ及び冗長領域26に格納されるその他の付加情報で
ある。この場合、書き込むべきスタートページフラグ2
9の値は「10」であり、スタートページデータの値は
「1001010B(74)」である。尚、フラッシュ
メモリチップ2−0の物理ブロック#15の物理ページ
#18は、仮想ブロック#682の仮想ページ#72に
対応する。
【0210】さらに、フラッシュメモリチップ2−0の
物理ブロック#15の物理ページ#18に対するフラッ
シュプログラミングが実行されている途中で、内部アド
レス#1を用いて転送先指定が行われた後、バッファ9
に格納されている書き込みデータのうち、ホストアドレ
ス#1に対応するデータ及び対応するエラーコレクショ
ンコード等の冗長領域26に格納すべき付加情報が、フ
ラッシュメモリチップ2−1に対してデータ転送され、
その後、書き込み命令が発行される。これにより、フラ
ッシュメモリチップ2−1の物理ブロック#7219の
物理ページ#18に対する書き込み処理が完了する。こ
こで、フラッシュメモリチップ2−1の物理ブロック#
7219の物理ページ#18に書き込むべきデータと
は、ホストアドレス#1に対応するユーザデータ、当該
ユーザデータに対応するエラーコレクションコード、仮
想ブロックアドレス、スタートページフラグ、スタート
ページデータ及び冗長領域26に格納されるその他の付
加情報である。この場合、書き込むべきスタートページ
フラグ29の値は「10」であり、スタートページデー
タの値は「1001010B(74)」である。尚、フ
ラッシュメモリチップ2−1の物理ブロック#7219
の物理ページ#18は、仮想ブロック#682の仮想ペ
ージ#73に対応する。
【0211】図16は、仮想ブロック#682の仮想ペ
ージ#72、#73に対する一連の書き込み処理が完了
した状態における仮想ブロック#682の内容を示す概
略図である。
【0212】かかる一連の書き込み動作においてもは、
連続するホストアドレス#0、#1に対応するデータ
が、それぞれ異なるフラッシュメモリチップ2−0、2
−1に属する異なる物理ブロック内に書き込まれてい
る。
【0213】また、図16に示されるように、仮想ブロ
ック#682の仮想ページ#68〜#73にのみユーザ
データが格納されており、その他の仮想ページにはユー
ザデータが格納されていないので、当該仮想ブロックに
おけるスタートページは「74」であり、かかる値が仮
想ページ#72のスタートページデータ格納領域30に
格納されていることが分かる。このため、コントローラ
3は、スタートページ検索によって、この仮想ブロック
の仮想ページ#74〜#127が空きページであること
を知ることが可能となり、その後、ホストコンピュータ
5より仮想ブロック#682の仮想ページ#74〜#1
27に対するデータの書き込みが要求された場合であっ
ても、ブロック間転送を行うことなく、仮想ページ#7
4〜#127へ直接データを書き込むことが可能とな
る。
【0214】尚、上記の例では、書き込み対象の仮想ペ
ージ#72及び#73のうち、従前のスタートページ
(仮想ページ#72)以外のページ(仮想ページ#7
3)にも、スタートページフラグ及びスタートページデ
ータを書き込んでいるが、これらは参照されることがな
いので、省略しても構わない。
【0215】さらに、上記の例では、書き込み対象の仮
想ページ#72及び#73に仮想ブロックアドレスを書
き込んでいるが、仮想ページ#72、#73の仮想ブロ
ックアドレス格納領域28に格納された仮想ブロックア
ドレスは参照されることがないので、これを省略しても
構わない。
【0216】また、上記の例では、スタートページ格納
領域#682から直接スタートページを入手している
が、上記書き込み動作1が行われた後、コントローラ3
がリセットされたことによりSRAMワークエリア8の
内容が一旦消去されている場合には、スタートページ格
納領域#682から直接スタートページを入手すること
はできない。この場合、コントローラ3のリセット時に
実行されるアドレス変換テーブル31の作成作業によっ
て、スタートページ格納領域#682の内容が「000
0001B」となるので、上述したスタートページ検索
によってスタートページを入手する必要がある。
【0217】次に、ユーザデータを書き込むべきページ
の先頭ページがスタートページと一致していない場合に
ついて説明する。
【0218】ユーザデータを書き込むべきページの先頭
ページがスタートページと一致していない場合 ここでは、上述した書き込み動作1が完了した直後の状
態(図14参照)において、ホストコンピュータ5よ
り、バス14、コネクタ4及びバス13を介して、外部
コマンドの一種である外部書き込みコマンドと、ホスト
アドレス「00010101010101001010
B」(ホストアドレス#0)及び「000101010
10101001011B」(ホストアドレス#1)
と、これらホストアドレスにそれぞれ書き込むべきデー
タとがフラッシュメモリシステム1に供給された場合を
例に説明する。尚、これらホストアドレスは、それぞれ
仮想ブロック#682の仮想ページ#74、#75に対
応する。
【0219】ホストアドレス#0、#1及び外部書き込
みコマンドがコントローラ3に供給された場合の、コン
トローラ3の基本的な動作は上述したとおりであり、重
複する部分の説明は省略する。
【0220】図17は、ホストアドレス#0、#1を内
部アドレス#0、#1に変換する方法を説明するための
図である。
【0221】図17に示されるように、本例では、ホス
トアドレス#0の下位2ビット(C)は「10B」であ
り、読み出されるセルの内容は「0101111110
000B」であり、ホストアドレス#0の上位14ビッ
ト目〜上位18ビット目からなる5ビット(B)は「1
0010B」であることから、得られる内部アドレス#
0は、「10010111111000010010
B」となる。また、ホストアドレス#1の下位2ビット
(C)は「11B」であり、読み出されるセルの内容は
「1000100000000B」であり、ホストアド
レス#1の上位14ビット目〜上位18ビット目からな
る5ビット(B)は「10010B」であることから、
得られる内部アドレス#1は、「1110001000
0000010010B」となる。
【0222】以上より、ホストアドレス#0、#1から
内部アドレス#0、#1への変換が完了する。
【0223】次に、マイクロプロセッサ6による制御の
もと、アドレス変換テーブル31から対応するスタート
ページ格納領域#682が選択され、ここに格納された
内容が読み出される。上述のとおり、スタートページ格
納領域#682の内容は「1001000B(72)」
である。
【0224】このようにしてスタートページが読み出さ
れると、マイクロプロセッサ6による制御のもと、書き
込み対象である仮想ページの先頭ページとの比較が行わ
れる。この場合、書き込み対象である仮想ページの先頭
ページは、ホストアドレス#0によって示されているの
で、スタートページの値「1001000B(72)」
と、ホストアドレス#0の下位7ビットの値「1001
010B(74)」とが比較されることとなる。このよ
うに、本例においても、ホストアドレス#0の下位7ビ
ットの値「1001010B(74)」がスタートペー
ジの値「1001000B(72)」を超えているの
で、データの追加的な書き込みが可能であると判断され
る。
【0225】さらに、マイクロプロセッサ6による制御
のもと、ユーザデータが書き込まれるべき仮想ページの
最終ページを示すホストアドレス#1の下位7ビットに
1を加算したデータ、すなわち新たなスタートページが
生成される。かかるスタートページの値は、スタートペ
ージデータとして、ECCブロック11内に一時的に保
持される。この場合、ホストアドレス#1の下位7ビッ
トが「1001011B(75)」であるから、ECC
ブロック11内に格納されるスタートページデータは
「1001100B(76)」となる。
【0226】さらに、アドレス変換テーブル31内の対
応するスタートページ格納領域#682に、上記スター
トページ「1001100B(76)」が上書きされ
る。
【0227】以上より、内部アドレス#0によってアク
セスされるのはフラッシュメモリチップ2−2内の物理
ブロック#3056の物理ページ#18となり、内部ア
ドレス#1によってアクセスされるのはフラッシュメモ
リチップ2−3内の物理ブロック#4352の物理ペー
ジ#18となる。
【0228】その後、フラッシュシーケンサブロック1
2が有するレジスタ(図示せず)への設定が完了する
と、フラッシュシーケンサブロック12による一連の書
き込み動作が実行される。本例においては、フラッシュ
シーケンサブロック12による一連の書き込み動作は、
フラッシュメモリチップ2−0内の物理ブロック#15
の物理ページ#18(従前のスタートページ)に対する
各種冗長データの書き込み、フラッシュメモリチップ2
−2内の物理ブロック#3056の物理ページ#18
(ホストアドレス#0に対応)に対するユーザデータ及
び各種冗長データの書き込み、フラッシュメモリチップ
2−3内の物理ブロック#4352の物理ページ#18
(ホストアドレス#1に対応)に対するユーザデータ及
び各種冗長データの書き込みの順に実行される。
【0229】すなわち、本例においては、まず従前のス
タートページに対する転送先指定が行われた後、バッフ
ァ9に格納されている書き込みデータのうち、従前のス
タートページの冗長領域26に格納すべき付加情報が、
フラッシュメモリチップ2−0に対してデータ転送さ
れ、その後、書き込み命令が発行される。これにより、
フラッシュメモリチップ2−0の物理ブロック#15の
物理ページ#18に対する書き込み処理が完了する。こ
こで、フラッシュメモリチップ2−0の物理ブロック#
15の物理ページ#18に書き込むべきデータとは、ス
タートページフラグ及びスタートページデータであり、
その値は、それぞれ「10」及び「1001100B
(76)」である。尚、フラッシュメモリチップ2−0
の物理ブロック#15の物理ページ#18は、仮想ブロ
ック#682の仮想ページ#72に対応する。
【0230】次に、フラッシュメモリチップ2−0の物
理ブロック#15の物理ページ#18に対するフラッシ
ュプログラミングが実行されている途中で、内部アドレ
ス#0を用いて転送先指定が行われた後、バッファ9に
格納されている書き込みデータのうち、ホストアドレス
#0に対応するデータ及び対応するエラーコレクション
コード等の冗長領域26に格納すべき付加情報が、フラ
ッシュメモリチップ2−2に対してデータ転送され、そ
の後、書き込み命令が発行される。これにより、フラッ
シュメモリチップ2−2の物理ブロック#3056の物
理ページ#18に対する書き込み処理が完了する。ここ
で、フラッシュメモリチップ2−2の物理ブロック#3
056の物理ページ#18に書き込むべきデータとは、
ホストアドレス#0に対応するユーザデータ、当該ユー
ザデータに対応するエラーコレクションコード、仮想ブ
ロックアドレス、スタートページフラグ、スタートペー
ジデータ及び冗長領域26に格納されるその他の付加情
報である。この場合、書き込むべきスタートページフラ
グ29の値は「10」であり、スタートページデータの
値は「1001100B(76)」である。尚、フラッ
シュメモリチップ2−2の物理ブロック#3056の物
理ページ#18は、仮想ブロック#682の仮想ページ
#74に対応する。
【0231】さらに、フラッシュメモリチップ2−2の
物理ブロック#3056の物理ページ#18に対するフ
ラッシュプログラミングが実行されている途中で、内部
アドレス#1を用いて転送先指定が行われた後、バッフ
ァ9に格納されている書き込みデータのうち、ホストア
ドレス#1に対応するデータ及び対応するエラーコレク
ションコード等の冗長領域26に格納すべき付加情報
が、フラッシュメモリチップ2−3に対してデータ転送
され、その後、書き込み命令が発行される。これによ
り、フラッシュメモリチップ2−3の物理ブロック#4
352の物理ページ#18に対する書き込み処理が完了
する。ここで、フラッシュメモリチップ2−3の物理ブ
ロック#4352の物理ページ#18に書き込むべきデ
ータとは、ホストアドレス#1に対応するユーザデー
タ、当該ユーザデータに対応するエラーコレクションコ
ード、仮想ブロックアドレス、スタートページフラグ、
スタートページデータ及び冗長領域26に格納されるそ
の他の付加情報である。この場合、書き込むべきスター
トページフラグ29の値は「10」であり、スタートペ
ージデータの値は「1001100B(76)」であ
る。尚、フラッシュメモリチップ2−3の物理ブロック
#4352の物理ページ#18は、仮想ブロック#68
2の仮想ページ#75に対応する。
【0232】図18は、仮想ブロック#682の仮想ペ
ージ#74、#75に対する一連の書き込み処理が完了
した状態における仮想ブロック#682の内容を示す概
略図である。
【0233】かかる一連の書き込み動作においても、連
続するホストアドレス#0、#1に対応するデータが、
それぞれ異なるフラッシュメモリチップ2−2、2−3
に属する異なる物理ブロック内に書き込まれている。
【0234】また、図18に示されるように、仮想ブロ
ック#682の仮想ページ#68〜#71、#74、#
75にのみユーザデータが格納されており、その他の仮
想ページにはユーザデータが格納されていないので、当
該仮想ブロックにおけるスタートページは「76」であ
り、かかる値が仮想ページ#72のスタートページデー
タ格納領域30に格納されていることが分かる。このた
め、コントローラ3は、スタートページ検索によって、
この仮想ブロックの仮想ページ#76〜#127が空き
ページであることを知ることが可能となり、その後、ホ
ストコンピュータ5より仮想ブロック#682の仮想ペ
ージ#76〜#127に対するデータの書き込みが要求
された場合であっても、ブロック間転送を行うことな
く、仮想ページ#76〜#127へ直接データを書き込
むことが可能となる。
【0235】尚、上記の例においては、従前のスタート
ページである仮想ページ#72や、書き込み対象の仮想
ページ#74及び#75に仮想ブロックアドレスを書き
込んでいるが、仮想ページ#72、#74、#75に格
納された仮想ブロックアドレスは参照されることがない
ので、これを省略しても構わない。
【0236】また、上記の例においては、書き込み対象
の仮想ページ#74及び#75にスタートページフラグ
及びスタートページデータを書き込んでいるが、仮想ペ
ージ#74、#75に格納されたスタートページフラグ
及びスタートページデータは参照されることがないの
で、これを省略しても構わない。
【0237】さらに、上記の例では、スタートページ格
納領域#682から直接スタートページを入手している
が、上記書き込み動作1が行われた後、コントローラ3
がリセットされたことによりSRAMワークエリア8の
内容が一旦消去されている場合には、上述したスタート
ページ検索によってスタートページを入手する必要があ
る。
【0238】書き込み動作3(ブロック間転送を伴う場
合) 上述のとおり、すでにデータの格納されている仮想ブロ
ック(使用済みブロック)にデータを追加して書き込む
場合、当該仮想ブロックのスタートページと書き込み対
象である仮想ページの先頭ページとが比較され、書き込
み対象である仮想ページの先頭ページを示す7ビットの
値が、スタートページを示す7ビットの値と同じか、ま
たはこれを超えていれば、すべてのデータの追加的な書
き込みが可能となる。一方、書き込み対象である仮想ペ
ージの先頭ページを示す7ビットの値がスタートページ
を示す7ビットの値よりも小さい場合には、「ブロック
間転送」が行われる。
【0239】ここで、ブロック間転送について説明す
る。
【0240】上述のとおり、フラッシュメモリチップ2
−0〜2−3を構成するフラッシュメモリセル16は、
これをメモリセル単位にて消去状態から書込状態へ変化
させることはできる一方、これを書込状態から消去状態
へ変化させることは、メモリセル単位で行うことができ
ず、ブロック単位でしか行うことができない。このた
め、ある物理ページにデータを書き込む際には、その物
理ページのユーザ領域25及び冗長領域26を構成する
全てのフラッシュメモリセル16が消去状態となってい
る必要があり、既に何らかのデータが書き込まれている
物理ページ、すなわち、その物理ページのユーザ領域2
5を構成するフラッシュメモリセル16が一つでも書込
状態となっているページに、これと異なるデータを直接
上書きすることはできない。したがって、既にデータの
書き込まれた物理ページに対し、これと異なる新しいデ
ータを書き込むためには、一旦、この物理ページが属す
る物理ブロックを構成するフラッシュメモリセル16を
全て消去状態とし、その後に新しいデータを書き込むと
いう処理が必要となる。
【0241】したがって、ある物理ページに格納された
古いデータに新しいデータを上書きしようとする場合、
この物理ページが属する物理ブロックに含まれる他の物
理ページに格納されたデータが消失するのを防ぐために
は、当該他の物理ページに格納されたデータを、他の物
理ブロックに移動させるという処理が必要となるのであ
る。
【0242】このような上書き処理に伴うデータの移動
が「ブロック間転送」と呼ばれる。尚、本明細書におい
ては、転送元の物理ブロックの物理ブロックアドレスを
「転送元ブロックアドレス」、転送先の物理ブロックの
物理ブロックアドレスを「転送先ブロックアドレス」と
呼ぶ。
【0243】さて、書き込み対象である仮想ページの先
頭ページを示す7ビットの値がスタートページを示す7
ビットの値よりも小さい場合には、上述のとおり、ブロ
ック間転送が行われるが、この場合、書き込み対象であ
る仮想ページのうち、スタートページ以前に属する仮想
ページ(以下、このような仮想ページ群を「追書込不能
領域」と呼ぶことがある)とスタートページ以降(スタ
ートページを含む)に属する仮想ページ(以下、このよ
うな仮想ページ群を「追書込可能領域」と呼ぶことがあ
る)に分類され、仮想ブロックを構成する全ての物理ブ
ロックの追書込不能領域が書き込み対象となっている場
合には、仮想ブロックを構成する4つの物理ブロック全
てについてブロック間転送が実行される。
【0244】一方、仮想ブロックを構成する一部の物理
ブロックの追書込不能領域が書き込み対象となってお
り、残りのブロックの追書込不能領域が書き込み対象と
なっていない場合には、仮想ブロックを構成する4つの
物理ブロックのうち、追書込不能領域が書き込み対象と
なっている物理ブロックについてのみブロック間転送が
実行され、残りの物理ブロックについてはブロック間転
送が省略される。この場合、上記残りの物理ブロックの
追書込可能領域が書き込み対象である否かによって行わ
れる処理が異なる。具体的には、上記残りの物理ブロッ
クの追書込可能領域が書き込み対象となっていない場合
には、上記一部の物理ブロックについてのブロック間転
送のみが実行され、上記残りの物理ブロックの追書込可
能領域が書き込み対象となっている場合には、上記一部
の物理ブロックについてのブロック間転送と、上記残り
の物理ブロックに対するデータの追加的な書き込み(書
き込み動作2参照)の両方が実行される。
【0245】以下、それぞれの場合における動作につい
て説明する。
【0246】まず、仮想ブロックを構成する全ての物理
ブロックついてブロック間転送を行う場合の動作につい
て説明する。
【0247】仮想ブロックを構成する全ての物理ブロッ
クついてブロック間転送を行う場合 ここでは、上述した書き込み動作1が完了した直後の状
態(図14参照)において、ホストコンピュータ5よ
り、バス14、コネクタ4及びバス13を介して、外部
コマンドの一種である外部書き込みコマンドと、4つの
ホストアドレス「00010101010101000
000B」(ホストアドレス#0)、「0001010
1010101000001B」(ホストアドレス#
1)、「00010101010101000010
B」(ホストアドレス#2)、「0001010101
0101000011B」(ホストアドレス#3)と、
これらホストアドレスにそれぞれ書き込むべきデータと
がフラッシュメモリシステム1に供給された場合を例に
説明する。尚、これらホストアドレスは、それぞれ仮想
ブロック#682の仮想ページ#64〜#67に対応す
る。
【0248】まず、ホストアドレス#0〜#3及び外部
書き込みコマンドがコントローラ3に供給されると、こ
れらホストアドレス#0〜#3及び外部書き込みコマン
ドは、ホストインターフェースブロック7が有するタス
クファイルレジスタ(図示せず)に一時的に格納され
る。さらに、ホストアドレス#0〜#3にそれぞれ対応
する書き込みデータがコントローラ3に供給されると、
マイクロプロセッサ6による制御のもと、これらデータ
がECCブロック11に送出される。これらデータの供
給を受けたECCブロック11は、これらデータを解析
してエラーコレクションコードを生成し、これを一時的
に保持する。
【0249】次に、アドレス変換テーブル31を用いた
転送元ブロックアドレス及び転送先ブロックアドレスの
生成が行われる。
【0250】図19は、転送元ブロックアドレス及び転
送先ブロックアドレスの生成方法を説明するための図で
ある。
【0251】図19に示されるように、本例では、ホス
トアドレス#0〜#3の上位13ビット(A)が「00
01010101010B」であるから、選択される仮
想ブロックは仮想ブロック#682である。
【0252】次に、マイクロプロセッサ6による制御の
もと、SRAMワークエリア8に格納されているアドレ
ス変換テーブル31から仮想ブロック表示領域#682
が選択され、仮想ブロック表示領域#682の内容が読
み出される。上述のとおり、仮想ブロック#682には
書き込み動作1においてすでにデータが割り当てられて
いるので、対応するフラグ#682は「1」を示してい
るはずである。また、セル#682−0〜#682−3
の内容は、上述のとおりそれぞれ「000000000
1111B」、「1110000110011B」、
「0101111110000B」、「1000100
000000B」である。
【0253】セル#682−0〜#682−3に格納さ
れた内容が読み出されると、マイクロプロセッサ6によ
る制御のもと、これを用いて転送元ブロックアドレスが
生成される。
【0254】転送元ブロックアドレスは、マイクロプロ
セッサ6による制御のもと、ホストアドレス#0〜#3
それぞれの下位2ビット(C)及び読み出されたセルの
内容がこの順に結合されて生成される。この場合、ホス
トアドレス#0〜#3の下位2ビット(C)はそれぞれ
「00B」〜「11B」であり、読み出されたセルの内
容は「0000000001111B」、「11100
00110011B」、「0101111110000
B」、「1000100000000B」であることか
ら、得られる4つの転送元ブロックアドレス#0〜#3
の値は、図19に示される値となる。
【0255】これにより、転送元ブロックアドレス#0
〜#3の生成が完了する。
【0256】次に、マイクロプロセッサ6による制御の
もと、消去済みブロックキュー32を構成するキューセ
ット#0〜#5のいずれか、例えば、キューセット#1
が選択され、かかるキューセット#1を構成する各キュ
ー#1−0〜#1−3に格納された内容が読み出され
る。上述のとおり、各キューに格納されているのは、消
去済みブロックの物理ブロックアドレスである。本例で
は、これらキュー#1−0〜#1−3の内容がそれぞれ
「0010000010000B」、「1000000
100000B」、「0111101000000
B」、「0010110000000B」であるものと
する。
【0257】キュー#1−0〜#1−3に格納された内
容が読み出されると、マイクロプロセッサ6による制御
のもと、これらがアドレス変換テーブル31の仮想ブロ
ック表示領域#682を構成するセル#682−0〜#
682−3に上書きされるとともに、これらを用いて転
送先ブロックアドレスが生成される。
【0258】転送先ブロックアドレスは、マイクロプロ
セッサ6による制御のもと、ホストアドレス#0〜#3
それぞれの下位2ビット(C)及び読み出されたキュー
の内容がこの順に結合されて生成される。この場合、ホ
ストアドレス#0〜#3の下位2ビット(C)はそれぞ
れ「00B」〜「11B」であり、読み出されたキュー
の内容は「0010000010000B」、「100
0000100000B」、「01111010000
00B」、「0010110000000B」であるこ
とから、得られる4つの転送先ブロックアドレス#0〜
#3の値は、図19に示される値となる。
【0259】これにより、転送先ブロックアドレス#0
〜#3の生成が完了する。
【0260】さらに、マイクロプロセッサ6による制御
のもと、仮想ブロック#682に対応するスタートペー
ジと書き込み対象である仮想ページの最終ページとが比
較され、これによってスタートページの更新が必要であ
るか否かが判断される。かかる判断は、書き込み対象で
ある仮想ページの最終ページを示す7ビットの値が、ス
タートページを示す7ビットの値と同じか、またはこれ
を超えていれば、スタートページの更新が必要であると
され、書き込み対象である仮想ページの先頭ページを示
す7ビットの値が、スタートページを示す7ビットの値
未満であれば、スタートページの更新が不要であるとさ
れる。
【0261】上述のとおり、書き込み対象の仮想ページ
は、ホストアドレスの下位7ビットによって示される。
本例では、仮想ブロック#682のスタートページが
「1001000B(72)」であり、書き込み対象で
ある仮想ページの最終ページが「1000011B(6
7)」であるから、スタートページの更新が不要である
と判断される。したがって、スタートページ格納領域#
682の更新は行われない。
【0262】以上の処理が完了すると、次に、マイクロ
プロセッサ6による制御のもと、フラッシュシーケンサ
ブロック12が有するレジスタ(図示せず)に対する設
定がなされる。かかる設定は、次のように行われる。
【0263】まず、マイクロプロセッサ6による制御の
もと、データ転送コマンド、内部書き込みコマンド及び
内部読み出しコマンドがフラッシュシーケンサブロック
12内の所定のレジスタ(図示せず)に設定される。さ
らに、マイクロプロセッサ6による制御のもと、上記生
成された転送元ブロックアドレス#0〜#3及び転送先
ブロックアドレス#0〜#3がフラッシュシーケンサブ
ロック12内の所定のレジスタ(図示せず)に設定され
る。
【0264】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタ(図示せず)に対する
設定が完了すると、フラッシュシーケンサブロック12
による一連の書き込み動作が実行される。フラッシュシ
ーケンサブロック12による一連の書き込み動作は、次
の通りである。
【0265】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された転送元ブロックアドレ
ス#0に「00000B(0)」を付加して20ビット
の転送元内部アドレスを生成する。この場合、転送元内
部アドレスは、「00000000000111100
000B」となる。次に、フラッシュシーケンサブロッ
ク12は、生成された転送元内部アドレスの上位2ビッ
トに基づき、フラッシュメモリチップ2−0〜2−3の
うち、アクセスすべきページが属するフラッシュメモリ
チップに対応するチップ選択信号を活性化するよう、フ
ラッシュメモリインターフェースブロック10に指示す
る。この場合、生成された転送元内部アドレスの上位2
ビットは「00B(0)」であるから、アクセスすべき
ページが属するフラッシュメモリチップは、フラッシュ
メモリチップ2−0であり、チップ選択信号#0が活性
化される。これにより、フラッシュメモリチップ2−0
は、データの読み出しが可能な状態となる。一方、チッ
プ選択信号#1〜#3は、非活性状態が保たれる。
【0266】次に、フラッシュシーケンサブロック12
は、転送元内部アドレスの下位18ビット「00000
0000111100000B」を、所定のレジスタに
格納された内部読み出しコマンドとともにバス15に供
給するよう、フラッシュメモリインターフェースブロッ
ク10に指示する。
【0267】これにより、フラッシュメモリチップ2−
0は、供給された転送元内部アドレスの下位18ビット
「000000000111100000B」に格納さ
れたデータの読み出しを実行する。すなわち、フラッシ
ュメモリチップ2−0は、物理ブロック#15の物理ペ
ージ#0に格納されたデータの読み出しを実行する。
尚、フラッシュメモリチップ2−0の物理ブロック#1
5の物理ページ#0は、仮想ブロック#682の仮想ペ
ージ#0に対応する。
【0268】このようにしてフラッシュメモリチップ2
−0から読み出されたデータは、バス15を介してフラ
ッシュメモリインターフェースブロック10に供給され
る。フラッシュメモリインターフェースブロック10が
ユーザデータを受け取ると、これがバッファ9に一時的
に格納されるとともに、ECCブロック11に送出さ
れ、新たにエラーコレクションコードの生成が行われ
る。ECCブロック11にて新たに生成されたエラーコ
レクションコードは、ECCブロック11内に一時的に
保持される。
【0269】このような読み出し動作が、転送元ブロッ
クアドレス#1〜#3に「00000B(0)」が付加
されることによって、フラッシュメモリチップ2−1〜
2−3に対しても実行され、その結果、フラッシュメモ
リチップ2−1に属する物理ブロック#7219の物理
ページ#0に格納されたデータ、フラッシュメモリチッ
プ2−2に属する物理ブロック#3056の物理ページ
#0に格納されたデータ、及びフラッシュメモリチップ
2−3に属する物理ブロック#4352の物理ページ#
0に格納されたデータも読み出されることになる。尚、
仮想ブロック上においては、フラッシュメモリチップ2
−1の物理ブロック#7219の物理ページ#0は仮想
ページ#1であり、フラッシュメモリチップ2−2の物
理ブロック#3056の物理ページ#0は仮想ページ#
2であり、フラッシュメモリチップ2−3の物理ブロッ
ク#4352の物理ページ#0は仮想ページ#3に対応
する。すなわち、以上の処理によって、仮想ブロック#
682の仮想ページ#0〜#3に格納されているデータ
が読み出されたことになる。
【0270】次に、バッファ9に一時的に格納されたデ
ータの書き込み動作が行われる。かかる書き込み動作
は、図12に示したタイミングで行われる。
【0271】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された転送先ブロックアドレ
ス#0に「00000B(0)」を付加して20ビット
の転送先内部アドレスを生成する。この場合、転送先内
部アドレスは、「00001000001000000
000B」となる。
【0272】次に、フラッシュシーケンサブロック12
は、生成された転送先内部アドレスの上位2ビットに基
づき、フラッシュメモリチップ2−0〜2−3のうち、
アクセスすべきページが属するフラッシュメモリチップ
に対応するチップ選択信号を活性化するよう、フラッシ
ュメモリインターフェースブロック10に指示する。こ
の場合、転送先内部アドレスの上位2ビットは「00B
(0)」であるから、アクセスすべきページが属するフ
ラッシュメモリチップは、フラッシュメモリチップ2−
0であり、チップ選択信号#0が活性化される。これに
より、フラッシュメモリチップ2−0は、データの書き
込みが可能な状態となる。
【0273】次に、フラッシュシーケンサブロック12
は、転送先内部アドレスの下位18ビットを、所定のレ
ジスタ(図示せず)に格納されたデータ転送コマンドと
ともにバス15に供給するよう、フラッシュメモリイン
ターフェースブロック10に指示する。バス15に供給
された書き込みアドレス及びデータ転送コマンドは、フ
ラッシュメモリチップ2−0〜2−3に対し共通に供給
されるが、上述のとおり、チップ選択信号#0は活性状
態となっており、チップ選択信号#1〜#3は非活性状
態となっているので、バス15に供給された転送先内部
アドレス及びデータ転送コマンドは、フラッシュメモリ
チップ2−0に対してのみ有効となる(転送先指定)。
【0274】次に、バッファ9に格納されているデータ
のうち、フラッシュメモリチップ2−0から読み出した
データ及び対応するエラーコレクションコード等の冗長
領域26に格納すべき付加情報が、フラッシュシーケン
サブロック12により、フラッシュメモリインターフェ
ースブロック10を介して、バス15に供給される。バ
ス15に供給されたデータ及びエラーコレクションコー
ド等の付加情報も、やはりフラッシュメモリチップ2−
0〜2−3に対し共通に供給されるが、上述のとおり、
チップ選択信号#0が活性状態となっているため、フラ
ッシュメモリチップ2−0に対してのみ有効となる(デ
ータ転送)。フラッシュメモリチップ2−0に転送され
たデータ及びエラーコレクションコード等の付加情報
は、フラッシュメモリチップ2−0内に備えられたレジ
スタ(図示せず)に一時的に格納される。
【0275】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−0に対し
て発行する(書き込み命令)。
【0276】これに応答して、フラッシュメモリチップ
2−0は、所定のレジスタに格納されているデータ及び
エラーコレクションコード等の付加情報を、転送先指定
処理によって指定されたアドレスに書き込む(フラッシ
ュプログラミング)。すなわち、レジスタに格納されて
いるデータ及びエラーコレクションコード等の付加情報
が、転送先内部アドレスの下位18ビット「00100
0001000000000B」により特定されるペー
ジ、つまり、フラッシュメモリチップ2−0の物理ブロ
ック#1040の物理ページ#0に書き込まれる。フラ
ッシュメモリチップ2−0の物理ブロック#1040の
物理ページ#0は、仮想ブロック#682の仮想ページ
#0に対応する。
【0277】フラッシュメモリチップ2−0がフラッシ
ュプログラミングを実行している間、フラッシュシーケ
ンサブロック12は、所定のレジスタに格納された転送
先ブロックアドレス#1に「00000B(0)」を付
加して20ビットの新たな転送先内部アドレスを生成す
る。この場合、転送先内部アドレスは、「011000
00010000000000B」となる。次いで、フ
ラッシュシーケンサブロック12は、新たな転送先内部
アドレスの上位2ビットに基づいて、チップ選択信号#
1を活性化させる。これにより、フラッシュメモリチッ
プ2−1は、データの書き込みが可能な状態となる。
【0278】次に、フラッシュシーケンサブロック12
は、新たな転送先内部アドレスの下位18ビット「10
0000010000000000B」を、所定のレジ
スタ(図示せず)に格納されたデータ転送コマンドとと
もにバス15に供給するよう、フラッシュメモリインタ
ーフェースブロック10に指示する。この場合、上述の
とおり、チップ選択信号#1が活性状態となっているの
で、バス15に供給された内部アドレス#1の下位18
ビット及びデータ転送コマンドは、フラッシュメモリチ
ップ2−1に対してのみ有効となる(転送先指定)。
【0279】次に、バッファ9に格納されているデータ
のうち、フラッシュメモリチップ2−1から読み出した
データ及び対応するエラーコレクションコード等の冗長
領域26に格納すべき付加情報が、上述と同様にしてフ
ラッシュメモリチップ2−1に対して転送され、その
後、書き込み命令の発行が行われる。これにより、フラ
ッシュメモリチップ2−1はフラッシュプログラミング
を行い、レジスタに格納されているデータ及びエラーコ
レクションコード等の付加情報が、転送先内部アドレス
の下位18ビット「1000000100000000
00B」により特定されるページ、つまり、フラッシュ
メモリチップ2−1の物理ブロック#4128の物理ペ
ージ#0に書き込まれる。フラッシュメモリチップ2−
1の物理ブロック#4128の物理ページ#0は、仮想
ブロック#682の仮想ページ#1に対応する。
【0280】このような、書き込み処理が、転送先ブロ
ックアドレス#2及び#3に「00000B(0)」が
付加されることによって、フラッシュメモリチップ2−
2及び2−3に対しても実行され、これにより、フラッ
シュメモリチップ2−2から読み出したデータ及び対応
するエラーコレクションコード等の冗長領域26に格納
すべき付加情報が、フラッシュメモリチップ2−2の物
理ブロック#3904の物理ページ#0に書き込まれ、
フラッシュメモリチップ2−3から読み出したデータ及
び対応するエラーコレクションコード等の冗長領域26
に格納すべき付加情報が、フラッシュメモリチップ2−
3の物理ブロック#1408の物理ページ#0に書き込
まれる。フラッシュメモリチップ2−2の物理ブロック
#3904の物理ページ#0は、仮想ブロック#682
の仮想ページ#2に対応し、フラッシュメモリチップ2
−3の物理ブロック#1408の物理ページ#0は、仮
想ブロック#682の仮想ページ#3に対応する。
【0281】これにより、転送元の仮想ブロックの仮想
ページ#0〜#3に格納されているデータが、転送先の
仮想ブロックの仮想ページ#0〜#3に書き込まれたこ
とになる。すなわち、転送元の仮想ブロックの仮想ペー
ジ#0〜#3から転送先の仮想ブロックの仮想ページ#
0〜#3へのデータの転送が行われたことになる。
【0282】このようなデータの転送動作は、転送元ブ
ロックアドレス及び転送先ブロックアドレスに付加する
5ビットの値をインクリメントすることによって、次々
と行われる。すなわち、転送元ブロックアドレス及び転
送先ブロックアドレスに付加される5ビットの値が「0
0001(1)」であれば、転送元の仮想ブロックの仮
想ページ#4〜#7から転送先の仮想ブロックの仮想ペ
ージ#4〜#7へのデータの転送が行われ、「0001
0(2)」であれば、転送元の仮想ブロックの仮想ペー
ジ#8〜#11から転送先の仮想ブロックの仮想ページ
#8〜#11へのデータの転送が行われることになる。
【0283】このような転送動作は、付加される5ビッ
トの値が、ホストアドレスの上位14ビット目〜上位1
8ビット目からなる5ビット(B)である「10000
B(16)」に一致するまで連続的に行われる。すなわ
ち、付加される5ビットがインクリメントされた結果、
これが「10000B(16)」となり、ホストアドレ
スの上位14ビット目〜上位18ビット目からなる5ビ
ット(B)に一致すると、一旦、上述した転送動作が中
断される。本例では、転送元の仮想ブロックの仮想ペー
ジ#0〜#63から転送先の仮想ブロックの仮想ページ
#0〜#63へのデータの転送が完了した時点で、付加
される5ビットの値が、ホストアドレスの上位14ビッ
ト目〜上位18ビット目からなる5ビット(B)に一致
することになる。
【0284】付加される5ビットがホストアドレスの上
位14ビット目〜上位18ビット目からなる5ビット
(B)に一致すると、フラッシュシーケンサブロック1
2は、かかる5ビット「10000B(16)」を用い
たデータの読み出しを行わず、これを転送先ブロックア
ドレス#0〜#3にそれぞれ付加して、新たな転送先内
部アドレスを生成する。例えば、転送先ブロックアドレ
ス#0に「10000B(16)」が付加されて生成さ
れた転送先内部アドレスは、「00001000001
000010000B」である。
【0285】次に、フラッシュシーケンサブロック12
は、生成された転送先内部アドレスの上位2ビットに基
づいてチップ選択信号#0を活性化しつつ、転送先内部
アドレスの下位18ビットを、データ転送コマンドとと
もにバス15に供給するよう、フラッシュメモリインタ
ーフェースブロック10に指示する(転送先指定)。
【0286】次に、ホストアドレス#0に対応する書き
込みデータ及び対応するエラーコレクションコード等の
付加情報が、フラッシュシーケンサブロック12によ
り、フラッシュメモリインターフェースブロック10を
介して、バス15に供給される。このとき、チップ選択
信号#0が活性状態となっているため、フラッシュメモ
リチップ2−0に転送されたデータ及びエラーコレクシ
ョンコードは、フラッシュメモリチップ2−0内に備え
られたレジスタ(図示せず)に一時的に格納される(デ
ータ転送)。
【0287】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−0に対し
て発行する(書き込み命令)。
【0288】このようにして、フラッシュメモリチップ
2−0がホストアドレス#0に対応する書き込みデータ
及び対応するエラーコレクションコード等の付加情報を
フラッシュプログラミングを実行している間、フラッシ
ュシーケンサブロック12は、ホストアドレス#1に対
応する書き込みデータ及び対応するエラーコレクション
コード等の付加情報を、フラッシュメモリチップ2−1
に書き込むべく、転送先指定処理、データ転送処理等を
実行する。このように、あるフラッシュメモリチップが
フラッシュプログラミングを実行している途中で、これ
と異なるフラッシュメモリチップに対して転送先指定処
理、データ転送処理等を実行する点はすでに説明したと
おりであり、これによって、ホストアドレス#0に対応
する書き込みデータは、フラッシュメモリチップ2−0
内の物理ブロック#1040の物理ページ#16に書き
込まれ、ホストアドレス#1に対応する書き込みデータ
は、フラッシュメモリチップ2−1内の物理ブロック#
4128の物理ページ#16に書き込まれ、ホストアド
レス#2に対応する書き込みデータは、フラッシュメモ
リチップ2−2内の物理ブロック#3904の物理ペー
ジ#16に書き込まれ、ホストアドレス#3に対応する
書き込みデータは、フラッシュメモリチップ2−3内の
物理ブロック#1408の物理ページ#16に書き込ま
れる。
【0289】これにより、ホストアドレス#0〜#3に
対応する書き込みデータが、転送先の仮想ブロックの仮
想ページ#64〜#67にそれぞれ書き込まれたことに
なる。
【0290】かかるデータの書き込みが完了すると、再
び、転送元ブロックアドレス及び転送先ブロックアドレ
スに付加される5ビットがインクリメントされ、新しい
転送元内部アドレス及び転送先内部アドレスを用いたデ
ータの転送が再開される。かかる転送動作は、付加され
る5ビットが「11111(31)」である場合のデー
タ転送が完了するまで連続的に行われる。すなわち、転
送元の仮想ブロックの仮想ページ#68〜#127から
転送先の仮想ブロックの仮想ページ#68〜#127へ
のデータの転送が完了するまで行われ、これにより、フ
ラッシュシーケンサブロック12による一連のデータ転
送動作が完了する。
【0291】また、マイクロプロセッサ6は、上述のデ
ータ書き込みによって、消去済みブロックキュー32の
キューセット#1に格納された物理ブロックアドレス
が、消去済みブロックの物理ブロックアドレスではなく
なったことに応答して、新たな消去済みブロックを冗長
ブロックの中から選択し、選択された消去済みブロック
の物理ブロックアドレスを新たにキュー#1−0〜#1
−3に格納する。
【0292】尚、転送元の各物理ブロックは、いずれも
ブロック消去され、これによって新たな消去済みブロッ
クとなる。かかるブロック消去においても、転送元の各
物理ブロックがそれぞれ異なるフラッシュメモリチップ
に属していることから、これらブロックに対するブロッ
ク消去動作を並列に実行することができる。
【0293】以上により、一連のブロック間転送動作が
完了する。
【0294】図20は、上述したブロック間転送動作が
完了した状態における仮想ブロック#682の内容を示
す概略図である。
【0295】図20に示されるように、ブロック間転送
後における仮想ブロック#682においては、仮想ペー
ジ#64〜#71にのみユーザデータが格納されてお
り、その他の仮想ページにはユーザデータが格納されて
いないので、当該仮想ブロックにおけるスタートページ
は「72」であり、かかる値が仮想ページ#0のスター
トページデータ格納領域30に格納されていることが分
かる。このため、コントローラ3は、スタートページ検
索によって、この仮想ブロックの仮想ページ#72〜#
127が空きページであることを知ることが可能とな
り、その後、ホストコンピュータ5より仮想ブロック#
682の仮想ページ#72〜#127に対するデータの
書き込みが要求された場合であっても、ブロック間転送
を行うことなく、仮想ページ#72〜#127へ直接デ
ータを書き込むことが可能となる。
【0296】尚、上記の例では、書き込み対象である仮
想ページの最終ページ(仮想ページ#67)がスタート
ページ(仮想ページ#72)未満であるために、スター
トページの更新が行われていないが、書き込み対象であ
る仮想ページの最終ページがスタートページと同じか、
またはこれを超えている場合には、書き込み対象である
仮想ページの最終ページが新たなスタートページとな
る。このように、書き込み対象である仮想ページの最終
ページがスタートページと同じか、またはこれを超えて
いるためにスタートページの更新が必要である場合に
は、かかる新たなスタートページが、対応するスタート
ページ格納領域に格納されるとともに、新たな仮想ブロ
ックの先頭ページ(仮想ページ#0)のスタートページ
データ格納領域30に格納される。
【0297】次に、仮想ブロックを構成する一部の物理
ブロックついてのみブロック間転送を行う場合の動作に
ついて説明する。上述のとおり、一部の物理ブロックつ
いてのみブロック間転送を行う場合、データの追加的な
書き込みを伴うケースと伴わないケースが存在するの
で、それぞれについて説明する。
【0298】仮想ブロックを構成する一部の物理ブロッ
クついてブロック間転送を行う場合(データの追加的な
書き込みを伴わないケース) 上述のとおり、仮想ブロックを構成する一部の物理ブロ
ックの追書込不能領域が書き込み対象となっており、残
りのブロックの追書込可能領域が書き込み対象となって
いない場合には、書き込み対象の仮想ブロックを構成す
る4つの物理ブロックのうち、上記一部の物理ブロック
のみについてブロック間転送が実行される。
【0299】例えば、上述した書き込み動作1が完了し
た直後の状態(図14参照)において、2つのホストア
ドレス「00010101010101000001
B」(ホストアドレス#0)、「0001010101
0101000010B」(ホストアドレス#1)と、
これらホストアドレスにそれぞれ書き込むべきデータと
がフラッシュメモリシステム1に供給された場合、これ
らホストアドレスはそれぞれ仮想ブロック#682の仮
想ページ#65、#66に対応することから、これらは
それぞれ、セル#682−1に対応する物理ブロック
(フラッシュメモリチップ2−1の物理ブロック#72
19)及びセル#682−2に対応する物理ブロック
(フラッシュメモリチップ2−2の物理ブロック#30
56)の追書込不能領域に属する。一方、セル#682
−0に対応する物理ブロック(フラッシュメモリチップ
2−0の物理ブロック#15)及びセル#682−3に
対応する物理ブロック(フラッシュメモリチップ2−3
の物理ブロック#4352)へのユーザデータの書き込
みは指示されていないことから、セル#682−0及び
セル#682−3に対応する物理ブロックの追書込可能
領域は書き込み対象となっていない。
【0300】このような場合には、セル#682−1及
びセル#682−2に対応する物理ブロックについての
み上述したブロック間転送が行われ、セル#682−0
及びセル#682−3に対応する物理ブロックに対して
は何らの処理も行われない。この場合、アドレス変換テ
ーブル31についても、セル#682−1及びセル#6
82−2の内容のみが、消去済みブロックキュー32内
の選択されたキューセット、例えばキューセット#1を
構成するキュー#1−1〜#1−2に格納された内容に
更新される。
【0301】図21は、このような部分的なブロック間
転送動作が完了した状態における仮想ブロック#682
の内容を示す概略図である。
【0302】図21に示されるように、ブロック間転送
後における仮想ブロック#682は、セル#682−1
に対応する物理ブロックが、フラッシュメモリチップ2
−1の物理ブロック#7219からフラッシュメモリチ
ップ2−1の物理ブロック#4128に置き換えられ、
セル#682−1に対応する物理ブロックが、フラッシ
ュメモリチップ2−2の物理ブロック#3056からフ
ラッシュメモリチップ2−2の物理ブロック#3904
に置き換えられている。一方、セル#682−0に対応
する物理ブロック(フラッシュメモリチップ2−0の物
理ブロック#15)や、セル#682−3に対応する物
理ブロック(フラッシュメモリチップ2−3の物理ブロ
ック#4352)に対しては何らの処理もされていな
い。
【0303】このように、仮想ブロックを構成する一部
の物理ブロックの追書込不能領域が書き込み対象となっ
ており、残りのブロックの追書込可能領域が書き込み対
象となっていない場合には、追書込不能領域が書き込み
対象となっている物理ブロックのみに対してブロック間
転送処理を行うことにより、一連の処理を高速に行うこ
とができる。
【0304】次に、仮想ブロックを構成する一部の物理
ブロックついてブロック間転送を行う場合(データの追
加的な書き込みを伴うケース)について説明する。
【0305】仮想ブロックを構成する一部の物理ブロッ
クついてブロック間転送を行う場合(データの追加的な
書き込みを伴うケース) 上述のとおり、仮想ブロックを構成する一部の物理ブロ
ックの追書込不能領域が書き込み対象となっており、残
りのブロックの追書込可能領域が書き込み対象となって
いる場合には、追書込不能領域が書き込み対象となって
いる物理ブロックについてのブロック間転送と、追書込
可能領域が書き込み対象となっている物理ブロックに対
するデータの追加的な書き込み(書き込み動作2)の両
方が実行される。
【0306】例えば、上述した書き込み動作1が完了し
た直後の状態(図14参照)において、2つのホストア
ドレス「00010101010101000111
B」(ホストアドレス#0)、「0001010101
0101001000B」(ホストアドレス#1)と、
これらホストアドレスにそれぞれ書き込むべきデータと
がフラッシュメモリシステム1に供給された場合、これ
らホストアドレスはそれぞれ仮想ブロック#682の仮
想ページ#71、#72に対応する。この場合、仮想ブ
ロック#682の仮想ページ#71は、セル#682−
3に対応する物理ブロック(フラッシュメモリチップ2
−3の物理ブロック#4352)の追書込不能領域に属
し、仮想ブロック#682の仮想ページ#72は、セル
#682−0に対応する物理ブロック(フラッシュメモ
リチップ2−0の物理ブロック#15)の追書込可能領
域に属する。
【0307】このような場合には、セル#682−3に
対応する物理ブロックについては上述したブロック間転
送が行われ、セル#682−0に対応する物理ブロック
については、書き込み動作2において説明したデータの
追加的な書き込みが行われる。セル#682−1及びセ
ル#682−2に対応する物理ブロックに対しては何ら
の処理も行われない。この場合、アドレス変換テーブル
31についても、セル#682−3の内容が、消去済み
ブロックキュー32内の選択されたキューセット、例え
ばキューセット#1を構成するキュー#1−3に格納さ
れた内容に更新されるとともに、スタートページ格納領
域#682に新たなスタートページが上書きされる。
【0308】図22は、このような部分的なブロック間
転送動作及びデータの追加的な書き込みが完了した状態
における仮想ブロック#682の内容を示す概略図であ
る。
【0309】図22に示されるように、ブロック間転送
及びデータの追加的な書き込みが完了した後における仮
想ブロック#682は、セル#682−3に対応する物
理ブロックが、フラッシュメモリチップ2−3の物理ブ
ロック#4352からフラッシュメモリチップ2−3の
物理ブロック#1408に置き換えられているととも
に、セル#682−0に対応するフラッシュメモリチッ
プ2−0の物理ブロック#15の物理ページ#18に対
して、データの追加的な書き込みがされている。一方、
セル#682−1に対応する物理ブロック(フラッシュ
メモリチップ2−1の物理ブロック#7219)や、セ
ル#682−2に対応する物理ブロック(フラッシュメ
モリチップ2−2の物理ブロック#3056)に対して
は何らの処理もされていない。
【0310】このように、仮想ブロックを構成する一部
の物理ブロックの追書込不能領域が書き込み対象となっ
ており、残りのブロックの追書込可能領域が書き込み対
象となっている場合には、追書込不能領域が書き込み対
象となっている物理ブロックについてのブロック間転送
と、追書込可能領域が書き込み対象となっている物理ブ
ロックに対するデータの追加的な書き込み(書き込み動
作2)の両方を実行することにより、一連の処理を高速
に行うことができる。
【0311】書き込み動作4(仮想ブロックの最終ペー
ジ(仮想ページ#127)にデータを書き込む場合) 仮想ブロックの最終ページ(仮想ページ#127)にデ
ータを書き込む場合は、かかる書き込み動作が新規ブロ
ックに対する書き込み動作(書き込み動作1)である
か、すでにデータの格納されているブロック(使用済み
ブロック)に対する書き込み動作(書き込み動作2、書
き込み動作3)であるかに関わらず、当該仮想ブロック
の先頭ページ(仮想ページ#0)のスタートページフラ
グ29に「0x」が格納され、さらに、アドレス変換テ
ーブル31の対応するスタートページ格納領域に「00
00000B」が格納される。これにより、当該ブロッ
クに対するデータの追加的な書き込みができないことが
示される。
【0312】以上説明した、仮想ブロックの最終ページ
(仮想ページ#127)に対するデータの書き込み処理
について、具体的な例を挙げてより詳細に説明する。
【0313】ここでは、上述した書き込み動作1が完了
した直後の状態(図14参照)において、ホストコンピ
ュータ5より、バス14、コネクタ4及びバス13を介
して、外部コマンドの一種である外部書き込みコマンド
と、ホストアドレス「000101010101011
11111B」(ホストアドレス#0)と、かかるホス
トアドレスに書き込むべきデータとがフラッシュメモリ
システム1に供給された場合を例に説明する。尚、かか
るホストアドレス#0は、仮想ブロック#682の仮想
ページ#127に対応する。
【0314】まず、ホストアドレス#0及び外部書き込
みコマンドがコントローラ3に供給された場合の、コン
トローラ3の基本的な動作は上述したとおりであり、重
複する部分の説明は省略する。
【0315】本例においては、スタートページ格納領域
#682に格納されたスタートページの値「10010
00B(72)」と、ユーザデータを書き込むべき仮想
ページの先頭ページとの比較が行われる。この場合、ユ
ーザデータを書き込むべき仮想ページの先頭ページは、
ホストアドレス#0によって示されているので、スター
トページの値「1001000B(72)」と、ホスト
アドレス#0の下位7ビットの値「1111111B
(127)」とが比較されることとなる。このように、
本例では、ホストアドレス#0の下位7ビットの値「1
111111B(127)」がスタートページの値「1
001000B(72)」を超えているので、データの
追加的な書き込みが可能であると判断される。
【0316】ホストアドレスから内部アドレスへの変換
の手順については、すでに説明したとおりであり、得ら
れる内部アドレス#0は、「111000100000
00011111B」となる。
【0317】さらに、ホストアドレス#0の下位7ビッ
トの値が「1111111B(127)」であることに
応答して、アドレス変換テーブル31内のスタートペー
ジ格納領域#682に、値「0000000(0)」が
上書きされる。
【0318】以上より、ホストアドレス#0から内部ア
ドレス#0への変換が完了する。これにより、内部アド
レス#0によってアクセスされるのはフラッシュメモリ
チップ2−3内の物理ブロック#4352の物理ページ
#31となる。尚、フラッシュメモリチップ2−3内の
物理ブロック#4352の物理ページ#31は、仮想ブ
ロック#682の仮想ページ#127に対応する。
【0319】その後、フラッシュシーケンサブロック1
2が有するレジスタ(図示せず)への設定が完了する
と、フラッシュシーケンサブロック12による一連の書
き込み動作が実行される。本例においては、フラッシュ
シーケンサブロック12による一連の書き込み動作は、
仮想ブロック#682の先頭ページであるフラッシュメ
モリチップ2−0内の物理ブロック#15の物理ページ
#0に対するスタートページフラグ29の書き込み、フ
ラッシュメモリチップ2−3内の物理ブロック#435
2の物理ページ#031に対するユーザデータ及び各種
冗長データの書き込みの順に実行される。
【0320】まず、フラッシュメモリチップ2−0内の
物理ブロック#15の物理ページ#0に対する書き込み
処理について説明する。
【0321】フラッシュメモリチップ2−0内の物理ブ
ロック#15の物理ページ#0に対する書き込みにおい
ては、当該ページのスタートページフラグ29に、値
「00」が格納される。一連の書き込み処理の詳細につ
いては、既に説明したとおりである。尚、フラッシュメ
モリチップ2−0内の物理ブロック#15の物理ページ
#0には、上記書き込み動作1において、すでに仮想ブ
ロックアドレスやスタートページフラグ等の書き込みが
実行されているが、スタートページフラグ29の上位ビ
ットを構成するフラッシュメモリセル16は消去状態
(論理値=1)に保たれているので、スタートページフ
ラグの上位ビットの書き換えは可能である。
【0322】このようにして、フラッシュメモリチップ
2−0内の物理ブロック#15の物理ページ#0に対す
るフラッシュプログラミングが実行されている間に、フ
ラッシュメモリチップ2−3内の物理ブロック#435
2の物理ページ#31に対する書き込み処理が実行され
る。
【0323】フラッシュメモリチップ2−3内の物理ブ
ロック#4352の物理ページ#31に対する書き込み
処理は内部アドレス#0を用いて行われ、その手順は、
すでに繰り返し説明したとおりである。これによって、
フラッシュメモリチップ2−3内の物理ブロック#43
52の物理ページ#31のユーザ領域25には、ホスト
アドレス#0に対応するユーザデータが格納され、冗長
領域26には、エラーコレクションコード及びその他の
付加情報が格納される。
【0324】これにより、一連の書き込み処理が完了す
る。
【0325】図23は、上記一連の書き込み処理が完了
した状態における仮想ブロック#682の内容を示す概
略図である。
【0326】図23に示されるように、仮想ブロック#
682の最終ページ#127にユーザデータが格納され
ているため、当該仮想ブロックにはスタートページは存
在しない。これを示すため、先頭の仮想ページ#0のス
タートページフラグ29の値が「00」とされており、
さらに、当該ブロックに対応するスタートページ格納領
域#682の内容が「0000000B」とされてい
る。このため、コントローラ3は、この仮想ブロックに
はスタートページが存在しないことを知ることが可能と
なり、その後、ホストコンピュータ5より仮想ブロック
#682のいずれかの仮想ページに対するデータの書き
込みが要求された場合、仮想ブロック#682を構成す
る物理ブロックの少なくとも一つについて、ブロック間
転送が行われる(書き込み動作3)。
【0327】このように、本実施態様によるフラッシュ
メモリシステム1では、「仮想ブロック」という概念を
用い、互いに異なるフラッシュメモリチップに属する複
数の物理ブロックを仮想的に一つのブロックとして取り
扱っているので、ホストコンピュータ5から、連続する
複数アドレスに対してデータ書き込み要求がなされた場
合に、ある書き込みデータについてフラッシュプログラ
ミングが実行されている途中で、次の書き込みデータに
対し、転送先指定やデータ転送等の処理を並行して実行
することができ、これにより一連のデータ書き込みに要
する時間を大幅に短縮させることが可能となる。すなわ
ち、一連のデータ書き込み動作のうち、フラッシュプロ
グラミングには比較的長い時間、典型的には約200μ
sec程度が必要とされるところ、本実施態様によるフ
ラッシュメモリシステム1によれば、かかるフラッシュ
プログラミングと並行して他の処理を実行可能であるこ
とから、一連のデータ書き込みに要する時間は大幅に短
縮される。
【0328】さらに、本実施態様にかかるフラッシュメ
モリシステム1おいては、「スタートページ」という概
念を用い、各仮想ブロックを構成する複数の仮想ページ
のうち、スタートページ以降の仮想ページが必ず空きペ
ージであることを保証しているので、すでにデータの書
き込まれている仮想ブロックに対するデータの書き込み
が要求された場合であっても、これがスタートページ以
降の仮想ページに対するデータの書き込み要求である場
合には、ブロック間転送を行うことなく、当該物理ブロ
ックに対して直接データを書き込むことが可能となる。
このため、データの書き込みに必要な一連の処理をより
高速に行うことができる。
【0329】しかも、本実施態様にかかるフラッシュメ
モリシステム1おいては、各ページの冗長領域26のス
タートページデータ格納領域30にスタートページデー
タを格納し、かかるスタートページデータを用いたリン
クによってスタートページを表現しているので、アドレ
ス変換テーブル31を作成する際には、各仮想ブロック
の先頭ページ(仮想ページ#0)に対して読み出しを実
行するだけでよい。このような読み出し処理は、コント
ローラ3の初期設定時(リセット時)において通常行わ
れる処理であるため、本発明の適用によって初期設定動
作に要する時間が増大することはない。
【0330】また、本実施態様にかかるフラッシュメモ
リシステム1おいては、一旦データの書き込みが実行さ
れた仮想ブロックのスタートページを、対応するスター
トページ格納領域に格納しているので、次に同じ仮想ブ
ロックに対して書き込みが行われる場合、極めて速やか
にスタートページを得ることができる。
【0331】さらに、本実施態様にかかるフラッシュメ
モリシステム1おいては、すでにデータの書き込まれて
いる仮想ブロックに対するデータの書き込みが要求され
た場合、これがスタートページ以前の仮想ページに対す
るデータの書き込み要求であっても、仮想ブロックを構
成する一部の物理ブロックの追書込不能領域が書き込み
対象となっており、残りのブロックの追書込可能領域が
書き込み対象となっていない場合には、書き込み対象の
仮想ブロックを構成する4つの物理ブロックのうち、上
記一部の物理ブロックについてのブロック間転送のみが
実行される。したがって、この場合には、上記残りの物
理ブロックに対してはブロック間転送が行われないの
で、データの書き込みに必要な一連の処理を高速に行う
ことができる。
【0332】さらに、本実施態様にかかるフラッシュメ
モリシステム1おいては、すでにデータの書き込まれて
いる仮想ブロックに対するデータの書き込みが要求され
た場合、これがスタートページ以前の仮想ページに対す
るデータの書き込み要求であっても、仮想ブロックを構
成する一部の物理ブロックの追書込不能領域が書き込み
対象となっており、残りのブロックの追書込可能領域が
書き込み対象となっている場合には、書き込み対象の仮
想ブロックを構成する4つの物理ブロックのうち、上記
一部の物理ブロックについてのブロック間転送と、上記
残りの物理ブロックに対するデータの追加的な書き込み
の両方が行われる。したがって、この場合には、上記残
りの物理ブロックに対してはブロック間転送が行われな
いので、データの書き込みに必要な一連の処理を高速に
行うことができる。
【0333】本発明は、以上の実施態様に限定されるこ
となく、特許請求の範囲に記載された発明の範囲内で種
々の変更が可能であり、それらも本発明の範囲内に包含
されるものであることはいうまでもない。
【0334】例えば、上記実施態様にかかるフラッシュ
メモリシステム1においては、それぞれ異なるフラッシ
ュメモリチップに属する4個のブロックを仮想的に結合
させることによって、4個のセルからなる仮想ブロック
を構成しているが、仮想ブロックを構成するセルの数は
4個に限定されず、他の数、例えば2個や8個であって
もよい。この場合、仮想ブロックを構成するセルの数を
搭載されたフラッシュメモリチップの数と一致させるこ
とは必須ではなく、仮想ブロックを構成するセルの数を
搭載されるフラッシュメモリチップの数よりも少なく設
定しても構わない。例えば、フラッシュメモリチップの
数が8個である場合に、仮想ブロックを構成するセルの
数を4個としてもよい。
【0335】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、それぞれ異なるフラッシュ
メモリチップに属する4個のブロックを仮想的に結合さ
せることによって、4個のセルからなる仮想ブロックを
構成しているが、フラッシュメモリチップが「バンクタ
イプ」と呼ばれるチップ、すなわち、物理ブロックがそ
れぞれ独立したレジスタを有する複数のバンクに分類さ
れ、それぞれ異なるバンクに属する複数のブロックに対
して同時に書き込み処理を行うことができるフラッシュ
メモリチップを用いれば、互いに同じフラッシュメモリ
チップに属する複数のブロックを仮想的に結合させるこ
とによって、仮想ブロックを構成することができる。但
し、この場合、仮想ブロックを構成する複数の物理ブロ
ックは、それぞれ異なるバンクに属している必要があ
る。
【0336】また、バンクタイプのチップを複数個用い
た場合、あるフラッシュメモリチップより選ばれた複数
の物理ブロックと、異なるフラッシュメモリチップより
選ばれた複数の物理ブロックとを仮想的に結合させるこ
とによって仮想ブロックを構成しても構わない。この場
合、搭載されるフラッシュメモリチップの個数や各フラ
ッシュメモリチップが備えるバンク数を超える数のブロ
ックからなる仮想ブロックを構成することが可能とな
る。このことは、データ書き込み時において並列処理が
可能なページ数が多くなるとともに、データの追加的な
書き込みの可能性が高まることを意味するので、データ
書き込み処理をより高速に行うことが可能となる。
【0337】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、各ページの冗長領域26
のスタートページデータ格納領域30にスタートページ
データを格納し、かかるスタートページデータを用いた
リンクによってスタートページを表現しているが、本発
明におけるスタートページの表現方法がこれに限定され
るものではなく、他の方法によってスタートページを表
現しても構わない。例えば、各仮想ブロックについて、
全ての空きページに関する情報をアドレス変換テーブル
31内に展開し、これに基づいて、データの追加的な書
き込みを行っても構わない。この場合、上記実施態様に
かかるフラッシュメモリシステム1とは異なり、全ての
空きページに関する情報を用いていることから、より効
果的にデータの追加的な書き込みが行われ、ブロック間
転送の頻度を一層低下させることができる。但し、この
場合、全ての空きページに関する情報をアドレス変換テ
ーブル31内に展開するのに多くの時間を要することか
ら、コントローラ3の初期設定動作が遅くなる。
【0338】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、2ビットのスタートページ
フラグ29を用いているが、スタートページフラグ29
を1ビットとし、仮想ページ#0においては当該仮想ブ
ロックにスタートページが存在するか否かを表示するた
めに用い、仮想ページ#1〜#126においては対応す
るスタートページが有効であるか否かを表示するために
用いてもよい。
【0339】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、スタートページ検索にお
いて、参照されたスタートページフラグ29が「x0」
であれば検索を終了し、当該ページをスタートページと
しているが、スタートページ検索においてスタートペー
ジデータ30を参照し、参照されたスタートページデー
タ30が「1111111B(127)」であれば検索
を終了し、当該仮想ページをスタートページとしてもよ
い。この場合、少なくとも、スタートページデータ30
が「1111111B(127)」であるページについ
ては、かかるスタートページデータ「1111111B
(127)」がスタートページ検索の終了を示している
のか、或いは、スタートページが仮想ページ#127で
あることを示しているのかを、スタートページフラグ2
9等を利用して区別する必要がある。
【0340】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、スタートページ検索におい
て、参照先のスタートページフラグ29が属するページ
に制限を設けていないが、参照先のスタートページフラ
グ29が属するページのページ番号が参照元のスタート
ページフラグ29が属するページのページ番号よりも小
さい場合には、対応するスタートページデータに誤りが
あるものと判断して、エラー処理を行ってもよい。
【0341】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、スタートページ検索にお
いて、参照回数に制限を設けていないが、これを所定の
回数(例えば30回)に制限し、これを越えた場合に
は、少なくとも一のスタートページデータに誤りがある
ものと判断して、エラー処理を行ってもよい。
【0342】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、各物理ブロックが32個の
物理ページによって構成されているが、各物理ブロック
を構成する物理ページ数が32個に限定されるものでは
なく、他の数、例えば、16個や64個であってもよ
い。本発明は、各ブロックを構成するページ数が多いほ
ど、より顕著な効果を得ることができる。
【0343】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、データの格納された全て
の物理ブロックに関わるアドレス変換テーブル31をS
RAMワークエリア8上に展開しているが、本発明にお
いて、これら全ての物理ブロックに関わるアドレス変換
テーブルを展開することは必須ではなく、これらの一部
のみを展開してもよい。この場合、SRAMワークエリ
ア8に必要とされる記憶容量を削減することができる。
但し、このように一部の物理ブロックに関わるアドレス
変換テーブルのみを展開する場合、アドレス変換テーブ
ルに含まれていない物理ブロックへのアクセスが要求さ
れる度に、アドレス変換テーブルを更新する必要があ
る。
【0344】また、上記実施態様においては、フラッシ
ュメモリシステム1はカード形状であり、4個のフラッ
シュメモリチップ2−0〜2−3とコントローラ3が、
一つのカード内に集積されて構成されているが、本発明
にかかるフラッシュメモリシステムがカード形状に限定
されることはなく、他の形状、例えばスティック状であ
ってもよい。
【0345】さらに、上記実施態様においては、フラッ
シュメモリシステム1は、4個のフラッシュメモリチッ
プ2−0〜2−3とコントローラ3とが、一つのカード
内に集積されて構成されているが、フラッシュメモリチ
ップ2−0〜2−3とコントローラ3とが、同一筐体に
集積されている必要はなく、それぞれ別個の筐体にパッ
ケージングされてもよい。この場合、フラッシュメモリ
チップ2−0〜2−3がパッケージングされた筐体及び
コントローラ3がパッケージングされた筐体には、それ
ぞれ他方との電気的及び機械的接続を実現するためのコ
ネクタが必要とされ、かかるコネクタによって、フラッ
シュメモリチップ2−0〜2−3がパッケージングされ
た筐体が、コントローラ3がパッケージングされた筐体
に着脱可能に装着される。さらに、フラッシュメモリチ
ップ2−0〜2−3についても、これらが同一筐体に集
積されている必要はなく、それぞれ別個の筐体にパッケ
ージングされてもよい。
【0346】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、各フラッシュメモリチップ
2−0〜2−3は、それぞれ128Mバイト(1Gビッ
ト)の記憶容量を有する半導体チップであるが、各フラ
ッシュメモリチップ2−0〜2−3の記憶容量は128
Mバイト(1Gビット)に限定されず、これとは異なる
容量、例えば32Mバイト(256Mビット)であって
もよい。
【0347】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、512バイトを1ページ
とし、これを最小アクセス単位としているが、最小アク
セス単位としては512バイトに限定されず、これとは
異なる容量であってもよい。
【0348】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、フラッシュメモリチップ2
−0〜2−3を構成する各フラッシュメモリセル16
が、1ビットのデータを保持しているが、フローティン
グゲート電極21に注入すべき電子の量を複数段階に制
御することによって、2ビット以上のデータを保持可能
に構成してもよい。
【0349】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、消去済みブロックキュー3
2が6つのキューセット#0〜#5によって構成されて
いるが、消去済みブロックキュー32を構成する6つの
キューセットの数としては6組に限定されず、他の数、
例えば、1組や8組であってもよい。
【0350】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、フラッシュメモリチップ
2としてNAND型のフラッシュメモリチップを用いて
いるが、本発明により制御可能なフラッシュメモリがN
AND型に限定されるものではなく、他の種類、例え
ば、AND型のフラッシュメモリを制御することも可能
である。
【0351】さらに、本発明において、手段とは、必ず
しも物理的手段を意味するものではなく、各手段の機能
がソフトウエアによって実現される場合も包含する。さ
らに、一つの手段の機能が二以上の物理的手段により実
現されても、二以上の手段の機能が一つの物理的手段に
より実現されてもよい。
【0352】尚、本発明は、PCMCIA(Perso
nal Computer Memory Card
International Associatio
n)が発表した統一規格に基づくPCカードとして実現
することが可能である。さらに、近年、半導体素子の高
集積化技術の発展に伴い、より小型化された小型メモリ
カード、例えば、CFA(CompactFlash
Association)が提唱する「Compact
Flash」や、MultiMediaCardAss
ociationの提唱する「MMC(MultiMe
diaCard)」、ソニー株式会社が提唱する「メモ
リースティック」、松下電器産業株式会社等が提唱する
「SDメモリーカード」などに本発明を適用することが
可能である。
【0353】
【発明の効果】以上説明したように、本発明によれば、
フラッシュメモリに対する一連のデータ書き込み処理を
より高速に行うことができるメモリコントローラ、フラ
ッシュメモリシステム及びフラッシュメモリの制御方法
を提供することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュ
メモリシステム1を概略的に示すブロック図である。
【図2】フラッシュメモリチップ2−0〜2−3を構成
する各フラッシュメモリセル16の構造を概略的に示す
断面図である。
【図3】書込状態であるフラッシュメモリセル16を概
略的に示す断面図である。
【図4】フラッシュメモリチップ2−0のアドレス空間
の構造を概略的に示す図である。
【図5】冗長領域26のデータ構造を概略的に示す図で
ある。
【図6】仮想ブロックのマッピングの一例を示す図であ
る。
【図7】図6に示された仮想ブロックの仮想ページ構造
を示す図である。
【図8】アドレス変換テーブル31のデータ構造を示す
概略図である。
【図9】消去済みブロックキュー32のデータ構造を示
す概略図である。
【図10】データ読み出し動作時における、アドレス変
換テーブル31を用いた内部アドレスへの変換方法を説
明するための図である。
【図11】データ書き込み動作時における、アドレス変
換テーブル31を用いた内部アドレスへの変換方法を説
明するための図である。
【図12】フラッシュシーケンサブロック12による一
連の書き込み動作タイミング概略的に示すタイミング図
である。
【図13】仮想ブロック#682の仮想ページ#0〜#
3に対する一連の書き込み処理が完了した状態における
仮想ブロック#682の内容を示す概略図である。
【図14】仮想ブロック#682の仮想ページ#68〜
#71に対する一連の書き込み処理が完了した状態にお
ける仮想ブロック#682の内容を示す概略図である。
【図15】ホストアドレス#0、#1を内部アドレス#
0、#1に変換する方法を説明するための図である。
【図16】仮想ブロック#682の仮想ページ#72、
#73に対する一連の書き込み処理が完了した状態にお
ける仮想ブロック#682の内容を示す概略図である。
【図17】ホストアドレス#0、#1を内部アドレス#
0、#1に変換する方法を説明するための図である。
【図18】仮想ブロック#682の仮想ページ#74、
#75に対する一連の書き込み処理が完了した状態にお
ける仮想ブロック#682の内容を示す概略図である。
【図19】転送元ブロックアドレス及び転送先ブロック
アドレスの生成方法を説明するための図である。
【図20】全ての物理ブロックについてのブロック間転
送動作が完了した状態における仮想ブロック#682の
内容を示す概略図である。
【図21】一部の物理ブロックについてのブロック間転
送動作が完了した状態における仮想ブロック#682の
内容を示す概略図である。
【図22】一部の物理ブロックについてのブロック間転
送動作及びデータの追加的な書き込み動作が完了した状
態における仮想ブロック#682の内容を示す概略図で
ある。
【図23】仮想ブロック#682の仮想ページ#127
に対する一連の書き込み処理が完了した状態における仮
想ブロック#682の内容を示す概略図である。
【符号の説明】
1 フラッシュメモリシステム 2−0〜2−3 フラッシュメモリチップ 3 コントローラ 4 コネクタ 5 ホストコンピュータ 6 マイクロプロセッサ 7 ホストインターフェースブロック 8 SRAMワークエリア 9 バッファ 10 フラッシュメモリインターフェースブロック 11 ECCブロック 12 フラッシュシーケンサブロック 13〜15 バス 16 フラッシュメモリセル 17 P型半導体基板 18 ソース拡散領域 19 ドレイン拡散領域 20 トンネル酸化膜 21 フローティングゲート電極 22 絶縁膜 23 コントロールゲート電極 24 チャネル 25 ユーザ領域 26 冗長領域 27 エラーコレクションコード格納領域 28 仮想ブロックアドレス格納領域 29 スタートページフラグ 30 スタートページデータ格納領域 31 アドレス変換テーブル 32 消去済みブロックキュー
───────────────────────────────────────────────────── フロントページの続き (72)発明者 寺崎 幸夫 東京都中央区日本橋一丁目13番1号 ティ ーディーケイ株式会社内 Fターム(参考) 5B060 AA02 AA06 AA08 AB26 CA15

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 ホストコンピュータより供給されるホス
    トアドレスに基づいて、複数の物理ブロックからなるメ
    モリにアクセスするメモリコントローラであって、前記
    各物理ブロックを複数のグループに分類する手段と、互
    いに異なるグループに属する複数の物理ブロックを仮想
    的に結合することにより複数の仮想ブロックを形成する
    手段と、隣り合うホストアドレスを前記仮想ブロック内
    において互いに異なる物理ブロックに割り当てる手段
    と、前記仮想ブロックに含まれる空きページを検出する
    手段とを備えるメモリコントローラ。
  2. 【請求項2】 前記ホストコンピュータより空きページ
    に対するユーザデータの書き込みが要求されたことに応
    答して、前記空きページが属する物理ブロックについて
    のブロック間転送を行うことなく、前記空きページへ前
    記ユーザデータを書き込む書込手段とをさらに備えるこ
    とを特徴とする請求項1に記載のメモリコントローラ。
  3. 【請求項3】 前記ホストコンピュータより使用済みペ
    ージに対するユーザデータの書き込みが要求されたこと
    に応答して、前記使用済みページが属する仮想ブロック
    を構成する複数の物理ブロックのうち、前記使用済みペ
    ージが属する物理ブロック以外の物理ブロックについて
    のブロック間転送を行うことなく、前記使用済みページ
    が属する物理ブロックについてブロック間転送を行う手
    段をさらに備えることを特徴とする請求項1または2に
    記載のメモリコントローラ。
  4. 【請求項4】 前記メモリコントローラは、各仮想ブロ
    ックに含まれる仮想ページのうち、先頭の仮想ページか
    らユーザデータが書き込まれている最後の仮想ページま
    での仮想ページを使用済みページとして取り扱い、それ
    以外の仮想ページを空きページとして取り扱うことを特
    徴とする請求項1乃至3のいずれか1項に記載のメモリ
    コントローラ。
  5. 【請求項5】 前記グループが、前記複数の物理ブロッ
    クを少なくともメモリチップ別に分類するものであるこ
    とを特徴とする請求項1乃至4のいずれか1項に記載の
    メモリコントローラ。
  6. 【請求項6】 前記グループが、前記複数の物理ブロッ
    クを少なくともバンク別に分類するものであることを特
    徴とする請求項1乃至5のいずれか1項に記載のメモリ
    コントローラ。
  7. 【請求項7】 ホストコンピュータより供給されるホス
    トアドレスに基づいて、それぞれn個の物理ページから
    なる複数の物理ブロックによって構成されるメモリにア
    クセスするメモリコントローラであって、前記ホストコ
    ンピュータよりユーザデータの書き込みが要求されたこ
    とに応答して、m個の物理ブロックを仮想的に結合する
    ことによってn×m個の仮想ページからなる仮想ブロッ
    クを形成する手段と、前記n×m個の仮想ページのう
    ち、前記ホストアドレスにより特定される第1の仮想ペ
    ージのユーザ領域内へ前記ユーザデータを書き込む手段
    と、前記n×m個の仮想ページのうち、先頭の仮想ペー
    ジの冗長領域内へ空きページ情報を書き込む手段とを備
    えるメモリコントローラ。
  8. 【請求項8】 前記空きページ情報が、空きページが存
    在するか否かを示す空きページフラグと、空きページを
    特定する空きページデータとを少なくとも含むことを特
    徴とする請求項7に記載のメモリコントローラ。
  9. 【請求項9】 前記空きページデータが、前記第1の仮
    想ページに続く第2の仮想ページを特定するデータであ
    ることを特徴とする請求項8に記載のメモリコントロー
    ラ。
  10. 【請求項10】 前記第1の仮想ページと前記第2の仮
    想ページが互いに異なる物理ブロックに属していること
    を特徴とする請求項9に記載のメモリコントローラ。
  11. 【請求項11】 前記ホストコンピュータより前記仮想
    ブロックに対するユーザデータの書き込みがさらに要求
    されたことに応答して、前記空きページ情報に基づき、
    前記ホストコンピュータより供給されたホストアドレス
    により特定される第3の仮想ページへの前記ユーザデー
    タの追加的な書き込みが可能であるか否かを判断する手
    段と、前記判断の結果、ユーザデータの追加的な書き込
    みが可能であると判断されたことに応答して、前記第3
    の仮想ページのユーザ領域内へ前記ユーザデータを書き
    込む手段と、前記第2の仮想ページの冗長領域内へ前記
    第3の仮想ページに続く第4の仮想ページを特定する空
    きページデータを書き込む手段とをさらに備えることを
    特徴とする請求項9または10に記載のメモリコントロ
    ーラ。
  12. 【請求項12】 前記第3の仮想ページと前記第4の仮
    想ページが互いに異なる物理ブロックに属していること
    を特徴とする請求項11に記載のメモリコントローラ。
  13. 【請求項13】 前記判断の結果、ユーザデータの追加
    的な書き込みが不可能であると判断されたことに応答し
    て、前記第3の仮想ページが属する物理ブロックを他の
    物理ブロックに入れ替える手段をさらに備えることを特
    徴とする請求項11または12に記載のメモリコントロ
    ーラ。
  14. 【請求項14】 前記ホストコンピュータより前記仮想
    ブロックの最後の仮想ページに対するユーザデータの書
    き込みがさらに要求されたことに応答して、前記空きペ
    ージ情報に基づき、前記最後の仮想ページへの前記ユー
    ザデータの追加的な書き込みが可能であるか否かを判断
    する手段と、前記判断の結果、ユーザデータの追加的な
    書き込みが可能であると判断されたことに応答して、前
    記最後の仮想ページのユーザ領域内へ前記ユーザデータ
    を書き込む手段と、前記先頭の仮想ページの冗長領域内
    に格納された前記空きページフラグを変化させる手段と
    をさらに備えることを特徴とする請求項8乃至13のい
    ずれか1項に記載のメモリコントローラ。
  15. 【請求項15】 前記先頭の仮想ページと前記最後の仮
    想ページが互いに異なる物理ブロックに属していること
    を特徴とする請求項14に記載のメモリコントローラ。
  16. 【請求項16】 複数の物理ブロックからなるフラッシ
    ュメモリと、ホストコンピュータより供給されるホスト
    アドレスに基づいて前記フラッシュメモリにアクセスす
    るメモリコントローラとを備え、前記コントローラが、
    前記各物理ブロックを複数のグループに分類する手段
    と、互いに異なるグループに属する複数の物理ブロック
    を仮想的に結合することにより複数の仮想ブロックを形
    成する手段と、隣り合うホストアドレスを前記仮想ブロ
    ック内において互いに異なる物理ブロックに割り当てる
    手段と、前記仮想ブロックに含まれる空きページを検出
    する手段とを備えることを特徴とするフラッシュメモリ
    システム。
  17. 【請求項17】 前記各物理ブロックがユーザ領域と冗
    長領域とを備え、前記冗長領域には、自己が属する仮想
    ブロックを特定する情報が記録されていることを特徴と
    する請求項16に記載のフラッシュメモリシステム。
  18. 【請求項18】 前記冗長領域には、自己が属する仮想
    ブロックに含まれる前記空きページに関する情報がさら
    に格納されていることを特徴とする請求項17に記載の
    フラッシュメモリシステム。
  19. 【請求項19】 複数の物理ブロックを仮想的に結合す
    ることにより仮想ブロックを形成するステップと、ホス
    トコンピュータよりデータの書き込みが指示された場
    合、前記仮想ブロックを構成する全ての物理ブロックの
    追書込不能領域が書き込み対象となっていることに応答
    して、前記仮想ブロックを構成する全ての物理ブロック
    を他の物理ブロックに置き換えるステップとを備えるフ
    ラッシュメモリの制御方法。
  20. 【請求項20】 前記ホストコンピュータよりデータの
    書き込みが指示された場合、前記仮想ブロックを構成す
    る一部の物理ブロックの追書込不能領域が書き込み対象
    となっており、前記仮想ブロックを構成する残りの物理
    ブロックの追書込不能領域が書き込み対象となっていな
    いことに応答して、前記残りの物理ブロックを他の物理
    ブロックに置き換えることなく、前記一部の物理ブロッ
    クを他の物理ブロックに置き換えるステップをさらに備
    えることを特徴とする請求項19に記載のフラッシュメ
    モリの制御方法。
  21. 【請求項21】 前記残りの物理ブロックの追書込可能
    領域が書き込み対象となっていることに応答して、前記
    データを前記残りの物理ブロックに対して追加的に書き
    込むステップをさらに備えることを特徴とする請求項2
    0に記載のフラッシュメモリの制御方法。
JP2001164546A 2001-05-31 2001-05-31 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Expired - Lifetime JP4316824B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001164546A JP4316824B2 (ja) 2001-05-31 2001-05-31 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001164546A JP4316824B2 (ja) 2001-05-31 2001-05-31 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2002358233A true JP2002358233A (ja) 2002-12-13
JP4316824B2 JP4316824B2 (ja) 2009-08-19

Family

ID=19007356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001164546A Expired - Lifetime JP4316824B2 (ja) 2001-05-31 2001-05-31 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4316824B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010182266A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010182268A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250534A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2011242833A (ja) * 2010-05-14 2011-12-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2013024952A1 (ko) * 2011-08-12 2013-02-21 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010182266A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010182268A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250534A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2011242833A (ja) * 2010-05-14 2011-12-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8316208B2 (en) 2010-05-14 2012-11-20 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory
WO2013024952A1 (ko) * 2011-08-12 2013-02-21 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
US9304905B2 (en) 2011-08-12 2016-04-05 Ajou University Industry-Academic Cooperation Foundation Memory controller and data management method thereof

Also Published As

Publication number Publication date
JP4316824B2 (ja) 2009-08-19

Similar Documents

Publication Publication Date Title
JP4256600B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3905037B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP3921174B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
JP2647312B2 (ja) 一括消去型不揮発性半導体記憶装置
US6477632B1 (en) Storage device and accessing method
JP2001243122A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法
JP2001243110A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法
US20050172068A1 (en) Memory card and semiconductor device
JP2000510634A (ja) 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能
JP2000067574A (ja) 半導体記憶装置
JP2010152913A (ja) セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内のブロックの構成
JP2002278781A (ja) 記憶装置、記憶装置制御方法及びプログラム
US7657697B2 (en) Method of controlling a semiconductor memory device applied to a memory card
JP3621051B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
JP2002358233A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4233213B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4248772B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4220690B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2000030375A (ja) データ処理システム、アクセス装置及び記録媒体
JP3999959B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003122630A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4042898B2 (ja) メモリコントローラ及びこれを備えるメモリシステム並びにフラッシュメモリの制御方法
JP2003337757A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090209

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: 20090428

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090521

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4316824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140529

Year of fee payment: 5

EXPY Cancellation because of completion of term