JP3621051B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP3621051B2 JP3621051B2 JP2001129160A JP2001129160A JP3621051B2 JP 3621051 B2 JP3621051 B2 JP 3621051B2 JP 2001129160 A JP2001129160 A JP 2001129160A JP 2001129160 A JP2001129160 A JP 2001129160A JP 3621051 B2 JP3621051 B2 JP 3621051B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- page
- data
- flash memory
- stored
- 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 - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【0002】
【従来の技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリ、特にNAND型フラッシュメモリが用いられることが多い。NAND型フラッシュメモリは、メモリセルを消去状態(論理値=1)から書込状態(論理値=0)に変化させる場合は、これをメモリセル単位で行うことが可能である一方、メモリセルを書込状態(0)から消去状態(1)に変化させる場合は、これをメモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれる。
【0003】
このように、フラッシュメモリでは、ブロック単位でしかメモリセルを書込状態から消去状態に変化させることができないので、既にデータの書き込まれたブロックに対して新しいデータを書き込むためには、一旦、このブロックに含まれるメモリセルを全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。したがって、すでにデータが格納されているブロックに新しいデータを書き込む場合、このブロックにすでに格納されているデータが消失するのを防ぐためには、このブロックに含まれるデータを、他の消去済みブロックに移動させる必要がある。
【0004】
このため、すでにデータが格納されているブロックに新しいデータを書き込むようホストコンピュータから指示されると、当該新しいデータと、このブロックにすでに格納されているデータとが、消去済みブロックに書き込まれる。かかる処理は、「ブロック間転送」と呼ばれる。その後、転送元のブロックに含まれるメモリセルが全て消去状態とされ、これにより、転送元のブロックは新たに消去済みブロックとなる。
【0005】
このように、従来のフラッシュメモリシステムにおいては、すでにデータが格納されているブロックに新しいデータを書き込むよう、ホストコンピュータから要求されるたびにブロック間転送を実行する必要があった。
【0006】
【発明が解決しようとする課題】
しかしながら、一連のブロック間転送処理には、多くの時間を要するという問題がある。
【0007】
すなわち、ブロック間転送処理においては、転送元ブロックに格納されているデータをメモリコントローラが読み出し、かかるデータを転送先のブロックに書き込むという処理を1ページずつ行う必要があるため、転送元ブロックの各ページに格納されているデータを全て転送先のブロックに転送するには、1ブロックを構成するページ数にほぼ比例した時間が必要となってしまう。
【0008】
したがって、ホストコンピュータから書き込みを要求されたデータがたとえ1ページ分のデータであっても、当該データを書き込むべきブロックにすでに何らかのデータが格納されていれば、一連の処理が完了するまでには多大な時間が必要となっていた。
【0009】
このため、ホストコンピュータからデータの書き込みが要求された場合に、当該データの書き込みに必要な一連の処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法が望まれていた。
【0010】
したがって、本発明の目的は、ホストコンピュータからデータの書き込みを要求された場合に、当該データを書き込むべきブロックにすでに何らかのデータが格納されている場合であっても、与えられたデータの書き込みに必要な一連の処理をより高速に行うことができるメモリコントローラ及びこのようなメモリコントローラを備えるフラッシュメモリシステムを提供することである。
【0011】
また、本発明の他の目的は、ホストコンピュータからデータの書き込みを要求された場合に、当該データを書き込むべきブロックにすでに何らかのデータが格納されている場合であっても、与えられたデータの書き込みに必要な一連の処理をより高速に行うことができるフラッシュメモリの制御方法を提供することである。
【0012】
【課題を解決するための手段】
本発明のかかる目的は、複数のブロックからなるメモリにアクセスするメモリコントローラであって、既にデータが格納されている第1のブロックに対応する論理アドレスに対して、新たに新データの書き込みが指示されたことに応答して、前記第1のブロックに格納されているデータの一部を第2のブロックの同じページに転送する第1の手段と、前記新データを前記第2のブロックに書き込む第2の手段と、前記第1のブロックと前記第2のブロックとの対応関係を保持する第3の手段と、前記論理アドレスに対して、さらに、新たに追記データの書き込みが指示されたことに応答して、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断する第4の手段と、前記第4の手段が追加的に書き込み可能であると判断したことに応答して、前記第1のブロックに格納されているデータの一部を前記第2のブロックの同じページに転送するとともに、前記追記データを前記第2のブロックに書き込む第5の手段と、前記第4の手段が追加的に書き込み不可能であると判断したことに応答して、前記第2のブロック中の全ての空きページに、前記第1のブロックの同じページに格納されているデータを転送する第6の手段と、前記第2のブロックの全てのページにデータが書き込まれたことに応答して、前記第1のブロックをブロック消去する第7の手段とを備えたことを特徴とするメモリコントローラによって達成される。
【0013】
本発明の好ましい実施態様においては、前記第1の手段が、前記第1のブロックの先頭ページから前記新データを格納すべきページに対応するページの一つ前のページに格納されているデータを、前記第2のブロックの同じページに転送するように構成されている。
【0014】
本発明のさらに好ましい実施態様においては、前記第3の手段が、さらに、前記第2のブロックの空きページに関する情報を保持し、前記第4の手段が、前記空きページに関する情報に基づき、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断するように構成されている。
【0015】
本発明のさらに好ましい実施態様においては、前記第2のブロックにおける前記空きページが、前記第2の手段により前記新データが書き込まれたページの次のページから最終ページまで連続している。
【0016】
本発明のさらに好ましい実施態様においては、前記第2のブロックにおける前記追記データを格納するべきページが前記空きページでない場合に、前記第6の手段が、前記第2のブロック中の空きページに前記第1のブロックの同じページに格納されているデータを転送し、その後に、前記第7の手段が、前記第1のブロックに格納されているすべての前記データを消去するように構成されている。
【0017】
本発明のさらに好ましい実施態様においては、メモリコントローラは、さらに、前記第2のブロックにおける前記追記データを格納するべきページが前記空きページでない場合に、前記第2のブロックに格納されているデータの一部を第3のブロックの同じページに転送する第8の手段と、前記追記データを前記第3のブロックに書き込む第9の手段とを備え、前記第3の手段が、さらに、前記第2のブロックと前記第3のブロックとの対応関係を保持するように構成されている。
【0018】
本発明のさらに好ましい実施態様においては、前記第3の手段が、さらに、前記第3のブロックの空きページに関する情報を保持している。
【0019】
本発明のさらに好ましい実施態様においては、メモリコントローラは、さらに、前記追記データの書き込み先のページが、前記第2のブロックにおける空きページ群の先頭ページか否かを判断する第10の手段を備え、前記第10の手段が前記書き込み先のページが前記先頭ページでないと判断したことに応答して、前記第5の手段が、前記空きページ群の先頭ページから前記追記データの書き込み先の一つ前のページに対応する各ページに、前記第1のブロックの同じページに格納されているデータを転送するように構成されている。
【0020】
本発明の前記目的はまた、複数のブロックからなるメモリにアクセスするメモリコントローラであって、前記各ブロックを複数のグループに分類する手段と、
互いに異なるグループに属する複数のブロックを仮想的に結合することにより仮想ブロックを形成する手段と、前記仮想ブロックを構成する所定のブロックに対して、新たに新データの書き込みが指示されたことに応答して、前記所定のブロックに格納されているデータの一部を他のブロックに転送する手段と、新たに書き込みが指示された前記新データを前記他のブロックに書き込む手段と、前記所定のブロックと前記他のブロックとの対応関係を保持する手段と、前記新データの後に、追記データが与えられて、前記所定のブロックに対応する論理アドレスに対して、前記追記データの書き込みが指示されたことに応答して、前記追記データが前記他のブロックに前記追記データを追加的に書き込み可能か否かを判断する手段と、前記他のブロックに前記追記データが追加的に書き込み可能であると判断されたことに応答して、前記所定のブロックに格納されているデータの一部を前記他のブロックの同じページに転送するとともに、前記追記データを前記他のブロックに書き込む手段と、前記他のブロックに前記追記データを追加的に書き込み不可能であると判断されたことに応答して、前記他のブロック中の全ての空きページに、前記所定のブロックの同じページに格納されているデータを転送する手段と、前記他のブロックの全てのページにデータが書き込まれたことに応答して、前記所定のブロックをブロック消去する手段とを備えたことを特徴とするメモリコントローラによって達成される。
【0021】
本発明の前記目的はまた、前記メモリコントローラのいずれかと、複数のブロックからなるフラッシュメモリとを備えたことを特徴とするフラッシュメモリシステムによって達成される。
【0022】
本発明の好ましい実施態様においては、前記フラッシュメモリシステムが、同一の筐体に収容されている。
【0023】
本発明のさらに好ましい実施態様においては、前記筐体がカード状をなしている。
【0024】
本発明の好ましい実施態様においては、前記第3の手段が、前記第2のブロックの空きページに関する情報をさらに保持している。
【0025】
本発明の前記目的は、所定の論理アドレスに対して、新たに新データの書き込みが指示されたことに応答して、アドレス変換テーブル内の前記所定の論理アドレスに対応するブロックを第1のブロックから第2のブロックに変更するステップと、前記第1のブロックと前記第2のブロックの対応関係を示す変数を作成するステップと、前記第1のブロックに格納されているデータの一部を第2のブロックに転送するステップと、前記新データを前記第2のブロックに書き込むステップと、前記所定の論理アドレスに対して、さらに、新たな追記データの書き込みが指示されたことに応答して、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断するステップと、前記追記データを追加的に書き込み可能であると判断したことに応答して、前記第1のブロックに格納されているデータの一部を前記第2のブロックの同じページに転送するとともに、前記追記データを前記第2のブロックに書き込むステップと、前記追記データを追加的に書き込み可能でないと判断したことに応答して、前記第2のブロック中の全ての空きページに、前記第1のブロックの同じページに格納されているデータを転送するステップと、前記第2のブロックの全てのページにデータが書き込まれたことに応答して、前記第1のブロックをブロック消去するステップとを備えたことを特徴とするフラッシュメモリの制御方法によって達成される。
【0038】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【0039】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0040】
フラッシュメモリシステム1はカード形状であり、図1に示されるように、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0041】
各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップである。フラッシュメモリシステム1においては、512バイトを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ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0042】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0043】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0044】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0045】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0046】
バッファ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に保持される。
【0047】
フラッシュメモリインターフェースブロック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を制御するための「外部コマンド」と区別される。
【0048】
ECCブロック11は、フラッシュメモリチップ2−0〜2−3に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0049】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−3とバッファ9とのデータの転送を制御するための機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−3からのデータの読み出しまたはフラッシュメモリチップ2−0〜2−3へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【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】
図2に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。消去状態におけるフラッシュメモリセル16は、デプレッション型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0055】
図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0056】
図3に示されるように、書込状態とは、フローティングゲート電極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】
図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0061】
図4に示されるように、フラッシュメモリチップ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】
さらに、図4に示されるように、フラッシュメモリチップ2−0を構成する各ブロック#0〜#8191は、それぞれページ#0〜#31からなる32個のページによって構成されている。また、フラッシュメモリチップ2−1〜2−3を構成する各ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各ブロック#0〜#8191と同様に、それぞれ32個のページによって構成されている。
【0064】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図4に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域であり、冗長領域26は、対応するユーザ領域25に格納されたユーザデータに対するエラーコレクションコードの他、対応論理ブロックアドレスが格納される領域である。対応論理ブロックアドレスとは、当該ブロックがいかなる論理ブロックアドレスによりアクセスされるかを示す情報であり、その詳細については後述する。
【0065】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。
【0066】
このように、各フラッシュメモリチップ2−0〜2−3は8192個の物理ブロックによって構成されるが、このうち、8000個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの192個のブロックは「冗長ブロック」として取り扱われる。冗長ブロックは、データ書き込みに備えて待機している空きブロックである。フラッシュメモリチップ2−0〜2−3のアドレス空間は、実使用ブロックのみによって構成される。ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生したブロックの数だけ冗長ブロックとして割り当てられる物理ブロックの数が減らされる。
【0067】
このような構成からなるフラッシュメモリチップ2−0〜2−3は、上述のとおり、1Mページのアドレス空間を備える一つの大きなメモリとして取り扱われるので、これら1Mページからなるアドレス空間から特定のページにアクセスするためには、上述のとおり、20ビットのホストアドレスが用いられる。20ビットのホストアドレスのうち、上位15ビットは、フラッシュメモリチップの特定及び特定されたフラッシュメモリチップに含まれるブロックの特定に用いられ、残りの5ビット(下位5ビット)は、特定されたブロックに含まれるページの特定に用いられる。
【0068】
ホストアドレスの上位15ビットを用いたフラッシュメモリチップ及びブロックの特定は、ホストアドレスの上位15ビットを「8000」で除することによって行われ、かかる除算によって得られた商(0〜3)によってアクセスすべきフラッシュメモリチップが決定され、剰余(0〜7999)によって「論理ブロックアドレス」が決定される。かかる論理ブロックアドレスは、後述する「アドレス変換テーブル」にて、「物理ブロックアドレス」に変換され、これにより実際にアクセスすべきブロックが特定される。
【0069】
ここで、アドレス変換テーブルを用いて論理ブロックアドレスを物理ブロックアドレスに変換する必要性について説明する。
【0070】
上述のとおり、フラッシュメモリチップ2−0〜2−3を構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、ブロック単位でしか行うことができない。このため、あるページにデータを書き込む際には、そのページのユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれているページ、すなわち、そのページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっているページに、これと異なるデータを直接上書きすることはできない。したがって、既にデータの書き込まれたページに対し、これと異なる新しいデータを書き込むためには、一旦、このページが属するブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。
【0071】
したがって、あるページに格納された古いデータに新しいデータを上書きしようとする場合、このページが属するブロックに含まれる他のページに格納されたデータが消失するのを防ぐためには、当該他のページに格納されたデータを、他のブロックに移動させるという処理が必要となる。したがって、ホストアドレスより得られた論理ブロックアドレスと、当該論理ブロックアドレスに対応するフラッシュメモリチップ2−0〜2−3上の物理ブロックアドレスとの関係は、ホストコンピュータ5からデータの上書きが指示される度に動的に変化する。このような理由から、ホストコンピュータ5からフラッシュメモリチップ2−0〜2−3をアクセスするためには、論理ブロックアドレスと、当該論理ブロックアドレスに対応するフラッシュメモリ上の物理ブロックアドレスとの関係を示す情報が格納されるアドレス変換テーブルが必要となるのである。アドレス変換テーブルの詳細については後述する。
【0072】
次に、SRAMワークエリア8に格納される各種作業データについて説明する。SRAMワークエリア8には、少なくとも、アドレス変換テーブル27、消去済みブロックキュー28及び内部変数30が格納される。
【0073】
図5は、SRAMワークエリア8に格納されるアドレス変換テーブル27のデータ構造を示す概略図である。
【0074】
図5に示されるように、アドレス変換テーブル27は、テーブル#0〜#3からなる4つのテーブルによって構成され、これら各テーブルは、8000個のフラグ及び8000個の物理ブロックアドレス格納領域によって構成される。これらテーブル#0〜#3は、それぞれフラッシュメモリチップ2−0〜2−3に対応している。
【0075】
各テーブル#0〜#3内の8000個の物理ブロックアドレス格納領域#0〜#7999には、それぞれ対応する物理ブロックアドレス(13ビット)が格納され、これによって、論理ブロックアドレスと物理ブロックアドレスとの対応関係を示すアドレス変換情報が形成される。すなわち、テーブル#0内の物理ブロックアドレス格納領域#0〜#7999には、フラッシュメモリチップ2−0を構成する8000個の実使用ブロックの物理ブロックアドレスが割り当てられ、これら割り当てられた論理ブロックアドレスと、これに格納された物理ブロックアドレスとが、対応関係を有することになる。同様に、テーブル#1〜#3内の物理ブロックアドレス格納領域#0〜#7999には、それぞれフラッシュメモリチップ2−1〜2−3を構成する8000個の実使用ブロックの物理ブロックアドレスが割り当てられる。
【0076】
例えば、ホストコンピュータ5から供給されたホストアドレスの上位15ビットが「101010101010101B」であれば、これを8000で除した場合の商は「2」であり、剰余は「5845」であるから、テーブル#2内の物理ブロックアドレス格納領域#5845が選択され、ここに格納されている物理ブロックアドレス、例えば、格納されている物理ブロックアドレスが「0000000011111B」であれば、物理ブロックアドレスとして「31」が読み出され、これにより、フラッシュメモリチップ2−2における論理ブロックアドレス#5845から、フラッシュメモリチップ2−2における物理ブロックアドレス#31への変換が完了する。
【0077】
また、各テーブル#0〜#3内の8000個のフラグ#0〜#7999は、当該テーブル内の物理ブロックアドレス格納領域#0〜#7999にそれぞれ対応しており、対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値であるか否かを示す。具体的には、かかるフラグが「1」であれば対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値であることを示し、かかるフラグが「0」であれば対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値ではないことを示す。したがって、対応するフラグが「0」である論理ブロックアドレスには、まだ物理ブロックアドレスが関連づけられていないことを意味する。
【0078】
上述のように、アドレス変換テーブル27は、32000個のフラグと32000個の物理ブロック格納領域によって構成されており、各フラグには1ビットの情報を格納する必要があり、各物理ブロック格納領域には13ビットの情報を格納する必要があるから、アドレス変換テーブル27は、SRAMワークエリア8の記憶容量のうち、約56kバイトを占有することとなる。
【0079】
アドレス変換テーブル27の生成は、次のように行われる。
【0080】
フラッシュメモリチップ2−0〜2−3を構成する各ブロックのうち、データが格納されているブロックの各先頭ページ(ページ#0)に含まれる冗長領域26には、上述のとおり、当該ブロックがいかなる論理ブロックアドレスに対応するかを示す対応論理ブロックアドレスが含まれており、各ブロックの各先頭ページに格納されている対応論理ブロックアドレスがマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。対応論理ブロックアドレスが読み出されると、マイクロプロセッサ6による制御のもと、当該ブロックが消去済みの空きブロックであるか否かが判断される。
【0081】
ここで、消去済みの空きブロックにおいては、冗長領域26に格納されている対応論理ブロックアドレスは「オール1(1111111111111B)」となっているはずである。すなわち、対応論理ブロックアドレスは、上述のとおり、#0(0000000000000B)〜#7999(1111100111111B)までしかなく、したがって、これがオール1(1111111111111B)である場合には、当該ブロックが消去済みの空きブロックであると判断することができる。一方、対応論理ブロックアドレスが「0000000000000B」〜「1111100111111B」である場合には、当該対応論理ブロックアドレスは有効な論理ブロックアドレスである。
【0082】
したがって、マイクロプロセッサ6は、各ブロックのページ#0〜#3の冗長領域26に含まれる対応論理ブロックアドレスを参照し、これがオール1ではなく有効な論理ブロックアドレスの番号を示していれば、チップ番号に対応するテーブルに属する物理ブロックアドレス格納領域のうち、読み出された対応論理ブロックアドレスと同じ論理ブロックアドレスが割り当てられた物理ブロックアドレス格納領域に、かかる対応論理ブロックアドレスを読み出したブロックの物理ブロックアドレスを格納するとともに、対応するフラグを「1」とする。例えば、対応論理ブロックアドレスを読み出したブロックがフラッシュメモリチップ2−0に属し、その物理ブロックアドレスが「10」であり、読み出された対応論理ブロックアドレスが「123」であれば、テーブル#0に属する物理ブロックアドレス格納領域のうち、論理ブロックアドレスとして「123」が割り当てられた物理ブロックアドレス格納領域#123に、物理ブロックアドレスとして「10」が書き込まれ、さらに、対応するフラグ#123が「1」にされる。
【0083】
以上のような処理が、データの格納されている全てのブロックについて行われ、これによりアドレス変換テーブル27の作成作業が完了する。
【0084】
次に、SRAMワークエリア8に格納される消去済みブロックキュー28のデータ構造について説明する。
【0085】
図6は、SRAMワークエリア8に格納される消去済みブロックキュー28のデータ構造を示す概略図である。
【0086】
図6に示されるように、消去済みブロックキュー28は、キュー#0〜#7からなる8つのキューによって構成される。これら各キュー#0〜#7は、それぞれSRAMワークエリア8の2バイトの記憶領域を使用しており、それぞれには物理ブロックアドレスが13ビットのデータによって格納されている。したがって、消去済みブロックキュー28は、SRAMワークエリア8の記憶容量のうち、16バイトを占有することとなる。
【0087】
消去済みブロックキュー28を構成するキュー#0〜#7のうち、キュー#0及び#1は、フラッシュメモリ2−0用のキューであり、キュー#0及び#1には、フラッシュメモリ2−0に含まれる消去済みブロック、すなわち、ユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっているブロックの物理ブロックアドレスが格納される。同様に、キュー#2及び#3は、フラッシュメモリ2−1用のキューであり、キュー#4及び#5は、フラッシュメモリ2−2用のキューであり、キュー#6及び#7は、フラッシュメモリ2−3用のキューである。
【0088】
消去済みブロックキュー28の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル27の生成の際に行われる。
【0089】
すなわち、フラッシュメモリチップ2−0〜2−3を構成する各ブロックのページ#0〜ページ#3に含まれる冗長領域26には、上述のとおり、対応論理ブロックアドレスが含まれており、アドレス変換テーブル27が生成される際、マイクロプロセッサ6による制御のもと、対応論理ブロックアドレスが「オール1(1111111111111B)」となっているブロックが検索される。かかる検索により、各フラッシュメモリチップついて、最大192個の消去済みブロックが検出されて冗長ブロックとなり、さらにこの中から最大2つの冗長ブロックが選択されて、その物理ブロックアドレスが、対応するフラッシュメモリチップ用の2つのキューに格納される。
【0090】
次に、SRAMワークエリア8に格納される内部変数30のデータ構造について説明する。
【0091】
図7は、SRAMワークエリア8に格納される内部変数30のデータ構造を示す概略図である。
【0092】
図7に示されるように、内部変数30は、変数#0〜#3によって構成される。これら変数#0〜#3は、それぞれフラッシュメモリチップ#2−0〜#2−3用の変数であり、それぞれ転送先ブロックアドレス格納領域31、転送元ブロックアドレス格納領域32、スタートページ格納領域33及びフラグ34によって構成されている。転送先ブロックアドレス格納領域31及び転送元ブロックアドレス格納領域32には、いずれも物理ブロックアドレスが13ビットのデータによって格納されており、スタートページ格納領域33には、ページ番号が5ビットのデータによって格納されている。また、フラグ34は1ビットのデータである。したがって、内部変数30は、SRAMワークエリア8の記憶容量のうち、16バイトを占有することとなる。
【0093】
転送先ブロックアドレス格納領域31に格納された物理ブロックアドレスは、以下に詳述する「部分転送」において転送先となったブロックの物理ブロックアドレスであり、転送元ブロックアドレス格納領域32に格納された物理ブロックアドレスは、「部分転送」において転送元となったブロックの物理ブロックアドレスである。また、スタートページ格納領域33に格納されたページ番号は、転送先ブロックアドレス格納領域31に格納された物理ブロックアドレスにより示される物理ブロック内のページ#0〜#31のうち、最終ページ(ページ#31)を含む1または2以上の連続した空きページ中の先頭のページのページ番号である。したがって、上記物理ブロック内において、スタートページ以降のページは、データの格納されていない空きページであることが保証される。また、フラグ34は、「1」であれば、対応する転送先ブロックアドレス格納領域31、転送元ブロックアドレス格納領域32及びスタートページ格納領域33の内容が有効であることを示し、「0」であればこれらが有効な値ではないことを示す。
【0094】
次に、本実施態様にかかるフラッシュメモリシステム1によるデータの書き込み動作について説明する。
【0095】
本実施態様にかかるフラッシュメモリシステム1によるデータの書き込み動作は、新規書込動作、部分転送動作、追書込動作の3つに分類される。
【0096】
図8は、いずれの書込動作が行われるかを決定するためのフローチャートである。以下、図8に示されるフローチャートを参照しながら、いずれの書込動作が選択されるかについて説明する。
【0097】
まず、ホストコンピュータ5より、ホストアドレス及び外部書き込みコマンドがコントローラ3に供給されると(ステップS1)、これらホストアドレス及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、ECCブロック11に送出される。書き込みデータの供給を受けたECCブロック11は、これを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0098】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが正しいアドレスであるか否か、すなわち、これらホストアドレスが、本来存在しないアドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0099】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、ホストアドレスが内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータ5は、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0100】
内部アドレスへの変換は、次のように行われる。
【0101】
まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位15ビットが取り出され、これが「8000」で除される(ステップS2)。かかる除算によって得られた商(0〜3)及び剰余(0〜7999)は、それぞれ「チップ番号」及び「論理ブロックアドレス」となり、かかるチップ番号及び論理ブロックアドレスに基づいて、アドレス変換テーブル27内の対応するフラグが読み出される(ステップS3)。例えば、ホストアドレスの上位15ビットが「000000111110100B」であれば、8000で除した場合の商は「00B(0)」であり、剰余は「0111110100B(500)」であるから、この場合、チップ番号は#0、論理ブロックアドレスは#500となり、これに基づいてテーブル#0内のフラグ#500が読み出される。
【0102】
このようにして、アドレス変換テーブル27内の対応するフラグが読み出されると、次に、その内容が「1」であるか「0」であるかが判断される(ステップS4)。その結果、読み出されたフラグの内容が「0」であれば、対応する物理ブロックアドレス格納領域に有効な物理ブロックアドレスが格納されていないことを意味するので、新規書込動作が選択される(ステップS5)。新規書込動作の詳細については後述する。
【0103】
一方、読み出されたフラグの内容が「1」であれば、対応する物理ブロックアドレス格納領域に有効な物理ブロックアドレスが格納されていることを意味するので、その内容が読み出される。読み出された13ビットの物理ブロックアドレスは、チップ番号及びホストアドレスの下位5ビットとともに、内部アドレスを構成する。以上により、内部アドレスへの変換が完了する(ステップS6)。
【0104】
次に、チップ番号(内部アドレスの上位2ビット)に基づいて、内部変数30内の対応するフラグ34が読み出される(ステップS7)。例えば、チップ番号が「00B(0)」であれば、変数#0に含まれるフラグ34が読み出される。このようにして、内部変数30内の対応するフラグ34が読み出されると、次に、その内容が「1」であるか「0」であるかが判断される(ステップS8)。その結果、読み出されたフラグ34の内容が「0」であれば、以下に詳述する部分転送動作が選択される(ステップS9)。
【0105】
一方、読み出されたフラグ34の内容が「1」であれば、追書込動作の実行が可能であるか否かを判定する追書込判定(ステップS10)が行われ、かかる判定において追書込動作の実行が可能であると判定されれば、以下に詳述する追書込動作が選択され、追書込動作の実行が不可能であると判定されれば、部分転送動作が選択される。
【0106】
以上のようにして、新規書込動作、部分転送動作、追書込動作のいずれを実行すべきかが決定される。
【0107】
次に、新規書込動作について説明する。
【0108】
図9は、新規書込動作を示すフローチャートである。
【0109】
図9に示されるように、新規書込動作(ステップS5)においては、まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー28を構成するキュー#0〜#7のうち所定のキューが選択され、格納されている物理ブロックアドレスが読み出される(ステップS11)。上述のとおり、消去済みブロックキュー28の各キューに格納された物理ブロックアドレスは、消去済みブロック、すなわち、ユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっているブロックの物理ブロックアドレス(13ビット)である。
【0110】
消去済みブロックの物理ブロックアドレスが読み出されると、これがアドレス変換テーブル27内の対応する物理ブロックアドレス格納領域に格納されるとともに、対応するフラグが「1」に書き換えられる(ステップS12)。例えば、上述の例と同様に、ホストアドレスの上位15ビットが「000000111110100B」であれば、8000で除した場合の商は「00B(0)」であり、剰余は「0111110100B(500)」であるから、アドレス変換テーブル27のテーブル#0内の物理ブロックアドレス格納領域#500に消去済みブロックの物理ブロックアドレスが格納されるとともに、テーブル#0内のフラグ#500が「1」に書き換えられる。
【0111】
そして、マイクロプロセッサ6による制御のもと、チップ番号、物理ブロックアドレス、及びホストアドレスの下位5ビットがこの順に結合され、結合されたアドレスは内部アドレスとなる(ステップS13)。
【0112】
このようにして内部アドレスの生成が完了すると、次にマイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する所定の設定がなされ、完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される(ステップS14)。これにより、内部アドレスにより示される所定のブロックの所定のページに対して、ホストコンピュータ5より与えられたユーザデータが書き込まれる。
【0113】
この場合、書き込みの対象となったブロックに対しては、ユーザデータの書き込み対象となったページのみならず、当該ブロックを構成する全てのページ#0〜#31の冗長領域26に対応論理ブロックアドレスが書き込まれる。これにより、当該ブロックは「使用済みブロック」となり、以後、ユーザデータを直接上書きすることはできなくなる。
【0114】
以上により、新規書込動作(ステップS5)が完了する。
【0115】
次に、部分転送動作について説明する。
【0116】
図10は、部分転送動作を示すフローチャートであり、図11(a)及び(b)は、部分転送動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【0117】
図10に示されるように、部分転送動作(ステップS9)においては、まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー28を構成するキュー#0〜#7のうち所定のキューが選択され、格納されている物理ブロックアドレスが読み出される(ステップS21)。
【0118】
消去済みブロックの物理ブロックアドレスが読み出されると、これに基づいて内部変数30が更新される(ステップS22)。ここで、内部変数30の更新においては、まずチップ番号に基づいて変数#0〜#3のいずれかが選択され、選択された変数を構成する転送先ブロックアドレス格納領域31に消去済みブロックキュー28より読み出された物理ブロックアドレスが格納され、転送元ブロックアドレス格納領域32にアドレス変換テーブル27より読み出された物理ブロックアドレスが格納され、スタートページ格納領域33に書き込み対象のページ(ページ#i)の次のページのページ番号(ページ#i+1)が格納される。また、フラグ34が「1」にセットされる。ここで、書き込み対象のページ(ページ#i)とは、内部アドレスの下位5ビットにより特定されるページを指す。以下、転送先ブロックアドレス格納領域31に格納された物理ブロックアドレスにより特定されるブロックを「転送先ブロック」と呼び、転送元ブロックアドレス格納領域32に格納された物理ブロックアドレスにより特定されるブロックを「転送元ブロック」と呼ぶ。
【0119】
内部変数30の更新が完了すると、次に、アドレス変換テーブル27の更新が行われる(ステップS23)。アドレス変換テーブル27の更新においては、対応する物理ブロックアドレス格納領域に、消去済みブロックキュー28より読み出された物理ブロックアドレスが上書きされる。
【0120】
次に、転送元ブロック内のページ#0から書き込み対象のページ(ページ#i)の1つ前のページ(ページ#i−1)までのページに格納されたデータが、転送先ブロックの同じページに転送される(ステップS24)。すなわち、ブロック間転送の前半部分の動作が行われる。ステップS24が完了すると、図11(a)に示されるように、転送先ブロックのページ#0〜#i−1が有効ページ(ハッチングされた部分)となり、ページ#i〜#31が空きページとなる。ここで、「有効ページ」とは、実際に有効なユーザデータが格納されているか否かを問わず、書き込み動作が禁止されるページを意味する。有効ページには、対応する冗長領域26に対応論理ブロックアドレスが書き込まれており、空きページには、対応する冗長領域26内の対応論理ブロックアドレスがオール1(1111111111111B)となっている。
【0121】
ステップS24が完了すると、次に、ホストコンピュータ5より書き込みが指示されたデータが、転送先ブロックの書き込み対象のページ(ページ#i)に書き込まれる(ステップS25)。ステップS25が完了すると、図11(b)に示されるように、転送先ブロックのページ#0〜#iが有効ページとなり、ページ#i+1〜#31が空きページとなる。
【0122】
以上により、部分転送動作(ステップS9)が完了する。部分転送動作においては、ブロック間転送の後半部分の動作が省略されている点が重要である。したがって、部分転送動作が行われた場合、ある論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態となる。
【0123】
次に、追書込判定について説明する。
【0124】
図12は、追書込判定を示すフローチャートである。
【0125】
図12に示されるように、追書込判定(ステップS10)においては、まず、チップ番号(内部アドレスの上位2ビット)に基づいて、内部変数30内の対応する転送先ブロックアドレス格納領域31の内容が読み出される(ステップS31)。次に、読み出された13ビットの物理ブロックアドレスと、アドレス変換テーブル27より読み出された物理ブロックアドレスとが比較され、これらが一致している否かが判断される(ステップS32)。
【0126】
その結果、両者が一致しない場合、転送元ブロックアドレス格納領域32及びスタートページ格納領域33の内容が読み出され(ステップS33)、転送元ブロック内のページ#i+1から最終ページ(ページ#31)までのページに格納されたデータが、転送先ブロックの同じページに転送される(ステップS34)。すなわち、ブロック間転送の後半部分の動作が行われる。
【0127】
図13は、ステップS34における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【0128】
図13に示されるように、ステップS34においては、上述した部分転送動作(ステップS9)において省略されたブロック間転送の後半部分の動作が行われ、これにより、転送先ブロックを構成する全てのページ#0〜#31が有効ページとなる。
【0129】
ステップS34が完了すると、次に、転送元ブロックがブロック消去されて、新たな空きブロックとされ(ステップS35)、さらに、対応するフラグ34が「0」にリセットされる(ステップS36)。これにより、1つの論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態が解消される。その後、上述した部分転送動作(ステップS9)が行われ、これにより、ホストコンピュータ5より書き込みが指示されたデータが所定のブロックに書き込まれる。
【0130】
一方、ステップS32における判定の結果、両者が一致した場合には、スタートページ格納領域33の内容が読み出され(ステップS37)、内部アドレスの下位5ビット、すなわち書き込み対象のページ(ページ#j)と、スタートページ(ページ#i+1)とが比較される(ステップS38)。
【0131】
その結果、書き込み対象のページ(ページ#j)のページ番号がスタートページ(ページ#i+1)のページ番号よりも小さければ、上述したステップS33〜S36が実行され、その後部分転送動作(ステップS9)が実行される。一方、書き込み対象のページ(ページ#j)のページ番号がスタートページ(ページ#i+1)のページ番号と同じかそれ以上であれば、以下に詳述する追書込動作が選択される(ステップS39)。
【0132】
以上により、追書込判定(ステップS10)が完了する。このように、追書込判定(ステップS10)においては、追書込動作(ステップS39)及び部分転送動作(ステップS9)のいずれかが選択されることになる。
【0133】
次に、追書込動作について説明する。
【0134】
図14は、追書込動作を示すフローチャートであり、図15(a)〜(c)は、追書込動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【0135】
追書込動作(ステップS39)は、書き込み対象のページ(ページ#j)が、スタートページ(ページ#i+1)と一致する場合(j=i+1)と、一致しない場合(j>i+1)によって動作が異なる。このため、図14に示されるように、追書込動作においては、まず書き込み対象のページ(ページ#j)がスタートページ(ページ#i+1)と一致するか否かが判定される(ステップS41)。
【0136】
その結果、書き込み対象のページ(ページ#j)とスタートページ(ページ#i+1)とが一致する場合(j=i+1)には、転送先ブロック内の書き込み対象のページ(ページ#j)に対してデータが書き込まれ(ステップS43)、これにより、図15(a)に示されるように、転送先ブロックのページ#0〜#j(=i+1)が有効ページ、ページ#j+1〜#31が空きページとなる。ステップS43が完了すると、次に、内部変数30のスタートページ格納領域33の内容が、書き込み対象のページ(ページ#j)の次のページのページ番号(ページ#j+1)に更新される(ステップS44)。
【0137】
一方、書き込み対象のページ(ページ#j)とスタートページ(ページ#i+1)とが一致しない場合(j>i+1)には、転送元ブロック内のスタートページ(ページ#i+1)から書き込み対象のページ(ページ#j)の一つ前のページ(ページ#j−1)までのページに格納されたデータが、転送先ブロックの同じページに転送される(ステップS42)。すなわち、中間転送が行われる。これにより、図15(b)に示されるように、転送先ブロックのページ#0〜#j−1が有効ページ、ページ#j〜#31が空きページとなる。ステップS42が完了すると、上述したステップS43によりページ#jに対してデータが書き込まれ、これにより、図15(c)に示されるように、転送先ブロックのページ#0〜#j(=i+1)が有効ページ、ページ#j+1〜#31が空きページとなる。その後、上述したステップS44が実行され、スタートページ格納領域33の内容がページ#j+1に更新される。
【0138】
このようにしてデータの書き込みが完了すると、次に、書き込み対象のページ(ページ#j)が最終ページ(ページ#31)であるか否かが判断される(ステップS45)。その結果、書き込み対象のページ(ページ#j)が最終ページ(ページ#31)であれば、転送元ブロックをブロック消去して空きブロックとし(ステップS46)、対応するフラグ34を「0」にリセットする(ステップS47)。一方、書き込み対象のページ(ページ#j)が最終ページ(ページ#31)以外であれば、上記ステップS46及びステップS47を実行することなく、一連の処理を終了する。
【0139】
以上により、追書込動作(ステップS39)が完了する。
【0140】
以上が、本実施態様にかかるフラッシュメモリシステム1によるデータ書き込み動作である。
【0141】
本実施態様にかかるフラッシュメモリシステム1においては、部分転送動作(ステップS9)が行われることにより、1つの論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態が生じる。このため、ホストコンピュータ5より当該ブロックに対するデータの読み出しが指示された場合には、内部変数30を参照することによって、正しいデータが書き込まれた物理ブロックに対する読み出しを実行することができる。
【0142】
但し、この場合には、ホストコンピュータ5よりデータの読み出しが指示される度に内部変数30を参照する必要があることから、部分転送動作が行われた後、同じ論理ブロックアドレスに対するデータの書き込み指示以外の指示がホストコンピュータ5より発行された場合には、当該指示を実行する前に、上述したステップS33〜ステップS35の処理を実行することによって、ブロック間転送を完結させても構わない。この場合には、ホストコンピュータ5よりいかなる論理ブロックアドレスに対するデータの読み出しが指示された場合であっても、通常のフラッシュメモリシステム1と同じ読み出し処理によってこれを行うことができる。
【0143】
次に、部分転送動作(ステップS9)が行われることにより、1つの論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態において電源が遮断され、その後、再び電源が投入された場合の動作について説明する。
【0144】
1つの論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態において電源が遮断されると、起動時に行われるアドレス変換テーブル27の作成において、ある論理ブロックアドレスに対応する物理ブロックとして2つの物理ブロックが発見されるはずである。すなわち、同じ対応論理ブロックアドレスを持つ2つの物理ブロックが発見されるはずである。このような論理ブロックアドレスが発見されると、マイクロプロセッサ6による制御のもと、以下に詳述する完結動作が実行される。
【0145】
図16は、完結動作を示すフローチャートであり、図17は、完結動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【0146】
図16に示されるように、完結動作においては、まず、同じ対応論理ブロックアドレスを持つ2つの物理ブロックの最終ページ(ページ#31)をそれぞれ読み出し、いずれが空きページであるかが判定される。ここで、いずれが空きページであるかの判定は、これらページの冗長領域26に含まれる対応論理ブロックアドレスに基づいて行われ、対応論理ブロックアドレスがオール1(1111111111111B)である方が空きページであると判定される。かかる判定により、最終ページ(ページ#31)が空きページとなっているブロックが部分転送動作における転送先ブロックであり、最終ページ(ページ#31)が有効ページとなっているブロックが部分転送動作における転送元ブロックであると判別することができる(ステップS51)。
【0147】
このようにして、上記2つの物理ブロックに対する転送先ブロック/転送元ブロックの判別が完了すると、アドレス変換テーブル27内の対応する物理ブロックアドレス格納領域に、転送先ブロックの物理ブロックアドレスが格納されるとともに、対応するフラグが「1」にセットされる(ステップS52)。
【0148】
次に、転送先ブロックを構成するページを、ページ#30から順に遡って次々と読み出し、これによって空きページの範囲を検出する(ステップS53)。例えば、ページ#20において有効な対応論理ブロックアドレスが読み出されれば、ページ#21〜#31が空きブロックであることが検出される。
【0149】
空きブロックの範囲が検出されると、次に、転送先ブロックの各空きページに対して、転送元ブロックの対応するページのデータがそれぞれ転送される(ステップS54)。すなわち、ブロック間転送の後半部分の動作が行われる。これにより、図17に示されるように、転送先ブロックの全てのページ#0〜#31が有効ページとなる。尚、図17においては、ステップS53において転送先ブロックのページ#21〜#31が空きブロックであると検出された場合の動作が示されている。そして、転送元ブロックをブロック消去して空きブロックとし(ステップS55)、一連の処理を終了する。
【0150】
以上により、完結動作が完了する。
【0151】
このように、本実施態様にかかるフラッシュメモリシステム1では、既にデータが割り当てられている論理ブロックアドレス、すなわち、アドレス変換テーブル27内の対応するフラグが「1」となっている論理ブロックアドレスに対してホストコンピュータ5よりデータの書き込みが指示された場合であっても、従来のように直ちにブロック間転送を行うのではなく、ブロック間転送の後半部分の動作を省略した部分書込動作を行っているので、次にホストコンピュータ5より同じブロックに対してデータの書き込みが指示された場合に、追書込動作を行うことができる。追書込動作では、上述のとおり、転送すべきページ数がゼロか、若しくは少ない数であるため、ホストコンピュータ5からデータの書き込みが指示される度にブロック間転送を行う場合と比べて、一連の処理に要する時間は大きく短縮される。特に、連続する複数ページに対し、ホストコンピュータ5よりデータの書き込みが1ページずつ次々と指示されるような状況下においては、本実施態様にかかるフラッシュメモリシステム1による高速化の効果は著しい。
【0152】
次に、本発明の好ましい他の実施態様について説明する。
【0153】
本発明の好ましい他の実施態様にかかるフラッシュメモリシステム39の構成は、図1に示されるように上記実施態様にかかるフラッシュメモリシステム1と基本的に同様であり、SRAMワークエリア8に格納される内部変数30が内部変数40に置き換えられている点において異なる。
【0154】
図18は、SRAMワークエリア8に格納される内部変数40のデータ構造を示す概略図である。
【0155】
図18に示されるように、内部変数40は、変数#0〜#3によって構成され、それぞれ第1のブロックアドレス格納領域41、第2のブロックアドレス格納領域42、第3のブロックアドレス格納領域43、第1のスタートページ格納領域44、第2のスタートページ格納領域45、第1のフラグ46及び第2のフラグ47によって構成されている。第1〜第3のブロックアドレス格納領域41〜43には、それぞれ物理ブロックアドレスが13ビットのデータによって格納されており、第1及び第2のスタートページ格納領域44、45には、それぞれページ番号が5ビットのデータによって格納されている。また、第1及び第2のフラグ46、47はそれぞれ1ビットのデータである。したがって、内部変数40は、SRAMワークエリア8の記憶容量のうち、28バイトを占有することとなる。
【0156】
第1のフラグ46は、「1」であれば当該変数の内容が有効であることを示し、「0」であれば当該変数の内容が無効であることを示す。すなわち、第1のフラグ46は、上記実施態様におけるフラグ34に対応するフラグである。また、第2のフラグ47は、第1のフラグ46が「1」である場合にのみ有効なフラグであり、これが「1」であれば、第1〜第3のブロックアドレス格納領域41〜43、第1及び第2のスタートページ格納領域44、45の内容が全て有効であることを示し、「0」であれば、第1及び第2のブロックアドレス格納領域41、42、第1のスタートページ格納領域44の内容が全て有効であり、第3のブロックアドレス格納領域43、第2のスタートページ格納領域45の内容が無効であることを示す。
【0157】
また、第1のブロックアドレス格納領域41は、上記実施態様における転送元ブロックアドレス格納領域32に対応し、第2のブロックアドレス格納領域42は、上記実施態様における転送先ブロックアドレス格納領域31に対応する。されに、第1のスタートページ格納領域44は、上記実施態様におけるスタートページ格納領域33に対応する。
【0158】
次に、本実施態様にかかるフラッシュメモリシステム39によるデータの書き込み動作について説明する。
【0159】
本実施態様にかかるフラッシュメモリシステム39におけるデータの書き込み動作は、新規書込動作、第1及び第2の部分転送動作、第1及び第2の追書込動作の5つに分類される。これら書込動作のいずれが選択されるかを決定する方法は、基本的に図8に示したフローチャートと同様であるが、ステップS7においては、チップ番号(内部アドレスの上位2ビット)に基づいて、内部変数40内の対応する第1のフラグ46が読み出される。その結果、これが「0」であれば、第1の部分転送動作が選択される。
【0160】
第1の部分転送動作は、上記実施態様における部分転送動作(ステップS9)と基本的に同様であるが、ステップS22においては、まずチップ番号に基づいて変数#0〜#3のいずれかが選択され、選択された変数を構成する第2のブロックアドレス格納領域42に消去済みブロックキュー28より読み出された物理ブロックアドレスが格納され、第1のブロックアドレス格納領域41にアドレス変換テーブル27より読み出された物理ブロックアドレスが格納され、第1のスタートページ格納領域44に書き込み対象のページ(ページ#i)の次のページのページ番号(ページ#i+1)が格納される。また、第1のフラグ46が「1」にセットされ、第2のフラグ47が「0」にリセットされる。
【0161】
以下、第1のブロックアドレス格納領域41に格納された物理ブロックアドレスにより特定されるブロックを「第1のブロック」と呼び、第2のブロックアドレス格納領域42に格納された物理ブロックアドレスにより特定されるブロックを「第2のブロック」と呼ぶ。また、第3のブロックアドレス格納領域43に格納された物理ブロックアドレスにより特定されるブロックを「第3のブロック」と呼ぶ。
【0162】
そして、ステップS24において、第1のブロック内のページ#0から書き込み対象のページ(ページ#i)の1つ前のページ(ページ#i−1)までのページに格納されたデータが、第2のブロックの同じページに転送され、ステップS25において、ホストコンピュータ5より書き込みが指示されたデータが、第2のブロックの書き込み対象のページ(ページ#i)に書き込まれる。
【0163】
次に、本実施態様における追書込判定について説明する。
【0164】
図19は、本実施態様にかかるフラッシュメモリシステム39による追書込判定を示すフローチャートである。
【0165】
図19に示されるように、本実施態様における追書込判定(ステップS10)では、まず、チップ番号(内部アドレスの上位2ビット)に基づいて、内部変数40内の対応する第2のフラグ47の内容が読み出される(ステップS61)。内部変数40内の対応する第2のフラグ47が読み出されると、次に、その内容が「1」であるか「0」であるかが判断される(ステップS62)。その結果、読み出された第2のフラグ47の内容が「0」であれば、第2のブロックアドレス格納領域42の内容が読み出され(ステップS63)、「1」であれば、第3のブロックアドレス格納領域43の内容が読み出される(ステップS64)。
【0166】
第2のフラグ47の内容が「0」であるために第2のブロックアドレス格納領域42の内容が読み出された場合(ステップS63)、その内容とアドレス変換テーブル27より読み出された物理ブロックアドレスとが比較され、これらが一致している否かが判断される(ステップS65)。
【0167】
その結果、両者が一致しない場合、第1のブロックアドレス格納領域41及び第1のスタートページ格納領域44の内容が読み出され(ステップS66)、第1のブロックアドレス格納領域41の内容にて特定される第1のブロック内のページのうち、第1のスタートページ格納領域44の内容にて特定されるページ(ページ#i+1)から最終ページ(ページ#31)までのページに格納されたデータが、第2のブロックアドレス格納領域42の内容にて特定される第2のブロック内の同じページに転送される(ステップS67)。すなわち、ブロック間転送の後半部分の動作が行われる。かかる動作は、図13に示した転送動作と同様である。
【0168】
ステップS67が完了すると、次に、第1のブロックがブロック消去されて、新たな空きブロックとされ(ステップS68)、さらに、対応する第1のフラグ46が「0」にリセットされる(ステップS69)。これにより、1つの論理ブロックアドレスに対して2つの物理ブロックが割り当てられた状態が解消される。その後、上述した第1の部分転送動作(ステップS9)が行われる。
【0169】
一方、ステップS65における判定の結果、両者が一致した場合には、第1のスタートページ格納領域44の内容が読み出され(ステップS70)、内部アドレスの下位5ビット、すなわち書き込み対象のページ(ページ#j)と、スタートページ(ページ#i+1)とが比較される(ステップS71)。
【0170】
その結果、書き込み対象のページ(ページ#j)のページ番号がスタートページ(ページ#i+1)のページ番号よりも小さければ、以下に詳述する第2の部分転送動作(ステップS72)が行われ、書き込み対象のページ(ページ#j)のページ番号がスタートページ(ページ#i+1)のページ番号以上であれば、第1の追書込動作が選択される(ステップS39)。第1の追書込動作は、上記実施態様における部分転送動作(ステップS39)と基本的に同様であるが、ステップS44においては、内部変数40の対応する第1のスタートページ格納領域44の内容が、書き込み対象のページ(ページ#j)の次のページのページ番号(ページ#j+1)に更新される。また、ステップS47においては、内部変数40の対応する第1のフラグ46が「0」にリセットされる。
【0171】
ここで、第2の部分転送動作(ステップS72)について説明する。
【0172】
図20は、第2の部分転送動作を示すフローチャートであり、図21(a)及び(b)は、第2の部分転送動作における第1〜第3のブロックのデータ格納状態を示す概略図である。
【0173】
図20に示されるように、第2の部分転送動作(ステップS72)においては、まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー28を構成するキュー#0〜#7のうち所定のキューが選択され、格納されている物理ブロックアドレスが読み出される(ステップS91)。
【0174】
消去済みブロックの物理ブロックアドレスが読み出されると、これに基づいて内部変数40が更新される(ステップS92)。ここで、内部変数40の更新においては、まずチップ番号に基づいて変数#0〜#3のいずれかが選択され、選択された変数を構成する第3のブロックアドレス格納領域43に消去済みブロックキュー28より読み出された物理ブロックアドレスが格納され、第2のスタートページ格納領域45に書き込み対象のページ(ページ#j)の次のページのページ番号(ページ#j+1)が格納される。また、第2のフラグ47が「1」にセットされる。
【0175】
内部変数40の更新が完了すると、次に、アドレス変換テーブル27の更新が行われる(ステップS93)。アドレス変換テーブル27の更新においては、対応する物理ブロックアドレス格納領域に、消去済みブロックキュー28より読み出された物理ブロックアドレスが上書きされる。
【0176】
次に、第2のブロック内のページ#0から書き込み対象のページ(ページ#j)の1つ前のページ(ページ#j−1)までのページに格納されたデータが、第3のブロックの同じページに転送される(ステップS94)。すなわち、ブロック間転送の前半部分の動作が行われる。ステップS94が完了すると、図21(a)に示されるように、第3のブロックのページ#0〜#j−1が有効ページとなり、ページ#j〜#31が空きページとなる。
【0177】
ステップS94が完了すると、次に、ホストコンピュータ5より書き込みが指示されたデータが、転送先ブロックの書き込み対象のページ(ページ#j)に書き込まれる(ステップS95)。ステップS95が完了すると、図21(b)に示されるように、第3のブロックのページ#0〜#jが有効ページとなり、ページ#j+1〜#31が空きページとなる。
【0178】
以上により、第2の部分転送動作(ステップS72)が完了する。図21に示されるように、第2の部分転送動作が行われた場合、ある論理ブロックアドレスに対して3つの物理ブロックが割り当てられた状態となる。
【0179】
図19に戻って、再び追書込判定について説明する。
【0180】
ステップS62において、第2のフラグ47の内容が「1」であるために第3のブロックアドレス格納領域43の内容が読み出された場合(ステップS64)、その内容とアドレス変換テーブル27より読み出された物理ブロックアドレスとが比較され、これらが一致している否かが判断される(ステップS73)。
【0181】
その結果、両者が一致しない場合、第1のブロックアドレス格納領域41、第2のブロックアドレス格納領域42、第1のスタートページ格納領域44及び第2のスタートページ格納領域45の内容が読み出される(ステップS74)。次に、
第2のブロック内のページのうち、第2のスタートページ(ページ#j+1)から第1のスタートページ(ページ#i+1)の1つ前のページ(ページ#i)までのページに格納されたデータが、第3のブロック内の同じページに転送される(ステップS75)。これにより、図22(a)に示されるように、第3のブロックのページ#0〜#iが有効ページとなり、ページ#i+1が空きページとなる。
【0182】
次に、第1のブロック内のページのうち、第1のスタートページ(ページ#i+1)から最終ページ(ページ#31)までのページに格納されたデータが、第3のブロック内の同じページに転送される(ステップS76)。これにより、図22(b)に示されるように、第3のブロックの全てのページ#0〜#31が有効ページとなる。
【0183】
そして、第1のブロック及び第2のがブロック消去されて、新たな空きブロックとされ(ステップS77)、さらに、対応する第1のフラグ46及び第2のフラグ47が「0」にリセットされる(ステップS69)。これにより、1つの論理ブロックアドレスに対して3つの物理ブロックが割り当てられた状態が解消される。その後、上述した第1の部分転送動作(ステップS9)が行われる。
【0184】
一方、ステップS73において、両者が一致した場合には、第2のスタートページ格納領域45の内容が読み出され(ステップS78)、内部アドレスの下位5ビット、すなわち書き込み対象のページ(ページ#k)と、第2のスタートページ(ページ#j+1)とが比較される(ステップS79)。
【0185】
その結果、書き込み対象のページ(ページ#k)のページ番号が第2のスタートページ(ページ#j+1)のページ番号よりも小さければ、第2のブロック内のページのうち、第2のスタートページ(ページ#j+1)から第1のスタートページ(ページ#i+1)の1つ前のページ(ページ#i)までのページに格納されたデータが、第3のブロック内の同じページに転送され(ステップS80)、次に、第2のブロックがブロック消去される(ステップS81)。これにより、第3のブロックが新たに第2のブロックとなり、第2のブロックが空きブロックとなるので、これに基づいて内部変数40が更新される(ステップS82)。ここで、内部変数40の更新においては、対応する第3のブロックアドレス格納領域43の内容が第2のブロックアドレス格納領域42にコピーされるとともに、第2のフラグ47が「0」にリセットされる。内部変数40の更新が完了すると、上述した第2の部分転送動作(ステップS72)が実行される。
【0186】
一方、ステップS73において、書き込み対象のページ(ページ#k)のページ番号が第2のスタートページ(ページ#j+1)のページ番号以上であれば、以下に詳述する第2の追書込動作が選択される(ステップS83)。
【0187】
以上により、追書込判定(ステップS10)が完了する。このように、本実施態様における追書込判定(ステップS10)においては、第1の部分転送動作(ステップS9)、第2の部分転送動作(ステップS72)、第1の追書込動作(ステップS39)、第2の追書込動作(ステップS83)のいずれかが選択されることになる。
【0188】
次に、第2の追書込動作(ステップS83)について説明する。
【0189】
図23は、第2の追書込動作を示すフローチャートであり、図24(a)〜(c)及び図25(a)〜(c)は、第2の追書込動作における第1〜第3のブロックのデータ格納状態を示す概略図である。
【0190】
第2の追書込動作(ステップS83)は、書き込み対象のページ(ページ#k)が、第2のスタートページ(ページ#j+1)と一致する場合(k=j+1)と、一致しない場合(k>j+1)によって動作が異なる。このため、図23に示されるように、第2の追書込動作においては、まず書き込み対象のページ(ページ#k)が第2のスタートページ(ページ#j+1)と一致するか否かが判定される(ステップS101)。
【0191】
その結果、書き込み対象のページ(ページ#k)と第2のスタートページ(ページ#j+1)とが一致する場合(k=j+1)には、第3のブロック内の書き込み対象のページ(ページ#k)に対してデータが書き込まれ(ステップS102)、これにより、図24(a)に示されるように、第3のブロックのページ#0〜#k(=j+1)が有効ページ、ページ#k+1〜#31が空きページとなる。ステップS102が完了すると、次に、書き込み対象のページ(ページ#k)が第1のスタートページの一つ前のページ(ページ#i)と一致するか否かが判定される(ステップS103)。その結果、書き込み対象のページ(ページ#k)と第1のスタートページの一つ前のページ(ページ#i)とが一致しない場合には(k≠i)、内部変数40の第2のスタートページ格納領域45の内容が、書き込み対象のページ(ページ#k)の次のページのページ番号(ページ#k+1)に更新される(ステップS104)。
【0192】
一方、書き込み対象のページ(ページ#k)と第1のスタートページの一つ前のページ(ページ#i)とが一致する場合には(k=i)、第2のブロックをブロック消去して空きブロックとした後(ステップS105)、内部変数40が更新される(ステップS106)。ここで、内部変数40の更新においては、対応する第3のブロックアドレス格納領域43の内容が第2のブロックアドレス格納領域42にコピーされるとともに、第2のフラグ47が「0」にリセットされる。これにより、第3のブロックが新たに第2のブロックとなり、第2のブロックが空きブロックとなる。
【0193】
また、ステップS101において、書き込み対象のページ(ページ#k)と第2のスタートページ(ページ#j+1)とが一致しない場合(k>j+1)には、書き込み対象のページ(ページ#k)と第1のスタートページ(ページ#i+1)とが比較される(ステップS107)。その結果、書き込み対象のページ(ページ#k)が第1のスタートページ(ページ#i+1)以下であれば、第2のブロック内の第2のスタートページ(ページ#j+1)から書き込み対象のページ(ページ#k)の一つ前のページ(ページ#k−1)までのページに格納されたデータが、第3のブロックの同じページに転送される(ステップS108)。これにより、図24(b)に示されるように、第3のブロックのページ#0〜#k−1が有効ページ、ページ#k〜#31が空きページとなる。ステップS108が完了すると、上述したステップS102によりページ#kに対してデータが書き込まれ、これにより、図24(c)に示されるように、第3のブロックのページ#0〜#k(=j+1)が有効ページ、ページ#k+1〜#31が空きページとなる。その後、上述したステップS102におけるデータの書き込み及びステップS103における比較が実行され、その結果に基づいてステップS104またはステップS105、S106が実行される。
【0194】
また、ステップS107による比較の結果、書き込み対象のページ(ページ#k)が第1のスタートページ(ページ#i+1)よりも大きければ、第2のブロック内の第2のスタートページ(ページ#j+1)から第1のスタートページ(ページ#i+1)の1つ前のページ(ページ#i)までのページに格納されたデータが、第3のブロックの同じページに転送される(ステップS109)。これにより、図25(a)に示されるように、第3のブロックのページ#0〜#iが有効ページ、ページ#i+1〜#31が空きページとなる。ステップS109が完了すると、次に、第1のブロック内の第1のスタートページ(ページ#i+1)から書き込み対象のページ(ページ#k)の1つ前のページ(ページ#k−1)までのページに格納されたデータが、第3のブロックの同じページに転送される(ステップS110)。これにより、図25(b)に示されるように、第3のブロックのページ#0〜#k−1が有効ページ、ページ#k〜#31が空きページとなる。このようにして、第2のブロックから第3のブロックへの転送動作(ステップS109)及び第1のブロックから第3のブロックへの転送動作(ステップS110)が完了すると、第3のブロック内の書き込み対象のページ(ページ#k)に対してデータが書き込まれ(ステップS111)、これにより、図25(c)に示されるように、第3のブロックのページ#0〜#k(=j+1)が有効ページ、ページ#k+1〜#31が空きページとなる。
【0195】
このようにしてデータの書き込みが完了すると、次に、書き込み対象のページ(ページ#k)が最終ページ(ページ#31)であるか否かが判断される(ステップS112)。その結果、書き込み対象のページ(ページ#k)が最終ページ(ページ#31)であれば、第1及び第2のブロックをブロック消去して空きブロックとし(ステップS113)、対応する第1のフラグ46を「0」にリセットする(ステップS114)。一方、書き込み対象のページ(ページ#k)が最終ページ(ページ#31)以外であれば、上述したステップS105、S106が実行され、これにより、第3のブロックが新たに第2のブロックとなり、第2のブロックが空きブロックとなる。
【0196】
以上により、第2の追書込動作(ステップS83)が完了する。
【0197】
以上が、本実施態様にかかるフラッシュメモリシステム39によるデータ書き込み動作である。
【0198】
また、第1の部分転送動作(ステップS9)や第2の部分転送動作(ステップS72)が行われることにより、1つの論理ブロックアドレスに対して2つまたは3つの物理ブロックが割り当てられた状態において電源が遮断され、その後、再び電源が投入された場合には、上記実施態様における完結動作と同様の動作により、ブロック間転送が完結される。
【0199】
このように、本実施態様にかかるフラッシュメモリシステム39では、上記実施態様にかかるフラッシュメモリシステム1による効果に加え、1つの論理ブロックアドレスに対して3つの物理ブロックを割り当て可能に構成されているので、追書込動作が選択される可能性がより高められている。これにより、一連のデータ書込動作を、上記実施態様にかかるフラッシュメモリシステム1よりもさらに高速に実行することが可能となる。
【0200】
次に、本発明の好ましいさらに他の実施態様について説明する。
【0201】
本発明の好ましいさらに他の実施態様にかかるフラッシュメモリシステム49の構成は、図1に示されるように上記実施態様にかかるフラッシュメモリシステム1と基本的に同様であり、SRAMワークエリア8に格納されるアドレス変換テーブル27がアドレス変換テーブル57に置き換えられ、消去済みブロックキュー28が消去済みブロックキュー58に置き換えられ、内部変数30が内部変数50に置き換えられている点において異なる。
【0202】
本実施態様にかかるフラッシュメモリシステム49は、「仮想ブロック方式」によるフラッシュメモリシステムである。まず、仮想ブロック方式について説明する。
【0203】
仮想ブロック方式のフラッシュメモリシステムにおいては、各フラッシュメモリチップ2−0〜2−3から一つずつ選ばれた4つの実使用ブロックが仮想的に結合されて「仮想ブロック」を構成する。これにより、仮想ブロック#0〜#7999からなる8000個の仮想ブロックが構成される。
【0204】
図26は、仮想ブロックのマッピングの一例を示す図である。
【0205】
図26に示される例では、フラッシュメモリチップ2−0に含まれる物理ブロック#150、フラッシュメモリチップ2−1に含まれる物理ブロック#6811、フラッシュメモリチップ2−2に含まれる物理ブロック#8191、フラッシュメモリチップ2−3に含まれる物理ブロック#3048が仮想的に結合され、一つの仮想ブロックを構成している。このように、本実施態様においては、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるフラッシュメモリチップに含まれていることが必要である。このようにして、最大8000個の仮想ブロックが構成される。
【0206】
図27は、図26に示された仮想ブロックの仮想ページ構造を示す図である。
【0207】
図27に示されるように、仮想ブロックは、仮想ページ#0〜ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。ここで、仮想ブロックのうち、物理ブロック#150からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#6811からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#8191からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#3048からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。これら仮想ページ番号は、ホストアドレスの下位7ビットと対応している。したがって、これら仮想ページ#0から仮想ページ#127は、連続するホストアドレスによってそれぞれアクセスされることになる。このため、ホストコンピュータ5より連続するホストアドレスに対してデータの書き込みが指示された場合、各ブロックにおいて並列動作を行うことができるので、通常のフラッシュメモリシステムと比べ、一連の書き込み動作をより高速に実行することができる。
【0208】
次に、仮想ブロックとこれを構成する4つの物理ブロックとの関係について説明する。
【0209】
図28は、8000個の仮想ブロックと、これら各仮想ブロックを構成する4つの物理ブロックとの関係を示すアドレス変換テーブル57のデータ構造を示す概略図である。
【0210】
図28に示されるように、アドレス変換テーブル57は、仮想ブロック#0〜#7999からなる8000個の仮想ブロックがこの順に並んで構成され、これら各仮想ブロック#0〜#7999は、それぞれセル#j−0〜セル#j−3(jは、仮想ブロックアドレス)からなる4個のセル及び1個のフラグによって構成される。例えば、仮想ブロック#0はセル#0−0〜セル#0−3とフラグとによって構成され、仮想ブロック#1はセル#1−0〜セル#1−3とフラグとによって構成される。したがって、アドレス変換テーブル57は、32000個のセルと8000個のフラグによって構成されることになる。ここで、セル#j−0を構成するスロット#0はフラッシュメモリチップ2−0に対応し、セル#j−1を構成するスロット#1はフラッシュメモリチップ2−1に対応し、セル#j−2を構成するスロット#2はフラッシュメモリチップ2−2に対応し、セル#j−3を構成するスロット#3はフラッシュメモリチップ2−3に対応している。
【0211】
各仮想ブロックに含まれるセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス(物理ブロックアドレス)が格納される。
【0212】
また、各仮想ブロックに含まれるフラグは、当該仮想ブロックが有効であるか無効であるかを示している。具体的には、フラグが「1」を示していれば当該仮想ブロックは有効であり、フラグが「0」を示していれば当該仮想ブロックは無効である。したがって、フラグが「0」を示している仮想ブロックについては、これに含まれるセル#j−0〜#j−3に格納されている内容は無視される。
【0213】
アドレス変換テーブル57の生成は、次のように行われる。
【0214】
仮想ブロック方式においては、フラッシュメモリチップ2−0〜2−3を構成する各物理ブロックのうち、データが格納されているブロックの各先頭ページ(物理ページ#0)に含まれる冗長領域26には、当該ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレスが含まれており、各ブロックの各先頭ページに格納されている仮想ブロックアドレスがマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0215】
そして、各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスがオール1ではなく、有効な仮想ブロックのアドレスを示していれば、アドレス変換テーブル57を構成するセルのうち、チップ番号及び読み出された仮想ブロックアドレスによって特定されるセルに、当該物理ブロックの物理ブロックアドレスを格納する。例えば、フラッシュメモリチップ2−0に属する物理ブロック#12より、読み出された仮想ブロックアドレスが「123」であれば、セル#123−0に、物理ブロックアドレスとして「12」が書き込まれる。
【0216】
このような処理が、データが格納されている全ての物理ブロックについて行われる。これにより、アドレス変換テーブル57の生成が完了する。
【0217】
次に、SRAMワークエリア8に格納される消去済みブロックキュー58のデータ構造について説明する。
【0218】
図29は、SRAMワークエリア8に格納される消去済みブロックキュー58のデータ構造を示す概略図である。
【0219】
図29に示されるように、消去済みブロックキュー58は、キューセット#0〜#5からなる6つのキューセットによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。例えば、キューセット#0はキュー#0−0〜キュー#0−3によって構成され、キューセット#1はキュー#1−0〜キュー#1−3によって構成される。したがって、消去済みブロックキュー30は、24個のキューによって構成される。ここで、キュー#k−0はフラッシュメモリチップ2−0に対応し、キュー#k−1はフラッシュメモリチップ2−1に対応し、キュー#k−2はフラッシュメモリチップ2−2に対応し、キュー#k−3はフラッシュメモリチップ2−3に対応している。
【0220】
各キューセット#0〜#5を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理ブロックアドレスが格納される。したがって、例えば、フラッシュメモリチップ2−0に属する消去済みの物理ブロック#153を消去済みブロックキュー58に登録する場合、当該物理ブロックアドレスである「0000010011001B」がキュー#0−0〜#5−0のいずれかに格納される。同様にして、例えば、フラッシュメモリチップ2−2に属する消去済みのブロック#6552を消去済みブロックキュー30に登録する場合、当該物理ブロックアドレスである「1100110011000B」がキュー#0−2〜#5−2のいずれかに格納される。
【0221】
このようにして、各フラッシュメモリチップ2−0〜2−3ごとに最大6つの消去済みブロックの物理ブロックアドレスが消去済みブロックキュー58に登録され、これによって最大6つのキューセット#0〜#5が生成される。
【0222】
消去済みブロックキュー58の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル57の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。
【0223】
次に、SRAMワークエリア8に格納される内部変数50のデータ構造について説明する。
【0224】
内部変数50は、図7に示した内部変数30と同じデータ構造を有している。内部変数50を構成する変数#0〜#3は、それぞれ仮想ブロックのスロット#0〜#3に対応する。
【0225】
次に、本実施態様にかかるフラッシュメモリシステム49によるデータの書き込み動作について説明する。
【0226】
まず、既にデータが格納されている使用済みの仮想ブロックのある仮想ページに対して、ホストコンピュータ5よりデータの書き込みが指示された場合、上述した部分転送動作(ステップS9)と基本的に同じ動作によって、当該仮想ブロックを構成する4つの物理ブロックのうち、対応する物理ブロックのみに対して部分転送が行われる。
【0227】
図30は、仮想ブロック#nの仮想ページ4i+1に対してホストコンピュータ5よりデータの書き込みが指示された場合における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【0228】
仮想ページ4i+1は、仮想ブロック#nを構成する4つの物理ブロックのうち、スロット#1に属する物理ブロックの物理ページ#iに対応する。したがって、仮想ページ4i+1に対してホストコンピュータ5よりデータの書き込みが指示された場合、まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー58を構成するキューセット#0〜#7のうち所定のキューセットのスロット#1が選択され、格納されている物理ブロックアドレスが読み出される(ステップS21)。
【0229】
消去済みブロックの物理ブロックアドレスが読み出されると、これに基づいて内部変数50が更新される(ステップS22)。ここで、内部変数50の更新においては、まずスロット番号に基づいて変数#1が選択され、選択された変数を構成する転送先ブロックアドレス格納領域31に消去済みブロックキュー58より読み出された物理ブロックアドレスが格納され、転送元ブロックアドレス格納領域32にアドレス変換テーブル57より読み出された物理ブロックアドレスが格納され、スタートページ格納領域33に書き込み対象の物理ページ(ページ#i)の次のページのページ番号(ページ#i+1)が格納される。また、フラグ34が「1」にセットされる。
【0230】
内部変数50の更新が完了すると、次に、アドレス変換テーブル57の更新が行われる(ステップS23)。アドレス変換テーブル57の更新においては、対応するセル#n−1に、消去済みブロックキュー58より読み出された物理ブロックアドレスが上書きされる。
【0231】
次に、転送元ブロック内の物理ページ#0から書き込み対象の物理ページ(ページ#i)の1つ前のページ(ページ#i−1)までのページに格納されたデータが、転送先ブロックの同じページに転送される(ステップS24)。すなわち、ブロック間転送の前半部分の動作が行われる。ステップS24が完了すると、図30(a)に示されるように、転送先ブロックのページ#0〜#i−1が有効ページとなり、ページ#i〜#31が空きページとなる。
【0232】
ステップS24が完了すると、次に、ホストコンピュータ5より書き込みが指示されたデータが、転送先ブロックの書き込み対象の物理ページ(ページ#i)に書き込まれる(ステップS25)。ステップS25が完了すると、図30(b)に示されるように、転送先ブロックの物理ページ#0〜#iが有効ページとなり、物理ページ#i+1〜#31が空きページとなる。
【0233】
以上により、部分転送動作(ステップS9)が完了する。
【0234】
このような部分転送が行われた後、仮想ブロック#nの仮想ページ4j+1(j>i)に対してホストコンピュータ5よりデータの書き込みが指示された場合、上述した追書込動作(ステップS39)と同じ動作が行われ、これにより、一連のデータ書き込み動作が高速に実行される。
【0235】
また、部分転送動作(ステップS9)が行われることにより、1つのセルに対して2つの物理ブロックが割り当てられた状態において電源が遮断され、その後、再び電源が投入された場合には、上記実施態様における完結動作と同様の動作により、ブロック間転送が完結される。
【0236】
このように、本発明は、仮想ブロック方式のフラッシュメモリシステム49に対しても適用することができる。
【0237】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0238】
例えば、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、内部変数30、40、50がフラッシュメモリチップ2−0〜2−3にそれぞれ対応する変数#0〜#3からなり、これによって、各フラッシュメモリチップにおいて転送先ブロックと転送元ブロックからなる組を1つずつ記録できるように構成されているが、転送先ブロックと転送元ブロックからなる組が各フラッシュメモリチップにおいて1つに限定されることはなく、2以上の組を記録できるように構成しても構わない。
【0239】
また、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、起動時において、同じ対応論理ブロックアドレスを有する2つの物理ブロックが発見された場合、ステップS51〜ステップS55からなる完結動作を実行することによってブロック間転送を完結させているが、本発明においてかかる完結動作を行うことは必須ではなく、これら2つのブロックの物理ブロックアドレス及び転送先ブロックのスタートページを用いて、内部変数30、40、50の内容を電源が遮断される直前の状態に再現しても構わない。
【0240】
また、上記実施態様にかかるフラッシュメモリシステム1、49においては、1つの論理ブロックアドレス(セル)に対して2つの物理ブロックを割り当て可能に構成され、上記実施態様にかかるフラッシュメモリシステム39においては、1つの論理ブロックアドレスに対して3つの物理ブロックを割り当て可能に構成されているが、1つの論理ブロックアドレスに対して4以上の物理ブロックを割り当て可能に構成しても構わない。
【0241】
また、上記実施態様にかかるフラッシュメモリシステム49においては、各フラッシュメモリチップ2−0〜2−3より一つずつ選ばれた物理ブロックによって仮想ブロックを構成しているが、独立したレジスタを有する複数のバンクに分割された「バンクタイプ」と呼ばれるフラッシュメモリチップを用い、それぞれ異なるバンクに属する複数のブロックによって仮想ブロックを構成しても構わない。「バンクタイプ」のフラッシュメモリチップ用いれば、1つのフラッシュメモリチップによって仮想ブロックを構成することができる。
【0242】
また、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、各ブロックを32個のページによって構成しているが、各ブロックを構成するページ数は32個には限定されず、他の数、例えば、16個や64個であってもよい。本発明は、各ブロックを構成するページ数が多いほど、より顕著な効果を得ることができる。
【0243】
また、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、空きブロックに対してデータの書き込みを行う場合、ユーザデータを書き込むべきページとは無関係に当該ブロックの全てのページ#0〜#31の冗長領域26に、対応論理ブロックアドレスを格納しているが、全てのページ#0〜#31の冗長領域26に対応論理ブロックアドレスを格納することは必須ではなく、少なくとも、先頭ページ(ページ#0)及び最終ページ(ページ#31)の冗長領域26にこれを書き込めば足りる。
【0244】
さらに、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、データの格納された全ての物理ブロックに関わるアドレス変換テーブル27、57をSRAMワークエリア8上に展開しているが、本発明において、これら全ての物理ブロックに関わるアドレス変換テーブルを展開することは必須ではなく、これらの一部のみを展開してもよい。この場合、SRAMワークエリア8に必要とされる記憶容量を削減することができる。但し、このように一部の物理ブロックに関わるアドレス変換テーブルのみを展開する場合、アドレス変換テーブルに含まれていない物理ブロックへのアクセスが要求される度に、アドレス変換テーブルを更新する必要がある。
【0245】
また、上記実施態様においては、フラッシュメモリシステム1、39、49はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3とコントローラ3とが、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0246】
さらに、上記実施態様においては、フラッシュメモリシステム1、39、49は、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についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0247】
また、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−3の記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0248】
さらに、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0249】
また、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0250】
また、上記実施態様にかかるフラッシュメモリシステム1、39においては、フラッシュメモリチップ2−0〜2−3に対してそれぞれ2個のキューを割り当てることによって、消去済みブロックキュー30が構成されているが、各フラッシュメモリチップ2−0〜2−3に対して割り当てられるキューの数としては2個に限定されず、他の数、例えば、1個や8個であってもよい。
【0251】
さらに、上記実施態様にかかるフラッシュメモリシステム1、39、49においては、フラッシュメモリチップ2としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0252】
また、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0253】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash」や、MultiMediaCardAssociationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「SDメモリーカード」などに本発明を適用することが可能である。
【0254】
【発明の効果】
以上説明したように、本発明によれば、ホストコンピュータからデータの書き込みを要求された場合に、当該データを書き込むべきブロックにすでに何らかのデータが格納されている場合であっても、与えられたデータの書き込みに必要な一連の処理をより高速に行うことができるメモリコントローラ及びこのようなメモリコントローラを備えるフラッシュメモリシステムが提供される。
【0255】
また、本発明によれば、ホストコンピュータからデータの書き込みを要求された場合に、当該データを書き込むべきブロックにすでに何らかのデータが格納されている場合であっても、与えられたデータの書き込みに必要な一連の処理をより高速に行うことができるフラッシュメモリの制御方法が提供される。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図3】書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図4】フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図5】SRAMワークエリア8に格納されるアドレス変換テーブル27のデータ構造を示す概略図である。
【図6】SRAMワークエリア8に格納される消去済みブロックキュー28のデータ構造を示す概略図である。
【図7】SRAMワークエリア8に格納される内部変数30のデータ構造を示す概略図である。
【図8】書込動作の種類を決定するためのフローチャートである。
【図9】新規書込動作を示すフローチャートである。
【図10】部分転送動作を示すフローチャートである。
【図11】部分転送動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【図12】追書込判定を示すフローチャートである。
【図13】ステップS34における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【図14】追書込動作を示すフローチャートである。
【図15】追書込動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【図16】完結動作を示すフローチャートである。
【図17】完結動作における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【図18】SRAMワークエリア8に格納される内部変数40のデータ構造を示す概略図である。
【図19】追書込判定を示すフローチャートである。
【図20】第2の部分転送動作を示すフローチャートである。
【図21】第2の部分転送動作における第1〜第3のブロックのデータ格納状態を示す概略図である。
【図22】ステップS75〜ステップS77における第1〜第3のブロックのデータ格納状態を示す概略図である。
【図23】第2の追書込動作を示すフローチャートである。
【図24】第2の追書込動作における第1〜第3のブロックのデータ格納状態を示す概略図である。
【図25】第2の追書込動作における第1〜第3のブロックのデータ格納状態を示す概略図である。
【図26】仮想ブロックのマッピングの一例を示す図である。
【図27】図26に示された仮想ブロックの仮想ページ構造を示す図である。
【図28】アドレス変換テーブル57のデータ構造を示す概略図である。
【図29】SRAMワークエリア8に格納される消去済みブロックキュー58のデータ構造を示す概略図である。
【図30】仮想ブロック#nの仮想ページ4i+1に対してホストコンピュータ5よりデータの書き込みが指示された場合における転送元ブロック及び転送先ブロックのデータ格納状態を示す概略図である。
【符号の説明】
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 消去済みブロックキュー
30 内部変数
31 転送先ブロックアドレス格納領域
32 転送元ブロックアドレス格納領域
33 スタートページ格納領域
34 フラグ
39 フラッシュメモリシステム
40 内部変数
41 第1のブロックアドレス格納領域
42 第2のブロックアドレス格納領域
43 第3のブロックアドレス格納領域
44 第2のスタートページ格納領域
45 第1のスタートページ格納領域
46 第1のフラグ
47 第2のフラグ
49 フラッシュメモリシステム
50 内部変数
57 アドレス変換テーブル
58 消去済みブロックキュー
Claims (13)
- 複数のブロックからなるメモリにアクセスするメモリコントローラであって、
既にデータが格納されている第1のブロックに対応する論理アドレスに対して、新たに新データの書き込みが指示されたことに応答して、前記第1のブロックに格納されているデータの一部を第2のブロックの同じページに転送する第1の手段と、
前記新データを前記第2のブロックに書き込む第2の手段と、
前記第1のブロックと前記第2のブロックとの対応関係を保持する第3の手段と、
前記論理アドレスに対して、さらに、新たに追記データの書き込みが指示されたことに応答して、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断する第4の手段と、
前記第4の手段が追加的に書き込み可能であると判断したことに応答して、前記第1のブロックに格納されているデータの一部を前記第2のブロックの同じページに転送するとともに、前記追記データを前記第2のブロックに書き込む第5の手段と、
前記第4の手段が追加的に書き込み不可能であると判断したことに応答して、前記第2のブロック中の全ての空きページに、前記第1のブロックの同じページに格納されているデータを転送する第6の手段と、
前記第2のブロックの全てのページにデータが書き込まれたことに応答して、前記第1のブロックをブロック消去する第7の手段と
を備えたことを特徴とするメモリコントローラ。 - 前記第1の手段が、前記第1のブロックの先頭ページから前記新データを格納すべきページに対応するページの一つ前のページに格納されているデータを、前記第2のブロックの同じページに転送するように構成されたことを特徴とする請求項1に記載のメモリコントローラ。
- 前記第3の手段が、さらに、前記第2のブロックの空きページに関する情報を保持し、
前記第4の手段が、前記空きページに関する情報に基づき、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断するように構成された
ことを特徴とする請求項1または2に記載のメモリコントローラ。 - 前記第2のブロックにおける前記空きページが、前記第2の手段により前記新データが書き込まれたページの次のページから最終ページまで連続していることを特徴とする請求項3に記載のメモリコントローラ。
- 前記第2のブロックにおける前記追記データを格納するべきページが前記空きページでない場合に、前記第6の手段が、前記第2のブロック中の空きページに前記第1のブロックの同じページに格納されているデータを転送し、その後に、前記第7の手段が、前記第1のブロックに格納されているすべての前記データを消去するように構成されたことを特徴とする請求項1ないし4のいずれか1項に記載のメモリコントローラ。
- さらに、前記第2のブロックにおける前記追記データを格納するべきページが前記空きページでない場合に、前記第2のブロックに格納されているデータの一部を第3のブロックの同じページに転送する第8の手段と、
前記追記データを前記第3のブロックに書き込む第9の手段とを備え、
前記第3の手段が、さらに、前記第2のブロックと前記第3のブロックとの対応関係を保持するように構成された
ことを特徴とする請求項1ないし5のいずれか1項に記載のメモリコントローラ。 - 前記第3の手段が、さらに、前記第3のブロックの空きページに関する情報を保持していることを特徴とする請求項6に記載のメモリコントローラ。
- さらに、前記追記データの書き込み先のページが、前記第2のブロックにおける空きページ群の先頭ページか否かを判断する第10の手段を備え、
前記第10の手段が前記書き込み先のページが前記先頭ページでないと判断したことに 応答して、前記第5の手段が、前記空きページ群の先頭ページから前記追記データの書き込み先の一つ前のページに対応する各ページに、前記第1のブロックの同じページに格納されているデータを転送するように構成された
ことを特徴とする請求項1ないし7のいずれか1項に記載のメモリコントローラ。 - 複数のブロックからなるメモリにアクセスするメモリコントローラであって、
前記各ブロックを複数のグループに分類する手段と、
互いに異なるグループに属する複数のブロックを仮想的に結合することにより仮想ブロックを形成する手段と、
前記仮想ブロックを構成する所定のブロックに対して、新たに新データの書き込みが指示されたことに応答して、前記所定のブロックに格納されているデータの一部を他のブロックに転送する手段と、
新たに書き込みが指示された前記新データを前記他のブロックに書き込む手段と、
前記所定のブロックと前記他のブロックとの対応関係を保持する手段と、
前記新データの後に、追記データが与えられて、前記所定のブロックに対応する論理アドレスに対して、前記追記データの書き込みが指示されたことに応答して、前記追記データが前記他のブロックに前記追記データを追加的に書き込み可能か否かを判断する手段と、
前記他のブロックに前記追記データが追加的に書き込み可能であると判断されたことに応答して、前記所定のブロックに格納されているデータの一部を前記他のブロックの同じページに転送するとともに、前記追記データを前記他のブロックに書き込む手段と、
前記他のブロックに前記追記データを追加的に書き込み不可能であると判断されたことに応答して、前記他のブロック中の全ての空きページに、前記所定のブロックの同じページに格納されているデータを転送する手段と、
前記他のブロックの全てのページにデータが書き込まれたことに応答して、前記所定のブロックをブロック消去する手段と
を備えたことを特徴とするメモリコントローラ。 - 請求項1ないし9のいずれか1項に記載のメモリコントローラと、複数のブロックからなるフラッシュメモリと
を備えたことを特徴とするフラッシュメモリシステム。 - 前記フラッシュメモリシステムが、同一の筐体に収容されていることを特徴とする請求項10に記載のフラッシュメモリシステム。
- 前記筐体がカード状をなしていることを特徴とする請求項11に記載のフラッシュメモリシステム。
- 所定の論理アドレスに対して、新たに新データの書き込みが指示されたことに応答して、アドレス変換テーブル内の前記所定の論理アドレスに対応するブロックを第1のブロックから第2のブロックに変更するステップと、
前記第1のブロックと前記第2のブロックの対応関係を示す変数を作成するステップと、
前記第1のブロックに格納されているデータの一部を第2のブロックに転送するステップと、
前記新データを前記第2のブロックに書き込むステップと、
前記所定の論理アドレスに対して、さらに、新たな追記データの書き込みが指示されたことに応答して、前記追記データを前記第2のブロックに追加的に書き込み可能か否かを判断するステップと、
前記追記データを追加的に書き込み可能であると判断したことに応答して、前記第1のブロックに格納されているデータの一部を前記第2のブロックの同じページに転送するとともに、前記追記データを前記第2のブロックに書き込むステップと、
ステップと、
前記追記データを追加的に書き込み可能でないと判断したことに応答して、前記第2の ブロック中の全ての空きページに、前記第1のブロックの同じページに格納されているデータを転送するステップと、
前記第2のブロックの全てのページにデータが書き込まれたことに応答して、前記第1のブロックをブロック消去するステップと
を備えたことを特徴とするフラッシュメモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001129160A JP3621051B2 (ja) | 2001-04-26 | 2001-04-26 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001129160A JP3621051B2 (ja) | 2001-04-26 | 2001-04-26 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002324008A JP2002324008A (ja) | 2002-11-08 |
JP3621051B2 true JP3621051B2 (ja) | 2005-02-16 |
Family
ID=18977727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001129160A Expired - Lifetime JP3621051B2 (ja) | 2001-04-26 | 2001-04-26 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3621051B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005106673A1 (ja) * | 2004-04-28 | 2005-11-10 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置及びデータ書込み方法 |
CN100437517C (zh) * | 2004-04-28 | 2008-11-26 | 松下电器产业株式会社 | 非易失性存储装置和数据写入方法 |
JP4710274B2 (ja) * | 2004-08-02 | 2011-06-29 | ソニー株式会社 | メモリ装置、メモリ装置の制御方法およびデータ処理システム |
US8307149B2 (en) | 2005-12-09 | 2012-11-06 | Panasonic Corporation | Nonvolatile memory device including a logical-to-physical logig-to-physical address conversion table, a temporary block and a temporary table |
US20090307427A1 (en) * | 2006-03-31 | 2009-12-10 | Hitachi Ulsi Systems Co., Ltd. | Memory card and method of writing data |
JP2008152464A (ja) * | 2006-12-15 | 2008-07-03 | Toshiba Corp | 記憶装置 |
US20100318723A1 (en) * | 2007-02-23 | 2010-12-16 | Masahiro Nakanishi | Memory controller, nonvolatile memory device, and nonvolatile memory system |
WO2009140112A1 (en) * | 2008-05-13 | 2009-11-19 | Rambus Inc. | Fractional program commands for memory devices |
US9948809B2 (en) | 2013-02-01 | 2018-04-17 | Canon Kabushiki Kaisha | Image forming apparatus, memory management method for image forming apparatus, and program, using discretely arranged blocks in prioritizing information |
CN108664208B (zh) * | 2017-03-27 | 2022-02-15 | 珠海极海半导体有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
-
2001
- 2001-04-26 JP JP2001129160A patent/JP3621051B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2002324008A (ja) | 2002-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3905037B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4256600B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3921174B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4165990B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
KR100441587B1 (ko) | 블록 얼라인먼트 기능을 갖는 반도체 기억 장치 | |
US6172906B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US20010012222A1 (en) | Memory controller for flash memory system and method for accessing flash memory device | |
JPH10124381A (ja) | 半導体記憶装置 | |
KR20030011230A (ko) | 비휘발성 기억 장치 및 그의 재기입 제어 방법 | |
JP3621051B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
WO2006046425A1 (ja) | 不揮発性記憶装置及び不揮発性記憶システム | |
KR100914646B1 (ko) | 멀티-플레인 구조의 플래시 메모리 관리 방법 | |
JP4316824B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4236485B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4233213B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4248772B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4220690B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3999959B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003122630A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4042898B2 (ja) | メモリコントローラ及びこれを備えるメモリシステム並びにフラッシュメモリの制御方法 | |
JP2005190289A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP2003337757A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2007241619A (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040727 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040927 |
|
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: 20041109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041116 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3621051 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: 20071126 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081126 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091126 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101126 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111126 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121126 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121126 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131126 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |