JP4236485B2 - MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD - Google Patents

MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Download PDF

Info

Publication number
JP4236485B2
JP4236485B2 JP2003060594A JP2003060594A JP4236485B2 JP 4236485 B2 JP4236485 B2 JP 4236485B2 JP 2003060594 A JP2003060594 A JP 2003060594A JP 2003060594 A JP2003060594 A JP 2003060594A JP 4236485 B2 JP4236485 B2 JP 4236485B2
Authority
JP
Japan
Prior art keywords
block
data
flash memory
state
error
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
Application number
JP2003060594A
Other languages
Japanese (ja)
Other versions
JP2004272476A (en
Inventor
直樹 向田
幸夫 寺崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2003060594A priority Critical patent/JP4236485B2/en
Publication of JP2004272476A publication Critical patent/JP2004272476A/en
Application granted granted Critical
Publication of JP4236485B2 publication Critical patent/JP4236485B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法に関し、特に、フラッシュメモリに保存されているデータの信頼性を向上させることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法に関する。
【0002】
【従来の技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリが用いられることが多い。このフラッシュメモリは不揮発性メモリの一種であり、電源が投入されているか否かに関わらず、データが保持されるていることが要求される。
【0003】
ところで、上記のような装置に特に用いられることが多いNAND型フラッシュメモリは、メモリセルを消去状態(論理値=1)から書込状態(論理値=0)に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書込状態(0)から消去状態(1)に変化させる場合には、メモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれている。
【0004】
上記のよう特性により、NAND型フラッシュメモリ用いた装置では、デ―タを書き込む際に、ブロック消去された領域を検索し、検出された空き領域に対して新たなデータを書込んでいる。
【0005】
従って、NAND型フラッシュメモリ用いた装置では、書込んだデータが電源切断後も長期間保持されることや、ブロック消去された領域が電源切断後も長期間消去状態で保持されることが要求される。
【0006】
【発明が解決しようとする課題】
しかしながら、あるメモリセルに対する読み出しや書き込みが実行された場合に、このメモリセルとビット線を共通にする他のメモリセルの状態が変化してしまうことがある。この現象はディスターブ現象と呼ばれ、メモリセルに対して書き込み動作・消去動作が繰り返されることにより発生率が高くなることが知られている。このディスターブ現象によってメモリセルの状態が変化すると、一旦書き込まれたデータが時間とともに変化してしまうばかりでなく、正常な書込動作を阻害する原因となる。
【0007】
又、ディスターブ現象とは別に、ブロック消去が実行されている途中で不意に電源が切断された場合、ブロック消去の対象であるメモリセルの消去状態が不完全となることがある。このような場合においても、上述と同様の理由により、正常な書込動作が阻害されてしまう。
【0008】
こような問題に対する対策として、特開2001−243122においては、実際にデータを書き込む前に消去済みブロックの状態を診断している。しかし、書込みの際に正常と判断されたブロックであっても、その後の使用による偶発的なエラーや、メモリセルの物理的な劣化等による不可逆的なエラー等が発生して書き込まれたデータが時間とともに変化してしまう場合がある。
【0009】
そこで、本発明においては、フラッシュメモリからデータを読出した際に、データに含まれる誤りを検出した場合は、そのデータが書込まれていたブロックのデータを別のブロックに移し、その後、データに含まれる誤りが検出されたブロックが正常なブロックであるか否かを判断することにより、フラッシュメモリに保存されているデータの信頼性の向上を図ることを特徴としたメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
[本発明によるメモリコントローラ及びフラッシュメモリシステム]
本発明かかる目的は、フラッシュメモリから読み出したページのデータに含まれる誤りを検出するエラー検出機能と、
前記エラー検出機能によりデータに含まれる誤りを検出した場合に、誤りが検出されたページが含まれるブロックのデータを他のブロックに移す移行機能と、
前記移行機能によりブロック間をデータが移行した場合に、移行元のブロックを診断する診断機能を備えるメモリコントローラ及びフラッシュメモリシステムによって達成される。
【0011】
又、本発明によれば、前記エラー検出機能が、フラッシュメモリのページの冗長領域に書込まれるエラーコレクションコードに基づいてデータの誤りを検出訂正することにより、
効率良くエラーの検出、更には訂正を行なうことができる。
【0012】
又、本発明によれば、前記診断に、少なくとも書込状態から消去状態への正常遷移検査と、消去状態から書込状態への正常遷移検査が含まれることにより、
確実にブロックの診断を行なうことができる。
【0013】
ここで、書込状態から消去状態への正常遷移検査とは、ブロック消去により正常に書込まれていたデータが消去されたか否かの検査であり、消去状態から書込状態への正常遷移検査とは、消去済ブロックに正常にデータが書込めるか否かの検査である。
【0014】
又、本発明によれば、前記移行機能によりブロック間をデータが移行する時に、
メモリコントローラのバッファ又は、メモリコントローラとフラッシュメモリの双方のバッファを使用し、
少なくとも誤りが検出されたページについてはメモリコントローラのバッファを使用することにより、
効率的に訂正されたデータを別のブロックに移すことができる。
【0015】
[本発明によるフラッシュメモリの制御方法]
本発明かかる目的は、フラッシュメモリから読み出したページのデータに含まれる誤りを検出した場合に、
誤りが検出されたページが含まれるブロックのデータを他のブロックに移した後、
移行元のブロックを診断することを特徴とするフラッシュメモリの制御方法によって達成される。
【0016】
又、本発明によれば、前記読み出したページのデータに含まれる誤りを、フラッシュメモリのページの冗長領域に書込まれるエラーコレクションコードに基づいて検出訂正することにより、
効率良くエラーの検出、更には訂正を行なうことができる。
【0017】
又、本発明によれば、前記診断に、少なくとも書込状態から消去状態への正常遷移検査と、消去状態から書込状態への正常遷移検査が含まれることにより、
確実にブロックの診断を行なうことができる。
【0018】
ここで、書込状態から消去状態への正常遷移検査とは、ブロック消去により正常に書込まれていたデータが消去されたか否かの検査であり、消去状態から書込状態への正常遷移検査とは、消去済ブロックに正常にデータが書込めるか否かの検査である。
【0019】
又、本発明によれば、誤りが検出されたページが含まれるブロックのデータを他のブロックに移す時に、
メモリコントローラのバッファ又は、メモリコントローラとフラッシュメモリの双方のバッファを使用し、
少なくとも誤りが検出されたページについてはメモリコントローラのバッファを使用することにより、
効率的に訂正されたデータを別のブロックに移すことができる。
【0020】
[本発明による複数のページの読出し処理]
本発明によれば、ホストコンピュータからの外部コマンドに従って処理が開始されたフラッシュメモリからの読出し処理中に、
フラッシュメモリから読み出したページのデータに含まれる誤りを検出した場合に、
ホストコンピュータからの外部コマンドに従って行われる処理を中断し、
前記中断後に、誤りが検出されたページが含まれるブロックのデータを他のブロックに移す移行処理を開始し、
前記移行処理の完了後に、移行元のブロックを診断し、
前記診断完了後に、処理対象を移行元のブロックから移行先のブロックに変更して、中断していたホストコンピュータからの外部コマンドに従って行われる処理を再開することを特徴とするフラッシュメモリの制御方法により、
ホストコンピュータからの外部コマンドに従って行われる処理の効率の低下を抑えつつ、本発明かかる目的を達成することできる。
【0021】
ここで、外部コマンドとは、ホストコンピュータ5からフラッシュメモリシステム1に与えられるコマンドである。
【0022】
又、外部コマンドが複数ページの読み出し要求であれば、
ホストコンピュータからの外部コマンドに従って処理が開始されたフラッシュメモリからの複数ページ読出し処理中に、
フラッシュメモリから読み出したページのデータに含まれる誤りを検出した場合に、
前記複数ページ読出し処理を中断し、
前記中断後に、誤りが検出されたページが含まれるブロックのデータを他のブロックに移す移行処理を開始し、
前記移行処理の完了後に、移行元のブロックを診断し、
前記診断完了後に、処理対象を移行元のブロックから移行先のブロックに変更して、中断していた前記複数ページ読出し処理を再開することを特徴とするフラッシュメモリの制御方法により、
複数ページ読出し処理の効率の低下を抑えつつ、本発明かかる目的を達成することできる。
【0023】
【発明の実施の形態】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
[フラッシュメモリシステム1の説明:図1参照]
図1は、本発明にかかるフラッシュメモリシステム1を概略的に示すブロック図であり、このフラッシュメモリシステム1は一般的にはPCカードやコンパクトフラッシュ(サンディスク社の登録商標)等に収められている。又、同図に示したようにフラッシュメモリシステム1は、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4で構成されている。
【0024】
尚、上記PCカードはPCMCIA(Personal Computer Memory Card International Association)の規格に準拠しており、上記コンパクトフラッシュはCFA(Compact Flash Association)の規格に準拠している。又、本発明はSSFDC Forumの「SmartMedia((株)東芝の登録商標)」、MultiMedia Card Associationの提唱する「MMC(MultiMedia Card)」、ソニー株式会社が提唱する「メモリースティック(ソニー(株)の商標)」などに本発明を適用することも可能である。
【0025】
又、フラッシュメモリシステム1が収められたPCカードやコンパクトフラッシュは、通常ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対に対して一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0026】
図1に示したフラッシュメモリ2−0〜2−3は、ページ単位で読出し又は書込みを、ブロック単位で消去を実行できるデバイスであり、通常、1ブロックは32ページで構成され、1ページは512バイトのユーザ領域と16バイトの冗長領域で構成され、ホストコンピュータ5側から見た場合1ページは512バイトで構成されている。従って、例えばフラッシュメモリ2−0〜2−3が、128Mバイト(1Gビット)の記憶容量を有するフラッシュメモリである場合は、それぞれが256Kページの記憶領域を、合計で1Mページの記憶領域を構成する。
【0027】
ここで、1ページが512バイトであれば上記1Mページの記憶領域は、512Mバイト(4Gビット)のメモリを構成する。従って、ホストコンピュータ5から20ビットのアドレス情報を供給すれば、このメモリの全域をアクセスすることができる。以下、ホストコンピュータ5からフラッシュメモリシステム1に供給される20ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0028】
[コントローラ3の説明:図1参照]
図1のコントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
【0029】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御する機能ブロックである。
【0030】
ホストインターフェースブロック7は、コネクタ4を介してホストコンピュータ5に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行う機能ブロックである。
【0031】
すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びとバス14を介して相互に接続され、かかる状態において、ホストコンピュ―タ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインタ―フェースブロック7を入口としてコントローラ3の内部に取り込まれ、フラッシュメモリシステム1からホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。
【0032】
さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0033】
SRAMワークエリア8は、フラッシュメモリ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される機能ブロックである。
【0034】
バッファ9は、フラッシュメモリ2−0〜2−3から読み出されたデータ及びフラッシュメモリ2−0〜2−3に書き込むべきデータを一時的に蓄積する機能ブロックである。すなわち、フラッシュメモリ2−0〜2−3から読み出されたデータは、ホストコンピュータ5が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリチップ2−0〜2−3に書き込むべきデータは、フラッシュメモリ2−0〜2−3が書き込み可能な状態となるまでバッファ9に保持される。
【0035】
フラッシュメモリインターフェースブロック10は、バス15を介して、フラッシュメモリ2−0〜2−3とデータ、アドレス情報、ステータス情報及び内部コマンド情報の授受を行うとともに、各フラッシュメモリ2−0〜2−3に対して対応する選択信号#0〜#3を供給する機能ブロックである。
【0036】
前記選択信号#0〜#3は、ホストコンピュータ5からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ5より供給されるホストアドレスの20ビットの上位2ビットに基づいて、フラッシュメモリ2−0〜2−3のいずれかを動作状態(データの読出し又は書き込みが可能な状態)にさせるための信号を出力する。具体的には、ホストアドレスの上位2ビットが「00」であれば選択信号#0がフラッシュメモリ2−0を動作状態にさせるための信号を出力し、「01」であれば選択信号#1がフラッシュメモリ2−1を動作状態にさせるための信号を出力し、「10」であれば選択信号#2がフラッシュメモリ2−2を動作状態にさせるための信号を出力し、「11」であれば選択信号#3がフラッシュメモリ2−3を動作状態にさせるための信号を出力する。
【0037】
尚、「内部コマンド」とは、コントローラ3からフラッシュメモリチップ2−0〜2−3に与えられるコマンドであり、ホストコンピュータ5からフラッシュメモリシステム1に与えられるコマンドである「外部コマンド」と区別される。
【0038】
ECCブロック11は、フラッシュメモリ2−0〜2−3に書き込むデ―タに付加すべきエラーコレクションコードを生成するとともに、読み出しデータにを付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【0039】
フラッシュシーケンサブロック12は、内部コマンドに基づくフラッシュメモリ2−0〜2−3の動作を制御する機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、この複数のレジスタに内部コマンドの実行する際に
必要な情報が、マイクロプロセッサ6による制御のもとに設定される。この複数のレジスタに内部コマンドの実行する際に必要な情報が設定されると、その情報に基づいて内部コマンドが実行実行される。
[フラッシュメモリセル16の説明:図2、3参照]
次に、図2及び3参照して図1に示したフラッシュメモリ2−0〜2−3を構成するフラッシュメモリセル16の具体的な構造について説明する。
【0040】
図2は、フラッシュメモリ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。同図に示したように、フラッシュメモリセル16は、P型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲ―ト電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。このような構成を有するフラッシュメモリセル16が、フラッシュメモリ2−0〜2−3内に複数個直列に接続されており、NAND型フラッシュメモリを構成している。
【0041】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態(電子が蓄積されていない状態)」と「書込状態(電子が蓄積されている状態)」のいずれかの状態が示される。ここで、1つのフラッシュメモリセル16は1ビットのデータに対応し、フラッシュメモリセル16の「消去状態」が論理値の「1」のデータに対応し、フラッシュメモリセル16の「書込状態」が論理値の「0」のデータに対応する。
【0042】
「消去状態」においては、フローティングゲート電極21に電子が蓄積されていないため、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネルが形成されず、ソース拡散領域18とドレイン拡散領域19は電気的に絶縁される。一方、コントロールゲート電極23に読み出し電圧が印加されると、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成され、ソース拡散領域18とドレイン拡散領域19は、このチャネルによって電気的に接続される。
【0043】
すなわち、「消去状態」においてはコントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に接続される。
【0044】
図3は、「書込状態」であるフラッシュメモリセル16を概略的に示す断面図である。同図に示したように、「書込状態」とは、フローティングゲート電極21に電子が蓄積されている状態を指す。フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。この「書込状態」においては、フローティングゲート電極21に電子が蓄積されているので、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、「書込状態」においてはソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0045】
又、上記フラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。上記フラッシュメモリセル16はフラッシュメモリ2−0〜2−3内で複数個直列に接続ていている。この直列体の中で選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧が印加し、この状態でフラッシュメモリセル16の直列体に電流が流れるか否かの検出が行われる。その結果、この直列体に電流が流れれば、選択されたフラッシュメモリセル16は書込状態であると判断され、電流が流れなければ、選択されたフラッシュメモリセル16は消去状態であると判断される。このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。上述のようにしてデータを読み出しているため、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0046】
又、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合は、コントロールゲート電極23に正の高電圧が印加し、トンネル酸化膜20を介してフローティングゲート電極21へ電子を注入する。この際、FN(ファウラーノルトハイム)トンネル電流が流れフロ―ティングゲート電極21に電子が注入される。一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合は、コントロールゲート電極23に負の高電圧が印加し、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子を排出する。
【0047】
[フラッシュメモリのメモリ構造の説明:図4参照]
次に、各フラッシュメモリ2−0〜2−3のメモリ構造を説明する。
図4は、フラッシュメモリチップ2−0のメモリ構造を概略的に示す図である。同図4に示したように、フラッシュメモリ2−0はデータの読み出し及び書き込みにおけるアクセス単位である「ページ」と、データの消去単位である「ブロック」で構成されている。
【0048】
上記「ページ」は512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデ―タが格納される領域であり、冗長領域26は、ECCブロック11によって生成されたエラーコレクションコード等の付加情報が格納される領域である。エラ―コレクションコードは、対応するユーザ領域25に格納されたデータに含まれる誤りを訂正するための付加情報であり、ユーザ領域25に格納されたデータに含まれる誤りが所定数以下であれば、これを訂正し、正しいデータとするために用いられる。
【0049】
上記冗長領域26には、エラーコレクションコードの他に、「消去フラグ」と「対応論理ブロックアドレス」が格納されている。「消去フラグ」は、そのブロックが消去済みブロックであるか否かを示すフラグであり、「対応論理ブロックアドレス」は、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。
【0050】
又、上記「ブロック」は32枚の「ページ」で構成されている。ここでフラッシュメモリはデータの上書きができないため、1枚の「ページ」のデータだけを書き変える場合であっても、その「ページ」が含まれる「ブロック」の32枚の「ページ」の全データを、全ての「ページ」のデータが消去されている「ブロック」に再度書込まなければならない。
【0051】
図4に示したフラッシュメモリ2−0は8192のブロックによって構成されている。図1に示した他のフラッシュメモリ2−1〜2−3についても、フラッシュメモリ2−0と同様の構成のものを用いれば、全体(4つのフラッシュメモリ)でブロック0〜ブロック32767からなる32768個のブロックとなり、1Mページ(32768ブロック×32ページ)のメモリを構成する。
【0052】
これら1Mページからなるメモリの特定の「ページ」をアクセスする場合、20ビットのホストアドレスのうち、上位15ビットは、「ブロック」(ブロック0〜ブロック32767)を特定するために用いられ、残りの下位5ビットは、特定された「ブロック」に含まれる「ページ」(ページ0〜ページ31)を特定するために用いられる。
【0053】
尚、後述するが、ホストアドレスの上位15ビットを用いたブロックの特定はホストアドレスによっては一義的に決まらない。すなわち、ホストアドレスの上位15ビットからなる15ビットを「論理ブロックアドレス」と呼び、実際にアクセスされるブロックのアドレスを「物理ブロックアドレス」と呼べば、「論理ブロックアドレス」と「物理ブロックアドレス」とは一致せず、「アドレス変換テーブル」により論理ブロックアドレスを物理ブロックアドレスに変換した後、物理ブロックアドレスに基づいて実際にアクセスすべきブロックが特定される。
【0054】
[論理ブロックアドレスと物理ブロックアドレスの説明]
上述のとおり、フラッシュメモリはデータの上書きができないため、既にデータの書き込まれた「ページ」に対し、これと異なる新しいデータを書き込むためには、一旦、既に書き込まれているデータを消去した後に新しいデータを書き込むという処理が必要となる。この際、消去はブロック単位で処理されるため、新しいデータを書き込む「ページ」のデータを消去しようとすると、その「ページ」が含まれる「ブロック」の全ての「ページ」のデータが消去されてしまう。 したがって、ある「ページ」に既に書き込まれているデータを書替える場合、書替える「ページ」が含まれる「ブロック」の他の全ページのデータについても、書替える「ページ」のデータを書込む他の消去済ブロックに移動させるという処理が必要となる。
【0055】
上記のようにデータを書替える場合、書替えの後のデータは書替え前の「ブロック」と異なる「ブロック」に書込まれるため、ホストアドレスに基づく論理ブロックアドレスと、この論理ブロックアドレスに対応するフラッシュメモリ2−0〜2−3内の物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係が書込まれたアドレス変換テーブルが必要となる。
【0056】
上記「アドレス変換テーブル」は、「論理ブロックアドレス」と「物理ブロックアドレス」の対応関係を示したテーブルであり、図1に示したSRAMワークエリア8に格納されている。そして、この「アドレス変換テーブル」は、上述のような理由により、フラッシュメモリ2−0〜2−3に書込まれているデータが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
【0057】
[書き込みキューの説明:図5参照]
図5は、図1に示したSRAMワークエリア8に格納されている書き込みキュー28のデータ構造を示す概略図である。
図5に示したように、書き込みキュー28は、キュー0〜キュー7からなる8つのキューによって構成されており、各キューには15ビットの物理ブロックアドレスが格納されている。ここで、各キューには、それぞれ消去済みブロックの物理ブロックアドレスが格納される。したがって、書き込みキュー28は、最大8つの消去済みブロックの物理ブロックアドレスを保持することができる。この書き込みキュー28は、上記「消去フラグ」を参照して消去済みブロック検出し、検出したブロックの物理ブロックアドレスをキュー0〜キュー7に格納する。
【0058】
[初期設定動作]
図1に示したフラッシュメモリシステム1の初期設定動作について説明する。この初期設定動作は、フラッシュメモリシステム1がホストコンピュータ5に装着された時や、ホストコンピュータ5によりリセットが指示された際に実行される。
【0059】
この初期設定動作では、マイクロプロセッサ6による制御のもと、アドレス変換テーブル27や図5に示した書き込みキュー28の作成が開始され、その作成が完了すると初期設定動作は終了する。
【0060】
尚、フラッシュメモリシステム1の初期設定動作が行われている間は、コントローラ3はビジー状態となり、ホストコンピュータ5からのデータの読み出しや書き込みの指示は拒否される。かかるビジー状態は、フラッシュメモリシステム1の初期設定動作が終了すると解除される。
【0061】
[本発明に係る処理の説明:図6〜図7参照]
以下、本発明に係る処理のフローチャートを示す図6〜図7を参照しながら、その処理について説明する。
<読出し処理(F1)>
この処理では、図1に示したホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部読出しコマンドとホストアドレスがフラッシュメモリシステム1に供給される。このホストアドレス及び外部読出しコマンドはコントローラ3に供給され、その後ホストインターフェ―スブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0062】
次に、ホストインターフェ―スブロック7によって、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないかどうかが判定される。
【0063】
このアドレス判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定(読出し用シーケンサ)がなされる。
【0064】
この設定(読出し用シーケンサ)はマイクロプロセッサ6による制御のもと、以下の設定が行なわれる。
1)内部コマンドとして内部読出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
2)ホストアドレスから論理ブロックアドレスが抽出され、この論理ブロックアドレスが対応する物理ブロックアドレスに変換され、この物理ブロックアドレスにホストアドレスから抽出されたページアドレス部分が付加され、物理アドレスが生成される。この物理アドレスの上位2ビットと残りの下位ビットがフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0065】
一方、上記アドレス判定の結果、異常なアドレスであると判断された場合は、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0066】
次に、フラッシュシーケンサブロック12が、上記設定(読出し用シーケンサ)に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック10から、選択信号#1〜#4及びバス15を介してフラッシュメモリ2−0〜2−3に内部コマンドを実行するための情報が供給される。その結果、物理アドレスの上位2ビットでフラッシュメモリ2−0〜2−3のいずれかが選択され、残りの下位ビットで選択されたフラッシュメモリ2−0〜2−3内のページが指定され、そのページのデータがバッファ9に読み出される。
【0067】
<ECCブロックでエラーを検出(F2)>
上記処理でフラッシュメモリ2−0〜2−3内のデータがバッファ9に読み出される際に、ECCブロック11は、このデータを解析してエラーコレクションコードを生成する。このエラーコレクションコードに基づいてECCブロック11は、読み出したデータに含まれる誤りを検出・訂正する。そして、読み出したデータに含まれる誤りを検出した場合には以下の処理が実行される。
【0068】
<データ移行処理(F3)>
上記読出しの際にECCブロック11で誤りが検出されたページが含まれるブロックのの全ページのデータを、最初のページから最後のページまで順次読出し、消去済みブロックに再書込みをする(以下、この処理を「移行処理」という)。ここで、上記消去済みブロックは、書き込みキュー28に設定されている消去済みブロックを使用する。
尚、移行処理については、バッファ9を使用する場合とフラッシュメモリ2−0〜2−3内のバッファを使用する場合がある。その詳細については、後述する。
【0069】
<移行元ブロックの判定処理(F4)>
図7に示した移行元ブロックの判定処理フロ―チャートにしたがって、その処理を説明する。尚、この処理により移行元ブロックの診断が行なわれる。
【0070】
ステップ1:
上記移行処理の完了後、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対して以下の設定(ブロック消去用シーケンサ)がなされる。
1)内部コマンドとして内部ブロック消去コマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
2)上記移行元ブロックの物理ブロックアドレスの上位2ビットと残りの下位ビットがフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0071】
次に、フラッシュシーケンサブロック12が、上記設定(ブロック消去用シーケンサ)に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック10から、選択信号#1〜#4及びバス15を介してフラッシュメモリ2−0〜2−3に内部コマンドを実行するための情報が供給される。その結果、物理アドレスの上位2ビットでフラッシュメモリ2−0〜2−3のいずれかが選択され、残りの下位ビットで選択されたフラッシュメモリ2−0〜2−3内のブロックに書込まれているデータが全て消去される。
【0072】
但し、ブロック消去の方法は上記の方法に限定されず、フラッシュメモリの仕様により他の方法でブロック消去が行なえるのであれば、他の方法であってもよい。又、ブロック消去ができれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様については特に限定されない。
【0073】
ステップ2:
ブロック消去が完了後にフラッシュメモリ2−0〜2−3が発行するステータス情報の消去ステータスを参照して、ブロック消去動作が正常に行われた否かを判断する。この判定で正常なブロック消去動作が行われたと判断された場合はステップ3に、正常なブロック消去動作が行われなかったと判断された場合はステップ7に進む。
【0074】
但し、フラッシュメモリの消去動作が正常に行なわれたか否かを判断する方法は、消去ステータスに限定されず、フラッシュメモリの仕様により他の方法で消去動作が正常に行なわれたか否かを判断できれば、他の方法であってもよい。又、消去動作が正常に行なわれたか否かを判断できれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様についても特に限定されない。
【0075】
ステップ3:
ステップ1でブロック消去を実行したブロックのページを順次読み出し、読み出されたデータが全て「1(消去状態)」であるか否かを判断する。その結果、読み出されたデータが全て「1(消去状態)」である場合はステップ4に、1ビットでも「0(書込状態)」のデータが存在する場合はステップ7に進む。通常、この処理をステップ3でブロック消去を実行したブロックの全てのページについて全て実行する。
【0076】
但し、上記消去状態の確認については、少なくとも読み出したデータに誤りが検出されたページについて消去状態を確認すれば、必ずしもブロック消去を実行したブロックの全ページに亘り実行する必要はない。又、消去状態の確認ができれば、フラッシュメモリシステム1の回路構成、フラッシュメモリの仕様及び消去状態の確認方法は特に限定されない。
【0077】
ステップ4:
ブロック消去をした移行元ブロックのページに全ビット「0(書込状態)」のデータを書込み、その際にフラッシュメモリ2−0〜2−3が発行するステータス情報の書き込みステータスを参照して、正常な書き込み動作が行われた否かを判断する。ここで、ブロック消去を実行した場合、全てのビットは「1(消去状態)」になるので、この処理では全メモリセルの状態を消去状態から書込状態に変化させている。
【0078】
この判定で正常な書き込み動作が行われたと判断された場合はステップ5に、正常な書き込み動作が行われなかったと判断された場合はステップ7に進む。通常、この処理をブロック消去された移行元ブロックの全てのページについて実行する。
【0079】
但し、上記書き込み動作の確認については、少なくとも読み出したデータに誤りが検出されたページについて書き込み動作を確認すれば、必ずしもブロック消去を実行したブロックの全ページに亘り実行する必要はない。又、フラッシュメモリの書き込み動作が正常に行なわれたか否かを判断する方法は、書き込みステータスに限定されず、フラッシュメモリの仕様により他の方法で書き込み動作が正常に行なわれたか否かを判断できれば、他の方法であってもよい。又、書き込み動作が正常に行なわれたか否かを判断できれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様も特に限定されない。
【0080】
ステップ5:
ステップ4で全てのビットに「0(書込状態)」のデータを書込んだブロックのページを順次読出し、読み出されたデータが全て「0(書込状態)」であるか否かを判断する。その結果、読み出されたデータが全て「0(書込状態)」である場合はステップ6に、1ビットでも「1(消去状態)」のデータが存在する場合はステップ7に進む。この処理をステップ4で「0(書込状態)」のデータを書込んだページについて全て実行する。
【0081】
但し、データの書込状態の確認ができれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様は特に限定されない。
【0082】
ステップ6:
書込状態から消去状態への正常遷移及び、消去状態から書込状態への正常遷移が確認されたので、ECCブロック11で検出されたデータに含まれる誤りは、偶発的に発生した可逆的なエラーであったと判断され、このブロックを正常ブロックとして取り扱う。従って、このブロックはブロック消去された後、通常の消去済みブロックと同様に取り扱われる。
【0083】
ステップ7:
不可逆的な後天性不良ブロックであると判断され、このブロックを使用禁止とするための、不良ブロック化処理が行われる。この不良ブロック化処理では、そのブロックの先頭ページ(ページ0)の冗長領域26に含まれるブロックステータスを、後天性不良ブロックであることを示す状態とする。これにより、かかるブロックは、以後、使用禁止となる。
但し、不良ブロック化処理の方法については特に限定されず、そのブロックが使用禁止になれば、他の方法であっても良い。又、不可逆的な後天性不良ブロックであると判断されたブロックを使用禁止状態にできれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様も特に限定されない。
【0084】
尚、上記移行元ブロックの判定処理では、「0(書込状態)」のデータを書込んで消去状態から書込状態への正常遷移の判定を行なったが、「0(書込状態)」と「1(消去状態)」を混ぜたデータを書込んでその判定を行なっても良い。例えば、「0(書込状態)」と「1(消去状態)」を混ぜたデータの複数パターンで複数回データの書込みを実行して、消去状態から書込状態への正常遷移の判定を行なってもよい。
【0085】
[ブロック内の全ページを読み出す場合]
ブロック内の全ページを読み出す場合を、図9に示すフローチャートを参照して説明する。尚、図9に示した、「読出し処理(F1)」、「ECCブロックでエラーを検出(F2)」、「データ移行処理(F3)」及び「移行元ブロックの判定処理(F4)」の処理は上述の処理と同様である。又、「全ページのデータ読出し完了(F5)」は「読出し処理(F1)」で読み出したページが、そのブロックの最終ページであるか否かを判断する処理である。
【0086】
<ECCブロックでエラーを検出(F2):NOの場合>
「ECCブロックでエラーを検出(F2)」の処理で、読み出したデータに誤りがなかった場合の処理の流れについて説明する。
「読出し処理(F1)」でブロック内のページが読出され、「ECCブロックでエラーを検出(F2)」で読み出したデータに誤りがなかった場合、「全ページのデータ読出し完了(F5)」でそのページが最終ページでないと判断されれば、再び「読出し処理(F1)」に戻りブロック内の次のページが読出される。この処理の流れが、「全ページのデータ読出し完了(F5)」でそのページが最終ページであると判断されるまで繰返される。
【0087】
<ECCブロックでエラーを検出(F2):YESの場合>
「ECCブロックでエラーを検出(F2)」の処理で、読み出したデータに含まれる誤りが検出された場合の処理の流れについて説明する。
「読出し処理(F1)」でブロック内のページが読出され、「ECCブロックでエラーを検出(F2)」で読み出したデータに含まれる誤りが検出された場合、「データ移行処理(F3)」でそのブロックの全ページのデータが別ブロックに移行処理され、その後「移行元ブロックの判定処理(F4)」で移行元ブロックの診断が行なわれる。その後、「全ページのデータ読出し完了(F5)」でそのページが最終ページでないと判断されれば、再び「読出し処理(F1)」に戻り、その次のページが読み出される。尚、「全ページのデータ読出し完了(F5)」でそのページが最終ページであると判断されれば終了する。
【0088】
[移行処理の説明]
読出しの際にECCブロック11で誤りが検出されたページが含まれるブロック(移行元ブロック)から読出し、このデータを書き込みキュー28に設定されていた消去済みブロック(移行先ブロック)に書込みをする「移行処理」について説明する。尚、この処理では下記のような対応関係で、移行元ブロックの全ページのデータが最初のページ(ページ0)から順番に移行先ブロックに移される。
移行元ブロックのページ0 : 移行先ブロックのページ0
移行元ブロックのページ1 : 移行先ブロックのページ1
移行元ブロックのページ2 : 移行先ブロックのページ2



