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

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

Info

Publication number
JP4220690B2
JP4220690B2 JP2001204171A JP2001204171A JP4220690B2 JP 4220690 B2 JP4220690 B2 JP 4220690B2 JP 2001204171 A JP2001204171 A JP 2001204171A JP 2001204171 A JP2001204171 A JP 2001204171A JP 4220690 B2 JP4220690 B2 JP 4220690B2
Authority
JP
Japan
Prior art keywords
block
flash memory
physical
address
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001204171A
Other languages
English (en)
Other versions
JP2003015947A (ja
Inventor
直樹 向田
健三 木田
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 JP2001204171A priority Critical patent/JP4220690B2/ja
Publication of JP2003015947A publication Critical patent/JP2003015947A/ja
Application granted granted Critical
Publication of JP4220690B2 publication Critical patent/JP4220690B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

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】
本発明の好ましい実施態様によれば、前記複数の物理ブロックが複数のゾーンに分類されていることから、アドレス変換に必要となるテーブルのサイズを縮小することが可能となる。
【0025】
本発明のさらに好ましい実施態様においては、前記各ゾーンに含まれる複数の物理ブロックを複数のグループに分類する手段をさらに備え、前記仮想ブロックを構成する物理ブロックの数と前記グループの数とが一致している。
【0026】
本発明のさらに好ましい実施態様においては、前記各グループに含まれる複数の物理ブロックは実使用ブロックと冗長ブロックに分類され、所定のグループ内において不良物理ブロックの数が所定数を超えた場合には、前記所定のグループ以外のグループに含まれる冗長ブロックを前記所定のグループ用の冗長ブロックとして代替使用する。
【0027】
本発明のさらに好ましい実施態様においては、前記グループが、前記複数の物理ブロックを少なくともメモリチップ別に分類するものである。
【0028】
本発明のさらに好ましい実施態様においては、前記グループが、前記複数の物理ブロックを少なくともバンク別に分類するものである。
【0029】
本発明の前記目的はまた、複数の物理ブロックからなるフラッシュメモリチップと、ホストコンピュータより供給されるホストアドレスに基づいて前記フラッシュメモリチップにアクセスするメモリコントローラとを備え、前記コントローラが、前記各物理ブロックに含まれる冗長領域に仮想ブロックアドレス及びセル番号を書き込む手段と、同じ仮想ブロックアドレスが書き込まれた複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成する手段と、連続するホストアドレスを、前記仮想ブロック内において、書き込まれているセル番号が連続する物理ブロックにそれぞれ割り当てる手段とを備えていることを特徴とするフラッシュメモリシステムによって達成される。
【0030】
本発明の好ましい実施態様においては、前記フラッシュメモリチップの数が複数個である。
【0031】
本発明のさらに好ましい実施態様においては、前記フラッシュメモリチップがバンクタイプである。
【0032】
本発明の前記目的はまた、複数の物理ブロックを有するフラッシュメモリの制御方法であって、前記各物理ブロックに含まれる冗長領域に仮想ブロックアドレス及びセル番号を書き込むステップと、同じ仮想ブロックアドレスが書き込まれた複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成するステップと、連続するホストアドレスを、前記仮想ブロック内において、書き込まれているセル番号が連続する物理ブロックにそれぞれ割り当てるステップとを備えるフラッシュメモリの制御方法によって達成される。
【0033】
本発明の前記目的はまた、複数の物理ブロックを有するフラッシュメモリの制御方法であって、前記複数の物理ブロックを複数のゾーンに分類するステップと、前記各ゾーンに含まれる複数の物理ブロックを複数のグループに分類するステップと、前記各グループに含まれる複数の物理ブロックを実使用ブロックと冗長ブロックに分類するステップと、各グループに含まれる不良物理ブロックの数が所定数以下である場合には、互いに異なるグループに属する複数の冗長ブロックを関連づけてキューに登録するステップと、所定のグループに含まれる不良物理ブロックの数が前記所定数を超えている場合には、前記所定のグループ以外のグループに属する冗長ブロックを関連づけて前記キューに登録するステップとを備えることを特徴とするフラッシュメモリの制御方法によって達成される。
【0034】
【発明の好ましい実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【0035】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0036】
図1に示されるように、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0037】
各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップである。フラッシュメモリシステム1においては、528バイトを1ページとし、これを最小アクセス単位としている。したがって、これら各フラッシュメモリチップ2−0〜2−3は、それぞれ256Kページのアドレス空間を含み、フラッシュメモリチップ2−0〜2−3の合計で、1Mページのアドレス空間を備えることになる。また、フラッシュメモリシステム1においては、これら4つのフラッシュメモリチップ2−0〜2−3は、512Mバイト(4Gビット)の記憶容量を有し、1Mページのアドレス空間を備える一つの大きなメモリとして取り扱われる。このため、これら1Mページからなるアドレス空間から特定のページにアクセスするためには、20ビットのアドレス情報が必要となる。したがって、ホストコンピュータ5は、フラッシュメモリシステム1に対し、20ビットのアドレス情報を供給することによって、特定のページに対するアクセスを行う。以下、ホストコンピュータ5よりフラッシュメモリシステム1に供給される20ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0038】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12と、ROM33とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0039】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0040】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0041】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0042】
バッファ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に保持される。
【0043】
フラッシュメモリインターフェースブロック10は、バス15を介して、フラッシュメモリチップ2−0〜2−3とのデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行うとともに、各フラッシュメモリチップ2−0〜2−3に対して対応するチップ選択信号#0〜#3を供給するための機能ブロックである。チップ選択信号#0〜#3は、ホストコンピュータ5からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ5より供給されるホストアドレスに基づいて生成される内部アドレスの上位2ビットに基づいて、そのいずれかが活性化される信号である。具体的には、内部アドレスの上位2ビットが「00」であればチップ選択信号#0が活性化され、「01」であればチップ選択信号#1が活性化され、「10」であればチップ選択信号#2が活性化され、「11」であればチップ選択信号#3が活性化される。対応するチップ選択信号が活性化されたフラッシュメモリチップ2−0〜2−3は選択状態となり、データの読み出しまたは書き込みが可能となる。尚、「内部コマンド」とは、コントローラ3がフラッシュメモリチップ2−0〜2−3を制御するためのコマンドであり、ホストコンピュータ5がフラッシュメモリシステム1を制御するための「外部コマンド」と区別される。
【0044】
ECCブロック11は、フラッシュメモリチップ2−0〜2−3に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0045】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−3とバッファ9とのデータの転送を制御するための機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−3からのデータの読み出しまたはフラッシュメモリチップ2−0〜2−3へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【0046】
ROM33は、マイクロプロセッサ6が実行すべき各種プログラムを格納するためのメモリであり、少なくとも、第1の変換プログラムP1、第2の変換プログラムP2及び第3の変換プログラムP3が格納されている。これら第1乃至第3の変換プログラムP1〜P3については後述する。
【0047】
図2は、コントローラ3を構成する半導体チップを概略的に示す上面図である。
【0048】
図2に示されるように、コントローラ3を構成する半導体チップは、多数の外部端子(外部ピン)を有しており、これら外部端子には、バス13、15に接続される端子や、チップ選択信号#0〜#3を出力する端子等の他、モード設定端子#0が含まれている。モード設定端子#0は、本実施態様にかかるフラッシュメモリシステム1の動作モードを決めるための端子であり、モード設定端子#0に対する設定により、「チップタイプモード」及び「バンクタイプモード」のいずれかの動作モードを選択することができる。モード設定の具体的な方法は特に限定されないが、例えば、モード設定端子#0を接地電位(GND)に接続すれば「チップタイプモード」となり、モード設定端子#0を電源電位(Vcc)に接続すれば「バンクタイプモード」となる。この場合、コントローラ3を構成する半導体チップをプリント基板上に実装する際にモード設定端子#0を接地電位(GND)若しくは電源電位(Vcc)に接続することにより、フラッシュメモリシステム1の製造時において動作モードを固定してもよく、また、ホストコンピュータ5よりモード設定端子#0に接地電位(GND)若しくは電源電位(Vcc)を供給することにより、動作モードを可変としてもよい。
【0049】
「チップタイプモード」及び「バンクタイプモード」の詳細については、後述する。
【0050】
次に、各フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセルの具体的な構造について説明する。
【0051】
図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【0052】
図2に示されるように、フラッシュメモリセル16は、P型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲート電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。このような構成を有するフラッシュメモリセル16は、フラッシュメモリチップ2−0〜2−3内において、複数個直列に接続されて、NAND型フラッシュメモリを構成する。
【0053】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。フラッシュメモリセル16が消去状態であることは、当該フラッシュメモリセル16にデータ「1」が保持されていることを意味し、フラッシュメモリセル16が書込状態であることは、当該フラッシュメモリセル16にデータ「0」が保持されていることを意味する。すなわち、フラッシュメモリセル16は、1ビットのデータを保持することが可能である。
【0054】
図3に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。消去状態におけるフラッシュメモリセル16は、デプレッション型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0055】
図4は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0056】
図4に示されるように、書込状態とは、フローティングゲート電極21に電子が蓄積されている状態を指す。フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。書込状態におけるフラッシュメモリセル16は、エンハンスメント型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネルが形成されず、コントロールゲート電極23に読み出し電圧が印加されているときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成される。したがって、コントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とが電気的に接続される。
【0057】
ここで、選択されたフラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。すなわち、複数個直列に接続されたフラッシュメモリセル16のうち、選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧を印加し、この状態において、これらフラッシュメモリセル16の直列体に電流が流れるか否かを検出する。その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル16が消去状態であると判断することができ、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル16が書込状態であると判断することができる。このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。但し、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0058】
また、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合、コントロールゲート電極23に正の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21へ電子が注入される。フローティングゲート電極21への電子の注入は、FNトンネル電流による注入が可能である。一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合、コントロールゲート電極23に負の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子が排出される。
【0059】
次に、各フラッシュメモリチップ2−0〜2−3の持つアドレス空間の具体的な構成について説明する。
【0060】
図5は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0061】
図5に示されるように、フラッシュメモリチップ2−0のアドレス空間は、物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成される。また、図4には示されていないが、フラッシュメモリチップ2−1〜2−3も、フラッシュメモリチップ2−0と同様に物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成されている。これら各ブロックは、いずれも16Kバイトの記憶容量を有する。
【0062】
ここで、上記各物理ブロックは、データの消去単位である。すなわち、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル16を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル16が属するブロックに含まれる全てのフラッシュメモリセル16が一括して消去状態とされる。逆に、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【0063】
さらに、図5に示されるように、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191は、それぞれ物理ページ#0〜#31からなる32個の物理ページによって構成されている。また、フラッシュメモリチップ2−1〜2−3を構成する各物理ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191と同様に、それぞれ32個の物理ページによって構成されている。
【0064】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図5に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域である。
【0065】
ここで、フラッシュメモリチップ2−0〜2−3は、いずれも「バンクタイプ」と呼ばれるチップであり、各ブロックは、それぞれ独立したレジスタを有するいずれかのバンクに分類される。それぞれ異なるバンクに属する複数のブロックについては、互いに同時に書き込み処理を行うことができる他、互いに同時にブロック消去を行うことができる。
【0066】
図6は、フラッシュメモリチップ2−0のバンク構造を概略的に示す図である。
【0067】
図6に示されるように、フラッシュメモリチップ2−0を構成する物理ブロック#0〜#8191は、バンク#0〜#3からなる4つのバンクに分類されている。詳細には、物理ブロック#4m(mは0〜2047の整数)はバンク#0に属し、物理ブロック#4m+1はバンク#1に属し、物理ブロック#4m+2はバンク#2に属し、物理ブロック#4m+3はバンク#3に属している。
【0068】
また、フラッシュメモリチップ2−0は、レジスタ#0〜#3からなる4つのレジスタを備えており、これらレジスタ#0〜#3はバンク#0〜#3にそれぞれ対応している。これら各レジスタ#0〜#3は、それぞれ1ページ分のデータを一時的に保持することができる。すなわち、バンク#0に属する物理ブロックからデータが読み出される場合、読み出されたデータは一旦レジスタ#0に保持された後、バス15を介してコントローラ3に転送され、バンク#0に属する物理ブロックへデータが書き込まれる場合、バス15を介してコントローラ3から転送されたデータは、一旦レジスタ#0に保持された後、所定の物理ブロックに書き込まれることになる。上記動作は、バンク#1〜#3に属する物理ブロックに対するデータの読み出し及び書き込みにおいても同様に、それぞれレジスタ#1〜#3が用いられる。
【0069】
また、各物理ブロックから対応するレジスタへのデータの転送動作(データの読み出し)や、各レジスタから対応する物理ブロックへのデータの転送動作(データの書き込み)は、各バンクにおいて独立して実行可能である。したがって、フラッシュメモリチップ2−0は、4ページ分のデータの書き込みを並列に行うことができる。また、それぞれ異なるバンクに属する複数の物理ブロックに対して、並列したブロック消去を行うことができる。
【0070】
尚、図6には示されていないが、フラッシュメモリチップ2−1〜2−3についても、フラッシュメモリチップ2−0と同様、各ブロックがバンク#0〜#3からなる4つのバンクに分類されるとともに、各バンクに対応するレジスタ#0〜#3を備えている。
【0071】
図7は、冗長領域26のデータ構造を概略的に示す図である。
【0072】
図7に示されるように、冗長領域26は、エラーコレクションコード格納領域27、仮想ブロックアドレス格納領域28及びその他の付加情報によって構成される。
【0073】
エラーコレクションコード格納領域27は、対応するユーザ領域25に格納されたユーザデータの誤りを訂正するための付加情報(エラーコレクションコード)を格納するための領域であり、ユーザ領域25に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード格納領域27に格納されたエラーコレクションコードを用いてこれを訂正し、正しいデータとすることができる。
【0074】
仮想ブロックアドレス格納領域28は、当該物理ブロックが属する仮想ブロックのアドレス(仮想ブロックアドレス)及びセル番号を格納するための領域である。仮想ブロック、仮想ブロックアドレス及びセル番号の詳細については後述する。
【0075】
冗長領域26のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【0076】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。
【0077】
このように、各フラッシュメモリチップ2−0〜2−3はそれぞれ8192個の物理ブロックによって構成されるので、合計で32768個の物理ブロックが存在することになる。これら32768個の物理ブロックは、以下に詳述するように、8つのゾーンに分類される。
【0078】
図8は、フラッシュメモリシステム1が「チップタイプモード」で動作する場合における、ゾーン構成を示す図である。
【0079】
図8に示されるように、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各フラッシュメモリチップ2−0〜2−3を構成する物理ブロックは、それぞれ自己の物理ブロックアドレスを1024で除した場合の商に対応するゾーンに分類される。すなわち、各フラッシュメモリチップ2−0〜2−3を構成する物理ブロック#0〜#1023は全てゾーン#0に属し、各フラッシュメモリチップ2−0〜2−3を構成する物理ブロック#1024〜#2047はすべてゾーン#1に属する。このようにして、各フラッシュメモリチップ2−0〜2−3を構成する物理ブロックは、ゾーン#0〜#7からなる8つのゾーンに分類される。
【0080】
図9は、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における、ゾーン構成を示す図である。
【0081】
図9に示されるように、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、各フラッシュメモリチップ2−0〜2−3を構成する物理ブロックは、4096個ごとに1つのゾーンを構成し、これにより、フラッシュメモリチップ2−0を構成する物理ブロックはゾーン#0、#1に分類され、フラッシュメモリチップ2−1を構成する物理ブロックはゾーン#2、#3に分類され、フラッシュメモリチップ2−2を構成する物理ブロックはゾーン#4、#5に分類され、フラッシュメモリチップ2−3を構成する物理ブロックはゾーン#6、#7に分類されることになる。
【0082】
このように、いずれのモードで動作する場合においても、各ゾーンは4096個の物理ブロックによって構成されるが、このうち、4000個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの96個の物理ブロックは冗長ブロックとして取り扱われる。フラッシュメモリチップ2−0〜2−3のアドレス空間は、実使用ブロックのみによって構成される。より詳細には、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各ゾーンに含まれる4096個の物理ブロックは、各々が属するフラッシュメモリチップに基づいて1024個ずつに分類され、このうち、1000個の物理ブロックが実使用ブロックとして取り扱われ、残りの24個の物理ブロックが冗長ブロックとして取り扱われる。また、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、各ゾーンに含まれる4096個の物理ブロックは、各々が属するバンクに基づいて1024個ずつに分類され、このうち、1000個の物理ブロックが実使用ブロックとして取り扱われ、残りの24個の物理ブロックが冗長ブロックとして取り扱われる。本明細書においては、上述のように各ゾーンにおいて1024個ずつに分類された各領域を「スロット」と呼ぶことがある。
【0083】
ここで、ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生した物理ブロックの数だけ、当該ゾーンの当該スロットにおいて冗長ブロックとして割り当てられる物理ブロックの数が減らされるが、あるゾーンのあるスロットにおいて24個を超える物理ブロックに不良が発生した場合、当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用し、これによって、当該スロットにおいて1000個の実使用ブロックを確保する。尚、本明細書においては、このように当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用する処理を「代替処理」と呼ぶことがある。
【0084】
また、フラッシュメモリシステム1が「チップタイプモード」で動作する場合に、あるゾーンのあるスロットにおいて24個を超える物理ブロックに不良が発生した場合、かかるスロットに隣接するスロット以外のスロットに属する物理ブロックが代替ブロックとして優先的に選択される。例えば、あるゾーンのスロット#0において24個を超える物理ブロックに不良が発生した場合、当該ゾーンのスロット#2に属する物理ブロックが、隣接するスロット(スロット#1、#3)に属する物理ブロックよりも優先して、実使用ブロックとして代替使用される。このように、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、代替処理において隣接するスロット以外のスロットに属する物理ブロックを優先的に選択する意義については、以後の説明において明らかとなる。
【0085】
また、本実施態様にかかるフラッシュメモリシステム1では、「チップタイプモード」及び「バンクタイプモード」のいずれのモードで動作する場合においても、各ゾーンごとに、スロット#0〜#3から一つずつ選ばれた4つの実使用ブロックが仮想的に結合された「仮想ブロック」が構成される。これにより、各ゾーンごとに、仮想ブロック#0〜#999からなる最大1000個の仮想ブロックが構成される。つまり、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各ゾーンごとにフラッシュメモリチップ2−0〜2−3から一つずつ選ばれた4つの実使用ブロックが仮想的に結合されて仮想ブロックが構成され、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、各ゾーンごとにバンク#0〜#3から一つずつ選ばれた4つの実使用ブロックが仮想的に結合されて仮想ブロックが構成される。
【0086】
但し、あるゾーンのあるスロットにおいて24個を超える物理ブロックに不良が発生し、これにより上述した代替処理が行われている場合は、「チップタイプモード」においては同じフラッシュメモリチップから2以上の実使用ブロックが選ばれることがあり、「バンクタイプモード」においては同じバンクから2以上の実使用ブロックが選ばれることがある。
【0087】
図10は、「チップタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【0088】
図10に示される例は、ゾーン#0に属する仮想ブロックのマッピングの一例であり、フラッシュメモリチップ2−0に含まれる物理ブロック#150、フラッシュメモリチップ2−1に含まれる物理ブロック#961、フラッシュメモリチップ2−2に含まれる物理ブロック#1023、フラッシュメモリチップ2−3に含まれる物理ブロック#504が仮想的に結合され、一つの仮想ブロックを構成している。このように、「チップタイプモード」においては、原則として、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるフラッシュメモリチップに属することが必要である。このようにして、各ゾーンごとに、最大1000個の仮想ブロックが構成され、フラッシュメモリシステム1の全体で最大8000個の仮想ブロックが構成される。
【0089】
図11は、「チップタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【0090】
本例は、ゾーン#0内においてフラッシュメモリチップ2−0に24個を超える物理ブロックに不良が発生した場合におけるマッピングの一例であり、フラッシュメモリチップ2−1に含まれる物理ブロック#961、フラッシュメモリチップ2−2に含まれる物理ブロック#1、フラッシュメモリチップ2−2に含まれる物理ブロック#1023、フラッシュメモリチップ2−3に含まれる物理ブロック#504が仮想的に結合され、一つの仮想ブロックを構成している。このように、「チップタイプモード」において代替処理が行われている場合、ひとつの仮想ブロック内に、同じフラッシュメモリチップに属する2以上の物理ブロックが含まれることがある。
【0091】
図12は、図10に示された仮想ブロックの仮想ページ構造を示す図である。
【0092】
図12に示されるように、仮想ブロックは、仮想ページ#0〜仮想ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。ここで、仮想ブロックのうち、物理ブロック#150からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#961からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#1023からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#504からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。詳細は後述するが、これら仮想ページ番号は、ホストアドレスの下位7ビットと対応している。
【0093】
また、代替処理が行われている場合における仮想ページ構造も、図12に示される構造と同様であり、例えば、図11に示した仮想ブロックの仮想ページ構造は、図12に示されるフラッシュメモリチップ2−0の物理ブロック#150からなる部分に含まれる32個のページが、フラッシュメモリチップ2−2の物理ブロック#1に含まれる32個のページに置き換えられる。
【0094】
図13は、「バンクタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【0095】
図13に示される例は、ゾーン#0に属する仮想ブロックのマッピングの一例であり、バンク#0に含まれる物理ブロック#4、バンク#1に含まれる物理ブロック#3241、バンク#2に含まれる物理ブロック#2002、バンク#3に含まれる物理ブロック#4095が仮想的に結合され、一つの仮想ブロックを構成している。このように、「バンクタイプモード」においては、原則として、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるバンクに属することが必要である。このようにして、各ゾーンごとに、最大1000個の仮想ブロックが構成され、フラッシュメモリシステム1の全体で最大8000個の仮想ブロックが構成される。
【0096】
図14は、「バンクタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【0097】
本例は、ゾーン#0内においてバンク#0に24個を超える物理ブロックに不良が発生した場合におけるマッピングの一例であり、バンク#1に含まれる物理ブロック#5、バンク#1に含まれる物理ブロック#3241、バンク#2に含まれる物理ブロック#2002、バンク#3に含まれる物理ブロック#4095が仮想的に結合され、一つの仮想ブロックを構成している。このように、「バンクタイプモード」において代替処理が行われている場合、ひとつの仮想ブロック内に、同じバンクに属する2以上の物理ブロックが含まれることがある。
【0098】
図15は、図13に示された仮想ブロックの仮想ページ構造を示す図である。
【0099】
図15に示されるように、「バンクタイプモード」における仮想ページ構成は、図12に示した「チップタイプモード」における仮想ページ構成と同様であり、仮想ページ#0〜仮想ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。ここで、仮想ブロックのうち、物理ブロック#4からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#3241からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#2002からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#4095からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。詳細は後述するが、「バンクタイプモード」においても、これら仮想ページ番号は、ホストアドレスの下位7ビットと対応している。
【0100】
また、代替処理が行われている場合における仮想ページ構造も、図15に示される構造と同様であり、例えば、図14に示した仮想ブロックの仮想ページ構造は、図15に示されるバンク#0の物理ブロック#4からなる部分に含まれる32個のページが、バンク#1の物理ブロック#5に含まれる32個のページに置き換えられる。
【0101】
また、フラッシュメモリシステム1がいずれのモードで動作する場合においても、各ゾーンに含まれる4096個の物理ブロックには、それぞれ「物理アドレス」が割り当てられる。ここで、「物理アドレス」とは、各ゾーン内において物理ブロックを特定するために用いられる中間的なアドレスであり、仮想ブロック番号を特定するために用いられる「仮想ブロックアドレス」や各物理ブロックに固有の「物理ブロックアドレス」とは異なるアドレスである。物理アドレスは、以下のように割り当てられる。
【0102】
まず、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、各物理ブロックの物理アドレスは、物理ブロックアドレスの下位10ビットに4を乗じ、さらに、チップ番号(0〜3)を足して得られる値によって与えられる。これにより、各ゾーンを構成する4096個の物理ブロックには、物理アドレス#0(000000000000B)〜物理アドレス#4095(111111111111B)が割り当てられる。
【0103】
図16は、フラッシュメモリシステム1が「チップタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【0104】
一方、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、各物理ブロックの物理アドレスは、物理ブロックアドレスの下位12ビットと一致する。つまり、各ゾーンを構成する4096個の物理ブロックには、物理ブロックアドレスの順に、物理アドレス#0(000000000000B)〜物理アドレス#4095(111111111111B)が割り当てられる。
【0105】
図17は、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【0106】
次に、ホストコンピュータ5より供給されるホストアドレスを内部アドレスに変換する方法の概略について説明する。詳細については後述する。
【0107】
本実施態様にかかるフラッシュメモリシステム1においては、かかるアドレス変換が、ホストアドレスに対応する「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)、「物理アドレス空間」から内部アドレスに対応する「物理ブロック空間」への変換(第3の変換)の順に行われる。ここで、「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)は、ROM33に格納されている第1の変換プログラムP1を用いた演算により行われ、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)は、SRAMワークエリア8上に展開されるアドレス変換テーブル29を参照することにより行われ、「物理アドレス空間」から「物理ブロック空間」への変換(第3の変換)は、ROM33に格納されている第2の変換プログラムP2又は第3の変換プログラムP3を用いた演算により行われる。
【0108】
図18は、第2の変換に用いられるアドレス変換テーブル29のデータ構造を示す概略図である。
【0109】
図18に示されるように、アドレス変換テーブル29は、テーブル#0〜#3からなる4つのテーブルからなり、これら各テーブルには、それぞれ一つのゾーンに関わるアドレス変換情報が格納される。具体的には、これら各テーブル#0〜#3は、それぞれ1000個の仮想ブロック表示領域#0〜#999によって構成され、これら各仮想ブロック表示領域#0〜#999は、それぞれセル#j−0〜セル#j−3(jは、仮想ブロックアドレス)からなる4個のセル及びフラグ#j−0〜フラグ#j−3からなる4個のフラグによって構成される。例えば、仮想ブロック表示領域#0はセル#0−0〜セル#0−3及びフラグ#0−0〜フラグ#0−3によって構成され、仮想ブロック表示領域#1はセル#1−0〜セル#1−3及びフラグ#1−0〜フラグ#1−3によって構成される。
【0110】
ここで、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、原則として、セル#j−0を構成するスロット#0はフラッシュメモリチップ2−0に対応し、セル#j−1を構成するスロット#1はフラッシュメモリチップ2−1に対応し、セル#j−2を構成するスロット#2はフラッシュメモリチップ2−2に対応し、セル#j−3を構成するスロット#3はフラッシュメモリチップ2−3に対応する。また、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、原則として、セル#j−0を構成するスロット#0はバンク#0に対応し、セル#j−1を構成するスロット#1はバンク#1に対応し、セル#j−2を構成するスロット#2はバンク#2に対応し、セル#j−3を構成するスロット#3はバンク#3に対応する。但し、代替処理が行われている場合にはこの限りではない。
【0111】
各仮想ブロック表示領域に含まれるセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックの物理アドレスが格納される。
【0112】
また、各仮想ブロックに含まれるフラグ#j−0〜フラグ#j−3は、当該セルに格納されている内容が有効であるか無効であるかを示している。具体的には、フラグが「1」を示していれば対応するセルの内容は有効であり、フラグが「0」を示していれば対応するセルの内容は無効である。したがって、対応するフラグが「0」を示しているセルについては、その内容は無視される。
【0113】
尚、これらテーブル#0〜#3が、それぞれどのゾーンに対応するのかは、後述する管理テーブル30によって示される。ここでは、アドレス変換テーブル29に含まれるテーブル数(4個)が、ゾーン数(8個)よりも少ない点に留意されたい。すなわち、アドレス変換テーブル29には、全てのゾーンに関わるアドレス変換情報は格納されておらず、その一部、つまり4ゾーン分のアドレス変換情報のみがそれぞれテーブル#0〜#3に格納されている。
【0114】
上述のように、アドレス変換テーブル29は、16000個のセルと16000個のフラグによって構成されており、各セルには12ビットの情報(物理アドレス)、各フラグには1ビットの情報を格納する必要があるから、アドレス変換テーブル29は、SRAMワークエリア8の記憶容量のうち、約32kバイトを占有することとなる。
【0115】
アドレス変換テーブル29の生成は、次のように行われる。
【0116】
フラッシュメモリチップ2−0〜2−3を構成する各物理ブロックのうち、データが格納されているブロックの各先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレス格納領域28には、当該物理ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレス及びセル番号が含まれており、各物理ブロックの各先頭ページ(物理ページ#0)に含まれている仮想ブロックアドレス及びセル番号がマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0117】
ここで、消去済みの空きブロックにおいては、冗長領域26の仮想ブロックアドレス格納領域28に格納されている仮想ブロックアドレスは「オール1(1111111111B)」となっているはずである。すなわち、仮想ブロックは、上述のとおり、#0(0000000000B)〜#999(1111100111B)までしかなく、したがって、これがオール1(1111111111B)である場合には、当該物理ブロックが消去済みの空きブロックであると判断することができる。一方、冗長領域26の仮想ブロックアドレス格納領域28に格納された仮想ブロックアドレスが「0000000000B」〜「1111100111B」である場合には、当該仮想ブロックアドレスは有効な仮想ブロックアドレスである。
【0118】
したがって、マイクロプロセッサ6は、所定のゾーンに属する各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスを参照し、これがオール1ではなく有効な仮想ブロックのアドレスを示していれば、当該ゾーンに対応するテーブルを構成するセルのうち、読み出された仮想ブロックアドレス及び読み出されたセル番号によって特定されるセルに、当該物理ブロックの物理アドレスを格納する。尚、物理ブロックアドレスから物理アドレスへの変換の方法はすでに説明したとおりであり、フラッシュメモリシステム1が「チップタイプモード」で動作しているか、「バンクタイプモード」で動作しているかによって異なる。例えば、フラッシュメモリシステム1が「チップタイプモード」で動作している場合において、フラッシュメモリチップ2−0に属する物理ブロック#14より読み出された仮想ブロックアドレスが「123」であり、読み出されたセル番号が「0」であれば、セル#123−0に、物理ブロック#14に対応する物理アドレスとして「56」が書き込まれ、さらに、対応するフラグ#123−0が「1」にされる。同様に、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合において、フラッシュメモリチップ2−0に属する物理ブロック#14より読み出された仮想ブロックアドレスが「123」であり、読み出されたセル番号が「2」であれば、セル#123−2に、物理ブロック#14に対応する物理アドレスとして「14」が書き込まれ、さらに、対応するフラグ#123−2が「1」にされる。
【0119】
ここで、冗長領域26の仮想ブロックアドレス格納領域28に格納されているセル番号は、当該物理ブロックが属するスロット番号と一致している。このことは、フラッシュメモリシステム1が「チップタイプモード」で動作している場合には、セル番号とチップ番号とが通常一致し、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合には、セル番号とバンク番号とが通常一致していることを意味する。しかしながら、上述した代替処理が行われた結果、あるスロットに属する物理ブロックが他のスロットの実使用ブロックとして使用されている場合においては、当該物理ブロックのセル番号は、チップ番号やバンク番号と一致しない。換言すれば、仮想ブロックアドレス格納領域28に格納されているセル番号は、代替処理を可能とするために備えられている要素である。
【0120】
このような処理が、所定のゾーンを構成する物理ブロックの全てについて行われ、これにより、対応するテーブルを構成する仮想ブロック表示領域に、それぞれ対応する物理アドレスが格納されることになる。
【0121】
そして、このような処理を所定の4つのゾーンについて行うことにより、アドレス変換テーブル29を構成する4つのテーブル内にアドレス変換情報が展開され、アドレス変換テーブル29の作成作業が完了する。尚、8個のゾーンのうち、どのゾーンについてアドレス変換情報を作成するかについては、後述する管理テーブル30によって定められる。
【0122】
次に、SRAMワークエリア8に格納される管理テーブル30のデータ構造について説明する。
【0123】
図19は、SRAMワークエリア8に格納される管理テーブル30のデータ構造を示す概略図である。
【0124】
図19に示されるように、管理テーブル30は、ゾーン番号格納領域#0〜#3からなる4つのゾーン番号格納領域によって構成される。これら各ゾーン番号格納領域#0〜#3は、それぞれSRAMワークエリア8の1バイトの記憶領域を使用しており、それぞれにはゾーン番号が3ビットのデータによって格納されている。したがって、管理テーブル30は、SRAMワークエリア8の記憶容量のうち、4バイトを占有することとなる。
【0125】
管理テーブル30は、アドレス変換テーブル29を構成するテーブル#0〜#3が、それぞれどのゾーンに関わるアドレス変換情報を格納しているかを示している。具体的には、ゾーン番号格納領域#0に格納されたゾーン番号は、テーブル#0に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#1に格納されたゾーン番号は、テーブル#1に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#2に格納されたゾーン番号は、テーブル#2に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#3に格納されたゾーン番号は、テーブル#3に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示す。
【0126】
管理テーブル30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル29の生成の際に行われる。
【0127】
次に、SRAMワークエリア8に格納される優先リンク31のデータ構造について説明する。
【0128】
図20は、SRAMワークエリア8に格納される優先リンク31のデータ構造を示す概略図である。
【0129】
図20に示されるように、優先リンク31は、ポインタ#0〜#3からなる4つのポインタによって構成される。これら各ポインタ#0〜#3は、それぞれSRAMワークエリア8の1バイトの記憶領域を使用しており、それぞれにはリンク先ポインタ番号またはデータ「NULL」が格納されている。したがって、優先リンク31は、SRAMワークエリア8の記憶容量のうち、4バイトを占有することとなる。
【0130】
優先リンク31は、アドレス変換テーブル29を構成する4つのテーブル(テーブル#0〜#3)の優先順位を示す要素であり、優先リンク31を構成するポインタ#0〜#3は、それぞれアドレス変換テーブル29を構成するテーブル#0〜#3に対応している。
【0131】
優先リンク31によって、アドレス変換テーブル29を構成する4つのテーブルの優先順位を示す具体的な方法について説明する前に、アドレス変換テーブル29を構成する4つのテーブル#0〜#3に優先順位を設ける必要性について説明する。
【0132】
上述のとおり、アドレス変換テーブル29を構成するテーブルの数(4テーブル)は、ゾーンの数(8ゾーン)よりも少なく、このため、アドレス変換テーブル29に展開されるアドレス変換情報は、一部のゾーンに関わるアドレス変換情報に限られる。したがって、アドレス変換テーブル29にアドレス変換情報が展開されていないゾーンに対して、ホストコンピュータ5からアクセスが要求された場合には、アドレス変換テーブル29の内容を更新する必要がある。すなわち、マイクロプロセッサ6は、アドレス変換テーブル29を構成する4つのテーブルの中からいずれか1つのテーブルを選び、その内容を消去して、アクセスが要求されたゾーンに関わるアドレス変換情報を当該テーブル内に新たに展開する必要がある。したがって、アドレス変換テーブル29を構成する4つのテーブルの中から、その内容が消去されるべきテーブルを選ぶためには、アドレス変換テーブル29を構成する4つのテーブルに優先順位を設け、優先順位の低いテーブルから順にその内容を消去する必要がある。
【0133】
かかる理由から、アドレス変換テーブル29を構成する4つのテーブルには、優先順位が設けられ、かかる優先順位を記憶するために優先リンク31が設けられるのである。
【0134】
次に、優先リンク31を用いた、テーブル#0〜#3の優先順位の記憶方法について、図面を用いて詳細に説明する。
【0135】
図21は、優先リンク31によって、優先順位としてテーブル#0→テーブル#1→テーブル#2→テーブル#3が記憶される場合を示す図である。
【0136】
図21に示されるように、優先順位がテーブル#0→テーブル#1→テーブル#2→テーブル#3の順である場合、ポインタ#0には、リンク先ポインタ番号として「1」が格納され、ポインタ#1には、リンク先ポインタ番号として「2」が格納され、ポインタ#2には、リンク先ポインタ番号として「3」が格納され、ポインタ#3には、データ「NULL」が格納される。
【0137】
上述のとおり、優先リンク31を構成するポインタ#0〜#3は、それぞれアドレス変換テーブル29を構成するテーブル#0〜#3に対応しており、いずれのポインタにもリンク先ポインタ番号として格納されていないポインタ、すなわち、ポインタ#0に対応するテーブル(テーブル#0)が最も優先順位の高いテーブルとなり、以下、当該ポインタ#0に格納されたリンク先ポインタ番号「1」により示されるポインタ、すなわち、ポインタ#1に対応するテーブル(テーブル#1)が次に優先順位の高いテーブルとなり、当該ポインタ#1に格納されたリンク先ポインタ番号「2」により示されるポインタ、すなわち、ポインタ2に対応するテーブル(テーブル#2)が次に優先順位の高いテーブルとなり、当該ポインタ#2に格納されたリンク先ポインタ番号「3」により示されるポインタ、すなわち、ポインタ#3に対応するテーブル(テーブル#3)が最も優先順位の低いテーブルとなる。これにより、優先順位は、テーブル#0→テーブル#1→テーブル#2→テーブル#3の順となる。最も優先順位の低いテーブルに対応するポインタ#3には、データ「NULL」が格納されている。
【0138】
優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、例えば、テーブル#2に対応するゾーンに対するアクセスがされた場合、以下に説明するように、優先リンク31によって記憶される優先順位が変更され、いまアクセスされたゾーンに対応するテーブル#2の優先順位が最も高くなる。
【0139】
図22は、優先リンク31によって、優先順位としてテーブル#2→テーブル#0→テーブル#1→テーブル#3が記憶される場合を示す図である。
【0140】
図22に示されるように、優先順位がテーブル#0→テーブル#1→テーブル#2→テーブル#3の順である状態において、テーブル#2に対応するゾーンに対してアクセスがされると、マイクロプロセッサ6による制御のもと、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更され、ポインタ#2の内容であるリンク先ポインタ番号が「0」に変更される。かかる動作は、以下の手順で行われる。
【0141】
まず、今アクセスされたゾーンに対応するテーブルのテーブル番号「2」と同じ番号がリンク先ポインタ番号として格納されているポインタ(ポインタ#1)の内容が、いまアクセスされたゾーンに対応するテーブルに対応するポインタ(ポインタ#2)に格納されているポインタ番号「3」に書き換えられる。次に、いまアクセスされたゾーンに対応するテーブルに対応するポインタ(ポインタ#2)の内容が、リンク先ポインタ番号として現在最も優先順位の高いテーブルに対応するポインタ番号「0」に書き換えられる。これによって、上述のとおり、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更され、ポインタ#2の内容であるリンク先ポインタ番号が「0」に変更される。
【0142】
このように内容が書き換えられた優先リンク31においても、いずれのポインタにもリンク先ポインタ番号として格納されていないポインタ、すなわち、ポインタ#2に対応するテーブル(テーブル#2)が最も優先順位の高いテーブルとなり、以下、当該ポインタ#2に格納されたリンク先ポインタ番号「0」により示されるポインタ、すなわち、ポインタ#0に対応するテーブル(テーブル#0)が次に優先順位の高いテーブルとなり、当該ポインタ#0に格納されたリンク先ポインタ番号「1」により示されるポインタ、すなわち、ポインタ#1に対応するテーブル(テーブル#1)が次に優先順位の高いテーブルとなり、当該ポインタ#1に格納されたリンク先ポインタ番号「3」により示されるポインタ、すなわち、ポインタ#3に対応するテーブル(テーブル#3)が最も優先順位の低いテーブルとなる。これにより、優先順位は、テーブル#2→テーブル#0→テーブル#1→テーブル#3の順となる。最も優先順位の低いテーブルに対応するポインタ#3には、データ「NULL」が格納されている。
【0143】
このような動作により、いまアクセスされたゾーンに対応するテーブル(テーブル#2)の優先順位が最も高くなり、以降の優先順位は、以前記憶されていた優先順位と同じ優先順位となる。
【0144】
同様にして、優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、例えば、テーブル#3に対応するゾーンに対するアクセスがされると、ポインタ#1の内容であるリンク先ポインタ番号がデータ「NULL」に変更され、ポインタ#3の内容であるリンク先ポインタ番号が「2」に変更されて、優先順位はテーブル#3→テーブル#2→テーブル#0→テーブル#1に変更される。
【0145】
図23は、優先リンク31によって、優先順位としてテーブル#3→テーブル#2→テーブル#0→テーブル#1が記憶される場合を示す図である。
【0146】
さて、優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされた場合について説明する。
【0147】
ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされた場合、マイクロプロセッサ6による制御のもと、現在最も優先順位が低いテーブルに格納された内容(アドレス変換情報)が消去され、代わりに、今アクセスが要求されたゾーンに関わるアドレス変換情報が、新たに当該テーブル上に作成される。最も優先順位が低いテーブルの検索は、優先リンク31を構成するポインタ#0〜#3のうち、データ「NULL」が格納されているポインタを探すことにより行われる。上述のとおり、優先リンク31の内容が図23に示される状態にある場合には、「NULL」が格納されているポインタはポインタ#1であるので、ポインタ#1に対応するテーブルであるテーブル#1の優先順位が最も低いことが検出される。
【0148】
また、あるテーブルの更新の方法は、上述したアドレス変換テーブル29の作成方法と同様であり、アクセスが要求されたゾーンに属する各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスが次々と読み出され、これによって、更新されるべきテーブル(上記の例では、テーブル#1)上に、アクセスが要求されたゾーンに関わるアドレス変換情報が展開される。
【0149】
このようにして、最も優先順位が低いテーブル#1に格納されたアドレス変換情報が書き換えられると、テーブル#1が、現在アクセスが要求されたゾーンに対応するテーブルである旨を記憶すべく、マイクロプロセッサ6による制御のもと、管理テーブル30の内容が更新される。さらに、マイクロプロセッサ6による制御のもと、優先リンク31によって記憶される優先順位が変更され、いま更新されアクセスされたテーブル#1の優先順位が最も高くなる。
【0150】
図24は、優先リンク31によって、優先順位としてテーブル#1→テーブル#3→テーブル#2→テーブル#0が記憶される場合を示す図である。
【0151】
図24に示されるように、優先順位がテーブル#3→テーブル#2→テーブル#0→テーブル#1の順である状態において、ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされると、マイクロプロセッサ6による制御のもと、ポインタ#0の内容であるデータが「NULL」に変更され、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更される。かかる動作は、上述の手順と同じであるので、重複する説明を省略する。
【0152】
これによって、優先順位は、テーブル#1→テーブル#3→テーブル#2→テーブル#0の順となる。最も優先順位の低いテーブルに対応するポインタ#0には、データ「NULL」が格納されている。
【0153】
このようにして、優先リンク31は、アクセス履歴に基づいて各テーブル#0〜#3についての優先順位を定め、これを記憶することができる。
【0154】
次に、SRAMワークエリア8に格納される消去済みブロックキュー32のデータ構造について説明する。
【0155】
図25は、SRAMワークエリア8に格納される消去済みブロックキュー32のデータ構造を示す概略図である。
【0156】
図25に示されるように、消去済みブロックキュー32は、キューセット#0〜#7からなる8つのキューセットによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。例えば、キューセット#0はキュー#0−0〜キュー#0−3によって構成され、キューセット#1はキュー#1−0〜キュー#1−3によって構成される。したがって、消去済みブロックキュー32は、32個のキューによって構成される。
【0157】
各キューセット#0〜#7を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理アドレスが格納される。
【0158】
ここで、キューセット#0、#1はテーブル#0に対応するキューセットであり、キューセット#2、#3はテーブル#1に対応するキューセットであり、キューセット#4、#5はテーブル#2に対応するキューセットであり、キューセット#6、#7はテーブル#3に対応するキューセットである。
【0159】
さらに、キュー#k−0はスロット#0に対応し、キュー#k−1はスロット#1に対応し、キュー#k−2はスロット#2に対応し、キュー#k−3はスロット#3に対応している。
【0160】
消去済みブロックキュー32の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル29の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。したがって、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、キュー#k−0〜#k−3に登録される消去済みブロックは、原則として、それぞれフラッシュメモリチップ2−0〜2−3に属する冗長ブロックから選ばれ、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、キュー#k−0〜#k−3に登録される消去済みブロックは、原則として、それぞれバンク#0〜#3に属する冗長ブロックから選ばれる。但し、代替処理が行われる場合にはこの限りではない。
【0161】
次に、ホストコンピュータ5より供給されるホストアドレスを内部アドレスに変換する方法の詳細について説明する。
【0162】
上述のとおり、本実施態様にかかるフラッシュメモリシステム1においては、かかるアドレス変換が、ホストアドレスに対応する「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)、「物理アドレス空間」から内部アドレスに対応する「物理ブロック空間」への変換(第3の変換)の順に行われる。
【0163】
まず、第1の変換について説明する。
【0164】
第1の変換は、ホストアドレスに基づいてアドレス変換テーブル29に含まれるいずれかのセルを特定するステップであり、ROM33に格納されている第1の変換プログラムP1をマイクロプロセッサ6が実行することにより行われる。
【0165】
第1の変換プログラムP1に基づく第1の変換においては、フラッシュメモリシステム1がいずれのモードで動作しているかに関わらず、まず、ホストアドレスの上位13ビットが「1000」で除され、その結果、得られた商(0〜7)によってゾーンが特定され、剰余(0〜999)によって仮想ブロック表示領域が特定される。例えば、ホストアドレスの上位13ビットが「1000011111111B」であれば、商は「100B(4)」であり、剰余は「0101011111B(351)」であるから、選択されるゾーンはゾーン#4となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#351となる。ここで、どのテーブルがゾーン#4に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されている。本例では、ゾーン番号格納領域#0〜#3のうち、ゾーン番号として「100B(4)」が格納されているゾーン番号格納領域に対応するテーブルがゾーン#4に対応するテーブルとなる。いずれのゾーン番号格納領域#0〜#3にもゾーン番号として「100B(4)」が格納されていない場合には、上述した優先リンク31を参照して最も優先順位の低いテーブルが更新され、これに伴って管理テーブル30の内容が更新される。
【0166】
次に、ホストアドレスの下位2ビットに基づいて、選択された仮想ブロック表示領域内の所定のセルが特定される。例えば、上述のように仮想ブロック表示領域#351が選択された場合において、ホストアドレスの下位2ビットが「11B(3)」であれば、選択されるセルは、セル#351−3となる。
【0167】
以上により第1の変換が完了する。上述のとおり、かかる変換は、フラッシュメモリシステム1がいずれのモードで動作しているかに関わらず共通のステップにより行われることから、第1の変換プログラムP1のサイズは小さくてよく、したがって、第1の変換プログラムP1によるROM33の占有量は非常に小さい。
【0168】
次に、第2の変換について説明する。
【0169】
第2の変換は、アドレス変換テーブル29を用いて物理アドレスを取得するステップであり、第1の変換において特定されたセルに格納されている物理アドレスを読み出すことにより行われる。例えば、上述のように第1の変換においてセル#351−3が特定されている場合において、当該セルの内容が「101010101010B(2730)」であれば、第2の変換により得られる物理アドレスは、物理アドレス#2730となる。
【0170】
次に、第3の変換について説明する。
【0171】
第3の変換は、第2の変換により得られた物理アドレス等に基づいて、最終的に内部アドレスを生成するステップであり、フラッシュメモリシステム1が「チップタイプモード」で動作している場合には、ROM33に格納されている第2の変換プログラムP2をマイクロプロセッサ6が実行することにより行われ、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合には、ROM33に格納されている第3の変換プログラムP3をマイクロプロセッサ6が実行することにより行われる。つまり、フラッシュメモリシステム1がどのモードで動作しているかによって、異なる方法で変換が行われる。
【0172】
まず、第2の変換プログラムP2を用いた第3の変換においては(フラッシュメモリシステム1が「チップタイプモード」で動作している場合)、物理アドレスの下位2ビット、上記除算によって得られた商(3ビット)、物理アドレスの上位10ビット及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットが、この順に結合されて、内部アドレスが生成される。例えば、上述のように、除算によって得られた商が「100B」であり、第2の変換において得られた物理アドレスが「101010101010B」である場合において、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットが「11000B」であれば、得られる20ビットの内部アドレスは、「10100101010101011000B」となる。
【0173】
一方、第3の変換プログラムP3を用いた第3の変換においては(フラッシュメモリシステム1が「バンクタイプモード」で動作している場合)、上記除算によって得られた商(3ビット)、物理アドレス(12ビット)及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットが、この順に結合されて、内部アドレスが生成される。上記と同じ例で言えば、得られる20ビットの内部アドレスは、「10010101010101011000B」となる。
【0174】
以下に詳述するが、20ビットの内部アドレスのうち、上位2ビットはアクセスすべきフラッシュメモリチップを特定するために用いられ、上位3ビット目〜上位15ビット目からなる13ビットは、選択されたフラッシュメモリチップ内においてアクセスすべき物理ブロックを特定するために用いられ、下位5ビットは選択された物理ブロック内においてアクセスすべき物理ページを特定するために用いられる。
【0175】
以上により第3の変換が完了する。上述のとおり、かかる変換は、第2の変換プログラムP2を用いる場合及び第3の変換プログラムP3を用いる場合のいずれの場合においても、単純な変換動作によって行われることから、第2及び第3の変換プログラムP2、P3のサイズはいずれも小さくてよく、したがって、第2及び第3の変換プログラムP2、P3によるROM33の占有量も非常に小さい。
【0176】
次に、本実施態様にかかるフラッシュメモリシステム1のデータの読み出し動作及びデータの書き込み動作を、「チップタイプモード」で動作する場合及び「バンクタイプモード」で動作する場合のそれぞれについて説明する。
【0177】
まず、本実施態様にかかるフラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの読み出し動作について説明する。
【0178】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部読み出しコマンドとともにホストアドレス、例えば「00000111111111100000B」がフラッシュメモリシステム1に供給された場合を例に説明する。
【0179】
まず、ホストアドレス及び外部読み出しコマンドがコントローラ3に供給されると、これらホストアドレス及び外部読み出しコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0180】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0181】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、上述した第1〜第3の変換によって、内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0182】
本例では、ホストアドレスが「00000111111111100000B」であるから、第1の変換において行われる除算によって得られる商は「000B(0)」であり、得られる剰余は「0011111111B(255)」である。したがって、選択されるゾーンはゾーン#0となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#255となる。また、ホストアドレスの下位2ビットが「00B(0)」であるから、選択されるセルは、セル#255−0となる。ここで、どのテーブルがゾーン#0に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されており、本例では、ゾーン番号格納領域#0〜#3のうち、ゾーン番号として「000B(0)」が格納されているゾーン番号格納領域に対応するテーブルがゾーン#0に対応するテーブルとなる。いずれのゾーン番号格納領域#0〜#3にもゾーン番号として「000B(0)」が格納されていない場合には、上述した優先リンク31を参照して、最も優先順位の低いテーブルが更新され、これに伴って管理テーブル30の内容が更新される。
【0183】
また、本例では、かかるセル#255−0の内容が「100100001100B」であるものとする。また、本例はデータの読み出し動作であるから、フラグ#255−0は「1(有効)」となっているはずである。したがって、仮にフラグ#255−0が「0(無効)」である場合には、エラーとなる。
【0184】
また、本例では、フラッシュメモリシステム1が「チップタイプモード」で動作していることから、第3の変換においては第2の変換プログラムP2が用いられ、これにより、内部アドレス「00000100100001111000B」が生成される。
【0185】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0186】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部読み出しコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0187】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種である内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、20ビット長の内部アドレスがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0188】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック12による一連の読み出し動作が実行される。フラッシュシーケンサブロック12による一連の読み出し動作は、次の通りである。
【0189】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0190】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの下位18ビット「000100100001111000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された18ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0191】
これに応答して、フラッシュメモリチップ2−0は、供給された内部アドレスの下位18ビット「000100100001111000B」に対応する物理ページに格納されたデータの読み出しを実行する。ここで、供給された18ビットのアドレス「000100100001111000B」のうち、上位13ビットは物理ブロックを特定し、下位5ビットは当該物理ブロック内の物理ページを特定するために用いられる。この場合、上位13ビットは「0001001000011B(579)」であり、下位5ビットは「11000B(24)」であるから、特定される物理ブロックはブロック#579となり、特定される物理ページは物理ページ#24となる。すなわち、フラッシュメモリチップ2−0は、ブロック#579の物理ページ#24に格納されたデータの読み出しを実行する。かかる読み出し動作においては、ユーザ領域25に格納されたユーザデータのみならず、冗長領域26に格納された各種付加情報も読み出される。
【0192】
尚、図12において説明したように、本実施態様においては、4つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ2−0に属する物理ブロック#579の物理ページ#24は、仮想ブロック#255の仮想ページ#96に対応する。
【0193】
このようにしてフラッシュメモリチップ2−0から読み出されたユーザデータ及び付加情報は、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータ及び付加情報を受け取ると、フラッシュシーケンサブロック12による制御のもと、付加情報に含まれるエラーコレクションコードが抽出され、ユーザデータ及び抽出されたエラーコレクションコードがECCブロック11に供給される。ユーザデータ及びエラーコレクションコードがECCブロック11に供給されると、ECCブロック11は、エラーコレクションコードに基づき、ユーザデータに誤りがあるか否かを判断し、誤りがないと判断すれば、供給されたユーザデータをそのままバッファ9に格納し、誤りがあると判断すれば、これをエラーコレクションコードに基づいて訂正し、訂正後のユーザデータをバッファ9に格納する。このようにしてバッファ9に誤りのないユーザデータが格納されると、フラッシュシーケンサブロック12による一連の読み出し動作が完了する。
【0194】
そして、バッファ9に格納されたユーザデータは、マイクロプロセッサ6による制御のもと、ホストインターフェースブロック7より、バス13、コネクタ4及びバス14を介してホストコンピュータ5に供給される。
【0195】
以上により、一連の読み出し動作が完了する。
【0196】
次に、本実施態様にかかるフラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの読み出し動作について説明する。
【0197】
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの読み出し動作は、アドレス変換方法が異なる他は、上述した「チップタイプモード」で動作する場合におけるデータの読み出し動作と同様である。
【0198】
すなわち、本例では、フラッシュメモリシステム1が「バンクタイプモード」で動作していることから、第3の変換においては第3の変換プログラムP3が用いられ、これにより、上述した例と同じく、ホストアドレスが「00000111111111100000B」であり、且つ、対応するセル#255−0の内容が「100100001100B」である場合には、内部アドレス「00010010000110011000B」が生成される。
【0199】
これにより、特定される物理ブロックは物理ブロック#2316となり、特定される物理ページは物理ページ#24となる。すなわち、フラッシュメモリチップ2−0は、物理ブロック#2316の物理ページ#24に格納されたデータの読み出しを実行する。この場合、フラッシュメモリチップ2−0に属する物理ブロック#2316の物理ページ#24は、仮想ブロック#255の仮想ページ#96に対応する。
【0200】
次に、本実施態様にかかるフラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの書き込み動作について説明する。
【0201】
データ書き込み動作においては、アクセス対象となる仮想ブロックが存在しない場合(新規にデータを書き込む場合)とアクセス対象となる仮想ブロックがすでに存在する場合(データを上書きする場合)において動作が異なる。したがって、それぞれの場合について説明する。
【0202】
書き込み動作1(空きブロックにデータを書き込む場合(「チップタイプモード」で動作する場合))
空きブロックにデータを書き込む場合、すなわち新規データの書き込み動作においては、仮想ブロックの生成、生成された仮想ブロックの仮想ページ#0〜#3に対する冗長データの書き込み、生成された仮想ブロックの所定の仮想ページに対するユーザデータの書き込みが実行される。
【0203】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、対応する仮想ブロックにデータが割り当てられていない連続した複数のホストアドレス、例えば「00010101010101000100B」〜「00010101010101000111B」と、これら各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。ここでは、これら連続するホストアドレスを、ホストアドレス#0〜#3と呼ぶ。
【0204】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0205】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#3が正しいアドレスであるか否か、すなわち、かかるホストアドレス#0〜#3が、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0206】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#3が有効なアドレスであると判断されれば、上述した第1〜第3の変換によって、内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0207】
本例では、ホストアドレス#0〜#3が「00010101010101000100B」〜「00010101010101000111B」であるから、第1の変換において行われる除算によって得られる商は「000B(0)」であり、得られる剰余は「1010101010B(682)」である。したがって、選択されるゾーンはゾーン#0となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#682となる。どのテーブルがゾーン#0に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されている。また、ホストアドレス#0〜#3の下位2ビットがそれぞれ「00B(0)」〜「11B(3)」であるから、選択されるセルは、セル#682−0〜セル#682−3となる。
【0208】
しかしながら、本例は、新規データの書き込み動作、すなわち対応する仮想ブロックに現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作であるので、対応する仮想ブロック表示領域#682内の各フラグ#682−0〜#682−3はいずれも「0(無効)」を示しているはずである。このため、このまま第2の変換を行うことはできず、以下に説明する新たな仮想ブロックの割り当てが行われる。尚、これらフラグ#682−0〜#682−3が「1(有効)」となっている場合は、当該書き込み処理は「データの上書き処理」であり、その動作については後述する。
【0209】
新たな仮想ブロックの割り当ては、次のように行われる。まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。上述のとおり、各キューに格納されているのは、消去済みブロックの物理アドレスである。本例では、これらキュー#0−0〜#0−3の内容がそれぞれ「000000111100B(60)」、「110000110001B(3121)」、「101111110010B(3058)」、「000100000011B(259)」であるものとする。
【0210】
キュー#0−0〜#0−3に格納された内容が読み出されると、これらが仮想ブロック表示領域#682のセル#682−0〜セル#682−3にそれぞれ格納され、対応する各フラグ#682−0〜#682−3が全て「1(有効)」に書き換えられる。これにより、仮想ブロックの生成が完了する。
【0211】
また、本例では、フラッシュメモリシステム1が「チップタイプモード」で動作していることから、第3の変換においては第2の変換プログラムP2が用いられ、これにより、ホストアドレス#0〜#3にそれぞれ対応する内部アドレス#0〜#3が生成される。本例においては、内部アドレス#0〜#3はそれぞれ「00000000000111110001B」、「01000110000110010001B」、「10000101111110010001B」及び「11000000100000010001B」となる。
【0212】
以上より、ホストアドレス#0〜#3から内部アドレス#0〜#3への変換が完了する。上述のとおり、内部アドレスの上位2ビットは、アクセスすべきフラッシュメモリチップの番号を示し、内部アドレスの上位3ビット目〜上位15ビット目は、アクセスすべき物理ブロックアドレスを示し、内部アドレスの下位5ビットは、アクセスすべき物理ページを示している。したがって、内部アドレス#0によって特定される物理ページは、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17となり、内部アドレス#1によって特定される物理ページは、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#17となり、内部アドレス#2によって特定される物理ページは、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#17となり、内部アドレス#3によって特定される物理ページは、フラッシュメモリチップ2−3の物理ブロック#64の物理ページ#17となる。
【0213】
さらに、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0214】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種であるデータ転送コマンド及び内部書き込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された4つの内部アドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0215】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、仮想ブロック#682の仮想ページ#0〜#3に対する各種冗長データの書き込み、並びに、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0216】
図26は、「チップタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【0217】
まず、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5を生成する。ここで、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、その値は、「00000000000111100000B」である。
【0218】
次に、このようにして生成された内部アドレス#5の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#5の上位2ビットは「00B(0)」であるから、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0219】
次に、フラッシュシーケンサブロック12は、上記内部アドレス#5の下位18ビット「000000000111100000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0220】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#5の下位18ビット「000000000111100000B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0221】
次に、仮想ブロック#682の仮想ページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、仮想ブロック#682の仮想ページ#0とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、ここに書き込むべきデータとは、仮想ブロックアドレス、セル番号及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、仮想ブロックアドレスは「1010101010B(682)」であり、セル番号は「00B(0)」である。フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0のその他の部分、すなわち、ユーザ領域25の全部分、冗長領域26のうちエラーコレクションコード格納領域27等には何らのデータも書き込まれない。但し、各ページに対するデータの書き込みは、ページ単位で一括して行われるため、実際には、上記データを書き込まない部分については、書き込み処理が実行されないのではなく、「オール1」からなる書き込みデータが書き込まれることになる。
【0222】
バス15に供給された仮想ブロックアドレス、セル番号及び冗長領域26に格納されるその他の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0223】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して仮想ブロックアドレスやセル番号等の付加情報が転送されると、かかる付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0224】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0225】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されている上記付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されている付加情報が、内部アドレス#5の下位18ビット「000000000111100000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0226】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#1に対応する内部アドレス#6を生成し、当該内部アドレスにより示される物理ページに、仮想ページ#0に書き込んだ情報と同じ情報を書き込む。ここで、仮想ブロック#682の仮想ページ#1に対応する内部アドレス#6とは、フラッシュメモリチップ2−1内の物理ブロック#780の物理ページ#0に対応し、その値は、「01000110000110000000B」である。
【0227】
このような書き込み動作が、内部アドレス#7、#8を用いて仮想ブロック#682の仮想ページ#2及び仮想ページ#3に対しても行われ、これにより、仮想ブロック#682の仮想ページ#0〜仮想ページ#3の冗長領域26には、いずれも同じ情報が書き込まれる。ここで、仮想ブロック#682の仮想ページ#2とは、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#0に対応し、仮想ブロック#682の仮想ページ#3とは、フラッシュメモリチップ2−3の物理ブロック#64の物理ページ#0に対応する。
【0228】
このようにして、仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了すると、次に、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みが実行される。
【0229】
フラッシュシーケンサブロック12による仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作も、図26に示されるタイミングで実行される。以下、仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作について詳細に説明する。
【0230】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、内部アドレス#0を選択し、当該内部アドレス#0の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#0の上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0231】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000000111110001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0232】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#0の下位18ビット「000000000111110001B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0233】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、冗長領域26に格納すべき付加情報のうち、仮想ブロックアドレス及びセル番号については、仮想ページ#0〜#3に格納された内容と同じである。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0234】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して書き込みデータ及びエラーコレクションコード等の付加情報が転送されると、かかる書き込みデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0235】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0236】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、内部アドレス#0の下位18ビット「000000000111110001B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17は、仮想ブロック#682の仮想ページ#68に対応する。
【0237】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、内部アドレス#1を選択し、当該内部アドレス#1の上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0238】
次に、フラッシュシーケンサブロック12は、内部アドレス#1の下位18ビット「000110000110010001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0239】
その後、上述のとおり、フラッシュメモリチップ2−1に対してデータ転送、及び書き込み命令の発行が行われ、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報が、内部アドレス#1により特定されるページに書き込まれる。この場合、内部アドレス#1の下位18ビットは「000110000110010001B」であるから、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#17に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#17は、仮想ブロック#682の仮想ページ#69に対応する。
【0240】
このようなデータ書き込み動作が、内部アドレス#2及び#3に対しても実行され、これにより、ホストアドレス#2及び#3に対応するデータ及び対応するエラーコレクションコード等の付加情報も、それぞれ内部アドレス#2及び#3により特定されるページへ書き込まれる。この場合、内部アドレス#2の下位18ビットは「000101111110010001B」であるから、ホストアドレス#2に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#17に書き込まれる。同様に、内部アドレス#3の下位18ビットは「000000100000010001B」であるから、ホストアドレス#3に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−3の物理ブロック#64の物理ページ#17に書き込まれる。
【0241】
ここで、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#17は、仮想ブロック#682の仮想ページ#70に対応し、フラッシュメモリチップ2−3の物理ブロック#64の物理ページ#17は、仮想ブロック#682の仮想ページ#71に対応する。
【0242】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#0に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理アドレスを新たにキュー#0−0〜#0−3に格納する。
【0243】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0244】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#3に対応するデータが、それぞれ異なるフラッシュメモリチップ2−0〜2−3に属する異なる物理ブロック内に書き込まれた点が重要である。これら4つの物理ブロックは、上述のとおり一つの仮想ブロック#682を構成し、連続するホストアドレス#0〜#3に対応するデータは、当該仮想ブロック#682内の連続する仮想ページ#68〜#71に書き込まれたことになる。
【0245】
また、上記の例では、各物理ブロックの先頭ページである仮想ページ#0〜#3以外のページ(仮想ページ#68〜#71)にも、仮想ブロックアドレスやセル番号を書き込んでいるが、これを省略しても構わない。
【0246】
また、上記の例では、キュー#0−0〜#0−3に格納されていた物理アドレスの下位2ビットがそれぞれ「00(0)」〜「11B(3)」であったことから、連続するホストアドレス#0〜#3に対応するデータが書き込まれるべき物理ブロックがそれぞれ異なるフラッシュメモリチップ2−0〜2−3に属していたが、代替処理が行われている場合には、下位2ビットが同じである物理アドレスがこれらキューに格納されていることがあり、この場合には、あるホストアドレスに対応するデータが書き込まれるべき物理ブロックと、他のホストアドレスに対応するデータが書き込まれるべき物理ブロックが、互いに同じフラッシュメモリチップに属することになる。しかしながら、すでに説明したように、代替処理においては、隣接するスロット以外のスロットに属する物理ブロックが代替ブロックとして優先的に選択されることから、連続するデータ書き込みにおいて、同じフラッシュメモリチップが続けて書き込み対象となることは原則としてなく、このため、代替ブロックが選択された場合であっても一連の書き込み動作に要する時間は増大しないか、あるいは僅かな増大に止められる。
【0247】
書き込み動作2(空きブロックにデータを書き込む場合(「バンクタイプモード」で動作する場合))
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における空きブロックへのデータの書き込み動作においても、仮想ブロックの生成、生成された仮想ブロックの仮想ページ#0〜#3に対する冗長データの書き込み、生成された仮想ブロックの所定の仮想ページに対するユーザデータの書き込みが実行される。
【0248】
本例においても、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、対応する仮想ブロックにデータが割り当てられていない連続した複数のホストアドレス、例えば「00010101010101000100B」〜「00010101010101000111B」と、これら各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0249】
ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給された場合のコントローラ3の基本的な動作は、フラッシュメモリシステム1が「チップタイプモード」で動作している場合と同様であり、重複する部分の説明は省略する。
【0250】
また、本例においても、第1の変換において行われる除算によって得られる商は「000B(0)」であり、得られる剰余は「1010101010B(682)」である。したがって、選択されるゾーンはゾーン#0となり、選択されるセルは、セル#682−0〜セル#682−3となる。
【0251】
さらに、本例においても、対応する仮想ブロック表示領域#682内の各フラグ#682−0〜#682−3はいずれも「0(無効)」を示しているはずであり、このため、新たな仮想ブロックの割り当てが行われる。
【0252】
新たな仮想ブロックの割り当ての方法は、フラッシュメモリシステム1が「チップタイプモード」で動作している場合と同様であり、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。本例においても、これらキュー#0−0〜#0−3の内容がそれぞれ「000000111100B(60)」、「110000110001B(3121)」、「101111110010B(3058)」、「000100000011B(259)」であるものとする。キュー#0−0〜#0−3に格納された内容が読み出されると、これらが仮想ブロック表示領域#682のセル#682−0〜セル#682−3にそれぞれ格納され、対応する各フラグ#682−0〜#682−3が全て「1(有効)」に書き換えられる。これにより、仮想ブロックの生成が完了する。
【0253】
また、本例では、フラッシュメモリシステム1が「バンクタイプモード」で動作していることから、第3の変換においては第3の変換プログラムP3が用いられ、これにより、ホストアドレス#0〜#3にそれぞれ対応する内部アドレス#0〜#3が生成される。本例においては、内部アドレス#0〜#3はそれぞれ「00000000011110010001B」、「00011000011000110001B」、「00010111111001010001B」及び「00000010000001110001B」となる。
【0254】
これにより、内部アドレス#0により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#60の物理ページ17となり、内部アドレス#1により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#3121の物理ページ17となり、内部アドレス#2により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#3058の物理ページ17となり、内部アドレス#3により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#259の物理ページ17となる。
【0255】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。
【0256】
図27は、「バンクタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【0257】
まず、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5を生成する。ここで、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5とは、フラッシュメモリチップ2−0内の物理ブロック#60の物理ページ#0に対応し、その値は、「00000000011110000000B」である。
【0258】
次に、このようにして生成された内部アドレス#5の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#5の上位2ビットは「00B(0)」であるから、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0259】
次に、フラッシュシーケンサブロック12は、上記内部アドレス#5の下位18ビット「000000011110000000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。このとき、内部アドレスの上位14ビット目及び上位15ビット目からなる2ビットである「00B(0)」に基づき、フラッシュメモリチップ2−0に設けられたレジスタ#0が活性化される(転送先指定)。
【0260】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#0の下位18ビット「000000011110000000B」に対応するページに書き込まれるべきデータのレジスタ#0への受け入れが許可された状態となる。
【0261】
次に、仮想ブロック#682の仮想ページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、仮想ブロック#682の仮想ページ#0とは、フラッシュメモリチップ2−0内の物理ブロック#60の物理ページ#0に対応し、ここに書き込むべきデータとは、仮想ブロックアドレス、セル番号及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、仮想ブロックアドレスは「1010101010B(682)」であり、セル番号は「00B(0)」である。この場合、フラッシュメモリチップ2−0に設けられたレジスタ#0が活性化されているため、バス15に供給されたこれら仮想ブロックアドレス、セル番号及びその他の付加情報は、フラッシュメモリチップ2−0内のレジスタ#0に格納される(データ転送)。
【0262】
このような、転送先指定処理及びデータ転送処理が、仮想ブロック#682の仮想ページ#1〜#3に対しても行われ、これにより、フラッシュメモリチップ2−0内に備えられたレジスタ#0〜#3への仮想ブロックアドレス、セル番号及びその他の付加情報の一時的な格納が完了する。ここで、仮想ブロック#682の仮想ページ#1〜#3は、フラッシュメモリチップ2−0の物理ブロック#3121の物理ページ#0、フラッシュメモリチップ2−0の物理ブロック#3058の物理ページ#0及びフラッシュメモリチップ2−0の物理ブロック#259の物理ページ#0にそれぞれ対応し、レジスタ#1〜#3に格納される仮想ブロックアドレス、セル番号及びその他の付加情報は、レジスタ#0に格納したこれらと同じ内容である。
【0263】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0264】
これに応答して、フラッシュメモリチップ2−0は、レジスタ#0〜#3に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む(フラッシュプログラミング)。
【0265】
このようにして、仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了すると、次に、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みが実行される。
【0266】
フラッシュシーケンサブロック12による仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作も、図27に示されるタイミングで実行され、書き込まれるデータに、ホストアドレス#0〜#3に対応するユーザデータが追加される他、上述した仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み動作と同様の動作が行われる。このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0267】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#3に対応するデータが、それぞれ異なるバンク#0〜#3に属する異なる物理ブロック内に書き込まれた点が重要である。これら4つの物理ブロックは、上述のとおり一つの仮想ブロック#682を構成し、連続するホストアドレス#0〜#3に対応するデータは、当該仮想ブロック#682内の連続する仮想ページ#68〜#71に書き込まれたことになる。
【0268】
また、上記の例では、各物理ブロックの先頭ページである仮想ページ#0〜#3以外のページ(仮想ページ#68〜#71)にも、仮想ブロックアドレスやセル番号を書き込んでいるが、これを省略しても構わない。
【0269】
また、上記の例では、キュー#0−0〜#0−3に格納されていた物理アドレスの下位2ビットがそれぞれ「00(0)」〜「11B(3)」であったことから、連続するホストアドレス#0〜#3に対応するデータが書き込まれるべき物理ブロックがそれぞれ異なるバンク#0〜#3に属していたが、代替処理が行われている場合には、下位2ビットが同じである物理アドレスがこれらキューに格納されていることがあり、この場合には、あるホストアドレスに対応するデータが書き込まれるべき物理ブロックと、他のホストアドレスに対応するデータが書き込まれるべき物理ブロックが、互いに同じバンクに属することになる。したがって、この場合、フラッシュプログラミングを2回に分けて実行する必要がある。
【0270】
書き込み動作3(仮想ブロックにデータを上書きする場合(「チップタイプモード」で動作する場合))
すでにデータの格納されている仮想ブロック(使用済みブロック)にデータを追加して書き込む場合、「ブロック間転送」が行われる。
【0271】
ここで、ブロック間転送について説明する。
【0272】
上述のとおり、フラッシュメモリチップ2−0〜2−3を構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、ブロック単位でしか行うことができない。このため、ある物理ページにデータを書き込む際には、その物理ページのユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれている物理ページ、すなわち、その物理ページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっているページに、これと異なるデータを直接上書きすることはできない。したがって、既にデータの書き込まれた物理ページに対し、これと異なる新しいデータを書き込むためには、一旦、この物理ページが属する物理ブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。
【0273】
したがって、ある物理ページに格納された古いデータに新しいデータを上書きしようとする場合、この物理ページが属する物理ブロックに含まれる他の物理ページに格納されたデータが消失するのを防ぐためには、当該他の物理ページに格納されたデータを、他の物理ブロックに移動させるという処理が必要となるのである。
【0274】
このような上書き処理に伴うデータの移動が「ブロック間転送」と呼ばれる。尚、本明細書においては、転送元の物理ブロックの物理ブロックアドレスを「転送元ブロックアドレス」、転送先の物理ブロックの物理ブロックアドレスを「転送先ブロックアドレス」と呼ぶ。
【0275】
以下、フラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの上書き動作について説明する。
【0276】
ここでは、上述した書き込み動作1が完了した直後の状態において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、4つのホストアドレス「00010101010101000000B」(ホストアドレス#0)、「00010101010101000001B」(ホストアドレス#1)、「00010101010101000010B」(ホストアドレス#2)、「00010101010101000011B」(ホストアドレス#3)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、これらホストアドレスは、それぞれ仮想ブロック#682の仮想ページ#64〜#67に対応する。
【0277】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0278】
次に、アドレス変換テーブル31を用いた転送元ブロックアドレス及び転送先ブロックアドレスの生成が行われる。
【0279】
本例では、ホストアドレス#0〜#3が「00010101010101000100B」〜「00010101010101000111B」であるから、第1の変換において行われる除算によって得られる商は「000B(0)」であり、得られる剰余は「1010101010B(682)」である。したがって、選択されるゾーンはゾーン#0となり、選択されるセルは、セル#682−0〜セル#682−3となる。
【0280】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル29の対応するテーブルから仮想ブロック表示領域#682が選択され、仮想ブロック表示領域#682の内容が読み出される。上述のとおり、仮想ブロック#682には書き込み動作1においてすでにデータが割り当てられているので、対応する各フラグ#682−0〜#682−3はいずれも「1」を示しているはずである。また、セル#682−0〜#682−3の内容は、上述のとおりそれぞれ「000000111100B」、「110000110001B」、「101111110010B」、「000100000011B」である。
【0281】
セル#682−0〜#682−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これを用いて転送元ブロックアドレスが生成される。
【0282】
転送元ブロックアドレスは、マイクロプロセッサ6による制御のもと、読み出された各セルの内容の下位2ビット、ゾーン番号及び読み出された各セルの内容の上位10ビットがこの順に結合されて生成される。この場合、読み出されたセルの内容は「000000111100B」、「110000110001B」、「101111110010B」、「000100000011B」であり、ゾーン番号は「000B」であることから、得られる4つの転送元ブロックアドレス#0〜#3の値は、それぞれ「000000000001111B」、「010001100001100B」、「100001011111100B」及び「110000001000000B」となる。
【0283】
これにより、転送元ブロックアドレス#0〜#3の生成が完了する。
【0284】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#1が選択され、かかるキューセット#1を構成する各キュー#1−0〜#1−3に格納された内容が読み出される。本例では、これらキュー#1−0〜#1−3の内容がそれぞれ「010000010000B」、「000000100001B」、「111101000010B」、「010110000011B」であるものとする。
【0285】
キュー#1−0〜#1−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これらがアドレス変換テーブル31の仮想ブロック表示領域#682を構成するセル#682−0〜#682−3に上書きされるとともに、これらを用いて転送先ブロックアドレスが生成される。
【0286】
転送先ブロックアドレスは、マイクロプロセッサ6による制御のもと、読み出された各キューの内容の下位2ビット、ゾーン番号及び読み出された各キューの内容の上位10ビットがこの順に結合されて生成される。この場合、得られる4つの転送先ブロックアドレス#0〜#3の値は、それぞれ「000000100000100B」、「010000000001000B」、「100001111010000B」及び「110000101100000B」となる。
【0287】
これにより、転送先ブロックアドレス#0〜#3の生成が完了する。
【0288】
以上の処理が完了すると、次に、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0289】
まず、マイクロプロセッサ6による制御のもと、データ転送コマンド、内部書き込みコマンド及び内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された転送元ブロックアドレス#0〜#3及び転送先ブロックアドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0290】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。フラッシュシーケンサブロック12による一連の書き込み動作は、次の通りである。
【0291】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送元ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送元内部アドレスを生成する。この場合、転送元内部アドレスは、「00000000000111100000B」となる。次に、フラッシュシーケンサブロック12は、生成された転送元内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、生成された転送元内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0292】
次に、フラッシュシーケンサブロック12は、転送元内部アドレスの下位18ビット「000000000111100000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0293】
これにより、フラッシュメモリチップ2−0は、供給された転送元内部アドレスの下位18ビット「000000000111100000B」に格納されたデータの読み出しを実行する。すなわち、フラッシュメモリチップ2−0は、物理ブロック#15の物理ページ#0に格納されたデータの読み出しを実行する。尚、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0294】
このようにしてフラッシュメモリチップ2−0から読み出されたデータは、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータを受け取ると、これがバッファ9に一時的に格納されるとともに、ECCブロック11に送出され、新たにエラーコレクションコードの生成が行われる。ECCブロック11にて新たに生成されたエラーコレクションコードは、ECCブロック11内に一時的に保持される。
【0295】
このような読み出し動作が、転送元ブロックアドレス#1〜#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−1〜2−3に対しても実行され、その結果、フラッシュメモリチップ2−1に属する物理ブロック#780の物理ページ#0に格納されたデータ、フラッシュメモリチップ2−2に属する物理ブロック#764の物理ページ#0に格納されたデータ、及びフラッシュメモリチップ2−3に属する物理ブロック#64の物理ページ#0に格納されたデータも読み出されることになる。尚、仮想ブロック上においては、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#0は仮想ページ#1であり、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#0は仮想ページ#2であり、フラッシュメモリチップ2−3の物理ブロック#64の物理ページ#0は仮想ページ#3に対応する。すなわち、以上の処理によって、仮想ブロック#682の仮想ページ#0〜#3に格納されているデータが読み出されたことになる。
【0296】
次に、バッファ9に一時的に格納されたデータの書き込み動作が行われる。
【0297】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「00000010000010000000B」となる。
【0298】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、転送先内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。
【0299】
次に、フラッシュシーケンサブロック12は、転送先内部アドレスの下位18ビットを、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された書き込みアドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された転送先内部アドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0300】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−0から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0301】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0302】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「000010000010000000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#260の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#260の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0303】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#1に「00000B(0)」を付加して20ビットの新たな転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「01000000000100000000B」となる。次いで、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0304】
次に、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの下位18ビット「000000000100000000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0305】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−1から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、上述と同様にしてフラッシュメモリチップ2−1に対して転送され、その後、書き込み命令の発行が行われる。これにより、フラッシュメモリチップ2−1はフラッシュプログラミングを行い、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「000000000100000000B」により特定されるページ、つまり、フラッシュメモリチップ2−1の物理ブロック#8の物理ページ#0に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#8の物理ページ#0は、仮想ブロック#682の仮想ページ#1に対応する。
【0306】
このような、書き込み処理が、転送先ブロックアドレス#2及び#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−2及び2−3に対しても実行され、これにより、フラッシュメモリチップ2−2から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−2の物理ブロック#976の物理ページ#0に書き込まれ、フラッシュメモリチップ2−3から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−3の物理ブロック#352の物理ページ#0に書き込まれる。フラッシュメモリチップ2−2の物理ブロック#976の物理ページ#0は、仮想ブロック#682の仮想ページ#2に対応し、フラッシュメモリチップ2−3の物理ブロック#352の物理ページ#0は、仮想ブロック#682の仮想ページ#3に対応する。
【0307】
これにより、転送元の仮想ブロックの仮想ページ#0〜#3に格納されているデータが、転送先の仮想ブロックの仮想ページ#0〜#3に書き込まれたことになる。すなわち、転送元の仮想ブロックの仮想ページ#0〜#3から転送先の仮想ブロックの仮想ページ#0〜#3へのデータの転送が行われたことになる。
【0308】
このようなデータの転送動作は、転送元ブロックアドレス及び転送先ブロックアドレスに付加する5ビットの値をインクリメントすることによって、次々と行われる。すなわち、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットの値が「00001(1)」であれば、転送元の仮想ブロックの仮想ページ#4〜#7から転送先の仮想ブロックの仮想ページ#4〜#7へのデータの転送が行われ、「00010(2)」であれば、転送元の仮想ブロックの仮想ページ#8〜#11から転送先の仮想ブロックの仮想ページ#8〜#11へのデータの転送が行われることになる。
【0309】
このような転送動作は、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットである「10000B(16)」に一致するまで連続的に行われる。すなわち、付加される5ビットがインクリメントされた結果、これが「10000B(16)」となり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットに一致すると、一旦、上述した転送動作が中断される。本例では、転送元の仮想ブロックの仮想ページ#0〜#63から転送先の仮想ブロックの仮想ページ#0〜#63へのデータの転送が完了した時点で、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットに一致することになる。
【0310】
付加される5ビットがホストアドレスの上位14ビット目〜上位18ビット目からなる5ビットに一致すると、フラッシュシーケンサブロック12は、かかる5ビット「10000B(16)」を用いたデータの読み出しを行わず、これを転送先ブロックアドレス#0〜#3にそれぞれ付加して、新たな転送先内部アドレスを生成する。例えば、転送先ブロックアドレス#0に「10000B(16)」が付加されて生成された転送先内部アドレスは、「00000010000010010000B」である。
【0311】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づいてチップ選択信号#0を活性化しつつ、転送先内部アドレスの下位18ビットを、データ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する(転送先指定)。
【0312】
次に、ホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。このとき、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される(データ転送)。
【0313】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0314】
このようにして、フラッシュメモリチップ2−0がホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、ホストアドレス#1に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報を、フラッシュメモリチップ2−1に書き込むべく、転送先指定処理、データ転送処理等を実行する。このように、あるフラッシュメモリチップがフラッシュプログラミングを実行している途中で、これと異なるフラッシュメモリチップに対して転送先指定処理、データ転送処理等を実行する点はすでに説明したとおりであり、これによって、ホストアドレス#0に対応する書き込みデータは、フラッシュメモリチップ2−0内の物理ブロック#260の物理ページ#16に書き込まれ、ホストアドレス#1に対応する書き込みデータは、フラッシュメモリチップ2−1内の物理ブロック#8の物理ページ#16に書き込まれ、ホストアドレス#2に対応する書き込みデータは、フラッシュメモリチップ2−2内の物理ブロック#976の物理ページ#16に書き込まれ、ホストアドレス#3に対応する書き込みデータは、フラッシュメモリチップ2−3内の物理ブロック#352の物理ページ#16に書き込まれる。
【0315】
これにより、ホストアドレス#0〜#3に対応する書き込みデータが、転送先の仮想ブロックの仮想ページ#64〜#67にそれぞれ書き込まれたことになる。
【0316】
かかるデータの書き込みが完了すると、再び、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットがインクリメントされ、新しい転送元内部アドレス及び転送先内部アドレスを用いたデータの転送が再開される。かかる転送動作は、付加される5ビットが「11111(31)」である場合のデータ転送が完了するまで連続的に行われる。すなわち、転送元の仮想ブロックの仮想ページ#68〜#127から転送先の仮想ブロックの仮想ページ#68〜#127へのデータの転送が完了するまで行われ、これにより、フラッシュシーケンサブロック12による一連のデータ転送動作が完了する。
【0317】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#1に格納された物理ブロックアドレスが、消去済みブロックの物理アドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#1−0〜#1−3に格納する。
【0318】
尚、転送元の各物理ブロックは、いずれもブロック消去され、これによって新たな消去済みブロックとなる。かかるブロック消去においても、転送元の各物理ブロックがそれぞれ異なるフラッシュメモリチップに属していることから、これらブロックに対するブロック消去動作を並列に実行することができる。
【0319】
以上により、一連のブロック間転送動作が完了する。
【0320】
このように、アクセス対象である仮想ブロックが横書き仮想ブロックである場合においてデータの上書きが行われると、4つの物理ブロックに対してブロック間転送が行われるが、これらブロック間転送が並列に実行されることから、これらをそれぞれ独立して行う場合に比べると、一連のブロック間転送動作に要する時間は大幅に短くなる。
【0321】
書き込み動作4(仮想ブロックにデータを上書きする場合(「バンクタイプモード」で動作する場合))
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの上書き動作においても、ブロック間転送が実行される。その動作は、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と基本的に同様であり、転送元ブロックアドレス及び転送先ブロックアドレスに「00000B」〜「11111B」が次々と付加されることによって、転送元内部アドレス及び転送先内部アドレスが生成され、これらを用いて、連続的なデータの転送が行われる。この場合、書き込み動作2において説明したように、各バンクに対応して設けられたレジスタ#0〜#3を用いることによって、ブロック間転送が並列に実行される。これにより、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と同様、一連のブロック間転送動作を高速に行うことが可能となる。
【0322】
このように、本実施態様によるフラッシュメモリシステム1では、「仮想ブロック」という概念を用い、「チップタイプモード」で動作する場合、互いに異なるフラッシュメモリチップに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、ある書き込みデータについてフラッシュプログラミングが実行されている途中で、次の書き込みデータに対し、転送先指定やデータ転送等の処理を並行して実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。すなわち、一連のデータ書き込み動作のうち、フラッシュプログラミングには比較的長い時間、典型的には約200μsec程度が必要とされるところ、本実施態様によるフラッシュメモリシステム1によれば、かかるフラッシュプログラミングと並行して他の処理を実行可能であることから、一連のデータ書き込みに要する時間は大幅に短縮される。
【0323】
また、本実施態様によるフラッシュメモリシステム1では、「バンクタイプモード」で動作する場合、互いに異なるバンクに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、各バンクに対するフラッシュプログラミングを一斉に実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。
【0324】
さらに、本実施態様によるフラッシュメモリシステム1では、各ゾーンに含まれる物理ブロックに対して「物理アドレス」を一意に割り当て、アドレス変換においてこれを用いていることから、フラッシュメモリシステム1が「チップタイプモード」で動作する場合のアドレス変換と、「バンクタイプモード」で動作する場合のアドレス変換の大部分を共通化することができる。このため、ROM33に格納すべき変換プログラム(P1〜P3)の容量を大幅に削減することができるとともに、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と、「バンクタイプモード」で動作する場合とで、同じ構造をもったアドレス変換テーブル29及び消去済みブロックキュー32を用いることができる。
【0325】
また、本実施態様によるフラッシュメモリシステム1では、あるゾーンのあるスロットにおいて所定数を超える物理ブロックに不良が発生した場合、当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用していることから、不良ブロックの集中的な発生によりゾーン全体が使用不能となる可能性を大幅に低減することができる。特に、「チップタイプモード」で動作する場合、隣接するスロット以外のスロットに属する物理ブロックが代替ブロックとして優先的に選択されることから、代替ブロックを含む仮想ブロックに対して連続的なデータの書き込みを行う場合であっても、一連の書き込みに要する時間が増大しないか、あるいは僅かな増大に止められる。
【0326】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0327】
例えば、上記実施態様にかかるフラッシュメモリシステム1においては、それぞれ異なるフラッシュメモリチップに属する4個のブロックを仮想的に結合させることによって、4個のセルからなる仮想ブロックを構成しているが、仮想ブロックを構成するセルの数は4個に限定されず、他の数、例えば2個や8個であってもよい。この場合、仮想ブロックを構成するセルの数を搭載されたフラッシュメモリチップの数と一致させることは必須ではなく、仮想ブロックを構成するセルの数を搭載されるフラッシュメモリチップの数よりも少なく設定しても構わない。例えば、フラッシュメモリチップの数が8個である場合に、仮想ブロックを構成するセルの数を4個としてもよい。
【0328】
また、本発明において、搭載されているフラッシュメモリチップが1個である場合のように「チップタイプモード」の選択が不可能な場合においては、モード設定端子#0に対する設定とは無関係に「バンクタイプモード」が選択されるように構成しても構わない。同様に、搭載されているフラッシュメモリチップがバンクタイプではない場合のように「バンクタイプモード」の選択が不可能な場合においては、モード設定端子#0に対する設定とは無関係に「チップタイプモード」が選択されるように構成しても構わない。さらに、搭載されているフラッシュメモリチップが1個であり、且つ、これがバンクタイプではない場合のように、「チップタイプモード」及び「バンクタイプモード」のいずれも選択不可能な場合においては、モード設定端子#0に対する設定とは無関係に、仮想ブロック制御を行わない「通常モード」で動作するように構成しても構わない。
【0329】
また、上記実施態様にかかるフラッシュメモリシステム1においては、「チップタイプモード」及び「バンクタイプモード」のいずれかの動作モードを選択可能に構成されているが、あるフラッシュメモリチップより選ばれたそれぞれ異なるバンクに属する複数の物理ブロックと、異なるフラッシュメモリチップより選ばれたそれぞれ異なるバンクに属する複数の物理ブロックとを仮想的に結合させることによって仮想ブロックを構成する「チップタイプ・バンクタイプ併用モード」を選択可能としても構わない。「チップタイプ・バンクタイプ併用モード」においては、搭載されるフラッシュメモリチップの個数や各フラッシュメモリチップが備えるバンク数を超える数のブロックからなる仮想ブロックを構成することが可能となる。このことは、データ書き込み時において並列処理が可能なページ数が多くなるとともに、データの追加的な書き込みの可能性が高まることを意味するので、データ書き込み処理をより高速に行うことが可能となる。
【0330】
この場合、図28に示されるように、モード設定端子#0の他にモード設定端子#1を使用し、これらモード設定端子#0、#1に対する設定により、「チップタイプモード」、「バンクタイプモード」、「チップタイプ・バンクタイプ併用モード」、「通常モード」のいずれかの動作モードを選択可能とすることが好ましい。
【0331】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各物理ブロックが32個の物理ページによって構成されているが、各物理ブロックを構成する物理ページ数が32個に限定されるものではなく、他の数、例えば、16個や64個であってもよい。
【0332】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3からなる物理ブロック空間を8個のゾーンに分割しているが、ゾーン数は8個には限定されず、他の数、例えば、4個や16個であってもよい。すなわち、物理ブロック空間を分割するゾーン数は、少なければ少ないほど、アドレス変換テーブル29の更新頻度が低くなりアクセス速度の低下が防止されるという利点がある一方、各テーブルが大型化し、SRAMワークエリア8に必要とされる記憶容量が増大するという欠点があり、多ければ多いほど、各テーブルが小型化されSRAMワークエリア8に必要とされる記憶容量を低減することができるという利点がある一方、アドレス変換テーブル29の更新頻度が高くなりアクセス速度が低下するという欠点がある。したがって、物理ブロック空間の分割数(ゾーン数)は、要求されるアクセス速度及びSRAMワークエリア8の記憶容量に基づいて決定すればよい。
【0333】
また、上記実施態様にかかるフラッシュメモリシステム1においては、アドレス変換テーブル29をテーブル#0〜#3からなる4つのテーブルによって構成しているが、アドレス変換テーブル29を構成するテーブルの数は4つには限定されず、他の数、例えば、2つや8つであってもよい。すなわち、アドレス変換テーブル29を構成するテーブルの数は、少なければ少ないほどSRAMワークエリア8に必要とされる記憶容量を低減することができるという利点がある一方、アドレス変換テーブル29の更新頻度が高くなりアクセス速度が低下するという欠点があり、アドレス変換テーブル29を構成するテーブル数は、多ければ多いほどアドレス変換テーブル29の更新頻度が低くなりアクセス速度の低下が防止されるという利点がある一方、SRAMワークエリア8に必要とされる記憶容量が増大するという欠点がある。したがって、アドレス変換テーブル29を構成するテーブルの数は、要求されるアクセス速度及びSRAMワークエリア8の記憶容量に基づいて決定すればよい。
【0334】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、アドレス変換テーブル29構成するテーブル#0〜#3の優先順位を優先リンク31によって決定しているが、優先順位の決定方法としてはこれに限定されず、他の方法、例えば、各テーブル#0〜#3ごとにアクセス数をカウントするカウンタを設け、これらカウンタのカウント値に基づいて優先順位を決定してもよい。
【0335】
また、上記実施態様においては、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3とコントローラ3が、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0336】
さらに、上記実施態様においては、フラッシュメモリシステム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についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0337】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−3の記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0338】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0339】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0340】
また、上記実施態様にかかるフラッシュメモリシステム1においては、消去済みブロックキュー32を8個のキューセットによって構成し、各テーブルに対して2組のキューセットを割り当てているが、各テーブルに対して割り当てられるキューセットの数としては2個に限定されず、他の数、例えば、1個や4個であってもよい。
【0341】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0342】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0343】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash」や、MultiMediaCardAssociationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「SDメモリーカード」などに本発明を適用することが可能である。
【0344】
【発明の効果】
以上説明したように、本発明によれば、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】コントローラ3を構成する半導体チップを概略的に示す上面図である。
【図3】フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図4】書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図5】フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図6】フラッシュメモリチップ2−0のバンク構造を概略的に示す図である。
【図7】冗長領域26のデータ構造を概略的に示す図である。
【図8】フラッシュメモリシステム1が「チップタイプモード」で動作する場合における、ゾーン構成を示す図である。
【図9】フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における、ゾーン構成を示す図である。
【図10】「チップタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【図11】「チップタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【図12】図10に示された仮想ブロックの仮想ページ構造を示す図である。
【図13】「バンクタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【図14】「バンクタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【図15】図13に示された仮想ブロックの仮想ページ構造を示す図である。
【図16】フラッシュメモリシステム1が「チップタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【図17】フラッシュメモリシステム1が「バンクタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【図18】アドレス変換テーブル29のデータ構造を示す概略図である。
【図19】管理テーブル30のデータ構造を示す概略図である。
【図20】優先リンク31のデータ構造を示す概略図である。
【図21】優先リンク31によって、優先順位としてテーブル#0→テーブル#1→テーブル#2→テーブル#3が記憶される場合を示す図である。
【図22】優先リンク31によって、優先順位としてテーブル#2→テーブル#0→テーブル#1→テーブル#3が記憶される場合を示す図である。
【図23】優先リンク31によって、優先順位としてテーブル#3→テーブル#2→テーブル#0→テーブル#1が記憶される場合を示す図である。
【図24】優先リンク31によって、優先順位としてテーブル#1→テーブル#3→テーブル#2→テーブル#0が記憶される場合を示す図である。
【図25】消去済みブロックキュー32のデータ構造を示す概略図である。
【図26】「チップタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【図27】「バンクタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【図28】コントローラ3を構成する半導体チップにモード設定端子#1を付加した例を示す図である。
【符号の説明】
1 フラッシュメモリシステム
2−0〜2−3 フラッシュメモリチップ
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 消去済みブロックキュー
33 ROM

Claims (15)

  1. ホストコンピュータより供給されるホストアドレスに基づいて、複数の物理ブロックからなるメモリにアクセスするメモリコントローラであって、前記複数の物理ブロックを複数のグループに分類する手段と、各グループに含まれる不良物理ブロックの数が所定数以下である場合には、互いに異なるグループに属する複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成し、少なくとも一つのグループに含まれる不良物理ブロックの数が前記所定数を超えている場合には、当該グループより選ばれるべき物理ブロックを他のグループに属する物理ブロックによって代替することにより前記仮想ブロックを形成する手段と、隣り合うホストアドレスを前記仮想ブロック内において互いに異なる物理ブロックに割り当てる手段とを備えるメモリコントローラ。
  2. 前記割り当てる手段が、隣り合うホストアドレスを前記仮想ブロック内において互いに異なるグループに属する物理ブロックに割り当てることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記グループが、前記複数の物理ブロックを少なくともメモリチップ別に分類するものであることを特徴とする請求項1または2に記載のメモリコントローラ。
  4. 前記グループが、前記複数の物理ブロックを少なくともバンク別に分類するものであることを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  5. ホストコンピュータより供給されるホストアドレスに基づいて、複数の物理ブロックからなるメモリにアクセスするメモリコントローラであって、各物理ブロックに含まれる冗長領域に仮想ブロックアドレス及びセル番号を書き込む手段と、同じ仮想ブロックアドレスが書き込まれた複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成する手段と、連続するホストアドレスを、前記仮想ブロック内において、書き込まれているセル番号が連続する物理ブロックにそれぞれ割り当てる手段とを備えるメモリコントローラ。
  6. 前記複数の物理ブロックを複数のゾーンに分類する手段をさらに備え、前記仮想ブロックアドレスとセル番号の組み合わせは、各ゾーン内において一意に割り当てられることを特徴とする請求項5に記載のメモリコントローラ。
  7. 前記各ゾーンに含まれる複数の物理ブロックを複数のグループに分類する手段をさらに備え、前記仮想ブロックを構成する物理ブロックの数と前記グループの数とが一致していることを特徴とする請求項6に記載のメモリコントローラ。
  8. 前記各グループに含まれる複数の物理ブロックは実使用ブロックと冗長ブロックに分類され、所定のグループ内において不良物理ブロックの数が所定数を超えた場合には、前記所定のグループ以外のグループに含まれる冗長ブロックを前記所定のグループ用の冗長ブロックとして代替使用することを特徴とする請求項7に記載のメモリコントローラ。
  9. 前記グループが、前記複数の物理ブロックを少なくともメモリチップ別に分類するものであることを特徴とする請求項8に記載のメモリコントローラ。
  10. 前記グループが、前記複数の物理ブロックを少なくともバンク別に分類するものであることを特徴とする請求項8または9に記載のメモリコントローラ。
  11. 複数の物理ブロックからなるフラッシュメモリチップと、ホストコンピュータより供給されるホストアドレスに基づいて前記フラッシュメモリチップにアクセスするメモリコントローラとを備え、前記コントローラが、前記各物理ブロックに含まれる冗長領域に仮想ブロックアドレス及びセル番号を書き込む手段と、同じ仮想ブロックアドレスが書き込まれた複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成する手段と、連続するホストアドレスを、前記仮想ブロック内において、書き込まれているセル番号が連続する物理ブロックにそれぞれ割り当てる手段とを備えていることを特徴とするフラッシュメモリシステム。
  12. 前記フラッシュメモリチップの数が複数個であることを特徴とする請求項11に記載のフラッシュメモリシステム。
  13. 前記フラッシュメモリチップがバンクタイプであることを特徴とする請求項11または12に記載のフラッシュメモリシステム。
  14. 複数の物理ブロックを有するフラッシュメモリの制御方法であって、前記各物理ブロックに含まれる冗長領域に仮想ブロックアドレス及びセル番号を書き込むステップと、同じ仮想ブロックアドレスが書き込まれた複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成するステップと、連続するホストアドレスを、前記仮想ブロック内において、書き込まれているセル番号が連続する物理ブロックにそれぞれ割り当てるステップとを備えるフラッシュメモリの制御方法。
  15. 複数の物理ブロックを有するフラッシュメモリの制御方法であって、前記複数の物理ブロックを複数のゾーンに分類するステップと、前記各ゾーンに含まれる複数の物理ブロックを複数のグループに分類するステップと、前記各グループに含まれる複数の物理ブロックを実使用ブロックと冗長ブロックに分類するステップと、各グループに含まれる不良物理ブロックの数が所定数以下である場合には、互いに異なるグループに属する複数の冗長ブロックを関連づけてキューに登録するステップと、所定のグループに含まれる不良物理ブロックの数が前記所定数を超えている場合には、前記所定のグループ以外のグループに属する冗長ブロックを関連づけて前記キューに登録するステップとを備えることを特徴とするフラッシュメモリの制御方法。
JP2001204171A 2001-07-05 2001-07-05 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Expired - Fee Related JP4220690B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2003015947A JP2003015947A (ja) 2003-01-17
JP4220690B2 true JP4220690B2 (ja) 2009-02-04

Family

ID=19040678

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4220690B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
JP2007199905A (ja) 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
JP4710918B2 (ja) * 2008-02-20 2011-06-29 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US7835207B2 (en) * 2008-10-07 2010-11-16 Micron Technology, Inc. Stacked device remapping and repair
CN102272730B (zh) 2008-10-09 2017-05-24 美光科技公司 经虚拟化错误校正码nand
JP2014238871A (ja) * 2014-08-01 2014-12-18 マイクロン テクノロジー, インク. 単一の仮想化されたeccアルゴリズムを提供するコントローラと、このコントローラを含む記憶システム、及びこの記憶システムを管理する方法

Also Published As

Publication number Publication date
JP2003015947A (ja) 2003-01-17

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
JP4165990B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法
JP2647312B2 (ja) 一括消去型不揮発性半導体記憶装置
JP3942807B2 (ja) ブロックアラインメント機能付き半導体記憶装置
JP2001243110A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法
JP2000067574A (ja) 半導体記憶装置
JPH08137634A (ja) フラッシュディスクカード
JPH10124381A (ja) 半導体記憶装置
KR20030011230A (ko) 비휘발성 기억 장치 및 그의 재기입 제어 방법
JP3621051B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4220690B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4248772B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4316824B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4233213B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3999959B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US20100042798A1 (en) Methods and Apparatus for Passing Information to a Host System to Suggest Logical Locations to Allocate to a File
JP2003122630A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JPH11328990A (ja) 半導体集積回路装置およびそれを用いたメモリカード
JP4042898B2 (ja) メモリコントローラ及びこれを備えるメモリシステム並びにフラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JPH09198201A (ja) 半導体ディスク装置およびその書換回数管理方法
JP2006099594A (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

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

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

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

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees