JP4233213B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP4233213B2 JP4233213B2 JP2000397925A JP2000397925A JP4233213B2 JP 4233213 B2 JP4233213 B2 JP 4233213B2 JP 2000397925 A JP2000397925 A JP 2000397925A JP 2000397925 A JP2000397925 A JP 2000397925A JP 4233213 B2 JP4233213 B2 JP 4233213B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- address
- block
- data
- flash memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
【産業上の利用分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化してしまった場合であっても、論理アドレスと物理アドレスとの正しい対応関係を認識することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【0002】
【従来の技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリ、特にNAND型フラッシュメモリが用いられることが多い。NAND型フラッシュメモリは、メモリセルを消去状態(論理値=1)から書込状態(論理値=0)に変化させる場合は、これをメモリセル単位で行うことが可能である一方、メモリセルを書込状態(0)から消去状態(1)に変化させる場合は、これをメモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれる。
【0003】
このように、フラッシュメモリでは、ブロック単位でしかメモリセルを書込状態から消去状態に変化させることができないので、既にデータの書き込まれたブロックに対して新しいデータを書き込むためには、一旦、このブロックに含まれるメモリセルを全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。したがって、すでにデータが格納されているブロックに新しいデータを書き込む場合、このブロックにすでに格納されているデータが消失するのを防ぐためには、このブロックに含まれるデータを、他の消去済みブロックに移動させる必要がある。
【0004】
このため、すでにデータが格納されているブロックに新しいデータを書き込むようホストコンピュータから指示されると、当該新しいデータと、このブロックにすでに格納されているデータとが、消去済みブロックに書き込まれる。かかる処理は、「ブロック間転送」と呼ばれる。その後、転送元のブロックに含まれるメモリセルが全て消去状態とされ、これにより、転送元のブロックは新たに消去済みブロックとなる。
【0005】
このように、フラッシュメモリでは、ホストコンピュータからデータの上書きが指示される度に、新しいデータ及び上書き対象外のデータを、別のブロックに移動させる必要がある。したがって、ホストコンピュータから与えられる論理アドレスと、当該論理アドレスに対応するフラッシュメモリ上の物理アドレスとの関係は、ホストコンピュータからデータの上書きが指示される度に動的に変化する。このため、各ブロックは、自己がいかなる論理アドレスによってアクセスされるのかを記憶しておく必要がある。
【0006】
そして、電源投入時等の初期化動作において、コントローラによる制御のもと、各ブロックに記憶されている対応論理アドレスが読み出され、これに基づいて、論理アドレスと物理アドレスとの対応関係を示すアドレス変換テーブルが作成される。
【0007】
【発明が解決しようとする課題】
このように、論理アドレスと物理アドレスとの対応関係は、初期化動作において作成されるアドレス変換テーブルにより示されるので、対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化してしまった場合、論理アドレスと物理アドレスとの正しい対応関係が不明となってしまう。この場合、すでに書き込まれたユーザデータを読み出すことは不可能となる。
【0008】
対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化するという現象は、不良セルの存在を原因とする場合の他、ディスターブ現象を原因とする場合が考えられる。ディスターブ現象とは、あるメモリセルに対する読み出しや書き込みが実行された場合に、このメモリセルとビット線が共通である他のメモリセルの状態が変化してしまう現象のことであり、メモリセルに対して書き込み動作・消去動作が繰り返されることにより発生率が高くなることが知られている。
【0009】
このため、対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化してしまった場合であっても、論理アドレスと物理アドレスとの正しい対応関係を認識することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法が望まれていた。
【0010】
したがって、本発明の目的は、対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化してしまった場合であっても、論理アドレスと物理アドレスとの正しい対応関係を認識することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することである。
【0011】
【課題を解決するための手段】
本発明のかかる目的は、ブロックアドレス及びページアドレスに基づいてそれぞれ複数のページを含む複数のブロックからなるメモリにアクセスするメモリコントローラであって、ホストコンピュータよりホストアドレスを指定したユーザデータの書き込みが要求されたことに応答して、前記ホストアドレスに基づいた前記ブロックアドレス及び前記ページアドレスを生成するアドレス生成手段と、前記ブロックアドレスに対応する付加情報を生成する付加情報生成手段と、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えるメモリコントローラによって達成される。
【0012】
本発明によれば、ブロックアドレスが正しく書き込まれなかったり、すでに書き込まれたブロックアドレスの値が何らかの原因で変化してしまった場合であっても、先頭ページを含む連続した所定の複数ページにブロックアドレス及び付加情報が書き込まれるので、正しいブロックアドレスを得ることが可能となる。しかも、ページアドレスにより特定されるページ及び上記所定の複数ページのいずれでもないページにはブロックアドレス及び付加情報が書き込まれないので、不要な書き込み動作によって、無駄な書き込み時間が発生することがない。
【0013】
本発明の好ましい実施態様においては、前記付加情報が、前記ブロックアドレスに含まれる誤りを検出可能な情報である。
【0014】
本発明のさらに好ましい実施態様においては、前記所定の複数ページが、少なくとも連続した4ページである。
【0015】
本発明のさらに好ましい実施態様においては、前記先頭ページに書き込まれた前記ブロックアドレス及び前記付加情報を読み出す読み出し手段と、読み出された前記付加情報に基づいて読み出された前記ブロックアドレスに誤りが含まれているか否かを判断する誤り検出手段とをさらに備え、前記誤り検出手段が、読み出された前記ブロックアドレスに誤りが含まれていると判断したことに応答して、前記読み出し手段が、前記先頭ページの次のページに書き込まれた前記ブロックアドレス及び前記付加情報を読み出すように構成されている。
【0016】
本発明のさらに好ましい実施態様においては、前記書き込み手段が、前記ページアドレスにより特定されるページ及び前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込むように構成されている。
【0017】
本発明の前記目的はまた、ホストコンピュータより供給されるホストアドレスに基づいてそれぞれ複数のページを含む複数のブロックからなるメモリにアクセスするメモリコントローラであって、前記ホストアドレスに基づいて論理ブロックアドレス及びページアドレスを生成するアドレス生成手段と、前記論理ブロックアドレスに対応する物理ブロックアドレスが存在するか否かを判断する判断手段と、前記判断手段により前記論理ブロックアドレスに対応する物理ブロックアドレスが存在しないと判断されたことに応答して前記複数のブロックから空きブロックを選択する空きブロック選択手段と、前記論理ブロックアドレスの誤りを検出可能な付加情報を生成する付加情報生成手段と、前記空きブロック選択手段により選択された空きブロックを構成する複数のページのうち、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記論理ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記論理ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えるメモリコントローラによって達成される。
【0018】
本発明のさらに好ましい実施態様においては、前記所定の複数ページに書き込まれた前記論理ブロックアドレスのうち前記付加情報に基づき誤りのない論理ブロックアドレスを特定し、これに基づいてアドレス変換テーブルを作成するテーブル作成手段をさらに備え、前記判断手段が、前記アドレス変換テーブルを参照することによって前記判断を行うように構成されている。
【0019】
本発明の前記目的はまた、それぞれ複数のページを含む複数のブロックからなるフラッシュメモリと、ホストコンピュータより供給されるホストアドレスに基づいて前記フラッシュメモリにアクセスするメモリコントローラとを備え、前記コントローラが、前記ホストアドレスに基づいてブロックアドレス及びページアドレスを生成するアドレス生成手段と、前記ホストコンピュータよりユーザデータの書き込みが要求されたことに応答して、前記ブロックアドレスに対応する付加情報を生成する付加情報生成手段と、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えることを特徴とするフラッシュメモリシステムによって達成される。
【0020】
本発明の前記目的はまた、ホストコンピュータよりホストアドレスを指定したユーザデータの書き込みが要求されたことに応答して、前記ホストアドレスに基づいたブロックアドレス及びページアドレスを生成するアドレス生成ステップと、前記ブロックアドレスに対応する付加情報を生成する付加情報生成ステップと、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込みステップとを備えるフラッシュメモリの制御方法によって達成される。
【0021】
本発明の好ましい実施態様においては、フラッシュメモリの制御方法は、前記所定の複数ページに対し、誤りのないブロックアドレスが得られるまで前記書き込みステップにより書き込まれた前記ブロックアドレスを読み出す読み出しステップをさらに備えている。
【0022】
【発明の好ましい実施の形態】
以下、添付図面に基づいて、本発明の好ましい実施態様につき、詳細に説明を加える。
【0023】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0024】
図1に示されるように、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0025】
各フラッシュメモリチップ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ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0026】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0027】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0028】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0029】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0030】
バッファ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に保持される。
【0031】
フラッシュメモリインターフェースブロック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を制御するための「外部コマンド」と区別される。
【0032】
ECCブロック11は、フラッシュメモリチップ2−0〜2−3に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0033】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−3とバッファ9とのデータの転送を制御するための機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−3からのデータの読み出しまたはフラッシュメモリチップ2−0〜2−3へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【0034】
次に、各フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセルの具体的な構造について説明する。
【0035】
図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【0036】
図2に示されるように、フラッシュメモリセル16は、P型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲート電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。このような構成を有するフラッシュメモリセル16は、フラッシュメモリチップ2−0〜2−3内において、複数個直列に接続されて、NAND型フラッシュメモリを構成する。
【0037】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。フラッシュメモリセル16が消去状態であることは、当該フラッシュメモリセル16にデータ「1」が保持されていることを意味し、フラッシュメモリセル16が書込状態であることは、当該フラッシュメモリセル16にデータ「0」が保持されていることを意味する。すなわち、フラッシュメモリセル16は、1ビットのデータを保持することが可能である。
【0038】
図2に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。消去状態においては、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネルが形成されず、したがって、ソース拡散領域18とドレイン拡散領域19とは、P型半導体基板17によって電気的に絶縁される。一方、コントロールゲート電極23に読み出し電圧が印加されると、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成され、これにより、ソース拡散領域18とドレイン拡散領域19とは、チャネルによって電気的に接続される。すなわち、コントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に接続される。
【0039】
図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0040】
図3に示されるように、書込状態とは、フローティングゲート電極21に電子が蓄積されている状態を指す。フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。書込状態においては、フローティングゲート電極21に電子が蓄積されているので、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0041】
ここで、選択されたフラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。すなわち、複数個直列に接続されたフラッシュメモリセル16のうち、選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧が印加され、この状態において、これらフラッシュメモリセル16の直列体に電流が流れるか否かの検出が行われる。その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル16が書込状態であると判断され、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル16が消去状態であると判断される。このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。但し、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0042】
また、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合、コントロールゲート電極23に正の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21へ電子が注入される。フローティングゲート電極21への電子の注入は、FNトンネル電流による注入が可能である。一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合、コントロールゲート電極23に負の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子が排出される。
【0043】
次に、各フラッシュメモリチップ2−0〜2−3の持つアドレス空間の具体的な構成について説明する。
【0044】
図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0045】
図4に示されるように、フラッシュメモリチップ2−0のアドレス空間は、ブロック#0〜#8191からなる8192個のブロックによって構成される。また、図4には示されていないが、フラッシュメモリチップ2−1〜2−3も、フラッシュメモリチップ2−0と同様にブロック#0〜#8191からなる8192個のブロックによって構成されている。これら各ブロックは、いずれも16Kバイトの記憶容量を有する。
【0046】
ここで、上記各ブロックは、データの消去単位である。すなわち、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル16を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル16が属するブロックに含まれる全てのフラッシュメモリセル16が一括して消去状態とされる。逆に、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【0047】
さらに、図4に示されるように、フラッシュメモリチップ2−0を構成する各ブロック#0〜#8191は、それぞれページ#0〜#31からなる32個のページによって構成されている。また、フラッシュメモリチップ2−1〜2−3を構成する各ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各ブロック#0〜#8191と同様に、それぞれ32個のページによって構成されている。
【0048】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図4に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域である。
【0049】
図5は、冗長領域26のデータ構造を概略的に示す図である。
【0050】
図5に示されるように、冗長領域26は、エラーコレクションコード28、対応論理ブロックアドレス29、対応論理ブロックアドレス用巡回冗長ビット(CRC)31、スタートページフラグ32、スタートページデータ33及びその他の付加情報によって構成される。
【0051】
エラーコレクションコード28は、対応するユーザ領域25に格納されたユーザデータの誤りを訂正するための付加情報であり、ユーザ領域25に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード28を用いてこれを訂正し、正しいデータとすることができる。
【0052】
対応論理ブロックアドレス29は、ページ#0〜#3及びページ#31において有効な付加情報であり、当該ブロックがいかなる論理ブロックアドレスによりアクセスされるかを示す。対応論理ブロックアドレス29の詳細については後述する。
【0053】
CRC31は、ページ#0〜#3及びページ#31において有効な付加情報であり、対応論理ブロックアドレス29に含まれる誤りを検出するために用いられる。CRC31は、エラーコレクションコード28がユーザデータに含まれる誤りを訂正可能であるのとは異なり、対応論理ブロックアドレス29に含まれる誤りを訂正することはできず、単に、対応論理ブロックアドレス29に誤りがあるか否かを検出するためだけに用いられる。
【0054】
スタートページフラグ32は、少なくとも2ビットで構成されるフラグであり、このうち、上位の1ビットはページ#0において有効なビットであり、下位の1ビットはページ#0〜#30において有効なビットである。具体的には、ページ#0のスタートページフラグ32が「1x(xは任意)」であれば当該ブロックにスタートページが存在することを示し、ページ#0のスタートページフラグ32が「0x」であれば当該ブロックにスタートページが存在しないことを示す。また、ページ#0〜#30のスタートページフラグ32が「x0」であれば、対応するスタートページデータ33が有効であることを示し、スタートページフラグ32が「x1」であれば、対応するスタートページデータ33が無効であることを示す。
【0055】
スタートページデータ33は、当該ブロックのスタートページを特定するための付加情報である。ここで、「スタートページ」とは、当該ブロックにおいて、最終ページを含む1または2以上の連続するページが、データの格納されていない空きページとなっている場合に、これら連続するページの中の先頭のページを指す。例えば、あるブロックのページ#0〜#10にのみデータが格納されている場合にはスタートページはページ#11となり、あるブロックのページ#23にのみデータが格納されている場合にはスタートページはページ#24となる。したがって、各ブロックにおいて、スタートページ以降のページは、データの格納されていない空きページであることが保証される。
【0056】
スタートページデータ33を用いたスタートページの特定は、「スタートページ検索」によって行うことができる。スタートページ検索においては、まず、ページ#0のスタートページデータ33が参照され、その内容が示すページのスタートページフラグ32が参照される。例えば、ページ#0のスタートページデータ33が「00111B(7)」であれば、次に、ページ#7のスタートページフラグ32が参照される。その結果、スタートページフラグ32が「x0」であり、対応するスタートページデータ33が有効であると判断されれば、さらにその内容が示すページのスタートページフラグ32が参照される。このようにして、スタートページデータに基づき、対応するスタートページフラグ32が有効であるか否かを次々に判定し、参照されたスタートページフラグ32が「x1」となったところでスタートページ検索を終了し、かかるページが「スタートページ」であると判断される。例えば、上記の例で言えば、ページ#7のスタートページフラグ32が「x1」であれば、スタートページはページ#7であると判断される。
【0057】
冗長領域26のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【0058】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。
【0059】
このように、各フラッシュメモリチップ2−0〜2−3は8192個の物理ブロックによって構成されるが、このうち、8000個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの192個のブロックは「冗長ブロック」として取り扱われる。冗長ブロックは、データ書き込みに備えて待機している空きブロックである。フラッシュメモリチップ2−0〜2−3のアドレス空間は、実使用ブロックのみによって構成される。ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生したブロックの数だけ冗長ブロックとして割り当てられる物理ブロックの数が減らされる。
【0060】
このような構成からなるフラッシュメモリチップ2−0〜2−3は、上述のとおり、1Mページのアドレス空間を備える一つの大きなメモリとして取り扱われるので、これら1Mページからなるアドレス空間から特定のページにアクセスするためには、上述のとおり、20ビットのホストアドレスが用いられる。20ビットのホストアドレスのうち、上位15ビットは、フラッシュメモリチップの特定及び特定されたフラッシュメモリチップに含まれるブロックの特定に用いられ、残りの5ビット(下位5ビット)は、特定されたブロックに含まれるページの特定に用いられる。
【0061】
ホストアドレスの上位15ビットを用いたフラッシュメモリチップ及びブロックの特定は、ホストアドレスの上位15ビットを「8000」で除することによって行われ、かかる除算によって得られた商(0〜3)によってアクセスすべきフラッシュメモリチップが決定され、剰余(0〜7999)によって「論理ブロックアドレス」が決定される。かかる論理ブロックアドレスは、後述する「アドレス変換テーブル」にて、「物理ブロックアドレス」に変換され、これにより実際にアクセスすべきブロックが特定される。
【0062】
ここで、アドレス変換テーブルを用いて論理ブロックアドレスを物理ブロックアドレスに変換する必要性について説明する。
【0063】
上述のとおり、フラッシュメモリチップ2−0〜2−3を構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、ブロック単位でしか行うことができない。このため、あるページにデータを書き込む際には、そのページのユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれているページ、すなわち、そのページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっているページに、これと異なるデータを直接上書きすることはできない。したがって、既にデータの書き込まれたページに対し、これと異なる新しいデータを書き込むためには、一旦、このページが属するブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。
【0064】
したがって、あるページに格納された古いデータに新しいデータを上書きしようとする場合、このページが属するブロックに含まれる他のページに格納されたデータが消失するのを防ぐためには、当該他のページに格納されたデータを、他のブロックに移動させるという処理が必要となる。したがって、ホストアドレスより得られた論理ブロックアドレスと、当該論理ブロックアドレスに対応するフラッシュメモリチップ2−0〜2−3上の物理ブロックアドレスとの関係は、ホストコンピュータ5からデータの上書きが指示される度に動的に変化する。このような理由から、ホストコンピュータ5からフラッシュメモリチップ2−0〜2−3をアクセスするためには、論理ブロックアドレスと、当該論理ブロックアドレスに対応するフラッシュメモリ上の物理ブロックアドレスとの関係を示す情報が格納されるアドレス変換テーブルが必要となるのである。アドレス変換テーブルの詳細については後述する。
【0065】
次に、SRAMワークエリア8に格納される各種作業データについて説明する。SRAMワークエリア8には、少なくとも、アドレス変換テーブル27及び消去済みブロックキュー30が格納される。
【0066】
図6は、SRAMワークエリア8に格納されるアドレス変換テーブル27のデータ構造を示す概略図である。
【0067】
図6に示されるように、アドレス変換テーブル27は、テーブル#0〜#3からなる4つのテーブルによって構成され、これら各テーブルは、8000個のフラグ、8000個の物理ブロックアドレス格納領域及び8000個のスタートページ格納領域によって構成される。これらテーブル#0〜#3は、それぞれフラッシュメモリチップ2−0〜2−3に対応している。
【0068】
各テーブル#0〜#3内の8000個の物理ブロックアドレス格納領域#0〜#7999には、それぞれ対応する物理ブロックアドレス(13ビット)が格納され、これによって、論理ブロックアドレスと物理ブロックアドレスとの対応関係を示すアドレス変換情報が形成される。すなわち、テーブル#0内の物理ブロックアドレス格納領域#0〜#7999には、フラッシュメモリチップ2−0を構成する8000個の実使用ブロックの物理ブロックアドレスが割り当てられ、これら割り当てられた論理ブロックアドレスと、これに格納された物理ブロックアドレスとが、対応関係を有することになる。同様に、テーブル#1〜#3内の物理ブロックアドレス格納領域#0〜#7999には、それぞれフラッシュメモリチップ2−1〜2−3を構成する8000個の実使用ブロックの物理ブロックアドレスが割り当てられる。
【0069】
例えば、ホストコンピュータ5から供給されたホストアドレスの上位15ビットからなる「101010101010101B」であれば、これを8000で除した場合の商は「2」であり、剰余は「5845」であるから、テーブル#2内の物理ブロックアドレス格納領域#5845が選択され、ここに格納されている物理ブロックアドレス、例えば、格納されている物理ブロックアドレスが「0000000011111B」であれば、物理ブロックアドレスとして「31」が読み出され、これにより、フラッシュメモリチップ2−2における論理ブロックアドレス#5845から、フラッシュメモリチップ2−2における物理ブロックアドレス#31への変換が完了する。
【0070】
また、各テーブル#0〜#3内の8000個のフラグは、当該テーブル内の物理ブロックアドレス格納領域#0〜#7999にそれぞれ対応しており、対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値であるか否かを示す。具体的には、かかるフラグが「1」であれば対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値であることを示し、かかるフラグが「0」であれば対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスが有効な値ではないことを示す。したがって、対応するフラグが「0」である論理ブロックアドレスには、まだ物理ブロックアドレスが関連づけられていないことを意味する。
【0071】
さらに、各テーブル#0〜#3内の8000個のスタートページ格納領域#0〜#7999は、当該テーブル内の物理ブロックアドレス格納領域#0〜#7999にそれぞれ対応しており、対応する物理ブロックアドレス格納領域に格納された物理ブロックアドレスにより示されるブロックのスタートページに関する情報が格納される。
【0072】
各テーブル#0〜#3内の8000個のスタートページ格納領域#0〜#7999には、スタートページに関する情報が5ビットで格納されている。具体的には、スタートページ格納領域に格納されたスタートページが「00000B」である場合には、対応するブロックにはスタートページが存在しないことが示され、「00001B」である場合には、対応するブロックにスタートページは存在するが、上述したスタートページ検索によってスタートページを求める必要があることが示され、それ以外の値である場合には、その値がスタートページであることが示される。例えば、スタートページ格納領域に格納されたスタートページが「01100B」である場合には、当該ブロックのスタートページはページ#12となる。
【0073】
上述のように、アドレス変換テーブル27は、32000個の物理ブロック格納領域と32000個のスタートページ格納領域によって構成されており、各物理ブロック格納領域には13ビットの情報を格納する必要があり、各スタートページ格納領域には5ビットの情報を格納する必要があるから、アドレス変換テーブル27は、SRAMワークエリア8の記憶容量のうち、約72kバイトを占有することとなる。
【0074】
アドレス変換テーブル27の生成は、次のように行われる。
【0075】
フラッシュメモリチップ2−0〜2−3を構成する各ブロックのうち、データが格納されているブロックの各先頭ページ(ページ#0)に含まれる冗長領域26には、上述のとおり、当該ブロックがいかなる論理ブロックアドレスに対応するかを示す対応論理ブロックアドレス29が含まれており、各ブロックの各先頭ページに格納されている対応論理ブロックアドレス29及びCRC31がマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0076】
このとき、CRC31を用いることによって、各対応論理ブロックアドレス29に誤りが含まれているか否かがチェックされ、対応論理ブロックアドレス29に誤りが含まれていると判断された場合には、当該ブロックのページ#1に格納されている対応論理ブロックアドレス29及びCRC31が新たに読み出される。このようにして、ページ#1から読み出された対応論理ブロックアドレス29についても、CRC31を用いることによって誤りが含まれているか否かがチェックされ、対応論理ブロックアドレス29に誤りが含まれていると判断された場合には、当該ブロックのページ#2に格納されている対応論理ブロックアドレス29及びCRC31が新たに読み出される。このような処理はページ#3まで行われ、ページ#3の対応論理ブロックアドレス29にも誤りがあれば、当該ブロックは不良ブロックであるか否か診断され、その結果不良ブロックであると診断されれば、その後の使用が禁止される。
【0077】
一方、各ブロックのページ#0〜#3のいずれかから誤りのない対応論理ブロックアドレス29が読み出された場合、マイクロプロセッサ6による制御のもと、かかる対応論理ブロックアドレス29を用いて、これらブロックが消去済みの空きブロックであるか否かが判断される。
【0078】
ここで、消去済みの空きブロックにおいては、冗長領域26に格納されている対応論理ブロックアドレス29は「オール1(1111111111111B)」となっているはずである。すなわち、対応論理ブロックアドレス29は、上述のとおり、#0(0000000000000B)〜#7999(1111100111111B)までしかなく、したがって、これがオール1(1111111111111B)である場合には、当該ブロックが消去済みの空きブロックであると判断することができる。一方、対応論理ブロックアドレス29が「0000000000000B」〜「1111100111111B」である場合には、当該対応論理ブロックアドレス29は有効な論理ブロックアドレスである。
【0079】
したがって、マイクロプロセッサ6は、各ブロックのページ#0〜#3の冗長領域26に含まれる対応論理ブロックアドレス29を参照し、これがオール1ではなく有効な論理ブロックアドレスの番号を示していれば、チップ番号に対応するテーブルに属する物理ブロックアドレス格納領域のうち、読み出された対応論理ブロックアドレス29と同じ論理ブロックアドレスが割り当てられた物理ブロックアドレス格納領域に、かかる対応論理ブロックアドレス29を読み出したブロックの物理ブロックアドレスを格納するとともに、対応するフラグを「1」とする。例えば、対応論理ブロックアドレス29を読み出したブロックがフラッシュメモリチップ2−0に属し、その物理ブロックアドレスが「10」であり、読み出された対応論理ブロックアドレス29が「123」であれば、テーブル#0に属する物理ブロックアドレス格納領域のうち、論理ブロックアドレスとして「123」が割り当てられた物理ブロックアドレス格納領域#123に、物理ブロックアドレスとして「10」が書き込まれ、さらに、対応するフラグが「1」にされる。
【0080】
さらに、マイクロプロセッサ6は、対応論理ブロックアドレス29が有効な論理ブロックアドレスの番号を示していれば、当該ブロックの各先頭ページ(ページ#0)の冗長領域26に格納されているスタートページフラグ32を参照する。ページ#0におけるスタートページフラグ32は、上述のとおり、「1x」であれば当該ブロックにスタートページが存在することを示し、「0x」であれば当該ブロックにスタートページが存在しないことを示す。そして、スタートページフラグを参照した結果、これが「1x」であれば、アドレス変換テーブル27内の対応するスタートページ格納領域の内容を「00001B」とし、これが「0x」であれば、アドレス変換テーブル27内の対応するスタートページ格納領域の内容を「00000B」とする。
【0081】
一方、対応論理ブロックアドレス29が有効な論理ブロックアドレスの番号を示していれば、チップ番号に対応するテーブルに属する物理ブロックアドレス格納領域のうち、読み出された対応論理ブロックアドレス29と同じ論理ブロックアドレスが割り当てられた物理ブロックアドレス格納領域に対応するフラグを「1」とする。
【0082】
以上のような処理が、データの格納されている全てのブロックについて行われ、これによりアドレス変換テーブル27の作成作業が完了する。
【0083】
次に、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造について説明する。
【0084】
図7は、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造を示す概略図である。
【0085】
図7に示されるように、消去済みブロックキュー30は、キュー#0〜#7からなる8つのキューによって構成される。これら各キュー#0〜#7は、それぞれSRAMワークエリア8の2バイトの記憶領域を使用しており、それぞれには物理ブロックアドレスが、13ビットのデータによって格納されている。したがって、消去済みブロックキュー30は、SRAMワークエリア8の記憶容量のうち、16バイトを占有することとなる。
【0086】
消去済みブロックキュー30を構成するキュー#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用のキューである。
【0087】
消去済みブロックキュー30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル27の生成の際に行われる。
【0088】
すなわち、フラッシュメモリチップ2−0〜2−3を構成する各ブロックのページ#0〜ページ#3に含まれる冗長領域26には、上述のとおり、対応論理ブロックアドレス29が含まれており、アドレス変換テーブル27が生成される際、マイクロプロセッサ6による制御のもと、対応論理ブロックアドレス29が「オール1(1111111111111B)」となっているブロックが検索される。かかる検索により、各フラッシュメモリチップついて、最大192個の消去済みブロックが検出されて冗長ブロックとなり、さらにこの中から最大2つの冗長ブロックが選択されて、その物理ブロックアドレスが、対応するフラッシュメモリチップ用の2つのキューに格納される。
【0089】
消去済みブロックキュー30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル27の生成の際に行われる。
【0090】
次に、本実施態様にかかるフラッシュメモリシステム1による種々のデータ書き込み動作について説明する。
【0091】
書き込み動作1(空きブロックにデータを書き込む場合)
空きブロックにデータを書き込む場合、ユーザデータを書き込むべきページ、並びに、ユーザデータを書き込むべきページとは無関係に当該ブロックのページ#0〜#3及びページ#31の冗長領域26には、対応論理ブロックアドレス29及びCRC31が格納される。
【0092】
ページ#0〜#3の冗長領域26に対応論理ブロックアドレス29及びCRC31を格納するのは、上述したアドレス変換テーブル27の作成の際にこれが参照されるからである。また、ページ#31の冗長領域26に対応論理ブロックアドレス29及びCRC31を格納するのは、ブロック間転送が行われている途中で不意に電源が切断された等の理由により、その内容が不完全なブロックが存在する場合に、当該ブロックの直前の状態における対応論理ブロックアドレスの特定を可能とするためである。
【0093】
ここで、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象として、ページ#0〜#3を選択しているのは次の理由による。すなわち、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象となるページが少なければ少ないほど、ユーザデータを書き込むべきページ以外のページに対する書き込み処理が減少するため、一連の書き込み処理をより高速に実行することが可能となる反面、対応論理ブロックアドレス29にエラーが発生した場合にこれを救済できる確率が減少する。一方、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象となるページが多ければ多いほど、対応論理ブロックアドレス29にエラーが発生した場合にこれを救済できる確率が高くなる反面、ユーザデータを書き込むべきページ以外のページに対する書き込み処理が増加するため、一連の書き込み処理により多くの時間がかかる。このため、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象となるページを、先頭ページ(ページ#0)を含む何ページとするかは、これらを考慮して決定する必要がある。そこで、本実施態様においては、ページ#0〜#3に格納された対応論理ブロックアドレス29がいずれもエラーを含んでいる場合は、当該ブロックに致命的な不良が存在する可能性が極めて高いと考えられることから、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象となるページとして、ページ#0〜#3を選択しているのである。
【0094】
一方、実際にユーザ領域25にデータが書き込まれるページに関しては、これがページ#0〜#3及びページ#31以外であっても、当該ページの冗長領域26には、対応論理ブロックアドレス29及びCRC31が格納される。
【0095】
以上より、空きブロックにデータを書き込む場合、ユーザデータを書き込むべきページ、ページ#0〜#3及びページ#31に対しては、必ず書き込み処理が実行されることになる。一方、ページ#4〜#30に属し、且つ、ユーザデータを書き込むべきページではないページ対しては、対応論理ブロックアドレス29及びCRC31の書き込み処理は行われない。
【0096】
次に、空きブロックにデータを書き込む場合における、冗長領域26内のスタートページフラグ32及びスタートページデータ33の書き込みについて説明する。
【0097】
空きブロックにデータを書き込む場合、当該書き込み処理によってスタートページとなるページの番号が、スタートページデータ33としてページ#0の冗長領域26に書き込まれるとともに、ページ#0の冗長領域26のスタートページフラグ32が「10」に書き換えられる。但し、当該書き込み処理を行った結果、スタートページが存在しない場合、すなわち、ユーザデータを書き込むべきページにページ#31が含まれている場合には、ページ#0の冗長領域26のスタートページフラグ32が「0x」に書き換えられる。
【0098】
ここで、スタートページとなるページとは、ユーザデータを書き込むべきページの最終ページの次のページである。
【0099】
以上説明した、空きブロックに対するデータの書き込み処理について、具体的な例を挙げてより詳細に説明する。
【0100】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、2つのホストアドレス「00000011111010000001B」(ホストアドレス#0)及び「00000011111010000010B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0101】
まず、ホストアドレス#0、#1及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、ECCブロック11に送出される。書き込みデータの供給を受けたECCブロック11は、これを解析してエラーコレクションコード28を生成し、これを一時的に保持する。さらに、ECCブロック11は、スタートページデータとして、ホストアドレス#1の下位5ビットに1を加算したデータを生成し、これを一時的に保持する。この場合、スタートページデータは、「00011(3)」となる。
【0102】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0、#1が正しいアドレスであるか否か、すなわち、これらホストアドレスが、本来存在しないアドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0103】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0、#1が有効なアドレスであると判断されれば、アドレス変換テーブル27を用いて内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータ5は、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0104】
内部アドレスへの変換は、次のように行われる。
【0105】
まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位15ビットが取り出され、これが「8000」で除される。そして、かかる除算によって得られた商(0〜3)によってアクセスすべきフラッシュメモリチップが特定され、剰余(0〜7999)によってブロックが特定される。本例では、ホストアドレスの上位15ビットが「000000111110100B」であるから、商は「00000B(0)」であり、剰余は「0111110100B(500)」となる。これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ2−0となり、論理ブロックアドレスは論理ブロックアドレス#500となる。
【0106】
次に、マイクロプロセッサ6による制御のもと、アドレス変換テーブル27内のテーブル#0から、論理ブロックアドレス#500に基づいて、物理ブロックアドレス格納領域#500に対応するフラグが読み出される。本例においては、当該フラグは「0」であり、これにより、ホストアドレス#0、#1に対応するブロックが存在しないことが検出される。
【0107】
これに応答して、マイクロプロセッサ6による制御のもと、消去済みブロックキュー30を構成するキュー#0〜#7のうち、フラッシュメモリチップ2−0用のキューであるキュー#0(またはキュー#1)に格納された物理ブロックアドレスが読み出される。ここでは、例えば、キュー#0に格納された物理ブロックアドレスが「0000000000100B(4)」であるとする。上述のとおり、消去済みブロックキュー30のキュー#0に格納された物理ブロックアドレスは、フラッシュメモリチップ2−0に含まれる消去済みブロック、すなわち、ユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっているブロックの物理ブロックアドレス(13ビット)である。
【0108】
キュー#0に格納されていた物理ブロックアドレス「0000000000100B(4)」が読み出されると、これがテーブル#0内の物理ブロックアドレス格納領域#500に格納されるとともに、物理ブロックアドレス格納領域#500に対応するスタートページ格納領域#500に、上記スタートページ「00011(3)」が格納される。さらに、対応するフラグが「1」に書き換えられる。そして、マイクロプロセッサ6による制御のもと、選択されたチップ番号、上記物理ブロックアドレス、及びホストアドレス#0、#1の下位5ビットがこの順に結合される。結合されたアドレスは、内部アドレスとなる。この場合、選択されたチップ番号は「00B」であり、読み出されたキューの内容は「0000000000100B」であり、ホストアドレス#0、#1の下位5ビットはそれぞれ「00001B」、「00010B」であることから、得られる内部アドレス#0、#1は、それぞれ「00000000000010000001B」、「00000000000010000010B」となる。
【0109】
以上より、ホストアドレス#0、#1から内部アドレス#0、#1への変換が完了する。かかる内部アドレスは、上位2ビットによってフラッシュメモリチップを特定し、上位3ビット目〜上位15ビット目からなる13ビットによって当該フラッシュメモリチップ内のブロックを特定し、下位5ビットによって当該ブロック内のページを特定するので、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#1となり、内部アドレス#1によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#2となる。
【0110】
このようにして内部アドレスの生成が完了すると、次にマイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0111】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種である内部書き込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された内部アドレス#0、#1がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0112】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、フラッシュメモリチップ2−0内のブロック#4のページ#0に対する各種冗長データの書き込み、同ブロックのページ#1に対するユーザデータ及び各種冗長データの書き込み、同ブロックのページ#2に対するユーザデータ及び各種冗長データの書き込み、同ブロックのページ#3に対する各種冗長データの書き込み、同ブロックページ#31に対する各種冗長データの書き込みの順に実行される。
【0113】
まず、ブロック#4のページ#0に対する書き込み処理について説明する。
【0114】
かかる動作においては、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレス#0の上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0115】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位5ビットを「00000B」とした書き込みアドレスを生成し、その下位18ビット「000000000010000000B」を、所定のレジスタに格納された内部書き込みコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された18ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0116】
これにより、フラッシュメモリチップ2−0は、ブロック#4のページ#0に書き込まれるべきのデータの受け付けが許可された状態となる。
【0117】
次に、ブロック#4のページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、ブロック#4のページ#0に書き込むべきデータとは、対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、対応論理ブロックアドレス29は「0000111110100B(500)」であり、CRC31は「0000111110100B(500)」に対応するコードであり、スタートページフラグ32は「10」であり、スタートページデータ33は「00011(3)」である。ページ#0のその他の部分、すなわち、ユーザ領域25の全部分、冗長領域26のうちエラーコレクションコード28及びその他の部分には何らのデータも書き込まれない。但し、各ページに対するデータの書き込みは、ページ単位で一括して行われるため、実際には、上記データを書き込まない部分については、書き込み処理が実行されないのではなく、「オール1」からなる書き込みデータが書き込まれることになる。
【0118】
バス15に供給された対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報は、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる。
【0119】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して、対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報が転送されると、かかる対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0120】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する。これに応答して、フラッシュメモリチップ2−0は、レジスタに格納されている対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報をブロック#4のページ#0の所定の位置に書き込む(フラッシュプログラミング)。
【0121】
これにより、ブロック#4のページ#0に対する書き込み処理が完了する。
【0122】
ブロック#4のページ#0に対する書き込み処理が完了すると、次に、ブロック#4のページ#1に対する書き込み処理が実行される。
【0123】
ブロック#4のページ#1に対する書き込み処理においては、上述と同様にしてチップ選択信号#0が活性化される。次いで、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000000010000001B」を、所定のレジスタに格納された内部書き込みコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。上述のとおり、チップ選択信号#0が活性状態となっているため、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0124】
これにより、フラッシュメモリチップ2−0は、ブロック#4のページ#1に書き込まれるべきのデータの受け付けが許可された状態となる。
【0125】
次に、ブロック#4のページ#1に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、ブロック#4のページ#1に書き込むべきデータとは、ホストアドレス#0に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード28、対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報である。これらのうち、対応論理ブロックアドレス29、CRC31、スタートページフラグ32及びスタートページデータ33は、ページ#0に対するこれらデータと同じ内容である。
【0126】
これらデータは、上述と同様、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納され、内部書き込みコマンドの発行に応答してブロック#4のページ#1の所定の位置に書き込まれる。すなわち、ページ#1のユーザ領域25には、ホストアドレス#0に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28、対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及びその他の付加情報が格納される。
【0127】
これにより、ブロック#4のページ#1に対する書き込み処理が完了する。
【0128】
ブロック#4のページ#1に対する書き込み処理が完了すると、次に、ブロック#4のページ#2に対する書き込み処理が実行される。
【0129】
ブロック#4のページ#2に対する書き込み処理は内部アドレス#1を用いて行われ、その手順は、ブロック#4のページ#1に対する上記書き込み処理と同様である。これによって、ページ#2のユーザ領域25には、ホストアドレス#1に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28、対応論理ブロックアドレス29、CRC31、スタートページフラグ32、スタートページデータ33及びその他の付加情報が格納される。
【0130】
これにより、ブロック#4のページ#2に対する書き込み処理が完了する。
【0131】
ブロック#4のページ#2に対する書き込み処理が完了すると、次に、ブロック#4のページ#3に対する書き込み処理が実行される。
【0132】
ブロック#4のページ#3に対する書き込み処理は、スタートページフラグ32及びスタートページデータ33が書き込まれない点を除き、上述したブロック#4のページ#0に対する書き込み処理と同様である。これによって、ページ#3の冗長領域26には、対応論理ブロックアドレス29及びCRC31が格納される。
【0133】
これにより、ブロック#4のページ#3に対する書き込み処理が完了する。
【0134】
ブロック#4のページ#3に対する書き込み処理が完了すると、次に、ブロック#4のページ#31に対する書き込み処理が実行される。
【0135】
ブロック#4のページ#31に対する書き込み処理は、上述したブロック#4のページ#3に対する書き込み処理と同様である。これによって、ページ#31の冗長領域26には、対応論理ブロックアドレス29及びCRC31が格納される。
【0136】
これにより、一連の書き込み処理が完了する。
【0137】
図8は、上記一連の書き込み処理が完了した状態におけるブロック#4の内容を示す概略図である。
【0138】
図8では、ユーザ領域25については、ユーザデータの格納されている部分にハッチングが施されており、冗長領域26については、対応論理ブロックアドレス29、スタートページフラグ32及びスタートページデータ33のみが示され、エラーコレクションコード28、CRC31及びその他の付加情報については省略されている。
【0139】
図8に示されるように、ブロック#4のページ#1及び#2にのみユーザデータが格納されており、その他のページにはユーザデータが格納されていないので、当該ブロックにおけるスタートページは「3」であり、かかる値がページ#0のスタートページデータ33として格納されていることが分かる。このため、コントローラ3は、このブロックのページ#3〜#31が空きページであることを知ることが可能となり、その後、ホストコンピュータ5よりブロック#4のページ#3〜#31に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、ページ#3〜#31へ直接データを書き込むことが可能となる。
【0140】
尚、上記の例では、先頭ページであるページ#0以外のページ(ユーザデータを書き込んだページ#1及び#2)にも、スタートページフラグ32及びスタートページデータ33を書き込んでいるが、これを省略しても構わない。
【0141】
書き込み動作2(使用済みブロックにデータを追加して書き込む場合)
すでにデータの格納されているブロック(使用済みブロック)にデータを追加して書き込む場合、アドレス変換テーブル27内の対応するスタートページ格納領域を参照することによって、当該ブロックへのデータの追加的な書き込みが可能であるか否かが判断される。
【0142】
かかる判断においては、まず、当該ブロックに関するスタートページの特定が行われる。スタートページの特定は、上述のとおり、スタートページ検索によって特定する方法と、アドレス変換テーブル27内のスタートページ格納領域に格納されたスタートページから直接特定する方法がある。
【0143】
前者の方法によるスタートページの特定は、スタートページは存在するものの、コントローラ3が起動されてから当該ブロックへのデータの書き込みが未だ行われていない場合に実行される。すなわち、アドレス変換テーブル27の作成の際に、当該ブロックのページ#0(または、ページ#1〜#3)に含まれる対応論理ブロックアドレス29が有効な論理ブロックアドレスを示しており、且つ、スタートページフラグが「1x」であった場合、アドレス変換テーブル27内の対応するスタートページ格納領域は「00001B」とされるので、この場合、コントローラ3は、スタートページ検索を行うことによって当該ブロックに関するスタートページを特定することが可能となる。
【0144】
一方、後者の方法によるスタートページの特定は、上記書き込み動作1において説明したように、コントローラ3が起動された後、当該ブロックへのデータの書き込みが少なくとも1回行われた場合に実行される。すなわち、当該ブロックへのデータの書き込みが少なくとも1回行われた場合、上述のとおり、アドレス変換テーブル27内の対応するスタートページ格納領域にスタートページが書き込まれるので、この場合、コントローラ3は、対応するスタートページ格納領域を参照することによって当該ブロックに関するスタートページを特定することが可能となる。
【0145】
このようにいずれかの方法でスタートページが特定されると、次に、かかるスタートページと書き込み対象であるページの先頭ページとが比較され、これによってデータの追加的な書き込みが可能であるか否かが最終的に判断される。かかる判断は、書き込み対象であるページの先頭ページを示す5ビットの値が、スタートページを示す5ビットの値と同じか、またはこれを超えていれば、データの追加的な書き込みが可能であるとされ、書き込み対象であるページの先頭ページを示す5ビットの値が、スタートページを示す5ビットの値未満であれば、データの追加的な書き込みが不可能であるとされる。
【0146】
かかる判断の結果、データの追加的な書き込みが不可能であると判断されれば、通常どおり、ブロック間転送が行われる。
【0147】
一方、かかる判断の結果、データの追加的な書き込みが可能であると判断されれば、以下に詳述する、データの追加的な書き込み処理が行われる。
【0148】
データの追加的な書き込み処理を行う場合、ユーザデータを書き込むべきページの先頭ページがスタートページと一致しているか否かによって、行われる処理が異なる。
【0149】
まず、ユーザデータを書き込むべきページの先頭ページがスタートページと一致している場合、すなわち、スタートページに対してユーザデータの書き込みが行われる場合には、当該書き込み処理によって新たなスタートページとなるページの番号が、スタートページデータ33としてユーザデータを書き込むべき各ページの冗長領域26に書き込まれる。
【0150】
一方、書き込み対象であるページの先頭ページがスタートページと一致していない場合、すなわち、スタートページに対してユーザデータの書き込みが行われない場合には、当該書き込み処理によって新たなスタートページとなるページの番号が、スタートページデータ33として現在のスタートページ及び書き込み対象の各ページの冗長領域26に書き込まれる。
【0151】
さらに、データの追加的な書き込みが行われる場合、当該書き込み処理によって新たなスタートページとなるページの番号が、現在のスタートページの冗長領域26に書き込まれる。但し、当該書き込み処理を行った結果、スタートページが存在しない場合、すなわち、ユーザデータを書き込むべきページにページ#31が含まれている場合には、ページ#0の冗長領域26のスタートページフラグ32が「0x」に書き換えられる。
【0152】
ここで、新たなスタートページとなるページとは、書き込み対象であるページの最終ページの次のページである。
【0153】
以上説明した、空きブロックに対するデータの書き込み処理について、具体的な例を挙げてより詳細に説明する。
【0154】
まず、ユーザデータを書き込むべきページの先頭ページがスタートページと一致している場合について説明する。
【0155】
ユーザデータを書き込むべきページの先頭ページがスタートページと一致している場合
ここでは、上述した書き込み動作1が完了した直後の状態において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、2つのホストアドレス「00000011111010000011B」(ホストアドレス#0)及び「00000011111010000100B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0156】
ホストアドレス#0、#1及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0157】
内部アドレスへの変換は、次のように行われる。
【0158】
まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位15ビットが取り出され、これが「8000」で除される。そして、かかる除算によって得られた商(0〜3)によってアクセスすべきフラッシュメモリチップが特定され、剰余(0〜7999)によって論理ブロックアドレスが特定される。
本例では、ホストアドレスの上位15ビットが「000000111110100B」であるから、商は「00000B(0)」であり、剰余は「0111110100B(500)」となる。これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ2−0となり、論理ブロックアドレスは論理ブロックアドレス#500となる。
【0159】
次に、マイクロプロセッサ6による制御のもと、アドレス変換テーブル27内のテーブル#0から、論理ブロックアドレス#500に基づいて、物理ブロックアドレス格納領域#500に対応するフラグが読み出される。本例においては、当該フラグは「1」であり、これにより、ホストアドレス#0、#1に対応するブロックが存在することが検出される。これに応答して、物理ブロックアドレス格納領域#500に格納された内容が読み出される。本例においては、物理ブロックアドレス格納領域#500の内容は「0000000000100B」であり、これにより、ホストアドレス#0、#1に対応するブロックがフラッシュメモリチップ2−0内のブロック#4であることが検出される。
【0160】
次に、マイクロプロセッサ6による制御のもと、アドレス変換テーブル27内のテーブル#0から、論理ブロックアドレス#500に基づいて、スタートページ格納領域#500が選択され、ここに格納された内容が読み出される。本例においては、スタートページ格納領域#500の内容は「00011B(3)」である。
【0161】
このようにしてスタートページが読み出されると、マイクロプロセッサ6による制御のもと、書き込み対象であるページの先頭ページとの比較が行われる。この場合、書き込み対象であるページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「00011(3)」と、ホストアドレス#0の下位5ビットの値「00011(3)」とが比較されることとなる。このように、本例では、ホストアドレス#0の下位5ビットの値「00011(3)」がスタートページの値「00011(3)」と一致しているので、データの追加的な書き込みが可能であると判断される。
【0162】
さらに、マイクロプロセッサ6による制御のもと、ユーザデータが書き込まれるべきページの最終ページを示すホストアドレス#1の下位5ビットに1を加算したデータを生成し、これによって新たなスタートページが生成される。かかるスタートページの値は、スタートページデータとして、ECCブロック11内に一時的に保持される。この場合、ホストアドレス#1の下位5ビットが「00100(4)」であるから、ECCブロック11内に格納されるスタートページデータは「00101(5)」となる。
【0163】
そして、マイクロプロセッサ6による制御のもと、選択されたチップ番号、上記物理ブロックアドレス、及びホストアドレス#0、#1の下位5ビットがこの順に結合される。結合されたアドレスは、内部アドレスとなる。この場合、選択されたチップ番号は「00B」であり、物理ブロックアドレスは「0000000000100B」であり、ホストアドレス#0、#1の下位5ビットはそれぞれ「00011B」、「00100B」であることから、得られる内部アドレス#0、#1は、それぞれ「00000000000010000011B」、「00000000000010000100B」となる。
【0164】
さらに、物理ブロックアドレス格納領域#500に対応するスタートページ格納領域#500に、上記スタートページ「00101(5)」が上書きされる。
【0165】
以上より、ホストアドレス#0、#1から内部アドレス#0、#1への変換が完了する。これにより、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#3となり、内部アドレス#1によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#4となる。
【0166】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、フラッシュメモリチップ2−0内のブロック#4のページ#3に対するユーザデータ及び各種冗長データの書き込み、同ブロックのページ#4に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0167】
まず、ブロック#4のページ#3に対する書き込み処理について説明する。
【0168】
尚、ブロック#4のページ#3には、上記書き込み動作1において、すでに対応論理ブロックアドレス29の書き込みが実行されているが、ユーザ領域25を構成するフラッシュメモリセル16は全て消去状態(論理値=1)に保たれているので、ユーザデータの書き込みは可能である。
【0169】
ブロック#4のページ#3に対する書き込み処理においては、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレス#0の上位2ビットに基づき、チップ選択信号#0を活性化させる。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0170】
次いで、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000000010000011B」を、所定のレジスタに格納された内部書き込みコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。上述のとおり、チップ選択信号#0が活性状態となっているため、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0171】
これにより、フラッシュメモリチップ2−0は、ブロック#4のページ#3に書き込まれるべきデータの受け付けが許可された状態となる。
【0172】
次に、ブロック#4のページ#3に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、ブロック#4のページ#3に書き込むべきデータとは、ホストアドレス#0に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード28、スタートページフラグ32、スタートページデータ33及び冗長領域26に格納されるその他の付加情報である。
【0173】
これらデータは、上述と同様、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納され、内部書き込みコマンドの発行に応答してブロック#4のページ#3の所定の位置に書き込まれる。すなわち、ページ#3のユーザ領域25には、ホストアドレス#0に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28、スタートページフラグ32、スタートページデータ33及びその他の付加情報が格納される。
【0174】
これにより、ブロック#4のページ#3に対する書き込み処理が完了する。
【0175】
ブロック#4のページ#3に対する書き込み処理が完了すると、次に、ブロック#4のページ#4に対する書き込み処理が実行される。
【0176】
ブロック#4のページ#4に対する書き込み処理は内部アドレス#1を用いて行われ、その手順は、ブロック#4のページ#3に対する上記書き込み処理と同様である。これによって、ページ#4のユーザ領域25には、ホストアドレス#1に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28、スタートページフラグ32、スタートページデータ33及びその他の付加情報が格納される。
【0177】
これにより、一連の書き込み処理が完了する。
【0178】
図9は、上記一連の書き込み処理が完了した状態におけるブロック#4の内容を示す概略図である。
【0179】
図9では、ユーザ領域25については、ユーザデータの格納されている部分にハッチングが施されており、冗長領域26については、対応論理ブロックアドレス29、スタートページフラグ32及びスタートページデータ33のみが示され、エラーコレクションコード28、CRC31及びその他の付加情報については省略されている。
【0180】
図9に示されるように、ブロック#4のページ#1〜#4にのみユーザデータが格納されており、その他のページにはユーザデータが格納されていないので、当該ブロックにおけるスタートページは「5」であり、かかる値がページ#3のスタートページデータ33として格納されていることが分かる。このため、コントローラ3は、スタートページ検索によって、このブロックのページ#5〜#31が空きページであることを知ることが可能となり、その後、ホストコンピュータ5よりブロック#4のページ#5〜#31に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、ページ#5〜#31へ直接データを書き込むことが可能となる。
【0181】
尚、上記の例では、書き込み対象のページ#3及び#4のうち、従前のスタートページ(ページ#3)以外のページ(ページ#4)にも、スタートページデータ33を書き込んでいるが、これを省略しても構わない。
【0182】
さらに、上記の例では、書き込み対象のページ#3及び#4に対応論理ブロックアドレス29及びCRC31を書き込まなかったが、ページ#4にこれらを書き込んでも構わない。但し、ページ#4に書き込まれたこれらデータが使用されることはない。
【0183】
また、上記の例では、スタートページ格納領域#500から直接スタートページを入手しているが、上記書き込み動作1が行われた後、コントローラ3がリセットされたことによりSRAMワークエリア8の内容が一旦消去されている場合には、スタートページ格納領域#500から直接スタートページを入手することはできない。この場合、コントローラ3のリセット時に実行されるアドレス変換テーブル27の作成作業によって、スタートページ格納領域#500の内容が「00001B」となるので、上述したスタートページ検索によってスタートページを入手する必要がある。
【0184】
次に、ユーザデータを書き込むべきページの先頭ページがスタートページと一致していない場合について説明する。
【0185】
ユーザデータを書き込むべきページの先頭ページがスタートページと一致していない場合
ここでは、上述した書き込み動作1が完了した直後の状態において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、ホストアドレス「00000011111010000101B」(ホストアドレス#0)と、このホストアドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0186】
まず、ホストアドレス#0及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0187】
本例においては、スタートページ格納領域#500に格納されたスタートページの値「00011B(3)」と、ユーザデータを書き込むべきページの先頭ページとの比較が行われる。この場合、ユーザデータを書き込むべきページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「00011(3)」と、ホストアドレス#0の下位5ビットの値「00101(5)」とが比較されることとなる。このように、本例では、ホストアドレス#0の下位5ビットの値「00101(5)」がスタートページの値「00011(3)」を超えているので、データの追加的な書き込みが可能であると判断される。
【0188】
さらに、マイクロプロセッサ6による制御のもと、ユーザデータを書き込むべきページの最終ページを示すホストアドレス#0の下位5ビットに1を加算したデータを生成し、これによって新たなスタートページが生成される。かかるスタートページの値は、スタートページデータとして、ECCブロック11内に一時的に保持されする。この場合、ホストアドレス#0の下位5ビットが「00101(5)」であるから、ECCブロック11内に格納されるスタートページデータは「00110(6)」となる。
【0189】
ホストアドレスから内部アドレスへの変換の手順については、すでに説明したとおりであり、得られる内部アドレス#0は、「00000000000010000101B」となる。
【0190】
さらに、物理ブロックアドレス格納領域#500に対応するスタートページ格納領域#500に、上記スタートページ「00110(6)」が上書きされる。
【0191】
以上より、ホストアドレス#0から内部アドレス#0への変換が完了する。これにより、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#5となる。
【0192】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、フラッシュメモリチップ2−0内のブロック#4のページ#3に対する各種冗長データの書き込み、同ブロックのページ#5に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0193】
まず、ブロック#4のページ#3に対する書き込み処理について説明する。
【0194】
尚、ブロック#4のページ#3には、上記書き込み動作1において、すでに対応論理ブロックアドレス29の書き込みが実行されているが、スタートページフラグ32及びスタートページデータ33を構成するフラッシュメモリセル16は全て消去状態(論理値=1)に保たれているので、スタートページフラグ32及びスタートページデータ33の書き込みは可能である。
【0195】
ブロック#4のページ#3に対する書き込み処理においては、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレス#0の上位2ビットに基づき、チップ選択信号#0を活性化させる。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0196】
次いで、フラッシュシーケンサブロック12は、内部アドレス#0の下位5ビットを従前のスタートページ「00011B」とした書き込みアドレスを生成し、その下位18ビット「000000000010000011B」を、所定のレジスタに格納された内部書き込みコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。上述のとおり、チップ選択信号#0が活性状態となっているため、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0197】
これにより、フラッシュメモリチップ2−0は、ブロック#4のページ#3に書き込まれるべきのデータの受け付けが許可された状態となる。
【0198】
次に、ブロック#4のページ#3に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、ブロック#4のページ#3に書き込むべきデータとは、スタートページフラグ32及びスタートページデータ33である。
【0199】
かかるデータは、上述と同様、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納され、内部書き込みコマンドの発行に応答してブロック#4のページ#3の所定の位置に書き込まれる。すなわち、ページ#3の冗長領域26には、スタートページフラグ32及びスタートページデータ33が格納される。
【0200】
これにより、ブロック#4のページ#3に対する書き込み処理が完了する。
【0201】
ブロック#4のページ#3に対する書き込み処理が完了すると、次に、ブロック#4のページ#5に対する書き込み処理が実行される。
【0202】
ブロック#4のページ#5に対する書き込み処理は内部アドレス#0を用いて行われ、その手順は、すでに繰り返し説明したとおりである。これによって、ページ#5のユーザ領域25には、ホストアドレス#0に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28、スタートページデータ33及びその他の付加情報が格納される。
【0203】
これにより、一連の書き込み処理が完了する。
【0204】
図10は、上記一連の書き込み処理が完了した状態におけるブロック#4の内容を示す概略図である。
【0205】
図10では、ユーザ領域25については、ユーザデータの格納されている部分にハッチングが施されており、冗長領域26については、対応論理ブロックアドレス29、スタートページフラグ32及びスタートページデータ33のみが示され、エラーコレクションコード28、CRC31及びその他の付加情報については省略されている。
【0206】
図10に示されるように、ブロック#4のページ#1、#2、#5にのみユーザデータが格納されており、その他のページにはユーザデータが格納されていないので、当該ブロックにおけるスタートページは「6」であり、かかる値がページ#3のスタートページデータ33として格納されていることが分かる。このため、コントローラ3は、スタートページ検索によって、このブロックのページ#6〜#31が空きページであることを知ることが可能となり、その後、ホストコンピュータ5よりブロック#4のページ#6〜#31に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、ページ#6〜#31へ直接データを書き込むことが可能となる。
【0207】
尚、上記の例では、書き込み対象のページ#5にも、スタートページデータ33を書き込んでいるが、これを省略しても構わない。
【0208】
さらに、上記の例では、書き込み対象のページ#5に対応論理ブロックアドレス29及びCRC31を書き込まなかったが、これらを書き込んでも構わない。但し、これらが使用されないことは上述のとおりである。
【0209】
また、上記の例では、スタートページ格納領域#500から直接スタートページを入手しているが、上記書き込み動作1が行われた後、コントローラ3がリセットされたことによりSRAMワークエリア8の内容が一旦消去されている場合には、上述したスタートページ検索によってスタートページを入手する必要がある。
【0210】
尚、上記の例では、ユーザデータが追加的に書き込まれるページがページ#5であり、新たなスタートページがページ#6となる場合を説明したが、ユーザデータが追加的に書き込まれるページにページ#30が含まれ、これによって新たなスタートページがページ#31となる場合は、現在のスタートページ(ページ#3)のスタートページフラグ32が「0」とされる。これにより、スタートページがページ#3ではなく、ページ#31であることが示され、スタートページ検索によってこれを検出することが可能となる。
【0211】
書き込み動作3(最終ページ#31にデータを書き込む場合)
最終ページ#31にデータを書き込む場合は、かかるブロックが空きブロックであるか、すでにデータの格納されているブロック(使用済みブロック)であるかに関わらず、当該ブロックの先頭ページ#0のスタートページフラグ32に「0」が格納され、さらに、アドレス変換テーブル27の対応するスタートページ格納領域に「00000B」が格納される。これにより、当該ブロックに対するデータの追加的な書き込みができないことが示される。
【0212】
以上説明した、空きブロックに対するデータの書き込み処理について、具体的な例を挙げてより詳細に説明する。
【0213】
ここでは、上述した書き込み動作1が完了した直後の状態において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、ホストアドレス「00000011111010011111B」(ホストアドレス#0)と、かかるホストアドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0214】
まず、ホストアドレス#0及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0215】
本例においては、スタートページ格納領域#500に格納されたスタートページの値「00011B(3)」と、ユーザデータを書き込むべきページの先頭ページとの比較が行われる。この場合、ユーザデータを書き込むべきページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「00011(3)」と、ホストアドレス#0の下位5ビットの値「11111(31)」とが比較されることとなる。このように、本例では、ホストアドレス#0の下位5ビットの値「11111(31)」がスタートページの値「00011(3)」を超えているので、データの追加的な書き込みが可能であると判断される。
【0216】
ホストアドレスから内部アドレスへの変換の手順については、すでに説明したとおりであり、得られる内部アドレス#0は、「00000000000010011111B」となる。
【0217】
さらに、ホストアドレス#0の下位5ビットの値が「11111(31)」であることに応答して、物理ブロックアドレス格納領域#500に対応するスタートページ格納領域#500に、値「00000(0)」が上書きされる。
【0218】
以上より、ホストアドレス#0から内部アドレス#0への変換が完了する。これにより、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−0内のブロック#4のページ#31となる。
【0219】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、フラッシュメモリチップ2−0内のブロック#4のページ#0に対する各種冗長データの書き込み、同ブロックのページ#31に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0220】
まず、ブロック#4のページ#0に対する書き込み処理について説明する。
【0221】
尚、ブロック#4のページ#0には、上記書き込み動作1において、すでに対応論理ブロックアドレス29の書き込みが実行されているが、スタートページフラグ32の上位ビットを構成するフラッシュメモリセル16は消去状態(論理値=1)に保たれているので、スタートページフラグの書き込みは可能である。
【0222】
ブロック#4のページ#0に対する書き込み処理においては、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレス#0の上位2ビットに基づき、チップ選択信号#0を活性化させる。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0223】
次いで、フラッシュシーケンサブロック12は、内部アドレス#0の下位5ビットを「00000B」とした書き込みアドレスを生成し、その下位18ビット「000000000010000000B」を、所定のレジスタに格納された内部書き込みコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。上述のとおり、チップ選択信号#0が活性状態となっているため、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0224】
これにより、フラッシュメモリチップ2−0は、ブロック#4のページ#0に書き込まれるべきのデータの受け付けが許可された状態となる。
【0225】
次に、ブロック#4のページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、ブロック#4のページ#0に書き込むべきデータとは、スタートページフラグ32である。
【0226】
かかるデータは、上述と同様、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納され、内部書き込みコマンドの発行に応答してブロック#4のページ#0の所定の位置に書き込まれる。すなわち、ページ#0の冗長領域26には、値が「00」であるスタートページフラグ32が格納される。
【0227】
これにより、ブロック#4のページ#0に対する書き込み処理が完了する。
【0228】
ブロック#4のページ#0に対する書き込み処理が完了すると、次に、ブロック#4のページ#31に対する書き込み処理が実行される。
【0229】
ブロック#4のページ#31に対する書き込み処理は内部アドレス#0を用いて行われ、その手順は、すでに繰り返し説明したとおりである。これによって、ページ#31のユーザ領域25には、ホストアドレス#0に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード28及びその他の付加情報が格納される。
【0230】
これにより、一連の書き込み処理が完了する。
【0231】
図11は、上記一連の書き込み処理が完了した状態におけるブロック#4の内容を示す概略図である。
【0232】
図11では、ユーザ領域25については、ユーザデータの格納されている部分にハッチングが施されており、冗長領域26については、対応論理ブロックアドレス29、スタートページフラグ32及びスタートページデータ33のみが示され、エラーコレクションコード28、CRC31及びその他の付加情報については省略されている。
【0233】
図11に示されるように、ブロック#4の最終ページ#31にユーザデータが格納されているため、当該ブロックにおけるスタートページは存在しない。これに示すため、先頭ページ#0のスタートページフラグ32の値が「00」とされており、さらに、当該ブロックに対応するスタートデータ格納領域#500の内容が「00000B」とされている。このため、コントローラ3は、このブロックにはスタートページが存在しないことを知ることが可能となり、その後、ホストコンピュータ5よりブロック#4のいずれかのページに対するデータの書き込みが要求された場合、ブロック間転送が行われる。
【0234】
尚、上記の例では、スタートページ格納領域#500から直接スタートページを入手しているが、上記書き込み動作1が行われた後、コントローラ3がリセットされたことによりSRAMワークエリア8の内容が一旦消去されている場合には、上述したスタートページ検索によってスタートページを入手する必要がある。
【0235】
以上説明したように、本実施態様にかかるフラッシュメモリシステム1おいては、空きブロックに対するデータの書き込みが行われる場合、ユーザデータを書き込むべきページ、並びに、ユーザデータを書き込むべきページとは無関係に当該ブロックのページ#0〜#3、#31の冗長領域26に、対応論理ブロックアドレス29及びCRC31が格納されるので、先頭ページ(ページ#0)に含まれる対応論理ブロックアドレス29に誤りが発生した場合であっても、確実に当該ブロックに対応する論理ブロックアドレスを特定することが可能となる。しかも、ユーザデータを書き込むべきページではなく、且つ、ページ#0〜#3、#31ではないブロックの冗長領域26には、対応論理ブロックアドレス29及びCRC31が格納されないため、不要な書き込み処理によって無駄な書き込み時間が発生することがない。このため、データの書き込みに必要な一連の処理をより高速に行うことができる。
【0236】
また、本発明においては、スタートページという概念を用い、各ブロックを構成する複数のページのうち、スタートページ以降のページが必ず空きページであることが保証されているので、すでにデータの書き込まれているブロックに対するデータの書き込みが要求された場合であっても、これがスタートページ以降のページに対するデータの書き込み要求である場合には、ブロック間転送を行うことなく、当該ブロックに対して直接データを書き込むことが可能となる。このため、データの書き込みに必要な一連の処理をより高速に行うことができる。
【0237】
しかも、本実施態様にかかるフラッシュメモリシステム1おいては、各ページの冗長領域26にスタートページデータ33を格納し、かかるスタートページデータ33を用いたリンクによってスタートページを表現しているので、アドレス変換テーブル27を作成する際には、各ブロックの先頭ページ(ページ#0)に対して読み出しを実行するだけでよい。このような読み出し処理は、コントローラ3の初期設定時(リセット時)において通常行われる処理であるため、本発明の適用によって初期設定動作に要する時間が増大することはない。
【0238】
また、本実施態様にかかるフラッシュメモリシステム1おいては、一旦データの書き込みが実行されたブロックのスタートページを、対応するスタートページ格納領域に格納しているので、次に同じブロックに対して書き込みが行われる場合、極めて速やかにスタートページを得ることができる。
【0239】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash(サンディスク社の登録商標)」や、MultiMediaCard Associationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック(ソニー(株)の商標)」などに本発明を適用することが可能である。
【0240】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0241】
例えば、上記実施態様にかかるフラッシュメモリシステム1においては、空きブロックに対してデータの書き込みを行う場合、ユーザデータを書き込むべきページとは無関係に当該ブロックのページ#0〜#3の冗長領域26に、対応論理ブロックアドレス29及びCRC31を格納しているが、ユーザデータを書き込むべきページとは無関係に対応論理ブロックアドレス29及びCRC31を書き込む対象としては、ページ#0〜#3に限定されず、少なくともページ#0を含む連続した複数ページであればよい。例えば、ページ#0〜#2であってもよい。この場合も、対応論理ブロックアドレス29及びCRC31が書き込まれている最終ページ(ページ#31を除く)において、対応論理ブロックアドレス29のエラーが検出された時点で、当該ブロックは不良ブロックとして取り扱われることになる。
【0242】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各ページの冗長領域26にスタートページデータ33を格納し、かかるスタートページデータ33を用いたリンクによってスタートページを表現しているが、本発明におけるスタートページの表現方法がこれに限定されるものではなく、他の方法によってスタートページを表現しても構わない。例えば、各ブロックについて、全ての空きページに関する情報をアドレス変換テーブル27内に展開し、これに基づいて、データの追加的な書き込みを行っても構わない。この場合、上記実施態様にかかるフラッシュメモリシステム1とは異なり、全ての空きページに関する情報を用いていることから、より効果的にデータの追加的な書き込みが行われ、ブロック間転送の頻度を一層低下させることができる。但し、この場合、全ての空きページに関する情報をアドレス変換テーブル27内に展開するのに多くの時間を要することから、コントローラ3の初期設定動作が遅くなる。
【0243】
また、上記実施態様にかかるフラッシュメモリシステム1においては、2ビットのスタートページフラグ32を用ているが、スタートページフラグ32を1ビットとし、ページ#0においては当該ブロックにスタートページが存在するか否かを表示するために用い、ページ#1〜#30においては対応するスタートページが有効であるか否かを表示するために用いてもよい。
【0244】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照されたスタートページフラグ32が「x0」であれば検索を終了し、当該ページをスタートページとしているが、スタートページ検索においてスタートページデータ33を参照し、参照されたスタートページデータ33が「11111(31)」であれば検索を終了し、当該ページをスタートページとしてもよい。この場合、少なくとも、スタートページデータ33が「11111(31)」であるページについては、かかるスタートページデータ「11111(31)」がスタートページ検索の終了を示しているのか、或いは、スタートページがページ#31であることを示しているのかを、スタートページフラグ32等を利用して区別する必要がある。
【0245】
また、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照先のスタートページフラグ32が属するページに制限を設けていないが、参照先のスタートページフラグ32が属するページのページ番号が参照元のスタートページフラグ32が属するページのページ番号よりも小さい場合には、対応するスタートページデータ33に誤りがあるものと判断して、エラー処理を行ってもよい。
【0246】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照回数に制限を設けていないが、これを所定の回数(例えば30回)に制限し、これを越えた場合には、少なくとも一のスタートページデータ33に誤りがあるものと判断して、エラー処理を行ってもよい。
【0247】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各ブロックを32個のページによって構成しているが、各ブロックを構成するページ数は32個には限定されず、他の数、例えば、16個や64個であってもよい。本発明は、各ブロックを構成するページ数が多いほど、より顕著な効果を得ることができる。
【0248】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、空きブロックに対してデータの書き込みを行う場合、ユーザデータを書き込むべきページがページ#0〜#3、#31以外であっても、その冗長領域26に対応論理ブロックアドレス29及びCRC31を格納しているが、これを省略しても構わない。
【0249】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、データの格納された全ての物理ブロックに関わるアドレス変換テーブル27をSRAMワークエリア8上に展開しているが、本発明において、これら全ての物理ブロックに関わるアドレス変換テーブルを展開することは必須ではなく、これらの一部のみを展開してもよい。この場合、SRAMワークエリア8に必要とされる記憶容量を削減することができる。但し、このように一部の物理ブロックに関わるアドレス変換テーブルのみを展開する場合、アドレス変換テーブルに含まれていない物理ブロックへのアクセスが要求される度に、アドレス変換テーブルを更新する必要がある。
【0250】
また、上記実施態様においては、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3とコントローラ3とが、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0251】
さらに、上記実施態様においては、フラッシュメモリシステム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についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0252】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−3の記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0253】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0254】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0255】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3に対してそれぞれ2個のキューを割り当てることによって、消去済みブロックキュー30が構成されているが、各フラッシュメモリチップ2−0〜2−3に対して割り当てられるキューの数としては2個に限定されず、他の数、例えば、1個や8個であってもよい。
【0256】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0257】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0258】
【発明の効果】
以上説明したように、本発明によれば、対応論理アドレスが正しく書き込まれなかったり、すでに書き込まれた対応論理アドレスの値が何らかの原因で変化してしまった場合であっても、論理アドレスと物理アドレスとの正しい対応関係を認識することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図3】図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図4】図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図5】図5は、冗長領域26のデータ構造を概略的に示す図である。
【図6】図6は、SRAMワークエリア8に格納されるアドレス変換テーブル27のデータ構造を示す概略図である。
【図7】図7は、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造を示す概略図である。
【図8】図8は、ブロック#4のページ#1及び#2にデータが書き込まれた状態を示す概略図である。
【図9】図9は、ブロック#4のページ#1〜#4にデータが書き込まれた状態を示す概略図である。
【図10】図10は、ブロック#4のページ#1、#2及び#5にデータが書き込まれた状態を示す概略図である。
【図11】図11は、ブロック#4のページ#1、#2及び#31にデータが書き込まれた状態を示す概略図である。
【符号の説明】
1 フラッシュメモリシステム
2−0〜2−3 フラッシュメモリチップ
3 コントローラ
4 コネクタ
5 ホストコンピュータ
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 SRAMワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 フラッシュシーケンサブロック
13〜15 バス
16 フラッシュメモリセル
17 P型半導体基板
18 ソース拡散領域
19 ドレイン拡散領域
20 トンネル酸化膜
21 フローティングゲート電極
22 絶縁膜
23 コントロールゲート電極
24 チャネル
25 ユーザ領域
26 冗長領域
27 アドレス変換テーブル
28 エラーコレクションコード
29 対応論理ブロックアドレス
30 消去済みブロックキュー
31 対応論理ブロックアドレス用巡回冗長ビット
32 スタートページフラグ
33 スタートページデータ
Claims (10)
- ブロックアドレス及びページアドレスに基づいてそれぞれ複数のページを含む複数のブロックからなるメモリにアクセスするメモリコントローラであって、ホストコンピュータよりホストアドレスを指定したユーザデータの書き込みが要求されたことに応答して、前記ホストアドレスに基づいた前記ブロックアドレス及び前記ページアドレスを生成するアドレス生成手段と、前記ブロックアドレスに対応する付加情報を生成する付加情報生成手段と、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えるメモリコントローラ。
- 前記付加情報が、前記ブロックアドレスに含まれる誤りを検出可能な情報であることを特徴とする請求項1に記載のメモリコントローラ。
- 前記所定の複数ページが、少なくとも連続した4ページであることを特徴とする請求項1または2に記載のメモリコントローラ。
- 前記先頭ページに書き込まれた前記ブロックアドレス及び前記付加情報を読み出す読み出し手段と、読み出された前記付加情報に基づいて読み出された前記ブロックアドレスに誤りが含まれているか否かを判断する誤り検出手段とをさらに備え、前記誤り検出手段が、読み出された前記ブロックアドレスに誤りが含まれていると判断したことに応答して、前記読み出し手段が、前記先頭ページの次のページに書き込まれた前記ブロックアドレス及び前記付加情報を読み出すことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
- 前記書き込み手段が、前記ページアドレスにより特定されるページ及び前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込むことを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。
- ホストコンピュータより供給されるホストアドレスに基づいてそれぞれ複数のページを含む複数のブロックからなるメモリにアクセスするメモリコントローラであって、前記ホストアドレスに基づいて論理ブロックアドレス及びページアドレスを生成するアドレス生成手段と、前記論理ブロックアドレスに対応する物理ブロックアドレスが存在するか否かを判断する判断手段と、前記判断手段により前記論理ブロックアドレスに対応する物理ブロックアドレスが存在しないと判断されたことに応答して前記複数のブロックから空きブロックを選択する空きブロック選択手段と、前記論理ブロックアドレスの誤りを検出可能な付加情報を生成する付加情報生成手段と、前記空きブロック選択手段により選択された空きブロックを構成する複数のページのうち、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記論理ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記論理ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えるメモリコントローラ。
- 前記所定の複数ページに書き込まれた前記論理ブロックアドレスのうち前記付加情報に基づき誤りのない論理ブロックアドレスを特定し、これに基づいてアドレス変換テーブルを作成するテーブル作成手段をさらに備え、前記判断手段が、前記アドレス変換テーブルを参照することによって前記判断を行うことを特徴とする請求項6に記載のメモリコントローラ。
- それぞれ複数のページを含む複数のブロックからなるフラッシュメモリと、ホストコンピュータより供給されるホストアドレスに基づいて前記フラッシュメモリにアクセスするメモリコントローラとを備え、前記コントローラが、前記ホストアドレスに基づいてブロックアドレス及びページアドレスを生成するアドレス生成手段と、前記ホストコンピュータよりユーザデータの書き込みが要求されたことに応答して、前記ブロックアドレスに対応する付加情報を生成する付加情報生成手段と、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込み手段とを備えることを特徴とするフラッシュメモリシステム。
- ホストコンピュータよりホストアドレスを指定したユーザデータの書き込みが要求されたことに応答して、前記ホストアドレスに基づいたブロックアドレス及びページアドレスを生成するアドレス生成ステップと、前記ブロックアドレスに対応する付加情報を生成する付加情報生成ステップと、前記ページアドレスにより特定されるページ及び先頭ページを含む連続した所定の複数ページのいずれでもないページには前記ブロックアドレス及び前記付加情報を書き込むことなく、少なくとも、前記所定の複数ページに対して前記ブロックアドレス及び前記付加情報を書き込む書き込みステップとを備えるフラッシュメモリの制御方法。
- 前記所定の複数ページに対し、誤りのないブロックアドレスが得られるまで前記書き込みステップにより書き込まれた前記ブロックアドレスを読み出す読み出しステップをさらに備えることを特徴とする請求項9に記載のフラッシュメモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000397925A JP4233213B2 (ja) | 2000-12-27 | 2000-12-27 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000397925A JP4233213B2 (ja) | 2000-12-27 | 2000-12-27 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002196977A JP2002196977A (ja) | 2002-07-12 |
JP4233213B2 true JP4233213B2 (ja) | 2009-03-04 |
Family
ID=18862986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000397925A Expired - Lifetime JP4233213B2 (ja) | 2000-12-27 | 2000-12-27 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4233213B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100385417C (zh) * | 2005-06-15 | 2008-04-30 | 乐金电子(惠州)有限公司 | 请求页面调度方法及将有关页面信息输入到页面内的方法 |
CN100458736C (zh) * | 2006-12-30 | 2009-02-04 | 北京中星微电子有限公司 | Nand闪存信息提取方法和nand闪存自动识别方法 |
JP4702703B2 (ja) * | 2007-04-26 | 2011-06-15 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP5093294B2 (ja) * | 2010-05-14 | 2012-12-12 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
KR101226600B1 (ko) * | 2011-03-09 | 2013-01-28 | 주식회사 이에프텍 | 메모리 시스템 및 그의 메모리 맵핑 방법 |
JP5221699B2 (ja) * | 2011-03-23 | 2013-06-26 | 株式会社東芝 | 半導体記憶装置 |
JP6072428B2 (ja) * | 2012-05-01 | 2017-02-01 | テセラ アドバンスト テクノロジーズ インコーポレーテッド | 制御装置、記憶装置、記憶制御方法 |
-
2000
- 2000-12-27 JP JP2000397925A patent/JP4233213B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2002196977A (ja) | 2002-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3921174B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4256600B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4165990B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 | |
JP3905037B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US6172906B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
US5754567A (en) | Write reduction in flash memory systems through ECC usage | |
US7111140B2 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US7117328B2 (en) | Non-volatile data storage system and data storaging method | |
US20010012222A1 (en) | Memory controller for flash memory system and method for accessing flash memory device | |
JP4233213B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4236485B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP3621051B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4316824B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4248772B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4220690B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3999959B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3999564B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003122630A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US20230385149A1 (en) | Data memory emulation in flash memory |
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: 20080820 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080930 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081016 |
|
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: 20081202 |
|
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: 20081209 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111219 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4233213 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: 20111219 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121219 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121219 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131219 Year of fee payment: 5 |
|
EXPY | Cancellation because of completion of term |