移行元ブロックのページ31 : 移行先ブロックのページ31
【0089】
尚、移行元ブロックから移行先ブロックにデータを移行する際にはバッファを経由する必要があり、そのバッファとして、コントローラ3のバッファ9を使用する場合と、フラッシュメモリ2−0〜2−3内のバッファ(図示せず)を使用する場合がある。但し、ECCブロック11で誤りが検出されたページについては、バッファ9を使用しなければデータが訂正されないため、フラッシュメモリ2−0〜2−3内のバッファ(図示せず)を使用する場合であっても、そのページだけはバッファ9を使用する。
【0090】
<コントローラ3のバッファ9を使用する場合>
まず、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定(読出し用シーケンサ)がなされる。
【0091】
この設定(読出し用シーケンサ)はマイクロプロセッサ6による制御のもと、以下の設定が行なわれる。
1)内部コマンドとして内部読出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
2)移行元ブロックのページに対応する物理アドレスの上位2ビットと残りの下位ビットがフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0092】
続いて、フラッシュシーケンサブロック12が、上記設定(読出し用シーケンサ)に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック10から、選択信号#1〜#4及びバス15を介してフラッシュメモリ2−0〜2−3に内部コマンドを実行するための情報が供給される。その結果、物理アドレスの上位2ビットでフラッシュメモリ2−0〜2−3のいずれかが選択され、残りの下位ビットで選択されたフラッシュメモリ2−0〜2−3内のページが指定され、そのページのデータがバッファ9に読み出される。
【0093】
次に、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対して以下の設定(書込み用シーケンサ)がなされる。
1)内部コマンドとして内部書込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
2)移行先ブロックのページに対応する物理アドレスの上位2ビットと残りの下位ビットがフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。ここで、移行先ブロックのページに対応する物理アドレスは、図6に示した書き込みキュー28から読み出した消去済みブロックの物理ブロックアドレスに、上記読出し処理で指定したページのページアドレス部分を付加して生成する。
【0094】
次に、フラッシュシーケンサブロック12が、上記設定(書込み用シーケンサ)に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック10から、選択信号#1〜#4及びバス15を介してフラッシュメモリ2−0〜2−3に内部コマンドを実行するための情報が供給される。その結果、物理アドレスの上位2ビットでフラッシュメモリ2−0〜2−3のいずれかが選択され、残りの下位ビットで選択されたフラッシュメモリ2−0〜2−3内のページが指定され、そのページにバッファ9のデータが書込まれる。
【0095】
以上のような処理を、最初のページ(ページ0)から順番に最後のページ(ページ31)まで順次実行する。但し、データが書込まれていないページがある場合は、データが書込まれているページだけを移行処理する。
【0096】
<フラッシュメモリ2−0〜2−3内のバッファを使用する場合>
フラッシュメモリ2−0〜2−3内のバッファを使用する場合は、まず、最初のページから「ECCブロック11で誤りが検出されたページ」の1つ前までのページをフラッシュメモリ2−0〜2−3内のバッファを使用して移し、次に、「ECCブロック11で誤りが検出されたページ」をコントローラ3のバッファ9を使用して移し、次に、「ECCブロック11で誤りが検出されたページ」の次のページから最後のページまでをフラッシュメモリ2−0〜2−3内のバッファを使用して移す。但し、データが書込まれていないページがある場合は、データが書込まれているページだけを移行処理する。
尚、フラッシュメモリ2−0〜2−3内のバッファを使用する移行処理は以下の方法で実行する。
【0097】
マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定(移行用シーケンサ)がなされる。
【0098】
この設定(移行用シーケンサ)はマイクロプロセッサ6による制御のもと、以下の設定が行なわれる。
1)内部コマンドとして内部移行コマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
2)移行元ブロックの物理ブロックアドレス及び移行先ブロックの物理ブロックアドレスの上位2ビットと残りの下位ビットがフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。更に、移行するページの範囲がフラッシュシ―ケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0099】
続いて、フラッシュシーケンサブロック12が、上記設定(移行用シーケンサ)に基づいて内部コマンドを実行する。この内部コマンドを実行すると、フラッシュメモリインターフェースブロック10から、選択信号#1〜#4及びバス15を介してフラッシュメモリ2−0〜2−3に内部コマンドを実行するための情報が供給される。その結果、物理アドレスの上位2ビットでフラッシュメモリ2−0〜2−3のいずれかが選択され、残りの下位ビットで指定された移行元ブロックのページのデータが、フラッシュメモリ2−0〜2−3内のバッファを介して移行先ブロックのページに書込まれる。この際、上記ページの範囲で設定したページが移行処理の対象になる。
【0100】
尚、フラッシュメモリのブロック及びページの構成、並びに移行処理の方法については、使用するフラッシュメモリの仕様により異なるが、誤りが検出されたデータが書込まれていたブロックのデータを別のブロックに移すことができれば、ブロック及びページの構成や移行処理の方法は、他の構成や方法であっても良い。又、誤りが検出されたデータが書込まれていたブロックのデータを別のブロックに移すことができれば、フラッシュメモリシステム1の回路構成及びフラッシュメモリの仕様も特に限定されない。
【0101】
【発明の効果】
以上説明したように、本発明によれば、フラッシュメモリからデータを読出した際に、データに含まれる誤りを検出した場合に、そのデータが書込まれていたブロックのデータを別のブロックに移し、その後、データに含まれる誤りが検出されたブロックが正常なブロックであるか否かを判断することにより、保存されているデータの信頼性を向上させるだけでなく、効率良く不良ブロックを検出し、使用禁止にすることができる。
【図面の簡単な説明】
【図1】図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図3】図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図4】図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図5】図5は、SRAMワークエリア8に格納される書き込みキュー28のデータ構造を示す概略図である。
【図6】図6は、本発明に係るフラッシュメモリシステム1の動作を示すフロ―チャートである。
【図7】図7は、本発明に係る移行元ブロックの判定処理を示すフロ―チャートである。
【図8】図8は、本発明に係るフラッシュメモリシステム1の動作を示すフロ―チャートである。
【符号の説明】
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 冗長領域
28 書き込みキュー
[0001]
[Industrial application fields]
The present invention relates to a memory controller, a flash memory system including the memory controller, and a flash memory control method, and more particularly, to a memory controller and a memory controller capable of improving the reliability of data stored in the flash memory. The present invention relates to a flash memory system and a flash memory control method.
[0002]
[Prior art]
In recent years, a flash memory is often used as a semiconductor memory used for a memory card or a silicon disk. This flash memory is a kind of non-volatile memory, and is required to retain data regardless of whether power is turned on.
[0003]
By the way, a NAND flash memory that is often used in the above-described device is a memory cell when a memory cell is changed from an erased state (logic value = 1) to a written state (logic value = 0). However, when the memory cell is changed from the written state (0) to the erased state (1), it cannot be performed in units of the memory cell, and a predetermined erase unit composed of a plurality of memory cells. You can only do this. Such a batch erase operation is generally called “block erase”.
[0004]
Due to the characteristics described above, in a device using a NAND flash memory, when data is written, a block erased area is searched and new data is written in the detected empty area.
[0005]
Therefore, in a device using a NAND flash memory, it is required that the written data is retained for a long time even after the power is turned off, and the block erased area is retained in an erased state for a long time after the power is turned off. The
[0006]
[Problems to be solved by the invention]
However, when reading or writing to a certain memory cell is performed, the state of another memory cell that shares the bit line with this memory cell may change. This phenomenon is called a disturb phenomenon, and it is known that the occurrence rate is increased by repeating the write / erase operations on the memory cells. When the state of the memory cell changes due to the disturb phenomenon, the data once written not only changes with time, but also disturbs the normal writing operation.
[0007]
In addition to the disturb phenomenon, if the power supply is unexpectedly cut off during the block erase, the erase state of the memory cell to be erased may be incomplete. Even in such a case, a normal writing operation is hindered for the same reason as described above.
[0008]
As a countermeasure against such a problem, Japanese Patent Laid-Open No. 2001-243122 diagnoses the state of an erased block before actually writing data. However, even if the block is determined to be normal at the time of writing, data written due to an accidental error due to subsequent use or an irreversible error due to physical deterioration of the memory cell, etc. It may change over time.
[0009]
Therefore, in the present invention, when an error included in the data is detected when the data is read from the flash memory, the data of the block in which the data is written is moved to another block, and then the data There is provided a memory controller and a memory controller characterized by improving reliability of data stored in a flash memory by determining whether or not a block in which an error is detected is a normal block It is an object of the present invention to provide a flash memory system and a method for writing data to the flash memory.
[0010]
[Means for Solving the Problems]
[Memory Controller and Flash Memory System According to the Present Invention]
An object of the present invention is to provide an error detection function for detecting an error included in page data read from a flash memory,
When an error included in data is detected by the error detection function, a migration function that moves data of a block including a page in which an error is detected to another block; and
This is achieved by a memory controller and a flash memory system having a diagnostic function for diagnosing a migration source block when data is migrated between blocks by the migration function.
[0011]
According to the present invention, the error detection function detects and corrects an error in data based on an error correction code written in a redundant area of a page of the flash memory.
Error detection and correction can be performed efficiently.
[0012]
Further, according to the present invention, the diagnosis includes at least a normal transition inspection from the writing state to the erasing state and a normal transition inspection from the erasing state to the writing state.
Block diagnosis can be performed reliably.
[0013]
Here, the normal transition inspection from the writing state to the erasing state is an inspection whether or not the data normally written by the block erasing has been erased, and the normal transition inspection from the erasing state to the writing state. Is an inspection of whether or not data can be normally written in the erased block.
[0014]
According to the present invention, when data is transferred between blocks by the transfer function,
Use memory controller buffer or both memory controller and flash memory buffer,
By using the buffer of the memory controller at least for the page where the error is detected,
Efficiently corrected data can be transferred to another block.
[0015]
[Control Method of Flash Memory According to the Present Invention]
The object of the present invention is to detect an error included in the page data read from the flash memory.
After moving the data of the block containing the page where the error was detected to another block,
This is achieved by a flash memory control method characterized by diagnosing a migration source block.
[0016]
Further, according to the present invention, an error included in the read page data is detected and corrected based on an error correction code written in a redundant area of the page of the flash memory.
Error detection and correction can be performed efficiently.
[0017]
Further, according to the present invention, the diagnosis includes at least a normal transition inspection from the writing state to the erasing state and a normal transition inspection from the erasing state to the writing state.
Block diagnosis can be performed reliably.
[0018]
Here, the normal transition inspection from the writing state to the erasing state is an inspection whether or not the data normally written by the block erasing has been erased, and the normal transition inspection from the erasing state to the writing state. Is an inspection of whether or not data can be normally written in the erased block.
[0019]
Also, according to the present invention, when data of a block including a page in which an error is detected is transferred to another block,
Use memory controller buffer or both memory controller and flash memory buffer,
By using the buffer of the memory controller at least for the page where the error is detected,
Efficiently corrected data can be transferred to another block.
[0020]
[Reading multiple pages according to the present invention]
According to the present invention, during the reading process from the flash memory, the process is started according to the external command from the host computer.
When an error is detected in the page data read from the flash memory,
Suspend processing performed according to external commands from the host computer,
After the interruption, start the migration process to move the data of the block containing the page where the error is detected, to another block,
After completion of the migration process, diagnose the migration source block,
After completion of the diagnosis, the processing target is changed from the migration source block to the migration destination block, and the processing performed in accordance with the external command from the interrupted host computer is resumed. ,
The object of the present invention can be achieved while suppressing a decrease in the efficiency of processing performed in accordance with an external command from the host computer.
[0021]
Here, the external command is a command given from the host computer 5 to the flash memory system 1.
[0022]
If the external command is a multiple page read request,
During the multi-page read process from the flash memory where the process was started according to the external command from the host computer,
When an error is detected in the page data read from the flash memory,
Suspending the multi-page reading process,
After the interruption, start the migration process to move the data of the block containing the page where the error is detected, to another block,
After completion of the migration process, diagnose the migration source block,
After completion of the diagnosis, the processing target is changed from the migration source block to the migration destination block, and the interrupted multiple page reading process is resumed.
The object of the present invention can be achieved while suppressing a decrease in the efficiency of the multi-page reading process.
[0023]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[Description of flash memory system 1: see FIG. 1]
FIG. 1 is a block diagram schematically showing a flash memory system 1 according to the present invention. This flash memory system 1 is generally stored in a PC card, a compact flash (registered trademark of SanDisk Corporation), or the like. Yes. As shown in the figure, the flash memory system 1 includes four flash memory chips 2-0 to 2-3, a controller 3, and a connector 4.
[0024]
The PC card conforms to the PCMCIA (Personal Computer Memory Card International Association) standard, and the compact flash conforms to the CFA (Compact Flash Association) standard. The present invention also includes "SmartMedia (registered trademark of Toshiba Corporation)" of SSFDC Forum, "MMC (MultiMedia Card)" proposed by MultiMedia Card Association, and "Memory Stick (trademark of Sony Corporation)" proposed by Sony Corporation. It is also possible to apply the present invention to "
[0025]
The PC card or compact flash in which the flash memory system 1 is housed is normally used by being detachably attached to the host computer 5 and used as a kind of external storage device for the host computer 5 as a pair. Examples of the host computer 5 include various information processing apparatuses such as a personal computer and a digital still camera that process various information such as characters, sounds, and image information.
[0026]
The flash memories 2-0 to 2-3 shown in FIG. 1 are devices that can execute reading or writing in units of pages and erasing in units of blocks. Usually, one block is composed of 32 pages, and one page is 512. When viewed from the host computer 5 side, one page is composed of 512 bytes. Therefore, for example, when the flash memories 2-0 to 2-3 are flash memories having a storage capacity of 128 Mbytes (1 Gbit), each constitutes a storage area of 256K pages and a total storage area of 1M pages. To do.
[0027]
Here, if one page is 512 bytes, the storage area of the 1M page constitutes a 512 Mbyte (4 Gbit) memory. Therefore, if 20-bit address information is supplied from the host computer 5, the entire area of the memory can be accessed. Hereinafter, the 20-bit address information supplied from the host computer 5 to the flash memory system 1 is referred to as a “host address”.
[0028]
[Description of controller 3: see FIG. 1]
1 includes a microprocessor 6, a host interface block 7, an SRAM work area 8, a buffer 9, a flash memory interface block 10, an ECC (error correction code) block 11, and a flash sequencer block. 12. The controller 3 constituted by these functional blocks is integrated on one semiconductor chip. The function of each block will be described below.
[0029]
The microprocessor 6 is a functional block that controls the operation of the entire functional blocks constituting the controller 3.
[0030]
The host interface block 7 is connected to the host computer 5 through the connector 4 and is a functional block that exchanges data, address information, status information, and external command information with the host computer 5 under the control of the microprocessor 6. It is.
[0031]
That is, when the flash memory system 1 is attached to the host computer 5, the flash memory system 1 and the host computer 5 are connected to each other via the bus 13, the connector 4, and the bus 14, and in this state, the host computer Data supplied from the flash memory system 1 to the flash memory system 1 is taken into the controller 3 through the host interface block 7 and the data supplied from the flash memory system 1 to the host computer 5 is The data is supplied to the host computer 5 through the interface block 7 as an exit.
[0032]
The host interface block 7 further includes a task file register (not shown) for temporarily storing a host address and an external command supplied from the host computer 5 and an error register (not shown) that is set when an error occurs. Z).
[0033]
The SRAM work area 8 is a work area in which data necessary for controlling the flash memories 2-0 to 2-3 is temporarily stored, and is a functional block composed of a plurality of SRAM cells.
[0034]
The buffer 9 is a functional block that temporarily stores data read from the flash memories 2-0 to 2-3 and data to be written to the flash memories 2-0 to 2-3. That is, the data read from the flash memories 2-0 to 2-3 is held in the buffer 9 until the host computer 5 can receive the data, and the data to be written to the flash memory chips 2-0 to 2-3. Is held in the buffer 9 until the flash memories 2-0 to 2-3 become writable.
[0035]
The flash memory interface block 10 exchanges data, address information, status information, and internal command information with the flash memories 2-0 to 2-3 via the bus 15, and each flash memory 2-0 to 2-3. Is a functional block that supplies corresponding selection signals # 0 to # 3.
[0036]
The selection signals # 0 to # 3 are generated based on the upper 2 bits of the 20 bits of the host address supplied from the host computer 5 when the host computer 5 requests to read or write data. A signal for setting any one of? 2 to 3 to an operating state (a state where data can be read or written) is output. Specifically, if the upper 2 bits of the host address are “00”, the selection signal # 0 outputs a signal for operating the flash memory 2-0, and if it is “01”, the selection signal # 1. Outputs a signal for putting the flash memory 2-1 in the operating state. If it is “10”, the selection signal # 2 outputs a signal for putting the flash memory 2-2 in the operating state. If there is, the selection signal # 3 outputs a signal for putting the flash memory 2-3 in an operating state.
[0037]
The “internal command” is a command given from the controller 3 to the flash memory chips 2-0 to 2-3, and is distinguished from an “external command” which is a command given from the host computer 5 to the flash memory system 1. The
[0038]
The ECC block 11 generates an error correction code to be added to data to be written to the flash memories 2-0 to 2-3, and is included in the read data based on the error correction code added to the read data. It is a functional block that detects and corrects errors.
[0039]
The flash sequencer block 12 is a functional block that controls operations of the flash memories 2-0 to 2-3 based on internal commands. The flash sequencer block 12 includes a plurality of registers (not shown), and when executing an internal command to the plurality of registers.
Necessary information is set under the control of the microprocessor 6. When information necessary for executing the internal command is set in the plurality of registers, the internal command is executed and executed based on the information.
[Description of Flash Memory Cell 16: See FIGS. 2 and 3]
Next, a specific structure of the flash memory cell 16 constituting the flash memories 2-0 to 2-3 shown in FIG. 1 will be described with reference to FIGS.
[0040]
FIG. 2 is a cross-sectional view schematically showing the structure of each flash memory cell 16 constituting the flash memories 2-0 to 2-3. As shown in the figure, the flash memory cell 16 includes an N-type source diffusion region 18 and a drain diffusion region 19 formed in the P-type semiconductor substrate 17, and between the source diffusion region 18 and the drain diffusion region 19. A tunnel oxide film 20 formed so as to cover the P-type semiconductor substrate 17, a floating gate electrode 21 formed on the tunnel oxide film 20, an insulating film 22 formed on the floating gate electrode 21, and an insulating film And a control gate electrode 23 formed on the gate 22. A plurality of flash memory cells 16 having such a configuration are connected in series in the flash memories 2-0 to 2-3 to form a NAND flash memory.
[0041]
The flash memory cell 16 has an “erased state (a state where no electrons are accumulated)” and a “written state (a state where electrons are accumulated)” depending on whether or not electrons are injected into the floating gate electrode 21. Either state is indicated. Here, one flash memory cell 16 corresponds to 1-bit data, the “erased state” of the flash memory cell 16 corresponds to the data of the logical value “1”, and the “written state” of the flash memory cell 16 Corresponds to data of logical value “0”.
[0042]
In the “erased state”, since electrons are not accumulated in the floating gate electrode 21, the P-type semiconductor between the source diffusion region 18 and the drain diffusion region 19 when the read voltage is not applied to the control gate electrode 23. A channel is not formed on the surface of the substrate 17, and the source diffusion region 18 and the drain diffusion region 19 are electrically insulated. On the other hand, when a read voltage is applied to the control gate electrode 23, a channel (not shown) is formed on the surface of the P-type semiconductor substrate 17 between the source diffusion region 18 and the drain diffusion region 19. And the drain diffusion region 19 are electrically connected by this channel.
[0043]
That is, in the “erased state”, when no read voltage is applied to the control gate electrode 23, the source diffusion region 18 and the drain diffusion region 19 are electrically insulated, and the read voltage is applied to the control gate electrode 23. In this state, the source diffusion region 18 and the drain diffusion region 19 are electrically connected.
[0044]
FIG. 3 is a cross-sectional view schematically showing the flash memory cell 16 in the “written state”. As shown in the figure, the “written state” refers to a state in which electrons are accumulated in the floating gate electrode 21. Since the floating gate electrode 21 is sandwiched between the tunnel oxide film 20 and the insulating film 22, the electrons once injected into the floating gate electrode 21 stay in the floating gate electrode 21 for a very long time. In this “write state”, since electrons are accumulated in the floating gate electrode 21, the source diffusion region 18, the drain diffusion region 19, and the like regardless of whether or not the read voltage is applied to the control gate electrode 23. A channel 24 is formed on the surface of the P-type semiconductor substrate 17 therebetween. Therefore, in the “write state”, the source diffusion region 18 and the drain diffusion region 19 are always electrically connected by the channel 24 regardless of whether or not the read voltage is applied to the control gate electrode 23. .
[0045]
Whether the flash memory cell 16 is in an erased state or a written state can be read as follows. A plurality of the flash memory cells 16 are connected in series in the flash memories 2-0 to 2-3. Whether a read voltage is applied to the control gate electrodes 23 of all the flash memory cells 16 other than the flash memory cell 16 selected in this series body, and whether or not a current flows through the series body of the flash memory cells 16 in this state. Is detected. As a result, if a current flows through the series body, it is determined that the selected flash memory cell 16 is in the write state, and if no current flows, it is determined that the selected flash memory cell 16 is in the erased state. Is done. In this way, it is possible to read out whether the data held in any flash memory cell 16 included in the serial body is “0” or “1”. Since data is read as described above, in the NAND flash memory, data held in two or more flash memory cells 16 included in one serial body cannot be read simultaneously.
[0046]
When changing the flash memory cell 16 in the erased state to the written state, a positive high voltage is applied to the control gate electrode 23 and electrons are injected into the floating gate electrode 21 through the tunnel oxide film 20. At this time, an FN (Fowler-Nordheim) tunnel current flows and electrons are injected into the floating gate electrode 21. On the other hand, when the flash memory cell 16 in the written state is changed to the erased state, a negative high voltage is applied to the control gate electrode 23, and the electrons accumulated in the floating gate electrode 21 via the tunnel oxide film 20 are applied. Discharge.
[0047]
[Explanation of flash memory structure: See Fig. 4]
Next, the memory structure of each flash memory 2-0 to 2-3 will be described.
FIG. 4 schematically shows a memory structure of the flash memory chip 2-0. As shown in FIG. 4, the flash memory 2-0 includes “pages” that are access units for reading and writing data and “blocks” that are data erasing units.
[0048]
The “page” is composed of a 512-byte user area 25 and a 16-byte redundant area 26. The user area 25 is an area for storing user data supplied from the host computer 5, and the redundant area 26 is an area for storing additional information such as an error collection code generated by the ECC block 11. The error collection code is additional information for correcting an error included in the data stored in the corresponding user area 25. If the error included in the data stored in the user area 25 is equal to or less than a predetermined number, It is used to correct this and obtain correct data.
[0049]
In the redundant area 26, “erase flag” and “corresponding logical block address” are stored in addition to the error correction code. The “erase flag” is a flag indicating whether or not the block is an erased block. The “corresponding logical block address” is the logical block address of the block when data is stored in the block. It shows whether it corresponds to.
[0050]
The “block” is composed of 32 “pages”. Here, since the flash memory cannot overwrite data, even when only the data of one “page” is rewritten, all the data of 32 “pages” of “block” including the “page” is written. Must be written again to the “block” where all the “page” data has been erased.
[0051]
The flash memory 2-0 shown in FIG. 4 is composed of 8192 blocks. As for the other flash memories 2-1 to 2-3 shown in FIG. 1, if one having the same configuration as the flash memory 2-0 is used, 32768 consisting of blocks 0 to 32767 in total (four flash memories). It becomes a block and constitutes a memory of 1M pages (32768 blocks × 32 pages).
[0052]
When accessing a specific “page” of memory consisting of these 1M pages, the upper 15 bits of the 20-bit host address are used to specify “block” (block 0 to block 32767), and the remaining The lower 5 bits are used to specify “pages” (page 0 to page 31) included in the specified “block”.
[0053]
As will be described later, the block specification using the upper 15 bits of the host address is not uniquely determined by the host address. That is, if the 15 bits consisting of the upper 15 bits of the host address are called “logical block address” and the address of the block that is actually accessed is called “physical block address”, “logical block address” and “physical block address” After the logical block address is converted into the physical block address by the “address conversion table”, the block to be actually accessed is specified based on the physical block address.
[0054]
[Description of logical block address and physical block address]
As described above, since the flash memory cannot overwrite data, in order to write new data different from this to a “page” in which data has already been written, once the already written data is erased, a new data is written. A process of writing data is required. At this time, since the erasure is processed in units of blocks, when trying to erase the data of the “page” to which new data is written, all the “page” data of the “block” including the “page” is erased. End up. Therefore, when rewriting data that has already been written to a certain "page", the data for all the other pages of the "block" that contains the "page" to be rewritten is also written to the "page" to be rewritten. It is necessary to move to the erased block.
[0055]
When rewriting data as described above, the data after rewriting is written in a “block” that is different from the “block” before rewriting, so the logical block address based on the host address and the flash corresponding to this logical block address The correspondence with the physical block addresses in the memories 2-0 to 2-3 dynamically changes every time data is rewritten. For this reason, an address conversion table in which the correspondence between the logical block address and the physical block address is written is required.
[0056]
The “address conversion table” is a table showing the correspondence between “logical block address” and “physical block address”, and is stored in the SRAM work area 8 shown in FIG. The "address conversion table" updates the correspondence relationship of the part involved in the rewriting whenever the data written in the flash memories 2-0 to 2-3 is rewritten for the reasons described above. Is done.
[0057]
[Description of write queue: See Fig. 5]
FIG. 5 is a schematic diagram showing the data structure of the write queue 28 stored in the SRAM work area 8 shown in FIG.
As shown in FIG. 5, the write queue 28 is composed of eight queues consisting of queues 0 to 7, each of which stores a 15-bit physical block address. Here, the physical block address of the erased block is stored in each queue. Therefore, the write queue 28 can hold physical block addresses of up to eight erased blocks. The write queue 28 detects the erased block with reference to the “erase flag”, and stores the physical block address of the detected block in the queues 0 to 7.
[0058]
[Initial setting operation]
An initial setting operation of the flash memory system 1 shown in FIG. 1 will be described. This initial setting operation is executed when the flash memory system 1 is mounted on the host computer 5 or when a reset instruction is issued by the host computer 5.
[0059]
In this initial setting operation, the creation of the address conversion table 27 and the write queue 28 shown in FIG. 5 is started under the control of the microprocessor 6, and the initial setting operation ends when the creation is completed.
[0060]
Note that while the initial setting operation of the flash memory system 1 is being performed, the controller 3 is in a busy state, and an instruction to read or write data from the host computer 5 is rejected. The busy state is canceled when the initial setting operation of the flash memory system 1 is completed.
[0061]
[Description of processing according to the present invention: see FIGS. 6 to 7]
Hereinafter, the processing will be described with reference to FIGS. 6 to 7 showing flowcharts of processing according to the present invention.
<Read process (F1)>
In this process, the host computer 5 shown in FIG. 1 supplies an external read command and a host address, which are a kind of external command, to the flash memory system 1 via the bus 14, connector 4 and bus 13. The host address and the external read command are supplied to the controller 3 and then temporarily stored in a task file register (not shown) included in the host interface block 7.
[0062]
Next, the host interface block 7 determines whether or not the host address stored in the task file register (not shown) is a correct address, that is, the host address is a physical address that does not originally exist or an invalid address. It is determined whether the address is not indicated.
[0063]
As a result of this address determination, if it is determined that the host address stored in the task file register (not shown) is a valid address, the register (see FIG. (Not shown) is set (readout sequencer).
[0064]
This setting (readout sequencer) is set as follows under the control of the microprocessor 6.
1) An internal read command is set in a predetermined register (not shown) in the flash sequencer block 12 as an internal command.
2) A logical block address is extracted from the host address, the logical block address is converted into a corresponding physical block address, and a page address portion extracted from the host address is added to the physical block address to generate a physical address. . The upper 2 bits and the remaining lower bits of the physical address are set in a predetermined register (not shown) in the flash sequencer block 12.
[0065]
On the other hand, if it is determined that the address is abnormal as a result of the address determination, an error register (not shown) included in the host interface block 7 is set, and the host computer refers to the contents of the register. , You can know the error occurrence.
[0066]
Next, the flash sequencer block 12 executes an internal command based on the above setting (readout sequencer). When this internal command is executed, information for executing the internal command is supplied from the flash memory interface block 10 to the flash memories 2-0 to 2-3 via the selection signals # 1 to # 4 and the bus 15. As a result, one of the flash memories 2-0 to 2-3 is selected by the upper 2 bits of the physical address, and the page in the selected flash memory 2-0 to 2-3 is specified by the remaining lower bits. The data of the page is read into the buffer 9.
[0067]
<Error detected in ECC block (F2)>
When the data in the flash memories 2-0 to 2-3 is read to the buffer 9 by the above processing, the ECC block 11 analyzes this data and generates an error correction code. Based on the error collection code, the ECC block 11 detects and corrects an error included in the read data. When an error included in the read data is detected, the following processing is executed.
[0068]
<Data migration process (F3)>
Data of all pages of a block including a page in which an error is detected in the ECC block 11 at the time of reading is sequentially read from the first page to the last page, and rewritten in the erased block (hereinafter, this is referred to as “this”). Processing is called “migration processing”). Here, as the erased block, an erased block set in the write queue 28 is used.
As for the migration process, there are a case where the buffer 9 is used and a case where the buffer in the flash memories 2-0 to 2-3 is used. Details thereof will be described later.
[0069]
<Transfer Source Block Determination Process (F4)>
The processing will be described with reference to the migration source block determination processing flowchart shown in FIG. This process diagnoses the migration source block.
[0070]
Step 1:
After completion of the migration process, under the control of the microprocessor 6, the following setting (block erase sequencer) is made for a register (not shown) included in the flash sequencer block 12.
1) An internal block erase command is set in a predetermined register (not shown) in the flash sequencer block 12 as an internal command.
2) The upper 2 bits and the remaining lower bits of the physical block address of the migration source block are set in a predetermined register (not shown) in the flash sequencer block 12.
[0071]
Next, the flash sequencer block 12 executes an internal command based on the above setting (block erase sequencer). When this internal command is executed, information for executing the internal command is supplied from the flash memory interface block 10 to the flash memories 2-0 to 2-3 via the selection signals # 1 to # 4 and the bus 15. As a result, one of the flash memories 2-0 to 2-3 is selected by the upper 2 bits of the physical address and written to the block in the flash memory 2-0 to 2-3 selected by the remaining lower bits. All the data is deleted.
[0072]
However, the block erasing method is not limited to the above method, and other methods may be used as long as the block erasing can be performed by another method according to the specification of the flash memory. Further, as long as block erasing can be performed, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited.
[0073]
Step 2:
It is determined whether or not the block erase operation is normally performed with reference to the erase status of the status information issued by the flash memories 2-0 to 2-3 after the block erase is completed. If it is determined that a normal block erase operation has been performed, the process proceeds to step 3. If it is determined that a normal block erase operation has not been performed, the process proceeds to step 7.
[0074]
However, the method of determining whether or not the erase operation of the flash memory has been normally performed is not limited to the erase status, and if it can be determined whether or not the erase operation has been normally performed by another method according to the specification of the flash memory. Other methods may be used. Further, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited as long as it can be determined whether or not the erase operation has been normally performed.
[0075]
Step 3:
The page of the block for which block erasure has been executed in step 1 is sequentially read, and it is determined whether or not all of the read data is “1 (erase state)”. As a result, if all of the read data is “1 (erased state)”, the process proceeds to step 4. If even one bit of data is “0 (written state)”, the process proceeds to step 7. Normally, this process is executed for all pages of the block for which block erasure has been executed in step 3.
[0076]
However, the confirmation of the erase state does not necessarily have to be performed for all pages of the block in which block erase has been performed, as long as the erase state is confirmed for at least a page in which an error is detected in the read data. If the erase state can be confirmed, the circuit configuration of the flash memory system 1, the specification of the flash memory, and the erase state confirmation method are not particularly limited.
[0077]
Step 4:
Write the data of all the bits “0 (write state)” to the page of the migration source block that has been erased, referring to the write status status information issued by the flash memories 2-0 to 2-3 at that time, It is determined whether or not a normal write operation has been performed. Here, when the block erase is executed, all the bits are set to “1 (erased state)”. Therefore, in this process, the state of all the memory cells is changed from the erased state to the written state.
[0078]
If it is determined that a normal write operation has been performed, the process proceeds to step 5. If it is determined that a normal write operation has not been performed, the process proceeds to step 7. Normally, this processing is executed for all pages of the migration source block that has been block erased.
[0079]
However, the confirmation of the write operation does not necessarily have to be performed for all pages of the block for which block erase has been performed, as long as the write operation is confirmed for at least a page in which an error is detected in the read data. Further, the method for determining whether or not the flash memory write operation has been normally performed is not limited to the write status, and if the flash memory specification can determine whether or not the write operation has been performed normally by another method. Other methods may be used. Further, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited as long as it can be determined whether or not the write operation is normally performed.
[0080]
Step 5:
Step 4 sequentially reads the pages of the block in which “0 (write state)” data has been written to all the bits, and determines whether all the read data is “0 (write state)”. To do. As a result, if all the read data is “0 (write state)”, the process proceeds to step 6, and if even one bit of data is “1 (erasure state)”, the process proceeds to step 7. This process is executed for all pages in which data of “0 (write state)” is written in step 4.
[0081]
However, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited as long as the data writing state can be confirmed.
[0082]
Step 6:
Since the normal transition from the writing state to the erasing state and the normal transition from the erasing state to the writing state are confirmed, the error included in the data detected by the ECC block 11 is a reversible accidentally generated. It is determined that an error has occurred, and this block is handled as a normal block. Therefore, after this block is erased, it is handled in the same way as a normal erased block.
[0083]
Step 7:
It is determined that the block is an irreversible acquired defective block, and defective block processing is performed to prohibit the use of this block. In this defective block processing, the block status included in the redundant area 26 of the first page (page 0) of the block is set to a state indicating an acquired defective block. As a result, the block is prohibited from being used thereafter.
However, the method of the defective block processing is not particularly limited, and other methods may be used as long as the block is prohibited from use. Further, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited as long as the block determined to be an irreversible acquired defective block can be disabled.
[0084]
In the migration source block determination process, data of “0 (write state)” is written to determine the normal transition from the erased state to the written state, but “0 (written state)”. The determination may be made by writing data in which “1 (erase state)” is mixed. For example, data writing is executed a plurality of times with a plurality of data patterns in which “0 (writing state)” and “1 (erasing state)” are mixed, and the normal transition from the erasing state to the writing state is determined. May be.
[0085]
[When reading all pages in a block]
A case where all pages in a block are read will be described with reference to a flowchart shown in FIG. The processing of “read processing (F1)”, “error detection in ECC block (F2)”, “data migration processing (F3)”, and “migration source block determination processing (F4)” shown in FIG. Is similar to the process described above. “All page data read completion (F5)” is a process for determining whether or not the page read in the “read process (F1)” is the last page of the block.
[0086]
<Error detected in ECC block (F2): NO>
The flow of processing when there is no error in the read data in the processing of “detect error in ECC block (F2)” will be described.
If the page in the block is read by “read processing (F1)” and there is no error in the data read by “detect error in ECC block (F2)”, “data read completion for all pages (F5)” If it is determined that the page is not the last page, the process returns to “read processing (F1)” and the next page in the block is read. The flow of this process is repeated until it is determined that the page is the last page in “Reading data of all pages (F5)”.
[0087]
<Error detected in ECC block (F2): YES>
A process flow when an error included in the read data is detected in the process of “detect error in ECC block (F2)” will be described.
When a page in the block is read by “read processing (F1)” and an error included in the data read by “detect error in ECC block (F2)” is detected, “data migration processing (F3)” Data of all pages in the block is transferred to another block, and then the transfer source block is diagnosed in “transfer source block determination process (F4)”. Thereafter, if it is determined that the page is not the last page by “data reading completion for all pages (F5)”, the process returns to “reading process (F1)” and the next page is read. The process ends when it is determined that the page is the last page in “Reading data of all pages (F5)”.
[0088]
[Description of migration process]
Read from a block (migration source block) including a page in which an error is detected in the ECC block 11 at the time of reading, and write this data to an erased block (migration destination block) set in the write queue 28. The migration process ”will be described. In this process, the data of all pages of the migration source block are moved to the migration destination block in order from the first page (page 0) with the following correspondence.
Page 0 of migration source block: Page 0 of migration destination block
Page 1 of source block: Page 1 of destination block
Page 2 of migration source block: Page 2 of migration destination block



Page 31 of the migration source block: Page 31 of the migration destination block
[0089]
It should be noted that when data is transferred from the transfer source block to the transfer destination block, it is necessary to go through a buffer, and when the buffer 9 of the controller 3 is used as the buffer, May be used (not shown). However, for the page in which an error is detected in the ECC block 11, data is not corrected unless the buffer 9 is used. Therefore, a buffer (not shown) in the flash memory 2-0 to 2-3 is used. Even if it exists, only the page uses the buffer 9.
[0090]
<When using the buffer 9 of the controller 3>
First, under the control of the microprocessor 6, a setting (readout sequencer) is made for a register (not shown) included in the flash sequencer block 12.
[0091]
This setting (readout sequencer) is set as follows under the control of the microprocessor 6.
1) An internal read command is set in a predetermined register (not shown) in the flash sequencer block 12 as an internal command.
2) The upper 2 bits and the remaining lower bits of the physical address corresponding to the page of the migration source block are set in a predetermined register (not shown) in the flash sequencer block 12.
[0092]
Subsequently, the flash sequencer block 12 executes an internal command based on the above setting (readout sequencer). When this internal command is executed, information for executing the internal command is supplied from the flash memory interface block 10 to the flash memories 2-0 to 2-3 via the selection signals # 1 to # 4 and the bus 15. As a result, one of the flash memories 2-0 to 2-3 is selected by the upper 2 bits of the physical address, and the page in the selected flash memory 2-0 to 2-3 is specified by the remaining lower bits. The data of the page is read into the buffer 9.
[0093]
Next, under the control of the microprocessor 6, the following setting (write sequencer) is performed on a register (not shown) included in the flash sequencer block 12.
1) An internal write command is set in a predetermined register (not shown) in the flash sequencer block 12 as an internal command.
2) The upper 2 bits and the remaining lower bits of the physical address corresponding to the page of the transfer destination block are set in a predetermined register (not shown) in the flash sequencer block 12. Here, the physical address corresponding to the page of the migration destination block is obtained by adding the page address portion of the page specified in the above read process to the physical block address of the erased block read from the write queue 28 shown in FIG. Generate.
[0094]
Next, the flash sequencer block 12 executes an internal command based on the above setting (write sequencer). When this internal command is executed, information for executing the internal command is supplied from the flash memory interface block 10 to the flash memories 2-0 to 2-3 via the selection signals # 1 to # 4 and the bus 15. As a result, one of the flash memories 2-0 to 2-3 is selected by the upper 2 bits of the physical address, and the page in the selected flash memory 2-0 to 2-3 is specified by the remaining lower bits. The data in the buffer 9 is written on the page.
[0095]
The above processing is sequentially executed from the first page (page 0) to the last page (page 31) in order. However, when there is a page in which data is not written, only the page in which data is written is subjected to migration processing.
[0096]
<When using buffers in flash memory 2-0 to 2-3>
When the buffers in the flash memories 2-0 to 2-3 are used, first, pages from the first page to the page immediately before the “page where an error is detected in the ECC block 11” are stored in the flash memory 2-0. 2-3, and then move the “page in which an error was detected in the ECC block 11” using the buffer 9 of the controller 3, and then “detect an error in the ECC block 11. The page from the next page to the last page is moved using the buffer in the flash memory 2-0 to 2-3. However, when there is a page in which data is not written, only the page in which data is written is subjected to migration processing.
The migration process using the buffers in the flash memories 2-0 to 2-3 is executed by the following method.
[0097]
Under the control of the microprocessor 6, a setting (transition sequencer) is made for a register (not shown) included in the flash sequencer block 12.
[0098]
This setting (transition sequencer) is set as follows under the control of the microprocessor 6.
1) An internal transfer command is set as an internal command in a predetermined register (not shown) in the flash sequencer block 12.
2) The upper 2 bits and the remaining lower bits of the physical block address of the migration source block and the physical block address of the migration destination block are set in a predetermined register (not shown) in the flash sequencer block 12. Further, the range of pages to be transferred is set in a predetermined register (not shown) in the flash sequencer block 12.
[0099]
Subsequently, the flash sequencer block 12 executes an internal command based on the above setting (transition sequencer). When this internal command is executed, information for executing the internal command is supplied from the flash memory interface block 10 to the flash memories 2-0 to 2-3 via the selection signals # 1 to # 4 and the bus 15. As a result, one of the flash memories 2-0 to 2-3 is selected with the upper 2 bits of the physical address, and the data of the page of the migration source block specified by the remaining lower bits is stored in the flash memories 2-0 to 2 3 is written to the page of the destination block via the buffer in -3. At this time, the page set in the range of the page is the target of the migration process.
[0100]
The configuration of the flash memory block and page, and the migration processing method vary depending on the specifications of the flash memory to be used, but the data of the block in which the data in which the error was detected was written is transferred to another block. If possible, the configuration of blocks and pages and the migration processing method may be other configurations and methods. Further, the circuit configuration of the flash memory system 1 and the specification of the flash memory are not particularly limited as long as the data of the block in which the data in which the error is detected can be transferred to another block.
[0101]
【The invention's effect】
As described above, according to the present invention, when an error included in data is detected when data is read from the flash memory, the data of the block in which the data has been written is transferred to another block. Then, by determining whether the block in which the error included in the data is detected is a normal block, not only improves the reliability of the stored data, but also efficiently detects the bad block. Can be banned.
[Brief description of the drawings]
FIG. 1 is a block diagram schematically showing a flash memory system 1 according to a preferred embodiment of the present invention.
FIG. 2 is a cross-sectional view schematically showing the structure of each flash memory cell 16 constituting the flash memory chips 2-0 to 2-3.
FIG. 3 is a cross-sectional view schematically showing a flash memory cell 16 in a write state.
FIG. 4 is a diagram schematically showing a structure of an address space of the flash memory chip 2-0.
FIG. 5 is a schematic diagram showing a data structure of a write queue 28 stored in the SRAM work area 8;
FIG. 6 is a flowchart showing the operation of the flash memory system 1 according to the present invention.
FIG. 7 is a flowchart showing determination processing of a migration source block according to the present invention.
FIG. 8 is a flowchart showing the operation of the flash memory system 1 according to the present invention.
[Explanation of symbols]
1 Flash memory system
2-0 to 2-3 flash memory
3 Controller
4 Connector
5 Host computer
6 Microprocessor
7 Host interface block
8 SRAM work area
9 buffers
10 Flash memory interface block
11 ECC block
12 Flash sequencer block
13-15 Bus
16 Flash memory cell
17 P-type semiconductor substrate
18 Source diffusion region
19 Drain diffusion region
20 Tunnel oxide film
21 Floating gate electrode
22 Insulating film
23 Control gate electrode
24 channels
25 User area
26 Redundant area
28 Write queue

Claims (4)

ホストシステムから与えられるコマンドに従って、ページ単位でデータの書き込み又は読み出しが行われ、複数個のページを含むブロック単位でデータの消去が行われるフラッシュメモリの動作を制御するメモリコントローラであって、
フラッシュメモリから読み出されたデータに含まれる誤りを検出し、検出した誤りを訂正するエラー訂正機能と、
前記エラー訂正機能により前記フラッシュメモリから読み出されたデータに含まれる誤りが検出された場合に、誤りが検出されたデータが記憶されているページが含まれるブロックに記憶されている全てのデータを他のブロックに移す移行機能と、
前記移行機能によりブロック間でデータが移行された場合に、データの移行元のブロックを診断する診断機能と
を備え、
前記診断機能は、少なくとも書込状態から消去状態への正常遷移検査と、消去状態から書込状態への正常遷移検査とを含む診断を行う、
ことを特徴とするメモリコントローラ。
A memory controller that controls the operation of a flash memory in which data is written or read in units of pages according to commands given from a host system, and data is erased in units of blocks including a plurality of pages.
An error correction function for detecting errors contained in the data read from the flash memory and correcting the detected errors;
When an error included in the data read from the flash memory is detected by the error correction function, all the data stored in the block including the page storing the data in which the error is detected is stored. Migration function to move to other blocks,
A diagnostic function for diagnosing the data migration source block when data is migrated between blocks by the migration function;
The diagnostic function performs a diagnosis including at least a normal transition test from a write state to an erase state and a normal transition test from an erase state to a write state.
A memory controller characterized by that.
請求項1記載のメモリコントローラと、
前記メモリコントローラによって制御されるフラッシュメモリと
を備えるフラッシュメモリシステム。
A memory controller according to claim 1;
And a flash memory system controlled by the memory controller.
ホストシステムから与えられるコマンドに従って、ページ単位でデータの書き込み又は読み出しが行われ、複数個のページを含むブロック単位でデータの消去が行われるフラッシュメモリの制御方法であって、
前記フラッシュメモリから読み出されたデータに含まれる誤りを検出し、検出した誤りを訂正するエラー訂正ステップと、
前記エラー訂正ステップにおいて前記フラッシュメモリから読み出されたデータに含まれる誤りが検出された場合に、誤りが検出されたデータが記憶されているページが含まれるブロック内に記憶されている全てのデータを他のブロックに移す移行ステップと、
前記移行ステップにおいてブロック間でデータが移行された場合に、データの移行元のブロックを診断する診断ステップと
を備え、
前記診断ステップでは、少なくとも書込状態から消去状態への正常遷移検査と、消去状態から書込状態への正常遷移検査とを含む診断を行う、
ことを特徴とするフラッシュメモリの制御方法。
A flash memory control method in which data is written or read in units of pages according to a command given from a host system, and data is erased in units of blocks including a plurality of pages.
An error correction step of detecting an error contained in the data read from the flash memory and correcting the detected error;
If an error included in the data read from the flash memory is detected in the error correction step, all the data stored in the block including the page storing the data in which the error is detected A transition step to move to another block,
A diagnostic step of diagnosing the block from which data is migrated when data is migrated between blocks in the migration step;
In the diagnosis step, a diagnosis including at least a normal transition inspection from a writing state to an erasing state and a normal transition inspection from an erasing state to a writing state is performed.
A method for controlling a flash memory.
ホストシステムから与えられる外部コマンドに従って、ブロック単位でデータの消去が行われるフラッシュメモリの制御方法であって、
前記外部コマンドに従って処理が開始されたフラッシュメモリからのデータの読み出し処理中に、前記フラッシュメモリから読み出されたデータに含まれる誤りが検出された場合に、
前記読み出し処理を中断し、
前記読み出し処理の中断後に、前記誤りが検出されたデータが記憶されているブロック内のデータを他のブロックに移す移行処理を開始し、
前記移行処理の完了後に、移行元のブロックを診断する診断処理を開始し、
前記診断処理の完了後に、前記読み出し処理の処理対象を移行元のブロックから移行先のブロックに変更して、前記読み出し処理を再開し、
前記診断処理には、少なくとも書込状態から消去状態への正常遷移検査と、消去状態から書込状態への正常遷移検査とが含まれる、
ことを特徴とするフラッシュメモリの制御方法。
A flash memory control method in which data is erased in units of blocks in accordance with external commands given from a host system,
When an error included in the data read from the flash memory is detected during the process of reading data from the flash memory that has started processing according to the external command,
Interrupt the reading process,
After the reading process is interrupted, a transition process is started in which the data in the block in which the data in which the error is detected is stored is transferred to another block,
After completion of the migration process, start a diagnostic process for diagnosing the migration source block,
After completion of the diagnostic processing, the processing target of the read processing is changed from the migration source block to the migration destination block, and the readout processing is resumed.
The diagnostic process includes at least a normal transition inspection from a writing state to an erasing state and a normal transition inspection from an erasing state to a writing state.
A method for controlling a flash memory.
JP2003060594A 2003-03-06 2003-03-06 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Expired - Lifetime JP4236485B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003060594A JP4236485B2 (en) 2003-03-06 2003-03-06 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003060594A JP4236485B2 (en) 2003-03-06 2003-03-06 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Publications (2)

Publication Number Publication Date
JP2004272476A JP2004272476A (en) 2004-09-30
JP4236485B2 true JP4236485B2 (en) 2009-03-11

Family

ID=33123083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003060594A Expired - Lifetime JP4236485B2 (en) 2003-03-06 2003-03-06 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Country Status (1)

Country Link
JP (1) JP4236485B2 (en)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100543447B1 (en) * 2003-04-03 2006-01-23 삼성전자주식회사 Flash memory with error correction for page copy
JP4256198B2 (en) 2003-04-22 2009-04-22 株式会社東芝 Data storage system
JP4245585B2 (en) 2005-06-13 2009-03-25 Tdk株式会社 Memory controller, flash memory system, and flash memory control method
US8069296B2 (en) 2006-01-23 2011-11-29 Kabushiki Kaisha Toshiba Semiconductor memory device including control means and memory system
JP2007207397A (en) * 2006-02-06 2007-08-16 Toshiba Corp Semiconductor storage device
JP4908083B2 (en) * 2006-06-30 2012-04-04 株式会社東芝 Memory controller
KR100802059B1 (en) * 2006-09-06 2008-02-12 삼성전자주식회사 Memory system capable of suppressing generation of bad blocks due to read disturbance and operating method thereof
JP5720210B2 (en) 2010-12-02 2015-05-20 富士通株式会社 Access control device, error correction control method, and storage device
WO2016030992A1 (en) * 2014-08-27 2016-03-03 株式会社日立製作所 Memory device and storage unit
JP7177338B2 (en) * 2018-09-06 2022-11-24 富士通株式会社 MEMORY CONTROLLER DEVICE, MEMORY DEVICE HAVING MEMORY CONTROLLER DEVICE, AND MEMORY CONTROL METHOD

Also Published As

Publication number Publication date
JP2004272476A (en) 2004-09-30

Similar Documents

Publication Publication Date Title
JP4165990B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND METHOD FOR WRITEING DATA TO FLASH MEMORY
JP3921174B2 (en) Memory controller, flash memory system, and flash memory control method
US7020739B2 (en) Memory controller, flash memory system having memory controller and method for controlling flash memory device
US7024514B2 (en) Memory controller, flash memory system employing memory controller and method for controlling flash memory device
JPH06111589A (en) Batched-erasure nonvolatile semiconductor memory device
JP4236485B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
US7606993B2 (en) Flash memory controller, memory control circuit, flash memory system, and method for controlling data exchange between host computer and flash memory
JP4233213B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4173410B2 (en) Memory controller and flash memory system including the memory controller
JP2006338083A (en) Memory controller
JP4316824B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4177292B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM, AND FLASH MEMORY CONTROL METHOD
JP4222879B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4419525B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3999564B2 (en) Memory controller, flash memory system, and flash memory control method
JP4177301B2 (en) Memory controller, flash memory system, and flash memory control method
JP4183550B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4213053B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4561110B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4332108B2 (en) Memory controller, flash memory system, and flash memory control method
JP4068594B2 (en) Flash memory controller, flash memory system, and flash memory control method
JP2005107599A (en) Memory controller, flash memory system equipped with memory controller, and control method of flash memory
JP4282401B2 (en) Flash memory control circuit, and memory controller and flash memory system provided with the control circuit
JP4282410B2 (en) Flash memory control circuit, and memory controller and flash memory system provided with the control circuit
JP4194473B2 (en) Memory controller and flash memory system including the memory controller

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080526

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080526

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20081125

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4236485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131226

Year of fee payment: 5

EXPY Cancellation because of completion of term